themes/index.php000064400000000034147176754540007672 0ustar00 themes/twentytwentyfour/parts/footer.html000064400000000070147176754540015070 0ustar00 themes/twentytwentyfour/parts/header.html000064400000002407147176754540015030 0ustar00
themes/twentytwentyfour/parts/post-meta.html000064400000000102147176754540015477 0ustar00 themes/twentytwentyfour/patterns/cta-pricing.php000064400000032600147176754540016330 0ustar00

Études Articles per month.', 'Feature for pricing level', 'twentytwentyfour' ) ); ?>



Études Articles per month.', 'Feature for pricing level', 'twentytwentyfour' ) ); ?>



Études app for iOS and Android.', 'Feature for pricing level', 'twentytwentyfour' ) ); ?>

Études Articles.', 'Feature for pricing level', 'twentytwentyfour' ) ); ?>



Études app for iOS and Android', 'Feature for pricing level', 'twentytwentyfour' ) ); ?>

themes/twentytwentyfour/patterns/page-home-portfolio-gallery.php000064400000000721147176754540021441 0ustar00 themes/twentytwentyfour/patterns/template-home-blogging.php000064400000001376147176754540020465 0ustar00
themes/twentytwentyfour/patterns/template-home-portfolio.php000064400000001547147176754540020712 0ustar00
themes/twentytwentyfour/patterns/hidden-404.php000064400000001170147176754540015666 0ustar00

themes/twentytwentyfour/patterns/posts-1-col.php000064400000004530147176754540016212 0ustar00
themes/twentytwentyfour/patterns/footer.php000064400000014733147176754540015435 0ustar00

themes/twentytwentyfour/patterns/template-search-blogging.php000064400000001662147176754540021000 0ustar00
themes/twentytwentyfour/patterns/template-search-portfolio.php000064400000001744147176754540021226 0ustar00
themes/twentytwentyfour/patterns/gallery-project-layout.php000064400000010712147176754540020546 0ustar00 themes/twentytwentyfour/patterns/hidden-post-navigation.php000064400000002107147176754540020502 0ustar00 themes/twentytwentyfour/patterns/team-4-col.php000064400000015214147176754540015774 0ustar00

themes/twentytwentyfour/patterns/text-centered-statement-small.php000064400000002577147176754540022025 0ustar00

' . esc_html__( 'Money Studies', 'twentytwentyfour' ) . ''; echo sprintf( /* Translators: About text placeholder */ esc_html__( 'I write about finance, management and economy, my book “%1$s” is out now.', 'twentytwentyfour' ), $about_link ); ?>

themes/twentytwentyfour/patterns/page-home-business.php000064400000001450147176754540017622 0ustar00 themes/twentytwentyfour/patterns/banner-project-description.php000064400000005002147176754540021356 0ustar00

<?php esc_attr_e( 'Hyatt Regency San Francisco, San Francisco, United States', 'twentytwentyfour' ); ?>
themes/twentytwentyfour/patterns/text-centered-statement.php000064400000003534147176754540020711 0ustar00

Études is not confined to the past—we are passionate about the cutting edge designs shaping our world today.', 'twentytwentyfour' ) ); ?>

themes/twentytwentyfour/patterns/template-index-blogging.php000064400000001630147176754540020635 0ustar00

themes/twentytwentyfour/patterns/posts-images-only-offset-4-col.php000064400000010437147176754540021726 0ustar00
themes/twentytwentyfour/patterns/page-home-blogging.php000064400000005662147176754540017570 0ustar00
themes/twentytwentyfour/patterns/hidden-search.php000064400000000517147176754540016630 0ustar00 themes/twentytwentyfour/patterns/template-archive-blogging.php000064400000001405147176754540021147 0ustar00
themes/twentytwentyfour/patterns/banner-hero.php000064400000005375147176754540016341 0ustar00

<?php esc_attr_e( 'Building exterior in Toronto, Canada', 'twentytwentyfour' ); ?>
themes/twentytwentyfour/patterns/gallery-offset-images-grid-3-col.php000064400000011511147176754540022152 0ustar00
themes/twentytwentyfour/patterns/text-project-details.php000064400000006712147176754540020210 0ustar00

themes/twentytwentyfour/patterns/hidden-no-results.php000064400000000445147176754540017476 0ustar00

themes/twentytwentyfour/patterns/gallery-full-screen-image.php000064400000002701147176754540021063 0ustar00
themes/twentytwentyfour/patterns/posts-list.php000064400000006571147176754540016261 0ustar00


themes/twentytwentyfour/patterns/text-title-left-image-right.php000064400000006702147176754540021362 0ustar00

<?php esc_attr_e( 'A ramp along a curved wall in the Kiasma Museu, Helsinki, Finland', 'twentytwentyfour' ); ?>
themes/twentytwentyfour/patterns/page-portfolio-overview.php000064400000001421147176754540020720 0ustar00 themes/twentytwentyfour/patterns/template-home-business.php000064400000001140147176754540020515 0ustar00
themes/twentytwentyfour/patterns/page-home-portfolio.php000064400000001016147176754540020002 0ustar00 themes/twentytwentyfour/patterns/page-newsletter-landing.php000064400000005646147176754540020662 0ustar00
themes/twentytwentyfour/patterns/hidden-post-meta.php000064400000002044147176754540017271 0ustar00

themes/twentytwentyfour/patterns/posts-grid-2-col.php000064400000007415147176754540017143 0ustar00

themes/twentytwentyfour/patterns/cta-subscribe-centered.php000064400000005177147176754540020456 0ustar00

themes/twentytwentyfour/patterns/page-rsvp-landing.php000064400000010123147176754540017442 0ustar00

<?php esc_attr_e( 'Green staircase at Western University, London, Canada', 'twentytwentyfour' ); ?>
themes/twentytwentyfour/patterns/cta-services-image-left.php000064400000005462147176754540020536 0ustar00
<?php esc_attr_e( 'White abstract geometric artwork from Dresden, Germany', 'twentytwentyfour' ); ?>

themes/twentytwentyfour/patterns/template-archive-portfolio.php000064400000001321147176754540021371 0ustar00
themes/twentytwentyfour/patterns/cta-content-image-on-right.php000064400000006657147176754540021171 0ustar00

<?php esc_attr_e( 'White abstract geometric artwork from Dresden, Germany', 'twentytwentyfour' ); ?>
themes/twentytwentyfour/patterns/gallery-offset-images-grid-4-col.php000064400000014327147176754540022163 0ustar00
themes/twentytwentyfour/patterns/footer-colophon-3-col.php000064400000011220147176754540020153 0ustar00

/

WordPress'; echo sprintf( /* Translators: Designed with WordPress */ esc_html__( 'Designed with %1$s', 'twentytwentyfour' ), $wordpress_link ); ?>

themes/twentytwentyfour/patterns/text-alternating-images.php000064400000013676147176754540020701 0ustar00

<?php esc_attr_e( 'Tourist taking photo of a building', 'twentytwentyfour' ); ?>
<?php esc_attr_e( 'Windows of a building in Nuremberg, Germany', 'twentytwentyfour' ); ?>

themes/twentytwentyfour/patterns/hidden-comments.php000064400000003111147176754540017201 0ustar00

themes/twentytwentyfour/patterns/footer-centered-logo-nav.php000064400000002552147176754540020740 0ustar00
themes/twentytwentyfour/patterns/text-feature-grid-3-col.php000064400000017504147176754540020411 0ustar00

themes/twentytwentyfour/patterns/posts-3-col.php000064400000005246147176754540016221 0ustar00
themes/twentytwentyfour/patterns/hidden-portfolio-hero.php000064400000001512147176754540020327 0ustar00

Leia Acosta, a passionate photographer who finds inspiration in capturing the fleeting beauty of life.', 'twentytwentyfour' ) ); ?>

themes/twentytwentyfour/patterns/cta-rsvp.php000064400000007265147176754540015700 0ustar00

<?php esc_attr_e( 'A ramp along a curved wall in the Kiasma Museu, Helsinki, Finland', 'twentytwentyfour' ); ?>
themes/twentytwentyfour/patterns/template-index-portfolio.php000064400000001517147176754540021066 0ustar00

themes/twentytwentyfour/patterns/testimonial-centered.php000064400000006553147176754540020257 0ustar00

themes/twentytwentyfour/patterns/template-single-portfolio.php000064400000002244147176754540021236 0ustar00
themes/twentytwentyfour/patterns/gallery-offset-images-grid-2-col.php000064400000005467147176754540022166 0ustar00
themes/twentytwentyfour/patterns/hidden-sidebar.php000064400000011056147176754540016774 0ustar00




themes/twentytwentyfour/patterns/posts-images-only-3-col.php000064400000003562147176754540020442 0ustar00
themes/twentytwentyfour/patterns/page-about-business.php000064400000001527147176754540020011 0ustar00 themes/twentytwentyfour/patterns/text-faq.php000064400000017477147176754540015700 0ustar00 themes/twentytwentyfour/styles/rust.json000064400000006125147176754540014775 0ustar00{ "$schema": "https://schemas.wp.org/trunk/theme.json", "version": 2, "title": "Rust", "settings": { "color": { "duotone": [ { "colors": [ "#A62B0C", "#F3F0E7" ], "slug": "duotone-1", "name": "Dark rust to beige" } ], "gradients": [ { "slug": "gradient-1", "gradient": "linear-gradient(to bottom, #A62A0C42 0%, #F3F0E7 100%)", "name": "Vertical transparent rust to beige" }, { "slug": "gradient-7", "gradient": "linear-gradient(to bottom, #A62A0C42 50%, #F3F0E7 50%)", "name": "Vertical hard transparent rust to beige" }, { "slug": "gradient-2", "gradient": "linear-gradient(to bottom, #A62B0C 0%, #F3F0E7 100%)", "name": "Vertical rust to beige" }, { "slug": "gradient-8", "gradient": "linear-gradient(to bottom, #A62B0C 50%, #F3F0E7 50%)", "name": "Vertical hard rust to beige" } ], "palette": [ { "color": "#F3F0E7", "name": "Base", "slug": "base" }, { "color": "#ECEADF", "name": "Base / 2", "slug": "base-2" }, { "color": "#A62B0C", "name": "Contrast", "slug": "contrast" } ] } }, "styles": { "blocks": { "core/calendar": { "css": ".wp-block-calendar table:where(:not(.has-text-color)) th{background-color:var(--wp--preset--color--contrast);color:var(--wp--preset--color--base);border-color:var(--wp--preset--color--contrast)} & table:where(:not(.has-text-color)) td{border-color:var(--wp--preset--color--contrast)}" }, "core/comment-date": { "color": { "text": "var(--wp--preset--color--contrast)" }, "elements": { "link": { "color": { "text": "var(--wp--preset--color--contrast)" } } } }, "core/comment-edit-link": { "elements": { "link": { "color": { "text": "var(--wp--preset--color--contrast)" } } } }, "core/comment-reply-link": { "elements": { "link": { "color": { "text": "var(--wp--preset--color--contrast)" } } } }, "core/post-date": { "color": { "text": "var(--wp--preset--color--contrast)" }, "elements": { "link": { "color": { "text": "var(--wp--preset--color--contrast)" } } } }, "core/post-terms": { "css":"& .wp-block-post-terms__prefix{color: var(--wp--preset--color--contrast);}" }, "core/quote": { "color": { "background": "var(--wp--preset--color--base)" } }, "core/site-tagline": { "color": { "text": "var(--wp--preset--color--contrast)" } } }, "elements": { "button": { ":focus": { "color": { "background": "var(--wp--preset--color--contrast)" }, "border": { "color": "var(--wp--preset--color--contrast)" } }, ":hover": { "color": { "background": "var(--wp--preset--color--contrast)" }, "border": { "color": "var(--wp--preset--color--contrast)" } } }, "caption": { "color": { "text": "var(--wp--preset--color--contrast)" } } } } } themes/twentytwentyfour/styles/maelstrom.json000064400000010440147176754540015776 0ustar00{ "$schema": "https://schemas.wp.org/trunk/theme.json", "version": 2, "title": "Maelstrom", "settings": { "color": { "palette": [ { "color": "#38629F", "name": "Base", "slug": "base" }, { "color": "#244E8A", "name": "Base / Two", "slug": "base-2" }, { "color": "#FFFFFFA1", "name": "Contrast / 2", "slug": "contrast-2" }, { "color": "#FFFFFF", "name": "Contrast", "slug": "contrast" }, { "color": "#D5E0F0", "name": "Contrast / 3", "slug": "contrast-3" } ] }, "typography": { "fontFamilies": [ { "fontFace": [ { "fontFamily": "Cardo", "fontStyle": "normal", "fontWeight": "400", "src": ["file:./assets/fonts/cardo/cardo_normal_400.woff2"] }, { "fontFamily": "Cardo", "fontStyle": "italic", "fontWeight": "400", "src": ["file:./assets/fonts/cardo/cardo_italic_400.woff2"] }, { "fontFamily": "Cardo", "fontStyle": "normal", "fontWeight": "700", "src": ["file:./assets/fonts/cardo/cardo_normal_700.woff2"] } ], "fontFamily": "Cardo", "name": "Cardo", "slug": "body" }, { "fontFace": [ { "fontFamily": "Jost", "fontStyle": "normal", "fontWeight": "100 900", "src": ["file:./assets/fonts/jost/Jost-VariableFont_wght.woff2"] }, { "fontFamily": "Jost", "fontStyle": "italic", "fontWeight": "100 900", "src": [ "file:./assets/fonts/jost/Jost-Italic-VariableFont_wght.woff2" ] } ], "fontFamily": "\"Jost\", sans-serif", "name": "Jost", "slug": "heading" }, { "fontFamily": "-apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Cantarell, Ubuntu, roboto, noto, arial, sans-serif", "name": "System Sans-serif", "slug": "system-sans-serif" }, { "fontFamily": "Iowan Old Style, Apple Garamond, Baskerville, Times New Roman, Droid Serif, Times, Source Serif Pro, serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol", "name": "System Serif", "slug": "system-serif" } ], "fontSizes": [ { "fluid": false, "name": "Small", "size": "1rem", "slug": "small" }, { "fluid": false, "name": "Medium", "size": "1.2rem", "slug": "medium" }, { "fluid": { "min": "1.5rem", "max": "2rem" }, "name": "Large", "size": "2rem", "slug": "large" }, { "fluid": { "min": "2rem", "max": "2.65rem" }, "name": "Extra Large", "size": "2.65rem", "slug": "x-large" }, { "fluid": { "min": "2.65rem", "max": "3.5rem" }, "name": "Extra Extra Large", "size": "3.5rem", "slug": "xx-large" } ] } }, "styles": { "blocks": { "core/button": { "variations": { "outline": { "spacing": { "padding": { "bottom": "calc(0.8rem - 2px)", "left": "calc(1.6rem - 2px)", "right": "calc(1.6rem - 2px)", "top": "calc(0.8rem - 2px)" } }, "border": { "width": "2px" } } } }, "core/site-title": { "typography": { "fontFamily": "var(--wp--preset--font-family--heading)", "fontWeight": "normal" } }, "core/navigation": { "typography": { "fontSize": "var(--wp--preset--font-size--small)", "fontWeight": "normal" } } }, "elements": { "button": { "border": { "radius": "6px" }, "color": { "background": "var(--wp--preset--color--contrast)", "text": "var(--wp--preset--color--base-2)" }, "spacing": { "padding": { "bottom": "0.98rem", "left": "1.6rem", "right": "1.6rem", "top": "0.8rem" } }, "typography": { "fontFamily": "var(--wp--preset--font-family--heading)", "fontSize": "var(--wp--preset--font-size--small)", "fontStyle": "normal" }, ":hover": { "color": { "background": "var(--wp--preset--color--contrast)" } } }, "heading": { "typography": { "fontFamily": "var(--wp--preset--font-family--heading)", "letterSpacing": "0" } } } } } themes/twentytwentyfour/styles/onyx.json000064400000007164147176754540015001 0ustar00{ "$schema": "https://schemas.wp.org/trunk/theme.json", "version": 2, "title": "Onyx", "settings": { "color": { "duotone": [ { "colors": [ "#272727", "#f9f9f9" ], "slug": "duotone-1", "name": "Dark gray and white" }, { "colors": [ "#272727", "#5F584F" ], "slug": "duotone-2", "name": "Dark gray and walnut" }, { "colors": [ "#272727", "#973C20" ], "slug": "duotone-3", "name": "Dark gray and cinnamon" }, { "colors": [ "#272727", "#4D5B48" ], "slug": "duotone-4", "name": "Dark gray and olive" }, { "colors": [ "#272727", "#4F5959" ], "slug": "duotone-5", "name": "Dark gray and steel" } ], "gradients": [ { "slug": "gradient-1", "gradient": "linear-gradient(to bottom, #5F584F 0%, #272727 100%)", "name": "Vertical soft driftwood to dark gray" }, { "slug": "gradient-2", "gradient": "linear-gradient(to bottom, #6D533C 0%, #272727 100%)", "name": "Vertical soft walnut to dark gray" }, { "slug": "gradient-3", "gradient": "linear-gradient(to bottom, #973C20 0%, #272727 100%)", "name": "Vertical soft cinnamon to dark gray" }, { "slug": "gradient-4", "gradient": "linear-gradient(to bottom, #4D5B48 0%, #272727 100%)", "name": "Vertical soft olive to dark gray" }, { "slug": "gradient-5", "gradient": "linear-gradient(to bottom, #4F5959 0%, #272727 100%)", "name": "Vertical soft steel to dark gray" }, { "slug": "gradient-6", "gradient": "linear-gradient(to bottom, #909090 0%, #272727 100%)", "name": "Vertical soft pewter to dark gray" }, { "slug": "gradient-7", "gradient": "linear-gradient(to bottom, #5F584F 50%, #272727 50%)", "name": "Vertical hard beige to dark gray" }, { "slug": "gradient-8", "gradient": "linear-gradient(to bottom, #6D533C 50%, #272727 50%)", "name": "Vertical hard walnut to dark gray" }, { "slug": "gradient-9", "gradient": "linear-gradient(to bottom, #973C20 50%, #272727 50%)", "name": "Vertical hard cinnamon to dark gray" }, { "slug": "gradient-10", "gradient": "linear-gradient(to bottom, #4D5B48 50%, #272727 50%)", "name": "Vertical hard olive to dark gray" }, { "slug": "gradient-11", "gradient": "linear-gradient(to bottom, #4F5959 50%, #272727 50%)", "name": "Vertical hard steel to dark gray" }, { "slug": "gradient-12", "gradient": "linear-gradient(to bottom, #A4A4A4 50%, #272727 50%)", "name": "Vertical hard pewter to dark gray" } ], "palette": [ { "color": "#272727", "name": "Base", "slug": "base" }, { "color": "#303030", "name": "Base / Two", "slug": "base-2" }, { "color": "#f9f9f9", "name": "Contrast", "slug": "contrast" }, { "color": "#B7B7B7", "name": "Contrast / Two", "slug": "contrast-2" }, { "color": "#909090", "name": "Contrast / Three", "slug": "contrast-3" }, { "color": "#5F584F", "name": "Accent", "slug": "accent" }, { "color": "#6D533C", "name": "Accent / Two", "slug": "accent-2" }, { "color": "#973C20", "name": "Accent / Three", "slug": "accent-3" }, { "color": "#4D5B48", "name": "Accent / Four", "slug": "accent-4" }, { "color": "#4F5959", "name": "Accent / Five", "slug": "accent-5" } ] } } } themes/twentytwentyfour/styles/fossil.json000064400000014470147176754540015301 0ustar00{ "$schema": "https://schemas.wp.org/trunk/theme.json", "version": 2, "title": "Fossil", "settings": { "color": { "gradients": [ { "slug": "gradient-1", "gradient": "linear-gradient(to bottom, #E1DFDB 0%, #D6D2CE 100%)", "name": "Vertical linen to beige" }, { "slug": "gradient-2", "gradient": "linear-gradient(to bottom, #958D86 0%, #D6D2CE 100%)", "name": "Vertical taupe to beige" }, { "slug": "gradient-3", "gradient": "linear-gradient(to bottom, #65574E 0%, #D6D2CE 100%)", "name": "Vertical sable to beige" }, { "slug": "gradient-4", "gradient": "linear-gradient(to bottom, #1A1514 0%, #D6D2CE 100%)", "name": "Vertical ebony to beige" }, { "slug": "gradient-5", "gradient": "linear-gradient(to bottom, #65574E 0%, #958D86 100%)", "name": "Vertical sable to beige" }, { "slug": "gradient-6", "gradient": "linear-gradient(to bottom, #1A1514 0%, #65574E 100%)", "name": "Vertical ebony to sable" }, { "slug": "gradient-7", "gradient": "linear-gradient(to bottom, #D6D2CE 50%, #E1DFDB 50%)", "name": "Vertical hard beige to linen" }, { "slug": "gradient-8", "gradient": "linear-gradient(to bottom, #958D86 50%, #D6D2CE 50%)", "name": "Vertical hard taupe to beige" }, { "slug": "gradient-9", "gradient": "linear-gradient(to bottom, #65574E 50%, #D6D2CE 50%)", "name": "Vertical hard sable to beige" }, { "slug": "gradient-10", "gradient": "linear-gradient(to bottom, #1A1514 50%, #D6D2CE 50%)", "name": "Vertical hard ebony to beige" }, { "slug": "gradient-11", "gradient": "linear-gradient(to bottom, #65574E 50%, #958D86 50%)", "name": "Vertical hard sable to taupe" }, { "slug": "gradient-12", "gradient": "linear-gradient(to bottom, #1A1514 50%, #65574E 50%)", "name": "Vertical hard ebony to sable" } ], "palette": [ { "color": "#D6D2CE", "name": "Base", "slug": "base" }, { "color": "#E1DFDB", "name": "Base / Two", "slug": "base-2" }, { "color": "#1A1514", "name": "Contrast", "slug": "contrast" }, { "color": "#65574E", "name": "Contrast / Two", "slug": "contrast-2" }, { "color": "#958D86", "name": "Contrast / Three", "slug": "contrast-3" } ] }, "typography": { "fontFamilies": [ { "fontFace": [ { "fontFamily": "Inter", "fontStretch": "normal", "fontStyle": "normal", "fontWeight": "300 900", "src": [ "file:./assets/fonts/inter/Inter-VariableFont_slnt,wght.woff2" ] } ], "fontFamily": "\"Inter\", sans-serif", "name": "Inter", "slug": "heading" }, { "fontFace": [ { "fontFamily": "Cardo", "fontStyle": "normal", "fontWeight": "400", "src": ["file:./assets/fonts/cardo/cardo_normal_400.woff2"] }, { "fontFamily": "Cardo", "fontStyle": "italic", "fontWeight": "400", "src": ["file:./assets/fonts/cardo/cardo_italic_400.woff2"] }, { "fontFamily": "Cardo", "fontStyle": "normal", "fontWeight": "700", "src": ["file:./assets/fonts/cardo/cardo_normal_700.woff2"] } ], "fontFamily": "Cardo", "name": "Cardo", "slug": "body" }, { "fontFamily": "-apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Cantarell, Ubuntu, roboto, noto, arial, sans-serif", "name": "System Sans-serif", "slug": "system-sans-serif" }, { "fontFamily": "Iowan Old Style, Apple Garamond, Baskerville, Times New Roman, Droid Serif, Times, Source Serif Pro, serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol", "name": "System Serif", "slug": "system-serif" } ], "fontSizes": [ { "fluid": false, "name": "Small", "size": "1rem", "slug": "small" }, { "fluid": false, "name": "Medium", "size": "1.2rem", "slug": "medium" }, { "fluid": { "min": "1.5rem", "max": "2rem" }, "name": "Large", "size": "2rem", "slug": "large" }, { "fluid": { "min": "2rem", "max": "2.65rem" }, "name": "Extra Large", "size": "2.65rem", "slug": "x-large" }, { "fluid": { "min": "2.65rem", "max": "3.5rem" }, "name": "Extra Extra Large", "size": "3.5rem", "slug": "xx-large" } ] } }, "styles": { "blocks": { "core/button": { "variations": { "outline": { "spacing": { "padding": { "bottom": "calc(0.9rem - 2px)", "left": "calc(2rem - 2px)", "right": "calc(2rem - 2px)", "top": "calc(0.9rem - 2px)" } }, "border": { "width": "2px" } } } }, "core/pullquote": { "typography": { "fontSize": "var(--wp--preset--font-size--large)", "fontStyle": "normal", "fontWeight": "normal", "lineHeight": "1.2" } }, "core/quote": { "typography": { "fontFamily": "var(--wp--preset--font-family--heading)", "fontSize": "var(--wp--preset--font-size--large)", "fontStyle": "normal" }, "variations": { "plain": { "typography": { "fontStyle": "normal", "fontWeight": "400" } } } }, "core/site-title": { "typography": { "fontWeight": "400" } } }, "elements": { "button": { "border": { "radius": "100px", "color": "var(--wp--preset--color--contrast-2)" }, "color": { "background": "var(--wp--preset--color--contrast-2)", "text": "var(--wp--preset--color--white)" }, "spacing": { "padding": { "bottom": "0.9rem", "left": "2rem", "right": "2rem", "top": "0.9rem" } }, "typography": { "fontFamily": "var(--wp--preset--font-family--heading)", "fontSize": "var(--wp--preset--font-size--small)", "fontStyle": "normal" }, ":hover": { "color": { "background": "var(--wp--preset--color--contrast)" } } }, "heading": { "typography": { "fontWeight": "normal", "letterSpacing": "0" } } } } } themes/twentytwentyfour/styles/ice.json000064400000014431147176754540014537 0ustar00{ "$schema": "https://schemas.wp.org/trunk/theme.json", "version": 2, "title": "Ice", "settings": { "color": { "gradients": [ { "slug": "gradient-1", "gradient": "linear-gradient(to bottom, #cbd9e1 0%, #EBEBEF 100%)", "name": "Vertical azure to ice" }, { "slug": "gradient-2", "gradient": "linear-gradient(to bottom, #466577 0%, #EBEBEF 100%)", "name": "Vertical slate to ice" }, { "slug": "gradient-3", "gradient": "linear-gradient(to bottom, #37505d 0%, #EBEBEF 100%)", "name": "Vertical ocean to ice" }, { "slug": "gradient-4", "gradient": "linear-gradient(to bottom, #1C2930 0%, #EBEBEF 100%)", "name": "Vertical ink to ice" }, { "slug": "gradient-5", "gradient": "linear-gradient(to bottom, #37505d 0%, #466577 100%)", "name": "Vertical ocean to slate" }, { "slug": "gradient-6", "gradient": "linear-gradient(to bottom, #1C2930 0%, #37505d 100%)", "name": "Vertical ink to ocean" }, { "slug": "gradient-7", "gradient": "linear-gradient(to bottom, #EBEBEF 50%, #cbd9e1 50%)", "name": "Vertical hard ice to azure" }, { "slug": "gradient-8", "gradient": "linear-gradient(to bottom, #466577 50%, #EBEBEF 50%)", "name": "Vertical hard slate to ice" }, { "slug": "gradient-9", "gradient": "linear-gradient(to bottom, #37505d 50%, #EBEBEF 50%)", "name": "Vertical hard ocean to ice" }, { "slug": "gradient-10", "gradient": "linear-gradient(to bottom, #1C2930 50%, #EBEBEF 50%)", "name": "Vertical hard ink to ice" }, { "slug": "gradient-11", "gradient": "linear-gradient(to bottom, #37505d 50%, #466577 50%)", "name": "Vertical hard ocean to slate" }, { "slug": "gradient-12", "gradient": "linear-gradient(to bottom, #1C2930 50%, #37505d 50%)", "name": "Vertical hard ink to ocean" } ], "palette": [ { "color": "#EBEBEF", "name": "Base", "slug": "base" }, { "color": "#DCE0E6", "name": "Base / Two", "slug": "base-2" }, { "color": "#1C2930", "name": "Contrast", "slug": "contrast" }, { "color": "#37505d", "name": "Contrast / Two", "slug": "contrast-2" }, { "color": "#96A5B2", "name": "Contrast / Three", "slug": "contrast-3" } ] }, "typography": { "fontFamilies": [ { "fontFace": [ { "fontFamily": "Inter", "fontStretch": "normal", "fontStyle": "normal", "fontWeight": "300 900", "src": [ "file:./assets/fonts/inter/Inter-VariableFont_slnt,wght.woff2" ] } ], "fontFamily": "\"Inter\", sans-serif", "name": "Inter", "slug": "heading" }, { "fontFace": [ { "fontFamily": "Jost", "fontStyle": "normal", "fontWeight": "100 900", "src": ["file:./assets/fonts/jost/Jost-VariableFont_wght.woff2"] }, { "fontFamily": "Jost", "fontStyle": "italic", "fontWeight": "100 900", "src": [ "file:./assets/fonts/jost/Jost-Italic-VariableFont_wght.woff2" ] } ], "fontFamily": "\"Jost\", sans-serif", "name": "Jost", "slug": "body" }, { "fontFamily": "-apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Cantarell, Ubuntu, roboto, noto, arial, sans-serif", "name": "System Sans-serif", "slug": "system-sans-serif" }, { "fontFamily": "Iowan Old Style, Apple Garamond, Baskerville, Times New Roman, Droid Serif, Times, Source Serif Pro, serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol", "name": "System Serif", "slug": "system-serif" } ], "fontSizes": [ { "fluid": false, "name": "Small", "size": "1rem", "slug": "small" }, { "fluid": false, "name": "Medium", "size": "1.2rem", "slug": "medium" }, { "fluid": { "min": "1.5rem", "max": "2rem" }, "name": "Large", "size": "2rem", "slug": "large" }, { "fluid": { "min": "2rem", "max": "2.65rem" }, "name": "Extra Large", "size": "2.65rem", "slug": "x-large" }, { "fluid": { "min": "2.65rem", "max": "3.5rem" }, "name": "Extra Extra Large", "size": "3.5rem", "slug": "xx-large" } ] } }, "styles": { "blocks": { "core/button": { "variations": { "outline": { "spacing": { "padding": { "bottom": "calc(1rem - 1px)", "left": "calc(2.2rem - 1px)", "right": "calc(2.2rem - 1px)", "top": "calc(1rem - 1px)" } }, "border": { "width": "1px" } } } }, "core/pullquote": { "typography": { "fontSize": "var(--wp--preset--font-size--large)", "fontStyle": "normal", "fontWeight": "normal", "lineHeight": "1.2" } }, "core/quote": { "typography": { "fontFamily": "var(--wp--preset--font-family--heading)", "fontSize": "var(--wp--preset--font-size--large)", "fontStyle": "normal" }, "variations": { "plain": { "typography": { "fontStyle": "normal", "fontWeight": "400" } } } }, "core/site-title": { "typography": { "fontWeight": "400" } } }, "elements": { "button": { "border": { "radius": "4px", "color": "var(--wp--preset--color--contrast-2)" }, "color": { "background": "var(--wp--preset--color--contrast-2)", "text": "var(--wp--preset--color--white)" }, "spacing": { "padding": { "bottom": "1rem", "left": "2.2rem", "right": "2.2rem", "top": "1rem" } }, "typography": { "fontFamily": "var(--wp--preset--font-family--heading)", "fontSize": "0.75rem", "fontStyle": "normal", "textTransform": "uppercase", "letterSpacing": "0.1rem" }, ":hover": { "color": { "background": "var(--wp--preset--color--contrast)" }, "border": { "color": "var(--wp--preset--color--contrast)" } } }, "heading": { "typography": { "fontWeight": "normal", "letterSpacing": "0" } } } } } themes/twentytwentyfour/styles/mint.json000064400000007314147176754540014750 0ustar00{ "$schema": "https://schemas.wp.org/trunk/theme.json", "version": 2, "title": "Mint", "settings": { "color": { "palette": [ { "color": "#e4efeb", "name": "Base", "slug": "base" }, { "color": "#f1fefb", "name": "Base / Two", "slug": "base-2" }, { "color": "#000000", "name": "Contrast", "slug": "contrast" }, { "color": "#353535", "name": "Contrast / Two", "slug": "contrast-2" }, { "color": "#A4A4A4", "name": "Contrast / Three", "slug": "contrast-3" } ] }, "typography": { "fluid": true, "fontFamilies": [ { "fontFace": [ { "fontFamily": "Instrument Sans", "fontStyle": "normal", "fontWeight": "400 700", "src": [ "file:./assets/fonts/instrument-sans/InstrumentSans-VariableFont_wdth,wght.woff2" ] }, { "fontFamily": "Instrument Sans", "fontStyle": "italic", "fontWeight": "400 700", "src": [ "file:./assets/fonts/instrument-sans/InstrumentSans-Italic-VariableFont_wdth,wght.woff2" ] } ], "fontFamily": "\"Instrument Sans\", sans-serif", "name": "Instrument Sans", "slug": "heading" }, { "fontFace": [ { "fontFamily": "Jost", "fontStyle": "normal", "fontWeight": "100 900", "src": ["file:./assets/fonts/jost/Jost-VariableFont_wght.woff2"] }, { "fontFamily": "Jost", "fontStyle": "italic", "fontWeight": "100 900", "src": [ "file:./assets/fonts/jost/Jost-Italic-VariableFont_wght.woff2" ] } ], "fontFamily": "\"Jost\", sans-serif", "name": "Jost", "slug": "body" }, { "fontFamily": "-apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Cantarell, Ubuntu, roboto, noto, arial, sans-serif", "name": "System Sans-serif", "slug": "system-sans-serif" }, { "fontFamily": "Iowan Old Style, Apple Garamond, Baskerville, Times New Roman, Droid Serif, Times, Source Serif Pro, serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol", "name": "System Serif", "slug": "system-serif" } ] } }, "styles": { "blocks": { "core/navigation": { "typography": { "fontStyle": "normal", "fontWeight": "400" } }, "core/pullquote": { "typography": { "fontFamily": "var(--wp--preset--font-family--body)", "fontSize": "var(--wp--preset--font-size--x-large)", "fontStyle": "normal", "fontWeight": "600", "lineHeight": "1.3" } }, "core/quote": { "typography": { "fontFamily": "var(--wp--preset--font-family--body)", "fontSize": "var(--wp--preset--font-size--large)", "fontStyle": "normal", "fontWeight": "400" } }, "core/site-title": { "typography": { "fontFamily": "var(--wp--preset--font-family--heading)" } } }, "elements": { "caption": { "typography": { "fontFamily": "var(--wp--preset--font-family--body)" } }, "h1": { "typography": { "fontSize": "var(--wp--preset--font-size--x-large)" } }, "h2": { "typography": { "fontSize": "2.1rem" } }, "h3": { "typography": { "fontSize": "var(--wp--preset--font-size--large)" } }, "h4": { "typography": { "fontSize": "1.6rem" } }, "h5": { "typography": { "fontSize": "1.4rem" } }, "heading": { "typography": { "fontFamily": "var(--wp--preset--font-family--heading)", "fontStyle": "normal", "fontWeight": "600" } } }, "typography": { "fontFamily": "var(--wp--preset--font-family--body)" } } } themes/twentytwentyfour/styles/ember.json000064400000013536147176754540015076 0ustar00{ "$schema": "https://schemas.wp.org/trunk/theme.json", "version": 2, "title": "Ember", "settings": { "color": { "duotone": [ { "colors": [ "#D73301", "#F9F8F5" ], "slug": "duotone-2", "name": "Orange and white" } ], "gradients": [ { "slug": "gradient-1", "gradient": "linear-gradient(to bottom, #f6decd 0%, #dbab88 100%)", "name": "Vertical linen to beige" }, { "slug": "gradient-2", "gradient": "linear-gradient(to bottom, #A4A4A4 0%, #dbab88 100%)", "name": "Vertical taupe to beige" }, { "slug": "gradient-3", "gradient": "linear-gradient(to bottom, #353535 0%, #dbab88 100%)", "name": "Vertical sable to beige" }, { "slug": "gradient-4", "gradient": "linear-gradient(to bottom, #111111 0%, #dbab88 100%)", "name": "Vertical ebony to beige" }, { "slug": "gradient-5", "gradient": "linear-gradient(to bottom, #353535 0%, #A4A4A4 100%)", "name": "Vertical sable to beige" }, { "slug": "gradient-6", "gradient": "linear-gradient(to bottom, #111111 0%, #353535 100%)", "name": "Vertical ebony to sable" }, { "slug": "gradient-7", "gradient": "linear-gradient(to bottom, #dbab88 50%, #f6decd 50%)", "name": "Vertical hard beige to linen" }, { "slug": "gradient-8", "gradient": "linear-gradient(to bottom, #A4A4A4 50%, #dbab88 50%)", "name": "Vertical hard taupe to beige" }, { "slug": "gradient-9", "gradient": "linear-gradient(to bottom, #353535 50%, #dbab88 50%)", "name": "Vertical hard sable to beige" }, { "slug": "gradient-10", "gradient": "linear-gradient(to bottom, #111111 50%, #dbab88 50%)", "name": "Vertical hard ebony to beige" }, { "slug": "gradient-11", "gradient": "linear-gradient(to bottom, #353535 50%, #A4A4A4 50%)", "name": "Vertical hard sable to taupe" }, { "slug": "gradient-12", "gradient": "linear-gradient(to bottom, #111111 50%, #353535 50%)", "name": "Vertical hard ebony to sable" } ], "palette": [ { "color": "#F9F8F5", "name": "Base", "slug": "base" }, { "color": "#D73301", "name": "Contrast / 2", "slug": "contrast-2" }, { "color": "#000", "name": "Contrast", "slug": "contrast" }, { "color": "#f6decd", "name": "Base / Two", "slug": "base-2" } ] }, "typography": { "fontFamilies": [ { "fontFace": [ { "fontFamily": "Instrument Sans", "fontStyle": "normal", "fontWeight": "400 700", "src": [ "file:./assets/fonts/instrument-sans/InstrumentSans-VariableFont_wdth,wght.woff2" ] }, { "fontFamily": "Instrument Sans", "fontStyle": "italic", "fontWeight": "400 700", "src": [ "file:./assets/fonts/instrument-sans/InstrumentSans-Italic-VariableFont_wdth,wght.woff2" ] } ], "fontFamily": "\"Instrument Sans\", sans-serif", "name": "Instrument Sans", "slug": "body" }, { "fontFace": [ { "fontFamily": "Jost", "fontStyle": "normal", "fontWeight": "100 900", "src": ["file:./assets/fonts/jost/Jost-VariableFont_wght.woff2"] }, { "fontFamily": "Jost", "fontStyle": "italic", "fontWeight": "100 900", "src": [ "file:./assets/fonts/jost/Jost-Italic-VariableFont_wght.woff2" ] } ], "fontFamily": "\"Jost\", sans-serif", "name": "Jost", "slug": "heading" }, { "fontFamily": "-apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Cantarell, Ubuntu, roboto, noto, arial, sans-serif", "name": "System Sans-serif", "slug": "system-sans-serif" }, { "fontFamily": "Iowan Old Style, Apple Garamond, Baskerville, Times New Roman, Droid Serif, Times, Source Serif Pro, serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol", "name": "System Serif", "slug": "system-serif" } ] } }, "styles": { "blocks": { "core/button": { "variations": { "outline": { "spacing": { "padding": { "bottom": "calc(0.9rem - 2px)", "left": "calc(2rem - 2px)", "right": "calc(2rem - 2px)", "top": "calc(0.9rem - 2px)" } }, "border": { "width": "2px" } } } }, "core/image": { "filter": { "duotone": "var(--wp--preset--duotone--duotone-2)" } }, "core/pullquote": { "typography": { "fontSize": "var(--wp--preset--font-size--large)", "fontStyle": "normal", "fontWeight": "normal", "lineHeight": "1.2" } }, "core/quote": { "typography": { "fontFamily": "var(--wp--preset--font-family--heading)", "fontSize": "var(--wp--preset--font-size--large)", "fontStyle": "normal" }, "variations": { "plain": { "typography": { "fontStyle": "normal", "fontWeight": "400" } } } }, "core/site-title": { "typography": { "fontWeight": "400" } }, "core/navigation": { "typography": { "fontWeight": "400" } } }, "elements": { "button": { "border": { "radius": "100px" }, "color": { "background": "var(--wp--preset--color--contrast-2)", "text": "var(--wp--preset--color--base)" }, "spacing": { "padding": { "bottom": "0.9rem", "left": "2rem", "right": "2rem", "top": "0.9rem" } }, "typography": { "fontFamily": "var(--wp--preset--font-family--heading)", "fontSize": "var(--wp--preset--font-size--small)", "fontStyle": "normal" }, ":hover": { "color": { "background": "var(--wp--preset--color--contrast)" } } } } } } themes/twentytwentyfour/assets/images/windows.webp000064400000366444147176754540016717 0ustar00RIFFWEBPVP8X ICCPlcms@mntrRGB XYZ   5acspAPPL-lcms desc @cprt`6wtptchad,rXYZbXYZgXYZrTRC gTRC bTRC chrm4$dmndX$dmdd|$mluc enUS$GIMP built-in sRGBmluc enUSPublic DomainXYZ -sf32 B%nXYZ o8XYZ $XYZ bparaff Y [chrmT|L&g\mluc enUSGIMPmluc enUSsRGBVP8 V*>1C"!Z< OiO~_.?fݾٿp_̿G_3?'Hg_?~rk?;7//vo_?~6Gdk~F=]8_<<P'|H?O?~sw?~Wa}~~Ǻ_sD?o~}?߿vy/oܿQW/wemoo_˿Ko?Q7oE??_`w۟7wޯsر6D cJ,G|mǂ778&2o>/Afv-K3=<7w~sG={ܺ|{vwzlC+I] A^i  2IȒ{::?è˷›:/p J qr>w9 ix?a$znL.}+7o Ú bNZO%rL{<2j_yXt +f1~dc"GWPl Mɖ0Ol_X@"nWަ+=k)6/}2v bx,1QMf8ǾjBkB.m;jO mL@>Z/%D`i H2V)TWzMv})ebR=xs'"bZi h8 ecVaxc(QJx}x腫4౓PĜMM]qANuZ!c>fAy3@zo"P*w0q PAqD u 4ziފl7Tm*4GNSц~ixf6\&` V<qbL. }c哽|񂃣InU}&wzz<6y*,#sٙ>72 楮H{%1"YN@t#\9|KWqwҐnD)@ӋT#@ݷW:1=\B;F9: nT!"4i7B3(De7&x.U@RGFrT. FK~m4s E"._'/ :+ kq$yFoCŜ5ohǛ8aSFgVw.BTH:>J 54gdɳ9$S:J +"9ud4(-[;&u,~tV9 14YU ޵4]Βnk幜chǮ*kh{ۢsE4f'Kb ݤbBgl))h4_a^ 6TuP&νh?#,סd|fGhٰAw#貋PCD|L*P*g^:6%W)^8ߴS58|[$GQ}(Ng̀^B1X/|g>:` W\V.Լ`\@fJ<5Y)3㜋Wm[4Sx!-#Z؄l; z[fѓ%"{U֋|)v{5s,/fD#%uirݷa]BX2Ӗ(|LXAn*}ѕCxivǗ:K>^n]r#s/1.i V/t >&)&F$,_/l~h [oĥDl<${5/_^/^a=<fD*f[/h%n_}ff?ې=Xmtx9nk}\/jǯ4qN.~0l{21;$2y q*L^:ң?MUzizoA8{zԎȊ#crJ&&B+Rk[ԹYeGr`t>l(A!  bR{ ޻FF*SDRjd!Scg8ߡ^ ~=c}$ac:Pz/!=d,rM־{/S@ϻkޱ!J=mxu,{ܧu'_OMln?O~ a"=z #68l.u1s'f K4di=kfߚpњ 0}W_ pp u%h,KoPn7 n܄R:T~Q0Zz`򚠪ݐQ+C uv$RCm{PfHtEB(k2.$ߵrS7]P|cs..vpux2l obJGQٟ EPj۳TP]Wߦ*Jx">)C ZZO8hSdQC)=ТICbtz:Zv(\ 6AXTm}׼Toz_˪i#jVq_@L̐5^TD9I!HS; R[& I% I%4PԨ<:AGfP̠( ipW}f{M,OY^87|4RCz,ƤmKՙ7XZF_ܝ7 hyA%wu%# ]bQx O|$;1aks3 Bu$GNJqyDBhʄl3/0$γY2jMvrv˲r*&mM.H@\f0soS;fL͈ ^56[~ú6 cfYk:ZY, 9ʶ6B73e6xggfl#DG[/K1*HcA>clOQѰ٦ "毃=Y/LWKypv~YgĔC7C*wm񀐈LoLڲ\? {p~TZb#7\-8靮r__ߡ9NZ.ZGm cJ[y(u9/5!e$n+T3յ]Bsd9H[5%70&fEHRfڂ@;S|v aWV|kL܌Nzn#ؘIDX\[NVW=o5Gb|rVa Ä}7gDQffa7gs2%U^xl b$|%V<_^#ǛVyv1w O=L#dS9aѝ({1 xGneiF`'~GG|vluG\wWFp L9'o\ gJ(XE:"dJ u.ȸ9\M[)osp#s𜮐v`mEkK"ūso좺Lכt[zbnWZ.~E#c,Zky Z.ͣP)$ccEgjٰpݴJ*}eW9bfKHjSw{D+x! e~ hfUF7]at0N-k!xJ ުpj%~ xV tkM fܰx&Uލ-{t')*A!UZ&B#>]`蚊0;d r.!]^3687Q}WP9 1Z#``uzj:Z4y>xvIn> x#Nr!K(@PZ=<4򝉖g-HP޾vŗhctX:dK3:SDq8%7m9?0ޤlgaDŷW8ȸ2]EXgɩנC[SrVԻ`]C?~'!@c+Y8gӐLKb@^L 5vH(1/c ?h.# (>*AOˤrA\ü.R}y[)(?eQ3bSR"hF_)*QRАghWWl;~MYYDDqTf yM(EzBl3==#C/`j66468dA.pu ~ )7 [n'_ۉ| !Y0IvE@ƒov r(.GzfWGT́/;^y<mYo)^8Ɗ/)T+L,[|j5o$+! rp6Ir5~> !$->oJs,%Hd U(xbtLua.x`O\\ii#={*S^nI;+A]RA3  A?g1(Un}2Z%Qdj1 .BdBOs\猢"ҦDIkb܃T' d0P/9ye]n9{yE)*oQؗ%v&uET3)|vhľ6JG啻_Pk ;RG,l5oÌ6<߳ %BOb$w~ ·۬,ZQy\w֍vKVrp.Z<7w]i~0ҤCg|4:n E"F%{D֬& zk/@kk`NErߧ4 c AG8mA߭H$~ g.ϵij\o)W2k{ [242Eɘ 5G^'nv c+~G1XDR~KHzS0:Բ &p D4q,p>j RLK+wRO*D LۺryIY!n1C훮O‡LgCUcxn(1.S} ^0'0#_Zk`DͪE.cL_r wqUZ/=W@P30vGW ټӏ(t0 !Ƽd2Xk3s/0VڔgM(!Lj]?'{;XvLL\.4vy8uzyk&uUՉD]LLM6Ye9EՐϖ4$ӗ@ZYd)Vb'KJ@pvkM+C1Eћz(}W:q2g>̷Z*/?G(h @#af,\G Llx|B?@&xmEԦ,i@ {ąRYb3ko5c`j ;AoSAl(9ZoSm8]=Ӎ6T@x9^ D-ft5-{Ό=%A3Tu/^CWv[yR }E2"%8aVzx +(w*ohMED_;P~I8;EA^wK@1іɮ"xqFjoKٓ? ׇQָ=+.ٗ_ *؍*>ۼ噼Ĥ] MIܠH=ޓEB@ ]P\USI|/z&Z>A"I"%즌W͇^4 ̕Pd~+ܝTrfF &7g F*h&vNKn/S^ݱ}S[ġyP'h 7+j 74Yʅ.cgtiהr?Y\j$p#zk̊ȴej$aʛ`Ʉ>S(RH FO2>Q ?-4ӆ|gAm~ TEqsj!z} ON50}eKkJH骪f=X`{E|3Z|qWy8WWՌe28Xnq@#">uC?XɐՀIMpJ-tdUfxҲ^%ְm[0;5ѡ@\4 &0-ڋqU|fJtpÖ qO˸iAhn0r*^8ۛcgzK/6=MH̊}5*T(gCBaUBԸ"y3j/x($\2h?^9RФLe~ R&G{ Gɋ0 nhPe'XU}1f)H`~Ŧ@4Z9̈́Q>?cny!mDxx!q'$v2._]::*kёHԛ<@uJ.m' M7y6ゥ*p:19kx$2^3Ѕ1v9wܮ@hӝd^]D{ be*w*,8:9z]L'^Յ`n̓|n!nOZ̦=ɿ]G{]G*7h- $ps39q潫g.^u" ,|/Gj. -ewWNWU;lRhe\ɬC|c^*`+YSGy{+?̽/,Ӣ gA-M\$&GB~rwAn6 k 29ҵٸ'A%?IMC8|]Q.(a"dU2Xeݺ@l3}? 8Pĥʀ.^`Z'g}ux} ױ$E0@OڶEd D3 Kgɋy|tF> prL]_`޹ mW+'L-+`0i$p`>*3"˃$|v_O[󹗋ws+) «Bw D+EsH9U@a~aS9NU >F g,(KLzn"?lvӧytH?C3)g|6K"`n> y5/gqj'%pª5WcΫ>[i}>IX\5i'CxK6|e5*&FR-8.noW2 z&hծe'@؊F^ZJ͔/-8SFtq "#E/~ݷ'L̍k"Tj1Qxa :_U"ޥ_vn6k,yZ>TM=o"X4aƾi_& j@GiPL[~]>EPb6-'uw}tY`"^~UmU(=,X[쀘ND; WJ;(:i> +NT:*+']erO|ܖ$U"jTete^<${_Ճ8])45n#vzR<i&ʘxn' \|g@ptK'Ul6\Ѹ{S\pWi#4nD䄓n]/Tb3`h.PdA,Z B*!_(~GKPi.+ktէb F:g|]Iܥ2S~n !CP1JYFӼܣg\ -\!~% lTF JZӉ=jpJ^eW^37bXJOt0S cb JB3SǏVwϦ&@{Գfyi(,.O^Lhc!?T*VsM߀}3y7 F& f`]n"g9ʦ r̬2I]ԏ,?Kvj)Nğ]|722R[kh\*r#md;'+|bBZ.:]Qm |"6--|QBBO}C qr3L;O\ZЩa-M H"xuP2qizٞOf3:^G|UHDs$׌kfϺ^llnNHER.VD~?]圇9G9fW 23k2_ؗ"unu~y|E =`e RZ9Ovp<>p4LpbV4o=$\Jz<~qTگ_y+^u v\"y 0J9{gfbg6Hv,[-e$9KtEG+n _ .GzJ{H/E;?箊qt~)1L},^ 5"[3KsN͉[i$kթnQE9WNFI2u7~}†"[:&s!\ YW$@J+.<ЫU)`fWH\/V4:dZz1ܶ*fsF=qpWnCye@'yXZT4*+J^)QpiǰsUxOئBY'!%z 8|vuW K/y[7T9иp=|'%[x*Hfb)h^Y-YS8HgHf\V|+3FqX/Qɹr:t̲h;wd >n[h y+Ā{@s'A#@fULD7=-_ @%J63AHy纱GȬa>Iq[xox'\I]VogSrဤK}%]az@l~V2Q|0b~v^' Jd:  6Y5[{"z{IeƗ]z0"##abIyoћ{"-/-t#NVNp B e.!lBuRqSMr$"YTV\>rFh$@5W(~dɛq.+lGh 쎼LAxm[ p"BCa?傿4FH-%+?QJ#.f}+;L2gT0ߵۘzC/t6RF( NC4}Al ,aMșvv x3%3N{2%pתXTCP4}뗊N'U䳧:@Ta|l>YnJL]MRjĂJxW3^ mA԰~JO\x^(^,P^Ojl F'N٘tH'Վ>%t)zlԼ9 8W{Sg+ە N1@<. [4λh ؃I`1lFF 7uyNfJ\(MT'eW˟ZgcI9_xm U~Ӝ{e2{E;[piPm݇4ro4?mc 6ɲhxYu*:O.WEBV9̆#ڄp}1 r&2SϬ1LJm.[=\0p5oiZk0r%2MJGο,P4CA@O4'4Ү:4k@>VF1I#J#1Py52Fo~0A[{i(*5Ls3:Lu^e>ىH`ֿ+M_7GϥWlGq8{k+ryZ#|@ E[ez(nʸ?`2q2)֍*w8n-f3}$d&{93 rFv+E@s[+V[ +^?ф[2ND^i7 ùMO#sSl>/ ;}v5-_ 9GqL61XxfHk?/?cBʕu_uvHujKLySd+=rU6m!'L-)2u ԑ"vҤyҊJA1Lj\.D9? P)gfq5sD3,x[xc`CAZMy51ncg-^B[Ti^Y2`=`]Ըl( [S)b(2=C+4/o[sgJICeTm!i2-C{pȷ9$~5EO"_!֥ J &@KҭSPK6TviЖYg wm뾂\D:O[B(Vis}O|m K?ދ5QbwobX/#a.AJh 4G%}h%LӾ|r2f.m`wd|y' _ A+ ~av9T]LsS!:+L7gk})-`KB֤y8c֧X/tX!ܜNPF0WJчh< T qoO\W\4}?h[5"'8)/gB n=m=}k,{zY>  awL4 +V`Z>3 $]'Y ~R5S8iw[Y`"m0OҺh Orw \= %83MUH|n xOM~hcRxV=qc żIk"qK|-lq Ty<=Ӑx;ۺJO.FuܻRlTEjOD`||> > ?e\\<10IRoBlnU\%j TYV 5@P9}EZj%7l&b|O?r}E,R^ ÎtEj £2ڠ/:]kQҢ&erwKHPA~oLBR;b[c4ɬUr@}0Η (B؊ ]۱?ދA-=qR/SYZ]Bs+#-eX Պ[fϭIY@fa q)s$/į uj%Ժ4[ϙ _KeWy 4-BX?",L{Z9"+p7(2=|Gz@;~i2׽*-oݟYvrk&;?o!cXOLWRA+IcQeS a{'=* ? ۏCvvQGMؖNt2}ba]^Agڑl3۬yO-λ[K.$k557=\QO} L w!װC y@=2&=W;cV q4Frw=O~icz%Rj,+Vڍ3Z# ЍxxLߪ؛F۞0, c,Fb ?c띒k;?}֨.ټJ&Z?[.eǸ5fx1S'*%>p#bSj"z(]c`3 g-J?0Oc쭙I!a!smt:TG?@K0`QkmQ,Q}i]'veš?O-MAlou9]ʨU ~f:$_f1?77W&D>:C/"=k.,؁ iFUCb t XS9G2*2 n?S 2^uB]tW1a3J4%-wKXszf*wq&ϸ04 /xwϹNTt,p;1z'Btn/{}hgl, q-;M&<"n r%hG`6*w~!/Q:d,+/!]WeUe֞X +8V-I/XmleIa>β~CrT;ivC?\zš,[B ]M;F{RaTdPV1<|*u|GQP-r ) mjM k%=Os{}Lu>V\Mi͓e)JF =<X`0FM{޼'K>GGg># `|u|4SG:J~r2㌜zIgA/xGx }eSR*6jkZSԄLf99c˻8ĩ Sk7~bgN1?HNǷD?SG+$n2!-oJ jGNOō`g1ii"mZ6⊫6ֆs55ڗռ,o ;S ǥ*+U+eʚY/gE6JƴK^/κDhzx~ѕDˑ,uOsRiW* 賦egu/~)ktnhUVg#&#'0(pśik)^a d4Vƣ4&lB^7V,[BN͛cbX:‡dhDkPy*jI9`;k^C3f*-ݺRw]ILYcL‰ڿj}F`ABh P:Uc(J^vCd%[S\N< ̝s9Jfw"t_#w쫢H}r.lvYklω r l pкW(I\sn#v:eUSZ2F.0\pr=…dN x?kgID l2cbs+֞Y2*u|ud }`zdG4IhB&N̈ vc$2aNnSDҠa%Bh gY}B^ nֻUkfhj A8ke+U~OU萿nl2֫ns4 CxĴH2A/QbAX5ʢ_]Օ&2MCMSa4K7Ì_S%<o!7 ʼӹ3:ɋ0` .#tWx*y- E<* }OIG6_nEI˰D)̿'|#QZ{XĚ#ېfD"+A;|02b41<%}\=EnI*k]<R?<#%8aD&luT/AJlMx\)LNC/+{֢u@O%ćsbʓd)d! \|5G, d H⓹ٝ_VN?ɛɉl~U@ tr RWձSm<ӥ.0 ۡ1-γ?E V qc~C+Os޺9C;NnZTyٌKЏמS0ev寣d)5n6'gaU7nڔS?g&] w(mR88AGԻܻ0HV?˄gxj\Ocꓚ^ϧ9bAgB},ID6J :rA8k/I3iOjjG^5;ąECLP-ToĠ1&~x 9Ło]z,pj/S v¦5He<&)ʖ&,0ҳ+fzSDOsۋ̼[_8 }VCniy_fbI8G ~1rӜS% &@ċ!ʫ;̇m'5vtue[Xp5YBɄE`'n8rt7{(/4 wmkwo׍964,Hl%T}Bp&>Co3d^,9gl6Tv倓P MQ <#U) )UP+% b†Ob( g>pA>z;1i4P+R7 6I+3&`-}ұx79 ĠN6u''3ω ߩs$^X3u53;, hE˒Խ%5xW8̈MLu#dAʈpnH!j j{:,4MT6W rDǺN(3T)/IN>OVhA_8`s?-w#0j^+?欗k@tjA * @,9K"&cᒆ/QCƱ]0*R%_dzG-]etU 86~ஂJ~cUYK8$1l{H*ȷO3zoĹF_|.<bąޫ#)hYfH9N!}5@m$yǦ) -EG_jOT@E fY}9)x1$ VBa> )u%IMCKKW#9c ^! Cb*JnmrK\'YfS1jW Vf^{Zjd#r-)ե m=f9{OIDӚ+3WoY'QO+%!ycB^Iާ`$.?hQ WI1@0X(n5 ph FVk-I皇|Q8#t,:5AlI< >if6$-ѴuXW;F}]o VBAp)hJQcWv:7H|\'?60)AKhn5<Ģm PӴIj R'S= dm-:U"w5ϙ3=xo<0RqƖާgv_Æs;R pndPkƿu1R?&&zuT/2|816׼Qi(=n@|ͱ17t] d`yw]g&"|&;ʖ}]ôľ};"[֠!hWvqAhMNaZ#1(_٪6i ˋX.r l}9Exӗ)8b!^cLPI~S| ÉE~D /^w,^t]:w }B*^-O<ۖ$=tȢlvJz2*L(ύUaօfB\"_Kh%(|f}2! aՕh+kԴhV|OB*|6L}^-a?A@* 8-)cphHkcU`2`u43&a)C4ecRXڤD)74MH.+:$ 4C 1OG$WU:*ɕ"+uq\Y'Y8zJ~Ms uzgQ[[K8Ko3QrI:ۻ(:,+*! sk.x˜Q|{#EV _< ՂMMa|f1/QteN!Rz'z GhK6F0:B$:,+4>~N$3OTMQ\?c?$;6zN6wrzq .8Ԕca x ˩PIeX@g,NE|7uX໲X(U 캞-h,Dv߱ŵ   [ ۦG3G+L#hS^t*tA`&TL L.YNҺ oc]1{O8"jDQdÇ=Y vX*g˸ͤ+b N3>FY{͒bYJ枛)'X@1W>=˃t M$͗]lU[ ^}!#)M6QQX:;2Bj.asghjA0cR%o-kf>J?:p?q`(/|:ywOMUT{_^Zp  S0 k=2WwȪ9O,dFJs+:-k$,0;ΊB% 1z<\"XM>$,lt-Xz{z*j $?.Yl)L$ ¬+V~2ouKXҚ[STlW5Y:Ԅտ;@D15ң@Gg]FY<ՋS̒1?lL[$*iKY[S*Ǖ%CQ:Eg,9пw*r`ƶ^<+BTŽRK$溠ݸ>Zyiw N h4A~׊. py;&/*(cYln;uq $~=hCY"7%K6= 1O wEz2/h4$6OiE@CG ̅-iluY; ?\Ӿi"cm0R9ld۾7W=SOAؠ*Va5P(W-<xbm=.s]ƙ_FD2V؅%*X>є1*~m剥|iL5$00-(`cchxm5 69BbZ.K ?zUGDp0 -ǻ$e$abI5G֥$<8}>tcHr^!Oj:VI>$FR;leU}fʞ n:ȩܰ$j&$?e"AS2k Z+H`9.ǧEj ,,6BPf '@X1SnY '{/UyS$wۘ )|IPâ~=Ɉ j(Vg~!"ڎMuGQU RwZ}0G -HnSK+P]"= e !^IoK'L!@鄩{ew~5J VAEmX}{EV|/TjfjUH;mGHDu^~`Pk &RTzE,ƺN8;fPI ӬNJc ܘ`H$̅q A 챵|VoBt͈\+[v\؇x1! }(B*wHwu9ذEl9}m/H˿_$+IIz=DáRQ|Uuwٌ=}J%(tjzTaĽFP-AF8#!6Hf&B?nn$F3TJZqq*7Ql+ -DċZG`yͲ>-9|˶qkPS?JڨKq,|fEULӰJ[)Dtʗ #tq;w~$ƺ􌫨. Q5? n a6MqCq8}¬-I$J|!j2Zpr؀-6;C>u6!%CY :.}[7)˹m牍,x\V IXP$ nrpa}cAA((]UPl3`d(vK_Bs?'ӕh^r~^hAp ?ILv'(IhЄPg6 r{5/YQ? *=2V iȯA M]|h.4\a(?Ɉ֒mfv)o+y[!ccuyìGQ.'yg x a ?5wyPB91!Ptddҟ蚈`α5TkBt\$6[н<656?X5!vG櫡wLQ;lG>,'Y~O3=xΏKRI-@UCj W/0*_br7}RlHGWݟΎ+hq'(:5 :a ņNTZtIꨂͅ5GmMMU>Ͷg~6~ᣀ-ҬgzU0A-)c"zs»:12dAwt(Xܑ `WU2R$8*$en|%$w#eUUbo@ü[^yxܐ俋t@/GvH"19lBc7vʀ2`f/רs3^Aׂxձ3r9D+1Gh̬-2]32aȸ{<3x 6? _J :|)iS6@ڿ*DPfQFkr;ZOseN6\uΆ|gS4 Tp+,q2i ؍9|Z QΑ?ʔ\ ZP[9q͜׺Ԩ.jknXVTh'x 8T6sBWk[AZ\PP>VYy8VglhM!FHs{ѻ[Wbت-Ҟs8 tw02R:zvgg0F5WI5~Cx`zn* n8 yMHjvl+~/P$H*39TH{RD}ʃ\j"!pkJ>p=JL(FB92*mkgN(4Hp5:Ҥ-$ms?Ml-ʪg/ -kQ 7<Ĝ'U*2vpX:GL+K>k58:$]ZB$#뚞SnG b;S>t'75ͻ;эXŃKl!_41/[KsM;2)BNX,c]}#](v~}ĵ h7ISɳ.q}bU #J۹l_>qmfZ0ǥt %1#hZ#w֖e}h5<-j}gyleLΑ L,Y.A4lF K媌2}Qy-)\]g‰&E{t'{eR γX뷃ČrOC?#ۤFڑ?2opvSGFY[O !kV_eV0ke3sWwroJEeٯ=& ӄۥ,2H%W'|0!"PYO>=)>b2F{1Aq#QT#߇Ϯ= y]@Mgʪ#ڀ<M)аd92űn%0.N<'V=" K`3Ƽ۔I"%ۤ5HF}3eR|`:ѐ-܂=ײR#/6Tv\ lA%8vx=kOT7iT]xbY7ֹNs^!Gd/#xX獭crEFh4&Sd}n\!ָg Mb6NМ, ?z[&k\G?t#h=H2m<Ӭs,3Ǫp["|+ }Ekϋە]"XŢ 0_~1rº̅! ۋn`h#Pk#TGz]LMU%B}1VKd汰ߴ/H6(7؄S5'ם厃GC.|h\mJH/A[B$8A~I]:U^̝d9")-AmidlU; u m>Z_yI6Lu xś\d LAB9[uyG%iT[# "sGK>,MeE*`Wl+9KH]`!01LĞ΂#&A/ &fѕDg^DLoVoҊ"o $O ߨ*#%) 4G=Ui1e˖rJܗ38o~%ՙmz; 9=,QܥhT9/!q6#?hIp~UٯႹWi73!Qt??vpoaƶ{elEۭNN.D]@j2Vuvr!n[GJ|TF6-^3%Ґb'&-\P8G}hZ(e}Zn}f,=*UbE VDO,k&'L~59i_gn4[$ v62(ܦAڷ2UDݰ leu9\2޽zŔ?gF5YEǭX1j L}\Dg{E֘pq{ VτY/&CTR9Y=2GjȢD走,-YrB#3,5PAbavtcJ7ImҲv8M*f ;"'e&2*b+77bmc vwqpfpxy'6m$߱Uhk9P73[~6$y.Nf!:;@|e754iدzOVaf@:H]B4ܗw3,;oS{llJO&P9nf\P*7JLK`'/2SIS{pP8)R?#kqsH7 ,sңo &/SbR^-*H`K a:CʈD H,ӯO.=U >B3#g 8Ը Mpef<R4k2%=F!ϋa11uzW`CEK#o޾eH]eHȜ<>&?pKj4Jac N#`Gx)<9 6-:v:VΉYHby- Wwxƍ2}__;q/ȁf}|0' JulLR&#wл4ј<b{Kd K D Y `ݿELtI^Kah$GgXy&eC-DagV2K1>NZum0!\`WAjlw;bzswElE7d5%;GQ*F0>\SM.gWV}ڷa"/+Hw-Mw:1)IMB^ Ɵzͅ閘EK8^7F@';tmf` R#6)7C>HrWDqvX .͇3Fkeo,~'uOum腆@ 5oF] Odgx)VJE J״h'eo6\ׄ9iFځAg̞GҟQ_ЋpvV՝c=vԃ‚AUj&\Ϥ׮M(}&T\2 ZXBdzfQ|x`]utbEF FX,Rn[xg3+a#YG6<=+Π;JbcSkLv)nEˑnl1Ӑ/ʩ y؝ΎiG_jO f { B A ۤIɭ~WFr>9ֲ{P(gtyv 2K,TtMT];5+3$*+S(ӯǑ^"eq^?8ȀS4d!1vTnXHv aEY W$rUޫSw`yFY2)Uz"q[`O[LXk[a{e Aiuvʓ鄞3-@C|z-6'^M(N |΍ di lsZ_&pC_A3p/'U%al7AlGݗUF TŽ{mWfZ=Yh4R+r_ umLR~ӍJM_#В?{{mVwy@X/{L28hJՃg[\'p~P@}DPwψ$M(0L &Dm1@kL1j&,~:362ftu]:h7Vi2[A1*EZuDJbDˍі=]UU::POpjM@K0gt ӗS@YSW;AxEs%{obymG~EN 0'{-Eu9wcoU5|\rэ ROO U?0v7 H6=J0|JI =0 ŝ]V*Ho54i6c>+9aJf]!ON'ؐ=(4 GEU*l:4VMb/gjzKNm5&kUTP{k_ڌԋ4L46K/}A@z6~8p$}XǁT_bba^5iV 5rd>blH=9KA2A >̽%?V,A'ӶCChxa%7J$qX}{U(j#+Sx uT]֮/azX" Rԓװm{5RU틋k@,n/OPQzj^:^+;='#ɬ/-:F-sI]-˯H=<|& 1?L/"0hҔEOOȆA(Kc~`kHq6(I0D|$V~Dhg=ZA( үĨ쳘N>"tje:C}sq\WpQS8fɳC[nN}Qͭe`Hu7nG .:#o KȂk>v9(+YB-rd!h @7MUȵaÐ@1 ިd G879_Mj]@=7u6vtUMz}ɂ.hUт,JY_>b$F?itטɏt px2ߪq*cU 7>y g6qbAͩb*sE\mޢ&>yX]i,eW]& d&svXk*_CiA)(T8gAN+;^}ˏx:VHpC'J _Hfg I8DP8vf8ݠ`=We]sw!0m:)5`[[yĠN"Nl6!<',y! ׹x C(o,[0 e,RAU; >SIAT|4c@%KK; 8%'k9>+*e ZoÙK$l <\B|W,ʙ[{?\0N9F`l)AGPPu,tN= ~{,msv *<}zí #6Fj +lH|` B6$МH;QхANJXyĂDeVQ/~AF:&7t|iqq60XRrO,[\;rEI #o;LJ<(n3ES-8vԋk%|RW/A$"$x!͸! ěMa!%$s;뫫,OH=.ܸTȬ7^)chV?=yCOnZxò= BmjjvmujD*#FrHdi( Oc['Iީ&OÉ.U9vGLj^? E"6wG+סA͹|-£4v>h8Cg cGXRPAh;#KAyI˥۰ DCQEie;(D()/.)q*5(96N\kǮ !)yV9%s3SDg??.誂C"0Y8 d`.sTB;,j`m6{4(؝u{Qa"\(5B+EʾiعGMvz |u}⿌ٛ RVcbE2! CU/K&F)A"%+cԃۚ9Z'L|`Ad~٫eg泒R$St0iM_I-+!]?91?F!U]OM^|Pkr&dzU[= 1Yϝ7j,fr~9_6`LLl6n&/]zL*w/-ꕡncI55zٗd_NFJ_ڴ1dcLRUΗpS4P^(ߘ %f8-S^%g>}cIcܒ ~m)@Uߪ,.c$碤}N J ;eb "W:FьdǷrb5xkڲ kn)|{`%_q3Q_0&PFݹџ@-~'Ď+Crcc ^> H4(cTɬt0廦{S\Ec_$}gBu/-J[<@"%_-uIAco~':4y)e{Ϧ1&n28Hù&"mlGAH@C!{_]6l@ƿ%TxΐA.rq)%>&I9A[ܿ7G`K9ߘ7 UO V W* + cR8qг˕mvܙxB}=,_8VGVi,&W Nb 큢UQxGlV%TI.': m ;@a[6=Z_fvG ɀCBYHo il&8y6ԓf~+4J. .4:HԾ;C};>6*3i/2݃O4Ix@d8R[@+D_KRP ~# I3(= '2viE.lrUg7:w>> 햟V>"nU7ᔛˏlC{@N4R~o5sYCV~C`yC9%gv]ݭx~D$wtka7*|_o3(>I?:O][,C vj _,pMK"O H|8P"P[V@)t#2A\-C"ώ)~7+9pVI@xNM,"iÑMl!)qnзz_p31cGpn}; *\#;[5W '-z5 d;٦ÏNq<[$s$-:~$%aZw;lxo='my΂^^%%xpKջ6;MCx&d.H Oգ8%oꌾ%\쯦۲5$(0ǹ~-|@_ cvOyj0*@f}*#IIQ"k_Yb /^J l0ᆎ4 ^#A5y![/(!JteF8rwTH+L%3C? k- |ek cWb|DBp"vh81|PZDžf,,[GIv<C~MMrX@iVp*@unGbݲ#ègq+i'n仒}7 UW*Y$fE1a|G5gUgRX F oSN+  /|s{h'gS:0&Q& |=rL+i ,p9 V'x%"%$~W.i*vBBGZT -$){5 'sd {MZRT+ ପ[Ŷm.ǽq1 ^Zm+ J n$,š7a2( .]\I{;ÁK{i /1:JW6!Klj²]ͧo6A#X~e1pX+1"kq&\ p @6s FPch0+?)*g?#иSScW9X r=4 ;zlʰEǭ;,`0ǜR. c3gO8"E#8\.VaW^Jk`QF;+ߓ?iRz%;!Xr,UGFdYR0wJ\vԓ i1)L"􁬛A_~A&{*Hukw ~ [f’rv &soI( O휢@Q;F_Ql!8 MSsŻi5~;?pcOCc5@?)-RYS CeCC5䢁 h &_Sg=l:Sx(2_B뾻#e0tOap; ӿkfqUS,[WǽBP [I eZNL*{*WEs6yhHq"5hv vp;dwSf3Vq'v cmz%tr W DLjCqO6x.5F z0*zEʓN!|q D*Զt?]11<>u/%s?+<@ݐP,<uy4pch"hA1*QM{ӱi%u(V#VgĪT,Ҙ: EKCA\fcspA}ӹΕC 쮏HR'zz$>m@e%.ºTV]WC|gL2)gk= ,?CH]°6J{ Uj6(vT8d Da9PYg_1G(IKx=;FVq%Jy}Z!JxqVٳ]4pp4Α6Q\λPa |AsqR)E1 W>gwN8nel5,[aRRfz=4<؉ᛲŷ32B[aUy=SfAmxWnt6./je9vYm:6[jToG5ph<̬WBVfwņdH87]!*X$l?ōRF#Bd^AX/&Оp<9 Z;z 7ud"wF*-QP~]5{8zgr6U1/M{KlԊS31s>]!Sqk+gl\ߊI#oZ%[SYX:fi]e"QmRЊ-GA~?xGѧ%RDGBMN(YfN'sC̅o(W)2ޏ_|ܛY%mv0Z6gSqpD*DXj;2< ==!ieJY_*bYC'ՠ}=:.6 m"m @.X" F6JWpeV!@M{u-b^V9]Liƙ[oj8ag>?PWO >9oaf tGF{mV{S1zs/Z%#>r9_sm?V$mhu{'Jm"k K@k~,Ϥtݫh@n@?9Z};.|H\j_!T퐑?G&A)]83E=iٹEy mR% ) h9srU$uIl atz|z(9|t\~͟R a0dn(]d8L)gC]wbEv+dZjhz[?RkR%*b#`\|dv 7 a̩rծA_ہ, <'r1e) ߵQwoS<>UW e瀳 𤂓)mՃ kl( G!2|Cd^kַtX9b l)pLFt*5"uyoFy/ZS˵p+qEX~ο&.妢R>vod;I*”Ey~;Zd -^)*KS"f/QUYcuǡ`ڨT]W0 v$#3N{a00\27C<粮lܼ9ۯ 7n97y(Nĭ8 4.9Q;:=Zlwp|8x^aQMLE-6Gݾ<.KMdOdָqm8 q ObQ7-Wwf}H{VPJUD589rzh0X_9]cRCF Se[9FxRfGr 7h_a:Oz!Э #@Sr?PlOAoVfG\ cr"2UB-H\Q] sTd)ФmV/h8%5k2t roE٠{d ~Nʔ|_ث#_?Myi+`b}p]t5j@nր3HJxsG_ܶ*ݓ>3G,sǐapqMa|FɠYb p&V*BB#qp`@AJkU0`xr=zXq݉ޔbyK wRXQK=@83EWÎlș-Jw^̥&l*deiOHG6 *ȶu"`M.O7DWÔI=li!/WC.ڼT& kܮ: n NN%a|Lik+"9^\DBDΎ7w^<k]a_cC?k\8L< aE!a_u=$*t2? sɛg(^"gqek*籘m=gb& UO]c 1D7Y}&-L>Y\(&VrR'[rdI^ nWp,j /pJ|#S_&@ʴ-6հ}g pXHY\w7Հ;d}I@EBmd蒷/ 2!'Y+{YC(_i&+wwa,#YO``Vein[){%VzAo,b XnSm. X-Gm6PAGk袓fSI2_j'夨hi9&0dc{FUx3Gtw}sMzp:%鷼iIbjPJe~`J@ 63+7@ʮG,*.# m{ =yA;8{7xxgޫ"kDY] Ul]e, ^`I!JBi-8,znR*`c2;i)$Ү |r{0tZPux X?aSn\S.ztU4f]BP^؛^5'8-z/ͪ>Ό )]F;rVOtTKտ.~]P䚀3gB vwQ*DoLS`⵨=<b'~oxnseGNfԹ[;|^v3ύn9qi2e["DRW#W[>Aui[*T|F⼣oA%"M)f{ci)3{P(&r~t7Ewawr.lJv~(44:Sˮ2f4%IQe%\@4SP pr8v##ap {%˸p jN  Ny/m.xTxzksvVsvX%ɡu}C4߈[} pJ`S1Q,crgӤ?gsFԐh~M{QX1'$71 *N"(mK8-3[AJ3{S;B RatgY큩!ZWvNm#r3u$>->W!,+J<~+JpA؎k ^8wHACy;kJJ'cgS}sIl\;Ke&:$أ֚Rz诏tSS+[޼4>dws._/`ߌi LAVjF\e(@g@ p"\QWVS.9xs 4]Fx< \Mg]MrDz QYb!.%Km?RHeitd؜yy2;Sl𕡈2~z,3yK@67fDrbeCMLmkJu.ƳqpSH(:sFX뙉:t\pW;ݩQs$,J^P[7I,3I1P ‹ߓ1ހ ө2}:7(AVa΍qRöIXuZBL)NE\__4+(N0_I;)SM+OH4.sQ$je?>pCr[5O!OwNԃʢ<70ʳsD<-l!omy4o @7Em!,w]ZWtn&I9i/GnyPI 1xZ8;LOb}/Pد:ΩCfԩHh5F)f (#S5hFt&oQ3,D/e'^gL污=&+f8Rq9bJ[՛u*ϑX}ݡ;aʵ5YuFz;о07+ySX<4Fbd` CEkLdtopHF@Sx%akzx!þWQw}yT3'V m2tBHڅv]ל6(:|`~8e6'!vxZ1f9dZPcdwA5vࣔxDUYÔƬ'NdWטz3w*d陌zUh%M9~*h1kg3HY!qt/ -]uEAƅ^C]!jwsuYMS,UL7Yklq3AIӺ47O 1,Ƃ^z*V9sV Y١f$Fr9B64s-Ql Ak .EgJ8#ſK{)Dpv{}1yHj|[sU~*@nzq8鰽*Ak˜].q>ANc5@| KjGi.{M 1 ֊x6.MsҵHf|;g+wqTEUaHzj*oۄȚ"c̯N?lYgFPL øR7d Ajp˿U:#{ [ {*nJʫ_;N8r(Vϑ9e=N$F^'R~} H(*xrCX-$rkĈ< Í(n}cZ M08e<{HN0hB't75aD^=r29@nҗb7Sh.+\|_lrSlIۚ`D) b+uã<)!I'َsZByM̌h)w!-CAW=.a0h7Uy4uTm#YL~3+dGz>rV8PIɚT2JcX_}X}] ReЂ ^,յ3p0e]ѝt蟾i"@;@ ԃID U\iq,${lp}.0u *ѿ`!84 2rYc9h5RXȕ.y[RZ17 XZwXJ  vv5ӱYBLTqWo!%@3"?[^׃0ݮrK;GЂ Rwʬ!TL/DKu :gNd-bn NY|us>4VQΆfPّ609vPF4㐛:2 EDR"eK DZy/@`U[GQ+vr4kM,: \w@Ѵ X,"zQȸËXd*(>+H~EDp/i*7j.ʥ^)ՊXz .J@󇝵3NtCND/54u(5.v,ѱnG@݋kT=$[Zs[{eŜѰ^k 6jV32t97KrD$3Ĝ)T\O:hrO o):1O? #UU#ePL7k̰J1iyBH ?TOp le%cŚkv c87>'U ǔj3 ojfKb}m\PKVr,ww,|Zax;M]Ƣ7/L%ǰ/Xe1bf$rNpUҁCOyZ. `ZvXcRNQDΛ>EkhU`ĵ rAYGALӇ30p2^B+&z R%  'G );ffNS=tZC4σb蹃x -_1vk+}_8Bi"yz P>Dn0ڃD`=4ʡݟ[]O6:zͺx8Nm.6,RsP^Ua (yɥQ6(16H1\𢫎ݛ ҂ S)VilΑB(dRļ?%(œ#JnйׁS+_3ogY ^3H M]OtGR3lŶ#lODVS$(~!|S@by0(rLlu pi׀s>ӘIuVIdg#7`&x{vUglwa|Tva?.xn0i4$Cѻ50BHyCŌ3Qϙsh?i3o2?cJ^*+ԫzDŽnƦUk qKw ־)Ar!^ ``~?Vcha ю{&T_vMOr,IGp  yZ>n]?"މ塯& <;FIў}CRScР^|nQCooS#]:X{Õ\Pzy.Q=QE(\S|Gh ր>㈊gE=Lp2Th^] m0ٺj޺ÝObO'pd£ \[-̰/Hr8XA~Eʣ~9؉Bb= , ]h733\[9Htj=ޑ'4*(_۵s{2+ضQ:zI .^dB<Ͱ\BoT_.3I}3-q.6`gpX()@ `XGøNC;7,t$#u_24uyM (Ԓz0p5.Hb4{6(9NzVL*F~Go NʈL6(Lyl@J ZZYͦ ls/G` 8ڴ> iAm)ut?5xUMoX'?ؘ"N3eF-Cbe M W&$p.r쓺Ia+* FL>irM F9O6f u0 f 1 )T%FD>iF~XojC F#k7l3k,^ ]L#P~z#Y"]$w /~ډԘivT|zנgsadbbFiHܑt5X@W@W%zDIB|]~n03һ}wMI@t=RT'9C%u˼%IBY+7 ˷L7e)]뒭OXP^rh Æ.B稝`[ΒeW&wa%gwA1O>f)ܑV5Mg\q~8 =#@-mox?:%}gZAq= 9u9 W`C%z<7笂Û_\2?ܬ5]iI/b`b51M)P5JfkE?<$ȹ8A^mk,MjDWr,Ddfi l ^[J<2).Jr+jdR! <Ӭ[ u6zeOl< e+/Xt $SB`0e9 #pG9WDUM[`G_}4\b0` ]IV\xd %G|[=`7ܕ7z vAb{ 1up2άe;h |=Vsn#)$$_7֞bj/!W)>3xN5Do uij>jMVRf j& =Qps\6MF^18ڴv ww: rKIci%RRnKoX wň DQNgѓv䪷fLU\}RL)=+V Lw~#u8YDSi ҹZHٮG[3F5/&+A\m7xi&ӬgԸ2Pk-N!5XQ; X'd.)ߞJ#UM= 3X(HVD=HCGH&T "DkGRmY4{>RGc (?2F=b 270u. ;sN' "(;s'Ko|DF[Z©,3V+5 c|2?YDx() N=ohMek.Ԉ'w89=[@NgħbK;>V[T'9ф30h];XB:,{@ӓedXRWw#pEkr8fK};=2_-0gLU/me5f:D{轈VwV3Fv\*hk!$(y[gR])V$I$sb3 xTiI9铘&}m&XmYX$Ôs ZZW"a:PyxDVEߊP",w:dOLYPrϴۄ5kMo60 ^Y'ڣ7.U`Oyt4ASy4溁wPVtj+v I %%P$[{ RD%EÌ& Ikl'ѳsY ^ɉj{-.Sy;J}o]~.ÐD?jD [S5 mK}8K~K,>Q6"{RU,Qګ q5ۨNk`梙HqUDVCi'=`Q?Ethkgu)DU֌v^:Ї1#:]}JV2H&@ QӏE}tt Cj jJc0ظ{'Yw^0GќwӆAYm=R(jLa9% ߜÉS#֒Ah*u1$}"<Sד;?nh .R!*9:3&5֩+#I2BzzVs..vXȿ%&'~ar2$|UsXxAՖ-u4&.[#h@ wP,_0v XUgi+c^l/a|7w3ók3Yăyk!egx7!S:>V{GOӈip/-V1?3ױAPd4XTT: y0.vֺ֨ }E#)0K񪉧+c9oGg_ DT_'N/R:N`3;̔Ȑp x|rf .4$$'r= )Ib̉Ӂ@ G__5. 4,.@awPV!g3 clڽq5mˮ xk9> A-s6'/E]GMdT̡ojdh/@ޭ͡K$9 مWR+|̠-bAc~>Ug972DX&8QBĉ zHP(ƺ|bI\GMH=d-ԗRTB} *~5Mk`٬M.R.s3$NN/tBb|z:xΠsCxQBe7a>R*ʇHᲖ~ c *P/ͨ}䳬.A} <MXU.4Xu`-ގ8%V, yܞ=uכY V$Ԛ{PB\MF{|j#}Vo&_pTda>Eziˣd\3pX)k Hs0.2YG n[֐܈؝%:$lN̫$P_h S5,U Y, 6tx^b͟ Yhl1lB# r" T+S|4.eL}Nʨqi m[`Dnu̯6*ϷbXNIDETe * rc!Dt24蝃0:G˼2$&PpN~!+"O '@^WH6.㕜s,0x(d|0>wK1Qٜk֚W2q|Y8õwlry 2x5!')(*b{"+$' hj}WbI;LWXU9ydE'Xza<@\7§C_jU{( M.C83C)&Hg{VTw; HpZF*S* /UWۇ8?:DKfe:XA[г<Dzto|[ʑ˓ޖa^nt[`59Hd{DmMWI6jY뚕D+jYvm(J9r߬{b/(h""8lz@1H+RI-\wi1#t"^MGaKuCWgۼ0fYM6]kNC .OlXqNTgǘ i;I"}#SPKJʂtagB1r]%k5|oM# $M[Pkb;+^ o@+mM`J.zqـh&jq]+5xo2; fx/|+a0XWv*3[$o"QDp~ypu̟űFx\R>prHXil&y,ŵH3FB7`@NF9Ȱ*c]ttþpR( <$kkjL5\C+~% ڔ"hM hTx?HmZz'LBS|9Y7FttyNLn\W\(rx"ƚ&֜lpޒxI2!o{_EWm@M>{azpNz(!dw[ n4BZ,7Sꭖy2C%[J;ɔ<Wئ5 C߳3k d!16* OV~\y.1ip.i Fѝƹ5x]X./ . J ގϦjX tThχ`fd)?yc"&Y ?Z@v!M&J7M~/&zKs Sў4,Hc;*J bL$c+_(;H8^#ȃ֐<,FzpR#8T8NJ +R7*T/ A"QE].S"?T&g&9VJ ^=gPlLvO-}i^i6jP9~9?Ǚ[#6l Ȳ8x0^\cmTB m2 _ "29-o~7o,[R`,25eQbM?c6餰#B/WondQ;vu686rC>g{Bs甑RC:ͤőP^#qK!(4t~_z;Z IWu%ȜP;&JpHVܒz>doki{,F1q +2v3L/+l‰ԊS2{dZGoQZECyRMn/͇4f[UY=&n*p2/q0F͹G^֕}85qM ޺wk-CXsRTtQybgDyo) `e{~kə?I 9+R25+Y%qT"~vg2'3Uҡo~b71ܧyǗa?bA\膟Y[rLJƎmRhC+%ie'a/M{X b,=yGl0:#BE>~s fGI6#|2==Dyy\Yb>,oĚ&(gzbUHYxo%FA ӸxmY `lN"&DNߔ(d$Ԓ~EdX=ޅ˘14frVI_GM+w6WQ2g-o|R.Otꕏ5 cGy< * P8v{r-4j?T;uBBϤϹ WD-MٰF7MU%$5 .}8ۨY0)dvpLoZ=V!ӴpzlʨT?ǵp#@ p[QRY֙n$pnvQV@ 0\08q_vHQAk>G7`I{4ReZ?g`HjP0JnBOj'l'F>FpFEdrr^鶅'WCj;/jubmer1l5y>zmyȁl֯ , !l6CX3DGgdnƭTSşTw6 j^{wt ^^ҋxO UT=ۋag)8L-sb#xʬbx̬NSAtRW;[YRu;o}_A. Ƭp3M% $zvR>W|mV6|{!IPOF .,Q )|N⥛i3U?,Y3y%L Y;Eiri&WO/CEk_sv}lsK z(6Xu%PCK9ȉ1 õsF0yttfrhe щ'hL#%2 ;DN GsNpQ~e`˧/T;$_;oĝwIlO-͂YB&q^v㰱vZٷGL1}m^ üj6GR56#d8w- .6`ܾ05uw/ɚ>*ndRФ9!?땳 2PLr<6^WaCw":CTgPE*C-"$%ۮ8/gM&Tiv|ڠbYa(W S4Tcdcf0v-~oMp ;CNo3ߧOiAMkDfbc;8Z(liw-le% ݇kz[h=YsXրq qbﭓO4z0JŠ ̱7P6za0|;ܮQcnȀ "Ҫ 2>].<371+s'-ΌPj`1H?* V +Y+?:\/rZ?炖%JF;cuY+OMR S-.^S܀14ke]bN@`5Nt7݀{}/w L#+S+Dv` 5Y5n&Skݍφ<\I7޼0v)U`M- bth)mM {/!:p# ^Z[˘mb(% _ KǣB":vކm:ghK='!gIwva|`䳧Og C|NM(Q+Uj7eSXt]~%rCS2|#{gom#1_q"F^eݠFͨNuS W[vCE_VEEwӅYUX{VqX+b΅-t'_6?&'GwJ(bBlc Xw_õQ;6ѯ[\m ۉ>S%{DU̿Kxl>LmʲY \^Q؏ч,^F<钧Cd'>_OrZu$VGRq.\C &*r^ޫ8B֜W$ȁڧd/6.p5U:]->)ư˭'퍺-Wi՝o&<2 z\X+lh~hۖρv j?xϐa]^;֞-Pt͹'y娀lA|oۨUK WC짅=ÙAX:=k8&>e)dxDA{R"8EF-b%y"ý3s@|4{m W:f@ H"r劀h0|qN3'_eQ2l՟* Rk+ \ |R W,; [[8mֳ J!yǽɄ`OYAu폿.BC.^0ehBz>SJ:d %Y/wӍ]z{-@ .\7--Vp I_u)W4`>>^7A8w"s\af1Wc_ԛ)~)TeN ˌ vДJ u`~lQgi%.McIKpj#.JJm"{N?E 9.#Ϟ)fcsٷ^Ĵ,gN@#QLMU'{xf.aD;J$|[( 5d6BnZHB?L$Uo3kԾq%uac_:\ ~|!QWmp^ |0 Cq^0;!*oIz_ބZ1 #!wѥ 1sr/<NN|;r"4 7k +WÞEWze.H&|rMrD?0z҅ X_N^)[J#]*Ǵty|D87l빧,1] O#&>(ߟ3B8_ o[Za/0S2"3qC۞ߘ0 L;v]wB'){1fa%U?e%C-C LO7sH%n!N bIS`WQ2T5H*`R~6ŽcT=m$.N9*zHԄ°TzP5>ƺoaZ#1E2R-hoJhs3 ^e/ #~++uޣe~R%}#b_{ѯ3Gz6:άFr4~_2i t%0DY!:7@`ZT}Us&C#uauGS+plEcs1zz?S8U~N9 ۆ'q'_ Gr*I;{:'5;tzjIHs,\VqB-}`)㩆WНEpae1zRS)S`ZUNï1J?kifqrs\{:~ݢ%ΒbqvzsC3w:cNnYc))cGLTqZX EF ՗K.ij 'aELtgޞI%qU]$gEk!Ey8+[Dͪ^5elܫ05Ea}Vu$2 )7~N7ʎsrO i(eGZY"F+CgWf/9@fR#E6Źs-.DpNq؛ڠmGM OybkYw?<<3\K.-faPl#/a->Bh~ĝv'#D0YZBIwbϙO\ruIKQ(]b:BW]U^FE^񇜶FyM9I튻๗e#q<윿 H{e>(͊Ciņ#02u[(ZN=3aU" Am y6;W=*x8rʟsK9ԭ*UW@$ tQNK#XѢX:(BI*pPeaZ{ZrBPʥ\>+8$oho H2h3BbBfXtOI|^7=ɂTHم9 pҚ<4ς"_CdʇhAY]g6%7OٴLؼo2)m(v~yyE!IQ@צ )q/.^CJ,[Nsʬ)VKB֜LԠpPzw(gjPeBq iK&<%N|=iqd;||pɴalJ d}ʪYhӵM7hz7nVooj`eWY2FeіrL0ݺG',OȴV/SB!/)*QCo%k@+c34WpCBbytpԘU`dYj\j& C|$sSh~ y|3Qv!X}>@4 `Hp$MG ;-A_韉|9e:Jb O l"YG9AEz_NȂźA'Sq@֕QM[ŗm&Eg50i=%mzY1!Gnh p5S&C#9ϧ̄t+j 8KO8B 8(~ֽwkrk)ʢxv`jM45;`?ke͙ ՒSN\@U YҷM)0x ڬ@t^ML=y#]慫wք/0v`}FSG< fAX۱1 CFb\M 8Gxmpo;?  =Ǧw'dC9C:oP\JGE B `v=Gr=X9~AHHկ@^\?_mJa;H. {DQ%UM:Ȓ [sȚ0#N.%[ Sj ?ERMGS!iMxeӗSy#jQMxAʝ|`S*U%#R l$ܶҁ ݭ: `XyA.ɵ]ٱU)j+NjNaxN7w盘QH[*呹LbU)PƟk6}h'~U8 dD}aSP"{80/ :oIr\J^َ̥%-M47:xL[&.Qd8"q׀ۦF,!PHe9ˬwV!`D*+Q)3;ռt_09P+?L<@۵C@`F.gyAЦ|ylv31OYc80ZchwAwz܄ܶP<<]˵ro1C+!Ɲr{8ͲQud;A^9D7?j)Kd+ X!K˃yҍ@C$'.)elo^͗Eqc'y˖TTXn 63XmFBX}7WfF脺p^u8h|BူcM1>C‡4M ODk QoIc\2 i(JY4"d11E l 4BPY!%܅(vPvz|u.w;W;sCJr?Ed !-!AuHağsy %RE 0 ^kY̎CTM1Kq!Rr4$*K´5?W4jR7">L#D䰁)Xq ׃L`\V9;+#GFM&s,i6X^ҁru/^8֦ j?Y&4T=KQV֔W OsPIDL3:!{?#]q4_H'1}:~]ZF(^q1V2Q:[-#{awv܏! NI5ʕ% {|Ij7YaWɅȻ.勞p#D_|(دBu2;2DD.FYe_x톘m-Anwn?I>1>dиeк2xߵy/ k/aɡ M|\UQ] H8@OvwByS:WQ fo9\% xX%>ZRPR h۴Tژ=ˣZl->I^B,Ojnu kE1H;gk:Q 0]g$/_Υ\3肣RqЙBjzs6 9!l$gZvwJfBҠ+_Ox*@ѯwSݍ_#mʜH6"<l/͏lVoR_QNV3_m4QigE-mՁAN!kX) 9l܍ `T4UBU9\X+==sKYځ$GT;=诊|[ ƹ_b];ma[jG7)L<zK{O"O I捀V 4ǐ՘`̱.}73C\FP;m=yw'R1>yg4s1A3F0Xv{o7rt;^$yO}k,WEف蠜x0;,_+cf@׿^eh=m:OR :՟~ѿS{;m&7^bRvf73W^.{i]yԤ)_9o}2UTjvLTv~\#8 ֙wƳ}'lAHERqɿb:oLf"^ n{.:B!#3tedQK΋kW~E4xx$ B |+; CiiiiA2ERCfiK>3jːݒ|8pfm0I/n'l\-ԉ=l'b}+vfcNyPqTGg$"YPǛS80=2\AAd$»T74; :L-*G+l1 ծ1F[Agë?agl[XŦV4A. Q~&fRRy&Uzǩ]ڀB,ma\(Eh TM(J?rr#喬~r *xw{%4p2[ TQ Q6B:bmE-UFV}4R_ۨn1$}Y40݄A nH. ZFJ@xw`d\DTggVC^Ṵ$'wv>M1pPJr?@ M !I( ^1șATO=ҷ2B5g#\v+kԝ]G.$K׌IC{ݔ/bX]ؓFʎ,$u 5 zh:z;<&tYC:&ۃ+٧hڶ.GYFr͇S噒x;~> ޓ` QŦ<:4Mzt^-uZC _5=V4 y;6׍~Ҋ=y 3 4PSGD%aX/uHK4|*F89AEdshSqԗB1mIѢK;uYk^by* Z[r2s/ qn$#yI>>7 r0#`S&wT%5dTeKeK |zyĄ99~bs"u{C]3C lw UsVk]  [=Gk׋T&<~a"Xr2ELFW_m#le'- &ԀnB&!QI!bg}[YzK<3<-˧1((" r4wOPԇf<}1JlڴM;N`v9OIsjn>5 0+#́(WU&&TsP `=~C"}1#FL@NN9 ǖ~)=(nkae-5`CdR aWEY7Os%[FA#u KEM&ܮͻzsJnVgvM;t"Iڒ L0E8XZfE\?ʏE/w/:LnBzG^6sh06 ot 1wni+DtW6&>TGye o7o ʾ~G[ԒBKN6t\sO:}^u\ r"uX؆Txg||1q YMf9 O/A쮅@?2tE[!]sz-G(?ŸPRҏ;qƱ,>[)<>@Bڔ)w4L401:TUwP ^W ziŜt~`; Ù띘$ )a}ѻ$~aMX<1# En'jo=\#‰41sFS$o&.sZ3Xh 70ҏHAz2{q>\ /sfuKdsm3XhGT:XOTn|He]sXz~[\7?F<;^(pa֊yo!a%p~'0(=Ybq 0z[iS Qwi 枲c5zdG\D>*Rƞtv5@/O%?WsH"\#5Zr 4?*61OՉ &:řDi^Jv`<o*դN1Ak_a"Z,~Kη+X2MzgJ*́픞Ap'u3:\se?~| 'Gj+M#P[䆉њ K>>?FYؙE3V`Fd-@NDsD7qBed,ĵt5a@[+wIWf1:"#')5E\C4s+]X]9̣c*_Y*b7|&W]kWy@F/ Z$,{S mk~I_Yq8S I-sAb{5+ Gh%ZsIaFӛ A/ܻK"zr$dݨN HbG۽27.ޜm{V?J D+-~ƩT0f}v@Y'J$=Ŭ"G'iSa6l@qhRt봟iI&G*!l%J~wy9X'J@UU03uk'.l]~N}u,7@[:̚MX_2,)3]2kn[%ۨs~^o/8KQ@RZ>s(-tꝿB<X Y ݄?YG5bЍ[*VF]~NmAɗٟȔec.* I dE:A-[}@-ɇ|<pk^a zbNx)G>`<1Dȷ-ZCTvje HHTSR/ߐ4lWKۊ>Q:n>WloZxfUnw%`O|FOlvkG:|om\ezFM dV;6>~M"*t8V}=2n&/obroޅ6A'ً$)ǏzPD@Z \cMb׀|_@{fZ.BOi+Kh낰<8 <4rUaNS`୎0(ӽi t^uOuԯ`1`3[aQft α/uimfP5A_OɬGo!Ch=R|&܆+?B=qw (~r3s'i.Xi.cUl*h!ZX{@M2詀{7kDy] n'`)8F*He"krp"i!caJ!ls1IvP5O^ pʟ 7,ՍXDQbqe)IǨ$pr֫ެ<>$}0葃i=#Q;?+dXTE%'%ч*[ W#xՁi`P WpFt6h&*o }d.ZwG;ڳ z"DzS{{{PKO_rdpXm:z1;_aNjj>z,{|7C3,k!پn\v89?V`Qz?CB)v̀\ 8-ĕߏ`7…n2sEhS"]% 0'XL $%}W5=p;qv!):h];p;7 !j#f]aZe wO_T9,$YP6nF7m\?U WnH9r$Hb;Š-b'$M.+س ֦2$\rN#LknK %68v-ePy/1_"J]|*I80DZ|C?aQg#v-=Eɢ-,+anO}}t2RC,:?>P0LB0Vh|H(t,1Lͥ3ȲECӎ$O_Ii »JXP7t5- ,uԧ(g7\SE2>tV~XO2(sR=?X@@uS$&rXtnYB RUgei[Scv*IKL"=!jL(N |&0m/[TY?35PJH8kSgypQ~g)@Nɢ:;.VDKl å82Uoo#z)I]K]HFPD3S<]ɕ\ox|H}Z~d6dO!T_ނY|U&c=pR눓G0fb"bz{J i[ȝ`-qd*~`0k].Z#E=SyW#N*s* vL85 S"S.x߀ )V-LJ%1{ m]MٓW%Gl\Z2[d&q-g&NѪ/z^r_O_,8'  7 X^q*JĿD۩_i7mlW Yq%h'Z9S1 1&4a4o+8Z^S %~hij оc 5ζQ+q1Gc)!ܘO C}ۑUw2 z~\[`P"#RhL!mM6 BQC]ݴ: CEto!hV Ivz->ebckM=`M*YCn` /۸busph'Vȯ =KmA uRy4"+xd5@/Z8<:H -Py[X1Ouc.^L aA&;|%ZNݖR?o# /*14 qg 7 Ovc -:ER F{{RakXH|~76f=])\5^+=JDAmk/M8AN3fX]Az\ĕb{ވ=vũ͇Aەr@,+  dr$BTF*jѮ~ dY~mYjs0I{tBMDbXz:9p†WsmKg)}%adxK? OS@ܓq,k펌lM^uC6h 0D똀<*h݂;ӎPe Uf|F兑g-5[w\hbJ4o%0z]eEu}worycIqdWNm뱼t]8RPDs 7[&y 2 14[Tnֺm AТvڀۚ^cϼhmʂ/Mwl;K![7~))1Rv6ZF+:tr]Ϝ ށPJ ^a /oⷕQqkQ6ܲah%#/zI^nªH8‰Y9.u"f0ÅeVAkw8RC?2H럋ճ|eo,17&`6䤒׼!1 vDx㪅ԡẾVUVMdX\n/T%j2 F2Dݛ.$mg9ʨ|;pgAQVyYnn}n,MF%ʑ^U_%vb(MHRq;dؾ̓1쾍 A/(ŏ1#j6Qb 8\;.d9BbD>Q"?~VC}y R7q U~2{ެ=_ ¿gT}iŚ.l)]{ ?kV!r۟duYP3G ֊U}wٴ_%a4[FO}縄P0 d χa6C(pzs¥, ۑg |}(މ*zb]z=p]7pNxZarWuJ@ڠ'xZnrNX$7*Ywoa#?~L5^kz{1]G-,{rϞ܊򫊔 Ef?e ˾iV"l{F4}{Wא ͻ 9aW87կ\\7h3`5lp1U74oZ%.Śfg1 ùg.GBQbSm(|~+$R(_1o^8L w2#~ǥi®I'J/S.dnKZ; DՒpmD8/"*s / M+xUVlB#8o"u&g>m㙦zT=NX9{j>`Zk!ViM'W15?Ja0T뷕61tOyG෿B Q CLw%7< n[˩P=x<" %s[ӻT^!'Jԋ@;u%ܯ.ycnȶ5 ,:MzR=qSFOM{K}ntA/x`S5O.s4dsw󍩚vjyF Ϋ l_ `(Pt:vp ? ;&@Wq5 ̊?B#ղyG6[inB=kno(e IǣmVPI@wұ We,i#,̐J\ rCdgk$1/B"ozitcN6[q "K -72K݊={{,%c_ !gs7MF!>Dz2p b5XK[NO|M̫@}+B˰ȤBP\=V_FVAА2DvmՏGta~ 2&D[Ċe/wDp%9*=U-S)pab?,6(@\Xz_xS)h}7@Z< v/_\^ EWpv^#¡R  PG fDb{LJ[{R/u|›j-`ώ@pXe$n=0$ v|˅>L+2p cq+M H귲J1c~>D9.- cя>z Ǜص;!5n5i+*#q0ymT%_LOy,r|W2K"88 /୮_a₅*O:KUTҥEVkp &/}>wy9OaPP[/Psu+#Ť$f y7| {>r$W]yL;!{q? XIU6q,ya4c$iֺ -ЗϤ (u 8kR(h荕G+$ۮ %uL`#e9~pALuom-;/!0}xG5^()SLǐPqSsԎr& .j.&-zW,8k͠h݅*:>m:}}cm}! 894Ib]B.3JEy^PY9HE>dng|{200i1L3`)~4I5joZ6~=frZQX`0!pRA>*bbzK%~xr9U,ZN ]v3L/0xӏgu⋙Qʹ_8λ,Qf1šBC؋nPW|/\h3r͖-sG{HKE@))%7ߢeU(HZP#9Ҵ)$bmߡx,_J({䅽AM5FĥTDTioŀwndM}}3ܞn̿*+p<:]dQ%Fӣ'l" R`%ѽn?zazǷ1a XGlîCqŹ `Q9AXpes>>oP 0xlµTia]}co^ -FzE6$͈uOf ˉD ״ŠZg/= [醎¸P ӂJβ@]')㙩~ERAuj~A7W~mȨoU])\A(I%3'j4w Gߓi7<͈Pn%/~0Yy#|,_$xm?AG'c>L}[?D~A|^u:str&K jPZMڻZR8P(c2>NCBZKn^zXAC4%N$Z$YP3( KD 4&蚳[uIre! t@/ nz $6oa9\g eNC\(>rfG"c=cR8UF9,тTL#W.Di/lTEQ};_\@h;XdWtGGVWc.ϗ1Gj_WSӚs0akJJ$2iCh @Mz1ڡ0.??>Wyc Uh)&* DX|Z1N2ϝu|B=St h{ E3XjVB z@{e}gDǒM mع`?\]Pshs1)組-!$8:E(aD\UTg Kf'NI4Noq~%ѯBmVqMwajo1܈b# t.t.($)(ETvܞ"i+;[,z?2X*\jיp7^_SQpbUxq15\V"dNn }8[!߀#`!dQBhu+0M7mśYW6@z;&͙j#,:ijhќ>߅rܖF uHH:8dC~3bU{ tC/N FqXNu pEJYq@3/p,4w&:o}?M;:1f>< c| V BtZ.h@#qAdvTrDdڬ>McBzVIVirp2k{]# H[1X[ m޵y>SzHC("x=aCwք2P$#MNoPe"r0]@l i 'pd L TpKuǭ, ֎4zq,S:1s;Q^cJ))K\Gځ޼\& aLm^ci`)ss,0 i?5%sDN LJZl ?ILJuƵB?hcc=7C;i52K-#V'r㯭Y=x-@ 0!k%> `,̂ J~-rxV2U贌(XuCF;9X);O'iM1P]_oR<8&uqmY@\T$g*1ߟozrۡV4[+ܒA9ꪊ^oZrFw;cq'>M!Rްͦ U[,gE 9¶Uy<~bؒv;M צ1NiT%RVg:[_o9لpU3,lAک]Vx% -.[fr\H(ˇ)va$R옃N[vMqq7qq\?UeCi` Kq1n$|nvE.MW , 3Z1 V S6AFɎ/aCp{HP ' KXVQUo?7թCDn>/K_Ul\WX t6 JjяlAluc ci)|>1ӝtŔǓs`n=…RY!"@*?,:Ǒ ]ۮcS V"DY`ۨ(kHKpy,?6W:H}=iw-2tZfY󇂞V!lF0IFazan'kFNBΝ= =h #~N%CM=vlW#4fa߱z =̦5=[a_8鲞?CJ3~VتWk ZHh7 ~Aί^@imrɥ2w-3EItzŮ؝qF1~۴X8oQ=dS`hSQO&DxLp4$]=5d.|2lԊY zhAIS]w/~HΩ1*={k)Vpd9lxkPĨvfx{dhu~J*㘃["jGh&a]\FR+LV4oFs N5{#v˟E/g|;d)0o81Nk s֜޽Kh BL̸2iׇLt뢧&gQpڛ h'vʊ hZÉj`(#+lpeP.HŔvun0QGJb2??Ugֿ2)x{"$0.`(X}25!9ߦ - Hj˻4s,Wmʷԓ-1ڌF܎s[?I2X%9"F,JJ/`f]n~ub/s/A_aG4 qC2P̏2>g%OѳSg{ccHc!w ,O#Thu^8J TofRE$Th:k&UaiYJĚ.F^pG\uk uh.y(t_l݀)ZSwCr *rS8$1Wo6 iSaHEx4)s;Y(7ʫ{s)e!i> qs[*`d}@mV,XjnB3-j <: 4^đ"ɣZUaRv#67 S@|)E )Fmi@ ǥ*t:WK\h;y4rZ,9dؾ(|Ȣo C}`31nj>V@gvc(Mt eR;ljL11o Q`EQ+ zT]Ci(/k?&/9f>>T[iU=D~1CkۀΆEKf?o}p3o0('bI@dwc&%Tȗ<ѿB/Q[:;B: SDoB'i7pQ.IСiSDoV6Ҍ~_1&gu ꄍ@c7\kq >Δ c ~E$]QY㏂nT11dpB=eAPH[]PHld c ,}; -jx'!ɤ6FP'[Zh6C:-H ;k`N7~ن~ص);klg;龑X9PU٩ۗ3¿{,W`w*DOxP骞 t+=l_B~Ċf5#^)wYvWxGE <7L4'd~Sc x0l0ڌ»s][ic%RY5uPOe@ gxs1Hd*@(<7L*-d&Ucz4hQ&hV`Aet'i&ܜ*hp`qay 񐄸f &$,υۅPOD؂(ojJC-%ξ>< jm*#fy30HZ>mH8dUnj>Rя˧AQ-ācW%ip1s*wzH C9 d)nϦEK #_DFv pS%tdx(4?h%pcq:&ق GG{,xw3}zy+s؟Iْ8ő!/[Ǿ]Kq9 0zc={.fyn)r=z蹴n EԽgw-1|]VZg$ei'cCsőOX(Fق$GVD]X!l Lq/l `q L|Qk0͍>HΖ!˦3<} Ŧ-P߄nu_`O%F(h4K]MWc- \/B/1}*qQtjsݚ%I˞}BjE8^~_( .waVS (ӗ5•D4X|v۰e(dA- ps6&#aͬ~݊VOHȑ-Wj\NLIoSԚmԜAL<ˁX1~ "IũRppCtyP):52laiɖ7v/)}z6 GkIUAhcN|gK-.O’c' .V:! ޞ4aso+S 7Kk=.$оm"KTʮfxXSM6m9C :J xh.<^xGx)uZ7 bTf- ތHL}'pg vb H;_h1v^1 hNQ ]Is2ͽAc/hMogݎ;k5R.qޖV585 lC+ |c'GbRI[ .{-!l )RIJxOB҄ oi<͓1 aM;5҅HMUCogB8%PKDmϑ(r}vOWoWKҌ78j֎'npt=˸'|{i \8txgWJZCψ;.4UL!xm-/cZ]Pg yN\_ݥ\~ w`J ӢU 7S5p#( kDPMP艚7Pf?+ 񾦤ѲEC#ƫ lXxԲ/i`Sz1_hFzCqMJ N hQ魃|5Id';7PSHZ,jJn`Z6Dof2F?í`D>xXU8:h[P`B`i]FkwgbY&m}W|$nh'z˄mOW]D*L\pW[ZesgsK C1jbsGٷg "U,Ww1"+ֵVH[HSLwz^ݘ-ʹNF3ZCGuߠ(J&2X6~uyঈl>|IK?ďN`h-`r9@z&@XbM1ε~φ ױL[ ae rad?J+?!w:Q CspY^>'\ ~yQ[-cDT8zccqDp-FŢkMilb:FiWvet2t-pqgadQ҄<`&9D*jK.B{2nNh!p. ;,V=J<栍8ljyl(`u;"&Uؿx= H* *#*X-7~+3pT}8TkI|z}#N?-63 W}fB-$=jrx/2, bť&j%}lh1$)<;/!qg}S挑G7ov";_#~~qhId1ޢƍn4='91wғ $.1Xcn~%EVS().xź\ޭm5NB3_ mG*,9~|e$U"z &xlve (tOc%*ҊclbM,nED k&nDž$N6.S]GFV<6D0iab0`ͯ%c:Xrl++7ϒVT-o>/[|>04hx1%θ X{AܲNCI=gޢySs:H k w |dI [ >te \~}_x48>R9-5ϭL" ]etEͺC*s HƾC4=%Il($@ G*[BE L? + iK9n82|Bx7;+*2`a9&'|$ܺެ.UiOQ7 |n2#VM$X{LA`g\a2d^ GU!fR-aul$~3*\$]:RE|QF[qo-\ νC97/Y% mVAG#MG2| iH#v-WTPebG8o.)CҿmpY6?T~)'-qE/\ěN&,"2+.uE؇zY.i0'-H?Co(O َqNǠW5FJw8y$SNL[j#HP)Ψ\-PޯPtxKv 4D,OoYV^ 2 B?SMx"rVɗ/_S`}V{m '+"IKB:_֟,-9~XK ?`dALb #V[fqH,(dZ½+dAu?$ \xw#c\Sgy{.}gēibܛaɧ|V'1%>櫩϶[ǜEN vNOS~$O]Qlp$;V˪`bLgƑLΰfPgJʆ$n;215MqD 2%1Ѩ-ט(1 rGu@Wо% 7gM \8nm',k>rk`gHiEE&FȫN)gi-ǁQV.oFd{ l.!B*"C6M70*DxS6IXs":fj(@irۨ,ku[r2Z3g /20FOu~Rԋ  t|,(NNw^^j)5 )xc !wpAP÷MwpxJ!O UX8#Yu\~Z*Fao= TנMrAߋ)XX(q|o Flx_~ePg [,}V wq5릯QL{pXQ,k*b`}G:R,oUo( inӫHtzyZf$(urk3- ĵ-/F֋_Kiw:2q2@+uhiH̏XAR4K͞،sM%22+2'bW_.j{GF2M2̶$-$9̅QLꑆ+^(K1FIv,Rh4Kamµ#1n)ꦬ@c寴u{nVN_ )kRJ2>PM|;Q(d1u9;t|GֻV v3ACzNsNA2n?=r,k`Wi^E׀HPG0.Y.,ǀaǷurW1OY/L.wZ7n_::eUE}9Vi )X- bNO>5cb k's@ը ԭj՝V{|u53aX.U932k#Rc$Evs_xQ\eQ qpIYe vcGُy B];,kAlFqۋbEQlҜ2>bkRfݍ㋪9%cIq ?1!=_e[@跭hXz'5Hǻ[!&Vc~B3l5/E.r75'qelܔ3(Axtqȶof5BwH| |M /S&z;|붜h[kՄBP{+7[.>↎ m&gɣ>?gnl=Q)3wg,xP-Pemz|ˉ #䊄0,Zz짗&h2_ b3W3JYR<9ǀp 4דGNbh?-BY"6YWy$/ơxRzh< :Npƌ˕hEϘ-/:o׉86D7g0F~zCLdIdJ b٘[n!c}4 -54H4N9UFlcYP֎:% -%`Xޠx!.0IAtw\dP0JWPa<0yKm5lFAe -|(J*Le靻eeLЅh[|owoozHWW ?6lPޚ+/KRV6T>j(";W~ܣM`` ZmdppDmix". A?q+dWbu ! {>K$ $Ȳ@Rk=_iCNv^!aՙqnuY"-e8yp]t 8Nles2H@ ,ё3m9FvL {2N?^,3 >{L)nR6Qknjc*B|m>eo& nEl,1.0]Xyt@3oy4`  8ݟ)ÜhJ쓘4y::@.hCFh KK/2_} C.a.j҉Z@9?-q&)yrB ^0ٶm [x;VᶬlR=`E2v' _?$@.q-$rKM\אPV繎FBrl yis&+yVEe\U4ق|!#?"zCEun®xw6>h>[vGpӐ3LI?kTy$P, ky#MT-zmt68IñaU6r+_nlcXc!Dh g*1dzU}foLӮ{SCQ* q9[7R _1 cnv>-ò)PU:x4VWP]njBfRL0uE@baIZ(l޾ ā65tpWAO}c ع@;E6/:i8(NKaQ r;WŸKGP-}\*տg$ {h)2ĚCPtBl$"Fg_Cr*JrjR5?UGk˱L\4m:zmD۹P7TKH" N3eYOץ0 eDȷ΅UEz3FDTsCcy7Q'8E Il*feQOdNH\aHAnCE/vIr L7>/-Q֩1$MT%z;ӳE'/?i|u ZV0IB8Lk&TS' j8 f~X7jT2Gk m` LJTD_ƺEyBw$KY"yq >17FbBwaMGDrm{~at+c|48*؈!})?55Va*s_wBl- dEW'4!MBcbkhy7: k@h {0]s~au&0 \dn yJnO{.Vfdf\-En@-19"gI]U穸"VUȧ^rvڿU$JxS>\ʏzGL7|.= d8񯳿~Yu)OjzlvO)-r3Ȣ ~vL[bñsz%a1/-lN_ '7mcy`GDil\{bdYuEsQ/eٰ:@wV 4gqN[fiO XI h%[K/1e_ ]. ,&`-L-rUA9O㾲4*9JHNبJM$=,|Taeׯm`z=Uj({#ȅ3&Kjv(y"Eb-i(A1qM?57 >kɃ9lzt :qzsB2,63eyc t7 ] I.р/M썴4pmhʉJ9 g;|o`?1mRf RhU޸-J-B;[))L9Xr`bODqi4z3CIt* {ϣq״ \ߕ@y@fA3 r&r7@\:è2eXT'/ %Б!y<v)u:UC /L oPtK^rG[`;ǰkl z_P,̎LΥ~e=k嶦CVoNWI;Rkדr- !̋KSnM($m3BŦNYYnp;zfG_? gj|a=pyɪL^IAq Ffɘ]Y)msehDt3_>7|'- èSK?YoAH>8ZШ/g:IO1ݭew8 !}8㊌k/8TOacΡ^c̳ pPqPu!GysHBO0?޵Y5P"{dwakK*;.x]z󿕘':r53:1yEy8}Zl6l!4nIf([pjKc7Dz#PCu*cƍ(,hJbz]%D7zņ:A5eJ\ע_H1O?[;+Q&E]M!GihDEnމTxKz"(Ɉ#4(Pe}'瀡XNΚY>Ap˳eASkر$žl#Wk"f*N>8 Ӎ#nMb>.$.1AT'Dj(T3O_{a}rQm#Jn M3ƹ<2ft:>=d$i0Oú3/ΠmP*͡ @ "JiigeL"%dW-DHuc`bjڶѽsz PF4@r95anKjy1t+¥n&PM0E'-rsf(F6Rg7Ub.q)uݠDS1'0e;VK4kEguFD󶐙^V_ԗ 1 P gn?P1"xjLNHQ [r_Sb;`71:]{h+Lif:CO$X]  (x ~IOcij)v5~e~l 2qSx[<Hkn}4zB521rqKu'+^Haӫ)u1!ׯ #IkbR t S5QȳKFuo`]X is ]dgD\46R2gce1Ւ*b Rz]M9_G:#q&{PoZ &qI &*9CڱUF@Sy4$Qμޢ CqHpHO vuoIaL*xFs|'-t,Ӽ:VLBp -vhL i 2JvS1d5I'>o"شYzh?ށ:8B啺)t/Os羸ٳuLJ"<ñmۀE 1\\(.␠EG|-qi P(mN^6ֱm4ߵف_ Ez * lˇ2zu_i'abkYM UD̗=iW,ۣ]7xX!Qz6ٗ+fiMb+ [x &^[= ox?l8|C3ec6߻Q܂ 2#9̣TWM ΁s5_HpE2LNPTN<!r]~,=۰½9b Ʊ@ɎIO0Li1*CKgJFC+\ոIyFd4UT34pyg4cBx%o-WA ~'2^V>Ft*Xek=C:@TqkoJR 79as{DfE`P"7C_$/J;:qχ8TB:XqOv@Z <zѵ;n Cn\}vL> q\~ /lsyVp2n|D:6 w8AB#K @m`_Β")-Oiڥ9wolf~8i9܉B i*(JA*N}86@*h е1ڭl/NlW#LMy+Y|HnRh 1g.(ͱ"#(f(7i&T wqOo˘vZ&.Tk`^*|.+J8p"cq~Ĝru }Kum%:vghY볬I@ϕBMe(,Jo=-RGD(&[E zsDkfhzQS/5*[41 |QZm- + !H^j|@:ngL_j(Bڛd$X3ORcdc4[{OyiK>i8hdGYus69 36V툢=2<:/~84u3QGMljxEKTjf5'IׇW{sb*}ũT o y^d^YǪX#^)j1b/?>\I/c mcr(I 6,aBr ]e)PRD.1VeG̓V%^'!_k-:20Zʾ+$f懵ƖLvCTCse4AqL JVV$f^/'Wpڤa*[<%SJ5g2֎ˍҺt$J $oH'`gaw4)M?16v9qErי9iPRȾLMg><@ԏS#R?=p9]DY~v=ܕxt>u1O9/m1SȼudI "vL6mEDL?y_0gu8~ i٘Uƀ+8Bl;OBwH˚ꢉz0= S RpiCr#j%%rzGI@?fUlVܜOY hfwy-ndӀ Ya 5JG!Ev8hO[U瑾R^aAu&Ok9vOu{V+) dZPn4'$ kvÞAXʜ:{QH7/"#`|XQb%t&l(Tq,:uidޮ۷m&F2-#E^H;ZS<m)F3g J%n-#3z q7qkL"*=D'[x=.dR&2=BP鍘 ] X`|gtfWxzU"fqYaű$>Gh٠p>) apܒx)WX5r{a*tZg`ӫ2c0śx6_r`D1F#.r:/BqKOĦ dr9NA,d VXOH#կ1O!e`1\!`u2M;NI~W:} 47ME _I_kkl'b%+A3)T1a5$` PY/@TB-mxӕB-.}0NHN1`~4|r1d u='Hk'V')sb2D]u|1kRtiZl!w[(j]Ɲ3ţm$&"_iZ4ѭZ _^J^^BE>yθ-dveOVȫmD?"Q-rZ#Q~9ˉߒ~7!|+O(Vj7 0k,P78 TkK^)jsob࢔k('*nn3u$t& jqzf\iL>We h]$~Grsh.yLHE ZU#]$>FX')%}2At?}Mev,$0gsj:a*]AU\-Jvj{# ҷR@ׄBeG9CG{IEI_\p{{,o%ϸ6PR]mx9U m_CS \<ʜcuO033t74[Eq $:_j;lś9eZ.) "4 V*eP8:)5׆QZC+wb:̷ +fί5)S* Z@^6@?fh*`&TvXsThڅh7J<kgQx#+9 R?Γ=Tƽ;-3U 0o(tTZUmg\':_vwZD XrcDy~~Q鋫vOƺ<P!|XdOBX.d'Z)Tc^? Bե6S~wEg]Ѷ^rD{Ѣ?x: 9GoXRY_ 2aWHIč=A'#tœ&yϱ<ڌSwpDCtĘ6UWKnp6WT•9zB+]@22E*H_;UDk5@ H}Z^1Ry@A0ec}YOvqoF; \C܃{>{1y6*<=kv4nB.n6+:;cL!J1ʑg4ӺF klٚjlcK߷H:/΂G͜c@XI'웦i85^6AG-q-ah ЛfZ3) q"*8:$X^o%Lh;)~Bݭf|rJ 1St|ўsnO}zDAwe/Ŀg$lh**G>x)RWISUPY#)?9F %F<#f @1PBa.ygMaG@G=QЋy[~$llHi!RsnD>$i;Ak_q t6k%eͼ|V[L-xZ*B:C~^eĿN:2rZZ hݧ;HmiW*\6Coehp !c AI,atypZAŤd-϶6:#Q;GňL;·u 'x :6b'bH!Zp8|t@Q{[ ý>y6*(/J\(1k7@:F=\!:|X`4`ͶV^]`A 1P9H.*J= E7Bb`GqV b̌{ nC!`wmgqb(U#3JvBDm/yDwHzhҿmx2/2t{IA,_3~{TtԂ%v d&;O`h\L;h+X?TdT@{'2 / E 5Yf*ZQ4xn-־~H;Is0' )ȜiX7w/h.ۊ1|%mdy'0hۃ*PBUWW*}P®b_x(GXm5TEժ=[L>^On zٓ-+E5hZߍBߞ4P#V_IUw"#|F d6!z5H@ =ISuYXR醣m GR1,D0H8_<$*cղsxncoo>B 4۠|`9QBn|c^(2poBjbk0;7.`n--?.tFKFꍀnȞD6X"Bt1-4Ū7m!Hnv\ & @nyy׊̲Gy04 F!.[*yj oOO?.HPD C3|=_:0ǍaV *&͡@e#A|X\L;qGRN5tiTY$AʛɛeڃaKc9a(ü:+#Ӻ X~Y#ˆџpܼc0q8>gH?#:% Y}K9Ibtk5VT /p!0_% [˦XO 36&Ş)_K\]D ޴ڝoVѸ} =#Mۇ*1һ)PZ6Ď<ޙf lf#{rP`s\$RN%V=wj&җǠW8&fy%Wqjg'0?T8 1ix΅ڱ.\q=~j)c#VAsS׽Lx睱},J7B)qT&ֲPZENhr谡hE!kB#a[g|Q La ߌOK.[Nxhgdq%cT%ez=^& ؠ_y^JŊ~[PIES0IL2j@y4/.KȿD9=NPB>#ˠ?n!"I0E?vَ! θy&zOՉRIi]TPVW-<`#,]U>p%Df%_1YȆjʋ/cO: S֙;LF8DIz&ɫ!pnITU_ o[@6ƃo79%>9kC Ny|hU\;Vs$0DM,V4u] AC' Z}ib1nr 9OJ.zKN >.;auP$CY"?q})ܼ5Q11A. es3^BdƄ`Y]|B*PL驍э7Lgݍ{j͎PPʜ14?#ſh!q(}$4'HꂮjM6;-Ha湔u~l/U2̤P ܦ)4 ߴe'7vf\##h ,`ӜD}>x$~;KZƥ}2JeFT)2=UDvw]9 C+&sΔRArNb/g m ;$uJ:A,JdXf̱ɾHҢ(lGND{ђ|3ehuBB7 (S*KVp4'n"k,a$yFdm0e|4.#s%Djy6aBI'R~1 Lx.c '̹%ӭoX`>.ݑ? N`!T9ۮ~Q N pXcf綠qj'GyvQ ιy:QƒTB F~7MiHc3&%sa%gK&d 4/2U&0lڕLHn2Jـ(}fs]d{ݟ1Ljy{}希- >>DiRoe=So[/ Y^]IkTQSo 1,"2}>k'V'䰥 QY9hmsbLt ͺs-ۛ>mOcjko=:^aSqDEqĠ#~5n,Z| X-,ɀFah'Ǝ̪JO2`]d١` 96Yz'G2.`߆(\ҜΩ'VĖFf+|ib0#?ytYP8m[0'UE?I!H 9c7z _ӓ0\kJr~JFӥtی\ D MG;ĦZ'֛TۯA3!aTv@-XNUGggO{S'k@GRx7Zĸ/0z,{ _hkXr+\,iJo&cwyv_AX肚ifqMTKA &q!] mNO3ۀ)؈1_ǖ_yoϑr X"淉l8ɶMjEťNe`VQ@x \tBA]V9"]͆.1YY 2RBEU30jӥǙf!eWm940FCsm6ud,' MV)`)(?OkTޟ)xHKn0Tr}nGW> c;5ֹ}͛XzZ wykPp( yPI`DJ 6G碉v)Ө}h"{YA(2 nH&1<*Slo-t@B@직ʙNg,k^^!MhFP:.h#K"^6Et5br1J5Ml:Š%s'쪄YCL̶l<>9rάGx#` P{b{ُ=I|"$w/'OHf5AhldJUZLlu%甇Zxo8cK`JXdt.3N /vm3ۣc7{oO7Z,P+ͬA.HH7eVmamUhQEtNҌ֛r]*SKAgnPZހFmBy5xJl)wk4h/ sh04\ )s"yXt|7}^ ղl8vsʛ"[HFgyN#%00j[;]@fEfElhP==&y0-rnu)vGyvx"n/ _3a~\;Dr…z+QEjb.b`i]Fj Ya2>TFv9` km'VCVȻ) -;¦P 2K%a@˝#wQVok?ӐaPOGc$_͈AtST8*LR)]'|p8ⱕ1"/ =~u蔻o":/n 2S85Ĉ5 P, .Ԁb`rZ2yZUgʥicsn(zLAjYᆭa??p?)qK@@~Tx3ȯҍʞ%p(FAК J`,i U~(4~fL0NGWz+\ H>Sj5ѻQ!Z} jQѵN?j 'ACy{dY}r~8 j:MN W CBp)IU.ƻ5f-UȸU ﶳ㋇.Qk8 >WO`@&gRxAmL?I[6~X!ԂT97tl`@2lOؠȧRLgo!¾`v`e#ԐQ' tC gaq;>ZDR "\D]cZd{B`]@Kyo/+4Nx5%S= } b\?6(mvH?+pQ7~_K \(1#[V’y!>y#UQ]qm/,E ,@ oG'sBmpu{ d5\mlXbS1f8 ; -Cuoe< -o^sΘ\c/l;.J>d`QRD'\NNb/YtŴڮأP 83hD" 7)Rj6|̬~@`yNF5 }H'#ߦͩIg^d96l`ͫ =k ?e(XSFAu1.╀ 6Lo'V`y,ӣVpIEF3 3Y,'7M~H?T)j eD}qa]l^IXDS ,zr^ smPnŇC4RMDeO5&7Fę7W @kqvCRy]+.lWOK K,cX3(BXkuENLpV ^FqQxfTڐk#Yc$Θ(9P;g$lAd^koC@p #p}"S{_4gcwB#mP?)l`z-yX=3?v!мImD"/jarC[:pt[̅"^[$t:ntWO٧,g@Qoګ`QqǛZ^TDhLƦ8Vl"S!ܝUbc) %.[_%Z@/Z>v/YhZ4kl?H}z~9<3IrR+\Wiw E[ LmtLn:B-Tb?ƤJ'<덑jԪ-.w|R9Э8=#4<1 ѕrxZ^N9ܻ'$aspVI|v bR$5:~}cFXg.ڢ$.늵ؔ^Th+]EvA8)m.ڃ^V$x L$P f?JqF Eja9eb " =YHaҦ}Dʉv|O[ K9 q&3KD-1#c(KAB᮷vH,LŦS@Fn$U*AdDr5M^MBt^eiJyLu>fK61leQ"\]d|pYN>^`y5D$kYb43o=5(Q:"CDH bsH߀[6[6 y'(;-՛av͉'l~AL([ؽSe]@2sgKrz37*HٻM@t3' 7vBl!bP:0RcyQ 9BJ"dZ vcYY1 7DU,0;37;ÀNZe\Fn 6,L?&nUSXOc@:9<+!פfٯg-E9ctg,BWI5)< %qҤWX(o9{.FNX1P@{ǯAҢ5 x*_TxCBcˎv`\82W&d z1)u62 ̜gɍMSQR佪cnu"ƶ`c nmpھx'nӻ.zV,C mSD_S$#z^"j_PIFx0F嚣[Ĵ0F_! ޒ$F䚔TE}Sb2ϹPFh)탥Jmß<' Uf]$;XjQ{7ó'GYf9=#ekOY:?ܡg9DC`U趉܇u34}jE!Z.=&gP0Ԏ]w@*Eu+H̉ԫ'?`H9L\ҩ4[z'HXZ; 0?^QA*YiOQP^?ՄK񸓈~K?٠tԵ_|Ii'2& 9!C&?L<l|Y![(lgrR:0|`_+a6=- Z XpOx~}> *yA#we^+˜4% Q3؀X- N%cBxN4xpQ8aHy8k 8R/x_VD JRu˻vӽje {,r<)$-zz:#F.kH6KuF|:C%ɔɐ jU,oL}` }A*b.])cS/K3ok8M܌EU91CGI~ܘcv[z&){4/gH&b /fH7h;:[*~i+=|i`:W6 ) OH ;DG[oNwTqT{U\8M-S%/_Es ܾ+rW<55*$ ɲ>},PUۍ`d_)O픣 pi!թj},jCc. {+JKkǘ2Y L#y(B( 6D2) +w"nӄ-.dz87mnm~Q^3XQ(w}xg21K.5`];S>(Nq)T y_ϔ8tws./íXdU(Ra/Sl(btbꬠ`E@B:; g&R@vT$փ4!⸽ʪ }ȀD'4 nTީNA,)ܲ\붟%pU;SHQpzP \$̺9ÙAq$6+"A>-.e"V[B^[hp2`$xfP oy#U~ l45ƁMۤ 4cɄG;(|ɰRee[JLfV=i~(${Ϙ>H:G&qbdPak5u~E3kD'q(lV'U.Rd~ma`|lm3k:KWv2Go١F[HQ(wRx}z{޾b#NQwQI åGr<`~WFRnCg7潴w)tujp;wpVrj=OzǫZ03S`$7 ނ.OvMw0*? j&&Gr6x~jݯ=It/i5*w0F] JB b[`7p`9#,r !RsH @7k2kFM DuB=)Ȑ3?'YJyO :DI6aF8W<]S 8l'K6Zx/Pߏ{_;B)mBrp j-qMnP5K͝5c{_Z&z)Iy$jj| {\3>+@P_0CTV~H$Go|?+h%į43z%v #bT&Hd& ˏjf%k8P*n21jv-]5f {$-J@y'br'`bWK2]ndr%Ƙ?P 1;GFWi/ݹ5Sgfφ %f9;8W(jp@}1LGBQg )e4FMmS+JN<WfI`-kNUgE4 G;N_ =G)Lr} @qV SX֧W[bk ~vtaszQR/ (BJdj&P avm"`0֪h'%EWCGYC+qqjzTXKvCj3 aq·ɔC I)xwɾA3)"zNDt:>RvGRSv#.K`y;`j9])sy{hWN'B (nNwHKuJ6=z*s1el:4eUu9= Kypbշ=AQʫ ;/dSx6x\&/|,h)p]a [8f դtğ|3WHLyFwqӖAjްK+ *\۰~uT9rXƤQj"r:cJ>5*rp+vfQ2=YoL>OWET}T+' I{yA_N)LKuz tK^ak(&kRc'U#?Rɼ7g$SȮ0•xJt7XnB"u% n^>^8hc--;;Z->gE]f)h[%`&ݫ=n~*_Si)0\9vbнʀ M> iM'rh;~Z4̌#TN@I&ο{L,m \WK 85|0x6H/M;Wo>8YC*ұqljah)JEuy%^{|Sy+  /\OlIɓpVtE+QZա1ȡLB1VîA4k-2U~B> H;t7# gjK%i7Ӆy%UoMq/S&˩x$5]>XjLzsDǘ)ynσN! ZȘz*ؐ~|]xJlM؈y["z%a׆ eMwQPto-nE̚$nk a}:^w-"G6;r )O79 KxhW@$z'NH2-IʮM3sdĽџ.cⱶR+Y4AK5<Ł+Ih۷H+-Y{ lTȂP_pt@/W@;kϟ;v+i a? #:/:7h-P|ECjSC$C/a+JHuBJ`^J -}W= x\g'*!5΂wx?sӺw\< /Jz ЅJ{7K 5+zz .#l;> :IO2J(]b(,G0.z΍1-{P@$U]mRcaAx%=~(؅\(w.8 Qvq)%=(7.PMыi;pa2}Gʑ>3#<@+~2l %F,aX.ݲ]d|JY׋U EL$ _tVyCu-Ko<`;BJkct6sȟ׀6iJALܥZw?J5/Fn^LSZ_ UbMVi_ccԊ 03AEuδ|7$kl5ͼc\[/)TZ&!/lgR"eU!{e00J&2ۜ2}&ln|B࣋CƑ< ғ,$'H:`0-$BuLr9vpҶ<x"/ʓi,Ŵ,vgZ'"cº!ݫw ci%EpLKkELj2.xێ߂Xd_g C[ !DKjk0%G^5F%Ta^0+#wiN/huMPfi6*dQRΥȏeh]f/ӖۈH~<+:$I>vI:軑ρzfGH6YZ JC|͎UQ$ _G/&ybFäZ b3 S3Um]"S:#DCLz6`#P̈_a]Myesnf|X13#g!D@ ght\t ɮAv(~ΙCںMj>(ƎgOnyEߺ3 7O_J,%~Sl8y{0JE%pk%v-GL"% t$Fτ5kKL@dm~ƘQw BuZ4mrڔƛνxfnQȒq-BYa}m^1nlx p)L싶BkLw]P0To@AգOۏ 5@/Pڐl#Ͽe1cy$d }\y=81[_ Wj@J r èfDUJ9A_HeM0mƊuNu]K@_ƕA7%<|0zV0&7i I7Gf:oAs`,Hz^YX'ѕ P{qaW/wܻ9zC{Џ$a2`C-۬/|-f -PYOko?~ƭBHF28G @Ϳy K=C ^(T(ΜDbYa331ckMՌi&WŹP.N;qcO0IF(Hv1݆]z}T"@_(h?zƩ>9Xyۏ-h!d̛BK$4IOVxfII0*TX+HD1ŽWպ 'jMDq1Vꊉ(ִ9pB8^D;7TDhoeUcS&ٛejv"4&42i`8a Jۅ2bO154*#m!" w)DF ¾7@R-K>ҸbUzlyɅe(qVH=3N-b'uZ%u^V 1e4|׭x5㈏97ƺl;n݅^_'tڜj.}8smP-=DW|C(D!75e:%(R 2nmwPgSJ^Pc 7v-6ZؤL5<`܎ JKA*ˬKxET33 o԰P3'UJR0TRxLXTl*jaw5ʖ֑*6{1J/\()~s6'f5 .;`L,W">ԾÏH؄פ ;# "{U JUbfuA Ax, ھgrt+cj mgBm@s@J:15\o U)@Sep yW8ELuK fZX~?~m2Ww<UPW hYrO.eA[]\ayH>FTz[O?׌v ~(Dgki'.p3Kp\틈odQnb639BWt LЬ(&4mܓ 2m3 XwJq\ݣ?7wTm:z#w,oIgPdDz{V7kA1,R𴈸Uo7W\H>S +& hLe!"0GôàUE3b~3B߇ vb8,{<.}T3LIu鿮܂r8ҠGvrE=")xt#rX^ڦPYft@%=}H{xhG KmP:ı2ȣ`o4Uсy8)3s(%hQK&gFV@jxM*K wy?1Bz{#ѢYY5- +0mӣ~^ΟmΫ`Zքo9j#sL<ІuM -qOcX9q`G'4U| rYӂ].M9RaIH Nx_0COY@<y2G{!Z_L -`:ScIw/>Kn-RS&>:D"x#O\tN!>>J!U[UцT, K..D!ŷ *6 b=R^Q>y:ے϶{0D@}\:o*n1d/p\od`P7 _[sMx8yE3d[[y.)0*0,΃L6Hri 91OLJH`AC4"]ɜlgբܘA9# Kxb 4}g,!qϏ9H!*/RK֞x߶3ߧ|N^Şrhf˃x܊ ๋3_1_~3|u NfO_):A$);m k8񇹬o@LNh8/ѯgm-tcʦƇwtrOs|$%00l(sY5͟VZof 96Ka]%j + (X* 6g=k NX 4ol|oVSD)plߤAĻOFM0IX &YbL,~>u+dShe|Uv4D`YR ꁓ;%xG1=5XMNknmڟ'Uk\畻٣2ڪ݃dhĈ/ZϣTnJK{pʢJF.oe<܎N<ɿYT Xx(kg-@rp:Àd&udK( njN {AW@9&T֌=W B](JvCwh2͎3V_8 cȌ@ Wznj Ex3gT1JJ&])+" 822c$VEߜj<>I:!舔K`Bt M_/OW_84{Cg#_Υ"hePM7FEv[ Bk? r0Ǜ]a,#5݅[af{-Ov&\Vc9ĉ{eֺiV94Ϝ؝_ pT$ "{{s!?bgu ˃'KcvcU3乹wԡzmFJJ]ޝd3cյ9߿8.@4{Wb=RLt<ན w/R0)GP4Fٵq{갥Lz2~A +5Tu+-4.r3ι,- ct҃K&&);JI2{~&"ţ!6ˬaTd=|y=|ݒlt>pr"s)'}$2c+C64=h&-ѿ%w=@qm 4ǬyX^JBłaՏ2Bw|&M`/Fb%ڈt-HޥBai{FVN|tFៜc.ܮ^Vthemes/twentytwentyfour/assets/images/museum.webp000064400000361452147176754540016532 0ustar00RIFF"WEBPVP8X ICCPlcms@mntrRGB XYZ   5acspAPPL-lcms desc @cprt`6wtptchad,rXYZbXYZgXYZrTRC gTRC bTRC chrm4$dmndX$dmdd|$mluc enUS$GIMP built-in sRGBmluc enUSPublic DomainXYZ -sf32 B%nXYZ o8XYZ $XYZ bparaff Y [chrmT|L&g\mluc enUSGIMPmluc enUSsRGBVP8 \0 *>1D"!'r0 in$)coN[{?WnxqNq@# \]c{/|G{[[_:l:}h_Wr;ԏM7:^vM>=y]WOOzsنF?S߲|ܽθ?[k\/w<9ݯ?8~,}O~@1=aSh}!2WHe: 6e0-#ǰ|^&/m4W^8V 0ݤG t;kA::s** (ӼEnrFn=i$ܕj"]C # E?~msLߦwa鸜K^܇\1Pf4JN<`>e cok@ޗ?\%A$%҈-#@% 0;a So,!*yE]?44 I0=.hv58ğTX9"|2/تQ?Za$ڭO s|Zs~GC}l*D@^ !eHs.9i aM&o:s;ւ17c\hQkZ(_-9۷Vt/Q,?Ȟon~PP2iq$ˊA'rj|\?'lMr^>amvȴ֎|Zd'/lg$j(!f8wYchKç6r#9]du3QT'"\LE~F7JX)MD+[8!]0@g>)[GX<ՍEoUMI"&z wq2%ʼJ5L-[X ۆXemOyŅ6VYݞUE&1'O3i폙!8t4{|zIH!wuGHJ |.~Ž/h_ &#֭^9kbab<+=%MʼnB*MX 74ŵM#=vg/ X>p"^s_OM;A(wcel2b_]}iw,iفi;H s $zP$>Qt5L{WZ{+?5L}YӒx:M#QoUW.,Dq%]饕T\w2A-_n &(כ[C97pPyC6@ ϪSxϢ q~R~aܺ0 RH&{T[k_O6 DX;c8sX\tto74s՛rVDi{B7I96F$K!ǀ a([].,Hm;:S $e9|)v ) 2BCʉ [Qel&)Ɠ;wi>5(|:y7ʡƧҀ1 AH=2C"<N},^Y|iJWx%] k[$)gݨ1qތOM 1wq\"]lqtliO2yLo="i@+ٜ_*t/ 2}y-VY̟\48c"5ϯ ,4n3\KzsIւN'=IyĩzZ ʂuN4!MN!-si$ZA%e΃ ҐʼnayBH2jdDǟ@>U}<,$p׈ǐgԬ~BJ jI3cltZtY8W4.qT<:d-X[¼ʌ7$̵vd}FtBlgÐ1OL#|`M6.|,7Au6*%T6hՈ^_ӭ4I\dall\S|Z( 2;~me^5@.}<%GGD{7@l13z*XEzh8j]r_cTaYb%^(p/o+F\)."md0˨~Z +]u08ݩ_0QCӛaF@e.]Q)_hzmA\ ]~I8*\Ʊ8VC }Q\kLoĖqjÝ)E;=o]U=[r qٶ0?ۨ}}js)6th+cbGuA<B}o!  G ɴ{tSS0mF=/lF·*YPG¹鮽 9 Dt7j `ֹW;cw:wˋ KZYyL]{9ѳ8[F?Ln|IK`iKbِyg0Ќ~0wf} Lͫ?B8+r{-W;v}4ËXWP (ahTߞe2~o5.ĎE6dGCerX  2tol;C=iw*k3 `rš/,^F?-#MMr97 SFUI6A1]}Lo(uѻU0(zjUaRgfu%8ɂlZ neծ!}euQDkvh3)䴴D䈍 CP~yR5EGiK52\˙ j,n~c^εZs-Ƿ !/X Gk8S( C݈Ox.(EF`a|NۿZ+^p!駫8ьV+gn%QoOLy$VÏH (Ο0bN{E64GdbU5/lŕxHųI-f`ؘE@'/t8OȚǛ')K͝ 81Sj^7|絽|q{(h]ruvoIGZ*-AEGgrXi'ߦ1& oŏ*@5#vХe0WkY\|~yM3b\@n?շ t:OC Ͽށ_]SLe</jfMt,a6M |̃? [ NlSX;̕b:{"B(<"^W:Phk*C5nL\Rz8ёlV~w = 2aoY$ir. `!R|R[K,͍ȆbnxZeDD@1u4Ķ\ ~z ؠl ,\fxrclExаJ8=R/óU>y7'/| z6]ecd-D4mqXb<`:ٚ._FvvS< -.#$!h*Els Sqz"]0搷zEsF  !ҟ [w;':2] A L8cxmE9JxƒNQ̃ś̡5q$7nwEw!`e7Yeh21\(v'C;(`DƒOƶ'dDTC%ƎG%0+S<.oU*NɼPC;Ph.jZ^L t7vDKU3a|/3@J'euJM}*G3$b,y72~*TmFTN 莬wV3´ COՏ,9Z1ʵp ceg V=VV]hݍ Ze2q %xslVHt6~E,>L,IT`׫NL@޾q.NvjX _/^<1_pPZPA1@b\d)kV֬ʡbhptߌO-Dx'Aݨc=4^AxJXFk9 ڌc2XUx~s} ]I>#L84xq2l|Z0dH\i?#3s,H}#G !~JO ;JgگB)%MutM(t&:hAMPI){SIP [X7cqx^v 7K)A#gO܆3tG%f_ᗻjpǖ뛆䞭骕qWPXM:scpZ >=8{C)QA7oM]6(l,2ȍv: 9Q'b ?6ᜣ^[j`O)}-ySsܼ,6^탿BL;$0r)B̗L3ŲSy&Tf´XaaBꓒ2~Mx~Q[GFyHnsl9,dn;Rf6YX}'JU5*ϊ6voP#<Bsě[[1!$-\39'eݹL@㊝cdV4b(g6\giqheYU 7toK|o`5!/Nv9䐊K;CE9%-4x3<L!TX/iC?_[ k/TlruxGV|kKȏ2F >9A)Tp=lk[ DY>}]X'j9E<:Md^ْ)5j}#k_Zu^#:c4x#qj9,СՕZ;ƎUe۠e;f{hLLzL oYy/$%xbaDዸTAZ/bK < eQ!X֯"2s jqϹNLhӉS ?9}/0vqE(mN$xSia";F:D=Z_%nk@9a t F;y|/VJ5Lt[U LSZx8V$h6dmL-L$2-Vco+5C2+ovQ35O,AdCĦM>paeSS}x:.=vM*=u2 |.Xos-o,L$ZܛƘ:.ijB✶sQw:Lm {IՄw>Y^Yl-чQ}Uf"ɕ8yni7:9:\GdOD;t|&% 3:1 DyyH_<F81Dx7QK D7*si1 dVuOT /^+DcB3ijGY:E/f|c n*N駬dI^_Q ta&C# \Ida__L^E~ (X-vAdI=`MieRR;nLv&ײ_O#B=%t HԞ53e:bd҃p^>DZe-s'x3 N $#tl9i]jK v<Mu`;9XOa&y NxÝ+R-JDKM_- poHw(,5Cr\a j|'8'@e^ZQ##U8xn4f67i<H8q0<5!Z5枦U6сw0x9.ۼsx/?Eĝ 2$(q8yRb8i)x&T0О܇cZ Osw")Ax‚gnPWX,f*f6I#Pe5rg-IZ[3?hzy}|̤ F$ay:G?7^uޚ._JQ7y t'0|-s(i :ʝ/}ځmJpKnVF[g%Bհ^O )粐Q P4BV"\W+'6#(_.-{U^,-ltC(-mo =j ӈs Xjg6 ZMZ)f0G2`=ľ:dU΢3Ŗ!T  ާ ^?cxixk9:>+΢us͚c 5S%np-qe~>=Z>/()Aspې*K"89l*q!F=Zɴ4];ޢKFB9%]ĎxC&s!-;Bk"YHr T$8P5,ll$&ȋ&mTeI,jTB:IBnQwd\ &l,<*t0/iUNoNhinTiUx&ˏUWTwRrSN% 5LN}w0W y4H lUEퟛ=>hr}6/`?~J=Cv7o'QZʧrPxpW(c1!6:Dƈ8%BCf Dh_SD5~ &ʰ}kl.:C+WE)imYp pm-Zkoߪc p1+c`Y4bѕ. Qm_[@ޢ^rlӝME{zם0 [2s%wo HLjCrށ:|׽o&E%(fdKb̨ۨwѝ)b{ OѪf5<(v\& eIhf$H2f \rc'G7P6yERIZȍqV;k&1h?ɟhLNn`]60zh \d/KBH_yHo8!P$8socbqfۊHvyjm&y'GOLvjY{!qwR?^iwEĬlb\NR);=ru4?>T̾%;QCZ/GDnjkhW 3bVԶګ' L7V~MLmgd#c5ThZHz3jӤy~V nVijͰ?^"6+b3G!("'m413Vl-jh6:]An|,V6T 3@gP:)2B=x+/J@ķ(v bκoTqj9^\akTgGs4>R2mJG-иԭǛa5}̡[1Y*jBN)Hoo  _B`[-2T^B̢-ywnwi~׋eW1UZWً^`{Ҥd.SڗB!4SneCt]*^%=Uo|esgCbv.m}vkи(3v;v/lMa8pG½.EHt6 L1Jo }F>pž474fK`R0t4P-Q$ ,W;$O+$,&HɠyA4\)Oo1lUѩ_RWḺ"⶝B8ZdgifSG"KA[ej[ĉXZe=}G!5 !~`e٘mn 3yr9N٥a0]Ԑ2!%{SqdYJeA&`"fV\[ZD&@20hʰPdmdʷ!XmMn>:l3/r./a&5@+{Rb>G/kTן:}zNؔ5=/h˯11*|tm^:IA01 J_O؛] fTt>4 /h|,*ɑ}c̙F5J`/JL< i%FZ&g-9&LBck|b IsT%j]ыx^ c])SF`,( oܢy?ۇbU7v7-]a۷?NGk٫18C ݂䰢FV 3t ,ߔaICg>sAL(ŽoEPmM)ZyvFCuiDG _߫Zs!g6/%}PfNaG4f"OtCb^ R%LO:[|Y 0GCGPbUn cQ8tiPP*/4!~&-/_܈zݿW{m)(tzj ISՙi/;x\@uejpms߯=z< ZH4-7Qa5%gy^[/顛K/&J̋`tg IC5흇Q*uCvqYO\׻*`nMY}IlK,'hʗ#tz}z}Q;Q#OlOy;n?ω:W%0Nєk38$y(Ni\]!k$ij`%kՀ=Ȭ3,]oXr#1.Η5h M\܈X޽N% ƖڡI+z <&eyny ?%w(1o"b= "Uhnլ$NhTRl&δ A]ד #uNCA($ҁY>oZNސAc>4abrqcX_BuyA j)oV -YL˂g4: 'p$mQ&u,G@R|Nb7_@i?ӫ.2Qz]8 {o4Gy]LNӚ2L*k;:,"jP˵-C͇k bnۍ`P4*{f 2V -z1/J$Uo`p zgµtRuiޘ1x~n@g6/ᝑLaa,15=I&7cXUB!=@ MD.1.U,ح}VSnC|O,ʔ?Xc>>-nN#yC ީ(?l # 4݅Tz|+g{s <r)lSh.V'Aَ`q.YKkWN&h 2u|Df&QpgY]q1{~#b^ӃAG}}nEg>/ :JmHԈS ~cے_4*aSzF-_9XQN^2xm!8%#0)Rݤo~`H 9 : *`crS/C901G, mٍ4͂pe}]])LIbdTeoZŰ?n]71k'BkV2Qܵ%WWlu3!]C~U$h{nrDuij i"zԌk&B16Sae$pL@6Y:HbY{Mi@\ݿʕō *o;i$m,խ>-yϲs)O3 \ҐH`r9tҴwkmy1tBĎ#z%v3[%_$MK!Vc{suwe<#Ϩ_~x2 `Ҙ-|& G u{ӝ'$W~;Ri(|6SVM~:.q#) EB`?j`YٰqO\ua$Fh^̎@Y[H.5ryvЀԍ+ CZ\U2iFf-)-7LH-`ʫ>w$~,$!vrkWS: "3b菟| 4s+jH'G!=hbF!BI&tq xoExowQusKBT"<4wT<>LFMD羚V_nvLOM4;mPtL8^?8[RZxwslpk8o:iOrf&[cBp"|x *H,2 M_x0. ڛb F@iVfF ZA Y_~˾Ḏ_ G[HN*߯M֔!!ځ>Pzu' 4ZMBIp_r32 W|یP ҽ]qq'%]\' {4C i l6_Zp]-Q',' Tu:Z anDa WCN-J.S8 Y>g3Ȍ?b'EHhj ҭgF^-!f+{p]'?>ފ\;q§|/L1.ټƀ'l]me!`Jdt-}1{XȪdmꬿ]7Km(w]TL]_Lk wC2p&W-ۛ?y@ P ˤQ>qUfV>-7Ɠ}# |uOf/!$kej#]e{OVo,̅ 4ArieJm%~L:򽵷tųZZ?5x݌Ǿ:ރ_XSw,K[,"w)?(+cn%̕u,37%8nچcO.?($3bY(xnNB#hF> 6>DvX#ԣXi9 ҵiAnvjT)]q$LTʑ΂&Pt)p<afq3nC(yHQr,Ogc6HRg0sү{@|Z2!kؑu'cy+I.t" B6hO.k|ozt@5tggizhBss\''DؗkThBXdC~Vu~kDHKzg!DM=<7 ӷd-аItϿ"5{J` .5@>-oר+KHe4v&5 yhɑ`f%)YZ3Dt X;T;#ȁv鉠+ݗG O$3.1#ԧˈx.o Aװk *~%-0S$p?f*MߥVlmf8 F%E_RO`i:YsrT S>L#.{@:}FM6 =r'i,u}E[.15{I >dVflN'-b]29͌56 ȓO4-"( ! WhIoFN9g1Pi~?Uy-=s2wαS1u0 cdoPrGlJo'aV#aӻ;@UI䃟d;#&ʎFsF T̼:+j*#My Rq><"w%d,eNn{IߣFxNkh&|G˃P (H< i,L|mwz)q欳J/hA2Sj ^ ^e^ԝ9=_$kGoH?jm aVD̰d+AUP$ls*iMNE28~9E,*:y)YH䯞UKc`dg?O/KaU. \}q:~u ìA!>NQ1 7'avH6! F=~.!δf3z ;"=J}$!Za~M-7\dlAw]/fxY?.M 6 7k;φ?>A pⴧPK:@1~DgUl^d¸o:ͨe.̱0Qba`Y[<,Y4vm?|~/o2 B(U[ŏ?ŞQZ^p?Yzo[pG ?jkKdudl 6> ە0~v}v|D'Y?Q찼 su#Mp/!/!׹/۷=g#{q+HgwO?JNo*Tpf*9jɖOɽoօTO'ש:4S_DjR rr zOGSfs>ү2*Eb>?%3@dXZ {)4ש1w[{lKKU܋Z%_<ƊUm~ -cB WP fe ;Lw/BHVVͅDCͩDT`b7{ #@Fmڑ{ݠY>sH{ * z"9 4ԍ: ״ٵX5u!#̹zӸ XiQ^(gZ3߱oy)x5yn\AI|U}"|=ՀƝR  ~Z %@ݱnGG"yY rj\%6q}%3)uߞoڷe!L0kߝRʲ yD-5_=L[$3˛aqAM1Z/}6m;OH4h} bn\XSQ%hR x,/e|C%? 1q:-6͑pJlhi5S `cÈOeCjfr?.Yn]YQ\nϴqoхHe2J+%5PJ Sjy7I YDZ[%׹vQ[S6E H,jZ\pUhԥ+X}kp h x!? e "]PGbHbX9_dϦlٌXgY]2Ʌ{X=UÊw.{|?z+ꈧWΌY!mO#qBB63t3B{pUA#|K<#g '\W:]ɘFmގv{EP6$햤W`+"fСe(Ƒ'T1}I邨=#/?fՍ+서p_j<+FsAl c Bwt" a3" ܶAZ[Nz=_/AeB)@}.'>r꒿%[^ gf!Fy/Z܂+X eJoA[RTvvH TqbIL0ab4VC^)eonz\@mY*ކ o Jo6iz+4omJi+@%1oB :w!ɧ@s(?d >@ 2BuuN!$l:nuNgEkV5 Mq+K4ppjB+K8%_yuwrǶq w(h0{0B5lUEJPpĶ468/}-prN~ ?k0d=€xVd5 C&5eX==?hxpW$}r!fǤS&S!/ǣpg3s;H"" ǨgB1z2IT@CQ& 8 ژ_AZ||ggavc;@JC꧄/F2uSvi)]ɂƤo؁t;-aoNbRB:&=1L(:|!zSs|ӳ,.nrݏPl::VpVwC,*.(+? ~7RcAjX)<بh=A̺Etcw'2-xő\]|.R|BW\q+JZsyBh&FPyn.Z(&Þ< ָ4cyj2P@rY~1r;eq1eV1sc|hAY)p YmmZŢmfK}_w=6\,Hn˷ T)$V4#\>a"Ձ#ZEroNfS`CvCHP XGoe'3|UAޅw/JAwa9 (jd=Y 6qjXP: tQ\=,~T=u5}9_,lYN`|+!&&zuˍ j)"t3$ V5?< ҫYr96rk`᝗¼n)jl:6pcy_T u8乺7| ǽ=k |̱npN΃Fp-Fq޼Qcb4N\#kI&1B}RqxRuczDx~G1/'j9`?t2ұd"cO ,ohكs  fR#cxU!@. K%NRnj 8d ?[xIA%{"kB\%ކAH@l{? sbzx@C~n `KT<ퟒ+o6*`ux۰yVZD@n zMJaBN @K>at{SF18z'FD/ i<.L]I >4lˇm66E:G0'OَDw3a'qQ4& \y+q%Vs@c v,XԆݓZŐ"{v;oO.Qr ^loDtd :{ERݹ՘}n($=XwVqI x}7 BU C⑞ɥbF:r7ʖġd*Yc*%t*v=*-/aCòzܞ+ oEW )MzayosfPA *(\1eJ~4ІL̝N_ ‹ { qK[,%6Nn 칊J)sЂXH2G2 C췪 \N# .8t^T껛+y|N9D Z qhˬ F "; Q ɜ4Vh};cIoCZϦ̗)P>+] nR jcB;Jwxup |:'S-:2Nu&ĝC4|),#) iSWvk f3@;/9AuFcm.gہ=+z3Wi}:n>C:ƌ+ٞT䚥tkijψޓD`q{<*VvaBȵ|nE213u˥գmtEK3ыT ER p3k,{pË ԋDR9OϾCgttETb{̚hu09CxCH.ڐ؊4tըۺ\B pfH7Sz5e-#MXضoo2\wCpbp'󖥙ŧ`U8]\ao5&4J{Wocbu0O!LA.+dK[u>@Ac`RYo :HH3];Zi қ1r*Ș6jT~F7mc 2&%,;nViXX1SY$3UJS'7gRRZ=z&ξTЮ,߼S?'"׳,}T[Q=WN俀GP+WTpW K{G=,c z;CP ˎ+.3țB#: jk6+QYaue.Kosbt "V%&[.Xt{O0!+nv2vO6ZI}YdɌN R#r3p2]M qi>gev>+$8lZkw!XI~"ӌ[W:5Ad}GsBGkm픛7޷Q}Z?wUƮL$H/DuhAC[:eױ4#AfH)}-q°m0E$Ώ{4o %Q Er;j*J1`5g2ʉeV̺u4J87wINO]yfaKܝšBj/?ѐ&c؎Re@u~F `UgJvȒz s>"mF` L]&ӝYZ6Sg0&C_~LV:6%2]0FfTmF)wOx/ԍp (a_b/8ȱ9@LZkV9LJ: %YŹ\}k 2c7jnT$qoӘzDsQ0^ճX=wfnQ;o B4"-K􎐡6?b8@ ]uqzٍE_H\:)mAL}>rkoSp9Irȣ84Q.#Gᒻ % ަDAGt2k9]͟1)*<SQdzʶ /=0xT]՚C7Ӹlk׺f?jK::!` |LT9p>f0BlQ+nK ID'IYۭϒ_l?J :R٦ApRP9!6[htYzmtEx8.}֯Fj=`jUҷQ>Q>RTY~ĐZ8SyQRw%|5X[+ L.39$4\X(òVH}'@L/g4172x1[`ؙ˴ 㬠 ~ Eg *+1. 2R# |{wU{R$E8 IKH,+N!sHBlp;X xz C-'Qy0t=ʹAz.h~{Xh=y\Gqźt3V ’{8cƼ]]5m2زRi̻S{hPErU0Yn(ZmQf&KK_QkHq_x?N +9`vPɵ3%?|9PW W6'LtgW\PuHh~4&uˆ\Dm4 Dرdi$r 18UjT|72-hC 2v9t |}$ܿ 7Zy]:I]֊R IS^EGoI#NioF,-]Io9܄Lxz-74AJL7JE*^ ,wX r+樆 M4)P?7#Sd;^{F󞬃zY5oO7VB%JLt(_4$'LdT)C'CTF9#`LKVpB9B[NzĨJsnՓ$Lt;rp…eл fdnU ⊔+f04AAn\^dN|+~ܡ C[@:Ks#Lj֍VdDE}?&Ozt6uܤFq l}'(rH|7yGFRZP'`U y]^En/W\}qYZ [ /qa|^4mc^e*(wr*2XܝQ]SˍR"X9E|~%^o? P-LԠ$ zJ("ѱPek>=:V1)@r7)s1$#䅕jjSf\j KvDZ\~ `w)82 [iݻ6qK_l'VsԇQ w8c~dgZqf wH5:ckWYuwp$#fwf3`6‹Xp/s$I@2 O6Z1biF$`m}7EKǶ:p|ZS/8-k~E넶M/6 ^cSTw,E!zHnNL6)M\<4Gweq8YSؿ8iPy8ɘwqEڽ>kY"@7Ԁum!NXs99<&}zgp孻R~ )6}=Ehf9 Ku1k:B%-< Ʈ,:8KOh31,-׎Oq.¢0r/jly1T<{%_B0d B20僇q/ik`b0N]55)j0CU #CF:AA33wo#%4LEnʼз?uҀwM]Yk߷ ƋIY5D@87 `HӽzJs?rw‰]`ɒvռ?$[]̢tұk I${rB2U:}_M?A.t9zboɺ,ߦQ ۭgC#B\O[7h'+. ΁0k[Ya!\x uOE(4)89q G"&3^W!2"(t)+}/ 2OCQl%k@\pd|=8YM4}ij;q8`?=v+/qC|\&mى:tvXW6ɚ9 R{$iPK&0=8Em1^){*5[]qB/F;t drYJnf\lMNK;]v=F'?v"tqx*!<SN/'=ޡ \2חsqD] (F38&kmW֦%MgT(3o忿^L=ATy+{֔)GNw`6A~(P9N{C7+t~wa?CSރ>S2MtEd?U ~K's ]!ڧOVlirGHu1!Yƶtv 0 qm<ъLx2?,=i4fH椊(ǟp k?f+n&Z+^9xR 1!3`")Փfx~C5*i˅ot9cv3ȁ,BAрét{'C/C=:b१:FΧ죀y}#ޣFYJ)_)k}(IqHffuH71 yZ]C,jsyȅ>~A4 f*omGG=ȭ~yuؑ@AcC^&LqP.%VFF( ofcMbpI"y˧yFtGDԠ?j$1_ғx 8g סW m<&1*!q2p1䃑0ϖ[eߡ2hIMZW^%^3+f~-jhwyڄ&:KCZqSha)yLϓpmU˅`_- 6p#q keZ49}-;W1%"p5J*a-w%~q䃋*#1LNBHl4n<R@xu-SR `0ID0WFL[q-•gfp7?%Vf+ceyuL ?i!Ă[̅g;HD5 o/MY<쯞c1f"[cveBv< tY56Q- Iam3$ t!0!5=Fz /B ,g"'wFxTvӆ@M1͖۳If#U0KfuHW`}(ZUb\{pzFs3}_UĺLOS\1^VuPK bgFu݁1|)X՛/pM+g3 c3U;NU"u%oCoe' #qQC `hFP/,FZQ/q>?@d_ȣ|v%&yϴʒz]'ʺzjk+҃JLMB g 4Ĩ\E.tGTZ" 鋜İB,3!qu=a1iP"mlȉ>϶*+A]N-HplLQ:޹V~ҖNrx_5DlVyPyY@b2r"1>XdU9/Vwp)]>yN_趱*xΚ024_+KkuI[阫 I<_8/svYeYCMy"3  "֦B>Ğl; GP4UN=yn$jgNJ1W?[~oѷ{;4OZ=u 0"VR<` 5'QZ:NZ=ضD&xCLJ] 5栜rfw!Kff$ -{t,;GܪJ ;im91QcXH ̙aY]4c}n-;eݭ2*t*"CxCy> XZ6Eֈ-&\3xr U%14pTPTu@%zLS-n#1N(4[TI!LΖ_Y m %LMЩI~\b%D#` wC83R7Y5j‰\}±B\s;gY?.[f~ wԬe&֖<h))gexwVZN` fǦq^hucYYLE;EQl"y>K-P"F 7lq`㙍U&6cG@E+'I2Re&4iy;a[Tj5Y-zPDzӃ?X6NJD4b8nQgⲒ~8[#ƼC ـSʒnibS8WPPd`v~tTnHl{=8># +ΈFwtޭ3kI S7X%l\_[O-p&QGW"&g*_TFbN@?&5HGAu7S|6I"K{y xz56^\E1rY$DGPɱ?J u700ՙ5e'ZnSM(uKll-2U9wUk9KPנ3=("W8A 8LݡAoX˔pU]1ܘQP{g`W8Fʞv|oۄG 3uvE.Y7So#S_#X ^W]Ho  :矫Xmrj[۰K8T~s3?Co=nsQz7(|ķtBC0Da-ۓIϵ _^!֔DJl:ؒf m!w@1;C m{tU@|ϔK ٪i hP-ks"#V p4,ls&vkUk彜DzW8} קY`&+#1*<6Xs.Ɇ>k*ym1o-/ɵɺ y6:yC]5g2yZ4AKw8 qZ̀jʔbYbO]&Yy#34K'Fr,ACcMdW˲.&~aTչLµ)tЗ!n㕅vh7 xicT2& ĦoZ\3cǞIlWuqՋdL Ht.~@ږ"(*KPE:HdS*sn1C̐?i-v8WEx"K&K扶cNu[vT#iZ .i_ОߺYqgX*0pP‰GնtJS)xxA$/Gy/XՐ ϡyw<_A,H7޴T@ =rhCeݶG8h*gaG}4LkzO`ZE> vvz ,#~ ~R5Rty9(AC@*68aQp89`)%> 1..=mb2G-߳5eEUU)|Vd/캏YZ[‚!hHڋbSԮ>!:A+j34IٌQE'k^",ߨ@xÞ[mu:OEBp߾c: H9Mw,G߁iy:ywyQ}Vߠ8k6}A)-aD}^~ˤGmE-)}|ʃQ |粑U uel,M|}Ut#ٛͦ:K6ip z%UYޯ5Czhk̃0 闙K;@3>a`6bUL;>Rbc$c{MoLNҋMN ԟ]kjdnLqD{mk ɗgbkAdEćO1'Eh(JT?z4ca#ޙ{byUņht 419@,u*q(L0# 4gLH#XQf~(1o ލ7ep 䀢ҩgy|e Nqp* )w[+̈:czޒd5VұUw5Gc.C^yĶSڒ{jF|?@<M'7AFϯ]нHBòg'\(#d[tȩ+)? <;#$uH =0tmStZMKfK~E3nY\4-ء/ksʎLF_T)j36^bWAsdOg=lvPUH!(` QoTGj^eޏ>bWM=g=Ѳ{I?|c9*h^ uq[zʨPtJcb4d^kL( *!@}/sevha,ddtD;]cce=I-S֋v@N \qվ1=zy7-.X9Hɵ\Ih+ Z=|"Ţx9VzL|;PhZJZي[.,PMʨ^#ytJXXI4{^go1;3wRi\mXV8g*='O*imemL⤿:dC:&YT_іui/P_3J4|chB:^ OiJ,k7/52>!m=GkJ w8i*lr*cвDca`ɲF}{(#ւ`S0> zcVσl5ۊPx/MhN1>曽'[4X9 0E˶`NZ[{&uYm:Ǽ&.,V2iDABfj Ҧ%KGYlx커2sRgi7 Ek^J.fo͜$};2 {FT48PJWIv= c 0{ Ik~9ɀqn:&_9j~OI.d3NI n3K"lD"jFvwn;nN sJ50iއU-r\nc>o(/_Un%ʝx164Y9OH9{^bbZ#kx@2vp(wXm:u^McWJRlbM rEdd5lde{7lt={~~(2R&t]*D%"{ɤ0Zh 8?xCUOn;c+ LjvϗE/V4.YO=Z'E೔~X>6f?SȠMM[]ڃb5F5U8(a`d0֙e09oU89$130-*-S ɢZd Wn'gK6>`-xij:J)1r&y\k?wb23(r rwdlnufD ᠍[%= p:#-"Jh$1w ԗ} >●1uM:m swk7}q5}9%lݍCz¼&5o/|{^pV1yzFz/EIj+0'MXPF0k* ]ϻ\36 uӢzd{tI rgbmSS>9 =, $b與$o6_>bmHI] *ݐ--)sws4m:$=v)3qkhD fib0X^ZÄeW)dQ*,NL\!.{Ј&8xǢK'9$s[OZˣ0(Zw6ʩE9Ӓ;M Q{͗~mT`g &@]GjRUk_Z hpU{\Q޹ f2ʝOgr}fG Lr;'%V_'^sښ5bԼ\r$zuce25?f~ Ů(<(TxǁD\2kj^I[/̀Jb݋گ?1y>x} $R*pZLpÿ]AL1[qPըk RZwEUv֯i~Viloɨd/EiLH:'\ ᮓ[,Sg/%U)XEbdMt_ EUEGO;6t:+J04NB~y3|mbU[ȭG572VrPcUzZqt ]oŖ1nvY!V5֏I v&a~f% sǽ=[ߌƍJ=pD޶sCH̋P;V<K?-] cef9;Of tH[-?-<Ƒqblvm I6 sEwY7[=khb!(hβ,Nr)DM}2z1FԴ~6%aЈtesrwPB-b9tIe vTM1Ѝ\ASGMy _YR]HwM[hC * E+Gb*El>!EUכZ;|qovb]_tSncrBc Nm+g{ _E{d(Ѷ{D` w%MY'KR$`K"lz#΂5؛Pl|Bp}"{D ̲ (0 V X;I)X'U9h]L!I$>^AQ%z+] Wc;!7Oc<6=:Kc;ȸK֦68h"f(voJVoC36{_Q ܱE +MepaBdpbkps%*: % eý>ju4veFGA)H˟T7 p>7,<&5㻑)o:*i!8)%Qr&+_w3-%9eY`ꙪA 0Lp7m9V T#TtcOL?Q2"qS8Rǩm/̏Y iA0;9qA:e:}qۣ>62j>h=խxk-zZq׽ng䍆kIQ kPZc-K8е+пhf<6"jq&@kn_RTm$ړCbILNd-OuťKbs3 H^P)P" g8)W.;',kTH,X R?P<ޔ>Qq55 b+jm(*ޠvnv/ sX23K; L ,fҝbGоb4yKܭߍ\<gr4]la6D3G:ee 0\@\HY$/5;-WUB uuImuq*tCSKE29Yu?ꍠmPx;"2=Y8ҷ. ,z y'Zb;GTYgZ x} A$`+҃ހ~@'vqp 820]>"zUr lOrͅ&4%f3X5c:m''z#v.^/7!lX?OE0B "4ꐛSCgx=Ĩ+ EkCи,׋-!.tl! afQAZϩQ\֙Moh `Ar=_BNiO/S@Ї@e)U 00~Bg6! KZ7E.(C\- %mڀuсZo^eP&a{REV6yԏ (.+wY\hK1p(xmW2$gP0,a/z@xn'h/|+CaWsRs=oɣq"i~q[<a\~R i捿g?zvgż@826QD :?pig䪔B.ۗ2+%+EF }g>B BZr1$Ad[)M91)j_|;5>Ul)®f7F:)WYDSFXTmj^\ͫ}s'Ċ je߼ XZTטV]gJ|8u{qTʳEqphc*HT-0|{c JLBZ1 ޕ1'H5X] +OFLs wP;f-/ʃ-dUw.lwG6/zVxaqc2s"PlT8 nuQ)MukhRX#{AhxѨ3jQ;/daw|0U+r6pc~j {PY5~*w/c-F,*Pp]PD(M!?d~%_ʌQ}"Ľi΃!,b'62Q c69槂YD {bZgG $Y1z0'%a?.'"Hys^Xʛ":k~đM!a7ɳH@`__"W1öx(N9$m G=/J !5glus*@A^3v䵂S7e>vϠ zȝ7Դ^(w~PY!65^? X54>_iw7S###^ʸ "ݧ"H'ө)Q8;IȻAgɅF/2=/vril_PuD0LB>])q~iSkKSvk2Ȥ->]yΚCXK$!C]1QbKa.(>E().K[}E gRT?S8@US^.=ݮt5@89)\ lj^UFu[ý!]iTrj8˒)1eA~bZI?}'>SO/lNݓJ׏qJCaZ*Ky q%KV)L|W- צHPO$1V&-PQ2 Kd1(,"Hag6ؽk9;ΤXa)b&pqwjpJ' ˻NRp60\ɁLSvxQWGڳD a`ksvD2Jk&S3O)sB ~s{RZ}VguN+PpcI:r ڷuxK11axkToMw7,Ƕ^8ҏ/`\Ğ>6=ORΚsWq;o~yWtm<tA, vd:JLpbZ$Kځ͸Nݩ?֨^tU!Y v]?gĊE M`]i. J'<,URb:>XY8eC }Zm&.Ѷgxإڣ㺑^Ym}NM=CıY&CͅJ&M3:ngo[ y뒡n.:7Jȣ?)nÁ;Um(mF2plFPJP:gd'#F.i#='7=Z#ܑ&p8n5Ay-u.pciC娟l_pLMdd3۪SM d*aa .C]ﰕhqV(2{{7 #ԲbuU lcޥ2 ;M6Y'$MUY%3XlOPo8\ne/^?;}e]h6Bs71NֺXxSЀ},lQ5?Rl `eSeӋmg a2ɏ@8^e!e2BLX7Ib²nt>AzLAU5)A|zj߇{d 3͝q.먄'&ZL-ܵ: fMGOJ.%tH̜^@=IE2]rSpԪg[-P,}}j10R1xn-‘, SH3 fFBՖ*c]5@ZiЧMVxɛG.wژTt8e:Hg5/ݙt8 ]4:Mr R"ߙcjATI,dLfk{2$!ǧд"A#v,@L~j*C:L8L\p tov"љV$5^(֒V Ig0G{C@^-:KRqA U&ǐi0'M~.P( #QB)sҙ ,NwBEY~hb.N$3#څ,IHeCme&ihGVrF=0iV(4Cr5\Je֕L JzEragf?o+INw&~*qy|$a*!U̡nj Mu#P#t(4O+1- sR{47 w␆|k(VdžCx=\I6v"{ q\_s?_'[M‡!yvnk\'CB+Kl7IU\E rhs-bBϞ%w9 (^ahW3#o^^]GlcXd :c U_uy`mTR(ɩ#KלBGlRVE)Ɣߺ =.>t\Qa5ʹ4g0~rB:rHH9%zB"=kiRltp tvGH("Z}+p.hhT}:!v#zR_wbqaL8:xnfYz4iy'tv|\BF<93CjҝDc}N*Ґ `re(Rz~؝ȶ;z8S$ -ޗFDh+MBZ8oj T l߹ºHEOՃZU't-6f}m5.O;y+s m(y^=> fa|њQ1B!XSiH[k/XN0cN4 .?}t9dz. \>҈bb"p/#"m4'^^89j3rR H3 Ť X`dY׏[ xRu)u>s^I,%!ʅ!)a""@We8}DXߤοFǕDAS\(5q"X P0^XX. )u,;z\iS5J:! 6mxE!;C t2;z tLdP0ٚk3nY))j FUjWtСِ,&iB?wvlGJ%QUҹJ=|$pMGrz-A+,X"fq B` Ӥ:F6;Jx%[|,!7/{w7TSA 5 g/{X[_m6Әt S~gsY_opEY^(,g){22)*WvޚF_q꒾9'#{E*AsETϭ[6=`ga]: > 9o Ymԝ?+|<6HXa"K.y5X d&чh,cs-Ұ,Ͻ ASPdPb Èz~m?7!5`,6JVdkGMX:G@Zso*Ͳ̓u}-f$ٓSl ɾ 3݇*{\z&X Caܝ4;O|P1M+ -v({[ (& Jh V_*{WR[UlrOir'5# R Wξj%ƻ@E&|!q̿@'Խ~(`K^Ifx)z#aHp~ b>N`@g UhsjR]TR Ir/33# ÏFϲ[M+>.S`6s}>"dF%@7~.$4GnB੣7!̥.z? "&p ~ө!UtNjjE-&Q&~U; \sWT'ɜRY ~nWÜx SZHMo7{ڒh)_S 1DOpyxAh!=g[2bl/8oU.O_ e[- (^ZG9G,̼sE2^̠-՜]J_t8If6tjA!A|,N"V 1^"  EHDז1Jێ9ao ?;|c=ej(̔H9l{()~ P녕7$ edW@Ry-Gn\[۝G5ߐ:tȯ{/x=%JIFTȤu3[DdlLUKzU!3 ps"cU[Qj(h̳4^]3(tcpeu Ǎ@x_A'2#ϸ؁\Mi*yLևIWڙԣ-0|pb\?8G;.] CEvR!|N5/ (蓹8D=vycibZ6N=",fUL/UnXHZ`p%r>Q0N!J@/E·nZ, jL89}2 y_@]aJ,,qB0M|f|n6Ydjw(N 26 Fa;KRwg\44MBY̧GRX^ch_p7^̩(#*3tk U(8¥\{YzlQ0:$Áa|3r5j5L GdOءɱrjdY!h~-L߶ nJ/DL<  CuW81\0pZ-=-߿ Uu4Nǒ\I"!Zp#6ZN(σ+cBQd0QG Xlq"f-s~.w&B//_OTd+<p,H?n]|+S~`ﭤ=+GGo]A_I"o|?spR +Ihy!F^%䇪g=G>9f~gDťmItAlcR+ f9&0 u`da>.oC`e)].=jO~̉՟ҶmBkCPN4+Jv!T;rc*F,&E9Fu:[)d^`Hvc@Q,I-kw57ߑ4rlj ˏuohD~D i*v5]JfAA`Bd)ɷ ,)DxF%„DJ#{S k.A1Q͉7eػu>} ?t w^"4/,:a6T$|){ Z)i6}3f[*XC!3L6UzƇWqKͤk':"olh0%Qٕ(F9\IF~BQåՌkc/n7M7~/͐ǫNe`Y: u .[/%2"/#)Ba_e%98d\ۧ:$ŒU S Z2d)>ŷ+.(Y|C8,~^xr/B+㻝5鯏zB|w%GQ|>>cRݬoXj1ZejfXJ.3'Q~dRdfjIIv ="Wd:(={`'O@vh'BA@Mcyj3e82ta _|*@!iQA"RD ;ac;/&W󮍂t$_OȀ6x7r|3n/gKͼ^$UH?Y.D`khzpuڣK&eyipESaK)6 t7'- UOdH2،_ﲀ%ttAbP~WԾ!q4D$s›bqk#!b/O6 Xm e!h# BZn ~AmZMh2I)OcxZAe6ЌG[#e)2?.Ind?5hN-l֥]KU9V\eC/֩5⎼Kܹ]Fqie{1J íƌe-VP_tUU1'~Gn"t [?LuMHaulRVnL8NG44o|be?K`b(hB)3Ν U^&H/A*`WC/w 7^> V\F_XY iDZRQbaW_3D؎^# -=ӦϠsl[3аa7϶^ʕ)`mQWkw48XZh=/qH| &\2tZt Aqo tiŚJ|CU۔ y{M8#}PDFK%3 ?vVΏMŏiE(?uD*%qxR40J,\>:99y4jb@ɻ1V>q WDj?]ScY6lM+,^Cj^Ph*sb9BsZ2RJGJ͹b=0P3b 8%дDñQGg/ݵ6ʠI-zok+S/:tό9ҡ3$zUuV<(|L%t%JJ ~ꗑM_rn3_I 4q .ӅfuLi ĘJUkyi;3D+ŗ? @g-~**1B 1`<;賙GlT\hΏ!ьwv/9Iәq)ȡ.+AFl[@\#/} ;vUCRs-cP1%.Z"@sJI?&>ٮgI6fBtgMuRȵ~НDq5]m{RJ/tޓf٠g8/:en;J^d~IV63Ost}rcG8YE540k}WF{FØk;#0 2֧Ёq-q/g- EGV{5Z`_p\D`)]ږAoH4mYP8A"}R~sF1H_c)/7+ȷm%@J @!ͽ5ɾ:ivDH*j%+ǫ|ҴF󬫤N$@^N2fh->b E&0[$x~=vBL3)(BIwG}~-w}f}ԯ3;SxrJ(3qV")Kn&ИR/\Wya@4Cnw#`\KJ7Fj0k(䜴mNNoKi:|oK#C':mg4 R2.3NfEIr.,!Ka8Gm*YeT5=DPt~tI-nt<"}UR2%1w!CKjpbŁSE5WƵ; s2?ɾu-f9<.oMO=sg#4\fZ= Y_Z \*Oh7m [ IGHtEKbQ\2iD1cd~K 8*5>AKT԰1-碌EՕz`͋ۙb^zbataCI]Q:yb$U;jx3Jj%B˶/NO2귊:}>N7x$L`:'G*D嗩p:bn'qW2k`H]̮u%Ӯ݁*%*s̑aQRSո}]sLޞeQKyMg&vubr 6ɀjmSǩx#ډ^V&={E^|<{Hd]DNd群'4E"> &;whT1 =Uq7PDdnu5|Vtl n^jn$򝏨 BMZaϴ!AإjyD;|1|h +lnRF1pQ?Z/kf䭖Y_#_s8Ku8kgRǾ:Ɠ(ML2kױ >')=$ӽNif1N mZ|fĀWgccbs4:qxUU@yp!Ef*WPB.ZEX*u:lݴW7W$4 sKup2K %?[fFZsK5ؚ9ɼfeh!i}QtpԳ=;Ml/nnC|~q.T1qWLTO>.)_BY^\75̰ >.Iʧ豺_HEb~͞=rt U˻0 ӳ skҎ12W0QM?7\v>Oʷ2OQZt$XYYPFG O+ແ/3dok^|iAcY'_ET#常"_@ W:m 'z\UT{dpfE݃]9 kE3vkYwNzLcT"0ZGӌ$i ?N;>T hrȢ {ΒιUJ}/+$\BSeJ AYĵCC)BEcE2/Y*ܧ~WȏG lro؈t!3mۜp>anܑ ܂f9K~Elc~Z{_` 8XLo^XpS7ԀmTzAkw.Yk!KED^+L#1NFQd[:cw5Ms](pVCN~ڣ$X@(rܝk A#m@G&;U?v-yBM͏]l|7s-ڙ`ϛ[B/7NV9KCgo3TEL{ԭ},~TЧ"rN71J5,7؍zNQx()$vo"!duC ȋs;U~L ROWVb7]1~QOgT @ΜW hnO2 Pz{1Sq7NݡLbPMů0]gt'ZҬvevx;9 K {9*[%C/1`2uf>^`4|ȏۍaauj`y۹gO擞AL"a-Ah6 #TR%ٸ|zG ) ZYћrVIrVQf7Ftܓ by%MyQ L^@~驣ӻ߃m.7A ZTrk3йHF=r,EgiUp /;Wإ32k_$/|Q4B t ],Y͠E!-G`诇E&X/'d?z e)j[R4iYb= ;7P^aC(&+*.K"hzst7 CGhi,~[q=E@j℟U(tzӵ7Stp akAhj'%ysdZdh _M=zshdݶoU<DW2Vl6Gr4n3msԬG4s=jAP8Ri F@N V@"{1Pi[r6+q?,0*!Ĭg'+}(؄ar7gtNa˾)%ܐga2$4#/iDr寒6L'N$@x'Eff݁V^on T qa8+baoF_⒞'+:iRcN7XATKK&0uH f%}O G)tI,Ԃ|}?]dxU=|K͈EW9p){rPm3H#(|l^6nlĜg="~(d{Ed50Mm]4庚]jqěnNWRHAL Qbrݺa˛Sq PPUe{L2zQcsXI,V(۷[`Mm@%0{eƵ?Nd Os.>4b )ǃ(o9Xja^cZϪZ0U|b+췀Kz%jDMqQ5P,XcCp~51>ԩo~#߇ %Mhs\qI:{`,|~l2Z*~ sEWݑ9pӞ#&WqҶvbL Vll_%V6^wQ}}֓In(4ha$RYLpy5H2 a{wGNgٺtr\L ao x|Zܟr3j|-.CÄAh.ERH"\%KPH[:\yscg [1N/u!Gj5ltyI'nj dW:Nm zkܷ)瞤 /Dw-BAUdJlu+]ЅLi~Ynry̝kDWכtm[0tLJ2dl(Wo3xj_&lFEMA4A$d;tA~#\F ;Wk)%`=@)ڧ-zҶ)ⓗh=2\k{Sɔxl(;IA?NJ[IrYio[)+E5玦=yFіzcRiDI1<|<;WSv½Juֻxқ;(K.H8CR!6/- ȝF8"Ϫ`W;) 2z~?<~M*N퟇yc Xy,[#Kj'Ӻ-}mͩs=U?\̙6N86HC',o?/% ÖfLa;3!_5fOPvӍPQ&-rMcAQ h)1$Ba l;34iq.k;o8崲JpkOW"n{Xi !<͞xQ jGGL#x{ 5R -(:1IdoʥDْ@DwDDd 4Q 5MUPƩ!jB* *ñWm 3 zu/CPd\te.G=̳Ԛ]{z\ފժt9\_S ʹ zpحUJؗ~g =Dr!T}dj6٥D@htb$F6ξ !A?iHg\3G `3"pͩvq++s4SjyWm Qɹ9ݻsX޺գ:TN.tIYZ<;vUÜc!3 +M0HCܖu=5t{.;`0 ڈ U=;Â_ޡQ&W@mO6RGLw4(H^5=d%+6+dUV>²cesH 稑+[#_ؗ`X{Mc|6 y+gszWA,V&Z{*~ߌSrtE62aUy$/3ּ:b@g6?M_1:RbOmUfZ.dzwL :t6T'S@'IT_rEъ nq035wIw,3I {>jD l$CSbP;_.nLV8Z9.`ziN:%oⲯwop46X@8kVM '~yȌCC׀:FZ5<3XVs STC  F1Y;@wrJ~Q))k`P-"&c-##={[6A܃2U![c}D&x,gwe$9\2eV5n~a7DeFs^t2 HG33˴ׂj8LEi"7X||R'Ag3xΗT.>[5)hx^Өl3R:G20ݥhXM :)v++)}DH$ʦoVR_ud}fFϽ(!ȱ]nE gY^|{E8|J3o:K 0hhӥ>5@pbl$lƥD~BBlxcT6k82,ܺ(83x2cA?)I<>!BQZ]?İJ?n4 >$-.H]"P'kxu;,NbGl ҚW[xXc`DD߰= n);qvԋbp嘚:!8|@ !3P1\1ASxZK*҆('@S',}7:eR'}ReSu06Jk '=*H17M7Q^|t.iXz81wN"\dWxY+GśNDj[\D rvaz'ZF :6%k%EpvQhքXwfv>:0#W@ay+bVTld'w4fݕ]GGTg p^RSǥO!خc8Ă]BXeX=NĪ(RҦ1(Цy xR3q@NڴHQp7F5 M} [Zk(v  wCUۭI=_3[:`C;,A=B$'`q Xipg"+닰,.ueMLu Ui%ݲ&Qr xw`pJ0 zC}Œ>JZH2b ]zkz.ro¿Mz#Pј5A--qFIc2aG8⃹pu+"F[P{ Dd 9F~xCmrR@ B8~mp. gZi,$)ݷ[uH"Bx^ b|7cݎJ,hؗ`nLF/Ww/rk9oPHfs A8`Fv(6C`B&@^,=8 sB,`|ZJقA\,1&k,p AV''` hmb/I c7NR #_ E=xBzm zO7+fxXc' pk _x٤P5 |)XZ_pu AeW.tHnEp!U38?@u3u[t@FYu!v,x9:׏ M@ć}T ڽ1J)Lc, If1d0wۢi@AC>6@UKAߓC* @p@?u#xr#Ht HH0տx fE_@'ecͱJ2zax&{B?.5 \xe9; 5d璻ұ ϭyV_6*q :!ĕ87%xBƒcۀp.eh`RqR{hONuNXF\R> #VM" *XbI `̎EZ@/_lĽ#gْC.Uun:mk$Ov} )?})Iǘ]$ԿCO<+i!sQU AhИX0MlBo1M"Xǧ*@ <TX@_[/ xߗ#sS#5-vpiLIlяwl` x.QF|[l5e9v0>IW3ڔ*0 9@_U|l$ 뙻q0m_>C}U؉}MһF: /~rF_J;۞C=D_3tV-{B5ogoK1XWŷMa4#-4&ń sAԝ&`֍m6"bvp+Fv jJ ؠ;Tx\}:$PYK:PMXhMᨍdڰ""4y-Z}s/&dTQ.:mjCrg11eO| Kõg1w5O[<3i?TH[iu,Ov6>^29hxuUuN/:@3;ϑ{b;xh4`A .,ȳ5>H̗í5e&N2i6d:x K97N`Nۀ^D<5nSAFe-'~,_esP}9":rfF_V@k,TfnYoSb~%C\O4BOvH%S4gӝ QC4-" yGftuZ^%{dAiQS]g4p!OWM5U:=*ǿvv'F'`[J'蕙qd٣n۞U6NIJeqVj^;t\s i\|Cdyc:xtӕ8=SCxIF l uøx7m}޶꤉Y 2̞䜴Nx@+YaQR&1n3O@.]*#aw|NMPȯYW\vc+:Ā+Zԟ*I9B @% -C&۰K#-Cz"Pg`6fd[*AS6ԖH9gK)˟k(_=G8f^_X=Ȑ:,|\.?̖j6=+QTGWG.yy?0W}'t'9w-׋y /b&DЏ=[qoQd?T Q.0bdr"jdޘ]--A/G$q>0{ 琕s(Kcm 0gT 0ÅGbGoYs(v@,%~w0A\&Bw;X:"W^Ҝm$ԝ<š3WZ}э`l91֙[XW6g:9ۗJ wَxE=hKE<%h?<igm؍/ !W\sx<4r}V9vE[ .-Ҹ;m9'U)Y*Nww͂*Cg.TCԚR62q"f>U \8Gj#}عlz YϦXk3 d&0UV9֒ڸwVyI%¶}av8#Uݨ}`g{=d,%M,s Dە)Bq;`z{ 򋤽{WسfQ]QAUݗ<9~l|zV.,{B8۽HHb|mAQ7Tol+^"m~ʡZodOSK|zؤ~XSzV1g;/C ѽlBۣ Yyz2cm^kpt*)X@'~6ђ&<"hxra( 93@c2`j<#!ZGm"0y5wM]~[$ ;xGv2{ _c1E4:z8?1+sY˶}>HDzƧ]y}K(YFŊ+ [sEz<fwaf^T qYu>uxb$ƭ {Icqs>[8Zi(6\T3RSbz͊s2([mj(hB_g NfK\^Wa;f!c-vfDR^ΓUZ5(Ĉu2 K$Y /UkHu?oj?f=0쳸ziЮAҠAW;G.#pxXqd?&G;VƋ '90o\A~ClQJ"}}m^ Q5q($5ߍj-p(slB!s? O^u,rbn2Sɭ1"Đ#,;G߀Tq"/lguYx-#,&G8^LVEʬ<(}AoPg=O$*/5U84 :y@g8'`wNqsDA.hM7,e } l~]pXh] EVpNZ*9Y&Z|eD\kA"^_e~N+_,%^"l>uJemFiebC}O([&dDŽʯ\|02Gwkgȍ30nՕ4X,Bo CC8Twu\ј|pœFaS4),(%^#Av;BZQvE$`Vʫ 󩲺;#40Q 2U tϸ:} %D\(F6 |bp.K]`˱ܕՕT[m!a{j.4٘O ~L|SWN3hEPj!"3DAPܹ n#=c]ĆuA`ʤ-U!ȬnҚsH7(q0t dҀK#'x|&}94qBt5HE daN\KT`wKblr-[b۞T mGZ0݄Ixf6@M,9B?O* IT8N$%z@:( /l*/C՚.KZ+a\QQ9F:D .iaĻt( lW6J!V Q /UQRxƍf|@8 J}NfwS80"ɱ -=3ٷc=GUz.D1hB^`@FtvR@LB_**aqd# V4~tEl SaDYkg[&#O(k+:ƛ7 GXO֝툝4ohM:@U~.w*P۾?6؇80ɂ1__5J!K/ p̳ѻߨ *)7GRݣ%cAkph_X`k"HV{CFߞEƶl#3/ k]3BACUL.;eG1 mB<$n!}nLOAr~BXۖ\UI1~(0iѮ,՗]$p!ۮ/5 ~9{\5h`")P ~*JE_ %qj>1nVzwFcT qsKpoYU2'!)[(܈nDZ&I.nI<]Z ',c"“/<77 8}ygDzWcęa/}< nH[V+)QºO*ɳ ^>t0r7/C)e͠%rQM`&ܟfZž8&R׸h/Vq_#(E6=!ExNP)a: ![- f2ktɼGEz/ٺ5YNGI $Aqݠ} Țz`pG!´'0 yoIPۭ}=wAdEqh$ՓQԛߒl_I2/y[ i+E]m"s] y,1rbmcsqcOɚMK9WP t]lZړ}׫𞞃X<lZ 9ȮZ?`>11_Yt{3;5Qݔ rY WzM|Z5sC\SHb~,gTq6ҰNRK>$<6Դ3;Bz{B- |fȔsAS2.9SUNG OZwJ4 B _m@5liږBg$>CU#qe]ta2<{ynm->񁃽̷I݊4JJyg80}TKan5w)"@幑ϯ=K t"NE)u|c (}Rw)>[\)A‚Tj9/=X,u͊n4_.+C1S8GYjα#y"Ѻg"ӪR&'^zj.[ 5Lzm!tVv/ط.7MJ(` hƗ$T1YR @J\k`Un Z7|] ,q*z- ;*lW{E }l\lVR<ʆ?|I`{hj?k]6 (9l)]xߌejH 'y +?;;Jۯne/{HkfodZ#$?"D|Hzv.{JKMywk{(Cw<=9tYYkbKzWʃ}#쿢G"C˝T xbpUX s mr}\IM!)";qz=C 18?{ˤS@5#cmHZIz`"Es@ ##QeS\ LS܋$Ftݾyk n[D0z8NC|] XX1h?c+ 8yiH^B*'#]?cA=HKQg7[sT+刽X$|ygΒ}ܪiKe?o k4v]ljA7MKxoR,}MUOT^{xٍ_\CI1(Ð8g&sםYSq6R/k# 赵oV BQF=AgKЪ|$.%So&+3 "ՀWM.m43#q;KI˛4eRjJM~,mL֢i2 έs?byXCeksCLڲԞa#*! Šc)Tn'.h25Ƶ<{€\Yvx<^pb:ކ{: '`GiQƕN$%dUm+dMh3lƶq1-Cr6Gڎ?Fv.Ls=^5!\;3?gL#I 8/퓉VB\qZQ8'eϾG'j.)~Fwe UM/_8falC 3єsOTr\~YS=NV@QINUR}ɺ.P-\ % ~@װ"=nR> up !fX hBC2 1p3] NM":sF_Za"J R9zӨ*fn Y@s-x*t7:78" 77kn?6!E&QSеEyEhuc oy:衧9pp`<h[dF{X׌_b/⦳udnȘ;fl &Ғ#K7ݞwtnXd #2e/k 6ۘٿDOR?Z+K4?>q+M X> >7+7؈pi7K9aM DzsMFٍ@s1PKQ!V\5Ɵ0R왫~\XGqӯUAHc&~s9Q  b/mۺ=ȇ!ةjΙx )Uc_*NJcwY}O7-B%y, \OA^?yы 9Ӧ ;ۭSը0#01y0>J΅BDt8C!|KvИ} gO'ӹ3Q0% eq<8K{k鲫WuұHٲ>Qrw")DzR70CœT;ߙ{Nל2 4I48&AN[{TK $tJH&Δȵ:oVGF|P1 ^)r{ ؖs2!nאӞbŦ%=bѢ["ۃPΑ \/LVb%"jW/a8kE=p`Zł_jЍ5X Ni˂lK0^#TC$_3q bgD.^-&UtIx`AZ6e%;z_>zL91eHd4 6:! U(#N>HnԹ'@ *1yz&~19du8{+US'چIHԟ}U9bhf& ٵDɵ㲬n<ʿ\x]$#:;d{wgL"hl#FPU YQQ\hv,X7x?܂*sa@-Yl"qBւ%|wycfӕDv_ߏ_sxޫ2)VW#wA<"}PVcE0YiA : &W?D Z:(l^t[A}f$]}5oNw)]> *߲?d28k=C YG]MY goȊF 0 UH`9s*,09%y m/Q&Ѡh1xIrtmX)"2mrQ3 aS~<6/ܝ$ˈQN).'3룓Bj f+5 nY1GcnLj;^˨| NCK4ʠ{kC@!4 <9 ?qNFF n >a/2!VG篁Pw :FE,Θk%ZCqzğ(tܹpd}ϑu"@`ҏi_*qT?fYAeeǑ\]gdƿ4>v:Pb %g˰Z桂&y05TjTv-僄5ؐ7r@~T#NX7MVWѱp kMk[}0x肖 tx7WUd\%/*-ss g&>]Zf&|@0$cK:U3@o `WaGʏ"#a(w%9D;NccCgBd[Nb~ݬ}ԦGLL3񸁵vG M7- F%[^S>4`=HfW3Q ?ܴ#ktσ+F}mʃ\doɌV/KX!Flhuvҧ`h {f/Z{eI.P:T@& Qޟ~Fh݄ͬY>w/MāAy]ԚDI,@ޗ/1 _D51ZZWR$PYY6(=4,Nֈ2@kL8 4./*>M^  \H:' q3Wbד3A?Fed7f!f|ңji34Ebfԫ ǜ|c_$sxRgM37`QAPw]sO8f0 pb`RHyaY#/:ql.%`V4<{2|(ی/ pmWyb+HDn1eE蠗BrM)֪#;Yx&  bd`oIƬFCE𧰎# Jr&]5"q wp]Eّ= lV"ؠX|d|8Y\ď֓[GمSmLrcTRS h)VtãKd ߋgE%!x.$q\^g<56rw4؀휳0 :Y\?G@ O.y/e1RtHcK*-diQS:gԚUb&?ym̫>28#ԕ/5xe[Vjq3[lԺ|myO0xb`[-S  _K/W%^vh,sl9<:\Ln&1r/1/+ZTrBOSРxܞ{ :ãryUcvP{lM 8D :UߝgQRXB#0}ȺI8uDP~njvUs;Yt,?{MH+YɐkD Ϸ©XRVwnFJXx_!Ej,.e&@Ui FɓKx!WpX;ǐ_toBx P襃o5;y*8ZI[d#v#vlNЫ>ןy %(־)oUP{tZG ^>N)SҤ:n&A֋Ѿ]8*kh{y1T™{9+)9/8YP| 1e\r``* /~(q3DZ})nl/2ѬOtŁN߇quO\+;{'d~>v\(7bʑWBtn?nCu1©6&whh%@;"3vXJ9~ ^ɞ4Ƙa0OGI/p!>L?h 1|F!`Qi Vcg{F *4\w&3b9VLӖݗ~yB`*9iJA: R'5ޟ^.I@L*Q~Ȥɤ s67]olMaqX3TyEwP }`1QؿXƻ+or˯ZQ\ Ia%igj?`\UK*{9L:娣~Юtn2i=OnLzRo 6(^0Te fι*#2)fܣ^D% `s@D#A\'dLo-c>#,HH[j/{՛أ%>>CXC N`K_4Ȯ[b THaXsCT\6o{}h'4!ȝ)HR  TcY~&K<5JGw6=-UPkt>'"ӗtB<3yOCcB#Z ~6g0j+x/ "G0$; ?-M,ͮ5{f>(Oa;fp(4XCl|_n{` [v{{+&,Ԧ') 8JyV ;bGW8 6/S:%2VSdݽjn 4¼EVP ymǩMAusbL51YX˛hlG hU|oz_^4+q#:F8 _6۱Cu!k6!A1vAeoK`\Rq *C ?TчZMD[dja)3 )stM!c {XylcL#*@ukbQ%}H[7bfR= X[cVKq&b\2#=Rb{'T&}d9FhC32\7 踹O{2M4K*X:<9ߋcw:Ӿ^= ÊrnJX8OrrnZo)FY0'75ͣ#jͭ_HЂvˀWF]?ζc@5=$-ݞ.6y~l >jئ,O[t laY'k'n:faZi]9WwGJJ%EH3kܰ 6%en|YK]4uY/ ٠0{Y;~ˆ]4sE߫jCݼ4/|pٸ{O Z嗦F>S<ʇD5c=Jpj ѯ?!e*~rWkGً=1FXN\ 8a:Bq6?ޫFOLҊxI%Oh7^;&}C0o:H`yn*տN'я obda2;Z\kd^Ma i\~k0*2Cܦ-#G_& Ft#JQ6"*$mqyX¸$d6kf٥;9UEְݕ۬4l 3v)U5]I Y~C (ȾW4/WxiM$:o{Lh4T\ 4~b. Efe58\4nJpSV'2կ&,K!BkVq%ѻ5vg["<^ڂd|;olF|_|ugts"Kvtѝ :h~ʲ ?`-qjՐ1I1Oܑ<O~FD?~jGP7ƍ F8c*tOd2ܨ6lWQ9sQRӣXw;Q VZ.Pvp Г#&UaE{%U4}wa4(3>v/>LC~X}AypN^8; `7r^Ġ AO4Z?J Yalm]"lN^qؒ-g4=.kiK [ ɤ<_&p-Y\i 7bMK:WbdQfĖ|d6` *~.ۂ8}N3B\ w'1[\PSIY2m6.2yt.oP/LR ߟ~k׎Iò[+sc $fgżk4 ~ۆ*B.`Bɢjf/":jwj7u%D=7z&NGi[G+m*y*jCh.:CC{$_* A)E , ߟSHΣ<+QCQHH|]~̹LO1r6=Fn6hBZp}#M>ʿc"((^oWhQْ+_w, Z dp h:-;e*(o\k(: ~9cǴƩ^Rg&X.c"쓕E|r11G\C8qMu3l> ؍x5rfXil&{(0(U6$gԈdUf܋#JST1CO"-,+}֝cS^50S`&i"]'F~p8Jkpr@gJJxT /82EIz{Ju@9QP*q 3o 7[HY|IY {Ac]Vy6@3=̮o^nKT%Cd5y"1]WT>w'~yeURi^XTcV qe-AۡT?,K@/w؛hbCzj$VuvNR:nD o'ȤÇlv-uί -U٫<#reƄo\!3=V'N}`~/<1NQtؖ.~OSj7'r\CۻT xf.+$id-_(ȵyaO񟜈 j7f+J^ Q#Q<=~?T$p|V,KfBwG^XBp :Zr R ʿ>n5{V0Zoqg_N60r|¨' M#C}hn.D螅8v; 2K_z.Xg,v~ HPdɹ7ʰ;M\Wh׭9Mēޔ:?1Z188۟d.,(؏@/ m.p-ch\DpHVӶh@*]Uy4tSC!P)Gl) t =0B-֩O RRjM>U`UmMg=LJ՛t{O5;dFxqQ-WdbPҫLT sQ|DNKӵ(@?'=F/^6P/*c#,\UŪi-%ϐ8O<xTףԽsQ4\%X v=?}BՉjy8x:d6O U-0eN̳C{Oj:[FǶ_P/`ԝڭ]p37 t~O~÷8+4u/f_ <۽,|9r4دVY }n˜2WC:3par!F|?w81 >-Qéi0RlB\X 'ݟQ@“!! ΅w +i'ŽQ"dt7.ӟc_RG^^T,~!ry)FC$w7i"Hה.eÜ^V>&sP/)6y+$rb"f*f D}xnLuxOa*9D'sNyO5CγmBD(8%YRbr0WAE|A]ͨ1p\ % s CV:@Dqp縭y|+W_X_ Q9K o8*rJCI3s ~Qry!n 9s0q{y#~Z "Qyd,^ٲpa4[NmI/YDs#h&DR:j?"i[[U~zX~+aNY}}3dX tŀP wۑq68ImM;WN F]wR P?2)S6N2n0`/H^Q~ĕ/3.[r.".H9YR(*KYOʲUdR8΅j?P~/zTFj@`CI7_o#Yة3|Ä+Ϊ\RF8T`+͏`X[)?f 00wD)Ԃ LT3{4D'h\ETuX% cCZпun-ʱ6%UtaV˳tW$`R[`~ptSV٣-z)}$!Wp͟[S4]`9J"bY:9އ{r_Fbu)B)cIIh0E鎡VZϿd@].{FCڜ5|<F4\A꿛Qrڋf Lnh#mr0IMhԞ#AaHLȮ O Db-b.7%\՜&S(کÑ(yƂ''X1C@ UJYIn z_K1x7Qѩ'[6Z}9s^U$,:. B?Fd冠*J&s)N~>_9a4ĊeҷgM>WnZ{\v!A$x b(uUH~~@9i33eʊVTa^GʢB/k:=P`7xA'%${@nCߞA@X'%uY KUH.vBS0!8k,ly'_sDy:!$}qvv\O^uO~l|oyH&q `Bʺ؃LM:5rz4ӳBqf1 MJ3H%$c{Z'RNҭNF7%(&SxZU5 2 oZWڤ`pp]Thf:n3KkJx{c{ mSw;$z ]Yf+g h)a{Dd7si~p8CN)4'Up.|RRy*ܹdܮ'JmpO%|O5}ng}RiyaDdɺpwE6}j&;&IQΈlNFT!lRaY Йy#'* ;Qh<׻,j 6ә%)m-8Sybg1h;@~>@{+,y6F|p=>(5LȝJ61~t\|(ab/}8YBc|ƹ`m~p4Y(F6&{Wktu5InjZo 8YzZt-]"P2ζ=j/mٖ_mۣc|`w'b.'+Oke/ +:F׭^Q$SDHoM<VI}- Ì{P cwrɬ8͟ >涜p5_ef|i3Ѫ0e !7pf.$O|Eij# xm"]=yUb-Vr$ĨRz=Unq 14w`uˮi;Bw01;2˻Ɣ2Oq'5?W}v.>|ǬIh6c-"w1\fjqo}RgLCz5vx8jX~JWn̗eh yh@*Y8X}]I ͔C,|1YH̥OnCU<$R^x= +ae\`]=GbFЀFA.xS@(eۺy}R>hY2yrdd^7D[]r%{D =Du㗵ICr5iLֽW;Gڀn$_8 3r?t.fKhn*@N5V^ ,itfe&(Ҙ)H#`Zn##vp_E& G7 oTW"N,xq6?T(tnK˿}+TCVxoHhyM6HXxPh>\sM`Z4h*S&6 "ߴ+>طR6 <$#_%R1 ,D!ȭ`U-2D\dc&yZ˴@҂˘==2#;H ykMaa Y7;D6qvx}o!k% g 8C %Nۃ_㵸]ě/{R+gy7KI'zhŐvC3|^`xur_{ qiW3 yz,eK\cRA~@\l1,n%Zl)<:d׷vؓ5>/+=sRA!p'S$5*DtgNX_6}N-K{K|/:j]uPf IÓ^* o+zWp9|3#}ؓ;&--fFyE,.zI| RQVb[GeN(ad΂ʁ3M;4v2~Nʪ#(A?~m8`? p.~ŏy!uj;i ARQw-(0_$z"BG/u.AMHwNXOkKs JA`~^6P1I~UQ;&O3BSB"+y9FCmS]f(fKI^Z!}up ?DK7lk(Ӈ(PeXFNx[RNig(Kbt~\$lB9(OB/f`l_6zr@(]vN#dVu9,yk@DvmS$Khw 0\i<gl p  {ke-~eU֐ԉnc:m#Z| 4xw4y:3xCclz$я0w B ^gRՈRfí7qg d&1B${gT>w].td7_2~uD5P;Hx%ӈȸDu?S~[ B[&wc\_ReaUځ+FL' ފms qOtUxbd ZQA|xn0䕓WSH X)̡ D S C. {:܁n͞k k<Gʍs+wG+h3Di)]B ")PdtxqiydˌC* 2iF_LLE\A(3}l$_<VY.~kCU*p1Io4s ] .ٙRa< ^.@V("n UiI6z!1Mrt*09#i_$  ^ݢnH g&."s )N;.(]| $Aۇ)YBjBzcMd6v1&69ȗ{ӚrfHkYzkCY1pXzWّ) ll|[}R 4*3g,)]<. ^'K$bFK`%"cծ=2M约7@0Je0D-'zMDK0'O15jW~wmL!}ݝq9;@ aٵ& 3LY͆)&mLwU͏6k{; ]t1n@ | |ǫWxk4XyfZܴ^ˀ{D]y/U X 642ߨDZ䓸ɖV}\a85̜t91pʖc=)ۦ[Cڊ:OHsꗶloS}`=+(;vvϡ(yC`x'_Z7R'7*%nzL27czLd$0J["*1'cLO>0~c Y(JkPɩV_⺴^ל(ָJ`lP/Дg8x^{O/c'C}P?%|/h6lހ:LSʃeC尘|DuH.|6ZO BN8t FYLRiu/o6@(9ڠV9: .qrوQ+xRf B[MH7A]ZMY+ʙ`h]|"9m\Z~`] odyQLn |kġIRi8zBeqȖVB*[Q?^DK_۫˾{ln d]g>!4%`Xt{œM@w3sj +j,;gZhv>3@D~iΙ`\[&)C TIZ+}We=88#Z_EuE+po^RMS&Ɲayyp u4F X-e٪ieO:ߩ,G޸4i]j4?RAU\gOHO+THX]EPCls_7wS1Ko GVXٞ”5H]O$yaT' @n)\ls ٭hMvZarS\M2l+?jvWJY18_[&ya TTi#/|Ed25Mʼ`3(Vf8ۯ[ % DE 0B%VFYgf8u{[T`*7Lh>7_ɯrM4D_Zq~<{@=;9.e|S=wx@YPi#+T?X\7+(mwdaJJuxq~OkY ~L-e(h>:`n*ASI}I@c6ay_'ap2/r?V^VZ.CW#Peea=6'"[H\3G#s:rD83{i4D,\]HƔ 5IѠ:%y"̵ Ӕ)ZaIccYJxtWO#=a!I]W ;(g } K'9_4j<}s׾ڷU> !2 Jg$c!m~Kڄ#ϯ3[3x 2DŽ|w'?eS;lQ8/yuCi8 Gtr&AM+Tï9PȘyPt}(4q3] zMwUh@]Ÿ"}#EQ -!K`F] GQE5mkJގ~;)pn4y{Qr?]9cy[^SJ?e " *pYU9%^5qM:~,ogB8X봼XV`zE}<Ɗ3LT ,:#–Y6x;AOxS"<,c]C{/<:C< c# RId2zbqnH)4 St~ *NЎ}۽vrEC]\b.KO/t1=8> ?{Sɚ&W@!+H*[[  i upB||G_u{8ѧY\\!^zRJfp_hֺ9*,'@>n}Ӄoa JB72dOXSעm3V1Wzд=>q4PU ';Kz'#[c ͽJ;YV%?$ ǬMDaN%.iA7L e-3dSV:h;5Q"ת7]`T5wrq,%+2e:@5SL" 9=d [x\iojз|߰ѫρ'W6Lƕx 8cK'5XKKV"4jG:*h:Oj^*8݂aq/BHz~'bߥ8Bfu d8g5_kۺv8sPln/kbtKXAV <5z gj‹rp%.%ƃқt^ ]WJ-RͨjXUHr06u=&9ygkŢqÄ37bI^*.DU8ŬcHJ1FI2K4e=t)eDu5O2tj3P:?j}]5$Cs/YNXP#88RєEmaߑs4!7 G;}^%³W ^DoSp(!H%nGJ?_v)6bf&΢P;̬F;Y&_t,Q_EZ XcV#(g ?D㨦>ygy&2 EdJMSo |b:AYJyl XZf}YDU9!3ɠgևϧ,2qE[`ԉ@D#&ҝ.}7{t9iOm jo>Yb+)FM@׭ 2~] X5(åZ2[4BS$3j$T$ً(e$y|,#ؽ4 6)-tKq+=0\ `+Z\| xh~gL4#n t ɛ[y2?$QsU|,w0i| o+~u{K;Ȅћ|n(ht`/_/ҫ\O GSB Ν96<f;1{Dzlib=9z{{g:ᎅya\TO2[mZ3xjN ֩SվIyVlFl4h9i NY~̺5VBVHBn2:>_\.k&d+ ;_GTv:= DmOe9;rs0V{NAE@L}& RIU'_N$"$Pcs+AFI=$IyMWǤ`-ޏp<7 FNր\L Xb$NX? SGÅޑT:\ЃG>"I\m&|4 #u0^JԉU*琯%Kl#Tfv>ttߎ.J[ŋbD+_~!]:.}AMb@\WCѷcuLq YY[Ԇ^`k:R"$@&(Ѯ% l>tn.8GU7P/[@ >lvdEpX*enFA5J%!ߺ@2X-y߱r.RD'co^ʒh{4 L,lhtH0zV =`i"Y1Ț\]zA Be}2~w(X-NJUŧ:Ugm]ODhm+6Ŭ%\I)EXKoX3rj 1pjLQ _i=OEl^v(J]}j\#w^ޒ #GLy9<;6\MZ6K|چ*ID~Þ*#klQҋ1_],0ory0>ʀWZ 8pnoPFƸ ))%< pU"E o43hׄ-> p5l-ڌ^rnw{tbX0$Gvq :^Ixc *Kɽ@B_JCOOCT m9V/'!m{JlhC+qH1)ݭ.#~B;720l{e|IR=TᲤBMeY PVmXrL(6*iӂQm _..[g+H&M3nӴ g (ri m)'ǛE\;?S/-q |uɈC%^SẐQ/<8)h[YGwׁdM85hwj"N PȖ B;Y1Ԉ;:}hd?5Ҧl.'>3[NE0uPgQ8F9K)Og7B+n`R%Ԥf޳u0B(\ZUoT9ʉ?8kY\GEӰ{ bCe[KՀ;.:I3G9(p i.MrIŜ,InٶcU;P%4".6 H)@j7t}z9(j8A:J݁km=hU&WhCo\EX,XranrxX7>Kk7 F/̕x^B:&dTK񰍡.Ifj6wM8񟭦kwG8 e&!p!eӒ?8-WjrR&usr0]ePJ:,E}%3mD\Fpz2 >aVh^Qtk]oZlȺU*Vzô}0jut?@ty#`o`cvRǜwr\v@ AˁOtC&ad~Lxmz#eHaf5wr@NfGޘ;}5D 1y~m8sMgRkBԍ3:)x$\]ݙܱ3MRUhriȡe@ցh,w鑾(SZc'Wt8ѡ !L1l!&.k)0~CߣCh=m t?:A]9IE wH7&t9g!@F%ETZRǀ?@z&KeVg{;9 Qniې*[ʃ]ɍp36dnHv;P$97Fo_?sG6a*⎐w$YF21QL:cB`(͔A *iDG.+>, 섁 }B EdZ"wj J@. &Z,=&{.n.YYo|Ot z" xEcVąd)0Y-[.RUxOt3ZΡGĆipd B/]Hu0g-lG.HA>;bϨu0x$ c-'&9S#~1fB`G8鑗Vr<]>sB9@ 5Ŝ Ǜ[|Qu]Id4RW9*c{bU^2^q|\hnxLzhOx Q-$o$`_;N";p@I)^aƬ{6#pNY?L 0cwEW .VHVa~? y+^- CC^ٗDŽ^ZV,@\+a+yJč`H#Y~cwPş{Ge5(x4wPNgsB# YUdU0 h`^uo窆O 2ޗ)gH!E"+BF ~s}_kFUE~(ئ?P=W#r"2QгJE;5rA8۷[o;wG [|WlaBk;'pj^U!S.Qݍ0D>qA`U_*RY~V!&s1Ĕ3Œ?G$q?3wbyoaζkFRP}~%jzkuC7 aű]PܺqidQ \30¾p1Z9Y]Hξ47 [tqo4*_*D2¾fL/U84d+#9ӝP-cNl o@=#0.AFG|BQ[HxWPV훪GL@Hw40e_p=O2|ū#F9e~,۪=.ݎq ذ9(Z|\&ԞTX_u?1nеMk^3T/?3XBs˦G>?dOQޤ̵uyƳ.9a'lRvs>C7Z3ju(}*>Gg9(Qm,z-j<B1 2V"ZV4 Ը'L %*|wRcB[I?vvYFA7UCFuF;?ܙՊ+.ILPW5έ*:nZ!Ĉ%N |k2'9 1'{ ٩"}r~ ŽDYL.e^Ԙ%gk%BӗVdf :"Ƈ7/1%.mEms=_.0HP }-aGo-KZ5I#ê]>!`k MG jDLTEmX?V֨4!>ab `g=w76t JL"Θ7/@@^MvBD;! ,BK7d7ec ҷ.ĄyB3L%:?z<ǾFt&lR[s*u~8x'pL`o@1itv'dTOa k$pJ|"|Kί㶬&@8 uX[Fo/\ᯌYA&PѢ=8a0Hp՛)CٶMr6K;eE #dqzZvac1Wq4m2WS, kvk]gT`n='qyJnJNv4X{/QdpmD:*.XUv~D8U<88 u#>osW)Wq̝1}ǙEQm^F`)='lݖ)qkYݙDX.9` ^Y pyv=T_4;TJE" E#UmZy ^-pctܼG)t\h"Lg%uPU[ACa֏E:Pl\Fn%X|Zb{;a[a:k$G훐)BJq֫}<~W".uKf#K<}.Hg8:ȷiЂ xLSë́LoVwOvb ܼ!wMt{7@RG 6 ]ܔ#\'#o|zVB&FH’ՙ#k}L*VR&T '*4SIHF^5@[z}^]/?|/Y.<:8y63Jx s'óox'CF5^@{l☖NdRU:/{hq*ιI/6P\㋇Bi@j.LUB;7NX;PAVkvbH?Jr x7ծ:7N'HpNf议Yn,A[k#%P"Ii,sw jE(sumaoˉN@ bjo= qT )X-/c?wk&e"l96+ubiJ>ͅ97LC/3 \ 2茎Iu}̒}7@4H)_H^Xh)΁x% FCd`k^: T[!B!9Mzw5!vE*&f IvvF^>cd)n"ܘTo&PϿ`Q*Cߚ߉sJLmqԽ43S@Pnpq{O慾ǓCI#'w!ٌzO+8f+ckExpP̗+v1.>뭰 X 3ۇ@A)4E˿@*|9ݡ^iζU{ITj8fuG^7*nܖR8U $p9@ d on-xf܊%cׄ2_T7Ҷľ+qЁx[JՔ9M]e2& oXdkV s4ߋmEv80}<"zI k?Z>4`7D~e#[xd;sHoed}oG㩭[ HQ H(%s*L1PȳbiJ: p4:`ia|=mp lQhrh%%;.s4 fd EDž5I\?B3!avyl:ؓwb @E9$|bLBFo4d0N=[х겇jAt(Ww,r tū|@_[mfXLJt,YvD8pY_sJ?鞛V@7Dmμe #{P T *w5BL ι+M&Iמ]{0FՓ^Z!`'PlfvYWm;ZX/XGVmcGp|`6`SuOȋPtd;ʶ\ `Lk$eB %+%2͌U&^f۲ò|56<ہW*8><*2`?B֮Ͻ#6Urlf-:I>(fq̚aЫɎ#Wh"mgV ѪSQ $J8sbz-e;aNys'L*V!vVfg ޿"A>G/ۙl|!hoǐͱ_.\C~ze5.! VM` mTixX?Kr_gjC`AʦWHTeXbiazux4w=U6²s=%oe \S"Dx8cqסHIs3T$ܕj+Z `s~B#j@?0̠z ^srT864z їGYIvm]/oUAϯn<33ׇ#9mK'B*0oʝ&LM/V`/0J#vhq.hY;Dl#P}/ro M F;Gkv;'کT[91Ѯࣛ&?;2MP s|[ȹB2LV3_Ҷc>y5A'>0|(@m  P(K t\j-KKv ˀ!S,8ASSM̝24HE!X YN+Ukwr 7>jT! v]u^!D8{[(3v987FRSW&I{4dwsn c8 61bv/Q p)&Y`α8Ktb=Euh5,T/>eI]"smJ7o{D''{DKo#ckJѵ3cr"(R{[ֶOrY˺TP߯{/S@~X6~a:xKiTp)@M1t.Ns7 ɍT ᆖʛ4M+Tg-t״oD t8rd͑:8 LFk/J0#[p~J0c tBҎt*$EXwXXc$'DQ'8*JG5-"1EPa YR# BMPhTrތJ9ـwXKy袚 _84'$u崿Vh"#kV;(=@N.[6D#љB4꼙faF-q/T)_4 :#}sYnSIV܅(JJj`aMb  hvNJ$[t}Vtˢ}Dlp\y%dUC/]p5p&nLCM,kanB&"`ky[+~]a@(YWWS?9kWb@{ET: E~"t:dKXZK_ؾ8u!4dT]}@gL*l8j11rQ~_cOI4D`yF6Bٹa9]y—%nA$s^lwFxlph%XkRg)I4@YX݆aB&RU̲LUqeVz)ETcM>HD=>e7(fiUAs,XO_&6R+mv#,|)DڛiGF{g +?A R#|tr}0;:MXxbxJ\p0l^oLfu#OPgV~ߺJ9p  ֨APa[-@>xZ3r$\W t[)/iMt3; vcp1Ҽꏵ8~+O络4u+ 7k%>;Au:%AOCHm^5X#ϔA\oIA%%?A[6H,g_BwQ5 ^ue! Z7fyo-KP3cF`RFq>dg;rI&7=h?{Xsy̧3w*lSr9pA\Γ$m߽=J]HSkwOC;WgLf͸Jss7|w״kNa1a+T(nlSYYeg}=Q0Fԯ3m%W=(RɠyqQe,x-g۸0cCfb#Ea=ӁJ}7t?%gfQ[!`O\|R fc]סW* 53}ͳ$\5]yѽ]IKC 5'3TR1?:#~=&zS ѝX8웲%*%P?V3ka_,:I0.xLa$ƨHrʂ(UA 92ސWg7`ZBNӨ hI+훽-hQp g(.Iw˧'?$1nZ& dl;C0{j8;&UG5DƑY:bRnS6zu6'γ2nOΫ]UG$T {?2' ]JϥMsqawFKCϚz. v~i܉Frb&eoh ŵq\\[bCr2" LXt7楒uuhZxk=V~r ”G;(.'j갢7/s8 ݘ@?/ [.ch7?4hV䭌棈cZP25O"Bp(s8;HxұFF*"*.Fv nuȥ$Fѷ~5zX9IꓒKB9YJp͏@˜t3fEK`pZ̯@:# }j.lh:Xͻ~ 7TDb)ҡӶn~lQnR7;TOqalȰmԵFj^А {-Mݣ[+Jrǂ|,_vVijhq%b(I &o}= AU5A֟"1_(aWp_aZC3mu1rM׌)b\u2Qұ8Mۖ%?֙];~bx(р?vOηϺ[B-I.|c%. _b':z=BܢR"d.!_]\ [[&qI`,M t1̌1%A6}êOcm&}ck;jcrVi@}zFwX럭OZB (OhΈ ?1=1e1c40,s%JP6jN1z?rX 'h:?ʞg-&9pL0HB1~Ӈ_d>%1'Dڋl(i{,[IvJ<'3v/Ý/k1"re8 D&MH0-Pb޹ 2Ǵ/"LIG'Fu(`SHt*'תZ%VV 6s.TD-𪮱Ɖdž%6yBD*꟞l=Cz Hbb(w$듂c~sʱ>##g<Wuyi*u [}7]=Kobm( (=skӥwƲȘ)|_Ywn8g 3Rr*@-2id)ޛ@G[qx9].'le0z 1[D[\^|9y§9ߑJe[!!] Qv(B;^o@}\Xd-Z~*e:~c($2m_D-@wA}j*;1nTh-mGB,:YpԦy~J5%xkd%p h@W&E άRk֘R^9Om{ndnnu%E H{L=L"3}iz7'aIJ(Ltx s4hcv`^$'P|1QWqy]v}ԛ6R~buMV:4k?a1)i|SG}^:Iz~QWX!Ô&xx}.0mz_xJ* I‡&N9jhĖƣؽj 0XwirXQ|BevYIOnp1)^X$J_hooB,L:e ێzwhp"}o`=%NBFSV(cR8=Jn}]Cx0 էŀ)!O5 gᠤ0_K7$7}#wRV庎\̇n4/"Zo ɻn362~¡ %Uqde D# 3~g).pq<o. 蠃++> > n&DdzvH٬(ǹ0 JIl󚡩/ÿm h~Dmz|geQ6?gk7ЉeղT'u@3Tg`jx_]Cu1GB`v4RD7COpV1yT|ko #ȷ:|Vɷw9 d~,oKs@ܭIjX֫EZ$[(<:7YwjB|=FSH c4+"oD{Xގm]V8S5E6*9AMLilkI}=j z/L9%#?q@ Hj /Ոݓսxdc8 x$PQes ͘ChHݻLp] cx-~G:V@$h7x4H8*) S:Ӊ (vY׎o1@7-6];ھ`à yYy3dc0h20P~9t*L`\dt\pX#D/]h$̍n$ J2Hmnl^~gִf{EjYmsE: YIo~l>t07'.4}6qBkD{do'Y#!nM;+>h*>A.bAYۆŲp8z*A^eaijddY(>Ɣ8ē{;řn'%Md;tv ~V&{PX.{Q|9JfPL2|>ݢwp]Cb5<_^LJ 䌉GuEuA $50ܨJdT[u+!ڤd71&s\OGQ0d]iAMߛ*Ztٴ4e @tn,-WJ7 "^@W?D8(ɋEz=`d5gE4R20 *sn2qO6ܫGo&lu"YU ZD\BB Kwbdzȶ_=S0<6cT>lC%-v{]6\>CrKmrz҇az~^IKqWǾN)^;`]&RkR=CsNN?@8w͋rtHpV>H.B~Tҽg &b+Ugѧxw]sXw0`\ycn]妽r)t4)@i.x'U ~R]=}\^'քL&8'V4y?9nP2  w G{ZY&sOs_=[͌^_e ]v'6HF'CRNXQr%bU%2Q@0z$hd^=HxT2#Oʠ]UA |֑k oM/hYLX=gomFQ_y G, n6_*m,(PVgsj=c>W;~ėnŧt< E7GFכ[˞fnR}Y31ѠK8œFÞ'SًiUwTdGl?gٵ@>LFJ#.x+ K૖h}[(vr2-A=|zl2[#Rlc/}|**%fzk/pU%g/0[|{sPÁU(a#l;6;wshDĐ5YGӾdآ]m +!P5~49rour5Mqu2-.ĺ39 O%LHmSMCҁ U] t8*%~ >DI bs PKzo; 7J%gmw~ Vbɧ+ܰӌ5 M(Ĭ=n5~*¨š<ȇVNJJB:pDKWEJlS*)K[6NIa$|"n0G[T6MP8k#C*KKB"8ۗ*?NV3L҇D\~ӵ l(;\? N|;#Wc\1 -)E.R#=JtII,-y z.NMwwǟcJf#I4?L<*Lb=/Hdn'=麻K1Vfa]r'bEY3ѓܒz ?RX-%Z@[];KӃ&oZUoVOPsd(?Ǩ9n\Q[pkv6Siv*LY{L5e8CSi/h3|DSb XI]d@Wɂ9wACmL#Ó*Jlצ~ ;b]6$N'CZțqav ׫UH\3:$]j ik&FWU6lqX| WWgVڦ4;-U sd3WlIpɺYӘӨ׼]TH.],PIXat& sSBYzƐx|# xQ0빸!;rS9ɢyN_`br⹐X(8iT^7QƪYY-j=qN|Bl/`< f*@ hS[,bӶqmH1[6r` kC±ol? @3P[5~TVzFp(.1d͊X5&m )ʏrnMhMbzMrv}S4tK& 3aEoxK7)N3vŊ7ZB0b˾_cSqςN}h oS.lds֥c@|TM>C{mޗ cknH9 (jUK 9H9X(5UCbg [q|;16R [?G=S5;kmhC6 {(r}"O F5{]mD$.w:5Zq}m@K~p'1V^,;č&sk? ƋbBݩx'$a.W4 oPٕu=|j=i/F 7=`֌Gڒ[OIQ]T/A#w2 l!z kjPS!ż'0bӬ<\(#sA5rAUXH e'c_S`ͅ`N;6H\qz( "L9y?,rӂnjޑg)1i7݄/YD+P?_W.]+}T/ ڪUk3G0zv @9`:fF{Lv%h~%u h7WMphxB#28܄fMjt^C_"v}UB'֩mJKNu0OV2L{"\-pUo6F2b)-['z{7d#F t:Iq~ RGJ1| .RǞ8Hi u69;Hs-0- B%FV,DE1t MzJZ#p=Y/M~6q+\OT]UKn|S`zS^ "eVwTp6M6N\WTڳgZt"V}tS(9.>h=NOr~2{FݐxO۳֗/.<:dwpIT  @zmL/Xc`#-Nru~ݒd(Ýa i\{6571&H6g?X0r$74х\Xq^=9EOZ&ەTX$6!*T>>n+8.uA_hjb ւ*K d]dI30CUDbB=0qKh.{(?5]koAmn\]>D_퓵 `HE49U=|XO7Hk2|&];yt߽,itW\ =<ޜcn/[ygee 4e+3635ؾ>tv6ح{(9<W@($G_ץǔt"nNB  ϐpR9@=,; CrFh62>/ d ķ!g|s8D3muZ)JH'Ҡ8~֌;m 6nf 6T.wV=#drS^SmPaK] էPB>8P&:HY&!IGA ce@mxy4T:l\!c!ܔ.tX-]U>klAj kd5=.Lm~tEIH xzqOSa'c jRM~nsRps6`3qAa> B9HրP&W u+OJiMѢҺQӍ7Y5K0~v 7}s}a\qH|gxuJk *T - 舫?_>~:Hʎ8"F KxӖwlE-~?!̘~a ij/&dNOHن@\ve;>H7 Rѫ1\Y^74$oҖMx#C<˹M&Әt3C朼3[0=mM37G+d5KZ0wR}b\Jl {ojM|Qf#T@0|6GmH͜{Gh&a;5VhovGawFHO2e`ᬞk;\IB)aj\"KI{V0 =T[F%r\Lf!Wʤ%T_,_u(}6=n]~AzjpU?*8`^? #'Dd7˔}.nKi]kHߠ)#7ècĐjWKڌ\;ҋlvfYW*]) muVEZ!ٱ5} [9f}:hN1S(lQ3@-, "_5"ox#;LJ],+g}X<{ĭИĪ"~1M?4\51nnC=_T뵞ymk` g,lb:)x&z0qqbNt +D6M,c [J>>zfDА ^KMBtNJo(Jwb& 5L4hd4bGNrcK2N®#&dLFCeT.J!MdzKs$(%8*2jW !fYH| Lk{7zh _ge~ ZGkA҃q{Ϳt^Uތyّh8Xp?7)J Dn 9x}49VGb~nymqD=:ioTyju qBMu,ABmآw2RB49^} ]},`)eS jb}#k=pb q1nGFL9w9{f$U$鋣MnG#eeP/5aԡ1P93g/fV$2nF^G(J$y&܎Ƀ~`5u,v5XO0F4kP GZm rkı*IXoI\ⅻFyPtAPD3M#WcZvME8;iY؄( R]'tА3g"=؈5~ HHFwI %72M7} Kx{_OLۑIƼDE9WΌK/I)㺮jގC :l86}Ds i! @Qe vTw(~ 1~HLX.kY%Lÿog 18K.\V5n-ϪL+ؗ'Q* SJ z>0PoD4%Zy_L*U %[t*]Wp=!2tPeyfD}f>}٪ G4vp\d8Ó.1,%&~,&H `wjb!&{u x`VZXI.r2ڽ1S/ݨ؎^e؛f~5Դyѿ5J{/ 5!>ޒĵ08;qi~"(@tȪ5K+V2U Wc `#؄Ywi ~=o 22z~=qEy;n5k,ı3'юMlvV^8 o4NfNL %(ZH a|^ b;=nk[~ĶqA[a~OEGycME&/dt3n# Qnr6*a!M{7 r;H0/Aځ!Kh" yeFr+muDN+*W'5 E].@o +4s\fqp@G,j(,"BXZV֟<ֳ ة UҪ "L~J8u(P睾?t8C]1BX)~5GmzHk XL:nJjO@ާXFSfK:8Pue"t$`&^=5,y>}P:.c;(TC.vN.`eo>y *Rch`+a?ֶ(NA b;8r`'5!#Xp[2T ,x\\AA@CA\~qDV5}?O ق1P")5܆e'i{U N7\TMb|udl!X;h}"X*İ{bs=<2FaP|cVj{ lCXүӨ14qJm/E; y,t$|+q|rK >? y;= r/ tp҃#‡BN;Quya.{C7RUeՉ1mJP?Vt8oiSU+3LKM~*᥀Q>i"<#vMSjK="-wn9ͮ3Z&_  4wI!:miBtI6*l wv⃟'. ݠ65]GU>wFYMF1g^r+ٵ,+H9Щ!T1\,l䋰iʻ=u lg.֝Ѻ]Br5c2T; }dK)w:Y4ߋ;^e/vVV`yƒHtj24OWi.8ťěKs:sr]@`G=ٵ\Nnnw&Jbvq%#zHi,BE+Pb!01],BV^$Lh0#=.` f]@hga7 2=C n`1&mvA1ȜR+?ī#ϕ`}XC &.W:bmB[WxM}?bE.!HZeJQ(0h+uv3JfδS-<=.SoNU$ mc;^GT~Ĵ(\s=|/[ ip5Vs526ȫR?e|w!M(4?ҕd;w3c/m~ G`|4hyOa$6$%6>t**ѷVx(@r \! ТD Y4Թ+Ɗ&2AUra}hQtj,ÇBl]IRæ[,':KK*b,6_SprW0g8[+V\ntf[Yn$Zn}[X~ qOzX0/8ݑBnxN-ĭF$3ʳ|i2A@E/w y^]&K~C*#j+#1aE jȣp2 {qA)M|Q™Zr1(u9zW=If|E,t+9.*78tƝ"T,i$ V[V&ƳSOgo֟4sV" stNߐ9 zBoA! lz-+SҢ8,|B9PPmsEOV' ~Rm.N]sz^{2-$za?* 5sqR@7vF@zh6?>FSt8ϣh:F@D!"BFRTJ Bn00[ ťuJ&kʒ<9@D ?\GE\0_qAp)*Sm9[8nMYe@GԄvMIYB?9*j0X;%Bh-Wl̊>QŁ a1 WoI&A$O+B Sc&Fx]Ȧ93*AVV_!Vڏj'rݵ2171Ϥ@6y9pxQi`с|ij&B.tG*rJSq] X28㵴L "U6eDe>agHG-yuŵ~ /+a8;fV3-Igp^NrL+ES ofl^XahmQ{WB(acDݧ@*c pS~ ix^Y:5>HM=Krc`bLJ޳ڎI m)ػ,@6V{]͘* y- [씕s5B['-_)&~tkՄM"֖c)2(X/$^/ 6YvvW M2os|ؔX~)O^};\ 27Y'džj(Qq׻ްVi `EN GiyS/XN]ym #ptv (ZژOp}yd)VͫTkA?fn7%ĵ6G&P>!~j:d3@k=N~ q|w|p;q<8L" H Ed^`o|ٝrYFuF,\?JQl-'"*5ϫlm,]IQX6?.φ`D79YN<ގ/E4Žq0oÜsΜ_2z' ^&(Ipzv QhޗtxLYK u낑^:^{+g[:lqJ<3"jA"N Vu%'t;C APt[:yRFgL$Vcz`c*i-b!3Kkq0ڙ@LaG7AgsZ\ډ`;,v!7N!oDG+"zĩ1] y^T5ᓪ*K}JK|BE@nlE7#\FYO:1bf;p:ᠯ㙀ۛb7Dݤ/Ri4x }`AUن[mWg p΃Ƒa5d БAc,sZi*:6T+] !24>T%ll v93'&!)]J<αVyQ2\jA`da|n2Tڒ$x8Cuv%=$[9"gqe~r{Rv3`z{-Y Ɓ|gi%+vh,(4@v* =f<甴(MYX#Հg"b+>P/*IfWz6SadIخ#p =53{b&ɽ 1cRq#@j`%tAszURC?`ٚ\44HRn9xȩ]ϓ*jw~Nk2UqF%{aWГvn */{nqaj cM|SSϬz^/u q{Lޞv[7d7FwZkl-PH~ZKdWXlDh Q-iC̓5?}CdU $)0^=Fy>_!!vбN>]]cA?4 PlX?Ns]0ɮ$`SVp Z⍾[@pSU7%Xb8YxO;d4l:{.Hsy0݈*VHXEbat6V1Q\2+WɪӤ8{Z4=p#jQF@㕺xlkog˙uyM֓4 [jЌ2C=A'WE_iDY-Gi>z92{@!&2XaO:`j h]g(by'TPZm~ ζc&EwۦJKJ-DGye fM7#A Qp:UE"G1'))iWsP\Ʉ FĽַ,ΰL 90'!qʯ#yd,1㎧ 7)]K奊rK>Nq_6MT Mi$yffoIJ"0fu Mꇪʗ[Baoi-w gpn NT('Д|?VIocv162: zZ5NkW2RceO  _o9ϸ'dqxZl"sF;Q %4" 9Gyc2 G,:8Ųa3M2d%搻Sydg6Ke3{?v:lD*ٽI0f ^N4od]R;wͮY8yZA|7OȌTw8.F:bG%F|؍Sq |ӅCaB8EMajo fk괁4Z[Zno;HRh -`e>+>%=މM.qW5/ʰ {fK.ƪ Z l+ud i*5^H0FU.mFb`TS>~s [&S /unY^S^}:r.fiF&_˦o;l|aG"W-ë OB_@[2>~GD7LmK,;IՆSM<{+j &DFb'1M0'05s}41 vsܔǡ;.u>y a7uy%1 =ztTK?NcCBP_oq:#\ 6AfJQ QH_ 5ofKԮ'DQǨ^wsk?>k?57.*kpi͸R<ڏ٨A 50fZɆg!㒭 h38M=iu1o=}`*"Luh:?&[eyདྷox }Iy7Nl0ƒ  ,mm{Ր I)'"uqe@Nʯ+>RSAJ%F#Q xLfO8 <.HQ=CrJRt o&$ŌDC*SFu92 ,MIQkYja*vtS!~M&B%ekfB!a%h\[hzsBp6ۂPZ0@Z]4[ "p$$8 RzWut s@,:W†qRERF,U@ KD$!0Ffh"޳XSX ,7Xڜ "=1?)CxY^抂kXPszvnl(Nm*^@D;F2q-QC[sV` oOL{8"MJR3zڸ1(&s8Ѕ21$ǻƿLzA5Iv? ?uh1HD_.9f$C8Nk1[͈)btTK6)3P2H "fFBmF<"}pcmiVF[)g4ތFu#~ @themes/twentytwentyfour/assets/images/art-gallery.webp000064400000346726147176754540017451 0ustar00RIFFWEBPVP8X MALPHS0L6ePhǠ 7zVP8 Tp^ *N>ED&##giCeynKqby(wn;kc&[_067@z ؚ']M+-"=ƾNfR@ܮ?hW C#Y 4N:._/q}ѷA ]aJNQ$Sv[V+<3NCgq&Lc%x pVܼ&91-u;x" $(¦o»7Yz;{aƨl;߄>AuvL'!)vJZuBl&Q5^"9.+:n^Ha';,US(`+ĂF-/]1f Tlߩ"ޛ-o'-]_<% jx Qہn$'I,K6B`f#+Mt9PgWV$܊Y'i6 |r̬/i.?#``aڳ,n¶3+nӯ^ $MrgS<|yLB:VeA QqM֝rK+*)CP12m0f]m%CX*r5]g|H~NK0ؼ;\nDzA:pME [Hre4l#(($_lR.Zِٛ" >ݢD<3l|皚hz+E/}tve`L{Gp-/=1Jԙtq溬~IYgN0IR{LNEWbaEI7jE[s!tݘ%OICoem)4ˢ ˟pˀDp.t%s|0BGGB! ѻnsirf:B h蝱r?{ƪ-cτhp -n7 Ƿ"S{Jaķ>S'Ê/mͅCf}eL|Mݕ`-R8^zظPޫgZ Hflk4SmQ>>R"0oK󸛹M'>fONؤ)jвxc؇}n 8-ޜ-KxL-/݀!W!$7X{::1-IփIfPESH!9ߚת@˯:ha4TΊ:,G9r?w׬[V:vH:Ȃ_` ,%e vZ+țJYU$0]*>, ڱFT:`|xoڭ8]NbXh-*R3bܷ?n.JFGKxRΎՁ.6->:KTcY||Ϳd55N^M@ɯ˱c? p$P0{|Um$;G4/ռ糞R(}E*&uBX9c,k=؍U,sYҙOЛUVx29(ZAR4-yb'G.ePv: :nCr812m.&[ -ު4?j\wU,X]R`Hv[a^| {Djm7mp9,: {Bg¿apSoE&[QF-<^uvL^#([~Cscv/-?.Ծ hτsEET^O2@|WDZFhs>rG}o#,Դav1S6;0^+ju!SXi&jkH̖UܖH,;&V)ZP+v[|ֻipH#\Xe˳nl5+ϭSNl'c*Q! |w=ᄫt k+K8sծg%r3dB&})ٯ&MΝg̴Q!%ȓ+{w;XnΑٹ5NAփ*f9/^_UĦCMpˁ뽑l.dr뉵zHΰf|e KilR$YX{սSKN큠:B4X3#;PmNTɐv?g=kz se;gUCN0-MAYD$ӓtdSm:.gmj¼Z VP?YF"Jo!]Xg(< G( ҂EEi]׸n(#q~XAIz'ph?r:}^R5p IUa*9dXh:,d6qϞEiN)Z`1)F埆nK4XduМ<- Ѥ |=s9P\ "7qt֘6 7 ;rͱuJ.߉{FD™|)N=H [Vg|ĸe?_Y}:Z*x|UmB rC@@cſ {w AW59,'n=#keyW#'`;r&q G5&|QiCe\6Vv$!5Q+Fa6heg! z/m W% GZdm檇4%Gjuy+4 ퟁCUʨj:( bn&rM͸%#gL 8ԧ ~0kQҺwRw{/|<o}}(#x'wZTӒ~Efn?eG \mκ  e9ϟAJۑIvNlD+D 1s,OZ}!`c ]7h%zyR(XY< zvc./RkT'Qm1 ,dWn+ \y;AfU>@{9݀OQFlx lۢ(Y4]Gu }lΆvw^s8NVrp6s\c5RoO D{:JO%qJY.{Y 2/&՜/U8|"DwʝrmA+8d+M $^k>Jȏo:P;- koR5DqBW_߸S޾2g9Ė hX.mpvo/{x^%c̹~~i)khyd?BV~  M#@0{70܁ 4p.*N%8 #Wm~u/AE8j%L2-fBnMFw &Vީyth54HSؕZ~J./TԊ3V?(cz9K~1mTy2CZF1!O0lE' &U(Yeu$$Wl\-g.'\ҩxř/2c.q]9ppg4"+N`~8pzHQLbg,UERYg3 Y~+GcpЎc›sN5w^`]6*R0*:sֆe bNf|.pkHt@R\Ȓ9H홏+EUZ^u3`R6̓>$'Fjvp,oq2X7J5'.:W}3ys) "͊ Qf.<ܭޱ.5F1eڳ&^IR~Ȃ:œVs}Mcu[?ӛkI뱉M WdJY+|B#+ Az..N`/«8X:|Tw&Т%ՒV<;?DI!ʄ`=!ocoAn cihݺ*Q.4=@MLN@TUrOQ&)d}uz.hpTଋ}ύ$@Rv-tXy_1bb}g 6[>\5q[عܕu*AǦX!80+⁔kԔ&L9MYiӭ~o=pm9wR]\wY~/V@DyNJlwz\v)Y%R$\Iҽ!~؏dT!G6V/{¨!ᱺfwc6ݔT,;nị ؉]vjdzG^e$ 9S>!bVk]u7VVW4Zo>2}gCjc(δt0F` xq7ItEGdI"=ˠRM(%mC|ԗNCS}vf a2wf (2׎B{H\2#lh\Q%#j9. Zje n%ч_EMXxBS_&NwQw7\{KJ@̫?2!:W:%3ᦼ3L e)38F;Vu6v,nG~ek^rv%=bEm3QWjb wH7i8N06}7^Fj:gŏz, ,ׂC!G8щoI@uX%n%>--͗Jɑ[Bj[wt@@f$b9z5CG/_'f9V)=;OH a7›mv ڮlN4`b*t mzWtEelD ab CAt5 Om5՘'Q[z\WǦ@Z*5tg?Sw)b° [! (a~KկaQcqDm1Gӄkl7ƗԵfs{O+)eDOLl18ډ?WXo*.DD 'CPhU0n1%|q.[DbuJHLqN u 5ǷUR{fǫ6kR"*Pugޭ_FgSzתI`IpV"S4\@n4;l\2OZq]ɞ8tqX4B7o@|2eBe}sjpcRVjG$C|)!!4qA =[1b?DI3gH?d`CM3n Њ.#oPWw&H=>ڹ \P EWI7ηuzeMw"}R?-.Hx`PǛr:$3`L*Ƚ/Pfb<ەVݱć<uUw\xApRc ѡR'8w(D!ZngdÏD%0/1ķQ믺X] k0M"sap猎tPYU_A5+Pi):/LB7 8;:p Fmlb4. 5sr 5DoȟׇtRbX^Z6~vrvDGc D@Kk#-<%ڤMa VpF3p0 X?K$1Hbrp] tƼU^m8V*!ld1iuu!Da֖VSq6IèT5<\G5'G^/UY/82 cVpf1SNi0] /0٭k0 HY_(T k*r`SzF{Zd4CߧJg!6+U4 FKVa(#B] bO` fʜmzAgƼ3 tUD܅ Y<q~5:w5Hf/O# "Ê쮫$u^FVZwBwTpBy$k]ͳuo@6OڸjH#C:d:73tHfZCIRjN3v?"߁yw+ r20!9۪%Q Ve?d1J^MQuCY~߂bfQ*Affr98a\jYrDr!_ |Aralw`ؔ?JQL@-cs_gPy9R"0D-և ()7'Ih䥓5bpZ$D<MnnUv ']͚LW)SPda{pV*Gp Ā/;oz~S%d^:xhYI#7k "" !jkc,?',Ú "ۿA\+^DEB+Fnl9.s䚒Y<*ț,Y__E=ܘڄ8M">g&jWf3 yjt awL(e e_|ҐJ 5Tl[ƻX"'\E}h$DZw& t[AQx>GYC ['ʓRȑbZZbA I Id(P%L.>Df:O-F"1Jmjz.6y=ekLElb,:=hy䂟 +s19X&7DC;]H':SYb2ځ|1sE!_ ""'rDWu"p-4ǣKP G:B,d0橐8q"dNRt>igVI\Ҕ"UÑYڗɚ#hPkhw5ā8Fo9k8' ]-"[?UU)9FD)0N۸ kEbSIQZR:FPR~#.-jldwahvf;:goQZ &F>o(ޱ03IX /S@n}aLPUBhШUVH)aɩf{׷9ВF(K|H!M5YXLb1 Zajjgx쒔**C;Հ lnK݆;N'iԱ mfK?4Jqɢ'5p0YApJI5W9g=lpgT9;'d~C!LW ~"ieTMOb-WWY) B>&Q(eA('Y\م!ARr]9^>GA6m)ܝӍ)de$G;61E#v~H*쟯>¨0-׾V0Ж\OGY `iJm#%6;[ hf4,ܪ7cLXhq#͇mF+I¾ ۦ k5ڃ,he֫z S:PBy\>wÎV<0U W aɧ(aTJcPdׄ[݅.2KpqFIG/ cB4a +MhN^_=1UlT,-3\•BuZNN1e9PE(1^Ubp"#BdZU;%40$@ߙ9'l%IڵNmZP]w l |rKO2Yҽ &1W{okdoo@̩ "33 Ӆ^w]_wN,X@> Q-g$* "Tf8i|Z((0"Ŭ,TAcr~L8VڜىJ'ò[JOmX !wZ-$ zJ9jk4Ėd0,x pSslq?њ( 7cH^؃g^ߨ8BAY@sFZ%@M7ItY =~6pJCJ-(55oD,[I Dʽc:r5\{Bj.8"N^C D=ZȕTA z<] cX3n'R+gpA>qєoglk;#J &RZk}S)JINVJKd#&y]^C ",t w]{9=4{aBw\%\Ց0TnS1,/5xUgmm?U#UYOC\=&kh64ɀatT3+q7GIF'洽ɢj9 E Z iiՠ'55{RW8V)evwdD'ЉfÍ$r!LwH_`gBfUdgx"sL:bQ'Xg/ U OԷ)RJ*\FW #a܍X0~:{6=6t f1yNd ,5.l%+ 4-6nďC{hd#C*3eܺ2N!yS~Z-,fc)Z?sE!ŶPAT>=9qm9{sq{'1UW`f]KO أk-s|rP@$>%O^B& c#E*Z^WTP9TVC_,4}(ΣaBdb{n*'g5dBƈZy3R!955_~Vf]}:>yЪ5-R,,yWr13boЄ:cP`p&8b pU#DXF_aO_x>unz'$|0@ y0]]5>t UƌyXK/ [<ӖwHiM fMjGmaKo$wN~Z~m#"AԱטpx, V yK ۻ~˕#B%cn_B Fvh*NTݧ$o(ZMh0c>oV 5~%H=wpG∮ ߬:%L#ۃklB3 K,se*\ R JB}6)!7\ #8 99y%K.u|YsSOd_ɎC<4׺'[iAxY 2vo5GJC* )YW}SbFG SicBgMpRu!9hrr1;iP3 `QI]Z˫3 ~ڲ[H9hXR{Pv@zKtoK.5jm!A8p{VG"Q[4w5P[QD,3SH ._d+'-':b…*Lxxg=u՛p)ro H/Ӱf( ܈Tԙ# i^!}ϗmN5fa_H^䠂:3\Ȏ;pc_+W ;WBj +L|kH)>WcƷ f,hbbQ(=_xF#l;PG%_++9h Dy:EiAz#?xq>}\!jl`1ێxIvTmQ'8V IΜX[ QV֠B. uN NA޼ejE`[7Rp_s-3W݄P"2 S_^`f.5dWiVm}O/qKXc_0ReNI:;fF5 "W`.Gy+ѝhRYU^yF 7B#O~Dtey#9 O` FI9.~R̭ sؘFj'}7przH58iVLڕg اnpPEU\gtU">܊,v6gSd;89;+埀2֟dYW>2Z'w:m&-xG_$?mvM{Udw8?k9 e szXFpQkܟnu h`I>S ?%'4l=(i+ORKќzo?K3i vTvN0~yYRp]kُ}&֣[f)/k /X|ݱQsx[nPW[Y'Ii؄mzҷeǮ ܛ$U!TDy%j1Lx F`Q)N[=_@P#[aP\ឍc6ՙrպt@{O 2dR̦4 ylkD 8?CC) J n%. B͘HYK [ݍiOOo/YX.-PިdҝVm =>Xnp:VPp"v׬V':ٮPJ)׊ٰ@&|M~}inzDU|<Aqe#f|,m0 {GE1aDAQ۝uj΋Zy-ph얣)`=lc8U(Gw'sQ,7©aQh6S(s}^RU`bQ(\#q-%'Ăuԉm*FqܘDQgV0ƹto$:țZ?{7c] 0zsF@ӄq׷! dO~P4F p?^513qvDs{,ӝ%*dp4FWPb=%kPKNľ\D˽P$(~x|1bYuy<>ʫ'Ohjaū D6teL\k!/ɛ!#n6Ulpd}Yu-ER䘏P `C>ֹ)5N4R+[ewοɓ& ZݻC?-_mZ&z#xpHpk Tv/+՟ 7 nxKRSv'^+"MxkЌk{"Cj%x_jU*>ʒ8Xf{gp9NM0qfn[Vu8#2s ۃ:H jDRl{Uo׍u4M Ԉ\+(eR]dG0W7b?Xv \iLs#GK!dq[4G pr:͖1N;/VkOdo4{PCګK [plG׸ڕΞhsdT/8wOtsޓŸ0oO] ߘںS=YT+ O 'eOAۤظ)! u/K 0澽]| 0h&(ԙ_1,Yl}$H/fs{{/[ %;f7tZ 9KJțBLz)Hb}ik`DSf,♅Jm&Ƶ$ TIO.XitzFt+[KRX˨^E+&VHԯַՐF&rbnn4?*Џ-S=KI ՟}S;+UxGO^p6̍zBx>'C͓lOzʦ yz^3b$ID` ׹@;(;tހof^F]' s Zr0%L_ _~2 _\l&0Az\3Pj ׈4{XmjnBNFcj2gtVsVO`tN-de nR˫O_,C&)=cl&x+/#O|U`UApkhO6_Ԙf %0)SM ^Ίl1!t=m͵+a~y͛vY;zeOX}DL,4ף] jJ_J^*~K FF>a#8 I#)|,7\tUKJָXe!FpgV35@=m%N("n`k+"i}S|z)>YzծuX2 sfbD:uwߋMuWlCq\IJ@J`*T|jĞtܕouȔxu ^X_lqm zvi}ZS@O_%dibwHiD'lʎi[?p}ܺavZKt/UυA)^624;$}栔QBO 7w$l z=,&6yzx^$ . rhb 4QA\;~;DŽqTw?1G%LAG^`Jd>bOJt|\)y@u'[clzs~XYzڟ*.k2DOGO' O!A8XB ; W3 4 FRa mj g֏^s%f,_\Faskh7ml+g#_'X"Hjg! ! J5[:p}.{05wO[ N*p͕P>x67~2MG.vH'1ū fk۽YLJVJ-#ӊn7;ό,P=/ٟ~*\7@FɸF,,h|'H h( q ۰d^k#lqKڻY^dz$:@pRW}zPA+ѯ.Πzd_ l$jVŒ:?I+s&̛;- ֤4wXgOGC%Ġp'aۗؠgnbV}Guv qf'5d]oStDXn&+Fӧ* :/̀H*x*:F5я8^~*V!FZ0 t̙$QBE8[@wel[V0/9Xz_<$K)dO҃x;_-MNG.ti5\=B^QPOOᵁňl@2Xcy$5ߤKҞ*pJɅ̠OEh$x E&(>+/>ۑßl{S[>dؤVzclB9fTe"k !0f1 =aK?~\n#+dLf/ nts :As`;155.n3҇aÅ ݛG0!Y֌'qCӴMvx~5 ۫7O|7-QTFd~ '=$ܰa5,~@XA2:h`EKy bXk4Knn_r\:Dwl Ćan1+\{qhNaL}`ǟ࿐bHm+H){"[И+H}D9)7p^e~JOJj.;VI0ϽBK Fڮ$<I:K૿) >/o+!x+4^%IˢSH`:ȾvI;m6k[{TOD-ct-5zzU5V9HkQOT~Ή~\' &HB[hF -QMB~O䥁= l\(ݿn0`nڶ,QyZ_)vfuXjthjhUJ?%&[ rkdƯ()SMVpKT]DG'`7u,z%zLŻ޲P&ќc≝:{O>]Z~:\(-xvErfNخM-Tg}FQ hC.\Bqn0+:KxW]:̽ #~EJ-3PC1ޝ3\ںe+z9%aGK09gH =jTʠ7 !j-,Eb"k> Sz|n0\?9(H&oTns[_$Ot@8`[z@ЍVv$-!W2UC8V9cw>C/iJXvX7[X JF53%M9IٱkѦKTNX=?T2M]yFSW'`=%4[Ov*)2$3ˡZ%#?)^> @׊XS1RzaDϪjMC=i:HXq|fL?j_S* T_)`V Άo'QM \x; CJg13-9H_HIZ\B*t3T;UyO}g&K#錥$] CDCf*o 'Re(1@}oSIdd6XmW5r)¬LY]%WѣeU'彳f8&-hƌM,E%-!'RIBDdxw7!v%ay;Jh5!S^-,jw;>.2XXfi[ |=V nEBCi;(^bV p`ͤ?sVΠ3 >T*1dNZX&X3SY&l?nE~>S+9q=xSϷ ڝyS[vX0#?IrOQ/kcviӓ.+,"j~uڶi:~VmO:SJ FB1m{'xm:;dzk *j!ѻ&r),# h㄄yuי)7Sd\$@wL0y4v3@4O]-\RbA"߶9D?ZQs^ik[c٩^ȁũ /c- ;kw96[V8>ݙ1*a`@ s"v3NCz$0FlvƗmPkA(6a i yQE$S{0 OD-Yjp3`'oǙBH~ 5rTE OZ~fvU %`8q-lّtsrW$F*`1~Ae:Mʳr&Lɕv8EUZ \"nJ(ChY=rjp1-Z sɗVaщo)%dD I1}Yͦ<ݗu8/<4a¦=pg5ZD->ݸQ ʡԮfSv4R:%g]trqv5c&]K@kh]=2< OsCVgJzqX%~rTGU$_b+9=KN;n#sbPvʱT$ fB@eU~5!i %& !ʏYdP"LhXW?CTeJ&=nbGnsJ#F{ n0q!e&3|6AQHT(o:<oWk/GL`"AD8![5 M*ۏHac'S [Tk}/r m]5.s~Fǁw7^U1p8%My024sȚN]ޙ wM^aDߟ_t=-JD5,(p}{jMPmmj>SERj-T4)xӽ/̸dFtgA6YTS@}7ȝgX[ }E& 74)<{YcS3GgC;H5T)G7йkƒ<$rGkuX"hZڙ.9#uȻ B6Jq{Ō=q+HJܬY(Gb\=F1 G`vK ߦqa ̎vcUj~KDZ:kl) ~M]-(r(0q_c+rB*Cb_gN}Ơ6SJ{gPP NJyCImf.WVFQ_I뿏3Ӡ&N0Bn"E]2guR݆m'p\j4]t0HvnrZX㗫X%U1g1}X7j _ {?*\$5>T_ 1!][m~~}\eǬsj UV*gAcw^ol!zrp6vcUvhjr&Cj1 VVt%F&Y0b!PrIө! :yMoҶMyiB8ڭ1{x{gzAB\'Xob^!>n_=(7%zS1a oW}ڻq㏶ނgJ7>4,ݎngUP#Cݺ: 1mA5C͊b&!.GO _Q=".X4学}a,"Hh0naxM/`cpmu:1h /оص<]߶e}l@jZuĞ঵0eN>j#Ө%'if㹐,FQ ƢnQUB 8Nr{fZCu)Q[gU!Q5Qv_\Ȩ6DQѣ)]8i|vcG\4c _VW9#%i?q0͓F,S%#;,% ^mq둉U߅O# /4(,Zd0&;ߖǩ:y3[ Wɬ $_t kG%AmWw X=`t5I<]/3.U=LV~8Qc%MF tkٷsoZd^FqTnky ?+Tml!axC%ձ.Tw @ac|؋>#@\ W %nQ!CX cTopU8cb~6M0O[4 X)򨉱ο[6*j8]B=b)CeTHJ6M*؃ !XqבT1Yzf LsTducPmN6@:HpG9rvC`V^=o# Jq> b:^Ց;+=^ ?ԡևsG͊a<"Tv~ L0IkFjI5pNKy;psAa «(H5)ZhK^<5K&R q HQCwm_ix~{.l'UɝwD2~f’DouJkyP„zqmfxDk*OsNQ vsHzyVD`Fsz}J3P?N8%D>FGDxkݮ4.Ưwolh"d _g -V7RH hݬ>3@6\,`{c-D%1.f³ gNqODzVJ P5VFq+K4,Rd9nkiHvcA[<P1Rí9`ܪ諿sIWK0ŋ]>(|奘 Q.IwH*{7zX:2U:GԔ#P_!^2"6@uڊ 9GTUh rƾ;vOgW^Hg'}a枊nTԹ#qg=B7ơ5q1j ,ղ+TٯVX{ӷ7ɠ#L[-^'fj aràjܬ·6RR 1BeșxqScTDZiĔ/J9j WM%chZ^,&0aMiRB3m7(DɪK3#Gæ6wPW:2us nTf aG2Bi^Cu0'%,N'8#}$" `^GĨh _iلˉVn5>\Pn[հvL:,m3f#Uk=#6^'n J]C.+2zR'V^pNUF>ܰA^ D6{!wd˰AYi1BüiVS]~ou[ϳMiFD09x v 48Z=ggKyMVf[5dR,aH= ;"H lLb$kQQGW ZDvMeN2 @s@ u8j#؊,OJ!JLb y4RnB)4]tsAApX}Jba3=NM F Xo_ [ zѼKUS>dWxgZ\i*\/sn5׶ K0>ڥ5 ԝcR)ڌPo![>zLӌ f]KK/P(&kb"ύ 3wa\3d=ͺtZG{%$(o!ֿ |rt:9\KSEfXw.ȍ> ӾsvP ?rWsc݊'^ [Ez6['m00yE.mOzC>t28%ȑK7yX=u_k1zy!Q]Ujp×]{`wpPɢ )VХkH-W0L/ݯ-Jc绬XDhvKra4s H>i7ybROZ,d.'vgC4{^}̓ tSKAȸNZb^=Rb''۠7j1v v\}&%Dmb8V7Dx:E5;BufƺP~+x2酱*!fcf>[2oC1B}DsV0 7Xј O5ZuYvj"~$ҾUN q d[烐 " uxҷ1:EޏϞ?G0Ƥ)^ė Ka_T̈]d o ,RpC0&p$y9s& #NWl,a^c`VI b5]g>cA0F?4˜Fd@;8l̜KeT.W]d#J,tגsVwG/9(F/^=/1T#yE?w?/UZvE03EƗz>cV=c,G.? l9q((}k0F282Z"]NL/_0CC3K ^q+@QU%i S Dy=yuճBIdKC^ r%/Jw W riAn٫r\ME,y+k ``H,aNJ|e~TFm.\tiz^b$(]t<וf}JG>a=m}=mpZK}is͟9^|LYQ{h$Nr+ eZ`=M|y'qeZZmZRe q/<l?=Y_+1^.ʵU~ҙ !zة. @`qE(, 4X\TϿNGPuG O)>GרK|yKWO?﷣e&:aS ZIi_ }fˋSqb~x:œ ތhE+ P代.![as w z¸-pn)4nbUz!-3F(j>6Кtu0!L=蒃ʉX\Uų4*7N95.A\l^w;g- }*Cb ^j\w\EMܢhHor3^:d|šSF-*%.tV+`%N蔻掀'~]ٰ.Tunvr4idlJYL2T@H/V۹ 5ZceҼe%DUhӓ_v Z-uZ%D`s헴 Tplde z׷&!%`*W,9:I)c@S xҌY#_#:=±wU\I!~0ӗEY}Fn`Ǿ뗫7aێ7ctcǼv= ("#ԓkK$J`QlPx=s8NS7@Q]OZ!uOĴgnU84Xa&SǸH )t(ȷW* 9ʓ-9^n4tPֻ?[L䩸jؿ'ǸVlrkIɇBYMc']e :W֛kR N=0Δ@!cL/tdI#Ja`fny$e7:3)yK6ml:*අՖ7;T! }8|:~;7].'/;C&WO)Ms# Qg^0<0:sfBHhhߦgY]2 $b_@3"*ZMƸDe; ԯ!A`89,Nxmn3 +Q0Qakq^R9w0e..m|^Vrf |I=,'ԇlvm"%.FKΩA~|S5UzAbFu|6 Ur,"8&HqT} &@?q=[W+z׼ syxtfmFZT}o_SED`^ 3#a%}cqGyVXMD6[URhS\E9g&'RVǓX(B|6,bY~(A~;7CvcЄHmNpInfXծ^m¬eq׎,1/;D`$TSԱP B%'wrm0~pNnwIxN+8# MlUeUwf@^ |ٷ +6}&h%BV$͗;$chygq>SeȊ,v|6@̬K4E1ń[$z[݈qAGb޳ %uA> еD$ \sp~Q5,]Ifu2 t) Šx Jv DЧ\d@f.կODӋՕl;y c2E'FE"a[F_-5̺(-5ptiy֊rI"SS)1_}7#[&@fKz?^ ̡Z-;#>vX&;YH)oTHa$vp6Ss>0v:oVawCH'ld$m)M1BMRmVd`*,vlx9涫5Gq C E {OE(S^`L@3K%[aթKM}.掦rn$a2Q A ɅY~cEI'V6 {.3H᧬1,oф7ƴ(o Ϊ% _ꥧ~s!Q^! 9> cNjN8&cE.*6y9 J*JJy03מ,upHMtڐRQm5ҲȭYPs #Pj q]s)#5$/2c Rq~hr(&,PD٭w'%:8vRnP}(==,O{+/͂PO{U#f(v-̱ y#rǑobi$ʆo>@P 3q5jxdA:L>-#Eи\!:16Z8m}7Ԃ]Y&-gNTC]| V VYz0Rg6O{V_sJԲV-wmDf,S}PC`l*~0l|rM2\IM;$U&OH t U2CoRsT9hW5SsM_zyQmL'pק'Ĭ{GNo~ wΦUIթ6rbS ^*vg ^NyҜ{XxW68X<42<P-hzMF=&c`y8!Bdޞ`@tiMM gYݢwF}N~qצ( F+j"ek-ދ,\鬚W亍\nTh|]h Y')鴪fA {@{C쿃@SÆdQۿ^*Ó뫘o{4&b7B/ґ#\t1EywKw.+%%K5a_Ğzuڅ/]KU mbN0*qAwAB6RI#v'Yۓ: 3Y@|Hw|”5AF\E[8IΝU H/46bV\w vЅ6ceNȜ%~݀ $Jk)hýSO[I  ۑ\te(KM 5^f dýH+ ?@_:X﹇mn::8M)&}]a\ Ҩ߹}~=ބ[n7ZE}A!R>$wÜO'Kj],W/&eSBw0p:[^oH8k:QΨrUxFacpQ@Z8V/`NeV~ַ*!x2BR:@uʆ^1%M/"w2sn|[iDK +y`RؿFUu")a11m9%6h%}n]rw}TOJtefQQEꔹ'#CIөXo0;H*pj4u).n N۪g8ר%We#76"|8n&ZW7+=MJD DS#9G&7*;^C^cL榴ppiĩB0ڲUϏtLN&< ND) 5|icb=8OGljڌ!am| O9DbϰJ(,K_)r{X[l[I~c.Hv rɑ.[6t1Qr,ms;\l8;qkV6ȧ>-9ՒH)ЈS԰Ik'z88M U њmV3Mw²oWc 'z`ҕ7^J;ɚ#l"l * [s&fv))xM*A86_s4IUoe ɡ8n;}ȿ,s9i9OR',,8)'j 0NV<@z)ZE!z I}|nS,!Dc^oBL,j-^To+Ɗč'uv<1bnLa% LOPӹ`ߺK+v!KaNOc5+>TF#@Wޅ'P?h5'ԨRcjxe|LMyDӲ,Jy_j\><9Vs.\dru^{VL%wr(Xc ]픘z01XOv{VN\JS Ɔk#c\ μRHpuәlک&J?:nubԆޛG3BLij͔L n(FgK HOx'DCO)pcEdV*nxFǃUmA`##BPZL?mSk,Zuл]6bܱHU8:ev=>XlvuecHqQGPx4z"uk ]7~\0ȉ#tT}5b2w.T~'D~BQB+.)?ڝp JA.z5H}@E"p#~j%УQ#4<:q6󙎣nC W;;_\^3@4 Ts]d%k%Q$VyI#}^H@HzIS#pܽ<{%bYnVrja޵R5zh ^fR,A"@~iK{(=@Q?8Ϣ-#C`;EZ!4Q%ъAԙWH՛2lO)Z32ƸT68:3UF$ d9Op'L-2̕i=z0˪1U.Pа$/Ѕxe€ >^-{~ X_q?v&"* n~GCw4&Ddao4MqlFUy=]| C I^<ۏX eVj4rBgIÇNȵ0Z }Aw'iw l@IxF-gEHZLǔvߑm8?d}+ x wh}촖[p.=-^j! Q}B@b61ow{ޚC#VŸkxM>q(c(AoN Fh8=.NNOfyw.H˓r68Uuq%Wq8(:eF1G"`xx&E0?Va z Xc}{hoq}ܰZoˡ_hfb4ᙽŕK/I>aΥlIql=|U sn^jj1qF\O E@\kby+&OmS)e7AP-,6Uj"4iž1mQS9|Zó?e{!Noam Ha@BЃ.x싰>S^n_5>bis!S2)>\[u H {m>z0N*'ӼPm%A._7Q9A@q!nFC~Q"nK 3mZ;/tH#89Kk1Sӯ JY²cS; 䚜h$&v\dvL~ $ HCZy< zsZKnpfbszAl{|]9˷(Hz@aՔnn.rXG܀^$#Ox”o993P.KDP fg#+]2!Y ÞADDw*K"wG;뷋үӐZSBu>MmS-pPWڱ쓗uh02;kl=voSQi6ԃQ.TM+ ux^'^ybSc ! g\$ 5K b&:T5='czB;k"p3@GƄjQikQ5:xh S# d_ǡJ/;?vގso+}.G~u퓍3|LP^w ]}%G?rL.yy2PCvnX꓃4\!" *kTFۙqCqxFxc7, GSxk=fcf59ΕeM]Rky Ewkl~X %L?Z]mv:ѐB^C6%4,j)WQs맚GU.^AyC7xJʕ+uVѸK{" g捾9;9Z Z:J}2:7h~PBۚOK&GoOtdOe2w2-cAo9#@k~Ӈ湄4w۾c\yX7@.#bYi5ҠS c\{詙cq ĩ}Me*mukdS'y"pFW~N0mKg`>qieE-35P jϢZl>sqe.h6|c% En׻`El-[)0Ӭ֮= ۀڃp|9p#پjPN ]&sS솢D8Oawk{q99" *N[i#U2% s;{$y1lEtSux&#`T!X=3)R=`M={A^Ua_v·0GYL̊2e%9?L1B\nܡ8*DA!Gbe:dEk}п7b4 mdxohQ"^;:mi]6ћl z╊jrv['* TY&o1hRO꽫;d5qW|D|ؿMF{,2w[9=}*vL0CA]5v]iЊ}5|収C&g;Ʃ ]yFOα1zi4; spge_w- ɸr,-&m8~XxZiJ33as+AIww`=lͤl t[э;ܵ)#@8yC\zT;i XC40'BJSig H-'7H }b 1T7eTJҦ5o-*.ua,_/y8pT:ȂbbzA5,==.m ||4(u$n%eȵU8.hu2&ݒ B^|PQ&ȶ~ 7ݎUTkrV jnu~ѡȠfUs'c(T7c \R^2(ݥ*):lj8OS" P,<NKEh X;z&}:szu`P{}^:쬶*-!ǗɄj!Ңni/I~Յi}Oؔ@aLg{// JS4?XueԌxP+ EY5K}q h?=m@{]Znjuѿr\UHn~.hLn@]h۴ dl"d5P,n:A%=aKkfO48X]9$L8PAr9 |>nN)!&*e(űEX3 f:2M4X*zydU jz#' Q;d Ԯ6>L+\۬o Zt"<`Pf^CGgJd!l_GΜ !?4w*PPJYBE)P*m=Kn"XSm8Ј,>x6T&A (Q{||:ѰP[Fl1*.}z{pݾv+ /݉Ax'=|Î)b}+q,3z`PLG=ggV6E=EC\zE]]+`lgj1FWPy#:gE| }C}$ Xz=9GՇBODsČ٬ME7ህ($A1 pNsFQO2uSX0يdBS{yGh9@s9K'Y09>`}=n)^TrU"K( j(mk)>}sL\,P G?t$bˇts,5RhD0 F3gњ?Fr+I8y*b"4g!f3íf}H0,>"vJu-(^R0|!杛j P{㭉XO/\M\R[b\yUkϷNиbnFNN˱¯vzb:\oטYPVW=zz"3XMI#c%Bc*EXA8y|&V4-9<+GKPxfhb79? Zŏu&: 9D;opC`Wgڞr { `O^:^ڠdLNUWLg)P Ǡf+ ؉etmT߭,Z >0Zk9yAE08VW'3񄀿35fv8t~_<r6El 8RC忢T?޺M򿂳UL+5SqYY*;@\|evG܁ˏēJ*pP¾*Aϸ/6Q1jB8(R.ZgX yZ*}<_$%stG'Oڠ)62҇:*b3cz07zp,%,A ݋BEUktq!x! O;A}H3W۹bDjӧ8)1x.~T!a"PxUtr"Kˌ5p $tŎw^f<||xZIJtb tesU#*0M!EL~MK|ԙlR )t#KGk_v&AbOhQhݵ≷M!QUr wEJ;e26;q?,uEL!ӛ8jo>%>S9SCv['sr託HDy7d[WVp-N4A"Z382[~釥gqtG ;QbDw1䖻TZ^0OX.ET#T~.9 #kuQrpLy|}cz {㫒<4T@l6X23 }@]W(n?ʍ Ҳw. jL<׊I oQ (zo !`}A"0:K{|Sm ɐo1`1zjaHUgbЪ} "byK p MFem)4\c>8jv +4D4WPyIij/XP#@T_'&wݜjJ'A`^^|#l<"aS[~d B5,hPm+>A2&9)􈷃Oesp"l1;Jb뛅apJ?1L֏H5}f MN֕֬C74Y XKS('BI_} lv#~EQC =}2XSrVOdQ͡~; # !E:L8nڨN5{m-*%b;D [M| Y,i's\ˤU9A  ;:1+DL(%C9 o#Ul$8Bzl1gP[NO.iXO6e7}ȏ."MGMCdDǞ]!T:a-AotHMaF,?1Z9a 6vRO\Ճh}m'4Nqe"f}W@f{.=[qu-d;⢖.pǑx&'Gi>}K#-1mAUn;%l73#(xޏ m@ؾyAࣔ8+P'B0r82Տ=XM Ӝ:Zi\6N #ItmUޝU啤>-l{o#9nƅܝ@RAocELBix#KΔctOPS~G vؽ@³VvAXHU;s}@3L|J^;Y)LKf]x<4-qmQT86$/!OL{PLgf.Qa i$ޔb.n*l .S{Su\؏Zt5 }3 ewlWJGbWuȦ5 -י~G&l8Yݱ8ẁ!^_mx,F[@rӏ%cS?ՈOQoR+/+[Џ /7.i0vKәĬ?^`(URmנ˻wr  ¸VڿpuRvCT8@A2a Qf3 NAWKCتfGdy"$0p@'{.">-hѓ~c=qy~7m!sir{XՌ"pct/,GVbY<e.wlTε;#zM'^|7x$x#?z^HL$[y;4ҔC@و?H:X (l@nZoy&MFA}:{`nXwIQE"(S+0$ ) vƵDX#^HYiQIya%|;K a}!`]:c|oN ڤxr)5 R%1Q+#k!V!  ?xn_*Ljv#O̢]U!AAXL zukU{@%sP4hDxoe: Im1?'^ON盍. MIF~2|&Rf i~A'4|.ic'&~Ɉ/C!̛H^Ty"3I'2m䤁`j9u|^+շݻ.I 86( C0:TVPOV5M 0ybOK#no-hY|Uk?8{0oPڬeyzGRW]lR&&G2{w"wm`;(#AyD108wGmL@T]rWzbFZ¼+p[cX LI%Cs'+n^=o^BuF8pӌ.rHKF{Opi7f(!8AP"Pqqβ&{pNX(*M Eڅ\p ̗ԆߊVTP{!-{,˶ S]y;r(+aslX H#H{}Y<-1_'c{3 Y$P &L6Y c CqKDN/؝1bj@ q_)l8 F+ SDtLǨG1dcԛY%2mEV9bB='W^z".J/!ėK *RSUMZg I PVmJ`0ϾP0ƒbqq&\Ǘ&a6h20 ;htX`N[bvn"wOՀ-V՗wcR$i#k?xh;Wu2pKܠvQ}T@|ѥs\n ;kq|?$߸vaHR#jno >^RlB^1aZ=̵T5Ð+zTT)ʿ.SÐ(ˎ-bg[?=߷VnS!:-&>PSGpr̗/)Oȅ< Q qi?و nu6o6)lWhDN)"+:X]:ewp96 Uݫv`r i%cK>m4,1/S/E[ dA}0h|)[XYi \|v[@~\D;=DWn䆢OX輚S&u;gc8.^1G /dGN%D sx $26o.ȣKկ`&&6%c1u=~Y7J/qiBȚ=V{^?Un31X^:NZ6\ OlD3eXc|=+5@*4nP@m& h}?LgTzU.d=FXW/r-r|TZ/(,}&+xh9w2j %=o:="? G׋F1x*u~w8NZP91?BVԪ)22+(ΙN`L}_S䍌mTƬɧ'S.X0K6` 7߷H떧n#-u:CXKd&me =5'AVzңPG&~_ ;rp::n~I*f~,'yhD6օt3J @ޮr_m4D"$hRj\2IG/%pBqDd0|ePx W0(&ضCq+P7-EbL`p AF/CfA)hhv+̉r: ZԺ](*[3V"$AaqK(w5־:%E'88o ZfE6piV][tύ\sյϕ #t^8?l"v/L$hA H7b/Cղ&OXŔ8꼡e-Tv 7K\5Đ":KyI[/qC+/&]#Snaq4)&?C PoUdBhm,~Rh+B%Rz_]֘nXe8hTJP 5O\uGL39*ֿ(ݪs^pzP\;Ypԁ- 9 tyj '\mR4b'+&\ϰ)t;FID:J7dKWkŶ # d;: (FHv,:Jz?u\8K*aJP M?w+Pil nHȞ8*!T(jY٤IG| ˽L )?:`̼IIYͯP6\|I4DE<-m&`9v"c/%=xNVٔd-+WXӐo)w版B*V^_ge!1^.D%Ge7tF.g$LE86dO`cƂo(bގ:ɶs]C`۟ l'93B"/ C ╬dXܔ]:\3qۯS8e ! ͠,]ؓYq#_g E>Ƥ4Pѣuy%^I~܏k%*AA2< ?ֹ7ƊKFl͛1AH- /REۇ:ɯ"fK-+l8 `?l`,"<_T4Ә5xڹShHDrwC0 u{}cl/}2ʅ;8 x{=K;H>6=so: E6ۑ`i|=yz\m镍6iQH 5.u.(niq7ƨ qחe;jKݵ[rndY&֏zG4xjK` `}n21F:Kus9McOKFDRفI mQg|kOa,rLѫIb7By()im'zosMV.U{ЭIM|Ͽ,j Hv<,Td=dHT6չ!Aa%K7r.IQd*EbMSyL"7_]',oU3ed8:ۘFT֧g&, n7&[B0iMGEjذwߵp e '1)m &u1Nk)ɮ6R iFOpuf 7To\Azfa;`;vgSZ~{o<^^50*Rs&xL5wQ5 qm5C;fumƭdFyo C۰:NU|;\ m,U3naA`ē-|_տT۔G,,߮^#]Qj:EP4qY(jICWSQh0JoYfMW,8>AFEB{>K^:q$o_鄥цGupCuo 4KoWZ"Ky UupIcbC8T|(P G`RB|پ DGBF`0i_U@Ȩ䫂A'OqQ8Ym@O5­hKTQ3nS9[dңO#ئ(PMd6 _Vfjэhz%Mb,fDvG?zJRFGZVs>̓C8xo:K *wka[J+Zvm>6qWd(#+VGm=k(I۟A/mظ^!ly,%ٟcCc??\'FE0:J*bM[_<&a9 r; InVX,㮸Дq 1$ t{Ad˱F7\;@'[WͽwG"}MuEASh\BQ &QY꿜`Ow+ C"lDuI)wxe 0S*RRF>T`L).9Be-0]J"si.eZh$7^# zn/X`c9?vgKp:-191*FӮlYu}Fjqi.':US$ t"^rPl/bvs  ZDZx \(vߑ }ʈ#C mHb$' 'KcdN$1qXK׹3ru 9J/(p vlK_$񝋬#B ]=kEGhezT 6ViveZ D)kv=]DچyE#mȉtEF(gbVj.;s6P&pd=M=PVQ52Uc,ނ|F3Z4ŲnÒO1"Ѝ^ @E 9\2oPI `K}l*gʽQjV%;a, G-ŔhO]ʹ12K6]k􁈉8;0r[n.E(W|$;8x ??n>"^%_+ K6+L;fAzQЙbzM I݅[zHsE$ L@$=l+jJ`ؿl~yXk>Vq髚bIҵ74Oҳ*/$ $$,/5;zu L9;`BK.@ؒUy=[P2z&(~-ϟ&ti7?'G8t .D_'s6 q.}xF:xqHvY`Ois >mnij阰Qy>x]W O˲;Dp QOVdG_^Tצ ii,e$&u=8P RݠU06ѳHX﬑7[7u5=`Ξ)!:KuL(#/2d!Wv,22mϨ8C@ad } "ȅBsDn|ɇ~JzE(d~>B1³nbȐ][\2`D$ޟT CE &U"szBEGA1~C\&l6:{Z&mtHha7iqB8 ~MiSR1Sٱ(9SAsDqqmf-eK |MJfwp9ovƌ`XnDaVիXh%][A度ke-L墼S8VZ:^͛ y.M̂*0SC3$ "X@23ݛhT{m/6iU)Eg?) ̈́asx r*)Itl6J)>~U[a֊ғ}3BLr3oA,J+!VCzLWQ'23 ܚpE88UTxBtIȏVK3ͩ-6`釶 (4ģm01rpYfc\K̊DXS;p"3t CG*?KFu7"4t>> ݵ ߿w7 XEߊSr!&Tt?cP}_\TmgqlRnmt_l1H+?fKH\ yۂa^dW#՟“f-E7s3zm6!&kBٰ_%?q(o}7n$*69R|J ?$DX)ʀt_ɧ\ѭԢ^74E*$嘆u`ZgUc}qHda)O2ID;vfT r]ZO[͔"߽3suuh\B鐕6k<'-L wi]7P&t{9/m`dMHQgK3."Z7{$9"s,v{59io6MbhCG~Ppc&xz`h$@C[)5mjG;5u;ȹG)bGojtZIoq مSi[zG$־).ٙ^X,?U/\̋P<+7=z&+ݤ`_־<Z|+Xg >-;Z/É7J;:=KvNA~vzt/tHcuj"¼K#ol_7\/1";{H#PHXuF8FG+lI0/jހ/ |/TY#Sr L#.yM%ZQ,A_QKX^k܅^XԄ J 0!M=c$ I%B* O$[ph,lG%UhT>L_]< qֽ {6e\0k OM8R4L z+=b5\mDf4zj{{$p G Xv2+;7DKƥ&m"V0ߒG%o&ɫ@Cwh^oϦ1մjt@ҭֱ) d󅥆*ѐU3 E9 $ۮ#֡sOrIϋ"Knj]Pn.GiCJM;iaZ/l#u7m|AtUA/Y\1 ]sAVqINMݫZdi&Ñ XsK ttY,)2cOIZ wTC}^dM{F>UEyZBk ti>+;ᜫ; r<'NQKEA/iXͰ<*̦0 WR 2=4koea|nI8勹M>Ҵ;F([TlUV|xuH3ScHzOIsrs)qF|>R0'"WjVhP꧳9T&*kI?Ɍ=W#AMh 햄@4d%K2 Ќ&Z 2>Iy6O`ISCȤe{^I~p5\Sm%wԙ] ~ ;9]m~)Z;sT -zx5 ?$dw;aX7`Y0,C6֫`쥵c Xh:\p]`pr~& | ; ^l>[P.@:> 5,̳j#\e5"&[I"AMva :Ҍq܁q Vl|519ی@kFƵʶ~D[lYI)@>S"^+׉p&#٠CoL鱻 -g16kyBBã^*2hM*/~L1ʃXtBҿ ވ;FY7s`taf~_{*F,t=WM _MTSF7~bDE]iaMB\`df`+j9&Z榎Sa9Rtcx\0mBVϺr^T癰 :}gS(X \Nf  iNtN;lըjT%›"B;N=zb}ץ c".-d1W gѓh#C<?YglLx"qut4ЙcP<7 됏 .he˵" 3,,k5^U#3@GI 7xIx!4+`WlHey Ҁ5FUG"pp6|*Q&kL )dዦ\!Q9IjKxj%`h܋،rϔvƢW/(eA9t8!&OM֑3E_#*9C.֔J_V(` +)*[F* 誼>‰ !BFH[:ׅL'?:LXW'``?W,6Bo!(ӕ P~wnv*^VGX4$gGżR/,dU}옒G`vNz%s U XެpM0;WϹ]\rOMbSm6، /~d~#K=:Mvak~-eܣ^@ F嘝jE-,C?X\gECN"tZDKbdLSg0]wo}ⅲT3޸'N>ǝ/l5gxwZW;.|WJoR_swTYF+дR:Rj";ھ-k6K'8eTlK%PK,6j:gZcfnW@eNW{=. ~rewe.@ޙPXpRPFjyp)FM R fTFx+!gtRÇzk4ڞ \{F AMtO `S417?9(_JafH CEPrfb2 n&ʞ;-,}B?B29D}~Z8^3%ݑK;ׅ߱QQ^ hH@ Vjh?Đ,tIllRR1ԖÆ!8W/Vj;y+z,$ 0QaT\f4$c vdqJT ¤nc$u?W㟄˜|U͡SfA5L2G)n`6j- b}Jט)OM!hϘlEC萄xFŵK̙mrB$ c$DYFB⛅Xn$ؓmFj(-L)WT X>B&F]nFTvT;X 1,7^+a[LPh^C&L{hc#:Ktzfa6{FQi)z}5L5y>:ډaKT+].hPJ"`F*?SE>͓H> ƯJDm`ܢl/%ӌOڒ1 ݰEe:}x)0Lմ|>" &ڱT|x{d@P"2 G4 l̺֍B+͗G; Z4&OV;YA.Zq&Aޯ<E|MX@,@ V}ب1%`¾:&1~}i@W7Xo 4 (Ƞu>C8%Oh]~+I}k#kxi@馸?VV(}G購_dPC<!xx]CJiBKo?L < Zł'j gi|C!CwTkyH,eZ$790 ~Xk!bgghk̍p7XV%>T! c;GUE(AJD,'@SQfo/U{!tWB>gP[l hcz=K_m}ESWLq_fGl*7(7)5Z<&9d,ōQ29gXse>X`>凫l-+S:ڎ5CRPl5Ju9 ܏tHj)Bٌy-W"1F{O' 1=A7ѐb?r=^PLWԹs4 TȲ1yDL]ko҇Ґ0*MWU)"װ^C6CJ4T*}rXtT'g#y'nUd_A/ ])gˣ* ȉ#QE]tp?rq4Q@FyfqǭIQT6ZitS5]:B,YCdgP#Sr_G;H!yrT7(1pUP%p}c-?0rjIvz<~7'Z.:ϑei;!'"Jw3xOo5 ;˸dV |Ȩ"RKKRX] *_Z"ch]@F~tMI 5D++= y%GQ3Îjo/o򪦵o0aY=t2Ea2!ҵf`[R{A\;7o}pae7E:j[3' 1Hn0Ȫ*va4te\h;BMbکjΎIu;7ObjoӐXՃ'ϝ98V# \LNͶ"c`3ƿەSWK]1bz<7MkɌLTgmwh6<|ٶN GonYNe\PnvQڅ;g[=l^".!'Ӑy%,Vqun(hMNFڕp{VXt(m-8pHHpb N0x_d w]ΡWcN+j NQ#R+ V0**p+vB-q>fOrGC3_k?tQqҖ !]otjvDm[;б*()ڌ}soHFcObvZ{>Y7JGx^(*HfXEdIrRV+ņ}kҟ`bE7TeHh{hC<&o DP9\_*; վ'Nl3*? e?hgӛlS6,L"9ո6ָv_ kӋR%-"}:c9s>S' ~AF"#-"!qyBS' ko=)}; zZjLqwo\ Wvn@Ϲoꩩ]{xXxYTWS·~:l :vҪmɖ&>*u MSm%F.\D~?ߕߍZH@ =:/\jGTdF/QZԟvR>%u85 wj&㇡IQ1 X&5jo/@nD ,jt5ފyy75EWn(N"᭽M{2T:5f6q((NoO0}|fA|2ـ㩙~8Lz(M-*5wvE@kqRzTD o+p5jUyʱJ;Sy*#6C@=8}{Mf4B0Ug]g2a l>dn_w:VPviw.h]xz7 Ƚ1XTd!icOJbsZ`DߩME24W}LYiz`"=F/ѭ6պ0Kn>q $_`q^Sd6oa@1> FII#yK*RL!OU梃ρGzk޿r\l2꥙[3:SȂۇ"/mZwo* i[wPoA:gEw=#Jϊl8xQ 0;{/PR`,\Ha+hc .D:]q•o Li[^NY]`e3I-s!Ԑ~pn"?J$ h?Zɂ}( o{ ޢNjE:/Mp (:٘ _YLIX-BFPEɲ4Aeا+dK`ݡkr=MP-^~_[GT:A 㷖V?5_Kn+Q{l 玆"D:Sm ɉbUۡq@8<"O*m,`)B ;Rcb7 apG:PDƹ*yƷ@dVMT4 q2+ryT~fkj/k(t:*7L8250)bW. ,0uCȵ*J;nn lx,+ Z0q'ĶvܱTKzOro@O|o/PFu A I\f݅4tÚKb؉bJ $R*R@MY dn7NzsVA-\aUw\k=,\@ڜBEE@ڜ7[n9RrA{. qe>$$XqLnq_T2بl4srn > R6 ϾNm]=n!Ndļ7=v>ZœLqVQGXh}kQ AYDJ4P@4hk k"i*$ it3ݳm>7L=NƣM[.,X^x1*/N2[یlXʩ]/>4XjF>)IR& 8d64h%4u].o݌Mo k assRʌ3H.| ke~~^_he9K0P<Ŧ^nm^yjN Fc (xmTk+P`zCwGd9E*'諕MޓR)ضԥΫ6N:Kt+X'b7ڡN)iFZaM#[]d}E{RT=A޻CMJ8V +/tpuzy{7sк:[ӂXYuruF$ ~8}q2B_%;)ԒK];O8|^ʽF\o"WMRV츒<>~=_+jZ,bFu7%P F1&@P@x7p~«nn_q7QDUy  rcP\%H [kj#?`K=nֶ}bdqTtеp@Ј@_rGW1S4Iq&li iv4UaiUP,_ LK:Ćp F$/~0k̤(KnB.9l@lHպkL&/ylU^Jڲˋ%J(]2NV<%<^;t,ŇDI d\ײuu8b Ԩ'v21RfTyx4}pA,MpC%HU>NpU|=FgKue;UyQV95׻אa!T;@ qg\LҚAގo=/1g!6aHN;ȪF:fo 7G ^[S,QͳKy9h&_iHqGc Z^w < `lG@  ՈBjtFisY~) q6Dju |ɫhHIIzƼvQ =ICh__N@ESʵ甐ADj>ȩYpe5ˬxXaXN*DtVaa~ߞzm~SPsD doGoy tLǭ?}KoXy/ʝckals. >T?NXA :iRTZ+hD jc5IxV'ridX+LP#rOc#$m(TtVI&9hW`ԨCNY04[b9}:CͩŸCcc w ~}sӿ|ɡ_Qxΰv4I}:-jrmҕx/,.ӠMS2!qUJoQ4$|R` `V8ZL&86s* yORWH(䣝65:dL47Veur|I0=[ȝc^IpQf}Z 'ńIeen*g"IΙD?O-GE hD{&7VC y >]] q)ۃ0njb豈Esw2P[>^^g0 _*IԃJ|'`}?Cgܑq^'eet(Z9L㼟 cEΝN$+[Pҟ)ud`)w(+P[_66x!90FEߨh7d%"=_G~.)0^&\`NHVSbاlF#Jje"'\zO]%uNlyȣ,Ya44n90j'L7}Ɂr(ĥj[9A3ltp<tU'bEk.Ј^ur`H7Ь+<g䐭".NʊӁfC4YqKgs/Io쵶j5ț4gU9\YbNY\}e4Z IAR_%Q)ZH(꣗JZZsPefl9>iA2,\wY) W+ҮݤS61]}?)ӫ#ӧWVZVdA?05HDL97o{4\eUxRE+vM\ 牟p6m:A3rO[*oV$<+4ӗ&o!mdt\*;Z@@ ݦEFu{]|1;fZaueB:K6'f ޓ/vP]t3 DKc3ĉ1lrPMX82@ ӈV"`aaĆ4bjsw Y+zƼSuj(6)*QbXUud3)m0Ҏ sv{ Ywg3'񘴠- A+v;^om/6z~ݖ/lt^U 玬2 3HrXjk\~#H5+Z|6FbոmXjFm 5# ֦q~g7 1 ^Jmb>Ÿni)zl?|'PRN'n?gZ0b_Uq'`H0ĚIc @uk"$쿗ګhPR._u۞@@آѰ|1Kh8Im$#-gU̧~Yv9rlͺ`IɄ^|-XLuޒ*N9?Ƞ?.uK!-o`w򱵱(Jhgp1-p WLv?ɦojC 7Mr!&sȯ%uOUߡy6nF*0M6nSӲ{ ҍ`:PXi3 IE`IGK~>oaN?ρ~NsI4i-jVcu\tru;yq4hH^>pԫ ,7w c|vէІwš9 Q_֍\;5x\XUǵrCJu[dx (V&^HfoXgD1Οf=GZJ.n5_5N3NV\mS'ȤM7j4uYe1/. κ悝˜-CsX1Yښ~}[[kQZk3?l$y.;y$"&/qrhkaI 5ȡگs.*jX# T͙q ;XV5w+z q^vrG͖k &bVŸI%ﹱkD\ffHd1 ۺ=@' dAiTMRt)`BYVp#@}aVeZ4 xž#;ZF콸`-U $>4M7 ZOǸ=')TY$uqoIegRۖFYxXV3Ѩw:2X`<7K^`Aݍ"iCB\'ʸ(q:L,BlC~~J^W?Ap#V!Cl!,F7y)kA+ ϺBp#6/I_볙g^[64R-0eC_ؚNbI#w_IjV/lժ՜D3ʠƚrƀ!dl+J7֭Dx iXf?J3v(N)|@09n>+w3r͌YuWV@\T&$x1?#Sv"|bT@ yɵ䜜-_"b[_=?%Bv]֗݌ᶭǥPrlѹc̈́j)M &4H"^0?Gr.cf[ %s*P~VYO/F*5!4[9ې4e&u䝍 ?/cH:I(m6@"`uj,jV+&:Ex)ã\̴F2 +m"Mt!z*7la;VYœ.dU99 B4W+L`4)z oh*/Wiu=#~OR[0Zlƴjlk %}{:fȅ)zmwxPS0y * ԏDv^HsB #EnBhdup8]g&}VoW~ cho s ^I\Cs{UzYM=Me{&PRF꣇)\#oT%#nN )᐀eqyrOǍ.$ot̸ $q °2k[rHy$m*TFཎDa2\صby.E-~ wgN6̊KM<-rwoh1h`M O>Ӳ48wJSu2Zk>{!a2̰e/1 ;n8L^^:Kpj+tN!N"G|~HZ |@LP$K[L|׭.Au|^?'c#`pq`It[:NؼXK옵h!E͒cɹP rڅU|e/OXi?;a!E#Վv[ee0x>0{\]sdN'c뺴|RXzp?;V}!"OlvJnbץkE{>8%JITwlu>ReZ#sg,<=O°ϑJkc#j+DFa+ w'(,AWb(QV2~߇aG`҄_Z` NlnnRΉOp琻A!+MKtq}A6&m~ {+dY&%m_҅6v{5eC5^"G*('FLfdbl R+fʅ=:rCz-tg -^Κu* ~Yo}Jy߮D_i0U$>"pCXKk#\ Cߎ Zèf' 0A ڹ:8Z"B9߭ru4/n,㲰C_"1<`%K7zO9d&&l|Ԍo 㯅+J_0s8\D:|?T+5^9n%aTKL9@#-<}ffQ*%9̯j%r{CbnayQ"'4 | ^cw4)/FmW^36us()u\=[3eAYN|jixe*7 |6ߊl;4.V0c*߯3r(<MĂs/ƙ6Q8pyjO9|i9#W ̿$k'PލxY[9;C\G &$.몑i4$@ ]`:i,lG4|ba頖s2-00RA_|?T M^A dӴg'`R+y>v!1^IrK7pӢ@ױxZt|sOZa=$ A,w+r妹Z.qt>oK #Pb6nj.{X }d)61f{)xrax[6b/Y)"U`5B*DS Jktc3pkq 8"SFЇ](Zí.DU--d{"UyF| Qh'zKA#-ۂe(AT_ۡ=1 E@ŴptVV.[3-V4,X@h'U4(jUJ!}H7jDE\Cqo؏JPA{uk3 df1%PO>ldWd+ЉoŲi*ѧ#>)\tJ13U]FL?<*v`g^|/xaˇ>jY&m\d A[lwau@ cqUYjEoQNjvP*g;E\(K se\kRH`ɠDh"jaiJFsoշcٝDkáu z9#,o݌)TS*'3;1-_jxtn1,`28 {${,!dGy%N%Ɨxkwupb'-lDO74,W7ۜTkyu 1ρIک@FBԉ}!iwgL Tjnr]k^|kS+Z+z$w!vA6VEJh\@$MvsdeېO_i尔/=KTrX66_bdQ 7l1„薬M1y_r"N4dRc܅F-G{8W)bO("T`-80N@*9YLQ();Us FT鋛 1jJja%%TCxd|IV5=h^WTnVLYC,;D]@6+$os(:/meE˦]b6DŽ\ ~ n[Os'~Ƥ33ۥ>BqSMfM;}#zIA/cz WDvE tuc{Pyree.9\l|%#3tPB)F0p#5}<ǀ0|NE}.z-p_^qQ!Bx?6>D ؏ 5"^v͏PwrUW9{^ʴ9A8i✂L^f(MQ5z%2`l# hzr8oe[G )Az-M|վy:5>y+n6!í%{WyvR"X[/%p6c$z 4GRc3 }" ڧ elW oɐ}Z,yv(3Ϊ ZgDVK$HRibTl4Q?F3A-0orp8C(THph+d\`?8 3)OJe=F]'˸>} B\}TV4g,5$KG"FwJf1r &)Yx*+SGNST'_Alx,ѡ@~޿Z!;/M>숯_mTjrl Bu~h|a6jms  ڎ)Gau 09VR}3p˖Py㦜=Li 6cy&Q"h<2B9TԢx JY{mkcy/tU!67}!A"wTiiY} [aKo0MA'i c2<Ύ.  2#3pU<»\A3؟{V7?p?bY ovܩv_X Vg9~1vk'Lj}vGsO+yCZwE`BUǑӋJbOH^Gޜ/E SwC'AJ՛Ox-2$6R= D3$$bvO&ol{c/%cl&8gF0i<% L`KaS&UZ}KGPE:l@~ df\nfZi0^RmYpLj :}$SX!R  ›pj3+iLXKԪ_ΑLUċZVgሯ'7QX0js7jP9 W\ՍDf6VG;75^f{>:xgv%AF/ M R}z6B KqO\"J@T† 6 6u%qEY5}~HOd~-=R^y6s=Ag7G#$1”etV(+aK.-$!Q,-T8ɖU 6FZMք z1/Hu/K$~ZnJ莞-8*_gA7 T 9SWjSĭU[z~K uGV+s_<olIH$ypvB QoɎI0GKpKڍdd/ZN"QKM`ӾGjGQClh6)J'*H@ `$9$H߇ B;SV1N:'K&T~iOnA;V#ֈyvHg.\{h03S{^r/G0۫M )>aT{KysE:_^9. X21t W r3';Unl) ٓ*Z{0!鯒EqkTPlT(<Ms#5cTi=0v!1M!X+)l ;{L-z/f'ë-bfZx\f z1s얭*KqX#@)JΔx[1 (n˗c'ѷ'|/ %bss=xSubx}!HF:6}n n,zd@yu#s.f<0:v_b )1 4^M,_q5?pj9j Q{}FW9hJdTgmL_$;OyOپ+GT%ņ9d {EapI)ߢ[324ec+ A )jLN4 J>r|m\J¹->1LغƢˆªTLR=fXAA7j:\=Z{Gהj@,Y9 S%Zn ʁ'$GjgDWjzzPGl&GlU!+ȥꌟBb-EV[ޝRcH"'=׋{sC:SX!y>Q}P‹;hS;MFpU V:/><;*zF?;t#9JnOQJ`U5}Omz{ w,mSA<ˉro#S2~xN 8"F1NۘlE'Oz Wo Y%$Iur3̓P\'C[<&Bh$}-ڨ]-Snf=7elTeufD_'4 q~jcXF]8Jߠ_1QqjY1\ݑs 0QtDY;L)'yJlKJDedsE7gjDppqBGXK׿›O?Xa3&$:ahOdȁ EKzG5j9* Љ`xʻ)=ٌm]X<ϑ5#]ZŌVOr\'ݹt7BkaNQ=i6;UObzjq7qX]BA"֋hЬ ߂Qŭ#L}]+<"@@S!I|Zi0X+SߞlT+Ϗ^RϰSkaxb4K\tç A c[`\>t;SuR X0-e̹Evӻ_w)Qߔen{ձQכ :uW'"a0'&_)&NT*&{UDi"2YyF{͝*z 줝3'hRnRU.] ?Q}ܱLϻ/Q}k.t^{{H!"e2xjjӜ װxÇ-pv^{u4BjB|B943c /rчˣxh [?܉Q8QͲA52>TM_kKQ45,G?}oxɅƿg,r?99t۹4Tr*ɣa#`w ֘7󽑀=n71=7߶0 Տo#.=)XU.S(Tg1s-w,p$z\>Gx /i pF~Ba[lTY]J6, K%lxcCFnhOA2بi}nph7\XrGV^yB F\ 6sj2RodB-4sĘȼ)a}hD!hp%4àmUs'Ao-`ٔ$ZwFQA;Ɍ`bDGIOm}#{1d[u柹7'$ϗ1y:aŞHyYäP&WpɨyZTQfP S5A}@Ցm:Y'F cnvbu_WX3B,G]( _$  1ۧXod)sOV1<&lZBX1 m'5'ZT٥,^șiٷG|ar]A8$ɓh:΁l0* 4!ơ;Zy 7WҀ_˼ öDVܘ^FV*L藍.׊2L.qytֳ">.qDܪSדL%pЪL Na9F9y d>;#%M֥V}:_MZ]$ ):JɅ!C[ x<:m|Ca(Ntm ?qr<]e3Q\+1S^n)Spؐ pٴxAo6]Wv7}k*8% *9ƴ9] 3Фzub1;+׾člܰyqDgpqޭ[YI^/G=SsMF2@+[-Qh@]>RϷ";~mNˡ]N3^,sni/ ެ,MyShtj$hQ=JP=2M"9}ȳS1U'ߏJrǃ04(tlB LW"L CwNm+t }Krrb;;^8oĮAyv4,GhʰQ'We4\,P@;w4]KjݤAra {/ ^V]r񶟻 *+QEq4zxMё q e˾7 0!2 f~"+RGS--; bړm>4N6Ka"c>y.0:`D1WlPr~bS}ȌLʚ3>C@*_U*AHdUO, Flo{C1o6{l BB {ƵDo*x"MZǿ;ER[?,}qE+(>2~8;s7AxL>]fύ(Da8;HV0򛉬+br ҿq.3VC=Q7]\א}G22{sHEN說xвUBc!5|0i&Id5\ &x]V7[>Jsv:KBP@ɩA磚?VZq.|隱\ pa8?Ќ 퇷:"^hBYf{Tqw+7uQگaLj>M3ԏB]nVkh_8z Qar[M4jD몡o|!x]6g9l۵D D hG 'ϲZ*WŀSbrB#'EU9)8hl-frؑ5}2ͳݢ^"1o1P Wލ c|hMzt'HEsf!6O%/Ӹ)wa3'uw}èPROy؏sH3$7TFt\e3e]2_patF5$52ؚWeQM#)l-Í^0bgJGx $Ƕ~Tk VdHE3^TrFD $zшܤ%15z㻐;ʻLAE{X ꊃiLa GM2'4% *= e3CVv($Ryb}p\zHAH(z9L kNLVxUU4ZMӬ3 Y`a:[s!+,,|&*2JEJ{ONFU|ꡚp-2oǐm3IpȚ=Yoq<ug'F;==9聙8q;=Pe4SE6+z@ ]"#ۺ6S$^Pm9p!qA7G KZfol؀=UHʿKUy~jhgqD^262ևe ӺgCr_]% edݪ%.vKdհcK.3}{^kx*-E~xGIrCW䰲ؽYкƖ2^p}Sg׎K.ב1=gj#ۯ/Z̛{t7٧a̟DOSD.{_,Dި`Kޗnh¢/#CQ3GpVJL& ;&2Y|J9ē洮GΒ$^nMVS=>bhJAjLkjUy+(|ޕ<_>.+_'':;k3Ph}})Põ!c!s-̈1hZ->e"o$l g 'O5Tg`O Hﱅ)~ܱ3=] Dys2E/\nhNHrf1cY\ƦK x6 ޙgFWp#\A𼟥)yHzndXtyR>ĚlxZRXa. 1׹8-Ddg0SLg xDF70%6$O,ζ->-k7YQE<1;P2"Q3aƛ%l 3|hJ)t:*'_--Ip <ٔX@ #ޠàM$֬ ZJ)hfM~VTcrJm]EձH"< >豲{Z"jj "C9.},w:%f||xnEkkOMl'd-9Sğ8=IvG98e‘и~^[L''+A%zEL!fdkUm5J#Z%N<IIB=nt+Ta1`뉨mZ*ґh~$ :!%hYԘ8lOf?n\6b-y2BE-o<`;(O;M'ikwk_[LJ+|HCS^C)PIx_p}dSgOwz{,/e Q1~2 [2SO^ɗDjHݙ֝*23\հY13ߚjOw†⋊*ɑj -=];&Y%cz^+ nE[8c%׫df7[Uq<wc{`^vCx0|#כ $Ƚrc?K$؞fkT,f6)fhsY_c74-I>kH}w@/U8;Q( f%R;Ý3䑠k\kN;X9 W s늅ʩ'zJuܩ`S9 {=~>"f ĐDZzeGiޗHd܋6}HUPYEw5bjݗ:B+_)=!e܏|]/FnQz%:zw7'hgbVx'S!lAC݇a8_Ar_V]޳8N :PcINvx-7%k+UgJ&fr"3!)C_R˚QjVA/t:[=_O*bl|/ך⢋pNş0Fk#Z@Ls,E^ NC)[`7vˌ@e%Og.ǯ\1Y-@*-%WqYIf7n'Iãދ+CjCbݟ~2 Z)1]@N6Cуu¸߅?iqarQnM:9 D#v;Bg5n`a`0DqiS޺6E/4ԑ#]*kr! P9㸜T^[~|t.Dhț ‹>X?A⭄~YNztkۣh[]7!h$_gBqw?N`[:ZjP1DfyE[\52X%~鹳p8ϟLju}M-8[?EF=qY]b?E؂N @넙Q(9g>a+$$YaHcԠ,:`zTm5]CF}3,h`|;P~@Mg?!~v%axoTWe\:ڰl?bV@ZkQ9caQ@lc\v,CM[TEzmU1NW\K7K@b7l__$CY^OVZH Pa1`GjMDJ48NFo aO!k,$r:Ձ>K[- eN 5nI49֖$tͭf+W2SKK +hʺ,~ ++͟sbI_S/{CQpN ;{U)?UbcIDpF|(r7.Zgh_`FsFi H8xp, )濓;vtZNԸl+»CC k %: >#k3LpSG=e.TTBEm6sYYuSgBdvvUAcLs1_pFW ~cF_ ]F Y!Ԑ5 `d[#y߭0jx h*?x>ԹL-Z?0=%TKz$O\!eZ,I 1+S+uF'v(4:|yJB$ V ];Gw 8R޾uɪK\%dT`plŋ赧$x3lk*c+~/Qb'OArʿ `p]B~lk9~p "L7ձJNGG:ռ[rf~ue9m㜶ρfM>+DX; Ѩ)f*`1E㩻XVqjҳ|*#yQ(P5[ʙ'ݹn FPKuzQ+[F6]Ɉl>%;,ULԭ~0f>F䀌)+~U|JJcɂv'4|3$]>2Joc2C΄s8~d\"Î:=bc)xGե˵ ۫KX9MQF*K+nIVh0{< '$7_i߄4R ӈ]z]"X m>A,,>d%h7slq`p}@jJ~RqvF Yf9R{(qxK)ҵֶ,l E{.Ӆ 5]r+:NX2umn$|bndNn;(~NrHrh ,K"صwa7ym7*^1d|i֐T6ܳVU.%zqmVx<*#8,xmwT`R+HМ|)q_f4G {~KƳaOaΘgNh l N/cF./"~p}P|2YnHmWO{$0bub٨8d%wU;*:+F|~`" ;}. zˌ٫3=Ek ^3FE>DKqB'Tod.0GhzxGr7-(d]=kÙ)O˙Z-s}]YzZg/7o|p-<-SI7oIKi372Y <8&иV\&qlDو*eܪtrm4C XTzZ[( t#EP MB &AA6r.hn)>e Sb2!SzNkc)!r\e W`3 ͦW;f }7Mt3/!T EP韶=p4c@yX3Ytp[ {oOyq-"Iۑ 5?It (8(Y|o{78t[ itDd{BЁ񔼟ꄙkCO:1--m÷3G0F 6N( ?+kUe1 mz kle>B5oJ*#.⨘yJť`_}o !puKRp <֔)cDCZCK+O{9.~h c ,Y *]h K Eb->9~YK ]Yֺ,kH cf-AM\`U"c'MvnHrkz\#Ef)@[-YpȽē OD) _FJ m Nd:̅o+Pe'o/~xԮ)Lx3'R֒Ns6*m35T/c/XZVr{W=L1V 0s K#Ezu J gJqQP.R79Ԕq?%F$إb1 2Hud1Yf@iZ1_餖uGiVnw'F>fPdaE>7閾пwIu?KiRKMLeϒI!s~S#"o$Pg&$rp_[sg~¬jVaKN[2fڥglVsRB죁9Xل. i=ۡ&Ywk9F$|MnEz$:rIgzn͋4Vp3=9ǩ{߻g*sK$ {>5ȒLz)".{UY_Wo QԄ~QUSr +iaBYaEWQȁeR5@\ 5m}u敋2 œsxxꑭrA9"=5;(meO>j!Rw6)wrJ ʼn-㐀T#2$?)T,!x5=8;]b͋^,;Zf. _Qp/Ÿ`nb,9GDYn<5H.ӧ]AR6 R ύbGRKJhf]=o]Ej&0T ,4qRJ(2^Wd! W XeLFKFѽx̧`9HRFKVls8G萯01Jԍ?S-5SZ #H94xQj 7eIe-zZ l=eZ8̏jP隆-<$ P]^2[?p+L]({dzNyg֌JRΓ5F@O 0՝/Цc x~g'>l)5P jQ}艗qsTe áUG# S0eVv_VH]{ͣ1X![c 5j?lɱ=Mh_CÑid up QxCi,ƽf2L ٲe PO:򰳳;U)+$a z4PyrG&(b2RVzy6sƅGvJ4s| њ3rT B^ ԍjh5rJ"wYe' Iax͛4k9E:tdk6Ч&h;'Od( 2]x,ae[;2CBY;公ݏnq:&Wf/N=q ds6a5uUl+SJͮ-!OVrU=7;hAa͆{0,ō}b NDAYoE#@KDzړI-p^=ɵ80Ν m.HsHl-f̮?2)P2Za<4oz&^Zq%PA"콩2 aFe-,>I0;('}pSٺwϣ^N>A<5yR3_gZm>{D<Β,A\I`<J4&fF%7`"$NSWJt*|F∼S\EDPV`}D. UwBBMq_Snt=&H$̥:FmDmlwL<nIXFKڻ"] jR~怮$yZܘ>\#OK~۽?XXnu*/QZ?Q0Z8lL9/ @Vh63X4+q1<>+yQ6ݑx`Gde sffϱ5**60JmW[4@h90մ(ؙXu`hLDGgSP?Wl;qK:7ZМ8Wϰd9^~.jxZb_EHDV,wf'ł\`/]p+ w}*VID/{(K.M|"Op}ƒS%3,R$k$hx, c4ƹ_S}1ٝc^IKBD;7޹%gz,sMr&6\!K\to ?t$Ɣ n8%G f.c',?7`|I,lv;6g%~ԭtmp8c9>1.00Zm%snFn"mi'hߘH7sdtqJ{/?@_U,x\وt([/fP]C{n URܣҩQk9-cpq<' ru滋@,gA< 8?g%d3`$$rVyHL,A:MoȜXiW ](ڄE9f>8A yhYSSZC.} *f94))W2\ZR\;8ؙ׷>-zVX !BX7`<¢ Ĭ3NqN=,p}o"N@-`)zHc!dKJfgL_2Y?ϫH X-cZ{ l O$_ VA/u=X+)mS EcVʙ#[W-aݺ2"h["AyUN*e4"S.1>*?A,=ѱ5PqffACc;Ɔ+o9p)s=rFsS=^hT=9tfd\4|Zþ }(vݪQe2ho_=DV1Dū d4J(a ؼ>Ҙ"Ngh*Gk×=1%TU'g ~%5=m=4,OJQ K-t}6Zrpqq57sZW5n{4S}Q;7?pm$؉Wj'0}T^2.M3)mx={c$0{1^d =+u.@LƱsKfN, bB5|66d5LşИP@Jkz|o6xƫN"̩p: 4w+AM&ǀL5,p0 ]G8˱] ќ*ɕ֩C{xk%w( *ȿZusE^D,GӫZ _h-!` zx%X׻B\<;`ݛxw)XÊ~].N{pZ /Nrlcqs{V nwwXD87AGd=Q)}L`Hme[,cY[=hk-SmgRc#y3nM$J9k#Y ( {//a l);2n4}(J6}u܏XIU5?}6S ͵H@HNPs@nׅFy i;qf54 :϶>PB'h^EEFFwIGvgb.fƌ]q~v|iMJu I 2n 7"t= r9v^?pDr$ 'LmYſ~]x%ި{f-4IcJ6 ΅|Ce->T|S5l+y"GNEzD6N>sANp SO[WᣜR7H!<.B_~<|-P$o0)ҧeNY^K,{op4?wl>i7DJ1Sin`6i[E3.ưO/7 ;Kp{-ԑ)еe!QszSeE`J /`^%Kt~,2j?ףS0%P  *^N'ߖ4ʃ]jY>ѥ@,ś9`0`HCSS8/< և+4gi9o:%!M^04( SZL dӹ䰅'Q2iA%&SGJ:J!*-Gt2l0s9KZ~mjhQf͑,0aͤʒ޳[8L448RC?ȝ?0$gYghGVW|̬MO ~myv' /:je]dujGMmֽ`W@ɫ&d?` ê&iM^s`'*a 'yUMaK6}#ؠ!MБm.BN>K6TP5dI]F=UNX]4Rv߂r[Y1 .gwCX;{ q&+-;-KxȽpݣRFau 7IG#nK4G<I%,D32h@vc@m9=$'0Pbh9z,@=Z9Ǹ12oScҧuZBT%EO xi<3uxl/`HbV-^g陨dR:PV~GFVf<15 CE)e}̠eF͜iJsCEGU hrAq+gFv .Bfϼ?D0gjeWkе?l+A:<ůrY8F wB-/%R*b~8},8qS }e +,{aTTG*,~>ޯkJS!\n|}=B[;굶@rW_L:zu1ּP$Qݐ$4)Ze(Yͷ eC, Nv(o&_U(N]d Tc匲a*lrGJ])abHYKT!?{_/?3`Q "9Iz=.SYr)Jo9@T&8>8"MVWMmc03c .'vFAX2J ?c#T 4SjfLShB:"?8zvY xa!' . kS |&88HUN_IyG973Ii@{JdSe ^Me'4D.Z)4\PtnBŒ ! @.H`r!kK)B8r$ŃcIe*v%$sETx?5~Tmh8oYba)7"|ȉOSY&QxR+w;(MV3ڒKX<f6g#نEl (rXpOH{<.bUohfcl:R?Nx LWGi*h]6gz._U;?ťE>22XNa}.&qrųwl-]~| wnu&N&"KTE)JxA>կkt"s%S^ssCz0Dj}*{"Lxx)DP#3H5URur4= F\o*AS &BtǸطZ ]`YIԒx W7Bc <"y;.]6_vYTnRknӄ@frn٦< Pzk{NGT]6 'oo02~M&sG7 }=z S@@L yeqZmrtYF ʿ2 -q0>K+:r.2 vMBx.}ɀJB ?I5ܽq%gb pH&֠e>.D.b+U%ݔ| zmi]1|-\o>߃i $W3G:~+qNStT3&qOD7l'S4ci2&m壓3դL/mR!ML^#wϛl!WMzBG1ef@HŊiR L#h IWHq,x3z%pw88 NdzC|,lq29T؀m^U ]##gђPiv>Bq/զ7(0:\3NjU;Rp7( F|e&CUX S]'] Mhk.п zEgmCca- QaWw=yc#pu _셧`[n;S Jw_d-+u[)"Q3/s,0iZU,-b+rw24%V=y#6L7fIml_%@(ToG!4~~ɞ A!_X4jf5MbVX[Yp= <%{~Q6Tzbr6Y:+ Σ~a?׽1&^dtjY,9J?}zs:Lڔfš;1Uƫ#}y,5Rt=8c8?OB9,F=j;TY½>.m;':k6rd'!ᝡ#"s%j/ tV)Dq;8b9Ja %♝ZU;3܍c /b|Mk$wJOWĺķi.!Îtd|p-dsP^vrb#n)ȬB[`%WMw[}+IpZҾց5!46K-H(qo)(?A%|vOĘhpHCR><^n<]! ueݸxTy07ﭪdn+U&S=fz>SN=(#z.Ą>?oX>Uz9^d& EGVV@2"u1sݨ˙Y4{mE;O%y:ТókgL" ЭKbg,bģ.K8x1qR>;ؔeYE߀ ΎOv<=6?+FqE;ͧujxZKL%uTpeyƒZ _87rexb1p8ħ J&E!Ӡ.֘O ~o&.!4"Igg9_`iH_|\&?` ft crqWܟ4tTgň9a TwNUfǏ|(:9oDm~xBsF(&o&Q`=/o'{daXH9k?X1uuu;[7rF]}UB̗؇O;%":"N&[bL,%P3>i-鈘XTrl%<3nu@-nk{$GC97,Hs ނ $ SKeK0Fe֗{LjwO]ޤu 683|o ._yq5}oA_j(O~ #M#L%);a+0ȹJn&/`#E!}x[B4T֋DB[,&$aaͿ~Ab+L-%5갨ʓ"~Xbl=P)uTHQ%'*Q<pT,| ;Pٝ_2]\ Oy|Z2 tO6iAˎ?~V|*Y\>7-<7^&1˃./։6Te cvp+?A8̚ IIVtgxmh@<'[s{ܲպiϟ1[qUӜ$YtJvR"/˧vXM~OʾQ>irH,Ndтf5!JȮuU*Kإč[2FPQw^B_q6DI΢'T1R!]t; Kj8;V43=:#: wTI~Os2ib>qy`PW~,Vy<';֣՛hK$n \,>[(v8A <ʵ{Ǝ0Ō}tS8|$˓Q$H^ŹDSmgej?Ja*VUI]EaEA6Y( eEcpc1z /xjU>. A|gsc#PkTt@j滞4:<ukdP+2k(_Py!r}D:Җ}2֞{}ܭп|'æBn[.:A 󉠿SFrF0,:^Ir12~}jH6) 6N@]8OQδgˤ*+VC=t M1KrW͍B H(6 &97"Ӯm$\f;'OFz?-7z0Gqul8j0ftYozٺ $-%=,X̜:_uEѼ)6ah*܊bթ`Z@{'Fi5ŭ;㊬imr4V>L9^igO;zZY pox0]?l.=L:VKP;r99|Y!9&"쿼+(~Zd-)ׁfwnj|[&j*uQf[i,NF,VFd{ /7`21'- JGWQ)Ƽ,Eg{PE&O:Ŷz}ڑj=zQMbZb F2g}l7Ɍ"N(7TB+Hm􍀱̈́Wd-x*`踪2.f[ 8RCu)80 s@oj<?{@3J)$ʭ?ۓ@ el=?UWI H8l5nXR&C!Xvݾj vkD$[ mu ŷLӱ De!KaV&hXe{D `cw1.ӷ-~1KίX{刚;35g&)-h6p9So^ײJ^D*Ts_+5s!ҡ.n`;\/^/IgT;uQ. ţ ٝ蓀!";5.{T' 9*Q~<ʻ 3ܟlh9Sy3N3E$ mqly?l\2SJ,w1X 4җhVaJ WO!,*a NSI :Ex *40f˜ [ _gw5\-nܑY:?&4 V\?jPJëD}y24L2!($$jM?Q8ᤌLaGHܞev#E5aU aU).-7Qiy"|˔2X@{`LZ|`'x^#ټf'BPo\F)\r%]H}T+c^Wmqiŗ>[}[pa+ qM$mvxNır,hNq7WAy@Rà,0&6oI cRsk*@IpHE֓MY|Qw~)kmTp^ѧ^: ?A,t3DJUJT>1Y@âk79x ))h5@wƢ}b^s, Ƹv΄~) Xe7M(@ Y]uC6""%l KzHsVq۝}|E^6 MUGʜppøJGU況G$HS0cp٬a@#N1m*tkǧJ,$̙)JRCjfJ蠁` ~ ӗJdIWG_$4αEn cL 5>fRAnMj.17Baئy_Cdo7ߤL #bqdw QYkgeAHY=4rutȨM{x)CsH]M5R?> v td<&;ɠaU4q8vi)as{)Poq&#7#7ᬪj(?fMj4-; ]t!˙i.ajg$5$UJ+T-_~ $)[{^V Nm1ϧ| #'F$MiA sߚm) nD,qO}<1rNlĪ cY͋OɗKĎ/UK_hSߗ{ nqZsTTo4C'?wYYX&nd^/>Vr Mfj؃o/j 2uHq`5[ȅ|2cQ⣮%?)5}ߓaL0?CLnMſ.F[3%%# KvSq4j33ۨPiy:5B?Y|2qw!p-zA@PNLNāSAzʿp0-z@I%PYa(3e]UG]|u{ DsZc\QL""4`|͜մ_r5\}Ǚ[_үХRpHo V4⤐;^BṈ{V!Z^@wSK&ծn8}-ӀB?k7ͧÞzxJ1IQi0ғB ΄g7ɮqEC@P\ܕPYd/d;P,˻ß[>Cn•GMzlHlzTR4: < 1-0LFζelΏ U\]i2-f1}kf$.N-c:h$-t p,yk^<=z#/A?a_#-*qѥo~Q54ӎԔ%$Nq3;zɳϷ1:7/ lK%S$ăļ{Pw´"X} |{wW uRdSj(3[o?EꤤAL 42in9+QB6v DS ${ҥ;{%K'F&]Hį-V]bMF2|Oq1W@z+-(aEw*ڸ퀽5u&3ܧ|uD7k-[G^(UfM.PL C%1,A"dg#2?i66(&ڻ_sɑ]oX&i&Z?"Y*SC PdJI5=ظiq\߈*,$B>T!&v eWmi5(o"n\c&QwAnKS2bn)rVslgtxnBr@Uva3sujx/"SXh\O, l\|ߎlHsБm@ |ndn&b;viP}Ps=  W|@܉=A+l~tַx*>3pG)o[ْ9 Dk=B'(sSoCe`#Νx}~^Ckޤb+P7|@DLRu90u{O3Vd/*bܗk>:p9)vyZU~1B%cF|sE?d2e#lQNƆ Xc(ͤ+>4ت\EYrjR -I3-?8V{pԭ81ZED;+fjZX;y"&H &*_BQT4BpCG~hbG1M>V:h8ܰI7^|B%ZdW=B&sV5"S@j>c^F*O-ꂛՏy_FLI+ʆc*U@YAփJ\5)03?UIk #]9[l Z xw(f +R-v )!u$i?y."bWbO{v!\rP&IW&u;8QR`a-,}W,d4Z0,Mur4SdS3@ԓk Bp=Pp iVH,MoAլz`|ӆ(kb¡lȦk*adUlK:r a?VMA|ۆ'rHic;$ߡ<'j}T<=fF2o8fGِeҩ - m0w!jndE| ns>'by~=,G[9ICWAuuL0q pZ3\lK͎Po|ׅg}UvPFΛM%K#$}hC!W|c .Ql8Ra@hA$¿h:0 -eeqӐwLN+0/S"H{Lw(\LBҢ+8Dbxܳraɓ7nc㞘+zcuGa|bND8-6|({B };ˏ$U I*yRZhUH aoK-5U |xgkXG>mrd>-] ~+`qBx֋Ҡ{-vvA|Rʁb(l9$*txzܜby3X'|P3X>MkՑ쁕!n;_3Մ@fEóZ :+[\Vmp<l$i`;8H}|?[o1\#C({Fm[u䯠*iϖ%VP(򠉶Y'EaJ|VbRpRݘZ0s,-OڿcWO#L i:#)-=c._,FHf(4 D5`3jƻk*K^\.v'm;[RؙϋS?UwQtÝ<,68򸵿P- dr>ˈurE "pR}-kwB/cI(隑lg쌡yj~yZ X_Yor5b% 4[g/w{DVJ .ޖr)[F1`|;LX MEՃ r[Ψ>ٞ]R\H,> X Z;lp7%4+ƙD\4z슖S1Tld_ c{*-rNSMH VpM5MV-!Cx[, % 0N^#GTs[ oFE(e-ؗ4vwy BNC<%km0 8Vc'W#Ca ]#* TL}x1|#$\|.\K`ѓMLm;P;aQly c28F)Rj֑O(kk3Tk`_j=.0>?K!;9PGֻaZDp~-ˤ>6[oQ8Z4cV{Q/8ea"4YIEmȰ]GX*u#V͒u< ?>+Zذaɽ,~[# ȍɩ@oy84(1n;uc;vC GJ.iذLFLܖ a~YnѠOκ &b,I*B?UmEVATw|!:r ɰ3aZ7ÝN•P ԨbC~WG\sE  ŗk)`F‡RQ,v3Վ?i;|Ay|%T!*n0PB e w{o-@Օ4'b~=vۮo0 {Io~dE@=\waYbo( m;5o^z|6:vg*rw;kCe?(-Y Ьw||#cpA|'20+3?aDq?O'7k"t0{bš;)n;SL00Om9QS (ճ*Ov,U7)SЛNiK'a>Ho~@&Di<=d8YS[ˬVn/[gXDr $2\}n1`yw-E7=b~[1;BIڹ9˜^&UUkSѾKJ8|]]e7Ѭ:qRg<2Z߼:@~1Y@ Ġj)%u~-O1>r8djxN@qRj0r_U=xO{wX- zɘF=iU &Ȋ p>ޣ܇UDۭI)0vgehUBGr3qsrYI{ge a7R&3X}vtOXH~FB iBx!f-MSO >T=K)_xE0B"Bj2{>x`݆^Dml~2˨.C0CA2n@4؄eoᆘ%[>Iy}Xp#ug՛t!a纅!IˀASΆ*C'^ftAhD# vG0TwݲùH S6dvn8)]BIshK}Kس^FWJё"BjiX:ݚ{iJINR@MfĊ#M,<}syhP'k|KȷęIlyK On Bepym49˲~NDe*|1`v *oyUgmZ^D yU2^vXPP1a9hv'}s ٩5W#O%xzJ=;<#̬(owjpÂ.:<Waݮ ޝ-['D@\yLWڦ0er(W,]*, aCV2-b+!nKnj48D r_P,'ϴ>i]>ޭGѺk}"&+v7հs `tut&#lpbr&(f܉[3 /w7sj(vAJu*-"U-;~!D[QOS.S˭xܗY%qúKܣGn;nE;$)-|ǸxJ? 0҉h7~fko.IX3 /qՀVVP 8Y: `{}FPbDc{֒3a({ ]acb놟Lv:ټfDm-SsL6O'xACfolQz5|_cU$qBAڌ@ZZ\2jLqh8i{vR|VC!Y3`''Pm:C1x8_Ր(2 ) W eyU :jGmJ_`w}ӬoN̼]~uPDʼnddt}n1Zqþwkq,d8}ByqR5Lx;(ŻhiA;bNa,oO;Ì3o]Pc5Ilsf: wwrd'|4cP6+Y;y4:zC,f)qϩL[{9~/:3Ǘ+IQ*9ɈXQdNyy:־u"*IZ*H c)dL10H3k{lEfcg2s5-x(7i>4sժ(f+RnQ>y$yPNlNpe̝;cW)W:Eaʞwj!QsX}l vI?mݯ8?ej5gj/sOMsh$[LH|OfX ɴE"P?t #nէt}7Y6a9N= 8ƘڭNY(WGqΚI2 ]z3TL1!5"?~t1W[|h޻Ld׺j;at,((Z +FtJ=>n%iUY2ADlsҗPSMÆ朼z:A΋nnxsEp!QFȇYKr"Sۜ[iy/>5@Jhq% P)c'KGE nSVMoG;qsȥp^I؜ vCPqSʎħ鍵RƘ[*n"?C+e6Bg rѬh~$;bSx + hkF4,AyFd%' ¬nl,_9 Q@Y,8/WH2W|qw]>X R2NP}h Sfu?; hZ;ך}1F9m̽fh˺C2yn{ nP/-QtrM|*YD>A| l3rׯl.,'3|ÈǏ /g-;׸DA'rRx۴@ TS60PD;oeMmx1òKJʎNVis:҉8nW PtןNkSQ]UuyD B9㿪,n'*X hLG= h;T"sHPxha#%+gF?~S_u#a+ _themes/twentytwentyfour/assets/images/abstract-geometric-art.webp000064400000304646147176754540021564 0ustar00RIFFWEBPVP8X ICCPlcms@mntrRGB XYZ   5acspAPPL-lcms desc @cprt`6wtptchad,rXYZbXYZgXYZrTRC gTRC bTRC chrm4$dmndX$dmdd|$mluc enUS$GIMP built-in sRGBmluc enUSPublic DomainXYZ -sf32 B%nXYZ o8XYZ $XYZ bparaff Y [chrmT|L&g\mluc enUSGIMPmluc enUSsRGBVP8 ؆ * >1C!"" in cݭϞ +7g}z+}IR&eJY^n\%|or/?,NΧ9wZ}ut^?GQOo?m?}'~oooGyW>~g|}/_o__?d{|~?/Ͽx9ߎ#/>Ju_?wWO?F???7k[xڴWRpQq8|Eu"YFj4?8#_D T93C b@Ϡ5ymƦ>̖?lX(n=8+n լ痔w*mkTu^fXp/ƌyNv{`c0qILy>q!褄FE%dgIH};) N~1f-P[2Vg^% [a 3nܬ8E' XfQ<` *É&0xK}i !Y)%*<B QѮ(#q$q|QHZdf3%[Q쎧%V?+pTǽCuWA;+b0}I6闳e;nЖ@Ub7/.04] Z`DC mbT }.yY=؆DK"tcg3ܮ-jE[caM:? ymY۵ :x0dZTQu!;4(S9bAS1C5:@>*oӮ/UOzc *7@1Jw3!{H6lA[`{[G\_e%'?bdflntK aLWw)|7kzUuoQ&x]B[ xIqE:gS2WxtW4#^)g".~֥tY+$+έh/xGȠe `Ɇg3bV=ڍo1nAÞ!*Ʌ%YY^,Ǜ̋:c r 4OAXōky^zi~ɨĩ@g]Ք0[*.Z̈qK&a]"3Wڦi̷ >jWBQGX79߈i;B!^c(=I<NAk2zTiU.3y:eAr2؏(fp%X4LJ daɄMZ'ϒƖqϨNҳ\\MH_r5RՆt3)eD̾;ԧr]^^yL_>V6myX(#lT0zuBSVi!;+Y R~o'K3q-խҤbрv)81p̒A*=0g$ւ^Mʥv.CJZXrbITxKMMO>T2hQډyMx_:Fa!'ty:5X Ч›xMs.`s[ t<]Y=^ -o>7LއRpcƒ(Ĭ~zڿ8z_WtfduP=)A\gv@:o ,%kqI yhGB! oh%0.'T$k E}&l~ADan,/+s/3 S_J@ oBTe2'Blk9dZ0q^g 3x5)V]horyDB:p_~C.NQQDa@"[+S|ŘEz 32IIPzRtPmz:ʂw{f=jɯ9C=<<7wbH+y6- r S;RxjaMxVJ(- a~eVS"aBH܎afRBE[2z&ZO[[\EUL<+v|1b;7Q8uA( OLs--G*̋mtA'1'+~M`ş$5=RAB=^h4A#;i£{2X=|)ӏp{;zFYLYRI,H {="^ ӈ)m3{y1AD  +6>Lʛm,m|eLn}0Hx¥} ;ѧ90 Aӏ%_pְ\>iĵF>>a3k(sI*5_i"#q"%i@cRwc A5'\6|dTf]N'0GϐOQ"K,a`^ɹsBTx)6V=,[5[ODz}Mx F)&N ,'eTR9IN]PAb(ѩ:cx*وZC5ہ ft%&: 2ֱ7(- X>1}q=K|O6gP1n $6lL(?֬Ux!Wjrk=Q4Ls#Fz5?@#N${B6dFP8_姝hچH# 撚&B nPQ SV?M55vA*!Q̓\'v;jJ8^}bEB ɗ!I@ёl-wwE~`Yo0BNo4: xeoYAtqbBk(<@{ȐO4KQU-!)9g#ٻ \7J+L9!80_z~}5dNHA yƢ6mjUoʧǹkl7uSRa+ \ЍU4vJRB?@j;Z3DN9P gɋp[ΫI_AS l}^xɣ%rZBWQ\Aʬ1L=)O|8Y:%2|KyɹkO_aǼdL.qn ;M1 kF"d{t})PK󋠺 ebQ Z1r-'6[']w|҉TsɻthI:EBܚS0>O^ze/JI[Gs-Nj\Ɲ?cz_fxJE q`h+V~6 pduW5/Jt2[Ci|1zm%BRe o*z@ֻH ~'^/!߫K-FuVH-;er}R'7 MRiZ&_ER~px-kusօöG?}4蘲J坍c X29̀񤓶2Pb'93{i P(30e{hKQ&8FNH-Š~@6)K#1`^jh5=-ɴF+M OL/7b~ގ-^yI]@x@咥jK 4Ɓ;ˤqv?xhb R)}LVڝ$븾-_P+ F0|srB-/-|*p)pa+Fyipt{Q'7/Xق',C7m7W 4f> HVyV6mU)wBO9'h2P3QZ&CZ++ׅH>wkQG~eLjPn?;mNt.ꦆ@:+!@'o= =2QбA)?OI1 ,+fLJOb`B޻4 ߁sfOc (r!2w#y!UTc`xk7v ]k-^Pa7gRGoӦUC`p$&b1xg]ܱMgwD*ZrҐ/&7>Z? ޟZ -/; L Xbaav+y3`i+c` T̶ǩ FVm9y5Ov"5?el =҂s)(N{:K3!LqKWՠd8WΣ|CƟAک?7G2P[idۀy=k]U 9T찼Т& X4AxhtGAT2WߴЍZ'u)BvQd~9SQr:0"o96` 32T.ztq?/iRxTBDn]E]~ѵ4$AnY{ShϻDA9jʘqb\"j~9+$W]HxV[`)m[ B8}>Wk!x7$CG2q4GVk2_R迖cV*!_L%_5N_Wm1h6k~E^)=F |!0rY!Y^aAx@Ix0T*՝* jwyC--o2!9qtd4{̨0hy6E%LxGJ;UI}8Ro~`*`O7zEш'; mdShڙcwކ@#!;ܗ!W9H/{YaO庾魒WY`MC7-}ˁ 8D}:#v $>y'Gs2 ӞE s,(lzmLk`pii)tt!'Xչjً$a yuh7lWkBSIyҘ6ن?>*qBt,&3fU&<, H,rNHQbpt~n" i0<7uG' `[ʙ7gpi-e2|zlf4AbW ~ kdz?_h;cu4 +J A. *Y]un9 *uvJKRbqx鮬>s~0PWiGWbn;Sn O'k y~<y:B`6 Gar5GUIE,/2#~<b2GI\thS ;Dog} K}<[CRDD-&y'@i$=(66#AYZ+F̮dV%6QFs#bU $;ܹGJ,dIS_vMdVGany1ztt*~}_"@Jhwڇ_fOd|+Ԛ~,M.3F"ğ 3G_[ re)2aͦ+ 3̙}Ϛ qc.t8w99Ҁ&{6Tto /L۝FgJ*gH0.S.ByE}dXUK!XWKJzd6Bj7w@r(H,k c. S/ K0BuTAw @1Ȏŏ!^>aQMXM='q[tJQ q"Z4E<|%SS{?SXTظHce!{``e5NK3!1;߅sQAtUO=SC⸕~e:.{~4ĉ]U}E z0œ}x'˨?K~Z!u25 !ֿ<9iɮ*@'ؚ!O 澽WeQ: 'fDNTIHrнD[)_=9;qU!\o0cR?N$k":ts,.@g76Z1gP;V;+q$?f~o=۞uA6 ;\P bP çVබ[B瑢|pǝ5a|UTRC#W_mj99ql$C65F`;4})8XF A#N%^aPY Q z5?Y}0ȫ?`@4%0{=f,3ۊ%~e8~gjN ;ow76)8uDb-E̯efkuˣ/1渹Qf}wDm9syd]/0GƓ|K)dcT:qQ9}`9 c F MEwa60D4\u2}5X-:X񤹆_x{v~Qm K 06  ;Ġ01Ekt"Z뺱D)CP>-v`KP֔`XC"Z@%D{dDp5{3ɔpO@O^ppw3X`t0ХuFhwź&(mW ]G pe O29g >1!d7j``By&uXV q}X4߭Gόlao9{3ѰDZD0#$I yO/D$!;K fĤ.u@~Q]3j4L3N{ tdҭ䚄 űc5OGϺ1;mE0~kĮT KjaɲQڸ wUA"3g{!GՈ<A2tlXpmx[r:a,&ڟFWS:dUC.UXW /"caޙl`Z*Ͼv2r?ly_ A)Y[v>LIezŁ:)R7c]4r 2i옕H_%ԢxmJ}uڜ Dul!QYJ ю Cs{ " ^j(|H;Tw|̱S( <Bx]sew~rD-XS{>юPOPҘk7>Bu ;cgt?ZUPcțmiI3ZDWEHGnJ\MU6 gbnxUl/hgOS`thޠR q"C1-anzݑ&lF1lB׋ hY*ż// fdZ$l5@8c2=j(gMz7O9ro˳HrI !^탽%:@J2xL %k~ ޟ,FL2k(f2Xz/J6aqgwvT#싪T’GlYBc!WkS׭+^8QgaZ ٲxy:t.^#y2_Lw}Jmу.5s.t:%D#:_wK,Fܫ\9#mCĿF#C5}ֵp_pǢ剑˵HGtxN}K)G5٩l1Fo^Ekvkg8 ] aV{ ]l#;<-}^cgyY- XX:(^ `fw=cBy b.QXh0!MD-{`6eO9jC4zl _+^_KX: y0P|o'*GJa4UǤuK0mT $zB" Ŷ3FNHe寅VTiF{bJ[KTIT/hy<@헅\_]-R[ez2kdrTɸ1 aSX2ȩ/bRN'a4˖,q9N¥R@~zKMaSVw={u4kt 8Jid@vlMDe>\ FDm;!JѰ8]<-^ uT,!3sVept2]Ωz5?,\DW1pvJ$+gll)5l`8%O٫,I]/~pL5Q#N4/{Q 6;ԪIqJu/f#Eʎ4t?;k8 -P>tA>BD-4iWjto_Y;c/1'Äc k WqB8Tr ZgV4rcwx0QN.,>ClbF3 S {F&#! 3(ʤ"Z.߳b!c2]\QzEN}Z?Ҕg`dM?qo?A;`%sf <Ƣ]c&&guŌT_a)cT>xh=U~UN=]zTNVjvz>-i>=^yFcoܟ2a,]$i~H@iǡ]-2,ywqteB?~Y67 ϊ)%cZʃv7}}v!C{ry,ՐΞ6b=k_7BUO+18UdwU\gܙ8!50D}+̲y'W1Uqpj'ew׼'ƚ 1(/6T͓^䜍tv :d$IQ^F<|`G0'g mmQO&oh+;Cdhg=^hnEso p*}_ JоF8+ eWL?/s&f`HԈfn?D=!5⌂1z<ȚW+vI^#p@cD,~"HnEA!4f55놞B}6O[C$,T3T 4-L#5yi3 djYX=qOSɟaE,H'a.r-sR(&*k䩶մ_.vw*ERVq[S=)ox_RESu^ `Gg`+sJG(t̤)^j3ijow;p{F30}XMOh}J_XcA"N.J+SvƎx۽s_VB.H DTQѰS\v)Q|3\]4`bMxQn"KV GjlsY$_V/zFe;o J@n& } 7 V^7[#h3hϜɳ~A3x_͘J?fz3(@Qi0BN[#;ձ={ IQvIfDBLYCjĉˠgrΙG?; n9HYKsknrh6(a}>Zqᖬ}(ÇP07!W5߄~r/l 5-)L4\ˢkv޴⮆a ^Q~<䃘O;XtM5Pk[x槍{3 040=nssa0;ig'( Z[b o;).ghMS2@E--]s\~^Ek?4WeȿR= -E9%/FڍEoʶYk5El:ԏjCNG soĭ9E ۀ`0#"oiUe8R غqoS|c.N y4veWz}90ߨapSJIsH1v8hUQbqVm=N~l+|HMjb-_Hjv]`>ZK!v8z\kֱ,,w"LH~ѷu (>mވ 9jKYAf-4MU#P6F^+ '_ʺ^?\uVG5θ_+7eR.9AOg]L-胾. %2댼,0 |stY;-_HVS^z$۰$&X92y-=GlJY {*jƪ;Az$<ƅT\͕?5oy$n\6gD[x= YZDf+h*N?%Q:H{nZ[M"K틎HZ&wʃ=gH \Y:nxGuOpl6Zf=d&?<(," B/m-^3 ųlbxJJAůe(['x$rV:3jl :E`Cf[Ns!vCfg8w#`e1V(W"Ⱦ|^rxӇצS/|-WݠcyyW9/21EKC/RC1DO\nhKxMa'=0{a@UNG?"aa΢8P ^GOFBAu=q@euyjh dvuoGocNjNK,$2 ynWaSuYK;^?.H q( F)=g+$}3dxQ-V|xXCқ1{3<퟈8dS:1c_K0w=`:d Gsa A:LR]_N6}v3 Z];I~bܫ-uP6оSaiv%E~4 ZP󹆿(P@[/Lް&hZE8߰ضePU1ժd Tιws܃?:l1 2o }:9]m@/$[ {ٮX%Dފs0W6>/3) SL/}|AT= Y:Py'Q'+c+2%/5_3;pE E6EN2!QRٽXN) yj9#h)4ꬴ$Nlb^#d \92)ƶJE$v;[;F00]탖"?^L"lGV>Y>;_ !Pr ~Gl[!$+9yR,)Ǭe$CjÆEud16Vl@SHg4G%ޱW Nms@9R>@fV|HjVh#v6BW +}Ddٵv/I nЃ^>CObS+@E<4E%d|A 2bo%cΟI]_|1%;#sk!W,U7Fa고+/:> g?"idd xRIH\"""lFbVJpwn7]Z_]x^:E0<72QĬoE )f~})e QN3>1z?b<,-"2:V-ӾkK+QR;0>(.0:،Ĩ@gخS0Cڂ (©*MmOz1cR0OSӤ6M%n8aRy(wVmEړQ8 bU)yWҫ`)da|{}.W'n)f65ߴsAG|;jG4k!X[]V{{鑓uTvǨH|#[؉›&?b-Dܧs] žjmEq/? F(d6 3k%zZS)8!6b`|舨#GNq†gFhʪ-a9ߦw%upvtg2bg Hcbmv[x?y_.)"gKi,VԿ7b$3rR.>2_~+WBT\'mDjs٦XZTwBUӦ'؎eY@&vʒBu?~L8n[kAg|~A&Q_@9.sTK zf}2 }}K}.MMҺQxNFx2q'  PX㠡 95-tzF,L0x*Zel6{R:i&6~eU4]5B]2Ҡj~S{p9[t|+yg[UdOݢG芜G\WY'I8Vތ)hp qJ D]=)tJipuZrk*/cŐZHGSf_Bn$z,='j(3vx'\78n&)H;8W'Z>tq~^a?rg^ah'8Gjj-f!Z<DWVL/K"@hɼf f( fŲюrv IK>@CH`Õ,9p~0,UT5<فu8gP1P.%8Jd@mrZ-T i ^BkBCΜr{ҫL1qŒ1DSŶroJ=ӗ1tPtW2}#.ؒ[3lO\k=hS߹4"0:˹d)@S`\cHu8Oe*CG}>ǚX^1[KzQ6U6* Bf'ѾGP]@cQ*`KF5]MԔMJŵ恚 L=_%~CFڎՋPg+&H8V)n (U!}oYDkEntVx*ciMǃ~^@"T+걠lB̒<В i,Vo9"d%hWkP(`QH=G AAGjΨ)mxf1nX E[SiqddrK֔mus@50u_e-Fu,ѯ52Rl@%5{QL^k'^^R /PQ-MH* 2rd'ЩK6(>Sp=>zv4YID5i5k¹; ~JuxϘH bg`E=.Moqqj/]>$cۣcŶBD- dO Y -vPZ-j vH, 'S3.^ˊxwTO>՞d6fs#"1ԗh^+Xh8ca`M_$Q=`6eqZZCbjpGjl1Z9]tu?g*h XS?/aM̸oLJi;L=VpItK!n.sM$If9 Jm,` E/t}qS;Af9DmKjb{u|]{"2svLz4MIޛAXLk!(c~9gfoO"LԀ;d05::X>> *~M3q?p _ZXd ,qZìSu.c׳E'kKD%ܗ}я:_c1[.yKw1ot*mRB.jX6-=dS,؀ 훱0*G24O0ۀ,S]gmUbRwAٿr?C_(lnpv³yCߠwQk\uqHVTr'H{bHݧ.˜ oB ֱؚ aU0fS3x#ё4Ѐ0Tw~dRG>SٛUżsXкqkGDŽ޽¯ Pm2$"0<[ʐMp}yɺqG/M}ï8+i)X#b;[6=66S,9H ;80$z[JJLO goaGZ-F[M/+ LE:YLW?W|*)+ߨxn=.V马K:r)B,wQ߻M;s7 ䷖` ɻMy|Om<1ϒ!h9LRk˓Pz3lv{)נ,cپ1=&W4̨Pi#Me1֑S7kYNr<3BwCnupˏQ?Qw&B8a*1 >K$͓ %<*(-bZ+ +T;! }85BF}Mo#{WJ~HqYkI.,jf1S1n^gtmZS ^sj~仠`lkd,Sqޏ3EŮ*SJܤ 􋪗t=$ًW!A:㏑:5ek[FB n~fא,T` bSro<_0+t;YӋ~`i -Tg][ں0"j!YJ^[/h hvv*=)j5(Kqűe${+rAFȧR*VC Qu@ %:i2I t5 (qNs&]HS+HCck}L7E,dkȁ]f#:Z-UC'-GKi&adLovu4['$h7?o'cFɏ<ʞoAMR9o\4()D\/rf4ο:z/Nx8Z_0pulY#[d ʊpLjטa߉WVIAgEO` W)@}nGrJ\}~F3Si ܼ "TQj>i²2X淰Wɭn+\:r yʯlhfanFV9q3G,b J`ǵ?2Xע':}Z.)z` JXHlr}Gd{*p~NyzKy2;}PWdA[y/IUT2z861B :*`r6UK>9rcMo!>9>"O"@̹viCMx`KܿZ^yL=J75.&5{u J}+BXnBy*Y<8Gg1^s3} fxCwS/"}aZϼ]m`<L,4ZTA2LDua9A$XyԞk~ʪc㌎|BU ,`CW:RXB+PFqAELGHxo>"FcI{clpקR*2R_V_|2$;2u-GV6#cyPYzw 5QQf@`tnj ۝45H9ld~رÆהJAXI B]o/n:T5#@`<ϞU9v.tBf1#u"j4<ƿ4nf@eGY;|P=@ZFz7pQXƚ>PhL?sT&![s@5}Yupq$h'h~I܅MUr{P.25ncàdh8I?k6╣9Iw'IFEp ,\c"gt[8*~;[Ԕ( uIx#i-JlB˞jՠ%7db~41C$ ǕZNֆ_W}忸7*hD0q|S'boFA)e&``bQ$v JO|"]ZzUd wz5.&Y$;hpt c$f,g*LX:h¶j} uŇ| A,NWP ׂ '?;/VS΋9!)4Օ Ğ;is0u6 b};BQGJ ! ƋpP-C; 1Wl)ʴFKPZM/ݘskLk $>('vHTE.hͶp*K$\QV0'v%%b9-L>@q${90QbKk;?0W(]M/j2@V&zxQI> 14>DeZL~n}GiŞ/ %5E2gfuw]hվk(PMb҈"bKs|4n у&6iIMЉ7̂YWjx\Ml[ 4X khDDSXcl|(%NO凷h(4ևjM$Xr!W ~C}=dvM8[RTQbqgcW'߅i&+mB7WcJ{1][I4A!D=2O{\5_:xޚ~(}6R1G0%Hv؂i~K^MK/%K>HT/Q3׌ǩv3}@)b(9u>gTQOwAjnB>ŭ^Վz8x@ |2EfQB2XM69S;6Fm$NG/h0!1^}H!A-q`ԣS؍iU3i2J9[ݥN,T{^/2G\_kll\s=%]X[^?Ә8 2q4fIb|@^PΠSn1 1 fHɞG2.K&Qq։v^BMg{ ҝWuBdUVIW@B ~eFF)ߏ~@aG ox&cxg@46`'rF`4\2TkZbu'1u뱣ŀ;Rǐ] b_؍ղSV 7:y6k;5]U:eScQ"4&m$"fRgC=\ȵ1kwKrPUOCF$歲ŋ{#l0 hͩKJd<ъÓsLe[Ҍ/Ifg-r0"eo!ioj56p ʄyi9|$I(g+%> RerH?lM,cY{,嚳i+v9 @ܖlN |)3*jS#FIMKW5%+u5 sΝULBRr2IzgK0qoM"hMڸ37>nRdLk+ߚCOn@.oJ54x,M нiEy`VVh q_ʿQVUӵg{ISg}Һ|Tb0^..48Ĕ -#D;KgH$Q5Ĕga9.rۀ^tK?#C`db8^f3o 2_ 8j Ѡ\¶9q-^Xn[ ,R"_$:Rf }5R )&*f0G?ˉrVd8oz+CM QfЖY¯\(\湿:hB oYH%X[L<Ja ֭B7Mj QfW"ϫgTWݨ;H8s*~_!YTJK=Q01]"UcTX@IpCFCቢiRTv@?2N4OH#볁6d,g@%0ب OB"o$)!#?wbvyYi9x#O+&;bR5IYsa۲P Ų*z]݅f8h-znRE_VIf8x1ϰ^\o_DU㩾ЂU鈴x6-- LIH*q!];ЂJ*2I+`^wk: i,HI$KbI"` xX/s/@ЛmEW,=ମM\y ;[馢md=o1XKͨ3֕K[_MK$PRժ`C}52@Y̎ٽ-]CHwnT38 w* )e+C'utЉ {Z# sOW4k.4iN@aN8ҴaB'I{d0Y5ZGboS/^]7J'Ǟn32[aV0ͽ|=[qܢ'yx'ih+I&l1ٸ~KQ:,z&X 08f2'QM]/A˘h%늢["kYЖׇN-_ ;*vWG?E[B Wx`:ЉQyh?|D¶"[e< q]K&qjR0Tw(W|7iCCr)2r7G)abW!@2 p8>MlsKZjիwӽ=^m⥂ɼ7K[.?],]gPƴJ5fR\k7u6S*xqL0(bݤ{DCma7G\\%׃jBmկg݊2mUXvWOSLW?;.Փt=1G + C[(AH=2aSvRGyC >@bAboᤸڑq86J?O{թ-ăN؂с65'l:Lf0v йXk(,X2$;Pv(=ӕr]Moٔ,T,$σK4''y8jI7=>u ,vre@6R[wd'QݏtƖZkAPߚeSd R1F!%m#p r &p _M O ]ahQpJ[&iq";槟 "nBYWuU18Lί*yݭwpa#YF.͐}GeÞA6VU]&&z숏m Fni+ ^ =NfI8*\,SU舙vgjA}ϓRIBhU{#6A3\%je<ʼn!:|M:p)Oyԅф3>N,5xBEkNZC|dp'PA=0غΨdnW_zhMPԊg׌qv7Ł3 ݃,p5I,_4' ⿴^ d, rZY+xRe_|ӭ,k"*E0FB@+J0,"AMgc_TEQYf+dCn.l/*jhQo")0d:[No.nfrG3Omۢb, haӊHOL-5Oq!R*FJsؤCt_O6TlY:mǩ bf*+b9"بՑlW1O 溃sYdiLDgbh$ hj:jŮQ34Kx,+> oV3Pp:մnc"#௒su)ͽywbvP pbL^|Xm;*LuI7r4x_jF!Z?u)t껯zOBՉ*P p= t2(!O 4u$K!w^[qMٹv?3P0Y?Gu ЛWVs]9Vٝ_n_?3^Ld3*3sF籸v,9 S_\D=8.ǚ$eM.ے;ī-yM@ie_&X$&=b7G֟4C-TKPt1pӈb5Æ܎vorvxwL9R^# zS!eؘ|ؠvpBtӗ!;Y5^ɛ>nߛSw*6L^ P0нrQyLJ9 xڼag )V;S †]<+NڑڌWo`fǩfEnٰZxg b8v?UdBР, gmLi/Ն\A 1PE6aw3[m mp"7EdKWc6r.0[@/+Rl Ժ~1uc -2@& Ō&Y8QeH5RlJG_~^f l 꾼ʑ~6N5)(@;Sq00 ȵ2vCXw*Y㓿Ǡ~!SV?\Z0&@aP_^4J ݃TbP90oe%tl<;R6&/&fD (&'8 u8Chu@7s= u* }\Z[ia.(֌,bG˄{OxnKB~]&Ǫ#䒵$n|YzT;X #;ݰV~P5kpMMQ"k,^S'bPd咶K&Mn 6=Oo;22l,"C5xtצ5#( ɋͿhF9N%bKZB;Kr#vu.y1aLް49Jw:<T+6`pS%.5 M W;*K3FF25rN>Ov԰D0ELV'XגV(Y fΞߎmMz9& '*j2Kih`vTC^ȾNP2E%O?!8l:U@A0a nu(צ/´a&2 uzd"-v 49S<1௫!,:gds[(Jt=>I.}]<;=Mi| ۮ(ˀ9iYjwjhܔru;p9;F#xك@@b>yZ݁a|<&?68dͷz9`僣D7+е 3 /pOjW\S'u߽txCW τeف’G) h4 çϲ6BJ[9*|vyg5/n[d4Iǿb""֞uQӸLvn(PbjgS;N{sk':j }nͫ0SSܬ2UGwRQBL Plf%v:>vz2Uq#I5Q& a#6oZPA^${R`lF5.דwhDH춧 x恴Vޗ|?"Hoy+(UO8tdYVoGK5ȋ2-%aPpk?zouEsmJhj`d:a L #̞}E+D1c5m=kuqoM.$X.qj sT= @\!)TGٺ(P, 29P@\qW~?gE@/r:qRAk,Xj@ÁW)KMNFR[;<?j#g5Vllg =Ic^z ;2R스ak)_$pٞ

~ dpqAƨw?"RSعhUC-%"ȯPåS5kx}ZOsi!G w޲yJ(E)gl;7q8r5Am 1UbLz}*L!;ϕGI5aMmSzLLazG #ZLEp>A>yx4ڡH+S_[]r,K*wESLΞkG{D{]@}n3sK 5H~>{E/*KFc,C>n?% (tˀD|?PZ`x|KxW2b-~`Rzc++!ƶ_Щ)1k̶hn@c6͌0] YR0 έ$8H*\"XzP.Sɩv'O+MTSBlw ڌc>)lz︢ RnE?/Bwu j*Z)pdLylҳvN'w&?'rI YoTCEhI6_j//DBO/AJ{hqg! 4qJ3=-D}+?!AF]EjMfYDJ)i1oX^e5WАE҇`lgWTM ̶`D1E U@PQ,|o |*D7ox;){a%9)n۰v8pXrWeV]0uAX~ )t1Drs8Ɩu\49{Ұ`oi)|3~0fm8 l&_"+_a!k)* NۍpWwf-vr "W>í|1ŀg>1mk̨= u7$;r\љML /: w"pڅsqgW`:Fyymx͡F8NedAßel֊"E%]6t%I0d0@X[9;ڪEpx=U].^S|qDmw"7z7%Dy{H{v[kQ\N nh]/*~{pYU<3p3% {}:!i;6@#Esu'o!VFj^6{sh7ɶ!BIOIEW rs W9MR@|$sI:mdX+AGnFK,'K2](eV|{0ن[]a=(1/O*G.k|).`p'6'Wə2wʼn2bQ(ACU:~u9AiK}0O^95!*q8H$ސ'瓚]s >#-߀>rxUO{!lou`ύG^;xblpWO>tԇLI~/1X+{VUYO[5F,>zhyez FLEO2VB <܅YIVQb1-ը\ qmg۹Ch܅'=L"6TĸM%Xj﷠3+{ػۘSZ!Թp  6 rtխi?cg:,PQhD-"Ɇ&%؇5ii:;p5&M:QKk|ΕQg cc>4GuHJܷU=Fg{>깯I·+5Ҡ ߴv;eo‘XP)or$un ^JBxGdN&Z{,̸(gJ"?6B9b4f/ewnW%PBmjy_{J)#N(Ҋ":VYWNhF2W]h2ld%]NݫLZm<9APLe 5JCOi:'7)ѓ1iKII6wf_Z [Z: Sp7W*9]nS* naMi>XT&bؐ`5(0'WZUMղ[YOZR$?2V7 'OvIi [85Y]V|.ƩLRĺm]y`NT<-p ]4WUץ֢MCڥVbiURc5g-g:׻`Jw#a1EgYPѨBJ }h@7mގ1e(LڴF7^XKȒ@QeGimvi G ckq?pU`h&@UY,˅_p@fc0Mz?U* 9VH@ez濤G4flJxˆ0@q?67P{[G]K\%hRquG +99}_f)=)s0J.m/LEFS D!HϨL'#Vw9\tN 2j05ρ `9F~B!&-uF +N*$O(.X2yh=~4"Xen5$5<쯴|Xq:(g|m f\8v(_hfdfj]2\=F5 j-O*۾p`cqC@O yd&(aVOY# #L!ٍez'j7=d]U $zu_a=P/nWdyEz# k!?ҳ~`BW$ Up~%h;eduYR_|;;C'xbμ2 4XKxRH9̟Zia ?7FJk =_A`+-8֌qrqi~/~pD%Flҟw7+Nș"b} o!s%kILU$ v9`>? <40-h^4&u4c1Z]+&ᎁ[~渂IR3Ih X&yG&v"IZ!YRNj=Xsu|lNL$׶z6FRyαZ\?T@OWׅ¸$(gjD5p X9G+ss5ũK-&+o:f{h "CU 6FxKN_>P'?_q =ӃR?} ?BVG$$)+sßFtKχLn K+EnSiY#\coC\pGZJ"t՚y!kFg nIZAENrc~^7;X`oc[U=V . 5 1Jƹ4'SY(p2RK؀+#TDuod'2V"*Fӌr.O0$l*H9ak>lrUFZxB Î8 ;YFNGkƯf<&9bD% ؞SV(imPSm#ZH/ 雼m?8bCPMĺ2p{͕,\NłLFAwC8Nvhi?6: 6{qaeTE=ȅXhM2^I&5aG6p=xPi"BCtK2řbdɐxFKœu8mPNc-of:~iQo<ȀML66"/0U%K3g=ǻ^қt9>u軀[Xǩ~j]ӯ3t)!?+ `VPUƤxlx#=a$|>Ȫա|zk~ZFR[f۵tIq|D΃8gBp`ۦ3|IMr,/{TȎ{̥I@둹JAqh|'f]0U.4R<] r/zh%c\,8ma<8ݬ2S)S$ݔ$'p\p:Vx+pˮad^ 7 (: ci(>PQC%aĈv1<אL99$?tnKWFGEK@v p^$JÖk&OH¢Vim W5ߍ\Y1gQ=1jYhDb71va7z՜-0i8| ѥE=u> oƷal_CEƩkY*"cLn[gc S?7%?:1l焰ET l _qk&n%) %Vx@ Cʺ 2fͲ;m+\Ɍ>$qGad{$/Blr(H%e uEAg܇VO@A<LT93 &z"<;v.iʔ`\vNUL*և6Tv(J&:&ŀ"hQdJ޸}:3G ?o=: UWe06psJɜx}P+^`)*e&328^h4{]im;t6&y ;:}=(T[}BPe_ND7X:U],LTMnc 4MӛCқc#j`ߦ( D>B`.<\5፺w=9tli[\ΞSViGВ?UʪZáI VCкTb hmt<ڟX7rDӟ[2 ;ʂc5ٝ҇]˦dkF w ߄_r>ξީzɣ`ŭE Wĥ4YI(͠y'K> K:,#`4ݛyJRX@UɋlCvM,#sKӗ)K*ꎧ3qSUHLYTՌM/΃1sˊmN@0眓_l,Jl-8ɟ;,=r$3GKSqα_>#6Aoi9@2Uvae"%_r&E8|`S7hj @NKpsB!zPmɶth&C5>`eӹr90a+K[Us ڕ2"&vnS+rO"I4y l>寀P;TLjy>Բz2&W]D&>rEX"UTĹY.뮊g[j990Y)hc(/XmA"TAAjF`*oQIO {NI#Dw OutCGtsFfI-B#0T3l7ʪZ1`1OW,4eYW*;SwA1W FXy4CO8|BVVk֥}Q-`T-_@10e Yx{QBzS=>< R~%7*8 6g>ۦL0]RozAZ%BcCW#H'3a?Q,iCYVUzrQX@tR!]#?_N<1PIdyRȁ[4m>[.%qXw O+>$pf!,cFXxI}*g8A'sl;߆)˷ϢWBkQ:թTgqwT>fqѠ` "RGo1> }yzr84mw 9W<<\z~vC~drg\m4;1¤}}#6_19љ97pTƤq&Xʹ% [R u/m =[uiN6b*XhHAۂ T 4j9Eqţ~U<׊ At|}UhoM wDQ{c,cLSv:]?_O3Ǚs $C-Qk1p w?M'JLkY%+LYt.+i/$"hPʫ~N)FHY'`UB %.sd^̻ڷm' Í&.]qtn$ }0W<^B.U8`0]5^c\(i^x=ZPbl{SKwnõnytt=ӒC!AuF"r &o; 53G SVQ1 B7W{Ш M#cRㄩTw^ɽR8ئb_=/o7`'FFHY~LRS:hC.)d_riWR{h+FKF+sr_z( U`)'Ub-7TsZBY9*L“#sF@Tl`k*-y*v Cj_}=/U",U#|;z5b%Tdd.Ї08,_sViG{8u'WƗp"_ b20@8C2=uq&Up '`[ߧ ى~<}b0eg!W+UmN- bAM\?KD(:bjG21uqwK=8oD˂zuQh~ ]j9@F%l+vBA3@c% ,# vu`.QNHG C / zvN d CD*mX_))1M~'访HB&Wy"TIf[^C4@rr0M/>}Ҁ/{ ~Vv"XLr@z%n8?i.jL7Vf]|CѻɇApBخ_p5wN$CVXӼfq &~,n _U@*^(nB9Ͱ-8EovI`ˁ@O $\X gkYlp;$Zb =)$d j};w)a]XDC6>J +}qs,"5,7 =p\|=f#5MExKS+O{Ǹ*E9ЪW[tR 't%/gMU]^fO" 8 G:"YDtBBTM88pqbUe_@cGs êy*2 UN2Y[Gnq%P.-[쪼Q@<m &<0j?d|`-!"$ۿfm"h_:qWh?|w{y$X%Rf^Vtdz \;:*Rp՟p[bg0m+W2?jBC0>6H_2<_|P0+#׺L.5.,KQII.\ҷ;0OCv)l#]=82ռ(1Ⱥ!qݦYW yaо*rT Lh't)LPafN~նs}>M `\sͼsj1U2)*Qx/zu*?i[4фpdr}4.C'0yӨyղ 4MTmN_3Ili.s(q1Cj6_}l3u= F2B2s28Vl p._`,7H ;! Ь99"{늬:U;#\w)l'*Ty!&0` ŶeK؁f)* ,謅HXZjNє gN08A3 ]- 2;7$D Ht7 Iy2*1&0џ[R/+(St;;)u$whRAL?%7ow_Tkd`L˃^P^rdaJe^_]TMUbhj)[bhZnTe0rV;IK J`g!D3+/p`]w)UKxP0qǯHx lw +liX$FnSJae4/^\Jd)=@9ARBXSh(C`>R[/B \seNOu(7zkռ.ON=ً =Kr?5x5Iyʚf7BźSWt !.Z4UX|՜>2]>뺚T_ghVA < R~&Q #I5< ~X5CH̲[u`."տ2,^]0T* @h6ȝꕘosk|R-]krntxezψ`3oH >wѲΫA0 ,WmWd^xIcq4`g1TY'KpQQ5="C1`ۊPs_6adڂՎ4u/n?.|=c$ QĴφo7o8,Dsr%k?h)CBXvwe;i_fٽ(|ͺX6PQq$S fDcXYXT8P?)9ÃеO-G f~+|g75^}+Kͤh'^F \!35)ޭYQC{U1u:N-k[qǑ]s[gFu3~˧Eob,#>VEL虔 CKNwYUMtD;;G\0Et?.fYMJ @;ϰ2 X_sЩHryHs dY_z#8Bo]_A^զf3EH댾NS^FO8;[(sΕ'LŔ4KL$x$%M& ?tCݰ\,1}d[[ 0K~v0rzDeCѡtS*$f_ #40K`7&6aO<Qn/t38#wڸ!ɦ;9O}^ʗ\y7lwx.Fu!b^&Ee\xGb b()},Lh7=2&B$adhr_) /8qjGgGmj2S:"2)--O^[,JWaL9F0ڥXE aUD`~4õ =T-XDšVX IFV@P7o@v>~M/f7KfGh4LۇVaP9%r d[vzAi%Nc7v;G`a-?Ȋ>l߆LK0? ~d/UʴA9LVRKb;[_=5|OSlC27uK `QZg$Ӳ> zjĊslZxF $p)R+ń/Cz r(]ɺ,坏xW[p)2<[Ie^w&dAVMH~1*!3 "vry|f3zуT(+tK=SFmk0#YٲfBgMUqwAi": ?GA,skvγH5`uNK4bMJ{8f |bs}q}e=N0“js. kUBfjJض>|YC/D^>.>Q^'[DS.7[6&t` ݇rTgX6)da# ``*"^=Tѵ'Dy6TߐJK ׸H9뜺ro{O\i uvd;N|RRqg@D4)A|<^Гf-xZ 7OƇuٓ08@PY(֩y8ޞrC?]?ܞFy҆+EJT:Cr5|huWPob A׽i^ǔݴiGhx B^XJ8x]Yȅ>I":1< Bhma1\BL tkePL)kТ yO[‘I(X u3q MJK-^Y YcnQ!E*M@Qf^HDb=k .IS/a>ȑu,6qМDx:,EkBBvz9#tt3oT=K_ 6',G][l>{c@iT`'[@+DRq\ 0mPih) ?[Ჭ9虜"Ui 3oWcs;Jt\]%Ȏ֔jEk#uY5F;[-zǤz !c)*D+eep?.J 6`NC̃65c*2= ޔv oKgl#pA9&Xw0$)h`qW'N=CbPK3Z,d#njXI:-}bM3Achn ߰M؄n}q֧`o0ͬؠK^$/0DK'RAypo&t*}N'|ѣ,VFj?E GhhN@m!5l$N]R=|vM+zKdZ9r?n#f֙{>ͫVk@8ן\{t|g鈷+kpq( {!J1V(*0 PЮdbSUTrz_A(Wʣӹ+ŶOhMdKEvJ *LE^!댙1Dap@u~$?L\}r~(E&Ng"QxP*7/-=uϙ./~91Ae68JH~!ԟTN,f>hK_͏l +돦}2rtgNj\.L3,BvRwvRYxCpBJjh# 'bX`询Yo*ՠ/l\EPcc'beolZ8 @Ub[]' @aHk'yX\6gY VL;Uk rʻv)O6x6 -4yG諴AC1(sW7F#U0rkf:`+uJᬦ0.pD[-u΍S?ƟPRȩh>TFpNUT_Hݲ}Q^Fpy6PSa^b䋏:B)D4b-k r4Q0hr|Y XeMUU*XWxVR[4$/jkXpZ@Kki!*F')kom}NkzC7;wjs|.)=O66KgQD0RPƇPX&V}&=C |V 0Cds/Fx3 vMPN:<+eJY`G!&vu-9@7eOYT |_0"C@@7pi=H rc54x&/(2ET62(Y~oX-O!n v ȆD>v}28z ]Z[{ NDj䚍-.7H{-ά.y>DAx9^R#q|aƥOg֩뵛awoId}! J&04MFиځm&iFyչRU(FQ zBR4uCcL|63l{b4l>ol갋L+F`{O^ܓֲR6JD`odn2M+~Wn= y̒H3=Y@lT8$",mnjt*BtWhZL]_*2&tR~8;]z/ !OydtFUXCƽml6 d}cx!ZEzNF˰us7Gtc/ w]v.pTW,y-,ٓ0 Ռ^5XұdPKZ}c[EsA@qm 9A:вq__S$mWG:Pcc [enj01 J p[@P#6:T7їg6MU{+/ޔjxF}='ҿ0NA8xq&m~G%$AAWW"sT]WNs0V%E>,|lEL+abo/]hy5V-.\c!eRʐjԄ#4ny8QH+Xj9se!fdՌyZ }G[ș2hVB:z1 \iR]^v{F[UT4Xf t"v(TMl1ɬ%t +~UHJ NOz?Yb;E-EQǴl)zg{<:r~ŸõQQ"ZAr+ L'KVgEVb0Hxii׮gf<  UƊa"IXQ::~e#Pf.&mNZRZFռ4@-;a7SSM@357۪{ȕ˝kyo7KjQ(w<RMtje [t滜SGeʈ*n6cD 2s==;8̨Abnie_dB`IT;4@Cˣ!ur@RXL%S=O]z䆅cۻIJ/*LDd[ʒF?rjQ2&Ow(m9m&OfY$h%xAu{ uלo e%t y5;{" SQdP Ti&$1'd~ a~Ją Ut\."U2 #%dp"4!a$Ƃ > ?d >걸y6NYaN7]~yk K+gLn,j(\L9&HjU7"aIscuڧE6!g'`꘏8(WܭV}X)o8B:+toeHrTv[J$R UBOWrJb!-3R%H`Z꭫4#'"/8Q%!Rg^WrA!SmHE?Up=J}Gg'&M1w]D6ћPNڋ;Sؤ3--A&$F*>|+N?k4$0E \1-{GzK Ne*~O"ievu00b5[-3(uµ.H5 !f =o!$2y{׎k~m1:j+v~YuMP"VgyeCdMwFB!@un% Zj;mWBlh֒]X(&(Ȑ%.\J4gk㩓t2X#B%ޮ5uSG|l's,DlD@Y u^HHTzjB3f<\H lj Jr-F8U`L5t+3yNx?r56 ?t0J ~HT76Gʬ_ФStoE3Ew ;~K*ܸӻblJZYcnwHpE"WOz^iuRhBSn|ió aKyٟJHǮ3LB/tUj)6\ׇOeLx'ra>{Od:6dd#sdid!ɪ]BZqv =ɦC.ֈ4!qΏ b]mҹ&3`5l[N¼E4Lг#kiA &T.9Jy_1>\-6;A!n1LLF<ԛ/:Ct]Wnrݏ 9dcqzͱTodԮ_T6GfZ뚡gc]kҖ@_r^zgnM2M$ES"(,7œ8u8N$0q/N `nbX/9g7$}Rka%FˑNd2 ^ه㘝A[[!p5*WX;Z$eܩ Թu& %= NO?T{ax[8 ,#w-UƷI&?mMNק'10ʴ_-${N[ݴipD gGJ+[gDSI }58"j50?Q%1T# NOT1B\f~029H7wt( !k ,7!␼P&iahcEdHUޅ~ug+!Ņ^m"Ge#hSwGdF=x#q !u('|ttKJ 8c %4fnp$X3# }+9Y֥ђɚi9RV oOsoL@m%j$_'k*% <>slMBzā^qzcE|R4<B`tY~.޻rVet>)Ob&9z G]sP q*| %,1 rƅPISX͞ f_#i$nPRf wl`-=}Si t4~u #F(0KořOVm̄`.ˉ%G1?WOAW=F[dRߨ^9bV=ox:.m'(ɹ"}`ɛ b:HbzXh g2,58f qp1s~j-;#1*&Zov-ndxS' TxPSFfSFқXv޻מiݑ>#c@Paa D. Rx87o?Dߏ ۼG_z/IT\p2C[¯@.2;0ms)IP{gYa[trZFq->]Y=9]$ ،!ZY[fPS)U/f :`{w$C-Ur\\mr +?@#jz!1t@8;qb5Wp]e1ޥ_jo:,۝w!֌tr&oU'_#s>)LΥMzZ2βgWGH10~2/Mwu@sJdApn~;T{wj^ 8(GȢݬ切U6ׂ|J1L땷 \_ .].wN:Jx8r h:|뜚~ 1\+6 Ji*@X6Uڕ@e"tg'%zO^DSE$8lS<~lg prEeԅlNhLHk?iƌAN;f-1)aqc@SZ8]u1jo[vӜ$iEd8Ri/B-TazQR*,<:q%/f[Qrp^|u{wH0;Q+H>S"!?FrgGdP%gymUagvSrkYpć)cl cGFle^Rtc6Fz9l"0WC0GohNI@0pOnz߅IHOPů)QLcʞ Mjj;yfsK&̓2 Cs蝬`)'L]X!\'jaq(֨Ӓ+TR w9`^iGL]imreP"IW8D(W;u] ,Acu6aYt_Nzk2 "(-j`F3M<^:vPLz&E@ 4:%bCtW\lNjh? WS@in鮚d(.?ۀVM,dbsvd.H$Tӵe0}LsR_!cA?I)|] 䞬ݾvOl(ՕLa ^q.t`;z$gE?}ZQDTJO$0me'v5űpU-"JE4b$i73Gpb>9XR_")qymSV>56]ZyxW`?6A,z-Xx%PXA01x>Il`#o?!<Sni:*i'ڱfITcdP39!Y#]AR_g<ܸTY䒿3toM)ămz\ªC$PF*y1~B湢V뎓d:L9o` UnV-"Bdo/ -Yl9[Oѥ"H;zBKR[Q٠ޱ>0 ef ]@ݠ/g6lq8逖K23#aIr+,hqsWK/ד-ϸY,ܛ"H;`ܩ2LFA< 8U|o/NP5R09 4l['4LqO gzpEoL 6έԍgEX?m!_͒Bk7k2ܑ9 0u!?¨tOÝtZ''k 24Ҩd-TnʴPxc PV% 6!*|hɷP;ڷM䂡(">Nh>n,V*ٴ({_եE9%X (u;' ͉obٴm(%fN*a5c?~H#vǯ;^2Op8Ap`#/78qqp i*=u",0ЗsXnr/GVqEH= 0-O|) M!EuyExibcزcԭ}=(aϟ0T'Ҍ. b kV/h+lYJ*aQmwo.2KP6p_A ͅоsf$@ XwUc'bi_l(4^[<ө}.!F>!O^H{O=  Tv(` ov"1Qд)%RVCP v")NJ *y+UYgWl+Wϼe=82krp-iWvJAS:'i粴WkDʑWڮ;G͡&6Nm*2 ^^/+1졪a&-g"އ*.i 6=2k\,~g<1(9;sJ_u01ň;(t [dKw/݉S5\}+I{l`omkf% o9pl-/ UOO ĎIG[J֡ 'vl X CEnoOCD2NGi}ۀ=/Y&Tơa՘WBtguRG莂,͹O_ODηP@Wpݩ]>PL"σi`wtUAIV9nKUt Ֆ? bhNJ΢Ƨ%n!^40{,ȏV$ޭOMu=eVo4;-6FP?G&a/(ވKpTqC0e)3g.5;(Zxc^z XONrܨ;Gj%-ɪ.KYkAKׅPHE <> &Dr.Ce5Wne@ 9viвIz {'`_Zը+P P)D#'!up^N |yd Z!9b=Gx=@$wfO[fˌA@tc,Ou:=x3`Ne O5;]30'R,w^!9RM23 Kz!]f>ˡR9OP ;L?tpV<կ |a`-FCL*/&W*n%wNȓ`wqBs8r\5t\yI JʻB:4%3S 7 \<|sZ&ї*_*(&\abݑś`5pk@|eH'{?9S;g۸\hå ,׸02KcvBkI**fm+S|U; -7h3tՎVLdI<;{8VZzB3ئ(aC!4 i娙!֎St`f>yqe#9amYdxE{/*}E"-"0 5?Վ{Fhᅸj+2GneBM3${I)!O4ek'!1>/Tt@1:LI#,2.!Ŀ\)*JSw4cHyȐ[ akt-fv*lKjSjo:k[rC4VɓWu'&AB2,Em;>-hGBC8(l_F!H--$U&v^tO赮ՉvŔ*-:!Ә#$JH@>9"/],y% f"q֞o^Q_! Юb:+#Kp-eН0p  V#<< oG"6§ C PqU~IUpb ^,I8$uN-3s:yuV\Vmvbgw)~k(i?x.ܲ&рbnsJx<bZ?=Y:C̵XSEWP<]85sÎF[ft4Q(8?ANxOJ$~vZI ٗAf_7V.<&5ez/ ÷IjUcvÍ==%Tr+XaWPv -߳uu0^P^s,""wrvw1ȴkyc&},dp3X@E Bs aG!@Sp(:kgxˁ[j$MJ*!MJRZ+-5u_Fh*~h4Ͻ`jhrVZQS{@t tIGJ68{!>\YIZHtFHa\M:-K:lw3a`j1-1/,rn -r< ?o^ý4#||N]@}CCF@=AK]{6}FwU>'LU炼>Kdu 2wxopٟi9ѕ8 Tf Ѵ,g^2#{ֈU?Q%$S!8$L#z˧Qޓ% H~W`j)8yRK0uH%tS *os,5F_JBT32;8>r#KĤ!T~oN#ucx&Z`ŒiWnMZj!? SZEN0y>nnͥT̈._NfzFWJ"35; JI!m\쨘.p]wp?rf@1^XwƷFfυ9?{8 &Fv6^FvR( Uʌ}䝕'[>>4>Xrs`YwOUnr-v뒚r]FMeKX9ydы(B OsAGu,̞ m6ѺOqgbwՋj$ 9 T&Bֱ][hQ:W'Wp|{ez|䰷!]Lo$~PP6PTCbk^,m:cq[@0aP(l]u9Q2 #CG^tiqfEز&?'.)6ujT_pj3iG`܀+lCϩ5MB9󟘜!@)Ɛ('N(/4v3yB N:%=d[fP=v V;a+79VDwmW\8"ĢEN`p{ZoD&$_tm9vɦFOxY^7eSrmM Cd2/oɨ\vs <Wj o 4X U/eq=@N>XIL)-+#LsoGBxt;DUcxB^?z7к~ij1tp/byf15| 6 pްuߦ苆$$lOҊ tGۆX\R 48z?8 9t݇C7k%:YjeǗ1"Mb3kM18O1=L ԙ,Aw<[zeZC{=/%v!֦$~{M3zV&]@jv+1;ªQU NkɛQ]51gA5 4?[r^nd5Juя{B}1{RD9]RwxQ/U]sڮ>f>>)8 Ī0ixpZ#&#l*2L՘]7n)%{ :nٽįתl/VWDf HXF.W⊟k .h'Cs=Ǣ?aoA!Oz6qU !iML!I5laoyQzbmE1UnkEEH'j{I#\4զ!5AVlJ 05y-v;qiլ\|-pӹ)Tn1&~ZrHgBVXw¸\[ՙݐ,BknzRΒZkuKևp%W.y6{'v"vwQ94KȆc+IX pӵˣ:ͿƷ #nr2YW^(OY %fr"m>)^=*iN0_xL)_7`h+bQNy8J4XIT#_HwmXkeQh$'/F-AA=_A^Z63E]…Eecd'1N.L&\ z- v3MzҩPqdR7`{d$;IxyGpV)2fޜ(RLT0׮2S tޏޒ 6ejT"gJ).WxB\"5ޜUpۚ :'Dd!Ue>~ϾKʠpk\n8 f Yܾ55;Aݮ^ <I\c@wԔ|+9Yj->uZe') 6%0͈Mc!B9=)[=9Na[<"h㛃}A?[kX>Qj\0 _5pGNp̍pЬi- 3%+,;垕QK \&SB+~By? " IZH"g RQ8Yㆳ^pbew/g΂M:4)@xBȔz.HZ+F:ql~31֨Z8%x]_1B_q`f֡ǖ5Xܘܚ]Ցv9& \,N9=SqvLfo Hr+. 2[edn\7K9yҢ$Z[{SEgڿֆn ̦I.T]p@'\F8t[OIv2zd (j e- x/G@`$R^~{m: M8i(OFت]UӒ7N'mϬrlS$~]914t8K;ZD=5kϙK ҸZ6g󬔪u£JYo'k_^qa}NAzf?"/N~{1xy+l' ANHB.:|g4vbbjlf;@en"ͯҡܐ"!'X"4w;Em(нhg8+NbEdRVT-xWXΐsNPXRcٷ2ትh2[E裐>3V :\߸u,|/Pm=SVt2<%SnKli0ϥ(f2V*>2\m=e.F&|({3xI ׅȘ&nAw-EB'K 6h[c ]@ P0>naJP!.?eBYł EK35br.$uX7Vԫ}6F5H]FsQeo8JJx A=)`O˹V]v1\ȟ* ^چsWP6ٵpbTPnsU[Nnw7\0PL=gvn9pmI@#嚇n[PCƸ(uYeg@CsM6Xs cO}[o@}2pejL V{,ϞX;3gϪDLl *!X%/# &G :`7E xRJ8Q~[6,|3-DO.2@M2s_bXy-x1V߼ ߇ tr=m`GǯU&Q>RYѲ``$Gj| ! ~Ixxn_OO H698.r/%G&c-Y4]g/DDuZV>1ʔ*zyc嘮{#Z;>?3!s;%fb?flO9D7(i\$#櫁ڹf֓C Is۰΢/"(tʍf^K?`-մ ┮'JD򪍡}fP=j݃y=z&$X( 4/?_k滚c=<V2HoAwg>o)7AG,aM(\w\l kq :C>,nM/0">kR4t3ƠӇ:}Gb$6oTN 𾦲 Ԡ,&1c\WRz@H?9 S[4u}eX]9 ky0Qq@\˲Kyź !ߵz~s_WTO6^&3=~> Ҋ`#jx>˰8" ~1[yDVG+ Szf!( u`tcbƦ?nbKipey|QfwDbceԼ:e-Ԩ<]zu5x.ôd.}ac GY5*6'Dy_:)+l7? y>w:opr`(Lذ aPV;}ꟳXt@fpՊ+Z$8%sb 4f*],CmJ?f1I3.5gh~ uҤ2N4Rʆ; x*YE|Cޒ]eٕEt6@6 D%X#9?> kEOxoS'h&͉g9$"o6ZU"(];|:9ZXT~vT k⏂lZS$T45N)!#qL|WziҊ&噩/"d!8i1 Ƴhc$L?c?~8)?~3GMb 4L):EO".x"vCBU{I?|$ȅPqu|wy{v6r mݚf,,C濱Wh3s6{5״27'o+^dXJ)Ԑm@\0/@պ׶$U $*"q6а(CC"[z}{{{>FA3A!8 =1{?12Ly:@E6R3 + S]τ*sN7Jp7s,U=)VEvblew(nCgׯ' c۶2P (o󫮛'NPқբpCbנ&oA̚1 `XM}69 ( ,"sw\'g?7i)#䠒.*<ÚLGBG7JWѝA|_C{ARR#򵡛T:T|qi>HݳSrSh_tF!Deu#s^ W'@$~4+{Ϙ󈫇}A:@bT! ,{{c#!nfM|:8L8SAQ kd=?^P M[YҜN48DцjܮpFLjw/ҭ9Q/Jxc-g~>y(-W}NDmj^3Mݕ%LMEV_Jg8kKAq) ~}Ȉ #LXZ艢 "nAkҁ" @:]\(2#SU J2<ƃ_~Cܭ%3OyEU -q$w+fl0 w*fϭ^H:P`ξmQUUN 'Tf<&A M;fIŹ֡Cf- ͎J4,p6Kx*8#jaC"$y}hLnt-?)X%9@yGʣX;]`{pe9y: άLd_-TCװVJCœ{ϾAsf;@`LN4e; H%\QLt~A"<\"=LMr>ǘccdDc?-HA ԏ6TF_qWYR|dd 3 Lt&siNlmSpF߅c'pɵ (DTi\@eF!ln_ Ҹw(g|]?m0/blK^[:DDU$a-{WY 9 2)CrC1Hƹ+=o6Ȩa $K|CUǦ~A`dۏS8MO5 EJ7Hpk@epc`cl{rI]~\lgs2zN@d@>LhѰx2#a2"<,t@~uz<ɑv^MP\ H7cP0V]n4_r?P]Ddbg蜚|Hi_cMQjyec @XRAuXVfF5gQjny.J"-ycf$p>@A />_,ʹƹlq>2_L;bt]_wr+j`lj\W$#ܨ =' IVEL@Ny( VDU n(KdپmHmM+<ˏPW*9p%{W(K""Н yяd#d0eNPf/L‡ (f9QlL%S'rA\/;dSӽVHz$ujqY רl~LZu79u ^Ԯٍ-f-ƮԸKsT1ӿDQc6Dy)~d:u1ip w]1$< mrHBhd"vs2 EE (Y߉'١cV/IM7D*C:d{ @ב#np ٩>EWTI^GPoٔE dYi BrOQ|l11fu2jyӫ@ᬀh6sߒ '/7ķ/'ZȺWH1啙DX4"| VX!zCDx}A;u~FL)aN<Kq$d&[8eHtcf9?G4UՑYLئ6{'ywƜZd[x}sqmYdT߆ :)JIYHVq2Uߕ[:O'rb[QR^5wm/Hޖ/{Nվɴ w](8*h[g7h*}ϵ;^GYFvsc"YRf;DMdˉ0>an*ZR 슑?=YcD;!Np*KBX !s7b:@i=6@ xOL `Cʭ9=V2+-;&Zy'S΄ru{e'ґ;x:Go0̥@Z a U$F\/##ԊPKśPB/&wu(Z9\+8eqQfjKE<(n Jx:f'NO=#8Y; G;>n _pVJ,'3S0hQ|R[[8Bz6gg8i;OWO+Ji`w1P+ކܤRV+3JVG{\ o6{DwqHo = >eJ wryQƙ:|,Q7̧愓#XҲپY=s.Ȗ gYkMAYK]]+&0UXGav7 (5S\X9%y<{Ň.:3J;z.zfX[p$}f\Vf+c(ӳLiR /_؞}60œ-+"tr-<@ÛdvJ%P5vVp ^Ͷ1Fiso7H#ᙌ}." E7 ~[WPe w[Z kT~+T%{56|x @& ] ͻT&'4y]Q`ӕR0_'o `ߢjOC%t$y8+7Xy* r ZWjo%B֞y&ݛ-w̺ǂ"_:s. 5eÇi;M4`b~x|)3a54k`!aɺ׺&ؗ SƁ=1KˋT|0puFЮ S?Dւ#1i}y_u_xUVe S_(lC;w?23=i2wNXYY7?p2zٙ+ [쏖TP'}_T l O8]@>S> DmFalmLiWjeŋgh!`#}Tqbހt vY?.G.m [\ӥU9?!#>\q s("!!Z-v 0wűVvH^* y}=e(u7Js1Gz"^Gخy^|1xq) ;{LCwaleu,xCb+TEz2BPdexVc;HtK) C_"Qs`)Gm%Npj{Hx&OqvW1 ^Bծ9<]zarN +z:ƂV+Ux8VFtD-Z G 9(aRK'"֨02?`s%=n 6 :$u;;^7/sbZY"i\=h\%X H@&S~1e#kM)2  ފD`ڗ>Aٽ0@W zEKJ%0>JhtK7=E x%߽% ?mut=NҁEJXo[2t,Q/ ]\j> z5gb/OSThNF*4 3>E5Z.)& k.lGhzg2+Z@ii fH(SF==Z0 7 l%I[1H0kh=@rvthK]_(kքjiyDY~5}PD?|qWtE'N v˃Τܓ 35-@M ~CyE2Xt?w %r*8Wg׵0vFd:OCKK),nӢ竌]tT޸rŽ;!.#e*^ ϼ]ök4a~>8-@jCEE`eA^X)JP(Rˌh9`R8 \CJ2`jdžKQҧ8/&yXM~i.|lmTRU}d!ht`;A9(°[F/7`F:А1FW{\*}4k=-u*oFRs2 ۱I/XX!^HIü\oz^ޛް3vP34W;kECCV-x+;Y"`Wqi(Zc|ZWM{A>NrXd`w{dZr=RP\ϲ&s-@P(,|E?;*1A?^/rÒÚ&aNˉ,Wn)0RAEf-SL68xpFǪ 4#*2F?G~B<]$lFŹtדbP^D pVՎH߸hMx 8@pMLOBB7f([P)7"1tӒE bOۉRyFDn.xIJc44+2ĩmv7I_e%'P{gn"bꝁA&GoI\F1YdD\1orX48d; `hGd8(;&ɤ*8WZn .rz#*C(͉EBI9sʬhʭc@/ˎӧ#yg0V7k `:v&Az:%;ZAZP$cf$wHVk|8$YqI"jw|MnA9CHtx(2hv@;`>4An:9E'zLՂŠqx:cu4cE DF?1E1(&~>&Gw1dR6@wL8F`y!*H3!r3v0뉿!S۵_vg̸gDB .W$aKBD13/DfT:wYx)R)ywMu#6T>+?%lc$ZIo"*9?ZNaF\U|?1ږn"OQ~*_=]WB,> ?fqqv2=t98;~z/_/ޚ?Z)H&ntE sjR/?A>lxfx_L5rG[-oj9A{"rcڛ`0āZL6^ 8|"%7U@Ei)]Q=e- k|4p--FE)Yeza|Dz .,}n IF[e%Mx;@Qϩ,U\9],\j8DG dk#|4/12N[4j }7nm1E%YFwRW^]YrIN̕ωM:pKª*}%(j99oSSeG%)~0,dƝ).hV;)q B́Usyo@f?HWlʽB؛UJTQF6Akd|m;o#mC1n&%֓1"F`ҺVm{hT|ӠC[ ^n]Ovr_td;m!$mC}C1T8',՚񖻙,, /NXh w8x 6!ڽ[SD k#ʂu%L?:P)75>{["j_؃Ư8+܆ulJaAZg>cZr;"xEOo9qf\&2,7-tOF.( 6EufKmo뇶ngg pl'!iKWzi]n{f;K=*VD>n0fS}:7%sFNoDt|;:CpSó *HqˣqY3]9q)$.NIܞr}> /[0=J3쌘=*w~] [mJ'Oi:[T[MAmoO, ^ m'a js=}/βRVa*bw(a2mNc;`~3G@<%˵\)*xTi/9p4Wݳi 򸼿´Z+ZtV"RThc/KU%GGPxw{*wYeEJ[6a{#7p$m͖e\Xx"@F XO/ǝox,,)&>|V{m=|d;d.kѮy47zk2m C7J"2ykqcZj2ҤwYf ]M+XuCk~6ovz4>ZbX*+4Gt’〘Cw$@pD#{y5'}y5y zR2$1:d[, !GKř/[GBr#R6Ps6jCtvy:6`~pefџQB8ᘳ mKֹOF x)+93AoVtRЋ;~x1ǁgd A-lV \^z݇Y {:M[K GKLmDj#s;F| .B`<3 Ym<Ĉ|v*=NR aCOsT(H,WX~nʥ3M4pH0+_uk-o;L2Q6x?-PZ2 h.>Sg%wы!#Djut "B=ÃQAٵc9Τ)[Ds50sfwa;mz?iQSד1W[F|ǖ-k:)Xr?r ֺЎ!"kOۅ!eFFS/=ܑ O0zX e|ϊPpBKT_ ^6yAyw7-{&'zk/{ݵX_ AQ`!CmLv--Ydc;? }ZvBLtr5"cʓj -#e"͞F {љ@+uэ *Xq8e.o<֮]tCDb+|ǼPA)k'EܺQ B9tΫdl9mG$v;ouvm2"#ct2m)QTU*.IѽH~ E Lqtpa?[!B"$tؒ&tѥPNYЈ5Lsd莳$@%)bK暐JI&osŒ'\ D)T ԙBTt[Tr Mh~ouJziΌ_b<$=7@tjaFtEse Y$)R`khh(zjV%6{p-UP˟apw9sA>3Osi.v4elNKFQF`W:-{tZ#{Y@:K}&->sCn'p x&x> ՗0$|xmmˆz*.lYvsx3cM րʋ}H|a{VfF6I2}|20 hI,gAg#>:OB!W6h:8~E/3{%JE6짛rAA˥ cw_j])2\Q KsʏܛtbVwUf@=N+jVI# 7TȌe85 !g*{H!JɠiB+HCziPͳ5G` IY7K3U[@U~<,K0Y;&z拼#+0U"0` DZE-Gtd Ď3^€Txh'Uǖ#y'pXKl %{ƻpq@8Gl6vIhM( {rW*胤iˠϝkQYI u<¯V[0vWv&M6/7.InlL2-q9AQS%WȺ 77>c+a@rQӹlED$mh 8:gݰ. %Mfq5UX} w!gXn`ⳍ?҉0M,[zk%?u@ p[w{vR,! x䉧S҆7X8v.Oۮ0w<-ar0^b;EO N2A"FYDFe(̃$uB^F'ۨz׮}#[; vDw0A <Wd|!R|c!}:TR*-%ᄸ25#>Y9.~sD/.SzUQwPAIĀ%rSlE[(G+(ofL:gM(e$CƱ]߭ӗA}\l5iծt.ZKSJ1:1AL4hSCsJ+d2"͒a@JWF z܆lZV7%׋Li\\Wi|]!&iX1#qWy\UhTڗ\.%좁PRNte+I7D<cP|  |8/'uBiSf*dS%7 L+^sKɡ¾%fl`ߟym]#p7uW1)\*Ғ8lZ-r<8IɫSLЙAF.Qui#!zU9g|08X_h 0e)mW$~}c1sO |KMdʦJE,yMaG赿)ιlpc+ ;@.*VX(z:K[n:glufW3b}}@6J؋WlH]xZAj| %qN v{D'9BeS'Yd3O5{4!D sKs;,%1V3Q?H_B |̮e0ƒŶX0bÓБ0f^kXq2"&RӹmJ IK@Fو{`.96f&5sJ )1uH")_ E,V̏Ej*%d۹Ty1d(>?phID˺>FC(+}' :r?8 /~SEFVpgϼE0cJ;#?DwS&YN]2,|qTOĊ1Hp>3smUNXqY. N_8>ea5cB _"NVMcF=t?Ăy#)\o%?Qbv1I+b\bޡxY+1:OP"Rh[*ܨ4gɋrʀ#T@#sja)Y1ܼ $~:=`FS/{>[!RU)EccV?ZO}R_dmJd)X6s0xqJ}QMz `,J$W < \Όh\js Id~K"Z P{'5kA`.ٔhG1d|1΃`[Ѣm e&Ҁ̜7n=R| )s847)G ńC|g TVWoGѤD & tj~11Q'@ʼ"/;n$wNHGOQ * .k5,*2js e}#&Xl{r?eĶMbC!%]݁"^3#>!tCH`Y*\Jҫ 4l OdWTM3dԛhz1-v1×Ŭgx+U6󿤴* ,FZcӔ j+4o&bM+iz%#^}݀9dDӞߘddyY-fR$ R_htAC+FݑbTl q\R6IWd-D 9Yn4(ː TCSBڎL6 ˷A6[CTo5;1,$Λ,S r1}H iT8pכأ Ђ*4i)~|7Тz؀!ΤSZ G&֣>zjCݨ*Xr8<]u,,;4(yoI90Gmps^QlU#?,(]gZ!t,6 UZ'(<]#vUvѱTTu,OQA㶑I&`63j'V] _2IP-T痭ѺÑtH[E/ڤnQb$ROtF)'I-]`?X_a"A/k4~-6(T2)NsƢv%kdQAr$"ݭFjQVc|uVxؙ("xob@ˣ^S< QC6ʉCs2jXy;?bG(eKuX 3Js0Hpқ ئV 6?q{LUp -(GH4!{vo۾.k \d2 8M Qw(^*:" S`ȷk,\.0i<1oe"Wuֻ+&^1Etcn-drM&m8+MB읭Rx|!;V&]^l}|A#57{ŦOWh⎃F3w@8% |a:q ]&~kGQZKNh%=ޠOV6; u XZT0]fB/\b7 m2eZ?hDT}'Y%?7+ot"@n4' ~|O*9r&9D*rt|!ƧlB5D%̜:#0d'~H/ă xoOvgAc-kqZxxS46Kz;)q fc"LP&{4Q\u?Eq&]DT9Eg6fkcDPh A!_{5sC"uOq,ٔ<=v`=a6]r (.8H)xBFb UH~+lo& Nr4g1=!#4ZYNr|݁[WSq=bS2s Tֈ /kc|gMp 4UecMzJ tKk X x:Bq?,`>s6 a20:)d>ΏѫB|-U-0 FUykK*'ξ9ME$ڮ*'ic}فD'_0Ff69S~2 kcC;hK%M'O27RYO,dCJP3 e'N켗p;Bj!T9lGMQ̸p%znG/AW6]ܩ@TZ'yx@v4Nq.x$LPdYX`Rn${jyh@#zF&m': Y\Q^OʿEM2z4G`/AM ~֛FۤuFo63G]S 2ا8v`e8xfcpImXRφv rTLn! `1M,M]dkzhd0 PqNW3]ڏ37Jo(W=$D ~?KUW_6yps瓚/c[N #pv\~̧p# ^y*`^0iPhLvҔ!jr"З1nþC@s'䍭=HݎbfZ>>MC#Z K'Jo2~i=0S51ÿXlS_'>wBK03l)V҃RI^ܐ+6b%>cI?cz8j|t7v7%R#-`|=ݞK ˢ3ְ>bo' \0"Ӈ![,j-Zp0fK?&kc1B(+ߞ\ QHD1Dg#䏤'gWxWt;l65va%H,K. \e4ߝIO+0j" @4t)|@džAtV;wj???4Mu{j9hs5H ,m wR q"P7(. V~Qk&vnt_*+FA鰊˱9*V 베co 7ߠG:;)-ۗ`+;>5Rϱ֜n "]%]?{`#9|-3ݐ|% -ȟhw9iKGW +a=SUF6o-d0:qReE''i2lo}VI|Ãz"Ҁ }Ә{JoF<ⷱ+di-lCҮ̱ctʢLUc;xO?GO(vWn̉43 $3L(o~#7ܯݭ(crd ΉpQ^sH760G*Or#m܆=IVz)?1Y=鶯~xsZl@j}eV2=[է7k85!;Vᱰ CR39jT+uHfHY5PX.hGN{U5[/\]uux&D-fKI'"ql0 "T=L13}GC^T Cij=7q7V4%-g24 fIf^r+r`;B{%vR'1l=S~{l8R4D\Ɖ;>[j8c=Xb{ns^S).GR~* Jnwo)9#4LhKks{ mTƸRKѝxqs"M(h5]AUˀSjF!M~jjj.y/05gش|tq.ƘQDi]0,v)7~_W4 ]$ lS=P 㺘3&†@WZE׭/9eT|v[G3A4!eކP=HxVO{M7$VD Z~'aHs:H,D({a}=.Ѷq!^&i֕eHw.@"I:JRS~_ĎnA@t):J½vg/'Lk`pq;QIy8`O_YP ъ] &g\_x(~2ĶsčvGʁ')&g+@lH YlU4f}0LFF$Ip_![f %܁)+vl\D9T)P{h1ö G{>"y}d u 9}KCϷ#6G(ҙ)-nASշ\k7FVQ" !TmH*zs!’LyػNO>[q6aˮ;Rߕ|plL^aMHzw*^^Y;ڼ!%/CV1B3 f1 1 Q<|Ԋ26D ܯ;tӎuUқZl`>Yܲ`&Y烧JRSs[vp u;Ts-(':(#᭻"*8[r6g3Yw1=g3]Z*Yʙuniz昍b{UdIg2:2dm\eU[]1 p\()SԡHɟ&zXȹAG.qv$;D2ҭ.f({~$gt`&73'Ee\AZ.Fdl)='8{6)F[sa 2YR F'=Ԛ%~%ٖ[!0и۸UMЍݎU*_&P9뜼6-ۍ2j.bI+t^_Rn4iȦcMZ-mU9mԏ݅jSCguu۾: eW^HT^Uʍ tJ=2k.;I5#+yBY&YhdkJ,R_?cUsl ܙ!@b^E;ˎ3aR|*s\4[Dȋ!*i%[}V ! \=M(zaTB,2Pu5p;cJhٜ Ywf:-MrO|p$(SS[g p)Z.ocI2>tN<7H3 {!k-L 6Pt,u34ί]_"Ԩ#GA[;@iJu4] =Uߑs'%[|bq:6,ѷlC 15O?*QV$R1#TCp|E)l*nwU2eL,AzTDjO0j [4:ai3DqK ̢QsiwYRM 5f;- ΥG黀БCkKnQ4#xqxA޾@"d1"ANF ,B&K~jIǐBFeGQL,{/j3 Uq\DHN=`D"]:5~P57O]A"8] ^Xk,q4KF"э_Y0fǀsԆYTgiĶ<Q]o22Iؙf<rWGe{k[ ppО.KY Po8, C;ѪofqoFE|n\h*͎ C#ob%ı!i-+-;>!ߑaj|ҋTQ .O6H c#eλ lчq d^$:`:qc@tW3ei\ A8=ڝQZܱQ?([qgF*lܙI^k`GJ"zٿgRc\`K'9~# t;Y\f2>v,z+v)aj D庬6 ,8bb՝s%kD< ~ ԍCA[ĉ`lYA~P4Vjs(b5y HG]vnߪM]]W% ]$қm)|H3jDG氍/AD]`c5Kmeq?}ɦ}f(Nlr,dkG96Nᗚ9޷,K/"s?$ɇR^qYIyD;g5Pe]dsCWtbDbt![}zQ ACOR(c+&y1K $yS̐=hW|}dnN&`d%J,iq= >=~ ڤ0 l:% rt#FJ=œD$kQZyV@:'K, ~R>$}HX,Ӎ) R oavu]Z4X̝ \C5m F'<C%D'/q ]9iGZogÇpq~t )u}v$#kvi;KUẍ́y`RSSҸJS6٣@pr!_䂖5A&tMŽ 1%T ,zE CD&,h_H;RP*vB wN\A%4ȝ C*833ز1eO/Kp6T$!ut]GД""h';4PM09Z=rm"ؔh9&ꗖp jJ{uP!vqTsZX֘4$l+O} ~Uy45LVvNd8ti_Y*/Я;<ώFC)Ϩ܊OUSjƎМOKHO,4~8&وLW|67&ΪTZUYQRŚDa<ذًl;2k[d^W’Xr{zSE %K @s#h];aPt硰8pTaf!KGT= lr w˲[ uQN@òj"Yˇ`E[U'9VUk^ ƙSş:fph"\awZcJ`2\ABNiޛH&R9BChjKw^@qIf뮒O~4 -?-A Li0wV뒓Gm:V`ͧx&gn-=h3sp7>b- X|jU>lBX@u16[mwQ 77~A)녫[ 2g}4!(Xu@%'z -I7Rۑ37qb6ϥþeEݣѻRS}_%44EB#̀'Յھf~/CS,%W~Jڮ.Lu=@%ԎN5\kHNJ6flt>_|؀ b49p{* ̓>%uwB*Vc R4Z "j%ڡ誫~nˁI͂'߁P`?33D8Qa>}Ҕ$69AȋmqE磧OL#9J<><թG/ "QF?wm~"M3} s_ 5kfeS&5[J(GqZ33 ;R:΍I2Ru]Y_Ua\0>A_k0['Ҧ1U4{x PlLU}%lLrH]%\ߴ[+_Fźjx3q^2ЗY2I/b-*CKq ,gi)7Sֱ)]f=?]!VoM9Z)׫zHdLڕCFp11AF&L{4Fu'Q=x'L_ڹ(%= BeO͵n⩯n|$ġFԼB@*kpq>KH=/EΣix/ ZD7o@<o,>A\%şVXc3qܔMLAFZ :tATdR_T!ŔqەqkUi7 鳧Mcu{$S* ^q<.AѶ<ɾFvTr"Jk9xKbC#ig|O:;Xg>-pbXvIvzM{ -Mm!D(gQ{>'H넹1td{73M_H7?<㣎Oyo]k QͮO/Sn^4OlDylb\ؼ_.h:=nK"WGOuɀi(=/H]F]# f΂Z-+||~ H@gK_S(p5Dv9xpVWLQ٤Ld,.YCM40KjV)i%+nK͚LFa[>[qa'9XÂ{A|^%0P793aQ mCPdRjas_4 m_Jސ٥O¦ tΈZ)c4Pu)_?BªUCWKnFzr~}mp7zVs5iwV-0-HD !ֲj0t=oɂ9Eƿ,~9 8=Ơlv&B3M4Fm$oWrwF 's+plmȫ0zڗj䰍;T5j^||.DG+bY~_dѓb2cbPqB.X$CUͧv*06pnnw'|6OqQlq=j dzs=ǦT}f/ øknݲ(]/)qq jv[61:S aDof@2wZX֌-@'zYG#lUqҼ)P`j:ZArq{iRui?Kɵq.;% CLx.ZnyƁ< 2jIgdb"Zp9 pUk9jlIRiP8a*!A^qAE>A.snc S #e÷|b;M`C/= k^;234b~wPwLA120W_z]Y씬;֥ sϺ_"/\ .UJ H eP|9+=&N{'9.1]qň3hvot;U׎W{2Rk(S1x w!`{k:&<vR)2{aXf$Q_[(D0v^nb6V HLf00p'\Is-P /e]ᜇC fUI'Asqf5ZU+Tf%, 2OFcWhN[+%HѭESb+PL"y>ʭ4Jȉ@?D N?z~C7ºoUlTˤpf}EM:2+F2{|gjO%'Sz2&WT7TE[ZL/{缡Z>)}-@k%\.?(6˲ ^.HpKW%<{KxjUm[G](LdJ!՟9c[X뮵w`s^$DZ@ ~ז||]y&!-PA8-;P;L)sd8<#Zet{O2(|`x1Z+ĵGto_/:!s5{WDF45KB1+R] }޼\ħBaN0*Mz+㝀Z4^uߙ"BJ 0eqk yվ4v_d"Jx%xgR$f61~PJMb(O9avrε/4j9W`" dcUu Bs\*%ݮ8PeEsy챤zVR[9ï+H?mN"ط]Cbt$Td 5QۈWPv"2yߘv5ȍeb'y>,)VQ t:VbD,%/xigzcME +b~+X0?`pnp|U"t3%2SN6 PYogYʳ1qp>ͦ뀾GJXc^]OB9x˅L[eQFMZKy3ϴ3fj?ۃdQ&І7 #5BZu1 ?*Nبx8AkLݒF3]".Tp|=զ/8yp">$o] pP6[(tt# kIcQEx,}uuժ(^]чqwЙck!SLEg;%۠?_<:*d]?I)Jj\ HmשzO2!Ewox=Djv9OVE.n Ue\"dOR, s3 JjpYǏl=%9i\ߴ>'xv!YubGfB9ρsS{\PKxAjkduVbjUS?q +-\auFP5Gn5ñwnI%$Im;SǘE?F?őn+N6OW,[c _ug_+^ks?6)d#qvU#?'Ϗe0 V_/ݿ;CGO5w~W/˿_;?Ï'ss'޿9ASυ_ [wQ?߻o?3W/ܟ?OG_}'OدOZew]>S=V{7+~~W?fg7e؏ُK?ߨ?n/}_i?7?Aw?_濿 /_$~YcMcMcMcMcM]J\|Q8ƴFO3\O ޿n[hagK$-v77a0yj.}2 ze]m4O;:2&izW9tf]ds~-w`6|z[HѤE':'dק̝ ȟeg<}_1i>p~KscbI+ߧ&ʅ +"+$D!칇-|+P ^7+; 1Cuf{C GRER AkDV -~XH{cc5O@su=eB4[S-mn`R"h2Z_WġQ9QdCӰ0IeW6cѤF45bVp_+OAWz(Ĉ@4$O[X:7X4s#Cb-4&4VO˒5UϜDYkWYwИh =%Qu}F>d,4虰M·qzA/T=Z Qi(0ƚ|Mt =*3V\y26d./sڬ9g.nP"5}x4 }' 5l}GG x5D݂ޙ.Ű#H~lTG϶>G6t,XhmmTCqO@.aYTKje Ъqk%u&..FuHSJw<= 09y`8UM ,5,vlGmmZ½t6nyL;|7#jq+m(aHxE*np5wzsu_RT0Q,:ֹ xlz OK&o/h,,kh̞4&4&4^jb4]SajC>q}˚%C`۝63[YӰX|UcuHG+jSo#p$  'ŖZ6 o]ƛDƚfyMT!ϼjz'Mzq~D#DmFT|KƊƾN;8 T;kfȘ#, K` b"ZPm{^ԈSyNؼ 8ykA*mm4>}9he)]1d-tˬnܶT:`s ߚ^-qӱ~!Qd:=}N0 FӘ w~fso:7 V;{  yz3G.[s}SkEw(ǃ^׺8[PIOmm(INh̞4&40!^]Ͽuz!5=,[ 4i6td>d$!~B&4Y cxX&6b{pק\@8Yjح_s߶kʖ@fnl1o9[ 3Jo6 >䪱$}/45\6m.EWMcNnOY^AD ouvT xvիfAD#1cqUǨjBtJ FC)K|&s1B# >wl3wN%{Ůg"a>Aq)Յ_Cl~KK/ƫcITjdIhя:w੒.'˼rs G|8;8`dADrNV0@rqNnkō a!Op~]1ؽB鞩ʐAvci ߦMTͱ(4j UKE'KNw^蹥F= s6k )%'{eiy.0X.!A =jfsv?۳n}m oq1n|"t󼐑.6bLvdg[fM;&mp@lj)5.wo|u1@7S:vۧղܦEC%LKa2xdKMDE#j׭lYH D@6k V-CLe(gfmW=ӵY/u,rß:Ε7 yAgϏG}pTܑ.縭/e~J>t{^Z@F MùtfZM/Sd>pkqrQ_9K?oĻ㽷ʼn5~AΰIUJ舙*m ='FhLLs_@>6b+G;i%@ HOr[@M@;rp<3AN9L/髜ǹUxAS e/!|>?(dKUu|;ݪV3B*elXAa`AP;M?z5rNq V'6gܴGE! )-^KԛM"fY\"}]؏u+Ê& sj[IzlՈTt" V晪) #= &U* i2u~OG=( uzuWυ aNYzM/;d0A ;0x [#H<6_2xqPyr+&B\0Qbkx!`^')2,i+V'dNSg-&bb8>%ף,_.h_v,Z32߳/X$jM 3j,F/ºUBB!(;DF,l.SkR!mi˚%ϙb9)zͦ :aW#{r)Bg$J-]~,:9/-%MYMoH;g6Pb| \L;8ڣg[k]ÐKO| c7q#ۢy!^Kz GJ)p:qM]v*F>dUQj>ا3wS}*O%aYL+C*u+Оa~!܅hI4AtT8(lU) vIxØ\hu ]xJC_-1NcSvwQ>/E> Ϙhi.򐧧Hn2Z&4&4Y7%4)nmFo P+!m|RԺ=1bgOm$4>Ì=.= t]k 3b:bc𲤜34U}Z)ϙ<>a;9VRb-Yj6*DUI:i_!٦?I,Z`yz.k~Ov=Sv`zp<" ZKސ.-_QΎ}iOBD?MdjWR}BrbkO_?L^Pա}*{YmN7k3?>.ShZ|r+ y:Nbo_pƃ#a;nK?:l3c'E~-H{B|d[q^KWqC>m/ иCЯl1WƛDOcY66=c sžCv ͔Dp )FM* 9LAUpCAʯ)UL_f7YSd* \dS{Ԣ9viFƍhIa藥 Ug#T/٠cRV\i!5~Z&d;2*8<JÃ(#Ds%^<#8^\.(OFBjml&oZlQ):ڱ㝐]V&Dꕞ"ڳu^|8[ՠll,iJ~6|i+E-b {y6FEσ {GdɑBn؍ژҵx02wﲚpcJň?`}c%Y\ [yGB p[_ZFlvl4p:!#;rE4fLS'Q !_@R~%+NO?|Rdz @͛6A (MX^[aSUf7ňb{ ѥuc!DP'V$I^yazoBpeਟ K";*(m8-3¢%ԃ {/Oh iSGGVړ˄{13g1է.#SדJLgbx1w)աvt%a7nVmՌ?sxUP}f^N2bVK'G"|$s] od?gb2=0Y CS_Ul4$Ň8wҔ3q@GB26:uToy뎩ݤM0xZ #X= dm9uaF"y_5YA)@K8yPZB.6ƥϱ:d3c Tjу.Md+L;M\g #'U]WkDV#Y71JR腞 ^xy/S5PS-V>(GǾfJlr$f(^&D1h<~ȍ!D)8Ȍ9awQooJ[ԕC,wZ ?^,~]w5̒@J1^2.q^"Oo=r7}u_1F_U2rhe?df5==0RO0+U{ZMϵ8O`ٿ;ST?![}f^qK?w CL\;c7s{^KʪݰNӎ(krHIbgOxܡ6O~e҉.$;qc8}lESlFruy+傽VD Dzc^Z^4#u 8sĪꇽ+>/z7uRps)ߦ_Lg[ XxUĘ{5yFSm8L7;^ݵ?|S^Ycby&誶z YM+H_"B]=K=1v 6oub *#E2SդQ„"N2g~2q.Krd_T5xBN|{f7,?/* -4K~1Kgd7WӆGh]uD4x\Y9jȴ@:"Edg8ZՐ`97#xߏLO =ZB,(IS PMAJuˊe!uYgEnN0MZzuK!$M|+6'<dK7?1܀N>4yWc]@]Sұ6C.G Nˌ%ovF%Ըj; js%aիkWAxj7R}i`X <^c` Z.@ 6Z:)EΕ QsyEj@΍1VMBf_"B=ˣ Ռq7~T :,>+1+.⭕F),:nJI-6ӗ/R8~XZRIh_=+yxayh#rWRn0A^ȃHjJ?3ڵbV/?ܸWoa?Y|=N>A;SI'7#rasᐏ!=Kv`(_ ~7_BfێFJ+vxs} G^F9OYK&KZ zh^K ]X6F7q:S|O_Ҹ+~$>AE3iyBnVYب {?}}<DCG>Gmxk %Sn3>-ZSRJR͟] h^#FU/'H (pa_R6jXC:J2&.:OV\`U;<(vc]^7 /5QȽv'y͉lʊ ziwBQ pYhK00耚%V X`7#N^"9`buxv34Pizx0$x݇ϫGj ]`/ԕ݄L;]v2#E* iyu7kc-W:)~_(V!ԚFH K;/w//P˖K4!݃z|;gobG rƲ~_P:K(ќT0"^Ҵ桔Q)q7ɇKcy[:;j%.g0Φ=Bn Y` qr\W[]=,|#y=.ӨNd69Px龜La|8>1DhǼ/Y(_H~a#3:3ۗmbh`ewŬtyׄ*h{# ) L\MA N9 sz_ @8 ZU1A{~GGgDZ2># oz#K`?uoft6jTϜO?O$L+DPެic8], NN68ξ!ewU߀C<<0տN1;jH[u{ۿXCN{$uwqT?Fe:MnRVZ.ߪGK Z{=0E?roWsLݗp$ =jUf%g̼䎱"tr\FTP _FpdfU [ܡDz!(:Vv؟+R/ypWG/.,A!Sm[!UWI*&u\tF Au[@,&鷬^*KX_R]ŇI~BTBaZOhIXN@Fqr_ro_\G+sGĶQ52}px*u6H .K%B1TeocbS)N]L :Xe3n$?qS&s`p{-XԠaa,)m^JXXd`^8v 5+)C'HzLeem6"!8+j宯zİA- &`5ṛS/t9r4([F82l+MՎ^5P lhJ0DCؒb _v`ltA֯*m<\?oZK'`pO2нrxEӥDry;hc}t-3qM ;4Hg5UiׄgP)O^Eu+.uKG_?se"Q-'əOVZ cTerNAg֘Յ6=\d̊" T\%)%X%ݎM)DJ^u9#˧fVvV@Zӟ&Z8S"i)!Ա:3]~Qjʬ)T_Ąypyҽlɩ,[ędѭ.Yh")K' 8H77[8qԪ(sqo(d4ɴ-S5񑏠l|jsGjYhaH]2om=@[h`m]Mؿݧ#ޅ?,W=aV6WW8uפ|  3Qr_#|x xp>9&bJ[-0ne=L\j0;|g:C"S֍%t ^D 02*[UեzGN)eT0#1elǷO{vgq*Omt 3 a7G>^!GIАjr:ӝP5X~59gg;BzHHe]vC.ks kvadDiL~eF h ZN9R7 עO+ei lˑJbq^A!3IZ2fvw)9iv6cN>< 8*p[*]zO,F܊oIh8}[AU%}C_s>_ ;"ؒbG y7o8>V'q. üG_ah\Sj ~h5R"qfUχmW/Hec˚q1bRN!ھRj,iu)c.芇>RE?Џ4dSM56HCכVd[DgU{)XrLd`Z*r2YTa:“,EOaJ#`RԧW|6a、_ k:H<眩u MF#3SYycpGlVcAT0=u} +7fӯl.=͔l3(@{X:-sp˳]9aUxp+B9p\f/h?mqi>&X|\{ ҩYTPsE a~}8wd^nu0Q̹c{G$F&[h!sDgC&˘V#rV~>U CnA~6TsÖ Q zN2>QXRY6;aX,L>bX4'gms62eLnqVKue~yBX(/Ak&Ջ^ bͷ^ 2><%8d稾Al].PY4]{/ ElX[Yie-b5y."PXe r5Hk."c/u<ڎkh.Ep>^*nu hSi׭Z,[U!GqOgIAĺQw.i+uyCzI9,Wb)nc&}1O?1 Cqү~ Tqp[D T\"ѿ:cٱ VzA_HN% "6?k1 <"/Ь^cRl4s;Ywr d;'p ׵֘G H}AIh&p:ReSpqE1ŦۮsM+Ea^@A93dv Y6{ڜBO{z=6 jkB@hn: r/Kx%Y}!Yx5PoJ"(>U1TFcAdkWML͆*h.do+/M gT05üɺ~N]jbpʵcf+(rf 4."9. `c(}J7m5}OE$d X۵E{+xd@z$Ƙ9Dwl*h̸'G)*FCt W \0edh5Biݞvt,/66]aMnN<r@>J,eF!3pnSTI{2砹=:~ڮX ӕ`FcEcLM?3Z|(FB/ܲ1ZIUPCdﳹPRA9mQk͂){mH sW40Jtc<o Cw?cӏ#9ǁZ'{Wo6._Px}gkb̐=TBo\d>Rpaj' ז % {04VEU3|gȨ&]Unc5}He-Lig) :3 +iJ9 LnĺI82YQr GY"Ee4걌M(TKKY Ҩq1 #̧''KC0C +Vl21Sd|$ƈ};]۬?qv< 2 i=sDg6}\Wg|jtv GeFnn>yX գ?$v>{ O$Fc/TYZ5-#)u+ d[<!%d5|&̬C/`GkLf`_K %91$F{(?&ڕ*@sEJ+rW@qG8U20kYg s 9<7,fOIަ8ƶߣL Y\Ǯ@FX].) a @ۍGjbҞB>.j61?DYV]^Y(?k5ʊKk "wM3ثW?ZFF00UZZxES:.a$y.JxگQ}<qĆBOp-ZѤ,ʜwxZd#mTKFplVY'?Sn=I -nAH6~>w$uX&eL΀d@]Xh7igʽ @"> nki624xBHG96_S5*)?lu }10%!y[”]|d# ;ҧ)0[؃*9*$I ʏPc|{1GdH\j$zʷقTU%GIHo\~.oxH/m!kHB;YU9mm3O4ңph9Jͯ0+Lo,&Zι8:J T$$lz+ή(Hr=c `ͮZ2v7ei#FrrE]y[▰mvg)*ب`LQzD)Xy$PB0"s*tk1;rKwtF=8G/ Je؎0Q)uB%-jdrKl_}{g]?,Un3;VQpϱֱԅZЧ4m5f/.g'c ⥯/: ;zTGc~}(M!T/rDS#XZJTtLR]g쨬ۣ3L6JFEN+9>9o_jԪE2A# 8=uz)Ngkk|F='|?- &/qMTxԬ9VE-1o\UVf_HkKFD.]׋I k Ք˄ Or%NU C5AH#V|ꄇ_uaH_3~iiϬCkK ?aє~CA3;Uj}Sxi5lK X@2~v$ec)eB_z6)X*,@n[j[4th|<闡E ߽md:iWBXi!l6ibB?˫‡K +0xТ⨯ܤ!K= ֏eF%J8V [ѵ*d|^[wQ|x\! A0c;xH#r^$"U;Qـz2…Nt.X k(-v4"F}<肏[DsOA~;hd"LҎ) Mh-˻VZgboAS>^{Q5j{ᬠxXxqk)Ng/<`PuGQFn>JA ~}ژ .TGPeXB`|_|P6ʷˏp )CBQ-N7CWgJ-MX|& *6|6^膫\jM5Nc[XB's{ Yl'rR_`< ZZs&_O,K8͉7@8~t +ƒhꬦĂxOr`[P_W?(y8StMRXi!Ύ;J1L[, 4H8|b *(;q00'?ʮj1( 0Qɿ!q?M@*o/YA";V*ChP}e×d_o-mD$fύA9npmCAW0'ʐ^ xPw  '=LNyoi&\`$l+"rLl]AHb a pR'z '-ܓA)TDb /\K Wp d B( V)x=@-Eu08 s(UzxۿkDC.%m* +3{0 I(>aTyjP2SD VIo\7l!b{=p,ȥAܷ0!"nGM(K3&fx+*I7^ * o #oK4FY Q2*>LA6BL`Y?}K@N 6l)@ٟZu\ h(',S<@6_r#H s}$Q!di7čm(4csQ0Uv5dPR3vK׎}ݖ;^s%C6 4-?yTTQ9(Gڎʎ(U< J -FQ Y*Eؚg9} `HNH=*eB2H[!u⅐.р%Շ>\Sn=EBoD4JeOe 1 z멭A-hw91l77iW@ p-|Pu~@_guv-0ɭ/`D$ P[Ic*w_%M$koAx jE{lՃ*"Aစ@^\=%s54GӼ sهFlHwݫ<zyr32Jf8|f}k,'l `Fd)b8"aPI-Nx}Ƒ$S!jBr9sz 5G=SB n riPCͫ"['1%iy]Ɂ Jb ]tXԄ+ C" ]t 7,iBd<4D1l=Q+nOP$jW9^u][G^3kb$^M)g+VJ:fl Zp  hԈR| Uo!OVU<;IRnh=9~;끕 mM6l'E\J1RïQ{ 鞻@+z:zq$1qbNT%їkpzn.[<.DD7X0=hNW3EQE[LrIBXйoՒl}DL'Xq$Ev8dL#q)ۄudtR J,aYםOMkb`f5ܚ@ =q*7qE r5oaӊ F(̉C$"!;cb5P.RM[ȡ̔tCPm>t%1"R]}m*f1- hG e5S*vH\|c-F5^%āqN k;0Ǯį^C.Br_<\n19.j}De'fޘ iMnϛRuMmJxZ}1i}S"<=nWN`0q:f'h BiRMo- 8laE^BH u.-qD j*vcR'^iy<Ɋ›p& 1 BI`VCCJ_ K4ğ0@S ?͡2ByG;%ʼ\"x⒋"%ADLµi2ҡ"۶OqГ.tѺICwgui,T #cK-+Q_r#xyj]TMjڽ):E{MuEX!4耛Ƿ=18Dy.Gd[Ԝx/om-G݈a$&h OD(`e ҕ19D( ^|KdǡwDU-6y2N*03!;=.dT1UGBڳ87;;z>V}جf'aG$7G3/Hw~ahwwOG*9M[#mGf4#߹EH}HfCAc2ȫM۵2ֺAe&qdfAOʎQ PwFJCݛÜ:jD0_rgLF0^/$wWgǸEm{d9>yްF.l&C,m%dU=H!ށtBmQ+{@ kGVF-D 7JC&533skD7[(ˢY¬@xnQm=91nf&% _hY ,Au]NOa-,|/j1GZYd{خIGe|E^XP0"N 4{8yUsO*'Ҝ~,AރB#mQ++zؙ,6vB~ֽe{UWyv"Pho(ӋOQ ZƁ:ѐCS1 Z^+N]1Lml܅ڽaqzfozLQ"gHÎ0e&ZbHdԺ-I+I>!e)VgUƋ9h%2 gh|4^vG7 zB 5;Qg^h@IО>PI4KY (YJo7QGu kf7v]1y^z_o^K:ܰ<#JFls;C| 2Z׍ v[70(:18JXj`gࢨ8$TBToS{#Gf% 27w0eYTٞBo[a_~ɋT/wU|qp$GdP X^? 45rH1I`F5> e}*TF2 qi zz;4~l2AeM}Us4`o^m(vW& Ińs(C][#].d*UWkzӨ$YaAq {jotj5TWsT "FPlI7j`N%%"JA]G/n?v['O:LyAz6"W8j\:jU֠S'B$<Vt3%JM,u7IDfq׀ '4[j2QI6򎩗4o8fD3޴5h~=@-)N2kBǻ.fTg?ɟV d6g^2ro3 R~V]FPd:w'bсؖ, EUϓwhޫpc!#l;oHq=?0b]>ugr`q8\5SQwQiөAs73He5OHiޝHGr$lSL1e>鏖V RR>/ZW ^#jtoI~VHD`@GKTxrMmw4@cY7ᰬ0l5n) ^rq#*zݖ5 ;$rMOmkeIdV y\v!KTzLOL0'`NzA2jnoqm}} C$Z%a;$U~*~‚F58Xӡe¶36Ԛd#S[1pv'0VCdݔD*3 ŐjW8s;~288ڙ'T+ A Ex)VOG$BƉx~yp4߯Ev>9b'?x6 |X.~$4(`OؚwG_—~gC5LL@bqY.!-K1x`/t q`٦ @'cbO h4kŞ n"$+$ _3Er{YMVGTe2R!Gsd0U94l?a*na1*je0񒾥x>ɝ7vZ|B%K`{oz[DW@-SKb-FO$zRXW6enYYczخ74[7װ#M^¾-r/ue X >U\vU7^Erzc. V[AtQbLRjOcʼb H *C t?HJUJ>*N ^ ?, SiQYOL$Ν\]q zT{q7q18@/3I{g/tdQQAQc$I scl.)W=SVc5IwO L>#\&%YMTlq?"yq 2Yw]*GѮF:NϠ9w|\k58bz{eE8JOV7pwITHX*u:گxi qǵȑvu+8pcLf3\,p4I`ghd)- R<8zr 0hP9Kc{85xr )9@xz*BV5tQS9tS] 8 L/gtjQA|I)n{=w']f!k 01%a%<wo4>=[xxbUkA+lE7>>-N9.:̢Ck2?^hV!JY K;Sn X&hr@/1$E O2c)C98WS-9V[^yZUcp0,.%[1I_qb.uF t1i#@r\ `!.g2CTrᰢf^ٰ (-g aL: GMl|aw$[9!෉X;YCjAm2 K:^nXK?Y,90)4#/; l]/o̹OgλbbGGO0+FIͳ77"0ZI;7;zLV}TԤ n1E2ʅ ,op(K鄔Mڒ򎂵?"0MǷFH}]̜Sdϵ']$Sv:SopI\﫞s")h=WR Jx3 eD`sNIr[M٦]&zI%Rpa066C{},Q{gw| z O:UyGjͦ#_/qOՍO2Tɖ F qˉLf4YQ7N_FS`{|#|֞f}KixtC$%r=Q "sR'%4;UU080?qfk2qw' RRsOfvy6MbP;JOíadgi'@$[wrRz*x'@u%pgeMƿ*WsBM]Y@*!PDNduIM{kW1(m.'~χ1vCW_@8Z욿RV\%(_@W#6m 6RFi$t7/I *Vg? d3 |aXHeLd|5:&얁oҊύ@Rx&VsƷ2qgXQD6)8|[(7V,A3GAsh`| Le_Ջ (OIąu`>@;a( ,$[P jjD F8s7J)4)T[zZCJr9Kv;~h^^0O#vNnJMVXaPE"i,=RMɣ>i,jF)@TRa^ i6)$v +Gk,J1Z8ϡ?ި Q׮?Mp}҃dvuUGOEiEQςpֻ\*˗]}xT``cI|g{& REq$pā(,Xs79ej@6h,ɧKO ?x>0bpMGe$=^2|Uq,,mj&X6D#ry2\U)v9xd~Ts+W}~H6皻a޺׃Zh˼4 sCؤأ SVR<\att@wjW ~>/(rE`Gί0yv+22TdL"%>V>\z:I?-pe wE4%sM%_cD4O+sEދV[fPzk vՁ;ZbdUͫXu4"*S`l[ᅺO dۈCINJ9$gVJI W؅mV?sRԋ6G˱/}ϫܔd4W?tTg8as~i`wu$r4UeBiZs' ,& !g`4Pwe!"nb{ ky7oXTu4=A~irfPńOc*ʠ s\Īgo>scZR G2W M,/_1̴Ǯ3 J֭&i?Q$d! M z*vvy](lf)c}q}'c5ErV8?TY6gS> fyGz%n,RʸS(jMD7,HH ZqJe^ lvp60ˏqOנ'!OUM;aB[pDFQX+GjEgLy 7FLc%q\5T@ [-x=t)ӄpҫBT'h(b#H9ěrjg`<%*\h3CE_ve밡,g>wOys-5?n5ceG2@(8$?)byS_ѳ Pzc/ղDRj=?6x aW_`;[7s OK6 Ջa`>ZM!mH͹_/OÕesfTSnx޿tSHC -(2"-G܆g\:iԢzhW]0Usm͡=.^ ܟ ŝKf[.ҙz}8 m{pGfIP" r<,߸ ᛿DKF$wa@U ̯s@ddmS*9ۏGpng^L~fLw1];z[^K$`OD8DOk PG~k0joS& c]5ˏôܓp7Sn\:և"'XΣ&՜%5X.^mGz2ѭ"Ҕ[^&?o@sEAYh9&J5lʚ+E@|p6@~OuΛQE{ωbl5l,1ksC݆3{tx1p XO.Fa,X*nPN~'ک^"쏀X/sҨ8|t*լ(ֻzC,HHmhi ?&3&Qv$UI9WĔsʹ\rjfJxjj9q(zsA>pwN߅f-*!zq?!xZ;|X:G/Rg%)".Ȱ>)G *KP3k*X4>Xܿ\ld̚e:eO7pAXʶON*Pc S8e;Nz2 56UA8R̼_&nޡf* =E.FĊ KAy1lTv]4s:,X>x4כ* ['ǡ8ǼC)>!Wcˬ8bY4\}ccEOF@JJB+):J_ c'Cfr2{w\H `G4JU(}BlhvPU@&~DSc`{STT++>tJo`0;3vpKZAͼFc"qs'*䦡ʊY92X*`J 5g/ET6{MAL0O#8κQfe5N,]W'%L΄I0R-K|7ՍTnB[S{\TW9h!ؤ5j* APBTΝ-pv$ oJ"2va?iGkcCa*=US%t#x~ W^m^"ȣoR ZɆNPe Ezy^AEYO|DY-0^o.U9u#!1 -V1]ĜD3 yӆbsu,)d(;c,^'Yo_x3.%FN3]&h+ Npg^w^4"L ꩋݾ~qC&Ï5= icC,yLmbϲ&44{ &E:B ˡc0"28; mD'z6,\n8K +VO?ʋ9lq'wmscÏfn~AҶ]<{ʛN(qL?=e i8>&׍d[a2Ad&K}`3Y&{Xh􁫡>e D:o )'s&9L1J[gwrgᷲʫS$SHoDFPwt p!PdǍ7~D@5.t|G^X|+̬pH -MɇtW.orK'ȣ!uij[ѫbKƀ%rKTN-kuy? V"٣ C/,^NKCKUڀU&ձD0AaZE\*'S.5>!θʼnƽ>]5th!R8^y|FǿҢ#&}f%QK xOٓ+YRL]Y&=+Ї1C5[iaO%wOk0ngC^Ws]mĉU c sw{Q= srƵyg% y~{u2~wSVRC$6\h0>5&5hRx/`]PN8Y{ ;,U8N|wɬf(~ukd Sd͸D\F/Iܩ'0 sW`1/5l~v֗9HEZX]}%]yN52vQ}RFz|_Y~Avn~bQ <`AU#~I9˯h w6٘խg=\O ȺD{2L(.)ӎi!Ƌ_I`ͨSVӇ0#b^f*8q/BMSNQCY^yQ&GBIWwz֏ZL.8CńbeAQI(`FV b뵻 nC⍡%~g ϓGPks_Ճ~AnI8vYL%4EGB H_.7giT^}yz-Kk9k+.ḿeZ_Z\( !&vmaߛLuOj?U*đN_f}}*g݌L riˡM6Ot7]g{vNh.@TL.7F ljC;$/Y0B)T&vp.q1ߑfĸ%t"i@ m! *|"uCV-`YE{Lnā"odIkYv}W$R\1AN7t<ȑFWI!"&rU%7=U~t dS)D]?^lO0B3hη堏L|D{y`~xiC 2_eĆV#cb2qXPBܻ"?N]4e_ͽ(^@ ԽO6G-`\m/rT%> L>DMqc%9Y6#v ׋BGBz60${<N)^=Iݪ[HHZɏUW,?1v{$*-KL1՜j  (&^D1׍`H40P̨O.Gt1 mo ,͖:ዞI>(L+ c߆ _*5c'nT\SJ#<K1.vKZ̈V_5A</0rx t#eR hj'>űY" X }7Exd5d3˹7mejVvc꺞34; fv=vPxb\Epp^MvP ״耹]^$ |qķlcza)1<_z0+f,7DyPFe$Ś OIWg`I)4ia~$6;H6qb(xaPTMabb56ˠR8L܄V>>.!JauZF|50H(!_ 5yUhH˵34m%Jd-L0UxcrE d[ܟgR@J|kc)M2yTw~#xM18RdM7%6y)r> `Axi>ВauL۴&7lO7dgV#g5˿^>|ߚz[ds J+:[PB!s&^JB„aI|oDq1ԑ<咭œuY<$K'v-g YM-]bx,1?آ=_r޻t5ح;S,b M.zTZfܚ} BJcl3ܑv"ʛ"ҮşWJY ˅[ Qݩ]7e:y 4'wӻ_lzǷlzDѦz&v!ޤӁM ׊LlPQ>ZW vÚᣠsT-C1Z/64t[F/ @G xߓ}Pv`U5{k%VgNSuޘ-BrCT~- M+{k$ S@t[띁t xJ\60]<Nrĺ8f8FKgwT]e}5GTyM)sڅ6)߭ hwfS4$<HcNmmNL AĠ6$6ՄCHD#x Wx:^t|mSہW'f{I|nkտ7S-SO, t^`7TJzsʛQ&P1Y췑~ 1`Z@ mo]Z9F*#+=tbpBJ#v'_da*؀;cPpFݖpCS傼S}z$bV}u{%@D' Co1. ش̈#eW%%X|ҟ]Ho[RJ%ɃDjᡎcgz$;2J6gꣻ .%!lMqLW@=WyG_t3JRL\|&Omb >_)pw:1i14j,6\Q"z>Q!=!4[u.b?pQ;(H!;B,Hq HnScX2ls%J%B{ѧrN〚sIqGKߑ**P";v~[Ӯy/OA)caj FB=ZZ~愆jN#kQh$$]r:=YR]ڝKkŵPEy(F&fU{wX2~0n.A5|X}r 8p _ GϷIw2<AleȀН[yœԯmoͭV=!E/zTf*5D-]!Lynm]k8\j8 $+B^zy0\" +`t 5.ɉXۆ 魊]Ach&&Z'=Nnеő6YlHm>W']Zc6KwъjF)ᅪk;0lF$&$ ƆEfŲO{ODr♗E*`bJf<r1P.kf*Pb(IZzD;S(jv9lkĚ!a;Wt 5<&V8:i~yN!MؐG 0dDHC'wgb2ŝr.^LOo){&e]u_ -j>2qH"؞ɚ07Np@}AM&ow"REҜ?v0eMz̲eVإ89;*5{BN:4QnHt΢r$ܓs Oh96@eEN yǺ]?p'"yqcbŁR~;RGOm%VQ:bop#H0Udfs3ց@w#pB @d ^,y}%T:7a>1;v1.F?tN`t"hhQ:!awgN~as]K-Ƹ3YxP?H{31oEDKpJ,1ԨoO%׍lvCFH(EL5X SuU_ &ؠAMS&ĐdPXbY#LJ&sW=rwphR 0^U[LN>Kbz\%iBv~@n.Ig懻> w.$&!3wAI n< f1ae) Bevkvt^ů?tcun?a$)ӏFW2tYB|z6Bq N J Й4J֝]<VbO2KTF`0, ͬ/v4]Y& u 6->}R?;k~Seo5\;셊Kq"EQ@Ǡ FX`6n[-xlc억ٶ/0[7;R{ʂfT8>*fו.l:ՓSZ0w?Fdר )<1 )#R@#4YAc iPfKߑ 6r/W nq<%Vj g/K:ƀd-ߨ7 Ggp @ j^0Bh +v Lp# '& [jNFCޣe>^7rbDY&J^ ,[N E!/xr__4F^-ԌÇͅxR1ؓL I)߰BQ&վGW &e}ڮ[y5u22;b?GvwԵ@q qD{i鳔Qf +\̇^S=tWjؚ$“[8S-Y=mI6S8sފ@t(%RsIBakA騏/>ػ 54p췫5?jgFiyFs Z͌͸Q. ﴲ6Msn0-@u8vOJyiPKKsJ5o:b>iVL cPtzG 7P)JyLi@s*LMzvNi:-}~όT#-Tp{2a:y8D3 !~qm~AAmU_˲@+?/i쉿(WILs8 ,.I4V5`wMn'Qg 'K\UkͣHyYh_ޙ"cda`<N_wP477C`}dfhlKI׉^Ìa)a:fi, 0gwV`SŠ,'fNz| ><&j F!AX#\r G(HDXTǡA=1f+=t43F(6Kt"3ȚGw8)>s=N i{Z뚅wWD=Y<@һJ"ly}my+1h?LTd> P<;D?"=7~<6v= 냰OAĢfEu/h{:m {ؤۢLJEm^M_lg\?lWBF~5#g>&Ɗ| dGؓx)m.Ar Y F̺J\}u\9 F6|$6Z杒ǖ'ZRE mapW`hȗ,V]EdƒwK׆Ѕ"iG^ހ_t=x\03V$$Ʃ叡V*_^cCHh7`nAsuJ}r)-)_(sW.{ &'|^G=S]ñm9",w}y/P#O /GqJ7K4R,Aa% YkS? T" m'iuC C YCd`Pa. s3%ܷ+DG48gƏ:ʼƎ<螂yA`FpkoZ('B..|wS4 2\wo^9K?QFEVGZs\N8&Q)#7y;o`דD6=mr3(UPQwoc9rwP6Gkwo-.$n26sw(($,y;y#ƕh3"/(z&*UߜIY'Uj0%|)N^Q*xgr|A weL D9sĭ ׼[{gzgXS]L5S!:EwmRHSS 'a\rbt(3jR\q1zئjoEі~| g Qc12}+`҉lxB k_JSZ(ɇxك˗/v{ J8e/A/ݾzeDJq+׀;4:7|ȧ䶟S+= L_`xtlq[zA$oeh?(45n; LՂWBh- c"~[Ae2d*1 N^Ksxt@^H|M+3qݿuڝ."*[nSZʱbl^hZtBTF'kU9b$뿗9dnb$~݆P痕[4XQ2g' C(@G8LOڞ^ g( eRL?BRk C=dC 9Вc{6x#44fܳhY(l.s^8P8$3yz?@q̻4-$Ny<|WQzиjYSĕ+(.`+vlyVp ^u@A`k> {oT[t<[(>;tv1f|#9$eGTW zW(B:ё8Nm`99\_H%J7^vI@GukͤR\P$g걼He?%6`1QOSE6~i1|l@Ymu~̗fUBznNoIu3 R]`J]+,#%p]t% =Yn+L0W3 nKH}k@x.X^ p B`8y@ád_qQGH8BqbZ:K 4>iBaNf^n;rSė wN>)FŵRpb㈷[`v6Hz_4B@`=Ĺu§ݛWh8pυ켄Dt6nOkkɂmsE9ME򈀣n)zpT"Unlٍn#U n qB@6nǁf@O5P/݅/dCfnmF @4 ʵsrm_|ɍ)[v _V~<JXXWډ]Ar Ax`T8A3zLs|2B^4k꩹y%l=Ln3Ur^#`Q?!w ?  tYAl"5둘nQ0um㸶?eml>g*osa|!^6a -HgeK+4rmYMߔ)7s@'_?L8dt!Uݟm8 <8(*2!e)plu2W3Xct LSz. G o%N VlLEy(N I<3, 繏 Wxtn,hw5=&ݙ51"esfE)0rC:{VG=oݘ̲}p$ܓYOƸ+(-nSXaF[B3}j(bG69)E~?P5[z=l;B/986~<4hђ[Ϋ{~(in}#(2fjұ+aTNayom>ɜ my 1aQZ/U90KeL3$G:њz_`e/kD?]75$fS4_bW d=yU訿T'i?:ffrbHmPU)qd#i : ]5HHoUCҖ p#(-.r;ًue$coOh >@%(lFM*W׻ޞ'j/<Ӑʼ&N0qZ nGhPx̧*[E'YU=;EM.-`4?HZ7aE-ONƒcv'#% \5GX:}( fښNa\XvxxJY:HqX5^=J [rhreW ES`7'B9-;}'W&t;>]`yܬMKĖ |fR8%R 0NJ duxYZv TcƦ^M dܥUO9xs Ax9G M0Q;nO챟& vuOO.-Å~XMV^ܚJͼVv7@XS ΤQX}T鉳#k%Bt&pqFGХX n'ձE,񱼼6*Ӭ H_Ԝ^ϧDDg{CCNzV7"ryĀU9. ۞.d@$v$X3p(KoiΙJm Q O1߯M@8\ehY>@y;bk_3 2ϩF4ۿ.RTP+lH(6ƯRcYRshF[+ Vdw2II:RDjbU ,knOLTApSHڅ Y[[; #w8RJ18L"v j󥉗l[f=jB02n֌NEfDCfۍZ,`OÆ&_cQ:/"ƤlUCnELݍ,?5 44 ԧ*7FdtSC~m)!O|PAu~gƚ<"tO o1~%;`vxfKp@8@׳H3yE󘂞VJ<~ \7 oG_T9Faq/maBFc ui8ןD5HH;A8+HXXw~͢{9IQƚ0N1A[٣Kμq[seKܭyfCoY`2؀_kT؁qܦӒs6n n8~cfe?Vľ|]XVҍHuquE16A5"nwCH4/e«(߽̀IMFŤvIuU \%odu|GD;U`0 a2{>θ=7J^OLӭ(B E7-UUCm~rtHwBx{*_avI&wnse;o-1TRxqۻcVa8|i`F )\΋`$ק30xIpdrÏ5dQPEɱ׼{N\Q;:,Ijz)* [dUjGm+]:Zd@P}m39RhqA vחmz"0ݳagT]q+ʌx SJq]\$K? 7g3W~^{DE}nR 8z ve&(z\ɉDV'+Ol5.yPD1MEڲj 툕T˿Y 8G)Yْͭf9N楂,\oԗ_R] {0_$SA,S4];]m(/l0U-;h*3aZÈz,x]{CК> [g]h]E2O2{S^" n"覣3̜uJi@<)zrgrzaU稚Z7]؀ x`PWZZ@S}Ʀnz#6LО:I@vK"4JQʮh{Gbz~4K8ŝ$+`6ɜXEÍk'-Ce\li2 Dfs&iA8ه4pB#~L Go#>MV2\[ݵ@`-P(O-:ˆUX߁^Zᙍ] ;m^IU/{uI>R:d'Ѩ6`Nhx,9uMsP`{uՠX_ytu;/"rRu]5ʕo()`0[P3)HgG*jwf1ڈ5Z{-(+u*f Ip%C~W#R5T^!$Z71j r.+QPx{twdͩ ]^Mj:hA^]~[M.K !hͩs4E?jv/9~mlY]"SR싔kybVIv3 Ҧ)~2f9}j0}G҅}-YMu񩍹lҵSzl+zXf} ǣK`Ic }'2=Fٓe6,#|xHOOx+- ̣Kҁ#h!]mb"mݎʖBk /asYՉKOS H\Ol"Q tƒ5_3- ֘/ky)[9c79!wQ?Uy UC8^bĵboV{61Y.sKk`=$b=\Иk.-;'IU_#gy7׭\(A=fWT*w gv8fg:=Ϯ.eJ@3N'/:/I[b?fmcZ@5. L.I%QE=F#4 p)@(a&W!P2&' G÷VN;{@UDB?-6ˮ,sn$8;n狀kg&|',D(svl s[-KMQ42i-И:9 Z ?&"GXJ&ˈK>(ZCCh|ԭAJpx0e+LE}#_Lˊ%(e$YP6 ;>LA %l]Jr;Xq?Ш1! Ed2W5Vp Ә`jō - jhiBk y亥1y:R.({T#}r8 եtygBؘ̓+mk.֠<-[ɯ%Xs2 hɃl K1_Yߓ.py-E^"O iW*丐)릂іf? L] ?KCAkDlEsj)ח8J&1fȾ5䝋*j",6t9@>K)-~JF !B[J6A;k$99YD1ttS"nfV=ch02݆Xmb<__. "B%N 2ueOl-{V!jpT?H$} 5gp6d=7YK>@*wu:+ܯCPOy6&NϽ&r{*6k&Efx/%KTn7H  EFzܭT8*5+lJeWRn^p)8 |[g ~?*[ni,Ҡa9ޒw3ޒ d!"ku|f}D_ Ⱪ]HYY~IA.Tծ@dzqC,Ti%; aQ(*l4jD *@%jCsgcAٌdxYGo}Wxqx{;NwE4"hEIaUJopwXn9`.(SAwg_{Z f=^E O7(' dž )DULd M HhA^ El t"PXJ\* ݰ/6oڐ݌G_=T%wwgPYa CG\6&M,X0  6 }@Uȅu{Ӱ2oZA5؇X BvS?W0=E\ r uJ D[J>ENM:1=1:4 ,|J[h\}R:Zn. SK?zM9:FKarb nڪ!1;,'pENLGֲ >ha) -MfU,F]}UP04fq6ȍ>ͱmßu8:E-FSx-c(!BST SvнѰZe=aK_5uڀ4Cë˦dG{vJac*I#_gg1۪qfDQ%l$DzȌn*ٷ\wsgs#(X ^c(2&' ס鯢"=˯ On :{M>8zͨ$*pqo 9uȵ[Ecwp!_ 0AsߤI:(jtD5f 0ܩTQ}y)kp{Lj6~8w,kLL#Կ*)徠qgK )jOĻ~v rzp:+? &ծ'v 8zq$ _}+D9V \QYUh{=9@[;XـD%^Ո'}: 4 Pe* ?PI\ΥVZGJ#`ֻذtv~ϖ-k+;1U;/a"6F.%K"EH% kl<7Nb7 Ͼkʤl*0Sm䜆үG=_A^a, \wmљPda=$܇-U W~-GdmChdFJF{EéRWCB*Z*7Ek3VfqtmYWگx7N/}v g6?aiO`&w9d5 '0Ѻd+ֹpQPf/NP7"#9\zZu%3Ǘ!y^8x2烮ZÔA+&OW`tn]禮vz|p;*hfK(R%!sϵ-czXCVnK*P^I NGlA U @~]ƕ{^@6'*sCAR9Uy]V 3K8Tk'ڄ1?Ӷ|[` b5ge%Q-/;kg@P@ :t}ߡv7aR>*6Ҷm^C7Cas)yD p [4?rJ搋 ^4|OwZ>?lS}7 Gu-O|i.̑-wg?H U/2PQyX01}q[%aCO|StSmK7<$`^7e\ver8J#|L{_gʏse NpbyB XO̸#95㳓xz [k>r?@XԙWŲ FA])hL" -_i!|y+y麸_0w9TĂ1>y0%X?Fćb" :b<Q[x Ɣ][ꁜ閂[a:W!K0کMZY3avy7VEbmx58 P& N[d]5福0p7ﰨY1WxF.) @tίX'ܡ@:)ϟCcMxJ Fv!Aц(5^7tԖ~#iɊ**J%ha_5ӓG>icioF' U8SE|Nhz1wnyzl=7o-O0XKC;ж 21Q։EB֕ sw 4To^5Qk?qg^2p|L7_auyjBnil+V3~G^Rv2XYoQoOGgs,8Nq |C%)ulj#0uXaI>(W-FPuElP 0E}"F1ޣ0t)ACT:g GeGoId]raߟyOMLSڹ[S $ ԕQ}\h{I5?ļzH$N-u+o0dݠɆ&$2Ɏ=G^5QI>*q)xj&u c'C^7M#JhAz ߄cvcәFMѲ3[Juu2[Jݓ9AEBDq@#WǠŠEtK`W1_0МZGx )W,gmy vE0DN^/d0,Y5BصwpW6/# 'xBNfx.;tel"rג6/gҊn1xrUAb~δw$RhvC-7F߇ 9̮gJ |s>?`%sz*e}!**{Zͥ@׬vH!SKU]bgy_3 ?ߔi$rsBAE`G@BUR$oy5l?/C;!:/-f/>:Qw{\`PY8~t}jg J=:h/&AeRHwT!B5~]قFs9K=~ z{خv69}Kw?CЏ%Dy ,d~HQΑ,g,7t=RpudoNY˔eL"rqz]Rf>'2z`S|qp&dN̤!auק Z3aO^ 5~: . },TQ*c)AME#,BD]Y}èYe-.V̌hY9# PTIC8T2 g? q;ȷTd;|vbٙ0-Oԭ ޳Syu<tOuv5Zfoi2D}5Qϊ{|& F5PMמ?0pj/6TD,#E@&ԅ`d_VS589G{ l}8eePgLnLI':85Jl4 h6H2Iaɗ{pFN:xT/z s~4}A V ,mtDtcng;*N4!*le3֩uP(#_f0׊G֙BR b2GhWƾmCUySr 1C'>w&?m"߹ZaҲ0Af)?ڒ4uSkߟei]!Sw W1ol7N E@aא-K@; UzZuv~5&ԑyuLh@l-$Zl1-g)^|6Ř=F_* fw-*'dxvٴNN(\CkɺiG{M5/=e* B:1l긲`٥. ;>@*L31H>;+lc:~ vhJ~V} H-w۫rRfom*'L#~wV6Ygh_Ԡ]~  %+5AF)l (| b )\i{+CQFO+1,w}SH;ee4QXp??'D0)6S5iA@8-CBZ,5+JG н.MAr1-"84=5$֙G1 7GnNqn1GIT\A]'Щ)ýʆIUțё&MBV/i;TBuvP)Ňvz"ߢba\%-r4ڴRO&K|Xї'b)m0=ɂΨLeddֿr^%TblWaVlڣ5Us^s'“V'e l6#N)Ⱦ6Kz}M>ތ8v}VoWDMRgK n ů8HĊɟBRC^UqR˰;i(5Ug@l!Q۩B`D0Evj7ܧ r6M<'7Z䦌t/fH.C؀W'65淪/{BwS|uv3YwGDk ncO ]:J4^D:78?)^'zW#.BPcYOV7:䄽㎪a M3F'^OsQL猐-W{1I>>&Mk֙l4c~7 n}QW;qlfv:'|B(hYMudL3Vf9ӎ)qJ,M'v}r8 %#z:.kB|i bq cbY}*91ߩ̩[)LtJW0VX}>hcJ%S?^ y)ɴpѻBn=#$b6vyph"T# &3 :DZ;'v"ATN9VF.j0jgRmhێN#핽;{=y$=%AR( 9 xZ` ߰/ܑ`=YKc 7eu O1Fz[3ϋ/;*~߸̈+VF|Q`1KHлm̴?#U3hܯw3Ǐq5W۔ႛf4Q:` ׬|yOp)z8MY?7F?Sc 1jl ~[ MʸD1?V$0re_KoMDЧDCW">e|G=f#J9[t7C䩜Tq>t\S g/ZN@CiBHrNjc8}펰upV ; ::+OYZ;0,T5f2y C2Gzvey30fHe:??xlG󛤔o\?hHƏU#;#t7/nrP>Oދ>(LX_Q7^omL<)tn)._ xTh#+p`+J٣@s"'Z?Z]nfl#fP|H8!(+{p/׽n-vM#H֬TNeƨNOvg:]v-KfupR%BA9uԓ>:vRrV$dsHsnya:w'%vYo@B"{;dgzHW +Ti(:i% aat;> "4TS5+sj 8z'|e5jo+$^xkoܛNp M PXUd>/n2/(6LQ#J8>{5vf@_Ӂc[vn}yTǖ'?I:vQ!_kK?aBIU[KȝOR4|AbqZZ2D.*[UʬG񍎫CN1aZfϩڼ9e%NW|uQ#`e@Jq)E ;.SGCJߊU}uTy¯<𡎂>eHq+KYaBl4RZM 9%l}FsŅf!U~DZuJSk |AMR}Sk_Na6+b|3/VV2.x¿ϾRkw ̕fD͚ƞ<ĜL2I,<ѝ/,x)rNpv޻.D[FDD'g y^e9'8롎XIL\PKْ+I-LxũBDIyٺhIO=\:(xȩod4i~L#Á]%}g,QXJ6p#+,Y]1ewћ`E] Ur!;1ּ0tg&h,J9pٞ84'^wNQ ԒfW0mx2B+: R| QA+rݾqgֱ65dOzBim?z>E<_}~D\1M1QoCy( 9sLJxi x'M(YE("/8rX!E?rB-2un\R'f74 *JBbT?Eiy]\ 㧘*9Ӥx(kAt׿|Jb32G  &;avs'/+ぷz-Z'e8;3'"}EzEde @Q NhwQg=7;ten[_2'_Bl|IX!Uی [\@Vnם2@/U6WWY|O[ 6]Jwsĝ ۊ#L/.Yl.WP-F\BL-iݘGɐH>x;H2*ϻ ;@WUВdL%dhrc;]aF' hYLʹH(4}Qt^L +c' _lq4+ p68~G.H~þv9QV8uHjm Mt۝"RA% %"i&މnو} #Y(VǟʉVye$mǣ<==nJjܻp0!͇LwDWjX^x \W^8}jې447ܳ*Hujˤ8!S3V~.DzW!VUN61Qv6QE*cƪ mˆY]0 (P,R?9 { Oi%~"M{8 X)rbyzxnx ]٧l"N!&@TXB!&|h!#X̥9#tLWIkݽn(*WQ~+S~h 8C.!~1 I*˦m0X/evTVԝ!lt<8x ft92% D{-$Hy ^IF *GCޗKzGMP+%(l%7^+e=rt{9IfϷ:2q@ZjdXQ5 -:B o!iЦC79tP}wݱ~vGؔ" S6&h 5Uku,5O`+\RW,^&5[.gq 慉 QS-<|\Qd~^ok/Z#瀌F6S@CX"ٰ?Xu-X"V7Zt=!bMtNWe19o'rDC74NoHMyU+ƒ{Ȑ(rBq/:np LCVZ<{}dZh&3P&z03K+.HdZ-gϹ-lUx" HIn󰵻^V<%ۧ8k|hxj>#e4.u?d b\J#x*zm⢺=;dbi{eVx0p*])]GCTD=Vsќ/8+O`W F>djx.-צ㼡3*Is>w Ci}USy'.$xJ!p@^.ЁjR "(l5i9'SW +rezW׭/QKv}Ynfi?7D`aY}\/0Q'ƾ3qj<4Ϳ3;Ԃf=h`+$2Y"_E>; @@,y={,:Ʉ ·_0')1I`G>&YYNDBG;Һ1 B?7粓tD_9Cl!4n.5$\g1as{[!G{3^czǦ%p  ;Epέ>s{KͯGs2^-]l$` yŭ%:1J udvg@ELfRi܅|3 `dm{ū%KseS_.#єD8~ApP" )c+IH3$K])c33 iXF<>JKd눏QnXU҃c՝)}Kѯ^_ K~k3 ПI:%t;Hͷ5ˆú¸~Lwk h"gz?@+}ST)[(z6r `̑b"xj/nܐߢq)×#S>d}(# ֠sVbuAËG#;uDb| ߎº-<^'4hGfA;wNkH'ɲw8k61lwF6?˲* h3CcIE%Jx^Qo4Fv[ZO'<0 1=1;CLks߸J[սKl@3>čKc :'WsO&W:#4"JsFbsĊT5skh}5Z --L~ WQ f*]|{cj2@K[jEA]^y'uԛG(.[_]Kǧ~8=xQךҒE147JG G Udږn콩I_p)-.`u+0 @ y5 Xڪ<{H-:{/.8~xOwvj >WWz"~>ѴZ~~ ۼӂm&,kA$BEWiçW6-G 19O/~T3M%)(Vt$X,ϮC<\V/7s5F [9>3dk p{glݟ458ƃԑ33OhdCGV;" P{bTk L:ܛ_2`0BiYUzPq`Q'O }MŹLs|~, &Y Guye*q{wG̅}UXv^l !};7~ש6]}I]O ef)c:Tp}BVxzJv׉s,p:yG\HcLyR\ص2V%$Ug+$^}ZI WB~`8@? w4Uٛ)MU NU@+P{t\pPZ2eU/uQT[=Җb8 g7W߁k/ϻCɆԡRgW'\q~ L0yZ,m=kDLA(9zP4_..+.]=m&U!mȖB=fŠĪmRnw'hJ[ x㵡pvI+g 4|eG<ddR܎h^}Y(C(l k;TswOrn ( g qou3cQζ10Sֵ/p |'` Ey w~nccfoۢvHEjŝ=Ut|Ǐ8mxt#ۭ\7Vii-PNrM\kyV/ƆLMƽy6$%ؚ~w,qG;4 >]9TyqN ߁Z2 RiL(?!q'x,SWPI\|c了WLR^^^IR @P<:(W:m!0Imє^=-@7A2]߆Ki& UՋimsn] ;ӝӠB@QDx[WƵO<(q=\0gDrJUϿrIg{|JDQ {s;p˾8/xi5F4_!_ٚ ,CC3K`4\;QQ/:,7etP/.aPa?-fq$[|zbƾY=EjT%.@a2ԓWrI P:RA4n!p.d|8:٪dnV3H1>P ]S+A~|1rZughϣEClꀃY@<(qݴ/RGb: kx<[>i}-5I8\~į:b l՝%`rmg`em9ds˥W8gPYNzGB[G>$%fwFDiejk>=IeBToK_{3n601-/"ek)_F֟S.:^$bkG. ikC} GjAS֨CuIP LIu li U+["S {8C q. qO!ҟAwx[EH׵eL_ۆ0rR‹uO*7Kxu~\8!bI[7l]]1G /W.m+|03"!_,;N\u'~δ ? Ohխ%Ğwޝ7ƍ+icɺ⣄Vm6+. !auᕜ/mXcMēOW1.oLӺAJ'WEqH_ofP EY)*Y*v{FIj *&(s0=4 S53(Ȋm UpHש)?Dce" ?,H?4S GYc]?NފsM:> #tX\{G;kP689$̄y fGNϹ~k<ˀi>%sh.-b!(9FLS[IrXFaіhJZGp]/ U;(yHpaAOͻ_4@o$f|+N,;Ghu/Ґ^Ks/nQ| Jb= m K[rg[H)뛨7?M5*A;=3u,iGJBz]ĥ!rQ5mH@Y0uf( T6eCC"52*p?*6#Y ̑Vm *+d 1I!I7}^(s1 ׵ V2aJ..igr:e?@_+܄J;ymc?#XrFc9ohHZ` P&ÞhI.S4r҆0$ :\54'ҳfݠ8M3)rNպl7BZ QglZ:>Hq7,?K?/&F& qr%+FKfHB(5QuSzmPpY|f#(Szqp.*R]]Hh+u]g/BU\_8U_I4}GfwbPۗtjuIKɼ͋Rubߺ6HK&^d+FzΖcyE䣑EW,Z1jve:rf囏w j^sN8Z.yr0̊ 9od-~yi:dvq{ ТT{z)]+i 'CcaeXtGs5~31,͈Sq ([$NWhiU}>dV̛k '^Ļ,>XeO 1?j߽~N]R) V,/%gSI ah)o7,!\w?A8nag0z,mǂL@ .6 `؃&'"2pD6v?\tVG8TmOӨAOmX(~-"07vge.@[DGHLC6`%BzOIAL:@NξbS|[}2%\ `s*Uq+9O踌-$@dty?% .Qj,:v1TεOǥ5m\Jѵ|;]3qY){fq90IHk;aVV ˏ4qIWR+X.Rdɵ/Z H/Ƣk|vpWK_Ѝ=T2UqRQ?FY=iLT(Mq,Hoh>l ibR-<#޽VG`}%ABjjI]ԣ^|bܵ]I !3+4xЏ-6i@s>nՎF$y97,te^oLOKeFT3(vٻK2K3HB^.Dۏ*zw &0!ߋyIpMѲX}-ۃ&\ Cɶ&uH/#bݼafD\>1'98t1P+0><1y[j,ʘ<-3qyq9F [2CDזqb*0mhTz'G6zf34$UNم&;HDJ q0SIQo~R@B@ kUy$ka2޴2"W0m1_6R/t?C^2 םuqKӍ~t ýj.\(b)Gvvi^g!^U)CVĚpYHfHl`ݱ.[9^:P5@XPݽF嘻Ynv}!(܌$::ͳMƠs\Ic/z r|qYӪoHe<:펣,r6m'(|<*T{ߏ{P4˥)֡?"j6xR>YoK)\Yu#+{D4wU!L}M`Ouwgx& hlZj(y}ʙ}~Qנs>ՈfHڑA>P} 4.HRbA&uA116j1yĈY5zB F{NW ߆+#nq}k-Ppw?T t*sq:Xjp:HJz +?HbUygVv;P)kpjĞZ nop(}.s?yPR$Mūb^@R`Uܤ m,Rx VQ'fRJ^AB %FXB?b·y#ZwxWn_׺=)ZFsm9V'SL7myi YFݚZf֐D>UK^b Y;lx2kأN&B3n l쵁9x~dd({7'GӣBJE)7c9s۹k{\U4HRD JHzIGo[W꺳F4] Q^U/um_λtV(\gjq`ָH7Ihtgmu",mB~""IKW1W* (>`)l.T7< Kj=6f`;v~;O-k񋯦@1ְ>+]?JN^LCGk aȝm z2dc3B>skO5V<8pk;Nby0*aN%u\;*#O:pTE5l]7$.P"O%CCR">E~ֻžjf:*J}9nSHM`po^\wPURH _$iThFȯ^LHqU[/RYr,Ĭ{y:cA|K3E3,MET׼aW7| O֮8+=ᄼg7Y[|Tgc&ldˈ8*N#'Ƚ ((Ԡ))g:(?U`Yѧr4.6j(S2ȱ̠x?Ӧ"b=ץi9s@4] {j#>rLfez3ˢhѴa _{ uvʁIE(:A7Nk0VPE.O.zFyq794Et-OP7f<|3yQeI!tf gaзdt 'ul @ ¶mV~,^_L=vh7, Ch(?ziSCSS|- .%K#)V}aXV0#?CI (/%D7W3{N]d\~.`׏umǗ<[ 'ojW7fsk.J^%~5A,n^tQ`[ZO;4떿aXOs*X;湏-tGS /~Q L(p&fL9D~m*U3ŸXeļ̃0 \^aܢy2ciഞ s P޼qv2{aLK_eEAD2Nca5J=GŎ]fVI55 idICz>(Fb5-Whx_vW3lp|9O ;󝗳0G&E-t;,2_ƨ"s[੝0:9҆A\ ds.vhd%! cH+X~FnN=ß 3"Ft02 z+W@bK4 rj"ֲWYu (Jcm W Re'C61JbdqG_v[BϾeOeTf>^-lbK/j\Ϲj5x1%,/nUIvk)߂v+^e)}'C<Qd{_2c# ?KY֩~Lؽi}>?)=^e#V2i>]-bD/N(/*.?tǠPXCRW66kwດQY[o٬V]J#蠄 B30no"T}7| KL$Lk"QPȚ>AQK~+Eu)R6sY\%՝ 虊VvN=JI%(S`~/(u貌 Bx] r>suz`ֽiĆWl!V Sƞ Ojoa~ h.L싷K3Q௘]TC@P/r\Jqq@[\c$e}@4K0gHŒmLqm;څd OW v 6cC(ĸ:PB7>#Q)-kkk5!\lď J)ź3tUptؓ.I h5YzC݉L}ÝEIzQ3_ϵǔ v ؑ.r@~\hfWr(iwg2B]0GIhyiSlY|[$%ͳD95;5(F(ejWwC8T7i!rf+)mhl5yT/fdrWi-a=Ƅ#z6o1U:n ĸU%ޣL  s_+-b_p[pG4C$}_V 7-5*dr㈄7Elu;n:˻"4aTOe`w"Oɧހ=E=_i\пt(hΥf.Qfn͌ A%j) XeRkB}z6tZ gqD12AxR)*xijp^Fw3`_@,_h̋%R3 '8OE.=2*vBI,UlAWG׹0Jl<, l]EMZΈVÙV&dH~GS DYϛ_g7aᇛexw&?pr&ŵ}ԣgALb?)'Z6o7@;uwȬ}R ]RIyaϖTfCAϹKG|pǡ1,-;ZKQ~qѵdyz+ =[c33vk@2PRR(x& 4͢Ybv%Aq|(24wVP5̟, g~*@3F%QߜWQt/gpػJM0;Z?82/tulyq kDH푖I' I,WlHR*.5^=A2qpBP ϔО1l]v<"W-F!зe&naI1 VY7/fo-t]5/7}ȅ?5 BlN;6G3"Yw7#_s. OB ?͊E5~S4QDMDcFy]Yޗ=nfήٚAh7F%2 pNc(`uҿ@ät}}._*WU <|b,&4"DĒ6iI*z%Rg;r&)cSS薿7Xߠ-ѩ X_ݜ=)9Zؚ k㴇fyMV -?hg=;Q.aFih,nOpԆlu=qFPd/Bu -% \-LoÔ{(q/pXtx{ҔjorIx3@HM)T+IJr9 ^|dpn\&YX0ă~G[?32g!+;Fl6]#[HE:w)crg}ي25Lj*}ZZԵQ}^qK,TwYb\׌}+'o&}0KP #c'5 'WZpfzX:Y%̪TV_PLl KV+~R~S'CgL}_t罚W3>Ɩ+V2+? *J bmIQj UC8xٕ)xBɅ_-_Y A5$4l}0f%=U ջLRGG')Oc)HDZB(j@̶ՕdQQvjWb:AαCF׫_]QlHKi{HWY`ӵy>,;1J ;ObMkpΐؿfBʱ9o'7^=u)6zSǫ򓺉%٩ .`2d\4˻W䆳7ƕͤaܷ2v\Iw5>S는b)sήEc,nJL\kcg^#O<."~Ugt*(ڢ )9mo0}y,ZQ-6ZPiO)r|$J*q8_-fi=eS7{C6U=Xۈ $ǮF%Iz#/@=g_QGV?؍A-d̜*s܅|E9kmZӴ .@:H ";pXdgx-c>6вp!+H:Ojo[xێBթoW 'ؕ"N-qɝ"ga*E>S fo3 4?.cR@R6[G;aF&DWj4Xlv'x~?-d}`ͭeގ̛uh@&R&0oy ^i(--HZHB9\W+dO' ɑy~hW}İ \֗CJ%c#"L/*; ф\"izvFM xTFGbWmAyS?]s x@]7 nrM,Mђ@LAfSݏ,Ue]y|'iZ0nwt+vE])ιVvsX1os]z_^5*O+Z0zh82TUfW}?Ă[ǜO5+>ya#BPo1w<:F ֑uj39j~ ^ kmS4̬*TU1*u.;'6&Fդ}`;ɭ;q{0Z\+D$:{%.9^g mH*-^!IZ_Ğ ;spIO %'rKV9$MsFދs3ɌF)^J @*;rˀ@dTҨ8*ʯwdn_ix3* a<-d-(;\)X~P鰌:G0i0>unKgm 2\o HU,c{~[fl:Эwh__y :r3Gb5t8TbxM$\FhCE#2JԺ'L^Cd1#a]~Q[&P(qxu7}ȈMYnhP-(,?Wɜ3d1`dG_0Ky:s$E;@O%ɻcP9C0bF/9T Ei(jt.@2|M0ڟP48]eoȒdaU\R]+Q6Mjw6޵2l[w\*9cSiTPzgBIllY"``,w|ȓ'HmxVn )C# M/Tpu6ᄡ>% "B]@tga? E[{G`1sFPBiSs* QqVKiEHrM]FS@ PiÈDɋn00E2>xpOww8Yo1w cd<s%@8os1TrImj7C:VKA# p3s,ҫI%q6[}bɱ=dt.ë4 ^7;( R[^~] J/r2y'PV?;z Db9fAĮQ$Kk귦QY3{z >(RSX9]g(G* /<q: @F+`@T6>ke*h6(J28wEIJ|隣x,DՇ^U.z8B9 ( :Iy7%t,;)6|,CɶOK":&e5ݓ 6\DQSN]sFUݲ+pM&#U~?5BtZRjxJQ3wߥV;xHt[Lm޽ǜܻTlU KR`-v2 .T06oR#f?DDi6.-)!mk<ͽCD=-$=4 ̈́I ՍS6"E dm ;jK QNZeޤy=wwB N8ѺewsSBvĎL3/doѳzVxlAΝ1nPM,#4fLu/~ IjQrq*8Buk̘CIy^3E,ȀݺfFOzUu=vIVpO>Il{eYz8^q;܉< R_x玨h< :ipOB;zj/v3t]n,n[ ]Ok[88[Z)`E㗰)z߉Wr%F/?]2O YielT] D-\^S#l֧ mqh(2,2f:w3]J2Oފ T֒Nz/&=X:?)S5J!ȥ4AS^t.x8f=۴"ú~[PR nQ8%b y-knm/V;(Odu"ïܓ6%` &`XL5KJy 7WdJRrC~~Kxf{,(bC=y;h }+ᕱ\z!?aBm^HvIMζLuſ4Cc"6'Ksզf>w1~p0]Eva +Y/pU pSrsY}IGjQW.ۏ|Z{YA,AiqGXbGs8#f:'b#Mfδ!j~r+M.Q|)I-$=&ԫlOse* lR( ;غRj$H [6%SyϊRZmLaGfHs,$YϞA޳tO٘p ټ|M`T:y3Pŗ8Q|Et*_'UXK5wGRS~LFpvt_^M3ސ~EwI+tX,XQRqoluoM= \D٥N%,o* vY*I`FtP>1*շφ~o~6&Mv/皮 ly裀JF(;\\u{PĭF|su'ȯm%[$<5m0(^98}{VmK*bH0q#$FІǤn*CJ+$IFXrM ؟տ?Ljt̩'2_c&lڪXNvL}j%p2‡ fsʖP=`bk)rdG/wfWkMz8> )֜8q_^EJt0$5hË\jdGwbFI߳s’;3e1);[ fsfp0rJH~\$跅ͅ2)|l y72SB I) '@#5s;R4,5 ,Dz`4]juħ,4`2ȣ}e&5Sژ&|@yk݃n Ju`"V̓m_*~B(-+{i >㪲rBj S Φj l^a'%e*_&Y{0`'AXMV2 ͆4?c0 ;K֮<]jY*tR5GTP-t 1)s)T~I^竒Z@jp@Q}iSxp !:xI* #Vۆ] GtЧvVVg CH)@-$_%p`Qi͎!!I+/]n LAYN|MyW4Ճg R$2ίx/Hw&m 4bg^QT9 q9dG|Ǧ9 V54a"ז#f'\{/>ܒd^ͼн t 48PC @ÕH<.6| ËcI1\c{K \J#Ik!KZKl'vI^<Tڀv[Uw b$*q3 ,b@ |R¼'SBDeB !PTwCA86O#@eXY9tw[[~1>HA\ ?`S˓?_wNو|3?R:qďMaJwk_wQ.֝q+]7aX hR#'{?&_m%kĬ] /% p9N5+5hZLN7lb•(/*Tn4ErvUޏ~-4oo7"\-ogY[ct,'Λ$)x*؁S>\vMK:Ƀ&3T[+m68"|{uFAtSHk YsHzُXr0=Qy!߰ Crܸcr2 7>J R9JC./OQtH6[JhDZ)}+}C=M Gr9P3p̶2CF8%L׹mop9B!#Ӡoxm|F+m[8} 2g*6m6Dg|pz90 6=m;Iv,]KI*1dYyxH.xsuW:5WG>yZ{P>T~{ D( Q\w}>RCUgՏ>QAvfHf}ϊ]lƪ 2e(:a:=vz6~MF~6\7]> `icbe,VWZ8dD]EX@']}v.J%ֆb6tKٽc\Û0\5ϔn\P6Ge®sրM>[q$hV* P3;G[DRP'-׺|/Iu81kV}Jo7./S8Zhu=0DД&kE' I_˔; .BHӅ aۆ {},8&?sU]\ IBr) By1Hi[=LL! ψA+i7zC) $9H(r;\mzd͛=8@߼7ғ$l5);B.~e#k#`"K`+PtTIZ3G rJlIXSJ2eibxd[?#*F6ϋ]L~+h6/Θg@1.HϫPxegPa'Jyu󣪵b]IN7-: hl#Y(b AW dQLc7^%.8<ߖ΂3Uw_$N\D,M0|,O5e3u};d?ʇYO_H|h(Ack9;M+d+U[0Öj̢cXr;hZ%B!ϜՇbF*~Isy[xg[L;e"M7cHr!um[ZA2v&mwD O@pea_-bt"&T!;m@ZX)jo?S! s4|WU772xwVwFW8B:ir(Nvl(*]Լ~߳,2h4mp"9o>T5wєݕ0tQ*Q" ;~`XT@M~< =º׏=[6l;0gn_^\_p5TfV;!0IPD*H&yoA joOe][~DFBw=ndxñcI*LHfThׁl~-\od?Rk "}<_ 19ܳD=ZD ۠=ty*r="EyW09|T}~9}JE9-EںlwO.Wna6=+]y."4j"tpnِ뢔>uJC`S 3U+(}H?g[.%֯G@ZJM4WR'Yby>0V}J!a=C1~$xM@5oEr9CLwzFf8*u)gx?[׆'9.t?yWm$ Hby)Ln1=-)#wUQЩz!\Ԁzzgy?jiĀ:)G;"6!9a8'3_䯍hxOf¤:m}JVDFRW ߜ3y١9SUQ(86@לHmyb-|YԯM[F!__{t̡l w_1}%Ҝv mv6`}^43G@9rF⪐XT."'Y6mIAv(xjbzs`ϡLjZ {k9>\>H 5-$3ۡw&H~`S+[qM< . w}VZ(0BeZUAAPޓv}-F 6Q? BW-bo[:oHB9t@W܆u&XvE/]F.EB`˶erg}'/;aڈ }e\V!L*AOgW?')4~xemB+\H+_y6$ڠOӏC>vP^C>%Hࠖ%?f2}ukC-2 xS*!m u& E7ӿ pEp, hP~a6b/ϸŚ/' <|N0n V3+~`GYTʴA['*W6vYslob[QqdBOQ7?eC2 4$%0VnWe-Fc8>EYB6fR# p,HrRw51j]=!^re"}u"gC.v"†?ȹhk@sjVS-{S7>FʿCKUc|ʊNz=ԡ| i#OwQongK{T+S[#7""L4DmxvS0Sb%iRngA@`ܓFI UL6Ǵw[]:l1k|Uy~5stvBH[zLǰxx3Aa=ޛ6=^nE3otDOQL,ӊԓFb;f>R:W+ Cj}Y;@w.dT- >]3S(YTn$&|Ka1/b&e`U$+8H@+`I1mKSy lk i?7}@ nKwV&LƘ lNj[4Zu'͐C83j%#cVb,)㤖 < pn)akx1 9-fZ/NabzyffQK]3AӞƣZѿuf&Oݮ?~>}jhFz*ii0n%eמE Qzike )/}s\bpDab9+-`  6Εbu/PrGPJKg%XE_,5؏k߈~%3QX;T_ƴ&ϑu_tKaSZv!٨!~FHX#ƎXui'(aimѲNNzQ D>-X^96r &y* \3 {/rwVՉq\7^Ar㩣YF\@Ȧަ?,XQpH~Z =|r~S7^+DNH'4y`"s#!^G;/ TkH6 JxAǟ3KQA|`/Vd j>)6!O6S]]#[//xa5I./^7,L.3cA8i=n#ہ~:W$<A;vN#Z95uojOwh!3_՛z1UHXA>fnMroNBfʘgfJhwzu2綰a^^љhcJsU-пå7S\E~-z&|UEL|p!C[KǽLóI(vU6B?%a#U롧jԓd[k"RmC3D,H^_G-;i[0$j,aWg-Lu45jO5ʷL,DQh(ܷ #:!ay-Z$ hky<4ZDkCYY.䏽0!oך>00%r~ SPU2w5{-T fQH!&E`Ѩ⬠9?Lh6y ^ dn:QN_BS]>61 7bUgE e|7`.'Ibe7xltR0L/ keQ2$Xw<NQwLaI>kxui5urAvMswy fC#xCQԥ@zIJU5'DBHޞh`KĆŇPRZ -qb Sw8(坢am(0OB~rR*ܠVsݎj+c zX MRX"+l$㋌"JBJF |tt zb[-a@JJ[}nl-զ0Wd |)g >Cg!*)kX֊{`J9v_4;zb|dЦIYǾ !!rHT/#-ґ?vD#5o3"eN5CqQ ɺ|c^!Ab ]XYe~ 4fgߏNɆ vǾE98x44ܣ@oX_.v*_Q S`̖-s0Y r0HOJGץ!8s3f5"J,4[WSj4TDЏtkݑ5Z vgIN r#MpM3mǦy6X)P<ߚ,-tz_䘪񉊺ZLK ,:}pڌ3\E428ڑ?ֲ/85V"_&z>$eFr462|_!'s.C= 0xwZ*]X>ZzЎ~ t$,T\ }) L3;"N]KOѡ)o>t m"P`Nf͹Vw-Y?Frzڼ\.$!w{aNPy<(+Pxfb% 0S-zuϔS?ԕ7y%p0o\6C7t][" YX&XJu0LQ@~/հTCZ$.1e󰃋ƻ=kXH4 بʿW4hB! 3tzU.Ujj\OfS35V4|"&rSpd/ھ5l1m w̐Fg Xb*Љiᘢz G"ĜR(m>k悎ji8tO "Гs-JL5 J=iiهDZdÐa(ɫLpv7a*Ca|΂*r>@|DC6` Ũs'Q! 7̱Rfgj>%ۉY8#.>x~t GnsPZ j"أ9],&yռK],Y9{l41XdY&a~4 -#%?Erg3 Do7Ǧa&?U[щ g&QnB!9z0ph黾99{|R+KJ3"Xtx{F>IYc0a\ISΜ"PtԮ ơB?#eWɭ=*8pd{FL)%+; @h/I>dJ@T NB$T o5UO sÓVzu;\V8e1-o.U^)e:'V8 տUf; nם9X$ K~Uth^΀TP~gX-!I=JS nX`|??HODm_x$6)6f'f=.jaa;ԥIzΰ߾RhMOHm@7e"/SkXAq.#X(aj1a'twoW 9s=l @ K8y8g~W5o7s =r%f@΁pF>vszGJ&)kX\_|3Ek ?3=%@#az0*ZFT>E쒰h9)^5I$Oė*M os f_~Shّx"*s5"F6G jTu9Bɀ0]:IKiчE 8| Y}O>ah d|ڲ 0iT[غ?>hv}ӺY]/-) \6~whDc')۷ Dٗ6ˡL|Jvr @GR;4-aUr6l G5-TE#}J9>fz rz/mRJ0hŲgjVA.g 8չ'%y@\nbL$pwNxϓ gK`K/.8%V1֍/a4ua;Pd\hh oP& g(DrHbպU6ۧ(k]/ %' _rHmva8̩ሼOԎ E2FHvbKZuuy_+c^IMU;Vx0GǶ|c$s{9Sմ)C,S 8mUkb[JY܍Q{1wvN3Dp~լ7n]n ߧM+}^XbCbvʊ,r/֠*E6Б|Dw@FCF,|w MEQ\xP^vڡ7 `ͷ?@)ۙ"1!y!.[]inHSpҫWhs&| b:j 7DwuPXKs-dDQXJAk- 0MFztԡZS4,D|E_ly.{rU[ގ>,/: Il$dPc~FZB[W?3xm$JȤpm1".>6QOܢddo le=mԻ+ #k쒥CZ-x g[ݟY:)v5x+]׻ZY&Be`yjpH֊vi#Klaގ7Sk`Ui(]~-wX"I"ӁWNbD=ݬ^}zCcdΞ-Ld0Heaj*`A Re\ffǬWv\iހ,_!&mwckG/`+Ry<b^jjCՠ愁f'DFc-K&/}4a4w&p:$)"i?,^Zԝ zDKWFY5JX@>ȧL| F>ZoQõqҹ0i](ij/q*lHd4/-x4W8i6фRRWW-[g*+@l'  $Б4zs[ߧGOPo t$8~C ^䑫CfȕMA{>5j̎ڱ.;Y3I>)߄uC?qep1Ih Un j]_zp7*MeEGkU*?TUYtvHEd/٫a.CөJ= S{!g\]%cZL"TM3h}| DI! bFź{s!+X8ΐ<_tGͥ:/X>}ʹ 7$$:Mbs1ZP*tm}dz1Pe]7=ۄhn a~9M:X%5Z=taQr7xqr_iH5h^bW8Tt(PBiv 61q1mf%#Г]fT `0ĺR|\#91n"fԇ4$)A-j} VF7?q" 2 Q=P :v<:Me˝:?[⋻9ҚsU)7_G科Ad7L]8 qs&ɲ-:~F:q1Wst`UsJ"=D-Jb_3ϥ:fUvjbH+YT>k*7ݠ-=#,~X=ڄSB4|%;g}ɟM)N.떣|_ÒW9Sj6]+ Q5oв]RݐE㰚˩fZ-m-vhNmq}_¢)&h_hn͢}@E(ߪ,B mUN?gܒKfo¡ޚfv_E7_hI]zi" 0yiO/`NX,n\P@7Ku-Oಡ0`- sD/MշxlmW8e:ʧI(S MNߐ-<%`1F*:Hf@}F(69U-4Mm1W}7X(p(c\n1dKF\tl+їsdཱུn NJ*kQM"sakqJn7⮧"֣h#Nңk%?j/,7 qz_|19B3Yo!P/*_ 9mcˁ>mj7OISm<`+ȏr*}>.]l̓II{lD=hPr6OC>k3E\hE `LOix@[>qZ`YK(ᏖKHdd+U*@0^QbD[qO\qL(ԝ(۝D~iYXJWDLH0 $/ ɽ q6Eku+ӗp|* Gz KШ NH؇;lr6THnآݶAI67KS%bY:ҕXt)l@ԜՎ7Ih~q',ju|scmbao};=Sq`NF wi[P}6.j2E~ )92?;\XCx)e57VPؒ*#9/ƍq>9_@C%u^4$~ү$-C+ؑG-1.JT\WvVbp6.~#CHE>҉;U͔k>G <1@Ҁ)'N9d>OPpua2:S[ . 5 K |QV\ m/ <)-ǧC[o:{N0Ii_o %QMQQj ޅ@Oy@ExKhDvC`tm]gP]̱zn-݁<'@^H@zHUk1BWί5֛wpUP>b Q)GY?!@R*OV%}N!"pMT$wK/17Ƅ$Vы9"s2 %kÊDo}cpo(>3+u3s:SMi"%g8YGPἫPZ>Fo;\~p9-(PUWfUb\{Ǻ+DṛbsX"C 7\m ,7cpXޒqEo: gzP?.2cZr6H ȟ3Bʪw&r[4d`*WP>1ԟ@;^p}_8ruvСQ& PυuXM)Mq;=fσd ~5 ׮rvp/\ !E>Qacm%sIګ]Crx E ^&3b.1H k1>FAHAR B@`pY[)'[joj08H2*SPB#gN<[?V:>8)m_Ć |xAxNk\ k}X<:,t#ߓʊ2%b7 $ ^C_eeu([i˧I Uu /  y8I*Q;NN-@)RBI3(:Sp+S${SL:P`ed W=jyb|&FFn.1Ѕ f>Y:Ϻʱ9cR.<1ˈ);{za }=Ar Ԟ%f؀d8/S.FBڼImv??AbyucqpLG8Qec&A1/p(!Hf9gʙpEhBkzވp8A'RK- &H؈r@y[L4Ozכ9BsŬa3"j<O} ~=WDЫl̛hyggQ,cf[p=n7IP+ζw%I**Ut8+Z]^gE/z"D,52i(W|П{;Q ]7OPh#bV` 辔wUtvhCVv*0#O-Q>7b67%U0aSR+dW\X\^Ǔ_ɯp&[ct{mÓ*l_;5<-^,8 JlRB@=@Kc7آͺvx,_;̤wwvN) G^T6njȴaVKur*RX&\ ê@`Ȍ1^PUf?Rby$!=3w<GN[Ny&D&yOE3?| ũ.79 @LJ 6A_L 5< T䐖(/@x";7'~覀Rv _<Ct+a K|^}/>u#QVeUnq^stUVLIou~n7Pe,ɏyw@xj}PȇcUP7<&T80^N!/j?IO&(bWx,sh^ N@G͉/ {Nco<`Fe9θcCOy.1hg=rsoT$[Wo׽lZo(ü&#UV|r#3.? +8?$Ԩ O @πu?̧R$}׃sCb%BВmk:QBJHbT/VR1;IRӄ wm`_ FC9& Tlq甸.1 N3+jɣK L@.(/P'&G\K2| +`PpؙlU6N)e j4g^fAA\q^pq˩*9X?Tj(>ǘ^IT`*d4ROm PQR ֨  ;d}{Yk!07YtXqڐ N'c0܎YJAC7K عTuUrפv ]`@E߹aeɴ4+ٝ&0~^U+.Wu@~Zٯkzp08~믷AX ~?潫ThI?(xH>ĥR O} "Icw?\ss|0{ﰮ ${{UojJ:x~ZrA9(ٰWp^^mq͠:RB_;qtC-ƭ{Q g+;cۖU`Lyr>D❵q>VfKQ֡H^A͂iW2;g~_B(4$CqYNP_Y| 4(3g !t4pMs)4H ٙOHK0СH+0@MQ|OZpJTZz=_B^iP_Pa:TLJC>A(-Ǎ,nҌb=m*]E yړю ;%. CD3OvCʄ{s^724r)9qnM"`2;wfcMz`U+HLePZ@^:PlUU_og^Ϗk"yٓ7e6PKl+34ٹPI5%!9e߷Y zh:Jg6S~ "(%817L?7Mb̠, /G{F?cU, m-0j^Iv;ETUyQ# F1BTl(4j_&?p"eaȟCc`,۠Ga^7Q0Pak9rӜSr Q1у#aQeXoИbبC659(2S ;p8!]+5,>U8'݃O {$=7OѓVm~iFd(b$ kw婨֮Yg5Y9YД߁"K.|MU^\@ڌ]^gfe<|7H&;Az7R;~cY =oMU:G[( S2 5ŠpI෈boҩSC< v]k$ %9H xmNzs !L&KyBqN_=KbB0uR2Ȱ|_5tE$_lWlkiqR &x2X%q=J'4.ȵ\@ w`^ZT:Z{P2[e7Vn$%L6U_ԚOflF𧟆ASb'byiBZmdJ$_? VLE}g8Y[ͷ_7N^4Py޽ovR1ny#h<.//㽬X\: ^IKoŘ݀EJk. 4H&]}QŋR5vYha\V݌\%AkS-n<_'mQ3w,yx7Q6-vLIU!Փh<8p!}ғ HEߊ\ODKPz$Ƨu%qo%ʆ]"Dȃs&=6m]h>!" h^l|$ ztFYA$<7^OĻNx'jϪO`I▗5 ifN)jQZT}zџmK84}#KK Yc$ A5IoCN5O}wT\ê0rG) iu3@oe,?A5,/Rr&Ԩ8wVx}ZRxdDI t+GU@} ;ODꆋ UO27 kA+zؗ2 B*[wv1nCk?Ȟ AQn2GS͚l%"i,~bǐLF"xb7-j`\7MOÎlLk~]do$nǖ31\v_!W;<s7mqo0?uqI5BXU<]+ dԂ=|}TpQՑVBPOp4n~@{ 8#b%Pp%LJ .t;^s8N j S3(MgDuAX Lѻ2mEcLq$|?~B]=k m#iKX y$` t9E2.xEgPQFb2 G(Y qhҴ9-I?<@su#Y-7֑z7^6WY7h5Gw\ۉCH.& *PYT6T-~G1YDž3uHt<4#x<0/hR80FMrnUT_jzP69w~/=O{!Aac9\7Fi/#bq +[[{wg)P̳y}fƀ?]ooHq^,,)7 2t<Pu9d6 ihjHc5Xwմ xL#LCG"`곩sL0RUʢ׉6[.+Z_I݁ņۦSމ&#8dne7"T)Ľ({Zy]Ƣ' 5 OwpMWJ[z % rكjHJ7Uw1[f?ϖ{!RV44z8%I x~=4q LO,h)/Lm-Pȁ;XbGGF.{;b 7>d=yz{w]0MT&jؽbA q6S`y0 KpCe_ e9%Vg1F>^ ¨~WLWMOo[HJŞ9i i?򣬥IF􇂽p%2$nn]_R' ;E}[ce18/ ʨvQ^ jg` ^0,@c!! d~ N]=T9Ė D|¢$!aM͈]+|"rX^5P*vE:gtJŜsdh[mP{^shU 0 =[ߠBL>g[VVR.vo4v+w2ow-z(m tC&Iqγosͣ׬aaFV3Zrq(U~LXŰ~s< ͿP&c<\p!HPK_r7Np`::ApMEL}eu=Syt!"{UE9^"-$f{}y:q l=vjɅpq:0[`c^]"'{t %Uèd@+pBbKnjegӶSu./[DA*8Q`-*5%l[#Kާ%fvpbё Xd0\}!+ȶ[ލCՓ'm N%yGpGjE /t=?ñ~hiG n[a[ 2M;Ǔ@TmО!`㻼vKe[7n~یA  |#sbÞ,AmJUdvF+q8(p,O;!)6QN}_xkfF8ZƤ{Z7xȩupv8'7aEz]m じNE Q+ i86.L?tb2Ӂ7ZxL:L7Mѐ~Y)O9EIx]1D)~Q/' [=NG#ulI7h2K<'S5|7p?Bn}NR L5CEc ,c~ ,vm8y)9W1*"#ӲeQ&uvJEE^!2[+*B 1!? NNbco:apCM0ގpKTOz24Sq'z6%2\;D0B?P<ը͛oS"In4$0j\ z =o +quVVpWi:ȭtSal#>}υ6 oYp`2-LuTh|&B."?|1?%^TH8rF,.#S3:ty'XDŽ TcŊW|8Ys dҤlIX=hYVww=b| AޮpLtUi3<4;;,0kYr&U{2ivb< 볺fK26u Hz %h札1DR;mC6 xh'[2jDqcc$?Oy.Go>C@%UAhT+C]m2 HeTMOGf\APv@ <y_sMh Gg:?cyAFS XTU%;~ }5Fz_d{[xMؓ~0-cH%Z+:؍rL`Քx/zޝW&C]2l f Pb@Îe*qw^NgMHeep5Nxa(k$nLJy˘gZ|A ',Cn]Crb*_E+п*ܬGtCu Rfb>iߏ;#6&ϺbA#`F޴BҒ}"RlaaX>٣\e 0qޱ x.٫!h&a Y|H\&%MXpFTsrE53kʺM0'< eم5crQTephnt_G ͭ`L6ZeQp`]̧VqAV^u cN&Xha_Y,J;&oW|Ir=="If ?z @e$cT|4{d /ʍwB/i Ptг1M(ZVQTF:KKƟ@e^ȱ%U=IEgkPkJ \PS|B5Q6A<+ .;6}NCA۴1=N4l6 1bDݚjrLT9ӛ<5mH~#BzaiF#ar~%yxh](wu<%]mV|r<)L@Qߜ63H"kx1I2jn`~.퐵L6ńZ}vZz.&!O]2ޱO.SV)$ar)/Tq`o+K~ )J +Eꄞ)&7nXh[ZXV؍O?*d(B&$9dX;=,^4y@D7A8>c%S89#a>&i+)>N⻚84' CT]h%B94:`iRb׈~fo.]'[U z17nl{)}KYNj`rTs͑k{\RV,IFN/ⳋ|R RӰ6lAϮq-@xMfK 4aMW`eZ z;Ki)EtW<5,%!~pIYUoՆ_D7[ $=uU+SJLaSyɛc8Pq}j.Sy${<ӜT@R2s[2GAI@w?66 TaN&y4Ye^X$?3ݤAQEͦz=9#=gTb1qҊ cZ 4۵RHj)+6[ (<5(؏#jZ ɚߙz3&wzQj7W@u+$ n^]]zv sX!~|[go#yT C_9;i@bkJ` ui{&"*}9{vK,A0mc8XE؁6P6~{I 9|VQjwr$NO,!I@@ċpG^ipy$ 14Ornc\yX;0F(7_D~Ȍ@GPȔ`e@#Q+#"B% 4^'pQVgX^P_ɡBp1HJ fR7 PZu#ue˛rj?.6ez&w։O3UޙzG+ 9sG+Z 3HngDG%xRԑ\4/ **:e1k2?o /HjjHmJѸQ,}$;jm%8W=_L6넗 ZduĘJC$5P<Əg@[ Qؒ'oLb5KzD-r,|Na!HeQYtzUC ZIf>l SJ/M|NϬ6n"`]ѓ|߆YWtck}"aap3IBj̾8CU6yoC˫"?CCVakD]bσigN>Ӑ]&]\4mdΚ>:+Csf%ZWGXJ5 Jeށ pv4 YuL3 >]I wЊbVdZv͓+|/Ķ衊W1Q]  q[׭k]\w=U F;+ƘL' A'F&- kj U*k4@oMO쒜eRzhKB9YSH\?K/~O0r^G.d&2wrFO 훍9#hdڵrcȔm&8ɾz 矦9 W DcI]g78ux.=\DO \#D#FQrZPl(OTFNP|ŨJ9%TIK 0^7e1;&9nc 1d/~Dz6:<ߕ6c *ޖf6c(U|ԅ|OlqotyQxHSSBB+1= Q i}UnNERRHv&si1qJyL6r-le*Бmo}+TrN< )awT8ádOk]v?)p'GgQޔ 'k)1O9OuۻprK:-aP2Id[9|;%([|^TJ~#KTKH{"lƔ=F%l1M6%2ey]"`0= =l)Y1ç)]b d`Hu Ro2ȂWcʿuZp^j̄@JnMPD_SED:ل=OMg 7Da"b.6ў@.b+ݗܑZ32*jb-YjA"#oՏtmO=!&G#o\Hm̋ٽͶK/zjtX}ˎǨt`̢8gvSȊGHK뛶'Ez(;ʠgw$}kH>\vܘKFA2>5Vu?UD=ZCWXWCv kKiwDHO E P`Ҳ:pnYCRk8z"cS(^A$!62t>$ަ虱$+%h C4]^keLG\CϰTY?gj:h 6V&9=90%&9"MO*)_ʉBድ_bjqW dh ` >T.KK*)۫Y_"Dr:ͮ-0A4Pr]z# 5R֜Ӛ'6TFZrKL#.3bR>+f{K "ҀH3p獊/\;%vnp4@h"Űo4Fr7@nȦzIqj}/})=pi^6c#entSu溘!@ aK5i#~ TCbQK!&M}ݢ6;Q~vK`͡- hp[0RM'ݯV?5;tvWN%]>uR5`Q筋vV1}$3<8h,ӭ}DZYbMZs{l(̒:UkbT;<[y_1Дh{4KdFʹ'UǠޛOh׀O>Y,mcGxk|4$}%űf-],}%r* ?6)N5 sVWd9ʋ0Scd}E\7P#@`o4N듶C,BQ/ sBɔJqU96nԣ]Hn)BiŪê{(,P"FPHW.;0Â#By=dpԊ~Sz5OeۤTDۚgZ{Wh0(d ̴[mkfQnr3ËT >xvTP?F;W<Nɘ$:V[ , rjS{f9<~W^٤(2#r9#eqp|<{Mp47erXךH]$%*M^l0PF U'~ºZdj5=ڼukȒׇD0sLvs)2<)!(PJC[A1 =ɁQ.-{cx`]aTzf")=7%L@CI[TymO5̰Y0= _ӽf_WPIy 9~RS>KY%gzʤΘ>)2l$5'mo-IϨPc qmb9_<=:~FcoNh>8ߓp4"5B ~J|}6Tၳ E~YCmUsݣPsYD$>Bq1.A<צ Agy`,/E~=ǏR 85٪?oS(L[_PVZ+: Ʀ|Ʊm#C W3`-wy@xk»@D5qf`%}EƠQ'MzWy^Єzڌpwx*Z۳=x,7̶XxվAu9O@ Bb<7v>hL Q/lyZ+QQ>ZcC)9Zf(LݶY*GDS;f=q3YșZ%VEvxDU:aYS' r'' $kVްs뭠豃**\Zv3-JI'&.?Y=֘GCdl51U@㙸 7V\@!P4o'-D\ v 9\U'F'>MP!hy}1ֻ( V-O =>mg:'H[jL+6H6PA/ ecyeWDQ#9B+qf M0A |= n\(]u%)blKUQ !dڝZ_h5(i¦2gOB-uf!zړܣDqȭvp>AF(wRwS7D4 vMrfs)v<!!hx[ V֒d$B 흷 DzV| U ʶ)ysQT]l\]ĩH(h˵IUYg$ޚNst=t׏8[Ik~ZAG^ZNJ9hJ~ҵ\U+yɘ7vLT#ˣeLl-{`wʩβkqDz"rbcXW5,FO)hce!5C  c>i0ƎKu7 .۹7jJMIY7,c~ƪ֗_;vFby%[ݱE0c뢀 U29Lɻh%46.';UW`$~]Fj+g(zR~I p7d_p.P_LfM]JV=7EqOC*k $:3.{wlGDC. A?_<F^sO~G bp/烛^Fv㪢C)-*5UΝ&qPKg گ7h4"KYYɭ\}I=SFA)]:b@RhScC!Ą`ܳe}s*||; #y^[wyT7Z=*)R[FP++@P)iꅭRGR7CiF(0W " kf'Ӿ9}.6b~˼(}Mx֬hLm<":Cj7sc.o:sٗ(q9Gpو7i(NP[GK+ BBFV aBWL*ĥjspb$Y^iris֕՞|ٺhqI#?9"$fi s%pc =[QCȤdsV06l(,eNvx^ (d~6j)HϚ?! c-[mgTq.(*m{B}R ӉBt\s8& cB? dʮBcyfo˜Rw[8ĐzDPe.ˢ^&KvQ{۽.*M(1M.D()bR;*/{=LjOgo؋[)R4Z/PV XsVH2R|&#ԗcTepW ++̶ h/͵Aw6u<'m*dUt u!<=zmGޅD-͛9*'V[cɶ.߲qs,2 B;1ݵ "a,ţ MzUcn -кz`}ރ 7M)BVh`*n~ F__Ҵ *=oR!,qY]>PI<>Z撽FZ jmP#9js\GQm W&ZDRX㿵P;B g9&re726lKU nxϓ*oP[6JɥWwwmJØOD4DQ@7mkF4@СFWpx7:HP:P5&W%g??0Bj v\0)yT]E(f`M0p."sp>I^2gB6r='>2UtjVyu$O1FBrI뇲,;pZg4:B#R擸p//!8wpY?B9bECs~c35+@s˄x#(- @4 GN^IΆ*OIn G/cj'?؟&ZKCLk~$w0UTC0, |b0q-W[Er% XAA'7FƢ\Ε2 D%gZ.[M1ʷDv!9j4{"FoTr8A ȳ(R8A˄ս&JW>; (Jx&1s gLHI\'.(TQqjxi|(b]0$;+K Yi&,2!оzCOpo% dqM%(=nFs 0En—~W&Uh"cA<"׿C/cԼ5ǃg,"-U8{zs e(!Zsy t~>*Fo齃sBBH-xV"5['6院]zrh[[[#l/W`XԦޢxN4홹 ϧ$Ӣz?Ǒ?/}.Tu9$̘R[9?{dn@3_45.=c[ _p7SN2݊eqUBbl ^N:ɠG{V d??38i xr8kylٴuSqt.M*cv rl8i5:oW/]e$L;<ze#vK ~GSܓ{]{S}݆ߋM=c1CSYX4mwqZlqjϲ2Z/e=; yGׂ@Eh a xfK3+e͢oS`gSX %<ͫr 6a0>~Zj:yS9 "aIj}4Yr6po")M1Vf# -O}wEu$pNN\ >d2!~9 WDCօqx"\Ku!¬/L%k5]? L8/142ȩhapD?U a` B5$!b_^l HSINIM@;MT^.Ob𚥞)j(fz2a{ѧ?m&;k3K\ .0ehm>?QoHԞ*ePۖrƋo m"xgM1=gbʘ7(3fEnDZ{@@/>{-BKp&*]w}NM0Hjvta?-A8`uKbP|v$jPbt2̤ {%ƆC75aZd4^QE+Ym,rRpvR-t`Q2Mo`B;o]UbB:HxRaV^`;ܪ%͛I#_fޮcn6~lCJQbϤw_7|0Nc3 :u), Ir@&Af?9 Ȅ17APH܀qT%v|"m1ėo+l~։F3@64 {d v@\my'VCQ"K\ Esf'GDvKYpL㏆bΫaA7jޏl:;a_[Jh JL\xw<*dw[vD-QOe]p]2Xdg{^A!7^ ^1 ZZ9_22EWS#4&BJVM3 3\׳n'_-|p|&d<)^Qt!HE=fZלH}B_p1LK.98Wf蟍"g=9x]`/63,JðS| m8ۚȟD (’Fo T$^J?Ǵٰ)'G?7]=bp,^,ZEDYDHޚmpGPLк49S104wӿ kMZȅ f,4պMjʰvTƲE} '5+fn^"D"`!jVk 颓IX=O}C֡i^]?T'ff=kF.oijAQ(C%zȑ>!T {7۵3uE/P韔q+N2\tZᑐ&^IV 扗ݒGsb$NJCoLFRpM`)טQ^ $͈F7N\}ֈB^-]PZՅI ,-)q *eMhVs#6n7q\:ujOݰS o!T.wӱlc^mgzi! Pz'R):719ɔ9RrOzZ I+L㢇1PDoܸk'N6>ny[N*v坡fH3NÃ؄2C,9=ÿujZ'wPh4&8=Nbkץ^6W 2{tȊU”@#{OmCJEGrYVN, ΦvUShT K:9y `K192+:b&ߕ4&!4l,h3XAmA=Zg`{Ov6/7> . ZEȑáv= ^r?QIքKOV{uiz'vt9ۻ;žtIfm@XLo\ZCH+tbՖ5YQi79!){)rh os "ت#Q}idg}* wv{ͼG4{ WJ݄TᘁT^C#JS[@=.g5=G Q/@YNgy洁lm3T@&7JmW@c爫g~(=`>H$ Ґ~ 2/6!u+wܖ 6ڵx]ڔpOvV+uV9_F2ϣ́2y^2ݿqKAcV9Tȓ}"Ol֞ኆP+~D eLRʄ 3BL0Fye8/<`oE7|I(@(\DvO\@k| n`&N#8׼bOiI imw|BhBpsQs_:nvQJ]Pe>='T- lw'Jn"A,?L3%lOƄa jnOeKhlZm{O} ч?l 2sǝٸ|.TزwPf`L pɿ3` |tnDzgDk -EGuɠ}xɩ:8< ?2s F0c)N39B;",u`(T^8˟Z`@OF6-хe~*. SU &_$5-/uw<bmtQH5ǤЯ 2tn|gz} P$p-'z$G^1(ルy{KN6Rr#P[ @@ǻyeq@ky=. CŬX>p8ڨ9XiVaWxBW[Ly qĔIZx|ë,`,ܑݺy5 =淏YAb(ꌿXA?_)l$|cX)% 52j]d$A!!?~_Y(M&glyշԇG%$ I[F[U28&d:5-oT-laٹ.@ ĝڨNvҏ)~_~~^0a5"U3}]{BxXu,rLceG\7Y[X"FƁ3oHhNF%+i(V7q# 3J)+%vy v2-rݖ,j٧zNvjkLP8noߍG>YDUN^KG*pY\tbLFS{^+vDv tdJHTtăL Jb#'^2ىqSyǕkuut<.KqfO6TEhg4`ۇ~+SD rgɍ^,]3k5](rT^ʨ1TϹ <{hNfA)M2&lIQ+g",I2w6aWEpOe)#YG@V{NǒL2/?gs3Vr_BE:ДXwg667rM^b=`SV*{Eʬ;]K6Ăߌ+IS'K41ܔfnuJH_;ྪ(r@DrXu*[D'Y\C͟ECO\|1E~U}}yQ}BvKo j%+ 7VdopL{G-wAރĐݨx |ؐI35! D5 J)!m8t(ٛϳ6(theY֣E zA&跌BL"ÖMf~ 6TaߋHkV[~t$>lːEBڃ_>&DZS9K 08V=u}{Ejv8.Zg0+iNO՛vwEnM}wE`ԙ[&!`| j7Z!7 Z˛«} O r-Oi%\?[ﲦպ\6O;] R5] y/y~yfЌhxϑeyWNؾ#LTJsWu(zg~j(oȊMi*6F6³Lq,uv`t^W')U`\) i£7D+k>(w|*_VAF w9%։]s$$/WeArEcnԠ\BPFǵ9Us̒9vS{"`Tv6q_,KY 1{hI`LP,;NtVdO],ъZ1I? x#A2=rG*&O+u'Dff"-Vu8T%GtNVI>>ٹ(wԞNIRa&M '" @XU|cootXN]IgY C/7ōlg՛kO[J`mdPNJ|U[ UL&䚪wQR׳x? rQV+Nmz^mN1F%aYfPWXfOGK(1o&t+[>Σ j;6 .\IN:^[:zؗ $ o2>njpX⍩-B$OJ{;]8 Q*?P7Wjeb{tYEuw:nsSi{s-(anڋ.%*WLًϊEHsnղ\ +}sT2DTXlZ#`%B/C"p/^UkL b&j}u '*3JLxjx>jbce0s$Lc&=A OEɿImy%rvK꜄MY=pnD,P+sV7w։Pʉ)^S.P-矤;X<*~6l=8Ss6u*5I.cl0 y6͵G2ެVOuaL; @` `g8`Tݙe#6b`fOqDzݓGq2iTW$GR~|kPA >_6Ό0RwF!p_Jz[Z_*XLA;mi.v{f4- a.TTAõet̀7xvKL]ЊL~Jq,$ >53Ma`y~EHgZ/[$sw\`>A!7+.> iq9 GL?w>x-!2AU59߭O='$ɐZ KO$ރ} *ʫ0Ȥ*V:?Z;.#Sqs x2=;w>aJzxlkNHVqw=V_0GήWQ [עi?i)ӁEJɗZy"r Z6tkyѣb+wQ;mG}/-w[YBज़CS5%P7:I@LrY#~>x{)կz匥X(`O +~=󯰔 {4_zHvL+"Q(稀(pq y'!>2zM3hsriъ/g-e;E^b7+0\SVP ' U|rGaXm3\a0Z^G23T3<s/N%Wl9俈Nu;_Bt&x4mH\SvPedMՔ!MKŵsä̀J tX"0ė /&!AlPAvK * kZaH,x`N b\w[ $;ganjO¶E48j|a\փ 藒e }dnyng8nbňOTs19TnifQة;;ˡw-qslO up@p /A׾#HYσYQV[*5zU73۽zFHjnj岨<k8k7uv]#aM ;;w$“/_l;bsP"hMrM@OʇOxdCU.K-|ήja'E#\nP"<)Ib+0_6Jxs-y [r*MMQQ/2,HP?%ƒcaG,_~tɄwyX 쩀odwxAВ<;q9"S^!rI,Ёv R{ZD mI3Y=u)0]:giFdK`}âU龎,k uoM KwJM?%^X.3{]_IM,׶0bҭ'8΁{O@_:wJC݂o$h0 g0R[ =EG6 Dh &3ߞ[!ʽ+&TəK.#@ep `͢܏0)Mi,h'E3YI2[:u/:dqt&tF0*번\sPJf |+'ڢ9-U|߻s|PDc:ĩn 9+`hLGt=|LTghA_/M>Dh{1qd([ 7:^i9qd\F?|*&ZHH+P@٥C_vߎ,XZ+Dфng~(˽*.ZUsҬHis9н_7 ޝc4hZ95&yp`' $YQo*8|!5 Jp?eջQd߉yY)]&,7ȶS)1·S?J ^@m\zك0YY|(3Ho YG4] ǘ8vWtNN l 8揎b5GS 8M@\^8|`iɊ0uw)u䷹ 3-+.HHYn=4tO~'=Nn7DBgJcOVp>Ib}̧/9 T01b.R!˷'>^)>jC`D+oyn ̂G2S >ݞ8xdhPBä2~9xo\vHFߜ~4DGgwc]6K5"!+TԾw#ryʯ]&`@'ck^.W ּͽkKNAY͝?ezy|QY>1WVD1d\pOЯ*P 7?W,ScjMիWm> ]>6w*nƯyHa7!/ς>;NIjKk)m{4R#`PXoP Е#1/neM1f_|= O?]L=+;Uxh)¥[.ʍ/Eg5Ͷُxkgd@FpCu{6xwpHU#<=2 IaVKV(0,VŊZ'g:Q]|]OfϕZ;o96l&@'K'74I |.@I~>tnjBl7a .G݃~=8^TeQ͎RDe E"`cW8 tZnF.}͐>F=- {p$g&'|DŔN0SŖ&u1OHcK7y.%%il{YK8,,Z$нiI B~< aG97+9Q~q8آmR͚O#_u '%<*-,p3+dѱq[#?_jbw?Y~ҊO>DwFW<_7ZUL5z4ӧ39vxh,5rGu CyPuJ7H]y[) W-H1]+"K[LkZ =Gݢ8Mn!+zM%{nӋDKjDϜzJ"fM)#u_` h7ER=&L+qA0 ybu1*^DZAQAFˡ֬OS{a՟"@w3ݴEwd;NX֖Sd%ezS◟EYϏErh9!:2Ƥ>%tX"Vz})d"xGa¹9E:ϬRU >GԪ3!1Bw|ð>/P,::g<\D,=ڰ &( =ų+U ]"zeɠs;PǩOG\eVHEEQsz9X ;X*3YtXY: 1OMpT_j9i=-&!hF_1h&cYH8F*öTbk/jxΠyJbXM8I% *`wxC٪\dNNN,q浌m* c>+۵!fBGC,/3o~,gO6d1,%2O v`fS\+]VYq"#2<%p@TM}i |!>ƵQ7& nB'Y f`?dq 1ԴE`@jKŕ RV5AiI`Lv fdϸVط!hzB_!~1XK0DȕPzld4<4K@2D%Lqr^'!z`R%d`Bjpx,mҬ <c Rjh!{?J~CK>8P\᝛&X< +}(/0_T~f&Sߝh- }yb2`%-c3Qq'  Rb=(licN~PSٝ]4ʁfDWzoGb7%SYS,ki?)euOmqRDT4*j%hMN4=KFJHWx_zcՅNxk l@IOcycǒy2$EΫs,x)S|XgMv,xH`OGɢs,-cGvp_-!GyhIg=dy!厜6_1~FЗQ:νgor0UQ>@s@C{$$T H4]R'&iתGwf„grb 􏴗:b\!<)iM"b8sȄ)Z|Y`~&%>C*NA=Jtb,vanNFqb7T I/G8iߙHЈ`~Z%|GWV;Zn ZvRO~X4gFP\7ܒ 1<W.4S] :g- FZY)9Ir̯E hA`}բvFNKfhb8ZB{ O>@ ibS:LE 0 G!y"I: *Lߧbj;+e@O3cG_8[36=7w3B5!f\kտ LC&U !#W' AHhH%qÄ@KXo.Б|A'wʅv2΁_K')-]b;Cl>:q>|[{Z$8ŸmɻSFZX 4>Փy@@ >ґzуD'3a'٢CNxj2&3hp(ȃ5V b>R9e(8sU "i &qJ_Z$ǩI@5,R%6FM3 ɞbZ~M7UH ~q豅5$#@V5/c1ǣ ̒Iq\"<#;EE= 5|!dS.)ZxɤXp.xfC ] #ltww=2ю oDv7 *˲$=#N .k973TD<ɨg;s9ArzGrHQ@T>uƜ}G<`&Uֲݾpnӏi*Hp!+=VɑWlwe}V^oDX]$/#}&16f ½%#`a;b)SE D:%cpO8*˂yPŁN[9BLjVJN'[|8#"sxURtjjjQXS,1xQqboeXeZ21ȩRn1JLQz.g@Wآp\L` RޑjoI&,6F9eV!&gR)HUeN^G;o95~uW]-MCvXz0ɾJ1mumIB& Xy_rۆ}ОLwz>n,qP"b*f1"]fxW. VּSe qXFrl>?!` `I[ V}@XXf%]1wH^l_ ȹpvYBAS/'04D4"RٶկSFCz뾩 @'}a/LY‹؁=X8^\ b8N5슻{Wt=p`?+ٱ7|[hhLLdZt F`cMDŽ>lw.Yɑ j+Mqv&|/^ѰaJUAu 04(h|-OC!ȃ]G q3Fξv?JK4 )3Ϣz *De"trKRcbȴƅ;"#3 ۀ~F&+vzgy ,rH4 /LCm_S6>SRл\k9&|GacwMElRMllp5F<ՀrU E eKmgo.e __}1~`Cd2駳oDݑek.PU>)ѻ='kb]j6KIEWJG"$u^$,&30lKmzW~W6#N[ +.rǶPH598&Fx,GaV[fzJNȎ2#@:Gy_լ*_kw6V&81f匾pw0kzKzX5SeFK~{͝PeʒPrŗSW_ >5C2e‹ =  e.;JTxf}Bf*/ЂY:v׮'ip967 ?[ƸW|תqO›/(EP5@Z7 DyY̸a=ݯUtqчG\L{KڑDyAPVD;NP {ʸY>piV|c#Am7ӋR 8t0; Z%4ߐ dZqb@.yͤ{|Y\ʾ)G nHtPk(KokFrf̟ bj5m 4h/NX4O]#6TSPMW_3tÎZ븓t$Y㳽d﷫VF(gha-R}9u;6_iZsE֌кј\gŊXq(A)؋ S&E+Җut2fd$"ccw'ҕ;Qk/_|9]WnQ]ju8, QfUrN8g0@ݰZ&apGn^֯>EK$<5[]*ZMjW2+n~hj0@=t3d~)r7ʮ. Z 5NfJ[EojiF98Mɋw*^1E8 .on_J,mu=3 <4GxFL*G͔ʍӒ}1k\:ȥ[\7X}短sS[k){"X^[j%*RpqWh32]2#}&:ij-, vY!gDy7{J`-4!j%U*&C\xbiI)y""D7rWфke#~GgC%X,w2"xq7-S~#}jfm4JYAf.~R*u*dL!- ~ CI^Bgvzapn+ȤC4qo^ 8dAڱJ^ș/-b6d8{z }Lgp0n@sǂIC|gҞ GfPau^x\"y+:{}E)Zހ]mus#r,wA^Aש:)$XE@@(Yz&ycFJ:5j'}_De[`DX].ڰ]ݪӷ^xVǴ j!o" -ao)0,C2uyٞ[L3w0n3pZo\s-ġp{*2X+s˛=:q:Y"4!G5\ ] ImXi~mb3:Q FrQjִwKux`SGk%l޺Ìd>])|LGեf [[Ty/eG^/Y%OIox<{pgQR_9#5Hg'}9J՗^I3{UHZտXz`` Ta?hiGFo#@|%i4'}aɥKA)fQ "eb޷ktR XXW0hm1rٕlvHseLk ݻ&fhIV],a[].6Y6~DM)^d_x'S#V-6)piQ"@IlSsx1uLh@ڌ*#4UUCq]',wHCA-p_nzK= ҡ}L#_*P.G2 [A3{R-.B&&PF:Q/>o2&A532IKu-27i>UwLBĀѧu@%7{l~sq&U9ӼPw(Zo;'2=S70L6i)q )p?ZU;nN cjjEǯ-VoD;Sgc[]|J3rR. Z2=WGTT-p[f l& C9~%fצEZ #(\iVh3ـK4@?`-2>d!/NUvPTGlW:$ HT盏A^ɕgiOyƐ:Tn c 7NFd̯& B㏝ 7a"uf̰KeLɴC)p(0[k KTq#[Vm?A.)*v>keXU97 "f\jPZG!`[QYs\zpx'ƩV *ntӓ4Q>_]%]*5`1"G03eUmUղѱ \GP!vm SKK5S GG("5~}aA t8Kyr- e`?@U P;2U%q8$kV%@+ ,xo:U yPT}O~>-D cJU#e}xsF[:]9k CAf|R3l)A&C)sPS<\Pf21DTZ_/3]C '"Sc1EtgCڍL#0Db-0NEt.6%هNGj:)SƆ|Lm@pj??@AFgR))DC@G8bb}>Jbsjq߬Y%aāC Rm"+T(GbJuh6GUca/GE. *;ck[x k s #혤1 Xx)J`n[0,t\*?nsx+CKXDz mna 6"ll[Vm<1j3xt<¢Ԟ Y=E:EK(T&_H;n/d^ =$%.RDQ?Rdkx$+FǝPF.Fq7x}i,6JUqoZͷl0LU OlF:$%L12'IiH!eoti!2 !Vyw9QWn+rrЕ{d+VeL9 =OI̳Ha74 "!G4{Ɏ ,A(SWBhUW==W1p:ţԀR(]YSIJ=WY @U;T#'9N7G?m853@0 61J&jυGIG!ݣ\\tęI TWZnWHyn9]}avO7a'!"zSN)(iH93! =Q&9y;o4@<#}yF0e#!`rRx~&uP:JKM!!A_:wNo>hӥT~y}ⴒ,Clp<֧z"xwy92sp XOSnH]1)U/Z_!XgVFb]aGrhSY'lf&˽9Fq\k!M^> 7D(I:$jjtݷ!'C^xR 7NS?(PtMq E6BbBTdDuL,,ޖ|)H*tF];;) s2u׷-={ 8}!KdoCf&,EV'[8,kԛ}*Vo5#3M͠q"8!ν@Vq!T3:{ F.z+rw}o'8*Ȳha9A8EBbbAvIpptT<%`g~|J5$8Z.3L]y hIB,_à7G|ORG=t+6h5̌ojn "A9AW^ !?/\^\*TTa Ln+~tPZ>)q;f0{ o:^y?Rk>'Ê^Zy{z~o1rs* =,rA|cwA); 񴭨;6xgDu>_USvv pQt8A:ݟӂJo"Rӄ,Ϣ1l1}#* j%FدU_7[4W3TdQ ɻ%GV0"W$c*{jS(ɤ ;hHs<j6Kv惘drn[}SYpS/;>/ SKY.۾vm@Bh4؞y@nO,iJV#rpreS"f xhC*߷5Ja(e|F%6y}c8 g >Vվ^gl0pQxݘ@E.3xԖcI\șmGMnF̡M`,xH|v)=T0mŻaN#%ɼc )–EjO ."Կ[Ck`p-ݾq-L(=*rU5똥3PP:%a@@'b+=[ qsM;xw[wrx%-t9-q8u"=;ǹ\t=vSE^BAf)8SeJ_/pq ` . %h6t5]Blj=cLTu#j8C25*~@ǾS);=:R0Q#:,J vzhiQh,OR1HȖ9tσ7ʃB̢o]&}FITIiӃKXZ+Ph^T"Я5C<Չ&]Mߖ#ȿm5ߧ$zu47A6[sW 6yV`H#v\Qޔ~{ri$6T򦑲xȍC yC%ץ]L"n4N:[Jh l:KP̩OJ.]8Hy?Iҍ/*қ+fK <זѪϹ>0F؈8q%]lfJ+rٶ0u$J#*aPpl}=?*ҽdO|iCeǷg!+Xz]V鬅,rrd%37;~֝Ʃ_aOjUmbi<-!Q29^)bƾyz, >XHl= Ct|'iч_<%A㜷Q&+AJ}g];kL@ĻvPg?>%F:]}Zʐˏ=ݙ{䰗ieII4p.S@ݷ(;3h PQ[U'X]P&H<&a@ w! -P=8j*/SĿz'!GW|ݜu#Ninw $(bk-oqK$߲~01I<,s&B /SU~mt,}Kjdc)tCY g gr7v ŢAZ,-#)M&ť ~ &*6l+70iHy`Fyٗ p)}M5#ZF֪UU Z}rBhiD籣]m 2eGR sL=9BiŗXy(n/+A#m®ǝ*hkwʝ]R>ǜz"w$fX>Б^H=؞{ɨ੨(z( U0N7uF@ߜr֠+Ss!}ocڰcbtUkܾUpe?\*ufB fWQ4}=αbs93.0}?SCJc+Cl8 bՐy+@uJS:c黄Џ'Ҹnf_9FZUtb`B C 8g>A(gDgwDocޑKTeʖnG*vZ{,<^w]vP>!~ YBSlۆ?~&bpPd} mCX2|5z4 zz Sqxf ӉxqmAxA> exӷO yمCGDWRL5ll-lYt1G{ƽ[07eѿ'9Io3.'!d1[J5ڡѷP4q!? !ktH&o^TK#@F:m兩~vxYH![=Iў͹w#&c6m+l/߁} 9A L ?Ds;Uܴlyiӿ Ξc +R&h`3ù5!pKfR0[T 2?͖18>D㔷M)]E΋ ۡ Ai[%. q/R;`f e,{xEݟk~oEfIK3-$V@Hxr0A+yMAIȡh\4af)+XBBKB z})WC4߼n,^2V Wpg#o匱A59]5M[J?G AlOR 'y/KG/pSX܂3 T 7k,h֚Q,J݊3IxS QH St3Eha"sDrĢm;!'\20p{fQ@+gR'M#*nwS]{a=u,Ȉ? \ΦN`冼%`oHA2OK6Q^uWm.CqOt~thIf uH2l+7sksK~C'qK|9D cW&%y@˺Y~a'VNb5):,7?t~KW.Wa͐ӞU=AJ-pnm݂j [xz|L6'(@+,9SZB"JGKW])y.-vH2(/s M($N8.;brMTy3AngWK^Y(S;y_*'I^R'cPJ+;%$R G  }1!>ŏЛْmƲ5YWDl旸mrROczy#|$M~&qBvp[vCnj I \ ڞG6×b+LFBBbUJfn Qvnaca[VaoBT^G3\7ѱ‶bs\ɅD㫅j@+Ƽl-j)4ܻZ1E ZMQhޅ i$C+|^baS\yBxkڰ-xYB=)'À5 M|DEfL۔VH Zޜd#Q)Pg@T%ˠޑ= 5mOobS[~ PVlU.?g+gP I3|PͶ:!y/K,9Eό4;\fk ["]ʷ,b4!#rWNJV0T{ gqHps2Cʍ9T&UibH8ڒ->c"Vpf ^aoB7\زDι>f@-ed()"Wѯy!߸hr[lO>|.sNב3 Yl1#+%=wk(@֠fdD=ˎi3s5KwgcPfnt /ɤ~ }ƖvE*8qy4n(S *!=n %#A7~8`U+G'XYF=T֦6lq ;~L_c `,̀8O6+ Ti.Āc$:4nq]qf*glr |A]+} +h[W SO6<+ib=cbUРAsS+ȏ Cr(~wԦNƶF[ @n\޹x@JT{- R/~ K0~-]H8LSk c3aaXqVUAhܰLf.ӌ5AAeb4h#C0dҩx'\巩([yҽPpP\A(Y`jxTfrh'u3@To쉏BYV:QIExX6VFn%* (rfNjbm}0` _A *{d(1L<Ҵ.4avI)F~עEj&w9mҮ@it+KE M@I*Ir%6*,ػG@VB0@ t )i*,L`N`0C1[kufv )g9̾iAnUmf]_2s[-Au? IQEL%W'ȝ|#`~'j`.'QzCԌLCf2'RS4h6 D>֒DM$K0rH &TMf,@+-J\D1UKva|˸d v.Ǽl;ޝfok"R=Iv %́{T4_kX+8DB}|DKa_\zB3WVp$-FEmL_c6=(t- w$ b^sHI< q5 dN2Bm#:mٓ3 =5q%ͽ 7}*lZ~qD Oc ie_V~Os4B?OWSAjIBzʌ_m71S?isƅ&IFkC,lߗ{ٍ`h}~.lVz+CB)dΡrkȮ:Vo^K#g!X10xYhu6bf}~2öUM5>8Lh[;7հQm~>O%+-1@2Ջ|O&Iq鶠h|L֞uv}Uл\K6^bnzKؾHLu.,:Q5igs5I)'),y9v:q`+\Ҽӌ/kV1WK&o8l@dj8؄w-O)*ÓJ(GѲ$ Q΀"M﵌)K&wkG|Q^Zb991TcӍڜ2/Hs:$ hm,($$` rGPF{&y3?3MD nfiNj8rRTUm'3]jfXu&PT!uW_#i9hn{6%K lOJJa/fTRT{TAZ4:c5APBXp6ciqRG4@l 0YI5cݻB!gSK>G g6nca|?Ur j+^G[e^_^KRjoX5$*#p**Uߑ˃4ON8C``7 3ȭ%Y50Y4`h E`ΊL? I-Gy*&SNZØ;cתYv6{]hym!@  f+tHYU3gSI&Ww&6NA$D8n@4j *zՋ1"kLA <(+#U9wzà:N-`b/C1*]5"rBUG:"Sjsssӯ/s)3ƕjyW^u=1sh~v`j\:(i'[VIe4OJT03F٦lo΁l+cVbH?6 F/}!q2\{^Re-=17УrIoǢ| dZ?F,Zu}B2" <&F/~ɯ;Hvy^SQ=O2)l {s99j# %64U wj@mrm\v;0egl3QCiA8M"m3RQA^RקV"GSUC)$wMOR3{R)ҥ~ّf6qb$D6\1u5y#q'] j)LV6|D>9& 86|۰bu.{Y3"E5o׵-eh%r5?`7k Sx8]-jrSQ;?tFcv9dWߡ E&722)|eI m![/{؛K kVHTg?ݤ$p%eA)fG+En#G,mf_G@!?B{>IW6"9*Qܣk;Ml\&\ޟZWX#3-8[T/J!'!|)+ BR^+ƻ̬nLt6xnVI90|L w2v8咶_3SMQKlF\7z̎?;Üok7c׺ůH௕_C]tոLp?/,UlĂobuu,ORg y/|F|AZQu¾(b0sJr',(_+|&W4ޗ|P+';🌐j7Ǟjϸ ~DpB>`" !v+vpfB4| hcmCYj88Y%Fo:# hie/пA nGEyW6O0D/6tLR_3GPG22^ TvU9XU3 7Zpzʘޘ,9dr"B*ˆlx B1KIʬMDRwN~{ٞ1jDnk_ƖsZ+SrjGydTx 2K%5'qu_Gд6v9grhJ1{VT֟yqKGUgdk!hHRVT8bo,}zxֹ%p,gvVP/rpIϔiA®y1s~j-2+'5VZhʂp]1e"3?$>gx讶 Gd6G02k1[F1ԝG4+H)v0}#/_QZ:#}aqqGHzꤾ4@Лɘ5f|=|[&c%&#hUp~HxyI H[*A 0?vn.67kfΫOh v+rdGaQ cXl# צ.mWm0\9X^Yv諭2PF% *nneCX;uXyp`8>fh>Oy{:B.Fw3D%|@X:Cq4峠0c2aF׵uUfBh#A9% e1 PN \BvQ د*JIAyjEC~"lۛ^4X ` j^mva48̜kʩjOEtEcY/d}Ǹ rqN)[@u WrIUYL_.wiB[c amְĞ<oX0-a7\g,,q[^`/Ή}eAyC~ w{?> CߴWR4W00&J$\Mmⷛbwu۾8 \JJ7@%(c3O% idY\E,۳j9 *"NDdEދ$i7oj T7"Uk;eم_0)~ipQZ+ZS$ #p =Y{K鉴#,}ZE`^C"pt\ebUK7p00 Wvu`T= , f,țFwS40éUhywJnU Qcfx4&#QzRtFtӽE bm柠4Md[(&L ;' M#u}VV.2cvV^Ps'^P}\F-3p Op""i0&Ӧg,r(($W.Sy,K'RVaM:CXhFRcx 3E$&>-,pyF*< k ^`Ay3F9"۴WCsF%PuX7 ;1$HJ,A9+ ?AǠ*/ù#"<$Q/`?w)E'w^C2m%YxA5=BjXholޖ2Șr`<@Uٸngx3(U̮O=&/-3D1馍\O9<zX4sNY$A3 QB^Z8" Rp=J҂(ux0Ew,JvZ4$SA) $ͲDDg :V >"^:IR|&7!ɐϪR`hDNl}OdPcKgC<(E¾q񦻵߿tNSE.$(k&I^c˪յ0gۋ Z9%<ZS ͳjr0ς)yUZSqX3K>י}5! ḾFiåpY_FǬVi"T/|"# Yr3YJ44~!PgȳV%9>{V= ^THm 0~СpsBY,-bPu(5yLTV]bҸ۳7l)͘'i) q:;, ,&\'Ptm{]W판flʉqu fjDo`GK=& 7NS$X~Z$JY:#*ϦJ@.]wD<^_Io> ?TXQ< S"oigu͹JHǐ"T֨Jn\#~ 8t9ZF˛g-{]q/3m]yA ݒ.~.I.+DpKZDIr@ /ou'|Q|}y(i@ /XSn<8nPYȏ : " ^bԠ](4)c#tO4DbhzjJuG)r_|7ŦP@ V!y:r,8ȓn2X3ֆ=|IJۄ;^ψ9067/.3e1 [זԝ֛e #([|e\JЋse ʮfL5pMBCvOX;m5 ~!- ]$;_}J:}TėSD|TQm7XyVngGL $#5ui+cRK GE\%nhykָx^+DuÖjyY,!]K@Nk6b5 ۉ-rq Գ;ٵ~GԹ34W׋C #*-A UY+{{P*X؉ h@ϻG6"OȌ->e“?hm;OJu)Ly4?pMw3دgV_p?4\qffIcȎihB6[/>, jk~-#hf=U~_v}@uvto^ #G3-%GH[Bff,e_U74(|0 !7=_pβm,WiR!v8/r{<5؈ v]]{q8 {`0)Wtӯ7%/El4npPThV7ڇv$U /ѡ`iFqw61.!CŽ1mCNSש*?8zTr<&5DP }чA#XB=Q)]'S#mzָ9*ikdzډ/\l*v[]+U^B="$y\-&˥B&*8 L!n9NeJ<;nÙd銸Z .^!f(6Y`GjmKfSѻVN}_aUrűC3b0d*_%{0a-֯`,5愫h56 Di8~^Iu"/7#'x9HH)g#n᭑761`8}y%HcKiۂ( t(NK2-p=GOKPV5#%ەgO\j@RUyT%eG5 dfY\0v*9<.wBUEq2KM%s.hndo=uy:S1t4!D੡y1N*X O|D*rS 4U'Oxπ3!lC?Qǝ# $1P3JL"Elx97P>I +6HzbtQ5:O2*V ㎀Y:(Yu[xŽ= B𲑠є2 n a+!S9CRrxi1a&*wg|),\#EIkBHhF8NcB7y-pqĕlcV66KPb ?UwXɮN'Pӽ:E`˿\(H8).FKJa*Q";7 ۘVv {KR=5Ͽ2FdFn ~CӖmjzI바rm}y@9\sbdx {b]~,,;{8Rbrnc2bȍ;zf!7vܷDl\AI_m}jdZShnBwek#9$.< =]!6PX"O^(,(QQsJG>0.g􂔑k  ߳=# 9<OHUߵO9JO ӮYUfϸDHBˇ,`Z'KEZk}M\Jmaw(͂,н?PCCg`ҷ)x4$>̩pfqSDζ$@Zr0C#(< 0&KP#`T%9w6 (<$m6خsB"SnEWgG>Gtwk1jAu}C q|}&k1͡{wٚ&qԻ08,xab"l90|,2S,iP+dKю )u=kn.8H/?#(A!RA1Ze8KAFbz|+}B4+蔦!yDB mJC6w[; f'@17 cQ}_pZZ෨T1kpqqǖB}!` MnK =#K~X qnL<0Lf>@&{p~۬XKܙ# MH4Ine!!m{32ʣPv ]:ǯtz@u*~[R0v XtAN>rH3AQș'$An=W`;IrLL|wƎa+3T$H 08~=_49=ZTr5G|fޒp_dHQ@`+;4}0;fV`̕='i(JpK(c^K]<'YQ2xnfcjT ~۰F8JQ#34uۄoL5\VG!`NaZ9Rʬa Ȋi 9x|{ve8_+H09tWκKFD<XUX`%lV܍\3 yhjs#oȓ@E1G@}Tf )gE9LbYjI!Ms[N_ƾe|$w|m5Q,ByKvًbU hgA05^ ->0ABP+2 3o,*n8!dbrQ(bWJW +UCyt:vQ(A-FL5 LK &r4Xﶃlͤ+2.uxGsm|&iaة?U`d9AEKiڢmUy.CIT U^^ H E؍jvMٌϽ D#}#sƍd/,߸@S{,b^^, ^{TtJ! 8NOQ@F^*0<o1ܽJ-$ck[W&4 /,$)P qô/A,9-w{p9pӃiC4.<,;"=hYG`OLFw$SŨr%9%MJMtG]Y@* d?NGG&8;pEsQ`%.-}mRi@j@/^ fy!\}_mA'l_ޝ͖!鉣sNF3;߀gg<h72qT.BVH! ,%%%ySf4zg%Y!sot_V$gfXj-LIIf{y 14R/O=`a>*9t -g݉SH 3?YL^{)@» exPKȖϷEIռ&eYUM*P]هgL,ddgKc'oȱuMHR;p͋g30}ym~,D,# !ń∥r46aܼ¹\kdҥvz,tn%=賅_PD=+m LRTyy]j+fZب$-W^NQ1 _ }ҖV~H6;E<9RwD!DDj&Ag&'D n:\F؊xV&[u;Z6O)M\a-=8DOİc_w܃?ϑoe)LJ<xUH5]`LR*qo0$IN2I^B1&=e3NNF#>fdab@+\!?qP{VA-(bU{M E$=n1-9 G~C BbHFB']\ 3.kίzCE^KU!_Dn %^Zƶ^]Od8fԲI.Dh ߮-J x|hET A(- h*0nnnC99BnBG[ūf`.gtW4= ½ÞLe]@)kk31^~ G VN"e(^@P<5gN!mM~SރfJ&O@>!l!S}MԠ $˦}je- X*ň P1} @OxjUTGiz^Z]‚`W.e,Ų^,y84޿"YFp`nkvĪaq\&I`*{eTUf6K\_?->Y&Z',F+k4dH}p .QX QF7$ɑk& RH<2Ś:gQ4MMqL#JX֋BF!NЙ?'[TEB=%k)[6 4\\Ľ`b#MhrsFS:B=2M5%U=ίYi6rFe""lhCz qHJ fE{ _9`%B^Cp ]}~"eb*֌@d=Sޅ'MYκRVZN7d }z\9) Cυ 6䎕r䂍Fd @}Ԥ=)elʶP-Mw3=+$ufVw#kqp@ZuLUزj} Qל-`+KT&4Fb&A$~'[DUj@Py bN|M"wi!A_gRl8L$g kLCuxp pW6:abPi2TjJW^w3tKupDLFסQUmmo F>國Ȍ|qY܆AMAx9̕[=y:ApꟼQtyK6cK ^:# B,^0cR2 {n|/:&I} @CVЮ}oYr i5;}ȇm5JjHuߴVŵ|Oɀ2_5{p;:jcZЫm?#AƔr/hՐ nADa˖ /NgrU'JKYxb .@ qX[46_čh#( #Dн Є6)y"\nFCpyb"H=xgln II:gX}M"]-ṛC-;HlzMS0i1&1_cdK7IC=Sq9?= XTSBjBeXwU6o]K" *“wutVq +ēS!#?h(!fl3\h+h_[縯:TgEYU/D_p 22+: L :K`=i;ܯLLoI}OPjC[SQ"{aޭRQS]76OT&P ^uGaM$IֽW&00 vPP7B7En|ZL 0KyMG3QX!_ş~z%8Hf8Q ~Y;p/a X1&CT<"CUDNey0_gA+;y0h*/%mHߎdܠQ6׽/=TOU,لxo< >* H²PqMfx{^)d0lqg3n0'[lޔRt\G__cn1ũ3;8xk$jbZ|HGd`Ù_TD4qy!5,@d/9Pw,zڇXz.R;=VE()f|fwY+thPΩwX`ǚ;1 T뗬kbX6_4 _H X׸) 18pZ P[~>udJJe;؏jD {t |Y*ޫSѥ$ɲ$dPzJ~VVO:1%?ZQS۟ӏ)@{~ccq 9y1 2[7!Jlg@~b+P{!qgٚH@0[V0Vi `gRE>;ܬ v&g=Jh#05 aV{gx>foWnc-`涾Hw mS_2P|t'BK7f8EF[۠ p:a@X4y?z:X8~ΩU86XyKHBǙZ8KWH߅3%q\$S&"tʭRl02acl/QF8.8!Uiy!wrbCiL|NCe3e;uW:UD["c7Lv8XK14cX`"]p)!KUc']s7@ Q& "NX1 ijBNE\T߯nS~nFiم]'dB49ޙcy3My3YO" R#߉27,O|(fvΓiitؔJ--׬iT +n-Sl`=)xXZ"mEӰe'-,ih2%NH^ޟf $S :*uV',z< C(LZ,'>1 `+AVr(l-Av1cDanv,qʨ#RV_Zjv3'޷K'nu޻a=&{;{ BrSb-Tou#/r-D7H!U{E*\nCA1?Uu۰|K,; +3Yl驣MD= iF_1WQleT"<|gM@A0֌FPXav663U:QzLER Vx+ޡ<:gjcVDtR Qs3q.J+)g]'e2B%/R} ,f@l> ZcSp wW~)>b7%f[!/=ۍ:M;ٗ7k&l@VvV+bUE7:ͥ3FvK+$&BȐ>0u:TDuj F u.,VI\lwLK5I8`ϫ6OSj޼z7@~~/tdpdֹ+ 5ƌ:6*oi'N;Fq*ZީG 8bUm6 Dtrp8v\L椠o]J/^),_O?e Pk#t3o9 vd> w @SCaCEX=Q߶+$MP⽞Jj`)B?dҸg@:AN##[%SX5E6.M7RFYcK&!'佅t<|:(aIl4u^qYJJReSH؃pN gŬ.Ll5\&XhQA&%nKՓi"igkG+0IoH 8g^{30J ! EϬ  t5֡.YIbM_4Iiޮy=wW :E;us8) 5V{t7^1,O_ Br"h& E^x8Rci9u`)Q,?w0G{Cm8"3U;e" H Y";)%@`u"vL!&$k)#t!ǎeR$Iyf]ڋ8 !'fHyڦ"S}*Moc90]ա~2` ݓ c`;7f{ q u'uV=Rh"t[WFpPGcFiBjԲ_䚽w!{Q?$B1 5HXQR#:BiSޢ0b-}:>$?Vnosؗ$724\l:h_ 뎠\ƍՀ ?& tѳBNqg < FxJi{L`e ӼKQgXVT< mh*vAH_sXQAsjLDWC@ɰwWI2~b_.λ!urHc/Udq,-d|ԕXLfc5cS./7+&wM cKw4лdEgE{7=$p,3*o@ Ss6]ej{'tXP/$ ! UB^odId.-xGI݄i~ oSԟ+vnLs|d|׺UAސm*Q }(,FK#PD#8ws;۳2Dy@qǡ^_L9RNBq;<Mj5t/(\lrFN.*nj^:]&>ץB`JٝSb,|3e:Jtb8MPӸoR:LزX4:[q2_Xo_ ? O}IdBnԻqWqkw4:M6{h%C|zk1s>:]hm4a#}/ +rnQ/7ja݄Pf{Sxe=@̲Z!&gTe)k*@8OϞ%ٔ(\R`RZ!M}r5U`CKƟ0I+띣x؀7u܆8?Yhg^lBKR7m0~0Jy 2Y&K3sm҈ajH$CQ_]D(Sc_U$! tZp+6tKlj*\!_3jLi79m\y#f>hD) yu;HV/%Ac_?DmUcf V ~Z‡6[ƦlέЖd׹GLiT fWӍ-M?\Fna#:i_/L*@f8 ]8: P5 IS> O7a p&饏4D(,%@أ(MqPP xrv8BW];ڬOj7@nM1$IH]3O>Ԕx '),,.+ZJ x(x %_< yY`'ɮbYG /fVW`Y"~y74xſr,i\)v:֬]k5D12Kscɝ=ʯ!L^<f\ufԢK%OărexرjN)V+VВ#QnS(fyOS@׀מk sAx @-qemf|EDod j~4# ;eVqE'28-ϪTa^',yq5BmƔp*j'L eEz)QzLdgrگw%_#^gGV };`@IݘQt4VȖnrֺj K؛$ak`yzg<ZD4VuUΟ2ZR gň R$DX3Bɛee 7A2ǿA{4 }\:RH 6I%6.OEp$9m XGVt#O><.Ys,DsS C$d< %w:8RmФEI(Q] ]V^fzUL~ jxs%SFs~^PiCs!s4{BԱr'i?zvQM }i]~x\HH#7ӝgqru0|\Li!)EfgPaHzIcYB0<,MdʻVg>U͗:n$2:yس=6 o^^`[k6格uSfč3U,ScmA56Y?S,'v߬cUfY'S=jW ="H'ھ4g_/LvclrmsKt Rĩ_ +&{Ѩf{ӴT8)\ؙ$ ^` +BfPɪ辨\x-> J9r|(Z2!(1'\K8]<5j q0>7?D&vp':OER\)gPgnbPHpEn[EżYacD nmA#cH5SGjzRh3r@y!À _2[4Iǜk.砸J:yyHS@T3x#yH @U\JQOJW\Ĉ ^3/-#S :e7zUzǓD==1$ʰ]*ҌNxP&.Y8<m7՘sؕm.~ Tj:#LV@q+7YGʲ8Kp |f/oto3Йlk))1ctg{tk6jb|N\*$rCk]6bˎTH&!%5@p`K{wxŽ0%qli3}a5̟d`:]8rc܈>O7vu=~7ܩht@%Xf"jP>5ݼίsoSc'!**}{{駯-^PBp` uN1캪&ͤBUMKg/둂 qw$۳nϹB43 T @ON',m9sA) `rkSXɦcsa2=.ӂ(&/q7sZEϋ.[|ς;}Ӥ<$oM-vT #=Ȭe"*QYZܗ_yErkOZn{7Wqh@aF1N&U/@ ͌竲N_+"ˈ֌1H!dc9!~*[#6CM\ʐy;m'9.t'h'T8dk㓲X\m$Qk-ctT$}Kmiœ(hi`6ok- AQOFUg7dP1jԦKm#*L&V0$OQ> RH{Bda//m1*52;ߋܠ/2v@£̝th @lf1JUIFY`kR^GH,7KkB-*^Vp לp'[;09}$sVȎtsg_;ZrW8-P#t 4(MܦTscvN$Ja]_EeF=S%%]~ܹ,"z~$/;i\f3"^q7SZZ%_8%j kSޟ1>m}_J?5&gW0^'4@/羞UKhk3B"[3!歜giXA&pHvøF;ʅTT`4 "Gt1>t8,7>w1X)zΠץ Qr'zcL|cd$l:iރp= ͍ gecՎ9RH]1Pi5%AU# K\^%Qg[#;)4?'OO=16Œûd}%1a@l^zHuj8YS ``MBǙtXN IDh,8Xy`:sH~o 9[*]c3!dya+gazp寮TDeK`ޒ'M h_}-O9I3t"(hc3⻓Q !@#ۉ,Z]&ۋ7o,謺 Dm5eᗿ>?M,>mXݩ[F)Z>(TxX4[wrٝIJ/r#a$A17]T`KᚺxQgD\TekbRu \~L}|&}t>suS--Lc+ 6}m16o )pY]t41Ufg//(֧`tm;:BQYgxǎjB$JdѾ(ur8oYse fovky'TַAz_Y*[h4ok3S5&Jdk7KcJ'ѷ@uݵIdd2pM,9ra6^[bթ,\].rVMUQMKHnj%周 UZׅ^{*=ɁcmH0أ[1c_'ڔ*8k.CPﶴKCTW 5^7hK/5ofJ_hA.w~hu֛IK3F !:Βˡ,!dSynbĈi Y4_mng;ush)ȕ.1kTX3$zmOĺ{TÁ< PwD ፤ -<(S kIbߩ%s؞;L4Ϧ(<(vS&BpQ*A*OG6\\W7X|]f(@؍AXnn'OؼYM蟇묑(m}8 P\A;N׈}=NAU^XQwp.=j|"$\RE- ۱t{;O%R7og<ٽː=poϥ>P~ дМ(&+`1Ih ݀b`Anaتp:ڤIo+~s$ԪL<ǃBkZ#C\O`S >  Lhjh=/cQp_yr(Ԧηu4wnU&-m[CLݠ 3) .0P",*~77;y½;˝ayIi<g . lIP|S' eoR~nE7IL-~~,Ojs(ȴ4BRjmGP /+OG }I* g apV4î#%U3#3|\TC]MÁ4%VO:BIπ2j;d]~9߀?l {u+K-m} œH]Rq$U`5̃Lg 3cƲFm}ێƒkj"cO^Nj2Jd9U"olOg_ޯm|p|ɉ]0ʻ2!1WR#uTam[ro_bB4v)7g̱)pȤ8:|˜.}K3k @duY%bY|ӊff$:rX@w&HT*WnAe˙%dj(FP8K:mIgGQ6Gϙ3ayŦOEfJ&(^m7*EA ~`l? ^[4KbUFtI0MV޵R>xKڪ) !8"ht RE3@7Mfh fѽڄC+Okq/7.Q7^,0С-^,u ZxX]Am1Y870b("RxqK =лI6/lܐ+dȕ`~8v}yO(%O\V纞eHʡ-[Zȅ~LC3]HxM Eł ĮOaQJ*f@oIxVU M&S5 TrR:/Z ͯB4[իE3)Afgbn Q j{@lؘf5񥨞r: ݠjVu G{ی[09:@:Qn܆'T Ɠ;TWŒҽ vft @<]5ǁHTyO5G#vc`sG$͍JfDJYy**$G08{\ -yb"K+G$qaz~Z8e! 5ԴlM[g"z+ʿ1 @g}'qQuE79.aLc&.n-Y!cѦW(S\bϣSh& 8"7 Tv!7;f"Tueo&WD盷= (J_%} ,oHhKx Q2S?@La{‚%>(&GrqE0BbL2cnWK&@ iMժ9>x4|ni*:R:\oT~-S)Hzӈ{(6/v_bDY:v/N5ݍ[*)I6TjQ/Z rb|?*嚑i' TRE f=h*!ZCڄ乔:rm @|Hu2ֹ# 69F䳟 5@ ^8d'6?#PZԄgM_ psqD5h^}E@ :fXF敫]Kei˜3F{D1d(EW¼Q;)C`~re w$iڰ[_*Y)G YS/:P7 Rzo^Vt͔*=D7pJt2+i:(cfr7v \$ٸ9iLOs@vȚDE2YjXz?|4 =xC8Jd(CG/ڗ7R ˆ_fZhi+8ne#;, (H?dtl*a&̻PX$OdFȿ'¥*xťbOqbp#EX$=Ŀ?eWɠq7]{aRuVuݩ\5lT ]#zᔖd^tU mJëC=ծuu/p.Pvj<Ҵ'U-"hQ|suք$$vl;hX{=09B,,(419YrQWR)QlDxvgNͳ\='k`hWlt_eҦ,ż ߑ'T;~EG!(zXSPB]雌w p,jKgp!6)i*C "s@xi#d+\z>C57t:ivS̪9Z 5.zQtym ٍڼjhZSq,o MP yHI>!;<<`lM7:UO$R8B;2W/;' 7{K/120md]>5w -0 qXaϐBA2-ь5\&m(/dS^2ISe{ g 6_:$y T)PR޾Uq<TB\u X HfXӕ- j|723nQOHBEޯw焪])zo _޿CLe T#P.?ŦCX&%C{l/C+7]N\{Oϻ|mlpke&/rY(v;%u*i@)_&oOORgQ~~T#,)D GACQb RRs^ &T?Č^]@G]?]¹q`aV>^T銂::ZO4ˎ8BfY%Pn7Pͬt5ұƚ|a'6XҏL0i!N\w/c nAo2.QrBʌɅ,H( |dELd>y<. +^M_Q͊Fcr78c8qxy{"n`1׬YMo^X4d&敾 Ym3 kV 团\`uD&225f$GK7,zd񠈋n]]87̎zG,FhǾM@CrP!v$Ӄ=_'J~0R/# V) (1<%Q~a2JӮfuTJT|LqT:a f&JX}˽(IWtڸ{YErAT Ȫȝu%ayjP~+% sIZ$& )8%ӲgAohBo('a\@3H|8r4jfhC͓DP% @BUU<-cmCl]K=%T@~`(pd$pVN@U3;td/jh".gn-=6YMḬ^%`)s 6%4"|E|۠=)J9  CJe𥿹4ul}Ɖ] VT#2"y0|BW0(00"]!~e~P{J`l2YqA4l&/+lT>ьJZEej57f`NJV;+yfPuuYZdAQ 3Bvek%Zݡ@M+Ki͆1/T2T"Pp?+)vmSt@/`Q5|BȔYچ:z?еC y}lVAl QИNB%W35`Ŕ$2ǮrXV,ܗ1q$ pnEcfUy(dH]vHZ54"II2c0~n~58n7;F T-?S ${:$U^Gn~56+k'~~aw31b.E %웸_SO yvZU*rʰ cmmΐ2ɓR'h{3X=6nUrjpTpvK;$bQ[.o,sb-lsɕ, 1ɪU 9!R2=vBy1*`v 3f#NZf%|@!DܢYH 4EgV|Oٸ:ts_I})=z.?MO%)lZ8 } 4vQ!+ Xh]a_u[hw閧1e'k@HXS- i)Kr{/ÄymӖ:(a1 X|a \,{Y_(ƱFPB|^"rhhZf?+Urgq!/``LѶǞQ |h?b#7ݹ<}=@wRg TF vk [POcG(w܆sxK!H >)b*Im 5#Z*\~?O2@…0G >9(KBt ̺\-˾&MnX-SEezy3䢹8׻p"᳘˒Ǻyv/ ?unO9q]jlrs0cƕYw%?پ ^p#%t4 db2a)zhix2;~!Jti `K۹g;_DplV4}^UANJ?"AS[WPPr e7=h E:2? #A gtS@@R=%@ !og~3,C̡:q2BFɛ]S_!xfg?i} jn8ua7e::ճ$'l^IUd@†{n k3OkGEy.һr~Ol?=G0Wj3"i OI2OvZJ*$Oq4V6+0=UQ)J(+Wd?2+h5.ulvU8FB}.OX=i9~M0 ХM_p3߂uy/Ooף[5.x{]==26YRjwO+:` rVLtJNV□a?%N|iKSozJ~>'4ظޗeΨܿjO-e;9+b:Ec&BLS(I0*79Ht壟8EB2G$*ƪ: |qOD` 5ھŁn0Ux TPqZ{Ϭ"0\PoGonJ;iy'@aҘzZ>EҌ3ld@qwQ+!-} kwqgpޱ X}Dj5nWq`exCaHh/9L53CAKlˏ>n;t6ruj&W;"1u!wz>e7W$61cYfucV+e)^7z"{ʔjzg+g #DtKOmc/%9iP`pIdG h9#%'WaL\X [ Ќ1Ք[T}[r?vsV-;OK ёqJ-{<'ckYa0Qcg#WX5|RLOɸ v k +b2 D.UAU:RuCzTKsh dS0sk|pE(]q;[x8Rw,E@R_z t?1.jڹagĈ(Vr3LO1H=tqy#Ҋg*562y*X?!㝦P@[{P 3;[HjufTJ;u?e2) 7Mΐ&< r8Ҥ=V`YoҬt%IRB)Tsjy/[>咂 (m,z+*abqI?J'rD')E").[Y 8aV9Lk8<ҿps%〷<H Yb֎ePH@&CVN[@nZGXg˶RmWv+p]]$^[jUnN# /=I,=27tX70q'u|zxEDfys~$}HV/?x8]l7lah.B4/9=ULP^;O6Nbt/SË *̿@!l("8? Ձ~U31FJs|3F֫N8h甄"\ͷN;n|7(u8tR_ZA10[_QO BZmR|Թ~u.$^d, [ }K&̵r[c{`etFM\A] |rbz蛢*'GAYK[~0Âg!zk'xBFAD_Eki]7ZYr@gdg0Lvj6UFjD2V=3wHwcm8w# ~JrrVU^ܐJ&4kʘ#⇊7&YyzjRyOJYq>h a4` LVt43*ffzpIib_9_ry]K*Xv,lO{!-P~ m5כie0 #ic`"R Ą[1Un!kj ypkFbI5DM _8E6h\va[OPip4,Z \ۃf#~ތOg9xp:y*u}j{y5pMRPF=v+x%T1JvG LOOR2T=HB6@D!Ev,"7SX*+U=VS0AYr:ջL.Fq{6sL02H0se@87͡ndcԿo2Tj%қQvgNnwA="*8KC4凖8[)Vhm=|tH\6 WrU1|{0QNe_ NKB6WN(*V3S kv !?uoWw)Wo 3. ÌkO.l'Ä҆@ Svk;ES".kPCbMr5XWFۃ 6D[/s`p- .cbF>wQClYc}>@UT(N{U|/ٝ#~RJZcsESR=Ϯ/E$2k%nS6Jm;q3֓?0SQYJ ]pT.=Fid$?=J&K]^G`sRxTpf ;_uZYoKra`.+a,%xp  kPq19`gPR%uAEp^"yݯL ;fkJ $SjwW+Ka `!]T`"Wÿf;6LY-T$($|,⬳uSB_ŰpK2zyBT [=G^[*CFªǫ>OhpT'-?eP^2Tɀ#g-R[Ǎʇy3~| 90!}}cDr"Y۔sߚhhIҼc=y`=Dy\}$#՜%E 6oj-ǯ-ݜIʋj8ۥyusz0a%j IM& F㓌EpG.ve~T㺦bEK>BkZƟC9FC۫h@^F3cv[xL%%깱_q3l?eZm˶x}=+͛0^neOʭ8?({gr`w(.;y!cU!%UE+ aRkp%OA ބ~$h>v~fѭx/M^C^ؒ֯9DFT'%jJЋKZBu b5d#&opkp"a'{n_H ?7siO+\"b8zFZ3{'{. V~5N/C01܉h鉔{EiUoĿ9)X/v;f Y^[XSx*|L׍(xW()) DŽXoȤ}:P+T2x=4Sac[]ޅ"WemgpT Noڼ w˗(¦<؞\bs͔b{j֤ž_I*a+k4I=dn:Hj-BA [N)0hsҖ;~Lwkqe]Wf40ZMDr=o0㪘Q_ kC'J&_=uf D~'rQQ3V2 a^a?dr2\aEwX )XyPq2I tT&WjrRfȚ 8f㶣᠁G&7,x|8F+, y=ky=d$ޢ; זO*(+58 8Ҋ>dpDB&)v(cT˲Dr'<pU82UC7{fw*6L<Ń?Qf!%$PlU E1,zFPjg0pah.{CWYfҤ# ;ʛ@aF;ET$;8}EhRyվ2QnVnDa4*ժS'*;,#<1;1t5U zGĽ0V g>%`~m X N#7iNR"zMϼLQ̢zEҳiQL i#m*Z|eԙY8t'zQ\\ `牍Šo=u #gjn2rDZl\0kkb/S3U![zte!-IPcſ{,od9"ZԽbeVTb0KF3r !R:(W.G"{tf/| %8Wp`wMn獻S<8x$y\#7VD7W!+✖iԬ;hdq8 >2z7;ڣOdZ~/&=ӲAZzһHu'Xf'; 4_ĻL8Gc(zڛU%&5rTcH6.jM^j(썄$O!RD#&%4$Tm +@^W>3swbٳJ! C‚@ j' X]lf"$H1&%^msd] (um=|9(f J}9Pr&u7*~Uڶ"cԂ>"6-=PKKo\9gF.5t) (rGԆōo@);>5:cwĈ)=].Gǣ7p37.PrHIIY7lMQl a( .1Ke>5t{0^[ҫ+N:C [qF%'l:?wH"3[ 0#89UY[7NYЙ*iolգݑ,3^c .9) `%# )d/ >>MF[pT׊6Rxli1亭1H}XUBONsDgo@Aj^!sҏa9#Nfv zV]Pä^t|k6[u0e ?-tm& jX:3HaސGuL|x;MӑCA-GI 8t?7qJ%g{cqR>ANzrVSY}%3L}R #Ͼ[Ny^V*oqF~915/䨁b'1PĢ?)Ǵ]op}{Ҡpk')sX9A^z?dq.*Z9G`Tq_j%q$w0HvsKwdG>^^5qRԿ~H/55O3Cj'ό*uA.g'iat_asW5A[~+gEQb2ކ?TQfc>F/xAJCcF}QLy=i=+9<s^?wai ~Cs.L 0HSdtRKDfO>/s>C!"ԭ::M $fu;4Kv)4{7Dr:Hމ;Ypt`km*1Р!\zVúFc9%Sg?~mXz6,U3jlp7nFfn e.!J^ЕC#ܠ~PQhsy C4H0.`܀-Bw--O  Ǐ=K ;mTD_n0ר.zQpP[ޛ>ƚWʇ- dE_of}xDQ\hM2 2ZLe& *Cz` ">TcI4w`](-YL֥;-qTMB޵i_A:u%vTq-) l-EFc2?0 LˉgGӲl8Nf}wkfLV{:<sA}MOU[GI)B9=$"}{$R.s(WāDJC>:43TjPxk(y"A|岥i^ D=eN#t彴݋oA Fw[+;Pa̡uy V|'԰+amԨ 籍9ɻBo thgwB aTwꄘhVH^pMt ~؍a'-` hR\Eh娆d1e&oU6Lav#Qd:8 'y! uM <5[s,玛-@dd`[)5DkNx`& ]ަ8-`3^V*}|X^$Fege<5+D!;7 ƿNv%^PstZT93Ay='G)ɤt\T74k2s/WL|7m2㕢yD jf%2Ţ3){%/dVٹ1;HV㓻M7pSV5 |;oaS#Л"a!EhRk {<^Qz-|6Ud}0W@O7<;z)onAbek^s"y_z>1+ۤd2Kߣ{-%.P;|!J)L=Z5w}[JJT+SEqg #7ZEn*x*DEfe،dY$\faSНLG; gmfCnlX+pp!lRQAj pss6dTD!$\CޚO8s!ke*\3ȆmKciɖiDwEgŧP{bXQ7I0vCxۓo) G:Rj+adwD"$4M ,0GtG(gxH& ~0!cVB#`Q螯F[l%%A ءILE79"|ͷ؅ z)>2KwB(orBZuf.~|/K9S!!Em{+LP@!NME"xPy 'bd .MKn&BMT]$9߽ǎ' hF`N LAfIU|7[ն5E im?|bREq)'(@$vfs<şzPڶ@*5E@di#5R `F-Ζ</U™K~UE!>lz o\-#xySIc6G4t/jmwtuTXs̀]LUWůO٩mU %|eJаe[imu(ᡫ"F1# z[ANvȂq@E\/?KsO+\@q["bH}L?!SؿX%m7mh罓qU}"r-ȸ2t`mC"Ԃjv}>~bi_ |{_q;.zq1Ƙ;@콵iʒ$d@cbw7 ڜ^y7[Zh]o_尀>jY{֚$4j(+I`v!‸흁eb~Ũvi-/wqOŴID'N2vwa[vGh%@\B/xj2n̆BDqdE`.Ǧ{1pKRo9e,c}1jT+QSn ,dWr)Z( Khf/}!F  ߕܣiU3{QêK/ڂLlnFF?k_{uo@8vuNJ:XHk`Xڊk9 cǍŘkǝ#e5ƤG`U(\5^6;~ +~?)l!.ⓢh^ PibDad&E[S2 w<iߣ4k4(y*ōi'pRiKpi(ךhЀ.ohGdkP=*T3=`-' tZ q6p2AGWJ'_Il0^j;:-yQsF 9vo`{ 쳔4*A'eHդS6aU/1r^okֱMB?p==WR8q5@Mgs%fZ;O|eb,󴕞TQ#I28Gy9Ȫml꙱u Rj8pX&ǀ_e6MF|҉P.8 c;K}](u EwI}0|O^e3o&Oa8/WοXT#xc+TzفhGjۆ,uu*85#Q3ib.cĂ2x[)a{ m;Î͔ 7V(aB8)6 $ՁUxՠKt,Ĉ/8lCse&SV`@37Q{eJ-m֨o91jAigŪU_ǨI(kOf^ԭS؜"Y&ŘֆByqD: C:8~v=@߿90уUdj“>SeH280 %@ "z~p;f!Q:,Y +r]$"\egri-l?{"Ai@8:cŷ%#Gc:[6>SBj 3Ɋ-|̤hyEe-iEJ4l5ho$ *#|.dLZ\4W FX~ )p + 0I*+@C5UܺU?1 /woW 2!ϡdEo@%ZMu7DLS:Xl12Y:@Y(Ea\ǯ-" `Sh̭p׍"h[4Na|L2viǣ<\ꠣAe:[jqԛ[4Ƹ-x4 G8 zE܃9; %3̏҆%CU!,Iz(($d!7P-8^a3m9[#}>q6lLq-Mx,'ew{ץJS9WqoXI= ?yKޯyvry A;; 8l;*&{@]{QǮ2A,TnD+?;i,gC1!a;}}o)(U I^^!G̊ڂX8Ip5~&Ɛ2B++VOi}t/-=O|zWf;zjA<-|c =ڽ&-;7OuY+MfÞ@h$=9y,'´lpY)iGH95XvFvO)^ ]VQ(GP fR <oZr'_ֵ\6 ^s~o.6 Xa!dD"zk4͘6t}pp[NYJ:e`lCW\cC~~N6_ȭf M 7]V&6^]V4雸R=6rO 8 k*t+Frm6Pͤy14$ 3xܔIr 3]Sk!qrxō:չMH31(4[/kVdy4ʊzqA/UGk 4m2lNDA芥_t|ִdt%c'"ad+{;cXc8>[OϝS䅎X2mP{}o{dX]p SXT̏)-S.:bT?$ F뀀&!R( n2 J{wr3/)0]9^h= >!7}a{k9˝jifR0?M~똶*T[}B'gՃM(ꦮ~L|oJ\Q$M]<7%h 3ٽ /m]oJ Gn*5Џ=&qnv2,v^3C@ؼrT?h~`z™?SYxGz0!CXC#I؟h c08;E"'N gs'Rp(+GB1n_6zپF! R*jC1kh0"ٳQYߜ):>)taX?@$v- +Cϐ*ٶP41kiF/ypأ]_b^أV.uފtcItb&@4bUnD'~H#'Ȃ-0dH#eKZ* 8O,ZH5GI`lTAD&7#zvçdR.R)mA]5_F&n8 ~rp }ӝӎZN{us8Ѓ^#DbEzeUxWdtC 2**0ԁsB^ ?Bw(c!Qi8f@-&4~/?)Ӛe.=:gn;Bxr J(nD|揘*Lc! "T}N<1d6عe~ؽ8,&qaŒꙞ("f ])+0#KR7HFŏKfv3e<K:$8WFLY2bJ&=B[ړh'//!>QfI]L#).OT&`O&C1e N6j.*/!DEAB JTТʃ$18.aq}<3XxOgXw@{҅rpb y)%`Ƙ[vax6_Y 'LF΁E e@ǾGR:蛦V Jbj[G'F@}- kK:)?:M^dLq̢慠 ;' d,hA5mЖ,׏6x#`٪+/*i- @ b%GU ASoUs ~&)IF$K.EJÇ%.a ])>K<$iO݊5X]7 ك21,g$Z( yˍ_I,b"ZNiYq8mI>QOc@o>D-z6ٛUDT(Ə$T#w:s1pPi5>_ۤ~PN:L I(y@Sn>3i)B"r{-S\2b{4)=v{nUkZwAzC Cw>vKDfs:Ft˳5צe6WfGФ t&e TEZԙZ60xk(Xҙ&41?f]PLTXtof8]d "DeH˱D~Ŧ,ćy3mޫ#Dı+>stmX4c5,_s-d)oA쮮XEӟGB.hs0ߋ \i;%9U&e8r(!_-:t;"$vاxd9dxv-F-(3qcxUTG=dI|Udոxa 9̽t9i.z F+Wy>:_hZs(GińG!jЃ؍(YLR' Y+؁{^wu5bì㣮eW~AEћ.d"zͧI1 +]ɻ}|޿eSY`e0-`eڋwC"kΞ2kbkSKUÎ+`C=0$,ݕM JwDqK,(Sb\<Z!Y:,Wu'p!Pοc/#8ޙϦU%^JP쒍Cj]܋o3&{5Bj\s4O}.10*g%T@>bs0+_vs} BMO[Z)?&7֞铮X,ܘ^5lG;";lKť<0~xpݣkx*!R¨PG)(&!px_RK$}HpT YFR_ypʆ2[5""!7l늷 I&:u~HsH6zCb)!L]؃!2mм?J7]^'3LPmMW{J>̂Hn@! !鋞l>+"z 9ZaKV/7*Jd=?YxiB?:AЊͽ Hq8]'>/%o9.ZSA^pHp']3'u 9?*Q<*X x qG+O3= Iu, 9, ̅L l~':YKH0\^F(q. ?|>Y5NR4p_vzX^tR-Ԏ#k_O!@-++Ϩ'qg*urB |/ٔ <}H@/~ IO}~l'jR#\bGT@=*13[V¡H^=XNY FPsAɠXPI: IG܅l5|_x |~_m:tطIa1'H7Ιx~3a3l!Ƕu64]mȫ6NH+L0cmw)(b(8?e;7V">"Gn3ZV),)DO}mmŇK8wcg5̖P8c0OsUY;sgAA Zԣ{NI( #\~"Y`Z`JyQr2 ;>fP,0iA WO`T!} S#;63WYP"Z@R9L`5-b;tAFa.K?+z13H`ݦsXK*A',pIZ@½eCSU\ \I 8OVbgQ5Jօk!E {,8KC tp` N'&֧ 8%(+:,WDԲc D@8(7+fUKr"d%ftVt/9)L+_ `u0tv+\$:NkW@L` GywY_tGm0$r`Kc):a+R! e5NᲺ7@O&4@.CU+)8ktd8,1gKkJihE{TzZ@ahM]aV!42NzJxe(zs*cu²:Hrf.H%fQDox3Vp6\].YT)Ti$ J6o)tVOm` K'qDN~4"J\V$To1@ tifbZPXae0yz ?;]^NL[ (HDmJe:L0bb# IvS:/dq. zI8Gb'cq.mZGji_=Ӷa:qJ.hu,.=Rf6^()01T~k׊kw6p-h߱ܘόSa49ٙ?Ǭɭ7\,G^Ng/~֬y_ׅ:>>y"s窳Q:4f.~HPxb ܟ)rcD)I>a뭒 0U5!=nURɛɗiQ3#o3ppd%EXgDiTŶܮ=L?C׷' WE1V~ ⪼u$,FJj"6SH^SH1鳮rxaƔ#^U)T( FgJAbzQrG0l͉9aE pq13_0m-S%LK9!#{`XՍƮ0SpqaXF%Yvv>֞ΔM!JYt˩fqIPc:7o4Vrjh 迹[HNRɎG[쾮`+k)Clf;y-J)9V`RF_c0iJ&-Õd3"ʶB*MN(s~K_Bx =-N/E:6u` 7UBZ:_mM=U6&g0B% /efBWD^+ 9hԘnk'11ϭ7_@մ?h̵[)ƈ w= ZZ6 eG}ˉePpj>BEF̍IY0yfȜlc+1{lCBzHbuAQaO X+=E|Kf!z+PQ/ |jPRHht{T5ihpPG)S0&'.T@32c{sl 23'`,3%ӊEu{a b^rYJ~}a7^{!7%X%p%$M5ZlZA3-J "ġWT_Qhnc2~Ywkk9 d](fPN "7Vۼp[& xl;ԡos"Y.@yﱖ skj@*~YGfΌ9 I 183R헳`%LO4Sy?1@)ak~[@@l$ m|_[{ǭWLLͻXQܢ=&7&-?R?/j.502 ޷d/"5Э'T*b$V_Z2»`_M^Rir{%pu'QpDMuŲ8ɒ~hc<L+;Zrzo*iH PP{W,uc[fDnw+lAT`vs;Up|2-]P[Syvix#zxp N[>H2dAz}_N#JRj1f|bhyjQ%r;XR,nA {%>4Ov1PP&9}+m@׻GͥYsm +tKv 7" ŒAc[]⛡b=:&b7-#ɑ*Bk?oj ! r,Qxy|3;;;<3s]0,X.)y0[>YbvO IqXYNta5"}'3TGW|PPӼ!ElH.M,_5Zw?uK3;Z:5fIE`.&cnTUEp[«:||>hj{ش&VXr{{\ޞqt-˟׬]{ +p:r.UXo""XӾ6DNti[Re,JLTD!5)2u, 2_Cv0%8E8$9O Rwy, oqxӒ ]֞:P@JjoV-n 0b72*}|_75% ~FbĨs8 S/;%]pi)_5z+|[#%TX߸ <.7QO0sHƊvJZEՒE!fg3<^XuT!hpGV0AXҮ07⻫qsV" 2䀮G9kn#JUN0W̕A{)|+րy~b-)[*~`:?_;o _AG\P4) 87Jػ Lybz|W8s,A~KEX˜YyQD ?Jdn^{rY=]?mB-T}> ,zdVO';rK~){$須 4H$ ֬$P|Cs{Z \"'Ogm2O?X*3K,D,9M >Z;|ㇺ*ѽi =h [Ik_&Pd3ӵ+. A=2Q[zk8YVa^vQ-<c61@'k]N5ixfqHi'GZ \׋r\)qr31>qjsz=9S}3Ή&Cc樗1Kӹ^i+ʪır3ԲF&̏Fn[Xtb A %'Uݲ zWD+5aQɮ{ROȃAF')q1*H7]Vq*i گ"zSphn,|iD#9qq c1u6̓jCQ| `(#ՇS]@qj)̯8ʐĔ%vr&q]2I+,nߖۃ e*fVo{x)]0EC?za8|w/A8Xs EUk1<8D*ڞ!m^I^|ǦUTRJEZ Xge<>(W#Sc,XέfЎ76jißkəfNg8=M[5E>(GxC[Vt4gc[T޸7d-81bڙQAr j{V7>PZDG> cIo$H뗕 ^]b z.nכ{Y&-ItOM8 *OBc QP E82hNzݖI˾?w^s^Az`l'z 5W9z i[:i9b/-PVH0_ᛁD'/z~&Y=ٿSew9wʯ]X?%R:0c7H$"u EDP-_14u\DI4\Dcx5S Hq?7su﷽>r"`tGmq`1jZNV ռS-S0[s a6/;e5-mAd5Uȅ0şHY"=mRmyoZjzQ@I?Pk? ec 3ZsHO%LHsj7pO Jͽpbd6(L}_?0.;Ջ _ȫ c̦x"/ÔE%b4$%cs*nz+?J2<f3oRPZiqQeoZd_ (-TٱE XMg5+slN$%tT.US|}ꜭkK^ CGu0lnQw]a'"mP*N0qRZy mjxǙҏA%wyX[y33qZ9ջ ze/v8ZO$ze0Yn/KgǨzNoI|.W_5̐*Sc3}AzFLDU8: U5G=u?}jΊfT_py.oT@so7{R^Ɩ齚kDǙ5u9n4nD79;YOM~2 K "ɢ0V޾`LXÕ9SbVcs]QE[n j6إ%KnV4ȤLxe) &E#RK2PLǢA3Yl:j!FkV(r>'ٞ?.+]r,tJF񫳱Ǝ$y(TNiq0N}oi>]g9w^bVPIEZ/PY 5|~rݴLElUK:v7%;U7Mӻ8Ԛ9BQNHOܰQDپ.@(έLqsxχP^><& 9 N75m#3. 1hh9]vFPr|SUD1;z\+^x1~$J>B>ciKW.xB8O#i4Ċa!RpwF*9/loхx \v ?u\pVHs/)7/$˔uX Bv r?Ys]}\s/#v캁]8LS=fsi:kw ci[!.meIBʹ$M_e"};,ˠ ag }VE\iO3B/f%Mѱj/eaP5 8>.ExnGa i0wm sK.]1oFVՖ}yʛ -s (3u3m2~/T++³LWB.ӪG8FD 0x"ɞVa"Z0~gaR5}WR<;%gز憮ŧ]b`ESB"ͺ0H8ZRsf֌w4%s|I=;~3ZF˨aN 8m{_6𿹞#zeHCv*+(Cnd,묰Gk0 9Vba@TRAd6\9m~>lx%㛴We H 8xn@ .Q!m WrEFWHVyuiqxZZ@ _]fCOjF.:(?D!RaY;nEU(Le;ݠr˰iϏ,llT{Ď"!NC}W??pҾRA oo iuiE(]HN aW2{ T |CzVGF_7PCq Е=~gqx7G5!R,Bn")9=?,yw4HՑkapc#vw} ӀnjlaNO3=׹DGηF=`ᖶrhXԟzq>CMaҺmw 7l5 Cl#G KPRg>wg$KBJ˙10A.VC5#Hx6d2Q`+FC8T "(,ґ^+s|pcB А:ξLɅho˞ 6jMψG!=~# $S;,ú"3]~dPa;Xi`P -ْ<>ilje%f>5}* Iqat{9L#ix89!`pOXʠĻf>-wiN{/ {9k%% a#+EX̀9)Wq9UCʈ;Ox .ghC/db"lzp9%B"mo5Z=y+ُ[h&axi'?nnR |i<c̮Ajyp]E]>gklR.7x('UX $jw/dodC(ub#BKbBW &_r*Oȝ}mO()ĩ~νQVbŭ{u$f>3䊄WxssRϲ>Fb}Ϗ RUirAPfꜴ3l;x;a|;F5GkúV_rYe+r_mIG8V?gals}|jOt[ǩv%J^.IIȫ)q>$0 v<V1rLmڍ@T)mp͡ 0` [F}pHeńG} l-CI[%i-@M$ӲHkJ?ߧ!m໼dVD\s;}fW8HP|]{"L7P=|=s5%@: g`Z^FUX E9ojܑ&_]k+Р4WBؔD+sۧk#̐`(bȀHqfUe* c̨7t3Qp3:aRg1OoxnmNz\Z7l"Y`o#ϱxoG8Ոn/ OuD=HV CE[P)\jBș Һ6UWγBƋK7?<p:oEIXq>$4B`2y&/)JFz "] ,D{\Eu,bp<6uf7@vh\*q:PX7ˇgڡ xF"%U1*_|s$7k)XlGzJpPQjNfKTԧc_N-ɫd]U`k4ooL߫(FSӱoBmaʶA(f6yԤP?&IqaM,!RcG?)c2.n5^)dž xF :2*"y#C*ʋWXXٛk/!MG_9F[ENK'G )Rw_HX'"T$>wjG"V^lB.j~/*}s#+/y1˃W!BxcMOlKxm|%!TSD&#~j$Q_X4i|]~c\Bp3/(n]F]HuTgAcxi]7r8a{:p_0JpnNНs(nP|,-+߰8RŁb FU>,cS#¤!3S?fZSZ٪.L/XAFF>SrÀҰ MLr5$7^2'%Ds͡IT遉3qan( 8KDtWzXiYlx)*<ڽt|qJ&2i- Q%^~2JtqDžh=b ڣ 9v%i^hz#jmO:4+o/'V h4PC$0,|KGu' 9MhO^4{GK =]־%Z\lGf{Ƃ2 _#]`DށQIPC_\C],I@wȐ{]I`JIoENaZ N\3( `)7Br sڭDkrxEP8_ $QT4 [@+ok/r={E q_sKHzj:q>k[DSǼ~GPn5ϣ=iC:8+0|\-W21L^AyL!B 燲;QMXd WQ qʾ P 8 )'7X$QFS-9<9syo'j,_4E+UoDד(yF߭AN/*FTeFk# 3A(vGLwvƾwʐVdncOD4ۉϫtlB2;sehrEsfDP,wۆ ϔpIl~b$8yg&glXهp*XҮX+iM.K7$(0YJ\WW 8rUQ+ppƀ[.19H&@ODkZ<9I(ϥ7V#~1'V":T)a/w ɍN?H,f ~cE/e6DD: r^nƁGG9i&W(XACf4KDRx2IYґ;ϫޗ_.t,04²ұw);2|YEz\E_wWfyđ_V(2!O%4!ۈ(L"q #V;#(q9ssѪppl"\)zMYe ["\5:r+?d`ŸDssMv}*F|޼ҾR@թ2d u#\nS[6#b%w0l1k{.Z`;69)9:į1`[PcbQ'U<#^.,Ō$TT+y(VIz59텻6 +{8aW^O}H+| 5ӫbPYZYGUIM>ѹ̟8֔Af6[ut!$9 J2|ҴKE@0t $f\n}Ez޶E2pgwkLe Te_/ aq k(ҡzax]9IRFp\ h,ޑ>|~u1?C\'9Kţjjw6/9uqlˬ;qư 3kyhQi/,/; :QS.}?MlFW=rh005GxR<[߻]@D1gr0NͫkKkCSY"&~אbQ55: cm+w]g'd @zlm3VdOXA oy͉ߔpY+D*S.q9SqN{ Htw Y 'JJۣ8!^m;iG[Ag-ҸS SO|pgGTy 4m&u[xehec>$O1?7tjgQzU cf˩Y@<Ў Y:ȯFE0 XG|F;mC׬ڃR5 x=xAC=FQ$k>0wx9|K9ZG4~L㕄GQk YxXWr? vTM pg3(}zaްDw~9qza(L(_ {ʾ v\5i қdxS?S8W }4M!oj'k_#w|FނV#0[1Ju.BM;(AmpܖH%W{:׮$&FizGޅ'^lERɽ9z'́/ b&a.ci? G% EE0$hƙ9l%69b(e}b)< 9wkSVːʪ>DV3q.IM)޴P4dئWNXwQL;&UJm ΤwVC't<4΋?}n=RC7eWcyx&DOqzBJ8R鰼",|Ҭ1 ]_C.B~bCaAԂm7.0z{ z8ӻqZWvFKCy:O0S%m/pVITy}oO ɝГXGeզ= ķ,T֔z.j/**2ˏP\9t/2R EpK{H7B7g>QҜ>)(+F P9Q6󇋀(%gS8W/)kr-ۇh>@zx16 t_VCsh2/\*,,QNMtSk87I8M;O9*UqGE$@ R+d; ҭs8>o?C؀\<,ir6˚hCL?^TX"EujON'i$fø>b!N,ϲƊmhE" S=uY%4r(:9:kʙ.IUF!) ȴ3[l !hv4HK ݥb/ ] @#{^ [OB:Fv+Wu~b-&Sb% ,9p '?ԢcO̷C8[N$IZɧxFNk\L ^a8O@ 0'x X n~<ѣ6HH;hMxajo._!uXVe-aW3zNgKskT%1X7ȸ)_64: $6zXb-]02 CmtF`lp l-o{#(iq$B_jEm]+g _'v]!Im<愶\{568gK[Z#|ܚ&"PW,ENv粞|3iӗ^.HIIvM:BLY<{Qr%UM1SNS\1{,+%vZWxHMrӢi{"ͦd'lEZBʂg u' $EPÆ yy)]HocFԺ;;~vSs1Nک`USX眃] oL /C 3ԝtU-8d8!%B%3 9$QQoEJ|AV9^p7aD@MekMr=3F]<:66ulaDSa|A~M;WqvFe'S<cN^۰$q|FAE=Ĉ$⣐Uѓ9B=I_`eή*/.6>iߌ\OYH-y^ W֨y HGH>(ЙB~Y3'c卬+RȤ^h5φNUN, ]-ҁ> 1|Dp"![\F>}d͡'wuw:lq j!7i`[u-g H 3n@%ej ɑ}f}P#Ffth;m øYD(T{58 tArk8p{f b{-ʣ8٘ț6cUa77l:VA& :ӋL8=EYt*O M/ΈqP ]5dBd}'@m*@o`ُ+9'$Kv*%r16jèY/{zw^ "/= T$+loԟXt)r;:rkwݷNX$ZhM {5!&N|$91}⩠ ^f] / 42 $12[X* "9JNJdʊĖ>8RҌers'FffxkHί"U3M<=$O7]LvMMAuSO5`,pwuvF O2jG6k9V=~ia@?(P@tEM@1tT*)Њt6?I0zȡK&?ƘzL qIeT }&ah^CdSB 8&a&^m$ @] w*wPq_X3o~Ԓu XJyW$A QI3xwEfJ\ʠ H$19_&M~rlēCr5r\u:\Pn"4AF,1`.X}s4 Q80k+y7tɘÀ͒ (1J =gH$*yNc_Qj/UZ\, ^ 9K=s!#qH"t_J2J5|| kvmf!EKh|40R[lB>Ӏ %(=,-v"#l3#2QIyX(u:r;fa80p0!y~8zs-TDt"(1Fad  6W*FP\4ܡXgJ)[:>&)ϡ1ރRt/yKO0~$lZ|6ciOg{zL ֳ餟/ޭKϙ@VJX?a\|F%nMXW%jRK 9&PZҖ毾!bnɠo Ħݑi|$  J( [if>d(Mi M)X+): ~A3Xz^~0PjMIOϠUVnX bs%n(t3ez6U>ztpM6`@r53_IdJ@ՆQזs㔂^%&D4^5B)x&f&#%hd\e[[+~?A@ d]k\f%?t8&[YZb%oV,+ vϺiۅYz wQhtʀ{uZO3rHW a ̷AK!;ig ŮSa-FebXѯE;yD= [C‚_=8€%ٷ Gt&6Nt[z,lO*%WFM֊gC=sM|~+DYP|$6BR+طIZSJ0B( uD>t=mfâpL,` dfm?b KÆ]pdD_K/ /f^[%9Qe[e *٣߂cIk'Zx [T{WlhT0)8ѧP57vrՇK jPYxw˥A2|ёc^/筯FQź;-B1y!@W [L@1<>gG(dQ6WZ-8K5Ե͇Mgh*ɐ\Hs&'`6LkhG!Ab}4%AcF ZvĽά6X}R㴛 Ո `7Q5MSd s0xw!==J+hcLLDג@A*n+`\ xe~Ȫ7; Ifq ڬ0#oq!=a.8~/)YՖ6vn2 r}e:ջE$,TMO 1M#eJ!8SO 2MZkA&-'v1CUqU[V KO7$u!=o"tE$Wn}*ѽQund2iu #";1>D5bfl!Zx@2yDw.wSd`46D^%Jo@u}G0aj'5&y8*J Vu,k7Z\'DWk-$\(`>wi#mhD͏B6\>TŅF.wfȓQ|nv"ovE{ksyydD׿te JUW=]7$EQAJWIɸ쇡 ”FBl[6] _ -HU9~.D}%lt F7fDvr=&rW<A# '[%j궰8ۿ ~=S^k^$%CQrζ;K[RqJG]]߉L3wȢK&ZC?G[6u?M'Zȷe]xAڊU1@btAٔxksVY:$a^6 +%PϚ|Yk%jLCŃWm;"M2v =Y-M z6JzoN%-wjzˤzY~:HdCsꯀ/Gs"K@EgNڛ,hb:À⹟cӆN&IJ72>mgUT_X+˴Eq]]5wH[0UVDZE)uR䧕*pM(N=\q@&49,tņg}KȝmQpWqrf`L9YJJEz_E'n\ ˂ X_=O4ү ޓ,Ż<"0' D{ڬ{DvW1\ѱz=%7v=# gzyA.mp^xWnG(5 rCZ{#YRofﺧĒD[Έ?n8E,xPkǢݤ6SkNxp k8E #^t1,!Ctu)$͔wZ:4:/}f8 #0EȷK.}Ҕ*a5EA '@Pዏ5 9Q!NxUo)f =mU}qz~U_m7&4\WS F Y \>1.`(e<'J'SxyNP uAnv%"*n0q7L=H{zk {|P"I7w" _^J1[W1N?I㥠BHHO8?~(?p}>H/ _BLKR'$W(Qr@8B+/0\iRXРn!:va9spmkau|%LKV Ln?45se̺Fas"ce㹻MqP&c4Ff?9$~kU y\R 쉬)<%(6V 5oGd~y<6uSs^}c5㊿.|I+;>ۍ]T0ex8_6b+%SG䤘k҉mh dCV=1U(}\' A?m]/O9,a DƇc7+ K&u}eD8\)`Y4c K,yWx OS(F_'ؼkV `}s()=u13;{#Ovz4 ֛uHr)6G;!E;s djC9()G|Pnn(P࿴\~:UBZLc9r Jn- ivfub'd,=e8x˴BT>ddT2HLh[M}ꮆKEiT&(}de͍/j{]xO![ؖn>X"bX LεͥWJwU ?hR?:UUH% tQ90eT\ AH$$Lt7g8,sQ./Ǖj)aC5( A)DsmF`ȇøGDp&#"5mcC$RYB:@cr&zO$1X?4j̍y3KF}%w|dM}1j\ooYu#wFpAvP8!W+#j#?I>5 e#y$?-\>9Aa;1ym^Z1[$/bRr! fW`c'^m>a@gЂbf|q,e@ps 3G]M!>{zDofqy^ ~OpQ$di"T0o*V$9Cg벷 +lslָ)}#kYs귰ρEY2݃2+40r p=_ip1Ħj7N$}(c±x_jU2gV&3b0-M[ܦRvKW'ᬘlȤ{mv9WG WFKBZ"lU1ŌS{y=O к\ψh$kb|*7Wrrsīi{%n&i%\E%;u]-~i**KqoTp& ո/PKTe1B9##Jdvoc d[ H=AN) ۮ@FxX4qj?FY߭S5s_<}5rJx>WLC$bD@Ȇ : Tv~չ!4Xb,Pc_ XKLH$k g*+stʐ:I爥4"C LÁi-u#`b/s%879rbG ?C>BǻGW0ȁ+ښ$("I %*3'D'ۍ&36%jk֏!7!,{LRO'gԳv)`2,Y3Tt i6ʄx[hB7vNcF#.pB Bʹ~dGsg;W9~8Z~"Lܢ;@g6,t3-yt^pS-`sh"nE,LbBm)6n#U.$HB@y_3Kw"T3Mm̽]\5"PnxSIhLN_svUI!2Q,3 -'KtwbEgk1%--,O(@,:G/ct8XҬs;PMt4q] I.clLo۱cm6"/X]<EӀ~c*5I#(qk)Q'+DYձeT:j3}SkX⎌q% aby5 ّJhedKefzΉ Ip o׮\%iHj}"3[r e G laG,.>ʩgc `,twRgEVF䰹$Ώd_?]Cu0mqG&ZQrRWvT^kl#2¿GFlzn':?\hkݴ4wDl!+%KF" LA HVLHv$GRnu]E?M+ϴJk s2Wjw$[U-Wġ]< 6)J%K'=ra,h)x'W"w;;&{˱}r֒|qݺe =>)}v>A< S#eYal'@oO8u RƭQ{V*v"zEqrƱ&$HVxTh!(Df{4+j@=2&l2\з\K60{pk?9R]1ɝ@a%rom+ $ KFjR`Ƒ0hY,E𝈕`ҜckLXI?7r5?ɄtF ~9,&PYFjg Y;0r[m@٢TtGhN#J=EyROaVĮ`]^Jsv2N|a! rOl3\G\Y'tTt^1 ySR$h&`@EWMݰhcJ#jh>}-ZHDe;viῐ"Ls3"!WbTw/CF_epοѡCF.zנK-JaY ̭nS+p`NEX)Nj!YOߪ\QM t.R4G9evSTH]UK{%-xmPuqj08^sr&@PRqQo5 ۭ >V? ,~[S&=z, cLpQ j6 ˏk3)4ЭaKŖb\ޅėUxnb/)<;z\n?QrIc7p5}Zu:byB!"'ZlwhP$(R4 s+$ARZKcy*7=L^$0v6F,ڀCkI&z ^@@1J^aW9\xp 1фH)]QA".J Ho mar]{[@4"/'0c[IEJ rFHr⽅D$KU!r<_#v?q+z8f,Toʍfclde^3~h$A/hǬy  !kCEr7f|ç"d(W6KZ*M% ( hi,H9?s蝹|=P(F#N?ݣBಓ2֬~r̬"\͹T:T+(Fʴ,:rTOqh_u eaƔ͡HE/;ˀ^\30a%Pyy|sw?hq؅a`Mw:!<AF ɣ@f 1 ";R_tQh?u0~PVA|p d$TMeB Y B׊*e਼ܵi8`X7r j3s%hZ t;{qoݭr{^"U>0ypjAկwLt  ˅7LFs6ybk+ru/+Ì.չt]s+1joY)0~mH+,ױRJHaI1kjooSMQtTA,x i4dHD-&#QY[c9NZcw&;akxX-Jpb%VyΐDMm!VqX ՍId4С &ɼ\MWEQ3kɳUskm|V|#XFFA+vїւ&Ϲo3Ifl hܿ6c|x߽܃"^,@80)b0gv;(y˯%zU\mKH-@~9gc̒44P lW f^,:Y[*MXf/e~Rp;T T@~|Q5D~J~^)*Et^'@U7eäG}0g1aV 3ڂ1" d|0Jv~#΂;hd Yxئvѱsh|] #Z$z@|6UzI(|}R&mZT HALJIh9xdoN,2`J[B:Ve4٫P"5'FOpO`EjHBl:S2KkJ(O!A}-0ktxS:;f"E̺Ѷ`lkmwevIÚ_,Ӿd̗s*Kh׼>xGʆw; OйGwř93:B'蘏#xm9t>ł5p}7׀_Y(>|y,+f^Q^AI*af!rz*u0K-ltKkZϲs;il@TV,~sg :!ږ#ݯuPKU2**c[v05mal+'jQltr,m~ZȤ2h&ObaQ Lw]JcW)(Ջ#4t~7,YT*A=PJUoҸNtRy݊kf n)y]jw:PHFy曠g q9&ց ? J{78bZׁN"%`VC'd1ϫ8&R.=pY[Aml3an{#mƹvRIhCCGr>ǵN8' L u(qqkG>]kGcd> K[J.o178?cu[pʈC$S/x[+?\],0وe]C뷒4rB$JC^c5 QvI l֤",E91YIxƙKtxIJQT(l7oM$ߠamdd(Hevi[d弉E5f2Ȼ g851̶)!#q95Č%QNvwT[ Vr $V/vc|7ǯŗTSC8l<lm| ϊ')0j  7I;a EƹeH 1ՠZ%lg7wq/2:%CĜ-frt_J|f?pT%vDJtmj5T ʃ\Uv`ްhg_Ibv #^}s~N#)oxbC&7Z2yoܾᶤBÙ!ef&64|ⵘ$3֟SRWaXlU.hc;>F7}x:_<.r)/eR Ԧ]`Ѫ2lFc7%R=?U_߳t Y19 a<;y-≠ZI ɬiEeEꨈT| ̟s -4ӫ_aXl/ 8I_A#U 0ܜTL柾'쑗3\dw_l{uE;$j}@U/!y4$٥(c[58g-LI89~Dyн9CqŔS]+C-Ƒ{eW\_|Y%9s 6*I0?=5ΫYuϫzwKMhB@ ? nE ?~}6B'c!tP!t6= '!RYE*PHeP]7r6\"daX4kw$0ը0pQoA􆾂![EzzZ_dYK>x@~47UHK/xVT_%WyaN[7?x(& A _BӴP7 IM0W$綜*h>XfsjTs1;At%5I2Ì}[ڔƤl웫WN@'ִ䶯RxR `DT\~lܕ31op?6e cd 'Ssh@דsHJӾ m H> A„JtP#fl^P/Nϼ>h6<8/P{OQcl睥lREP(p,ʎim8cX@;)#wUHA[Bq =0g)3b'daX~w@zKКKi ]Ȱy lӐ@ETtON JR6K)^ Y<~\d#(QC KxWr%#U_AU= lx 6C)r84ɾwII!ϩA5h4dݙ Na,wZ(Gf]Q3X f .mҀ\KsHyp< G){;ypMu_jl2CuhM\7'\6?K445,꒹!HtB}OM[Wo7i6=7`ZLYLN_SƚhhNps-uP9-^NyuaV%uU&Z"Ωg򘰏$B;D 3o:{aaRa)%*^U.&tV:K68߈ѱœ18{A/`ŋ?-.n ζqB-7IB2b~b% "#$9Ȗ\˲eH;V *uNM U]ߕYXՊm/΀#F|wm6/*tmugWlҚQIJf_ Z^٣PC;W)!zxr}TQM=>g.zA=];]X}7x/[{"'@?+u?%fCC1\䊵yLqTN3}:nѕ,^ ݣwPkHr<{3dtcx=k*&kUK@pIS3c>[ fDǏOj'LUSOZ[#Px4Zi٠:w@tv7nJ%4GOuHAK@4:"VĴ շ1[V^KAK!<֤$l#Dړ (}*q'{E.J Dd<BNx- sfgho&pn :e:Z*D%M7;0pWET1xxz1n9UʾnXaTM 2bN1|@BTnj{B@{i/^WC2۴= !t3W3qdnP87a0"sXљДl[X::L_4HEx\Id@]`3Ad <n*gq;bwef!}cq8΃.YZ@ ƣ۲MpoĉlN:[ Żi[.?o:ifՎ27Jif>%u83S %K1 UB@~^'}TK7&}3J L&_/Ҋe-.nA;ɋC/+sλ I$ai--yS ;Vۧ*lo7)>\rhf\lXE69s I`j죑(# p6)Dk֣'āJ1_Ae.-Kٹ Ѥ7{ Sd$a+ bqsuaJZ?Bs@{zւDOV%]1gUuwJ /ܐZD cuZ+V"6Y`Hr5}(J}6Jcཽ}q@xY`%_5Gnl5X)TS6( eS( -3 u:| =&}~j~bŒ VnH!.1z=4gvT'R9@֪ref~,hJ;<̔0.rK)8Ɂ؉h n/ɥUfΊ-D&E:!wHE.΁}%4_,r#>f~g`(_Aro:V?T!]zs}PSAIN8BIMHH8BIM( ?8BIMCPbeWdthemes/twentytwentyfour/assets/images/icon-message.webp000064400000002352147176754540017560 0ustar00RIFFWEBPVP8L/&IO#IJ!_?2ڶ͕Bd`1FU׾s'DmqfcF8poҗ_v}/ߓS/+?fBg.Z[׽`Aeˣ=A$[O 8/Nhwy1~=m` 496{7l'm;q 39DwF4 i;?:fAIjJi*PN>m;JP|: V=f}NڴcvtV~i$i( A_3ݘAY>4cvh*KhLŚ1L[Kh ƌӦ3jbUH̿YƎـΜ6vxgO[3fz*@x1bL+mh3 δ1bƆ !fJw̳$x3Yw7΋ڠ1"ygF-mO kDz=jĠ:ahͽ'"fR`ev%6xc}yl0/fziL0m`Eȴ̅aeYX'㶏:gpjv vqui[5mpW R˃m6`zpڙ28{٭T7范Y\m7eS@r16wl[B|k`r\!h&ֳhr3ßD)mjM}0kq[L9mrxZDܵ319 S A%mdȘw/+N3I${2>ńa׎3P y`g_9L}=MI 2fIcUYpw6Ẍi@Ō6 Z̐[.F0:1`bFOFgpThLK1C"!! key/b)7vϩ?yo;/'7MO?zo?~[{nޫU^u/d=FS`)x@eG|=L>}k[G/}6?_?A?z??~s_ooo?P~!O?gE__>?OG+oo??Ǯ9O_:ٿ;tO?l? ?jk̿r/W K?ϜoOn{_g?|!@@!߿E?7G?oW5Cv7?cd́芩S_M_2!mVF~V3=հ+{֒Bw7QxDn"jVy@=4zzJ/A1"fҕkO-TkxD+qSHTyzclN Os4ƁL7fhC"؏|$F8dk-;,>ę%[}p}|zzx-AhE8VY,'Ly֠_xL}ڨ'ˤv Ef,#::(-i]Vu%%w8`"$001 K j؂-NHVyV@Qx[͊"GqyE#V{#7o+ŀ4/<:(2 %K5R]Ro_5P.^^T/5B9t,H60-h"@uv?g!b\H~Qr1ƕ!i08\!sVY #7M^9TsN]Pdz[pl.l|N! Ƿ?gT)Hf,~*}ʰ)aT9`bW?輖`#9j1?W0~x6Td.ԢW򈫹X^PYT&kpMe3OZ 8m88xUs|' #CC-s@zrEde1 Z)8trNɆmJRWHq[WUVt؉|>F uRN.¼1 Qm^QR!KewI,c6!~eBC{d%Nk>x %2imឨlB=V42rˁ6c8cwZksn""Ǟf:j%a843&zФEßm/G` oddZ1xA f+]C.c>B{XEI:땩f^%__zf1:xqb`w$J q3 Aw\lCF%$JOġKʐț7 Burf1W 94ж:Qz6g6|&GI?#eZ˵2pV=5ɚAEĝ?MãMff-~,\k)ҫa{?Onj{G~(ڠ80<þ2HA;|IP}=o|եKދ Ej0d̆Lb9\u,C`sG+&Ɔ'\Ij ӲHncScͽ XpN5%6Gҗ\R4ϵ5ҨC>gGwٔ3*=F.-߫1OdA xo͢N8&c/:Zq'lkѷ䙇)S+壖D+* # whԘb\K׉חr@9䥾@z3) _Ͳi쬹:7qd]C^pGfXHu(7+o k+ߍ!4lj450CO,9{xċJC˟{8FރX xsZ` ?CAsHjckpf*c}TQp[*өh*D>d7nLOX̕ݼ٥`ԸE3АB-ɻ gp-(9UVc{}Tӝ ov3:%16(!o;{&$xGwWqa{*q]ts\)fl: ʼn9On3O?wBJ~,thⱡ[m.Zs[ lU mOEaRV '_,Yb:txJ\a | B$8NoFd 6kNzMv,40rwg~@Ћ6 >9BvvA1J|kcR#JpW:bHR!84~zmĎAuY+,~i=`ݍ?EE̍D1(zFQn"i hfydw~9ӝ!@J!Qn nш<]k儸?(كd\eIAi3t/=p}&{NuށKWW>z`Rg\i=E3hל71MF|e:eA}+Tֻ nlKFƌXң/E=DS_Wu Z\14{:}g;7q̈́=}-6,+ $U UW3?==p  a@MFi=i)QÑrxq86vJDa-890Vg:~ȩ\lE-<{1 j"o]dLB9^d5z$(:'8hIy,]}"ݽ ~enDž:k1tқ'+nR>MBeC &]GM,VCM 5/w$X!C>ܙ|qO9B8_,ҿa(YLnj byxœCF.M5#Vx8wU4 oG%w`}ʲ{Z <נBAH_yl$ڥZ__3S##BUQvzWTXgD.Jg5‰251P a5V֠:^2pUuŇ.|Q`=?%nKi7qyupS[k(#Dzި 6WXLFc2ϭD=ҽS!n$( 130-oX~oL~fv%F Ha|ETWGMc@$6[-8pR1'|?t{+y:$n *-p2T2E`GHD7xʙ,ˏW)mT{QnAqz9f'URcYc6)6Fv^))dLa-c|&IXŨ tNĨ#Lܻzt- ̰<_! ՛V@P 7 k)mD6^@Y55eb?( \á}"@e7ki%@˨e^Ke-1?Ђֻh= <o92wJl` k$q`Ѓc/EoS{kAo 򫋷 ԎBGŞAyjp0hRU*fzmN@ec^g@mc,]\"q83l^pZI5mĠ!?5}[T)85ZzyNgQx^|6 e;3i/q}Jδ=UCpDp`SLd°vlquM qnX٣Ѓ޳C+v&2C ]֐X bߟHV!C<( B.X9$zUmo k&|}'Y>g`E:HYL9p>͆B_K)Ƌ35*4MA䰌 )|DA''B81=(dLJ<^y8 t<\I~a܈X gsV$88ȉe} 6ۊ/;ZeP߱_ zvX>ͪ&!a4KRJvO1 "M?W/o7Cogc8h^Ѡ܄HC byqZ "QW!o?9 E1q|mZubd#p &.nוzCOO_K u /62rR[v7]):?BHWNI&^*Ǣxze6jtSG)嗸M/2> '9cVp}>_{K=!YZ[}Hjjǵ }8V:%4XI|rJI]s'+IF۰kz~gʖ5N~+'SPh )Q  hvKU }\N\mTUtno!(VPE\? $ԼN ]n`3 Tҏ5'|"ք:[B}ۙ~#!\u:Hm,b>r.&kK,xKT{~ `(وHasant Ou">gI.^OAqszvT>Fe\ݼp=,3 |[D] LoQu$C=% $y/є"n<5pĦuFߥ]1vLoH4<@3i1Y-6_XWD^/T0SF8T w>_ PLe<;%K%|/u_ٲrW t_`w6P 7/8بz̀Ԇ{,k#[ 0+56P=#Guq-2Jל 3{p2;;R~'ž D$vF淬zyDZ]PW[{AU,Qi^Hf]}h)Ybx18n>Vhf㦶/H6\$H9Xa/!XjwFq۶٫vu|48h[bb12VPGdK25v 'qsejv֒ 8F@zUrdecG=2c@ b[Bl%:t&i'2vJ:E۳`7K!8M qĵה{dd!yj 9-$&A%'5Aȿ F -|eei?s{S AYc(ג́[F]|SBC`u!&`qf**HhEw tm"K)hboKZa5ywjɅ+[\}6l/?ڗ6XA⣮{s `;&5obzO}և8 r~^ɽ= `"m>Z G;hO g]7},\uaMDK{)'*x/ Z*.OR(Utf`a=9&J9*W`ώ#WhVsNgey#P.ǬdEqjE(ӳ"Ch.G.$9*{yF&֥& _w򍧊A@ q&q_ ,Lu$,j2oWH^\jzig"ţ#<I% 7exnD$Z _is F](Q"IKqnfuIIy@_87(yd?zm#4\]@`^TR?E\! A٥_xk5c ڭhW ) cKLf(|լn}as F:$S۳^Uy ~Y\cT1p:㵠)[{> )xhca&~(v3O`Ҭ-b@:uRK 97~Eb^KrZM+)h3A';BLRNK5F?nt_۰  [n3dPq$}=K!%f.E¯cb"x魚 ^iC% U&׆8`§T}0|a>;V!G㉳vk@\rw虸A\`OLq@sb5:G]&i^*z^ .N`& l%TuHqd8@k8Hv!>`l5Wysвp׶v/NT;6nbB% P)S t(22a΃XLTu 3WBH mL| |_DP5t?7o;5g7LP'k*Xfؒ+_=/|rS۰zwKQw6kx e!ۑ-k*bHAedBZdz&_OHUaGGLI jOQtɋ,Q;p)۞?$NsM=?԰1͏aՇMyeC) Ŀy=K8Īyl'q-+}L 3_r}yQ[caܰآS{&@ol 6[ Aaz%0**C(!^,bf@ ǒ_CcԸ9ݔ%k圌uŽ1ȟy'HSдM2XU6~0jP3MIx \Ѭn!-Y*x |U\l=Z[;ZBUqP¹p c8Tdv<(aN㚖)VK1 {vfߪWwY|H*0_W>t ^n8&] K2NH-@ͪ} $msѼqn #Wg3##ͰOJj,CV6cjUT*0;X}l St"ý;t,%ۑ!A1<{)FH-5GĂ*,;%֐ S- se.'UX29]w8mí 9gVN-N1,yqr̖˾ߋ^oE z9O+X(!'i -S灝\s*~Ȩ$ ` ]h&r"L[WSJniq, K{cJA< : ºi)d {9d[|k̕_o ŝ%[+IC$ݲ4װJNddšns9{uKJYhГ-|a'&4*$I֖Dy KN}˂CIS:djqLVJL蝲ڏ;%D{FoQNA1Fd f`WMu$q1 As X{v(EV>F"ISzm1Hc4k'`l aY +&*`沀X [E%=ݗ^f};O7GD1u8iB[اU;KcDH{F+t9/BLjXm 2"`B)_tz9`7 &Zx\z>cr D ?!%6 @*4)I_Su\ 7`Zu I !#J~-ftIijRK2w4,LN[jYm1v -QDQÿo*R%q!HE3[АE<oJA64QX.Bc/=$`6iȥ)cX`}Eg"8*0GB'Y§rj' QpakaG(]),R=$Oii;u_qJ8RIil,Q.Řj*8Ӂ.lo(e-0f&}a,?c|Lz}\W 0!AX6ɿkƮ`Zy{㷪oRpwbgU/^xM)i?\FLlVQ tTvڰ|1HƒwF~"'jک+\`}$bUx ~jYH̭Oֽ1v:Ru^A vK6S[(zF3ח ,48`QvT|/.M*8Gf=t_sr҆'j:%A,\_s4O7x%-yÍ}rЯIy `SBewias."nQ.븪n cDN-[`ޱ-{$ɥEdI,d~.NDujuWI}ha17Ŋ3RQHN]_tFPM?y:}B;2Gob ?D3ˍ]ntW '>ARrxB _xx"ܭ\؃t19d#Es_ƌ;" S řY "ރ+ ԁj٪'+ ?9o .[$dv\e9O_f2k5IUڍVMU{=1LM4#yVqUH ͌*mRcy2Aϑ`a[9!(Lth'?O㥝IXm_^\!4@dhxAa/sm w3d.993k]JX9Za-aIQ]7 캒+6 R}(f0 b=jVvs /-\#?.̑]G^7pWefA;^r?b%N[1@VV5 '=t9)#.=KPh$s_X,;?9l&v28F8F8-(=C#0@oMm\Ro@#w"-eJ@ FXSB:f\SpPB0BLIRSNG)ZATᴦ%%/~%;TMr" ' m!FVe!> \ ~~.&~-r -bVzHD|) qVGD{H(l 3<+Y#{H$ p47#4pN`I}kZH(ʁ_r{Bz-6w0zliPK1p>b\aƶ^(m75AD0w"ɼ3ɳ4NJD5!a(78CrjVveEamn 2U ;`4|("ñte@ȥB7U LkIM.a4+^q');TIaCk~gbAE.v>L3<"uH- H pQǗ eCMRX<؅ZaCP]9i:Aa;o7NEw<Z N;+#WMzaOqlqKګ("6Hz<3" 0z'ws0³@"a[ cVgq6G9]eӝ#/vE` M~rLT&έR l@gMЭot Go@.jow!<`a˙B^$e,UPزMSP5Ҫ,Yj>c\9$KΝE ,QwyLtz`S`aeMJz fmF:z8p$Q1ڪrYds/2 Yj^&IrmZ@ͥoFT%U y^wXaINEڏN $yxebf =} hZ5bTX P|:JL{K.JA¸a]) HpHR%RER\\D›׺sjS)ӑe\TjawѰD?5(yF5Pi'.cxl~"LD&lQt|2!Azu&;S5YiJTyٷmo(lq#X>V>)-T_R.y~հjMt lQ'A(y怔;TE]5shYh(/!71Tֱc _Xp7Џ^rUf]C DXaJdB_`U" rȗ{= 'J iF^#N"liλ,nc8R3^dyLkmM2,Xf-u1wEmZan2n ai4&`[݆xw^SgܤG"DHY@vt[lt|,塺&?\7Q\h?k4R#?2F&;^,\ك\8]G g. Rn"q2H¤e_٣Z5] !Ls"N&lBnهhwh-Rą·:͐[VWzAGT0vz#D1E ȉЅ~qK;_GJht57lL9^2*33m|bND^7??J,5B+[}tl.lS*cFot<+ -}k4"=&3o>_2*PBjK<h ?wX_ѝOOx^L'Kq_6Q? '=+tb 娟޽d u1Q fcY,u 6-~vT&sȢ햾[7Ve\PTLU}SzKY:gr4v=) 7 *pf+F&AWlJ]ح)8iﯫs:lC/\˾b %)Z{QƪC+P3V[ݮoZ0sTa<>qͨ9R*%H =v"ud7IkwI4(*(%y]Ղ~j'uwS,8fN3R&IUkN; 1]mPNm?-8+&uC~(UgI)qԉs+@ZmQhS͔!=sӖwnɏAgNP*3[9zGzm>ɔc"1Pl'c HbLh c xe3@E|tk rv G_9Mjfau +QGqjab:8ٽhM@)M TؘNfiV E) =q pD$EҬ#q]mSĭӌ@ IG7&ZAfbZ*w-%vԝ \4dV6xhD`Z\Ⱥ+~ 9*[f+|:60x&٬FHQ!ʪ% s/R~Mw$ۏM)p.# zPپkf]ks;[ӝ9{,lX8S|@#1Teh"$\E …+b)]Zy*)(m$qJ&TF'/aY"\o-ϧ~"!_W[|##_> {Βd1ӚN EiZk> S*~ߔﶧXm$F+/۝s9!5-񪀄)>wjl$:r)֮$vybY̮$dOy3 8m_jcIpeso9r#њ1N+Ů7C\!&鯻 ƨ/ URyUC Ů PAlQ|[4ň'9tefCft'_5?kg?}G=:lT@癟eԷHm 1\Lk|ұDY @1/bY?9hoJ%)NFӼUBxqY"|B4&”oǛDmjsr\R@J^5VCĞWAΊtk},b 11j(f ")km5L0c|Bd_B}.%X|"os_VHTu6K'hcz }eʘ7Pm˻݋5bȹc@jJi{աvy`pbuI9AWq\-4aImo|PΦ4 6v,X mlh2ruf1z;SYSc؎0.$!a7A1i.@h׹=e#7k]`zRNhoA[S>d T,kژUc( 8o Is$bikaU@õn3/E!,TN8aDWhWar\46jy;" isO0ǾD,ĶLOM^=.pyߟ-k02UF>MEߴ;.2$VHVgw83A׀$tX,ږ}N7DBmz*̭W* Nh*"8>Z8&98'obmYh/C,(\iԥ13刄]JIS._')Z)#ٿ]]Y%,M7\ڋ77؏jWOLEeP |!"d!vNl*Rhjhܽ49:E'$*6Sh樋RmM:²*敷 DSzgX[>gI }inu; ;=-aH^Z=3a`ˀvF1T~;D3h>|P?0t4/9Bd=(VBx̶*<7Ld"!*JpsCQt294O+MmMC(Eo^űE8"|_<֖,&:!2YǜbaP2u :)$H<}!XBպ2ىMK:G XBjwCåfK#!7*2Ϙ.L eH1:("ٟ5iLi[RXV}S6@׳+p0bw$iּ/'$^]([k Ѭ cB 9HfT K.fݜ#Ж%I1I]䦵 23HLkLG,jI&13U`!u6[gO]8UDhik93[v*O lښTc"{= %CDi*U*lcLEQ1HU z%zEbiF?4e%8ޘUI˜e' 8g]܇mPnٶ^YOxxȟ)I6XucjJDRX'Ņ'ΌL$ϴlHzF:uR:T+̯2y:t]@]^\"Ep./ $cBbې 67ׄ!1^OwYX&,J+dm5iQiE`qXqhH$7 #p:D9/P!Bi>7U3jH[9otɫP襡d8 hrO+"*΍Uɚpw_]H|^AabV.52JrA1"Da*0eۡ#cjdNሰj4AMjZEcB1G2%Ŵ ަ!(r~Y- ,'J<%`g^eCْ)ȓ!RBeiz|}$riIS7ej}"q0o̍F!N(UtDܦ`6ʏ`)m>8\n#Z,Bbk`\63Sf*ŀt{ĕ{K:TP ?4shO{tVimH-: d+2G3H}MJzRBKB'Qn _tZ"(cw__F4'D8\:e]5c X۟y~J؁!*Х|W]mя9cf6BߴK=/} %ajټ --B++t6 ܲ͊8;@b"7#ı"5G I^S^ }EC*\2OC!`#P/`՘w& NsLS5U;] oZgcjW}UHqT O4SKp4W*oف>~1S%OO">9֡ D+aPĨ잕R۲(8o){8'%Q^+Dz,|+HM^9Hkګ{Ps(QO] l<a{;OYv/MIL4qGQ%=١QǻPhih@&Sr~.ҚDkp sʈD)4,eܞp&9VIf5qʵ~Agυ;Vbwbu쳗Kn!Ỳqؐ75|:_TC!h {0L9j5Þ& i'7XEWbm/Ԟ?P2a!wH[#:3±6#cPXnnlK~uq?(T_1ۆ y찶~lNhhZDPZ>c N@560ˑw Sc1Jt= k".W%`F6X9ɕp}G w(Ͱ;273,?Հȷ1~om<"op%as)-)NGVs: Bٳ;(Xt>;W![OD«mf2r[E4&KXx `wA "`X&*:~ vs_/t&\zri-chQeseBBG4z΂=e+ WU%(?[xxss SUՒD1wj+\~ /3T2ې*UFb*Dxe^LI#ߕ^Э P}p A克;X3Isٻo55%xD&;S{c׮Ϗ&kMk$(#&QN{J:jVL<Y~3|mܬDaT3R d Ia" *^lh4r;LQdmi2/z~I_ҷ߃P$yySTS@LuK(;'=rAX8NN~V}:2JrG8v6~ފ?Fj.Aǘ5R&c#ZvuAr7ǿ ȡƻk7R$ ƥu2U~'G9ٝ,! ~k{-+n搬Dڥ{aQ!>Je;.H<$an$F6p5WbLW{A-{ɌiMf} + 'mKx®dqmk^Ա_|eBb+Nh4ǚgW!^-t2?&ad V#c6Ϸ嬖F֮2XצW7ȕحƈHdSMU1ƀ~~^`ٮlxMi;ɦJ@V$! dK\Z7{]<mwMOY2lR- / }phcUtK}c6Kb.sxMʊG/`t'cPAL)jPj^_cykT[Y/ eaⲝ{S(ޏm#C#AxǁA& ug^ ZW1dOPT8aLɪF[,YΈ*m(ۚx(i#c¯[NX4F K+a$1'4;|Avt(uQG9 6QOKx)ɧWpRUqm >;5a]KJfF`"lW2 XJFE8>؂ SB7j ;B4 i7& |_Dmj=S$d7~#u\<,= Hc|;pD" ɺ4:ծj'Ck>NDŽ|R3LT/Z0Z|BQxʰWB>ˤLH/![o_#Ajy@Bg$!s!% ^eIRSDrnQQyxTൗBIZ(ٺ؂Tl|#>HdDRXw|,=%6QS\ĺMC3 EN|]G?ZXP[>KL r7ﮖ^ {㲞 +c*6nlxJ6>;i2(;)1]9ߋ_<W_a fr Le#ʶlmg0J|Qy@kd hc-T:?!pQ^2NsBWs։;4?YA3:_)!B0+<-y*T& wiPP*IG# @6foȧxޏDiq2l&2C(:$Kjr?Ŭ,wSA-uNC)3Mk0wB 7-Z^ k0̢U*Bc`v!߶h0%I> -egk]E΁+LbH6?]6SUOJf?qxӚAuQIBs' )0Es_pEQw5Xqd%~a]b.K".Cx.OԎ'=8 ?*G2yZ2)gvh;K5C>nnS'yR%`G>U𼕺ꆢMwe-whdT0HaI[ }GJǦ.9!*Ϻ5Ƽm(:xFdU;zwHS:3 ْJ^AV%$iNaڮ#302>[xŽ04TU eb{Sm՜%O%#Ðl/_(rTmn /ӷ\EN0وo*P)O_@DkvR罠)g#46JXs>Z`О '^#Xw6fn$+Z  5ˇ`` %i+ E-Eу6~>I/r#Q&jI!}ym+y0s3Ѩ2#AlД|qԏkd^n'C+2#VDA݈+L vĮ1Ydg+ɗz)4ю1GjQ" ۹ p1r ? P Dy>A hcj r]e m3"bƹc 7f Y[^Ym䆇toSĮsLe&-,z/D72LUe ?څ̿@e}RP|gzQ%DsЍKH'#';ET 3X؂tkLa2vW;{GდzO`T^.p]eZQY#P ~D+K_)~x,J#RQ0qLw y:R^j\8I*OJlUSf9gQ%m\]0LOɨmCsR=6fJ h(B{؋~JWr-"kfs</ #@d6\yqQqHbUFy`іQ>z(=;#D/iU7 0|CӭloԅQs}-貁k=ldgA%e =+Rs g_wPmANN=ZTMf l9{[.R\1em+Bs單]q)a \#w6*Y(YVvi`/yWTH %k.O@o}9S3QZhx_{Whc2YqR~w_wJ̤ l(۲EnaT{"Zm@NQ)w>bKj+5izR,`]&Dvysf|zyJr{T -/2.[yP`-0f>*$ &nq& 723V9֓#Лcr2]H'#y z='V^rYij]?'l;A7tF7& igcH ;% }&3p"c! ݫdٗK!A-؀ ެtFXOOB\b%f ܸq_z7z AhKLz `pWt` O$YCk3'o䦼_UªtRr>Z 8Zf-$ /_źDᶒWOv(#Sx= 6;&kƓw2wyCD^ .:6pXںh[E4/t?e萮h5Q'ϣ6JOoc+# NMC{HeҲdڱppaԃL6Oo#ؠ)&W QY}TM-p"R|kT]G6SSyeQz`.Wg}#M߁& $bj~d҄9c }nZ2=N̍_ ֕p[KC7*ϼ47[HHk1Z4U3Y7xr" â@/S)Y^1UF f tFsׇ%%aLʇ@jM^%d>?*;K[P1nnyFBp7{̹pf牚(7iCCR8 5]CsڠWzmy٨%ٛ4|_y7s,4uKuedf;% CSS͙L -qnD=HE{a &s4$/:}^G`gMN "9~ӽ H)7(U>mw\,koX0Iu*mA3=70{ӽx[..5-:( [,*1*+? 1 ]mnxZk\##'D"21-zD66wsW$q '@=͐γ?|* 甦d $=Nū$|= iά\JOz[XՙkGRvlQTyDϦʢ<5ԗTG5˒$:J_/XekCEp ت6AgLi,Ԓʃuߩ.mjТ^nU`tf:GQU&z0ZsmLOَhޞ1io窟%@KZ[;K /9snLrE.ȇs6-Τx /c"pP˔trǞmPa!v[o|?DjԍlJj%h6{"MiB#7ՕP89rL7j BcQo 3"Ex(hj-e  #*iZI8~p%]uDB{#lꛖ G=T=`\Ue_\O{yI$HGdnt T hXR_:I@NКeV$xo+cɫ$N_4IؿهbD#)pԟ4^V+.] RI%Dtly| ,kY}URrj f(o]+c ,ˮTL cK^=M`+Kf))%ꊺ9a\NXaG7c:b0ڔ*[aIhj-7TkMu̎SkJ8J ݶ`Փ:Lm."o,btI#]0A,ĘC3'A#߬м=Q|#Zs5$?>9"+,v(c]cw# Z`ރ*O79頤=++5 )fv;&sܢ\оD@dzwmD+I5دEx]S؏zaԸ Z4b#}pIWx3jXU8g<"6^X]6`<[^6yMTPMPL7hFԌ!{5yͶύ*tMPnN/4= h`RE\٤^(>X٘Gu!ȰO(@U&qYl*\O^\L{^'}>V<|bsd~8bnէL"p>,?D:N]#FN7{$F>i1 5BqW_b*įMrMAՏK## i$w\%a7P6qՁ .iM=%a\+͝n I@ˠ{$1Y+gV۸Y mS*pT}=.^v&|Cږs6G"_v0Pv4ܣ'(  N6|vp n#B1KN!P7* Ն\d/3SVWHDF`[?QJ, έ~ޅ acVK* ׽}m#di`75i/' M36NQ«HMgQ;Fc%[x(2G6 '+jWWP I}lC@nZ^y<`t쒤u=g e>{^)KT .@9:Œl>Zh0 {pyT}#(q{Z00/ C ;0PeQ.ckNDs"KSV(:uc<3TX/t9B/G`jcW2vu8 R\ts,`ֶhewHȇ6հ$r}c}lBC˟ƾ 98\ s>K w'lj}to˖ew+=R}+(09YΌjqk< ?S5 ߐe;{5/[z^$i|!Yj͡&|౾ \G.wUس$]&7/].MglyB Aوߒ(0$k]P@oe |WՔx+B- ݾ2!t1nm뽸,"j]#l[ҒKn>{`5x"MԔUP`iszuXT2nɢl E{}z|`ڪVħsa#5ٶ Q.Zebyq T#).yxǽQr'֥82uL}BevM嗶ǢHu 3topٙrӐQk}Ui~xt[R0$_,m +rwp<<􊚇1Nlz1RT`yz<ӣ&e 3`Ȯ 1tQ:Ny1Ee 1ōW_gdC0g\ ] lxVڗ@EonW6}t}fcSU"JOCFhCxC?CBunor|2,E &vX{%z mr˧ 16#Q駦;Вq.d^#UkWe_G"'*FzNBk7NW$Wᴉtљ7C{+)O=5<`w,82 D#ӕ9S PPV6L8v.Y|{mƫd]_ɝ_)2V1 c021) c5a-̆- eG3ӫ&]US^k֖ZE:;E;^{_1.A3}@g/@Z; '7E,zE% 'B{↜\>_#S/b,7yZRQ֜PІ^rfL@ư\7>SMx }yP7LـU?NAz=gjtT(ʊSĄGL>J\0C|0k5M6,oʢth^v{łe+♓n.?P_u.~| V4z\^|! z'ؽLuQ rHi6 WO53*";TZL@ |R( vp>!N|™.}Y[Ԙ6+q`fAdFcf!E~[Z,)Soa19Rؾ4:Cy$ɽ*+CvdDĥ2^~ێHi~߲zir4| H)|7rpLHeVh0\FhUSԜ(<@] zq0\jاgΟRn 'G Bq:]gP(b r$1Ca'_+@E2.Z[V" Y2{n&tLx@_'(NBR -C:o-^l>"+a-7]>¯?Q^#pur#~QbБ[eBF^)uP ]_ҐI`,j](~QߛBm%yDCیU˽;)#n_~ qXiݝ|Rڪ3@>QJ5\pBN{%WsIH樞.B m?e @qFKn0!"jS~-S~gM=ݥ]EѸ]3 Oؙ\y̹M9("tY*$f2r ~leb?f(i<^R3|5r '_Yj8`a9]bP>O`rA+Y ZyΈ܏X4RJ+rfqP2pp=Ic(͡3mŸ~Gn]Jlw#}%VR9#Ʒ9f˻<:Ok¾3]98Z{u2!+eRwr yi^ g %E[dw"(fjDןY!4tI[sSMޤPpԄs182T_<(?e>J2@<3J++Ț*:g>J4@ {|3E5++F./QAߌ8c:.4--Ά0h) ߧyu~J$!)^4) :h#"^<';[SnneLd-T)?3{79rcj&^qFdղJ5$#`;},bKߝe?rl@oK!Wh-)s(OԬwڵS`c-zXqwsP{e<U7إX MR<3Jjd4T;9./ ,+^[R:DmsH}trt֦^vvB`Ǣ <7e+2Mك5Gob5+%\n^P{`> "}3BۘNNɾmwxzN3J!>Ѓkbh=(Ssl&\w ~Ӽryw5dA,ZzWڬ_.,qUNKyE[TXbte >AgpB͵[mITm훒Fi)W >G7)1S_D &#`b jL0 ]*GzouikNumKM<8+NÍKnDf%fE@X-@CVQU9A\Nl,788{Fsk(轈1 ɑR.]2XkǾ$ )(,Zpc)U+ZO<)^_҉cܙ4HcM]}twt-Y+Xee,E}~וiGZmoĵ3(+%s%W+nFҌ!UiucE@0ِ CMoJf^΄@[ Utr P$N⯤Q_] _:`AXVElQnRj ?ɇ+ך\`$IjJ.ح3T -0_ `1S>)dU%Ap?GkI2JDe- +,y!I"6P3, Bc$sa =r8 XpN2ܥķҕ8i[N SD*H1k~bԢxCZaN/ APz3Ƙ:ܟZP%.q^BMdIGc`s|hQUb<~ٷE0%O! 'CQ!=Fݶa-ARpA[ ϲM_<*UkXpoidFe.4æ0|7)q$8]=+=oxrqƨu_jÀFѓb=zZ)Qn5\v@CFNxV 6x{ܐ vjָ/3nml1Ni 鄍)F[~oA,4nD?ø9G2`)u/}=d,\ :'rfpB`,#4HqG6*K]9-\O7uX5˔Bs [+z-`/t{w0G$brt2ؖ%;+ʫLQ4>Jͤ)F|wGȖCZ]| .m ϧ`Y8v;Ώ*^^Yp;!-ߴjž :'3!m/^!k KA}-8ZV)1d'xySQ*,gK~cNԱ3.οܼ,1H; DL 8>w2BwG >^harr`gzGxlظ ^7zT̊OOlmWN$“(jqߞnln] "ecR$/H\M_L 3=.&ޔUXY۵JBgY>.J!eSǚR,^pwfs| !@"Y:[٦\ 4rl}Q ɰʩ7IXHo6m#E܋bSAÁy_~ 5խ{Tl[s\HAFv4瘾kNbzUe,8Dg*UӽEj9@CoފKr@Tz^qL8ݴ5*Lh'm)~(,yhɖjPZXBY6b?~Y@ʧG9Y_{Cs!BۚbzXyC$#w V]Afs87ȴɗzD fY]0cx p?rLSZ,{¦1p<׳aOgWG]H-ƨxXbqݢ Zdj=m Ρ ()aћsE􄖈BoICT;ewtsmɭǺYfL\=%"#}F/2k ;bqZ‹@4l3-k-k+p b95lϸ1Mvxv qAtʓ0ʐC5$054GjgT'QlaOez$_#O0/ށz+7T.8~H ݁yNRȰ*;(>jʑ4G4}p%`QZ3<ά~m[;Jt}eTcK8VT3JV%>hWڹφl[>[\h:; #Z s)?8px$&@)Y:_:a0B`XwƎ')*ũB^D,]Xn?`xs^8=K@qEWWh}5 Bdh ? 5=g!~8vXR RPT!KhEdM!GhȜϪ.[.jxo/<Mqǹz{cIE <"%%s⯉,%K[#r'/|ɐ%zҧ|"Xms =*"qЬiNy  YYܤa+lhE/]d)Jjy,@Cz4goDmLNi'KEv'zJ"~Օ GuL]02)ĵWk`e5#vO\D=Ä-8> m1PZ1msb."SjS=zR@RRáÓAn̽I@җ} ~M_ܗQm M)ejkݍP3kxt*T0{(wLPFi(=a@ 0=?XJ\',Ѿt}9Nv4dB-OҢޥ  kPה>XDB`MI"Ka _#L\<0?<%VfVTv"7x\0 qǑ^l%L:Vк'$]衦x锊݌JGwNsWV]":"2K"1K0pG,A p zTi ])]MIo/4\Ցoi:]vO{Mn|?}!  aFkPhμ#:M# hVՏW}u&g`?f>E9%VF#3m܁UWWQHKC+=Pǎ+"~Ԟ0Ĕ±2b{Q˚ܒIϩt3m&O]Ok%`t`r\a4H~ㄳ 7YLP0ιs1SyazgGw:1Z.-@:5+!gP)p_ ;'kc6[=g H=9oH*59< YvrK @c'+U5/C~edmEaDhzTo9תuvcAʹUZ{dY<_n%B ]'@&3vtw&w{ŕc{{ :=ҡnE߉%Y5kY hBJR'QާϜӲ[gZU>S.qg 4R[% iVlpbtejhFeD%`8<킎OىwAlɥ9K4w?$AGuQQ"@ Њ_3ťQ1k@'zA! Mimo{^UWQ<4/ ߣxB?@k>Ban?Yqޠ`4uy#[Bch=T"$Yy 9$ώIp-s;z $߫7N;aYV/"b?^V†rIGa&T1JlG{4v+UȘעT[J6c^!BGGǠr\g_hLg{Zf]_ ާ*&7ه]4qH.T}HlaJ@@1뻝T 12[W˨LcGa5AH戢KR(q>mpy co;莐+A9ёHq'|Sҭ=uTN blqu)ɘKr_yB]Lv@G ξ%_($u1 &Vޕv[)P5^Ab қ| =SĹl}QB2./&Ѡ*%0حfYqkSӚŢCM68DDQx'm>$aS~׊G NoO˕Y٤Ԅ;Ddm)ou:N\r 'fư$Ӄ =ul l7S}Û'ꝸh#tֵ&Z˧e ~zǓ/[:3v=39P+%HFym^j|W<ױz*%U;KnCv*8gݧ.3(4mNڇ}"2Fhsʚ?00vCLnk>zl 0_ֽ P&Q-Ĥ T3$vg(Az=a@P4*j(I+NX 0(A,XyinfTEsy@ WyFg-Q$ӫG=Iw8@YEuvBw S#4Bv y#"i<>AvB!%Нߘywi͓T塉a(U xLBՍ{&ø),F\ubՔJ-a˻x*KS$*@*,e>ƍyC ˠT:46JaMN4-,QLOxNaˋ?D A˄ A|pbM1&ն) UEGY[$b7Vp`69 ? I=KitߝF1_:'%ˏJd`>B7֣g9R#vEǢ .rcj}9 ĉcc(0_~+--Ͻ+)’i1y*I% yYTc 2:s"]&9^dP,OHT|uj%6]2>^~&-õS΄B&ٖLۺKUSL+̤%&ھ! C#qVfοo61Aw㤇 fԭ`_(fxj,͑V^Z[LZ> \t?JL>s Pv<˛f_iX p ZUP7ӗr#{+94Tێ_Ptw-< %@5 1CLU=Q6HlαĀzhG"cC ˔?= ],$$-!=Bֳx=}}j#uÀew³G&U W:G ?B "nTMMqmK"%j]TI*Dج^ԸXHjUS߭ =+5qiTEZ[9Q?3(-WbpGYgz# S n2›v{|EC˔=Q!AôJM] Zu%ebOeܘ_QJ2eNOi)x! n V5{O Pa[ް͊%( QY9[bl2Tm\)<E|,kʴ_5FDJ*蘡~?L& / }Ox*RpK9Z{ (KFiܛ0/L+XZvbaꎓ['v狋${D(bs4G4cu`WYpj{|P@~*_.FuP9q=Ϡu>;6#Cˌ3 f\&YX+8^1DO4fNϦ5P00 ^]owҝVa4P[,A{?9r-\IETZr !1, |EB3y pdޤD"ܼ܎HBOĈ,"1IjQ [?{rS!+( $3Ob8c&B8w$l8uh Vܚho?p4x %dSΨ\]`XI.IPzCt>1dK\`FP?I9 Y[xPR/G5 3ToSD+PVJ1X:cUg5t`- {yU-t<|4\_T5'!isa݋,)F2v*Eu|QxRVL!&#ec5Ҙp T^o q+#n&ߏ.LkSf}34=xxI˰vؖJJ \T}k,LѴya@!4~nJZ"5BEWM"w2VNY[.\ #6K4]U(Ca  >jDቓ> R܀L~2p,'5|\ wvlBaKw ]"~"<7d&ZЖ*ҾxG:'E(2mO7/{)/Z\&!-ןPEP_}ڌɊ΢eD}IshOBI [YqY?Vm0a~Wm*血sɼ2b+qseG96}>eXS~Ә'L*af^ҹEuT"iMHϿ JyI!3!Ѩ4z(|VTѐ^1=۷ߌȫjANq6=XOCx/l~R JNԆ76svRFXá4[53,u'WW||X[K y~ieB/)p2w![Y!33Ԕ ;Pp3jn/- ĴkCj4VB\1α<")'y>m5Ezhw?G!Nl<^2?J Ӑ߫9ϑ'bg46VbyXB\*G+XO^wO)%!e"3NZxUJ"d,Ě' }lu~۩`,bC~6^u_^W}+br_F굅2q#O0S 11t]f:A]tvvÍ.j1;n P^)HbVEpvez[4Hy,39H{omyEdka*a ψC)+.ZR!:M3?4۞MdfsaXZ4,a m q^^6+ x?HF6~(ʼjQ?-йP7M d)Hs措'QbjtA2Cr)M{Ţo*r7WzX4eLg/&I(Jg<4c|GL(6g.'FU@Xy$Z^ID.XMWd(,:NIa֬Mץ*Vt@%G}D77$2Z׊twBfN CGiO8]&>*cGPNɇS7 9%J{v$v5W)?'Oؙ7ןo̥f~gB Vs 0>.1 53ݩՀo./C yԪH)i&&;kZ oaO&<}Znc9s8=wm3f9a}Hoy)8na$c(hI7ԐiYȟɸ-ͥ yP܀R.9_KOY͐ņ(5{BSO}KH{6oDI|tw _gVG"ybt@rՔ5Y47p/(qXxm(lx{"F +LK|+3+.![a#>/}x phXG}fK;Kxl1%צ'm)X@eRZ:F*-(,CqZۣM5>d9I]YoDaWZ vFC}5 ed8 Nb2WHاU@bIW,*l=ˇgEw;ClV%r3wy 7ɶXvp\Pi DyRaL.A CWN㖰=e4_T$~?p71s`'*[{=V` U6@LĬUIɖ3t0X1ebm0aA4^+ֺpդ  m/5 V ߹UX+%'?.Wo|Oh$6.ׯb=sE !jQExf w,;KMLF郥(fI ec~WϦscvXLɦ>n75STb^fYaJF[B ĭ1,llf_O$^Y%ĆQ{ョ6Ĝ6pf?qo߁]BYAO hƝ Mt!#L@"7BRq iw!y}pk"c!p6oBܿMֵQʋmĔ;%.Hg'!QcBdݧ2wxG9e 9_1_na[>"jnj(WH~,0tUpT%N}3u8aS ۪I&D [`,PP˛mu@sHEbKL%"靈i&BlZUVe8bXM1xIkФ7ŕJS~HjԆFx H_EĴI0J^֯baK`w7fe0ҊY^K>SB]gjPg?h(o"//004hO |}.̈́UN~yRJ `6z%WJpL}H6B{V~y,2h硌1Vy7D(EnIKr~]9zIV HxƑ(zT6ZʆDf9HRÇo~d!x ;[(%l0Iwn#;yN6[!n#UIS; W^N .Du Y.A9C&Q\֍6b>0CU0sC"%7Ic-Q U bR,1{zAgl+~Anu^6'RU1h) 5#3(K>NtJ?d.;\сy%"gXVo9K<;Gf` kiyf$j)N't8GL)BĽ6J~ Xsf2uI<%vsYB4X${{ߚcLt}X'˘PYM`uOI@Jr*&͔jS)K~A4]s, dvXv]ŽJ?]J;_:,uۜR⁡A9zrN}-d2+?[ķfxeO<(ʒ뗱RFwuUXdd͌=D3r xS\*ge8XRP ˆ tM6fȬ<:Ռ#33p&C@,s0VUKXƣFzGOt +L vQ5 I-q} $G|%YU}K VLs~$/F6>|M]ן6p5>\C) 4}K,m늞W4ζO(ؕ5kMtIJto/bKl $@9 "23|Z N-}j;S>>h)Q88ÕH]R[ =T{R P&ɌVt ?p`Kg_ [㝝VJ.xke*k aF^"cfcP/@_nCGr$&3ZxqpR'gDgRv;>2pfFZ&zG4o$zWϴ$<+Ľ7ݐ1?XSzzL[T=P>)ytd3Og&@%@C~5'TLHzR}QVMX:Ձ@N_!w]лkƚa.4XW:AԆ3E}!B06I;*` P'eP'%LQh/1;llZR(hI<,lq]DjmSz.g ōB8R(Sv%Rښ, xPU3E9Xr8 >@T ,<!I+''én!38-8N޽>t bjF6}T?Y5ť1n2c- DľC~|Exr|ß2"t8<. 4w@xr*顎]^mT0V낍i.2 =;ؖxn{nـ ~) ShJ/D1L3lrW<^Q콪j=M|MfUxnS{үjp|[nBMpǵܚNjv< }\gs8A,tISVyv*~< v ɛfp(PG͜G n3:ID]d*,cZBNN'd,M@R8*b72WsaÎ!:!ɍD<.@Y[H:){!Yh9U'euJOF^SA% `W`8ZA#FH`k`2gS๽ xۼxNu]0r=eV94GsYó9tC'pXWݩy/,g-NC`5#-/#Ჾ!oc]P ۥK|Xd,C7 EfɉieG5U(Yz|{[n>k"VY06˭"ѹx}$._I =c;cd"I\̣l~v)$z>8y%F [itqw!kq1}E^ÉZ9qRXlK%_q9HPWyhc1lL$$Ri1 YKme:9<ZQr OP??A/~=4j޸:t itQ*25@%--<8_(6n<|,m.I]4㑊*].0z!7H -wrNgi5|9?.Fv A~Wg<ƜIk%j}Sp{9({6y0cmy Piw y~aq`}tEKa{[(IO.׍@Cͭ1/qw% am=~Q+8q# dt{^|y %&{6DFß^lFl{¸4K^'U^;+zHUg%wC2ݟCU[3;u0D˒rϠ-ӱQ׋"6’w.>9tCޑ:xQ.4#^P Zy{wpXV #v϶W_M`a衞dz،O>g\/? }EQ#1'P0D=G0]E=eݗjs9~U`zv NdblxË~)hY;_qnTPOV>ӌ݂?cE:'\.\ӇfDVpe:ZDrL &NUR*~;h%UIkK;A"rUgLWNUJ+s)tl"c:=UF4Ꞧዑa/{"j*<qB"fN, F4e;ڴV:!"|QЩ];',_3#W9e_@˜̀({ORmg93r$/p`o#XX17"ILjWA/|(<q׎+Q'U !~ a,mqK)g>"'פϙ S{as da XژzI,ѥNC|O᭥[wjPƤXv5*%drir5ʶԸMƳrhi  Wg} $/ocL?juGei҉N"U.UJl~h4WH*(ew8p ɪ1fV-(,]M9^eI;_Ι=^HWa> H)O}60,9>yˠU $a >nOOD ?:{dv[gYG`b -:!^I3#s gf~wz)}-EO (xvcd " .(S?β<& ӜK-_ww`hC ;m(HndER'SAWH-~Lm7ZR뷰>chX8'T;<<t+CV`>xyG(o\yoAz_ D _tJɝSV8pP?N8طHaЌYOˍPVW,DVm+an ieMY2F~y2DwK(*= FHqI ZDew0SZ+i>S)J*5}ؒYM-f"2BC6?>#dxm"9> kB _ꏃ5 &"8w&Z {NhW<iݱ VJQ&F3434:X|p.|] M)L9-`wE~q9{:H}:'45 z"cAl)MKܾ涳5qIC98ВS;ᑿ#{D>0cD1λ-g#O@Abt#%j>j4E=y-*~E_bҤwng(. bBrF!wIg}|~z/UQ]Fلȭ#jZ{!@_/k-!Gr8 jW+5# kF]}ڻgqFiK"萗N3! QRaS@,!i9EIإ=o|bh5L5Fz_JFl=+EZדBtɣ4 7jAf|8c9p=2J+rUP-e'Yw{YCyP ґTLJ%vHSlUqQP~ <, %DtMڧD!'CDbde 4s77M:6,4MLS 7?Xv,v(`o|+P)♳mŕ7q+\5,p۠ZH dUlRt(m#L!\ F!WI&еT\>=o *JdOd,--ތusx9tgDzg<U58i~t >: "w{B#҇2ҳԂnZ[MfL`^k&@&C>P3R GѾ{q\Ii|OJkoY! d_+@>Io :SGqAS-Q7 a'MS} BہI4횺$QLvĿ?GIyƟp0\tVz[ )e4^SAUv#giJwV*<)3|c7dZO$i{F7Lo .v F䒩m?YvY[D*i' vV ?uUKr!U##>L-\5C&((:-ÿ SS:%RE.q-;$(|e|JPq+| ) bH 1hVc53|+y ݁.M}2Uzof+$penϿ Լt| Ab .d/u%!?ͳeuS8t3'W_Ҡ.xDTЕT(Q6(-:Pٷ3zͬS;D$Ћ/d%bDyQǶLe[y+$k]Ђ|cjJUFn/*ܣ*TV&z|N%}pS8>7{gJqY"5, _mh_ߞid/q_)CHv1o98y;;d m͆#O&] av6A`ԕXETGq5́hpH5E{},h|!:fRkv>砲zۿ&_QOSj/Ju,d GVXѧݤsVɗ""7TH45 LE RǛiZ&9nz@qfAW9\?^!Χt)gXHIl.[|1oxma Q5Zڥbl @ " ! -DMoKȗ'$":l6*u%1_>A骲Rc-X!@S ~BFm>HqM$2Ti;D(7R$'fRJuIvyfft b%l83$C3-]wcYk!UmxjQ=ں9%<_FL0Ӄ/1A3vH!p = 'S!#_,WjUeC)XBaN4WJjh*ZN@(dWҢ)XsFV?áv8s؅|wh9!׺1$> \FNhMH@Silo5UY9UKٜK(ͪmA[8xv޲@(zXuE(E h,[SoGƖ0,Іy~͋C3PQxNFzlSx)(?^ȕƒ+Rƥ&}X:v zn*T}58H$@Yk͋8j8 0vh;'Ui aNcENÖ\[E4TK@!a\j<ttV+iIEol5*PʨCls#4 "&+7%a NY~ ݵz}-Dj%tcEp,^k'L3怳/͗NMttw*0ۙD!8c}R֠BH!~Ffȥ#(bYlTmCK6D,&|9Tq̠d,@Y~7~m6A~P!tެZ艵ؤEdٙ+y8[ev]!8p E`Wn)̺.Ȕz4, QTDVd_i[`H֋Ƽ,bd@0`+as!Sf9}Fia.Dby y^Y{V U3@Ëv # ㄨMy &=/U{_)dkZ7CG E!5-"{S{D1^HAs,%@ǿgԲ൞(hl<1QTaپ8O@Lnݓ`2omCbf.(cULj,4Ari8vKŦs[pNJ>jد :c Ւ" TB {4F8n}d&-^Pgy۞hTzl3 QHM>W;>KXs{a'}`e>{ !lV*gDeS[ONbf ltzu}ʧ3+{>2UovGb?b" ]+ ^mxm]F1!g͚KgeאC!L`1CF&(:MFW& 44iTNZ1CtCTH9>{7wrh- DqM.G|bCKI?8L>K͎%$>ȃF eMߢSR<+G¬g3SC70yRܹfc$06J eJ*] Q|FۦrYYj MmpE8r ?91oReH# @Ŵ"n=iMsaZ&68~^ٹo^BjU9)EcI 0α27[2|[uDvG~^"{9D-1_VFC"8wbD( 3 #&MJ^K.#R-X}f$-^J$sJ;lMԋ6AI"\0])z/h;6kH1mi ֢gCcaaĮЩk Te 6aj)EES`~֥/_/MGzZ倄l@76Ȗ`|qv Ju獮qGT2uqQ'ҔʔD,~-E$m'/}d,HN),nzjL[OV7KW\k''B)׬i2#83^.4*G!~ƅV &Q[Jy%ylU ?(ce:"PҤCg]s_ss/z7Ny /Y

KKk$s5Sݰ4.'486fp-#,۲#) ,`NWr{__M[e2=5x]\rt)nA{}IpL  j9e:ܱng!뉹 3[<~<6!V m)t0A_mAHDvŹ$m N1s1W"\zTܫ$$TkqDlQd}k~%=p䳢qj~yno 1orUsV+NBI4MD~Nd< 7춘8[w=CW ^ۂ;U3IO=Qj;0bhqɕiUߖO6Mz*YQl'b-r8j'ps,.`x=3{"[ wVI_a=r]~yQͲ8 ]#|Ydmi^H,>KO3c5,kd'[T- ΂zZ 7Rl{WwRC&ߌXwcUU[{SHJ 0{LrVde^ҮWWb}n (Kt<&oG-6~ Ѐgs}T6&tTus-|OSuOѶY !0pbF4#3Ʈm:2e٦%bvktCZ[wyTbDژS3o:ci_b"MQ>\ڻM^g0aThy6G~JVkʤ~Q}Yk;!Hehۅ >pRksU86I0=*!?JTCW4?2<+.! ~VVOߜL7ץǷ*MgW6] IW;ԅMj<?_&0c_Sy!z rO$jDѪՈ \9BG2ss&ˌd> 7$I־ VEy}V̮دt/HP_U1B51{ݳq2f8cGj?U 3o[5562-olŶ2TnWKݕ!Z$'xjs CXW6*XN2o{ V8dj)J` 0Ѻ7<68W"8 iL}s~S%x,zl 0'cӧ̩JҚZE^m:>S܅5W:ZUBf}a#eGίg|V0܉Q #7j Wg\ VT14׷U3Um&Һg(T27n[*ٮFgfaS@gn9D}'@6@w٥cH2nh4.gײ[A?uHdYj,Za䕙ssܖk apzxFW^l awyGD7|H6QU~lbv,f*bwb\ }s޹YaO/6Wb#4T4SIҼźЎKKK|۰L]b]y+{dUwtaWau=~@,ݵ,q%f紀5AF<._fRz-q|5mGj"{$8L#Z|^B(( )4џd4z>5R"5wxgOXԳjn[qA9MH&{ dh?e$aԽRk+sOnLx%!c'F\fҗ¿V#."SjfƼõ3Az|ٟ)|EgyZYTS=M(FB}/!8g՛cTѹdBJmZ6K.خş*#3F[ ᧎' ӝmƫs\_Zܯ4` tk٬FfG%|ZrpM)᝛],w::,ڨ(o|dN,0-WV(PULy7Y2} _%>ߎe {rL`XTC1Ƥ#LXAiIyT鿿Szw c`ى/C!aTgz$ϙ< [p2 C{,`z^#?P WqzSɗd%,Ra3_^b~xP| \RЀZhF7ǸKs#-^Z+(Kq*EF0lқsXh؎[bTv^`!`U>Er"ӧ!ߝaJ.NTj(w丨$-%PΊB^#X iE(vv7a O9Yo2D\F1ֻ5 *iɨ?bTd~74T;Q/ m(hRau^W05|~&r_nhѵH :_GOwlf h~ PP'n)*ml)rqUHnJ(ʠ ;"ҽ s:{of4dNv,p 0jR J|e_,JZ>d\LKG>w 3He5KTۓ%UVki?t}ٲYC\~d̳W@8ڦs힛8R. _cb7 dHdMw]ap DF=USXt]AVa* ׿;)LTk6ՁqZKYǘsTRz伒;7B'_"5= ͨ1b~Pt453L`ɵY~gM;{"+Nur[0 vA k~Ed9]]P;0GXAMY<^rۯ݇f[غj)1.ҀDNtP7E.@ѫqKoӑSU{Gjr|&Է8ɟ 2Ip,ڋD0?6D~}W Q''R_Vʸ:K:]2}FR  5Dq5 G]\}ljăTz0NV7h=[sa2<^]3'LP4 [# p6 0OsAkqڰY/w%vneo[SVXգ|.^HɽK"OfC$%Uj;]WvJo m(ͣ'`9W8~oqXD> gSEMc]c@UHO7b=1Nc),<:\()bl.RA|ֻ:WM0 q~թ^6]:ƎAfBx[b0 pE5+ʵUS|Xj(wXq" sV[ioQRݡ)  -r4֕q=*T/̙ud9! =ݒ[{ e1k.%dP?MaZѹSDs__WZV "od͎rG's_.syG2@"uQN& m {̹1jш.G%v ;L=Y$8V 'ִ7nɲb?-FCTYӑQrDp4r*pرa/\U~|vٿBW>y3&j0(ZK7ͭqG.ݥ4|*?GÑ =m)5 144;CP#$fov0%v(?EaNuQ벳)kDsô1-SLhp7鐙y%݄i *-EpijTE䒮^i$D 9Sy]gTmN0o9dObg"|C?SJB"+8/ A2#Xhhi:&z $: {#Q|2%9ſtB:xCKu1f-wWg/ecXDQgVʕwԴ ~]W;MjGwr;R]Ac:pñ'=H83/?wO>UHVڋ&,oiPz;?ı<ʊ+ P@F$scOU\B9uS[xNvF#y܆?/A' ' 3],q6 5TiD&Zʶ$f paEO6,I2b+pjtB윻*CGd?I1ˏӗ%$tbhLu#N ŢWL%Ƙ3:rH>zW"lnؖ8&BIe{ ފd! f@XnjQJ3?BS}0r.\D:8z 3v)s!f1!w}??xaԕ:Ql9& >XȲJzy6;cGlXd3~N` x{۩7t×_+-AX]0dڈA]PӵUG@+z\qj=6/l3+n(8 ՙIH],s%OToo# mȱKY0:_("*QXcD"JdJ] yOh*XxnYA>XS)j}XK.'~GOA |cIq.~#{Ҫ\.uFL}>~h* TKU 1~XyN^=_?ƿnZ'9!#.1|ۦ#?=k|Q}H,++1E6_ zХ&MN>.+,QO<OJQՏOy /Emlu_`6T)+M(=ise$ W7#Ŵ&d,Dє0VĶSn W_xT!'󷡛;Ú[?ʳ\Ȟ[ݣ 7 ~rCuHnx!vfGD!\=|77vnlhTr2X{IDezEĺ`}ǖr`7 Z{Z{u/Kݿ~6?{D|!+gLQT_eKpTr"A;)AQ;UC:I^6;  P&R~iJ}B&BkYj,PHMI-ٞL 2fk^ p<1 >‰^fR*R^Ύ;li6SdAwB5*/  ڣ:TIt7ڪ[m oM~Cʢ@G?*Zo'#&֕Z 6$ ;1pGOfB[ڊ Jw-8HC Gݶ  {G4Z^<(%mk(% = R͢n|l)Br(DR$B'-٥KE |in!2mk Vbމk1i1 5`%܇3AJ/n4ʲ͈&؜'U_%*e˱|znW*K*$6 LjIhY@FS5~Ycr#ghhB6pH#?S]~p+l8eocq4ҹ◪Ibd% SQ,2 1Phi nS|gv{J[5}׳zCSoo!RdZ˵bK8XD?e!|OodßP{m"=K0A꭬KV7?s:FՎr} ,%zk(7y?ΦZ_rǨnyo#b&oh _XlNfd('R5n #Y1\ WXrwV,V TBH+6 b!Z<6ȽW+N DM ySwt*i t\cd7dOB#M=@{-(1lIm=ZZ楺o3_*ꬻCS/Y52M!mD?AkbOT?4 1dAJk֔&) X7^7w>4̜@ 鍩QW|gx2 l"CGMPgǕ0?HC]c#7 tuùspͶ.qQ@Ġ4^[2侧ΑM8+)쐦&nk9r2Y~ 6©ʟ p`d 9oEяģ&lXj`Đa Ep //txZ 1 ~6e O<}9aG|)Ίt79%0v0o#8C~{=ێG>̱D"Hp}1)Hi"R"YWss:_Լ"e4 P{^ i$ySĦi#|}ߪuaWUTXRߡMD.Y2eHC Ia'nEG:a.i77'l˱~Y#J0p KSUrmV_?^m ?kG8M !_hiD柘C; !KCY;2s†UkGKOyaiz$Ӂk`+X w{bƕ;\bKYL0O%j`'"KF:&(yM0B愥w@pR6,(əƕǣiLV&c,1^=vN'_t\h'uB<yq9N#g;ip|}^Wе+p,БqMZ6X.5jI^!\JdFf{_+fi|ۛ 4ʙ[,Y̅S _1(BKMf֋BVB (x-ǬiPx(6rg\y\#/)ϷYM^7Ɣk3X͞w<„*v'\n7;k}7&1:N>,,wjg]l= F4-Ttb8xEUߟ04Rm0)XSeHH y ,_CZHI%&?Ş-MH䉴8Fh$?Xyʞ+_rPCj8vABŢ83\Qs6~t4a"K'l[ ćnSY.`? *zJ AKu쁜9ղ `w@^[=>2k}P!GPkg[( LxFIYQ|mvZhd!̀')JsO:w˾y8KpH`FuK,̥ˉ_deˍx Ypnݑy"iqA/ ݂Rw#ȉYl%did=q2^$ K_>[ÈmK&l2,o /\0PڣHW'ãEsik<6v%ƞQ܁HȆt~Ů2 > Zz&k<0@ #^SϐR{IBg(=7y4H \ !4ME>UbdɱDZhRG, t!ҋ2G0IA1OfbQͷ|Ja[Ԡ濱a< Ȏ.UDIr 2#a{ |gWY2O4_?(2CIh!:֫0̢ݤjd$"(|'YQ83v1GhYa)| 0C&gCZ/Uv% &@ED+YbD;O9 ;`]1\W3難JDf 1\5t'g>.佥^\IE'~!mFDY}Py2 >0L/IЗ@Ow(;NƸ3NUY_ӜĈ'JWw*# hb} J,ޮ0K-gK2Ϣѽ~sb9/)լVes:@GQB9yf/71pmUӌv4a۷1)eҧC]~"D |ҼOM )4(v8T*C&# Q?鳯y# XL;Rхdp*c!/MJ]9*);:&Q.͵ b"b䐗]@e/tQ& ~,.łkm #1E=nvȚrHtyذ?=]j4|(%NS`mCA^Ҙc)9^1;GTktE>2tH傐SO:vLݎ.n!=Z~fm`BSn#fD#BeZLd2ˑpvZ7 ̖Z.DHvgTCS GWQq5g 7*)*{1X."1&xrkD%|2ͪ5vQԮfi}Nٙʐa\{a؜OaJWN{b{5s=jt,5ΐ O(#fqؙ ʵJ\aZJ_X*H\>w֟Gv9n4ȴ QN4" hɀAz+[n0ywY_ ]J!y2X>ϱʁoiJ:qHG9.`[*:o{Xku26:53|<h1:{z 탣>sT[YBUQzy!5Oôi ,{@C7~o?I^%1U4MDI3ei-{8\t\EקO4lxSsx(4jL1\ 1L@֬@FQ3 esNYddQKR' p~ \2c̮H78EMr8XI#9z 븮ͭVaMrwtxF$>EYD ѷ ߾tP |0v"䀊5TF;#kW~O[|ʼܢssf /&-loY/5\s껎Qg= ĦSqhh+:CZr*pQXN$)꜂Lb+qZ0y=٦+5dݿžW@9~ur\|dQ"uJKTS*NoY(lj6 E.B?^Šݼp/P '\7%s:2ѱ[/4?/%il\;P/BݕfITZyb<=(1s/9WdȞ.otYI7QwjdLdx9ykmp @eJ>#wNGfIx)4b>{$;wZCC4i`0WZ1 <c`ې?,Wv ce\thMkTIhMtu{ps2$@\OAM"}1*2Pm嬶~ diOrH")f@ ̊+ Nh=,3Fg})=@2Bmr+.S~;dfQbx:)QWʻSI3a 6ttA3;zr`fPrgWzOv:Gѯ!AfwTN@jRw.Mq =)&+elp q.FE2-&÷8f%(j1Y5hܘk俻ƟJcOAܢU>:W-EmO=LWtHڸ#M6nsX7%Z!)%%7yPk-)С,uw6.Al֎&Zk/P75ʴs<6zq3ȁʟ7 ?'y8yy|EIPtw9qD-2ťF@MTv G/?W%Dw4+F9M˒2ҍ Uk`[%yf Z4c\Ze{Xw~4ZNPs4ռoVB+w]<jx"+R"uS;~e["M.D>W(+%I&첛yc!ۼsм(G^"5M1],"gP|.kc8ҒհP:pLHy|r!ʘ:؇aӧ63csmC-y,gFeI EҎ)]c^~NhJUK_FO1PA٦bLլNqnbPU ǒ,vH|xa j)/83*Hw>FbSRN,izH++I !"RCLyˀҘ嵪2 " dUx#,\%_)ŏieNq0ަb#}d }󹷿{E@o }9ynXl?/1XkYqG'VrgXS#Uv!;h}^}ȅ ~EPrJM*</4ZS WO*T0)Wn-qAMI09h>!@eQIyQ 3{a ) Dpu۸9a3Zq!p]m%Zq}estxDqzޝsda1Yu ծHz Je_GAߧJض(-51t14]sz< bQv"nJ-ۏS #-~xӊzW*1D~SNݝ7bGX`*`tw__g-!d:Uy#5Sȉ09j?KY:(BMZƹ$D: /XlKMWn5jwhd_)Ӿ8=Y&ó>8 05? DJDyb?NnzUhC7ܔ*c&Z<՗T²e.8[]XΏ#./ز52$TQScTes{ءٺE3[԰A;1sݐ ]+FRRRmGX3 c+JǏoGZ=մ&?!6೶AX\dz4&7+[|S i^5 f+1W!}|[:"(]j.d{Mx|x3?gQ#LJS@BQa=rB8gD@'A/xT N+$h&Lea,TЩ>ڀL%Y$S uI.Kzm@w;@U.b]wd|:Lo$+0:}\>K3pHK 6o|V,uE M !BY'z.ږ$[>Ja,@B.P88>SBgwj`nΉ<xMYd-q8 lD < gT$akr`/ZDL/%"~ eFU^i`oŒ& ]ui3i^PbEq|.A4ڗz'B:Е:d?3kGǐ>C_4_1EѩlѤYfA;@..æ>@~6Lx*/\qM"Z7|XTseP TzZ(RH&k GsȔa_^ުPТuNm5a̷ 4p'!=D UuQEZ Nn0:bF!>dሃR˴lcd@T-Kbb|Zү޾%l6Z# ۦjz=Jpk][XܧBTD`[qx|ttI`|B@~/M p7ca,7d]d^>nPkA})@,T\¦sCŠu ]ZЖ40n?! JBR886$pQ`1v 3J؊y#;z?77]/`@AfTXUˀxijhv{~owŹЅcOӱZ`ҋ.Ƴ^ʤK @{Γ׵zU3 ;-*b#R2z)tX[nj .ׁ&~xw=0T¯>7щ\@f^+%6 JB& ?u٨M?u!9\ > UF 67.Bu;Q 9lőPMn13+LB8gtc42GE]mhzJJrv@P/Hv;cZw\d"e2Evpypձ4 37)\;9vk֚ jS}$PTcjmLmnjeaf=u8gyY-#Iݺ̲:4fBb߇ū*5Ui8*>ְR\Xa 䉔72qEwG-=,,nU9J2/`s`oP$2t_G#OWSCKy? nKv|hsB}Ъ0+䡩[%rgl.)dS@!fSv3N A9UWOrp 5GA\F1Cf"+Yy=g0g 4_lQ3$0#11&ŅHivE Z羀]jkdnmE3|M${n8~X/c󉋽5jۖ.xΏLoמe>4rMʏ71\wdY#ȸk>z t*:KJmk.65oۃ8oX3@cdD8q ȣ'n/ݱ*^7oQ ken}+t>Ӊ?/:FCʱulF_wB$;j)2+ Jq-:9^V׭XOR:1ÌKk,Fevoq^)h>莶}袠nk]@4#1?|Zo]J/%^lz& y YVkIm/D?̅R" ))i 7޽uts !\ <Jt>Zd>TY`pu'?y ywT'/߿۫3}PWD[3CgaCe"LOɶQJ&FcWX[sYg.Xk3IS΋$X`ctxV;ahNhL:UEuP{r?XGMg<-FA7U;z} ]28k`y`uDJ| ’YzMZO=w}`Ǘo z?tj (ߨ6aFZ% N9O͉H&!*&oɲC~\yۜ (Z w)ޥ0Y٤T{Iɺ|d6ߛ=[EۜzFwXEf\4_@*TxRV@gN+$j?vgY:/apYPX_UWE[iIY4`_ͮ~X4鬑xRj@{avRBjqN'G,?1ƒX*5 Fה~ oզ0FI ?=ɖ'07贼X Lkd>Jxh= dF?+|] >xq=` wgy5龿$$!̐EEɮ{ 3NoBo` 0!4dVé߀[\(,'Q_azqP YC"xgƘIQ,| cc$^{[ Jjݿ9Ӊ=SžsKg|KVoY3(MW,$Oi$ew! V3qڑƇq|#6$?B Go?1Y}FYyfޓt r)> . k`ŀ$Ś6ǾC  W'G[T@t4v,fgY0!Jz; Bؘngk̄ %("@ sWڐ̵b?YżDLmp fC:yP@9)wfmj>07(tcIdZ0u"B/O t~4=Pz!~,K R.ckj#▫L , #ߧhvs 0PƭߌST$"3WpCXb4^A&ȱWCvW(}ˬhQ>{:0$"ƋEq[RW_QӱT'OQ=WW1> [RwxArY:Uq/@>#5f4;V~ 7͊FFȗhbRs(a]'+QA L!cAݚVO={:?F ☦B68rr#%JQT Tn/剫h_YQR6,Z fL6 Ŕ˲J#wtゔƶ[}Fi-'WM<؎sB7]jY?ZKômH^9R$9Q&MO%F0=9x P{_EVН!pG^_R:䅓AC'L#-24+ȠLCBwvnz*4sDƖq`Kq5˧FLx}:nQ5i}a*sj &x6Wya@?l5)¶bs\jF:Z%ر52poa~YPQ趀{{TqY\kFШ4>w2G@E O)07)(N5>q/$Нc@2p"МO2hFb9_ݲ,'5'ԉG 2wto$[ -r{gg;X  rŗ q>ʖ 20~NܯƩ@_z)*eVf>^ Ll4ïfdyIgi*11\v kUQń0j'Q:$ 1{1$r&xb_TxND+. 5u<MI*0ȡbh8$dIѸ.,Nyyq%tcVu-ߛ bV'$.^a>&Mb]̉==U=ʽ"+2[ UQzkd/U & (v G%#{`콂Ddh-'" F8kȸ # }@-cФ`)189o ՛K, a7Cm}-ǛDžHV=jXxaOB pv~v nE|Q,R~E|۠Tq6׃u*qkA8%3ʅV_lKB4HDYlmC廨Gx,otD}>4d]${K>L`x)%8"p;+Ή VA-DY/QHlpSx] ; 9;Rr.LByoʠeSPCdxe4  MICcI>t!/yFH~^#sPr -h nc!;%;x&P"3Ǒwh` Zk\}ǜ>Yٽo,II '귬_ Z25;/y6{Cm[`&4C̃.;C-&n]Cy6$f? i%~Ȝ\3cUQad6Iw&AqgqWN,j!;+;٣YZ|qxi(i*LYMm0an 9蜁=pd)8y9IQl1JØq^\j|GMC6XҲr;v gy )Gb 8G_}5}M%y02&Y#OB6:C}њtlo!ыhv&3.ީKdB 'd3^a]v(MDtx'#l2y L_ZDIE G ؘAPCUVE}Β.!vOZ06;ؿOYk BVC/D㾉HRoepE\ u(,2U!IUnfťhK|I8A} ¤Q;s^ :|@uu9C*yb>PaUvޟ@YD#X[>"n :2VQ:G~ZD]H/a!((~-X:pάSPug+MgҕgԏRyn$7l;vk0@}L{T,T^oQnlC54h&e QX&}יtB}lA;tKԹv}+-M2y$nS .%23Uzqv$}#mSwdORΖxWR9L\jԒH$\;d2*x%6]f;Va-, /G{8!ZLtl_uu' ['JuإxTDr ==x}M 3jOLJοc}֕֒urjYplNTSe_]28Ds)_,ƨdeܞzS5j@>t}TxyS+UװT q kOcǩz4F AĆ2'rzFi}KpZ'G{fHAǎ/ي- #aE3+3cAJoɚt>\+)J`;x]f%A2ۼƑƖ\@f/'݇_KeAnkFG]~]΋Y弔s!#?fz#Q<jFE0D:uGǚ^UNiYr͙:aєMuChbhPX JCr~'տ"d/_l{F?%|;i~JYW<'N)HyvhAIk}*QU0,FW#O~E]2UY,j꿽 ) Mjޟ><ԹqőBq Z%8XkHv'2C ?fiw@cԦK3FOH他JM]樠~5}NjcM c/;!LΆ !@L$@ұ5%QJ M4ѳh˛{F+3gV7.5W]`De\^(ίbȃľ}uW]+`ES.t\K' '},=Droq$-XR\O{-uv?(Ƙ-`E%EU5֢}ƚ>.΍o< ||0)>l?*.j#.Mڃ^XL<\c.Ě3l_C_ h<N.etBu(r {Kas4phqvCQY0MȽk앒¼ Pk5 59půbAлժ;wKyH~ַB/:spCo]F=e^+3{c=HP)ݛ ~g]\_ޤQWN+t. Ȱq(V?"d!)7I׿|Fn .:#OC3WT|ChPNCH1*`ά7PTOib l ?x8ff;Q)S2JYs݃pr׺h/PL\kD0%wt-:KTQñX! 9U4l-:bR?pEC 9>sZ\8=i/#Mȭ`?n=}J8N;Ѧ;/&rc>YfP=mڇ( 4ja<pf|_NGVh$ش̴HSl{d PYkUm_٤F,_fIS?tMqߩ$D!,6Hpʌi:=,R}΍"jְ2|_?uE;@Li,o|\B񩋄G1Me*uŎnH1{!WBs+33[HyIdIVʸla5 V fZ"bJ߼>"8;o-:Q1 PǑSG~gU[T #TAU$|#IIoat.-N0vxLLv 3@`#%f Jyޓ▔W왡Pr #+zG-XTR,-YX1q9Fƽ.Afic.YQNk؏ dK/W)lG#2*i^~i)h-ߥ>[;dymy2H (/ qF[wxi[n*ƘDGӷШ㴑k{䰮3ΐe/:@ x:Tvwu= 3oX`څ&1]ЇPRA-Mi`u=R.psgys1[Gvݚ@8?Oh T7@(S2SBq}RD YkP{sq7;SMn:h}(³(P}0yک+:!ths3|Nz|kR˟ wqOzdu-71H} {:H0첯<8QD]-Λ2 H&m"e2j!q@߾]++Syzbհ> 89ٯ %%e'esWNg=|i$ Vrkvo e΃9EHL Gcs5f-m f)nlhj¹tXE,)$ >K!Tv)PϕǚӘ[/FagJZYdjRǑGԁWэb dE*՚@#xy); Cc΄l ∪8z\cL~8}N-C{9|nL6n*e\ Qg PU0w`{I(y^Lk_+{93W%[N6;ⳋ9x(SHsfD@\Z4,JJVǖ &f ˲%o-| i&llRlb;V?+X^D ;|60Q %G-ܷIzw sEcf/ghe&>ⳏ|Mlhb3Cn[ݾuU@կ!^X9 lKO:"sn7E$vƩjk;),VksݔiSftķJ.,X:v1N$qeLGOiCOFN@D|Ex4!;K@~{=6VOmŷGRJoGF,^yhF*Tudx#)K`B sB;(ηgl5~9Fbr$˹jO46 (}ΎpQGnK4x}ťd6mܡhR"H\fB߿&_jn32Vbh.c?. d=൳*xQ$C v4g!e[կ5XV-b}}0XLn3C? Ȟj; FYb苰ap;pPZ|y'`s{"J*b64haZ@M R*7Y)IaO).>^2ErXWou:r>xQ,bTA4_[" EfG ?]aKp/iܠ=7>b7&q}ȁRړRwhQA- lr[lټ0mlUTdI!258.t=:.nd1_0L.I b,nR4rMWZun?s![bz格i- &yj ?I:T$q(sG [DS%N"BEtYn)05@s9'vR7b; D*]VSIJj>649 A:_L3$/jB;p%#9)זc[d =RR,fP`E2%?SĪ,URLwO#'=㬷z ,oο7MBL;sZH,l} *45zQ6%1\"vl|nG5T(ogdZ UڭzCjiFCTgrMkv_Bؠ3!?Zi%|l^h D_&p$Sİsܵ 7h/4V麇Xjzq{q9r WH( ˑ8-R|bG|"]`V/s L7t.ݶi_>]z{ lk~#8"$2*c)٭($0,pEwwyPh8ϣl{S68Qԑ0A%5kdMZo?Hv?(=~LI焆UaLI}JYa,myKBѸ9qvD#rMp+=8bz#"FlBlإh k4 `qw ɅV@ňO0 jxʼ;g4j}nH/Y֫ToZrm~<2m/rwvS: ` h6Q Eu+;ƛmĿSU\z%Ud~6fzvq5_&`c$kkkkJ@`wl,0L)Ilp|ጅG7,?}G)Rt3^ZƩB cn1NpNha7êF2p5oKű6[1^PO]`-(1/\9,ەMdMɼ&B$(VuYDv߸WA'8޸@0·t3kUC0A>5t`h Iq /JĨ~Ć 6X݋YH+ xU5\ERՅK ?1+۬`0W!^J؎۳9<5zoo 6VCL>|Zkpz̤4*iTnpF50ǨB-X_8<&}/V1 i*[*þD *$C  d~M$`A0vJYljA0fIt_[3 \?Hmx`i Ң'?=GW{!ѩ]dNo[}7`q*%<8ԶD8IP^ڹ܋xzuvYw) 7pJG[rOD?1M.գP߼rqDo[LHr^Řε  yQSpfxԑ؞OW>6Pt6Q^IK{?$dp>"$&j7s_)kˢķx^#}O߳N Hd:__NaMʹ!ƺ2 爅E9ƹ;ŕz`/-px-Vv9DoLΩp6ѣ |O|[k/HB!L\Tؚ̞=svpC el:XֺDZ43 azuz3 F嗇o ]bci<1\wڊ#J]24! k}(6DWwqԌ#NMZCŁ[/ML6%le6z'1y4$SKdTʋ6mQ=y0yooWo솧x=N)2wV;W_)e:;c&*]4 H2f婚d ydo}4_Nz)~Du#aш՞3oqhM꽕 dot. }@rɟDŽS}%?P|/4 }ts1q4^MP~+扞."H:M-j!ȬWa6ߟ-jq[LFX(_J/锟.T`Ā*H]03kLh^-WoSZ}YXk RJ;e2[!BIK1Ѷ(+m9(wQ!k 9W )w&9%_##?L |Ҽ~b¯ Lz[bzMCvKɌ>KdM ~CEP&z7aUm AE 7`(+'~}Qv9G <:u.J ͵O۽ĉJUf5#υյ˺^0Z#U#h#|i<hژ!VףMkB0T0jxxnՐfqEη벉uTor|h;[l" ̙ԒA1pL; DA5jT:u5QI2VRT eQ$ԧ b(\N|wʾNb>ZqV h*(kMi#lOO1Գ3ׁFڰU9-SrrhL–6V:e2<i+3lLQ4_fnm"Pݏeg@o%Om>wݴB"CLT% uF4qNqW.񆦓~$`ޣ,o0nOMi&a̒j=gi6ȗb{4נ {aGL(a{54cB2jy4-3+N|X3r&RP] **iJ֢G.xWњ *ʶ*u|,Ht!Ɛ3}1N!%HndoP@$p%]8g4TgX5mY٣)"o4uӈ z&e9LNO ?<9A:(DI =&zNb.?%B:Iβ|gË-bx:5Kf$@+S≁~K _Ȣ>kE1$V5tKnXOZd40 {".K9'KSla=o$u u"w?D*ăO|Wb[ĥZ^9Zw]5;EzGoDUwxw:qu)b<;T֭_Q+X \ 0EOOM,׈r8%Q2Qy(xjDWU{ [»\ѳ8PS w_agإUPk }i7d[޵t\0̉8ɰNoić?Z$D^ kk~l)ȶ,V><>-SeΈkMf\ȩU茱o~~֙4o+>" / * x9&$2&pS`.՜YNOgB3Z{]38浔7A:5V] NE 'Ψ7_hOk63~?oמFy J\Pr|0gv&lMF/(#T}/.ݐ麣rTڀle&\]f3"z 9cT̍ppVRF80ߞ`Xzf׽nu %@k݆!T?H|4[uQ(iٺO$vgAI<*'$؋]Wq, }$؟ D߷j=s^84^Y|ЫucPblѕCbIZVu(R_[EhI$Cנ cV%6ͫ>aXb2TٕĞG4붪`I΢F3B11ol SE*.a0ⓌY{N؝0xd5脸xn^ rW8 |q׭S!j̀ύ N|z%װΝr;`Nv3|pݖVuELXĸm1QO{o7 Р++ "U@Y**.[PX5tځnNz_Ap.9׺E|@\sԳkj~Vs&XLĊZw洔N{ZLnwnlB+ĺ1u9Ջ m*758klaw* R0VςMF}9ߝo.p]F oErQe䅓6o*TacvwJuS. Kg+H.h&L~^]#x]S<@. 1(}!pE]?S5GR#.(4b].a_~P܄)'!d^-h}1 *@xJ}IK}®鹹׿43Yiɩ .@G`FҶj/Mu0f~|" )0:,kE-!FM;ANLH-]UXޅTC8;ΨΞo&>"a/^ 6]&T{AਰaK%:XN!{ǷINĩ{Px}~e׽;SrY)hns 0lOځE-SvPˊ`GSm9 E V7Ni^6-i (!(uRô0Ĵu5N)Jͩq}[θ@&jAdW;rS@xg\s Y0cΥWZELjGB.2fHH aujb <@%e\K)o7lRAɟĈh7~ݕ KGѩ0>oNl?$فBB&&w(9 Zmn/Th,kI`LȽxo^"XE0s@)aq|gtd?̆ӯ D ͋RO>P+kn]`5JxbfBCLF[#Ds\G1@̀DG$E! +,a>.&z HNudyNlЫsI+yp`OG֬*pX{ţ<^FK_ay\څqM43z|z+>D`Jfdm/WO=+?@EF*zP_cԼ 42>Ǻ2î ~H]S i=QjQ{gz3?!S29&gLG:߷ 4A0KB -(|6,)8%ڲBDk,.q籿]UFSIGTSҫ$?,Uɠ^PAY/}V-YQSi=Y2DlȱDu%|{ oC>ʘDR2q xTcp Ϻgd2aq+aq+nHkS~a5||aF5TvLap,пo$Tyd7^ #P0e[/)Ut7F8~(I$*YpTs.QNe]p8Ǟ ԺÞ2reCy~#tQ3"Sپ8 ! 7[M=>Z2&|8glj Aӿ©D:{s1;K}i1sP.sYՕ&x9Mʨ1 k_!*v ({je&YUڬ)Kc"vZڤPLEr "ve :4﯏ʇ0)T qhQY5[*{w#hEZZ',图T?Bt`'qi`,KG cW!ט3 á$~$}Hpz<=]\0J\v1P SfNpmZB\ZX\]&#ܕB*$#d(O>+JLt&,fKh e>jE7¦/|Wv0/ߜwm96c"meZwd>@ BFfi9hA'M| }B^¬Q0odnG{IA iO@Wmȿv\#2o,Wb|˭S7<8xݦk`@1f U=T8zI>WΰK#5SY8UU/V>yr mOQiČ1N5a RqN6+tXZLM7齆Dk`y(ܼ!!wZRH4v=QʘAYEh/4+K$^i2cTry><~j6CDԙ;7R:)K:@9x(f'qNP &*/1UN3ht Ple\,=w^ YzZð=0$|Gv߶0oᬄB˥=9cNiQnE{HoTkv6$ ҃KR*#P#ħw9AU@@]@Q'KUʂvT)sO'Э/n*b&]J]3N>7hא$ U鋨cD6};z[t*bU״Վi>˪?WS'&KԜ(Eǿ\G gartYA){4Qv#2IBm >*̂Kca+& M{ Ҳ򝺝z7 pIDRf#x1)djU|ͩXCBy _E̙j2 8Cr)'΂<r/@㤃caf5FVx"-oVIy) qCn *rDHܷXڴʃ1y5.Z_97m(+ٳH`O,`AE[a5XjØ,iIbT6qZ{e6O-^:U/#=>}r\xgO&r]K3(6S%FtX0rg:hcZkW͵l'$~[㿾eTPV+`OʍzBɿ =lHBpӯ0v5AQwߟS<&3$_$K S.:iqv L>]z>&Afi ;vk Gߑiw05 o`Y=MEώُyaEŪDe nQx%da=keI5" _nXUx0-P8yKZs xd25]6xT8^QG"N}+H2!jR ѭ((_ 5 U}Ǩu2wÜqֶVb:;JMp J Ct$#UWk CC|pf;xo/pѿ*Qd2j Xt -=68 vP`^A"@C/~4W Z=@fo]u2Ve0&'ٰju=tЦESvHeLd^:|ѭ{XUwb8?Y,m2ǟQXE1saiBQ㼚J!tʭdAC0g Y13fGĿDEuާW)Z&șO8/wHť브w-FT N/K֧zs}͔_:NJGs[J6@Lzf%h;WؘQ1):O8Pkq;v\M*zB^|Va6 fNm1cJo4sEXM͹+'-`KQhORZD e _"p0p?"XyPT.lqdTc_U*+S;ԳEDT60jHWKԐ%򦩧Q԰>BIY[8*ejzqvIkuv8&g _àGV8m1jCe[qeۯB;ktXNA@ۏPǵض̎!kS] AD,Pkv3OնrRiA[sCDmmz_o#lgxVM=S HG% I p6&8m*Lu̻)7,S&kW9} w7?@fOtݩo#lhw;+ʴ"Yba%v%)ڔ eL4AymSq (Z_P%>h:6r6k\0"ؓW:e)慣ͱsL.[D7Pg2I1'OB {A~N#< =JYR <Ӿb8\7Zx;0JʏArDT*[=;:va+޷xC]awToD",RZzh%S拤LwGV3޲r,eZawIA5Jb3j=TVq\|BgI6qKpŖ8HE8bqvޭ;?Mhd.@QVd:,!JYqJN! u|?nUxd")7 \W7~ݮwƈz)#!LS6O<17<[8gj'{-(GpǾHz/ͪ: dT'rtyF`Gu"gx9S{ & FjԸkdrx * d[^:^F )*v?nYGAMB} WG.?~<7}C}m<a-YcXN%d>|8< i/*j⢭a V &umy6 b}.#|Sc jXl7!^v.2TBB;: }(lm(Z5@g7&VHr%52вԮ[/Jy9@Cn顽7v~02 >Oj{8@T6%†L]R t觙_)$2GsP &4b"(ʊD ~jGH:`4r‡;|xM*~ppGA Bp%z "~l󁡌阎 wh9ޭk*e؏!<4PwIExgqBU;e\'^ !0M{K/S/a)#~JEЍ_C P"x)܁NTXi.F<м-k֯zstkټ IѻQeDFVR(eg,9G¥Kq҃Z bF9È;2ҝ/|QM|QfPklE:"8tZ.Ľ~{ 5{I>NT3 ՙhca-~fMЛHvf*p!7]V\k=%WP ]a_~C8bM\BqE2fg薒tvd/mdeStFUּT;s%F.@)^ ϴeic1 0Uivygmv9"UTyܤޫK%;4w],S؛iEW# pn&'.VHӆxh?xprhPY(NZ<_f:ƃ`>tf:s喤20,v$sJӖP= LdM:@nh|#+`& y=O@\C Ls[>T/'GUt▄[1ͅicNx3b90o Z:R[Y`O~pKKz>'u Jŵ^vz$=^w@{JVO2Z ؊pH!0J<ьtZml3EU]LxN"v"O?>H :m03sp?0vќ3] m2>p{NQ/xitcxJJÚB/WMގj]YKZe1!xޖ}{J6d#!k59sIwEIzJ6P@YVnf ,6uۭؑ̑[@\`k5c8"c:LI_}30lbO@scN *%;WKq1Iwv|KfG ]8XG ֏e٣e"$k)Y==_(%SI*VJzpݽ箥B2dE'~~-bEBxNʙRIfQ OGZUtbR(}z U6foCQqd+5Mt>urb*)_Z*(YzONZRU9!ˁa-$*&Ԇ곷KmgU*RFR/p O[s{v9Q`cɧ)T5Snd!k2wzOS…w,g (^A=uTo)I'V}^K䢣5NĜCԢWd's`=[iS|$!]^1-|8|V^4dĽ[s<./z$!"呒'!18AG9JV_%2:/BwCHҴJTx5sl7Why/fw-fDҡ.Xeζ-gBaM뮈苤u]cqHG@c暾'XϮ|ˇ[2*HLrC(m,~ nWv7,QIK[P:U;Tyx^cm'2XIxɈQ[J5!W:4N!Uhuc'2mjJhLLir{5>"ou6;(<ɉ6(adK<Jl,Qק >:͚>h ׎5ǭ1Q 2fxr%Iƚʼnu#X^W0m%GzF?Gd7J~" 5XOS.RևpCLp?פ8?o-أlZ~bz+LH&L/saefԌecZtHD kDNusi mg)PIAE!CP ͗6[9WjZfz(Y5KPxjep(o = zh@:0=tLAJC].-ġ[6aAG&:'ҎT)JlZ:E0 `NQl!ʰ#*n]lw;=ab.(p^M&rzqF8[ c(a,j^R1*(_I7 $y˾ؠץI_ş*g\(ro%hs'-YW#S|U3\y?خ^$&*{.>̼ UJ]|UVop糦H!= H4EiQ.^T~4v]E}u?K?g^5?J0ЈtwCUE$iY 9W{. RFHK*H OyDU4u7$B1NV`s3t@F:r|cNҧ?}O~ joǓqڊbMb(D1t^_ <4mCd>B5.̱b))HFfU%b{j!bIRlڤH/ ۘkC1r:gxBc- xiwӸ*? y.ysmjxH>5SU#Ed-b"R1hW=der0۟ 9n#DEP >`ю6V n{߯v]ٽP!ukCV6.&>glcaXwd8Ɏ(1 r0C?7T}N6^G6|z 2=c) }Q+D-4N*6f ̖$k9-$NPV&j9$~ڎ>W&VMM$oX\ 4amؘv5Nc_})@O&c, |ź8}20+}t4Ԏ/vQdmpBv@4}OCJDuI[manưXMEGݑa /W Oa?IX )J٨cзĺթv[OᐧqҊR/+<YRtx4!FjtI!?2eyx 5HS[;C^ vJeuϓ"9TJ_VkO % ':pA}spx0ۮꚍݭ3UT8hֱnz:\XEnTk!?UJ M"98uV|Kjeg0(`m g<ŏTm%VO(Ҧ3t@O)9?SAֈJ7Q3Еi.}1x)H8u8לTwzR9O¯s@(E2}ob÷K[~OOźpm t,sݣs|> GU 7f7zbQC7&̹87`GJ Un6JEt:1]f@@=_o(sF< os_ćq a~P)7ZY I}*7 ]Q𽉬vΐDe톨αӐ((V2 zoH<14DgfNn؊ =.h F`Źz1?Tuk'ʶ3(q)d9+ˁZkereyH.sKcu2co=C!m*jJEs+-ס$ 1\yKk+Cf,ɰwzA*D]M!HUp3 ?V.ea54T u!Wtd%`ma_ڤY›5`*::XK,[$}̟2 '?aL5]ǾWҙ"Ł4"ûm#vpfМCXl%ed `fߌrZt5m_(Qgp4}ǥ/3XiO =.[}C+]{_痚c+[iPḋXUlZ=T$NԌYI$f>1zcsBe> @W He3ʸ s:`]dQ: `(];?'7TW9. 5!>+sN*{?6rIq+&OC26'gxsnSQe-D*R,VLJ]88ˍˤ W'mY0=,'qR{*Yg|}z>&Q ũ} ixa쳖6Z40;rZBbeԄpVPiR^#\zz 2G-R|$6%1«-Jq4_>5𗝢JqxV0~,1IK X64$DnKYE}#*rk_9CjK̍O9.gKMa[9Y}v=ϕ_-v: sd]ߗYiLUP:@8zjB/[K[ѷ\RC ֓\ZVqG=hi\I.Ry~$Xo:%zbBx.#Hb#8) v 3FYEws>yB&d0INc`(E0n[`2Ŕ*c-L2.d:>11[ ޓqa,JL(LFl:Jx"\hv)EB5б;A4cOa?z\w-߇lp ‰̜?`K{% iZ_:R>qHI9UQIuh@F  TS /kij(csbJ[ `􍒉zuh> ou0hwGX:CFXR]WhwX>A'EIv"#"$F @B 7zU"ДP5@U,WFSߊҏr:M/`ԼqM` V5p;t=jw|IŁ_E⥶r2{@>Z?y!ĮI`:Uġ \V/ɂx{Jhxbodp,nShQcO&VcSAa^ '%%.Tv'qVN ˑ co GKUmgK_%"WBK]tQr>Dl1i9*jYO[ ߴ@=|5 ( /'e̙T=W"Ny&?f52LV8ww2A.l!4:ŭ $3+ɃssdyOKv7A'W잮c6(w ܀6y Rl1{X}Uû.ܚ ݮ?6dZ&7ktQcOGFL,O#l-r0Gv̞)FК^o0^O')AWX!+vyYG@c7-5ROh_X\TFTΦ2dF>`_-Ma g4|kI~3pU9f)1AQoF*|;S L!A="hKD%iIOZF70׫?rhy­{bLB7]Jz{}b\f05ס+FN*RNP3^n׊jW H=;כ1Q4:̤b\-Db瀉^UupP:n$1`h59M[ohѐ)`jNP)hp08.O8opjd&k#,FA}(-#2O1g^?JjD*㴳:>{ҭ?F-4WoԒ oox.FQՠi~V3p)o}tr*`w57tW+ E^.Q3E˜6T%߇TbK$R8mm%剔1`xՅN7 \ ÆWlqhf,sUIsCV!pۓ s<'XP }c;rhPğ~FT,ʩ5.]uATRt_9SN!jvP0} ea":4zQb`A9YP .8x0 a m'S6+Qlu ؇7 @m"hD\;!ZUȸ&oؑ?lRO= BTKXBsi |^&”{x(5s `9j^GC%R:Mxe#4A9G#%6Ha}Z6}t [ i)wu(2V瞉!w%Urbzczq:tMӶ,?@]bSCeehٟT=z jYpT0h9vDHSZ^ :|?oY.$Ӣ18%Υd-y%ZT&3lת̋ 62,Bo"i}_k;AFh]ϥȼ_w$kx5hkI{/4O3^Aԩ:Ɉ?xۭ!B}̩jiV^o`dTq78'Kߘ ܧ>(= .gO3JU:_6$D~9,{&w{=X\ ;Ui}×Sti"npRUp=B9yZ$Lcn^Ter dBQQcAQR`յN1mkk]ݢ9L agJXb[@ӼJѢRr@v+jIzSFI{7?yx;2t?B'Wb.3G.I}1jev6NMgnoieM֪$yFWBD[Kؚ w"(=Zy=݃ L&eFYMMؿӓytCEl.Ga,yOj.U lf\q/RY̯>vho>,f-2%dGf(]8H>j4R&VQ =FP8(Pdi.[DKdemW8qaֺB@徆6tX?%(Ty2h hTn4M \aݴWQ3נ'p:tu `#Ż DXIlTŔ2n{ps|o2x( ;Ik:0(VwZQE7` [QUIP {e)X_l*6PO MZ5bF:uCyo:ʱ\=LLaqUBY%3Ty>)SSB7s:YH&c)+ x[Hպ4+ gKQFpKf9wssnERtTNvRg5Cp<ޙ&OSȎ,^:l>v@ ZM[s7z~5 $+ (ȩ؞GlGjߞna C8;_F=e B$Px/xNR>?@odוEcͣbkUdWN ~@/is$8l1f'J{`v И j6z%n-d_]ŶA.JN&"Nʥ_+m>J =~@l gx>,S% L9`5go#cS -\%n44YfN*>=rx̥. _i[ &5?4B=44dsKos'! [<Ӧy.¯f}Ղ8,'{)sÒF_9/n)#"srslM VS⦬b5\.CN uSScꍊb |a_qi~Pg%QTV Y0S)YaTNn=ꬥ48@Q$(|k,OG{hVq,q \_^s8{Ogz81 XRIJzG#mT5k; :bhO&cȕY8:ohziĊ.QU;¦DžJΤэ4>(> t-adj1; <,Tӓ)g!cJE%7fx cv vQ]P9yG]k.<ϿGp @c6-U7aE Γh̅B(%.CN& ۟iNiN3!tbݘSĻw򟨹P ;' o֧JnX%19R]wO~)9vژi.E~C:Jɖ>Hopg["Mzwdeɰ!nAg_(3_ԪW鬘!Vo  &yVL&uoCcAEU w oԛ{xvIϖN^;p03v_(So)s9 1]d]&w|ykհX#KW!~_ 4Ws2ᶊZ,A7404%,CBnݚ<ئݞĢxۡo+A۶E!eh|T4TOe0q*x5|۶c@{]ڔ=aSzJ+JhllQ!+g4l%ʶmϠ]]n73Z({jSG=Z&G/V+Ccc$zc<ӨYiۏRTPXBM2/"4Kb?M`}P'I߀s֘pۦiT6z`y pwc~~vzR Gbkx⯥3HRDяnTKPf|nTkVbT<*3jAU(O6L0W?R&iP*W_-4iq5N|ݠjJ\FpHh&M+nX[`ØpL !\wkv=8!1Xٺ}ly" !ņjyf/L:ǹrCIŕ1OlG$'4zrOPŝ?^ڈ-R.l+S:P 0 ?.'Ve7GY"p5 `H7-hIV81W3P 1zw{hlZE+6L;3XǍjgopZ4cCգ3[6&#*7U'ލ:[b5,( sR49YAXqE 0rm{w[В<2lM/k.cvK&~0< 'GѶ~)]NoԶB)93R32/08*{QU:ˮhk= 84_4 ^IжDρ")Fwqu9o]QPeo$cll2tŌ,$6||U{VQlBtfDKr/T [m8 II>f6TX'cVcPW^21ف)*p"݊uI])レ(4(=#4_":&nQ̉[B  @O 쿙Wͫ#2UR0J5'; ,w(} Fv޼ MWx 2ؓb؂JM-p x՝;e#Z(,o/uxQ} RUG;Ii[e=T`':-;liPda +$;&qh=@WU]L<1N$_ҏ:{Xl0l]y@<|a>rbhh $@P[0iݑKEd@:Tg Rm]ctS"vO uOhwH tX4Խ"*%eBHэ"|YVcBkfm 6Y;Uo5 NN*y0)( ! ӈM峫N!HY~Ʊ9Ҡ$J] Y[lo$QF{8’tnƉ~(-}A5_g$kq7o[þ u*?Pռ̈;*|ctC,F u-èluQ6e 1iΩϞ ~Kf6N醫b4d>FIkS v >b·s WоI6AvM/ 6W9BZ7^NlBldRqlw&1Sx}UP4܊5\T*,WFSg T}.pjj &[fnJ㬠c$,L>4 !aԵOK0pٱ^a׊{1!QҲ 3 ǟ3^xsǿkÜ/̍DjtؙfD1ot Ta0>-`M;mFM *\3Y gi&0YOY ?=^n?i`qXw]&0ԌK}`ʗZ<:V#}YR젼mxؠބ)zd*zr< k tI-Q&cZ۰#_|{+{)¥v{.<ɴ^ive*5W#@+Ws@i+-\-WMBDz zqguWV{[/1=[8r"/Պ<;}X \KS}PkUfI_^vg3QuV8Q,zAV^]ڛJXvHBG]Ol %-ۡT}oa@s8o6˸67!ֆ.Yh-rp{,`<iEy0=}}U;ĻFlk;tW۫])m`,|Dzʋ֣8+B(N&`H S6rIJMG~ 茼 j\;+AQYN/^ڦC `e{wLUwP0}SQo6e-Fdђt<ռ$Ӯ&lcD4U+Gf+9( h VŴ]t#̬~D]pxX BT<. 'hy*32tT #373 EF'cC[xt N0`} O4SGzbg&.%h}Ic 7N>Xd$w}~YT4"H $=kBnZ0I3\BH6QE4Hq@[~Ӎԍo +V_E>[v%#;3stf}MmU2!8Qn)Dot~<8Ѿ+!h7Tb۴tiW#|ǭ}!$fn(Q +|ޏ<&hȱ">9|zՀ3Z&ܙࠞ=cF@x'3#th&x9'HHӏ=WZv pf̴dap.(޾o,̳]#4]lõhzoͥPMA7oJ}X;G/ $fe6 blGUI8f|"X=;:( W!dk6jSofRR ] %C˕pC*3fQ{p0f|`TEjn_Pg]0g$WRP9nBY|+ژ@YqGo ɻj*IbSnOήQ9-p^NQ /%e~٢l-Y;<~@DZԊ@gLVdU|ꍒMUu~@3Șpv[ m d޷Ahh!zב7K4"70z̔;[kwSyu004Lq P0Q26 TUqTyL({:I95| \ƶ>$;sBZ]NlR>l>Z~8bJa.0s%l1YVAk ԵA̟MoggL2c{MV7Q?ElxoQ鎆s!(a- TVTT%@(2\\D69ߤXT1Šw޺g5xv4`_6X=ogu)w 9-=:}0_f,dO_;˟JO _Nhyu…+^×ܐ=j<|YܧigPoX@t1ͨ|8*" unhv-Oa.5嘺Uv4ShqNaES^\oHHQEWJA#[s MZuڋKw.4 U,:'8jYNH _<|1cbW$N׽ħUܟ,$zYc[yR\q03,73Zza>шW9NӃWV该]b~^"a#^M*,hO렡%c }UYM) j〶U:'xxY*VSɘu+WdoQ/-=osTc t Dh0"O ?s+xKG/m,7?X+MPkaH9q)=Pg[3Hmf4R?t?DCxzmA]pTBx8Z~E~Ώ `>Od>}ZRqJ)_]%*uOʅnܜ.5 $r'#A,1guH[OGy- GvNk\뫪' a|YfwwXWɍ``ͯDc{LJrh}Uwn~ n˪uN? .hIK@@"n?}0W@,쒡~Z;kt$l/zɌjC쒄^̶i}ljT9˅]z$4;)o 9JMowJ_@/xP#@o@xśɚ:^-lwDRFx%CtN\@+D"pjx8>3 TZ&gYCFSx9`] XrFitʹy3i?7Y**1"|$3KZ~+;?n!Y1FtQj2pJ]f O:b|˛ЬuwN̘Zj";,WS@՗5b4$JL{jѝ.T IsX'j LWM"eyzR91cVWMܥ&lΡnY}j|fZYq&Ǥ-̪m$uWm4 u3O?u=5졊$]36O \lRsˈЕf KT 2"xmq5]brYwV =\EOYk ŰIJGs7xʡON{EpjшRPMo-Msf~vuUJ1檾o;syCք۳FQ$Blvj_̼}LWsub"n_)aK|c͠Wο2ҟЬ>nJ[&Ȃ}J&o54]a*Q+)SP`3)rar\dw^*)W߀8Lbh k`{uX4g}|Defi T$VLym4 v!8ٶ҆\\k&dc٤ jlfrYȜYi_WqUs'˺,/i8.a1Fh%jX{ 016}$cީpFeLⲈ8ְٲ\?EWlh׃r)鵋0s,&+Pt4oA`>J)-0 ^A4u()S F8 JZ\㏬d}^4|˩$rp^ `]a VA*?_3OSKMλQz,aF*BR Uk&]͔o42rlz;YNJƨ}6FHHH,9o2|h>QkwS-ù;bψ>yy cjz`M-A#EaZŨ]4jE38TnN+͂+ ?[KLrl@1J-{+鷝<;9@U&a.PioqkQHOUQd(ޘ2I^q6?4;ѤN0/]!Wgj*1y@aJ0َo T+w[ӶV8Q_^st+LQ+2bOO0L8N=b3ӳD(!ZO-c7@NV7", XAG++\׳{RИ " ZKYUdN|TĈUӈ3vY3y(Juw힃<럺{Xܲy}D+PNS~-3#_׀uADɯ|Z‰x3cuǩ\\4`4;#HEɑQTWp^@$uL}#\s6}'f1!ty7ϡ6Ǽ;!lC:GpQpbjO4j.hWPy*wAK)α>_1JK?N2tuPaGwй )>eKf5 {߶"{K¹8)[(4j\+M?O G: ƒXŘg̒,-uǐ;/hr4Ӿlk幑Pe|ƚ "t.S㋌PQA0 M71<.BGJVd%[=N^"f G 1<b7uy}cфE`}Qu)g\R&cOzFi ;$ w\; |kK=sUgyR =Y$xMLh -ᷢJe׿g4+O -J(8{ 2^̦T7}m $e7,ZL'p$%돣L* u33'Xڥh>g %cns$ u|j!do /{9Q ˻nW3qag}dA$)J1g4B}5r%$( 8TF kZN-?xg^<'%y(7>'e\c )(T>DB@s J؂<_JU^ߴr$앨Ϸ WkG 2 *?oP\=sDqkGR!Lii.;?YS޾6r<_ W <_p6p#\~/Koyyx3̬ë́Au+(Jm[ `@J GeДl %}/ɁEI ˾;n3 Fr% c YB^$WhJXDT` B=kL1XbךfcBjuW}%ݯbIU6”͈00Е7 zc;W)xŌ >{cTV5iDr08xl8D&" qnve[YMq~pMuRqT"}!0 R;H5_&犣9'tD-6sAFJS ݊;]'JeZ@8arP+7IIܾ.ג!Ysߊ0nUˈ|aIrM*c.\ȾҒOFx.h5ˁ|tm< {"6LgG^py BBoPu\exK-?.$}~0PXFS%J! #KQb+uTydY4{8;Y& WGSGOxn*5a \q$ 6jMwe!25$o㾁hv,=nISb8v8}nSy[8 -?=+ X!~E1"D!* du 1C $,&g>oVmy"r̋>k!g5y6Ƞ4?z|:;^<8$ff>ŧUMko¯j:=f?3|g[b0K'6G^ 'L¼%0wwzfLa浤#'U0=z,JۨwEִd<рCm겑# {l& v=0ODVTssCCv9 O66r%̴mq_^GGT)i7&<7vcb: pl{F9no"$ٌn_+Aq4N#uw%lCt[r8hyG YD~WY_݅t߲L15w7sԪc7&C9$<RZո$._,W}Eϴ*xxxK#O14TiH8*%O;8˔[{c3w;(SXprWʴeO=#zeILCyq|8S1~$ /Ir;0KP(78+#lPzJ]rtn7)4"LRKbS*{Z0q#jK7+, buھ1n S7Q2ӤS%V;S(Nr6|^BB6XxKQƽI={10"l8wi[xczڰ>I`_H(+n)\i~O~%3J hLj<'()TrR`QoZ/j8,eު|.;K8w٧1)]7^QZP_68Y%F+.>7zųԬh 1;_!)&h\9'ޖ\ 3ئ76-wx+ x!*SS {*Y0^EtY#g_9ӿկF翡o!veęe)ntK N'(=JE"Q(^ 1zhgAć>:uUWϷLh[tCSKP@a:woNճ9^i/`4tBP\ħpK?gO (O+i̇g1]|{th"u1L"!43wQMҧF 4 SR%I#3R"%Gy>3՛ܚlQ9+Yш}b8zg ܂.`$L`Td/fݛ6k]6u}jRY[zW"\2/n[Ӱ!ˆ2:m_s㙶2zZQJUr{e$uHlFȦ\NoA oX$=HYJT Y緬nm5Οw%f{;%YF%|æUS|:Ze]cH>3(՚[|]é궥"\ZÝQǒ;fN b؋Cxj.2l?WF(2G1D.zPHs#^ iomba`xfziud<롣{s Ç Op?Usa\ Wvбm@*bUt㙷7Ms?LY9*t1WJ}9i,Ԡ(d e<[x1.3?X~xi܁Ҕ#ʍ 2\T~-vZmhȟKiICd2AT#΁^+CTJ~:߱9R~hJ%UOz|\DAH$)+nAPF$$ Np `,aoDQxp "uD"wfA$+탫QeRB|s6/W*9 8i)4"oLvq<V塁8 |qKp=IJEA^Jİ:aq(5_h\MBr;ʮv_\0M *Ҏc&RFq͎\W4 ?=.< A^a:f˰5M_$A6+݃eU1U(+obE3' -H$jI7-+{l}+Q~ %X51@-srgTX32o Ta 06%:4zEuo$i˲7mSi0ZRqQ#1кqa`#axi뀲X2RJoVg5`+Yʃ_W7l6 nicg>vY}gHo"X#DYH_bJ\/,HN{5*.  BG%l֑12$*<$U(8\ #'d_:[ZgÿsVMs)Y`gbUo>p\+Eesy5##@sd&`wYw~^ tiߗoNݟ4uq92#XvGN(ĵwCd s`ytDGJ oj3HX5 'G"Kҙ'O]uɯMWMSvFãhO0j%'G:'nC W?qcΕUҠlK# (\21,ITqEZ\q\Ȃ#uŃg@i]VU/ܼڧQxH$~kd k֐AQxG" {lRǍY!IVpgxs$"xuc4d|$=DphɧdǸ2mwfp y53Mv55ũ bzvL=94g#+fلWaat~:u{𣑧,L&Tr3Phexw ߛN߿BRPp5R.RZwڤLDk,v_tYnʖKS%GmPt8,$Z50R8-Fr^sZ/Ȳx6rǨX`FGv6w& u)Wj:9?ԯDH90VO>ݶ%^jfpd.6Ÿ<5F}9j׃ H[4 s"k4[>=Iٓp5[.oz /4>&X{?\xކg`r7GN:" MMZ{]V#c₳]fr;EM,%<(K)Im!^4 ꔒ?jM!%a96rLI ȴ-~F;d*iB钽ħȡ*`-%s;ϕ,)ޗ4ݫ?W_V}:p=_2?v = Mҩ+"Z efB,6]FSL~÷:"}8ftPӒi;+aƳ;iWR iBź:Cev+& n(hI3RJg賡>~*(SrC xMő0 "ETw=ãKV%M ll'*yE_o("XK< ;6cW#Vkg6 Uv%|KF-,4w\ /]v9 !P}fc¯Q!U<&lEM$x>܉EG e'c_5F@smt,6 /0\?5k&okY".RMF6U[V^GI@#e DŽXqfԙ?7koEtJL -PkT}FǕh%? > ɇ+2 Bp>ؓhDmY4L`s޺oZbHcPq{Kz*󟠴‘eӿ=%XB@ҙځ.aPޙ?GqDöy2HJ(1ge@H\dEC؇g) pIgvY*Iнan{Mg$Cit2agPN6 ?cuكa VP(PTT rZ=D@vHSp14J&+J3 mCAVwVc0$]`:tYj5;Lg`y\EIe`ꢉ6ڵsR`wnzbzV^H`x}.#%9|!|9UX /.8*w}KDtogzZ_ }Ed/@hqhϧ/J// x*́+Ǒ3GCJBo0"jw G[U- .Oƙ*NS^fyWGA&QcĠDYShTK q$`Ce$'IP*5 1`BPsHT8DrΝ(JZF[6-@ڵhEz SWI/OP$ҹɵTovޞOQ%gN$CcyjiHo/9Ŧ6^3u'zR>xYfy)oؒ}T=YOܮU䂒c`*\'Wq@a7{In1z8]%B<Nq<0HE笰il03ІxAEKg|VZi(Q%c+ĄpVm ˊF-THa=sb,a I8QXbW,U2*{7+ Ҭ ٯә3pFl@.%o,z}bXE\9WH+•)o멂:G^0JyQ_`*V _]KvZ1A:5'D=PG= e-(li;peqK`bh°G"jaRWnq!+mw=FmsX)( F\)P~I( ?i/cÁkIM?=G$SdEӛZbxl~YCyZBmQMjǃ^/ T7#J!k#a?='x>A ;wL@ɂn>+{fQAd A"ogB;L'"^w_<4[ߕ04,22 D릶bA`fq!9sIڒ٘H`xV:DX:RmJ` LN|l0I6܅di0q}^zw&5\"n=~4ap"Z aFWJ*ΐ U@٤MTBh-\B0cBp4HIȡ29*[CBX(8ϝDDoVU~$+WQdqiiiK:%EUoOэ4'eMj()W+ϔPG^575ۊ$"I,%9lyjlwd-0Y+n><2aY{qF־3WUI0Pфr'ƳoB_kAisJZ!u9:zڗT0!rB*[sfE-ѓ]2{ OD)l@Wb'y*KXnZji-MΨ 䞛mۖD_C 6srm~n1_藚]m[ ;Ic/4ol, 3m2e m/$[/l&WLusǂ".;҈=TT"Q>+VSv­~W8GX'.{RP 8hySu<_ 7xn_58SdP`uC<ퟕ&`W3<,Qڜiyk5Ă(, -q=k@x*?g! Iue|^DY:X(ќqd+MyȑdY2.W'̘&Ra65J愕uԞH/쾯xdYkD›ɽ;=ID"٭^9nE*Ro_a!nM`жDh+[Ys.=V9BD[h[r{AH FMf&ڀ?.2&Qyw=hc[2[ЙW7BQh6.2n37ڏ 0!ݎyQ Q4CX_WJ_޷aKzєgf֏.^nvDnn՘,}}̫Gf(]&m=7[&UփȎ؜s TFcm=$[}/jT!13._UcS]bE{*NVϤ]I.k~{l}_ FG7TDpHHBy]5+">E3(!i;TO8rkkr}U[ [㭹 RNOrC13Jxo7~ ȍ>Vjӆoe D#&%DT;m!~tW3U4.ҷ!p7,!R+"j!>I_D/8sUBa@HV@ujw]ڽ:`h*E;4lzUrP0mE:FUs՚)=斡LS K0e2.vp;j*Aq-go[ N bVqRmxLQ턽L=kX[u-jˏ-2^-ov@̔W4-G⻜~5 kpˑ?.{2) H aT` F!GѭUjI 8BG'K5ŷ,͵5IZ͙t,zRY=;Öʟ5mxJ>؊CÜDiĸGYBK؋ F@G mn= D =/3s21@~v< -V,~'Im l$k9p<-Ƞ3G$ogoD\$\:uSye[7*Nwdb N3RҰ3,WfFX(g=<=r%'lgf~2u4AcQ[Uk6ɽ2cq`ƞ^Kx$R&%)%t/jE\rM:j(Su`0'yFB9DsU e%U83&jieVCZR]n1h(A@PA|s2lX1%;D+VS5Q5\OuWЉ~vlA?w5)Foa*gT~X#1LU+អ(\a!> 2< \mlӱH+Y!-癮Nƹ ӉĊN#3_Q樐]o> l+xq *L(j{NP|0~z6ѻ-sȄԯ˖4aZ=ϙ[[(w(EN%1˘>M `P̸ou_Eʂ ԙ;o/\.<; EpD=,LB|,33lN-t}4P>Y UepnbEQn4dBjG HO+'.4wa͏+~*GEIL; p(/0O=wJ+}"I/é>$a<%:jAu:%җVG*CIuѵu`vg(>7.#%)ЃWpz} jhN1U|~5>ή2Y/ RZv;2HhAGAIFIR ڠ3agPtᭆ-i Zl`x~SUmmo nyvP&+=bQoPYyZ`W<҄lvX6SM2{白gk,A(jZ-oxц A+5rm/+YTnza0fڞj, ܭr-п'ZԸebRdEjoIpEf1!BAerƎz ) #1f")HGhh+Y,i\W=/fi{gu+%ܾI޵4[LdӥTZ)*v% iP;7amKZx‹|3jc}k6БM32я ? vsloс0[ mڑ=5w3`._DBg ,&.J}Ȅ9~GG=}BSBIS YF?JzzS86%}zd W1 [1Vr 2xJ`øȟj"riDmwwu1X+v54;KeCY(ށH2J%﫬2yo򙆢^4'Ғ @ s‹Glo 7zci` Z^~o @kCF]f6vG_ĵ9+jλj6ءc@LSY{,?h~7(lO % vR/Jp*"|Ճm_r,]<)Α?#йpsqY3u2h:^7} ߺ2y.Y۠5)H'{A%Wu 4 %C.=2샵 v2H%ZZ(kGye+"54˒kB<㿝J*@]M7z <fitNpmZ45,B`r3{l @e;Ao`>yqp #qs$Fa8<:) TL/v` i\NSZ-=31W%Lh{S~ڵQ=6hܴyE?@Fm'|dȫZ13 Xx 4 mTXSlŐbi ʊ/7W2y)8s"#IsC{h$ϭ B*HO#`|@fBܭn'ۢ\,ȷ]5xq$jɺbHIȢSu*VOM} #sEΆ&@-@Y6KNYpnj(V]7V t5zz%\~+ޤeY-b lt͠j-'VRe-WM KiP'.fB7=25 5\PXNjRywE\j-:E^ʬ,~Wϣ_VcCapFsFN:=%i (氎RIk#J'^U,w:G_e}d.Mջ.F^yu!F]۶YlliĴ MPXӅ ,uz+|-Ӹuqô^S,:yoӀsvØX0_D^Ncŷ̊6OhovB8K_X1үfO~(L]JW ej(li1hkDVINW|%@Z"6P5u943kawfyePnks_B[8ȸ{Mb~yR/M>mk@xvi+bȯHlx(%Wqom6S'rOuIpÄ\r뜙j S*4,{]ŖTgWw|¶QM\b'V @dZ¶8TE9[B^䆭}a_-BS w|$UR} Ii9*//I9IKf4)UR_)} ނ9{}bLy|czDϙVzJD9w[Ǜ1^hIΑ:0 NV i,=_" 0rd@=3ƿ6.p&)ݘMj7 _~ /Z> cWd-YL*d={Ŀ6/hqIG?m+r_;T;M vG"u9D;ympH y!CqǶ 2ݏ!a>7OG#8K]A]RûE,ۑG~u}:|X3P{Q zy0')϶}N蒟h!̯M+,^(-,oG{zߛaU&,(=DYȦcC !" [@]ś૤a)+5z-X!=<$\l%|pYN#tw.8ėJ BnJ8Ҹ#_Ch#﨣@RK8_F7t+zVcُ)WA˧W%}[KB|oG!5{E)aD߯h|L&S'O}&P8P8X07lYGfvZ9$e߲weKitۭ2N8q8gBGq7#+;BH J.^EPO1?/!|JiL}ur;geJ'Q4i6<=@Uj\1](Os>eq@ V,o7HNlthp/Uk2SS\B{fI=H+w7׎bz|!OZI'8s%RmRPi8ۇH(11kL0!@\eu*j՗@ !. 88%gBX҂Yw5|bMe0{Cȋ`4@"hZBp ĩB(1]l+ ?|m-xDWi!*R(uEx;SBOɈE[1}ӌ \nN̋KAYDmh$[6(FB"ﶀ6ԨׅIPN~ LO^0wme6 Rn~'lF -b5NeVY/*fS~p)lϙ01!;{T &pry?A*z hKIc*ZTF+p[ PsG0+w盥\BdC-ρي@ T#ωW!sUY:*XSڜ9Jq4Sdbo=}}i(mѪ^!4gш?zvBT|Q")kR #}Y\eFqJӚaL왷l%-8.oK1q I") ti7(*MFZ."Lj\;3U@k z[l-< bLo`3}̯KŤ$EhsX{HgW"f?!- z a+U{$+#єq}[bYyFfLeɯcK\+sVZ9oQ-901U@ҳv5~&j( 9;jr7DL7aߝͩkxϠ'xFjQ r^$ByON|j9aw Uv@+Pcp^s{a7"[ĊKZY[/WSwTKnD^TA;d {_Or]H8ihkLhb?$*g}%gj]!,Bc~bB# !]9J>m,2m)N\-DVN @>Dp9oZT|B> x"(hl14tj [۪|L\uDĪJLyQz2,n% !/y pO[PidjﶽbLX %w@UԀ9U`B Jn{ڽ>z[bLl됴*X5N#a`> ƚ;L6l//0Fi6n揝)ŀB 1|" u_n R(JR ^a Hҋ U-) ,Q2 a]0 ksk sw+j!U3[n$K5 H7Lyvy%0.cޜ}%ž__"!R5rol\*Шڟv$uNHn\-v)wPfsfdp#-U]e?GL> _V]^L.WGhl8tKz?A!ԷafĘ’W𖨺7uA6PPZ|4;tao/*65sWmSi-]=ķΥm{E-CԉD6v>4 TJD*6<)O|g{芽GpO5o{|. ^TdiI~'Y,MYThw |(rap@BݱvƛxOsT{xD]wp{FTdP[ƚ`;=T!LrNO6Z47CW'#$ޘ4;:xWjo:mQ !=˴g"QB N9ؙO0 f,B f= opQoũy"fx8^q d Öj 6+a=hN?$2vvA?fV6}N5d7⍬l?jLq"S̿y%⥌d+6:!P $͙xx̟@y:U24W|a:!=hx ~tЄc:XR&|*g v97vjV Mgo q  (xW`=q 2rCڵwSYhE Qmۆʄ@Rߩw7<u t;<+e\5*{ܪ+h*n\T>5TuV egykn So @/?.]c4!饂ƅ9S F%P3bo n\̷?)C6TAR:-䉑UaIL/JX q! - ;HaIۼ"x8 cR 9e[HvwkAq䟝MqZR ݽ_1ێzU1B_2Ϩ]K0+*u9cRZ6s3>MqCnV7o*Q  8#{q4>6kT'Ma"hd`;<sْ6q_Ќ2\jV*ٜ0ltSdsp3EV kҏE R QjN?[[ X"8Uߠ΂gR'>d#\\ ^9= ٛgfK/6e`x0ut<4Ne}҆E?(;% J6q*'~QWQ e@a N|C3p)vr|Rx`!K Dw9f r\$ǯ$cPvbIR暌ߎUݴmC!phBUW7]1vOxZ2)+|M%V;8%2SSKUI$gl]+kG×m#Z'nc }|uJE03z+պiWh5 (M}tN^CnwPx% $j’y{"$W_m%?e8?UQQs=3j6JȬ>aU DkI(,KV8bwJnd=Fs`9Wgg!WImsC7I/׌Myz$_XG~hw_vwFl'kd] x.7nwE_| /m&X>8;`Dn|WIZL1ңh0_}Nju|n(7eXHT*ɕ5xN P0fUKQ/n.͌n2),{qz[83u[%M:[f+e T]3$rDNڬ 3x8V12SK?o]@>9,Na*iu=#*DAɀeQgK]XόzO2 9JvscR)1~%eV]ڕy 8>vdL΋<$!?12o9P@ ʵʈB|T>-jdXs(=7ٔ ZGY3 1 +ESG[;pD64^t%6æ6H*ybyE.'e&R#ulZkkނ:#w}O)@7d}}ɼ[2Vɺs˴c&qԳͯ%6r*&XΘ.*( *tB!j4+YN֑q MPB3dMOVbqHQrrc*P26*r;O$&`3J"{~Bs!;~*sتPHG{pe=JwXBΚbA}Ә|$5]҄r!։L2f8S2 U&48>aT53)9T0{MƀH2Рc3ZY~JlP):>a4}Yer#{ScQ!m8 H>D+ᩣyKΧ0>>ZܛwA!Y,llv^51t~q{䐚I7]w`/bn U^skpf8" } \jI4!Wy*Io@t] 0Nkt ^g朩ҲW})L4E3b'~8dFJiKb6z7eM]Ƈ!-gIVo^p/)5>gl;/;qšu uGՀë Z UUsמuL-jtpP8-O;bU>_>k"_㙕{6dͬK>]RB.]%0=Ndjh !9pٿ݋i3}p;mZe<$"{rIߦWDŽuuCe+_GE RD|>$ i6߽?`/ReD/ EQ LVf]׍׬۔z/-DH峣#CVȉ:V4VagENNa5LKm6zG`ˁf*Kz8TAWtp@1$hiƔwhX.[@Z֏&_r0# l?Z~gDmiF$f;~*"LѵynFyj`V腫2؀*dV^1-\jkl6ΌS0|HwHyMo [_E&WN9Kx5RsD7W1L}-!R`:ehE50>"JOm+df?Ru]A|Šߢ;AҌ+"H5qtQ1Ig_x"{KMf*Qbo"ЎF#[癡g2)ぬ0nh3TIt0M!27q\XǬXM"l1;<㰹Ig 9` I]H*i~d #ʆny8ih U9 ̨xdXU^ i(%xΈw ̒MZ?8bL&@""n5b]p/wbI̗xvAM5p~\K[7/Of(3*le\DcH _:>VX%l1Jeo2=5;*@4鯊[T)Y}_:J)T9[e r! 7!1GqcQ#-8D h;;lNY}CZ$&Z&a 8=gݠӥlք xO4s穕UU>$yJR/dzy@yvUB=k9yI]pԥ*8W~7~o+f6 qQiKRCc]6[m@ރg4"|Fz`ȳ̗Me'MK;&Ph>S%` G)ц. NכǼ>qU>,f&|u<1S_)鎁`ilSFT<~s1y $$p~8"kJ޺M69$qfc0WOI|ᢅ^oЃyIYcj-MϤ"xT&H)};jFSwވꅺ؂c*j_tilٶ_P@gVvId/4#:k[?a4GۄQ-7u$I7I=?0J4Ћ#|R aQ !aJGNV`$MzT-{:iCVJTd&f1{^4^e KS^ {>rU@Xpr}=]sz&^6W۳ Hxh^!c?K@YSй~8졣.%N{?“:x%ʥJTɅVOi"b,3v-5,\C[m)Ad%P }&cjH8꽨FwCEK{$)MT :p;[_TVVK{y.Vّ͓;!2ο1yd%GrbZZ@n ZyN㸪vk2}0-'r=Y *^ZuAepGo.jE7B rX<LbNr؇Fl0:sHySn+Pj#<1cI?Ej|a߂of/ݱ yxa49AF9ˈl(_+ c7w(OXA{_ο|j> *dEpsɹZp"#s C(džjHzhwqa ;U>؅>u]&&C(6"|kb(*D ܏W})w9Us-fc**OJ>CDﬥh4)vЉ$MxIj d;r>*:CZ5ô]3Wp;z|4z,&AӁB5Vg7m?[DՔ QIzD)t֥Us90u؝@,x俛" lx}QWQ8{ qƤDn뤖h\OKfLܵ9SC'PZg.e<UuBAJs@B6*W1&'|؇z Gu0\w`U"WgC.yA>4_Y )Pe/,6bY, yyƕ*j%)׺!pW^1܈/ GV2l J&åT~Օ{7>J80\K!4Bvy*9[9fB nmv,K±8y{کUBTKl' }5֍?u`䩟dfmr_zЇKDD;S-%s{]e?ʮ+CݭB2H9>npsbZfy0GH_tmN$46h,(a 8CeӾ,v8_ ('-LL$Io%h[Zbhj<>3K$xm徒Pʴ`R8B4P%8X˭i)RKTBhXh?f;0 N >JW#W90{mYޡ:ѡ%koBcHA -xkd,I'E(z 1T__#>^G`<2VH'D_<%mmUsM( Ͻz=Yźuqjb)S9@۠oZ ȉ߫FnqS4 ZE5@5\!,!N ?:V??ֆe!n(`[ar-5\0cu|# 76'aUާmG;vgDdytZY7el'pAR+-PTB}^+Aygtmu!϶Z6\d-fȢ0 M^;a9}ЇfkX6=ГAxU@cImM}Gha{z{)Yz*—QyN5_@"Zcz8sp,ɪj?\Y^BE0~g|Noܵq+<'Cԏ. O{+uaǃgȎ!wN-u$BuDA{?JǕlY܉O $6'FY$aKrx!'/R qKGNoڊIq$orFTM4TIi]R_bv P%=o;Vȭ'Z*%7=+BM ťh:UԊxC4+}z!,8A:b { nWmy4YEW1ygk&,K7 qHK0!;cT8Ӎ-hTM6՛9඙2 4yRU [uƢj/|#ilxe5tkH~vFjVk b:Ä/=HC;Q+*xgW2LڹCӬo-B^Qc1f8>HKU9׌ q#y,Y*57_ m`c¾Ø͚ȄeRVqK$R`Z$)VS0 X}0L"uxZYFX0)cbUU!8=ؖβZfYR$Pɵ}|klH*"4Kl@!^'Q.0־ŧ}|Mη}Uol9Xdpn}BɲDR-gTq?#?GӒsbGfgXwO /C!`_wTG^5I.fdǡV׬1$Uf- "e&Ⱥ| |a :sIQ n Z!ՉnNc#Qm_$v tYv21ƈ=e2WcM_Hex 0N#E GyˢmEF7:gaصx+q%1mB"26Ot4D߼ru:`:J9EZD'il.]IQ@:%'3,;K^"*nv3oEHr?X2|W+$T ϤF4B'z6?&<y+֦+fI3'z{ֲ'.K2J#nXq$ U"蘄*UmGp'DݴG7^>3:b'W'pd])&KEG05unI_bYᴴ\euG5o r;:ڿ^3pru˟1As;Vr_[9xB٣BpiPy6g,OoBiN(|]S^o Yz.- y嬩W5fcٔ(C݆˂ ҎqB>vS$WtC-,%߷8=`IUTy pEfpoiuDWcdZu&U7(Ì%M Io;,-)D+yUh{MnSFAf; @Eە{$2dܾ6OnFQ᭲OmES#NV'I 8CPê$ ؗ9$Id:2IH}haھ$,hǸ![ENH֔Ͱ%1h8zl&8 W3>9bÇ#_ueH%. 6r-hiTvKReŒ͟BQ^3jE\Koո;>Ij}4ӵӐdGьz' >WF!"b g)7R9{ab{;q݌- !2-ּVa-\#ux/lZ,MvD|xy[/Lߴc6UO:rr `w0<2Æ/vSj}W ^"v[sKҙ`*%^.fڷ ٭$ϥE +W8p+BTێx{0?ض36Es.ЅyDo¦3 V+4I_Xmd9:tқ;㷐@|VFT=(;)#.r\꫐mcKEBqzݡܖR%1BEJЎkd|0ӗ c Ìa,b\;ǘsp/6|~w?Xw}Vc6d& B"s8siü涫5Z7XS t3=j wО1H1h3֟k I``X tϖ$iRfqxlAN92T^!=3FF? xZM$${[Aǹ^Y3ZA؟=11r(wcɿ>k㲒pj͢ěvXAA4ye6Ysa"_΅j'+{rKX}*Ɯm/5zڗm{ZJnR%!XD| '/Q5C0(V蝘_pI --sP<%0}*, ΧJ>qJcݘ"2S0/C BU*6Y?Y#w$#P,vRwNar}4{4ԁȌ/1Ƨ2 YI >dQX[9x7@ (Aιܚ˰D6,M6x0rgLgleE0?- 3X20W v1#C31w Jw(F2BUO_kqBg-@t\? Ι/9GĥavEi*(+?&$_y(jYz U劉GȻBTpidmq`y|1,o9rR!2\##:V9_RX#&L2 i ՋQP?w y'Fͪvl2ScS5g  "+{Ȥo o ~V,}m$뻚"1YO,zH'Oxe% eWi,\9$6ϒ4IU ZMu^WjHzq iW^d%[l e@ //{Sj;hDwDSIIݷajPƓE~T.OD¥m$C&5!<#<4Ҝ9ҊM*>{é6e .F)8\R L;`9UbsQkMZFœ JR(iyIbEX px?Be1G-g ̡eACY>J,j {aٟx!^Q`R-dH=>WZ%YT'y:,E[za|0ڝ4_aߌfeWmwUjdshq_2aPV޵|W+ע{#w8*:6Z dKVjZԯsJ +VC1F-uɿ 4 [2 uN7aʲVƻCu!)j vּ &猤Q.䒥~ +<iZx v_NuU+c}x7)rl^>yf")@Zlhzd_xӳP^q 8/%VJo(o'S6cx8l=] [$Ae̩P&9lĵCx@m8u*&2~EƑM sx7N9g˃&܀R$'4Q j,įgSU_0NA0qeS;jgLU@Jӡ{\R*.&BR&8HƤza|{t=S+?yکmZyc8ÂY 0ԢXTDr8}>-j߫g߂b ef(M;שR"o=?ReٽP~@;`i6ҢĝP5hIPQ۔xZg HFlH?kb?wDOZ%w2(ތ#rך+DN\߸yͥYl]u<•~^mMg I%D fLi?fOѝ>Hk(O;UVuETx2q'Tf8V3J '!+Ae:?o:GDRvQg~5tべG>JQ(aRz'{j`Gm0øW716m< N#/H _OHl<H Z?䶊G|y4hk P*e!Ҙt<\O܌pdQZۃB@9s+՞ؐ 7)Z52xm2ʰbhZ-Z7{JbN#|dbޝ( {lOSL4ݶq&3 mPi,U=OM 7S ;EY5҂K_f:̍VOz +3&Bǁ>\.Y/{#}} uMvv83Z I֊Yvb AI dU8X}-Ć{͢G`ce9^ptTVF.wg!:a59S8hЮբwOv&V!Lg԰D'">LʼnΉR} =e]pߙ fk1 ΓS ^ּx"7sLPr0N\}=A5HdPvyݘ磗LMV_-&~izܗb -Zʤ,nlvA<&:} B :k${L7e0~ Mm6fG_0&CVD[p-]vIk22K5J#&88jNh&=;}Wy!IsL`+CyjnEk"q$01h1jiҀ.4Qw6)P!}Q0xXVX uf0~[& g81 ߀Xl=*Atwq/.5Kq5tHg_PɎ En#`,T{eLhi߱A1([~MӼ濛1%Oxkf|:o50 ݵ* \ɺ|? θ%~a*^I=V9@F!T=^&r.#Q;ԭ~E* G5ٌl0,=㶶`]Tq *G. FPs6Ϻ=?76Ț +n5<(^-e."P&_τU4|B(Ϙ_x #]⩾IY _XOPkǎ>m)ut9dGM.*(lvAV6 'O1fw^UdcW$2 .[sDZB\tH7~[,oηG i LjJʣ˓֦>EͯT!mеn$hJ>{ʼJ`[1{`~@-8g|$O,PbyzT5`CVKQ3YB@d*RJ#xKyڲUǖi#hdV7A+S Oo(KFi 7">c:oW~}d!eJk}O@Y/yZ= ga^fQ(q=,I}Lۜ ?K>S '4Ծ52ߨ 3rצ'a궇e3texU!;N6ۛ~Qh;뚌]T ):n~"@=^S8 \Pg #p[5kO9I}VC;yR젼7GR]}E7r{%x}+Gk>+(T1Q*,Y&XFO\g{Yn{vޢ# ďЀ : _ZÓ_ETSK $zBr?Ǹ1- ^HUpN)S;.ĞJ8:]M!3nURuCNWF4X>㍽x%o?]zZBHU.:`l2qc iPDލp JJyfg&8vQ#Ucۍ¸)y錘U_~k5VJAs"$2(:elw:q#|~7 ?À!g0@3@?2K@Q jSc'kdo!Y^bz l킴|A^X_#t42ֆa\T%/ʝ~N5֢sn4-g. D (:l+ M"$iކrx+2-CuFUޙ1yD#? KFyvqI<'h-yx`tmPsSswE;ٽk>.Vu}MRZ8j&[>;8 [x хyh62dsSmM2 )V=b{ȅ=_lj9 &?B|scG*>;|wݷ3RT'ԩ>%JƷSV*b#*vo)1䲧]eq)8:0(?chQXǫ|/^M̑@:2Mhagc&*,L`6 Z&Cy-;xIm bzNZ.ۚsr$G{-;-&+w?B7` r|Ж\VfIrDxy2t`X{yVOq<9fE]Zޮ`nC;4N>]gx ژeƪQ9H~G{>Xj?5N>Tc PѷmM]`$+jtd+=B1M/Xc@Q7vUpI\iQbxih&6<T|[C/˦Li`FE9LT8ؙ5^pv hq{eUqѦG:=*F)+j.2KU^` FvvV}ɢ2pwߣՋ@ȝk"dp7᫾\5".x3OU U2/C+4f-~*1s)ncb^I7+. 8z_1/\;,Qsq1D,gaV+jqI %ouxG-ʓ>rCְgaz{pm|yG 1G=$NaWG.W+y`lczt{)fx9̬:y9[^Ţf.o\;pPl ȘC0~Gc%0'$ !RCyQ=5?mizB6Y7TbRg3 y€̰'(PPr#E\Q0{ 0Zwm`Q|3C}cͤ$L`O>z,s3H-˫I7_\ ӣN/Q|Y]NTVF$7(%5F-}RZ$c oҋfl_Y_Suᨊʮ%xIdjAG68'0L4e/FM]$19e5 \9QPxxB)]S4E˯Ќ~ߕ *t^<>*kW5P69ւ } a2/ʧLP1{ WJFk2g&q [5RE1=:FYb$W)/eG#0E|i $k PS;9F4O ~?a\N U"XP)N"q!ɗiR3XFi'Z9I*phJlwT,Dw4UiD=#WxZmM:w1hY_X\%w+nȓM a*5M #-Ϙ7V /qem 1qeA3{,WVL9+%^Wˆ<0>>ބ70^~^Z=nm=pWS~b1H9?1 @]0J_Y5LwC27iFl)#E\a93{0x$DXX¬u0slqd²;D9&>Eȓ@3Б-۴TG"9): ;I M@qi813DjO1Eɘ;VYۑGjbϻdYa:PW?OcFuXngjYqJ=㛒1y W|u"2Zd靏:DKk_OkD1l}T. w~o0d|YEW w >-}sܧU?.jZO#1oV|>f :O P;BvՉNFtںPJ6{fs6k5,LLZ![\EL9ry%1_C.T{8-{ 529ᜰ%WNh/BQo,h0O0!k7KIGG^h9U|Jt$$ ,%,nVK݈4a5heb)t,]Ih@v!+[HF`M{x (~Hr|3l/McQ鈘zh]("9,66$qd!7ZQ]gՊo*p:Usm5WO4H m]Z`^$Q=R/"ݺmX=m(kDQL"[YD4 Kl(EFt+ƨ/8^=m >-wL^b$q"vvg`n֗dդb~A~ KU{"f)+@3h)MRz%:"u%? ˪پfxW OYb$lR ^q̎תg51ʰF3>SNڶbiJ/ߴf2v g œrġHv|<2¿{vrv~"sziE~88o^ l|u2ݸb{0萨ǔŔcDUS sϩ\]V.>*q:ߵbw@v ۲q90LDN,ihKyAJtfEa:d$ĊMY42IMϠ(gSw*u; uX};X-~%H2ABwM]n$F8IFDhOR?AU%ܥ3g:U6k14iƸ}>@x%ogw6f .#|uuuU%l!C\#kA=1eպ+$}.jP-zB{/d脘fԃtqzD@_vIE۵T[_"Q _ =IF;x@d("y6]!?,2hc-Ԛv(lU"TC{F)6 )d%^ S oD9y`dfD2ëܔ*M,Z>̇Qrשּׁrޱl9DFsMI >tY=D#:yQW.c_$ZG Sd8$N3N9{m7k#}+ :(N~,?]hfl^%W5̇`Gvz'woo纉Go㫕XWdlE5t< PjaX&)l~^ibkWUdK.`nPəj Y-Xb+9O*܈lcC,9],,,N (QW[m(I`O2!,*jk g5;}b`Dlq|>xC'Xp<,{Cɑr}0Jc>¾5 Q`| VFaڎ|'ǜ6oB518pǜTJ΋o?U/O(=*p`/$" p=I4(6U>3 0ڊw(Prȯfe͵pWx8 sj\VZ3 @ڊ}^y&k-I I걅3E! σM$c pV")rK+p⏲Fje~|L𗱯MXhB(X0)gƊ0e:g*@{H7RjtM1-Q_TNy}+JVEDih"fy"oJ0M\KM*Ye p-*D^/XPud η~?Ff4uHa#"<= f]ѕ܇X1a+ىO)Tz>K|^R)KH\kArbU”#Bm,Kߨ, O"k1g5Q {3췂akr EN316]/ ֕=&l+g*oVebb^@!0':Ʉf,s(ps.ߐ˼.DH;~I$TCIY򮄀ow91I·Iֲp-$p`ױQz~&J_DJ6hqm%__8 D :ߥ"#39a1ȼbIdxoKm?X޻R0mPE${STеh-ܵNBL9Jv>z |FYtE#M0+)w3дf% ^ڃ>2T-owåe {{0oU226ػOv^2v8{ xg"(0k{{*O.* .rCV`U"y2:ΣTIWJðs.L9"jU"( P)}S0"m)`ߦƜ:o>ęcߑ/Jgq`͛,5394 h˦er8`r!FplIZEcm&IW2*w 4Mx]Ț|C3ڒl'4A 8GVpdݯjtȖ*m,^OqOIS!rۭoi<0Ǎem&jlAO˹`A!C3-[e6hTVA #vX'xȠb)wv-hDAk~DB|ßBPF [5?2%jz\Wd{s!M@ X1YK҂()O8!Gv 엑EySbɩ,R$pBں/S38L^FUfVAs^cXo>:Eft~-ZGnJ!2\xcS\~ >g-;/y&Ffb,HKw!=w2Eu|-1uفxu7 ]OB%(! yQ_IF?Fk9`^GCAj W7πznF ?-?VׅZ6-҉Z 5JEd,w;['3L;9+d`=[%GwT FOŨ,Gk" ;>vÓ :P1B|dײgjcv BN. Fl2<@Ct%k<oN8u! 6[3Z>()-H1 1`zDrп&B3$ @<6.& "5KhQ$ة5.p^E0FW(' /j#/>MY!W3H.&8FV"Dlwϯ}oIfy=*镁yB9:Mv/foTA#'ѡ*N/a缘8B6P>2j$ӕ]]j+u79ĕ"m;V' 9bWLH&. c_fd)d^#VsEI~uhrƋ<{x7٢[Re(YCumd,χ'mJ($jT\rʦXR&@Bφ[F ,1C*UAե;MҷG}ofe gr v'vX\'Ʋ#wk~8X^(Nr01+*`Ȧ2#{MF~<-߶Tn3x39?e];!߻S@AH+T:m\e"^@ysėۊהASf% *z5$32HVja 9xѳ&#ۯGӣo\"4- %Gysdm$Vdc:(}6xtQ"=R'7{|GsGS|T|ClFy#W$]ңk{ 3S(p9ݪԅP0'.]"e2A~;9 ֹ2hxXk1@ϜpPa 8ݭ_I\C+!SnૼDu[4 |ha=?^)-L?v0LB!hu(ޖ/+Ȇ +]>y6Mu4%Tnh)wPd1Bdo|g(ЌjKB^2_x;: 137Oݩ) 3E},MzZx ]$rCzIpذg0]޻p?g7w:*Y'Rj3]~XQ7h2\ɊLn;:Q;$zf   3xx@JDs9QN5I_|﷡o^Ʒ=1#6RS+pҗɊ(Q*p2~9 x$3&TthQgCGU?~{M< %B CGӲB<[<ׄ$Ejcj+ #P |ѝ'aANy"hE&w%Pn2 \ + '- -UH8+HY4kp g%WXPjUR\UX5P)0xy ;!m&QsV>4T卪׾y`A>b@Rp8|v7AI#(~P94>}E64MRή(0k9!@m@QB I~.7Zc H^ͻhw_` x/@ECt[$:Q2`KƘ(lrD51N|qԬw+ agEm10ѭ1\*5x2KSޑ{e? be@!.AUAYSE>{,-J,v n߿$#cIo_+u ]N+X"$& 9ی)CZ[PɈͯj:{3xBV7\\o^"ֲE8T θ!W. (bxfFEw!Ho_E'-O@0i5;m0sǶ߮hOGYq<6ġ"]_)RǠx&:?y1ɪX0;6OTsbe&X|l;$B~sg]Zq,G>+[DRsUe[>o` m(*ɩg'hU(Ov ptsC^q9)<]ҵo!J+jqmu%y!ż>& !k ɯ Wvžڶ9O u*)V $3>. ʫCņ9"-+`>k93A GVfamA܍2O ݨ5&Y@rR!hN9EAZ"0p'=>G-D3|eώ,WvE%@7?ӌnYacd3h 7'70_.lкx_"zo]9t&!Tk$hC9cP2!XڲRۢ ݍO{&UUXA1Yڍ{F %b iAY]'U܁^ipkoMOM bQi1>%3,E)76QG q?E,j ~.XVh~+# gζ²=!^Ȁ8_oRfB$o }Dj!=_i u53ʗS [xC%\x+ڛ<>&gv:eRm5(ýhx^& g)gOȒҐ<ߛg( 1^]Px,7?Wk&/?}[*f#㎑`xXKrh0G-%dn g2<4~&J"j_"~ђUX4VΥĿ/Mp~'U[R6<S?/Rƹ,SR"fjtދ7-qY+5wp%_>Ӕ{EoxTiGW ha쵇$ Q?ݤH*va mDi*?A򟽐| ښTi"HU6o埻%-SR OGCi9a Y-$l?m4>x3*`i['5h_f~9rч6Ij+^%cS0dqâR+a6 aku8nׅͣ5_5^Cϔ kfas(WȘ#͡*ͮoKrxm@Jr| - v0LTi]NKH*ljR6*XChoz#EGSEu ؤNc2Nn$K?4J/;B0:5HmuagՏ/X0p.lHD[Nʳ1xnѹe(љzE`Aķ1/B͞8_y|?FXߜViOkFyv f]{[T~?/"z=r4+v;&),i2fˣߜ15"LfhYq 3ipe]]щLV5fxxܫԖY17  ޕ 89m&#-l=0Ynmk J8JS%VsoLjݺƜ ېڍ\LLە9bk ^i, ~`;#@Bڄ|Чo[~k1#ǏDPam3=؎8&ƬJ%L@ F7ԚyM /L4 ~ 3S$;UK,8TԞ9{,K#{])״S|Bv]f/lN"Ag_`cKҶD?=ӢQ旃Gɚ"jpgE]ea(]|0x@S]UNox_IX]uݏ9ʉ|/;N'o] 3* lNو-(Ho/$}JPͼ85 㤛=7z$tdU4V"T?b!w' *Z S~5y<2St "Uލuqh=Z&!D6sk. t\d"/@W׈^D#d@ڤqڕ 8U!KAZ=3w_ =Rr+wE#>57EL@;_"G)RBig3~َjWlacd!h] bE(w; ['$N˪r-OâuurqO~1߯1X̶gCx^*&E;'Sֶ' 㯀zA;:1}0-Zp)05\H7 x~A{&G 7r[ eb g@ TnɁ?fd@jG(ƞ}כR[XfKԃD)7b)N7c_ J̆WB$B벺rlaj֝vϳs:^k\0}ǫA6z}$W$u4ń9$^X;mDuĕW$8 )Ҁ*iH+L2n:`T[߄1=4>KNE|a؄}c+R%jtscuX*r<̗n\8A?DQEä^;lJ ;M5ӫk$Ubov9B25ŀ96`gmqF5tVǘ[҅¸ `0׊dwaEҭ8;J±/FHn᚜s07[pK%aG=xev-aڃ<&'Z}} ;۱гi)/s>_jh.U;Q~A-C}b wՄѫG!{VDU}Miz{Ī Hh64VK:69Rhg7ZA KDˎp~hyLj'*Yf-p}DYM/@KU 2hZ1is_ قtNtEٟF}=WRܵ{EuxA-EX:蓶 #^&6vov\\!hL% 0y`L8("$]2$эWs_/ Gj⑺"KU1BW,Lnnҧj>V|!"+ri6Y`3Us,/;־pu'eNhAr/!ٟb <$lvWf?0T= `'`7!RŴ]Bpp3(bB"%6/Oig-:z3+}Y!0|ִR;\xD.!d 3wbhSL+6@$mA>[OӫubjCt}gZeIͫI@>DUyưtk]`C/&8,ʽ~J*\䛫.le|>bmYѾz2;OˏVyO Cd=JbMv(3<{?>B{a'yLd\Z v/k3*G>Jc''IzU ;,{{ɕݗ0Ď;3Yz[XHU1%b,-&p}.y8ov1JbUWM ^1pS4fV].cw7~>d축TOQįO)Mڎb`V~[֮mv`p!~~qT7p)U,8y7t17'ɁitOl".&&obeƟt#R^RqFXۛTA#܏qHI9VKt]Vy"NQ{-alg~W,q5 y^k(ZOO F-F OaXAݼZV݄]$@='XvXX͑bCWv5!ᤲ4t|QvX_z,w{J"GlKPi%EI贡Fў b:?R@%A%a璎:ӟ+w똋L;--8[ }vTn*sҺ|frCAux ݩ[=+1|wu2̽^bU?CT n:5SېVq oqQ(^>D" ncU@qBH Bƶi4pDf0Ol5g0-T55`8*i?o*qX9]0=}\I*m&lz%5?cCT d4G5o|}n cg` oY{~I7^EUOVAFwCv\_D, tK RD{8K tfjlS1vB5|?K0BP (p*a1Rɲ\6qzUT.%6 ǂݹ^dE;ɆBuIbܡw ZXZcy`|V6/ͣK4Ev)ii{}|~ G?2Xi<wWiOJNBlkLNXoM &hz!r>vbZ!W n k?z)ǜ$ N+]W9 hv 43_}ZVÌW2K3apc)|W<(uZ1<(o嗨K4Qp }~;,q$ |O?e~)SغHҘoaԂ6S|#bAH"0 9x_|ݮ<}ad ߪRh(Pq̦13^{A!njػO]b;'Hz|\[2BvT#]xh887X`:Ӝ7 Ok[A<)tl K0mt=KnR}SM$y^3;st \ni.QE'%t}PJp8ZϪGC=Xa@I{5$6zK^=u{st.wI6lr2 I{P V&!+^'b;|+fM^pbGBR0ƫ͂k kqh/f~d/%<ZݩqL f$U߃UӌDC6+GIC"jf'p=4 .eJ{yEP uݻ'yX|wSUΆ@|ξ -[lCn6X? r)q!wMJOQu/S71`rzc$1:#F`N_~>w|ΰ4mhؾڐwFy]7UDa;Xم"Ũg!z~a h=,9x յ5lۼVA[,#k_u"ty stxC׭],I<䬖攞GƦTeOرX~]X:_(KB` (/P:?[Np/"n@;# YHb%=dM#\f}*\ȩ֗#H0OV6-;Jer!^KW9V (zCP⚖W!#06 ``F> 7ybeG}`p paT=ejPNz[>mk)o0׼PghO/32Ct痫VB*J0&q?TrZǚM"'Tm>437w10zτc*oaSA)(>E'ZzGn/%>v7'w'~胳+:7?D~0f &>22wI%E}É<:xdj^k!TW#&eBCN&yccbmY.o }|^+:P0hbɤZrgX_J w9yK{iSr|Y"IƫUt޷Kf>ryYR %cl%#w!W27#ƅF~ܕ=Pȿi (.""<ɘ}ywh lK$)82ʆPe^e5Ҝx5wvf+-:΋c>x(}?PPE`v0U`JL:6]&Xz^wmD yi,FZ}BZv-6{:AaӴx΅$iPۓ!C36߬/QuƇ4eddy"sKg+FHbT]2Ei6(@V&ߥV\اlGH› 6SRZ j.4 DPSYHыa6ZI!L=z`փ~cxd3[G ~>ŋia1EYņ-{6)QFaH;hEÞ L7[-YNܰ[S,t+ 7\r3} inO95g݈o~w;E~eO:^W<!VĆߝbS<m7:1`VRRMN^H4֜8Nzm ph. J$ ޡ"&+}3n1ߩY:PZe~p [W7$PfDSng$$a}? HGUǾN;6ɖC;~lL^6s]} 򵝄Xv(y/Ev\8EC7\fSeZQ1L $O xX r5S]5tRc0f̱C XRjNS!.òt[^P&@3}c}k"_ *,e@fx@UI6>p۬ky8iA%m5Gl)`W*Ձ5D bp$JRM-].K4 _hSgϙ hZf.xmr3[f't?v) 748nY [IzVD~`G;֭-<\yc:7Z~?~WfW eWN6(0ptQ˦Lp-/G&#FGrX! +?Pn82lH6Lk4`K~6 .-jJveQ^utNME X(k( oDwT2-cXT\iS΋uA^7'?@ /lD)4"OLDCAݯWP|uO;mw@ 䡌]=IP/5?j- /WW"w)A.{rkS~Mu7SXaգAl,m ?mV*)63F_𖒡ШpI$r1צ %/d=,<l"De&5"zU7, "@LPk`_a"ڠ yW8NfU_[r>0dWdExd8 ƺl, pD5V=2EUd uW͞>S] 8XfzW0A ^Sj.g'֩LJinF&ބI`Iu@(2@*-*A ޘ*ڞDLI+ȔAtg̜ P?3$!zK5YEɯg"g*FL' oAv<ȯɮhxh~¯_I7lgܚ]F.}q="9d*d3һxʅx`oOp=TA,mcAޡɮ'~:C[\ `;Mz 7uPo/訬i{[ 6:$*oReĖ[T\!~f@ȱNhglQF#ltSˢhrdZ(tATYb~c,]Ίo?B=cm}u0NT/FPǖ\Է7S-Ź=88ׁ>5kKzn4yF,qblcu슮Uf;t@PN>wP=;ltʡ[nA0{mM7WpÄC $ |9 kY `LB ee/w]q !$@<)w*N#M'8-񓹃b,keCD+v{JA65ncH0Gvoۢf07Ʒ,g*θsp!}qΖw^*gEjN\mA.i _O:#ݤkTI{ p*FT0"HDF4nϬ6Nnٞ3o;/z%UӷzL7b lKQX?{'Y~3TQNtݺyk9͊ar1;C.{U*Bb$|˄80R0C'D9h(hC{P>ݵLXVIĻ1jcTB'RJ]ͯGcి=Y1ŠB82[ۜ7*Nңߊ+ H}71?$.`'+ 5k;ZkF~ km^!eTvf}6/E3Hjoҵ~r 4w˲,=Y0+!O{DCk=Ţf |? Xc>,o'ma*Ј` @;"Ee л~뮼Sp}L͐Ɖa2*hܹvfI,-PA| GjFhjlTwIgv +Yァ"i`ÆdA2: Kjj GqjTϟ>IqIm>1fFm]q+R5J>+뾃e,U_J9*ۣLiR!43\?a?k-:ȊcG%lb6|<47۳Ni an|ZKBԟ3Лjni1|UgQԚ*lDR}P#0sGazs㠳mjXN"~"wB2Zþ~qS{I=EFcRQgJ3j>L*4ۣI5-H=ƳЬY$Ym6W+T%^`AwyCop|?TuXqcT 7f<0.r>VmٓXQ"gtm[`얃^Z_DSƦQWsݿ6nf.^$Lo>VCeǺ]\X*YA2vpNg(kJ 0["M+R[d߇ 3O`er4^|kN\Wo_-6e hړ<>Qop Aa~%Ӆ)=#ZH7kQX-S_+V!_̟Д磟л )gוlZ 1˼s 9T1o 9_tI3䭅_o;/~Y!G~{Ll%d?J[,wlX'bZ ?_mz*۩o#L |3O{ւ,&5gQsRvJ^9s/Nz⒦ʶp)^ygm/*X8d3l毰gtJefؿ`wGySs4 59)NRii UEp<~5̞Xʶ"\"]>HN^Qdbjf[<=\z=&-!HF$+t~Rt7ڤBuyaw"=yo`(OW|kkvv(7c%c jk.I:@V+?j#:o&"@7Y9j {=$ڴ&/K>:wrfۉz}EᦸHy{zkHsZnm&?ܒ, |I)z}̻!&XއOuuCOUjVtEz$YM NSs,Jx_WHaB7Cف :n!QQ҂)Op6nA p|6Jzl5wUx{"C7/ y'j9g.> y _4x \;d9πt|0uZPUerw",Ɉ 0tKMsGX]uv3^m6$3T@ c@&A_oJ-\&2 '{Δ0H]/= tǫCfg1)ć[¢V ` ~J~:>/Z!+DrvF6 -`K| #R`caÜA@ɸeWwl!u:Qg.Les;3DpݒB =tOw2b~ng+퓚R#mE' 2f v~EcEf8$C*IXRΏdtJZ= #$M3` Zل јƿeD IY֓䊩WЙzV~+޻ -!28(z!7+Hn/ϵxpk'iv%vQ 9OxT$D< dIסΰܲR=G=h͑(_W]dѫ|Z^##q)q?I{8HXз_yËXKXJg=-h;3NjEOca8+@Y}c Kn"Z@󡠒jZ5S~oT:O}s0^tJ* d[kVW Sw*~Dmvp&7\enJ06_4䌽vh.qPݳ᥃%eA i*Fh*[B>\7_49 A$ <@ZC}Y0cWD6^~l| )w#p_Iw-|E Ǘ/$MCse'zŅoQS: uuz olIx)X;}K]f2C#䫣pFJA*I=̹& [:[ ;JAt#C) "r=F]Phl&\Ȭ;` !nZ(t7>$kNҕHҋsL]n2#q'px =wSO*\pm 熨NGZ ݁ LeFG\ -sS9Jb){vbLFmȻ;}Cފk9٠zNrAՒYC9 (ɞ=!(>03X~S \|ܹm:ҙ=a=`cdR9zIgy Ѡ:4F(կ)P# n鬲W,d+7`0IӰ ܁62KwU iߡ@m;[Zh?M;(n.4$ "OfȸjWM;K;rݘWz}EЕV؎6,d py+^sWA+JBVPo{G#1۲Є:#]?)-cV=f.;w( >Y[wki_Ro !e?v*|JC\!~i'!?8}LYn"(|]ژDꁮC)/P|WT!QگHO !DDtUY73'!C*#mTX!2X41cRT-<_fr"?oCZc &=O4+Ə`kſ 3lebm&Zwa{ͩ+~$k-Y~yCu):?<{/DM6}V#v]u~Hr'w(! w*ZOfV-`|I gydT1K.ˏV^WOzA"9ؕ1o: )2Rܾ^|D7 ZRcOIt CH/a~m[^y%9P3 z=xfR&2ՈV mvh_+RuZ婁>u{WHt8FH&?st#W֖k9zvc65U{;T|;jz˟h߿\5gmX23{ Xpu}15Q㍜tPk:++U.ړ90x1B2n.6TK9 70 *H#AQv4mrꐍCh̒vQCdLbʱ.M0&8?7-AL"[9 a+1Vה F(^b pf԰wNNCS6}TZ9MDA¿$5غp!`G*N)-y~Mc ﯨ%׻b8z·в~)zВdžGדQ֘sIEO{GILY2; Ѽ(ᰕ6OaHJBfb/X x?Z)v$Y!aKmKqn:dC_Շ:_^ LyA%@DzM֚>E*(jۥ7s6ZÉifl P@7{pW|.&A'@A*݃w1fpɑR8*TO)nB u93w"&g 3DJ2R8O&vk=5U'ΥuUwso4c O-SףIP cS*/=nU"q'nۜ?ɥk/N?h^wqn50KK;-e"p9 \#lPJTCk3:_DR4YI0IGaClFE_Kb]i+3?FtGR@*][!OH[Ą##/R?C9< \.9D} qxЇ׿w(Sٖrdx-C=dE#+P0Ӷ &gE^ΰjU/pQ҃ˊف LXCƛH28>d1u"[8H#'{tb؄GKl7 lDC${D< ܢцق}NL !(TWxbc;mvW :*I1^Z)\ wJ/xh#bhv-CӾT'{|-qo=G!3 Vv p6e,RHk7v$p'Fo.2EVp_sܾi{6wp`ts%8a=4)$EFO.ba+k D R.0d B N^̠q&JX q[ yjffXD'P RNk_2&-ZM3H^W[TpT#FjMbrn|4{^Ar2 Fv:sd5ZH4<.*'j,o#[0izpdd`,yXu^hsc`yvopla% Pk%I۠# HG㍾M\͊̽dı6MQ; T]r]7U?e ;:%3gv<,AցhR{3d瓜M,;(7v<'w ̑QwGфRc=ⳏS@GUtVۤ-Gf''T$8(5 +bkK[lbLL.uV[7ࣆm− "lOb<"ZL_h36CUQK#PgG\`,g&3 lȋX&M sفXIfT"o5vz&G5Av~](jr NU!PcwXR&&~Y:lzn.сCeG!>> YG9HB .K6NiВfofrU=KHbbSgR_ I!(qU1..:$co:@g`uחU̓Dzƿ1J-^\\Y!(ݕԐݕ[e|yVdߙ48Ha)sh:SGܠ \4H_YG)2Ɓ68oJI:ft(8Y63ܠ&c ez5{$CV?=΅T!$[Xa6h1fqr.NIIůOsi5)X]:k_ƤX45Bd`~7f~ 'JHLF}ddW}$}V?-x}faSF]]\ܑD>C {V@wx]W`Qa-nMc= H qҼSge5/cZmT{q]k_` }o)|1Q{K OnUuAnq(ZyF+s;wP v[ŚIXJt'}YYEQ|#pu2ۤ qF~,vXc ٖX>"f}# [P dmުP**hՔʟdF{S$>f&8v0ܬsG>K2I@CFZ5x]jDVY `Oy_4j yb$3cgVJrw|h37F>Ku{zڞ3lk>K|kIulhvewljZ㝮2I-9pG^.a*Yi@EIrVj96Ɔ.ԪB]jSI9+^KxLgށxݭ Q mJ W}LT"p?{roBmPR;.8d?FFQUc=2ߪ-fDʇo`&fZۍA\WrS?{.Jb|O'2¤hY#Yn> 2O:~Wj%~YTYNj{bckpmآEvGgNF ٍ?5~+X1G'` =xE=,6D9cZb# +=ԲO';L#(߷r p st sL6t*`t=oj8#"=%jl|2 S2} '25Wy&6v/mfd9 eFeo 循6ݻ s~">  Ԝs_]#9H kC*L͋T.Be3!۝ޘD.3cq,&RXzR!@s96]u:p(f˫?"@vkH>9,d:9 N<ȎAoʦ QMQ1^B,G´!450vK&tdFtb (e7i)t>A.R5hcZ6x5("M1lwe0޶az~kc@4gBwfگȇs}ളVWx_ ~Ԕ9`j&(Mݾuvio?P."h, jv \W _ȷ$ 224ԏ `4rh d-B TPT4yYe 2>EP#+=;ιADSF1SǪ8 #9`8YUҪW:r<:_+#2x&b:M4:-G֡`+ F%( ,2ᬞ78nW/N%- }O$y0a֒D151V#»`~7*3!ډ7ޜOŒ֎ڼN {aҍ;Qtz/&c=<^X+5V20Ҽ%  8&̘^:Y(=Faro%/ CX"Vr4-PD&Cյ:qB*mN~E']s K&KuSGVԌlPvS2[.OT[ t1F"u~9Z"a}VVHL=Nt7w]\^c0EƏ0pZ ut֛n?#sܓLnJq4Nt o̞Te|FI+pGCa8sϔZOvw<0N& KERoWƞg8I,viz}c VS# z^/^̶s_}*"ҫbLoB$joɊ`йyc#ZA:Kčh@!$_Gop X7dݷmuYK"7S]fr#\I^pbvF0&ӑq9Қ.n֠U@nSjleUh ڡ{mP?,nc4H ֜Y%2Ankϣ@o77o. ZT,Ah _}lG.y跑U?2|;g,< (}7&s>M`*4zj{[K`hčRI ߵ}c"(h\#Bm<$LU?f)C1zJ1M7Us,‚#ٜstµ{?/ȣv<C>/QbWBUXwE3&H:pgb6FEZQ̒H'0|# S1nUv0QZc8%mYq Ę5p=wR.c $]TkaC {zId?SGݡ v[6N}#FǭD|WMKBPx^KDفm~m uR)zޏ''B c(l ;xEKah`VVMS+׶M{X,AJ+Q_~ֳ[Ig" W%x1k2ƻPei.@2_`[[̦$s灾D"=\S.SD9[$7, *d9 _ 1W"%߄hl΋Ԋ=NI#[h}2޴ VJ`JF^Aٌ&[ F^xѬ2N09 Îs.UZ@[GJh.H?['2!{:[xFJ'0(DH٤9d Úd%c˩m_sU]is[Nc I@A[@yG܏]oha!NsJUDU%&lT&1tvtYaωDOM5`W?ʚ񦾇m5]zkȔ7|\T5\)bPq@?Hر|*Yq1K1'wiaa,D24WrPSz۵ϱȹjf3Ox?=dVy)➾_oHY+>T` ]s[,leZw gpi7)Tݷj\.[,m$v|][w7'w8)S\*mOdzifa5RPBP1<+&!w4APSϹCҬLh%ys7:ۆ<έ,2|r5ydeXknG9Lc,jN8 )wEfQ=Wa&ܖ) \Q1 lOe-LЙ!vM9z`0.攟o387ثnjxߩݘO{C>ōXNZ]R@єP; pd Y= ו5!Txb%`9;#KvEd[Er8ck ߘFVIC3+ V#V,q hG=lya lMCWq#a.C0poR!OD ;҉}V&P/8?@XLXnIHOq_dvÐpwm: ,LMn,>йX7]'r>[FR¡!?Pj32zcz<1>.Tdb 纇%(#U 1wTeYXwu" \JHɝ^W,wΔumJG+pȏ$$ha(ˏSnRېxtpm Qj\FHi~~]MCՇx,{BG.-Uy#ņ-y5w+Fyw M~@/Y;kaz`BN`ӶD~LNpw9)xPJrPO? e!Z(~AkKOSv?)-$l}y0=˾^ZcQ!GB郋ەgAQ =b>'cPZS86!F:lQ.(ک!ƇWVYe٧_`5 .~hB7ԼӶC!y.X/Ւa~Tq]n`?܂~"Wz[B#42Հ0yniKQƈ.:q9$gWgHͤaz;hmPBVJ6 iò ~{AfT,Ъõ~e^S؊ w!Vc/iܢl;fKr峪pLƀrYzDVndty*U1cI@ 2&łEje'U _gϭo8zT#Dב'eȕg/$+9K\ȋ;]ݲO|-Zcשc}A| PA gχw輬0KVGzW79utk8bY|(3tWx&k%%NҰ3DuTJ$@s`d -'"oW^y,. Z]6-RN@3s༚RoR;8&η2U+=R*eD÷1j+%} &P-Q@X#7P +/W^:_ WRWxV]6K pw,murHYs\avNӐu wV( *&%2wj8[ŚiTɴCNr舆"]>k&ʏ͇xUpQ-@}: eSk_HM1¤_ jGgA<{٩:>L#Id\ŀ)>e lUgqr 1D"!!' g-#HvnK#rZ_4O̰faWMnG쯈䓽_x?$3ߏc??McW[^>k^?1?O|<|ͯoi= cݮa]Hz3@dS+??|8[?m/i1SMbwispw}pQ/>7&R[NBax^(Z>Otr[{9tAtأ؄p{g v9qZJɎ:!,&,Wf=xFYXm]:%{[Ws bdgml%]<Y4V8,;BQҠB[v} fg 1='&/[eRQ7Nse}fEI AǷH s's&`Dz\ʹkֲUeo:\('q{?AZm8;Oo#@ 1Hn0$i0 |fAlqD6"w!zP3Ž $;5Btqf$0 퀗ls{g$=׽7JtX>e9B%W}FIB ETRCE } Ga5p&Dbh/5|,@Ȓ˹; xWFӨ0 @N7W^rp7; , ǝ3$M CsmyqGpc^5d2@x =wO/> ^ڛEqyє(JbEV u vsmSswMυPg *<3%'5!7qLj,f*֋[0GwZ#zb.M+LJGh%Bm-k4d˃ª@eBW[I7;d@":x* :1YS4+O |& +#ZPtBK; ToQ^҆UeBr9V L~_iRDԨZ5u%%~[0bF?RA!9j ?P7SGN5#9"4WzI6Lx jG;^%gՖnuXA$qUicy&e;T{&[?Cz/0yNuQ,UI|Qg`$M75AgRF嚟a?hlAw׽ n;WdjD}]qiW))^ėW* 3-;RǎtbG#Pl}Lp!ahs]]-|0* nMeeƒ_85/e 1$S,ǵR,2ݟj-yht$ӫdkCOŧ~ԁ!-Q!0hIg}qAͭupCͨ/)vɰ ?aS<koEۛ]erӱnr貁 $7wo¡N䡘ֿőws\ ʟToK흮KHlҮ(_/չlps-+<": 3+RRuk`kQEɃfS]KiLn՛y: dF1vBLEp K?7R &_8771Zd]nY'v)pQyu 6r +hjN4Gc(YSG&E/!P5\p:ED1ei\Ib? ˯@+6XxRBjl[쑵:$Z0HJn_z7hN }w/|ly; *衪B^Cu1րK,*l;#Y)`S8D,'Tri!V$urfyVad>o:‘t^0W)i`)hQtg[kVYDgφ<;g!1:Y|VMIkX`Q2VηbZR QJ8.%ϼ)H+K(X^˼l+/`\]1O}HXSsAh@T  ܼD0 >AN6F+cӢ0eAtR~trRp?j{!ͭm1@)r[%4#4| W+kq.J\苜i@ >h@XHN5J SNF[M8})Z)vYRԆF MEh=>g\y%ԑid[)׵#Z?c!u[2>Hc$%GGkNfU Q:FT 7HK. >[Yȇ$?Lt[wE|!LƮ*mcQj6ջ"bHC9Wntf[b=Ga;z\Tnnǐ[} sFI:IOQ =Z05k*U}PdzG=u(b{\PDa>VQ7gJD3P̼p=Lz/MjK]ݵ/mj飀KQ9pwVe:z'f=7S'9"8[edI -U.xY2rtY+>k"~Gavta=nРo軞^4f2tULS5AxM΢i_Ca§ݻQav."}DB2 U'DeduT̸tjtaό1Ghi?&<+/};Qh3K;'m@C[s3I9etgvCBQGݶa0>U?[sZe ptB|юT7, U$cb&&$T,{l?Z o-6h]OFk*mx_н#GOn Yr'6,y/3 @sAꠐ_ V] ܏?Q&f3@053e*qBti|~*yÖZG/ J ŁZY*f1G>~Wgr[[pBSXumii)jY .FF=x:y__35fdyjy9B"ݽ"%wΕHfӨ.ѳg(\SNc9a3&0kBI@ Ɉ"Eֽ:$eRj7}M^4h!Y .Go7t2i*\GKsv !fIThȝ=,9 mP}:SŸK,\prLz7pM R%GzRCZ3{vk/Uӵ}l~N\oBەjfhIfVS?3; jeN"[69Ow0R{]'3`3fE$޾QC),0)}8EAo VoEIa {Nj[XlZ;5:~4+ ܆ꗈ3 @"I<܁6 -⬐^c"5[X|󡺿h fSTm6n;vɤme4eDdґή:!1[o[ALelv|~Kq$u:OR/M қ;8VDӬS'S",_/$jt${~6±cW)QQ,5t61*akrE+ RJ^+ lW$W(!oeWpݡXmlUV+f"Nuvjs4m2-7; ?Wp˟X1}ę^ nվKғ'> gտtqMT뉷]"B f+82}^|·fL"P'@h\f֎΂ nD/uj!'ШSoc =d"c߀(+2CD=:l%9A?JDG$˓nt[Sxմꇏ=]Qt!%ϝA VWUh׮|"]Q;?~j~^I4g?i_toqN̛ЯnSnK[榿J@HofSr?D6|6U'PetPĘ7G eF;Y}r^OKjPRM4ȻOsa9(B]3XWt'PX cdt;rn(45ϳR N݋ 7JQ#dl |6B /2z7U, @ovDsO&ЩՏIO,"B#"WU6%DeMtb ٢0(r,~Go GYn4 OBPK޽֫T&4[(@l_ބ'N&Kf+j[PU [\{;^ Xj@b$q9'8\o  %o`Fvs-'{& P8D^yG&nK@?7k̭38'$l{`ۘY@3# ]qv/ $s$$KbS&xVsmntZ!6Rc%ޱV=gZT%&T:i#649izUÑ0Ų2M YIr1d`𙫫̱-h!_w+Z JggElZ(uV~#n+P?@p0 ͵Gn i)!;1/RxGT,Ŷg9= ƍHWTi,}x|y~SD5Ǻox 5U1ؤoí$)2^g rj:gzp(Bn&ʔN%@f:ޘ׏kY.!I\ Q1_uwTu*oiYPgeBV\8ٜl4GHZ?ЂY.)#:my/z-Z>5>D`6=4iӓ  hmCuCXik81;hX^٤5SH~*WSRVNtʨ6HD-\FTP* +i(2&yfǂƍM߂QwfP<>?Rp[%oV>sYKczUBoyִ}פ3Iv7x9mymMx}>0|pcK(Ί kG'9,0Nm=܍}S9]%>Cx9BjyAz`"G#|arf }t&ZKms7h:"B#)KR1Sn h˫:Pg7hn<zF9YM/Q)UCaCȁJ&^`rƓ|h/m(v>4-[3oH3ZQ>Y0ZGߧVvpSSm!2B|G\µ*5qΈ~Ny*RgOŁ`]!.TUrC"8':L,4%t6)xt2;؂Y.#Vt,'i e+P^!hs/SM}Tőuȳٴ۾Vg {.!8,B-;]PbZn"1˟5զ |XB[MId5&T>Dh%8 x;W rVJa鰮Z(|lYUN%nP=â >5IquJ`K{I 6sN BEO4dZǸ !3%IfjWQuGPQv BAD/*dw%YǤOo-u2 CBynPS/.vB&5P;5& BU>k7[4 PImLOqxL=Ѯ9ҋi7$JZKD^SpWM8IGlENKNG*5ȶm{I̵\Αfc0s0=q `,߷`)U#;\Eb :@'3J$O3lXy}*fy.[_)K#z٨|u9 ( US/` ϻQb6^L􈗰 H:Z8 TO|Gྴ3RP)f?n4 T&|8L0|i;|$7sAQ58MO ["{ڬ>'u1B `ѾW6~A<ܔء /JYJ` #km2.ly0,1LAK|nP[;p 0Zxg;aiInrGR{Nk-!l!t>Ә=@Ig3m8J.+gfQ`E}H 93OIͣ՚WGʶ%]ZDSj2PH| v+eH~AMy}wC)[vR5Y 㢡;F:f[F-FboS ]ҷ2E/,v ~\ܮa=epQHn8RtEf3ˬ'c~lf:*Jofb #1TIj e}Ġ&KpaaykޛLƝu0"S f~ޣ/!GP!pv.4:DCKZ<_m߬lɝ Xs%TJ~B*)G(76EB)WmWATulǧJ76JjR׮'РD9˗uޤ X@cFM+֖u=hwӘ鷀 H6f{/qqSLKEZ8j ]@Rvݔ<f`w)%Q'nc[bN(RoE"&{ F߱Z2Cbf`=A:D_*4R gsԥ-?Y+7,K,"^ϣIXie 8J@} Und]i-vk:hK;в[,ցd~ȑH#>~R.֠w{۷5ka5޺Yw%Ϛiк  1k MǍ3Xi ChwvH]gg ۈR!P㲍< xz/ݚob֣Džz7~͝dD>tG'ƫiY(m%gTub;yE(h*3svEqD\gyfrO¨ԼAg'^@U~J="nvz/ɫA7dtq]  Ch;MNt IVGɵR4v8 u\2@|z"dҀD 4U.LN?7K˃rAS,%,YI͐fpH {eŝx D`ᙍt_`!-ODp}'J\ TeA6AjQZ=ͫ.0 C|h.B:0r:9<Zh>)%`:gR==cgԴ0U0x+/4^`Xk>j;k\UÏ  7RC0߃9V+v"NݣG\*)RylTt&CE)7։O\$=/R&u-"d#Ub2뻈F . _}xJ˟։:{vuQXV""MmAʱ{cW숼6wBrwު}'^=mj$J`xs 8Soֱ,782/ Wk iHEljaqw]„d49$]SYd߀J?yWdc cYWPHyǩGԟ*6^c|\ul G~Ҩܙ:)m>M˼ \8j1rZN˻s 4D`/}P!r#:4g!9A|<c|4{-D@&"bBpV6d쏊"/nd9ͻtyƷ9U hFJ"=<@-K,bs!곢dhKBik`C!r+ &xְȃպy]ʾz&,A ep~/^0.m{+QbW): rnlo|qCypEr ?LhesWQڏ9U6o\;Eya" 677[^ .BGaȨXiݖjC{>uvxIS y&pM􊄿6;1L;lmV >p_2K Lj|Qy 5<ݣa2ev۴bJV4{>z{j 5,G:4WQZo!sm9;+4Rrd MmV31 ɸc8 B 5^RgtK%1o3_pIV:N"8YLfQsuU*+ƍ$K& @ [e U*8Z}q߬ʡbB\DaW73!Kg W5DUbob{~p%PRK>澘RJeM/qaok@="RFac.U1'Fjpֲ;')MZ1{W4WunC>+pqco4Xs~@LѷBjD;Y^[Οi`~,lJF5`JDU_so[e=$Cu ,oAY% J{CR_藅⩒ Puz0ҚdWE{Y: @t}<9Y+kʊҔb#٭3vS8|p>haN^Osb%].~MD i-Ǚw>1q*M bv_"]ydOPHСҴF^ϰcuYi%z(X.ҫh'Ps4#0vo9ɽDqϩ,t2xJ(> K fwv=:DJS8g;m*M!0c<!,ɀ nڹx<7´3[OO3$kC!6esDGIN͝ö́ Nl>wZEԬ[xkO)X}m3Y$Cv$!hD7ֽ|(:[نT38mu2nqN?ntX^z\5BK3[̓×Mi(n|q>ZnW` vb7EE[G*IQ5tdL05kXZi x,S1>*wҼК_ #Ķ^q#3#,y `lӢ+=O@*&⮞a@fv ٟt7orK01kN#51#mz4[/d~QeD˲o]ZΞK*4GA/6)!V;CUGtZwB{< F0vMpe,޶Zb<,/:RrAzH-@sg(" }݊~-JϘ6 EΊH{g#얁D/t8w[t%$s } ;X8eT NI𑕈A%ސ4JU#gPS#Y B(. ѩ^ P (sn~AS+/YA8C BO[a_YĕV{s7|~34f{ inZIM[>xyhQAG@w܎a>ؐ^9ުaaޠƇBɋ=y+c4ZrәLl1o|j>ZMFF0X:bw/4c|FbZ?L])Yklg%+0t9Y vakՅM:LZL@}@#',p$.¬ .ā}6r}UC=Eͻ~OM4/4#,G彣Goaх!{Y\k,tGE_{Xm r=,2,Uj2m:qC~ (KK!^ߺ3_eAU uڱ7CUYTf' x€ڮHv#bX<_w1Aҹmؼvmkq[W\Fk6:0PjQ{9lŧ4!4.,swf(k*P7NUYa^GboS訫 _0_,4h%ji>ZG՘jr)+!9p (OH6$G9D83[X+i"y6:.yF:^!/y/6G}0$[KNB >փ(Z}g#ؠ=]\>9CwחOH_~Á/x=VTɐW4s?EE,KsRtr_VTj.l^T`CI}:&@r/CL3VUf8=ŧN੔3(>,MI~GjF34%0fW/K1bӋBQI9 I8GkK).>$w[['dخy(&>*a'+K[^ĩZ)VJ1b#ݙe\ Rxlߌ9íf+"CI/ `_-681e7]Z@g-09+2L4/u2 :x|^*_`PnJKbd9 PKzfs.HyOJ$8#Q#1@@WTUw[q\^Y^stt\ZI!LwM7)E|pTDeUkā'lmAۏRU{f}&|#M[krJvħ464~Э䗒L6*kȽ*x0O7)t$#v ~;X d1_IEdɐdOxUΤ AWMS覛R ߡfLd,eBX?3P'>$敉V/;1EZ3oBaN~T94mOs-r^S}!f0>xMO C $VKL+y*=1B|7 RuF.7 f}pvJRhPb:(=n*S\,mMSy&Dl{]:LAQmh=Hzã#2" J5ܻ&:#>_Wĸ"u!?7Zd,f>cٰXdG%AGsVuE#=c~q(ˤ@w D@Pi&ê< ē8KKj؀ /P4(TM*K32#P{ ~ZW~3>c.v!hEʏ<H.R3|0"ӗ]!@(Fc<1k/,ʚyN['uOYDaa~&F"JW+ `'˜H'`NQ0AWu^Y7M+z3'*Rf 5"D/!mUT mBATFzyLXU%UIkZj,D]OQEg9oBH`5&o $QB+`~lK 6Ìȏ+L/?۝% WK wCHsQd8Tqb' ͝v޻T|j~*^hK*~pXXᅟs6)T68#(XiƯ2kY#.2TQQ1o."=(/P- fe)Yx 9)I5+HSڰSgsUQmyIyk R˪fq`3Uco !@SM,BE`_L2[G H9#?S'[\olq8 JSw܂ObEC$ѷO%P6EͶ]5CH2u$fx&ܖYW EZ AYks\?{ѝg:*R[q7yY.D4-aKn3*h_$vlY^V}ʟY + ͆ᛕ[j2V>*5\;ȳCRJ_ɼlՌBJA5qq]E"2)n= [pѢoop!9M?pEiڱ˱7ikQim\/0J#&pS[҆<خb ri#.$GT@YZE#U"nǔ#t'˼$P\ӘK =QDk83}B ajt'd ې0+ ~%2QMDoIX}- (] q̔LSdGxiQ(1ِh3׭y:LNHS3'ae̛zt\;'o5pr څO-tMV,W!]f PƘG#*AFy=]X՗U{,sEy0'!w (D5CE xbT"RTyNueY4}YyjU ;BS 2ƖTwMn>k&d4N _eMj ( ^yGڈaoAVt4Bt&FUJo%;֩YB;qFA=2}]`9Mi`z`=R2cOUΦLK?$1f 9hNz'l|4a,ٜA㭏mdE5Rꃊ6Zi7 1#&/|vȏ )z> ۅrx @D0而~FRs]ar+.OAmrƲp q/#0bqd.38Z Y41 bv%醊Ɨ(=,wޏh ~Œzߗ;k7)3v/#D:SCXpKw#6is †Df>C/MCgH'W2Y,FDR5rEꗭ7nЗY:ńX !y?ymiϳg=y@E`^$ղ 98Ca{9 P7J/^Zzt(0L sa^@H'T}Q%( f) C"+'^SDq*^to}\gZuK/jC$YZ1\dK,QXf){tljy.1_Vk ܑVפP,Œ`5XlwZ Ze6 dw+2L}6N_7wBG.iieoET!= 2NCXQo/܋ -n:AEjh;5Ż+ؾztXviCִ{? :OڥJ{9pw_iάb'KRˤ|uWR{5K`ȥODNys{sc50M3¹*theβ EFBTWրi3{A~El7ԃ,_6e TwzU>7qZTi9ookU;Zg]yJء?;|#zi滤k'E$Hm5Cc)S>tae w4y`ou.暍cx݌ӆ`3jbN.'̞ވrA~7Ep˜ '4*5$<]D:k,F0@ǁRFR:!sv>)ȎDٕ\pGa ۧpkL'_;K8In ߨ\'PStUx+^ <(EtNvq#nLmEo*X8kKGz$2KS 4^dM8 543!$~'=q-V.KN,>29xDI;ԨbOV{Veg֠yR=7Tm֤./ %!m T^9ݖ |6.;2,m5U2zΦPf5=>kw dLUȴ6}Ϯ 73Y06w"yQ]po#<V,kWMEc@Fl^QB! 4u!9yjG1^lż'+hEj/ʘ{UD{5K:9Ty Kt@ 7]W*ݮEnT`Y쁶?Y[tV yɑ/c?{&=A%~BAN* #oabHK K9N8824GbhsRBU)1GX⑟.%e{*kAۍ(BM.[旊9,(  vPj⭂"Qˌ4Uf?uCNmJB,xY`6l;A2:`0,9l*֙,3s bA)sW@ePn:@~~;,rld\CBU 2TQ788NGiEmA˫2$ QsBSK7њk 0s^X-ю׵r ?@%9-e"U)@ j/A42MI XOR@X݃5:2Ro!-AHHF?ejVC۶H&Bӷ ^ܒ.I͒3:@TA E^(> 톄LAY#T0bA+6Z1<W?t\3v+>hBؗ6\?hkN֗'NH0;Ko$'TnN\gÌV=y[Hk&?+%5v2zI=F;L-h`-nua'(t|i>|n ˈ)AI:(oIJGONi$oth֠qZ$G:SE4zfN/+ɤ[?Xt o҂ WF};e wܽ>ciaml-֘r0^iiMt\,^%_y"c#w*DeY)('aJXu_fOPs]5ESدZaQ1c{mSeI q}J~oIVcε!vpjH2yŊzqo~SqXjG'H3o|rG!<\.h9,-O{4:iۋGAyyiM UE26UKRXa$=rHxG.*1lKq6Y.,mf(n2`ʌ3c[?'>645?1Z[U`2rrh/n!6uvie$4#P*H@n }V CedwFW=r{Po!璉qs5oe+^+.'#t=Nz jS<,IXBvgzc@)S6t( $  `T2$QJ> 8jS( _s\Vμy=٬hB&!]2 tK#aNTv! (f~mK#4}H'Q[~?z~IY'QvXnp(h-%BS} s \;:Jw[Wk?'2) MC]NoX1Nqc٨KOyĮ r?ӶgƱQeK| əj77v9=UOJox6|.v$];> Ng@c[gI{;F)K%.4HD6aCHmH, J:?h(!L)[D2&Q7WzAJn(>XPn &cnagnR^$Uqw#0m1JBzh`$}-hh$B*?L~QsWǫ7([lx| ,Z*f{>/Sȯ="ֿ6 ~rK1_ mrP^4ٻ_c!Orls[>hfDUG藽yD֕e縉:p2U  T:G. ZoHLJrcHA 0Z,%R|Mm^[U.zv?zҨ+3෧RQY3[-T?wL9ɇxH^㩈xzvMn8 qv낧_Mq{"o⻔ SΊR&ΝbMj i$ Ю (K0i,U 3s{ԌZf@0Z9m,3u~ ۩1 nP3͙WA9wTscN%R+~m mZ.9 Fia9t*yCyVxi}*}AiN>O@倮-ŮъhA+>=G"GzUW3PВo=ѤER΄金KI 7~]_kWLGE^>Q@ds|9pTthepdG= ׉aC']_R>LHI]g%}n3&IZO$L©"xr93#XIq~y+VtX,uFp&kEDTAn8"ɠ%8e 0 aFc>ˋ?<ȴЁN6Lx)\4j`:7fn^p̿1\a) DKߜl+}0jr4;ADxwJ&MRשBw=N krڒߓ-hюs:EMD>CyVۥyfb[ZrVzBH,@0*|'B_)"??#HBrne.aA2H##2/bm 쬸K:UEb hT^5|tպd$Vf)SX3P\Mʿ&Z5gf:xQĂ8r+LoS3#;-&Ѻt a𯭂ʻn51СJ!FsX$ܱ:;JWÉ2\"t,MR>PHȵp\}W4{Ut9r᤬2>:ړFyjg6nN 'r!7 '-[ӀX&UcёҶVJXFP%?9 c@۾@!!m'1 cǚ^aem#~H F..F|ocaTdYb)TToNNga ~\hlZz {kED׸acqTaR݈ yGWɝe8~:5rj D}1*ɵ\6, uΒ?1B ‡:oR~?m*zoZmwZ{#m=t؛: ^\O%MbD|BNzŶYJ8RD|6#DiU#?PvG>Tf0! 'deIXpWڨ u/^^St<{}G cS7b#mJ4$+LHg"ƤQJU-qֳ$#+o0zl.U+ʌCh=a^F ׇlAn# ?B=W\@~׀ q@;bq~Ԧ}G|'tYNu%ιȜR?|BI7R(ͣhQ|3\J˫D04C"_niQѲJr ULQ_ٽ}*jM&!3JҿJ$L>s`|c q4~d4u,#d.)K]q~"~QPgG8X.5n Kx, 䳋1b[QsUĻ[.c s\B {^'tF|ߊJ!CE;; "i&~ +߮6&<";`>iCxm E8Šm:+o0`& |<REwj JBk2dyDUY~+F؞e%Vx[LjVi Gh,w&+:{_g]WX7u958# <J\ Fh8? =d$qI1iX4n|o[c!7ָ%\ޒt1XKaG)cs[I R 'rzx\~~&]yڟ{?,PTRq>e"1u|Z`>o7v) f5yD FxrK6$!w8s6J'$5;3Rԓ]tvX~y.ČDÁG@%IY9T茝/ Qwex#@>- =}bNkTJ{æըWc=qh=uUNJ2a Pm0$?_ZݜRBmWwmMjR1&m\#$욆|Զ^!۫Yo.;< {twIxm_G2Wí!e,ᜬ})ou1r^C]%"J yT.1j¤pԉEcW 8u|POv̰m3`v]2~je S}Fqpjwn[U(@ VꟅf3 #_LSC1CbkF}dB?Ύ4eV)&kvӼiXn&6#j`EPyCUf{!mTrkx :)2v5h~: 3[r_ $ATr<ա[=zw]R"u'2$21 Qyv8&z] YK --|fvM@Zp/IU/?OQ 8*X-5L&7lwك, "MfJ _ܤ%|1]0}$1wos҂ rW+X@M1)s ߾!\25h.x SP;E)L-}<$lx3=Zvf'zژK*lH/NJm:z4,$M0/uf[u r*#υMNšw ?HYCf꣸!41EȹθFpG_~0)Jl@NG8W{M".wT9'A˷9quBm&bY8*;}9Nn,_CFF7p+Kߕ$XKnsM@aXXz5LL+e N]}Bϒ̫w>0.IVzv*( U^+R; 2>!6,  2kյ:FQ>fgCAx\1.;#'g}o~zk/;GN!5Zj<^4U,Է{Ć?MW‰j0'xΰ8/hvCa }L+B-tt34Ames/06S%K vCx5'! :}儦/E\+ }3=(+Dp).(NAY2mֆ?67AgC)twJ #P$#}rGSc\& S~&[Vt3f.΢%3$hEYh5\d1=o{[gW x/ڧZ ,X9lA/)\Zjcbb:!a.r 5w6nf1W?]5Y,rӮN'lN ngx'tvbL>3WO@_I~QsHprmh۹vp LT. s.un<gxT ?/̋WoBEB"{ rok=%WHC#*ɬgBV-uE5VponÞGs5ͩaJhr4VO.4CdL7 (pg^%aIgbj>?T\ 3-YdkT5v_5'k31^aJoD} um듣:@G O Ķ f#*6v1 Tv`ZoU^Hk?!S:5 sdT#U&k\4,@W( 8PYܓ0͉ ޺x!ן˶o\gzCk;x'u^ BV)LA?xM Dd';ʷZ3dحYK҃PV:?7^ ቎w&XZ5/E;$2Ct}T*";C;nE4o}[q7o7;XY D❏1dj3ɁݒlSO  -h*` ֬;߾OB'Hp? Q<70jԶTGT#rcBp0Rpg&=r5L#ւ\tZdmeZ;j'u֩+%Buue%CKd!F7fhI IM$g.Q- _^ahƁ|p/*4px&vY\&gdheVk 缃2oO/8_Ti %@/5A8O V lBl98,7׿#:#X ~!ҕd8䄀AXn99X; gD&1ʪ;c -l>̲ٽ>՞) K47DGyQ>%c4гI(jb=P!ḂI}ze]Thdc{eg9FxRJVB>- Z@+JA*S'0#I{3f 0s'8ۜQ9Dxډ7/H6(|;3ͅa4RQӰΐ19zхYbwl D9#egݟ\^jZFRliAFfk%tY<ŽcFܠVO\enu[t !S]5g m){:#KΟT WXȤ)譍G]:wJs#oC[dY!͢f̓Oٜ/hx6eQ&|`FY/+~fk2Z;v94j)6/Ls,{cJRڳ݀u\hv!X[rN_ugۻ%AR4"?G7U~6' A@vco9W1(+aV8Ms>1YAV^L;%P">).oACbǮ +% 쑒0A湶N)$ր)xixjb c5Hk,8*Ce- |1BN#|/MQ'k_ v+0Fozy#C9ZS+ow}ד!0)o#+4=a#pecrGZo(.@?e0f=d^۪}U_ˣy+/lVپb$(m\@Ggt,jmd㆘jn)H ).ٌN%C[=,B%e d j+]*M Bb&Z"w Ra M81Y:fn|_}.ņe8SGc0adi#uMO( -Ik{uRqcNk ZBeayKA蹩_"-'5.J h:d?E4J_G~fy$.s>L3N6t]~8i; lgꦶ݇~n㝞VA> bnt몐0p4Y>?A?@;-?b}_V䢻J1U_*Kj^(XI[\j}Y iCB^"m6P`ҵNY`طϽ^-SMov8 ~cMEE sBS׎D;TTSefbXfGTQF'Ƃ35^?˯+P+n~)9,E>x_i`6 G Fs0Cxz28Bww "r$I&~N@ez> {+o7eٞ`X|2nKJGO94ізwGٞfI E5klWDFp@6]/E;z8y)G 8><SL.r?X!n@QgZM H{Y֟Z~BؾC.ջ.;t5%7}eo0eAhf)lσ]z,1'`৷4 ,Bp^xhY*JT( iiZ#Wf=@F7$S '<%Y4n] F;-"[TJlyC=$+Ըz vj4v7tR Y11XSͬxh3BV\MQmoB)ro5^"*D/.Mc]C |$pu;aE& '&i䵍"p_LOPZ-!`B:'?o36%@#^wS%7v8̀ͮ|=`\t; {.4Jew*TϞ!&^Zm¨akSj&mOA:',1 d#)2} j~rnQ/1sƝ͛A;/.IwP.=ږ8fx!b! ދjH~3X3ZHh SM9j̴ss~NOqRಐeZhmNRN4V|~6 zqL8 5>>1sWBv Iqȩ"/O+>1.#0N!K;R-jb3}'aӘ?[m*xi,R^z ί7|`.m/6<@.ke\K:DSpH@f]<,!"R%>> *GRz'&g"nu}u.($Z4msv__;Z^hi:C<pf76X:̹ƘhgL&KσErگS[ CHDD4V7)|qu7rB{|ggȇЬ>jP|$(׫60%%7F5{hXt&w O|![+br*~j91HPu.S,pYYSoR+1|y;^.n݌]C[2>ǰF6>hKhƄ$T!o@1S4.}EBK_ގW{| K Э>-w/"7| 9c~D`'!]ώ}@9ƛA!$@"(IZ}Ʉe &>Y,U9_g߲]-o$jr'0 ; yuitKtċJ5#h;0(woVP(5JtLDuApIa R#D vi ٍ˿A%<(pgPҮS?)/"_`cKCݮ-xj++%Gh"%Kv?Y8ք:*K{*cmKGLAg Lbl*M_LEu/Ǒ !LNVہ_+uJ{>d~b\z( џl'T]g暻aqKh8 'eo[ߡ&ʆu_S_j.k,U*#v$]|f٭>]U$.0wUXsJ]eȁyx7'Z*Տ> N,hA @aH!2] Hb Ąʵ'1>r>S}jKS[ /;)2ϟB`B|j6p!=?&.D ^Mk %^)JãBncNtMtqw`'7O ds; lapmo*xW!P(,k浀}4"wO,߁ \ |/TH?KH_D'f?kG,[]]} i鎰5IG q_HvA^(l~EB } +"mM,uoNH5.a1hJ^^[-ϫ$j2^?E  "Y3*zb۠'`.)Bʑs{U}xf~۶Z&*m눅gꦽݣ:.[Ӟ<A#=uhltц#S.b#ΉGQ7d"%3~k£Ξ Cz4Nu<_YJ&!fFS5U،nSHfޣ>7c0멸q\UTڴ8s~0LV4\-m 1I<fNF<پ^?Ȉ:-M%F]D]DSz %y*uĔpMgԪ'vi#/,)տ;+_* ı$=0LR%j*#[ '7 Gma0`2;q͓ZYNUT#;Q^kNB)GnC>t>pYhtQSYolYXDcZA}TK Q:q*R'LCg;yF6ˈRl8(B{)(}"$Iw)/|pȨ:[_:UŨ, ,hÍoՏoF.hTͧhT2qմWߙ]'EȐby.3Nן2t ' &}ϼ]T/m8Gxsb_M˩uFך-Ik {Pcf*`bA3l$մo Qh'᱂ lОǍgYf8aƾ}+z$A48 ,U/* 4'g^uY͊ |!zWJ‹ĶFM0"4 vylZ=zHvEoԅ~8O;. kZq*|h5mfcX+?c%cR-`IȯF{:[KhhvpAP5e ix _sebQrHOD,v.6ŧkS C(Y фDo:{5t,{<qwҤ, c.'|W.8hq-EfBq^ly ͳROV$+V 87<18B[OTձ#ܐs.[К>=ESw6{930o~Y48foۣMc5J痑T? !a|Ȑ(M:yyh{|#^)A@22mxdۣ8y?U+ Mdi/f{ e̹,:`"Ow~,w]qaG?E%䗧xf9X%clqH@eDdQ&\=D3zI&I J?&sqyiBEANM.Wg4(w1xF?նloe4r/-cXgŭoT^%$LQ:(f7{($usIwpFe+k=հ] !T*p{$?Uo;yRY>9~gF2s>G#^~bpjF&X/ OwyIV.*"z IOw2 {cxpWNl$CZ#-JgP$\Rvb#9Ή֖kq+zߋusߞ?NYunJ[ٿX 1UO{Bs C#ʈ8Zb=AsoePя26T|zeW[!<3M$a#Ȇ8lc^0g([@'0u1hs" LKVx# »`ꔼ?5!l]+!E[U$n ,^Xn">R#~҅I# ;#7z\ƛq"T bFYu6L=qN@h]mxQ{ͪ.4 I6`tɗ|Bc1aॐpq[6~@.'=(/9EnF1W7- X(!CbuN*>l9XB&\ǟsֿ@Q辰"v*Z zU!>Z=.A@ FQl#dY ϝþCKAYՇ S^08 Ǥ0{Nh>BSRO=l5{W/.{3Ht a'~U+`KHy :IyC(#$f)i o٫DUwr}*z^w~7$KiVXܾl7)zh\ O;4qDKm뵠{r$kc- g߆Mw\AU{}5%U :q2 y("$`TW䕓a#vv&u*U>mYRHFmk.6(iھY eiw`xL.]! !5:60Ua>5pͣK1Dl7FЙ?:tԗ*-⓵l@ mY%I,<:9G Ѫ8k"z7C E(~wEX|9.B?ÜR>S):v3;+/d5l^#$n%}qDDJ1ȕgwѕo DhOb+4Rrk~m &uwYK .UQ OglXhFD13!e N׌&[TXs;Z vx^Y v%ek|Ls p7\m D<q_lظIu5LHŞ$FtV /Ҵ* z?"5Uy>Noli=憺Cp%V\;륪U# '?\fuO;Em@Ĥq'h$=#JsSzܴѢSΑcnڃɭ;%oM/ Qa쨲D(<ǹ/> XTW?=2Q Ӊܱ~t3_k:FcbLY@}JrRf -G:+f~ׅ (~mCʤ~?{ RZ[}}ݾC4"aM`\\JTv~<;a p{_@KBX!w8ڲ4qu>/!sk0G%33&] ֧E6ߵA ΃ާtRlzlMj^0^x0Ċ$@(f.Z{caO+S`o?K _XaB~~;L(sSQP@:@ XHvʗ}Y C􂖰yPa-.8Ãi}!tNL~ d4f>c쌡ߗl&qwg/3S)st_ o& 4.ghb8t2\!!H%^t>UK?vG D5tn7Pzsj55^ ؐ]\&G}t<vTtB=wq9Jv&rxEAsG' MwC}va 1϶%,{}XŞQr*~/ByK%M4>2U1!+bKA|t)=75Ě:|+q dpCuGwp`٩J?.l)( *׿ z9Sg~DV:1 a5k |P%]? GXxqM8G B Z/~u,P CyuIl}kJ.xH"UX{^8t Cf-&I8ו[ mQ䝉=ݚ}2T‡BFeo\Pa`&OW(0RH+ĿWgDjS$tM4 Eyq< ^p-FY_rEMiQ럽W 0 oѺϼ*x><1t&|-ьW{pf}ƏN-.,u(DUV P91fSĺq+ AUUm.XqTlҎtX+3'!;E"DI-յ^M͕vн3- r.yC@ !38c|FtwF*iޛ 셗WYU7ac}tRD#8$|Ȩ#Mfގ~CŌYz`hA҅xX_ T:Ci~Lc$ })lO4oWA+WCK]HFL!{a;|쨻ScgF85۠ Ï܄; &W?N!]D7 옃T1 >;Q%Ng7Uϥ\Gu?'tDwР?v}|(yl[z:L7< ^(XdiAͯ3:WX2ԢSw>·?D[Ok﫺R>d\EygOrK5q!Y! k$n^`ճE˄4$lI^݌+x 1*} o6v:6R:6*e 9wúF>sJTuP#ů%a@}c Z?2Ti/H1[x]ɳ_Lfkb濃ѧ;MU`[WjyӸdǶ5ʙx\b []pMTؓNJGx-CoY~)GR‹tt$#,A . H@^{@go:S"jK(vIBC3!>`=%m-JS EzMUFGi.Jah?GS>K'7%]"d K[]91J B'- ~٠8@YrHŠ/šsPG'B'WhW.^c@p^UӢ<%a%5 3>Ny^q(SAX8T@{q`:n0j`OlKVz5 BZk^KM=qā`CbmNnjc$LYDo/7ͼ|{2|5rňd/=~$t١S"?X/ /,Xs {A؄p߸yF,kwXnmȧ*}jLK(_gnpC(2"j5x0<抹LT^cǘ _iq7/rs=f*j&uY6Io0vTF# oV~F:%QhEw.LXoP<87P3Vܲ*f&G4dUkcc:"o:wYX "q#U/cJ5|߲cДox@P]$uH"4 \;*&,jR]aEe:]f` s &&׫Шw֓~cLq3'p2Y!9hdf Bc #>xs bX_A% ܱwb{O I9|}r4Qe" <!;ŗ;Fd@t:BF8œKcOѰ5xؚ)Sa Gp1RWv_s4N 77t5j ܯ`GmO}j]r5L\\n!o`Z3H&@sޠC»r|W+<&S3껪0-R ߽`SjwdRQrtSwxfby4MdzZ(U 5PUu=7+ڲDA\Uՙ+qfY#r^3#j8~Ɵ,D/˪6c wIZu5$lM]оqr_9ͩ#mKf6ZݭCu{deXNK0T#}Z0}o׍c4`\&q=7%6R-%oZX.UmM=qPm@a>/?O͟CɄ.{![z!"d .?dOv|FzKC LY8ډC gOLsJ:qٍ7_*Lu rÜm8CtPOLIt㮺)e@c)M҅JO %+iHme)J9fڴs⺖}y{;w8'ac~Mp*f$g4ORuG<|8!NW^IDxc.w{O&wq*A?. *L)7/7H#c#)ɑj22]I7n?T>x :.IjO 캩Z6h"8oeEPk̆oT1?(լ Q+Bf^[1rݕ< ^숦i\-8#OzN1AP#4koAG]T1es\D?ϻ[:;0Qv҆rP%L h 5^}ьiؖMT <$FF|4g`X؞$p~VJ]y}ŔK u/u#8N#-SI}SBȳq+q!>4]y%{难R]o!,Gaٞ&Ok" އbj-^ސM:XmO@1Gin# y ʝ#*#mO q2"$#].e G`4#@ 4τ=4_5wT7r+Fa`Q9eg-`KONFD9qJ\v<#u[T3Sbτα\߾F~T{ ^xf[(\͎lb0<t6$@8D;}ֺ2UYb[K1=M⁲e kFs8~13 зnE ^Lj?S6";HrNfrY&T,BE'CW.kS↰},>} q/֤3g4xΩ<#dYޕdq(#:RFp 㞈k){֍`~pøL>-Wl#DIҧŮ?g8m HW0-^l8eP=Ƣ5de2`I8^mU){e[ Eoxy/0eF~!QݑG>c~\ Q~]rX:Oď~3(ul}wv?3D樗G( TꐣΰhׁA?_٘wmOa>N&ҲAfP.(W+RJPCw+W^Ivf+:qMp`G_K\R [XQ\[X1:W( s!#JtZ`D#ח^;QKBʕbط+ aNK$!#ըrctr@{^iб>|oޕc#'ƭS :XE>>N]%;Yc-C} ?͘UNi'.8l`wa_3׌f L%+I |V?}3T7u5!9kW|لI_;:.Ё\)7CP@yw ~>2V5_k[' F A>t9Uxs ֏$x(ͭ1kUSgWvDV$jE Np3 ̟{}4Xhvk~C!kO*dzP|RO83hxO?hmؖU8ʣ7Bgdg$4,yS"}n鳛{ز瘪7躣QH'L!߭mi(~ЈJt,8M4aA:T<zz^=MOxF1WX C] 1@7g@%^ؓQ8A!c}Vϙ)^ℭĝ]-}az~WN`W>k8]gA TJp7j?`|D2mB1ʊ^yQĻd o^r63q˹0 "k\\F^^+KS+aX^F{! wL=m \l(wnj/-Yq#雁7ۀmy/u@s1i? ]>ȃUҰQ߲=ŌvM>NC>A%ge=#rxtyg⑪_GdIJY]]K/OZ_lIt/_g\"lOWFT.]7nZ0DJO&w-9Z4Wg_m.`8|!ge;'lw@0E/+({0O~Ōr"W] |$NXD>ڗ#'z0x^dx|/;K^@Df_=L$3f,!d< v"?dgvրuT#R-m 4=/nja0j$p^H] Ӏ"?v-fg"Nc.ֱysT뺁h˥*`V3xKi,3-=kFk~׫-&g5Ib 8t{~tɟ).kORF,oc rFCx٣.D`б%d]1 M6)E:(}ҒBG λPgOLJr.ֈ4Ic0RA֝[[K7ey{g74`}%e EbyTeyƦ ?,YaYڜ;McuXMN.c⯶y+iA( #n{ ;7%oY䳮ߑ} HUl1.a]mq;C\hŹ$=  ʏT1 R42~IA9z|l>n2>V\/MciKpd@I4/};磎̮g#`CY/m 2_z4ONa$%zٛ䗍5@6J6ٙaCc䥷0D5.[Dz، ૷Aa"ZF = ^9 ]w^ 5 IQź5NrWd9O+0u-b ESvW!W)]PLOxg`HiOayWi%#iC2ն W Q `kc@hBOiʅY֊ L$mrq]ଓ^]`fATͯ\*hEd  n+ j0| |s 9Ԡg )㛺vch}?|MQčx00znÀf[#4 TOOXg@I)Jvэ7l?F:iӦJ{ܜTb6)%NL sQYHɱVN*O-!\ 7o E_&_/4 rj$͝ΛRE_,aU-śKaݡg1_P\s.҃)Z fSTrdk#p[ARC4&$Rk+x/gW1^EfkaF=ȧYn#aaG Bo*/ vQx~~EGF۳A]Itf $T`b|jS=z,j|n -e)\}LT'ߝ=?ѯ4"9mRg("_:~ T kK!5v̇n6 *qg$\Sqn#ew0&Y c}jw1\=8.WQܛRE-'Rhv Nw)DΣd apuh 0]D ,ddSFg*8TЮ頮ONU/B{ū̕鞫BD$>!x+Q ˿o΃ZVȤ`No/ .E o,mwrKAi@-m>/39n*|qwKjeFGLu.8 oBkK7,JB͠8?Ľf&g뗍vzhBGFGc咂uc;vwĝ븪^J]jߨ Pd,6.(c7O.[W1G/WG*i҇'s`-08[5PAm~ya\%:7nzRKuwzV e6;?v46rep'ysU=x,αGcW' jn]牪!SE'!^a*n4G,R?׮(hs%~ }շ]@1עU>'Z.h =XENB,nc;N2}=(5BU䱺[E Z׵xK^;eڱ0q/VN5!r>`XcUK$˿P pQڍK XB* ){wx!أ-X|d`MCڔ+輛л gv:!(O(j#0lI/<#46gƒz=v Ħ?72{!Yt1* 7nλo%Kj675\|cec(Źn w WԽn >7x>L ͟rlZލ{M2^/rAy kS&jlz|E[q~]6rtXCAYZ쪷_4GtA`Ŵ# v.6F\bDž;djJZ8fw2XY &Occ 9Ip{]@Pjr^/$5 N? CsgMfmt+ADˡ3F7i'vb\}ˁ}9Ӡu-7#oѢI VJ8gc~xV Ώ!N ݒ R^f+]U%ط3gL׺?A@ZNQs؟銫aC0WYt2 F@,"s zQyfM۟xE nΜB1ؿs2ܧn5$9%jlb !0n-kR_/pUP!x{OlҤ$س]{ͅuSLI{w4@ ɚ!0nc 2 >IZ -@%@"91(-+rDǍD+DkHen7JIDWgE m'LDݤX#E55 qdQ{>rC,||&ԆbwouFw 2/Z8D<3SZ-ֽnOCg,iEHPd^⹋y8P0}4ʼnF=ǻD_MV ;sXT''iǧl?'g`>]4"o߆dZڕ LG;tU 4 YL^v\{Wc3F+=X{MF;Quy\plEv41m6k#ўy,9zɍZ֚~v ׳ˇۚ/ 'Nh?`H8hHG, OlZmpsdbAfl&k2Z;ZYS'h|uMj#W XB!^_Sp6Ih8m; La]7eeaykbhyʎrĮNMY|O_2y uhm9PUςR}5 8G<@hz3@#YfZťoUjU6cSdjL|SpIY[&D#< NoR g!֓;8>tL@˨T=a.kFFM1:(Ǒo}k-l U&4}FJ}e2e{/+^JX*V*Q),8SqrtӅRr u0>"xRͿ(aI8r<Fn3dogc%ьn0n=IN,jt ~^RPݓA A-k%6v__B8ߗJHzv7+jՙ$ya{? rv >)o0)oTF$K$ʚ?AOYӛR>)n٠gnDN͠^M&9 9]tr9Av%JؽQ&@TRbA]B=aMLeA^!U$g#@}Iw4|hT{Xzv8uw *;gA•wUe/x$^o+Uzڗ9؄-F}mKe򒊇AN21k>2(/ s0mh#RE#BK3%6%{is"GÉF:OjG%𖞩m(W-5Icf+e@M4cNV.]*Q9kSqYpsW=uE6)@ي;QPvMWl])^p_FBg L2[6ԫ{3wS:6,z@+ v+ӕd6*ާdij3%H{YvVb|GLZNI+w!tiEŷsn@ K$\Џwx¾FdY B?q :Y<Wxb ml)X̹i^ ,U9^1ӕp9:g/>}$G{M0UL-DjOiTA[r9B6jQgд!秢G5*ת>!B,U\^^Y}jI_|Om7F}®S}ze"uLnNT f@q,2Xw1e/4ok%anqK.U\!h:Һvl Ȼ_ϵɽS}Mϟq㪤(-!|;F? XS/j2ңo$/#'`-/bIKɇoj{LT&`lG;ǟT; i.f_ȸT2`T`NdJ^ feX$~fIg ٟTɶL,Z=W+2F#UYiU%Є Ym>05/pB͔<^"y^Ͳ=-f 5 Vg,eBj&P7IIځ~Hpy<]C 75KI5M&VNm@MgƢ?+0y rxiZ$(kF4Y50*EMP& 1 1 a穑 0}G<fwݲWV|PrGD)Ngf+OD_ȚN$ z/xÍvK}HBy{J:|lY#,ʶvM=rKi 65+ ~i/XtaOnU[oX?W<Q'b=|ǫ\j28e}E%J.ޱuəُt(!:Ӱv+pk%>:O7e/Bژإ?\7N+ڝ֭"HEl多aw, 9AailtJj({OҋiCXCąJh,0&t]>>V5n@<;WQQ^`|dc}i/tbi vƀV'|bx[CUX:ې]zb~UNʗ[Mr#o(N)CERЪDlg9?bƆZ=tȴ(@ io8?GzۯZSs16B 9@鐆H-/uu[=VD.V_U'IcK7zk37Ѽڈ?pȗǀR?2*yLZ!`x7HM/,i UgG\?Ǐ9RO ;y cs^?Xj.Sz(n^ ł/ى9GyUbt.ڧ} U.–O]hA͓Oz;|LPy޼{%[!0Itvth fXY?9_f5`cVu< gZCE(TTF:Q Z5Xhؗ4DkO$.jS%3չzQXTK'98 ?eQ0BV0͝+k-л"ODދc6Z#BAEQj^"I8[ :xGdBoǦs9 ; <rsʍ3tG57BAul3 |g?׸Fep1L 9H!!Pv^aP\a1ZʑĂ9لP,uKA)wLmEiﲉu!7dؙwD&n\Nl* DтLMl)m Qz$ik 7:'?C!Ëk$Ѧ)K_o g1X1)YR _+V|5p`ƭ^(rzujpocK$ZCH^>ģxx7KzmpL:6Օ3{ )9Vu c1& ?{WX0fp{b^h/|?$H, G_jI՛>~I䂈f54mRvXf  ~ E5I˚IZ OᾒZ Ml$ "e92d1~T!vMS4Õ)*jr W Ez늝5$ݞ}%#5hq~KŽzz [E>z4F8SBޖvpcoޏl~)=GcFRCV7 1~#]:߉, ݏ<.;(Z98&wC'paivo+qD[nƨޑ.G? {IuzDz`lM#?-݀qG TbBD]EmezL.WO'Â+IqIG2mD#Abh&?@U8yPtawH/.[a.)VX5Zu`mMw.i-rCUeׯ`-*GL5meY9p 5 2I4nfwN<&պz<ȅ ]nY'v/[F䎾H 2z3bx[ێrr #٤qIcMѶ93X9BAJo+?Ze&cX}\"&\߫{ŞpWɘ#=. D?;lXO{<4{m7PȘ(W{8(c=,;XtNHjgiS+!&@FLNS-gg%fμm6B/ixGT@LmEdJi8$e|:KdP(~/Yԅ\0!ƙj哝[wׅ\ܠ8ĉoVxQCEmDG|_kHTae?c12ewS@ӡCpyx2??90U5C-3uJtiz_ ozDw#=ks6a'`);֣LJc91פ8/ozi^833Cv94;@0I>sL>0| p,/K8LNP8,9Bl[ "쳲0J_׷+l9L' }%nq1UϪy|_B[-n6B} 6Th2xf/9KllU$AwBOd-g"9r\N!Ǘ85 wv] /'+r UFyGwBؿ4=!7m. :SAv^2l 6 Re_1 n#pMv 4U^V,ܱ~ڵjS>i9w!ϊ R-GELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)Kmcurv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)Kmcurv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmchrmT{L&f\textno copyright, use freely VP8 &P*>TL%3:pinP/[>dD̦=0olwz|Mcޯ;o~^3zy _:owG?U_r?>uGƞ!??ퟞ?S?ٿ%>q;oNq\~+=OG?w7_=L? u(+M#Q! WogEMK֪ aeOLH[al2\ΐXmDeJ-\$̳i6&FxORGG N@m GXDLƠ!=j $].r {7 Sf%,nYGEZDe C6h@h1iPKKNZTCͰTVByL Z^2 pw395!h, t5V157LGt(e"DaDlA}%HѢ*œQ]X+ Ե1tTF4\Fsb1MO=oS.%N%vTJyRش):?U.$'e ]Ji8@KydwK.6#΁%_inXԞDA2/G]-C̆ kTnNcKC䄗4ÚB/\V| "l_:7BC [~ڸ#Yf%5%26Y./}2ԭjQ=,t܉*iJ;PKq0xb;61%mZ|?aPkf󰒢D8NUj-T p([ÐEpȘ͌'\̂pDB0aꬁAǛ{$ JJ%%p_|`o)ԇ猝gZb2(}rI(Nɻ8)ޏCܾKT<3D4mEC؁z^E!J!AV:LyQ*oC\  Ծ8$.i\RQ6Y͐7Vv p$ 4%댃e !@2X =.߫E%lUKoX!.eK=e N1^."Xїk4 Sys&"wnȂ@-0?֌˂4q%( we򔈕U]QCH\\hB!@NGvE'aqҮQ4j̭)@1µNugs)-Anx>ɍYx@}]\Npt%v2ZKG> CӃ҉e1sǢЈؘ+xT 0ץ.Ɣ#DDTRf\g}/It̬zQ33PV[S?.E3^޴ڏ[1!4pYHuknk?{M; 夐ӓ>+RӥV22v0˜IGhI6be_c0;x2n""u0)}j@:osO"g8{pqqAa`_ ߸2vM'YY TU'Z PdbO% ]O+Bs ^/r/جZ1/&!hCϢ//2.Am-|$A,P)(nDFN!|l /©ɆpiOgh-jƓx2 lqn{Ӣ#ze#'́R,pAG_圼0A O _`r4 3]f+ʟ׬˾ȣ81^qu) ^}=0?Ҝ#fEl"-LCJA,Ob{ fԷdIIfPs ݤH.N⌣8T5 /ie"^,X WU|W5ҙ .@fIUeV5Ԋbǧ{s4Q(tb^.[e<Mx7apiT5dȶ]YBJ*뷣PQ˹ee|i6t)wP! d}|ͤy՜ }7 KFzGųyxOh$nfPy3ߴQ8ÞJ+ !#K;Zo!‡*˲rr!Qrοn) ?Wk;G oa>_UhbPrEGx`z}RQtbwRDi)Aa yүU83N㦏#9SzYoɴ!AEiR>~>>/|ʾ!4H8>.yCl2 l5sL9VJ~XCә<^-D $ _{eNPx|"= ֵH1`SHzgVnTxK(20꺅nGP Ag$y4J}WF+>ŽU< `OVڰkH5S߶܇M Q%Ju@m6P| Gt~6 o$,0ϱ+77պ̭fnfV֑CZDaDkϬp~a_÷(̓tю %8؀qH<+ *YVAɫWxAWpğN-]XoUR:!An˂Q!LF(:me9,xyDAo }o>0> ܿ }0O_4&%Ѓ>Myf4\QŜGbKK]Jj[|)*A<ܦCΣ9Kc(Z hZ 7YIϙ5w"21H}=iBg ,L<Ò۵`e-^FoAb9\[$< gţ c*98SEve,HۭH.WwZ,Q;,kF'֤ `sխe-TWwk7: ha?*@CT rlON~7c8 X.ϛTX iuCO:t Y<2§= %Q r(NU+ӭn4dޅ4b~Y@LjC3BA]4(H`&gQ܊`ܶ`xt< T`辍)?bQr!s{2-˘S`x hc1˝Z@@|#v0)ILyeAѬSiVW@҉W͎,8]I@946~H(N-{f_]Ml'VOӈoxRaE1'boYx Չ< >3an0'9u~Y&43ZFtqN?=bE,e)c{>\K[& !%%`OADC!-eVev)bN5QFcl $r+ЛM@fJ`{P/qNι4\vjr2x7 YKK/C?^2 1g.txSk/;~ {Fs/>b7eU%w^pZk=B hloU8v|XXe qQ(Ŋ]GQ(P)<`nXSnJTL`i1SajF 4 Ql_| 7'wSdH#_POg`D>i3t\s[ <4{(Vp;VdgW\S& j_yh%fwv#Q8BZ`:v>0)RܒK ʟf'^38-!b  }NpWے3 E # .LՆ;iIU~5!RDa#|Ip=0 PT cwp8>L㸬A^8ݔc&Mnː*w`J&8kנ7һ2&;wo[7:qMy! 7/';CX Y :F4L8W5x[$Pl[ݟC# 5`[cSp<ѱr"4# k =Wš&4OYh^G3Du{܍([b _\)`~YTEZr"#p'JS2Tf Ȳor^gͦHۡ~'+BCi@CFQ?:ljzlM;k+>QHVϻ`okz @` Xm_mI ~v|&#r5b,Wl*v` UO`o7 gEBCWkEL(1|X >~!mNT)w3D9 ol/ CMaX vn!c_Q8ͩc0 _>NywTAolEvϻgp0ST({UB /|W"6zq+ 438kQ@`dn\-v0?r&d&52+UG+wٶh>AMy qd=,i@QuR5%: `5>dlD"9Y  F^N: n0nqݓ]" t;.d'#MJX(H\u`EZpv Q f,j!Sy/\f}J4]*,L+nçR7Uު4  ?;g7m2*<-tb1]*0Z(UϱVmZ*U &L%I!l{g >c ,XP?枩6R|\\Stx|{TZ%NLC/-wCWyr o,,'$WCTDg\v8@ 2gQ6ٚ5'񷂁=ُ+7 &xA0J0-'1!+[Ӏ%=0#f7ت ng#PGDъm I ZUi#j1[E&A$ɔ3MU,F̈́;#=KM4AG+|ZX '+cv"0&] qH6 9{o_fd/T[<'2vu1"cP7qO 8(E'F(`;qF] B$?0E.@⻭pT\]mH4ۗqsΑ<SV> 9UBF{T}8Hz$=jt@Lb~2QQW^]BЕr3:.Y-ނiM8§ gƆ؈Ēže< ظGQ3y4 g&z* /r. †Z2DFz(z`` -\ ,B"Qow^DDv ÷cr")F2!?&x^ ij)c*]jTú/΢KyhU0jp%oI=X( x"h7jd2Epg4x7КPg8_j垌33`w/#QB6P R,Odo" @Y6)3öCyvz9Ywiz\A U:.`ɒ@Anfa$⌦8E G-n~FhX|mȳEx|&H_pRPG)y^z.aP5]f:xq0ʞ/lñVaU5ezI DPk܋ (عIDQ񽊐"Hncq^ NInFx>$|."Ĩ 6TT\pM9~ T: ',9=Q+y -SPSPcW*ۼC:.Eƹ>Ng5҃dn& ȱ1XՕ1oy7>al;S6uA/škEӏFSS |hUpDρrS,A0V*ϟJ9D/c>%h!|qAm㬐u䨅b2 K!09j&=/Yh\ qɯb;O lQsgyᒁlrGi !\nʂjɤ0{E=á ;?+E@]lmOW{sW[rvLJ hJJ%%` *LLMc]@Y6! L.#;Ζ!AX!b74In=Tf@$O.Zlj*Rw@&Hd 0u04 l&x1 7] ~ bt1[AgSjmitw4=8{*ܔ+"* b }:OX ) $= J6Tgܧfkcc!)u8h<*o"O<@M`J$&0 ScL_&r‹Ñ75,^#)##Kѻ7X6eȻ)8зȉȁlPbZIR(;$3D1J"(9)2fIR{JJ%%^GW6IܬOj^F|QB~1*> p *R&n? mTJb ~& (A moxaToXEI N{we YԊYspN]+,gh~pQS"p(s6:R rI d٬?WjY8h焏_3AS;O $=Atb1]g/E!8i{y[nˬX2b+jGb3,ZrK%IQsSpqBT9Ȼ–jԵrf$>4]~7гD6v ixJTną)yKƷe͢0lz;Axq՝9,TɏjQxDC! J%| BgrY z(mea֨v=AgtiO֍È&tX( sx[ 1u#jHPq#y,o!Qr|8iʍPab%6Rƞ$foUHEnp:=m]ňC`Uk;Pd?AwI,nN+L&4=/u*RKBL7 }H^`o3_oX3wnAh<[4wu.%_$ D+ϙ*+8^-Z#CKbk[qAN Yqt]&8 Îe7S`KKZ.x 7ܬ8 ]*?^+b ϥ!BMhu--B'7U8.}DC!2%ixQlS;[Z{dt<|gjsxOHn E^ Bd؏NCXssc*Nis 6~"g69RT$X>-*\!7Z2J-"VB*5~=mq\g8ln0d8 %ןY$svBQd̋-Zx& q[r,G/9O+p!nmO\cn#XފE(tl񓕠Ikz1]WF+(3Okq늅tSXbʩ:Jpi]NO3kآp,\Śi2g}#MHδn$f-:lJ~~ũ7"A :;\Vf^#MYeCʫƹ!syA7a+I RnEx'e Z\V .is%q?cY \RQ)(JJ%%b" LQ\ !w{MNRT;F־煂vjԁX ܵq;̌XF#WӲbr &OBiumV'T_PCrBH/cS,Ay(pÜ4tլŸ%c/-F @ԏ o_@&NCz Rat ;`+pjnG '&tG+ȭmnW쫹F'?3HZQ!Hz$=P΋4̩x9?LN  )5V+xN}Aљd&CA J N7zUϝh00>ҫ{?N6yQkPaMlnX_i Mb~u !6qgc&8ѷ(Hz$=+DssݎP+p)|rgᮮkykZ[^tŷ$= voB^#LsY9Ū>|v2scH6aKְ7a<­ulyy _,:M^Ub3`xQG4v ]jffWOBe^On\'h6zDYgtM/ǀ}Q1gDZp36l9 7 &D-J.+8D;ehN :Leep(̅{vQ ǗY֯ro!“ܦfPbzU1kw_ܔKðbiy$C<ّ␿lOmu06aZ%˲|@ūn?C`ya`w>%h.؈*7KHѱ&o,~1奱 }pHvhek) }8A) Wjk,EpCo$gt/:G DJ6܈*B+COJϳPgtGý>vE4{>+@f O7<Gw_uIdDUf3WXڱVI?Tv+,g5sMƠ Ÿ&īy$. +?+wzAOu>A))[Lq\4" :ld)#[l0%@#İjrf^PΣ6XЃmH6K YRB"cvp覐*Ͼ}{!h%6enQ38)IJk0)J%%ID&XPXG| +zH1}=Xk ZـQ%Хc+(gNMpIp`KH {\CM++ ,ʃ/t=!v" SXwGZ[7~LexN2LLӳȊ3%~vOk>д IhFYR:Q5YPJ1`e%-y"RQ)(JJ% ImV?Ns_#E2[4XiGUH6F?9[k@j-n1WN:Sm,1I:*]́o*,Y9*oT OO~眣%fQkV)Tm"+^Vw _cOG_`׎}@p%eJKj>Y BҺt^ C!Hz$@qŲ.4 =v/U[TAaڵ pfnW6uQۆCD3 8`f ʯ]bHwtFG>%%(VZHsnƨd/zPV-4w졪F9 b&sk@}#dtPmؕFBzDĿ'˄HOK`3aބ*k%V=@_ؼ{O|H3f=i ZwB3乘)|k0 E[qlH~p+}s:3?@N_ P•xrx5QKvD=q*3~/UR0?㝝T݈ [,Ń";i)ͩW./Z9[=eKίm'N̯D% } -\yI܅jIBx,ޅQ -6>QD"@."v*9/KL.ݝmy:өHG] ,0ChpfRla RYv#nN |쫂KF*W~#vZl Q֊_ⳏ& Ka8cJ#@hD=W#9s+x*"ߋ<RN|~rҚ֐R}VCQDJ{$LF5"%kpD= 5BI/j|I >+XZE3wd/PeuX֍"¦b *.c^ "E[}h$9CZ'36Gk[| 8du[B0kii\Ӌ-[wC}nȄ>0EFm$Kl5QL|dgtQ'Jڌ-J?@Yԋ+8@Ȼ! ð2rp>7N`l tҋ#=_*kV_8>Rf*Ks?I!7c+ق!CY tȖ] 8X:[/KnP_c v2H mne[17CK|m;t…"-Bw>5mp".E/v4hͰţ=\x33;"-! #H{9CwrZb2a2[I\񗆤~b7Hzx:<"?o#XLޕy}mo#g Z8fSWm4}|S),sq s@MjB7= EClȵU 1amWw,ȃb D47@!-qHH 8ŭH2o##C4jD'eA#[X%"H0AI'IKᴠDֿ6n`R3qb$kIA1z YbfSa\* M~(Y˟ߜJE,ks#P 6!|| jŽ%*,8j_ Q+5*o0:o$]k:" 7nت"8WV)izR]}P%N-&!D}2w7rjߑ;|!7='e2EOʂF` j|h(?1ʴx`'s=7-mA=OtV?<.xk?t!>m5=\ : IXN^@^w' v0<{7DOdѸcr"B>b@gQb`Ձ*7Ujw"N Xxp؁'l &K#9LQh56);A=@iTWϵf Z֋,I Udr'367M0~"4 zvϋރb" tJ ΅upJdR+a1k^tnHڈJZŹɅ+tۛ ؁tL#"ӹ7R.XڿB.VpTbH5trW6JK&Fu rDiw(Ʊ \ t]GM0%驥 ƃHVrf3)=>łÎ xٮ/`-qc-pJFHJ}]fݙQNz9}~ Кj/2iS>gi00tĺ%܆k~eНc ]$H9r!kw BP jނu#h]oo$\] Pnfa5!`2eS7k\v[0` ^<#DѦ͜;A ]?ψ n7l+ZxS(dp].p#F)ޡܦewp35?ڇ :v^c4"[ٚ9{ccGg9N4Pj_킯,]<6%bIQ:wi۽\hQP$.<P+&=se mEj\$X['v'(G@t- le <L-oo9Jt Uz*U6 dbQzᩙlvGfqܕl~3iPMxx@JtK&%\ n0SUUHǶ#2!;|Jf>4k/L}d%S.jDR&d^m<~hz[qP $y=Oǽr yeSi17eJ@dXTa/~_\2Sp]BTu_Bx .Lׁj*2ܦaYF+k,R ~!oX~ aE2lK1`jVQ?aEszHG 8llkuV|Xr[wRc%ύ]-Lp"^j#K9z &u6*fz)ׅ@h E (gI@e*!m QKm >mѴhj' .8q\f+c89;mf48ZfUlmV҂I<@疵/ý8(,p~8bKukcuxK`Wo̐9YK2&3rFHs3v[$#vvW:[KY} q ԐOQ$w_S|bg:<Dhߐ׹ϢrF ȞLWDSUm7Tr]f+ ~M&7e3) jT莒pYyyeg9'] F`<*픾'q)a}d|ZBdZq^W8ࠡ&+3KE6wպi|n"X8Wm+GF"1a!8(jnPp:E㱟>uC"D q]iH>-Ș+ V17x9dfBKݩ?aGVy߽96MoSEZE}E<$-:+,g%zS|k2xSܷ Q:8Z+Fp`«]Y݆H'#ZK+PZ?J^RcGJ?RL(qU_A.*UpظF&jb 3@XGF-jYCPrmYFĒh2HИ"Қ&{Ξ~SLF f5<$q1;n:vW5j҉=RO7}2fo3^M"b0#HwHUrE躽ч[o_&qt:9Wݣ d ) 9qWbiY23Я OW8s~ˁ"bqA ɠ0r4%BmXĈu{G V3:Y!S3 rǿf4v6.hB,8kBEz+ _K,aC:ޠ#~[=?qnL~.*&tV- Ӌ m.|XIK8n )z}n~ZXFQ8sv,CCx8]y%@w<"T&۔O\zKCaO]K8`_aQ#>fusm?fctSlT͵@<`0}0ĆP+du7)h@gOw +YlrJ"@)y#^yuF]JXxoOG%$3mQ4GW7D qK'_ڋH/ue/_Aw*Rʇ:e@(}uڲㇴ,SryDògE5 yV>;Қ~܁ 623v5 --~`LQ]y\ǏM S=; ,$\P  T`}x97@y_>!cК>a"Q¸l,-&*;VF 9MX׋JM]&aF(hcQ*V@1ZCWlM)8fb TQF?e:?RSڈ Q "NJ瞑QRƟI f]ifpiW}yu/YoRAkUM8QYrcQ6#}9NfPݎqpV%dX*Lz\At[al"~^D'=Q{F'^ZUyapGŗl4XĄM2gX/;zDܬ5oF8it@ޤOf3*c6vn:鬽" -cwO9Zv xnd"z҈[M67FnW5«0v6+$KعZ.IMBJy=$^ Bqf5?cdP.yl9<.El2]m˗eaq8qlaȩ iq7L7R eeIҶLOrX}i".Gkg(^֡G>g*`C]qTY)k4F}-&EGD5귀B>k{G;ZEg׽c[CY/o$wa#C)SDU/qj csEG*TmSH瀘֯Nz1Y& F C˒U\n4NWV[_(~H!#9>R5=\I騭-ٮwQ]g` 4p+; {\3@ǚT\G+KDf` QO"[\զ|)%/P.#Al{|ȏYqP7rŒ\ R%^g+J3u{_dԞF.fOlmN8T;·y4&B+~6{XC^X*=(O1#EwL`6s1Ȅm)xoE"p'09񤌉Z=q^iMl]FXC Sr6RvI4Sti4'\ƨY]_9hz[hªإks#V:Ϩi79IGѡB{޸;AZlWijjw/&:UlȰ< 6d7sNI[M-Bw ,v181ܺ G.Z^bc O*+` dYY0Ro=HeF4ohEY<|$jtq y!I]$pz'%6J{m:3Og>Y2XP[ ! J,!1` %F=Zqc!O 7DG GQȋ*ޕdjTweMFQ U(r KPWؑg$s.An~mJdFFIHmPRIvHt({呞7[':n+$tC'to>9pջ; 3$u`HH݊\ pm*kl?q1O,F?<+,;B3m"Şg4'AD9ތ=<Z,&~`)oSvEe`% `j CBq {2$mX3pmg3$4ǨA79.201uLhaNX@qc`a3} uD-Dg &pa\L ;#AdTǝ!Z~e7]Rp/ "͑dPV2ڞIa0~L&V8jb}>xK!,w:>ԉTf,T&?qt[(96(o1<ˉr*kQCJfgkm5jp|ՙs4WdW-S7 LL@&z7mrVP,<"TR4Z}-޽ Ǐʻ&00u%rU6i{$K4KX ifÑ9wjl5f_(z FCs?Us1|:Y? l61X`N0h_CscPrFqJR*=îFpW\slCn?Jbql|:r@!)Ȇ?f#y${>V+ |J>U+d_H`/G$rǃd7)QE:9`@vwю nVM^ơfmD8QC9%J6\UxUʿ oH-ߝikePsM>k!ZV^8t*}7̞[B: nֱ8,w"&]l 5>YD FZ݊ᛎ_*2Z&pZƵx cߓ)K2wcxTh.*G4k@U,g9e%i` LSEϗkOb]󻛨N$[h:I6vTFO}a=3QξxdQ,݅EoR[$Cѱ{3眸6x 8CkT4"̸ H8y@57T΂#v}Vp$pU"70 N5T+RȪdE!INgʭI7ihtZBol`7KAH)[ &_v  LvB' ]!HGq*?nEN@h R2)ҕ[W-vlYŐrwAzL./m{#rb"hDZois Qi5uï+6+sYPލ~[chc9Tn_5of2 Vhp C/$Qa8n=> 7 UZ ,QI´f"tmd *'[xR#GzB}h p8&n@#՛uvx  b՘9`i V$%/ň#BѩrP`JunIXq;w ^EIXwׯ?(+=&ǓN+uJSf EBb[:^ß{E8CO^x׀:BZ!3$@AJ==v$Mzw]ygR$׹ ygptM Ȃ}};BnB鬷TD`6\>Z*:Yn+hU Fkл^١}9zD ',vr\1|J(n"}4YMFֳ 5?6φu)ܔ.9n*tW$j$Nb"|TycWW@iGOA;ַ7:ZU2Q] U<204"Rb餶JU`3+M/}gv3` ORpN=bJӕ/˺v9.ʞϤ)bbFC׸18$(~>i> _0 !90%(Gxldz}ͭǠ@uϠ[L})I {`ٛlݟqFa~{,vۈZNוmj%ߛRvKA nAoacNda.V(u?QЁ2]v+6+@ot:6@].`^޻biDTIv vcz|g1L Bs=SO n. h7: w7N}2 mv4G`U'Y>Xe0/8&cY3DT:1Q`V2#n TD]»v MY^ @_g7(6{r!'IwS5I_ۀج14 w8?f`'eo44n3QhH >;e"f{<:|*Q"WcǙILga,Le_)3FkyZlx #M1IeSV3鸂m0kR PE=tR&a&yWJqσ6S s6FS&V;J&R=8]h)|Lo2Pjo~7笿bp*1 WH§vxYe8۴- {v8ula1; TH~$`Ry_vϏW+&SU*-Q"e\{ _@X֡r1{ExHD`} Xȵ(c>1 I_>DG>6sѡ.bL=TJCKHЂ!ըY$O0n,&a?ۻͷYEE:m8%Sd#AעhsI6œkly%FQݫYf-L>~L P$ E2@sd'DW*ՕHCS&X#o~b?zI#Sn̑ė28bTf'qI.<ziwQO=Z im rw|[u8̭ծY_xICxl-1K'HOI~L9*io zp V 9JUmʷD]_ Z+bg19~H^94jSTƀP~K$~ZӬT<︂GU\MaŹǻ䯴EoAbbfՏ/`-YUFTM0cKy'_wHMJ`?y`Dǫ4 P ?%9TFt4r2GObR@%PDġˉLP$VYσP8z 0⡦BNZ,]RiPۇ5M쩃c@f~nY`ع3p|@`8¼0fHR$7L)C$ʈI_P^Bw!/٪dX${ױ.ߠ+>#A`h{p܅'їa} 1rў:;wt^BPslz܉ua.뽿4ٗ7at"pUC 훵ǝ!T?7$T`?\'pB:ˎ0AmxLŵP0-( ӷcɜ( [ĥG3=/1ÞǨ4Tc4uR}5ۮ L~10%ү0zʶg{V^Eoe+ Ktv' ]LIݖlVjP[O.eFMѩ\֯'v%$CDH̯M߇|I{njd\0ޯ[U;R:2!DխR~G$0+sDD}Jy<@/Hm:ox7m4oSqVBQyZdYO&ԃkk:b 5# 1T^%ٹj|tP'RgЮQrߙԄb\*$ur ^ C- o}x.j$a=SPB.X- [if wIçYFw}\mus޴Bt5ʤju%l~eڼ7d[@obYsm+*ՠ)OpxrJ[ HO(F5H4TON=3E}{1\p)%@EZH9K ߬F n驰f:΁ 6?fY9" V4xF@q~xILAl"uz<\!<9Ik.*)S*+u! 'EHq  zs_AG1ݢ`uo hE"r1-GHAjV|"^a3;%*TqI4(ؚPv}!fAu w[>hC{ 0vDL)5ɋb6\ ױEW;d<+ע\$ ׊ް7"w^i:&qKv=!6aOuWf >3|s^KGkl~I? o!ÞO1EFzW$-){CŊ/ef4TR DH5)VB6RerΆt96H-]`̨PeʓV@g' kHW3'2(ؚTͲղWtܚ%P17xyJqƂ*`*-C:m\3E{YɒrQ:BҠUH!r5 {U *L<؜!i~~-\r&aFR6/1Y.:*bNxəTvdlJTSCq)#y!D{g6-幪 9.dVQ~h7rqxփN = EΠn\Q8A'9("qdzbE~aWi/$ h*Q*]JI#߻v2}5@Yx4]4ՉzVf,3.=}iP zp:x9ϕ[_тAr:!/ca㵁D,9`eܲ PJP'"7vTr7>N^zzr'-\fg晍aU,0JǝGxnU:OEefIf(jCN}af.l50g!BpJTOFF& g/"ބ,AS+V!?V/0e a:jM΄l⦻ȵ L44D҈QWRQKT7m7a+ԣcE]a3VR^ NXwc#pCjNS 䎣Gٿ% ƂY-.zyR=3kUt9SyiEMӷ >XHeS{XѤ5H<yv*wLiVgI€P$K4C{?hCBOʺՑ(|ں&Ժl$ ]`hěٚR!( #>H\4kXYbn콵?'|i Bj[|@Z&a_$dLc!GZ3|(ipK) E&\11'7^ҒM:7N;G/m42Kn- N|PBQ*+k#@Tnu\p%zcX܊S5ytSyP>\9#䳬X E(&R ZT!:>WsU?&P!c:x[= j,+(t\U%=uSL{+'-d&1vF+JeLU O<0-w6K9f^"9 Y@(.>hC^l$>~RPE<"O,N|`fC lhi*4ӰP g2جQ1 fUW9c^\nOYC7|P]Fq"ҾsBфN&L#6(P y^XQ"N8^zB.L ր`- {]QYakKs%%N"CjJ>xZi |&EȐW% [@0pu ra~aWՒmC(9J|EA%~H ;ҶㅦѦ@chMF~(I/a-> ;1 a1{28l HT!S V).O$=q޿J;]bCorI30`p/<'{C p>+ 0Q"D9=Kg?S ٕձZRV|~HǤ6 ҝ| cò'WhˇBp}L/\;gJfͶ.&2F|0ƞBi펦8wA;׮oa vZ湒H} CKXlϺ"Afi'X&i՝ jvҺßW \m?J[o ,Ym :#;E48l8mܗh k&RmVr#{&n``$L}kcZnbJ#u.+ے*(9A{i$ex;ݢ֍TqaIw+@X~\V3LՃȗ.='|lp@k@5"}> ",ga>kDPJC?jS眪}x7r YפA6Z)tk|p5)y:23R|Y>{zg0ENt==34 E[ٷ$$Y1h+s6mzq ~&U` bE }l>Q=YiX HtkBwR ]LJh.kmaܫYv!'dm B?N{'aݍ*I`_:(?+-#7TU9ݮ^I7K *EpKr}4 yiiSFbalۄ>C} tڕ2(E:Q*׮GxI^ ) { 4P ͿLsA=8|>P\V@>~FExm#OSR:Owl4ۺ]B~fL䣐 OJ[0'eep6T\?~1:!ֶFz鉶BIXjI2`t0 1MޡO"*cg(}^]Rh%a%w{@_?~SUuRyy *b~gTcTc'K\bo%EWcy+:Ksj* jB\>aغC?R,=As`bW׹f«K oa| (ټq㋥@ @xYy^AN=h[qHAK\(I۟h}Jw螞5^ąfuQ'o#J;o|p%-VmZo\s*Cia:ҟ Y՚"rN|[A;y!tֈ Oֳ J Vt'v\i#P̛T5L_USLYKCW;\̉y-ډ&e@@}[Z 0`Sy&Fsg^M8dK=@p%U:4t|qE)6Qj&4#>pB"< .\f6w\?]hV~?)X } ۴X 9ٞ]hr:SX![ٖ=Z4ST,-:q@RLub1F. %딆-0x9wkc6'7/bHǹq}/?)m= 6"yQ5LpCb [T6YQC. b?1>!1a"F=o֐h9bR!s_ 7|.aJd % 8<%GgY` `/VjwU;yۈJHB)g^ՙ_# rVkk3}nRj(l#P!uef(W86 zʰ&£2YAQ}P'2CDxڦ$+O7xnd8l28~VzGD/a#Q@'C6- ]1@5gHĄ7 vZ:qmx %_uЉY±k>D*T4KQ>#ϷhV;>EW~.XNNSF, -f>@96di]i s9{{E+2]\6&БJ$ni ׋xFɸDɢF/Ƈ֛ N# r#U$.v+J{7}yx4pR+8q璼]NCS*|ww_JTw‡?60ଽg~HEE{3b߳ylKbMW -)Rk͝$R\ezT#99H?1!+Y]}d@g !>$>Ffk/Cù6QWjRBc4ۤ&Nt~QJfrxTׁg_~'Fv yEwai<Y O')Lǝ/suZ޷ @F:hz.qtN[A$Kuˈ䤴rt9Q60A#BRD(K{_ɚ[тm]g"!YvC'wcr@NR+aqWj)ZY>mG^$CK:+#Ap}ql;Ρ*U1Q_vHFʘI3-|Px_wɼiwáoK.;QR‘rաIWcZ q]ـ49}iSޮ)ƶ(xʔy'ޙh Z]jSݺnYckGX=B|]4h6vR̫ii*s@$9)l5*@Ohl6C{UV⬙ ,௭,)q>Z >AZ 󤼣!f#w3Z i<:wCawuGwGc]"~:É+ C%QP6@ecK ءB5J6ǐ pNaN$HFLQ.ؑDjf9쪙f'Aa;kQ^_>]OֵgxWtijUɍlfC$^3Wy4Z9rQPNDeo5%4ӐlcpO/+ ZD3o7:GDĦ@ s4Ҕ`~,gOԳ1ߍvX8>;8J! %o z<)Mq)lx12)1Ue<!ipУ޷3Žtӧ1 RX+@R'0mwv?r 1>ESh_0 w <6W6;RcL-걳2*%]gb|cF-Gwxx{D,p!L $vfj6B'|ɼ0S2;mdۻ; +S_߆tp1EzDG3vڈL,]L;*5E9[KFU xkG]?uIiē7\mm=:088 d L?cg eCI&XbTo}tH|)=<t[\mMw.B?V*tW,o`+PenXu^gF&rw#m(?'-U[Wa8)\/WC2csp+Y+ƖUaRjE_&Ԧ![^h18uBX/V!<ħ;wH}liqQ03%Xx-wn~EFp2n!'ᗅnX i!9P/:F{NOe%Қ(ߞf쥗s ýCMvݫҍt4(@:Sez<`q@l3~?[8R|n`ϙH&QE/͑Zu+h k/GPaY$y/r-fTySc}W5#|_")ZV#ћg$ >AUѤ3]9jA$,rc?fzH*@e1b,GO*q`/31 y$\^K-(-2>l\A\32&gFW#KBWRe&teL1aY:FD{U&*۸V s޸ 'o8G|p y>qB|A$\$r4V&\Z?2B,$95W\@):Zm뫧OB~D%q.K#^.1]cgXMYCN2$mގ$6,I tSUϵm>jßKr=Hm8"u)/.LLpd}:%Ggicޫ\lB1[(@^/SMB?4&ޢG]^=ڊ߄An&:>X.eG$n&$:A]U~uF T kV!FGGlP2l%J$Ɇ X5AjV"aX~'%Sase.iQ=|fq&I lt2)4VAI|}2=5zTRR(j&uV2B*ҳxЭ/h .=P[rtlj=w3uN?Gq+A GJ"HKѾ >t#R2i?2yVL$=K߭m o׵dQQ2zLjRi8mۆn$|/>hGnEjUKpZaZY%qx-iFSPh߳ 2&3>6R^a'* c~TCf69(ezԝXȠ Z-}Y4T25'w 'ӭ-(L@Xx~ NM-΂>eY9=cq&NgP-tL7RQ*8&^S,҂FWBL+R̨lk¹wb͵+&(55-J/-,?eZU:S̜=˰܋Xt4jm+U]LSVQ .lN9Yp\SL|vtol64FZ\|ڹI<vn޹$%2Lr} 8,|qʙT |_MFx",pHQJ=zq6L;e/q!)|'>C`4&cdRGKx.js2m4K;a릘DzbTBքB6u'z*BWezN{v zs!bd{T 33`+Tl4W_TEJl҇fOxM1u@Ìտq/H!"i8#x9@R}웒*+6K<2`>1&|i  = Vʄ| uw7ZYIuAGUjҬUF{$4,NWy5hZ)܍3 UJڈݢ4rA]dk :W7ؒ2@tJiH5q!P%2b+?3%@>P7X,Pg}۞ P-<5(>h9: ;nA(h~~COa`BL Wsoχ]1+WBQ.ϐ|*=Վe_Vm'& J@q~ZyGW? fHsb U8mA<:̪M#e$po;"chT:<=CtPZGO_5}WP8^+#t/\E . g*e|u`fyԍ׏A"o^n 5Ɉ""NEJ=]8%4v$`c%@dahLWZ-渭%zoFgC&S3^+CF0#|A-x׻ixӂ4ܕT} 2|CML(]hE χ Z6o(1ȱ<0[iӟU;:(m*+ };;O576mu7~%ؠr P;ؼ&ʎEppTD *K/#2OBB_FhWPI fŅ?NpW f8juHTK|udnxA ȡ|\h0?"DiAQO]B{s0E%h%Ϲ~f>cMS;xN`rƛw9Qg+6[Hx A((9@ܘ[ًz3Zbb \7#Ei%]ۄ!qꑕH^>*i oF,QU B?@g7-Aca(fgiP (:@wVu/eF%;3?& 3= +,5C`+ ^v b6`=L ?HٿVOֺ?0*\R{I>jsfK8EAK!kJsͺb5yX)$=W9^N<0ә\UJ<Bg$꣜a+)ؓK8y) &%2H~)Y+?(l3r k= RQ=GGt ^ XP 1\k 5hRI>i}wP0H_k*OfKv9iDݍ;Oܷ<(A=Ϝ=WR[b.wqƜ YqCˆ=j~Ktuؿ ' Ҳh+ SZߋM|^/!kwF[O_{w-ؚsLPhM@&%bf~lKU}؉]J1U\ܓu2pdY OHQ'S|@7t>y*OXΗ/j8=!HUDBaZs#=iſ+i[.гc? , , O)&oz%$0t K]\$o>C fuZtٴCwr;M/&?"Y_{,)㒳/topLR4`ytj L˕&:rnٶyz5[; r":a,IQ{lZH4Znz"OyP3aHAJtۏoȪvhF;Q2FXn@Ʊ:ҳww,~,"QE:.&2D](7jJTa*Ж(IDƒ/DAw-ӄrYy\OR/m?"Nнl+*ᕧE;b{rSX濝;&+(iY*AXaS~v7xّ5J;:BN2ق+ 7_>Ay0M 'ЦeMhEH#6מAx7aEzB_?bWY]P5/͏xK@ӐIY6x;߸mMF )HՇtȂ&xY);r*;j#2lgj3qůB$%\rogP''"ei ̓ԽD`'$cr JQ~WDܐvlZ⥏L0m- f%W KCmm8A23^f[$lbaK(_fnp͓AL)javOF->ntniM G(g<)mxih8@tA壯>lPap(åT)aݦ%!(I[[WsQEV a|_yH*;d OEh50cUjT(j#DĶ*\ōz@"tA f",*9˽hhn81 {$hޫ'y)CԦWp1‰!EDo kmC8V|.9FY <<=~L&I9a @./2ڲ RvU73j-7t~q}kKe}%ob8J9ʛlI9 qn"lhdV*:?1AXՍ>1.*Uu=EG$E08+DЃw;t0 H,p> B#fqOe>aZQpL&!B5ƿJد##~xM(*P Q=֘ i!!27m !6OG$>B!}7MgaU)Ɩe;TXW\Q\o63ǂtItR,:_5''G 1JOI$kT*&'[׷3DLG}Ʒ`}4˨9U7ed/yNAdMQcI m߶±viscZwק8ԡx/ҍolk0WP3yOO6P c*&:^*M)N?ᜄ%S\`.<E}]b|vn2k9C(K;`F©l]괉ӌǾlڎ5PZ&_}02h\0^!86:1xAM[J#(JSOT:nF᫻Ukʉ9*ԶFG%W{^Ƥs;\?u#VTGI 40TV2QZ= fuÄ1۲I1rSaoHf Ԡ30*H\\Mkdg:GeB^l{HTmFU\#*%PYO/Rc\B0E`ayciGꅂ"5.gtm 𮱈=& D8-7iȻ Jvx] b L1Nf~DւISC?*Ut`Bh'k]#ɷ#{"4*$QNu,0>>imdGt̃}9̘0V&"0Nbtzyy n5QVjUVl! $'d=|N;αq֧a#LvmN8bhʀ1ŭ 8<-(^_9Vz-~wZBHc2`w W[azhq#YՎNiPS1: OoNGcrQh|T0GHU֚хo'cz6oT d{ Q!eϚMAWB1(2pqmΖHIM ]TXU>/ .wcDa.W]ONdUmKЁ*N O@J>cKોW-40l4 #B V߾Cr1-FZ>HYS dF3|^my+S])^&Մ ĠXk:Lo@`[@b*9rL#5 (W`D"7L6kijʌcF qR1eK.l ǯ{DHK(?f )G?Wd譛{ .cG=@Ttw?'l5$&'N8US>Q"Rޮ; WWG7tϙ%}Ea|sYMjj)@ksRQw,ud=!2Ql^\'Sfngzcy$2]̄Ңfcvxz+)\ Ч\Vrܟ;O}nA<R#"TJ⸆n #C/KqΌ;96?b8&B= [_DJ/Hao7LD-`?%a5'ɤ\zU4m(gE- C`-øb?v9),uk rt{CwTIyrj0:1D#@dCQcbJ!/=v_#X+XH(':4~%芿J^_ujwO[[v0s;#"⃆KI^\*PEg3Vz"6NU:wl}}ZO׏ UBZ4,%襘T]05GU3͞ BT*wCퟛ ϶ҕ.<%3 ԒdwAlpjGg C, Խ.(&+z:]^W0\k!%ušXS΍\ ?<4ٜϚav5yՇ}IJ}IRJC+ZC|MQ9GӅDqHPҟlBb \ۃ%ˮa.66%Ҿ\x{"Nwq!yy-2lu2D915b)\&xkaH2| IB pP 9jTUP%ce])yР jEl 1VMfpS+bѣB4# { )+o?ɚU2@n%9&p āY2%֤WR@P(9BM MDxs8I^ +&`:AȬ ==JUbG6Wj2ǴfŎ=7w騝Beg9gwֹjm'2aBY 36NY~%pIun<9WIXoy=hע fPιH=d ,s Z/9^u}@o;bYYBb*E_J#wqYdQ IRv|3vR Pހ_( vr(E=".g1i3Ss|"xVȍa~'vXKZ;jM"呔g5d#ȴlJb˒Ğoe;zFD$9//w9 h[ñYO"jUϔs#AT{! =gܙ4?VCA& \kK]#{l1m]d?% s"Ot][8O(/K8lO1m,Md}pc1Wy8g,,^x+·B8EL]uӑ_wܖv|jL>V t{[wu'r]߆q{,.n;:m2*4{Ng˰̴VѿX F|ތEX!!4&*RԚ`*Ι5 1/߆>y/4A2[{A#/M/Hb$] KYLwW,Fk@^~5G2] A69s)(CX!6T&cf'y>%C}EEuyq"oPÒT$%DŽ>b( Lvx˃"*A@.gʟ +%eGD^D+?FSA^1\ ThLJ+,Uu &䅨&=*_H\OAج0yCrf7Ͳ4Y;a@kюv։x dyFaD\ ~2Ɩ3)ݙ*> o-Fؿ.]"$8wv&F*q:7bM:%Aހ5WMwrA0޶oS0N·c?v2/p-wsCNc]{Ѐ$vdBq W/ϦP>HgثU(ݺ(M8q7keIƀ &J&= utw>Mu44Qj bm<<E}\ۖ-`EcPҹĖ /( ytwNv܈tP,"uʝclEn={YXҔl>{ }d(K˷IXrQ[ʽ}dȺ"+ !B(ōV1pgs)]vZz.e\ګ-3 rʠQ–C_#? z!d93HPK˫~gђrέhMS.gŋʫis v}\& ;2Hv;jB/F-%w-H w >ܪ"M&_4/@{zbPuBy M= 5^E^)*Q.lN(J8#݅Y \K8֝KEIo-k_P/]fW؝QA1-CmkRMISa괓A+ORS_8A2K"@ J% *nB̆?z nQk|izk3uT:9:_\+Ԅ {h[ 9,o#{g˜vլ)j?ۖz JR8%\mRlP^ne⻎ڄ'Gc pn!>2Z?5+G/l"v@WN@w\yr(fk2j&,!%Tb/zw˂Z?<4nH..RוoH(w#Ckfcح"Joxr?իX\64dc4I3O%#_u }ytNƱ4BUSI ⎲tm`+eO~I>b4ACMr` /} 2+Â9pg^g[Wax˂Lu6s2}1\s='ԂVj/4$o a~{)ߛ&- Y(ӚcCũYd,uUg: -s.=} d=_=featx>^1bD/{N3<@T؈ ! q|>&( abkb,K!H^qcLQHOQ/)ۅzK`Aw{?bв ݏ }AVH|xHH"IG+K,c*ŸfReeQ\f,*+ ?JCL)}ftdpY|E^VxjKuV8}t{PkKggs[ۻe"ҋe]i727G*a͜}c]0:kݖDBUK,0~L-")&lԓzϠC]$tG`6qHZ ;)!oÛ(Pb`osѲ.uP.j=v]ZyA䊬hOu RE#ʿ4ܺEyHto'_})ҳzbRK9܅,gjJK*Z#Hs B5xu*gz؛k9dH c<$g/2UүMPOSϢ3o<; T3m'}F'M6g;uhloic}lgOAi>)xGu&./#po޵m*sh `l\ mT9 4VSض-ʿ|P@\tXG,|8̫Sy;F hCy?%xbr 3L:3P̲A~ح|Y;<սSl0禵1qRw"ި(i 5lyZm6RVB߸64D&:&$Lz'6>pCeBǎi]Wq'÷Ģ:Xw7p/F:Nx@=@ܩN!)EpZMS}/q:VO=Ь4ބ&m;*laOdF=ջqQ(K i=l) 屶j҃UZS&]ik)kBvi|,isap+#f?2$oYAtOڛކ<|}k,ȉ!>nU)ܥ'5kU~!{NNezU%7 jpbqj ZC1{qQf5 O4>0-i^\(ueykvJxac_P!nnZjxX;p FJ|-u.\-@caUAיw`(-UTZ'᷎Q7kP=i(.&O?G8",3:%rH6 { ,>OGp4MDVx܁-fh=QU_բ&\ĘxѠD#| a@3!TQFWZX p-dgW;"۩Ɉ4gׁ_Bq2fƨ>dq}*&(Į/xH<4B+ !Rq*iSd -&%zH7.av^E-/MG]1d5 F0AKr*6PX|btqM*zbTmEU,,\-S{ fQrg{iQU CB +uCR՚3Y(ΥOhd캱~X3 3F|n7uc(m1',ڛY݌oz_wo֢妯z7y+Lb 8`4;ь#q2,E Kc}Q\nnʚ,LeTPeJ9BGkx 7.,>v5h>׫>[eܓͽjJ 0f!<6l딹u l_# ~T 6 Tʍ;e6M [PH9:\n̨,/8ŀḬx'uǫ;hMhlc\E-B#dKlPa?w"w50vI+Q"l6:>=*,FKxj#&<5Ia֗T:gxذ,=*aHg=} k&ٯW]'%vz;燞,z`}3ga>N>C9 `S' qsNCԷeYW݋XsEWHy>Pɣn9aI"鬿o .^'p^?UcC9]O:LRFMM~ &?jlM_hɑ=k%$-(iJ P|p4CJD4ſأmK0OAK\m\XV{lQܸK# )4+zA\5_N -n sA'P"p!aw 0^) 1 W}P]3gA/1;jhD]Y߰MN ?QUu6_}R|_Z/h"~w^%СMvZa&Or/~!JmĬe;^p܀ njHP:7$`fmT:xMdt7ۘK)GLw2;+M+_StB`Ei2%_EeQHo \U7!C}u+ޱ{UnbD$P1g;fAA߬g:I~Htljodѫ1E)*$9+\r2Ieϰn KCYXǢd*h9,+s;O%f\k)?ns.J& 3}QڿLIQz~&tN?fx٤|4]f;(7;|ٛF܈ ` ۋAaFh4R|@$D֝%B7ĕ#~5W]MV̙Q=\ξ"&n&17岈`DU`"\YƁ5Cwr%Ҷ]4|&H܆2P]pmry[*7 hmNaRQو'>T B$'(]q:͢uX{ő\?R[-}hkh((f|Vuӭ @}_u\Zԟa c}'+ۗdm?j(_S }65!pNИkXa8:q;Zn.9j/#![PP:@ϥ9Y}Dϋ@r}fTiDǧ+&ZgDS Ma4, Tb5>bO)7nsDԨ,r\#rDf#"-L!\2G/ ݰFԉi{(qZD ’:&R训,g IQ5Aqڻ.K"/ir%$'1*B&gd]6x6q~ˡ/ɣm6`rnY /?N5lz;q~Da^[%Zm},:ljRH/k^R.x!<˷Эq(Le*j~뎑7$Aq,nrĠŜ#=*~nU;>z0 a!Oxak(`n uS+&)l ]Ķ8,ȹ@Bvf`_SPӺ2~8ᙉgE״3:q΢Bi䲋 K%HBy\%؄u)$YoN)K>,%vg++O o76܃Y@ t:5I,BI"zwwޱ4slZБ[ni3XҽX,cф"m'1L5@+0YʗRD"]$e璕a'C/"w.5[%-Xc"9!LJ~vE:r1.TyS.ʤŌbB}-梁K@k3݉0_ F@Aᜄ81* DN4LF*96}h77,Y2_Ae$tg-:mr"ҌaDT"H".NxpueXql~!Aة8ZE ?OjmaV 6oXuqѱJtcy 0=z>yu޾ j^>᧭JF(éx~@ЁY&@Iܫ9:=0y>os2V_腵wlTψ2>$.4ɯ<9T+ 8 GE>·xN3>c̴ۑB8;w^(ޭ)4>[?&'":lC1IGbZܴ6H ^m+R,9ͧrh޽]>W;IY~o1~ka7\X Dkq/op,.6Y6PP;vmSTjB7 *q~%ҘK|CfB& BEpݡܪDY\7vo$lpd12֚m~ a(L:DtHj%YIH˙mܥ,;r.+Ry4߹֗2eW<É3痱; aq4-_,A3[ٿOS}UjCDV6?JH{ʁD&B=!c24WcbQ(6לeoD}}͹QӹeD&gѢ05y75m+U>Y{ ,:v ʣt>( *BŰUKtx77,zYO&ӽeɎ<-K_zdhs+OsEcdQs$bg^|:N$^+Z^%g{W1$#sbQQ3Qvs}J6AfygĹ@uK&îé7yYhl N7Zu+7g,]])Ŗp؊f<!_>Բ^(Sof. bQ͵ׁ FYnw諳0W^'(䩧[YFGn\7-^l\D>Q,C%K;Yx@fᔸKT@By♷U䟴8@lɗ+ 4ÒKUswiܳif2U) MaN6 CY!$q?!|9pX6FN,,xy <L֘$RsEP}Ɗ8V20i5Bw CBwоkmͧ!(H Ǟ l";B;폪s+g{)POP!MBJTRgCwY]*%"zHL⓰_3̤\#lYkOrf3Ҷ6U4ب92HL4Jb1eExb"ĺ'k{9 1uAfNľVel!1-2e_GrI՘-ҕ@QGw[$S(-?'ZR5.S$W҉6e$ze_]c#![,BjkC7W\+Cq EIE| x^ _ NtYAJ=Ձ5b6\C{?j;t)l>ϫ`^)RE;y)PTz^-z~Y<'ȒY$˳ f.tb!a )Ki d i Ia\p\Q? RO6i Zo~aL{ ru %0WY߇eKx]ƃR'ߴ0w'KA;NL6d_oiGqLbMH}ѭ K2[&̾۠aϳU@58pgVT;bAu{@gQbgzo۽1ޣ+5!gc{9XAя.A=cPYԐ(y5hkә\ITɈ7"X[J&x_,sEfU kWޫ8ݝ"kGQ&M$ЩjNtKExoQ+qti9*BFiF843՞h%́=Npjf<`pu?G5TgO.~"h8vtĥWUϳ÷2e /\l-cYo5Bߖ/FZCq1\LB__ bS'n CW;2OyJ\^Թ x"V| K%=h`ȍnX]-"%RgT)͵tϺ+WTpߖj9T.vUͥźoys4\%BݥYt]5^\HcAǾGLkt(7y|E8YIZm[Τ()k ou;Bw5xWPǵO*@S1i┣vUdc):BBn'hR%`I$Ë(o^s)9Ғr^fܻҒ@P~nӺGãT<7A 4"/Xnro$"1B>*drLզ<$?3 v딷%+ +gUM _㲮&plo7<+7 DӫhH@6M>)ZQ։F|A`3&/o !tEw71&ߎ^V$6(%YbߍցWZk6׶?`۟lii7{-,x$BU[tM93Gw=h$IVD.bVYdv^2|4fjN/&2"56t̼/Dvqp2cS0n|Aew'G**dT>X{7x]SP3)D=2& 4 1Ki=? Th3wE ZxAXH#BUSlJD?·$*Z'3;"o)M+(KX4Sx׼8&sNɴPN,]zSL\IqSE,߅QRplۭ.Z* Aπ"gΚ}vhFw>mN T^r׬u{.rBwzj$?+LyLS>b8E:҂0,+-( F8˘U,fvt EEjڇw!Tn;Uǿ|vxckUkvb ;ZQJ2y\8"/s&ao8+..V˱SG0(K O'ܽ& IkxAmW7n{Bu0t=(JbHavӄ;HcD4lدp;6! YPA1OBVp >YoxredzLX3ԏ[%\dQI pIyU=>1I{Z&m\ kХ0HM2Roer `&v0zDC}2K>Zax Ktۧc3bO 7y"Wɦ[OkpeCQdTO5qwla5BGg2~ײƯg1v; Z-s!]M !en(wfD#K# q9j~Ֆps`^ӝZ`sڤd2~ܞ˘&-2H$)8BxIUJ0s##ulȅXۇt?Ku@eEF\oj,dJST6iӅ)陏W@xy.NDLkZ pdU2PFcWRnDkY$qj-M P$[X2aiy0[ƑL7Ň:Nh4[-8.e݄o0_HiE: u@$u: e]@![jb]?\^]mvu:$b^Jcm3gCBV [3̵MfdcFx|vzJ9 q.ԉILEǜN+(3Ϝ[!øU@vL^Sp@wktFwU2#XteiH:&Êwv5NuYf3 o-^{Ќ'/1?]H ~vN31&R/@ǽ9&eT)v^Ap)jkpu"Α{s--L[m i|/(:}Vip $mX 57lO2 ҌORRSnj.H,JYy)zR5eCzIj,'<w.6 r6P2)?tqnL$+&(Sۜix`}x0Mc_@YJC?NEMTfNTJ(W@wgǯ}I-K9Jtxkt#B:ڶ8qvp) [: lWO]Sh-qhp"):(0`/ @C8]tѭh~ˉH 0_2}'%Fu ELԨ sqr}L d˟k&tC8滈0I52H7#ϛ3?rUA\k_eQ~j-I>!O8̒(=DϖC$/_@S9&=e|D9Ucao4U.ͽֿl$ԧ d>aqbqB?$Ԥ# ˄i!6WΑU;3Xyaو,ݖ-"d)ARcU}Ą9,l7S B(Wh#ŃƺOKI3=!C?A뿒 lr%nJKBGڈ GC3P1me>c?% 2хJfr\oE;6^> =fOQRTt<ִU`ꈖh+>3nwYJ{o)wu4KܖRKYc Zjy5q`'w|L.XQ&V\}Ks,Bqf׽X! ࠘zFYm0h,/ k#5aȢkЍ *ބu-f#`)CܾV#_\g#Y +)\U~*e'W*f8a4]/ߥ_w\l| t6Rݣ ..LE +R||b=BՎΆ>Ԅ 9bh^V8{UѦܶFJ46|$XN@dǝ倁1˯BEA2M~k^3pŠSKiWt̢JPᦥZ{xHކ )~gU?T* "Wb:AlM̹WM> l0+ 0Z~o{\ wy3{- fX415u;.r8}mYxaZ>v{JZw ps:82s E̽oDjU1Q@DzIm T$Wal\ge%W؎"X#a{?5+eEh) alΈP7 l{Lj%@i ρ?ɲzI" LQ(MM{6@6e.yɞ7 U S,F)J;֋ϥzpuCwT(IvWժo72+W'_` m"o+7 <]|/'>ڊu)zff=^@ސ_YnLJ&*⨯.9SDC,!Hwn m _dDZ8^4X`gCk<5Pq5 Ɋj{mUʃ+râhX bY mFVҏ/I8"jw7DΑ~!W8DS0Sڒ˔k~_ l$#󶊿d*FP+d"`ZȰP$v7D{1 FoH00}E̴u**)'vzuduq>cuAB$7t0ZLF]7rR~(şa@5e(cP`8㌍Òfyp|>/ m"2ÁM,{=TP{#C40 2!mQ2?60(!\?!@.(D1x.UCpJq9ՆHt)ZmM `. w ؋joSp!wPypR[`eߕ4g̵/+#?G?=mWAx1t.aA0YK 1#|XU"m#|ҙ+9&:[4Jx29D|)[rmaNnC"cq wfB}HbLR' ¸,?xȜ/`(az%gJ} B`y?ۀץ QC%t [ xbxwG̙N~}Et1QF͸jb+ 'eq4B\U5e"xBև6QjtObw\*hɛs{na%SH %wZas/h AZQc8SWdZ.f=bhuܴDzz] Ż}i~CXMs$AK-@hwLS '+HI2eOJ+8 2i)YgaDk#/l>zQ::ݒk* eZVP/uxh+$VL5yRnm3>1{'&h2./Lvtvq$+6$ʩ"5 _UT9 |\kd"WkOF|uZmZIdwoP]f>ݽG1R4!G9:#tܷn1=le_`*{٪a7Jg5%$TPg+2\%u@uN MXcn*{)!C TDr"? E*0K1?R+-9r\Y;¨ 3_POE_3E\R(ю=;GNck4`,o\4tCX TfƓ9FMC07ћ#3H3_iR -;W'Cfq0!0U=<\d^Lww=đ ׃4:Εl%6 H;rv/N!׳^a.*}Y2Xq_Eϓ%k׮EdzmHK34`wSi?dTl+W[zFq"[< ƕ']RFŎ'j((c !;V)Htm$`3KDNoIQBꌱ+22>gkDe41Z ^SFC)/'~CކOU91 1Hf]{NJ -,.QnT.V) Lóਿ];zjR Ju)b088dh'\rg+8-/O(As/d-Uxҷbla/9eW^1)g)i 5pCEնCo:MolO yG5UEϫ-Vr`9d(6p R>{ee@d ;}ϙ_7Zф1v@O]JO/4@6Lޣ;t:|6(*g'``c vttOGW3:'v~`p~j1ԡ(y Pix_r Kyء)} eȽŽfvO#ژpvsiY۷oEqδY,%-\+ \Ð22K(t-)o>Au*+S܉: 9)xT3)i>;%ɖnoysL֟q/jv|6ZX.Zw"ZwD'muhRv&'~O~]qT OcM\ۦs;]R'9\K JD/0Mw.w:fU}/^88fPE.3E{^llB<\#Zˤ!0|7!]`*\ܛ޵ܾwWfF`>e`b6Um 65V{(lGJ ʹ5) =1MX71DRΪk5 He{5">%f̰TSco}_?q;Pk 螣 px%ZeVDYhA3\ct!| `ցVй}Ԕ< ^X?{#|$/mM7йr4pҾ|J Jq=J5dz 6@hh%&3,.5DlY"%͢F+wh#E"Iӯ>v@B{.s|X?b`%`4r#0i3yn (mg^C >,IMuZ2_ǎKr7_l=,q>Q 9ֆJM@ vrIH{R}&}ʸ 8:h @\S&^4寥G2a]S=K7~:^Al嬴% Gr Sf@ ",G'ļk!&_Lb(_$Io8LBB]jDrh3ɼҡu$*El8/+\8;Kz_ M\V1f| @Ù %"ߴ-A*$i&u/T 6Vu)<D!kɾmɷa k4lQ-߯ W'w5ɳ+u5b [C٦GF?%Vi/=5/sMV{Kp6h:wt 'u̒cC08d?"K..xm *|F#I薜<ʊ7jIv[bo g_g1W2EzoҡVYP+B'Ll?nzVHޤ^'J0*Rd>Q>nHc_>4&u"oRA ^@S]Rpϒ7 ] ӥsn<iFΗX8dOvr0_%F)ZiDžG`f(e% a gʺvXRiNr"#3ü tկdաO#z#Nʉ-ZNFB_IyNAbvQ~CьWod.=xŒ]3{@1ASUrmm7ה8X!s~`Fj!M؜j>tǞK8ņ_ ߇"xN]gyDy'A^!|H1U7u mK|ƲG#RY%Bp?k ɳ#0#-^{^nSD%6H6(qf2EYJzb/:ni T{ElnYW& <ܐ+I sD|PtŹPrL="T hf9YS0Pø|t5 J液tk zyG{C'.29Dt#m~/gU+YOt>jpn+`$AP YS#H$G| "%ѽGt¥ ?AB4;@#; (7Rj*(_3gA[ Q7GS6\ qŚ[h̲ۜ{R77?~[aK#eƛ`.òn(uf;]^>&'nJvd.|\Xj\?L޽|;1[(DGE{]r̤"vmD`.+I/2@;D&QBh)Cū:c LS]O;bY,Ƀ>D<)96^9u|#w+ƞ~<SC2c,coxݸFcgsJ TX dXd*a!4eF$&z6e%+C]2Qͮg.QHٱꬾ|Ѧ*I@M{Q'Pt|/ggh e)8p< ;/=XD^>*(|^ϝځ ;.ѕFwԾm_0W-ʛ;B&P$颣L[rN@DZ$Q#It)\Z(wó8/\yLHOIHg,tHfPҪfNtS@1hЕ^\ p|ue)e pn/cEpm rpP>Ž|aC|Y}mH**I/z7,%ҕLFZRf> 0EXIFMM*JR(iZHHРthemes/twentytwentyfour/assets/images/angular-roof.webp000064400000243774147176754540017621 0ustar00RIFFGWEBPVP8 G**>2G(  gld3V_=wVx}(?VܸkaNAt^ju3#ޗxS羾/'o c}Q# Gy?;_۷ߵ˘?W/D}_#O|/_uao&*r{̟۷/m _׏Ѻ^ճ~/C 5P&㫒kl9[K!-f{-g|S s܉0@-o}e"^X7<PEY68Nk+ H*+fcVv{wʽH5 Տ}u6r}!褶b͙6fX %H^ȑIӣSh[dd]qG7;k5FF >$%Ѻ5;/DS2BPeD4aڈMv2-l\7%q%im-(ݯJ0a"h:S"^-'tĺrEo/4Øav3n-t_vNmKRZK΂٨$ Nal:(xhax4-vb&Sa`_!g2Z@؝oZ[ ypu]L?^r=+VЎuєW-$ I8&`6 <`=oRѶ9zD*.1=[96`fKm8%ҶxBbYnӸǥ})"n_>0_NNRzTxEYGDUQG.ĚCÖ&=~,#b<>z: ܺ^?Ixg-P} /hB c&6nZ-r1'])FN.3dg9YUls|4r5 < x7q߼̧|[wG 9Imߟ K@7Jݹȩ3_40bdr#n m)o^RS=!U/Z!9FȒj1b)C); _IL9<Ƅ9oKo,зHKnȾyκtͣ.G Ϋ#j7]quɴh(؛H%.R5E0*y$\D#pL&Vۑ!zkW,l dG/e /djCΓg2t{l!i"ca453GNJWI;pHSղeCnAHuY$!VY/ہZcuktD'0,#L+:p_ }LQb4{WJxշDkF4A4>Gd{ jKco-o͒ovʉK7[Ϥ?`0)ߙy[D/OC-eD6 F9~fhWaz^<3L9 0Hm'Y۾D5˙y'6U1[j]D<q%\ע{: ȇGGê6$?b@H]>OFa0שh`h (CPz xfܿ7Ѿ{u?v( ٝ3ke ? 0j"h!h'q=b圱 bcP#Rfqq(Gh>UQKĀΤJmk:y{% b]ce:kf mJwBFqHAdi57z*3ҨgSq:"]X7LIXJ6CO^&Ꞓ*Uc_wpۜׯ‰r1 /ѱl+ѡp$`P.Qx/|ͩȡ8 a߶ׄ !{y1oT\Z*bk7*m$:7W0ESMWGZrZ /nt3glrEsYBΗfX쉆hf4DejN댣vR뽈N8oQgmܛ/+.j8e"AW+r㈑zJOcsAC| WJ6ߋk$ PvӖ#e(iZI>Ƿx" ҵ XSX> ):ךM§FwFJC pE}Qo^7?LF9Pb") 6oJ@MS xKb>pYEh].Jx[PB :['}qϠR9Avf ,u/409Ȗ;}9w½^fdy|dq_pU̖ Ӄ!S>:[ d.@ĚƁUdFRƁS?h8V`h99>o\Qى癿im}|tzAPo]&Wnʞ5mb^P%gq\CǐRPOϔ>~40=qle.Vӵkg@E[S:@;S ~~oAwAYwC&aj0&GYc,{rZҒw#t(EʼnRKq|R@hO"/O[ͪV~@hsD@? b׉qH36xx!St>71eJ- ?E2<n*ʶo0X[K -mOGЉcZJ%捼,5⪶~0:2 pKoqW_\G*=K43YJLGB<r{D3KfK`ȐG(!re)eju,b`g/hR譿2E!plgtoT߮JތҗZb({քb  '7zTz9mV"2k﹀tVplmf ԇm,)/j+!jm@4^87ǒ,&hnS(R ST(bQml `1_} Z̠Y'%+^G9%=~ ~D Xxu~r92S}6+P!V⴦P\ xDr7SD[bCqè`X֌%MhR3}+{r WPŽSD1{< >)X٘ -!!P :@VSA';~0؜bne)s S4z|*zC~Q[{pk>nN#KΩQ 6&Wl[XİέH'j؎ Z<]46U'NGtbɯ@!=U56sEt0ʪah(ݲNq^ê]V컗Ǒ =|ߋ_鍔RID[w ]A ҝ veZ&vs@8K$,ƩTQOqDYd2ȍ~.C~ŽM~(gm5m"=7S BH{2vzJy[Weh,Bh %Fi\_12]iLo3`|–"w@p rDѮo`¼qEsؓă.%LmL)ԗF|>@PlAK@4`ؤZy4 }: {ceLv b MUl \z{OE+0'y&:bW!O&%ZߪS^s;mTku n)=MdZ*8e_Mv 3"6p"޻?FEg8f_ƾJf#3Pg ,5KTN^3DZn,,Kug$qI |)\.3rcp&;WYYUh{[V# &>$1*MQ}u! ;xDsq!0djYSXڴO7ugMuYЩaGPB630̙I6~ݵĒR [r H%`G+jb'R[,WJEcI^ñj3hJeR:3Dy^Alv4LVJPIZާ.L4u" `!Pj K!LzAh鹲n6LߗFUILŀ,)[È/-% .1~C-U%i~i -)Xc9oipմ ]ܨ_ѭvе ,x` s r0͝e{hdhk9*\ﻏԁǸÂi ,!l+h!iWF$pT:e9]Dm(4ZEц9~8+tG-)xmJ S/VeUgd!@Гs*KH.@KxynU—8wRpesu?P^]1@Q裤TØ7Lz۬Ȯm+Z`̈/ \6df50)Ocο,E!!Qʎ~.x6 ׸[rۆVvd#JPD U26Idny;m!~8wDl!/01>Ul6Z -Ҡ%":!?X!ߔ}kyHJӧdEC!.5nUѤleJ>64i:g[獣bKO3"R.\qݻw*8.8 wPfel^ߡmK WxG {ۉװA`į$Jw"bRt)+VcN)Єb-4C&;.13Y A]@W Z=okYdD =ɣxyLv0nXǟ\6;s4( + .&IqN]k|u ÷̴q正Lr uM-FcYtu[$}NA@g}'< S@)TT؞&v!MEݏk*By b^vÓ@[Y#C \rDq#QjbYnV^;n802+#MFhǏA 3/%^ c$od&yIk0ТY5[= hL y,97UFu_XdHOULx*:@ĻE: E6 E+]Y6BEOhPSRK^)@ zj7u}͸='L êuAR<%yOa/VSџ}Pi̯>.R6""2=P0:>e `)[Q m=>' s w`_xԞA ,blmΞ6dTpV*Wj?:pLv-7s7a3(xrD8ϾȑRfݸM&ms /N[2h8\U|10{? i*,R$z,e8W8^?%o=@l u(^q\r!K aBx/i}yz.Maay;5}b9]흪tF 3{}OC6'֣loh8NM20gyZ'oQπ{_./ދ)tMEkm"ty,g.^m~ŭ!|g3I2R|RڡČmǴlYǘ,MmiO? 1/CL.7q5g~.*C0ͫ#$y^V'@UdIʭUgDM|b@h; VwR[CF"?ER;9p VgE79~ۣ$>֪m_!cn_Ei8Õ9J.*A*%'!|FNP܃C߯HHRGޔYU,ڔM+XSc_u!dV -U`d4C .UJXT+r=ě"wt\\mvkbY aK;xbQ36@do2amZ71QHt'^DHb *"="BhS忄܈e\䓆Kj]Qm'j;jeu ua@N-_]lDqUX\ HG:o߃Cyx~*B6sn +p3"fT15ziq\DTjM hNw!*Ut!]] 4_8Po6PNVf jѾmt+2 &7 VHR4j{H,:FRɽ.w^W ~\jRL#VDDヨDO?eKtת8j2o;4'^'6WR(75xmI43qT tc@կ F^05ǑrTX< Ru!+ySoCL)ajU2 ۑU_t_&3^_w$o z3G2{G\v5fb /}O[S;>Kv%gAs8W-dʟQřkjL]:2}vh#Ym`R BɞatFB¨H`76o΢&a$L孜՘.YZmM{ @꿟HDB 8Xba|(שRQTѮ@Տ}}:b&/g%:Gn;Ht kCIýd;Dք&U(KΓm--Ju*L G)!@K"~,7 ~z۶M5lXɶ˂IEI 51e+/8GfKNUk*KC?)D{O0PM9"W$$;Y̊f\m-YȳnYP%(&;SV%:H1_9Y}|vw-4r`Ɏ&0˙v.> |4qǹA5e#kIkH҇s.@Y$f[ޭgC{?"<åɷ h 6IYo÷]~ϦgKJX;vgmt&2!Kŷ^ [݅y&3. |6 `Εq<oKW$)Z4 \]_:WTX\"K ǶУZ3EBN{A3) v_n1FTv@\ܪ.] ϔnp$3@ߕ\񀎉)8ʸ[B>B4YXs5#p7^bR:E2x *?sFkp+Y g)bJ^pW,@HISrCmsmWKCg( *˟BۅR³T&۾B;NkqnG#K3d|p)C8l)ߒ({Ut,*a3:\0,WHgEeo7.ɑSFO]G[r iV^lqYi-@bw߽HD1c1^"x7ڭi'H&b挅KJK6:jqp&ֳ[@|~UpE ujck`*!D5 S sg'=9lc[c`H2;tcH_$ kk趞J[1px!(a;Unӓb:^Co( dac7 :xt'G#h@:_@]hyR̀~#8a* 3 j\hkv|]>Zݳeu+lQ mIԿgZ?>$+뢊PcAd7%Ze}tWM03e,$iW+f `{lbӜ1s:C:[VQV r0]OESg~τ=|T9%Przl]ux9RC9tnBךFֹczuGBw`ӓ^K~k_!{o, 1F-[Q:P٨cIrgt򁍝Н %R묋0X[JND}I4T!o.rcOKDٚ- ?UGKz2UZ'!Hq('xAW+]o{?m8@}֞lDjBՒFmZ&݌V܋ȽUArեKnA @{9 ~\Xhu' %@z.[F+EOUr[`=l%2wh0UL3h?dѷd˞\?^Ot3qaCE˱38M>O 6~Տ_<+X J8bj"R@?y `7uu'enpdng>e]ӅqN ra&[TqhO3R 1-+fQ35=g70yo`k+EJMXf粲Pmn*]GE]UŐR-<0=EqHvsgəeB:_ህ 6w{,6s *#͚aA׋^'Wk1PE%[Rϯ]ڌrVtV T[+Ԇ#M60[vJAB+L=Nx?"%gd#)dl+VBc1;*2MͤYkXl?E^zv:3CPFG}0OGg솯5W493Kkĩ?࿖PK H\~ׄ9CMunԖ}.t-Xȿ\ oںt-/+Ćq#?y\co_3b{8q1Jv㷚0F2zv*;&PnvWoNnX'$q; Vet Gf<̹̰Wvq$>/,Ni:"UʣP;2ᮖ A9,✆/ ʪ'5#GgcB33$4.] *mÔ|xjr:ɌdjKk mW}qhL\[1Ez.5VN %`>L?,wg^.5, yl!f:~U5 2WT;<ȔDM![ClyGb9.󎓊 r*nwvFv^[&Q qB~w4rţ!1Q!yI1xn2PiCwe6 :`g BEط쪧kʆrK2O-Ldڳ 8/ߜ`0gxj!KIյ,!bm-7W"PQ]*gݯ8pxn: 6XRMk\c} (c?}- 1=93ICMK]dkA#= 5c;ŕSsJ%>nF,(cn?/)6hzц`vB?"$kq6oDRlu L~mII.~/QII\]wqmewxQ @>h٫k-=. ,r\ycN9 M0ِU ,hEU>'FOS6U'Cv|3G[%8fAk'WW9#6jX)Ƅμq}SŮ@ꢜ`JuΕU$éL c|+8OwSUJLE!!XҼﮟA;!`Υ<\W g:F#tqGQ*+X?1 p>u=;|/޼O3Ԯf{[ ٳTאgFm hGJۭZy}AhA*18`L'Dy"TyTIv67TOd8D>Xo 5<<`ad}@(k `CWЛ c4 Vm]:Go*eBдvRJkRnwm}lT#~b~5jF Ƀ4Kzj3ׁ7)cm!Q+^k 1WU6U 9.TбpS 0[2ayN]2ϙN(-semNLû|o~MmUTʯH 5@6ٵD5n6i|ة`Ќ0X)pWQAZvgB벪pAI _: VvH݃y-lV2WcfEf%Usa揊9otow7o#0q/rd3fH\b@&gǪ`)HI 7OtX_{d?\QDgh"Lw b%2=*7GepF&mQ5dӒXQTxdPDsj\xOj`ai+b9,i։t{׹Г Im$/o20wP?\A%U>_=*XkrwaNш4Y\J ano;!\'KΣA$<ӧy-Uƺ֤W5^9Ӭ77EG-x%΄y2Q )x mJgg@Mdv00x#3]#͠S SMe&$)E1X+f.$uyQB˖*-b R+b4 ?` bLx9rs¿bGUOf;Nlˬɏ@aC(n eX\k7ɐaZy+ϓb+TSϫVjY]&ڵ' cd;-o+FGyj(Vy3 8>J`H."{YJ*R9C-6Τx xl9PO(oelhAle0p#8ivFGG~~lK$,M!B6d`8`w&q?PjOZxtϢ؊I|"wx`DLg2#ԗLh<4_GAtA7.QLXŧku(IAՍC,(ެRTJ,:~1$][5R;几`p?So<*5|lY8 })=̂QmnzDɧx39L}1k%aЎP69TKgtTQe @8o u({[^tKx H`:wg"R`.2I 0 wnrSߒBt}$!< Ki" HhTd0?9BLtb% \NM1j H<*Bqb>=RΠIZp%AB; =E*Mt@}uR-dF9f23+f@=a,iIp ,WH˯Q]A$aץπ|47k)Q@ Z0%pw{T U ڼ`%+nkDȱ56e*&rsЧr)|ֳ cn~Ct wOف$lBGHY?a_`ƌFhjr2w9 !Wg'! ZY e(7 jdonGuZף8( X2a<1i1cO.J Q3"\t-fīXHfSr6"PMfbe7?.ŀ&ECz\DX|X]pܮ#&20!n@(,"%=,JUJ3\:H Q:p/("]f\k.a>XϰOa P- Okk2 hE':Z_5gʚ_J =  HuBس(4 呣biogLAmW5 ҠT0PC=C1=H\&! Bּ;kP{|wɚ1R tۄ*d@AT.cߍ3WSwwX D؞|h,ڊI^ BUqJ\(0B7k;8r`:`̠O,"( Z\+kMe<ǜ\k%q?pɆ%~@A>GɊ"*c!/Ms\^}~ܕTi9kIRLi5/8l 9D,)IO[i M̅X|bFY%͟"eC0`J܂(줈!/C(qQ& e$ž& 4k-|{SÎq*BqR/u㚖uHd>go;Qr< *T& (Y[s: @1ZȥNɡv'᡾C1-!_sgt,l᫤R+PʂM+eI:q:>~lˌ7Ay>ךa2b@U P4ullyʟDtEH- PmY ~?j6g\"Bv-?^6G/b/hmm@~`D(% >E1]L*fGzW0+8 ozmCΒ0G,7C!RRUScXV!­׎T#Df٤-5&m,R&_. Cw[v=zGpP"#':o6u: ʃ9{c~+(a:^9w@ߤ?I\}jivMMHŲ_iri*"dd퍲ɡd)6RYPwf˾n/+E;y׿\F~(E3QO:x|o;YyyB6\lYB"M7)_tF&b?uN)gS1h KE^M YV[bS;> wpwM^DȦ+e޵eL[$`d0.Ld,['` @-+Ë%y"W^2.Sg)L˦Plb.hE҅?1A\\yFM)ƥ&G@8 u@ {1.9m? ~%j'S0[M"񗛈DBʢiӉG9r?S<;kazȨZ X# &|<$ n {?aקw*{ JD/Y1@?9GuhոfQ}FmIWh8b%=t6=q:o5*:9\)#Šqdnkelt|N xj,yF4!HKvioeMy֧ -y|- fзJu#8B Z]F5`ϓoaGS.!nJYZێ C ;k|淢T\xr3P 4C+eEdVElKthArog3v^k$hXDџ-@Q-40xDFS+ Z7u >"r~ǥdv"@@<4`*S,&|#W;S43j+  !_J} D'<: C#~-ہ ҖWT˫Ɣ )>5vLv17maJV$v/Ɲ!*FӮbY2`+ iͨvE-롍EZ&hHr3`DZd]r$i(՝6]܋ =W)Bܰс !K̇r>vН6ؓ'֜`D3oՋDC=AMrfy?/m/񢖣~jٱ: }A\y%l2M]c"yZnInlfزoEBzʭ'OfRU5g8_l㖱XS 0u(B*tN au1ߴ )zKC7?՚ @)]w@" `r};:]ҳV[,"'Tkzo^GZj蟂bZS,PW4!"T`HF@@GljƀC_sUp&-];]g JS"+0ܴ6pB _PEwK&δ*xxNHҔpj]uUtЧ̛ G+6R U1KSp/U4b.㝎0 R}!.'0\\GgI}E8D3 q!\az|$" Y(K{K3}n2MާQPqVUYH^I6M0 [Ş%*yg*Ug^;nЁA)xNk#ZT&~ M2#İH|Zﴐrn'N2,_?Ʌeuv~G 6yIu/:-l0FͻYUtXXbSatYjUdۯ)9AM~Vl–{`F|3L]Pqm*K"J&&꺤l"W㈀]! )ڃ BfK~ s- pJELvFQ%1Ct6: uGI[p]wO [1'0u mH h9.OLNVb}"$uTUQ/WI)cuv۸A^P"FRj6 Ƶt/T5\1vNMe]A>7?@뾫w\w F6@T5BےCh{-17 CD+B?zV20`>]ߛ;R֏z$ vfm\> TjLo*;7*n:qsÞmFjٴ%ݬ=?7@/r}b<9<*4@_L)/e}/r>z`~ؼs-p,^% م)4کE V8W߀?0GĻ! sQLJ֌䎗YNJLϲ0mzɑXW; KO&~ CYZ&$tH )7 "撛$>>gco6z{`Dh9%D!_g 0\}Ig .RcX<髼Rīcv\*Ę"I.7,(#/5 @-kI5ZpwAI*P;+Xeq,0]HBexyŒ9 5;x^²ώUq(gi+;H 1XmBY(3Фi<"elm)/A}sk='y&}Jw\[5½c'y(,/*dy왋AGb dԫMxGY["gպC`&ZӖ,~yry7~\I^,;_{`ۧ8?$rS㻥p) JC3ъo'}OLIYڙ⫶J(9qmf/4{HvQWjؙf!r)_⑐(kc=>T (zS qꂈZAVX 76fҌi{K=cvir'bˋɝ0=x|l{ԭBO҇B 3FTwcz;܊~2ġ~RW) ẼVA $o-j_ 'ndJN.`w,I7IXSnAIl-(lAiv|D0ȫB XHt ]R}o 9Znɤ7H 8N!=*[]U`!mYDG{Eװk:-Y( !|jSfC~Ǻc'V LR+T #Wy P%$ْUxMZt͸ ~Z$eå.Pg@C<ɪ❕+] {h -2#ݟsٛ-O7` (eA_PK?"-Sg%ݽB=Iw-eRDY檐"QvNkj$o-#Y\NU>㈥ ߴuq>%`j7]eh[ WsXl MG3? E>g1%eD&qq$h#N+M"¡i K.(BIFZz5%.6Bf6)x8'?[ÎH3L dVU,Ea1IWRFe+R Ԍ! u P5BZC) OZOU,#_BT2 ´\a}a?|9IgUC9:$#T+ceo. 12IuDy}f)wou"D'IPB4ZyI•f8Wڥm#,V۸V$=[lv(;g_,oKe5L9-\[wț➲:M|[FfL?$㞁t2aߥ5|3D;Ї! eťvWkXbr϶MuV+/Jyؔp}$3KmS1 AmkUڔcB|pF:t?~o˅1_/F(5Li,. L'c߰W(ڦF! x`H+<% aǡZ3Vd_mx/; 5kZ9[ F4K e_%OiYR`| Nk[SЗ;2 >h;>|xN u[*|A @޼𮺒zMMcZG DLĻz)h6vkTLxvE-qƴnu\/)o%I aeY}V y d4i-1xQ hsbBPyQ{9IUvXQ' nXrs - ;pIgV ԅ.$]iKmNxZcvDmX %1!N/!{Scb7墳*z/h¨ d䣕M"RHϑFJǵ@D}CHZ$L Ia@1ϹEZ@ 72m[lCHXPMwE!ι=XU)k-Zi#M W) ċ[0Oꡟe+l0Voro s֮^Է/; |=sW31Pqjԡ+P=Q?]ؓ grX)/"_ZU'yg⛴#|J!qH+19'uݨo<6J^Z z1uċ鎑^ex{f'*~A2&KW]TK^ʼ6pM`/Cdۗa"8Z΅}-[NZԸ`}6L*oh L_mjgx]S6gwKOx ;Nn8%kFDaۺx r-=H+45#H[#A !>Sݤ(nQYVOz`=j#$l?^<-!V`]o؏B]__ԤDi|E,P v67h=DShV9m*i7` 3K丹րA82C^%ܣp<%Q7 $'2>G #&j Г^¯Rg 6@ToNXKܾVf,N 22߫E2 G , 1c^ d@2JERp&r8+6<32$@:/-%/gЊi$`T'kΛn̈́oƺ4 uG7k> #u^`C9~ S <7)Q|[ TfIDhANTc+݀x[>RaٹF$&^b{‚yc{[0v>oTkwBB VɁ[̼&C/ēk{l6T\*\2峋4ʜ t\bJ|ʢ V*5#pGd'~IK/!.I\qs熵k$:wsX,'oz܊m"qe1ɘ60,R(*:ɲp_<#k̗؜+e !g U&8n;UI~Qќcq@#O7(hķt͇"$yJSJKQ%M"j30kkV(=t>+Ά/* ++Y+Nka>KA|k&@ ]6@cy$k65ԸP<24l|MPL8pJc{cWIdjK@Ky; C  %[is80) awm\b|ĪyglS^Y&\fߘ{Z"WӾ$IUdmUFF4|,WW2Y XmC"`;b! 5m~pmPnaX떇5"9:հ Hnx[%RhΓQCӸd$ቊ*W 9B!hǒ7̷)ݧ^ɂҍdɖ~xԓiЙgG*ҕ" >""!7ӵZ,g*i:2DyTLEsQ9ͦMż⹟c}tr{ 5^KeqV )%6' Ơt{\C"wr{&BH&cP-NrtNORN8=!H ׮!¢bm'B9{G@iG+EYMU!?_VH[d(7]Lur !*m qt0Ү@ǃ"3%{blElF>zaw-cu-^i<,9h p[ 0v`35tf#uFX #,]w2Bk\5ɏ `˪$kk^N|Yieט5>W:qZwmJܕ"]G%$7B74&&+bvdPW wZݞy=,6yG#@ ]V*c!xI6)/c><~3 lW՜!Cf~<꼊i&@8 qg)!b;L?V GShwp>[/Oj!tV}x^EP6W=ik&f}S녯;|mL6Õcy Qj LrJ҄^n̬kP;<^L }ǦU[ A.f+ƴ9t?V*HVH7䤇HR(Fş $RޠfAM!.J<@ >X\)ýjP0 !jؠQ>u;L拻 D_j .Cc$n k(ltT pj4Qa@*"EƲY6=w Y,4U$* fcɭ@6A9!UR8rW TXazyݧ4w(v.  cs.f$?%~)6 5HV(=θcYj_y{RVhBi1Jڢ#ZVk 43x^.Ԧqh^g^y%/F=ۓj֯~LU5eZ|,i3\ewd7Uqx$oֆ@irXjƊ&2Lb8/B4q׼Fks\xm8{A䡠u}oHZ}R׻RNE#F%siY փ\&Ɩi!ߎ*a$ ; 110}֒&l˓gh80RCWS,HY46_pk ZC IiFEol@'%]c3;YgeS$^ŘcU鴽@S3JGUn*L7 V`!-fIF&Ǭ~Эu5/?0ON)n'i#gعud)E$ȁH]!Cv\19lEC0qOKB2o_K{WBQ);8)v5hr_iTgO 2^"? ›Mk'X֖GBqAN6fLV9~餱mZq_N7NZ8YOuVfQ/ߞlJ)q<* ϧ"$J紝nh:gPCVLt:)f 9-L[Hy*&O>QDp_hCM" 5e֐G&7]؞j¹}y췵(+yKl8n W>wrrj&iH; 8*,.4w!b#N%,;2@_3Cu 5LiI+ڦo=^GϖliE:u朂P31A^nn5\}/k\-_Bqq_{̪6TbuKPyn9o+4JV6cBv ;)x]~`Ȉ2@' =PHG; FU[;"v kâZD{P]z>;EUHVw)h.ɦ_4$j| hY1sSت-")wbW/2Ւ^*[ /7]wP4]BI&XjQGݕV9EclJԀ&Iv+l*m F]V1Ri%$y2aRJ5ZA ZlיO%JM^CQ4-UTQd>һ:xV2/.M𿎌S0ײhj֗/[%C~3Zؽ XVֿ B/NM^ZMoFE]C()F5Z'$8¨U.vLF!Bs~5s`zւE|!_fk >V&l t7U>g{# *2UaP9P1$\{(ǵZj VKuo9i#CA0un@k쨡,;PU*t[>q-Ջe>j>L(@7؈D9< G+{j9V0'4߫wKitwG[=F-VJ#"B,Z@򯙛o lVh(*E[x5 4O0 s\7lSt? 1Bu18 ފ pˆRL'ep딐ہpd\'`RݞӺq\^/Y !>s ?g o_/g!e1fL ,wphDF0;m:Z~TvJ ̝?y Xb\*a;++/P8P)T6uKTD}K hZ[ù!j(02If:  eŦ֮SS9y㟪9yHpeE5fw6Ӵȩd{,a&sgrʡŒꀉL=jog\IȆ3:)PRjꝴ\xW&zʣBK 9-.`F1ՠL\tk5o/O %-;7S)5ւp?g^xDWGTEhoc LuKkw{ЀO}LPy4}i$n~S +<o ;Aj"8H*V/!mg ~يg |–rƶQdz3̠fR+ WؿFPG=$zڼFu# m^d"7IRXU:%8͆)F;>m98%:,4wb)~d3"UKu,ՍV.WIHg)Σկ!2.NKW2.vi7/ ȵ:6nr{ j'-Iv[_ DJfr"6勥 I^G/$݆gyh0 wã~ؑ='זUCpQ"GA?)|J{i4ʔn)5#.7UO@_ašcA!<,OhK %El/*H,aרc<;XyGMm}1U7L0 ϩ66~C9>#AdIjucE1̬j%Kq" &WVk߽J3b4b e4o:=[x)Tw\YR6Or o6X--K NmѴ;wk>?V_;I=Ky&i0u"׏pM0mS&r+Š5S|!M0eEh)[CPD/ p~fd:p<RRzv#] d3f$)|@ML ǯ狨e)HaŹ[6!#&lԩ ~! c£?uҪ@$m|P 3Yw?%3Q|k9T>ąeKˌOUg+=4Des/Jx)afjnPI;H}D -[؛-tYt?hwU +!n xò6 SHx Ujw,[\Z8:>j'L& K>";:3y ե{{u5I2&wUL~OiHRH(WE^L|íBq-٢tVl*'Q_+OQ<-:<8^>W/ƐGmi~ey'tQ󍟩q4=$i2Y+4h$:+HGlU3'npZE)˚'/,0Xg 6$ 𛧔v?~p'.[߳܇;`VǒKX'7q"m+RWaRsu[9i֐CVVr'ee6[#"K&^/4n^ٳlֆ^u`uعP&Tg2Er gSzRހ(VJyZIxaH%;]u˦iu6bk\E )|z#EeN:}VT|j3Pr0c>#8X'm3f箁l|zv=Fj/k+:~-BrJT[DYYMǽQEd]hs_( BQ33Abhƀ&d@]+l,%cy8N)pAO .PhuMfj5fn`nhC?! C]W၈W]Q{[R-D{IBN .ne|wZbX .FMfvED aӄj4%'?ro7lNM$ph:Oz/v0?7胮EIRiloF0r)e%k,i?p'H4WSE%Clsw9VQN{; NGegI5j#G}5!XJg^ɿ1+|QVIMҏ3j쁼<Ѵԓ:t!Y=N |,zݲbh(rKn8I%Yʥ('r>}EW|ː7\Fп햡>Ѿrg8A,v.w"t H'?$imLD5dzfvWz5/rtb9 &ݐbcAi ip(蒊0JW+`YǮP}{kW}H ~*4忣z[l&. z-9IߎESZ ?`뮔l |xAaGO $|R#D>@A:V|eIF24Ekl5Ui]7At_Ħ;h[x'YC"W9샼j ԬAOoRM~fqkj$ӕGۚdaIKFю]c䬹|g >+0I{3çu0io|\U,Il˄KGF;2լ^[ht&.|] oϪ|3(ǿ%0=JRϱ=e{.fF6x=92/~3ݑW+LMhTWQe>=Wd=Ҙo#L3'aQ }ۙ;s` CvPdMaz2mjgRyPivХi w_ T^߭7TZC Y +,'FZ^uM{<(8X({ɸץt ׶IQc{PD?gyZY"_ Xز @C2fvr:OT56lG-k!|CL0o~zHE݀;)iu+d ~_v3Ι6lGݓQ變+U roRFWjFvJN];( 3$f:E}! EveLa`ԜC,&F߽. /=}CEddx&Zc4f37r;) O3QmyWG1Ӧ->wcTqk 6 0V&6pEdm7z0CN>3`}0`$-f%9Ӏo~N"vTgm((1Sݜk^d1Tc3):uBu [Lh yOj6E. &5h{|*t'ѴQg'c }$WOIz7Bq^R\ׂڜu7#_h@>0R&\?K~\ uIcs6!PΜo5s@^ޒ@ml}&w0(Jdԡ`=cW0!Kː^rr>rrs^[ !G?pFK,x KQ)Z.`eڧR/hN~B. ~Ie_Cw^%S-چ[@nIL6')NXx'{yyQdP45")3$5`jvgF)_ݕ:ێ5J+-ܰIH+Y;y뤲c88O7֯fm~X98RbQz(Px%+;esT#H`ߜJ5 |I8) #jzCM`Bh$L]LY9fN"Z -7gD}l̃+8^uFByT۠թAz6ni1j];&^T\1kUel+ WPj@ qq fyeɪHY ,B6rRORGS!5<}`,e38Ag fL4<|iJ 76yYLw0eN'KitGu%47/h}Wyr-?6 |X.R^0}[KKtUTo|/nQ@ѭ $ `-eNLZx6Χ[jFho!$,hv0oAw\ڮΖC3vuLT0x0nلTg4ZlyU=7/[CgIsRLe„@z9mLv$ [<@$Sj(%N$rzW#VOZ `_V;֫_|' 躶o3D7WIu֌0 UԢe3fB5M]q չfl:* o1{jW(x1eL7BJfY<*9L s9Cf>b$leA s 8K*upbVBu E&?&psi۰p`w0U`Yd۱]#ផL6<*$вp5.gf VM(zzT6`)?=YI򭄈W/(5.%V-DTvs Ӑ[t9?b) "t9įث*Po6T!570~8.,~jF"يEj mFK@_q,:pRعe Z72~gs l~%U%C N"/*rg5B/<;02=^ W9x%?4ך:;_d,RJBoT^l;ѩM?`t%z`okiXM9qE>Vrz6|QSyRTc e`3 _(i~iZhrT e}f-ΤK0JA>"LJӖ"B agYĭ.bL֑+XCyq]`SJ2+_n ߘuV#+Ll@R8 TDCeU}"HݏF##>FZtZ 濾^{#t~}ݝL^ZZ "spU;V'yB!ݔ4쥵DJR1(r6Ynv(s?&;gԇ{ 1NS/sm֧)-OO7KϿKўU`hHFWbǗJjs+ 0:.[ Xn(TlS(ӝga u5! 7̣xc;p?B2Rk9, 5 (QSq^1p>fe|pf~k~2%j*TE M.В~3S tA~GT0;ӁjՏCf,x`_ LD:8F(Sfh,p{Fzk<ٮ[3F&!1 3OKV^1 SHX7'H1bU eG~d!5VUgHS!q#{m\^GI'B8 a$#MM&]i-nv?'^i<4)[5G$f3%+Y$Qh" ^=rw970`/+UIR8<~9XJ' 2FqݗP*~'a1ǶIsqXbC1 CQgG/ОvMXK$sDSIČ>➰rڎ ,.4K灲ЪuvY&}PHsKǵ9btK߽:@ϕ)2ߡҬ t"-}?ߵ B(d-<-iDj%ZjJ, q61a,5;̍! B78vPqmvYB2{'k~d&KkC-,!tom˜Ba{Ezdr`n=OhB`lkD9pǩ2ߊsCM Ԩ(b\5@z^ƷDn&e!lo|Txs?ki@m5ah-pMxrnݣXS, 'j/ɜCO h8Oq_C{҃9> X?/~uAq!{U] (B`X:LCk;a NN7gZ}FG v#X]e=qv(\RV,G !Z9Z"A mC/kd itt" O2?0*t |K,=aj3Ļ,4kT UP*$WZCJEm& gQpiasf3䌃yUt*T;е`QE/7x&m$Sb;cף Z `)7#uG|6zI[؆);ףᔥFC:R}?7J80s^*aM[^7rOGNdZvk TߧYg_G+3dm@AS8Fm@%>HypFC_.?u Ky;86WS?=s6e}kCg=tZEͬ\KCԠ <IL2D /"fc@aDiȗN֦-=DO4|ڣv2j$.S<m<X GRj #E`=\[dzy6JiM15A)z@k9*-+R^**)z7Cժ/M #+EI]s8M`3n>{˚k_C[_EPֻ;p@%lk`__ < LG+CfI* g@9}Hb(?Y-E,Ef;Ehdc32@Nr'54=ۇ'F Zs:,v۲LguO[FBͣgx(j#sKھ#*]]aZSVHA}L| 054QQ%TXkIENX9 ѾVX^"6?_ڃg <;NYy]Y(>yDB~+ 8Go"Uƚ.܁!-ӏÓ!m&Ą1^XJۯ4Pvݣ$7ۯi_M~zR@](ٮO=oc[5֋: .Mҟj#:u0G{@žss'38V:F4ÛXo4Z3|=g$Fwޞ7 y4Ⱑp`=߃¨  EhIU&mOd`m@}l mEu˰Vl48b/veI堍 ^cEy0+g(MFu9m . D֗a Qwځݥw3Zh)@x+(gT줛!gԐ,Aio!W% s2tSviZ|TFAbnT?gXoiWlCO=4f*P^c%C+ c8|l<>N}ErTMi]5;lcو=é\$ɶސO #:VhnǖfW+P&t(b*"!fP;>zEndz{sh⧝mw #268j騯$ZG/: xWf^5橾Jggf<@^,$" 6өXO07ԏxa|UOŨJC5iTbF@;PϲbUH&^;&XB}3ߪ3?:z ̒USS 5=㚟DJP^:(Jq;]2..**pxƦ'pB"yj9H0]?:mp4HGpZ vUE5LOZʶ_&NZFH˯_lRSG ]:~>hP=v3_~s_MWPjb_:,4^;JcI׿!McV>vт|7([KSǹ^evaw vm9Lro|^y!}"6 eDC7W.u9en yФ-MjB/T4dT^9d⸅s^%x4ih=T(=%F])Bmԙd,䈍˛x"L<;_r-$ѧ(@j4hۯ:Pm)ZO䳻eAL$+E6aL f+ ?mBC(9=Wf= BP $+97հ*ЕAuS}!w SoG<^ڟ~aB7*C MG()IZΚtoZ-3co0n64f Aҥ6eaܓP@ JoP0U:u%C.\v|ZugGĎ')(3$EN92?[PA-C0h 橊K󓸨")iV7?>繈EUG 11C,ko#09r`1? l vٖhqőNa-Ɍ`fڊ,A~7=b a209QBF] ^k#IS ΎZ6BkkN]3Rv^&cd#^6b9q @T'P[6 %U]i e ԈIՓ%ݝpyFUqP קG*X"6 l@~oP*S0vg|mΐFe97w5Y,qxk'wr {xʃ4LIdI.~==}^;E#oַ # A>PAvgBFk w~&zm:w!ciȵeC֠D*/ՇS)](pѾ@8eg9&}ye|NՍUK6Ss9m٢NJHᚗ2xksYŵo]~"xMrMo |FQp|LfaPiFUNi_G asvL:pp)ԦUl-ҹiq-NQam3|ӀX5cPK;PUn^i_Ee^I<2}k&ϖi+ GRZ)(`,d[; Dϩ3|2dQЙ }X.&Vt˫VswƚQLI5NơY3TE"7%m'Vkz*}r2-k!~-pYyTXYԗz]ro\GDw ӈgZ:SkY]>wvXSMT$|Zn6OkE0f1*ΉL{F#1<-=n@CfiQz E*],R"e8WkXN cSa{I>b RS LT#vRI6.;iϦfx% {r*[,Fzk<g:B"t߻kv}}`0ј?Qfn}}a?dU& U}^1:Ug0RK)ÎI5`Yxtbx OCy= =k ̜XZ^LjjgFw+_s?=]n%H9k2C;!I|(@e߬殺^T{oB'T.zp-i)dê_ʤ7ߓagՔ),kl!fXȪxhnjߠ4zOՉڝ@@u9G!K`$,"Ҭ_74b,qhViWnb,]b9KfN'J[j$2/.ϋH*plP)d2̆54VBNRL z6C, \b6\"xBZKa0<4#^ZT4G 6B-lK$h+"YזQL2>qaI)^RLm,Lx,k@xvenx?ᢦpG2[qovMc|_nF$ݿ|bt0hS)5j|? M{, G E!7|pexTF7k'+ew b[ ǻ ëMonRWfT A:@f+?ې$2 @$e} ;|TKٟtQhU BOKaϔfBkn0*459͚DQN(.^҇aWҲNY"Xdax̳kX?vP=SrֳETr  a6"&vǓ (@%%VDeߛ6NLѭ Jum,n+djG+Y8 qY* < !W2Rw--KeqTeOo"&lMۻcmYHƆ DYץ( Ucl#7;5ELXe@4M@Rw 6 _KA4.|_ wU]-!.-WVd3[W=%]#{J\\"! dĽېFVaJN0<|PsXHoSXknUUjMͥv`G^ST{"2GU dI'Nakn.A{{W=)/>LQ>=1[|LJLk6uvPܐ?ǚFvtNU@xlQ<ȜRD4ŏ9Im`b`M-g6KbaԾc37{;N|h` ̌0Zg^7@w>>s*ִC$.hj!g_JsL pB +3v8_U{+q̽'0dp'*d.Y(b)R6h.ҧb^>C0Splsg>վDaNPPFO0-`{Z[\Y.~LXʪm0 9)5 JJqO @Ncj>WƅoܞHUNgp_>+O>7ϫ~7;:&kqG\),_c*<\E= yL9\K?uY+gFyؔjk)\ yark"0|;ڌsqg0ϤER]`>̏IMe/u;^=2+e&As56͞nzYL !0 c\xG9x}7N"SLU3)R-yi7p@iD23LN4y(oͫ E3[5KCK߃"Y,_-&my3?JѐkrKu@udۄMpOQ lJf>%vEQAba€G*k}!$rOV;oo/Kn7͂Sh3RS3}xUTNȎ{siu_Uvb$Xbsʫ5Kne!\'SV1o\* 5eկN1+]&'F=#2f5t ԡs#N#~1ꉛT;蹷4v@l&3Y,*h\Ħ?lu|:QΏ38p3%x}S4<5+ZLnu:mt5cSzszc%1|kT\OOù52Ո*Wk(i̫&/ZݻMfC5oCQkU)P&E *>ܹ=?#2VmgBLϻp#$VRvqmIX'“Z~;]Jg8ሼް1+Ɇ&k~C4iՓQF>NKѤ2ɇwwA)1oUaE"AfLњpx|ZIԁӪd{9Ql͠'t7mzT׋b( "Ҽ{{ u>Ab\ $^~4.݉]b#>.B~\&iQBL G?to6U9YH('$j?o2րN͘R]壘w^ -_5H4a%cǟ+$Ek 'UBB"J'vI癔Mqh*%]LΜhR.LPMU˒Fi$qC$ U9`mYGW9T'JM;H^ɴ!)U|"KdV8&h:K׿(}/Kzyg_;ɕzL,[+)km< ?T}"ߔa!$4ռߴ&wD IЌgǰX832 t3輝ȱNYA4;Y✓@(+ɵq _و݄ȜG(]yx-) BT,DcѝȐ%}BHV6.z= 5iV#?#(RhRX ^_*;flh"Hs ^=V0+i.I(%iqh| gD_W@_u^p ՛E<"_%G~$ ik ȜG1Zu˺,/-#ZXgսZM zPz.P~t ƈK0KqK#`3E#{["5  f7 K^a!~I&H*ˣUI/L,t9?[l_ [|Tm| G]3bg⺨_5=wh;mW>~? 3& \5{N a#RU4N%L睸thOVOzi{I rh兯^:CyBJruj0=b%~*<$ o+ELxZ/!"_84$Ht,饔 ΋s8)x`cuXEv\iL`ѣ[qC{V=>b㷹:ⓨo=1V7thx [zю1^@ . mp(p{kl$PGVVy_wA-{3cR^`].g0LQ6@A6ɽBuqd*XfՈH^lKz@fǔ$-(F)}9_a&4O h;Fp(ϪntJFh2ѧy &Ɖpy$H*۟kEuQ-C|õ(`.}8`^M\rS}L pNX]E|zmy=7bhLFV˥D D%uRz:nG.`*\zC4hHvX&p+ G@L^voBiԐmx' +-O8?_1` 96}8,e*}\; 'N1%3!vFZo~  +𡷼{6l20)廢/5GvHl Q[70aLQ dqýDx|$CGHQg0sWCR >_k"Y:H:iuW,=F}g:.a=hR۽c2:`zdtz^4tۈ-ևVN&y;H* +j;xԧ:t %Eͳ*.aS.ulBQ)l.'2ن]Jœ2\5tje"tQ6leQ`uWP7B~rc߾o?SgEw LK!LVu$Zfˇ#řQp>?~k&.+? ol~8 TzˌC# њC"D#y vQĔ3ؒ';w[3ᥞѮb$eLb;8T8⍡~5co8u׺x˂"״*h^\)!J;O\2CFtkW!dm ?܄:lg \Cf˅%0,rQ^l@f9u !@jG'+-S5hY4yQ6@}!8GJeVex}  5ϻy/+&X{AԲABZdR0j4+8 ,<,`Xv˪hU`zzO\@&EH`Ȟ8^CsfuE0~-L/<:Ϸ߈]8_$-ZդID]kBE*՞bHmF.PVK0Ҕ -8Km\pHb?<āTF^tbL_\S'YCVptiJcCc z(xm$CnSg k!tfFR;-`s9.)҄0iݘ;@gҮǎΠ9/hz1}iw1=8Q?YGޥ'Dp}pmlU;7kfJ{6zjS|@s0B^"QlJ[+c:2,,rOѱ$2EBFjgC$ ('__%.jK$?UꉣT.^Z v{Wv ,6 6$`in<&VBw;TixQVi;J؄Et?v;,Jtxv 80ve_/ =V) &D6p xZ$SiV)u8R,4\"p^j1jeR7sE͒iT?ڤTQEzJa3f+ȑz:G2 !,)pbr!dwu*B'yJ(@rף8 7H4R6E-#=~J#.,-t.=*h=;2ft!3jJ'QH>ɢAD`,n:ad YfŅC dbˁ@)HTjjnHVjٸ"6?M #b YXyVNgIR!C5hF3X%]}ƹKKWiz#[y9: =95Pjyu:ji⹩ g =!Noޥ߷CEFe#vuSc9~b<7`0Ses@Bk"xP鼮jPwnLHzvqO9_uR;O 9)+x |ћSЎ?϶^}~.r(lz;!tiN(ѡCȆPv ?ُT)M+$I27$PX@0(e! |0[3sIf-'9ZJp*q_OEHqdTK1`Sa>5Y\ܴz5T{o?_66#6*˟k ӽ!ru ׾@K~UePuywgDkp/ϩAQLa0. |CCM1wt-f!X>!7 9 _9(!xj)L:ogk%滁PXTTWrO"XOjpImjN!Jtâ.()*FPk?˖w w?fgc@6Oz]5h|q<Ƞy]7C}jSY!eR`PB׬mi®Ӂ+xNy"Wf9xw󑛽)c'9 p,0h, #L(WVi{yUӲamWy_&0muݶS-cosbkIOubķMtzzLI Z:Z-gĤc!Wutu7>^"uŐ0+m$!թiPdXz }w& o !Q J(6:LNT6^@x0\1cOR^#F=ע+z`e`I/ORF]t) Q.Eq d?=}OǤH%S%?1E/7h척Z;>TPs^uh}tvguN+z~&n8bGYzOk!9$Lc=F،2Q;%xZA[lg1~7~CZzh*~kbaGiًbCFWp` e`.&RJ8kF8Q 5RsiR_ 9z} θpH -!xHqf50:rA[e UŒM]qlk*=($ǔaՒФ#4;GspSOUM zcL8^gEӰz9毙.Mp`pL㴐Ba¤]˽Zӄ^#I@Y.l\pn\!]UCh<Č\ySe( RW-x2Mk?2'z" DiCrɌvpL񽲩$I`QU櫟\59fH+N#Q]񬽪x?zW^,:bطr(I_RT,k!y,Zܞ{RwV $ ė~A:N.mb2~KϾwl\m՗noKӐp!k斝wJ ZS¡MqS0S6߹Ѣ76hR;3 VQ r5(4E.[}٣n=ߥJv 5Cfy#Ӿ*.N%.y `nJ=Y<2=/N-=ȗ#~yos\m;W͞ۻOj_wi\ eI*^e֝O9}1:gY;IovVGIi@iwANӎ‘ĎLj5=$$*m*)Pivl 6KmPdd+a[_ 4=!P?U9'^ӵ8 ]"BYtN4iEd0z~91ۋɀ59 ^cW DmiM @Ri g~Oe jA~IWY#GUae4iwdL9 budX6AchnkJ0fxv%LY)fǷ5:Z~;jo&w\t#%n)2` ,arQ⋊ny `~jy=1~w:\̪P]QOX  3]6?>|Kmjk<Ġqu 9:%:;` l*Q S`|Z]N׈_ֈ^'觌^݁LxXޖbÛeY D 4BJC~98xy oП#*(S?(_`k2AC=\oC7=d9a&]6dȹ_ŪAiT" 6鹙_n#غ`sb}ooaJ:g.åq3RC0[5>tEESlL阪T^{)骪FvqFФiX*{QrZ:Y a@!J?∕v[wZ=/ ]>.~\,  z3j=4 FzKXt(\ Ud}?j{<=v{Ϯb1g0?u[B>aB;ScWvg]HeQ}ISX~[Wԓ䥱5v0kJHHY MkL~#% get;]kF i@Fv'[e wXwف|) }Y͆ːtY\ /gs^Gd?7h1G>NXZP Un+Q0zV2^r뼗 }E]*U+F:2jE">=y/?pڤsDLmx&yS b33>AY#" ѿf.L0Y ?= WܒF"`ue߽E7l5!?3N t!?%-܋`Nz5 dAZP!W<)~j}0[\TΐeB+عHK MzF"v҅cz"PM~`mVAn!iBC%| !yY0A, x N$H TkcUiB*WIo_/0j \hMh(B;专j\{wҲ<9Z$TWY"Tas͍V7uR4H2uąDIԛ H0‡[.8]TvS?ECѬڼ=XB)z:zBXt69FBMkj|>N2p_zuI}X).˪ 0_X^}5<]) GUʦ{kxBbD[l @tJ8쨕Tz}J&}5Uw"7@_dK9aasՄU6pw Ig5eSDs ."ݶ%t:'CfAKe?3Vg٩_+(ʌu؛ gVV]D*&pE핞 57hmh;VRTBpň .'Q9L[*hN>e.kjbg7?i b7+ _aeAg?btH+U; |1Rd34$AWu(36q9d4?)LMomsv)CI٧T?cբw'rK~7Xl9 XOkc: f-V7@$iփtE?lQㄾo`9u8NT 6@|4A=lJ?&-U{T4;T]Px>myI@M6yNȳY]%wtiyHK1- ɀ#`cX $f )7gaۭ7WݨNS4Pт9ǕtojBTn$'=&R3xj{.Ph Zq.n`ME@Eon gMLKוǙhssm6}qZ{4q`q俾M4uԩK].:T6tPkPD۴7;K6+tD(ྷ>8 Z'q" oy#|>Ѻ׀dαF , ;ҾHiP$]^xsxg'5fZv[sIc%ll m BdȚ( AIV- ZFd+ÈLGӁ9o*b]ڈ2Wr;v+M"hyĢKڞ)/u,Ai;Z'3,1P4fwM2I/խĖ8ڼeW Ba~ZEKsEfFaSEɇ (p5[ٝt Èh 9Ee{< ΜfHkc1tlo'{DK .dFZ\7 86)\TO=)*UkrN@~H3lT &#2g; *P݉ԩi|o`a"j|,m7WU;x·w)׻<#d'Ҏ?Gz[t?V- 1CkԲ8 ̊:: uZ ,bS$*A^z%Z3=e/vmɩ&&f5R)_~ca~0vgq74qOc&_Yƒc޼#8k ƒ1qN"EsLi /Ev"L<E좤ce< /H$,W~T\]񞔑-䦣Q>@gdV Ũ m\@+QzQ_V ןDŽhٶ0 8mFMeNG6ԧO|mIg1;]A\s-U3L8 rO=u> mD_uңH ԯ#ܫI+85EQ&>ꟍ{ٞM,o٫ 29c\ 24.>ARK*X{F q14q53+I L:hqF?8]g|ȹ.62L^rH=+l-9e{׏G=;(kdS)& L$Mt I"G2znuȧU)({T!Y)Ff\/6/"p#qDGAϻ >{S'aՌ#\!]п0C9]ѝwOpz)wHR 4T83k)3MвaoPaPNqxOcv+p cw;1Hqoł[:9-c F7uAA[cC%uw\ I2= > 9 N7%Dm Ȩ(L#MlEӊw κfyQ7%f VL2~~4yU5R0B!Ǧΰ vt VlWzO-v?~ARyX{–K̀"&!v8us Ft4A 1!פ50VRwx>ࠧ\EJ/d/u9-!a$7?AGb[ (-gYYdTĶM]麡SyHgb~UmtɒgyS O!>tF^޾lbfSۥdUw  ޖ/du!i^=\𭚕lOfZvҍVrWnAA3؜-4@Ky_ K))>Y" 4P˄h:Q5ӯјǔcQbXb0QX%v~;̃P "½f4FmHw!O׾S뮁ޠе#w! ~|8\Afڀ|瞍r-ym|*JxW (wu1OBH{qy留/4 Mq^ga\xIPʅDi:rFh8hcgS5 OLFJ-Ņ^&K2}gC3*~ vU d%q &;Iab.~GaNk%I6L2 vsBgs1g| 36}?}(k@D@Nt;;5^`<%%Ueewu큅VkT_krӠmu-%kE0W˼1ߍaĦ&g @L%X7 j{RLD*c}2YtQwF‘Y)u:*S9$?2Gd9!ֶ*KL))hU8~hzS4iTItp$2˨y2-Ɓ 86,a4!2kQ5!~i@%M0SY_foZXEw9*Qb '9#WV=-5 Pe̱p8Ml>]qmSV6EVdS6/ObD IQ5^wCphfݨ'^8|4 ~NĞRJ4i `rQV_;HZ?DS7o!l%ISވC)+ߜK'/Wfc~>r4tl咒R0N6ak:ʬ0 ^s'G1TE &Exu w)ڒ7(RPRH0٢BD hߨ_ٟ4qOVn+ukײۙT#W1V.m7Fk09~ّkσ*ڹ!@/x*e`23Ҁ$]tTk㔑β8a iģEjHu*I`,C(4vn'{е5Cω`ejՖ+*5+{%NRpc&#qU,p5+usE$d1B;&t/ pRAX-49~yBcoWe0\ҍq{VSJENٵF;ż4HHO/ +>W oՋ+mmx+LPzʙBI84e:~;.P5z,[ T{ fDqNTaX@UcgzQnԇEFg,&FӼe, 3rjd5 ]XxE}m0C̱rE50L / 0DY5`zJ$ 4qOM 3o.w80iEfȻlV:,$X Im>{%g9j; p'Q3 k?q4Y!pF;"iQPH|cgjxO*,[t&˵4FZtˬ$Mhg F>O֙;N^,:ʌsE9qqJ.C Gº%`6(b!|=ʷo@bR&Ċ?9Ja23ը`#vR(oSaC[h# y* :Y0\VEa;盧FإiT1M +f+2)'@;Q}?̔Q=aGRF&f~>WrE!<>[N:eEybj(JkJ}_KT6J(Tۦ F'qJ- ]Ck=O%.)pc$O eSUpP@ߙ)F2HB&U 'IQu(=q\h{*Gd#]`gԞAZ~}aSaN]%u/"-o_%f*H_P`Ũz8@-B3w8DO0| bwfV9vyI{9gCݗ%6V-ushu2_ԥI׮>vˇS֥V_]hSuƴY_㸌^PUUPU鸦_hg `ccx0}gY [>G߂5ʔu)4 MYsyNc,Y{z%9=Qk/o<]+?;x.=p8v 3Z{LIw`^o{P!6; + a̜LIt^<~LIA*{RTG'N^,Z~P`VWs!E Y-- Cr)'Tz*֊G3{p":=H&QX(nq^$0IVÑWS[8&ʲ%<?m'qч].ZEH>r& Xwlto30,/Ǎ)iXDYꔱc5}SL=Xf\.C)>T 7G"(".?ZZ՘R$ͺC5;%Q_"im`Βȑcu=0ϿaGR q+iA{* F٬a9o7C{$GPʞeB롻rQůR@P}`=9ZF 2h X cs dnTJAXU~m'F9" # ϙ'~3=T믗wQ_La*.pFhc0,&) ؖ:5yqC9pȍ(v6\.fV* iL@Krvy'X;*`sɱ{tKMͬVf/I "Gۨ"|zv|c}8VFU_Evnrm]*?_K{jplDxr@?Zrؚ\a X50+ʯ075t[#4v%D#U6T1& Sx׶ҲA\FeRphU v8m1 >%m[B~܁-^l[:*_}VNPZ^ H1m 5G0=O/@gS$0 PV-3CTk;oC!ՋJ,+(qz5|e/J >H(qt{(VgMP_T-,T+WHcoPA73$fZ~}Wnp4yђY#pYD'E5v#ƳDž; jZP"8m(r;: ֓Oa1ɉNK҉ vd7(qIW /;y6\kڱ狃jS|"Kn=/9+G4 \ES٬Gސ3:DAM2EZghudPJo +k~D/dJzd"-*7/G۟e1Cc}<,U4[0Ps4]( Wb8;k?i'$ml_i/.)[_sKR lX?)GN`ȹ3:9c-1Ra49>KBxM3h+>{Aq7;RyH<'6Wz)R=ӎzBIJKG{+;!զ0-[o~:LIe=*f̧%ݬqB3PźABu05H☫KgbqQ!y`*OOM Gjf_H=mjt#; X^IkxnMVFS.eӥy-`FB,M:O ޔ|\4^#[ٯƐ8htT֒#*Nz '$V5޿&+UتJ@op\dh"_AOd** \hY}Ԅ? J5u7t!dA՘ֿF''NXYvHe۶o$xˉ0ۛ!bbl WoY?Us.@60i+uؼȷʸ`Opĝ%|3"!> [H/Upʼ~z:K>$5@ ,}edԸ_xo̲a>bJ~i-Ftا2$O@,yhY &wj:Цh6D(ɱ C3D>}XƫV\אB7+n&ӬRd '@o$3FތزJ&rlK8cO,!ndp=d4_ H>_rqw#Z2x- )j=FΩ ]T1Et,@e(\|Ӳ$Z*he7#\QS~Xd6m9?n{7146X5hɡ_Nf~#p_5>dCw,lyXP̛6[rWL`e_FtA3kN1hO&Y/s MekՓ}ڿ|Ӕ9Yٔ^/|^uR?BM57|Z*#xo Ɯ,E: |͛`XcVUΆBo&먉wVIfƜt0|\q]\؈ qaBO2F2z^ӝ2_4aOl 잰 8M9_U~i5Lg)v;)6YOiM%")z8W^F}m U 6C(ѓ_8FJ!lyW9Xzcj 8!D/5!?бT Mm,$R6}7g`t8ؙgpMC9gi~VJ ٧ =.LO[b#L8mt%v5Ũb֥a`9G鏯4c^2&gji _kpOִ.qGYTA~66_HXT4-)Epl'E ɭhL8F˨wϤ>O1{X#}w <|n45G/er"iQw)tl˷v OζH1MHnGSM]1Gl.F$+t8Ã`kkV9v2a *FDdS}kZ˖qJ~<K9ɿrvke}p#Q]8 #;]b-љO3#(l6PS63{YIX\Qz+;0g s_/(\g8S 2/"3v[z\=+At4 ա^Z}+ [B6\8OW0]P-^~;W;'oD"w¦V9 8ԇ:?*2lv# ݈;dӵoႮ[<<vBP b&[KeBl&s,&SQNɌ0`]9 Q&~0zIP4o{AJ#"un\]yUfc{vF짗95WW{MͤSOޘ0?ڏ馼f |d*¢tq鿪߯ .9JErp1bҜ4KѢUsy]fvG+jן=o?խlHьݹti6#g- F&_9WkoQSOUF׮(\-6:f&޷i_h8ԓ$=)z1ɔmp^؎?#P: /v@<ߺ(5'dGK_+q6ܳbH{nxޓA'"La N?[UYڒ\$vuKrKK篿Q> &9\msYϾϷa UQ猢.$ A.w!q!}_z%:>y7ω/d( g7ap+^;-?ݑ7չb:f^|aUyL'Me6߰B2FwQS(23>ԅiSs.YL=ֵX4i+lxlǚyǍ˗ҁzfe^ iZ-+$nm0Vr֓$QdIV豮1{җL'd*/H/m}fo*jbrx^!Z3EDZ!ĭ5O:v-g!,Hw+ =dM2FS럽ݣ(81ڟ_pI-q8^mz~麚!~J7M'?WE[$" -6 GG:xvDkcyIWYTpݼo(?#KˀoLJ3Z`@cWe`،QnZWWj?\ K9vY%D|Aϊ͎:ٚԞ!1;e}$(ܻЅaLhע{~ >]ѧ7T¶wRE{x8qy٪ۣ(/̏xgUD}XmC\#!G/rPM,wZpV^p7=̭;iZ~_K9cML@l .8a+Z7lKA:W-I[ ,hR=-7ݐrO}٭ͷ,NN#_ҖRR([YzH]e9 ]/٢Qt:OUӘ_Ͷ|08EX[C'K2ٳўs[AZpXа?W0ԚzR^ qWOFH~/r4&%ɨGXJqEƩǝXVԇak%O(E㦓[l^|Ah?/ux)M˭&2a_'JaÊCu S:b#y`H,aOtruN[M_W1^Hp4ɭ*)LbI[5G.p0p h zG珂tMQf '87B!3,{=WP%ۗkW~tH`dPp2;TdS1GPPMWGpu* iV1qk0G)dI Gdh~=}{LE)5FVw6}1, bey͌ Na_yd<`WEEFTpu6L%{ٜ/ɾ ^u$IkTiۨ&3'hM9Wk [jiܝ>ֽglxxٟ*0{̬\u|to:02>Vu?[_KD@ 6#@8Q2DE5!ڝ10f X$ѡ[Z$Z|/j\{Xha5pd'm^Aվ'q?:8%i 7j02O9"&Aܹ<ؗsv׊V>¥d著(ӪPgs4B+v_n|P2ݪXdSEf{ho똰6 fHX:^G~T^ie9u>IK:Ϫ\p& ʳu11i؎ØZ E÷N" l*jϞ|@|* ;;\Ӹׇcqt')Y3k] DX.9L"b5dkӵ}3 ~0 A_EK^ ._66Ss=-9S#;oH'^4,fKCuyte?+fYe=X'זYā]#oP1 dZ;w dg4#KuBZc4[_Y x7dX.M$긻Euf sUo,-hH}/:rh$,<N><.bTNv ZZ^A,o)inW $:{w&ޟ%qQz;%my9|.&am@ Enj%**O=+)Yqiaw[&$4]L QJHp+&| ٨#a\K(! ^*AG(K6җ.A߆٤98(I=jou'pSK?vr59]HR)5Ebe2a%3`_⠓ bܸ<og(㯳!aVNR? v  WZ!f+OJY]vWSBi ??x+RAFأlQ+8,)*QpXZ i=s KX bCҙW1}0]X=!] 癪kiф; wN]}Z韷H r{aS91{-͜]R64Eegh}3S] ^6#]$Śb2j졂]n{L7Qa1b,kas*!3Î#4f tO=X())Y kj/[o1l.+x^-+r9`J([n 5y꾡 ang)mX1ſ`>6AMX qe}v;߉\sPAE@¢Ci+7~uckX~rTZ Qޔ_} O>(Ey ̋)jGWh4_ &5p6@-1 HUA<3ٺdBΝx#\2eI?LGœ  Wy%jZ'βzcv;;q6aXL1oM$L~k1GlR.j;wQh Xk [cyUM*(:]CLuT-u"W 6˛pdl!,a`":}9BNDD`Q|JP^vk+;^\|xYә=Ic+̾o+uσ[&3=qDS见?C{|kIUOƛ݂wT%HEQwX}.Uw~Egϼǭ!Cyj`VAVJoBMlO.b.,iq%p辙hg>Zy} O.^rg:Wǜ LyBsg^IKRTW 6PT^b_yx0\tk"mˤy!z<3׍X)ƔqY74PIx-$\8N$ iHɠ(PH;%ӯӝZ1싡{>=ck ~6uu6T שȄpsJqzFD/>7J_4B &9xY  ]ǂ ͡X6cΣ7a:.Kpe-n \.ǽ!Si4j )Cnl+phsypzT nC!L39߹R{W:BSF0.M⍫HZ=X4bLA 9kF% J?Ns%YIǁ7pZ}dYթSt߶3fBUuyMbwk;UdA#{jv E]9=p%W"=*Z s(o4%,<EEvd->/4b1dA1JwY-;^Z%[ڢO)k})(& =lV#mA&\~%Wqq TU),Xs0+,p/x5P^g4AF琌Z׸.\i*'4#|KnP*6oVO:/>F`jI=l#D[ӵ;}UxlIsU9y\`=3 _h3YeeZj=81Ć+>#*|Y,*@i^ɢPg"5Y­yIqL_qaj٢9D$hݿ )ef)51o}kwIGﷅC@fG2%Zy*Tؑ 50C)ϦgUWH`$n>PhnÜvڽ}8Tl/T7p.k-aISƍA:/$ g1!ʫwiMpPRx N8WAJ BFp&%N^ٟJI!7c?&h0N_!J@K^R?dAD(epab @wi`61߫Ɯ@S0swf}Nx_nQ'; Otnpi#5:Ugct׏ߙ q%*b )5qLRdK QWHo=z:P]C͆_ysA>Z)+j+BuiFIcp9^!ئVRW@+ʌ&er X<ɿ gS!6+VgZ ݓِ{P .wp-block-button__link:not(.has-text-color, .has-background):hover { background-color: var(--wp--preset--color--contrast-2, var(--wp--preset--color--contrast, transparent)); color: var(--wp--preset--color--base); border-color: var(--wp--preset--color--contrast-2, var(--wp--preset--color--contrast, currentColor)); } themes/twentytwentyfour/assets/fonts/instrument-sans/InstrumentSans-VariableFont_wdth,wght.woff2000064400000254634147176754540027711 0ustar00wOF2YY(Lb?HVAR`?STAT$'(&/h x\ l0&6$T 6 [ݲBSܝ[0,,r*Obo"/clO CpszUc,KozΝ͹wfvv{x7 B@$_Xm'ش5jZG.P@uꅆ6Ĉjh +/x\y+S)&z+i*`>GHNaB@x ~ЉӞJw!.x 7v3-Ǣp|qS?SW}\8jT .ΛN#uQ!RFjVP}CvL [♄ͻ gDҗtO; p^t2%3yX n2l(R/8[n6Vt,PR ?Y,PR÷V E2* ۆ2eJ`()8X}7.S2Js&~覗2gVZKeJ %L#*O߱;9+M E'xc(uOb +酓X#ޔT 3RګBb5|3id8ɨ?8Y9dfqJkG@]Qf[RbY=^-۽=L2 3?kE22,k_f"ׁZҦ~EIF ~I2vȕd(95Rƪ|H2d\r.)$#Hi$P>  RY%quZ'd)e!qvrX$YI",R;bE{;/7EuZ9O$cJ9:*l H:7ut? m1BXC:gr 7^J}uߩ47A܍(fdwV|;ԗ~ FMEkL3>fd+W݆(0ߪK̆;p? #-.tͻ,^qPx"-G@\K_Ö́C"'Dd&Qy=yOIp,c@5'cѾ1Oy#g'"eLk킭zJu&7]Xc`O[E1|.kn3p7E0pˍv5Zc$C%4Kg4{&g<2=aܸ(p %4.21;θ{9.TʹKgqz*RT:b"Pd=6`x8zӿn{l8GQ?+Mҁmį7fR ʺfG;ґHHjjU5LOh$K)`+=S=d@dE|,9w[R"gS#f RTÆu>d8}J<99d㐠a?&5R:%׆{avMS]MC,_ 7L67 /43M<|"Bf&u*2DwS+#cY%Vi: &5*1mwir\L46MX)#s SŦL?EpQ& pTI4|gTlՎwݟOyK3}W A21d2I 0@׼h-HKX򖴠Z`O)qF6$z)N?hJQ$ J<Vhr6I'4bI~醠 1qT#c~q7c+rvG>iD'TC-Jk>M.ZNS=/!MX-EJu2W(#^֩7qabbzӳ,,,,ŏ{N,·t/8雪r[*p&hx<¸Y=^xvfJLQ4 \7}_0/Nnt#YYau*Չk+sw܎-U/7щT,\0jOv/:H*1۳917O+U@RO?;I `-WƵTAI@?^M\:A"õF2#^F) i=o!JNNm=\ b_֩i21Q@V2XBB$B0DC58sYN@zF 75rAQ>}+VXaaaaaaaBR\r$B(i:N"1~Ɇ6ab,YQ!!C*!\8F=Cmb MxӐ*et.H%qhGR,$kuP2iC2Od2e֛ 5]WgZr@z()R\g'_4I|Y+M$Iv$M$M$M4i&i&_4_$IjyN֟5Id%Ir~~f2BM=%4I3I5FhMU"Fƨ=uTa>ƲK)8k&O@zu zֶ5jԨQF_ԨQ5jԨQ#FƈmlcF5bԘbԨy|ԞuQF')i4c0Ivll,ʲފEo_?{SVӂADEse ۥ B&XN\J2 .9$.e.:,Aq#ubgWWwՕ*SQ^Q.J]YϧlIɥoasx.]% [f/oG r r rITitD.L Rk..WwrJ-[َdx5 R+kU:lUt#k9tܩh]T$4SNMǦ#4Kuɛ 1$5nLM`d7@^I)N)YN΀f 5!FiSg7\ϛO{e= kbdu)WtWT3 ٔt)`H)|!.ܔ״W;E7ƊyqPIa!?qƶk!Q%[ZҮ?-ֶ3@e@wY9wF3ހd#=# h a3$W'mT,93yh+ϓ_~s@HJd"2_:H)O[ԳL"AD(>Ol1޼=y}U*1b%sN9 ADDRwjk !,~'}ϗSyF0ڈmW%QDnWΝ޽-}I %HDD2vO[%*i!1 Pw"x ៀ]3>z{q-[b~WXgp[r/R*ɲ6|Ñ }~~iOyp^+?LHg|K6"=+XD>.Lĭ׸Yt:n5tRe',ҩ#On!f X/k |%|~kM$&hrf'Ӝ7tZh#kM6 ίw㠎ߩ^tv;As3me;2 ehRF9Lfj1Z[y j5 wu3 Zlr\4.u`$-8rۯlt2< ~{{O|\i~ o>w{Pd>%!уKReYu_o)l]EjY  2t" .AvX+!1tL!ƓywjB}auPp.c.Z'qg<('cwE4h#Eutq’E@*bLH38zG> &,Lc _ ׯq푾>M=>gMt8#AgDYRdYQ+#pJFhdYErKE cf8Am,10sx2'QdKjH<*_):x]hƉ_hB?6w^=l# CY>L|"$0YeҜ[Z.%Ϲ˹ld2R !#g{-(}HR`D1JDmcSB& &yLrHrLMِ2H| HLJeHi:`py\~"r8LV?z%4M6@`"I0!؃\~/awqM1B]P9 EbD$U3 E X0ƁI#`g 93.K;ф7L"Q,@Sd*ݙ4XYpLVFn`[ҕkZZG~ |H}=y`3W OP/ h BA04mNĂ8 H瑑*n g;PހP1f?WhͰq:=d 6wd"RBÊ? Q2?YT #Tp}| |⿵mZ2L#kYѢPUj˓;/M[W_[> dЁA tǩ yr.0s⨏ EўkkE6| Y2 !DPvÀ@2P pO n " +S"RB#cyjbӈ}[ڱZW7s$NE`Vp~b9x/#v4 S;[C/w42.͈P95>ެL{tG]![` d KckUHzS/vDzɁ'ӔCͰE6bclNyLTP eQEʨ~?hFtDgt#q"d(Pacv.b-\E\ nZI_qIc ތH ER&-cQFc L12XO\2RjiX+X6ֹj`ۮ};mjsk͸[bi@+F=1d6b& >щ=0&Rc6̎332sf>NDe., d7^sE<<|滈cZo,+;_v擵|3^Yv6fg_)+1UrtJrRRO֌9#3l1+%8ߛ@L&P @ q1"i'~Iun 2S *B!%B L;%wfcNk7PeVUMaðM/{ՀjH%@QIY~)ɕԪGT(\)UMFNu:R}BFNK5qjLjrWSBMAM̵-+:?6OhceJ/ՍZuܴ6#Tf&ff/rSs\+`a 7EBƕ[FidߓUܒO:\ p+ʲ+\+EY:DhrtރG4thq`^Ǡ#u,"D͠9Ag .ueaVW5끇[pV5EX#h}kd2rԷH~/b)pﭵvu#_߭;Z2.ƙE9-M`: (H !B*+D\eCP2tNPvSPTW}CkԠ mj&u(ԃBPh !X!Ipڭr'&NiQ1)p"Iܝ&$#YKk@]Rh%Z[mFߢ=;|T50 p Bt#T7A{ >Xx#0Ȁ<9`B(S)ـ(!.O˴-1"&!۶nE_bQZ E[j3h['0C0& [`3|+!4 #DBI"!R@"2REЀ,FG _8 Ig+FbN)dr"{~|h\Θ'빞rRXzʹ%]7D a ؞ #zb&c !2d4uHIb#nq-k[;&0_ocJ-%ԩεսھ[}M)4{;bW== h-F=f!]-}7ӑ1L=30B0Ԥeo;ȾpRa>~ꄝ=[w\I;i[_OEbxɣ:%ث]d C"rIMIp]1),k[=0vmNkES88h9Z'))'K&[2#CH( eD8,r.8G3륻b׷kr©uyu޽:Q_Рɉ8,y?^(u=B.Fپ js/:ivo=ɚ{ކYȽ<ɋ|x- @E*2(jQqPUU oaPYTHbW[WFktBu2Df$K0&)o~ӑ02V\5͘O.vqkrLBK{ &Ӟev$5f '1myia!ˢ|/c?;Kh66:-VsD)3VYf+ ֳ2 TPQ5͵dÌ0ڠ VZe%ǜuG| .`Ʋ=bQP*G*YQ{T3;kL3nƤ.,82bPCIrM ]l3Z ':IAG/H )v `qCuyVL3UEWڒa謁$+ID)62iXU1T *,Tͅ_-qŦn5dMg{:;U2;UZʚWWAGb"":=>j5Bl =%sͼd"TI&1=4Chn}xt@aoi Olj/,ul9KLLY$6hIWpFH6L!шV$՛WC= rhy 020x!fФ&)FY (" ]e $ى;ɭSO1޿-f립p;Qq{(|>_x[ڰY4Mײ|j,Nvfy=J܊Nyb V uuZvDeֿ5kv׆6n&}؎l`y&#C]lol}yiȅX5yJ[0FCXjA,9lq \6RKʧ]ڧ[{(7RV}Uݚ oj՚d=wԹΉ:gE^y*Rdڿ׽;^iK*# puF%l`sȁlȓpV4bDQaH^") ;;DD!y&ԍ2T%eɄ˅bTr70e架@ז&IѨ3FovE eUj1 =1W7 PP3E;Q/㥷B:^[mUiRz}416B<Z9Zʮ1b/âZi B&W{Dd<8cIjDkBjVjUt(U_~W 8H"]y(Ƀ(O<lL\R5)?}>OMM&so ԏў6Fm(cjcx I[9*U PhQM/vtx3|1`+7eK~MEhب n cmܶtU FԋN eJs񓆱.O:kP{摉 ο %d(v>sg8?;^ $,K\ b`?L0Ù\(F_h]dRY1*!f͙j.sK\g͵d^#'O}w29t3EaCP韎ǣ?3m'<SȾ2)b*ʹRռ4Ss23šJG6Kב`]{k8#m5&i9ǠDcgF75=8-;0I|"I8#t`x+ވD& %}owEs5סN_}~ ~6{} :Y{K_;X@R( >0&=^Z=:Nξ/cHnOS?ىdMX~TV:}}i~ӯym5Rs7Fs;܏`X[2 \d("rZ̘)mI8DMe)|"o_(BE̔Y(X@QRM`|`=9u'g4@1H*H$ Ztt u4$hta^mX܁,5`EVl@xl[Hi@lWw3oyu+٭v8mv~V >D G#/jZ.j1uӠR}XhҠDJRӶnيuw< s+wZVd&wazW/5]nWۻ/~zZNEעɲMl(k.o^RѢq;c<ƆY2el`gnB*Rʟu8?ŏFfYy#vތu7d;?Na~g6fwvh ;s~׹~߷=;Óan0.1@ږOcBcA2QҺ&[)u_zkϾ_jg_oO׵cvѴuY42*q3O)Xήleu3+! ֌!!'EN4T:B{ auMp hP G7-=hXmyb5τU0N {W'׽營rgKV22W*(JUa5άi^7G0-IH#W6smOsm\˜B//̪ =%(UOq)5ei.eQ\ ̊NV3\ " $V6a.Sg=-Wf15yd$S8RCD2uX,(8ޮw>?yov"ڙM Iz:0Ld$#cLsjU @|6Z&C$%]0=?p:*TRWl{iQtQd%;?ūB"IIK$7psу2d#SRz֔8Vv#-rQ+WxXWTEVƄ؝"'SeOU6UAYu7VKuC:xTCme<{랝>5nAh 놗mczIڛ&&qӔٯhInIZ5ܞ;3:Snu]}?<IWc?8esBV4jiaq7Q-Ӗvu`~6yyuƺֽ=RR0@s4jtgcp#6U8N܏DMF2QhCt;v1eA@Zv QcH2/r+U.bd*l! nq xCԧv @3a42ə5,Mlgi> S~_t;NKIp A P.4|g9]*h۾}\H{ S[^ӳhҚ5nm|EpӒfZ]?lu2eL<"-Hrz0ػ Mʸ{[⡙lYw@75`m [.4['/dʽWvQ~>@mE_ M˼gerl[t;kMɹflzzssk Muy:mg%tAiRl0H8nlB$  ǣa+8c\S!T\mܼK>x|$ y[g k|&ǨN O݆sbZaI,6{ [--cDdFM|*9;?Q {7aZ 2_XzYwa{clMFgݹ7 .1*=vI:Y1?veQ˿HrRawy\mX^R8^At~sz+P]tz[PaAɮh"aՔ 7o*$xYz"`4ΓA*0<4(K2H;y"hAH,UqX=*zQC-wQzL|[5d[=YWl#U_+i0;P[wKGyU)O;Gz({gOZ@VuѤg?VLc\TEl* Ime|Е\޾q?:3qtϞES:xkȝw !PȁBFh$Y*= \9DJfp;%}_rQU`^rݽJ,;iIr7%/ip?cє$ *J<.Af]ޡXceܿ]yVjoT<;_d4h-~ygW<ћw)aʑ?Yr~TŘהBV*:d9|!*{x$ܙH{nyQF|)526 =)m6F }! &eO5HDen^(߈bf-@=  Z@U?:U3A!F</5M 8p9\)~ts."wO@+Q ;X#8k,er =,<`*&8CM[iFK0[.c zP#0qs} N,~0a0njX37whKTzy>z-ËϷpP2L,t@U#?p~ĕJ|tyDtY|x qI@6i#st:6O87Jwg|nrf}C;Sh'cϹ^ eT*?8B"IsFGtS߸骼yq!LQ:F;[Pu:$ iZX:T zmJk1Shܖagl@=h"FZZqsWtJ~ PJivK"**Tנ X_p+ŲiJِ[>3z(پ󞲻b/tO( ʞ|WѪ{)/pgsX#6ˁ󋈕Lr[pMQRUES͜|zWQҁьԀEUw%ےr~g;F Tksk\aQ ʬ"q脵;/y,GJ?XjbֱJtV:eJQjq܆0EܧLQ]njU<9|exbfa})!BJ&榎4u;B䦢)Lj#P06O:sgyl$T٧fAE|<,kdq(DU "wQ& eHzVOӖh5*L`QGqtW:#66FxO|#tDk&;6dvB},b|B>/5InWGE3(-ҳl! p 3v̼+h+8*FDp|e3Fx,WSX Y >2z$ Cz8#IZzY]=W4# f~#Œpt#YCAxWN +-=Yݫf1']zמ!a Eƀ,ylnWvZUi؈,jZ.D'.ܔ*nOڨі3r3]"l3Wi,luD]MZX\o9 psgyd`Sׄ$Qό$+jUڜSկIJaU* z`O^ߺDXgUڶ"9< vCpʨ6\tTSNt Ӹh|Jv}Y3ɖtq@%†oF3bF+KjcbIeteT914NI%ޛy*%MRm>! Ae,#)'CZ<*#M]}):g}Hp)M { -,?[d/؀{bUn;6J_Hb1f.[tJ*2 cHVzlSzsKo1,Qy6)5ѮY'_Z 3hSLQ,tTXgӠqg{4,;BSNbSIaOݤ<p+6]4 4BSRSLd\@)3cv39ֈAvt0% &C*Tԏ=^aRXXfH]]G)3Ġ ZUd 3 .Y&[ǵGه*/ᒡܨ1w<4dI%>w?X30kU#]Yð(B)4^if)hZUكn'R^"U/k'ϋρ@7bǩi΂|q;1vRXZTةbet/*> BhrL i7}6O=-YʏfI!ɑ">q^s&62yk#i%@kODFwcds/cdzPit\p.S-WZpfi :1<y,1'$&nTԜ:Iaw!ERIHɟdN/義 zzM Ϧg/C@YҐ)J :Y,/9-gOG n^ƹ N v=B,1p#T1c:{1I]v JSix~ Ұ"CӋ L2Z|D݆O4h < 's-ۃt{=Ǒ =R.98ѓ[n8*qYUru ʪ$665DKwtKh[=J nE]~,z=GRRWIﰥWPpsz١ RV$*Vq՟K帢&5dqWG!ԦKg:h,Y7:.*}dXk)n蔡5+0+oe04 tSZwûo(tVgEJx$z%i7JZc} w{+t(Ld!]t,lͿ؉S*нKd-i~tPKր;ت_i@M+P<cjmUPgW= IǻPYj zRK 5I%עIYoX^^'Th1Y<uOXqБ]YO$iT/ݦB[zT^ W&$'OY)AG,w˺-.}r-/=m7>|~XjOx"HLj޴-qNهdVaQbgwdA {,Ijq4//4DM ~!1YEgg>~1!XY()OURڐޑtD޳ecy:GQ|ŜZs 5/ey(l!EE5HFWf]N ݣD;#XO!5SpK%vA)c/]YU*}Zbfq0a[{Hqsdjzn2bzY3mT=e8ks&U:!t2ע uplN?fpj4]66d}iDP=j I!1βV{].0sUԥ nA'e,U;)a3Ũ𧫄hk(GD@\O`/3ĕs+V=&S8ClyH0o$H h[" jܓ"ZRu(! W`z2CV-tu5i Eџ4Ekz.۴q>o@-`qxe*{IM1/ZPu0}wCWz|Ex0Y-͸+F)=RUJDz*.*i{{$03$&b𢠦} _Z?ê/ (eE>1U.gC\bgL .^U*@JN#d@G1Po2eae2VA(_hpߜփq+^iwau'A=XMn9쏯f" sA=%88"ġsMӮ'oJtkGfNyTH"]$:EV3 :8e*Eծ_E5_"u}ܜi(@_^ۻku2d˽8k*W=UM)R?]9ViRBuHV.W'J. >y ZF^D3[Y˛ۏVA٨5=J#3CQtVz蟛d@T?#@J+˖$p2McYpȥ1䫱M&,5Wke^o*hGj $@Р`V#ޔsNj_Б_He" FR ;C#DuSȬVvMu1]\>Q]-ϲ9 ʘd3Y Z6l1' Ÿc'$:ä N'z'6ӭFh4Kzͼ/l! LT$7ѯ;ot%?RVu6\ ͙TseO~!|fWSIۘ@Ĺ,(ؼH;n鹻#A<4$RAgcM` q hj:-BZNni8__BtO?+o"ݯ2|N;u,$Hy!" O 6L"5@B kVWۀ",2 G\);bmzmnF$V:FW uw3ycN9ڇi:g,HAdIpNV."PZ2lQ5ӱ $ZKmE`f>RBbQz>_%VWXq2_ nW bl~ڪxSZ,;a{:}BV$?唔H.' #as[p"H to}Qo6h~p^=)kIDۢ׍cE q[yV΅>9C,,ũdSw q p7QOyi0 c _)N^ ! jf%rA@LpAhq9C n/+& \v}AVn^<;)?5k .0"fxٞd)z q@m뮙^P ]^M2f$Bm?Lp!/WԩGۮ)ȠSgah;YU/#on46z`&j1 (˦tMWIάt;F lsv5_"oYZxr.puGNk:(l f;WdN VY~[E8ĺѬ h}qyiن.XF;,ǞWr8Ue']җV;pSݩEbp_RT x Hlz92AW\E0bZOa t?NuWFY;.sl8jeη/fC T2㕖Ȇ) ܆ƚ0H98kAvpIi,;ۛ!)X s\<*$)V %X% vXD+eVrJ2aI1jw hk/~;ŧ q;ެQ^?#N 1uEK b'3<#kI&ɭ>^ QOڲB]p+v}syb"C}Ni6m?Bdȭ;A.<Jvg ;ˊPw_ZM;HN19SDqV{՟5-&6G!u'\B_z6;u=P[Z6Z͑#Dp8T/<N&ǻ믊g^g&;!к7B FH%R~ҹkO۝Uq7NpI}V|ܞsѫRPυl,\2FԎjd*c(acn//X$jp4$%jQ:1 vl!0Zc$VINlY4EH=IIJ*FPT&Q7YV.ّɹiܭ( )h!RS\?=N:X^H-Ȧj5wz'/#5J~ZH)~C:giKRN@2w3)|p@5i vA W)HEX=Baa`Ƃ}SdT<Đ,4t cKa .HŻ׀$0gýB<ѡp)>=&V 02O0~ S{F ל9cGR0A?a7_<R#؁˰Yx l~aޯFjg{#Xؕ {fhZ_}%?\a\@v; 3,hС C}Y߲?s4e)"|m@åUxL]v{۽_\,Fn #Km?bٔE^OqEԍ)%KIYN}WgUYO1*CgU:WM nBjՃUw}V +η-/%<ۑ^k1_SM,"a<>@QRIkbQ?-9`x=q)p9\`2l󘓫TO׫V9 F=NPC D1Oy'=1v._ _:Jm3qpV/V[XıQ>vHi# E|3~t5CHLbN Dp`8*DԗħhHBIUp+ B $hO0@d<xc9*.Ή{/b鎎$@/PtR^0#gQFƀ6]c)jj eli_k{;iB3D놧L^nIml3%DS}9(S\7-ܻ;ޑe:V hkv]2!#霳YpՊǸ$3Ie$tcύ沐-a1PR^'Nъo(f^3| ?`~ O3VkrfoW:VO} ;zoy,t<-`,~Gpg}TQrڪ}ӛ>8Grƭ+!o9?:}]W\;g ;:^/FNqy2tfvPD\Kե7oS3g膮+ ^szw:ˏ16Ȃg))^a<Ky)otpsb"p̏CH~`: _+ro]ZipS`9[fw>QיbJ[0c 3kz嚲ܑҽE:,fKVqL&&m}ɻ?Z}% $}h4GoQqEŭ|-Lfw "s Ga3YN9O,{ d9C.exbdq=\]TeҕbjU\تZ%QūW]l&=G-7܂c αp19C~>Jsݮ /xxY+@r"> 9@`RS'sV:9)X!O1Ob%"ŎG$2iVV $ܵ?b>׹E2DG;,13ϫmOF䍜cƏK-!m;WzW*r /AVS*$vV KeҎU:P[&eb–[Le&\ޠo9w|xX%v%WQiJ%ZDlTwW)VU{@p)-:zx yJY3NGJZic(. I^6 rZjO_WyRDgFK-E&}3|5hFHz_1 v"d٘1ENa(@Ql2S GU5u^4̥Фh:v^`3 qc pLMBXd6f_clC.=v'_s JN ",'gp~yO'f6||!D{Hyʈn{N!;3"F@.+kRK 2)SldeuSl{9L/}b0μ"|=tA\;Ԋ[ϻIh *@qi.i/kַLQDkjj^imϼTH hGw:Vp ȱ};8#ԝqOz8ⷧ\A%pHdx,gܙU&8]ԏ3ۿCߎw\JI??s}6JVj殫9Ĺsekw}\'0}w-N qGnE7fBux'%[,N}Đ #1&a1Ek報 M{/|e.aumwc {GFl cӍ|Yۏ' O>%M'ِ7HO;-ɸ "D*ᇿdݸ G 'DT Oj%Db)JpA)%6(Iq#*z?*%vlΩRaj:c:#@0}QLmޢ@su$ktXRIw1[2TۿnG$<7Ir$&sNɀye翷\ Hz|cr,PBE{|bJxnfMZہ#$k "Fr< /Մ9vK:fEz PiDA;K 5|y^8riA$lh `S7X_>{KX x$b"@)@0 lCW CAh mm =e0 #0m>)Ǣ KSXQUK,Ogulq" lA;R욳b?l9 ʁ5aMjYp 9Q_ s^vC.йBk`-3tA.^0xӸ9ve_7H6%YnBhth6yc{/GLAEIu<44b7éyvirš/\@3-\IR LZVa+wR}kׁdPm]s6÷wܱ: Ng;qoar f] tmXݘsrݪm=QI=FBy]@v}UJ+5d5 ϝ&$E@Le.YEql앒Cb\i_~`D/'%.S[%A+~(exɬP)WR T|YGlJ'do݌닔 .k|q9~Y"LHř"t Xj ^MY40,IzT\KEb=ySQd時Բ6,:8ѕ3 nyo*wD(tcymOT#VwC !daVKM2[ODsV.[xF|B]}ğ$AOҲ3TJJ@[ JS-bJw@8ϛ a4hِ:L)Wc`"S<$Kh"jɚ}GM1:hvu3~ٷÁHQk˩&yIW6;(7~suCw{`\-uԅ-s0Hvy GD3ffJn!rf=9̫esE,ifZVMdMQY_!ZGȆ&WУC鬪s$+ҩq!㹨ySh&iz  \tuf4;`7 ^nz v_P`S&x6OyV.H *ytG]i'Syƫzn79ͷBU-W>УFUɭH@c:?6nv{<{M&̕|{ sӸ??Ffa>~}pAG> DjF!QvHѮ5n8얋6o)٧;$`&L7#s˜QFmG'FJ }ջ{~=735s'M7;9WG`Ưm??ȉΔ]1ϗ6uHj|^Ϙm02Pk̚ӄ5;g}[ΐ'uo<3Puw$ +lOp:\x`'"'DW鸋t6#}{]TZ2f88%ONaYދȥJ 6}bZ!'9O5rRW *ON.V x┑z- <a :0fƴj 6mzv~_yz@>>mcUYW]"ǁCɧp/+pt⛲l*P':uzU?fmUCT]hg4oV#/jOEcX]/Lzk@uha V;m_kWuӝ|@uьojʘRNwӨ&ZϯXv[~F#2 tϝd˓su ?/xY;sfKWWED`7~oo_j^5؛[P|UVY5V^ūpZ]ꑫt DžkTQ5%fN-H0YV׳X.[Cn5Q'5fiWԆ8mm'󥰗 , te`&m2E2l,7ȷJ@}5jisthE$])ܕd$?[BUX4 j^\Y`)B^Vn NOԞZ-1ZfbӪmkqmp'n 6WA;.nvdCˎ"# Zɖa/z%F3~\H?.T}ϚIZ] SoڽNg-GZn41.G=-ۼ[yvM:7Pe֍YpGn^. h2)Ҋl:F3&f7dSGf h ٠yyb"P- [XH6.rbʝ]zks[GL&6sb tļu~sg!b$o*a(߃i[j%H E4Gh@49Z`hjs2J~B>9vHiop#:ՙUI'6'·dB""2Q]΂~ɢaDw(#1LU޶8ղ$㚞K~ $ZfYIVhHJCd$+l V_έTNtd@5OL&![G$Ƕ&\!L!<ו䧼ߔ0&SɁ;bMWU8`;p?ٿRP-n@CzPC3 {z zy3Cc1yΗx37AԕjV^hpOk>ybŐifѡ7qa|Oc߫*6 dR+W'-8jBkB"\P$Hk8 2~e&E6RwXH7ÕAJ˨Jr4F ̐PF^[N †IK.lP8);&|iW# F蒨8dReG=rHQ0Ʉv^ (GXБ!^^!6fbI^%+A?>Q ]jsIWۊ52U{ݬwX>'Y 9Co9|IW]/xˍQ 76xHV-G/>7o7_Z@Z (^t D26ZP).'4,Y&"X" z9x{v!2D)׆z 9|}M@g4@ XXmث=#(@s۸OWϦRԳ+Wj%d)*I?ڋ)$];DH{wA;42aNiӱ;VGn(G<*U\#lÏ!wXÌ1f<JxetuK9os{ UDdOeBTUP5]9jȫIU)tr ꩥahWi OdhAAjIkhX-Pho&`utT; .1\R[\)~ ۥ HLߢe*QT5{WVxUž+E2+7V *UcX b(]kTGdkݚ}w|E6!z[HTY#|%\e{~9x4fxCDyT#"1/FB <)P9#6Vv(ghS-go8ubnبsUrPޭ]xZieGkJ\!1[PִMbPsۧ%[ÇgF8xH$iEDyeRn}Q1 A b",r<選qRUx5eU:!;H2xU%IiW:rjW\ƎѝX4Zİ #{ `5|C{LYKrտ矧 MkzǬf5\R}0\X 6,VY`5СVG@Cx&"cq> oti DJ~4+(+nS)C|i'2'v⢂tz/g{hǿdF(:S|<Go`B <"H- Al{ bR+J(4Љ& , {p+gea{jDOD敟9(29VGW+ GF.A>ؘ~\%}ЏY,>v2 (&BSNբR!^44yjs\:X2Hΰt43LC3kyȢ\V6/lఀ-dه 9+:ƈ>ZECבHWN`uz%ru[Jf_]GWĺF u;;$[f=c*Y/Z/v.zuUo*9w8ةOHTX [Sk!W1;i˦p̈́7[y, P[sHS'jIn/)vTZt9X墫:$ ;I KroQrǦygzoэ1g:lL;ـ3 5<=AJ?7Lx0%K2т`  5b5Yl0lIhN> 2Mu0uii(mHtiL|ң>@#Ќa3C>YɔR.7Wg[ERˊ5l %ix<{9嚫M9w4h3ڛem6d-!,VmSl[eNdz9x¿#;Fd'; % ]C zs@uijg'ݢK}[&Bm^5i6޿ MlC9Kۺ2=;zgkZc[Gr)ré]Vfpwuw٧ݽ;YHiDܴ^ۖ_:b6j Ln.rNT3926sn.2U's}Lљn26c~_~[0w7;ehRV~' -֖I)wh2䖪ȓB`cjD:CuY19V#!p>Tyf(((gl.wI#T;1`|P5OmZ63z]p8Bz758ll ĭ7u[ϽX+C\hDfqe:qnGGPVIS.24Njfч7O|I$}X81wp2p#3(QAE }wd5skŤ<qh68eb=-65בKSgfEZbW`i+6dRTĢf n+Nb)uoxme/vћ'Ÿ\|.##rXPAH+-nH 2n5-3Wk>o~1S7E`X#_pfSFc0װ1x͓nNSY(Ց>>SkcN^#x6K=V(-ӐޛYS?ۏ*ŚC{ߙZ/wYq%~{J@͚p䋋k  kn#܌|2XĤNF\!'94yjB  cᚒ6*Mq-iΡaAf9,836q3c%\MI5,Z783$Mq8zϯՒ ;*4Lm[=ڄ`JTFi߆A_o ;m&2ΕtM_^Ƭ+&'O+`"62隥iĦZge^?/-v%|0nE;E { *ʬ(jRl' MHб-Aw #w7W(9XFt. Uyx^'(qԛ&T$SKX{ļQrukEfk$pd`Ɛh*],V# ߅MQhbŌ|s,iXT8T|#KZd}rlꏜ(|}Srbfm|"*H&;zN@;4"*[`{JRjۓ8.Jӌi5VIHZU{e 肜<w-GlN`whru@BqfhC4A Mvxo3Kfb_- /?m JjDQ 6S{GS )~pM5:+S,D)*AEdGJwUn`̻Y߭ o](&%އ 8}D򣓪ބߧz PD?Ԩ)8(F)$g޾_6NDsKL2a[I2QUɚR6d&WD>S6w?J ?{Q@R(A!~G ;KGJFG% 4ډvIjU.Tt 8vmv=33㌉6d+2Yj~+0#Ҝd71 z+{&03H"P3H( 4Qhv_mS[H5{`T&=)cD h[Nb1]@AB3>S4˷D,KƕYQU3%k+6g齻b$j7^F9\SAtXwdRZ fw܁tB͓C5"VtEkWH"5,<*s?b?+Ը*N#V¸QdK6jzK"I8&T=Imbc͈i+OPY{FP!@tZ~- ݰ{$Cq>^K4t\čW&)i(o8ZI>Ԫg# Ճm>,E;0SDDtrl)lyY zF>hf&A JL: lIhs8HP)@Q;\K6#HK@H l_vrGfiF|.y%wU|ς%D>U{Vn~Sc c ?#BGx[ȸ 0[:9p%^>6df7id;a&e7A >k DyL֋w, {axGi(֛'y>Ϥϵ6CuGJ+#(O k)w /2ҞB׶Lf`q`GY!B~5:'b֐3W]9(8;ߤ㐥}P1%;`[>~D kz[>=ʢn?[ց+U+"-J)p[vS-fH ~@yٚ;S6|i&khU)7Tg]Iq6bZZ k{K]ǀțwky-avBOՂ",R 0QV59O(ɢ5C,t "XC89D#vTkm.Fti#$Q/`'kp=qWORL#tF%'.xrׇxSApIt&`9/qK/.q}n( v pۨՅvS 4kƯA${B#A=pZihd}T.e-@ @v*a<W{tn!aqvw ֣x[u"OZ^98bb~ďPvqiLHM:r4D捞[Q$|Zs#$[ƫs\Gz3)-wuΝlO¼ʧXZwmQp!] /ӯbɶw]i ֧x&%JYrOm"d=*>|>W_uvdlNn}JDd8A4jϢOl4?Y8aNXzN4F+{A,P5F8d:7o;:p8C^vL$k84C t:۶1#F^]snaf9ڔ3xU|ν^#$1В|N Gzvwl' X!i͊A MР8D^~AN (vIafjT 8!89dѭ/@@Qyݴ|/_.^ hDM:`l0f][+4dyM{q{|NA䉌e=pܑ P0JUu5PɛYk5[;$s?gBBd(!מXU{1w{zNΤ0Ln \Đ\ w»X|ϖZz{m SCo R"H Bdnl)YX +6kUOͅ ̕fyPٝC xa6j/{EUaw4D* F F%-OcAVA]jJbt+`2Y <%#I? <oܘj ´&[9]({-bo _gp!l7@[f_`?[P{P+:,_2t)4'VTt0y3CG;jj.?5~oЈ>G{3 `Gŧ疝 >ҖdfDK7UߜfFYE?ͪW&\q4@a?3n4xa%HqWU"jS ?j0nB_~o߲kľ}⇎L:vr:39 ڃgh!D,!f {H9jr AAVGv)NCڙ8rs'hP0c BY@A #DƨD&X eE 6њ~W@ X@(I$-MBDw `0ed]\Щ,&%0xTjEe qm=3SaPd,wq#Fn[wB`KxT-*wiBÆcJH}$)pd5Ϧ?4Ś9 #|-@EF `Mr!&Ud$?L:虋SXI.LEZo;&i΂"hmkYۧmLl73PU̓Bt'+Uq\'DYDuY"Hd{{@ЙŁ{n#: NVs"[!Rk,[4 `#Ui|ر\`T$4𚼧9&#LSXBCz/H 85F (>h%Rjhf.h'n󳎂Fej g 7"xFdOq/,xzu-{Zg,K-CLXBŗ/|,_xB7&0rm\[iPL (s5jH_ *䂅g(C5PB?ʨur8 Y)//OwtMWtNgt#,)hn֎jC#(ra~ny_\Y60;Q("0 8z:6ѫ6ڼef2}_Q $ːH֠}}6k) ň'Mhv3.%-xq{.~bÎ;}r`ñtPA=p?+( "mȰh܄IS͘*LPR)QLXBD Eᾡ< @Y͑#K&"ę~0aƉ0IQyҤYziބ9t-4S*yvu,Ҽ&qTM%|HWz/Xh?"CڹD } 0 w-J/ZxzK0ҭYf0wv@T$n'ۍѝX)%|}J fprq{Ҡ ^SeN`ƒ$CT$,SV iס{+҆)41d-b2+2ȵ8 )R.[.)!֣rfLk9y}!n,= pOv nQJ).[Q1S̵>:X0)0zTjOHxOr̓9Íy ץEJdH#LQ$E,MsRu|&ݍ =h֬b(-:7#805C SQd<֙*5DmN7SvTS"ǥ%n^Q[G_)-C?&]Rɤ0m\P;(s>9.<6yaL7)~z-Z9-%@veŽJ*Ūns 3arSP%9mq -?;#2"D<[򫄜s2dK>.*6^׷Ś%LKabѷZ٭XpoU/w`QVE¡m1ok1 % N*i#dc E dr\J]l ~uI{^"E+o4pxF,_n˞۬=܊` HfVH62d:27Z6oζ boZ7K7!Wva{hf萾N#W?ǝ/x:(cK  bx(MXȀլ̟`Wֵߗw x s}ph[ !h0ĺ3Ƅ2ufc%7b*S吀7l3-/\F} m)zaS\dPL.Jy_?EKk/z`)Ϻqh QS'KstXz3}fV)59f7O\j;EHC1EZܪ*O#B[%\}q jxrpx]  D"hĜB2U:|HJYTx"]Ang`(KZ,p)gN Lb(Dq}0#Qj&|'d⡔@s ·M?~wo _;RmlʙqQtCpSTݩ[umu_e2TBFm:tQyh1bK+FLRwe|<]9NsYݡKp51e5jr Mw]װE/>^atXT9A#T#D^q ˏx6"vv` jܫOJoJ@fB=~'P>ct\JҠh.+2|--&K_ll+ĿY jevw̥Ju:z船GJyfvi ~6F6J0B$'Iaћi.l"@`8s;)ZdR_$5[jZ/kni3DYX 0UAWG-\uH"֌L(u.zf>~4^4As-2O>ySq/|rh doi`r G%38R-=?qZ Bđt͌,w-r3I5m׾u TTY`*$N$Jٻ)n554CUV@Rrmw 'tѵop=$Rۖ?yBm &pEva?i: .dQsmdąV~)B/ G:h`E Kpqiſwr̛~`t!#zI0rbZPР!r / 1qc[ob4182ҁ_2FߚR!'pyshv(P8ïuуߤbbH`~˕+1FYcr#&62K9v.ƛ-ugZq=Adh:V !-A!W@4ԂB:>ؒfyb)|fˤ%K0lA"J!&>/gJdY(erPec{/x&zpO%fy6";F 'x˄S ;T&:*FF?@YӹњAHSv6“F;>{Vf4PMʼndx{&R쒑g%8.u1ٽRPgV/ȹqAeGӔQl2x4܃ˤ <+RSu> lkC<(!?vXoġ6ި"J፹N.G\{L\TsݤZzAyW&>0;)~,h*IIs{\$nNbNMK迧+mj|C;b~AvOF=ȊNc؉缺v:pzݙX?9'L| [ni!WMK22(< juNp0]?O=97w.R@ oP.wU@,<>$/} Xm؇jsTk ԩۆl19 =: a n2j 5OQnX ht[ }EpЙU)?>z\ط/{yKīr A@Av)kdU[0T$]BvLtۋ^>c>+4yKJ#C캮C#%I">Jd ǹn"v&v'B0_ #.O*莼P^gBڷv Fw~}x|Qw.zͥELRKeJ>yO@e7Dwς]G6Ԗڔy>[gU\sE u3߰ #d<ЏL<}pz|mk σ26[- e-ktoH6°fLa|(~8[Y0ZHoj!cJ@dwAɀޣh#2^0\ܬm|sR8Ͳ+U^[m,A PMӅ{O iV3?7kpbƛTwlǙvzRlg=*+ڢ Z]u~_Wnƀ(?UƨGG=)W>L6*K*;#(X[OA3:=1҅e '|SRޕ'Q'+{؍#DPbڂ;Ync e.ЁP[8!45Јq؅mxI]=4V?zlX#9i+xx fԖ2x1^k/ODucԘ?_c+a`{sey[̺f[EĉA0I%XtȻN= ieFKM]`eT;sNjX9 Xp:LYM!f]lux:J>tf ?=.?PPtRD~FQTyxG<Wq7o{cS_)ǬΕ+E],rpXy447&58Ob!ғf}@l$.dqE%Mi2pNt_GHph*X5e$c/66) K#('ꘆyΊ::uoA+uzˣR]2]įZ[&1ɤ ̳lpReo4R!h=É))xm&!Ҵ(ǪHd55k%GH%M sdܟQ|`]--UGfu[NFl38Q 3 j0{C)]sHf/kv=1b01d^kBB^7+`0C2$1EC zȼg:ٿ- k& 2\wnj n´ONge%VF)yVvwRNpcvekbM޾]^ݓwO ߠD>,XvyP=1uώ+jA{)P~ӿ{?֩d%'6tƵ/6<5_0`+& ~4Zz㭃N_O*7^_1""-})9b eԘo,im^%^rmdp4~]ymw5q8R>XQ4lAEh5V.!PhlDqvQ4cHnq0 D)o6)ʟ Pzc#=Tk.ܠN$6R˺IO7i4f`9]U(o&:ҫ,3 C Gg  Jwo)\NnVB! u<"8>hڽXQ"Әnx֠N3-yN+Ñ1ke{x%Ά}=Kq%2WJV ,)mkFFtˡ7Щu6&'m/4`Nk=ъ%]0t :]asl9dF Ԫy[O?8fд'Ngg. ͕J,3Y36Zwd!Ǎp*bPcM#qRv?j(l2nPJ# Iɢ͟;7Σ5A1Ubƹ>K|Y455' ms#NwZL5?!b.^(:gy! C2kzT*Wꏥ̿q7\6hɣPآH+R[|%GUet%jUǝq\ROcU ,)+З+nF>o(c5b-lð{EBG#N 15/_~Oط=W?LrۺwĕZv7iťΏ隭;sp,w{@bW/_k@U~*]xĤ2{0,cmUDd슇MW/gYN!^[Cg/T~|X/LU[xK{PLQ3Ǒ*Dv$mT_GVcH2uƞ;d寜>wY$ЖRޙ',-|UzeU]d.rbrYyʊ,ߔ#^KvS5 8/Ƹ\c7)x|U%:NǰyL띎`m1n¹XT^T!n e KgV; Z;Lg$Qⴕb>V|C!9@߮.`ZXDœ*}~и1PkZG/VM.N<C@&kpNbXo ܷY\,< 8-ǭ3N5.Mե;Od,$N@`pv sHRb!W8#lV.(_zj=-zp][%.E*uQJg5"Rj7#ADmp)R(n9bJ*m8!MZn<45[6 m1AEfA˔:JW.zwn7`aҜЪ3f̐U=\:s!H+ш!VKSl|;&g}R6(YhVaLAA;-F7wa6Y3mvr8خ$1&Tz4rMň%zu8%OW[sWzg*. qQi& K4jl|)i]i5`7h}( DBS$sdu ȠvOɪHYbCC{ n,KJ\Z)Dem0gdSVN-4iЭhYt̢VeT]G :q{ \9h7a^خURk]*Fg3B$ AĜ(L duNۇV7l)MvF许oj^WkP;|I9!d,-^</Q+'m_jR EE(s(I4-xu|, ^B\=stwDq)¯$t'bxT=f2E>1LlBZ&88M/[nG+/o0M7;c wfn??&?S]B)ʩ7D6M Z, U>ʪ:d0YrYEղJRANy-l!n[>L|e=MgObbt(a@r{w)y`~] T nH-*챣6]OE:>r4?g~q#03K̼2P`+_ Xݫ|Uz˫MP,W>A W~ʱr\6l[CzGƺo`YEy:K8y!0M7Z+K,r|wĩ5a`O9fI={o;A'{W} T=lVz 9繫OH [g̣]vkر46Jk?Tl˖x)Ker bR !g'VY3յ\g%UDxlN #&aXCwץu6\@SP6>w_'Fj u]tO+ԭHKϸI#8!'!oVboQf7geHZU 7GJ H*j,@R>ᚒ3oeQBqk_M#No4vBsMzKDL7벬ڼ '؍!wY3ơxwwQeVWZ;H +0`ۗٷhi] ĩnFpD^DQDY>6 $\KtX4U;nw;5jHHYxX6v+DӭE1{6L>*VKl? f :1VÆ[ZnjiiQpVE vShd 9YaJ-ccm0r| uҰ͗"xTF9<}EC]ضʱ3S6w8.ü%19/9WX* *_+h8&y2MS*H_WX(ZzN]vyxՃ)Ib$BΜF`:0N f;>܂LfӀA % MDu5[!֛أm-<"$d7J 5oNX$k.}ٯ'h/ fVdR۾۵Y`BHY9<\ T`q$D3V^i9S{w5'괜t uuk4?_ kCZ 82G;? e-4gV<(+3֍.)i OV7\t&I){uLaЮTr2Ǵȿ|V`nD aMg-4 ?i `e>qx&lD5 @J͊C_RڎBb[3nc4DXi^l Gw^VDiZWa4 5]t*EXjDtUlľLҞ%G*Z ~)ZU+2#陭?NSe3]jmEњI6NQ&b$%ZX^K.Z%4@$K0*^X,Aq$#:, >IUΩ yH6rȧz+V+zN݃;7kǺ3' r^u޺CiJ9]׳]55sr٣OQ?rP8^hŋWXw 5' FI4yOyU_uO/ש_ys߽v >:ש3NK2wuzPrhX1K.a.`BIXElv&vAıhDė,ZCh.˯™.ɯ+}AIV/Ύ-)?Ik2߳xR,h<'YxKT pMIH ']7:\} FM`Hz\/-@f/^dٲl[-1u힪Y"Ncq[><2ZkY6IZ3;=\0 rY1Ыȭ2nT`DKFI׊q1M+l!#~@0V<+X0NO$%<8BASk)E#("wZAP/}9\ [ʀn#+ә9{]dR_t25hWF.ß!A KgZo әAmZ36 -XƑYy~(`:g1{ ]4+P~ hN7A¢kYp7lʈFo7{r$c[2O-GhkMV;RW!vrH8_zO]L?oa-o49S>5rib{,$imJ/Sv:h!f\+:,rLS+fe9Krg 5WJ)CXڢ6KD1V>Mt &iSZ2.n ۼ^3>Q㔸"Ɲ,\MAcӑY%fK$, |vMf%儕ez8A8U8QSC3KB ! rm1s»H:lJ2AtH;}2/ _G-r,ʍ*?fE1;:Mv|+ Ox[i{]ω)-|N`_$`19&k4+-I;?+ǿhEGZMnͨA?/,/+]L Jrr Ru|iXźU7Vձ;jpM_ƚWkkk%P6Q;RvO}O׾]e]S.Q7T;pW467g~՟Axk{] /|0/PKҜIux^y xky6^;owY;oyJo_Ͽ wbA@. ..6BB7 ?$TT!fnb)IKZ!}YʅC CerU=V?@jGt tg1 bb(c8dxN1jMMN>7A8 ,4~ ?1ee~G?҇lA!!"(@$uaw`_vh" ۉKr%%ͤMI>N&I=,b?@2_-\V͸ gk '}{ |㾽|o|D`S<&DFC[CC^ n+t/Bx=G#/Dѣѵq. 4VcǤ1CycX>6>^<QfB"$ 3&9:8#]iA~D g`AAE}r.`$o‚vQl:*ol/|:̮@VSNMyd-~GH@BɻJ,ס%{w, -b!k ͙]҂cdy|0 lxN',xDP0/G@}Iҧ]׷-(` Onկu5)s@t4ytDS`?zE%x딨_T)?3ڹM <7W6Z?035no ]\ȶXaI#\\TyÃm#]2Xd ز"I^ KQ :%R<ԲʩվbXrzZЍ"vp <IϐK@]}ɰ2a;cy׍3^ᇯ6@/@Ȕ6{uAaXȷм:Yqͤ,g}̸.ꅪyflQ dUKKoST16uAVhhQ3㬱V"_  >r*9(aAڹԷ$0`q;@+_qLm?r}qRg7շSQYs_{3]D(ze!PD^AlV f&{u)M|UZ#L`0Nl!!J\6,vI,lB N@<+6ډuSYm,ir]hDȀݰ^!084᯵hNx,&&:|i*upe-K¯ŌҔpW%5WVv]m^ҮV f%Ujy׊&)DrCB mk~75.9* FkBr iJi"|pZ7  0%>MUEu)sS KFEAӻ"ëԗKWvi;'Ƀ{Sc19'8}_?I TW..5k?T]p?- j$l'ӫbꓦ1G ,F@!Z^[uxzWr~ڬ2XǺae]^+%0i1AŪƊ#ItESՉJyR*f>4X@zQ,GMW,Ő?C"&h]8uH" nOH`8 I-2rTTnOF +*D >p'X]8)Q)% G70g^tue{ j/\_6)YzxU}xL2VIs`J6Pz\^]LOlg[bT'ךԤ d|^A]B -]L bZ4 jl4 Ƿ(N ֜O›Zy+~tQ?s)1j,u_Q;"ʾ׬\Mhƍz>+:,GDLKE QH>oi0mA1=[?[q:N~ph=ޖL)M[֛t}pSBtM=L;^v>ypkx&2^w2=Lʹ'nm5-bp-IԿk?^lhO1mu[g46 t=V#1J׷uN}\ ƴh1K/hpsY4sCUA_)ǑhxWD5:磗MwZ~ƹڬ:ѣQ)f}o! Tj[ huT=Kz,1Kt=?3 FH" ~2Y`f$M]]Ot2nCiߛPG$HHXe%1tl$j)<}!rB}E{c6c@$Z,"pV8Uk38ZשqȂ/V@ox҄e?"~NKa;ycjx ])Sʟ%AOCvTşϿՀ'|p-8?v|xVP_ToDS?HBS@g6mYUUIjҕMlx-$v sY},r&]>Z%gŋح[ml񶈉5[x*U̝a-!`D0|0&JyGI|u(YaX(F'?<@ݭBl%P~XV1ɛ}yf(s^uu FNSI:Al}O˶X@ N:ٵs@W\뵒ZԵ+S vƗB9wRr'> =qg#!y[ a'D`e+|CTLoPYC" %hqjx ɼF,Lc Q^]rA•7UgʧjW{;^&Uvԗ\ =\;*aCius.3(%Z VQPߏƶ}uo Ɉ] AH !8F՛FW #jd:Xa Dd/$5#WsRܨ#,٤@ڂ6,Z= ]o'L RC9D1k4JYSBZPx9sߵ6R O{5 шnTێ&{mo_EQ<[eDL5͕gm;Q1 #*.a ¡U bB} LEr1ShAeRM輛'Bg|,Or1itƒϑ2"AAMʋгKJ1,݉NUxu !>A!n~#4ϴ1\0in)\ %!jL5LZÓ4'B][R[aTӵň5;ɋ,)mg4lS\Z,Wme>|6Y#` }_}Q56 s?!ZBzơkqf,8n*؀|EFv[sJ'(۷ BZZ5A9";ME˔`۱R^'oaq㻊p]&]%jAƒʅs, | t_tQXVN+j[5(71 [o_G^ ߇6b>0Ab_ j&/}G"9`eMG0|JZ]+֡O6Qz #7FM33g~s7=2?D( 5 읣MG=y)y @ f8/&%p$ZҒ{hr݆1Mmm>ڀ}8_XMk@n~fqCy<'EضuҰ\?lLߊwd^ͪK*{X8rMn~춋 Ʋt鴋P,7p]cPu U6 [@Ī)7073R\ɡ1&W7ߞ8;edsۦ &k;C;S,!ӱmktZbPHIC?\rr-=~m<\gO +HQ;xZw vcv ێ @Wc uqjm [Qimxz O^p[- vܺl7vBvե>ae2@J&JӞ;;6+#l 3nu{{"MoK dymAgi*ySYOh(k.Eje~Q Ws5ВYHj2+E0ByA}yi*Ǚ ҉=Tu0eZɡEIND-̯b2ԶߔܴcX xଧgB&c9CV0;t%)xTWWE;oK"Mt y<엊}+-L󃨩bĠ7_  ^NB !)$TH@G~9h] XBܿ^pDڨ: pi!o~їO?6WɁOX['`N-˟i^bHKuBTS@2׾Ƶt7Z$hAiv0uʻnsDj~/lmV;Vk1'gz= 8RKEy(7IviHЂ;!dGpƸ(+,d#(38/Τ%WA@'zkM:9퇹z<'YAMCdjrR̛ťML$u-T#Z>,Q } 7jׅ3ҢkT>ZS9aЍDeǗzyk[DPâdŖ1! Q/^*]$z]v9&]2\XR Oi8юAp*ر$\_'P0mңs#a' &rd2 9y(f'ls=( DL, Zz6HdBo22C7^-p>Lw˄YKx[y&/nZjZYoR(M$vT:ob'-Lfhbǐ ZQ$akI&PF{ QyPO~UXu3N"NH4 2Ha 1Yn>jI07?`8|ҙoTild+<>\9&wH\p"`p:ie'',f[yzy6Ms 8{U"ɝϙ|nŢ*BL$ RA*.Y+8%z T]wYL kDGu 1oboZ6G)oiQ&3" ǨuBRV {a:@KSݺ7ˆDc8Z-¯s640Si9Ӧu' Py AQ]8/`U+>/$E jje$N], 1n)t$xк$Kď 0Ϋ|  vWc? mRgs]BtFSE`ne/$Z&v Bgalcq7^hˀ3oTKȂ 5f_:Pgxl+bZY?H=F 7x #焠|/BvXN_!PIko*} w$Dc&k cz{!Crx,}H-X<ض~wO2js2tz1%P%4T5{h=o#VEckYj,!gu08ǒ"p$_{F.;K :k=ENRa=(KtfͰAF̑g`0Gqԧ'4%DS(BK(\|Uh؎fr$>LJan(} 31*fYB A"F,F:$E#wR3lߟo2+?[').Œ{ Yihjh'vIyq UA&o=uCG2KGn!dor=?7bqhC>l("xIθ۠}F;-Ldkd{nNsaY2a'^ ͙JQ47 N\M3ʅ.obfPhQh蔀t̚!q/ݤ ))b](BlݱpGhd`10б-+!H#d#ފQ wV<ݙ.prwjic^_8o<84^IU]ժ).2^&gZ.ًFschq0g,M*:[d҇2xq9cn"5o`Φh+u,V*AJHky{mud&=q| g*6F,ݕ\{F/vs/ )7j2GޱΦmi;ظu+Mf<\2/ R ѯ =l8m:>ldd ֭hjI@Ŵ| /)~e HG Q%L%CX0r $Ը@ځv f$ 2-eTRպ:#w r{uD_X6% _x1Zׅ֘qm˜h}VSn?VùlKuqq+^;;4g#7*ΰDE& '?uVD6EW"L2XG.dԒOVFUC$r"9睋pgQ>t/)!rpХ$ hE^~_z6v썚MaKh"FVm=Y9=^ W#̧4#e 婤v*D #1xؙ{.z ڞX9~I$C,^ȏ7F00Ab"l&QzīFW)@*V]gZ[)uЮ`"lZSdqW"ln I"!q?, b岓4Dg#t|4޿ tv-7C|ηrյ09? zc^"v6$N}2A c@:cYcK2Z>$!=ԡݨ<65e Tw~qxSM!7)Dih &T+T%V8WOjm`)۹%Buq yY&X  `t$XR_oc$w DSO_[GM @xVlCX\"l41)ɛJ-M,z,w4)l5=_ 8Q6/f]H7CB(g`dتFfrAn,r ^uR){HUϲYͯAaFu}֒Lq*$@n5ǂ /hd7׋l]ezN9m/ QywgʇŔ9r}]`yxӰ;h S4+9iYO띚Y1>;8R CUhFH}GddΆ| t9DțDf6`y^T{fr/oۤmGo[aQgKDTofF_%ѻLSᾕL ^K Tje@kĻb=_KE%)jaMO40'TH$&ѥƠCo|p7TepN3:wg@rSXs~L2)eDH#C;QU(7M2ğhlCo_bvjp[jW/q\_ pD||# НIS% ;)t. E~KEkN{DCLbcb758 )*|ΛTR`9 dP),@!%p_Qv9CfPrYc8! ;fBD{rlpW]Jh*aoA_s=``ѧ|@)2Zu"|D 8c+|EwXw𦞊uaŚFl*ȖJ`e^^O?`m~}?6{|8Q[tWt7S>5 Gv& >s8'W=x{:N#h~7}4re)Kls ުujU28!j<U‡5(!5?ecku4ᩮXөD|Yl%Rmb~v׵n ːm;o\yܒCiOaO Au=!V>"q1 ğCu΢smYV)Ixb_5 S֧ E#Jäh:KkB`11#D;C̒3S>' FR"o=,sϺԫy_}x1m>yyW~>zaKR7ypCc)*a8WitQsY5!WdV 96}u9KW,(p1-Rn5^ň/'`TZ,]E]vo}U91l":iqU/$J8<s;kKay3|=}y.af(U@•Ⱥ9 IhW# 7E FPk̏IU!cOSC?YLoux4AYUR?3MȯӴ(;2e:]VId o'EyA*MEpɪ-Tgduy`V$ fl -FVmPQT قYc1?h+k@Q65G@/w<_VO|2{U}9,*E@pm_|8<3s;v"sce(BBXWCZ [Ġ12]KPM's]p-ɅjRuG92L=0"A7^8xb<;i6~B 1]mkP^oI!" ؤ}ĖYh7d6-lrZY#Jċ^w:|K4N^:ZÍ^ˈº;)sz nwͨGVN>Д_j-Wtn(؄f[7.୳Dﺑ1}n۪ J@y㎳ ,Pk6oO+g8&뜿ZjZ +9޳ bn-$k@>4,(#FG $̭@wrT*9C!go"uz(1(|amnR9i+Cs(X(m# :_։M/JZLIja@0Rو٩#d!Rb0 o7B%J$uB$Gd[UWmPYY``Z4ٞd)8`UŽuh*O|Y4`3> \[w:h pWda3BoC$_awjӀq&֭~Xh.oP}?&qi>ne 6O6EYEJw cW_;=J&vEHK-i/[tԝ0e4TJmי ]Mڂ ה>NnoyrҰnfZ8hVE܌<E0;4BYk)iϕ Va.1;' _Sn F0h[Q>T0 U"3$b$RG Oi$C~O %.=Vc1Z7*CtW)BS Oi߬s̳V*@A_w\mύT#8Z1ެLmcf bj/I. ]5nZД+&fJe4MB Nlnؔc\5> ź(DB*l,MrogңA A `{M/x#wƢy64^H6Z(= ~"uBQ; 2ܚk ٹf+ FeihK)w"%6)[Or(ܖak~X KRi=nV xؤNS8Ճz}e4x CcwsOGɘgCZ[([;<>lFnuϘѐCn tn%XvCU~ H fis5s\k+ ȑ先 `&8"ؔV& +9~RirC!@>;Qq"ʒ׬joo&[rZܛ_^Ms3M}@th6a^=z m^90.sTnUY`dƶZsy]dcmRB'P}` O KQ:Gnh'b0z{tl>CgWV6mq/Y~`gC;Tr2caTU3+Űw8&Z|ö.v-qzT'lQ mm-->@3.Y+}hid8kd˚Nn +_eW jQ!' eGppuV{Z8Pes]jͭ/gr^3ͼ3)xxb5L(Ndjjwj̈́úk.*媐PlֽV!›uF9afwzV(=\#BEy>Jۖeѳ~LL?U~d+.m{ 'vH;~Nkmk .Q$6j4|)PRHeFr ]lXlkk@<{Gص^>>pOj8w%Ɨ᩠UOii72#+haz]9$|ʼ} Z*ޓ;v-j;k|q7vT^r* bWA74lsp{"+,Xk(%6^EL::6y<]9_ [*/-[[ͼ,OvTp-=Y7>0ډFM/zoFISaq«tNBiW">;2+%H Ljy鴳ϵmF73SS A[QEiB!A%^“4lnw5eθW6tw+ o~)A}յzu1,KC4uN^Fq T]ͬC[f(ZF> ה?Pʬja}଀k3_'D.sI-g$XGKyJ9fP RX =* B+ȫ_/~اфL C0;Z]e Hbu>/΍zQ$o rSGg$T|L d (6]>p/l4}mΜȔMqAhM~p1_5jX4?%E&9 CY.s_dI DOw2F\KOA2@1Qyqw5|Q,(d~"TIKu+ ͬݗCs~qc:$$؀4soµw6 ј KmYܵj֝&M-(% 0<2"g2jDRIIȂ"ԀAd% ,74~2c7XeOw<W =^3VvNu%pEٷ8&s׎+ 1QMC'y/E0`Eȵp5 սzED'v4~#Ƌ '[",)my¦-:&'V2hZĀ׆gp1S "]qflDL+{!DIxPŭc`N$n rجq>UV9mCثBs4<1 vQ[KK&XbYi0\EeQ.ojRJ{|;RރtUVH'[/ qz4lˮdxId7^Hdcm{5(p_NuGP7FsN:q#߷9|H8f"q 6jjBl;R7kdК祒cgK-jݓ,Ȯx(R zP*+ֱsEL~:P~o`('( WeׁwsOT` _v4|SWpUOFIT~"tM"NU&RD KI)ՋJVV\M+%&ev!ٝ{(9qmφuwt%Ѕ3 QtBdWB Ϸ !+׭PZ.^.*MzDm9UJ.1b[ׇ`*X@^щ'hXFjza"Y58 9fFl|d(ka5<58ΠjpAuV(h:ؑ{iɕ`b_)CU*A7tR)qEk"$WwyFo/Qcr^V3? ٱR6xZqK (Y~9S {M)`Fc0NN㦤2F>֐&s'JYaX5кi̋mUhJ̪y1sЀ/M2 d.DYfXbp3[֗͋7$F8 xzf6ͥ&Ͳy\IpUj+rGPJy%d ȇzѺP 2uŅ/re "U|{Sy f"z-_iyL?m,Id;H]Ykmo4dF,|YTU7r䬟$czkYuLXxRlEL׍LNJߤSkQuHkڎf*P UfYy 9Q履S_#,"I/mo49ik" &|K[. k] tBaj(8.?|$*:'|>'t^3\q  in,.?醓4 82j;t$NzY"Prjpc YDfX%;ht[4^b- :q${RZv7 WtPk}e!Çn9eݶ&pF:.HEN(fD\:ˢz_`jzSx[Dn# cɬʛ{ oe\Io>v )S臨-d&^ rsж2aqR ~ԄaN|ϚY/!?p~pmz9XmqwWY![׷U^QP+xb^K[ ت+Nc9v.2qy ۮHM]LRa+Y[z7'+Fc_bT 3X cg ːu7L T ʓ+_D (L%ua  *![s,@t5t1X?`vG\n>![}D?YyЕ\"D2}OpRQg'8nz+ޣl`]jֽ nG%~RX|7/c&qԣ[tȸvNep5>дGLWC[}{}c;_~?|C2+B MMvZ);s̮9x۪ @S991b\.%CNb T%Pueƥ DSUP|pI/q d#r9$ ̊>oחî"Vέkd_cVVZC<|V ~ӱ..+̳zX8k_zNVOتGne<"T0ro䦊9 D?Wi:CϤV_$|}jٹ+ř]K] p ?e,ButSc5XS4fEևyW;.Bߓ3mؾuf3lghxqx?^~]JTQc%elحoh--A~}qf(O&n"X4jǓgR`qHCQ w2pszʡ>BlWY|׭G'^}AR<!3޼i@1akKU0fbf^3B*V37F^Lؖn{y,| @.M-Xl1$-DgVn L#ت;f eIPj eቄy0q_D@9uZpQp~˂;ʖTcxŒ)vVNѾYD3pu)N}@, 8JD0Hp0qXrm#ۑ2 `=Kn0;Pmo|pdj–y]"Js, Bǔ]]e};T.^f]!!0 auU jOvLy,˧-9V۶JȖy;b!4[ iNmfhP┣l5?`L/ͫqwzԛ3⧅³d#Lݍ Eb+ԃثf S\Uւ2](ⱕ${QTI-U8u]'[[f"y $_uZR|."t~(&?pa_AVVvLHCBL 03kx`xM7.¥wzk7o?_:װ˿\_JIn./9\KjJɱEa?+U@ sV-Ǟ>NG{nQ;e߬'}l "gjQ(0ڢ٥ p&IV8&3Z6dw̰ Q1J j%ܯmfrصyۨ==caKe@l}ڷ"EHB*60A/7zkwl'Z gXF'J!@W Je+#c]~l’Liύ,D6@WaE1"E>cQ*x$*?,I?:'/+{lz@1F+_VFjt %3I`U,ܯz*qfGD9[YöC( : bi29qDN" q1LNotjYFm<{ * += #*GYV'*qOf,aQ÷=)G[y6[yH k#F[Bu7}<M2`/jaCo>qC׏wL;Qj$[KS^Kp= 8W[drXVyw]W$X|8?H;Fo0xp3궍eWgEuvVx1 bɑfm 毊 Fm>WgTN@GW︶2K㏈]I`G|yuw~z}hoqGaNzyuj.R\`fvu<=i]Ekx_hY}4z1{"*`bnݤ/v*Yz՜wڂ:}"nQJ}Ӭ V;) sRUU\ :#'j#;H"oq3({_:Zfؘźi"@3m$Z ߷B_9S ߚ.0{r\#]OFsGD~:x4@p|Eeo6,}u۰2D:c%)[`C+A '߈ Go81cy?_ƁʑOѿ0P0/@5oP4;%c2$/-p:cupb!=* J@$4uaGNDĂQ瞩uƩ:? #ZbGd \*\'q&2XpEktHwp0KcY!UfrI_G aoJqu.2sqPظr+BƳSk:9 u'.fByYp0[EEpnd u]^F0:iLij1JJkT6 |D Az:pV{Dګ1e@ԈS =A»;w^TN1]$z< !j kn?DʡY^ lA <6^]`( cN:gzY ,URl,|5rڬń5=k<3ވu>d|y6TVG ڸBft"&lX]MdBpF&hSP+^Xf  JV[flfOJ(dYƴMͺz]]43k#f:`}I1d FEfaO![#@~P_kXk;9j^~~>%/Jn$R;}8w]B$8|GxFSӍWFQ_3צ}pu%#$r)OBj4"#-5z#畷z°h`2 bj=Lڕ/0|1r01Y}րt@?0 1L%΂ \xkCYRVŖ!ixT)*l%؆mᬔJ,?QWH"n)50NuF;PK٦0DrL—5a6 d{I; ^ - vkSE) 8Jgߵe\:MnlcO^^>I_Ykak,R~џۘΜ[/ĉ. - ?eyw҉|:t\$ڀ|3aO[:v D[w4>K&%]XqGJc<Ṳ2W,01mTsQޞU gdpQ;~^N܈2¦䉅) Nol@Ag|u{(e1 l1!mN\1*ǟWK=PGM+x٧6{V.a/9ZAu5U+;tlzα5b 6Tcf91ªKV,pU5`66g \~㥞ιmYUFsʧ1ь~WtS֬_q⟜o~x-.9/xwSJK@$Pج nq-@A_ˆ7ęr yKOuz6ng't(oZ)|9"EXG/rIӥR8]xWnCnZ]\Tv9.E S\@7(}7a:両  ۞ S!{Zw 1V ń@~BwCa]I<6""<1 ~nݤdvS]ѥ: ͱwVob4qiHY#Vf G( v 3Z~Stwentytwentyfour/assets/fonts/instrument-sans/InstrumentSans-Italic-VariableFont_wdth,wght.woff2000064400000270664147176754540031036 0ustar00themeswOF2qq@\r?HVAR`?STAT '(&/h p~ l06$T  [1lOA|ĭgkD1ZDݻjc;T9b [MAwD +=&?ܜ3qf۷owl I(`mE i)#"$[um‰ ]JpN i66e)\l:JE7JKlSvmzaQk)e:vc&\7eo( 4F/c{o>rqMmCMzmi$K^GrVK1k OIuq ŁW;4)LagQgr$ʹ*PGL &&S9ߔU֗ITZOLYg;X']ֵf*L)3lIf)$|07P2Zq_S%ՌL;YOaP:Oi{`SZ&sm5FH¤wuO'*&8UR]$>ƨ$GGI4ҙHuL vb 0hIy 1oUR]#.. ¤UC$I 'xRK$n F6CRѧ@*2YDvpW9 P9COdtZEn:PLgdW A#/"O`O݁4'%+uuV+=g@UeZ&t@ekDvж&T[ ^B4* P)ȤDu%*Ȥ k\{@Ł#na6mREt@ő)@l BWS@%#2E7*<*L{E*T Va@@%I2<0bUx T́io [u]Enh@2?j٩kWo୼XwU>HMnNW~޵0$H2SP?A< V]L1;qJ=&*3gR?OY>GSRi#2כ&.LH" P|۾zt0}FpBfbz}yd3kK Gӭa~ScD)kfQB"r ( I:B̕ l8[uwGSrx a[BcDL`TyCLZRbr5P!P!pcޞld){Ad#D7t]Rݐ?g?]nA92yJ\!C}6fPG!IH6R:D$UcO|u'))k=yJĠ5t\7Wsx>V5 沫y>!^VbT1׏He3Tٺp\OB<}u'f\0 8tk k\.Mr\D$Oc:(0ćaOi1S3BT&:S,$"$T3>"PRm=B>y$/:<AP??>MiR@6+63?`aaaaaaaaaa11aaaa1a1aaaaaaaaaaaaaaaaaaaaaqw>kR*n4FC`'>زa%ei 3%H9ED-;3|ɗ~IgLf7t3v3nd&I7ݤ3L'!r-{ m[RUGh?ﮙ42Fi,i4!dsxO';@^B5M,-ٜXI*~x1D2vWZa3/iS$VT],VU3ٲ=P>`T +&7?? 2Y2Da)@WnE {+;^:.l<[Y-[N6/}4i`9w֓Oh,WyIRЖq=P$%)D]Qpx5mmJt_6^]_=?&Y|ͶEPR mC˽@bLh{vj$Za>{uR2G9#H'ْt{@nGKQ\uw,#o?xpI&+ mMcmr0}f }(p mv:5, ֫kT)[%%IJ@SɊA\ea@ =pmu0tCNFApKФ*HCvI-n[ #T\\PaDo`S DB(B0DD8sVN7 c vQ5*֩7HzRVXU"*n%űЈAMhBfaaaašծfaծfqZUz:@VkbŊHyP$u~yہx#Rștc>_+ ΝC$@h?X3 "!jܴC"]$2C$FI6heU byQlM1bĈ#Fo7x7ވ#F7bĈF7ވ1ΈFڢU˰dו8/SM z.R\~'9,ϳun_i|UtT))3K*}p'bb+(=tc[:pt7AT8._? Om8S-6~t7Hhe'4@i5k Dl66 P5;fLK9bq>v 䳏Sվ+> _JU!nEAHkQd/EQB>6/KߛH8%^Uyrݷ -.>(*8phR@PcJN[E.?VK\'X9*\]JםtQl3OqN>*S(CֲAXҊZ'Jb,S4'rY xo}Ki{IIM& dZ+7*3DHĄHʫdycQC2f`m&PA,L7 y=͹Y9w혇dDDV [Ofu@DDx=U}V-"JRD66~?of^٫08wDDĕ4} 2LNϙ'A+XQ#ƈWy[XFYƦc»ǕD)`}u# ܦ['LlZ~'k]m !蘒UAs)riL1{7?'KDW~y湦M_Io* Uk;9w2\Qd7&~9^tYM߳ߚ~G,?wC݁bpNcXgf/Sds:zC`/?ɥ {Ʊ+׬?=^~eSu%l`F[_rk2KQgzI[&5F4}(p 8>կ'IuJϲ 4Omg>+BTV|`IϮ,#U OkM|71w76 )`~> #oLM7&E6wx +ܛ+ePWir긺ۆz7 }#72zK'$}8ۻ z7*xolmW͂*6g)o_Ԇ81ij/И\).3GվQw%QJ\>}_j}#ɣvH.ךMOzn[F.O.GR*E_[ηs30óժ"e̗ X.r{[뵲fbzBdRPсƙ $,P[&a#ʞC7MqF)sZN$J^ ҧ~gn݃˵NPdK ]u:;dkovwZo_%/GX*ܼ"`фf޷Ms,>X|FvxbLܵZIvɕUUε8!'+[խхMWvou@WnmT7oV?>@ɤ&.:wyeq"-'rZh"[aWơBQdXop ٴ$YVCre*H(0O.IU2mSWN( vJ7a#QWwt{K&H6J&OSYєaV]\+bIcgc Y~VDevh-WRkI Q@ m v ]k_2-dt^ A?.TfcWuqn=C65&fde9xQ$'39Έ2w}T)ؙIҹڿjzuUkbo~|h[Dc`~a!t zc;a`F c"&PZ"D9cAF2!25JTb@b &&{M yt`Xt܋TZ?t3c#i uzI@4p s%YFVdYG6'')!(2J1vɕ (#b$beG aEΨDDDbyb@<GDRu$< $9Fʞ&)X 2r;)-=XWۥOʩ{r=sCnNu1 ˛? TKJYפ5vO%ɫac ј>L9 ir8EIh[aӻ_x*Ve֗Fi Rr)T$NRK'I˥Jit1/cXڵk F[xAB(^$!U FwH$S@@HH hGcX΢A[k-^iLZ\ӟTJw??tѦv>10-`"&ak[po K+x!@qx;b$b%}})DZop'?64ld-51 %x#EL2PJ!@ž,n ׸8IUT1#>PT 5٢tY-xDհYvMf_r9S=Az)dV  ſj-íB7K"XeZVS8ֱl>a?; "H !DiBy@(Šj@Mh7;ZBh@@Pvj;zA9 Ra`2L! \ ` H0 6FƄ1clNx]>y xxFyxxEy{{5Tq.9 M)T}}qk:pnw{nO/ܟ^'Đ2CgNGA)3U$L17Ƭ̆O,zeղ%ۿl[fklf+PUNW\ؕ]-Q<%S E)b(>>wbV/5sm]KN9J]j4qd'#[HY kH7~2 Ѡ z0k,N[ ŋz>$Mh-%א ?܂?c9` SJ%TA9f -Pe*C"P Ԏ:R U`rcHhmZFlդk<]dpI10&*GsQ7s{3;t쟀c`"up8u  A8Gh:,@tHT'zWg-r2.EXӪP6nmږmV7 粖RjOCS:չ.u*ǠBuqAݠ;  ΰ[`.XAp"`A1_yt 5~yv](O=:4n.-n/w!9#z*Єi8žoƝ1B0BԈ*Zh- I#Bm-,Gw! EMTz"mR$_7y/r\ }N+c0 qsqwΰ,.e"\!!ɐ p$0\G8a1+=yFy+(~ӣ߼??m{ܲ0ԠKiAtt-@2r6񢈖T&ͼ۬Y弬KY eU]i[6f-̥Ů :եnvNCjTiԑS4&dF3i3J t.Ui'؞3}/ !- l5["F ,tU`sv~~"=Ao]{l5|W0'L=& Ph@֤4Li*!UԑlȞ2/˒X~)iI99ڔ眳9\{Jph b`/*'|^v ˞ةf*OQm^gjI#5R'L]h0`4MtW:NْzF-6lv#ѝdzz&> $;j*_2FEVrwj`K7 V!(4 RA1*Vb'OjF6ZZ1QVQSST2 ZpC şgxX*;axWFt;K%)'JVQ˳ ?Ҭf=)z**#DUt1mod6n޶(yuE* bRlJQ S*TUP ֩\]H4jUXKiw?VXo VPG#\e܀7xp@ BOhxЁLqhHBƩO eyuY}BBkz_:鬋V`1}x0D#IHGVl&l[V|$p%B! %fhIHʤBO,ɚl@N !0$L!FIpBD@+l2٦< v9 z澹F'z{8V$EFN ĖFKXN^B dz$BbHr`'iJy-F봮*ZH;nJAr(OXyccDŠ$b.vQqB\⚸cOV(HQ|_$P JP 0 D!QJ"K3I#xi4QZ-M"Qee$CWz=<gW 7vC):rs8iيَqO\%~0-~߿ J|zJ4}{?ޯw.T/7*Itܠˆs\DY^("(])QYTDUBUM5~n $D-Z&'j$-^АX,(4LIhNGj۸=ҝ:wZi3g5" YC:윧8spHt y]}˱LE߮W]mTJLk+TFY* ^Njn~guޡ+nYdփ>xIH)* mltNus]*Y.Ld&6Aޟ4oycΙ>\Vrl43[Y9RDϳXÕ`BI$g&:2v_D>Eq\ft#< !?Bq0YnS5d|gV ڬru+AoA_MQTWc*@LidӬs렰pHȨW>[1chF7d t璽R4*xx+{{=>BYW{kO(#'$o륨F.31aIMGLS6խ fqi/FAy[ꬲ`=uYCI{9e*FjW0#L4ɬ$Zm6C7'(o\cdbp>Txވ֡1 6Ul>%}g{gottW{~? %d$P䪓?WqN`ntt&6x]I܃92s,7l)Zbr)\rZn5xBZ']tӫeU&ڥmDm VL pq<&fnN2UOzWזq3 !y>d?"E2BLQ薘Ąth!x{gy9T`y-sZ.Ts<•ٞ˟< D,QNiUgP˶ƶ.-?j(SqōxH3pixXaEOr Dkl]\:!Wy )?햝pHR: . CO\\  hqOC1yS;Ia+B&1}vR'ͻG('3Q4-ryөKm%ԎNzM$qՄt1dm- !hR@ !h5 |&;[~c5?g޴@B叜S JG*2P*_jA վ cʙpgAӟ_;$=%$rȘ8X#QeP݉Y-hcBh['RI2|]7Zj҂U&:aUdT+@1 .MygZ&bdL|g,eS`//C!SLQj ؛3逘~H%~ULd2SGif-˫ uU"Gni`dE%(SF9JJZhrSz`,`;tRޓiI`Ԭb5suE=%~Xx,?@VBfsK<70&MAI.](mݸ6ob>J`u+t [ɁN>\]=ZOFXn<<{rg^Y{m{좸/}/KnLhw B* Y2s6|JZAܱ\WVvJSTeFk5C7TRM~$1wdލfBEJBvnpFpR&\Ƚ', `rXsrr&sfqrε38y}b#_Ȋ $孨]w 8aݣ,=Y 64kU*vXrocsr^ýd~Wݭ6]Ƨg35|k?;iφu>cF淹Dj%k\ҹK\=w%uWNߟ?,َUIz!}PBKpjDa޷6MFQ "G$sUYYq5/ss{ x Fo %WDSDcЄ@21jLlch,7~i:q~"2<.K#6jTF Ē';$e>1NfGӴ'X1Xp D@'vF0@ f\ q3d2é0\'9<|^nl8nյ+qp54hZY΋lQ[M5M %/qʖw*R]G+WiL@8^ge<*=ܭ39xH4?~~l{׿[7җۍ\:[x@Z[ÙtL)MDI@Hi/3M܁,(-DB4$BC},-e>HCd>#r>c~>i~ ΟZ<|8k]D"ֈvBEŦNչDI{c1sɺפܹ ؏gWqI)(mĴ|~ȧDVHa% %ȕc֐&dI$<= @NK^7[r:Kگ7 Sok IcC~D Gt:W}ޚ[z=ܑ)K94fqx@BZdD<$P45$*d,ٽF~gxW*5[Vyvf{q=s"Ks:IBPoQW lʮaЋ+&_-UzN30$1Zu~?7k⇈l'ӟ;iCD1=J-S7;yt,|f*˫ @ J9(2"rdƴDOFn`t$t7uFq'4;pbE.;i$)\4Nк'ҋu/6H˘"`*iD%]_/,hM=f@c:@C ZQZՊZVˁTi~48Ucmﶫ HɃwQuxd)D2vT+5 wҞ/Anz>B4R>iàP]@#rHvTwwdh9{lZa 9>ّ水Aij\"'r+IOe'$#'{IU= Uv\S;mOoJ~[udod jd `})n]w;mcf]n-}u7u y#oݍ!y߷O^n[}y}|'ğzK̋ߢg|ҏ˝O+t"xšJ8ι?*VUw_} ߧ z>0xCh~7_@Ӂ-9x _zoy7|;w|?o~x&|~?y>~Z) ޏ&?9rr#/WGOEǍZbWNi}zϻ>g/! 98)ӣrw]Ϯ/?HNɊ|y| !ȴxP羦K`toy/Zk]v5 z&)5b(h0C[J \g.@D;ᾊcmOlCQm5۽umkv(XөZ)5*42l>c_B UFٚҲ64Lx}H+ZTq-L?KԬ-Dԝ Á Og x-d ؟A?__smcO&ت UKڻ>a{OjD~D6J:`h5[_(ӊ#zr@ sv|>C6WcQ+. ?ֽQ?gVB?7UV=+~a9bTMϣf&K0TIA]_ݢ50_41nbzyO?J_ L?ViwQ ??ll>F!`~ ܀l[mHt xj^~H|-<-1 [ Xٽߡg~*,xK{VaFW]wrՁXGxl8",E`.L+8ןBXP/U끕Я0=8 A?=]ҿZ .+N1[7 #4#>|(w"dpϜoppSXa7_ ~ ?~pjTCN"/g%  _/ A?!>C6Bư+4|i|$ې (<ŸqG,y$|($$%٦؋w\ݬ^S>' zb]; 4G}K :OkXjɖ{&'TIN0=K9%BMgk=| ړx#.$0/ws% W 6OS(fy;8i i1*]6 y#{| q.X `4Shs',0"¶]+d0vB<.|":pcAKUrRvCXqb/nפ@ɡ푿鏽'}ꋡS\НZ8ED 擗ǻ=]\I1x|7g%CnfꕃqM[V6YZ4z(qfGiUuig,)nc *wj o8a _G(y!B`<=SJ$H30FWh[Sku&Xmӯ]DL]ewv5oVX`c G1c~$?f X:YO-J3'.1&IPkboBٿ}]>}j>m23\fg\*~ O ܺɫ'rVicizqw6nj6s2+<7,.\,(281b A,V(HDx~GQAW)dA&pF_j5GIN ;a0>`jA!zNDb\HR%sTGneȯ9Rp0t 򝦴ꈠ!DWpF9_C+ ոFn5$cM*k:zUM }~,B^Y3W$lVXעJVMvipb.C!}ђW.}t&B MUW +܁VV?J7{7JemsJ] {W +?n~Qł7栩lx4w~v/w G+J.SG]iFHyD^O!ҏuJ;F<-^d5]#YQB3eG#{v J W=/Y>{[D2n)$4*k\Y?ZXV QͲ$-zb$쀤֩s]61rY\]PVMc'IOP Y +"(o]+!%/T{ k@!j!&\L( XhyؘpΚDD%b yh$@ft h;y!v 88 H]|-,um+ \kշL}}"]UeYy5V@¢ޛs2V. O(sJՄW[8 Q**hKm6'&{:acP |i:$ƲH3)ʲt&ҹQ|EṞJx)y y!.4< >HNd>C,Ac^kȋ4@d3a^ZW0U`;4ఫ]ɸ!M c' ]ܒ~ňQ, g1Aa2Tѣ 2gBeV3;0s`MJ) &@LV"zZ:Rmh9(_ +*@ b59$R[xLe}T;&gu2"t__󘑮4SNw3vBPҠ-X'p(>I>qu-PZKztN,O&3 k~, yK> 2ؓzY z>z"'#,2 㥴e2xE&\A[3Ɛϰdl{`X% 3O <;ĄQбpݐx1`RVZ7.8џ1cer!gv𢃘w<@g8 pdFܒZBsW..iE[+h",[<`z' ˛խF'SԐ']?*?plk,x-d>0z s5lSĢ9!heY%{ՑgqabB[ q2ޙ ۾0F7h! 2oTI WUNi*:T>mdlvL{#$}͛-gJM{U5Ԙ4Xj@O@`w@~7jJ-ZsD&xkzۿ+FN=}ZnpnjPz*P}o@6 +6F7ICM]wS4ފH6fK/FĞ Rk5z,!=VLgjآfCfÎ<:ݡ)FL߃F[US^Lɖ g8ddž 6lz8>b!9Gt#D޷9Pb6| p3/^i1zzNbOKv8a/,%Z%QP'41U5rbSOt^/HdHMm(Y;0ɋ2E1'qaRRΓK=JlrqoY&M˧nF!g-\^\Weʊ|>9@ '@&LC$&BnΣ+BȒiֲͲRrC1j_WA;>';Hy8HS/$VIf Kҫn0ؾSwT7Yr$go,)8Aȍ׈IkH2UY+ 1̝((4`,FEsFeYǯWjh GeéӼ}7rh6}9 ,ĻbZn 뢡 ,p O,PKزM#53cCruGP*/"?!?nAo]r˽@D~U= @p@jfA"00D5y]LdP/N7V.#Ew^_h)< vlvTQXѱ~g9t63̋~,7Qq1AFk,ԥؕQ+U#շ+< zt,^5ܱ7MiՊ6²_7*0ϱ*k EBL0_1>%D؛RJ~E*:r'^nCUЍfQ_f6AOʽKy) +*@ѴEPbq 'Q6c8(4~!¢*E%tHm^Fe>pPt,զrvSE-yWp7@ zRf!G2mH< =J]0|(/E)ͨ|&l ^b zQ7;UG_vVN @>JA4sE .:.f[p\ y`Ѯ(aT8U&EtR0n"7wuD5`D- "ZKڱNut2`0v-bc)O]h?"Q.P&p1o-Y.*Xa]On̨^Cc3Ǵe\pmˏv9@* N p$:B}Ljd:prJg e5n7!o!8-+MX LV{[F]X#Bku~%"7;mR*;՝C?BϘSP`\c gQ̀Qj6.HVet/6S=p5UHUo5:3ogh}n-eIzFutX[S].F a9sG t(p S,_p(dAt-'C2u-=Hn )^ 9M)]^/>nm=voL$3zȲO(ϔlp2yv@]x|vԂb]IZndu+Z;gGE.Uj!fFԴ|\/jôV(&څǧUeZeRjK&с\3^ 14QKTt8@c#+w3, \$ ;ɫw(!!Yym^ON[", (bB' %3021„ED%kХ[^} XhАa#XfaEH!Wb%TUAVm:u֣W 5nҔf̚ZlՆm;v;pȉSg]tz$Q*v|[2.n^D#N$)4iѦC}2c΂%+9pę Wny_@AB !R$K*M Yȕ'_BE(URj4hԤUN]է?4l_wvLYf`iT=){ nf3a(]4R^ݣ(p^]-c(/BҴ*ȷCwp45+%j]d9|_lNCٴ,3_p~\ّ(~9r8s.c ܃w\ )<7 r,,l"0V~4Aqef6*Ka~-? es:V38ŕAMYw{m̟1("s N"17 O3&O @ԅS8_jI5vd8CхrkhSC}:16Y'ii*$hcT )87~+E^C\*W\|([ T@}?N%~Hrޞ&T4MjE8r,sJ]XG8Z0Y4B7fJ!2Z=J?<.5-u;v.#eT'ZgmZוR~pA-[5+--Iy0dm'*G:EʼV"F yآY̧Y*/L~>Bv-Jd)0lnp!e .%A`_ۘ|֢eZAڒPDl<#xT7:Dj~ pQAwW8p W:]PeId9B!=&2j{Xʾ܊CQQX9 x+9)FCX' ַrji" XJҼ)-%]dxFj8ֱ\씻u ±#T jz[)TR A:U q ~_sYyk K؍k%.Q(s3[a']HϬ+XYv)3PmǫW9NByxiN-Ob,E6g3iK9StZūH#mRԻ 6X>=M7倿nЃWv bhn<sKǂ 8-lYYX:  + TF$j`6;xہ ` !^R)W1 GZiAuK%xZWy^7C@ a[[nqTkD)!eȊWp\_- 5PCM:*6g =. za ̠!-nF㮘9W)+29rs>N%?'èQȻwĵq3 NMFt1,q\xNkhB7|n.?;o|B*>NpиJxx G7 P\7^\DfK}48Ûf@ac &(+ѥpnnVOlk(61.C,|\€+' W:4y%]^1x)>8?v[gڼ1Z%7Jm2,TJ/S!f#֪ͧD0*/R7[4J PE Puh2"Ѧ LQczϛ3Dr׳x=]=-}P+)ï9&f,c2mc>9{:Y93XP'vwk×XئcJءym׶GwqSX YZPLY+>jN•:*(G 0}QO(IHJbtg#Л<,Eez"YE25`7goJaIt(Tqudvcrvvw޼іMKk-6/ O>5Ep:U1b^7RW%sN4Xׯ QG۪sΫ٥ф#^ᘢϱбrm# 0'(cVv1Zouyh%OuVbǑU tt8|w qC)T&c 4coN-ƴThеƞ3VC)pByS}x;bH",4P{Bτu(d-l#fa3ȼo?5D&40`- X CQpc~v/ހ|3BF>Oz8YM(D)׏#q~9_.IKyBS@C|Z5A؀,ء],g7< z:ڀ68!¾Ya،t{e 3~Q˔)L\n~+]O6rzPY9mZ0u3L-Ȱ׍f0ӦAqpBȠy1HQu=Et׋:X5"v`HL|,DKʼ MVyISJCU~BkSuknߣE^BR3<ݻx;tbB3 蝄E LCd%@ a ʮ.sR2_}'T$DF@BV\*H}I/!(cQ=KH!@ɭoL(}׆1L1y8=&`ݙ6k΁#,gXKytDp.Yѽpآ fGdN/zjt,'ş:}$4i3.a0d mxr^BI>DⵒOJP EѓN_S"S*zʀ7O9TM%R-U`'ZĴeH(isg^M4A^s4CL<+94?md%F*%3kF 81\!g%y,i|488:ZV(͆i#s2^GRk!L3 1oqBih2EuYZf$EUK9ʓO& ('G9;`[ }</HN6v|2mu߽ag$4ZQ\]OGJN?=COt >RQWSjU8_$(0PZ/+sK#^=PxΦ2~* _V;Xzx8ٛoXl44|~;%]k%-Tf to_DEIe*h~¯v&T mƨ a4bG9\1kۚH =#3&Ѳ2WE_qsa(`(~\s N`lEٓs&ci/ xس=@Sxt/Ax{#!P(u+i_No]Yp_?ˀ(ceS`1pE.K}\ޘON%BE͹(苵ϔi%b$|P2R J*4IiXw"6w^V4?#PKXc(EJJQ*J%TE|q+s'K5ux&yr[u NA+XULD՜(F gz2r "&˝g@VW^AQE+%q1Ֆ.ѽ7bƽBȉhP?\Gҁ\C<$߂o7("R̐z9)_Ӆ\eY˲SS*Vd)G\ Tb')UgoӔV_5VDELUcyW[CSSԌS+Aq~~xQ@ix4 K eT?`_+®1L 7nFcԓ{8/X0+WB*H1/H6\_tͯY{Ws`yž.?wAN $rK9)sjYm>5H%Y0pCO +x%rkC"l] ÂcBa[(E(6yC]˽ugh4晑sJci S 7ams N*:\V1H@Q}PV=FC#A㖈vy"&XSQfT̂i7&fѮlI2JSgBOfQµm;]=u{x&ꩂwmc)YwMMufgp#㢊\VwCqI7G5x<{EJ`,cq U*Fd] 0uƲnrax>:ǝ"8rK^B WFxK!!-{W4ck- hsE${)5`qP1g%K,Z)0TRi20ezuYF[VyjEx^|%*PٱW eej\YzC^Q$Úi| EbZ:.4g u*D#$ݺzzwHP~7k< fjVzhȢb Ŷ]׊(`oRToKyKA~ Qتʭ^_@mq1=&W[{ǹ׶v ;#P7guQ_G{(gˣ.PԔS{]7PI=^͖\"QE/W!Xhdibń#^\xߣד@KBM|]]\%@H$持)e #ԻJjIGO֤ekdGeD˦<^CPM\]+s7WqAc($ڻx ӘXeopl8%x㉏+ΉJ`=ɉ2c7 ~zRMU 0)LO2-_i2l؋eeuPm'W_ULg^HHg_QZG#ψ~!7gLIH?Vp}Fg8Go$!v&<&sOcJT6viOnI35#0ՔvDNXuxՈMUKWoWGݙaB+Yy\&5ލNMXH9Y35sC-Lg2b_15Hmj;u`n-x+ifGl=Q'uO7jFYps&#Z0=y-Z4ewZy6j܃:lKmv]>ٴά&NÎavS;+#Ǭ \b!]utC褺AڈՓ%!i;:B83;xh+qGG5F#&GԞX&;q-9O$_PEIq2'EI2xWR"RYν4݈6IlR'wf#*My)ǠۣsA|y/п囎`3HmVvg :O;:OYk uթg9 +Ka:,ܽv!Ɛ's<•l}zN|?B ³U;ہhLV!֙-dfn #7elozڮn m >7[ ! I@'h0LjODgGLӮ/g0ЩvC:ţF> !,z#ˡI;vI,nJjZ 9ͥȵjҥ3etZ?ǪV(/8VO|_`~sp:FÚЫM'N_Æ ɣϩHָ(L BǖWh}}w9rn -j5v­e g5Qyr+6@#|&t2j]X.t_wu|uKG$eLYQ]$Y_!w5|8Hsznm~r;!dz/{Gy \cAC$ql: ,<ֹ=>tr3ӡQV8 ў D{_(ka[Q}Z!]K8Gm4zk}R#*f,0WХRje4@gʀX:YpCM,8&V A*D %`k|c6!&qH`@j BvR͍kz7V.@'S^tyCak͵l6 !I7ZjՒS[IEﵡ ! j&̧is2\\ׯhvc`y'ΓE4RH;EY<%P#"~ nB]xQDde{3=jnUáA}5ŨӓtÃ.7zl@C마 $LAb&f=̥bnch-4آ=81N؟{,aþGa:mώA^MK?u{ho܎*H?_%M:\rud[+8 ړBtє7愵XFvT;GKiDZ @::auO6c޳;µ`|4 [ -*yb9{s :DL#PkÑ.#ܒju@8 ֏1p$Br8yc*:@f}vqf:5C(% x/ccƌWP@}1xѨayp9j0v҄(I@7p'ZARפ]5i@!|HNF eL*fhVtUww/Oo@=q,żS)?W&ء6炔q3!l׀ƁG? KK\ {T7ߤyvv'0? vиޘOH9CL4jtaK2íߔ3 c9*檙0-H8^OYjf-h6ƻŬn5Neٹu<Ǟ @l}xmFOD"DaQې' I #@}9@yDe tD$Ì#@H;yQ\'L^CDjFc!Oq+i!PJBjAZCz4OenRԮ_݄Y h @C=pކ o (fE}zZCtƜɶ6EFzG oO' 5@X.[C` a9a1ʜja:Yk$a x]wM ¬Gd' m»z Roԩ)oR`Q!ES_uW07{.eU-IuzϠfߩcD UV5ǔ韬s?[^C,(+be*D5 d6lҰ]ęή {s9Bc`)pΚ{>k8ܠ-Zܹ`xǣ5v,.8%%ʺTRQWA TIQ{`&2&^a!V'/pr5xw3oY 56yČk*͝*? z488t .Ү`.]FpU5inl斷nsCf.I>ͻ=1$Oz^ ^_E.&#ϡǎ!GӲ:~'>^ԧP"Bc !p>XD$kboՁh%_lljC`8.F]B|\"+ Z ɱ.Jy*z_F FIG BxL>. *͗HA HO^1ue2~l43R`9cc-TTt΁T Dђ*^PKV+huukWz;5j,iW4&(e 66r# B"] E&TSh:U|XCaK /&͓05"0[w"2rQ@5bGzA&ofRi2C,V9T*z*T"*L51 kYUMR͞dS1V L?EsEJ$B\k)h CKT8ҁj(LNCSgQZ*krQ4!{Zֺaho+Sݬ ~ JCՎB;()Nwʠ39¾%vWwW݉"nsz{|o4?ƓB'MVF`r&R0K1Lu!mBR]+xԙizW^:+zUӓ.H8hXIA,OfT_eZ۳ [P!3>]16gyakihƲn౉~D22e 9eQLFh+RM/4yq™1$%o>Z^ {YhXV+[ *UZCk/;dkCL6"m :kg)ehmkUӚ;65QBضeD{|i7q ?:b9X<s. ='lnsۍnҦfs57=>[`Pܣ򐴱ǩ;>V(Zb).EJb-^Nb*QXOe-R.^UDxnTBEULJ?V*\9*W*4պ$VqjAUpFLsS8rSN8+C`WhEjJ$=ߖHO,8R\t\v b\&nF#G!hRxW7ˡ3PEk%+f\gXh$M |2ehZb#Y/۰"]ⱒ-?DJw:yk ي%ۘlKvq=βWh#&sEM)4-L]r5lDnei-m3-?VZfou[mԦxzf6nX64{jauyq%NvT&C_NHR<İ9-ΛgX+ȯ;A:DP:I/g}qgON8G7As$`pdQ>f=,dڱ]kp<24D0OB 䤗~sO[q&3+2ȔQa ͑ʣ SGX.ac<57[茞2>u3 s]c2͜3qY ޑ`O]>?ɡ7%,42C񬿗Ҙ.jz+c8@S9aGrXnȯ-NeU[IB@dHs"X^.FӼ "PGS|'|J:~b=\~A5ױB%~dN;N\)}vgKI.MsLq!\:uįJ+:<1'kW_]W⩫]sC6HR)-i]{ŽukG-',6ǽfX>hתBIyCLÕpc6VUJikbN^ijW|0Sk/6}K/): n=m!H=d74-3\Et}I}q@~*Ug!|JWu8;>ᅦP[PrxEj͔^z[Mjϻ&C]oQ초iIeVZk[m&-(+Ԟ8f7:Z:Fa>:]]: ~*ہð8H`/u9T+PW[\Su]?i-a{}=ﱦ/!ƺ#z*՚3%aݯl!v=o9wnLA-;}{ӊNj\t0##GV\-oQ?$E9JfKTT!61mFTgd ѥe),oT"U^^TO3Z&4k[噕J7OjtnQŪQj)f+ ~;hr`m J(uѲ߆mAc'8&hGwl&?;z_5LfR9phHOܩѓ|ɀ7y_Py1gZK/GXӑW+ڬxܛW_`S"tZ}KgVh[%} Coដ͔v`X۶:toWx{{oiDmzB[-%o߷9{Awwَnv+`#ZǞFyQ9| NxOdrѭSKMu3?xs_hk|&n+jlf߭cGy{+Յf;w){Wgu^Ajѽ⽃{WE)<4άmNsѤ{stW12=E+>v{`{gk*A܍2qVlPӼIH hŒMkbXF41iw (8Czi۴z]-P^] !Դ3ٚ-7 %J_ ٿ4i&; b#a3>[*"&Fc1PJahjAOFkv ]U27l=X=[/X{ u2Bٶ--(Ds9ծIY%RX)-5wjOtI+@@a&Dv\4Z-bƆ:XC)6w-!c2YZTV$&[z 7EMwO:b`4uGÎV7mioƩ8!=GPImW&oY̢)7+_de qju!Ik_hf,`ht[]ތc[w kʦ(a)sXާ4igJ{yPH#5I/Aot-@8i٥6؈f%ס%k渷@,=޴%vTf;զM''])V,ʶ.^۔N%׾nS_x8.j7h)vXtNJǵ`mz#TO$P1Ǔt4yG\6/6nѴo~$J3^ m6Qif7o-(ia;՞Q֢ |j;x@g|01vOBqV(taU^Tڑ1R΂K[eiY_oՋeGesN[V/$,m,kBa#a8OJaBHl'-HYpqy:En"̰j/9S<zCY Oh61j2ӿ@ӱY}Ѷ(ؒ\c3Uj!oY^Gt,3 3qB}xM|K*pS̚KOT{z ߂/J3GIm mbc 3=ڜ]i ıNR{̘Ua~J,JK44r[İ*x x`N?Iͨr> ou6Xcm]:9uX(E;+1G !DiN^AUsf4SXx*&o{K>jQK3}Nnr 1"ԯpQu|4P?,SrXGb̰~ZF^d.FP9L 9Z;F?Ɂ*جwyg@B<ۯER9i/7Fmi$^r7"Ϗk $N"U'qgzVAaPWY $LY-BcK0)!Thq;),ˌQ[FJQ(8Ҕ[j"7d]D-B(Zi<,NKcdNww[p`HQe&N!Уj~$"Ok&+%d`4IbkfX*Mh݀EN!1ȹߌsI%ܑ>I4XU] Y[u(q`8CD /\sh"%&W5Mtm_9e6C dmMDDg#B!Lذ}4oXcSnk.*.jl\Z{sr#@I"gL*l_nFI5Uĝ 7kGTwq&h"l8u*[^A6z`)zgkNe]e36nUJl( ǩr&zJRD?nll\aH-vy LM5© ^fdyKbh*}&g8/.q ȃCT/ TR±̃h`_֏K'F!f>Bg*AE} 6x+3y^`uzuSvjzzu ,@vxg͇IpZeI[-3!e|-MTU&)ܙC{mrfPK$R"EB0"CzޘQZ۝72 2 D^Db!hXtrLY5#@;=Ec\$@Q;T{3M,oAZmW/h֖vY>o7%I|n4<0?r-V9/.3Ėơv?.^D拕-Xq^ِzt\v.)J^xN붬W`?I=HRHOLHW͠" vCQG #L6lj$%;۰DInUqmWÓǟJu#GWֻC>Gx%Vf4Qk z85J':䍈5a0x91 Dƾ1vX 10{֊4uĢz-ڢWiAvq~ 41O"7g翋R~D.ԷB[/N0ǷrYtZi/).=D$ip ᧊Az0/ Kq)Z}ܿ\H7U{4#P1, K*N:u:\ꛒMGgjOL(%IؽQr %vͱ$ҊnZ !lbjd}3+'ndLK''eY=>l[,0&1mu)١IiRč>9HUDH8H9蜟'+9b)534dBk"վ\3ͥFf䨏hjZ%z!6y\s-v\WxTbgoUJg{Yڙ!XS{>U˰uy7- :nVr9"D/[IR,t‚jxLrǒܵ;kʐ~TuĂq_z{S,S@ TV,sJowUz)WR=w(I⿃UK ҭaUδj5Wd-#K2ȗHJjEgv(66p=/3N)~.3]gk\Wn//yjvꉜ|8ƈ4{珛`X).5 S"RXSwmtsSEY n<7Xcǿ`x4ŭVb*&.(WX:{R*Tg'`8_L 27JT.kG;3z7 1ȜYr!ʡUChC#@y^h~`:8f DdRw Z>u-j)(()V&U+j<&1LfUTV3L?]VMDODЫV "K%.-_Cq~7@o@L:,]yirݏ-~[XU}e$alhʔ$KbtJA˜$yCNݶ ~zڧoǭQ7} g7 x/-M2 ?Z&K| }nq.Vdfm3{DI_9IۓDZ.hwk5~i.rҤy{/Gnة29l~TfT)UA㚒IK z^N,G^yn43?⯜&zvN)kJW+-1Z{ץF RțR$9 .ѵ;RJѨMge*“ȏ&-פ+S+F^a{Ґ`&􅥒MQ#}$bCnFz~=2mDE5iFqت^F Gir=Oh?{̙|y`i,K}>ïЦJUf#o+IUS`Lx{nނp!r"θQ: 6t:|!.ϺrhNLH']2A]Y!ZgV}.{S@WXڗI\>7*7e#s@0>Da3l!W.Yq.2HUF p,oIIUJсDiW_;uh.)~ekܙ()$#t"=_<5&+G:0˭~^xw饴~KZ*â .![`JB/qZ]!7W21c8p ],~%lr7bݘ93m#C:|.weWbxUe|PDL ڊjQfr"|f3sw {Hfp6iE+cV[ h\1AY1J|sb ]I@[m:qڨҥWP:y_\ǮܠNjގiN9 Bkr [?B?R{X4sw|d`kIn-[ŞA[ itjOݴgR.7`ML&n^nݭøR;>"*\)]^I2VlK2yC9a:fXKy% 38[mt2EhVe;_!OCѺXZi0+gVwTh5F0tr՗DrvINA;T&2@);fe `:g)lJ֩ =Aa"mz X\1H؎,$Z*PPpDYhG|'&F`[GHW,zvY`3 L؛kۑ'6'~{ !<&')LG9povy]OS~R 2،% Ծrwl3ٟnu$n,*uexaQz0+"qkDĔ((ja-H蟢8FmKX<2ۅ>-gIu ~tζD&RHA<@[~x>|H]"'U? 4- H dxH݅4I_k׉UIJqKboڏ U˫A͟k&iFw4Wҁ ۰иLBD7 x@)@w{9;FBa85[!BjJK|3X@hļAUX2pQxSuA]Bv~Ţ_X(s=}X: ݙcqGB:e$V=8ۮӮ%M 1c,6vE63Q.E"]2ba._I'͚N;ߖUZUCv|Ax<@Р,->srVzN4؆sa%w.Wr7鵘2/LUos/ҹDjd7^SgF¼kL9b ޟ/#J A\ңu,4u#9Vŝ{\5HWvQ8/ZL fWbkI-FǶ+JQ[RE+![PuJ 5u T64J-k'?u'.Ei5{?K :C%:JA>&t^/5#%]K jxZ@^>ibSqĩu'M1 T &2ML^ҤEl̘pW k8gZȧLe!NB@%y8 ?*-TI4VEdDsVk3\k@/>IR.R(J FoMj> 8bqC)sm_8U sl8Rδ"3bN_Y0M:G K.nUKYwӭwGG˗ :Y.ecj#>Fχm&k{E 5 f_Nc<;_^q(>ptX2!LWN%ڛiW^ji^86k(L2+8$35%wjKV]De%~% *oa>Gga]+= x@3a6'ERZdB  *% * M񖩦 o8]=|+(MUxvei>M噮cJu[rN߲u2Ս >BOa׉N '<8niWbeÉɜ%6ڕ)gHXP/yEl깧JOʬ߷0"ws׏B);I"nXp1WK1jbwoGkO[0Fg bїo,Du.^|24}PU-4A~VYtīSF77y$6R5Tbwd  MxSpM@U#xi8+-FfEhcs U$YNv]BLx켨bd҂XCM +{) K+h-|hCtZ> ws̜I3Q,RMtQkA+(}?a ۮh IkhAKy}IFr)-|;PL"搿nL>oL5#xGT)Jh?JĂos/T7(-HGk-(pC5;d5J[5ڱ/ FmOvIyEwџ'|KILӀpZo? zqQ6TEA˫HXXAj!tP:Yu-=*&K~e3iJoͬMcmSݳoڡrxځRa+`hyVmonp W دjiF_^H>}eT̯hJNi$cZ@nEEJB7_TFA%\Dytz6rߜW5[iÏp~$d(hj0s\p vY/81b^SNz:8 ֟kUPujoD,q}(]-<|``x<_XX2ltih㝎W}I/|Kڗ\ 5  % 29RHPanxc8`0@Ä8=G..0 CAT3[2 ';"rEs,S XDv#iSEUWbLyTUV[Rث [ap`!#V\*!@/|g2Jq×FLua2dɑ@e* ZlŪ5ʁ n$V&uBIL&ToߪM+tUDAŝte3mXIPzn."%eP޵v%*=^˻MP"X=C&=cKϭ&zJC?`0p-޳m:#ơUR*$YQ)\,=-(2͚Э4 Yю$Y9/U^ot3߈^үSZ eK/R0_F (hU$ kazwP_08yUR+=7tnѕSEuI;0p';0)I(X1 }zPv^f (ǽ @yK T(@_dWjBw|. jO‡7_4j5kq9 N±>X[#Ǯ0^.!  _ .{;V'_|ơH^:%„@O3i+8R~U>'Bzi&04<Τګ2}v ;5[!TEŭ+Qԕt'CY:6KJY(/ P 0)qQ~گZl: R\v̚N~j~bl۞֬\W7z^0=m?pAnB[nUe`e/IE4رhȏi'*2_)5˕ˊOT"5f(RyFǮQ 3X 6>w J/^;h:8hٹ; i&tFuj~i9C1ZE8 0i+qn{l겍=FCzxx_$xͧ|_1:I(w~xH<2+zu/)4w9uO^3Oo ^!;_ڕ?;O}}g<xJS3~~U{Uw7yf&O'?}߃S忼&jON} ~ ۱UK來\yr(w2SŽPs<3/~4:ooUAsrJzh,l˥/./ b_Җ>^UH&gԬOE<9G{S+phb`~׀l=5c9n9yRP&>J1o׾h٭t25ȨYaČu?ڮ:_^7 {00x$Xylg Zw(S^vKG"}}Ywv>کEkqBP߁um*Z9hl9o7ͥ{ )2YxkhE@ƺo C(΀:fqdUS [lyngqGWn'z}J7V2JMf}(Sx1$d`ےeô~Fd.J@3`*m(gi³۰e۾Sj5"PNr{ܐ}*]x@#3bbt& צj.0/pC[5jbreV(G"I5 i߈*-kjM]u c20k`ϽpEDDIGRs)l^eo=^>zgov;\&#>%+ !kJʾ'Jo'f]6΀`a9UWh9px&@gi,>TY$Md)PQiK5+㆜Nr&J&,m=vXzpLw@#d<+N(zk装<ӊ{-f|t 2TW2kPq*ͷ&1oP+TލR~Ơ>UU'xAz Goj *9<<7@BG2L0fh$TB"UWiOkєq[+}JfiMH [:a7{?΀W7;lcXmk'Xrj %i:ED^8 )"2 ,->ᶹSk{J,\V{Y8G,AИpv睘])508ؕ<R _>n" L`+c5BT@cMe~mhq7:?E pla=qV3Y Z- !xAOsӚU\keFߚ.On(\ WOJg|#=y'3oj>5 8EA`KLD#QiIzxoU[ ̃&4Hjx{GTy#mOE\5l9%\P# V[MjV\Y=TU,T2=J-$G3mQl+[9j.{_HPs*B eֲ %]p/[;W-w,^)]N\˾+8҈?cЇ6HH6r+>TXF`\sL$Y%9fmX5cfY0۷q{,|hɏ bcہ½,GBѝFR9AA=VɧBeGtXVгzJx9t!+xqɢиJu蝃g q3C.anX[&f#[KJ$M 5݁sLW2r/1kLJ"J_"*gKq[ΌZejr>'-wNgAc2V'L܊SH%Z[MalS☪ 'W^G+`2A~ovӐ&Q -Y`MH3_c<Ӆe>О\#.$Iҭ]Ûxdy[_^j>ZGtlm/l;bO -\>`5k1]WQsznPi aڃ].gaD5A8"̂夅;sjm!d'l yT./>>1F0YN'ZȿH^E7y$|֚Z5E[ &hUVm/TPx`bN~`5kX%NpG͂RxSofč!p~>^4Tx\L _x}Ad.CX~XGcy O)V>ySJv4F~GcpKqAjb^u<KjOFb^pWF-k)UKn*ۧO2 My āZo7+}p]ĈgstO55^sOx 1:l\mz:7󼼺tl]vtt|#!zҋ({م'(}e!TDK(=t7Mm?A_&-=Q6=iwOCGK˳49,v$}21vvw@OE៖stkKo&'+:M`Gl 痡\& d|pI~zULȴ&A[}~o![QVFAJeWٔf'GYc2Lc=~-qrd޽p/)) =[:Z[?rɐ8:J^VB/1I8@m;l7{[_L=yq>7_q@.C#<oV}S<$xD= ]W=|*X%u2Fo@qTMaڬ -oё~Ōvvlm [&%e+j8 ~;\[4ÓV,8i _RXgA'juBRRZߠO^4vmɷ cqhVk1cjV:(C.{v+'Kf}[bPl4hg@!x8MpG ,m9WoZ\._*CҔ-`ܚLFϰV@k8Eq]C6\Iouxz2_y :(|/skoXV rriN%ș{RI+S᫹۲N q%3"Y DHY.e "}mB#/lD WO/8NɞNjRF*8Uqs?bӰS[n}D%FOg-fg5؛^Ă :@??@^}u}7YWfta4\rlhD@q+y=^e-J lo E5/\jBE$l1 .:d۱Xͱ=bуEh*{l9ހktxyqU՘1=2aov5b~mܐrIh% 9A|\t*؟ڣcD(giAw\_[QB|Juu i}qZ**/SxB{O"IНL@M?;]'])(Trr\Mn}ori jW9B [smƒ/V7$-:.xxlľ#mUcұ-.|GcpCk+Mq*ճSy5L:mۥv:3l;]Ahu}T0XϻQ+U `5Vkՙ6#J|g)9Mq5T `:8oMo4ѴVvq[KHMٝ!jɰ%%7,X*\̈́sջ܎!#8)SF/UzDئ2X^P?A=rFj߹t,7PݭYVEPh4R7aP{F@ײ8Cjږn=HX~b<7` cl)--}[[+W'V6r?cwճKHkp8Fo= s6t/FOThs9z~o~x+n%q Xjmݵp)gDǫa[VR)! q^-kyf mn^HdKk-k m+yUuCJg4d1jN7leh.&5Dh{o}xH@[ԴeV/%.y++hK:?qzGōjB.B,溉]ciW#/lZXo_TGǒhFmz . ZY(=N{#h= k5e+'?ox viKqgު-ƚ&]gMr5iIy;/ E)*^rRPf\r" ÀjHHIԺł=WG]zDf/^Rn9v5" aipYd9\᲼pѧ “lG5@}q% ~n`ƈT~Iw%ξ@` v<_I'r3`K 9.IT Đ/^9\|Knh3'c>;$>6O|GN}cI$vAs"eiXHy\&Yo5C ӁCZ X$*@d:4J1M7Na?+ߞ}"F~np(DSlLӺ6 Yɗq²dHxЉs˻j!Js b_2qd.xțs7e7wjI:Z2|>byưdF7T*6hv7OeXÞ&JbxjSؒzky'ꆨwfeT@:lnأgz!ߧ̮NAkC:2$H1W hݦj(lz8#XA8Tg#6.Faٗagj Ějy~,٤.7pƥɱ 2鿤ZG^|ȧUenm@uİ;wvFz_DݮG8kyUKv{NRt|KIb5 /'hiŜ@&'9j-v<JpĤRXQFby"8(NO.mlaէ=H5ki yI+ZCCg9JgzKݔ_I< `9L6߀=±5/9u9!ɹ|:q1ʵc>1G2>k;}VI7<(?Hٲ 97T#;a 3 s9L]tu!_8:S:|C'sK C7p{0mݎݿ~%=dǿӅkғ "\[ǻzH[F4O?݆LK)^fn<^A@,պui%|+6 Ǥ(Ҏ(*$z>o[.s\դL[wp/][ww$VΛ|K_բ/]Z53̆ɴl=p(+飳d0`Ow_>A ^F5 {\hhA5 &kѴ/tmSYE)S>4X klB sH \y?V߈pl6G>[wqO$=+؟\ScKZ|XP}*iɀY`E'o͸AWWmV~f}DŽ9fvd4&=n5F55`]Dᴒ+2wcv-]vw2Qe|LݦoF5 (X={v[Ē9ٸة˚mD L1-O}^ksmRX]Ҕ/CM =&De4WdYݧ ȌI^Xô?G"F/8!]T4"zldUã[lF-JfXl`nookKMCcK ܰ pkNzJABL/,jX c~AtIFwJ3>]⍘^ @~\ 0MsZ&MJ\*ZŇ!ZhMK1/%3KhIm֤&ծ}TSW~wO)5!GYt [wrju!n6 ׍pcJ^<| (azvuy Aׅgs ^iWh}hVJRx[M[&6V:;aAWP^.J0?:e`8G4sDtzz#yeCT՝dkBa?0Cy96+ #'}21ńO-Y+}3 ;z.VecvHOi0 #~@|w}"8Evh]W}ፏ ?۞i K[|O]g3 -gˊz؂ݻ͹Y }H %wɦ禖(&`kPk/WE:H?Xb6%a?^>8ނ$;JÏO}wL7.-l׃(?>ݹ2=uwBOn~8l.4(s6( uU&v \{&h|hxDt;L܏S$1?t*3mw {Dxhޒ0?T|~?/L  O%N\ ᨁ?Lcs?EV]7qϴ_C`spگoTpxo2gƝS rybPrFwSN5@&1<[Z ֹ%9ᩴQK+9>6R3]]ըQڥ9_q %}|Lɋaj(0`78}ۺUnj{C dԷ>j| #uhRt$Cu?JCF NUw-6ͼ^ͤj_"DΨ8-?]:1^HUos5zKo5kQ9id&ݕ 2nCwlD? {!:x,l9x,w8v:Qܭ‰,s{R^ƺ$ fb- Y5c#w[{fXϞ$|]KjoUo܍F: a/1`~P;ۼY+_u5W~i#m{y[#6@o w8B/i98/RN@RHa!!5 r::I{ݵH5Bw_&oS RJ <SE?/!ȅ"pA,G3Յŗ^6d]đ@w᳡]Oy x P[M`Aʚ?"t!_,HDӢ#ֺk$;U^/a?~x y? "?I*[ Bnpg);!۪m>|5Z;*Sddѕ <ʆ,䀠fojLuqnb 㜐i6yB~N @{. < o= 7{ zce +W^ PրwÎi4NAlAEyI:vĢI~bfи*l~^a; 2V1~5oG?Heg ,^~ ňNM<UVh/0/1*zw2SFa:8M1 m'JthDjY}9_D5TYs 7e #eX>`>VJ?݅|RW+9=^hy fA[)6D5S(B!җY+oc|TmMWQIꊣgUIs-,oTgqjV砐}:$ަsOjbp)P1+;]ҵ H=U1`fM/OcXbP('r__O (TEe#P:K4ap NLַ}^ϹϚۮgz__o[zn~[ɵA onbﵿb` qbO K՜nj /] (/8XWs l9KЊ_锿܀9lVQJ,Iԓ[}} Uo|scGU< yI74yK~q_jpv qN9"to=284щ-ԬY?B2gtP]"=(|P49&㍿3WWGj=w|?ŃF&7gp5/ՍAJZ֒g+6D7HYYvF̌ ;9"}z2˰s<Vqz;sUՄ{G6un#D/i6 |#=]iQkyLYŻuHVB/ժ`smᏧ2_RbJ ;mȷ!u>Ǎ{h ap=bп/ GgոX׳} so3kc7=Ԭ2p6͔Xso>Ldf4~ap3c[ШM^{6z@?~?D4e_ ZӴ p:]C;ǍND;kݺT[z!+mV=U'XG{\z=WsMO =zvE  .[^b+)",,Q8;XsHpN̛ y2v[*w8?PfR&>Xzk:``Ȧ[`j4ltj7R}u :ErrB%>OC=b/iw :nEߧ?2 -1M5'^K `أy9sp9\Wµsox!^3ow* :AA0%">&|I <>AbX!vSgzYl\SOɗ 9%R4*)+T>S>*ʪjVT=zA5:RQ7GշRThx4j5k54ih^lin!ā ~h: kM[kԞ.it]ҭ={VwIճ:=75R0Eq[-$ϭr6=~1<ᢺ^psX<}ިܷʷŷk?ӯ,oX?>p8p,RD2`gX\/}baÞ.cY3r(L(/k-{q%J4%k$eԪt,=YyźWgIً5yN~qFb1xۍ4q7Z6|˕pP֓m? t;vT`p0`b^*gu*Pq0t-_vrmNWWK(Ԣu cHp:Yt1ĀI4G˓*5`5|Q0i*u0h`s88(%<08^&`(\s`7hւ mM@q>E ́xMxUxfj{C>`7l9Vo9Pn[obaq0`%fA +޿W9{JKgDH[_c<.^ m~sjN&LE~Tc6:j"!eQU9yFrxPZfc,.}~X<}lU=@Y?7 aH8jډհw]O{{ӦT`@C(syqT"$ l@ [$ڝ}Di={}d (Zz~m%8/-bwI`:.ZrYKv_Gs6q{cZk|v҈Cܥt:@gB dmp-&c3Y9A۞C.˳`37p5($i"{ A2,$ t/(581]ctm*< 譱Kfz1LV* oBss6~UqI<l|۪I*:f×L TB"nǎF7l SPf|N"Ȇ[к(`r @>@|J JAV.8v mf۳|9= Ro.DU7\][tZS GbD RYTʿ (VǝU;Bߢava26N["RQwX[gK D٥'s,,+rk,r_,`=N5hҿKljaX$w"0㙥bIu%P8Bu0J_4JMA[]ܾ=T^x^w*˪:~ng*"03͟bx5#&SOnñY0ch߾զ_JbD!N-,\^73J.) KibF%γ^>0)OfGwlit60ɔ6ӥRdD^ܗGhWk@<$זP~r3B9HtEij-n$ק%G;P=VP@TOy/ASDNN]CRdxD-,wxP]5]V >OBnk28( 絳TUxެg=%!#jS(ٝ#D361ņ3kUWoVOº}enP}=K,Q~/aNɪ-<ٝ^$?kO~#VJ-=ve6WѨlKP{ 1 u [d#*!o X+v/k{5w1 2h;IfHHiOt|6cno4|Eo ߔ]ocob RfiȡUb;= R kqGgo %j"/F%KXᄥeE!;6kCҸ0}@> Uy5y2@~!& Lg-②Ppkx:Ķ^ìtq36ݕؖܚ.MSePigן[gA2%*ťNE7E %Y\ y͐&>nlP:!ͭ$č.^]ΝxZQ%n/\M)({s>RImkNk[2ϣ3~\R))et{{J8>!8P[X[Q.gZ =mg:<Qu=4 =fkk ^±FB*!aȱ*TP6ۘĶ57&2M]H$ZCkDqZC $&4%fjZ"jG,@Fp8Xo#ɣ&̢B}1?'HI_ * 8 .$E"ZӪ5wʋ8<>C0-]MR;D푷衿'niv( 4&NQܥ)txHhKGB?T$9Xr.jȭZrMChYi?~]>WY =8EϬ^:ً"Qy3m^JpF TÜ "'JAyOPEİxc NXҭnPZHǬmFx~txS&;~]s:4/殾Zj$Y ->MnuR-mx֡ok{RdQs &I6D֠I%Y'9t\%Z;k`]ft(H, ?8-0sh]5` @nv!͖F~}Q̪#&9΀X]Ϙjκ̠&aדXfFZŘZa$&h pd&_to'Wn6Nd G]ô,t;_FI>7"u`*j$akJhmu2g ~(8 R-θ`(~g0mi &($mQiIZ dPK!J egG9z)}jy ޺O; Q,P$rsM4@}BXt:_D25^] \NBq8$h9 j+=9yémSطhL`GZMoMau݂0+*0~Ra Izر) '=iYmQpJhݚ1XTV  ⺚DdDl{uX ɒ1?ꦓ,eFZ l!zkޒ}\h1tTGFS!ʝKnͲ>`lP%!P:'lpDVXN,{Sڂ7YL2.u׋"m!2sR, ?2+ON~EY_ {mrD;lPF7f{IKDg[RuTbf]sKPjW> xڲN}Y$2u.zkM9J/󵂦ez5 KJ!.8/71Ys1}#\~g2e ,>@Hm9~>^i/:VW{Ӄ>#5TG&0{U}߻xiC NzM49-œNvq̖JjrD"rȧ4^ZqU3Yêݗܪ~wO;jobCm67! qXq[ |AqFZE,`r3 j0J),n豻W1ϥ49wsҥ'%E:v@TWvHS DC (DU#H  ˜ \ð(~G3C#qybfR\p%bU=M&N9Xz<^|^eɩ~wwWJIW &$D=.@2lerƉESga [t"ViΕ0UfL jSXd-.U%a5D24g>L̀ 炼\ $kmD糉H3#»JѵFk@I7E D(\!044`NF"<]!,Zls=&+ Uݼ8b=nVH?<0ɝ9̘5|h ozW(p nzG< 4 {cMJ"o p5I0 #9C5mٚѧM1J;^ a0cq{| !mn6KKakC,/詩"!}J,@-A6 aNz8,5_Ϊ)WMJd8+ X N0! Tw`XQ&G$,8J @PW _z'96Tx3;\M=T_ ڵѦ},of|lwkY^!;_;^_ߏZ "iS{^_3~%tǽ ծ@];pn`fMbp1M :d*sb<g{s>l<1|*Gۘ|`%st=\(@5ޭ@l/)4 *BRsqwG}Đ͓ ͶجU`oQĊ.$kE|"S+b^\)] u1㽩y7δ ϑiv9D71s[z,aV;0~Paw"#;#;/=\0 eNg/A(~;%f͍@n$eWrż[Y+/ѸDQfj\[N8JCrzC2j6k:Mٝ3âM#+!'dBfN`HpS֒g\`c2d* *`,Zp9dFeh` (Kv3kP0Uh"&0-xYE\&rIuyK͒<XLxNE [_IzS͎+<ŕ!30D{*:*(t"_kvq{]04\W \"τJw1 K$ . ){ռoK#a*F)jyayP Ƙh#3H#~Y!~ߍ#jarJJ'OaUؙ— ,+>KaWGN[jO`~D9gBӖ|Ɗ=3/B}-ad\`+WV`nwω~a#uLraS8=dFnq EPU*J(j ^\BI9+ղuFDI`p CKBúZ:]X~ V9Vb"C@/͉Oo\ /[azsk~g݃uG$mA L}p^6՞d!D5HDLBHT*u$NM&Fo$mYH2`Ң90s8B,@=[p^5شI+?y[؁mi{JT.F2_-k?Φ"KA7MS@j5=Tn]:J~PXlhP0s[vx5(!gɾΑX}dG}gfT st0=TW@" ڌi$NG*M)r%VCc{b5tQFF(3ICpnH7@e(VK;i!l57tClͻ LG4:Daw#GS!fm:E LΆYQ88!Ъ]*7@ T{J$^W>:0"=y, m stxXi`gڝN 87N_4Ԯ"\jFnk[݇ d0wjӺ?.u98.E}ci)#0h=EitY[ngwvg swC@/)=7n ֱ!U(4A|Sfvp{*?ظKA6UkƜ0?jPU~ewv}T'6@S,][e ~TìQ.N"!ҬۉA "|R f<["\&RU]?pUwl*ҹS@Ņ= rIPXǻ& D9k_ƪTFO1ޫh129[AO20%59,[r͞ lmuHY!/f>q:V\dfU,$.ԬvvX!BE.)wE h܈Pz7ߚZ46`Fl%u\\E㩱ETD d$)iC7H)W1͕j +kVd1nG,LD UI")_ +7J$so`UVz]MOGu!kO-j2̅@!%5(=y)rr5Iy PޱuyT+~]IZkyRR#!IDG*R!e !Pk۵ _) tv6 A,8}%hzLVkb8d $3ְ։ Ra1_kZ{i, B)?QP/h v9_+ ]O;kGPh,+U7|V-/paM׫%׋aY] iduڡUzc`AdWzpQ9 qأ?yt1eJzM]Tڷ_4A,RH/^ꨢ!CfJuh)+Lhvas~t+~n)S/=" g0<~Wn|FՁIGDas$L _WƖem$!Q<ܐa(jipOF_mLSDd]wVg^.] x (+-_Ps(rK{&7R2Xiu-?wsmAxf+ #0EnnCVnP)a[x1q>jHa^`bICp UZNk\,QM$j`e f"r( k긺Y^ ZD`'_8  A7|,u+H<6HM]*X#"AsWgs^9qX[UP\T:#s-,碢WjnaZ:Qp[.^UJ~2ųY¹ڽ{Ox{{ {p2: F85";49]U'+)AMus3[c6,&#q gV7M 7mHWDC˒ֱrQZ\\|4:wh\CVbKV\)jڋ/]Y\ x]uec10 KLdŒ=p]q42`" p҅ fOAAiXEaL˒rVw"|_^[`~|䐎I5`gպlIQeɱ1aylNӡ}edgBRj}sMb,@zD EWpVxmqlliOJbAܹyX櫘'?ly$ؤGn;3 _GM+lZymӴ-k c:Dv YTZx÷7|mvΤ܆K}A|v=崳c4^4Zړ3E?n."koCQ~jL531*"_ǧ?Ԫev^`5Kyᛧv"DX}v bQ]=%y`#I[i#X[ mۇ*?8H=_ sO_f3r:DfNn}70_Uj4=950 $B-s#4$KɎPfc~Bog/F(YWU k/IXZ1T ,}JU,FBvb@&g j&@W8!fjqC K1/qNj*m%呴0xy6&IHNJVՅP׉l#_h0=պ: (VU\+- B!JU_ Px ԞC`XlҕI,;945 kjC Q;^ulUxe^!ʺT$Bŕіl,(QO$;fU.Ά\,YxX{V~ZռeP;鉜37bs \B w_ꏫѣ67 O^A_VS{{.!RpˠC|Ԣl y?!'v/{I{V|o;Ữ'7ȶ{PC`: SxnB=e2.-%z̲͑L/w HCa! BQqWppU>o^hR)FlǽBne[ y,mSx*Dh'$c`Ȯa¸_M: EH:R0[8 c!lm 0Jj΂5QzHapT7_@Rq/B9>rL=>\ a,pHbdf0I&\(Khcy]f0e¸cBA@!}ZnLj :G<ЪV˕NDrP QyHU@vrO괢e`XhBo81!7A\ Rvk[^ Oi v{B9k;51C)iBĵ ֢\n~CrpL&,"}_$L,# uJQ AǢK]ȸ%lV_F}teaƵau{009MKWgaȓkUKIq8tt]? e{ŻV1UM4A D4 =T:ȵw|ZB>$ഄ8Y%@Bڙd$%%'b<`h?ZЕ{%JLc]Ed8VwLA[+ 6GpYeN jUc6#wAΪǶg}mH*N\VlC$Lgj0A/?1@\))FsC*kvno.h۽y3=lBƞgזj u 1ƶTѿzD=dS⯵a}$;V<19;J+ydŸejjw#m4]: YD&Ikoڜ4ABgvvFg{F3;+5)W)c¨Fk(c1XVⳬ[%inm4FGʣ35a: U='gv;y.^zb(J+…&K̕%Ĭ䧰)Ğ&KD'4t`R+0@k˛>tޓ pLT.yI"b<@`ģ&Ma9ZǙ"9Z˰SzY~28FgSR̜%FK&& ڔ"O(&>BYqjs*3{ qwwH~s qq޳bϦ  ;'xO'ꅽ^w (L+%ݨ!xwyQ\0bkEؑ+PInmyRL( G)JH0FtsS\W!d%7eSk>n1`AO>ȶHڞ۷iнD5hAE7" QY*pwJs~vq{\Y?6:#Jֈsy,V1cM Osхup<ڶx^a鹾Žb^uFݙvA4G`Ob5cZi~ ۄGՒԈٖFs {_ G{T_\\]ض6}7ɹs;'Y;恰}7^p桖nOݟSx7ozL *,Fv;x)v\hs^>4Opeyd]aqfGWnL#A2#M-Kdӝ:qŒ ?daΰ| qΟ7 ɓ^.J/ngs+,7r~7/_ñ=6WWoc(j+XZs{a<2o=x x)ݫFP~W4#?<d*)tϼش`AAIٴ?Z3XKCXRvݥ*;{C rv|~F7ػkڕ41+0rjj̺:%6AG;8 X#B-ךq>\47QWqeh6]NՀ Jv0.lrXKuryp]6wm7̲ugV#B6_\Mʢh̲6|E G7 [7XR*͟u^yخx uK[SUon׾wMsjy}k<~Z[][|d ~z?ft;+Ź#fvo3RjcdVph ϑз23dvlĝ㴏p}- % Ll]o.?'pX xv:f1F;5hH4Tabf ؐK`7cv,d6PSܷSa̍<9:G#|NUTo8#kV6V)V5'[$V>Hl4EǮWcr3YkuM'vwا颩XvդZgoh6 `QE@,5/ml眗xojY !҆ J!z9`m\mFuwcϾq>!滵( eAq7Gd_ ͼ&E>RWgyr$s}_ocLZvՕ#Qk㸛$njoIȾM躵۲vM5Iɯl?ՖpYPðg6- {= &,Ryև+7@V0-Ӣ?LHX#^@PUL.w&Kc]9q{nۻ| ~>d5mU&ܰC^Xcnwv ֣G9f{H[Yd3n߆XaV: ƈV۸IeݷNp!ˣL5r>(~f!0 "'h}dZ2|0 k] 3V5x,Ga^]MP-P,Az+^<{nܵ=`8”6?EzUtµ fgv ('Q"5,ۃT]ӭ'Bv xxbNŋ?^YRJ!Iq'a}#YF -e-fJl4<[Da fQpұV-ĭB+bmL 5'ܻ 8>H%en{8xf}m}dui$-K&huV1wSq/x8[d$&#K;!5+kKׯzf8tǬgjb$͆P(#ͭ0N; 7KPk7]Nmu:aǃ79)~^.H 2@.9N/.n`_9L"56&MLh` kKIFwݾS4dF1˃"k͊IJ eF9g; 'B ~ri\WNw;Kʿ~4(-Zxw7M[]tmCB$I#:I"8 xq&V$K(:<uYU0@ H5YCIJ޺ٸkٳUqz&8{1ӥ(ZTu3vgUOKuBǥ4 bk| fJ:\#"I@!!KzKifST&*ȰQ`Yrv(8XP\T)jG;B)7D{nwDh=y%\eÑ943M$.+Wn((vy4-% rf ޝ"H+tCD^JeNd4 suت;L7_jZ1~btvطǔdwt]ǂ1U; fCCu_C\1`wKK~A6 !AlӾnHɺmͩ /{|h>lB6^Wٸ&"Fh6 Rpv9q w,Rxݝׅ&kH4D'GH㗽;T5osKDŽ0$'S_T_ \UȃURk '$>`ANxѫ,STVsͷ7V; uN|i?v`.u pDRTU[b'ٕBÔl2zLtn(XOa !^Rߴ-tm]ːm@I če^@JMǥTWSuP9\+ UN~M6F dF  ,: =GCsy<Tm2NTo{ ; *UX|zʾ@7 ŶIHpg@.cegAcҮ-t6 n(u݁pФ9,'1L?mYhkFxBi>me% b_5ck_rb{fz zo-Wt;L.f~}E^[=g5 :/"giٱuSnߵozt0NŶYJq{Z5dTKL|ɍ.mi3"+x8 /( l/M9K_G9b- Meǒ}p30:CkuY ] !; Fr.]-Y.j6`p\(ؿ  @P&jT1tllKwwE%)4g]$֨ [EB126CISf9-]@ܥY@Gu" F䬎bqqz&yZI&CsC[@p"Alm8CmӉח 0jjxTi.Kom_=&т^V MsoM&^FLl <-3qu;Ь0񈋹kvƬm)sňzqYTC/ ,7'BZt8D}5T[oʁ,鑐Ν,ooj"7*ELfr0˫뛄*%Bfyiuaq"0ꟚA_LG 1Qo{M}; Fn!֟>n|QNQAB4Ry|9ޙ8 EmsBz!YEh;MW-jlġht?neP`[b˙dtKaeP6D4 n)/%[p^8J8%`3؜A@uWCo3ϲ9yz;@Q}AjMZQѺi+Fڽu=! . 'SlE4N#@,,~8ʂsZ<'T̿ ̾R{n2`h(MOP A~M\lϭcﻅ[f#qqyM4?!i)6Ion)I@ BuV%Tco7`1"T~˿BU烈_1FBmƖThʱp ~c-HpTXY"*"R@9iT#:Klnv@l!&}*  UO/pbs;HW=ee`͔ׄH5ԭ)~Zvε`{azӊ[TPUV zn:F%vVdwVMǂ\z߽j4ZŷKDMF4@<8 çU3h.{pX 4m!.8 \EPS_ kViC H->4g`:ѝYZ*ZER ^}ڵGmƙLڴ=N:r!=uQj}pLG3"/Fsdo0NN}'y(DP8GCqz1xFņ84)lm'Q׵X2S"2;c|V 7 \ ZNdkI\Iϙq/v9;C *鉩#Rp>~oIuë+`k׊#5H*+ܑD:tFk٨`F:nmor0=%@C&L7S##{#+;C̘=t@ 4\ٯ]d^0J#|1@V3pF&eٰ=1<+4w>\7C F.\pPsOL`F.BioНyN ]mjs4v֭1.48d_1躅她Ѡ^&P8bI#EŇlz-^[HqeS^:Qe^hwnY􍩁Ghޯ%!2(!r F,[3`֨qFљU$Fi9MG,׭!%2ö )gb2ဵn0„]z6IۨuTWkDѬYz6.dV8!X-Նgi&.'N#[6iUDADBSRror 5Y+ZhWzmĶt?NJxY^ᆎ)Rc=^amLVk~u}VgU%NW1Rk)uW bܫ8 [ [)i]Y"Y O[QnCu!U&E:\Pn6*%n:ݥfa`Z y 21[= q |;*~!Nd&4CP!H WD,p/DAɻ.usòK>E4SŷOLO&ȹE1Bp!ī84.]Ma{'jo [S<>')(j$;B2:0E`T^7e3  rHNʋ*Q핱\[~ WS^\VyHrU90"BnW&nyX=gy9\HI;v) S -ݸJ$ }6mɊ"͹1g3":ثݣ0ֺJ-*^.3T.zqd(+mj$,l oE"O .>dn|4YR-ma62p܍د$ [umxSDFa{Mau<%x#.*gZ|ś.FX$~Ѐ|ӯ\Ռ۴р,^@vt$ mp\-@b4sd˒ &+P3 /OՓt!/ O3Ze)0;pu[VI Z;iX[3.{G?J;(1 [ ,|4FA3Y1-P`ۉ7WQ(2^B PˤNcУ虸EA,@@dE( &hSzC^ڼDA~RVPPx V@+cosʭdd}yh Gi!J@QYLK|?\ӷ) \5%a̸g)a*kŘDκ;/e◠x6*J<)dGXC_GSoĜLyuauTL7@g$刃7A-|afe͇ӵ|to>p"sb6k/L}GGQ~/7*t3C$QXmvmᕽ7ʆ?&'o^ׄ6JqF09O8>BK; m5;쪗h&t"l?\e6404N n>uYxAV{9DJٰmQ\tM,L{ +{j9"{)>Dž H^*D&e?#&OtFoT㞞D}\ᙂ ,!^ bEZRC=J ŋ>-> /=*h/}:~n搫tLz'hg>v緣vb.BL-Y:<#|\+o"-("/7сQ{o5e%?fb6ZsD`:c$Ber^ 9.0*sߖkrt6]x%ZdYscrcLDҌXmX' vH4v̯S-yĜ{/wFf{߀H9LNKb8 /} ՛,+EVѓra聜Wk*.!#jzv GuS2r1$tƥ#{029AS߳zsϪpu#ӪvA70{} uomMt4(Lxͪ'h. ^O&2zυ*EansO6e( ml*h|2;0VV`ѓu:w#jyL]m|Ab_;hO&ؕFP<*Έ5hi%/JKԷms\&5<`3:0׫ f9 30e)#M,'7Ҏ Z=[[X,g֣EJ!RƄFI\'(%3_Zbϭ̓=gwP.'"rR`3;`XQ*݃8"@r dÉSJc )g`Z+T)&G#7S/PB"V.wĺFbFbײt 7ؔ8&lzLlSW?1yo8Ë,֐au^3 NXp4I3 NRt j}jU 's$4yKT]qV`_S lGV@bE)owimmfR܎8RNQ)<I!xS ^(WH+uc[ MDڐzcj;QG(u", B}(W,Zꜝ}sNvCXBŏe%Li.cu"KcD,ABmݥ4r3s<'cULQM$UeYQV5"h96J !k_8a Ɯ.8C2~|.$R0j%ISB5L Z7нXB_OJ' v<,G/)E9R! p[8e`|iƴQ,E'ڡ1ZOWaҫג*;_>fn=ϐuOHMy(x|v[ Gbȕ/BpH  zYxya̳B1U%6{^!;O5X;Qᙅ];`s`IkĶsx*v?Kw{YA0VTQGqnn*G#G 5$֗%:SG6xaiǞApD׃xafoBk cpٝ\ܤu3 lڸ5CӔ3Uq8hap[zwyc61ʖQ;uNGCʇ0= lÃrlI#" F&߷.\^Ѹ' sj$Em"|Ί6J%O#PnpDFu{Codg6,-hRٚ CͶ1z'0N6o)JlۦFDHk{#sWn݈@PhLx9:*B $%7%h$#ڮ%iaK97$|5M6Y*Z;EA#ux)l4>b_n6dmj6Ѫ::a-Z 9MlXxskvYv/NS<BCuipt7=nnf~iw%!/!mH) /97ӵtlNv86*h=;]N'Vm#-LTɡѥw'k-v35ܭ(P!v޴t=S(9!_v꘾~]'=r2<I?.faသn6]E&0CPX96qͰ\8@BܰMt:ϽGMg&ǮkW=I0[ OeҸvE 1s Vˣ9?xG8"B4aQ,y=ܠIxpnK|2 \0?0atnc^ص/Cg>|mEݷ :4w|׬F֗_a5T]0Aꝸbw2 `BABp]2G&M$8 :C4)OI}6nW晉I6~vK2n=REHv<ᚬowǛ "T5{/x}/(zM"E q<@ l޻)֢ V}Aٖ.CܝM \{ܠvkէ`B=o7Lg8M'5|*nRFjqXI4kƄrx#x_ܘd}B5V4L4Q܉&`h;s((K##$AVU;M`!!VY + j__3)@Y)40h F>%Ɲҍ=돖layqF'±)D%S[8cۓlVp$׎8`IK@NԐYc} )A (Fd_~\Ǵ'(I` ]۰BH&]8~hl,{/7"]g CH.Ľ1oiKs1t52,A(Rh^ ;#UHƝ+4o934-9p81rxJ`"9< Q 5uVVn+ioN7O㬕ZXs Q|vn7*ヷQ0aA0ede~3wZom>[RO% iHa.̇P2' Η-Z8+YOa(F߇ҳ1.ސ+/CQs0 H i/(H0H\$Vxz2P)]CJ>Y뻹s.֠VEjؽ2% c5bh>2DT-KE(wˍlj149]'"@SPY+daҥBsCe$ƟkP^=HԨ{yWKHD@1Ю6Wpv{HrzYInto!!4 hcx5,ˡ% R[@Nh 3Jp#|Ok(<# <٧B ^sp,fO0ܺn?v|?hb޿?70VFzQp_v&neO뎎qk ".XٰMbvh{oOD13IB v_i/θ˒}Q8,7Tҩt8ct:j~b &'d̴CM d9ԓcM &bvi8ǟf:aTPv3uc.7"jq20m׿3z~o}R9YNeѻTrm c JCC[2zg4cAGjT~u$!+08v蝪9 MbMm8.' pgbţD) +s?36yLG @W3&8il-FٻHy2qO5+f )%R_~v.+ , Av\B*C{oæ-۪jtiK'(h6Oh!;!6ڹy['!CtldU/[ ,6=iň+A'Bka;廋:SC \q=x`Œ+6T DBE,lr &c"ţ1Ⱥղ8j?wJeaNu&})BL ziz?YS"LQ."o:-36Ҡ{Zzm w3^S8]/ 9K~<vi +j;qn3>V LUxDdƄ nU4?B|d.4*jwaUU8jGϯ35-g)n=ɚạυui=1l:)k{23l6B\'DB.ңzTŁG[:_֐bA{ԢPRf0EcedhV7fQQ@0&מ*+¥lY24ˁ(-{O.z%qßi`=])~Οv>SK~C.u"TJ!XBG|/hr9ʤ('R['V#/*^a^Wj.Qw7aFuj"!?ՙG?# 2bʫs4SϿ/k?'*:h֪X:g6|@0` A-$<)y|C*VU>y#2B\]ݜiZM$fKlO0pWĜgr;b,K=qfSzeG)|CZ >E.ډmɿv3S >щZi'1)Qjv?tq ܸzʳ~%..Mm6$R]KfK$\2%Goњl Y*sDžnWl5CMB"̂jҟ2?; themes/twentytwentyfour/assets/fonts/instrument-sans/OFL.txt000064400000010462147176754540020547 0ustar00Copyright 2022 The Instrument Sans Project Authors (https://github.com/Instrument/instrument-sans) This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL ----------------------------------------------------------- SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ----------------------------------------------------------- PREAMBLE The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others. The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives. DEFINITIONS "Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation. "Reserved Font Name" refers to any names specified as such after the copyright statement(s). "Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s). "Modified Version" refers to any derivative made by adding to, deleting, or substituting -- in part or in whole -- any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment. "Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software. PERMISSION & CONDITIONS Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions: 1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself. 2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user. 3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users. 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission. 5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software. TERMINATION This license becomes null and void if any of the above conditions are not met. DISCLAIMER THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. themes/twentytwentyfour/assets/fonts/jost/Jost-Italic-VariableFont_wght.woff2000064400000171170147176754540023671 0ustar00wOF2x7HJ$?HVARe`?STAT4'."/~ `E 006$L t4 [q@K"CYG%T_~9e$# ϭKj6 qf"EnDI 2%JA6N^6KȖd1xڙ.<#SJڦI<<ﶞ(CDg[LLƲʺmˆ]w]-[]ur>A;e<?`kaTX{u=yhkHi$:!gH!mB|x^3?I5Py!+\":TH]󴖾?pٛ*)AJ&1蜬U-PAN96dI%LQ&K?{s!SJ1$ tf[W&q(PĊ&`RT?'vn.<g , iHb[#2NtBH,}sicǶė挽q̊TCZ'|_WHb*vJF<xiK$T2Lh;dQij80Rn#иQۑh;ʫq 0ۜ~$):bZoJt{>F7 YƼ"f8iJpۛlμIaQdHMx3Q;}`3N?le١ڼf#LҾtFɹ2=3g*2jw<~1| BjJm55 kH yAݪ.ɴ(0 .$$00l߼۲+T|QA@@Al75x&o0 ],w?dre=\ a)m=(wШ쪙LW*sJ$dd:B K.+#vJiA XzZE狝 [=2l<"Tcl&  g oRJ^yC;Ƶھ:r qg}; f;?ģH"._ni^e^Rи| H>uX-HGk]TƷX  =%5ǂboHD`)(/VXV'~5u4aC l8M)Z#xA -se@.+ e_S?>c ѯ0+y2dF˒7`O(H GN$~2~*isy'Xp~2&XIYKXm=;' .e_,7t-ޜ.ł"qVTȈ8!!]ɔc'tneկ5gx⸚IP};;^fQn*}+l5D/дGvێnbd/‘!V~s[mI.!#K1Ss,VlؠR/Pq՜oWzу).0մVyni,RmkFچ,Ч߬Ta" #qN$3aLg"MJP̷ q-Zqw*aIfI;d+ki^Bz!?Cv%:T5_',}uv"ň_\G;X,`Y0K,/= jߝ?!kA19 ߋ@ \&DUz7csu<!* 3/yRK{E.?< =#IRu5h֢]>m"Hv]xyWǺO/;;go}k?~tѯ~hoj0l*D{LXp@cs1.Y\OxM>~G~ӟ~?z3~׽29?~͏}ӿ;Ov O[nYztΞG~w?ʜ@쫏t˭ƫ}9_yW/.)v2y8*K/Yjħ{ȇ3TgƄdʪSӊO8947~Ÿf$[.~lߐ^_z|⍏[&?M<: ƫ =Ҳ͟3^.ZqH?;Hx#J'5D]wtZuU7uWo#} vCx9x,&cj̭s]Kl@C9 95 P/vQDGA:G!?L_iԤ벮OjIqND6@y tokׁ~Ə=b8O?s=Oޭ?սׯ\_횥~]]Q\A򧻷v[*3^%b7 0>:}thϿxx\ΖQrRzqWTWeEUZUT4Pj?͏f2QRgh}9⌳]tm(/cهDִ3Ĉ I&-ڬa̜6wu?ް-R$RJJ*ӪM(7c֜y M@%E*t2$(<$q(QVAF%YUTSTGI=e T4RKd::ꢧQ|->{ D~CvhEglQLLE}_N[D9k,;o%]ۮqK<7aBpT 6]׭|Bp5(=xc6G[|%\JPi=߳AQ`4 d`[&ect .Iq 5e3b'?7_aKWhFI1p]pP<$ FCA͍&$@ax~>*&8k,ZeŌ]v+ّsg6E%$% N?tzE|_sMl[JD! HXzt%,zˊ}||8vX3m_жr9y`kJ'i}皏6MIKAkʡF}isEem7]<済Lf|942?KZ~D.v*pBRkC[IĞ^g^aISb#2Dvu^4d%LPލ\G76vdxOX2lxUr25j!l1 " PGwBCuY'2dߋqv'Ɯe-^;?g6Bi3'H yk-0thb7%8h>rM~vI5Yna ash4~˷QSH[ݔR14-Q܉qT@MM׳/~/Bͳ $O b2 "g <>JC8>Y#'Дk//ZvζѢT)bkbb9O%\-ƾ*&Gl3tWT?M/ƹ¨i/h9T2Տ@=x?$$<}8ޣQ3=,aM$qa›9 g/J7zsR؉!>y9z arS3oߨwb\\0Ӧv֎ EjR]8(cHӑdv.]*BfFIz mϳ$sꜿ3^F zT@_iu/e,gZ%?+@,Cb }h|YIwxⵍ!El2~}:xvSXN<--}RyD<5Yr4NJiHE&(ū-*qkriF`x(;t7@ .or bIeչ7ȃR\}cqKGc.~D " O>\qjt=`)sWXrTd鱶 & KCw&bC ]¨wx>\c4mNׁZ>لĞ)f$ BA^omjϗ!H(<^`)^H$ѳ̖:hLk#et lHmkQ9=BR cP+z1~܊MVke^c#2j3#A15L+ +9#Y;oq$)"M֕*Vy8f!邎3Q{Q9ig2ERgUa u<-ڹwj@FiRQtCKw0Zhe &ӷ7{Fm#x@3KZxSݖq8wMb/ؚDdzōtFOwQ&҂5Z*(gH\OB2Rr?']y4%]Fô6Va:o"S<=!8kzxF4:{5 LZLV?k@=WPZ*=oa;IͯLP ݘ)[4[).K]7L0$lpjO*CP?i%:'`1IIƳ`:C%V}&ΑiHlY/-͢{N++Q nBqg_d/=hnQrEm@ Vfɪ*HQfN]d9Sq(^%2<̘A'-6+>e M,5 F/KhfsT5"O^!PcyS=˂bgL]o>ڏCDq&JA&DBӡG֥Jթ)U'C1]K vk_$ɤ5Oj9//Ͱ=`ӕ2Q_&*-Xdvʘk;2.e9tYZ@4S\wLSM7*^1[z<ʳ)~<,$]TgW8XڲjߠEnH'Q.Ja+Lp/xBMiz'U8sk 0S{="dDl2Ư_A&Ƅiv,?. /*+oH7~jN ".'0~0 70"XIlYk}kjE@6s̎Rp'@q-nƗxbVpl9_=2w+bgHSeu츼qIRe7,Խg[&ppe%jm*˒Wޑ/7<(s?ߋ@ ^%5E*DVEef_eB!i2tjRbZ42SbK 4e܂$S,2* AD;i9]O phl.ʠq5Z;"u4en- C$(V DOrANޤX!*=ZɨjޤjӴkQG۽<{r#1C DzoP LUp ,Vbf6)yDZ.wO,5ITj% I[x!¥[dZmo+Vn}fƶv d2C6_ih̳!k_<~|>ofpTĵ&҇2}aB/0C)cٹb 1h=9ཀ]f6?M-4&f>.Zo<Ņ0BجInaf,M*RZ!eqvAH1R=h3炰~WOn#8޵a7-o7|a8 24 R5pxybN4ڎQr42hޒwR)Q[W?kp&aݱgO]L;G{?~b^F|Ky՜ J,#,|Tұw6T--- Æ2鉺i0:kbjv|`kԧ&u/i)nL%ȭE/Kr_LCcUA&ܩ -* qTӧpu$389[6@c- W@;;YRfhDUe[j 4:T~ūOB}a}ZaXa>:;aݱg!cpip~!oU8N]㛶NdƪQsVq]/vےUw"szу"%GC& n 0#ˡ,ii0fرqYRiPLNJ xB6e^;̭uAi_24ĭE-w՝DZ,k1{E#.޿ K=°"OBiվAcR2Nr 04.5Ƥ&M',ui J3[vK>C[4)Ag_ҎP&hJdW}GԔI` %}5&9=/g ~z.# OHe`DX۹FoI;c8szqWEaZ>\hOwmTq?78fʷoj4EGqHO~.}mCOG}]+_~jfzOkZ˘bϋ'u(xҍg[/ݵ1@Z^֖E iX}`~\ayJ$Ri&%sƂvw 9 3^Q?:AV?75o!bi| P1ݝZ*t:DTy7~ND=Zq دeej\|q e;⦽d3 qSv=<SMV:8濚/P=o]wĹ)`"VH7W2Nl&+DPar<[`>r5t UMy,i P._`PҗT<"OcZ8 )R ؼԖ8ބ9anʵt0!O**P DL5I>=v!nr(ƯuJ1OY-8X҄ɸɑiQ.+X_Qs9jZ?2n"@95.qfqrp w!{Yo~ZqƇ,4^v9$JSX򖘮* MȝRg6xf eOQ@r[MǼʔ78)q QYwU{|P+sSBk {'Zi: KsWNKu7} N6 2l$h5LFC[I`@ƅY(zt/9PC'ػG Gs 'ӾpYISALrN!v!5#:Rn>4H{ 8i<u P@+/gd(k+N|>ӡ10=yUcҖ㤖0Y|ici༇4+-|7q}*>#*l0REJZ$0 fLtءx.o| %SMiW+ޱD/){wwjS5NAn(o?6tqWw(d*PN#n>Hز^Pն|<3= _ѣ62[(W4̏O/Z̠uXo¬^FY%7Jk qZ0F!kQNsv^7Ǣ4 ?> hE.PgxI İ9s9ޅ0ڠ9>FiC>Z .=do뱁uVdZ513|WX*i.y1&GvlAA:6[Nd+|T_$#csסP5n`qĭu, ^ 4hq:CF- UCJtj) S1u_9tl-kj"rUn-``._ݐӶ,eE m%9NE\‘#Z30f3 !vT+>̭I N}ʚ+ȺIt)oj ``LT1dlICѺz!5[Y: j9;;?xSPц(4MLz1܊\xbfk=,i쩨q[IPViZ+ /Peu v3 5{"|gtz~Je;N+ 7be=t~;e. B+c -M1cRH oD\AZhW5 -,"fUo$6r|<}>Xt`ӖKMZt'FI0I9[>jv{4yێ ]EOsGԉ<V@ō~, \yr<8#ՑueW.b w4V8-M@$uV+7 A"P}ΔES`"q0mv9  \fOh.K78iЁ5I_ LwY8qWU ɲ=>+Tv`z%5V]Gn?朿d2*uWْjRI--:csp'V:%dƺsX(ڕIغ ٖF=aCJ VOxf 2|u`ي /TYMxE5FBtFCp Qe{?,8?|}AʱūI E!Z =iu'֛)`;Øwp(D.d`^ AS\D{-TĎ롒C2Fͼ5_G0sH1jjt6ʝ:Гʴ iEН0O`M4R{ɤgf 2 vz#iԹfhWx@̊A" #oڬS5ҦP]DLYO8.tCC Ff/ǀ?INBc!XMy< ƺ"e ,ʣ:ͨZQ~ɯF07կt`gx27,5m :ri_ppj{GP}>s|./;;W2ntkyI^ ;>p+JL0CZGVV| F+=ceD$D[<v'"3z@[iR\s>/Fْ#æp#SS8=7'`L`Zjy--O( "ںsMRL4VhzZd0;b9f#MUJ0]LVIR1Y㡚,'OcYBa|X*FJ&t)$jHZ,pV/6k8U0-KAi23@63B[r0&iS]a_ΗonOpB%z[o7{6M'_B1vYŀC2 kFǷ&(5+::R*҈K#2eYm$^J۬0r!&J8E B7Q5Rc^>`/<:Ni T4}ɹltipZzH_iNJ}ؔDcvrj.^;N*t ݌*ĠJ OC[DY*V-xr?zo[sn+uN#\=6Aqt߅>F#TOJ,o~ALr)3wW [?% 5{K;bI hyO'Y3N`cO4Bݦ;A\s2Қ_K}|,C=0SC~ C{IzKa׫_ ZCȫ4aN}I먝(T &kپxwnԧhݝ? ަf#R|YP#Ia"S!><7\[˟ON˸RC u&ۇٳaB,hIW Nhb450@qVfxWǓ98u& aZU[%ZdPђ>7tl]]Ehr(`føc& r RaQt&6\A-T~ !*MyFTWB^_Sܗ=׀ vo=_*RI{xt,%5̥JL7Pr h!fT;g ]Kv#'exxd^9H}U ee5Y?niqǪpҿyX1 m,<]E˜KqɔjR%`3CdE*"}`$*OȊ3k/2 #PgUgˌtӀϤz+Uސ] N` 4%D EOFL`0^QևvnKL=nEk#Xby*$M,QU$W^B4g(W XBrвȗ ?t%1Vΐa8c|)oGDR" Slk}sl+1vnM#tܤfxh|d]-o/-Y\#e;WXݡ?=> zpob }=L3*NM>ETѱcmfp&lHO{g V~rTR`wN3uJGK.D&\@oZRz_uOwChS0l/Sol2Lތ:)2$0%D>$h*U %Ӵ~M|/4X2Mm9 ۳am:5a-Eq-8N2}2SqU@;5yIAF*`++2peDx)%óz =i5/,nݞe8蛡 _]W#4?}3;- :䣉{6x63&֗`fIej %v nh5DR,f"ss мB q g׋DXΰފ%2V lyoLjCT3_g5쇾=ܐVsyJL.lk?BBUیlߗ@M^׋^Xcꇊ" -VxtWǭ"a$L)4u^0s8%1s##vRw7x,yP#.)cDB5 vC CMF0칟 ́>D ;f? sk|YbW8|òa_*jl=ڨJ+ޯ[>"$D.OoDN7*s 1k̞{q>~=v-xMўXV"Pǥ0X[ZQ" 7SZֽWBP :`9_kf_m6Cz]%8 Hq&Æ:"dI;G 剦~{t & m=Y6Dg,GVmHi*dy"^6̱) eR,ȲltB޲_ku'p)hØ*|MInO3x@ %w ؔi\ $K,NeVB``ZL^\pZl&>2~ 'XKg3v9Lʁd)-*1BxKaH̙3xtlPMd=_b9&yb3PsE^!LVy", N"˲5Qpӌ j ̍vXl_e2 w(&u,t4:u4T+3 \VhYc:_v8EYr& *XIdb`2Rw2k~-V}̜vT嗛GkRdbt> tx^M0\^, _aYdW!fJ{GtR,6p}i,%&!/d);oML^szɚH%I?\X2105(gJo/쉊DC*T<ΠjM>!I.i.of;b=!` % eP\UKP?膉?C*]Q@; rg'iRM6_qȞk " MBt{DBXo>1mzuKNJ|L3Z!X>WRWTg+zq8{7{#{@9_KTbꪍL"(+~韟 ^W],rS9aGk`>y6{ )?ßD>]at4`t@wڼxuP(k. uI=!C򈀦$ L7xq".>gNH,~{C+C%sT9 $'$[{lo;FczJg<ܘT_ddsrB `%xt70m2~6}ka OLxїaP26FAfB1'g~Voƈ>,vN!8By>bM _ '-/$IyBrd@Z$ sl)JeQBcq/|/YO'c*l ;sjAas}NcB) r갴p:Cm&⦼#V9m@A6bkQ3TOVl}#Ijԗύ9NEvn;ωT>xT ƿ>>TKfSN)~LzHcDz&L7u6ߘ~m,b,Dy(gKY>'܋VgJaY91nМl7? W)2,k),M\amԓynZƷ%sPLGc!anmj_ا \_x_n~ 6'Oa VR/GYޞgB#],ѿx7 <3{qNpSNoqĉ=vDz,Ƹ!{n&tvUm.ƜaX>2g76_`4Pߐ.ы֣6쐗"W"˜\)A7@Ծhy I*{ss_5;I,9sgbxÜ2s~&JIM`St -'Q2<?$ɳhP]I%qU**$kr.:XX$4 ̠Ϡ[gx-N` u'hN,o<OuUkJ8kϩ!{r$ykYfOՑaCM:P4z9YMcewXʲ=v#^o^_ _;wXw&@,~Vu-Z$Ơ\RQOQ z5{R?!$-l=Bt<~䊆AX]`⩻$0IIL;=-6%Gq kY9|͡?'QNuՠT9IcR&jq>*~NPg ]@F&$.%cyX^>t8@ԟّ!x ]ۨ5%Yi$Kk $ae4di[d<>2B!B ̵XaɬB],-9v^oAj6{jy*i:Y3?6+< tBɌ" `Ad/JlRzJ[K4mp_a8 Ɛ̞O4]gd y1h/o8#1lG< Py?V /x+f@>nz:!OX@c2.~ DN}K@-GY/mB(,Ը,nǟm&g*Ɏge-1@銿z0L4"{""iu R3)nЊ[Np5k&l8E?^w7w9|`?ùs[4c6w ޶9gkqpuz]ϪwS1spn\IC.*M3)ģˤ(x`~Y ڀlhb pZyrJY܉XP|Q[$ͦ\J(6II KJp6щeyqѪDb$Ŝ}&M]=m$巩ЦbJC*/Nyڜ\QcjRMOw8a 2B=!vPRxށ1k^.u,fņ2yI-S\9ewb/jv7}O냍S}4+}}֭&b]\ɖ2嚶E_&pi+y差/rMiUѥ@s&&1)'o^|CWffN.ܡ;kAk_/ [7h`3&=bYl?  |oШ-pyZh©3t%}lT)$XGqko5{I!d4gJm*iiqQfoekuAbKyԭZc-9 qqT/J(sU$ʓJՐvFk#Xѷٺuk%RTYNy.uci]E9qu#;餫f|YԪoVp{vs17Mu[Vּh LruůmV^&δ3K3nmqA P7̟3ÍW弩l 7sʝٽ&!Oٙ͗a:~ LWq/ ܕ x8YI!S_Ap{b~ ]@'<.^j}_>6R=z\t{o]mSE"lq"|X u`w~D8>jEľ1Gd)w< *<)Ԭf[b#/(,oBIq4 L%%a9n\"1 arjSamŤA<.%<$$L%)B8:uf86q?Pi::a:xQ_} 7``w􁜢[neF2Rlz)u$J *…Y!zs/QO#ˏ`5ʊSgPLZA>(pMIg- nѰ&tL WZH]aǚo$/z_cl|EovPF*<$ݐ |kcK̮s" `3O$C$4ɦRC mڞ(C Z  [ޛnOŇ"Z*Ury9zjBadn+uSe`gDOWI7)*jq~ff J--Z4?\܊ G\.WW'l&O"g(t&HtApR(0KkŅdKy:gtVs0pTX A 'Թ޽, Qq1)U&4]r~hx[aN[ErRdKQc.yb џɲd(@Tǻsa۰1toJgVCgu-&ͨG;V%4DE8B6leT汳qJQM>€ꌅ3usgߩoxxRVw#,{j`"LmD\cYJڠ膕O][7ڼ^ԭ1\5sq$sNw]U ?pfA0Kj"H ɩHȲyA l,gxQ1,mi]2qOڹ  jeɊ@۟"?NPԞNPL<.y|&=^bNF~z!} 8 &l5p>"Y6FY|Vfo-d2?ǼC@ шV,{7&3ԂD>>%Lw΂*i7Xˏx[ȼ* 4*mtVo(WZ53/#5*[XVk#^4\3B6Z!%ʣӧc;n3_BDZ񪱺cO'j9nt oyγE$U].ƶqEsL呏|VGcJ!zmOUb1Yydx>N-۽nɾ#qJ׸/idYRx\!N3a?[ir QsTT5.=(J?E|[N%k&XYn$8:qnkatN[Z=nH%j(~ z4sW{u _i$+'G3,"_)s^4/3:`&˅f$%8n:qqp ]2Kkw4kvBe1W׉|&M67e7kY-xd7Wb127%]>%Z)#(Q8s2RR zfuTY53V0ژY,WhG_t2r^Vh6 lħ0S;c9;P2f^9)֣^ym/dٹuـRP6DVNG{W_^}ޣ 5:aL@x~RѬDͣ~yJB$Ÿ}AE$>xn5UȠ8 _`:|,^Փ tWthwx)f)/Ɖ=~NsO孫W.2ME. ,AzYFg_D`;-i.޷Wq%`ny~TBxkS5YyuƝ5לk5 =5^4&j:Ԃ bFp'fLjU?Opx"85c*m*qA2|@%U<S㔮<'%=|!┻$Q$lqj׮%HǏ[UE:ZcxRL1sp! I|TflY-[-^ȝ͕UbBR%f>C[mY. #=5ՠLFɚN[H$!He.:R!)J̧bSDH:E嶹DqAPY}L]JufoGyqΟqtA0Y3Zo F 䎸{q"oDC$N-_2&( e̽Fs$ያ9 6<*}/z'iB}K8ښi}3 eTO-y+ 3t_Omq| K2o`>M ;0 ɳx#^>lL`&n4w̷_ZaAoAG+"> sʨ w^EM-ᝯj0\(nCsZzJ5LWU%Q }()XYץt ![D)[SA%H]>tF>g#!*mmz7U %`R_=2JN^b{ES6o2elוb`:\I3|pz]meյi4WdCH5^=jd5ۉ¶oH ht)N዁$7 vb'7k^Uˀ൰$i*sDP8Y2fz7B ruR)᥁*SY8{\'O*T 碖#ٳvZX\XNQ፸e=nRl3>TCO1Հ-rЭ L Dv<ƫHg$g*\Lȱ7奺R'W_8/U*Yren7ʎ'|TJ܃:d'm~|jwVi]jyn&˸#,E )siff%Vlu?˂K3dG\cЮbV3R27d4^|"9McpB.䳛 :I)9SJpQ#]5ѥOЏA.՛H)LL9/Nuān0uH}Y=؊ nF`$ERO J@ :{fKW$WHc(tNy^>H&fʛ]JlZiS{σ#Fcfsm"cFuo51F%Ӳ6:SȾ{0~E+ VԔynAӦS؍~ȐX B?xA{ޘIJp+AQ>mzkԇ걣{\K}bƟI6q5ӒC.;y(E *R' 0Q% mZL˚pх)e|@4Ùsw\g$pdt\8f/W?͸U]0&I$qn,٭=/0ز\a㢁 'k;1wC M@[ʫ1]РL`؋ Eh!CXէeC{|lW} #+;1:W{uaN&/]DL,7ӄ:nH2Fj@AzG&{L54̩X0}b_eP) "pڙP[7dV:.nW.͑C~U%Ozo;7SsX{P5y]R̦O'b\{ZD"*-T'}=.G,Ι^4vY@\@iF֨sHnz؆E0 =tL&Rt؏Q J'kob%kͻ] _:q;ϞG)))6a!^ \+-OΖX%>ޟ: ݈Gr,^K<=x1[ȃ&,FJ;$nAcENk"([u (,h& MV%ZA,˽Gs[#hM4E*''ϩVz!UĉP6\1Uxth&ً_@aSkZG,(E -oU5tsN+Ё=mǧL[U EV(nKmYi::sI!,ơk{̇t 1Δ K}2[W3,s=Tm"J4 W1d! QcYs|w2=M0U{͝퇻4;kFz34ZB z$KZ^b+AUBX~M gdŋsgn7=YjP6mHpܗH{twT ½Sf_c 1,<E@ľ7?GD e!,Bk@):$$b_ i]J1;;[ڐN$C-=g[<؉D#EN)DelNZ{}o~Eq^n5+؋_jѮ[ OS˰U^Gȟ%[~LBz'#9T{㯞`! 8) YC! >t:r,H-&ȝYNKHt޵j ffi51 Q!|"}mL^[ W@I>#ҌQ Tko L¾j546fp8XOŷk(Ϻ> j|T04iJaV'w_šՉQ|C~C'=C-jgx(]hTi$`;d\k0銘ŀ1Z_w .Ҡ!+lDj[CX K >KUcN+CA쮄k4? sw^[s-_g4kg5f6w"q%uۣ5"&ЎbIͷ-$E-_&2d }gqؽ5@f4MAgbru'DwhJPi0#M(gVtu 0iƼa҄[w'? oĭ E&ǜjAد@d d !.>!5Bb׊H;W0#})Gh5GOWXPO\ 40lXwspyJ5=Ou_t\6k58~8wfLdQ^Dkh1{~tD+fT O@w6A(4"BM5r &zyy ؜l@֭2i}2L>.I h }6wjÄJG ne͆.iy!o/BFl_<-by0\a۝%S [2,p;2& KTzAj]T4]݇";Ȧ-Fc>ds+a)YwD Mi Dp;=zF({^H3_EujS/=La)ͬxw`؉r̿p;f(i˸mɏ%Fr}1A3P&ÌfDbK <q^5D_t?d@Ib]AЮ uYײ ʬ4]@ܓT~P_2ҿF:L 9[#o'=6UqE|mZFcP*6f{UJ# *Z}ѪE(Ŭp>ZI (g_sHwE.[4>LgLr>&pK猳Œ@nNy> `-8inr '<#­~/A!Bl}-!pg*'2O$7y`wI\K(N igU6= gXH-#Zm<"BX9lmH+ 2#Q;e]yT58܋r48v]_^Fs2]FkOj:dRӈe56-t;\jY͔h:06(GGҀ 0]h26 Oߨy%؜r]qzSb !lDBa0z(_hORJɤb;w OnY}:-zǬϜ2.y&f zC. 7'mTd3MFs .:71foB7<:>66.~ iI*#Wi6#,Jlġϻ[8~U.懲H(t791 fKϐ=FS: 򎢙z?E־]ޟC<÷g!}~?Rv!M0[OniUohh)j]NS!S:1?~!mp&?a‡9L^IKJp8%hD[y!K&^bjq69$)nV]]HWb)Õq (,Uu-ˉe*8 g?>0,F9-Itt+4TG!_ouO/MbvQ (itLOaG ʚ_"9{jŽF[8`&P2l9.pJU+>ppCwϨ@DGq˯* X 5=[Xɫx%` &k}C$(xhre~L9?-&ueȦezܦÐ/Ȧī#@hb` _ qPAGXd-yVxSbhG9(E]Jۘ!NqK/]b.К5eLLXA3ԏ&;jx*\AR4O&/[ָ݁gJ`_֌E%:`#Ԧ~lUw߻dʕ'_X i%yI0+纬dT?~0]ɛ9nhx( #M*;՛LDσW0QW0pt&'s"<~"әZ.kP%DD)ܪG\(+F8nP*,2V\'mS pp9,D:3Ip #ɶ^|Ht)!M{`Ѷ2 i\WWJ  xo"A"pC %i]$:َv7g~`q+ќm-pC_r(]EKқAT2IeK};򳎝z o9a.3wLsǝ^8-m} f,n_w Zw=bsX`؎ EdXzQE$ZI:Yw CS$JIgZgWbxn%ۇq{%wdWq?>NjQEj8ĽRHHہ VћH!zR٤񮮼Dw|&=(J>U!TvH$)AdR"K?u!2iǖ34Ebض49_9kksvyL9b/b%QdvhL7-#,KbeqC'$A&tcل䦴4&W_9KK( [F[mbfУ6ki4*Y;1[k⥆%ppmg0iw˖[|HMߝj:Q<=Eα0Y qLAcV?30EldXu47۳l(үBFu,j۶iQp>Y}Xq/em힂 \VΨvD$W^Yo րx֡(ԁ7:k86Ma_ٚEM9TկI+wے(s!-YPۋF#a GM}?)(aզ   bŒZ#rOֻpҮ{8;1"r.U(3rLL뼞ƽz-ٍ}.pOSgqǕw/kyd?ơߴSU9Q<eT\%g6_av/+EU9 ׬_{U4ͥ0 Dff-dR5h^e"вhA#p:ʲ$Q)O S;=O=~F Ͻ$P|Cei}B$W)ğ>STKcoЍXL"/5\uUPz$3彜 IKNVؑ'aW9P<#%|)e jӚp *Lwu.q\ޗi^3W/k|ރ `UUܓ)) K\#+`W7TZi6N=[\X4~"}HJϰq58PPH %}E|![f )0h6-V핕e lgĩʟ*8i!YQ8^PW?PRginXܚb|(%Tg?G(m_^ c8dh1K˂W%A.ۤGgrM#̔u_ODmZ=t dv-6WVĉ6I| 3mڀE\..gH`+CNSxeǨ  #h3HXBD)a~,ڈ29)=}RgiR>mES^'(Tʂ:t"UyHa2PRjs`zz5/ &qtW[qe] !F\./|Ogq 5ɛj|C5''h WַwZiFr:Hjsrd:?8nnce7pL ThU<懩xrZy[# 0s@`cq?b&_F5j6GPVY1T/G1/CgI5uHYafZlZ͋*~|~lBI\PY\ycBMbvɟ~tگ0oHQ .5fԆ낢e͕-̰n7c*nvoJ"ȌPI^Qk `pkn+t1wm0'OTM*RX'KA͌~>lQضoerV%o ~E#t!%ʒTB1Ö3.*q3&}cnnSE?zhbVV6۰1NSؘIU/!u0fVjȘIZy?9hf14%^@ӝZh[&Ǧrp!Кly}A8l}>pXbJKC%*6r2|ӈsۍOC{k:p;~u82/n/)$d*N* 5EGeoQfwxء̧3&IP;+ lRFb"4 Rmk%^/[b񐑿G$ߩ렗c&TN_^eR6u)2^'#1(H7шpPخ^Yjb!떩p珫i@ #xcy:`ԙV{iU6-cD=q Wy (a⟘Rk h/mz e4rQCk8帪1m^` %]zz^u2ғJY6b>.qG( i6Z|\P0mo@+572Y:/r'ib8moәlk.E@gHo U) $X7̤ve]!=OhdUp79jFH\@SyQo?HpW^b6u}=4}DJT^"1%ik͇>.44z3Gp\AŇ2m&4'"-H2SߕVꏨz. HnOPɬ\󖎜~b&"q?s1fALGb$ U=uY8¥Y?v)L{KKmBp8xXt=w|G ߣ#`lM`N55DyYa6Oo<LdIlKJi/+i:v9_~轧Dmɽ6F+_ɹm/W@2C1 GcƳ8J̑( >r&3 :eܡNm7jҭ֢vr(zd,ZqGNT 95tدQº;{A>, "nuu1BFޭ=lěV$D/Q1sѮfC배 v\J}{bC~컽{VI D[徘cZ ^!.ri tWk6U,_Z*~fveY57q P 4ɟ*Vj('CA'+j3!eDؤ )BAy>*u97h- -Υ 좴3)Y h2jwOwSIM\bF ^k:I'|zJWC,Hȏ~u\GsPtws &:T|uCb*!cM`D.>ÍzrT6#".#{?Ҕ/ʯHew;^TKbeoQ𠄺''>Q•u M}:_t:<ʗ<<'RAy!/iO2G$]rڟ}Z NB cJ.6x\nrX:?.z tBkȚa ޹^| Ŀsh_؞>,EM羠A6QFqÎy`Hf\zDs@ɫNi`9F%%[B0?"CX4RlȬm/oO/)Ýx/E4[H 0Cp",;>F4/I> ~-X|:$6RBᙦ<8i\۾f1xѬ]RTz|L̸O)ft쪖*a 8\ {d<^%*+(3kBEzAMJK}Ւt1đ^#F/F8LťLB'U9j[:A*ˀ6Tq$Y7Q'aprMU[\^A;58z86G o; D6#S,oi*f*~EG'6xFai{b8+01Hp% ?Lqd>s?S񰴽>%a.4:(FԦhɣB(` }Lrl[V2'-]u}h@d/J]bIqC.\D=9a9Dǰ,THbcCOJ*#]~thq6PCد"54턤萰PkGҧ'GX'//VV›Ǐ [TY%+]5fكX'N);4\=͉VÜո~Nri#&2ϋauaP{٣`u־ęNXtQbU~WlUh,0Is8*"  [ƄY0Ίn<"3'kf.7,m/ gفd\(w@!$MXc&p8Nh=Ta>hSn^7+XC[z7|S mq4""*1wYu\ Q$-hLϺ睒WFiQGH.>@K4J.UA|uZ= wi"ԌoɷC}\&vj\ֈg*P|m&H\"?$n% RGuQarGOwlR@%ۄl;>䴾+mk(vi4k/`'Ƕ+w;-JZ1ݩ|Bqbw <πge^0߹qIׂJ%)M.D*;ցd1d)1ŵm\rlYT 'ےEoDUα_#j ){i8w&RF;K ch@K䕁aIf@4E<)iy~r!tmJ",b+:rXLV6|/?-VƜ |i5jo7Ԥu(Io|+SfZw~.D*Q" qZ)Wo-kX8\faڲH.V[/Dc@qCHPH_jѪϮՁGUw}؝[>~ycu=bfwC*ԧKm7~ϑ{@i&@63zCIG Jپ{ltB_. 2uir )%`u2^iL&u:ƺѭ`_ˈ0\Z|.qO a+U&gUA,[6sh_o[F@+BomMR]8+G8e&Ƞc \c?d H?F3 Yr2?pgO}y04YFo`5F驭{(p@$Nߌ *?7z~a>maj'˃z 3s]{켣9gʜvCEykJik( OmQ n#0iB~5F09 S&HD61nQ.C99ОV /Ssȷ7=n@jB{U{Ӄ02i? zMI\ n: ]U}rLH_ %sS]%#(8=DBgTxjv[d[0F6 1 ytWc]v, 9Wuoc[jJ1CrWKw~YX\@  {+K%2x e*UYȪBs9ӁDhb".NYdByˎ߳/j;da,f6fT+RJd6\(<")DL;G0n@OQt~Ьlv֔40G"_c|(QF8iS6< ֿލ:}N=/s *|?3@cpY%.lFq*9Xt[jM$郃!0U&_uiԆ.}Q0(ŚZn6R6S.KZh"_iΫF5!P9lQ \GT2}ʍ4.a|Xeƌo/xD43}z`TbN#yK XUg;&RMbQ熮ǨC-#pl 'XZFP}e@A}khRZ aE#M(fi,F(EIHjk$.'I<(AȖ|$͖D9'#1Uo*R:!,Ks;0#]tBO|єᚢPy]mA,@_p*,W&ftu~ G l[;z:s\+gNK-s m`e\e4 4|qI-BTp:^)T7Nַʖ$^s&D@rCǏյCoАJ/ŚʄMK2`5Hjw U agPe;HJ4Ma=︷(aaDAcqu.T[vM@5Mf6PXbò>R>}!׷ "r̯x7 ?;P ]P_Eaw١Qnb.mgo^p_ gd Jֱ/}?@p"eBwP_Y}VK`g~MQܜl@eey'KR!qV)C$Q\v\% SpáU$Y1 %RFqz^o7t_z[U)IJ#{ pno#.A5v2 ;s.ؠ3xA x z:Ygt0$:f*J8qdMao<Ր18F#D3ZUV Z5ZLRr{sK#k\ vL$gU "ضj{ltO+I s4C▊NšTK bjbjvK&MmqfRYEy6M<&1E1Գf#_RTT!!AȪP m*̈́/׀Eap<{C~lE; Jo˕2h(,$4q*+E*Ll%͛#~!yBGw0A#ce|&,f,9@r]W-tX pԃ/xPnLR D+ԣѰos]b:խw) 1w'3pC)nޤhv RE$olwŊws$e=y{ EFɄ̦1uRSٹIdrr5=l$t6v[×9#}\ۂˆ(T٣9L3rVPr] 3vM|p@ۗWQ)qbx#G0Ov.W|L쑶]DgzC+z'l1꩛ {[rox{&$z~g]V}&?Wzc^Ҏ ˗mJ\;p "EݏKU% +6tASRhِL :!%c _>GD1I f:`zRE߯`#U>_ '6N6!Vv"R/(ip^dy =1yIaS vB0!ml3*<0tv|)~ȫdRm`xތtg 9Un;N0~Ly'Kcs P&},w)0pGhq3gZwt/)PH.=~<&|%_̷ ܷ{>XǼ~ \ &{KTxsBzօvrRτ$s0ZPAY7PoUudFTȷ^5]̦w7K\  " @hRT@Z[$OU+VŤz>_ {YQ:RRLm*0Dinљ4©fgK~HXΌ8^DuƚbH hƒ HE ew @FG8n8GF+зxA xr ob"#u' qt%O? wl rWw34۪2Qi"\Bq o q|%R5 r~L9cemcBr9ǂ p>U2L֍veʸOMiY6~c:zg6RikM5G:yUVR\ֹjiFm$ ki6M϶Œ4!<{:P7oӗccͽdhV>Zߛ<@͚Sd.'uE. (52w]V5;!"KJ͵wwJy3!V;>\C[E\'eKh`8(nr|b5 4C'?2]6Xo|)8ɠءc^Vq/^Cd4ϸQU'A13LS[CJd4m`-hyۨ PA'QwF*!r"puHғgT5,3WV 0(P hl4m(nщ$SQ1oaYiY`FXi鸩ސr`URz"q9!WW,3Yb`z vBOpv b åAR8\b`2q_KuY:;w\ f<,Eؚ#{ϼRs2Յ?ʱ/1ɉʬ@Ls{=-\ i o;A2|O-'?C JUݩ`1Xb\b3V0JEx? VR$Gh 80U9PGGu*SJe_`/(p$a猅'Ui[35"s#iw _&qîctHL}V=e@ [bcQVJ/7;}Mn;T,k&q(?ֳ SJds,86D]Y;6%*6txGzu^DLc fB&k6e!'XVmN<:8qxlDR_dy3Fa;\FEAQDaіV`%>p}q4B&<;zIjQ[Zĕ`Xc+1UQ8~E6U'LU;Di\p/m'`l: ӕ 4 ^^z^s%Iwm_L""8[*֐B6Ja`*^jyULΚS›𞮔>%k=Vs6!-lf\MFѷfIn#ǡIoщS?cHd T Dܐ&\2p+Yg?׫ɲΞ/RTchx,P,W&I9j[UGff:A߄$FzAy0Yx֐b9!/d'Op8EuB.;KoYmC]ZLOr3{)rx/t-iyٜ _! x]'HuJ@T`%`3w˞hgNzY/s75O#(2.u|o;fǿ bsc3,LR1rl@2q>rKCɭQ:'LR&Q$hTjI˾<Ρ:vԕM$$o u+"E:G"ty,, C GK+(7;&84F"M:uq]X2*WJrĊǃĨo-X:Wǝ ˱2Φ4cRVkfE:u:qIh/xrp6NwugR:_E&sgWvoa$VolE_%@oUZuYR mNkr`?\SA^h{i~W&$(!hh1n5Ϗ;;3e 1`B*Yxw8ĉ5}jmc3G"I2|6,!eɪ k 'CV);酔Cx# HvB'B^UP+IWSkv7#سF!—+MǵrNǝw=gQkn,J#^Dw@~C-ȫ J%xCA!0TYl>RdxGCDvvWQZ<T^5- ޶HEF &g _݇v(a:Y|ZdNϼNɃ&,(x CgK D|?zuOdt5\\i'{Еs·6}paƌQFhpܹx;{$2 V 5bpv>KLZzt%_ "hġ(f/%߳2*]y ?1}pv \b|πDߠUŠNd”EA&S!/g ػ|nMGb(תM:a(۾b#&F:BCh/ ZR)jr!`Ƹ{'xI tң[owG&g>}mF< ӄ>*/k|R$Ćt.TBIBpB\өv.u:[~㮆.r4hNA s5v7'}BBEOp9 'v1=$UH1r_C0힭()ZH1A,T8J.J.,rO Ci~em2Tӈ́X6!a\H(Fy\4UJo1O gSorYd̃y4nG*ʠɢz|'/7vH)J Dz1 p[fm |_["Gh1Zv c4.jſE;-}yG_3 K`J&Q <X#y~B4D-xn?$ +I "bu͡Sjk2`;]x<09 PfUp*s sUf؆x0M)qfXt&թM}2Mqf/!+*ֳ.NNVhH ]/L4fEts 8~$6C{m{ _%I7KH 0Ui"DG 7wzq[ x\c UQn'~k3|bⲓӬYWZV'M/5f9&52'W |]5G]iN(B|L_NV[sPGW8tTT\6߿:'xœQ13q6Yg.&Bo/?eȬE"ơL-{ܱ4`8c1ŵ֮ɑ,%ݾeX$/QESP\fLFp.'Ki!pez_+l~n6J6G\x%Kf!:(S0:'t1teg ߾s[eipWE&9 bvoqP@KGйnq/֑v5_kG)wa0nXZʟ"̕ь!Wxӯ 0YƋ%pzLnϹ/ruZ*5m .%qI={#,YikaW|z-|v#ŃhhCTϵS&dZw[t5{`LTM]=ٿbq̅` kO*&ĥ W}#jo*?Opwj@/a͖7}5VB+W&у &`%ҭ өth O7*Ocٓzy.x (!)l~r} 8Qi 0rߊ`MCp9%Ć- B' 2t֛7Zku*=>% 4 ݽܧ7eU86Lu}B`9ff/{ڒ|XoQbQG 8=( /# 9 Ȱl*`#֗gZx)V!&-2c(#o"l.o#T4)d/4'poãId(B~Xܑ|垃3;ێ$ DCK}z*K~J+ vn/tR(W. }Ŷm"@1NTׯ(@[kcE"Ϣ4)riO !::8R%@\hj:NV, H`, &:,FÁYר鬢Lcl$~9\|֤2ch, r QӔ(dҰ/-VZxw\X!9~ڷD ,yCvE&84-V.)xE(uV!F`Ƞ c;4PjU$L&Xn0ԦσRQJlhw[wF=$ip_⢘[2x/yBɷEgD`D2_H8"^ h!:(8E F^jkhQS,˶xH*04b^Y0)tVZqR{e魲r]ͥ+8cp6!} 9*Dv>p%$őVh!FS+3),]m >mbxtUx%I49E&q*;CJktށq2 uBQ2k6FDZوi$(J۔o@R֤L^Ig ~ڡ. PJ1 ;3tEsgH=iJJLa1"R [s `1}` 6wݦ7Bm"/LhrH>>>KAZάM5B)R;ʪxW@yv5r5CΪ%{5 nFsfü&ՙh>{:ޢei1jİY;}x,5+ lXW_`XC#L9yt7I\)y=_Ԟ<ۺ=06HٞHdLJ8K:Uvtcj˼pˁ\c+A"[?A A8θ~ɓ0o/bߦwʨؙ7EyBg)M?cA5"@߼+}HwvSB*hcE! ( *hoQc/!\ZB% 񠮴ɁE9a ]68 `f>5(AlS i*0֛)/&N#u=a!Lޭ%@i^14՛f6rs,L5iу/˕Y/wޫc:xӗh7^%~bt֖tu8ZwR'Fg4Aq/k 7sGa]SyC֍/Nރ-{P /sWх]XP%+ á`m e 8`` brDʼn+̹>x)rRfR8PxN 8Ց ]#K7ulirp"B9r!Y&z+<9%p^>l2z]i7Ӳv{`6ڲ'Y^-5u,oRI4e&ggMl7iX@d]{ov}OMOef鑾ؘl()$™l%ΗSCzyfŒokXhHoˣ_3ڵiL(vć~V;4~yhO;i|4'6dfmIB 3XҘxJ)ObGG =$Eãɑ4mgGj:a2S ]{jB0Y:Ǡ BW"`$UH*`5ڥ|ۃt{#+mZNdddjMP,=*&'r%X_Z[R-6T;gRN8.a!Kۏ% ws"?5Fn3b8Y5l@hnB]AY3{_scr/ NE`i~jt}-h5kЎc}-RfV.UD$DjQ~IKLwfW+ iVr5M1874Q9l"G)W9W #Գ%f Rw&ߛ4#otR_$s# .m֓9. CiP]3Iͨ_P. ZmNML qy KgQ}:"y&Bs5#Rj勄nRhq)"^*aDb[b8,1Ѩd*HN Vʼn/R60 XQV8za{TY;GA@Y@YP`JCCWS0mҖ9HahLxE7"jǂF٭NesNsN 'pKUNs L&={D7>AKS8tlivҍ|l6vl  (6Ri,@:l ͼ<Ti6uR?!7>LlDI.}Dv]VǰVrW+;Q"d, 8 0a/AX& ]'z7­L"1CGWE dg:<, 5 z& 0.j\AHI=2JtO v'1sL&y)sHqyIvِ H& l|Vn_$96 ڣ樲ԵQ4NM~_f~Z*ј0=32ތVix/j Dy?;h!ƑtJ銉pȄT8ZzN_MdB6W$_IQ0a!CEv]?un1i auߍ30 摀 ^3$풯\nn:]DmYSNAk:2ko?múFt/fT Lep4P8£Eg4N(mdZȋԅ}*s$xÙ P(\.#f:Qn> G4lmGzb%tږm=AhTyAO#2 Y|)= et#"f>K d㋷⧔.VgdKY ,}GN`-7C?{'62΅Ŝ>=C\G{oR3K"#%o%n HHo$hH]X낈zw.dBfʎ@%D՟[}r5`vXIJ]2xMUiбlTNh\,hgTـV_Ɗa_A qDQB>7~-&¡׷慙/}D("%om'ճKR x{%N@t8q,b{ I *M{1 s;BQ)hJ 8C.t6`BW3u0W6B(֮4,Ws;czywuum#xo蔩`,VO!6dQ}6y9Vu3j,^pMCQպF1bHHƙBp* 2Ui4B/Lk.`fee @[grprDM\$ I7\ncҎR ȐXEaͤ Ov5T"$ʟ>w(VD'88 *-Zm?;[MZK10Upy,٥1t=U,x_I#neg#3c*4?m '-,*rPSkjK:E5}<$A\&W s:IʇHm+uԜIa7`ey./Vr_d hGV@e3F~l8{p lEZ}Y-W8SR  h~:JCI^ H@11# ":͍8982;۪17"K('+k=2-aGWHw Ʊ'2|?n> $@_'. E$`E@pMp / Womk.pV1>Q6yqFOŢ^~4y@0f@xseA~)>JN/HG'9rNf:|yəqVR7 fnpiuđFܘ 'cOi۶mh5m+\y90^pwv4z< $|08L+[r UN)Պǫ^G:D7M󖭣YWN3D쵱ػL~YOS~i8ϥ[Tjwe fbhNݮdJl| 0wfFc|nb(һ:>$~Q`e:BBC0ݰ*,oM3"P^FrNG;^5$3eY< iWN _  u:k#VùEq|QBdcFwn+Œ-)Ige*4,é fx>>\lKg6{.S1LRx$Jz:ryOsFf&ӪF~5g458Ϸ tn$LV dh,=YO 0Ԫ}s\=,%H@à|To\. n[g LrEIuqU$;ZXLiTdx ;n#u $t8#o2ӭv sR ?*摒F y">){ng6\,<3nRTx(.%䄥!הD{|RbWwӬ reJ")I)TII}ɔYý9'R=,",z䌅eO^HYqҫ)2]wc]P#t;]QWnڵV_CdrNkftE;%bLa`wع^Eq}42 tio\*NC/!Vb&/ 螒ڭAmPRt eT'/ͦ.W}T*Q]?B5㤻sE/0QX]1z_G y]ǭKiYWBhYA\,cS rc$!8OXNhd9crκXgs'( (H^[j),88+ ZL#Р)fL'!R >}c+"+V5dM֋ֻ͙qZ^S>٢f M4>Ţ*, ,YbaI:lmdRK9!P Hf؜O/Kx{8|S)U'H)@ [y?NΗ'NRV"#(dAU!Wsh!kuV#pVn=5G6o؜Y{3JE [r{"wMe0Ǒ&iV:[^`D)`=:e֋èz_ 97!Ac!themes/twentytwentyfour/assets/fonts/jost/OFL.txt000064400000010440147176754540016350 0ustar00Copyright 2020 The Jost Project Authors (https://github.com/indestructible-type) This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL ----------------------------------------------------------- SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ----------------------------------------------------------- PREAMBLE The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others. The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives. DEFINITIONS "Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation. "Reserved Font Name" refers to any names specified as such after the copyright statement(s). "Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s). "Modified Version" refers to any derivative made by adding to, deleting, or substituting -- in part or in whole -- any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment. "Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software. PERMISSION & CONDITIONS Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions: 1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself. 2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user. 3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users. 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission. 5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software. TERMINATION This license becomes null and void if any of the above conditions are not met. DISCLAIMER THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. themes/twentytwentyfour/assets/fonts/jost/Jost-VariableFont_wght.woff2000064400000142334147176754540022466 0ustar00wOF2djJ$?HVAR6`?STAT8'."/~ TY 006$J F4 [Yq@涋mqoXq ;ۡp0/nہȼ>/?'Á٫hDDHVQ23 iL@G X4 vzCXS&hiTs}j""蜩~/|%C!l8<2=+ $tNn@z[z\?=p{L}s*kv]HUtok(="GRmysgc+1X)[\t@kϞ`VTy;{_w}%3D`RO#CI80ˆ@QWmm=ۣ^j? 9Xn`l؀Q#r#VDΨN@=+p7V2RVo|<1Ԩ`i IqIn)4ҟ֟˺ ,YŎ!h3ID}ȋ?u%7y x SXP&)d[>u|mwV-^bH$J015ć-㧶YzRi:bMz\CdIC7$ db IөoH5WOi!4Mw{}Ze5iK@ t@^<l p;[ͪg^o,p9yma%t"<ֽ:$;ɾ7#mƶQ؁OjXgS4 '-xuu{ͦIX*\e%d"(P(nV b&[d'2/^O[ѸKվ )!ߥ{AvU (TYHr e0.U"e7 (Ai9ܣtvQ:&oAִb+z"S/ ' /n?cstΑG<$Exl>4-n=.1|~b` Fv@B`,k'pA646[c0v;5 "p( Q,l7SK}8vtS?=7("rtۅG!dJlb2bV S, ]K2,f{v!e:g`}%mC. 6w؜1m%;%# 8 (( BC 4C("P  UbIBFH[[(XčDJ7B$!.pB BE|MQ}aC %uRJ|$Yǔ1 ; 0@*%D!"dMP:4NEv)vh 9po! #XEe(Kд \h4y |&-f=Vف+,4:A-q@%\@@\mr1X Ct,\;uJ 9HN:-ʋpm FA"6$?S!IKFDA,*BW QBԭmvyά%&To: ?kidedgF7oox C'y^Z9IGO*cpc,2 Pp+!ۄ <r $0XXE {} "x; ?v!x. aB8;M#Pڼ~\ ,[`9vQ=gփtA0q598׮#3Wڕkdyq_3oמi~6Vyw 7Rzy-Y*Vp]'.Ƿ6N6Cݩ[)s.3N9'o0=xʃx{c/+o^z|7 <:Asbe5) $7vsxQU( ken@\8ۮ=At`}+4 W UY9قx̿L:i]utIh?anU`~ d[X@Jsߺ~mWn?t^)ZwԜJWgWK |uԠ.Pϻ뫇+ZCz{JNB6cr%6r(/r4و)JQ2rJx.g "duwSϼW2U 4ʗ|ͥ vɩD , &Zۉ5AaTQOqNpr)Nsu]"/UMn t[;SPV Hx& aBb'G)>IY}e.Y~jvj.H^ޙ }}C^`X+ FqJ헎̺f ! 6寙u1էߠh2fZq2TQ')Θi``%JAP̞TR|`߶d|׶3%F!ZY&ҙ5Q=#%Hg$#9#9Cǖ5} .o6[Iy+eA]i`(`{qg bbBHEF pI v*>F:"Y *EQ" '|csS3hFh)-]$ )G^4³Q~('-B2W!Édx z T"V U̅] T%\z#YZ QF@5 =whdMa4Hǖx 6b=ǀ^al|(IntGg{@ UV)Aێаڽ XsMG弸nT;cʝ<[zrzq4Am=icG"yI"[xFssh^ 5** , X,=Fdt=#\)DQ7> R&rDJ  edWB.PBrY, d9R8UI  A%:=w\؍yu[UGINucA`S"@#!7V䫀6q0f&{`xq3*`3,Xu#3vAX#6#YhnPۿkPî ա,bϕs[)(M JVx+,AAp110VT /898h˸};TC/DN?~.*=̲^)^ڥnN8έ=J-Y;u8>L.]7?Za9KdԪL9ǽB;oj,u~apVYuĜQzo ]ĜXP5w8ヤjW9kbA:gO>У!UPv`X&RuG/|x=u*!ԣhkצl"h+)M8!;t9yŶU@O %ᙡ9٩:9N + V>eh[yZMf!''{>o sխdʕ&+u$i$OE>r`塨H$Gϳ(tR%k\5K,\L%.EOÈwnonf^HOtYvͰx}Y:-L]| 8x^ q =qt!78i =-u27/a*eɂ! nuD8d]J{JqPhwMbն{r(5q;]fB s oL81kכĔu9ERFe" dO~{M :&na[grx8θE=q^[m9XHpÖu["+pAMɏ)6'*a9F͂ 0IO)Qݦlɹs%rQq٢'hx&7U^26HH~2W{m0N?'RDOTL  kD B"|&>9hz,U!3s\b"2ݜ{&]A4N+ E M EY98cgOHYmUT(.ʹɔg)=-))7qRIaS|X:Χ.ȚNR(vmn$E kx/3AjE r EUZw#ON a ؅_i"(TWhi6S~JlPD )Uh!BCѠ8̙Ԓ_C`Vs, ;'CG 3)HL LĐi)UW+5me]ܖedYQF7?>5[_ewގfچ]$+a׸y<(/ ySPwyVDz(Wj8\zpf"%P! Ɯ ;8ڿ́X6+q|T%; K6)Wa*gцAlR.)rob}^] yY}VEK2+u:bH-){AINKbƕ1c+adDU1MÓJگjUUU& ̺x/+U5 ozV$z$y7t9JnlTOz c :J/~qux~(Dd@Oх)$&*|1[* B a"V(pj}> X퀛_Mwɹ"4_[Vt?FzvɮIjYn~{:w8Oc'_KixT.NU_n_nED v%a.2U[qG8g/΂J5&akH, B7-}:ARݢ)ɓeSqK|RcϜ)8BR%ZBΥ j}m^^_;$%7'g| @QJHMtN7+(}Bu&^Ҥ͓1/s\BK [,mҴ| jBƙ Ih%-eh~lOԏpy 4 ̍Aq آ /=tE&"W63=w>0ET̼2Dm;~8ep;Uzf;;OYugޡEfM\Z-o>ҦaMD{`eӺJzKl}"Gm e6e(HʖhnKMRrLvEp2"-.FBܴO=d3:~Hh\ A՝tbRGץ=`1+oS꠆_ }_Fj,w=5t5K< `. {Mڇ[qVu>tf>o˅qR3׾%U& 3hY(tj9=4&*6=h#,UݬXhʝԝQ(2cEKuTj1֮^EyuĶiƆn0Y~L|!##Z1U c+'ż2ȏ}b q挳\fG?l :s^svK2y,fsƏ:q\}}jWTrG_刡uɷ:LUZuolL%YaֺV]͵|fB<(|ֻ9 qBF, Mp򗛞.yEt_ox|*'iu`.,?0!TS$4+jD\ȟrޖ+1@^V<*~~#'g)7 1([}D:Y'yhhۉDHKth"\WC6lEѰUNjqCL5uuI9$^Ys(I_XS`|R2q=4nBܯ9>tqrP鶌FrNNyY(`֝TWo(xt~T<J"N:NC811˜_Hcr=O,ͼV?;DNɝns Y9|j6'67T-gO\.q[c vn MpMl2QXuXoMό@M}K,u3+C~pl;3 Xys&j5*š^X"\y'xoO {JvہpL+GfomTe˖Hu*h+rfmwE#uukr!JP,p"Ҵ)Uwݓ{;[{W[ﯲX`TkS}RշBk;"]OLUjUZMF01s#tjU=F2'3+g2zX>,KPj4oZ{]4v$zHH*i9UF͗1蟈\>AXU*ckҙ2y6W"[?mxdjYFG_ .9˻DKœhPSZ¬-e3%6 νq!0 oM+~9w&{fy1y2#Ӧe.u&}mݔ%>_џ:<4Hn?)Mږ2ji̜$܄pmy(/~o9:Nv[uՓ.VXլf}u b_z="O U$HjK)q)4s*!da7٪y rД>fs`,Y6-p2\,Uo}| J븗^v:Ǚ$g~\Xht,F(*Bnz0ɬjjjd݈$)ojx(?+&f]?>YV"͗CC)O?{2QrDJIW:RWrrAe:NJ-`':zrTڌ2ۥH˹X #?f{${{h)&^pW֞(Xb-Wj&_eh:nClЈ03}fwaZK#L5Zb^ϢW bhБiy,ȤZ&G2; {5茳1IsKU.ʚ 1t33v2I"P<~2{ENW{K!u%@,Z= \SE-/pW"u{-z9]1`)ZKG$gq7 x o1}trJp63#_>xw딕$SƯ.؊@& RX$M 4dp(*LOQ&z@}4-S%27eMmEq/ [`wK֐5 ˔%L=f 2j o2K&9 -LCq2qM2zd*S/ѨrifPӕ=FSW2I djyO؈F㽅DP?Z#rIeU tzhE%k2EG].nYw(f|ȸt"QGj~O8?]޴ V:j&MrS>kv2a*pX}\%| 2W@P&QWڇᄊQK qxBL8%ٿ?} \c۟>E.>/>]"w8l~܍"Ao0PIKd>U1YoF87OleF~<|{ՎKJS.7YIGh=;δ0zwQN-iיHLfÁqT̷`^۩1Ym=w%!r+5&? cDHq ̶w:65j(WofZ*VOV l>=42qvHMP$B$w1,"(r7{j"Քbk2iUK%HtbR/=e$B0D w?wr.?MCGaDqyŪ<o|lNaVS5~_"yjΉcy y?ԅ#WK/xT VtnyuQk.+hrfV's%gU0^PϽV64"{ \%-)dHX'M<*[b0KO-` Ep)RZx5T'US&QjOlP\#W2nX`$0?<dFB]`+M)ojBvRrx]$f 1fGkRtP\T߯UzC}-9  x:+dL1Eh87=&A?A { =Rz+A:8}~ /D7[ݽ^;Gi{Aݧ/=`#;~ۥyǛ[){8h {35"Nf%m!g>g>D&+Yy,nЊ& GxBN?FLzNxvz8Uh?m/ZF-XN&Vzs ./J\g'FzqY_+pJ$FH(W1hd^BVE,7uF1+ kg1h` l'BQ֮ݖ}T6{d֩\/F\iX;a(J8jtsři4>o1#[YKܞRRKq4O*Dft) |oAv ?&UKwA'V~xɀ9Q{*_ƙZ"> W3v [t*`H]ܟԪ@H%=~d@\^Oc56Paww |oa'yɶ9H$nKnU36F\ddcFʉO5wucƗml+z=\3fWj-tPIkYOq wc>mxҤ,߁9P|¬Ł IO33'v-{m&:rrK lc.\՜}j%^yVPprKhc>@!(B ~3 cn ag#~K=;bV$DYz/09zoww3a2˯64$ EHdQALP@Y <Pyd$L@|hzX?t: Vz'wl{`ez5V89: 1(W_Puu1~6h [Dr*:NXǠWX/r9nǯr JQQZCB|4 L] O"rӜ",+LKjҿ$/$b7%3bI͌vowH9'#\`ˢ-}mq$A/@IE\.~7bn$p@ z>eMM%j,{FPWureLxZ]\y+~ Io'6 "X,p>P9yqq`@rOl{8փ okxUVh!Y,DA(T$o/,' 'mTuZzT6KI3W$Z%TիL1ֿ\`/ Rj%tC7gV橤y2PK7 9*с>]1/onJG̀!z`WR+k⧡#ě$n A@]"#GqMEbHoyf?k*3puwͪ~d[LhȾOk <( >O\a㕉I4wxx7dw?GSɢ7ڨՋXj=UzsH.߈Fe I|S2E"(* 34 ]vk;ۉd"dxR#X9X. {?ÏRp<֚<&ltѺ epv>4zr,Agˇ<+STtbQU7 "RHf]&6 ɛb+mQK2sWƑo!5!wtā/CL}e\Jݰeض⒒W.R]KojdsA~Q`WY Id;婘,@܌պ*1aP9/.F`n?Zn '>=8eV7T~~]ZT7֖ˍkYhZv!$5v擲pOfo=Y }l9,8~aEO< ?1OV f#?y?܏uc?~ϭ ON i c;I#ҿ-6ˣy RTH9T~ F+И,3 i +,&tv!p31߆^kHbUGןxՐbԊ@\nY=ԓp#KhMF';6̫qp{ v/^VpT8,e@*:A;{Ѭ|k,] 6ECWag5 -ůQ`92޲˓CKd ߞ*h gg'`hƞIˇi}}C`GG@щf *@#K0,$BPz2#y,YSdY&,ǟ' $URSe \Ҁs a0_ޟ7Ξ,җK*+u R0dETr+SJe >]-R%!LhfIV Kϣf)v [Q=ڲ2]H:G |zQw;ن!97Q r(1H yf2o(@2?ț.v~8NRE5 Lb(/A5:6dtk9tQ(0}6=@Yol6m>e: ׺ |8j!H$f0-r3|3ȫ|w"awϠyWaDl'j., E-25J (o~܁ g}EV_5.T:K1X&pCqL)If~+وP ߟsӨtc5@rr? m3Gn""3?W9p2&[H_KN,Bg7tuYhd۠r~.*1f*X0GG|v%X=6t(`qW*RHD orL&'g$K6At4lg]uЩ[~?Ue%_mUtVFNCNyv~fall;+&bs׵Ef a_V.BNSo:cܢ+Dΰ/vmoo>!ﯫAo9gŬYnlϋw'%DSw_c{Lk9iZΕQTc=bkrXRld]#X!u2499Ne6!U:/%eI]{Fd2cj3ڲOX3" B/_H;&A|/?V(rc8=ƒ%U?^uwLi&@'T*Pfo~wt'frKpz .8z#IC wr!-qt}nYsթysݾ :¶jPy }aozx\HȫB(+pm\D"I1V߃aŸ825\R΅4a\hX6zfÓGPh)}(NMûѯqn[cx܎x+=t[x0($ Iͳڕ"ϊ5A>r WyLS42X"U7KT^NN}7lvhK-8Yhf_=ٗǕ˄Ӽ<ȹ, g̹]ʭ炤~.ϫ[~HW͚Cs|jNS5鬑5-P3Zk峫Ł檸y#|! p]V wپ^XPEs%^3Rm4>wqr;ol݀t!al'e`yC#Nz%1Jʎ5x}mcߠ:Iq¹f{k?(RNTeXh~0si9/So|FGdsbv9'vw:vy宼?k7ڴ륻uB76;vw{1ƛiݧJw،o ϧͱ]qR+LO|5zzTOgB6._Ŭg^ZJSoTz]@W{;K4p<#>ϣi 8sLWKBM9É}.Ib87Ɇ'?8E왺?0k+x@8>=aq"ib@FɃڵT )>}_S[(c|gYgrxkw:R@F#8ЏH" 9Ԅ.ý;{F[`^6려8 ZH'$&ӛ+JsȂfn(T(VW+HU%QhQH:-J^@TE8 kGebiՊy -DBiYFqdP dS ;22ol;σaˮ1#l+DΔ:5#6;LI WGK%@~-9]Ѷ5})S6~d|=( *U[n9$@jjQ+353Eɡ1.4T rawvXFpktV}b3rM6Ą\E۫@*qvDSd5lY1f<t"BAZIg:-t /I}X[XHIr^/DQ }\4Ge^;"Kd !_bG%Ƭ̰iБ{I2 ŲϽ`òP3!G꙲rG]yrmt&&ǗS ޾O; ;3E {}VC>wstxlI!]Ơ/KɹP0;hۓ'&&tMʒ#GM^G 6>X>){}LRr?y"󹄑άi9ha!%s /M3Qץ#rNGIi ,ƭ 2N M 큘9n*G2A .77:ț_\m@h];2ŋQ(B(Ji!%rp|OrW1#vw`9DZ%Dλ#yoI``t!;^x☠47hq$ζ%xQCKNw]^]s}c2{Y$wH/9N&x6HeO;|j!K.UNmivlaV A(#!C+ -1!t#>V6:(JLz5~͌X-3P)z{<g} u4)zoZֈ_I>Nj P!J[Rb?WHܝ.B =;}oԥòWeM `fO-h0^NlNW*,F bMlP d3l )2fsbC[#_;3t Yلz/@ +#xØ9\}#"{4E鐧q1Uܳ3Q(,:m`<L~Ka,o[T1n,"d̰QN8xҵꯉ!O2Q%Q=)9 * 䪌14cl ۱ݠnٲL Pk>g#  il~GK"F1~w=UHY1OnR.fZl! w*3gE]Ք&H;띩àJ}*_F/:]sdinl͔*S.L5sl(Xyw.kAҤ:UR fɰ & . v57/V4݆_;5mF(6$+c74aX}z˥ybb_}g=x=f^c h4mX0CQpmз+1wu|` Wwrz9I;3"UC)j%i[q\"}orXUn=eknxmŭ\n⿌Nh70d3iqiP#%"WGqSn)Я"Y'āV~\fzFԨH5Pc]FӤ2ζiRFj-Fx.fTf$=J((HұEbȦED9fjE!JS#X|Ep_dxS8ўf7|@@ę۩S):5YKg>3L&$Tp1҉L{Ƞ$Y^@ȗXN?a񃠡{>evb=jj*0B M`OJ+wZ |w7^RM@jjI`W}fEC&mi! }={#r6'^0۽2mԶ=D$Gƨom5b庪>Y/xqepc@UƽS"qx{F 0Ϡd&Q;8+E19b߳]eUh { QZD0i]7Э!g5?BJar) P"g k .TG0]:K@} !:Ws;qzxh1>O$քu$ xk-uη]6Ԝk×zL=wT!$Lg3yFD,1,;?8Ah )&6HNxltӈŃ |RƳfwVp~{!QĬ4@bp7 Ja𯨧51aGx:"2apۂ5m0 E{e: lG ;'8!g3XS+&qq(E]=3c\ćG!fF^l \7*?n82n%sy娻MvŮ+;&fO$v `6ݗ'L Ru.= ւiJY,sw_K(·i!4 t@o3-Vۇ¨*I.da}Qߕdh%˔}t`L]6ǃp몴]-×# Gu)CQkڋײO; d@Ck-o䈃1`B3 a xd  Ey}aCe0P^C߸]|Mth3SR<Ľ5y yv(=ٴ܋(yֶUkc!Vc]Tx_|L&%h@ ֱk,-Ou7w`&ҙ(@ӵRF*=^ߚ[3>/N9``yLԍc\xc ~jD-gCtS`d"P 쐭RÕG%۲~y'׏Qs.'VDЈDߩ2^?U%<#A6v^X֊q0^]%9Rby\0Z2Yk04¶׍/@3O;x>fEӠ0N j0Qc\%Xbw-rBg48kSM ψ&3& w#nAQRN9MyKDT k.PH UE߁غkF6MkIߏ au s `+|#zQ@}GX@8]$eq  D/ًz,d=TvS(8*D_J ^)ǂX9`ťN M[D eП1X:HӤݵzbIx snKV3Mw66P)z] F *x?2PVQvrKbV`kW6± U7pȿlֽ>:dQ;DPa|7jyysA/~lݫ2776F6:]a69ʃwd_p~8§PUS4%}e1ja@ t׍Mcx/;LU`xՈ=9,Fݘ޵ŬK`k=tY]I SG檍o~[Hߒ%E㴏H4~Z,g|MCׇk}l}$MJН <4lp 5u@ N],1b@_5`>]>EbN#7\ާ#b@ൾ)x{-Aņ+( x?Ce}-@{koXdwQp%8<\~ :e+\ 3`ZWi;D(ax5It)nYӷwJO_`tKo\_OF8lA}Tf`H4Z䤴6|Vg  n-1,8m@x0,z8y"0ClZZ6mA,p͟!SBQ 6Y(S>qYA7&$oX#̿(mSK^`"Bv(IFCGTG۬/qCuƅ݇u1_>[^e6t`ZZgCP hq6mpOXսoZ F#A\)Ɖ`Mv-מɹ a7nEοC=(oaIhgoc߻\ n#hR͓8aLz GVFsܛ7/ >ElMӱwv_j,&UH9nbTHqbwz/D1'͏ Z<,ㄆpjf>s NnI|X '"." ׃nҚh%%4VӔR Wz yO IȈjsP fEZjɗ"yvRa\)L,1@8@au!: c8nl5ж L`S0DZV!gH".;>4GAG8)Ct5NFtP5ab2 5ߠV˫Ɔ/Ne_NkD#׀[PAvv_Arj9uYV8# ̉ 鄄3< ] ،D 0vqmѠ- K/-Z5P3޴xc_5xXByA*)uNw%B%3hEnTDT*Ɋ`Qeҹ<{rx bgnqCp@W6p*:*Y 5[h_eĶS}V|Z{YGc}10i`-qtdHz}ʢ@KXy0V_6mYt\N 'xC&F~v3N FT![ k8ϋJf<1Ie6\ǖBi(NT}/ Uo[3WI5-7D[97%dҝ:B|^[8ta~';auhXG-2xKڌ3|_vu>|Ϯ〡Hn_!_7huL4-Uto.P30?Zl̍RK'e7{.VjUd~ A 3ygM,W*@oZn3  7PDqyfeY([r] ;/ cyt 5S$ZKҗiZ< hAv+Qy>RtCoX+俶vcw+E`.ܼ omDT0(0RN;r!Px+/9tm<٥ɻ?89 1kf(`״20tR |SА#v8֊U@'r賅g^nEjD6ң?,-W~ۢ!6|`۬xY`OџC[M~!|?]<8cd Z6Xx1+ TW+t˿T2#_յ#HX|$$B.h;}j5S$";iNjxHb;<~SLq>PSAƮU;[+]"*F6Y5/Weĩ艩霞ZOnVݜyEFa Hg hBc5]w$XuCnu8N-)=N쿂~'%lh:`﫽vb%A|Sb@u|@lS9k|>n-[yʒdD/,VmhU5,kΌo?xRVN翭'xHO~`)U*ExjS+XC`&qO\>^^Yi k- H Hx/h)!CgbGʦ{`y7])|{Ca$MPMl&|\P{?J pL7pZ 9@QmU? O ٶbM|1bej * D܇,3׍?2SMۣ~J' ؏澈TldwܡK9A Mi⾜ޤ>L!|#pìM8Ll^G{2O*C@];X5[=?pz:L & o+bwLVBh7~ڄ@93<oHg且DL1{FjObu!g)ґw܃fW@4DwO֊ 1#yôמ\$fk:0X7GmN8D4S1!@%[%q``:rmIwrq8{ b32~\HFgU;m_Jva5%2cuR:!6[)LEq&zHcfso iHaq9Y{%wix2SM *KTxn"9~.A`"yV&48.3;odzՑâ^.eۄM !2 ?S_=$?B%I (>`Z,{J8g`"eaLF!VwoQ YGAl2i_B'  _'HӇA\,bfwx&&GX} X-Kk3F(15'N3Bxm';n_Nx-֫!RvN#qaqt4fQaҎ5_vz{n0*2RqN-,sp9-0KcPn׬P.{CG¼U4x&"9sbz-I:B)ؖ(,(gIMLxQZp+Z 빦5f J]_(M:dypV3ȫ}1Ez}L IC0)tm3K\@'Ţ8 QsyjV&~<~N? /EMȲ\5_Pk =!*(d"Zw/NWTr~Sc2j5I1jXTDj5g_!~%6Vn(s UìdB%`x TZ>4D: / 9+Pz.w#Nk:ӁuA05qM 52c1t3X5 ֨R<ܱ_pvAY^lbChM}w_窯GB"m˛ XWz.fߘOM)tQܭQ܍us=_d"WTN'3fgLuh!R~I6czM,MuMWs.}$d+)_dВ`vN/<(~m[t H AP SGiµ :JIJJA;Pi/N|0.{.z0aoc䤪뚚#I7!Ӌe$ #Tj! M?&o9 5| -#Hb7өH+*nEjbQ.t3I]/27-BjB H*- 6bW$۞Rkx5:wuB!]mL-20D7hv> fޙ8V]d3 |ؐ(l7eDD1̿ ' ގ?P`<!&YY#=5O."Oț*BQw!96#T:(bNs->\vȞaΊ/v~+iq#yiJ|^FX4bv%]iz*ss4AvZ'nWJLz\ 6 a,\p:aݴOgi/IDIEQ\!FzN#n( {bԔ,!8OǺ݄ir{b|=FPrWn(93Uw#@Yˈ .DtOVž_ Kno֮gF#˵A Ŭƪ 6'x Au} U%8L4.5Z7s1)%2|Tgi<2s/ݎLm:AU>b8]YXqK]a҆#sBnVV#P.r"졁 wtfb "TEttT&.`IB8)VfdA5,1^]='ʛ+Kbvd2A(yn] TYBS! kQI$!fGꄦl[V[LxB0lLݔZuG2˪s]+X,9欘IbeAR$Hmy*%?vTuknW9"E(Wt@mT;Z|74ξ=aT ow=mެVa0dYA{͢wxfCmZ3-v;tZ鬡:6k3 6cy/'L裳X Bh+CN8cƝ'`*#WŃL˲RC}yP.ƒLBya )7OT3(8l' dժ7.*([ӨQeqW;"n8/F+~*sd<ӫZW o@{|F}f܃X6dTN᳕wyb/"JQFPcyƒ~'u@~RS]~oM:D*)8g/>O.Ʋ]\PeR ۚ>=_3ڶ>RQSkeU71c>G8 iW~ *9"քVB=Dhn4` [ao|O!F)auR'23ORё Kuɳ7sAdYj6_[D: pc)NX/BVo^;z,"Qt!1ȕ)TZ#=%7H،P86-4.(>m2W٠H(&1c4x|edBNKT*"*Nu.N0v^ xÅC@E/>/ceD瞺8߰1̡b5t'ǔy.Ʒ2?bNDLE)ĸh~N<̀-?xt3(8<#yVo)-Dni[ǶRm}LsQlvydiɒʒ n w2Izm 9E}9U۲I9(  ۋ ;,دZb֬o]&(\;gW 7x{0ko[%Q9gA 1aNtM`TLI/1&lY(Io$~Xe@^+02k9@r:IbP0@B/iQ0{E83tDM4ĨV6l̩#I!r;> 3-=hawNC闯IM߰o_~9(etD3 e9k{&xscKxS˽o\~)y=Fvո7ٍ{ovw^F"PMUHlٷSkFBuhӬa [RWTD ?II&{I"INd,/=ILdJE;C(c]^3zj1WUT25(ґhqq6B Td{RW2v CWHۙZ!x˕7Slj3Q)I]C$°d7'pgA;U<Y(fT\>4v {pm' <۞*;S bY83;3j(Ψf *$*T20fgM*IOs;g4$nK㲭[a VjƉ+Fq-E*}HL͜?8Z3Ob:LNEDkӆQ֌u(;AN.Ը \cE:r籥#ACl^N'Z!2FZtζ%" Alift=ז\6N,Z>#OjJ+F%lfy=s'Apm15*0$PUцjm%d~-ޏ!`+TӍdFpÚgj5'*ndndo\_-ݮU8xs)!ns~ A%4dߝRC<= 1"pE#XXKʿquM1||,bb2z|n +ådHN)С&z^HKԱS% EWsHVzڑb@ʿD:&' "ڐ1+1dNP!hl^с9㊨X\*ZAR`yop*j7y!w# 8H»rDިCCU sJ^8HcB&TM9-aPLC[@(UE#qc%kS(6}n^$CSwt\.`͔Qs]!th#pa݌Xʔyfb[eZ.ͦ r`ڳ62/{њ#76]v?*ginYC"4( M˶ y^RQG h@|J.Z5Cb X`&؄N]tdYG]J >BGӜ% 1DW >ӉxG) 5FV${֑$pz 0}&<.pNv:xw[4 ̰ ` T^Bvp:D:l}e>v`ٍ\"ʢA0?s5 =אJN$V"xik  t (+E/ӭ`'}%Q) >.2cۛ A?o r&$ߚ0>yYҙ[ew+R~/Tʀ8pvN/`6J}zz9v뱱QKɾ9crmИ +!<8lf>l)*1gN9?Nڟ\(F1 )?q6|3rS̒Aރ b'^{p>Z8A䍑ԆuIh ib8[(|w%9g" h2nVʚ8Xc>dHW<3VOr,WOw!T f݃,|J}fktIvuSR:(U T`zxJwOl^{q̈́}/jyj)G*.o38g4- ^ (G^e\^ `oVv;Wa1ehtm%KUn^d=k.5,;+\Y/T!C mO,D.<1w4n(i𓫾U]Eѧ}e?cz=OZݬͨ+kòK9A5U UT)حV*!ԫHKq"T^DGy,IxMy0 $C=c2TU(R\On7$:)2rܕ%k06`Y@T(JS=`jVr;+@ʠG0 Be^2 ؇c̅VM recU+d8H)ЎMnkԿȵzg|2+kf絍0˟5gy"DUwJrz1Y,1΁HٜPˬ1lA'OlٚwԶVz&IZk4)Z F0lcodF#Sݳ<Dx{ ӂ:@+'vF(4\+pQ^KSpw_AĈeFڬ$=%i`7{3n5"_ pe`1&*:д,v}x9BE (3_fh{JoZ:|~mc kڃ#3>oWEisvV"%!~ߕsa!@[ :x^(RkCC#T $`8 u")~7qpHg vCߤaλT]XЯ.Jdb1}%_ NWCYy'ў/Wux4O!uרo( y/.-u*~49؁JfFۀ j.az|^^8=%BnmQqV@btVEٵ@=; ]>U2:Y;P m{1ONV͇8 #8VՎY\ǵtK0h>O" X?EqW=;`a&d|^8RA/L~,'`Ku"}< hJ {<>ʁrgmXk' u< i7U#{!X|6H m*{-~'{7F TGEde}zZEIŒi!pgFVTS\D,˜}'>! ~~U^n׫*G.DkUDeD0=56y B+ pF&()q"%9k٘倆9YZ`!&HVM{ṍB 5P٩O78" du=Wa vFȣXT@~S_q]fw.ˏ?cI#?*Or˒\{75#oO.h6Q5#2e')ndjrfq(WVQ*)Y-E:"}bu\AbN0 _Wkׯ,cֵ݀-uok) q@޾{ȣ}Zq 5 .}@U)'Sa }idDf4V^#cr#/S erk_].Z jq}iE5c@;{OIN,KuxM"6(qhZ:τ3@#JW[j?U#R7ݾImk2'x 2WV`mq,4>b]N}&" ~APOڵx"ٹ(8iBG/.gLvT-lJt /pv;ެ(&ɾ[mm>˞Sb*R=|sHqmGTLW ,%AC3 y~6p?Jb4d iyk|TjE`K^Bj*~M7{1 ~ }鵋T?$6) X|xS!+ Jd$l( 1DǙ3w{$mHfFj}4*CbM(b+C<:NBmFJhv2^voY-c'l{"XoЇ,hK:<]XHI*@h29 RLӆK|rfe`Uu/ $60i/88(A>5_;DMTnhY!R4. QVcA X#:svڝRDv0Z;xyc DaXlB(.T&C}-M"A(Fz`ó`ZGG$2A5X*:̺ePj!N S(E?"DC`˾d۱.h襏nP%=䊏,;r6DF"V_]EZ&u 5 3MD+Qx۔(k;iB՜C1a & xVyH֞-6ȉ-f͕-ThD;2c" f ЋJɭ^#`E \+f7?H1\KPg(KB %Ț?}/|Cܩ u Ib ԄpNT{MnO8?^K X3@ c?~~׫Ne} M;U˂XQ4 ϦHK5M) 5 k)Mj3M%;yl2ֆ/sQ_UJyC 5ejV^%tGD{ʜe@kvv%y%`<#05Q(yAHA=G\vV˺bYk +\zYayEPcMݬ.svF}I A!*5𚲓"CZ"!NHsɑuzA`gfʹvw-L0rlniWJ^9W}lyvW_W} PUAݱA9N=ZF#ZKI1̰"洬tȶ |a`j-#&Y7TJQa5&xP*zT-W!AdYgPw4޳B摓e^(n6PCl{ax0"L}I= b&:GvNFPs*e0&j-/1 u CTj~:vSL븘6x>9CFge0eou6>$_#ј35?00@Lưbd%!M9յы *Vd[*N?_ R^![9!FM*Hy1,S2C jlTbb,aN1b9h@;kfk݁ s }`LW|!?Gp )uS)T& ߮3댦?9݊i)?55S'@*\ 4u,:8L*w *\ D8xyv*_LhͨX[{V^RsֱYRקn&_fRS/'B*dZ?^Q. 1T CYq+PFꋿtKوE~@ig~p#s[Q*P$o#$0v|ܗ[ J8lsPsghd6r>kkܰp"sgwpcTLv;8H3N@hP(}5 7q*Ƅ  Յ+7H9 $EܤvSޥe~yDNEu_O*@4V-(㚒k(nMqmBY[=\ƨnd;u'TI1fvm x n kL>Fc0X9Qv"gGHI{/:]Wg$*"`$8ދW#"K vf,IGB^NyjPvuQbmШ]ou=dX0TV/FrǓ阛EzVc&oa(E{uZP[9u+0ӔgBkUMq(3 ç1P;󶌧Q!J1k|XJzC 5Gdeҏ楸ߦ&ƈ,5>f_<*ၾ'K ˲*Kb]`%I'W؊5o%0Nk^ҟ7 kP}[o]xyRm4ׯR#j0JP$EOfxCj<^Y"f|1AM\?fͩy09G/y9`bN?At9*'zt!ЭޛldrGх?QVt:__2S(VPg wUj<,5Fbjj.LGgqRԹұu4.z \#H;(x%p!!X3c8aPO0 ?I8 ⢬6&6IY9:W(F*{*3BsIKř3tӜ@.N\K?ykv+Nbٟ7Ꮎ`ܴ 生 m[avkP'ӌ/dfIl /)no 65` tSp}`o\xoO 50yS Nww 8z%<sMnuy)m‹!;CvD|>}Qpt3KR 1xy1ݾ;wPuuO$C\ ;3AX\k28 nNG/:Iṣb-O&̯WcaR"i9R=8IjJGFv_~iPsYEPlsp*\ve'Vc^fQ&׈:`J XE`?ܭ<+^/(\NW4IClYMv_!5v]i4&^8gE9 Ne[^(1/t"ΊOѭZ+%w{n 7dՋ-܊͇Xw<lV{jI7K֞8[# }΃<ݷ7lAuh,>opA57бKrXvn>~-ƝvJáư`Ө^yy =D8L|J~6|H_VC8N{5x?4x[mge6mT4{ϛG`2 Y'&^F䏣;w WQ0IY9 &0`yOT2l?X o?T\hiJI% IOI.;f%\k? t?yº5ȆΉP`:H!Q!_#)PZm=C܄+&s#nQg%ǃ \CDB5wd$~joy54CDlcP gkKgB 2.#} ۩\e"*J䬇&W Y(4S7b qEheж"qpL{m!?UYׇ}[#E3C|Ȅ[ Fˡn"L۠ժo]OgcbdbspЦEԨ%L̞k2G "G ` =ڹ+-~w9:L(MN,}C i9JH A,E2uck N&kb:7 cO^$zn V!ڏgT%:\3g:\֖Kk6%Bc]v>IZv3M}uk)wO}'p ߸qxq^]v9%0÷ꛊAs>$hV?=VW\pi~sBxy `t8 Vŀ鉎Ibr^lX/ct:k4v lz?B+xC1S#n{+;n)¬vLl%BHXr9@Q-դ~ .kl r c TȞޠS H'v:\/c!H .Fb';θRgbřOT5*gNP?)M?eh;5gA+^݂[0\CPrC)\M+f|**+K}w6hiJBJ1IxLWZץ~x0,@GsógHՑ3;ۻ~FEF^pVW1t4ǖ֖ȹWI2oh^q}h?&ٰa*ow6ot|A2zz d'-H(Gl)Y".@n٥y.XF2^6EY닂qRjɖ!TT9AuHjpGv}+^5*>7QxS+^C+E]0]d`1lzGj8gpmednd^OSjp"(Eb3UrL]̓.2bX-~KiA0i<ԡ¢&ٞf_GLyd5v sgՌE#sS c^]IۿA< b1h=jǰ8gO$<_ לZ,G%~ 0v>qpݬs{U%sSֶ@y,B31a R;G)іEi6qBtAm, l3# C QR)8`ZMfI TC*CndžDHЖYdA,Fɩ#NMb@tO!UBg.O+u7!C3XV"tMbEQ& 醺I#Y&(Z hT3(|L34~0 .a*4 +T/X N x#Y.TM (J8T&a9)0$ =BWU:P Ձ ekP!/@=vjm!}*<.dj&>ORzSzzxk/`,s`& Շng^.7,Kk} tB}9VSb?,:pGC, 1\?;&RN "ru? ij *q#^n͖lOgVo=Fx;">]d؂mZYo vcІBPJ`(Em @| iX'v fYy%/oNb@rJH`ԣ kL%;U67nf t1IiU\a&Sybj 0r.=%g5{"a@5H&6('E&¡Ʀb`$}VvT2R1!^BIl Noܪ"8aObQ1j4{LfX!d97/rL`HaU֝kYZr"vI%ߚyxvK0P%bȝuI 8 =AƊSCrˬLW)Ÿ Y,qsxV Va0TþdzZe{xáPκw 1(EgS3'%}hS1M42ȤYՏ1 $ E8NɏhPŊMoՏ v;4EY=7I돐 !:yn{t6bvl;SFRxϧ@'Šyʣˏ,BL1yohQx9)omx}!v_q^\O|>/u#ukt"S}5 oϟCO P@TQa, vܘ9c`I05G%![,BBiSdO27~ XafZCMT ΈHz}-'0-ixcߕMhuԨdJdWj]H=~Km߁',y-A~XIz No2ÿ^XX +  (Dc:-ioa ߅֘=m_?tooнwOFl Io;?>0cݾdl&yZ^ )舕 *vJ-54$Laa7u6b\x$u/leGt-0wtŃjoiL}9X+˳ &KWUXrc.؁"WBr,ۧ5*q9HC>N̆PUw,\I?ȠPĚmm,y8,ӷ''6;==w$ds׽vGӜ먨w#pؕN0/ 2^hagwwJ  ̺=Jvٓq'*:qVu3jxoLoAbV갢Psno5¸G1jkZX.ί&td ].V)`ns3،䜤LhHχcJ2vײ3wF[>pXOw~ǁ M$u.AQ<> #&w1׏TH>לYєܬgpvFo{)Ⱈx;+QA\-^SXfhqʥJVy C/YRVR!mvB/é=榛qP\xY)#%.D1klJ.F%3(cPIڼ^?090Wύ.G쪂l5~ 4})|>h ArvuQ+j?cR$ڀl̵u$-|$#B8DR![#Sv #g4TN[WqѰe%koqtfK+p7O0<Œ t3& 4wD,Td aȦӎ@D)sumnAZ|b1%^-gpB)Ɣ4Is%Ca9]QWr#Y#GZI%}?(utѠdOwP{ч7d^ۃJ7X 0QMi}}ob8|>X)Kӌ>fk9K9{^p$QżTe HH~| Hdɸiv_ʲae:Ϊq2, 1çj/d,_v2j)XC2_!!3 S};˼2^~4dVB^l>'Yi*ߓOOF9t5nb}TKy~yݛEW*-)= xD;WcjOl$qQL_b*lF0g5m$) f X0ηH;A嫷WBBvk<w82%cLNĄ+yx<&ⓠ9y$wZ |**݂s},sqpڰ[Q, @дR@|RX}XIVV([ڡZvÀ n>JL't,V7qRU,E2콈}{GyHiJh- 5eo9V"J+H0nxn,dH/r}{^n+qI^e ZA%oڷo>U?#lt}`v u%)wfo|5Gs l"=Uom`$#H>| D2Z%C v5 ="4@Bw ?5mxJ@5XeQwPU9yT끨Vy|woZA^GBamU R(RgÌ,16pN4DFQj]gؐ. >N44tQF-hl!4xJ1ō(C~JuFײ i2uK$GeWz?n[h0-xcŸE\eгv%~h4._,e&)Yg͟yΝht cЇ"cQlg2u+It| A78R"T>ۉkڙiJW8+<7G㘑NM)0VUϏobKOf8w^{E. 'IƌdZ/^uRN{FϬ[(Z!H0 LwR O{_σ⩓j^wضcOU lυa3o=!_Xd's9'.,m*8"VsdFTInr:Mr aɆJɌ<)x`ҥ(cϠnNZܺkqԃS.ѯ&|=F@4:#r}RHσGeR,g]v rkRs [%$)f~p6@V Sށb.,ܛ3myPyI*_>?otB[TԌ)0Ny<ſڅ :߆)ޛMk=._gW(p19+uSTznXO١MM˥ 谽w=$}Wq`Z놂oE֒x̏nP&ˡ{ F>q ͷ6?UOZ+O5!pṢd !P"6L}7kts Uɦ+n `jjn'@hQ5lAv?³{%8't-'NDnxNsC367؊e\RY|*R| dTեAɆLcHFJuD/7YKL>M>><@[9z{qT/lڍ9l#el8g-M,iޡQ}{ߥ;#e8T=$US*%,=ڴLI̬Ue=d%xBDȩ@IҦPl`^7=aZɦw۵%Ѿ =ϡ7zMK݀ S- ܍͌ʒ\ֶ!R9TZqhrnuJ 6$C+~dΤc3CLS*Aά]TО  o>z5MKOQ H5+5ڙ!y r<9cm!<@(pkUURI.1@+bK+WȎ/X4:Wm#}%alF4{ul|_۲jH!o FWö-˾U]pL>C ۱_ AFA6$9#Բw=&d J)2 ւ$֒cTSRkVT5W{orWbv=O!@q$oc4EĨtC*_s@(I6/X<ޮ1a諒ܸ/btS3oǘ8ptӱ;堙*ځkv$#<&B`2RhX*@a@^$[ ˼dC +&Yjv. CkHC1 J{iYW5 C'FL3F?X\7R3FɃـ6*;e?藙 <#@!4#F"vNb97$wh7?wL /p 1 9\vf .(Z \hk=<-bp7]wC~XJ5Ե\~jm.*cM6~e825/δtxrlr,tNU-G< *RD2*Tj,R[[ U OMaVԪSo4=$[(]Vm-y%Q2u: H3ڲiۮ,p4S,v],ЧTF<{)Ӿ=ͻʢe˖*[n{gۮq;mW -`G Qh 'Id Fg"mAɢs]*QL8H bєA:Cbk}l8 gl njFKDS%pϢD,DSo"'k$X;-[$焃2L2YՂHJ~57b[3,}2]{x\0̯8K0hYc#H)Ue%N۞玻&䁇/$ A 0B a-Mv#!gm Dn1h$i0׵{qFpr1Y%ԖxuʺvV#--lѴm[fҶۮۧމl,-(\_Ǐy;AA -{yX:Έe^Z# hP3TTM7^[W08 'x46NgO7<^xnKX7hm łY+׼$݉֕dȪɚEQt|:[>_#gj}qw=*?Pbz0Zt,2Yj{8Y kcB(K'B*WSnױ42wh#|):BQ!8xʸ-Tm2."KDPEcT1Τ`,T¸Eb&]_D\Q 19[0[F=ůPR0=X=.jMŬ'< `p `8e<́1 >xUV>G3?޴ themes/twentytwentyfour/assets/fonts/cardo/cardo_normal_400.woff2000064400000435214147176754540021302 0ustar00wOF2::-(|`  dA `6$\ jj [`1﫯9FR<?lc>ݵ %B3tsF£d!lvmJkKHhrorT'혐G1#G%TK*7TTON?ka-vpi]zb ^Vv5ʗW.P7Y}k2WHU5AqEvq/{aX#=/&\m+ ؇Kwjcn5{yZaSgmkNA1%NjkQ}9xt[ۄح,y'ZɰZ.\aӥdlʣ4j ))ޔ_Jw.M ۧ2)HY؈4E½UjoIxQb(&q{EꔇK>h]j9L{+mw >(^) 4 ꡺&)IG=,'کN1ifd"zjTҸ;l~ "p 1bG8-pO KoTmFGopdkÕH{? n(g=kO fV0~ m\"bg1 pZ:n hf lz}F[lXJA}%9gRRJPjRRHs9#5QF?sΞ3Rmn:/ dK`2DMGY#^ڧms><|3=aY"jǂi XhnpmM>Yh-;DdսofW A(<BHGԗryaYMLLLu?_>|$sIdoTn" JJ6GhT`mJz7@sk5#jGȂю5G<@x$ZZIZ`"QOaܬ,Һٴ}64a餳45ٰb I'hbY숥uҺK;IW]>.MMHiAN?X+ ;BpB0x1>eRѨTzGN]f"!Yd{2H}}1AD\0 Og:dJ‰RC6,i )"7!n@Ebqxϡc@(~f)I_6%[kQ1!0GJrq%tZ=^Su>~gsj Hu8VR-2sohܛ}jPuR_R(sg"+@BxŻebjx4B#y[hk mvVq^y_qa2f@woߙYX $Y`lir6?c-R0t0σ B![=͆tlqySk4n'f+~@JHR!S2h(T9&^=)mqɳghlj-RRpp?{qpT ((F"`!* ؍ӭM]rιjc?'܀.̩ X!9ti퐚94@c|QaH?z3~OݙlH*a;m^5sK;+n1|rG^ߛɼQ.&0t}".L!.$kWs_N}[ ,92ȉt`ٙ,0>xa:M}u'{S%|8GGڧ!Nqu1 I)ҩ RnpW`Z_-"A,*bN BQ2N$ p[ۢj9Ucãk(-Ah@tB$M+o|ٍtB.VIbQ7?Gȉk MiLS (XCpNǿCPlr뽿kط1'SqȊG2^.=%ٚw:!dxQrOzB1]Q)"'X7$O JS :¬ۃ^- qNJ{_X9yb9D: tF{jG_5j5kXrLm>¿_E$n@lC2)H، ۈlKNk͌Alh}fl&ٞ{\+kcmԹwdLٷݤ[kT}Aք X`9_ P!?8Wҝ_3ve\.H m  t%4r2c{ZnJ=ײk.b]b6ݟi]%dπq.;x*^x[+ߒH>8Di^RDnڗKKȀI,82+L&%Bc=qVX6t߽u=K)ܓM`UYYI8߾ybۻl([ݻp?Q =i-  >)Di`\RpVQD9Ct 3K8>(ĴP *\(sb%B/ G;B=uVNK(>dv WIWW?;_Ywdo)j7ofqJĸ+qGM^7Zpw@Un%FbQ(iJkI ,WvMsJԊdtH6Ji$?gSKQ+7*B!,<qࡺ=KZ0ga3&{d bl=iD›}Fiٽr$IFIFs)TfFB4!uHoU O.Yb̰$ho^?ƴ7ɕR-F#( 3p}Vlv@ $bNbt[:@D qCL8gDYItrjmUP:3{u=fIDD$)_=UTKM5 UU{߿3PAP:?N(SN$qax+=Lv"mo* i3e&a v ήi7[x|bF#|$3_i{xBmWnjO22&a=~&'Ը AoߙPALhܕECV׶ϟ'fT~u*V-5mv[XH **& 0d0k ~I TIsJ<{G^b#;a3I\Yeϗ n{5 exE?|;;W? )gC3 (t%$ nIEww|- gp\̠@ -$=pBF&606LxwHMX&5lZ@|ڂ\Vk\(g^To|H-|=ĸC7Nc6c]mݥ-.M2lP;YX $7OE!26ƉNr2k:-,ՙ@a\c&"F3fCI%݄7(-^Rz݆O*MYX/OK4W!qm”,"71crsՈ_KwF4`'Y] a,7g1i\{ DVŲE8p)X+g c cv }v%=h?W&4X'U, *[ эҁN3[%Ppf_&=; s=ԖɏHٞ͞n-k*lɝrmҋooX C!u3Nէe䰌Ywjޮ˹P/3$SKuF43>$]9)Yԛ:5lCo,W48%; \{7Z/۹co'Ο A>GlrjN"nsLllH0#\5֩nkZy)y#_~x!_ Ucα| ''[ֈij1σQsҩ8}׶YkZ*Q4N)*M/'2]4s*7E.;븃v3 VFߙĒйg>sp2dk!SC4KEk؛TK5LH@7ø[RGV)T )9ڣ1a.|擴C}}gJ1(,t[]y{goy̨򙧴 c܄ZPE):aT{'5iFG"p1K+uXj˴g ow,g%V6CɐnQ츧L^$^QO%&g<}TȻдgE((Fy34q* Ii;?tK#{j aSW_2舿l-j{ݕe ΖkVEcps観> ^VT燊? , Ӝ8iwH{T7lgA ga_* *y/RR? ݾ|RTD M!8WY)ӰH5yglVI _h$^;>QPfx7 v~ّg5BBb͔"]a]f Ʃ0yhw("G\FʹC(e~Fq `eU(>ee}*BV)tUVN_xouN\j]*XūJ*J**2)Y)`\E uߞQڽkbyw~bO܉? ־K)3veLȓ+lL2NdC{9L4mhIMRe2_]V8x e%[~ lfa]? ҽtǁ@8̏%D߾(7)C:{vc<PoHrXi_De?83sg)(Ü`):7IUTaEtRIŧhFF`X€j{|ٖH3"cʔPDT8(7uK+P-: BTUJR{訯pXqI%apU|TDhQH/iYBC,3^*KHL cf%`wKoXh9˙6>FktlJKjXJO8U\^]뺳۫vV4  Kl.en.v͙tv\k8\жF4";XsE= i@Zb׫?[XV"dRh)H!m>BWW`wg^b?@;8:9b8o ~Ii'y#wBo2y_wt;l zsŞ=i޲{vb渋iZu받.Cb6#gr\Ѷ Lj7lڌ5뭷n KllKnLjlӤaЌ1e' V~s+WxpR;nSYE~7_" I844IVHcG;2x#+@9DvFxA0m,RruX+m4PJ &=z2dǂ]6l1o.ɄI,rFnvZn<v5krC{U`p2uX !z $AAIE 7RyN*ACVezl|j-(H:UIuZW-$ bQ'.na]dLKQChK!:tPG>: 2bĈ 3Ƃ3sM4sY+S /Nns@Gh' [11ca1^iC._&L1eʟW| 肋BGB(B%jծg&QA7ƌ?5Ǐ_iݣJ}f<`C=B17nx/T~3 >DDld^7'Np1ƒϮjThb'θ4&Ԩ5e܄/`/^s'EEd-ABZB - :tldf~goO`S|*tTC5j Ǻt[8FbCG` ;-ac @8(,,!ڴ%̄ 8SDX"ʆ-1N\I !!!X1ժѨf-^z G1cL5c231q3&- -N]RLYJs䨀E7e&5Ei@CLMiѵLm Å+DN#8d4i2իU]tӣǡ> vb܄S֜#Off2 U*_w}ЍGttƍk3iRi:9|:oi˭~!,{wmףA0׆} huMxfĴ_崌lǠ8<?~!B%*U TUfR.U;:@c3fFX-7c<`2s? SA]lqO|#Pc88'N7J'hbłIAX"&,sKŰ@AqÓJAyo``>Є.0DgpHt}vyp4H+[1(6F͔YH/kx;<|j n0a"%K$H `a&R Ge>q1BB{;) Vlٻ9󹙱UQ횦dO:uKJ**m2˩m˃˛k3׷z 7=0DujQJj&AeL0 ϶Zl9ܧیmvv/ uX!F-(.*L%lFRXfpMat090"xЅ s5 6q#B^ǐhDJdKYfHxR0=G6Vzed!ۿU EL!oZ&{5c(P>kfH(ˀ%+#/ûr5r\.@j` o @ <2Q2ތj_sp]`MHwvU ȅI#clJjX 3YLř3+EvGFkDwRMS5 59[-Аz'äzn-5,.t.47_2I-oqKKUqfb+G*qcCZ|U\rEO8F6\H2:nֲc7$Β53FZC~Ͼi6t)^I;ۦ.B|vCy" iZzU F~BB$VGȗ|Cnr3׿k黶k"2I曯l d}ŗ ˇ7/<8qa_."*QT$w ܫ/`eL߫sݩɓŋ-j*Y'4e,_s{NizNV[EuQA/ki5C|ѧk>)."(9g]׵\e =tSR$V0!Dx8p<Žu/^8{ıΟOHU~kT_[S׹9i!=Zh.J[)i)[e)aC O|$XaRI#- x qS1@UO7t˘~4\ԗw76ו;yO{Oq~\f+/[AXhʑ`aؾ5+6kTV*|F[Leqt٬gA~SreH&U^1h?S%Jo(__=hCz4{hOG?+po=LAR^w8 D䋁c@ccn'pj>CXF㬗8S-Q Ha<1 ca)  teb5'(xҠ,Rk. ]D6WBL:zG]mf}#yмþj@A#.J Q]D@(Ph2Uk?_Q0DIRGhVNȹqDB XT 4*S&3${JZMxVPHr\|zKǴ)S $Z^rpj]-N3S5q=옶OӔ*׿Buˆ/ǫ !<y%DlN/‚|=8! 6?MxLp*.hI =BN*f* ri9wo:&Pvd$Lue}Q[Xzl<ݻ7h%Ԗ `NC, >~ f,=T"Ӌd̘Zzlqv'zi(SZ@Ϛ82b(awM z<0>I@S@Y:P`ܲ ` q`I2Aa<C~u8{Eu Um_,lBq{щ'xn5Ck!_/g) 2Gv|"k]{H0 Tf,R4\0>)MPeEA}* *XdBN0W #w˲7Ϯ:~Q oެM=(}*#q8 RɖmUŔT}: LNEg=Yz޽(bt9 jcm5kj6ÚwND=':_EѶ8℈Ab7#9-X Qȷ+D^%eI85ylb 8NKm{[qhkDF:reZMSn˶(ަJ;?TIL'Zh^BZ%GJ )v'rP;MeqԤ:eyg6r& RAA(705n8  r5߹Bl J_HiAݽ]U/] I P1H)}!̫bP6{mu bf&\|u5fk`5W}6<o3WeJxA)j A 2鴊!PZ8Gw*|Q[*ԆD #ꅾ[M*witP3i'& 7W&?B{O*2ƵGuE:)mpv=#)U65iXBؔk9۽)u,* 7a+x|f oя-|]<-T:pK\zқЉP949N#)5㠡\rm#Ś+pX&PtQX}G]l]ՈWW{]r}aĮsFLz|>sf.&+uE+]|EnI뼫 )VZ7bt|8XxWUw݌o ώCyE%1rG 9$"c8"QYmr v[ r.%"xCuc1qו1iE~^e8JR 4r pRVQ0Æ#r+Ƃ%'+ô+Pb9 jIy Xky2eZ U :H8dhTwPrt-2_.i̖RߤnmГlGJ > qg͕:s:5dȭϿ7?(Ap P[H56@ L3 SrcD"eQkI )}є_7):^:Cn+lDib lFUD$wMRF38KKuhzײ =lH(dO]/?jљAz8¶YeC39=4rfIZO3ʒX?C( T4<{тy6Z\j=m:u,sV+Kn }ALc8^setUuJVc]ZY,z@pp;nqV٤@Ҙ19h ƀƠz3A>EAӪ*FEh,)ݦ}',6-NQѽsQ 6ߌc<틡 +WSy3W*c[ځg2A"HI@ ,43 Y=&R͇F$j!a4>cIߌp,w6MO{#OZf`C5_TyT ,nJwF;m҇)Y? k<ܠ;ū %_,59:,I)&!`DTGo?F[ވ &O[;z /)itlA7a=fû:,J4>ͷ3nYDRHkkABS|zX$tp&Ib3ǛP󯂫Hw +#MQBL)@NO<$N5k0% 6 V|͏% +X")?1S#7}W->Lݷ(j7'PYJ=E2'S[B [bvC¬.Bʠ[M@u`6:W}t /c #%Kv@Ç"Vh p{c Wz/=f B¾o\wi]Q@!H: Q rdzl_ M"E F>sU6fPAD4L'ac2>e0Z3p.=fBUpcf(ag`1 Z`Gkx3q NS bС1cf d?턷6" DR  jqmL1kCwjoQ@J"AJB]bz#(:4\`KqU@i71͈{֨ѡduwl Zzau(-L=e2wE,רO6b;3 U֢QG/3fMuJ 8El .+֢ZA|d碣#*?z3#،6< iz\q"Y!B/+ºEqW%7/N ZFŒQO %x~RX6ԨV;8#9Rg-++{Ua1E-'N^!:Ɯ.H]SBGM4UI /.cr o~f|{j*[@9kt| njFB]K `Swĭ ŒE"F5ςt$~Z<<>Pdf]R፹ʔ8|L̎M^bʈc0 }'&ZPEMr:#'z,$^IC)I5EaV d~&Nq>զD"Kj)5hG@nD |2Dt\/ $81c WZCIPLBү;+/ krz=pjAkrӅ4JUD1$7R\צyL*lc`v"ljq-/RMBYьO9RRwq!+6Iw' zUrlK8]{{ʹ5F;)XDb˾ѡ*`Gh߂*08F%e)$,BH:V3?ܡ/L{?t-~{ʽȉ,z+P.su-~'j}vgEyaF;L-onh(J%,!OIs3܂ ܶ.G[ڄ !-,ڎS$)1H:%FQM$Tϗ;jm7:uNA1_oN]2zF# ZB](YC5;vʲD)o*-DeP)K9f!]+UP[dngmCS+e5nDҗVQ[A/$GvdKN,3bcjw1@T&aL,dwoԋ,kDbC9-P$B&c|Xl@m+v> X~>E]9LṗpuL&fդ ycl8SKf>0x:aN2'w00M'#UWqlbIi_qw0?$}WD['J3=% _Pu[c//QA;hEH߆~yzɱza[cM͐!n=B-xKl8%mMi}}7&lJϩ̷p!P;kBufp/z-!l> Wp{6}tW%MXt@h}h!*p 7-4] Cy}8f#GYغXȘ9|z]ǧ!ħ54t]b,k<̐T6Qz#Q~,- j|x<\-) a,#$SvER G>݇ b;pTu[hA6 ^J:=KnHFcM8Dē$ɡ+A-ZR &hk3Sc)"ݚd/{9Ja'B`r1 Q@{Nka31Y ?Q=GP[Q}X'P ,!}NIzp^廒 m,K?)#6&1dQ@r)ZC9r3ji7ov0+ q ƘkZ' ] ߒc`,,I\{ LU" ʵ6=B'捞xIR~bQ4;֢;CtM@(F4OטQ&+<eqGV}!5E/Ri~g)n` Y># _䒟9+'fKؖn]QT95ȟ7 cMy <8f}hTL;צMcENU EG&\΢j{U&⤳ uΉ8g 1TP7\ yzY?*k/S{83SMwATDIx/oz\;h%j`]=, NKtox\ҭѝ )Q|ĩ)Ā%c`/xWX%8'~0/sX~$k6PeTd|~;eiYD/-%5>=EM 8q%ȹCn[oF3sgX1BAEbDvlq:̄2'*I"8FLx xMSXȷ`Ix TL֥K]dpKEGEȑ)RL›7)1T{dp"49_᧝\kQѕeZbF& ~Hs#ZFUC׃"5}5VOz*Zd@u '_hGڅ`/^uC3zFk<ǩP'(I],E^ '_(^ΐГxWN/ Bob!gzgEd\F#d2~{v܎(R.2lW="a/I0 'h uEy&/e#.s뙯dvލEZ?܉ܱm4wybkF6*o5= Q-lJ, 343'G&/ʞyw#H&HF݄,n~lu:^#Wb=:)@ۧտj_J$< tpy/0``gy-rY vg}f/kX$>䃓f#[essH,瑵-Y 0 i#kqb;R!Qs:D@,eN74 1K* q*:T)]ՎvoϊE6 ?մsN_EPAZ1u)N`yc|:PJb֘')JDX6m/ δoԇЫ38XͪS-1q?,o|H/5`Q=&}G[̟)3; L0hJrӷ'4t鼫 SVr%})7Ax@LRWDl7i&!4L1IFY-J\8MhqaeJA8yxk}|P(+ɮ P>-(/DĚ˖Ġ=d4sdv]&eyӒM̀u{̢u.߿2=#ߴW 2Jw;=;jic>ׂȟ6@.G>b@鳀kP4IܜoٝdHM-T, kv wթ9vQ kK`.(*}bsD~L'dc<NRЋdE7HTKY?1Ll0ӭhS+ΚVúKa!~vʪL$MⰁŋc,D%Sa{ b6t]YfI}=PÚH=l!g:ad*󏣈ф~ם ~!o 䪚E5< $b3:{iv?u1eզ{`<֏&srX۪Qܮ&bMYFj IL N<͌b`ug=31ktkz,#QS2 F{~*J8Bk3&Q?dJѡNg'Wb((_ )MF}P˞Èp}ah4;]C܌@ Nql{GXoBV56y GB6[= % '}vJ[2JY/A,*tnj9GCYāQ "ɿȜ.}3:16 ,vCOb}_f6' \1 Q7XYIda'2)sHqv'iom6yq !& xM*ճ*Ad|SzLEuYsMɥA[* hr"*chD8=oБ;"bcOh+S!MNqibE%g{$;Q?g'A(ޣnS6B'x|%~r^򷺞Gk u1&ΗLgQ'_l@MU-#aN \R"/;[ &y  _4cYo諤&phGG)-S3wqtfM[F5kEd( kw1W8:$|eA T5Œ|e7lkݎr{VKQ `>|_iQLo.Jsw zK<:3W<.Wo528B6rPʦ.X 13~q'SwFf׵pYW( -)->t[ =a~{+7³/g0g\ߘ_рw3ٞCG.W1j?I'r; FvZnQD\zؐ{`,Oy'Z}QȘ:4"5dԹ&D6Wq*ŨЦQni5E#3Fc[=%7׼g g`aʇ}8Pk2'A^GXTj{߮ ER[4&Z2F(HH*\?1~Qn3bH2Dp魋&8/±Xek؏X!IF((˨%1l[rRck{+ laX`@൫7v\cO#aq:"u!*M~ՔT~ԤGlM 0Wd$W8Jғ|~5HK2lidŸRۢ Lz-n9wwXҋ޲f$t*;hLVZ Y\ª'\l*8)u I3hܷbm&>+AM{(ù+If *;%\޽DM2)g^+! zhEU:Ff[~ETƯIp+Nlxf1`y0 5{/*n csx'Ph;nUu(h\|AՐTG26ϊom+ i6s4h!< mnsp"uzKUWٰͶ1D RO Wqiv̙Ș%%,Şzv_7utG0yp Գo ۖ^@5ҌuA*yIYg"}XWJ3E0:"WiǔDTخA&Gptէ &- FHX{1[^\])㊇lo?&g&! }mLQ:;YB7׺Z+sȌ b*s|(X+V$)ka :ӶFs+adjD(L|Z{E`TBs_\iam~lP2H>yܶ߻Ɖ y?F;u Iyh*d&ƚs۽O;q58*y#F* Wfs;)Ai΄s)r|ӡ}z hF`hdZ@w6%%ە 낼wm0L5YD&pF=&߽{3_>CᵵLU;chu@nΉ#0!`vC+Ϫ/Qeg%tu$vg99^v''x'b31k,qS~r~w$>u&Nq=13 彠 .2.n+aB4p,w]pm@ h+IK}M\ "tgd.w&c`E?[ꢱ?-e8բjNï "2b \;x +E zXJ?NRefvέۓ|"o~yt_lws,/X$͊+ vOkUjbLɵD&FSDV9[zlB/|-l7mC7)L=::֣v I|YsRҮZU&&Sn23\RRIdhUTjOpy C\JZڤ7p2/ZkQ&emf}YCNDeIޘ)*Br٘Cq~<>[BOpcC#-HK=|Mh ]MfoEPh /jZ!֬B¸7o dPe8v&.JE(+ۗH ]6Nk{ 8?X2N.rdDTwn wofqN7F(I/eBw*lhK_)wˠ7^Hak7IorRC Nw8#zj{ùaՃ:LT/L;;jb\-'?iq;՝{~F>/^ x7"k_úb䑵<5ԟ:y]r~իny2Q;^v~@d@<`&RO8iK#@k8[nuzG4%ySL A~w]zuhb/:q~dxwKm2Z%?8w{lC>GlYWdt=H>`KbI{t7(aDpw⬚< =Kc,5 Н4B 74ܦV Zf #)@ *SsJ;}{ iR9BcC}%:}/bۡ(ҙHC7LsUWDנmԽ_FA]6CaX~tߙ@($1i"h*[C'ʼn+ץ@Sl@|._bI ޵ J5DE#(}rr_p{@0QN UuxCin# ~)3z٩6D_rq0D  (ZbN82p-Psx(_76Coې:/р'6F(a0=.+`d-SeǺ +4+w\kץÙQ.:˜jXԹZ6&mOpŝ;\ ]I? I}N]Ap%!Waυ]X:]%ra-ŃbHަ2c>KY-v4YW12"z=mk"j灍ӳ Kt=\xyLkU?{ՁnwSJS}1 ]F>F,<3hbG\&YzALD2j.+RMi;gg5_tַSO(c S_K=Iҝȡβ'6=[4́z4t_$Xw R}.ñQ9RσNϡ?yW!PDZC3X efF~ "|Ø`0R%RzeXKj CPZ ,, 1l5mɲ͠Lc85d>J.m#W*)6SRCI)lx6 b-4''g}¶:*QӋ+ ~wsu=i;̟Q'gJa; ]wd2,Ч>][WqM)i*۷h7?/7 gx) X_8ຄx 4@]"v|*"PpZY_̻D*?]x&'9Vkv剾tm %YkmyFp3 lfD"`&E Dp{r%5J<NzLFI\N1j 2ҖQ̗ni)W̵"t9M ITcbcv#m{F4oIEy tdKRn[8[zuWY~/ZN]ql_p(" 8Z jnفBi!ce^nw@0mR_qkuf=/>"XD^m?%H,S_>(lpj)5GQ6bkDMb鰺+F@l@r _YԔȯ.QM@Y5ĶgWLk0tsT>nPXSWO$'0]-VL;(L : 4-ۧ? Ғ/S hy=Έ'XXMLH+ /eq4sXT%DNyS~>c_NU5E_< .ۣZj^C9B:.I*ldNxјq\KRX(>%B$X`d{кښ]J/3b}(d"M.훸Ñ?yN*,"Л9!_s.7ғR g?&P+:q~*58K)!1a?߇/ў,)$&jVƵ0i;_è[^3:{b K'U_Mz2}ev'a1Zam1D>;/aTv ,ˡt4M!MqR'-|%cd$w+P7)qN Rw51rn>}R/5*'O`5emjaVZ@-CS]n>R p 7P}r!#6}ߎN8L#" /Y9iN^eR6^'6OI -iiIkgœ=3Q$0-ݭ3. )fupcQY+y檽W>9Y >qyGK;OlK9.gJݮqrB` d.W5vtjw=$܄DsbЈM]eh:[ a {4 g1?cV?_J!'k1<_&3؎ \a+Fx۽dg]nO)$~B0]5tMt;WL ^t-1?{8kݨ*dEo DL1p[3ǭIuy*] 8=D)vZNuavH{~OH[TkeHö |`|N93O0iHsx!罍k`*h -Y JJN0z ^FF jC@`k_n3D:)—-+oj͡hҾ{21$S* ?[@rf?sY4uCiOPk5x7ϙF,A[Č(T&2QBT2grWNEi3:rwulnrZ(eAY/3^bejl|EYuP0c'h40>dhDt)Ѳ-?قXRJ18AśBe9 w껃4b9X&&SF~+!jn[U`@%q>x.SRQ%&v;1/S(E T13k[(`6ʔs8tĦ쁦ys+idJMzq,kE$_ȅgoI?   W"<O _ĩ=|hO8Ao Q< WϤ >{\ Yby"ra}Qlֱ1v 4x!$]AEY N ;mg -;QL=VmuAI mÖU<WN!Ɉkv KY"0% 0z8>L.u]b)I|Ckƀ6h!ݽ?oJMRh`;2֏SHVtRMPv:˔Wg[uxVSպOl {4> u(L=KM%d v˂#IgnOWi nqFfE#2G?XEG| YKW}t0rۈ8/04(XP6}SN't 6]b @pʪc0LXp Y"F-׀.y P93#̋"x|McA~־V֗,N5.|YqqNޏ*2uW4CO!4.g7cuKi7i=)Xs?eVtho6A1fQ5hT\,=d{ՐZ7P< 2vsMӰz@JJ:=]tM?ѤִeCӛuҧ9uD|Y#azAR؇ƴGE_20 \8%M̒Fd׎!*UE9 6vbMRhIɶؽK‰şufIY/Q ZÎe1sؚf ̳D0ҪڵA:Eg.Pr'I#VP D&X55;ֹdszω`7XPӔ@lΗtؔЄQj |UF-ӥVB,0ԍ'év`̠ Rdj2YS;W@?(lf%43bPSI=2yeͮI!t{t: &W ,G*,6iFMjUz$NF<#}6lFeɝ(QIfO̓۷rۮ8J}oS =$b)Z/d,XXq%mWl9ԌYf5l1l Vip\a:mq{6ٚHtmi%C䀛< <kM@zBdH+ ciw&G %Ug9T$ۗ\D9|xAb< 5GVDFE0̭*srrOn6bb (Ke{6:,m HrV]N˺Hs d4~2UBw4Kr4&3]1w[?Rcql'#=_E1k$ARft(63mrӋXcNrŕSbCGp2C'SEH?յ0Ͽʏ߀CAҎ1H1]BwVV2?lIkŞl ~'/> ? ݕ6nۢm#d|ŶIvZ3"24|͐;Nᙟ9i.ɒhaqOx$nzS ۵Bc֓(%mv귰ʥGu@Ō>XĒ ޢ(bG7WTn$I`\fG~Ri@8u§ϞU~ "E4LP&xwyK]/Syv0FlHZH%*+%L/j֧ލ13Ki9ˠ$vr,ɺ^@3oSOU1w>֕MAb;a{cL]VkaP g"rlUXk| . ' grP^teh+WgAnł`Vy^> 娐WTNU Bx?7v3ӎT`ȸitJU]5Sr[&Q`5NnP҇fی(ܺk\+M 2& [pUl0elJ+nog )e,;0b5#+ug3dlr̕}+WaCP UɵcI`YwT! 't r3 Xoi@򡳺UN&Љ"}{[{Qʳ?8`뎲d"n5ڥJi!!Rwy!PS 8:?}\jݑ&I}x@lXO_UR;s(cq;q9 ;u~]1 *j Z}n*{.^"œ8O4X^y^RX4EP'TU&Dt"F$+ώW tqN!M8O^HM ,!E丨<6g_.LjhH" M^ClMh7GBj]wy D1N?RE~aם y*SԬVr0&q@ 7Rۤ=/\`tZOM07plV8_[?[6b^ 7!T{zq:Sn"BtQVm8,}P54~(3_;Bv2n'vebGc͹HO?=+{ B)(| Dk#}=6vnSNW]笥f凌 9il{vFd+^e5MnP[{zQQzRR #N7ʔEa/lh%o;- |4Ȥhi>xlOyJ} vb2ΐ"V3|bd2FC:3Re(rtkm>\|eX) )CYun=IH?tp)jgct#O*xv@e{fnyq'ZXv9a _v~x:ʫa.SGd4Б);&ekޚl2Cz7!&Me\"T ZVvEZBz//ZNz>ᅰBU΢/xTMm;rX^t'~7}BpO)^:ugi<%(5)~Pbii H]:ns%rowibOT|Bh)9/lЮ0W~cr_c1{9_F?pl~DVnWP:PCH~ rBEu䞸ݩm45~I295OZN3Eβt _gG?~!|=6k֞@={p bdtBPhޏ!o$cyD!f(_/m7xaHa0jߙRpZ}b>K9b6ebc2,3ԘXy|؊] v;'P_b0 < 츣GYa&7@$ OY am%ʶ3gieb0|U|-ruUy;:cPepv>_zՅdPodC9om_ʘ<ϾKI)'E-9e48}v1dyadS/g1Q5Ma X4F-QbamrzW'l;uO҅1|OB7X4Cp"X1\12:oL$Ngƨ"RQ9=`mF[ |{uۘ-q6@İCrCD,l%!|,#DCv*JU:0`4ψd7_M}<76(`qq~G!L_l*D~mJCJJTH07G!-v 8C>;7ܘwϴFOPx(/8.A?Bzz NNam9_):kw`(ޜ0Ϩ@mU4x*/Ӱ9#$_Eυ/9/ :4^ ^l/!0ܐա93R$NW}ʁ񼌨#ot;/ֆ&W@kdCw-]T$eEsޓ&Z-*z"{{p4|anfr1=Q16z)tDip` b[6# tv4@ akCm'ZQl xpo];,gg <ljab58p0$]P8P)- z/ZڰdžuJI/td3ctd1!1њȃV F+͗U5NK%<;3ˌWGһT{L2E(6VYIP/_Ũ|fCR\9r;*`x8aQCW4,Qa0Z 6eMMm@״AeNa?kx vĞcJ3@hZǎe5HrB[dmg yIi}9ku!!JNP@&E+ .,77Mжn4,XM&= β~MHwẇ_ixz)@=߽K2kWU܊u?lq(XRX4/#1U)1[Ѐ~jGʼn7j;M@-t'<螈^qezDZ0LCϒF`WmHmǬGGS S0$n;DϩϲK!Z\sKv6S( VbwXgke䜗K+"~_"bX!bU]$e;ţ ?oJ:L "RV-W$"oHO#ڵ6ҧpO &^Q޼N.\w! f"8  348;,-u T>. Kqϻ]_.` C^Fټ`gp-nP#wuXk:⯍a=I[+ΗA Y2YK>2f쾺@T̽YɩKlBwr0^[Xr#Me>B}KR\hڳ\K!:!]g 5vVlH^&PJ$+ɺ_o,ɈX qhPT*2L!gF?/1hHOf6dNrfIM6Zj6&ϡ E)J:ljDU "i\ BRu^Q_eK_yH2 mBMuznQ Evnbyb)iNSM 1Y{bJ?z͞%r9G<әMA5ᱼ^q ɷN8yȑ6HPM$4dkG|m.&a=[.jڂI YN5HS~L;XqE *$Ab;j*9_CBI/Ĵ1\8'a!Cp.b&A1آ8"bsxHR#S%Z n#"orF <̯E΅4u0.mB8SeI*1gVX1qWڣOh @Y擳_ݣSR/NѷbDBzNT i۬=v;s\%>U9QiV WYEpl=9#09ti^DH$gb_S h *ʲE󦤥_]c_\N2stJ/&I^k R}>ڬ o! 31uҨX o2?9&`;dI1 4/j9sTvA]݀iws,^$6E qkXI&ij!CR5*AHb;3bl-hΈ,5d[l\ xNce>+I@=>)LAB'l%eĴt/j(юE5sX3*تzhV -'d[l\v)'Du5ZaDutD?1Ƹ~\22=ǻ { pEOfۋjBCd2;fټϗr R<yi.i r3=c9>#7+c5q'ڶM;Íw.LdM"'ixGL& Npzh^p| @9ɋ/ Ǯf%0aa*G4QE]aеfsYI=lcU~B{O1ฎݍ2a[}&aܼv S=3{4?ɉL)y"u:,u+d3Nu+-8~l̤.z T@4KpPPwc0t#?@TӍ8$yy h1Uw GV) Kݓ/nVmB7,Ala'x(橓Jʽ"bLi?*G+tCTI3 &d@hbɹq tP{G#a$O`S~xJUFDp oeG$I8ֲԥP" {ZYbMވWh#uDwZܔ:b"~l%pSFy+5/\ x9OQSLݞj'/EcUE9 ⷇ޑTmNkG`dl׵X5q.B3֠ + ;*R=묊!q{ 3~S>@TS( 5AKzGz=aI4 [D6.kH8؎J@F>ifX<\e+C|M]ASH0%L1oOrfm|aDYh@zwlp''{nTchsl8a[}QH$d/԰!&BPe'Ñp? OblKi\TlvgɗwSKʞt;W)-WYg1 $ -SCڰ~΅$]hy\IY[᳊ ;+c#a5Dc;i g]0?mX,&Pu (ЍZ2%q,0E/`_7uϷREn[{2 VIA÷4(+!x$bKZM&$^E~Bb#EGA) i׹|hL|^SrkWҺ Qcv{jD%k'8Fn$'uS꣏ËAU ìB^EȑP稼`o8bJWIblu4eIM`1=0hte囚qK,2EeV)E)J9aL@h;~}}H`tAՅ49LDFUn`eܲ2oald`S5Bd7nw|[!^K n0+ޙROlmlI!%픠%UMX8ݼ6ֽvv+{{`P {}~#_z1X*#d{IRNg Bf 6l#%Mv“ EG*[ԗc;}a!x} Hm:Һ'/_WGs#=HɯF Q%:[ỉu&Pe=s^b -SѲWM R>=$qLUPԃ=|W/k3J |Xٿhi 0<1#) f2(ghX?SQmv2*CNG}io:17'2ĩ9kzFNQ+t2pt: /dT[\[{_͸c7\2Mj'~GN NB,1|S`iJe?w*g;OacV42K=(u'ϐ6 4!TTN SuQk8G;8tt1ܦB7L`:+d—5 Meנ'7\T:!,34gdSoל$ݏ^~]=7?wh՜fƽlmއ>qw,8&oPTKEy 1^\i/6hZQnS1XLNqWZZЧ0S#vH~ res~:TOf Ҥ&{C > &/YALe2 ̌)3z^-dP: wjW}5Ͼ7c^ЇpOӔ_^;k6J6fPsMF8Xi#H˶,uCuQpM`C_8`4yykCA5H(_[5Q)',27LF\wx8 AϣZ ț[eǎxH +։li=3sd ǵsUGEq3\A\C&"B~`o $M5#Wpq΍,\U [G</VJ5WNIǗ*خ>2k*w 4E76>±-?ק"ZtAP4?W1)VތW4q[ a23PZ31+4SF e|lb4BoI;YUr#SP6{ ^Lj{ڽMvqWY+2LAeݙ'em&v0H >d3ӽ}{ T$2'җ8[W::#YC߶. >1BW:^`F#rݪJJ+r"brVcXp'avCm%lQx}^?Sf3"; c^" wZZ4m]zJaSzԖ>X 㡊^ M`^Ԓ`-161ZܕsL{S:5;hK~a{M\$bKy$Q)v'tt{}(tw" W.ۅbo:KBef GhZ".XNޔa].qnŤ?npBht> P+w]ǭPy5_ H~Vӎ yOrH<{O៯شc!s.x Vr&Kfڬ\[7ttMly?pD j 3<SGc8O\cLc=\RKi Q%7ֈaȠ0=^zI%m発|mZվlz饚ś uF=3CuTzKµ[.R4Hd~XWPWQ]]UQU!l*)Ehرh'sM[Vp1ВqMϛ@g%`)L Υjǫu uNpr=`)6o:GNhdJoa# r VϤ ;6a" 1KZNl2*)LHqX * ?ٛ|9"6V=JQIeՂCOC"8m=|a7En<_<&#(}6 ZT~L*q;,+ Q˓j's $(#GϢru<6eEE$hЭVzt?w 65UM]Aڈ.dN}..UMpth-o6 u[);ԙ(6|(H aܮ.be3u_.+83z<;Gn%% X}2#eF4_C#Q7rޣ>4µ4ss! <4:CȦPd&?pX3)ok=XpP,Pڠܼ*]9ckzrydž$KqTל+q$p> VxJ wV#iek#V07xJ| Qnm!mQG!;UR`299*H&HF^hat` 㴈 ٷiYpmJ*N=?װZLmv3-3ǜnrP&}n࿃柈 SDpy -QB Oc<#ld  Y~- ,!T!fXp4nqAǢ%C! M ,hа9{GW⠿fDG)OVw'1R:z"YJLuרz79E /y[[]2wՌ# X,ɉ▯R75uhc۫Ti)K=]<"c',M*.䵩L`T\h.۴ 9oz(ٻ=ki'#F7&g|o' viͲ3R|-P]X$Av\}Ehd6DE^Y5Nϙ9TVFL@R= H5dV,7Ț7b삤FXAT) SYa`$F.`pY w=}-Una?,}&g83%c ^d-rלoN7yMA[,ǎ1>tGx5]:bk,E(ۧ[rnm傝*d  =a?P0 CWp:qh#Zuȃ&`kezgb.髋f5R?{ij$ ^:8سecا}@ga\;'$9Y a@wګ-r;VUXv9٥`LƵteJm& #wAI7"_qSo^?Ub6__׮ž.w/H_݆e]/JRƍR붇?B31L5Mo×X4:+*G+c1f7,6(z qԳ*]dh]РHQ4<ycIѯ7!F5Kf64_t]5_mxRSR`JmUVϽKT*<^mf3Mwib,*RLWW6rRXR<WD!Sz.]ڞuBoElנ63H%yAJܽ+wJXQC{tk2"Rt+/Sj(( 4uuLt$Q:s0cglȫc gEca} 8ۏp2#eexUlDjpN5TE lqaŢa JVE պG˓`c'M>N*ffCCNP{uU;UU ާĮ:ŅJ:{lCt.dB3Oٺz JCS5ÇS1?;/ AZC qA&sOEۃ6b 2 58 Ѧ-׋[#cxJL% G0d"S'B3эչ\vLq`<1qB(U(S;dz؁8k4rƂte/0n2QgLigK, CO\RSڠqF|:ت,$YWA e,TD y; PфHg.r2̐y3jxqӧx eIMh w_%7b-կ@lHqVۻ>X#dYgzc ?ۄXfP&ؠ-缇+8i`kA.aWxɎwUmHHfP @BOYS3U.Wg U\Q>w"F |6 +(9}T@`Di"zԌ^0;'%yYA6l,v1^v4̆&yz09F)<̕,&?DS?DZ{&-]vݑaÇ^I^Sۑݟw;)p!͑fxf +ʮ;g3x]gWUר΁#i)-^n' NG…z;vF.23EQ7pD$<225尿X_v>oR.##5r/k69Ψ5j- כDT%$xf '].~yX|y忠B78|6WZNt[]\m_ {V煏@߭Eujtn :v"ܐVzY=(({ sT[T=`dZ2yt`1Zi@Biv#cUdfj>)*>%FV 4Z6ӂY UP4SᘉuXD(چw /'!#"8g[bE"Hʱأb`xgL>DWpcpCm_)z8p\LG×^8#ql괍DbGJιA2x;[#6>&K޵t&2վPTBod)rp'VM3oYc+/7G#;lSrހ eSMjAV45Wp588[c9\P(!|Y @kՊA>UvZ'BX_kȚ(s3RIy5CNiINR#%)ZspX1= v,Nmu$Ǒ\{_ 5Շ+*10D?--_rLwz=NQ?\Av ҃X! u!fBrRV<_m1GD)L7`̕vM؈[6S)m<ᠺ#O} ]Evl mZRc~ ]| R7I}vjy'3qm9R/T2-jkֆu1R/=r0VX{ٗ.eW{ #pA'=pRxp٧L7Ӆ;_\aI\8-bFB/yv+_ߎ-4!cc@IqbJgwsvHGe|QU4"ϙ3g%✀of-2.~{ipXw.evbS=5nu=P o,~ӻv8 a>)Bp)tv6 kWU8V(?9Y*,b=HsլbM%(ۅ ]{HzX- }#j~Y?5^bJ$nUޓ{߹i_-˅'VLb/ٶLAa}9!2χYeZ>׃˦=>T}zx^iٟXxx0E!3"QX<>@|EM1[*uq--50nUb~Dd.F ͎muG Yŏh?^<je5C^1W"͑X716Շڔe7{:~ٖLrq|i8 |Y7K-b#BS.;Ƭ6oTAAF\ d7n~#geVaPLN9wR%ĖAOld)cp{>3яG"NkI}$̞NsUWApO'JŦx0eӉA2{dT:h=b,mg%Q(Ni6HHQI@h6@cL+~rtzܷSj2^g6h޴/{9e%eΓ~=ek㝒r%XI;<# 2(Q5SdRG & sHJ;~{L89RqIQcsG>^<=`͵e^ w J/_u=#U"Qm=]<>mD(ݮ3G/o%ɉ7qNǞQ1#xbg~y:9EC5bᇇy ; ݷ5>p)B %>oԙXAxT5QH'| N\)e /&8M bzx-[qLkmg5G6%[.|Y TKy81_T/+)3G;Dc԰[C{/X1f4V}c kX͹4~ a};}!u _m|Xv7sN"+E ‰ ;(ڮ%  P7%ށ]s>DĆwG#SbוQܬcJBvP%F-M3SsǡD:X (rMtJp3&CI;vWn*nAL 8HgEH7]$m:7 %0 ue(",{gsD(;@uxi'%2v?YCW`~ER޶W]Rܺ2LbeL!4E$VZt;3| ʶ+uγg\n)Xte 0,  E~ 11۝!I˗/זU;n4=7]1adpm(^sXDA| }IO[v +idֵ.`6|0T~Ճ`;v$"3(6P( 3{х]5jFT1c*WGPg9S0?|ʊ` Z+OiZW}S]v!#j(E^%q DjE~&S+nȼB\6Nx[ldՒ+#{(EdϽju:"F}/LNRǦ8 ?xu[B;<(GHFޡPR7I&Xד#S2Ф$3~1Uos1 U;mo=j?Ӌjָ0gEycLj)7Bc(ѪhQ.߾֎ ='Iဗqӌ/ܰ<_#JUB:MB_Zl9*K_ 1D§ol ^|qijۆO\KnG:sBg[d73 #ͧMԤC:O!L`>=Ea?F\׻Ʌ6#y,ap}C1 LH>k A1gƜHfճ0xz70Υ'U# 8_M+=KO.а%{,¦`tXc/sM|Ph!ɕ@Q8$W@Uh.iFQ/B4ZpKL J0;i/P:ØSg’pЭyTg3]N|L39kH]U;|AaMm`t\ ňh|kc8 H7,P(4y> G,gδ$R/ж|V%!5ջ3hɗFgČkD|5t{K'HyfG245R Z7AFlH}ғ$AmFB?c9Y/ 5XV;q|^"19YQ :pQ /d .]&]%':v3)'W|sXNIb$[QNaeKI쫧ﺜT惱'ũI^_ x.;$KI^(O*Q%ŋ"u#'Jm#&N,A=XM8Y_kOP(+ͱ˾0ZE7quu ^OL?&pr?P$%G& bu{Վ Y{LЭiWD|v'V`dŚg%3c>J`TeԹ#;fnK,q65gɪIxީ-kDm2G׮O7)[v3ƛ#.x: l/{_+ ޡQz]F3/3 <:7]ND:)I2%aO~]ݘyD6N( ydMj؈.ܰݞ:C4"q#HwzJr]9'q]:+3/z?WX&uŲH4lg1 YP58$`8dm,}}xZ9ou+ & EH|dX5E:5.}kocY M Sor r=!2e9 NU>ܪ9g, E ƙ)rPff&CHR11GUy0p82%D;˓f4fBKPSR;i ^]ŒKrAۅjDNzЩLBJ)1!?p&.G9Vy'&rA0"NQbb:W3:4BsH:hڋS IcTP糴+W&{VϦq*p ZXq<@GaaIzm)P(ܧ7DZj" 7ѼTgK\ɔGRЇp3_o./;}6 m<"2&QhFH= gǚ^U5^N =l-b"( >Qö& ȰLB/97R> ޔM%[lkSejkIf8iZB Ep@D]Ҵ̧eZȃ'PNUATy '8@T-,জB`Ze_1I*zesw_0ԟ򌔔4&&֒XgPx A8؍YĈ?n$g!oP]^ 1٦?%(|uM!cLً{c=?k8C<_l]zI= K>Ȳ gZA ]v%wPl\FaFq1ZXuK.jњ6w%85S ׹PGGK1[u4 ."Ae&)"֩f B, +4s1amJC3.@G\Ჟ}Թ6x%N/iX#v Ki99%N_@raqOU4`՜ Ħ_U00id>hQlY?j&LjN45%˕*((k^ZRu~i]c-Hpiihq=K&9uG8-'ml}wӶ~cDZ8X>B׊LWՒp8G XK=j2qYmN|uci|>س$~9CqVveɛJ۞֞آ-qr3KM{;i=.y_~@=)X&."mrX``B{w`qjWƎ{5V.  x~iMGvO.N0CPPOVjUԛ_q?c@[^L(r/r=6`~dZ8[Mx6^岠NV+ZA4 g| Qv#~r.[: QcATuKǀqAuҭ),-L1Xj 96m k솉peldG`6=H/Z\ οy)xqSDbc"*hg5 ҂TJ}}VVbbv\+yQ^*#(|6V;}#&7-MoU'c Z\!oM+U7ڌ%! o#^igb {`ũZ>'L, qX©.ܨL#/+|Lw<+6;N>@|Hc7o2DZWs`~M]r_kdѳU 0cjɷD(+hȻ0mΝoqVpқ,VB$_p9~k^9GU=i]Y ܠyN2OLL1DI,'%}BCfJd1.jYAn\ҁvDfWK3fN_(;/UPOQ"zW;8e;t7Zu.ۑ{2o&Dqc cxEK|e_qjb oJ[sU5 oDc|R剞u)E?Jجc&-8T4ɱal+eU-G\ ܝYP_}#&b"nlj}c["0 sB"Bܝ(MND5#sLBf5Le S {߉k,ΈRV .MV2<At-e2DU&d 5s!'mOezЃpU]*XmVg'4n$ N#Y0eF!hK?Цk|ⵛZ@i@^f:1N BV`rq0 c lQyӎkJ4OщB6K!xjސd5i|24הQj~S{W^ID,U6UkGˀѠh?53Wfw=2zͲ/k!#m#ԩSZTNjDp FJIx7w"qu槽{n4Y Vip ~V P[,PAAPpܷS!.5S7޷߮{;mP&ʅ3n;vVu'WOKA_qOdcSչrα 7>^7L1$5uI4F)5*exLb5dfAθ%Jzӟ9@A%F_M -ɺJN|>Wش'0@A VEmʟQN %lDCD2@H||G 9 z\!)=\YNO9IpB nl[Ks,&Q1DuzVDe<(IzbC0QYoꓟkqOm'?}->?/6TmI?s9^-Fo~8.iz'ה*PSlcEpG8 .b '!{}̧CD˿3Ў޳7<%L΍A8Mw}wVyXG!KrlyL9=gy1qHlG~Qp>o[+wxX{_|]2"btEyss' ҌZ̖sq~n<'ݝqL8`_*IQɷ {{Nr&H(y`:2qОn+si-,eoy2 ~ř ^FP#Fc_K.'Yw hޠW@#FxK,2R1?@U~ʙgT_ 9|=^&p+is $}*[˧Bv[JF .6$;iQ{< oN'7]`iV.Yfs* 8x`)6cF+]'vpVk'VrŁVNA+g|YJxic3x["s(Pk0-3lZoJsYwOm7$+ 5DT&m: I^2;vn+onl(sfBĔ{K'G!BtؐV@%qKl8LG?MBFJ;!s G~iy{SHD =Fo|(οs%#wo:/ f)pcVnf=":54%\1E-K%AҁԠ5HmN(ij-ZZ{( Ejy~(B1A׾H*x+Aa79v ʂ/r)It }QJrH61)e*)˙o݇ą1ܽ6k8eNb|nZ-$ǣCք''> 8odw 4Ҁν%q~ns+8+8:?<G`Kݸ_h/?a0qræ+ж@(O& iMޏ̢ AkitGL='L=c 8:vۙ#7vvݬ)li:7Ig=APxل!7f[؞@.nq#U{N~')_8 {bvYKٕRÌ~Sj2s O5 R ];I4^gq":&tll;*['7@kCo}%Hc*11TpWJN?ۼ;=GJ+l Gi=3,qwG27LK7.C@si +m Jla)}处에֢OzQWw;oNNQU].tomc;7*"2~y"'1|;Зno>[jj'^(<:']mP5ch?vH4䬤Ql:sHC#UQyb8s:9jUrTeҏ P5^rBbP畘LW_)E/pV"[:xzy&b7qw-s./9>CKi'xى6ڶR#CA]\ݽq\~f;e\Z߲Evh$.9r%E6&Y-HPgfyrUM%IC͕xo@ &]tO8ƤSX}s0^LU&fX^o*ZT쟍!+waNor~`vc9ñlV,Xˆ =-GCS+ 5p,W>ѧy(|,A lWj HeW;B#N;D(CuLȝ'M~a\YOQO Cad kt?OT*㍵`qS.pm6K"ݜp<,_Ffgq /C<ɤ 5s 20p3. $?偩"6ëyH܃z44+N KNˢ3sr0Q$\'ƎNd2R3oĝk\Ʊ͚&R!I:\oyG3sZ g O6HT2- *bb*rΠtt?Şi8c8x 6&?, u%9GA fnq<0u7T&jC!{OLM–GsR <-'G< 8#{Tf1L;+>4aDLZđ=(]Bj 3?2DK 'uմ.É.OG[ϼэ`BgP!al7__l-PX)?k"ѕ\׳ /pB-/:Xb_n*{Bf'_d# ~H"%japGX=Q-_xFh[ XxZ݄/T e 2ɲ",|P?TfW}YY[cֻTPXI3-~v=p&ֶ,+aKD́yMyĹʘb3bZsn9M Ur);BRuLS>]vg1ޘoNgF}񉐺o:N폍\w+:㚫SlCe"PO)7&kxT̽ʅ&p8កKȺVYŝ{f[mFj/s56uqExSc17;~G?b@d{ؕ& [qI Ef~/K__GCUo3 Rf⟮[:1PNg9 ?ߒ>TomEn~BPIž>kFHa |peq=nd82!.?֕b5k4+.Ahh*ZB)cD`ȯ&%q0${:P /rPaU~)yB xxLiH|EWݠha;S!B2*8kl-EOBH@HӌC_)ho^/Kf~\|Ԅ[fh5A`;Vi/zt8Y,f F$蜱 #Ư&XSiBgP\@}Qr9!t~dBC,HbJLA eArn9bY¤Z gĜ|@ L,=;n p3p.2mĩPzLQH|,": 0k NLH臵] Bבр.˽-窱Wmq%s6kEXSM`wLCх]ɔ5+[a`ayȽK G*#?5[뛲h:Q&^Ċm͆}A8%[>.l'3[QSn_:Ο7uQLl8048Ȱ laږxzrX˔P2eFF%hz8NgUuCjtmOA8 lVm?K-6R^ ij-'~dPc-sexȄGD藛1r/-mRJ5y|q DkOm1+V=:v#'4=bw']d<9^se˖IO Jڴob @UJ'.)"/78nV}GWNBѢ4fʢh70N-n]!U÷5[[VGgurA]ޱ|8f$nYd1AJ NuVws7If[qU>LtW1l tTxwaSKTKTRj`{LBY "9TYqdvCڴ%!$kluLO|ٔ]A0oQʧoޝƈhW`G'B6As_r5vk+yC&;e+**PTυV"+zNe@]_$3PSȊXufeRޛyc) QnՓ]= fIJ@wQ'3QMA1zYwu79ԮG9Fm5G9zr)M4~qf )1:Z3-k۸TŻFdkz:&B]U)A"pP~q|[LRT @x |Q}BEջ#(Pfe^s3ѹ޲RZP,0˔8;qw&@A"Ѝ؞siߴ榁&̼!VT;,٪:ݯxklG+=ŧZ4f}#,J|G\PNA eFcq/jv!jKcZmF*IJ mm8XLOp7L0\[[U/BD+ P|D[qž LrtH!Xk, H"iK^{b{5¡ BوĮX/x6 듸e-^NM? %[ñ>QN[@:-&ܚS6}7w[${hF^ sC/'FǏĄ먷j eބR9UM1C:=@ea1ZF{INU#W`'YKƟKLȔ5vk 2pCHIO!5.%`"RRu`-JdB{@RIqǜV?b8)Lc~Ė!|>RH؛vPESWl % C jY`| #Du@pd$pG!JPj ;ȫ>{7gZmzsCe]Hٳ8ԋc6\vqЃ)lD".Quʟɭ,w/;x_n!ܘ՜[AmήMm([J;"'2Ǝ-(1R6aYt>SXhym#n_2Zv̭bl^tF &g{}a{ gC~5*clЌL&lY;h&dgQm[1"~n1Zڜ%4ǭ:\>E{PHja#i )Pv@Ek(si?4$,Se&l#x xLYk AhNswGl,ۜl{ }֕gp&'wB5[ Ku'@ҜaK<L'VLqvMdR_Voݧ+R|@N~Tǻ}oSc"=nLGmY5Nޠt^cB/Cc;daR\8OTc;'N^Sa(?TXdip - m3֌ (%=,UYS MuUu<~ PeM6!kAՏU#>c7ێhN [҅ Oqڪ>fhSQzI~ë_(dqEMZ͛l#%u=  4FQ i|,R2U%7ao6 cV[0-@MHusR\X^ivl΋/ z5ƢR=*"Vr].;w:%^`'UR{w8h(&Qk(@t^ bOc}RJ7f&n31'Jc$&AzyA%һD .@38@Lã"n/[B?GQAEIT~yAr3 M,Q_b Z~)_E%9ZzH⋟vS7Ӵ7n9MՌ!ir`ՖJW}r[Kà |?c>'&Tv`0K u5#VbLRaO<Bd;d (6!,EǗSY"?}M-Sxl_;%y7)bDu w&v4 4umOXvD9HȉҍE5%)D(fde9uY>?,ujHi4hr~nx&a6:$CrQujgl{ ~-=|7gcu$3fiBN$(͍C6m f+ ]hgf8t,YoQa.Ib#لb_Ss,+P~:ޚu4➪;ORZ}'X9X(\w0[AOdbt2-kaHShd]AZ]*L/%!}k "DЕ@4n>z/P7t^J= *-5DƂľjÖt\a iD.۞m"g\%=_q,Ar:2U{#1V(:J@@!ǻHA#&0=wܾƦܽM9Tvn"m>=*4't)wάY[mJtяntqcf6efWExs9)q F`BOueP}e')_Lk.^lLTFGԯJ0 TbǒIJ(K>jkj4oQԭ~j5f5AY_U` ܪGۦطlj9':">uVJ1]P;9]RQ"9d*PX\%Nu#s<*tmVdE"c" { R38'-6Q3| n"935`fԔCf6sڨEtL?zcҗKfEf4"& DA +*u/((rt*k*~:0AΠq!ŔXQ&)O^:c-N?Oܱ)V\-곎j=&~(iV#{{ X%&VGWdeqo}<>fO5|D pl̸K!Yьgg|{5:_ TKYT!nK! #((CՔj`XωE:lbOE>\Uy׆$emFk>^ۋL`SxahBXlWdwH S I0wsn*q̊M.V;~&.2KnGwLe:M #D` kǮR@3P /tJ' {8ߦw:E/AscWY\s\c&W sҎB,~N"Kjgևh fk}$L5 *:0F|KR_xjԠp|/Uo^b NTun?Οxx< f[co kχ^P_R_=z+ v)k^6lPs&U_inνx:rkjON8F6/> C@QӬ]'e:'ϧaEg2 Iwg|o4^zgU5sGu[ c,ڪY ƴJ4ޗ!\>[lG&CUh/oEb*ZSNCSuf XHzɲ].`re\U):7U,u6l[q\~ٟx?M]]PtH~BQ3_//3Ilwvp5xUA+{˂GD2wĔxׂnG4'A/̅ݔҠ0{e#6ř~P9Ψi>dP>"0mH4)sK{yiZ`WZkȫ? xX6r 5s7BmIL~Zy^|oD&=0*ך&5;ƶԞeσ2K=㶒,[\~K pi>NMj5BnZN(ɖ散\@׼D_7ŨUUdF\HdS ~fz;J  qOpڊZ}d)3(&m4-;:cx1ViY8&3 #SM]69ߋ@*F ( 6~#K@G=!6-/hN2 SwpKW=Zn ^NRL 鉗Zs3j$tS69PY˧"dM;_q - +sӂn=!Jߎ?^߉27AήןӛcqPĜ78qw!U\_r`. ]Ƃ Bi-8}K{$>I决`Gb5 !>Z5}A2b 4,iQOH)0kk}qol-v#٥$]f=H\&#Ϻ7yma4)'= 84660R-y71a؛@$br0O'{H.#:h89Bf:X.ݶ!j%$bC(-)͘}u} ծcv& G,b]eV˂swQ`G\`ckjs QK:6!PJ+Tg֪gEw!w߬'0]+z^0zqҋqgS#]nsv3qgI:V| /3?'NbzMyb^^k@k+>+۾ f2Uj >Fn95~ emB<Bz\pJ s$R7L2 .vqwp>/# LcrΚ%fe 7ژEU7o95.ǡȺ-iCWc PVL!?l-}V@W2,[? i|$k@44'Q u"GI~Ћ'\<$ V >c3n2/^L h]> }Y)56V&2Gw%ıIA),ۍgl?(g;`ZYt_v1љ:pUs;qK2ʤ}鉥8$Si4_ɯO{"/G~= ??G Dяvc.=J8b}L]Ãm҄| *e5>:bwu?"q?K.D*JLgpp7JZ|:(7JRbz  #{'-<o qoLBJGbb66Iܚ˞x}#Kc#< 18V+]?_khMxN ߭4~ymrlh*RƤ!Wi6QvV}VBsc-{nA焾tҌ|)M@3Ko*6gΐX,OZ'u@un7-cf{s晣w ]f|LQ^]*>ܩcݣ _uq2"ih:˓jQ?[Rbh/?%mk . k5a45|r^I{[CeVc3߾Gfq?V:+vϩ Ҽ% tn:A@^/d"X4#!(\_Q7ʌ4 ʘ۸"1@7㵠BaqC/?^7qEQ`ԭFү-3K"萇#gy+gݘP|K6#Qun{ay iP/$G;W矒Nr ȬVн[c\{eU<.#TcM@:[#jaޏV:`bݍ3UzD%Gwb.CfycۏQMXzգ!7_a#Mb,dRW RgT]6x{OyU\35R$29F~ꖺY `(Ad{{֊[sEXF^wc',GjضCg=[i5U)֪_aAm=Ɍ4jrR_|($$Fht 7{;"Nxq J^g7~U:wm;>2~gg{ ! "j,g1F0V!RwZ ?;;ꔧwG76h]ԃɩ8Y!5-Y.K0ѫU1-VSuf$AHRcdD42"h#/{`G#M--s,,ӷW͂O1FFBBiNgv64dA<i]tPχ| 9DA WTS'iH&Mr܀}H -91ngR±oQ#38I<#7 23Ԃ~Ro>kۻO@InCm #-PXQxwl>/;k,:aa̗vܿ'*-[4Izt8d$hl!aф($#L|H:V#br{vnrR 7ׂɾ"^tb{\v=F BC;u٤r6{C7O:)tgzfnKllM߶϶ 3ݲJ`]m]ʶdv.[>d/8n88UdDdT*邔1=ԷHqyBMZ pOUq ׈V2C5Vz++6'9# HLdHf!em&yFVC6 I"9Z\e]|&ތ?˼-92} U:]_ɣw2R yZp_*L+&ea'pEP~CR gBcjY/9=mfz3T /:3% ɍV5{ 9ʎCۢBn!j%85)aO1V[{fX :g%2,t6*H-y\J&ȹ?i"lbEfmv4 $%M›'rNTKѩc-[n*O{2)8\r퀞j\Z5:kd1. *5%7>,sS` N'AZXU/fHSMneiQ0G_ՄWuVչYITWbjԐldTN~ܣqو4'瘺C`⚮0t+IJ G:{= [\z!`4ay%\3ƬE@Վٯa47[bH~X1d%{kR;$[l bEiO@Շ&s&aPJ9}WA#;,?<*]7QUtJ(ʂ9jeGNMOomnO4_ jI}J?Wzjn|U&ST7J+8EX_N!ƞYُW6RBehE2kfC9eVv fO1i ƨ?P;LiL8xP;߉'}+RFЩ$(ƹеn;G*@x_żoy ;m:[ai"B:ηpAvDH2am:cU5O3Qc`Sզ'D'C;A;15ʖZ*z@Jۨy 4d«/5Ux"/R2;G{qCBM('ܱ PP/UE߼_-to (7%DA`]?#GNCx "fy{@^xDB9[ZNz-0wdGpWMQ_0YUYJt .Sҗ2Ձqn=+؇OJԾi-]f|5]LyGnxP\gQCq5X$C~lc#~8sA B-8i6f<5s~rc꺑6kEuk;x,iݰJ]/@_#z dDmT6(@βo&3ӿF{bY ִ Pn޿*syA4Ǡ"Zwy\ؤ-##E@%q֪]S eJֆ0y՞3eLqS fjE/0FWiS/g &Y ӈCYВ LeTD .Px N#}ĬU4\EQ!=P"=N^߿EF.-OBx[R'Oi |I*^}+Q!f2Lt/Fu/Gon֞5ȄuC׍פqZkqj:Bds^RsƲȋI rF=үaX=<:ehO|!mmYFp Ne]ڨ_}_&j@ ˭*G%\{0͗'hMp]{B2$B^ NiA,^R2-RRsb>mcD[=Hz $#QF¸&eNXrk(58-/j쯞OE6P"=.ul6A\N9fsܯ>'#F La?R0&ZERm1G50 ـ5T$,ſCevh]@:qbK<%oғV2Tm1R~bTyȶsZ7+s 0QN8ە]%#<*IjyIV|yo\Ji!6Ä6x ֋ zB{ #0wΝ,ŌiBw1}(_]ΙvOfц;o73qr}tB)x^fexe4  1RhE<={#{%[lpuyXJsj<ط(l==nCkwSHm>Z3KH`LSiC!H9QL= P%#{^P\M;e"bG|FF=JbtNvHHlRWoVp @3 y (9X iCȢ_3C-/St@c[ɸ[@nL ;u82_?cą+;!~p O>{ok[`>ԏ#qVG^ZƇ &妘:SA}F |רt~c`֝ ɀؙEgPG+Qaj~O7kY rgw*do۝~ L%7@,}xbNPP%\2~}K5T Ƕ%#S*E!.xH2 y@oAI fCZ\ĬF?&qlp-?, XRe8+]kgrm~2g}@k{KlSsϵduΪAypB.Gw0h"Zñg9h酧/!6ِ.~({ L=V94,}e 'V D 5Z"Oʪ+;9,zfHqgH. YkGe l|4hS5͹报|QμIS4D՘Qe2^[(d޾0(g`(95b~R ? l)H ʯ,ʲ~Qi /\7r Z?fAGGp8"8R` ath9@еK:(8t҄Vj /3z1izR!f3Oܲ">)ٺLeJXpaJ[(f-qaZdvr7yIJ(8NGɛhd[kˑKh[3Yz,qe3ˊ]x';гS5e2Jxn_n 77 NrE=B5*$JTlp@ #F~Ja8޼jU#&Ugmy[pS•9^G^$N>g0OeGKTgyn [gdm@7^ *B۶Zi`]"t)X]k{MYi)ݤWK {Tk5j.  R5;+']US@SN1+:>"S\ŝaR(uv }5lٝkde5tΧ,By TG)%ooK^w=B;.-20C(ՐoЌ '<`LǛNjP8!`_C䓨X9f; 8lŧ5Q"՝Ψ gVu{--w+큉\-BpOr;MH :fj'jFD M/t>_ҀX1_sMSsC[j]Lm>"LK!Zo2 &\/:;#Ǘ7כŸęftL"F˽hƥ +MoنT-Yc0ΈD"H1/JdjFhA&Lku1ӗ{}~!UŰ= 9eꕤ+PpѵWlՄ<5f\I#rdeuzUABYuuu Endd/C|4 ܋)+Py(3%ڝ<wy6^^-jLVEY[Qt9!r917fmbG"߯nqvYv^dD#Xlk;a8gcUk9r!`ΎLvA{sr|%K5g,ʲ&GVك1WHQcgW˄q(/T\3,nј= $'xxueftc`y.EIұ[dɿHԙJrޚy`PMfA{s_-Ia ӳM-Qw'Z.*m+yik퍑E 7f=x/m˫uڷOzh :zrOvς`|+&C>2D0W'gr5lyh v]|cOF7f\C;i?V`Dً`X&U&٭止NK3S[lD\_ϳM>fH`?eo~ghZ>fV (/ 8̓;m2mGҖk|>ITPe UsUKBd8+v sQz%#y[ڂ~c^^lD9el#q [-Te_so22Y೔D , U@j(vki1X|)a"m|bQݴ$."@'T~5̊J/BIWnp ?.O,TU%"4Vrnesn"٨&؅c j"OO#RraiO'h͍:rîBS+s+3ahq2gXڷx7^W p$2`f>9;$y<)t ?Z&0nc O"9p:~^^[."g%V/N`:Dbߺ^gg=xyi |:@U}4c.lf"QpYBفܼ-QSiQf QW80"$;;axВdPi}c7oc0FP/w Ry.ly*㘑Ⴚut;5eOF~oW.3e*n D#ژRd巉"6S3nzc1F- ߠE؍d2 +hpv{ꤝoj4H]/f}|qEzMQԓtUx+1"Pu|" Q:p}xx4~-ޠPrvu88Bg9T>r t-I;M^Q07QLQ+S<5nk?ayq.BY\en#1*L+ʈMP=hN)¢xƌNo>K*L)?y@,P>2PE`9QM%SSiqmyx{h3ˏ@>WiH1o+:1v8C 2btPd=X\=[Xi//R5gt6BH 8[glP:d.K\*4.qaa#3hu;ZpEN)V:t1Ӟw/dVW2Mn-IXVWL:o5>(@yVأ?z 'w;$ ݀bwRxJc!/q㡟܉irKHj8g%tdIƄ8q}WO U9]OM<ଠfw\}QƜQlOoA:\UrVW~->I9,W'}g,"p 6644Va&~-5vrvF7301+{|˙´':(MĒ^adaH,SR Hw*1cP-TOd3ROe|kAQՏ􀨦7b"0^Ό22ǰȔ$:m| *Y:gG32MA ozfE&X#[j-͐,c塶XT^%~A#yﴥh gz/zӟ+GcY/U`G xx396u6&w0 ,4@9ao,WX5r` s`u0?;~/GFzdGѲ"~jxob)sd;jE" @}w]Wང^Zqz&8%%WtXg&_بhV,ܐ ՀQ6_%$ݮ304c#pv츦 `d9/S.t]];*e>YgS|8w#-R~65У|TC _ ܫ8. 4"3p #kEʔd$c L:A"`Ѱj9@vx3'í_b&ZRԀcr٨JF ! 3!lF87%ʹkw%VD60XYȟ*.*ΣL k nX]=F.N Ne'lefr3t c%XqM= ;Ţb&UZ܃) SF[GrAn:r5P8$$a}1:/ GSr'CEl ! |ʌ|%w%֒-zEGeQOGr&'84["B SsH#)d71NuxUx$QD&E'࣭'(<9rH֪("a#Cc̼+BX~?_yIL4,R0-:قVLJ-Y24TȢpͳr4{jmn8 hrC,aW)Oݽ[v-F I uZ ɌγGsy66?Ds@#*Lmh/O-M$Κ) d#ىnrd;X̥EB07ҰȷUUج Z!1vX |5mie/_wy>ǫ,MF{MBlBvUHS߹:crfߧ[>:$#87|HLն.QDGne1ӥI BZcWdkLĪL\l9RLR7FzFz8˒"i7 :Gd**a؆L/Lֻ-/B݉i} EE=Npo/pWBR|TD(* -2{=} q{cپK|g!' Po5O%y~Q{W;V!a3b(b=ohV>QT$aB ,Xj9}>쌬@~J86J29HMcVv(UUy Sh_Gq9H9x5,+;OFv^[4$o 4)OKL>:0 r*hM˵-Dz܃nag <wQ QuBN=]/y Ncw5V]v,|Jc`Rce^LsJҴxW%w ۽^%J/4:2~c+A4Wt] /vcWqQhz2} CRf-EaΪRjbPgnCwUK)n8gve33A EEr/Wy 9vͼ>apحWÃ!&GjDi9]t,[y{`39y{2(-LEƗOj]Y U`f"#w{ƻC u_]ɹ`_sJWF?GmҔ -;b.)aL\r Գb{T RϟW;ǥdEQ qbjzԳqɼr}^)>a>`"&5rwrؒLֹf@C@NʪʔEy|z91~8)8dq߽FN-E[ϹhaC~U"庠 mKg-2_ٽ v<@ħ#mzM(a fnǃc!BxYlϞ<ՇPt{5Z8_71YK2E Vog -М[-$B:azKN%i3Z$18䟿Op=O{}NN)u+< @֫l[l2cR\R!ۖcpzo%[ʗ+l++ݼ\Yuk[y6#< d.9+@'9 V*#>i__ɏt ȇx}'HC=8fS 9p`DU'% D% 7J0wV; ;C`S-aZ "ĞFΈab0mOiRɚmFo:ݮJ?*N| iH-}ew|sHaSkVW~0@yRQv]Z0fҵ?팩r&DSIS9ɳQ0[nw#W~|7Z7>[)kr)TPS;ݲa,iXfo4\(\yC}*GcU((ev333 m^;6Itj`MZpHrqgX ?}7XJl,w_y&h:LV ܆r>€]`I:C/? zսr7yp'yHIU6 I.5K?N(*,Dʫb ,~Hof}VR"@P_'mG "nj5Uq;Dp|zT5ه٥YghzѨKIK]W_R 7u@2ՐӏvzLW1@ۛmjD|E c77\H߼"=Ȇ[ڟp _er@-ASЀ䫷p })=Mgnx&m)z[؊iupj?aX*c _&L,f6(a8BZi䲛cI/ZŮcQC^ ]^&F fwgcrx}Bבܷ V,nRk̍pBw%[Ûn;ۆwJ Ɵw@c[Fue\^G, a DlcWij4Ye)jծ7n#jmvIXѶõm9I=tub +uL eݶE3k(}i oҀ`{ZtRzig S=8S@y0 ')}OBlUU7^l^PS J@%vq\[N%sD*DzSA'x/χ%9s-W(.uF|xۘ7xw.=}+ }e8>9*id3E7 4f4j#w&Z+Wl|xusZHSN!6(_Eё=ODƻifXwmQ!o̵֣ 4xD56dhk^+  ǚ~1A|"t{g)rCD(Hkۆ>5 jT$c*`Kob"ىǟ۾*&RiAˆ&)pYʭO?cܒǍe<6\?h"D{\ysI>3Ec_GCA?j)zݭgwQ/g"ChqDxNΉLӨkż+ZA3E$1Ϟ̐x#XM-*~62%n/꒰˲:2ג͉trRiwL%,n@u/?7;YN(9l.a%,xfzY/܋1GoK_/$؆=L,.q[b=7HC:{s HwRicO\{ OyTzY~:cN @u\OvHgE ~\]P3G⍭MO#?%-(fܮ oF?]>!36py&LdinmUwg 44s3pbkbnDhןQ"ͣfjRo6'D"Ux1bQ~  MZ"1X 5a2 id|1Qn"jS 'ពl<#N~)bf$Ei|/b+ W@RRL =]_0{Ǘ>]) ]@! p;3S.:|w|](b!o5-9k ;Ou[+9*LYFf'8hZ/[gTz/h}q3Z͛`| &? 4)Ф aQ_hUkUw]ӻko8ؼ[@͆3I.-niTvYҲ;`bk0wpퟩQ!4QdYxZ?D*(RP/f7hʓs5/?a#( |,tM0 sm }gŶUz^3 =}@/qt!T|yvDd{XiQNe7țۣ[,4ҾBsCW޶ pgiG+xA-kKkwT/*WnL^1JXNhP]"ܾQ Eɰ،38FHL6G\ixlW`! vߥWCESC<{OlkޱfD8-$rt!Lk=mD}paF|pY4Qyjo/rP7&%ag:;/㍪+'ޱ0w{+f?Rކ zszţx@٩|YfW#WU9QpԪo~`av1 5\]^B<[E4 Adc )}}p. bEúo$k|#/kn&[|ߠ{}DtS&QZzH}6)1$0 Н*QKF9.* #-a0\yXbnۂ0ѕ}?+Q6`P$fwyP#2P9!y};}[[7gF#<"V :?mGs?"/[%-L=Oz @Nr8yOV`v1;ez@.S=!hȴE>X`asscSvLiֽwpCscIrl̦S`)SO4fXv3]lؚMX0۝^nY$X{(Z:((?.~a|hYH0n cgqRYΤxOς;pdmJlgGDm)}Y$SzH3VԌu4cH[0#A+<E{CSFRY}r9f8RIԗ N̥;fx  @ҽߨWlU7v6 h921Ta`_}'m eI+To"rTᓩƻXܑm THM$|:W߾NE2x~i`.ªHi'4 lj_ݽl{ρUOY\{IoirBՍ+dsĴN(VVڕ;:dZ?dFw=@>HY}Q?qýH͛MzP+'*wƱ+c'}5.LEI$U\Up07 ʈqܶAVZ[i .:Xׯf.8אaˠ{9I=Yq] ;M 0q,W_iBurґ|S2w1[ZaYV`g}w$S;bg NMV 0AK+iyGSmP4oB8vinT:E!9+bך`iiz$Ы5?`m:O#iݏ!Zfav4ߗd#ȩ7G 'q[䫖o~I3*g6ZlF7^vDi҃AN9ɴ8bmeC>>\m#rƮ#=,dhH3#oi6@Bw%{~q)ҊثS!Pԡ,TrCː3heځRR,ȫHmwHaK{.6煉`$Ď֬}+דS*.rwtN Tyw.쎐Ң)a}es_2&m+|뾏Dm tEPT%ՂLwA6qi$m 5Eig1X_FbIxC4ˀ9ݳ:|ܽ||q>C` UvGIom]LAȐᡘ2^} *:|Mt}s;)Wݔ2apȻgٻ{.~gF־VѹsFovdchto!AнMtxՆcR'͛|i^7UgS,yt9DpM+`n]2TK(pLsk;Sɜ5J5印kZͦG%:FFm-njUC;1y{ nȴWq-SZ_1y}n Q pZ@e9g?*C Jq 4Cp F8ܯ9Yf~uzA0~(dv_' lOޥ{/aD72Gf ѸVS Ė( Fi̜Y e%pr~ W"qㆂ[!8^F'ƚϥ|F!W9ىMyo[K> MdNH=b5.E,Za^u6q:7t?1c*i}pKZbDP!< ~zDǀ5fwMdݫ+xC4`&iI֏y\ŷ.éC2wiy 8]h2O:+K>xڼFG0.푱—\LIokGkÍ ٫ˈvkF w־_Y7r~!J{ece.Rֽ 4 \zk{땼NJ-IƅȲiQiTՙ: bN.K(3_ki5ݣ!Ks>#N ¡A+( vNW.;>>L^,m$-*> ~UBR{.71“Ŷ ~6XR/jLZ'Ari|y/mm^q 4|RٴN8jUpT_:Jrpœ-`ڵ(;X#2Z^/Tp\_ssj]wz*tTmfmUyL|h;()-ڵs8@!#+pfpCoP >dž2| /ӻ-4HK_$YIIIk fjwdz@д.0NC.><\3?[t`"MV,¹ʷL \v`̛+s8t PTHYl(,s۶$(AW=dᕴl1IW+M7"uU@P˽kF>D[(ZWB0lP4jaX(˺wz7_pE>\~8X X=.зV0v '/- <6w?g 燇 x+OE9 H,wzV##Xܤ?8mu"oN>4"|U~ڢQ4_eZ%jL~y5G0 |R/PFiwk,e8RYY?ޠ!D0a'F9F"„L;՜bN Eu^YDEKUJ(+f*#>jLj64~3,j͘aӳargm4Hxlܠ)iLKYg^KB+vWfE뷎l7|Jl>jস:D$ALN VNnx*`ӈ6x4TLU;I4Ub~|۶R1E[Aj.룆Yoo_^F%y.uu^ SulZqAmC*3Ƶ6LөZL0!65'/1Q\ qDY㫉ʽٞϭz\ybvw |#&aL2M%_Ze[FKē)[Y=F4ä/6=9V{W}[4'|Lp,A@*k69i& K9䯣}Tn8cv\+p1pEfT |~[\Y ?.~$B皽ufcxѨ~ַ:[?={p{}^Au|f1l/=Ы Bf%39EB}!**SnYP\cb e;ĬD;jd^)%Ʌ(^j@Se{[&LlRHqK a{S[wզ9B EgtAtnQ7\(JaݓK!=g薩r %)c['\&ȰH$6i^N&nճp[wQ%"FxdtL ገo?š+ySÇ{h|IK8*? ]YضQ:H\$IBƻ"5=$7j.1`~Sց[x'&x)h@Du+V?hosIajG8e 4b @l+!;eH.5*sm.5H}'P.'5V=i@S"+yd YNW+"~S~$Mu-w?`-gY-qݞm3 ,K$VG pqtTPv2L*ڏʐX$ȁPt۴RfBR0nbdA l_I(K7I-v6.ˡ36WX-چFƛؙ1jxjƳuU?9c}fFex\Y,iEnreJH[ Wj1<.^*똪/Bk0ڮX7O)eBxls΍E67xLUp5SR>Fr1l7~s27~h׵?L>kc=mxmC*^_0֎kD{}=H NsG\qWn-#Jl咘n|#떩jmXh,rX&n8)zBog놏꿃uKdHG^7r펛&t'6q {g!c|Mʻkj|7~e{vGL.&UI.yzP;NoܹY_8"=)ݯsn}|/P]O$`u.h@E({V/%~vc^7{Wl#yk0| vOؠ*v?`C_e>z]Z޵oLP&͹ץqk[[I\`#<"1xQ=+w,]4$)0lx4{+-"6R֛F]EGo/40|ҪSYe^kD;K ,3=Q!ԘWӡ;[E|rg9RLo~%L5vd  `0o#^ê>o~ЪY& =#F[yku0j\L2ַssFswyI`[LWKc2qE* *^۸>TiO2Ǵ ~2N+] hRcҢ15RVǚPS^& "=Ѷu)LY0xݙHSI_lԀBPZR#:l 'I/`ر4Q\ 4k9pm5Wp<{1hCRgvS4 9+2Zwp/U*2+]ȠJ-Ә~ӖNcPe2,/~Ʌ !9ӄ44tHj7wsJV WU͈|~dJ`&h} "H?^Zl[kϑ`ݳD.Es8VU&½~ '<>4=oz[>;x*]D?E]4x_(IBC$e1o*gڜn KW!Tvup*>& n>>xsŭab!/L#T{ҝL'ߒ0q)M2Ms4"/uNzO&88J^{*yіS9<~bsܒ ԛfKeXz˽^TRYjC0/?*p!@ʓASp-dw{E%[~RU=~Jǂz(=ҥy0]N͝h.dIwIR!ig]jѶkI6ļ]o^62[Z6|6@W%=bF\OJlp)iwT 3$Q]06KɿYܫmj.# .3pMa[Ҝ.fhZ7`mo.};r7Nq9ogWS1>waVs\#B0M> Č9<xCpcן2~WlRrd9N$Ź;5Q*lǏ>C. 9:n}e'VrɚFٵ( E kLzGrMDJ(o(`R~b)%XT~͇$ٌN ֊_yOeR#e=mOL0%}FtgU:= 9!<Ɵ࿫F$oz S~ 0VQ^!uL>딑ie8U"E]MPT#b5i5ZC8a)%dfas´KJB0ܙ.d[sjQw=/ҝlJ.4*Wx]:O3&GkgV[Y5t< дBc~O9Y$(ǹާwO7>*ɐSM8/=%QsSf' rE. `!JVlu<=aǭSvlNi^JrimaR,eh8[a0oJ=S X]-gGi6nIWt #|_{Ku򧧿޷C-a@;|r7-89ʋ4^YIi"31lmYͧ~i!WsG,4Q(7[)Yb-X=.) 5b赖T6J4iԾiѢ8*WDs3)Y/2׋"F;DDUjV-wOLGi#%T[7?{'+&yژ6ћD/hJvlag"^F D/1̴Uey-74ի 6LtXyos=֊5̴1^ΙL_&­)2%f0&~')L,43\TFʝ{&\}90ppF]ͥ-GvvKw:1r1UI3g␍dajziKI dؽIz’uƠK*R@Or4Lb6,F]POpP ]c1{(˽AM )+=qōv+~Qs_KOv]EI܄w?OEōleF:חz[^FH]fsU=|fON<ыAьNKfnuo*ۏd[(!B3+z]8|15h)8r[rl#?Bͣ#a)5Xÿ`eRWN sK>.1L :^#+:yHF%H0<'8JY"Amc*'G2лWC%EҰ=V+ì[}4hwH蔫写XUScK\5!y^?\]rS1Y7/_SfEr6 BBZji#1̗k? =͏O;*zO3c|'S>E?5>IpaG #R 2?`|T> ѝr E qД "{NfvNJF4*7+a5YW<b._wtv`K`O?޹SBR$I0Jʼn HvjVSSk|ꄂ8~Uv@HiyetD.KK}c/g23Jť޵ETJľs;wh=J Ӽ\mߏ!GA 1t&ݮDudanXK(]AutNW(?l}6bCط$L*G|i1x=Hs}! *@(PBJ˅wT5QR xlE9[wHN;ZOSYRN.kE8G˨{ l"g8= <3XMNҡuRyi6Y6 " _5z@ ӡw>~U>~쁠b-G;0WSŮzS&<7奞)aR- u [6-@JXXmI67< @ )IݻPɾ\7'!y3Bgz$5`J6 _%9 D@?r ᐸq&B"`V&d ،I`0p\> %$l{,2x4) վ+H,e|U9U+W0&Ec]x6kzxKS%ټ55 ƷcRz EQ=c .uYVoAzyCc Gi^|t !*lyx{9b' "z3yUI7kߊgAԏDE (F'<|@E_6%2^g~Rw\3?vn!8'H _Ujߨ[1mo:irD37vS0tD:QW)d">$xF"={J!> /]reHNN#c!C&qQm0VYٚ {q٫2aٖ-f]TD㋈>4g 0von*df#p{-X1nΩ72s֭%!C wgm:ǕJ63D' 0F9YCoZ*>i ̸)yOٴ|urnѻ; /^$)V](y^;YEEb2 341 oE!0[闿QfZ~' bjA oֿX(PP;KqtBdw Em+&XM2J 7 MfZciYEÃqIc6bRn>^:¤I` Yq1\ TMx?`sG 95޹{fn8\0UU})Dž fmpGĨ8X.~qk : S4jY: YL[+ 1|=xmni q!0%ٕeɒH] qWb6˗JK&mcZY*=~4%IM hKt-1z-bC+ uO1|ٶxakadXioe:oNmbMGпzbsGUξq,2[I[w1&~jYD30u@?YwRZt= G:![ә‹ mٙ BCX6jyQtN^ɎX6&po+a"ݹ7jK/UlTzf{#S6d({~s}t{m.zRCiIrjx3*ڼB\8΃3)εFzƺNc`?\h#ùG 5EwYu'y~6_(}!ػ!Ak7 />C_-W'oU?xSFGMp>/^ylKKdNM`]THɚZoڧjnFgsMzԯ/H{p[/j<4x~Q{_ۊުCr^JB@Qti~X<%z1"Uip;P,n(Ă:]T| jOP%x |۫ەLjUz< Ͱ xa^0xdӦ!Ḭ> ޔ3U qHt+nVV927>8<h\tjH2Z+4Ag?N_꺘tfJqx3-.l.<'G C _+^m`޵t`|m?pJ%M$H`^OҔ%;uzR(&ߎN酓>i94ȻD8!4@rבo Iu%{jțHKu07~ "pސXzŔSfWE\e~TQp)8si' &O0@ j&_IV9h͓*:L_ CŽq__4ߖ]4{ſﮰP5o>@/xbwBG"LM"rM qšz+?6 b _u uȣo]\S\ͯh;;==v'v33$|t>ȭ\ONm 鏒efݺ2@'CfR #CX"߿o\Ry2kNztlRHCJW СX 717A=;La2C|m0qĎF9CC.MDfj?C&N WZV S~MC'Szc^QlEz+³aV;[TXyi}ȹ/45A ѩ0qWTٝ"aK׵ 5| )> ,u -,Ї~ph;_Pί{%$-noD!6>ps%fFЏ-Ōi{%;8@*XJ)*>++=3%r~i %xKyAȜr-X2bS^-DsYݹS\M '$ė&|᱉dO  AwIxq.e"WQ_;44-{xWFVnfq Gy^Qg bKb7٭++33.d  Ew+S25BE mFs*JG,0{bLS?U!(uS ]<Z)tΛNNhub=ޒvM7;L3qێ:s!T@j?c gտdhdIVת)wy!e!nDW39 Sd7+GI@ⅼM^k e@|<_ݖ) P/)LI Ǡu]l 0}N5k?^8黄Z}etlVzX#*G[~HYrkwGbKcIUH|P{8GQJ"yYjze Y{s5}sy{mVa9+TɽųNBAQ,GE<9bXhq02­̑oC SXcfNy%hx.iRʧ&7A.&GUa@+Nɽ:C읏Ya\Y,#R1 .vW>9Jf}y)1ԔmBkvb RKrA}jʗ*m7܂=Hsj*(8hD'hYb R;g fGDxբ"zjսYbxOx쥩Q0Z^ Yr&>~Gw+U1  ~cJp0P4 Sb"QKl#9"a FϱiNڊʩH W8v*cJlNRLS'L4p,yJIQ{~N]E0bҎ7]9Ի27%M=jj4O钚;3Z[^|`X)v\x7@(і)0|GT ږ+aqr{-o;nrЀtSVN9ãhn% #T+S!"ެ??WCK /|+U;Hh0=?!IIx_vƢ(y 6 0֨@K-Ma0\~;r;qdymWԺ{]G蟥F0y] Ѿ, jR'Vz21sM@d${2T_Iwb~{Y&spՕ[ ,&aaӝ,4vINx5&RyWn1`Q?&V③ST׋R?mgXqucok淏,Mn+vUeI Oo Y~Z]J yf DճFC&.i`=ݡM|/ F߬d}qҤcz7řC#' Ch۴k KԸ_SvU4l yi! gM7;?Y--FV[ED׬˼-y VƟbp"H/~ͤ&{do 8W?2XҗjHc"g/] ܖ\",p9=2wJ?[Z[Eܻ A6UT ?GZtWCtHa. I,z sRȕR}[&"3322 yꈑ/9qSo^ pwg߷BP\@.W ;B QC^7yK6zHK#.$k$# y`"mjط łzŲ>%Щ|ɢuבnL/CpL!Àwv gjϣy{ےf)0b&ߐЦPT2y$!&ջTeT Db(6GpK_Vx ge9#jdʮmY. )o|̟l:CǦDt|^V=0;s mþKɭO^d>hzN7yӆj D Q ^= ιbK-G7׃֪Րa&t)E 7z x4f1c"˱Z Bz]ӝͬ,Gc[3Z! @@vVE hXtQ4`"sP)IE_a]3|5+ >=fgde8C|=8%{C ,bΩR1+ШH'Ecwv< wlG MJmƶ!&2Ǐ@+T5fAf"la< NBΝn^+ \?:+վ7I>&W]x!UGeޣA`1)M4eArrM k@G $S\&hOjo+է ms67;$vh{d\6],$OM!:TCJ5CqG5nޮ1O]$+3g$|UC䓭WR:)%R)є4:GT*NVȸ珹/''=V@b7&f %p?$=K|f*;b5G4I`7T4ۅ{u N CQC]k}U=D3n+F[-xF~7LM |fU#Yg3_ 4R˰AIvɏgR>|P05-m@N!6R٨b5g)/0ڄ9;2JU0 U=Si{qT  .VwM.]u>=R+/$|Je\6Eƿad阱|2s5 >@AtVNv.f7NBK,Aj~AZB? ,J}\=-7Uvu.&f"iG+89D2$(^wV/rsB#Ok}z|"CؘOO̒%B = 'zᄊڝog=m=P٨w]pOH *o<uXc^F,ɽ~`j`}>szv|W_9^*yCp X04v`T {WOO9h1b)c\k@ yNw߯ gW%CZ@M dZwAr94ê#e_|Bg?Nd7%˻-ϞiĿ$" zP`4w$rC?vd{Y1%W.0./ vX[A)EΨ%49}bYCU> Uu*PE8C=;hzlN'qyR.}JRBrw|RG?U1{X"I-fϽNLF;!LVgz\Y-Aס@/!(% 1Q+*֜}4L.ƶfqm4.t }=FM頰~\ ÿt}W0\=E#)dIvrO7'q`M#y6uxWp յ^Uz//+]:OuyM1v5)Tīe]9" a 8NLr]vݥ@\ni֎s_܏H_*.V!QyIXge)C. ׹wf)?=t)9bzwRU}i*2m'/'8ԏdVr@qFR> Ll } @_ۃfےH*AhUrNY'As3̟={3Βަ"cs+z^@ C^x>쐔pF] [&YIB靗APUIfd]mv]QҾ@r`cPϺœBϚ@ԢcՋru]?V^.|K4%6xG(l{2v 2rm܋7ZV_KPg <.kG pef)$)*Y<\8}e5>\_>yoGXҧ}|Uj.{'qco~ 8J)Zl/9vi냱akl)dS5<'0MC➓Ջ)>š<]K9S$Ҽ}.F6&YVpH5؛OOW]fǷ-AE:ܶ܀mo߷n\g t[]MIz6笃1:mHp;1\Tr$@nZwY)imRY屡1:_a1zh&~Wηkӿ;a`CB܄n.]䁌?;eISvNwcVQV017{ ȩêTpgl3$}7hJ#n.}1pH7'C'@Y}ؼPz3׿~18kl=ANN`&vI7DfK\ԟ}.jy͸7\;xu!9jNִ(Y>4798ڡ!0\*VK9E`n.``  yj#q bC. V ϲyhŝ-ܫ6[ڪr5uL<<`G-H[[>v 螱&J1Y{=g2.N#rƾ}{s4ނGJh$}.fE^<LJIН|4" /I8|)qP֓$U܄kt!C~(1fwaLf ξ3vgG$Gbmԉ=5ᕟIMɍ+*09 g=2dYGH4Do+jdf(d.yZV<Dž9imq sߔIu2]Oy0+r waI2 *PNѯ`7)4EjelI7JיdҌ/f)|O?9ZWôR%QMD#i]t9%HW6u֝b,8Z^b1×(2Gkn8@k (&U[(1 (iA#$ji%PWʶLDх }5h5Hn"yG2?緐,</P] P4o wv_,FC?T mEWJ40'(M37k41TPnn: SdLh(YO+! $|ZeA%^J /[ѐ=f?7y[I K޼c5ы0W:-P&{EhԔ&He\'X^LaDPS|eբy܎pwNP@wԁDt;}woE&k`^"$rz &Im(2GU;Ѱy*~ mr$ +`%sR myR:.THzpՁyOPO?QX,dTs|$sjLg+] ˎŅ4cT%<#M8 +@t+E0l@!b@b C|Ӿa"n 'ehDE TׇA %qycG4=շ$=Q[Nyubt,w1mpiBS34|rm rd/ ٪Jh%ؠHpQLoWY)J*%6R02F%<ϰ"6dC}x"cBCy3@l>{up;r a@*g+ aa4ڋȼjQaa핔)4lpbYή0v\% ?mVh3StmYH>7RSKEW8x{,{l* 2R*${Zv(bY!% /^0t2T@KsL0̷tq˩f(>Y*Ϣ0C#-wF|EƎ< }~EE8#?BVF!Ѓ^D(as{ S.MȤkNj!Svek PCߎ>}̹#ʰJKf^rO7E<k$5T4(}˅Dכ6I:SDy /t\]ϳ{>Mж@hi rTn^8CsyXO,y= δB sP wrӍQi44J RTD*>9r=Xg\e;u<,^}`YhJ{L~1 :b{n'+?Xd;jocs$_Hmf`F=@D@H(MT4* ~Oh7Z* qL2-J(܊dU{I7{SRa9w2I@m)d~4 ]&iuJs.Α۹qN9SX^'#TҋyBUv9 qn D ^K3ˆ $e"_%Xǖy~`חGMk/m]@cu*\ D'/vۋ F+'7^M-~Y(rU]8t?2bto#v>(ȃW(.*b\C]x y}&p ab33"b;YKQ߮{n5"FO鿾FW_#.tqh )zĉvUg :220$HD0z÷RfjUIxI.t kpu,-%-/Tס*s 8d #h)j 0&H4xU⪂QI d>k&-po矫%3w߀N& z i~}y"bmB&ʕ`'FuN2wDOn}pw-~j{, SQ/-P#P6pBOݎfQB*Jw5kg[w'zu=`rin'H3L ݕ,.?n~|1; R c!'q>.4L=GSu~g=g_L()?d @f|҅'d hߍL31Ss*+}ϿE0 @@>mHiOgH@;xG-#\sͽ /+T&z!>Gr/cϴP; A7irl/n_cV];s T կw{dΓڝw*8OId#Ejs'/SN> i9gS2ƛX:b(jjVsRkթh bPݚ>G>eCJij_ã"y=Z®0\1?j8T.kD+;T M6k@U%c7νb[mMU+//{yF#.]Mo1V{]uFGX(Klfr =']}lM""ӑ6rCD3Z4?  m6׷:Mr$螮vA\9|45-G䵴B '`FǸ]FrM4¡B+1;R2ͶӐ)B^ѓpLAk"`/s5izjx%%kʽ"GfD[3}Z@zot]GC4\}vAp we{mϻ.5|}WQ$V +96 9V'M4yAQ䫦x1Fzp_ (TEĒS}L JGgs(ǞN*0wV0WLV;]ra,u73^BD,[ȿIXR"#P%p{whv%8o3X|}u1aə1KszηRx3L΄b[%w;5-EKA-?uK*Y4$5{Ԡe O :o}(qT,nnP ` RuZjuApw8~3z;3VoCсr(c ޴O- 9DoCrK`<0R@6Q'0١f.qSJUc|5,q^+1kt`Hg4#a2AӰ=)>r]ՏLAY}Ebԝr nG?vLe6#s|Ϸ\A-ֈ|hfŇÄ7vP*,AcxTa?(na­}0vנ| @ T|-=aN#g:23,p_ôCC\+ߑ_ZvM/16+'gR1~QEq-xSq Qb"QrD}֙Vޢ3Q5_юSc6 hi4䴐(_ڈ az͌$-w)N:ș:xf TcN4yL6Ѯ$@J|YAuRW |r>MEG@9FᦞeC1w=G=pE[TP?R%7f򭦷:E^'9kgpxN{9rӤ8dht t X+]K~\R%QhK5X鸎o\4Ō" -K*OS;[图e.#8s&֜+1}HZ'Ԭ;09wxn#9R4aȷ6H/_H;z"ҁзwljCu_+qz}N +!GGں;Gh >_I3g)^, ݐO(%njNhnj-f$\" z|nE0Y2gMk՟T)4֌wL:UۇlϋNo^`Pie]/bϕܹsjL$M\ѓE0gtt^%h]4{7#w ZPL?7@@%̠X\Pwwv%t^te'0g6_ ))&ZGpf#ѡ¡G;A15$H#ZN(&'?Tr+x<8= RZyrna dntGN(<'O(rFw),DkX++ŀc:+A 4:RaDo Xd:S8U*:V 2%ߧo%X'60sa#%mdYi:Zkmв<Ͱo.:rL7bzlJ]#דVt0mGj ^2E## }=:˳>yJt6S/&XOB1r>kJ`楝R@ ./k%L(ʺA=Wyw7?gRH jZI)۶y? *i œh±}˞Pl kԵ Q6rd'xJ7~$YQprj#.0z*-jGBwR37)Mt}V`w Qg53ni!AnQy l.6lܠp,q4{߆X"HDDI{HGQnX"T? vN^{RpsK+}_+s|:5iAsWͰǀ'GZKJ#ڂFݣc󴽏%jA߮s*nSxiQ.vE۬یB6P!uWǎ.F+T_WT?Ro6?!Ozǐs1B7YވzcktJ}LK,"6CE09kiʚjɍdHoRKE1<18@k8ϊ%e"M g8Ó g,";}sX4aN MzXy$V_5Za uxS?>h;#)*ffv#,3a>Kt=[}c9*V( S5+:,i/Lq$lLNgM rJQ;'q5Cs`0C=(7 Ah9SﯢUvy҈7;wTBѲnڄ[7K ̯)]+#0{ xG-Uh[:wh_ #I3Yە\?N;2ak5}[Y|ϦO'+~8`kR*u- qXqlů_A<gvMSV/Ƿ]U'cRb2) bߠ'W Um9ٙ RLDHD֧֘P _w|fOza9V/k˓_qS.0p&5t(ÒمzkK@E!o̓ŅV5uo!3U"P5w{{`1HyNoB,_qc coXYBauuhDu[Djtoe[׼&xq-?[0~7ɇ|.9zʸ&w^> %^=ѣ;g\DHx;q R0q7cNWռ+Ga~g"U4i Ҭ6oL^شĠ;uڱ| &$ 'qgmvv Q>x=7 8'15xu0W8!8g}L;L_ԚW]굈z, ^??EB x=%'ͪ5:{l 2ؚMwƞ=%bM;ipr-}N ~NR>~&zx 3Ӷl>{wNzgT΋u8kW|=Ϸx3_ =~- >R3~,N/a^ϙ:bfĹ?--wYQf?2'lL}fvE:D.]ɩģ>I6!vQOgd]cC><':cUR=u&֧< Qk-Ⱦ/O`Na7 \Yl@_OˉЖ^12t`Rlx%Wrj ,~F<[{1胒_]yM7!צǧYƯ7q tNXF枻oh}QiULo\wθs} ϝ1MME(X%l1Tc|YԮוU 5UVbFںcҕ=v_9R. ;]kפy7ګ 8ʌF y.)/=VpkWd#èͭ 5xQZ V滳3Qk&IB ʋpIy /^flׅI| z!*<]iC7/pIKF"XT%y̜L?LmJiZP9/K*j?gdI:Y)"T[2NӬ*F$ZE&5S]9ktO8c7Y TYK=,5!AȦEk@I %־)i^|NTp"}KSQR'$OZiq(]#7%.6=ZomQaĻ)#zslb;4J-jaܪ%\v)%39 r(OŶHHñǻ:/Til] ^V<)A:T\f.h.%wpA)5Obwy2c:e :#aݭzɗJ)Epd~:oK`M:~"c'?V#:LPZE@gy;?~k > # ^:dZsF>8wfXdx@(C[De|B*y4[QVrhqAdW^M@B IzNL/ G*زr"Eq?|sL97 %*hNš9[6İM CW aKꭇHYXe{ i ZvdyTDR;XcJJP&څ:v_TmkW0II?ҐZ|L\.2cd?umg0gbZ6{3`g{-܆ܱ/P |.YerzJZq{nOdzCUXy$HNutVG7Wq- ! p 444VK 9] h_2SAYr`^|6X"R lm]EL>"ABoм}aU =W-K=G!|Cnlr7HuViEa gJHNF-gZ(HY24ԡo $mvhPc[zw5"")5F#Ui7]AKV}AɶN]B}|Ib-iiDTtVF+hMZTC FGנH5s@iG W-(3L[(_<^IdishݟYW=5K*l;Aw"P9n׿o]uLu3!r BM$ەZcI)3~t Ex2 уX|n]?ȳ9DE&R'}`JV66 Ъќ[=r~r\}A0XZSA}ϗˆYj1~-4Ukڹa6e³2Z^gj4Wrh8ou8 }893{+s3~=z4{7w6.{ao9cxz4(CYv%zjj *+DY;06>kr|7k nbt>홬TN̟Rk4oԮx긦YQ@Nkj9hrTXoAhj'3?\?ЖC}l|KA'0WjiŻSp{O5t}ut/x<7ޏ&ڤx"S▦ b->*ZT=J([촮eHPgbUβ[ޗ'riST*x4°5 ܪ9v^d+j;H`zVTٵT+6J_'+\_/o޼2IEJ':/ ]KG~>:- |ڳianϔ%⽂GR +PMI_H$Q=-Zi~3p?JM7IX(|Vqo_2]xp~pNUul\*uԁͩfu5LksiΚK2#-v\6?pLѬPl Ot5 O0.pAj^-ގMAxD~,0&T_+[9lt($Ily{,EznNwDeVV%DY{?m֨XKdҍ,)AKJ4~2vD&j4ꭤ4YU뀕x nJč 慷yO"yyce*vMͲRs<[~lhaaN>) hl 2UUEu>rftdCiŞGu,aOI?ft N3j|JT11 Oׅ &%kGGf] 4OE0f?cPW󢠾 ޘj o5Ze)lK錗-Ӧ^"ަ@B?sJxH.uI@y;0,r'7(uB/L!cOQ[3cnm |CKjoc:R"rEA˄-Q, h3C7T(L $P_+k[ PkK^ձr7hƻw*(7./AoqAOp N+i)JNJQq# ;HIw5JC)y<ܵY\$i:C6”^iKIo;e34h}sBgQ[vzjK=&InJT6^{Ŷ!IfH/ixυrWvW1 `SR 2G 3x͸X"`89۝Cô0cdﳥp /u/~'^#"*[ T*cjZrRyNʭJlmn zm}jj&QgKzU՛hI[7Ưs3M숰#5X e㼠nuNv F=uK͡+$GO~wGK #,c>%96RQ;wu_Truns-}ScE-tҫyNE1{%i,ч@:h=K;^O= l.`oc9m=K"$.GH8vVp廨F?YSM `,`` \3мS( 2 ~ [f;LqA4-Ԡ!gj{(V`>EFm\i'wY# 5',p?)7U˲zƠ7,'/0%XN7"w_L1+ЫUAQŸ ^s ._yG<=(!}7Cjܲ}|iNdNlL-V?G;R0?P&?s*Cp3ܡ&YfL\{E_QfQo"D`lwcZQ (=+zaŗxdixw0d >E=.ؑY[Oi^-:䐧jkQyJRjP=Kxk,ՠ\2;P֕7eGh\- 4.8;^] 6Zilcf]a~ȷ1(M_K#7iY(]_ʂ/0μh6>%M08gi>g C‰Qszg "j!Np2vCix~~l'garaf<`|u"0EAf[M5FQh"c Jl[SYB>k/}8qD5o .ALo<Q!i)8.QTKܓ 9S V:ת;>"S-UAv.왅MFñĽ\ݪèiVcz:T4 CfvO͞ y>~`REM D#b_ܶZY͛JHʍ{ ЬjLUcyh,RX/V<8"( D=JK["b"@eYBL-|CK_qiG(/A%V@:&gdB$]ǬhҊA Q}AhtAQNM瀘Y y~xzo q- ŬhtX' х$/5WFp +VSU\$)k/Y)vjSE]LYWHJTyҀmgDtDɽZ!rT "gT*ZKy +8TMwu&W'*6 ۈ[>\IX~@[dıÔ}1zУH|h'm^8; ܶ4"SciW4n='c9fxl!4|$!dh,]p+&KccPt2)v]nY!.nSӯ(|׏FD=ToG- MxmT}G؝8Bԫ5ǿe'H4XKᯎqgzgRI;?,rg,5 EW hVd/u';SFCu>|[E_`Nʿ|],|1),t&t16 xyGo\;[0[xq"1ϵ $R˃+/3'Sif~,HeM~>'/YlW#btBQDS4z J;Q IW{(`|dmksE7RKޝEmOl3m`I|ĭm5TFitc_[-Vx۾:j%DBޚ'ɤ,b< >R3,&8y½??ydVwb 8x@[!r?&D-jxk}OtquU7/N[uC=jOT'h>˙oXu(iLyMo`:gqh"(pv"^aBĖ|2D;aDB "eR ?-Qt"6( W^eIhFj ?J~枑gUw-.[󮬕s WV)&Y6^8$"7TPBHA51XÔd<D=1=ʿaJ^_=xahK;g틛!vEh$qJ.Z?"13X*4bRޮ2{х<~y'iFͷyOHKO"١+6U؀V8mW)ݫ AA[9[:Kξ">TNS桏; ڒBkR1W RRS = )5w[,msp٫ XGbe܌{ a_ob<-i_x8&2h1Rvn“~(1ꥌ'[clX-;Bַ4d&k'y7DHZCn m5 )#?wKOt ?U =n}{:T=pq:ntFj߰8wF2uxh/K2cgșyqoẌmT^3"ǂsf.`V:Nt ( "jEKJ \ĤID-P:zkhBCVO) p9e|%-i$5?^ۮq]_6K]Wnϴuin<-W l%<8P'u~&0P^pc[Oz!d #]P@/3ߤRm֑vm؆t-D˃o_YՁ,LF?fDJ5S3%Z;e1 'W}La3}sl/-0P7mlG|pڧs.@3!Q%Ҩ $vgF!ɠr냆[B׶DhqCDFL iuh4[O4[Iԑ_8[hlyVIO_'w j4TM*hl> τ >ӢZ(*;b{lIi4zԒXa ۥ6 nsFɅ+no!vt?TWcR{u1M;k)%śd+%%ʮ )~(6ź/$Y?m/im+CJ~KSUwl'7/(*&.!)%-#+'Vo4W0[JXթ%ڀ~<4CrO }Tw!_?(HTEMò?cv5wt"W)[XÒCPq8G G4:bs<)K2BRk:_^NېGmv( SCmlFUW 'Id Fg0Yl׸BQQKyWPNo0 C08Bc8 !A1 )j;.`pv?On-QU ,[EqfyQoVqPi^VI-8!A1 )a9^%YQ50-q=?8I(i~yYx:_jaZz~FqEYM8!<ʖu~ Qz"f@( GZ F#8xnQY^Uݴ]?ER˺y #($Eox:_ (ɊiَAIEYM8˺@FP 'HfXDIVTM7Lv\(N,/ʪnڮi^n8ΗnQfyQVuv0NτeBS2$@2J3,d9\_ %R\T5Z`4 #($eXmv( @6vN.,O *`./LPNo0 C08Bc8!1)9%5-=#3+;'7/Z ڶ];u59%5-=#3+;'7/4,+ohl #XKk[{G3YȋXVui℃&)fxx50-q=?8I(i~'&q!ռ~B0b8ARfʰ/nQY^Uݴ]?Ӽ`phxAdEtôl $ae|ʊiَ@0,/ʪnڮ P~S󁆦-J*YkaZz~FqfyQVuv0N"L(ByY8/`pv?O˕a9^%YQ50-q=?8I(i~yY7I (ɊiَAIEYM8˺rU Ӳ0,/ʪnڮ P~S"mZ.kaZz~FqfyQVuv0N"L(ByY8/`pv?O˕a9^%YQ50-q=?8I(i~yY7I (ɊiَAIEYM8˺rU Ӳ0,/ʪnڮ P~SizG_IEYM8˺@FP 'HfXDIVTM7Lv\(N,/ʪnڮi^n8ΗnQfyQVuv0Nτeݬf]0D t0L;_Ld}@wL7Lw2>b UMLD1U BYN,^L;fLW *0.:Ƥ9{LF ǘ 22`" l#d^РQ|0FK 2' 'Q K$1`7ƸZh,>RdⶭNjn8sib4fԌ/b}3M g΀ԙ/@ e\0a p>D?C 7p%(x+׷Bic?9 "L(B*mAiM)@ PƅTXDPƅTXכDPƅTXכDPƅTXכDPƅTXכDPƕ6߇?.LQ6XfCq#FsNgtBzXvjʁ DZ7ϨɂX3\iv}+\[%*.2\v6ymlH4%A5d^S H2ςr FO&KF3E0_VA^szTIS ]:Mܓi> vrmyI34|rTs4 c+k&3y|5}鳉Jz;ʸJz{&q!6NMDPƅTX[DPƅTX[Ty N˜PEd x!„2.ƺ „2.ƺ „2.ƺ „2.ƺ „2.ƺ^xA~Poz7 +3l2Lln-ʮ:՛~n Vwl2b`BU %„*m ވ0J Œ z)aBRi"7~x_!_//^~xY\a zKƺ*!fΊdEt,vBُ>;SeEt<|aBRic]oaBTڴ#ʸJzcʸJz*ҦDPƥ@ e\Hu9@ e\HM0 0 J0ˊYLU $0.+fM0㲢jYL(㲢ja{qYQ5ݸ0 #>L Cd6 ɀgǯW$k4锰ADt׽݆#8ޗ*e5+z2UOC*m[`VR)e-NF5P^4( )-yuwFg0#)?ZLyY^G۵V`S QP ig ԏ*\='X <0VVeٕ*!"X=vH.LBg~`.o<~?Fdm=f Imé+|Z?O֠,(N YzzjMMO)e HJZ}ASOw3ᦱ&چ.Ҧ"„2.@T]/7xJM;r%MO؎P2.ƺ :tvd,vƅTڴ{tRi[a/s\;"L(B*m "L(Ҵ#ʸJ۽m7s'ƺи aBRic]oaBRic]o aBRic]oaBRic]oaBRic]oaBYƺ^r&o5gC{{}6ȲLS<!X$ x!SetX˨U/hFn% hJYqyAX@Fd^`^o]IAvXOrRna&6&q!66&q!6\3!WCmmb:.*(Nn=" ;hY У.3"wZB[؃5mQc8aLy.- Qѐ/P"u3m 61usf1ӳ V #l!'PgBޮdtx o+%|sB#Yv+-QUk~@NtBYfH0ˊy6& F1e\(m"LRic]/5%|ҹDD@Q lH k0~bzk.!)"L(B*ml7]oIPƅT „2.7խo^6&q!n e\Hu@ e\Hu=ʸJ9;P_ʸJ "L(B*m"|>M!RicoSt1Dq!wc+yOcxes_=mp W)_&slug5{#زۇz3͆G^,=`U0|9Z[feC3&!С%e5omC2&j1-a+L[JeNӔKoeeek,"9} 朋5@ QVJ%23GĒ?Q5]1Ϙ᷂lcbRCKUjeZ-{D 7LAAA   qqA1 "Q\kUx AR4r p[m6e?b?Xq⴯F7p?.mRAߜ۩"ZgS OB)= Ѷ- n"KW͚ ʸJ7C 4t2;¥Fz3Ub L]e,\Nɦ0EW3G'gg-J n̴щ2 zUi.yS^ݧ W2 k+[M=>P mdcۼ"@FAE 3piqD#oq Տ#]V 6ꙆuLs^!^i:64 EiiPBr+b'c_U?SAn../RC!%=f!lGWM j<)+=pjj-\)A=@ #([b~庇'"HfT 'Ⱦ°]>_0DPƅTXכDPƅTXכDPƅTXכDPƅTX[DPƅ&q!'@ e\Hu!@ e\HFQ<0 w`1c"L(B*m "L(B*m"L(B*m"L(B*mM"L T0a(K D$do;0o lg^a "&!}hſz} b8sBa[Xxx{$ n&wC1 )9!-sL/!(5Duwcdb_g:r٩9D}v7N6kޗ@A]gbGS@,HU 8M7KheBM2r !p௿~zDTlArC\H#NĽNHDFNye` AS=4&fV6UjD$h3̂M 1=?u$U rFeE-AUyQ)8|͏o\LGW(*t>YLk^ٲm bܣA{ߥ; cT?;Ο߷TScKⰞwM?oێ$(qο;ZhҢ :Z+ =n wk*cQgrcjゾYM9FSiَNN $i.У88@wrݶ3ki;vyCSR3] lb$㈉'K!&fPÀ,zqR;6&q!6f&q!U=0 0 0 0 0 Ym"LNpxLz7r+zc%W]'ʔ60 O*j U&9L؅>UF{dG],dt:A3ъS+fyt"+8]͜"TLT,FG$9C6/9HOthemes/twentytwentyfour/assets/fonts/cardo/LICENSE.txt000064400000010424147176754540017125 0ustar00Copyright (c) 2002-2011, David J. Perry (hospes02@scholarsfonts.net) This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL ----------------------------------------------------------- SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ----------------------------------------------------------- PREAMBLE The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others. The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives. DEFINITIONS "Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation. "Reserved Font Name" refers to any names specified as such after the copyright statement(s). "Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s). "Modified Version" refers to any derivative made by adding to, deleting, or substituting -- in part or in whole -- any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment. "Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software. PERMISSION & CONDITIONS Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions: 1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself. 2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user. 3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users. 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission. 5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software. TERMINATION This license becomes null and void if any of the above conditions are not met. DISCLAIMER THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. themes/twentytwentyfour/assets/fonts/cardo/cardo_italic_400.woff2000064400000315340147176754540021254 0ustar00wOF2 `j` L 6$ - [;9~2 Pc<)/ F1kxAJې 6c/N&ԓ9NBmR IBsݝD,܅{Acj/i9 4lJqTiR8"wß.6XQe60 Są++­}]ʛLos)"A̩;kis4@T *gjp:3fOsF$Yc,yYHv?_NWovzC*=R&ɳUEBJSKG룈rj=enE~ *$3 VWݿ.mJ**~KڞK cE|`1+}Z:_؅>аM#J7 I$E:%6I8CNv\&ܔ ) ]2!F\![,Ti]RFz4x6~ AՂQa/>Ekq2QYPKÓ˘N'`'n-",_žw];m\.OPz @K}܊>UgrQ^@J%8'$bM!dI[B <(ʫnR3Q3|7ْ5,U/B+zm;rdNlk $ar, I&ll4taC٢sv y;$6+3C,HZ2-uc6%Go/]#?\̙op `1F ը[N7`^xz#؈Atb9BͲ/FeVӃaJH ~ YQT llpߌ#hhڷ6Jjl?t{.=tg/*g΍ |@'2EIdUԹPy 4b#8Indw'͋c}k~#//Zݽ7=ߧx _i9]}"6LG D%z'h^yӻ7Ն Pw "$"ӯH6AatcgueRIC@UH2o[U!~a,L\6gT%A5r(FXJЂ(a? 0xSE  p",:_XQ&RTIE*k l4q߆mm(:` CAr hF3(DMGBGƃcSŋ^7 -ަR)*@oP|' È%pb 'pRAcQ)ZR|RZH'* !gRWl *xG%KȮ0ry8 '"ȁr]9Nny8*_WVm/E( }a| |}7E["mѡO&/±b2HZf)Qp(A ]N4PHH$q.&䆐P#KHK$g{0D!|P$Սlih}6f0]&t4(3yJskMz[_ $ǠHC08B\h %jmM9s9X[.:+5]![A7>,vȁmn V*Έ]ŁxHJ9][#;Dž/K{9B3 9 UxD2XkbfѫM'Ǩ 1Ɏz5&4Zjd x4սԥsQzn =eFPe>Wk}e=?ƱwK :.˱Χ?:=O0p'}pٹOn p@08J3bWqڿ@?SE{yCf '"c'7f\0 Ts}PȊODH؇iHq)h>ۂ %!W愩aOJ٣Ȗ(<04ݯwa})&Cu7^v䔙sU{vƥIQtt/x7`G(ר1&L io{*m Re `g<0'ܘk"ʞ˹'0I!@DDt TO.wEDx1~8M fw g otA:^4}=X7}Aʝ{ss'c&B"o/3P,]˓{޳| _nY5HXYv\vWt#=guˊ&~I7S p}gĭ 쥩ЏAxnĀ7CdԌv r_.s- 'QBT4MOf|qNswl1vf?=0V8%/Mc2`>DE FSF5h]]M jl%UߵoF;RhFDQ\eU3|, W{ŗ]q@6wȢ=c0c:VcdX/rpg:[\UA*;tG%5HB>_3r?ؿU_>hҥYq-˺B*ل͇1_N?I.W ߼ Ƿיk˝)ehsPb 1La [ Ԡ"lᄯPcM!'~-)b=W~A ?k+ҁq 2t ˤnU*YmHۤmcBZ/O׍icf:33]}It{``ONV{Q>\*]U#=xGL:-Ogm8JCﳴw{_k-<b`-$`܇ :]_Iݧ "3v}}8>.쀾v`/׼wm:頝JȅDDE8a?a A-4^UV'}絥kk5,=:eؠ.ͪU)R$"suqvtr2CD<.p{ݮMmU+j]dcxĞ-C7-4R@.C#Z>e%i DԬ")KHJ)/!7k,3Z<]2Fqs-ނyV؟~yNzrDDI?Y1M?m$RMQB1)\1ۇ>\YqM30yޭKMMXQpJIU=+ (-H^Jza\L3/~nޠ4dL4q:Pf+_tizOUTʔ+PB ER;QĎCGz^"0?Y<}*/W.*o]|KFs~ܥ'2jպoN@qPCQA:sç Þ6-ɃXL7JƉG`pX2)8D {oP:4}ͅ(tT ^;Bjꩰ)!~Ăԙ)Dڵ8=qj$&= *'u9C∊*0 y=3:u&dc`GH`HjVQN]QS*xBᛀ6 ыY#$Tq'ZQ֩p97>W oDaR/5Og RWD*[fޛm=ؐ8Zn:r9A&aƖ ):Lytʽ D dHUQ:;K$%+5hyKݲ.Bzc2JBFwɉ (8̽R?OkĎh*TP2vv%.n0#˨ҫfאp`NM HmLa(*ԟ¯A^[SY WHZh&`AاG.Gz J˺(o?XsZ' &_)(o 16/SMz/j/Gp~pU5́+kAB`,+9IE q?Iz3^ I_2bY-=ɱHjj8VYműl1hNm!ImO @m 7^\QԎzl %8 oħ$WWW.tx4 4M_g?tC~>K[Y+˒%m3ĉOy/,LkzTb:1ʞCj%46Ky=d/!ۻ̍2,N Z #ɲ$H$ Fe"!$RVK9qǐ Vژt_7ȢS\Xnϯf|;sD;; CVR.> NU[j92J[{C6e<{^C/-4ֱ^GYBA,IyRE @STO 61˵YO0S=8Tp '(Su0]T N vY:H Fן7՞075w\:?IR{7A"či*BQQBIzlD2L?!(?#I&ڴpmꚮa"4@ЂHP BВ*'5r&*DA86*x'$9oFܘ5!@DYW&&Y5$"I}H\ !H}w(C -#P{t)KW{ZJӧ/ qfE0z9ӶZ5Xu֓R][uoXozwbjE1V wɯ˶~ibk'!tޱ]ko&=S#uF5 5ml 4m3cV2.c@`,.> R9LvdžFU1su>GSoZ)7^1EH1Z"Ѡң %e%9/]ͼ,rg (+f & ~ҟWq7cyR<"،?J%@k Yʗkg4️Gy_C!_:ؔϠae|jLҋ~k \|j}~&7 VxC b5\ң.y@ѶVC"<29*w+EE,(ZerLfNZ&D#P2LM53,|>'TDq_>Q&>OQo&>u={6 >.tWjJI C̩!j~LF k9HSL\ g[f%$QrA(%N"nL֘]|HR%XR`~Vr &HDຎGBe?ZZ?4-E!.3 ;!(~|>UrmnD(E t5u.:HMJ(x.Z ]LBkEwaҵ\tCxߑ=𜺖#D i.rnO(>ܪ)TJʒj P7Iu"w\X ҍ01;Q^Q}KcʷR! L!jd 1=O-Kl5 pe4pԛq:Gcy2D)58ypJ벺1™m^qC,6wJQG.aW@_.\:5&T>L~nMM%k햟!gLc7ir*koPeO9U~~<\F*-dYAp@*L6'ynkӘwFsx_GVm޹:2[7eϭ=AvXtsS($'Qulq6E-@L``AV$hMy<4Nzc!<+w*!ᜦq 6zs#NRccRKbqBUN>F$TI Q5݋,;۽w1 kQQh${+Xg#o V#a²v T /JD:[R̀t0WYNi3yTS%%|kR͑:A嗿2DB٪$VloЦR!бzRܧYU.c˦]ݸ1~>$[9Q2hFP)Iw%[A-G$n؇ewr n=Wy/йx؃|]FKoD5+*0]*ӰQݗmx9]J@fn l:o4=.KW0CD@ÞIx$+ycFN;=(iWBp4ŒN_,s.%V:qmF!/n>F&zKІb uͮbG8Gj~اJCVfa!ofrj}:@!H4gJ=4Ex! CiX.;;.5_i5`:(+8Gpa<d!`O)uzS&,խO(BxjMv\V,`f`gPynR!! FQ"3r|̞vzOec0zQѶP=*oS~/'l?$IAX|6팉gXP>f`J:D`d0%&>}yH)G|7S(Nu#mĸx΁HaSP3T8XMXӨhIrzp QY.mc`)sUc}"_p=⃃¦'Ƭd!bc4EF Mf ~C96nn;HcQ[=l2sa/|#?@=mN]7BOĭ`iEng,xmjX!x:ALT7IϪNN@”7-*ѐ {2%HY¡)טxoX"cL.l1m/e(#e]>q@vm<>S#?l/rw\ij ؉@TSK](G<Ʀ/ "wJ2V>CÆӘq` EnA$/_`0{G*!,!cYIc3j 6 _SѬIEwoLwY:& g?/!&n o6(͒?>9fJry}u'lhc!I2fÜ&WAO.O<@Es /7Azux%0"i aWd5۵I Fх0 ]L/Vضho$7! y*!`KjWӯ#,p"y@{Jf!ǡ662ɵXnbl酊VoQ :ݶsj(^ztA+HǼYԈj7X@ȧu)Dm*7L 8ҳfs?N`>j\pf0¾L'*8M=9vs]$KX%X '[j = u ([; =gĀBз:h6| x3/!$'|G#,qI#@gxg5!IQ&sg$Q)-!wv:8MC`(2!ئSw zD돌1ӟ\K@~2u^y>@:KqIk( 1%͈ DQ]q["ic.P9y,R 0ikJԊ5 Wa+c1T1z60fR&ٻ೛8 ÔxT0r<մƊ ڄ-@<ɋ>_p[E#YBdƔ75q}|?o97BbYյʒ߀IMAn7qzÙT*ZtN&lԍqq MqW]0S Do!Y1Geh ">w6XqTu҃tک\0l2WAm/*}튓=9c#[vjvV@KA!新nܰT)ōKc9Kb̲>^jX Ԋ,pƀ҄{G) @3@8zsHHr*7Oqj0Ք2;2S%ꪅ/ZMY~"cL2C 5Ђ}4ӰmKU"k?v^rAqvy*{R/MlKkAR?I44mNVujٟ^0edhçK`qIY GdN~|dB52FH!BV۱nfg T׏Pڈ$ :β}Mn曞r葠o^'3O>}ȍöך^FpMuP!uPqͮO啴`H=oSX,݌jZ. 7r442D{ .HK}V~T[ҚXW*Hqb2 DtuZ'{^{<_U0DtRmFl*Y[o5P PoP,}B$rP! Qm~"l!~5\ŰӁXgp` N+Ė'8'knhJ:ձGE PYĽw}ma"HВ ) 1]nLrӁ_1y6sd!D2{> U L:dD$2$y֎H㢏DB"{ZK >J!,k*܉e== ykn֍F]^,TȲT7[!θAA/nN g2 e9{7̉j"2+?s|\?=W}HnbҊRVt!~MdɶpUW;59$}`χ@|}Վ%(lRTꘔ#F(=O8(ۉ,i5y+tx)\:%fsڎ\@צȊ8#]&A &ǜRsTXSg+/=Jh86@Eq2nv͹_AG<}q|Vjb%>D`Dzi6U0_vx \~BNKmS .kW~It=V u[zrHɼ¶li"#=]DT $eӔUbLڗD|/l<n$R0ۉ_>`*:pہ^? YK!fLkZ:꯳tY?/5\.PR1 *PX?̥.բϑ elC)fvq9(HZuV$h6ϵU9씝\S?JJJ=׼M~ !Hv[1I>B/J"UDƩ"БV"/˜"mS+EoW1oAGǵ:z43R4'@eA>5KE<5 &"[?+]-kv;P<\o@+\e1 zkt5Ev4{i0,n[!ezB~ɍPVoN<FYb5O;4`h9(͵A8︌ƒ╴ՖWMˣ?rjkWuž BRِ[FDo cR∲"Nǖ* ΰ}m I9No Ϗk6A`]`wO|X+m9 8v@)i^0:̪}+WRּQ$>QFD};CKJmml2ܻFsM!Pl;Q@NAn(o>)8ա+K$%4~8¬:Bұ?IO2&Ma:Y 6tF _6¬K9%HE8sⓛ\BCTS}?(_Yt=y~6g߰+JJocF!S<H2UxoV$$ +ohv8t{}v$:AjsÚq2(! ONFODүP4I=K7hlЕy.q.,71*SVZ0P`wՍJ¡ݻTЩ.æ$:ھ3 bJ0Ar7̼l.6:bj?}D遳\}Wq>bbT=cOc/vӶ=éNNRoxReSZ@=,r"xuٕdiv6d wbJ;a bOtRNRY-Hr) ws1lԿ)o/taMHEʕAVHf=t4 GhPqsd9Noe19Tf l>9V7eܶm=B\Ŕ49_džY _?U hm7Nb4MP$]aA7I3=i!8EPڦ:y6 F?z!w/Jnε *}=+ʲ d(ZS=ArK%GhF mOw0g(`V-]JTf}Cn2O7~6yZrIw Vr#< YѾ'܊û0^t}?i5YŒ(/-^-FAC~O6y]†WDܫS>E#vLx偦 <MG LI fH$RH75<4O4wmjZ(CM݁ܝzuh0Mϯ%0eum7Κ.'QS}t({#uwBI[ ./8F^E'+P:/wqEK Za'M LE\k/@2g>1ŅSbE07XǠ܌+İd2|@ui}W vZ+XP.c$lZ*EyK:yl!i  SOP^h:ks̓}5ѨV6'"6Y6-*C~NBN . Z"]ݍwrYhX@q^b]Mƾro]" EpPBx=GR%h4ڰXY0)d^xRͦĢPJ;:,&ǟEdˍ8ђęWx{('`lb=vLu튾뙉L5"./v x,k [Hi ؞wux M9ZaJ P'`FFCnFe,Po xs#JPdKux1<KfIfkr~؝sg;1L}JtY%8Lk ~[.6Y4IoG9s 8auKĉSMO\~8ꨟ|EbTs&z`Pg|2ѲC Vwz_ti}Y\&a{#'?A1:[x?YLfq9Sbə і8N{ܾA[LhDI& c=P]ߡX|orMʕ:Kӕpoz&I*Jpԛ7PZG$1~H%6+?qp<Ӄ[(@=Osӌs~/LÞzk@ϗ4umtxb-z_ |N/(O?6!Άup$e2Dn!eNwH6_ጟ ̽F"7OZ cew~=-&6|+ ![0=qÈHaLzݛӑBجP]<迣IE1/zY>#OkIgcB"j GNc;p nj)Ե%.B.cXۗE] ^gؐYzqKvL3A\? 7QVVjѪ}r)_,c?k:eQ;VH m1 3I_KEK^$P#Xt^<DȼoӧP>KW +U\5Q,ut[cj_`gdiP+A{h Δ. $ҹmp7MS}U]><㐳 4W-aC'f79ȥ7nˏ he4F~UZdh&}SXU + usIWB$@,UI-tY>pg'"ԭu`Or4-6_$:ȡ) Xʯ!BCyd8l}Amr['2rbZ.#%\K-+;1񐻌,[ T]yBZ{\mjdOehۗ;p-QۛuڭYY#oqI%귬=ڱqJU9wrIߘpSwm櫣U*ڒB4]hU y%j&Qi4t9(4ry:FUB@1zRUey[˔zfmG`%㑈35 Q!%QD <7y3:u!R=U.\3`5ZH8f͏ABX)i~u#'`{U Jj!_,QQϣnGa.QG'A24{9 f6b85M NxXQrK8$0 hs4hOICO)c }=E?DR7b-zӠ 6hQ7C7MR3w:SD GY;beNO dq1_%F|bS)>?g,I_./j&Z[*gV:p%^{] PdS {N뚃O*cɐ8@TxI/H]d1Jwb7'pMҤʰUlRmMAM^*P_ˁ\zWdEvYE~틸6jY>$Rո0:3fLGdu|ka7UȲ:/1 V㽟l2Tb;K=SK}eFDgDg7tYlMNj[8mvG|)B=<}W9GT8S \6s7Š*U>m6t^PK9/χQ-~Sl2ϏuqZ]h >@k6sV_/Nae ^ά+Y@NM0#WqTVIGL˅},.҂ H(@p}0[I~l9AЕ܎u\TJSI͝ڗIz"[H."'TUE*O/bkJ@< \w\15APH,8ɓCޕtK0XfAt﨟SFpv;r/L v&N컒dvB 뾾E[_$x'O:ڨ_rnms\KhhC 3{d8lnRYg?ڄ3b)k# Y7[5kc2FWR-Ap3qAU28]1#ZuzHpZAș\M6}+P{H(d[ZD˔je&Pm}ztVQ3^*iE K:0څ➕:0l%! ,/*$ *# j |ғGlpq KV>4-~mѹ/] A*c4>Y' <e$ Sej)eN`AO.xa+12 Z)=pv@=%!/x6j5]! 0ை'r:+M `v9O'3VYD_1&FE]$y ʔ l"ּ#^8j4opt v~PS9*Z-ĊG?gkOF5`7("}g X}jѳ0whuQ2qk].UUxy4C0ơ?f^L7)L^}EYo&<"yD;1o|bꬅBu-@rMϦ$k/BiU~05:`u'gT7="Ddb.s|9ӸLOYڪrt%V;EZ%x/T'+%L?GJ0cDf(wL/ueV l?X޾z{^ٌͅ!]-xnc"Gim/ЌJ jV'_ȅx-n!gOk_}r5zb7w ߡ;:/HGR gAO?|.t>>=!Po/[a^W` Tyh,|: M sO":JP7 $'BDTChd"R'%bD R͗u9"ǭ肩V-l]->IxAֶ9'}~0 5IuͿ^tڳ!K =Zh( fܮmvW! 7yZGfla9>0;W:ܒlAdKq tc]IoTxa>1]2szK$|wZosg1iMȲT z/ef ͭN&kX168t| M _$-t+"<# ?|HsHrE/+/@l7e/h@ZTLDG8&@4FW V/˜Sag5}Go J6Ai"8b&*Ԅ:BS *6P!\YlNb۞jFhKM?C}mtג >Zo,t6}L S4.N*?=ޣr'ofx2uA$-XS T Nj[, ƦA Z1dATeͬ|ǜDP0ZF(Y֤҆ [SU~3˂W&awtRwbku{Oy qd89{-Έ6*:beFG3A_;TkN͏On4.#!;j\nn`-y6IؼQWǎ;p#aSrXɏPO)xAi1;c]f*9D8] 쳎ꇁ 0/VaWInctV`zg f dx. Fg  ncZi5pXo<4W-}> MqRҶ RTOS6!+ݧ_f>9uWZݒ\w7|W3u-V=[P:Rs"[u |+dz}瘰\XXd%A@)00g|}u=ϣW7x}幥EX֛|Tko[bpBN[qҕC%- } j$h%.S0@ܫ=2`y htXD[.ۑ'X}{|UD "e yO gHS{WBf9mXZ(wbѾBǚ5=d4GlO`F9v% F$ T':}T)z%UA VOus_aH'lL+KD,wtNP%0yEq7I 1GƐz^ !@taKCIh&9h~KSmcm\omCÂG8;.5W1#<$oGӃu!ƺGD|Kz=d#B;8ܒܙ1l<&W_8N٭U!tN儢*``{>N+N#wfI8i\9>A3xOJ[l5D68BZ .&624f:uksXӾ¾F(*π՗ O[!ve k>=BrKK+-n1`=plj? (ŔOBK|=/"Qq3eb' h/L % qq?/?'<$ [ 2݋bx%U]KEZ\p(Fؤ_Dh *PMisoa75qȅPie ڞE . >[uMm=Q_)rՉ抨JO3p@345sS'f7g>W&;oX\w)v3(s?[F{8͹ yVHq_Y*nGI*럌zFjY〒e@b>SBڔIزi ΒHIGִ֞sJ} c ֈj)MR8W~ ?E"bl6\zN8u(0'Feqkc?,@lnKY꬙[xYJ1{W*:~`s0w.W鸄Y.á^,l9ٟ:$/B[2r_eDT;5x8YVV"C=`^QmYٸ | n;I;>6y6.0'c7jz!̱.ʫXQRL 'rnJ!vB>q̘2X9Bl:t߱%{W۶ = PPteJ{TX ?LhJr6[cF&w -PMf%,TteN+Ufϡ8#|;*EIċ~WK_ZQD#n%-JDž5~(u̷~D!vU6ZK.5"K#RF}Rd `.[MzN$S˛|l`YdPNoʒ-9i&yM i^u5=k KϿ?DѦv-w% 0.PBNÛ:Rmܲ)gy{ixQrʡTsZ{;Dg+"glA/<έ@觊L=x;GOb?q`K(vW {zn./ 3kn۷uR`=d9߈;Sɿ Srd!8eEg.*i!]F[.4ao3@W^ W.HGi:xfxNN(V4 vsCNC'3 4*L'JQY"I- J z}/ Sc;Lzx5u HyL;ϫv)@;e󜵸<ץ'Z7@1rrlΒQ@|y7k~%X>|Hpt3Ae ) "AN^|#2ᷩ` -7wsğcȜWo٠ e]f! ?'L#aϲb9/xUt9u UmѿyH_km%Cg1c$ D  k}F;; tFH#/B$O~" XOGЏ0䱡(f(QQ?@'Ede?z%.Jf@Tn*3{v,}Lp`2TH/kE|bncWհ$s(.l#_)>d19̓,c4W33ʍ^ckg!˥WKdQd/}BNkT\)-&`4 zSm? c͋%Gj1g6V:rilf64oE~p\_V8GsX_FĎYjٯ9D?"Cw3]o巄|?>s:ǥ/Eם4+2k"s)=j! ݳ W[urŌ^Wm:j,Gܭ1o%֜Ñ`)R(6Ȼ;ih»&xw1}0,5y 5k41&5PnzeN*?GzM`ဃ86ݪj9RkږIC+]zz/39(X?4wq\0֋ s).UE.N[}3|69-g؟uxa`F\y𮠚[sAN0V b]")We<_vE Nz(œܒ 7`8Eal%[T~3o=n|S6^*P N;e1edf(7&j! y[2\ 9GzZbuxmr;u x'ڂx :GSQ +x@bA2 %1 w@  wSPNcOZKL9@C2lk3Q>&RړQ W!]LJ5 y.z6J%=6l5G TUk/>Udk Ӽd˲'1q5PeI|\rlq>dI+(.m@|7ҡ,J t9bI17sIa1qkP3%T؅iXf7yo6x/9&lbŨzn{JS©Q) nZA Qԝ`Hb0c| Y \0 ')25;= xݻ꬙;w l%{J?`FJ~8a*[6mIlOڲo4@)p%/#haܭJc!(D=-\KW{jNU6(/FgH:'0|\&Nm <Hs}$7r<^TC PPࠤ# pґ|3 ӑpN2EF [`EHAsP<HL{E6~/['C73!~c+>YC77C`X~)iVZL?.9#5GP+F> nCnX)ޱ#]‡ &(;aGMl7EGD_ e8cݘBFQ|lA}5*:5v||픥+8dO|E[JCF 5G!/&0-XrW[|نv_Qقޫ޴<k~]= !|rEO^?y6^[`x!f B>ԉK GI@<Mf.AU+cy_h3c |g9Ph~—0[ |L,0ѣ7ѝ%P޶xW}U];{Gp#0gY_n)Ba#*aJjPyˉ"c4Cȼ_uWyE5\弰sB'73pN& UctAfSݩP:lntp":U$;RYk#bX#52KF1 X[M609gU/C90)6RsS}Y Z4?G\*kkV/9Ƨ 7mZ6`ԍu $w\$8 .R;$2msA8[:Bֆ/:#Nm҂$tb=^ONժ%RpU#+Q>>yMYb700}qy6s?Qhs+cݭpΪrntom>"a3T!KٚO [InI%b=724G4ܹC-k4Τ?G?VbS̤Gz Ma1~&O]i$ WR`x3Etv?4":׳̾}6Hs\= ЧeJ\Տ M,[d88s!}s0KޏsJEaaI I"k6zoڡ̽F̯1ó^6 Axћӑi*؂}K8hHn^tͲ~)ԠeϞ,;[.p؁4eX%ؤ4Tk >|)JQ٭ߔ җ[ ?7|5mdݰD"h#6/w nqяIrE)Y`gbBdq粒@)q3 =f*yǏ65|Prg~Tp^ZukQ 1.s5@S?H+aZ2Es\Mm&9.ܿ0(g#|/oyI*uZWDwyz!+qQ?5 Qx?o]lt;hx?)ks&Kvڏ'+u:yu8VD4yʒ{*.<웭WRO(q(u=g@p)V/;FEuNry+x\ą@hR)7+fZLA}_/AŖpRl_x[kG1ݸ& 𵦪mo xS %7zsiDvo !ta \ HA6nm.DZE8C.X`LD̯7je$V2MVW5RyEoq6(.oum0[Nۑ6i@\w_mkg@):\_Cszg|ړ2A[6e= L᪚Q<:ia׎CWw*]jF\_]<;=:z`ɕy03i n/*? _WnWq¤gjӶ!Nר5EuC94{x -[>1lIOwcSЅCφ-20>?]vO B3.LbˢVߎnH@ +ay5wrnZutHϵTFB u Y@ƨy(5sIגnivV`9b_+P b3 Y{ #;{[#RqpsN@ NM:/h1.?vgB}h,}>32LybPdh8-uE܍p.1(M +J%MUؒcwg4"#`zХ_fC4O7(pxhkL?[㧁beh&lsAAѠbd|?Գ]L m!Rؠ03<3 Uðu#NPT\W=3?k]_we* L6w;~[kO@ m[RGs;f=rQ>HJ||AO{HqZ[q}^$anfZl+0^h&A \II Ao)7^V*qD.حP=0|'+-TBF*U}Fؗ@DaR= ^e 0m]G 1J1) PSVN fy9)T;R F9 aj6Lc۵7X%]Hi/W#GC"HYpx|Y4i'*8Qb'"~N3>:Qru$v`m-eth}?E@'.GeƤcyѢqYi21vʜL/Lh Èhf(UMZ7>{fh\BP=Ƣ*PD%+~1ܕP yWJ]FxE4V͐sIJNK_K*^=;ͣg\.XZnKמ)ƒrvfW/ @nj\^zզ}/^(It[C`,:ObҀZKƅoʕa0A=o!2f,¢x{jjT]n\owM4f\!27T~4teh%ѶӳYhXFPq91Z5URU`>2ӒiͦӍl,r8)x5@%~Yxa-΢( {> ؝#1ԧsu?(^gc >"}{6OFڹO?Z܅ GrqɣLIzXWY(BV=ξaչS9\l9QF< [l"~PwRr1ךEGm؋ԡu==҉Q "kofƭLd}%. q~OP2c=MNJ׺E["Y VIm4ڵd5N1C.6+=[9Uxc (`' {As@E(LRdꩁx0_#b!'~$ً=/xw@!11siMҲ'^xu :n':Ocx&Ε?âjE+ܽ06)_hMƈ /BkO_҄=6Sh_}%$.kSjOi43C'(sPu:ww`H86.? e(BRZqA_i'e9:wxmId\*-,GLo 6Z wvqG| ^lc Fe7 Q4'e!`4DǬ]W>hDc+0DyE>(b|3֌^;S҉I0VE}Kk8JuA#8K.W›Ui*-l+"h,X-bͷ pyhm+6:ӐG)4oh; WګRHt0_ըPWZ=ۤɲ`ElH cN},pb:NOBaH+C{wv WbO\8,x*|DDƔxQH_U[x6.l緂|%=%9`ǙSE2?O7ebnjbҦƝ |?t:^,cXrw}k{,sNPxTd . KD6ȶ^1׿ -ke1yf+f'g._'hS4 jς$b 9VYzVĞ둓Ğ nS1ʣs&-ʟ ΕV.OG;V%~%):X8'gP+u/on׼$py,( bÙl0xV;F|}WT, 2)aQ>6-Uv͝tOsYGy GN f}!-?9@Fue,`D KF@}Եh`vɘh4:mѝ[ X8@3Av2,ʎ%kdHw{鷃l.(:>i&yB=`s#l)M7)[:y߉ D1E1D<<7B.?-ܸ5wcφK 1Pu|1jZk,%OS{qO_;~[ndUm\uxBy<OxWG@>}C®BeW?4-<Lj_λsqiF{/w Ehk6i@gA s=4+bг!KT h$WYI3:*6ա>s{GREGy3l ֺ885FpM?HW`[BUlA&OC23H&W+VWRt;r-jk b˖N9tpxGE"]D!u|lRlùWh;]odpy^໣R5"U$ d|jn8!7+z.L3cZԼT([X[Ln^P HE†;XA4fJr3b={zZ+JgǁAP~W_b)k/y#,T;G| c6C{8Gi7 Zt-ƛ zb"qCVe8( Wq}OQ3$SHw̔x,X_`;3o5NJ4;\wR~}6`G,ugpNynӹKo gVR1e[q+xZ.1N9$+o"9~'.W#/!D,\wrE uPd}AP;_40n[JGGSfEZ"Ha1/V୴H$BO[KGv̊JJFP[!kwm aUeDuPi̼Rr+UdNGuo']rZ<Ȏ^\s[zP( E3ȖX L2>8R^ﹳVp>j%#Iěf2n<"s?:)7o^ov'Fxy5kN6dIo[wA^EE; wi(f檰_g+s?'o χUoW7>ޥ54#(ӗÕea8ܜ[{NG8dO.% A;v]6+9FX;aXa'wQGȄԧ&Y|ʒkm0wTSw ٹ%>Un0N&4(-c~P\{2S=ɧXΘ0sC?{@i>&=iA/QI!r3;ehZzJr0;.)z-Ynbd_׿5vdr51朐_{wt$6S2>Sͪ0Tc> E٨j ,WSۅVa?(=[)7JGnScvu$@D_vGa;JʧgHc=/bgя'CoµNJǼL8F*]:TvkIhlXN<Q`p8<0M? &~UiC@1ȞY2h7Aᵿ%Kf˘'x`[ƹ ;:dkx縪o}t +`4_ԯyп?r3.ῧMe!ӑYꗂw8n4.-IژJ>oVGǧo/WO7%aFJB}ߔa~.DRP|l b m ZU)zhvʖvf] ([ @E%.h*qzHU?_++A{\_t"RlJbI*yـ~0`%2N,]S6uW[P*+ʚKV} w%7?iq"3r1Pι[%)vq{b,1 GΪUB9ERRvn(ZT*!,q#'@O3.eӃh IvT %Y=lKˁB,l6ؠjUZwgɺb~ /NLiN!%X)t8RZB$+yl%yKH^]6&3g3('F}xH0&J͘}E(4`Ϧɶ^8򾨂ee.Oڈ=Rq -u֬,j=-ؓDGvmf!F6Nit JS窚)H|D~SjȤ] `A/V<7Aznjocap@r oB bQrgrĐm ѹZeO47k{x1h$mNO H|aoET? *ѭɎópQk> +W7z,4{aA(\`f==pob3lJg.)˒U-5݃cĖNH9fu`cs Kek%L4D5*igbg⒅M+)ř_Os8=֫m=V/g/@b٤N>Ù [v:$d2>A^$?=1giGEodzE]W|?\ޮ"-Xq͓1(蹉8e1NDQyր`/Ђ3e&{8o"d~hD3ytʮ|V« >ʨ IwyL%j,*?Fx]ܘ3(~Z2>9e#{ShFqizju r[:; GJ"keOLvi;ذM7 ~J~8f465XUe*Àx0_ \lem~㺌bA!քdMPW+t3N;+}ћĮAZxٝG~oFs c8/ Ov{@zAKJ0p,8@4-62ҫyNJupsBP]1{r3c>䥖$`H*G,#Pfx<puVWچEBH! ]q=pC,05OP9W;*֍w=tv^y vCsQN䒻Wp.s]G̸=QLf xpZpGJL#a=*ZH PYۊG0zpq h_o7d2|tr\b7H PcGۼ{ZlmҠ|s7R RA[%CP,2%umsP.c=C$5 f>qeeVn` 85c 4)d?{6UPDe.WXH:uk&ޫ쎓d>WEhы1L`L,lBq4̓51f66 Z54ܻ/W]_݌Lm^)YX!xOSNoI,OڐK\7zIk΍Z6/-9{ca .!7jna$%8>O)=\Sy~sR0Lu<U;^ω1l!!Je\3}5F,Vwmoyc{;)8XLzpzGѴMGs'R-Y5U ba*6Z5z3nTڽF$!GeVm1ΪcWVQz{θ*1\2 V=>%dyg\;mScko>"TV2i1u:l+#p5wtZ S+ťùÂ%~0_?w!+@4@5\S[) w\ / F̄0았ϸ=SV5{a#A 8Yʷ1-ό1ѥֺs9%u~ 2a=ɘ^*XC3T[rn$q0. AlpL!<ӧw}=k$V{!ד%%c7a9~ LT~~{\KPamJQ7o%Ս>\[&5uU@z\K'eP] q7483n3!zuuѭ/ ;)^t̖-bQƦ&s;{]h`b顈WQ>PMA; tԞp|ТqIaZxE&UXBX*D6ⳁLb+UT Yg:y>2Y|&SS݈FD G\sQkҋDYX|&ؑ?)73IIW 7d0nePxDGgg[ga,tp1DF}l60tZ5|}xT7*>ޝ/,N:'+n?l0^ဥ{-T5(?؉cO,ř'lkb܄wg^B1M9hPfWtڇM~  7CYܖ+Fs!0R獯J25noe" pn/A'784&XZ=^%,'z<ډesfۀ`Ge>חj`%8(c[}:~Ԟ\26۟c>r1}B=ZRjQqEgIUZwNq bK ?K(l7[' m8:^#N˾tcV|"iІ,RNO ,B@h-L[\:25k 3x@8DK M},I,MH# NEmGK '9/n ZUbd!CMy8&D`@xMMwj2-,Hh=y3-ZcSlG3%6_}]wg 4*_$d*}6:ݡJ}NyQp\Ujlq+v _zod1)gY\<%-Bŧ<4˰dve|)[5 <#9̎3 h. !+Z#XFWB9h7B:!cwpDr-&U#CupGi7Qވ.j& ?ipblY?ZBSTuAceѝLAt,nY&U_`dٖ nHXК]zP XmAC85ƪB5nJHo,@1s٭'],nzI v(2E8.$\XHP`m#oFuʼn[o+O\PY;t-ahcX&q & pF4?[nbx<V*͒y2k @ru :Dm(ZjSFSfإ2!7p )M, ̈3b$e('IUB/6&߁"Q?7&0Vl![O5iPZNEt=)HTfhL5~ZbSbBm7vzz|<^Au m()ugl6KS xl}ȵsgU|7 <q**x5ώ ِ'*eı4rɆ>2DԐ9^Rn&aX:|`]sx.g' 4JJκI|Ru5"kDJwtLw8ZSǶ21yj0v}my.evny.\ t0^>houl@@תݸA$KDPr/Q| ı.-{(DUqoi%3SL?79a-pX bG;L3pp'%R@== )FߋX`d _ׁ=6,@`^eirTi+'l>x,?&(XwsfU[*WۥO^ѐA5'ԫZKwX\\iTkF4:lBlUY%lu?@ש/VdK#p*NͺcU$Q_S+p+lڳ5ŗ;u͗na =0r (L69M*2<䇇k]){ġҕQ.QO% 0-l^hʞeM|ykh.Pis˴\./3y/!]lBמ̊ЖxB[zBX ZN\ xz)]FCc z>4NsW/OI>jC?!Wd4=)󕧖q ۵  = m]Y{iRNlÇi~}o2`im©eEMWfoINOQsU4ްkQ>$8:^36&8Q9`:kIu)>j\h)3rk;x XQzJqWA'--}1#փ?.=šiiaW \J|MC#8Q $[>˪lG1#Ǟ6 |@\\8XSjCI065&"גf%KNMo 9O}'O _'GWx}PyùH@$ꦋ6]1maa ( d!PTUxQ")!5;dϥ%t[Lj"g Η+<)eq+ 9(ブXޙApTMFH<ԕ/\=Ι]S.]|,׫E9J)AӼ1Ƿ^:AIraXR^ps/PO.\E#3BZh3>L0 /7 9>dE / M~T66j'CJ!7%sPLL:lSGMaxdߜz=hɶqҴWm\=kP\0MJ3$FfhrGgssVjahp] j4˳XʣvWQ$u:h|)=:a׺e ߮s4O,g18[~t3a۫[IsV@ZBUc}=mhŪH`f({y8?Y:$"-(<{ O!> 1yT$GrU.&ЏgW,-f)f V%fqҮZL4=};Ͱ>Ay:]ud-2_ Q=:kzXm2yo\7C0ޅlYSBb!|O[[W ̕@᭸]Dڡ@r;{cJtw5JpѾ8H;WK${s1=; Q*FKp4?̷7Pt)YWeD-UoaL2r o7 Z*7vIA7ZϚSG+*OD.=G0+.{"r\ u: mKF'.@&BT  oc@t4I|y C--Ś+؄H3 -2,. i$` h( ffIaL* rg;ŒtgCZ1YY9O <].1wƼ1ʲ7 k@nV)nFnp͹n6՚o>0&1yz'عh_]4?tgJһBnĺoCZO` * . \tLnFh 9ߣH.bzCAjIV8}eA"f v-L }pD  D[>BV2˚ ѣi)|5q߅ O 0o {Ok .hsqL; $+(/[ݨEtv/tT6`/? vp8Oe5аQxs:̿h)IIbYDM (9gAcZM>LCq8=^Ha]}Т&f37¨=VI5s`to@¤6 q?h<| 3^_ꑿ_1]R# ?BSor ց0^OlJDH>D-6Yhr蚗UQB-Sbit&m4yuMWIfٿ&+>tş5Hu); X>YiPN8`tf(Iᆘ;iD ze0zBEubzTN_kAPeb=쪮.$rb3iUIcЪMit@꺣4=|jl?2r/L fّ!l}K  "{*5KF`)&-&wHgUK|y|VE=v䢲@I"!a#p]%܄& Ó|7k gǸx@0qgo~Mg-@؟jq͆Yϻm xkWo4@mc PȏiPyklpFD$ឩHC>&I#҂ p_ l;8]d^tX!{CĿhݢ2iE(o=U AGl~d 0=ۏħON*;vD>t ;:AG h0roh{( 32OT}uXdF~J=֧6o1t <|AS)zLZ;:c?Gax0Ҍ:aDՃBK+8<ҋAP o\Ik(č s#Ž"|ge9)Kq#D&X%Gr3qp (HxM!P^ }P6a'/o+g䖰Fnv5a SR6<ݙ`VlFY NPToNs=c)ix>ATMY\GRqBZ* 3WΗ6y 350]0i_'߁T0b 6ʊv%|Z0:R\PP=ڦ:CЎM6 56Cr:.CdXr=5B0"?o01J-Al>tXKUՓ[1XSc1 !\ 7cD:w K־nKc!ة1%"9vQ*vHo29@FG $j"uZe4&ei%r'rzQYU]+aHT彜)XC``LTf?~~S=ȁذOg— Ü%bd vr`07>.!+:ݻ\d#T\hGhtr~Ά{G}g- fᲘ´݃i8K dBErjs07^ؾw"_*[rkazo q :5նex8PdGx H?CC2N[D V굠_lb,8 O/JM=*]y0­vl|[g"La3w9<ŏM[iCvN>S Kj\θ6^1J۷h3al_ۻJ&[G+40Ɗ4]Hr@]= :k7޹z`yù›J YLeps~R˙\3I❄]NMlɔ[<)uT*fx -!t=sB/yAD,qҗR~YZDHr)+N[fAV TbvSI\ F?y?8XRc&c<1uy_]}bONqkdތ?oV؜$C  5lX஀ ր) USiѽ`[tzJ~2`S9|uT,3M]\p^.cQjXaE!XTD;R;mF~'#ͪV|ys2#9\O,vJ5s*[U削;0?h}S`Gk9β$; n@Jӂf.HwEC#JЊsz1}Kçϙv/^!r03. fd@{:uҰl83YmIhMu=SEYM`P>;ц7Ya55=Y /T銐fuľ 0ZRy uY񌛧^seyvGs,?zWux 5y$2^FvJz !#/-U[f+l@ ]} rMqnA2?H:mje syfWRNJu$N _ַEKi8N@YK;:v%1S06ycǂPJhGuy MU'N[ŪEgf%tt'A0iT@+DWbhHc.9`E~=lx vBg[ b(Yi߂.l7;)?98AoLDz-m\zf;&|qkvl+MPaY^R$%4`l9f5{Ape0TdyZJ\4|^+e( I %QgRS}Adqn>/4(OϷ+hԤ+wof BqH:G S5=@9kDwD%BWP6! ǭ۲ iy hg-՞ۢ:?xOܿT4mkYMhDᙓ~ʖR}n] +E!v9 p>`apfdi͎Mʦ!i}X=ugfr] l7AD9kyig:* S)3Wbۅd q EU a!$vYW%Ygz#% 1jWZO¦SX\[~ײ6F| t%ʘr,= Mf3#*vE9i ]z98RIytm?cmuYhwނvz|9peJӐp=# ䷈K ZM&{ <!G.mmA{ 0:1Aa~&>McBH[4Gx>u?)i+{ZD% AOLj.[(W1s>y)'@$f3K,n0i彯 +KI!bABLEsNәVfG_[3kzOM+8tA ?S8`N& Fu]S`S*(7N=*c ٥TN'@,Ul˲sS6Fէٕ_%"O x*QSM9]m7hu~"zq *3\QSYᜯ92>*!1.uxť'e Sa u ¢l~-=)8~}[X i1a^E)tUlAPt˨7tzz a?fJZMXcffdk*(mdnW3 ^0W/ȋ=ײҷyfs$pXYԼGˁv]!ی * X[=ΪUrVo2%֘NR|ܹ}m꬙Rv@qJB XcMr1Bny=@,'Q4=hĀ"AEPQ슅ml8@,C=l^cmU9yvo@eK{nٻA[|`Qv%=+ӱA86 wF0cc\QJW4hAҗ_ +Ψ MmOȅ6mi; S 册qG@7x7bqmEg5W}!,!wЛabG K|E;˼I5wv*W1QXDv\~շF[Gd@6~*VD6oXUWd[9 Te YbisR0֝Rѝ=o?Uխyе Mw7~WWL7q^ tE|,s\]I.y[nr| T#vAz$5o*Ls?i΍lu🛇VXaTFCM{}A;,V8GnSC_D8ᛢӹkBr5:ċ\/E5ƭ[TXʯwp>:1u鄾6n 8V^ZB8ItP :/I ܹYPzշ"ňŗ/UybϤ&6pb259:p;*$v& j]/&'tgƙIrF\n<#G+ǜ+Y%J )#!K7czaPsOwնdҁtkCKhu:]͒\댔W`"eT?r.%".M`-2k !m^T{J"pb_ {|$f[}w63!M5B.ԉ)on0)doN.=TO]k|1! ^A BΠ,PP1]G8_ͽS!5q.0lsҗ(\w3 7b|+^{v,awXcuA}<տdB'쟫YuF6?L Zzۧ2id͉ 9}n¡IQGA>?m+zͣ6zR s\8+LT9&tӍE<ϱrJCQinA=β !P+ %J6LcЕـ/>Bk хHrJC|s2i;t2wqdggvbmQ؁/E}V7?ӮK ntU yt&+Q%GsfS] 3^*$7:*.۶#xNy" J5ahu|cY@ hv(0/xYge/w/5ӠNRx_pֱ,%B +kNmSθbky+pYuW5؆sG_SgE:w KYU&_q:v. !qdUjSm( m3jd!Mm^R\3OqEsPt&JHwIc" v*\aLQVcIv5m5zvAyN54nmV F؎FT81$Y@G?0n&ёrX xTGL Y4%J {0D S_vmy}orQ Z9 گ.%lf {g]d/hڸG'Hq u zfJo L~zˑyMA6Dmmڀ vUg↎_|; ~ 'yq&9&3de W߲?wY~mmHq 9r+e< sڻfB'+ST"ŕbL7]ivz;`lLПtO&/%wTJ9Xsg=V_mU tͯWeN},)Hʓ5kPTe0;DN%4> 5Yڦί DN1t{Oc-7S}zM6{FK>H9 ]?{ɬah2b{-L0zŅd<e28&cKr ҀȠ?Ly~X&>9EDD[Ju̚kv1QxI_b{7vdLX5?{0bOrzh$'P ߖl0e_, hX0b Lj$( XBhoQkv~>ӊ(x+hFñK@6 Yry(ʐcl(WO |#mW42t;AG̷*z'4]k iNޫh 8(qUDf ZҒbk=ꊇ|㼇U Ub*ƞ b3[/ ]`i:XN#HĢȖ_؆ncݣdbZG(gѣ nc'$6K>9ļ~pðMkL >j;8_JLp $_%ߐDҿF./cbmBOtꇼ.px:ܳk.>#$aib% V!7$|;܀jIJ*Q= 620jwit!wpr $Un'V>ϓ)ߚ-1@e|?yrN-t7;;ZEKG6%uړ˒ ?$o͏,5b|mitS>[wI]+Mdu 0_qKtl4o* ]gc3Ovpcz]H~7ˡ8'+,r@NB6~6Ua`uEp+#wd#Drvӧ׭NUK.KiwVlVc/' ;{(=ěΫ4#7]&h}O;項tVhL^#\&ꦒbOO o ;:S=Vn\ƫÙwyp A%_/}16x<E3a<I+dbĐRG+K"Cv.VogJEjKd'Ĕ  XSv-S7-ےQ6Gy񫮯-qgƲ@ 7y;yK ?#[PE񌢣ѕG]Y"_ћs~nE%z,x<Fhr^7Z4©^q )u!< ׸[@ H};&.0pȌsHp%8wpjT!D}窻Dq<>9z5uB R9 %J*KOn(BZ;.]} kהQ`G-fy1+N ׻ I%sٓCV1_&S%&QJ1_c1'uuG# &rUdAO`~{:#SĞZm@_Xh&x^^Z:iOeer.;o\E:@1J;tks#ϩV WSH$J~Fu.MQc*CxA;v&hxl|3yx%_;wш%~dvkjɌ=a5TD.jbtwǙUr%@YWwd6GvgTP^rF$?e ׵8v%4 (Ua wGucЌJ@TOȮM,.Ǿ`<t:y`|YN=1C~r|ˣ6 إs2;bNB6f*_$.:HjO>td*n ӪKW硒0Nf (agocmgM)Y1l9Z|3a!Lo$1Fe qcOXoJ9pŦ$4v4\?qÇ )މYNO>R1~iX:k__s f" .rN]~9 k`W^_SA{ؚ' mWqSUm6x2znٶ c׷WA:2`JJD%}(`(V2V;V# kvoc$Hں70JCЄmLLQb; YJJdSF޵+1I|==-Џ$7HBF>Vz(GXtɎ7Ck?(^ RQ =ɨXTƹœF*kPgn.Ed4i/g$4'0.E_}S&)+Q@S9TnYG5܇: ,aI D9N6\ߴM.tDQ‹N!_lp) CZ7s޸)Qjq #!?U[vf͐,>895[< t RTw݇#t9Ďv ,lHFw0~sS$'5[=TZsżv~t0a9(Jw⎊$aʭ\~aڒfï ٻiVH[3 {l,yoQ<_ԒnK1Et[`.Xxr#}e8DJh7Ū"Sz~ݨa͗΀+F-8!v"9aE ._)4qw%lZs+TҲW5eq|h07+ƫ.ikcϟ)7vI0- ?eY_^hҙU=bn>8 @jWGLJ$j$!8We ŌŨ7SrJaX;`y ۖ:*)B[WL>""9]8dN1 d^{NFBvg%G:bRs3'SgbK ٤^C6iۘ=CE%:vd7Q qU@ gIsA@X,u/:WR'둹EpwkP(HW X.@z{)ս~~wGd!=gԒ1A )F3ؼ r;O&[WMmd iXjpCõ'x d5P+ٽ1gD%tk+^u!ή*LjVv5P;O=xili6kH>|8gȼ$UP . < qO~O2\|oj`uM7!Ap$vc(}NW 9"H4BVj\:in FĆ $Xwu (!#åQ,FEcP $-*>O!R%6d Uq8{ KP }wJz2 ZAg5hߝtt\Cqn^gSNbRoz4,abN1@NLoC߼}&_sLǡcvOi5%7&̙/}bA&AOЧl$xly&vS2OQG=*Pת9@Rkz׳s&{~i<B8p;gfYYX&< $$G& xVdEe|W%0|m߃1}SI[jxNRq [ڀ" 0/;iե.5m@UB+J3ؠNXp%nC }.5ZCHH;#3=d=_f50U3x/\hczq<Z6qΆ?8f^33c1yI) !FZQH":0D6 $_/aMظzĸ߲^Ȓ"tʪ'c[]A\(D{Z7M~* #Q(?8Hei,ei<8`4wN@tpy#`GX e/mtƦa= Zw|rWCsNt¡R~ X6IS8d0}@;?@1H΋rT-5D [k3\˝Y.n|w g6k,$G ,Ύ[)Xyo{ORGuy=[23K?֐\ۧI}ikK Ia4dT"Ȓԧx,!]Z;?s[ = ,}Bwxb: RʺviLlܞP$in,f//W8WeSU=-Sy-Y &XVDe9n%<+;s NQD1b}g)=ګ76\`q_H;^5 7+Kp~nNaFB6S#5Vj1(*;=Hm$]IK_3~Gc bOM] /_jc$aWsKǎR_記pQr˕=RDDOC?3ɴa"? `L4)M-q;Ə+NRVKz)6Aҭ[r<]@jnk*V,U@ǩ]풵w_? *:k)Q6@=ّC[ZI!8 ӐC_lYth s(ȏ':[R1w 4G'yfCkuhanuC۩e<]1;Ar ٟr!&0kV'58 c'xn pk8^1tqp؁Fڒ {փYgʽhX!J=umMqH?jmFtKEvQۘKXBτ=Wnx}5ə:>(F><Ѵ:} U͓-C Ieka `Uh~OXb߅7/1&3PzgoN \BΞ ߞܫA1 w܃<$:W:6 JhpIL꦳ 6 _3ÄsAaiRc'M7K:0R*[E-jto&y)F pfm im G@{}>7rfwt1 o'p3GMAs9m׶ťTK :*bx1/"#&T%7ea iQuc܃74hL+`S #2 P M5=lZiGx^2*B&[ӥą[)2cp-p{ll~ _:@T(*_;4`lƖڽkz9bv q 'G+.P11{FAjLCCVeV\<Xjhz۝T٢KΑR@l(=OYAXt p$khND=i8HXVUp;fͼi 1n0H'oR)A`g4`b)2D<< zT\5^8:Za,#mނ j0V)gx'L]r&レx6p+iez^VΥ>g1bDA@RFf"~R 1v/׽K5? (7zʏx/U'i:n"7R^vKGi6)I(l8}{\A emThwǰZ]/הC"7/(U?QyχY:?UQ fq7ܧOе,ݗ# օ;~I iVhSne[ʑ''N |RL`$[a57 ɓ[R_;ꩀް,N ՇM/| *b8|m.vؘSS"d_l{8 f:p)*0p.CnZ;l:iRi;<pFst9Zcd[Gi)NS24/\32K2LvX:JnqƏ.bn1S߿ y1GJ+W5+DԙfxSIlvt4Њ"unf}A2mvrr7sI ȩ:UO†dgbrD:Gy`jN^]Ez盥ꮨTK%`է턐s?C%}i=yU ՓMjQ;OGJ[y%.{f[~_[43RoFnƀ4)/vi;]A~C q&OQ>fW[5{y`[,W7i([.6SЩ7r:}_4 A)Mv=!7 RYx !#Sh\n.nsS B]c߮`8o?:5? }#hvg}FgCk`,胳3a{x/N{bĉqm@Ff[t7E m8ĿCx`7=U5]T#IS S)[[PDh_A'jk??#5} Iɷ ۷䍻nPz*,X!in{E]mE]^]BR1I&)9 9@WF(."Am#4g?4v3݊J$ez:1drBIm)?m.2?WiRb hGmݔXdZwϜ܇ģ'g|Wk0{8e:N f%ISUgϮL 6ⷅ Ĺ y(GZma֘_.[v/Kpf5ے~c0yƶbmfT54D(/+~h2ş}BQSN+zE#7mA\ڼYtaF 9ldE^k%Y kռ^qTٝ'\ /wɯu,9̗Ԃe"@NC%.ؔ>wxVz'le^\T`ڮ82lxz2rS|Ko]Q3a\hjj5q YjYS̓ V4sBW;6E鱶m@Ata_7t7Q Ābo@8례nT!4|nnX?7\$~RRŸR_C&\`p 4 H{{mvSs&5n*}aۺ]w5_bc<^i~؈INwhZIBz H͹D+ ,eZ쫇M:榣˽xV<IeLM-1?|yK~^!EA@2vp"r3o:s5zfƅ7;k͹p$ʋ3*H#桇fhVݎ|oBHe8E!y9_Wr iY>c^'_,Z,'gw;"-e[8G01uM *eB )qP'Pp$խre`|yU:sGX]-]_8wmi{*M՞z-WL5`rn- S4?h蠘an I$AH=ϱwA~II}B-T'VXbd(|i3R0˴6qk?Glc`2;qʸ?$--]ILLȌZo^!y$Ζ仦BZ:ń9P;L&wvey6%JGSfmd2Bڰݓwk(X`FEέ0X6q Z:trUxA!@+3Nٸc0a:3mN-FwݫxccD0q<_.\-AA,Нʨ!-Z/4v>fj a68B6S-ي5o& udiمՅ4L hEJLZL6Ivۙ?Bz"m{Eln(H,dz|nk`5|(kp3RvR-q- afV$ cn賶 ѡ!+ۂpқEx O>~&XWcB^l᭲)ك6Y Iw;CYtvC^{)?(x=?(x7K/dJzlm*iXhjc#u-ig CI8=7iTE˦{л>lth }sn|l:]ZE"YniH4w}YIfSN;YkpBCdQhszoD=:LP?v*T8GNz޸)0|8CvP7W?QШN$v$SzUܹDwvgh`]ⶐߒ@FP|< $h&3@916%dcPSik4:`Z$)P1^=w`5Jau9 =Ěc}j{7 T?<%ިrRhU=~-m3E2lJ!ct S'¯G^/gV³}#í对*h=;TN<"9H 7bqQ?$N.L||&H͠.4_G4XTN=l %R;2Ғk "]qH/A`_p,5u`/ECVxQ0}x{VSǿZQ2b/mTYQCP3?#V5S/m(ni6GUtbDaWAmsaE\bZBZrwbG;SCӘcEF%=] u sf;RⶃV#G*"XycqM< }׍it040j.ؾՍKw^]a[+#A{>uK cK_ǤlRU r~<h i`!`L>6IՌsUs+\hkN?W33&BuޤJ9P 37FMB|cGgQ\. \&O=wAZcBUdڟ&o@NeUB0FuХT UI&u:=eWd ]T"豛^BJe?tl>Mej:[Gԭ<8`+I| r&d=,f*&$p!'icV066X;Du, ӀFRE9Jg<<^H35; 1a䲫Uvȩ;dm `\̌*O*PFSY~ʂ~gn01GA֯4&M_ҁb`Y ʞIQ/D\r҄H\gYiՑ~O7xN#϶w"L5T;)] %L [k,Nv!x`H`we]4ig5@!>e^;{ɇa7VYbG岞_E/,Zj9J{ـu,YD+8tΛ; wq^;1R/9;Poh)s2<-~%݆ 񧫽:gQ.#5brhIftPZԺ:jrUF9ol(dEfr4L_Y^qc{|?}'vWzZĉ+t!0#= WL}O 4f$9{9VTcjV!'xS7;Oby#_>}lCFKYv\18CA&GsmGj<}1i[}Օ ~ }7r+F%+ j{)jU IJxM#uE'Yy+ ܥ;=u0zҎË1ړ~k1U%Sy )0d1Xe6Kno6{>PNZD/g^һ1RgXe@Wga5=p䀽W񃳹E?,KoFZG^ ҞO]Q+Qlkb1xc͍MFGc8"^4EcUiA> Hf'0wpO1Ƣl5 M&U,V"C.SV `Jj1\*|XG`s,U|!yZ듳_c qE(fmmk>E66Q7<e?M'(ZGV3({Ѿ-luԔ@ 59@X4"6yA :р8#ayeq#jw$lv /h.Py<U "Mn;OLoFÍA#7p"-aU)}T!5?Y1gK5Ww'v2YAjN9M8p<i+"t1Z\| #o).j^0阬Gzy Xt_,V6gv7E7S|I0o7@!7__Chq-y*j9x˫)yJnb.nɆޫ&u1=ትRuxɁH_ZnOBGx+1(urXWK|z8iF8a+DyYe{2agK]VcHpXVևV]"Lw?"k$=5|\E&ntcEqB gX֤-^={љA([2)|P B=%~|: h[RV ?[`4<^+. ';3%:r4l,-BqAi\@5m3?M7M ƲmF{b[+MX JY/]T2JYћ.YqW\8hASF g]~_/r;qvgpkF?hlbb`{iV7iz_j4-aXX H:rv3ZKjlW :fYzzTUyyă5`!UZKp.+t/D uKe8$n_u^]L߲7 ߊ°$aͯS+@ јq$Tt?P9QhS䢭d\*FI(8dYvbb`=3sz5bNP~vgm^|$|E]_VxF4K!%;^9QCKN\Fmpi)f!@eF\P'(Ϡ{"FU0t2m+$'o8l؍7)LSbH='h\>I^ptDz!0P4۲k㮎͗RwS6p'{U{ʹ&.ߌmWMXQA1 f-]jjf+-z\5|IpA˽4u=@^oD_7Pqk^3[x4=72jQr;zhj7mE5dZ2KC-h_аTqz]PcDzZD{ZVJzϴl6!4o0e}rB%s_bm&J, k6#׸мl<@S PU1Mjy4&H_<;)Q\5w//uLweX`Åӱ>ٷVln{wަ.Ϻ-!2"HO/df&6|&c5w"ъvZ`Wram(|~ o'wo//W&#+Be_bKU:cnWǎdPYi߾Q)׫R|o .]xjx)-4۠2V<1-RAޙ,rkih(TQǡU k wf(xUAT\*N+ Q'TUP FhԞ9ϛRC3ًGx.=@e_`wH9U-fӛ*%< SyoOe{rآ`[sBӁKEu塾K *+w}clɲ^3x 3>t<M͓dR*Yŝ;q20KWԎ/Wi!Wwe61:cUh|P/(L{M0fPbl=rJozEGߵ53AZXۮBER2uL}{%ؼgY3;;\g'݌8fp^G*sl NQ[g8t^2(u>42n̓%+XNvNBc_<[yktSsrw0욝P{ Tn}nXm;ە GN7.5l: XJsn{ẛ[ }~"zm"3)zr3ާrE_TV _lTX/x]M\WͷKUaM脾IԻ.T0*1g]DFi-&O(~ҭ\{ jЂXOUU! yz]f™sg]3΀)>Y{욦$%`,s{c\yfrE6o1ף4/ivPa%Ȭ'&glX89i]r%my\>^]d\9`v`v(sxd|HJ>l!!V:+@Nͦ1 (IZ*&G3 OmcjDa߭0W %?əT5B6&E%F;Ħ\R\M+ >8 ڸg(KLU4äBT4RVa'c4jojo.)~KcBj=BVEPGტd|C7+o;hfMv3 #D0Wϓ~*G%/\.64GlqsEαv!uy7ZR2. | >9xPAs0%/ȃ 6 |_$CBn6޸%uV|N y{l_sdVLr,h&{`|\kM92)[纫7e; $a PǗrVBn!eLvLhwQsz7(t.%.aR=W͒%&E6!@2*8'|m}1t0س?@JSoH3I[IQh޻s=%Mq*GX] ccX5$:8 ǮkT XZavUΫ@B"ط9=ӡUwէ ij b5Ń(  Zo{$lmAb3tU ՃB1Ce =JOUZՆp > eU"(R`mʊ0 ^Vي#H,L+D"(Jб2OD@${í|bD(4CQ(LOo" @do̡%^ݣ;f"o3O'NNƟw6ض0l < !S l(ka$kmޘzba|\F۱NqR~fU1{ΥKRNF^| " ;BOҵJZq$.(#,, _chd9N ey| B2om @␺0UJXzGHaE;*湱|וBrv?k}Q 2xЍ~H2&`Ir.jcڨЅ[9TaPMG)_ mP'DQ&̒u Дz} v8F_#h_ -QBƣ,1^Tߪ` ˈd*8; 4'q܍!j\^U$c 7yEVo&ߊ'[/qr1afi;(Pul>F5z9c.m+ eIf!5AMCL<] ]8|+5W,2!+$(׮%nht?MI,g7wi ( 0#&mΰ*ϼ<ʈbΩr3VYzA3<1TBs32o B +2Ο_# {60$\fPoC,dx |"*Ee`mJ>,K0#bMX3V`]aey!*7Q*1\Ww&8} =nHRZJey\o7oo[_-(]pCǹI,e` {B(.1{w'䙼ѹՑ 䎥6"nטQYt?[2_m28-vCpjLuuSqw ɋ֖|vaUZ~yTZ5/T4r@ەwFI1(1 %y大wUM8aL~9v!w=oiHlVNr]-]e9tۇ4*OYvQCO̞ߍUflcPRK>v v#2L9G:ic-X~f# Y Uj\tU0erUo@t"5Z5/y0ю1E_¾%xif +ԋ+J(KYIAMq@`frhejzt!/myHM}Drh4UAUYUxRwjEnZ]~1)l) &%օ yM"  bMDH=.X?.p)qpپFXj؀ H*ooJvgD% LgU!-(ޖp.ͭWsбGd ]C\ rVql2P"zDu~V4$K i !<F.Tdkm3`5txIpvO>Wᇞaxz)th]z%yݛo{&v`ݾ9^ d$z#V5.qIΝ0wec#3}9ì"+ՀO40/2>e,R2d[([%3>xeqT2ʻ~`N4U3b}WfrrV,((J@-͞bJ)rT/Jz.=G/1Ҹ$:ڻ~m rFg"r2 (^б #x(UM7s"I0S6fpe(@ȥhT 'Ϙ' {s{GN ۽JI`pu|Djn2 [X:SUQ8^XdX8K9<"5WyLrqu!nݙigovIN ҟN3#YVfW>@v*"v[K}d۫" 10'U"ɏWy{?n`k9_5n.ZNT,ȻE&#$V"ޚbO#MP_U$֥}IB%# 8s%^DnRK'Z?݃3Sm0'UV{$ݚ^Mi {L/,C@нE;=wݹxtm0{a rE_|#)|0LiTO-W[ \sDe[^3"|39 Esc#ѿ6*+I@Ǥ=C/P,U#lݱ9_dlAb4Ҋ[QyF/4>\ӫ^ۀ_,~m"{qpG И\|tr#H㽗ktO~kz]Ga"2 βՒ[eY X /tkwaV3@^IZ227d7LZMa.F"Յ}ǜ f1*~N1K%H#)jv>[A&iex#`VO[pzN mNX~%oױ )/fc*@tE[sJM7DO1LA23[7~ݠ6qF@l knZQ_ޖY)'*$9 L 9Nkh [nuq6;q ;ήs6QpÿIffB]*7O)B"rPĵ֋܅-qܾx{gc-wDror8VB;W΅9"P΀@Ln_hZ/8`.5\I`{]:$6 rDh ,nEslp`hX`d:jUN^u>Yʬvy-쌋ڐ4y\^ +gl=\Q#s16ϡ:g:^%-Js@a ySNI;>ÙlYqbZ u7<x՞Ő4 nYg飨* lA G}5{ga o`w`a&M3MC Ս 8-A!aD!S?JzX1K^PqSY(rdiƤ Ω EY*YD`B@% C>Pdxu]#˿eцv>B7@O}{ϐ?vnTH=_.`'}'![i7lQZfe2QۙoA ]g=˪=9a 9=zϾk>=t kTWZ&bC)2 HP /Ɠp&B) -'\M0>0ŒR|oȑ*Ç>!=Ru.zm£}kW/ibBZS3P=[R@]lE 9{|G$OBlo ސ=x)cd fXt[onB6bS ~Lqܼo=N6B5&y Alܡ0@Xk]Ke*A/, 3 2s / ='<1w>b\ޱ0 R8b1 l}(i-EC0`߬L{4/hs{m8glM𪣉W<N.,q悽ZC@01gEyQO>>ss>kVJ[gKZXɠ#ˀlEr(Gm=򶭿8ˍΪmFފKjUmII$"]R%1 })t(dpE`FGe~jD,e8:d}oŊ78'љLjcDL(yC<,TǽzXi"$Iu^wt!G ZޯX^VY_ex-DʎlOVLe򓹧הO$~T YuL[39jE1{.ez[7@i7㥟"$<}ĸ8Z|zPRh( shRV-<]jv}l5412ad<?ZOPۈBˎs/#BSt独(`H噤0B},4q2.3=3q w@rTAeIxYwc4!QF]n$WykHN@aE@f]Tq!jpCr⊐,V,9wPbY:$jN)hcE"iN$BܑTQ)Αh6nS(+rӃdDQ#~n0*% Or܎X*UQ,)-v))D͹KEQ2^/7GFo) ^ZB^3Mh 6]Ef%9ܢ~pUHJc=-gb(6"p?oB_ŝ]]z3=ԵH/3t^HS<k#p?G*W UztkYwWHĐԓ Nv<8/ ":q5ub@\QFN.+_<ǒj+E#1aȄi)Mv=oiBЊb0HoORZT)RTkc6"ybiig#O\ǚq[r1ǫlKY?F2o5Z=oa،xQh`v~gnwIZ_a2쾄Z"Lw#M3*YZIA@oONIA|&i>$_lE=7y,u{ͻ"ѸXTiҮgD>ToG >i@Cj'}8%y|L٭4RTεOV אi3uZKEG_y/OEl=F+ wO3x6FIA\+{]|IL\CLq4cTluI1@Ls'jr)i.7**7X4taoPXJFxt6Ϭ9AGHu/*/WW{-YzCuɶm.oS5ez;(߾Ը7XнѨ@<١ o%q:g8DZVX3( TKkKUdg{=eRNTD"iNlNhœz֥uזmdJϞo37n~ix:2isIqY\ƐpYlʳ R6٤,gkwyU>z?ܣ{±[9뮋}@~O-wNޫbE,m÷w8afnXU{b[bS餫)ɇ{""ȾCU-`?%AԉupXg֘060$ᓨ1v򅍏;mbȻPTAufSGXćm̄Xu|kȹ|\ }#lkhX l]+>I&n]{A󕸾C?ŁSGY7uOAt&g'ε5iÀva[#Q̋ہݞd +*l}ZVgV$lj Lj4hP ]RwRTrF18s5 @E #T7yy|h,)Q>K|_t+HAHH+PE!CO&RlښjQmYT,mLphJM 2tG} Hn2ˠYb~U{`@tv# w 9w&FJ Dkps:.$g4Ÿxb QZ0SSIUx[ o>e;HP(Qa*S -lxuv q4$*F,K{KN v̇?3l,z^*AM3%Ju#~yvYV/ۋYT( SU\Q8 cX%ӅHOGۻuԪIY"×Β*="|?zC:3rJxC1Ʊ5cqt*|Ч38MW+ܴB`ؼkLնn73Ac&\MOlkG@qX8]xU NRng{>q&.}+ýh 7,drLLmeKNaz8!Iu J$L%Z:Н}|fVؗze߁nȑ5ep,?mg< [R="PXz *=SJf$ $Xr9!5yeŬN8k\RMBɑ<)2J: eYԜ6˧ ~BhܺtAmNosKPdžO@[@ t"lc^HòES4bȌ&OIџvWRkV)Lhiخ\;upEuZe4ZqZ><5 > }QZ\ytPR5:r=rHr[#_(5 Ie xJO~>Z9rRfwxOAGܑS '[!X#bXA{ :rI%E吥5SK'IL"~g2 @{Yc7C'u,$EXjGh(0Vr<5ȧZ,̟oOt) `~Mx</:WwMUb\q,-֘J.Kկ <)S&* HfbKQeZmnB6DR+fIW 1m̏ KAzˆ߿2C{;Gl}(3؃6/BR%pُT9'~t^3GAV6a2gώ/ɜ(@ђ{\9v"t% *SbY>VYy]| w  `?l+*_Xl{-Ֆ;1`:FdUZ}s8Fh5Rh&A3ݪt֞s5|'rO2לꢚF㺱nTu$b_?4%XdP/mv‚kY:?3\&yj6M{ecX] xC)%;Խ !(Cq1}Sny#f_a.^`1|! 3C^e(dtwoeAVrqpw3eQE?~{N##ywq.=rgeKj+NIx2d@[\&E2Ͳ!Ƚ2-xl)?bMDh+F<ANR1HUc|SvzB-Nj U&72k#gp b,Ʀa)&dRVH,A:rX8x-$v  z.Ć;A OeX;cՋfe ߤT~<|ݾ?"W9W8CnVz j@7]+)uUΣRl$]^ $ϗTyU+>83>쉚A(>zAX@gPPH>y{m"՚;t # V+THMs Z`^?UEoz"%C#*,ܛ{sڨ9 `ݢ kC[(#ӇkuU 3Pz5 #;S(c+ h0&W 7$-^r*|&4MD$ݹ0F@,j㈀)r|[mVT5,3㎱% ohG$m|˰>hhz~UN ,ߣ%'5# 念"6OMjߙD]ݱxxaW{ֈBe0,YxBZd5][.uLfׁɒ$U' Oo7bVTY-qHj2|Tbߪ(>臦h(tA\čT0\hMxT]x;F~ZyE40B EPAi ě|1^b*={N>maPib2#p%r;ldsO!'*y7u0Tcj ;#s.'`6ᇀDQp'Lw66=Z+ţn]C&i%O1ފ Mӕq#5 v+}]Hr*SW|COKuZvx$!2 JǛH8*G.0Ͼ~{uYNw,aPjAչ֔?Uxm˓»5L`1,zHQTbtZHI}THީKlM8%@qo/;I,=;%A]}` whnޝ G$^#0 @ч6PBMOts3F?b>=g' xsn8 Mp_6aGS!k됇1$ld`fTw7=4v0FvݘcjR- j"`NX MwJV`\WYXQDeGia\`լ] أX%|O_4{jtVU(/[fV%4DTqs22V@ *FCôʩmG͚"ki8zҀU%l02ji9x7]♩Tk}-*bWu U"mKs-+2 " dMl!m9gLU3"d-YdޖFY*i!pSq?P5HiL,;=gcU{S{I \%Xκ6q{RYޕXW k90TЖ5^<5T 1HphTjۄ5kjh{{nkF3?JˎUka rWA%"15 o fhFcCy֫F陏Z6^$=lK[񽛰VqBkN24* uez*b:6&o5Јs=ݸߢ'[roj;`]q-ws3:iU#H6'x:c%/ Lx"`-'p]-^^ 峨U9V J%*)OT.jTzQ7U/:/i( Bv`e#? (]\WWd1!Y8 ~YǮTK9ے tV SFA2up̆@S3 zJ574I~j _?I{7)_MRB\<abesx c`YxtSBd[#M9AJh`}tkd,;R(4 | F#MLb|7lY;SCgy'?ٙ7)6tVw9+T ^5Iegʪդ[#<3]+tT~hm; e>AŒM&5`~dykHʩqIA/[v24EqոQ&^Pչyю&2Qb}@J$֓cw\ Fabc{Tݨ?_V(OCz$'v|)+tL2~ K:̻=ђ\!RzdKc:4F&5k$TvCCD޿4)F:&S|"Gρ8K:B%rmA_!Ld pxI2z" hfڙoGJNT7V]L#Ca*Aŧ%&No^RIp#f:*XR3[1ܯ=|W4)Ixe(LOn ukG/.Mc:q+B q.iq^CJ"FRUOB#-,;?7398qIs>.Xe`ӱb$. T,ǓIzO}3nr4#- 9v 9^\ңpf=PR@n#~.u$j]oC&:/@q%XX5jСcE(Wcq{qȽs[llkHe:iпm`JQԈ{FP;jGЭot̲GFouטKh%k1@F"Fn%Utp@xO4AkineI4gdo.d|`Gwxbq儣7i,Y1J<$]%,Dpz:Pbf:<XNkC_tG"?W| 9,s}x =wPTƁ8a6m8v:t0CeJ7#3@JHlG9rVvg1CCwS@ѧz3Ւ B&ZHBgJu^h|G#5HgDq><>a̍Q]w+{Vα(di0hȫī$F=E`zad# Iz,: ooY$pz. :K@t #j Cw{fI<P{HJY8Ѕr[>n T[: iĊX71,dٵ $SrD="C-sVW{ǯ8r  NrVKԳ%P=NJ{a9Pο@~yv"n 9i4ሎد5rIZFokpNZ{..:悌rF]ؘ䆈Dn<|=!HgvJ"%R%Kr%?"FtC< WqB>1mwhY'$QG_cW =9ɧ\~ڍ L"?e;#c}.\z>;:}HX "; Y'Om#aQtc4cj|oCUϚHoҊSAM|DJɮ7Vv6#*Sxq=evp?+h>U#kز^b=/0Rv7#ӗPU]UZ#.iʹڟ)O'k0mW}*{~)V=/>c^gf5Co{ICׄwiP/&3%ݮE/q{D5otE p0 /zRt|7}4_;3R'%;~lΌ:uv~E̖[i7NeΫbo;/LRQ-R 9a%z04/d&we`D5_RS[bi:= \I?쉩XCeGkA;IJ\_uj~ְP>*ѽDh)/hw{n玞#Zveфk;6BaB+5 9b2=p( x|׈p-;^m;3g 3.;G'|Gl=泎 w)n;F"РE{=x!mKH0[xmQ3y5QS!gw`얩-qjSWŞ$Og,|`O?rDkq00ZҪ^.e~t mneN?i\2z$ց'm&HZtij*uX'^D"3'Egw"% Np€c D #|e2);-b_"Pvi'd(;Di"rmp" 0,\)B,\L_JNb1egG8,Ġ XB)" =m:F-qGƮp/3ʌc%zw"ɍ]x"TqWUq2+:{ 狋=}bqGy4cz63fb0 3GjE2љϦ/mm"́6;U9ӷ"?w`DJv<}"VK$|1y}Pr0B/n[5 mV"9!G(r޼@>>Yi\?Mt"Z݋99*5gR{wU{gbWCye,6%29)"0p4^ wQIZlF#bzD8&Ԟ(~߳S_L՜]'i>r>{ ΗyB{HԢ83`lQi jǵPf a iLD3ݗޒMIR/W#Ҫ74fz!OU?֚5/Al. MYhQg{A:W_5jF9\Z>~Sqw` q)fC:{g ,[66.աgi/<۲p;tdz"5+Ɠ&5 /kla&XkXrxXmWha ħѨ Ǥ'YQ##ʖf$6:1>UE[dVd\/2=MHϥaqlTcU kjҶѬk 4LWL5*55Nn Smeߎ٘+lfucrz]f<]z_pM ÚOhٶt/zs9ɾzvlh; 2١5H5]nCZEWY7usFs%odfoXn);#ͻ;*2YmSykE7XG%jz8_qDshk'u dLV`X8Z!ʚlkE6TɌl'T6K7v['Jý55Aj֨-Rr̔><Ҿlv Zm y hCwg,O+s ,غ,Y)|I:qq zU@u"8{KJR$zqrުD*tKhStObX79"O/.yiSR_rv?|}ٹ92,"iO482p6^(,EȧI΂2Q6?0 dga0l%P#QBe߭Ca/8\(]Psb7!9v-L 'lXuPTsVbU ƺ-z30#궽iEGil$ef9ޮQ;aͰDVȢ9RvH5 3៌?HyL&̦}sBϿ?7H1G_>eqs,'faapSnO>Uz#W,۲j?wK!ݎ6^uE!5C-ZHմn4-¤/_^@UThyK)m;sw:óBl9YҲOXsj\tNfC>{hE/k{.I𴖖EL:WM[O|ޢ@4 4-w h>k\eu2Ǖ2ymo)# Ꜻ'Ѵ$RN0 W[h$[G†wAV,Iz(LÉ ]S&I@8W1o|2yp2Sh=A$EA2Eb{DքpN]JREPmu ܂mqFaWO#j-H=rb7qw`?- p3Z+2L,X0P>{v%6rՉ˲Rq{xڵy8w9w ;đG6zAކ (ꎜk/&Bhxf<|yqfI覝/NJ1uF`!=GI0"1<% #&hdͤ#̷?JϘ 96{d^x:;! X8Ϗx,*f۩KU&!ƨDGUӋP_~d@]B `{G%ڃUEH)'@wYw$v'ϼSԝ@Vօq-x8Mxܽrƅw_~rJ>eZ=FզRWV)QnyA](^07\qV bEĩaqDFdS@[c 5v%qn};^[LM1_g(Oa/no@& ,-l=`umKcFP?i ߛۅIU=\]FEO!s?~TIK*Z(>B+Va!db[,+y/QNuSr\Y>}ar8",RN̞ZH@\mvOKh60~wO(jZSF~FFmc;apjXf̕B=k,Z8&v1N덳6iլ JXr4)E/ҤJq~p3\uEzM~m|ԕU1fCR)^d[f\J*׎~C$K6<;tJ{Ӡ;tX/4bYI!;G/ ͛{wӾ,MIߕ4K3 |yO:KDQWl89" a *wl/Kab2G@Tb29׫ U54j5Zw\ha?fhg|ISWWȧ[P4D|]*A]e}NqyJMpVL<6@{7BeFõ#ϲ8MR5WZۍUc34 Rf 8.@4ro;`Pw]Q[O$5tD:)eY<,B͒Nf%mHYqyXa&;ceO@k0,YT9},9`q~g*bDhͭ6pOjQGyZL87tUt}ݼ/}[J S4«eNժzG4оal*#3 +4 ,8xD$(ht X}<N3}f=73gmV`+BHMW2Rh*Π7M>P'bCe[?=`z=0Zpy|P$aOLPÉx^hF&jr{@u5x`qx'P4:bsvN.n<~#^ĭ~jBRk:h2[6`phxAdEtôl $aevt\oI (ɊiَAIEYM ]?Ӽ Q\Y]"ȊiَLBX"JB0b8ARZ FbN;|z!PD1X\Db\ [_$2J3,6kg "D*+*F&jA`G Qh 'Id Fg0YlEbT&W(UjV7Mffg@,O *`./LP- F@hMK*m;naJ @wx HP.>py|ACT&W(UIjV7Mffw8]nC08Bc8d_syI d9\bs<@(K2B۟gaphF&j;.!PD1X@$)Td9\;{G'gW7_ %R\T5Z`4-VC08Bc8z_lWkESUbd{@(ә_]q[lvɀu*}z](20GI@ e\HrE?V1 +W"Y0 ^aBRic\ „2.z@ e\HrMʸJZ&q!6˵"L(BZɓ2"LJ&q/aBRic\ „2.zxk /_//hȐOٌ-t7x)mx+DPƅTX/WEje\HreʸJ*&q!6mc1c1c1c9P(RL)=,1I<a=ሀD(7PaKtiA(EP[e10Xnc_M4JxQ̷úeR9Q'fم#Mh^ XyHZoк&yTUIG+Fc !u}֚jtE5:ksft]J{numΝZ#9B{[}!:2\g_ɇ 35Zkݞ5^$I$I$I$|+ě (=P1]]']aD(TAiVMe\D9@ e\tB!B<u:毕I ʸLx<ǻf/ʸJ&q!6u"L(B*mDPƅTX/aBRic܁ZF\QƤ P %> ||O={|=8;|0y_Qщ^h˕*fU"L(W ʸ*]zX};|Dx]/ևW/oq85 ZB`na_;|;$/2nʸJ&THMaBRic\ „2.z @ RiDPƥ@ e\HruʸJl „2.z&@ e\Hr-L%jamL9Ȋv2A +fj e(qU 3 rUӍü4ʸj1ܷ[q4=V!4Ww+B~0f#8Lisd8_cFߍaB^QVC*m,aLwo)\OBJ\q.Ctk/nێ]脸yPQtm+ $Lzr\3{Kȃ ψ9*pd>LMnvN3b7Ϻ wH^:#pY$@H'kF0j:2zI1tm8UC$( 8-keR߿4~fyY!?%^E}AvT5| ^e4˵ vaBS^(B s[MO Ri-y L'2.z*@42b R{4Ri/ɖq=?ʸJ&d „2.ƞAFTX/W4}Y e\HrʸJ&q!6"L(B*mDPƅz@_Bχ`,cF(V B̹8i]t/HR9V\."d~={&4uOX}m*:0eRic\ „2.z@ e\Hr]h1̌=rU”'gMte*3uLdS6 x2es(;GO HwgMC$I#aN9mnԛD9s9ɀTFPL:IαrsQm}$Z 6 \A JdEt KL%j'!J&@ e\HMv=""""""""""""Q50[MƅbʸPzErEH,>nU s!5u"LhKPDOo8ZF2?Km+c|1!Zƹ"]ɘщ1[lԞ.hc=k{͜F^c>=eX%RIN!'^؞ܳ'@(u=+j VQFsYJ)Pj?1sΙRvb9?Wo.Zd<2އ%8.ndfeƇ ȞFOOKoШP$X@}2K#SY0MeoniΖVRoi S/ w#ؠÉ`~)'ğͦDN"!FԐ%H ͭ[bȐX& F 6`02$JDE0F_7P/˽φz͎Ga?΁Pеk(i *s~O9);25`F|PX|Q;dBtM sK#$e%eBmź&!hs(n9I QД[+aC;.]~{{ˬ`e[ݭl]A.n~j[$%xM:T(yGTY5DKT- K.SίɯbDֶm6$xJH-SrbS.L@(JqTyW䵒ȓ)_ZlK-l*V}HֳO(ʶ+RWuw ޙyw<:X_lmuտ(-J JWX@Xa).`5f/1TJ^meR7Ka.(giJ=;R2\h%bn!W4ʇD\K"O3{5ŀ(@0z}EXc' i!~[_!*2C#SB:9˘RM{* 9ؖ sԜv0DwuMwEx0F(emf2JDD(-Dh}?Lؐl:\'4?,deV"o[mvo5:$ ĜQJ?foS%2޻K~\wZ]=(f6m{GʙXs4Da `"kv; ﺅKwPǭ nn% gV9q^߽׾W[?K5h߳`4vT5p ,jQ4 h ^| @? 20#"bH_ۥC/h?zu$\| i?.?uC# ڳd@ }𺁀~@-Tzq/(*/t!wZ)xӗJМa̵08]=ѱ ;ݨ W?#. @? 18rJz%F':ѽb}<n1F @v "4>t-Qׇ\҉*0kw/ a(0B,Nkix-I`aFmx@Wa:H,Gt,mM\}9gnLSt2[,~$ 9\2}b*S v20pxvia-VBḏײeKsK}5FBvLVC$ѶT.00SCEwe yC;ߟ R0̂VA"ԭ‘sDeoCI6 *1[\BI1S%մj@׶Wth%QbC\2/*2Ld EG- Nrw^|)0010`/ى"ySb o|Rogo #HDlGC5n*7ϭg*S8,k'ܽy.}=h>*|4׃kR=D2g! \$$vsVȍhppHVV.CN8aX> p0#k1Q Qh2ehG{fy003f7Jy&pZ@0vgOe 1X&D4-V Ҥk:qUoMΜ\! }D@ gHH|cwi {g#ѶDݺvE~TAs=L&ŀ K!Di#^6XLƊ 6$PsWSl!e^|p†h??("CG(nR+xhbagCaD!+E8(Y)WnċW)[*ժmvl5l6oUm\jhh2TϚl5r媉!Zj4ث&㐓Nazw"WhrժYgb Eb]$zH6-hQS\0Q+VABbb갱|#5YL*nfȐØ1Ys.x{^_*D: 3gHܠ/^j5ji @1l̙ k`FCa5klsJ@II(@0V-DlFL ;̤In}2ԩC0bɛ7+D~g AĉcA,(||hŊa*f κ8mvsf Ý"..K'P mQt@3j<-幗"/LI!G>zگ$iHaPI*RMJa*-:o_7&xV&Hr1x-/*wR !/FFwS[+MZ۝u۾oꃏѬ@҆G~0Ã#g07k+nBmĩ?E-ELn\ OrH&|Pz{*TԄLl׈Io̕]_tӣoml瑂g&rHc)r{o~w4?6ǤXAc'S(XvJ)JHKMb b"EsӐ_d &eY)z}1#DMu3u5&PޖhǎfZX_Nrvu8Zt20SЀ%~+g7Z?h\9Nx^Ӧ#=_n3qLCD"Ɋ^xa{T9sm>A_h8qŋg!A2Ktr䲓' S*U#hK>d fˤ"[gM bxH(10 ' P$Ph1KuX#d12%K9zwB&ZХː}-rRKMZn)Ɲӌu " ]w-_붇cO +~yG%8c>NJTک κ[enbꖗ W,yڌYy?4`sZKn^>& [ )f]E6&xHCG; [YZvR) ry=>ZvNn^3)մ1 m26-VOsf[m]]RO0L42e.E9&ݠwޓSԻ4ud iHC@ ÍƋ Up8x3BqsiD8YS&x')('9)Z25qJX5\P%`IkvORjLӖcqB{fﳳu>mKS%kEӾ$gcg;Ǹ5l'9Esb(}&9j'[~U?~V8VpNPYgu!V䱘- g42B4<}CFb 5Ym~׌xIfBL(',˸>z3e7wYC&"*uJjM>z@6'JwفxVkf)3զd 3hffl_{#,T;zF[щ?qY"b%R#R*%$34hm4M#E'9JJ⒍jh.X b~̋ٱ?B} P·sLǴ_;]?鄞ڣ-BEi)';qo*/"~t?\p_\N-s`Ϳ0wcp-fBBRel=~VY"^# 4]<+|LB:[˚P/X }nFZwf ˊbdi)ݡ 1ܸ!4BhDaQ T FWi?skn^2U81&*PC%ّ!PڅH8 ~:-]ɧ4֠w-g6eX ׍, 8$K ΕOӓF [2.4l<((3+A#!Z( WdX^k"\7a5&+F:4$2N 9' u jEanr1A[RxJ`HzsX^̑yB/]͂7ȬG 4Ò_}{5-z?<"bu]$@+Cϖ/F<ϽP+j$hF/dgYa[OH ŊxtbeHJQjp(dbת9ר>G ܶ$WxrmASֵiYWIv#٫a%~ck;lܢhұpf9{B=Bi[ga@\aիLI(ulRa "Ef>(mmx$>ogeWS}q#tIk+CvRy?TAs+}B>q5J?E*. H߇j՘zx+L}NϋzY^P5q5vW 4txrH kOԊ{Ic8xN=`9nm)uP:tCЛZ{g Qڈ ꬹj?;ؘ:鞐vqLN^;﫟71b ob%î+% {5U9+PAq2CܞPߕ}j!ZJYX>8]Ҋ<;(w6S[V._MDe>'Ƙ]hʖWDv7qFXVmXiJnj:#EM2 N]\n]RFsTƵrpva+`DkaMJH&\Gհ p>:Һ#HoY012cSը]YQ74L_$~z5ya \wA[@SN:̦^sh*`~"-l>)%@4~ _USAu؟LYE<֡*ϯ2ZYrcA$4\Nvr^yHtH><%Ѫ SӬB%"3_Ç"{fi|{حD֮ѰC!|J6a(P],<œ(W)qx>uطZf+mkU~٦( Vi9]0 'J#G<갖AZ-{Լ`.yʬUbz.E,GeR ˘nٰr%X7bOvѥ#@h{%j=~qr{ yA>:CKYi\WE/oyΚ{zI;qk̥rKTLliYo 8SKKڤk"(>_]Vh b8a0r-! zm w|4rNsBK)ajR=)[~=7K/|zk꽫qv4Uk!g8ߣ=d8+Gv&F3P04d&5I5g"Rܙⱞ*%<dAzgq8Yk&p(gggBmRv >@*fs2Q/dT}% @9vZxlmGN&7f:Zc DHo-o2??+,|OYzjE1N^SKWmL@qz9iTꅪ]-y`I+f+7.PϤh쯧"L**᪔ZHYug5@]ӥC(BȾٙL?@d!g7 J ɮ_q(ˌa$/ 5 ui"/4AXVǤ]h)k TtcҲHEHwq1d*sJ.D (UJh7ज WW q{s@>BQ^J!IfiΒ`g6 ШI9s>U)/bB`DNkiFW$ت?5ȂնK})%H &td3W H^X8'AyuXBU t̔(O٣?dMTEiua+JG)KOlY~e6|Jס&yI%:C8Ϝ&~TCU[9 =V>VdӏY=SH _6-敲 &7[cPKPjV(릺Ǚs' KK NH 3~:{E]es<[He2_}eY4l$Eyx:P5rblΞVagCjȀL_s٢̲E'sDqeqsB(B"b.;[Jw"N{ːF{H#v*'4/% [\0NPD.ubX^A=c%M;mjV9\ bwN8:p[,6uZ^ҝɠ1-jnHҷYlAmBzYpe֯8@Z4dо{w2GaBhÅ=ueټ1+K>1PӐeߢ ٿʋlk8nq%{O l,WעʨȊr,]W5bjUjSGvӵu"U6.H+t3aa!+Uӻe~O@ڵ{d>`[ZvWY.u/G- bRC|`:eGy&ng' %if݋XV͌kzʵ[-ktZ|畼-Ml5#?Tixw w|'BM;;(ѠH1E`hgoTݩXv(!$s;jd}hʖG  1 T0*"yF~6_1O&%۱W&w "F<88 )UQWVN`"lwJFoSgNyAKfHUqyZӀU Bzui1E4s坜 unyUqNV(!U<!<,b컮}narJs򮐞p/K^ ̳1%QsϦ0x!ȊU!|Ѫ\_z!'ڼqxpf?t3 WQ.\ۺJ¨Pv$5/ 4 $cdqx9m||iJl:l"Q -SC1OsgN?S >@vX+ ndK!U8:CDTxK"nT>ͨ|s\Pv[J"" b ,nv,/xPuwI3GneE(\;Zzm:D2F+K .t6;(z@s+tH,K`{)qႹ!H' v]cJLl*5ne)ߨ(h"GR)}} ;vԲW\QLsv^ Z" ]?E:)@ LpCu§X::nnNn#\ =!@Rz7M.Wq7p[h<Ђ?5jah^lBhXfŖ1;)z1[^ޕ8`3ȉ |px M*y=Z/ "$Uk^8?` ,SVsY8 S%~4,${3β4ZJACMIGqlZ{XHȈʈm#d%\tGm1&e5#SO.}1852EVkO<۟uf7O\ I>z/͹ w֘GKŇe{`UnTᤡh/Uj3S jZ.{=KȌطNjOܧ禈aϲLј}m~ib|9_6-ozNEU0᮸/\clP7\sN)U^dͫC*18?t“- SA-*sζA~(üb7cu>:G 'P1)\#%.@/7@RXgH?y>Ct SSQƥ\Xbn~D<=4:9cr @$A§u]ࡡ6tQ;PRD|57J?x8YU'[s}>C;t8v!Yy$F(bM 5*#Qώn.=M X&(Dq0CX 3m}x܃l<905:#_:y`h0a,Y#&(-LK#pvSqa}䞓.%g\Z_iqN?N`(7כOL-1Nrx?J6ՕzyXs-5 }䆅/ꄋi*֥ 7C:WUotxȥ1YB&J Q--7w ֫QdQ>` XYt&7`1;ub{oL M歮ڱA"y%_ss:˻AdQTM4hUɊ\ Go;ҷ(!`ߑTSfܨ2fU6M2Ujf}&mGcl7t*(n}EvS!1iJa [84Xs `w- 򨳐6b=H_Rb<[2+EH,vnCQ{<]ϧ{<)X^tCBćY$[u1,W\L{bc R/S‘L1e&`vu @-OvB D6Y8=񃲢#8jt.]NY-2ljn{-pe'j|J&r03tA2갾 U6uE ɛ4ʗy(cLjhu7vN];tA x v ΐT[#dLraƮh,oWY^Oo@>d֫&.;~Z$QZ@KuaܢC46^c泾^Vr;4GV_[zZgRuMN,Uqܝb^_ψ;c0wQ;60UIB$vMr%[(d2tG\.&曹ށ@[FjbRdƃ^K#kY R-4S"ɦh\{c$e? j# wvi")3Bn;I>{c$e)^Ҩkz;'!uk)Sލ k 8yIz@"_E1˷ vh 肫_'bʂ?d IX.o@J!Ӄ y{ƍ*M-'\v8,'(õich)'Zq) m&k+ pSI$C_+7JLX"-D _αB0jrی7)g{VvE^+\7@ċ$c!qfs3K-v(~?ߊNIGGv^9}ځ~Z+s%Y럡 g}G)SpaNWpP 0EhW Xϕi\IW\B`}cO旝o.`u\Pw>k-"ZbǧkS[6i[}G9alnգy4ԦK=}5Q?hCZa3_{jd>]5+TI4y{1+nܤug7F}@MxIƙyLFB0ڰl$ӁZ+i.jIcS'gN,((z<*QM44S^ݼv˰QM28t}fȟDj4ʨ1?VgTdO3a`$OFfMGN\j3^{w i(~J~p;MD)XN_зC)`>ǚ_ ?v>EZv>Ώ3[6ᕋGNp,e~&%n9Pq*<(}{aCK ٽN!S8%1UB^2A: 2NENjtZB3ۛx}ulx"vn 0`l2]?c [ؿ MC-~; 5\;wj2,t܉?4!1#r"spT  9Xmi=^+TL .,\RI~)z9T3nz ~zrYvY0;o< Izو9FnKfM Aˬ K<op|6密ڐ(]-~znvW&jC^1^N",{ )igO EmR u8%LΦpę7p_|exR)I`<'MNdr6b$n$.f]#ԄfŝMFkbLbsW FOН_/Lв^؜sq, @KFj#⊺(Z'(4h=5XBɪ0kn\ZA#ų3z,Gt! .|,&!i@?6:QFgkdu5<8^VL*mkrɶ!&z| xUJ?9?^xzS篢xm r$0Q@MjIM>(r T:NO\%ꀁ :;` cLUJ0zTQI@cXŜOu"*iؒ \4%ĩ8C1,&4*f _9~s(e]ubXīí꼇C`-1>-Ա `NЃ.a"Х12t⌶i?dwNov&A 8oxS&΀z2i먀b\x ]pˊGv, F3Ac2ƂF̴0jSI=1ZTE:_4o3QzH1*7l׳_ P [|4e cy%yC{NX4p8" X} bp~~<yP]lGD͸ y4oN]k..=79m*Okxoyb*cd>D -Jr̮W]qb"8&x_#a[F\4!UF{˙8*ciWޮy]xX*3-z9 }#`=И}3+$Z\O NϮFizT$z clQ,{nF 2@(Tp(**~o2xوzFl=l7+35R;fk<4Sюk9Xwޛmu (Jː iJյsRs]+KLkϻQgc&Vro  @ojf_nC9"z'M>^?k9]]ir-CR4H^32QM'1i`ӿ6эoR-U,J\~dSK9U :")./TWZOȵ>;$eP,ZGČ/.̍L}U<7ȢIOA&z!+(܁tuٚwA0BMkS;AWSpzۦW/MTk 梩ࡳWQbݩ-uJ[ Gv)nGgIxM[P 3܉@wc=W?w#~wZ'RlJ޲ hs:KYwP:3A״?)  Φ֣onJUZ 7 ࡙CYVLe dO Ϩ6{MlZTn^Mw NfWw/w$nZ>.C$ Cw4SQ-+p5/3‘0Pn>hW2ϢZq<+W֓+7Aͤ ǺFaPvxzIO``;4$93>n4 N).dr͐R]ׄ6nx@Y70C߈gs$;`ƢP )X7 L?>|:U㼔h֧Wvضn6㒯"d/Sʭ՛{Ν2 TP{FϮa_t@ۚMm9_";k+MkadIpfEuP{[V(  yճTtl#Kj6%+wwX7$h{b܄seQ ed+l3GlT'`9Oɕg=5c8Y?=dTfǷwu 3WfE,|%L0 oT5Qc"Rc'bұR&Ec]$S%AcĔ\i@Dh;vyz![|o=mW =5 RD;zǘnr#p^rc/L>;y9Xu#XDNV'MM&qk>IVNӥKwy# kǯonczp=MydCsbi^s@DfXG\K6sGi%\D mt}<ߥә,ޕ2!XDUVvUa>[f9%_?F|跇98S n0JX}VV3"أ8 gӈ tu&,du҂Ku>Cgoд"9Wehwi~jyĤ=g}n+bpUfz"홢ÀP}F_YI{#yXsr1c:e@W#|@tJs\ξ\AX)eRRD {=}O?dy/Ya{bSTE59O\,S 5SǝhSNjgGKIpu˜V/}&G5g'́\2P(:mck rb{5x5Vr_>wℼ>=䫯7>p>9D"dEI֛CmGbM ys$G ;6[N&8?,w^ nd4 v`\<Ū ,zTSn0ޡmWӥivʗ,*u0t}nUm2] ߹4h;zvV^ IkNg%јFGXg{^`u0mbtEt͊M/UrHw)7S=Xh $ՕZ"jm$WCt ϦaF'A[ 7&9}/BዹH^/Wʁ:uY 6Vak'2Ay!r /]o<{CĹIXl;Uڔˎ0lް\ݹK4 0 q Yt?f[@0)6o[i? > \ *CU1 NE:|eW ,`sȠ4|ttJ3C $ߣ}9JqJn @K3/-)gp.pldC~7f] FE4 &bz(:q{E*Z?Xo3YUylb?p qQUmbSg Rtf=h2=59xP|JQy "=p (NK/$`lDEFAdCӏՖ"XSmWɯrBNeA do%vxi3 BSA ?&d[x+1}~ L u:[2P(@pZŦf z2e/dǯRoSj)X1嫎^+/q{\ԁ#ܖִ9ME 'I7t?~_3)5 MJM;>2V( +;6!~ӆƏO` _fGpFGLţE20z'8GQ{0)!:ԣytv^db7ތSS-f#-y~9pO &_oi0Up!91?KOR@ػK`ÀYlT@S׍>Edۆ 5ZLs"UK:*0'd|%Ů|Ԫu|?F[kw20GhKZ%OSNkY^ !vcHLU'ݨH Kqpat-oKd}ɦpoPjsRGy)\Fe. r~Xy1Ts&.:^"H)2p 502:&Y1t؆Uіδa80T; h-V-7m.Y#!;4P©LGpp~:bGHPZт;#Fؗb#9Y}IB K; JW3ve嵿}Fpg͵<{')6_>9pg-lJ)Z}I3ѩLnAJo|8ӼS5X:ҧK<kx?֋ύQG}l`WMq!b8򨱱 jP$s>WC\ C)1 QmuCƳR"x圾bIӺO7:xCK0/)VQw<)Tnk6@1ԼE98tiEY^2gemKaÑ -Q1\۹ϹE/@=JS3]HZ :`xVV9*nr_p $T;+,G=v2VX]Z.8˦ĨunBQ'(ŗN^T%?Z97Hy}| +%(\G}Kf[ e!vaGI٥w`i]s5K-ϋYzΛ} <ۻiF:NTaV@1ؗ66 d0׍ _/ ^"5s+# \m}W˸SuvK̪^OҮ'sW{kI=~|+cd@6 p ʓDS=Ē֭ jgu+Q\[u2#Ik4~qiay4 :cM9XHZϠV()fQl2"n$)zoS/)<,>2ی߃ Waa.xsYzY7lyjuX!a-FL|tKc㮒0)u1 ?u%'Z 3V+?Revp)tjiwBf΀q39WWd4h(NRzt5w[|<t xާhb8[`ItT{1Ռ7"}P:J$.> SEءқ(%?uu&G5p ׷L% f?i"JnƉ`1Z6뾶Ɍiy/ڽ>Iv6Uxо Ϗl]x!91E`/ρ!+¤dn|qH[+tX(D} ]^L ~'ߟy̼/MR_=fO0~@B߼˘_=}K%^5-{I+\(\P9=Gw{HOr*Pwt̅ G[ `r^:ͤ0P#KiT5j6o<|8͑ύyoWG.,u|Ha~ +Ut$ɨ?`YB3GhH( [ >M]ZWu(ENhF~g7\ m>nc}KDziL 5M~f {~:YT À$P4E\Ae!"R ` `)Q-K+b[̖˪6vX4(= Oɩ&E;#"OYGwe!1)aIjJ<-מ.53ݧ3b!xw^AjI*@U@06FKd,"A_.IfܜC J[u.Z A0$M-s6׷%[Cmϑ;3,W۰+DS?p'MB.]L`b[J5?Qgb~WN#o3F읎Vu{? s6WqI]~8z-wvWꛨf|OXʟ\_iz:1c@쵸9̷?,IDqqmB!, A!U5tpM !,ְw`ծ  3fqf"/~vwGy>4{(] !ef.6^ϨrHm;w DK$|4J7;C3> |_KdWmj+7m1nHQ{ڄc4C,&šӅLjRC|ݭJ^ʦJeS=gMm&>P?vIKiHQf ~=Q7FI^#Oeisjvr] ?sh;RZA8ο9쓈fnRTu:l ,П 3>Ф^431S4hp&b(my%[ܨ&~ʙ].s=rV\{L8ǪSO#?aXQC*xv`f)5t[uŬfLɀ!gv!z D Yz nx]R}k$QWY?Ғ[ y@%}w+^Wc{#lXR_ĿgؿV,Yx*Az; ͣ\\U=(FqA kM[@K;zṽZ`ǏIĸ/CrBjyW(+#r468f-L7a> QA@^2x?sr^u aw0i$ƒGJ|K9\t7MѣVM}TW+HzU:7Zsuav9BrN8PN^I"x; HC6||'wv>..-v8C땫2ʪ4-Tt;O+ٽ[pԢ?  \1ssߔzRl-WU|3ܼ]fxb|$ -\fo*?_S.C? xg5=zNGh*kae=+ ")MY#u+XTɍ h\͔cx](cf m3Q!u'eΈTcq t+;}0ZL dG%/ܑ1Kj|F<.u:B gWP{X І@5 o9C%Pory"H8w'ToAa d 32[(eXg"񂀘9{|ePB?܎jQYFF Hat{\^(g'샆5>UN"Lv=sRW.r"N\atg i v_eK}j!X4ӂ>@6 1YHFֹ(t#r ٧ 7NO LeFGS5g A\ˍ*MV3iֲpXv|KdDRo }֪tH :CA}P  у3`e42@/qB@+Bj$8YsJ7&)Z0dBsm -f_q棁F',ֺ/Q-G7 oa})d7C< 5w;@Ak{VcTSμh.xL6\JTWQc{6o)*g5rԕe2\RpWY@F^Y-4Bq_Jo!)8 ˏE{3:h:p}+au'-Ӯ; %,09ͩoL7lXXAjթi)ͩb;ȿjKj6X }{("ܹVri{pO&+/l ߂; TAe{WDNQL[%܃"V{jk<uE޼.wg A |Ckt_oQkYdCAہۡ)6(eq?nR)HTȀ:&tXsİc^͊lj?TG=gq,y}+933Mpփlj2EubM#mC͚B *C9` ۡ$+kXc;5` \}I&UJ<Væ|rBf(h&zcMۦ_!Cb\?ȜZP>K~sQݾ>R4wPѭb.i2\")iU H"u3dGZw 7xj,N6@bY=: M2LvWMYzx !1!8v jK 5(#y9-) Q?|Z+R]zD Y+kNrk!7 xٹ5]JhҚԛB= l#FpIf9Dʫb]W_Q=鏬PP`gG4쓇mRF!~i8D2.QL`:ŗb];%gbn#IXRJk3¡y'!B,2XLGo#!<_?o n)tÂiL<_v@mo8l' Ybʍqk 6ȑc_U^H|<"ZHQ تrbPfGaV[}!]F!઱|4ϫҥ53r Gւn߭\&_ G+ k+Wsnv&(ݿn]/)?J))zܽ7J~kÿEx5M `6oշOZ7"+nQhg(w`S"=]q]5J=HepY,,u4(/`H;Crp */jc, [;{a7}Xxd|*4Xa ;5L6-H6EM pW9q x(=ids@'x" g&26E+nh>*(}=Y"|ZfOw͚j6 g=`;TZf7~L~.n]a/^-pCQrTP3t o  (|N|ȉg'XO@@[mDs]Z A.gNE~;O P\Fv<֫"EzDi;H9ag1>rAE7;ί7̜'7gs#|7w]i7hΊd&H_?uvKO!MQ.W]磓Y_":bіHzA[[僂d|I1}- a޼98m躏s1XB[[ cuC[wl(/T#lplkP2LUbl{CvAi;;ظFAL*xVK,lאۇ}aCUͲ+ yoo!k&8=PA%Au7nz1'K=YnʃODeL8@A.i}RӶ赃IG˥µL\һ~MYIq'u=R$+|jn?t nom4 {&#%0obhD,o4X5KR餃=g`Lx=XcT;, 76νLU0̅5deSF oyM,*AXEP\Q?tdfzCx} ׀{D cRK@^mqWMr70Mєx= yIu|I;yۜ[=AK@B'*K@埄wvuwpp;Au]? G*1?$ݽ&m4F(@#gE3}”I;G G߅]mvn;AZMUW/Bsz3j7Sk!‘78QS!6ֈei ʬsOJ8' Nv:KR{UTT5A*F˃ZRRBc>f Nզ{Soocp>gfuS0 >;0|!y> _߿OUGIƇVtb4D"OyX_DUf@vt0g[i?1j`3 ~خ8µ,Dk,' R\@MJ=CA[8͆&j&:n2 @tqhrBw% 9옺$u&'YÆ6C pWiJ/y:h63|I2ENG6:5Z G{ ,33ْVދJ߀OhQ('nUCdWlLge68iveCy3s1iHL!5( H&FRbB7+(r+y|, (Kѥ3,V-amOxjXL-1'8͵wZG[יjq<+RG&OhwJrQJr$3 F"W%x‘~zVA^iC})ˆѶ]Na匈]r2T RPS!vZ݁h\2jP5}Pc\229߫{\q(+C <*lvU `D޹r!Hi$w)Zn1(i 7~/&?aSߡy8}ΫjVAxYZ~1U \oh2K ޜPFkI^$AejwFv Ԓ*Ӭ9> QF]*'TBOX$XEѧVg5g2:곪6`tlP({pg j^la"Djrd`OYaVd 2ájƜfVf,;y,ZC#dGOz33%iq֯ZW5#iX n3KmmGN:<.a[i0 qfbXEk2x)g^TX#iA@2G&yMC0Uy̆sܛ},.NbsˌѕACeGd];xe9Lᩅ8<پ˯xV$`,1M L=]bg ?@:S2BSU9"mE~i⾲h+y#X·}Zс0|{N%-ׇsƞYA= ;^ 8xLy9+ _HDΠtSwS\I(@yz#K=TBJA kN*E JJcP\ AAo%z:gQǣ51!V♣ޠbAxΛ᳓T~k_FXi8Tp:/q>W 'A&6Pmyú7Ѭ#&yC@,Jӭڂ":$d쥅U╗ޢn~ Q;bI[é.F"/:`s=^+p{Cv(A[[i{aiCd)mN GG!]̣YLpn .=6HAfDQ{NeM3;ûO1yN<5Eظ0(8{0vS^}'+fQ}%Fqb3E,I# yEi`[E`ZT4i֫. ~FN?zZ,~*:=D;2YpQgSa;ujd&>nj;e%(aΛ-A_nmUY*0oy,&apbY agd"3) eEcm~Z8ƦG# t׶@DX壉EbrgXעn`IOY{g6?NE`;` `ڲDZHO"=vَP}`>ɧE fL-8S..Rq0|7t"d(ʼn":n3>jT3nF5w~v^a_&r* [0e/Ӟ U:~Ǩ6s&QIzY7Hjov9fd~Ug ~*(2lӾ'AwG@?w>2OëN( 'BPBs}s/y #BÖ|1悤;u4CE8<)Fw (5aP5aj⾛(O}O ,rQ}#VvM:huJ<-TFReG#% I$܊:i0;9!\J DqWʢ3I|U 2 5{B0_ "TDí+Ϟ$4wc]UҜ pU38HQ` dMOR4:g$hTrB F/z?Ķ>g\Y>%cdh3{?]CHHmDtt㋋qR/Ǐz9r>>u_=G,Qj.~L'KP^pԬ8cf\Coo[IFR^ۓ59Ww.J1"=tܳi [jpcN˱sMxoj10%/7-HxC3Ԅ?q8/<џ⣒Sc6z0iKN,yZ!\R~H Q;b /J0^IjuO;ZϢ< kUoͅ;si7liTwP\dG06{|ۚKA<2EǪi=]0|!!? m:&{rAt%܆fbC2#0,P%& ):8F{oّ"aJ>zYJT90/(UPmCS`!Ñۇjv?0S%vh+X8iLAH xԆ| CPN7cP1sie"\?e;{XիtgyBa4Snkn2@eT Q|c<:} "=/íwfi=6; uAwE7Ȫd m/tVIƯ("0@\+˨R؇Q]Co5Ϫ#O3g33=}, JX(u;Ө3ҟ;vfc`B/|#1̻0lZprAIw).%iL5 @e7-`C&~%& kp9Y-C[R 1(ptA/2FSl\'_҅D09bD{uʿfݢ}\_ca#3Nrj}#b[:~,='gf_0(o-v-)D5)3 ns{?h[D*:fQz?݁]OQnIohM"; #LᲕma= ³LCV4VcG7ny$ s_o k,:&o ,qKt2<͞ջA)ts~ [FaÕ.X#&+HbL@;0Z__6=P4 e0α!kOZ{c"$ *y`Κڬ)Z-7rT$u5KS:_W*aG+2Y$D: mwSے,A;KiDSJ7dȣe)R-_7V&ܨ+S# 6D m)Cu,i^kcz?ld#j|oJYΠ i1NI ͌7]s5z'ū , 3?k:F3Zb.>[Z=WMˣXf<k"Ƴ}S D9WeCcdɕSYD(e1'B z#0QLJn 7(A`^18>mCw]o7T%artu|pM"q>鼫 bIdFV,P3@ou+S|#,A?+\A ,+,L@/!eEz*'z,G.gNE%l\t'yt;oWm^T.|ד;3eSυI5Z$N9ݶ䌉O`eÜf5K$*;<edϔ)UnUB ]JrLz,qVqz&50>#8 ?K$Zbd 'OmZbo*m$b|N'nCNe'88Ki:>ML2^tu k FDb۬U5h}4wJD=+8@6ҹF k>Պb(h,ĉ3y'rvt"[,:}4/QÆOߔicpzd"'B2ջC.Lv{fW6Wf58ob1#sCDPOmcjt$z+ɲCC#OiM]F:H$yʠE&%.堺Ue-V-/7;M3W|q }ri,\5i>SX,i15%@֏[3TGqܘM|wΏ*m}?0x$c@ǿލp#*;&$gEs1T(i!qBD$Iu5SCdfvL SrxHoUT2r=2chsY} ._KdFv-l0cZqFI9:T^7}]6 Tke( T*m* <͊Ja nIYQeD>I*tb9SgkERÌ4Sv^GzC^d}EqԒxa'=g+79X{]?jnbNwxePJr(GpG]tP"ũa^ځ!C$ $Üܫg+ ҳgm$ 4DNv3o8c!cd11ed黰fZh< bjTٜ)]~j$ߦLw@ ;&/9;1B'֦j_.M['rS*{^ܱz{cj[Nv^|,,l>=yf`@8q``uq̝TD+@/!ݫwիZbO HҾl#U„\$=Y˚ OxDy~r'B{XO4"JUfOUh_H*j)#f4zT¡ Dǜ1Q߆ dĠu mX-;M]aCiΰڥ2 2tOҋqwߛ)&e\C3O0p[IqVs{Ap'?W1U7~ t4 iz{֛lJ ׉դo3 ~hqf ؎X2E[uю{"Xp -}&r&#t~pkYQ}&U?5xĠklt/Waxtp Wa^7nmteb¶>!|4"0t& 4lxze2 Eb z㞺*YvၹL%|1ĺKu^K^N:B#'84^Pau/No)6lz5{{}@R;B\X>KQ~uN7G]-8£p:PnrkZz=[+s҅7X ^G8PU}G?3CU30=puDDB/m!uRO6{ϔOmڹ_=>9s, *Q1j0oPطy2y?%Y`Zr,>FrLC֏~i6 Wn2]q9rw1q쐼 G%SL1 Y/Hb ?ܫEe_:' #'ܞ3Ivc.(Vȋ pb$򥉝{;n\K6<0C,VÖ/^NU9ߋT` UnXbY){[] +-'qǷwG{ڪI?`IgC(9 ?l7Cxe˓&Q=_ck6bx7CcJܤ:Gn$їkK3%`2Jג:~eC{aS*ByaC rih/]];)OA;V?1r\*ZlT/^XuKD{C'Oa-~PApHU?8l»{n~NM.+A=c(1PJ}T@^asR`}_F&V7rC@FRL 1O! )jI}fy׈S)8BE6KLDkxk+_$Bs-Іx ,s_ħ^75f0ڳͣ|lt&& ;Fu. (%Y}..R9`22};Q\0-61|!fH7\_.>P/[%ү_`#@s@\O#Rkqu:>Mq&vAqaGE(cXCbv<%/ x_9''EPL . Doٌ$)eԳ&w%LZ N݊ڈTÇݍ*xBkpv5щaζ|Y] b9$\KJ)^BZT(ԄE=s,UE")=oE}L_-ٰPxJB݂0G@Y XbbEo奣3ZK3:nÙ 4(ks`49d>Dj8>X>o2ϧc3..[7C+>'G<1g~k`ޏkTȝ9&t^nk%is AFRX[Li0&L}%y%ouH \ޫ’QrեyG5aOߤ#^w~x6~N^d<M+ǎ(fǔ)dǢ VB|J3\ R`"ݫ]f4 W.#E"K٘~=mLZ,?0&?Im!n kQ*RԓLDvjpXpnsyhX<͝N9A~$,Y6 = 9}΂tY &˼4wWҹ5-&x96z֚8gRc(ɟ5mڵ:~6UDLtpy'q#z .<4eM{D5m{36 YXp&ܩf!MeRM?6bBGriuu- -My  :O€@RXPP ~T-ʅ7P𘤛3}' PD|[;qjx"onܗ%73VaT yK!AMEa[o[.}SSȽ+PY!MĄʴ}1Q.P'WaidOJ] 5Jj@+|ᬜW^f*T}ȭi-ĸg1܀7+@W6@CƏ}%= B]ٹXV@4m7st˔.Q[l=>ȍ1|svQ.4`o/fPIm*btxꃛ4iޭ+$֐ r >ٔ>#}+,ȧ]y;z6N`8rI&\=Kzo|ƻUG)=XbT )Ckз91lyIb{&uD b- W"E\BOh/ uv:C?3N:gqoKOscAoշᛈZ "V9\O-Qbmo,)fv28n^O3^aTԡ? RAG1+x;V=^/>`d8ڝ4; x5r"X/缭$uʲ?Q}%TC7Y79!VKO_w8 h.}_Ȕ始,%lcuBiKc-N`Xv]㢣Rݿ416n@#zICkzD&WS}LvtMYɄvn* 诅|1\V+nWŅNJnGU$ΉmyJVv+ ĩ9D[xOngE/6)cie 饚*M}8?H$#AT±Պ5.SBeq{>+Eρ/>tFyztKI%9?;쿙w%GB'a|)~*c#D/'jBSZIһ9Y{t4=khT5YFV.ǻ }_SCutxQ{o;_ϝp`N7m畵0]R)jlJXy:ۥG Q3EycWbn$4 d.p$G8.HV+j8-+GCV/ߺHm .EymYh˻#+$H}޻+|%hm$Y YY<(Q So+m,GʭoܺpG ,tU&ڱMýKX{ `'}дĭMUu"Av2 5dAri=NHW+TEiDlDĪ`+(mrkv3\^ڛlݰ LOv/!*Ŭ-hk,7Jz?v_!:"|EfP*U͌+:k(ύ[443i9O8hn}I/Hڴ z|ա#ٵM?ؑc_?4`uAyવjcpբXi*,MEn1!( uZ,0ܢ@pQz22|_5~!Zǻp) Βx[)hQ'zmql,Fwlȇ$nDB(@@Pk2tS`feY/*9F;Psr WR_!S3LqUaAڦWѭbrOgy s߈ZH+Z'90f x&n\3߷ܺMy/a IzcV- : k4OixM = ;*82oZw;?6 O.M uaAO[9W2.&| *|,hF] w=fEaY _tK0  |BmQYWp١_ 2Jy +Njk׵sڃ hsC$>uCg=kxL)p4G2(* ]qML4NE [~~yڍ A9c,5Go@1m/9\^۷GӈJ"hkd[L+^O熓`EFz ]"p)߼>ڏgfN(M-KQ2QzoǓut8XW޾E+PߨrD9i/+Xw6N5 ~U[ڡ#6KO-=T4-EYޢ?ONkŢ<{.cLڭ![`HHc;14g{ڤRwK=ⵀ}V6tz@D~m̖3JKo+~{{3){K:$Dᮭ8;68U3Jhe&[T1ur+f┲aҿԷyn(irJ{$I9yt=v%5dO=Z(fipjY(5#dTv#=Hʮ C$( TxtQ'=_E9b:H?嫍5X$ t܄κ︔}++޿ӜEImsa-q_CP?4$vHbDh"4vDXHZTX'@h^ Ij= z1{IXMtrmDLxgB1EP2p fS `+^iyipX=@V75*;L %n/=pCck4FGt_@kOFL~+<s1,+Rw"Q i8MUJH{q q9]Ljj>=| 6ovǬfՂ8E,Yjsn?$; B r",fLƍkZ<#JWy%' DWhAۍڶRr2=c)Nz>pw?G]i2F22̟ F)3J]%? jEt %Z&Loe^,Z-&8w<^ж-+z.G&)G+@"Hjs,PQ\gsQ%N]s6Y?F !e GF-iOwlNҁa GssD¤t)YJME$)b ^gM0}Ej#r+ī򙐏lY1Q>[.=+pe߃vG<vove/.Us0`%E[Y%2Б*M97J!sTr,Hk=ոNY$`t4 w)݆^obEhFaGN%Rx$˜;h%W9_( 綣f% |wX;;@oR%Tc-ؐw8Y 'ŃUzkg,ݓld;q '|3],%H+Ѩ@k{)fRV\/H+풲S j+U>9t]ҭPY* hMmkfEJ=X\ 6QupmJC]UJlH1Kv'fG#;€=F9jQn:ZR/dWWDv0' >Y$eSO6w4-ǫS &3_pn+uu8s[>7KSz}]Xe& En&PE=/e RTVS qH}DUT FSġHJYG@Vk+d2wps}#'<e󵋄dH? eUey>>- 1h>;6JTa˷ػmZ'h]9í|cƽ_gR]1j=M#!r."ۑɬ/w۠ etAtZ?b6{!ZV oy/V&f8E; Z |G-h˃9>iVr]!GNqKX#o22ElfbI*~a8_ =-Lg :n8^nnC';t;g3zh6{ɣ]U)@xux7@weΌi2ޛFTZMGhwE6d>\ œb| /k]~29)b3_t dـ%l2R#JiWPZŴG% gst\V8u!I%^c /yWyj}C> w6dܴ[65[;*V= I/;ư@X|f}?inej(cl ;IAy*tpa%{iqueD8FOd lb@t9RpX={%k4r J;?6fdOoK$m{G޶!n'гy Eswޱ\mVƒ`QqN]`8 Pmjo Qx@T*VJǿ/Ӳ>j*qMn{Pp0rh{~gn{0m8&08}M30i&S(Ey;=u`<`VH_pq?x˱w#k:;+^O.&UGQwOxDFW3ʠ%KU\u ,qiki@*6 @MG~cc5s!ZQ5*8a]=*ul VNk&LT1I"0IxI}XǠ&JaS/ke&}p$͝TB#Ket75vyfZw_7v \H1vV3^Ï3nt %aRk%Ns? '^ T5nϻu?MQw!NOR{nvO)`k3!l玚K_ Lݾ?|H\)o՚^ UmWg\Ð<ێ{5ɔ3> g4[=VOӼ'yShad\OE:7xY*ޡc9yl:ʺѲD~>ǵj$~92jTTQ@@fb B!թ [T5'2wX@@ICL΁ /"?|fOΐW̟tFik^>_NU @>BA= [z!vS5a0~HژloVLEk2Ò6rx=\h9" 㝼~@3a^cB}f7k2?nsU.qۂPȞFTv^"dSbNPzyrO.uzBZSz5C8aw;%x҃iuU6"59%wTjiׁtRQ;J0fJW?UfAp}:@˩y5`<ؕF:܋(fbi^2z_ŀ Ʃrt')eN)ȥ)x5R,~(Lrl: +LIx݃`5dՔ(is7Ǻ=RRxo?/[@.<&w|@|[Q$ Q9&jp)n.$iw=ݾr;ή:8Rl[J8xOp>q[,' ӗ/"g2Q==B,)h]RշЗj)2X`a"_$*ׇ&MN)yJ V2d@O-VZ0 Rߘ&F,O:^ে!lMbǓ ٖ νqqcep"D=Ю3Ƨ8l~eQZ*lPit,eΚ zy-Z4(wU`)L5_K)\w/U:a,5b%j|i9b֣T8 3r};M a! /n?J4Gz 69aE)?.*@2hSnm In-42zvϔo/\Xgac֦bǾ%7Wu'ӿYãrYr@h\ /6Q7p$ɋj]:;7i<,O hnRoib`i\bvI7C*V!`*iw@FLeڤly (NɰiA)9.a,b\+b@mQf*0S]c$^?Uy -DdP!~U,O:p|&PW+6,tʠxŸB Ҏ>dHC8'B^D=7'ik3HzFB=6쭁.2H=y Ri#@ꉤEVS:o9 mVnnVg 'Q0hUu0#{p?̮ 7o+nhA9Ѹ$Ѳ"R{^mBF6T) x(N^h>ˑ4uQ'J~(}3~2 ƃ jPBB>`kDrya1Lѩd,._FDcn̖504@.F_7Wۘ1QftG7ŗ[iE+6CbX?8L6Hb(,yogۉ(Q)b!"P .t;2,}b4y=Wk:|b|^2R,~So[\ڧ[º0{T`xyy1bXEGG*hĉ&f&@r;^aO- @hQ̥'<|i4ʎ7-(!zn {+8 P $cVmSL|N7]uL.?f7W@{1}.xH F7Bo[x_ЃH~/ q? x36=s#+ ʮaab`8 ILZ' O +33%<@Lֆ/%E#t ջϐJ 1ڸ6$ZVN>ߺ@U$9z9{'tBwyoҡ x^Haŋe!2%SXtk*Iϳ l X)6Ih@;-xJ3ϙƯ<rMf,:,I=YWG$c*;VޝJb gޚpa`/{ C}T%'~?Թ!2[$C)"D$:[Cm `fۨx2X3R3u H ;"b0\WNg6MsC\/6C:I׋]3'E+T5u6SԶiFCEmetx3박̰ $ee׺V aCo$U¸qH053dfT4$r&z ) V'ϣI#h23Mc lku=: Y ";cOu!זw?3QHҭqQl14Ǘ n*eIDz |DZN shOMpy;MkEqo'5>I$Jk4t 71cz!8-tzơj`]nz64<$j( M4D sKشWZ|،=6?|&{{-XIB& IS3Zٴ߶ɠ3Ln1>eXw_K2'y縭{!03GfdpkLf7h_fYaM_(lcdzkT^oS+֖6zΟaUyN7~w3U@;d^_/mw釩?-* ހMo!/~q)S z`pj#(_قPKHS5eX)n!?yeJU޻{xHq͛vV9h0-5uVcX>9kFCrp+Րf%܄LfD5XC^^@htSV_\@s) ;[RB1 +.s-0d uœ|fC( 2H.#ͪb驖l/ h,2a38J̕yYbuoh t- ܽc S"kWD9~j Uyd{brj:Ff~9ք.է[ dOIj ׌YFCp {{?bl_C9ԸayKNj vYNYte}^=Lu]{zawⲟ^-KYX4ha~?ȴ#k<-N[;-xA   ?.Fz;q7 6ST(z/0i6,XjSiu᳔'t_OF\/ϙ[c(x"jWC TɄm^q\}$VbKY: Rh~PZMn/uLî ObA"e83:qܓJm2HD]M&%.Z:(Ħ&%1&E' *3zcwwAN;&_J|vE^pై4+(2\,eɔU)JHP x>tdv&pT\ |žVD?/_HzI@=̓ć :`<0NʩINbz+5`+9&ՐTr_˜@*2fRMȿRQ2`ް3N!&* ˼9(Xh>^.bߌ'G8};Y6bkSXy2q%](L]禫09qPvo9wTb kf3Ub ١+jV* &>?h'"Ct|Vh+ZѬ*ױ+^\69rI Ks`тہf?0!Az])t؇rIHQz1C9O(dv_gTvUӑd_F$PM0;*?ϤA߅i\n/l%щtRz+q]kyEx|XCCΜ.I|>gpl,"6CcQp: ӖN%[eO@ƋRv ?IN)T@;Y@ $d]*;xEqT7P<]W C+[ޗ34n9ѢH|(®g5߭:>9>;捘N][2޽Շ%9ݡQ*\yظ_0DX!%?$ +S]-eꢸIk2Z PbR!3鴹>\+m *az*J"V[/kil" EV,Ku(_qTLax30ofia5Hup*-r :ʜ"]Ǯ.z?SV4 qϗ;n.$m@T TA*Њ:P|Dٳ lEL*@NWī0+7];|>=:DuvR1\1*Dݽ j9"T~~nE(}A]ievmbvFuLN >Vhh$-T`g+J[bط, 1)>{cVJr <ªiP%.FfLUlw}3C[,exIˮ{{ހKīu'?{V/ ?ax/ ř -ו{0FM:Vb0eP%dnxAU_گpHW p=F`䥕l:BrJWIU}ъv#P3\amx͂fuշ+= 3Iz$^<] R?>Ü,ʱ.1%_\N(v!,!tn<( p`8c&^=Vg5|30@&}EO>gб@o_DMc'"O NӎP//[q}N*CUaǔ~ Z XՏu'<_CV絖~4f$@Қ,%w -ڟT%(1#bB,[0j5W'vAXޣ:mI/c$K-fy_|֘'p/K&{r^`5ҼcLKh L~ùYrҊ4z fsKS_jp|Gٴwc_=pH;3" lQN[D׀P<"ǽgȜŘн7cCGMz-;Xz)y |X L}}5f{uX|Շ:ó~D^&4 ϸ!~̍kƍ7OIJk{Np+|ŵ-α3틲5Y6ys߀mozg<Z5o>v"AfB{q ]* Tmu<}If>;W#XÀDT!lx%"(;:m.r ;0 ϗ=>ǷoOD5v{d^Y[s͵OU0y%O;pADg{UUS{I%۱BS;??y`l*nU_0x8hRM܂5M`Kto^Za/n{^vB} xF1#:*b-uFZM-=$Oh1*܉v^ݩA[o|t">~u#(tTw oGL逿o([-dF 7){vVz=zEΖYX^ހ?C&q>9/|ɑՀ?tB zXO;C 6s@_;)a"޷޿^iM|ܦ[rNu 0_&w_E븦G'dj2eF? 'TbxK~Wn^L-5,͇R#B|yD~#4˴Ĭ02*mo&Pj oP;{Z.'):%RȅV+{9@۳vvjpkfl!#,RtB ؈HE'#'1V R)R JDڼ+8L.U}VJ>u7JӑT5,^3٘izz\"iWoIH>Q&*z\kyM8E8ɦ_l/EΒ˞O✾4iV|Ur\! `IrN``\u齤a3&HI\$Hf8J͕d==G&؍B9vD,*yRoh@ &GdWuZGm܋% gQi~zk8ǀ9ueD7OPZIZ j|7׽rx-,Ӈ9!836 ݥsDI+`֜ HOS\!S*+רw #>OqaLҲ0oX ˆpL½G)]J._;K/͡n (q=Y"X (Zew@.{clޣ֩/Ǒ$1{ZYm \F YW˒~E\CtvH:q/6VT+ %K/&뮣}ై<ċµlkVU[՛_uلPv(J8oB|]x||3/QZQvM 5kʚnUgsIʄ5u ZGkG ِ?%Zb%+:Sܫ,0̽|~ &Cv9?U>EJ^M[0eć(.0vz} xPJ]SE5l곰_rH 8'A!;+9q9|B( 69#P$xHOYq5䥩iM챡Nmh=JAck&%)|* 9 jw Qj BK:VxPbh\}^^Qϴ7_کyrV "^[54g/K@d [$*bXZ$W?dJB.ÕZ%W={~5bTᆑ'?qovFĞlw)ՉuMkA 00\U6 N܍JZfaieTCpj! fbC3ʜ+j%qTN\{ 70u٫K_ 1`gD0Հ݄y(|qBtq6~-TKmQ6W/4#b1c>QaW^A7TwYks5>8l:0FӊnyXG@h2k%@cE <)6 2U9}$r_-4'Ay8Oo AgaaėfFkY_rY5% @j?9vuOU`?u:=UV0m3r}2s1r298zTGkݿT6u*ުPdҙJ * YO2voqi_>$ѻ7ui"\'",+m} 5Ͻ_x [5z~/wSyMc<85_BʀsYs,Ō-+:jFbۂtDvOWz%uQwwT2Itb4ۓa,]uFpf[K[VSYJ@}{D Z~%LwaHX.s[.Lҷ(k#{)IzB 8x_R;t]^ :nsۺCI+ݯZѐn4JlAGϐ")9zPRle+r?ᅋ>J"c oyJrr#"&FJ"ԟe VFS6#os}lh Ԝxe8wϺtkQL(&+y(ɠ l=vϖd[ϐ_qn@뗶x=PGYУхg.@j/;{BOwln%߮)@'Y 6K)4L>|գ iX&wMTAvNqzJWwDdF@N.՛QɴPf_K^ZVsag()Ԅ8w!rY<1S1?@hp@w^ќF.~nv$ox:KJx`va}>/i!x fɨ ŞqXZ_c3 am ș]F&Q賜OM,niJ^ur?)wEq(!|6x8w\v1jf)##&|2v7YY$<Sw,q('n48ИT쁚<J_gY/%=ZD ud-?H1^5Y60 7P_Ʀ Vj-5CʥQ ŀ, 9ΐ̈:+TFfόGc\3C@hg-*%IׅLe!uygwy `~^=Ca8(Eg (`2+EOX_ve]XQ*Ҳo#1 F$[?@68=1yҚ+Jw_t<^;y\sR{I>&1.,J2JPn10¯*pH,Y/O3FIz̻64tkRq{\ |חZp4FJ0K/+l#|}_2 ju rzMK@[)䪨zM6[,g+3E) i\cm=#ޜd9YU*ev܋=2PBp3K4-/vsTQRµm5Cz z>w% ?LUX3!0 ,3ɡ=5̄A0K22i+=6!)Y\pRcSu +BVmpu7M+qq$H0u3Bx<"UQXe۠h8pĴ̀xHMf9K^jYC o#3XÅ!T|q8,]oQ gq)2)DR2- $Ƨ]HFOav޽ (!iHb ,'M# ,Pz *;cL0z,p{թ+a1qy,E0=iP6qxv!x蒫RW.cɷҳQ5%i|͜^vI7A5̨:W~ݪ<ƠJ>yu󜦞ãiQKC,MFys٬\@˜dxVzLܞxᄒ[0#qxw>}>ڸpLDbd"@QסPS-fRşIOɔ';LIdē1?Bl5$>iÑJQgGG`j{Ocg, v.g|%Z r!,ڋmm:籑*f npًD=-y]6u/6yMJF]Gы"?lVݷQ3N8I )*MY?W?`*/B6HfR#I_)3l wl@wgK@~gA|`iú~e^ߕ:(\s2v: W)>aU U 񽿁Wxe^#Gy+q6o׳nS%*y xqA$ʹ]e aDxeV",DID *  NӻDiu OC1(n.rBiokhT 'ݢQʕl~Ǘ^d3ʬh~L4Dw-!ynw f}fRd%lֹ_2"qq,\9b>> `cb3N ИވўN`+*iJ+^n*"ӂZWHUX WqnT}Fl? _K*,d k RJ" 62~\M0C޹]{RK2-v:1Eo5`wju_!\ _o̽NZ.iJv/")B:=(_ڛw*o3{($2!΁lT)7l#?4&–OӤ8c)Z}\ t~;L|IuE<`d,%4Qey(9 PL'm#JF*pl>ӲbD^'Cp%)X#֎F+QYd^Hvɖ yӖaME'T֭]lڢ 8r>QMV 6V]-Ɩ37Q!h6Yl3K..zq#VI_6&C(+iM{> $(e 5婐VDڢ Ak4^[DջqQ*8.ɡ3ʽLGK_NF0M,b .akT'GXxxݠsN 8[ [7mG5w4y'Qww4Jk3 =/__Fz@=)#Fqre4M"׼Cpa'S1Kx) LܪO_|(ϵf;t=Xa6T $S6*ըY #w0|v klnԳUٝ$=E76_|{ Y_ hvȏ0'\=$R 1؞BLZYI7Pz*5q!DUok['t4)J."aM oKQVЊ,*Q-lUR$7j"; RQVɨT7KFCe?_m&#0ՙMy{|1$|kC;b޵c}[bFl:dv iT?_> &hcV1= 39,6gPoZ~؛ݨy֪gJ q/O%iݍXHziTپ6qST^q"igEKv *P^(Wn~uXrPy-g`,{C[bS}{PbW9ZIsz7wQc=Sȡ*=`4%{ Ș-_U bfz _v$]a z7O3ד&,s9P YaWgJ/yn鮕=$DsnX)¾Ժr?eo ˑKnIiYdžۄN:GNgF'=XXGׁj1*pqEb)LKr"73w3f 5# >yh-T2gԓӈMK,&D-mcNkpI/@Ff(vޘ6~v:/ `Hđ$=D3 ƂS!}±R:Q1V^5g6E&{ Ĥ7L넉 M L'ivO[(@IF Ca;¾K/D"#1(,ҵtv3ur"?F)TuBZ9zh ͝/~& $BPDZfP*VqH$J ;]P A{j{=yA <1eAlg<TAs_-׆|Q!P TH3u++AechJ,v-%Qj8lbgSH9hO%Sp:t+`UǎU@IQ߃%IV4'J]HShvU^vIKMln-ƌ6^Z!|ѱkN+:Q9L8 I5V I4j  G=|RV3LuKn0pj0L\U!5X6׺)mߞS Ma"Yv&mf#Uf̛FQ\0I;>a$%.Jl-a"&miZ@ ,`2uWQ7+pK1 -hF DU  22tOstB.ZT'/qM"~~ H@=фwJ$ȎN;%ݷ=kSEDԟm[*vh+ds[E%RI6$/Å,63 Ii5٣kmܾr9yK 4؊"[ ۗot@]kީ?UKJv^3}eׅq ~pxg}m?Ii)VmE{~|Qޝ˪Iͮbգ苍Btb<)vkt A!zT-R?9&U[7o#A/& W\Y1t /(flӱW뮿3omAEnO< v2"lB=Tc$$3@7*2A-EwP/lq-F?։|Z=+[ݱ:X;K+vTC=vmѝg{K\5OfUʆm>rl!exʦ%u4'P;%%U .uٻ[<}3E~VMd0UeSKQ+߁1{j}5'TBYJ#)|)h#5o(\I)p&x8>bo΄kۋ~fWZ&VudE@wokf6f{gz4Q۰wOz>{H?M} u;]xH<$|M g"".?:&bя". m;~01#iGVl+B ,$f>zM@e2=/~m_cZ6m7TDfuXWS^ lz*L x] w4ԟѺO5A0ɸj62ζk !n Uw$|Bႋ9_/+yNc_\yNTZuʕi~S 9f&$81۹Jq}էjt0Ę98ĠR1ZZOS1H1m_rէ"j#FGĜwDacM}mVK?umk ڄ5|Fk޵΢@eC3Wh7.07xV6}iL mGZ-`Tl.ك2$Hf.kݾ]S^s~"Ɓ̿YH<nf]>oē*ѫ̖`gX zuֵ*w #^|>QL0vGFZWu;Gf][Gb&̬䫷EYWj_޷"ǴT栅9z"ya'6n晧 }4_QEgg3'$3&٩Db"0ꠍ.'Q U&kqB`,%b\ܐQ\]~5©7_ypKլ{sO8oT Ӫ-~7w\'":7,NFtguCB4Xե+3` xtˊ`gV,,x MW\ L_)W^﫻+~:/!ġm) v RÍD9Nh'cеPb%PoE?F8W9hYEt.kβyNfn)lR؈i{j`' :2`e$3!' ^ yia0'lwVhB۫o3a% ]c' [_pR4 3-Rol]wD ̐{ʫU5 eL?r@f8eNڵolSd&[٤RHYg-TAnBS |±M.AwMe; c7v=ȟ/>8Y23);gTaTjhK<@ACD(0K(U0[Lw /Rr^x؆2;R!^':Wjq⊫^ø.ΫhV @`8rz,ȧ58q6n&`o9"@=Q&XŔ]p[IBЖ:Vq[MfHr4)pSh_= WIM+nXL摗<&%yɞ,ia0 u[299 ؂֎d5k5A U)`В N43 Ŵ(g"s :#oXx ;DOƚ%_oRS_}w>UfəMnfnəfuq-DDc\hx&t5rqjcb 'ߌ/xeGk2ddq#/d7l>s-WԟtTn~0 kU{tZck[֔ ]IT^XIpFLuflqVR6:YB[0x@He$W/ή3cM=a$uAYUwu@`cT[!nqTVN`%M[ܓIvzs`x!gn]קۮ\; XܹkCn$%!jb[MnT/(Bަ=a6HBѳяXPIDžyb-k!YbzR5+P|*hHG@ 8VVann{M˜bR1%s@գf QE}*'vUfoPY44v:U%҉!%Lk1LކXkˠf cBɘSĬκ.Y.NmHZ)^`RBuR$@j ѫ%`~)d}mg(r`*e41^F APRTS~=~IaA{Ȼiju/siZ#W$ܑv$tC9]+vR=Y'bp!:IM8|=k6o'fˡuuYp|>Ӥ [8l&JR#t/}ՓLLCS}+f0l3ZQ4P@y0-h}ROYJNZ9%%Cަ%N TNCq'Y(_9% Db}X:^v=RAI7)ƨ ,ޕ<Ђ hل@#}JbW# -7,Ya'wk`BK7םrꫝ3!(Iʨ,3Q+,@hc7k/2 .Um$iuPt:\4'x2V`K јz4Mm9eIS1e:cڥ4q[gWl: AYQ Okp#n{Ũ쏻x7GD\x[-g-d9 H0zeOdYd0Ig0(rQߵM"\wz~)U U\Y #͉)~E+(A7 /Cu=#Grr7Nq|*hSi/(PxbP T`wß$I0-I5'_A F1ZodE .R 2[u BxgBxSa5O^=~Ͼ 0^m3UHȧ9@4 =Ǐ#Gj2U[g逛o](@v_[{nuC2\L>y zоB>5 C M 4ʽ}wnyEq9`;'ji;qqz|_fP92 8 Nf)aWņ+א5V >=eلD~ͻTT:<Ү, ~I2|.̌MGSHs 0hCN@aL1+~ƫ{!Eh~p 4;6$#c/QЃMcD7 /su{~>CN %D+b0'OZe`2]ys[sp &edPdvU R3' ,-syhknVTVyPq]طLo}QtfD `$YV9/_]T56hO:f\xk:G5 V$$ <[G h"Op(/,)r.L|R&JT?}1-,|#Bc T՟bQOoU{o}5V' j!S ř̻{}_4^I,IAQ͇d[hk@^e<+$.n_;C`?^`Sz^e");&_Wf`po4Q0Yw WS/`)}_$E@ԒCM1F3%551] zY}<>x2@;us/f4| R|(8v SAs B;nM{F=?#X'ZJ!%VBf8! 48grvaz[_<1AU w?l00gjJ1"5xcOt$hzfx{Z ai<4bh~.Z I~( Cި~LSۛᤄ=!4ko_.Y YLTf+ B;]Q: kk!mz:h.4lWܱ\R+>j2'CZlj&nSgJ֒T*ـz #o%K]?҃xbIf,陔8dT"& u.oHmn35ۂϐlelV1 ɰr<^-R7Q=C687 +Ӕ՛X7ҠӠ.Ӛ\,+dV2Z|<8ɯN]n" !40֖>Gfr*>MduJ;4U|zKƼeL's|N]-0Ba[VNӯUtTk;hoxKJ;tVA, WKO[ [(q]BZ6jEvUo8~bܮ>OĺN9B{< }36 Tutm:S8u_2sb-hWtf9?!} SnUK ᩁx~6i{# rN~nVt_p!Fᇖ *:٤(chU+jU}|]&wr"*+.?L_2S5W ̘dޡZtd/֟!W#uYiؐg  S9cFe Yq))X7 v%|c7ՋcVUܑ#he> $a_ʼnYH7a6D_tMmӋ[uQ(u?'K}~#|K_, kCb~S4c~ /9Mzqbݫ}V>DFky HxMZ2PWy\xt4ImM+ϡ#R-j7J%'aǭ=L({Hzl깼n3ϗT<4/$oM<;Cl=(~=Y@wDݍ#4?TsΑXkV0ZZ'D֕Սj!?[3h+)63[ xxwn-ᬆ>m5 D:ƺE#xK+f"6RPtodꢌC[eݦ/om2Z4@CZ֕ӡl%tW{c{%o՜\\oxkn45o-l՞%Q=^~90{y)0 z,{%5*^&^Hyxi,D<ɬ=@{-{#]̀ixK * Xf{2l,7 C0 b'--` >`ga Ʀ0+P`R)PO%mߴ1mdy=jO<а>RcJ\.,3zNى7RZl[}WϪױuۖc>;AP7.oɁ^oOQb/bPIEq*YiK@`|j zMQ%YGxS}TiCNHv۵KDHov l"Ȥ FƝD,b)Y)I:.\D)2(or.rD%eڪh hc( *$"rrpcQ̆踰Lg K"nM``v2YR(iUqo@nj0;F5IGl3ձՊnhǨL ʭsYY:,oZ=y<\0뚦Δo ޾2rݻ5g;ۡvmj':BO 5Qli (&Ґ #-7DҸ?͍y$WORrKǚh\\^M@hm?YMGF\ois׋HbbiC ltr*g?n'Ύv䵙<}UGHP4Om `2L/&*ZJjRP\fo]b -k(%%2\ r`šBޮyh<-p^J2{Rv*'6eG`|hqX-:Nf ,3&kڏeݟy{V@{1O>u_9֩7F/ ԛuAg>ޣZ 01+7{ Oߟ}}ȀTCJmCCAֺ #FV q. n>͑cTcbэhpr%5;E+ԉVslbrpMBnggE}nJz],46 l{%% ঴ֆmv%}/.r?#WHQRzNZb{ɢ:8KwE喻)gL%O֣4Q ,gWl`LJw nĘ6k6O:;O$`-4q}(2< -![rg?+zGd{-=ؚrT$KTs8c{{V"IEjF 7zNcFW4@l퀴!P ,~>7@{ecoGыp=2Dg_-zY368Jʼn} D eY8w_wS## w-tiڟ^ 7]5P .ͩ:bɜP!߯޳mؚN,G?IQ 5ApQMcc#x*8J(Œ3C?4vrk A$T EVc$ Bw(Mק((lnkqLQ8ay]A~i3\ۧэ^tr b:&k𝟭T) HIUxnwbMo6Yʼ/FQ39N BC1>\6ݙ;_,P#Ky~@Lk7ᅵKH_3g$|J5H24DKWLM &TʫLُ ^ G%0ʱHUP6L!/Ҁձ6{Q4~g ?B 4g7@cq)Ѷd (xɥH!@v1Rn,f 5_n0LPe97 k0(K;@3V<7*'$cU~8gal,]0)#s'֬:uīĹXѮsBi*|(|W.h t~ kB3#~*s/ƥcld͂/lϞEql}8G]Bs{K*EeGc1;eɱR禦E+aL0[uR!Z1WtmJOGśGhAdrRU_6o] S} zeޢÔ,#[:mWxy ]/NBwxu@,UԵbޤך<8L &H BA}tmźɇp%gaRC ^l 9ZufPLt/\{+D3=f^AVSّZ`F󌎥+,Wcd yh-wsCW1>>C g5 ?&'x1M {wsCdw)ӓhC)*V }ӍX]sm.e^_ݵ`0Bwsnv ;|LG{BIm|:s@\-8R-ɋE6УMk\;X'"^ʹ9Pw-;rdL.&?cugLض!V>9f@N#vA0kL&'plH; \r뎙,qwS;/Vn*G2t7`rB`/(c3>^R!*B3EX9¨-m;1W:t@DsJVP (覜#jТ-Ғ~K屏wnINvY AcL|hQ'-'d4/܄䳺e$y M;,Q 8 'Hz^CrL+KoA jwDĥXD׹KR eiV̢Dk~⩴ENVhÚzv3ƒ__͙ ~;uixZq 9]=@ZY> EHwЎ6-WjqU?- < U8Y\b(|nGx~U |s;&L"w@}HWTr.J)vE?b P=?F}5 {{~7⾺>e`jsw t^Jg\ͩQ45>8g6պQ˪ߴ8G>\yZrò`E{}xؽi+ϸG 9-S-B\Aiq[BRKV?PdJzw7}ϼ;o~L~ʞ4-Ay}_OVa+c:Z):&??֒U gٟeI8]-}n Gg?a{}6oP=p|<_kdY{\xv.ڹ.D7wm]a)92% MA "*u%=U"x3zky6RCΆu6 &Sr9I~)a(&FRHy$jR9@!df) `͗EVCC \vy! )iUtD.w$nM!_"rڔrRu`̻3$Ƀ t9EX IΕ-eϦO-]X8E<\uLAqYaWRղi X{ӏŎAi l݁#]=)| o?q;^8"R!!xpR%(YXsvCW!3%34vLD$fV#₴,nkj z˒vdzsFiSdE0x1YnC TRs]]~i4?~DVJ{|ArBa !̽M=~a(?/'(Xދ'_wŚDu4ΛsdQw<};Oċ9S+4e[0/b&?{ՈyCGh >5a {)|/}權Nk>ZеG Ku*Q9]kjT6C ) PL$;@4~ULO}vCݩm,tV4򣁸L: >6xL|xn(m0b5n"328'iWoWX~b_O9֕ˑCFt(p./VK LTaO^w#t(r+hv$TId0{~E&8b1"Ms{܄ORϮtNGuQa=Lї_xx$ 7K.3Yw-0пWX,L  l - ǎ)5{~i+GGv;woxi翥ʕ`99Ոeua)b,zKye(ClR(ߙ'/M[}+12 M:`u1FE̵'e0ll dխOq{P8fALB\N:SNz]tZw,(fqJVU3)9*EQ:Աb fl̘H&3c*Qϒ1B8wo^sΰU@-Jcu C m|LТVOcGjtx#pӈ٥ Ԏ v˯P'=T akP|̌ |ו\͚5,RSG˜N+ö#jKfA+"N8oێ=bW8IdbT(Kv GGPEL=$jΘᶮMԠ8lV &@ƺmO8(n=J ͩ$M)b0L +{8UT?c+%$RD@hTHO?E7$5eō:BԻ|5ahԟHhZ`FfX=h9%= tțXN+8\f}¢ܱ5]i+X• lg=d7#Xq5{iЬAN²r펈9q>ϖ!pysv!zDt/aƺ%F5 ,Qxg /~l|}Y`ona1wEa+ZTţ#pTՓ{wttY} Nz?@<I& s> ǖwyƐ5;Ƭ K}S;eܸY/[Ԃj7KkQS]A>+̔qVqMnQ=И7#\Uɺ6gu i[QW>CwOXot!vVs1\r?+I ϫadKi'rOx82RG1˞Âx汙-(*E%;֮5a{vH@EV;]XKQliQ^N|9Ðv'&IY_Z4Mo6Yv铚Cr0ov#떴_m7"-+M0 1 @ŠWiJʧk+@myԆ/ϕ`0>pu8%0x\ J42Y{y>pL y]}v54ɽE!\ vS q2G9 Oa&^jJT E{7dRS^,+iS23|_,>;p?2_skqRG:;,ֲ0@ y|qŚp&^`.q" s Ǖ)v Q> BI͜0`/e3ždm+gs7\hb#^Bu_4矊?~_R;Cԙ|h ==ؠj{$d 4[9+toRPDǒ!)-+uǚOT霒0L[?]M3&d-܄-ǿCҫw!"nV=.ۛy~LL33c0\0 VX@$XD#U{Ji $*4E1nMW Xh+e8<0g,y:"0ޜ n?5;]3;5x)i=p`\?]vɣ+ĥባL\%+.2sDuxcرR0~0+*_|T*U 9$:8K*_ed>")>9쉩d LpGUg7Տh!ů G&:[gCT3`WOQ/eFT1dp'ؕ';fxc~/co@ᢧ TbɡK$!dCN T"%֪&Mph'n)'-n#6Ѩ\\|G:a8 3aH#!C}z,䴂*эZcuށR1Tz-iĸk#WO0U샩Fi FA#kHg">UO KY~<]GЗ@90| 3gtKlzR 8v0sݬ_UFWeĽ0[w`?g.Lڭھ;᧧aGKBre)WbEWޫ b G9P7Yň' 4ce[D] ^֓$E@x3-d/:*w,4E7noۖ|S IvDXߐP|oƎ>ȘI$227GB>]*:&ّ\?G*fr}9NJ'#dN 7F+QAPYƕqH4_kԑ_75t LaߌT9s@; oK77ˆK:닣C&9P'޶d3e"@XZ]b)} yᦥWwϕL1]U^. 8;Jx*wp";D9Iv u1ZM<͍1޹UϜq>Ù]Jǿ$&<8{^xwaa 9sޯ9#hfq=UGt=eNN.%y_(*/_}1Fܯ~;&Yb͡)VмgiTPcW۪z3B$}oU4dm9^2nφn"$ܮ.9ƟA{P&{vtoqՄzcǿ;O"*? T[)]}'?C6 òS<#B=Gy%m MW|A2p7lPNsCCێ$5 zP̷:>zoMNt'b ?R?j~DS[\&ҹɉĈéS2+6׭!ԸY&ZZq)Όc%'LEFPs a-,% \KߝA)3AR쪯]meXký<7:p7q; n9%ݸE87eKw} =ozKb4\rUENac\X@,93)R7-W*a5'TɆ2y@|L7e#wW]0y LH0qT5xps!&ߡ x@<UYbj%XJ쁲ecq\葬BHaՠGHCXfg=ZD %NyG=\Pu΃ղͱYh?9(rB0(Jۚ@ gsRaFY) "͡~X#`16Ltwz-;-eИ]MXXG}Q)^'4=[mah{="zM2g&ʺ FD\ )'', !U(gCf)xfcgUx/DB.P"VhsT~cA$@7n:-!]ަ*yo*uXdV2ƘZzP_0P׋nl 2>_8893[9gv+jzE#O=O⩞^_ۣkTlT4x-K 좹UOZݣ 1БmoDj,3i:xhgoӈ|'rןM:o (Vn\#ݏ:| V/lk"`N=P?4ۀe;f{ĵ#?.[#@Nm16l/%tCB H~zs^I"bes&*FCuLc1u4FZu\2_4 XKu&ZSy$cc=iPeNWGO2nn} FNFPBJxc\>vmDm U%Zzѫ$P=49[lHRoۗs_d}3o!4/Pfﲅ+G^%` pN 2Wn7$@p҂i_:+˄VvDP!pilJQ\iz2)({JNչEDv1؟4(Ȕh4䀎L-Od] 2G`PZ1/?l VQ@/jIڄx-&8o)*eZvz">TO\yq*V"/O:GZ\Ct`h6K?UR"݄[#m$Ӣzl':l8~ѠBfG^G/#jM%+,WLJ ^>j[dPx6XTx|l!ߡ[s[ :uq0:(zdj1,#\dwOb#]ODCLdưMP^36T&xGt03殧"r%Eo0Rx84bc.~t*ukrM߁ޙXO冺mc * 2F̝e(s|蘍jbtV'y595Nt&3"3wx<9)=gB+ԧn虛FSLw3sH[=1lL76(Т%qU4(`c!}@e,,\ }Gj.w^ߒ7>@Ũ۫#ko\_zf܂ُ7DLL Y"?)V,,l5AM!\$2.S ;Dajqӗ^!N3]P|O*]&*Y"B`[dc*t;fp(P9ᤰ3~/"<7`SˍnuBf,TA) fʮ nB W< "۶UDv0xG:8P|! 菏?Z2[o_*~(޲E fATxvչ @Pf'%:qXLR>c]B@Ig?3AnJg n>̂mLD:l)@-{*. ݧx'ia&~jv%a"b h=sb'>RgE[A 9ǁw zva&2"mvp}U e:hKgMr`M8`Su{)z! MFDn]+eNh)Y21m wRtۿ{nQ'ZF %i^_TJ|Jag%_/2L%p%>f& 3=⻦inL~ "΂0Q>SUqen` >fӱI`9-:ӭht mkb~ d.=Q)aN sV{5|z"kDJiD iAH&\ x攒Xc+_z]%c v1<9)F 7ʗ NXMv81(* c" z'ś-8P_87 SJ$"،$=3ʓ t;O'BAQ%%8w8?>HE,L0)3*@E`-T_Q/Y4c+&jp*ƜcDPnWJ gzj]q3G+UWw>?'-v42kuxl˲FR])<QAjTzWfHMaF4/jńY+N%9o:|y 6u#@+b(pbeu;*3OKCnQK;,b[hVw vHox7}c^T?#_K>)Ա;%XWܯ'}MD1r;gH|NFRa+_I˃_w ÙL1ʟC%9?{@őyqk" γk܎:<}aW<ʼvhcGZŌ_4X*ȟK\_&h//'fκfz,Pu(z6PKBzfl(*QkVa__ةͯnȦݐb#YP5߿H$.馤^rY9hau@i1Y"#վAcL5܍GTb0?uz[|퍥ytUO`pz-.kqXEձy4?yox4)(? JuAZw#p:Xltgrw-.`gq!(vR]#?`shCer.()Da#5S(n5Dm ;]xXuJ݁K4EwѐI_%^C80ì1%N~4s N)Z2T} ycezB|pG?Z) ؓz3~Sy*z8"zg;LC6[DDҮuvsP\4R-BwN鲔zA[AGUi0 5{R:ʧ;Б`b XwT:߭%Sd$,H D–ꟶ[bi|t5gЯn >"J䳙<:b]PvR#܋s#c э9$4 0Ie|qDdh|8(oYtsݪ$ p`@1/y}wӉiO=@rXiTTF% <9fH?oWV T~h激?C.46qp9Z:۴ƴ+30"*2M!'}9a&M)9ަm]opt !hFicܓ5#N4E+e;3[GokP߽ ^/6Txڧ{u5yscQ=Qq7f@>)E U TG n\H/DR?F1)UtM!BC7`ᯚF[h`&$#ȇ>}+灲*ͧԜܯ! WWT>ޭD Yy@k>TBu_MxK$prVX0[ @;aպ<ִbkj>ݝ%4jViSF9v3ryVʓ#:rc nЇw F*Nj/br q &tH8&.~,aJ78[C}|3`ᘞ屫WyYPay2嶬̦9cqB RaY0BZKU>6 P d_ BM/ =k>=B0gg8pK_0F*(F jeni$O.X-VJܘϱ0p^uo]K=(OflW/x^Wpl%iYUJ?vys)0׺ F1)4݇?`Ё(Ƈk23hgyc#-rApw7Aohי뿞\SO"+<#iG/Mn[/=oI ɜF=E4Xj ,w  i;mux=/ [ 9G1GG&Y/o3sA`7ĿƖpa!!JoE8܂Vs/tRfF}os\׽sYhda. f K@}O4{sm*bPMH)*I'<]a'+ycΣ/TYY86uxsmfLY&9o#wEC/هgtt/_tFWi낋iIit#UVYN9=+PҚ@f;,C3{$uqwn9J-'hN4&CphJW[bX4 jRҫӫNX^ݹx:}iNfOMlj2gQH=E^?æ qҞFF[*zW [m$R\7A| Ӡt yXV N(bY{ MY8y)"nXpkP78h 6(x l(OGNۦ N2mA3{&gGN/kSOA#!omyݪ t9kޤH }R+W`5aH+Txf7Q9rc(k!S){)RMЍJ*--[d橇 ky/*ɛK/=,g:K&͝BSyeĴ:b-!͐lM.[D}YfWYJA1X6wPG㓎9I@Ѥ(Q\|"|<*.tB-ñKy௽#=cua=AG)oR20\" C]n̈nr۠ZgwPhZ&-K"\ӥrȔ5{G2qW6Phf/A_E?Aߎ#D9h2[IU9=`ZYrMױ ]-ξhL9߼07՚1gIhǛT9xӯpDA5yAQIFF-٭=caTȸMn"Fu13όw4;*|4G<o"b`7 !l&$J9M8?਴Ypq@Nx'Y3IˆF8-DC* M;e]gJ~u{ȶAo*Puָ z>17?]9eq=,XKWW*X9tO*kGcC!Navb%lWP"#|, r?JA L0^zmRvN)0oA0mzaFE~H&oV1J'YiHf0rg< @ȁriYkh1i>|TB0m`Q^[9m$T?TyŢuKb _Wef}L ;/|g6K1. #YA$%媱l#I]MAxQ_tѰW,&X_zQC^ s[{?wҬef 3F}&33 tn+X&[(O9ˁ?ׯUBO/??g4q^9㜁wMI+^NsU)cg˩2.|Yt%~9pB)7]{51V+aw+fP_eǪQ_-Japa'ڳݹc%B@kS>![u5ř(K1bes<`dHgo8-nݜ=ޖl'/L[W瓃ȱ\٨ ڪJ72@}.!Ϳn>7tK,YOafz8{lsjoY3Q4ZД__:O IUm)EVu 5"{29' (!c)եZo?; +- w)+ꛒe>upR/o!y;A*! /K =&hkZ\|HpD w ٔ<fьz|j&^mP"*| H@Kh6ueTBhU!<_0^5r[pSqc"j\ucKn?j,3VX ڤW%1ji0z^SP㵱h~3/ђs(shD 5 QCd*ˑ>1Yʛܵ⥴_ 5G;ұ#_p %I[o]LnIVlS%Ls%غ>\'Ezdo02 tcȴYGO\ 8,B_n|_@8zq))-yo"alyO=-QMV\'s{{+bm4+(0+*9X'kzVFUzB]Lr߷p!y[!nU;sLȭ=uf ?$)+ofB͒\pg8UBQ89''@ƷSS -[}$zqлYd]=qoG.c+ GrbT*}Ű_6Mg1yUk!jߓ[V)rٗ]G1"WBF{̹R hVY2pf+dR'_:=M}<hp[Lxl%]땡Tש1]gFtU,JaFj 9jR(G"vօ-~$BՍt-߾ꪦw?+ӭ'}ܭqbF(:"$XozKLcà 7iӌ=<AKcOߗz< E8C6S"U,k u 28un;)KuKвi|Pl|ޓgkK% IvYIvOswsKwUNK]U672^W{@'d LP q7b7-q \ItCHo2y瘎e&. : 1Ca4W6  3u8Nc8@F$qP p,S8Nؾ`d8aZPŶ ڰ\Ci[&[})RqgyjmAҪ>DVK(AY(386G>x0~疼}HZ*` qL\b3G>!xGa|/`2 m=J[ p Vni@dƵ#%`mTvc\N&Ie/XF Ph>bw'ETa}Yx!h'uYŰ[Bu` ~IiN(~8񽵃+1ǥPC bM赴- \Ǫ.JhbN t%7r,fgo1c!ɷ{570ƥHS{<#sA#x4;<,mivi;Z;cw8ueŧ ,z8<~Pҭuw3 -- 3R:z[qvtь\~3FzӖa4MXSlm,=K}L5NK~}#gr? b1_Mf`S3_`K}]GwPA}RCOUEI'o dwfv5R @^ Dm4(E'A ;mP;tߊ^`]ƼzBUciݘ[RSLNc6e3 9tGjҢ:h Փgu+[RX`̿GH5X ^2/ XU0!, 2fV3=$^v]^rϿP.Voš8j ;\WvR-Qky2L^qAC=bxJdvI*Enɽ|>w74=&IOhbvm(¯`nN4'Y( '܃\U";VUG~9tWs0[[nR̟A%C-̟~qiR~]p\~7##VUBA-.i}O0 PdE!ȡoν؀z*$tR LobF74}Z6_Po#-yN^o)y8ήty+ fb{E65@G ˅ބ~Dca[֥K >M?$#b1,ު}^iӛӀ43[G lp–9g6efą#ަoVyHgG ̺@ŚOd*ʴ-d+G}8][r/B|g-" 13}uk$3=m}O@~Tp%pf=.}IyӚ"!NעB䨤ۋB > 72{Ci-2Tٹ^<]YyؽxeqUe}9UšG?ɡpyz2ԏ=UJ<\weqLnddܺ gIJɫ8A/jvb=Rch 7|WTIAb2鐪xQ ~dIɤwT%ċ̒' rVS6aYM5?JzU=Z1~H`pAS`AH1ӍMl2IgKaf>~4lYLJ@4G~BYXߛǤ^ q `8Ia.{JeP#X_tHj/w h$G6/T_$cJ}w2O"S@}}@%bO8Tj8nk6 ҺNz?is2'A:.hwG񋡥~ *o$_[q{#%})@OH:dBه''N<(X `'d!Nr"~| *x|ո2[d\*.}掟,.GIv{!|~l$b x.8-NLY q"8tXIEPC%G]w̹,54UO(ѪN4D;(=[=t(E`t٦+/t\1PlzyЩ%S< )r8+qQ>d9e4,B{DU :67KQrX`ZxQ] Eԝ<V~g!緱Xg3_Ƶylyٵ9H7i;8%f_G̬n$ *(ISXR~~bE:ZH[ڔ+C8e~"1񈪔d' 49qFLKsQ|RH&me%xH3ˮ]<|s/L,zGBsiUbzr'$Kbu:H$xC˘uL9+DyW]{hf ~rR>G#)?ΕQݧ ~e]'P(Us5tܐ(u)RaŔ>_9듾ԈMcYP$eXYR{O`O_^9N_ĬR,R/,Mޡy,ق7^zǹn2O Ql#!-:t+˨a<"Tli5`y\w+% /ݎ &Rh5e^h]gEiԔm zX)19asOPĚrԬ%5%҂X,!Q@(rkmXg埛IUW|6}Zaiq>П}* ٗ!a"Dn=K+ 69dJ|_# r+y9Zrr9.Ě4_#eC"cRpHv-5]&"_IkTYl'xI\wv#o=`0b]ȑFɇ  Ӑ' Z~ J~ѶήxxA.;AeL~ȎZ"&ckq'x֧7%ȐG ]RM*0+c׌%4h^D؃ܓ| -wCf=B N<5udK| gExwɽXV/!貸xTMݬ(7@?0qzڸvB tb#7pcXM%]׀.3T &,s$38P ^HZMuNG{^R}x^__ v:[rP㚠Ѩ ݌ߔ/57\Z*BN&@e(ǡWm (N\g+;bC&'j@iA!X8!%6QhnV~.fXbUBAso$OF:)ZPOʁ(}#~giA ZI' F[S4up#eLC4 o2ˋs ϸRii|gʎ #$uqbA3֞i_nl!s2"hXD?f^%$Ӓi[&ji6'NxN3+Goؼ\bӜmfY"-'f'? 2thC<Х  E*wlǑ 3A=闻(DH7],G9 R他!UlZ -RƻSvTJMd%E]x/fD7A Hu) o RQ5ʽd.-d" )&* ЭDJgtLy>i& ~eqId<qoG9jަC[UOoY@[?`r+$E2l^xa$&.K%3" acUלO>je"fluYd ns7Y{nks=O6MΞ ]{#:z,X4g6}&[H~+mZ>"a_~;+s ?|$H %Iru0ՙ3MrZ`ٯҁ>ľ QFGGp]2379 @)(n%*] \-7`2&8FGWt!X a#An!1Wd#_#Ŷ<ͬ#0Y Tu4ʉg{U8As(';MI86G&-045:\d:65^y*u4dAț!QNi.q8cGxl֮K|:vz|sp5qg^F/=n![ܡ' [Vܞ~+=Ed8i9mSz=oWP_02 JS:M>O SS{"q2[ bMKxEZ[Ȇ).HC7VGz)r[]7œ&ƃ&\={Ҝ^G D#b"k1&ߤi=cר] s3לx^@ND3uev%& ckCG̴:y$ǫW 7z寴9tդZ'eH,Љz^֟! iP ~A5~i3 /pD/^SMaA@ !RF!yXW[]kQj" 0t Xi>`QuQ :d8bQ4DeD*AxxPoR1cp`&+.  A" w|~np~uݏs`8CZ#Dώ !Op]d{+ۃ?2,-AOTD΢H) ;بG;0R=]Lbse]gQ.@_7o|R3̮+QQͩxI7:PĊL#LZx؏*8v8IK<6{^*1nīE6u+>z_ՙt=ЗVٱ(g:?wTsLf"bMccxq,̖pB1(bCp[ ;fC"l3$x \ _~(ʒF e&;q||`;*Ah ̯p빯1%$60["l`EjEygcD< yo"!|x2V>ƺF{ӭ|5UBBFQ5%=wnQ[fI_b^EP5_TH;9GW9ěbW}3~Jl5 w]^YF%3w$s'ZPF~-}RYMO 0s,v(Fz81G(rtVd+C,sJ]U{a^_宋 |eWY D.!w7F9ɟq_ܗwEh\tog.Vp;iyL>aB+S:1ߘIJ㴹ʟ_[S:MvjIBTf;"h.vJ~WmYF||315,8VC':zmA V]'LlT(ߋ# BO EQV>?oN꓏Phozc9 e1f4c# G/e*[t9BЊsb7[t?hut0طa MsUJ [y$Ew, ))"wKp^fN1VjW.wg8s:{…DW iSq/t\I&qe BffӪs4k+e\Fs,+ZzMgӶ"e#λ'JTo7_\_{©ٗyȱP9hV5߸9ˠ+y[8y#g.> yìܲi};T_9)3,SQnIm$r~Y2aug~OڶK9T F苿D9ɄVe(QޓPJ$Odʯ]Mym;ЕOx &v%FEg93zǎ:?_7Blgz0I|͊f]*xؓ*t$Do:tԁu"Pr$9pik؍ /wNl0FO^x"kxfN"<v;*!qR֮ދ"Lzm|QKF$wSюtʹ~gL3f/2SՐif7"ޔ+ٯP$6':'u~ 1NJgM '4b6&&2z9)t¹ꓥ+(G$ JV|KR[ j0%W ]ՓSX'Y}O؟$!ĈlwIIO鵲Y/h RhcV[/Hk#|%$3o(I>bDxyJD;-o@+B ;,^3X¸<|y^fK:|MX˟ _);cږ.Z̾w~Gեf\PX-UT(yHtDEi5HVTik#y Pt`\Fij*?i] Yhc0i:Wن%`|]W#޾N| 0gK )ȇ[q]:kyOe&/wYDzHw1#J/g.q= t~?t0%LF:<}Ԥ -a<*Pɮ!z9}7= K:xhjW#g ʑ?br7Y.$A!4ʱ=P`TWȐ܂s4gyvxEUJ淔8oe&8.l=M&c5Fk2 ~SUUФXvDJhDqϛa:'x!*{] giHz[fN_1̯[*%ku0µ5czT.Q*4inlfLtgf~^_pE}͉W_jz g>ckUڄڋƒa4p!Zp Hc͚0C,Ѓ(lw}%<ȖyT>|apvp.~Oq\U $d| G*aH'@I,ٺ/"\%|O>So>虍~L R TkR50]#4$噁pCkma͢5X[l)I+sH)3]oMv`u-lsp44Gs1fhc?m; x5j`>؊lDB_WA=]HUdiT]Բ0.&e&CQ7BPݚu -S 9񥕂.*,hʥl ѿ=39p=l]}lz'%}S5 Gܿ(Ox;SZy8ف=8 O'/~>p)/رpz o6Ls_dˏGQbxE?j(Gg)?~] vkߧ!^hx:҇0ŔKAit2[Z{>zCgH9LO\w9T  8\tl8 jiQt/Z&di C̔M22AGqR 33ՀeZCvŮrC~|&ǨV =Ϳ=I=M0;ie /ߣ Ncᛘ^8uDE K yJkjlٺD49S'{8lKl%j d1|wN؃#@9䅞`\aΡmO EK|%a:1~)7 vC;1?l]ڇ:@Co2I=;VcklHBl?3/7OkZ5ܺnE2f9B;)AОaQFd7tG4QjPђ'2KK*? 4JKhqݟLM⧯ZɷBR|aN{ !~< yl>NIpegg&e mČw<ҒUu0IN5X7K"ڍ+q$} ۡmG :CqG7)G(1hg&%'%٬wxHrFkjMd*Ct@7 '^[N5'Ų]95]A3 }Ʉys8sf;*c) ,mooJQ4^9~аJ2\fg NXG?XZt{lWbOJKXEtHd|g|h|scM:QSv$[OW1kyx1[١̍1t'XޝGёh%XZu6E5@֐0;p6:8 2d!|^.kzXp:PhI?zvԀ7B[SEKmE(ֶIL#.Uo:Џh F}VTfޤЮ?7/sXiwKH:T%}=XCqRS+q@.He/ۏswψO,+}&̀F.pϔ>&kfEKGdsH D$ΘOOxwuum(Vۄ%(3i;&>^Cei7=c'ˢiU5=Y8<ׄJeΓ\-wA02/TFa؆w| *a,11=+2~+e ( ra;c+"7i^֘b[Z3˗=ϖd w ) -er# yзNo~&畒kK~:zuWifwuoybd(H"wJDK|8MdNVG{CcщЪ|MscM<_>u*>cq9Q'We11Lzk .(~D wf2F0F)9Jֽ6 z]K ,YZtW`_L!l^XeC3r.l|ON:XHzCOlbhIȧ̦K~l_/MAF!{>acamyrٓbt!LPI>/F@9\vT{u`~<$g1 +>qhcx4b{|;,C AZE}DљZˋE=Lj>W.:a|䭇/*o.WӧJC\ڢAƜoq|rb߉HaHdl5bµ']kuO99SIT=Qk9-Q:g (%/~ K$_ðCc#sKrur+vwK@2[aXTru!ri-T{0q;2'gY"^zWRGZdl|5OZꠑ7>rbYl왩%+UZ갏bệ}9QJq%6F3.^~?aۑ>+,jhU$vƈWUZ6SUǁS(Du#+*W`UOފԸızq'j.y|?^<0sAv59PtB ֍w.X U(n,ؼ`-gnGuP1ݢ $auRБ*N%iboG.t|Uw,6Z̍UެoCjEutTݘ!ޔ\ۑu<ʹj߸MFd֥HsJz;9E8Vv{Nb-r&SeAKb:jsv"Ã{vRcnhƯlqY[T 9zY^.*! OT]$sS#⨠[/YG}QWMEC?*sjgjqˎݭmF|fskkzS9H@!T-툑9 {%z¢[꾰M:,q'$:K9y db^uLwT[ uZaC4j۝Fje5)٭%-0N͒jO|ms5HCXjGX/K~*$* Uˮ[;2Wq;Jw|y9W}6;"%w-9hIQ]̻x,qkA`14.})̻0oML: p!pITCO5QBm-5gv'h.ݰrn~b_`jվ);=A0 4[襐rMR8tVG߄& ezP= @5ǧbJXY{6 -XMi"QlX,;1D j(: 6` Jʀң֒B&}\lﶠ<_̭1DOF>9Ѓ⠴OB!jk^BZ?a7lcq Mu>ѥ椩V\ߢ{-нGK WiAßB 3i;1_WKM[t!MjT9{Od%kt,$^~dGO?+{|)|2A˗5V "ƃPٶӅmE5RZzf%l`D'R:`j lb[+\@~3`奱w$Y|3GrГ˹4Ws(JUHm4޹ifz_D̶qM;;T(I~2qX'ƄqU=ykO׮tp_d& 7xU"\I\Jf?ꒌcJy_(M_ a}~=MuRLw~QpyC(wjx]cl#X =-DGMxBבu }EψekZK(0@$s',@[]J%ѥhdN({F5EA=ꞝ\GAM*?Xh}+"!D`pU$NiRb(ԄU=ƪ0'mCes9ST/Ϳ+CnY':DT^>kw$"8z I(эbܒ޺^l HRxBbDFY&of[%q7=!JlȀtE_C/%_FіU-Fz`,, key q u"W_B}ul4-AYd1}FSňc̊FW9p\l`<1Q F5`g;Ghaj}DK2_I0{yL\aV1/ N ߍ zQa9f k1ט@ IOVʵlҧ=mO!,0Âq3AK;?~mzW ֺ^v (&m*ۚ~UfJ]'..uݜs[pI.ɸ'z7g*~ Y3j*eu\n0{"2l8^u|G"TPwwk7Rt#"+64YBL'(KM`R ׳DƔJ@j)=QnH2v'nbb"@+u[VOkzw²_Ӻp%@"5ԍ8:M*O#mU4Cힻ r$V>ʸj g,* j{6c, q,􀟷eK;ǞNn.n5BmqXlv ЇIz8nK w hP .Nt5 w{# Q C8| Pu}6 ϩ(;IwqX)av~R?T)ɱ fQۇ"|wⰓ:j\| ?Nm5ߝ07)~B"໶nTco7P؇`V2%[%1X,ֳշ%%N nGBݣ%SϣMҍz2xN4$}`n+GU4뀴:4 BЅDb b%`@,mŰE7?}ěC'Ez'dYj Mv,b2+4r4ce.B둠kEM׸{5>G!3rkM2&DfW$5}v;I1 НF;1N?/JOټ<3rQ\ȝ*TI N0Ϳ@třjգ, -1YKxlQEV)gKKw_JK$݄ #k⦑J]+SJmaX(5 ~`O,;ot  Ym__C}>-L{TJ֬+k=MHxqHPl4Kq,lJǐrԨE 6f,Cfe:z)YSJI1;AH? V~h;WQ(n/1@s^FmM&yO/68 $qj4M.T+F%}H/@& G޻ 8^!M {ᔔ̥pyXSbEM>4Ju`GcM岰{e,॰I;\|j9Q!Ţ܇^'Ll"#2!QDr -y13y [0z8UF R䂁WIgw ʓ/cFfAJ.:m+sfi wZ5M _]Ap9GX#39:J#Eг#sVVڄ[H},ԕG4Wgm\{8ŕVxo?eb- n3j눲@. ^zVJ"Aa 7囇\Y Trec})lTwryFQ*Xt+NkC9GTԄQ=W)jQgZ9YarH͕̍|foX@p<@=k^t,RwbM2ل|H_9m"e-lJۤD0]vևt FZA$uְmu e|7L{0VJHYw)o: 8fS@1QxԷ Me}Qxr4O["aiFբlrF{ZO0's~>zDi--Vb(eX慧]>(P[W㋌(| +Gi*oW K(!ev1d%B~֟,z@A.GjsA'Sjѧb{ªP(VZS!} 2Ö>Դ<,;]ζKV@,J]by5L؄+@R֛/-% ,6Z@ijfLW0?nRQ >eMMnCf%e~uWv=)QX*v:Թ$Gܫ" ::UIWJ0kVWq7{_!ՈА%CAꡓ8H7mhS룤Oe{T(C7Ң])/=eO#ʗn\i_xcd#g|3`VsɫӅBO $_p 73^ctX\8jΌE'n"Cn?hTeK~W}tu^݄92Uhh3;sܮ)Bc@!%Xu Hb` _j D̀/a'D@Bd?I 5R5G$>f&9ϤTzoK8ⶡqs@D\hUFŸ\nY36RENZkD0R})jUv'cԍŸK&5CR[(CoMڜcM}9?e) iT#U|ׇ2i34#-:#&sΔ}<(`4(½/ 8bw4/ $:уQ|T~{ewJՌm)&3s 8T%dQF#~tqfMX|DeE=⮣jl*n O6o5?gLѨE~rjEyl.M,J{ }yk2KTJǚهhV3,.}^FH ݑ+K qމhMJOr! 8gY]H"Ŝߤ&j~ Zz* (~ Ϛ~)K.4aqJ \&1uH7,K2skͳR~JdAtIBzS+'h{ޕ;}IOl<Є_1A}ڲNBv?Ʈ#/ā8Vkr]jhK/⾣P&FD&7;4Ron}ذ8LLL$Ld|ri 0[tm,aMZ޹i{>( FԦCVM\<\Щ9^)TL^]wV>i ttɂ! A+^n^c{MEIX[֦CNQG$Փ7`7Ҍ6jܘ'c¤<;!3aZg֌ JBX"ʲGNo0=u=^C08Fߡ,O BLBX"JEDFbNNͰ/nQY^Uݴ]?Ӽ~znEtôl $DEYѺaquۏ))kn!A1 )a9_ %R\T5Z mbNQPL=0 #(4$2J3,6 "D*+*F&j;.( @,O *`./LPNo0p<<}*`./ !+*Tp lx`9^H2UTMu]*!x V%HfXEbT&W(UjV7Mffw8]nNͰ/nQY^Uݴ]?Ӽ~@ e\Hu>Į8˺yfL(i~yY8܊iَAI0ɋux 4/SMtnvYKmjꒆ]S  „2.:(N,/ʪnڮi^m?~!A1 )a9^%YQ50-q=?8I(i~yY8yI (ɊiَAIEYM8˺y=VTM7Lv\(N @I^N~yY8aq'قfw8]naBRica'ieU7m4/u?NͰ/nQY^Uݴ]?Ӽ~C4rr{^4 GЙlKobI#BыLBX"JZ FbNwo)Td91BX" #rR5yFVfITj;·HIYKm]Fq(@*m,q=!A1[fXEbT&W(UjV7Mffw8]nNͰ/nQY^Uݴ]?Ӽ~`phxAdEtôl $aes+e;a'i $/ʊ m'd?Ӽ~·HIYKm=@dE ӲDPƅTXAIEYM8˺y #($E3, $+e;a'ieU7m4/u?!A1 )a9^%YQ50-q=?8I(i~yY8*`./Ē2`DPPõ:&j;·HIYKmdEt ӲDPƅTXAIEYM8˺y #($E3, $+e;a'ieU7m4/LzO9!PD1X@$)Td9\_ %R\T5Z`4-Vtyxzy;L|r+e;a'i $/ʊ m'd?Ӽ~·HIYKm=Gqo? ZֈP 0, u]}p2I}]E O' ë}`f"eI9+o:a 9v02!$Ku8&H# .O'o,ÄEz6[Go[ gYוS͍фg]ϒak\@:p  ρ\\'yKKm4VKTRg>'l܀-wm뺬_&i&kYQb2T.Uޔ\ [wNzd{w6R_(}ۡvtY'~%?DPƅTX/W0V^^% 3DŽ2.+W"L(B*mDPƅTX/W0 ^aBRic\ „2.z@ e\Hrmʸn|ROɻ^n`aBTX/0{>ʸJz&q!6֛ku7M9`!G^ao'$A-RZ 5l*(mك\ „2.zTݰQ(B*m+DPƅTX/W0 ^ aBRic\ „2.z:@ e\ic}Wm-WbW–H[!ێՠWf憰 " wTv[\ԃ/[@9\Hy3"jԧ(S8OP'%̖zSD(K8%v6·j|Ge,9SӺ'(c50f ؆W2G>V׎ Lr*,TX/aBRic\ „2.zÍ:بʸJZ&q!6֋{Gg7ALπjpv4ц` #2jpʸH „2.0-:q?$ e\$+sxA@ e\HrmʸJ:&q!6u"L(B*m0 ^n?pQ 9b8!|*RʕT*({u~ZuO5„*m+r%J{2aƅrU„2"^>ֻOgՔca nDXIm;^J8^%YIڏUN~ݐS?DPƅTX/W0B*m%ʸJ&q!6U"LJl „2."L(B*mDPƅTd&q!65"L(B*mkDPxAd% a°/v"LQ.@QVR"L(r J#LQeI&q!\ es #wttYfg4sĿ[ElKq||8ݐr2TX!qb72oq\ė&L.Cwo1{ImmOjS}p]¼Em E SbߧS0a089{%xHlcmb_L:ɶquDOBΎ̇ߴtD3?}o{"%Ausz`Bt^;ojV~8x-r-B*m]DPŒE]0;&ׇm T*m%O{~$qpߎ ^ -ul1y`ϸ*ݣ!r ]a]>0 ^aB7;B*m+W; i И%:q93<}!AAW"3CX8P}.ԙ@)J&q!6u"L(B*mB[ \0ɱCA 2 erЙ:S&2 N^#} i e*Qv&iY 6 XPF aNL̤&.> \0ɱCA"G[*Ͳ0Biԙ2iHr-ua])?:@I nKʰ/DPxAXAM^%ʸJl=@ e\H3-&a9^%YIm0 (ʢ.+@i-"„q!y%2.fD0\R%e<9\*"L(Bt r&{SE6%g|'p{t „2.e`o@#櫺W.QM_6YKR^R[pO[# [^jPo +w'О!Pƌ?rŮ ?T W/5o\R)kVʸJgBRih0-PB1UP(T-9ZT]r158>]9E" xipJ۶8='7ŕTRl!ulM49noM{z%, H*wdcΰw]~*a}`S EWV2u \3ļ8u9H!y@E8ԠA:Tḱ idy@)!zE>}ddڧ-ett_r%|KߌịĜob30̵|pM[;S9  8Cl fD}ݕU{Q+ޏJ9ʸǬezcce_JɫĄq! 1nc#DPƅTXDPƅTXDPƅTXDPƅTX[DPƅU*UƖkR̗̳zYoa",v^_u-1E+Wkk8̓-mˊRdZ~d3ТCnuV҉BT!6}V (9lPYaqS!'?gb? zu6w.Pa'f\&_cgRf. %\7V1ǓUAT{|cʨyޓyA0}ac33g;Nd*M8aЮHpoo }E"nRG3I,}2iia,K 4ږ,a>YG M ciaJ?r]Xu;mk:q[{o. IbL7ۊ4 \C)pC&F5)slj60!?KI,M C Y@U9ǡRURQb Wvź M~%_!犥(SOSuԹ^N`N,s!ș(o,ϙւYJ? 1oؽo/l! Am2{H ]JMʒdkv;WܢAg+Š~ xLF^U]j-` R>kŨCmdJ[̸Tce>N$`_kE'B~GΒ}69ljet+>FLK\%§fB C Be{0=Q?X|I,Šk{oO:XtJB8)]B$B84JeF5@PH "8ĎB4҈JYfJ_a. Zw0Voqzl&2Bg6ZV`WV!9 P#Kujc$C&El9,}}lƘƆaL> .W)*WZʕ+WUͯnX0$5=|%:N}Aـˊ f>.7VlVd 54S?f=ou.ӡ>֥24F5bĈ15\BK)LW><[ntnF8F8#&GD䴌'#2\{.J˪8ה_U+ZӅE}u/qCueFG#@>I5gf%D)eY/;Q8.{JUan=LSRbR (Cd]8"Ě?AeF jw e$dd½Ā.'3+Ǘ }u^u m\g0b h^&|>{?@/IXɟP͢,Y+E(b#BQ8]osUuTĢ*Zb,-x3sSUG̿v hn*dhyZZ26z`9IIxea(FB7M j7'J3Kut'XlMb [D 48Yl%O4{8/ ǐnM]Lu:#s5p`8'0bv@;یz9:cy,aQ (DM 8-[z/7Rn7߼.^ӄKSz%$q{iKJH޸ %q#@a`ű<@i{MI'p8܅~Ȑ4ߐH$BC DbW9yGP1bWq F&C#piI4Aa фfi Cc"DWAY+1CQ& b [~χϹJ n'T{^zwTyJ`BI%OR舵ͧW?gs$A`EDuՇ_}Y$=7˽ d\`6v9q! CZ.KPC(QF(<5Q tTfK&@w y?, ~B#|* Qs޹Z+++iVd5I$I$I&I$Y+YMdOd'MV$+I$I$ɞ$IJ${gͦTx B:f>ˤ˶붞Kq`IMcϠ̘A F >bLS>%  ${WUIݶC>t#%`XxpWPQDm- ź-w ϓwa !ўytj-I_ғ%}I_%%}۲-a0`!B(hHI.벍ks܎۱]q\r]c=.ܔq)I8G!%TPy9ϼ:/26'e/ǵ^2:{z\6. 0F8( C 1!q˜M]R/c.G4SXCR4)ͺ]76Iٓ?ΞH#;NBR8-cXƲ 1A b$ EFWb 2gꧦh-X0ٓ?R;w,1ƌBrKZVuWnuAeVGdff;;{@LG/{&A"pr HUC`: ro{.lo++3sjQ 1uek 2WboXZcKH*J;Ouk괚nD|/|arW@)P*U TA(ȯE@ASy TP*T(PBVPX׮VڕYX] vWvnS֮"iEE#GҚ|H$'_bG܂} .`0ɢM;%PcdCp_p&̟z(ÜU0 !2vϪoU`d6*-d(*@jK>Y!6[(7TE喿(?_''x8vL!b VLϊ%.Al:my( q CɧA,AD$ <|D'pT<ҥ`wQ1Zo ~if3o&|\ܹNxGHJ@Rٯ&j6 $!YFiCNBRwTW3w%rQ JsǼ/G>7p>PU]VTtn[~j;xr.g+T_֕R c/{'UMBQϪ׷_&BR#"d(1KJ__[.}_mHO@IP˓_):3KDQU=Mar=߻"^Gdយ!#{"ȌH#2AcD'%PQ{& DHf550LYU=z5jWmӸղ{߻G/3[H O,>Qk,SMW[9ێ>ŠOzSo$5P#WZ&d@-PKHV,s-DH1OQU 40EVP EPr b?KzAB*@C4옆aҚ0@0BLz2nK*E5M59X56Ȅ=B 1O"q5XLC+<wuS $YA&ǿX&KĿ;HN<,h`,n3%hxԢY˚$h.k>UEPlcD ef_ )0A!A_Sszw&EcrN`B0a !ke=;G6{flpIn;!!0B<^в*XHdzPR߇ڷԯ~3oUKac-YFIp'%Tew7bDĈhZiٻ>BavSDOT4ICb"*q/vӸjB`7q]V06BBi{ Wܝ٣)WD A!&4{ؘsBTDf7#c Vy^u[l:!@HIH2,^vi&1FQ>Ɲal֡noR8i^??l}Mt-e:D$D $Lp쳹7rZY H!|tGc>n8FƭIRdT]vjHx=G* OACP&9'Ђ"1`T`L8 x.0&cdi$0=QL>S ,mzIffj`v,檪yyW: wj6!L@!RI*#'ՐjO@! ~QhzT"=g}feM@xkB@m# ( \&&qI@ $I  @z!iɫ/F)!Hui,`H !_ oH; CړQڐ>t-UفAá=4F#"QHxB>7_E/Gh{/!Əwes8Z^@r %LVY9G RT"%eS^uhH=bKyQG6|XJ7?RM'.53egTIS6_[\2vL/>vI`(eع}pAaw[d=na=u{ˆd;7.o NȰ . ǻ%_~S/ C ~CfAhCVæR S‰&:Y EЅ5Э1`<u 0LQLa-F0:11$Epwѭ%r>W}g{g: P><>4.ɥ:)?rm GFmt&x8P$p 0 p#}1"TFoFŨU/q.EX|c8e'JMR+׼ct{ 5V6d=Y*V5c%p! raI@)JSJMM8@@@{B )ր3AqAZV{$=V;[L6LAX f`F0+,}T4 WH*P*Ȅ "j |N`CZ_ S3-Rju,.`U 6vHQ#Һ4/W"̱N$Q,|FPD-keI-LvܣڀȷJ!v?=Gbj#<=WMʂwuN/ff!zuf]Lئ*DW'Q>C@ul@1X!SKZy4W. pY2KMbIM/ wꅄ[q5v'28dk-g;^>"(ےȼ- |*pseB]hsy6paoG $j{#>\Ț9|zWjZ X m0F"*Z.~okf? Lj}|T;DjgH@D A H } DIu$ͦ)jLImK i y;x{TVAHLQQR$ [CO{'N`2`o8ѸqDL#GHNii$!P(,+-Nd; 9 <yڃfGf4=/ whQ?ԗZ4nb--(bE|&Wtr\wN&LKǫ*&C;q#xw$xs-G,Eϑ(q/3i=[?[^}x2_VncsBS}  ]^*m #$F]6q X@YRlݑ3biR*>?tuf%l 1@$&&k:8M]fszƵUp$Zy)v1'C"K7&C%;"`~ -Zk(!jD8 {P Xy7@cR}&U 1A {Y!!§-]ՍIi9q 4$h.(G"("J-Pc$({Α""} kvVy3t#}gqF jNru a][ ىA i Z%mu3\qܾ-]ktOIkzX>B$H&fӴO'hH :6CmH-mhf+PsD ZK[5<,94I#^~KguÎ}w!Pb/ħ 6e[4\npO+0Ff5ޱ,j**oai/.7LOUo%8:S{MDl/r;wx6\J&clI B uyրbqT` #):uSPȞltzu? b @`: C:RÕP`&E20 `Fvy^7cjLU]Z[ǝqz M;0Ё 9vnYXdo0| k_d,[Ls]yXRG=]R"IFXyW9bxZYڻ h<mk{{`h,Cg>x9>9OEg>Ґ2Bcpx8MevG3E`Tn!c=iй.RFvAZw4l*V^x|La`A2?rnM<}`U._nPOOix7C*͋V]nh};fGl>-|>J, *Pc?NɿT~~I= X2c=6m1[ضiFͮ^!?~eXK:yNzDNg$_|r"]y{;E^[_%^Ut56YMXSAd s8L=(]?$s&(zxN~C@\V .|B,ijk,6b+\0+v`A^|PMG>aK~]}|ܯxbR2´!:Mi6yeQG."Cb),w#hr ì^gO Ӫi2U\/ :nl-;D[nc|ml*OV0SSx*ȷSx*'M4rڃӤ D{g/4<݉<ߙ֛@_N.W5o)W0*U6מշI҅t4)23V6`?X$3~/NJrIy7637 ;qǴ?3 {4 >!eDsd/l7dF|,Nam9͒-2zeFH侈<$~J93LNl?b̩K&/ mp:5MRPm׼8i6jN9ʼnn͕ >:{:B˴ї*rT5=P/W gCtTŌ*e*爵Y =&Z˪l@%oVȪHҳWPcli f_cޏJ}gSNRf\{4rQ#ŎbwiҖ#3#Y>?m%i3U࣢;|&;_ba_`^> i'UY~`ѿ1T޼Fg oe} f'a֯({%ZĻʂ37P%욈wSAp{Si 塶Nu! r2ed}}dMkT+fBa"jhEM_aix`76U?IqԘ=O֏WG B6b |"Yn$ݑ 3s֛cU4M$6F'#QUq[޵)Ld3=H`!qrRz<}|.'7bϥ/vmq:[԰I&Ԫxz^=uT|\ ` Nx;ۅG*AV:+GZ54^n*?Bz {D=[h$nw&)fH!(00<2MMS"s#6-EZEj["By+$헆ћ"k#vt4'GR4Ah@s&|+Ai6\NgSt u:&&_ U6VUNX[w/P8Qy'qj!3&8{HkHaY__D/T@TF88«X);`њV ?ohu ʎV ]zSMv4$gq);4T: 9H$F7T+pq JLP|q4Q%nM}Qﭸ^gǞF[ƁXpT4bjthԂQMK$r)i0_.Ͱ)e8r6)+adŁ)fI7y&Еj^-2J4@&7yP + ӯ9jtE-ѥt9FG,:{?OWLXT6 nw}ڵs5[0"$jj" PaMBS+xػ$ҥUcFK3D;^1¶,Q;߆{?qWr+{dܕ{$fs&.ZՕ.eI2{}X@WW3K䜜 O+_;[f,DbG~:p9,,rOͰe?$LˣiiZPe9e$hVzP#\t _gn " y]>v7,k˭ ؝u]Ѳ٭ [B+.ha 2',9̞[ 55E+)UxkLYLlt`k&0u͍J@Rtr ,2R#I;a0c!\Bů:/|]jEɯy~La[%wd:6Y?4ݑw?a?Wq, "o>"u=|01d/~WR'?YrʨqƁ4NY Nd5\YLeͤܓ3V@d~Վ0* {3aWiڔ`oN_T*\dB05dlZytxnEɃ3-HQpQ HRtsk!mǶra0l 酭xHJRɆm RD2Z?hGTP_OP9EHG3cQGme XiU|~';0;'aXKmVPxLžGl>0?n~8czc`^zy]v%NuRthp31 .iT}A AeAr"i"v78 MQNLJxppC1YtD= 2 pu573@螙HO6Κϭȁ3c8)۫|<=rqqQ[/bS/8}?$ѩNtf k3z:9o'$ϔ51\< ~3@wupf& Е]i4]eP D(1 q,#o_јh4ci5F rU)LN$hA95{M n^gM(~ |.6| |$ vMDW;(}KfY9ʉtCŠ{ī½$cPXƈG ˷֣dna`dͣx6-su4Mp U'>'0t/ښ3 ꥥIn@F9W>38ſxz{*S1mX*#u1c2@0Ue=:(uBww{Ee0hFa{LM{EYL`qrL)Z\95-j ({\M# ^Ҭ@:1^u7( b9;{#!H?{ٶ&|)bmB/yP+H[\6tQ~+n}ic@r6r1)$ hq=+X(!݂J^LΡDBeA,1~-oBXr gO!1q HQ; :ӳVؗJF5zi) KYAa0f[BBom̪q+z5'fZkĺz0L<)B!a8E [Rw .+Ȭvs@IJZ*NPD./I jGBj maBxJ{mgu7z&BV9i=0/4\e~e5fdy( ((_FC[7 |*c2dᧉY!P9 $|9/`;{(:.-R@ƪ.G a*GiОjqi`M);dǤ@XëxNRUU@H VmnSDnUO>OM}oԧb}l|4j1:E~<:F̪2Ȳ'wJB<0T\k@bc(vX_ntbp!: UJN}6p_M6f<H0>66wA6[@ 4_e4Gġra1F V9WqI ̎V}Y j)bT4@$}L$Z;lT}ydoa 6ce aƉ[+ !Q<@=blۭH!c|onRZ~n4L S2z! H)$ e|3@Xȗ5Zcڟc,t,m{+nW.u$=`Hsa@>TcnJkS9g(KlУ^9E림Bz[Mo)[ELz;ZHȬaP /jY~&W5ZR(dwg$ro}S.CT|xKI5q]6s[U`Ջ>5":5sj^2⏻ry_ڏ?5 ^ yJw|Gb~J]ZSkgʇ|/`|ʵѰF}~t^H-!V?VE3U|f%Yg0#!yi}qYk3,3eV7;9k !V~AT  zLׅ$8>KP͆JLc5nOIEMlf6 \f'fd$0AAW6Hoɵx"khW6xK[z'Gd5&Ұn'7]R@$@LCe<ɑ=rZ.o$׹,ȝ.:挻zz==d;)c+PvM.'"t.H''\)0,`ߞ6nW( 5qm"({Rx?¢Ҙw6hAft8¹ [E= Tdo(k_Mt 8() ]AϞ{8xQ yM׊ z-y.S]asBOZU~m쩝 _K͗~G>YZ!kڴbGf2 nϯr:y.9H: KK6暺k'I%iف|@_mS&[jdC(A:j2ltH6͈l}Q,bKB! fRtA UL$4w(ID|q( (NdAɟZBڴ,7:X2PRY;yQ\t 7}CvLMhv&'{1g^RgiGz5ڟcAv s^iA]\3=M-,wűUEsE>=eLD"u_bA"4T\ɎK fWQQӎеೄgxZiA[]μUyൕaF\$ɤTq'xuBk+QL/Ńu"!xٓ6ܙ4^ϗQf&1(jV-ިp:Tn`J[BK6X.[qgLgr L`pgZA&?Sf ^[/I0ΉȔ[~O,6`L~ F/ĜyG$x?aeP56:WA얛*R 9mq)5fH"nGU= >A((g蜮 뤝u~|k~#.!.;=%|C 4Nr/ǥm<2O)Uu" A.; <ܺ^a J{PNruWj|Uγ@vB Iơ:䑟z-5qFK`YvQ <~eٳBh=}w>G1-5hEo.Dl?hF;:wY.4-~#T[Ș]Y,Qm4PGњ>1bje&tEϘm@ɗơ dG6L^h`('R ;yp+-S]He PH1%R}xڬuL=Ͷx~Hɋ%cnkA1iB>bVVYIj܉W1^j=ɬɉk GE)CXVHtEK1N88sW{[/cm[!IE.M1ρ2"ֹ$H$YTieTf' J`2wu=*RJ)RJ)| AxS.$K*MZ M`a2ٕ΅3@ћvf>ϾʞG8q]0t,ʊKzkZnt~N1PÑ=SG,Sn|43prF[E^Ppsp+>m3$SL0W, -YbՖk"lDK Ë $RJ)ғRJ)(!B!HI!ȸoF( %R2] | o"5~fW(&7 bt2xHM \0HT,&;M$,De'Yݺ3>㧒4]g&HL']tC/}ہwIΉUo,dfBz~TjQ+x>HIb,3}ԁ>{YN?EM<]GAtOPIG]`\+3n:6xU^5ܑH8-m!`\?!Gg)ֳ+ 9Rv[褋nz襏~; ] ,N nExu[6^0.!)zA XcHzw{ͮ364@"\EiL,xH'9Q"v:,DJ6w]\pY_TGv)uiJ#U5rYH0-jˊgMcTK[l#= v:,FVw}[kзx#FF)vrOR$PL;4<; 7RkhI" M X{Nf+Y0fm*>"BGl ̎xXVrܹ5ch1FY^ҋvNUP:7;' -ᬂRJ!B!Bq}H4 Z7E9̏ H)[֞#|QY8pȱN:s^` H(hXdQD Zt1`Ą V8q#N$)dȒ+7n}-ލ.c21s{=HOW; #\v1W:3qoPyo)G!,)rWPb%J)o#\ 7e6pD&]&BtPb:t#v$5Eb ,JpBhIJG3zdXmvt= „2.|淀-dZfj(U peMG(!"2 *:&6Cpp IH) է+9dBkN&V^L:QmP%I٫r{/|"}Jt@*X*ІA*JMka1QۇO_*2dɑ'osqg/?}&/YVz,+Sqxln9+Ʉ$;|p}|J z:AH$JUըUQFMhզ]N}l< T^,|8`&3S/]t n~. K:č-B1gvۄIg$,֖-REi 2,nnmC\TdC6Ex:ey(vP"iԬѤOdBHNjE^6*+:rΜE78 r(QFz 1aƂN\Ĉ I4 "upcv_``# BRL TR98z@ap`qxDPitpy|P$R\T5V7MfK='r sYQ%k9EvjK%=g'T0qQ*iSl̡vdX㑂Ni8?av>}_jLhm.BK.Aλ[&4t~ĩ3uѕ B!P$R\DP 'TjVG3NwerH+W+)SƼ?Bpɒ%KZHT$J6i *:&6Cpp IH)K +WC' iubhV?@K\F`hZ丘ۊrBТ+z"m3/Q9g7'$!P$R\DP 'Tjt47M >E~dpLY VX]2<ןR5#u$ڡ>,ih2}ԽXqΛ]~c էŁ!RJ)RJ)Z#ˑ+_BETժuER;C蛅-jb_Ũ/vв:Vkf$Ir;vl`|%,50c9j-d?T}qf6~4{ &_j3xZ N:MЅޝĢ7T+䙸i_&"`YXlMv^G,om ,)&xo e^7f )>&*a.~d/\yxYRV#/wܢ}*'5n"Kf*,w>k16w869"uV>\PUs˟Jʺ펫ݳd}wxbŵ*:JΡa Z qFqE=*+D4h5O|WbA`$%08CHԄ&Tz"ah3,$QDFG c,9ɉ/?_(xLu2%z,冥6MF%-g&3ⳚU #L~ˣcJjK?骿3>wwK {W?vUe٫!|h~zӷ;'Et)wt B_GW]}B`nG}]jh[eacN!ddV$nIpeCjKY7l=W,F[5 N~SʩyS}ITѨTYGUvժ.w9]V y\xy,m˕r>R\DP 'Tjt47MffwNٞ"L(BZٴeێ]{tѫOL((((c1F]3"ӨsNl~.8(wBU* <@R p_(&QHaEULq%TJVf|`[9r#rʄFǩxf:ak^)N$Rʒ}iU]Y3_#;qy]tC a`!Gj4hѡǀf,XqE8 H!K<;*,’3qNP˥+=ĴWג 9D1X@$ͲNCV73lqrvqus۝ Dڃ uu M0>w?H)`h}G G}kt!\mL''Yn*C?>کʂ)0߄54&mN_֤954#S X S/" @.rr "7ZrN_bI44'AlHh! ԁDP@Vڪ3z \RKYR6֌YLp Q-}H%gٴ[so.M@(K`LP"(*FKR:&j;X_lO&q!32."o6 BJ] ` J.dٕ.BeO@(i._S: U8Rjդ6ϿWG "L &H,2BRk@No0̖s]M|DDDDDDEnppO2ext:3fCHf|G?/~[~o?b CbELml 08 DBLB])BzcϋpeT`yBW{uG`>]Z]ҧw22,< *:&6Cpp )xeY9yE%e M]=8Õhι>TCMC/d Yd-vq3fʯϧNBUXX)mN?a-o_}C!KcĖ衏A3RlypO­8%;2O$oã9^Eb ,JpBhIJG3zdXmvt= „2.I$6ܔn6sŎ–%*ub"AH"S4&fV6N.n^) ($,"*&BBRJZFaBN#(4$2J3,6 Eb JZjuzd89{xzç 00rpU =/ ($,"*&BBRJZF „2.^\4wtƧUHHJIaBҾw@ap`qxDVk@No0'gW7wOJIEMCKGuCUMmwΎN^!V:n~A!aQ1q I[U2^,+(XXVQUSoطuFP 'hu[4=صg߁CGkzmo-o{ǻ\<|BR2r (%5UkmشeN/Is'iS9e>g$607o)<2.OB*!3vapApGױ88):R Nd: !ŝE["eQ%e)n7: IWN5*~O@S_͘2yYXVZ$. ^oV.Qo:Ux!)9FVN^AQIYEM]CSKGWOª56lڲm-> #5M+=Ag9NDr:yb=4tiiA:ԄtH~ Szz=ț5z/jAHp Nj$@ΎEgqL0іJ,g<эLw/M·/x$`? ?"IK nUwsOXW[_c >-o֌᳚12J'?DK`m܈g_rezvWd8hrz<-'`=AIY|ZL8_gqD ~6?*5)aѲ=KWލP9_^{H= /;Pw|"g;㘊yl,Ӿ= o~2j+M۴]MǓmuLҫF$=9_M3 -ԗ:\W < l-o-?5pD^7"i/<|Ǎ ^`>ȼ}㓺{<*E" Rg:n`U ts'8w/!7[G$+قx S}O|$6[GkV"z{[;!_ַz3bsܯ..:pR[ԧ$IvL-av{Ն=['P~pG"9:^L 83A=寣`ַ>Qr7#Qg1L,^(h=xR鱑ӝvFa P,fb'&e-h!GxGT$W"ӂy70'ʊcCGU*$_[HhHu9̎Itq33!.TG*'>4d '. R4xGx8x#D٣O7,>1?֐/>8ih^Kkt# :D5T< |;[zbjI7|ZEs?҅|Ѹ+H7龉O{ |SqH8{p]114}Wl=ɋ"XT*`:(mV@I+\Aɾ "i,lBemJA;Ft7CZR^Kڢ"}*/YHnWZ3lJj*J&ӯ6@H[+=h}XYe>ˬ?~l^Qqɞ0kLMܤΒs2#bѢݔ T%Si<޳gs;) E\v]_S3t[Y9ZtU gg}p$^LpAn$- l|T(RI'A!W>G&,ц&6x?6GSB3R !?7?,2㙑ٚؖlڕio~/mG{Sҗm սP-o6-Bz(+}g{7u~Y;_#=ޗr[F_u[jɯ~wC+`qxLLQ"ei78v-$ 0ee͑.@uujnC{Y?kF`]li]j|ԱVV#V+`뢯r;Fr؅Q]LWjhcŶHiE5Yѫ.֥bsj SU›h%BzG-Y+}##롊w}GXFjOx{%&9)|T`!" Ss+UXZ%m:UjEF|3n8 ҈Vx4dO9i׵6؎p/=IqgY(P[=\!fL'%B%r W`XgGS.\ί]Z]uvS=]f@d12sLޕ@@ T9" &%ـZ00 T PI*%Ƞ2EyU<"' -  Յ;i)O dPO+'zCXCˬA!_6~eB1)*Oա@-[ vj-im%d* ]sC:#ZÎi܉w;MUs=rԃ=dΠIYt*P@]IIu`)ڢ@;̀ĘDQAT pCԣ|#! )26] +c1M008MUK'=`7s%LLTeyn{9xQLK&Gu_oOO ;JМc0YMX9Ғ+fYKPw-?hEC:ݬvcq?ija%nމk.V0~_~X\loN܂yFf9xo#CHKQ>eNL3Crq_d/ ?Ȳȳ%\U uŃ9!D?}##!ars jSv8Q Qi'0X-eA(\m>MoTq|ΧaUdY |v`4yT{Fҫ{o $sowi6bYqu~qsb}\ajqxeD7>jJ4@8[F|ș1ۻkTԾ#ǚrL˿ `aCI(( 'q%*NKDUn*Š֒^,CRɐR|Y@(}x f&e5RF(z*&,2AHHiE R@y&}ޖe{YȄ( (F#69] ت`OlNԾ |xm<¨)ѕWk;a2*5$r޿ӞltCN' nz>GfnjGKsQFlb<1nCH?$@HR]ë%#{YHh$Ƌ=$= clΩi/SisJB;ՂF?}̇#(8qhFZW$h=HF튝@@m{߭!?n:qt8a:録}<=%I5 W]#1 R[4k*ΔMJynBA4)Z&vKl~xqPZѼy _ #,mJbS>[Ӻ4<7<ۼ?׻>ѣq"Cn AəK#gَn2abvL( x!`*~N%XLD :&yFHDbP<|CQ80 Bz-$;^tš.)MIeN"y(iRduX0bfU1O;5}e0> ۿdծ}ӖPw#WEnIDc|h1 ǁl`((8) &ELruR6Zb>3'f+WBH^7coQNƇ?xiJcr%TJie.g &v Y^SrU5"5D m_?[7bMioŶ'7 gbevZV56Ǭ6lDNʨEђfk5 lX{/G[1Y9j0C$S ˽p̮E0|.|ZdSȢ. 4kT;=ݿ M}K7x|A)FmZ^A+9,Pz0ZAE^6("9]w_k!yi  qtN4'qa|ph!|Tׂ 3:=Ձjv)ܦ͞ rS$qmoo@3+;'7/ڞєz9wy^OonkUNߝ{'J=ES_zD<ÏJ+=LI?vg D@t,l\<|LL*NQyֺܑ!Q/A 23ܣH^/V <b yi6&RoB$v>֜ @#URz/3|}ڑNNWPTVch\C_JDL\(-#+# ($,"&!E(*)p$H"n$`qx$A0HG0P4QzGgtGoD$dT4tL@=s"m nWM;kjw R+us*2l(A5JѮ$G7leiir85rxЎ*( pBf@p=(/Y(8){C޺wV,:y [yA3wm$3'ܚ N7CgTBnW N^-=j3@VU~MԠ]@-ƿ$6Ǩu;Ek'8 7ܲ_ 2hQU|8ͬ\ P/^i@p?`@3+jwId?)ć~μpɌ*tVo^j3Xd{kABg9)!Pvզ~(pƠ3]54gIFJgt&sqr? #V>(?ca%O]vFz e M|ZUm`!5>BSԗ9A*F49< IxNCj$5̓!&hD37CBdt^Tzsˣtr &g!|t%[b& .B"pE %=ܲcA'0Q" mղxQq"g ܺ#•;>Fp~'I=LCPDeU N[3|V&c*t>xSdR$ s9`&3 [J]VVM e Xbpθx|Yѹ@W?Gg"o?1@Rbsm~oAx;*xncњ-`yK~CyQJZ}@/!=Qy\iE՛1) y\~\8AoJG+n% i>֠򎂇1@^*~/~.sۜBmC>@yZ#Mgth`3|͒*;v<ơ;V€~7P+8[u,NȎ U 忤\bl3 %TO,Ȗ/嗠`!6ys ([H!a!דUcĮ{6Q:\yph"u# 3p+w>Fn<_Tuw[GT5G< WRNGCJpD^ڤж_r3`?p dnU"ڲO+9) kjV+T5VLMr{?d0X=;:GκACh.+J\iLg3Ŭg?39(C'; I"HS4\0&Y-e PHXO(P8 SrC3USݭ%xRɦZd(Q=NOؓ4xK˴;np"*b )AyiYnO]9cJ'Cd(KOc鳆zZ39wA/ʪsXHo*vVTVh&J%kyܰZ\U`( 4<7"bR2r J*jZ:zF&fV6v\<|B"b>}JH}#'?k55]/6wnV{DOqH[,2ɏ:wWK;gg؉ eiݨ /4~q۟i/vEךcvMz=Щ]lЃK9%5/2zn h7ɄO_>S ?~ůTxMk5ƺCƵn o-a>./{[QN僝"`mÀ)p(,d ,jNt;C7'wfNDeqeH:cNp|%ȜE5 A%^SKǡĠ߭E5j_3UNeCƄYC3I!?.&:[`BIEՍgQ# NzU@+ݒ+9ҔE`*/{)?(j"M61jO%%i _/4WAQB,AR`aK$gJ#LN:[>u}KK EJ*{$;/{ܴV͡h`CmihUcmLfavjałG,jţV1v/[?o^;^ٵX?q1L0ѥoe$$c sa d c}cv.K4$7:k01sۓ&>'fcbWiqo A  @abHN--τ)"{W\6WJ1mD?EdZ)$cSV,3;څz3J!R1GJͭ(;)}cIOA', J&kiFIX0CUDð 3`6͎z.S !LNfCpsfPaqs T^M5PBcS G)r0 <(W 08HA>d' 0Jm:ꎇ醊(ETZU\fm@_:XoTmu`ҿr"A2,rhbS-i |O&p%rVw8*cN%eC.8 a[Ԧ6^A"q .#2s+^ZgeM։] {U9V0ŬUp0D`yt9W_ޗ&~93}{S}/ {!^_PNݡRl2 ]TGT#Xكҫ!/ЗZ!#vp(B}I'iag W|"˼߫n~}GL(w@T}_@b BrŐ3>]IlƯ1*L%S61<'4'Smy<ϱ?kzzTT! u[+/%ܹP fc`^SaX笗WpTVoXXk P{o[r w<A!C@BHUuGn*Z"yDDԨQ C;DZTNc0X, ,JBHR>O[F)C_dtaO4x`B2J0mܝ:AX'&ʼyc9cyᩪ0e`e~MxhќyQ1rÿ|i*jVWDKr~YciDOW ]q IsZӟS("%--bI'A_g̬Fa}jNF Tk3{pD*zq_,2CJרq0p1LL jpژlB ,2:ǸbM+Jl]aG˾aEeUK,@b$2|材4;;a -䃳)U;bNhuS>G?ÝؑNWs BԌ&[.euyM\tK>Xgsnɯg?g-yD= NphCãň'^#GKQ jTNW~ #  )Wk3<4GQV,:`N_n;]vt3=_ig[Obe?8oU9PY5_ WY8ҞO<̃a/Dmv_ '{H$>FxMk9V{#H'skmO w)dZgew֬zRҬ\TkWG@4M;v6d yy%Ŕʫ %f-w{R~ʒɰ ]{8P\STR )fgEM#4yŜRM󥄴ȧ%JN"gNH{/2'jRSZmJK*ųfSc(x<Ǔ;ȉtb'Γ: v¬<Ǘs.x6|pEW£ J0Yޏ-no} ZB _ß㿂Y|}>\۸F:ߧ{ٽM^dϔջ^jOMq8"BVYYԱgWn%Poi$d}hFGr 9R֔Ȍb n4#D9% Er8S?懃/9!p$t@,d9 AoPLZP_.‚Pb!, RɅ r٥\v_1ެ. /tH1ZzӰqtgI xa.J"t*R z0Q0ۈ6LFIS6ח53֟RHƒY~rUҭƷ 9p^I;͋;n EqԵڥ\Z]>o3E<)E`[yڨrUJ)*TUo%"Q "ۮ%8 Z5UUİr{Ԇ%gKlc7=:  ¼@1- W^( VT XG}¦K o|G0?O44x4jpIx ]3%gbL,}#B=`y^XqM \ %]ٗeWCPѐ-IShw$O8kq>rc [!PyR,ɒR<hcL39$Y%ۉ&""5^ T }dؾL<|8Qb߮k|y3 y[@$@$D@$@$qr_݌B-Ugff$IJsιV2$%I9%$I$I$I$I$I$I$I$I$TUUUUUUUAvW ?.m^9xB UPX^@ $A\$h?|Vg[w%nD:o(̵Jgor_eAos'{X8:$][b~/z^k~/r_u` k sԍ_ca|<':MRB9TC-4F3iW|g(Q9V8q>Z($㵜$˔ӯN`칯[F'~vem9Os\ @8-iNЏ|Ʌ9FmJe +204IF6oVvk=7-/Tq=-TB(XQ| P߃`!x4Db~!ΐPo@m@R($M[P 6m c )=)S8wAOcvP31T@"4߁@q.= ar=d>Ar*Gpn^ )Q Q+֐5 9x xWk(D>]X^Ȫ+KJX-',Sxo+wʷ,t=T0yr'5[*9eK:U{[&yPaQd %x_By{դl(3~} `8 E00ʨWtphj]=V g~2&l3UP>rfG)O3 ̇M[e#Ps*mQU̩jU5sCi9SjtMW͹ʚRRU|\L_e*mEpͯ"7C!m+fF`o̿S̄b11S̔y1r+X'\9f.l%[fI19186k4T\P$AH\Q~cCʷa@-;O-%Ҿ{ j !(*-,f<ŌAfy,v-|Av|۟(siy@N 4T9VBF&6FQ^(g vMS yLQ:!' d*PmJӲEܴ$!>7 q 3v1Xb[ڨ8Jmbq -*K!9 E"`$6y:W/CmjH8am& :%qR3퉧i̐kZrM3 qD{K`L*zJ_nU&ςTܴv#}@ˣuuZ\}m2,Q} B&XՐ' '7r6~TLY9ͱuw]di*&͐]6 :q~J+}gXlb&Ww2HzKTᒩz ˆ4w8f*Y&f3-UUHgeú1L4-qҋ ̽]+uxjhe}Z7^ܸqq:'֍SeI:tܭbso+bJsvHgiSr̫p:djJa󜇎4"Vބwk5\RleH}7žF-{Z8!wj X"s+oV=pb2o{{~g*TkeC$sH3ν _1 ,1,0QDyOXcv&]9HS7E 'fP5"FiT]e=z 3uz~8~ޡoQX(4W)dBu-̟i|>^.rձ㚧}$f*MHc؍V l.h,~GP_SCe؆$ù5FHm~e"ɦvyit#w 4t_qm 9c/#LgV??/dN]c.>fO=|l)$Ar,1hrvlαd)lh/= n@i@M]?_v째q(Lql8W[W.~1=cZw1_.M@e)Fh q# 1u:cjiԾmǰf5|#W_& to{k aB{<[B CcӰ*ڻɫ kYVVJI=GCƨ,V-kȷ/G;dJ4UuDnloڋ"`;ѹj2f*_"}'I-5XDC peV9= u(zRgLz"o+4|%os떰*~C7.z3N~n~| Vy&lqhO.Ov8hZT$<U~%{Xy0+YA,`Q3Sv ^A/k)Vr&*/[khxxg.*y1xb PC{xF_tˉމo98; xgd̜KԞl{s9"z|Xb[,eH(- W\Wzl>l ML}Zqf ˥{Foe5Oܗ 2f ^;/ ^^ޢ lgL̖d)hsdE'mڪQ}53[om3lۼat,RQV(D>>nlIZ8 tքƊ>Dx)%-Gɕ*goa˶Y/߭Y-:@˲)2,*`x [|2Q:$y D5ydB!$Q[.D!bE V/ թOsݏmnS*{t79e;׊*RTLƁH&&՛U 2U{2Y 귑;R_owk:e\tnWNssq|FE_TUvȑI<[D89X!pm磐$V8QxLꐌ >}pDwRVOׇ]r VH6M%+`y)g;xí^b/v{:MmL8fE!SMcTp/'JusfF:duN%CPDvģ93Ω~d?4A=8^C40 $XȂ3Cqj]e|2Ġ˃V7SY*jAtC\wC# fDdz N wO@(AKInsԑHr]yZb-א\^2kKrmuq{Iyj4W:v-NW"QGԿD7Q vz?" {WԠ2":Y[%祽Ģ@88WWfB+\€/a342K&jޡCcc;ûuϮ]5g$JWVrG>>׏r|E(/6br~5 WGs؎)H\bES 'LJX^9L!K&a}i0^ % "Lf] 'Tlds"om'6A(2zɁ1h/=FB,숾_#})-ϯ8p%*V†a8q@U ߉( Y/J uz4t? , VG*O pGc23u"I|!LKδ]XNBuZެLsBR@wC゚rNI~ ՛~;Kq@^+I@-QŽ`!Q7wes>wmYwzW;<@}?QedžVp`]rW.9IvKޤ*fH?7WΩ 躁nj-`~{yv;1mg r}j)|+Y qmWop?d/:Oyy-GNl\SWXar{{r/bPhKy .}.~ orx\gDdo<tnU4Ԫ@A@ zأY ;S3u-gd}tXY ^#,܏GQ (T, _@yWrѠ?:2),rKx3|.D #C W>*cP a[G'ٱ97vO3qlOʋ?vKs+p-+J{^ki9 }ۅ|VP ^Q!+.t%MUidۍnk% \}e nI-&pu?=Lwdk~Ysll+:Yz'Nbp.G_vk|;^3JO28-9UN8uSObJ'龽з+D SQl{9Z[xeWשhs#C.ioSӑ?=N QtOBVJb7f^[|)RF6j2+o#k޿)/E6&6(E⍽ٷD I:۰i R6f׫ln]*Or[^ҟZ2믯PJij`Ҡr/77`K Fmf ۊb9Wk #G8z? ۝_D%ҏyX5R&ί3e <Os/-YaO*d,TX]"D$ICy1k鮇>OTh,IM^jUъmޕl]ݮ˸+W}Ϯd+we*[9ntS.r]PRyYݞbqʄUͅ90hTE)YXvBɩ(^eU6?V1m:}oHQvht>͑pIgu\ubOڭyM|-_ˮ|1gRiwbSn\Zcښت3ێ-:Mwv>o͙8ӴB4lq szRr!nmtSnnUnqo1)TtBj:)͗-?m<^ڴ8;y5|p=v m Fo8;#ܜ<彬ͽ%vo|zjgN%tqOtWucz4ӹjUn͹QGQ/x2m:M`E!1 +!FP pHdx'R GH- E#nЩ:8:F8\ri.O oBL68L.L>v3tUg;nTWٛUvtv&5綖ܗj[m F,qa=6P*p园aomҬ<+Q:q>սo0XEl 8.!'xxx!r11I$BW2e q2dܽ~b6ރa{g'٬5R\ZJ[kk+cs5m-ԲVeZʚfUb+RJ+CAt;}C8oI&+2T~taGbSM3 32{gc6gkϏ9Ѻ ; 1 ` F%hcE[bicy[`Eϟٞ:sS.+z!X7 ruO-+pMW*cM՘m멗qƿx?s$˭xo`9ovڧrH /o8/;"%?V_b2q_$GԈ#\T=_Vt(4#M*׬fМ6Ҟ-ii~QYpkՌI},?[CfagI& ieW LIU'ngg`L'Yj-{ǂk ֝1_/m{J-K+UTbDI.N)"ŊĈʗ31lNZVز=o,ִ͎uv.N7EnAK[B"?Q>\\d[M˱&nʭ! //b//Rwokq0M6Ɛ 8t:k[5no02šn}^0թM}oz;Ͽ!I`'O $: ,r@D蠹 54L@I}RWH z̈́9SM-uFD$ @ZDh@h-L`Q(]{qX`Zk)9Z `y " XQ+`AUVʪ^1!ƃ5,: XW뉿 M l) Ɗ\3x6B[J`+l-m(D?^OiKd4.lgA;ʙ`'9,]*vS =V(*<]p*@e\.R4U_K%REL.W+շ,q-ױG FpnVnQ[Gv՛U p-pws/QQ~\ C,<&<Γ<.~@Wp Q(ꂗ1A8 ޔ[GD +'1% $zG |̧<3>)%+\ fķ2d,e aw!ׁ?U_r50$720H Z2aEB2a%H.B aeH)]TZZ iԼ t [@zdk$l7EJo! d p4䔂!p B p,B!p pRp $ʠʡ4* rZZȢ؉8*XiNsPh桶Z<Աf.xi #Nu^B:;(^})65ki1L -UMrXSݷ#w~{ǺshCHt~G_%!OZ>|n/}+ s|Cavv]| ?ROgs>T;Cˑ?y:ΣЅǠ K:CX zB/IzBeV8a9']0@X +QC]aZ S¡0BeF G(FKx#caoxi&(a Lb;>V*I3LWK70ߒeքne?\XvY HO5.A!,{.TtKyV4Yj3w= ZHT0e/lT 4g:Fܻa#HN8tE=I{A;}f~a$$pPxYUp&LG)Xp8NY&:GI39NSQp̙Q\рa!U Gu)nM+n&; \mfԂᶒHpW ¿ Nx \ c296:H TXͅaq1@0cP?Hx(F`:R<ȩ kRfDTuD-3!fNB9bj,"1 b[7a837rbߓS[q ʃH$ \nQ1ĠjX,YednʲVR$J2DTU RfR7VE~gk!f S:kB;sn#, vd\@Fb.x}cl6@&>* S&.v-2K̭! tz't+XV},Sw֐]Bq,cl!yd)'*m =ExN\(/A"kL-_ݗxSح'Z""+jI^9(|}S!+SΫpply)ِQr"_%;ɎOe?n~ 9 y(DBj(LFPH%Rʠh Q*X Pj6W.!JP GeJf$)(UCiJYGxP<,%r(v@Oێ ςaB ..1*Uj2*W̠ e:T *lT=bqfejqףvרA?jT&e jV*2j}yl#t&IT7PR(sQR[CGh@՚ѐ?4F!hT-q%=PI-ϙYfsR}hQ酖hY1VhUF*M/g, lc˖n}Ҷm_M00< x@J{zna`rGrQ8DT71uT'Lm FutG;;MsyVXl؈֏٣b#COsT¥/>ϮL „!7DZb A&ɒ?D[2Qðlc,<ȓ7BQٴDd!V! *h+X,d֤Zd;&bRZ ױlxJب%01c0C^f8KOW2C {GL%-h01 I{ӝ2ϔ\a)$L +W! Chpsxi]IipYnUEMk:ԗz G?jXxN#M A;ώ󑤷;g7wwS wHD24Yhxtͩ8ʸMzLu=~6`H ;U#\ 3c|]eSarXp- nVnMayXռo%wYPŀj`6V;xyhNvRl;ਗ਼xu}J<:h&'@Z mT K_ PPAIUt t#BЧ`@da#"K Lqc \%7aʰ ̈%NX+`pK+F70K|pMu}w*xq\$|4>˪<(Nuf4Cն-]'aǑi+VOH= 9O$eRZ鱶^4󖥷X\yV/# +Q^t?y~PMCuAR?9E,8L#4hi_$qdN!:@:uȠLEÁl @! H (PRr2 Z@%@PMNQCE-m:iO>N61~KiS):vջvN׵{׊ 2QKסFg2 Pn#F>g1A1`` yYFs!a,GXdDDc yUF kL6H#6dl&|gR4'_4!fұCڰd`/ӄ}2L3;\ԩuu @]8Kcw`²Y!˃pwpA{V=v?ceYYA{ڹΚ <>anArwD~DG#\c:]#ɩdj:>U4:j&"}WO +|JQB_6&;"wFТ>Bw(Ga.~`GܛaˤH.kbdwQ[W{1Ҧ\c׵ώu3anJp;]ا;~oT8"*9' "xP8\O;'oOS_FPvp"GX9aK<' VAp"Š)!48**dopz05 j/V `tJ5Skڨ"kcdB>IGQxDc"C֨i "n_ AA"HTk T8*>`hNt UϡJ ~{}9WGPRoU,,RFL\BNԤRTh4@PVN^/``45ؘͬ-wvf겛=_ HRJ[rfBcBt 8ml]ۻrpp͇#wwFOO6oo>_{fkցlr92&ƃI -Z6\<$Nܘ.C}-"HHKX($hakĉ+sNS(Њ*$N﷟bET12?# Hp Bʶ9+WWJXjw "i jlFsڟ !Ii1=zfl\z P AC#duMqLb`܄%((qxx'|!qLL"qE"Zݷb),وrl˕SD2%JQ(SMaû߿rvC8rc? qT3gœ;߈7O&\j69G$ViPsѴZcYcLwt: QtKW~n.sKOOĹCs{FǜW}R8wiV6Շٙ_<=~IY10;BGSӢeDxe |eb˲p?.=}Yn ݎIsnjs)?5f]`4$ 0AL8`;3mϔ]&Mڂ}[6LJsD KZeq{=M<!xxW^Fu`qrFp{xrqӣHH~\*Q<_oGW-R"F{A)q_"7="S9\x; @l@t[6"C h+e$rmz}PBFE`+ lkw`R!#`nؖ]6*`FgV:M§kD*ÊWɕ%"3J1y׀;a4B*9|<|nQT~Ukq Ģxe&cXY#g A)e(TYh@ehQ"7 ~NhZgS+9GN"d¹s8 ZNmzt f5)8N-( nxTʓ2?k-5.bO4ЁbSfImաZ_c 7nB*3%":|JC! bCG,D1ػ]/F8AڣNW'l`wس.→Uֵ#ɤ܅>rC@A^޵cZ̳R\DB6P׎>k$ jQz5_V`kz홡ཇT* $!g|Vk_ظ8r{<׻ql㫉dxQ p{~fvJ_6 p 3IE%$)"F╟J2*?@*u"\2nhgkw7|X=0CVqiLs ['FMiyuqjbv`c7%[habRH㐤e&,,MHVFq@l;>U>!ap10[Gj5 j9g6*ȜMCb5zllbC8#{#jCCٟZM`CepbT05UkKM)tqT0ʡV#/_6YZvH2jRTHHZ:LSAƉa˥0[an|CV链[ 8@w(v4d +K;0k[Ax[O8fMA5k9$*w:oDjDDrwW<@-vO 37Y>cẙsK\'tPQ 6pΟN^6pUorz;4>[sJYi0Vo }r4Be.pE!Ht)ZwYP$;-5$3+*;W$kP3ƻ A%%ݯqbxbv*WvNdK) ⱓy"P@Pg/Sf<; Hz8ˉ$dɓ]Op0'#z@)@])(j!!#qϊd3;hjbݔ$CåL?$'lei(ͥbD^6-.j<I&b  {sIv %Zjh2̏~ *X_πeIƈ K/2Ր8B~Cyz#kFpjͩklFDE51ϼvz)NR,DZރHPW򉯋PHdfa;=ķpYP_?xc xrp9F9Gg@3wmKx]`Yy 4@>/aOtڅH&:> Cb%)$D4ͭZ_OI8dRU%ҏsK?80b.d %A> T#\*N!`$(;i?IC+%l;F0Ʋ.4m bǻeI==b7Qu 9o6n[J"jqi{Ӷs(&gЮT%:u C /@&s >@/` nGxxʲ5f` *]E>ӑaP b*F$Ǧ;K`"ΰ/Q&Ƈ n;V(CO;Y׺v[RB&"팯O1|qORJD_smuɥqKOP+8u:6ꊕZc7 Tp[ xiܜ{Dp+`nǿa&+kb9x˰Ӱ @1'QQ=n *"ۂ4Qq'ŏ^>4X)F13b!{%VBR?p.߬}-2$D?n Rxƛ-.gT?[MR++顭Hp^u"xYǮGv?}']b\>mݎRcqю+\K1-C(Ś}'㥏1%rcZS[:D1G[~Q`vQa}L!&9QQpegJYH| %GeD3`yՀJ 3=q^5| 2Df$:7~v`U+NFsxBl8^'S ?SPBb!t0q+o5ѷu%sT{ wcȥe֋Z-zu #12xhq)l.30h}"Oƣfߤ9r kՒ 'D_3^m}$Yk6e;_h[>0TޤMo,; a*b|0Gk eC.D ͎D^Y=u8ֽ3BBx '*HeVU#%Z@y+& \S&`8M[jH=?hI˚:BaԚa3Q#m[MUKuV͔AP%o <`]SVE+&Ƈk|pt5m"9BBYI#ֶiIVzy$:Y$&^{KBB D;:i4/yĹRRx&'̄=(O‰>EL=!;lM%,Xm&y>@9U #Nto):ay;dh_:a1B4e^ \pt?VYQWS|D6{0ۈKs>j@wpFQszmU>0DZh(L7\i>B(0;qp ґ"UPfض$)Lj7J]UBA $g}?5UyDZ I2 E96 ("姗f:_/%xTq&\; L`U)5e"K-b"œg.>#lͧ=vLcJGW(RZP#KgjL\x ˋ!ӈ+m%%Yr-}í7L0- =}!7YJCa0pVwUuo O`OhWZ2O}Fn^f k%_#v M:@fG*nF41]#.y猦A6 M8.<%#)ra#ʹf\՝1I89:D'XNi`kX6]ɩE{cȭm6-w*7Hۭ/bXaeQH^FVg#0Gc>q/*'3mr[XJ]-S TU=M4gZWg޸(8c9TN*!Q@Y~!N~i0[]Pn}M"M ӯN3^y&_F=jThhu*j_pZgX5fp~N91Zf?ޙJ3@$Gpg~ $sFW%,"VB "3z٣1C_4-]yz{2Ki k*[ Aj}j6% jR K䪧Q>Ӟg`'z(gv EȍEi (ouX:g$?'?Ҷ2)s+Ts;3Su|_s0Y|hC>%C}'R KCE5:V'뺤{!}$POu@עL!IoQ?NzA6k%%?knNl(o7y''!ld&=õY|A<"q)؇rq:D4p'O$g Y3$˻G*5 %EW@Mx'όCRx a6*%!i KjSy|=0 "L|_#m+_x߻4(""?7h-}pلK s~^[aRbA$5DZ!6'ٗXF1P k@yIA 5/%Й4aJKa8q+mWg=(ېԖ\03wԹQݼɝHՈ_,֫@%6JfceG >-?ki>˕A?W]uϾ}."=r\H5A/BSʥ9+a\Hb ={)0u&r,Ͼ r6hK~Y&Bhp̺Β8t+D/ߌ~×ƞu bP+qp( LL~،Q'/cF҈yzrrYH>_[9>T O&i!'lHZ``N 1G3jO!w&`] Q@j*v7~ I-bŎ\DL2/-9OA=%H>fd_My8oA='p߸KtH]?%eOi]V6Uk24ώ|In2Y<)~DóJʊ&6SsŇ4.CE<0@ypf_dzKu$YU_%lo_]ѝUqQ.{__' n(Q \rf5XkӌiUrYܔ|.&^q%MfՏx|-\QEg_be>Ree(%X^a2Y KWjtKT%Y-t_%-9m].$YE{Nپ&݀ UTcZ6^z84mSqgo#mMgٻ'| F.SӍ\[jqy%u})q#hdflINm+=`cڠxNa'ng zsi#:TB8G GsR ?:71\ TXg\d9;a2=j'MV_^IؓNUiUK8?IHQbAӤS2qK_*`2.) C#5(J(/ UV"pQ"$)_fL5RDޯV5%jmc/YQ6aT+,K+Of/nE-^*JnKI鼘+p:ic3jBK h,n~veoQz2F )7}2)"kVb3d3H5UD-#5 |S#Bg䅼Ǚ^8VXp<sdh3[w2oE)(Pz>3tAhuub#i-Q.>aʕU9讱I\rxkMUR]/RAr@*<4ؕ帳֋R2Db|Z['ߕhsK }9ru#PHjǦ׉hw5Gݛ|z]aEkh\2K e+̄;V@p9OU=*543F?:9g!nå+Ǐ/ۃ^[牷> ʍ'Gqu2&9>wr[{< ޓgQgyɟw;L e??h/87.B;,]ag/[P7*?͊P8CA#-=WgDګSI# tmN@צ${*u`A(ނOU3/&[pǡ곛@PM_Y2;62p330Ikj ),*pwWP GM_n=|I=OC%vб{u?fO38.sO+re,)ː@#< V\([1 Q|ykT(.|郫TznA! lt\nmdvXGRzVՓqp șFYaFdsFe݇;ضjLyj: *='gn"'zU ϸc|W|k Vn|E@@Wʟ1@|{LW?r NAIjNܿreN ѤFІOYj"0? " âI$M{X3=MK L!op=$bLME$ "Vhx|wQa:#?pM*UT ͗Z~<6b'*7cN/jP(-@}qծKϱ_ar.ݘq冪4 ?uzh=:(#_G[ɼ728K}0*^0tAYߙka!34o%E8"ƂGL7*v^0”{{˽͠-#oÃ&eh- $FWAG 62 orx_)d7toŦoWr py~gφ{+G5eIRA38f]F'܎b~=3B8E2y\It<)>Bysr*5 Wj+)| ]X@2o{I Q#3KË8WuXwh3g"oST 4:+V؃utV V9@2ñ@lr w-cr pDm\j5`t:L37[,d߁ƚu۷#bk|W Pv}P=}ɾ4kGC b"|epcA3i`;_{b<\Ȩ@*FJM 4u1 ׹}^C7*+mIKB 'eJ)mvޔ6!Ǵ1kg9뒿E: ȨWؐ]k>?VǷ ՠdf_Cb C78C}Rt^Tl.L@a*x4;uSiIU"xQƫFV+؀RgE_+hf O G|lC!O0s(6^$UZm NY++W% d)ZĿ zi}d\﵅͵Je9<yQB*m噮@a8AyovʒVl˟Wdi e"Q >e_-΅/<%J[T4*`n߮OO\;RaHf3KNj Msq/7=Gr܌_H&Uf#0aQ@ԼA um7MOP :7݉BݕӮfwthh]5o,~m;Fe܍bfkZgAiCdrkzYm S*Ey4\O M΋a_=s5(in;Su}QfyLTyY1u'5l@1ݎ/WGaAaSrv_؃Ki\<-  o<ߞgI% 㜴E"Ϛߠncc!b*/T^!^Ej\ &XUH6ezuӜcL/n:k }+Y._gDX vMMR.3I;}Gr:d*L!ݪv`PMkNUn_ɸL*ȿ\PwՂ˯$æY-Vfƻidɻ{Ta7C_Y˺j;%gVE";DepS1*PO&n{&D{&J,տxdx8mw+IҔE]G3/k5OO>ɝժ4ic\ ?kSN8>C]wW/XvHa`~Aݫ,vo6WA]mqFq,_ E S ĕR<[G!Lsw6.}t8BZ6ur62a^F؎g䤡LK1 me|K-N |CiU~oA4c17п4ĀءCPĄ pMV_0u0őo\T[0>1=Eɗ|AJy2 w7Kђ\3<CQ>okA8/}Kf{nԆPa"Jk՗i$[[h_P @)Uh#hAm xr.Nk&>lQW'Tr^FL+$S]y20E z hb`aU@kMٱ\?xGSkCHt(q j>PtE{Ʉ>ogd4^ AHX 9h'Gn09420q'!;|gL dƦhl`2(&NGAoݒabMIΝ@j|7|exǥx38jf5X;O&xS3æ[^ϣ4B lΦkh?xY3%L,1 R5)9ʦ ݔh-e&'#S_5APΊTyE3}nxc{z!REM*KtRT.ߚ2)Z+x .[or~ݚñzD_L GO{CSSmXziP,^ȚRW^iE֑\69Mb56?5f|19ŷ'^\\ak𦯺C,_Z\J&%K^҉A䪘^{:j@!,dOD)6.*nUaV "$>½R4K؋$J4Ydz{@݅7Ǐe u]֧}DoW"P߶TK}?DT@UZW_^_ k"yCpYRX8vBbL&)F~Tp% !rV\r n]*j btу5c]` K"Z { ]7@7 )aXo5 + "hSx!{_PTggv4L.[JֆOSLA+<<0<FH0+@ll[bXٚ?+"{K9ghfqW+OW8}|7ͪtMnh*>]k㹭y~U- /)ħn?n2im[pI' Bhy.d"^?bԠ Lt{[S]iy Yxt~3WJ|a'hdiBSJlY#PO藶^x 8R7'qɩDȩòRGo:|+9C;L2;ctʗȃYǫl6A}9 hV$_qU0`ѰֈqYi ^3 ~߻GDRlc3W䡡̔)fgրkz]5~Vt ىYW}|{ LN9>j6FKZMCSewɏox%fߢlNT?ӳ2%(:3w%D oȦʀ owk(L}5``r@߭\3~ і>\/c7m}.d6+yA--@hde b.h_ϕg,O2e׹{1jzX8UCS?L۪v"D`ɮm %+ iū P'[ز@:h ,%JB aE11)7aWS?S& QkikRei"43fQvU1g$$DEƻ!%Wi JLףL&a:k-{=',x~p\47_̟;Ň%d&Knw4ֲhd]{ &&Bo=2uY@TQ>ZpCtQe#4 E=w*\㹐:ҬRI6,"LmGԞt > S `!dxA 2 @~5; h:|Ar%QŠtMZݚ{.[ZxʈZKu#5c(Tp%40M Oe ؝Q14_]SZOH`!wp}S'2-s]\ }uBb@h)/eIݭ'M&aG{`۰'3@_wYP n\QnbNe-9E  9XaθS\4\FͬLg~'y.8?'ݖxfi!HzT>_$.ͨŇ#gٝ'OV! 7@7ygoN)$"Y^U|=?O(א`XQsH_ïX +xkIڣA]RUtc^'뿶*ftF'R9LG"gnYf] ڋi P\¸.1ny$JlWHcmǔFHPu\"f:Pz]Eѓʾ? dͽ3 d'&.Q<ׄ-{rch+OǏm3l2ݛ)IlVX7.јMH`R!h^J$%BW{dYF.|t#mPVΟ1pdt*r"&f4G]ɜpZX7O%e Q~dOȔ]dL$Jv/4 vĆ-~PʎIUB~^¡ fR BhWe~m\ څ[PB77R q= a@LV'_s MLb3L#R#6p#6P*{B ! Q/58f.ȼs('OHx+86Lt}]Y&sm ;n8Etxݙ5aBJO>,iU r.s=7ݦ=S2:ilM2/ݬ_\•t5G2{' ςהNwꨋw~  A\{B')bzT%Wh.eNIH?LbO=tTU..ܩ_=5 &[϶ֹkDZQ@Jg7o?P]wCcFVs&Ԡtj:q (@JЦyQD4pCXF9*R/k/ xqV~PV )D50va8>`s^w=K^I,!dDrzoR/x>/ﮗJ㏡z̖4Q8 v4?KNيP<X65<*BqMzsSdWkhGeM8ų˲g7>DNFFоopvby ["!FH Qh|{%7dždcfcyaaHKLO|0!]쥃gW rU #>)-s,<(&'*)1( ¸/@7`].Lx!|N&ַF,N_K DuO; }V&bENUD> l!n/#,B8ZFIīCJQ!RU B* I.xdb0EW!KU+n~?Ώ=Y"U= YR_qSs8m\u+PiNEYi6㚑YI~]6L4z6TM~; NwznY{^<o+uIpLoLr􁺹,|[ GR,gk 6= %輕:,gVk~]eܾ$pGrh^މ '~Lw[>ssͅeӒi>DʾC-r)|ͭDVAJ PJc U=?7G_$[V3=6f:ԋgc a; ,Qٔ?E4Zem.y/țn]jӰDP؍C _=pu}Sn9G} I2}QMu;<@ǹ4eh/Ce5W-DOl;IiT^\F#ҸV0yhZO>ܙ h>=y@rnu>|3PЉO*D1oHس uNPSr)1 Z;û.bC[i?/vuQ۶9cX35HWkQ9n @p{ u@tnbmQ;ŏ_Oc[;gˮ9tj=vIí*N K"H\EN9B<,m K[gQvT6i#X !b`rFcJpRWkdf9HɠSܾ&E(A (ը 6ƓL0Z_׆qeK~GI9!GyYZYK6l{K ]ڧCUiQ+~yAޅ"rMNQ, @x y,/)kBB;+{~p8u's_@eI|}ePMܖi"6i4Z.LLYF+z-?gm<ܡW&x-þ雊;'3Lk4?88;ə1I,X>xV8Kngu/IAG.e2w-a,8v6OW{rUv:g?p} u}􅔲IܺZ?59O/gUyߎ nǤ~MԷܿo$և7%?z7D(z!G$2M*uC'"޶{=n&!ܽAd >zPhjD~u5MךK߇c\O-{lojߙHK%-UwNtK ֟כXbjqF^&̦/w`!kMk}8/1n' {cS~nOXx$W<5v=ZFh1lQtJ?E}4;l Z[~}HDڠm |CsYDnۅNF^ wթ>2[h@r~deݺqCꍼcd?^*o i,l/Qxcm̂}vr -a U4x?'J@JV7n?tIxLkSvOEbG/|/R?5lyNE<&XPv_E sus`'֌xNVz-稏7oTjerb^V zzSr]]N{f/Tf#ոQ~_שي ysKc;P* hCs#u{[[㸝i+S>Z)L꫋wAG!#ʪDZQYZ@@|3XŋNO2uHKՊe áX@PC?v{yl3GZ5G }SZJZekdu[@LR!4BgUZŌ=%hFU׿#Lj?Oђkf%ulk&"%w&xP*leK¯ yݴK%~6,%sJ"$ GTuڵʛ1bSER8+6~ڍƏvɗ4XP "rD%ct5#}Ko?/,c@[}h]bz1Bv?C"0L#L{d142G? ;p_p6݉rZ^h^W-?2Zn̍1 mH#++|˷Ikk;]/V"A]r<7]S*Bj5|QG/M֯`RզU+#"I amLG3|P^&֗3>mP8"vM@ kE#4W TqyrL7swR_hꈅ*@et@Xzّ'(.n/_>|Ȋ#aE[ ~ oFu ZN\/y?ؼ|LyJV`l R3cX[,7Ug/]K7Țo@Akm}` &KP=.6?3Ͽ($|8q_P*g6:D.qa 0 = Zuh bWwxW醉_LK$\._{lKh 3/P"j-] /PiaU?[{1 ^"x|5+.bNQuzy=ROMHN01G^*%!b*N”8DMBgʁo﷡Hढ1F{y[0Fb=&S= 0 R"^5&U+l&.~"QP="pvmq񏶍'Dgx~1*Qȁbc:sܜ/G5CH^5iBOh@`uI0tv&=[=ߏ kJչ$Iv{3bY Ӄ 2I?v:%*r~ rcc-vCJBFJR6~| mhu*`gѲ9&Yg4'4 |OG`\Nn`j]vj`G';(ܳz9d$:#pfٕDXٲ{R[r&w_2k,TRW| g4N$?{(qqi?x1J^ok7V@eB93LSzn}goO&nčhgq%l@*y=<.'WNb@_/Rޡ݄k[.Jm]anEڟ'Mլ"2]M^?:GnWQoOV}YGM{za]10+ľ1A։N/m^Hf֝n'7է b( %iPR1 h>y3q~~3&vyųDJ>816(pKʾjE_$W*foJg2GB,'RBay.{uL}@YժZΌG@UTCmr8J@p u֖3'3JJE\1p KH_oĎLrsb_ŕelvou~~~=-+W&nC̥$>~c=<`6_P0HFu'=f;?C}3u=XVoP tk^ثRgxڪ{RW E1ѽF<[D|8ϿttbNsBG%>y#Α/@9*p[̼,?evyb|2gLiLғӌq}cxlHv{>0gU+D:9 p"n8H L_**"=;bܲB#j1SVݜPmŕdTWWpVM/JH41]p/EEyWe,M}jӣozbfEb7T $Hq|dUCx/g/C0[WSuQVT|A: vA65PzSCO̹e7JfNs XHq\8pKB P.ytBT38-s'th--VŠ\ne+f<&3rj2+pVY-4 [Denq=.ߊq)nih3brI$:YvB Sϝw>m[YɽjS.[N6H֜:;R^5 ZaE?JaYt6|OM K˿}LG/οSNqy°ȅV䵼5߉ "د)1R%т:M1Ovt~*^X46D56+Nq4FM vU"˞{,C  x ࡌ_gNf:eXm xz mg AS]4܋6r̺KU?sMlJmB˃ɫjl?($֖ĭwBN` 4S<9흩rMNs &pc-D8d]齕s6ԘR_A 7۪F7JJk-SoNzspN!^.$4w.q7GZ2Xc<9s_ ɭU\v6^$6y .Pԛ&qQ%X"ZW\8,וG9̬l~./!ߙZ1p!WP%؏fP)h4am.̑hDz ָh`~ß^S xݓ~Z6f8_ZOXSvjY5z Vȗ[%)IR$P>_!n; k^"qne~#ߤz'J,\"Œ]Ư;:]_' 諆vKHGezҦ+EKI>ncih<&[1ݏP2˯mWX;Д/ K鉬Ýd.t|xCʄ4` ,>¿E>3w$%(1̫5>w:D4EV,Ϧ&R36N) I~MB%rۣ~"1}?C^qywsEd ᬃ A{!ҚN'B -`)^dr|!# [K%$8d.ARZӛ ?̄Y2 p 5 l)p$4 ؟9jOe!0%ɢQr1誐Ct'B%MܑRgsB}e^'sAKh?THvʷ0zB1QHF6v)W-uLմ(>쐶 beV\ZE~vX BOJQ\AŅgXFϝcFFSB KƵug'|jقLG+(%ڞȁ*!2c,()ZtE @(I#i=mܵaj*=I)]-@.u ?!v',[ӝ<^EH䢹Dy8fϣӄUp 6 :. u !*TXfƗӇ]>3)X=IqdS^5׶[ja[vʪR7yקyky=KcVWn K'z 8I-~`E <l75M+'Ϙ`aUPo7`S7H+7PHKldnWh&*Q!uK!ۭ~av׆h-޾m$j`z\X"TV.B.H _W2E{+Pr|O34^n\ٶ)5<2-fq1lv%k#IiwB3.Wv`Z֧@_Y*ܫ[:x~k nXڶ+U')5|$x ?)e^dx`05]rQ ؖ|x2SZF|̶St]t!^S4(S ^[L) P H$/Ia$-VHU!VAJ,& *Nd7F uRLDr`azNa-~8+:.;å $׊Ǒq d86<ћF,Fv൨̉hQX!%F:tķ?I:jVޅM!}0 +E:zc^{9Gч\)~jg{[d˿v2/@/`8]qt3$EcځP2S8gkwkR{uk4:r_+(+>YC}^fN+L|oVl$]?,!*B,@@qitzZqw>.<de%cI޹tKBRh4V.O 39sFI0.V+n\ũT0I&K挒x7Ds쓩d +/IKӣԍ顰8 S'1'o_mtu=Y1W]ّpvFcTIE +WB拘pWU'$'*&ɃtU,Z쨸lIA٣TU ?;,.`SwfW! xGtA, ηᏡb9%p$JO S"9mnnG·sH\V }IqP7à@P&8Pmջ%P!\-Tkr(8edMz{]g='rT8辅>xz΍xqBu|0CnGbR>iGWbwHlzZHHͺzE#/#dI2Ql +<>9E20Pޗx)\;muqzUq^HeGc5]ɋf\{+ 5_Njq@yOTL|<1WGy(s'kmE[5ƈI\I&q "Y~q-ԅuwiZv} m6ZGa J~\:bݍ =(C=w"qѠM}E!GPNG<<hs$Q< s ;VNxQv:[8l;0h;|Bb'ª{deAMl+m6zˏ vY:J^[0y.y-5#vc6 ؈TW_N:m3K@0,t8 _IPI[gڢh=0ϊ:d-!P#w ^_QL- Dۅ#Ҭo\p H(p:ӹ:A@[nhZd' D$q[!t)'}De7ؐ*Z2 aՠ^Y5Ƣ#k*uv}fJ^k3,j, `QnG`X.Key,c!_vWK6㓈@$|ǘ47 ҙ}e}}2@-~`Ȃom7a|3s_fT-cL(C@ibY:#*9_a4(1 .࢞Jon<Ӄ@,|߅D0363"a:*MeK$axfMMRI3M`$!Of)bmSS19'9E  8X9J z'ba !vXȶ{YC7tAC9ްWGxCp)bZ"I$,p=wd:8XHq1.y#r? xXV|`L!NPGI*1/ EzE={T=^ 3)b!B=%;[d Z0d^pٳLǖt,kKC슅2DvawNy.z(][ ?%B Y6Y]볂30f vy6f<"{c'P2^h+n`XFGݯr@]sn-@6)W0K%>ܩLm+T.2u)|c<>JU^ lA OAQ/F4(us,i8q=T7@ q.$BcdZޜOڸ&- (vC\28x<_oͭ_׿Uw {`"^okK(w`z;'_r \hHW/&ly-d%M'n ;~DwbpwP!>홣֦fqiKNdm[J/~ WD|,-nmOju@ 6t]p{Iȧ|Sb9|1'+hJut0Foc6R=_ptGja#jVK)|}ϞsӍ6)ZGFD/m]/U|/&Dwu:94+j<.: `fwsQ|~bf[[M2+"W&ZkwzB {|umi~|) |Tx1V}3tg5E$w\,Y\q}WgIlE X{kI(d{V,%g]-R뚢SiR5Y*'4əU%S~T~φs1a"i\\8d0ݍEWT[R! NyBN:B8"G5݂{XԴu|w{No])ka2 g޻SMZw|Jf#Qݟs.!@WOkXrd_gw7/ܟ/UG>.<:qKƎi ȐQjv{N۾-3}0D|$C,j?OlO5263>P^StCwoZ-1&̕1Uf-$wȀg!>H=9h4h·2MK,|=ufѳ}1nmvT*~O-Spjg !OsjaWN 6+'+YSwVDM@$x6Sm:0Qg'vhC[+yu lueQsRf"y;K"ZO~O2= 0D\(q@&<iPKaeʯ lG#yxMlZ`T8*eVUedJ [JcFCdߧ,mRmP)>Zf-@0\-LqKڟ!c6I g)F, jF)Mџǎn[?2>B?h`,Xi7ʏU\9i1:F7tc;k~ 媾~G-56qAI!tj82 =Apl] ׋p=S=?"YE!f#칥ݼɳ)UH#1{#j?JK9q#TxqJÞ#(RCv$/+07ܓ8ۜY6yE{7çaٝ2Zrgof 7ys[)Qؤ ٩λ/|Oy8+*(g=(<2 NT^ 11!Q " c6m(+xy_UKl9c}6F쳴I;Hzϩ82@S}.hoqGtu#5!x.UAŅ$$(j)R4)8rl vĀ'>&CZ[dԣm .GUOrZd!C"e'}-YjNQ/{kLcݗ)ѷ{DbߺJp1D V+%zm %d4mr]3k%:N*7x~$TP0̬g0"!|Ma%.|G])x1R{oN\Vu2{9f0XWDO͹$p%O6BNKi˶o~)> X;IG4D␛2[@7/{ - .:}[ѢWrC,jWԭhEk ٞ }R6鑆'bBBF]@\J^7OľӀԃ]m΁3Vxjʀ H{[Θq-pr"s`0|mTKXS"l0v?T& ;J5=m3`82ar_rP&LNѪ 6WR\{㗸ݥåjZl`LWCg.< =|!>$8F0tlY :v#ֵDxNbJT4:`%:NK꙰ߵkBi:eyi6WLi^ =UXM@pחJVG\L#m#Iٳ!kOE3OQͅBu 0dI"3Td&9 z,,ɫT ' l)a{"ΓxC? k6MleJ^1 R ܆7m+QӽCsI=7%m] t]zq#aB2hx6җEF(%{U'@EÉ` ^y5&S{i6FR%}֊˥yjLALp| a8D keTR,Zz÷ڼY-rK+2CjD kS:nL<6it85x9 ukDv5m7!{CfuAܱBlK,Jps_;Y 8rRe%ʩMA rpڞ|WW7.'7tRVn~:Ρ0ǭm+#=pKz6^V|9;x6ža㮥%EIkl ZՔ~(P@w)y8|^ͫ5]EEA( s@|_u%`-4-)xՑS/-bs[ZO8yBp%>ytm kR hثEkuÅ8'~瞉xĦ4uZoQ;%x}jrS1{߇H&#A,G30B~q̗B%Rrc f*XI1\T+*TC7sbؑ!jwӪ) S1UQyC^^&C/[ S9Vڿuu e%G#lSCqۃjBRuB섆ĚRƛGm7 FoJ.$ϬFT L_F?d`:j]ڿs,Džox&Ek.[ъԱU2w|y.ś"R,|'~z^A*reTwj:軛.9)0i F >I}kd ;KDT'#8 ΆhesiE^!r4:i"syE/{.췴zjbm#Yy{AkݪOi.zҘG5:*|~$02B9{!]J) {]S5Q]l.^Tvo[%5 S !fK==\+z\ZeAYgwX奚Y.HE]Q!AEL؏ .:(w$V78a"ws?˹ӭGo^B%s~FE[$V16[!">itJ@xD 7EDw9{WP$9RG~vwи߭&B-(`LLLج@~EVGn? {Zt~]3 !3'÷툖D w'YubTG4m폱l1ZGѝ ?kjPd_ˆ>26kVV_y͌tS5p^ h&u<2zzA?(|A)VYG~ɖ |.Z+%PkNB(R%JI5K_50j܉XV#)bzՃcƦ hݻ/:nN=&qEu%_eܱ@iVULɳV[,K~0cz 2 RH-;m8Ceha#%'qU?W,?~WV}LB39#kLl0?d`gN q;CѿLDwl ^neÏM?a>pk`I}?>-Piܥ6 C(?'PȠߔAȋ*m UCQ9, 2PtVR`XxIvuT8 o"-#` ]ʹ[8Pܼ}r{уi`+~KuK-^БbdqWV;?Y"Fze5J1+]oz~e:^})6u4tњگe*(%`  {nB2Q}g.tG3мZ<@*Q!;;jA`nM=;ZE&|s T52@&bղ~_^bj\$ٕO}}GuhE@Rb-ѡWؘ#qf@"U i0,b'߂pg;gxloyGG<{p>4=/'r)56z3XKZrq֦aT;Y+}}fe}'v9%-84I!WWPY/ڊ:$m. vßkX)wCSV8Vq1z@A¯2YG݅~ 3-~l^^1!k 2g5h|$<)((WRK:d0_%ŰiBc (2굗JJjXڟ~8VQg0G2Gb4 BWh@b4Qwk}*e>]93MxR2UךǍ,I #n1`U3Pz~0͇Q֡ѭmFp)e:n+kTgKDf(ܪLf͔rHgN%{\ 7|]~73ITxj/3< Z pœ,GCli KG 6'xxIܞR޲ZA6`J>J1ۉdo "8T{1.U PLk9l?Xuq'QB@f@݇2DC_M=|чPz6P@% p=N7f|l+M)>  J`ʚzM \;t3ے3[r!Pw _A0A՞ ]2fb6Q͋NAg0 [b("E^xJ@O>bKZnI]`{D@DP c~C4XE4aMvF ⌺noFVD6)a%Ψ+ABPEMRH^ D_)Ծ7̉8g-,d.U|,kqB<[)Kh3pN6zÛ-B[p^\U$۵N݉4}u:ܝKXo:cѼVK'e@haj3-=1b)<3߻/T*JRU$ՑSڕuZ):= M-tBf6AJUVfN¢;]5גJe*wʲ&p1(qG事>;Y1mYWBjkCm}Ջzzԑk>۱d@fz7`vlN"T3ձP׋zX)e, "bVg@uuݏ5,rj*P7㼦nK]w)dJLԋVyM. ^IȣIޜBYoU)hPR% lQf~RGZ޷=no ϲƣɿ^ܳ.:,8AYPQGf ?RkH'@$촦2Z33 JDc d CSee&Hc2v&7&P?,\h6` >Ssγz6QMFj8r3ZK {Eft&*N_śz<41hU;aXM A-Ze`P/dvxf"<*R%+եF>\)%/fhw*EDQة',b)8T2 'TQQZDvsFGO?; '-PAg#F}tB 6uZ}IlӜ|_ P<롸tװccfx>`U 4!N~hS8 ~Z 3NJŻDsD^nێZ~V̜I^pādq_UśYia5Z9ѭ`'Dp!:kgȓ)dls'4ᨏ 4ꆍg#&rғN# :lmOgJilvB@#&pɻD. 9!;R]_-1r #eTVxmx h)uEi>i?Rλ\NuҾ||a!xH}WMIXW9mkyU#6bʏСLcMup*="Ћmqq6fHHcW{g,|^0N{1)EgG&'סTbvAcI)]s+>v^(_y* e62mm'@Z uGT@ =8N ,i_%-p~Pw?j [gkYLO*ڟ|tT3׽9יUreB_xd%8?k#mZOzhg!v{7CapΘ:'1*l|l">qըjfY3 _8*gα^_I ggdƎf/WaIwy|6oլFvqssr-E8NR^a6Dr=͸Ҩ?)fv4{Ak_Mn;A|P4-)v6;GN`{Y|rpah me`Qb|t-13?>ٻ[' v!d~+='y x{Tuw ާE@Q*8UV} Jřhf:֥ͳ| y6Z!3{N%螡$'+ؾZvNP y- /gmN|ѯ.۟Y}PmH1V VJ͵m~Nႈ/)\v8JfhmH%rh.QA@RI #T?&"%n u-I9Ayg"Aps xwuѫ0Z1?ܐ1áY?c!\ܿȅP!xw*0xVAzb~+7WV2} dZ?"B ^yQەtbc(af8<7,2%D`b.Ϋx4%mD뷹9'$#KٜIX~$/>cf$c;/(T57=3fq"?Ccڐ)'5T h= zJS+1)S0bM )v*SSX[>m%{HSBUnyj oő :(ƅw=Ǒ6% ڍQ``$ZysY@xib`?(LVmcmGG!85ZE)͉ Pm-1Y{qI~w #FEK=%{ۗJLN-+nV=Zř23J ֩tJڕ1V?M"@ʝhַd}_|.y;@5xnr8OLk[Uゝ;c&@Se3`:p\RqSeT.RY-IQ6FO Ⱥ?R5ONtfat3x%X \O&l6G1 ٦ kG-Mav'QTyH0B:)䅿&H`Jzh RNW ߿O8jN]цL}+xN!UAW3t`ʎ-Khgpj \+q5/q*uJe7-/nܵ1ȝFO`?^y~-NݠwVq&S0r/J3L;$jK$c.1N6^y)\E tC׀6 UJRF1!4=?4>NgʟMv$}*s=x1LH:eW]/ZBVH Eݤa= *A_Ow![J;1EȽKGeFB k4`>* 0|Pv7+{DQޓЀo"Xo^mډԝ=׵[h5u\4UfyÄúCkd=nWIq [ `X.]H[mJkBB#v.^jhvg%X9qst6oV6 `U;]z~8*lþ(l; v-̗'WW_OmhKYGiBVdw'Ȅ=X&zd3CΔs })u)FZ7 utE(9yn ε7쿚΋B~+uԼ&sWp)Hlkd\{X]ŎȠ^  =6($4OyU ] )|;Bl/F+4MX3J/V(Ǹ̑n4Gjzae]8l؛ZtmMDve* S\R$vup>4!S̮Į@%pQ 33f?7`3 /xgʯݧ \_X)e:Su?*z-6.xh"F<ƻ?V {'J 'G'ux8I4>BAV #p͎1m"16ǂMX EfCɆ$C–|?|o\~/̀]H`WT#Jn&jXnh }oYcЄ6*+R'XĞ!Z"I68Z jE7kgpWek\Sr;݁\f=o\hXY^yKky ]1LپE}йNlKlWK=}<;]/K/HͱUqf%љ}D[*H ,Zvyxbv,;SK)xj&/8VnPAK2x`l=F|Fc B.Bqc/^;}R:`/f_j:'@~Eс C$|LhU`wp%G~(gfgMnjOp`(UNx؜Dp4A amx?´iz${xJ"{a~6-}9軀@ ֆ2äjkid$~Zpu.P~Iq@A3RSk%8"gƢ.-w&d ~/bҭ`,Y[*̻ ~|'LO)>sĭ_~l旽нG$RHz !ٯ[s ??.,On5iׁLeRY y( q@mc+cXOILBR1Qvlj`;LH` p%':4ei&9R.2: ñIҘ5JJp2tΥv@ut G鯣2.RE`W~oN[ W,C= 8#||G9\e2Sܺ6gb)9rF0pp% _.5iנ]`S8NꜹȚ>:uglh:'BVYsStɳ;K^Q뎶=!V?"YqJjߠ:J42!WvGߌT: Ht:EvCEȉ87]%hW:@ CB#R#u`D7 )xu|q5 J@Cָ&2*8`X8 8Ⲍ4F3M^y&I'k%,RT1%P\K;1%mqAqt¥ٔ]Gd OhY8aXpf W"y4Gc\SԄf!9s"+Їh. T%<-U7Gtˀ2~LBug>MTۢOZ,'܇$9@q"S4e<7('aܮj aO}Rp0vV/gɗ35Og9IxZP+-/7?loB#-wcHR=dDi][1wM<ڊciv("e5=ģOq_נUHCU$<8`)d+1B'R>7WV;@#IpOO' i&1q{{r8E0eL1e_jۀ9 Q5C, @s~'$Q8( ;'#g]v,E EjujW#m%;%%_.yzms~` pb%K&W'4,.bL؁ w*4?Al|cDfb8/ʁ>Xg& )ZST9ڵrz˲eٲlY|0˲R9ՇSr-A?cυ'l: ٦kHfG/FiV5L~S'TcCϹ%RxL5\W.|M5@ir( #`!c[,0P!y~si%vXҠtr :̡L N4Y:4 BDŽPYUCiBPC%%%NtV60` vSU *wqg3~g;lj8a_ ;}!u]/th>V}u,pjMEKiKChK%%Rzq U͖4C 0?)A8%KK nb 00j cEo4BX|x O[naZNػe~oNG?2%\'sn^umkTu;(;j@p5Sm~T&`aM8^R<iM%T`TpT+k5kǩZک_RM%q.uBpӍT l.7x"bmbnŀec,vq۳vNۓ+^y4%ī,$ջ ܻ[z tXsł }Ɂ?_&1r^E^AQIYEUM]CS[GWŠUkmشeێ]{u{_`B¸ڑʎ63&O@P| /-| 2Ws5DoB/d +eOm?W(x"$?I0>,Wůi9ׄnw4_]TZf5ԀǾcuhF+^ lv;~N:mj1>oetgޑ'V+T,V~5WaVUOc@rSʤm"R75ܤ~ןoT Qb;l}qJih_z ]?lKq)Z|y1LC ğ$I.ȱb}I3ۆ98c$8L }"b4Uj\KлllGꯠ諅&!I=9zorHvKzf0эXj 3ޤM+CF]TgR֥jLZ-r8ֹ)="nr6{[;ǓZ~7}?\,H_7>^Mb:%tCdy> ?Iz͞v׊3`ސXȊ{gS-_Tq0$CBѻb.P.>Dj._BIՊx:c%d( cp(:o{znEycU'^f-!Gm?b6[/ Wm5q?zݭZReev 95RNCKn97 VXBq7gn_?y w;Jչ{EOn|v?*ދOCq{@׀/^{Y0?hv4y#l/%\N0_?@o/R{>=eڞ6 Ͽin$n(^FxWthB%[9.XMIF@N(b0L(wauA^ ʭ@=Rnu0E2ZnyLwz=eW%G_' g/_^%7,BbEVp ',XQX&Ntܘ W0tG4iZJ,rᦃ^U- t/!G֎R'z5DS0pHbիbƎsVK >&CٗI%K/+2[)3=?FxRT(4LA:R"Jyv ::e m Cp*(z(s$aR{+k#z.RI]i-Whngh\, i +YNb,܉ڱH}!lYkYôVQM[ ]f`, blO" =X2E7ΩD0Ng1RiG*2r-|- yI0cgdfF1,IL'^ɔhCrC4˜z=&NI+"ej6= ̖ %o$mB ,C4IZZ20 A[Iڦ\1{Cb۶c_g釡:+DChHMTcxĢrMnAFD3T .y!W*m!!={&#k ^\|DHasܨEK.&CjzgG TwXc(;*#~2wAO!3IPG1:lPR/fC[O΅fGώpsq(C|G`a%aguD,:ocGZykyfQΟƦLx形#.x0_ uu#+m1P.d6霪ԣ*2.HJ}$DHusR7tA8MƤ`Б\ uflGEɠ\Z,jT)݃B3PKZ,Ucz]RMjAނ03*TE1Y+tu ;A %J|kK65jfb!NjT qbA^#l0ڦJ'.io5!V*ֶV(&vbBH*h$*ŧN`>%e5`P{xSR*ĜP#W7]υd0W[lyFjĥ9ۡ3'qr7$fJ13T B5C] ,^VLUpa!bBn?IכM&?콏53&ww[l&8N@1.\9 TJ[DE?cH*xQ-m.$j gAձPRt;dF1Y`BsvBt(UbE^xDe^fv?#0픜_y8Sn]F07}&4EC4bېE< Bnn_#p΂_>3=]??k#/K@^ hDT؞H}0Hʺf6L $щQ9hQQwQup e1GC؛*kHR`Ӄz|G)&}.Ķ^c't6uE 50KsFf)hBT:?NG6aC}O`& ʬLbz$c"(GkĪm.z٢O"Sj]k!lFtO L#i9P1K`{96b#i[s!s@|͘Ia:EP?Cy="9zwmFF=պe+LiYIώ-m;NguUG[iOH;z7ߛ1'opD$&"'$$FQeB-IaTy(,ư F"b_w5OY/s  EI۳߄i7ۮ?^W"0x1Y.$^&=Em Uv3 7E- myleQCꩄ1:wn1 4hJ[LvȲLN3\^j9m= UT`OjDO}QIu2i}U3Jǚsr׀#H莄%D3DFAmkҚ9qoDs'%|?!3 g*FZ¯B>60dj*2"E\FP(sXX48FhG&:26E<H*hwcL/179BSM|l:x^4_1' VWYؚH$(cmT5FsJ٤].I,iRvx&#,Yvri%Wb^ ٚM1 )3r4M)Fi!v:i3Ȑ mҫNXtCvYՄMX5v˜aef~EUֳwie7* -&t+muV_uam@zA0nGwa=)&G+5h[\0 ʹ\]VyH*I}4xzJPm^sQ/:r%S ^k:`κ_pΎҨu&>QQ5Ws$y\(j=WyT-Ov(gSlX$4_RÖ8cj5:?jȍXfQ B6u/~y.T4W bJYX .YRC4&(UeNK%-(k:粨XlhK9!,Y>W)& }aExmpE)U˳Nsl*%ɪr"*߀͈- YW5)ETR=Ci\jk],YDX3Yk+]^ΑH XT'C_(1hkX׏Sf"F?im8U Z\f ,AqF*3j0*n@U-uXd2C,m5x6\bc~*[Ӷ4v|g{q'aqN&wQf68 $5x(<.*&YDMRcq4j)3 :J?p%F4+|غ\EPi׸Ɠf2ob؉O7M2$ՆmrJEX'?K4*9%~:RA)5bT{NS4BRktlݦGTm6 ,3Pc8.ɺPi ی)L0I=3w]g9 ,>+nPN }=Yd*8fKUOlȽܫzoJlzKTi&ٱz`BV^IЊ[g,!{zαo||u.ܹ0q.Q ˂ -—EԘdR$AI".ApŽj5 T+V5o5vWUMEJXb_]a\j0ϼ&rvyj-T㶸ZfUGlMa4:m >q1`3ngB rjyvellٸ&4ŵYB=6m!x&8oml~\i{D-r7Sey3Fm;T&o8wO'0;5,w;w PTr0rh0a?"1jQ1F-wtSb:<ǎb\q3_o*3hG"B=9$akbCtG*20 2ONBn SO]9SZ &VJhͳHԀuP5b!JQʡKtL]!sɘ Llq*O%v4f벙g"ݢr_SEd}"6ydam6tMak%3g׋-9RhIڬ80͎#(}i_ e{Y1'q栝B.B\se*ֱYlUIWm\e,k쭹06mo 6:NqqrdgA_*b2d9̉ ܄y[<_pؤGU]  b3nct5l/`.›,E!ؚL^4Skhbũ,~eK.`e,|diY}ٕMVe/j^ydVOBV+*Tť&?msR`JүV:ϚkJh]m<+<׮]GN$]fz4@!ۆ5nX#DIM!h!ٴO3Bڛ 5yU-Zt6aRd=4ΦU*\h˶M;my;~:WaݶvEo_5#ef?1xtB0bG SF;.?wŠPi<Ð +jQVctc61cF2X}N8ql7f<?]aˬ*a>MA@ c6,~3N.O=n156qr@*hG:bL&'MV =*=X%w{ڛ*α} )˼Xk_+e\FVrīcsKNjWe>p.c-`XdrYcE>,\LRA[̠eO_4ےLJ6/EʬT8@1Zf,i.fksyVD_qn)Wީ|UVyuԈHDkhmkg1 #}"H,7ݤwSM7`-Zhu˗[bԚ\evSYq4e_n.L _:|#Hv (!ֹ](G ?xuHPaQ0:2m>FA1S SXEcO1nx(?LA& d5he|fqK=y(wbш'YL 4A d4'wL'XZHL?U=i00N32t;π6CMFY]vY`{WLtfLQ]fVa9Y w6nwG{لk=yltk&ޘVN9;63ϣ<c'> pr}+̹2ӕ.w<`2:Og>s{ l+'*YrUeZ-ڹ>2<5j r[ |ٵ_n60k#ÛPh)$M7\9-fk6ۤokޯ~g1~?I6.rXV!VNg3[Ǟla3^R+6I451ܫh#n[U "BPfw90k48mN%鶅0FM:lk;unfaЀ4:8^ Qh},vD Uآj{cUwn<pZ@Z2 ."K1]}= ɦj3<f{)m0TۓG peBEw(]zj6 7IaB\GR%k".fEȡ#gPCˑGFJSg\ wU!&lrر/vg5Y̋.3Xɚ-gSo,qfMI ^#1R[ wr$죪Cs$U{L[DeYP,h&%: HK0̂0) B\:>Isv.jUm.@D&$dSF .0599(K SNaT]RW|^=3͖|wRtd|3E8lQ|81z7\wJ_9~X%G?̕ 5sI'pμxb,b*4%YnhYM8ÙA6EOIk0qK'c) V!u7R$?]JHӓ0JrqTÚsHP<MDsJph&TgJW]r6Ş&#KSwKf/(gPU[ipk .O+HD[Bs1 9G J/S*^%Vg$x޻;eVeMVE2ZQ-8p:VvZ{ew; A)I[V#UOEl3ՠX#nТ.]ݫUy=Yn5TWLFU,)ۆ煻U\!` XnB8uyIBQY'+%P*9a O^U{$١+_bΐWsBՌUkm}E4p.q';7IQ%X͊فx2m RAYb?Hfh%d#,_Mu-7Ac=ζ04Bx\sX$]fYϫkn0fU{~ғn\";rW̺bi>-=a#N@HpGDzD;pKU bz_myxPS'мCCF,^mvCpBV L a-/R12y)v:QJVAP5V#Dno2:qo(3|ƱaOzq. kewzHƀukƍ~uP05w= Uܥ-HxC0 VuَDTsBrc~M8U=mH}!RC"181>!aOlɡz ܄~6) YpE]^5jo4}K]Y;,J Jjm/+EO(BLpT]_8.6;hkCL(>`j~0՞LLY3A,O>O) uB'[iQ)!Ufـ|~j(j LjT'f#h #0ӧu) 1!ȓ^27qx.X"IA U"-dեQn-(K2 .*~hrzj?W2(:,B7zW|"<UTSVK22>%޷ݚ|Nmʞ'1x$>.8z#ٷ9(gbnjB}x72|#J=/VPL$sfC㜻0 5aWʹRӺv -kzbz[2M1@,HJ) ؀mDٺ BV7azbP|eb1ĭWϦe+VՅhg.%^'Xs(F݃WkXpe1Y6,Ǔ/fC䱗, $wB!670 bR1CH?)t"˰? #z[f.уmC݁DⰀu\@d7j7|"ʵ&53cҴuT|*|,B`GK{u+htGwLI0E*eeWkY gLT%Kbds+2VL"s'8p{- {| q.XDf ƄS@?SN,KLpߏbiR]׵d+Ei2P$X,y1KגmbIc 4/׽`\=P5 Kvzb;:e&ye h܇Oa7M%Y3R(W#p=`,7W8ы<:;-|W߳iU9*HuPT"8Rw~{=pɭKP?df@վB@68*h,k/:'[m%i!4BYMͭ^3 *]U7ksڭjw"WWw-;/?9K(ro#EeW7m$뻵(]k-aO'UYTRI"U@:j65H_Hҷ;.O.Uh%jg|Wy}h“B=1~n:qidOQ '7NϫuM{2#{xN| T-D  ^L;ޱ|_bM6ޘfc csX[_oruJ >2W*io)fūK!i֘8|:+b-%K'hF}\X֛6\U\g6Ӕq 6La(f{sc 5'ơD0A&^IKG2Ǵ u}#qrLEVxjs2qVԺȢ&΢-{*+|> f-Ѵ@1o>)9't- !k4]̋@~@.`zEhg+g)ѧ{#`Vh3^0C㷌a&cΦ^a+<< W b$K?\cQ+oDW}l}D4lkʔmrĠBnM>\t?F+mAci$paD6[GAbވi{KxM0p kyĄp錙1$r@ztr{@OI*u٢$g ]J.Џ3q=.,IBzU3wAA :.R(L3(Xʃ><܈9wbq6 ^_70nmI<HJ\MۻHO5XM: &aRS+:9sqLe mlY Xdp!12"s)Fɗ܀jQOvQB@9ʼnF@2-PJ,l pPHFi[Qu΁:W̩ 2.#Gvd;茋}Ȉ?IׅtCÛ#^B x~_AtonY-dڱwu*d<`f:k<%IhVCې;T:y _~bKDC9*qj\\&oh~?at-zU١hVF,;msY/ 'AOxGwnċ~ y|\!z=nf؞ž :7 D. bڑSfz~_ Xi㼊bQ~7zlQ^^dfRwvowl!CL`=4|Xn=?^3.ϭBU&)0_NE.sR#}~ =si\]%u=cSt?$+\0UQ&cVED<+"3;wbs 9__v $ji uK(hp虞,i -hk, )4YeP D+ ߉up<&!xDO_6fΊPEHRpTLh#v,O=i2u|qf8&GZ+uyAߑ.ɫ2RɱEHUrrAmtݚoł䱞hX=9iR) {^;/%/)>~p8SAq:|H}U 6{=9#͂7/ZhX.n' 6u3ÃSaAb1p$QvtR%lL&7!$Az<$`j[nvr⒵Uc͵ _ѕs)0?j.zj|qhbBKBQXt-aD!fĎڡKF&VT o^﨧p _`gKVS\s %%U-_&%iܲ!/xozAs#k ;XGC)N ` tki$%xkMwܒL1R Ԛz 4d]꺗 V,P|Xu3fV)q.B |Dn9RRjڬSz?[jv's $GFEIy$Wq0SMH:r>ɦ.7:z3P]}c:Vظp4(0=g X6k?{6Tмyx`;||z2CZ*(/f/{c8!q٩y+9vxV#q@ Z 'UZ}?sT7)8&nYF]*NA{E殑|YzOsz0V]Ǔ0;>,PO:갢U{Gxwx]:Tq'wq /;32^+DJu)-ᤉ0f'lnW+KPamSi:) 7ayc;0,_.|.uSHbAxxw0 f |C%f/Yzw=62/)+83I/LVVJܗ;d!Abiv nC L"( eoI64N'?"k T N|#] z}>pP9z7 wS ʓC·Ji~I` ęs"|#;S$E׏ĢW- 6H(؞ݑ[ȴm׏b 7$^pM.6&ʋY{uP∩؎ xZDA%2˻7A;8 H~\>)LzxN:RA W)/ɁF'nQڼpiaPŁC GZ ":0YVI@D/ݱҼ6ɀ| U k$yr*K/OO5=_a}`7M^tEgߚ77?¸ya)1Y]6Jټ{GFʋ:>zEYUPukL‰E U\Tΰ"ƻU Kg4w#?]za5pס|p G@V2^7TLpYX\:䀹6II}w▁ΐ[w'TA'V'ڨH̤3j" iE:~&Z(3/U3.1Hf#qS (KMFZ 2\K`Y!SrTskXe!hWNKa<&XoS/$үA0C-P ǔ3VKq`Ynp&Eo_kK  wU&CP01w:OAso\u'MIuZLXӘV\Wz&P2O}ӑh v'~Z Xt V^ϒc*q]f_} n( hxu 1,(u<#}2C_5sVЖ{/(- v稰 )Qפ9cFx`?rĂ4'(݉]퀓4b4PV(u2W!g}ֆθW ,Zx-ړ@ H& ]! ]^*  dG7KԨh[$fٝE9i_ yR絢;B,eoqVQ' [ B,^. W[C0{yKa*! 7@,\m"5r5PoȠTBGêlPx n qj!j cszyxS%v~Goִ5JBd u@;kuM"kx/N3(i#h_>~Q _Ku肄'\:M Gcn~IGjz7˾b+c=מr`G>|$zb>S@Ph9 F bDKEsNs{{ ](vC!kP_@%nevQ-W <\!1B7Ȋ]r6/Ȇw%CjXE@kpf]8w,wچEg=-YH{MA s,(fxg%~sFᕕ;_H~}dAY˻f5^]TaZ5EZÛteWG?\I߾ZUڨ@b*܍:KH 33try Li%,%֠A衯kͿ~ Z}yWaw)O$xyZZv9Yߴ1<O޾NǠEM{ )e^uƧE.QpFJYDUv;SѻJ* ASYjH<)Ab_A֊: pJ,8D`/1ʈm>_0[(:|X`=vFWM.lB45&Ҭ;jUjj]{bnĶ5-[!Lv~oBCQˮ #BKSQҦ"X5[絇}^Kcʩ.bK+͜9џMQ!ü6|j&j %ϏNK$iFFNXY{ [5Dm%WmPcxM*5P.ʴz( ͳK ܍njI鬓f4&3A>KxrFgsPi\"zydh ~@jk$Wp}\ a2/|J9M,z$`0樍vY96$ɃjygU3Ȃemɹ.L ڢF ̀%6ãfW_!*aC8wG.,=ؐRx3>,`s*x1y2|r1i1PԘ#7"KK@aYOjɸC LhJg_cxqفj(ӵ}ȂiҠִ!{\Vl|F^H5p5 _쟽jV$|6:|!b3eLxh撦v}P 1Aﳫ̙#82=kh1]+v 3&Im1$܄v9eH@x2<:VP`/_N BT쩔h~#&r㝕G6oolrCc! V! !P.AHx]ȕIeH 4d%S EdORn|,5=6퀰a4۵ DKj)lʆ#$ C LE9"؅9hB=%| (H'y7,T{EbCªW/n!< -ug׬dmatn{vY"n~qET(5DvCEIgA:ܷ6|7R':FfFk.罏ݾiUKqgꠊ \ԀcRر)oF$.r#:^ -Y2S4*OXXxN2*Yx^8)! ^=CUy<Ђ!WRѐЏ"Í[zUY]0,^92;~]|Xg hq># GN 8 ~.d>HgmBW*5}/6{|6`Ct~sNW  䕝 -,U5mjx.O>L _~].W 1 9ߎ)$/ucDIRrhSc=zCdo>3-Z Dù')ˠ|b(K-<̱D^n=n%C],-La0Ex]Lp=.(a2SWg#x Ǖ֢K9~m_B;)] \BWE@`vw yn կŃbČg*_׶յ{AVe}aMEFW+HK'(*׫%WU7~pİfjJ \l;fëWWPk4m[@X(Z|W]bnH(t۲p) i(n!wr74OZf΁ AiqaҖĻ4UVTdm׌ CL;#n94"]X]gEGgSNZaY1&'QzL|v 5?LEQ,Q͕v'Dh{uv:e!@ꜗyߩ֬^D-$=agBBlqɚ^ sTG6/޴vtu=)ecjebvZPkSw?7;ZJ̛G}<埒uzXr6M S R˖.`B'Ǘn\9䶂Fes.ӛ,(ՀR/ٮiF޼:%(Ghh.s'NA 61?G^ )3jTUϥWN"A PwR(4XvW?O ܈QJ9M;MLԊDuSrPQ%BS)Cf3nR(l georGiŷ'A>kaHӗOd?bzm1%Gl*oҾ#=b[)I,3Z̽M:D&jm9O8ѧ1yb8HIB8TӚuo-A7Œ[1IC =nOPP1XM|Wzg ;MFH'<%piPC6ZK;n PG}KhwXFމR}:Qn%YZS@դETiQ/%ٶ㳄A9k8G1Q([C8JдjsJ]ؐ_ d1BRa˚ԢE4!Z+ m>@>)[0APP=:,;%?[b]߮&=??h׌zj EvusMڈGG 6 X-@E!ėtm%قr&#%t#g1\Xw[ߒ^M:ҸܴۧB$AFfYF[@(zI|[?{o Rق(E֐rSJ^sVJ SNmXOvLk@$Fk|YHh0>d^Z8>Eya,| w\8Z(EjQ\G*}b| ^vU6Y4SjWVܑ$i K'oPtS%TZ@4kdSeߍ7Bn$}i7p1Oz7P;{Eŋˣ hc`R[IVVŊ!hc 9`+N hGh]PBr^*y%ldZ*):(f5ZCh;[rG32UE3*5u$zQp`%WSRf!i9xhSzY ș0jUAʱd^<ɣf0(B_a5oenq!QZ,X/ǡu-/$*6?h5 B(⿋%]5DΉXZKjQL>rkPmH6T71U> 7}h(۽Z %LeژTளv?D݇yJ, D [Q1˟<_(],97?`sZ v!зGG|EV_q6,P,yãZ'4CPpstUVo7T ; ;aMދ +ꌿ(jRtį0E(dʘf jӴ-~CقEDc"{ _0n kǹ]1ɱl,(}aʮ SUHahn(@s4AG]~sW&zn( `Y;fi_9PqLJ_$/^R>UX(AyO{!_k.P0}Z*Ced*HI[!Dfr$1ۻ{b]l࢔n9 !yR?JÊ6W0Ezql+.ĝ`]gy`˫ 5.其󄱉ϬOU @`4~NC&I̽@:i04vWaY'LۢYLyh!4f3~I>RP;џ:vCD"m0zacCKa`ֺc0j:9ϼ|0<9VݴCGd匳 RD ^[eP` 1xr2T9i{[.X ZXfei<)3RiS||>8oYIYW0 }3pؘYN}UԊ T5=+_tљ= YEy]Sm*=x6D)y6*AFmKl4B#ke 5~B锪 _TIy^Lt%U Ys~ +lS&v,Wr 4Zyq~/ϖxh8_B^๛~YAU,SeB-gS7sRC]% vGK=S]J q#̥hKǦc4&9dE,yζQȔ+G"u=LWC8 ~.-Qp|!ZCqQF"Qne ٝX?wOe-*:@u+kgEXe5 Z;$hybJ4M ٮB%Rtњ/bx6ܼx[&l U\=u[q=^NΊ c@u:{p&9]5CC[**QKiCMNESc&3G_PDtHP7` ݐ"`DžmߥPk,5+~]TYHAD@< waHF"l ] ƮeTsae_%8taPnz@qk\}K .I~ʄ>S~q-FXW=YN|C] m;T!pP|\V54i7ֶ<1>Nϝ-6#cZ>=%75jb=1ׄ=$"^"K"֩iGŏO>_-V wm 1nj-mWƟ$\l IO-}##!-kV(Uoש&d 3qP}y_saB6cH)G;k·?Twdn&{Yl~}W`YKPY7xWbY +0$cj=&=B=cTc~$ѼoI%Ҥ4%.|RȦL h-r+.g.Qe{/p^ke[$̃}_O RGA]A!<=oMO{\ft>).#[edl,h4^̈{.}fal_KQӢ^^dh.OsPa(g7>TF( B9+0.s޻9N"ȘZ@oLP蠼OPNpYQd P!DшK{,⢑PX*o/o|Ehm5ͷp M+[:zw Y;Y#9֫z= s'ϙ5?^ծ E)\n>ZMl1׿3F%k60A/'a=|[+W:`^NP1$Q/$d/@.nI ˨`EJBFq]R&<^ZjVw@SVA((jCXL'a4ʼ*iU0r4i?\5Jk2 ^97B7޳B->!?*7xj% %Fz]f:P_R+JWX"hKPVoM_Y^ljiqd<>m]aL0N~1m&lGC݇;2"[ؖi7=M}BQ&8jOu=&oԖuG{svAEX;Rnɧ8V0>fc V u;frX*mvROƸN|F1jX5ҔALZ݂0lSU qD-1)*98]_\܀3ק @E" DxG&S;a:ɖ=GFg%d;e))Ԧ;4cp:GB6ӝz*Uݒ3VhF++.|/0yշp7}0zzrIeQ~LW uCwn_xмCz+@jx6璗7x㜏Eӵw`pXk"=1XΩ7.4M#EdU{O=9d}MPbLӌn1L CPbwP}f,Z̵Smw̆phA׫bP]5fs>>)bvFZqQ ShZDyQ`a"O[la:k=и0x:clCXдsW=u]{muhNVp51 @7>P;ϊbN T2kPCU 4}t+QR! vdXznB ifUM(kwKP7[Im/O7ϧ$^2!obJ˲?nə-0YliS5"؏f'\eH NPMG@J몰Gizs#.+VШ xMfr,T:_.зT_P^S.(?[ +~zzq3t͢/ Ý]T8~-,#C{=qJI6U!oϦN ڍwG'#$'mMUws?O_[$ǹηTipebhaF{#:mog 6>40fN13 ۟)l֥ Ӡ NR.8qh0״{˔/OFvBN`Hd-х 0Ƚvc kYLM-YoievV5^5y@B4;ެo\NrU\%rpEq(7`rӾ)/hVwG~ uǿYMZODb+421orKņԮ!)ۦ:VMv:7,i< E{<gKHXк=ߒhykg-DfoNEr bꟴyTK) EDifY219poϽK~wm }ƭzn" !g 8@eJ ~R@[3_ŕc ȃVk NζL9Ґӟw(Mg>{Lc:Gv؋}"C Ja.w3p9?Sꡠvݡ OLw{jyK@W&rAMBЎQsfCņuȼ?=ʹLCV"nL],o<М៝ᢓpI(yShTމm4ygb#볠MTy'uS:%dzyvfYM;3v(ń!J|D0E*O$L  L㐥><؎:4!N.=ӑZ:CIW̲2o}7jFOcCȧB og˓~kkR):L܋a^Oox=(dSB֏~6!${;+AD&th@O qByT?l57puUZ5bey:|wXUNwDX^INaLmBRCljTbqo?~x%b92f6Rzx\$[r-wzjǜVݩ8X|T2l}Gc M9P~6X/bO+s۞S Fk_qbEKn wXQ~?E&?5ґFVxf/ sSSס!hqw*ֲ4!3L,<$53=ޖ/43 |f;?9Zo [48vV"AT꽤x%ttkpjk(I_60qRe3]pmW,;VC7I#ʃu./uM9ioh:FL}b:kƈ²1]mh]8zIHYYgb3*A&DGwr`,X'IldGA&?<3UBykLr!RVu}AQ)@zCn^ 4ƛTM]CCS5,ERX./zҩt'G P #|VVQr }Po7? 5561B t.Kg(|ZPiq 4Rn L1TgbGGXiP3ajs-V_8w5L`N '@~47 ؆),47/lH4c܁VG~6ɡ,ˋgm#ٗ3 %RX~#6lbFaekZSԹ | 9-@rvlm#IM6ms6=I@&6+}>ǚNǗ1hM=0= R.RYfgv)w&ؼRwY'h_Whb'ΖWT?qz~A̟^v̪Y"lYf( _ 0%NjU8 1"gyBjp!~\Y2T٪#ۍݑ?_pmg'"43 ZU>n9AGtiU"-- w]A6~0ׇ-tpNE\]zlN8]ɬD"tycnCYGig:d)K+-(f YiQ~{[ g#W;˵JMQ雼ivA9qC2GX;uT:px|6u23Z_\E [FUyoae?tˡ|L4fΦN'T;{''zBwਡE\VukӸon-C}]!/Oabir. M.cc:YvŖ6:YYKtC}N}-͓,vpՠ5,[a0@iK&g,EfIK{lˆ\{Z{ELo3˔KVH]t]S<9LoGJǒ~s?8,Jb1IXVTLD I *ѕiRKɤa޶]뗖ʲ(Ѫ㐽)pܧBNt 40 {%Des{ OSN]&ߛnɱ!(Ea*M4d ~laEKJ{ecsK*CcX!,ɒbөzz3Wne6y+rdȣu,g_q'6G!(Z NcN6IrEn]_LLhZptr>~ b_bHuݜꅂp̭mͥ MI&vfn:eD{_iCk`Mލǻ'ohblf,3͍[FnW=.瑵&ZL?g\C^j6Q1ؼ| 'tn;u(" 'L6cD/Gps+'5 n*޶LjcJb4%~Z-:[#TΫMvvč8JhA椐e&sQ}d[Vؽ&}-U z)aVX )g02d"˟}){t:I޺U׌-)P1`Ef xYcore3@ӤnDO~3T `\]1MsEtAwDOkNC[h[hg,">C;&!) Y=_R3 Q' ~Mpvضu>]+>X+pjS&us۵]0, rv, -W.L5By3'CY {E:s?`nL`4HIvj`5+{`cҍw/y;H u55^5@uxOӷ 6>pg~eZSx-. r W!#̛fg^$Vڳt!#E\"M(J%Wq/uD{OjTSJ1Bp2tOW F;}#&7{2Jl A 0#tdaw+-)"g\}Ljq Y\ |HgPc^.o<䜎Ej0ty7.LӤL[z|1.{Y|fPƍ:8.F`B?] &QlvKbyJC)b sƓZ1T3.MEVG R0N$D8"xD$#C+"z"TJӾa8A n Ta 9$O4W;hD0ikoN=6eRY(ԓ!dX!7}q*ڳb<@=;7A&0݅*$!v)3'd邈%ҿ1`mp#i92qW։Ԡ]ؠ ~w]e7I( `+i!b!93Mko{A/.=pM7I>oخX,Tt9s1Ng5J\.#RlHaLOe7)?V}|ay]CƭX42]/*0&HE|,L 2^4 }o|vܬ^ H&+k>)˂-!G$&|:\Q.HEМ(R* D) I5f¯sgMNur*TMA )ܳԸ>˜NIB @? C?~ DCіk.:'W h1p~r/qv[e=fj#4D7Ht /gpE䮿o($=3Oݝ .bޗb^9{SL?w r;ڑ?f5I:,,&_8t< ?SK?Sf L+_JB*\ԛ͞=1B.RiTAvuB'l^ғ /.hDH`嫹~mD!!L#hE\Ӳ.w #R3ߒΆ2/Ho}d~:0rQM,~%1d "~,N߆H9@A zdžЈ< n?`&.,2d13v{2Yibgx'zת:Byj5q UlG RvZYhq}!ft̷ۉL'F/%FU)u]d[[x悔(<$,10S{kz{]^2ݚsz"hv.k8ojS{আpvvZTܔt\PH(O`O-1AQJj~cƕG8$r߄*x=)-ܵsZxц8 0DdB=Rrd=kLCKMu]'y~J#u UǮ||:ң&+,l%3 g5^&e-> 1b;[͹\ rgQR_Xv/b?"H ni.*OBBD2|njbS}~9j3E:!LU/ p3bܜo߄cm TB'D_g!9oCr81:9+?B(aC^!u )IPv鼈l็[d!`tsF! WZAҼ? :%M?FQjK" "Ȁ OO7i=?YPEy/\~yN ֋6,L/j:)*A,ǖZP4ͯ_(РdP{iTr5l4Rg#\XIai+$,x"F]\kNJ0Iڇ8\>l|ī2RNhFG0A,텡0 v+} \:0q%icؼ㌕eMݹ҆N'OOO~g% 9Zle%V_|vzMQ54`)' T2q중u!#KHWf7Q_QB7SyPEj:{\ݷ\R5V9-cy !|'~<>{J0vgb'J ahaຎ;)TV 0]:V ~ُItOV>+sGatGP9:CrV(Wv=L`j "Tg&& R>iӎp5e<ɦh;*U Qw G=MZp9 }i RosOa/N ,y eJВQ" we,^ʚ%d\[v/ξ>ylz]5~?QGK V+ NDxMp&/Y+y:Ր^r*{8 >Iy$ s@ 2 棣 ;4}/SAߪV(ա(Po.[}rUm%!#FdO#ᙻL Y𐃼 (i/+RG+j^$oܿOfkٝl4OFo Id6:dtƆ# *=iU3+Zqm=qSG3ܺ;0ӄu|.m6zKRI'ts+T5tCH1C*x 0{4f9vxՌewQyx!ŐwDU%gz左6$Me0eDFDRAWu4wlMu-ɑTfzFN}nD,׶O); /1-Q >\@*kTXpqYKg )%v18_ڍ&*? 5_&9a6#Ĵ/|1Wmihзa 6P& %e! ;Bl:D9K/8ҳVSxZ+LX2=%J]@}(aI\A-Aat'!7MZ9aB|snR=4hs]*f觎˫m7o-gJM; LMq0q޺"yN}*+zYŒS?7 '@8pJ@icγw4U&um+Ie0gVoy`/ XAcށo̟䀮UsޓRdRuUVc\K)+3XA[0*TQA:;?tSјNXRn.{Ñ}c0B3f衂/lLٛtq<ѵ]$q1123PNX EM$41?Yk=8?=wǹF&@6!Eߦg^ū߀J k#Zß?Xű3L/(Osv5O fcP_:4WDqsUb.8_ɒr5Y/)1mb-g(N :Es;5ZQ*B'b8J`RW2`XcXдюяZ4ƶX0P}Y;!r~Hu3h'ҧm.bF0l}j4DeVnxeӔ`RqujfLT <8<4698@I zc0| R ҋSF8ջcwlwxۃJB3. sON,o=@*3ӿ2qjm± Y>BfoR{H`TȯadBFcէ 3 olGܢ7PqaG:\H ;c:@ſ@5QCHR߱"q;Fb$ _JWXc$K%#fy:u}"ob2ϳ7@FSE x]D7X3^[5sDD8;t L9DeؒWU[uf]SKc꽔Uss50ޏS䥷e3żƘH ֎m2 sCq/מGYM޶1M릲t/9s7=vz$#tܔr.V' ߀0Ҩ / 0r\jPb2K¥ hopyV,B ڎ!>D<+xl"fͯʤ>r.L h>x" zA֩?`i IӫɮrX(Lah=~0:M miIrqq=ШajE^ӄGI]Jғ@|* _$$ i^rhFOoA^ ՠ8_t *I8y/:y7yh@\,Zf9@USeތcy1YwJcw_²a: r0dò&0Nz\(΋fX|s{؄q ^~u9閥>Y@i0$$ZbxkO(~4睾5C}y;4OBN.t׍·R=woo#w^{Ԭ, N;ӜgG,q2J?>.{+o0iĘhS7-NN ^dFr`5,LgdաV8tPJ\{f"D0JZz/zaI[`KS[ݠyV%*&Cr9 _Jc"rSHkW! P(]w @BQLcuhbfXaq'ďY TA2F$jV*]Luh_0/PjƔ7X|fQJ=dd<3QWĀi{H$CoVBq%{ƶBxp!D Tf?2+6Dv 5DBST58Fc-Ln&H<|Y:s VZT'hɇ ZP#]m M^#PRP &!9\ 5o|NNeNhVpnnctDT>u%ϣBs7t3p%|%4kot s#ԇט51[#T'Y\D]rW6 e),=:YW_Y{Dj_}d2;r͟7L67xz?fn`F~Dro}ا9޴R{uUHRvoƜ _ACA#Q .U}ߗ7Q, yf&b* Y Cx8Mܶ'Gen?U?|\.TN­1#9Co>}f34}=V2X)hv3x*-1 FX&XΓcbR-8DrHhs1twb9.1fW@X0^׳e[#R OI G #G @ \&"?B@Mnv aE;lzyz= .R00v4 uٟPq׷cWm-z:iu(s'[ IY.fk`(;dxUKS;M[#?F ՝{P)h)yRq%9I4igp 1^N3_}"%K%rNk򭊉4\7K^>AФ>裿Catz3_:!LvYKE 3}S\Hz:HR!ݪWZ_>"6D& Nq$pr{uqFe{.$pS LL}$Fv kjl0*}߫IrzU #W7_d* mzF4Ro{u _dA؜E.G1j:~RJMӁٮ\)I#(I+ ܴ1)4~# M/캲HwĢX_mJ ӱ!/:\v'x\q(m;h]ԣNJe vnhe],lıU hS{J]a65c:Ɓd(ـ9i nx];Q~dp ;_&*zDd~ 9ڰs\'2AN( -K16I(-d%?bW}4 G.x(LxSb˲E Υ9^Ae%S9W_` ܘB_xdM# 7;a4x#Vp (ug0S/Fq9!E7~/h9X>( 9YV6tk$bnl0^S^S+ooi8ݖr.f `H5WLCpSE#ef Ǭ|V#z#]J/K]\U{sR7 uqGTt6gr9V 5õ.9k.zc+Y|_c/H,z0%^Mݤ6}Ć"hEE2P\0R ޯ/|UCn*SӜJN$db3r/TP؊ݩFµ6mU4Xס)9{ 2SSlnSUйzӽUh&d]CH/cyGkD hL|FaW] ^݆};d-81c|$g?Yd>[7v)irc~"|p]}ygjH = PZ1pSMΜDb>[pa\v?2*"dـ+Be[[y&3>8|ǽvS-x]Gt}38qC4͢0=򱦪5":뻓KvX{OG{eŚ,vvh|n: ^{p>H88fўs#Ov> 'E}CGn~HQwYO}>C'~4;~1V?T4 ioA~of5i^(S$Q>ȗl7К:JS';ah50nJ+PνI>Hp\Jc{vis3ч,B){ yĹaZZ{4Xl>e1~%̼rǪ+ūPޥBA5Fmanmf\黮FءOfmn0| 0VP¸Eʉcik䱜HHT&RҽP eq#PcRl.4Zm 0b~f%'׉^1VY-MC{t#֛t}~wO#oJGsc5˰ɢY/Ǚ_ɳqP(ϔ]ȓ@Kڟ PMB7uZ}]ucnDl#֕j|`FachpՑZ,XHГZS#\ W1% 'DY.1Oh;?Z T;vS5>!(k] K (G;ԇg8 fIq}b1K.+CϺf>D(' J!t.cQO0A W0:\8sP}9 QAIz@ԕRr ޡ޿{A2]eځ0'5yH.:=#*AVa:MvBP杴cF:C>O0Zvc e׌Q?};oFeA7]o#dJ`ҮmvjPgfJ튋5b!i8RIo .7E{u&XٱBp91"0)}+,JX/=ƿO^ UpբF;5Jbvr F{Ot}S'l(F&z#l]UKBavD(2>LBk(O@dC4Ʌjr 5ND#[LP ;(H wS_&k1$h$O&%eU’g%mR.5,I?S*uhnɺ&)͕)R}\u8e hA+:9E qCl:#,=XppW];.T0 \zy{d\P0` 'z%㸝N$bY MLUEAׂ5leQ0w,,LDug)=eʕ|/ENJce#5; EXLn>ch/"OI%gBzUwd&YڃϤ`ƖF$0et >as?U?K:TloُLz~$i3!'Y;Sx2Sob]tQ^СXj+b:a2XΡ?#M%l.槦-bXQ?]lךq2M xuyӰۂ3΅l-&a`³Lr 4{Vc7Dze&pQ|NCZEV[X| *bTLu#Iʬ2!3 yn1ޅp%\y?d__ZYYu*=ڜ"@XZP˶EO+&Eڜ?q%nmnkƣBx^B-ZZ]QlF Pzw i|R*@.L/9΃eE6:iMFeeb- LKq W?LER_ouX׌Pdwh,_kk:Z{ăU}=F/ΰp]¬5)M9\",'C7 tX JrY-/N`+=u=S} erue^dkK3>^g97?Z7SH>}ߏg<`-}ZٌcOSGi9-sQPA\/?RN` >17?TtN9FugX9/JRIReZM" O[`'V7 á/Z'QKvsb"8U\L<54/oi`عbVZ'BdpĿ@=s7tK;Fx“h Qy`"!Đ9ƸijNhR,kg2"E@Ra.@> \| @~Iqs#c GiD qZ>RƤRZ((*Z?G)];;!D{`p$*,PVTa ]/Z:tAsLb\)fw?:qCJZ^ Fa:M}ZxlM-bLh >/Ά :Zњb4}: &'7K ƛ?Ec[0ޢGdY/3}\}4"Ͳ߄v"^W;VUN-ZWU2/Q"m>9aDy*5%r T-T8n`3^ة\ ׆#zd6k٣ന!" d!> ,3m"І5Pn$V3AtfN ݄ +>rZF&|ڗZ#VV&䎰fME 6>C)Bֆ@a e%;3BhJM]R<0> ː!K0t?q]0F@&|l`V\EYKDL8yʝ )C*^GF5βy"$mE1OŨ(cYTNk=iM%uJɎ?nC  RB5(K 嶢m!D${()R4Q&r8gw<%ANy`(u5Eȗ`fC_zOiX=zv02Ek`mVȷ&wg+q(j.{y;"Q"Yć;7M7 { vXζ~8?X1 tb|ײ\wZS2pA!v)ƙ =*1۠0ߣ7Xޞ0:5qRrF75Z|;REX`=YtQK|}f-wTEϫMdV dw_D5cU[[Gkn"|S|8"+ EB~IU9e3*0V ,SXHj~ cP6I7Zth\ 0˒ k$ ONW"8=oL!grBUgPbod;+m.yOקs² ¸iH#<~Q}Ec67 a*rɻ,٣bg K"e)%>r~!,޹#^e1Q4`'ZC'D)o)yutTô6͑ gq }<B|}|W$Ǣk  V( 6<5!mDLF_,кbꍗ,L Q v&"ɘ)&rv~R5\E֊~@h о+g|FIOjխ ?WGuKRlO\"RW(&P4E  s&N G^),'T* UWG6XyE}5\6KRWXA5&ֵ 1LIK\=Jč<=^)Dcr[t#xw9'^9ǹA@ȶqZ iCNY1y} CʶtՇœ,cAnid!0b>FG'b}H/SU^$?-攌Dc^xȣ'f#^Q894]fQ#{ڐK)VM.Vuh?Fiv Zޱ^V.4!M%֕MP= 8Cɛc)AI-F5"څ_uc:ޮ%i'SHywsSgRF!{ x9ffϐPx$Lh{2x^][F\P? +M5SH4H!5 JЗ~,nP,G6.(zg./T\@P (b0:P %)u !#Z+ѴRUMo)@_[NOk ,p8NZ i2;<:St"Gv8إ 7<jn+f*o!-5$2`{`rw{RM3I<'kp햏9?* z[dst=]Z -~Y ,DWRÝ^WEXj•q sI8ڠ fJ^n')`x@6X'{yq[rЖX^I}|/L,@-[Ns(dаWU" R%-R<di?9 qn̼ʚ=ؖ䧡6 hj˖^d4vPxE1&fC֘,|ԕl|O"ؔg͟P%lqtz )9Xd/Jn $ziW[(@-j;&SfӡnixL%ilZ<ˣtvԚ?=<@#I]n߽ 0Lɨ`HŎC۫φ:´N䳕q?+O uA:NEK.Uj GˍS2q2 1<a c5/? .Ú;  pR]^TY#hEg t)O 2F~t^ W9l5W2^͂ ~EdhF|0CoϮQ#37:!Tvbz=ytq|/23񡍤 !#BԔ ?;=c2}WQd79iYCHQ_ܧ&igZ] q,Ԣ޵] A籓_I'~_jT [.:0&ղ77 7-ժ *RdMz&$޼ X BN,SiWZx}iS׉'p~= >;6|O X4ļU pc!Xl;ᥥ{>=lDa~ƈ|t8&Y=97kS{`7 " (hϳ/JZ%Ȗ Kvmqd^La^CDS,$[ShFF2a/m_,Mb x ܐAfh ^nmOkF $?619p6쟬uaTIf/qIoD27ڡaJ,~C&~Y8W"E_N_ m+0eiݗKGY6rMfGOk 0u],ͅZꔔYcSY1qMoh6\)U>uؤi8Rr[at RAt9ePk!خ aa-H j6 _J -,PS~usae\3q\_\l2UXWV0L|_u@}]+jaE*5W6^ֲ7Hџ[DBpa[m)zQy?An KNTd`=c=J 2Hbm4.(,H+g2\ U,ljWPSB&,u꬟C5GWPX"kȊqZ$`ALX ^艺$b2y|ؘ~P-[ļ s Ee\P& V)iNuuS0;J)(,fDjj`R2~=ORjΜ8z/2A˶ }ZQT7lsv)gDx=n|xw] #"/(uW ypFPt, n瀍 q")DB-#TD%c`hFjtNcLl #ٞNT|'- e&)CƒJ5Xy!IfKr"chbv" T6F6DŽGp6V!!+ MwȁGi&\Cߋovp#`" Wor;JE=sP9M5*#;1C(Mֿxmtf^dAl+ ò3 k$;M Q.X($JyXDHTzJ[4Xa^o_}p]Y upAU:,8&$h}i<s#0IayeAC85aQTZ#®<-C%@ v9:l r<HI9+Ɩgh^mz*@w P=(FHk>4'~ @zX<'>op+$#i`߻u$ޓBtuuW0Be&.ji:ZӂgEV^6įV>H?M*|Qr{XG~&M.c;8eJa?L$'{\ؚRr@n'1] GcѩvekĄp\:#Mx~zժ2nW"^Xkn*Sh<~<@PsPGm[8D JVpGǵ:V<#dA"@6 fxG)8k]=s<|нHzR 7"nIDW-`|[4rEoΪc0rۇ("pփ\g"Ӣ~7j 4vi|P"OaǬ*^3׃_NL.Z7.SpB|1~~%w(J-1y/*kcW:o?@uO^n78W6_js_G  5RmYG%];J˓槼 hI$G,Lɵ>zBhy^O峿UX1(|/UqW*nP2] AQ }i(~"/T22|U8 !MAquIU(yt̚ye]E]]b% Uw]Ja+ao>nC?}ԃ-hÑB6ƔmX;OJʗxްͷ@A"hX( ..x:g97 z-G->䍬dR;1!z٘EEfyݣ1+|//;u)ͣ<5/(FU];F. <6`4bM{]SeW?DL ^Pm +*t*,!y\6խ_n~L9iN%_Ñi6鹋ˑD$ߥYZujnqje0>bKy?hryO_rw;L'Jy[[.1P5S]TC\@]b~ &w }J]QsfW3X{ M_Z|4Y(&~H6TA<&b%sBz<ԋAwHC5a,Qğ0`Qc[TgىZ} 5'u؂ິTQqW<%W9ڞ87U'2ۻ:NYQ@⾠(\cp|2W΂oY{IEP=fOpx.-1o}B^!N{eW`J Byq_3\y"u^Vcsko+'7H2In;KfkL]$Uz;->o"?,Y+|mIW.6Di Ny>@G6 pH"0d7gz"(l{V BFCؘzh]X> ~{HS+0~I#dIz);o@~53 5nKCeX`M4"Ҁ3,]S.W o#ZV@c38kQYG7c|2u&NVs)hNᲚr-vt!O Y$n9F.eGd\vA$߳R$c3 Y MWsؑ.jBFtY~#8l^+GC vڠPBZ]O %WzCɍ))[jތD[): ψ hzt/b"eDìoG0PQ27R/AO󁴆^SvG*>~'TaF:Upj6!̢MweIX*`qlO _Xvs6, !b$1<bǽaM O79|8&Z\j VT@ L`}Sq{.[He:SlN 7ˉʀsĊucg Ö%`O3ZYT{Q f?b ć^2?~~E/*}nLUNO.uwUsqι$NlY=Z4"֌Ϩ)f.gIH̯JǁL!;q1-{=W!1w?EG{fBkiEѭL8L.C߰ 'lRQ\ӶrC'`3OP2{a 8|4n3Lj_몹+&ShuЋ>wN;Xw'}>}*o:5GS''3v/gw*gUlT^'!̅__IʘjʓmxArA/6'3!. 4J gSc(k>φ<;q3><[OutFasJR?E]\ .KΨ5`M(OHU[IZ?ˌd _8Qq!uhM kHiTaJEִ,F`Mh;+a3#3ԹFx27Mw̉IDܸ焟 {wdp( pXߋ~h%n_pT|VvZpIz2@!: "`ʉ`s"?:9!(#pcW>Y~0+Pi5ʼnEP?@w_Hjk]e\EW_sզ_`GD*`s[VA$QzÎNځW>{F:\+e(C~,R?v Z|L e2g\3U"?ܶ"V$!:nD7"Qjh1Oݿ&h2#hv_d8Z4AkWYԥC͛Q4̬cC5/PU $H^:"MymMN/~qQZj$@;؟+*K -S?ß9.+(7uP;.!6|bDTQT*ha I"iNX{gcS~NY/Ź2\W{v tǝ(.MxP22'm̛.TuQ/POP}bӱKAd7F1Jet5P|{LvZ*OUs!FqCeitS$ȃe BTǝ6Hv_j'(cl"!#r)I؋\{R}栔=;z- ZN{J\2RWW؁H!9IQܯ,nb8Ww'OBr}^9x8é|fr&4>So?ʏ^j6El]QJ,9YkPՁԄ4bwqDgc|.k^aQ|4si _K:R+m62.Y>d~ڮbqbH m}f|vky4]܂+M2x6+MIÌc:jC2DVwݫ2^8=|$KLCv[N{ _bꎰJ,e3V=.Θ۫}#v6ޣ_)eIR[{E_JX~$+M??QZݙ>GM@x2m?oac[c)o50T_| hz%c nb /[z½դ 9&N?>ّ^^|1(րTc]jsQPǑ=f>|hJ7diK yz+a,V7Ws(&EZ.(EHK^d5炚uK[^GLj&[|tO9 k"Za6]}Ԝ;u00Qr?`>gCg8 ,u,?|]WT,ca#;W :׍zz)i}\b+JW~V &ʘ4ք52ȿ0S+'eʽaMR*6KNKAl/1Ђyǯvτ BS=Bx[C49J`"Ka_l xep갑V(5[=WQ xEV1@<õnb]z޵3 ~:ҍ)EQ+c#Y keqǣ_w{Dt(@j`<s8iFB",š})*-!vuՈHϒ[`/L*;a)`; 4L &16h6LddMEAԴ%RGK%a/ũ3+ D ]hd/RJcLI` .X-xXI{6QvRU(DZ+9Vzog[5 %)u>1&~m"o'vqc6a;s'zX-G 1ظ̦_ޑLT^xl}<rlGN:j2&^bHr #B-*ňz|Jt#"U6 :jHp!ҿ=a ѸO A]PiR=bQ̙Mv.Ls|L@m R g(VN/BPiF qAx̗v:㒐XP vu۱#{8ģk G70OMv0w KqL/0}T Jf, 4v,'.ێ-w|E7zTc6$˚Dmtv`=ƟteG@oT' c*Po,V.}e[(Dft}=xE#s{+̛kTvkk><9\;qa.r=S̞6kS7ѓRk X_5f0 ;L[K%N9nV˘,. ڙBO 4I[++ļHC6)&vn}j '(u@/jΊ癱䜾ZJ37 KlS(+f#fdcQQbxjňF,'9XeAi*qdmnI/:8Е#ze: _=Fdz|@g'B [6i\ٱ[ ,h2;q[QH,ZZ/'oc))t<=9?;IE")>hQ@hLxm 4'e41W_!:MD9a~>B `5OyV(G1X!FZ$مQ"-L7C#~&bmAKM،0rH Ps/|dY}əV_t!'Y ]/dqXG9:yg]2dڼK(}:QL~WىpU"VsēT0Rҡ0H1a1J*RbαV8RHS.ƫ u>/=H G񾮿QGtD/p; ;`}2( :׋Vuno^gWbCmv#SY#$ ;Mwjʂ$unD[MZXTT9릶̲}TJ7/_M7_$%F1Ǧ]ax2>Mާex"p3H:Zz=/WzUS Yf(Y;ة  r+١j*t|qx"}u{7訸\$̫uU4.W:_BPE+mMy bAn KGI$;`X,jp0>E#2qY/Ɨ 3D6"ۧdVփq$0fz'Ɏ0O>Ȏ4ڳ+vþ^<& R2]ÜG|w“tƑSh'q:^zZ9Ǖޝ(jJD-Ez"S*Ի+A\Z=vCl꾒q0*8 hR H:mpYHR=jIyh2wCE֔i Fv弎C^dF܍vA3MJHk)oҭ޺ n_TZ`ŋ7`p7~GX x;ә|B%xU10%3% ?ApK,ҊlV[-,Y (kpY9j%%it_=&u|Wga-?!b4"K"ڃκNdt hlӕ@{^Vt+$Jtvre?~Ω0+Zwbsy)W՛ 9U*+wWyjie{J T`xdfc#u0h؆inqgÿ+\l[)\Fi])WĊ4撚~*ßsFLa %mn(|0NxK(WQ  m1s'y!գ4.w%#vK{uPpijLM(s߿LĠ-s΍ZN~sh2FBִ?VN|"ccVWǢ(c$ᓒ#n__NgG[oǥq|&Qڨы;%8޽sL/}k5.nJS|쵌 &O R^N(OmqRq.71H ,PiΚǙ6мK69}_MZ O ybՌs7$^J47p;[¡,vgE&/އӜ&z B D|0fL.3m:b֭Vvk>b.0*x݋z Ǒ. tGh'F2$QkEtYA.Y>:m0?q'ëQT1;MGD#aeij MauEq.Veo-嬟0_t=ơv}2[jt$qq )ҢXaQ+ z_`"UQsۺv7X;Kcɮpyi˛k`sK$#U^UywMaI4L)D=ڐlWY}^߮0h౽e7\{Q֯ʲU/WG SQ 7y>i,FX@0OzW u;.nOo"7\ci1ubEvӣ&RY@)|vfv|X\i.tZu G41cBm R}>0 +&V2 U8=$mMHt o|QV8{?ח|ƣfVf ȁ#IGGw%1}m ॑%R0d9v0_qLR@7/Uar|pkoԜ'Vd Qb dPҪ'E݃ezS"- =rcYԙzFah=3K[ODCA/q po!E{A`eef6I ſP} 'c=8 5*h"B]B>xp.hl޶5tYb1ı;*jGV^C|'^~ 1z2ޟRZIF+D^Iu q!EUVH-ЁoGsR5m:Wyx=\PTQ؈JmS,.Zud*jz8q7M16V8b dPS~|wA'ҽgZdܷr6'IC^i!vD;qd 弴oM 5p$q [p A*Jt5{^gH.jƾm/_6׊pb𳽻9 Æ H5D7^ʽՁzEkr4fq9?ƶËC+Mcyy)FoRK5{;#OiA 켵w{%pS^ _Ƙ7;s&9bSuE8K38П`^oum3[-dL/XVm@|  }WD>ʳN X7{@$ɍ'bN0_߹𠂚$T~bc k2 8(?kV`|Zu(05y*ϋ #$ SdS\12CAe&wyTB ңA}a *g5ьkZB7``QA{6MN>4ϐBwGF==/zXԲeX!)ϗk%R0T;LyxN>[Wbĥ<Ӏ} (J~^",2}|}AH)gRY4Lfg-up ͬ }30ӊx4+q aJo `0K_PB,bon8!ZCo`x Is/jޞX/ %JҹޛouIyg'6n$e3b=tpIBI[HUBw j]W/ r$ &֚1ʠs%B]DC) h#}ρFy:@Y!gjgidH]h:ka U_uLپ l aytU_w;4WN`(ðW`:iSdr"c>c>jbee H'h;t #d{ԙ~F|U϶wUXT"Ftmv%ao];9Ȣx NE#W%Ԟ!drՄxKlW ٕs-$ "^#޵rE\t &pqDd}L>C,CC7bQ((5f}pƑǥQL[+}0 p5" $f-6x ' RF+VA*sF,7ˬ tVcCzYkQ3,)W2w=e kԬrreh-TAY EGd[Y^=u¯ݟ_v#(QḢz7eOg&@gq=%<=Hק"YC>^8 YUyOtƭ=xT7ÁC5,+M,"_-՛ܽ_i/!/)wYshsח/K7.C%9}FP~,ixo7yduI!Lk*@se&'&E.RvHq(mB1`)#.-rj3ıWyH^BG))HvR1D+CO9l%0k|4wk1ZZ0aj ,\E)a aX*:q M"v m/o{b{1]phVU`k1EeO]`l FUezGYq# .ݞTfDgR\^"IVhv"n4>#Yc|nO88s!tbŊWZw bnob.'zZ*k[k,/*r[Չ%T1MMہq?]az8j*U&nw!gDWq0 U_jCRDPLehMjrRI:K=m uw whSۜmZѡ2&V&Ѧd|p}wpFY8TŶy'-Ę:EYA Ǟa&"o]kӾ,Mn;&=Pd%~O7- lKYen_A`eY +,gte)`GA&DjOKk,Pɳ^ne :$#"Fa{q$1&˞̪vguzRO-KÓIܣz%Ro|J<}1[~߃L .OqOet);)P鳐A I`[V": uu8][HA=Ya=WЪ!hk@;%oZ/כ 9A8޲<{UiI{ƃT}n'uݞk7[`µJ01rqw?Zo>y/= ey= ZX-(@;d'arBD׭ S먷`|r;+ZUQ!_ )_a*p94RSۅJ+ \`>f9`ņx|qV:Z X/hMW`-{yN؄QUbA[>iȑڮCg`q>4>Sy X.L1G΀۩AaT )vBQU2GGi rRhheh[tu\JUB,j4 OM')9Nʯ.`9 =+2p Ld|Vj؉|I8a/Z{p|}s@--28cNQ`;feCI13td ^ZcUTcxBVg=Y^=eSL?ǙC&`P: d)O.p?r5꽗:').VSzwtcC.p, jZ?r|em e^7_`v#1ZxBT{K!2%hGr;1[ ->ՅsohSQrOPWDr Τ[ڽΛ}io܋|^Rצu qSي\{QUO+Ů^Vs/9P2f\zsYiS搻m;bZ&˄,o1cj/!.D\;U8خlq< 3|} 0\Sɳs*tW7-hX>*8;kv,hR-bKJRq{N-K'yUed)]֝3?#TuCO% -Qq]@} W:fi-s &luƇ:HG@!''1ܪ j6-6D\QNu*&1qWJWֵZ2P UT7JHp7k"@(+hoLVgp|?X 5*6.rS8OQ2di^&TG0͞9k'm,7Ǐ3d蒙gw7I%mrnƩ -hJO kTn4/]XÇ>HQ +Sٯ^ːp(N&X9PfS( ! nA 4mpdEhqݝFT~^^ ~uzJMg>]S_,ƈqUmO_㲣Dg`Ycc>I鍔6tNLe!I Z;ʍbS]/4$'8xpbaacPZ}'dqcw!:B2{YMsev73oob毰ʸP})PǧY>j6"~^T$>/u[¥O_X,؍M*h Uy)'/Y&5j,PʵǮ76.[d!k^>0 АDOj+ S xvEn?ҹ\Qĩc1Z8ǚynH75Iۯ ۲ϴH΃˪|#["O=ԧǛM8d&zn:cmJm}6 QpSr0 |o;?A;DոjSbaJu>w_zu4)P 2Q uym($KiѱM !@VzWtG/K"EFo䈮!ޖ*uMX#k~2ӵōڵ7x'TPsi[&WCaQ_)F`֗5S9qpquyl0wbdq=m_3Υtʫ79-BA2j۸Ux= C4㡁HTJG_Fo{+Ȣ?U$ݘSMg!1Ԣ <6FOt`@KO){WX6o(vdXkZI'܇7?5ocޮ=vBuƝea36Զ3t_NĵVxb<>Vͯ^ٶ̕?p%Hǒ".׼A{Ћo w!iZWͫ_yrJ=C~L; fQ{x?6 ,xS0Dy}5`n2bb=&`ԲUa_vqH_G≎x! >9.+7%a'mc%8Z73>_.N\O Ԓ?\vRj Qg~#x3 i^ܘ7ҹlqt"$r4xwIɐ\!]O'n֓(M{?rղ bHw nX{ƎK_~:j7hM$Inkg(P 5;wv(k EdG})!Um0tٙd~  (at!VOT*B+GKpljY~/OA^ LǗCK.N:QR%L|vUK>ukw$wL߼͛~̌~`8dF `aŋm- ml.f^ dܵJY,N y]Nv 6]|Pf5H.[ !5}Шr6X%5}> M-H=(&O=^i5Ee5%SQPڄ=sE[ yd$FܘrTq*'i]θgfK4ȱ$= !GT8>,@ROo]F:!vy_^^&O٣~v֓nǶ T8aYv77Bkؙ=K(}[.C5/I veM Esg XyU㞴NQ.9:M!#njU뛤?Fim=QFD8SDž-MhAY[n: qCƩwĮcD~5\^v!Uk@tMИVD*+ZfD~x0#c\zDjFR4e v1o/6XNDRe7{SNZ}_,񐩇:)*8)'"Xmuw70[(Q5m41iIdx4?cw[YiCF KwS[Lf<QѤ*f!0>3C5T`UMJq)PFBm-.sk|ZPSkwὗn<^g7gྎ ,5PfR/2BX5|QE*vߑ홐A !x?\ɵ0/ [42gPr2`dñ--k[m>:9~ں_$(30 L8a_7}މ^^'yx&3qn6g+񅸉b\ >??v{;]M\ZuM@lVfR-"=0-iݤ# 9IU&x@6_1. b&:vsȕ$9H v%Q!vs!k:odd7%!'Vy.AOLP |ڏyhʗaE<DB,c7=b>jj`ôjFD髤^pxϲS~a-=\w6a-n{ԏ (67yZ2]_MN)-o~*$ #N': 4T*1L0Zp7b ǒ^~|mOXnQX,#wޱ2K ؃$snK<8U\]Q_2aC̹-:KJcӢ~[m̈v}1ubb֧<%Y[l)򷥯i?GS6S1$T2yb3QBwfO9ߟ;>Df׏'#UfLjS}d{Z,UŐ=o^ վ͡FVBTV9&ACHڳk<~WET׷7 XdR]2aNy]; ۣIð#=s!mfL.KoZ!hSd݋rgO.Mx{#dK%oec8ŇayV{$Oʁurtסè 8J2p},'f ,)_\_ώBK|_08*ұ8we|.͏?x-$0=|>KJe֐{>>} 19_R*z'4'w^֐ ZԫS&7{t} ]7ShETܔ$!sX^z[=&({(2Gڳ\(dq ʛ_V*7b$3- &j']TiE1Ң 6im {>Bt0 ²7K~SBtߓ$^+0lyF:^ֱ`@SޝV @-zɈ\ȡ`|ڴRC~9ra= orRXS@G1^,*M=j.'䆢](nH#< P#{Bo\]oЦFCu}%KJ2Y-b+-_qF׎MKh0EcCՖ9E:XqeT{˭>b yWU{-JT&YHHEB @em3ϋjJ-ݖzyB7X ވ?*eVi }lD#e]>|Rs6eb˂ͩrll~9jl^=&v}ϗHKwe"l+LmU sCp~`ߢ)3 n`ƀw.w-y;MZaB%z+~e>'ʜu w{.-^oݱ=YO\(mU)/‹s *N5G .XsdX5ٕ3+X vsۏ/1Z[Wi`F8{9Jj! M{历0ϞQuP HXp8$zPBT2ECL%-!g7EmJm0-/nM[K&_2 mz.=LDn52m'q<42i4!jl 4XYV#3; Gdyt$DE\*)@bB?ЀtW_o QVNӰOsU ٙ}5u<[_+ϊzQ[0nfe G/ġ?mǿ[- ?+s@d8mERRYm[Z![RXj;;G#@Gi^RiZt!-PV7uPj s,-}-|8TryA%6}u8@~{, mןUǝTZ6l_Ag)!}Vy<\x(=ÊIQڒ=av)3i7밙_Bս%zbbw.ZI-o]QO3Y RLsq)J(KSQ Ygoy*pzkB2!i _4CLutD#$ϐN_KQ&dǟmpn-_ba]v} *| X|-\0E].)ْlͬM<;Eej|O!8S\57gߝ9闛p也i|kTG+`Et~k5pV L]μ~!>4یM Wþ~_]RiQ KgtRm2t%NJnT&X3[~vasC*U)F\{VV4>l *-0c=uQTKػj`inux *31·ȅ6,,jjS$q^{bwZړ9fnP}*6\ˤ[s ( BiA6$68zz>%qҳZK֮[!>M5϶J9{)1۫7ί \Tj D$NߛN_1vKW"GoP>} F3n {/Dh^1υ˚uzUs=C^vf,G!io8`wuȧ_;62qZYHRMNh@3EFsN7E>K]Ibac?.2zx1MmcX!PIdK:-9&Y]`?-(\Y5l&QtA7o3;$& Wv=j}y{%Zxp%BjOnJX3M46bL; +`=M3#ՐDn< ];&cKrTrUL_+\`)cϟb\HhEvUÃUh7Ls!wYLX2cCTϏ>`4GIOSژ)<K%i7 zX41wԗ)FͿs+Q99.& DL E3\t>;sU9Z͈i^e.AE-a_L7=<%TA)ἝϞc*!SQX}&l&;;c#ɵTL@Y^>B'ЧGa@5K rHz|tH A>_tmXn #y>4[ݟ1U(֚btKPU`頯%.p[T`VBGVB{e肵Rqnޖu ?@J ZW#`'kdg o{aock_’ |,/z9j^!q|0_4]@;a_,a9Й&ᘗa~~awh8Yc @_q'0⦐TC|\Aa|=>Giovd>gsڿa9}cv+`j;3+Uj?֗!{ RxR]=J955k_m+ x[pύ}7쯧Ȥ(:Y᷾hVZjx0% RI:xbj z$##3.,[{Th΄5gky9c0IQ%xt gk,*Qr #n utzItiEjzזe̬ҕ0d91M#z{VER|gcJ8IM&b̽h ¬zc3 <42Ҭ6CƂ9B$b~&mGk{on]ۭͣ_Ww,lhv_5YRMʆ^W|r@Icb ?̵!ݍٽ*F݀0D j`ԧ Ɓ zc;f$*/LJ$%.8]RUgz]=pO׏|+ ÏHBF,?Ǹ159M:XJu [/xXr,rU3m!fm2<g0ŪQקpCEcSrGhez8lQ{DCRAQIIJ%SȢ^QZg>dN>H9%VojElt`WnME!)vwo6 xWzfU `ϾWEXY1XZZ~ѽ1Y-񺪤AbQNuzPR3&%7\5#Pi0BՋYZI{O.3kgT[#:8Z6Ef>uxbAvZZJ@'[6Y2,6:A_[c?b5(:;K;819zQpEfBh3lJ: " | UXSZ=0~ۨ9Tq Y(@jͱvfj4ۜW(Q9ů6%)YlPM慠SCC9rWp E_<ř_Ty&-Er`Wce;N M@'i'~%}U_ ̙5ڱO_oM$j^cZyC(If$.oY۴.BiՋVGiHPXDž$G&AΆsB#}{f=0uN "]|<4G+{enO%NR-6V4\0Ja ;?|1}y9 $?,>/ʅ)EyM t{. 7p\д"؃9łB>杯+VnŖ9zIj giV2ޕ^/u9vc ?Xy!n`}cQ.25^KV,-Fİ]p`cY~қ}po!5:;wvoܻi vUxؔWm80C:2z" $+/A^;mdoOjz0܊!Epb du [ ^O/{ Y p_,rm@r^¬퐼}9%7x]v~;?U)"*z~:fO*ze]z+z7QMԉnʝO @i(U`ŽwuXfuۻ}^08WIնb)YtΙyܬb/ L~Gӏ 58% c; T: uA|uy !`Rcvz)ţ *et `|]SǬY-["2S^=~{|q KnZ7l^:.siucQV1@+'_'8( NUGLyXACY:M UgMngI4fME{qFGnmF'TvB&o 0*Ĺ{^9 B3MTB vEKw~E+-`Ž9~ ^<gu^iH֑e3  s=^)W)m/Ǽv;n"WuM~tL)Z<CWPf^Ђ̺6Y}_ i0adb`S9e[ KVL dh~麊D LLV9sl.XZƇFәشr䒶|85)PadFrTr%6KY-Ae[X&~q?*-O0DZ4S M Me;VLVMiB@v: jM0B,xp؍жܧ ϤEW8!bÃڷJ;XJU]kGB ˎ5U=]&RIB2,%Eq1= >\4^7A~qwҊT4Mc1ЊX,󯅚0CX5G9=<~dP:'d:<|;vr.y ˕!ʀq9})bsb>`\ƪْƔi { ~BN eZۜ2 Tz`7W֮H?0An.N,ww%{H UdKLh((ùMBy!tX '[4BqmBq #w5z OoҘNx\Ryv9me/cLDtv,IxR;:LBu+;**kiN;Y$K*ByLr(> ]<3}[n/ҙJ[M8ĭC b)?]Vѹd]V*0j`*M|.PTnV\aĕoH&-Ai,%H8D(dRvI6Rk3/8DijK6@>xjۨ*ʵ0Ln:i+zʰډ.4y^.;5~@w>kV"n_5_2 ](3q?{b/i^A凧v$M^j!9T;wִSW!T侙fg(z$C{n{5sR=qKeW|l99 ? U40]=DsH-Dc <ވ|b#۱F%ƧXl =+J#\J~`eZ:sU&XtmNgn[!JUZ.>^@|,9 -jb̹6e3Zd@cLez3BJ"18 XZj;FU5[5Q] z]`x{4r`QcQh ;H]>.ƐC HQ׆(.s xr2Z:͕2Ҽ9Q}9<t&Pke)1슟"ٛh4W;U\RMDԗ&btL߅@1 @ˎ"ua 14 A_+R7D!S cynvЧؼzX8^صGb {NH!e|`|Og+@vocF+U5PqLWSPD᫉Lz?i"F=̞Oď)qр&BoE['>mLes2t;GʫUCHWe'0{XmE%j&k_꩎`)"d+X?-?_]UqX㿽m_')ƛxWj͂lXfY'F[G5x ۰ lԣFJmF移 Mw١joy4u<0+nzft0[全zt7wd;Kx6PӸْ+U|Yog$C> ɑ k|0?]YE_PR0F= ջCa系y18[qw*?I>O]a3A&v&wYf?=o1]Wj['$4z hF?H<=Ud`/ԆǮ( -z[ gMs*:ʲL ϟW2c卍ɣ ~z**3Tԁ:%¥ypI{ucd2wC{'Eb?XtMiryO"AQdʝm5K8 ?1$R(\p2aN(`SJrATV:o ~Cdx(XFwE0#ZA_^SgxwZL?b~'}d17܅M09݂; Osi9lp~$|M|\,S.fiʨWs[Js>Q DF;|ɣ !7Iצ>W1qix JWfD¬;wkbYx9ց,^yJP cjGjÖb]R&:l"X#b "O.n ˰j2^q?ccNzl]w\lg4j,DnbHdoC nfa\}'Yz"eDګ; d"RBR?x]շ{!s)}IO6zGOQ÷~RNGˏM A86`\)Ӥ`Dl|D.|Ib#hK!mʜceژc5 jH/e-z+%o&G YBa6|E˧V1fz >mY?X2Ip;C9ݴvDGau܃$˧Kn2e[A.v(@H!Ĥ U@WBwI2Tᠦ:K!A'ߏmC?PLEr%ƅZWV*5 U+V󷣽:qI t bw>ߺVgD.22A5ocƶpӡ[J-L*<"KJIHwiLf/,UhMNHyG\ީuKb=sp,#ՠE+ Y:΀:_5ƧhZLz.vmQ+yCL>`ωON+dL6q{O}SY޴8&{݋\b4RTa}Ss2%XY]kqnMꨩR_ Mt`xcݚy(*:J9_~{b׃_Υ˯/ ݲPMLO B.>X6) b U;6cr(!E@¹_1 шU- C(\RGa wYKxhEtOЁh6kzh¦9j%l5B5ph'f旪ŎDA{{h$*q_ɀQ*)l^`KkZѱ"#ȓ0g0a7!#Ԉ *eaqcmkb,*4@mn8Gb#>6m#_e $vF`%9pd*DCf(T;2{ge1@_deXBhr -e!\n8>Y4ϝѿV`a:*8<+-KMa>J/+MieD6C4o@"T_1@r1Z uٜf@@$)oūY@4$_$.͸;j^pLTAqT\ жwf?q#]Q:IW:Q[ۈb"4ׇuck 7gs^}-z| ~'«Grٍǫ~G('"a'>!  VjVXDwC|ϒգ?VRrywm[k~RR4PL=?u8M`{=QTi$ѮY2k= ?X65_r!3ZZ)'X#/_+Ӌx+\1`.SCɱ~I{<灌;bR7n{dس"i#;LH Y_+lej%s,Sl@B%ޫCmRBKap}8㪳vr3 7+(:U3*{zAp#?T_F)EJ/svlznjhM`5 a* 5*) ™v 1ŭVlILP8}PW4 bڮP2ZBpt^%TN,eS . HLqY3d{ U錊_~tEԓG-nkLsɸ[k!1m: 6z+wݵ',T4Oa]Z2V cyqvPmfY&!f0;;Q8)&<:"dAޟxYz)`;G^y"j\}b:gg$rpE&ajN,vN9n9B>$&YjO%V#'6uy<[jq1[ҽܤa<{hPa(Tp]{k[O$p@@u7gck.nBi.=cINo^ۺUGh$͜#A--Hۚ3oh5\.=G_Auȱ86~i˜|#ʶ&!0KtCxcG"g` `ʛ~vD\ DmI趦ċ1g~%i| *5E I>f[0>^ӚUQ{+[{FdK!ރGN ؀X(lm;3B.JA][6%֖٥g~gNx+ghơk8]ƲݶN. ]c>i3.'J@K;A3h\#铲ɩGxW0f)Pbt,oZ01'֋o=U&bUM+j#BycWEz^<2 syWK" hjk`ӑ(bZzg2rZ a:2*ao(r1\u^Y BIe1cbExqeUؽd ڕLnXNG CW ZQ`u،X\KHE:J:0y-Nfߙ""G6!tWfY O%Kc E yZ.1qEܩ)3N^OOxǾ l<.L]C+Y,h$ہsT6)77̸r%0ۑAˑ?&:ᔿd\cDq't%骪-u'zB/Ģ6j̍2EBԏ5Ӆ \jϩ!$b=$;4#VxmYN|V>"Ħz:FNheV$ȢF}Hn|[4ni2*rUe7_bTӋ)䏿yw$%Kf"b\GJoA928k'IbGi%Zs4<&$(uztIۏ.[c&PtSCԈ{c-lNV:0Х$vp`hyQ^wc^ %)˜WJn9f,W4fl#ӹay¢D6zL#spWE>O>`3Qm{W08nў>k4rz)k̯` ɊK1qx%j*=ClhfmQ0ܒMCQ/J͞8! ju[k_6z'1{8?͊pM \}c2_03)^pP a56Ul4Rs~C>%º~SIg/SwXn$+S復 bR& ߊYzBW JJP4Ze"-`aTgdKg "&zݑ'1Z{' c'% fF4t{tnFR^i `j&@ADžtfk}ՁjXj"kS?ʚ$~A&Ip=fqXr[\wÃ;!ci$76qm~*u)Gģrcx~̐\[pD:4OҭJ;wG,Wm ڶb߱֩>!j:)|G%{z+td{Fj łZAgmm㵹(Dr֢f-p+؄%?{ob ](y2KIHr؏5?0ݘB4O?+v%aHy%Ef?fNY$%̪؏Ȧ`3Z(o&Ë̩yeSiyjY3;ȖSp?JuZ~rGrQYg"A/pu]'7ʚ{zUuMM+Ʈh62c<]ȐJ3|)C7/|؞c˫X@d,Djn*[ 4y JXعGfe/"4|T7]iLOX߈;owqsXeO+P[?6qU.7YJL)/!|ٟ 9Xymtujc#vv.'1KN0Iu^ㅯQɐG1:}^HLZv 3. zAAqP|D5ޔKSj1;SLc[+kѡ#ColҎLC!-HĴV(H>%TF+]GNBWDSS?lNlg3]k.`?bMD1F*|+zT^;Zg|>ҁG+@ ~ Z0al}K>D ~$?1 <n簘GyR4l5N D> _7 ;0(^ ίGX~|3AJBU%u+̪S;u8((iפtWS8RLj"KOD@ R6A~ZYvZוh=k4{/P?#H=u}<_j;9+`Ki:dyB魁nZ2Q1OO![r[PPe[I2c)(ZqUΥw~k$&Bu~xzH#{u׼Z>F=?Xw.Z&Qѻ sw ceΟdW5?Qsp}ZcJ$aNٕk)ïoU7'hx.yjpy#'ӁUK@L4᫛L߮i:i2K鏂I08~GiDd{ݒ%-t ]L51vF N؈!SxgaWgeTC._ƽhjytyu~ kwhYuM.iϣ@iQYg_Dz"r3e(nļ-_S 1u06M@na|#*dYˆ+/tG!ib 1H!~GX@m=F+i:Wk:]-nLxܥSAPZh7IwW|G渇𱃐o`cJVݷ7їUî\ߡ͒U:5S@#!j&Q+ QdmJϠ0eʜ>haj aSL);J#90]ّs8^F+;JV9oJML~e5U_Yf>k gKof̈́N5`ͪ}떰TQ9gPd6X,(Bg9c:z[,IzUUHq i- ~ p=`T]:qb󵁗|"=kC5nZ9"6 2M8@:EZC|Z Oi_8UaPL$_~Ī,jVat# <&M7.wpGHN~%Ȉ/+z9+>p礪Ig j!>ay$an8a z=z*as BhH~mYO,fzLKIDj}HB U.EjсJ|@+ʖI@8 Gnl5CO]sOZSz߷r6?C|{IKT8~򄩵廝O[؃wUÿ_zd뉯Kx]6̈́KF`R3'n>Pa! Uoɳ9qyO>%n+?,FȔ?s0lpb2}wg VÐ +j9k>"Ejb姗6 #e71Z#WmԸQ0xK ƀ_ߘ#-$$f"eUlCUq =6!Y I nM T@V-/jAT\SA|_ޯn+%K||Ah(xQ%lB}]<.|H$QnY|KBXe5􎶄( ||#hjxA^/AX)veqhm,jG:=T*Bo '+i$b-9n,_tT%(5؛n"߆Bi3hO,sssA?@8[pDB}&MK`Ia+fE-{\Kpsϕ^W]`ݩS5SpEH*&۲lBHŀ@pGf{#1fXU8ePYn%)DPq82Y1d{7oXzs3]VhVa;6HHg[T8@ 9bE_2y<㹧͝ea)ƃdYD5mjg&@V&Rw {]v(ᛋs*b3SfX!_ǼB6(83QZj Du`>ʲhG0Ôwu Cc Ljx^纕׳{z~ +m׽x-zm񹟮z(*/KUczUܚ>M(Q}fM [tɭ,ڐ8[>qi 'yólj۱/sn\z,|oT(q`HºՎ֖S%:EU?NEBzt@jSބpb'q|-nW0Yu ,o$e8/4v"pfԦ0+KmL6RwJmli759t?s:*/8ݹH) ?u<L Ϫ2}o-=jw>[NjzJ2qa]GYb Ri|iʚ8?.Դ/'Wi|ſ#B{{T&ޣ?h5E`\3$nАnߙNɪ0zeEY\6bAk%eHČMgO[_wվjMͅx8ђ%dg|鞚߃aN?7^E^ȩ̼wR|ɧ<% 7+i'I|yn.]qh~/i^['5PMQ#eB{3#_]k/ҬO-9,)pl4'~Ȭ͕|(DJ@]ݎywH_PQq'1u8`pGA۴C@G' =t zMao[W5da"jV. S935N2AREpP ;|b/AGplxe#NyڠopJ[ ǮىidN*? our!p0BZ~1\ضѵ_hYyn/+*q'xw?$I.\nE=o^ *PkA[t!S0/(ܲJ.]=yTo|^GkfXK H7c"S kj:ϽϿ^L,c *[s,LTR3 S3V#Jj1x,9qnu0NgF=~RA(w]:CvxMbxmL F=7V`/ˋ43s⃨@p4mX}iattɿ$md%\y/D@KC))ޣcZ&W(DI ](_Q?[ YRNbgA垟ѐ)_Hfj0;BCfU9P}}X`곹1<"50y4ٖ?M׆Dzx3dZɮ Ou3'Ӣh.`0ӹ`0QJM[ 5C^hS820 kB{ԬND/yL./|MS{$pn+@KϽ:&D9}fqKn_f̩b{Q]hn[JE#4T~Աy-..gW]962 >Թ2%Ceo^Iʆ,څWbdx"ָ9{l)HGMCw~&0$t ½Zn\>?oRLih{h֗L; l:fR_YbQ] GܧWI[G(EC-}1>@۾p<A@}/ 76zcPǪ̋m޾{/A8/=-(ϜkP,NHx祿JSl>ܨwַ%B&o6:ݛXIӂ{Y IsBDiJGu.f0u.Rw?72L[ԅ<܀쎗whE:a6Z\';P-PXk&fa?hgTKuї䲆(z*;fNI3pFBTm7џX7 Z>~]@TZƘmHLE'gRa7yjݤՍ6]#/fQosԣAqz@Ǿpȁ5rx7 [M ;m;UXΘ^&o6yn+>P(s 2}$ jNJLGF jg(aj,m>P&@H ey("oMHִsE%T, M[~[CLz(TKLqv/$ *JyHg/2+e*WG!$?\!4E5$#i".xe.5R(ިy`F8lFȯWaCvHѼ&(Md'JJ}ǞQ:▴bA +U7)#@FdÎm;)"ppDRm5@L&S2Y$oJM:BóU)]T"EEzfA~†z_DJw,pʬ'fPF.m1z 2)LhLhh0^rmy)(Kך nTqإ2+X;/h "p}5jk>ORP6׾5^ϣnѻYb}u4&-XpU ;!2tWa ˊ\YAjYD11XX3~5n7 #zIAYO[Ya4vnn>~ c M[TZSoޫ}įm&(>؆VK*@5F)CJ(!XuY3SMMEip&w{[M (e]Ƚ0gaI4MMUQT6 )L;VyR]AuQoA!$j} K 0LgQͦn9na" Гy%KD(%K:Gb/<%2b[i1QڪϷm\!6\cJjrn8ST7A8 iь>4CP %zH-QvMFQ3ڪ:fzUڣH4(8WYؕ+hESD>fJ0kH6ϏGJbCIB`:*0[|2gׯܯɀWȃs=3O;HʬIR+*TP

[I9^0*JL{tƹZ-}396$*D>hȝ+lqm0QkR߈w R>5etG5i7 R/ . rd= e-$**Arm|UWe:fBL2g9"U耙Coc٭uT+Fri"[aJz]=ȵY7D-&|REv`.4 DWf_FXCzJq*C~!B4fIr@D! Qw4-}bK Q6^G{[.kWb2ck-❳3Y*S0L K-5r };u+&'Jo!g缢PI K8)YQB!U ۓ"">x/>#}ApdyO("F!4AD 0C"9Ik1ĘsT}Fo;NN=鳏}Oy}#~3ݯ(;Mأ]D^md dsQs!`Ͽ䗾wgEQר+Edd2S2^4qRY>*vA02l -#c!/9/|Q|Mn?9JƏfP:h[J$y3`a`-3Nb=l0o9q+!Ɔ8"xĔx7Y{]/.\rHCh7s^z 1"fwB>(|ǹ8iFBFq#֯pqmAsu"M GM8r-6O$i߇>t#jf 13zr0vΒEt!?㗂o}-w[A5(GqHULcORrL~e0wɳ5 mJc|{??G_%W+ 7RW,h tN]kd%adtO8U7uy&9&MYRKK3Ͽ0ˆ5P0m ,/AE܎|w99Zmo y$5q*`3&FlO1 WrCz_T paheX [?| PnJI򳀖hҪ$@h'4Xp`D)0ͦF "@1ؑД`e@~R5BR=[EAq ;T\£8KC@W(P3'A4a6 `՜f5HĈ\5hZ8*0Jr>Cv$j6e(ֶd~lVmȒRKIK5]5Ut 4ʺ)gzاBLTP3UN;ʅbYUhJz b7' ,QX;5 gPAh;.ឯkZoOuUZ$j7C(0h/rmjA? vAwŰ5E;E;m묯=sPLX6܋˖T@M1KM/eQ A!Jsֽ:Ųk\fej(—(@l*AD'kѨ$Bθ>$ :1 sA*iI'x}?_Ͼܻ>ɈFneR!U ̬vcY '47 QS{uu۟m㣃G_ {^=JD1:"FHP"fv˕IPHDfwh46,GvT,b$'O<o}?a5Hl Q1ctfR̍o/e'FGBFlp绸uic 觗FIjD Ql2aCD&T侃D`PF)CʚC,4& ?sӏ=}O]w"18 $Wߪҧ*h(|3U]8Ǡ&m (E%eP6BgG^x÷qv}GJ <2qْڔ&((BLDm]#.Npœo}r#&ޱx%QLtkb ' cD궳#be1/<칻^fi &'*#'Q.]DjZƔ`щVGaNMG$t66V^LT J(c'B1r 1N|:ȍ!";E=gh14-r\%Ed qALUAAJET̬&HE:AF}L.9lHO^l+8f1toB<"@ =%f43m+…+[[6_r ?|7!k._Šط|f\lWWwݘ[W&L$*:w;iJUFIR(vfΏֶ *u쟈 U t# ]Iy#,X }XgJMk|ru1F ʐ 5)sWIءS/>>^G{o~}g>k1a^TU):$4h},"JG EgŤ1!RFЫW/΅·#?O|pԺˈHDic$(P0j~NF6; +IZm F4B(w4M% arECde\$0\v@߿]\^Z2ria,;)%2 (Rk>!k2͕ PLJC>*/7oЇ~kC' \!4M 7*'߇\&M@λ4PEFc*rń޵_Bq=LK O j$ RRDC1U#}t@Ur ,=^0+el4_c¶i(}G KfkZ}hCǮdMx{/2ч0u Xԏ gS3;.~7%u+WO=s;>{OB߽|$=_ʏqk]ky?n-| ߌ" W%,4"Uf=ܽwC$bA3UlUjamîqjYJJxUkuZP_2V\iX+T)UѬd3U/}MJgQ#`3[R"Kl/վx7TlJ|R$8[DEyP:DE{Ջ`zM{>䲿{%e0#U5TFI ! t.(3L\0u-Cѐyu칵zdn=6Їn'Y|oaF-t ""oۤM ]ch G'>y`2y!T,YHDdue6貦ӣPDA .]Ωc`j7+۳sg{׽-078s̀(?#E%by7lj2˿cT0_ύ]anJɈJ' 'kV>@36ʄɽDng'}=AC! SX1J=e{FB]tfU ;A<9юvͿwyum5{"(FI{#ICyi}B`SAg0N>}#s׭qҎIaLA:AqSPUM..*;9,ʺN 맟}akcG7R;`B{\ !0':g<.SbMɐB̜}}nMГg֣8jƔ: }KCy7m7 :H0T)kBtM{puC !M^bgm$N8ЈDiD*ѵ~:y 'G @<%)t2 nÉ4ct~}v<C?9X//4޽9QV'O?8u~CS6omv$Hrڵ'뛳 g" o?v~> p}xJ'u< P<#lLEnXJMv֣T zB#H耍 gqI)BreݶEv.*Rh+gnZ 6(Eo VxșmS/ d-%ڰY'&֩ Ua6H*:kJͮ:H?RbD ԯf,K1P\ŐT4PElEYu%3!;2p b ŨJ5mv-ozp#i^M%|HD&S 9!#J,Vg1> /9Ώȁk} PẄ́!l+ D-;'Aeɝy)ҥ w6 =trNt)sEsf6uܥz Sb1yw.\c?~]sHё'3v-| -VHoDe}x Hg/1%Kxgh۴y=#Aڀ^3Pkmh@l-0ӲԴ0b.~kӭ?ބ`%HπFJzoMdND#6[]] cU'n٧v{da cH{4@B" }L=SQh/8{F:L ^)4HDc߻k '?|{f.nnrL~p 0+EAκׯA1b<'iN\̸x]";㭋\w;zK4aå&nU*BA"k`YQ#}HYֱgu"rΉ@fj{e)Ͳ"4䝊w綎:^"q#;!\[ɼz慣r˱?nG:y"0SDTo%ۍ}k+I3[o!"][_ p:s--BE-򔁪LH kHWmKKXa%X+ZJX`NPE;6S>bG|["KfܪluH1}:KҝLvIv#.șz$F qͶԩ$Qݭd*DSR&e!VŨ)؁P)67w:~" r5Ag^ %rKV̪R9JTb-H {Q2zzMTBVRňr5bQ ULxlvl-@ .)Abj2N3Z ;Tx׶?Rh|CGOU<4*Mݙ]{*Rb E)M7ZƬrZ[R 9bc k8;CAd-+O/nR,} 䔂1fF^!|Y/zMb}039GfbDA|볘Cp{~_?xsO|;'^5U1QJTL$MR q-"'1c<픾t_~GMVH$GidN M_7Pt"ʣdh=x<~ozEnx:I~ОǾ3t{kA嫛yxꅵ7Uf#N HbrkeVYj1VP|fdH4/zul8_ 8n֕e7U#EC=Nj14LR*G֠Aۢ)'4fV uȬ&i+qd{az:bɠj "zSZƛ2 aŰR) b{dj@): @õ8T2ߨԒv/)y\v+دrQP;^ "L! ,%LtNLg{s_c#éםӰ:tD/GkF/wog,-)U{{ ߔ >kWmJ3-1K`]청fޜpM*l+: WD5g6s$o#pBSY+)W ϚsXpe?[GsÜ\RwUÈ*ֶc[Xn? VWor6^ ocU^ _+./%&8'd5Tֵx,]yyF z{foߗ7~#oX[+ꛦ(W,'25fQf0sRP*eD瞟G}~{$iÝ@1E "[J1qu)S m$':4jɘ6 |'؏,Fʔ,dJCb|N_ YT'ޓDDb*}z+.zFH|djCZTLBdx80Y:\yD۸XDr ^<{~gz9 ,$dF1AXd6)zb\AS[ '7MFG%m4?wwՆ;> L1 2̆B &H i>1IB7J\zmux;y D$xY{@BӚxiH4ޫHie 3;81̱tDwyڕټ[^^T g}7v<,[;E;j\c.HBLd=jQOCIP4s覛Og''_}x¦grqfffEė6_:ueܶ#ﯞ:]?F׾Hs0b^][>y<;盏8Çv1;vdӍhϞfy‘n}ncF#AjZ} ~SAO%\zʠhCm"E*@[֨èq0,og2'ߖ5F j8ACUFfcFg u]*˛PVTIZjY٪MYP[VsFJ!zNH dpK[6%X=̨>jP*5p,+JVԆk]bPҴLLb%24@[UHf4ͥe$e|N fz E7xp@]!Q&.; hDIdA& *zy'g`Qc_o1bѴHH]\vS{>ݫ{Nc)EJ1ʎ0TT*Ä:uPTl[Ξnp؛?;>0r11j3c-IS!T+ $1 ݐιNAĤ,>llwݫGO?%zHT&R~ujdhs3A1@0Ppɭ{{..4D>|ЈY{wPXDT)2 GE>Q ӋbZ!O>vɃqkm4cfvFZzU}+Hb&@A$VZ%LԈ/Q*gyBwox:@@GJYȩ5OLBH}UVTrI(٢Jn{9gO}-۳~4h;Bٵc,!~B0 I z9QD!ل>kRooZiGgO 7numZb`ksn2& y|3pزwLC\BTN^XtaϾ{'è#k:w?JAl\1n "^A4y%au  nS?gϟqdruksqiS$=2kץӌ!ljSOggOO<_}CO+ mI֠˓E]WX{_FYOn;viǣ62;R˨KP{VU(OjA{Qi i};<4*9VWTQw?ŏy"2JZI10c΍HKaBo5ÑqbNFvA7贁\loӭoOw7ĎȬԾۀ> bo> Y99Ĝ3N9r ;BNUm;۳oZ"ڌص!vЇZ(Km6rcf,1A DGsy1xgy_ZU9zhKO]y'Dݿ:m=}.Ѯgl6{s$bRЪ25]R"l eּO^ ,=PLl J# \;3]JrZ*y|,-`$(P4X a(S%P B,ތQqwil@YF9ցxaE#!{dM@Hl'mOFڬGV+WV#.,PJ#9h!|" \!"̋͡T(R(R;XJ0IC󨞁C*`՘goezw; ;72iT'Rw&9s2/w+[b!Vx2mP ]DT@ocrwf&\ *uh"pGڤ<)gY{LQ"T4aju~KG%оo8Eg!ʀů]8Kש-dv{+ r誦̺*,+laqABd](Uˤ`"< #7[¦ PQHTQ*('^8|-/WS}Ri?M՘U+"JZ2)d,/$g+Y3]r>+w>BN#MF8AQ B,D5Rvo8FaZ*t2?so=SYAuҠ|#!b1.*U!yܴD~vŊb]?/?BĢ!+f]zw#$ZR@Iu@u4h) nuS9݁(1Dvh&؜+aG6hNs(T;<'U#K]{okhZd`.m,vCBJڬFHzr92g?;ߡ,CtK#oITk't2kݍ1g U^FB)DMЛɄ+ZT%VS4zfA:7fS%SL'N.ٷgj?wzBSsY3:"ޞQ#!sD2tZ:,C@̌NɁ}ı'NG,--2Yu|{Mhfb"kN߃joڍ+W̴W9_hs1gא[srnSS{%O_+y6wʣOkS$[ٽ1C#ѕMݳ]ٵyu>Qw,݂cfRs PJg)a!A[m2wQlbʼM WjzkNVY͙ <jTGꖬ7A:T"> :6Ѿ%TJ4>Q#ܨN1 Xbxl`bw`D*vP-2V`Yak%eʩ0P'F)(ԞLL a- b9bF4ELFēD :Xa\<"K fT4vnȾɨ|`^8+TOǚti8+\E@FTU SHha뤢mEo}p段1jzl gԾrw5,0khرPmmRyBidۯ-(v#xFRIq80U#nᅋIΠ-}kcMMZUFMhǿb2Kezr a=/TK}D:—jԆS(b光0=KM'IMm[w^©_zmw-/A ͓Wi'b{MsT((х8}ɧW={?:2ScvjC[]C"$(s!P=_ɞQS؋O{qhw}#GAǶWm^}[[H59c , LjyDbCM'?_[Ko'8 ;(U ֮e` 1f R GdfdRGΜx'<Ο 'KXlْMbeom`slgiWZE(]~}?rHgZ=.g=H{5 &\vE'>JEL>[׼mcDtK҆.bZl6JL*>`:k,24hdBۛ=}Mn>@6.4+񄌄cZIbk#L4,% Q^P̹3W7Dom(yؒk }u.JdbAAl}ZW=ш}*BuFCϦqCFW)Б{a(m>'۶^`d{+suys8Q!ƹsfdv dl ĜĮE9;hIb$ͻ65W{mQ s׮mvyg_}={7UtL+K+_N ;n{%G?{ށ;txߩ6}-Wwҍ[|ՋrS,CEe'*% '!CSURTZN:ԉ!Zԑ-S M{. ?Tr#ՠʣjD}mM]OYo~t1SowD7a>N"1 "̸9Msi-F)=2- *Dk#ݯӛLT&ۉ}6NNچg?D '3dK7ivk"j[ycԖD-c*>2iV9o28׿{+=揿λZc4E"uh#rٯ2^ҧ2Q"64&7JsJūteW_K?=|w`ٌ??v薷<'\RבUWE) L׈x#2jX'q¹7C#Br%ֻV3,Tg-)*@M+%IuF7F+> #6g0f|LID"I`y/aБcJLQP i1X"]׷GA(IÄҮ_\ ; 3RC>)܃Q9>R{ԅٵo\x3&Y[Y:漳  5xfwe_VTRhTh4<3s|7A][RV .!zJ;|CV RX_Ԟ[Ld1{vF!UiB>y|I48%8UfLϜ}k/},,E2R RDzf™`&GeI*F.@/SMG?sreϞ_/[=<|>c(ӓψjȏ1eKCUBt3?xC"sfl hETƢ(9ЧZ!A+}&w=Mo$OAM* s~>Q\ڙ&@Ցy&mϵ'QS=WyƞPMusVGԧ᧤2%$ 1缈QdEŨ]} [v5Ԧk`"~طmbpRԀ D?DϮ{+-3s4v>3Dټ|Y5g.ɞU8iZDM#16I1ynw!Jf0 fQf EwXY-fJIG9>y>zQfN ܞWWGӭGڡ}۳(u_ޏ[n__ 1xM~\ti3%p%jqسΌu( 5Q `QnTRB,6$3tVLh2{D|ej_naL"R|)`TCOIR)/KKIe/P8>1|C8 JaNtWjbW BQ!b#M̑Abj~7H᫚XSu@43d f,WbT+X8*"V&s]R][UQj?A (#jt`dC%rޘ.S-,Z ~22PJ8Ʋ+ucbN- ?NPA~ U4S`(Tpp&ձ`NM9k9!5QԾXfSQ)`$;.@NGa, ɯ+NQ-֪զHkEVn2oX__P.",ʬtj .Wf_֋1*< a‘GI(6mH1j E5vi^?588nHf@&uAmHqޓs`:C)2INT6#6=8 ;‹s}߽yqd8J&hakޢ& _JQ-s,!9q/Qc J6.q/g7>3?_ޡ*UKdIIQT vHp>%dZH6J1tB]|;yqPŁdJ!#'=XFaI< N**(PJK/p~GrT 4LOM0(tVGb1F &N4ǟ{~_CGl!6{UHG )"J`*ZgVɶ%JR2t5J ʺ6Ʌ+V5%$τȼaK;.Y1ĨDgmEy ycLiG%*H^77|ɅGzBB2IR-0 L> @ nDĎLm3r0Cɏ!Jʍi/--G'iu*DfҢSH`!s*cP$ %i|#yqV5%~=7v^L#:"C):?8(U (Q1O }-E>NJClƎy/:Ƶq\VE+QM'fƗ\g_<;C/?xṓkk[׮#~`+[Ȟ-سJMֹz{1Hr$1d[blJDThs=$.9$"&ͥu ŧ…{c$޷. yKYek)i4%bJ4]/QOr҅{՛hD)c&$$κd5Cƒ4If}ia֨䲑umD: ~j7K>em~5"1۔ic33<'$nn]xL<4j9Z`R"S/]2]t^ߴ=>u+nWؑrpƕ+k];h ˋ[[C@kKBrk)iwC W,X1ܥmF,H<UaHd%rZaIPO?4#F@lu RT( 2qT;I%U,0;L>9O捯9 4G%nSJCl}/ZꡂA)'G=‹/Y&~+oO1Q19k $L'hD(fXi{Apc 3/>w{߭]R$cnŘn TbO* $GQ>1F7vtSo|+_c׼ΧwMr`I,I5y&hI!88ۇMrERbǾr !EU9 Q(1'`/klܘ 刘KP E޲^A qswIn };-(ZfC 꼗(j;: H(Q*kd`)Gԥ;of9؇('ׇ@%[9ƒz%{YifK֯_Qvi1NQ;a^ ;1klGڽ#irŕA1?]$" 8)W(ưrO|xtE Ċ _}TRkG̔:B0_4ǵH (=;BeDw[%|ƞcz[.G){<"Y&SM!12!ږ$H@LCqZu5!'˯oo_z+_;rLS <'>%mJDZH9͵bTb< E"PE8~hH, A}/!O~ҰcNh0$OC34e=$efIsoYS=3?x|w{hRd:%}4Ț ')%#(9Մ qM`Ooq;;@M6NjH4 *vOPYU4CzP1ǐNE54/<[b`%QmvrĂ51 qF{] pVy@f !c+7+ļgy蔤EE!J5H]lEBHv w95P9s]vI_6\QGˋcsDi:2sJ QS]$Gdxҥ~'x⅏}'/_W~w-{xw`릨z)Mۏ_D=wރ{xݻu5Vc2V=шRˣ!ҩj0ICZ<*F,210 RmK8u$Vu`gr@duXeX_jA&V ~rwkb=q#C8GSEU+fS屪lUŘ"D3ʑ 8H)1^ Ha 8cQjCfd*VXHQl9V΁BhMK;A,@@rg0(ĐIU!*7GU5~ %c!;,H-/)(01dvso2(^F`Ma/ A D*-֛f*BAFqWh!TS"eQ,UUMҝ,SYxJlS++X% jRENJvS`CU+*}CN-R jYR8MP]끭29G7@&WU @5iU O=昵i7rQ!b; *_!|9/h2ּ os|wQɩJ5 #;e5-#x?&'a!]v,ުllhe`;zWrڡS ?16 4r9.4 W&1J0[8'Ҥ1>^@޴Hbc aT\[׾sk|>}f"SW)7\ꯚ 0yH6j/ Lг#""S-ME1ˡ5ˢB/QIMQ f[[^\;Y!Ms`+;q-:$WAؓ;ԙڙ_xzuIr<M\%׮N]ƣ鳗¨c=f YUq4K՘zwC5ƸA1h((KE"5טּW,IUZXT=Gd ԮCVX"pV啵:4Qb;AZ'!HIJ G]IJ,>D 1u7Jdj˸tPgl@km *FAFRs̿Ixa1`^y!,xyEtժv4nPF֌_.UYVK7z ؍O,2?c.ULvl}2@AtdTNABJlwV4XB% =;7˲v+.zӸ7_]NsM$7JAMYNvQQ+brB@ߴ Z-YHbu&sړmhYݞZ YC]-еRESR72U^U:Ȑ ADLJvkcFs=)a~)[PI'45'7f+m<8/0ym^x5x4>{O>6~uaEnyi |49[?n]IdDOv2z,xf/ܶΑFUTu(B[WCBmo\ne79F=SN`B| 2;M\۴V#ʜ3X.TUrϕ|f2blW74K7엢6CXfA)S*Kj56/Ғ>ƒ#$A1p]vQs%&#5͜))BU$!bq`u=o_뮻~<#9LDsHD)P0'"'K@좚R% PAQ hѢ!!oxv -Qiv*%9HbɰfA h·b%(AǿE?z]bG"M%j3  ӊAU="J:y%hr3ftOMn[\j=ijV& ^2i#jq`J s/hhj cSJ+OK+k@b4K jLIdH!=1##A bO:ѦiEԛU/uE-LQc7 RĐI >B|q.T4T%gΛU oMiG˻q(2dsTg@DG=3].n}OO>ʷؼr޷WcYa7~:h\ObI+KKWWw[v]񮭠޻v>Uet+HYphɶ.`.LJM`ފ[49w.MH$;jX1h:j~@"BZm;dUUW(R`%j O048"k%*c3Zlxl"Y9#f d΃n/l#:DCZT"EZ B6We$k pt%cnBت*:GFl7 P1a"qJVPSzE5-#{h:F4+F'@B?|zB0=QNIv_;cVujCl]YYٛknƁᖬ db7(b?xcN-b,.N;g%kT֗M 5pCn`6*[܈xWi%VzSsJe;+PYqh0S5AkWfQ5j5}5v22ۋm]ݐܜ 0/їBi,kaaia4^XXm΂ʕ+/_651 γ=L΁_m/x9,-KK"\,7ǚ]ukˋ0Zlhiv;0jƬ4=˫ӠNB0 9vta{ݼ)ŋ1~k g_{`ykvP9ϴ|vш`͙s{d>w9( ~cc.}m9ߴf=} F&^/r43op2=t2BYpBN5!nк֍97H{84ϸW'-Fȷ h0jFε (gsu~&={Q RtЎ4 x TDxوGsUª=hCӴ#F-@hgRЍzQ-!3)! : 6<fB{l*Bj'vB}Oow v[g]Im9*KI-kF!5hTx$6]{vLg{"Giq@HEH!i[<}5# 56K)@"AYz8GH޳Kh"qӐ4٪,m~&>}fz?r}ѯ~1y:tg_$>zcN{:vșsx7>71i"sಒV3Zo2z\#ДL%Z1YPlfԀC6n(̯ R˭ZmYҒ!%* ʶڧ-؎{S@).R8NA#K  ۵KGl.,!}>b_Zd07i;ՆP5$5e eIV$Q7̨llcwql@;P6'2C0!Q2 `ؼ90! :Tw\˧,ť}^",HD]aox.5] 7`]& a2Er"U@c[VE@ӰɭZZk^)_Þ7VRT,g02-ه~Jq -?~A+V%,]Ay;D׻Rlњ_HY@YuA!~iX-B)} 7DWb'^ˮ] ]w}Ջ4B;ry|}'NXXZPIhky.oZ냻O>x<^rD̶C6nmX}=Lv4ݜrp2NGoy4nG Y6)n7gm?O_h)j TU63Ql@Ct%6@$aBíwE0׸/ӤؐLGޏ<>J,J.6gq5(qlxvʮ5?Lv~0UG ,r4P4E&buڔ1tyh2L-!:U0T6eޞ!@pI8H4Z sD"%d=y81#vT2gbȢ21o@5XJǝG(ae/ټH`]{FzZ ^<uJtEI&&9X TAcT  Br/o~вnҴWbǣކXP92=,@1,ƪI*z2bTAkO\=qjߞCG޳[{PpUⷁ4u b@bTS#Krc=;JG̩QK C1)& ĤPr$Il7@h.V∇tVHϧ׶':K0JVpB|Lڎ>w|ר@S;/!"hPG:8;&Eu7+̱O4X,\^\Xo_\?G~W^xwػ ĕեo?d ޷gʨ j;9vڗ*WˡqAASU4T rk, =Ip_.DEA@ZX+έv%ҩö}a$-?2կf2C⮈eUcNI T{coL]^fxsp7 }H{(CD(fAqC7UX6Mtsy\]^ TG1GUzb *رm]0DI)G\D7;"WWT%MZ#[V[=:rG} ҭS(62 |/:L#͈,j41Y̼.c333{eqm(f CcAf^eeV\{[gsk9qt<nF`8~ٷ^}mk8M[Qҋ/L$wQN?wnnmRl]_zxᗰxN_M@)i9 ~W?_Dn'ADHV,?#|疨|ՉrUiuiX b8G[kŌ`'-P_, ɳNCZh"qQ(@ыZ@l+A ǣ1#I"^:C*'Cn硇NEQ13Nb #/GZI2Ι25՘ lwdO@4,: $R)N8B( 2ε*0IdB)I<-$ )XJE$" P^L;CNJ3Ĥ-(BMED)B`Y.OATyD*1ԌQgaypN 9>ƔF5Ҕ)&6+ˀ"@ʋ帙J1d*]keUUaK$=|$yT^60Sk7Km?Oۥ/ g0ٟh7=Ș2b%+3;>]3 2dRGH"\}'9۾J PROX΀#qV"eYJ!X£B.v&'Ra')PFwqY0KK4cOZic\hUf2R. PCJqkm0h@6ˑJ30 7&hvqF@fF/R ePiu悧yk'Y0$\YC0VQKW%4Ev9qIRrl ,m ^ F~ ӛ++ 8t;\rLMu3&A+o(W}`SƳ\>z6Uθ4bY# r:q3[iq:юޭ %7.{Meī_٠; ݴ#@2Yė%$rAPB77sN2"4.[E湟Z2 ucPKpo`]nFH uY#MᲲjGeМKqvvfW쀈. əA9zvm͌{1-s'OJ5\мLEsT>u@NZ46!6XˉH{`R wN`r@EFN$uo#f2BA;il78?\>Խz4NERE#o#ޖo^VZ/\zW/]+ Z~:$$@_}>'^ڙ+6BHmP>pp?ĵua}x jqcw}W6o8?Nj8Uav8GN>vbڿow4 y.7WrϿf'SJv椖CM?cP#}eϒU!Q3Eԣ`b!C(v&nSoGolCкf9܆:2*VaE3Sf oH3VP S`S+]F-{|YnTLcw^d*"9Gj` ]Z:ĨmS+N[*>#ѥ9N\L@ S#q -6?jeۅ(D=CcZ4E;aA_,['9ð&4vR3UѾB*Cj>ԀF(茽\ޝOϮ]zCOz hx`4ډyGQ^xG6elet#e\Y;~TT`׾ħn>OhC! b4#b2'?p˶.9ӥn ( 9y/졧1|uӟ|xqHk+#OD{ɣ3b?/x2 z%+~|ťGOKKN;6FTd{݋o9?^2#02 V'/^17׏8[c+f" Սɔxfn_ F4Q(U8[^? ´!$ ۝Ȳa^( .)[IRh A0Xۆv˅U x.UZDz ƀ|5sCf:S4NGQ!i 0ZJ"p# tZ$䝙Fk*(]@fI(`1cZe-Qx,h3f%CފE,0+XA,/ D)hwӼ-2H!21rE;K @݄00f3(}JAهГR]pw`-;kyb?87_ch_oVZUD 2V2en4Vhͭ>)cg\BgD,q:rzOѨ0\R yLT5#[(eσ]B,(93d(}8a\aPqPe~sTNjc^d_EqI"CfJYHaaysi4A25yԉçeu?&odA76 m4S~3ӝ)LYiͭweǂ[rCMC>!P3L8*Ag`uVR.hk{'.&Us-t`{PW̰D3ZB)WY{ocؐ;B5brRv4SBN"D9२.eG.yso뇪qxCc)uW7t,u%pJBQi޾rjF->2.!oUz!S}VVp9[>r9%ʜsȶ!A]{tn k}ԧX4ϗ{?9@߻1Mf*x ,4idzY4aaؚ< 3~l؄j5&r9%uhٸ}֞,pO^^ܺ5v5ӊG333ovӌ )C!KY{[g)`wrn h)eIp͈XXOWCzF힧5F2 [/g{um}λdp5O>hԍ~܋};yn;ݺp8+]~k:0n]s* ʙG׶$mt㥛~'XF,MZ=k/_;E8ޓo^>sZO2sATХOS)Q~TgNg?2z=|anm-v+AkFZ}TVȬnYҗ.\tfPn&3=ԣE|s|嫟|X`d$?ڻ3˯] V6(8Ӻ,?m~?3Ӎr)x䷿.mnl $l P$usfƢvoCcp:8{vlW( vv [d:FAT20ӝ0I`u hi` +Qd@+d&@Y(PLh's0cA[v鵸JuN@SҤLWy$([[y9:D>-b4.@NT!(8Vh [A1$O@T3@$X&:/41C᭘Ay;^(8Ä/x`'yUƞ+2(g * d#DqNBKReP6%e_=(ʃWӚh2LbUϙ Fmt΀ E $l֕803.X:W sA[?7|*k+|}) 8Z!I |]jLzGNeՌ#m̮;>G}@n2xԔ1 +JAnuMdL1Vwhf LaL1V @JÑ1 BcX$PnS "h*tAeW//n߸_\ӆ ; tJ3ƭ\0[Z'QQiFʎ!2Nb;ao?zPvX΁GgaWtYxnBH+kCMYW^tMo?:FeWLs%pu*t0۰PU6J8ﱒC^^4 xظ95Co\^G@ˮ66*ڔ~T,M5u?|5ʕ-fW$[<\Ih/tkH[n߁b-9'_cC_Pd]D!a2T'd,5n jv!16?;~#bMwĻ}&9X{@Ž)4<0Lx2KwPӃLXRn_av;xҿcHΛO3О@ϓ7ͬ|ܙ@cO~eOSl0ƛ3!gƨ,4Td,~2>glŀnrzd:Kк|cڭWZ W|`ua8◧֚~14t3K6Q WGK󎒝Nwu#|/à,xd}U˧ߔޱW] Q|}+οó/\=Hd@'}[W6μq)Tx{?={k?x+}htj4|rO3Ѹ?7iFP˓"fiXGt?|ɦV9lZNe^> _\Qͤ(OP¤bR;\{2H7+]P hgJlVMRBړtV o 94KMn!&uL5LK4 Y7 cN b M\2b2Y(aSAR0trX[kI>N,e&[õͭP,bMR(0qX 2w 6F&@Ȉ\ y %9!LeW(PvJ#Hf 6AA!(HH&  Nl."-xv?F9( 9H`ZqPD($)P\r@d 'cyw-(`paIq*BDA q 1"ȧ((-A3dCΘqE Y>Է#J?emoyOΙ,;پ3daCd;CBnc\hfakCr 0"2)o:riC\S|񉓊D{淟ZDnܸ2J.F:nkńLݷ@̭u#d2uj8>u=aȍbAuomz̓1М*0.*pik v ;{9QyOr5faԚ5v0]-#t, hN[{S-x+@x*1oB|˽>FRm@p=!V.74yA\6L 9[Ap(?qh c #w9Ʒp_0Ҿ-1C';c|GJ+[{}ֈhYWg,Xl|@GX XV fCv  yz2ؽ5g5ޔ?|+z[4__Ӧ@vs9jg0vNqMK>yGj@$J4TsuЮf{Lhy` $5OxRjO4,<:'{ X W~Kquf˴z1+]ۣ>}l.!ZBQF2q͊#>%~jyO|KK^~tcwޥ?h?zhqK֖VX\hGos }Fti$7Gg7߿GxއsF׊W=ɍf?M}L.ccY.o|eB ^ dn~z{6<鳛-j/) &Y\;w5,XHZ|C|"V"Wg|C NGLnm8ks1f5{cs0lui1FI+lϾ/23kkoC\ nEI/ [B "tp]>KGW>21ZW teM)6lvZ@t:a DZ)͋a6SLNp$GL$&+&)J%=xK/'}݄Q ݭq*ٞlO_8qbKOރĽvB M htzʂ~/YSOdy$L6, jqI Cbā$Wa 8b*02NTk $'5 &ؤoղ, "I,3* 4xYm5¤y6% iU1IӽNk&dA M8i4 h#0$4E0M\QŘ霱vB{4DIa-J-GʼnDRq<'IAZq8 Ph" q0 d e `\ ( [XuđQ]t6ư* $e]KŽWbDfYQQզHcn. T2;;j)K?,e:2U+E *T4 it(*+`= 1yC bc`cT~i2Lm_]٠?8wIQDB.,.rJmS4i uY! z˾z&BrU'hA}ܩN{ 8f !皐A"Ouu1?M<6hy{"8A@{rM\s^XB%;veyM0`0Vu8d˃v;F0B@Sn!i/|_ `89L==jQ_ rGiBhd쮸!S@﬒$<ۛ#WkFFi\jբDfa0sVv|mJXvgDf'F~)ge[b߁G)QIpś[rj>f a}ӪX4gl4ũ Mݧ{3}{k_h}oӛvl}|?µ l@ڻHW\O vTސC*$Ϯ;Ÿl_ӭM[Ճqz `7_Ѕ WgV|_n%Ͻ޷wq~wᵗ_O?pzvl#zҥ˗//ۻkǏqŋN{;QlE&RowxC4^[_ryrA Mo_{/vir{IlU }kete|?pd}4[[\{Fk''ή\1ܞ-ZA|mmm83g4z{GK^8w{ g|v`T'gS2nw}i8_{xVnChOKC &`ĦQ,$~|;a+k٥uDDm9Xy5(]zʏv ;xb7žoiϵL!%fyWnIjx}{tRF}}]'ݻEđ( hxN/:[/\غ2mq\ Zdrl>|qf`Tt*lj!JEE< S S2d(42DI;"2LOE1ۨIFA\al3)0Ӎ6b8JP>Ak%$gJ3t9Os EB3#SZ.(4# s"`(Є278rFVgG$1'eimYAmm.`W0K92*dk*CNdu=+\~526|9a/-V1`4]HIJjm@S{:ibM "NxBB# >pWZuhr/Ϣj!e*Jjt">$UWt|6<"e4&sVw,3`4$iۚų/ja <8ɡTޓ͙z fLy _Gۤ*PCvY|iyV珂T;%7=h0)䆁F3X߹x[$OdM{.㏢:jb:&?A] t:%0*oȴ9xwH3 ezN0c-T w󾸿o᷿'EW~3C.:G8vıG,ZϞYیG}3|Ѓǎ;z7g>ubQjkLd;ˊgDIp,v@):;(4/o:?fgzE.<7ܞ6}ݭ^b.4}Z.mi˂g>5;m]<|jZ($׷.ۏ'x05nbp~fqq t4?0L5Bߚ|?oGI*g_ā25;[ɭ +㭭fȃTO$N]sT{p'ޚLR(7^.Ho/m'[d0|^[ ȴ(eL~'?k[0K{"\kl3j ; ,HB|(KuRNڝ(&@e 6w|fqNk/(Zx7N8H,͊t}hƨQ~aiZ%\m1G5Nl4 VYaq"33L:yX`Y3`Q5LK?/PKW" ]!KsSFh H8qT-#c(d+$@1h`ǭDIWndĠ@(R5;ǁ07f"po'a1"v*@r"a;1͹P b40@LQm)dQ8 ˠr @;̊”5m#.`,JJu4F@z uu;h:e[DFQw= %򖔆Cw}]] ѕnҺRr/4KY!XKZ3U6}Yc*o ogTu`7V4d} [TpuDud*Sc೻jZ\J5 aiE]ԀFӨD0W:ЬDʓ(SU|;T٭ϏCP,hSKhkJh1W|MI ~D@Eq඲0 HKEÓP7XӘ2oO&JW/ ogdVmw¯ʍiA 6yB)pWFv,mu #r䛷|1Tb5c>:htnKǤ3@qT}]:10'73<ʫq 4!Rx˜ NMۚFqaVޖx ziw F;C~:hY K#lbQB\I%h5Fbub Yڕ*NMzΟo{/ŗ{ِ>qų~?:x`w:ξ#x\܋/B۷Sw?{W_|`|ȁwޛW{8E!5 iEn*,8ޟY{|{2(^Ʌ;e/&x0S{RoB޻o+ ,-@LuXV&{&?@՞n($7k?sv}b2=8iō۹boE ?[}C;_9Nzm.pǺ{Йme7=TzK'Jsq']L-Xo S&bYwׯU\Hu޼9d#<7T{~[{[&,΃/ukW2ZPgvƭhꉤĴeKח.(>>gN,&4L'i1qn"l+F(?v#5?ӏ{@!nu)l+x7o_yL$A2n܊7LOtof12^Dvr d`zd4fGy+:|}} cRȳ~w;k|~. X9=wkX:q33gk#3R oXC3iL>}3Otwm{g/q!n7C(CxSfѥ}s6W >"_^]}PN*] nLT܄(2St8 $luNę&8?%wɅ?y4Y( &`y11Sp3ژ@}R_n۹0dJ1:6{o^goJ{HP6赣=]z wیOLltsyfn@a:NxcbKƭoء(pfrgͷtckձrjOrg ylԄdy;w?p~ 5%wgwWQ>ϡ&i]M=Y\zI{kA5q6L5݌oӘ.aIENDB`themes/twentytwentyfour/functions.php000064400000012647147176754540014311 0ustar00 'arrow-icon-details', 'label' => __( 'Arrow icon', 'twentytwentyfour' ), /* * Styles for the custom Arrow icon style of the Details block */ 'inline_style' => ' .is-style-arrow-icon-details { padding-top: var(--wp--preset--spacing--10); padding-bottom: var(--wp--preset--spacing--10); } .is-style-arrow-icon-details summary { list-style-type: "\2193\00a0\00a0\00a0"; } .is-style-arrow-icon-details[open]>summary { list-style-type: "\2192\00a0\00a0\00a0"; }', ) ); register_block_style( 'core/post-terms', array( 'name' => 'pill', 'label' => __( 'Pill', 'twentytwentyfour' ), /* * Styles variation for post terms * https://github.com/WordPress/gutenberg/issues/24956 */ 'inline_style' => ' .is-style-pill a, .is-style-pill span:not([class], [data-rich-text-placeholder]) { display: inline-block; background-color: var(--wp--preset--color--base-2); padding: 0.375rem 0.875rem; border-radius: var(--wp--preset--spacing--20); } .is-style-pill a:hover { background-color: var(--wp--preset--color--contrast-3); }', ) ); register_block_style( 'core/list', array( 'name' => 'checkmark-list', 'label' => __( 'Checkmark', 'twentytwentyfour' ), /* * Styles for the custom checkmark list block style * https://github.com/WordPress/gutenberg/issues/51480 */ 'inline_style' => ' ul.is-style-checkmark-list { list-style-type: "\2713"; } ul.is-style-checkmark-list li { padding-inline-start: 1ch; }', ) ); register_block_style( 'core/navigation-link', array( 'name' => 'arrow-link', 'label' => __( 'With arrow', 'twentytwentyfour' ), /* * Styles for the custom arrow nav link block style */ 'inline_style' => ' .is-style-arrow-link .wp-block-navigation-item__label:after { content: "\2197"; padding-inline-start: 0.25rem; vertical-align: middle; text-decoration: none; display: inline-block; }', ) ); register_block_style( 'core/heading', array( 'name' => 'asterisk', 'label' => __( 'With asterisk', 'twentytwentyfour' ), 'inline_style' => " .is-style-asterisk:before { content: ''; width: 1.5rem; height: 3rem; background: var(--wp--preset--color--contrast-2, currentColor); clip-path: path('M11.93.684v8.039l5.633-5.633 1.216 1.23-5.66 5.66h8.04v1.737H13.2l5.701 5.701-1.23 1.23-5.742-5.742V21h-1.737v-8.094l-5.77 5.77-1.23-1.217 5.743-5.742H.842V9.98h8.162l-5.701-5.7 1.23-1.231 5.66 5.66V.684h1.737Z'); display: block; } /* Hide the asterisk if the heading has no content, to avoid using empty headings to display the asterisk only, which is an A11Y issue */ .is-style-asterisk:empty:before { content: none; } .is-style-asterisk:-moz-only-whitespace:before { content: none; } .is-style-asterisk.has-text-align-center:before { margin: 0 auto; } .is-style-asterisk.has-text-align-right:before { margin-left: auto; } .rtl .is-style-asterisk.has-text-align-left:before { margin-right: auto; }", ) ); } endif; add_action( 'init', 'twentytwentyfour_block_styles' ); /** * Enqueue block stylesheets. */ if ( ! function_exists( 'twentytwentyfour_block_stylesheets' ) ) : /** * Enqueue custom block stylesheets * * @since Twenty Twenty-Four 1.0 * @return void */ function twentytwentyfour_block_stylesheets() { /** * The wp_enqueue_block_style() function allows us to enqueue a stylesheet * for a specific block. These will only get loaded when the block is rendered * (both in the editor and on the front end), improving performance * and reducing the amount of data requested by visitors. * * See https://make.wordpress.org/core/2021/12/15/using-multiple-stylesheets-per-block/ for more info. */ wp_enqueue_block_style( 'core/button', array( 'handle' => 'twentytwentyfour-button-style-outline', 'src' => get_parent_theme_file_uri( 'assets/css/button-outline.css' ), 'ver' => wp_get_theme( get_template() )->get( 'Version' ), 'path' => get_parent_theme_file_path( 'assets/css/button-outline.css' ), ) ); } endif; add_action( 'init', 'twentytwentyfour_block_stylesheets' ); /** * Register pattern categories. */ if ( ! function_exists( 'twentytwentyfour_pattern_categories' ) ) : /** * Register pattern categories * * @since Twenty Twenty-Four 1.0 * @return void */ function twentytwentyfour_pattern_categories() { register_block_pattern_category( 'twentytwentyfour_page', array( 'label' => _x( 'Pages', 'Block pattern category', 'twentytwentyfour' ), 'description' => __( 'A collection of full page layouts.', 'twentytwentyfour' ), ) ); } endif; add_action( 'init', 'twentytwentyfour_pattern_categories' ); themes/twentytwentyfour/readme.txt000064400000007214147176754540013560 0ustar00=== Twenty Twenty-Four === Contributors: wordpressdotorg Requires at least: 6.4 Tested up to: 6.6 Requires PHP: 7.0 Stable tag: 1.2 License: GPLv2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html == Description == Twenty Twenty-Four is designed to be flexible, versatile and applicable to any website. Its collection of templates and patterns tailor to different needs, such as presenting a business, blogging and writing or showcasing work. A multitude of possibilities open up with just a few adjustments to color and typography. Twenty Twenty-Four comes with style variations and full page designs to help speed up the site building process, is fully compatible with the site editor, and takes advantage of new design tools introduced in WordPress 6.4. == Changelog == = 1.2 = * Released: July 16, 2024 https://wordpress.org/documentation/article/twenty-twenty-four-changelog/#Version_1.2 = 1.1 = * Released: April 2, 2024 https://wordpress.org/documentation/article/twenty-twenty-four-changelog/#Version_1.1 = 1.0 = * Released: November 7, 2023 https://wordpress.org/documentation/article/twenty-twenty-four-changelog/#Version_1.0 == Copyright == Twenty Twenty-Four WordPress Theme, (C) 2023 WordPress.org Twenty Twenty-Four is distributed under the terms of the GNU GPL. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. This theme bundles the following third-party resources: === Fonts === Cardo Font Copyright (c) 2002-2011, David J. Perry (hospes02@scholarsfonts.net) License: SIL Open Font License, 1.1, https://opensource.org/licenses/OFL-1.1 Source: http://scholarsfonts.net Instrument Sans Font Copyright 2022 The Instrument Sans Project Authors. License: SIL Open Font License, 1.1, https://opensource.org/licenses/OFL-1.1 Source: https://github.com/Instrument/instrument-sans Inter Font Copyright 2020 The Inter Project Authors. License: SIL Open Font License, 1.1, https://opensource.org/licenses/OFL-1.1 Source: https://github.com/rsms/inter Jost Font Copyright 2020 The Jost Project Authors. License: SIL Open Font License, 1.1, https://opensource.org/licenses/OFL-1.1 Source: https://github.com/indestructible-type/Jost === Images === License: CC0 https://creativecommons.org/publicdomain/zero/1.0/ museum.webp - https://www.rawpixel.com/image/3297419/free-photo-image-interior-hallway-architecture tourist-and-building.webp - https://www.rawpixel.com/image/5928004/photo-image-public-domain-hand-person building-exterior.webp - https://www.rawpixel.com/image/430335/free-photo-image-architecture-building-roof windows.webp - https://www.rawpixel.com/image/3286615/free-photo-image-texture-architecture-building abstract-geometric-art.webp - https://www.rawpixel.com/image/3283970/free-photo-image-pattern-artwork-abstract angular-roof.webp - https://www.rawpixel.com/image/3289063/free-photo-image-architectural-detail-architecture art-gallery.webp - https://www.rawpixel.com/image/3286187/free-photo-image-person-stairs-architecture green-staircase.webp - https://www.rawpixel.com/image/430558/free-photo-image-abstract-architecture-art-public-domain hotel-facade.webp - https://www.rawpixel.com/image/3286725/free-photo-image-black-and-white-background-photos License: UNICODE LICENSE V3 https://www.unicode.org/license.txt icon-message.webp themes/twentytwentyfour/templates/page.html000064400000002070147176754540015355 0ustar00

themes/twentytwentyfour/templates/index.html000064400000001143147176754540015550 0ustar00

Posts

themes/twentytwentyfour/templates/single-with-sidebar.html000064400000005436147176754540020313 0ustar00
themes/twentytwentyfour/templates/page-wide.html000064400000002231147176754540016302 0ustar00
themes/twentytwentyfour/templates/page-with-sidebar.html000064400000003721147176754540017741 0ustar00
themes/twentytwentyfour/templates/archive.html000064400000001026147176754540016062 0ustar00
themes/twentytwentyfour/templates/page-no-title.html000064400000000641147176754540017110 0ustar00
themes/twentytwentyfour/templates/search.html000064400000001454147176754540015713 0ustar00
themes/twentytwentyfour/templates/single.html000064400000004644147176754540015733 0ustar00

themes/twentytwentyfour/templates/404.html000064400000001077147176754540014756 0ustar00
themes/twentytwentyfour/templates/home.html000064400000000660147176754540015374 0ustar00
themes/twentytwentyfour/style.css000064400000002261147176754540013431 0ustar00/* Theme Name: Twenty Twenty-Four Theme URI: https://wordpress.org/themes/twentytwentyfour/ Author: the WordPress team Author URI: https://wordpress.org Description: Twenty Twenty-Four is designed to be flexible, versatile and applicable to any website. Its collection of templates and patterns tailor to different needs, such as presenting a business, blogging and writing or showcasing work. A multitude of possibilities open up with just a few adjustments to color and typography. Twenty Twenty-Four comes with style variations and full page designs to help speed up the site building process, is fully compatible with the site editor, and takes advantage of new design tools introduced in WordPress 6.4. Requires at least: 6.4 Tested up to: 6.6 Requires PHP: 7.0 Version: 1.2 License: GNU General Public License v2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html Text Domain: twentytwentyfour Tags: one-column, custom-colors, custom-menu, custom-logo, editor-style, featured-images, full-site-editing, block-patterns, rtl-language-support, sticky-post, threaded-comments, translation-ready, wide-blocks, block-styles, style-variations, accessibility-ready, blog, portfolio, news */ index.php000064400000000034147176754540006405 0ustar00protect your blog from spam. Akismet Anti-spam keeps your site protected even while you sleep. To get started: activate the Akismet plugin and then go to your Akismet Settings page to set up your API key. Version: 5.3.3 Requires at least: 5.8 Requires PHP: 5.6.20 Author: Automattic - Anti-spam Team Author URI: https://automattic.com/wordpress-plugins/ License: GPLv2 or later Text Domain: akismet */ /* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Copyright 2005-2023 Automattic, Inc. */ // Make sure we don't expose any info if called directly if ( !function_exists( 'add_action' ) ) { echo 'Hi there! I\'m just a plugin, not much I can do when called directly.'; exit; } define( 'AKISMET_VERSION', '5.3.3' ); define( 'AKISMET__MINIMUM_WP_VERSION', '5.8' ); define( 'AKISMET__PLUGIN_DIR', plugin_dir_path( __FILE__ ) ); define( 'AKISMET_DELETE_LIMIT', 10000 ); register_activation_hook( __FILE__, array( 'Akismet', 'plugin_activation' ) ); register_deactivation_hook( __FILE__, array( 'Akismet', 'plugin_deactivation' ) ); require_once AKISMET__PLUGIN_DIR . 'class.akismet.php'; require_once AKISMET__PLUGIN_DIR . 'class.akismet-widget.php'; require_once AKISMET__PLUGIN_DIR . 'class.akismet-rest-api.php'; add_action( 'init', array( 'Akismet', 'init' ) ); add_action( 'rest_api_init', array( 'Akismet_REST_API', 'init' ) ); if ( is_admin() || ( defined( 'WP_CLI' ) && WP_CLI ) ) { require_once AKISMET__PLUGIN_DIR . 'class.akismet-admin.php'; add_action( 'init', array( 'Akismet_Admin', 'init' ) ); } //add wrapper class around deprecated akismet functions that are referenced elsewhere require_once AKISMET__PLUGIN_DIR . 'wrapper.php'; if ( defined( 'WP_CLI' ) && WP_CLI ) { require_once AKISMET__PLUGIN_DIR . 'class.akismet-cli.php'; } plugins/akismet/class.akismet-admin.php000064400000157541147176754540014263 0ustar00 array( 'href' => true, 'title' => true, ), 'b' => array(), 'code' => array(), 'del' => array( 'datetime' => true, ), 'em' => array(), 'i' => array(), 'q' => array( 'cite' => true, ), 'strike' => array(), 'strong' => array(), ); public static function init() { if ( ! self::$initiated ) { self::init_hooks(); } if ( isset( $_POST['action'] ) && $_POST['action'] == 'enter-key' ) { self::enter_api_key(); } } public static function init_hooks() { // The standalone stats page was removed in 3.0 for an all-in-one config and stats page. // Redirect any links that might have been bookmarked or in browser history. if ( isset( $_GET['page'] ) && 'akismet-stats-display' == $_GET['page'] ) { wp_safe_redirect( esc_url_raw( self::get_page_url( 'stats' ) ), 301 ); die; } self::$initiated = true; add_action( 'admin_init', array( 'Akismet_Admin', 'admin_init' ) ); add_action( 'admin_menu', array( 'Akismet_Admin', 'admin_menu' ), 5 ); # Priority 5, so it's called before Jetpack's admin_menu. add_action( 'admin_notices', array( 'Akismet_Admin', 'display_notice' ) ); add_action( 'admin_enqueue_scripts', array( 'Akismet_Admin', 'load_resources' ) ); add_action( 'activity_box_end', array( 'Akismet_Admin', 'dashboard_stats' ) ); add_action( 'rightnow_end', array( 'Akismet_Admin', 'rightnow_stats' ) ); add_action( 'manage_comments_nav', array( 'Akismet_Admin', 'check_for_spam_button' ) ); add_action( 'admin_action_akismet_recheck_queue', array( 'Akismet_Admin', 'recheck_queue' ) ); add_action( 'wp_ajax_akismet_recheck_queue', array( 'Akismet_Admin', 'recheck_queue' ) ); add_action( 'wp_ajax_comment_author_deurl', array( 'Akismet_Admin', 'remove_comment_author_url' ) ); add_action( 'wp_ajax_comment_author_reurl', array( 'Akismet_Admin', 'add_comment_author_url' ) ); add_action( 'jetpack_auto_activate_akismet', array( 'Akismet_Admin', 'connect_jetpack_user' ) ); add_filter( 'plugin_action_links', array( 'Akismet_Admin', 'plugin_action_links' ), 10, 2 ); add_filter( 'comment_row_actions', array( 'Akismet_Admin', 'comment_row_action' ), 10, 2 ); add_filter( 'plugin_action_links_'.plugin_basename( plugin_dir_path( __FILE__ ) . 'akismet.php'), array( 'Akismet_Admin', 'admin_plugin_settings_link' ) ); add_filter( 'wxr_export_skip_commentmeta', array( 'Akismet_Admin', 'exclude_commentmeta_from_export' ), 10, 3 ); add_filter( 'all_plugins', array( 'Akismet_Admin', 'modify_plugin_description' ) ); // priority=1 because we need ours to run before core's comment anonymizer runs, and that's registered at priority=10 add_filter( 'wp_privacy_personal_data_erasers', array( 'Akismet_Admin', 'register_personal_data_eraser' ), 1 ); } public static function admin_init() { if ( get_option( 'Activated_Akismet' ) ) { delete_option( 'Activated_Akismet' ); if ( ! headers_sent() ) { $admin_url = self::get_page_url( 'init' ); wp_redirect( $admin_url ); } } load_plugin_textdomain( 'akismet' ); add_meta_box( 'akismet-status', __('Comment History', 'akismet'), array( 'Akismet_Admin', 'comment_status_meta_box' ), 'comment', 'normal' ); if ( function_exists( 'wp_add_privacy_policy_content' ) ) { wp_add_privacy_policy_content( __( 'Akismet', 'akismet' ), __( 'We collect information about visitors who comment on Sites that use our Akismet Anti-spam service. The information we collect depends on how the User sets up Akismet for the Site, but typically includes the commenter\'s IP address, user agent, referrer, and Site URL (along with other information directly provided by the commenter such as their name, username, email address, and the comment itself).', 'akismet' ) ); } } public static function admin_menu() { if ( class_exists( 'Jetpack' ) ) { add_action( 'jetpack_admin_menu', array( 'Akismet_Admin', 'load_menu' ) ); } else { self::load_menu(); } } public static function admin_head() { if ( !current_user_can( 'manage_options' ) ) return; } public static function admin_plugin_settings_link( $links ) { $settings_link = '
'.__('Settings', 'akismet').''; array_unshift( $links, $settings_link ); return $links; } public static function load_menu() { if ( class_exists( 'Jetpack' ) ) { $hook = add_submenu_page( 'jetpack', __( 'Akismet Anti-spam', 'akismet' ), __( 'Akismet Anti-spam', 'akismet' ), 'manage_options', 'akismet-key-config', array( 'Akismet_Admin', 'display_page' ) ); } else { $hook = add_options_page( __( 'Akismet Anti-spam', 'akismet' ), __( 'Akismet Anti-spam', 'akismet' ), 'manage_options', 'akismet-key-config', array( 'Akismet_Admin', 'display_page' ) ); } if ( $hook ) { add_action( "load-$hook", array( 'Akismet_Admin', 'admin_help' ) ); } } public static function load_resources() { global $hook_suffix; if ( in_array( $hook_suffix, apply_filters( 'akismet_admin_page_hook_suffixes', array( 'index.php', # dashboard 'edit-comments.php', 'comment.php', 'post.php', 'settings_page_akismet-key-config', 'jetpack_page_akismet-key-config', 'plugins.php', ) ) ) ) { $akismet_css_path = is_rtl() ? '_inc/rtl/akismet-rtl.css' : '_inc/akismet.css'; wp_register_style( 'akismet', plugin_dir_url( __FILE__ ) . $akismet_css_path, array(), self::get_asset_file_version( $akismet_css_path ) ); wp_enqueue_style( 'akismet' ); wp_register_style( 'akismet-font-inter', plugin_dir_url( __FILE__ ) . '_inc/fonts/inter.css', array(), self::get_asset_file_version( '_inc/fonts/inter.css' ) ); wp_enqueue_style( 'akismet-font-inter' ); $akismet_admin_css_path = is_rtl() ? '_inc/rtl/akismet-admin-rtl.css' : '_inc/akismet-admin.css'; wp_register_style( 'akismet-admin', plugin_dir_url( __FILE__ ) . $akismet_admin_css_path, array(), self::get_asset_file_version( $akismet_admin_css_path ) ); wp_enqueue_style( 'akismet-admin' ); wp_register_script( 'akismet.js', plugin_dir_url( __FILE__ ) . '_inc/akismet.js', array( 'jquery' ), self::get_asset_file_version( '_inc/akismet.js' ) ); wp_enqueue_script( 'akismet.js' ); wp_register_script( 'akismet-admin.js', plugin_dir_url( __FILE__ ) . '_inc/akismet-admin.js', array(), self::get_asset_file_version( '/_inc/akismet-admin.js' ) ); wp_enqueue_script( 'akismet-admin.js' ); $inline_js = array( 'comment_author_url_nonce' => wp_create_nonce( 'comment_author_url_nonce' ), 'strings' => array( 'Remove this URL' => __( 'Remove this URL' , 'akismet'), 'Removing...' => __( 'Removing...' , 'akismet'), 'URL removed' => __( 'URL removed' , 'akismet'), '(undo)' => __( '(undo)' , 'akismet'), 'Re-adding...' => __( 'Re-adding...' , 'akismet'), ) ); if ( isset( $_GET['akismet_recheck'] ) && wp_verify_nonce( $_GET['akismet_recheck'], 'akismet_recheck' ) ) { $inline_js['start_recheck'] = true; } if ( apply_filters( 'akismet_enable_mshots', true ) ) { $inline_js['enable_mshots'] = true; } wp_localize_script( 'akismet.js', 'WPAkismet', $inline_js ); } } /** * Add help to the Akismet page * * @return false if not the Akismet page */ public static function admin_help() { $current_screen = get_current_screen(); // Screen Content if ( current_user_can( 'manage_options' ) ) { if ( !Akismet::get_api_key() || ( isset( $_GET['view'] ) && $_GET['view'] == 'start' ) ) { //setup page $current_screen->add_help_tab( array( 'id' => 'overview', 'title' => __( 'Overview' , 'akismet'), 'content' => '

' . esc_html__( 'Akismet Setup' , 'akismet') . '

' . '

' . esc_html__( 'Akismet filters out spam, so you can focus on more important things.' , 'akismet') . '

' . '

' . esc_html__( 'On this page, you are able to set up the Akismet plugin.' , 'akismet') . '

', ) ); $current_screen->add_help_tab( array( 'id' => 'setup-signup', 'title' => __( 'New to Akismet' , 'akismet'), 'content' => '

' . esc_html__( 'Akismet Setup' , 'akismet') . '

' . '

' . esc_html__( 'You need to enter an API key to activate the Akismet service on your site.' , 'akismet') . '

' . '

' . sprintf( __( 'Sign up for an account on %s to get an API Key.' , 'akismet'), 'Akismet.com' ) . '

', ) ); $current_screen->add_help_tab( array( 'id' => 'setup-manual', 'title' => __( 'Enter an API Key' , 'akismet'), 'content' => '

' . esc_html__( 'Akismet Setup' , 'akismet') . '

' . '

' . esc_html__( 'If you already have an API key' , 'akismet') . '

' . '
    ' . '
  1. ' . esc_html__( 'Copy and paste the API key into the text field.' , 'akismet') . '
  2. ' . '
  3. ' . esc_html__( 'Click the Use this Key button.' , 'akismet') . '
  4. ' . '
', ) ); } elseif ( isset( $_GET['view'] ) && $_GET['view'] == 'stats' ) { //stats page $current_screen->add_help_tab( array( 'id' => 'overview', 'title' => __( 'Overview' , 'akismet'), 'content' => '

' . esc_html__( 'Akismet Stats' , 'akismet') . '

' . '

' . esc_html__( 'Akismet filters out spam, so you can focus on more important things.' , 'akismet') . '

' . '

' . esc_html__( 'On this page, you are able to view stats on spam filtered on your site.' , 'akismet') . '

', ) ); } else { //configuration page $current_screen->add_help_tab( array( 'id' => 'overview', 'title' => __( 'Overview' , 'akismet'), 'content' => '

' . esc_html__( 'Akismet Configuration' , 'akismet') . '

' . '

' . esc_html__( 'Akismet filters out spam, so you can focus on more important things.' , 'akismet') . '

' . '

' . esc_html__( 'On this page, you are able to update your Akismet settings and view spam stats.' , 'akismet') . '

', ) ); $current_screen->add_help_tab( array( 'id' => 'settings', 'title' => __( 'Settings' , 'akismet'), 'content' => '

' . esc_html__( 'Akismet Configuration' , 'akismet') . '

' . ( Akismet::predefined_api_key() ? '' : '

' . esc_html__( 'API Key' , 'akismet') . ' - ' . esc_html__( 'Enter/remove an API key.' , 'akismet') . '

' ) . '

' . esc_html__( 'Comments' , 'akismet') . ' - ' . esc_html__( 'Show the number of approved comments beside each comment author in the comments list page.' , 'akismet') . '

' . '

' . esc_html__( 'Strictness' , 'akismet') . ' - ' . esc_html__( 'Choose to either discard the worst spam automatically or to always put all spam in spam folder.' , 'akismet') . '

', ) ); if ( ! Akismet::predefined_api_key() ) { $current_screen->add_help_tab( array( 'id' => 'account', 'title' => __( 'Account' , 'akismet'), 'content' => '

' . esc_html__( 'Akismet Configuration' , 'akismet') . '

' . '

' . esc_html__( 'Subscription Type' , 'akismet') . ' - ' . esc_html__( 'The Akismet subscription plan' , 'akismet') . '

' . '

' . esc_html__( 'Status' , 'akismet') . ' - ' . esc_html__( 'The subscription status - active, cancelled or suspended' , 'akismet') . '

', ) ); } } } // Help Sidebar $current_screen->set_help_sidebar( '

' . esc_html__( 'For more information:' , 'akismet') . '

' . '

' . esc_html__( 'Akismet FAQ' , 'akismet') . '

' . '

' . esc_html__( 'Akismet Support' , 'akismet') . '

' ); } public static function enter_api_key() { if ( ! current_user_can( 'manage_options' ) ) { die( __( 'Cheatin’ uh?', 'akismet' ) ); } if ( !wp_verify_nonce( $_POST['_wpnonce'], self::NONCE ) ) return false; foreach( array( 'akismet_strictness', 'akismet_show_user_comments_approved' ) as $option ) { update_option( $option, isset( $_POST[$option] ) && (int) $_POST[$option] == 1 ? '1' : '0' ); } if ( ! empty( $_POST['akismet_comment_form_privacy_notice'] ) ) { self::set_form_privacy_notice_option( $_POST['akismet_comment_form_privacy_notice'] ); } else { self::set_form_privacy_notice_option( 'hide' ); } if ( Akismet::predefined_api_key() ) { return false; //shouldn't have option to save key if already defined } $new_key = preg_replace( '/[^a-f0-9]/i', '', $_POST['key'] ); $old_key = Akismet::get_api_key(); if ( empty( $new_key ) ) { if ( !empty( $old_key ) ) { delete_option( 'wordpress_api_key' ); self::$notices[] = 'new-key-empty'; } } elseif ( $new_key != $old_key ) { self::save_key( $new_key ); } return true; } public static function save_key( $api_key ) { $key_status = Akismet::verify_key( $api_key ); if ( $key_status == 'valid' ) { $akismet_user = self::get_akismet_user( $api_key ); if ( $akismet_user ) { if ( in_array( $akismet_user->status, array( 'active', 'active-dunning', 'no-sub' ) ) ) update_option( 'wordpress_api_key', $api_key ); if ( $akismet_user->status == 'active' ) self::$notices['status'] = 'new-key-valid'; elseif ( $akismet_user->status == 'notice' ) self::$notices['status'] = $akismet_user; else self::$notices['status'] = $akismet_user->status; } else self::$notices['status'] = 'new-key-invalid'; } elseif ( in_array( $key_status, array( 'invalid', 'failed' ) ) ) self::$notices['status'] = 'new-key-'.$key_status; } public static function dashboard_stats() { if ( did_action( 'rightnow_end' ) ) { return; // We already displayed this info in the "Right Now" section } if ( !$count = get_option('akismet_spam_count') ) return; global $submenu; echo '

' . esc_html( _x( 'Spam', 'comments' , 'akismet') ) . '

'; echo '

'.sprintf( _n( 'Akismet has protected your site from %3$s spam comment.', 'Akismet has protected your site from %3$s spam comments.', $count , 'akismet'), 'https://akismet.com/wordpress/', esc_url( add_query_arg( array( 'page' => 'akismet-admin' ), admin_url( isset( $submenu['edit-comments.php'] ) ? 'edit-comments.php' : 'edit.php' ) ) ), number_format_i18n($count) ).'

'; } // WP 2.5+ public static function rightnow_stats() { if ( $count = get_option('akismet_spam_count') ) { $intro = sprintf( _n( 'Akismet has protected your site from %2$s spam comment already. ', 'Akismet has protected your site from %2$s spam comments already. ', $count , 'akismet'), 'https://akismet.com/wordpress/', number_format_i18n( $count ) ); } else { $intro = sprintf( __('Akismet blocks spam from getting to your blog. ', 'akismet'), 'https://akismet.com/wordpress/' ); } $link = add_query_arg( array( 'comment_status' => 'spam' ), admin_url( 'edit-comments.php' ) ); if ( $queue_count = self::get_spam_count() ) { $queue_text = sprintf( _n( 'There’s %1$s comment in your spam queue right now.', 'There are %1$s comments in your spam queue right now.', $queue_count , 'akismet'), number_format_i18n( $queue_count ), esc_url( $link ) ); } else { $queue_text = sprintf( __( "There’s nothing in your spam queue at the moment." , 'akismet'), esc_url( $link ) ); } $text = $intro . '
' . $queue_text; echo "

$text

\n"; } public static function check_for_spam_button( $comment_status ) { // The "Check for Spam" button should only appear when the page might be showing // a comment with comment_approved=0, which means an un-trashed, un-spammed, // not-yet-moderated comment. if ( 'all' != $comment_status && 'moderated' != $comment_status ) { return; } $link = ''; $comments_count = wp_count_comments(); echo ''; echo '

2lӏYI'a-TTV@QьbK#üYP$ gr*j*d\!{>QYek\94p8E)P 5S-pF[V[sf)*.Ac|. Y6R$)d%=E@AB80kI}r:?P>.-l4,]*o`t(hFYЎ<ҩn ,JcCOp3^Wɹv?;|\CZGYh#!_Z]9nS4j_Bf^ X8XK͉EӴ&(Y),w~[ŗHvKY*X85׿2)G&R }"d½;thoWO/6>>u*MAXDm'?= aC N1(I$#E BzNb\'t ]~rFXIxEoo}SeȇbpJ5)䙮r i+ HN{L0M_҅_؜I(zolv\dYł?U} %1 MFV*!rPr,bA@A ?!i 6sTxZcv<a| ϙ`Xg^U5C*4 -";Fe_]9fE9f.*1ϼ8-;0+Zs7eh?J-.}W&)FP+OXa<^[Z߷/}T61mt:13ӭ}kXfӒˈ"_)t3-p(=^ t1i'~%؏M!rHK|#Trx+xQ&R6RSV{dzS|tNIsVx}Daa},$6B*F&R}U(c$T:_~i/Z)'i!A$?ydi(B+8]XӁy.Sش$Nl:nnkoB.|ϳ0qq`掴Dr)6޵3,cO/w. 7#9uimB)cX,E%*ƨ'-47IE cjE;Յ&3/hў`&Qѵ׷k)jKgIšk РE7/m%}uQYN6liF?snvCoj}vgc⚈[.NՔr\qg?|}_0 ] %/!. ^[{r g㣦to"͖%~k9AH: <;Ռ/>H厹 bQuUYN9$Ylkd#e߭7a-IZ6]@Uh<pkŒXqN\[Bli[Kc;!{*^vBEry `| k56pқ*b 86CvGaWw+zpteLZ"حȭCgBi؛cH$hI \M$ ]*p{M8IX,ZkODd(}'.k *=a~~KFt{` -UB֊ϡ3F!֠z) 8u!Wj)\p.~/elҚj* R'ŠB7 ^HRdl;豿Acg0!JطrDoMW4E_.ginuXӪmvѰЮv eUo% :X-#P:%$T04It". gNdW8%5GA ^WYgUef3kΥp\\!a=aq!֡Xriw}u't|KAJ.g8N^(kR_@gpԣcui)l Y/bT+j{Ȗ?QM,--CB #YBP}$AA1h\|52C,l %&Ѵ2y%%=3)xfY;aI5Xs`Ўj@S#p1מѥxZvUAayf;˘ ﷙s S&,qVb{wza)$H\iUk%\hrQq]cxnz&L!>( ~ g\/kj: TwJ1-Yi|C*ӔԶ3$I\.8^Pdt*}4";ꊖ`ٱ| 6|iѫ(e7vע7ͬF`~vob5lviIJb]30tPr>?G?("z?SX-H % C-R \Fr}$m n6 .p2Jixn)l ;U]Wr@?1qAث*, F|| µYU6x}׶"<"8ەfT|c#a-+AJ@ Ec9ôZ lO-hAy9F.rd+)a3i6 0ҋ[n\s`#kZ 2ߠanZ{cڸN^L~zmô LExUۀQ OL&ϡGM0j6q{")Tc\fX2V6]Fs. ~fi>xS"؏!Wyk3m|fShBCTqOՍp[>#O-YEt`{0vhE=vSɼ:W#`"ضdOh'l.5n e2D6̑tb-RJy p 殜ܪy?tRISx_& A(+0!sTv溪PcAK~Ó+;'*>p 27ke=ITS]SUk̸ىDdzmNڟ`,E2$A&dv)@'Sqɩ>#5!f ֜QP+OA1zd% {H{ nWSU#F*]|Ta~Ado8}`gs(P0c on;!Z4I\m*&_ -W>dz暵ZBI ._L[&2*5R 0ҕ_e'v+u/lQ0wS)5ע(dU> ;O&K(̘3)l_A"0qa2GhT`d9CPBϑ(p83]spn+]`TrVPJٮԩjIݍ>v* *CצE1bU@3^ɕn,ZO-, bZ UlNBu#jĄ+16e\l'ϡiADP@S njTf}3}U9bT P"0L7L4!zͯZk Ůf9m6EEAkjf#Q\krliEZ~bFnri4JwCIg+YRv_En"(أ?b(,kq4?35$v*:QސΘ^7.jGCGAe.>L? ɮ=jf#pmNcz)DzԞIŰmǜ*x2?&inzuk!EǂG.)_ːhW)@ %D9ffyԏ闰.3FRBGgJ:l~d"٤V3QvV0Rk%d,;f>66KqvU 1rIDD@N=Q ?ܜm=J$V愡:.C=} Lq)odrr0ō׸Uh1+]R(8,A7R|~P䕕'i7r(jAgVގ$ a')2~{CӴS*J0Bł~' lD2YbrkV cH2Zmf o"lA(ȠDT(n 羠ԡK}֤ ?vZ" ܈y6y~ʖ <7jǤ*T$U4` 6y1&ֵ̇tʕN_r MQ`BQOېkB\CiW4~ԏE0 b<ý&hܙۻ!Q#+Ē]Ѫ >gQ DZdVAĔl+nuq2j`W^ɘܭ[qF|o7f_\ٝƇwI07wzʍ2p.bf6ECъ|Ѭ4e@1 8Q.m.I:Z0ݙLn3k8AMz\" x/_+Wx&1/wT4.,|f~8m;oԼu["-;-PHO}额"/R4w?HL/S{` b |wc Gqt'wV7EILpN( 6^L*z0)M֟c?˨VWצ ȺRR uSo! 9rj|({1T`O]qX^x:X:ɲb 2y$_JˎT( _N?$*"CZ:q_T[ħ<87)r-HX_b?;FU=~ nXCU {F־"R5pnں"IzRDֆj$o'N5WwYG6!bѧn3z`7BZݏvngS'}DӞHS Sx=ql p$URZ42 0z Їx Fx֌!W1s.# ?tu@Fꭼ5󑸵bLq4(%DZ,%fIخOQ vZH7XM C]bU5 !_;O|Ÿ|WB9!)*j;!N[=k/OȔ;jƤ/ǭ$ "礍񩌎̨q;:"6h SAlp9PdjY%=7kVSsfߌ82*T ё*9=i0ubnY{8R 4mVwj!KǕ{497TT*vm g4g }r,9ؚV˿I&򎗩%5fi^)棝yC-"TiUutZѐMm8~[~OP/6 H/m-\caUR٘(RF+/Tp- tT뫂g}pNc19_ |t2kQy+p &Jm3{4bfXCUGK۩Tzt9L4fJE7D!4 첤TR!5>7I!@@yv7|cxUy8?\n ,`\p}M? |SА]I/K񷃈jCZ*] 1vk\˂.ȠHA4flzE ’м)-t38}9hBR$0i7NKca2ڠY&5x& <*/7rД߉W.Fk\Q%Jat@tD7l" \5uHZjR/7&tK(? 0@+/:@t bDW9K+uaޠb5]T¨o_4<|[ qrGY #̕XH~1sQ{;{TbDJ}NIT?5ߨ}#㞖 ^5 ؛slޒ:K'UM8 {5#/d!"nYo=勤<&v5#Nם8%߼Z&$&d\EC.: すuE 4!@ˎ|HT#*OwY׳e(-n!\LBTZCERraGQζT0/wy+hhЭ\"y-Z?i9MVF.%zSe‘vuXՄ&(}Ĺ՘t D2wC NITF-˵L_QPǟ 0rDYw\QW&AfT"U@{N%=pڕ4*rs qQwߒIalŃSuϱH!'in)*ROINr _ЎJyrYG֯XIפX!?V,U4Y-26,D):O]O򲌈vB*,VZ蟷{Dqë0۷㭄8I2:ۿja4F^:+hJ<䧘М$pԈ^}ZBf_BE=Сva@(;dҨ~P/I$ݣFG2n~6Q qh.]7g.P?iJ>?1A0GVV̴xe~գ^̥ sï0S)ɧS9orWXf̧%-_F5&@5*C|{?pas+O^l #sH'nT?] hi[?}#f#RkKXx? aĘIڤjʨ&VrEI׃|VNcm{z|\j={!xvO3w}9Q:V}xYf?&cyUyaT=^5( -꜖zGƕIX7EH3NX8q&%sPV70Voio%㸇aPz`J/̊y&JCruQ&hLn6`6R($Z3zaV+:VDї,V͵nGjɴF/%j yz̫,ȻxFjShL*1:#5jJ?e.BD]Lr(Axl5N"LO+"M)$UxTt2"JiYra\}3l`vK&mZ#)ȪL36Bm4VqݮSgSF'[(g9< }ɦyL.x EB%Gx2iCCᒅ+oL >} WX*y%~ܳǪg1d$=̊(;ԭy<4[jx|dS-cXaܐ^M @23E>N fyMw@4pwkL |FZ#8 ZEH>jc_ E!}52eeMI@sxvHPLe4nhahٸ׺X31XX J}&=TR3 B/n?ftukk4L2ߘ>=zrG*hz,lxQN|CRi -<`滥ʷ&w\񫹨*\&MxX_¸~6iAl/lJ#z6pQ x%r&r{=HjJ we#k#u ׷S[sd0h9C"UH֦Aa5;v"K86cS! N)"t (TԡO*C>KL)n N3~2 bJdhrt6qoU*9jTSLL ϧt& 4")`pq[$%~J>Һ5E9+KHcxfm{.Ս79 4l,$So07Y' !;PR~ &}{LfKt5Q6GFyߚΰG5uMY ,RDvKsB2ک{d(Db,>2 ǩ+` gSeͰC)5ıU> \vϮvMa*6'noEahs/1}Y?O/ta Sa{(n a\vh3ш|e!n&7 DhQ\ln4`P֪ ;Sl`՗J&P#ŀ&@S>,i>,)->ui:Om$U.eJS?  /D Śc˿Cxv,,@,`..$0KD wz"F#TKC!~,o{}d?%?\_J ԾjUYDqmpc4cEÕV=T) Jj)#̩av,Y0XO/~K0i 3S$, ,Bn'L^gKx4 xP=m-P*.)pi& $noUlj$mM'-|u/Iϛs;h_)WvRns ;p%ك 5 =7Ly2wmbTaFe1 0R`S㔉)9󻏑|HDXv̨q}XOڮ.r`y8)v`O,92_R= T9#-)|\ၵ=qWf}㮓1bb &κXYt8BK^!1MbVi#@Eeӎ;ws<2w.IH.3¤)ϋSB q!$M0K[<"Fno+|GFB!Cȅei>&E"S#08liX*^R'ޟige=\^`deGG;hؕI?âC9k)^|m/3E$VpBuRP'GGIڷIjdbJn7szu/]Mj~es vmr}N &ty|o=)VJYamar-򘙘ԒxF)R{\Eg1]hܐ|p})0/*;wiuIO' |{SvxGkTO=tCŻJV{C4i{_|a{KP$ae]XIPyA^#J'egͭZ0}&Lp< MGpK11ƭ5cz@d`y% Od?2bsn2 :y/G'KS֑x4yףK,TlPKNZo|  JG|QHeE \5Tc`ɞK,s`Ѷ1v4I=z&%wkO.s)t.3؋Ѭi?pyV$N}5XŨhۀ+}͍T66.tzR움{C`:!˻=9ޡBe9Fn^(5mvLI{ 1AHrFA^M(?C \M`Nax~ܚ< `8 V >N8:s3;*7N\0V79/vYpԕ$bDxǗN!SG'q9B’ lZ3#nԩlu5; CNCv+A:>i"]G;6Hx )`$aRB\jb]VZi>oGu3-?W~ >423AXh'É\k,1IihKD1P%Dmb;C1@K͹f{lg]Rb*piAaT;C*ʮ]3?i*6S'@SF/ܛX⪷h 1ykxkaǴ= J -y #l я1%O8H0bDsjst"l<#M#͸syA ѤU. (y Yo*Vx;ݽFFtm+m˲0!A9@J7HR1` Dyy: f5>rERҷfih ]^mT<&F}H0 @( }7d"ɫɅ lzVMOFߗƦϒ/dw5UH]*V\ڀ[(HVl2#܏X7u _&CB7 *;t&̳,WZ J#@hfhY+EIQߞio@KηKLO7P+ >:#6}2^`7z65Ś< r׼c%(`PFGom7Gكj^/|r?LKRw qʉ("ljPB}1b_ T 9ߪ-e(f`2AKFgn\9]"18"B^IvOeV.||H1  ѢB[OYZQ= yqm"BwQ:w_ 11ќVmcu/r.]|4hL=PLN.g0B3ƂC,J$t拚&} b47X~E V qϚa3T&d\tG,U\K, Gjݢ̑79ZUk2&a,>Us=M%|H 9aPsB5V/AZqs>P*%P=F`S`D @ kō2=G_mo[?0ʹ4լt!nN#L.zOYi&E@ oj0dc)ZVA@cy9Aj*n&5%'Si9EGP<0lGvDSO}Vky100s!6/$49V/ڂPNVz4,q%"S^!%ÏBnܠ&5n@u L=Fԉڭ_̏"ʞp> ,~ګEvAPZ "+}8OQ*=K,Ve[ZR Q*Nwj 3wJ-F^Jmjl2T(P: R \08Rrnjq`$}[MnNPӢfO4tfeXS´B|`rG9uvV̅M+p&."Mi4ʭފ, dFP*AS͵HK{Z.;ȈpҩW>Lr$?Y~7[L(7p1PsF&(AXjnC34va6vC#8ld ]c8p4i8ZB4wb|sjצY;Dʸr:-"ZaQM **RqT fʡp"gTy}?:o3Q^7剤FUe5GPd_eyQMP@Ib^~S|CEZ@GZ@eA($ɢd݌kݣ8y>@b͙`ӄLJ2z\ 큵 `H;PJd{;rtÊB(SrpA^y@ oaJvE=ivx+|.}0Hfot@C-#}CU\j*av%x>RSAJ$eq7nU].旵Ĭ%Dʡz e9H?z 1QC.KA<SVF zM?ARLX=[ne}ƭ0G\IpGl,tɴRcR ޖj7T~2*%bY^ɮ9)%N6KlXQ:DВKؽpƞ˶ܱ;cZϧ0Du2(¹`ƱKPD:G60+y ~I-Z($7ZWk1~$p-mZԜsiQI 7|e\^:–JN&JZڃG^G=Av-^bW۪Ԧzc Axu=gL$7d1(,| bG2zh&txܾ]!אmfBtֻ0 %:%P m06+KWʎ;}YۃQW’E0 +xrRe'JtbCI,75v:߯ɤ8煎GZC`k"Ω#>PͿ0뽁 hZ @ö=[@g$VH{txcH7A@msҎ?l~ wעnI=VpWTx Eli.rfaI~u/C z/۬3wE0a xJch-<#$ӻ(zQ5'=R5Wmo1: relT˹.8v+FJ%g qD(ZA_5Kષ+ߓIq3&5ۛQ7=ZӸ1qݐq\^AfCϧhcS7,p//^\OX:1B ݑ<[QoU/N\W{:|68)Q MOw5Ik~yk:b1.ËG4͋D0q7kí4Kt;`PulA:\6RT$y΁$|\DaSTk/x\q;ܧj_XN0ǺK"i/_ߗz)V&9y͘wBT3)@ke`o=9Ũѓ|úKG:b-{ X$ E[ev=[-*vY(ʈMw = 5vJyRc.cD 4Lj EPcτB|tq =@tHoHnnw^cYyN)`MWG_gJI;mɈF>d& @ݮ-:5ڦZpA%!Uf~5Oa̖ 0YlB܅3{5R=ɓOԝx"aA Z VMu _iӥ01Cb(HI`WlSƐq)Ř̵tf4d?4Ee_51q_@4ܷhxcM;OyY"vT-o2N Ịr( bVbJD"E"nHkyx[թؐJ|_wwcx0ǿkb:ݿǺ b%E&S.)=aO+XDw] ` 1n+˶l'EEm )P/seO4L*k(i]Et-v(F,ᄀj˼bSfG_BpDY|NW@p 5}4;< )_5;ۣw5ue ϟیe9c/1b>Ϥ߳yz^2:}&v}OHx by9^1ʿzUGm/~[ ILxVXwV\/ٛ\pݲ@5u^>;1քeTNZ[]\w h.(t:s 2~20hJXšf2$ IL>\s;M:jSfiv"br#dq _?pBv@P8^)[(lj'HuwW12`G|VOM-_Ӹ*Hj C.-L)5iV9& o%,x89#\29H=H8GF(U[q|9wbi Q4}D=RXǭM;;z2bNg*S(>`ulΗmFR7/)553yxA8{DcHG|#|qoܩe҉ٞ4ߜ& %\A@0;RjZ YAS_DOmP@I4j:e] )8ض+y\( 3d'HM^ W*w5#s_ ][70  f9S#'d-|\궳ģOͲdx! j2%4 J X^9COw }%O4o{Gy|2@H YK zR{ !o1BC}͑!MC'Qt:2%^j̄8pXiv1ݙ֞"Y8orETV/zzٝ4L-BsX-N-o+xjBkz=kO^v4/!Q3BZ!Xd },8J t.Z BI2Hz Gyߐ_?Pދ]ϞKx2x!զ,1nmj-3v5mI'WLEמhE8x(Ҍ_8AAj6:,@*CXۧ]@=AG@6:h.{zt Ϻt娼3N'?|'[<Wg?:m'IZN(.۪8[R,휐S H[G_ ^5IP.yo q#1D%߇l oj_}bƟjBq9M-'w0q"WđC}kytLvu}~!3~Ք拎 ĨW7Rϭ_x?"+\ts|R!{-BTfk2AR!Q4ӷ\|.&2AqᦏBR xj쭰iEq i9֒'.}YrVv~sXu҉=\oXɅeU~*T^|oG2'!q؜"e1e |āMm0k _;7m!s?${=VoJX(1˭ݸ7rA?RwW%CrV^)*oKo]P JҒP_Z6?j+鴶ږhw)nFXRLö?'w hnBW,d"$ӔiRy~M<-ڸ7TyB@kӫ]2W: gk6+dZxWYeͶ'vVr\@8CG}`[E|#Jݸ#GvȰ"xD5g:H!87 [OF$ۮH":x6EZG,❎6O$rV_qAOjd< Re)5ߚ'-\b#:Y^ySy>q{j&ѳ8\}=`.'ߗUDrAWZ1 :WqSii,W#smd1,+w}⮇/. ުKfR)m@pjDDU 7;kѪh|9gs{]⻓bʭI"*wS/]ci֨~Y2n8Rkh`."*Ԃ5XoӅ/Kt@0LS}}jM!6c)w8ABr-R6-heF؊_aY"C{w㻢%ӇLW@-%-Y>:+@(I؆=3vOC)8D0Ri ;_"E"ypG]VݒkUM$'U 'T@4耂 ң:= U!E̻k+奮$|Yj+F@&D=?M/ȪJڼ(2*aJH.2kuO['\^5]Ef=|d"ak" ;V E!.]c]@WO}v}Z{cA9R[;B"{;AfEY#a^Ǥ:` G Es#| 0mrvD2Iw J>Se@-CpT?@xX Mk-YaԂ#Ymi+sa~6q\ikkZ'nZ~?` 2$D\}!0{a2reɬhr0($վ./Ðv[fD=Ⱦg.=r߮?2| 7U6J~ZTxTP컥.$=9KjzV }J{HqD= C?[T㿒զEɏJ"2r3 *ӔP{^}9ҋ~:(l5NKFe`35scM A Ee~h5WrІS.+OƀQJ {_PwݬI>8W᪰<]G6-.4*c8 1.ք9UzHEK'\"pJS 1LCdPP=_xAZr]n"z2\lӡ@z~opY5BA@|LiD'}Գn޿؃IKMgH,\<пN;Rqݥ kxK`vT {EqJDw9H:ԧ &]cOhn(HT\ݮ5ZtP )'N-}b8PJ ,/V>H=Lx]UY6ꛛo^ȒIeZ/F#M'E?p&~lH,hVJ7nQI:@[\ɿzyrNnHs0~gs{WS$ &h 2)+6aME'@#`snACkxyN&& Xb˺ %5;]92y F5SqA:,y9xxFI0bFsʉîF0C#`b0\[6?<7{f?JkiZkb#w#r 34#vg.x<> 7Kw׾z><*%^I ND^d+Hf,mMIzKMZmդ`IJOQ;ΌL/jjK 7|ݖQUBRQ,rHZĿ\4w OJĩ1("J^v8-kBox[!=ʁ|m$NFs.W!%tn-iL!:2*aWY'~ΖW&g`*(@:Yf5a#[%,7t.9Z] 󣪜 ~-`~M9}OWk/? `^o:+8>JvUG> =5SIlQ(֢2RG7'?˿+=XBE/h֓,p1oE~Vn3鏳ӏx|zlA ` 35BPEjp$LT~ m '2FGX5uL_9 Op$4DxV^ /9(oiy`\1E.*27٭KɄ㥭j=>H?[\b•5֕` L\\?vL5$aK`]Csp]P.z_eC_MXX̴5T >G!t xAcvRAnv\VY9P\)%b@TࢎW!AXūtzJ1McEuAs ЛA)u#ZS2AH;e}Ffv沽gliE]M.HȘcnC\CHQ< xj@)XgPߖxSH 6h/Y0MD%aoLJ5Z1ߖy@tp{U GH2$IiRi_,=N|g=@!BvlaYu%lvï!rM/]kKC I.]]SGL .f{ CazI=&Z3$\RP rZ1 ix-KEX0GNLUk`cZH[)S֝ӖsCtAl@˹+E )Q9ր(۾\'![cl/`yTgb%$d~ċsn YutzCDP$ W,xlǓIY@bUB 1jUw5'D}ҭ\'v;U*m,54OzjW]Y1ƭ٬-{U)?GOsKWC滑Yw.Cp[E3D0#`q050((01#Wh 5B|N=}|Z*?X7m+\ȼ&_j)ڥѵGj(lgNRƥ&ԙVPFtًl=Ţ:}nU&gcyl o}Q0F =d?CFfN׭|o Z* }xk 7g.mP͐Q੩*؁!l3A86k{yߵ/>FfBÖ_\!Iq-}Mmׄ辅"q T !dm(!ٹ1b%@r4H`WT69Xs"EٍyKHexH|@h6$Oru[b^'Lmg]e#AKHG#YzP>1RJA?1f K`n?6;.9_strHg{/:A h E1#U598ebЩsU >|?0R# V,h9#8G~a ejMg8L^x))k=Pkc_+onK{,[C{}CO ˔ƛ1Rug'!TB0nw‚1G* >)jx?T5ރ'zc Rv-m*8^j uЃ[kb0)ě\Q?{7ӫ~ A)i8b/vSE;{'z0LUW.4 {⹥^f op9}fIVs K`;~[ܷwh<0hQ p %G5OB>)s* ^%T|(ag^5j%ZY9V:"K.wC {]'кt5<.}\2;HRP,˔G׆mˍm|#TI=4a2xu]q[.|Qp_8GfM==&uDag1EbBw?:`1x/%>*OLL3!|3G!4bHZ0*^>@ѣMKE<|S0M> -퟼{*l>:cyVh x< {cbn"\Nk֫)X$I*Gm '/R|wRP--Qj/-9(쩗Eɰ$_hy1)Фt iʒ3nGkPHL(׻b[i"㨈JUz)Ix&nyܸxy2ne+7+/-κpbވ퐩o#ލ-NUXؔG9|o3eQ4G94^894ۈh}ܟ1Fߞ:j< BF@tWpEtK.w ck3:x$E_\~tu8"R~C)_?g~Ŕ> _u9_g[3Wȓs.,pwrIAN^u`4zWm%|שUlIy4'WL,9|n!a;ڲ\a,߭DGS}L´0r)$.*Sφ:ve֌t=5 ׺eݢl;HI}u7pŬ"uZ#h dS\ZrM чvݯa&VbW_3ڼ,=Gg?L@!W/+ܴ"T f|2L}gfSC-6ͰkVj2W׻(S;ȯ} [`YaIt/h.A*hǙ"l3Tk Wtu9}^  !a fHB.89#RKT{v:ntDWF[\ JS.YLdv' e "{ :p2hG)+LgNҫ#2Ƈ -ũ͕moWLͮo?:}讦VɴUw)k3j,Od+ZHm[eEaQ_ɷv89e,B*,/]a`Z_o'އT\Ɠ2{@R {g[J3XGcu ݌b+˺{7܂ZRp8~8Wə?Tr>gg+OH+c܂4!76S8߼0Qh`VձyZo >fOb/ ٚsyMN)Id##&.Vj^YʤP)i=r*c1>>{np`|YNWS, v/FSu}}C֮_$kf;G?rzl#?Jfk|&vX[*Sb982O(Mo adQ'w޶s;vE473enw#Z oahYlC)̠^MTxSn8BSdw5 %މS]<^_9d; ^ NiN&6dԱ =#)0=@WE54\? =hi:W[ ຸS,xCq@"iC]nȽC;6`/r]]OmT56⩖ @;+/.n+> rNw5&·dtAT\kH(wnRY8.!rw($}ի.AXʅ?|`#>8"˜0-Ÿ ;N5B@H,@tNijk34[ Q&4ֻJ`{كXTS3ͦ7-;O[OzvH}0GyG_vDƷ44_9@1TGqcye5%x՜ +ze5Q-UI]7kc^A|WVNF:H IHF@M躈7D>XQNlN0EcQ|(r}++>3˙ k T Ag7\kt9Ko dqF\.~Wvu` B+U;[ԟ^=\ Ta2KJG( ?E^N[;,n9WFzÀ|&RTX-Pj{o8-1@72U:wIIdn6Tx&_x-k^7$r9΢Wli2 UoaȨNvZe)?<9rƽHnΜ={Z* ly bno($GwȔ/ᭁ3 Nƅ#|o{))~Y~֘)Ec8롗@ НUXeע>f#_]"~˕9৾Oۥ]~;rwdUI IoIE/4Ih}@*2G'b®Vr쟅 'tJ|1OM7rŠKA8XeTm3@lF l- qfm.k>IdtQ+7՝*PIY igԙ'{9_gmEsE g_1Ѕ$7X?턁Ҥe_KI!27GKY#T\u]rxo @ VoF<βIzO 6ABʣWz(ZO,R =(_vH>XM=[!B$b?APބd5N>/GqEa0H̥{*₨7KL!W* )Gl:l5 cm%E$v83b (r[%V`L#Jd^xQc@Y,u0z1V9bd`9'HRqG4il7D2.60rQ[,1$\es`rh\Oș8%;3OH_1Vݛ_z+熕LY0"{4f oPuOCkQӹjg|>PL7 ceHdQW!sCeɔ=㘕s_@[LisըԽN/>Ͳ1\N+Lo׼K&kMJ>2yi W P]^#RF,]O['!&mR)@訁ZBX96X *pf=T己v\l18;EVxU* ;^Mbx*Ɠ%eaBT5M/jkVjq2UoND]jrjUvX pk5:@Oaet mk(eT9w1V1 sC\_z{`zv:6ۯA&t31ҵ~ukM'OoqnBvޞV'[/PB$4S )XʉI)wX遊+ڔ~Gϑ <7(RX:}7h+ Cg0#'f G%k ԶͯM˃?KY]8o=Kur*ޛZcP\O,wiؾ+N L>8,-SF^vùW׃o+V^4{v`fhTOa4u}-F$eu,- #]=BϕfzF) fm,W]ۻI3J5Cz9b>9vQ3#1C+ݱ1&\DmQj$KhH _E͘/#hA@ߛ("K/?zbI >Ȼ f J\'D Qy[=7 EyQF8Q8@A-}xE#mPqγ.^mp$`XňkEp'gF;t1Y#؎aY 8Ɵ\ؠҽ*t$9-Ͷ.`kqX  !Bmc|b҉B"LO"t[kv#t{1 NJfRtՕb_;[OF5oa߂. k$v M j£s]rZb^TUG&6WO=,mR3Ll"GW2 %GW=p\n ܗ3d&SxD[%*6Q7ETs&(Ɂ뚊BD\6^[({= @RI9`1O7#,4ńeg޼;ɲ-pFk]tYsTTٚH@|o #w?--~2 kKڥ 4PUT J,du ,:DFQ kXm]p6l6uFo]FB3CU: '@&t0;JC.N);`` ѤrgKZUT2p,(i`JF/`|sʍ'1eBgR*5 }L_n@{|T5@ocK8rzߣ G5/R#j"71"[TFXv[\k=ŕ^ %7\^]EyyQӮ+)ܨy&ju922 fU~Dy˜pX@ Q_qn:eb-zhaY.j5}h\]A:ʇ¹-{UZq,wĉ ])(K<4& ;)ce(H U55Ezn)!Q i:t4 /D\edMB)RFCPOŪek~ `Ayoոː^]y"ԃp]* $kQ#!}}Ĵ*R:AKx*K$P+Fd7c,h tgj.N(X <)6>!"g|?dZew BB>@2d~/ -$C!J9 43ѧd|9,A̬jɃ !='eHNn cBbl>&ݟwM/oXLۆ<+AMW-;6KBPr}\9vw=2wp-j<_Xa3&xwn8$ \!ڀ fp0P)c%<+f6xfA ?6؎ %JEfbuG71@g_\k:F-Ȟ:\:iܻJZ:*B\Ł_C0H p$?Vsnjjߠڛ u9 4-d4wPp19*,II2NL\oR{|OzO!;KFZ-&G\?pe:Ƥ~ǫ٩1_ϺF¾rTkbx 7ôqŎ!OcPe< "rcpV@Lvba ^AttDoG8qΌi܍om?@0}AE|5N_m$'SNrwlOKGYS!̝1s~>ѳO*_%5y[7VnKR`m}ƿB97rl%_yK0S+8$8Oky%[upow˽ 7nHC;p^<:8E/sm_-YFW؉"՗6uцo,`MﶪmM~Ucq4 k2ޓYmythrgNj?"|Vg?bL~3df+^C0omrSU&weI]HĕNð)¨7XJmεujX i-CC33e([!HM=TJ >d+t%"Z *U޾ زuؚ4[N${18DEٕj[oa4#tr-IpC#1~afσu`#KbJV7zϢ$͎bOa={0xktUmnqp%}p~M7ܚt*ru-D*Q+{ma fIR3bsXmσNP5jP0[! HBc.CTS@GT2P/QCqaxz=1ֳp+IIl5'" u$ˎGg7f E.=ņmHWV3ȉzč}> g Ȩ$ScmnUKp6{xPӺt"Zy̼uo2hL?Bh͖0_):W_). 8M~ 2s8m!}u81>g޼|v ϛT(r^8ˣ[ pI\cW&X%֋<araɸχX_]Z W!0{3ElrGbe$/.:Id(ʶn5#ʩXgVMyhbrX AEb[NaDm2{+P-& PU6jʙǫ2u*n(b.NHe0|s Uu d; (w90.+( EZ[:5Ԫj? Feq[𠞅kdgb!(~G^[8x:.? `ؽ練46܎/iQ1P?\ЙX G=o=ӖF-aeNׇC-}шDi"wZsG/Q Vs;ѹ`|Yw6yKՇ;h˰y+Hz!M,3TKQІL4hOGGsLW,m s%rY饋ZyOuB%&@^5`((pˬFy묽1YQר&E/&3$A@;`yk\WLEu.aAնg!(=goP4)A(AA$ GK<6TC*í(FYDkn2kX% @8pNz.˻u3f,5fhB)<5dMe3湯2]=u@&9]&Gp48O&by(Y,Ca $2bR[WD(;Ya㧿IDy#NIQ=$ʐnIE0tG4uJXB)3L>|D֚ʖvqbb!ḩFdžA4ԢѾ 'kUL(C^AxnsKٚړC1 K +vH.& 8.ˁhSsM dw~A'ԇ9e?a}ɽ + 2nz we&cuwiiȨu/*׋zkrvFl7ηߖ5g".YW1I䍒6/PJ *WiEH1^nHۍcB0nG](-471:PcmZGGT?#fȮU5 %TjLG0шZԣaR < gӋ R./mJ9u&Up>0'He`$ AC.'|ER|mbm ^?gV*5Xѧ{iR WJa{|%5s?i';<0( J^m!kI<_IIhoDJﮔA^^- ^F8,p v*p, ObeQV9×Ѩ:KU gMj"PD>NQprvX`Gr5<]^9g#$vָsCIDO+9 Ƒe-90uC^ŧ>]0BҔRDyG-~.ƅD!\7N:T%3GNQ\EEސ<)QW\DlZEj#dwCCj7She"(j5p |>Ek-um~ͤ5~CzP\ɆjV*T;{"J݅Qו@xVB @f Ύ}QHsRɫʽMYqey~yFLL&,KhUC:X8]CR0yp)Ńz<]v>]Tt1-*Zv@n;[Ѧi٩cb[RG/6\hOK6?6j0 ?OB#xϱU3)Y(sR$OV.P#" Fmh-E+f޺sHda`?Jd!$Q q097F/T.Wcukz q&Zlrxnأ~ZNMzs8o'峓CtsÊ ]">,ED!Ts%k <[F/vq0i,Y x~ͬ8CTt5k$ĵEͷrqUˮmd{%bgdE([3; # 'sx0U֕6S _2>~җ7JjChUbXOxۧI8%AePIMãZprXH ǗBQs@C;x5ت#*52٣6MbBeJ-J4T\LΚ~pM}Ijzw%B ޻m}ʭd+@X8IAU k~uiukA<8I0ȑF, d, qϩZ fS<L iM>ւPSS/ |^F|3HJ×OD# KRPi 5* Sig'8ߘQLP-Bv6Wo(ńI?_m2 oFCWSXBETS5)V;\04Z#}k-ݽ=Q.NJ[ivz43.*(Ndels^SƘeA>[ݗUKWGj/4o[a;4*UGBm/9բ .eq~4={rtNR LIK!&NժM մ)DWLHs3͝c`s^qF?Z6a`jF>zv>>dO$y"լ9{;fZQޖ-FdQDD.H BS.龜9WN=8cUO5@M9އmxEKٚcyȮκ`3fx*ş${AyiʲTXhPoqT8nCjP˦W1Puŝ"xW=gl5蓘T(NeOʦS 3ѿA_6b:?-׼6ۂ#V*3jl:ʨۤ bʖP̣Hz.۪=r|1.UGT&4\o3%jx_b:I'#-t]MJ儁OEv޿Gz0O&KPo w(lE @p.G"Y No-%+%a7@) wYItd,V$Ȣ qkٵcO~A􇢩LvsRPqIniO^!A?94L]¼ Fq4 n- Gl M.2WfQ)}K8H(6ި_P*:2єȿUDNeNej&0smR5q.fC5݇RNa O mV$AzZVb B!fBVQMfBprAEH"1E?NA1.j20v1]תhn^,2n{hWĝ?GR5P҇.ACeyGw@s^"$j<&;!JSG܍M-~1 0VSŗсn˚=&l RQ-5:eI4@־ 9\еqyFfzas(&9{l[}{"C&x=VK_4֣%mp3 il9oe'~zb5$ vb=]n8s N{p%꺱F򔵳ջŹ\If;}QȾ5,`N ;D{Ff}l8 (*iX7e0ӵ}>xȲRZB]5h{c5x]o b':Ŵ04nS {E6SHV:}rHTA4oI|2\Y(鵏Ϸmd>󄬱V3 ?j?zܿ<66#9=Zur^ϪX"QK.quwmopǿ ZdZ Li).ˠkݫ[DdTO`{ƧטN712;l5/#hĬKj( Q+/GU] mwc銥d}G? ൱N?X~2mҐ"/fwafwݺ3z4cZRlVǟ?x6$Q;::,,`X@^>Z|zvmIKtc0·8(MҟAk?\fMa\WhVX j Z= +lcO6#$̮Z͵t/O'׆ѢcB~#Tm>3,W}clW˦jT,$VM0^\s4 [ꘂI z+9Эf]ȶ$ Y*^a21sw=:'W]n }JF1۹[8 ʾ֤3AWcDJRLcN}:TQ@5z+E, Gj+"ݫ=;x"(:.vxtu-:|sj ݴWv&5mp=zUF;;RR],,^/P1bThi>6 >1QI<Ύkk*knN})L7Hwr\&ftcjnR4OF2j=A>tMAN>ab%6:8gð{dI w]7'.-g5[XnAWݨ|.wpldJ1‚\uR>ѭU85~/VѣnjXoR}8jLPI22d<ء!(:7_ T'6:][7Z2Bb\$!d!% I1nP8wSmЍmRn7jW5϶vA5SzI b˻NC|2[%E2Q/6 4 FKz#?h !+G[X`deinZQ~!,ssU[VT橱^q BB5S_"sEQI5yNŻ]|,E>`Jhiߥ4א!llZe:aё{9m xnw#zv\F sRA.?qeޮ-f֘P QS)ϭ4-N0,[шcъȱ~vlHǕP᫘: "]۬L38C9[$^zJs9SH+Y*tN=pxjTϺ S! 2vK`w\W5w/_R왂X\QkE4;CPhQZ6 c`x '}Vɋ1{O7 7I 0VqwM U=Zɓx_ If0L[|}5q |Ǥ.ӰB>.񷪟qk !Y1'_C~V1#h/R}QDAZW|<{$jCo?0q7Lk(l8lJoʣ8aB>y : ~KK2FaYਜUڛ.*ߚU𓕟 m`resQK_|T46nI<`}'LH?ix SS0 읅k&zpUf[t" p>OH}_n;$涻PlL#Ž`o-r\} DDo~0G\8X O0xwG]"k8>2uVCS+cAQ65+,}8m( •%4F!` 3szN˦8j?MgY~Ǒ2?,8frM.o |bE,v6yi3f_ QVG:ʚ~'x89+㒷KZZAF:8 |V-mЩIm{9^bL1"𮷢?w|S3ZkJP,*/5c] QeR1HaLk0!,4<K:oPp!ǼjE4^]S!fª AJt4y>r$dusd,%õv- cimmpBxA@Cӏ6r63K尴HEl`iF{H=LTGƩ齃\*^]mKZ1{ANiThw~ C:h9lo#v\m"N@P`jU>)_TdPPbkfkd:Ӽҟ_LD*fk TznPvc_[)E(Ljc@)t5v7m KTXZbҔ8p bT9[_hɠQTuHdĉ bB*jQsGBTL )WSNxzQRiԪИ<L#H'Iz"j<&ibv}m#lM flѓzFN/:bR9b$TJ67?Ygq qwؗI0*T0x NlNTQ+dܞ11e&[-Zo{OQߢs/gE\;:}*ʞq7y9}2*+pV ۈ!dR`eoRk2.%CsD)_]\|<]S=l6,3bsP.#Dh3|?^sҖSL*u|MoCv4~mVbHd(O= ۄc%aNB|(-iv &䌆;]tB)c) $ ]ǒfXq̊z~@I 4yeQfrK\Π* ?hi|F]vi = 'N:A8 Ҡ-n`Qe$$^7&FNS5W!Q =1 9w~yٽYװX;U &Pqu`VOq24rb?N{Ic7 Ŝ^Y]݂Fϯ|, Đ%Z}:*%s ڋE*Q8;A_Z,VpdZQQxr8$&h?7|93-(ha28N;9 jJܽyyp֧!EI6kUX5VH(6$~I[?k<3<ʕSlDTRS)>5&)mIE~Ѽz;# tNxJ%A:SM -*ª@235pzK2$>۞0c~ PrQrB ~ IpbVQG#O̅OE!(L(X fy`I}$k`PYKQi8ky|we7 E`VGAK\*t4ڨ=sǬo8o+ўӘ$H+ 2%V7D3EbgMÖVƞMY:C*:3e7>.qGft˪Re ׊@e2RjEMAZ7SFv% yt+]>K~N"!Ek{U[cav:B'-.GpE;Es~̙M1앑滲Qʟavm$s @߶l+WT-;9=ors|F|4 7+\gj^8LhҊe 9*Jr M઒S0vKrŚӜGNIM Bw{ |DhBjrFD'gkIel=/6Z;\ėvoN1?1)rx'τ*󪛁4/m!""9e7{ƽSv⎷%;co+F  bDuۧʰB<(uPçؖq"=ZXiH( BB}#E`oB3(bPp1v?t;5v}(c\?<BSPMKns%!iTeZr #̨g0 xt/SJ O]'LUV)M"hݪdzPT9f=qm8 /nZưPQrOIQKYV+N[Ǜ(V}D}O05H{ %ZՃcКZ3q0]" K|QI*tF1+ I*x<*nt'j&j)H6y^K^`pՅzBl e;.s1a^53ʢZQi ~ѽ>\؂H7n8Izߨb"Hcnll[+ ,0,h˕1_#:J ɸrD 2'8i^1H@9dYcYB@|/L)={>C@< ^@ɵעn FFEO@XS҅ :w{9!HRHNӄGAZl}`ڂ}-n0,Uj/}+!>^^HE3K'nxr?od>އ@y#8Si f/FTFaSp=3\7意y~Y\KX<, (oSe\q @$(l-@Ao %0Q9"<ƹ uM}wHֿU l1Esi+QH)#\o9/eX:JҬRmFK}fv0< qޕ0s>h i&#KPGYxI=bLJ@2xY4PF1AfٴtN̴PVv*g ΢5CayZ#z@58԰͖Yv)k R5b-Cj9zcȑ}>|67eyLw$]ŬZ @Wvc%³aNOj'cv}뒛u\Vlɱ{v"KJ"hk,CVfv9mɃ.Dטk:EȄ/n`"AVDjSf\xۘ]YιOBtW%#vY}q t)>At\x~z([}5 9,^2w8ON>3.|턪>PrO| n\Gp"ܒ~nw :0>l{ժ ,kVSB,"uX1j+ejY+KY$D'†0ڈ qH\?z)'zoMӐ0;Nn5>WahC!1Շ ҟ9˞ ,n£mʍ=9ݑ (]pGbXh9F{!!)>tm6\E UpuU,&#ۋ@qUH5o|K93d)㡀B~H)-kᗡ|ЍptB\$ǖP^v\ loҁA%%w*8D#Rعקkۭ Fs*bynbglQRjk;K8ErsB|Ey1s`v^O.̓"3E77: | ӁZj0kdzlUd&JA'#V;Fêv%Ƨ<ڍ\J5a*Ņ.Iʀ v|Bݜkr@ 6yxg3:dr3f wDEG{B0{I~Zuz=) *?ČXCoheP4#TrF"RmU\}c4[fӥ\2_TdhтRoI&,nCvoXV]_0!զ`w#+jw.0aɿnzݤUf;&81 [$ ?8ېA/ \ɞ0֘ȯ -\|N;[xYJ,o bwCw5ap2/~;0sC%xm0dV8.pM[Y{ӑW_M~k-|+QUj񄇠TdgGr,r /}1"~8\ά4p;y:Vbۉ08 jK1tSWy@|MwI6$tR֠D LiMvMh %$NK( bz ђ( ÄF[` 3A;k#$ ̞/;>3@Hz5h|(dDH2SJhV;pˤa$,*&*n o3dvɲڪ aM|˔16zi;*Dx,.}nO/k %Z9́70xmlUKgGXmVMޕlj] 46:ĤZw* Cbj­De8 47V;~'F].5ܷmmC= ;HC [K*/GZP]84-Qs@q:sBހ<|:K$^`RG2Iaؚ ) [K8clkX[|fMp@m<="fE,>W%e7AdB4QF5{8KMGp-qIN ʿ0"oΡS 젭Hʭ'z&ޥuP-VK#w;"l^TjX._5;Cb@{,p/_yJ툑YW|b\Hsi thwco\$#bp~Q^C dB=esT&ٔaoSaBeÌR!f"7vBypi Xj֮W!TIk>@#iv%gC~wԶxE 쀦ţJ:wT޵r.7> .dAK hF#c*w2,b }LTy$5i(?=&;Yk-\aiV8*vTJf\@}Or0a[ndIA|l ͪ S90m]# c@xt""D|0Hd;Yuwq;ʅf:"/12TsmS0mGo7'cW]fG^Xf`gB!>5Vojz˺`_,֗ XFkZv7{>=zt喉w~vklKsғFc\T ֎;*5mh4[-Im2ּ|}8I$aEԊL}<՗\զX]B;b\m_mrpVpt_vjupC[á@&dY/_,=y](} άG3`Jm(5V@uف"N`[(<ԕDjR|]}mTỺ 9>9Ohc3}L2&kE@$ M#4mz#+ ll4%FLmga~>/tJу^7ec}^}rQ4PWߜmb5Q H ~N##eNÉ]/?mO]A }۟0:j8N#\3A< X]!O.^ugse895RC&@:_a3z\r2 4BYPNoǞ}м7cBW17 0;LГe,$f" S5w+rی4W"UO݌z `yۘ,I5";!P_}gx'wX-Z>!_F)Y0QCe6kPo_#cZx^8?7[JW~6%eG 8)!6O.Bbۛ`③LBǾL &} |B-Rs) $I[.7˰Qthv!.3դ>u ~E/T((`]}z՞_.m }CխћG1<,v+*o.Q/}J.,髍JQ[vJVj!frGv5N嗳+/a{CŞ| RL`5~=De|j7.^_wjPzdPת2X*rOnt̡-[ fxQmp$̗J5lCY6Ʃx#H5R0"N3dNYCԒύV}5̴^F^-%ӑg"%p>MZ-@QZSWtIZݲI7|D(ʼi Dq<^+p9ssP Op0zݏ ]zhL_(vvF7B+tkWD &{VryrջgFr[#sR6BȢտz%:W:k+Y(`^$Mm$N,fub̮)6?Wّ{oA%:,&?$ D "AQVTZ=wϘ'9{5|3OA/{ح(`)& aIedGZ&io2<zw0t+? U1Cqms[MЗ IGQ`ֶٺޯ^QcY%^7͈2,*ň~9ntnvj H/hJ~8(xCD(BAz>;셂TvWbN}39 a?:E{+`+5P cjd Ꞝ,*.dOAS_U~⯗+sN~lRqeF"OGŻf'yJb{^ <&ȒQdlD)E qmKcmTK{4O$BbxaR"_Z:N넶 ɓ/rɅdt2ٍޜ=:AހT[Ğ3篌kcOV-Q(P`^_|p]4K,3*ċ~b7SՃӆ[(a 6ֶlI[Z;=Pd io [0 i#^-O6h`dCވ% &A=vf,cu<[aKU_Pq;GOH?eԒ<]{Gz *r;%a=Vto(yq~ a{u ˪#-"dų3qعl+ u |w1M9E})ȎjXknxvJfzW?ݖۗ4$*y;f,e, Hb@aPl`mT9 ѓ2 T[]!KU5uƺ!:˸wqb@[N Hq>\s4a R'(wkRǔ,ƒ Jo=K)~1CH/YqZq0Ђa ݚ>q(hk ,k|[Ͼ!vx_|lm^o!ҽvҾx\deS`s/}ުk@ɂWkY f#'z@@.뇟A((gY˜ߘӡɒ-;E{ͣ*yx3 d EJꂞLu>'݉bc8tO Uy?oN-g,) rF.kAZ2&<K8[(?v~0Kǔ9]f__])C EnJQB$(yc 8͔4f=Q LewP` :ߖaS͏ ['9LK6Kū5EPe~]= Kqh*̢7Α8<9V)RFO>8| }Rcy Y.dzsCslXvJÖt2ms%+T54Q$Ѱ-\i*Y&%yƩE Pl]=D*Ϙd"SzFigtX򣝍Cԡ?_6ठZapVr{7{A~ܝ}6]2Gi,6`>wEH;bw7JqD+F< ڊuu٥5>,*Q ox۰kD2@;-ӮZU Z5EWP;"CY/7;K_l]azcOShW w@w/](ubfSyWRLu̯Y 1 'Ec:,r~%Gt1 t5F7BOOVCv:SHz'>St0'/+6'ĸ&7(ܸO-j_ Q^00!-1x2lԚfA)"]ri8'{ٖ9j;s4O,hdn 3NVdD e`ݜ/Ɖ) N'nm1]y 4X5-G nƄC&ims#YtMtoj-s' M{# 8y:;h.ZU_mi /)me k/$8=Y16ۣg=IXܪbHlt*9q|ٲFf)pNJA*QS F-s&؂^їpE@YVIqmŚ2#O劵վ <ϸ"qh׮m)h*aQ 4qvG;bHǩUk8mRl9aQDgI1 vŌT(Ĭ\Kt)QKJYJ8%imrNUdXW2rh9zT3ֆ88ߐ wY.κꎄ|f<%iAWDH)R8  cY"V] ԏ.+ikJje0e}UE` %lps 9':pWHX4 MW,}O7I^\C-9w&[p+&єRFa" Y0Ab0XZLHjVGl~֡@<("qUkO"W,2Lzk ؤ0[)JˬXccY,x+,3n\(q16 !c20¥'$:8ӻZTT׹0\F\^9"x]XtD睗 63g1I 9Yi~~;z)+l[ߔ) ]B]F75B22mTQ^Nɸ +P{wυ:pw=R׽4O}j;u#EVn}. |lu6'_x@Z2D\Mnsh=K{ީ;xcUk/QM@Bw6eQ?=M^ D`&-\ #Y3]% KlLa26YR-W C"W?/ZeiɶGbdp6s{I<Q3xT#.(S78>#0wI*d"S,J <@|"ho4B#cwh߈tCwRp_ipJ;k)z ylE;N鹍>ۭ,ȷ(TxzQƟw8?)?aNc0P;) *;P-:mL]";^QV|n/79vqH{%JaGȎymEdz>l ~"XA7b Boek c)juk͘Wn{οw{G -%~ZhY4 )vAm*7R- -2U~Ei[_hS8^t{>?chd1$9Ąwaеh5t i1={up;x6F%T0i}0L{Ih "8S+u\+(bvvS$OW,1V>=i1m$8TIPgʛ|J  :sI ^zrX^1I䤆ա'ƺI͘1_\`HxPs &(*$h@`iH|1U› +z9#@/q7Sv$% Fܺ=GoQ4A)D]Q:7$V#P)MRr阁$u?-J{Ћk`^7.4 V Tw~\{T¼W{WdޣZM4P5)ܧu2S2[{]:Dƨ~;ʹ:+5&SӿwG@:w;S U p\c4Yj|LtEwn%:Rns[2]d*7eȹ^"~WbUZ#|Ml/3XdYTKAwF}N '`K)ѪVo<_:R„ _\gjOgvU-YBs=~(۾;uܤȖzGh&2PN~-˯T&|[cFOUcߎkR&C%S!ĔPl\wNXJb:fE[rSGnMJ;-!/I7%+ըg 6gKh¯s(N|[?ci=Mpdh&P) O(?J<\ %QHCFLwYDKwl4R8(6eհ,(gSzy2aWL.^УX7 L] 1]')WEͬ$ga,il.s毷I*L6?'T ·!.,ˑeThF w˂N]ӼBV$˵LNrRrAҁĚrAßǭ{4 g2ObbZ#i% R2lK;?9@7P3'3{U @&!veH8_&;bXۛ!*?WímCSN9_QcnRr_v{وB#*{epu/Ԯing[V#s" ̿{o@8i*pkGNKv:>a;X\3`}ojv*hIMooa:T'_x@(ZmOvıǷoIq]qhESmkwx82 翢 VmlL[x {1nB(P&nʛᯕ~p a摉B´7U;3)biҿmN=ol#BpS۰hĻh3PnwkA?a[z`e˗v>"kkmbpVGy͵5];ˁO}Ia{\8!nWeBfœ@J/,h^[Ee!1)U;Sʎ~kB;L~M]5=2X?ct+ s:׆͜^O :]vٽz+/_} +Նn}׳T/FK\>~ \nb_@׼z-rguV{n[)ehs^}/ .=;GOZ%FhPul> G Oo_ %riZ z+J*a%FG?sB@,.D'!} NاTI ^oMYIJsM^ZG)Ro`̸jNC+<~Df CN+s׻A#|cVtk/&=EŸC?LSK]X$R职q*"5Fq8dC., ;qV4b^.ńejJ֬ 9'l=㍖-ӣ&$Y V=H</>+p} Oy<̫x_}lgb)rɹis 6v0Yt-+űXe/:ƿW&NwŢhȾpJ ? tkmw1sFHgLrg%Jw[#=EjGf,SE[QI#bxޗ/iw@66.u{kf=4a¦ܚpPOn~] pcCڪ?ܽo|gJF=jf"3=Bش倲%$1XhCJԆMuA҆mb 'Dc\z| jj~JR:rf =!$*{PaKA؃x?Y%C%TQrQN+n0m|[ԉPDGO::TV+\Iݱ.?f.-5w,[ Bf[zVR!{.%ڶJMӞ>rՅ1:ak@%n*8VT|Rd4oLAڶ8J28`kWmCA`&m-C&՚d54)Ʀ6'v^EWRi@SDޖ'I5\]:D4VazDe_S)QQD zuH+];rU~ LjE.92,t")ɱAiv,e(xy[JP87 "< 5zyr 1,c"TRfI"a"YBX;hoAQVn*X@@AD *ԒPs0,P-RW7{Caށ;[q'CG! ׳;FGyBܳpF1`!RC^H{%:xS<֝`ֶcd {SR|ݧ;I2-sc#e-6s+H*kAvCpj8\ےyg"j|ևYi״E3mu7C[.#36*i6l'z"!z`18ҵ**ت+7Gd+~o =̱w+9wz UܦE无4i{lz r΀gM\L#ԉ 4! ǼGƗۤlCJRa>Ra[ 3i,CTT<}\T:ޞw~tB#)k;)[_'Sx~+<_ޮXRL'\x>1_ܣ@_glyLEI0n5R{(^Ne>gɔROR 9!Rf1nΕ ̻{N64A$CIƜ6{7 )E0f6c)8镒)ʄ'ny~]%^7>H+ ]ǻMbY[8)o5lͦm/ؖ ҈|s[4` R颥Ym(q0VZ}`VYٱi<8~L,ڕ;֍31\"ȴzo_o//mYEIef!ʻ~s'9> iIerՔ5}e]eS Q!bϱgaey5G2Sb)sruvLǬ}O* O#EY&N<]45IEÞH3c,b?Ef弭E R@u9wlˠ-@H^m{U ]Jk:rU"~p!nLQ(YѳPSlD7KCPT{k$zW1zu](u2hU5힓gY):eo`90$^$9QUZ$MmBF;`&maqo_)RQ'[EI% IB +Xntڛ#D oo-(7EEÑJ]q JJ-ÕL[(14 ߵ~N otfU~,8N*:9U?3Y,anYJ Hao#^*\M춆)vc lU%FL`~]U2B>v67-o8m:[,e]Uy26|FP2'Y]@K- h&~@>wd)-MkJުA4l'u'gMiG/ 4[[݉Sonrg|v}437jY%wo3}H}jqʐ.OPUT[jS䬀B'{ǔwk \RƗ&3QVt6h4Js9t C{rViv@$h{5kZ|5eڏǧ-Z;š |Sԃ$y j ӏzA ުzdvDvQH}`R!M>PH,d,Zeɝ*QCt.vSH bY#)ey\l! Vܛy~> n!g~. BM&XIS۸@Й52 Yps&G*"MyoO xOVik1E;<5?M'^nuz35 5muh&!~U#;fH#&aVU8y.*Zen73}QV#;V983'vz$ b7JjzWeyϪhBT5x5RiJ bmo]iU#&Fu۞^Zʟ0m|/BqW+=.w=Z[5L{g bTV~vkg RP8m,(o1]Yœkhpk-1 sA<o~a1h3eVq!K͹ /By&; A83Yrkgwv&cXٚ'#镕7$bI~d!j E0U6/"^]fNٌEC8^􇴢 ^ՏxV*)o8v ls\:Ī9ћ#Cگvt?%>yV5tn3RBֿKKRZs'Vq)4=_3k#[﷋4RK.V&~x$o_:jѢc% S?:4cx_]oQKKŽ- G;)j!}t2{ӌLOM8Te'֗1}%c"uxͥ8E7S)<. 6|!ՑKmڌO.o%Mc;w RXO,MW8u0dd78vcULO3緢{8+0Szz މO fɵ},LPT%S#ܺ;нco]lkړv4$~9PNgҒS I)v?BEoVdyD zMJVY,l7'CZƇ!Bޟ*`vc_S(JSOzjzMgnwtmw BawkN1{Bl5!ثmV NZBJ9 ~[p|(Je^rG~gkXfW P] S<9k=vl8 ޲يk/0$g >S9*ImS}p o3G|iVPF j@4N@=挗Y|c `#Ahm]Rqʄu*W9Ά)ɲnVzL+p6_J~ES?'2_T_;l؄NoE)_Mj>xN K᷇y{bYsMDxÒf#ǬxbPr(?I g{}'3kp#4{<SxT ٱ<(`n{_%6,U(S!$V+j5ޟAI\jXy[L:6x2|saԊMT5xNb D(91tkM?Sfֻ<}G$pN6E5xe,/@ *+<|8d:"y#" !o/a RD9noq x݂&[pSbXVN+M_JrHT-ȈdMA\~vr(y8]aS{ RsnսTIغWZQ"}hX óVl^n@P+= y*$[[2Ƞvƾ2zHAkվhE)uKk*rYC-϶q;"4v IKN$tƢzA|G._YmV.C'\'v(ʲ !t T0lE nV.,Oxr*Pa2gWc7z-,FWiS L>ڸ0aD8&.DX@tMY8YDdunj aY;* t"9#}tѰȡtlɸh%+Xjvn:r4ȵ| cD֤>( Ž~Ϟ&(gVj:ɚf `YqLfn6l[|ɺ^^`UŽoX @Q^LԄNX[쮧[]^ jE}k(-V<"#,uɍ$x_#K٣3(ώ.$kχSĚ"rֵ]~n#n3)+Yj!S0(`hx'8羕a˷r/oʨA ~l.?##ZXƁ6Y&jUI3wIhLlɿr_ڬyͮddt!~hv9ExTuUS_+>zΰD hB4. ZR #+`xMvZ?h~m(FS Aql&R/nVs*7>Q1=a5,?'"ivܻ_bϫY? 30ץF]Q:bsYF>E3vS _*aR4PRpи889c:y{%=ÐYAZJ~VQ\D3{~)ecWiOHntBCHOlov*W Mi mDUY} pg~d&܃J/4q#T)CN3O;i~9O0E Z󤪘/-¥ lP: *"ҧ{uF RAsazȏȺ  ~!m9`JXyZ>QMΡiZ"4ׇWJ/q+h|RѶl8 b\KΟTFn@R !%.&IO\.Fd%ztq:$!p2Q?נ~TI x.wݦ L 324)B);MK:ȜtC\+$|Oٱ9 n97t5#xhh}豎mF1b68#>AٜfYg??$YS,dҜ2AE:Kt2k{{M%`v9MPvBlr6֋Ilx#yΊ7L(8P4"%alI,u]d×ʊ[&׬YWN>}~NT5 o'xY$ ႌhrE`Ron@ IMj/-36e$?h&T!4X[tϺ+ѩf}T~_&k31M84CFwKf;q9!q-~̓h-Dpߔ%*/ kw$~jѡژT)|e|>{o"!QWo Ql{o\B]6<*ϧWmNͻReJ0{G^gP!x R:|[deV2l(,2I('ILƳFe=`B´zbM7"ENSNt3S*d6~!9M1E>y=򝢙bY 7A(Z_z mq\&}Ō}]~l+Hug`qaB3р.`ͣn{WT5*{jt]>kf%XK, E _wi⣠*o:)GOlZDu *@N k:>]|w)5fe AED*_/#aߚQCXZ0ɓ?KS[ap8MlI6Zon+iI2H?8I>~Gae5ےP̢ < 7V8s@3ΡҢƆ/3lo|CZ6V1&_HcbCz1XZ` kVE9؟C+ف?P9x|l#5mlSDgGV(Sk2d>񍗱2Й,<\8RzXYս5+,sNv;9ʝ)?ą˞xAM u]8 ;T "`lEo(^-&t yS+Ob7oDOdj~h(sN‡ 88q40>4_ݾMz±x\+w_;iŽŎsdXn4+G9Ɲ3dN0+#;`wd氃Am5!"|Z]`IIeMU9'C JZ=4՜|; e=7cWCv\;]X'*Eq]ќ85iDNey-]S=s(J#!zphF<5Fuq3do$[UJ\{6-Τ %^X[IwH/lvH#9/ZtvH+ޫ:+Fa)~H7G)WRܽA1D?"޶46iY6l~؜ӆпsaoRٵ!5ꖩD W灉⊹qE`33BzY^7ڣT0H A:e"gK35h=hf4 !4C`AK'y/UKEI< 2X\7%n`S\1"KJ*Hp o?lBj)>o:sAbL5mwytعb# P5o9/_Ql;WE}υ_p#=`sAN1(pa[ 2˸|d2s7XbP^ 02b#f6plϻwV_50ܰ75MU{ Cc>+춍a/fܦbp(MHbpdI9$EY7!H*$OU"/a[a5NuZD%lWze-wL FPlvIvNlO|!0? q:rd\\N)q>o#x;ƧnIT]bU)' g/fuxCIez@l[9  y9]wI-ӎSTRLbe 01L=5#W]1w ~ 'QxXFw9{0'@f"?VfRSZRPJj`b釂@D$p %ȡޜ󒕗6^Oayu{;,d5IQlV A &zZޔJʩGyK)?.'e?J/m+PKjT.yx`'8ļnaZDOH鲢Re kY4b X *f,VSXd@j9.^pAH+Ѿz:8Agi;v .FDZ0 OONMMyTa_6wiHTmg/oO4)~T$v rvH%&qwR U@h#5/(=;?p~-SMenE/.g4^C3IGaW-k3SY:M\ӓX6 \71"6cgY)c»ma=<%dJސ|XDKǒD+P UYb^?2M8jIDw~Z}{F]S:ISyz-qt)HZ;MyQe1|p>BM 0N dK ~ə~B aSJnsg5{ b]@%a 8E</ /{ёAtb/C %&@`Yh *)^"lա:zٜw^&ppW} I߅ ŚcnR'NXxz>Ul:emYhW&|SnNØ͠J"Yٮƚ#tb~zQR!i7*Yb? D5IHW!fHR>+Um&A\WcGl/zо޷>c ğ?9< 읧sOO#ɓc&I&zI񞮿]^+8|oiG.n2 9PF9=}DW5+os#F#UE@_8 oy 0vh< _,q%RzAjo)8"n&̸,kPFd/Fq=# GQ2~m쑁@<>Դwɦӄ.0"K)IHU@~+=_o5^q(:}I`}bp+d4R)Uj>|ӟg5r~Φ/TInn>u=%ĔgR%vvTްlo;eZF/sSeAG{<~b:'E)v[1S(?Z.VX?0ZN;4y/y>-}v V¶c¾D2D.W:8lsU M$4R[!NWׄ .O^W[9{hyi(?Secv[Oޅ^ [v-5wߖ!zգ#7թ9FvГ ǧVZtl+՝I0cž@k*Le!tg&UƬ4Ϙᖄt{[Am[%i]$)9w/bndwO]翋^bm~& Sդk(;Sh=cmsn/S,qK iT_(g ,,>܎9Ε^4Hךˑ9o${RSñe <&yl=奢BiLES4aȦ!LBژE%6[>Icwzzpo+qTꄼ#E]2 ~"V"J5Ժ;٭-󱭃Hn7yPZ`0P++;jx"o;C?"%+$daG?iٌ;[}`&_u9|=[);IޭnCnr`SU?tX\s#5y_}翍}`ofk'DZ0 7ֈU:AS1t\m|GNLQrR_ ; rsOQ,gk*ɓ޼x?Ϧ.U<2觳&s!ڗ5Cj( ÙVkk򻺐&Q=b1zwEY%}wF*<3ip)FfޙIW*rZcے'4(Wg+%=YCSP8nN3A[6>\=Y) ƙs@h0J q 0vid;Y6+v G&T \Bw66!vDNgmӃpSg~sEV򺳟xksy>!j vG^']^5Бpu0^r6 hL%MhϨyCR4цrYW%V5],"moəÁ|Dc,b>)+[eO߼7#i묰!&jrvP ;S <4䙐52la5 RDV>6A(SU=רIK?xh/0# ^{;3edwY!xr ,/@gdIX rՀ4€6Z`B*Rе 6 ƺz}_m?r]S&3sO̬榇9WиE:aMT{Rɕ n_4\QusZ`} k<#4?pa;7q|"R*E :'~Js>ۮL_<q7jk X inD?/P\T 6t|^e?Mhu`_sۗL04PR}bDNSKږ́lZZ! YDZaa[GR=EwI LJe Mq(K7 M5އ b71)IEX_h"3D;Oeg0ͲV">lʩxl@7n36a֞d7}}>JƸ%ξԔDH 2*"|(ʦB)I|I4: P J`EYT&JONd˔A 54)SC:E|mPFo8{OT"%)7k<2PpP6 @(e3R-h)W#B#c)zqϩ:P;J1"kRSo19EPʗ!XʨvD1308urUgP7\gfRgVۊo64  rcJ;e;O|VJ"3r R=-c)l" kЈK7Ǹʊ|dƇMq\RAs}<rW ![24-f/'up#z6m1_EM=>&IŨsTz|&ǽS>(r4e[)쒢y;C5jOL2 yADc(@{:naa=ʰ0GnhWEXw`:L%>3 )@x5 P[¶]2ljvJDGWP$>E$Hz{MGIIg`a0GSM;y'Q"55/?< c;#&Ml}YXGQn y- )R ̪@G L~Zw%LH@z4H-rcwoG(\chF{pU<> %Ѐa{L7yԡ=|-R_Rf]9,."sBTyn.X̩sZ!|ҤRtjz&=88>1;k`NTR]SBA9WHf5SBHpՊ@O =@P1`m5N.}Àw H7jq}NsWc)<} R~Xi]V 4sEVo1LUsig/Bs .?-W:|̈́A%\#7 ③S@`[~=mY] @=}wVw \^vS 9#ut;Q5DQ(D q Z-/e1I0Y1eH^F#=d_ \O5LTo&7\*F" N!KB+]=858L;"#UǖXREZ֏r@Qs/@IܖIydӈ áuBCx#}4PzG#}-WB}`ݎp 'kr(3EY5 f_ j}ͨ w[I 4N)Yм!I* hF)u;H$ͰVˏq=Dro$kH1BNi?̓MwՇ}4  bR4zh (V/ۂv$7$J!ެ>Qؓ޿ҝ:aHR1T9/kʕ ypP4zm()doH᦬i BX<6]MkUj` I 3ȼ֫T_7OnFȑ̝h^2!\I)3 :,gGl>Q۞*((>@2v9Fb}} ,`DuK}I\)j~OfQ#6`S2nhU 9_jLT8)S(nɺJFJ!%aJg/ވ!v<,AIu8ՙSQoHp)+o?:=Cew0ẃ^lMHBݨ:Σ&[<4.l'x'f)bk]"~g|.V'ePwk'?Ifƨ1`D [vf]J(J~+LEp̦n2O89Yc^CX,,p)lkTcT7FI較0P} *hY`\H"uuwwXj>%>opv|\<@B'沜 F#ݛ4ņR*B KNQ5&aAG}?Sǩpê<[Uz|u$6Q %`Ap[f e+u &T0~^FBo4[:p4_DJ{z*+gD7cg[Jə:_rJIDQG 1W`;8~h i2-.k#ԟ$X]ZZ6!m}kbNVT}uk1JCcIr5~E$?c/*DvCEMn*:G\=>C C;wr`zOzxLDzE/FxdCyI _5I#~U JtT7,Λa@VzY6`[$6tVAԐ,Ws݇ﭑI>CAֺ[Tb ;ЅG&q)}}1YBp>mhW:!É$:*"Ϝo3})mf ޙbDa|+'cO ȋATтpO0CkLM~dkfZ6S}4j26$[z{yL?M,5{z>.rjdLk;\ъLvkUNg gS%] xo҇uLo("' ӥՅy"{cIWk|7&yF#iMq0Q_)^Ȏ|fOo$1ѧi]l}P#eQ. Ej sۗ1כ[wk2u+4t'}P1EƮ žkz#fbNZSqY[]mZ)GA\eek|2x>܈AZxZkmϑlpZIm-8(ʎyxr5mŃ`)N.UtqQ'Ig3/E-_m!{6#Qԅeʐ+0QKm"Cf>eaWc qj. [L &`Id64vtfoI eQ~@f@.umϤm>Hj;&EEiJ u᷋yg͡ bnLF/e襕C,6k݅~zu(? žck1'16) @IhΩt.LRTɩGak_ 4Tj+ET;eԾ9k[B~gQ'B=M7ڗ+GT D*Af%Ua@))$[rT%CLh "x^A`q 0 gwr!5P*ٻ$Y !W)dAK+:74],{R۽Bݴh]ot93*} +]IYMZb#]=3( l_MBh, lcKZ\t tݶnk}8$H0X]:\9cy0jyHAVsxbG;ts\ݎoنY} AqG2iȺq+5xrЙ1<.#ۧ]XPF^؏J}bPp81c}7xun5u̮ŮAIi͋^x(Q&ȕnj~zy{j ӑ>剣 1/NC#Rj $՟1u+duI,2܅y>3~ߘ-LJ,ܴༀ[B7kzQU3,.k[l fOea͌Hgĕ OdȂR&ʶ,3O\ql2Y'%D2@$(fRF3-P")Mqrg]{(arho]_()Qa+Mr,{G<JODdՉK)g$U X%M,E}9Wݡ!3-**^!A'ҋ(Z}B1 AQa2KTY 0 M^/g[N, p$Fד"}T} /D)z'rr\ڃxWf۠ByTpv15)yXB{*SO i63V)zG%e ~ͶOeh&g\ ]Yqled[5uDrt(C :3 Q_v_8GMPC-Χ-Z>ESmOI(X]U̐06KT%%zm3 Ə0`E4yRoluͅ&E,냢oFhףB%DPdzW.C262Eoܩ}rVm&L,E'i>L]e\e3z|O)WC5=9>&'u‰yv_utYEG>_&PKeyhf^DrE%6^DQ#w(툛+/X}^޾ha,>Ex`g$צU}+[.rAf w1[;c}96," 6 {h^&Gk&SK^4|sq11$j;j|/^G.:ïb_3]|2e±m n}KvxMhQfD4} K ):nυHɉo&zSoYh[T\#jTG=};v0V$lft:ufՎ!ƾA:hJBЊ!gLSXZ$Ne jdTX~連0$tI@'܊kg?QfA;(A=z2lEAqb6r >7װY޹"7$ԥȓѠʼXG(uNp* K8Q,=[&U#bTkͅWRbptMTЈhV9U09ΫCWm2O t Y'mC&Mˏr զ!+X&#/5SԌt*u,=.AƥӴ izF- syXoREI k 0a3 .y%W}em@duG RP`<{Zɇ#/Wx5tBu\[ V*B;ZY݀ kAN0$^(皕L.$%dn L $]h؜N %2AUEs"kb[vD8 @ uLCk\or(ÅimzZvk"­D*kӷ0͡)M_ ^lyҗ> YʞY{C m\M(Qr(o/bBU!RϏk~'w4rK,#ngaqx |vd-w4KF;x<WK3u̔.o0VyZz2'N준F-7v7noI?=}@mԳh},n2Ƕ&ZJG'5{H5?חJob*kG3(MEPX8" E!(莹@-)_-)/s1}jFӭF͸aY)g? +LQp>L+?A ]P815S-LP=ԹUnzD$ ,^=\1=uza?Z2-u>s@+o˲r8}|߼`n[m-w ~"<$Tz|8sJ ?JrrXݳ;f>˧(j#[2$ã->A?&mpJk.9{cDŽOYzVFSMUjݯZjw l|c+2#x,-Bzѩ}5-FD+]ِiZjzĽ(70v9FNt̫ 0@N7PL(xP{:{ί’wwX *c^_ֱD(KZcf-@,Dvq]NTr+ǫH|߄c7;N'l[$O!4v6 K81ݥ@$,+Kf}^F%IJPOK{E_gIdJAEJQ yEqUf%ŸIP*d_V~y,Ay(z{{ 0':o/ TfQe$gqxO $ξ&^1{7\&+dkԬ0uSz'OEî?1%PK՜XsyϲҶZ$2vIxGL!(شnxSOcr0=n!/TsICZmv7/:Ǭ%9Z8:():6_ ,F3iKEc( N!7i|SСϾ!*k5kEk=9i֍u}pjW> ɮzMo\x 0ܴ9h6Nj7k4-Ve1RސjŖkpC90@>Esq88s1 s9S8.*ϫf8q-mˢckV\'6a<{1`,[uqc4utFb\OޣN]↿twOA-+, ː9+w՞Fg˧3ޏX;A0ihb4ނ7p-}*Dt4jهmeHJ-لMfz:r٦uAmU$G)|tЪlmFƳ#]k>`vIt-FCba:ds3ƚJMv88;hp<uCQrɼP+74qz$(oǁnh:+e:[`\Qb[j.l=w0bBH9nM޾YߔKNռ(/Ŝ1PBIm񿪱>ޒ6=~ګC[5S4y.:#q31u(Q[b|# u$ :ThZ~c:OH(zMorb\h _ߓI&g8ya>.P'&0oc=M=P(Ho];Q/j,!L[q(5s]N2o #07ABr9C]0D=8, M|xHs'}L9]ԦM.0ݴ\Sٕbr{L)#r9ɱ@6PkXJlY+G'kCzho1RcG 37ILMgq4ZRjcsqOG7УNcxn$G?)2)1LoN} ,Y";e7L68di.FG mUƨz'gAQysUm\*0:&}.%+r y CX2 @Ncq%> +b)@|rXRм7kCF-?&bW2@ [ {wÔ9cs.qXrno2q 9!iby[gf[O7Qh]N7tϿRĂwWLbm_akC>_ț&_nJ_oY ̿음ЮPS>lթ1\.[ˤx/PVKV@|-GY:.DW)|HpRz}¡^*f(tx3/'E'?iv?)G{}F1oڊ5Hu)9zf^"8g;Fޟ)X<bPFLn"S'W3O5҄R~/1y"{6\iW,_ey+8eQ?d/ofJX.EcߋmOēLki-Bf$ɤ:߭ןU};]ڕ#vȲI'uB/(?*'yڛkj:OOeQBfmJq_gŷ}k1QNn\1[89AHjPA*QvԆj8ug+Wi|d?+YޛA8tRxm(z-Œ5϶4"18K_ԼÝ60: <$&Gkub֫99lc;D*Hr9 iViScgYށ]Ec7oם!ta1MҐGc&ܓ9w;Ah B20Ӵl3f&=q3[Pq#`\~b)_1>m0ͅ#~.(h=huq`qU#3hRČ^:F|wj`3#P~S_ $01 q0C)vx+iDDf_]]7<)r_֔|ݜ7j}>@_hf$;En9:q)7&76g/[~_SXgSkOP8(!uƝ| '_ >w* ;tACwr2&pEDvUJM#TUłS?/D?v5 ՇP,/!n sQϾGsn#'$Zu'yq(dD~!d?c~twZ3I]ڀࠖ#$G'EP-!q$:NK$MqIZwSU#4ۯǩ2EG';9z&4_wghBaJ̬wZ&Ov&/sW^=n4b ݆R!`_':pRO%D1ޭTI;h#dEẋpĠgݬai 0rGs~h ړRH_k͢{3:ǩ~Urh͊!&/~ZZ2{Pl-EeY :险y[w4%2~ DPr@>Y [smeyKGNڣl奢ap=Tej^;<$0]׿T P7E%IJB7-%^1D, D^wj`pՃ)Z^j/Qlr?& ´h@CiSEt"k,Mk\$Dpfza\q0 ՊmwESyqE!etV\xd .iq#]z\^"fbج'tUuΕm/-}"nR+  /B֍?Mq1ҢQravblH,PTkU^T."$'p.ƴDNF,aTTSi9gV]64Gv{ՂAMw;ⅆt;{Ɔt?TiJd z LOwUPZfB"]E^p=X)MCX1$߃vZ.U2ϳ ,-c aTtC>zT;YKƸYGC Yq]WY^~CxG8 t}su##w>qs*r{$8,VTh07A㺕h$Q<4PݺCϯva/ $ Q@79~1!V-M8+[6zȻ+˙JfZ "+;z‘'oЁà[vo#ZMY"5,K'zx$[d;9S|ٍG: vصjڷ$R S[o#vtƩfё/"g sqy'-jMկ(il&LЉ#Cj]*0"/zX?cwĢy.f7Uݾ< Ve9yr;e͈:, лved| h֬8Tk6Pٵ|9j{[%}zƹo7Zq-'(@,{UE[疿t7b(mu8oO]-q1MH>GQuTQYWEU7Ɓ2Z%r!qV* 9CӀ?msZ`/rbįcޕLӜ$q5{2^m4~D#.YΏTUR.0M9m/ùǂ|}dmV%X4͵.oն}٩ hL|DGl %TC.@LPȃeZxmPZ' R, >||U@R 8CE$ư6}r~76 @o^==ӭ=}k~vSAmM{K,sRӺAWCJ7uOK>c~Ƕܒvg-Vo4*xTKs,?1=Q/L{m@וSy6[v9h5*wf(t KMG 2*4D vh""y~14yPw*ҽ\+Oݦ3 xX\1xKBCh)o}^͋(jģ0δ LItH]ʯ6/^F-!d$kUX@"n`J;y tyShI4c"Dl}/!n-F?4Tĭ6 &|P <%KvJ=_ }8f/JTf`$M1s&!M6JJT].J !s`zn' Wa [Os<~W"?'jT7Rk*r:neo=P0. ĹvB2&PIER)FBKE}"3%AhXI=ED#kj(`ǹc觤trQ\#lv9\"FOfH{>:l.A<,5 Ē![jZD2!8Z_O h[!B5ЈkRmlNȋtjc(,&^'8]ȗ1=ɣ8鰧h>6ڍ T{ykA}js\ OJ\6 d PT Oj-m*" 4mo4o8|o-uΦ&Ae3f.,n"M cS^,1sO X2q3A,*n-s![hMxڗy1* dOI;H!]r,Luz&t:'~] x{x `0f+粊a ~i 6Jk6%i,bG잹G,ʇ.i3!H¸.sh)m~&i)fp' N܄%7bqо`G.Pmp;ͬ%Z"VE((wَҖ|iSXDf m=<0ZE->.~ϹܹE'G6eq>ɂ[].YgՃz'ƘVUu+S:2!ѕNYBl͂TV'CU&44>Ke7%~O;Qؘ:8M,@>XM ~(Aγ\0 nYbbqX&7;T?-kjWӛWqsRA-jLC1_uĹ ٦A_>UG% םfz "G,L%Z-Zb [c<_h%$ٯ%̚ jexєsf]{֓KcqN.:<^=Ӵ1<]pr.i_CwYQF).Wނܲ#M!O~v&HY=Ʒ\rKV~{в!$i,w#|;`$,&N>]74QaG22iVfM(1S}'[2 ~E+Ufg)#>uY׾DI;c'2bܪENېL~Nux,NXccE='MxuY>`%L]PrfS<*U-GPENCyܪ򢊆'oBw#i ?*yIСOߙ B2qlJf⎦:^ս HYɣߍ tX^#&%!0ye >Uj!r19Қ1δn6SXăh1OGc–g~V&uWp!to.D;eÏS]$&Q96~>w FZ{i>h?<ɪj|єX*uWLMDv'4O3QNs L3ۯ|޹&ghN5: o;4Y8ͯ/`y. 1łn;^͒U Wt,]d`rR*urUo+BA[{QUד Y=< =S w m{q H+Qk@r>*0tf7bF1TjY1Rչh(ТCa'{gwo6"|c.o@A<p*+_#I$jw~6C|.+7 +&>̊BY:;(7dyo glΌR9L*'k ry$}EAwru.3K9WP6B45ATU8dUCn^8);3 S8BBfGRTPPfvD]m@fd! in1aVIf(ё]NK.},[aW] a.n=uOc];SnһobŚYq_&g%x(ћbxr!-dn:Lӝ_:ꣂܙrE$UӐJoEKőͮy(5dPy[7*nqdvUh5AJUu+GUf,|?Èu>?a?x֘.pUx5 UUІ`yAuF0c*xbs>/Q5dW2?H"cE J̪ђP1<˱ua_|1lt-T6fK^;mV$wfy%CÜ ~1plT;[#61x_ S_Zm3207\!?uPQ6XHx5>$w`ٞai%+78F}VN7ƇIqn'L:|R+9[OzWx0x~&LZ0ݚ Nx5p b)XX{0F,*҂e("ON^L\wV׭%7'{y^+SB|!7:hwzPkxeNKݥ溶$NK - Rm6OR_ RM$0]mqne⏱tZT_L e>kZO%;h624'Co#k":>L㦼-_9~,yzp6Ӯ=7vڂ?eAES[|k.&<qi=؊,|S. " kbg^%hWpEinIG7L d4_F9ţ6!B2:m}]{盼yNYΎp鋤hH%/,\v 4n MSyϞCsJ2<> 7fڙT[]H_51je]y؈}taTqZcE?7:ۼ6r޳Fh$f˴f+N:=y†b_Q~ua3}5.ƸtFM[J;BՐK!i =ī#ǹ k-Yڮ(S!= L\{ͺ`T4 >u"Q\?|_sOF%T| W8q _!X5g(JdfO$Sxġ_SA_^S>ɯI4sy MR67StATd bB$s]/ʅ0`1Xa.ӥѴON@MA96Bd¡3Gou=k 'V{]o> C@+*EN ۡؾe[_8{ N7 Wՠ(a^b4Hl XQJT28ztJ"XzͶKٟmXBW{nb^ t,zt M!;;#}__a *BύG겔 mV"n//n30PS1e]XhW6IfʺF*WA#sIDfUkk/?)&hya E zw)_dOn*մ0E;a]}ԬOeIzO%S:[tȞArssllC~OWP ˂Uߪ9wLm~=Ff78k*3הcM={f*cܚfxxj E{z< X@+;;j/hqZo ,hkgz6;ȶ̊&1f{1G@&k50t\2JefTm " zR>CGo:a9I}Xϯvo)Ѹґ@sm58Uim?8 zn yAj "y~ ~\4"eB!Ct{99l:1ۮAʩ~ّ,-ݛcBQK]4Ǚ숿m?C; tddzq{x0&} ?D|G(6seTFq!+ВemXTmQtj{]doXG!qjY2.=^J"ѷ [\*(m\qfo=`v*_GX  =ʹGP~R׷%$ Utj\BP1*Qy2He4k:eEW)y(IrHG;N eSDU@g%_Uhf .1)H% QNFJtAty%SĦ7,W#t?Enx)VMjUy?jcpLm#;zE8L}? Z릊Fa !ZZ$l"G}B.k4N2mf:w%{0cnYs$Zď5ⶸ"EW>4uv$7 (Ci`~x"b)^ܗ&nRi~/,[6B?ڏ {~Ma LW4Mfgtj8ˏ(~vf0:/1(1 ~w/NBTP'st1@0>|0f7$?=X H޽t B=Oݳ95:f;-[PYں>ޑAEw;'` m@s(muF 3W2vz\k|~{:xtڀls:e,&l3 x eSa3J`ܝܬc`@&쫾SvPǵG_7!zij׬Y&>=A1w-FwVL.?Bk_uҭǠqL[O%H7ϤO g+W ʽg)E)nL \Y㓡7,-vJB!!r5ۛf.$: K Q_0\vm9gDՔ:fBsUBI`O?}ƼrW #78i4|Lv1<sHFRlnAaK~]2gj S㪍 ݀$,iK8KFg66 *xyvJIb*U[Nr>o')tv! ( ͆ޭSy[c|KCLUFhsB/8>[[!J8`rDQ5) OrD; yQȭZ^/d6\hvnpÊ,n~%T3 -e;LG s$bw=K z&=㘉PLa hY/ ;[ ) Ru)sဏ8\~KQ UYnH5o C./T<6,$d;/_%OM6"C" ^[A7QTH#*D }]잮,F玎^ M> ҔǶ~j2}swfׄb\WIMф'͘Xr M[hNQLIz 8wwrd_CFQ?$!NUT! ⤈w**l' ހz+Ɗ g' P`-*eZV2 J]åTzB2pZzjqǼtFy"2eϜC MBH~ŎdHedQWH9pw9`?A-!hڄA8ruhȍo#Fj&'lHKkb>exEͩrIӹ,#0QI`sqV+ز4V[uztL.CΤκ2&K!=q!-x.kd&eHm.q^&qw A>G)<8(GpyW(=Th]r{uиV{5!\_c!$i2dp1:w 3BT0#t! Ylg`n< lZ `i:r3ǹ@< ^Nh3ܤ[]i YR~Ur7>՚"~>6[#m|opeaǷdqX[FYu6d2Vel%99YkֺC0hn3VmZsؑj5_/W-(Oc&6 ~ډN@.4%YcX`%aUNEwd\*%դYѦ/fI?;7Υ&dGe8,%[lLAmgoBeZ*eP$dYǚs6pw$ƬLAR G~gO+߽[d-[dY(QCqB.3Jg%Jd8KsRɸ]\ FIcκ`O5m-k2!3xSob d YmYĘP'@>$:gXhgpA Lo Y^L "!+2o (P%ghfG!v{6@Ob.]e"a<+9bKYpU7u'bs %%,kUZLJi`&>\Q3ԅX'1NJ,U7[_v/Lp+nuF@&+.4>' VVuv)焟!]m#"wdLB]s:}u:`!Ɛvfw0~`(; J9I3([)+@PEݴݏSAN7w~u|< y)/ks?5Ҵfr%YQ5`4-V́p> Hu^!D6vv,O*|bu bs<1=ܙR-Zjuzd89{xz  թA`.>!1 )9=/rN{uAE QIerR A1ݳՑW0}BsJA+D#6i $cqZ6K|{. dDp!Q~n( uk܄I)f.5G0;Xi{Xu'iqƙ67'b *&N ! Z&ɐe!9| P`!BJFIaD^1V`42YPrʓ@"J*SsZZu5hԤYKLHN]5E4d؈Q&RLL1m>ђ6]3w?ol1);g OԴDzF~#V|_7`xq H ̒ӻr?]~2wq!RxUE/ I (ɊiَA H(m4:U$>D+/$r|@F8\_ L Rbt'" GTaZz~F`VyӬT L(nZt?p~A!aQ1py|P$HerR A1Pk:li݆M[ص:OZ7R_`I/D?#G' #(F bN<'v )a9 \׵!\\GI Uk'F>ʢI:J#EGJ$'DsĨ@h(f1ARk n"k J)m0&BYhAR4 ֧BeNr#dk}F2sC4lFP 'HḾhZ͔)ft5Rt%-J :dIg+L4 ?κN\l =CxOW˒<+,HfXN/6Hm}a-`ph`p;. W-I<ٟDFQj d 0Ss…8TִΡX8^ ~[#*쭩IWetG|1j\MPn(羂u~A^A =A 9]v FPn3RRAAYr7:pI-Ѧq.¾1&, `k 5*f . q靥)NJ0 Wm *r^xބX:E8L瞺Ք† ]r3QW)tM\КY8#m-ZpbT 'g;j9W}tB;UflUĤTTR|96PҹL^ /$nN}<x5a88}AgEURN/28>_jZ8 ycy D,fy a(N, #REe{k!JT&z>EJx<ƀx4"FUm`2F`p"KW~ .7 ʇFˎ%eqs!jp)ksfχpn4t+>;c-|p+Q 7P{{ŷ&粳JQ S+A3Yje "sNI0kJm"ḟlΔ5q/V(n֜]ʚ'\`|0p:3B0FB9IfXNo ӫ~`Kێ FudlVfxW ]5Xl*Ƌ>hRs P4J4)|8\`B0Nz VjF.!NOɫ7AFPJ+!I$I!V$ a^xʉ1sX4Oyq#XmX5MqǍX%lUNZj<VR6#!-ngQ1W#nhgLfJBQ)RF+MeH UR+C)^p+t1AN Fh3 ZVn ˦܎cPȹfE.8n5  sɐ>TXyc!~ܡs>MRekXMV>E%!A>|g_.1~J}7B$UB82>9b ? YlCqh-Zȃa9aPV̞ Xk]S6t}чe^=Ng¿rji427`E:WݾdzLP8.۪YsU9$QY7{;T?$v7n 5@v8 ZzKN ;ʇA' Ԧ&v%HE_ ^hS(R`E{\Nd·!A1 )a˲,˲,˲,˲,qބRӖ;<곹+l5YA-> (ջ]Uڇvp?wpzUuȱۗ5h@B&㔺)!`iCbhz>B0b8ARم&v XT<aǟ'|OmKsͱ $ N'H=@XJyK@y(/EZV6:n-/Sd%ϵD45կVFp_4VrjYنXMueIcv} <|PrDa}Coݞ_l Ӌ WaB0bK^^0| b$E{^WP$HerRhuBX" N`phB`ph%'/匇+c[jk 'B?p%?kUS4j'}%Q̻1l=gZ3i3|DFαzsfzKwK-DTKLZ!W`3!P x[J*3lr"հ%jXg3\J1$kY?>[=+%ρ'vSˁ\(ԭed&Ȧ֪cW8vDT>d3u`њխ{+IpĜs-ƮM9Qm@P du!vRj*E36!A1 )a@Ͱ^(B0b8AR4rza#(Vph`fc^xr뻊nrxsh΍!A1 )a9X!A1 )a98!A1 )a9xB02,W۽E=#a'i9mr, \!WȕM.@FP )a+рjƅߜhk^}N],i7t;[m!A1 )9oQzM`\mrZ?VUI˩dJ~themes/twentytwentyfour/screenshot.png000064400002600243147176754540014450 0ustar00PNG  IHDR>_ jIDATx@oKYX4FiNYS94\1}gsOcA @ B!A @ B!A @yA @ i5mJ)~t xDJi8s#e4۳٬ 7`0X׽^x<9>|Z(>f~XċZ۷-K).}Zkpa(1"nt/hM]?̘x?7onzû 9Oas>0P(  Qu\PxLxiG2%hq!_-A|XsHp͡)z4l bu(Wy ";';C]$:*E =H؄}lᅩooo[~=zUg:C` ^g8`Ji v%sC`S$3Fd[SEѹ{!zW[1x,DdXF3(\'CP( Gڲt#I02 BmS 'ټ ]A½b๒v,  i1nYzE\IE|% Dv[Fd8zʽk~AO6uoRnep8Mf|eDFihɲuA7 8{lApm)e-~L/]oe2gB닜w#廛Վ\,b5$>"1;4ݻ=peAb(У际 ߺuKu5Vֽ(_+BP(XEG#md!@<"y0:w򵊁oʀ" P>'1 '\(s&)MM/X嵂]AoG ᐗrfm-yzQq6 "@Fz[;h!nSŏat*(4ki;DuNy)Eiuet@4sh`JX1r*+!ג lt>pP>[׹jbS$F_ !1f̒%`iDV:/, Bol'w1Q_5$¨O!&.{U5tPo_ie៩AmR+X:f|,aϞ֐$@Fch$9l]B%+ 4-Ѧ+l%.K&KqsiGTu'3p|f(p.7ttvd)g>?^鄔'HcQM/1 ]nҮ>>2rEMRZ)۹IgQ HcRƧ >}vE?>7;i݉8~3P 9xx^C̛.\hh_?ALezl u@)e v=AK=F!OɃ Ðyow4ݐ)!ƦU۶`q? !gcc,#c'o|xx8[!N B!A @ B!A @ A @ B!A @ B!A @ BA @ B!A @ B!A @ B!@ B!A @ B!A @ B!A B!A @ B!A @ B!A eYES&0I1ep.>5{}} _9::JMa4aXV1T<01u]bq}} X2 [۶s`nnnR 2Laz]~ >6ALuA*bxj/~t.,| mK.40<{{{;;;x\顪epyy~V:~0xm~e^ogw=[Upm_!zuh h4Qp͛7/n/~bL%!j?&wZHR#vM.D "WA+ES>|Hia(Yc"n- 4PK6F2h4Fc/g=Ny!ר)j$Mk#۷og 8H&Y -8qf#ٕ}̵2~%Hv +r($ ؓU9>>ѡCHgmѤ2* Sz (6/jvBìIͅƼj,-NJx,xlt s~׉~ܥyZ/..RC6O1GKV܀xn&PP$ULY4*LU㱤$#٧Gg`~qW?|{Oד&W1f| F6eJpǪQql j0Wj?Vx F.+14rl(.XZ^)qZ@.fz`LfiJ!Y( ̋'u [ LmQ` M'2M֢k׮ &cWFfM"ʤ(Pcò+=W3]k3Fv ӍςR;nndO1Ibdh48JX@Y $wdV IUcI$FiXvP$h4CFрCѠggg+!Ł*PRc!NHgFE$6Pp+j ;i, Uۖ=,dVR᪸SSҜXKo4Cc ɖ2lEKbCpeLq<WvKu8àX7]:Mlr"ָqa%`p4PʓrBq6{nvst4f>fG sBru,Ǎ^{Wt,K9ԵlvcMTDhAh4dN:H(eoɜ Y[U!8 NY󝜜B"P-Tth9E̸X#';\_AKYiJAcfGK)8?w) y7RsY{V5CcbY1Ȳ^PK5|_T7g=ϸ3@8hⵅ'1<~uF6>M6t.Z5D'S"_{{Ksh5jV6MV:',e5BVT/hT8886Dž`HCvjiEksm ԢǪlQ]ڵY3P15{u8!#$!\`k%IL= Ch4-ƠH LW!JKVa޿vh 4ei/_\N "|4=Nɱo-P_| wYqubᓻn.4Z.r<\ҵ TQaϴXQPwϸ*1QQz:h" <F Fpӑ-y+TbZZFp)W-Bm⻱sAvI& Co8Yn'UIB_uYcpUDIa1_hy[ub&1h4Z6[㮜5"_5ǷY18.] _:;p:v\=,꫓ԫYqfMqNBՐ&ȸAl4 a5r ֚[ߑ D7o=mt-pAIi{]p(-ֈz# MM p6FϣPM``˃eHz=)p7Ȗ6t^7=0}Ab{UOzA2 wr<`pNu&ޛ7oZ F׋-aB2K Z8N$u-QV韞i>NW#*I1>{QQDk9뒵C7rT~lq(q-\F F1BC&zѼvVవdtj_ & l[ొ[Uxg7p&V/^ފ:أW<?λ߀,&qP.Gh l4~VݼN_@E "AxYUdnvk1dO`gw=Taz.XؑW; tĠ"2X¤LܦPN8Ca8I'Z.æh l4 K8W֜f{4ޚr5 N&wpKƹ6&cUSQr}kbPJB→~E2$mB*j> ,u6.n0_9}h l4 I*8ũ-0m [%gU3l^.Afˡ69NZΦ9??fR7EP[ Y7y}& (AdR. CLpRVe/Z\n=]rxl4*7k;赖5x$.Mycl[xQԅNSRIoxŒh4~v~h-Twd^Xp<6LNbXfa@gy6W1 FamN@rw~^èư14a(=MorxրISc%CpxrnA@Aa^!8 2]/~DGGG<l8 Y.eY=<<}O?@}q9MQQ!]~{Au]jf:~"u]pjZ,vKJ):wX* ڶ󅑢 xNQ8$8    HNs/yˤz2{?9f{VUGn Tn޼O3^sLeÇ{#uڕ+W޽Wy3e->#'h=x@(^³o!nݺE;Dy ❾Յ>|oUM:^Q qp:;)3c'cϟ?k%v!lB`"3c&nfܧ%۷o *WHYT&y 2l`՟ߟ>}7-$ᒸs搋>eLTDf˗S9D -yE]/^ǫW%3ɷAݻ U`9-wBKOOO˘1}Ԃ-~rrOUH3.0D=h۷o{<BKFC!a^3Cef6`&I\2}״ҥK"%akP\!$P((|0̢ af?;2ϟ?S$ O "\7PyOGu]vϝ+x/_Ld"n<S* 둣 8]Z1C0`Kcc4Fl?,m5ؐy yx 4kD nBB@ 0}Wi'53-&Rr̆5oT~2't[sא ceaz=5LOCS* 3xF$3EPS1B~z+ϟgYnN)7HXьzM*,F)IHѿ0ί RpY^l;*όO&q2!]ABI+̟of^VFvdy!߿gSo+O/IV )A']A&!(C!xwS[ ::ڄp#&tf ܨ*'duzcx|;f\72 P(JzB1M%M%%֞ L5*4x/\vb8rªA¹TDGqN7ʵ61<>}kN+H s,[p4r9IZnB !'tH&љHcJQy/gO/0p,93$x*Mfz>"{mBr$Vϟ?/N6`9{ qmNv: A67HS/ݞf$.JdG/Ba'C= $ڻC!BaAUC).5Ϟ=cZ4偡&f)õfUì}LjM)B5|)>B+\@wI^Irϫ[򍇴Tc(L TRd-L1}olƧ/ⷈJwv BbϋYnÔUPL2M|1q"qLڣǞ(޽{c%Ĉ.!ABG0/KI0@b KaZLDI~lo ) N\p5|||\J:;GrWǧng8}h:1hKy>vz{?a0NcaZ8xyөY59Aց,pyA'&/3/v<' 6In.@ L&Kg(7 3JN@ Bͦ!P|޶d /56V-@0쾬dBv4yUU!@j:x\&l*(0UUN!@۶C,CX/zssul6:} !   gggMӤj4]]]pd4PPq.ƛ&7fA\b>ҏ.eut:L&q󘚔SI)]Ed C @ ~KCXrcFtuj'UM #4o0;u8Su ʂq يC+^N7Nb #=6/ϋK˜8E7"d yfG]rO"!߻gCDŇJΙ,KhtAh4`ssf/Y(,[*̺.K_~-L d̷`$)D൮c|}.b_ #e Y ~WT Ȏ '@V"McN TL 3A@P?,i42dѾ_u(g_^^+ҘO[C^h(f, c,%sgjqgg T S9lB/Z␝Q cF.V}Ww ϖ(x/^娟/6i肰h4A T̴5i5K$d`XbRQ?Pekj8hA!T7+,c-\^R&ƴ I*By2]D )Ʀyvi̘Dyůԙ[ $ cQrՈΡ.g,/Z8I0;? xGh`٘#(30tVd*:o"F>Sl9c~c=ZF٭s52UK,[+> |:x0}^Вbh4 l4ake5;}ꇤnYEMy0!c#W cGYMJ?7 X,o3_NGN`h3^d eqĭ֘~P/FSF\6?MHW= T'N|K 2@ ++MTiYER͖dގ^v@ǩ:alz(͢5]өKӛ,glqh=l|@B%K4oܭWNꏧ[=ԾgqЫi%\Oi:ndfF ^؈ms[[[o-hO1<tJE}q|g4H HPPH44h$&^ė?;;{yǻ?Ox9{Z} !dCKy 0^("s^}y/-SHm"lS@r hK66A:*IŢB\,: -,YʒW35YX#pd&Cxxz4.A?Ht 4l&ln+fe*"K3[1Of)ԡu󌪑Gg8ak>zH =sWk}FpPY)S0z:dJbVgrOйncC^jYwz AAǜlݺo (9:|*Q6uz }ZJaŸ+Ɵdl⮤-Qǖ˪m"z Qc6}z-4ծjTRwz)h(` %b:ѹڐVkň-'?BP@N?E/ޯ7lZG^sC @VYYko;3p]B2Ba!/B8s~=; n򘄝d1Tѫ,zx@ ! !P.yP"2lZ{J;rQڱBB!BD!B!!B!B!BH@B!B!a!B!!B!B!BH@B 6ʣGwAAWٳ*/ ϟ?Kz>|pq|)_tI:҇BΝ;riÈ7\BH@BA"iܸq<؈B*|R4-?}d\t2b+ًsW;x >:pc|74ܽ{wXז$8:={l!V#N\!R!={?~GW^/_lXva@D݅ ɦ\re޽Ğ@a#_8h߲e˩S3~k(B|8O\dLEQ^)MAA 5GbgfeׯIgѐxI?4!D4(FAj2*p)CM+#Je)fhLWUX7oޤ>?4Fja䢽`MX5- E[ *xj>sVͭ3g/ {X:u}ڵ[tRūWz-+x c'neעƒ'O߿߲X+Xy+$sVܪ+ŖBsoAؽnѧ׸ԡca,jP/^`+&,*v\{fdkӧOU "ڣ_4: o߾U+tJM,+)h7sIȭܪs˗(rgb#GDtCU3'&AO A"Fx14o1/8Q1G[? oz w)jjM 2~a8ETBkl4c r e1mGlRͅ)!!d <۹sz$ct ['HvDeE IၩS=ڂYIKjrQקsiLXA\=3:Ugԓ~n9,kh}vN=+aG"³N-%bp>p޽R <;X GAK?z0FO?~scЍhnڝH?J\gP9[lı]C !f9_FB!a![FZ:zX`s(Z@3U* ڎHM\vιs]ɲS/,"k|% );o&}:r+,V5eb\ Ԃtq۶mJsi5Sfͺ} ;ey,Fg3є!hbx !!5|Y?y\Vk ntX`-^MBqFK`=<+R%1##E)jj˩BҡZwj(&f?Y|dKJɊw:!,QEojw5ׇKF.CI[:QX6׹Hb!kM>[seXj3-4!a9Α<֓IO~EJ&U#BՊt}G!Y,m~laWC L-A\070VNg!]@ߚK4H!{GقY6aRyBԧOu N>/sg8$BU{_#'B:#9FAK@ ʏ·pWkn|ˀQot ѠeKUɪ%'[ rM> gBJ٢pմ`~-S;Au6)ᝰub#xT'hz:P:w;fͩTmW/4)s Yj0j>;)ׁf2֡%L_?z6o1L[~G_,r>^ 2J QZt:fʩ_5ϋ}3ϼ7w9foιwA{n.2 !dn0!#Pk 6@`(A @ B!A @ B!8Ԗ&t:m,zk Xqo߾ 6gssٳg gm65X/_^x-7cǎdϟWq(^*A5'3GQAS[2$7A @ ,+B!A #Gܾ}+ϟo?^@l֭[%sGL *|]&imӧOx;C.s~\dFO.ۤr;59X*wP˗/?x'Ʌ >|W^%|ĉ67hO?͌%GXE"$j=-':\IP mIT%uh-C٭Ukmn/oDUaHh{W_<:Џ;,3NۦTAaSZd]>PF"$~kl$I0j1ؖNK+H{ΫrWU]H%lgsyh$k4Y$+JHI Vw:/qb+=s#;$ǤRE"R^ٯ%Ant$|@73e/ߍ(<7⋛9W"JHҡBE 2Qn!W,$J v%}bp, 0l}(2 yczY'usP׭Ȋ<'"ry~wJj y;iElw'b4)&4X_[#r \G?w~ǿ??N/_޽{~+0+9JƔdk8c yc'sS@ -l:@DZsh=$cnRyHƋ ȭf I %j.W)<K ]5%? ]N_:s=iѶ{Jٹ"/M# nܞ\>}lYxJ],7ײ8^"{QGmX㽾DT`9Szl/m"Ǣ_@gŀ!K[0e;hjp",p^]ZXv$` 8.dC΂Teo$FBي(Z; b%*OYgN> `SAFW3uI35>Kbl(=]i 2Ydˁ}F,Vs zh#qK"l i& G[%%t{nRD䪅YrɽlK+ԐlzZtP U-Nʝݔ[%6r=Ŭxt;{Q~Ҷ-|vBS|o~/o7'ן~o~ooxWKO=U#qՌ2KwDlHWmTS_{{{Iw$xŧвm>wU-=sL3bŐsc7a*8v|ZUcTaJޝ=)]q3:(s:h,5J5yN,к,@nOYx9X9vMop/]=ʶ]ɋ^YBue`.t[q.p1!:E)8̊)[>8Pq Ve Nd\ *tBMpMmckz&>O9m㏷d$#t"#z:J<=3GakZ*;ӵ)%艫ߞ+UG:^ˉ`+۞'x7=xl9n U1~\B0j)vh8 @CkǜWhUHwsA7,[x;qƉȲ!*\(<{%TLۯs^0AXUSgrq8Xx!z5QCS-+uhek oUK4ɶ+5z$P6&H`Z'fWTO'k_W!7VwB0* #_THW<%79TEd!v9XO1<ꠀ8R*.wxe{"NEW"%F0 \׺2/ aZlM`'DKŬOJ~NNDق`Ȇ+4Q_r88FR,9o1m [!,hdBp6we2b@}ߦLsI7C^J5p'ɚBgzN1q#9iޠ7(3B"/oj,^p#6x\-jhl9-} d.g"B|,f9m[*cޫṰ?e6&6Ox"maڤr6F\U콉H]O@\FIIcu5̚7 ePh7-(g`})s!,˯z}p-#5-.Хu{Kpδ(۾TÅ'#٫Brzv=ךTl,`VOVr#+{6Fyh0 X7cקpceUŲی9EsWOPlxSp?Ѿ&&)5ž.-~H[qӲV+D⟉GF jcA\?řDAkh1hTz++1eW"ӴUDN}!F37oo޽~!_o {H4ޫT;ZkMB9=m=&޿]I"nASŹn?Xy&´~ |_Wb4W0Y-$]^tG;izw?pŲss#&d%37BJ7"δ/3(*+)MpXmcdJ7=@MﯧwT<~~N[JpTt1i06 \0Y4Xʐk8tG[aݚW&c,zm;{M~=N~g' HWi,ߵ}yUwC->W& ,X6ONĝWyD xP2p>Pvxyk['X1a,,yaK>4W_'icx}}(d.EY#Ϩ-<'q,Gjtcbc.R76H8Sͯ|YO"}SI"26ZL`\ {=qhScuT> ? ɾ^ֻާw#юe^0d5`$dϬ~{ bD~$f͌m̰ESMD1z 2Sa{'zK0Ѓp4D%4Ȓffm |&>AeV6Z6Ü'ձC-ڐzˠWF~Q$, 引!"8'um.AL_o@z/ʘ{Os]2 )d<`# d_ߖkYū͖ѯ;pfYXGb{L=M[Yhkz%j_v>~Q6-,[$ە&j ݍ )iat 5n&K>[~gmrR"RҞٲ{C}W έ=?t3v=8-2[Z[q'KI~6dXI*x?<Ň8J3gSFay@jB8@GM@qCƘ;{qB>w?POp MX}6V^yuye[,cڶ",&-?E4hO\gw3vlO9/K: ΟRkMb~#}g%۔" ߕOQ2hh}2: Sp,FWd`&'6qXk-X5&ם=r I2h s2 였}9xh$<0u ~ :~K23+6!?\<-a,<tF kG$=S:xIy*JO;g&ѓP8h6=XX68$ /F> \20dOsʿGT淇?kIӺXpF1$_hfH5eEs'X$B(_3_.?ϧ#;"{]BKD"]imURjkԚGU);NMh&h }wg$TͷV?ؖcr5$MLwF)>t1~J#~` 'D!$B mHVRxZk%:?܈nj32fN3X '=2Ρ57io>|;ٸ'GxK4{>s@/˒Vbl:^UsUV^x|@0Y%{rc r;bzv̬q]{F#ͅAWfCZd2W5t>8| h-fS' ] aGN1y.G7_S(h%IEd}ѳ<32;HHO6 6<')wP3 ھTCX˂FXޔ<ޕSn&z4Alن7mP#@˙~}Gƙ6%pCELE\xDN=Hl^wOm QAm2C.1ZTsj4 %>Bۉ??݆%)M,! Pẏ݅vG@2uT|tZiH*Q;" rYE6g}vDv۩iE7/22+| XbVF%Nln/JfѼ۲X$-^@+ Vwh^ DY3&V9LKƜLm"觱tmWTwgNBipewNqW֜L,Nʄk2%WPp!;BSנƋ~5fe5i n˲h&7![bN ؉~^+jzB)F4-{9 [5Rpk G7{tT09=xyzÑGɌ-(͙ ȩ0ѫiA>1F}cFN|!}|`Nt}Ɩ"}b,'1?hR(XSڸArcroja(7A/u,B v˞~;fBVO'\ wj+֓H-XζΞFe]QH RV-sIȖd2d;Z J:8nb]Ɯ716n`c?_ol!pD9i:>pוF E%C^a=~g[DVЕ&}1ؒ&uj{O&#u~U6y.~?Qr0V [[`smDn$]jg 1LªpO, yr='DK+6F\N٥x #$=P]9gKSsf cJ?C:Y LoZ Fߥsx{T ◕po-:eH6FL6>NI!tS(&b2V+iQ(OQle eY5aϗqmmԹszY/8]ir2N/<6OLü>dq)]k:I&oLf[B}e#Y0nYqH`ཚk1MUbk`>!b 0|٭7yn%rc;(}2vR%VfdVuECabEt@9tw˓ w {{z @/$ȏMz;JXfQi/2wdbNM%V^ K@3ƘZHVtiHξUbLBH%$T\{-t"tT^=JIm?o?2q{! s^cKzS/9!jkMA!ˢVW]v{qL %?md+LnXycNVml4(reHe>sw]V˽=7. EZflbɘנB9Oo#>$=8X#Ek`e9/w4Dw'B6>&WD ;+V\{4l/l/ 9 ̓o=."?mg% ڀd/ܼ>5KY)=?Gۗ2~?WxZ'%عDڌoffla!yS!ecsN_99`IXK%5HCqc\F ѠY"EJeG2$7T<>(5G#auYK|R87h_}nSj.Ua" efN9킪xԜa_-ĆZV$7pE AM[gE|h>[#qBF1c1@U~G:0kBcy D-DV7|GC)@®HtXԋMʇ?(qs܎3U92abL}K,&N_>?BEyW0eM_Ӹ>w ^^y䳳:;ۻQ#122ael..# ^KKę=y*i3Ʈ.Dnqj(R׿o/. !YDk,[l@Aa$kf.YF(>5Eۚ,ܡ}+qRsiH6|ntgi|X>)[OQ&P4+L*߄ZM0B;w<,v6޷ nO ٶCHS,F/_xڃ|WxO˃{lY$]嫴TŦ]BO+ŮǢ ry5a Š<*ۣ#r;Ni;'FQR$nkeY^XH; Am #Ē:<&uRMR%MOz-Y_Nrm?iw#c*!%h'Ş3=QַJP/ҪO/vΒJ-{\Iʏl'!B,dϡDgY{a3!Fk|%^,[#c$4)i%{fx(\,&$Mֶ/g+S1E̓Lڂ F-үʡ$([DN_3$H!mx֩BCD5r4*WОC\L={K֐9<8wmCA)ܐB4y(6g`݀o5N[Ʀyu] QSr4k@;/\|ŁnW8( a|'{F?|~W{~_wa F1Z޸/d!uXڢ]s8 ςsX"$$F3R`U5Eڟ 9cV:Bòet c`4Vtz}WJwuur'gc9SЧyC?Cٛ=B!T58e|*W2LuP܅ 3 aP,aa7Uu`=uUij-A]guS#;Ŗ$|eb]Bٵ%ڶ#kÓb'eMA{hcwM(s~+Yr^[w[V%Ceu?Wtf,ư?bU@$!ϼwRW*$rSv9 -v#z4L;0hPpJ1vHjВzF6cݧꃧj/8Zd? T#t(hYȵc[_pm M6_5Kb>uou2odg y9؅)etTDW7ad/8‰i&S>M~!/J|)&YwULNY&`YL6<,H…=UJ`> nC8 0Wgۤ7[+NoStij`'yjk*kjߤ}3=|K*L1)erʼLzE#V8>6XX^( V:LaJl[J33-;揬mXd7 ASg .x?Hw \S-?MrxC*K},O]:$ù>غ%wDR8I%\pǜXgFbF[Bל%aVDհMSױ(ڗk7AVHos4rjSnZ̈|n90iݘ45qӺR hM =1IVNS5Z9f"m:iN 1 ׎_dVq `ϭInsC‘6?j=v&x)MZQ;Ʌ;G zRgBnN&Pl2Ȗ9Ѥ6' oŨ4YN|c.,ne2ؓ ^l;'i:s'\\؍wȬ#A0 jAk0N2='"aW|XXQ nѱNV۝t{!dnO!cdYU1س LG!DQa)q"Ցfd<&# D .)4#?|ߠ~ de=Y09!sxf_؟$*VJ~y }A SzRCh߂+-@-3(m;'o{NtPtK .yV#a@`[lfX*ʧg r`ʙA{-$v, Ҹ뫻BM˞NIsJnzon $?q+ۉD5Y~[;!cYȦE'@-_[qo:״ANp#[/eOI\,\ 2=FW#}b]xXf8,D5ݛ0h>9=OL bQh [( RA5:ƫJ:Sj8RȦ%n !xG}Q Ҳ^S=ϟ3Y eKLĉގ,d!yZD 9J89K]obL/֤:)ZD,{-Zo {wK̜99K4nS\]"}0htŨ }-' sw?|_at1K%ɮl e觻sn@[7)rڬ֎aQ'\4g&]z_ΌN}1xQqiud$Y۔Um0*a5#'hHԝ2Ű]{3g,VhO”⬜?(-,_!Q"5Ο,2gS[tnژZp aͬpH,s|XmvO3 y a!mתi-RH3Wkf6Upf#WHWzm*`"o0ꑮ$>yVMz2;@l`M9cXl:d,a;>C fA >Py5exc cOr@ .AhPIx]Ɉn0X "0)1 NZ 7UOS$%Yb`g~ 6j*B_$d`cHHHdt񁝂l.ۇeִ ư{B{B\ EPT 屑Mij `s.==%֝q_m9- ڄq@ݏCY X?얧(2Y1:.X/M՜%@нW !||0{X I$b=ުfClt8]S{:$VtAW^ VXvd!hORµ#lלq5+EZ~j+,1͞:vYd[̧>䱻4U/Ba]Kf,.3~H8.Ņ"C$Ľpl0Q 8l5f1BG+6+[8ò}]rCů݀ BPf$O+<(R]^J4& /GTww m/~{ϩJ?rkYOP,\NJa Pb85djہdΒ&`q'X>5{md&Er;qو6THHU9+⟶k|‚t"tƒM;a)2oϧzM [Ҳ]liY—w'/ZQLIm{)AbtI!<:@[%QYQ5 tE6byG V҇c{^?5MJ/Jcύ{u+5O.bt${N4"iޙs>OYOP3"SLj}څE=RS 3lp2ic)<>Ԍb.-9  W8Ufd{,AZNR64?b@fUq_bCH,aGcytѡٌfղVyki! d'/+pO PsbwD3j&܇ st->?TC%6.ܻt |FgtD<Ү$ #Hw{fΜfxNsw+n-%XYZl1,vY%_Sg,8pͪ"*ŏԎ[_JIDTByXKv<S ,C[EVԓU>OGP^?SyiVv3ǘ 5jXVM+)!mkM /|Ỹ=,^ f"gk9hί~vIUN˻{<\dlfz*V~gWBwfڞ0 iwH:ڒH4Q#,H(wudgdfo5~͟*!lO@.{N(olK\-8#wk,n:+̎C{Q_ 8B`j*cbKVU_y43nS,&m9j($c%3R8$l'*0 7Ud4J6Ml"@+lh XomʌI $FI,:Y~֨4;,}J~ %q<2Q9xyCaY.S:? ߲{?ALJ&Pv88,7A.SK3y~Ɯ̰Xa^?h|g%+gs ۾}`O3^p7Pwhl s8-ⅱ]lAK(pK݁qߤw!}%W75 7m~ҕC( :VOhvl-6eof(cԯ<`kK&v]Za&$|H0v&Ϝ73aZsJ AaaTޑZ=Ek-Vc{v?"ⓠ;gVe$t$k²X;k|X,q'fl_Gc|y,q}>W33'm~j(5W!Awӕeyjs(@+ $/a]z2ś"f[? #pD5{z}g(,)  ٔ,;Tb|Hʰ1d-gYejp@APS"ԫ)|~Geekj ͒k=d8?] ;Uh|L+CmR*mbD;HTt֎OX{W De7_ifNdm" l?veG\dY8.rJճ 'h.{ η?7vnƯ'&׮ C8B_(%/ky4@tZiǕ P<C #׵'key5g"AL3v-㍈ˁ$u7.⇐X'޾Ağ(G{P/ Pq$^GD[ %$ⳁSYA4#@ be- 1"`G/Oicԋ;)O6 F%ْa]'$cK F~lxfe:a=5q's2nS Ek;9QLH]v}RqΑ3@&h2gdމ5h!ѐvCL#BLJDK3^igXF|zUE,#)(.bNN'4Y*2?5f,#]"gg6%Z.2w6S{?}B^> t;zZhT=mE th T- X.G슿I~];=h8qgJB%+A0:(qZmsvuj%|2ya#=Gۮ`H"l0?,hQ*hQq@<8x$TAnՌBg'Ig)[QݛL9;i[vOew#E| ]xW)cC;9$yK sGC%z'VY:˚}ŭRN! 6ް<ˮЎfadwZ|UvadiCơö0% uN2ɳANg,\rBMDy/(L3/`+#č yX%`#ӱJ͇+k= nM28Fxe>ktD+l8z_X۽-?BvкD#u18+x4%˕ڋ1/;*zOe y z* gr¨cРfV C~H /qgNWy2N]a ٻ+dY^Vȶg;-16ĈHL*N<|[,i&p+O߻9f( 2UG ϼ@VӲ<"䧳'8*4x;MO䡗/-em!ft@m3+g6Cl [ 9alɌ&TڛfдXؗ|%7$H<͜$;DN׶Hַ$m g6lH߯:cNC#SCIVxA_clwSN XhA+,1iMk#[ +״ˁ ~pu_:8", ل@~*1A kծK3B,- ݬw4Z-KHk!k2^d]^s晱#wv!Jq SfT- U0J(#3Ҋ=ЪsJ UJ#Oa_jn${&:xidNG*;:5r=.@x .f#-B80<:f9]}Ğ7qgvS!}Vz~g Gm_]v80:3^QM 1(諔`cSZJ1g"{1NLֲD?"'wnqC~" !664 r`~-& uv˾M*ʀrwbgKl?`HA$ SGLP;Z59)?B:x~$H ` k#;4  ,EA+_ ڦOJ,2w0-obhuaʄPVհTDӾ 7dŲ<ÏcaW6!EۍMP2L/7*<1t )=µy."L"{@< k' KArkf\MdVȵe:a5 Cp,Xɭo1(:(OYNP$>刵Pu[Mn@pC\Z>J{u櫮b@18\kpL4`hϏ3\LrxN,m*e(Ͱ0vaN?[x.>|7\Mm~@35Ew S (/p]B1zD.mZEU1:m 68K)6Kx٘$iI'.|#_2CTˑH=i{l% ;sXr%I)jN@^6Šm Leq u5 >'Y@R&MBK>,/ucQ;؄ei> 063PYO0柧~0rsxpp9XM:v_ #iqA?$g|dS#jsҟ` 'u"S%]ǧFJ-2t!ժҪF c4쪵wr3ZGTKٮ|ࡎql2ďȲۉnBU&E7X~?I(yRيjYU>@"aF6~A?_ߎO0ơݲoݿ1I%SyX"~ueoip66g $KJɱfH`I|upf dJLC^[ Hӆ ϲ-[rTn@y(yO?PÂi :0'[1~N&XLB_."t!SWoCf$F:b_[ oN? 3K O'nw5NdI2?Cǐ$'l՚}o- sOߖgg)䘗/`^ե`ZxcZQٞI!Dfڭ=]h@d4TfΓ5VIsע)| Ỹr;lѸ~C?Jv2ńװ<^-_[Pܘ&tCGݛWAܦܘj m -!P9-dO]\BDB7{`v5"WP(csl9? 5e\GgE>-OJ c2ķ>k.FXACF!%l hmц s>[@ +)[:yKmM{4 !~~2K6+cN]bdC1C°hf] B)^9 %.>>!\&4sC-fUm l7i΂Zmo_.{.wE31?GV˟39QrSt@i&] Z&-xE_Q;Z-ja D6dq7m֏H~hܘ5j`%,,PSJ5>PmA1u `(eufʂ1չk{J)`g'zM4@ 1DJ&{U*(13 Um;s |v"B= a"_ko_ s)q0 mZ9m&dvy- NyqZ||_2Y O6Jfֈ$&!u&k1Id7| $w2aabJ+#i <,ks sЎF nCS0$RN"۔-X^gk }9(NDMD%A#~d9Gd# z@P/fuDg>"kJK⥓k EI-yO7cxz-[Sq}c%W4Gfk?=Zژ&=A%r!̱j6 1붙pFiLjbe5%@#)K0 E,W\=ƃ(T/kxcB3TşH3I;Ol6fg SVi=!(216*7)z4UJ81GGv\CZb^52)ԗvwH`I]i()Dyt! wQEr޷wst}_YUKto+Jޓ^j ~ ~ ~^?IkME9gg, @m~yKAUvf/fV!`]} H~+s)OdnnPW]ϖ=gZ5NMV7V{D7*G}ov?JM{04,fiYWJQG@c'ٝuM0u($93r~ע_iȐR nKwHˠ)w+hZ8>\]n0S 9j/ʥnj3dSuጔLj. LTV"a*{r S͍ErmKƐ3<LjX@V&7ϲeV Lurn4;=F##DYa{oSWu__I-hTkϓ-1aStd?(%]ܾ$ꚳ/#ڬcϻ^OytvmHu yc^؝j{C咅 h/ fR9w2lډ 7ggl7#^!/ Z}_X浺SAjec0O&RRH *!.clz ʆחJFBAw*]!՚]umb=IŬ,лriS&1>$3fҠȢ8Ƅ̻^~I &!d$1[Y-9)gE{w3M"mUOl jJ3!N2o͠Ol|/ :oKK:%Y#3$FڦI.R9tuH} ~(yXL_;sxԆ lD LhaP;֮ԋ\7 ͠L @bdL>a.c?IڞUCik^o'&H J3Oe<2oda'J%PB489[ f7 㫓R#z|1Xqi%^JvCIJ-:`]+$Yяq{ٗs}ӯHeM8\hU) Kf=L*|WwKa2fT fl8ʆhnX܁sqb > qҰ&TmᓚfN=\SsTצ>7SU_p3Y9+2hyṼ}䔽R>|jA"M"LZ뿯lyޒݞu$u~vﺬI5~׺ xs{v&?{Kͣl͌0\~C\} ?dzO4L)8YFLo%&eeOڧA+R-߆!%ȑ io2nĽR{,V;S!Eޖ`͙Ҍ @͝jM1C f1ڽxP=J x^dz msoy9هE?̬]_;=A[Tl3kGnc]FdVѐ@c"0rtRm9UU6ACL JI8TDX5ExP-,{@o& a̙rmcf4I[3cbbF@LUzn$=,2ԕ$wHn1%g!W^nNiHijmQўVsª>X33lж* M)-cmȾw>2#Hh8ЅX9LpRbI2y]G:h"Q+~ʿ٩p'fT}ėp;IeXڷbܰm%`3L\َ5i;̮q/sV®~/9%<umҶs\&0ޕ'='p%Zyl0:Y9WGF cYoptk䟎FyF垓}+d;4zC'\6lGK(~ nAjW5n۴{TZ_'ʧ*\e^r`2; X@~њ־Cҽى|-3'tpʻȮ[s^̼ YCn̦Ҩ Hd O8D4Hy3YF840@Ф '#Z(oOBdr :mK~tSQc?A%^bCnJ/}6ldҞ4r'%eUу;8 pV"z<}>Һ\o|_u\m{HQ ?o.JHMSNyc5:rS0|7ۙ]Z6R%2n6T~ퟵdﮰ:ٮ!o`\jqԩ[LnC3Ns!r,n pRcMEP)nmۍ[Lc0*sz_>cǟdV[77d,xOľK=lnci.&c)MӲ@ 3);!,'sL$MW,yl s/33Z3)ܵ$<^ij_m_㻢~H"ڝuһ_U..Fg 9~Hu>|u L xg;d>NH]dsJD:&UHHYC[^k b6 L݃U}WL2j#N"c3UGrRm҂h3>YWc]:Pߊ=AoRzCng{9}qDso^;i1b4ibOgI)si@; 3XUguQt?w V۝mY^X4,?vfl|k/koքned?E !+fQҦˇ jR PSX׳v3U[h˟hw12\|m.J턤Т0)_:WESdT 0(qg΋|9&GF%'f%֧,> $_ߒ firš9e47V'_9O Tูz`==ޅGhdEſ&؟9l4ش + rh BSg8aA%x~?ZY*y#cԱe8="mM4;gN-nZ;HQ6nn͕|  ILP ./=0S$8_HzMar8=c6]-ͶQ/qxm Ӟ#{+3^U~V5vf:G_2tIm7w= cw V 1'<)ƎoUbw8ҵt2pGe{p^b&rg Ez:DpҫGaCt:٧ #tRT~W2%$Vܷ=J*~[.L3&d\aH9:PۦiM siN;5fC1vdn=G-؋ [4O53(+4=%|KvwE"ӏ<껳'h=0j`.ܯI)< }!Q}?N<Ό\o;ɰߎosLKQ'Pj^Y sjce=VytZ A!ߒsߑkt MRH^bfq+6V$ ް۳%TMov<ڛR@̩1ACk $?3SdcήKM+#ljNWiCۡpi c̓2 m%vu\X31M-QƤN~6OeDl.,s)ԼOT}[=Q;'iv-%qs`,9cr>}fk֣!MH^>5QPshEGaOB?$"N4EN`Yd72Sډ'&S,ݥk2ϵ%!+tPuJe){~HyH6Q֙A [c>m=lc~[%/[krWNFs%\}?uQNCEQ;ێXEǛJS$}F} I"I2EK.Aַ(*IVNܹ;ew_eǰֻGuїx`rmY-%#~2^ΛxꆚP{oԦTT8~7u] )lϧ\=lLiށx{#&? D_nniG4$b$ ս1ռqUwt Le(A ^5wʟ~mY[#₧oVm4 aW.4/evOژ"/u$T|7mBİ`,cfPOF=.B&዗2v{ t4I @:jW (().{{M$jfOu%Vm$ ?iŔ\↝̴=ȧ^gDP[CNmɂs cttє#N؊wQ6GMA fv\_cL:X=W9e“6v`/sUs1ao)UO0V!^ěcX(Z^'V36II2LJ2!~W+ϾķIY*/z@bƓcI؆G3F`,]*T<,[Gz՛y;uGL )Ę=Ų؇=tgHB}Ch`O@_>Zmy'/E%6mKٙU vl|L,ve0=r'Rs}UV| tz)X>qS>^o6sެj,)odY[4efi{?SO]֊>Dӑհ7uqgNh'`o[R(_mL`C?ݱ  kzwS?sj⢁4ȵLKgw5S nbzM_+=e7vŃ^q?Ly)R{Lĕ- cMw${tQSbw&y[W0P<ٶƀpZ.9*CN$6 ^C? %A숕ͦQu~GċfSg;6QI5B\>D`[~&@,{aI^+a5 TA~|W0>U UXp 2!5<7"#V9D޾K2u׳;wg~IbO$I`is׀c1 Ov_=DY8a6 yDbW<D80DЧ rpTdKLQ.aK6Ҧ zBF1=ea @v ]l:c!aȞ!5't9x[,tHNfj"%dd4?k16a'{'w҆f"J\NǞ ڠ{z3@ s4ɨu[$JKρ ͯ녗f_/+v^g'g%ZVt?:Gm6|`?Ţ 7-J:$fK.]KFx#5]_(g) 9`͐y$S}[8)7F;!<jյ݉NWN@ѱ< D/h[y >3objj?sB5喁hWq]s׉ Cgc~NF>4l b'sjr:r$:A$-Ϭ Lnvjm}Kì=3ٰ4SSǞ!E:жgFIYLR 8<`5tv21Z Z>0y/FZ~j>'cts*0غ4$)bj*!"mik<ܔUx@!:!cvD}a)0BVLf1|rf,QC1\3Ye^鷴vd>U IOYrE:ϑa>C&=4o*<&qh<3㿄z9 $^1-ΠZEflLv:#Yw+jGQN׬vVTo cRz$& 茑iq_f{nv{B<V&u?M5Ua ђs%J049;R)pqv}{2dQ`_/'˲h˽ ظ PFo`Rܙjr&e!NI-]H1V}1fj/<{xyGhMB;?ȸ>l*=YԦ,ʅ/fA. V8ȁ}[Mou4@љiRoB᠜5ľ5ݦ Vj)R8xu90Skx*Y;ҝT<He^EgŐ&.4:3 ޒ=W3̈<#,W|rJftsdC+ X3qRꊴi`"0Y$ ٝM'SrCLCl i{nZ7Þ$*^%xȵ<ϯI[I#Jk!eyJ-9qvX3̱Ip2SaYSۇ`Lj{f"{S䱖hkŜ>0h~- xgQ-eyHny>/CmgpB^dCr+qq'g"d\㫂n!DvGa>ǭ^zp0bd2u9p/VdO;mW(پIs˅¯Rǿ |5.I6kt>EVq~S!"w ?-69w#*nmg[Z1= 2p/E-{f~ 4ϕy}vc.uFpeR]yzK][`7VHOCC/ D`~o5F~<]&d5էHd"ggj[5D_$,jNbk_^֖WZGD{r$ùΆ+Y F-FS% 3E>t@_6__9nkKv?=Ie7+0f$_].S0WE3mi4^,J, 22xM<\tq9Li9?a`NFևED cDYȈp;ևuQ$&p#5yOy}5?_ؒ6'e9LuK+Qoʟ4+T%b 5R&9l&t ``3rMLyb_~n^"XQ'%ۙ,Ps B ^qv6-Ek:<7!ߝZcsaD(Whtv n)+[s4d6a4p5>+-]"/d'wBԊP+ILid5PaCt= mzy,O]K=qڅ'Q"Ga5R^;G4Ǻlqd!Z WǭZh/ouBF)LAH}B}cmTI8`nD@,swa {m: hSHxs:!g;LLŖ]U~œLj1m'd! 'B6.*FR۰d:fJz7Z7-^̐.t>p_/HzM% E;ˑ "HJ'7L2W?UWuXB`6" Oi)y[s>3l毿0q9mY4"fQ092J>1DQ&$m޼é16уN} e3aS'g1}DƏ='vWYh-˽;dUpT{K #JdhvCtS~Ũ.#nZz6FE$%YpŗhfzS՚c`@Ҳ&j^Ѭ4'r2ֆ ߦ ָ҄[4hFgt#=CwQ i gwkl& ^3e@Hp-TRPqK ᣙs큽Ɖ$;뱶-7 ]E2@@$I M4O1ŃΖԈٜtUų6 !Q'pN5Jץx-8юeי-f)\q|-fsʗsuU3HY]@>y91}i#쥜7CGO6[SOj!m&$g(kXswvsYe}Ky)i`(^|]6 .C"[HKίnYYF C:ZU9dlykHP]+QFՃI(2`c:%y4~6[!R3a_f:٪5 j.(k0SdI'tqЕZu%c/0]lWL3 _b&b7fq_ zޞ־<3x-į$vߟM&V/[̮1&/qcHS;1լ^Vcm.r|!n&7`\5pr!CE|ma!ڜaަj["iM2An;.ZK |魰>o0a\>MOD) `?y?_V.@ȗKلSU^*(AIv7|] 5tJKNC6f7NuNۗy~Kǝ9xS2u,h ]wj@A'i{B澋e$aGBj5 hV&7| l6 6Oh9g,Ej8~Ƅ&asWp [ GM҂'(G*hv(ˢ4V#ː)յl}2fx)Ys<+Fl]1R}R:eMlk8\SK3iicM%u56s67A<_ZaQzaKE)O%(ÖT9À̰v79y(ǿW p45C`fHVLQFvAՖKRzX:{& fӢ;/Sڋ&'jF?=uBԑ-NDjŬLl#ч>PLB,K*hms{z45o曪݄ i5_'Xo`E\ٗʈw_m/1+'rt ~47sZs&Oϝ3`S1G~V ]6ڄv!Kl|/Mu F+O_n 󅄍L~ v*b!T։kN1$zL#pL@Ec93Zq)pbf^wy!ξT̔f$^+IҽJbF$Rj;t;=g!&xԓp a TC:Bi{L4WW*[nV11d`8sЏ̭M*NJu?"-CҲJ[/$O05ĜN΃UeB@N[hMbۆ::N}wcxQL_fM zѩV>.(|1M&W@2d n)^b$_C2$Jrp}YU. $F>H= 0[nyr==<td ̎ʔȭgFpceI9lfIN6"g^Bӎ8]G?2U6H%sK3Pp%T^HcVC(Z)K?|6 >Dyx5W۷ n0}վ|}~[qs<pwfIq]ܸ J>rQGqYY!;kNeu)$)Bc``wfC(bn޾N_GHi'߄v ap80U0EˁEh*uy?,ߢhMB!eH,GUQܟ;,On59ۀzv~2Fp7 "3؀ I<: AS-FڻAD ?Kc_5LfYd;36) LR~kKԦIIiu7{ ;nP`8Սx2d Md^%t^-ͣ8һ9Zz S*i~ P^iM8pYndBvϒ:'~iyM]hXKU:W3u}&fr[T ֽA]Q)HE '% C`$sg?FbC"+O[\pi:=i*!fs&m׏qݮ\RL0~LoQ̀[KwCD= F;W03}9y9-ӟ痬vPh)AƐEGY n㿄0}6!43m@3O)AB-OX^QX vf]A'YI])~Wi82$?咆HhHZ1I?jS$LvY%ߎ҉Dn'בO3'r'[dS2"tpiuTm_$M)_ѧ EGBDI0<p#v=FѰw>ލMp)j)G =ҬO<3t/8"7fp)%A-ھ k'j6۱d[l"kDGy-B&qf'YWwK~-^YoEB 'a]Vy/p;5\%TY ы3>9e>ҋ̾+S!q|LWcOkƓ$9X̱?6[)w2IMOoC{Mj;4A dk:#-G 'k^ DbqSG: QƘ}wҝ{MyHÒ6(ٝaT;g(wI$K/R7H3]hG{kW9U- CZ_97cG G(tv8_fF % ӢHςd 9.c!E 6]x;mT_\QLvUVɊY䏂jG;ܬ Hh7[Eٺay3N? GF@uuE\ !+!->6y&;ٞT~+c&1S);ܤcY3m%}O\g0</ݘIg\6^R_=Pxc$w34d he:o dcnfԤnk z萧]Lffq>͖m d7ò?L m`Mo 7M;Js¢+oK0H5{G.?ҡ=zݸy\Q}t 7'-0*o(3-CNnH?k맳LЛP~*Q%RAGTt:mp1/LV%'$U\J;xlo^@&; ,;Iek#~prKb{_qnh v4^R?"X;;[xsӝLmJ#܈_i:<*'T#و-W?Xzn} r';⻆ђ98(˧ߠˆ, ] ) C450SCڼ<$ >3)^j'}[9i%O9_HdPa;y#g/Ҋsl[Yze|X9󽬒oA0HN)e͒FNÐLH#NԽo =Ǜ{@&85]/QLᐸic2L5S#b4`w"O=$62-=!ki/cD ^NvUE> rs9%& d?D{kÁ!/vo6BUOfg5Ѵ{ެp%Q,fOG!طڐm487cfKcbS7hi`" ebD\o h./P*O6#ͣn) |]="Soz2AQ,CD7#-6춨?FXL@4CFd=fvvq̰+S?7Mʊv-Oz_O=L۾$&ec"rON˻@>l3fO@_ńL"9~.4)Eln`.c! 1FxPV?Jl-sޘ4~ h^4ȶ\ Ԙs\I4 $VὝE\/.?$;2읱G (kMj9N\CΧ-c@ʞdCXَր\˄&<9ؾ;mǡ*x.6p,ΑYtB!Iַty8ʆ0rjg"O_K0VKI(/Y\F\V2J~U1i)73~)k{#7B$ ts8!9 1Ikkc'9!6R0֩%6Wy繗ISIص&ie ((te=Z91K*&$X0;Ŗm^uVjaHT/Y;Öo^EqVtïzhmǝDq)l 7re6U`E WIjqij)(.ea B&(=("7Tɽ93./GEl&$0Xt&}X_B-Ev,Gir6ef69." o>7kF)Xh5Nh:c:ȟVJ!рַ(yʏ$\"`K8ş&+gXoNMzi|<Fe5TGkd.VT} 9ecT=9ܗ\oOL+ S=Mׯ\+IʇQX5 %1DƟh֒ Iײ!LޛZ@U;:vh=T|ǔ+\ =asF6RkL9 IUs',}ʰ2k#ΤZ7QEXY_>h]Vo%T yHaE\uC!3Im k>Fz0{~&g*:`_E D6gY1ٜC|am=i3VRv-zc&RKi{*{ƐԕE zsKC:>?O%Äi% h?,ݞupښ{{4W+Pxz4u}匥`B6I-[gV-j:ps1Fd=.KJ \lvv8[^$]Oݙc$i1Ms;Nض@=%]Vf ]m+=Sr`u}X-G|&y-ěY*Y%qxWޗ-ncdvjzE8$T_B>m$쌆Alfb<+g7Ls1 b)HT&=PqӘ1VlRdԒ/| 27ذfCc̽qwkmPqe]}~g\{5_M,0 𝠒Ϥ\'ő6${vwmLn52N!v`"ajc!iFHK4nu"yqFe~3un0b`z;sjm^N܂+E"É$kVIvN&_ϱ]Qdvdg57W3n-E? 8yÔ(vj @6DRWDܖ2 ~-7Rf<&};#.]Z>A'|aZf{8Xv"l*d-EFV1qZӸ|`D#8}AWM1maEI (L - _Å_=yݥU,,Y*{Ȟuo'ƕy`L3)2aMW^y-`$=*Zg:zT˼ YCVʧr18hsKCzQf,R4) iӚPɼy:"{/WQI:t{!JG~#}$φܭ8^1uV7őyLt8MWR9w#7,wv_XTd w9kL+emM6LcčJ J"1fm/ɨ"9Kfc;h&J3C`NĜZRιTFCf mYSϺN9<;}69s:yX0#@#(S3PL kɃ=!tAW1 ҏ;3Mqy9[C2}N:3 Îniw* b;m=/--eq+_xHDLU/xhX_aWJ _m\{  hLOP混4b<DeN^?a8d&x &+ͥ7|;$WCNћ2r`v8|5\ =z1Qכaa{<^@?&2_*Ʋ:ͰAݰ eV n+E{4躷=3NI{+$D P-~=z<󬎮0mJ!_b<-ßJS@L^1vб9dAfih5͕T^*_4NK۞9zI._22**0,}_gs5pqtIOBD2/>$cn(TAi'X`鴏dدm̼+ 0!n\0Mmb؂R9>h}ź߅>w~ |gkeVV8j﯇t13/0)$d<cS nd>C a:IMn\9d#q5Xê|yKEm뗤1`,et~<϶v€zS2^E~!Tk=mii0Lj`d&X΋G]4rh['"EODٜ%] h;е~y`5X7UkA~6;}b /|Ju$]2Qr4{?O~w{|بEeEtbCDloޏQȉ'n)[+٣[#J\bDn+ vꋓHx@-,O#RqɠPgع`]D~w@:Ѷ Րuҧg!>o5m_ .`JynD2?'|@;gH}n}@=Ya[I;I$[w!տA~DESoL$6b%G-yD$$ 78мXtjӀ4ot/z'h\"l$Q1 ޜZI<fwہvTV8a/,cS _P$n.yB2C'ڝ6[LxɋA I} y}Ry_[5Nf -{ ە'+aƆx'b;gš:Kr ;=40(y2)ꑱXCH'u9Mw!+O>N/Z[{0e_$?xfT[`@cÄ|?}<Xt{y?e1Jc(N93c(GrooIIw3c$7c\^xѦ2a &ڃGG !؍ i\c!I7Yf10m>Anht9Iߥssₙ!y`Onms,وCp YͨzZ'H"Yڱ2Ȉn⌕!Bl Qsz}(B}| 7ӬVbű|E;3Om^U3@- 3C Cjvr6Eԩ<=zK?UWk<ۑ߬ծJg]wdKDusM˙=-Cm3rݾ`vKy$dpx~l47v< Z5#v|Kj_7ILx/ksxJh'?=a ߚIU%-lnxp4&OIS]l/pŠ,xXv&2wD->8#q]Ks誧s+ۖḭ!_f;qX0, K2S𗐇>Z&7e4Z٠\悽4lEf|LKs.;. 8ziۄa̞tgW2OAK Q0Ѻv'M,ܛF_)eJҔ`N| ߕ?uǻöUTW~67ZLR1$ڃU*KwSGǭ`.1fDソ9iAgmb[_JW R_0`m !ڌV ,h ttmaEb4V߻@3'56 O"6f荪cpba e8kgfz6-0bV3˜H#9⼢)jīVοdmæ_LƔdy涷CN6ֹzx 4c%$ [ ޷U10=4)CoRx Afյ YeD#MK+lNV  lJ^J|sCR۟0BՑO#3ap~H-nD,H:ğ/Gg4/}4MwM\lyCO ie^!`3S<I1_>K jw[և$a `N@jl -{dc^{;`q@nr8SY,7H]na6ZNE;|*ص!w:<?ݝo`(GVEgOnw  iIBYZkhXS AGT~R/8 DD}A6IW7M{EL?\CْtI89vt&<$aB a_?90?%} dSh-!Ll%դWַ߳=p+k݄_ƶ{hi¦|ێyw}ဢ. :΁0׼X f9sRԟ":u)vi(U2)k!c<}!;X"ժ8U3IdC+j%ͩWiutM y8흊HT VF57 S󴖙9pE$F&`o( ߖM_d\Pg b0&mRLן٢:(9S!,EavijT܆"cC _5ǻҖs"65l,sW ̬"0{50NHgi5 1σ9 ,1 tN̘W0BoM_^%s>;%q!k.|L"llFܰ>%Nb܄cEF]F+0)p1i3;7Qc= y ,:?œSE:SGq4>jmRBgنm{f;X9юLkus4C;A-G=#0/itK9҇㓛m]ofA8Y?#SjR <IA'NEG:B+l靐F%:%.jꔏi+=]NN }m:|oy6?2v %m=>PO%{+r@[[-L5\6*-bvD}n7za&,Eu U'a „"J.# 9ӆ&l*nM!?6QiB_eGyTuwMC$$E|7npGZvw+ÌreH\GiT]Yp3ss;p M@%ưȊۢKfTIf$BwN]}۶yܶP`]b}|cR֬k1dsbPkH.F`"de 8>:S>/~}kXѭ7RBLc "r]|7[XW6ev}1dJa-KfvuwUJr(eTEjKܑb*oU%2bC]X2/R,wNS'&+H% k:# 2qY@vipXTu%bRegj%y :.鏣Huò2t/ r)X-u tmJw@h}7|u^<.h볨J9·T,oX JfkcgaRREJjSt=GDk/cPp~t7|3&)(w _;%gX-\;4kb2c/͚^q2>[զ%@U^Si-p:ګ +5mI3VPbfS&ՃBA >҉`n֦0@ʎk{HzPe@ CA%r")#!nW@NŃO;cR>"' |߷ ~7_.|}]]B/O ̬dn(ss!wT_%%~)΃\k! 2ܯ{SogZs()!uu,1ay'Vš6+W4GO9L ̛$R ('5)~/eIJb\w$՚n$5r༷&;?XH!׃1@jD ؗh'aZ RNRP־Iq 0³a@871T]5fkS%wM}FJGKZMj~ݻ^YC[e+!9>ЎB<4mekn1Ҡ¿b譊-[_B" PHe ݪc]~efU*Q: 8mkC$w]NSGuIl`F=gA2pce@Wn.zت^f݀$ Hnދ %X8SUP(fֽұf߼f5}͒ ^)6N9)mDAPŕ~˽Odh 4D@.|L+Ϝ}`N7مvۏ"%flP#v,V<78̤JsBW?W:Ž/H&V"던Aa[gsbc N=)XתD$$,]HP\da- U䮷[Ĭ/GDݽRZaЪvNQ]mFnLW)r$yה&!oߒ8/z{z}kt/2.Ey{&^_G0">"F\OANDΘ?>p y2C9D BqzkD`:7}2V"Pʍm/s'W(.B-s⻬pCeMPp0CXFu!ό2F[Up1Vm0ԋm1%|#oAD%u짐t #Ylq@'OkDOj|.'Pf b~Ĕ NoRQ |]YQXe,N av%-\ݬ͌hؒp@U֜;jۥ2ts* PW7ʡONLj >3M0|6˜b mFMg$2u0k '*~iu)UM, ^{ڂ*ALhmV5@``*6Nr6|eA6@߿>_xw\.v|^O|w,mz^[tfH`7uq3Adr3CFŮclgԇcdY(g%GUU5#ӥM]E6T\UH4ix_G[P6$m\TKh& "O*MIKrXKm Y)뮍@GyQqU%tGÇ?Y;THޝہohA=5L1N6o<ȫ]Ŏ#JThz i -c\SsJ4-&*qo.ϋ&k1`W#caVޒ:WK Q&'& Z5Z^]R1}zXζT:%oO}:ĩɱr^:qNidrTau e #ڰaUl KѬ^G="/ߏaYpyyWe/ϗyb jk9TZą;<|-ܵo^-BuTؗz{k]z}omoemRWϱ! `]m r pԖwm`|(-2Ú}ƣ)E~dD dR0$jHp)m.)XgE.9ZعARRƥ46fhVH:&^aEyF~v =y90舄? / iֈ֓QO̙D4 V/%9 ![~GۘvvBg1:-X:n7_a'9y:Qz8 ֎oM>ҡT 0ksH1#) MtV7b"=\í,y_y %r؛"mǚN?i䧥}eoc6~vsӎcMR#Wy|B*V%3@g  Un- d|1Wh=!p|3E&G<'hѢbJ )D x"WŲWk7PHN\y|9M(?2=]O|z|hA2&L&:h(U%Bp).5U}7m뷿vzomyw_Bͧ{}_eպۆn׽Q=lR._χ!"52AOz&ʰ;٣1S^͡[2VIg/1G VַR`7B=G(B*FKՀ7@|h0pWUi`kUZm[; ϓooqv:^///1<ӊ>>]NS)fVH8 IaR[zNsg+Bꢻ6%|iy}YTwTim߷ۧo>oηZUVVVN{m+K$W{mi*49\k[4gWںOJ%ptLjh? =-PflL ʠc~Mђ --uӲ"%1F ѓSk]h(PY:"-Zj۲(_"aJo\9+FyqZ,_7dE~,s2O ւVLo9rLl8thFu7*1dӣ 䓩e4Ρ`2ؖVIeKXaDf. S:$)#T3f:g* AΐW q e@"2Gr޷PWdHzڄqHF문 ,fY'hh9AX}JA6"?1#G1WHY u֌tRAz2bLdh$w K[Gb ;l,>qú:rݝ!?RW< pl~ޕ4G*EpE@4h.ZoQe:Ky:z:ψ4ίt: y:6QbP0E&Vf4 dU#$B} <?sUzصmm}[mƶ/׷arVV ?}2O}uwn{Զ.9g3\i 1vGkriwMam{:]׺-SoyRnoL,}`Ui ԽV\h_yNm[t?w~1`29?Spц?2E|.Mgge.û͐*yC&%HǢ#ڐb~` #RJ7DlY3TDN{hN6crQ$5"SnEs@! 4d)L :`B͟lN#0v0IX8 suPhB Qkt4=w&,A΄nIA2Atqa4^Ʊ^jhGEf.CvS1:TgxEzp4 ljIDTφ;{T4s'}({C.&|ok,+ C HFݰ~`Z0v#Lr PؑO?$_,x<,*D'8.k8>'/iĄm<aF<{MX U['?4y-݃Eg`]t Y!!su3;]҈![juV%1 x0GZc\FkӇ9a~otC#@e%Ua@5̻% $8G 3Q: }nϩ3iĨB0R 4EGr2:4%N|, z] )PD%;'t(1pƁ$xk h  C6Я֘/T^ ?yNat"$y i5+q8U: IBL Z (kL!<\:p @ 1pz$L6K+PK|-9N~x/Oz<6n#Ix쳏t`iN7 2Ϥ}t1% sAyC^\?2y>@#mB,Br MnB@9tes' IE6?&Ǥ/B uھ:f Qa83d0c?|=6rg17y+!ˑVDdPz}L6PNr\RoE)l!BO:0GȐQNXHɞgŠ/#;4@0?K:C ۉPpQn\l%f7u$W:d?6jP G#o9<6ֆ$BL:r%weѨ;CE"K<]Mk/@6zھeOSDV)C%_c8܋e Yه"̐^ߙOC`в#3{咥YWXGg"rMrSxS@. Л59qmf7G%K/[#ƐWQ=4QFlaQ)MqXIHИ{w/ B/~A:?G2j7E_|Ru4~vgL_*%CL7Xl8I#hϱO M}89;x!B4n%^h*C6Fuw$ Dr%ѥ`q#Yl5qeFOWDS$#;/G8{`u854j2//\fjIG~L/1Ut|H7 &EG @˶*lSKT@G+@`.ԝcGvX%Hʡ\Ry.M٦d(fSy*|}. q*'+/ ˇt_h//秧_|8ͳ!/O$(' |!7 9rՈ P%B շ"~,VB-q [9H!G{98H%Msϴ$71,K}WG>(@1*3g5D ȅ;8(ĸK-z8@%o1dA @fc$-:g1+O4,M:B*9ca2:is kMF#MFWK@'/gŚ J5Ohf>(6pBADf30*ۖ^b'~dL5"`Bر߽m=CqJﶚ=()MVG ;Q#wKe J<$'!o$:Z)|ϱG _~$`%ǃlaF{FB<6|? 8?bHDYm=9O ZfF;&B!_'Q ol675/岀1V弨IUKI/f`&=y~Zs3#=:R)A9[ hr@hP}!V,VFA0BԀ|tK!l z,lK.<$%3T@&?|#B~tڏD3"S)S&+fT`:MT84<] %;$hxJ)}\!0(1!Jrkȣ^#6+57EƺuY}ۖmv*M5۲mܣ- Ok$X[kTg2_u}y}.im%@XTY}5+`N: *˾2>oŷ-^|Ui>-Ű,WNsDM+me7f.?KÇ<i*#N|>O2MJ)2Cx1sb/V0u ؍N6ݛk;Q"MrfƂt'TZ8ȉ62 Km:M8X!mV߃ol~H = 쐣GAP{2 ;<-j8԰Ld !>Xp?ٱ&30ۉ|elg呜m5(mѤElC#`C +A0Ř;ʴtyp1,d@\UkU!9r!P A?LnbT_;$g.:6 hԕ~}IhЛؑhTނ R3:De{ 7Բv޳^dmlEwȟy`fBbn[/$Q:kV|i2Aya$d+x+CGv+fmZR[~?Qn׍ũ0@-݋5(i Rpݭj0a:IA"\䘨@! RhhXȑֈc6'13S/>J2 $Xӣ́h>0OF$1n8 fg37uBX7'F;7T=e,J7GlaOS{uf jEh$ ^FxB@.U*7MW{]^eooFr[꺾x-K]6-8_]u2meueVsnG,;B[h@)G`]ͦ]R0/R.Oc\.s){% 2!HJXOQoû4l*83+lFe%7.=#O5xP ,u#k+@ LTJT*ث[U?~z~Ζ}&to}ȝFR_&F8B=b;F=U|I d$ZN kq=dDh 9gh)X":# ߏʐ^3=`R딹Q8*Z f> 2s^rw5/wɘ0*Ifs{9Ň( R"^[)Y@HBsE:Ҋu)8?̸!0Pj.#-$#^5JIuu2ACҤ(#ҁSŭ]X!yf\fT-V>C۟q|("B$$XEbt,xJܦj,XEJރ8J .O&L[ 6$9dR:х!()֒3.+iwN9XB;z&D;9}˕0"|{bH˹}_49bIיT_ Zi+,[sV CHIGj3alD'cz 1@n!|GL_C;k0K.?P!ґ74V" вh 0"@Kw:0T=4IKf4-fpQ2o%B [M+؀~'tG(&y(i䐰QxmM@z4&؃)"B-Rڤ0wHV\w5.d6%[^r:M}~IKUO-#Đ N&Ŏ^5LkPPj"E3SSyO6XU kZKCڍN̳;v$;Aܝyـͼ5TCX1Me0ܱ'Ei  7royEpb ZPohS>3~swq ?hLGE7Yč~vcoFӪf@c z8cݤCuuPef>9H'xs7QSC]W&[/t'Uud\"?sPpܓs1*=&E &!I} ! PQd0pj.Mͩo ʨ(#p N"p4;Q'A =TL=\5<Q ~A+sO3Qid6|i2ͦi>M,Sμ)f&,-DS-o#AjGD(._ ;; ]}_׺wKַeo{]*o8jmwN|vO\ m秧=|*eX|Spd)ni^B~:}nO 4M}XC^ V]շRN۲It6N4?=_~#xr>Zr>2yzy\NɦRbxy~b)E(4ϳ&Kaѓ4MDT!A&EY5`^I8'`%H}PJ1f,/4qJn^{K! Mcdg~ڐUb0Is ^pX bQ]%~MooQ#lomZ>}ooeqWi]{;f]?{?_߹s3E%H qGE2F BmQ9 q*CwXNaF}lƫ BeQRnEf.iݥC0F5IPhрGS?( {2Q1~LK'a07Y(_0ᠵCw5 ;zq:  oQ-&A,M*Ew(|m}FD0(BZ] ^JkJ`D"m o_0>ȃn͟y Hh&a C4 v<3މ8z}D:Yx3 Iw'\ :jxVs2BַΗ]C̽yi__ k{JgGO}qW  !Ibo\"\MBȐ 37MK&Sr_3kKϐ,HO68|! qx #Jd& K:8j%g4*"4j6;֭"B b—zi* TS L^~:|>.&F)5 * uE sl&ft7R1BqSP"V׫i }voufՈmߗunܖusm=m'O77v]\obzz:?_.ۺ}=O-vpw^l-7/ߺ˦j E]vp'~}/n*Zx*VBrAQV8M˙xy9?=?O%^?<\(^.^?4>?=riOR&#͸vSdI2M&T `Hv QYsʭ s jT #JwmMM5Q}R6#tr7 0!'Eӻ6bM0+N䨗ߏdSdwKъ" 8&mA="v:c E$bYU7V]yvꎩ Bu-o~]]Ro*'b*~}7_ן?^>.g?)c2N_|6v\[4 Tq-;'h+A2ʼ7F\H,f%׻@<@~AbHrkNgmI5ܓ̨{f|j (fPw0f"G:5r"8}#x3Bk8dvv`( |(PˊEn!m()uZfNRl[0FD$ag~֕ jEDBDqL_"X"rcewD[6P[ IQphj {#3qr:a4F-]Q̢VfMb6{(c9̊}AbRd' {˪{XmRU n}@OVJwi MAu0M|:s`eBy]}{9l}9bë?c**DžaDL[iM3 @B:1-w͟nן#3H$ ĉsw4b˴fN*vP.gbJ[3u^ p 0$фrJM b|ֽ*m(۲yB.ˤSeºycyj~O6M5}ob'҄v`b4RF8"tsQP?!Mh 1NUȲif.)(q4 oïO>|]Y ln"yZUr3߾TT  qФ&NblHE,jX1ߢ6(&+!D!E 07d MhQTC気Q@%.0_m0zLf(w.[)`J뿠GƝi08j܋@e 1Doמ@v[>݆pyyu-ﺹi%k48Jbb8F>~wpq_?|m`.Nc?_l nsiffQQs6-Ts1dFrsա3^GWL6UR rjJ>N,cJ;*%25v.j\35ޙd, "9%8J~4 ST୽X2֒MI~B*MS T{P t(1-L?<D:00O^$jdًbj z#KbW4jME'\ p2ӮYS6b9ʭ:B~5W:H8eW77ݧ#LgwĽLLf <"ͼiW8rýOZEC?lNjUm~jgV$z`"GU,Q`2-C:R_dj|%%3]rUIso:d0!R~ڒ%9HL"AdkTah9mC`:z/G̅~" dYRYD ӧʢVMy,GA9AFР188f6ЏY#r{{8 @1@GeLj1裉e$FD 3h cМ~xѰ&[yĨl\ڷ>oUk0x']Vq!>.3xx1N,sʈd-cFJ0}%CZ$CDQ]Dou$vMU3DDL@c  $"h Sؖᚰj;UGbOI~,ʬ~'e*BЊLJ{ `T=*z22$P<ǭ߭հ]3f)+쥉@{ύ[Hn8lq5At,ZMcfƏ.^+3\W|'/v6׋n[_,NE Oc\׆H@_|[̷Ƭ=y~vu[O \vɋh(6EœȽ:E$Ȅ @k!b"V"XUU,TSzaE,e@45&FKv 9Q %:6VZ$d:0Όxga?gEU2 fkzL:j= bok:qBGNB)!j_lsu\TeRvG8NPkeE>(C=0c!rexy;h<.qn#Z 2PiB2%XmD2 }8w{0$VN], ?&b:Vnt2Z;XೄӽUc %.5FY;*wn#:~%9V3!a)J t eŧ)GYS}8a)ѝBٛxwR;ւ5mfGkUwiJZ$z|sO;|{jH°g$JԴ^5-xXY˙ͅrd 0yKeQ)VxUYmxFӹ1aqbETyklj.FUa !2) c !9hTXD1Y%DjKs[8R: *(̋Pu0Yr>Q* &?%tG D`C.J*,ѫp*zc:Cju΢2k /; f"`#91#:g;1&OTQ|g q~ u2kIQZk0v-Dw iDyG:fcVQ4@T"U )(dL1%-~e5JBF%LpؓU#jdYxP *=ǝk { eя c8ypo`ZضGrXj;cfM3qdlMư'Oޝ.]gaj{^qa|?<{_ٯ}ޓwCDV NA2!7̬#¼"V/ }Ci29z ^JVFYw;g,**풣UC@cˍR D]okϔϿ٘Ww,[M4~s#XJwo>QW:OF"ʓ jM!1v9J'/rmARMR45*XIr)C-,9L$_sX[%)UkT"dfU056 !c0crl^]5DEߠ:NTADD@b>~}]=ebv}DƁb88gl؏>0i6i!MAAxY` VG^.OC%F׶ݹ\:gs:+ǁYno,Cd]؏B c3;D!kȪkvմ]75MXN$n6D4r6[׵9<[i=OMfs5H(Fhyb%2hL d@0~|u* Z"JTj *%~>ZEi qTPc)Pn&Y5: 2d $ %Փ&@Ѯ1n5TaĪeTDJ(%$L_ڈjjc@lfQ*9YEFy,]PQedEIًA{ &! ǫy!Hv{v|8l?c5e*\ђ-S:0$z +MY+rxADSsD:O*$* HfJѹ1"Y҇i٘9Yv4{,٭6hi_],n&=:[c"7:*f=a@"! ,, a@ed=sTjPƨ>AXm㣊l1u9;=ۦ3皳hbgĐYv-3mc92eu")lLc 5 Ddɢ t7%UF5C 5 Z@Bս 3IU* a6`MekD儺m- Ky-IɘԢ7.M"%$oJJ*rzPaտo%0U*JaD9݅(=zv]$n}$֛Ƶ꺽 1-3]?լiDq7Ā|\ݬmp"f:x۴g'd{xzl vݷ}]ŕ_,I6_zs_yKݣ!<7w{[fG|vܬ7Ÿ;?/|t1~߼ڪSݹn>|xyܾdѯ}BTf?O3WW+} LC?zG{W'ilq Q!PR#[*< 1'&c6\wLKk\^-M\E0u^R~P:%3(2Q$DZʾC}b7,A@}0cvZPfV㞵VC?ΫH*cgy}hp 1@G 7a hZ؏Q"Ǩ>؀aя4,KTO#"J26tAdq6oigK0f\Y@n6-dA;fsڃǹ%265my%H ]Ek(OV!Ddm,G!CTlaf0H *#!!Ó"(PȦ/AcP؝6mv@EEU,f4@\4}q4@r*.!,T1tvd*@, 1/j0j~0C B؏8n64æcPd}#~(7;%nuz,9DJEf~qr2xzzoMgir}s7`4.Mgnl_777-/NL?1nf{oˇ/{ _o3~dyĬNMsΗguwOd=vq>7f|ϑq'q6ᗿt7_̌jv~?x ܗ; Q7]n{{-WOo_n{]yT-y5ӗ {~xzAiΖnOW~qK'EVI:MRY(,t, NBVrR;.{"كd?]^f1OJ3#NMb bx$-([jZ *@Q'vA.0)ϱVT% 3]m5^Tҵ(HG"؞ω$T".QL*#+cNXfLZRJ  sTqn䊁%&x,ET_ r($>D1Aqk>rmE޳sy;x- !" Qu]ihq$kz A!a QM RȆKrහ"1q$C"$QF!Y#rdUl alg|yb;YYrt1ﺶmי\έu]xli ":kyPiRj`А! @dCHSC !V @d eP67$Ek 6,Qgɘ"b ZcrhUD>\ᤵaC*(b5p4s2I<'|@F"G EÀmUBX9𸇱z {Uh cͫq7lo[F7_C=43fܬ!rMbIdfϖЁnE8Y5֝f5_f=/?skZrYk -oݿX_NsGh:_~7`:;Y9//_w:ao7_8];7{lF 톱__ؼ^'gg>b1[Wk{_ȵ}>dpyu^*U<;]f}Ss _rִ=UCO?LL_>~y3^*ܬ$<>.>?+rJ>xB77_0#[׵u_$<<9nN9bBʒҤ5Y1P@*- 8&D=bG0j@0 A 39F(v8ZxcLq:COh5;?n%R{ ͨs!?tqq \UU$f( "@YcB@b24%DKrtu ܢqf͗)8G43%]5Pum'3XpYi/doHtxR!(H dXeRcN#AD&&Bbʣr*"R*$2$szI [w4;I }2Y8dHzA6ES5Ed~KApR A871 qa}Kv}rߏcV@hXiڎ$wruy aaɽzzAd٭7vu3O\;A {iþ!Fm?FVm3^]vΠiN7?ڳ?l.[2//@ E=?s#ʂ{ozɇp [gg+ϝ?x]_.ҿz~W7ˮ[yმW/z:b?{~Ç[Bɟ|~75h~|ﻯ^]_9k)"OĴh"S~]M7a<ӫslvc~ue6KW~sk wQ/G[³V=i  9 X'JPJEYs: ՀnsqU 0Xt:!c& Ajh,Tu59':Ո4Kot I%6ǾN5ɱ%SrF?*#QUc ~$rzUzL Z &EQdUTi)|!03Mz+)a M]B%WJ<*z#JYҭ SҜ.(QDf!HjxWGĻXŘ 8aԄDTXEY|dT ~F":uka஛/NffSg_oF4MiUjM*Ak#%jWPQ,^$z|Ia0=A q/!  n q`E^{8^\0 mCThh?狓D5h"e!\k彈r] ,:; Fau#* 2Q#[cbGFBAU Cʾik%~D$`c*|Te:۶4HXݓe2dp\- Zιvlm4ym9?n@Ίb>srTȨAcMcJJe !c !K%-*~xطhȗ:T%a T  @28v`3sGDYŞT[ u0 LDbAHW3Z?p C:CtB` : #N(5IroF>p`A`߳C߯/_7ao֛[QUf7z㰾Zuc.^o+Ι^>{1m[@GkEv˹L̼23333cL.ٍs&y˘sز[֔?*P$˦qFф{lXs]kVŃӳS"N"zo{vazTA&P.#;???&;`ÿ%w4~~ݓz Q}?>ڗ;)U ՞EEւ8N8ܞB媀H@ {Hxz~5vwwcS._Ɔi?8|4-tͷv_"n`?{q)V](sgEeRUIYUͯ>eEf=|}naT_^\\jhYO –E]V]+JZjk"'`^KJiYT?SII/ap  [o64cJnuQmzxK֏RJ =33!v1mytTxYka:)\7;Vt8xv{O" Yd/L3A٭=,7^O'\3(m h-kaIO1urLǑUp{( xZ;HH';`1\(,ya5ȅ͜D s =N;m1ԅ:Ilݽ%x>z 8!ڂ(UDgQl$^g;h t# 2~BBY.GTsA3qGLgafHtx0[Q,aMq0h̬m=<77?I6Ik&K@RJoH2}$CWq睑>{t]9}]=AA)6`yؘ&BAP׵>J*.Xc?҄ oJ U5uyѵ&о 'Є P46" AK05D(VXRFz*dGFeJ={ZWe&H0eBDYFA_dls䦖0B~bq}rbi! ѴF{;ɸ4oۿw'fa/ǃ`؛A{~MiFA7ߛ~cփ~ܛg[ӱ0W\&&I(9ST몮 'rss u[;,kPMg2#1tRi^9oPM*=hXۻ_We<~_<{nPfIu{|ٓO>ίOOyD`G#{zZ]6[5,-Ϊ9|C<7 x|~=>:b, :<8\i]"ey_8G6M> VM& d٬"N(NU]oѸ͇`YnYp7AT_ (iHړF~UI?DMB~4-/j듩v4ڸJz' X{]Ϩ}0)q؃\8i3@h3彥ZtC,kZά:ڑҝfE5@7Pm+c `(ڨRJa/H^؋ C)kchԆ]_)Cpm!H$} F<,/1z11al0%GJboAÒ Z\u^>_ԓp0?L8_S?&|F?=M*v^u_WU}U{| =;[v?J4N X>|,M}qvY\(?{p).׫>ӓu_0j\>ڨn#zgg/M+희?H|b5 ZVQ=ۼ@%5xkzry|iZ9'zjADO( ЧL2>3H,`ة7Ol;RGB(o+{fgՖST9wJOA:._f_>A{eHO%G3PT 261F.TWFFu Rkex3U%FZ40/E!UeRׄ0Բ<e @Ri ؘ7F8Je]Wj\h1\.6SU R4SъKjRJ@TJIY7:X j QMhr8弉;Qjtz)eV̙>頿5Q% ,s,8 3m'D!Bʃ2JZel謹42v/4Բ4JZe_|Y䫪˫! Dg{ԈjUU}quQ*- d9O㸯@=OǏju鍶+`t{}2&rœ!Y:QH[>moqrï=`ggKFI䇿򕝿Nj5.w|o{_}ԇ{ae*rRVe$Mӝ񖈢:TI1_~0MߔYa{wgg?7{6"l+/Nvajco` 4 Bi`^%xudkbS7Q~yb]n&Q?sGVE}Ͼ/ƺꑣ@ݡ/. 3|9?Y,ꥡ* >a.gq1EE8ߔWgИ(J[I rEG Ee 1Mf[;=Ջz(qixH  ˆ|hA)vg;Žݑ゚ 2#͛LJ>{aJ߹dQj^}e%BI\d(brB_9JOʊxv:R AOtPFu('E{/ w= Rέw°:ÐX&:v{@@%`cQֵLu֜["?Ap!畓oZCwX m>ݘum-o\BZ\KR`ڲR?hP"~s;N #e{H0G uZ 3\YϟM1gxE8iZp`g@i˥iaƖQdݍ:&?J7ZY ڠ/8[/keue1AbUIKD[XkuY>(wp.HRcc؍mG)mv eq@HH \3b_E^Isa33e@s: 70FZ:{MeO~7nh! [FMԭO&uUDKDEQS̍*T 0UV6RQSr#0D^WfgFR0Z 0ɥ. O<.AC%)(J]֯5RJ*ui%x3ߘ5\h- R2e-)2YUZyUheѶ2qa pGJ#ӬRpk#P3Ű7qF! 3&ڷfr Րe+k'I7 Rlc6(\ XcF3F]lǚy2<w^|lp'c&/op}ᓧ ?G`ݏvzU0_Rx[o֫2%Ϟ^\.$AHF}04/Vj~.׋߻_yȗIj\'Jq]3,qa/rFqO?}~jj~-z}(ps)?|7m/X @zpa\D ~1AJkA+F ޭ-"}t_^AL~' _R2{ 'ON٠%Ҝ>bb̓,W€- AyKgքRom6`J xb4s2wwҋic8c.rIsaě1x ~3nZO[;y ldm:[xRꀻ6qC::3BsrLpt4[8fcn }/^ί[\K܇ՠkM}BVm;(ȕ'x1AM$Ul֟ƛث5@r8CK&´_kg`Yc=h@IϪ3*AҪ1ћ2RA-jgg̾mǘvNZikm!̡|74U׬a]H(Wh'mh)u!lb T >?G|P'܏}6Bk3Me̴Fsnd986%v4#s1;dg!ʗ%8VAŘGN-ꎱ.OIwn)e^Q=B2ŗJ+eD]b+]6FV5BM4dZ+FPR䦮h  0K#jd)j)P(kW(4Ơ6FQ5֨Pj@$8klSژ@DSlUUR.@i!84/dTyA"o)ovjWR@PpCDI0w'CB&(ơ#x@EHMp8q$o)gQp m&Jф#8%TXm!@X" Cm4YN gĥpRv&mew@P47͆"T@8Z30h,OB)kXK4#DJhy.Aq˯1#vAy"0Z1tJn.8eHb >&F8B! \Jכ:_u^C"c@,6|X\oZf]6QڄwBZKZBYVMxw͐ίAT x0Opr0 S: #>;yv~)¨܄Y T]ET~gtkBpk1?Ʀ&{ӓ~>ܺuple_IYWO< Frn7ܡԄ: $?Q.W~zy6Dcwo:/a;, D^b & KgsA$ߘ07GE'L{) {yYO6Jtʃ~(w+wܖRVe]xd `0L'o y.uыG_C^,1PU_0rr->2UZ\=;?ȶF/J9'~lq=g97dq'A88;uM7s`t&Wk0l00mMzrzmHV$>C?{t1(Z图# OFF߹E2Th1 >GX_!2M.ʰ*o &D\L/z-%dkL'u&_ٴMXSQ!t>\;PLiz1m',To:Ɲ YSfa(؂݉8%m7#Aw|Sb{xgc5ulCXZs:󲇧4.CN,7CiAwA4 D`ݒXؗlf~N2v}Zo;0kv6I 8H܇r>0qq߭1uN-T8Q\>kt[Y>h6:rqҞI@M{BЮ8{9c]w4ܖ>8n`{2.13Ŀ̦-Tt1)+鑘>[ >?pFkW#&SFYKdQ*nx[@)|yuc !nH˜UsAd Fo:6҂*iPBѲԕ",ր6jΑ3eKWHԵ*ʒV&  uZQ~JWF)$ JSŚzuyUռO21`VE(jQFei 폸|qXb꺮, nN{.1@h+;r4OF(i_CrꛯeQ@EՏ~?'O'Q~[=w^E׻Cslxx:=B$ J9#yU*eyޞQ7 C>z&./÷s;wF)=]V f3J,#Z+7qxv3A Ӌ`n Fdwxr"U4{Q{Fevz!wwqUQkR'Ϟ#WTD~y<] :TEuКHF577-Ә:E-}};_Dt8ǻszESol]Y42FX Tل֞ٮ f91Tnq|%HI󠅇=Vakvu40Wfd 딧@,6 5'44K g̓mWt] oiNqԐ6ݶAUԎPNmI&cS(."k]C9h6v4Q B+:lbC2nKd@ V36m j=mwM?Eb#!0xf=+3hqtYЎ:q D>vswk^aJ0 s 99 qE %ch.g w_G@|g8F2n'b(H6r&O3PMᓠܠ*}p]ha*+Kj%;o@Ū*McޏaetNM9*#RUUUJ+P\H(FM2xDRUH ]VesI] M%bE `VJ+몖Z Y5{u Fk&m4k0 b&i@ i' [g=0&d$x 8 !!""N) y DžLp1 g*P؉+3arj! mg-͕ M#[H]R©@ΧA0us P5 wuδ7;+6wY`eQ‡e+3g6m["kvQ rѶU}iEl lh3J{ u:OwgQe 5'/ί7)eAebYb.ϗ 8>"a2 }eIу3-+.)[zTw٪rDG}%`郧_}Nm),+[\1`DdJͶg8&ŪE\?8P^(Fv=//h+7~'Jƫezo$X_Gy`8{4 oc-YC%Lo۬Y={UNlΎo;{m5Vkcu{n(qi'yIm=hq[KʩEoyOG[~xY$!$@umv9tn!"nD7쥤GOrľh%~N̓OIs];'6ΥwQ9^Ψ^Z唛6ch\ٲZY4@fŢHC`}kآ2*ӗ;U PZ CYg:21SHu}'ؾgcs֬sG.y}&l¶.\őko;Zm'U et?0`om34΀ɺ@!Cp0KR0р P׌܊ g#C:,9w=<pYAT(*E@%,/ZQRFAB6 D(E.AJTUZ#B&D]ӼR XU R0a(A \u%X\̨*J*1CAR!d> ALQLBl4VUU rlɵk Z@eńrMhĂzIDY,7 KBdQ6&b.`4PAttwF#CUQ$#$Dtxq``_<8|w6P ؚZ,j2_.N9'VV^i1oc>|y"<;;g؛bS/e9gۨѸ"\/|9?9r uyY4`iTmjG/8g,rwx3-/(ˢN, A4h2x]ͦjt,HA4dwgOk~z,*jk2{. ^h&[Ӏ7H 0]ol/˼x:ޗ&q^(cZxllM{#.;3FyZ麪wy tko'!3xt1b>Jb(NONC_0wymmO"b'r~XL~ӢrE˅3d>6۬0O'- !Z.wBw=û332ͅnZ.s)9ݴn2 "'3aS ! ƺTREvQگ.ͫP;["{E{)w~wj۲ڂ\WۚG @tji88@BK`AO]-ԕ^(t ` av^O@oZ}q7?挠/#v1: c.ʸ{~#A;@%|Tult0>sx3r!Mׄ$n=W/HFDSjUY@QSQbcBtn nt$j$QՒB4eH{dh]nB#jzEX)UkY]J0\GQH䤊HAJ"5`ZהR6ee Bx0 4@( /Q~$Q~q/"HS!9 VtIi$"#x(mYS`5FP2lkKq[ w5kk61-YAFI"ֆp2BDs953".39ܽw|K7ͣLi-(AMϷt gmEuE꺳vtN WhB@#hDE2Z!J-s#k- Dkbj-`eUɺVyn VyYX,Pk㡒e) `TePIu+!SԔ^ISS_II f 8f#XD!w_;go߮`toܙ~m/+op+}Z룭Yg*amO7+dQ\iM'A 5򪖕4vG][LbicReuU9f2\7}a23hLSuq%- Xr3t]L 4(m@Fւ=ZG }XPuA`F7__gA}h^H-T>n;D| +=Q!OPP.vzMu( }U#⮃y=n--5k!Tk3\;R ^F:2=rnt}#EO&.kً=%{>lg궈#zI#Е.- j[mg[!5F-; ,zn/Ű3usPgT=RR*d 2MQ՚6w@uz"3Q^Bmn0!G]bfNx0>AKF[BPzw$= luէԎ)eAAz#qs&]K|LߨQ.Ǩm{tҢB\]jϊ6J C:E? {wnR5o9āj;Xjh`1j߮X†^+r-٦zqN_ *A_3U6|;t 1T'* E!l|zE uHDGRk $WE] Q+.(,EʽO0"DY,4MDq%Ib"SB_&J Th ))+>2RJ\ZҪRIh*iV1[Z/o s_{ʊ<ľ_}r8=LFa`Y'/L ?C?r S#ov~<9?ytjfG)'cF!U%q~[J֊̆0p<>>}3BH2kudqkFTn͎O㣺&E1:bA7t,y\[Wj!$e1"4jYЫ[U)VDs0 ,Ӭ% *EDRP~RenFt~{wWeY]]^s; \ jYNjI8۴*Wҋm˻+ ۲M&YĴLgՕt з}zٳ!Pj uuuu7 mUP#4G`nAvͫh6%̨9OTzvm⋫+a[h@,D&FLiRUss>'Kfx8izu%جE[ 0xbQ4L@c.NNՋ5H0BV[ѫp88}t Eo7/9߮VDѣ_`;d>q1߾#r$ >ǔvYlT"D;[5jHuƿ$l[af?3Y>*@Ԣ[Qþ3N @úBeZ[jV?L{T&vUU jv j{a۷8kԠ4gR}we.>ZS2JAZ1ݍزO (a7J{ȤZF能 q>LA~OSD[j vJl MG 7_5A1: 6y/n̲Vwwbv]nB{VfagE=E[e~tqߥٱvtZKZa{.OJu=`=C QP$胐_tYTg:JP%b)-TJ.׼*yEtJVXrOjWH(!RE @zgRU0B2]Ѥ(4BBhuV@üaEFy]%ʰ,.C @)PR`Jʢ"0PC:hy.9k! ;:֋jE@$?궨Vېc6'ϽЅ@2gknwK:6E]_FA0\.WqjY3_$l<QbdY3ͻ[s&j;Hvf5LUOpOyF[*hAhPf'0U)2>?z)O'e e>zyͶ2 f0+MvgOnw|nqa`xW"u5ƹe_.NMB 1‡ǃݪN9?93" 1_䢶(Mu{#׊/5x70;*I^_uY2Nyc;HFvv^A5Qo7_j#,BB122Ic, 񝊯Hѓ8"B@ q^f` ~p ه~H}4o87J>nkuyJ^n5vQqpS}8괎]rSZ.vW  fNh?ĒK2݃tհtK dI;`C"{.ؾE!ԥHs{hl BZK{Sժ-i^EPvxjdӂݙB71^)@u=ߧC|B6/sPW;mG_] { ؞m2Q;b=&MI[`*F|u~cݲm1JWYrM>?ῗڕQO9v#wJuCv˂տgxL)9JR)Յ%B!&$!iONkݹ$'~9RE)y,DRTY&uTERIKX~@9uUBJV%a`uTj0kDe@#-ԂiZJ#{&WUͥl.ZFYg2O,7-sZ*VZepQB+]W5@ `ppBMw2>"HcR;(&̴ #aj}jhƭ!\kDLՎ #ZۛFac;D䵒j"i:OSbX&Dwزe p:W`7O_ V#{A7;EO){`/_XnFpj4R(y=)j|OӥE"$JU<̶Jk^ \<5g*Ȳۮ5p8=2@< 2r>TZnoo5aIV3g%O8y-wjE:9{1e2thZ.o/^b<2bZ"B6?ġ^/N?zl0,mح/ݪZkӶ-m41vAPzdi#DM0PV֘2+ӱX&π֌B^Zvy0M:=?:Pf{m'tH`x:r50tsE-WׯI񹇰,8 X U-Aچo-{x2awWuvj;ufmf'']2ّeYiQi7 rdedIXX%7 wP铧O(ܟyfW/|ߴy{d6c {nśK AɠT t<_PA@lPU:БHNͲ]w:jC7{dijKN&YY RVfEPyw`6r,C)}{,Z mۋpPtK ݩMܼ[haB?d",Ż%!O#_O kgcD;@!z-gI0{u >jbLG˴W\o;Ya KxLzkFȷًm0\et#"Nΰ7Zi)O n)d]S˿| 7L۰>{2|^@{z0DG8zM2 g^67 꼶GsƃUw_]HseƧt $sC=uc2@ÎcF=?zJ@f@{7vO_[~aut\lnF\FhJA%5 P(4f0Մg2KX[yw QUmYOChk1;ط&tfP0AlǴPOwYۍɭdP8{Sæ57!uJu%lı}mlg:|Xo]{ wmG!R &*v/699@UgKU-};jAd>ñ8c曨.ߞ"n5ǰ9TRv:"=Wt{uQ:ѻ~!jZÓm[4=hZSv* )UzKRwHk+YޫJYɺBʤ ).k^Jm&I"R!8hby.XC$T8nfjЈ#4ʫ QMSiL(*4OH/ t w0˺@']\2 šrkcj1 'ﻳ`! z.=6 !LӤSD>)L3`HXC BAӪs6@/i^:/:\q@UJ40=@8jnyzi o%/ v~iӻZgYuLKj/R\HC%ZpQWy)̒7TYA 1f"|XU ^NkHiU+l8N0DVX#$VI͹LwuI\|:r K l #(Fk5L=iV?ho'Y'l6N/=f{㳳| 9h<<]dj$OO D!0p5.(GaYGl`A!x%$q -¬A秏}PcG0$8=UeD+[ײJTkfh ! `dQn+I]%eQwl6]WՄ1J8mFn0> A1jJ碬7_צZ¢ch%ۯv|| Ua]Jj>eo~nNx2s 5dD])Bbsf/Ԝ.ZTHGD~[km]AJ  ާs'#gS_ *߳JO>A~AV-SW( *_\;;āNJv"DOݽ~Wz` }iH>kޢٮ3 jݩXwBxT}F~zmͱ_凞Vӷ&*ԤtrRu~\=Sc kU}uHaÒ*z#MQgAt7=ob~]{߳}4}}P Zn@Yݗ5m3 :թDuߒ:66ta;Jvt2Uw!A{KZC#dmT\O.̆հssN"m\3P؟lbu۩O@g@wG ha,I#~NEY=E4c^ԀJY)'E ^_ ,,<5*V7w˓ <̭Dxh]6GݲVWvy֕KL-+~0cj* hV\jà"!|2('"LRA./<ˢE)<ޡ_|Kߗnch6擹1 !M+.E1N|ȷ븬+A% 66z$Zml}<]߬eU"gG*€KΫ$[G̒m<ךmfX@\H^إ Z/7c r\]$CHpZ7(`QS7ue&irsw3zMTVtٓR]mocojɫrxlz c,d]Bmd(2LLg#R=D˫cg⟼-B8=0xCj;Vi ͋$W2-f>ĵMSk?ryMwۤVl\1ϟ}*xu>:.MjIL MevF8߾@8=]W0ton6r%_զcg`r!3we]MFS`\ w2M41_|*>Z\*nߖ BqpB{0'mlpyfᓓ1&߽K0`twO0߽1,+i'H_}pd8 H,?&Ґ(KGP7}Et>1y 0忔Rg.FwVĔ'GS"j7 é <$ji0b_*$D>em{G ~gDo274n vv AJvB-Wrzg>4=L}iCMJ nȺPU&?n;>HAJCBF:oCh`:ajTNs4v.G}(j]!lvkT (ШٯG›ȡ̾ҰE-myKu;аyR&kEG * fo]j0R4Gt8dHq ;~csLfxP Mltjlu]LO&G= VPdsb@Ch'Dyi?QRԊHjZ-Tl-)$Hu&v)n!ql$ [AU%i`d@E 5H1Рcmj;2#7zWպ.Vn'::o,.( pW Fv"/RS"$2˲أ:Ug]WA!5J ض8 Qp_KH+QD$ciYs`g{x8԰P|g9\l廮}B |! سC*n {0iD7qQJ)xŋB ( 0AJ!&̴ o 4]9:4'~?88P1`=R.ʪox:y-:ӊRUn1s-t%efq,!{nr @ !3fL L'-ʟ"L(qMe%{ͅOTMZl2EkX/L_ͿgI`cC_狣3OGO}>bſջtoc7>;rHzN/ Wj9e J 'C$J?6QP* 'LAd2\& 0Nj/W۳w\];`=HKH{hrr:OQVM4FBڦ1 LePPah/޽)Rϧ \mPTF^ydj_ l-)DFgg8eH"M Ee8 Eh4]FQQH$ ڤi}y}guܠVٮ7G1AT&,m^G 5 wF@ j3YU׵\ M Ga0fy(6~=]Q,VEUNl?P<B( E^Ǜ\U*{gơj\@:)6iXyP56o=Փ'益uKZ!ڼ>⮩29T0b;,6v,I>Vz؃^ؙj7A-HhP6+Mc=1RJz:wΏ\l҉r=]n--ۊxcn#uv^*Ս+Uèv\kK@5謡H^TJ* h*tvpDs^E6T>=TkԠ.)TA&ZvYXy@CmT˶atJl ksMdˤB{Ƶ_t됥F7-S}m:"4a4J@qw'Qs B}!l3񏳼sVPBP)1 |]YiS՜* jJI):.2.eZJe@ :QBru ʪV .UJH^+@(D 6KL%m{zh~Ģ 4fx0\#aX&s=LM0%d $r(os`8KH@#zI(TUKA- a :Xd䁻ˢ Av[h.]vZ3*? CW*?hKkᛲo(ȠΔRp-:b[e]ռiZV%d-†]%4ujƄ1[pC|%j{FQVf!m G%CO+'rsu Ӱ`Q?/ݫӟ}'=MyOopۚDsK@Qge+4GE anz8F` 8wpz2=(T2+rQV?NӰA=9Їb]q nW˓PlbfjIFl2D)\rw2=$bdzqW_~QU hmM; J3d(V"IZ9/ BayZr)=rBÑVԜ<٤W׆m:繘c0`b>3ՑvfwqS9ElTC~lC.9:jum f&2ҼB~4"Āмhum!@&DJ,k6!F:Zfd_zgG`K1|<[4U0]VΓxȊIwu^ce[m^8>ZYY*Oʻub(pwEĬYۼSIDv_TuԛIlh0B() PC.P)"*wk40bLZ>N_^-hh0̫‘{zL9 afv͋]JfY*y!;rB]oEIDsSڊ4/7'F={80FP)@:Qy>{@{z[Qg/lAf}nACuX NMRwEB_Lܦ62?.f5Ml߁aTool\OM]w}^ >[wF>g|"M [<~ئ׳ÞEѹ !F@=X5&Ъ.nT_u/ZAtt4PSHU"'UɉFH@ .N BXwQbؼI&R =Nk7{'$@\`NjԶcA+v j nPlRڶ-n3@Tk$?.ko+6Q;VͣF*4^&@_݂~Z/_o "¤PD) (y%eˢ)w<cG7kūO<<?{OoV_\chXtVeX#s(,VXB=eLJ%@gGsj Xydf ޯVe<|'t`Yt4ٶl[*OWe Jp 32^ΰ y "8[U weȮWˋAo*0*9*ϓ!X8Rf<\/p!87,j* SgCfP(Ĩ{mۦIֈ()il  |vp8BZ*ZžmMgyډ0=JTJ%vsw "ȃW(eQš[=./ 1(? -RB^]J=*?8npЗuix:%*Q* ^Et2YxTj_ǥvUHˬst4?yB]ؒJswnc5PjB8.08}|:(rAd2nQ{4djl-Fmo q0Lz `,U+~zsrfRr[~ зt"GX}.3pyt ~9KIYqQflFxA4)W!Ywq^Rq>WI)09M#L Z'm -P 87LR$Jz}㸊3#ݻ-Ch8J,<@|R~>`$k.AEï^l@QYeBځl9f0۫څc!okU+}gG2.׫ Oǖ;dp Jv(b&x{Ү*۰_QC @Y=L13z.`h?zrY +Q-L]UUZ} P2?/3uz0,RR~VΪԡǰ v7갮#6۸=-U؝vѨî@cXKN*aEkqo{HأîYxKEbu`ɚ n Jqݪe~q!ض;n|| n|Pj$5*pi? QMkP'Hjt+OPLѝnmZȐٸYeڅ%IJJaȋ "RH^ E-J[.,BP:Os} %@J"iZi^M?Mfa4 izoYv0l4J1D1F!lhƈ MDPa|n"&\{^rG7WD𻨛 V/[_uDb0}7zg߳Ѥn{zt^j5R+.E*WV"A:Gu!@y!8\HkDRFP'E4!{#D ^kT_\_ 'lcZ{6٪ bEaA0fxKfĚ-\'Q8|8P/wGH=:^ Oo~~ۻ]\?1dy7#h:İF* Qd֞ y[hXL?R2@H*҇,ZϯJLv)<8, %5pH7IV?SbNhᄒ0|>Cj(^Yns{$=y>>LmFa۲j+,5ˆv8ȉBҪPjnK#bd*G\M(E|1sNa x]o7-Ӊ$7F9o: bZ!\e2~" 4Z x(_ƛ,xC}0n0299q5V%ed L, ՚x:t1$Pd&DZ2 <:=~w\jP(뢆IBÄRddSkda4 3L.B_\??;T942bcj\"$T @<fY o3|Ȍ vc'%|E>pb\sQŅw[ 1w+x<}Jc ByZ(%7Wy鸆, d4?~D((J^id}`; ]6 x1Hvt8 {b77.1e.#'3]d63Q'ihA)q f O]\n F(Sfo_\*%ʻ^hJa,|7Z vɶlUE}v>͸ڦJPH ߼b1]) HGW5L0yw/F{_}{ F(BNg߽x*碐:G"x0: wfP)Ÿ=q^|! 6}"F8zP߿vǫNA_~mv8U$O!BՅ(M >bh}r =fPIO"H/i 6f/^@, <2q~Í2&SеDn\$VJڒ·%>M23P:ɧYڄjy7jĦq}t(ݏ!$ЙAɆPeŰfR! u4an24j` vt߃hSD#l+uM6] ez !-^ #0֨34Zs1k&)a:j4>O y-֠c>$6Vc9 ٔҰmDrm-l}]}pZN>#Z\ڐfiڲd380B!:W F]nqaKEw{NlJPm QC)ԴNj {xա`UvR>c@uv` u/u `>UNuݦ"Be\T%8/Dy(U# sa3fAxF~:^Ĵa0qc AP3P Ma3ڇQzD!1j˭!37L-|wQ8IࡵAI ֛Loha~lAFzfSZ ٠oӶPRPs;s 塌G*Qε@`U*@$e9`\ȚJ,kVqUg,ϫs2#ye&xB/]V*N8?}JDÆ_6i('=_~O>='$+__7חg0N $Br3Bŋ&BecP8M֘g6rĨA}X̬k&F0roC"eyQR.3IU ٣ 2ót:Zy竛B=Yr8A$ޭ $e*$e24MRq^WfqKӱb2ê20ݮ+z5E7Je -0,dy}_DȏBf;i!`.+ܵ]i]V@ 4Ĵ%C*n`U0MKaF(&ՙC"YV;?G|]<HIUeOTe-d<zLPʪ(J%abbEZy s&Vi\&Y6gTuYPx^8;&خJ,"ɱV,jp<0C+ 356w*xi8ZYnKȊPZ4 u](%_F@qZߕR岪s4P#7iB"!]u{E4d!vl,׆x&nheJW&J00(Ym 6.Q|1auGd< M^*If)D[>Co8ճu}$m{wֲkP,jqAvi3kM}UB+XW$x6nsw?>,{s5Hԍ#GjO=a]WYu;r!'VaM}hML ^߮၇I+j N5<:hAT};,#vj_;=%нn*ܣ'|h#B(Tڟ-A B`g[hؖ PE]CB:${%[f\uAܺ}8Ňm}``wh d~|t87:mP=imw{w|_6K2.T@C!(G9h4=1h踎ks\(&ɐA@ru, [h@uQ{a(ᖪVM=x:og7oJ()uf;Z[)t*垉b-DDt@JR=EDC5#B* #Z1RATXHW)(W+ۏY]qIkyW C T1/Jq:d~ `ZU\~GGTWoAC =>66WϾ:zh1=~tzOL{8AZgwɭ}=\ADů\MWqnm..R帎54ȑH /pRJL {cN>GPQq\R !\KH" x{,&?R CWUeU帄 )"7ӣЪXKǶǓ2id[(&ؓ5@saya8+ h8%̂ޯCFcfe;!>g@ !mb* Gt ( )v K$̠ "~PiYyB5tj5 eUKVxKMj&bB-; S0$PúJB7pE%Mf!%6 SǤ̤^4Bi6ZS=/oZj`BjU !JD+ey R0J*OmmDgq\Brrp<OUY԰Zv$$#qXAt!M?򤨐VG1:N5|N(ɺ[eVQ%p";ȣQ5A0, (Jp7? l~$P*aQ˴$$l FVL ,ybZta4Z󮎓([^mLԲO"=k*n4xz̺8A0ZXݫeU]x3ׯlb+O&ʸr~vBnzv~r8.ˌovQ媬"/MC:"Uvz~oENLD O\֌1^וƪHg'c߾WBkH'0>=AȾsgz^-zqX_{Fzͼ0_]<ھ톙f4(4 b-d@Y#aWWwdahj:$sW3 s NgAPuϮϺ3r[jVMw})w41BQMZn$Po)ՄOv6mW"à._7{Ԫ`'Un:|>~p( Ҙj %԰iJƚzQ/[Uw8|c>haA4xAel8kC'{$-vɵa İQKgT (y!}1R>8V{{ys'[Cc.mC0 굲 Dj[1鵕-#?L4h9(uպv&R@uim![Uj5EQ5Ƈ4a;a )2],hNKݔC6@܀AZ n);b!= th:~{0bP !”tj-gHY=S>xR *3)r K(S-3KK P ^$3)Ը, )4Rab V(@D5B˪mO@ BgU#.60~aL(dŋwo/?|wtrrrz<`_r{CGOMU UzOOώNzb7HRi83 31:tsw}.c$evE-|of"6 c|n%t|"dG-zjniUC._\y(jl/!\/wF>bYJ(aR׏kQ'8gς(,2f' s-.8,~{{RIg%@02* v; fJ QhS, r>5j=:ESBW, TM1<:9q=Ę[4^ĭkpI!A+<: yu6RwLt:FcJ T׮b_~.M/#FYy>O&C`?|sVVe`\Y mYkFz]]RKYYW*qLϳ50, (2l>յ-#Y沨fY׷hl#?\QhNK.__#m1z>uObV6EW {sw3^* YXxܤpT慔[+W@wBf;+mqKja.k9odp2'"[28: w` {_u'ujRGu(a[[@@8vn]58BLti @mxP΃ P%z޴c[,n(׎mBVP4ll^k#8h|@ZMSB`̓/אdS`2}1^3b@^}ۻ`HZ%!ƄF|pPRE.XE:gϮj`zWSEuw ppyS 4jfl /ZK aSwQ SXf ͧ"mD]mG2ݤv^2;=w{ FҊ<&%MnY%1ĽAھJt|kvٌ6pt݋ `>YQ*yC+@R;S^岎E-WR -L!t]m!a^J)*%n`(_P-Pkɨ+ˊI-a$ve)(BQJqUW벨Tq8uMM_%Ǟs: /^\/?8|TY^h uW~Rݽ 71D>|vp:Φ9#s߷n9Nv~\v\$)4P?.H :kY:Iv IV-u,T: l79kHm1 B/|zF,4"x@ pTK0G|1=V{۱ewwwC*SpI^EO$*} 1X8IA#a?079?=zF@ȝaWqVW77Ӂo83r3]Fx0rA |]Di088ZeY3\<_p.,` <ԈS90E7JĶk˛Jp xv,Bw?XalYȢ?]%&9 $8s KY;Mj15!w Of5t^ L%" $Rgon`4<ϣDHڮu9-[P8$ &F;;;͇.;Ȯn..H΃*Dp:?7=  5#hla: {46rɣ8拗7n209Q?;.hrY=ɾ7wtRq¨y>!?|wA f&_+֕Eo2C@ɷoupilb̠#q?Q!U 2 !珞m5-vzQB¦q+ "*ku4%ᪧ: 辊bPضuHf,wl޻ .3gzf`Q|(|'b̄`ÆPG.6 P =¦(]~ nBQkrIAbVG!`D|*^%LJ9ǁC5!୾baE H[ 8XZbx:w$*{GOkxC+խlqhY3젴D}L|q1*!eϝ6L0֪ϩT 55ƺ ͇wVv-Ir8v]Z=m鈒J7wJ:Sza[@WB 8w19lfׂpÑyz$$~!ݞf!FNw[==}l?v(;2N>(c7&jp'$@:<`< ":J:e&TgȩRVw{!IGHH  zLQ .%EUYh-W2+P ʼ,/mQl< |,6_(Ϟ&DΧ>__~{対 7=YRSܾK-WnzDΟ _tmnQTT@Y*Jt7!Q3fl6e01&rȵ{d9aZղ>ȓĖV '+E [,N(F(C?Ș9JMk]JrWdZ˪?~|(buy޻ 0/YV<U| fdY5t]k "!*?}t2( gF]A2 7Hl}eW]дP&Ԫ5f8}Ї<ãӱ;iz=kv3A~;x ΄ [[@R>ql~ -FFQ@t U#nIA{GhHqc]Z˶S-NfU~_L=쯛~j xtuSZ?vHB}بj!Z*At< ARkx)xBʪ2<&B"u)Jow,Lv% *!N!a:?)&.K$P`*J.NxMhjN j}[s1dP)_o rly=}޷/w]vz~> ='^ M|*o6ONma}gCgy)u mla$.uQ8KeVVlI]l~ZKo2D_#M 7y&-cȥʳS:txLu RXM"zo//7˵1B33/TAb׎I9F2O5)(a^J,/"hdzN)8p=X0nip޾~{Y\#`T+mkYl,fG!j\ӘFQ:J@̄4^B8ƄQ0NN|׳h0 hnvM8Ϫ%5$;͎N5gTPfZ* Mq|}C8P@HUf \06L vO4M8 .0FhDjUcsuw?|ɓdx)R\[ytxXU:-Vs: FL IOQWo]z ѣ2;e4ŻjJp$N[2Ea؏+>:YQc#Zb>;;Yhfe8ˤ^߬u3?ܭ?8~gZr\Żt*rzҤ,$8},Ħ{sRy^M|vr:=!!]%M'A8_5,ݥqU|۔b8?}4`9e3hM,\JB`0\'2 q+۸a߾E^Ža׆o1뺮(B~_-\q[~rD0+ ȠPV;@m[q]g瀚nw($_=&ƦW&_TUWTfhv'Tyq΋'cp4J|w{C`K_^0x04eqJjz>ׯMH@ooĽ TiZG!%C:@mX!кz%hVAt`ۃ>г >dz F]{W9DyU@VF5ؕw O>z^KC#9{IPb/!FH* >460ٮik]tQV5Xa `g]qz}i5Y`Wusy|6Ω6.5ie]~wK=OX C u㊗0CFyZ6l.onn[ k[nq49k#M%d zaL#8o`FE^ V1?xws})5p9~re%?}/|8ċ7WI&f^#Ԧӣt1QIbLBy,B'O#t . t>W\UU~Ho',Lw18׿y4,S+BgsM^^`,͓%D<Tplv g!,6+8-ĄÑT O$:W;ΫF 8ӚF,[n4tj2ɥaQq*ٓo.%1,(F(ݗjO5 Ak@ %a"l7Z xX`&{/а @:,kW覞S Ry[rW6uw޿f4 ׋~\zR㋺>Vک{d\+v>f {?pZPw@ 귨>%*);KbPPA:=D홁`ӸPۿ9&7omJvdAJjera_9U}‡{'vVwj_aϿMm>Ca]0>=kհPAfZ vG u[LGn~ۆ;`74; {DhKzS+A9h/[U@UJ 2/Z=(U-uUeYuI"Ҹ!PH1TJZPH4mTU&krZ3&MMEm<|[7ݫ Y| !!ȴv&o^R# Ӵ2\kXt0I9+2Kx)TOeeB> gʲ|gIZwoz1M  $rJEr]"RЁ T=P'Cd*?zÏX >=l$64 5bBtp t@bqXiDUG_6!M.镟J`vSBՀ-# ~]WAFu^ӰoSPbR(!;M!llAAzW0Txn`+vZ d`Gwd`C{o75 5 )9euz |~9!{b#lb)]T̈T44Du}/Pu{@Kl!:j"U{-JJ@P 7e#~/ݞP_5ePnp%3Q5Ϫ:HyQ-IYqUׇ.*5jUr@-jPA@(Ėui9?3ofbҺs>%2+Jw}yT8R'7/_=>=?#ֿw}rZ#yl&͋w0^:\]|40I63ZH+#J^DbY|I\%JbU1$qXE  zg`"w 1n=[8ߦ !n3msQP ]W\k'n܀*6qOn6M>/$ZP#̌`~xq`#dlwi&W1c$˺ԐZp8 U^@]k-iishMjK->n 'US^׵5&7(ܪ#Pw>Z i-Vd;O:hϜ.7# PhӀ { lڥ!kӚL60} Rt}[%aEXhd_!0fc3A]jAT[٘:T#tŕ]ð{=ng:l8*VE1o2| B/c@64ng;LZ9]eWPI@ (EYiuRzNNUuZkRH(~ؼ_JL ߖ#QۂvjLF_H ^jx9 -۳,Q,@UE5EY]]];][ Q^4tP`/ .FQ }4aj ibOa@ x2x)Gv0 =Ⱦw\+]ZTI0eUcʢQ$V#@BoNRl3?Lc0247Cu__ msy~!;lsOIk{z{uLGRhH:Dk:Y팢-},V`Lr픒'۝tȪ*ša)J:J%PfP^08>=%&Ax&f(.mlL? 1Epi B,f๳Dj`2"mٖ:RY-26(a4yNMTry?E4,R1˲(кl 4‡@3M'ޗ"+*l*S%몪-%Zk#:kz@\|Tu[3m˴mg*.$ "4y@hj \ Wa4Mw׵@k3X/r%z3WQ_pŻZOpAlp-R*`| U^[}SB~xO&fVc0믾x1Ҝ +qry]e_1݈1LR8XD?5aq8~al-|-Ҡ1Ӂ[b@.Hyp F+4̇T.|յOk\nfm(]}b?Q+KFEB~nA-\+>!V4e'~<=PÆx[`2C?kh'z@CN7,P®;,-VwU~16ؿW]^.=Ēt~=p(v7SaⴛM)T j5@ KZhW?,k߁6̄YCf#;5 *mM#/V>غ;>T}AWJ7SmcmG9nԥҪ=?՝4ѯA׶2Ը[] C=G1=?ߗy\&%/rb:^If5mZh (#`!)HC HmLJƳwoGa \]x}铱g"Wo_o^n ?N~y߼X}!Ulc&oc;a<+/<#ϋ"SfYy)d`zYӫ]g3I`<+\ݮc|YU ]d"e8avdβJdd؟xNB2(MCxQeoԻ.FO_T)F"+8 fLnw{5p0EfhHGtͽ? ) :nWw;Z621[{+X[ JNm0vf^Fk?NvaaPJ Fh }Hs/\iŋ\n6`f~MƶIiE؎;ueEoG1`n]eh N0(5(wdP}7ŽDQNXABE]J%)J @LKB|? (Т۫;pmKYp0 Qye{0<\뭪E!n]1ƶQsvQ!'w<.{p"=/Fkp461s3{ǐųԅخoBѣ9!ϳIR쒬v\aҡ,=*xiPrB03Vj\?'B5"d< 0(`&Jlwq$Ƥrc4F~ ehdse~54cY`d{^.R)tf41Bh+ MON9́"Wq+fyL"k=)UBCBђ -37aH1L[ "qVVU@Vu _u 4m2"=׆eM  B|>#Vyuw$9E{}fcHG"O=FZyJmQD F5z] tzD7Z#rw}y)}, ۶)\vE)JfζΤX~O<:[gE[ x՟`R~zgOJp nnﶴmDV|<~N>nYNnmZ[[H -2"[^^c+O?&XU="xBREYYPPa&#iPXm2ˎﮫg's޼Mttly.RL}@Bf̠?u |*=7伮z>oJY?x7__m'T?ڶO _d*-@c[̐8Hc.Nφfn׆eJq=:&SDZcv<ovYo j ̎go.iPZ636$߇/QJ5J鮾o(n' h;0BMU Dz(ەkؓ<KHfJUpT@o`3F=I8ɥaFRx:͸XmGOC'(T05ww1NWƛʋnV(Lh}o Pkpث`3Ȃ6:=wwRoWu!!'No%B! $uYSny+I ~s@EZ l|N q*صp*rne1.rݼ{dLJgOB 4t`{^]Uh`# "OkIockEؼ*]{dLwFR )%'&cD@)NriAdQdt2507l%EZ\/ԉ Sq^.(@E&*Je˼Hv,#87p}/3gք * 0j# 㳳 2\-4E*_0==[KnĥԠď|9Qh{2FU]!*]RĆ-9؂J(5F\q[Ji`v*N|)J MyQ1!.R.R Ҁ~16H("R*wvp@4,Tܳxx8Re&TQ'] ArD6,x6iYnW'& &)cRHSHF`Y2-*WY 0 Lf]a[ Hl[_}c;~gxrgO>݋e]Y˗ cy }v6B0]'=UkYa,9/1dM'F5,YwWW{ꧣrUr ݢSFY!,gޠ7hlmZ>p:0MW1,AUݬdEͳ|'x(\]^:[-~ɹوgE={2ǣAoonyHӧs0 ZƣϞ{$9"6\)חoLj_ޯ$'aXγ̺)*ǽ'0L bZ6tu}MJIY<^NBb_pK6ȁtz}rwUWi)e] UD bNX2̛0pٴ`z)4Kꊯ6Rԛ~v{) Y_;싛u\[%c`rdFk.|c[r:M-ֻTp|2e{\j7lvy%mvHg.+SaC/Nc߾Ȁe:Y-ޮ]=<>LzER ۔q nh{e^t9on&51gU]zu}{ZbVH $r@b*d04VPONYUY^7Ek+a,FRtLfMl\:M AT?> =P~R~TA JzQh=bI;X+QhP|:K_McւRZ=6>^7kR|k$J6ٛ^P* U"tXRX1R} 6+HSm^nf?Q@NѡOeRKT-!Ԡ%}(;k߁$s}S#j=Y}_M3Vl qm mG4K4rf ff|y ?wUe%g^Y5ZNu:(FGYYƨ] BFWG1^.W7o_59>Lё~/.ފKTh/sDHPy{:E2+N͎ pgoKx9 ~$&+ݕ0Dc<]|Uvr`|eoW6"w3Dy?(UPﶛ$~%iGߝH|2Pz"â5'=ҊR8% ŽPWD^o<_Y.r E{:2`bX#<BΨ/B WKq!kr8d*)`f,*SAHĺlJp=5lQrH\Mƽao(מB4 q3N~is ݑ fuQ,M=/(+!{޸ ' Xu|OhA@1%}r|P8r*Z8urS5)/a:''g"h*r^J7UU|VCeS׳,y%a6_r#27mk`銌9'Fԫo¤:t gNN0e\^J E|h)[ǏIh*܏Kp,IܯY&ÞYct}tzPE>4r.`34EQ= 2F±B HbWLaoh} VLӞ[xd>>Qܥcݭ&t~sIMF\;~jZ"p)ˊ7x8x]A* e#:>7KrᗬȴBώǪEguXEgHśTã, >~Gz߼HiaA\uA1A/WX&E ޙ>4BZd,5Fѣ_~{]Oѩ[^~EP ȉ3Ce?~@ XC vtJn@E)D-:%WÀ50W|{zׄ'A=_+D\`6ՆGG%kƻz-u"ΜAZĈ0?Ksfc0f e+ ӡQR.mO[R`PGݒ6J·4`o`XMUU5ނ74ݥfv,+dH6CagE[)jjidi沋:e ["w.es\ܭb[=}\^_ޮܭ*Qj}7sҒl,ّd(!=8'DӼ()&UMjvǢirԁۭ$dM;<3!/EQL"բۿhU @O??gu!*w|ׯ*as{Ao^/Q&qdz4vK"j4D߼ep{\X3ڒ:ne=T,w*EBoa`\*،NTv6M`@!fқ o2~Vj۹MCwEg${m=āvs:.{z~|[w𷸰*[Ǜ t2I7!ϾhQ`\ƬDȦEWIxP-O?JpoFq]~/_%wq/Cʝ %d%F@Ѵى[Q,6/L*M d1 U7^\YZӾNR4b [j_0dtF7(Gg"#(dP,E)p8T|%+p,T*3{}J&XQx8g5Z^ARnXeI$Ml z%3K@YiWw2Jwt|`STXuPK<=^_/۫2ͧ&Qp!sc424Tz>#htdUMHH"exb`V IfG`"i:E/YH0tz;BE:|d60 (fW7wwwe3;z<=GeF,Jruj\{Ry7Wͫ懃ޓg؞ieSA^\oM?D$4=19zVqכlOxJ 0" %lPĝnl]OH n#NdhcT]|wAôu*C9V]:_M>ۣ}fC2LPZpsmں]`Ys7lf1yʹ45Bcv6.l# jmu B^31¼Z~ [fvO)}ےxOAT~|3pnkPUI> Zby/ʺd^ʗ>BvCvF|t-F{K9$$!0W5TA$i|N~ !G%c%w`%n߅6Ũ(۔fzt,I,"Z]Y `|:0rkH߽l?2g_e<ɴwǏMl(Hסdf*OP?TG2$iaOb<=,ïb /waJ4- uY.K (%."::=WW&x{Ȣr|V00&3ZDhtҟڍ'i:۫ٱWotEZDTȏLCaII~u=t\l~dENcx.PS9֛#L$Xld`+m\ho<<;/Ay޽^1>E$P)c0gٸ2w X7>{45 grrPy^M&HdU;#MRYTs۴H $Az\<%ZVuT 撬na$%^ڳXu\S*/)WT1Ghn(C]I d$Qfʫ DLGcE|T,fs6(#G&qil XBX"dE躗oi轡<^U@0l 0*)"U篗1mr]~PvVHp-en __35 5x ۶& HB=$1wr*q"aO0#4Ei0j!cJR|e˲_T)-%Y4U^~aι3X@.-E|!N]4XIW$`ַ#gW,JUqgo.aєUEF2jX$0aX.VwzWPĒ"PME!(2KS? 4-UIh l[3MW%Bdg%z&4yz䦭ԟ ! w׺!Sd9a" E!"'YIyV aIcۆ^RU zٮyd:#Q(i`0](WߐjK|xR@ GCDp(Vɘ (W0h9}HXhd9xZ WUyxInkg= ")uJ<A~ÚA ia"/oFXobOh8Q4 EC~] 6 ӧvɒzHir2@0X!WY-sf>hK/^͜{0yp H2 };׳RGGCį_iAeZV(ϟ,Bg\78jIWT3⸏{=cvYo8T*vړf&#)R:0u\QQ'ӧ*/m}o]`ZN2kZ 彬`h\5r'D5V]-RhC?Tca&*ɀoSWy{asuh@Pt9%}o9i?vi%t aH;Άj`0߄w.OLp}>&Mê︚58˫kJWtA,h7-B]sǏ `xa n8n#K.eOyA : *M9$ޥ+wi; pYjYsk{ƑA 0+E;[ҴӹP"i:t 3fH6 Xk%yrteKVg?լKmIȽg;B>4F:_MW5o@^WhmFm:SPr Τg1s }m]_Fgu woߞr%EWjf"y{//OO_nDSK7 Jo^Mެ)([GOw` C4!tyzECBPP WU_}cg(,w2<~lXa-8Ag%kߜڊmBTE۩0KSSWb2㓡) rpQ^a\ζ&r_7u^Ta7q8TDz%<ȕeUK gN(T9ɣ'.{h:ucSzUTM֔ iX9A ieA+P%S┈pEQўamK)ʢ|sOࡷZH'o=ZAQ>0H9]W]EiQȊ8$kU9X'Չ|hYqgHDlAPuQ,2bHd2T5+KD1&' ynE 7K|gw1Ev4!i֔Ir^AiZi4a7䴈#Px *`IU0Q2͘EFǩc Sè#GβUFU8P%PvbtT`ÂE1$0/JX<^a]V@t}LD&IqZmYUdi4ذG8Ǘׯ_֎u!ǎnU}A$,o7!? X-4M0/ϞfmHqrv8e[:_}AIÍH ?d:4UCJ:?3hvntt0%Lء-B* ,컇Xbeb<YF0o/=SAš45HQo3ASM^=dL˖=hA ힻ}{@َ&>RP{V~a?PKmkNQ@{g濶 ؀F Ԍ>L@N~6K܄o_kC0:3:w q1tوok=~^صa· Dc 񖽤F6 0!-nI" X]xMW9o; W7 lƝ:*5t\37ؑmh-~u?1{? ^}>9zM5ūO I"DL0{7OG/bO;WOu]ukbdIx;[|0UTd i 8ʏs`Xb&ÍUU&ʂ 6ay024to҇u#Sx|: K)D)G#WoY.kyQTd,a(?n؝[@0r޿(/͙(<}uzKd%"<8JY}Q'n=`X&ch/^,˲\ˬP%7K*|ͻQDql]͜xy<UMRe0zPY?~Nhu 4< _<6(~G+7}򈌧_Ι ?it3΁c V{n6$?G٬lW1H;@`{]?KZ;O0~{՜;8Ak}t1~Ҏ|yi7Sbl?靽|@`_us2}/:.trwN W;bl3Z_rl[|1*b5RةPMQkm):\:ҲX0RZ5Z|86;!G7[/?;)h iT|rgM8Z*(rxlhxVܯE48!!D( 6-fw3"?9g. LIE.o߾X>=h4ۛ/޼|ڛmMGiKL-ò<< 5$M*ށ{$Dwf<*a{,G&A"IRTZջ+,+`w0pUyenb0%e I3XY5J$$[!DJaI+]WEEbhۦ Io=vYΰ/т%a[ddwyج"=Kag <-J$ƍ,s$@0M5UX&wVT*Ydåg`EQ w((eZ&i,Tewn7W7C [ɫ Bdڦ%]&հdU-4M3DDYՔ8uX QF֛<_޼x @Xf/ӟ˷E 20UYVh^N PL9+*JJ½9W(0pqAȑ-HҸeUԨ7YSUUDgdG&I aśr^&aJ**ܶ6-AUdC5ML.UU $U/Lp04-S]AJs#;ѱ :r,!zv,L2 ihZ+,*$a׋ly aL&vg yǁnꮒ4gAɚR#5ETʪh]=O#/fwt7U]Bsw;By9[}K.jO7)]qoHP bc'30W3UӒoHSJK|~u=@ OP."V$y. qd*>= Eaʖ)EE+ͷÓc{(IT$ďu0GY_~SE2=hR0?a|%%@ GȪ%,ѣ@MYoiROtያo,&Ao5Zx[f#LϤaU)yrr,n2?yKR:'t\E|<^ #N?'lmz V`ɚ%HBDt|d::!X\[Ѳi H0baDQt?˞B2<;eRъV%Uγӳ,0`\-z8CBeF,)L3o;*IhFqz0Q"EaI0 ãS{-)<Ng^zL#FFSKB(b3S+Dzul Aے]C95PDU{յ.dWI)ܥT0JYYhIK$A)4 YQ)ir,XVuYb`5YS_#l骪Gy4 4"/4:ǬR*q~3R䩃)UWe秊L!VY<6Oe 2嫩$JHBUYj $<6.ǖaE1m_~׃MD*LJDSjds"qE~' hEBIxz֣DzkǺ c"ʿMVU"+X-|b廙3]PdwAV,nЉט_tOnÅ1<y0h %{ڒU{6 Р.ލu{{Ȏ{uڟ yMx'ЏB}T$ݣ8/ mCv>4A,9uN:[kQ͞4>JK# .o}="m0}*m0r[F>ϰ% z!dQj_~NUIq>+Mym<qP#cGϏ.TVnmL&"E5P?  hFYXQ^^Ao"|x~ƆG1mAdW*v?t鋀"ZU8H3J d|4TL(K6>+ƪ@0IrgZ2 QsfQv^IĖ<(\Rd*Z\R 4вLdjΠo*D~O5@ހ<>{vb 5D$HxGR ubȴ4R,\ *MiI bYB^_^]k_1Bdq{ ))d: (*h>_-GgS-"`Y窢I\U5u,ynD B p,NYQ N M@Ŷ5Q`+DĠ(O2R0Èɥ` Qib/ܭD(D55 QU{Av%'X2F Ѫ&`J*x%Ѡw4y[72X1 4"Kǂ%v^n Sd QL3[EE`1F4{0j +1覨қ+M(D#K-zKwi/_dq/'& ȦzrzbZ//w>{qi.H!=UdK7u8?o$EMG(31cū睌iUztW_]Ǟ'%gǓ8fiYf<*q_]9)Hx>$I__2DjKAFYO\ˋj)#,CD?WU35 BOm}@ av~r6^BZV=nϟ5|aѠ1i ZXM :Bn8;A W_cU48Oeub/Z[6.QН[\Ӽ}vMtpk7.vURs%>o.!5܏soa=J{GQuȳ)<A4,ksR|~;Ʊw%i^vyb5y7F^AeC I{3ژ"v~ۦBzxۿf4 L)lxƷ6j=a.@S{=liz@K_4/ᎎ_ðZG]BZ6+uR_wFv,4FR@iGf!j6nObZJk@ZK;Fs2_f/7 wQ~S~l%.duL6`zqZÏ?G$U"dI[/M-k:X$Tʪn~Nu9 C^g*a5Klk<胳@"YXmoo|*)nw%1@9y_#}ر RE*Ӳ, Ga8G)F g+[R@ɆeEvM9nzE@aƵ]"0UM?<>)V8^xm7e_Rk*"]TQ@E `yO<=;:GL䅟EX໷w[++&$Mcg2M_P%^C@gˍI-m| CEDl.IˢbyD=7Z.$q2O'FOYmۃ HAlsAK|=[&U!pOD p~{İ,{LJg˹UQqŷ70GΞQ4_ޭ,kx)w FӓZ6 {Kw~{ZƦ~|xx|t<N55ECb2Zm5{8uzeG~d2y4P\ܬ$Eɳt3#ioU WW>v󧲥??aIڥB=j]0yt2 /#E1^\(糼+X˚ON][D^\ʢLa%ayp`Yb{d~wӱuR'a[voG_^Ui86T7`(cR}~eCzg`?_AAtZ?$g~3b Nw. mo\b`8`Gs\G5Ğ=C`%a0MhGf5ua)cvpVJ({?B-5JzAmhjnm-hCHm:lkzHчRadץ"$h31 jN<HaߙE-1{T lgftaq4O,C9j8aX,Az0>7 ױ-섓hS'/rI/F9Fܨ@ K_hɢaYN!7ڮ#mcNvwcqnkӁ\ԍOEt;S CxިYTCACW :s-َZK&:dZvOCg:UԤUq~U?'?8XOS7fa7 U}GPP_ߺ\Y;yCC$|t|}@x|n4B śrxSm]Ur n5>8.dhfi__\D+Da@Q ˤOeP2iaFj*ڪ TYj@I_i ,1D~y #]PUp s`ۛL608!e(F՟5׋m{ abIF!8(PRg`xon7 Q2zc(N=/FP8Y+wW߼D2<|zҟ `8V%1ǖP,֛6Uс PTDs D$} ##V.Q$z+Ɋyɭ) rId] VE{u;_,7Qh1UYd Z! 0+랗EJ k'ȉ'Ue$[1&QVagO?xL5(pǒ rF!U,nP %.,z,"Lҍ PqNNb-­Wɸq'5p:?mKSD@M$Qxq`2i†drH$B9a-qZ ͷ&JiMNYX7[~nI gN$yb^F ˂(smIW~畬Hazݛ fosVQg>'B3W "itdx} EiG}\Ī19',7Sʪl# LĘog%(mΣϞ/eCAaRɰ'\.#3=|pWyzv|`1Br"ҫ^s6E}q CEWyY*`$IMݙq8.93,UU%TQT_}qI%ZEuQu~-?RU,|ͽ[A '%U\M?ɗGQmrdMИ24հq@:o+UB T펲.Ii{fX綽WۃC"HůU]M\sD՞ T5݀mvYPGS~iGmn$m݁}Th 8Pƿicm5Lk?m]o]tܳ|tU<NΧ@wu EI#kPQڞ"܂kL⮃UitbtNS3D@ڭxy}]%j;B|fLy3x7!-Є10jqʮv UA-cYixLbDN%lEUGZ;$E!vo;r_ks1®3 f1MlG7l2` !d۟lxe0Ewi=.t_VR]vkJN tԋb|.b[5電G}L&O5 GOdOoW}{1+B4x| p͖a8~D5>wKYQYU30(7v >~vcZ9Xd kU*y_y^$O&b֤%"0ƐI\ȝjy h(43DA4.<YEfv֋hLt`$T*K$Vj_nn "G}1DM7T5Ls$KK#0Ml̽VМÞID}KXCVdN%ۍxfܥfh, ,IjD(yRn"3X`ߟ, X [o@.p:4^|KqCQtYVe%qӲ@HiqWUE+0{*(ʻ< *dMW(~|r.fUdH-["5{뭟%(M-5IV$E%a_,DAeȂ(Ҝ zLPg5̋"@(UE q;1U&YzuuzfQ @UPtféXI4 8sF FfFQƇ+f] L XXhZ5~1g#0Ihʜb"KRZ5VE}b^EtmRg>~EA\"4- ۂLUC=>= =M,wVw^o%gDTO^_BE46OǘѪ$nlU8bzbaվ*O>;րnQ|v[_]|@F>|I TJE;{3:!hغwMԎWװTӐY6 '0F L[~j]aɍ`U?}XjJ!` +`L&gV*Hz4QyeQvFm𶲢UOkt"ԙw୅7(G݄kly3oIk}6xn[/@gw ;# -:QYƠr?X a, |)7:=4X\EUv.B6U`,.7"?ǹR؇` F#T InB֘5VռpWmN6Puw6z& d{aG)mp$&ݽ@7mAH \ht7®^Ԥu^l h,&TiVZx\.vuzt A %%fo4蚞3I fc(!F=A^pa;{cLèEqM;ЁP0@ny}JZ0Qtvkyum4-[=C-hpW㑹OK)ݜv^f">!VVթ@tuu>{y')t``#TqMu|_3d{=PP.{bisjfb0ņZLNY^Kq*0Z5cwzPqexvߵ p[E;0ώdiy}߾}Xs='_ߺ?_>lxVAƐ̬җbo#l:ʫj0 PeQy< ǟ>xr_{śӧGܚn޸&>b<|vﷆ>Ϗ,,U֊MmHbEpf5 82eH,A Fwڨ:taZo6Ax&YH{% {?7[kz|4R- 鈘8G\s^_W(+Ad^~:j(%a!Ep|ƊFVfEU4aIHqlx%76t.Zu;ɉ!뗯rZ L)*; ,T]&BIYVv].拻Y B*Ct8M|qlv c骊7>I^Z-yd/D,O }zz2hU)2]b> HUөS#MtBTt'$AU{}4KL$ERYZ..Y!(uv[MC)0%R׭hjzD3Ώ-$S,#-xRf |(ԟ'qD5nB( ]\^,HUJԕó~d`Hm۴(f\o/^5GuumHAFx3_\]v(V/&)Q~_Dy|Y^͋k i^z[CU盙ܽyۗr=>-aJ" I6+?Rofa4k7b騖G/ Y,l* O5YƇ 72),,L㱦H_ $(2>?'v|&;HfcOvt3 {MR[G^ۦ8F -VL)Bn0qM/OlJGY kLe5 ݃@ te?$p[@x&D{-wq39Yv;9$EЃEtj|Vɮk uIvy-7ˤm-Dv$A4yj[[kITN;F>۝jq[W|sK;_8w׫#?J̲`WL2TynjuG>饑)o5ϳՋ{Wq5Fȷ׳Ž=<{l EW^}y/{P>Rc< *쟞h"18}wzMS"ު@T s xt*El7glgaIU !Ο5 <]["gǎ)r?K:Tڣꁊ6|1O{6XDf qusDihW*ꛗQ`::04'=9Gԣ̿S Q2!8ή1rzbiUEQKzv 08P<<"KMϣ1~OM$ij$~);)¼Ea4#IsLK749 A {7K/IҜ#||`Fy}J]M~Ym=q ,{ $Bg"a F}CDE_9ɃA@UfEYtlUW&JT9OnqYfQ(hkJ8!zO=8:<لy1݄nP4],$d;C[DՀ Z=n1vAU UNqO}QR~sS A@3FQ!KAI$ 4YUrȴ(`0LS34Q-!Iq^#7 8߰*)GAZ(pT4txfC߶;C4 CL"Ȣ"˳, MYel*nqyVq ijŀcJ8oe &,|LtQ$JDagf֬ERfiNAE ‘"/aMAK" =8I4gzEY.O Kô?b F4U~UPfZ?|rr`;Za,X.n[ݔ.>SRW`܇IݮjF^IBoq:$k\֋ex>% A;` kd<;Se5YϬay6Hjdc0l|F 5G= @:m&ń=}VgvQTCaiC6ئW ݭTg6)EUQ ](NY!|fW wHj7dm/[œZPND3[.? W碌o{o_J-D\t'sQdmTJ3.?줩,Hq~nG/?K4Mѣ'Ue06bOS:Wۗ3??u+,E޸2K!'c[UU C#^=; wT)`}~1],O=U$D#&F؜> җ8ߝً[lG{0!yY">5d+ΗTky>Æ( 0JY F`uB" 7o. T Eh*mX#?1nZ7U|h,CQñJqI9SdPfX[ە9:{V0a`ܳT7_l7`BJ4zܘȒr8dF:MJaҰ^" gQpy@Fe&imM(Z;_U=zDȈjzՋ_by*T{}:2'n)޺ -*g?ꩈUfZ0\VձbͿ#z&6Ul7.*1*G'\ ({qXb,BUE1 J:Rc4tqPהgڕHA,M"QeATU1$iVa[1ADK8lؔ1drόb 7nY2 .kiIV"*VU^xms%EQ I{=VVX4En\%TM]TǠ*?T䲰 |abEEUA%4E9#D <ͫ @0BuI8e Ռ8yiqyQh*a,EM z*Gi!KxdCZQR$`Q@DfqR$)LT&HbE"UɶmG֗adV Ȋw,1U/Tw4YZ.c^AFYs J^," (Ҩ_F +o5kK BDEVv5q&Yq\_\_Q(WQڲp<tEM&jcZ mzQ϶ƣyqysśkےLj X$L_|wrzv2""AY{,2{1!z&0"#kvJ`H$崆#OamERf"].0Syid3YR$]/(Qٽéb~r]cz%9Zf/FnVATe@ķonuݴuPuبYG^JØVgH\oAT YR7x4X2 khֿ&YN_ڨF}$*ˊ2_]ށdFKb~c;$ڭ~&wUҎ4on0k^y[~?re{[~5-Ӫ۶k>X#䎞kQreT:q3b>,1޽"L-!3[Afۆclya69u~uaYD;*"\?EpC5 AoQ+:H۽( t-l|iÚv!-CܻwPv>e 9vw!^?=b *$xf'?r9N%Yze?'S,gÞW{j;ɯiʆ' %Ӹ7x+)'u<5h}o7+ݶt]Ti&20_,ڡ)XqCt؄MeKAYI"^epz,JJ*nb1|сUQcJ >8B x_n#K9-MMO@4@Vه@UU_Et0C6}NY=Yt}׏_],¥,v!걦q.ofA3 P[eYnΞq-5%ћZdUSۍ_&iݛCͻKߊWIqMY!EeƸ*3{$a)e˂TdL?yêHU,k;NBUACN[r*"sITTdEGq8"EŔEReKJY 2j쥋4f8&VO* iE 1ےCKŴbTe>O5gHm41qʝzn@lZ\lJo8`D⊡AE$z~ "w%IӬ$DT@:- A,i+*Tq5jpUeLeۂ$V\z y(abОӫ-(ؽ!g|{gYnK1CiX٧ǎ(h dYYnnn6NT^ ̳J۬{ZƔqc܊[(3 wu` lRm D[*zj{w{)HYQա&Z۫+fv $#I,)ɔAXVEUԄ[2jp2:;{Vej]<{Jl"B 89=M2NFJmB d>qWoߖMpm~G=L{<7o_~wP>ؓ8JnwZ4v,J-YvO%EWDbp}v+o{K]ǧON#հ UNJ~wsZ^_^@=!Kϟ'<{#G\\l}6<&ooh0 @`kӃ&\ިc~Gyz[ 'G}ۮGLӯ^"sWխ7sA^ٽW/G>vlů_Aso`ԯ(Zx5y\ǵN~rQi̅ =O'WmZ*emx1,ܬ|hD7Pӟ=Cŋ(k {FO)_] MNFA6y{_{ RՉ Ϳj0<9^,{iODɨ%dQڡ6ǯ%`(lyHiT9Yv!LQDe~˲b?w h%_Ͽx|zWoέpoV(.g?n鞘vm )/W?\^|TKS{}F{t']%\, ~7j触qn7o?j,/+ֳ GG[Q="QxopmF@Yu>-e)JMTĹzd`ߺycrK6+_'~UUެoxjqfJ/qA?rd?Xk>zsa5[Ѝ He ']2|u]Ja8:=(X*Ѵ7-^ya Tfn56zP=wN[Z^^Ppl~QQF'GӃ6Ȫ.BE e٩Fޏ UsUخdfn;8퍆%ElS2ſBXʬ<K܇ ؖuxr$:IbIE$aZ>˘+$"z~2TjfJp` ,wo-۩EAvdf*ˊ,0 |O$AuU}#.VK"! 8Mk: &,ӣã㲌)x6qcöuFw̉!!Q)}^_RE"Ŋ3ɢ(Nkm4Kn^\w0t!%e֏"!قUL֍eӃmđ,Q%6:*+tv"[Ew #/<{zL--_?eIVN# ١C4>p͂Y12RJ(zޱZ{껔zShOT 2#@PUТMNO*@2>$M<rGJx445 ޯˉrwyE Zpǀ5 mjÄ4ݱBoVK?GAZ=՗L@yU*Vd;~cW/nQE_X=(yZ5T2IfZ., CGS$o Tp_ LIYjCGO>pbH맟S :F)EtA&Ze+7J(BLwln @ε!0盦v;bXFIq{|)~:dyVddWOQMKhgc"o=.EㄝlIRwnnk&3C|샴AS{HP)mV)xp3C%¾i`|f&/6a3&P ?mp&eyFZMaٯd~Cwb'Cr{?>Nu?\4İ\xfz|&: vpbG<9=MY؃ VYiF6*69w:qFu"m.bnf-|-hl5{En(ktvM뛫_<Ï{Z؆ -_[Y=O$D*+oo*_P.b -Z%{F(2޿?}q7}F~ WZ~jϟ}3Z[K։}D4E h,55O0LxTf$TE1 b1SkdLYfςu5|t01 DwJcK*9BFI%I}ݺY0_Gj !#h^Tequkc4=: A "(IamG[a_k"i@ۭqz4,sww׫nTLpU4H Vϴ%iY߽H k&UVаB@ӱiUίo/^\k!x4UB5XY+ouwy^.ӨtG^%g09M=&c]u3u뛯՛,L%U%(8&xpLdCG*R7V7n U2۩wpl`( YRz~1)N{a@P9Vo8 $xAm78o]7-m , qVmT$RYo0n GPx3W ON^aggNʜY) sY[D+~YTƸ g]jE5%Ow飚</MWkjt}?82d·o.4۪`?89bU,Mm_ڎ\=@drݯ2$lg?Ϟ/ytN$vLJf|jB.wtfEQH$XSΎGX0"3z . YܪrED(RV睜 xyUТTSGV.狒LとhګK?)*Pu@.eiZp^|ytMg{iT,MalP`:bPۃr-jm 3@^ OHnX˪۵icܟQE!il)CXK# F7 ֽt)k<3U x݅L+6PrQT j>ia^T;>>1mml7-Į勲"ngQa$=g8)2ڌt3I.>>U iJ/vI>pdW,/֫.^^~x#[c]LǺrZb/(ʣEocpeD={td#< IHr,{r _% w5qo $ɲH2 Z{8CkHbiDILJ~~qq)Ӟ#QTlIP}ghJxj6yPWZItnn~*,Osdat-Wm^R]_.1Fw>px A^dQnl0-џ/0Am'ӴTLC$=7_ϾW774D=Wu52 D i )<ѢUe*"t6V<ӏsPVV%hʊ*rYW-K|)LQ.KR"M-x 0DQ,!ers8 (7S,i\Ѣ(i~Ν"T7|#RFЧ}5J)Α5KiF_uUd^%Őus;JEm*޸WrEV0Ɂj "V{U$ʞ38>:U-M+6]C>K,^GGA??;i=mZa9ςphkd -ݦmOFE*,W^%iA륜ݹomi{[Moa`%A(+"KOO &j׈)(/L[\F662L*)`<6^a6($Ev,c81IO!07ji~[w3G.` X5 јnw!vYP/:y.G>XB ~'*[]L8z}jpt@o+8/oV??;Xem/ _|WC[/6?|W㙄TZ_Ϸ/WG>U Q}9;:s [ې0wŇb _/^~Vp,MbT!)crpp(WA/oY4 ekTBs ~uysnb+N;A)  CԴ2D@~'2zY޻{gS"0K7 ƒ@b1M-۫"ϳ%IFrxȊ(BQEJDFf4 h$AdŬbV`EI1 CRdedF"q\/Ġd9C5Jv;[̃0B* !Fc?*6)b; u? 3=MĔ10rRقB]!QJ 5 b"H(tCqazרii(L$а ݮAwAtM`UGI]j2(rK qBb!(<VƑA J&XQ%MWEaѮI[/PTp]*17\#X1jj:|^RjdU"X+J,-VKuUNEYDӗ"ڬHBUrCG!?zq1AМALujqeYTʬ*+,wpksw4_ԓ>g_Vv2/Zi T㹡h+/^ͷ_mlZvQ%ru*2ٮͦ~JEQԕ=z=Pajnnn߽zsAh4g!VC0DI#tr\›M[&Hx˺3L>𹱓?7n > }¦'6p϶?>~1ykD&4&KOΎ4YGt|I %[?~PFW hYNG'((~j Dnʫ<]z-JŸ~"6˪: eQ4,'},[~=&Ib#Ge7/8dC˱J ~QUCyX_gq{0CCX]UEnޟ;·)e}*]*tmiCKw@XW:@@K#(P"[Qݍ]FV @5})ڴшmhw4xv!Jڡtr?zAnM6c>%vJ%m%m҇Kl\ P :1Ќn)׳ú4omQIib8&lgs]m*y";С2y>▍nGqjPhui9FwB*6lژsӱf;P^ AJ Xnb, 51x'BNaԌ󻧝A|LQ+Ӂ? ߋvWQg sAw❏E:#:^`^|: jnLKTY5+P5?h>)]yc߅FpD;cVeGy"|Oh$,Eq׷W>Gj(~z?[ś_/ ҟg(Z.K_sU?;"xW?uѧ'DDׯ՞jɳa_~/^`pˍaIL@q0 e8]ϋF="/(E*HPe\_r(z("cf,z'.BPKDn;]AeuzxPʒ<~T$ӄ*LE\mj*DЭe9N'Y y_lUY?9XE0%UoCS}+w >P{"J|Ozf؂q 6%*)eUUCWPQWe1Mo]7bz뎛iqI K(ݵ{}UE1"\C4@6VZdq-0E( am2 Ev gf:3I33ʡ`&U +PeV}YjŹT0DAJQo$"+#C@iu0vf0JR q9YUcH,RUB"Yq5M*6i9XkSQk4W!>w Yp(JYQdwwuhUWQcݴ<gEfIz=`4+(ChYoN7Դ ey'E"$>ձuC,28P.$D eU\ڇa,#e`eD0vrsҴ.qTI ݾy2e<jc2'Q [/5X}uŀ44ӪCG JBQAzA88JY-jd8mXp;_9okd$"Ȟۦ5Mdn [nf[SE=s`eQ&]w 2(@O뛑VЙ B櫲V5D%YqbΘ( l7.\ywx<``};}8 ۴lZljGwWŝ µYs~>}h`l".֯yYCE2")6{o " .^}{uLWx|샳ȷ7^n./noi{5 X+:+ywiȆqs NG}26羽zHe-"HkNk /޾ +v0R,hQt]"i @(,L¶i0Ά?bd:M?G|{S ˪yvnDnK0xz<8}rrt3 Vx:*Q6~jYRU"?9lSo C1L'1v"G6FaW: 6)=4SKiOK: ƈ=:^l<40Ģa͞#[w_mh #SE}q_˂D<@6VfܕN +sPM)`2ftprrLDm"oYQ_C}]EZFR zlt_֒n@TQ"6mQWˢ==;ʨ|m coa,;c!^8X8>Ȱ֝/^讉CS$ʣ8e$OBNlJ/ 6WAWPXYQSy( .꾯?&㱭i^0Ll SϭOH䪨$NMA(uEYUIb!(i剪jigWe\G 5NYZQUCY"E@5<><t$YVar}ňzf㚵eY\7MeUI0a_7LX&%,~% DnԲF/Ϟ^2K,o^z>9OVd\0'G!4`06 IAkEA'OG\0bփz꺆mQ@;-!^Ͽ~wW~ Ag{Ϗ.5t$AwyR5w۴*k(;twCD1/f]o{Yگp7l{ UU.4 yyppxش%z{\-(+*޼t|DfAZ#5?U_w>84=Qd"/ւۛ" Ziws^ 1= SF]naT9:I oԲ"ìn~}d8Kҳod"yeP|RDϿ|(*OSBz{,*ɲTl]}{„3U8?>!(NjGE%­\Ʀ𧗉NIΜt-ѝtKsp&o2C):'G:C km#'sj`OoZlѕNưm#Pt5?iU@Zؔݷ'5^|oeOخG9D!6PdU{נfvhG V5 OT|ֱb,gU}[NKnR@v-hiD FҀS8+6 -̗68 <M[,I/.-5bK]qƧ p[K )-GV t/vkq ]=:'B6'SڅwI=ol--.I.]e1.Ny C1nQ&jὰAuƊ|ъ Al&6K ?wT3i o݂ gxsFw!)f-]w}X7_1ȞY*G6g:ؑD]+Hv_RDi^}s}ӛ~7ʲJ}$?,A/<*Wy_ sV׋}~?#pU(HpU^߯~u*7M9X ~,Zh0NzgHV%M==]I0+*-W-SC. HHKoX} dE`Ji-E U&b 0E(%SF3.x|8 ݨJn!qvC&X\ԵDI'ڇe)7MB S~gfIVIZrPǣv1OkD$hRIU%d*vJc;)A\7gc(4Mغ9(i\֨,y ?Va㺑֤byı6?z6775X^D$mƜłӒ;?8>xCI^f/ݾYE)cѰh8 VI6]ۍݸzIMqG#.^v fwח((\_iև'I?MݢH2qʼn(7Pu-o~Enx^МB3iQ_HьҪeٶ ֿ2ٲu96*A.Vo2I@Tۭjی\PyHWACˢDXd xr( ĒD7/IeT۫u2OutA*$hF <{<~N=1R /8i16Exrw1Lzeٔgd/^_TH4bRg#7R G&}GW3b &J{շ"Ew~UID֡8eUPIdW@'=m1rې"΋\Bpq  {R2O;oT[:\͵jpw*Mc1C-}=@\fy `CV =XmH.7vI]xj $MQ LƱ?Zν(gz$Rv˯tC>- *Ī5L;jDUu>s{jw* )쨵k."v(wcfq |m7 `$ od{>3bH"{yuСbm@cGWSN8:͋n/<%ωmt23ra"Z÷R}5ziqA[:ͿЮ٦"ݜu\bKXwAPuъt,`ݸv}O[ vTg# j;%^6?fdMG*Tmc[]~G81jGgx3+o=H/9tvӑmrT.X+j76w/J;;_ͣoq9y@Ȓl߸7`0-/.{{a!*y7|XabUeiQw_+c{ KV/^xy#M) =2 "77+H(e"8׆#Djun˘|#[YV "?/et~:QEQ0tC"IDDT  gb9QeR][IN}W,b+ON&.,DTV1z|8P4I@ͯ|wiŠI+r~KDq/{"+˜$ ('[)y^yW ȲB22$a(v=$U<.2-Eh$NA ^Oso]46>/׻McDSbE`QAXjˋ*OUReV9T$ Z8g:}dr:.ܞe֋^PV۸$_C6H0Dƚ!;_d8(̽(M#w7*G׆m<>9:9,tn..8͓he @ $\.]]lrcYw^Mc>yv߯tj)oj@yQn6C  3wz8}IMچewqk*ݓE ~sFm趡ɫo\{wws{;l<:a9+Pp5^ܚC3,64{<KS{Oʜz7܀Y~{1KJQu8? D-Izgi~( gӃ/W4"/\wٻZR$U$Yzt'yJ^_d)4Om?%#Xc]:v@oVecR0! <=>~(l $ʺȽt~4gt1x-;؁NuEb:0م.q(ڧ@WFP`{ڷݕWJ8B>5:w4Mt0=w-FRt>tApdC5i沱[8e7W>6}8xM7*[.vhin02Ϻl׭ϸ#̽ߔci#7n汙$yRsEQ0]L~Af>| [yimy5 iLH4͵ٕl9;1νdpQv <tLZ)fpqX1Fv;^g̟EBm供Ea2a<?7VSh^Eɫ;BhY+R;f(fh+J. lHΙ:64tCGRPRn ѝ?}3cLydk$٦?_G{gM41/g'ĆiyeۯON 6"nWٿ9 l/~q=;C2w?*/_R\3ś7Ha/nW?,OiOś*Mäbf}vΠbkLYZ?'@(aKKrX\{ |`j`*,0K/5X,g\7ȕ867W( $DQJՒGD\er^$g#u'L{٩!4ËnRsQ*cQQE~?089 %28VAl\ŪBC%ATۻU\+t Ӓy\FuBzh2aYI.~th*BD4O,K74A^&#SڮV~QAy0 E$ ao7(*aXu^Da>_f&Cư ,KuuMU "16dZ`SSÑŐӈL0 7mi%Cjgt4OƺѫP\\:FTsV3lDZ M8I#eq\-mu,KPEEn/j"e^ٖ Ƈڏs@R7HjEz7W!B4O5]#<U> Q),lYo(I BV&,u$Aae9WjB`^%SUwzV: Oǂc8ᛇe׳ *ĥ^oD$pJ($\^z&ٮI}έ[T?G5b7$keQ]_H0pjO?·~c@yHupyv>ŲF8={A]Lz}{?^?=y|:<=!/!&]Ws}c aF$a4=ҢwCwD\;GǛYx&Y"Ibt6I +YƱTץotP֔?=*rc%GÊ~UAU?>A~wQt CQL:w/qEgeEji#` W|l)=7 HХz^_#Il牊Ώݒe xÓgJP$|o2 #EW×sb{hݺm~|o!Ț`!m;0XUW8m\ XZ5 ]J0lKwcU+u5w >.|tu҉wjG?rK71|heiDQw8W[ ! 744{]̐VUuU0|r>0l+k/T|; ,b'#S}  -4WWX_~Qd>?h20 DQϿ6'F CWkOruu={y/fn~oyW zO"2LjJ2ɉBY֯e6Z1O'(id|@T#dr&q]VZDȘ $*YuށI{7]'J]$YV4Cm׋4r-aFM-M6 PMHOV#"7tx6(BNjzIGDcr &nAJ!^nEEX#R: P򃓐#&QΕ6ҋDV72D y -3mirad3aЩXEȚF%B,=q FXU syIӪi ˚c 㺟n0uK3ETUY"j=KTdJKQ-) zIeVRt[γ( QMt2`QWeny>[viTWF8D f+:75H 2(jmi[F43{lBA6^OCU]V$$B*H2?\y aya<]UqDU&i.k$nܭ[7r]CM?9Am/P? Ĉ+Ty.wuY &(A FΨ @8o_]I<# 3LH5Ec! fbGX`?zuO2DX\f$IeyOI2 ]`egiA׋$*ZIVOi;uՊi"0zn߽}M*.lx0OO><6\b~ysu{7\ӳS4lMeqfMo:%Q1 kUxL2;YuqJpp0򢐋>주J-tzh49:8s S2YWÁ gE$3HCgW*sQT޽8zt _o-"4Au,{b^Hҳ{RF1b7A&a'G#ADsٲ *'}uF@"Y: G㉁LQvijveyfQQo4ۯE4 } T:y LoYԹKFaR0-V߂+[& ^`(?ݳNV|SoA l [v61aR&nKSg;wq (QQZ)cTp3-{Ywz})["6 bI)D{lP]dKD}^7ȆxkYVDÁe?AdUGiQv$tb6 KLS8ΞNDOxCwJwTxvN \@w X\m]+^tA>W tLώeM}n~jΜuZ1w"~ otaX}iȰtaWh6u !jSO[%vV!٥&R ;ҳ,ZB+5oڅ;XU;](:X]svew𷺜~Sbai]}yz?=V,w~a_ x~?FBT@01˓*ˤ҆S} vgdQ^%?,Qwxfњk闽@nx'c @rd7u\o} j~2Q~+$Ҹd˰edsz\,K@x0䭒2M ]b܀`b6ha2&4Ept9Y-7E Is.wi[zH AQʜ2pMiY"gaPhRl r0T) 2X#06{]jYC XEUW|6ۆ,0I<Â8rlVrG7- [AzgeEB1 j(o0^-7-IhcMÁMkH© iV߿v7UmpxtWUEdR~np5J,YZ ^ۆ'$J-Ltq) Jtx|2UF R$ *JZ$J h4<1<,@d]UQV2L(+IZMuCN,kֱ♛ JLJu '>xi[y-jrjuvyP״jgg$ ^c.ffM:>Q~||xflRq^,jl,5ȼ8/ǧOOtK=,Wo߼Z/.Ѳ3 =3&p|]s 1vr8,Eǧ~? <lq4ݭ-88!),(p(7Hw|n,I7"NTV/rX%Q X~;Wx&ñu]My7f4liV8J^hCLz~}5|]Mz[hZzuk?aY #φy.~=x`Z=RTgzU/o0K ͲPGQxQ5o:]](cA06+j-CW+l%O/;:] R:G%F\c^=@M zi;5R+FQ-5 +R}oG"[|ch`O;/q?Fl&EoegUK͐9@ݱ !u :|DAgkðY{nBw=Cq'\.Ts[( 6h=Φ} Ը ͖k/vvylv ;##^os.3ۢѶ] dJK׻;;^P# w&U;xGUƍ}ŮF,ۃ`tOMӖuL~_@g!-Yژ4ᙇtMG)sS?u{C 2?o@7?{ʳDo; ћg|VYd 7??"y?}t(SU.?6@ad[jooѫO 9&ei?ã*2 '_$nنmǿ{ֱ"3&Q?J$Ȳx4%.3 /5䰶y|ڇnS2 M%__/Mƚ4~Q f[XV绾+Ud~M*&hbZNM")/ l+]Q,TR fgC,9ogƍ5mQUլTZW)xJ\|0 |20M6LmnKnB%j7ZlG:QC MOǃ1hBp|e;<*1FvgM/ Ai5L{i/",`N` u&-@Y(ݷ}n1>'Xv^{^_la3KhoHw)U:QѪU/wךf>4ZasСn  &l:n,m>xj[4~s u6up::A&j@Gzt/^ 7b.|w%u8}n+l\7/oh7ARwxn넹PMBֽ۩A"u0l eD 0q @Q|v ؾ>kŠv Yc(i:ԀI~vc˫:F'?3v_3<ӿ3=/KZަ3 sb|WOz:"l[6 29 # E/o?_N>h<г@v_⭤~O\+gn?3@H*aW_/ϟZVEyRO4[ZY$x֯2X\^Xפysw;s&71=ѥ'qiŶ1jI}CfYqƹNlc"ʒx&T V$Ey{} qX)$s<'HOKD0XH8 H!Cͩ&Ifq~<2˓r@ЋtQa2EYс(.[z^ H5r띒ٮ"4,W\ b +s-Gauk"-L(?d=(B{l^aDuUF3"nyFwyn{aᓉ)HQ,PDVQeshl>Z>$Y#e{daQ"3A_TV!mBXn SZŹ I='Iy$9Fahab, rLjAi9aYkeqxnU1YP7 8d7UAYq2Z薢Ȓ媤aL8wz(++ m8]&hVi[Nׄ U Ȋ!b}b+ X$IG+'IaY0nVYs,MjlXUMҴۅ" Q6ABY%Oώ&E*RRzt?<>`xUջ*pk. kk㓓GcYjע_!\0st~z r~r6[}yD_ZTeEy4¿<[ib39A}6BD zvy^ <ڻ/܋UPdI?:cz5iv`CG_{ae#.|z_Ubczp( PZ}\ϯ)Ò$3b& ~}U j1?}>n B)L7_^\ 'ҸXhfl*awR1i"v!ۃ.g޻abdclKaL{bgIּ7xٟ,$qM]Cq,@ ;]n.^-fJf;٘unw !tG#:φ<0iGYkxyȊ0{cka ag.y=PڦC iIaőf:$` }|7moK2=xv=Kл#LܶOumߴciDZvGLP:i5-jKTvscZ'2l0L t3-ow յIzyo獛*90@ixVB oa ][SY v?b v?>r}Z)W\vwSK3{wvSaE+;Qgz>:(gX?;#9˸X~Y_}{Z H|SUQ}>yD`"A]ƾɯ "pUT&$ I90en*OU篃諟~n28v_RT?ߗY._ 7@r/W~O?TA2Y4a>KS7;?5 \Qf?@ }!@gڸnvh&щD$KbllxGɬvޮ^SXliK,A֬XU[[?[󣉪0ɍ,GGGC ֫m^o,*dlI]O6ʥӄVejC%anDd3\v 5fT9RI53VaGe7鉤,M}CQE8# <{<0ۛDސ&ATQU٪e1+,aئQa@1"*P+Ơ2Fi%a/]9< Ab V.0TΕ%IUREJʝKdKvJJrԃJ"B5*e` C!|Z&+7mDT* !Y7uHg˛]Kny`H1 g4)3n Sr9PDbWU:ԘCwLM{(< 6ƍ|q9Ģ$f=YWLEH%`AƒK+MK%dc)D0&Àջx5Z#8AyD x(^4BiYPL7j:UcuS׫_)ȵtr8Ҝ^jS3b;bPf)g<}trrrz>.yrc:Á{{y=S r0Ǵ\;}0OR5zXѨ?`I HMmr>%/MZfj{óSMrnP*bEueטq YuN B?It lWgu>H$ f櫷o}+ʬ?iOѣ`Z,VH|l;6IUE>ړG'WfUU"]/֪NM -JCix6- ~lAϬC$<׭i@YtS?9pd oMI4" E^&G$z=g ϙ4ˤ%}eecW5D9= za77?y۰8{xҏ$FWR"t <9ҐP}򮠴qxv:-`di<qhɚ.fgs82⋵kp\yC~d$f4-Ce]On^RA a`l G^y *@t4fv2-NNެyzC ]0 oNnC-EЈ;Jen Dsڤ'! S]ɟAAPݭ@bɞ*؋U\0#*EOA pA~ B7f5ށ@Ch'bM;Ɇ;_5wv2" m?^0VŽmc`c@iaQ=`'/WNC!axCԽ jWZfX{Cg.FEHB/P . !FLRZzAdQA{8#5Ɛ $5ѣ;[ >̙onhՎ +wpڑB#kJ0NW1e1ڱ)ZM. Yv}&0e 16"|ذvdi0fdZtO6)l@tsƎ}"%"d bВ%uAgd^L*X\ /LgXŘdc>_@cWTfdd_sοp(h)d/>hlښɹ$WtjI8G'gE?Ͽ_0 <]S/|9C𝦜J;?{n.5K <||tʂUI[XN<λu%kVj8XWo7T՟h2>~}]hgTTǧoj{wي,a/_n'Xi9ƿz SNښ u B{gb]zӡ"k--!ªU4Tc7j3:P)V6m 39$ݨԫV:#3;?= kK5jBGQ22 Px t8 P.:V@eC7 W(fku*$LLQ!yjXX&ҥ V_Xeą49'ZF5Z BL´֬ou%cƽ fzYW(`U#4{XҺmVu!]vRVdΨJ".{"P Q"\Ԍvza(Z^ #y02izTI$BSh!b&Ԫ!}Փ6 P18ra/PtVQ!ZF%u0i$@!]v8ot5]HTi b!a͚,"Eu]Y0LM7$Yb8QO*HX-K#ZTΡӋ^D mEZE<0t&Mhp4c\iU+v ` lmR:ۚ.·5M+on^@/`h p8 Yqsn(J\Z\UjI"UmSgLa(C[JIV6ª"S8;(dծTv P6˒?vzL0aJ '/.āGd&FcHBRd,mw)Q|2;>j kk:|Bbc\~s͍͵mIWNFa J==͛}P)YNEkkUSָ7&|˯НŒăܾ5nЃI0}gOpuJ^ M\i4V^V`fPFOO!(VS:q]ށ=Yhv}4:rI!*޼ -+U bEbb&7A542%ݳ>p08I#DnV_S6Ie!%qPsGtv`2 -T$>mm۵$4ue,,YqT`2|xxWXi(EY$yTxQeL4ڝ[TM$ᡢ%~x➂{_.6LwCKP_hqfr'ATֹj'uMe<^^~l7MO̊fNS>;,%ͥRQO?ꊧl^_݂I23Z $#J}z[~0 ug{ k͎LUIHm+MV׫v+џ|?io6HW5؝X{جuS$:4ҭ**vZ+ۢf<N{Ã;9HTV"s}h"? keeLŨ5 SbZ!HS5iF#v!$|o?} ղ۶B$Ŭ7 Yo[,q2d:YQ˪W5΄8zZ 4}v~X<d ss U#DuU5#ѱqPx@kUefq/p5ɛMy}+S|qy1,R$ SS'3TiXU4XbL((=yL]>!Ή, %&LxjM" f q1*zQA7fI?;LTZe1TU„'Liư'J;S7@pbF4Y%.zpò,8WkՔ5CW G,8w:eIi(4 wLILE'bF/ <D J K'I*=0ϲ]6cL-BdN8HF#]jqQ*tHRhy)Ag&$NsIzA⍚nB%H,sS>IP[;MnJc㓳8NT^$VJbAa { AQCwXLyH,,m/jG2cйp;ϻj+p; 0 U֔Gx|}q|"gݪ R]]\n7۟f_BͨohVx zl-u!DI .4ļ-(wy&FZ] dvkd}ZR:%q⾞[[Fi|0o^'j,`IʥSU?g[Ṋy_O*o$'7k?~ߴilgv{E̴,N0oz>Y* L7?<=6IHUYត^K$),qpy;ist5e x<ګ-^٩Ӑ-MBsz]+&U5c,AUp4*qNzg!|BKZy.lolğ i%i~ ITkZ0Xjբ`dDTGzZVE}DTXKquei-!7|y|tj l"3F i*ƽx IŊ! "aHM|xu$8A,IFS)8e4LZY Zcȋt^x%Ҫ8Lb)diӳlfuM$4(I¸0z5@TD'iDWVl6ndf+ݪQPt s& q ZML&"TƓP@'#ZiV8E1U(10K2pΠw$AE!h4eMg@ p|Ģ c,So EqQ끡G *4Z,ESВ EڔPe8!lS#–fY6$ M$@9抩sL-bV[V͖4&62L "%NDdwUYES:A4a<>zb3ʲLUK _lKBt V57=Kx仾0@@n̛-T4I DH v7Zݮ")Hƹ'P٥7RjzUR0\ ԙ:3QaL k٪*HB͘N&qƓY19GsV+ $3(:{ I2pBIDqs(8 Rx@k&^ +C+`0ŠIjwuE6jA٠*gsg@g}r{ɘ5#X8Y6Rɪ?=@ D9{^m;J"i65ڍm"gh&.y {Ż-+L 7+HSQo峢 a4rȼuD"aVo b+jiAڕt5!}$GB#>Dz+sDX.~u QeMKi8q/@?7_=ֻ^[aueiz|_ŮE,1zӯN껝黆i݇?J3?{J[ w2ӗ4JiH?Ga;5E0>?|GݸY$cw_NEmƃOnqh3ajng"ص ^60Ut]IDV h` KS TBT#AjjA4 gI64=cfhR j յ ˆ0M3L%2%V, %0 Ǡ 0IPJ$) Q6]" G`:~yɣ#@,ܮ5-SQ Qh0#< Umm̄kWmQThBJŨuI\,²4eiB4N LDZNdEچzTQ{\114Lz^02$Q][')-h <#6WWT]L@@"W/0X"@ba4 r|z: c3[fb:ޝ_=]*圸/.lnn6 P_ &cnl:;kPjn,U%Y4IcXj㎖V!RCfl4%s7d23Af]Y `2J2{;i^[eTUa׫rÃqxrxxȅ$J}iyɬYa X:k/3U,JZ|e6 ]7cPȡNx4^GJrnl,yZHgY7B tpcg%yYYQfy|.d}(l# aEECIDC0gh(L_]piѭRi2Y3,?R̫5%U* ke5O(@h>?tNuˮi+G.2*T~!>J͞`6+fQ\*00W[jBpyX,wEa$Jŧu?Efˏ9.LP[^<+9|Ì繎,c@)13,N'cb(?S0Iq- 2qBe 1's"Xk6 eRi_eʘ•~ ?)G2*_~hJAd1&OϜyy7ʌEg{k*R_#jFKc$)R$CbzM<I/^~w;5+U'Ihv㝕*E,"{z|;w-f\3-JFȏwzdڨYJ8O3t& ա̊JU.B~:w*)M'{fJ͊3&Ko~|A9x:eѓ%r]JaBy>^(Z "`Iwpx1˱YX+MbeUe%{~"\_ix8nzx#Dj …JAaxZMLJl(eyBseK5so9z4l5h:u."̀ X!$)r9LۄB Kҋ>0fӪ-XH'nCN!Kpo'euȫ6@18d)@+VE/罣˱'bZ *b4TUQ'>W"jɈ9Zʹ5Ӷm]XgYIL0A$R +?)H5,Q2W&toKBߪ( SSyOsUTaN0&&M$s! $3.$@XBǐd`)%̧A"IdYS`9̩dI r4v[B"`(G5Kq`G H83Pjm E8Ulh:(!)42aV Jf^@3y? & {?na*FT7;A$ Ɯjֵk׷YlE3qJES7Tޝ׶V 3/H]?>98?9{3Rm}zc Gu?rLݸ'RR] Mzz}g/. ޻}z)K9?o^<~zqklJ6vyö]tR0;C{wu>kc0]Y]{kv?<}ahVխEBLJGSϻ8:zd4zZKk[뛛+]k>gcbNˆDf}ƍ+[88 sQmR*o`بՐ;|@,EnsIxuE0Uh]ͮʄ'qXmՅV(Imln.V΍Ͼ8 "fHoD/u2_]o=7tͮT-aCeQO>ZiYL]Qۮ}RIL.\΋ͽ\A 쥼IQj$+ {,l& #5sM.9T*4ܫK`C 0/MTyjfYPR)my`:dn_'KB4abe|z j~M>EW RD9or}+X#@+KTJ09Gta/db^x"ٜ桁ő=?羅Qp>'j;SRR3-qqp(L4[\~Iw @̏ Ekq+PWf8op&5eO uY6sLfBvlf[ߨ m k楢#enQ19"+QZ,y뼨)8,L/D?3' >U|J[?TRbY7*:f]?E:ţ||xڪݎCS NGn;[Uwm3"J_:xn5? C4jYшHP_ƭ66UB/FӯO/?{svsecds^~w;RZ70..;~O?lCC2/<ظYk"+ -CzB׿MgȗP?ћo@&bpGӘa{SP&tz^YxZlIS@8r*'t4H y9Ś0ǖi*1 Ek}nUؿ zߜz'Zݮi2 dBR!b=:==vd8U*۫Kn*#9ehk+5ˡ!AA; U R5RЉD-㇇W{(u0$Y4ZaR!vG3+} ȹQhuJ>հg0m,MQ0L5t:5 s9PI+K"5;,AJV-U) !gYM?@YD#Ӫ;5Ig41"-0A:!Pi,B)0Q%2rBa4 S!0bUEI׫UHD10&x2p5'@~FDT"+@LgeXG(RH c\D8BU˨*̘a!da<RTT<KT$"_pլ J8 2U.pHA<9]t*BuLiz ̪$-+1|4eBOI^h')0VC tp]ք)RʱvRd ˝\`NĄTX-vw6w s$aV gn^F8'>ȿb 2w{m+*#}w}WUu&dgsYB0SϞU9e #({<{{ީxrt{z|߬{ozr;n޻s}{n]|h!l eIZrA$I}(g &vl=^46,ak+k&ٖGP7ƪwqF +^50+u٬alC4I TEl\?O.PcD7{cva60 #Ty^i@ck2OjڪתGΏ/?I]{o]w/$[w[^CS77Ѹ^%:vk|Q3.H =ޖ ,ϐqÈ"pJbNOW+q x8e5+,ɡ5!6Ω ؀yTf˖Y| ^)tDAVsȊ NTRqO #5GEd-)'㢄~AH0,U *Ϳ&dpՑݚgn(U1GOv@(*8OXR"k^5c,`VFl2˲Y3TMsE_r`UhL#yJUs 南ϏeI˥e"rg{ ۃ¬Ӑt\D%xΈ)B`r`#||2W9BˍܒD^CgW‘'<uw]e3DYEȑ#4O]*+r!G珿|Vu[f1z2~dZ[%vQI:O=xgb; d&|x?[% ~go{?Z_Ѱ%ki<wb"E-]@0AxV͙ib=1UG4y2r ?zQ)qwΩH |K<~ݷ/?}+$)_f4˚rݮ)r2 s؛zZ(kPՊ(pJC$<<9{/y&-T݅j( rJ%& &SR_m+B\$,d2)C雽!hY}6T`QFpёM; BjӪjRGS'zl[ZX-4hzTm^r f'bq T^m(+T$E$nr'7Gc'qbl4U]QS,GZ- .&Sa 6'HEiVj&$\hxӳ}+x>U 8"˶i,ە:eƸٝ8_4i*@_6D7+Y -$%?ߏ|GSɐ阺j, LDdCLa@vSe j2ΈjhQèNNd=*zk4 DDp8(Aej304?8Gaxٺ+`qN0u2ˀTGKwQDDQ,gV_rl;Ef@3pH.t:]pCpSwIeHb` @_Lb?⋯^T͍Z]R8̗B$x@au67! uEY9Nt@,y3l'^-ad:w (r 6SC='ղ ¦mUȬT  M{eh.B{TBHU/'1(m5 IR !#Oz:5ٖ^o6%4­N%Fpkj޺YDUdpxXxnd?p1A{E)WR)_Fg=W5Ņ_?""  xH$VZ3wxw8}.4+ZC`q^y\z-""3ЇW砗4/rZ5>^ҲEv9h𓰶2!DgM*EfnXElXA go2Y.T,֋rQ5Ϡ-D ٿ?O@ӭ:_|~&u:^4?`EL+ݿrE?=xxU۴)gnzr{ ]MXTG@Oͥ{?[3B>?坟[ɲA>޽ZOUM |pyJ# ZgѾ=?J[A$CoƝA2MǓIϨD* l6ɪN,wk*c@r/}')ʂ$a fVciiV);S iCУnZͮR!Ceb[t&h9P| ھLb8MSYeQdfeMbtt|'\,t;uʲKեrn,IJ Q~:˝նY K*UǍ 43pΎ/ϽIL`K15=`3^]\lE#NG$E+-27 uYȗ5at}h48=ܱ]d ͬTPPOD=ߛULh~+vHUՁb߅7`čf4kNSı UzŁmʚ$M]14Դ4S.ggaAT@;hfrtxQ6YY<<_G˚5hr/< 㷲q6\Fe +}cB E_W 0We03yqτK#e7DSv%*"3,P/ X`ѽ+X8E$4ˊWIQ,'WSg7|cyp1Wxj“(?vxd5]yxg{r(1IZryeqq%Q3b k KTaJnh*ɚ,ư" gkJ ]IQޥzE8;L' 5aO twqU0 cA$jAݏ8ejF1 !Pl(H xQ3lTfŨP]Gl튆tal$0CS/NR&"IĪP 8c<`4 qf |3$C7|Qj&Qr!뻄cD(P(~~N%5陪3B7'0n(ﴶִ˵8%'gd@|0F zt; ò"0y4,-~y pjUkuF.]רxĝʚZ JwdɖiVkʫ^^5k65ހ֮'|cOB/DD^0vij(')t^޺cW/8V77kPRͮlv3fuumnWi'eҽHQt2[Y &YIq&0g?ybnjgqYy8a E<hRg Hq+r%³n2d7Ʈ+Yrc{N1az!u2sDo`E>Y7D rcJ< pƾsQ+<(RJr˝[^](.D %ZfK3`]걥g1K3zxB, d%p,B)Icؔwg΢$s"2VF/x5=*4-1\-!QsOP0; Ne9+9c^c)suͼ)6GP=6R7W\3@җ)eW %i 6-ÖhreP%TW/)Zi}>wc9Aejjޗg,_)ō(nt_X/o!'@_Ts?o44R6fho5{6%EA?hcAβ, ] ^\?]v0MFߝ_$ϑOnꖮi! EQtYNODyQ'KLC~P XHR5]Q:BI0BAjM7n*3 5_E/CreB U7W+ńzȮޅI OW!i,-n-~ѨzNbr HT>эNҎꂞ~@) s;jjFxkq.=;s>d []'ŠZksq2z!j?9ѪUk;KݺiL`"ncqߋ07*ȇ+jFU5_]d8{mFڧ饩[n%ϟ]P*Iۋ|B^ FLSW;]5+5J톓Y4lrp+jVs{A<Ӯx8EH3tE)>ƳrWZ+ Ty\ɋaSYVJA a|3=ҲGlW^esrs묤8)p*iv%(c.z)_W! \Y_ykVu<͌%X~XbMN9|Y| ܦ`^[un˞ 9Ĕ}%#^<%XʣХ9~g[677(C| ׼&ūz5>-3Vv-(JD)ϳn.)9 %QjZ+B Gi&?P6H+ra\Y^WFr/kіʒ.|j?g;Kx& Cޯ>g?^7(+u'Wߜeśhpc~30~ZmPQ)zݹBg7xPaq.ONGGwt`zrH(u-"8Jo~Mkͅ$ 0"펂_<Qp iÊe1;N:Ɲk͐,L79;u_kR.'_IȝOTQܭq]o.׾iY0X:Q (͏1zo]߼n!wf%yWʍ7/T& >ӳu>) 23߯^!NI.TUe @fgoI.=0Cr,U˒gDŽ8Y"Ֆxc-sINLk ɨoxv18wcn9F,Me6Z^;=&)9$HĻw[V'ŠmqFj ~x.p^2SGqٕ ;M%J&$ǯvвQZ\QITݏq%S\8` Y4L9ci4MO$&MIa`ͪF T@/ s]M A0y'1LGX)^3]C B!L3q&1a[kڵFS9RY(xZ^x&x>p*3:9Yb'ȾPFYpQEТEyS*IGd2HmD$Rĉ"],bJCx!QQY5kPHk*ɢL w& jc><`>9@Zt,Mͼ"!D v%Ƙ;:VΝw߄c}ö*8͢sqx7>,^tڍj<2T(=E1O v:'M][۶J(KUMN` ]h''’ vZ\݂cdլˀe \Txlo Q#"Pr״~ tpTڷVug2]\ZMQ/O|̏,_]lhyr؃8L0TpbՊy{Gﱌ`=jQqA^؅.Rfqj/rV՚գAVĻ[V^9K fTӿ}}2/.Td {֚^b|dAqh^4Z޼ޔ׏$J|@x G㭍ffGC0]$~r}A1*#ŮbEv]ZYezqq4VV{DVu!n-kkDI?S+j#\\|f$m* Gʫm ".]1OeBɿ2U  !3=L+ قG\<b.b-K҅~v3rbP90\ 3G\$)(,ZS*Y:>7H+!\`JB<6 m=C1R^W(%ۜ|f~YC[rBEj֌I)0뛽D /cq _!ʞ$B)`+~긬=fwooI"\O1Liz0 B4TQopr*Rìz 1 mwh@%{akQ~ otjt: EUD"KVK;hFe4}wʜ&E1VmgݴN޼&SŬkS'gFdeFfЙN(C%cR#b2DFNGvKIpgv[J5F$.S`'ʐmR9P@ȉ2Yjf=do^۾\1աEs&iXѱmQC3!#wayqi2 Kd||rj*=Qt temcVf%t\if^1!8,,-/,u4js"|ƝLR ۸θҮ_\,,omΔ9hn~| zSԒ`msK j JJ?b1szr"K?ܺՁx:`Rtv?Q4.6gCͪ../x L{q2bX 3!RfVzF C!.{VQ|iƲeUEVຨjd8 5G)t w.Gb3U[+H}{D1NU_stZ2- 髃7B?mnR]`jVՕ$۵WX\Ѯl]\:"-,~ŞefzӚUmv{Y[*s2Lp2n((17=#rl2. rgR+3k!y22gWs{,<"V;}g:O! %E!&ǜeٰ(7Z?OaSS[KK(gYKD(qYv p&!(W@T ,1Ɣ VW0|?tjm،eP%89H&G*݅/O#1 4 İ!D,zF6S 6aY> 0HRk_j!Kb)I;$%"Rxphl]~8j/.-!EQ3;~x DIGRoε,麥h[mCլy w0N&+6PdgRk $)Gt :JUoUKkcmYu?^ ,5s7'IQz>JȲU[#^dZۨY+]i0 ^5xf oyQ(DlWd`hH1ypc WC.,B!⥤0dB1)+I K.p՜+!չxOaz1g Ί`׹zW^4 R",YZL"*.=wl{zYK}<˱s>[DɼwE9Ϛ^v rkl9cfg%hWڹ?bˀ|hť&e pRd{ɒXRѫb1.`*aJ /o~!мĤy3JGMGm\.+NߊoJ|5*YMtm|rodv!3w*$bI*.**X pZn7 ͰY$6k*ha4W/ƌELfs>ah:?pi8b[Ø|;ײ1g' #>ʏ[miSP2Ŋݨ'/KE_zǛ-3=/ ,:9oͦ|: /קFV\M$}ӽR فCpzgg_.o[: YAyxjLm(z==JՏ*2}gQ`Ѩ³(#?ܼVI'o~P*wl#vu\_( tf4ᱻ׿7ҚQIi֭7 evrÉruGx7/^RM9%2)?x5 zkxbqdNe7߿۲I〠1~<<3<;g_/<=Īl4Rnd$ZgUhN.{e[]\]h*gBBn@#FM͒(ڿ3'TIcE[Jx(8O{`~1?MceI#DPʪS~wYkNq0KWj5r]ʵz""fKQD\ bJUĐDl,0d^.ϟF!Fn-5nZ mYꖖ`csUȌygb8#b8 s`$c*F x%zjUB99;q)% wMvÔY՚&UںP8vqx%I*]-4Ne%8˺kVc ;Ka!I6 (B 1ӌP1$]LU ҁk"U*6Ax4u4.Dq2=n CV)©.k ש,Sa/H.} Gw9,<i,OҢmט0a&Y!B,3d(^$o ծjig^ς("5h{k5`gra($^¸]ov znDG`4J?>>"<;++vPGcto)%Iqa{jw8APTMj3 ?{}K={ՋH0KV}usmcg yYb_|;4S EqѪ5FJ.hs%4 B׬YYS;6 mm%|*W[]!-}Ӑ_zXԂxgڦKp/AUWkѤvN6 E4H֯]߮ Gia1;?A5X/N-6ALFO&VTT_^4+ћKs|UjRl2 ֈa_jYZոuk3UR`06o4VQi" TW w Deՠ|{M;>C}fmmVIC[ŤmX]/HU*?I=+2TL< )SrokS[rdYQSluD DZx^J^QfEPr WffErUo«jHV*HXy^uh>mU3uMʬH=gҼb VbCn߲zyhwX+)rSyZ!SьJZ3IGtZ>CLc DWrX*i7!PtѼBxVB|b d(oxDgy׷(^u/+  ^/F2=ʊ7f)cf%G1=y4wrlyX!ij"!XjObuDR+L< 2,-\[ @3|#, Bv?^%)<OӳG'7N=XQnm_LxGz64W_~󛧭P.(p(Z:>z6k(o/)vhtIS41P,qyp_H [ ՚mr$Oӓ+ウYqˣ/uusgy^Ш&J>gO$qw(38r]'DY;8<8a0u% E VŮKPZis_>ݻ#? UNu۬VP>,2AV x"XAlė !)m-.U[؏8 ^o{ Enۺ(!X5uUɔřK/ HdX]tKw z#F$eBx)R`Vj,KfrLJ{SQōEL zXjkՐbQUN8 +fѓId()nV=I#N>|yMKtyehIe9MB5ΎO:ժf*#u3D,I3g:T8 x M!UVtSBV&`}X,\? gɄ+ͪmB& 3KRd0zg( Fº V{yuݨHǔ>W=oD4 q{w7WWV- C7E#Co5Uk*iJY!!}0yp{ W9M v5Pk(qqoT_\\XYJeyg7dzyv֎6[*̛ٟY>zׄ*4L`>kF>݇9zvs.YM]غ~ Z5 %PeoϿoOڝ O`^f;1;gO{ǃ 𦁮]ꆱ\5eEa?ꛣ=SUfZ@͕}PxwO_<7[aϧf uW:ڢ}y&PUSbx~R4w_zaإlTU]uUӘ)no_y "]6ڬ5o_JfU ַ^!Y\7V+<}yW+J,v{CDUT-/.D럿tkT&0 7K/zLD1w \Cd s*!Ǚx0x|Oyhr) Vf*p ,~GΕU? jޖ|;"6 $Y2>t ړZ%sAf%+纊-)_LW1.IaVp42f,pE-\KK Œ|BiE(%cB:9hrץKIڝ eT/kqi/f97zF'qZZn-i}ܽHڊT;靼9__&kbNy6wU!dxyͼhkvo&m]t%PԇXrEB ?zdžGIb4}׽sm[a&/&G \k YDɃ:m芪J#C`aҪUu^^4%¬Oq`rUIG#9K*ag^C,gnM#,bI>ҋӥk7*F%P|4}|r9<:1lS 2b(qk5}<BÇo.'ՌzIj (4Ƒ;l,nw*Qd\^h舋H݃sUS0CS6@`3j)y $c UԈOƗVmL?1,#m-L)VU6m&vB1q( gULj@0sUM'L4Vݴth*̷a[@h(a]{깘ʭŶPj'>*q2s.覣4ĠuefNV J8$<:NܩaPj -kVwCU%.Gi vkH@G C[Vjh uLGI>+ZCLcW*͎UX([0i7O$ԟ" Utu0,GN IhVR͋$)1pIY h9bVYXMES"%0ֆi0ά R$MGT$YUxt<Na\N2Te@v" Q9R % Qi8v;۷nކ4n4NA[ gdp0˼,ll޾ss{cElìmz ╚ ᑫKז aK"ǡywB1M[_Z^^j['#/.^T2}FMg: T+:'Rwx\# oc{keѽLa,)TtLP7CIŕ5*)fiժӳNHbrz|F1__^ܹZV\g#%o217{٩pՎlهoRW!nVzli҇''G;뭩; iu[ ˚oN?{ K}Zo,,,fN0]:jȨݓL_ܨ6tw_dlf=7`H\llzE)Eh(3XX>,ZS 1qZQRC1M l.+19dcqfIyɏB!+C*= J+v/&DTLï(."t9`pWl(˜{^::uB\x ?θNͧ4B0sr2)QAgB"ALDYHC+, j7 7:-AlNo8y+l^!\BG@w9<ʩ+rdEM~R[2)U0Yα30+I^z.NxMS$=aʑ`fB/jp|EAd"-s'ۉ?cߜ9O>=ܶ:RjЧ/w~mKY̓oNtMNk2uس/`QG{4uma(W5 o/'>޴1mÿՋ,ת*wNw}/nbI`b.}zC}{r>:yzePC3x/7 j5S^8o|roI-Y"TvU?^F?'߼^}]:B y'hvmCH?ŃhTiGaw wm&S W$p ](q;q.^ WnÄoj$iV 0GxFS `/?ݣx:n-w¨v+Yu$CtFiT9I4D">$JkZ,coOÄO.FQ6S̊вk}`Cf@8Q!NݬR3;f EDvj;?dٶ4IlL}76*iug<0hLU7;+Q";ɐbZYg <(%rX:L`!mɜЙҥR"͖-BrZe(!lEfw0a94ã=,+tW W"sNsIm"C1Ac>]%xs^jn"Kt7{%Ϲ3ůxˬmƊ8Rx+Ϳ{\MĻx!qTi6; Z%لvyFfe`tB$Qx[(Ǵ?S2;m\4&ovDriQVʽEu#BJh?O@g_;JwW-Ԓ%D~~SuMr/$O6kXob??ajD??q $̎.{{rtуxw Uaŋ͏?^YRWKS|GukUp|w7=vxV>XmKc ׅ<|\ُl-b' ~w|˽śW6eSWg_זn\)mRe.{~h+w?xɐLAry/v5&`=z]Yڼת>CUV#Y}Ӊ{[Ѳ'Gy;d>;0STh:]L_<:ZE#%aa~6 剰KC'VvN4Gkݦ :9Os'E7:m]T<0Q+ IdJ\ZiWn"(Fkkxzvr:^ףr2cc9!iʩ[ع G /wtufPW$YIe;bCK 0ZզJDI AcMɢ!*SFtuVKY%O܀>3.=)]14!0#*Kݥ l8ydMJj%C3A $f{p'8K)s,YmJ&\hROQ$qLɦj6d1OC,˄ * o\7lfl3M9;9{ bADWl2ܪXer'`<M*,-,-kCZzafh|;89e(S]5n߼,z8J\hzrttr?|//- :sߤpr p>on/o 42SㄝaW^AEn|ε[7D|Ѡ7=&I2k׮m..U*p5uϟ |0[@tgIh0f}ysi8ZvTV1c"0xZ3.GlCnwuLqvכ3u.-B ƆaVz;L}Ͽ~l=jjNsek{iskkGL@w&cX/=]I{D&Bݭ\[p&B7(6+Ow'~,$eKUыg!ho7 %fQ o-yzp!ɲ]5$_k8НdY^S'{ ʪջR\h/%jhTw$YwGd'D\ZWZ{jL#Pdci1VQb( dbG-o`84yU1VKYcr9NHHt%B\L*4Vym 0:S75f 6+Hx )BK@LVW Uh,U|&1dZ(UDWq,{S^˛BE9I$^jx|A 6uXh27PD[lw}ӧ_ƊJf#L˗Ó߻5%0Cc\V &(7'g sw򓭚V8 $~2LgVK[6T9MJCI}aoV+NQןnn뼩S<}vxiջZ[ØEd_>~٫j \S63h$_^}[xO=߱0ANvd @COlo^0M't@XMʚa$`]* gȥg +*O,]XVk:A|wN r05 cU "Y5QZFP|PN Dv":kp4jՅ.;>. FLP>|0IZ!wnYJ:E灥۫O/'ȪmHjTU-V?Πnm4$m"Ȋ֬xׯ!gPr֨U2[.=Z-6s*bHs@roFYʺP5 ʰ iv;8:>:ē:`?@UYQUJ؝@/`Ayf.IbT쪢ILDyx5/AVL6V[43~HpF2Ndy{msULݰ(v#FvG M1U90ЁBVV6BA4_~9w/G, [K능e(ST fД=r$³m⵻OcT2aLXHȡ+ FDה(77 {ުw76mJ!L;~ӄA&E.[7W!4aIIiE`P.ރאָF΄wcpr0t42lcms-[=7p8_Z>~ema`1w&7/98 @.R;nt Ia8/_9:?h zM9GP!`8`B77WBDLIo2?;;']_y:Ro&kIDab1"٫7@K$-j7Iz(2O;;LuE6a{*gapa;; **UG߃(賓S_Yl{.Laof |&YGUU^k ?nWDsJS#7PqM۶Bƕoav]*x< 勈{Qh/m*QCRy)~Yӛf{it?ʌ8RcePwtv].|J6+U\+#6pG%.WQƐ 3_qڊysypNiWT`ʼn+7sTVlY|`HbfpxVKҔݼ¼E,2ZVVVEfB8+.gk1[r:kLPJ9|RKhv {. l,H\5$9Kyƥ #@6,myЖaWjy2cYTsdsͤ]R8BYr@'%Ώ YܾYe捂 c@D c7 ·f PRP2hNeL+fzY-Y+?E1ͿX5Gbjʚ0PVE?џ1  8͗k|-W䎡d0տxMGU,0Q p'5!f8k/H AȞ/(Qf#Iv^x ƙ"7츷[?Ϊ^a*I0|tznomO`|fGkMCZW_?:;7ڋ z_1}7rEћ;ݷA).N_iŁ38w}aVn_Tȁ7)d!zr%EU3YoV.5t҇&'ON%ٸvުH2bSi g~k-gN@aprqCTMrwOTi4BXu'YgI z Sj(DW%t& P3 :03$) BθNP%4p,vWVABIB_Vd薛D@_ccFBiV Tއl̢+F_\_ *f٦m,vK ! C(M2kzQ#K2:iQ80c  T1e'1Ӯ"$O)$M'“d8ȚQo@[^jYS#GNG#H<).ͪ,kCVtz *eZjYknoWX<{ye?/7YFNVooJ^h5r{e/88DmOwoU0`Kjgd :&n~ gUo w)(۴՘ŀ hJp$SjY^_DR dV:L@Y@yM|&8<ṯ!El$!>۹\fX:+̓H/8!{i'KȐE<5p ĹsuWaR nQ 4Ǭ5\Vj,}KĨ ,D֬ |-Jr~us>8YXglΏ9o":).-cH ]e7W_7L,H3x1AM(Zc̦A23T:^X;0bq.V ) Xל*6L0Xt %a0\߳;\[1KU~yq [mibç2}[* _&/]beiQFR{?nK&*I ͟]6F,go.V6촮ի,M0>r(f$tqr \ν׽w a<ѓ(/~@CK& i]zE5d9=oiEau~<'OCWdƓ8纃3ڔq!(a0ѵ::{ ¨]jeၧHİ*zSIbAq8Q4vlZUQs8\GR,z/N8)Px͊!Q %YZR DlD57:jmKbh2nDJ[ݪL$0炠044C/cadԴIG2M@"`I<HHrb0B ޢ:(<M(J8Xu@/]7YU쪍fȳ؍0F՚ g9% H)JY ̴_ Sՙq, h4t8"3 fJD7uT@6c^~!& 5OhU " aX,fQF2ԘqCر븆HŊnV QQ=&,IGi&{4^4_ͮ5 e4Y-b}g۽i Y4?c)yupZvZTL@;DI⌆IJ~}|94S.Bj$_k͚%Lrr ù 4̀xfs\,C:rs?6P(p[2W ^3ٍSSNri]R|IȠLBmVʯ0n>,QRs?\Bzh~M 7o$EKCeȔݛ9j1ϹyӼ )ϧm(/4<I I|<ء?O@z1ޟ[Rx G_+~o,+w6BhUOet6ï邑ja +~YŃ JH"Q:pϞ5U^#aħW{oO*I wLSsgjĈ#P:'?<_ܾ}ATe)U}sdwW+5U_]^|o2w SH&>u;m-ӠTxmbKQ un\`jfd,>z~.~z *fw|y7Ѩܹv\ӓÜ  (/OSgKMjIFdivܨ57o,,hfl"l /{}9|r·w"4#X>x\2KBw8v7]6XjD A=>ΩI$CtI(\*f}aѭۖ [(jM ׀$A< TUfU:?"LW1}B t(@feR`$*I .4e@pD$NQY4MQ hvm"DVp&a9 !@aGIKq9 CA)nxx!|Wuݪ ENЙz`t1sbY_Х;S-eAN{3,{8SdZ&j!DE"țL;$L3D6k UbȘbB~+L$$l- YT1L'G'`TiV*8[UӨ53",..T/kVUvŰ&,'~wr˺tt>@h4m(fN/ H5ŰU"0DnwUM8~hr8nTi$MVw`䭅.-$!ƒE eCM\B"4ux:0sWCq .5N9]kk= "Xk4\Q.Ef#l<} j2A ȈTwZnl)B !,+Ƃ}Ӵ[jh +K%y2ux79(g\Q g(b5W6~.R$66[ڍgٷ$ěͥϞcDP2A~[fS$ŶÍ$CbWj)B%Z{l+/Rᣞ  RS)Vzy>]~djQ˓)x8PYMiYQH6MD(Īr<,'xO.Lͪ2lu6.{5́P4q*.㔧xpMKy_ -D%V8?׾05̹Lߚ>PBӜf^vlyS(MG_w}Ӽa J_><}txg4[ʸɗN ux1dڣg}x |:O|o_\~\JE5Ma= _yݾz}M*/v~7;J< ˃ Ί2Yvr9.v I硋g?S!"jNNO׭hC#t]?U3H>x3:XԊN~M^=_Ðeo_ޑ a= nz~\"̓7<}qE76t"Reޭ]$(|қ~W޸swi)Bcy/x[w75 F a>l_Ѱ$? F׏_kFc!dV[=V]_0i";?Dw0Q?}s TӨj,tF#=QkfӬ[!iZ 5"ХպA;Bd DMbPFt p\'JqTR`\uӆbs]VUY2Mݲ(hb &ˌ1nT&CO`^X@hXR0tM)ŜXSU$zn&rT9!fi48]ףit)5fٔ!w{" cȇL,Jk,7v LX$fl€;Ή$xC@rL&. ..t*:`eySzc7,X@xhDt5EvjWJ*"2͒ y5MSP'S!2dފY% #h*]YW/.~RUkyeeumJ^2.jgGp+O!Tc[Mk}z$IЙ@i x GLB˶l2"7𽥚Pw~& T"GGKn-.uj9aGǗAn`ݱ֩\"+` -i]K8;gU]]e'л Bb%_QWE"^8s,r1Wf_竃::뾜miK"yw.ZגTT=D$K =3 G1e! W,7%*/Kd&b:(cw!YV,L1| vÀ-5<<ſQ[{Gr4 *rɷ>{]MB,K܏qSFYzTzg 9PY/݋^1E"IY5Cq6^^֏?٪deB^vgehTUI0|{2K;닋RELɏӋ=f6vG5K`;8<9MF;u{&ShG[ԡitr_ hyh:~rרlhwu z_z;5_쥛O&ݵզZՔ8 @-۝x/[))X>K"yo#`N4=;]vF}F d'uݭ~PC|:1͝u@RWǽ_iGR@%HԱn_^СUܻ9zVDALTlN嶩!Axr|v4!J*K@3aJ,Ϩͪd4 G#کZw|<4#&D%E^hYDfs1<9,5@ ?]+<2WXLgi 8b) LU [ a֚BipDm,jL'^hI1QvZ )X˳>nABxjM. FɊ 45<$X֏LtК(j"_RsXрRUy*L,ŦCURE,OR:N]$1 Z{q2<̉jh#r2@Q2&:<B&#PQ^FK* f1wP!8ciokuNєKfE8{&p_>U*ţr勧'SϛʷYV a-7̕es98Hm8S3qwj0厂MKOeǢ X:;so req ;6<"l^q_ EмhiQfes,4S31mJ(L:K Ɵiae  IX@EL//^<bb69#*YQ('jEҟ`4F#sٝ?Y\%ro]Y HяuO۔ "W.G D4 ^-+Ώb-ZtY冄sʰx\/D3$#S!!E9NRZa *  yze3F//冥YchεU:R(@?r$1 =e'>ևܿhBϲxyo~ݕRqG74,( l<ܿ93,b^"<|-+A F;W[ウilR]~~s>zg;zs2 z߲w>\PRkVZQ OHֺIG_<,Ԕn*xvzpųG핕-}җqv>{}f{{7$I$zw,(ݣ^ݸ`)2 ŏK'=|6w:=RQ4ak'ld`8v廷;F$8=>a7疥ov,Yi&l}r{,W3+g<=]k.H"gwV0Y^ji<wCpGy^_?hף$b0 ɲdvKm8!x!LUV nppPGFE6t]Ƃ'S?f̫ F29dCÐ e{LS`RVibD?v(D.M=B1ʰ!.:9`"6NWgaF;26D Cƙ"KEo')2"PZ@ۨ@3v#IE菦(`W 1Ä؆jZZDHPyYFFcL a1SD/Ncq XlFp(lt2Z*KA<ʲčLxjhR!8~M% YÈ7 Z`dBy ;N:Bbj4 M9w ciLEPQ)" (tq V(SYnD/,-.6j5pY5XpuZ&lN$Kbwaem#8Y5)Xnvppq&S8~RǪ$=9ئyB >LK@Jȫ5[s޽ե&6"?$ r6zǧo^hty}mckkbq$IO{O/&0׶!]l2vT5z2agTӄk|yppjjY۾;k *(br$v FUэɀ f҅Ё $iZmo m^b|!C釞>8YA,NWs~5[H]unħ^77.0`<2߬Ydy9<δ؝9vy%|F},JQcJp-hq T%ߔRHXe|%WJ*!PdAE0|NĀ!xDa/|KFxKM#x !oAR CgyWjOH GaO lΊ 8JS%Tz ަX ]K8)d^.BI> U$+m7JAje8ǰyht&Κ{$6?{4|,W|6YoL.]]. p9I/B9ř]h糩ct^1玉y𕚨E"} ~VKC 0VV6[{ޚ¨dz$Ok"xj{lq];wّܹ!! Yjnt0®{ n%_<;!JLbpGoϏ|rwNaȳ,$7_h{;͓o<|{ݍhge7dw/lWtg򃝭5sfD|}vvg/%vcŞNX{g ( n>ڕλ?Ҥ0]{)Reڂ"$Tw{7VlYCLN(f2k}6(,{,a׻PDSQ_4MDpD)J8N3άn)IJ3'y1NƊXZntP4@hR׺!h2!N׻kp(n YI@; <(iTQ۪2Q#[&cQ;۱;vVh9*.I}jQvĹ WL 1fےYI3*$D3(:)2B$ٕzSPNAסRRutcSzd c4“8!Y!cѨ"Z2Idg,MkFn@>fQ3NcΒ ?$T,(g3 Ln)Qy͛ݽ0jØ89CQ5E,RR40 #N|ƪ6H[YXĐ%TH$ odUST00tC,Q %If y@u~xA4#46VUGq" PIJ!GIpC7eTup-2 IQ(||,$Xxsg 8Nm5]Ye:A.%U0 +#8N,w^J\VtuW p0#,ݽS8Ҹq;iZΒi6A P28b\ 0 5Ӹ*)Ӵy]/u q0+"p胄*r︠'JIttdIqVguvqJ!xSM ݉3,[O^!*3/h׌q/BwDͪօKMP4Ma«Bg^>O`ˋ훋ZgQխZFӐjt8v`:^Ih%# \+zYե }듌t8$ =q㧻TU5ۮ4B`Suk'$0L+$ȚB?Z:8 " ؐ{$^eկaJnRO+jue[ r?6nԸlS":yٕX|,)e̫,ǯt?Ia^2IڼՖȉα_f"JZxж P Ľ]Ir|,ːlJ m4+"߀c.Ac6,)Yas楶μ1x".?d,;IsmQ>%2y~ry ,W!m$.DYQnG|"狤xIRoFsHJ#0$EV,yL1tv 9kgWEDwʕWT>-((PX."̯THEyYnv5䱬d[ɥ +>Y;mfs ぉ+5"2&ZG1-u 9Il/]~rr4PmPzKgOJ@+_)X4,8br\|la(,%GBL]J&T_G?ooHF{y޹i9Wɒ/W[ҪĪr==?Ry" E8~?geJ{>EOnטWh uMGt﮶u۴)T}s~Z'uiQN&ߞGzryMwb_H.Upg?vco3ޟ}Fc O{Ϟm~|iVgi]Y\OZY 2]!g/[n48^x|˯0g[m$dD?ݍ';Ê8 >hܸY8Na_=P7*ZǮq F;kZ5P٭k[ QO 0鳗x[dD9x~89:]+qE9}ںl*gmhXl $ݨ0%ѳ'OX.4Mçog|<-,x y(B]Ѭ$Wj]#`Fj-˖EbVkI!R:],Gr QmWDA\)GZ3}tY0G{wO{} @ٮv;5:auŲUPJEOHyj#KDdžڵa8t:ꝟ.Q*VE >7+6BeS "L&Έ}xF#:JVW='bg DU7zHK3$MԴLE/NQc9K=Fc Cf T4#gK#Jn)DP^<8儯,;M8 Muh NC7L\;<<6kŦ$,J0 C9^\cLQΝ;7y=`1QB>=9:l8?9-cbժ5+v~4$TqgŋW>?8v:+7oYjo]Nc<~r!Bfloo__ytjC\ w\R9RWyS|͒A8+E9@>g\cWsW~uTF6geu(8JDX+ޜfR|R,ҕxѫz 6#*mJ']G=WshcR,_xd5aic% dޒo 12,Y"fEOC%YާUQrp)R_Ҳ%L^.|)W1,Zb\RE,J>}Qw~籣Ls+Üy`4ׇXyUQ\$̡hKvy _莬(4kU8E5T,kL_ pg?o|GܵI֮A z/.~/?R4&Iu?j8]/;mDe5>gT1!Od0~9>+Y _oWx`ʑoAdʳ 2÷{#,<ˣ_\'-+ &~?<^^( ^>}xw; ʲ/+gCݨVm[?u7>\ܲUSy~vƎwk2s[6 }}(^5YI|1|ok,5)eiY¢x햔da8u/oz(YmIa͒g`rYP+U*FSYe^[0r~78aܱk8}sXټaH NW/u65x&J^_NhҲ-ƃ}q1=W$epo ˜/E[ۘIdjP1 > }pgiac TpIv%DXEeYzJ8YU'Y*1>&`$_BY;٥ӠڮJ|iCjU`?Kc1Qyh@,^Umݨ$ `5e<4@)LI7-9piDN"Q$ !FHbhl-a@yjo &LZ HYvm4z(5]Ƈ Œpe j$WW +KUŐD(o߸S6@(0N J 0X \{ncB&QoՁ, &MAr<?{jijwssy\Cd{-Wݬ,uAhbXGHɴU'EVln"2zt@ 34Z]o#g;')c̟\ې$q}J{"8LHVE;]/_I5fxZ hX!zZKw cʲU$}ځxzkIr(5A yTBCdهw"?I%_r0"X655OFO{WzҹswmS(2~$7}0{g߯h3E$W߿^k[%ytݿp d2W,jUVL+4>x&nhɷǵwl*ڄO.׷%lu<>8ߩ'7u鄳~˼! խ%yT.Dm"YXb:gG>Y*QflD0U'I uq u?%BPF:3 F dM {?bKⴲҪP+CڄҬw2fI"#+f&:{!C`W^IfRU3zP:BذLYU|?O|c&Pm՚eZ(UWYRffQQ@z:jB\7fq| sut@@z(R5Me"ISF#;e՝(EAԮnnlY%pL`prrL]Ї]?44QltVVeSY%i:xKAωqzֵ%n$I "qW%8sjT( j*߃Θ gY^޼yA‘$p8?b5Fqdi^uo^{17M^;#WLdEV廀;k{@gNFh^ˈt;\"7eww`0zv֊V7AϒȮaH4wi`nm`gR[!M0󣳃onØnh֭h$i""or usVaLznT74UO"0UuuΝշj|ƽQj^{?!IנɌ_SQE˛/^ǎNi^Xrg"KRښ4 öij#miq|\UPZʗgPXEeig=E2"#e+(' ^HWȊ`RU>+ m8ݹY&Kļ]d&UrŌXH8 a@/ߴ89ݔ0zQbj2'YOsαYyŔʝnǪV1s܀e!|5df:2b3xhzP @qSf V@=,KŚ!f b2{*1 A~x8YI|2ffXǞ5 @ۥN֨W/+J!܌ ^ĸA j7g0`QFLRBzZK^H(܌*t%0#@;j(iU(U ƙ%;:zvvycWUfD!7GÑiC.R M%e[vMF`)F< +u7M/(kajY_a `YQsBA1,.u)Q^_Z^_fCO{g`XS2̧ghq3WeBo\=:osrr~trYmv[ڢdW/OT'Ni7u`fm}zqvџFϸBCE^Nܑ;v8d|Zacw[[&r菅f76, OOx*u=* N4Tm泧ï``ALjmzs]iVV4k9聶 ھf*=KKJ<*uǢggB&'oev.,8xrcUW#T',_t|r2EqJo?KsWHB+$xJ)sXs{CRuFE"/fԹ%WI^J9y̴v!@- +fnM}T]AW\q 3-r\uf80"`Y͛;Ʉxً*_JK)ouYSQKK /EVꛔD<$nTgl,zX _`@9_8\]*&R(![ʧx>3soKya|V)w.(>}e+oHaՁ*w3;Z' Hg7V=y>? k28||G/]j(e{igo?~7|cQe0c^ҫ=\kQU"?ëoN"MMY[n-mmp6|w+ [5˾7ͥk>ٺP2 /+; fE%tt_=T~~o 4='-UYUI_[hmKqt;uV!ٍܗS^k{FDFc}8r;MoVWprKdn'Xr/./6:=L5noh:eIe_1_[ma<_Wo]%0e]ޑ(׃/Fmi`YB "Vh}nwQǚ-wZ{F$"J̋OjsghBExL%y͝.CQMQ_x"gG4iVUžk1}Y4Eş@*Z]5wpxt/ bIVdIl;F2jjUSOpLs8![,HVfX#Tit,2> #%OFӪL7T*6O"BJM2Vo<5$$"H3ꬔK!8M;FDd1$SF)ÍFÙNR/U5+gyA0`BZ/A/Пfҙ04wYU-[׵(I^5#IAH$aVu5x\ pX #(i-+eq9b aôL3kkŴ6(^Ώ!gfIHUYM,Ƥf?ٻ}U6dӬ(A)/CJ:2iМ1İ4e8JxY*4Mci}evQ] +7   v S-<ܗWꍪ.tI%><(;Z@_^_kU˂? (W/ f|YzY\d4J=9:Ti^zi[o 7QOAw`T krVѪޥs<`ppvr>6[nl//-n-`"Eho_YZ,]qm HшS8q._^di\~,,\`I2 {OB$׉gnc?yRNJn6Q6Z !d.Q>}2 }ϥ")ݸ2% n$BY 9{n)!d?Kz|ttìijk<*g53e2˲ qS/'A$˖$nis.8␡ԮX^$Nma~#Kz!콍u;9[f In6JU$cQGE/࡬J_^3 }1VWU42CŜކ5-]ڿO[(d=!Z V-yhcZZ ix^d6e5 (}B_J\ͧ 17+ \"e9y( 1/#xgyECxΞ|1o C121U R ͢ X'+ ͌eE9ym;ǥ(y ǥ%\u1cSsP.c˗'|P:=~w4}vX_X1n5(XY_swqgxv9y7//~add荇z/{ͅ;V2iW1kU .cg%OɍV`>w9;BL@N|r1^\vV5[,C}F^<9ԼvgC$z2Yȁi\ki2AsgIkb$aً?w, ¢Shrz(!Q%$SY%v]4!'H'?qRpHe9MR/LEJM!|4eB5=bYApUuxVq3ҫfEG 0 2(Bb"Iv~8EEu~⸡8 vVU8•zMuZIlC7t 'S]؞[4df] s!^eC$aV4*)9R.W)gA6t`x'T)]0Šhu$kc0 \b Y^3IX&"Qowvj4xnSJ u `0seB}qx7?b&DhE-X2WCa+vWbapX&)P9'2OYo <0+#lynRA]Q<,\,u fs8gDr)kֻyDkI~Q|YptiqBeh"^uh,uZh`m 1qˋc^$Zř=D\Ϩd$&%˛Yeu2E l(-2MruJ#ȹ/=, k IQylYfbǔ8PgsPa,RF2^drv=XMXQR oqT3sNI b\\ܞ&*QL "1| ([md|(_$= =>e!].(ik,o01!HH4Js"ZaI OʵpO|vr>xt̽wٚYV{Vwm#a7d!M'?Yvǯ^<=;wOIqSw6n4Yb"$练o˿l434Mψ҃OV:z20}?~ٳ]Eq%Gw_w=tBGdݧOB[[˶c8jTР|8=>9G(_|e,9u(O?7rNFܭDbٳ|Sad|󢾰}V*6y/.yz.k{&d$ٷGYJW,Rb 7jakg qIUro_ەkͭ% a)W` \t + 7ONƧg׾`RM`LݸH2!a}(v/Jc"o-9@~ A` k7$4 WW; cϏsɴm6*2F(jHv}6,˼E|]RYlJe\7T3k*t cljD̪%[ L40fݚAx/;K2Vo[&B5jA3 SMSUb6r}R׫֛I?*)AmZ9:ғ%v4D5-TMAUYXF I$|!d KehvW7 I5Z͐8x:Qvse 6vg -B(gӑț& MNi6a^S I󌃣?g2T50eEym,D&a1zjT,0OYvf(LE$MCO ϒ8Fqj8LUEM"wMUVVlXR*Qj5DtnF~RcUIZBF\ƒp@Ib۵y Zliɒ,42g<::?>:2M nl`o醩[I`4y݇NZ&5k;`w:!҄') @,HJS2&,.p6K0 OR(n¸Qc_ ֵ7uU7&gO>yvа@yc}w.o,VݓԹ7V-04W߽֗ Jmd)W#0g^ˢ4ko_[_oתv?qzCg_?BXxZZ@&p!6˻ߋn̘fV6jKHp[rÓ#;RCbD4[-J/9\ BKzIp^GgnFeKsտaER7IjT#LO?? '״$Y4oxrܩK-eg_@KݢlsaL/<føxSswuafV28dIc8سZt8dIo߾ .lg\93}J2bʾ:{'Vo"!i7{ߞm4$ <򬼺is=L;x\ ϧW_ `"RwL)쬮, ׿0ImSDs2Nm?,v,MBSwf.XU"0fag.<>RKk;% Pdʉ"Sf -"hn`|z[js 㶇\[ q?Mw>V64yX.{7q{grn`;d7Gw.$nZ}4pXus 39\D4 öps|˟{BV]*-[7 1-WjbױYv#ĕJJ K^-Ty BczdjP,wՐs )`!~8\,ÁW%긎(Z&y +UAPhYh4>D|&iE1KeMv<su{R^4[=Y<(Y"/r6#Hr)MS?61@PSTUq\8a$ Ⳇ!q9yt !dl) > pfwiwpPY,DAƜ83fh 7Le9ĉ H.*s IC˲#~#Iedac(%9UA~7dCm"J!UQlݳӡ/@Їٌj-ժrX@Qb[h0<<؟iIy/_,#',; E΍ZQgj6dm #"t \M.-WD)ߝ8RfZe4XQG٩o˅ڹF\YȉϏچm {PR۟/uF0}w.;9o/!2yD|jIR(QߞPjK?%`P[oS*q+EB$Jթz眢R)ţ$R1'" x/"^i( b^I }⊉+~,K^,Rh8mH%"L,57T$BLqKϟt*,^1>>^k' FiF)2 E/Np} iDh*H4h1^Id` R`PCi-iLb"ۅ1Clq-Q-\",бJC殌IeL^/$2'qc/dz5Fh~'R7ֈIdldp%M "J DU6 Qb3Yibgl ZqB&^&s7?6Wyh\V1DܜY静M0@2ԋ<'݂Ko d081oX ϩX4OIےO=^)dC'x|ꜽv /*ޞ|Tw6nyZ CO`r ݮ5M䫷㳗gS13Ymj8|qpN~ts;[&i?7[x]5ͦyNِsy~3ߎ6ߨ0?}n473 YprUUsf|~CT䄐fx;տ}| k I'#+*Ni4~r莌? }r}s+yV#9tm^<\w֪SRLmyR*6Rs^_J{圂=w2_NO:#Di $蟎ۛr+#PqLw}"キx/Xבo(pݵ=t$E~6M<{oH[k^qNBD!~>^ǼRd *G<0@i-h^L rH ׯۥؖI<@Ȗ6ܹhe4?p!TO.r9Bhgs|85,b JÐr)T)`bm)@xdچ2e a!dB̉ZXTO( d!D\6,xQ<7MJE)Ӊc:L˲ˑ"T##K}j U#LX1 bPCN"C@ bFd2˫q\&X)gvO/eLj*L~}u]Vdk^ݙƃ | |B.Y][2Z! )p=ϱѠE;A$&gr!RRs9#P˴| ss !F3芥\pDS@3m3(K( ||#ɐebc軞i nO:]cqFS[ =| !bϵ]Cy!_r \yQ g'аb `uAV4U MaqÖ1M#d) X*7vwܹUUL}3fG=E xb9.HhkFr𧙂.()퓓>:85f3F@kIhK(ɞz/!}vzN1 =&*f3BAĀϣ% ,T9;%*J! ENؖz"$N:r4[[PXX]h@`?887M{zrvvtR$2Z5lkyMmTX~w8^1;Q\8;~}s5$C zFiOD!kn/0YY''3xA"/3{6 tbyZon 3U жf\x, DU̬w2/ gGi!8Iʀif٣d6F]ܗ/əVnuS-rbؐ Ё:8% V$$tgXʨ%NI+oQKC"e !>NjiEb^]~/ncW4#V& $x-}(U\&(Q.GCq bf%n V W8L-3 ` )Hc-ncBt^#X ~C мrn !$ZׯB#61ǸLǃt"!ML飃&$ tݒ!1ED fq H TEeù, QΈ 7 LilT W$)-VSj,6H&h3Qdd.Sܘ]Lr3) NhRFch0cv}b? Lal ]ˊLL>cȄg0-`r1KY@ \@Efo2QS8MIl|qT&&!p~r?Y VʩyO_Rk~ޟޭgEwe~mD\8׳_MA]Wd~ɱT#x4ӿT.oP"$O ѓ`|pRmw'ľ>?LOW֋J6(6?~PASDmN 7۽MdF"ҧihrEd6~=rNޜo~fV5ߥ%۬p3}DҪahY!d7{ wYx%DYcہg/KKn*BX5gXx Zs+^r}Ax6;;Ks6IoӛlP N/^6u!h@I>kYEY&EH,mTdA I@ۭ͒(#n6ѩO^TYn^U!r ?:KŐʒ8Lyt9yj^Ŗ}Q:@FGG󃣓gO~7JTqrCQ \8׃l*Ōd4|$ kBHMs>zUC:{xTB}gDIHH@ʩ2D(R9y^}uRm`EȊZ,jJ |׍)bvS0h qJՃu7qK.tF~)bPG!SISb[Ȅ2Z0%1oki4̳+H @O'XV?8BI|c;F4 @!i ҙ bN͝#(A {͇`Nh&nr }4/}t$*cD(%dEc0 D6):9T@6$^P&43[$.F2  !05єz`^*e3/_<7ܖi8Ρ~7ʇhP6o}E} ©c~G'%|dGox/>QͨY=O>լ(B(Z?~~I?z%峲x7Zrt^hpoJnEQyh!c'BҚ8M\Lo7vA3tLi{}{OVr L ~ׅP;p9YMWsZÈسWo}̰:_}$)pFW/o.uY"UOCF"ScZ=/$%)ab̰-!D793ۃ~xWa&c |}.Vw+y2jw^K7o/)2N{v|(c幍QIo\qSNo{ޛo8=uP=ت#Ao|% 0O}XڽK3J}ۓ!uXe}}$1iv3ʹ~`#dB#*{bJV?zfrrѱm-/RHBB q.Bڭ͗VC8\ Rz^ 5- ~VT^TKL(suCr̷m"0Y Y^dd zN0ELÚBl>b/ GM&a@脘m2'A Fehoij=)%LSQhT* "PJWy%TT"tfڎℐSc(CB|^y,yuxRS3K(Rw\!ZEP̪! "1q !h4za6X늖kZr^< <(t)>Z6WjZVee~@ nثa$pʕjZxt9.y4Nph[рswזּVZ*\ߊ8 ٫g:6q0VV6[KRAVpH: If/A.(YEʬ͝ͺw4aͦAGФ6#SVVWnomaXө" X!}?[a\R&0YLQ݁ph6w6woa)^Ȃ(H<@NǺ>7l/)%#g KH~d<{f4CZ[;Vj)*!,GgeMu0VVׇ#_Z_ LUd8i ONOxrr6U+Ńt.F7l5JRM{ku02.fatmˮ8e=?TjEѧvMDO$~Vs{Lr!RHVRW5ynvv>,(kozQ>UyfL(7Ua|+Z˪VgZ,B,1a'1_覙{nu .fRe^iNq=1zHBwk:5?ROJ[)KRX2Gb `8$&~-iZBJ?Rj; v0ɲXVR>0J(5[ "X0L(L <(7K2S[ȨnJI 0/,!Nc-I@\.`!EVi`Z- yMM+RB(=-nί-$qbhv&5$h#tIRR+ҘS<GQF qYH~:)K=_U[y$Zdc4QN 0JPe.u.ާwn2Dј=(Ws=i~& |b$/Zɕbv:iRJ7_s<c"xQ ]X5.&XrQg:<e(nrΡgkp9`\ ǽo/ߌ>;2 )ЭmV)mIߘֳ]{+;"Է, ~On1\$aO_+۟lwl~DͶn" ˗"_$Rp엯r\_/ESu0~HP2w?Z )"<qdZiWݩFQs\ҰfS&E~˶G?Y4q' %- Dh' uⴴT~;n}x{ZK#D^`z^N3?8۾p"áO뷚yxP7 F*fP !ݭ.WsD߼@ߺߺY>跿|wa.nmTd}IEE1qZ[\y˱O\vBs;+MgK VxMY`"xq6%~w4L&fgZ]6TM7o_|!R7Cf53 38LOO2jZ@z138w-9nx×tfb!#x4=11Ǭѐxe㹜 (۞[.,Q؉Ar>\#'pa0z$K1@pRFfsqz.PZFQTj'F3ADy> `^)R&[5M)#.dzr0Q`/KUO11p=}2gnٞF&zc-dWÜ49ZFCQ=$6nnV8/-@iEem˳@wM g!!9ꏉ5|&ȢQW7֫&HXV'rB>d$@]brQ(ߣEH]\\H tbDsX**(t{$6[3NZTd4<hݿ#xo_D8 P ꩪS$C7z;MgmBXXwk73Gɕ8MuΘ{RZ#>F\ 8E.;x֬7>zkVCc{FU g_}wvzQ͙=T&2;A8<[Y]Û`0JY5ibM-5M>8<:;{/ ["eݛfs"y;=}ifS2yzm֝V}5u \?4hIϾ}l%E`k{svQ_o9t9Ѐ /o^;8<2rBx?Auk+:H8M&cewfvHC b5ā>/g/ݱt<9,+G]Hb S5y 8 ǥKi M)qM_b@,O7O -$T& Iý $%qyȫ![+KC} 27 Iē-rR4kF&&,LHДb03LGoΙ:Ē cǼԜ=!(NZRĒֆLhy]*Tv)OR*+6w[]J4[1GD͡4&wxe/DfiCμ@Ǔ\ul27q Kc6:"a/nF@ L|ؕ`?Y|J)!/E: 88Exv4Ïń} Nw¢OG#5|uDcW/W ^s|H.o#Mˤ߹IRjPd|b]GIKbUc"^6Oo\(M&a€&Ã]Lt~WgG rG+ p|l:_9xx?] 7Wk (`˶KVS & 8}#Ͳ$R`wvǃ"fsOGms0CGR(C>|.dRVB>-қ nbQ|?;ߝ~J)֤7C:~}Z_Ky,0c=^cf]Eá9ZcqRU. A 8zsm5/Q]L 盻k%h)\(ZPc1eى!Y4? jre 8ccݘ1E@8ND-! R9b,pd *D!("1P/c^T='Q3NJ,@w2Ŋl]30λO=DZ:%I\-4F)tN6bɶZcN8aۜ{{{ְl6WWwvֶ6gl4Ɂif8;o>Um+˹hxve{eY27nj6kR{4$ 0Z^tܼ1G}iiPi!P| ۽P^z| ˵[w޾su׃"y,/"zR+cXPQy܅+ j.8H8yߘ'~ SXϙ뉌0E\넂[L^#eE#BW`BCں,&c`v1hDB&9X."^/lq e:wd*qH?Mƥ"{gXWїj c[*s+248Z?7,b ??s+w~z##$B߼[!ށ~,‹3}t0|`Tcy򢺲rNqRA7&__|[ Rޫ3XƔpU7nlxƋ෿|TxsU$(Fǎ[ ޮ gdd_#Nof(§ +xu<5rg:_\v^FY00b;^*UǑ;ɫniEﲍ?Z,:$ 6_ka`BCQA[I޾\VdI[(}D/<A,&s#t.z>+;奢BIpqv6Ehوzzlw֋kuI0-aE*w7ۮOwNP[YپkOb]Ή4{SНy"0q 0]7F;x州1jV"FhpvqQz$_)(ꏆv]c,,."8^2Xis9(ϴ C|ӐR51݂((e EAR;Ɗ"#ωX4(e\e>F`2Yd ڶ8a@gQBMe &=Q1VȊ)pKM332,#!hSNιH*`8+VwE!7k4n8HQJ-Dr%y{;NFKXg4JzT.Uw ;P?mp0,wnݼw?[$TDM{CVLJGOQhzx6b,B,1gN+M9(Ns|fmwc83*al|4;KrUEy1}ق)nR!" M>B0vk \*+KU Jn4YuxtmI҃w'ZIxyF vLGf~vO=ƘSUZZ xs狊}<. GN.!YTJZ` d>Ht֒9=WC|xI*b>rR^r[GZIA ˾rV8lPYV\:$̝<+-qIYD`RuqKN0g.ӳ/0/&Hd&U$\`t$5!Zabp8d>/ WëԄiq.  @&t<): \*a"Mj0d1Do&vw1j7Ո+ZGG]h0&&(||HIB&f[:mJ2q bXߦ#y`h}YH*Z$])@J/I)uɤK+81Fd 9D(_hIbBNT |~8``:W)]7tVC1 %|q2l%ı#1g }زp&%mv '#HڿMZ]jv^]b݂\p Q24,iI4qs;{ Hg?}z{w3.ΞoʇVTQ7z/Ίs0`t>g Qv|vO>X!i<lpl[*#h9OpĜ!ߍisrk7|78ݟnwKEttvC ^q?7 WIhҖD<k2q8U( &b#g{Jyjֶ1eg/E~x~G8긾í]mT \vq]ǢN:/OBz =vNrƽjQ@?y|M`Ey ڌ=|v νNPEwwNQ`Sk3QU guHnAeK|2aHD !K={CtcU m7n,EȢ#v:aV,geHH6F( Dܹ(#Ş9Y]r2`8DEt* h\!p<(zQTeI@Աp$ ň(!Z/2lG&~% !PM%IxQ2Pj.YƦcӶ<3*rE#YQ(I d?ƾG/%MDExIHsEBXdE9EU՜c#Ԑv]@}EcH`2$% 0"`4fF5us6!IőTV%YΗPTdY(sgIXSYʅ"|(`vPS cjc#DS|LNȯ~(tۊr C<9%W/-ubʵz=E$=߲LF"]_ _RjRx@~χ 0Jiz] "SD0ٔPZ."͌0Ok*yvPHPuC35loFɔuAf*!|bٮa}d4v_⸥Z!`\Z.4&D5cM~7 mwڗXdlK\yF ( !݋ah<J-/EʣQ^ ^0'N'jVahXΆmW.ΏDA ٻQ1ZeTls'ԫِu2 2Qv&~UT-CZOF]&Ȏu; /v aTZA}r8EZEyb{>ǎm5sYUVdc|u ڞmƿZߙ#L3ڒҲvz>MoZobɗJuaӽ3)mlU~zaKlS@%ET(VzrŠVW4Uˈ4 ((Us66sw=*|,ҷW~1Q 80uAʘԟ䃔Y`- eB' }` <'1/b IPB4&oUwx6.(mdՊ6I,tV_%q$aRP]X IP̩,"lҮͩ+J'KY$ :b2) H1FԞ8$ Č\SEjU\ar4v*MbB#'=MN*^@+*1ܮ^y " B&%VW0*h#\S7p"5449y Od`~76-dQ:JA=^>/f)XL0ID}x80<XK mn1aI}w dBta!@\.>Cmm-2 t,/9-EMXg߾<{ѻ[9.U_#ߘn'2B>!frO*C!'[9@eW<1a񐡃'ƭUz)>{sO䗷H4柹|#Ty'+0 󛯎ʒRV%Ϝ_˖6~Auo珤 ]z_g\U*8cSzң̽[+*_1>r_}~BݮCdB3qѭ휐8qg4xrv*y ;mNgOF.˷Jmvt{gOgFq>=S WU>fpWVs"Ymwb ޕwߺQ!zϋ{C|<.C5/8s`o<:~ǡObM( ޻wެ*>@ǗynyQcApԙzP۾Q&PX-H 16lvXNCQUV*ƾmOtOڀr[%" [Y\WO}}:EO/ޝZ9Dw{^w:R&ETRN\XZ1d{9ucc VjZVa3lV=@![ȕdBh.z$S$S Þ&洬 c\I&YP)E'l0B R߱-EUʥ'Hs(eDA%nE 1!eaJ&+0y+":Iدyl 9>j% ̉< x~:A|V BU-B-mk8A\3-yKHZFV5'Xa K9cdFS3pL^7ao8 e{4YkvfPe9F(/ QW݋6,M$ HQjZZ B&8J| H"$'bnEm838i:]\\;Ik4\^6jN583}AY~99f=3V13eۖ3 Nё$Ӱ[ r5 X"q'`޽C+YGj,kZ*u(`5fPkg;nQJP,6l^ @1}?a:fZ* 1gx`ss;HO9M|w؝X6D0F7W.{l1[Ȅ-҈笮Tu#s1 ϶"7 9Y^k7Dz&n6/72@ᓃ*{35g~oyldAwcrvѾ;lCQ-|DɊ,l/qT~VV+ښjp1ţ3;jE{?:@Mbr|1Kf kebJ\GDH1S3_$JH鿴o.T-\wIr=ى}󄨤ڨ$oS5qI1OZ)H>.jO8*u/Hy3IH*h›גs5UF-0a t_BXĽX,]+)>Mͼ]DN.((nWJ14!h=_Cx><)a2Lj\Ԙա)Z];EOJe^G o i]Jg'.bQfkˉ\& 8SxPjp7_E)'rhr(,eAOAMJZ̢? o6'P I, M-!aRK VS멅qP8bW:0zISJ$6 C]38m+^}g7W3L(볷7Zf-2&>~R)o7O5<'~zpxGW$oGxG/FwQUey3g{ޟ~Z,Lx?/ͻ/r1χo|w79Ͼ>MV?]KA]{ne&ouw`!0NH?9VZV\ǹ M(ܵ/NGʝAV9޾9 sx|]e}%b a|sPY\[j"&M^[KۥͲm$[ݲ$1:MN9>'pe:yqRXY0!pހB=gM׏|=tq#>AlȁW]w]Sh|<՟`׷7yAq&V6@yuړVQZm (ݻMLkuu BchP.v91y6J5H .E;El.Tem7XU| g8Y݁ !@4ٍݏ>R0N'3[?vO(k2C(+Ԛ-N@ e-[/x\iCS۰xYY3lA)<03,2Fh`0Y@5RH`^\_.VQT gt2"k$5ӤHF(FU'&?QkټKA4Ed9<@`Yg zQqRr\.cC̎HN^8q-X%EdXPe!YMw#P$r!q9_?)*"[!X]7K>8,!.^d31ġ װ?<;oQ߁э5ťbdo)%v;tP*K5zQK|^E@(ns0 9 aJV\[]EPR Q^mP mnK5Ms& ݋h I(Jk[Zu A6v1G +RToln@1O,f:݃ $xpr(pjH!Nt4|36Ma6#m][)LM^A!l v}ibT@KBFed\כӝu3dB$< #A8VGGGJN6={VXV`Nzw1޽|wD,~歍\Nk*bzq~%㓣Q\[ 9Hhlnoիy\@9# +Cܣ\nZ6M\-i\IewYJTO/)j6f! s$kDm>|uq2o)-I !__*hE๘1DYHִ( W4 %q@)H I%KDC AEbS&BQYnb{Dl^Rt,MBKNFjuE/%W.q#MW.YLҴĘHR @j~CҒ*'d髅[a2&)Z`Q)]Ĝ)%#@ .-^_i$|)Xb \_ $2aґ.Bav]X.9&ihe\st ’ Mq,N^|'cwыw?"QLIBv.[iA\4fh*RE l_RO6؟ d'kW(.@f,&,^'n3%J?{.qᤊ]ǂ!%aqrA{?g?ݚ"@?`W!Wi:o'FE9rկ}wȊ%]ӟ>{ HRO=B雁O6 ̚y\^Y۽Q. ~xZ}Obyf!׹@S8ϳfݍ"g3/Օw 8X漿?hmS<s os`2mO坐,$$8׏OyyZ!h_ӝUx?-tg ȈR-¾9}zsykS 4T|bʝfV8u g{Kܻ/,rY͝$`~4]Fh<=WY-D)5,sLCl f]yv/t9\Gzm{[h< Fz<2myI+n39 [+7+ZN#evSzRI}kJVTA[v`R~n0_O'qy\ġ {}Rmeh@B39}dzVhG!GR~$ EIF`tB>ścB\el6g4qf]A0_MGDlIDk=77RU1`6-Yzi zDZ"%\C:Wyx>;&Q&j Ո.I@xI$3p}˞YK0CDU qZZƷ\?es3,?`zkIS"rD 4LqG0)B*qBdddCc3}4NGx*pOѴL'IB2Ft<eJtVEU خed<6u ضm!8Qf(3$^R*Btc&d٭[!0ڡ~Ou]ǧ@,5yQ,jn^`L%@ae@j, TS5IL3= 3w2볩4 Æii@6=OOeՊr.Z] ɔljg'#=(N|ieRMâ<Z3cz|rfɺbe./7Vb9u:;kae4힪JQWSul`>V6o쬮nߺw! J@l7TI+'-%Db(f8ӷgAOc,m^Z3]'\1 M|ش,}4NG~RwR-2rE`oP'UNP7'0Z-d˙óqQ$>rgh|Xo1cW0q\eujV>#,÷;P++EUN&  Fq[QDF&C̭QUӨJ3xи\dκ]g3r,-SsZ02X4RDx%C@_"ޘ:Fe1_:^Cb6anW aÏ+O@X$!\&\RB$1  $σtn&I^rƈ,a,S$Ie qE 4滮"@S,GD% B&9~k7-F'[Y6} #ic:ڍ4jLH0'i# W^11#(l~,%Ev"z9m&cu^!R@TStܼc0Frؼ](c X(1 t16'$LiňGJSHBǤ݂]ɭ:tMs~ 6A\${dD^yb^(嚜b!0QD\r8q #E@{\^Np[fК"y=%䭋o[AnY`%#?}+?J0O~j(3a߽뽛}+ dSC={x<h% cO?SW$A߶~=p)ݒ׏q?ZMgozF{skFY-Fd`qpnMmsg??tu>Xωy8~xzweΌpϻN˧7>ٸ["9t>><&7~pc-Ky8q;ҏ;?/e3gC69o|zֲR=_Nz[+rEGCQuFFU!gDt\meYk01VW n~r7RctGc7^Yh4<ۭ\%={x1NZv,ku˽ Ը[|o ߟ[[:faUlF!4pb]+(k l1s|͜컎gCݩvlUC֞(P2?}L)w67F3˹JN8.2vle@ <}$`+%% 7u{]۱R(ϳI9AlF!پ 6) iR" z3t9 X.iѼqSY>pZdN@"J`lۮ[B(a9 ."$F>ئ#yA=l[i_̖ YU cOB0p+#.C\1WUUVo1 0vgpqvJRԲ E8✼>rI:H8L[Gf)SAҶBT̗lȲxF aWVCR Qa8N&w/_=7l0NjJR*KrdMM'gb4bAڻQPsRSs 1/DgG9%jj|#4&Z+Kw?mlkj>`0dV‰PH KtD^TdUjٻRhUKI1tz֍r=fך.9 sQU0 jɛΎ>Y^Yk,-/66K^{@Tx' Ѵy^z{x*JBR,`4a3O?d2L%k˃PĵP* `Ե>hB9}q|%'/$ٝv-[͖d8Yrqoi!*n-Ha?-.C# <+]@2o %{;7ÍҀlH l K$= TLC7 M(LS!bt~LU2)HkӹX  8v 94$/i^95&J&^^`^ھc"+ Fx[zڳyGbqTǒ*vBh+'[Sv hAM 8jMW6N3Gn~WEe64D(Ns4 94^>d˒4&<9I^#ȑ`& whrp s0~[\֘G ̗(ɢӌ28GĊ#nX SCk1>.1&o)}!ql!yW=ͧ"]|% A Cu Iw;?ed޶课94Oѽ?(ʾ80Ϳ~u_'w߫rO uW_:O=y6,} s#C~w_eO<ˊ\@w8]l+ߞ^~qާ;<3vhO_yTY[֋˷ԛZ_7h76s<Ϧ.mԖs"×CcA,l?jܸY/&^~"޻g^Dn=ud$G_Zt}[_;\S`؞O޵v?S<:o ,>Y?Y?3=4Yq应sɯmԥ:.$Jg/{p~9"<[-<ّ|)2<߼:a섖$m+C(*p:zuf~uEoڣ W+VcqfvdLObSy¼V.I`]MlY~|U8 ٻW㍍J33λ xhewsH"Mbdgr#)H`bo:#Or^G}Ӯo>\\_<}?˚)%ţ "UWZ.7 a!h9DQ K RxCܠ?NEQQ} -y\u9i< #tbN@jZdԌe { b 1%0^kU $!υFu^ LaJ0<),FF cjRP D!4B϶lȈ B.tSo!\ o[f^x6yE (r}}fđ:4(UK!A'5m+|麮,FZQ.>`!DG!vBS,ɵjy{ci?Uw(x<;s5 MիfcwgŜI˧\U{ӶMFXZVZn.VKDIt{H۽x؟)@XGl>f)`hfV(t{ZHӲTG,T92^prrό*pg R=XY?:P۟t{뫞ƆUirU.;NO^ 0i;[ka|Zx'HtrtN-}8_ Q^+ KKjTL'3:g^r{/mO1#iw\*Bz y0vc{%SOB>_,6jjAI ds f(E"*J^:퓗rJM޾iǼ$Hl՝_V(߮dwߞx/f3+K-LY9eGSK֟^b9KY' c0IvJB$4-܂SP0\x2@h꾝&š]:m) 0bEhGM\@"`o!7P>G)I^@ KS XK8m<)KEʓE&a)`ꡍ! $<`ŴY4/؏DlJ H-w4"oT*GdOf-p@rCFYfx.BJAt(4mɰ,I?+[k0 _XLPSR.:&?Gӄ OBIy]&K-i|,'FDt"%LAt49<6,1DCsoT7iG,?=Nxn7r=yl<<>:h`Rxg. z] 49$/2%S~?(W&SMdӘr 1ֿB/o2;7Z>_YTs=7QO~\AQa/m|Q4yG6Up,Of_G/G!wWQ-#2I{tx0g?p Pױű>yKnDl0N{;wF?ey)+D6s܃^WpGƃ.g<܂rL޹E|4~lxaݨDGTs}6?c?Ը;8<1Bg]NVk|vc\ O'|{ݖJ8?piw2k]m"*$ wqvs}H G ֚s3C?N ux0BÓ3$b* fy; ]P 1DH>|!if%C>4RHw L lCr ̫kRV8O.n# 2,Sͨ:kwCxqFu2Lsv:4;*fժ4bqVu]q`8LBBo_=b-$E %ځ/kZRF1f>@ժJNQAEEĘvBL}FRA Blzy~};$|g!Lngfhf(yLCXXi:+exBeK 7q~6 zF*@qbiks1#=W>ߵmg m9Qb1U#S♞ް7 PVTA&EC5UIGvAnQ[V65OGñY, ((ByR\ 8=z9EIÅvxPiBt<}ǟ|R/ Sݰׯ_>};;ooؼuZ8heݑ퇉o^Xڧmw{nWM`zzr,!y|~fm{k0)Dp=1'/îk9BwWB:HVVfY;8`#> 9kĄ $fqRӘҌI$' e%ysWqWw xTb1pjg $0o( \h$Ka u<)iI!p?oJ"4j[%75(u[`$xMg.rc in~꘰Ei>eBS%($X4;Zt@/4I4T%:\P D8Pai)50Fb&n}ޒeI@3FmsFW1#W7R.(%|lN.WoTd B?dto^;y aNP]B;]wS%4 M7oGqKV^2zG]APZ"Q8ȡݼZ#̥t{߶Ow>zЪǞ(m`U-k8ǓI{jIԩfN% a9V.XS"j>s( vzvlh< kQ)՚cY,ײ0DA3uI$g|ՓO:#+ >qLsZ+z5''gB((3W*ZVSsYFsp>=? N ^+ ˕j"U%AQb{y. eQ2r< 籠?_1")0Ɇd)40aS./gB1+PxUR W(Tz$`,Tweٛ;A9WyQ̈́J&Jixxiaİwg# ul%&AR3l-7ˆ8n?Ǟ톭> \؊l+f:;un߱uW׵L\j5TY1hslaȭr1_+ $,NGUFOO8tLkZ;7vvwCH9aI>}zTn.푚UnܸT{vFO'vzFy;;۫a!޽z;-AZZZ-5!4$T흟#Mlqms0d6Ws͍V\vrp+|HWgf'bZ.pǣo9Θ֛A { pB(ur.qGA>Wpt tsRU7BZ-+泡Ovdp2#F(EIQ#0EFK_-b J+J#j(;`H1 ĽR01ϳWiJT] ]H=(h;E,)dC%(RJ/wY|O.xB%z;x/I`OU(u0%#Bҋk7Jp0LYqGo1bXHءq~Z0hvbxiŜE?~,xkPۋYX`I]KտU·~yD[?ҭĔMY ӀLGKJ ,A(^"o drfS!ِ.Ν$"zD_k&a?( G->x7ètfY\0/ʷ?Xjei&/|lcmzK0e_ 'GO>^j(^izs rW?y޸ڪYu]Î947j99o_+7߻Q."mх g\ʨ l'B. -kI8sQ^3*g尺^pݡᅌzbXdc|ڙ"",َҋ*,̼ H{ˀu7DU3躞y/LF2V"^1e!![̕sP.G!1/{ecX"!g5LAR5ML7LfRJ͖TY*#͎ONaġ P"@8eBGOǓˋRa&B!yNNM\Y8\znR$2WUuZW<]@8IPݞyjY3,B"i%ayzFN`'TwhT.M5S}~r4hQF\BM)|NQ!() lݘ NBύ]bت%REݰt<N'C"/jq$L6jnOPAr9ycslc9@z0:5EFr暠d$YH8pL߬lܴDb^(2lhxj#DzQh: {L`6YY_ xmem-I< ͕NJmG^-^& ʊ(4FYhc?++Ɇc #]M,T3a]Wڗ,)ajVT(3Qq\g[~"X{*KV+W*TT%%Z'X3!PKzzj1WDồ3/0%GAsԺ4{#jY]HJ~G(×dT=_}C | g;ݑ!zl>y3vԺLp9AYK[Fp[xC:IKݥd{/@bPZHBqE`! cA)8QP"L2ojt~X["%IH^)& QxQ` \#`R?5pLB H@DQz^9\LE`ʪ-d4Es\ł3J " cÄJJ5NR厨5׮JDn4} trksDB5cR&dd1Bϲ ?a.64;S󊸠xwEoćS`.$Ƀ H rFXr[ ^*1w"9%n<˓qxa>&w>N 1p*ؚӁo!4`bzZOL}ݷ_}{\38qٛݿqo=cln}v+One%s'؛Ɲ[+E$]]{[ֲ%r}YҝFaI$ Yo`岘裞lygk{U0<+<pCߛYǣglEFs?'G>@C԰mׂ]^8 aY:~rՌ{yۀn|Z6MGAwwKJÁo}\uh۶imxsY(Ll}NwܭeLSvBJu] 9;q񶛯[/N+aOX`޶rAFK؅/ZmǷ哋-ʚ Da>͝FQO|מF-준 ` x9Amk"sa8?vڛ˭Z+Q%@=8A) rCX\4j+%!(Npݛk3\]nJJNzofGGN2 HH\[n5jR.-'-΅Ay~6+UkVÃB))hb,}*` #zTSPTUQTb^Hl0v:ssq}9Sl1aT̉R>m@Mj{6[\ĔGEᅍZ6_ 0q>9oqyzW峎ߣNFU"_`$r.fzGDWT{㋉9._*-\}PARF7l)Z /PJu#+iaso:Hz(Y&{$ (qKS= N$ !YbcX^I*JC7 e|M? -Hl~}1sXr 9 &j)vvJȼabKEu;>2h,PB罠ql*Ĕ-%SF۵ۅyLD$[ڷ78]gHҨ9X$7]/0XI] [&Cܶ0IE0ag(MWUP|0I#"9bZK ?\Ͱ,P%[D,A IW>. Mi5 [= L 4ǒ}Fhxp1Hd> 2+$F1 Aȇ'F3P@44y͗y()}18F &ӹnnsFPݒEpx2LSr/`Fע=S4 }bC4i0N,]cj-@-9ۘ~LBy1@ztcoWOGoZ"9淣]sas~Fmo$V﹏._kO++Kߝd}f#stΫo-g c͛~M㟖!~h?A`w!j^ˆko!V~om yHɓ7XNƞnUs{b"*wZE(0C~|;%W-odPPplĴ}|7vk;E  y|ͭR e~;Į`.`cc^}P+.dржo<~z -H8WR!PQDixL-lT׵lSM*鿻.# Ӷ7 2ugSs2 ?;zUF8J9,0Rv/ڡm0YeUYZ^ Yc65]ߧh:=9=33@QgBQ 1[jPPU8^)2-3DǺq\)DٵehhF\^N'Sf=TZij1a,eG2to_Js8-*K!YF `==9 A~>L*ˡxFͫ ;QTT ;?9+ ^ 4EXxVkYgiCݲ˛!gX gyPԲ'K(b uSJme,ef|؞)|%۬Fe9s=8,8gߞO]7uE] Qr 7xXД3#qLq[ix !2vƽ]JÙx-@#8`^P2Nr%.Ò-M2/p'^@炙k( ) *D$sUxD'Wb7p9!tqYşxVR/ Ir娒0(غek%H&{# ,texq4Y>?U\LB~PF{IIt׺(L'Hk2]a ^_+o`FAet͟|* M.y1q_}ރ^F߼u-i|K_V!1?ȷ.Ő?+%^~qGG%tg=}{7+E"lM{[".c8 ܟl}(J: vM\]rE^Uͽx͖1Nm}|x_ ki0sW{|rA0Ө0twOቜ-^X^o-*eTPoJ aGBQ{L ^>z x2ƳamM\V[[m+|8 xFcc{{ta 'RŴ>sQ`> D`ˊ|x{g?bdkw5 ezT*8_C5:~!u\+EIj53g@|z27KRmW ȇ4"ʋw%(9^(j:/|ꆧn!^3HU5H."Mq&Xx-ˀkȅ:or]I>!.U:  B3ܧ.(ULNYbYDkB(IhBADt~E\(M(d Wm2[h?o-I Emƿ#dK| <4,a8cLj\L4Eы$1\aI"Aʁ$w2qKpK'; p)BsB:M7wu4n!<HrB AQ1\ pJS!O y>h;?qEǀAmC`SBB&bXac2EG$6MWmv .$qKBGk'-DodLP9 : kRehd>'('g:ӫy]w.vŘD'QIל&w<?D&Da izb ORQ:cq$0L#cc&_h؅i04,GFm=YY*`_??1gx6=>(40B&wl]w 9Yy0ϝ\Fx3ݼw"a`:ys>5;|kSQƽzW5B}MC#^*n=p=i꥕D:5y-kHjPpqړj,ʔ2%AQse֖ת!چaFr20E *rBCA!9H]Ӻ8랝@1 ̟gZ~W!FdI0!8=WaJ0bTQ zr0u(J:Je򼰼rn*x8u;s2;7ӯ|PP)Q EuyvP)`)p,ǔn1F)?Ϳ+@p!л3B^gzAHð\@A)A9UUpdM!N0/t4 %CڔqA$իr\yn $Ku(#)$cLDױ>sY&#(j0pKU}j!H<6#l/3 ڮ )FR.M%5W(`xA!`du{gqbQ’1WFrSωXS,;G!8B+$ ķKj&W S r;vLwz1|SJRZQV6ɝǺe''>ԄEGj}s(.oGo^Ð26wO^mTkz}emy^P<>ٌ86w|3m{omְ*_9)_*!!p Mp6$kJrZWݾ!rY浜F'~*~d_P Q>l`}I@YP<;7*@P<%0/ԡw`dzdSä^)Upcǻ+6$A vXd]-Ӓ撁;@v!C jtc"cOIYE\ò5HH$ afq!A$@фBKT2h3.b,YJAhk+pM)y:A4bgs(JbPQ(Ȉ=R`oJ@DBIXġ2d{`A!祑/SF+KYrlS2arDѴJB0I*4$Gq$6VNi z7~_;|/& :809|Mambr-rGl=#??}|֧oe 0D;Y'͓wG0G7j<-+Q<ӡo{T~U0 }ضNn|&)|wv4z/|Epȱݟܸkȋ_Y^|['\yG{e>uAqmsWgZo˭ښ̉5{ ]ޮ75,cH6BNєRhŐQ{]2F ӁufRu:* n}u}vރff%Ay:rN #'Ri{QXz7D_le{KML-{j'c/xAyqgc?KC.44iD?Lo_rSq,_N&j#ΈJl,3fN̳]\[/O'H;sl38ӵ_!Y(39,~v |^Dw|Nz?[^˵$B:[mfe׶d<@}D\2YT*,$ `iQeMg:p<яE^FeT`6  2ԭ2s?DDj,;kb)#g"x9>̦g!ȪR. jnDΦi!P^6[M#όR9m;^a?Z rL7Zy4]}emd4@Kr^%\SL̉a4o޼c,td2K++kKr> 5yvzqppLӷBTXqcʬ &\g/.*-/7?Mr0@`NƅreNgfٖZFR ky)lrN_b^m֦{3W"⹥tۗӱ9NCǷJ*y)E͜,d̄' LXNfM-ORQGF&>;C^e9aCͯEyVD~˳lo|xc8#7VsDɿ !խox*bdvi|iZ_/yJs]W*}EH '`rM(Si}@A0ZP&Z7vlX8., @Ó昌Igpw`d*  Hjz,UQt򔨌Uiܞ9PE8:Ql1q% |  8q& FhB @E5FXwq@ )+47c$k45Fc yx}_Ĥ=E4MRL)+$X&a⒌}W75Yv}}vR^ɂ$Mk9ii7REsD~}jԝͯjϖp`k;P edb p7%8̈&۝Zhn"ibiWqxMҰTp҄@K&/F.hG 89ĸI#O.Uø1jEN0)1K):Lb\Eu\(e̚22e)cҔ˄5O8?7~ɍ*, rFƳ_1 vf8Oƞji_}Ӿ?[b׺ fޭB'Gs08tkIa<) ^B|z^DM/FZʨz_t| í6e3C_pcլz9Ť;ِV4``;_vC V"b׃lWDUgҘ&dZprn-?y(5l:|q0ٝ7J"Cv~ٝ,jiGm[Y`&~ާ;y Nٯ> O$6o*L]DZ݉ LgnQ2 |7rFUakg#zn`[\0A܉&@T^F?V^JYnlLڃͻky52ljOg+-KY#5ǧ7XhUGu\ҷwz9nߩfS~=8,iu KeIՆG\Ynf % * "jj\ǡ `"CMWIbԲm]7vSIUV w>⨧R ٮcxzy)i٥ 'Xˌl֧.|H"oe:@[T%aEeJ< "o<3ƖShBV,<D#:+iz !aX+#,eCD C8< //ωk*O7-R1H$P2ȼxS |aUJbI$^Ƙ{xП (  TP/QF1xQDtb\#|ppyƘb>ˋɂ>`>Fl4쵻".JM k!! +^CxRLsfc1 F!ZkUT~&[h-#MVYGvyu;J1\1[*6*yNQ@qfh0?򣩗|t4p2)I0& B 6Ng"\,z I>\rlrR)?tXEH*eqr%+}xPhbj(|Ū(a -x Ǭ0!4œ(]F5 X=LP2eE1P*L!gK (L(/0*=D~nP ѦϕNiqquiBjJ'5 gH&Q+u@MM!X1[팹? I='EKl9T&G}r A $72!9H94I)G{Gާ&79>|(cʨuo~ҝ\!7OON n Y L _3%T͈/ӽ޻o)]=|}߫TZ#2oBq󓝺5Q!NlheEBy.o&$mn.D>?(ךkF\dVw73U1nOå .p9Apz蝽h/-q3q;[+۵R+Pro;k[J\P7͓WEO t4>;Mg,!%o:2*:WG'a"^3/%y/a՚s6u7 7JYmwgx\Voof <}ߴ ;ZEG$?vwk+)1=Lb\iXZΖ% iV-A8^7D-%z.}I}T[fb b/χ!u&k7VK1EdC`b!@ s8k \VsaWRԵ^-՝ڃͭQeYmpnE"n5x!_.EQ\lj '/TDT422#s:!`ˍ|cN1卝,;!meM帀AU χWr5$?2%?2q7_=|cJ%< H&%kX@NǺ㘊R(&p9UQ0Fpr=׶`(0 H|X(/$@9qBeZ& Q4Ie9auz0Ӱ=BLi0RSspShdkPy(j+kj ,zStxJܴ/upL&FX]˕ "%^4nп9C(-(rM]僳4ē dW+C.76rUQvPgdz𢚭.cԐ8..@PFfY~`XXet;8>̗EY6 MNĂLB(t6-Arr׏"Y݉8Uĭ(ܫ6/Z ZRv0xBʅ>Hk3YA{E<_⚗\'y@91{ >18W꟩"0'ׇMJZ`㚢$C]q pzX-!eT{Se1W([< Ž>2KȰkLuR镙'ԙ K"(Q^eAȤ閜W#uծ+7#K]yI$:}!TLY2҉oJ%\JC%"4 O J|6!Sxėd: h9{hK.A*8K#lmO`W/c**- kJ? X<׀ 4rB4' 4Y@O!??'e486}ÿ:0 {ۼPw}o|?lUyflj?˵{~*&*ƽO>,Q䜢1BCO[mH>8 ~ ~^B^{ '@,P8{d'?ـ,q !oL>/jy'ۧlF9[b?׾F #Gwj7ֲ;,aۍ!柽JRN}5+bϛ=|_rO4QF=BYn@7fh oy˚Mğpf|5szO>\T%9cn|tsE{};/ߌNX-H^T7w F #޻뫕FVp@m)mw(6+YbYdb>m$%w-dD($< BBo6{j>Wr!3fXl:\tqHF@$ l>++2I@XaDqg2&|&V+KDw#dƢNuI +H\XZ!dd];!gdCΦ@^DZX.t{ycL&~oY$ QR#|1S(Fc( BϦd41A^*Zx iAéPlȪCAI>}֙L`tjjfw8Y^j.- Q S >n6 \ʊdWV?VY]EQنgͦJ%ۣx4ʾ齵B;'uxQWXQ+IBUd!P\W3/ ,lbE4d4(9N"K⯞! _PN6Cʉ\M`  \X,I[/铰?F-w + m@AyT" !#vpo HLPJg_$-p` SыJ^D4XȞW IxT2E4f IV1F]h+ ! YT`"xC Kzh@"QIiLg*Ø~PRu>h U~l ,$`/U-$[Dr\8^JvBxǨ8/q H`nL^L.迤si $&T}XK*"bÉ4_ %f%qk# 1fExN͡`Sx& ,wT)ǖS^%y(:K=P%s"BY%x+EZtW-0(nq kD4&I] IpEbR3bL)@q"5 Dx ⶤr>t@;GZs9>iw㣿k{߻@<#KsvQ3'12!ݓo?u5{>O.}Q32o3eg{?Wݿ?y>E~0'K9(ķ3x+SUS,?_)ɭU"uxzcZf7R#mQeUSnat4xʃ˙Vx |mwޝ˒$,j8!o[]-sL1:M7>XݱY_?{eN`*VwtQFCC9[*('*XiηozȈ(]̜ Τͻ%Iĵ -w605 /|v61aVFUc}h2/ݻ\eo=Ӂy{-LMsK۞mzk"idfI'=_%R'댧ە1'᳷YmYۻ.)Yq0 =<)#Զz;Wno/ef@3vomZqp8Ld6g9^m^P }7.4ڧX6 Z(*{ƤYBզbf4`ew=)|Ac_t.ө13 CX^KV^e<_he@A0@,cUu zߣ! HTX4!W3x |w@@7%C+P\N.ndN@B3x`(z}}Q+,T9MJ4x&)rR~Yqg=8' r%ʚ光9F7Nm_GÂ8L\/ת$:ɩ trZ[дj57LR #_ OLȭV*h\^ԜJ..P'z{xR ?j͕\9Dy?jVB^sy|w`|bZǒʝXTN2Eq@m $5Z$))` ȁ8,D| N Mp:0M94Qʼn/Z̀ԯ22B҄LRM 5 Q12J](JU|%xl^@t/n`cv4ytr1fJfN~R≳"M1n(&mÒfEbu >L"QΓRѹ_I}Jĭ\dR\LMsOwz5jV6_|ȼAD$9,x0ſ·wsw*e,k%%xL5f׹7V%j% +y֩oI:ã7W꘷F2>~5=|}0*"q_ g8T2٭{ ;z;e)Rd>⠼JǦ|`_>޹Y 4FGɛŐ=)|wfNr|na1zb>>iwmݴLzNϷVVuIt|ǙNNٛ'P*6v9/x=T3l}FE0!q@3,kZA@0pfեXY))(o{o'{R.ABܳI7(V2"¶x;_dWܹ~J=et5_^ ,rX6YufnHV9b6_Q #h/LV\D.8QOʫ!P 6|}`fOw+KmNg3\mu%NVUIOSbN$AsñO!dzQaߞlQRĢÀ v|?0OyI])gx$Y$gX-J*!Xkwu̐hΦǧ-H<ֻ, TfVJ!_WId=+ S# RE!(Fdsp°3c:M'틳F1L>5s*9;3ggѸ?x.쀖ղƐ2[8^]szU4Pl 4g43 %ьEaH 2Џjٌt8^7$ }*KU.39(Cd<x6A1yyM˪>Nll0GjB%k\`$o?{lNq88Ag+4bpsP- zN#nH$!SY>ZF Cr!"l`EŞ;y>>!ya Vڽ/N@'qnSzz9nsZ.UA3WB u(7[nzdL,@I*PomAr@Po}u-hf4.rjuucvW2yYi  , h45Ezfd|$eV ږGl'H$7Ǯ1L7b}!ǁ66kry, rA-|JQ\= f4J=#aQ(Gpͷ!%U%)_daEW|N@|(-< { ^IP09pmTф>1L*a&H)4.!b2|C(>Ls &1iIRhZ%Nwɶ`I_0e8H;H슗`]%Š]wpeJ^/xxQ%DEm@{`gq*ggߘ!q8>R{$O}0Jł0П &uE/sA$, C8I3z?$iCcDQ׌z9,"^יnjĝi$4%(I&ELp"$NzCMaH*`"ES%!AՁxϏ0>s@yRll uXLQx%7b h2$i(#i+aɼfљ9B4F/J^fp(0&c/ŜxTAe0o{#_pލO{?R1_ip ~~d7VTg#7jjN]?V+o%Aчa]A7 *b` o'?SҠ|qڱE)aJ-_D)sy*xy5/*ھ~9"?m.+ElsfPAy%*X$&g[+qKio|Ν\UEF߾__.R+og\wotdI@\o9,vnS ~7sVqKSB!{[7VD#٣S ַKak0 ˌC̝+ώF=dOn/exb/  RߪP$~~ofn.&MٻԾR3yPfm󔏿FcgEśKUQ6W39 3x 9 IJ^?;N(ql}^oTЀ^Bn[c'3PकfAQ0: 3H[ %#L'矾)bύKLtgnT΅g9${4> 8;pLj{7K>#G'lzG FMB&<כ$U(*!kkk598e;L~m)S@=,@< mMˡ v3@K+jQ}V)h>z#V6NO.~Gca=R9LB29sh}BdhZkiR+ AxDNv7>F>p.Sh[bA(s?73c6_ ?!\Z8Qmw6c@໖iRqЪ,v^R9r} {~r|qya6$33 C.P'P(Uh0ynoo dn+Zd%B0&Yhx~zXYf458e8"ABd{: l9xʙ L&~fY?}v,Oฬ*T5y5+>'ZIHCXN *9?M|긳E{Pyڷ*lݻ9\/'V!ulvhZfgkr4r9Lj)g'^NFñ egZWV®勹 qۣyGǧQ/SȵOڜ 4Wo߻]Uv+jxt?{:d+Vj'^߼^ƼRkE3K|=Iol6cLung\k+KJ3 h8Zpws @j0#@FhSF=dYP*5%fl8ֺɋ[땃t$po=<խ`l~0+)9 ؼ,[] [N hM/i,\)-5\IJ`q]!dk2$,bc871KLbᡸ`Ivy(&`\-$+~bɧ-Yp0!8y9gI`>7%4<+)L0ۼ$5JlNO4Дd`8!9v!MP$#F|x{9zZk%˥[b6d;JUڸv?-ULW￿ܔxEBџ)DZ^['omT {JxiM}طMZ^oHۚ 8mNwn[U{v~՛E]ɉ<dUw~/~{HBz{{XnxXg! L30V6*I,ԜׅJu 0yA<׏O+[+&ٙ{D\}MpkU($Cח+%q\lUyv QЩ? D.vD'hZ8$$[4RR>۷@[[M®mL-QQV57GeM?9-fayW'%ʼtݧmc=o=,Jhn$߼>7'R*^ا?{wT],g(pk=߃ŦTTe3cfPg/gg>$<^A,0|Eܾ{Ȁ=gObX[keJ˾ _|uwwo'NT!\`Ur2ãý$Qwxyni jR%Ol_f0&ʕjRRۗF\@e4g뭼m`׾}K҄\T6NvNXClb@Мc?)><(# ?ڂej^zsĶraFAg4<9' >>~x"pRX)b'o9Y/JDY w(ʍzCb?) |2u3֍W>ׁ LXD(cC'=NLH 1RC,"X1I[ y $a<"p07 [:^ÉP+K8:`@c6;I'SZ`"ϮI…*He J}'kc ƣȥj [%qzgKaϵ4&Xb'N-l JȈiiUb k?JhJ% ,N^ `9.5B<"æI2"U$FQgl_ZMxA=M[^q\!rFЁ[n0Z~%$Q9Al,/mn-/-g$D<%Nv(j*Kc+_xt4Us0 OzÃyL PtQ=YlX*PB9_^w;z?nH0`{bdh̓ڒ$1L, Bstv!q۰o\_ps8[!B>vqK,9mt +ŋFދny $&,S*_2 6yxuPbC5ElA&O&A wse.$":C(/&FĿ|풠50Lc_Ť,9C 7'ţ*]S&3ž ޡ,(mE1O KtFHm ώ$vNFX1593A\연q!,H 8SIsLomhcqBφNI&ub 3E+ W_VZ7 njlnZZQCc;Lލ[jhS>oOkR#;to:M /e'gJRܮkMf]&}塬wo69dzAؿٓO#LrwFa{EEǗvbR! 1^ls2e kٶa{sZAxB2`g`ir=' 8;2g 9: d0R,4 Om/xve~Z+-UI]H8;jڭV!,P'v+xYLy^ax0!fiN`*0T04 Z>ň+6 yMGhPѶo^?ٛ7ۧ$r#W-WJGCbp"E| \ Zp$Ɋ\23Q4Dp8fw1YEF &أ̲)"yljdR2?`xBAk`,ApS(0p`:+,nBS,D$pPR hr#5S\ C BDA Iup[X,KW` V~W~0`%n$@ 40.iF@ %ĭM}v\4\hcX gw4vZ>pA F&{0Dhްd6&CR9B\%!瀄>' s%W48`bXOr DƩpP5vȼ4 O;S)F%iEw9zISyuɈ[擎}"SzI[?{=f .g006֊*YBn]#7ǙsGwQ!N{o C8lGq[aKQU$8Ͼ=m[/@ypJ /1bZX]l*VN n`F@)/^ q2lnW#Sr7Zmԅ'ja˽ zUhάg.y}ou5xmw 7o6Z2 #~0Ϗ'nKQv @)M˖Tѷ]ur9b6tW%"H7pvgp熅pt2˰rўIVݔ$ӳ㾘${mE;,#BDrc_n4": 3!Ede{{x9u4ħ:1I)/#cBVk‹]7G3jl!'!, $KOz}78lw6%DN rX:dF!_6Ox0w"dTUrQ x$Ibl6AϫJozH143}:.O,LFl.  B䂘6 na;5= ak&TQ춨"/JBއ 'tva bYE Utz{t-]e RUU"Ael0aRgZ'+0#._ʇ`EXq;I cC Z ֌ P`8 8Qv F֨UK5\kSR:Z.D\.nloԤLbAoҽƆ,iZmެ!LAB,t=}l>|w<2ϱ,yosSbPK|uݛwKpruK\eMcW~Z9qr;>2aB)]T-:N%chTė5b L`PDB1DcsswByY0M@(D\؂ҁDcqsr&] w_@\j,/IH0hN MQ"F)dIA2zc:8ШI[Lh^*4a*a-o+=MN U!, TUROUە>B0\L-7Z+PB!.1LiZwX(NV м6~nAxJgaw34W{IthIt"SD^3X`$p5bZcٽvrlsA;'yh0 x&W4nϻҀ4ڒ;"Qoiu=+s}9XLnHퟜ)O'I'u?`VVJrD9>rC桢emt'Bh#YG0/*$'vkf*"QAG9 G>?17|5_}WUwPr=:ֲ+ZNURG>>Y+ | H4D?o~"t7/XYۭeyfL3Ҵ\V("tf4fkU- ۙsA5^UxИ=?~}YУ# BB!Ca#&É`!eB1!tSbZQ$5,w?;4uEirswZV#2t.Fu]-5k[7< +@L 3DA׌L}ȋB$ET7ӧV`̐|ўe^V 4Y-`|:<̲fé W= r>+ˢ ih&D#ퟵ/ebEv*P7])Dq$ EK5Ul5*fED/!Q&B݁(R9'Sweemum}yy9pHtǜ9%tvr&f䍭w9LǮSNn!ymM˵ܼs}&'#~6!xFxp6:: q(:$4%]DHAJjM} ed"_zZR"\,'-GA'Y s!\L< _.LՒ =gCS.xZK Ci!ؘH =d1.:&L@ZBǕpmaZ7 Iރ $%wije."'Q=?20a6`<=QLN H-R➡TPh!.]S\RAzG3Җ' I$61*M @J1n4(Xi\2.+KR--yH4/Ԟ{{u{:h03u۲ HjϿ9[ݨfCoâ&OU˿y h)/#/{bVk Dž^vv]={:6/N݁wt{~ٻ?St)ѥm(-nfE8t/>/ܼ{u7/N^w`t蟝|m%' l ;oPH~^z7ߞf;9i^v>/pc]ZїGR凟lm3boG7ݚOm}zލ55a/|沽]RPTBۧ/;ظ?MzY"e\>^ # ,եw͕;khEB0o, |r|gooU4FKfslr+e 1 ݐ |߰s !^p8`$ &YeE 4}W.k9'g{g~f7$BDE=U°O-0lhݥ<飇oi9γ- Ƨ8A+,JcÞ>~rx s]n6*EL۶:l8?X(Vd *(ZKb(7#y(^p]k<>xbgQVs¼ غqxt>:D_ 뀘T7DjIqLs{'XorE٧Xz@ }Bڶwp0jVsɚf5 ~!qyglt6SK|!(ximUYiZ&<x A!t<ՉO Ɩixs[RsE)ktuE9`ndU($2(ȼjԋ!Klӱ}3㳖 \U-Nc:5!cuv<bJ!𽰃,Mg㱮aKᨊ"gr%MP9Bl3ÚLF3uu8WH!KK<'d$idNx3fdh[> ٰ7e5JZk9(+ĝ Mhw.BF F~c}csc OuaR4'+j>(FƌNON^OV3jJqmccc}emyMQo蹦㹣a:M' Dz*K{=A5Y4gSRF{qz<͉QR%S7Âtzdj\:Ce.Rm EUDV3$Fisz{.7e'JLo&z`(49śh8rwVWZы ^rs!m^tr1{6#1vKR.9IpG.J HsDA8G80'}$6w^p jDWb!IhD,pcT S&0VG)ӂ1a"2B~Ga0p!Xf?y(H\qFQ y4AL iJYŖ06ta`[ֽ[٭jgس}7xVT`f?z4>7 F'!cYֳo\YQ7sB^폽.߽TZ*rM}X;;|j#pug=$"`olE\WO >xiGYÀoD|z8Z7[f^yjg;[囥,KAgO 7n(.T'tݵLY kwo!to;_ķgفM޽>5W)<='`ݵJg0\/g[wnjM@[!~{ջrr q<;3cf!  Ϣ?|_k#@yYZgq{g_Arvs2ϱwq4eeɊE^FS2,2뎴Ve{ekP6t'ӬX˱3B9*JhOC:8Y"qACHNY(*aNTQ]RmɫyFrxж629lod cPP v7K(xmbż |mtl8eU}!_^Hqt*=^ 9IھDX6B$#AoU!ߘ@QlJB ŏlFQ3ۯ}rtxBe\1r(Šyϵ}ߙ3)E i|#rY@Fiu^mr Z@d.d2r6_(Bad۶iuO/P 9gԐ H`@e9x4 {9^![ͨ\EetyI;[V3jh[6 @5!tfZT1C®VˆE!m[,!-fkziٌ<lg'Nߓ$թYe::Gtd#h"˕ Y -?p &x2+R9?썲(RلУˡy0Ѱ}[nTqZZZY)UK4 <@/N/84tu%!QʫarMEQۃ'LƓp\zNAa^D9b c=_.>.=#?oԵ#NNr& m2:.~+/+G0dyYTa&&r{yڝ^RFs[_5am5.SPZ/3Z{BM͔?bĵr#_ Ԕ6?;q69Eb?%* sG0#9jJB)]"BncQ$i:+M`^[GNv0o(=1 |sRX?&w:bsĘ]WDP6vSA"Mr! JJ8ƝNTJХ%yC #06BH[d I.L5~!zJDpl0&SE] q+!PH(abB[\Y1[IJѢ| R'x%ҡVO"kI-'^#`,q] .I2䮰X@0r{$ʲ40I/90f8> 7?raoS8Ma2* #@sM㼾'X`ɜ#5{:b^(^ YxN'^$aIFB+ pm|+Dk1bR10Ζ; &N#41F(%/ ZBx5P#RbCH(047RʅIs("Ē 0f#sl @o8=;'p0=6;#?$T~߾6o#k._O?/ߺp0W?n9 8m'/ݨ*m9X\9W>(Ue!0M2BV9A m.3fa*qF 9Fg/Uo}1Ǔp7,IS6o6+J,60h|z+_U6 <ԋ !tEm cC奎_+Гq/F("u9."6כ;5L[!"of>g>ad::1}90 R!ɚDybIUe UU7=â$jܪi\V-D)xFó!CTP_u)a$5^ Z2XU2[yieţ}P--We VգPP1[Ϭތ+45I+>=cW[Yb..KmlƤVOL+'"H14GO$b! #$JۂM\(# +BDaNs=` Hx9)bs /V\"O| (M \fo3x=Mn;\ά9wfדJқ2/ׯ]*h__'vi|#?7gZH4C3 xOVVTk-}<ѭPG k@nɃuex!:1Zרa|4_,;ڝ$:<:X}f]+6E-h~zPĘ 9|v{u 2}w_򒰹Z&i#?!S sU,R:}ƭbVL`7<:.Vie8sʯ&WwK3s/nwkmǰ\bugu%ϫȐ0`xVn˅"?ߟ8%bQ=ꏾ9rsIČR,,셿J$K0(rێܮ.X'bb*,{6ug}8o/d(q{vH䷖W`Dg8W]*J$S{8),. zpwہjT$XD;n⍛<m۱Msr>!Xme$ v)J]G*Uxm<b  zȘP 9}.f "`0üb%+a%PĂ9mw8; o:)F^yQ,'Ĺ#ȵ]ױ }j&0<$) G:df\^^) E}c\ ^b8!("WNwq~1wd~sV^T4ƨkxi_n?!Ѱsljr)_%,9t8@&'!i4ff tYHw6mtSQFm{scwڞR-P?<53TW˕h4WJjaz.Pбa_fTyh>õjʊ sP g9hN4L\CBN}-yUUP3G]ϖ0AToUVzcWT,!?鞷Ky;t/6PԭKG]YsbDn\NzX+gC1@pM3Oxw܃Iq l"!n/U} <(d,zCͷ/Caf._8'g+%Eʖߞ*aKrvhfj2b@T% 5Jd3s-]DA@# Ji`[@G"N"[Ԗ͑`l+\w#vrT$"q*^@ĭ%{Hpb[P풬> -F хXHq]ܒS# cse߿ x`ʅ.ȤҴ(iЄ-1LR@GPT_.}0@BDƠwM/1 @i.&9<‚x^v1k.}bxE<~~1xUe$~:(x\.)N@1^wj-g$10 ݓ7V}{E+E r2%[Y8pfof*#L=DZg)R^Z/;VuCBmyNYY!%`dU*Fm/p2>\-Yz.Y$ˑ@lj‘&}\ ŭݦ\ÂP5WYDpz <w1-'nZ)<t ǼxPDHG؞ bx.3@eQPoOZ+/!2g=o6+ZUYx'Çs0l6soH?쎙7CaXjskn-g<#6'}JT'>EAB]00em8eH{"RɖjQPTE foQVBc~{VR әAiųQXiTT0Oi@NQnVTCEx4Hf%< Gڒ"%->0|7 u='`22(drV "00c0mnN@\ uls2fTjlnmEf)ɨ2沓843RJo.xe 67ۣU bfc,,-eؓd #~I˙A/FQU=6lyFD3S RF b#N@)9E`OAbiF&τ(H R/wITISRR (p]I є<iA0MLUm[X'02Wތ h Pj!a>.s@%,(E/K N.pX]u/Vib(t+I hS@`w9M[L[$HH0 )13xF3%&)slvd6s(`_h&)HR(!) h'f 0P"$B9](&9M\"R|~0 oHj>6r H|x'q 2_E,Bi{kɕq% LÉAJyaP4-ڶMkm8;m\6ǝ|?xY_>ƒ7s'Y9οg#& }sfQ'' K}3ϟ~o>ogƶ ~{a^B?G;?ܹslDvPN:}o)9Z>Fcz}ӝ>Έ#F^S~vxb/oT &bjv*u==6֋G=#l~`8+p|21AZrEWpUoL)5&w͕l[nRV8;h7oVSw}ݟ~f-swM{z9+rU7t|0~gGFYm\HuF<Et{e[*{{9%Xm2$ ˵{@X&fda쀀Pöȿwf]nΐ]|ViOڦ5DdGKe1J pAgPY3_#?N3 %pcpNڒ؅DPסժJ @h[e[SXWroE@Bwd83=D4G$qDEބ6LNs#J+EZ^EB(eeYF(91̞M.:gHDYB.>G0F,$c4HșQ'xpZg$>~40rЧS`Oi#ʂ'~2-!xwX`>& ~:)JF>#JFyC9@F&,e, bs(_*i;6CyI6j.y'd5L(JlgP?'&Tr!$~pv[YZ1pԫbPoO&3Gc& |~1Wˑ%MYY_2#OZO\zt@d +;w V)e>uL[Sԧɡ"JKHNPoVJٌ$gHY{e. |i;iwI1.WO1N="3F6ó _͈Wi->2\wDx4ޫ4?`aQЬ~f@_{$n_ Ԣo ua,rh{=}1hn+ u!yE0}uR.^}egH ݨOR"w `EDl2(KcGa ЭGq](_F"9ja\""¹|lJs)tpTQP^1,1nz)eq_qd+Ē1[0SMŔ8 D9%d]lc( !q"BI{X 'rqI8ݱD"].KR:@Sd ]$H i΁bAJt5y1)Rb؄(BEfId&EDx-,Fŵ A-lv:?` K*h|Icf] MqyBll$'4`a9IA,Ej+C%_$JPi.oSkshAK&0y R ]Jc0AHcQJaR[ ˖?2'csfٶgxr 2 >MDz~g Xyċ"d$ΈT$ YEWdR1+wyu;37CClΨ l؎ģm?? cO_/3r|vw{ӳC Et዗w|ڗ_>w)]g}Õώ/zGc/_۾;dO+v?V@tBNt[wӱkʩ߽/Uo}xs{3pjuo6.^ۓ?~YO'܌pA{ݍ~;d_7w>{r}v@õO77~1Ʈ?ξU\n|GNƖ7־}3Ė,]L>}~y06LvNwˆ i鶵>?od8f'ty8b/eY'aeZ m+VrrFŷ?[9~4c ;C/Ʈq%+?͕v8L\hO>X%>w~176r3+b稷fSVl1Hث4;I@}~oM(eI{gӛ!!>O GD3+t+7%E"a4tErErFHLj-E&#?wdv#E\Vk &lY qǛ~C1a sG|Q7?(¾ms(q}_lֻ\hlIJ3LOtѡѷprJ2H zO{1^%߾tۅc%U`ת%s!iȭA s -'F_g4 !l9ͫtQ^M)Ӵ)pa-$M%,_xxd7`>z Cܷ$xJEׂfc99[;/(i( cqB7LU,/Ӽ8JIC|?qVRtEtp >%cϜǽ8 Lgp-;Ġ;M b^B܏cPS0'N F`c *€Q S:5yVB6IKGtHqY]<AcηC7^|e.#D{|1Qr~l31/DC_>w.aF ð"ӗǣgɿ??, B?/>}(̋^W,ɷ9:)?>+tfvg_|Y0bNW'W]nXAE^.φ?3ZNlDj& ϬxW-gU3.x7(uIDD6 RR)]A&=P BVOuwL³hSԶ֪Hp9,9qB!um| sIa>{z9l׳1-JŢe{/ H0$mWy~:2p+d3Iq"sC h`J Q@ /!ĻK M 8QjՊY,䳲*Fd:=7\Y=񢤉sz#O\YD2 fA-/&AVV+E)j*`650{w18^nW<_)Ì}T4{qC# ,BFM=שEKf_ez\3yZ{I]ϫ,`q~Rrr@|FD1GLY&vO*vTuy2CSzKVlAGjX3@C2aDO,~:g/οx/ΟϾ9?:?uAws1C?O}ggLΙrl[oQ[`yޔﺞɾ:)x}}4 \쫯^a"m1=ʃ߾wa/` 'oߪdCZ-|Gbp4?2l.zSGܸ1Q;}k[_]N\?p/ Wwo\{Sva:/?unZhf4<JnUHSpJ55X1s%+Abؔ)I ĜEAp\c")%R%8M>qPE+马(UF!GDKzfdcye9^ "({GYC ,e3RyFR}W%\ӜF3Ov*y~/WVZ1A4 Tz3ƀEfbH!C#6^^k ]LL,i$ɪŸ^$)}b.ldl!UUNťZE8_(erY}<&&_Fc8?og3YSs9N]\]^Q,{*Qc0fN8Thz.tsc^+pNM"k8ArZU:nJ5Ԫc9K`7CJ=v9 q`XjXf&4r,Ttx9WQ; [opL䚵R'㩑r6œ26ĩ;vst. @߾]M}2g7 Kar鼋S >"9.pXx (uvE QI9Q<:0s%Q׏֍խ@P"#P 4ӳ`|j؜z~<KbFٙݡ>ssi16 ?o͏o_?~A έ˕Y@3?^m5G9oAivF›Q}|9j?;Zdkm*[e㣍?^m\ O=g)1x_>=p}jιE8QCw4zS+\, ™'u|𳷃sx\Lr\_ֳ̾}2⻓џF};Ćb?[_,^M{SC܌3}{wopus3'Vn OCl;F~ߌlE(dxٽS+}.xk-&p:x~Wj Ù$ޫp$GY = bi$ht Ǹp|e֊O ⪬ g7uMNg#gh4`PR$?gy畍%QGo^W,ϲ<_i9rA12YYM ҿqakh$fsմb*Qu=\͎R$j-Qk D0AM.!#%KC!9cA]A Do`CUqr$/Q`Y@kj"ʒ LSi!V*͸n~ Bb8FQ %N~jeMK@gB]v-b|z&Xud.|@9$+@K&DYy*V /w+je$_rKV@5D_E7yH׭*+6 OX>+${}x98)PSoxekՌQTe{`5^%2TE%(bK XFbFM uqՕдص| s$.?\!xջZ\WU}Q s<;)[nkq ]/<{x4fx,/o=?6>yF/omo}(Q8x[7AScEdFnuO_wdz$ܑ< 3/澲/b~msOz4S>9F=1ٍ/wSaǯk4M|'AςqbGn|ܸv=ƟN_ޝ&ɳG_^4e!y?5Q@C8]4onqD> nvqq%aB?^flllZlBM?ߦboj rٰsg#kX_?Q2 n47: P&k) <Ųz6 ?oEgӱ %=0pr%|qF'9Ac4ڶ!K)+FmFB0(b/6UVu"Flj$ʵZ4;]ҾDY*J"NVC'KԁZ'I9Qlj8obBlh6dوOUQIUd4u\/ Al}`e2N#)qiͱQ t{vgϳe,$ dZ8nX2O"RosJ$HDnrHz|l$햖EĉieXPVq:(,<=8 4VōmE~04e4$ Fk0NYWvw&䴥^xnk "XyЗ`flxU/Wu_`x~pmzWz?-u,\C+ YU+ZyW5QD\R/+KUJiXezB9& qJ+1\x%* hWE&֦+xPQ,*9j8`c`Xue c)}yW@QqE T.UAJ.,)\)]k.R)sP]M.zsUZhxuD@U^ݸul]1U;i ze ^T5WT~]u=(QA,+.ɺ1%FSrVG5-*^p^W7+ z2z^psT{TK9ylQ첶t{2\43E碄e߮O^IK#B|%ثj.QQJyU'*x?+u{pzCg4Wt[Vp Xh ᦤC բQ²|mc]' 7Ř b1cP<`9pN,&ҕZ*CPD V9EI h! gc K T 9J aۺ+|0{M$d 9G(8"I~%s=8B ьg [i({&؟w~E&_ym+ hk?spig yp(ZѼ`8UK:ǿ'ZJco_ĿeYJ䂢6 2Dxz}4ܺ}o')Qy|N}˷* Y54h f`P7utdvOS/rAek[MieHs&nli`B47;Q(,b֚icl9BzeYF)L=B7LM2q䝆 1% ^(?V"X4-P8 .tE`0Z"g L;[ } $em cD 6yHSU5YzV?䜙ޖεݿ3I7EC!@Vp{%C!m;ۿqʘp`zҿN2ffd8/NBpf㢀U\"9UVDeS.2W2P 4-=EFTWZR`w+Us)W3W=0TJQj&..*gv)װJ~(c"* ֋J[r,g$dNJSV YB+*/:PUW\+KTGwT|N@gJ%( .bj]}R.TAVTczԏ8/\M U젰~dW@$.]U) ^g>);[o9_ ȋ^ëJcX4WZw·[ oyd,wQ[WUSpW &`rRUaC!ĕ_'*ѳA'/ /W$zY'Y> `90D>U՘ L~Ş.Til™Evb4:8,wP[42LG2uC$hh5l]onQ[_%7\QG u܅pyE80J,I%eu b9-䌕m*<+DiW. Ŝ%2%I1A*,"G'YL֍ֺwn/0r*aG1c:=Ɠ4Ŵq˜ {?Bvw%EIdڿ`t>FS!0t/w?ڳ4?ߗwz_O2"2.~|ޛo1/?(Il`D1N9 X@S3bXF;w(޷}9 &Yj_?tbcozsxe*kjF3L,Dn`sm(giW閹>ظ{vD4GH9[*)uD 0j 8pr E 9&HP4OFbjxvۍvlA`iRH`7[gq `7TV̍m`mMh&&AͧprwĊ<:;[AqߜN06_ ILv,Oq2YGiGQvtzDi5t{wTW*K(h6v'go0̭^+>y!o?~h錄q;ܝ̽-Yoc' e~x|qnkt:T!Z0 eYQgSn3a%t;kwoYj;nֿ~^ՃH"8#p`"fώG x7O]ϋh6Z8MZ d.էky^QQ VDzs[QZn쟜 ;[k2QIsF f&6AϽ.A,cϋ$8,t8 Je{Qy/hf %FYOɟs_{G'M?zrUR<4(H8gqY皮4s9_{{[i $gOgI>Nw_^=.<")sy=wwvO>O&@:,I$^6vOݹwo(kjmFptw^޲wsgZ3GF8'LZmlp@4)_`ܽn6:t'??jҍm1c'a8K ݖAr_e=e0+pFv7;Y9z23Cn^}FkXMјL*%$|fSAYǡ;r3y(!!ć 1w :#x2s -uݶuE(|!0t0.84ݸٺ|1Ldyv0ݘٝb‰TL4 Q"X%玠:'( ,뚢Jc0I1",#eS@`l`ݰ ,Ae ƜC4ya!h<.?;trE۝M4UٹfLUq Ϝ8 0mKEP9[;۲̛ @4aܥ h8qhqM(a*ںi(4UIes " 6qm=g-(gϓt;ghnN 6h{{ .7 f0Mg8ϐ/ـ0fY VM_g٫}CմYm-lh;uOamMƲ2aA~nJ*&! >C7L]iӵV<W"Ȱx41r.hl6o͵Nӊ(>4|vNP$mak֝{[ϻ&F =8NJ/fo:7Ta)77ַ8ʚ5|tN\S!),mZ><2V VO2!=ؽާI ! x8kLӸP,Ba4KUL $2XyU<|]238 Hƫs!Ѫְ(#qaL_cWh.V;?,Z&+03 QƁWMDj&Jbȹ( ] PTEETwzTw!XP$_e_!X b&%ɁQR!VdV+\ly B&5& R0[]I/x!8+WPBbXPJtQ(.hnj|yY_W]-Q)e`!G /OU+p XI.OٮRmjem%( P,rn|kA\RQ) xW _@h X i^LaT6q DZJxkO~5%j/qqfA\Bq!BO!jxi-ÒRV;YL,7E1X%*kݲбh G,H1Ɯj*CX e`#FoR@TRՖrM L3 b\xar޵%NΊ"]B,)@D@4=}`YQD.>"M^/w>%J,M%,kUe^N76%I[M9cenn=D$Y@!Pqf,sgs鹻h:y$)ׅUqm'4'l-w-~%1fH(HLɲMUu<6t[oY=>~[&d9||_?[C? "dI;ſLPʷi ǧARd2p2L9 JA e"C 8$ Jc ϼk7֯.>@,?YΫ7^γg~*σ{km>Gwo?b.xlkws}YNc:OkE_AG?fWNrqd+[kvq"_ 7촾7wT%et$֓, >>w' 4Ο^}kkR74Mg{Q95qFv"emY2Lsg@>j|;۽8t#i_#{͏S s/ o|0!\yn & ReU?y*}XQR_(qȍ][&""2n;D/4L}Ә+31-4MKPRڷMfXJ牆EC 5 ( $Ù*c5IT5Oh'mIAE5\Dž mMC1fYK&Ӡ Y%XBU &.f3 T,yEU׽0w#Nhxr7][I(,B lHs4K|w$)!ĩ3=.4de+4g͖mZ$ D0tAg U_kkB6z64S")0">L7d`/ΚYƈd 4:8nk'OyIVX劃+/PN9@T9+3 .*X׹Tc,QY:[x\j밊p5|0\3.I[\uQpDmtcW#"JKRMTYʷU\TbRrsէj**Ⱦ6X;A߸@խkW-VϽNu$(ŠC\NXL۶z x@iTcG%A@ՊT. +z9,4sP{{??^A˜gmee $O`jiN1E08V ?4i|冑hݏ?h`Α,l3T_{Ֆa͖X2TEku{ׯٺb6&*0"heY , }Q>ͦ\hl2wn6,Y33!+N<,o:~|A9?ş먄p+)EU!D|2rxy憱;&Ng@˿' 1'>k/u;S!.͂Owo$ΠOGؼqg̼c_>c4?'[/~~p>C Wc22qteVËEztBq}]g<9׿i}9YyǷzExD"cyO'7|f#lvt-}ګZ{Jḋg;NlXRe;4J{[it;JK%$ 65ʯ_-Ng^ p`7BY :V~t$y";:.69Fe,=$JEsNdtq +x4 9ㆵkg:'oMIBa h}o}9smh:Qip_)%gϿs6>,sYYw kK%YB)ZMaI#()X)@`GQe j+8$_ 6:q.tC|A":vQdd2 ? S(9$#,;xI(,L:]"@!&:~c% ef"O]JsJ|1%AHnG_9S'0Ӝ΢ihYMMIl}6qFtw;{;=".&&y8ųm2ݗOgAevl{kN% Sl>|4 adjn [7?x'JH?U8ϺRҶOՂ7l}nS?{OAMe};@uy7mjthcʻIAA^\B4QUY%RiPlT:=ƸvX"9ZTʐ2Z`RIXzc cRb '+v+Œ@ h 3`dm"/cc=V@KryYUFv-GJ.1^XU\_2&cW?( kКxIn4rȋXKXVf^u-4e~נ ^VOn+v|ʼ+XZn#@x1>h{"3zL$rp@SʆSgkg0ėpb.3pB@0OϏ_x" Џ2/ >ov$N"Im4 i0M)InZ" iP|4h͝dFP( Uf;M; Ti#4Zvnv$]Mnݽ}i*)@rvls"8} ȏ7w ,$RaIN)e2\+~G0" DgdNw,]Sd !Btn}E{uYB$H/K#2@IJ—،]0]ƶ:G? 7m]{p&[w ["I"=yxڍHϺ?=~&aYlw;{^J3WJn[|t2Q7=h|N[7_'c?u~b7_Z/ .M^c΁&EM]ѽ큥>kG{7z` ğrIJyxI%P1g {}C8K}vh^G# f@lH!Ls? 暱]m BP5[V|d~pb I)4ˢؓd58E$ZΧ~zT{MCE#~'4M,O s"- _SD?wlU X~Y ۖjI1KĬ)Lp.q떙34T9D{cE XS7d`hqF(bj:LXZa/m?[2VnѴ-  QOƦm,c "MEiJ:q$$5&omn7 mUQxbgBb; (Zv8fKY )AOf=E ZfUU@=hABy2?:9eFR5ڭ>|`<'g_"Gs@k77] )FYJyKzr2Ml9b72~4Sׁb8q ƽ4U4ճF ܍l;퐇ʢfOe 7~KV## F2^М,yʚb?<29F$6mso5хfۍf:ӭү^)-t-ۼfiswi&xZ|vrFv{~lold1 A޸v2oa,Tj_ 8xV| b_ g T-W ,H,C(CتzBc\2@9P!*¡d,Ӱ!˟VAKr\fʚ©KWK,^`ʰܹ+*8O\֭SR!W^.*ٸC=S|5Nh2a\@E $([]`?{/YϪ/$+ a3^9,fً\{e3s/,`Y4J X j8~YVϷ*dS$J(*]<CO9F,92< #]x eœUr%tGU+B*=g!Q/`|XTܫon54Tlp677j,\Jsq,SXfp2^\ dP_l!Ic\IyAǎWʬK^!B")H&)i ۷g~KMR @$c0^8b8M_tVGγ '΁(õKm>_x4NF߇ 7<;RG{_ik=J#™7nos]q䑗02@z6@1zA, S>debyq;qCնwm=Ynn2^\/ߣ,([VlZ6w\ϛ:QF9ѲkŘS .R*N ,[,P@B4=;P7-۽˘.Kwoo7u \6[~r8'qe{۲K{|򏽲YeTt$H陓B2Vu ,򢘇?h7DI75.U&B4{FKG3S\xQEc͔|\IO ~uۆ|ʪjaj6^<'3'Iv"sYQ$-hɲ9h'$IQL vfsyǭ%Z JJI=4ק>WIg %C]"lFj}C>!HQuUϝ),8_rKIZ:,bBHeq0z}(8L?~? Z}H賙jD0%X&XSb&:A@FmV]E0vxbΠE j6dE,3T$[6A;3tlEF( dY&Er,-k`4gkv# v8z ur?_gnnnM=M`~P\pstDQ TUE7@a(0gZB́:]B0s?J{*m P1`\ͽ [ۄȀ3hr!y}o0sggM"m2\Zooo|ճ:Z7; j QS ] *(pb35+,0b%W&FbNxeZ ZLr"/˖*58U!e@U;jWUԩWK<"*eRwe cE^%r5%Y۩ː8t/wpTW3QK68$*:Ln%ku/U7@9JceW\{"d.z m (rucYt'  CT\q, E٫:à?h ~CFT@(z)UQx-6ʸ(*'FU%b}reϣ뼒Q꘢WTӠșe`eCu,7ৼ2B5Ƌ+Wtkɪ#xIE}kY[`~QNU9U5@*9C,L+(<1&j*sO=PQV@Z[B [e~<@<#.IC,j)jtM&iB0tysawhQ]?$\7ιxnd 89intL8$Fݽc79_4 tt}G",4=F;#{XQ(YxomSt8 \$i,IcKO=[xIr!CUכfvgn.4Tu#3W4R}7-C&r0UC}2Om qiNO/on߻?,v Nv^sf# Ssڷ@EBLu0( ⪬*,DNg1nnn@w:I,C, r84 }04,ChoEr>4;2c\ L=C%ۀ\k^I8KsS/Tpj@Ahf*(pKfcAŪݹ축fz05Cud: Dq& ;oH0PHl1"gDXFc|ʲmw4MQjM)Sd2, +޸}c{>xv$R!E4r4]$LSd[]ӶOv1/N/&4Oqz֞'.-n{o|H dL??f4G\6ib* C̺M͗!>~z)5Te>>0oݾ sf}wüpӳQZgPe|n6;9o]? 3ZCwUWϋ#/DldcN.:ƅ֭yu-YiQ9Y}U^TFTp q"*>vWW,bE ]༼`Yv{a/RK[UmyD%g;zpQ@T6Z r.`UTv; A$\/.r h+b[)p%حr)@dDdPErk «Ez1IjpUU:tAa1R ,@ tX ~IJZ@,[ JwfJX{8(b2C(0@UCyRF4v[ȷ𲒰|>Upd;T|^%憼fASaJw +JVꩲʨKaQwyWG]`QWM*W \W_^1*FV oQ_U (˞cY7;Oyg|\~^fGYaFxh8D`L,|B 4VExIzq|lc $UCbEBP ѱw[hz-kP&93gٻ盽biHHYBr(2izpp1 C/8yܛ: Bx "˫CYD$Mg6-wO؀F_w%3~fnj ! BO/⌂VKv_pGOç~nw1NFVɡZKMXSo!_/^O@ѵ [\ 7޺D N\ݵMi<E?z$>T`K%Hц1kJ <8Ѭ(# E"kֆJJTfSiN;Sۛ;]xx-ATv7!gEHZk,Q", ƚeYg] pJ!!Yoq{>v4/09eDBYJgsW@$@DU9|`P9u@4cQ ]B(FCP%iI Ky g+HVđea% 3$`LynL Y,]ɋk`@NY8T'$ 9Stl4NWB\ @ L={0h[/sEiEnji#IKd6#g4MGQ &"nWQ(@pI|4J`UNH57ZQ[M+]EFIg ),α,׻  f{M(ˢ3dzay0- M1ES~<†nzn6Ë,S_:0"-\3dA pp4l0\vDN9 Ƨ? Rk9>==M3s8n9hv  쏉iq,"[sMcp>$ۊ|sT>|6K4 Ϧk ÍFK/wBPov͝ޓg8Ev,{ fGRYy{/G_$Y@ͭ[kQ6p$ݖamc1NdbANWt%zu~8*EeXRJPn**xĥmȪS(5lHMa JJon*?m\Ě+%ȭ3 u5nBz.PhXŕ,(+F c9dڪ( GP`c1]!Kbį@(/-_Z*B@`YwNk.B%v_7U9ZԲW|%/mb 奩|}Bֻ" "@/WKPjϊpsM CRbQMFQK݂0Z[B+q?!?DiP/K4̰f1c)"HpƠq"ILd,gk'~4J󅬨^Zo|O&1Msg̋ 6ֻ3jH A})Mrymp>4=:Lr+g9yw`DeXyћj鄰g2GI+8Sd.Dv3̲yZ;lW%MӆpAH0u)RJ$Yϳj*bi2t<_ P*!\X-E!igY@)S &2QPk-U"KSwYCMD ԲM)V4)g!I*Y,Kd]a^߱@&@Ӝ|:֎Xv)PvC %=h3c, }YJp<7,p cn][;>vֻk6Ϡ)E0XN$iuMH+`p(<0T)u\;6nyP e6,{O4|qhvDv]Y ,xWNGi.Z%"IJaq )Qfё '(0"A M}|><s/;Ʒ>rS ZoV驡n& GSVG^N; e׭,A1sES7rǿ3a|p>Ū,Jǧ1K[T6vu8`M:z96Zf?if"9Z(+%9Us״#QU0^Qբц)°L6VBXEs.VK+|#\+U_T4`.˛(|uCVȰqXH`(2c1,ZPCN#_+P lD,p'*2Q]VpU$Y Zs,a9C hWc EDiYz%<]h%-0rGJz/ H KZQkU]J29$xsW]%Yudq+;2p]\kY2WL"*\PcK< NvĚry.(7 UVB@ 9"- /E5r=+oXq"V[}`yk^GT'(4{/ݔ*QfTF^aRPtJwLQW*Y +](nq) Ew/Şbys՞4]~BTeKA ٌE5cR8РWq5KbM}\Nu&4D(*8!~ò5#@(bi2w3B>tNK'37x"?j4ҫ$Ûw }(o ;O΋Oc_ۯoOgW+wnl}fkɯ_? ]öswʃ}y`X"U>EٹVt E dg6dr|A)y몝"ֶb(ò|2 i4J~#$ &7!;s[nl"ISOQ}Ha sfO^ 8Hu4d"Œ1-WB"9Gym4) D!.Ͳ|i+KGƍ5O@rBBH7ܺfo /k7“88Fn趁=<߽rgw-Roh6[ =|zFR定O>+ͻ7%(oJb ƹ9h#HN׺`8'Yř+y|x/6(ךF~hjM]}:@JmS޻vyʊno|OQdIR <Ͳ2'3vo=2!*!wnuOF,:u=)Ddgwmݾo} I< \d+LbLJ $d. ^`hUU {I5l8rQ`v*XA*ZU\@eSC, x"W-_qOUKF/K\Rtv%KpՃ@w}VdU1Vx].)OQR[@\i AUZ5o5ecm˂ŲĮ"]+ (jPkOXa:,Gc\? 59u%R@pTUsU. ŃCµShʓ@zu hWV*`W}+f( @BV;,L+k>*-?+үsPTXrT:ȼ(xE1$/YxyB^7"k&(UiPo1V:Da$KTҪh p]ˀ@r++pM"TJP* *䲄/u=P!t4ev(BE?F9Chs|'?0MF{_~w>COBmNpf~104f/f\LfI D'] GgϿ\ɣ'H.)AGIKB`=-&Yz>]5h>XNǛ)np{XF_̝3ljfß8P@'L#h^Iqi!Nxg<{xx76Φ9 yy{{t1I g-4™"}*vS Åﳘθy֎geT^j%vz-v#7,k{-7}㙓4C"W_7IQ8bpβ8SX4O"0&^`xp]qK",E否o4b E_|aH*xnld[gyYNk7z;?J&ďڶmN>B7n_I qx2~yea ?; ]Sy2M*)xW6AE%BB㣿уEc,I2Pp$ds.md@1.~]Y h}wŒ QTBqd:3\Ӎa "*VE~sԽpඩH`m9(Fm30dBfo@"H$M1,MUUm B A8K8lqӴV{8yӖ$!P= x#Y)~!:P-KS$ą"c$EI2w<Y42 p IQnjM!$``V6]&g oݼۯKλ=Yju VfI$ H"?=:߳[nǒ~CNBfߓt)h# ə3ix7(P kk:DTUؙ+<<;N8$gsG;V BR?:><:8\M}닑3&{e i<;y?ͥ(~o+Hdn [m>0G[fccwqy2v 5fO8t]Ilu2Ɔ!kƓg"<I$A#j S<=C-)Pn1*nn/.pӵ$:Kĸpfй18\ ҅dgrW˾+e6b 2^26UaTVoaQޫ BjZf[86)PY.WV*)՝U|*kF::O\9k៮5WgW *q^pi)x9zŝGɮ (E,F,ʞ[(;< Vpe*'/zXH>hp@˜+\o5 x,e ̢R\Hu_1)GKb~ F0~0՘G4ˁ.:VgX ^a?V_~24s8U9*U @:@m+0> /cE@`\ fa^2u}_^}jP/՗Zom,`,jY(? uW(Y٥J4^ Q=U*}1UgeIyeÊxJ|yĹXR |_+~2r$E$Ϟ76,hfe:1@s7ycWJx׾ޑqz>"ow?9~ ʏ!OO>z6;v%x9ğ>~ iym7vz>=DZٙ|?%^的nl&q' b(<}8<*>;{wm>^9TvH%'4PA,-lZBq+pBZxH@H2*Kf2h(m[ &zE\cb95LlZe4 )c=۸{2 <,n.{pP^/\>b[{Ρn;K? n@6:;ǘ@^A @T$V/EQ:bT+>\-)uHU2NԊbCXh%i` ȃL8DeVU %_aEk2*bKUFqj:c(#W=¸y%fVS]"Vv%֥hFP%!.I?\ ;ZX8j\_3Vr**rbn!_'0 /*m%\5SXg \1 T?z"U ]q^(3* YBխWXUՁ)K@%F0\ei{"У6:yܕ"PT;BpyiT +%ATiEzdYWj8lò&)V85+ r`hՋ-VDUk Qb+Š#Trŵ*0(J6oկ^]ՎEW,? !n&1s <K/o~wKL!+ b(d/58i䵗nkn0~s/O0 V~+?|˳Alk7<=8I~w0n/Fpv|?~ȍw{^(YReHVW!bϳ1X'G?cwzOS'Ԥ;[tY:YmLP/zi("n 0dGAݘ&ɂl̗8"e<[0(&|:v:?̣QYYbig)`GCg<=8x:~l20PAqYGg D%Xƒ $S?)#y~/%l N9CP:#ei$+WdHA爐?zT,裇MR2T!€}^ĴWk׭-)t'px8$Hv=tX4o}Hќ=??j/3'[ 9i?Hksv|299?_ŗ7;~F{ַ LXr6);~0OЈxv8YsݻwΞjʆ\%$|ƃFWJ>?{: h>yQ~!'ih7DD15t]!gjvDQhۘE"2v4Mv_lKxV4c-~K'|6 2:[^zAݰS[e7}bu7l b$Y%DՇY% 8Of~AyF((It,K?uJx:2!ulB^18[{K0ڰZIFa$Xִbu0d"dKX β+xdLE$HsDpmPbgf`3,aa"lV Q@o|ᇍ$WV r/ &,->_ ؽf[z;z.+0f3Bco>]̚4[]YVTGL55CW,Ռ25䱗:NKx6 55NOkIj7&n /.Fc n,lt:CEqc'^[{dOVZ%17X7EQ'AE}>Z;^+ Rbo}0|Y4 zd8s!Ku"!o]Lu2 5ӵ`<7VOxK 8ݵ?4%I7nܸ# zcg[cM5ِ䁚E}1KeJ5PFg;~hmF"{ t{;ImwLZo6=Yw& èdŲhOy!PbLWb. !@Һ^F + B,(9ղIU3e-\='@U[A$RV߯:!Q#]XF+֋Bc\'\(AU`B!X:iIq"VP0dyпyP9 L VGj"Ȯe\xT rBŪҒq`EU DQ75.ʟ+$Q'ྪ\+XO""/e/8(WLPܕNF ,+ K`W(C$ALTQWFQ!]ȯVpAA%V zKY&@Ksq꼪Z-uĢrTrr ((e( 94XBe&Ity!vūW{sVTK8 ,\dQAKB ]Z:#qMqؿmxZR8qFo,Ϸ;4r'd;Tdo ^Ir,? أ I˪cptn.IQv[w*dIY/b lI;,n[%)ZqϥSy'%N (-R`gTgAh2W|RR\UJ,1pQYUe`T#P 4M2fӳ7^Ӵ3r9Ҥ$J!4XA$9ݽyK*|>w+nUbnzC9=;98;bM&v2\ rh(^̂0g^\n.]Ay%S@M˚/k]wmݩ8as?Mѣg'0:gS["vh2kv9xWM3q6q(0ykt6PAћ ]1o(a)4eI:^xwAH;p4s?57dRdŊ,eihY0<{>=vzqrT>;ږL,+7ܸ2#j4FS $2r$I< wO.+3!r0Zó UgI8g!Lj ()k TJ/8!R$N<=~ѭs>4No "0@$M!ʺ3)]yw{8fÔ {n zW_atcsṸixtp4N/.$)Ԧ-7;S H!Gzz+_>wtVSO>}$KIʢa?`nSd (&iSh*q.>e O`t]6$9TKl7^~yikK5,z!94On"Bo)Q R?$ұ46M* KU"3xǭڶqL$UW ٍ,I ǁu932X]G1^G,9E+}?ɺi\E0\ h5 "'ki%́L@f[05\__InjHAx.LT@HSB4M$ d<["[Z'BAD /om1N8Nߴ:^c,?XYn^JE˹mn`}c} $d$"ܝ_H;-q!=y୭n]ldY˔:?p#_yv9zd{kk i6Ăr?Hy,RƠZfZvșA.9$)`M5T ;%4wi +Vkuuk|JaI0kFɔsw>'+$]l5[Y Lp-h8xN!Q56GgP0vcCZG@FÎc.(ME^1?`G]S Lo\fUع}%"ߴWuO^ oowU`oۛ}UH:+^^c @?%dIk욬 *`xjfyȕ7$JC (cq2ӃR.=& 59W%+pW1e-_U8wBW+~Lµ}iRV1%U UU_R8!/o ֙k 41{&z!rX=˜RWڥ+n8uyym 3Ŋ)sKȺW?^{P~b8Ml4yo|ˎ޼{ ӏh<O6; yN03GOϏ~}1^C(E۽xƋoH}޽Ͽɶngt6Ns޵A`shٻymx|'\Qj훻(Éc/dza iw?uww1.\[i*~e-ͳt:OGvs=}t0sx L7«V&nFd I?dpݘ9ތ2X{7ڿ]/r&ˤ)Zw>ڟ:AǺe JM FI.#,kz2,KKvTPeidH2_sVUJ!d^]A9Wʓy:ˮ''a$@ںi2XKn*zFY16Ll{}j/˱L7$ELgsYx|<%aD!Ir{_Di9B՟zrd$GA9_q7_q}M5eDTUZ)!W$iRQ imK$ipy~wVlYZl9\̯e[^8p\K놦tYR4S$, ",h $YBEi.K M d4:͇iY,2UUdsDoj,\ߒ ^S˜hX.%NeR2h&z=Иm)"qt4h`K7F'(MK7tMY`]:Ւ\Dū{gBT$j":2eqX .x 2 RWBX@eDsU 7T eə)KugFoRT%ZT]H+ZۉtI_aXP!TO^ ȭtn_3`BQaeT ҐF` ڬĮf]e_+x_m4O hVLTUEEnˈ.U>H@^ulr,E$2T@+ԩ2k@j. TfVe@fi u+sR]b"VbؑG Q +fr*Y\R֗4QG.- xuUH}іƭxkSգ-awIrն@M ^0H2ݒbEQ =gsCW0bk=:]Lgn}٭{7Gav{=yv]dg~Fb2w)쬏狽;[c? >x3_}ЍPiTEߣ!da;7w[c .A[7o؞?<Qv> ]6y'A4 Rd!=_ϛk \#0R<˲М\0& _<{'9k{6O(c6Z(gbf!2 3!43]p( /^tqB2=DO,J1"˿e4[Mhn¡U)hZMҙLOǾB?G/MU<\ג$/ʖ%a0?udf~64ELH`oF`5eaM'05W #<Ku,{ -f͖wx7J 0ʱ"Ǟ'c 0cv#)0PV \R SV`BD !JH3-<"3ΡDA3KE,#2tӲQK,#< ҔqF HDY"81K&cIL BD^N5%=MM#8D0 &r"4g,2>s)IliDñmܩ7:XrJad4l,TUBN`8Hyv@Uk.Lc ] USχcyElRVc ЦfsGR`Mhgv;~} h9^dQIoi$IH;{-PLDCVeE=ƒDƓ ҮI9eJk[gqzSLJǓ ǥo6 B7Ƀ e3H|v_ Nuk>u"F ˜ӭ[gGǜSŻkGiwͷv[~F A!׷ڡ/!`ZU`&(+*=^aHrٺZYV0CˊQFZ&*j9Y^xjLƙJ>@+X& JrX i*`,(vVQ5V)A*DEiGYQնb0 3յD\r **-%ƸJ#,?K``u%ЊIi+ eW>Um_/p9Hr&MT,-[wR˒ӊ>P.~F!t`:~")ed45v7O2JdN_!w:տ^_U $,RcЄ1J Fp|v6:G(_BġͳNr[DfUh2gSaA.l˘LenBlM=_y]8#? Lo^̓>8\@ .rfhV-$J8P- ( XS;!*np4YUG)`EEȊ"1>JhbeȊXi47RںUPR"p&$\V$co3솪!b `9tYno,$$ Y׶[n \EcU@EԔˆ ^p .vH\8E,5#* B`E![Q[`uPo(|BJ>nŅC.HJ$JYVPNP [:ck\ $9 D,u+G[2rV*H `x J!+PDX|)T/yR@b%_U&#(j*<~\T1X!T΂++ʴT@-5+J<[W0<朗r9pbF9/E}UV"5efXA ֖~^J.h5nlyLд_ګE٫-]W讒0Qt+_Z[[/BC iBq a"h%KKe9"̽W>׿ ScO'kI+,I'lȓ$OڔMlAr*CiC]Do}ӧn&T,meO(}6gSOg5=w|3K#󽭭 rk>S>Nw}?Ń㡓d˘r)Y ώ>|_|7F;DmzleOjvggc<fktۭ5:JgY+b?W6^}9|ɚiQJ(sgtqpr<OKlq[Cs0bA?73rz=9 F)"`Irp1~ۛ.pv:]4Z$>z~^I4McH9˂π~}겺3mE/d7?9|z2NT xTK=;L«e*q M'4[Qti"QHP&d,h*Z-(q*$ WUg=ڇjn,%$K%dz2rHu #(YGn/]{i[Mw?8~7:톬鲤!AA$,NN'G,a__o>:2 3spSCz1/A?߰S6\ ?ݰ!*8<wumܝgI&;mHâ!qo6 -UCm4f i$p=UuUD,,Ku(f9$UX9I(1e݌㘥SLHYT 1(̃@TEV!)zs JaĞΏ G,Πuwwl˦Y8H "DďnS -B,L5OIo@dwMkL[[|})Y?KȪl5Z3_!QmخlحlnYJ$Ϣ5gO$ n!w|dY 5[?HpSK7!Ӌ$e4 JN@SU7K Db oݟeKOގ lS2avx3  *r`2`peB'O\7[󛿜3I[?d[7(h_#A[N!vcđW+ O`!|P2Yʮ"eD?W!t~2= sX*)EzMW$A[!{ܕ5b j.&9úBl&[.38u e}E&/x@DS5tVٗbLʋ.{/TqJ !B`B`.9 U?U [Q*# ؊3)WkkJR(%K ]AgKmhA_L•PӢXy+CW{]廣UJaE͗(|T\LHTѡr],UZ" r0+L+@uPT#.Ze6CtD_PI DJh^}cūE O_=;u%ՙVU(( 9R[Z]+""Jnyb~X>*NX]V1ըWA9s,敬J<\斺!VIha$0Ӽ;85W~,+$ka|g|֣8VHl843ݔ_x̓?}1`wom9hZ>9Mg۽[pt:}V}<9{ޠ /&ĽvEO>ܛo}8 xұ|vڍ~wFq a|2uԾ 9xuGB'$v{pvnqݘ;,[?]1Tp!8">3?Sd1g^_ѳC+s?NAٲfN>}^nv-1,=<;N:>^;DJލ{ó (N<͋8_%bɨjcK'X 3 2F%CDB@eX@eiE*I@BC0Z1rL,8d L] :V4LHmG =>ָ/`kK2tU&gDy4 s4 xdY<0.s0ˎN_wNz N~,Ls:K/Q|2>9щ/3o(0==;YҔ֖#T]64N+JPR4ΐAT3,ӂͼf2"r$D8J̆-J.)!8l^wxƺ 8#*G/ A隝ReٲÐey  (aE$Y \ƒĘH4p*[ ?KSP| #e8"INUT%M[7T[H-U3e BUtY!K9b$ sGghjix2Nne`2~31]SoƮ)3 FTM=Ӳ"NĐObMhjG4 (nhn聿`Yjv4]wf8:9?wtKDխ[vk4dq<Fq~~ X_34ED5{4wc%Hi&Zey'AO\@а>8`rkĸ%]l$Iєoih@EhF?~e P0M<á(R훏))|w?GXS6Gώ&sEVڶyzͧ#zh g,wVn;w9ڍ bL,(d;Eb;Zɴ٪lWPOʌ;ȹ++ΒQ.T[4~5Z} Qqu;ʝ1VWEN0ܥWAHg#PY%WD\*ڷNˀXʌFV-tIt^ L+**["לP_T>6\TpJ?((:VD7/п(cXG#˛s !$%;\E] I1F5Ttƕ@ w\a:(iKyguS h4 2+(ī>(5U#8.[ZVuL UED}e+$jWZՂK3Yh9*A! uW~(fQE}?X{^97P~+B-[}x7Ġo+ӟ5ިjmWu6Z2U*~X*U*RD]>!00fB+˜:珞pB\CQm ғQDS4]k=K~Ql 7ZO%f&ǯrk6sOǓSxr||du 'pxgom"IXƔɃ^y)xfiDnjۦc@dŃ^'ܣ$K2@ܵ[;O ˒M{sc4'X/k}2f 4wn!xk?oA TkyrVVSh$Q8I0OO_X~-K_[F͒kd,H0?Hk_-tISf)©di1ҵb!D.xv}fon;=?Fy3qsgךûo~~rxr<1y>E7ߢinoY~'/51SgfgswNwI7$<7ڦ&vijz4 n*4 I๟rN KE0uEF*3 (fib[@@-!$03%@Ķi*X dyעy* .$Y[Ma# % "F b`fy sQ%J'IBEieL Z@h<\8)mvMEQ#R,ϼ gm" 6b!ihR~ӱbMsi${ Gt:]vnD~+IrP㋳8H][~~5I4[ftA E=:^$I»m_D~ڬsp60\d_![lɑ쪒ܽ{ta0 ||~E  #N3YV5Y꫔ͣ/]lwɯ>h$ph7yZ/15Sۻ{pPY14mz?'A ͞v׿G,O7o\{)$l8I"86Ém66-82tAi([e 0BLE9+fRMz^)*Gʜ"K8J B9+;.+CG/ &xQ9Pd *x\gz]\5JKXmT ڪy+\ZS?KPX,J]^+)WRyXiVaj’Wey4 #W& 5^+^‰*V.J*W{b%l**)#^TWaSpJfL*/2Ǣ⫄T+[R Vߢhu$*1YqXS:\ʹW3Εd\WZ좀W8ѥpSƫT.d+j*VU\kت\#X0re P:G%ef(Sk,ʂ?! WE@tgM-_ #Eubu2Kuej ˘Jy;0-˛-J[[P*_YX#*tVC*mxΖS^Q"#!|߷mٲ4CADo6e?O%Yv#R o~/x0TUK!hk Q.x6gk[ e["dzoW< &iK2RU^z/X{,sZn0@L"8<:u sכ7W^}// {];'O"(M~Gۛo~%>[,7{2,oޏf>Q I6(m Z|U3H4/l}Nr?YNBWj jAP&,C22Øz`9QULPr.3dvme~OABb(j}ZOB$Ʉ@9c4 @Y{qG$)N8EK,i*yam{m2Ve9b8vޒ=? 'xD U ? ~έwdA/JN[B[ D%Ӣ*X6& ,V$Q `$V0eoI&L)B,4LIpımh-y/-Et67@X h *X944M ED%X5=BJSL䕊,[e, $cb(RGA$gs`g.v,N9V6HËO2C vw8$J^Y{vġJǍ~ #6[pNL"hZ?xr(2-+ҵͭwo +`|e@Hx D+*EIpW5jl~ЎU@ž%nCUOO>{R4nn#8G>tI[-h:ɽ{;Y89ϰ[gD1 vxK4$ #3uZP d?3~"[Y8;0$ESi")yQ8PCnЏiec Bd{QX-"84PRReٟɲ"<9"L@]<8G`'*01hHd%u<7^}ɶ%ri~MYڐUUֈIt8U68^;w˂UF_],bb碊{ٿIm c:3PASYC$Dom뚒E)PԣBņi[2Ʋ`, gsp'q9ˁiƂ4(K6A@iKDb@BeG)ViTN8Xɂ%0K PStCQW<"cPF cFsaŒ汌 I`NnKloY,Il6M,2&8 i8L+`OPaf^GR1%̟?t">}!wTںq[-4\j}xFvmX;Z2 E$*+XPY{UĊZ(ւWNτ`XZ,8\ibb*dY z+s[z*T*>aQXW@ZY( X3^5^Fʊx2p 6r>C* U~EQqU Kdj9, {>EŮ3%,8N%ZY(#yY12bx[2%, PEY6 %BYC\a@+DTkQ&Cڢi%)\e)]ub0O[]jqrkX4 Tb (څ^ "X2`QW艭Fb+q9a@ /U+(9g^c@bKbRZC.[~'aXOUSNɊ|^a `+Ԑ̕qמM??UADArO(,շo a&76d,D5!no N dZMF@~O>s"d7?G~h~rƒ<ڇ^ws{`k+#̏v 4Èr~:vomg2˘ؒ x@U߉~qp=?ϟ=;k̗=~rΓ)rFpkQFٲ(gkq~ƳjQ+w^0LG~j'ƧEwd8MzdЙ{ko+ƠN#g3Oʍk_/$qXfp((+OA9TpGEcq8G옜>ײtI@>=o4TBe,40<ONk 4杭9sB7diZf#l}WnvǜI՗l扜98:qkXaH D#Fa$\W c.#ot~FH2f׭.Dc&ADOO&qDжe 6ּo=2Le{kS a6E~0%H\o7&`kc(nZ3KdQm?}n75S5d=˔O&N ޹wy:=>DQijY͞s˜#bi`IVkiJ5$7 l)OO+1Ukk^O<\wa|0QZAwX]w6w[ަɣ$M 6gxFOɢn{mtÁiMlYڟ+iB[YJW5E!WQKfj TƮK T!%E)f (|MWx_Q!P/-Q% BYMJ{U1</k(%eY"/Z!&C C~l F\ă;V U;\jEU>IMwxE5R //oAA$+k X@#Tʫ.[m'`F{)᠂˗%h-k h #+DbwT$/VHG+*S򋫖kyM$@YŒfe_*jDxɾ'/o$  _Jxѫ%|gXmrҥֱ^zTav,- xj /q3B~F*2NOPR BWX娖勰o^#9:%o|٥jb&}Ӑ ]y8ݻum~ۘ!NF6.Dg(Jӏ=)X!A}EH"s7o}7 K9~*gQ\08S0ׯx9LUfoO(% K{77m=NVb<"[7zhJAH|䧾 i8q6ˢNԵ0ρҌ_.)anj(|qo* ")giF,]'HҌQ<{]{yGο? Bh 8[@)( I<9swdLBD}owFA 8_f[i"hP&h$)(Ixn֠5us:"K'c<=xʝ>O40#eL|A^F",=:yfL$K3>^Ms?G훟~8}z0& 3';Ơ;hЁ0|1o=|63ݽ=]|NKozK{#sUQ0Dݖ1΄q$P$vz7a/}m:wN0Jov,T!rfC ?Ȳ% BQWPʒ48K( ﲌo ✮\Y eeh"h V1-񅐉l.Ye&zoۆ,qnn୯Ie\$YDĸ9縡N'Pt,(MHyysq^vG9^16%Ss#y4㦡-S^C#pY #g:M$@E"a“$c@74ӲT!4Y: ԱD X4d (p" !)qFiF}]knKMgiLHYF1m $J3|P^< 0NB$/e<]74B43%ki#?l7e˄ R4]a<Ob4~+g;]z)K{X1.&~`sg0>looɃtB躬("뛖qx4>/Zint\n[_Xy0i>v쫻kkkqRh6fȌAL>SF͆\ox k:gyiq@hrNƊB#:8"eZM[a<9uٚi7e[Hlٿi ioAs~T$Iך.BACѴ!c =4~TQZN%>To2B2iA.0Ē .!V)?Z* :S! V `rT/Qꢫa ąPA+5.ڰ\VsD]\I^5لjJۑ2|Տ?آ2*ʘ#յ+)CUDVĥKl\pX( sN0e2l8KEW$VS*7*kW,^nU\GA%<KH.qJ/V{-s.03V.EQ0V Y]jE+ fE?x 0@y P )uz UU1l NjeXx/#XE5Deymi*JXqu Fѯ+@n%I$JU1/9:񟆂Wml;/nKUԮUu*]۬rQ6:@ڥN)_]BU-F!0#X1f klAFX"Ơ >?}u7]4j a/+'ac閄#":k bcd|:,2$r¨۰GK#';ۃ?x1GyVn}t%qNR^A56A*7Ψ/1n^߾ٳ4W~\h캷i.H7C7}{I+&s-Ewqx*DowәJ={m;M6s}?&z2sTU,NRUOGAmmw#'65}ٚ_X+L1FTyB9MhD/Zb?88;;;9S :N\'b<ZuYHa芊V k(Qp$yȗDkYf&97]7֟ _ו}sc4dy G!=;/s|v>o/]yvp\6F ×_پyc佧\g`&Lnn j1^jZCeqD@'|GO6LM!A\ǣZP Mã~͵4r1>~ ??8<_P! 0t|r~z~gwm鉛a4ݭ_@-q;kzm'C/Ρmxf1V-8cTp9,@)]]`DJ, \%4M1B %U"e lKw]_V㸜 cdzag~Hm\<MLD0&;rʺk=`&<7! JNA9﮷f o:I [[kYڠ$p/Lf!)yQ Eoؗ%'GqBVij2EzgoˇS5CoKaA9h,QzS4 (mIxoO\~8 כݛ/N(H6kCt}gv-vzWu &7n@?eنtfU,D| 548fO}+hR5yYfV&U) %!^.j{Rbu] V@~_#ByF TEoEUeVJ"rr(T2¾*+w(RqeCE&dՎ%7F*+:#1\W5V J{" kf*1RhQQ1.7,eE| :yU::ߪTEcb5Ӗ?Y$.v6yayv*`gW*J \)πWETٱ'B˧\ΐ:z΢V{]}Ip_JUZթJ,_^eIc\BZB]* KTrTܯrU^ Q= ^1&MTGXQ d|Iy_=C5rUA` hNa) :ƲfwEGʞ*箵/(<S?|>֛vÆ~xeЙCi6bS4N-|ukA\Q0e_^4Ƴ$'_~ÓuF<==0 %Ӵ'޾ѱ=F+^ȐA/qd`􆤭[ j,A.kiYd@ <NLPƽFc)K2IӎWoxjEhrdBiF)=<wMNQpLJY\,hf^Է! ޸6hC9!'a< "t8,gy%n}l3 $Ymoa[}{ !g\~Ss<l M@͇o\kO%QcC6la aѰ;"uqAa|>e])7b$OWzB54yX P<[0!$婊Wzb9VXXLqa܋8NL|w9rH2Pҳ$imu! g+f{?c, ,:+_gۘ5fQA$7uC8~ 45w]Wƀf(P$t)%-!!-A@(6fXt7 ! jYΠi ,ͳ0"JӅㆁ(E4<Maә@ 0^ NbtN D0 < ʛ:Q$ٽvfֻm;qcj2$Hyh3 @3̌ iu]anrvm&ԇg|vEXtM5a?i&@$ ؙS*cIʽ z|4oc /ݙN&a*T?s beQkk"(Dƃ'Hs$+@1qz6xc"TI4ۭ !PHַ pO~ss>ཽF6"ĴmYnO,K1AAU[.x5q.JKW4*dRg kޏWjJfjƻ\mUe^ؤp&.uj弪pl# 5.M} T,VE^YvCs^-!( kMEi,]e+XaT^$E$B!Ju+h&)e%]A9`=eʡ(t ʳ F-:V8.gWq*8D 52 4KȀXtaʮPL,jW X!T\ePy0jx-1s(/)ẢxpUfmZ凬ؿ,,5@ xEə^AW=W*OBk}5,*l#%wt5u|koXaqh&QzgUcr^|aulɯ~+nv/]juK'PTQVljxI4YW%??č9`28_, (K' ;ON~" {$=¶40ldl|7_-F 8imܑ1$Bi/_IdpE>:/6;3,MX\Wu3~f{cs8uE$IU9%¸H#[h.@JvIeKb3e EUfyƢlhEl *I NdB0KۦIU":fe+js8>{foZAOtCǹb`ӐB i 1KΒ4Ʃ2jx{K [8aضRrCU8 EaIqJ3,զ%5m.%3!AUj4CD0 R&Gh |lӘH&i[8NA<^k K!]xlk-cp}3|4,<DekN#Osz0Yv&U:ul:f6ԛ2Di'~+v/+X!?P"XМNࣳLJO$1ębe217 K T^d47}A% ( Fii^4"az a#UZ 4!K$P5","Qx@m|8`yQ;]8DRtf,R >yt M(ၥ sNdP톹@$ohͶᓧ `?c& ٺ?FRI&b>{S4sYL{nC%j3d 8gY^ن"0Jw% ^- 8]'uV4*?VC K{RAH]+ST"XR!#T#ruXʕ_lUF+J'dBZ3 @nhTX bU@c Jؿ w2V)c0TAkXd X0(.Ɨ4\$=j+k%eR 8/eWqD0,w+ǵ"HQTKDS֢ W" !.7Ο`9DUJ(6 QrFJCiXO1'@ծ+|gB%:&@YkVW>CTTSYJVD2"<̫a1V1(;Qr< r.=s x`9 &'V-r@"~R 䉢dDifʏe-ԯ\WE堗pfrijW,~qS4T$4V"/_ ^BUf{_qGEbfsRC¶,ɫ][@&6!IMçSKuU!jo5bǑxj))68GE@$VTCZ&RGӓ Won)"dO6 چF {]*(Wo^k$KBu$ ?><^N+X/`ȉw?֍ NWU,/2R =٢L z]p:X_]qF!l4MYrfs p<59Qt4_V W/\)y\RFq'{48=|#H$LE`)g IJ2V5X*D`}s2 - LT$]/jn]ۄ \?H:>Ph4xR6qAE G8Ͳk;i2)N{~|ݺ3/A"?;tku;}td5aFc&YͶ*+'9cw%( i. ShfBp :!2tI|KcャdAE($wl p (el1fkR{a8I˶-C%p9pJ@W,ks. 6t(0+>9V `h.ɖo*aYKyG\d-(DZX '.yQ^Y Px$_2 يCqrīG/Rkx5znxXIFKWN\,VHyZjָjqc5a*OU`.D.e.+-@%TQM }P\ z7(J \QVSA5-]+XQ< y^)B.j&1Ҳe1:&XkjNbA ! gEխz㪕lr1T+,'p=U7aݹ"3Z\ TRj!an??뷶޾y))(<:)B؊Ԗ@-O{?$o-KQF6I9m&MEVeMKhl{nٛ톂q'i @@3޹x>7ך*A0~|6ԶmMQn8^p$%olJr6\ :`}M tv7m烦-alEֿ_ݯ~HP*G,,3* 8^7uOsE )-D,fF?aulUTICд-I7 XK6Hѹ&ݵ"(fEE_xN$y  yQ%{ٰbʑnypgy[1 bUO~o]@£4NA(LfA{a8;{(㧟=|k} A*_l|j*Ľ ~#i$e4hF'gAѲ% 9?o|l4$4,;qֺ2sIzzXv5LVktr>ltEY"zSE\pbVA0. d4hG+C *;&˻ƲJd1*kX $DJb$u1./`E^q8z"dqL$(JeS"IV]!c0&qgI2ę 8Ͳ,Mr;Xl4A0: PU !AYBdT l,(@xg˩7o&sd@ȷnh8,k+9zo#ʺ ΐ^J`0N+>j`;8/4Q29S@{PË? $WTBbȆ!cR @P ćv}C`*T/mK( _VerƊ`դV3,[> !` ^y4r^*tj.@aRO*?nVw ius^BvxQWLZ4\^!FE#C@@TȋURYX* +8"tY|Y25AbKHl ORǯ+۬R*!deuhAg}w5z9PQ@ JYcC^t7MV⊠%9goWׄuSqj%)Aoi^oJyuڂ-)^}ëh&2/]tT?*Ve_!˯#?d+W5QRv0G#Q3"6O ݼlj,?X\](^d"D,8Y':v"d"ǟ|:ȟ:M4 *FR/}ږ dl$YNn[$iF ON~ymbN! mf5u|4WҔ]̽pga[=yMbkNNl|{w`sb6{yw|Xpwn4Mۧi7o||9y4^p1_vFA4,{x0'hkbe8O_<@ T˽i(3Œ8M4xQಮ=NǞ/8EqiZY qaYIlgùnLD) 8JPV Z7#' 8/m40ɂ89i-cu[j0SyBձ(h*a0(|pvi6-dy܍(9s:wO.ͣ^A] $0)3DDYW}u@'Yobdj".)3U ː)ծr)]Q!J1*y!)Znc pJ@5JT6G PWzp $B4,NPiKH QEW>R&ׂluB%}U0gQXJr²GIN]Y_':/JoIV {PiSS~%w٨(j*lXو/AX ڷ|G~Fnw5lo6_~ By#Q%U+͓0 E?ty̛/6LLɼ}v8ɐ<FL@8Nϣ;}gq`y(R4gQ#$AZ/>=+ x0!ϛə ޽{.hPJ^d,>?oO?a4 7ZœE(8^[kM,!( ?}1xvtXGYVK(kv/@.oe4R)e,OÌAEp_#stj > VC245઩ ,@,\j7U PVd^&E}4Z[y`4FC['^`&<ټ4Lg*lpum"ek35@YU8 2al`: @D%P&T$*AE)4+18$M.hd’.e(<]7bJYiSTDfYv;H2Z1]ے \,i7--y<;EJ09>"G 7C'4K3,K$v栧r\ɓ y6 hzԙ80Qݺ+B*QrZ+J T.g Vq((5ix/גB,o9D94% Pr7Qb^RΥQyeJU!y{yko$<' 0$IHD\ۻ4V0Ljif,ٟMw75E0_Mf!"!aD=sOF'sw>8I7= $O?>;)'Bi-~l8,ÀsO3XUp'^["iZ <:hu Jp;>G1@Q57޸;z gpcm 3,M zrvj ;_{b$XU@ /0sxv1Ƨ~; whS!S!QĘ2e4$AaeII(b/ik< y‹4Wܹ͜ ]l6 \0$0iiMfs(V+ }j"l!(C ޱdd1_{m8E2? j2Sgxn6mIuٜ/kj8Ó\Vv~L\pw7q44\X43 C'泑Gl<׻냮}r{Ӝ *"MV,Smʄӏ`)kZq7m3Ɗt|vNjh1H`@,$ & chYfZ,K1QSv =c4KM$&DbM6li0MSL,e<3ZeM =DDFÚOg$uv}xٱYRQ+)lFac=z~ A@2]Q,M7No|ls94V%LeM-Yǹfҫ#~ϏLNSL&zX;E ϽeO~Som6L, F3L*"o4e}$Xn֍ƪgy.)a* GU!k(rlw7O `BGwo.B'H,A!L Y?8,2ӚNeUmm)h2mmF%X%cr S$T@Qtn؊/ /rrV Wd T)Gi< 5BB+( F堭.J6{,WAŊVkKľe d ( LR$sjgB;εlu^@D$C걭$@~$EYɪ<*pAB WT !𚪪RV)i%Y0`*-7Oe x_v,q(ieQEe1T9@T%?|,3NR!=o+敷-J}yQUrCdcM2 :sEi QѕÒUWWwZ+BY+*BQfGv7o1<&8ȹF`Fݞ|p| E|ZNizyIfyjzfJ0`h7kkbj#ڃ~i df `$)\0I9ҥ#"Mلc=?;:}>q$@tyg2GJyQY9G*=ZM Z:2,=T 49=|s%l} *o݂`/H<"AqgY%iFOFOumƧso"6 sՎ"E=wV||ݴii*NдNmZ.`c-\o߻9'3'fb]ktT(J8E'!ID~3(.f!כHʩ$#@`x>j74"mzfC?玪ː'Q!@$ oٟI۲ ,|\,`L3AJ(NϾDe:,D$yQp c[v&)mB{A80N~$~lRJR=~x!a)S16&KEȪhf (HI9Xb<@5'O~?>0OE B5Z6chX:|\8ӹ\mrqS/MA ,)g)fO>:8>EYC//byxPUwܸa# LVKK9W,a NK~8EIXkNul(ς]lMHNtFr g:@i, .#DbesV1܊3EV0Ttseg\(Nlyʿ߾~EB`B0Fi9M#JOlE'wMgSUQ4gƌ D ]Jp(8$&BXW OBhӋH٭A& & gM^kG"@)ލGq$e2wmovZ`2b1Q hD(Nӎe9p8Ƴ;׏Nݵm?}/{<~5 aMvz^ewҌe,M*41O2̩exۦƛxQ͂L׷7rL-s.8ǩaf\ ?YxS ZOhX2ĭn8 /J8^~䇣䃮m7 i80($?'΍Eqi63o}MI<_e ^ k/)Tu]e?DkaBGét(Ioۚpշ?N eY J  !Gw[=bbgOA.8M\yƸ[=g ݰ Ks"- ks!U鹟gɒؽί#]콲ݿQLFԾ~0ɗ՘vٰ3OfO]dD_8vVPB%ԢHːJYg[ɤa@%N07p/ӯZ+͆CYF@^m^yPG)'i.lU=ՑTMӜ K$d-0Hxop &ivԣ.5l .8Ƚ;͍~=|[w0M׺)3hi "Įyԝ-3^lǎp ]P\_oGYnYh~sk~~ "lڵ}&ڃ)E7Z7m4lq!SJ+*XaJ:^dWUB!,@$BFrʮW& L,ahYJ ġeb*TtMJ2L$psnAK?vBKF<]$I D$?J>;mjSIΙ2>#]?|: 8HQ`ҜIj`3αD 7~Grg\0 e7sB[_]@P*h:O^}m`.(̣43 EF< =' S' f#d3 DEHsLd%s@RR! d*0 ӥkF!T4j*I"1lSֳl0^G$mYXF9S*xN7/Ԥ]4gJXh̷͛;{kٓ SZNWQU +1U\UsulUv$KKƊ6\҃ ^ +3=QI'+S I]uXէ~8 'JX~ҳ+14X9Z|]/fJW]+nʱ(7^VҖlWQԩA ʐ: u’,ʚ[$.ђ$ދr޺gT %)*YyV*"JPY2YpI QW'ƕɇ@-Uu\劚-,VʁE=YR%7[~"_N@_>Z(1?F۲n/\1#5=~7oqcUV4sE) q~27&NR>-̉SK%e 0 tx7Z!AlsO{u, ÀE"jj8L`I3YR KOf0Pzn.b8/V&s Y|E!I c)iNlٝajVk,1E$ؾA>1^Fd9bx,)IJ3z0YMg4kj~DՔp <ie8a2@p $ \ahZH0c+o987};_I& SugÔ8N-T%2VUBY$t2 X$FsF*YN7X^QT2mAI &iS5DŽX!4lL ㄃8ͼPK+ 3J4Ky,+b0\hD pqD Bi2D IOO@FZכ,gAI2 AuCwwnOʢgY4Ոj$)7.Ƌm"LxH^<$1:F/Q,#ijfں)gKn%>cM%괚t,1`E5"DT6/czՐ' g F 45|W8C gġ%x2]U!t6v?x˜ AkF vnG!$v[!udiv04]WRj %`Pw"W W*P@t+.|W+D@E,@TJUryrZ䲊ʻ WZXTFUR_+H/P R`TT8^1!-%.|8hYf`!66זd] .\^2hG޺ngOZ-N|$ PԲa%yYkA3*c'eH 3L(O92dDZԯonjA4Ml07s?wh %)7ڭVGDËkk=]d1q_y(M,S݈eOjphбL' p(ׅd_얧Pfu!@߶ueuMĿS?;xeC! 1+Y%4KK8HT5&Id'oMF8)#?H888K$CuB$@)YC~g~( 9n2~ ^ovbeeV0VnDiLpF,+2ʢՌޭXQbI,ݭً-$4q]Hw(3!"HR MsqByfO70i&Ue|9n<<)i}rs8\onw {rt!t+ kkJP|z>^B.ԑĽ7^{sw#h( JgMә%:[} S !J* e/ VX&eV,S؀_ *$X)GÅ5~'^\CٓUJEA^XN(deMe,]4/ڢ5lK PGV&h$"JdE#yiS^rmc+˫#TWKՐ2ʱ/ԴT >^%JK-NχJrrp`C&J%}XQa'\*`Wrā*Rn5MYYUXmI^ǬN򃈥'W5nYS^VXe%*D*gVDP:\(~ j"%ZҒվ׭KVIVyI^.^-?CE??x`=jeuUҩ2v̀+e]W+3+Xt䗍/۪$*d9Yգ7}SƔ WkKВP.0#@$D'"U(C&׮?by)4{mo֠#$a?=+; M3兗LӟxF Oc*[ (hhc~W`{Ir6 ezK"J]v{eTaB1zp6{eV^P3zp0{|1,ٓ~{z'?{7M2|:t&P Цg8c~Hf}keqf 43i2ϢOνפF^ F!9yeiQy^1}lgNs, d/a7Z-' PmS3(ejHTid$nYLMC3U== Nk[ {okm6u$dI "uc/^㩊 aFdYNX [sUB 0pT8NlM[tF&q$FBI#_|_Bq<,2BьRąwXUM  Wo$Kֵ@Sj8BKRХNxXI~2+*#)w;&2΢$9F%#@J8=; k[;MK +Rp҆,#4E~FT%U(LP(VӴa*I޾s'߅A p0 Ћ 9kw?x~O@*ԲL* +fFj7&qH&K8dI$4<.,RҐ'4CP01% {ANX@& Lʙ"A/2A,R0ϛt<ͅg@LB $Ll!$tfY|x1D,cDR glƒt¥3 I :wXo\qFm))ݶXΠjHj$UB6GOaI*ݭx횆=<oѣ8)Hbl.]JTdCTDQm4 27z\ 44"K,KE$,v"Bhr٘d4Lݍ~hkݏL+2$ғ gljIv>n~!oemu3lsE5? l }UZ",8+q/,2Z5Qdj_zu 2g6%b,[`RR:VvQe V^$,9,]Xyl^& a/@˜ ;BqYU@pU"cŖ*ѾKĥI}6YecW-ǧ),KٛzTj2]UAUDUj/*HQ. `ˋ;jj+C&@%!2yj*^rӜjQQV y++rP1qF/!VaS`!%-%yqP R#[ "@+.Ҭè,%T1+6%HTd墦Q\0c,W(q<@NN TTT9P;^r2し-;9~'ଶ\  Z@T|V ofm^eN^ׯPT匹ʱ2FUJ@ưDF(\ X%UVdR GSF/}ֵtkk'AMAӶ%ղs/FW746\K[}d4g V"_`|?<_&Y!ҲX{;ŹsX\V{wfq.DYp8r, ݽ;i% 4.PBs~/<>}i}Y.yl{ɢ(24i;oD!z㎷HJMP.ʣe|`Z#THγ2гy&kż( ~Γ}T XDq1~Jw1eQP&`gwNRPR>=<'0*24\\\B/_ &LI`Ng!rг/ݭGX)CUE ")Be\f:dYc6V-'Pk;.t1&q?܊u jE͓P- E:J^k[uhF1i4q;ZM 3-!8zITDepsBnkȰM Yך3oLFNDgU{lsN^{!͆hZm}-7W ;m.h-U ~)ԭ֯!mz4y56 }[8RU1^KZ- bקq˃+`ThYbvbXH7Hhyh#BV%+`E^NG@C||tlmuP֥{ܵ+{߿ۖڢQ\vǙ:Dg壙7A\LRDȇO=wƛ<;8FɂAn!ݾ|w.o￈x<;[^޸viW )4٦_ 2R +; {N7C.o}7z;pl26.(>Eo3z5A$sfˬ7zEٱRR W۽lL Åg±1~C?3#jZ) %ϊD JdҲH,JTG''g]yK3E"ϣ̢/Ï A ۦB(6F^6߲\=Cg;~oczڝkH0f " (A(y4>?=9;N1"nt1T z9Q[Lh}r|$yWON^Gb>}[>_G$PF'yxn7GE% F7H"(etiY\w_I)R靝Ʋ}gIV F~t6P&Z&3z7[y)5cI/g8YV0/':q%0IWuPmä 0"`!uTd?)4L%/ VîvGZDv60.RE(pݎm1ht:v]"!f-֖cw</UN^͸fo^]NN.R0,Jq̡e1 i 8).c3Q!B?Ja%;7o^L}sLJ=:TBz.ɣ$-;?׾|/`/6`exVAXD~/LœزFvӔk <eΗ ,0c#- kUFIHkL 0d~(\+ EwB*Ij,B˲m?J Lĥݫ!zdi7_]0q FZ`xgy TyveQy1uo_/2(و\WJ`=]b:+/NX JLuɚdk杓@I]}~.3xгh5HyK_{GAwz'!At;%3uqkw׺" #Uݼb&d' D4i jn*\Ol!k5h8 :WW*Mm^ [̴ic@ 3h7 77!+)Ϡi@uhLՉMӫU?BU1WXԮ Ec0aë ޷J,c5Ihu5MQҘ߬-%ՍBk(K*4m|Vu]tKꐍOgʁg@%V7>M+VsFj-*cd>K kԭ6Z[5 #\I]<|:tYJ[gawlTdie?aUBh= F/?J|P<]>Wo͑ \r`''_ ,/nX9?{3o]V!J:Ks`}p\޽b)O}5(4е_d<+яt^(vy "ONoe6I^ fr,K%~j`w7"ʖM-Fv:PPt:׷BN|rA{^g0Dޝ7l,S FBId#,˓b_IX0yhO%ĶUdytT$'.YfYhIhK!0FE(%;(\L0E%ar޿x{ rzvwb2F$fP!ʳ#"̐~_G[ Z(@ Ye^巾$6<߲Dz2 YU?haݭS]i/$q<FBe{Ye}:~;EXI)RLa @@I~"'Zw>ǵ=ƶ6Y B$Buj ^>U۽^|bR ^7z+=vc! 5%bk3?=݃}o4gYd;16  :Y,}2kl|6YP!J-آܶL#d*^g4@J@)u,Rx J!(9*(P}e) 'S)(8۾D!4!XZnl; 6Rptu}7Z,9=˂4=? =BcYw>xd;.vg^oxV~Yr1fAc^gtks?xM- 4l/+pCWbwg!o{ڞg92JPxA/^Rco>DR9ɭ`o9Q\I M*}$N0t>4Jy`L}x`=$xWo7;;|ByN2WQ!si7o% a 1^_,F2u61kS^xfXx%IP׷ (AYUlugBQi2L#"QhPˢB#p'ĭ]W2#~q؇(% H5UVC(O 2MxEC[@d遦j bɊ'rMexSbC\M QJ[B)uBSkcz\i\׬Z5HSi> ɺ%W\qM" Wo` TPu6+ H$-irWW9NB BE7hhMrP u?hcԘVeaF|μ5oX=Z'4чɄM3w}RY;Ao 76}Y~ ~N-u3LpMkQ*!mտkJ+nb+T ׆*_ѠyՆ jwʡ\GȬ{`?[%lcָ{}Np˜HGۼ7_Ǔ ^k\(^H!)wi.;i,/!syw,mƅ^_wh1 )bMscxz;ۇqSK7޸+~pa.o_,25[L2tQ eb߻߼nY9ӌR?X^"y6CR9%?`}fYa4W M gTʀ9_I<^gRrBNs!$軦T*KR ]2Ct63%S^jub]!(u *K7aw{Xr}\ *OfqZL~t\4u{Xݝ .E[^o3z~o00k $B(0I^Yr2yمe|ytB[έtyLkSLt }<^JB i .!*8RY6#ŲLo z8AWܵQ3yJG];*Ea <"/^#1ԌH)5WJ w74\a̶iV -_5\BcEƑY3Q j'q9X(hLf@{dktgK@ƀ^NKw`TKllSW*KgN.TKb= .@l7\aEO67.z*Ԝٶƀ?߽rc8BE!To0r[L J>_Da Fº-ysIa!DP[]@ HE\(1fiZ^D , c-۷F#J  mf -wM4%F&]ʴfa|̄' `hceAU8(%2P%[.3 ,$IuQt|]'pjaZy"a6Jiy8"`((Pտ{@]ݎ}y̑LH*kmØ l)un;e0*:ܟץF:E9Fj6{6V>?Kk)°sٙg\K\JGkvE~?PlD훻K{>9<8菾 &LJyљD0཰{y8@ǵ+0hk`/#8HhJVGMLSo{66( [mn{,kӑW fMYyraCCS9T@0rY-qB(Mm@50m"S+lZ*[!iJ?F(Z`1@-#lH&6cf kW PqN%MS+|͜1j?)&+Fj_ҦJkv(Q MB9h,25hw=@@ݲuGmQc*6SxTKJak@25XﬡNKCFO͡5Sc4?bY׮>Mr`{ÜTZFJAX,8dMl^.&u't3b*$m$EQ\GeudGZWG ̟nd5aZ֜{airZOWݯƝ \O}iT`lFAQ6ul{e:rLAcrKҮ{2C}"Y3[Оwsl֝\d\sJ(y7Q,X*o|CvwN7x;7,ﮉK,ѓy]LKte'ŕKӸI-9_d:ꞟMolqY).^}>K7.xX̓#*"O]D̤,KPPʋq*&0DWoIkٌ03HZE+ű(Gqfe'i ΞE~qy6 [["gQ*`'eAh~|:aw0 p Ƕk{q۽aLLv4h0RPYR U4]DlN?Ť0*/s AEr/NOƳh@Z;Ɣ噸L1"EpD<8eOy۝c3S8mצ= R}c ( ƀ6BcH.y}hVWYN&HSˑZ'QB(angp!2PYQ0F4W e,*p]Ƙ]p9n :> XggP1 lrձYùL汳s(5E)m` @ DV ?[;;_Z݇aT#K.Œ3[ot1;<<2Mq7Jq(&ZK !.مgY"qE&F#P&XU P+PK.Hb0ḎTYx6 K 4P7H7*w,*eQ^^,鲤;#LHRARȞ\DyJ#f!@y>Sٶg! y?LY7(-*e.5P+f0r\ܵioc\&0{݋qC DŨʲr`.sЋeR*~IL6,be0(u\V`{i;ڞ?b̦aL+d%Xj[A{e^. t-</&eVˮ `?jQfճ̝7oW=$Qhr \vY$ƠqsLΗ p&?ٌKgn-Lt9bCBJCH rGnjV * + ƣo-" F"o&Ae2SY LiSF2jD\wȁ\7!%R)M7h0IB!&ٛڴ3}ZZЄ*_)ni]XT ͡0խ*5*D3e%M۷$xӤ;6&qVhR;qzfBV!F൅6s p \=UՀki׻(uv\fx4i#|A\ kلWCueas&*дAi6X=l-y+j5$ Mjn> *j'ګvi-ѧ4jG%5! ug>Sfrieڐxxu}WmYh+tVmFw214zlB)CZ mRﺾm}Qk&.(xK?y=k7 `QBt㹿=z]R${ìTJɉZx{wuu|1, .o_V\oΰ,tn)p6zK  n퍶`Kb_ le|!ӱYC#L5FEƥ(Ҹ'㧹e<7i(|~4[PJqP̸%oia>j";(I2bAe(e,꿺3M[QI-@Ji4碚}xo|GJbyB0ƤpײΑdPA(-YYHj Qh#!lPƘ\Q7p-ʼn!l4A:9n;,%h$^(lJS*9/%L1uqYJ(ĨPJ[o®ko>xRc a9ACw;m{ B ="#HIGee0Y&6(-%Fky9Yd2BgB#q^(.|l/xQrb$$ #YM F+[*H5H@ ! Z eI]*UƩi\*C ZH ۵Qr~qbyX$|\<7!L`al"I10Ju|JiXXwZwTO&|"J`3Iv\Q=OhΖla* R*;KaPDz85,Fz;|ɓ'4Xߧ[/ aNo??> ,\caHcΎpiXidε+.b΋xw{'P:vWoB'~ cF)5XHΘ[o?G 3fprqR%.;)zTueYJjpWIZ"2PWHH(-6x&6Aݠ42&!M\t;Y + cV9Q&jy [H["4BZ5BPQI{UoZA35YYkbn&E͐ ]}cov3j)P2i]4c@V62XZ[+ 6[#갇&YU{iS26Nl틮7mghzͪðefuX}W-oaC*_ πZli!IXߖޤGҜLv^EhZiixF `:7yݵ}KZ¯F>}mRJ_i5_qzQ' ͝ׯ5g4mkpX>5mPQgnn@dإy0v-T&C~\m ڊ?=Ld;=x?H{!G-?-|>^1ÜL9%/per>>kK.V0_L޺{xw֘eB Aor8S7śR:Ow~;|N}72+֐G ;˴ًtz~'~Nƞ;L:p4O^/E9Y&OݓY0&"~y#IyZ\BoWk[$6J,Zu yɹbdz,t>9,ɇ,aϟdZH%1FJ1ɥL@@)tH-ry1("1KIA,RHt6[޹=Y2suIag{vYʤ㭭E"fwkkIwI1.$ FN"5'FqL"d6E &I2}p6Qa;ޓ AmDa.~zAG\djJw֦2H:ޥ~`G`wF ^:ف#yaf7?e bX-V}6 Ux.(FwGKR㐑k6?)aL)5 {D$ ێ!.d;]w0ڶc ?0B7G<3,0][sek+`e^@՗ȘƦRڱ ajcPHZh*HZkpXPLhm\%veJ[uiشWݳm#.U6^j?@& nRԶLՔ.AYي`ڕJ^:ЪHSZjR4@#۹id`ӾdjMQl4Y Լ IN)W ]=ǚ~*!T֮r+aPk'kNFΪZdVצVhr2G7Rf}^>5n4kBVf 5ajSgMN L7+~'`k'QsT_hmsZm^VauYӏ=\%.֟mV'vu@kWd+hQMjnAqml1iQ7.F_\˕@5FD֖cG@(Q>d:eA F" ZJ|xeB'n0REZDwlœ'66! EmxcPp:Zv!;K|scpe{c (d<<Ib^j. t;]ۼ<}8kƯ yV Q Ӭ;@!j BX KA%jzAˣr!B- OOO1B LebC,0ZTO'&TrA:Ϣy2[ o??=gˏ1Rm=x.ظR`s'MQ (-o훽ZC5%p e -o~ $&:Wg HcFhiyxeocqx>+\{k}i޳_enQ!quW䷳8CƩŦQI<\|k{`[Y1k_gMbsOB.]:-UlnBAvGEJ_`0Y]* @Pգډe- Suu]3:d j:U [;ClVֆW +ĭ*ASO |ۀ6Cj-3 J61Fb[aRBk%ǵM"Feŕz}kuaW _#Rc1V$vF\-( [>p #iQ CjlH9>N@*MJiki3bjAzjdu4&-k|g{Akhl1gm%z\CIESozz@}9@Sh*j9O&b4&kwnQV$o^UdLMuHѧW)[iLBW6ަjFݷۘUzM}ZAaTC "^e&"C 6٫fJjYPiG.?^y*0.`|5!A.4];&`?[XER ]/~t"7|?c{(~rN ".F,`B wYRcd|OWo\gI!Z1>}䲈 칟L.A|Rw;?R<8_aPfbZГyЃH,KmB|嵽<ˤ*5ʕ~x8yyQo5,= y\p(/y4l\-4?{~c9ɧ8A=/Pf`)nx̹vAr}R.Βc$Wz6Z'Zrst6JadT'~}Y/Mx}SAخ#?9o8AO!qX^we׵Sn\shdgwgHi:|9:qZF)9s$mpL^(K>h}|6} =OgI`{H(>~:\~1%̯~ScC)v Bw1xdc#^s `a8z̲ݞv֥p8ڌbD2amP )5Gy;pot\Yi;VIlq d.ҥIAsO4. !DmvmBùK[#4Fi] % hc۶<|ws8{tČeYq,jQU%$-a 8ˍm'?^,\v?K_fQ'9Oܾ+/ P"] 10-t6޸]H)d JX b3Q݁-4aCw=`r3sEFh"๎-ؘkpj`.68˸6`yvl!tU8E@(n#ĐdhmnGiϷA(ͤĻ;[4 Ø |vrr[-bƿ^ 5=:<t;Ķ7mz'sL0z9h7;(AP /2#3<:bD0sz{'RjȵN>9kcr 3$EȥPs9=&a#ѥA/=qY6ڧ֛/so"F ۗݻʲ雷oh>/f_ya'LO?g98ٷv6e˨ƆAPCK<R*i:TM,C U]ƴ#Vm}ݖPVacijB5n :\Ik@mˠ+AR Q5W=_ uY&YMgkd Tl820A-Ԟ* 5il=mœz3LݔU8hXVp3zٟԽx5eH- MHAMZS ԜzBtA+A֔I SEU~}ma58ƬҊ0[xkozwЎ$Kkn]Ck8V9zX-*kRx41WBcFS%IyJ1 z]RklgkI Z7 * }&Pk8|ӊk~3kPckmj`6kMelJA4z]Kmf3Zk6S.Fue3jxщ;$HqG-?W(,zxr10ٶlj)d4x2<h>/ea4(st Cx=/s 톎P4ܛ㋋xH> \V7\)(w?ɷ.qy&e% 3I|tl{G؛^ڹƋ'7۟ηGTg^~ExgA8gw󅵸Kqr!IEYtC/JR%7B/V'rmB%R+˶t1Vdq)]$[gf ntz,NmÉgs|b9sv~iDu ^vrC\?Bg{s8Ql-w?zîugELErzrvkʇu#Bh2IF,*N"vsfd5Yr8A˂3F P\Uʱ!iPHKu6E)PT %Jm`ws<@b%h.QfId3F-`tP!Ƕ@"%,URHl{g; yΧgI )Ake6aqJy1; T 䔘39`GiL:_pȋh[Y]Luy2[?#9̍7?>'alƠdQi-˟o%bhE@UR|?3%zlwg?z@nmu}D,io LK ,G_h0XQ݋\MĕQsp?R̦]`ogz/}_$#Ϛn?A4z o޹T k5bZSQq=,o ZL,׀iQ`  +mTSBkי&M3"J U&x;md VDM8i޷Y[2fM\gֲ . zO)`2%m]Cꅵ fpհImbU f&bphgNP} |fg{yhaqàkmoFHWۧi{ uܬS=D]C 2 6$R iېEq+ϣbqm~456qh}O.)QiDUC-6q y6'%OX=(4Y hit,wzHfˆi2lde-W/8ơ`˔񽮔ɳXQгiIC=KˇFe^E>7;g dg#|gs;OG:ϻ[=H"|ְ^ąbVRJ}rzV/4/FϦBcw_Xn:6&/"΄R/iQE(J'x6.N'.؎N8YgKiͣHxzve,M}b1e.b&y)7gEJ)4XYexX]h^&dgc3};s7,3.7F,m^̗I,mtww6_ &D\-ÃV0D^yc2` !y^$%ͻԱx3onololcӿygq^!H֗V`B2ZD|1-xM&3sw4xvtQ(Qpʋ(IMQ¥2R 8s|DF2P*JqVD.1Ɣ(Nzlz5ϲ-]QJ5Fz9~s,_h&J)d28UPё@!ZVQe9` 5\pXSF 0%ƘkTBjQb R=P)\bBtE"=)ed(!1eVJPLl˓eҬ<: 1$y1 .KQ.xQ2Q:wz>/b(θ<z]Y0Fltnϗ**}1*{@P%UW#JnL;q -Zǯ#hrFu k}ת%0`u)aҴ[bbBXEq GU`SCVWZЯO}:ԃL~e0SD13BHfŖ4*uvuzWҺ{gnfuMV k5FJjCǵW'CIpym{2Mo@lV:(@F?]YՁ^H]:ޠ!\˥ kն4~-U>}ίiO|:%ihNhr,ӎUôR:"hNB#CFhhy:0Z>,(7qR߅EY 5Wy ҚO;0l+7WiFH)]\%]?5Zy5do^ vi]UUh9u8km^ɬ6ZqATțh?Ǐ?:܈Q0 v{aBx|E_M*G+AF߰L Wd%er2Y29~ir|!2KCLY~0T)R Y o'tO$NuX/B"`ʩ!vG:Qѣg®v[Fّ>9D y,\ .1H>wRm#egI l%u}] b[`BEe(j[;c|WD^\vM-I^/4Q1ry)1ڢ X:sl"(`j#FgIwb`ʒ\dư(sBp;7.; vm;O(M6"<|L(@:agE(CIZJ"{^G8:9E<˽qu&D  RQvPTgn=Hu)[-3K.bbumsiJx9s1ARPeQd @?x6Sb`RimCL?x>)<?{ \G !C/8az77`htwwcC]9`Jxf7ɡ:hyd\*8_???_쯨,fa'cFkj)-YXFȹ/wֶ C:+ HlVJ_7|z4yk{|FF`tƋbc0$-`l9ggN8moOKY@ҹ-p`%Qt)8!HxEJsMB\j J7`xYhͤF2!bԱhΈ4ٖ6ZQE^n+c1 FBI:nQ%`Q!$@AVjZ5זṟLLD$ySF)Ȅ\GR!,Rr?2$6R%(JoeΠGqv%ԲfӉ $\esn@c$Q4Z1Ѡwt~OkE9_|u= ¥a(Bj>~S@5ej$@׻=:<[ ۞܏>BZ+{`65KE1/~V@$$"o /<'FHo#RĹ`1~cG|1t}w{%zMWLB-$+*]PMAU<:4FUfoQ*\ ѫ?WL`\76XWoIE6jƽ#[{=faCHe1gU6X 2"ƄAh2F yCڣfgxW1! (󡑦UސZǼZ"ZEqBƓlH^Fsǧbƀϵߺ1n z~敹=]R>e-r>te3 H Vg/X!ciJJ7_[q߶l :.8eK%\r"+Dy' tqX3c2ak@!:E0BJF1UAK˷J8$G-QHĐHG6|u)<}i#t0e)8/zMf{A pc0'h̟ !`~Zp wΖI^ZgiZ`R:Ɋ~JP堍\m"-QUBI0(iWEزU̴6XpSNF8Ȳ476z/f@S•Bnz8RYalg"u۶E$0G"vؽ`?67]חZ)0&Y㗻RC?7&%pmb;9Bلҽl1 g3eZIձ-?GΣgZ)W\2Jt:ٿ?󃏈ň`}v¤zoV,lG/~ Oڥ~schOb i RcfqmEkܳ B !UPWiCSyp˕1LZ]]7H\*05eo h8RG`^6 _]W!PfZpi:0 mpsT\5B_5pZO0Ccv1_j5 Hc o&ZE4(n`4SU,1:]1JFZiZl J؃6Mj ]=ROa3oc R?d-c$Wcڱ־Ɛ4?M{JP?/6NCjzbۈj!m0B x~c%ma:^A]:+ԛjuy& [×>vWfmǿ%HlQ׷ҚLIUK릋FDŁË1F hcy6hgJj]0!^\CicոΒi 4&Lk0h kCSR)C(mjfyJ:A:ņWNa2% ;̧j@r)Jqآ]Qck<5҅6X+ YT\fEQDe4DKC$M%Ǔ3ʳqvvq687G3& W#!bĹqVvdByu,zV(Y.2ϓ[~=oU F (VZHBDi .`<°<1AY=}z|v:eX l6^kb2FoLe0AbwWy', VK#Yq&F*'AZ̨F%wA5R`8]eLz>$&'YQw:p -1J Ɣ?pIU&YN/t&t$,}t88u9?qsoÐٮV"ϒ2˸RS^&YEq,yF|2-DNOg8-/βh| lF!9]c<ںe-"Qж=l䴐]Gx \4KsWvGQH2siE,|63J/9*򤘜H)D"-|_̢JJ8?mllŸ :(6s8]A8~vQJ'h1~2yrh/ ɑ[QbQLG1>f̻3/ sCuA vc5[MYVR Rq?zߞ.pn fvj7#.DXH{DH1ܤR!HoAC)1Mig@3ْC2B0TLXUi4ARN$q`>%@iXP@j1Yj V! '*Rtp< Rl7*y% 4Y6Bt(ɆMJfEq|"d'H;C6:@˼0#ze$搐2rF$Xq:3aC'4(7QhZaߢR8@.3 { Q'.Mt@86nEQ쏡8E' XJz yTxhH^!=!:CFXxnvg} t@\ẍhҙGZ7j^v|c)žهuX9X\xu0(>5DVZJbϏrjJi1Axq ~~+oW\hA'_ MFQQ9d)Vg]C%C| ֐љ )Ak-cRE26ܓSJ-a" 5*똽(WzuűLi MGGh][#۷^\{02Xh2ORmWēߑɝ Q!!a :؝f\vl.~j..Wזv>n~ 9 u^STiem:gnhM;[VeæUnx^}<+j'_{ q@ڝNi>}Ą:}t6}r~DI^xV0`W&}V\KkgjYm4fuI)׶enʜ(>ydy4oOPF(LQ9M v/ݙ,kbb^=|!yHkxitHMg[ 7) F__7};_||W~;Klg~~ ˋKS@\2g w?'GӟOdq;>CmfvugWhB]N36ݳ"yةJm;՛*S%HAaRt)b|gfEg9/TN lihLYJ"&pa9k/+xRMPPɔ&¬׋I)&`P uߙU &TҹP}v%*%EZusEMfGP$H@geufEbiMQxIQm=^SP"7_n2(bV%jc bPYLe/]?|=S,f;g?<{g[,tn|-|g~Yڠ e9ǔnߨ웆\73n׋Iȋ ֝@Z,&S@$feŻG1Aܘ6r\.w;gr_oӧ>l,"S/{x_])ǯ+xJw~s_yOfro(vVo߽vl]Eh6֟so+o[?_/vbY>NrZtr>t h Cʰ4M !=y[ȴ)6ֺU4Ӫ`&M^EyO<9 mP!4c5vk@Xr7i['yU*j]o 6ϊuծegJ4d4t-UGΆ2+fU , Zח)AUujA ۞d~Nt9ucruaz:Ë|!Zc~;uCBXѨn/'9Z+bs.Oѽhs}E,y;*ҠyፗnL/OuTq=Uf%)w_{o/_x'~ޕ$$IdR#-2Β5X"o)ZP vKS?a3fXװX2Hn(c`BgWB8U(Ѩ1MX1 z2Ă7u\HRBBr8{ {Ax%QBt F`##tB3K9Zf`s`in=! bB؟bi6C> ܨ,0tz=SJLMn)uIp u#FTy`iԨLhht:7k q9va-8ьX_a8-*o CT *ăRc. ,i":OF(~/iAo[`1:No^xԒù @c!ƴL85^Eh(WtʈCff9Hd,G:$Q)?~kF PY3\Ծ Baۀ[~"D+˲X_@) 8;DDLD:1ђ" =sԠ6 fHiH $E/a&VkԎhLUpDrmB`".S0`A"DArSg`r+dC/V6M~O3o4εT'-tivz|+T/d{ҹ%`umWn.~zmToϯ6`xQ6ܟptW>skmzѥ棧#;eՏο{fߤ/bx8IaL5w_}ϝDi;wA״κNmzo}}~奢| h9n&ujk83´˶q>pi2= E۷vZey1],2P$ blgtZ7W0MJm3oXLc r9&Ys]]>?;;*_?p( YF*'ׯoϽ־BL±n6x2ۺ}DTo v](B^m"6u)ع;?ub+)a_@D-E%b:(3#A}}[!!LNWz":ݓ_<[&3*J)nor'LѳC;E54`4=6FDBG?҄í$+5h6fIQ龻Y`oKFExHxnDq RbLz$m!^$ǫ>7yJ0r-L1#(&β\ b]ctǒh" > "qM1؜>8MۑPk!ŪsZGe$mdcdӎLXa aG ",95+$^,坐l L2,H(yŹLuB!ٰbX]دjl]vns5wu}u=:_qӭ8LOwݓ'O$Mw.\i UY-O|CyarVB|iYZxwO`7/s vX_jҶugx{哧Լ82eYvq$MsMgBQP=[< (bLCfA5ԍ sTl{jo4ͲRfն]|z~ۦ01wb2l^ճTZw|ZuSU3Ch~($@ ғolHne4A 㜙 gY m,^|k@-UkembRjgH'OK]h'j:1@'Onx΋2WP^|>E&F}XoꅻeQњke΁zWmm2 F) Z[y;99jLq_?/?G.f,3W~o_?xpؠI)Pwp{ru?kI ם1Ƴڪ BXQVB9NKd`R †22=̷V4rm#au]Vmfo,$ o: %oi_}H zu&L΋]Cwm[U^ֵ'SMtf>lHtms‹ܓ8lVՍ]|zl6( 5&V/TdOI%t~Y{ՒPG՛?AFBf3[QZkskGLUA|.( _g"\?SW{pK?. Q/S>pQwm>DQVONNOB7f:'LYZtxmq:9b1;fyH1=COjRBܘ N/0lc0@B\C&Eo<0Zy0NlUb$R rR!* s*DO1P{'H,x{=Y,FKz,2OG^SAeF8lfuECװI[CeTC_ 8IR^0ˑ$D)ncFA(mۆ:+Q;〒(Ő6' 4 !'ZP8 rA̜z5:;ncSGMal~#I!T} NE0ߔ-yQCd" p&&[7 S p5!{E MMJXXFX#GyuY(xlmꕸ7P7[o*-%}lۦ2Z%=&Z &3 b jz)mm Kt.43VB$Ƙ< 遤Q14⦣|Z3#S=}hCɘ,4Q4%31},EgYxHBf7/*\!tnbEuzC#bb335:]VΘL)pZwGg5 b&w~1NtN&/M6,PXٽ=.4DjR׭% "gѺq6rk*SvÔ&)v9yg@׿-# *m@ECpM_uY!NOz`I'g$&{& mdqe%58=hiց/5K,FL̪j]3k]U0I4]]/gv5u-:*5y^V߿+?SzRO߅' D+^[GvQ1.e.~_+Qw]Y>ztertA<VU).*#GjtƢr94U(%} (69낈oLx^1( ~L1ϲDlm/TﭷABH|>&ֻPEnEn^U}c2兎ӖlUA0'NEU\jǒWL.W jM!P*˦ӹ&ȫVzS.z?)ѣ' 1c'tSϽWE fTL>/ 3 h3<}ͯ?~k]\PhӷV W;rmmS?# 0ֲJ?w6Mm/-/{mCT/>~ њsQwv?v+bw_<7+/}YLn5D%܇Z1V!֙XrD"h8xssPTfiכ4ϝ'OID8և'#L4g&:ZA<|TXрi47}{Y8@՛Vj1Ӡϝ;fbV8c Ľ=0^hŏ-CXg#'A CacVY!Vlp~ p:G$O/CW3tBlq_暤0=#J(zD 22b$7ҟD*(nDqSw(6a{zxIbsB:BʫH ) 8K(PfCG%eblA:aJ*h?ҿŖ# " ZkH *N|а -!~/=.N3Ej*]mT C&0x"ߺ QwrXIm@-yB@gYZ(jMٖg>C ;,3ČIRIhԬR1X(ƗAc9(c\FĄ )fjԁyrF3r #Ex jԘDDuS-yLG\D2FX@7dD(e1yAUBBBYVV٤`ПSQ)J V=5[vuWWջvu5^vm|v'!ֽkFRXH!(),LgTW%Odk3 Y]lڗ2CZfݳ_dpgƅWu}vPmA!֊Nծ!p .n*k[}}3͠?MwV%@Lo]`~wMF+!+X`k[׹u]_nWoO Jgn{牃621sEu<]?z@5xZ2ZTj9OSv8&bgYUU|RX/?/޽{uu^_ݻ{W Jx׻z;beaOXMh]f~۲ӏ^f>[췵 >v/6Moلn}z^sqAvI!o,,][Sp* 7$.jc3ӐMӶ>E}I..xV\0䍰]qorDMk`K;VPvI +=ļOx=`2]_pdԹF^vw \lo拹(P#l-o{T|I1)rRMMYfpF7*^S7gYhPb1PYa{Ou넜5 ;,N/#(sճ+G>qѠUwnɥu ky̯zǾ(kS9;{+_͟wdzݏR޷/y GoܿuM`02\S/B>0'‡l~R?h~(¡ +dD 4TOњ0=Wc_7DHF!WBKpARF1TQ)KtK0M)TλqWgxArw@/x lR'OFHv}c)) K![S'}> Fx%/P;7@1X*G ag&-s(зΉic(њ(Du1hLy+(HD{] &Y Ekme>xQ%J)h݃ItOkUD6B~>k8޲")&RIHX=_o jI窢r 8Q993t-Te cG ?Ţ P4bz ͦUtO^>l7vX]®&?^m"Vɚ *ߙRr_o%nu"yX &w-.-*H*qUEf Ԧb[ŀ佧Ζ&] *k[Dw~ׯ23Zs.Pڕ/\1 baAүIMW.m۽e-{vY Z Ӣ8O;&ڷ.O4>_׻:_\_̻s:\jl l۪pFWrp6ƨ=[O)@z-w;v[۷wͦVZ6ͫ5[[o/?_;>Z.fYH.GGK 6(u^S. rQ 2cL906T YQ(I(7ZD0PIM39JX1# beIa޵ clu-u-z7-Lݨp:m>,WYU]^\,PTk$7&5./\]nŋGEnL 8^8]~zt(ڶivmE<Ϟ^r= 1 )Iwӂ/ }YUTft~n\ת o'zp4v·zgtqjCO/л|2kfr qi^€j+|๗ySw޽{Ǚ ۊ2*S,7-/#T7C^8N XC5X13FL<8I?raZ}z7dw0V Q +M%pg4LҒA`ة)dTph  q6Kp%QfRAhp7f4,Z&' ҸQs51IkRъL=`طp#CR%8zTچ)x*5`Cץ s2㌔r1!1o xYUP0x)A~?14!0G $>PZtQ +2 #0̇'Q 0ȊzCo(?t7$x*7.eC`И^0BK#  OKi93rv5:ܼwr*C>[h}U}ZИ DQ`[T0§AD$Z,PBEyR:I%$EL !@lͲLB@*H9F ZjOJoFT J\d֦Yl)<ӈZcUH_MZ6Ct>P &Y!Qj\,0L˥'I3F()$ҧJk!wb~T(3ZŞ<0vr+QF(1A73 Pȕ*PQZgeUgY6~+@mbdWvcmPj~۫nzw4i[nٜi!;ag3ʼow1ˍ.P69j }P#o~ίۮmKb݅xvϿ?lMnyw>]c[ʽ{|}c/ܣGOV۷NգU'W !3Yk}L\gw7?H̏^yq4{仿s|S㵝%z.2N/CrJ1}(h@ 2tʰd$dXWiSu1D觮LnZ,$qC4! BgoT7x:<2>LΕ ! q&fPDdHmP$ybj co!8HATˑNЧ>!ѲQiשK -6[EP~HaP)Z a$zrXP?`{(8:ܑB c_8`:H))p{rK9x&ƗG+i7Hsd !ngbwMn __7Ƽ Nk?Wxi$JvLU8T~~+oاЮy,I А}cDt\K :ҍb 1ZcuFg"2Yn F<փ4dUOSP-`d&B>;$ bDF"[gt2%&ʳ\@lUZ\ MM`KquXg'eFS%V%h O )需L %CaWHXȔ'*B ?֒gZ0fXd'mu>y$R- *Ze DZ ~iye,ZS(M93s̘ш&MI "X{tj4ەuzS_=^fWWY=bq5]*lHG ZRN+6οӫ]bޟ+?O&zu6=xemۺwd}yCt%TXvyQx\fkŁ|ժܹn͋ 9l9[]nqk|xzru=d2+>}ap@(.petf`w/VG6Ua_bմ.֏o\}"ۈ?K?/;ST[y\ΧʷvߖeV2Ne>.>uD(KC6'B N-'MƠ!/dIntLG&3G\Udd(vTA"<+e2 19aB(Hxv`t{!#0R'٦BLaÍv6-|wo{󼜖zNҀ>dA}&M;w| uh,S8:]~鵷5u*:^N>\cYVo{ @-Ir%%C Кy4qI$hSUIU*J|xPD|qXkUT|#ƒ|޶縞vf$abHET ?n-_9:5vӓ'77b¬p3_R#^yǿf#QOk_xk %3yS~ obyA}qz[n<!/\s\0>1Gȩ&i@ 5~`2HvfOSf&~LHrL:(aB/@2a$ZOsR8^9:B"f)- EnqrD45\Vܬ$(*M]WIP CF&hR:JJMc.mh^'fȤLJb2f̄(ׂ^IX iu(Mі#z̽dFy/xeIOh(SltCLŰ=9nrvYd}׵?izf3$5 _Kx=cI|LVBcъ*7OY&aΖ@ CiVW]a6E5٨89X0<(yZJ}ZUMU}]m ޓ8۬n}ƨU3yHS:xyAEj:5 r`$ ;IC]Q?H9pa> Y?*S"JbU}w/-UH֪E >Y 0?G_Q.O."1(¬w_x-Fp@ón5Daig;}#@;n/A5ro?݇!)ث˟5c*Tsov^Hŗ?n~X]O#^>{瓟8ՇxA3 eT7)cIH4PaI,Ig ٯ L!eZ %){,u7JFWJ*F)]M{Ki\ 9i7n5*8=H2iH `LEd&)Qjt7_ ^J&WJkNf ɫ>z7T2AJ0e]p*l7aSѝ>EHnSDk*l ʪ\Inq& *:Rgdhĺߵ R4Gk칫'E p%re*%|pbrtP&qTz-GT|X`MN{VuP t+Rnt؄L0̤HZ4W4~Ytj`{擓' ''+)rhe)bAALAe=e|'Bͻs%-UYP>6 4dV}(Siڐ+# DU1Yz`dq*0ɲ P S+$"U$ѭYД`;U\Y%=9?8%胊hr[5Hs,6)aƨ09^#B#( ܃+K3㦖2CTGHdt5jKd{f.~VЪBE玚E}|Zhፗ18YH~B$~ '[:8y\vzyz{|.kj^ vnvݿ|3xab/{yњO Z "<)AYZh=_7燳j ;9>>[ڋ]Dw?s{) QX#bV!F%[=HU"}zVYsqyy踶f(z-fsf2n/o6v9'޿_{%`~h a]SDIqykEK:vֵwŸ_qk p XFb>:h|c,Ո#b,(j=F4iauz T qHm|.:cZW?! a@"0P/}k%,(ppLs7+ pOCuΘ.n-_{뫀n3Ew7!/jkLbXfѺg O(!0.7DŽVpެO:׸jnlCdD%j()|^;~޿o39Z~{/l^r&eM;~{p@/c I1blBW;U(JƑAM!Q\VD4eMP*QC,PЦ@/.8aC1((E)i)@!Pk *Rlڞt5E-Rnb1B:̨/ȄN &*Wfjq gщr{L<^F0I"w'X,Dƕ'<[d>Z3( _)n{e0qiZa͈G,UydɌ@{I&SJ\ak؄S:eH0$]!A'PQ> ^'0(meWW;bjBi7 NvEUY٧tv+ p=QV& z)GYr3>,eܹq4VJL[,SB ʺ|b&:55՝ąO!Ne{ŀ rF"Ƽ7M@ mPِEDB죳6lb Op jdH!T 18碲$L9j4Ʀ5>v" 0nܸ}s!}ԅ@kBz/,&( !y|%2!5uCf+*TצYL*U(f}{⠒cz D*ͦd'4<8_iT%k NWlyozkb8FVtO7Uk˅]mk}|Q9Bx>n`>;={†p w`s!^ 2 ] 'vd&s砪=8S40t2Ç?r\]]{ߺjۯjWtjCwU$U?{=}@_3^xCŮcn>_t:|l/.ooÝϾubUѬ0g'd'%4L_H˸{ ^ KiZÖ pW<*&լE:4,OJ$]+6,xe^#x!/N%PD)=Lau$Y&*8+y9Б-EW:'RXU^9N)}<3"\M(hx1se{aEv8 &5Ӻ#0` -<6{h2On/pl8դ#+%!8vS.IR. ln0đ΢4GYd -3Eh`俦)l'y;C5TPfUbZ*g>-=x B\U0&x8dPD˳Mea!b\EGZ~z$WZWw|LraKޗ"ˁ6X7&_ Ea}.a6[KDU!m c!I+!" o"sQuh"ʏ3=׋Yva391zڋ`чH~oA]ߋbP&8ITՓf*Uc0wUVUQvƪj"ͦ2PP%E!Zk$Ytq#f4*_j"|iY ~9R;C)Iƚ"c=\׵DI~0oisa<87D>24YӲwP>MDaHQGKFEDT/'-XH@$M}Bμ֚1ٲ6q0HJwGj"19qVQ$D$0BB@;4a$F5P8MzO/nG$/7׎D.yr֦KU3`<9Z61YC֥egЯ8q]^bóٰ){]у q!;?ؾx2;vqXmUmbuTсj1OO!Mm 7^|5A]n6&'f;^nfYmyu꺨VG7opq`)iF ẇ_og@gvmݮ'd'p6"~:\ݐ~ӥ)'+0z1p :"1ّ5 7^@qXaVP` ]EkMS5$>3XYS AU9p],6Q$[]waê0*VEՀFP"]qqjzo|!jMs3 dY[!piY׍ A"Wv/VYc U|ǺAQaJK?Gɜo^%xD4~W^^Pk瞽9/l˫gfUW3;}k7n{{rp.>!ѻcL b7j&4s"flQ:VpT+}lc.v`/*.3x":Tem{7I/#Ex@DeqxT'ی"+' c *{8,*Va`,@>ЌTrt#\LA =fWg*#6$#,qr l!Zr1 i3Cx"{seV@(GD# 38% y} 0d,\V`,KMd27S/]<!瀥T@ܜGN)bMI}; eFnris:C>{t W~Y*zJƕѫd++u%?aYas|wJ.-42*-3.boJD|Nyghꀢ^B&[_)YtLF usSU:m1B 3J7, o2KeT:EQ3Đ>vUFMI~m$8QO_P9&ׇ@%seD5Bdvui%"*Ȁj`cHu!c n'DD*DCzںmV3_YQ}&0rX7uL.k ] gʓR}_΅-uXTa$GÐj, ř' ̚Tz|FuK'V3B!19Y+[L撾6eIUUU'{[hs}$WUCsU!-%Ƙ(B`D8S1bDĄaC krQEywLsDCP9T(;M?]` 1`"Urbkc9!;Z2ƙ4GK 3$]zZ.9s}Qp;.m r= ׶õvnVw`\`S חTujp61@^ Un؝>8ߞO/|>۷^^솷Vȧ0ʮBDQ$ƶnn͌[I^fgm} 3OvGJd"xqd6s[E/M:?ーFgu01+__o?\t:ҽ{6̫.464à~j~z4s-aI ,(qPYPKR1sjyT,Z#,1XmV`QQY4=KPuVx~z6t^r9><8$pAjtGhr V(zcq{PW]7 'j9xh`Zkp|޾6 H6c׏^-uتHpe AB&_vֵ_c$le3Bm7[K_o@w~0,>џh M⋥[/MT[v}C?Qe9O~;~0?_;-gNo-Z:AA^$M(J#RSr3FKci85.4~q_4DԊ¤d-FQB/$$KK1%O+` ÈjseTZj\RQN_3d2#Ʋme檊03~.%c`$d*weLZ[̈E |g G6'Low>;g*&UM[20,62 0_R hn02דih>Ky+GM{4rQZeZ#m((WO 7.3.{v* T2\)'EFz6Lv U)" V?שe%har m%Qszn^0<ՂuI- Wp/N*^Z"g}uw0dxBd }9aӉ$oRYgf y=lh DgH>TcR%&C,g5K(> wCoJd!U:˗59ƪtLh0En36p2fӸr\(|[@I0+A*s0d1y)!(sZ~|93$U7a[׮rIKd3 ,PDұhV fd5Sy(/C`fk90 SQ(F R ! N8{Ü]x )26We VU g+E rI{(NSts3R"Nsܿ|PFUs5#uIRUTsp"cZ@V&3}nYCr_ѤgzvֲhVP/R&NBD9%)$2N8D̑c`12bvΈ k'7,FwhCdbx7Z0w7h+H*,lQ\,ZYSUd}/32cCbM7VQta ^u٣or>xuqo%1<ロ_!xj3@dV}w|JEU= RK{gn|[?|fS[SO|z'TæqlhM0.b d w݆YLMi YQ| 6G~S%!;$d=j)(HZ ]!Va80a6لj`zO*bemMd,Wٶ(kenYF N=Ç.כ-!|΍MH!?sWcd|&I'ԟR;7#" [eC}p| ϼ9T2p-YEo?\ڪ9QZ钜@HXFY (~rPui‚y"HK侢R2eO:>haRQhqznʳ.&. e/VZO t TDtE&I[S0n_zä5-TF|1KOd%u;`& 1N( ^<|5UEb~dY@40>#rjB;Yb+20DX" (\U.E(&,YQQQC(~Ԓ!9h 2!s60hȎ9Щ  $acYNzZcL MQEb%Bd$p;Cq(ĔAI <ΐx?+Y"!$% WD7,àGgZ[Dv)ۀ4Xd*nju!D %Ed"zd~Q+8»6k5k#Ɉ6 jr`s !,]5oM;u Y%Κ,FESIP%حvs\na=v7^8|_ `f?Z_l=~qqCMs7Vk<M̚ɢsbK懭(<:Iqo_{γ_~wȆ.r&oW$׎u3U"ɐPR Hŧy5I#JHd^8K1XX tbRN<HsV8j ze=*Y;2%ϛm)Rwq+B?z4P>s%٠ 2%X\u?Op2CIAf1<_~(mr&ԩjN,3>ѫ"R._项`ndk:TV9mm_Y(^=q¸w:KKQJ`nt:eqF  W Իjtσ%4yr*P{&¦k8)42i>#Ă 9g0A 7R'RYTt\j_ϫLDz :Z.:ytJwǖ&4C+'rfQٳ+-a LnSKx`%]430p@5ୱs|!BrSM#!M#Bf*cRT*/KPVA&WkK,JR8*@7\ecTI+ $1 Ӕ7%%bbIՉLHsibII㓥@ӔE BCT`$>r{DƤ-h%TkXk fwovCn!ГŠ(s`T1('  Zb,3nIG!i)ݫ ZM@Jɀ$vT&L['Ij^.j86/G*f%sD> rv^$(Jh!'q9F <]V[pjFQZ,]4`CMkD" R d#Gg;R킷MQ vd CJ!taXg8+3Cj[$DCk(g7[=WYk+JCGc,'Bλz;ڿ{?:Waw>~zkj.7uD' +/[{/W*|ֵEnƦ/Doбn}6vG>|xyzHbV 9X۶j"OPT-m6a ,}4;!prBˠ,ɓ/1$Oe6`leC@ J0!gPa?G0E!xz 'γl> hݬvV!hA3+Qr]T>#N/.c j{Y,x5΍|3_zsF'^GG7og|p<{$)P%!2,LEYQ" Gf!1e&T1HܾTLFBFeP̣EQK~(L|2$D>|&#ggr*_REVTܝE\*AWOW14X`(wQcۢZ\ք)}i_U#pHfYxRL3?I(`6)0~^bĩ)˯zѨ(FgwʹΩ@EN,ۚxr S ZD{}()r!"ؖ?D:r3 S4Ē) P,19)ǷW%ZN"^s 'I\=Q8"D8WdcFq?RAnJI$Qɸ*X6L9N:A:)/Q~wc|4Ua35a wz$JoZa^YgȊdȄŐEQנdN1 ,ab"*U.I.fr p(1ĺT,2+!D Y!{NQijG07chȊ33˦׿A D{AfKD% "DvO,a*{gcXk "T̂d궒m Ԙ\v8J`KB,d:^E<MQF`!JdQL*eGC"IY$rT,/s Iȱyhg(ʧZ֬NqއX9Ň$Jx;fΊ$}dBdh1=.* )9$g)XRqdg4.hlն6ͣgv#%V}0t0^1bG[JIdskm>ښʶ;COm=كW?u h 4 @+~uـ_Ë3ٍǿ|x\;?^Ailx Mgj6,)C9pEFY9dK|poO@3Jr0M] }1Q1ݭ"1,fc5~Vo4d mk߹3>m7m[Հ$(+3)?vig~yw._=߻=$y kz/Ͻ;Qiɯ~n. O~Ͽ`ǃ C?4M I$r*+̑?Րp* H"˺%;UP i 8zOK@b6*K8F&Pbn'Adn dU] "b\n/Cȕ$l J]yr9uTd6mfS(K)Kjc4+(LD(f:=wb6_38ZDN13b:JJEIJ0?XlUH@+QD !r6&cL* 4s!R䘕$y(ʢcs:(TsWT45.ՕHqeZDri"s0_2Yoj[BBCvĠ,9[ lzFuc,n[;lGx__^oV߷;;EB>Aw(|G0 zMvWg"wFv;4捓Al] SfT_?Zܻc 0~"\7߻Bn ACVŭϿ92[,f^yhch[_\{۶Kj/w?3?E?{u`vQmmfw^u R;5C)i7 zi(",H58hd @{E" '5@ m"I(8b'TFKH$Ă#}3i' KMp7BICNJ89nN,BG *51'3i4h[qUBPƕ*21-WO @s$u2free7jpDū+ϮJA' \ K7E p+D0ejݴh>dxz*qbAJt@AI '&UeCʅNӄ2)B/*!߬nB,/*yYrFbӔz)fQ^ydurJu>TShp(ȔؙT<&苟Nc%{\Eak(fupoo) -& 9b~[`L pADȚ{SqJDH q/D߯6U#c&Ϧ(u!NH"C (@qH\bT6DUE+g"E"t,GV*׺sƚ "g~5'e1"QHMm[w}B|hq=Fr}ߓk"TȐ1X@19#k+Dyj H]W֘S( &pT9CY sքhdEd[Y$c!8g#Kd+V*HQ,15?pscM! UU(Z5UKMT8" vݲ]TFC $+!yd6'GrC D9X*UՎi` 4˵ZCU2EVg+"%UE)邉6z(G%:g&xM"sceUD%NWX!@0 d A9Dyԍ1VlEDRլXWgkR8A[@u݀.FB!. /_q:{|X/\_PܩѲ=53f^yD̼p>Pn}tJ/{믽 w=z+}Wpet0?_|xb=spS >ܳG7}ţGyΝc4oWcg<{.@fQrG> U3%@rtrq^8>|BI~YPB77d-y9vo{=v^s$#!XیVڬcx ҺޣSIzenۗyJ8;u}pp;Gwoֻ~/\;?,yS͗_Wm ;G7d> _{CiL%V r\9"NOI90<ԝepB!LEXW ~LyY ]Dƽ*$&RDk>HhD `PW01(cRTKwrVNǍ!Ŕc #!Iri [dʡKSN):8^*y)d>L˄ ʮF Je-,P$UpՂy)eӓ]k>S[(PHJo0y͂^h%9LG"qFqUEgHqTRS^v"6i\rr.:+ xSQ OOI[baNMY/=48Ҁ$nj~{5X13ED77!u𧥺p=*ӼF`,ӕ6nɤ]_dr.)W{.Oϡ0C8+^Eqle:H}]NۆY Be0 !ZIވ1U$E&LAIKhUgJt![b a-,!QDc9 uM&X5_7@hmY5 C6#:*0&89VU%U%!1DUJtUU12%EDD2} TX}4ڲJu·<{? b=&L k Wae+PdvP,7/Ɲ&"aʹ6Ɛ傏TtR1QK *Y%dYW(#0 g~HT V%8MqdQK3XӺΐ4@\[Hb wbCY,DIjy$cP[-Ut1<hy!4c ',~ !4!k |m]T!:'!,4I8Zd+#钝 ̮8,RBdjԪCm82qAG0bUu1xGFd55uZ{[5"%!!A I몊E*cAs>QG)SY`Yςڵ}L]5]94@@$RY x\.,kmujIa&֩<_?z89jM[-ͣ hk7jk~uW?/Z0!!8p练ڽ{_&b!痿3?=6=z =_w 4Mm/`a=WЌT?g~w҄oֽ׫ywQtD$_~Uc*s`(Wc"Y[?# :|?:a~wA翢A|qVY#?sf!c{ ^ćŢy÷>@hg/`ɗ_|GA rbly"NIYRFgdq$}b\^7-W@''W|Mi;b XQ dh`H3D#ciʮ$@kKG?RV~)@cxl1J&Sb^i y NNDILCwdʝj&92,ВJJ&I{'VjrR+pCSqS"˚LAyIИCwH2) u8*//殜!p4G'}q2É/0]1Q,rp(NvS~}Q2f0Ƿ Nv5YI:edh!#n7bY=$U5H>02&w<}*2SZc6'*gTi0d//)SJ5G:. T*Z-0}ht pU)aoMfӽy+BK)__kTgMs=U,9S3]J I@cT !UM\v}h]mEf|0 Kњt{+e"F\b)&V^Y>f1VT^1*U42*-c- )Aϒr$V4`mm !Xv?=H]8[!a~jfE'd PP )1Gzmil E ʢX>Qw;X,}($[T&E!VZ!yPRJ ) bcm~kcsTA- a$1BDMXy|0I&BcA =!{pPU sIr^J )0` uGJ@Iΐ3ȐU5, AwrMa^YfxN,\cdMbCu9F@hz< Bb[\1`Q!DJA#w&Z[51M)l!^Yv1YhX 5NES(^d\UCLzgy3(zٚ4 g YVmMIٙZaΩh: D@X:Pn| 51`lk9xyh :-:zA<=}/\n΍WJeݜڃ0jg #-=kMD0@fm=o6F?zt:=8=w]cIp`fz񹛯~;٬mo޺ lu]-jxXE hg;/}?g~0[}g01YNgżTl*9nFq9\ChXb.0NORD27O `ԯܽhђZ[];>#< [g}V,s>ӌ -W>TBlwO|腟0b5/vߵp}s.$Y['*7E^z/~%|ۿeinhVͺ&E#SnBX"م nk)}D7*ioSV AHD8Wt_݁<Y)WC²>HD9peL>SHhCxCmGXQFPDL6A5Mr5~@R`*&Sz>etw2,9ԐtAOCu* &6>m*vW S9~fiAqt~JZL(b ;@\L6L棣q,g(,wHMӈ +;ɜ+(0S҄9Jo'*%!S:s&ǹ~f>88L ߋ+?^myu:eͲv7W+M;Q4IJGfNݕGS.&.JX~/P+ >u\\y7quSASټҬ"NAR/!;Ng`*¥ÿi*|OCjz}QFER0d p֋nLeY|9'Qlk-41]0rruBʄjIʆȒUO{Uۦ (9jLrel>>4ƀ$b"8aʓ9v0ZXGr*?7F_ MrI~@hk?1}lTDIƒDuh5^ wgn<ӌ8č1IA-K 1& !xiUև)sLdce%!*b2gD$I!ɘ4{1AB (d1Q}Or䮊g&j+["ٷO ghꌅ(TeQ%nR_MB߷0U"FNc 1Fef*{=-.hӸG?oꦩ8"\.8n˻ ɘlC@1A{ŮQ"KdQt)RY( Gc]SլQb!ZDUAr 1[1r I,\Y wnclj@8){ C|-uHt,.@&l#0 26D*5r,W*]0 4*UYX4"qbnT:S+ޘU1b{0ooѳcQ:R[RrW\ΆݠgdT tB(,m扪~ˇϭ^gw?P͝QBBbVmخ Go\<8ߘWrg?(xw{q{F/n$K7޽+8?>:P͏]nܽ3/ݽ}]KEf`ˡ~]z|nIq7~9B>> ޿*Wu)YNdHg?w}m垿u~DNOړECK<183~ۇ3ꈌ_ׇ~Cȫo/.e^^f+/_}=sW@[gr/,wn}}[:5)~arR{e 2`OmR4:!*eybT'>DbL歔?Z?jT( ()#ljr?,ft٦4QDKɿcs{;)gfUNa꣢S 2BJޞUKSS S^..=#QʨOGCX1?J&q D:C:a tun"+15U?` ʳ\/h!u @P Kާˉ`j`kfu2GJE*hdtaX_85M:51Qk|U2JD"LK2BeYtTmw X`wJȞJH%m4/eywr1h>X=f>2 3{?sdڤ-X'8i"kLhѯ9jQI)WW0yCY= 尔\s|_[K!ɹu6DVt{fv~hh,>zt_{qN*O7;ޥA}\?:ym7n^x[_hqn}{A[US#lEh1$S,@cd;gcfjfқ^!vìffyp邰̮]{)̯9^gЇ_~#DjX?o{DywYo7oY,ɧ͖UX}[^|w\.Q{㮽c B)X;L ªWEq,p{2R3"^6e1I{%2#$9"Mm!P'(`J*X$}m1=J YFiƘ4 63Pĉ@*-^J٢9Ljxg6{LpNqʂS&oޕ+{a{u\R$N'ԟ_ XG~93eev }6]V0q,[/لGd[ƲEB3r:#^WAX6e&'ukfסش֓%Ȳ%:1} -s[@|w_/}kdRJCsMlHU}tr \#g`ypH8oMq@1y A r}xx d* hQEllʘ19='d"P%ӏ*"bЀ(_#c Q6 "DdT#DaqV֪* N0fxpg,O&c9u Yġ2!,ֶٛhku&**kY'`Vl:[@DC #u lDbvC@EnfV gH 6ZaۺnR| e{m]_J{q "8;8m1E(Qd Vua!0%./9 j 5Ռ%f;'ܚ C~Ș}~;;Uv9a5Y}茁zpPf M} u.9̂s86 p"]nu6wA۪b@f.7aX|pV5;;'}fƳtu9;__.߹f赊]\o~嫟żj_\[U`o޼Ѫ7h\nj;NKG]9ej`u?\Osr(P!~O~7{߹v px\n.⢢;7N7~7Ý7>3|ա_ U wkd|>N`SՆvuH Ѥ#ydQ(QJNF:7WYכɔ0b} w2>T^MՕN ͥ\!v}gz6Kzޭ/J`B ٬w!GJ `JFX&f beYUVU\.Z껿n8X.mcs,A>,+r,]UAbRSX+A DIV,H,1͓C@,&Of_RGn.p]3IO("(CJOL: qUHun:1ˬn%羆'*iuRQ"JLV׺:a\<36FLc@#*&Q6I K)FL HQfCUH ۘDp^&Q4S*e2G,"DJE[:VɌF)Uae @( j]`]2dKwr "|#[cE`]Vgjc+$GL\V+<:NX[ ]gIDaP1 C|~ʾ{V2}I`# Qy}Х18 ;$TYQm7ĀЏC^֔!rUUy )!bcO )"f6B@8faJa{@@ں6h6o&/&4K)twWư ڐa!= pxC [d䦚#7k`ѶY.kk]2#z[w}'kν3G>;:p9 1%[HnB_ܯ}k_!g~"gn?w;#?ʭϿ*s;j0h?~b/|43~|$Җ;׿ޙU{\ɍ;7 /TOμunդ\rRi"~0SДDQ EJbaոJ*0*4Lh@MTQf"ƆUvqxFspQ|<#rC)k%;"ۧNeZD֔, ƈ\~s4QaʡL'29<_Lhr| ^Ţf~I' sަ|'`DCK=GD1QM{J'^)[5ե1{0$iI^!e FF( {*.Lҫ &d8g%/A&*i@ hDU4kE"; \@XS\UR0ؙ&G:D4Anb38g Tgt4)Q8eINwZq Kμ`v]|Vi7gt*2Ui }t? Nߧ㕶:f<{p0/:@)i +RY ~W%5u0'c2+f~?7K U4Db`2箅5S|9xc,RLrq}w^uwEC:h>vǫ 4lfa5(ٜW1%!`H#3mЛ flW.==OcR9dfY4y۶GGr]sppP-r18Wi*W-lAJ!AY Qzei*`fV\SA&9RIJ1eZm8i5s 6& ¬,Bf0?5l95.rtjU0d ri X5bX q  Ajɦ?*DUY] y5HYa!C!c]Hq4#ȮhmY̜ 8)Gor0pM~ʀ/2gU!( r$\Pj&?C"R NKִֺʚ& oDԽqcb~mu@^C$ȨY=72Ėf!:Bc/0jYm\of1uBDA KF#(C/,G"'}shFȡl|Q4wKTqh{UTH4!DрsDۨQpԈVaEoAz_1d,ژԊ,}2n9QrRxRݮ4f[5ua6 gn^1Dc`ۺ]$羃x)t\ ̪כy}||rÛ˺-G3v6[׶M. eX<ߗ_98Bjn >|LT}ug][?V4o_zůHT˯/Q nͲvP۶w>?`YAK#wћ}@{}x}m:t?޺_'hmm߯]4u}Y|Ϊβݦ7uXN>%|vxtlvf۝w_|Ѥ>x%1X ҿO:]^H @S eL@k/k: xyO+M:#͋{PQ TKdfb00it\s.N&:RsgbWSZ s'-D柾RK@DjW%_7BL#Wv&LU)Ơ&NQ~T%dь9+@I_(2Bs~Wֿ@`Gs?DtI\(v}:rqv~YoS|Cfzf!䤓U֘R!E˩8"TEt(\ o9~@!Z'?}wZlIOHY\.`~xx0͎mY;[5E@p>J h88S E  VQ\T&4$ME Y4v5HA"LUM>rLDdO9(qU̐RU CjAL,#BGv{0jz·pVDqPeQ؀uMU*h55x眪J F51!'Xݘ(Icz6%99!itddA/^XU4UPU M(ON !F!!¢x_{=|w2C/ e]݃g_=%sɃn!y`#HVb8i»OʒGЀc֔"Mez(ϻecΟ"7' }eFPVR KB^(|H6R5 Nd  p HƂE{ɈoUs*~]Qr`y(<3Bg*LLYp; ⾂Q6)V" W¿ 5SyLyeճy%eTJ;Wy8v?ÔԘ ,E#a i(;yYj>Pyh˜W0JH/NY%*|ԼbaN҆ bľ@%p27߫ |oB YXL"Lh8fC]|1}!rxZ5)(JuZ;~[{`*GU8"Fct=X@6 FIDCXfyy?dƟw5h-k ۮNo6^z:?Ӌjn..N׫uufYmYr>`ŶI c S?{~+hhnvTYVtCXjMmU4ԡf"o_Bm*\,"7oΏ08cycnwsU;ճVY>̍fG|G+s6YzGIffռvT˅mÓۭWLJK%H$uP8Uޟ=Zmuu;AP׮۶fVam@]\7 JLȚдuhjV5x>ZkBܯ2aC.;rVD}VzjvU6чn- 8[,DyֶU Z]6Ml+ެ^BeUx0[,3DlyzC녌Bl+g?[4Yl~7<ֽ#V+;Uw[<:}_|}B/h^s׿^R7ȟ_De(,>XmkW=:uofN鹓:{MQ@CQ 81OlXfE2Uf3 v0h 1pJ"N~2<k G(#?s1pddfX\XTn5ĉl>XPD_a V|4dHHh+`OUaApcݹ!v 9s3g(i" Ð܁VBL`fedPìL1R-cB*#Z(e $SxB0 MpTK$8LeTa2^XtRS4gri+vP(H&I@2Ȥ?$;>} tLaicI?dä9KIB`$B=WrF}&}r/(.8:a=j! |g͘TO9ԥQ@G/WҲ-AdyqPX!p\HKfrC)sjm7t=n}ϷU孙%T%UISA5gj̓WS|#1##q>vE }wů|'1Vј#77%y:ҘDb.΋<xq_.ɚקGm[͌FGfJFFR hD5pou} 1pSVUB`!߸|ppqdx8f޶9_ok^\;fQ3WCS;WUP+E%Dʑ#ZRU.=/+_MUeryv^vUU"dR$mj.RXT\D&.a$Q$%JF"*>pvHԇEΒ(U i0)^ le*$UENNQ!0(pB{cmU6ol;2ՠރu@@-3nׯc0IEr2X{@ ˘f8TΙqCeGCAlJ`-uN02ݬ%)S01nF1+cN@mSݵ 0_>~b;55)\?L9|rض·5^ծQ؅vm5zo+ZԵEyAiڙuU3_,Y{͍]>D>m^q*bq~ ]//H^mNӴB5C 8410$C:Oۮzvbpٱ!"36Ơ !NY@[[Umͬv5Y][w0oc$b Ia ܴA(rs!g3bm*iIiH-[}hk ?:Bj0$wZzt$yD~t;c|<ٯ|^@'?=>CVW ?~~ʄk7=x137.ѣz+7W '[Z-4A &1I0bi>Y,$:(d@'Uh yT$J) Q4[r墢qrU!S>"L1d9+`z4x-hH8sX RGݬdI^Ƒ{$L :DYS2xpT ,qƚ&f%OC> tw~+DJ2\LRthҺ{&#Oe)zԽeKкUNRᳯ:$x &pj BS<'0'cKOlx_69~(;7YjD4N%0&DF,i_'7wXه=iDaJ#,aFUizPZ XLdY=' N1{e5/X W}4X."&V&r@ qD_'7Wđ!TkItYat[cLKf^-j@Go+'Pa:ON3h0Cx42t5?HV؟ǾwƸy! 5%A'E&ºϪ >GǙ"J8A\VTOk͑1l!fA6nWqwnVĹ8[+}@ꆎ|8Oֹx_ /x ]_^t 0X$ sǬmc:5lQÃemqvpT[{tpi+7͖].LU5oܸN3`s"a|#ETj*%* jɈ*R&_a)M3| OK8k\.hƞ#C̹2B)aE~]~CƑCcM *$*cgMPcm,RJCø ={(!!˾1r>(8zi$*Ùʳ sU!Ĩ*~P"80 bQ!g ƶ%z/b]tƐtsR"5@2Vv]dhs~ж1~lEm⬮Hi7lrй(HvFżgX#ggnvkwч~k灄L7MC0X]˰~Ġ/f)M*MXE_ S=@ QRq MlL^̃yX FTؤ5S~Ff$?ByG|Md)T*oBk|CƬ -v-hңº?8+:x"D}0 S!: j^ipVTFFDFng ys /3t#U ,:*rlRT ,0Чc|0Gۈ%&@4_[#0?)Jqx\UF</;dP )t@%5dFA NDڧ2PtZ*WLRƬ̈b:_dKZ TE!T5_4 k&aGB.C\R\r7L {>?LN2  >(}<;|sY:V~ӮwYMQ傞,8VFOy{>Y 2Ћ9-&c$tA 1 U""X-Q'ݔEdH ׫A/-TLnV 4p,rSH ⤠K$xS)ί!g`?৞*AxTf',%dDk@0aNa"i\KR&·/V~_??ZN&+i,La6xȱPUB" a]nc1ˍU7E~}qb/ks|8oQ'KADQd I'Ϣ3DQ UTQа뻋p}( IAPW5~EVUupxP8ld>Z,}y3?/f$1t'nXGhqmARaUFCH1`"L |`Ӛ9O쌚,MAjeJ:EW (GRӀ1zXRAы 哌J12 5sZ[9W0mpP*rud 0kd Tdw!FW1Fe~@2\5h"$vCmC@pSQ66yހɲH zaO\Vmgg"kl` d oa.tFHMGg۶Oeu26ppfDI.;BrX0&_ش3=>XڔxAͲg7ǹ]w7jĦiNxZwVJwV Clw xsqh6dm,i*eiZ#~e݇ /\1TWDT+ o||ed}7dҐ`ewn~5겭?jH?g}|}/x6~ǻ\mEnSa~}7~M7> )5VH#QȘ7X*EDBRE(4P =:TU5r}.ɃbLwpi&G =&2K&5}kL( tRkD&H3٘P%qϔwB$-8&he<01'Y̘,ƠjS”F0Rd$pT$#3'śŅG}.[$E YSMBh-,HcN?CDs`ZiOgr"Up}l,8_ʾH[r;jJP;Ku]'ews BVg_jj+i .pH9~zkAf"[F攇h&_SqJF1yE@Hc1 '!9 ݎy~?}W %4TjU5xxp|45ƙU)Ka#!0p!`<ޑ@7aPCTnjp5dlU)f HD'1x^\v#*J$\ߟ-6V{J:%L5/+K}A(Y럀Ϟai-yUc% 14d]ckt^mny֑90Tm//׾Z?tJ]3 YDYeuev<:z亵BѰ,sVX8^~>_ֆ mcLc/y  'w|kamU]Yڪ=v+ww}uy<֍m\]vrپtóU:Y^w߀v|΁ ħT׵n_21qupt㝫?߹<YMe|e056w %ږtTCqd!PD>K8 q*-' 23t2<"^cF8JyÄ#e6JDrEF"e2=%a+"*+l_1:dI}r)/.ĘIIwДmr4/ \mh:xӈ|X,DZXPKhbZ# ՙߦp١ Y&&PUXWiʡ5];y5U ^ivF̔3QĤu6b@Uh]f,4P dmIj]q/P`A̓C4yÚX%0B^ s?Ba~Xq֧<[T YGo:r" UE B2S* (WQN1|; [z̟g4"sOW>hn l2[S*oEtbbG"wrT‰S-&@W?ow_x!hֈ(@4峕 fX0szvćՓ6k|>n7y6{חu lL[3ܺubs|w DĞ1wx|9 4觩I^?^n8>Y.gfnã5rQ5s>Q!jCˀUDEy^eD|gנfe#YJYhВqDYW[I[EͰHHN;s4v9>a ]Rl!AE%FgZzM[AViF ,_r8N`ݻowcSG$n:B2vָVrn>Ֆ(.qPYֻQ xա F8h v*v+ѷ%)4glf*PhMdELŦj U6 XK޹YY1֖rdM=cιcvz#hB0idz!a}Yރ6[XSWu1[0Z{4?XTm5{].kW,Z8;u]T>{Y(I` 1-w`o֝vwjY])mfv:EYbho& DvQ?N>4 ,/>gyvPks/:_:_-<>W W*g^췝ËKv̗ŧ^K6G1-sP=B1[o)2F1@ $ f(Gbq^/,PQqHOyFn^噉gFvB R6`JF$ꤵgU(O0SbocdtDAS3X< ?SٚNe c+L5ѡ2-!Nf,'ShhyK(ꈨf̶M,N%X<2ӽ/D&#S(v{QT?gb ):E?Y{%SQdV@&b'̺oL1cӁ x%e!Wud&S'JS7)T4n:"**e(Zت|UO{eETFZ3E"4-V\ YDN?`=F<@ EbIK=)sއ}*(KaӉ8-h]aڽ\-RrK>tͻ^di?!FʼSVUh~~#/ʒ<)(1ך$ (,PC ɣ{ބFج^d͗Ϳo_|| i :N7<*>7)]eRhtʝ,?1~?ntbpP@<0E4" Ƥ^Qc@1+fP./z_?CLYzNtɠK%ˎJJ6|ݳʁH^}e,vڒɚ5=$lj \yؖ;gyk? wx`u}uz= |ߝvŋӳa}XiF>C`4!TBU4v#qŅ?A39QFHjkڹubUutlfm.uⰪzVk_C#WhdB(Ʃhx*0SGm A21c!R(i "!]HK `t_% /qzB pADjI>ʳ=!qξ_s~kws_Cx|'^-Dε|3&v?g|?pxqDr6 % zq.%HF% _*<)iccd>"K~Y9YI{1>=TཌN1] Q+jiU&>kL)~:@B {2dQ„xG%%@gE^)y3)/QW@(ՃP4"K%X%LGI1g2GX.8 TG4 O]GDW$eZ^(]>;iIcJרI_)W0'γx!Ӵo iITȘ@?Q V:)LYPtDĪt(i5h at,]cE)D~fFԔs^ d*]#Pi>)R\ppvI•#5|rJJ>vԨG͇_/NPWppTYZ}gWptϫtI ͱ!(5K%Ge@!$2%UL qkڇ_enC=cގ/LTC eR%Dn ԉFEJ_S??W_?|;ɴSl"3̦eyƙEp:Đ=NMGXS3DaِV?Gx5CԚIdGDW.c'!_7(<1߳,z%*aLve)XR!ׁ7oz0u XlHPJIV֐GzQ$nSy׫胵twGγ`&.tm5sI5oTIEd,:l5UAT#SQy,8'ֻvF>JQyzԭΏU7 H$⇎mw.FXc)Ҹ:*c0 3!k26x !Z2@&> hlg[旵aЮ"+kГY#U"56bmZWEU5϶谍!pOzC40kZrDq?Tw~7PMTxp^va9;7RzXXhGM;k+cᬩkg>o[<h{oq]õwUw|'=eK%c̎c08d &L2Ʉg$ffY,p@wWޟTnc}uuuik:p;Z{>~m@]skz=gwhq{_Ӹ,X\y/VI7^YޓnPh=Z2i=R4F$.O` Г`iMW G⮯B t8t_f3I *|ErfYDFՄLx<DJ€(D$"(ڵSYȗLؤ9RI#m|BxWSs|"`"H2i[GCYx L Ф d^azA+:yl<QIdwEC&(AT"]/K〢C,]Dfs4S `#b9 E4} & NYL'2+D1o& ʼn 6NRK K>7tSk3 ,Q \|$˓kdK0k[OLGfCfH٤,(=w||%`>D)kK/~xIB,pyf;圩Yެ=V?Wy֋櫖-`H֨SЏh0\+L,\9]#$k_+!"R7׷|} Sk0L DE#!j PY( DHb&&z~m?j_>;>=W)B %b\"1FELah "&THY*C3A[μ7}0 'rjF'1IGB yJ$ _Nab(x>.O}J+m$މxVzO,JZkOBNbTJA=_:br1xO"Onl:'/HA &Xfo]<:+czg6moYnlo3xn]K%`7^a9?f/П-[;+xi*^#0'_-;8jf3d-[ρX0 pybFp8GsEu(Μ{5\?Z(~QiE@8&8b2|+ ި1im0T$ntPjR,&EBT!=? A!$ >ΦAvԁzsklzsOMMv{:U 1Vui Ba7:yO{APz}D2Z5tCfאR-l]׳ +=ZvMӖZO({ō286 DD+φuʹ9k[]U oFƠԣ.1V*aŦRƀ1ڦiʀCelӖPe B]"vVy?kUYL'uU.S˲(ضUf(-qi(=5D@5XHg4\ٷ/L'UoΩ>f=]iGj6pya]o'+ç.ogܨ;gI'NRp{$m_>7<}fk .?rc9q-#V9~ĻGޱ-!f8Zۦ?z ++fđJ\t[( y2gӄ0=̈bR}Z $->fSAqC삍T.S1$33)E%r u#7OমFxa!>HB.qp (I}([IJ笣tkXT"@ yܩP@&|h7/Mr)t݊Bܠ.9Gɏwȼr_͒?F潠Nn9ZJ)ʒ!?'A D-%QJ3B,AD4qnuye|ߖ"N\u! d@ ;M3q|q3fu_R>TdBԙ漆z'LfBǥ.`n觠T_us/TZNgdAf徜E $PzmMvcl~QHMh6s邙}Ds':?x"Z+n㐈41b#EA57OjO`|hWX0mDҒ?4꜓wv˲FGD$'STB22lmo^uۧ>{~z&w/I~ﻃR,Gp8C|re6ɹw#gQؐj wAܽj4*APwf}3_|ٓo* Cn@n v"Q*P]pU;0ێw$q@k;;䇷lny*wwш9"ޘu>_!i{:Jx 68ĂFWGqn_?/{W\0ύZHQalW:`mg}뛝-뭛 t6SMg?>{wuC ^y]UZL{eVfHFG-"o4GG.f\^l'*뷧f<)Ffκs&1_^ZsKssG4zds{jqiTf07p~ѱFTtxK$rHc1SV5@ITF`qgFwkomk .?rn҇g{{7\4s'=oO)o#'հ7p^olj4uUL6띝ÏGcYS?ޥOdqԈr) R Q$ciԔ<6$qл㉩"PN:V\ (-žD0̆%V( $p\1'L4W)_Ö0h $ubTڗyaYxWѿ*vEedaADQ^q>J20rC JѺ3Sxh)&8얰⥎Y3 arBb\9k(k4!]-~wz$lLײZ*K.xi=7ɰT4${o<' Ӌ} 91(X |7lQ;BJ]ȩ :v57 N2-hS+&8=mM "KJw.g×ՕUEaLOT)ҬlXjPPE)7"} d'b @Q`q~X$Ga+oPmlӶm3'd.6NLwfM]cǓ)j]=b5 ann0N'qnѠ"W!dO_V=(}DjKs7Ϝoijg xx檖7ƕ9PƺAUxtjs[U*̠"p )Ҩ띝Źa S{ZOjY0Е֍m S7?77 Dem3?;442Y+E/B4f6mF}40_-v2ox޷S ].߿\m{=O=8N*8vm ` 6[{WW{\f<6]͍Tګmjyehe/YxxBQ>07y/Q8uGp%Y +,΁*v2K6 4^D"I) lIQP *8Fy]r9+:y)Jp)o*| DGj>ʿ2pJZ_X)N @F5@BM(.eu}] JW2¯SrvqiNPKwX@9>N)zRZ!GdHoגGN/yrX%C9HDxIX7! SM E aea?#|žE d"G%0X8rʽf't*yQ` ol,|?c7|St>WRd e#@`"l.Y|$8 =(C1?/}/ZZZpP)Fk\OԤ|tLjX¤l1dklrݟ+74M2өFC[V(T@ewE CLu̳zk6o/xVuYиm)t ԆID^5%gP$00L#ܜ>wvZq95:鈇/R^"@iZZ$%bE+>dzmZ:EZ^xOJ31)TQD DeU)q~w_*y^II%)=Vl"Sh~э@|5A+LUjL2+1p[3du&ii8*\oP={677&;E9$UB۶QU/,գʺayqˎ(480=0*V,34v6M6gnS)qL i۾Dr_O +mưAٱzvʦԺoWmcWWՓ)٣骘Mg fSh0Რu ȥ1t_z0Yr\{ퟜ63?<Ӗ\k| \]~h cvPV3u3V <ڇOozhP6[q&ժayT G,Y5oX\Ctg|mp <" SzTw: KL&sƺt}ꄗ$3,̪U(Ky"‡Z,@;mf8/)&`3KR+j?̹; 3EG @b JD Z.W~{kSY~oŽi[ {3%Na;JP@N|5?4j|>U`"s?گ}-_ťx2l'$D+7. b6%>mjQ1 h)l֎_~ Ǟ=V۶ x>䱲2H]ubb#<؋Ś9{oǿ}_ x;iZ[Zَ3=(6Z;缏~ "jI3'?Ԟ~͏~h&㦫51@@٭̲Y(Vh>8>[ng7?)7?Ym; Wlv SZ︕k.@iu` ز4g?ҰfD-\L<YؔWԨ7C`"FOk/;_r6[ک'fpޚNf榩k -Qu@RCKms)Bg?~ts9yj'ipxaLgt~ý3u}a{6lOZ7} [(+Uo4^Z\եި0箻g7-̎mH&D9PF#g5~Uި_6xWu_X^qpr@;R>8yZ&j.\ȕv6NjSC]h,K Z {q/f٬qeJ@`?7P SpP8Js1\s+o{qi4huz}gH/y^58rK+}BV+U\}pB۴}KU'\oUq ^C`oZl̚B1hb~\ LM@u &5.n u2̮*D%]-Ҧ",tTs%+LMl|H!3ʨ;K-j>:#5LitJ@ԼDNc4 vZGsB@l$p<;D\L[/eQr t*wɱlSA.\fSXKlK^E55[D!tS:a8TA$cNrb%RVd38 | /|S(VCJD9O'mۘ4T ߲th&‟WenCX'#ǿK:@N'u[g_˳D"R'KŞqWN O)((RJJtu=zխ)sMyY!3o&6gW~v!,tgںw_gs#[V=d-a =S ӽV( Oĩ@Ma\[o=[nxsȇTsP{i a Tl +c)<ڞ/}͕W]4cÂH[80FŤiU8OM#Zsp@Q."y~='?~dyK5J_S|.Wi8JJL^<ǯQ~k{wu O (9ɶ-DJQ%h¡᫐ʄBsxhZ/@ A#˳E~w~۷)4My?# aZkv+l AڔH)LWQPƹy>{n}+?Ȣ6ٺlksrgcmָ Sj}m4i*ڹj _*ػٷwu-}nX\xZ.B#B_W)@qHJL3CWQ9 b|0Sn1H,{=0Ӊg6S[fN;Oolj˗_}O WV^)GGG S;+O89x˛uKt\8mevdr~TEQέAT2`*KS kTәf_ zTQT6i=/ԔxgXn+*D_O%(ff.G76--mcǎey,.E $WPJi^vuׇU f'm1%D2R(m@#?,E6Hˁ=6Nݺf?^sW|=YsmCDgГK^"Α%*$n|fAi1j"T(h\jͦSE_?oc7ߠ(y' Hcɒ똤_ 52'w@ݲO>g~~~3yur+SZP<5d2F1]ڒߨ'7Oҟw\/0%u,P&8EƵ={@{ zQ>"wv{}?zbCMa0d(`eQj- w5Z28k|MO@ 8\2 (z' *6}pKa@lGI&b(-هO?ŏ};W&T:U6aKn pҎ!"G!DFiEgO~‰C/.J,[ˢ*L:{/ luS[43ߴ9g*bJY[*K.zof9̻hL}]Ψ0W+jf kZP'7eL=wfk TRܕI s^#ip=:: "@ics}w}-c_e OS\j&j$>EMe}?sPk(=oz}K)")٨a64"WU(+4FAQxÝ4/M泟 4Rj EPE*MʍeD=1֑# asVK 1? /zW(o1rր,% )9WtALyu$9ݑ@#יo>=v5W_Zxlgh 'TyaQUa+/T+a4&~pkwΜOWn<9Lީ7+$2䜷;XwCm=}+@ bC"e8kÿzZ*6RHvu}mfl=8p!B= ڔAPY޳X>v=l0,ʥ=meQ^0G e0`p5#W2޻Bd啗J=SjִT=xW殺m=?pȑzx{>tdy ܻ{u"llvpI;+xXV~XO}=SxpkjXW_|4(b6s_\}x3M3Ey}yPa5{ݟV=Aiq@1ES,--82"$ sEI#ҁ$eH(9DOe1\FRm)(Cu Y#RMr*d)i*I@Hk5Ó ^24;h Ҫ&\.Y jɽPF&bgO]*2Ƞ s&Th8PDɧoI G@!"17Qq*b0Bqtv Ahǩ32\SB2Jƌ)NloxPx6 LV#Wݸ8H )ӛ 35 h15U^QFRcJE s&~Ym <%vTAUIԩs |-6DؠS9U"[fS~W%'ILie1X<]0owLkD;H(L;qՔ@v声{^+K/$\Bg4gϽ'VZ=*f~iiP 憦4eZͦ5R˟Co2b(ϱe@DY"(B=y*7K5R`y.Wo}򐵎|d,Plf?d^J$%+XѬO&Oy_(\N? dߧ4n F>~,=vUuO?][LvW^y]\O\M(ʹ']cԤ=]9phaBcR%IuYȳKkKy®EI&xbqDz]nXA*!RN2(O@=Ipeb4PhOb86g¬zLPTXt( v(BӴї;ݥd1ŸR%6 XD.9GC' b* ACXT&?Q4ٹ+SBJv\JBUf$"to Ç S$)j9z;>7a})$!;}$ hLΞw2OyJf6&.Pʈ1.uM/Ș>sH.NV"1̙,*X82t|HG (R sz S= 3/ >DK8`9$axyr'5/}?GpHy4riXmGk-<^QЁ8*ݵBd%h][(z3|/9¶B sÏ)ۆ^" u 㬫!O=("(i{炃/,ҳ굃5P0S X4" &$Je/ΆM)QGW86k;xZa4&+&n(>HfS ٵ+@R = 2{:nx㳟ڽpn1$Q:2HzT8;IZ#Ve6h QFԌ9+4D虚~Ϯ=to°ky0I4B, ÖiF"vއwR{{wΪmmaoR}STιI-BmԈ n)ev _mse[fT K_l=Ox򓑝uǠp$%@D,x;"x 6V_P25 D줽ORz"G{lm0Μgm[%&a&?K~/R/ ;is_:FmㅆeՂӡmyVscXӦNm**ҞuzEu&{Sg/?#GekUӶx{j4^yfM*.=g[)Ww-sp5pr}ٍV[0͕^;rիslҔh-O'tcDĊ?ů]J4TX2pHuߗJ4J(NȎ ٙݧJ P"N~1NΊdHa>"-wnxD:N|=9r>CciԎA+M*^/*:u}ko>|z6l7h+$ռ3qh@3Lii{_#m3%Hyrjջ\JE(#0#$r "26:ozt/֭YCX6AbcC$ cHx0pa Um)1TaXLgPcyt^ۮI+B!˜i݄3 Ah~hMIM|9Dcm+p[gtQ[O~zi#.w R׭0ҕC"WJQ`UAtZNyvjTUw~3^`e^(]Ymz4Lòr:W;;cx7{?5۞l{xԛ;m?n,spnXʾ^\ݳ2-,,,/Ѩ{NeqzcJƐ8'E&ͯ3~#.?&Kn*طrϚ훻sP~sc9x|5iT`8\X})Eytu)O8ч6j0cdzsETm6}LTTiJCRTgGk]ˤ/,|Qnޮ,'/_[mrSMJZGw*Ns9ٵ1 I(0lg8l'K6:Ǜ=(VCf?b_Pgŀ)11䲘5D 艃} ˰.0E %+E:lg}bP&fLbY0O8 &Eծddß"P. nΣlIbs3".y2S93% ߗ06"BѬ2)<熼k+LhsdP]rT Si0%Z9. [ٵMJ}.[`B"9"uwᵋ0fZnj;v/"9Af^긣ny8bL&`R {&qs{03i?9fHt OtT2c|I$Ձv+ \j.ib#ˏ}7}+/ 4T%y4v2lΚΝki'vɃyG Tͬ V^0A3GFZݳ\ 檲_* +nI\ȸ y'ZrO-{3ia`,y끑? /}殿]wNٯؑCq3y\%X D<%yJ2).8M)!B 9?<7MHMkoB}{V~yuﭮE:/Ѓ:n}"83QǏ7ʌ@9q Y{87>g\{'+Sh}/c}{eG{ w]=*X_@Q7- !Re,N"~!o93Ar{FY!IJ%;F50S^Z+͘*whyLՉ-}o.FX2OI"YEY?rt]UY4']8q'LOAF#(u)%"7Q)rRieFtprMi^AZJJ\Ri\4(4R3d. o \TL"=To]vЫOʡѨz$nF᪘CQˇa* XJ&mْjl2٨ ;n_Os3o1}SM'utTApeneue8۷аgQ9rYZW%)0\*}Tt Z@qB6b.L+%ΓG"}R%sY dTR 6kQFΟ=o}ͫR^Gs㔎q\(ގ0Ȋ#J*! F.g [ӳ {hp69ujNv2Zob@%d#K*1΅K&Vos`S CFD 'h .U^5kFmHI!1;sg$yG^ipcQaBmZu}3*N0FsBa&-L"1d'TV(0l+Td;H;SV@rR6'И%Z3T 8gbඓ`h.;bޠg\B9Q moc Н8#tpqPS֥3?8 wwBqL^><kMIQi3joR^YA㎈ȇ1 D ‚/N[u[ۖ&PZ&Cnn%@V ʈwJLSD@ya{o7O82f6wZkO ZV ZB.!AQb ntbkyKT+J p&ӔZ( S0ǝ6 fImv>&d:@ls^Fb0I#nZB*DwP z4vC]wK`:^N)T 'ru`Z2vO1\ISrrqQ?4PIgw4k*^_%FŜ['O fEb)Fw.Bn٦U O(iŌ 0c H%N0ljKVc5D|s.zͺCIۡ5d4:ܪ8z4`H%AI^ I{'K$e}-d޶3`^3jFilwiV'c3qk1D'}D PĽ%Ħfl劜Omw8eCyJF7r wj +e'(Hۖ#CzOo5]&Z p%dNt-gers=M/Iy0RXGfv/$S״,);фr!D daiS\Gޱْcě43cwN239A"ցٔ(~Ӥ"g0.PQLD>J9(,؛e'#?ӇmMHKE DLvUhd\pG+\`ޝZr:C+(އO櫾5/YݳPiG.!/> :z0=-Tz>S;n\3nvkBf tky{[ӝg|x}a|޽.Ao[Ǿp~~aP˽~?7 F}~oMѠF {4QnR ?GX=lHb91) d ǘw^|G5|uBVa;ӭSξO_4U"DԊ 8JC&QhA5=jB oo}ӟ>[OhiPnh&b& ,>XU.LÚL0E W`?~O+}+&o~PxMaX 8꥜R}g޹MX:Я4n%9\z}tqn}{wַ/ꦭst|54IqHYz@òngZ mm ʇ"@jCoSXQ᠜yAkEOi(DYy %0-tY9hav[7ۚݴ܌[_t+  ;K, @ Ra7РbJm[rg_xT Z햚_޳ef[[) ۥ`rL~w|/xƙƧ?+^i=LjBKL^?Kܽ ~С763h7\}_8LEn}K;i!{ˣ=v9tY_ANӹ pލKVc~'ξ"7^F1QvpG\{ Q~VA$*O$‰]tK#J&iӘYy @Dxr'ΉDE T)0QLES2ѧ:F`pĽf|sʅ;U HK7<3W#/)`O$װDgF1 g&Y+V:wLn IiW6(Tpx>8O(`Ȼxss:Kgou?#?sW͗nP 3K#R~]<8߶%@2>|pXڪ_¯={="d7i|IHpepʝƷPX9O#?AdK*m\_;|Ӟmxt6ޘ=ɪ.lPn϶;[j3J?VzԯKUQ/. hq+L\/9\ %@Vc*Pd|¤a<$%#9CamDmvf?f~5ˋ}@jw&@ #QRRk}dE*>*8{NM<^ W 1+p嶣(ʘ QKM)l&؇;$1|^xŏ)pj>cE! bXOvIA3!)u.AA|O~M6 ur@&N~ fPu˴>D"ŀ񏾟==B1Q; p$/چ!=+4Uaz6q5޾^ʯߙM=4Nc6؃E^&g ڢ腉(Ç_im;p{:m4|{d<^_lsgfў{i_X׊LyEVȾv\9Ԥz 8S6+E f)6T%xWp uOX0R7w*s >}T(WG^`Oْ# Y}r_I}ORj1TBf) R=ZFFq*+`8Hp$Ř@ӲH^Hb 9$P4^eqgTI8Fs'Ɓr@Ik,%d3<;1rHY_% dfr̃F@ eJ62AΕ^Ѯ8г) 0R3 J/ȔYVyp>€X"`6c**N91[>:a`¨%M @''*--s9kU9;Vp.o> EOnaP/QOF&̬Fc c" *(_hb aXwyn\k!P+٤+GĜwe?9u@.6ESS֥f RK +? &1y[>ŇH:*ion<:Z(ݬ}$s8bf7D!K`O"^8~?o[5y@:/gZk؝M 虓Wr vմ~?^?~/[G쳷ul*BPZXgO|lMn6ޘ7^߸ j:;\ܼ̅r+ߺpPʔhLeqg\(VU[?Z0`nȦ^UU eP-`4OFС w{YYѺs:$!)y뉽U JWv9 fL"J#pkIUOr tCw+!V)N"tl{h"eQbiF :ﭳ O̢se$\'ضN9tA11dz;RF8fB#ĺ}xWmx: (ͺ0ZrAYFʵ6{&JUs=51ca.??bdwϒ''聢vXO) HVRqbWQѠ8k[7| 1c|F {ȗ L C9 0klUƙ vΏgug,-q;DQkR ti =a'l4sqniZQWƍck{UT8Ц7_=sa.Z7V`:.jA:`,R袧{?dI#JɲҚA+,vZ[[c |YJ0٪0=X{A&R'^OQ:2Kr)K!"LCɘ|C]Nڻ0c)DaBqOd 2kg1'v}""aŠasB4\ՠШ}I(]r)\d G1n}WQ3,MacG3D%=tݔkH: VTe΄V$ *gH&B9 Q!B> ayY:' l !pD pD !PH73>y4q)S:2a:]3EC+9|_ \PYlKƨ=x7g"~'R!*v w2,6FߨHaLK]sN~L|K&GĈ3\yih54I8*9Sp둶 /;Tahʹg},@38 | /κh L=m`?iWz6q|y\kk 5 $9xit\eq=bͯ|to|2r 9]( Uι_RVr7؋l@,,x2  G=%C@kld(LYTJ$ݑTXIܸ7~WVo?|žYGgdj%Fǖ / w$AzSh \V 9ζٓV{϶?l]zϼ5WS l4+'K8Бv)JNģJžhVmP}vΧ˯:6ئQ9r9^9'=Q`j!W֎AyZ#$p9J},xc>[G=7b01A]jdk00 d4HU`L?)?xdu~hRյJd%095*I];@k ^anZ7mFs q4 ꗈ F^ZPkm-[ffm0uR<":ҿxfݸvՠM4bJ:ǰeUڹƔ}zZxjLţ:Q?ٞs`w=*i<ึ~Jp*~ D[{~m+h={.}mޅ=}SC{6k{fP)?qrVsű<ϔ+lm#كWY\bAFbI#dlAʰ*IP3e@*pILYr~ԣݝA(rVҺuS YD|0O( ފl1,IvMK\xņS}K#V.(O!|S!u(XI'4Ϟ)W~ u8dsP_ADb? ˆjjC$SYɩA&o:%~D WczXDV?EE4A˦bv3gJŠlZ!3{jL1twU~"2];@W N5LMNP~Ƨo䄑_7k6tȼ7Ej)g09BgMD#N%lrɔvN?rA4_{%\2 IN q1x *M1l[ڛ/o+TR>3&/ܰDQd*|('̎W?ï7\yѦmt&y^tȘPR%lIt>0[c W~g̏ 2Z bIS -+4hS 5\=ԾE/=?, s(ĝmrnt:Nw|kxͅ?t#Y[}ʓ+a6kf8к7pQ/ =K˃\9-,. F{WM0zG{}Kf.Fu> Dr^q~qtwe#(iZK׶)z=S`͸Ӭ'zr6G?wgd멘a)~PQ'" ePrgpO(3wG4ɚy#2z\N$DBg"D]F^*[^rggj:3Ց*@FLev@hT(Uc L̩yn9CUUa[*5"JSK&ܒ$u0N[/=VmpnѲE% SSf7-.V]\M X4 n5x[{KeiMݒ.FwVEvB˭eta~=+Vaiep׊l][ 5}sd>ElQ ~T[ZAMXi"[Vzƒ[_Ň7×|ݍ#xAOϭ,x;{U{G~'7vf6Uo4`#ɇtQjKh,'7ês/jpx#x OYZX8,f=h"XHN_ 7rˑƐ"95h]c3Lދb#h/L1mnnmRw˯l=0'? )&HbcD%;:̜4"@SXG&ڟۺG?x^0"' lh圍 LD2?'3[nU;g=ZKE^E?I4(T=0h-SNO%!uf1Y.x9'^u-W|۶ͤ\L{Lv9ۉ٘[fz\v )#zj8,#47?7T~{ĉ?~5wťjXB3P>* ZPNA\(xyH'&EX)x$V&_;yз/~]5xӺWVaCOS^N*tiP6QPhbS+&twn'}vj &>I"?,;eW|GAE/c A~Z`[?~Ͼ=Q& ^Jv Qn` Y4 '3cI0͋g:xŤ\̅.A7(uV}3kR@*LRWPBS;_/GET&JW@`e A$ƴ @Y6vTre|'V&OZۃ{1WmLBSUng2ٴ+EPuj13BQTٶISjk}[ VSǤt]׽۶Wqhm:+Bk]մuSj\O|UQ j_JcLYUJLP~ +J҅!m}M/Fw{̷㝯|ƓĽ`=U.-Μު[Gn_llxB}`#󽵵h[ϮIolo/-Uz5B}õGdS l Xjb@9kKH!fĹw[pGSB! R*b9eH^?$E_pMQ+! 24,d 2=_F!jQ]G~*r4=yCV1t (uM}u$&@+IkJҀ+1*6aY<)(g!)BϔįPs}o66B`ӝ;UL_Mt e/٬h)hrsPls᠓ Z@H҇HRR#;2ٖծl牝's""$8ur4TR/&A*D%vL\Y Y G;ci0!ּN9=?[gh9ww]ޟ9Pew?iGy6OVH/B TAΩ'%=#YSTU^~O tZQfU"P=.}`'έ^/w>{ӿ}';S)p<V!&2HBAX:]nV¿yk=K+̭͏SsAo[ cd#5-P3Mbˊ9_)`Jiq粛ƧQJvZ_ɟ'>mVػ8J5țȘ'Wv `MY3`:s`"#Z>Oxgη3;t|jԶmB*FH$HѢ`z=|ٗ?e_+A&]ES,KK˜ruV3iN鬭&;͵oolßnFDBxpq4e5VWsK_\5G28E_1+]*t!'CW}˿tL.*BDDɒw;/Eu6.W8%At)\jR}t?}pqn&2\R6Nj ,H|f$t쀴:{@BGN晀pϞ<~K/ &)6Qղ&,JiMktFYߺO::W(t3XSb5Nԅvr<7FjW'Njk:|Q@5'g['T Cuɪ=1;XhPq Yvunq=`BP|O;lҠ)] 6id9MoIAI ,{E6dnqQH(bAڶ9~qf=+4lm[E_uEU*qW)JRNkPMRY#2j4 "=`a-]wxNKg)*3iٷ/@-FkTys0׆)K)%12+́)/c19 f҅$.QgS81x-{0Kx NA$-)1BU!^y8l80tjR]̱p])jb7l/(`TzIzT] GUEXwC :LIŤrEӊM $(}DXo cIRL((j{d<:0Ff3N!]I? L[.NFymaeKՎœ5+`*t(d쑄Q(q9i?s7Tvux!s `]]z:ӱu1R~4]2!1$&y*N?f̚CMnwqmtF8=W4S:Y]DNVU&$^xL/Xx<1{_>o~-t&MC@LE`:{@1gmL D hhD2xVsйi왳-~៸7JmH>sO+QvWz>AJz0¹8O7~w^qQێEȗʗZspRQ~-10Q]CTF 67T'Z_9Wiq>@DkSxb;n,$?5Z tZoۿj|weO`/D= &MPȕB{4FÆ9:s>\ub؇~/~vYb=Pˮ -S;L&MGtbkYŇ'n'jV|S˲T/b4 V/^wЁ}{./.Ιj{)F WI> !1*_,#^ۂ(L+o|O|gsm nZGoښжE{:V-ʢ`1ǠfarW.J[j&c1Z "<]><7y'Z{W>O/|ۯUF=VtV|W?ukO=N̖Wn</|柼z5{{ͅ=]{{ ]Ӵjui?_L`<39zfEyNUr!p')\Igorґ-b7C6@!cZodc'5(2˔8;!lrϔp)Y7CI0Zޓ`Dm  :e,lXf><[5/Bd%E|-:S|eZnX*Vs0iQ@IrꇜR̢̮Ob6GG[J1_&w=;dMXkӈ gS'C[6&d)}"NY_+(Fg9ݾLL '%8SFR>,1e(C4P;Mb"֐ZZER70r.}92~2!fz +BB:wyß/Ł K!n}Untr!GLYu8=9LNC7$ASkL] Eg,ꬴˏS:z|.ng^q_z~~'-)f@"C X䀎= )cE"g.7{~-ϻq84 U EY(M̦(ۋ$)FXCS&# JD蓵bo|ٶ_jA3(5k"<0e霓3T#PpT0lۢÓ}M963qbt#+IɃFD r4Z{9,g. [ I}oxa+0ka/BYEp+.]c_3#IV_j}jܙMI;[n~b QE@x+3Fyb`۱&p*bVapC۠ӺޜN.N6ӷe{gwj:Tv66wU\TG]<Fs_^X쏆G=rYrni h&Rڛ]ܫ$a.콴v޳%&Y۶رu}YAg}><}d|A &hIVNĭLQ8zT[RFUS3ksO֗9vTQA`];ޏSc !c#BY ցN&ʪ"OL,_W},{ `$ -jzG4uaB+Wzx2VPHs=[kNQ8j**zPKB0a6~i*L4+ V\e|YZ^Jճ.TlYiVJ4 *T[[Akۺ,)D4h7Ԟ8KQQ^7f15N"r<(P?if#}S|[ϝIOw|SVn㸮 5{MGFW_v^gX {3'?SkWwvmڃ\{{OmRLFSMAJieVp- <>(}`P>"BnNd%`DMNA9pJ h )ɫDY82Dӈ1NnБH9  V3K0G}Q`w'vVb Pv>U@9--('Ӄ愀ea'dv" x GRi ,'SXH Eޚvb؀Ӫd dI0SC&2Od*rԂ8J"ͳ3v6'PȦ9qQGLTtD'bX;Ȫ25#:2 l~z.51ۨx.I3-s;@>~]peSLAjBgZYdHV(1U,uwuP23T.^kxcziٹks{뭿~G~}by_z9K\K2F C t1=&;M!mÏ3ln|^WvmZ۶M=8Ӵ)e/u ֲ!㐠G=(Nַ \xM|}[V 7p0XP6H Q9|+d5q fu( vzeqUGOߨ`MpU{oYUG="8.ű.Zz}s< F~g<;!c Q܂6[u\#&( pַ쪧=pFK^8E("@zPj>/s. sw]]]uc[ TDh̞p fɔ;'ܨ$6o &AhG*fE$`e=Yz$scCL #.K-4B cv /&5pL9c.좙M +-udRWmj]l7"ue.(H6F]Oh2 A/Ginj:L34{tWbxwf$`9?v;o f7Ikß\S+˙r{EE2 OCrV *FTВr<.SERNQn%)U4' C])fgS.p(h*wZ. ٦ 2D&4d=@ &Ӊ'<|K齺LegluIOˈW>3)$1_?YvTY{{3#2;삯(Lquàefi.85 gdhW /&NKлOcxy~}?7}oxVۺ.`,? F#j@0B00E9@9~/?_o ,P18"Lkm"[9AYFSX;OZh>+ ߼jck]D.NH'4@:%^AY.h=aGUM_S/s۶&NH$$@tyIgȝnS<~Ɵگ=/|TNjM5eRXơrw@D>;\/^g?v]n8w,&y09*KRѠ[N< !(j?x_nyƳo&bX1$ F^$+jdqS6) ='n68j6w-ϺB EDmP U‰^9PhT~C"f yWC!G٤mg;M1YoLCMg4\cԸ)U=U`Ta8\V{.K+eYV9<+ sK )m \X-tncrLe{mm=)Guv6mk[r+䯼jƍ%tޘfg2Vlx:ۘ.˪ "8uڵvCZkLϱs)joʢRsdig"NRm;cD[*B( h4mY ,ZVx+m[ᰱN6ҵa58oCR-ӺY'_~+&- D 3f5Fb\,*bms|w//7zl+㓺ULZ}۶.P><?;N[_#Gw>^iuͱ>{qqaS+%5X-h:x#'M+P.̦,T@dVit[!@h݈t^ ̠P~&%Bbn]CJN#]_F8Ű(yg?ш)_rR{YK>0279$Y>ʍ.kK~.t|Qوѐy?T)HҼU^pΏdPT y~ӧ<2^zwᇟ]M!"G`>R++p L1%V1lܙ30{x__|5y7}I UO,}@ $р ("°xE;M\~^{=ʊ# NyrAI㝝6:px4Ԟ\h9+H%e֡[wW=ʦ=`v'_( A|/+&j}uVU;kZ۪vƱfX`Yll{,KS)R_h웦ۓ + +Aۛ憖Thܸirڨqxnz}LPFx24ALa1@c ZQkdv`i^+ƅ+x?ٻxh0wiMI+she4\57w_{\pޭz7\}3(Y|eKR[aE);)ґKD%q6"fN/s@H^dɘ{OQ=UrMpHTy70r[>fGlGt9Q0*8b0k!90ܭh5(iȊҤM:_*/yhHNqj3h"_F)g1b؁N9%I#ӭ0IYFY(ʍ.GK'.08.3pB:E$i/ d ZlHVY„ItW*,@q{1q) 0H璬lD&.4G`9Y-GNWÒr ž+A ^Zd +]gK3;⁴dhtȓEIy̒ӻsF9)*c>g~KXlmN4cdJKM{qєƙj->mJbFd v&ӆZʏ^ƛr;NQ(DDD]f%E$PEes4ϲrߒC05O#?~cl7Au)o5xNPd)?:YDt-wA \ۭt]Ͷ/g~eGsq㋟M7?mepօzXgw, 6.*S0A$=S}(i[ǻa˜8I9o.?u78t]aVOTN$)7(̪Ѫ`O( 1re,nUW=k/ +}1Y, zOW:<*=#m㚙"Lx>h֛fʹf[;փUW_C?d<7+p4-~[XZ GȰgY-,:湹yLzùUA)O DZ;K޵9{ɺi=3/Vfsm]llo &ELNF^3iDځkx7sTOh؜BOԶd˞6J)G,6.|+s49{n>Vkֵzc=;){5藇y igU|5SlnN;}ОϞXۺg#] 'O[~jjSg:e9lEH`)OE5*\ɂt JFx!V9id!g$9?F/M4R)"Lc9[ t9?4yL)xL&FdPr^(〉!9l_6YyrDGg˖B y]A"s5JXsxB!OOEٙK^h~\ᢗ![G"R qs hnaadt@GL  P/]3Ȅo䇓G0#8s ;%!m̈]e9a*ܥL߽@scW:+9N-BzJsEז(,3.<.ەU,+Xy2$9sOT;E!H 7 j4&p,Ή=&Fyq=ܘo^yw~Ӟ}I =WUOk(H+x%  ܮ'>}W*.kujvք)h]Ыm DQN 1B)*n?ya~+\3DIk}L( jنhLnjhPcfA+VvPywX~3u#s z B9\kw'f{㤾x2٪g[zNǨjY^^rq@sù=+jbX^]9|p z>$ZX\TF/-.({h!kP2j;:76.O?vu%uGjgS[[[kmf2Y]{n<\pzek+GIEAm' ^Aq0C1>'xso~雯:v}6cX tݷgMv+ 8zx珟um ڣo'A=tYނ˯w `\{>G`߱מX({EK(4Vfa=TSw%w A+:'}HFHRV`5bЩL1щ?eiQqdMD0.B2)B,DA;]KЗHe8%GVGYDրˈèJ4 IҤy6WjD.Q(80 %9=MW>27ӽ+Ɣ @yk!, Ti19;WQ $K7h}q7.17:?JSnɤeW $3";s41Cž }ÞdxJ)`j&+\v''7vϲzKWDvCStb%\uT٬/Me=~阙>2mzw-L"UF¨DR]Cg/Mu\րw|!\=zYa%l' 9MښLӘ+UIlÚy/Pq Κf=B;(H:؉lC%hFڴX"4ѫR@@-Kp%tf  l)hQs*;6LIi9MQ[D Gd ZLu{巿ʯ|yTh χL*bH1|s^Z]p3;]oO3C;ۛ-9"LCZֆ9m;*S|@0 \iicupg7՗ NS*RW㝭uѽ>(hZRvc5=pdIQSO=[޴oO[BF hT{(N$ C*00Ea@cҸ)2j~oQ^ErWHC<,4V Pxz"(LAd8{\qÓɁZsdVe;r8Nl*2"QH—ȶK^5 }2KS PDS5HAR;uH{Timl`f6,5w:ٚxa׷s3mf |Qie+ IUC` K.ӕF 뮻fNDt5A(. ѠKTspkQ!q5yőPȱu6t{}_W4w|OGi?_3NFy3 `P~Y٣==wÆaieZ^ZF˜~GaN"@Q^%;&޷AD[46I0zjq0{,COzGڝy7;=`P8xPZ_y>%TzȒx~PW⽟3e{F-Ӊ <)OOz,6[>cw]AJM`®x "6F+ͨH *@0Hr"HG  !hgוU&D7ɑaϘVYω7H .P|($B^%My͊nDJ ,]3EJ2FAby 5DF vy9x*b2¨AE |hd!Zl,SD}vEPGM6ðEy )],uLa`83eL*RnZRQ(H!K#Â2y]Y`ĀCKĶ ߡ&~SNqVHcуdZ}HX\c]\Rږ2,<"J&yYpyqfzq??FqcӷZ-+]v_ Zf]h瓞'E ˋ)k/A,LuS٥#z=d|԰1Լ(Unsa| /BfNawgCF!T>$.JF-,@<'g.W?~[}w ^Բ4N9`"EUA!K#& usyM r̔d݉T]+=IL\`^8z#6/JȈ6gΟwc73WG6< ͪfEIѦ(9Ƣؠ,a ;]k&mO|mz7~;t_[>Z23pEQe)W|"1vۚUӧ>w}d ~P98a,{mGP#j$E~4?`0pymoϽ_/rYB;(Fi$y5m-s$ElFF;IsC&Feh j_+W}7v ̋"0ľIo(جШT_o>g>/;іr*W(rRF1C˪tA8^HhGc/sa~W/z+=n{ك0UAq܎ *N}ь`nC (&s?w5Eb ۭ6_)j(qUMTPw^.,:M9Y3z1+rapȇZ wMNvP,%2KG>1F~: $?tQbL mϽ/+ 1VE9M:)ixtPpn xhM,5{rT!8GU֤izZWecdР&T.d̜1{W&@]"h00ʑ=8ʗh rJkR@_rJ$ <߀jAgEx;oKOW>Z7MgOֳVoXrfʹ(Ux {V-sV4JQssshn8* /TeW{,4߷cGx$5q08նPj҅lsߔW]~;)jspaag:8XPGއO6 K'OVQks|rNxʒ&|K^R7\%3ŗaD>Sl"ilG?}Ǘn<)!)@R*(2S Ţ9ƭ N4ꖒٲFS :)Qvԏ4+5~%l"#AR3NIRD9◺H]H1I|JH@pF2E2v.b@Ѱ K]BM6:e<3T+̃FA;$S62`NQ+wSDy,}SVLުD2܇^PL"7M.\OFPe !|;!ylXL~*yLv:1cOXbwɫ371RhHy d^wf(b^\2ʪl &#d_ń*6]MTLV |VEc¨5ϞA'e_,V95],褐dScѬE}ur77+_U_fâАlVTz" 8@l N^hKg/Ӄ_gO\}[V2 2O6$ze!=隤::qmЋzsރZk &KttZ`877)$gQ Y-ӕB;km 6>gsё̀кKW:g [ozf(qν+TUj;΁-TK>N&BM=f84pRhJͬ͂?}q'?yڝi J{,zqu!4#RHi+ِ1cHV, rv?P#]}-G#2A"e~iZo@l0Ƶ4rqx{ܞam<w8iɳfs[.Lf/J˪iǠ-T9UG\0^ W\~}o ,?pxfYL\y5壆>GnZ^>zrn]{3ܲ F%cʰTQ:UdJ7+1DzY*HDB 1N[=%~gKvƐ+O-d&g#S?W#Ͱ022Yo"͍䙙gjE@M6i#1c-)J56'I`$"V,waĘH`gEhhPSوF; (I]Iaa#@y>ʝ TsB§ 9g_H]"aG0`"<F@Qer>RriRg r Xf&2mg"qFl ]K,a(5q@<տ$ DF:.t>GfcJ%! 3]V&ce7WG(JUigdGR."34YV Hoc{Z1kE)|VUOu|h#ifCAN81XYw^¯o=G9S*A4wV|Ym[$%hhX3s?߽}ϿᛞqD>]ܑ %!$ܵ,Rǁ2{*o?/)OiT,LSVLNuSYHAPsDBQ$a,'Oo~/}_|p3Uw0aINNm)=LDd4rR|)Z“|`6tzbco+/W xdc\5 gjEJ,la(j@IXM+ϢpI7tWmM__̍E0qTeaf\9uU/*̒Sr0c{'D<Էy?;{=l۩s+5k\k-ʵ.4h uA T,:2)b.U `"o i@֋%vΕEI3HĉCdL&F3YbU`񭃲d MǶijI!7 3m;Uj:,ëKd= ;sANhtYc56=Smb~yn0Ě4R -`e)sdz ;*`%dz7F {\P].{E?d1?VG"yUh}ꩋ;;팕*@_vxyxֶDC=r',ӞCoY+pi]~xc:c{ C[U8=t`Q.襹LLKS+pI=_ɤK`3yb*<{q=̉!piyw ;0Gy4;@\IHDaȑhI{~Z,Xxn" pd D Tx2geĦ〻ZJ%;a.)] b1ER5OjVniΔCLK8:Qܙ HZ'.FJvqv-PIRJ±`¸*:+}T Ř{b󈓵b4G/Н0Gyū1&),kY sK;:)yWjRX|"fOYJ쨇Y +ׇ@jե+CkB' r+>%:R=<'OeٳY?ĵCƄd*QGd{W"ː&ލ4@bArT*֒~,J0t{-6EY0ǁ1JQO?׼_ >rty=V$RL񓌂7*;kSmQhhO2h@̢;LS^Xþy[S7}gW%pBՈ&)HЎ1F`@u$>rCW;ɬ}w_}WS_,{{ydԢRBJj"Ȟ#:ʆk@ kX]ԯ|k'5w@0Vk6Pd1Uc{?s@Ѭ;[o䧿mClC -, ^cM6hm0łrXh4tq`scc³Xbbѭ?%/[8g{<[vBLo6&EYh:ڐX&|1b664aL6/~]o{~㳞@18\޸py~ǮJg@RJ _quMJ9mN~:80k`iXTZv .7?죂i64:޸UX wSmz4_ϼh8ܻzͩCӛcW|Oft2UjaS WJLznZgKXr$. H ^2v\ 99'B丘_|>|\Dm `Hqc:.HlP2BQĎyGctiqN PpE΍2MSk>G'Ϻ:0[n6EtQM})@!JS/3 YPȨ+Td%YhcT\11!χd^Ss.8яsRɮ&pC |%^.Y83ĕ=*+iL>Jq⥲?iase >GGCs&SpUéKY4KAj]<䈢_aD/;8OUa9D6e;*s.qmruMuOh=ӔrF'|tu᷌t@rȔW;3yIW #MVRJAk_7O$B|AG`S»uQZm晼107ًW]o%@(; -RaWg/fj5?pם{^/~WzU¨PSӮӝE>)YHgFNv`̶kEVCמ}s_/_X);MND`ٵaXЦVc^ң.1D%+os/vftb˵πf6zҘ3ӺJ.E5[ FYYs~ZJhrMYWZ+5h(W0$د @~zd ImD5'J4֢"،tK͎jrD t܃#@nW,u@N CPD&y 0/+^)|'#omSӕuE~mb)5AvBTP2J"ՠ!v Ғ?DLrAFut*, ercety7-4; nK$yCV|"\giXޤNZʒQ$%%%A$Z=^) zfeŲxv2XAIȝd"ւ,b)ݐǘʵCD¨dfK1wr'SW2 y^ꎓt9ed| #:UmW(=>Wu1AzI@%J4ZÔNB1i,~K{Jcx>bOAZnʊpJV=) ;DI P ~t'{k6)+\r* ($M;IQB:6e!W:kYirGǦZ>7d<˟{py6̂ۈ;K3yd^fkaν~`$ȧ)2,nm;FŁ`b4鈦0>D,e.¨s5*F.{S[[y[5?LRV/ϟ `t&A`'L 4;:)G|z}W[lk/f=릿|J#'4\ ^S!^_J|`ټ{Oxsw֎(M~"4ZSYY(\69BmۀkDO\jZ J3tpY5oۿ=49b !c<;`>{Eϗ8j%J)UjC4hdZGmu~e,{z2z~m0OeyãQ>r#Ygξk:oAb]l#84vgFΓN´5BペرCAZCOd0xΜ]S#@07몹=jS {/&jc(AZ )6Sh}ΟYS Qg'u{j}7-E/6`4x,4C,gic((Ifn>wϭ~s~z{}c/ՕQI]׮c6D”iz_ٖ 63#{xk/l^ R[yvЪ*mbZ74uA= DhMW鉕ky0pLJ=N!W_ CP@o%#L  ͊k_wiu{3k^YEh2l蘽u'Rn6:uvHt%* ѧntsE/z)Qo峟y K}G*Ojd>Ѹ oDpN*>|߅ ݁ѓo<59sEytqn-0ĉɱ҉]?DL!{u1anȗ!=ɯ:n ʂS!2 తO!aEkO]imT\Ru/ix8?b Y'=ySWZ7ႀ/C.:0P-x~~B}ym\C ,sh(3BkM8ʤH:IV0qS?o{ґY=)tὕ'W*"ȈS:=GuG&֮>~[Ļ6 eY4|([-slARrt0ɓ1PäݻofxϾ=l,Y&a4#OQ I.yDi6hp[n-4XovPA4}xM.T).(\=(&x"ɐWϽ^w2*!Ĝ^GA^$+HI#2Z+`k/~Cå=mCT Pr*Sb(L1X$lo˾PҭkL K5֮L}Q}{o3.PP`BtΦJkEk]J*S^P?.TO)JN < Ho/=`T;. jm'BSM#\.9VH}dqmyT~l۱/=xs xD%pZ&;۬=ڰ-ObcI\ s* `{"zhA1 ~oօAAFy%Qi2N-E7' ShQz4JG' !Xر++KY9 Tdgʆ!}}0jPLY5ޕ Şn6_؜Yݢʏ}zs_6o(r4f!W|Ïavquʣ?t)[HqotMZU_w͟CF'\~ޜ6 \p R]\>wzQ9 $`蘗dgQ%듎O{g${,dʢܗh@}S P%uPט.D s'EnA3)rUK#EjYd_<d"0KB6OI@8s $%"m&@|#'5e.~BJQQƸaĹt(P̂< } 6qB%F&Ϥxrb@H'NF-{N,TGXW3(ϴrFK 6Nduq9(qJZBP|8 Ȥ&=+u i9KERb9ލ 9`D@9 M"`>jK[eLL1e6"OVJp)eW+/Utnd738OO}xŐ/haY[GߚK;J%žZ@'!iTR:?8 $|hV~Qk[!FSXG msgg}gҟ/'Tm?vsobj:O,8s:Qg*ڶ$`D7(RI;%b.‡\ϝ3_:ɓozӟ[A˘@T_~3Du:ἘD0Tv=_C&rJ++S=|*]5UC$:Y Пpkg?kڎZ)8%#^Q4 -]#HŢ_O͖LPG"d. mkeQEa {{V+xɞj^cɢ$1jbD0ajAsLÍp8s$֊HR7+H">|?U۩addYўم.) @{czpjPΡA(C ,dG0R@}>Ok3*"=2UU6{XD(Pj) mNägLV|k5( ^lkR1ٜ͟S~`O_`K4Et'j  `P\ v)G،'O^qom˞z@kBr:umݬikm[,_9At3 J5w}+8v>|eaih&0"EueGN<GN|6G4=|sS,-_~)΀z7?{\jҁw}N@d^:Խi=rW[$!bk)i)®gfiL&,$m BF\(cJ̝]+ ʴ WTЊ9']"M|U;2o.2Ga!T?BajXt"uD]odv8M6d٠b>f7Iyr9 aG%"#J8L& rhe@!|P";Q;b>[:2Eq-Y &N31\ֲR+A T$v*EhKV)\)'2\D(H(aOIdO=t՝87d4=gsdhb!YZ])R—Iib~}70;$z!AJi~j@7rYo=)L πuֈe%gTݞEF`&C9@/ZԮ9N`C73eQ@~XRg?ˋ r5 K>)JEPZdXB-O?_9owg>*u=ّ$g$M.c @h&dz(`S6: y* #Muz?O~rTŕCD 4c-RBFCPd'Ĵ9!~59|ٞpE@ED>Cyb 5}L&GJY(6566f̧Y##t@͹>ɣ2{Eq'q 6m5eR^ 1:(=8wTŃ㚦 mu" 0$Y XVIhʻr' .xhak("XuDrK8GX#2m@ 4t<Ĺ`L eS24z>_3+<9=NB< e9$o7s&stM"@vX)Ro 3ə1,ɾ "}(l d^">?8 L\lW @eYVEOlS4=Co~>f:bluC['ʶMl>Ą Tc$ٴꄅb9ޜ/ok^}WF޵>JuTR$;:\ɺV&Hy%S nX~wSx-$f*wyJ낔"G@W@t j.Z]y[IU?+>bITh/`d+N<*)E9]v:o "r؞|>7}Oѫ|#QݘXHyZ26ȉ ε&H:'r)aQt)ؚO|%앤&i$xC6zMG*,(M=9/eo>t~#_Naj JT^k@e-a/ S7aKqXPap'[Aqf'uN8aG\.5GBV#"k@$hB2!2P*m _Ts^&SyhzfRɱ޹93l|ӯs5͹jXD!h$Xto{;>{;sWiH<'weyjmYg>ѽ4}zG,Lp+lD,LbK- n? CƔXPlB $HafoO 4 CH8 9!}tʶw^/ x88Gb/R&2m纘K'L39"ٳ)1`\2=% yWу2zUPBdp)3 <ĆaDv2Q4 (X3I*UZ_F NKJ6De40SDdCd5IS8t"1d{UR㰼"դ\O1(4TBɣcL2e@P.Q, L;%b-$3fYtM/Ȯ!ACs" `^d ×21Qf]"$aQIMIRܥ| `,TPlFKGTLVrDwi%k;2OcVH>2>k?2΅-R";ĢV EQ>taP ,(PMٓY?ݷۿ+^ҥj6f|hb͊-WmxR8<"e"c2vb /=m&M1k_v_: h|4RKdZȤ Y)Ł:CoJ-X/U[{jgU_EZ[I|)/ĵADN%,]ςR8pJfBH Qe@`O:w=vP!6Q&Enì!Ѯ rkpQd?]Nq+4R){s Db*$~YUE?M &5rCL"KVJ8#YQ)m4*ηFcP Fʼnpp׀>"%:\NIn&[g>y;g[)-1 VOf.KBeo6套`&^f#EaPEd|w| WMC,c&")K&cI?4B*@Ø@ Z_*fV#]x/_ٳ{@eu{B(JpGe|Bg[zvΦ-|AjZJW7fXp繭'N?E7T5٦G^ah'{q4 22@ȅ1ZVGS!zA/ٵ_@x ;}S Jc 4:\.5hZ]m_:>^(e ,C:)e&O}~^CiYvc"&⩍Nܠ7WEQ6HGJU( O_ƛӻp0`tWZ:?~F]3O=|εMoԻn?7n߹/{_;7z2Ye {sQ\AwD<Վ4 AOhx̉-{7>Kͬ.P{{^)Nܽ2֘ev.,<ڵa'kgUsQitYXCD6*^6w, җ0c9tH#ѐwK>yzXd@ ʷ癝F}|<|ox"#Vw @I F [O+ *Oi@@Aȩ@zņֱqmN;uKw]s3v* O.1&R )ęIH[&iDqMvP"x.=2*~3#\c͜ڒP]@2ƍ[/7c,&UQxSuUȤ62Ņg}^qUF *o=;JF^xuG> jX"Vgwf),)f/͞=7 j4a'>wXڳU3tZYf,tYi0ݟ +]p0B+=bZAqRF=*uYTϞXꕦ7^eA/?9m[pi8W=FgӖ 1{cnmZY䖆3ϼjmm'0,xW]t`a+}0tYH'-i q)!.y]FC-*72 *NAqXuP8ğ$l#̖dx`6 Pz 9"xց16 yHG%ڋV1x`HUUĹKǥӬ6%V:ʒz`Uhl݇]atR g̘-Cn*dS@-wNX 2&9kD/]җrݱf(Hd%<rȴe'4s&洚"뉎B_ё2EK&ea[%%ANdrV?*H^xcyq΅xtB4PEU1ֆUq/arUXXo߽+k?l*>R o0@1kaG|27Sr˓ϯo9z}7]UZ#\VR݈&a>| cҦP#`@4ޫgRW-VBBRhIDʼnRP@A(V '/k;xtn%@GgDuS{ O]4ȝ*v+`4z۷}Wu^†' "ƒSa,# A'P")+)=)8wwO5_;\Ʊg?hh=Ů*GN=f%`w!h; K;Oqw~eNDL&<)EQ.T?Y',1Q&^j n\e/|>*Ni+%/8: ?esm- uI$jƟA)Nܰ:uk+yn|4)\c_gWz]ܭzV F mmiӢFS`~FzUh#wSՕ1pZO=A׆CM@ފʲl [\wO/iTށ lm +`e;4ZmR׭WlMS/s}ܙ =<'Ν:s?f6!Ҙ)|Qh`*CtBXTjXJ24V29,Yt uu0;۞,WPG?ytı}`ҧm鴱ٿwOO9Nr \f8hm"EM"%o # D~tcP &@Y_ܺ/~}}k)Ͼ'4IkJ.W>w>c VCڔAŋhNOl~x͕׽/,WY,sIbrE(`Th7o(& g(b^ߙ}TܗT!6x2m˜+`ނ4":"irmhT.jlR@Bȼmg?={PH ?D  >kZT) dp yMj90|a큻iwComk*`3Q$ط?q7y`{'֝f~qo׮]\vsw^+SjU-/U77Prߢ6Q+$)9a.' DdI@6RyNJ%c8 hqS$jB #l.5N%L|Ne"bJDE4a4|bJ1ڠ'g,!#›9H-*<P<#Iەe^+5skTɻr* ̄ )PISEP *4]FAf8a $^W* %iWJ[Q,; P/rTH!%%O!x f -Uod-3BcgN_ ͼ6$1Px-!#KDWϬ!$`Bj($EP$J!F'H \vbɂB(k㛮tfOq A+މ" -eϢ؁D(&p4v4R2760/z_{C{s ״MvL~2(u^\ \}]Ek"ߜ_˷>E~yc'l]JIQ<6 N*hQ3h@* DtH/ŃOo߻)׽T$ i$&f@Yg Xϔ)STJ26.n|^w_[YhzP #)'dO2FjW{eM^z`_4+Nر魘TgE@*d4BE*Dh)SUIO _#eDM GK`(iݳE0%u8z' iB4˼D⨴ ţ;62yIh(G Ɨn !0ţ09(4.4u乢?:}߿GWwg=nzR@kr0Z?*د,+Zʜfh9 q:ĂZyhk6m}T'w-Bz RŨ m܍ptvW~^"U^V.)JsH5_J(ڴ& mWwSK>GL@v&;ĉP/1 Ev>uf, ,׮/e)( Ry.*,PeNY+~4ZFhaJ&1FO[G$z/Dv}m@y'NJ'x!{-9aR۶f^ R "ʲ)5P{rzԳ;kg|W}3A ܉wəx209lcYgoԏo|oT1eTL+oKS4̂SsJg77 3 ZEdBhrYP!R- Fb#P`!yig k"sGgV}s#}_;\YW#sD%T7OWр ("Ly:&;0ɵnGN̥e(`V[ҕ^/ֶ@ZF!1ҷ,y>pn>x`}Qiad%:@#Am*#+QVCun)?X>c \h9FG[u(@ݯtk KS@4|C b*KZG]Rōx2;նAۺ%]KNyTMM4(wu,m'1e8Lz|=(;1RM;OsRPP4mm^ĤG`ͻb3xd(t049ْ%*Tr曾UMZ4׷t2򐮐c_*J/G2Ownӧڋ8Ux(׊icxoO~njmWy߾Z_pUm;âZY֍H ᑣ׍9zU//]6>["n%RY5J @ ȜNw38I}9!%e_4FV0w:4R N/PbYf 9KF4ļs- HtAM6*ِ1jYa䄅P 8JA wHvwinw 9osXُ'Y`%[*a/|@#LdBL&^)Pd$ӈRFz}r:59T5FA2*xRIPuFI *eQo]5|M6itUDe1 [$쮕^Iḅzj'쑈g# ?zU ^BQ wy)&tdDy G6;0(.=$&w>4Ya*95L=o]?%mO䘬Oou:0[F_($>et'32t]hLKH!9 Men#s~b'b%?*EA$jB}ϣ9i 8:s6\dgr~m,~׋oz拟Mڶ#IY$f-LA#7vfO8uc?e+Aps"2wxA$A=)zRT*{l{?}.eT-JdJ  H罻.3#{9/AȰ{Zv ZoZ&ld.q?u>i&P 'r"bʌ8@Miw6{@S("^Y+~x꽟̫͍몖10K2$Eđ_ 1ӃYSKX+UC-R _~~J0 `F`߄y$a Ů 1!]]b,؅U`6/>O~O<_y' ,]adfk9B4]Þű#x!Qn7:a-"4 ٫ǟ[lG>1 !5,uHK80C5q0#I9ژ O+sa DD-SLjmb7sLğclln#aKZ(ItD ^vYev1,+;JdFLa[qGDArD>FL2}QCP%"SwQtqbh0$Poڦ=N4jPފErӎ8k7۵HR[+mNg ޻k囏<~޳=ơۢGNO\!N&={?~\Rm8qmmeTۏ=w| ύ -.صp]wn; oiρ NR&fpU¢VJKLC+Eλ!${*M_,d򔔨Af)ORB-֜haxV:I|_Bar>chiK`(oc D9Y>3:qhjBtL<61Gm]lUD Xh^J7 ~Q|!o*ߒ^31;^ljsA (#ĠcèХ-(Ɣj R,d-" iއtD\QdcM)K%,ԪVn,-Py ֨r#9Db`[r.EhˣKثӭO#H_ަ|/R[bH J6HL+eiCX. D9,T_bʡڷ@ Rz ٗ*b5ju$i~NkãYɜ|@r^b *BTAvs̅Pcɇ~ssO;3?O>gDnxlH(Uu}i"%ȱv׶NRH+J6 ݀⥫YO r Q_ 1BZ$ZJQԢQDmC[rE?wZKubR{.Oy2sOC;}Dy4% _~i'^Ztmr:ɹÎbH JhoABǘ&5%DCA!F{BoNNmlon]{_3,t5Z;&rJ%o<7r\1FP,=R@\w{ O=~x GMFEPVh'BcU) ^7Gqˡ[{:Jˎto5dI@o)/A TͲ/+Hryi'_0Ho6מmw 0<58s:'2h.BDD [ۧ{=DBڷڦ7,O/S".WD4Qq[o*!2a@$ t]zxaѵK1peYE 9mڐlʎA0b7fj ]oQ͜M^۵wa>Epއi?7ĮL5 H/;N"!({]TZfyGE6]=<@SUݴ#Wuddާ}J7${wRv\^8{* IqQ bբ[ /Hb*-emA5Kw9 rPK+)FUheLOCHP|lTbrCW,7j{7s?v:`[n`*,>(-"byS%K!iws_[7M[󍐰]fkm҄Khu cK}}厂:_?s?C_OIo6ʅ"TG&zqlt KAcQH@5X\޾=ᏋHl옊:lQ&~-EMT)G<=}SxRO5,fXri^jI$pH$!ij i'җ2af=T)!4ݨ9T5Q*9-紆Zա`©sW\޻G-xf4L9A#ǀo5Aӹ=f4T50+A"{琢V8~#%j!v"`N&-wׇѳ-aJ⚲&0.Hl *Uj'J`F#r}BYSӧKmT;}`|؞+#ͨ˾T~p*¼ka=y{T\Z2fU/ֳO>Ʒ8vpdՕt DZk}iؽ{ d t-GOH-m[QX"g9Ju;̂ӂe1RA5fERU"7:3Jva@X1OʩXf-TQ2R9Kyd N[HiU G F4ZOΎoU}(-)͢3Tg- zva_Ue ʡޠq,6 c0^ í`!gJK2iCj$6/&rI(1njaL ?P C۠Wm)|;&pyJ*<>A4:P2X0ԓ_.D" V+&/f*̋52IeْUp+ JL8\kDLD_8leAҴDH|EܙQ,ºxRZsʮekP #\Qدz /Ek$q%3dD_/%ШmG7αL;1i.OSٻݾn`*E=۩9CzO]0 QL `Bhgϟǿ'>WVF|4$$>`'M4 C!1LVx>f)1D~H;˗_9Ю}ܵ!"$Q!v"E2E1 9ôjf M,$ϝ8}e6_=?3?\`^cUJHiPcGŹ# mQ !epy}‹ƵŅ 쀉ooNiߧ ʎnމ*&!%Zg sbҎm6Y# #&sQKA`Ko|kwuw?ċ#-4fܕk&[["сw-O>l۳|q҅kphxzЫcaqqr`ui +ʸZE -TyW c5P"TU[g(ӚV!qKDc80XСn=DVqXxM7&gA+4tRol u&#;ADH]:FېnQAco Ԅ ۠-7`=1VOVu0*HQNi?!&S$=Bk-jQaXtY-JʩDcZcT6YP7׮_$Wi4&Cb'Gx0!UcYޗD å]V%8sW^' ??疽֖3 C::5*GKUi!׏$XKK-ޭ><}q}}Vch#@( D lpDvk7#5Dr&2w~}o}qB%*j\2}H-^JM˽#P>.#G^]]^]'*47N&e oC BT"g΁tcǂ(O#~{:^70Ϙ,5r-'Zq$;YߛV%;Glh64ӏM]^>$#"8veI|Rh 78 #`RGxD0v߸xc 1qwv4t{6b/4|UcL2N#}Gˣ dJP2( Qq ABQn(M٧˜ޚ>̂$ عQ jׇ鼛ѵpIR&ƁhcR"ox3rܥk?Xw.󫻗?=$I;ZZk.] ؉h ;<U[pG"rxЁgDf>}\K!BgCDk@DzYi;&ΆFI~CXW{u%^ ˊR:c d\M/nD2eMR ;xŐVIjt_B2*df~lSq`ҧ$"A4*LZ!EXVdhEc WM!cjI]MUC;z)>!.Jbļc npP, ~bE(lCiǦd*V Tci cKxy'Q턉!(yD>Eb 8ѡYm ^;&,3Ug琝sZr)=1!3# OC214eͅά$RQި *TRyMa\Ϩ+Giv_|"[HlRa(!*p¹k'v='s&4͞2(DICA2KQEmjdќ$ms…4]`Q[W /hӀ#0q|fh0.t:*bFCB]9!NۉSVVhtsϞYx ׷7_{ek:NA\1Aع3$hWw>svs-Ϟ<=7qk/./h\,cˋ۴¯OTs* 7`Ijܣ" 㠍KTWˡ LLM>R\ MH `2VȈs7a MA6H '/nR<~ޝ6AQoՖz117.BZa&{4^!bԌbJc&\)1 0DWB*j`d,"%-*>{4Siz'hgQx6PZ!0$Z]M"5%cUc=c&f͆A %" XB0m9CN״QvI X?Rl),/aPǨCƶeC`T^: Yvlfg?= (Dkinup:/uQ3ѻ<*uƎ*ldiʚyXm/Z" Įο:ΈF-Pƥ5fS d弴6Y(Uj/<Ҿsy/om{sCBɣ.9 =ޙҤy";hެUcP(CL8>3<_׋a?zWSA}kYDda2YXO.a.A;)mISv+Ht$,}L Z>fq寿ܿ%~*Rnp 8OB~l1WdZClYί[ie`xtɿx?xk>s@NzP0TU69S-xagI Pf&? %wuڇW.7~[^OSȮ{Pqe܌dڞCO Z io.(v:`Æf3&"0dG@ISk)-Ē@鿵2Dy,Ln&ހJ;IYQ`2B|Fg2%. R\ujĜ&.N%m TvUВ ^M-LhFF1cڑ6U 8`( -q4P@<S32gfH.v0<]CA2VLQɕ7B̈́ʹo˘d=bׁoVq郟wvMԾ=^^Uʟ#; i2"A(&0!-S\xU׻OylgkYfƷu?2Z^ }/*1vb PNi0T4/%,-u>}d6g+&SG+_"p"av~RИT8+DE'Rt Vu_:[6/@5V]FU%8"ґw VI65Gɿ( Eg 6@xQC[ߐ伹9Q4S -5!;g#i]کe}dk];w=kKm뛨1$ՕDcDHt1!Y1@bBAq]юnuե5>JB$:}DdUIz(i?&M Q,FcK44 ih14s*5ޚϓ‚LEp>*![OQ c>' cx?|L⥷7gZO!lpC{W\A@KZc៙@H//FE``1,eJf:b*n9:bx cd (^-j ն쵏.,"d[:)3GD: Xof*JyST[KZ7DΪ3}Q"tO%v=ɶ*^dtP']$ BS8U*R01@,lgJa=+BҚ0V6Z Tb66T͕BN~p_z0 %l0K668glV7!úT^'@\27 N VP{4Eޙ~ (LK*)1V^ !t="j~;-|VS:tXo쟊eLA1"!&X;H1 @V7 ͢>jh }3~1MfDp<_>o/ۯQC?,Mǎ W":A.܉B5(3,%w0QDGb>k~O$tcPR}zXYYrhtT )qaCJr P'JԌ9w~|_㕧N#x}UUHS~bȇJ"P3~+c 0hH Bt x|}'^~Ι^7WNJSjd'vKzI`>wPyƩ뛏o?|[E+r] bM*6&b0 JEH!R">}ܟX]Y{ߏqnhFbu)#"1&6h]I{(!Fqr?'0KܟsytIAgidYCu=5c@ms\ČޓcO|{o綣 dFи >r3YK,PAX"iK昞[8cyEݐ lB;Ps۳"%搹8IiЧg:p߸ysҰP|QoKASLڑcL @:sxD5QӘ.9$!8$IܛqFBAefŵk*} Fr.ei&i$Fx:jmthۗgv>АGB㽒6MKJnkyÛ^8y_C{v׷;AO.ln=աCk=әD;wާ^8ׅxx߮?'~|Ͼ#*ݺ>;v\ iFB )VW jW3BL_8 3eExࣁ21FsMEd%$JĢ3,Aݖ:Ecuɻ@hTD"Þ 7& Cr^X yɽׯ ,_{@dOR C&Ug0!Th 1S$MBv}JqE"J"8~]G_/?O}umq>:6O5MҲg}F P+7Lbfؘt 8G/@fLz@zmw?7G7k4Ȕr، XlEѠkU ^tC# ZojϨl/\ݞ_w?c3Fb" zEyxN)}/6Tc ji׿'ַ>~IT%".J7-ݫM(PE-͚LB.%wt ǣwA1hC]:~%QaBbb0{vFh&*rOD)>ZzHޙDxԴXL ֒BN?s3G옝R>FȎږ>nj/}mDUi༟wGIvXzsmN#3.t.9J'йNRO$iR 0yAt#v)T_%veε}P؋DyaK&v3VDkC߃kG͔h2!ζ"9-ӐH 2JƴfԲ9bnB L5`S=ytB*gay|c2w ^Y;{6Rs״o{ټӨ }ǝ'^ W{ϝλny ,mkֽkRdf7Nf=o+dw)uE1BńA2Ŝ/]U -tOa25HYB*amV"PVX Kň}6H{ҌqiUFo6hGg a,!jh RFJ /6$e+G&xweRp=%-GDkzVQ뗷Wae%(,ݷO PlURݍuLɊjg(N'1snhUf|-ʼnzS5'|X ͔sekZsSU|H6v -T rEA1 ZCMPrdeN6=6*ٹ>$U}yEӸd ~z僋w'~?m:{<&2昜AiLy#@#$ s/iIt _շ=#=\"I76 1DN&Ru:q̩}$n)nH%=üyʅt~/PQ }oHg5ioUιTFB4^@s`Z"bʆ/w_^ [@9:ҿxgO>?};}[*#*~kƮXT D4YBHdndh4O~q|=ï"4x4VD-Xsc )^BfՐQlY$m6W6vW !Sr"f3ҽ)Y[ȉŪRZ޻?~mߋ1)j /)/*yH ![ hrJ;A$ jXpȝq֚MqIj) ME8ߎ=+{1xK:0 F3iΜaGTmwqi߁.mzMهHB/MJ1iĊo\b]ǮmGA!i T`,jk5A#;`@4u4z/($(Qhi=O)D`NFN Z'PJg^n0oxxz׾n<EwYr} =ŭi/]T\]] NB%W|Ő&{S/ p®fyr.PFfw'$H@Vs "IJd]] P-YUh]Rʡ FZ!dދ URMSͪWK%-Ssm_ A`.u5^4oz:QSMU#\a@ydjϜX۷cO[\%#(j&MMzQh!f1ƚ^;}C7YEg/]غ'|έrFeȽʓgNV?S??^+C=EcVhxcJDbꐿ e=81A@N66۸ů}O>wںV\lKHwAcJE*7̜~teb~Vo?gS a^DSSVKL ;{4hXSlH>dyi{+_kϿt!!3B|bQD 9fq [f.& "a)}Bo?y ?o|nbeB*N 0OD, .BO`}5;5>1kϹ7~=vehsMiQhF>jFrܩIfd.=oeQ }0D-h qHC;9DM J5mUhFaر36rNN{DI>{}mAT; #>HӸi$z49B D7.]͈&@oUܞ'D6k#H}ygg9&؇G2i [ۛaHe2I!B>$:@#D_t#啕s/>̋|'O>o9/^ۖ=+i *>4-8ec:űo&g/\{N8}1-v].Uhn*պU#iհAZX LI 2%CdtV%bH#(zfq\)%̳upc VP*]IJ lŝBU d!VmɬcP\l?(J}e9H%6B]Ei/}bc09 f U,Pt07CF%epHi۫!9Zˑ6U-4loH(e]MȇҊ -7JLzŔJ@fSQjr,\*id+h`Y^7O"$"ۮ]$KP}ZrZ9 :T>< eWTTt >+TKg( E,ZL-_!-Rk2G ۰K}]%;s>R\[Le$kUz[Lbmp[x9/^|Le3~{о__/O}ȭ{VȐ(I?+TdjtFg*1KA.ͻs6iD4kc"?~ᡷ>}!s/_Oc%KS-B*]<"٨9_'N;g/m#{>-X5T Hf}QE9K8xI'$qnF}s___g~'ءH41q1b}82>6+W %Xi|!jy~K * 3=g}>v;f1D<\%Pc݌# 5%i"Qe0P-fe@^?h1sh]IήLaI}y/20AZ#-Nʶ`h> 3`w|Sˆ v:vQ_ xE1UГm\V)Dcbi41I@f}^t!M>B?+5$ 4cpk:g6_~.*Ā {-3xnGsdu6@#b'|=#𞻾{¥QNW' ?N?w۱x߽zRaׯƮo}ˑg^;ƈuܥu-ϾpFbXOn=F7ƋN=譇9gyisrh#KJ5[)"[i|)ĝrZT:%-|)gb\ GK9vڅT3:Tlkt+4kPtu1 $yf[T ja^p5Wn̜IJ %zo#Q V.'V[ W|VIP [VwGٻ &Iݕb +IW Ir`;UdgS~_3+WL"ΫSbh % v)5T2+d E.@ MYE7_Y (Xrf,EXb e]IhdvP[h'CB(pS1E) 2Tf}+<.-;i!<^Lx+a$5I6Tg,m8Ij,BlKBvFjբ_dDT98 F# %J.' j eΐdc8DZHVچ`}UYK'o,#6r& '5 RJlcӿdaiaq܎16:ou|[om\A Ct"A$PnDFK1 D;!e XE4XYМΜzd$1pz֧_E'>wVu*}$RK:v+WCWaXn)->+D|i]7G>,ˎ ɩM'媳r$-shL2_L8%H]U"5..yO~y>㟽[әJK6j4 V[%+6UHlH(:澏 Tln!3g_Z4eK)a,y[ֺm&aZ)$NL"ɝ/~'?O-L6(Y" C $T& !JUPyY‹g/}_|[%Z C 4RQK:%gb1Q66wI45z# Lhl 84.Rdd櫁"j-v&e8֕~aT2 Gl]}?#uJ 2R*' Uٰ;JC;ﶷū{~$HCIfFvt`+@Hw!6vF676vڱumn0w6a >XH}YӧG;Di7g=DAQwA.D~>8Ң&&ٻdLDH0TNEBRɋWG19~{?fWͫ._f'].WwN=(.+Ϝ9)Q}3ϝR¥]zU׽U7v߁sܹ1([9'*դ6䊖yq(TͺJf˿fWi`WѲ#2%ZwIqDa2sE4a=}Ls#o3ճ2n, lQZTMѩڪWc;lm[lU͘ZMjmO֦LTLt[ka;5d.|  .n$oh~~rÖ#R2F3AP!Lfi)zׁ9U*exDQ΍Lňh1N k˵!2 vc:H1%V2U۾ cyAㆡ.O \MKrqf k)T`e۠Tsei"p41R5Ejju3Tze0L6io+ya@SpNe'n:ܶR CAU~\9{=lu @.`ʏ,(eJTjh뺋5-;~KVCSqM*x^gM6Dr0TBQ䕜7֯GMBHjO6G}'no.˩dĆS9d4ʅACTmΊ}89C3thoLJ>u.y[Ww~4iL9Dm('PĢ 1u1|A!w}D ;fVbdWcPٶc!xԇ Qo]F3K\t.Ĉ}(&6>.S5iQ;L)zkF7ѱ#05yk <9I=s>:]m{‰ <=<3?_[|뺂{;Oh7E{n[ ,mKm=ncW?v sܽ{#.< 8]~[PE-تi$Rq%mADSƋSPxݻrCX*&X2+Ugb/J͝ VJFؒ> Hqi lXFP:Yhh.cYn35|cv-BbKjVL%MGV¦_ <ނ5)`Rc+ElʂPQm\]<r!KFB-DT \A\ jV;4I'O .Ϋ.93[X6j@R"F=9Pb%=6$}Rzϊ!Y)%Aʫ\u)=mlQwLNxCNZG0B5eWNeMն>-c1OH.‚\Q?N38l|HAĵ5O:YW %} 3g _^ֳn*ͫ{[ocH:ё=+m5'CUI7{u1̺iw}#]@bJ }]!4ps=o'qW/J$`(i]X%77'9!2LDԇDC @F& rQ6i?ͮw~cիg($k$\<᫐F3߈0?m0ƟJ{M f/~}߸׾@9fBA>#H{L9IjHdE&TɺJ(ƈ̱^͋ vo BwODvh`pyׁ}qR2κ^ɡJ`GQSH$K\7M͔b0$B߱o<9E 94t$Qltۈ:<}z;g2 &BR) !*H/!DuHGn6u#ߓ.i(/-QBdy7:EUryu{sZ+#LJtkPOЖaQa([ gXx(V3,Fc&Kb<5!J"FmZYU^B[ϰ*~)!RX@/Z@hHX׫P}3ҭ`d5ojݶJL0vr5s0 W}+gk] ZU&#@*yJbSȕ:ꜸѴ(Fr^! !Ҥd{RDP@i5eLTRf)"hNSHDPw'fHќ[$i7w!Cx 2ډjػhWMظ qQTw @e ]U㒺`gQ϶ TANC1iٙTZ2p(e zvP߶mbLUB`"fM θE,0 nqdH`fiz逈IUXJR2y-뫡.̈́kje`YUo—_2v2Yi㖗'wӴhf,VF+˻&D΍Zt>wЬ1H0I؋,2 @AEH5tq~#|;?uZ_{B$dZ޵Ӝua R A"8-S!YIbiĐ$ O|}ßȏ~&(bleaR![y\E͵҆B]+@{g.GOsvͫUlrQ c!_P{|j9bf|8-,K8R ✏1Bzs í'>?KI";^9*NNC#ǣw޹Ʊ~)iPҒN};JhfDZN~LF/'(K9nONQ3Ͻp'>OOx!FC$BD9ryXk3:fhDY~ Qq㷿Uuoy;1-b$(*O̕PR^/iR"b .k.?׼m>S- 6вFa3+yvgA' A\C`䩋pIreT ]ЛS#R:mڶςuĖmC$Fb$gtn q5wmwf44ZTnևHD|4(^yӴ!Fߴ 5"{Φ Q?=tc\<a>;,\fWqeymy ]G\0"&_@ JBEd*P-UJ4T;2z%HYt)Ú2&:f޾!G[d7q`VUz h֪fP5p ԨjFΖ>CuGU/F/[!q $F'ؖT"-V,D̅aJNFJÒ&\0m;u|5(&eieJ,A41 喤(P>_KgV.U56<[k{K4u-̘ǝ}|K׼p;dϰ|P!WXV3%lN㐺a ۶RQԡyR'R;X͇*}v eHחIŌ/5g6YlSouTu0K YBC -sݵfбDu˾7Vp%oR59) 0_)l q 6\|_/I/?/߼}op+[0q߸zVޅ0 {V|K &Z[& V&n{Ow^,,&+k6~yDDm5圧M͑Cw"]Z+{tXwTr|q22].}G_O}>X5}wwND##_;w?c̶83HJ&$ԹUBH^m[JsؓI-}]!HӔDRSq.&>fl$6ޗE'׮פbA@{]Jhp Rh7ԐwzT4C\O4, 8NU]Hj.&Ul"ƻUј 1Q(ti]91\:U>`f8PC Ԩ웅ty i ?n`0w6 YOYXhGIڽ`ױw3 \{deN_5+gϜ[tylsSG_B_}3/ӹ-;:ྦྷz^O=t:;]Ѕ߻<ٷ߉蔢F*EmgŋȀ`^eJ#7{j+ŠLn,;lad&. dJ`RnFД!kfCU᫰Jr۱4$V[$U`/yb#$"\JR *wōciנL9Gjn6ZWoQ)7R #ms9Iԯ=Ҁ%Hmʤ + zɴ۸>ͯ}#ݶlS BrzAi=oO7o)̶ַOD,V?^o@2aK =xo恻Dz/_:ue7k{vίYc—I?j>#j@dJVO=.CƊ .{L9OW$1ɐ6_x?#wt>̷aXD 28&PVzAAF*avIR4]Hcv1OؿNERil[B}4(#'h>MkDtilRHg/v;$6DaRUq1.&v!tH;8h\~lj踏]40+.}MlTɅ> !1i*.{Bt!1ͽxB޿8ٳzNmO EaښQDc^/Qq-!ou]8,Qo]3IL -LF[ZXDcvDz}T)#!x쾽unk_/}30޿ga=rdߋ6X]ܩSxޣw:a~/%F+r 3qrPŎ$zX˚5^5@=8J_:%Eա3Gc3R6%S05: [ 4Lydp4Zm}E\r:ɠT(5gT2"RS&Cc\HjRYke51` jB@M5cʡjzj@Tʹ !-:n+ԴPbr # oD!Er;)2?9Sbk$J ,7֥nh=:CZ/F*o,hY%b6jF$]eh/(wA\dGv _o,ܐ`Ϡߨ*:*UyTD?Cݿ?oU ШiJSRV(JԺЭSHR%evv%hΒx|k߈x'G'R/K&̄yF%!;3)#!JT$&Ĩj_dxk$YYhSVK jctM D o(+ݼC"$Q }ַw:Xq[Eȷe E%uac[K$L޵۳iDAt5BY9rDVXBǗ.^cUVa\ӑFPjG^bKxTH8vM;#X i糎w⅑Q[1=|>7>F:q3Q"bS\8~qމ*pC|<]a\`6f~|dFdq_u^B3y۠f֊tk8hjv%~&} Q j tU AZj-3ĢFG._j @eKkN b=PҶ+6ڍ*`2}!Ȍ0.'C>'—rSo9Gwtd7m]XcXKAސ$KI,sw=;dʮr<͍kO^h|sڽ/CoS$"N|7O y뗯孭˳3xeKg`4 [, }g#v-,="7]*ze{+2x+Kn2ZhKkF-,8rxԲo7д"s㲢 b IUܷ?Ƿ7!T9{1i+||g#N"'R!E>AQBHOloG[[.P6)@ & 1rU@nB%&Ih d DiTF />[EycC}TmOOH4Zԉs ;7낰e':;{c1p~ҥ׼aB,NQc׫4r4hE՗ GL!IR1A@5̎ȩ(Y`R(6 !mmϷQexSҳ9G}."9 2>DN0IM YǀIy4I|k{dcI!jJ~>k`tg<A6}c $l n.d[G0I0Fq9fO&67H!&>4ާ6tq V&M?s뵯;3. G]6mmeyiqms};λ[|1m,Mv? 4iFK+ipi)/GP> lmVKhR yH&h53Lk<vv ſ Yzr!1Q rwhYȒ^VR&/eVWMPǣ+CVnxAf#Pũ1T^iEodU@YVnP;bj[PNN`|IBIʱ8LyI j |Ra Un2vAU.9{"E*rUm/X8[ B_hfZk:̢^ sU-lmx@3q&Na7U<q N<(`!*HX͂؛]vV]损k\3^_9)݇|-1mȎt'Fl[Y'@]?Kgs|Ownη\?Me%ϯ܂oӭQwq84r -.v-?DEi9n[Zfn<"='Ɉ67<:?wtN,>'1ۍV'薟,{ǥmaHDA=,,I?!Hʇ"1 ] TbTbph2i{AD"HX\ bQRbgΞ¯pϯZZm!'G^)gлpF,Ls$Ez DJn,*!c;'|,>H!>_i4 ]ԠO[E.;NA]QI\9{ oga1x^RK.3 ]f@HӨT5 1hU>qb <<$ "-8%9=#DKESAs_:2uHh;QݜfV0Z²FY"!G2OʥsxSc!@l 1B[~_oAՊnsȏ]Kш8ݺ8LD ]7j(6-;EĘm*#4+COzy쥖7-W>ziUD f)۵k+s6ۏ}777ɹc~(ums6ف{G=v/srsd5-Zx B+_YPdg/2w .na!JbG:=kBTk(+*'If mJrӫ :I(}ZJfE嚭`ABȰ,GWn81ۈwTh'l([:0+Z'+T0&& U &ߦ2FTqe3+ul!oͥ݊4BI\%&6DH*3T%"ҶPquӵ2K0u-(PuX2**D$`R1SJBQو7 eUjGז"'dzJ7j!&pLW: nvVқ-IwAJá\EjGr(/SMiUO$FQQU=ԽU7obavmXKC&$SJKC聶^U)R QA)*SW߿??3G1:rv6 !;iJLE-cg2kkwr!_~k_Wͫw;w珟YXk_G}~]v-'JIF.*Rbޓ9[25XHABDeM & ,bTjRZsye<_>?n<#FtBb^-1q}spcC]!^ڼ[ǷOnL F0xrƅk7/\ۻwߞv=sC^q# Qe4eg<=x<ɂd:"Gީk1Ԑ-o Ά[m:T*v 8$ևaUoIuC n-,$2F-O2w~UG>7 !$E$F-Ĭef R<5kףOtȣưsS W6׿byi7´AD[GT&[%C@cQ1ܝ 3l/|Wo@-4I%lL'A#TJ;! m!$U&Ȥ6)oǟ?p# q5򓮕̱q%.IHhT48ؤ a' fμoie5`‘}(;^ŞO{cL،]>(p\~^6E!PhH_{uB!ԘRs{:t8JTKRK2[LRH!ƦILIi~{2cdRQqˍwYm<E%!wшwvL/^|u؁݋vKqm}x|[W:{A+. вٳ%=7z&wGxhϞGW׻ڞ2{PLk]ъZbqS Ks[*mRQ\.㌒7:dW 8pЊ8(Ƥ(1)ebqO~2@E?u eNMT]`\͇[ ^T-(sōziU%L8yG* P ["*fl725` *X*`׊ %VX e@iVkOx>F@ Noufj:órefB;,H0dkPL%J G 5\[ՇòEg䒃gʐB˖l(|.aj4\O ?B+-9BP(MYc (ccE:+9/_Ż?s?w [kYM4Q{_S-/.o^vٷ{mm[`(O=/~'x恟?ys0w/g{ڠ!cPݙ<-KL%2$f 5*5cObF;;HSE?#-ɇ~w^)߂Sd=Y׫QGUl̨)A H BqJX%u !NS[y"Lb.*Kڜ74v_^跧/n-bkqN"^ߜM%ttLQ!6!.'ɺ8K݉ 7Haiu4˗ځvƻ'& ZjF-.")}OATyu׾ Q uznKj$}D肋E$R)lB:Q(!<}@f;yaИ )ǟ}`7ݘY htڋtc`bd@Fu݆sv?_VpK#r!,|LB$:%E Ϟ8ugWo}`q.b^&=48%*0i*ZrYFW"!ZTً]wZnU;Df\Sڗ!A%3HT\240F kc5߾~ʾ}㉛w!4M;S`JǍ1m;MG㖐o(@欛,h<@8{hc{]sAt1!6oF~ksSx vQN|d-'8ɡcGgֈh4#%]EkaxxtA$pHΏR I1/Sζμ>}w>qTm7싡[}v?w<::Z=yb0#wjm_umbhvOc>~΍Y IEu&ӆ7h,4_**%<+SWR2*S!( ^j+ۜ_˨bG ԁ?WUp:ӇzZ,IUZHpbPiJx׶TδFj "Dj;}! u*g \9W_B6*b@*Q>R20$7* B.E;['pŖGa=UoRνUJ,wsK6jbvEܘ8Y-c ̷3|P Y@v?UI,KpDٺ ^WX"rT3Ր1 iznEESY{Q~2KK!+4Лi&E|(1=Ų$<9bZر:Ǐ_Xh';O}О}5&1J-Je9JL`$B4l!dч~6z`Ot# W'xO<Uy:e6ۚo{)|>OEYOFM#w}., -,Ktq܌w㥅5 ˣ1 ɨf2F$̦Tۓ76 o~pvYD80GP1[^ƿ0Y1ا>!J>l'0IC BOH]ndB3nw!(vHq(:?߿c1B?w s:b D#>]H)4>s:o5Ǿj>`O1I\Z̻5'N_po~?qM,(p_p܈D DfYM蝛Aj;n!AQqcccvʼn1 Q%(:$x=Um)'n4>ģ':qK<J>v:+WVVWx>WvM8wy'pKkַD3-zIQumui﯇!"ѮՕ'N] wu/.,-➽/GNm3f U'G ۍ+g旕ªΪ|cu1-v+zAHV\m8AJ8r11PIDU U&jU:pIoZrDU(cnX&|PT8Owx)1#"&*C '9ɴgI,:w| cGf,! jR)'\U)Х1!b!yT('v+\#>1kdNJ4}DW1DrJytI]]ZFޒCMU xn;ů:t/{E\]$jt0A q+FPn}s}V"5^}6g]c68R<Ս+.Mhk{ǪKxQF+ 1Z[vmӌF ]Z}vԎK>@_{vN]^Ĥ)dVg57TPy2>`c~ um-,ÐҞM՚b,ZPuiV0b{b*FX>{߇SHYvbLk+sxi]E'n˗A!w/ (ruzm{No;u!k4QuFώ&. 8 #@)3X]q4 U#tg6hCr.'Eȥ&z¾'2PaI+xT?5#AMeT5=hKӾ=JUe)fR=훧%*殿& M–+U:  # $P\XbJm%P#S\48:V25f,:;5 HWTG|W>:pDcXY*?TJIÀLnj=T'%l(D#pjC*Z7AE 5;a7[i9[v.DTYe9EN97ƗX8 捬6? aKoݖ$'@r&T1DyZ#?sM KcO()T e3U5i^j߉~~LBuys:SOD\—OՋW"J1[Pz\۵{ee(a7o~k?x'?=11 >DQ6f|{_;|`:m"B6N'!%Ѽ2c13aLx#x Q ۺv-D^xrtRhd}}}MinOLj[FX#沧vicVڦ/B3OџrN/o߻ߠg0),7q 4ZXy Cfg$.Ә@U >T‡~л|k7jhY>"1X aF8f]GdO}Ab7 "?f]̶-Gx>7FQn鄜R|6/4 ^[ov !Lq9T]u_^$ D-臏=Ew?0 €tިktx&UQݚĤDE06ɍ0t!&p ]3miSe>kb=)Ά)S8m(}'tΙ_r !>2#2%\@LgHvt#~GVW'p&!Rjr7RFj!#̈́c>oiݿ?qnc[7ׯtsL{Ofk&,ľZWqgOn:n{~Sʼn/ lϺX:ye v_QtQ#D|UV Á{=ը J-rjy;EoO/W_!s.!Z,B[<2qVTo tk89FhR=j+UqJy8a;4FT0!:ie2Y+^TaSj|!Af%6 %Ј8V"P/!+`(v(CJŃrZ a"!cYR8o'0#"y~I "b4RGݒWtwvnW Ѕx*rFW$uh"VњdG  @Q@A,e&/V}c_# #kGZ;id,V#]*bV1hJuZWYTӿ ( V^[*;|뿀֪:0)\njݯ0gR iHJ%fYnA@4]6Ӻ1{W$/୫.$ԑN7!e;^Y^Y[ݵ{moӴfe~/WȾÇz⭷ߦN(J t}w=޻i\?o}w~#GI11ِ ުĤ%Œ"rHD"tbs#f2(W=;gF0\ ?u]Gf"OQHlLo;5H̎@7\و(˼snЦdN&_z睯?3,q E\;O"&C@iXLմsϧMYGVv+BRγCl8cϟt]zE]M2䆢(cH#"jb+f!؉zj9K{r}{5 >=ƸX<J>jbMK>FW>`.o>;ԭ>z^ !F7>糫HG":C\Zh'n{^qB0n};vdm!.z¥Ņe$v heaiii7Үv038"r %)q*1æV -lE!av= K4O~'<([7kF8TC'Ht\P>$[Q`c8#FpsvP/oI=/-1GټGϻ#!1+KW7:@];Krڵd1ulo;7ji&F `}y[? snַE6YLfiFFpkksTu1{raBQ A8 NΏO;=!݇Ϸ8{ lGݑ(5oPfFv]ߚm,)B;:؉Gw/N}ڂ{^"hee)C[+zxϓ/<5.g]Y޿Gw=bl2hA֖#L8荒zh<0PʎdoX5bE/ ¡?{[R8*R &jP^k[ Ne$юEՀyAtfNHԓT'P%7?,uGsNYE4;}(ij4ʐ\4HATx7 |v)eN>R#0Lf'1:zF V8&J-H,;qHB8RvѠ)PadmiB/( Q0M;PݮCY]@H[$;#*0/6dP5'3T _ d6G6IeӪh=z9?-; F;XBZ׃"h v;a%.Ua".,Pxee\|ٺZ$uԶĔ-:B;{oo k_7WVӹA1 @"Ӱi Ӡ(>}mw?Q̟7 еmV܂ݸb-JgsNnfP^(,U!+Hpvq_Ͼodt[i"o䚯uצ}w}ڙqiy:ޜu Qmǎno|{umk'>u)9?tOw^rq4`c\Zp-38'#.Ɛ*lA }!5{ꄙMxW?w_w{Yp~Do=(a4Y}ȕ1꾕Co?!Ƌn2.}K4ߵuRBFb3RK%ykPey@WRCTMFT<0,IDLT@%7CYW*A^RPS(m+&Sx'J֭%ZY _?{8TPuK:Wx^0QNvڮŅ%B4,to|_G}Mw{ e ]7 -yׂS01{OoֿW_}/}5AYr(t*&i]U!BLcJ)3ĜP9لFqvgNmuoЛ,L1-]]H.2XR"Dl!|CT`~FJ8F7xg7m p1 7NKBF$YX,04hr+ZEHf΂D%* wϞܯ3_w>tʕKW4F]׵ujHImY8sFm72@TS-6r읣Hj#gcL /?ox]+FQPII-eA!nς^C`%$5~!!1BH [6GO?GmW?Gub=} I^Kyff Dŭ5z%54˼-GN///5M;ҵVgxy}VzvnzoFK [fxRo7czٿlMpصH0Jd-F?Q%ns1İ=ݖ@5Ƽێ@}'a⺏l6MxIg[춯ͷ㜗ַ[A-p9'qYFfmB#1bq3D}~mH/_>66ouls~`rKMJE[(b% :C!>f9{+womv{" Bk;e:b:|9>W|Jv nyCϮoweҶM+ekK![RtpY2]qbV f5 v*,,Օ!JupW2P12kb_Mɪ U>J7g~pqTY|;-'}*Q\sLjTA22= J!'=%r5rhY|Dz"Z"@8㣁GFntMKjE P9s ;{nbA\PPEqh, 3DlKw3.\lcŌDQYZfsnE,kyS} ,X 38]>hEXq`uDmtTт/&8w|;ڨr~T&Vsyc,оGŁup\`ePfEH[o.m# T})m0El8 )+eݽ<{c׾?3O9z׾ŷU V̑u"֦ )7s爉ȔQA/~͇G? jJKmsgJQ"`DuL~_E"SȂh&ǟՕW}g~#{Gv h c6g2 ۘj@1 &lj0 dl 61Mҗk^yY/W;O}x(R@q9SVL)INIE$*#SM*HN0w?0dfI? I_C{n ؠ,F2Cõݫ'&v DP'<Ē1D1\UNdr/x:(Az4MEO'#[;x7~ckcډ3kn\!jtzY:!$ bC.X S]Cin}-mGo[rD>B2Qb DE 1* .JutlM[܏}jsn:[Nu4F]AQHk)fdz?B^J ,(kw奖yum|۸u@U~W߷kXc:#"بAb !% "%g$fMO# r?+f%ek]<Nv_FeS:@ 3Y>3ERu?o )SZGSR=Kdܢ?*bYy`3?x1:}K?ƙ3}d\"d"rUA,LV:0Ɛ3x]/w;2gabP$1z&aLYT)D İ/Ǜ7c5C/x[FSÉJ@TFB툨uJMbFMоYDZ L/ܾԏE0mH"%++BzIij?NQh6;4jOg=ExU~+ۻ~cswAi͜If[XXV#'ԥ]iیF+`\\AW\N&%ke܎Gn2f%pmPns; `9֞k90^Lb@ʃkJ[ ^F (/[n4б#k"JOM)$bzb3{W&S׶\8ПyȳϿkvsܵllmow..kEOGz:;c9}YXY[ݜw{=ۼ+SdpCbXq~]ݚO6'C0j!;rfRfw.d1jQc̆YҋjZ(7:mZX=)ݙH !/O柇)Q+ :sD$Lmd VrҔ5FS@ zDešol򔊂m/vTwcP%$Yw&4Y`>#}VF(aN"%{$x Po!\AmNds@Ecu[.L79 ~ 2ىK V:tZ8PL]e+YdG8wJM@:rw2H7.\͚(h-J.B tGrsi]pgx\1d,ɪZ~(nj_͠Ca{DnX&;R ȫi )UƑ n#*`գtee|ŸɗkW?ro~|$DBHyNeH AMTӍ_zp)>"^r7|}cFfER;05?a0a <m5-D.8`҃Sc!&s$<}d?ȏ=o\HdYՙ֐gF0݌*bLua0zE,XՑˑ7ewnƷ#?|i 2)1!k1YJ;S&UHtk\&O|Սoov{Z_1E7`FfRkPA8U1!$gWT/]/|am~㓱x:9*bSL>@HQԣb( 9cb8lO @SO׿1'JQQ1xU;bDfSaKxu2T11|?eݷz%ƹz@_9 a 0{M",zO5Q܌M@iyk?K '}]*DёA󋪞Y4jZBs/#"{:GA>AT|~%٬u[//(:|6[>b#ǨM1|Ε2#uL -xfuiȞPƍ,/5DK+ta4m n<F1z @/caQXVf1Wi-I_ڇ_ /ksݿϽ==q1[ճW.t/{wuI&}ؓ7W\Hpp߁lz߫n?=Is1u#𦋠dnr7:h70@L*1 u`#QP76LPeWjYY[xY}E9UQAj-֣DB&=Xaqf)\B%PU[%)FQc\0uT[!4(II4Nce7MR +855_"jBfrN,>6J1TBD$5\@StK92odj- MhxE sHՃ[w DWjz&TWu%dHSQ^N;&3pz #;۱b ۩xbmZBfِς%<'̉OTTZo=;\^ly2!T)`I?J/ͦ5&aݲ:Z? g_pR1Y`= =0UcmKBv#|cͲ"?~48Eݹ7.K=YХ_ Ĵʟ C>Qa]1ZމJW\F_˿oo;?s?qw,-FG(vc!+1 1&c%(´SQx=^_۳XP2 ALk*#$-ƘB>Y+hϩ'bv$;u~w/sk?]xI#Zk,0C318Q3ul`njQ6 y'xm{Sw-XyVF5~L81iN]*&G粨 I޻$-HYucs jؘb1y k2)̘͜cF,%kq?*DD}T&ԒgxoO;ߥlRvܫ=Ep`baDQQY]Frsa>82>6/]y[?x筷 6ΕBbsQ)D.!0]i蒬m"U{ LYGf ΁ƥ=xC -CHc:2v|}MxwDcV.-t q24?_e8y8c&I`u4]cϋ~Ժ$S 7ܤeGQ8R8j?9Ҧ=jjæf bO#j

'; $classes = array( 'button-secondary', 'checkforspam', 'button-disabled' // Disable button until the page is loaded ); if ( $comments_count->moderated > 0 ) { $classes[] = 'enable-on-load'; if ( ! Akismet::get_api_key() ) { $link = self::get_page_url(); $classes[] = 'ajax-disabled'; } } echo '' . esc_html__('Check for Spam', 'akismet') . ''; echo ''; } public static function recheck_queue() { global $wpdb; Akismet::fix_scheduled_recheck(); if ( ! ( isset( $_GET['recheckqueue'] ) || ( isset( $_REQUEST['action'] ) && 'akismet_recheck_queue' == $_REQUEST['action'] ) ) ) { return; } if ( ! wp_verify_nonce( $_POST['nonce'], 'akismet_check_for_spam' ) ) { wp_send_json( array( 'error' => __( 'You don’t have permission to do that.', 'akismet' ), )); return; } $result_counts = self::recheck_queue_portion( empty( $_POST['offset'] ) ? 0 : $_POST['offset'], empty( $_POST['limit'] ) ? 100 : $_POST['limit'] ); if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) { wp_send_json( array( 'counts' => $result_counts, )); } else { $redirect_to = isset( $_SERVER['HTTP_REFERER'] ) ? $_SERVER['HTTP_REFERER'] : admin_url( 'edit-comments.php' ); wp_safe_redirect( $redirect_to ); exit; } } public static function recheck_queue_portion( $start = 0, $limit = 100 ) { global $wpdb; $paginate = ''; if ( $limit <= 0 ) { $limit = 100; } if ( $start < 0 ) { $start = 0; } $moderation = $wpdb->get_col( $wpdb->prepare( "SELECT * FROM {$wpdb->comments} WHERE comment_approved = '0' LIMIT %d OFFSET %d", $limit, $start ) ); $result_counts = array( 'processed' => is_countable( $moderation ) ? count( $moderation ) : 0, 'spam' => 0, 'ham' => 0, 'error' => 0, ); foreach ( $moderation as $comment_id ) { $api_response = Akismet::recheck_comment( $comment_id, 'recheck_queue' ); if ( 'true' === $api_response ) { ++$result_counts['spam']; } elseif ( 'false' === $api_response ) { ++$result_counts['ham']; } else { ++$result_counts['error']; } } return $result_counts; } // Adds an 'x' link next to author URLs, clicking will remove the author URL and show an undo link public static function remove_comment_author_url() { if ( !empty( $_POST['id'] ) && check_admin_referer( 'comment_author_url_nonce' ) ) { $comment_id = intval( $_POST['id'] ); $comment = get_comment( $comment_id, ARRAY_A ); if ( $comment && current_user_can( 'edit_comment', $comment['comment_ID'] ) ) { $comment['comment_author_url'] = ''; do_action( 'comment_remove_author_url' ); print( wp_update_comment( $comment ) ); die(); } } } public static function add_comment_author_url() { if ( !empty( $_POST['id'] ) && !empty( $_POST['url'] ) && check_admin_referer( 'comment_author_url_nonce' ) ) { $comment_id = intval( $_POST['id'] ); $comment = get_comment( $comment_id, ARRAY_A ); if ( $comment && current_user_can( 'edit_comment', $comment['comment_ID'] ) ) { $comment['comment_author_url'] = esc_url( $_POST['url'] ); do_action( 'comment_add_author_url' ); print( wp_update_comment( $comment ) ); die(); } } } public static function comment_row_action( $a, $comment ) { $akismet_result = get_comment_meta( $comment->comment_ID, 'akismet_result', true ); if ( ! $akismet_result && get_comment_meta( $comment->comment_ID, 'akismet_skipped', true ) ) { $akismet_result = 'skipped'; // Akismet chose to skip the comment-check request. } $akismet_error = get_comment_meta( $comment->comment_ID, 'akismet_error', true ); $user_result = get_comment_meta( $comment->comment_ID, 'akismet_user_result', true ); $comment_status = wp_get_comment_status( $comment->comment_ID ); $desc = null; if ( $akismet_error ) { $desc = __( 'Awaiting spam check' , 'akismet'); } elseif ( !$user_result || $user_result == $akismet_result ) { // Show the original Akismet result if the user hasn't overridden it, or if their decision was the same if ( $akismet_result == 'true' && $comment_status != 'spam' && $comment_status != 'trash' ) $desc = __( 'Flagged as spam by Akismet' , 'akismet'); elseif ( $akismet_result == 'false' && $comment_status == 'spam' ) $desc = __( 'Cleared by Akismet' , 'akismet'); } else { $who = get_comment_meta( $comment->comment_ID, 'akismet_user', true ); if ( $user_result == 'true' ) $desc = sprintf( __('Flagged as spam by %s', 'akismet'), $who ); else $desc = sprintf( __('Un-spammed by %s', 'akismet'), $who ); } // add a History item to the hover links, just after Edit if ( $akismet_result && is_array( $a ) ) { $b = array(); foreach ( $a as $k => $item ) { $b[ $k ] = $item; if ( $k == 'edit' || $k == 'unspam' ) { $b['history'] = ' '. esc_html__('History', 'akismet') . ''; } } $a = $b; } if ( $desc ) echo ''.esc_html( $desc ).''; $show_user_comments_option = get_option( 'akismet_show_user_comments_approved' ); if ( $show_user_comments_option === false ) { // Default to active if the user hasn't made a decision. $show_user_comments_option = '1'; } $show_user_comments = apply_filters( 'akismet_show_user_comments_approved', $show_user_comments_option ); $show_user_comments = $show_user_comments === 'false' ? false : $show_user_comments; //option used to be saved as 'false' / 'true' if ( $show_user_comments ) { $comment_count = Akismet::get_user_comments_approved( $comment->user_id, $comment->comment_author_email, $comment->comment_author, $comment->comment_author_url ); $comment_count = intval( $comment_count ); echo ''; } return $a; } public static function comment_status_meta_box( $comment ) { $history = Akismet::get_comment_history( $comment->comment_ID ); if ( $history ) { foreach ( $history as $row ) { $message = ''; if ( ! empty( $row['message'] ) ) { // Old versions of Akismet stored the message as a literal string in the commentmeta. // New versions don't do that for two reasons: // 1) Save space. // 2) The message can be translated into the current language of the blog, not stuck // in the language of the blog when the comment was made. $message = esc_html( $row['message'] ); } else if ( ! empty( $row['event'] ) ) { // If possible, use a current translation. switch ( $row['event'] ) { case 'recheck-spam': $message = esc_html( __( 'Akismet re-checked and caught this comment as spam.', 'akismet' ) ); break; case 'check-spam': $message = esc_html( __( 'Akismet caught this comment as spam.', 'akismet' ) ); break; case 'recheck-ham': $message = esc_html( __( 'Akismet re-checked and cleared this comment.', 'akismet' ) ); break; case 'check-ham': $message = esc_html( __( 'Akismet cleared this comment.', 'akismet' ) ); break; case 'wp-blacklisted': case 'wp-disallowed': $message = sprintf( /* translators: The placeholder is a WordPress PHP function name. */ esc_html( __( 'Comment was caught by %s.', 'akismet' ) ), function_exists( 'wp_check_comment_disallowed_list' ) ? 'wp_check_comment_disallowed_list' : 'wp_blacklist_check' ); break; case 'report-spam': if ( isset( $row['user'] ) ) { /* translators: The placeholder is a username. */ $message = esc_html( sprintf( __( '%s reported this comment as spam.', 'akismet' ), $row['user'] ) ); } else if ( ! $message ) { $message = esc_html( __( 'This comment was reported as spam.', 'akismet' ) ); } break; case 'report-ham': if ( isset( $row['user'] ) ) { /* translators: The placeholder is a username. */ $message = esc_html( sprintf( __( '%s reported this comment as not spam.', 'akismet' ), $row['user'] ) ); } else if ( ! $message ) { $message = esc_html( __( 'This comment was reported as not spam.', 'akismet' ) ); } break; case 'cron-retry-spam': $message = esc_html( __( 'Akismet caught this comment as spam during an automatic retry.', 'akismet' ) ); break; case 'cron-retry-ham': $message = esc_html( __( 'Akismet cleared this comment during an automatic retry.', 'akismet' ) ); break; case 'check-error': if ( isset( $row['meta'], $row['meta']['response'] ) ) { /* translators: The placeholder is an error response returned by the API server. */ $message = sprintf( esc_html( __( 'Akismet was unable to check this comment (response: %s) but will automatically retry later.', 'akismet' ) ), '' . esc_html( $row['meta']['response'] ) . '' ); } else { $message = esc_html( __( 'Akismet was unable to check this comment but will automatically retry later.', 'akismet' ) ); } break; case 'recheck-error': if ( isset( $row['meta'], $row['meta']['response'] ) ) { /* translators: The placeholder is an error response returned by the API server. */ $message = sprintf( esc_html( __( 'Akismet was unable to recheck this comment (response: %s).', 'akismet' ) ), '' . esc_html( $row['meta']['response'] ) . '' ); } else { $message = esc_html( __( 'Akismet was unable to recheck this comment.', 'akismet' ) ); } break; case 'webhook-spam': $message = esc_html( __( 'Akismet caught this comment as spam and updated its status via webhook.', 'akismet' ) ); break; case 'webhook-ham': $message = esc_html( __( 'Akismet cleared this comment and updated its status via webhook.', 'akismet' ) ); break; case 'webhook-spam-noaction': $message = esc_html( __( 'Akismet determined this comment was spam during a recheck. It did not update the comment status because it had already been modified by another user or plugin.', 'akismet' ) ); break; case 'webhook-ham-noaction': $message = esc_html( __( 'Akismet cleared this comment during a recheck. It did not update the comment status because it had already been modified by another user or plugin.', 'akismet' ) ); break; case 'akismet-skipped': $message = esc_html( __( 'This comment was not sent to Akismet when it was submitted because it was caught by something else.', 'akismet' ) ); break; case 'akismet-skipped-disallowed': $message = esc_html( __( 'This comment was not sent to Akismet when it was submitted because it was caught by the comment disallowed list.', 'akismet' ) ); break; default: if ( preg_match( '/^status-changed/', $row['event'] ) ) { // Half of these used to be saved without the dash after 'status-changed'. // See https://plugins.trac.wordpress.org/changeset/1150658/akismet/trunk $new_status = preg_replace( '/^status-changed-?/', '', $row['event'] ); /* translators: The placeholder is a short string (like 'spam' or 'approved') denoting the new comment status. */ $message = sprintf( esc_html( __( 'Comment status was changed to %s', 'akismet' ) ), '' . esc_html( $new_status ) . '' ); } else if ( preg_match( '/^status-/', $row['event'] ) ) { $new_status = preg_replace( '/^status-/', '', $row['event'] ); if ( isset( $row['user'] ) ) { /* translators: %1$s is a username; %2$s is a short string (like 'spam' or 'approved') denoting the new comment status. */ $message = sprintf( esc_html( __( '%1$s changed the comment status to %2$s.', 'akismet' ) ), $row['user'], '' . esc_html( $new_status ) . '' ); } } break; } } if ( ! empty( $message ) ) { echo '

'; if ( isset( $row['time'] ) ) { $time = gmdate( 'D d M Y @ h:i:s a', (int) $row['time'] ) . ' GMT'; /* translators: The placeholder is an amount of time, like "7 seconds" or "3 days" returned by the function human_time_diff(). */ $time_html = '' . sprintf( esc_html__( '%s ago', 'akismet' ), human_time_diff( $row['time'] ) ) . ''; echo sprintf( /* translators: %1$s is a human-readable time difference, like "3 hours ago", and %2$s is an already-translated phrase describing how a comment's status changed, like "This comment was reported as spam." */ esc_html( __( '%1$s - %2$s', 'akismet' ) ), // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped $time_html, // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped $message ); // esc_html() is done above so that we can use HTML in $message. } else { // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped echo $message; // esc_html() is done above so that we can use HTML in $message. } echo '

'; } } } else { echo '

'; echo esc_html( __( 'No comment history.', 'akismet' ) ); echo '

'; } } public static function plugin_action_links( $links, $file ) { if ( $file == plugin_basename( plugin_dir_url( __FILE__ ) . '/akismet.php' ) ) { $links[] = ''.esc_html__( 'Settings' , 'akismet').''; } return $links; } // Total spam in queue // get_option( 'akismet_spam_count' ) is the total caught ever public static function get_spam_count( $type = false ) { global $wpdb; if ( !$type ) { // total $count = wp_cache_get( 'akismet_spam_count', 'widget' ); if ( false === $count ) { $count = wp_count_comments(); $count = $count->spam; wp_cache_set( 'akismet_spam_count', $count, 'widget', 3600 ); } return $count; } elseif ( 'comments' == $type || 'comment' == $type ) { // comments $type = ''; } return (int) $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(comment_ID) FROM {$wpdb->comments} WHERE comment_approved = 'spam' AND comment_type = %s", $type ) ); } // Check connectivity between the WordPress blog and Akismet's servers. // Returns an associative array of server IP addresses, where the key is the IP address, and value is true (available) or false (unable to connect). public static function check_server_ip_connectivity() { $servers = $ips = array(); // Some web hosts may disable this function if ( function_exists( 'gethostbynamel' ) ) { $ips = gethostbynamel( 'rest.akismet.com' ); if ( $ips && is_array($ips) && count($ips) ) { $api_key = Akismet::get_api_key(); foreach ( $ips as $ip ) { $response = Akismet::verify_key( $api_key, $ip ); // even if the key is invalid, at least we know we have connectivity if ( $response == 'valid' || $response == 'invalid' ) $servers[$ip] = 'connected'; else $servers[$ip] = $response ? $response : 'unable to connect'; } } } return $servers; } // Simpler connectivity check public static function check_server_connectivity($cache_timeout = 86400) { $debug = array(); $debug[ 'PHP_VERSION' ] = PHP_VERSION; $debug[ 'WORDPRESS_VERSION' ] = $GLOBALS['wp_version']; $debug[ 'AKISMET_VERSION' ] = AKISMET_VERSION; $debug[ 'AKISMET__PLUGIN_DIR' ] = AKISMET__PLUGIN_DIR; $debug[ 'SITE_URL' ] = site_url(); $debug[ 'HOME_URL' ] = home_url(); $servers = get_option('akismet_available_servers'); if ( (time() - get_option('akismet_connectivity_time') < $cache_timeout) && $servers !== false ) { $servers = self::check_server_ip_connectivity(); update_option('akismet_available_servers', $servers); update_option('akismet_connectivity_time', time()); } if ( wp_http_supports( array( 'ssl' ) ) ) { $response = wp_remote_get( 'https://rest.akismet.com/1.1/test' ); } else { $response = wp_remote_get( 'http://rest.akismet.com/1.1/test' ); } $debug[ 'gethostbynamel' ] = function_exists('gethostbynamel') ? 'exists' : 'not here'; $debug[ 'Servers' ] = $servers; $debug[ 'Test Connection' ] = $response; Akismet::log( $debug ); if ( $response && 'connected' == wp_remote_retrieve_body( $response ) ) return true; return false; } // Check the server connectivity and store the available servers in an option. public static function get_server_connectivity($cache_timeout = 86400) { return self::check_server_connectivity( $cache_timeout ); } /** * Find out whether any comments in the Pending queue have not yet been checked by Akismet. * * @return bool */ public static function are_any_comments_waiting_to_be_checked() { return !! get_comments( array( // Exclude comments that are not pending. This would happen if someone manually approved or spammed a comment // that was waiting to be checked. The akismet_error meta entry will eventually be removed by the cron recheck job. 'status' => 'hold', // This is the commentmeta that is saved when a comment couldn't be checked. 'meta_key' => 'akismet_error', // We only need to know whether at least one comment is waiting for a check. 'number' => 1, ) ); } public static function get_page_url( $page = 'config' ) { $args = array( 'page' => 'akismet-key-config' ); if ( $page == 'stats' ) { $args = array( 'page' => 'akismet-key-config', 'view' => 'stats' ); } elseif ( $page == 'delete_key' ) { $args = array( 'page' => 'akismet-key-config', 'view' => 'start', 'action' => 'delete-key', '_wpnonce' => wp_create_nonce( self::NONCE ) ); } elseif ( $page === 'init' ) { $args = array( 'page' => 'akismet-key-config', 'view' => 'start' ); } return add_query_arg( $args, menu_page_url( 'akismet-key-config', false ) ); } public static function get_akismet_user( $api_key ) { $akismet_user = false; $request_args = array( 'key' => $api_key, 'blog' => get_option( 'home' ), ); $request_args = apply_filters( 'akismet_request_args', $request_args, 'get-subscription' ); $subscription_verification = Akismet::http_post( Akismet::build_query( $request_args ), 'get-subscription' ); if ( ! empty( $subscription_verification[1] ) ) { if ( 'invalid' !== $subscription_verification[1] ) { $akismet_user = json_decode( $subscription_verification[1] ); } } return $akismet_user; } public static function get_stats( $api_key ) { $stat_totals = array(); foreach( array( '6-months', 'all' ) as $interval ) { $request_args = array( 'blog' => get_option( 'home' ), 'key' => $api_key, 'from' => $interval, ); $request_args = apply_filters( 'akismet_request_args', $request_args, 'get-stats' ); $response = Akismet::http_post( Akismet::build_query( $request_args ), 'get-stats' ); if ( ! empty( $response[1] ) ) { $data = json_decode( $response[1] ); /* * The json decoded response should be an object. If it's not an object, something's wrong, and the data * shouldn't be added to the stats_totals array. */ if ( is_object( $data ) ) { $stat_totals[ $interval ] = $data; } } } return $stat_totals; } public static function verify_wpcom_key( $api_key, $user_id, $extra = array() ) { $request_args = array_merge( array( 'user_id' => $user_id, 'api_key' => $api_key, 'get_account_type' => 'true', ), $extra ); $request_args = apply_filters( 'akismet_request_args', $request_args, 'verify-wpcom-key' ); $akismet_account = Akismet::http_post( Akismet::build_query( $request_args ), 'verify-wpcom-key' ); if ( ! empty( $akismet_account[1] ) ) $akismet_account = json_decode( $akismet_account[1] ); Akismet::log( compact( 'akismet_account' ) ); return $akismet_account; } public static function connect_jetpack_user() { if ( $jetpack_user = self::get_jetpack_user() ) { if ( isset( $jetpack_user['user_id'] ) && isset( $jetpack_user['api_key'] ) ) { $akismet_user = self::verify_wpcom_key( $jetpack_user['api_key'], $jetpack_user['user_id'], array( 'action' => 'connect_jetpack_user' ) ); if ( is_object( $akismet_user ) ) { self::save_key( $akismet_user->api_key ); return in_array( $akismet_user->status, array( 'active', 'active-dunning', 'no-sub' ) ); } } } return false; } public static function display_alert() { Akismet::view( 'notice', array( 'type' => 'alert', 'code' => (int) get_option( 'akismet_alert_code' ), 'msg' => get_option( 'akismet_alert_msg' ) ) ); } public static function get_usage_limit_alert_data() { return array( 'type' => 'usage-limit', 'code' => (int) get_option( 'akismet_alert_code' ), 'msg' => get_option( 'akismet_alert_msg' ), 'api_calls' => get_option( 'akismet_alert_api_calls' ), 'usage_limit' => get_option( 'akismet_alert_usage_limit' ), 'upgrade_plan' => get_option( 'akismet_alert_upgrade_plan' ), 'upgrade_url' => get_option( 'akismet_alert_upgrade_url' ), 'upgrade_type' => get_option( 'akismet_alert_upgrade_type' ), 'upgrade_via_support' => get_option( 'akismet_alert_upgrade_via_support' ) === 'true', ); } public static function display_usage_limit_alert() { Akismet::view( 'notice', self::get_usage_limit_alert_data() ); } public static function display_spam_check_warning() { Akismet::fix_scheduled_recheck(); if ( wp_next_scheduled('akismet_schedule_cron_recheck') > time() && self::are_any_comments_waiting_to_be_checked() ) { /* * The 'akismet_display_cron_disabled_notice' filter can be used to control whether the WP-Cron disabled notice is displayed. */ if ( defined( 'DISABLE_WP_CRON' ) && DISABLE_WP_CRON && apply_filters( 'akismet_display_cron_disabled_notice', true ) ) { Akismet::view( 'notice', array( 'type' => 'spam-check-cron-disabled' ) ); } else { /* translators: The Akismet configuration page URL. */ $link_text = apply_filters( 'akismet_spam_check_warning_link_text', sprintf( __( 'Please check your Akismet configuration and contact your web host if problems persist.', 'akismet' ), esc_url( self::get_page_url() ) ) ); Akismet::view( 'notice', array( 'type' => 'spam-check', 'link_text' => $link_text ) ); } } } public static function display_api_key_warning() { Akismet::view( 'notice', array( 'type' => 'plugin' ) ); } public static function display_page() { if ( !Akismet::get_api_key() || ( isset( $_GET['view'] ) && $_GET['view'] == 'start' ) ) self::display_start_page(); elseif ( isset( $_GET['view'] ) && $_GET['view'] == 'stats' ) self::display_stats_page(); else self::display_configuration_page(); } public static function display_start_page() { if ( isset( $_GET['action'] ) ) { if ( $_GET['action'] == 'delete-key' ) { if ( isset( $_GET['_wpnonce'] ) && wp_verify_nonce( $_GET['_wpnonce'], self::NONCE ) ) delete_option( 'wordpress_api_key' ); } } if ( $api_key = Akismet::get_api_key() && ( empty( self::$notices['status'] ) || 'existing-key-invalid' != self::$notices['status'] ) ) { self::display_configuration_page(); return; } //the user can choose to auto connect their API key by clicking a button on the akismet done page //if jetpack, get verified api key by using connected wpcom user id //if no jetpack, get verified api key by using an akismet token $akismet_user = false; if ( isset( $_GET['token'] ) && preg_match('/^(\d+)-[0-9a-f]{20}$/', $_GET['token'] ) ) $akismet_user = self::verify_wpcom_key( '', '', array( 'token' => $_GET['token'] ) ); elseif ( $jetpack_user = self::get_jetpack_user() ) $akismet_user = self::verify_wpcom_key( $jetpack_user['api_key'], $jetpack_user['user_id'] ); if ( isset( $_GET['action'] ) ) { if ( $_GET['action'] == 'save-key' ) { if ( is_object( $akismet_user ) ) { self::save_key( $akismet_user->api_key ); self::display_configuration_page(); return; } } } Akismet::view( 'start', compact( 'akismet_user' ) ); /* // To see all variants when testing. $akismet_user->status = 'no-sub'; Akismet::view( 'start', compact( 'akismet_user' ) ); $akismet_user->status = 'cancelled'; Akismet::view( 'start', compact( 'akismet_user' ) ); $akismet_user->status = 'suspended'; Akismet::view( 'start', compact( 'akismet_user' ) ); $akismet_user->status = 'other'; Akismet::view( 'start', compact( 'akismet_user' ) ); $akismet_user = false; */ } public static function display_stats_page() { Akismet::view( 'stats' ); } public static function display_configuration_page() { $api_key = Akismet::get_api_key(); $akismet_user = self::get_akismet_user( $api_key ); if ( ! $akismet_user ) { // This could happen if the user's key became invalid after it was previously valid and successfully set up. self::$notices['status'] = 'existing-key-invalid'; self::display_start_page(); return; } $stat_totals = self::get_stats( $api_key ); // If unset, create the new strictness option using the old discard option to determine its default. // If the old option wasn't set, default to discarding the blatant spam. if ( get_option( 'akismet_strictness' ) === false ) { add_option( 'akismet_strictness', ( get_option( 'akismet_discard_month' ) === 'false' ? '0' : '1' ) ); } // Sync the local "Total spam blocked" count with the authoritative count from the server. if ( isset( $stat_totals['all'], $stat_totals['all']->spam ) ) { update_option( 'akismet_spam_count', $stat_totals['all']->spam ); } $notices = array(); if ( empty( self::$notices ) ) { if ( ! empty( $stat_totals['all'] ) && isset( $stat_totals['all']->time_saved ) && $akismet_user->status == 'active' && $akismet_user->account_type == 'free-api-key' ) { $time_saved = false; if ( $stat_totals['all']->time_saved > 1800 ) { $total_in_minutes = round( $stat_totals['all']->time_saved / 60 ); $total_in_hours = round( $total_in_minutes / 60 ); $total_in_days = round( $total_in_hours / 8 ); $cleaning_up = __( 'Cleaning up spam takes time.' , 'akismet'); if ( $total_in_days > 1 ) $time_saved = $cleaning_up . ' ' . sprintf( _n( 'Akismet has saved you %s day!', 'Akismet has saved you %s days!', $total_in_days, 'akismet' ), number_format_i18n( $total_in_days ) ); elseif ( $total_in_hours > 1 ) $time_saved = $cleaning_up . ' ' . sprintf( _n( 'Akismet has saved you %d hour!', 'Akismet has saved you %d hours!', $total_in_hours, 'akismet' ), $total_in_hours ); elseif ( $total_in_minutes >= 30 ) $time_saved = $cleaning_up . ' ' . sprintf( _n( 'Akismet has saved you %d minute!', 'Akismet has saved you %d minutes!', $total_in_minutes, 'akismet' ), $total_in_minutes ); } $notices[] = array( 'type' => 'active-notice', 'time_saved' => $time_saved ); } } if ( !isset( self::$notices['status'] ) && in_array( $akismet_user->status, array( 'cancelled', 'suspended', 'missing', 'no-sub' ) ) ) { $notices[] = array( 'type' => $akismet_user->status ); } $alert_code = get_option( 'akismet_alert_code' ); if ( isset( Akismet::$limit_notices[ $alert_code ] ) ) { $notices[] = self::get_usage_limit_alert_data(); } elseif ( $alert_code > 0 ) { $notices[] = array( 'type' => 'alert', 'code' => (int) get_option( 'akismet_alert_code' ), 'msg' => get_option( 'akismet_alert_msg' ), ); } /* * To see all variants when testing. * * You may also want to comment out the akismet_view_arguments filter in Akismet::view() * to ensure that you can see all of the notices (e.g. suspended, active-notice). */ // $notices[] = array( 'type' => 'active-notice', 'time_saved' => 'Cleaning up spam takes time. Akismet has saved you 1 minute!' ); // $notices[] = array( 'type' => 'plugin' ); // $notices[] = array( 'type' => 'notice', 'notice_header' => 'This is the notice header.', 'notice_text' => 'This is the notice text.' ); // $notices[] = array( 'type' => 'missing-functions' ); // $notices[] = array( 'type' => 'servers-be-down' ); // $notices[] = array( 'type' => 'active-dunning' ); // $notices[] = array( 'type' => 'cancelled' ); // $notices[] = array( 'type' => 'suspended' ); // $notices[] = array( 'type' => 'missing' ); // $notices[] = array( 'type' => 'no-sub' ); // $notices[] = array( 'type' => 'new-key-valid' ); // $notices[] = array( 'type' => 'new-key-invalid' ); // $notices[] = array( 'type' => 'existing-key-invalid' ); // $notices[] = array( 'type' => 'new-key-failed' ); // $notices[] = array( 'type' => 'usage-limit', 'api_calls' => '15000', 'usage_limit' => '10000', 'upgrade_plan' => 'Enterprise', 'upgrade_url' => 'https://akismet.com/account/', 'code' => 10502 ); // $notices[] = array( 'type' => 'spam-check', 'link_text' => 'Link text.' ); // $notices[] = array( 'type' => 'spam-check-cron-disabled' ); // $notices[] = array( 'type' => 'alert', 'code' => 123 ); Akismet::log( compact( 'stat_totals', 'akismet_user' ) ); Akismet::view( 'config', compact( 'api_key', 'akismet_user', 'stat_totals', 'notices' ) ); } public static function display_notice() { global $hook_suffix; if ( in_array( $hook_suffix, array( 'jetpack_page_akismet-key-config', 'settings_page_akismet-key-config' ) ) ) { // This page manages the notices and puts them inline where they make sense. return; } // To see notice variants while testing. // Akismet::view( 'notice', array( 'type' => 'spam-check-cron-disabled' ) ); // Akismet::view( 'notice', array( 'type' => 'spam-check' ) ); // Akismet::view( 'notice', array( 'type' => 'alert', 'code' => 123, 'msg' => 'Message' ) ); if ( in_array( $hook_suffix, array( 'edit-comments.php' ) ) && (int) get_option( 'akismet_alert_code' ) > 0 ) { Akismet::verify_key( Akismet::get_api_key() ); //verify that the key is still in alert state $alert_code = get_option( 'akismet_alert_code' ); if ( isset( Akismet::$limit_notices[ $alert_code ] ) ) { self::display_usage_limit_alert(); } elseif ( $alert_code > 0 ) { self::display_alert(); } } elseif ( ( 'plugins.php' === $hook_suffix || 'edit-comments.php' === $hook_suffix ) && ! Akismet::get_api_key() ) { // Show the "Set Up Akismet" banner on the comments and plugin pages if no API key has been set. self::display_api_key_warning(); } elseif ( $hook_suffix == 'edit-comments.php' && wp_next_scheduled( 'akismet_schedule_cron_recheck' ) ) { self::display_spam_check_warning(); } if ( isset( $_GET['akismet_recheck_complete'] ) ) { $recheck_count = (int) $_GET['recheck_count']; $spam_count = (int) $_GET['spam_count']; if ( $recheck_count === 0 ) { $message = __( 'There were no comments to check. Akismet will only check comments awaiting moderation.', 'akismet' ); } else { $message = sprintf( _n( 'Akismet checked %s comment.', 'Akismet checked %s comments.', $recheck_count, 'akismet' ), number_format( $recheck_count ) ); $message .= ' '; if ( $spam_count === 0 ) { $message .= __( 'No comments were caught as spam.', 'akismet' ); } else { $message .= sprintf( _n( '%s comment was caught as spam.', '%s comments were caught as spam.', $spam_count, 'akismet' ), number_format( $spam_count ) ); } } echo '

' . esc_html( $message ) . '

'; } else if ( isset( $_GET['akismet_recheck_error'] ) ) { echo '

' . esc_html( __( 'Akismet could not recheck your comments for spam.', 'akismet' ) ) . '

'; } } public static function display_status() { if ( ! self::get_server_connectivity() ) { Akismet::view( 'notice', array( 'type' => 'servers-be-down' ) ); } else if ( ! empty( self::$notices ) ) { foreach ( self::$notices as $index => $type ) { if ( is_object( $type ) ) { $notice_header = $notice_text = ''; if ( property_exists( $type, 'notice_header' ) ) { $notice_header = wp_kses( $type->notice_header, self::$allowed ); } if ( property_exists( $type, 'notice_text' ) ) { $notice_text = wp_kses( $type->notice_text, self::$allowed ); } if ( property_exists( $type, 'status' ) ) { $type = wp_kses( $type->status, self::$allowed ); Akismet::view( 'notice', compact( 'type', 'notice_header', 'notice_text' ) ); unset( self::$notices[ $index ] ); } } else { Akismet::view( 'notice', compact( 'type' ) ); unset( self::$notices[ $index ] ); } } } } private static function get_jetpack_user() { if ( !class_exists('Jetpack') ) return false; if ( defined( 'JETPACK__VERSION' ) && version_compare( JETPACK__VERSION, '7.7', '<' ) ) { // For version of Jetpack prior to 7.7. Jetpack::load_xml_rpc_client(); } $xml = new Jetpack_IXR_ClientMulticall( array( 'user_id' => get_current_user_id() ) ); $xml->addCall( 'wpcom.getUserID' ); $xml->addCall( 'akismet.getAPIKey' ); $xml->query(); Akismet::log( compact( 'xml' ) ); if ( !$xml->isError() ) { $responses = $xml->getResponse(); if ( ( is_countable( $responses ) ? count( $responses ) : 0 ) > 1 ) { // Due to a quirk in how Jetpack does multi-calls, the response order // can't be trusted to match the call order. It's a good thing our // return values can be mostly differentiated from each other. $first_response_value = array_shift( $responses[0] ); $second_response_value = array_shift( $responses[1] ); // If WPCOM ever reaches 100 billion users, this will fail. :-) if ( preg_match( '/^[a-f0-9]{12}$/i', $first_response_value ) ) { $api_key = $first_response_value; $user_id = (int) $second_response_value; } else { $api_key = $second_response_value; $user_id = (int) $first_response_value; } return compact( 'api_key', 'user_id' ); } } return false; } /** * Some commentmeta isn't useful in an export file. Suppress it (when supported). * * @param bool $exclude * @param string $key The meta key * @param object $meta The meta object * @return bool Whether to exclude this meta entry from the export. */ public static function exclude_commentmeta_from_export( $exclude, $key, $meta ) { if ( in_array( $key, array( 'akismet_as_submitted', 'akismet_rechecking', 'akismet_delayed_moderation_email' ) ) ) { return true; } return $exclude; } /** * When Akismet is active, remove the "Activate Akismet" step from the plugin description. */ public static function modify_plugin_description( $all_plugins ) { if ( isset( $all_plugins['akismet/akismet.php'] ) ) { if ( Akismet::get_api_key() ) { $all_plugins['akismet/akismet.php']['Description'] = __( 'Used by millions, Akismet is quite possibly the best way in the world to protect your blog from spam. Your site is fully configured and being protected, even while you sleep.', 'akismet' ); } else { $all_plugins['akismet/akismet.php']['Description'] = __( 'Used by millions, Akismet is quite possibly the best way in the world to protect your blog from spam. It keeps your site protected even while you sleep. To get started, just go to your Akismet Settings page to set up your API key.', 'akismet' ); } } return $all_plugins; } private static function set_form_privacy_notice_option( $state ) { if ( in_array( $state, array( 'display', 'hide' ) ) ) { update_option( 'akismet_comment_form_privacy_notice', $state ); } } public static function register_personal_data_eraser( $erasers ) { $erasers['akismet'] = array( 'eraser_friendly_name' => __( 'Akismet', 'akismet' ), 'callback' => array( 'Akismet_Admin', 'erase_personal_data' ), ); return $erasers; } /** * When a user requests that their personal data be removed, Akismet has a duty to discard * any personal data we store outside of the comment itself. Right now, that is limited * to the copy of the comment we store in the akismet_as_submitted commentmeta. * * FWIW, this information would be automatically deleted after 15 days. * * @param $email_address string The email address of the user who has requested erasure. * @param $page int This function can (and will) be called multiple times to prevent timeouts, * so this argument is used for pagination. * @return array * @see https://developer.wordpress.org/plugins/privacy/adding-the-personal-data-eraser-to-your-plugin/ */ public static function erase_personal_data( $email_address, $page = 1 ) { $items_removed = false; $number = 50; $page = (int) $page; $comments = get_comments( array( 'author_email' => $email_address, 'number' => $number, 'paged' => $page, 'order_by' => 'comment_ID', 'order' => 'ASC', ) ); foreach ( (array) $comments as $comment ) { $comment_as_submitted = get_comment_meta( $comment->comment_ID, 'akismet_as_submitted', true ); if ( $comment_as_submitted ) { delete_comment_meta( $comment->comment_ID, 'akismet_as_submitted' ); $items_removed = true; } } // Tell core if we have more comments to work on still $done = ( is_countable( $comments ) ? count( $comments ) : 0 ) < $number; return array( 'items_removed' => $items_removed, 'items_retained' => false, // always false in this example 'messages' => array(), // no messages in this example 'done' => $done, ); } /** * Return an array of HTML elements that are allowed in a notice. * * @return array */ public static function get_notice_kses_allowed_elements() { return self::$allowed; } /** * Return a version to append to the URL of an asset file (e.g. CSS and images). * * @param string $relative_path Relative path to asset file * @return string */ public static function get_asset_file_version( $relative_path ) { $full_path = AKISMET__PLUGIN_DIR . $relative_path; // If the AKISMET_VERSION contains a lower-case letter, it's a development version (e.g. 5.3.1a2). // Use the file modified time in development. if ( preg_match( '/[a-z]/', AKISMET_VERSION ) && file_exists( $full_path ) ) { return filemtime( $full_path ); } // Otherwise, use the AKISMET_VERSION. return AKISMET_VERSION; } } plugins/akismet/class.akismet-cli.php000064400000011245147176754540013730 0ustar00... * : The ID(s) of the comment(s) to check. * * [--noaction] * : Don't change the status of the comment. Just report what Akismet thinks it is. * * ## EXAMPLES * * wp akismet check 12345 * * @alias comment-check */ public function check( $args, $assoc_args ) { foreach ( $args as $comment_id ) { if ( isset( $assoc_args['noaction'] ) ) { // Check the comment, but don't reclassify it. $api_response = Akismet::check_db_comment( $comment_id, 'wp-cli' ); } else { $api_response = Akismet::recheck_comment( $comment_id, 'wp-cli' ); } if ( 'true' === $api_response ) { WP_CLI::line( sprintf( __( "Comment #%d is spam.", 'akismet' ), $comment_id ) ); } else if ( 'false' === $api_response ) { WP_CLI::line( sprintf( __( "Comment #%d is not spam.", 'akismet' ), $comment_id ) ); } else { if ( false === $api_response ) { WP_CLI::error( __( "Failed to connect to Akismet.", 'akismet' ) ); } else if ( is_wp_error( $api_response ) ) { WP_CLI::warning( sprintf( __( "Comment #%d could not be checked.", 'akismet' ), $comment_id ) ); } } } } /** * Recheck all comments in the Pending queue. * * ## EXAMPLES * * wp akismet recheck_queue * * @alias recheck-queue */ public function recheck_queue() { $batch_size = 100; $start = 0; $total_counts = array(); do { $result_counts = Akismet_Admin::recheck_queue_portion( $start, $batch_size ); if ( $result_counts['processed'] > 0 ) { foreach ( $result_counts as $key => $count ) { if ( ! isset( $total_counts[ $key ] ) ) { $total_counts[ $key ] = $count; } else { $total_counts[ $key ] += $count; } } $start += $batch_size; $start -= $result_counts['spam']; // These comments will have been removed from the queue. } } while ( $result_counts['processed'] > 0 ); WP_CLI::line( sprintf( _n( "Processed %d comment.", "Processed %d comments.", $total_counts['processed'], 'akismet' ), number_format( $total_counts['processed'] ) ) ); WP_CLI::line( sprintf( _n( "%d comment moved to Spam.", "%d comments moved to Spam.", $total_counts['spam'], 'akismet' ), number_format( $total_counts['spam'] ) ) ); if ( $total_counts['error'] ) { WP_CLI::line( sprintf( _n( "%d comment could not be checked.", "%d comments could not be checked.", $total_counts['error'], 'akismet' ), number_format( $total_counts['error'] ) ) ); } } /** * Fetches stats from the Akismet API. * * ## OPTIONS * * [] * : The time period for which to retrieve stats. * --- * default: all * options: * - days * - months * - all * --- * * [--format=] * : Allows overriding the output of the command when listing connections. * --- * default: table * options: * - table * - json * - csv * - yaml * - count * --- * * [--summary] * : When set, will display a summary of the stats. * * ## EXAMPLES * * wp akismet stats * wp akismet stats all * wp akismet stats days * wp akismet stats months * wp akismet stats all --summary */ public function stats( $args, $assoc_args ) { $api_key = Akismet::get_api_key(); if ( empty( $api_key ) ) { WP_CLI::error( __( 'API key must be set to fetch stats.', 'akismet' ) ); } switch ( $args[0] ) { case 'days': $interval = '60-days'; break; case 'months': $interval = '6-months'; break; default: $interval = 'all'; break; } $request_args = array( 'blog' => get_option( 'home' ), 'key' => $api_key, 'from' => $interval, ); $request_args = apply_filters( 'akismet_request_args', $request_args, 'get-stats' ); $response = Akismet::http_post( Akismet::build_query( $request_args ), 'get-stats' ); if ( empty( $response[1] ) ) { WP_CLI::error( __( 'Currently unable to fetch stats. Please try again.', 'akismet' ) ); } $response_body = json_decode( $response[1], true ); if ( is_null( $response_body ) ) { WP_CLI::error( __( 'Stats response could not be decoded.', 'akismet' ) ); } if ( isset( $assoc_args['summary'] ) ) { $keys = array( 'spam', 'ham', 'missed_spam', 'false_positives', 'accuracy', 'time_saved', ); WP_CLI\Utils\format_items( $assoc_args['format'], array( $response_body ), $keys ); } else { $stats = $response_body['breakdown']; WP_CLI\Utils\format_items( $assoc_args['format'], $stats, array_keys( end( $stats ) ) ); } } }plugins/akismet/class.akismet-widget.php000064400000006105147176754540014443 0ustar00 __( 'Display the number of spam comments Akismet has caught' , 'akismet') ) ); if ( is_active_widget( false, false, $this->id_base ) ) { add_action( 'wp_head', array( $this, 'css' ) ); } } function css() { ?>

'FIRST_MONTH_OVER_LIMIT', 10502 => 'SECOND_MONTH_OVER_LIMIT', 10504 => 'THIRD_MONTH_APPROACHING_LIMIT', 10508 => 'THIRD_MONTH_OVER_LIMIT', 10516 => 'FOUR_PLUS_MONTHS_OVER_LIMIT', ); private static $last_comment = ''; private static $initiated = false; private static $prevent_moderation_email_for_these_comments = array(); private static $last_comment_result = null; private static $comment_as_submitted_allowed_keys = array( 'blog' => '', 'blog_charset' => '', 'blog_lang' => '', 'blog_ua' => '', 'comment_agent' => '', 'comment_author' => '', 'comment_author_IP' => '', 'comment_author_email' => '', 'comment_author_url' => '', 'comment_content' => '', 'comment_date_gmt' => '', 'comment_tags' => '', 'comment_type' => '', 'guid' => '', 'is_test' => '', 'permalink' => '', 'reporter' => '', 'site_domain' => '', 'submit_referer' => '', 'submit_uri' => '', 'user_ID' => '', 'user_agent' => '', 'user_id' => '', 'user_ip' => '' ); public static function init() { if ( ! self::$initiated ) { self::init_hooks(); } } /** * Initializes WordPress hooks */ private static function init_hooks() { self::$initiated = true; add_action( 'wp_insert_comment', array( 'Akismet', 'auto_check_update_meta' ), 10, 2 ); add_filter( 'preprocess_comment', array( 'Akismet', 'auto_check_comment' ), 1 ); add_filter( 'rest_pre_insert_comment', array( 'Akismet', 'rest_auto_check_comment' ), 1 ); add_action( 'comment_form', array( 'Akismet', 'load_form_js' ) ); add_action( 'do_shortcode_tag', array( 'Akismet', 'load_form_js_via_filter' ), 10, 4 ); add_action( 'akismet_scheduled_delete', array( 'Akismet', 'delete_old_comments' ) ); add_action( 'akismet_scheduled_delete', array( 'Akismet', 'delete_old_comments_meta' ) ); add_action( 'akismet_scheduled_delete', array( 'Akismet', 'delete_orphaned_commentmeta' ) ); add_action( 'akismet_schedule_cron_recheck', array( 'Akismet', 'cron_recheck' ) ); add_action( 'comment_form', array( 'Akismet', 'add_comment_nonce' ), 1 ); add_action( 'comment_form', array( 'Akismet', 'output_custom_form_fields' ) ); add_filter( 'script_loader_tag', array( 'Akismet', 'set_form_js_async' ), 10, 3 ); add_filter( 'comment_moderation_recipients', array( 'Akismet', 'disable_moderation_emails_if_unreachable' ), 1000, 2 ); add_filter( 'pre_comment_approved', array( 'Akismet', 'last_comment_status' ), 10, 2 ); add_action( 'transition_comment_status', array( 'Akismet', 'transition_comment_status' ), 10, 3 ); // Run this early in the pingback call, before doing a remote fetch of the source uri add_action( 'xmlrpc_call', array( 'Akismet', 'pre_check_pingback' ), 10, 3 ); // Jetpack compatibility add_filter( 'jetpack_options_whitelist', array( 'Akismet', 'add_to_jetpack_options_whitelist' ) ); add_filter( 'jetpack_contact_form_html', array( 'Akismet', 'inject_custom_form_fields' ) ); add_filter( 'jetpack_contact_form_akismet_values', array( 'Akismet', 'prepare_custom_form_values' ) ); // Gravity Forms add_filter( 'gform_get_form_filter', array( 'Akismet', 'inject_custom_form_fields' ) ); add_filter( 'gform_akismet_fields', array( 'Akismet', 'prepare_custom_form_values' ) ); // Contact Form 7 add_filter( 'wpcf7_form_elements', array( 'Akismet', 'append_custom_form_fields' ) ); add_filter( 'wpcf7_akismet_parameters', array( 'Akismet', 'prepare_custom_form_values' ) ); // Formidable Forms add_filter( 'frm_filter_final_form', array( 'Akismet', 'inject_custom_form_fields' ) ); add_filter( 'frm_akismet_values', array( 'Akismet', 'prepare_custom_form_values' ) ); // Fluent Forms /* * The Fluent Forms hook names were updated in version 5.0.0. The last version that supported * the original hook names was 4.3.25, and version 4.3.25 was tested up to WordPress version 6.1. * * The legacy hooks are fired before the new hooks. See * https://github.com/fluentform/fluentform/commit/cc45341afcae400f217470a7bbfb15efdd80454f * * The legacy Fluent Forms hooks will be removed when Akismet no longer supports WordPress version 6.1. * This will provide compatibility with previous versions of Fluent Forms for a reasonable amount of time. */ add_filter( 'fluentform_form_element_start', array( 'Akismet', 'output_custom_form_fields' ) ); add_filter( 'fluentform_akismet_fields', array( 'Akismet', 'prepare_custom_form_values' ), 10, 2 ); // Current Fluent Form hooks. add_filter( 'fluentform/form_element_start', array( 'Akismet', 'output_custom_form_fields' ) ); add_filter( 'fluentform/akismet_fields', array( 'Akismet', 'prepare_custom_form_values' ), 10, 2 ); add_action( 'update_option_wordpress_api_key', array( 'Akismet', 'updated_option' ), 10, 2 ); add_action( 'add_option_wordpress_api_key', array( 'Akismet', 'added_option' ), 10, 2 ); add_action( 'comment_form_after', array( 'Akismet', 'display_comment_form_privacy_notice' ) ); } public static function get_api_key() { return apply_filters( 'akismet_get_api_key', defined('WPCOM_API_KEY') ? constant('WPCOM_API_KEY') : get_option('wordpress_api_key') ); } /** * Exchange the API key for a token that can only be used to access stats pages. * * @return string */ public static function get_access_token() { static $access_token = null; if ( is_null( $access_token ) ) { $request_args = array( 'api_key' => self::get_api_key() ); $request_args = apply_filters( 'akismet_request_args', $request_args, 'token' ); $response = self::http_post( self::build_query( $request_args ), 'token' ); $access_token = $response[1]; } return $access_token; } public static function check_key_status( $key, $ip = null ) { $request_args = array( 'key' => $key, 'blog' => get_option( 'home' ), ); $request_args = apply_filters( 'akismet_request_args', $request_args, 'verify-key' ); return self::http_post( self::build_query( $request_args ), 'verify-key', $ip ); } public static function verify_key( $key, $ip = null ) { // Shortcut for obviously invalid keys. if ( strlen( $key ) != 12 ) { return 'invalid'; } $response = self::check_key_status( $key, $ip ); if ( $response[1] != 'valid' && $response[1] != 'invalid' ) return 'failed'; return $response[1]; } public static function deactivate_key( $key ) { $request_args = array( 'key' => $key, 'blog' => get_option( 'home' ), ); $request_args = apply_filters( 'akismet_request_args', $request_args, 'deactivate' ); $response = self::http_post( self::build_query( $request_args ), 'deactivate' ); if ( $response[1] != 'deactivated' ) return 'failed'; return $response[1]; } /** * Add the akismet option to the Jetpack options management whitelist. * * @param array $options The list of whitelisted option names. * @return array The updated whitelist */ public static function add_to_jetpack_options_whitelist( $options ) { $options[] = 'wordpress_api_key'; return $options; } /** * When the akismet option is updated, run the registration call. * * This should only be run when the option is updated from the Jetpack/WP.com * API call, and only if the new key is different than the old key. * * @param mixed $old_value The old option value. * @param mixed $value The new option value. */ public static function updated_option( $old_value, $value ) { // Not an API call if ( ! class_exists( 'WPCOM_JSON_API_Update_Option_Endpoint' ) ) { return; } // Only run the registration if the old key is different. if ( $old_value !== $value ) { self::verify_key( $value ); } } /** * Treat the creation of an API key the same as updating the API key to a new value. * * @param mixed $option_name Will always be "wordpress_api_key", until something else hooks in here. * @param mixed $value The option value. */ public static function added_option( $option_name, $value ) { if ( 'wordpress_api_key' === $option_name ) { return self::updated_option( '', $value ); } } public static function rest_auto_check_comment( $commentdata ) { return self::auto_check_comment( $commentdata, 'rest_api' ); } /** * Check a comment for spam. * * @param array $commentdata * @param string $context What kind of request triggered this comment check? Possible values are 'default', 'rest_api', and 'xml-rpc'. * @return array|WP_Error Either the $commentdata array with additional entries related to its spam status * or a WP_Error, if it's a REST API request and the comment should be discarded. */ public static function auto_check_comment( $commentdata, $context = 'default' ) { // If no key is configured, then there's no point in doing any of this. if ( ! self::get_api_key() ) { return $commentdata; } self::$last_comment_result = null; // Skip the Akismet check if the comment matches the Disallowed Keys list. if ( function_exists( 'wp_check_comment_disallowed_list' ) ) { $comment_author = isset( $commentdata['comment_author'] ) ? $commentdata['comment_author'] : ''; $comment_author_email = isset( $commentdata['comment_author_email'] ) ? $commentdata['comment_author_email'] : ''; $comment_author_url = isset( $commentdata['comment_author_url'] ) ? $commentdata['comment_author_url'] : ''; $comment_content = isset( $commentdata['comment_content'] ) ? $commentdata['comment_content'] : ''; $comment_author_ip = isset( $commentdata['comment_author_IP'] ) ? $commentdata['comment_author_IP'] : ''; $comment_agent = isset( $commentdata['comment_agent'] ) ? $commentdata['comment_agent'] : ''; if ( wp_check_comment_disallowed_list( $comment_author, $comment_author_email, $comment_author_url, $comment_content, $comment_author_ip, $comment_agent ) ) { self::set_last_comment( $commentdata ); return $commentdata; } } $comment = $commentdata; $comment['user_ip'] = self::get_ip_address(); $comment['user_agent'] = self::get_user_agent(); $comment['referrer'] = self::get_referer(); $comment['blog'] = get_option( 'home' ); $comment['blog_lang'] = get_locale(); $comment['blog_charset'] = get_option('blog_charset'); $comment['permalink'] = get_permalink( $comment['comment_post_ID'] ); if ( ! empty( $comment['user_ID'] ) ) { $comment['user_role'] = Akismet::get_user_roles( $comment['user_ID'] ); } /** See filter documentation in init_hooks(). */ $akismet_nonce_option = apply_filters( 'akismet_comment_nonce', get_option( 'akismet_comment_nonce' ) ); $comment['akismet_comment_nonce'] = 'inactive'; if ( $akismet_nonce_option == 'true' || $akismet_nonce_option == '' ) { $comment['akismet_comment_nonce'] = 'failed'; if ( isset( $_POST['akismet_comment_nonce'] ) && wp_verify_nonce( $_POST['akismet_comment_nonce'], 'akismet_comment_nonce_' . $comment['comment_post_ID'] ) ) $comment['akismet_comment_nonce'] = 'passed'; // comment reply in wp-admin if ( isset( $_POST['_ajax_nonce-replyto-comment'] ) && check_ajax_referer( 'replyto-comment', '_ajax_nonce-replyto-comment' ) ) $comment['akismet_comment_nonce'] = 'passed'; } if ( self::is_test_mode() ) $comment['is_test'] = 'true'; foreach( $_POST as $key => $value ) { if ( is_string( $value ) ) $comment["POST_{$key}"] = $value; } foreach ( $_SERVER as $key => $value ) { if ( ! is_string( $value ) ) { continue; } if ( preg_match( "/^HTTP_COOKIE/", $key ) ) { continue; } // Send any potentially useful $_SERVER vars, but avoid sending junk we don't need. if ( preg_match( "/^(HTTP_|REMOTE_ADDR|REQUEST_URI|DOCUMENT_URI)/", $key ) ) { $comment[ "$key" ] = $value; } } $post = get_post( $comment['comment_post_ID'] ); if ( ! is_null( $post ) ) { // $post can technically be null, although in the past, it's always been an indicator of another plugin interfering. $comment[ 'comment_post_modified_gmt' ] = $post->post_modified_gmt; // Tags and categories are important context in which to consider the comment. $comment['comment_context'] = array(); $tag_names = wp_get_post_tags( $post->ID, array( 'fields' => 'names' ) ); if ( $tag_names && ! is_wp_error( $tag_names ) ) { foreach ( $tag_names as $tag_name ) { $comment['comment_context'][] = $tag_name; } } $category_names = wp_get_post_categories( $post->ID, array( 'fields' => 'names' ) ); if ( $category_names && ! is_wp_error( $category_names ) ) { foreach ( $category_names as $category_name ) { $comment['comment_context'][] = $category_name; } } } /** * Filter the data that is used to generate the request body for the API call. * * @since 5.3.1 * * @param array $comment An array of request data. * @param string $endpoint The API endpoint being requested. */ $comment = apply_filters( 'akismet_request_args', $comment, 'comment-check' ); $response = self::http_post( self::build_query( $comment ), 'comment-check' ); do_action( 'akismet_comment_check_response', $response ); $commentdata['comment_as_submitted'] = array_intersect_key( $comment, self::$comment_as_submitted_allowed_keys ); // Also include any form fields we inject into the comment form, like ak_js foreach ( $_POST as $key => $value ) { if ( is_string( $value ) && strpos( $key, 'ak_' ) === 0 ) { $commentdata['comment_as_submitted'][ 'POST_' . $key ] = $value; } } $commentdata['akismet_result'] = $response[1]; if ( isset( $response[0]['x-akismet-pro-tip'] ) ) $commentdata['akismet_pro_tip'] = $response[0]['x-akismet-pro-tip']; if ( isset( $response[0]['x-akismet-guid'] ) ) { $commentdata['akismet_guid'] = $response[0]['x-akismet-guid']; } if ( isset( $response[0]['x-akismet-error'] ) ) { // An error occurred that we anticipated (like a suspended key) and want the user to act on. // Send to moderation. self::$last_comment_result = '0'; } else if ( 'true' == $response[1] ) { // akismet_spam_count will be incremented later by comment_is_spam() self::$last_comment_result = 'spam'; $discard = ( isset( $commentdata['akismet_pro_tip'] ) && $commentdata['akismet_pro_tip'] === 'discard' && self::allow_discard() ); do_action( 'akismet_spam_caught', $discard ); if ( $discard ) { // The spam is obvious, so we're bailing out early. // akismet_result_spam() won't be called so bump the counter here if ( $incr = apply_filters( 'akismet_spam_count_incr', 1 ) ) { update_option( 'akismet_spam_count', get_option( 'akismet_spam_count' ) + $incr ); } if ( 'rest_api' === $context ) { return new WP_Error( 'akismet_rest_comment_discarded', __( 'Comment discarded.', 'akismet' ) ); } else if ( 'xml-rpc' === $context ) { // If this is a pingback that we're pre-checking, the discard behavior is the same as the normal spam response behavior. return $commentdata; } else { // Redirect back to the previous page, or failing that, the post permalink, or failing that, the homepage of the blog. $redirect_to = isset( $_SERVER['HTTP_REFERER'] ) ? $_SERVER['HTTP_REFERER'] : ( $post ? get_permalink( $post ) : home_url() ); wp_safe_redirect( esc_url_raw( $redirect_to ) ); die(); } } else if ( 'rest_api' === $context ) { // The way the REST API structures its calls, we can set the comment_approved value right away. $commentdata['comment_approved'] = 'spam'; } } // if the response is neither true nor false, hold the comment for moderation and schedule a recheck if ( 'true' != $response[1] && 'false' != $response[1] ) { if ( !current_user_can('moderate_comments') ) { // Comment status should be moderated self::$last_comment_result = '0'; } if ( ! wp_next_scheduled( 'akismet_schedule_cron_recheck' ) ) { wp_schedule_single_event( time() + 1200, 'akismet_schedule_cron_recheck' ); do_action( 'akismet_scheduled_recheck', 'invalid-response-' . $response[1] ); } self::$prevent_moderation_email_for_these_comments[] = $commentdata; } // Delete old comments daily if ( ! wp_next_scheduled( 'akismet_scheduled_delete' ) ) { wp_schedule_event( time(), 'daily', 'akismet_scheduled_delete' ); } self::set_last_comment( $commentdata ); self::fix_scheduled_recheck(); return $commentdata; } public static function get_last_comment() { return self::$last_comment; } public static function set_last_comment( $comment ) { if ( is_null( $comment ) ) { self::$last_comment = null; } else { // We filter it here so that it matches the filtered comment data that we'll have to compare against later. // wp_filter_comment expects comment_author_IP self::$last_comment = wp_filter_comment( array_merge( array( 'comment_author_IP' => self::get_ip_address() ), $comment ) ); } } // this fires on wp_insert_comment. we can't update comment_meta when auto_check_comment() runs // because we don't know the comment ID at that point. public static function auto_check_update_meta( $id, $comment ) { // wp_insert_comment() might be called in other contexts, so make sure this is the same comment // as was checked by auto_check_comment if ( is_object( $comment ) && !empty( self::$last_comment ) && is_array( self::$last_comment ) ) { if ( self::matches_last_comment( $comment ) ) { load_plugin_textdomain( 'akismet' ); // normal result: true or false if ( isset( self::$last_comment['akismet_result'] ) && self::$last_comment['akismet_result'] == 'true' ) { update_comment_meta( $comment->comment_ID, 'akismet_result', 'true' ); self::update_comment_history( $comment->comment_ID, '', 'check-spam' ); if ( $comment->comment_approved != 'spam' ) { self::update_comment_history( $comment->comment_ID, '', 'status-changed-' . $comment->comment_approved ); } } elseif ( isset( self::$last_comment['akismet_result'] ) && self::$last_comment['akismet_result'] == 'false' ) { update_comment_meta( $comment->comment_ID, 'akismet_result', 'false' ); self::update_comment_history( $comment->comment_ID, '', 'check-ham' ); // Status could be spam or trash, depending on the WP version and whether this change applies: // https://core.trac.wordpress.org/changeset/34726 if ( $comment->comment_approved == 'spam' || $comment->comment_approved == 'trash' ) { if ( function_exists( 'wp_check_comment_disallowed_list' ) ) { if ( wp_check_comment_disallowed_list( $comment->comment_author, $comment->comment_author_email, $comment->comment_author_url, $comment->comment_content, $comment->comment_author_IP, $comment->comment_agent ) ) { self::update_comment_history( $comment->comment_ID, '', 'wp-disallowed' ); } else { self::update_comment_history( $comment->comment_ID, '', 'status-changed-' . $comment->comment_approved ); } } else { self::update_comment_history( $comment->comment_ID, '', 'status-changed-' . $comment->comment_approved ); } } } elseif ( ! isset( self::$last_comment['akismet_result'] ) ) { // akismet_result isn't set, so the comment wasn't sent to Akismet. update_comment_meta( $comment->comment_ID, 'akismet_skipped', 'true' ); $caught_by_disallowed_list = false; if ( function_exists( 'wp_check_comment_disallowed_list' ) ) { $caught_by_disallowed_list = wp_check_comment_disallowed_list( $comment->comment_author, $comment->comment_author_email, $comment->comment_author_url, $comment->comment_content, $comment->comment_author_IP, $comment->comment_agent ); } if ( $caught_by_disallowed_list ) { self::update_comment_history( $comment->comment_ID, '', 'wp-disallowed' ); self::update_comment_history( $comment->comment_ID, '', 'akismet-skipped-disallowed' ); } else { // Add a generic skipped history item. self::update_comment_history( $comment->comment_ID, '', 'akismet-skipped' ); } } else { // abnormal result: error update_comment_meta( $comment->comment_ID, 'akismet_error', time() ); self::update_comment_history( $comment->comment_ID, '', 'check-error', array( 'response' => substr( self::$last_comment['akismet_result'], 0, 50 ) ) ); } // record the complete original data as submitted for checking if ( isset( self::$last_comment['comment_as_submitted'] ) ) { update_comment_meta( $comment->comment_ID, 'akismet_as_submitted', self::$last_comment['comment_as_submitted'] ); } if ( isset( self::$last_comment['akismet_pro_tip'] ) ) { update_comment_meta( $comment->comment_ID, 'akismet_pro_tip', self::$last_comment['akismet_pro_tip'] ); } if ( isset( self::$last_comment['akismet_guid'] ) ) { update_comment_meta( $comment->comment_ID, 'akismet_guid', self::$last_comment['akismet_guid'] ); } } } } public static function delete_old_comments() { global $wpdb; /** * Determines how many comments will be deleted in each batch. * * @param int The default, as defined by AKISMET_DELETE_LIMIT. */ $delete_limit = apply_filters( 'akismet_delete_comment_limit', defined( 'AKISMET_DELETE_LIMIT' ) ? AKISMET_DELETE_LIMIT : 10000 ); $delete_limit = max( 1, intval( $delete_limit ) ); /** * Determines how many days a comment will be left in the Spam queue before being deleted. * * @param int The default number of days. */ $delete_interval = apply_filters( 'akismet_delete_comment_interval', 15 ); $delete_interval = max( 1, intval( $delete_interval ) ); while ( $comment_ids = $wpdb->get_col( $wpdb->prepare( "SELECT comment_id FROM {$wpdb->comments} WHERE DATE_SUB(NOW(), INTERVAL %d DAY) > comment_date_gmt AND comment_approved = 'spam' LIMIT %d", $delete_interval, $delete_limit ) ) ) { if ( empty( $comment_ids ) ) return; $wpdb->queries = array(); $comments = array(); foreach ( $comment_ids as $comment_id ) { $comments[ $comment_id ] = get_comment( $comment_id ); do_action( 'delete_comment', $comment_id, $comments[ $comment_id ] ); do_action( 'akismet_batch_delete_count', __FUNCTION__ ); } // Prepared as strings since comment_id is an unsigned BIGINT, and using %d will constrain the value to the maximum signed BIGINT. $format_string = implode( ', ', array_fill( 0, is_countable( $comment_ids ) ? count( $comment_ids ) : 0, '%s' ) ); $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->comments} WHERE comment_id IN ( " . $format_string . " )", $comment_ids ) ); $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->commentmeta} WHERE comment_id IN ( " . $format_string . " )", $comment_ids ) ); foreach ( $comment_ids as $comment_id ) { do_action( 'deleted_comment', $comment_id, $comments[ $comment_id ] ); unset( $comments[ $comment_id ] ); } clean_comment_cache( $comment_ids ); do_action( 'akismet_delete_comment_batch', is_countable( $comment_ids ) ? count( $comment_ids ) : 0 ); } if ( apply_filters( 'akismet_optimize_table', ( mt_rand(1, 5000) == 11), $wpdb->comments ) ) // lucky number $wpdb->query("OPTIMIZE TABLE {$wpdb->comments}"); } public static function delete_old_comments_meta() { global $wpdb; $interval = apply_filters( 'akismet_delete_commentmeta_interval', 15 ); # enforce a minimum of 1 day $interval = absint( $interval ); if ( $interval < 1 ) $interval = 1; // akismet_as_submitted meta values are large, so expire them // after $interval days regardless of the comment status while ( $comment_ids = $wpdb->get_col( $wpdb->prepare( "SELECT m.comment_id FROM {$wpdb->commentmeta} as m INNER JOIN {$wpdb->comments} as c USING(comment_id) WHERE m.meta_key = 'akismet_as_submitted' AND DATE_SUB(NOW(), INTERVAL %d DAY) > c.comment_date_gmt LIMIT 10000", $interval ) ) ) { if ( empty( $comment_ids ) ) return; $wpdb->queries = array(); foreach ( $comment_ids as $comment_id ) { delete_comment_meta( $comment_id, 'akismet_as_submitted' ); do_action( 'akismet_batch_delete_count', __FUNCTION__ ); } do_action( 'akismet_delete_commentmeta_batch', is_countable( $comment_ids ) ? count( $comment_ids ) : 0 ); } if ( apply_filters( 'akismet_optimize_table', ( mt_rand(1, 5000) == 11), $wpdb->commentmeta ) ) // lucky number $wpdb->query("OPTIMIZE TABLE {$wpdb->commentmeta}"); } // Clear out comments meta that no longer have corresponding comments in the database public static function delete_orphaned_commentmeta() { global $wpdb; $last_meta_id = 0; $start_time = isset( $_SERVER['REQUEST_TIME_FLOAT'] ) ? $_SERVER['REQUEST_TIME_FLOAT'] : microtime( true ); $max_exec_time = max( ini_get('max_execution_time') - 5, 3 ); while ( $commentmeta_results = $wpdb->get_results( $wpdb->prepare( "SELECT m.meta_id, m.comment_id, m.meta_key FROM {$wpdb->commentmeta} as m LEFT JOIN {$wpdb->comments} as c USING(comment_id) WHERE c.comment_id IS NULL AND m.meta_id > %d ORDER BY m.meta_id LIMIT 1000", $last_meta_id ) ) ) { if ( empty( $commentmeta_results ) ) return; $wpdb->queries = array(); $commentmeta_deleted = 0; foreach ( $commentmeta_results as $commentmeta ) { if ( 'akismet_' == substr( $commentmeta->meta_key, 0, 8 ) ) { delete_comment_meta( $commentmeta->comment_id, $commentmeta->meta_key ); do_action( 'akismet_batch_delete_count', __FUNCTION__ ); $commentmeta_deleted++; } $last_meta_id = $commentmeta->meta_id; } do_action( 'akismet_delete_commentmeta_batch', $commentmeta_deleted ); // If we're getting close to max_execution_time, quit for this round. if ( microtime(true) - $start_time > $max_exec_time ) return; } if ( apply_filters( 'akismet_optimize_table', ( mt_rand(1, 5000) == 11), $wpdb->commentmeta ) ) // lucky number $wpdb->query("OPTIMIZE TABLE {$wpdb->commentmeta}"); } // how many approved comments does this author have? public static function get_user_comments_approved( $user_id, $comment_author_email, $comment_author, $comment_author_url ) { global $wpdb; /** * Which comment types should be ignored when counting a user's approved comments? * * Some plugins add entries to the comments table that are not actual * comments that could have been checked by Akismet. Allow these comments * to be excluded from the "approved comment count" query in order to * avoid artificially inflating the approved comment count. * * @param array $comment_types An array of comment types that won't be considered * when counting a user's approved comments. * * @since 4.2.2 */ $excluded_comment_types = apply_filters( 'akismet_excluded_comment_types', array() ); $comment_type_where = ''; if ( is_array( $excluded_comment_types ) && ! empty( $excluded_comment_types ) ) { $excluded_comment_types = array_unique( $excluded_comment_types ); foreach ( $excluded_comment_types as $excluded_comment_type ) { $comment_type_where .= $wpdb->prepare( ' AND comment_type <> %s ', $excluded_comment_type ); } } if ( ! empty( $user_id ) ) { return (int) $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM {$wpdb->comments} WHERE user_id = %d AND comment_approved = 1" . $comment_type_where, $user_id ) ); } if ( ! empty( $comment_author_email ) ) { return (int) $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM {$wpdb->comments} WHERE comment_author_email = %s AND comment_author = %s AND comment_author_url = %s AND comment_approved = 1" . $comment_type_where, $comment_author_email, $comment_author, $comment_author_url ) ); } return 0; } /** * Get the full comment history for a given comment, as an array in reverse chronological order. * Each entry will have an 'event', a 'time', and possible a 'message' member (if the entry is old enough). * Some entries will also have a 'user' or 'meta' member. * * @param int $comment_id The relevant comment ID. * @return array|bool An array of history events, or false if there is no history. */ public static function get_comment_history( $comment_id ) { $history = get_comment_meta( $comment_id, 'akismet_history', false ); if ( empty( $history ) || empty( $history[ 0 ] ) ) { return false; } /* // To see all variants when testing. $history[] = array( 'time' => 445856401, 'message' => 'Old versions of Akismet stored the message as a literal string in the commentmeta.', 'event' => null ); $history[] = array( 'time' => 445856402, 'event' => 'recheck-spam' ); $history[] = array( 'time' => 445856403, 'event' => 'check-spam' ); $history[] = array( 'time' => 445856404, 'event' => 'recheck-ham' ); $history[] = array( 'time' => 445856405, 'event' => 'check-ham' ); $history[] = array( 'time' => 445856406, 'event' => 'wp-blacklisted' ); $history[] = array( 'time' => 445856406, 'event' => 'wp-disallowed' ); $history[] = array( 'time' => 445856407, 'event' => 'report-spam' ); $history[] = array( 'time' => 445856408, 'event' => 'report-spam', 'user' => 'sam' ); $history[] = array( 'message' => 'sam reported this comment as spam (hardcoded message).', 'time' => 445856400, 'event' => 'report-spam', 'user' => 'sam' ); $history[] = array( 'time' => 445856409, 'event' => 'report-ham', 'user' => 'sam' ); $history[] = array( 'message' => 'sam reported this comment as ham (hardcoded message).', 'time' => 445856400, 'event' => 'report-ham', 'user' => 'sam' ); // $history[] = array( 'time' => 445856410, 'event' => 'cron-retry-spam' ); $history[] = array( 'time' => 445856411, 'event' => 'cron-retry-ham' ); $history[] = array( 'time' => 445856412, 'event' => 'check-error' ); // $history[] = array( 'time' => 445856413, 'event' => 'check-error', 'meta' => array( 'response' => 'The server was taking a nap.' ) ); $history[] = array( 'time' => 445856414, 'event' => 'recheck-error' ); // Should not generate a message. $history[] = array( 'time' => 445856415, 'event' => 'recheck-error', 'meta' => array( 'response' => 'The server was taking a nap.' ) ); $history[] = array( 'time' => 445856416, 'event' => 'status-changedtrash' ); $history[] = array( 'time' => 445856417, 'event' => 'status-changedspam' ); $history[] = array( 'time' => 445856418, 'event' => 'status-changedhold' ); $history[] = array( 'time' => 445856419, 'event' => 'status-changedapprove' ); $history[] = array( 'time' => 445856420, 'event' => 'status-changed-trash' ); $history[] = array( 'time' => 445856421, 'event' => 'status-changed-spam' ); $history[] = array( 'time' => 445856422, 'event' => 'status-changed-hold' ); $history[] = array( 'time' => 445856423, 'event' => 'status-changed-approve' ); $history[] = array( 'time' => 445856424, 'event' => 'status-trash', 'user' => 'sam' ); $history[] = array( 'time' => 445856425, 'event' => 'status-spam', 'user' => 'sam' ); $history[] = array( 'time' => 445856426, 'event' => 'status-hold', 'user' => 'sam' ); $history[] = array( 'time' => 445856427, 'event' => 'status-approve', 'user' => 'sam' ); $history[] = array( 'time' => 445856427, 'event' => 'webhook-spam' ); $history[] = array( 'time' => 445856427, 'event' => 'webhook-ham' ); $history[] = array( 'time' => 445856427, 'event' => 'webhook-spam-noaction' ); $history[] = array( 'time' => 445856427, 'event' => 'webhook-ham-noaction' ); */ usort( $history, array( 'Akismet', '_cmp_time' ) ); return $history; } /** * Log an event for a given comment, storing it in comment_meta. * * @param int $comment_id The ID of the relevant comment. * @param string $message The string description of the event. No longer used. * @param string $event The event code. * @param array $meta Metadata about the history entry. e.g., the user that reported or changed the status of a given comment. */ public static function update_comment_history( $comment_id, $message, $event=null, $meta=null ) { global $current_user; $user = ''; $event = array( 'time' => self::_get_microtime(), 'event' => $event, ); if ( is_object( $current_user ) && isset( $current_user->user_login ) ) { $event['user'] = $current_user->user_login; } if ( ! empty( $meta ) ) { $event['meta'] = $meta; } // $unique = false so as to allow multiple values per comment $r = add_comment_meta( $comment_id, 'akismet_history', $event, false ); } public static function check_db_comment( $id, $recheck_reason = 'recheck_queue' ) { global $wpdb; if ( ! self::get_api_key() ) { return new WP_Error( 'akismet-not-configured', __( 'Akismet is not configured. Please enter an API key.', 'akismet' ) ); } $c = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$wpdb->comments} WHERE comment_ID = %d", $id ), ARRAY_A ); if ( ! $c ) { return new WP_Error( 'invalid-comment-id', __( 'Comment not found.', 'akismet' ) ); } $c['user_ip'] = $c['comment_author_IP']; $c['user_agent'] = $c['comment_agent']; $c['referrer'] = ''; $c['blog'] = get_option( 'home' ); $c['blog_lang'] = get_locale(); $c['blog_charset'] = get_option('blog_charset'); $c['permalink'] = get_permalink($c['comment_post_ID']); $c['recheck_reason'] = $recheck_reason; $c['user_role'] = ''; if ( ! empty( $c['user_ID'] ) ) { $c['user_role'] = Akismet::get_user_roles( $c['user_ID'] ); } if ( self::is_test_mode() ) $c['is_test'] = 'true'; $c = apply_filters( 'akismet_request_args', $c, 'comment-check' ); $response = self::http_post( self::build_query( $c ), 'comment-check' ); if ( ! empty( $response[1] ) ) { return $response[1]; } return false; } public static function recheck_comment( $id, $recheck_reason = 'recheck_queue' ) { add_comment_meta( $id, 'akismet_rechecking', true ); $api_response = self::check_db_comment( $id, $recheck_reason ); if ( is_wp_error( $api_response ) ) { // Invalid comment ID. } else if ( 'true' === $api_response ) { wp_set_comment_status( $id, 'spam' ); update_comment_meta( $id, 'akismet_result', 'true' ); delete_comment_meta( $id, 'akismet_error' ); delete_comment_meta( $id, 'akismet_delayed_moderation_email' ); Akismet::update_comment_history( $id, '', 'recheck-spam' ); } elseif ( 'false' === $api_response ) { update_comment_meta( $id, 'akismet_result', 'false' ); delete_comment_meta( $id, 'akismet_error' ); delete_comment_meta( $id, 'akismet_delayed_moderation_email' ); Akismet::update_comment_history( $id, '', 'recheck-ham' ); } else { // abnormal result: error update_comment_meta( $id, 'akismet_result', 'error' ); Akismet::update_comment_history( $id, '', 'recheck-error', array( 'response' => substr( $api_response, 0, 50 ) ) ); } delete_comment_meta( $id, 'akismet_rechecking' ); return $api_response; } public static function transition_comment_status( $new_status, $old_status, $comment ) { if ( $new_status == $old_status ) return; if ( 'spam' === $new_status || 'spam' === $old_status ) { // Clear the cache of the "X comments in your spam queue" count on the dashboard. wp_cache_delete( 'akismet_spam_count', 'widget' ); } # we don't need to record a history item for deleted comments if ( $new_status == 'delete' ) return; if ( !current_user_can( 'edit_post', $comment->comment_post_ID ) && !current_user_can( 'moderate_comments' ) ) return; if ( defined('WP_IMPORTING') && WP_IMPORTING == true ) return; // if this is present, it means the status has been changed by a re-check, not an explicit user action if ( get_comment_meta( $comment->comment_ID, 'akismet_rechecking' ) ) return; if ( function_exists( 'getallheaders' ) ) { $request_headers = getallheaders(); foreach ( $request_headers as $header => $value ) { if ( strtolower( $header ) == 'x-akismet-webhook' ) { // This change is due to a webhook request. return; } } } // Assumption alert: // We want to submit comments to Akismet only when a moderator explicitly spams or approves it - not if the status // is changed automatically by another plugin. Unfortunately WordPress doesn't provide an unambiguous way to // determine why the transition_comment_status action was triggered. And there are several different ways by which // to spam and unspam comments: bulk actions, ajax, links in moderation emails, the dashboard, and perhaps others. // We'll assume that this is an explicit user action if certain POST/GET variables exist. if ( // status=spam: Marking as spam via the REST API or... // status=unspam: I'm not sure. Maybe this used to be used instead of status=approved? Or the UI for removing from spam but not approving has been since removed?... // status=approved: Unspamming via the REST API (Calypso) or... ( isset( $_POST['status'] ) && in_array( $_POST['status'], array( 'spam', 'unspam', 'approved', ) ) ) // spam=1: Clicking "Spam" underneath a comment in wp-admin and allowing the AJAX request to happen. || ( isset( $_POST['spam'] ) && (int) $_POST['spam'] == 1 ) // unspam=1: Clicking "Not Spam" underneath a comment in wp-admin and allowing the AJAX request to happen. Or, clicking "Undo" after marking something as spam. || ( isset( $_POST['unspam'] ) && (int) $_POST['unspam'] == 1 ) // comment_status=spam/unspam: It's unclear where this is happening. || ( isset( $_POST['comment_status'] ) && in_array( $_POST['comment_status'], array( 'spam', 'unspam' ) ) ) // action=spam: Choosing "Mark as Spam" from the Bulk Actions dropdown in wp-admin (or the "Spam it" link in notification emails). // action=unspam: Choosing "Not Spam" from the Bulk Actions dropdown in wp-admin. // action=spamcomment: Following the "Spam" link below a comment in wp-admin (not allowing AJAX request to happen). // action=unspamcomment: Following the "Not Spam" link below a comment in wp-admin (not allowing AJAX request to happen). || ( isset( $_GET['action'] ) && in_array( $_GET['action'], array( 'spam', 'unspam', 'spamcomment', 'unspamcomment', ) ) ) // action=editedcomment: Editing a comment via wp-admin (and possibly changing its status). || ( isset( $_POST['action'] ) && in_array( $_POST['action'], array( 'editedcomment' ) ) ) // for=jetpack: Moderation via the WordPress app, Calypso, anything powered by the Jetpack connection. || ( isset( $_GET['for'] ) && ( 'jetpack' == $_GET['for'] ) && ( ! defined( 'IS_WPCOM' ) || ! IS_WPCOM ) ) // Certain WordPress.com API requests || ( defined( 'REST_API_REQUEST' ) && REST_API_REQUEST ) // WordPress.org REST API requests || ( defined( 'REST_REQUEST' ) && REST_REQUEST ) ) { if ( $new_status == 'spam' && ( $old_status == 'approved' || $old_status == 'unapproved' || !$old_status ) ) { return self::submit_spam_comment( $comment->comment_ID ); } elseif ( $old_status == 'spam' && ( $new_status == 'approved' || $new_status == 'unapproved' ) ) { return self::submit_nonspam_comment( $comment->comment_ID ); } } self::update_comment_history( $comment->comment_ID, '', 'status-' . $new_status ); } public static function submit_spam_comment( $comment_id ) { global $wpdb, $current_user, $current_site; $comment_id = (int) $comment_id; $comment = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$wpdb->comments} WHERE comment_ID = %d", $comment_id ), ARRAY_A ); if ( ! $comment ) { // it was deleted return; } if ( 'spam' != $comment['comment_approved'] ) { return; } self::update_comment_history( $comment_id, '', 'report-spam' ); // If the user hasn't configured Akismet, there's nothing else to do at this point. if ( ! self::get_api_key() ) { return; } // use the original version stored in comment_meta if available $as_submitted = self::sanitize_comment_as_submitted( get_comment_meta( $comment_id, 'akismet_as_submitted', true ) ); if ( $as_submitted && is_array( $as_submitted ) && isset( $as_submitted['comment_content'] ) ) { $comment = array_merge( $comment, $as_submitted ); } $comment['blog'] = get_option( 'home' ); $comment['blog_lang'] = get_locale(); $comment['blog_charset'] = get_option( 'blog_charset' ); $comment['permalink'] = get_permalink( $comment['comment_post_ID'] ); if ( is_object( $current_user ) ) { $comment['reporter'] = $current_user->user_login; } if ( is_object( $current_site ) ) { $comment['site_domain'] = $current_site->domain; } $comment['user_role'] = ''; if ( ! empty( $comment['user_ID'] ) ) { $comment['user_role'] = self::get_user_roles( $comment['user_ID'] ); } if ( self::is_test_mode() ) { $comment['is_test'] = 'true'; } $post = get_post( $comment['comment_post_ID'] ); if ( ! is_null( $post ) ) { $comment['comment_post_modified_gmt'] = $post->post_modified_gmt; } $comment = apply_filters( 'akismet_request_args', $comment, 'submit-spam' ); $response = self::http_post( self::build_query( $comment ), 'submit-spam' ); update_comment_meta( $comment_id, 'akismet_user_result', 'true' ); if ( $comment['reporter'] ) { update_comment_meta( $comment_id, 'akismet_user', $comment['reporter'] ); } do_action('akismet_submit_spam_comment', $comment_id, $response[1]); } public static function submit_nonspam_comment( $comment_id ) { global $wpdb, $current_user, $current_site; $comment_id = (int) $comment_id; $comment = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$wpdb->comments} WHERE comment_ID = %d", $comment_id ), ARRAY_A ); if ( ! $comment ) { // it was deleted return; } self::update_comment_history( $comment_id, '', 'report-ham' ); // If the user hasn't configured Akismet, there's nothing else to do at this point. if ( ! self::get_api_key() ) { return; } // use the original version stored in comment_meta if available $as_submitted = self::sanitize_comment_as_submitted( get_comment_meta( $comment_id, 'akismet_as_submitted', true ) ); if ( $as_submitted && is_array( $as_submitted ) && isset( $as_submitted['comment_content'] ) ) { $comment = array_merge( $comment, $as_submitted ); } $comment['blog'] = get_option( 'home' ); $comment['blog_lang'] = get_locale(); $comment['blog_charset'] = get_option( 'blog_charset' ); $comment['permalink'] = get_permalink( $comment['comment_post_ID'] ); $comment['user_role'] = ''; if ( is_object( $current_user ) ) { $comment['reporter'] = $current_user->user_login; } if ( is_object( $current_site ) ) { $comment['site_domain'] = $current_site->domain; } if ( ! empty( $comment['user_ID'] ) ) { $comment['user_role'] = self::get_user_roles( $comment['user_ID'] ); } if ( self::is_test_mode() ) { $comment['is_test'] = 'true'; } $post = get_post( $comment['comment_post_ID'] ); if ( ! is_null( $post ) ) { $comment['comment_post_modified_gmt'] = $post->post_modified_gmt; } $comment = apply_filters( 'akismet_request_args', $comment, 'submit-ham' ); $response = self::http_post( self::build_query( $comment ), 'submit-ham' ); update_comment_meta( $comment_id, 'akismet_user_result', 'false' ); if ( $comment['reporter'] ) { update_comment_meta( $comment_id, 'akismet_user', $comment['reporter'] ); } do_action('akismet_submit_nonspam_comment', $comment_id, $response[1]); } public static function cron_recheck() { global $wpdb; $api_key = self::get_api_key(); $status = self::verify_key( $api_key ); if ( get_option( 'akismet_alert_code' ) || $status == 'invalid' ) { // since there is currently a problem with the key, reschedule a check for 6 hours hence wp_schedule_single_event( time() + 21600, 'akismet_schedule_cron_recheck' ); do_action( 'akismet_scheduled_recheck', 'key-problem-' . get_option( 'akismet_alert_code' ) . '-' . $status ); return false; } delete_option('akismet_available_servers'); $comment_errors = $wpdb->get_col( "SELECT comment_id FROM {$wpdb->commentmeta} WHERE meta_key = 'akismet_error' LIMIT 100" ); load_plugin_textdomain( 'akismet' ); foreach ( (array) $comment_errors as $comment_id ) { // if the comment no longer exists, or is too old, remove the meta entry from the queue to avoid getting stuck $comment = get_comment( $comment_id ); if ( ! $comment // Comment has been deleted || strtotime( $comment->comment_date_gmt ) < strtotime( "-15 days" ) // Comment is too old. || $comment->comment_approved !== "0" // Comment is no longer in the Pending queue ) { delete_comment_meta( $comment_id, 'akismet_error' ); delete_comment_meta( $comment_id, 'akismet_delayed_moderation_email' ); continue; } add_comment_meta( $comment_id, 'akismet_rechecking', true ); $status = self::check_db_comment( $comment_id, 'retry' ); $event = ''; if ( $status == 'true' ) { $event = 'cron-retry-spam'; } elseif ( $status == 'false' ) { $event = 'cron-retry-ham'; } // If we got back a legit response then update the comment history // other wise just bail now and try again later. No point in // re-trying all the comments once we hit one failure. if ( !empty( $event ) ) { delete_comment_meta( $comment_id, 'akismet_error' ); self::update_comment_history( $comment_id, '', $event ); update_comment_meta( $comment_id, 'akismet_result', $status ); // make sure the comment status is still pending. if it isn't, that means the user has already moved it elsewhere. $comment = get_comment( $comment_id ); if ( $comment && 'unapproved' == wp_get_comment_status( $comment_id ) ) { if ( $status == 'true' ) { wp_spam_comment( $comment_id ); } elseif ( $status == 'false' ) { // comment is good, but it's still in the pending queue. depending on the moderation settings // we may need to change it to approved. if ( check_comment($comment->comment_author, $comment->comment_author_email, $comment->comment_author_url, $comment->comment_content, $comment->comment_author_IP, $comment->comment_agent, $comment->comment_type) ) wp_set_comment_status( $comment_id, 1 ); else if ( get_comment_meta( $comment_id, 'akismet_delayed_moderation_email', true ) ) wp_notify_moderator( $comment_id ); } } delete_comment_meta( $comment_id, 'akismet_delayed_moderation_email' ); } else { // If this comment has been pending moderation for longer than MAX_DELAY_BEFORE_MODERATION_EMAIL, // send a moderation email now. if ( ( intval( gmdate( 'U' ) ) - strtotime( $comment->comment_date_gmt ) ) < self::MAX_DELAY_BEFORE_MODERATION_EMAIL ) { delete_comment_meta( $comment_id, 'akismet_delayed_moderation_email' ); wp_notify_moderator( $comment_id ); } delete_comment_meta( $comment_id, 'akismet_rechecking' ); wp_schedule_single_event( time() + 1200, 'akismet_schedule_cron_recheck' ); do_action( 'akismet_scheduled_recheck', 'check-db-comment-' . $status ); return; } delete_comment_meta( $comment_id, 'akismet_rechecking' ); } $remaining = $wpdb->get_var( "SELECT COUNT(*) FROM {$wpdb->commentmeta} WHERE meta_key = 'akismet_error'" ); if ( $remaining && !wp_next_scheduled('akismet_schedule_cron_recheck') ) { wp_schedule_single_event( time() + 1200, 'akismet_schedule_cron_recheck' ); do_action( 'akismet_scheduled_recheck', 'remaining' ); } } public static function fix_scheduled_recheck() { $future_check = wp_next_scheduled( 'akismet_schedule_cron_recheck' ); if ( !$future_check ) { return; } if ( get_option( 'akismet_alert_code' ) > 0 ) { return; } $check_range = time() + 1200; if ( $future_check > $check_range ) { wp_clear_scheduled_hook( 'akismet_schedule_cron_recheck' ); wp_schedule_single_event( time() + 300, 'akismet_schedule_cron_recheck' ); do_action( 'akismet_scheduled_recheck', 'fix-scheduled-recheck' ); } } public static function add_comment_nonce( $post_id ) { /** * To disable the Akismet comment nonce, add a filter for the 'akismet_comment_nonce' tag * and return any string value that is not 'true' or '' (empty string). * * Don't return boolean false, because that implies that the 'akismet_comment_nonce' option * has not been set and that Akismet should just choose the default behavior for that * situation. */ if ( ! self::get_api_key() ) { return; } $akismet_comment_nonce_option = apply_filters( 'akismet_comment_nonce', get_option( 'akismet_comment_nonce' ) ); if ( $akismet_comment_nonce_option == 'true' || $akismet_comment_nonce_option == '' ) { echo '

'; wp_nonce_field( 'akismet_comment_nonce_' . $post_id, 'akismet_comment_nonce', FALSE ); echo '

'; } } public static function is_test_mode() { return defined('AKISMET_TEST_MODE') && AKISMET_TEST_MODE; } public static function allow_discard() { if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) return false; if ( is_user_logged_in() ) return false; return ( get_option( 'akismet_strictness' ) === '1' ); } public static function get_ip_address() { return isset( $_SERVER['REMOTE_ADDR'] ) ? $_SERVER['REMOTE_ADDR'] : null; } /** * Do these two comments, without checking the comment_ID, "match"? * * @param mixed $comment1 A comment object or array. * @param mixed $comment2 A comment object or array. * @return bool Whether the two comments should be treated as the same comment. */ private static function comments_match( $comment1, $comment2 ) { $comment1 = (array) $comment1; $comment2 = (array) $comment2; // Set default values for these strings that we check in order to simplify // the checks and avoid PHP warnings. if ( ! isset( $comment1['comment_author'] ) ) { $comment1['comment_author'] = ''; } if ( ! isset( $comment2['comment_author'] ) ) { $comment2['comment_author'] = ''; } if ( ! isset( $comment1['comment_author_email'] ) ) { $comment1['comment_author_email'] = ''; } if ( ! isset( $comment2['comment_author_email'] ) ) { $comment2['comment_author_email'] = ''; } $comments_match = ( isset( $comment1['comment_post_ID'], $comment2['comment_post_ID'] ) && intval( $comment1['comment_post_ID'] ) == intval( $comment2['comment_post_ID'] ) && ( // The comment author length max is 255 characters, limited by the TINYTEXT column type. // If the comment author includes multibyte characters right around the 255-byte mark, they // may be stripped when the author is saved in the DB, so a 300+ char author may turn into // a 253-char author when it's saved, not 255 exactly. The longest possible character is // theoretically 6 bytes, so we'll only look at the first 248 bytes to be safe. substr( $comment1['comment_author'], 0, 248 ) == substr( $comment2['comment_author'], 0, 248 ) || substr( stripslashes( $comment1['comment_author'] ), 0, 248 ) == substr( $comment2['comment_author'], 0, 248 ) || substr( $comment1['comment_author'], 0, 248 ) == substr( stripslashes( $comment2['comment_author'] ), 0, 248 ) // Certain long comment author names will be truncated to nothing, depending on their encoding. || ( ! $comment1['comment_author'] && strlen( $comment2['comment_author'] ) > 248 ) || ( ! $comment2['comment_author'] && strlen( $comment1['comment_author'] ) > 248 ) ) && ( // The email max length is 100 characters, limited by the VARCHAR(100) column type. // Same argument as above for only looking at the first 93 characters. substr( $comment1['comment_author_email'], 0, 93 ) == substr( $comment2['comment_author_email'], 0, 93 ) || substr( stripslashes( $comment1['comment_author_email'] ), 0, 93 ) == substr( $comment2['comment_author_email'], 0, 93 ) || substr( $comment1['comment_author_email'], 0, 93 ) == substr( stripslashes( $comment2['comment_author_email'] ), 0, 93 ) // Very long emails can be truncated and then stripped if the [0:100] substring isn't a valid address. || ( ! $comment1['comment_author_email'] && strlen( $comment2['comment_author_email'] ) > 100 ) || ( ! $comment2['comment_author_email'] && strlen( $comment1['comment_author_email'] ) > 100 ) ) ); return $comments_match; } // Does the supplied comment match the details of the one most recently stored in self::$last_comment? public static function matches_last_comment( $comment ) { return self::comments_match( self::$last_comment, $comment ); } private static function get_user_agent() { return isset( $_SERVER['HTTP_USER_AGENT'] ) ? $_SERVER['HTTP_USER_AGENT'] : null; } private static function get_referer() { return isset( $_SERVER['HTTP_REFERER'] ) ? $_SERVER['HTTP_REFERER'] : null; } // return a comma-separated list of role names for the given user public static function get_user_roles( $user_id ) { $comment_user = null; $roles = false; if ( !class_exists('WP_User') ) return false; if ( $user_id > 0 ) { $comment_user = new WP_User( $user_id ); if ( isset( $comment_user->roles ) ) $roles = implode( ',', $comment_user->roles ); } if ( is_multisite() && is_super_admin( $user_id ) ) { if ( empty( $roles ) ) { $roles = 'super_admin'; } else { $comment_user->roles[] = 'super_admin'; $roles = implode( ',', $comment_user->roles ); } } return $roles; } // filter handler used to return a spam result to pre_comment_approved public static function last_comment_status( $approved, $comment ) { if ( is_null( self::$last_comment_result ) ) { // We didn't have reason to store the result of the last check. return $approved; } // Only do this if it's the correct comment if ( ! self::matches_last_comment( $comment ) ) { self::log( "comment_is_spam mismatched comment, returning unaltered $approved" ); return $approved; } if ( 'trash' === $approved ) { // If the last comment we checked has had its approval set to 'trash', // then it failed the comment blacklist check. Let that blacklist override // the spam check, since users have the (valid) expectation that when // they fill out their blacklists, comments that match it will always // end up in the trash. return $approved; } // bump the counter here instead of when the filter is added to reduce the possibility of overcounting if ( $incr = apply_filters('akismet_spam_count_incr', 1) ) update_option( 'akismet_spam_count', get_option('akismet_spam_count') + $incr ); return self::$last_comment_result; } /** * If Akismet is temporarily unreachable, we don't want to "spam" the blogger with * moderation emails for comments that will be automatically cleared or spammed on * the next retry. * * For comments that will be rechecked later, empty the list of email addresses that * the moderation email would be sent to. * * @param array $emails An array of email addresses that the moderation email will be sent to. * @param int $comment_id The ID of the relevant comment. * @return array An array of email addresses that the moderation email will be sent to. */ public static function disable_moderation_emails_if_unreachable( $emails, $comment_id ) { if ( ! empty( self::$prevent_moderation_email_for_these_comments ) && ! empty( $emails ) ) { $comment = get_comment( $comment_id ); if ( $comment ) { foreach ( self::$prevent_moderation_email_for_these_comments as $possible_match ) { if ( self::comments_match( $possible_match, $comment ) ) { update_comment_meta( $comment_id, 'akismet_delayed_moderation_email', true ); return array(); } } } } return $emails; } public static function _cmp_time( $a, $b ) { return $a['time'] > $b['time'] ? -1 : 1; } public static function _get_microtime() { $mtime = explode( ' ', microtime() ); return $mtime[1] + $mtime[0]; } /** * Make a POST request to the Akismet API. * * @param string $request The body of the request. * @param string $path The path for the request. * @param string $ip The specific IP address to hit. * @return array A two-member array consisting of the headers and the response body, both empty in the case of a failure. */ public static function http_post( $request, $path, $ip=null ) { $akismet_ua = sprintf( 'WordPress/%s | Akismet/%s', $GLOBALS['wp_version'], constant( 'AKISMET_VERSION' ) ); $akismet_ua = apply_filters( 'akismet_ua', $akismet_ua ); $host = self::API_HOST; $api_key = self::get_api_key(); if ( $api_key ) { $request = add_query_arg( 'api_key', $api_key, $request ); } $http_host = $host; // use a specific IP if provided // needed by Akismet_Admin::check_server_connectivity() if ( $ip && long2ip( ip2long( $ip ) ) ) { $http_host = $ip; } $http_args = array( 'body' => $request, 'headers' => array( 'Content-Type' => 'application/x-www-form-urlencoded; charset=' . get_option( 'blog_charset' ), 'Host' => $host, 'User-Agent' => $akismet_ua, ), 'httpversion' => '1.0', 'timeout' => 15 ); $akismet_url = $http_akismet_url = "http://{$http_host}/1.1/{$path}"; /** * Try SSL first; if that fails, try without it and don't try it again for a while. */ $ssl = $ssl_failed = false; // Check if SSL requests were disabled fewer than X hours ago. $ssl_disabled = get_option( 'akismet_ssl_disabled' ); if ( $ssl_disabled && $ssl_disabled < ( time() - 60 * 60 * 24 ) ) { // 24 hours $ssl_disabled = false; delete_option( 'akismet_ssl_disabled' ); } else if ( $ssl_disabled ) { do_action( 'akismet_ssl_disabled' ); } if ( ! $ssl_disabled && ( $ssl = wp_http_supports( array( 'ssl' ) ) ) ) { $akismet_url = set_url_scheme( $akismet_url, 'https' ); do_action( 'akismet_https_request_pre' ); } $response = wp_remote_post( $akismet_url, $http_args ); Akismet::log( compact( 'akismet_url', 'http_args', 'response' ) ); if ( $ssl && is_wp_error( $response ) ) { do_action( 'akismet_https_request_failure', $response ); // Intermittent connection problems may cause the first HTTPS // request to fail and subsequent HTTP requests to succeed randomly. // Retry the HTTPS request once before disabling SSL for a time. $response = wp_remote_post( $akismet_url, $http_args ); Akismet::log( compact( 'akismet_url', 'http_args', 'response' ) ); if ( is_wp_error( $response ) ) { $ssl_failed = true; do_action( 'akismet_https_request_failure', $response ); do_action( 'akismet_http_request_pre' ); // Try the request again without SSL. $response = wp_remote_post( $http_akismet_url, $http_args ); Akismet::log( compact( 'http_akismet_url', 'http_args', 'response' ) ); } } if ( is_wp_error( $response ) ) { do_action( 'akismet_request_failure', $response ); return array( '', '' ); } if ( $ssl_failed ) { // The request failed when using SSL but succeeded without it. Disable SSL for future requests. update_option( 'akismet_ssl_disabled', time() ); do_action( 'akismet_https_disabled' ); } $simplified_response = array( $response['headers'], $response['body'] ); $alert_code_check_paths = array( 'verify-key', 'comment-check', 'get-stats', ); if ( in_array( $path, $alert_code_check_paths ) ) { self::update_alert( $simplified_response ); } return $simplified_response; } // given a response from an API call like check_key_status(), update the alert code options if an alert is present. public static function update_alert( $response ) { $alert_option_prefix = 'akismet_alert_'; $alert_header_prefix = 'x-akismet-alert-'; $alert_header_names = array( 'code', 'msg', 'api-calls', 'usage-limit', 'upgrade-plan', 'upgrade-url', 'upgrade-type', 'upgrade-via-support', ); foreach ( $alert_header_names as $alert_header_name ) { $value = null; if ( isset( $response[0][ $alert_header_prefix . $alert_header_name ] ) ) { $value = $response[0][ $alert_header_prefix . $alert_header_name ]; } $option_name = $alert_option_prefix . str_replace( '-', '_', $alert_header_name ); if ( $value != get_option( $option_name ) ) { if ( ! $value ) { delete_option( $option_name ); } else { update_option( $option_name, $value ); } } } } /** * Mark akismet-frontend.js as deferred. Because nothing depends on it, it can run at any time * after it's loaded, and the browser won't have to wait for it to load to continue * parsing the rest of the page. */ public static function set_form_js_async( $tag, $handle, $src ) { if ( 'akismet-frontend' !== $handle ) { return $tag; } return preg_replace( '/^'; } $fields .= '

'; return $fields; } public static function output_custom_form_fields( $post_id ) { if ( 'fluentform/form_element_start' === current_filter() && did_action( 'fluentform_form_element_start' ) ) { // Already did this via the legacy filter. return; } // phpcs:ignore WordPress.Security.EscapeOutput echo self::get_akismet_form_fields(); } public static function inject_custom_form_fields( $html ) { $html = str_replace( '', self::get_akismet_form_fields() . '', $html ); return $html; } public static function append_custom_form_fields( $html ) { $html .= self::get_akismet_form_fields(); return $html; } /** * Ensure that any Akismet-added form fields are included in the comment-check call. * * @param array $form * @param array $data Some plugins will supply the POST data via the filter, since they don't * read it directly from $_POST. * @return array $form */ public static function prepare_custom_form_values( $form, $data = null ) { if ( 'fluentform/akismet_fields' === current_filter() && did_filter( 'fluentform_akismet_fields' ) ) { // Already updated the form fields via the legacy filter. return $form; } if ( is_null( $data ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing $data = $_POST; } $prefix = 'ak_'; // Contact Form 7 uses _wpcf7 as a prefix to know which fields to exclude from comment_content. if ( 'wpcf7_akismet_parameters' === current_filter() ) { $prefix = '_wpcf7_ak_'; } foreach ( $data as $key => $val ) { if ( 0 === strpos( $key, $prefix ) ) { $form[ 'POST_ak_' . substr( $key, strlen( $prefix ) ) ] = $val; } } return $form; } private static function bail_on_activation( $message, $deactivate = true ) { ?>

$plugin ) { if ( $plugin === $akismet ) { $plugins[$i] = false; $update = true; } } if ( $update ) { update_option( 'active_plugins', array_filter( $plugins ) ); } } exit; } public static function view( $name, array $args = array() ) { $args = apply_filters( 'akismet_view_arguments', $args, $name ); foreach ( $args as $key => $val ) { $$key = $val; } load_plugin_textdomain( 'akismet' ); $file = AKISMET__PLUGIN_DIR . 'views/'. $name . '.php'; include( $file ); } /** * Attached to activate_{ plugin_basename( __FILES__ ) } by register_activation_hook() * @static */ public static function plugin_activation() { if ( version_compare( $GLOBALS['wp_version'], AKISMET__MINIMUM_WP_VERSION, '<' ) ) { load_plugin_textdomain( 'akismet' ); $message = ''.sprintf(esc_html__( 'Akismet %s requires WordPress %s or higher.' , 'akismet'), AKISMET_VERSION, AKISMET__MINIMUM_WP_VERSION ).' '.sprintf(__('Please upgrade WordPress to a current version, or downgrade to version 2.4 of the Akismet plugin.', 'akismet'), 'https://codex.wordpress.org/Upgrading_WordPress', 'https://wordpress.org/extend/plugins/akismet/download/'); Akismet::bail_on_activation( $message ); } elseif ( ! empty( $_SERVER['SCRIPT_NAME'] ) && false !== strpos( $_SERVER['SCRIPT_NAME'], '/wp-admin/plugins.php' ) ) { add_option( 'Activated_Akismet', true ); } } /** * Removes all connection options * @static */ public static function plugin_deactivation( ) { self::deactivate_key( self::get_api_key() ); // Remove any scheduled cron jobs. $akismet_cron_events = array( 'akismet_schedule_cron_recheck', 'akismet_scheduled_delete', ); foreach ( $akismet_cron_events as $akismet_cron_event ) { $timestamp = wp_next_scheduled( $akismet_cron_event ); if ( $timestamp ) { wp_unschedule_event( $timestamp, $akismet_cron_event ); } } } /** * Essentially a copy of WP's build_query but one that doesn't expect pre-urlencoded values. * * @param array $args An array of key => value pairs * @return string A string ready for use as a URL query string. */ public static function build_query( $args ) { return _http_build_query( $args, '', '&' ); } /** * Log debugging info to the error log. * * Enabled when WP_DEBUG_LOG is enabled (and WP_DEBUG, since according to * core, "WP_DEBUG_DISPLAY and WP_DEBUG_LOG perform no function unless * WP_DEBUG is true), but can be disabled via the akismet_debug_log filter. * * @param mixed $akismet_debug The data to log. */ public static function log( $akismet_debug ) { if ( apply_filters( 'akismet_debug_log', defined( 'WP_DEBUG' ) && WP_DEBUG && defined( 'WP_DEBUG_LOG' ) && WP_DEBUG_LOG && defined( 'AKISMET_DEBUG' ) && AKISMET_DEBUG ) ) { error_log( print_r( compact( 'akismet_debug' ), true ) ); } } /** * Check pingbacks for spam before they're saved to the DB. * * @param string $method The XML-RPC method that was called. * @param array $args This and the $server arg are marked as optional since plugins might still be * calling do_action( 'xmlrpc_action', [...] ) without the arguments that were added in WP 5.7. * @param wp_xmlrpc_server $server */ public static function pre_check_pingback( $method, $args = array(), $server = null ) { if ( $method !== 'pingback.ping' ) { return; } /* * $args looks like this: * * Array * ( * [0] => http://www.example.net/?p=1 // Site that created the pingback. * [1] => https://www.example.com/?p=2 // Post being pingback'd on this site. * ) */ if ( ! is_null( $server ) && ! empty( $args[1] ) ) { $is_multicall = false; $multicall_count = 0; if ( 'system.multicall' === $server->message->methodName ) { $is_multicall = true; $multicall_count = is_countable( $server->message->params ) ? count( $server->message->params ) : 0; } $post_id = url_to_postid( $args[1] ); // If pingbacks aren't open on this post, we'll still check whether this request is part of a potential DDOS, // but indicate to the server that pingbacks are indeed closed so we don't include this request in the user's stats, // since the user has already done their part by disabling pingbacks. $pingbacks_closed = false; $post = get_post( $post_id ); if ( ! $post || ! pings_open( $post ) ) { $pingbacks_closed = true; } $comment = array( 'comment_author_url' => $args[0], 'comment_post_ID' => $post_id, 'comment_author' => '', 'comment_author_email' => '', 'comment_content' => '', 'comment_type' => 'pingback', 'akismet_pre_check' => '1', 'comment_pingback_target' => $args[1], 'pingbacks_closed' => $pingbacks_closed ? '1' : '0', 'is_multicall' => $is_multicall, 'multicall_count' => $multicall_count, ); $comment = self::auto_check_comment( $comment, 'xml-rpc' ); if ( isset( $comment['akismet_result'] ) && 'true' == $comment['akismet_result'] ) { // Sad: tightly coupled with the IXR classes. Unfortunately the action provides no context and no way to return anything. $server->error( new IXR_Error( 0, 'Invalid discovery target' ) ); // Also note that if this was part of a multicall, a spam result will prevent the subsequent calls from being executed. // This is probably fine, but it raises the bar for what should be acceptable as a false positive. } } } /** * Ensure that we are loading expected scalar values from akismet_as_submitted commentmeta. * * @param mixed $meta_value * @return mixed */ private static function sanitize_comment_as_submitted( $meta_value ) { if ( empty( $meta_value ) ) { return $meta_value; } $meta_value = (array) $meta_value; foreach ( $meta_value as $key => $value ) { if ( ! is_scalar( $value ) ) { unset( $meta_value[ $key ] ); } else { // These can change, so they're not explicitly listed in comment_as_submitted_allowed_keys. if ( strpos( $key, 'POST_ak_' ) === 0 ) { continue; } if ( ! isset( self::$comment_as_submitted_allowed_keys[ $key ] ) ) { unset( $meta_value[ $key ] ); } } } return $meta_value; } public static function predefined_api_key() { if ( defined( 'WPCOM_API_KEY' ) ) { return true; } return apply_filters( 'akismet_predefined_api_key', false ); } /** * Controls the display of a privacy related notice underneath the comment form using the `akismet_comment_form_privacy_notice` option and filter respectively. * Default is top not display the notice, leaving the choice to site admins, or integrators. */ public static function display_comment_form_privacy_notice() { if ( 'display' !== apply_filters( 'akismet_comment_form_privacy_notice', get_option( 'akismet_comment_form_privacy_notice', 'hide' ) ) ) { return; } echo apply_filters( 'akismet_comment_form_privacy_notice_markup', '

' . sprintf( __( 'This site uses Akismet to reduce spam. Learn how your comment data is processed.', 'akismet' ), 'https://akismet.com/privacy/' ) . '

' ); } public static function load_form_js() { if ( ! is_admin() && ( ! function_exists( 'amp_is_request' ) || ! amp_is_request() ) && self::get_api_key() ) { wp_register_script( 'akismet-frontend', plugin_dir_url( __FILE__ ) . '_inc/akismet-frontend.js', array(), filemtime( plugin_dir_path( __FILE__ ) . '_inc/akismet-frontend.js' ), true ); wp_enqueue_script( 'akismet-frontend' ); } } /** * Add the form JavaScript when we detect that a supported form shortcode is being parsed. */ public static function load_form_js_via_filter( $return_value, $tag, $attr, $m ) { if ( in_array( $tag, array( 'contact-form', 'gravityform', 'contact-form-7', 'formidable', 'fluentform' ) ) ) { self::load_form_js(); } return $return_value; } /** * Was the last entry in the comment history created by Akismet? * * @param int $comment_id The ID of the comment. * @return bool */ public static function last_comment_status_change_came_from_akismet( $comment_id ) { $history = self::get_comment_history( $comment_id ); if ( empty( $history ) ) { return false; } $most_recent_history_event = $history[0]; if ( ! isset( $most_recent_history_event['event'] ) ) { return false; } $akismet_history_events = array( 'check-error', 'cron-retry-ham', 'cron-retry-spam', 'check-ham', 'check-spam', 'recheck-error', 'recheck-ham', 'recheck-spam', 'webhook-ham', 'webhook-spam', ); if ( in_array( $most_recent_history_event['event'], $akismet_history_events ) ) { return true; } return false; } } plugins/akismet/views/title.php000064400000000175147176754540012700 0ustar00

plugins/akismet/views/connect-jp.php000064400000011755147176754540013625 0ustar00

status, array( 'no-sub', 'missing' ) ) ) { ?>

user_email, null, null, null, array( 'class' => 'akismet-jetpack-gravatar' ) ); ?>

' . esc_html( $akismet_user->user_login ) . '' ); ?>
user_email ); ?>

status == 'cancelled' ) { ?>

user_email, null, null, null, array( 'class' => 'akismet-jetpack-gravatar' ) ); ?>

user_email ) ); ?>
user_email ); ?>

status == 'suspended' ) { ?>

user_email ) ); ?>

user_email, null, null, null, array( 'class' => 'akismet-jetpack-gravatar' ) ); ?>

' . esc_html( $akismet_user->user_login ) . '' ); ?>
user_email ); ?>


plugins/akismet/views/notice.php000064400000033233147176754540013041 0ustar00 array( 'href' => true, 'target' => true, ), ); $kses_allow_strong = array( 'strong' => true ); if ( ! isset( $type ) ) { $type = false; // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited } /* * Some notices (plugin, spam-check, spam-check-cron-disabled, alert and usage-limit) are also shown elsewhere in wp-admin, so have different classes applied so that they match the standard WordPress notice format. */ ?>
A
Almost done - configure Akismet and say goodbye to spam', 'akismet' ), $kses_allow_strong ); ?>

https://akismet.com/errors/' . esc_attr( $code ) . '' ); ?>

gethostbynamel function. Akismet cannot work correctly until this is fixed. Please contact your web host or firewall administrator and give them this information about Akismet’s system requirements.', 'akismet' ), esc_url( 'https://akismet.com/akismet-hosting-faq/' ) ), array_merge( $kses_allow_link, $kses_allow_strong, array( 'code' => true ) ) ); ?>

our guide about firewalls.', 'akismet' ), esc_url( 'https://akismet.com/akismet-hosting-faq/' ) ), $kses_allow_link ); ?>

update your payment details.', 'akismet' ), esc_url( 'https://akismet.com/account/' ) ), $kses_allow_link ); ?>

Akismet account page to reactivate your subscription.', 'akismet' ), esc_url( 'https://akismet.com/account/' ) ), $kses_allow_link ); ?>

Akismet support for assistance.', 'akismet' ), esc_url( 'https://akismet.com/contact/' ) ), $kses_allow_link ); ?>

contributing a token amount.', 'akismet' ), esc_url( 'https://akismet.com/pricing' ) ), $kses_allow_link ); ?>

Akismet support for assistance.', 'akismet' ), esc_url( 'https://akismet.com/contact/' ) ), $kses_allow_link ); ?>

choose a plan to get started with Akismet.', 'akismet' ), esc_url( 'https://akismet.com/pricing' ) ), $kses_allow_link ); ?>

get_var( "SELECT comment_ID FROM {$wpdb->comments} WHERE comment_approved = '0' LIMIT 1" ); if ( $at_least_one_comment_in_moderation ) { $check_pending_link = 'edit-comments.php?akismet_recheck=' . wp_create_nonce( 'akismet_recheck' ); } ?>

check pending comments?', 'akismet' ), esc_url( $check_pending_link ) ), $kses_allow_link ); ?>

contact Akismet support.', 'akismet' ), 'https://akismet.com/contact/' ), $kses_allow_link ); ?>

our guide about firewalls and check your server configuration.', 'akismet' ), 'https://blog.akismet.com/akismet-hosting-faq/' ), $kses_allow_link ); ?>

'; echo esc_html( __( 'Learn more about usage limits.', 'akismet' ) ); echo ''; break; case 'SECOND_MONTH_OVER_LIMIT': echo esc_html( __( 'Your Akismet usage has been over your plan’s limit for two consecutive months. Next month, we will restrict your account after you reach the limit. Please consider upgrading your plan.', 'akismet' ) ); echo ' '; echo ''; echo esc_html( __( 'Learn more about usage limits.', 'akismet' ) ); echo ''; break; case 'THIRD_MONTH_APPROACHING_LIMIT': echo esc_html( __( 'Your Akismet usage is nearing your plan’s limit for the third consecutive month. We will restrict your account after you reach the limit. Upgrade your plan so Akismet can continue blocking spam.', 'akismet' ) ); echo ' '; echo ''; echo esc_html( __( 'Learn more about usage limits.', 'akismet' ) ); echo ''; break; case 'THIRD_MONTH_OVER_LIMIT': case 'FOUR_PLUS_MONTHS_OVER_LIMIT': echo esc_html( __( 'Your Akismet usage has been over your plan’s limit for three consecutive months. We have restricted your account for the rest of the month. Upgrade your plan so Akismet can continue blocking spam.', 'akismet' ) ); echo ' '; echo ''; echo esc_html( __( 'Learn more about usage limits.', 'akismet' ) ); echo ''; break; default: } ?>

plugins/akismet/views/config.php000064400000035701147176754540013027 0ustar00 array( 'href' => true, ), ); ?>
$name ) ) ); ?>
  • spam ); ?> spam, 'akismet' ) ); ?>
  • spam ); ?> spam, 'akismet' ) ); ?>
  • accuracy ); ?>% missed_spam, 'akismet' ), number_format( $stat_totals['all']->missed_spam ) ) ) . ', '; /* translators: %s: number of false positive spam flagged by Akismet */ echo esc_html( sprintf( _n( '%s false positive', '%s false positives', $stat_totals['all']->false_positives, 'akismet' ), number_format( $stat_totals['all']->false_positives ) ) ); ?>

%s', esc_url( admin_url( 'edit-comments.php?comment_status=spam' ) ), esc_html__( 'spam folder', 'akismet' ) ); // The _n() needs to be on one line so the i18n tooling can extract the translator comment. /* translators: %1$s: spam folder link, %2$d: delete interval in days */ $delete_message = _n( 'Spam in the %1$s older than %2$d day is deleted automatically.', 'Spam in the %1$s older than %2$d days is deleted automatically.', $delete_interval, 'akismet' ); printf( wp_kses( $delete_message, $kses_allow_link_href ), wp_kses( $spam_folder_link, $kses_allow_link_href ), esc_html( $delete_interval ) ); ?>

next_billing_date ) : ?>
status === 'active' ) : ?>
( $akismet_user->account_type === 'free-api-key' && $akismet_user->status === 'active' ? __( 'Upgrade', 'akismet' ) : __( 'Change', 'akismet' ) ), 'redirect' => 'upgrade', ) ); ?>
plugins/akismet/views/stats.php000064400000002057147176754540012716 0ustar00
true ) ); ?>
plugins/akismet/views/logo.php000064400000001402147176754540012511 0ustar00 plugins/akismet/views/activate.php000064400000000261147176754540013353 0ustar00

plugins/akismet/views/get.php000064400000001771147176754540012341 0ustar00 0 ) { $submit_classes_attr = implode( ' ', $classes ); } ?>
plugins/akismet/views/setup.php000064400000000476147176754540012723 0ustar00

__( 'Choose an Akismet plan', 'akismet' ), 'classes' => array( 'akismet-button', 'akismet-is-primary' ) ) ); ?>
plugins/akismet/views/predefined.php000064400000000476147176754540013670 0ustar00

wp-config.php' ); ?>

plugins/akismet/views/enter.php000064400000002024147176754540012667 0ustar00

plugins/akismet/views/start.php000064400000001460147176754540012712 0ustar00
status, array( 'active', 'active-dunning', 'no-sub', 'missing', 'cancelled', 'suspended' ) ) ) { Akismet::view( 'connect-jp', compact( 'akismet_user' ) ); } else { Akismet::view( 'activate' ); } ?>
plugins/akismet/_inc/rtl/akismet-rtl.css000064400000030313147176754540014365 0ustar00/* This file was automatically generated on Aug 25 2023 03:41:43 */ .wp-admin.jetpack_page_akismet-key-config, .wp-admin.settings_page_akismet-key-config { background-color:#f3f6f8; } #submitted-on { position: relative; } #the-comment-list .author .akismet-user-comment-count { display: inline; } #the-comment-list .author a span { text-decoration: none; color: #999; } #the-comment-list .author a span.akismet-span-link { text-decoration: inherit; color: inherit; } #the-comment-list .akismet_remove_url { margin-right: 3px; color: #999; padding: 2px 0 2px 3px; } #the-comment-list .akismet_remove_url:hover { color: #A7301F; font-weight: bold; padding: 2px 0 2px 2px; } #dashboard_recent_comments .akismet-status { display: none; } .akismet-status { float: left; } .akismet-status a { color: #AAA; font-style: italic; } table.comments td.comment p a { text-decoration: underline; } table.comments td.comment p a:after { content: attr(href); color: #aaa; display: inline-block; /* Show the URL without the link's underline extending under it. */ padding: 0 1ex; /* Because it's inline block, we can't just use spaces in the content: attribute to separate it from the link text. */ } .mshot-arrow { width: 0; height: 0; border-top: 10px solid transparent; border-bottom: 10px solid transparent; border-left: 10px solid #5C5C5C; position: absolute; right: -6px; top: 91px; } .mshot-container { background: #5C5C5C; position: absolute; top: -94px; padding: 7px; width: 450px; height: 338px; z-index: 20000; -moz-border-radius: 6px; border-radius: 6px; -webkit-border-radius: 6px; } .akismet-mshot { position: absolute; z-index: 100; } .akismet-mshot .mshot-image { margin: 0; height: 338px; width: 450px; } .checkforspam { display: inline-block !important; } .checkforspam-spinner { display: inline-block; margin-top: 7px; } .akismet-right { float: left; } .akismet-card .akismet-right { margin: 1em 0; } .akismet-alert-text { color: #dd3d36; font-weight: bold; font-size: 120%; margin-top: .5rem; } .akismet-new-snapshot { margin-top: 1em; text-align: center; background: #fff; } .akismet-new-snapshot h3 { background: #f5f5f5; color: #888; font-size: 11px; margin: 0; } .akismet-new-snapshot ul li { color: #999; font-size: 11px; text-transform: uppercase; box-sizing: border-box; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -ms-box-sizing: border-box; } .akismet-new-snapshot__number { display: block; font-size: 32px; font-weight: lighter; line-height: 1.5em; } .akismet-settings th:first-child { vertical-align: top; padding-top: 15px; } .akismet-settings th.akismet-api-key { vertical-align: middle; padding-top: 0; } .akismet-settings span.akismet-note{ float: right; padding-right: 23px; font-size: 75%; margin-top: -10px; } /** * For the activation notice on the plugins page. */ #akismet_setup_prompt { background: none; border: none; margin: 0; padding: 0; width: 100%; } .akismet_activate { border: 1px solid #4F800D; padding: 5px; margin: 15px 0; background: #83AF24; background-image: -webkit-gradient(linear, 0% 0, 80% 100%, from(#83AF24), to(#4F800D)); background-image: -moz-linear-gradient(-80% 100% 120deg, #4F800D, #83AF24); -moz-border-radius: 3px; border-radius: 3px; -webkit-border-radius: 3px; position: relative; overflow: hidden; } .akismet_activate .aa_a { position: absolute; top: -5px; left: 10px; font-size: 140px; color: #769F33; font-family: Georgia, "Times New Roman", Times, serif; } .akismet_activate .aa_button { font-weight: bold; border: 1px solid #029DD6; border-top: 1px solid #06B9FD; font-size: 15px; text-align: center; padding: 9px 0 8px 0; color: #FFF; background: #029DD6; background-image: -webkit-gradient(linear, 0% 0, 0% 100%, from(#029DD6), to(#0079B1)); background-image: -moz-linear-gradient(0% 100% 90deg, #0079B1, #029DD6); -moz-border-radius: 2px; border-radius: 2px; -webkit-border-radius: 2px; width: 100%; cursor: pointer; margin: 0; } .akismet_activate .aa_button:hover { text-decoration: none !important; border: 1px solid #029DD6; border-bottom: 1px solid #00A8EF; font-size: 15px; text-align: center; padding: 9px 0 8px 0; color: #F0F8FB; background: #0079B1; background-image: -webkit-gradient(linear, 0% 0, 0% 100%, from(#0079B1), to(#0092BF)); background-image: -moz-linear-gradient(0% 100% 90deg, #0092BF, #0079B1); -moz-border-radius: 2px; border-radius: 2px; -webkit-border-radius: 2px; } .akismet_activate .aa_button_border { border: 1px solid #006699; -moz-border-radius: 2px; border-radius: 2px; -webkit-border-radius: 2px; background: #029DD6; background-image: -webkit-gradient(linear, 0% 0, 0% 100%, from(#029DD6), to(#0079B1)); background-image: -moz-linear-gradient(0% 100% 90deg, #0079B1, #029DD6); } .akismet_activate .aa_button_container { box-sizing: border-box; display: inline-block; background: #DEF1B8; padding: 5px; -moz-border-radius: 2px; border-radius: 2px; -webkit-border-radius: 2px; width: 266px; } .akismet_activate .aa_description { position: absolute; top: 22px; right: 285px; margin-right: 25px; color: #E5F2B1; font-size: 15px; } .akismet_activate .aa_description strong { color: #FFF; font-weight: normal; } @media (max-width: 550px) { .akismet_activate .aa_a { display: none; } .akismet_activate .aa_button_container { width: 100%; } } @media (max-width: 782px) { .akismet_activate { min-width: 0; } } @media (max-width: 850px) { #akismet_setup_prompt .aa_description { display: none; } .akismet_activate { min-width: 0; } } .jetpack_page_akismet-key-config #wpcontent, .settings_page_akismet-key-config #wpcontent { padding-right: 0; } .akismet-masthead { background-color:#fff; text-align:center; box-shadow:0 1px 0 rgba(200,215,225,0.5),0 1px 2px #e9eff3 } @media (max-width: 45rem) { .akismet-masthead { padding:0 1.25rem } } .akismet-masthead__inside-container { padding:.375rem 0; margin:0 auto; width:100%; max-width:45rem; text-align: right; } .akismet-masthead__logo-container { padding:.3125rem 0 0 } .akismet-masthead__logo-link { display:inline-block; outline:none; vertical-align:middle } .akismet-masthead__logo-link:focus { line-height:0; box-shadow:0 0 0 2px #78dcfa } .akismet-masthead__logo-link+code { margin:0 10px; padding:5px 9px; border-radius:2px; background:#e6ecf1; color:#647a88 } .akismet-masthead__links { display:-ms-flexbox; display:flex; -ms-flex-flow:row wrap; flex-flow:row wrap; -ms-flex:2 50%; flex:2 50%; -ms-flex-pack:end; justify-content:flex-end; margin:0 } @media (max-width: 480px) { .akismet-masthead__links { padding-left:.625rem } } .akismet-masthead__link-li { margin:0; padding:0 } .akismet-masthead__link { font-style:normal; color:#0087be; padding:.625rem; display:inline-block } .akismet-masthead__link:visited { color:#0087be } .akismet-masthead__link:active,.akismet-masthead__link:hover { color:#00aadc } .akismet-masthead__link:hover { text-decoration:underline } .akismet-masthead__link .dashicons { display:none } @media (max-width: 480px) { .akismet-masthead__link:hover,.akismet-masthead__link:active { text-decoration:none } .akismet-masthead__link .dashicons { display:block; font-size:1.75rem } .akismet-masthead__link span+span { display:none } } .akismet-masthead__link-li:last-of-type .akismet-masthead__link { padding-left:0 } .akismet-lower { margin: 0 auto; text-align: right; max-width: 45rem; padding: 1.5rem; } .akismet-lower .notice { margin-bottom: 2rem; } .akismet-card { margin-top: 1rem; margin-bottom: 0; position: relative; box-sizing: border-box; background: white; } .akismet-card:after, .akismet-card .inside:after, .akismet-masthead__logo-container:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } .akismet-card .inside { padding: 1.5rem; padding-top: 1rem; } .akismet-card .akismet-card-actions { margin-top: 1rem; } .jetpack_page_akismet-key-config .update-nag, .settings_page_akismet-key-config .update-nag { display: none; } .akismet-masthead .akismet-right { line-height: 2.125rem; font-size: 0.9rem; } .akismet-box { box-sizing: border-box; background: white; border: 1px solid rgba(200, 215, 225, 0.5); } .akismet-box h2, .akismet-box h3 { padding: 1.5rem 1.5rem .5rem 1.5rem; margin: 0; } .akismet-box p { padding: 0 1.5rem 1.5rem 1.5rem; margin: 0; } .akismet-jetpack-email { font-style: oblique; } .akismet-jetpack-gravatar { padding: 0 1.5rem 0 0; float: right; margin-left: 1rem; width: 54px; height: 54px; } .akismet-box p:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } .akismet-box .akismet-right { padding-left: 1.5rem; } .akismet-boxes .akismet-box { margin-bottom: 0; padding: 0; margin-top: -1px; } .akismet-boxes .akismet-box:last-child { margin-bottom: 1.5rem; } .akismet-boxes .akismet-box:first-child { margin-top: 1.5rem; } .akismet-box-header { max-width: 700px; margin: 0 auto 40px auto; line-height: 1.5; } .akismet-box-header h2 { margin: 1.5rem 10% 0; font-size: 1.375rem; font-weight: 700; color: #000; } .akismet-box .centered { text-align: center; } .akismet-box .akismet-toggles { margin: 3rem 0; } .akismet-box .akismet-ak-connect, .akismet-box .toggle-jp-connect { display: none; } .akismet-button, .akismet-button:hover, .akismet-button:visited { background: white; border-color: #c8d7e1; border-style: solid; border-width: 1px 1px 2px; color: #2e4453; cursor: pointer; display: inline-block; margin: 0; outline: 0; overflow: hidden; font-size: 14px; font-weight: 500; text-overflow: ellipsis; text-decoration: none; vertical-align: top; box-sizing: border-box; font-size: 14px; line-height: 21px; border-radius: 4px; padding: 7px 14px 9px; -webkit-appearance: none; -moz-appearance: none; appearance: none; } .akismet-button:hover { border-color: #a8bece; } .akismet-button:active { border-width: 2px 1px 1px; } .akismet-is-primary, .akismet-is-primary:hover, .akismet-is-primary:visited { background: #00aadc; border-color: #0087be; color: white; } .akismet-is-primary:hover, .akismet-is-primary:focus { border-color: #005082; } .akismet-is-primary:hover { border-color: #005082; } .akismet-section-header { position: relative; margin: 0 auto 0.625rem auto; padding: 1rem; box-sizing: border-box; box-shadow: 0 0 0 1px rgba(200, 215, 225, 0.5), 0 1px 2px #e9eff3; background: #ffffff; width: 100%; padding-top: 0.6875rem; padding-bottom: 0.6875rem; display: flex; } .akismet-section-header__label { display: -ms-flexbox; display: flex; -ms-flex-align: center; align-items: center; -ms-flex-positive: 1; flex-grow: 1; line-height: 1.75rem; position: relative; font-size: 0.875rem; color: #4f748e; } .akismet-section-header__actions { line-height: 1.75rem; } .akismet-setup-instructions { text-align: center; } .akismet-setup-instructions form { padding-bottom: 1.5rem; } div.error.akismet-usage-limit-alert { padding: 25px 15px 25px 45px; display: flex; align-items: center; } #akismet-plugin-container .akismet-usage-limit-alert { margin: 0 auto 0.625rem auto; box-sizing: border-box; box-shadow: 0 0 0 1px rgba(200, 215, 225, 0.5), 0 1px 2px #e9eff3; border: none; border-right: 4px solid #d63638; } .akismet-usage-limit-alert .akismet-usage-limit-logo { width: 38px; min-width: 38px; height: 38px; border-radius: 20px; margin-left: 18px; background: black; position: relative; } .akismet-usage-limit-alert .akismet-usage-limit-logo img { position: absolute; width: 22px; right: 8px; top: 10px; } .akismet-usage-limit-alert .akismet-usage-limit-text { flex-grow: 1; margin-left: 18px; } .akismet-usage-limit-alert h3 { margin: 0; } .akismet-usage-limit-alert .akismet-usage-limit-cta { text-align: left; } #akismet-plugin-container .akismet-usage-limit-cta a { color: #d63638; } @media (max-width: 550px) { div.error.akismet-usage-limit-alert { display: block; } .akismet-usage-limit-alert .akismet-usage-limit-logo, .akismet-usage-limit-alert .akismet-usage-limit-text { margin-bottom: 15px; } .akismet-usage-limit-alert .akismet-usage-limit-cta { text-align: right; } }plugins/akismet/_inc/rtl/akismet-admin-rtl.css000064400000017062147176754540015461 0ustar00/* This file was automatically generated on Nov 20 2023 03:10:42 */ #akismet-plugin-container { background-color: var(--akismet-color-light-grey); font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen-Sans', 'Ubuntu', 'Cantarell', 'Helvetica Neue', sans-serif; --akismet-color-charcoal: #272635; --akismet-color-light-grey: #f6f7f7; --akismet-color-mid-grey: #a7aaad; --akismet-color-dark-grey: #646970; --akismet-color-grey-80: #2c3338; --akismet-color-grey-100: #101517; --akismet-color-white: #fff; --akismet-color-mid-green: #357b49; --akismet-color-mid-red: #e82c3f; --akismet-color-light-blue: #256eff; --akismet-color-notice-light-green: #dbf0e1; --akismet-color-notice-dark-green: #69bf82; --akismet-color-notice-light-red: #ffdbde; --akismet-color-notice-dark-red: #ff6676; } #akismet-plugin-container a { color: var(--akismet-color-mid-green); } #akismet-plugin-container button:focus-visible, #akismet-plugin-container input:focus-visible { border: 0; box-shadow: none; outline: 2px solid var(--akismet-color-light-blue); } .akismet-masthead { box-shadow: none; } .akismet-masthead__logo { margin: 20px 0; } .akismet-section-header { box-shadow: none; margin-bottom: 0; } .akismet-section-header__label { color: var(--akismet-color-charcoal); font-weight: 600; } .akismet-button, .akismet-button:hover { background-color: var(--akismet-color-mid-green); border: 0; color: #fff; } /* Need this specificity to override the existing header rule */ .akismet-new-snapshot h3.akismet-new-snapshot__header { background: none; font-size: 13px; color: var(--akismet-color-charcoal); text-align: right; text-transform: none; } .akismet-new-snapshot .akismet-new-snapshot__number { color: var(--akismet-color-charcoal); letter-spacing: -1px; text-align: right; } .akismet-new-snapshot li.akismet-new-snapshot__item { color: var(--akismet-color-dark-grey); font-size: 13px; text-align: right; text-transform: none; } .akismet-masthead__logo-link { min-height: 50px; } .akismet-masthead__back-link-container { margin-top: 16px; margin-bottom: 2px; } /* Need this specificity to override the existing link rule */ #akismet-plugin-container a.akismet-masthead__back-link { background-image: url(../img/arrow-left.svg); background-position: right; background-repeat: no-repeat; background-size: 16px; color: var(--akismet-color-charcoal); font-weight: 400; padding-right: 20px; text-decoration: none; } #akismet-plugin-container a.akismet-masthead__back-link:hover { text-decoration: underline; } .akismet-new-snapshot__item { border-top: 1px solid var(--akismet-color-light-grey); border-right: 1px solid var(--akismet-color-light-grey); padding: 1em; } .akismet-new-snapshot li:first-child { border-right: none; } .akismet-new-snapshot__list { display: flex; margin-bottom: 0; } .akismet-new-snapshot__item { flex: 1 0 33.33%; margin-bottom: 0; padding-right: 1.5em; padding-left: 1.5em; } .akismet-new-snapshot__chart { padding: 1em; } .akismet-box { border: 0; } .akismet-box, .akismet-card { box-shadow: 0 4px 12px rgba(0, 0, 0, 0.06), 0 0 2px rgba(0, 0, 0, 0.16); border-radius: 8px; overflow: hidden; } .akismet-card { margin: 32px auto 0 auto; } .akismet-lower { padding-top: 0; } .akismet-lower .inside { padding: 0; } .akismet-section-header__label { margin: 0; } .akismet-settings__row { border-bottom: 1px solid var(--akismet-color-light-grey); display: block; padding: 1em 1.5em; } .akismet-settings__row-input { margin-right: auto; } .akismet-settings__row-title { font-weight: 500; font-size: 1em; margin: 0; margin-bottom: 1em; } .akismet-settings__row-description { margin-top: 0.5em; } .akismet-card-actions { display: flex; justify-content: flex-end; padding: 1em; } .akismet-card-actions__secondary-action { align-self: center; margin-left: auto; } .akismet-card-actions__secondary-action a[target="_blank"]::after { background: url('../img/icon-external.svg') no-repeat; background-size: contain; content: ""; display: inline-block; height: 16px; margin-right: 5px; vertical-align: middle; width: 16px; } .akismet-settings__row label { padding-bottom: 1em; } .akismet-settings__row-note { font-size: 0.9em; margin-top: 0.4em; } .akismet-settings__row input[type="checkbox"], .akismet-settings__row input[type="radio"] { accent-color: var(--akismet-color-mid-green); box-shadow: none; flex-shrink: 0; margin: 2px 0 0 0; } .akismet-settings__row input[type="checkbox"] { margin-top: 1px; vertical-align: top; -webkit-appearance: checkbox; } .akismet-settings__row input[type="radio"] { -webkit-appearance: radio; } /* Fix up misbehaving wp-admin styles in Chrome (from forms and colors stylesheets) */ .akismet-settings__row input[type="checkbox"]:checked:before { content: ''; } .akismet-settings__row input[type="radio"]:checked:before { background: none; } .akismet-settings__row input[type="checkbox"]:checked:hover, .akismet-settings__row input[type="radio"]:checked:hover { accent-color: var(--akismet-color-mid-green); } .akismet-button:disabled { background-color: var(--akismet-color-mid-grey); color: var(--akismet-color-white); cursor: arrow; } .akismet-awaiting-stats, .akismet-account { padding: 0 1rem 1rem 1rem; margin: 0; } .akismet-account { padding-bottom: 0; } .akismet-account th { font-weight: 500; padding-left: 1em; } .akismet-account th, .akismet-account td { padding-bottom: 1em; } .akismet-settings__row-input-label { align-items: center; display: flex; } .akismet-settings__row-label-text { padding-right: 0.5em; margin-top: 2px; } .akismet-alert { border-right: 8px solid; border-radius: 8px; margin: 20px 0; padding: 0.2em 1em; } .akismet-alert__heading { font-size: 1em; } .akismet-alert.is-good { background-color: var(--akismet-color-notice-light-green); border-right-color: var(--akismet-color-notice-dark-green); } .akismet-alert.is-neutral { background-color: var(--akismet-color-white); border-right-color: var(--akismet-color-dark-grey); } .akismet-alert.is-bad { background-color: var(--akismet-color-notice-light-red); border-right-color: var(--akismet-color-notice-dark-red); } #akismet-plugin-container .akismet-alert.is-good a, #akismet-plugin-container .akismet-alert.is-bad a { /* For better contrast - green isn't great */ color: var(--akismet-color-grey-80); } /* Setup - API key input */ .akismet-enter-api-key-box { margin: 1.5rem 0; } .akismet-enter-api-key-box__reveal { background: none; border: 0; color: var(--akismet-color-mid-green); cursor: pointer; text-decoration: underline; } .akismet-enter-api-key-box__form-wrapper { display: none; margin-top: 1.5rem; } .akismet-enter-api-key-box__input-wrapper { box-sizing: border-box; display: flex; flex-wrap: nowrap; padding: 0 1.5rem; width: 100%; } .akismet-enter-api-key-box__key-input { flex-grow: 1; margin-left: 1rem; } h3.akismet-enter-api-key-box__header { padding-top: 0; padding-bottom: 1em; text-align: right; } @media screen and (max-width: 782px) { .akismet-new-snapshot__list { display: block; } .akismet-new-snapshot__number { float: left; font-size: 20px; font-weight: 500; margin-top: -16px; } .akismet-new-snapshot__header { font-size: 14px; font-weight: 500; } .akismet-new-snapshot__text { font-size: 12px; } .akismet-settings__row input[type="checkbox"], .akismet-settings__row input[type="radio"] { height: 24px; width: 24px; } .akismet-settings__row-label-text { padding-right: 0.8em; } .akismet-settings__row input[type="checkbox"], .akismet-settings__row input[type="radio"] { margin-top: 0; } }plugins/akismet/_inc/akismet.css000064400000030230147176754540012763 0ustar00.wp-admin.jetpack_page_akismet-key-config, .wp-admin.settings_page_akismet-key-config { background-color:#f3f6f8; } #submitted-on { position: relative; } #the-comment-list .author .akismet-user-comment-count { display: inline; } #the-comment-list .author a span { text-decoration: none; color: #999; } #the-comment-list .author a span.akismet-span-link { text-decoration: inherit; color: inherit; } #the-comment-list .akismet_remove_url { margin-left: 3px; color: #999; padding: 2px 3px 2px 0; } #the-comment-list .akismet_remove_url:hover { color: #A7301F; font-weight: bold; padding: 2px 2px 2px 0; } #dashboard_recent_comments .akismet-status { display: none; } .akismet-status { float: right; } .akismet-status a { color: #AAA; font-style: italic; } table.comments td.comment p a { text-decoration: underline; } table.comments td.comment p a:after { content: attr(href); color: #aaa; display: inline-block; /* Show the URL without the link's underline extending under it. */ padding: 0 1ex; /* Because it's inline block, we can't just use spaces in the content: attribute to separate it from the link text. */ } .mshot-arrow { width: 0; height: 0; border-top: 10px solid transparent; border-bottom: 10px solid transparent; border-right: 10px solid #5C5C5C; position: absolute; left: -6px; top: 91px; } .mshot-container { background: #5C5C5C; position: absolute; top: -94px; padding: 7px; width: 450px; height: 338px; z-index: 20000; -moz-border-radius: 6px; border-radius: 6px; -webkit-border-radius: 6px; } .akismet-mshot { position: absolute; z-index: 100; } .akismet-mshot .mshot-image { margin: 0; height: 338px; width: 450px; } .checkforspam { display: inline-block !important; } .checkforspam-spinner { display: inline-block; margin-top: 7px; } .akismet-right { float: right; } .akismet-card .akismet-right { margin: 1em 0; } .akismet-alert-text { color: #dd3d36; font-weight: bold; font-size: 120%; margin-top: .5rem; } .akismet-new-snapshot { margin-top: 1em; text-align: center; background: #fff; } .akismet-new-snapshot h3 { background: #f5f5f5; color: #888; font-size: 11px; margin: 0; } .akismet-new-snapshot ul li { color: #999; font-size: 11px; text-transform: uppercase; box-sizing: border-box; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -ms-box-sizing: border-box; } .akismet-new-snapshot__number { display: block; font-size: 32px; font-weight: lighter; line-height: 1.5em; } .akismet-settings th:first-child { vertical-align: top; padding-top: 15px; } .akismet-settings th.akismet-api-key { vertical-align: middle; padding-top: 0; } .akismet-settings span.akismet-note{ float: left; padding-left: 23px; font-size: 75%; margin-top: -10px; } /** * For the activation notice on the plugins page. */ #akismet_setup_prompt { background: none; border: none; margin: 0; padding: 0; width: 100%; } .akismet_activate { border: 1px solid #4F800D; padding: 5px; margin: 15px 0; background: #83AF24; background-image: -webkit-gradient(linear, 0% 0, 80% 100%, from(#83AF24), to(#4F800D)); background-image: -moz-linear-gradient(80% 100% 120deg, #4F800D, #83AF24); -moz-border-radius: 3px; border-radius: 3px; -webkit-border-radius: 3px; position: relative; overflow: hidden; } .akismet_activate .aa_a { position: absolute; top: -5px; right: 10px; font-size: 140px; color: #769F33; font-family: Georgia, "Times New Roman", Times, serif; } .akismet_activate .aa_button { font-weight: bold; border: 1px solid #029DD6; border-top: 1px solid #06B9FD; font-size: 15px; text-align: center; padding: 9px 0 8px 0; color: #FFF; background: #029DD6; background-image: -webkit-gradient(linear, 0% 0, 0% 100%, from(#029DD6), to(#0079B1)); background-image: -moz-linear-gradient(0% 100% 90deg, #0079B1, #029DD6); -moz-border-radius: 2px; border-radius: 2px; -webkit-border-radius: 2px; width: 100%; cursor: pointer; margin: 0; } .akismet_activate .aa_button:hover { text-decoration: none !important; border: 1px solid #029DD6; border-bottom: 1px solid #00A8EF; font-size: 15px; text-align: center; padding: 9px 0 8px 0; color: #F0F8FB; background: #0079B1; background-image: -webkit-gradient(linear, 0% 0, 0% 100%, from(#0079B1), to(#0092BF)); background-image: -moz-linear-gradient(0% 100% 90deg, #0092BF, #0079B1); -moz-border-radius: 2px; border-radius: 2px; -webkit-border-radius: 2px; } .akismet_activate .aa_button_border { border: 1px solid #006699; -moz-border-radius: 2px; border-radius: 2px; -webkit-border-radius: 2px; background: #029DD6; background-image: -webkit-gradient(linear, 0% 0, 0% 100%, from(#029DD6), to(#0079B1)); background-image: -moz-linear-gradient(0% 100% 90deg, #0079B1, #029DD6); } .akismet_activate .aa_button_container { box-sizing: border-box; display: inline-block; background: #DEF1B8; padding: 5px; -moz-border-radius: 2px; border-radius: 2px; -webkit-border-radius: 2px; width: 266px; } .akismet_activate .aa_description { position: absolute; top: 22px; left: 285px; margin-left: 25px; color: #E5F2B1; font-size: 15px; } .akismet_activate .aa_description strong { color: #FFF; font-weight: normal; } @media (max-width: 550px) { .akismet_activate .aa_a { display: none; } .akismet_activate .aa_button_container { width: 100%; } } @media (max-width: 782px) { .akismet_activate { min-width: 0; } } @media (max-width: 850px) { #akismet_setup_prompt .aa_description { display: none; } .akismet_activate { min-width: 0; } } .jetpack_page_akismet-key-config #wpcontent, .settings_page_akismet-key-config #wpcontent { padding-left: 0; } .akismet-masthead { background-color:#fff; text-align:center; box-shadow:0 1px 0 rgba(200,215,225,0.5),0 1px 2px #e9eff3 } @media (max-width: 45rem) { .akismet-masthead { padding:0 1.25rem } } .akismet-masthead__inside-container { padding:.375rem 0; margin:0 auto; width:100%; max-width:45rem; text-align: left; } .akismet-masthead__logo-container { padding:.3125rem 0 0 } .akismet-masthead__logo-link { display:inline-block; outline:none; vertical-align:middle } .akismet-masthead__logo-link:focus { line-height:0; box-shadow:0 0 0 2px #78dcfa } .akismet-masthead__logo-link+code { margin:0 10px; padding:5px 9px; border-radius:2px; background:#e6ecf1; color:#647a88 } .akismet-masthead__links { display:-ms-flexbox; display:flex; -ms-flex-flow:row wrap; flex-flow:row wrap; -ms-flex:2 50%; flex:2 50%; -ms-flex-pack:end; justify-content:flex-end; margin:0 } @media (max-width: 480px) { .akismet-masthead__links { padding-right:.625rem } } .akismet-masthead__link-li { margin:0; padding:0 } .akismet-masthead__link { font-style:normal; color:#0087be; padding:.625rem; display:inline-block } .akismet-masthead__link:visited { color:#0087be } .akismet-masthead__link:active,.akismet-masthead__link:hover { color:#00aadc } .akismet-masthead__link:hover { text-decoration:underline } .akismet-masthead__link .dashicons { display:none } @media (max-width: 480px) { .akismet-masthead__link:hover,.akismet-masthead__link:active { text-decoration:none } .akismet-masthead__link .dashicons { display:block; font-size:1.75rem } .akismet-masthead__link span+span { display:none } } .akismet-masthead__link-li:last-of-type .akismet-masthead__link { padding-right:0 } .akismet-lower { margin: 0 auto; text-align: left; max-width: 45rem; padding: 1.5rem; } .akismet-lower .notice { margin-bottom: 2rem; } .akismet-card { margin-top: 1rem; margin-bottom: 0; position: relative; box-sizing: border-box; background: white; } .akismet-card:after, .akismet-card .inside:after, .akismet-masthead__logo-container:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } .akismet-card .inside { padding: 1.5rem; padding-top: 1rem; } .akismet-card .akismet-card-actions { margin-top: 1rem; } .jetpack_page_akismet-key-config .update-nag, .settings_page_akismet-key-config .update-nag { display: none; } .akismet-masthead .akismet-right { line-height: 2.125rem; font-size: 0.9rem; } .akismet-box { box-sizing: border-box; background: white; border: 1px solid rgba(200, 215, 225, 0.5); } .akismet-box h2, .akismet-box h3 { padding: 1.5rem 1.5rem .5rem 1.5rem; margin: 0; } .akismet-box p { padding: 0 1.5rem 1.5rem 1.5rem; margin: 0; } .akismet-jetpack-email { font-style: oblique; } .akismet-jetpack-gravatar { padding: 0 0 0 1.5rem; float: left; margin-right: 1rem; width: 54px; height: 54px; } .akismet-box p:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } .akismet-box .akismet-right { padding-right: 1.5rem; } .akismet-boxes .akismet-box { margin-bottom: 0; padding: 0; margin-top: -1px; } .akismet-boxes .akismet-box:last-child { margin-bottom: 1.5rem; } .akismet-boxes .akismet-box:first-child { margin-top: 1.5rem; } .akismet-box-header { max-width: 700px; margin: 0 auto 40px auto; line-height: 1.5; } .akismet-box-header h2 { margin: 1.5rem 10% 0; font-size: 1.375rem; font-weight: 700; color: #000; } .akismet-box .centered { text-align: center; } .akismet-box .akismet-toggles { margin: 3rem 0; } .akismet-box .akismet-ak-connect, .akismet-box .toggle-jp-connect { display: none; } .akismet-button, .akismet-button:hover, .akismet-button:visited { background: white; border-color: #c8d7e1; border-style: solid; border-width: 1px 1px 2px; color: #2e4453; cursor: pointer; display: inline-block; margin: 0; outline: 0; overflow: hidden; font-size: 14px; font-weight: 500; text-overflow: ellipsis; text-decoration: none; vertical-align: top; box-sizing: border-box; font-size: 14px; line-height: 21px; border-radius: 4px; padding: 7px 14px 9px; -webkit-appearance: none; -moz-appearance: none; appearance: none; } .akismet-button:hover { border-color: #a8bece; } .akismet-button:active { border-width: 2px 1px 1px; } .akismet-is-primary, .akismet-is-primary:hover, .akismet-is-primary:visited { background: #00aadc; border-color: #0087be; color: white; } .akismet-is-primary:hover, .akismet-is-primary:focus { border-color: #005082; } .akismet-is-primary:hover { border-color: #005082; } .akismet-section-header { position: relative; margin: 0 auto 0.625rem auto; padding: 1rem; box-sizing: border-box; box-shadow: 0 0 0 1px rgba(200, 215, 225, 0.5), 0 1px 2px #e9eff3; background: #ffffff; width: 100%; padding-top: 0.6875rem; padding-bottom: 0.6875rem; display: flex; } .akismet-section-header__label { display: -ms-flexbox; display: flex; -ms-flex-align: center; align-items: center; -ms-flex-positive: 1; flex-grow: 1; line-height: 1.75rem; position: relative; font-size: 0.875rem; color: #4f748e; } .akismet-section-header__actions { line-height: 1.75rem; } .akismet-setup-instructions { text-align: center; } .akismet-setup-instructions form { padding-bottom: 1.5rem; } div.error.akismet-usage-limit-alert { padding: 25px 45px 25px 15px; display: flex; align-items: center; } #akismet-plugin-container .akismet-usage-limit-alert { margin: 0 auto 0.625rem auto; box-sizing: border-box; box-shadow: 0 0 0 1px rgba(200, 215, 225, 0.5), 0 1px 2px #e9eff3; border: none; border-left: 4px solid #d63638; } .akismet-usage-limit-alert .akismet-usage-limit-logo { width: 38px; min-width: 38px; height: 38px; border-radius: 20px; margin-right: 18px; background: black; position: relative; } .akismet-usage-limit-alert .akismet-usage-limit-logo img { position: absolute; width: 22px; left: 8px; top: 10px; } .akismet-usage-limit-alert .akismet-usage-limit-text { flex-grow: 1; margin-right: 18px; } .akismet-usage-limit-alert h3 { margin: 0; } .akismet-usage-limit-alert .akismet-usage-limit-cta { border-color: none; text-align: right; } #akismet-plugin-container .akismet-usage-limit-cta a { color: #d63638; } @media (max-width: 550px) { div.error.akismet-usage-limit-alert { display: block; } .akismet-usage-limit-alert .akismet-usage-limit-logo, .akismet-usage-limit-alert .akismet-usage-limit-text { margin-bottom: 15px; } .akismet-usage-limit-alert .akismet-usage-limit-cta { text-align: left; } }plugins/akismet/_inc/img/akismet-refresh-logo@2x.png000064400000005337147176754540016511 0ustar00PNG  IHDRX!PLTEGpL?O4zH4{I5zI4zI5{I4{H5{I5zJ7G4|I4{I5zH6xH4zJ6zJ/O6zH5{H6{I5|I4{I4{IhwN`􁭍BTͻрO`ů[kƁ[lu6zI5zH5zG7wG5{I3{G5{G4zI4|I1qPtRNSpϏ` opp@0`P p_o`   NIDATxч A@~?C@ޕ0[q)Ţ3M yauC;12nba5`& K\aKa/(l-:[tn1V(ܫ< ŐXܞyxGkqpD`9U,#YOko@\4]:}Xno]XN|U9ޚ뻾a{#*bJ,}? X^uXDF, g(STÌ/E;!E,E*|QZvW?>,I54e+ZJ>%`uyKֳ5[ݛ#/ŊvHa`ûsvWgu&,x4cpa,`P0z,q7}m_?uj닾,HrssN̸WT+XrX_7>36Y-{fq~#^ 뎼We+vSɻ0L/]Y}=66;_9C[8߫ӟvu+LtX`*y}bJڢɻ6b!' _V"*ý>Q(.ȉqpUQGufroJEb }'PRzGέ \ kD*+K0M|z ,@ֱƷbvF[-C!_?1T52v(,ĩ `9ND<1Q` Go9ky殳?=*"hG98(uUm 0uXT4KјjGx:p%RtNClI2yUr~eJFѩ؝KyifoGC(\dY,)?`7t0 !-"87@Qt&Gm0 .ja_g1őN^-X%UF;³z7͙XuY0uf/$Ϗv,2Ǣ"ol jhC|kas%Cg] ^3t ChYd!MҢI gl$1* 97{VSUM]6k''ibѡؓamGf  p G@Tvuf_UyX:iE?]&Đw$itDe5EA>\km2aƻIWqwbAk }&>jFSeI}0Ig#@fYv,' 0D^ř>bMr*Y,v}pO֫a_wŰx Ţ_*sA,AQ FzbgbESe;yXa d c`}-F,Lsa,t* o].KKVND52Q,BnWUrȻ\~WtҡݗӕƂ jtKg+&c/GR W0‡'tՙt_.瘅 І́K-gcq,X._.Ӣ_"…&"*Kxsוrte%}.fU}ve-y~)-LqJ׳T`J\͂.}RύX\ Kmre,1Hiˇ5jY@?@%^5Ak -CR,fuq Q&nv{y,BO8_`cX,h[;Z-^F5$l:P4yGrrV;h= 4ڒ IXFh+Kplugins/akismet/_inc/img/arrow-left.svg000064400000000307147176754540014175 0ustar00plugins/akismet/_inc/img/logo-full-2x.png000064400000011674147176754540014340 0ustar00PNG  IHDRBɻ*PLTE_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>DtRNS  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~z9|4lIDATyxV BD p[qcQpĭQKđ*VBu@Q+ZEF h 6ÎI|9}|\k7 ~ ҳ~af4 DH/41aK-O @0y4ͥcE[!]+e I%] …Ԋ&AO>r~vvQVFǒt-ef8+,C#$Gc%?$FRKm5J*SȀɡm& ҷT4 |tLQ(2Jdmpaj7QH &#-Ӗ^6j7Q4&#- [LjYp P.Rm 6r=4)VUxH._a .Tq2Bޢm~!m9HG7jMy9 GU"Km;.%!{!/C@;:!@2iFL~!% ~S_7jMI<#cT* d! T攓r@NC6\^0jHHgr#c+⓳eBDOAoRa <AITFl*zhI ZI RxBRdЕ /-}M ZAڞAAT*T@d u+aaP, ~T*k 32T.D˧RYj#%A -ԑ#L.) LD@=C0ZBe1T 7iقtT ZI J{đO AQ a=LS?< 2P{ ~TK--#'C!d$ݰK۞,ĒO A0줲U90{UrG1t!*eA&r3؆!d"/ѶXfRY68< UQ-IY02~uulp  !}GA RרP)Bȣm2J7ԊaTMe|F1N^^7GP5&i_#&z2@#T@a[  ӶAvLZP5 6kڵw8€w͂ Jb(c Uhz_V;aөLJۏel]AXk?%ȧuQ59d ET2ƒ?E=}CS!oZFT~Q'j&OCNo @`VHV3i5阏 ̃~ |*aԉZSP, ҡ"RYH9LZ=t2&WU 0H- F5T«;mkaTHe"-NaҊވg%INijʇ0 *E0N- F5T΅ׅTb*} 0[DvCm9HF~ P)QjY0:B,xS@:JG9dr2qP鈣x$'ȜJ(R@kv jG:JL@ôLF tA,Ԯx1l,"<mO&=e¨JWxE %T#5yN~OW&v--UP#װu(T/LRi˨A:ʨGZ>G r&]C6`KSt`D  ̇Qj0Tv <z R3ĐM ( F ":*K*`ԇZkQ9U*!mHm(]6A@mYB"2FWS5Rx2)LH-]6pu P?ЁH%T`" LQIe0Rj :"Z. uFyjTB^rFRXjqd F*6\#R.pHZN 9j@>^Ti0MFQC7"cɷB* QzrKrp L3}PyFsjO90*>^G ٴhD\j- =$zS$„FD:DePIe/QHɦm ktZ g•0UාEDDm9L 0 Cp~ mo7z,k mǫtu),`Hm~6R\JGO MFN&ԗ"@T^BR:"nC*FUAJt54P0BWwO?C52DaetM zzۺbۛvTQ_ӵ khd2qeB1I GszC8B^g0 KiDYIWm 9&܉S0b:ޒ5k6Ztd"`$hkת)Ϡ :[Z7]{f %oajND)aC=^FA#Լ A4I{]` >>4v_\@l_a_xAՖśSZM/Acr9} z[ēH n奭5\tu޸aJF坐p,C=M6C4{d~M*zv>Lٕ43LnaHOhR?fydc}@l&q~NH X L_2nǐ{ {hs$or-@pL~@F!HȞ@5dC<[nv>lm+7,lV}XtRi)8& }oaC΀&AwOd _{o 8: AX;t1W5AjF h8j11MIENDB`plugins/akismet/_inc/img/logo-a-2x.png000064400000001610147176754540013603 0ustar00PNG  IHDR, iFz pHYs%%IR$sRGBgAMA aIDATx͘MHQKC++ccתZDAצڵ JA1(hrU}$Hedm,̏<s77f|o|o^{w#X̼qR=(+]|5Q0V&9UGX0 b`hozr I0ԠAn=<0nk-ð\_Eq\TSNF@2L_| &jy(gנP{zeYRA9l|I;]7̸.cX&ʗ0aN(j=`)Z49A4;ĩ:I&2p)Mrm J(WdhrO0L?Zp 9f'_rzl3BlfW"O _ra=0NSט>i0Ui@%zc;R>quh`ٛ)K!UU>JQ6}$uc=۟Sn=l+.H@f"WP\ٻ/{lqAtlwyhb;_q]+0"bboI\7rV gZO_Gb;ij&磐*YJ>=S_A׹+N ĩ]IENDB`plugins/akismet/_inc/img/icon-external.svg000064400000000536147176754540014667 0ustar00plugins/akismet/_inc/fonts/inter.css000064400000004221147176754540013601 0ustar00@font-face { font-family: 'Inter'; font-style: normal; font-weight: 400; font-display: swap; src: url("https://s0.wp.com/i/fonts/inter/Inter-Regular.woff2?v=3.19") format("woff2"), url("https://s0.wp.com/i/fonts/inter/Inter-Regular.woff?v=3.19") format("woff"); } @font-face { font-family: 'Inter'; font-style: italic; font-weight: 400; font-display: swap; src: url("https://s0.wp.com/i/fonts/inter/Inter-Italic.woff2?v=3.19") format("woff2"), url("https://s0.wp.com/i/fonts/inter/Inter-Italic.woff?v=3.19") format("woff"); } @font-face { font-family: 'Inter'; font-style: normal; font-weight: 500; font-display: swap; src: url("https://s0.wp.com/i/fonts/inter/Inter-Medium.woff2?v=3.19") format("woff2"), url("https://s0.wp.com/i/fonts/inter/Inter-Medium.woff?v=3.19") format("woff"); } @font-face { font-family: 'Inter'; font-style: italic; font-weight: 500; font-display: swap; src: url("https://s0.wp.com/i/fonts/inter/Inter-MediumItalic.woff2?v=3.19") format("woff2"), url("https://s0.wp.com/i/fonts/inter/Inter-MediumItalic.woff?v=3.19") format("woff"); } @font-face { font-family: 'Inter'; font-style: normal; font-weight: 600; font-display: swap; src: url("https://s0.wp.com/i/fonts/inter/Inter-SemiBold.woff2?v=3.19") format("woff2"), url("https://s0.wp.com/i/fonts/inter/Inter-SemiBold.woff?v=3.19") format("woff"); } @font-face { font-family: 'Inter'; font-style: italic; font-weight: 600; font-display: swap; src: url("https://s0.wp.com/i/fonts/inter/Inter-SemiBoldItalic.woff2?v=3.19") format("woff2"), url("https://s0.wp.com/i/fonts/inter/Inter-SemiBoldItalic.woff?v=3.19") format("woff"); } @font-face { font-family: 'Inter'; font-style: normal; font-weight: 700; font-display: swap; src: url("https://s0.wp.com/i/fonts/inter/Inter-Bold.woff2?v=3.19") format("woff2"), url("https://s0.wp.com/i/fonts/inter/Inter-Bold.woff?v=3.19") format("woff"); } @font-face { font-family: 'Inter'; font-style: italic; font-weight: 700; font-display: swap; src: url("https://s0.wp.com/i/fonts/inter/Inter-BoldItalic.woff2?v=3.19") format("woff2"), url("https://s0.wp.com/i/fonts/inter/Inter-BoldItalic.woff?v=3.19") format("woff"); } plugins/akismet/_inc/akismet-admin.css000064400000016733147176754540014065 0ustar00#akismet-plugin-container { background-color: var(--akismet-color-light-grey); font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen-Sans', 'Ubuntu', 'Cantarell', 'Helvetica Neue', sans-serif; --akismet-color-charcoal: #272635; --akismet-color-light-grey: #f6f7f7; --akismet-color-mid-grey: #a7aaad; --akismet-color-dark-grey: #646970; --akismet-color-grey-80: #2c3338; --akismet-color-grey-100: #101517; --akismet-color-white: #fff; --akismet-color-mid-green: #357b49; --akismet-color-mid-red: #e82c3f; --akismet-color-light-blue: #256eff; --akismet-color-notice-light-green: #dbf0e1; --akismet-color-notice-dark-green: #69bf82; --akismet-color-notice-light-red: #ffdbde; --akismet-color-notice-dark-red: #ff6676; } #akismet-plugin-container a { color: var(--akismet-color-mid-green); } #akismet-plugin-container button:focus-visible, #akismet-plugin-container input:focus-visible { border: 0; box-shadow: none; outline: 2px solid var(--akismet-color-light-blue); } .akismet-masthead { box-shadow: none; } .akismet-masthead__logo { margin: 20px 0; } .akismet-section-header { box-shadow: none; margin-bottom: 0; } .akismet-section-header__label { color: var(--akismet-color-charcoal); font-weight: 600; } .akismet-button, .akismet-button:hover { background-color: var(--akismet-color-mid-green); border: 0; color: #fff; } /* Need this specificity to override the existing header rule */ .akismet-new-snapshot h3.akismet-new-snapshot__header { background: none; font-size: 13px; color: var(--akismet-color-charcoal); text-align: left; text-transform: none; } .akismet-new-snapshot .akismet-new-snapshot__number { color: var(--akismet-color-charcoal); letter-spacing: -1px; text-align: left; } .akismet-new-snapshot li.akismet-new-snapshot__item { color: var(--akismet-color-dark-grey); font-size: 13px; text-align: left; text-transform: none; } .akismet-masthead__logo-link { min-height: 50px; } .akismet-masthead__back-link-container { margin-top: 16px; margin-bottom: 2px; } /* Need this specificity to override the existing link rule */ #akismet-plugin-container a.akismet-masthead__back-link { background-image: url(img/arrow-left.svg); background-position: left; background-repeat: no-repeat; background-size: 16px; color: var(--akismet-color-charcoal); font-weight: 400; padding-left: 20px; text-decoration: none; } #akismet-plugin-container a.akismet-masthead__back-link:hover { text-decoration: underline; } .akismet-new-snapshot__item { border-top: 1px solid var(--akismet-color-light-grey); border-left: 1px solid var(--akismet-color-light-grey); padding: 1em; } .akismet-new-snapshot li:first-child { border-left: none; } .akismet-new-snapshot__list { display: flex; margin-bottom: 0; } .akismet-new-snapshot__item { flex: 1 0 33.33%; margin-bottom: 0; padding-left: 1.5em; padding-right: 1.5em; } .akismet-new-snapshot__chart { padding: 1em; } .akismet-box { border: 0; } .akismet-box, .akismet-card { box-shadow: 0 4px 12px rgba(0, 0, 0, 0.06), 0 0 2px rgba(0, 0, 0, 0.16); border-radius: 8px; overflow: hidden; } .akismet-card { margin: 32px auto 0 auto; } .akismet-lower { padding-top: 0; } .akismet-lower .inside { padding: 0; } .akismet-section-header__label { margin: 0; } .akismet-settings__row { border-bottom: 1px solid var(--akismet-color-light-grey); display: block; padding: 1em 1.5em; } .akismet-settings__row-input { margin-left: auto; } .akismet-settings__row-title { font-weight: 500; font-size: 1em; margin: 0; margin-bottom: 1em; } .akismet-settings__row-description { margin-top: 0.5em; } .akismet-card-actions { display: flex; justify-content: flex-end; padding: 1em; } .akismet-card-actions__secondary-action { align-self: center; margin-right: auto; } .akismet-card-actions__secondary-action a[target="_blank"]::after { background: url('img/icon-external.svg') no-repeat; background-size: contain; content: ""; display: inline-block; height: 16px; margin-left: 5px; vertical-align: middle; width: 16px; } .akismet-settings__row label { padding-bottom: 1em; } .akismet-settings__row-note { font-size: 0.9em; margin-top: 0.4em; } .akismet-settings__row input[type="checkbox"], .akismet-settings__row input[type="radio"] { accent-color: var(--akismet-color-mid-green); box-shadow: none; flex-shrink: 0; margin: 2px 0 0 0; } .akismet-settings__row input[type="checkbox"] { margin-top: 1px; vertical-align: top; -webkit-appearance: checkbox; } .akismet-settings__row input[type="radio"] { -webkit-appearance: radio; } /* Fix up misbehaving wp-admin styles in Chrome (from forms and colors stylesheets) */ .akismet-settings__row input[type="checkbox"]:checked:before { content: ''; } .akismet-settings__row input[type="radio"]:checked:before { background: none; } .akismet-settings__row input[type="checkbox"]:checked:hover, .akismet-settings__row input[type="radio"]:checked:hover { accent-color: var(--akismet-color-mid-green); } .akismet-button:disabled { background-color: var(--akismet-color-mid-grey); color: var(--akismet-color-white); cursor: arrow; } .akismet-awaiting-stats, .akismet-account { padding: 0 1rem 1rem 1rem; margin: 0; } .akismet-account { padding-bottom: 0; } .akismet-account th { font-weight: 500; padding-right: 1em; } .akismet-account th, .akismet-account td { padding-bottom: 1em; } .akismet-settings__row-input-label { align-items: center; display: flex; } .akismet-settings__row-label-text { padding-left: 0.5em; margin-top: 2px; } .akismet-alert { border-left: 8px solid; border-radius: 8px; margin: 20px 0; padding: 0.2em 1em; } .akismet-alert__heading { font-size: 1em; } .akismet-alert.is-good { background-color: var(--akismet-color-notice-light-green); border-left-color: var(--akismet-color-notice-dark-green); } .akismet-alert.is-neutral { background-color: var(--akismet-color-white); border-left-color: var(--akismet-color-dark-grey); } .akismet-alert.is-bad { background-color: var(--akismet-color-notice-light-red); border-left-color: var(--akismet-color-notice-dark-red); } #akismet-plugin-container .akismet-alert.is-good a, #akismet-plugin-container .akismet-alert.is-bad a { /* For better contrast - green isn't great */ color: var(--akismet-color-grey-80); } /* Setup - API key input */ .akismet-enter-api-key-box { margin: 1.5rem 0; } .akismet-enter-api-key-box__reveal { background: none; border: 0; color: var(--akismet-color-mid-green); cursor: pointer; text-decoration: underline; } .akismet-enter-api-key-box__form-wrapper { display: none; margin-top: 1.5rem; } .akismet-enter-api-key-box__input-wrapper { box-sizing: border-box; display: flex; flex-wrap: nowrap; padding: 0 1.5rem; width: 100%; } .akismet-enter-api-key-box__key-input { flex-grow: 1; margin-right: 1rem; } h3.akismet-enter-api-key-box__header { padding-top: 0; padding-bottom: 1em; text-align: left; } @media screen and (max-width: 782px) { .akismet-new-snapshot__list { display: block; } .akismet-new-snapshot__number { float: right; font-size: 20px; font-weight: 500; margin-top: -16px; } .akismet-new-snapshot__header { font-size: 14px; font-weight: 500; } .akismet-new-snapshot__text { font-size: 12px; } .akismet-settings__row input[type="checkbox"], .akismet-settings__row input[type="radio"] { height: 24px; width: 24px; } .akismet-settings__row-label-text { padding-left: 0.8em; } .akismet-settings__row input[type="checkbox"], .akismet-settings__row input[type="radio"] { margin-top: 0; } }plugins/akismet/_inc/akismet-frontend.js000064400000026174147176754540014440 0ustar00/** * Observe how the user enters content into the comment form in order to determine whether it's a bot or not. * * Note that no actual input is being saved here, only counts and timings between events. */ ( function() { // Passive event listeners are guaranteed to never call e.preventDefault(), // but they're not supported in all browsers. Use this feature detection // to determine whether they're available for use. var supportsPassive = false; try { var opts = Object.defineProperty( {}, 'passive', { get : function() { supportsPassive = true; } } ); window.addEventListener( 'testPassive', null, opts ); window.removeEventListener( 'testPassive', null, opts ); } catch ( e ) {} function init() { var input_begin = ''; var keydowns = {}; var lastKeyup = null; var lastKeydown = null; var keypresses = []; var modifierKeys = []; var correctionKeys = []; var lastMouseup = null; var lastMousedown = null; var mouseclicks = []; var mousemoveTimer = null; var lastMousemoveX = null; var lastMousemoveY = null; var mousemoveStart = null; var mousemoves = []; var touchmoveCountTimer = null; var touchmoveCount = 0; var lastTouchEnd = null; var lastTouchStart = null; var touchEvents = []; var scrollCountTimer = null; var scrollCount = 0; var correctionKeyCodes = [ 'Backspace', 'Delete', 'ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight', 'Home', 'End', 'PageUp', 'PageDown' ]; var modifierKeyCodes = [ 'Shift', 'CapsLock' ]; var forms = document.querySelectorAll( 'form[method=post]' ); for ( var i = 0; i < forms.length; i++ ) { var form = forms[i]; var formAction = form.getAttribute( 'action' ); // Ignore forms that POST directly to other domains; these could be things like payment forms. if ( formAction ) { // Check that the form is posting to an external URL, not a path. if ( formAction.indexOf( 'http://' ) == 0 || formAction.indexOf( 'https://' ) == 0 ) { if ( formAction.indexOf( 'http://' + window.location.hostname + '/' ) != 0 && formAction.indexOf( 'https://' + window.location.hostname + '/' ) != 0 ) { continue; } } } form.addEventListener( 'submit', function () { var ak_bkp = prepare_timestamp_array_for_request( keypresses ); var ak_bmc = prepare_timestamp_array_for_request( mouseclicks ); var ak_bte = prepare_timestamp_array_for_request( touchEvents ); var ak_bmm = prepare_timestamp_array_for_request( mousemoves ); var input_fields = { // When did the user begin entering any input? 'bib': input_begin, // When was the form submitted? 'bfs': Date.now(), // How many keypresses did they make? 'bkpc': keypresses.length, // How quickly did they press a sample of keys, and how long between them? 'bkp': ak_bkp, // How quickly did they click the mouse, and how long between clicks? 'bmc': ak_bmc, // How many mouseclicks did they make? 'bmcc': mouseclicks.length, // When did they press modifier keys (like Shift or Capslock)? 'bmk': modifierKeys.join( ';' ), // When did they correct themselves? e.g., press Backspace, or use the arrow keys to move the cursor back 'bck': correctionKeys.join( ';' ), // How many times did they move the mouse? 'bmmc': mousemoves.length, // How many times did they move around using a touchscreen? 'btmc': touchmoveCount, // How many times did they scroll? 'bsc': scrollCount, // How quickly did they perform touch events, and how long between them? 'bte': ak_bte, // How many touch events were there? 'btec' : touchEvents.length, // How quickly did they move the mouse, and how long between moves? 'bmm' : ak_bmm }; var akismet_field_prefix = 'ak_'; if ( this.getElementsByClassName ) { // Check to see if we've used an alternate field name prefix. We store this as an attribute of the container around some of the Akismet fields. var possible_akismet_containers = this.getElementsByClassName( 'akismet-fields-container' ); for ( var containerIndex = 0; containerIndex < possible_akismet_containers.length; containerIndex++ ) { var container = possible_akismet_containers.item( containerIndex ); if ( container.getAttribute( 'data-prefix' ) ) { akismet_field_prefix = container.getAttribute( 'data-prefix' ); break; } } } for ( var field_name in input_fields ) { var field = document.createElement( 'input' ); field.setAttribute( 'type', 'hidden' ); field.setAttribute( 'name', akismet_field_prefix + field_name ); field.setAttribute( 'value', input_fields[ field_name ] ); this.appendChild( field ); } }, supportsPassive ? { passive: true } : false ); form.addEventListener( 'keydown', function ( e ) { // If you hold a key down, some browsers send multiple keydown events in a row. // Ignore any keydown events for a key that hasn't come back up yet. if ( e.key in keydowns ) { return; } var keydownTime = ( new Date() ).getTime(); keydowns[ e.key ] = [ keydownTime ]; if ( ! input_begin ) { input_begin = keydownTime; } // In some situations, we don't want to record an interval since the last keypress -- for example, // on the first keypress, or on a keypress after focus has changed to another element. Normally, // we want to record the time between the last keyup and this keydown. But if they press a // key while already pressing a key, we want to record the time between the two keydowns. var lastKeyEvent = Math.max( lastKeydown, lastKeyup ); if ( lastKeyEvent ) { keydowns[ e.key ].push( keydownTime - lastKeyEvent ); } lastKeydown = keydownTime; }, supportsPassive ? { passive: true } : false ); form.addEventListener( 'keyup', function ( e ) { if ( ! ( e.key in keydowns ) ) { // This key was pressed before this script was loaded, or a mouseclick happened during the keypress, or... return; } var keyupTime = ( new Date() ).getTime(); if ( 'TEXTAREA' === e.target.nodeName || 'INPUT' === e.target.nodeName ) { if ( -1 !== modifierKeyCodes.indexOf( e.key ) ) { modifierKeys.push( keypresses.length - 1 ); } else if ( -1 !== correctionKeyCodes.indexOf( e.key ) ) { correctionKeys.push( keypresses.length - 1 ); } else { // ^ Don't record timings for keys like Shift or backspace, since they // typically get held down for longer than regular typing. var keydownTime = keydowns[ e.key ][0]; var keypress = []; // Keypress duration. keypress.push( keyupTime - keydownTime ); // Amount of time between this keypress and the previous keypress. if ( keydowns[ e.key ].length > 1 ) { keypress.push( keydowns[ e.key ][1] ); } keypresses.push( keypress ); } } delete keydowns[ e.key ]; lastKeyup = keyupTime; }, supportsPassive ? { passive: true } : false ); form.addEventListener( "focusin", function ( e ) { lastKeydown = null; lastKeyup = null; keydowns = {}; }, supportsPassive ? { passive: true } : false ); form.addEventListener( "focusout", function ( e ) { lastKeydown = null; lastKeyup = null; keydowns = {}; }, supportsPassive ? { passive: true } : false ); } document.addEventListener( 'mousedown', function ( e ) { lastMousedown = ( new Date() ).getTime(); }, supportsPassive ? { passive: true } : false ); document.addEventListener( 'mouseup', function ( e ) { if ( ! lastMousedown ) { // If the mousedown happened before this script was loaded, but the mouseup happened after... return; } var now = ( new Date() ).getTime(); var mouseclick = []; mouseclick.push( now - lastMousedown ); if ( lastMouseup ) { mouseclick.push( lastMousedown - lastMouseup ); } mouseclicks.push( mouseclick ); lastMouseup = now; // If the mouse has been clicked, don't record this time as an interval between keypresses. lastKeydown = null; lastKeyup = null; keydowns = {}; }, supportsPassive ? { passive: true } : false ); document.addEventListener( 'mousemove', function ( e ) { if ( mousemoveTimer ) { clearTimeout( mousemoveTimer ); mousemoveTimer = null; } else { mousemoveStart = ( new Date() ).getTime(); lastMousemoveX = e.offsetX; lastMousemoveY = e.offsetY; } mousemoveTimer = setTimeout( function ( theEvent, originalMousemoveStart ) { var now = ( new Date() ).getTime() - 500; // To account for the timer delay. var mousemove = []; mousemove.push( now - originalMousemoveStart ); mousemove.push( Math.round( Math.sqrt( Math.pow( theEvent.offsetX - lastMousemoveX, 2 ) + Math.pow( theEvent.offsetY - lastMousemoveY, 2 ) ) ) ); if ( mousemove[1] > 0 ) { // If there was no measurable distance, then it wasn't really a move. mousemoves.push( mousemove ); } mousemoveStart = null; mousemoveTimer = null; }, 500, e, mousemoveStart ); }, supportsPassive ? { passive: true } : false ); document.addEventListener( 'touchmove', function ( e ) { if ( touchmoveCountTimer ) { clearTimeout( touchmoveCountTimer ); } touchmoveCountTimer = setTimeout( function () { touchmoveCount++; }, 500 ); }, supportsPassive ? { passive: true } : false ); document.addEventListener( 'touchstart', function ( e ) { lastTouchStart = ( new Date() ).getTime(); }, supportsPassive ? { passive: true } : false ); document.addEventListener( 'touchend', function ( e ) { if ( ! lastTouchStart ) { // If the touchstart happened before this script was loaded, but the touchend happened after... return; } var now = ( new Date() ).getTime(); var touchEvent = []; touchEvent.push( now - lastTouchStart ); if ( lastTouchEnd ) { touchEvent.push( lastTouchStart - lastTouchEnd ); } touchEvents.push( touchEvent ); lastTouchEnd = now; // Don't record this time as an interval between keypresses. lastKeydown = null; lastKeyup = null; keydowns = {}; }, supportsPassive ? { passive: true } : false ); document.addEventListener( 'scroll', function ( e ) { if ( scrollCountTimer ) { clearTimeout( scrollCountTimer ); } scrollCountTimer = setTimeout( function () { scrollCount++; }, 500 ); }, supportsPassive ? { passive: true } : false ); } /** * For the timestamp data that is collected, don't send more than `limit` data points in the request. * Choose a random slice and send those. */ function prepare_timestamp_array_for_request( a, limit ) { if ( ! limit ) { limit = 100; } var rv = ''; if ( a.length > 0 ) { var random_starting_point = Math.max( 0, Math.floor( Math.random() * a.length - limit ) ); for ( var i = 0; i < limit && i < a.length; i++ ) { rv += a[ random_starting_point + i ][0]; if ( a[ random_starting_point + i ].length >= 2 ) { rv += "," + a[ random_starting_point + i ][1]; } rv += ";"; } } return rv; } if ( document.readyState !== 'loading' ) { init(); } else { document.addEventListener( 'DOMContentLoaded', init ); } })();plugins/akismet/_inc/akismet-admin.js000064400000000405147176754540013676 0ustar00document.addEventListener( 'DOMContentLoaded', function() { // Prevent aggressive iframe caching in Firefox var statsIframe = document.getElementById( 'stats-iframe' ); if ( statsIframe ) { statsIframe.contentWindow.location.href = statsIframe.src; } } );plugins/akismet/_inc/akismet.js000064400000031746147176754540012624 0ustar00jQuery( function ( $ ) { var mshotRemovalTimer = null; var mshotRetryTimer = null; var mshotTries = 0; var mshotRetryInterval = 1000; var mshotEnabledLinkSelector = 'a[id^="author_comment_url"], tr.pingback td.column-author a:first-of-type, td.comment p a'; var preloadedMshotURLs = []; $('.akismet-status').each(function () { var thisId = $(this).attr('commentid'); $(this).prependTo('#comment-' + thisId + ' .column-comment'); }); $('.akismet-user-comment-count').each(function () { var thisId = $(this).attr('commentid'); $(this).insertAfter('#comment-' + thisId + ' .author strong:first').show(); }); akismet_enable_comment_author_url_removal(); $( '#the-comment-list' ).on( 'click', '.akismet_remove_url', function () { var thisId = $(this).attr('commentid'); var data = { action: 'comment_author_deurl', _wpnonce: WPAkismet.comment_author_url_nonce, id: thisId }; $.ajax({ url: ajaxurl, type: 'POST', data: data, beforeSend: function () { // Removes "x" link $("a[commentid='"+ thisId +"']").hide(); // Show temp status $("#author_comment_url_"+ thisId).html( $( '' ).text( WPAkismet.strings['Removing...'] ) ); }, success: function (response) { if (response) { // Show status/undo link $("#author_comment_url_"+ thisId) .attr('cid', thisId) .addClass('akismet_undo_link_removal') .html( $( '' ).text( WPAkismet.strings['URL removed'] ) ) .append( ' ' ) .append( $( '' ) .text( WPAkismet.strings['(undo)'] ) .addClass( 'akismet-span-link' ) ); } } }); return false; }).on( 'click', '.akismet_undo_link_removal', function () { var thisId = $(this).attr('cid'); var thisUrl = $(this).attr('href'); var data = { action: 'comment_author_reurl', _wpnonce: WPAkismet.comment_author_url_nonce, id: thisId, url: thisUrl }; $.ajax({ url: ajaxurl, type: 'POST', data: data, beforeSend: function () { // Show temp status $("#author_comment_url_"+ thisId).html( $( '' ).text( WPAkismet.strings['Re-adding...'] ) ); }, success: function (response) { if (response) { // Add "x" link $("a[commentid='"+ thisId +"']").show(); // Show link. Core strips leading http://, so let's do that too. $("#author_comment_url_"+ thisId).removeClass('akismet_undo_link_removal').text( thisUrl.replace( /^http:\/\/(www\.)?/ig, '' ) ); } } }); return false; }); // Show a preview image of the hovered URL. Applies to author URLs and URLs inside the comments. if ( "enable_mshots" in WPAkismet && WPAkismet.enable_mshots ) { $( '#the-comment-list' ).on( 'mouseover', mshotEnabledLinkSelector, function () { clearTimeout( mshotRemovalTimer ); if ( $( '.akismet-mshot' ).length > 0 ) { if ( $( '.akismet-mshot:first' ).data( 'link' ) == this ) { // The preview is already showing for this link. return; } else { // A new link is being hovered, so remove the old preview. $( '.akismet-mshot' ).remove(); } } clearTimeout( mshotRetryTimer ); var linkUrl = $( this ).attr( 'href' ); if ( preloadedMshotURLs.indexOf( linkUrl ) !== -1 ) { // This preview image was already preloaded, so begin with a retry URL so the user doesn't see the placeholder image for the first second. mshotTries = 2; } else { mshotTries = 1; } var mShot = $( '
' ); mShot.data( 'link', this ); mShot.data( 'url', linkUrl ); mShot.find( 'img' ).on( 'load', function () { $( '.akismet-mshot' ).data( 'pending-request', false ); } ); var offset = $( this ).offset(); mShot.offset( { left : Math.min( $( window ).width() - 475, offset.left + $( this ).width() + 10 ), // Keep it on the screen if the link is near the edge of the window. top: offset.top + ( $( this ).height() / 2 ) - 101 // 101 = top offset of the arrow plus the top border thickness } ); $( 'body' ).append( mShot ); mshotRetryTimer = setTimeout( retryMshotUntilLoaded, mshotRetryInterval ); } ).on( 'mouseout', 'a[id^="author_comment_url"], tr.pingback td.column-author a:first-of-type, td.comment p a', function () { mshotRemovalTimer = setTimeout( function () { clearTimeout( mshotRetryTimer ); $( '.akismet-mshot' ).remove(); }, 200 ); } ); var preloadDelayTimer = null; $( window ).on( 'scroll resize', function () { clearTimeout( preloadDelayTimer ); preloadDelayTimer = setTimeout( preloadMshotsInViewport, 500 ); } ); preloadMshotsInViewport(); } /** * The way mShots works is if there was no screenshot already recently generated for the URL, * it returns a "loading..." image for the first request. Then, some subsequent request will * receive the actual screenshot, but it's unknown how long it will take. So, what we do here * is continually re-request the mShot, waiting a second after every response until we get the * actual screenshot. */ function retryMshotUntilLoaded() { clearTimeout( mshotRetryTimer ); var imageWidth = $( '.akismet-mshot img' ).get(0).naturalWidth; if ( imageWidth == 0 ) { // It hasn't finished loading yet the first time. Check again shortly. setTimeout( retryMshotUntilLoaded, mshotRetryInterval ); } else if ( imageWidth == 400 ) { // It loaded the preview image. if ( mshotTries == 20 ) { // Give up if we've requested the mShot 20 times already. return; } if ( ! $( '.akismet-mshot' ).data( 'pending-request' ) ) { $( '.akismet-mshot' ).data( 'pending-request', true ); mshotTries++; $( '.akismet-mshot .mshot-image' ).attr( 'src', akismet_mshot_url( $( '.akismet-mshot' ).data( 'url' ), mshotTries ) ); } mshotRetryTimer = setTimeout( retryMshotUntilLoaded, mshotRetryInterval ); } else { // All done. } } function preloadMshotsInViewport() { var windowWidth = $( window ).width(); var windowHeight = $( window ).height(); $( '#the-comment-list' ).find( mshotEnabledLinkSelector ).each( function ( index, element ) { var linkUrl = $( this ).attr( 'href' ); // Don't attempt to preload an mshot for a single link twice. if ( preloadedMshotURLs.indexOf( linkUrl ) !== -1 ) { // The URL is already preloaded. return true; } if ( typeof element.getBoundingClientRect !== 'function' ) { // The browser is too old. Return false to stop this preloading entirely. return false; } var rect = element.getBoundingClientRect(); if ( rect.top >= 0 && rect.left >= 0 && rect.bottom <= windowHeight && rect.right <= windowWidth ) { akismet_preload_mshot( linkUrl ); $( this ).data( 'akismet-mshot-preloaded', true ); } } ); } $( '.checkforspam.enable-on-load' ).on( 'click', function( e ) { if ( $( this ).hasClass( 'ajax-disabled' ) ) { // Akismet hasn't been configured yet. Allow the user to proceed to the button's link. return; } e.preventDefault(); if ( $( this ).hasClass( 'button-disabled' ) ) { window.location.href = $( this ).data( 'success-url' ).replace( '__recheck_count__', 0 ).replace( '__spam_count__', 0 ); return; } $('.checkforspam').addClass('button-disabled').addClass( 'checking' ); $('.checkforspam-spinner').addClass( 'spinner' ).addClass( 'is-active' ); akismet_check_for_spam(0, 100); }).removeClass( 'button-disabled' ); var spam_count = 0; var recheck_count = 0; function akismet_check_for_spam(offset, limit) { var check_for_spam_buttons = $( '.checkforspam' ); var nonce = check_for_spam_buttons.data( 'nonce' ); // We show the percentage complete down to one decimal point so even queues with 100k // pending comments will show some progress pretty quickly. var percentage_complete = Math.round( ( recheck_count / check_for_spam_buttons.data( 'pending-comment-count' ) ) * 1000 ) / 10; // Update the progress counter on the "Check for Spam" button. $( '.checkforspam' ).text( check_for_spam_buttons.data( 'progress-label' ).replace( '%1$s', percentage_complete ) ); $.post( ajaxurl, { 'action': 'akismet_recheck_queue', 'offset': offset, 'limit': limit, 'nonce': nonce }, function(result) { if ( 'error' in result ) { // An error is only returned in the case of a missing nonce, so we don't need the actual error message. window.location.href = check_for_spam_buttons.data( 'failure-url' ); return; } recheck_count += result.counts.processed; spam_count += result.counts.spam; if (result.counts.processed < limit) { window.location.href = check_for_spam_buttons.data( 'success-url' ).replace( '__recheck_count__', recheck_count ).replace( '__spam_count__', spam_count ); } else { // Account for comments that were caught as spam and moved out of the queue. akismet_check_for_spam(offset + limit - result.counts.spam, limit); } } ); } if ( "start_recheck" in WPAkismet && WPAkismet.start_recheck ) { $( '.checkforspam' ).click(); } if ( typeof MutationObserver !== 'undefined' ) { // Dynamically add the "X" next the the author URL links when a comment is quick-edited. var comment_list_container = document.getElementById( 'the-comment-list' ); if ( comment_list_container ) { var observer = new MutationObserver( function ( mutations ) { for ( var i = 0, _len = mutations.length; i < _len; i++ ) { if ( mutations[i].addedNodes.length > 0 ) { akismet_enable_comment_author_url_removal(); // Once we know that we'll have to check for new author links, skip the rest of the mutations. break; } } } ); observer.observe( comment_list_container, { attributes: true, childList: true, characterData: true } ); } } function akismet_enable_comment_author_url_removal() { $( '#the-comment-list' ) .find( 'tr.comment, tr[id ^= "comment-"]' ) .find( '.column-author a[href^="http"]:first' ) // Ignore mailto: links, which would be the comment author's email. .each(function () { if ( $( this ).parent().find( '.akismet_remove_url' ).length > 0 ) { return; } var linkHref = $(this).attr( 'href' ); // Ignore any links to the current domain, which are diagnostic tools, like the IP address link // or any other links another plugin might add. var currentHostParts = document.location.href.split( '/' ); var currentHost = currentHostParts[0] + '//' + currentHostParts[2] + '/'; if ( linkHref.indexOf( currentHost ) != 0 ) { var thisCommentId = $(this).parents('tr:first').attr('id').split("-"); $(this) .attr("id", "author_comment_url_"+ thisCommentId[1]) .after( $( 'x' ) .attr( 'commentid', thisCommentId[1] ) .attr( 'title', WPAkismet.strings['Remove this URL'] ) ); } }); } /** * Generate an mShot URL if given a link URL. * * @param string linkUrl * @param int retry If retrying a request, the number of the retry. * @return string The mShot URL; */ function akismet_mshot_url( linkUrl, retry ) { var mshotUrl = '//s0.wp.com/mshots/v1/' + encodeURIComponent( linkUrl ) + '?w=900'; if ( retry > 1 ) { mshotUrl += '&r=' + encodeURIComponent( retry ); } mshotUrl += '&source=akismet'; return mshotUrl; } /** * Begin loading an mShot preview of a link. * * @param string linkUrl */ function akismet_preload_mshot( linkUrl ) { var img = new Image(); img.src = akismet_mshot_url( linkUrl ); preloadedMshotURLs.push( linkUrl ); } $( '.akismet-could-be-primary' ).each( function () { var form = $( this ).closest( 'form' ); form.data( 'initial-state', form.serialize() ); form.on( 'change keyup', function () { var self = $( this ); var submit_button = self.find( '.akismet-could-be-primary' ); if ( self.serialize() != self.data( 'initial-state' ) ) { submit_button.addClass( 'akismet-is-primary' ); } else { submit_button.removeClass( 'akismet-is-primary' ); } } ); } ); /** * Shows the Enter API key form */ $( '.akismet-enter-api-key-box__reveal' ).on( 'click', function ( e ) { e.preventDefault(); var div = $( '.akismet-enter-api-key-box__form-wrapper' ); div.show( 500 ); div.find( 'input[name=key]' ).focus(); $( this ).hide(); } ); /** * Hides the Connect with Jetpack form | Shows the Activate Akismet Account form */ $( 'a.toggle-ak-connect' ).on( 'click', function ( e ) { e.preventDefault(); $( '.akismet-ak-connect' ).slideToggle('slow'); $( 'a.toggle-ak-connect' ).hide(); $( '.akismet-jp-connect' ).hide(); $( 'a.toggle-jp-connect' ).show(); } ); /** * Shows the Connect with Jetpack form | Hides the Activate Akismet Account form */ $( 'a.toggle-jp-connect' ).on( 'click', function ( e ) { e.preventDefault(); $( '.akismet-jp-connect' ).slideToggle('slow'); $( 'a.toggle-jp-connect' ).hide(); $( '.akismet-ak-connect' ).hide(); $( 'a.toggle-ak-connect' ).show(); } ); }); plugins/akismet/changelog.txt000064400000052720147176754540012404 0ustar00=== Akismet Anti-spam === == Archived Changelog Entries == This file contains older changelog entries, so we can keep the size of the standard WordPress readme.txt file reasonable. For the latest changes, please see the "Changelog" section of the [readme.txt file](https://plugins.svn.wordpress.org/akismet/trunk/readme.txt). = 4.1.12 = *Release Date - 3 September 2021* * Fixed "Use of undefined constant" notice. * Improved styling of alert notices. = 4.1.11 = *Release Date - 23 August 2021* * Added support for Akismet API usage notifications on Akismet settings and edit-comments admin pages. * Added support for the deleted_comment action when bulk-deleting comments from Spam. = 4.1.10 = *Release Date - 6 July 2021* * Simplified the code around checking comments in REST API and XML-RPC requests. * Updated Plus plan terminology in notices to match current subscription names. * Added `rel="noopener"` to the widget link to avoid warnings in Google Lighthouse. * Set the Akismet JavaScript as deferred instead of async to improve responsiveness. * Improved the preloading of screenshot popups on the edit comments admin page. = 4.1.9 = *Release Date - 2 March 2021* * Improved handling of pingbacks in XML-RPC multicalls = 4.1.8 = *Release Date - 6 January 2021* * Fixed missing fields in submit-spam and submit-ham calls that could lead to reduced accuracy. * Fixed usage of deprecated jQuery function. = 4.1.7 = *Release Date - 22 October 2020* * Show the "Set up your Akismet account" banner on the comments admin screen, where it's relevant to mention if Akismet hasn't been configured. * Don't use wp_blacklist_check when the new wp_check_comment_disallowed_list function is available. = 4.1.6 = *Release Date - 4 June 2020* * Disable "Check for Spam" button until the page is loaded to avoid errors with clicking through to queue recheck endpoint directly. * Added filter "akismet_enable_mshots" to allow disabling screenshot popups on the edit comments admin page. = 4.1.5 = *Release Date - 29 April 2020* * Based on user feedback, we have dropped the in-admin notice explaining the availability of the "privacy notice" option in the AKismet settings screen. The option itself is available, but after displaying the notice for the last 2 years, it is now considered a known fact. * Updated the "Requires at least" to WP 4.6, based on recommendations from https://wp-info.org/tools/checkplugini18n.php?slug=akismet * Moved older changelog entries to a separate file to keep the size of this readme reasonable, also based on recommendations from https://wp-info.org/tools/checkplugini18n.php?slug=akismet = 4.1.4 = *Release Date - 17 March 2020* * Only redirect to the Akismet setup screen upon plugin activation if the plugin was activated manually from within the plugin-related screens, to help users with non-standard install workflows, like WP-CLI. * Update the layout of the initial setup screen to be more readable on small screens. * If no API key has been entered, don't run code that expects an API key. * Improve the readability of the comment history entries. * Don't modify the comment form HTML if no API key has been set. = 4.1.3 = *Release Date - 31 October 2019* * Prevented an attacker from being able to cause a user to unknowingly recheck their Pending comments for spam. * Improved compatibility with Jetpack 7.7+. * Updated the plugin activation page to use consistent language and markup. * Redirecting users to the Akismet connnection/settings screen upon plugin activation, in an effort to make it easier for people to get setup. = 4.1.2 = *Release Date - 14 May 2019* * Fixed a conflict between the Akismet setup banner and other plugin notices. * Reduced the number of API requests made by the plugin when attempting to verify the API key. * Include additional data in the pingback pre-check API request to help make the stats more accurate. * Fixed a bug that was enabling the "Check for Spam" button when no comments were eligible to be checked. * Improved Akismet's AMP compatibility. = 4.1.1 = *Release Date - 31 January 2019* * Fixed the "Setup Akismet" notice so it resizes responsively. * Only highlight the "Save Changes" button in the Akismet config when changes have been made. * The count of comments in your spam queue shown on the dashboard show now always be up-to-date. = 4.1 = *Release Date - 12 November 2018* * Added a WP-CLI method for retrieving stats. * Hooked into the new "Personal Data Eraser" functionality from WordPress 4.9.6. * Added functionality to clear outdated alerts from Akismet.com. = 4.0.8 = *Release Date - 19 June 2018* * Improved the grammar and consistency of the in-admin privacy related notes (notice and config). * Revised in-admin explanation of the comment form privacy notice to make its usage clearer. * Added `rel="nofollow noopener"` to the comment form privacy notice to improve SEO and security. = 4.0.7 = *Release Date - 28 May 2018* * Based on user feedback, the link on "Learn how your comment data is processed." in the optional privacy notice now has a `target` of `_blank` and opens in a new tab/window. * Updated the in-admin privacy notice to use the term "comment" instead of "contact" in "Akismet can display a notice to your users under your comment forms." * Only show in-admin privacy notice if Akismet has an API Key configured = 4.0.6 = *Release Date - 26 May 2018* * Moved away from using `empty( get_option() )` to instantiating a variable to be compatible with older versions of PHP (5.3, 5.4, etc). = 4.0.5 = *Release Date - 26 May 2018* * Corrected version number after tagging. Sorry... = 4.0.4 = *Release Date - 26 May 2018* * Added a hook to provide Akismet-specific privacy information for a site's privacy policy. * Added tools to control the display of a privacy related notice under comment forms. * Fixed HTML in activation failure message to close META and HEAD tag properly. * Fixed a bug that would sometimes prevent Akismet from being correctly auto-configured. = 4.0.3 = *Release Date - 19 February 2018* * Added a scheduled task to remove entries in wp_commentmeta that no longer have corresponding comments in wp_comments. * Added a new `akismet_batch_delete_count` action to the batch delete methods for people who'd like to keep track of the numbers of records being processed by those methods. = 4.0.2 = *Release Date - 18 December 2017* * Fixed a bug that could cause Akismet to recheck a comment that has already been manually approved or marked as spam. * Fixed a bug that could cause Akismet to claim that some comments are still waiting to be checked when no comments are waiting to be checked. = 4.0.1 = *Release Date - 6 November 2017* * Fixed a bug that could prevent some users from connecting Akismet via their Jetpack connection. * Ensured that any pending Akismet-related events are unscheduled if the plugin is deactivated. * Allow some JavaScript to be run asynchronously to avoid affecting page render speeds. = 4.0 = *Release Date - 19 September 2017* * Added REST API endpoints for configuring Akismet and retrieving stats. * Increased the minimum supported WordPress version to 4.0. * Added compatibility with comments submitted via the REST API. * Improved the progress indicator on the "Check for Spam" button. = 3.3.4 = *Release Date - 3 August 2017* * Disabled Akismet's debug log output by default unless AKISMET_DEBUG is defined. * URL previews now begin preloading when the mouse moves near them in the comments section of wp-admin. * When a comment is caught by the Comment Blacklist, Akismet will always allow it to stay in the trash even if it is spam as well. * Fixed a bug that was preventing an error from being shown when a site can't reach Akismet's servers. = 3.3.3 = *Release Date - 13 July 2017* * Reduced amount of bandwidth used by the URL Preview feature. * Improved the admin UI when the API key is manually pre-defined for the site. * Removed a workaround for WordPress installations older than 3.3 that will improve Akismet's compatibility with other plugins. * The number of spam blocked that is displayed on the WordPress dashboard will now be more accurate and updated more frequently. * Fixed a bug in the Akismet widget that could cause PHP warnings. = 3.3.2 = *Release Date - 10 May 2017* * Fixed a bug causing JavaScript errors in some browsers. = 3.3.1 = *Release Date - 2 May 2017* * Improve performance by only requesting the akismet_comment_nonce option when absolutely necessary. * Fixed two bugs that could cause PHP warnings. * Fixed a bug that was preventing the "Remove author URL" feature from working after a comment was edited using "Quick Edit." * Fixed a bug that was preventing the URL preview feature from working after a comment was edited using "Quick Edit." = 3.3 = *Release Date - 23 February 2017* * Updated the Akismet admin pages with a new clean design. * Fixed bugs preventing the `akismet_add_comment_nonce` and `akismet_update_alert` wrapper functions from working properly. * Fixed bug preventing the loading indicator from appearing when re-checking all comments for spam. * Added a progress indicator to the "Check for Spam" button. * Added a success message after manually rechecking the Pending queue for spam. = 3.2 = *Release Date - 6 September 2016* * Added a WP-CLI module. You can now check comments and recheck the moderation queue from the command line. * Stopped using the deprecated jQuery function `.live()`. * Fixed a bug in `remove_comment_author_url()` and `add_comment_author_url()` that could generate PHP notices. * Fixed a bug that could cause an infinite loop for sites with very very very large comment IDs. * Fixed a bug that could cause the Akismet widget title to be blank. = 3.1.11 = *Release Date - 12 May 2016* * Fixed a bug that could cause the "Check for Spam" button to skip some comments. * Fixed a bug that could prevent some spam submissions from being sent to Akismet. * Updated all links to use https:// when possible. * Disabled Akismet debug logging unless WP_DEBUG and WP_DEBUG_LOG are both enabled. = 3.1.10 = *Release Date - 1 April 2016* * Fixed a bug that could cause comments caught as spam to be placed in the Pending queue. * Fixed a bug that could have resulted in comments that were caught by the core WordPress comment blacklist not to have a corresponding History entry. * Fixed a bug that could have caused avoidable PHP warnings in the error log. = 3.1.9 = *Release Date - 28 March 2016* * Add compatibility with Jetpack so that Jetpack can automatically configure Akismet settings when appropriate. * Fixed a bug preventing some comment data from being sent to Akismet. = 3.1.8 = *Release Date - 4 March 2016* * Fixed a bug preventing Akismet from being used with some plugins that rewrite admin URLs. * Reduced the amount of bandwidth used on Akismet API calls * Reduced the amount of space Akismet uses in the database * Fixed a bug that could cause comments caught as spam to be placed in the Pending queue. = 3.1.7 = *Release Date - 4 January 2016* * Added documentation for the 'akismet_comment_nonce' filter. * The post-install activation button is now accessible to screen readers and keyboard-only users. * Fixed a bug that was preventing the "Remove author URL" feature from working in WordPress 4.4 = 3.1.6 = *Release Date - 14 December 2015* * Improve the notices shown after activating Akismet. * Update some strings to allow for the proper plural forms in all languages. = 3.1.5 = *Release Date - 13 October 2015* * Closes a potential XSS vulnerability. = 3.1.4 = *Release Date - 24 September 2015* * Fixed a bug that was preventing some users from automatically connecting using Jetpack if they didn't have a current Akismet subscription. * Fixed a bug that could cause comments caught as spam to be placed in the Pending queue. * Error messages and instructions have been simplified to be more understandable. * Link previews are enabled for all links inside comments, not just the author's website link. = 3.1.3 = *Release Date - 6 July 2015* * Notify users when their account status changes after previously being successfully set up. This should help any users who are seeing blank Akismet settings screens. = 3.1.2 = *Release Date - 7 June 2015* * Reduced the amount of space Akismet uses in the commentmeta table. * Fixed a bug where some comments with quotes in the author name weren't getting history entries * Pre-emptive security improvements to ensure that the Akismet plugin can't be used by attackers to compromise a WordPress installation. * Better UI for the key entry field: allow whitespace to be included at the beginning or end of the key and strip it out automatically when the form is submitted. * When deactivating the plugin, notify the Akismet API so the site can be marked as inactive. * Clearer error messages. = 3.1.1 = *Release Date - 17th March, 2015* * Improvements to the "Remove comment author URL" JavaScript * Include the pingback pre-check from the 2.6 branch. = 3.1 = *Release Date - 11th March, 2015* * Use HTTPS by default for all requests to Akismet. * Fix for a situation where Akismet might strip HTML from a comment. = 3.0.4 = *Release Date - 11th December, 2014* * Fix to make .htaccess compatible with Apache 2.4. * Fix to allow removal of https author URLs. * Fix to avoid stripping part of the author URL when removing and re-adding. * Removed the "Check for Spam" button from the "Trash" and "Approved" queues, where it would have no effect. * Allow automatic API key configuration when Jetpack is installed and connected to a WordPress.com account = 3.0.3 = *Release Date - 3rd November, 2014* * Fix for sending the wrong data to delete_comment action that could have prevented old spam comments from being deleted. * Added a filter to disable logging of Akismet debugging information. * Added a filter for the maximum comment age when deleting old spam comments. * Added a filter for the number per batch when deleting old spam comments. * Removed the "Check for Spam" button from the Spam folder. = 3.0.2 = *Release Date - 18th August, 2014* * Performance improvements. * Fixed a bug that could truncate the comment data being sent to Akismet for checking. = 3.0.1 = *Release Date - 9th July, 2014* * Removed dependency on PHP's fsockopen function * Fix spam/ham reports to work when reported outside of the WP dashboard, e.g., from Notifications or the WP app * Remove jQuery dependency for comment form JavaScript * Remove unnecessary data from some Akismet comment meta * Suspended keys will now result in all comments being put in moderation, not spam. = 3.0.0 = *Release Date - 15th April, 2014* * Move Akismet to Settings menu * Drop Akismet Stats menu * Add stats snapshot to Akismet settings * Add Akismet subscription details and status to Akismet settings * Add contextual help for each page * Improve Akismet setup to use Jetpack to automate plugin setup * Fix "Check for Spam" to use AJAX to avoid page timing out * Fix Akismet settings page to be responsive * Drop legacy code * Tidy up CSS and Javascript * Replace the old discard setting with a new "discard pervasive spam" feature. = 2.6.0 = *Release Date - 18th March, 2014* * Add ajax paging to the check for spam button to handle large volumes of comments * Optimize javascript and add localization support * Fix bug in link to spam comments from right now dashboard widget * Fix bug with deleting old comments to avoid timeouts dealing with large volumes of comments * Include X-Pingback-Forwarded-For header in outbound WordPress pingback verifications * Add pre-check for pingbacks, to stop spam before an outbound verification request is made = 2.5.9 = *Release Date - 1st August, 2013* * Update 'Already have a key' link to redirect page rather than depend on javascript * Fix some non-translatable strings to be translatable * Update Activation banner in plugins page to redirect user to Akismet config page = 2.5.8 = *Release Date - 20th January, 2013* * Simplify the activation process for new users * Remove the reporter_ip parameter * Minor preventative security improvements = 2.5.7 = *Release Date - 13th December, 2012* * FireFox Stats iframe preview bug * Fix mshots preview when using https * Add .htaccess to block direct access to files * Prevent some PHP notices * Fix Check For Spam return location when referrer is empty * Fix Settings links for network admins * Fix prepare() warnings in WP 3.5 = 2.5.6 = *Release Date - 26th April, 2012* * Prevent retry scheduling problems on sites where wp_cron is misbehaving * Preload mshot previews * Modernize the widget code * Fix a bug where comments were not held for moderation during an error condition * Improve the UX and display when comments are temporarily held due to an error * Make the Check For Spam button force a retry when comments are held due to an error * Handle errors caused by an invalid key * Don't retry comments that are too old * Improve error messages when verifying an API key = 2.5.5 = *Release Date - 11th January, 2012* * Add nonce check for comment author URL remove action * Fix the settings link = 2.5.4 = *Release Date - 5th January, 2012* * Limit Akismet CSS and Javascript loading in wp-admin to just the pages that need it * Added author URL quick removal functionality * Added mShot preview on Author URL hover * Added empty index.php to prevent directory listing * Move wp-admin menu items under Jetpack, if it is installed * Purge old Akismet comment meta data, default of 15 days = 2.5.3 = *Release Date - 8th Febuary, 2011* * Specify the license is GPL v2 or later * Fix a bug that could result in orphaned commentmeta entries * Include hotfix for WordPress 3.0.5 filter issue = 2.5.2 = *Release Date - 14th January, 2011* * Properly format the comment count for author counts * Look for super admins on multisite installs when looking up user roles * Increase the HTTP request timeout * Removed padding for author approved count * Fix typo in function name * Set Akismet stats iframe height to fixed 2500px. Better to have one tall scroll bar than two side by side. = 2.5.1 = *Release Date - 17th December, 2010* * Fix a bug that caused the "Auto delete" option to fail to discard comments correctly * Remove the comment nonce form field from the 'Akismet Configuration' page in favor of using a filter, akismet_comment_nonce * Fixed padding bug in "author" column of posts screen * Added margin-top to "cleared by ..." badges on dashboard * Fix possible error when calling akismet_cron_recheck() * Fix more PHP warnings * Clean up XHTML warnings for comment nonce * Fix for possible condition where scheduled comment re-checks could get stuck * Clean up the comment meta details after deleting a comment * Only show the status badge if the comment status has been changed by someone/something other than Akismet * Show a 'History' link in the row-actions * Translation fixes * Reduced font-size on author name * Moved "flagged by..." notification to top right corner of comment container and removed heavy styling * Hid "flagged by..." notification while on dashboard = 2.5.0 = *Release Date - 7th December, 2010* * Track comment actions under 'Akismet Status' on the edit comment screen * Fix a few remaining deprecated function calls ( props Mike Glendinning ) * Use HTTPS for the stats IFRAME when wp-admin is using HTTPS * Use the WordPress HTTP class if available * Move the admin UI code to a separate file, only loaded when needed * Add cron retry feature, to replace the old connectivity check * Display Akismet status badge beside each comment * Record history for each comment, and display it on the edit page * Record the complete comment as originally submitted in comment_meta, to use when reporting spam and ham * Highlight links in comment content * New option, "Show the number of comments you've approved beside each comment author." * New option, "Use a nonce on the comment form." = 2.4.0 = *Release Date - 23rd August, 2010* * Spell out that the license is GPLv2 * Fix PHP warnings * Fix WordPress deprecated function calls * Fire the delete_comment action when deleting comments * Move code specific for older WP versions to legacy.php * General code clean up = 2.3.0 = *Release Date - 5th June, 2010* * Fix "Are you sure" nonce message on config screen in WPMU * Fix XHTML compliance issue in sidebar widget * Change author link; remove some old references to WordPress.com accounts * Localize the widget title (core ticket #13879) = 2.2.9 = *Release Date - 2nd June, 2010* * Eliminate a potential conflict with some plugins that may cause spurious reports = 2.2.8 = *Release Date - 27th May, 2010* * Fix bug in initial comment check for ipv6 addresses * Report comments as ham when they are moved from spam to moderation * Report comments as ham when clicking undo after spam * Use transition_comment_status action when available instead of older actions for spam/ham submissions * Better diagnostic messages when PHP network functions are unavailable * Better handling of comments by logged-in users = 2.2.7 = *Release Date - 17th December, 2009* * Add a new AKISMET_VERSION constant * Reduce the possibility of over-counting spam when another spam filter plugin is in use * Disable the connectivity check when the API key is hard-coded for WPMU = 2.2.6 = *Release Date - 20th July, 2009* * Fix a global warning introduced in 2.2.5 * Add changelog and additional readme.txt tags * Fix an array conversion warning in some versions of PHP * Support a new WPCOM_API_KEY constant for easier use with WordPress MU = 2.2.5 = *Release Date - 13th July, 2009* * Include a new Server Connectivity diagnostic check, to detect problems caused by firewalls = 2.2.4 = *Release Date - 3rd June, 2009* * Fixed a key problem affecting the stats feature in WordPress MU * Provide additional blog information in Akismet API calls plugins/akismet/wrapper.php000064400000014446147176754540012110 0ustar00 Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. plugins/akismet/class.akismet-rest-api.php000064400000042507147176754540014712 0ustar00 WP_REST_Server::READABLE, 'permission_callback' => array( 'Akismet_REST_API', 'privileged_permission_callback' ), 'callback' => array( 'Akismet_REST_API', 'get_key' ), ), array( 'methods' => WP_REST_Server::EDITABLE, 'permission_callback' => array( 'Akismet_REST_API', 'privileged_permission_callback' ), 'callback' => array( 'Akismet_REST_API', 'set_key' ), 'args' => array( 'key' => array( 'required' => true, 'type' => 'string', 'sanitize_callback' => array( 'Akismet_REST_API', 'sanitize_key' ), 'description' => __( 'A 12-character Akismet API key. Available at akismet.com/get/', 'akismet' ), ), ), ), array( 'methods' => WP_REST_Server::DELETABLE, 'permission_callback' => array( 'Akismet_REST_API', 'privileged_permission_callback' ), 'callback' => array( 'Akismet_REST_API', 'delete_key' ), ) ) ); register_rest_route( 'akismet/v1', '/settings/', array( array( 'methods' => WP_REST_Server::READABLE, 'permission_callback' => array( 'Akismet_REST_API', 'privileged_permission_callback' ), 'callback' => array( 'Akismet_REST_API', 'get_settings' ), ), array( 'methods' => WP_REST_Server::EDITABLE, 'permission_callback' => array( 'Akismet_REST_API', 'privileged_permission_callback' ), 'callback' => array( 'Akismet_REST_API', 'set_boolean_settings' ), 'args' => array( 'akismet_strictness' => array( 'required' => false, 'type' => 'boolean', 'description' => __( 'If true, Akismet will automatically discard the worst spam automatically rather than putting it in the spam folder.', 'akismet' ), ), 'akismet_show_user_comments_approved' => array( 'required' => false, 'type' => 'boolean', 'description' => __( 'If true, show the number of approved comments beside each comment author in the comments list page.', 'akismet' ), ), ), ) ) ); register_rest_route( 'akismet/v1', '/stats', array( 'methods' => WP_REST_Server::READABLE, 'permission_callback' => array( 'Akismet_REST_API', 'privileged_permission_callback' ), 'callback' => array( 'Akismet_REST_API', 'get_stats' ), 'args' => array( 'interval' => array( 'required' => false, 'type' => 'string', 'sanitize_callback' => array( 'Akismet_REST_API', 'sanitize_interval' ), 'description' => __( 'The time period for which to retrieve stats. Options: 60-days, 6-months, all', 'akismet' ), 'default' => 'all', ), ), ) ); register_rest_route( 'akismet/v1', '/stats/(?P[\w+])', array( 'args' => array( 'interval' => array( 'description' => __( 'The time period for which to retrieve stats. Options: 60-days, 6-months, all', 'akismet' ), 'type' => 'string', ), ), array( 'methods' => WP_REST_Server::READABLE, 'permission_callback' => array( 'Akismet_REST_API', 'privileged_permission_callback' ), 'callback' => array( 'Akismet_REST_API', 'get_stats' ), ) ) ); register_rest_route( 'akismet/v1', '/alert', array( array( 'methods' => WP_REST_Server::READABLE, 'permission_callback' => array( 'Akismet_REST_API', 'remote_call_permission_callback' ), 'callback' => array( 'Akismet_REST_API', 'get_alert' ), 'args' => array( 'key' => array( 'required' => false, 'type' => 'string', 'sanitize_callback' => array( 'Akismet_REST_API', 'sanitize_key' ), 'description' => __( 'A 12-character Akismet API key. Available at akismet.com/get/', 'akismet' ), ), ), ), array( 'methods' => WP_REST_Server::EDITABLE, 'permission_callback' => array( 'Akismet_REST_API', 'remote_call_permission_callback' ), 'callback' => array( 'Akismet_REST_API', 'set_alert' ), 'args' => array( 'key' => array( 'required' => false, 'type' => 'string', 'sanitize_callback' => array( 'Akismet_REST_API', 'sanitize_key' ), 'description' => __( 'A 12-character Akismet API key. Available at akismet.com/get/', 'akismet' ), ), ), ), array( 'methods' => WP_REST_Server::DELETABLE, 'permission_callback' => array( 'Akismet_REST_API', 'remote_call_permission_callback' ), 'callback' => array( 'Akismet_REST_API', 'delete_alert' ), 'args' => array( 'key' => array( 'required' => false, 'type' => 'string', 'sanitize_callback' => array( 'Akismet_REST_API', 'sanitize_key' ), 'description' => __( 'A 12-character Akismet API key. Available at akismet.com/get/', 'akismet' ), ), ), ) ) ); register_rest_route( 'akismet/v1', '/webhook', array( 'methods' => WP_REST_Server::CREATABLE, 'callback' => array( 'Akismet_REST_API', 'receive_webhook' ), 'permission_callback' => array( 'Akismet_REST_API', 'remote_call_permission_callback' ), ) ); } /** * Get the current Akismet API key. * * @param WP_REST_Request $request * @return WP_Error|WP_REST_Response */ public static function get_key( $request = null ) { return rest_ensure_response( Akismet::get_api_key() ); } /** * Set the API key, if possible. * * @param WP_REST_Request $request * @return WP_Error|WP_REST_Response */ public static function set_key( $request ) { if ( defined( 'WPCOM_API_KEY' ) ) { return rest_ensure_response( new WP_Error( 'hardcoded_key', __( 'This site\'s API key is hardcoded and cannot be changed via the API.', 'akismet' ), array( 'status'=> 409 ) ) ); } $new_api_key = $request->get_param( 'key' ); if ( ! self::key_is_valid( $new_api_key ) ) { return rest_ensure_response( new WP_Error( 'invalid_key', __( 'The value provided is not a valid and registered API key.', 'akismet' ), array( 'status' => 400 ) ) ); } update_option( 'wordpress_api_key', $new_api_key ); return self::get_key(); } /** * Unset the API key, if possible. * * @param WP_REST_Request $request * @return WP_Error|WP_REST_Response */ public static function delete_key( $request ) { if ( defined( 'WPCOM_API_KEY' ) ) { return rest_ensure_response( new WP_Error( 'hardcoded_key', __( 'This site\'s API key is hardcoded and cannot be deleted.', 'akismet' ), array( 'status'=> 409 ) ) ); } delete_option( 'wordpress_api_key' ); return rest_ensure_response( true ); } /** * Get the Akismet settings. * * @param WP_REST_Request $request * @return WP_Error|WP_REST_Response */ public static function get_settings( $request = null ) { return rest_ensure_response( array( 'akismet_strictness' => ( get_option( 'akismet_strictness', '1' ) === '1' ), 'akismet_show_user_comments_approved' => ( get_option( 'akismet_show_user_comments_approved', '1' ) === '1' ), ) ); } /** * Update the Akismet settings. * * @param WP_REST_Request $request * @return WP_Error|WP_REST_Response */ public static function set_boolean_settings( $request ) { foreach ( array( 'akismet_strictness', 'akismet_show_user_comments_approved', ) as $setting_key ) { $setting_value = $request->get_param( $setting_key ); if ( is_null( $setting_value ) ) { // This setting was not specified. continue; } // From 4.7+, WP core will ensure that these are always boolean // values because they are registered with 'type' => 'boolean', // but we need to do this ourselves for prior versions. $setting_value = Akismet_REST_API::parse_boolean( $setting_value ); update_option( $setting_key, $setting_value ? '1' : '0' ); } return self::get_settings(); } /** * Parse a numeric or string boolean value into a boolean. * * @param mixed $value The value to convert into a boolean. * @return bool The converted value. */ public static function parse_boolean( $value ) { switch ( $value ) { case true: case 'true': case '1': case 1: return true; case false: case 'false': case '0': case 0: return false; default: return (bool) $value; } } /** * Get the Akismet stats for a given time period. * * Possible `interval` values: * - all * - 60-days * - 6-months * * @param WP_REST_Request $request * @return WP_Error|WP_REST_Response */ public static function get_stats( $request ) { $api_key = Akismet::get_api_key(); $interval = $request->get_param( 'interval' ); $stat_totals = array(); $request_args = array( 'blog' => get_option( 'home' ), 'key' => $api_key, 'from' => $interval, ); $request_args = apply_filters( 'akismet_request_args', $request_args, 'get-stats' ); $response = Akismet::http_post( Akismet::build_query( $request_args ), 'get-stats' ); if ( ! empty( $response[1] ) ) { $stat_totals[$interval] = json_decode( $response[1] ); } return rest_ensure_response( $stat_totals ); } /** * Get the current alert code and message. Alert codes are used to notify the site owner * if there's a problem, like a connection issue between their site and the Akismet API, * invalid requests being sent, etc. * * @param WP_REST_Request $request * @return WP_Error|WP_REST_Response */ public static function get_alert( $request ) { return rest_ensure_response( array( 'code' => get_option( 'akismet_alert_code' ), 'message' => get_option( 'akismet_alert_msg' ), ) ); } /** * Update the current alert code and message by triggering a call to the Akismet server. * * @param WP_REST_Request $request * @return WP_Error|WP_REST_Response */ public static function set_alert( $request ) { delete_option( 'akismet_alert_code' ); delete_option( 'akismet_alert_msg' ); // Make a request so the most recent alert code and message are retrieved. Akismet::verify_key( Akismet::get_api_key() ); return self::get_alert( $request ); } /** * Clear the current alert code and message. * * @param WP_REST_Request $request * @return WP_Error|WP_REST_Response */ public static function delete_alert( $request ) { delete_option( 'akismet_alert_code' ); delete_option( 'akismet_alert_msg' ); return self::get_alert( $request ); } private static function key_is_valid( $key ) { $request_args = array( 'key' => $key, 'blog' => get_option( 'home' ), ); $request_args = apply_filters( 'akismet_request_args', $request_args, 'verify-key' ); $response = Akismet::http_post( Akismet::build_query( $request_args ), 'verify-key' ); if ( $response[1] == 'valid' ) { return true; } return false; } public static function privileged_permission_callback() { return current_user_can( 'manage_options' ); } /** * For calls that Akismet.com makes to the site to clear outdated alert codes, use the API key for authorization. */ public static function remote_call_permission_callback( $request ) { $local_key = Akismet::get_api_key(); return $local_key && ( strtolower( $request->get_param( 'key' ) ) === strtolower( $local_key ) ); } public static function sanitize_interval( $interval, $request, $param ) { $interval = trim( $interval ); $valid_intervals = array( '60-days', '6-months', 'all', ); if ( ! in_array( $interval, $valid_intervals ) ) { $interval = 'all'; } return $interval; } public static function sanitize_key( $key, $request, $param ) { return trim( $key ); } /** * Process a webhook request from the Akismet servers. * * @param WP_REST_Request $request * @return WP_Error|WP_REST_Response */ public static function receive_webhook( $request ) { Akismet::log( array( 'Webhook request received', $request->get_body() ) ); /** * The request body should look like this: * array( * 'key' => '1234567890abcd', * 'endpoint' => '[comment-check|submit-ham|submit-spam]', * 'comments' => array( * array( * 'guid' => '[...]', * 'result' => '[true|false]', * 'comment_author' => '[...]', * [...] * ), * array( * 'guid' => '[...]', * [...], * ), * [...] * ) * ) * * Multiple comments can be included in each request, and the only truly required * field for each is the guid, although it would be friendly to include also * comment_post_ID, comment_parent, and comment_author_email, if possible to make * searching easier. */ // The response will include statuses for the result of each comment that was supplied. $response = array( 'comments' => array(), ); $endpoint = $request->get_param( 'endpoint' ); switch ( $endpoint ) { case 'comment-check': $webhook_comments = $request->get_param( 'comments' ); if ( ! is_array( $webhook_comments ) ) { return rest_ensure_response( new WP_Error( 'malformed_request', __( 'The \'comments\' parameter must be an array.', 'akismet' ), array( 'status' => 400 ) ) ); } foreach ( $webhook_comments as $webhook_comment ) { $guid = $webhook_comment['guid']; if ( ! $guid ) { // Without the GUID, we can't be sure that we're matching the right comment. // We'll make it a rule that any comment without a GUID is ignored intentionally. continue; } // Search on the fields that are indexed in the comments table, plus the GUID. // The GUID is the only thing we really need to search on, but comment_meta // is not indexed in a useful way if there are many many comments. This // should help narrow it down first. $queryable_fields = array( 'comment_post_ID' => 'post_id', 'comment_parent' => 'parent', 'comment_author_email' => 'author_email', ); $query_args = array(); $query_args['status'] = 'any'; $query_args['meta_key'] = 'akismet_guid'; $query_args['meta_value'] = $guid; foreach ( $queryable_fields as $queryable_field => $wp_comment_query_field ) { if ( isset( $webhook_comment[ $queryable_field ] ) ) { $query_args[ $wp_comment_query_field ] = $webhook_comment[ $queryable_field ]; } } $comments_query = new WP_Comment_Query( $query_args ); $comments = $comments_query->comments; if ( ! $comments ) { // Unexpected, although the comment could have been deleted since being submitted. Akismet::log( 'Webhook failed: no matching comment found.' ); $response['comments'][ $guid ] = array( 'status' => 'error', 'message' => __( 'Could not find matching comment.', 'akismet' ) ); continue; } if ( count( $comments ) > 1 ) { // Two comments shouldn't be able to match the same GUID. Akismet::log( 'Webhook failed: multiple matching comments found.', $comments ); $response['comments'][ $guid ] = array( 'status' => 'error', 'message' => __( 'Multiple comments matched request.', 'akismet' ) ); continue; } else { // We have one single match, as hoped for. Akismet::log( 'Found matching comment.', $comments ); $current_status = wp_get_comment_status( $comments[0] ); $result = $webhook_comment['result']; if ( 'true' == $result ) { Akismet::log( 'Comment should be spam' ); // The comment should be classified as spam. if ( 'spam' != $current_status ) { // The comment is not classified as spam. If Akismet was the one to act on it, move it to spam. if ( Akismet::last_comment_status_change_came_from_akismet( $comments[0]->comment_ID ) ) { Akismet::log( 'Comment is not spam; marking as spam.' ); wp_spam_comment( $comments[0] ); Akismet::update_comment_history( $comments[0]->comment_ID, '', 'webhook-spam' ); } else { Akismet::log( 'Comment is not spam, but it has already been manually handled by some other process.' ); Akismet::update_comment_history( $comments[0]->comment_ID, '', 'webhook-spam-noaction' ); } } } else if ( 'false' == $result ) { Akismet::log( 'Comment should be ham' ); // The comment should be classified as ham. if ( 'spam' == $current_status ) { Akismet::log( 'Comment is spam.' ); // The comment is classified as spam. If Akismet was the one to label it as spam, unspam it. if ( Akismet::last_comment_status_change_came_from_akismet( $comments[0]->comment_ID ) ) { Akismet::log( 'Akismet marked it as spam; unspamming.' ); wp_unspam_comment( $comments[0] ); akismet::update_comment_history( $comments[0]->comment_ID, '', 'webhook-ham' ); } else { Akismet::log( 'Comment is not spam, but it has already been manually handled by some other process.' ); Akismet::update_comment_history( $comments[0]->comment_ID, '', 'webhook-ham-noaction' ); } } } $response['comments'][ $guid ] = array( 'status' => 'success' ); } } break; case 'submit-ham': case 'submit-spam': // Nothing to do for submit-ham or submit-spam. break; default: // Unsupported endpoint. break; } /** * Allow plugins to do things with a successfully processed webhook request, like logging. * * @since 5.3.2 * * @param WP_REST_Request $request The REST request object. */ do_action( 'akismet_webhook_received', $request ); Akismet::log( 'Done processing webhook.' ); return rest_ensure_response( $response ); } } plugins/akismet/readme.txt000064400000013625147176754540011713 0ustar00=== Akismet Anti-spam: Spam Protection === Contributors: matt, ryan, andy, mdawaffe, tellyworth, josephscott, lessbloat, eoigal, cfinke, automattic, jgs, procifer, stephdau, kbrownkd, bluefuton, akismetantispam Tags: comments, spam, antispam, anti-spam, contact form Requires at least: 5.8 Tested up to: 6.6 Stable tag: 5.3.3 License: GPLv2 or later The best anti-spam protection to block spam comments and spam in a contact form. The most trusted antispam solution for WordPress and WooCommerce. == Description == The best anti-spam protection to block spam comments and spam in a contact form. The most trusted antispam solution for WordPress and WooCommerce. Akismet checks your comments and contact form submissions against our global database of spam to prevent your site from publishing malicious content. You can review the comment spam it catches on your blog's "Comments" admin screen. Major features in Akismet include: * Automatically checks all comments and filters out the ones that look like spam. * Each comment has a status history, so you can easily see which comments were caught or cleared by Akismet and which were spammed or unspammed by a moderator. * URLs are shown in the comment body to reveal hidden or misleading links. * Moderators can see the number of approved comments for each user. * A discard feature that outright blocks the worst spam, saving you disk space and speeding up your site. PS: You'll be prompted to get an Akismet.com API key to use it, once activated. Keys are free for personal blogs; paid subscriptions are available for businesses and commercial sites. == Installation == Upload the Akismet plugin to your blog, activate it, and then enter your Akismet.com API key. 1, 2, 3: You're done! == Changelog == = 5.3.3 = *Release Date - 10 July 2024* * Make setup step clearer for new users. * Remove the stats section from the configuration page if the site has been revoked from the key. * Skip the Akismet comment check when the comment matches something in the disallowed list. * Prompt users on legacy plans to contact Akismet support for upgrades. = 5.3.2 = *Release Date - 21 March 2024* * Improve the empty state shown to new users when no spam has been caught yet. * Update the message shown to users without a current subscription. * Add foundations for future webhook support. = 5.3.1 = *Release Date - 17 January 2024* * Make the plugin more resilient when asset files are missing (as seen in WordPress Playground). * Add a link to the 'Account overview' page on akismet.com. * Fix a minor error that occurs when another plugin removes all comment actions from the dashboard. * Add the akismet_request_args filter to allow request args in Akismet API requests to be filtered. * Fix a bug that causes some contact forms to include unnecessary data in the comment_content parameter. = 5.3 = *Release Date - 14 September 2023* * Improve display of user notices. * Add stylesheets for RTL languages. * Remove initial disabled state from 'Save changes' button. * Improve accessibility of API key entry form. * Add new filter hooks for Fluent Forms. * Fix issue with PHP 8.1 compatibility. = 5.2 = *Release Date - 21 June 2023* * Visual refresh of Akismet stats. * Improve PHP 8.1 compatibility. * Improve appearance of plugin to match updated stats. * Change minimum supported PHP version to 5.6 to match WordPress. * Drop IE11 support and update minimum WordPress version to 5.8 (where IE11 support was removed from WP Core). = 5.1 = *Release Date - 20 March 2023* * Removed unnecessary limit notices from admin page. * Improved spam detection by including post taxonomies in the comment-check call. * Removed API keys from stats iframes to avoid possible inadvertent exposure. = 5.0.2 = *Release Date - 1 December 2022* * Improved compatibility with themes that hide or show UI elements based on mouse movements. * Increased security of API keys by sending them in request bodies instead of subdomains. = 5.0.1 = *Release Date - 28 September 2022* * Added an empty state for the Statistics section on the admin page. * Fixed a bug that broke some admin page links when Jetpack plugins are active. * Marked some event listeners as passive to improve performance in newer browsers. * Disabled interaction observation on forms that post to other domains. = 5.0 = *Release Date - 26 July 2022* * Added a new feature to catch spammers by observing how they interact with the page. = 4.2.5 = *Release Date - 11 July 2022* * Fixed a bug that added unnecessary comment history entries after comment rechecks. * Added a notice that displays when WP-Cron is disabled and might be affecting comment rechecks. = 4.2.4 = *Release Date - 20 May 2022* * Improved translator instructions for comment history. * Bumped the "Tested up to" tag to WP 6.0. = 4.2.3 = *Release Date - 25 April 2022* * Improved compatibility with Fluent Forms * Fixed missing translation domains * Updated stats URL. * Improved accessibility of elements on the config page. = 4.2.2 = *Release Date - 24 January 2022* * Improved compatibility with Formidable Forms * Fixed a bug that could cause issues when multiple contact forms appear on one page. * Updated delete_comment and deleted_comment actions to pass two arguments to match WordPress core since 4.9.0. * Added a filter that allows comment types to be excluded when counting users' approved comments. = 4.2.1 = *Release Date - 1 October 2021* * Fixed a bug causing AMP validation to fail on certain pages with forms. = 4.2 = *Release Date - 30 September 2021* * Added links to additional information on API usage notifications. * Reduced the number of network requests required for a comment page when running Akismet. * Improved compatibility with the most popular contact form plugins. * Improved API usage buttons for clarity on what upgrade is needed. For older changelog entries, please see the [additional changelog.txt file](https://plugins.svn.wordpress.org/akismet/trunk/changelog.txt) delivered with the plugin. plugins/index.php000064400000000034147176754540010066 0ustar00Hello, Dolly in the upper right of your admin screen on every page. Author: Matt Mullenweg Version: 1.7.2 Author URI: http://ma.tt/ */ function hello_dolly_get_lyric() { /** These are the lyrics to Hello Dolly */ $lyrics = "Hello, Dolly Well, hello, Dolly It's so nice to have you back where you belong You're lookin' swell, Dolly I can tell, Dolly You're still glowin', you're still crowin' You're still goin' strong I feel the room swayin' While the band's playin' One of our old favorite songs from way back when So, take her wrap, fellas Dolly, never go away again Hello, Dolly Well, hello, Dolly It's so nice to have you back where you belong You're lookin' swell, Dolly I can tell, Dolly You're still glowin', you're still crowin' You're still goin' strong I feel the room swayin' While the band's playin' One of our old favorite songs from way back when So, golly, gee, fellas Have a little faith in me, fellas Dolly, never go away Promise, you'll never go away Dolly'll never go away again"; // Here we split it into lines. $lyrics = explode( "\n", $lyrics ); // And then randomly choose a line. return wptexturize( $lyrics[ mt_rand( 0, count( $lyrics ) - 1 ) ] ); } // This just echoes the chosen line, we'll position it later. function hello_dolly() { $chosen = hello_dolly_get_lyric(); $lang = ''; if ( 'en_' !== substr( get_user_locale(), 0, 3 ) ) { $lang = ' lang="en"'; } printf( '

%s %s

', __( 'Quote from Hello Dolly song, by Jerry Herman:' ), $lang, $chosen ); } // Now we set that function up to execute when the admin_notices action is called. add_action( 'admin_notices', 'hello_dolly' ); // We need some CSS to position the paragraph. function dolly_css() { echo " "; } add_action( 'admin_head', 'dolly_css' ); plugins/limit-login-attempts-reloaded/assets/css/fonts/CoFoRobert-RegularItalic.eot000064400001164774147176754540024622 0ustar00 LP Mj.CoFo Robert ItalicrVersion 1.001;PS 1.1;hotconv 16.6.54;makeotf.lib2.5.65590$CoFo Robert Italic FFTMGDEF58-GPOSL=vGSUB#9\OS/2cr`cmap4Rcvt 5 "fpgm?x gaspglyfT1XPheado,6hhead$hmtx)nvloca:$"maxp%v name9v6post3$prep !\.jM_<ZZ<6]<6*:w4LXKXJ^2 COFO   +M-6DuVN/<u4bOeDx4,":  (78'-7"NNYNO}0u@G,@>3GQFefppze[@z#xQ_34- :-J-3+<!A"/>$U')Y*L*2-#-5S?CC<6)Kp@:1NeN4W4NVol)/Nh.r }N0tNs^$HGpN1 M!M#<@GGGG>>>>GGGGGN^Fffffze\34-4-4-4-4-4-)-3333/>/>/./:0L*22222Nn2BCBCBCBC))4-4-4-@-@-@-@-J-J-G3G3G3G3G3@!@!@!@!A"B">/>>/>>/>>/>/>'M>$U3')3'3')25)3'L*L*L*L*L*G2G2G2|@255e\e\?e\"fBCfBCfBCfBCfBCfBCp6ze)ze[[[j9j-9)t*fBC)T -)F2e\ze)$U(mHtqKK GG,e3F>XKef1\q3GGGQ@`g1PMxZj;H{%4-@) 23|BCBC202C+2L*--Z*)0DC0R=J=+>>%&33 -/>/8U+A"20BC)DC5*E2a) L*p6p6p6G3ze)MPEd"]U3s@]0 {xguS\Rtgtv\v]x&p t su\t%tH}vN4N&N*N&#VpdypdxgdqNdRN>NXNgNhBSBSBSBSBSBSBSBSBSBSBSBSxvxQFPFr<M<d4D+;+;>2>2>2d>2dDOBSBSBSBSBSBSBSBSBSBSXd2%22%2228FMEyR4,a8>M>@31-\]s}1q}soI}?K1='5i'J^3V"(88N NN`NP+O+PXlclc= ; lr%<%<GGg1;{%.!|  E!d:!<JCDP=4-3BC2)>%&{ \F %%e*W&+& %J6EF'FF % % % % %%%%%ee*WWWWWW&&&&&&&&%%   %J%J%J%J6E6E6E6E6E6E6E6E6E6E6E'F'F'F'FFFFFFEBBBW[!hh'e&[ %%J)+5XHP`JJ%2Jh)_h&)N4N4NNNN N5NINXN.N#OFOFj08(%UYhN?E8NQNQNDN!;3N&GPC:$~7~37Y_cuGc      " & 0 : D p y !!!"!.!!""""H"`"e$i$$%%%%%&&'')++0 0 927YbrFb      % 0 9 D p t !!!"!.!!""""H"`"d$`$$%%%%%&&''v)++00{uh[S;%"bhfX>pTzaZSK}+߹߶ݼ<(܈܀a^?%֨փD4Z ~   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`aqdeivok ujrgglzcnm{b7w[ap]^_xb`\, UXEY KQKSZX4(Y`f UX%acc#b!!YC#DC`B-, `f-, d P&Z( CEcEEX!%YR[X!#!X PPX!@Y 8PX!8YY  CEcEad(PX! CEcE 0PX!0Y PX f a PX` PX! ` 6PX!6``YYY+YY#PXeYY-, E %ad CPX#B#B!!Y`-,#!#! dbB #BEX CEc C`Ec*! C +0%&QX`PaRYX#Y!Y @SX+!@Y#PXeY-,C+C`B-,#B# #Babfc`*-, E Ccb PX@`Yfc`D`-, CEB*!C`B- ,C#DC`B- , E +#C%` E#a d PX!0PX @YY#PXeY%#aDD`- , E +#C%` E#a d$PX@Y#PXeY%#aDD`- , #B EX!#!Y*!- ,EdaD-,` CJPX #BY CJRX #BY-, bfc c#aC` ` #B#-,KTXdDY$ e#x-,KQXKSXdDY!Y$e#x-,CUXCaB+YC%B %B %B# %PXC`%B #a*!#a #a*!C`%B%a*!Y CG CG`b PX@`Yfc Ccb PX@`Yfc`#DC>C`B-,ETX#B E #B #`B `aBB`+u+"Y-,+-,+-,+-,+-,+-,+-,+-,+-,+-, +-),# bfc`KTX# .]!!Y-*,# bfc`KTX# .q!!Y-+,# bfc&`KTX# .r!!Y-, +ETX#B E #B #`B `aBB`+u+"Y-,+- ,+-!,+-",+-#,+-$,+-%,+-&,+-',+-(, +-,, <`--, `` C#`C%a`,*!-.,-+-*-/, G Ccb PX@`Yfc`#a8# UX G Ccb PX@`Yfc`#a8!Y-0,ETX/*EX0Y"Y-1, +ETX/*EX0Y"Y-2, 5`-3,Ecb PX@`Yfc+ Ccb PX@`Yfc+D>#82*-4, < G Ccb PX@`Yfc`Ca8-5,.<-6, < G Ccb PX@`Yfc`CaCc8-7,% . G#B%IG#G#a Xb!Y#B6*-8,%%G#G#a C+e.# <8-9,%% .G#G#a #B C+ `PX @QX  &YBB# C #G#G#a#F`Cb PX@`Yfc` + a C`d#CadPXCaC`Y%b PX@`Yfca# &#Fa8#CF%CG#G#a` Cb PX@`Yfc`# +#C`+%a%b PX@`Yfc&a %`d#%`dPX!#!Y# &#Fa8Y-:, & .G#G#a#<8-;, #B F#G+#a8-<,%%G#G#aTX. <#!%%G#G#a %%G#G#a%%I%acc# Xb!Ycb PX@`Yfc`#.# <8#!Y-=, C .G#G#a ` `fb PX@`Yfc# <8->,# .F%FRX +-g,:+?+-h,:+@+-i,;+..+-j,;+>+-k,;+?+-l,;+@+-m,<+..+-n,<+>+-o,<+?+-p,<+@+-q,=+..+-r,=+>+-s,=+?+-t,=+@+-u, EX!#!YB+e$PxEX0Y-KRXYcpBE1*B@ XL8&*B@ ^RB/* B@@@ @ *B@@@@@ *D$QX@XdD&QX@cTXDYYYY@ ZN:( *DdDDLL**II++II++;;++{|;;++6,ddddhtXD $ T 4 X  T0H4||t\H| @!$!"d"#H#$x$%p%&&d&&',()t*++- .0012305067t949;H<$<=?@ABCDDEpEEFGHItJ0JtKL@MlNNODQQTQR<RSTTUUUVVXY Z[\\] ]^_`\ahcdefh hiijDjklmhno pp@pqrTrstu\w`yd{h}`<`x xhX@L <lH ( 88pLt<hʤdӈLռ֐$ڐ$۸|@px<l@h@` 04t0X D P  L@48L@D|`$ <!"8#%&'H'*x+ ,\-@-/\01L13347L9:< =>@C@CDF HLILKtMOQRSTUVWXLY@YZZ[$[[\\\]^^P^^_p_`abcdde\efdfgi<jklmn|nopppqxr@tvwXx`yz{0{|t|}|~|~$tP<@| <D40x| \p$h\lxtt4$h\d<żȸɜPld L؄x۸ސ@TT(t|4dT@x` 0,44\4h `x|   D ,L< x<D \!L"#$&8&($)4)*8*d***+ +0+T+t++, ,H-8---01235L667 788889$::@:d:::;;X;;<=\=>$>??@@4@`@A8BCETG HlI,IJKLN`NNOP P8PdPPQSUVHVWXYxZ[\^`4abdedfxgPhhi\jlmmo(q,r<slt\uwXyz|}}T}}~ ~~P\<p l\8,Hxx|| @4<  THtHL` lPtżƌHɴp˴̜@|ӌԔՔ<L8$ݰ\ P(|L,D, \8(HDT$     ` hh|!""$%%&'( )D*4+,../ 01d2457@9P;>\@AB<BCLD<EEFGGHIJJ|K,L4LMtN`NOPQHQRDRST|U<V(VWpXP>  0+!%!! '7`222j:F%!6%)@&pBK[CL( +7#>7>7>32"&54632$$  =I$$XH+G@+C'(uu $@!sBL   # +7>3237>32u#Wf#W$%  $%  HK PX@&  gb  a=LKPX@%  sb  a=L@.r  sb U Y  MYY@ +737#73733733#3##7##7#737#l?1.01/1no?./.-/.j?{4444/C/:Ei@f/2 <1% $ Jrp  nsK[KK [ LA=6*: +373#4&'#"&'#7.'#737'.546327.#"'232654&y%) !%),"04Ah[ &"7!!+8*8>@dH P/ 3:)^63E&CM C-5 67KY7>$C6; ?2IC')%l :."$<f! +7^@[pc  d  c;K [ CL-,31,7-7%#++   +7"&546323#72654&#""&54632'2654&#"KTgPLT.Er;[<@8/0:A4KTgPMS.E,?9009A3VKNiVC&F4ET9+9L92:VLNiWB&F54T9+9M91:BN\U@RZF7+U2Jpc[BK[CK[CLSQMKA?;9*$%' +326?3#"&'#"&5467.54632>7#"&54632%>54&#"3267/.'f(4, % (  . +?0g2Va|f dT@Kw_? *  RU&+0=6?([(nLU`$F>6&5%&&4($#(TPWk<"Wh@4TY z  -22#:S9!*Di9L"Xu @sBL # +7>32u#W$%  4 0+.54>7* _w7f^1B%LЏXl#*JBq_Qa 0+7'>54.k _w7f^1B%LЏXl#*JBq_Q G5@2=A3(JWc[O)),))* +#"&/#"&546?#"&546?'.54632'.546327>32RQ C B TS A B   ;Z  Z:  !  ;Z  Z: eq$ )@&rsUZN +3733##7#r636 636c/a]@JG[CL$& +'>7#"&54632 D<$+B) D!&%<2%DR&@UYM +%#73A9{b @[CL   +"&54632<$$ '(@r?L +3#55,,-@*[K[ L +"&54>32'2>54&#"[n+Li>ak'Jl?/P8 FA3R8M oVBuX3nW6s]<91L^-AK.I`1>N #@ YKYL+#7!#3!73Ls66v66'>@;pc[KYL ''+"32#"&54632!73!?>54&$/BpVLg1M`.t=*5]%M?(?"  EU9E-G=6Dn4h27<"++<C@@:Jcc_ [ K[ L53$"$!&#$" +%#"&54632+32>54&+732654&#"32#"&54632mK[=0!?/MF +g]?10?qYKe[P/4[`v?6"0!+>(1*+Y54&#"'!!>32HZ9,.G1?<$D]O>?N]|>7#/#"5C!62.? DHm7s&4A@>!Jpcc[ L('0.'4(4&'$&$+%#"&54>32#"&5467.#">322>54&#"%B_9Y^(OuLH]2$&J<. !\1Lf'@-<6QhG5^E)fZLQ;3%%Db<"(G$:M(42oW5>8!@pqYL+#7!#>7!c+5?fK4U?Wl=9?9??5- s+='@$; Jc[ L0.&$,$+%#"&5467.54>32'>54&#"32>54&/.'&B[5_iD<!8M,Qi64 * ,*G==R93QD#>.?*; 331P9\BE_5"+D.GB0W;aL*-2A6)1 3E'7",-  Q"$4?@<Jc_[K[ L&%.,%4&4&$"$$ +#"&54632#3267#"&54>32'"32>54&EsUHe E,Ud#P6Sg&AV0Vl"=->3(@.DCCY;9"0',TK8\@#^16J,67#"&54632$$ D<$+Bq'() D!&%<2%0+%%7% u-+8Y+"@aUYM +!7!!7!\ -[ //c0+77%0" /-+8O!-9@6pc[BK[CL#")'"-#-&$( +#7>54&#"2#"&54>32"&54632}c7 /I133(G 5F&QX$$*cd&6C%+6""(=)N'(0 9kFV@  76JK'PX@)c  c \CK[?LK1PX@0  pc  c \CK[?L@.  pc  c d[?LYY@HGPNGVHV(%(&%&'$ +#"&7467#"&54>327332>54&#"3267#".54>322>54&#"9;W87'&K'55 6J+.6+3F $>.Wi;.QpAN76YT]2Bwc5<1'% 4%;By\74%9=H=2eP3<.d.(1Qk;K}[KwS,3<=?3^ScSG6IM-:1HU$(0c8@5Jb:K Y;L +7#7333#73'#73 JF,J W p111w119e*E@B J aY:KY;L  * )#! +)73#7!232>54&+ 32>54&# XW aQY]==,MnUt0D*5=pQKp3O4>B1G0M8Bn B30T<#x1<*-4F',-@&@ JK'PX@+pn[BK;K[CL@/pn:K[BK;K[CLY@!  && +"32673#7#"&54>3273#>54&DfB!IVQn4@%f9n{1[Q@^'%84SU|;UfdQN'0wQP31^  ?A0@-Y:KY;L&! +732#!73332>54&# 5jm XOWZR'Ufx0nIS1GMt>UiqK PX@/hpaY:K Y;L@0ppaY:K Y;LY@ +%73!73#7!#7#3#=(2 XW 2( D K11G00egK PX@&haY:KY;L@'paY:KY;LY@  +#3#3!73#7!#F Io XW 2)x111G0@-c@ $ JKPX@-  pa [BK;K[CLKPX@)  pa [BK[;LKPX@-  pa [BK;K[CLK!PX@)  pa [BK[;LK'PX@-  pa [BK;K[CL@1  pa:K [BK;K[CLYYYYY@('&%"  -- +"326?#73##7#"&54>3273#>54&DeB &<(QfNAP' b;qw1YPA^&%80VR|A%A0Zf33U+1kXN20\  ?AC>@;  aY:K  Y  ; L +'3#73#!7#73#3#73!3#XW WB`BW WW WMMW 1G0000111 #@ Y:KY;L +'3#73#3#XW XX 1G001*+@(cY:K[CL#$# +%#7!##"&54632+326sh  XssX9?'" &6J00Kkb6(*0II@F Ja Y :K Y ;L +37#73#3#73#3#73#731@dU NB [bOV XW x0011"11G00 2@/pY:KY;L  +%73!73#7!#?(5 XW  [11G00<@9 J Y :KY;L +3#3#73# 3#73#7WNz WW V^XW XW %011/k11G0:0@- JY:KY;L +3#73## 3#73#V W@W XW 00B11GG(@%[BK[CL  +.54>32'32>54&#"8v{4]Mt2\LTCfE#JTBgF$sW}KwKTXfU};TcQyb:@7a Y:KY;L$! +%!73#732+32>54&# XW jiY:US:V6:E111G0QItG!9M,1;F_#=JT@QA1!Jpc_[BK[ CLIG:8.,'& ## +.54>32326?3#".67'.54632>54&#">?6&#"7v{5]Lt8P3 .# ( 47#&,IP<:=-.KTBgF$  3(sW}Kw:zo]1I$#':I/<WeA?ULR!UZ['TcQyD  !EP>\'2P@M J p  a Y:KY;K[CL20*(''+!%# +%#"&574&+3#73#732326?%32>54&+W 6+4$2bDV XW bdnX)   \)I6;54&#"#"&'#7332654.546327$+0HB:?UfUw_<]&)/W:COTeTlP>T  1<>06>3273326?32>54&#"6$"% 0\1?9%?X39@;.\ $"H;&.,'A-g<4"$/MOSG9w_>I8zH#&dAY\4I32"32>54&?Se[ l*b;;B,KgF#I<'/%*J5! 1?$j1S/AVG?@d>@^o.1%?]m,%7-%6@3Jpn[=K[CL&'$&" +%3#"&54>32#"&5467.#"326X/RBRY 5#;T_$32#73326?32>54&#"5*'!'e2?A%AY48FOL  $"H;&12&A/g<3&'=QQH;w_3232673#"&"7>54&3&D]61CP 9E8-JGeW#:N+ E/(<5@ -JK PX@/hh[BKY =K\GLK PX@0hp[BKY =K\GL@1pp[BKY =K\GLYY@54'$#'$# +##"&5463232>7#737>32#"&5467.#"3AdMU1;$~M K X?)8 (3 iPi,*$(4+'^V($"I=, &6 @ !JKPX@-p=K[=K[CK[GLKPX@)p[=K[CK[GLKPX@-p=K[=K[CK[GLK!PX@)p[=K[CK[GL@-p=K[=K[CK[GLYYYY@('0.'6(6'$#&# +7#"&54>3273#"&54632326'2>54&#"F/6]5?A$?Y3V^ 5H;Xh,-;"3JKPX@,pY:K[=K;K[CLKPX@(pY:K[=K[;L@,pY:K[=K;K[CLYY@ #+%& +%7>54&#"##73>32326?3#"&546r&  #J?0 &IZd/6>"37 -   $ 8*(#a2>Xc%y/!A2-*3s<!% <3)G> %@@=p[7#7#"OH0;#m 2%([^[+-$ )5+ 9T@QJpc Y:K[=K;K[CL987653.,)(%#$%! +3326?>32#"&5467326?3#"&?6&+##zl,6,4* $# % 1%.)31BH[p#3%0$ ,", = C9=+(3,6+>y)(@%pY:K[CL#& +3326?3#"&5467#x  $ 7*)$[; % <3)I*3L* JKPX@3p [=K  Y  =K;K[CLKPX@$p [ =KY;LKPX@3p [=K  Y  =K;K[CLK!PX@(p [ =K;K[CL@3p [=K  Y  =K;K[CLYYYY@LLKJ&+#+)% +>32>32326?3#"&546?>54&#"#>54&#"##77/6=!1- +2;"/6 .   $ 5*(# '  %B7) .JY $C9+ /J~[ױ#C3.$ / <.-'2w7 !% <3'"Be432326?3#"&546?>54&#"*~[8.7@$1; *   $ 5*(# ( &F:, 3+"B4!**6#j5!% <4+Fc27P[$2%(@%[=K[CL  +"&54>32'3267>54&#"QS!?]?6D!9;;(E JKPX@-[=KY=K[CK Y?LKPX@#[=K[CK Y?LKPX@-[=KY=K[CK Y?LK!PX@#[=K[CK Y?LK-PX@-[=KY=K[CK Y?L@+[=KY=K[CK Y?LYYYYY@%#&# +#73#73>32#"&'4&#"32> H[(4]3??&@Y32A Mt-#H;%12&A0,,z+RHPK:w_<7+.;=V^ 4I;Wg- &G@DJ=K[=K [CKY?L &&&# +#73#"&54>3273'2>54&#" \a3^5?A%AY432#"&5467&"#"#Z-,`6"!;7- -I+Qa& 1M_.7E@B5Jpn[=K[CL0.(& 77 +72654.54632#"&5467.#"#".54632*FCQC`D!<, ="(?3326?3#"&5467#"&546?#7[ B<0 2Ha  $ 3)&08?!13 PR 1:T^$& !% ;4$:<$I:%+(5+<+JKPX@ Y=K[=K[CLKPX@#[=K[=K[CLKPX@ Y=K[=K[CLK!PX@#[=K[=K[CL@ Y=K[=K[CLYYYY@++($)& +32>54&'#"&54632#"&546?#7I  0Q9   #EkH>; <\%S!!9Wi/ &33{hG:0%Z#+6@@ 3JKPX@"Y=K[=K[CLKPX@%Y=KY=K[CLKPX@"Y=K[=K[CLK!PX@%Y=KY=K[CL@"Y=K[=K[CLYYYY@ $)%&&$ +#"&7#"&546?#7332>?332>54&'#"&54632#Ca=N,(.46: ?\M 90' ADB $&F5 T3{hG[B9,45"^#+%W!.DR#"K>(:Wi. &3Af@c 4".1Jpn[ =K[ =K[CK[CL@>+$%"+$# +>32#"&546732673#"&/#"&54632>7'.#"#>32/Q5"C1( %,)%( 9U6L2 $0.($RS^'ZY%?3#"&54632326?#"&546?#7U ! A7* 1IhnBS 6GP5*2>$/A JQ 02IV$n;3$h\ =/002+?T@Q%Jpnn[=K[ CL=<:8,*! ?? +".'#"&5467"&/.#"#>32.54632632673886##  :1#% ,8531 $  E2!% ,   /  (*HM  / (+IL0.@+$ J[BK[GL0/! +#";#"&54>54&'7>54&54>3 #N; >8"#!"+5 7H@$*$*(54&+732#H #N; >8"#!"+5 7H@$*$*(3232673#"." +7.3/.+ 5/3/-#1C'3A! *@'pq[=L    +2#"&5>3#"&7>7>%$$% A&'WH*HA*Ce>-@ JK PX@0fpng[K[ LKPX@.rpns[K[ L@,rpnsd[ LYY@ &'&+%3+#7.54>;73#"&5467.#"3260dB*@Q >\;*3C 7%/C*B61JJG\` ]K9mU4`d :,#:QXCM84*B@?pc a[K Y  L*)$#"$# +37>32#"&5467.#"3#!73!7>?#u< bV?E (39 } $0.&%v7%C ,Zf"32654&. ;Y"WX!\9$=]"\Z!\?%>KM<;JJY#W;"'@Y"[]"[@&!9Y#Z4H32#"&5463.#">54&/.'Mf !!J5;T81$;D\E6I*"?1  B&?P9. :BSE!t  ;B3. CF04C?'0.G:)2O6Nf<()>()%.!82'7I9Gf:#WePW3%: U1*8. 3dD@(W[O      +D"&546323"&54632 "!!.')%'l'GgdD@\; /Jc  W   aU cW[O)(CA?>=<9731.-,+(G)G((($ +D4>32#".732>54.#"2653#'#"&5463273#.#"l&Fe??eF&&Fe>?eG&$">X55W>"#>W55W>"(# 0<3273326?32>54&#"!7!3 %I%1/3E(+2.-G  7-$"0" S0' $;=A7,[J09,`7 H0@D)7,BP#+1/$  0+'?'7 /#V!>%b˼ʽh e>K PX@gUYM@sUYMY +!7!#26/r.ENdD: JK!PX@<  h c  c  c dW[OK-PX@=  p c  c  c dW[O@B  p c  c  c U  dW[OYY@NLHFEEB@5321%%$&(" +D4632#".732654&#"#"&/.+3#535#532326='32654&+r|d/P;":Q22S; !fYZahSYf6 `o&2#  %'by 9Q11S<""54&#"#"&54632373J q38$ J646O<^6(_+F+  -9+'9M-IB^+~>J@G6Jpcc[^K[_L=;42.,+)%#! " +4632#"&5&632#32654&+732654&#"#"&K/3>%  VA29   +0!' 2' # V+1,*"4  :D+% 6'8"  + dD@ Gi% +D'7>32yY  vg )$2@/pcY:K[GL&#"$$ +#"&54632#326?#"&54>;#E"2G3733#73_ ,  )XV ^]& ((1!%3@0][^K[[L%$#"  +"&54>32'3267>54&#"!7!>D2I.BB2Jr*%*( @8I@+VD*G@(UF.*."e&*0"]1#{  0+7'7'7'7'7 /#V!>%b#˼ʽM"dD"JK PX@Arr  p  hq a b   U  Z  N@Brr  p  pq a b   U  Z  NY@! ! +D3##73267>733#73##7#?33#37,-e_ ,  )XV ^,: FI,}:Ff& ((UU%M7ndD@c! Jrr   p  ns a  c b  U Y M7654.,(&! +D3##73267>733#73#?>54&#"#"&54632373,-l_ ,  )XV ^ q38$ J646O<^Ff& (((_+F+  -9+'9M-IB<>BMPdD@ 6PJK PX@Opp h q cccc U Z   N@Ppp p q cccc U Z   NY@$ONMLKJHGFEDCBA@?=;42.,+)%#! " +D4632#"&5&632#32654&+732654&#"#"&%3#%##7#?33#37qK/3>%  VA29   +0!' 2' # ,-),: FI,}:V+1,*"4  :D+% 6'8"  hF^UU%!a +;@8pd_[=L*("    +2#"&54646?33267.54632#"&1$%zc7 `b36%F"7H%NV&'cvnoI+5!"(=)L^q B@?  Jr  b:K Y;L   % +.54632#7333#73'#73f  n JF,J W p$ XF11w119^i B@? Jr  b:K Y;L   % +'7>32#7333#73'#735  j JF,J W p2T 11w119^mE@B Jr  b:K Y;L +''73#7333#73'#73U^6 JF,J W pQQr11w119zf/2b@_2Jcc  b:K Y ;L 10 / /.-,+*)('&%$#"!  +"#7>32326?3#"&/.#7333#73'#73 '6$   ' +%#  JF,J W p23,  ",+ 11w119dX '*[@X* J c  b:K Y;L )(''&%$#"!      +"&546323"&54632#7333#73'#73j#!#"p JF,J W p%%&$;11w119_a&)?@<)  J  c  b:KY;L('%#&" +46323#73'#3#73.732654&#"3^E-/B2%+J W qU Ju*))'!*3;;3,91111a 2""))""''7JK PX@:h  pa  aY:K Y ;L@;p  pa  aY:K Y ;LY@ +7#73#7!#7#3#!73!737#73 Su 3(A K>(3 W3ެR111G00獾11@;KPX@2 JKPX@2 J@2 JYYK PX@=  pnh  [  BK;K[CK[?LKPX@>  pnp  [  BK;K[CK[?LKPX@:  pnp  [  BK[;K[?LK'PX@>  pnp  [  BK;K[CK[?L@B  pnp :K  [ BK;K[CK[?LYYYY@65430.('&%! ;; +"32673#7#"&'732654&'7.54>3273#>54&DfB!IVQn4@%^6$*):52 ,"-5cl1[Q@^'%84SU|;UfdQN%/L!!)3 ) opQP31^  ?Aqq  JK PX@4rh  p  aY:K Y;L@5rp  p  aY:K Y;LY@  % +.5463273!73#7!#7#3#>  =(2 XW 2( D K$ XF1G00qi JK PX@4rh  p  aY:K Y;L@5rp  p  aY:K Y;LY@  % +'7>3273!73#7!#7#3#  =(2 XW 2( D K2T 1G00qm@ JK PX@4rh  p  aY:K Y;L@5rp  p  aY:K Y;LY@ +''7373!73#7!#7#3#7^6P=(2 XW 2( D KQQrč1G00qX +K PX@;   h  pc  a Y:K Y;L@<   p  pc  a Y:K Y;LY@+ ++*)('&%$#"!      +"&546323"&5463273!73#7!#7#3#M#!#"=(2 XW 2( D K%%&$;1G00q /@, JrY:KY;L% +.546323#73#3#  PXW XX $ XFG001i /@,JrY:KY;L% +'7>323#73#3#  VXW XX 2T G001m2@/JrY:KY;L +''733#73#3#^6XW XX QQrG001X #E@B  cY:K Y ; L #"!     +"&546323"&546323#73#3##!#"MXW XX %%&$;G001!@@= a Y:KY;L! &! +73#732#!733#32>54&#I JDW 5jm XLD LYZR'UfM,0nIS1+,Mt>Ui:f3\@Y+" Jcc Y:K  Y  ; L3210/.-,*)('&%$#!   +"#7>32326?3#"&/.3#73## 3#73# '6$   ' +%# ֗V W@W XW23,  ",+  00B11GGq +4@1 Jr[BK[CL (&   % +.54632.54>32'32>54&#"h  v{4]Mt2\LTCfE#JTBgF$$ X sW}KwKTXfU};TcQyGi +4@1Jr[BK[CL (&   % +'7>32.54>32'32>54&#"6  v{4]Mt2\LTCfE#JTBgF$2T sW}KwKTXfU};TcQyGm&7@4Jr[BK[CL#! +''73.54>32'32>54&#"X^6v{4]Mt2\LTCfE#JTBgF$QQrsW}KwKTXfU};TcQyGf/?K@H cc [BK[ CL! <:42)' /!/  +"#7>32326?3#"&/..54>32'32>54&#" '6$   ' +%# lv{4]Mt2\LTCfE#JTBgF$23,  ",+ sW}KwKTXfU};TcQyGX '7D@A c[BK[ CL 42,*!''    +"&546323"&54632.54>32'32>54&#"l#!#"v{4]Mt2\LTCfE#JTBgF$%%&$sW}KwKTXfU};TcQy^ 0+%''7'77ii(gk$$F'1@. J[BK[CL$"  +.54>32'.#"%4&'32>7u|5]Ms2\z;)BgE% ?+CgE#sW}KwKT3Qy5/U}f3q %3@0 JrY:K[CL##% +.546323#3267#73##"&7#  , VY!5cek]V O](Y(ZN$ XC0zoY00Qf3i %3@0JrY:K[CL##% +'7>323#3267#73##"&7#w   VY!5cek]V O](Y(ZN2T z0zoY00Qf3m 6@3JrY:K[CL## +''733#3267#73##"&7#^6] VY!5cek]V O](Y(ZNQQr0zoY00Qf3X 1K@H  c Y:K [ C L 10-+('&%$#      +"&546323"&546323#3267#73##"&7##!#"' VY!5cek]V O](Y(ZN%%&$N0zoY00Qei @@=JrY :KY;L % +'7>32##73#3!737#7-   XNS K7e f7^J 2T z0C0011y0@nKPX@(   aaY:KY;L@&a   aaY;LY@"$! +#7!#32+3!7332654&#o  WTjj\ n XMUse:F01eNIi{x11fM1:4kJK PX@/hc[ BKY;K\CLKPX@0pc[ BKY;K\CLKPX@(pc[ BK\CLKPX@0pc[ BKY;K\CLK!PX@2pc[ BKZ;K\CL@0pc[ BKY;K\CLYYYYY@10/.+)#!  44 +2#"&?332>54&+732>54&#"#73>EMKK674L0<< ( #" 1"9D##(:%$*:LEstA3273326?32>54&#"  P6$"% 0\1?9%?X39@;.\ $"H;&.,'A-n   Y<4"$/MOSG9w_>I8zH#&dAY\4I32#"&5467#"&54>3273326?32>54&#"yY  N6$"% 0\1?9%?X39@;.\ $"H;&.,'A-vg <4"$/MOSG9w_>I8zH#&dAY\4I3273326?32>54&#"T9t6$"% 0\1?9%?X39@;.\ $"H;&.,'A-#ki<4"$/MOSG9w_>I8zH#&dAY\4I32326?3#"&/.#"&5467#"&54>3273326?32>54&#" # (! # %$ 6$"% 0\1?9%?X39@;.\ $"H;&.,'A-~*()  +&-  <4"$/MOSG9w_>I8zH#&dAY\4I GE>M?M=<9710-+%#     +"&546323"&54632#"&5467#"&54>3273326?32>54&#" "!!86$"% 0\1?9%?X39@;.\ $"H;&.,'A-.')%'9<4"$/MOSG9w_>I8zH#&dAY\4IGE>M?M=<&&'$$$$" +4632#"&732654&#"#"&5467#"&54>3273326?32>54&#"=(*;=((=)   6$"% 0\1?9%?X39@;.\ $"H;&.,'A-s-55-.66.!!! <4"$/MOSG9w_>I8zH#&dAY\4I32>3232673"7>54&26?#"FT "gA27iE -7%73B"6F "Z2AJ[or/3/F0\@^cND$-3_9Hd MCJF8(ZH1FB  0!.&(,=1CP"9E8-JGiSD1#xTH9<-:@-JK PX@5pnh[=K[CK[?L@6pnp[=K[CK[?LY@ &'$(%& +%3#"&'732654&'7.54>32#"&5467.#"326X/O<%*):52 ,"-6EJ 5#;T_$3232673#"&"7>54&  P&D]61CP 9E8-JGeW#:N+ E/(3 '3p@ -JKPX@#pBK[=K[CL@#rp[=K[CLY@)((3)3"+)% +'7>324>3232673#"&"7>54&yY  &D]61CP 9E8-JGeW#:N+ E/(3".r@(JKPX@#p:K[=K[CL@#rp[=K[CLY@$##.$."+% +''734>3232673#"&"7>54&T9&D]61CP 9E8-JGeW#:N+ E/(3 3?9$JK!PX@,p  [3232673#"&"7>54& "!!&D]61CP 9E8-JGeW#:N+ E/(>  %c JKPX@"pBKY=K[CL@"rpY=K[CLY@ #&% +.54632#73326?3#"&5467w  PB[Y  $ 8*(# n   b+C $% <3&"B>; %cJKPX@"pBKY=K[CL@"rpY=K[CLY@ #&% +'7>32#73326?3#"&5467yY  [Y  $ 8*(# vg +C $% <3&"B.I f@ JKPX@"p:KY=K[CL@"rpY=K[CLY@ #& +''73#73326?3#"&5467IT9`[Y  $ 8*(# #ki+C $% <3&"B:Y 1K!PX@+p  [32.''7.'37'2>54.#"TQ!=U3%6(a S3J&a T-9"?\5*B-(,?(/ dK8nW6!?"#2(#%9~F7t^=*>Ye&';Wd(89*%S% JKPX@D   pc[BK [=K Y=K ;K [ C LKPX@:   pc[BK [=K ;K [ C LKPX@D   pc[BK [=K Y=K ;K [ C LK!PX@:   pc[BK [=K ;K [ C LK-PX@D   pc[BK [=K Y=K ;K [ C L@Kp   pc[BK [=K Y=K ;K [ C LYYYYY@'  S SNLA?<;86+)$#"!  +"#7>32326?3#"&/.#73>32326?3#"&546?>54&#"F# (! # %$ ~[8.7@$1; *   $ 5*(# ( &F:, 3~*()  +&-  +"B4!**6#j5!% <4+Fc27P[$2 1\ JKPX@BK[=K[CL@r[=K[CLY@ +)   % +.54632"&54>32'3267>54&#"  PQS!?]?6D!9;;2 1\JKPX@BK[=K[CL@r[=K[CLY@ +)   % +'7>32"&54>32'3267>54&#"yY  QS!?]?6D!9;;2,_@ JKPX@:K[=K[CL@r[=K[CLY@&$ +''73"&54>32'3267>54&#"T9QS!?]?6D!9;;2/EK-PX@+c [BK [=K[ CL@2pc [BK [=K[ CLY@! ?=42)' /!/  +"#7>32326?3#"&/."&54>32'3267>54&#"# (! # %$ 0QS!?]?6D!9;;2 '=sK!PX@$ [32'3267>54&#" "!!QS!?]?6D!9;;no!( <@9caW[O    +"&54632!7!"&54632d#$Z #$&'/&'2-1@.#"J[=K[CL'%  +2#"&54>.#"%4&'3267>+UQ!?_?C& >x@ 0JKPX@&pBKY =K[CL@&rpY =K[CLY@ > >)#&+% +.5463232>?3326?3#"&5467#"&546?#7  Pv[ B<0 2Ha  $ 3)&08?!13 PR n   71:T^$& !% ;4$:<$I:%+(5+C& >x@ 0JKPX@&pBKY =K[CL@&rpY =K[CLY@ > >)#&+% +'7>3232>?3326?3#"&5467#"&546?#7yY  [ B<0 2Ha  $ 3)&08?!13 PR vg 1:T^$& !% ;4$:<$I:%+(5+C&9z@ +JKPX@&p:KY =K[CL@&rpY =K[CLY@99)#&' +''7332>?3326?3#"&5467#"&546?#7T9[ B<0 2Ha  $ 3)&08?!13 PR #ki1:T^$& !% ;4$:<$I:%+(5+C& J< JK!PX@/  p  [?3326?3#"&5467#"&546?#7 "!![ B<0 2Ha  $ 3)&08?!13 PR .')%'W1:T^$& !% ;4$:<$I:%+(5+ ?@1*JKPX@.pBKY =K[CK[GL@.rpY =K[CK[GLY@ ? ?''$#+% +'7>3232>?3#"&54632326?#"&546?#7yY  U ! A7* 1IhnBS 6GP5*2>$/A JQ vg 02IV$n;3$h\ =/002+(H@E JY:K[=K[CK Y?L%#&# +#73#73>32#"&'4&#"32> H[a4]3??&@Y32A Nt-#H;%12&A0,,K+RHPK:w_<8..;=V^ 4I;Wg K@ = 6JK!PX@7  p  [?3#"&54632326?#"&546?#7 "!!U ! A7* 1IhnBS 6GP5*2>$/A JQ .')%'W02IV$n;3$h\ =/002+oBB@? Ja  b:K Y;L +!!#7333#73'#73] JF,J W pB2!11w119-b)9  JKPX@-  pa=K [=K [CLKPX@)  pa [=K [CLKPX@-  pa=K [=K [CLK!PX@)  pa [=K [CL@-  pa=K [=K [CLYYYY@+*31*9+9&&'# +3##"&5467#"&54>3273326?32>54&#"6$"% 0\1?9%?X39@;.\ $"H;&.,'A-b/4<4"$/MOSG9w_>I8zH#&dAY\4I+ JKPX@3  pc:K=K [=K [CLKPX@/  pc:K [=K [CLKPX@3  pc:K=K [=K [CLK!PX@/  pc:K [=K [CL@3  pc:K=K [=K [CLYYYY@;:CA:I;I98&&''"% +332673#"&546#"&5467#"&54>3273326?32>54&#"$%8%EB+, 6$"% 0\1?9%?X39@;.\ $"H;&.,'A- &1IA(* <4"$/MOSG9w_>I8zH#&dAY\4I3273326?33267'2>54&#" *,6D< 1[1?9%?X38@;.\ $ #:M& "H;&.,'A- %".L%".KOSG9w_>H7xH#& *2 %G# AY\4I32"32673#7#"&54>3273#>54&@  DfB!IVQn4@%f9n{1[Q@^'%84S2T U|;UfdQN'0wQP31^  ?A- 1q@ $JKPX@'p[=K[BK[CL@%pc[=K[CLY@ &'$&"% +'7>323#"&54>32#"&5467.#"326yY  ;/RBRY 5#;T_$3273#>54&J^6ZDfB!IVQn4@%f9n{1[Q@^'%84SQQrU|;UfdQN'0wQP31^  ?A-,y@ JKPX@)pn:K[=K[CL@)rpn[=K[CLY@ &'$&" +''733#"&54>32#"&5467.#"326T9/RBRY 5#;T_$3273#>54&%$@DfB!IVQn4@%f9n{1[Q@^'%84S%%uU|;UfdQN'0wQP31^  ?A- 1O@L$Jpn[32#"&5467.#"3264## /RBRY 5#;T_$3273#>54&\^6DfB!IVQn4@%f9n{1[Q@^'%84SWQQreU|;UfdQN'0wQP31^  ?A-,C@@JHrpn[=K[CL&'$&" +77#3#"&54>32#"&5467.#"326T9U/RBRY 5#;T_$54&#7^6 5jm XOWZR'UfWQQrl0nIS1GMt>Ui-:JU@* JKPX@4  pY:K[BK [=K [CLKPX@6  p[BK[BK [=K [CLKPX@4  pY:K[BK [=K [CLK!PX@6  p[BK[BK [=K [CL@4  pY:K[BK [=K [CLYYYY@<;DB;J7#"&54632#"&5467#"&54>32#73326?32>54&#"a #95*'!'e2?A%AY48FOL  $"H;&12&A/!%".Kg<3&'=QQH;w_54&#I JDW 5jm XLD LYZR'UfM,0nIS1+,Mt>Ui-x/?^@[. J  p  aY:K [ =K [CL10970?1?//,*'#& +737#733#326?3#"&5467#"&54>3272>54&#"T K "P Nd  $ 5*'!'e2?A%AY48F0"H;&12&A/ %I.w%A#& <3&'=QQH;w_3232673#"&"7>54&&D]61CP 9E8-JGeW#:N+ E/(qd%K PX@=r   h  pc  a Y:K Y;L@>r   p  pc  a Y:K Y;LY@%%$#"! "# +332673#"&54673!73#7!#7#3#9)!&*A)PE66^=(2 XW 2( D Kd "!')E<0+֍1G003/;G@D5 Jpc:K [=K[CL100;1;"+)"% +332673#"&5464>3232673#"&"7>54&$%8%EB+,&D]61CP 9E8-JGeW#:N+ E/(q[ K PX@8 h  p c  aY:K Y;L@9  p  p c  aY:K Y;LY@#       +"&5463273!73#7!#7#3#%$6=(2 XW 2( D K%%>1G003 '3L@I-Jp[3232673#"&"7>54&2##&D]61CP 9E8-JGeW#:N+ E/(q&׵  JK PX@8h  p aY:KY;K [ ? LK)PX@9p  p aY:KY;K [ ? L@6p  p a _Y:KY;LYY@%# +467!73#7!#7#3#!733267#"&PHL XW 2( D K=(2BQ& *,7/S%1G00獾#I# 1 %31=v@ 71JK'PX@(p[=K[CK[?L@%p_[=K[CLY@322=3=(+&E" +#"&5467"#"&54>32326733267"7>54& "%3@; OW&D]61CP 9E8-1@$O" ]";N+ E/(qmHK PX@4rh  p  aY:K Y;L@5rp  p  aY:K Y;LY@ +77#73!73#7!#7#3#7^6=(2 XW 2( D KWQQrM1G003".B@?(JHrp[=K[CL$##.$."+% +77#4>3232673#"&"7>54&T9&D]61CP 9E8-JGeW#:N+ E/(@m4@+ JKPX@2r  pa [ BK;K[CLKPX@.r  pa [ BK[;LKPX@2r  pa [ BK;K[CLK!PX@.r  pa [ BK[;LK'PX@2r  pa [ BK;K[CL@6r  pa :K [BK;K[CLYYYYY@/.-,)'!44 +''73"326?#73##7#"&54>3273#>54&H^6ZDeB &<(QfNAP' b;qw1YPA^&%80VQQrR|A%A0Zf33U+1kXN20\  ?A -=x@(JKPX@2p:K=K[=K [CK[GLKPX@.p:K[=K [CK[GLKPX@2p:K=K[=K [CK[GLKPX@.p:K[=K [CK[GLK!PX@.rp[=K [CK[GL@2rp=K[=K [CK[GLYYYYY@/.75.=/='$#&$ +''737#"&54>3273#"&54632326'2>54&#"T9C/6]5?A$?Y3V^ 5H;Xh,-;@d?@ 6 (JKPX@6 c  aa [  BK ;K [ C LKPX@2 c  aa [  BK [  ; LKPX@6 c  aa [  BK ;K [ C LK!PX@2 c  aa [  BK [  ; LK'PX@6 c  aa [  BK ;K [ C L@: c  aa :K [ BK ;K [ C LYYYYY@:98742,*'&%$#"! ??"# +332673#"&546"326?#73##7#"&54>3273#>54&L)!&*A)PE66RDeB &<(QfNAP' b;qw1YPA^&%80Vd "!')E<0+R|A%A0Zf33U+1kXN20\  ?A :Jk@ # 5 JKPX@;  pc:K=K [=K  [CK [GLKPX@7  pc:K [=K  [CK [GLKPX@;  pc:K=K [=K  [CK [GLK!PX@7  pc:K [=K  [CK [GL@;  pc:K=K [=K  [CK [GLYYYY@<;DB;J3273#"&54632326'2>54&#"$%8%EB+,W/6]5?A$?Y3V^ 5H;Xh,-;@[ 9@ 0 "JKPX@6  p  ca  [  BK;K[CLKPX@2  p  ca  [  BK[;LKPX@6  p  ca  [  BK;K[CLK!PX@2  p  ca  [  BK[;LK'PX@6  p  ca  [  BK;K[CL@:  p  ca :K  [ BK;K[CLYYYYY@# 4321.,&$!  9 9   +"&54632"326?#73##7#"&54>3273#>54&%$ADeB &<(QfNAP' b;qw1YPA^&%80V%%tR|A%A0Zf33U+1kXN20\  ?A  2Be@   -JKPX@8p [3273#"&54632326'2>54&#"Q##&/6]5?A$?Y3V^ 5H;Xh,-;@-B@$ 2 JKPX@4  pa _ [BK;K[CLKPX@0  pa _ [BK[;LKPX@4  pa _ [BK;K[CLK!PX@0  pa _ [BK[;LK'PX@4  pa _ [BK;K[CL@8  pa _:K [BK;K[CLYYYYY@<:64('&%"  -- +"326?#73##7#"&54>3273#>54&7>7#"&54632DeB &<(QfNAP' b;qw1YPA^&%80V(2 !%9R|A%A0Zf33U+1kXN20\  ?Ae&,!$2) ;KN@$ 6JKPX@5pc=K [=K [CK[GLKPX@1pc [=K [CK[GLKPX@5pc=K [=K [CK[GLK!PX@1pc [=K [CK[GL@5pc=K [=K [CK[GLYYYY@=32#"&54>7#"&54>3273#"&54632326'2>54&#"(2 !%9E/6]5?A$?Y3V^ 5H;Xh,-;Cm"N@KJr  aY:K  Y ; L"!  +''733#73#!7#73#3#73!3#^6XW WB`BW WW WMMW QQrG0000111"S:@ JKPX@1rpY:K[=K;K[CLKPX@-rpY:K[=K[;L@1rpY:K[=K;K[CLYY@ #+%' +''737>54&#"##73>32326?3#"&546p^6S&  #J?0 &IZd/6>"37 -   $ 8*(#QQrka2>Xc%y/!A2-*3s<!% <3)GC#'V@S  aa Y:K  Y ; L'&%$#"!  +'3#737#73#!7#73#3#3#73!3#!7!XpS R!W W d W W!\ [pW WMKU  d1+z00zz00z+^111S";ε JKPX@6 paY:K[=K;K [ C LKPX@2 paY:K[=K [ ;L@6 paY:K[=K;K [ C LYY@7521.,%& +%7>54&#"##737#733#>32326?3#"&546s&  #K@0 %H_ ]Zu t;/7@"37 -   $ 8*(#a2>Xc% %I.w%"A3-*3s<!% <3)Gf+L@I cc Y:K  Y ; L+*)('&%$#"!   +"#7>32326?3#"&/.3#73#3# '6$   ' +%# XW XX 23,  ",+ G001>_9K-PX@2  pc [BKY=K [ C L@9p  pc [BKY=K [ C LY@42/.+)#"!   +"#7>32326?3#"&/.#73326?3#"&5467# (! # %$ [Y  $ 8*(# ~*()  +&-  +C $% <3&"BB-@*aY:KY;L +!!3#73#3#XW XX B2!G001>Db2@/paY=K[CL#& +3##73326?3#"&5467WY[Y  $ 8*(# b/+C $% <3&"Bd6@3rcY:K Y ; L"# +332673#"&5463#73#3#)!&*A)PE66XW XX d "!')E<0+G001>k-:@7pc:KY=K[CL#&"% +332673#"&546#73326?3#"&5467v$%8%EB+,/[Y  $ 8*(#  &1IA(* +C $% <3&"BbJK)PX@"Y:KY;K[?L@_Y:KY;LY@ %% +467#73#73#3#3267#"&41g XW XX `32& *,6+R$1G001!K# 1 ( 88JK)PX@/pn[G001> (@%pY=K[CL#& +#73326?3#"&5467[Y  $ 8*(# +C $% <3&"B' *A@> a cY:K [ C L)'$# +3#73#3##7!##".54632+3264XJW XJX bf  Xc%w2H-%#  A;Qs\0011~00z$,+0'e>C 1MB JK PX@?p  h[7#7"!#"[Y  $ 8*(# ΐOH0;#m 2%(%(+C $% <3&"B^[+-$ )5+@m#:@7JrcY:K[CL#$# +''73#7!##"&54632+326@^6sh  XssX9?'" &6JQQrU00Kkb6(*0IUM"@ JK PX@"h:KY=K\GLKPX@#p:KY=K\GL@#rpY=K\GLYY@""'$$ +''73#"&5463232>7#7MT9OH0;#m #ki^[+-$ )5+1X@U !Ja_ Y :K Y ;L+)%# +37#73#3#73#3#73#737>7#"&546321@dU NB [bOV XW (2 !%9x0011"11G00l&,!$2) 9Nc@`> Jpc _ Y:K[=K;K[CLHFB@987653.,)(%#$%! +3326?>32#"&5467326?3#"&?6&+##7>7#"&54632zl,6,4* $# % 1%.)31BH[(2 !%9p#3%0$ ,", = C9=+(3,6+>yk&,!$2)i >@;JrpY:KY;L  % +'7>3273!73#7!#  ?(5 XW  [2T 1G00)kK %4@1JrpY:K[CL#&% +'7>323326?3#"&5467#G  ⢔  $ 7*)$[&F ]; % <3)I "C@@Jp_Y:K Y;L  +%73!73#7!# 7>7#"&54632?(5 XW  [(2 !%911G00&,!$2).7@4Jp_Y:K[CL$'#& +3326?3#"&5467#7>7#"&54632x  $ 7*)$[p(2 !%9; % <3)Ik&,!$2) D@AJpY:K[BK Y;L  $& +7>7#"&5463273!73#7!# #9;?(5 XW  [!%".K/1G00),JKPX@'pY:K[BK[CLKPX@)p[BK[BK[CLKPX@'pY:K[BK[CLK!PX@)p[BK[BK[CL@'pY:K[BK[CLYYYY@ #&$& +7>7#"&54632'3326?3#"&5467#& #9ꢔ  $ 7*)$[!%".K; % <3)I C@@p cY:K Y;L  +%73!73#7!#%"&54632>(4 XW  [%%$11G00%%)]%9@6pcY:K[CL!%%#& +3326?3#"&5467#"&54636x  $ 7*)$[!"; % <3)I$&;@8JpY:KY;L +%!73?#7!#7!75 WHklEW  \> P ?1 13200<3=ԓ!0@-!JpY:K[CL#* +?#737326?3#"&546? OR[VW Z0  $ 7*)$#/$/,2,; % <3)Iv:i ;@8Jr Y:KY;L% +'7>323#73## 3#73#]  )V W@W XW2T z 00B11G*% ?KPX@ JKPX@ JKPX@ JK!PX@ J@ JYYYYKPX@4pBK[=KY=K ;K[CLKPX@*pBK[=K ;K[CLKPX@4pBK[=KY=K ;K[CLKPX@*pBK[=K ;K[CLK!PX@*rp[=K ;K[CL@4rp[=KY=K ;K[CLYYYYY@ ? ?+#+%% +'7>32#73>32326?3#"&546?>54&#"yY  R~[8.7@$1; *   $ 5*(# ( &F:, 3vg +"B4!**6#j5!% <4+Fc27P[$:(?@<  J _Y:KY;L"  +3#73## 3#73#7>7#"&54632V W@W XWL(2 !%9 00B11Gl&,!$2)*%3HC@ 8 JKPX@6p  _[=KY=K ;K[CLKPX@,p  _[=K ;K[CLKPX@6p  _[=KY=K ;K[CLK!PX@,p  _[=K ;K[CL@6p  _[=KY=K ;K[CLYYYY@B@<:33+#+% +3#73>32326?3#"&546?>54&#"7>7#"&54632*~[8.7@$1; *   $ 5*(# ( &F:, 3 (2 !%9+"B4!**6#j5!% <4+Fc27P[$&,!$2):m>@; JHr Y:KY;L +77#3#73## 3#73#u^6ӗV W@W XWWQQr< 00B11G*4:9@ JHKPX@4rp[=KY=K ;K[CLKPX@*rp[=K ;K[CLKPX@4rp[=KY=K ;K[CLK!PX@*rp[=K ;K[CL@4rp[=KY=K ;K[CLYYYY@::+#+% +77##73>32326?3#"&546?>54&#"T9~[8.7@$1; *   $ 5*(# ( &F:, 3ki+"B4!**6#j5!% <4+Fc27P[$*%FP@ JKPX@9p[BK[=KY=K  ;K[CLKPX@/p[BK[=K  ;K[CLKPX@9p[BK[=KY=K  ;K[CLK!PX@/p[BK[=K  ;K[CL@9p[BK[=KY=K  ;K[CLYYYY@FF+#+%$& +7>7#"&54632#73>32326?3#"&546?>54&#"d #9v~[8.7@$1; *   $ 5*(# ( &F:, 3!%".K+"B4!**6#j5!% <4+Fc27P[$(:*V@S J c  _Y:KY;L%$  ** +267 3#73#73#73##"&54632#*'a5EW XW V W^X9=("!&RTD11G000km6()1*5H@ "JK PX@-h[=KY=K;K\GLKPX@.p[=KY=K;K\GLKPX@$p[=K;K\GLKPX@.p[=KY=K;K\GLK!PX@$p[=K;K\GL@.p[=KY=K;K\GLYYYYY@ *'$(% +7##73>32#"&5463232>7>54&#"3J~[8.7@$1; kLH/<! j&F:,+"B4!**5$^[*,& )6j17P[GB#2@/a[BK[CL   +!!.54>32'32>54&#"U v{4]Mt2\LTCfE#JTBgF$B2sW}KwKTXfU};TcQy2b)2@/a[=K[CL#!  +3#"&54>32'3267>54&#" QS!?]?6D!9;;Gd!1:@7rc[BK[CL.,&$!!"# +332673#"&546.54>32'32>54&#"e)!&*A)PE66,v{4]Mt2\LTCfE#JTBgF$d "!')E<0+sW}KwKTXfU};TcQy2#9:@7c:K[=K[CL31(&##"% +332673#"&546"&54>32'3267>54&#"$%8%EB+,QS!?]?6D!9;;G '7<@9 Jrr[BK[CL42,*!''*% +'7>32'7>32.54>32'32>54&#"     v{4]Mt2\LTCfE#JTBgF$Uj  L'@sW}KwKTXfU};TcQy2 '=@  JK PX@#p32'7>32"&54>32'3267>54&#"DmN    QS!?]?6D!9;;@!xK PX@4  hfpaY:K Y;LKPX@5  hnpaY:K Y;LKPX@0ppa Y:K Y;LKPX@5  hnpaY:K Y;LK!PX@0ppa Y:K Y;L@5  hnpaY:K Y;LYYYYY@!!!$ +74>3!#7#3#!73!"&3#"@3dc3(D K>(3K}*ZRvI"oWwH0獾N@Kr>Yb2)5IF@C/Jp [=K[CL+*BA*5+5))-$&$" +%#"&'#"&54>32>323267"7>54&67>56&'&\E8M`6QS!?]<3N"`3BI3L0p-3/F1 9- cMF%</ !54" $JG5/-7cN6oY8.301=1%0  9E8-+!7K*71#s5989R(s.8R\i 3>Z@W( Jr   p  a Y:KY;K[CL ><64 3 3+!%(% +'7>32#"&574&+3#73#732326?%32>54&+  A 6+4$2bDV XW bdnX)   \)I6;32#73>32#"&5467&"#"#yY  Z-,`6"!;7- -Ivg +Qa& 1M_.\'2G_@\ 7 J p  a _ Y:KY;K[CLA?;920*(''+!%# +%#"&574&+3#73#732326?%32>54&+7>7#"&54632W 6+4$2bDV XW bdnX)   \)I6;32#"&5467&"#"#7>7#"&54632Z-,`6"!;7- -IS(2 !%9+Qa& 1M_.&,!$2)\m.9]@Z# JHr   p  a Y:KY;K[CL971/..+!%$ +77##"&574&+3#73#732326?%32>54&+^6 6+4$2bDV XW bdnX)   \)I6;32#"&5467&"#"#T9cZ-,`6"!;7- -Ikig+Qa& 1M_.$i ;N@K:"Jpa[ BK;K[CL ; ;)%)%% +'7>32#>54&#"#"&'#7332654.546327  ;+0HB:?UfUw_<]&)/W:COTeTlP>T2T u  1<>06>322654.54632#"&5467.#"#".54632iyY  *FCQC`D!<, ="(54&#"#"&'#7332654.546327^6z+0HB:?UfUw_<]&)/W:COTeTlP>TQQr  1<>06>@ <JKPX@*pn:K[=K[CL@*rpn[=K[CLY@75/-$">> +''732654.54632#"&5467.#"#".54632T9*FCQC`D!<, ="(54&#"#"&'732654&'7.'#7332654.546327$+0HB:?UfUr\$*):52 ,"-51K&)/W:COTeTlP>T  1<>06>54&#"#"&'#7332654.546327^6+0HB:?UfUw_<]&)/W:COTeTlP>TWQQr7  1<>06>R@O <JHrpn[=K[CL75/-$">> +77#2654.54632#"&5467.#"#".54632T99*FCQC`D!<, ="(7#"&54632{ bG(6@6( a (2 !%91GȘ1&,!$2)]O4z$ JK PX@,fp  _Y=K[CL@+rp  _Y=K[CLY@.,'#% +7326?3#"&546?#73733#7>7#"&54632   $ 5*)% GSR$G$jh(2 !%98 % <3* C+xx+8&,!$2)emA@>HrpY:KY ;L +77#73##7!#7#3P^6 bG(6@6( a WQQr1GȘ1?2JK PX@0hp[BK Y=K[CL@1pp[BK Y=K[CLY@21#*$& +7>7#"&54632326?3#"&546?#73733#. #9   $ 5*)% GSR$G$jh!%".K8 % <3* C+xx+eD@Ap aY:K  Y  ; L +373#73##7!#7#3#3| bL DG(6@6( D~ ~La 1,Ș,1"]O'}K PX@/fp  a Y=K[CL@.rp  a Y=K[CLY@'&%$#"#% +7326?3#"&546?#737#73733#3#  # 5*(# M L%SR$D#lk%n l8 % <3* CK%}+xx+}%f3f9R@Occ Y :K [ C L98530/.-,+(&#"!   +"#7>32326?3#"&/.3#3267#73##"&7# '6$   ' +%#  VY!5cek]V O](Y(ZN23,  ",+ 0zoY00QC&RD JK-PX@6  pc[BK Y =K [  C L@=p  pc[BK Y =K [  C LY@'  R RQPJH?=:964.-(&  +"#7>32326?3#"&/.32>?3326?3#"&5467#"&546?#7%# (! # %$ 4[ B<0 2Ha  $ 3)&08?!13 PR ~*()  +&-  1:T^$& !% ;4$:<$I:%+(5+f3B2@/a Y:K[CL## +!!3#3267#73##"&7# VY!5cek]V O](Y(ZNB2h0zoY00QC&b6D@A(JpaY =K[CL66)#&' +3#32>?3326?3#"&5467#"&546?#7[ B<0 2Ha  $ 3)&08?!13 PR b/\1:T^$& !% ;4$:<$I:%+(5+f3d+<@9rc Y:K [ C L+*'%"!#"# +332673#"&5463#3267#73##"&7#)!&*A)PE66 VY!5cek]V O](Y(ZNd "!')E<0+0zoY00QC&FN@K8 J  pc:K Y =K[ CLFFED><#&+"% +332673#"&54632>?3326?3#"&5467#"&546?#7$%8%EB+,[ B<0 2Ha  $ 3)&08?!13 PR  &1IA(* 1:T^$& !% ;4$:<$I:%+(5+f3 1>@;cc Y:K [ C L10-+('#$$$" +4632#"&732654&#"3#3267#73##"&7#C,.@B,,C)''& ' VY!5cek]V O](Y(ZN?1;;13;;3"''"!&%0zoY00QC& JP@M< J  pcc Y =K[ CLJJIHB@#&($$$" +4632#"&732654&#"32>?3326?3#"&5467#"&546?#7=(*;=((=)   *[ B<0 2Ha  $ 3)&08?!13 PR s-55-.66.!!! 1:T^$& !% ;4$:<$I:%+(5+f3 1<@9 Jrr Y:K[CL10##*% +'7>32'7>323#3267#73##"&7#       VY!5cek]V O](Y(ZNUj  L'@m0zoY00QC& J*@  <JK PX@.pp32'7>3232>?3326?3#"&5467#"&546?#7jmN    [ B<0 2Ha  $ 3)&08?!13 PR cLa  "6T  u1:T^$& !% ;4$:<$I:%+(5+f3,f, JK)PX@#Y:K[CK [?L@ _Y:K[CLY@*(#" +#"&5467.7#73#3267#73#3267k *,6@=W(ZN VY!5cek]V O]$zf9D&  %".K%Q00zoY00 #D" C&Ey@ EJK)PX@)pY=K[CK[?L@&p_Y=K[CLY@ )&&/" +#"&5467.5467#"&546?#7332>?3326?33267 *,6E< 07? 13 PR [ B<0 2Ha  $ $:L&  %"-N%7>$H:$+(5+1:T^$& !% +3 %F# pimA@> Jr Y :K;L +''733##73####73##^6 W)W I69$J X.\QQr000y006GKPX@ :JKPX@:JKPX@ :JK!PX@:J@ :JYYYYKPX@':KY=K [ =K[CLKPX@*:KY =KY =K[CLKPX@':KY=K [ =K[CLKPX@*:KY =KY =K[CLK!PX@*rY =KY =K[CL@' rY=K [ =K[CLYYYYY@DB)%&&% +''73#"&7#"&546?#7332>?332>54&'#"&54632\T9#Ca=N,(.46: ?\M 90' ADB $&F5 #ki3{hG[B9,45"^#+%W!.DR#"K>(:Wi. &3emC@@ JrY :KY;L +''73##73#3!737#7O^6 XNS K7e f7^J QQr0C0011y0:@,%JKPX@.p:KY =K[CK[GL@.rpY =K[CK[GLY@::''$#' +''7332>?3#"&54632326?#"&546?#7T9U ! A7* 1IhnBS 6GP5*2>$/A JQ #ki02IV$n;3$h\ =/002+eX ,Z@W)J c Y :K  Y ; L ,,+*('&%$#!      +"&546323"&54632##73#3!737#7b#!#" XNS K7e f7^J %%&$N0C0011y0i B@?JrpnY:KY;L  % +'7>327!!73!7!  _3 K?'3 =2T ɽ01G K@1JKPX@1  p  n[=K[BK[ CL@/  p  nc[=K[ CLY@ IHFD86-+)(&$ K K% +'7>32".'#"&5467"&/.#"#>32.54632632673qyY  b886##  :1#% ,8531 $  E2!% ,vg y   /  (*HM  / (+IL[ L@I pncY:KY;L      +"&546327!!73!7!%$3 K?'3 =%%01G Kg@d1 Jp  n  n [32.54632632673## 886##  :1#% ,8531 $  E2!% ,.()   /  (*HM  / (+ILmC@@HrpnY:KY;L +77#7!!73!7!/^63 K?'3 =WQQr01GFa@^, JHrp  n  n[=K[ CLDCA?31(&$#!FF +77#".'#"&5467"&/.#"#>32.54632632673T9886##  :1#% ,8531 $  E2!% ,ki   /  (*HM  / (+IL9W -D@AJpb:K[BK[CL!!!-!-'#%$ +#"&5467!>54&#"#73>323267>7W.WQce CU@7. 16% !h9nl= B;?_ QReZ-U&7Tb(A/N'0BHFJ9D" m#.a@^Hr  pn Y:K Y;L$$$.$-'%##"!&" +77#732#!737!!73!7!%32>54&#^6 5jm X23 K?'3 =WZR'UfWQQrl0nIS1G01GMt>Uik `H@F &JHKPX@N  p p  n nY:K [  =KY;K[CLKPX@Q  p p  n nY:K [  =KY;K[CL@N  p p  n nY:K [  =KY;K[CLYY@+"!^][YMKB@>=;943-+!`"` &" +77#%732#!73332>54&#".'#"&5467"&/.#"#>32.54632632673PT9 5jm XOWZR'Uf0886##  :1#% ,8531 $  E2!% ,kie0nIS1GMt>Ui   /  (*HM  / (+IL-.n~@T  4JHK-PX@`p p  n nY:K[ =K [ =K[ CK[ CL@fp p  n n nY:K[ =K [ =K[ CK[ CLY@)po0/xvo~p~lkig[YPNLKIGBA;9/n0n&&'# +77##"&5467#"&54>32#73326?3".'#"&5467"&/.#"#>32.54632632673%2>54&#"T95*'!'e2?A%AY48FOL  $886##  :1#% ,8531 $  E2!% ,H"H;&12&A/kiT<3&'=QQH;w_7#7?(5 XW  [H#"OH0;#m 11G00%([^[+-$ )5+)9%A6 JK PX@D  p hY:K [7#7x  $ 7*)$[#"OH0;#m ; % <3)IG%([^[+-$ )5+0V@S   J  c Y :KY;K [ C L/-*)%# +3#73## 3#73##7!##"&54632+326V W@W XW>sh  XssX9?'" &6J 00B11GJ00Kkb6(*0I;@  0 JK PX@A  hY:K [ 7#7V W@W XWP#"OH0;#m  00B11GF%([^[+-$ )5+*s ?[4@ P JK PX@Op  h[32326?3#"&546?>54&#"#"&5463232>7#74#"~[8.7@$1; *   $ 5*(# ( &F:, 3OH0;#m 2%(+"B4!**6#j5!% <4+Fc27P[$^[+-$ )5+f3m 4@1HrY:K[CL## +77#3#3267#73##"&7#^6 VY!5cek]V O](Y(ZNWQQr<0zoY00QC&9G@D+JHrpY =K[CL99)#&' +77#32>?3326?3#"&5467#"&546?#7T9F[ B<0 2Ha  $ 3)&08?!13 PR ki<1:T^$& !% ;4$:<$I:%+(5+B""JK PX@Bh  pa  a aY:K Y ;L@Cp  pa  a aY:K Y ;LY@ !  +!!#73#7!#7#3#!73!737#73[ Su 3(A K>(3 W3ެRB2!11G00獾11)b?ITIKPX@ ) JKPX@ ) J@ ) JYYKPX@Ip  pa   c [=K[CK [CLKPX@>p pa   c [=K [CL@Ip  pa   c [=K[CK [CLYY@-KJA@PNJTKTEC@IAI=<:831-+'% ?? +3#"&'#"&546;76&#"#"&54>32>3232673"7>54&26?#"pFT "gA27iE -7%73B"6F "Z2AJ[or/3/F0\@^cND$-3_9Hdb/MCJF8(ZH1FB  0!.&(,=1CP"9E8-JGiSD1#xTH9< m#.a@^Hr  pn Y:K Y;L$$$.$-'%##"!&" +77#732#!737!!73!7!%32>54&#^6 5jm X/3 K?'3 =WZR'UfWQQrl0nIS1G01GMt>UiJY"@ ? JKPX@F  p  n  nY:K [  =KY;K [CLKPX@I  p  n nY:K [  =K Y;K [CL@F  p  n  nY:K [  =KY;K [CLYY@*WVTRFD;97642-,&$YY&! +732#!73332>54&#".'#"&5467"&/.#"#>32.54632632673 5jm XOWZR'Uf-886##  :1#% ,8531 $  E2!% ,x0nIS1GMt>Ui   /  (*HM  / (+IL-'gw@M  -JK-PX@X p  n nY:K[ =K [ =K[CK[CL@^ p  n n nY:K[ =K [ =K[CK[CLY@(ih)(qohwiwedb`TRIGEDB@;:42(g)g&&'" +%#"&5467#"&54>32#73326?3".'#"&5467"&/.#"#>32.54632632673%2>54&#"5*'!'e2?A%AY48FOL  $-886##  :1#% ,8531 $  E2!% ,7"H;&12&A/g<3&'=QQH;w_32#73#7!#7#3#!73!737#73s  K Su 3(A K>(3 W3ެR2T 11G00獾11) GQ\KPX@1  JKPX@1  J@1  JYYKPX@Fp   p  cBK [=K [CK [CLKPX@;p   p  cBK [=K  [CLKPX@Fp   p  cBK [=K [CK [CL@Frp   p  c [=K [CK [CLYYY@,SRIH XVR\S\MKHQIQEDB@;953/-'% G G% +'7>32"&'#"&546;76&#"#"&54>32>3232673"7>54&26?#"%yY  0FT "gA27iE -7%73B"6F "Z2AJ[or/3/F0\@^cND$-3_9Hdvg yMCJF8(ZH1FB  0!.&(,=1CP"9E8-JGiSD1#xTH9<Fi '3;@8,+ Jr[BK[CL 0.$"  % +'7>32.54>32'.#"%4&'32>#  u|5]Ms2\z;)BgE% ?+CgE#2T sW}KwKT3Qy5/U}2 *9d@/. JKPX@BK[=K[CL@r[=K[CLY@ 31$"  % +'7>322#"&54>.#"%4&'3267>yY  qUQ!?_?$/DW@T.4 Jpn  _[ BK;K[CL><86//)%)% +#>54&#"#"&'#7332654.5463277>7#"&54632$+0HB:?UfUw_<]&)/W:COTeTlP>T(2 !%9  1<>06>0.(& 77 +72654.54632#"&5467.#"#".546327>7#"&54632*FCQC`D!<, ="(7#"&54632{ bG(6@6( a (2 !%91GȘ1&,!$2)]O4z$ JK PX@,fp  _Y=K[CL@+rp  _Y=K[CLY@.,'#% +7326?3#"&546?#73733#7>7#"&54632   $ 5*)% GSR$G$jh(2 !%98 % <3* C+xx+8&,!$2)eBA@>Ja Y :KY;L +!!##73#3!737#7T XNS K7e f7^J B2h0C0011y0b7P@M)"JpaY =K[CK[GL77''$#' +3#32>?3#"&54632326?#"&546?#7U ! A7* 1IhnBS 6GP5*2>$/A JQ b/\02IV$n;3$h\ =/002+U]JK PX@hY=K\GL@pY=K\GLY@ '$# +#"&5463232>7#7OH0;#m ^[+-$ )5+('/@,$ Jp[=K[CL$"+$ +#"&546?6454&#"#>3232>7&D]60DU 9E9,JGe(#:N+ FdD@Gi +D''73T9#kidD@Hi +D77#T9ki(dD@rW[O"% +D332673#"&546$%8%EB+, &1IA(* . 'dD@W[O   +D"&54632##.()` *dD@cW[O$$$" +D4632#"&732654&#"=(*;=((=)   s-55-.66.!!! ,dD@! JrW[O%% +D;3267#"&546h3:M& *,7K%G# 1 %"/Q.fdDK-PX@cW[O@"pcW[OY@  +D"#7>32326?3#"&/.# (! # %$ ~*()  +&-    dD@ Gri*% +D'7>32'7>32mN    cLa  "6T  t dD@ Gi% +D'7>32yY  vg "0+!7 !mX<<l0 0+#7!!73!7704(uM6(39z2#45-10+##7332>?3326?3#"&5467#"&'-JR \ A<0 2Ha  $ 3*&08? ) w+1:T^$& !% ;4$7>$H:$ 60+3##7!#3267#"&7#UIbCc (  Ac,,9*0KJ!qq  JK PX@4rh  p  aY(K Y)L@5rp  p  aY(K Y)LY@  % +.5463273!73#7!#7#3#K  =(2 XW 2( D K$ XF1G00qX +K PX@;   h  pc  a Y(K Y)L@<   p  pc  a Y(K Y)LY@+ ++*)('&%$#"!     +"&546323"&5463273!73#7!#7#3#:#!#"|=(2 XW 2( D K%%&$;1G00eD+N@KJG pcY(KY)L++*)('&%$# # +7!#7#>32'>54.#"3!73#e6@5( EP1%B1.Ka3,N:!-,QI_ bFƖ %A3MkT# R_p>)2  11G_i 8@5JrpY(KY)L%+'7>32!73#7!#7#3   XW 5( ݜ^2T 1G0ȘF,@ # JK'PX@4  ppa [/K)K[0L@8  ppa(K [/K)K[0LY@'&%$! ,, +"!!32673#7#"&54>3273#>54&1O>-  IVQn4@%f9n{1[Q@^'%84S-I^104UfdQN'0wQP31^  ?A$/H@E.Jpn[/K)K[0L//)%)% +#>54&#"#"&'#7332654.546327$+0HB:?UfUw_<]&)/W:COTeTlP>T  1<>06>7>?#7!#>32#!7;2>5.#"A'-- Q4! ! 2,)&e  X?=Qi,OpD WNk3N3E99x35|q'32#'32>54&#" WNOW XW W@VAW Y@=Qj+NpE[k3N3E:91$11G0000CO6\B&1%:H#5-e+M@JJ pc Y(K Y )L++*)('&%&#+7!#7#>323#737>54&#"3!73#e6@5( EQ1$B1 &W V& A8-QI` bFƖ ,!=11 2+ 11Gi S@-8 JK-PX@Dr  p  aY(K[/K  Y )K  [ 0 L@Ar  p  aY(K[/K  Y )K [ 0 LY@ S SRQPNIGDC@>$)!%+'7>3273#7!#3267>7>32#"&5467326?3#"&?6&+3Y  v XW  ]Dc(4")"#  ($   - 3B6  ,7cLV 2T 1G00>>: )  4<;:987$'$&$%+3267"&54632#"&54632 #"&54632>7##73##73 *!(B 0B$BM.3:$"*# .H)QO MH O e-11*3"B2 * XC00z00U46@3s Y (KY)L +%3!#7!73#73#!#73#3m=+ XW VOW X111G00G00c8@5Jb(K Y)L +7#7333#73'#73 JF,J W p111w119w#<@9JpcY(KY)L6"2$ +%#!73#7!#7#>3232>54&#" $EhC XW 5' CB[]ux.G/4:C&3\F)1G0Ɩ?!7J))0`*E@B J aY(KY)L  * )#! +3!73#7!232>54&+ 32>54&# XW aQY]==,MnUt0D*5=pQKp3O4>B1G0M8Bn B30T<#x1<*-4F',-_ ,@)pY(KY)L+3!73#7!#7#3 XW 5( ݜ^1G0ȘU#5@2sY(K Y)L## +'3267>?#7!#3#7!#%#;3*J"'! c  Wn;/F0 "'/1S<)aaY"R00ܫG=;20,*#%!+!#73#"#"&?3326?>7.'&4>'.'#"&54632;7#73#3267>7>32#"&5467326?3#"&?6&+3. XKR;F @;C - #"C2 ,(") *'XDX XD](8 '%%  (%   - .A6" +7gLX1*?^JGO6..'(./c6B 2/*#-13400@C> )   8?>EHW+%('.'7U?BXG7?;W@09JKPX@4pc [ /KY(K)K[0LKPX@6pc[ (K[ (K)K[0LKPX@4pc [ /KY(K)K[0LK!PX@6pc[ (K[ (K)K[0L@4pc [ /KY(K)K[0LYYYY@42&%&%$ +%#"&'#7332>54&#"732>54&#"#73>32+H`39V%03O4%B1@?&)0E-:8B]30% [1Re\X8<8Y< -+N  =41F)397-= .1JJH('M@Ii ?G8@5JY(K Y )L + 3#73#73#7#73#3#73u.W XW W| W XX W^211G002,0011G;W@T.Jc d  Y  (KY)L;:9876543210-,+*$&$%+3267"&54632#"&546323#73#73#7#73#3#73 *!(B 0B$BM.W XW W| W XX We-11*^211G002,0011G@ !, JK-PX@? p  aY(K[/K  Y  )K  [ 0 L@< p  aY(K[/K  Y  )K [ 0 LY@GGFEDB=;8742$)!+#73#7!#3267>7>32#"&5467326?3#"&?6&+3 XW  ]Dc(4")"#  ($   - 3B6  ,7cLV 1G00>>: )  47>7?e  XX W'-- Q4! ! 2,)&x0011G35|q'@;  aY(K  Y  ) L+'3#73#!7#73#3#73!3#XW WB`BW WW WMMW 1G0000111GIK PX@[/K[0L@[/K[+LY@ +.54>32'32>54&#"8v{4]Mt2\LTCfE#JTBgF$sW}KwKTXfU};TcQy6,@)Y(K Y)L +!3#73#7!#3#73X XW  WW Wx11G0011b:@7a Y(KY)L$! +%!73#732+32>54&# XW jiY:US:V6:E111G0QItG!9M,1;@&@ JK'PX@+pn[/K)K[0L@/pn(K[/K)K[0LY@!  && +"32673#7#"&54>3273#>54&DfB!IVQn4@%f9n{1[Q@^'%84SU|;UfdQN'0wQP31^  ?A`4@1pY(KY)L +373##7!#7#3v bG(6@6( a 1GȘ11"xJKPX@(pf Y(K\0L@)pn Y(K\0LY@""$% + #"&54632>7##73##73.3:$"*# .H)QO MH O x3"B2 * XC00z00M6#-7' JK-PX@+  c  c Y(KY+L@) a  c  cY+LY@3210)(##+#3#737.5467>37#73"%4&'267>832'32>54&#" WG'5 X?=Qk+Ppk4N4E;91G0CN6_E(1'32'32>54&#" XX XX XW Y?=Qj+Ppj4N4E;91G0011G00CN6_E(1'32'32>54&#" XW Y?=Qj+Ppj4N4E;91G00CN6_E(1'7!7!>54&#"#73>32D\%%54&24Q<(  ?U?h45% _7rb+Sz 81_ %6#3Sh41(Z\M]J(+lQR!1wK PX@3  a [/KY(KY)K [0LKPX@3  a [/KY(KY)K [+LKPX@.  a [/K Y(K [)LKPX@3  a [/KY(KY)K [+LK!PX@9  a [/K Y(K Y)K [+L@3  a [/KY(KY)K [+LYYYYY@.,&$! &$ +73#73#73#3>32#.5467#32>54&#"X XW XE?Vl>t2\Qv{LTCfE#JTBgF$111G00AsU1wKTs+^XfU};TcQy)4 JK PX@2h   a Y(KY)K \0L@3p   a Y(KY)K \0LY@!+*.,*4+4&%" )) +726?>7.54>3!#3#737#"#"&?33#"<8:+5<+Jd9' WW WCe,@97.?, YpLy1F.>'"y)1 F58T7011--z11B=47&%41@#1;-%5 JKPX@%p*K[1K[+LKPX@!p[1K[+LKPX@%p*K[1K[+LK!PX@!p[1K[+L@%p*K[1K[+LYYYY@'&/-&5'5&&'" +%#"&5467#"&54>3273326?32>54&#"6$"% 0\1?9%?X39@;.\ $"H;&.,'A-g<4"$/MOSG9w_>I8zH#&dAY\4I;73#">32#"&"3267>54&@%Q]U"!'nHeB' )4?#QU!>[:Qf&953+@.H[2t.Nj< ;,ZD=uZ8lL( 'j63K7))a*8A)%43@0a[1K[0L20*( %%$+74>3223#"&"7>54&32>54&))Gb8?C:5 (-tWNN4+" 7T` (3/%8@X;u\:6+,=*(MbTk/@":0 /7#2+0 '1@.%$J[1K[+L"  ''+"&546?>54&#"'>32326732>54.#"'>32'2>54.#"TQ">Y6=F -!"@!T.3C&!EkD+B-%.B)/ dK8oW7N9%K <. '&$Ye&';Wc(893'5@2! Jp[1K[+L''"+$+74>3232673#"&"7>54&3&D]61CP 9E8-JGeW#:N+ E/(q[  JK PX@K  p h  n  cb*K [1K)K \+LKPX@L  p  p  n  cb*K [1K)K \+LKPX@H  p  p  n  cb [1K)K \+LKPX@L  p  p  n  cb*K [1K)K \+LK!PX@H  p  p  n  cb [1K)K \+L@L  p  p  n  cb*K [1K)K \+LYYYYY@ ZXTSRQPOJHFECA;97620$"&'"+7463232>54&#"#>323733>32#"&5463.#"32673#"&5467##7##"& (;'"2'P067a6B6a '2>#13$8'#"/'D7<5c9C:_ %3C(14Q'Hdm%#123NBA90.O:!0(%>^p1$332HHN72.T@&27W@T2Jpcc [ 1K[ +L-+)(&$  77 +".54632+32654&#"732654&#"#>326*9!5B%7  " ?8-+)83]9IL;;$+j *$D/(*)<(&&%@8<0,D 1%B\C&2g$JK PX@!pY*K[0L@!pY*K[+LY@22)#&& +32>?3326?3#"&5467#"&546?#7[ B<0 2Ha  $ 3)&08?!13 PR 1:T^$& !% ;4$:<$I:%+(5+C&QյC JK PX@5  pc[(K Y *K [  0 LK'PX@5  pc[(K Y *K [  + L@3  pcc Y *K [  + LYY@QQPOIG><98&($$$""+'3267#"&54632#"&5463232>?3326?3#"&5467#"&546?#79 16XH0M =[ B<0 2Ha  $ 3)&08?!13 PR y7:*.%1:T^$& !% ;4$:<$I:%+(5+09]@ #*JKPX@5  p cY*K[1K)K[ +LKPX@7  p c[*K[*K)K[ +LKPX@5  p cY*K[1K)K[ +LK!PX@7  p c[*K[*K)K[ +L@5  p cY*K[1K)K[ +LYYYY@6520 99 +"&?4&+##73326?>32#"&5467326?.!30DG|[ :*5*2'  &'$ 5 2..+;+";$/$ 2"/6%?59.)2>@;JpY*K[0K[0L#&$"+7#"&54632>7>7#7!326?3#"&546?#.  'I"YX]  $ 8)+!J,I+)  .+;%!<2*I7\@Y2/ JpY*K[ 0K)K[ 0L10)'$# 77 +"&54632>7>7#733326?3#"&546?#+  %L"X^b  % 7*+M)N". )  -+g;%!<2(Ka++ !@@=paY *K)K[+L!!#& +373326?3#"&546?###732'3267>54&#"QS!?]?6D!9;;*%3JKPX@/p[1KY*K)K[+LKPX@%p[*K)K[+LKPX@/p[1KY*K)K[+LK!PX@%p[*K)K[+L@/p[1KY*K)K[+LYYYY@33+#+% +3#73>32326?3#"&546?>54&#"*~[8.7@$1; *   $ 5*(# ( &F:, 3+"B4!**6#j5!% <4+Fc27P[$(E JKPX@-[1KY*K[+K Y,LKPX@#[*K[+K Y,LKPX@-[1KY*K[+K Y,LK!PX@#[*K[+K Y,LK-PX@-[1KY*K[+K Y,L@+[1KY*K[+K Y,LYYYYY@%#&# +#73#73>32#"&'4&#"32> H[(4]3??&@Y32A Mt-#H;%12&A0,,z+RHPK:w_<7+.;=V^ 4I;Wg-%6@3Jpn[1K[+L&'$&"+%3#"&54>32#"&5467.#"326X/RBRY 5#;T_$32>32326?3#"&546?>54&#"#>54&#"##77/6=!1- +2;"/6 .   $ 5*(# '  %B7) .JY $C9+ /J~[ױ#C3.$ / <.-'2w7 !% <3'"Be4?3#"&54632326?#"&546?#7U ! A7* 1IhnBS 6GP5*2>$/A JQ 02IV$n;3$h\ =/002+0'7GX@U' JY(K  [1K  [+KY,L98)(A?8G9G1/(7)7&#&#+#73>32#"&'3#73#"&54>327"32>54&2>54&#"c VI5><9T647SN NRF*BC"+$%"+$# +>32#"&546732673#"&/#"&54632>7'.#"#>32/Q5"C1( %,)%( 9U6L2 $0.($RS^'ZY%?3326?3+73267> '08> 13 PR\ A<0 3G`  $ 80$  $7>$H:$+(5+1:T^$& !%=>I#"6!()0/l JK PX@&pcY*K[0L@&pcY*K[+LY@ &&("+%#"&546?#"&546?#73326?3326?38*(" >"/E R" !#+A :Hc  $f<2)J#185+b7!+>%=5Ll!JK PX@#pY *K [0L@#pY *K [+LY@LKFD&)*#% +%326?3#"&546?#"&5467#"&546?#7332>?332>?3  $ 3*$ .4;2)-4>"/0 VR a $D:, 0JZ $C8+ 1H& !% ;4$0"@12* (=.-'4 +69Ta(4:Ta'=H5[~  JK PX@*  p _Y*K [0L@*  p _Y*K [+LY@WUTRLKHF&&)*" +%#"&546?#"&5467#"&546?#7332>?332>?3326?3+73267>  $  .5;2)-5="/0 VR a $D:, 0JZ $C8+ 1Hc  $ 70$  $)#@12* ) =/-'4 +69Ta(4:Ta'& !%A7##7!>32#"&732>54&#"r ]5+ #2(E4 3B%=O*4@/&&2''!2@X.3g-Mx, L(>4'K;$'L *!4@!"A>-?(JK PX@)pcY *K [0LK-PX@)pcY *K [+L@3pcY *K[+K [+LYY@<:20,*'&%$#& +326?3#"&5467#"&'&6?#73>324&#"32>`  $ 7*(# ]";O.3= HQ I<%3CI'"4  &2'8 % <3)E#L=(#b++;,!"?&!4@>'/@,JcY*K[+L($#$+%#"&'&6?#73>324&#"32>";O.3= HQ I<%3CI'"4  &2'#L=(#b++;,!"?&!4@-J@Gpac[1K[ 0L'%#"  -- +"&54632+3267>7#73>54&#"#>32@R 2"(=  .3.@2d=VL<[ :4&-%9' 6A33LEdK7pY9%1KPX@-a[1KY*K)K[ 0LKPX@%a[*K)K[ 0LKPX@-a[1KY*K)K[ 0LK!PX@%a[*K)K[ 0L@-a[1KY*K)K[ 0LYYYY@+)   +"&5467###733>32'3267>54&#"QT\EG~[ 8\ *;M.TR!@^+60 (6"5 dN+)L:"dK4o[;6D<>?6D!9;;5>JK PX@(h c Y*K\0LK-PX@)p c Y*K\0L@3p c Y*K[0K\0LYY@76:86>7>&#&+#" +7#"&?3326?>7.546;326?3#"&546?#"737#"*-/ $ /"(8uZ]  $ >)) A%)iE?b3232673#"&"7>54&  P&D]61CP 9E8-JGeW#:N+ E/(3 3?9$JKPX@,p  [(K [1K[+L@*p  c [1K[+LY@!54 4?5?20.-+)    +"&546323"&546324>3232673#"&"7>54& "!!&D]61CP 9E8-JGeW#:N+ E/(p)=@:J)GaY(K[1K)L%' +>54&#"##737#733#>32;^@"#J?0 &J\ Z[{ y>06< 4/-PoBo"u2"->Xc%&C/r&"C5 <:Cs  3d@10JKPX@/K[1K[+L@r[1K[+LY@ .,! 3 3%+'7>32"&546?>54&#"'>323267SyY  Jppa[1K[+L%'$&"+%3#"&54>32#"&5467.#"3#326X/RBRY 5#1? ' 7#7#"OH0;#m 2%([^[+-$ )5+.@C@@JcY*K[0K[0L&(&#$% +##"&54632>7>7#7!>32#"&'&6732>54&#".H"/  &I"XWH<%3>!9P/2= +&2&#!3 +)  ,+82%M?)!Y8&!4@!"?+-B@? J  caY*K)K[+L)'$#$ +%#"&'&67###73373>3232>54&#"!9P/2= AI}[ 2&""4%M?)!W6+8!4@!1O";  JK PX@6 paY(K[1K)K [ 0 LKPX@6 paY(K[1K)K [ + LKPX@2 paY(K[1K [ )L@6 paY(K[1K)K [ + LYYY@7521.,%& +%7>54&#"##737#733#>32326?3#"&546r&  #J?0 &I] ZZ| y</6>"37 -   $ 8*(#a2>Xc%&C/r&!A2-*3s<!% <3)G0 E!KPX@/6JKPX@/6JKPX@/6JK!PX@/6J@/6JYYYYKPX@:   p c/KY*K[1K)K [ +LKPX@<   p c/K[*K[*K)K [ +LKPX@:   p c/KY*K[1K)K [ +LKPX@<   p c/K[*K[*K)K [ +LK!PX@<r   p c[*K[*K)K [ +L@:r   p cY*K[1K)K [ +LYYYYY@ BA><*($" E E% +'7>32"&?4&+##73326?>32#"&5467326?yY  :.!30DG|[ :*5*2'  &'$ 5vg y2..+;+";$/$ 2"/6%?59.)C& >@ 0JK PX@&p/KY *K[0LKPX@&p/KY *K[+L@&rpY *K[+LYY@ > >)#&+% +.5463232>?3326?3#"&5467#"&546?#7  Ps[ B<0 2Ha  $ 3)&08?!13 PR n   71:T^$& !% ;4$:<$I:%+(5+R@ D = JK PX@= pc[(K Y *K [ 0K [3LK'PX@= pc[(K Y *K [ +K [3L@; pcc Y *K [ +K [3LYY@RRQPJHA?86#($$$""+'3267#"&54632#"&5463232>?3#"&54632326?#"&546?#71 16XH0M ?U ! A7* 1IhnBS 6GP5*2>$/A JQ y7:*.%02IV$n;3$h\ =/002+CI%2N@$3 B4 A JK PX@0p  c _Y *K[0L@0p  c _Y *K[+LY@MKFD?=8622)#&& +32>?3326?3#"&5467#"&546?#7.#"#"&'7326?>32\ A<0 3G`  $ 3*'08?!13 PR  %"   # 1:T^$& !% ;4$;=%I;%+(5+ % #5 - JK PX@8  hn   a  cY(K Y)L@9  pn   a  cY(K Y)LY@,)#! &2+>32#!73##737#73#!#732>54&#"-=Pk%JnH XF(5X Y/'k3K1E;9 8O0S>#1ܗA//A$1A#5%*/A@ %JKPX@.c[1KY*K)K[0LKPX@$c[*K)K[0LKPX@.c[1KY*K)K[0LK!PX@$c[*K)K[0L@.c[1KY*K)K[0LYYYY@ &'%+&# +>32#"&'&6?>54&#"##73>3232>54&#"9%3> :P01?  &F:, 3J~[8.7@$1; @&2&#!3 83%M?)!Y6B27P[$+"B4!**6&!4@!!@E'cK PX@a[/K[0L@a[/K[+LY@%$  +.54>32"!>54&32>7!6v{5]Ms2\"1Q@/KKT2T@/ hsW}KwKT-Ja2*TciXf2Of4/2)4@1a[1K[+L'&! +"&54>323>54&#"3267>7#QS!?] 6D!6CK'#a1@.JY(K[/K)L$"+>32#"&5467##73#.Y<"'$ #?-57J X,Wa!+  PQ(y00 @  JKPX@Y*K[1K)LKPX@[*K[*K)LKPX@Y*K[1K)LK!PX@[*K[*K)L@Y*K[1K)LYYYY@ $$+##73#7>32#"&5467H7 ; Cp-O6:++Qf! St? /@,rY(KY)L +7!73#7!73! XW mG'/111G0 +t@ )(JKPX@#p*K[1K[+L@#rp[1K[+LY@&$ +++"&546?>54&#"#73>32326732326?3#"&546?>54&#""&54632*~[8.7@$1; *   $ 5*(# ( &F:, 3c$$+"B4!**6#j5!% <4+Fc27P[$'(N$/;X@U.Jpn  _[ BK;K[CL10750;1;//)%)% +#>54&#"#"&'#7332654.546327"&54632$+0HB:?UfUw_<]&)/W:COTeTlP>T$$  1<>06>?332>54&'#"&54632  P#Ca=N,(.46: ?\M 90' ADB $&F5 n   3{hG[B9,45"^#+%W!.DR#"K>(:Wi. &3pii $>@;"Jr Y :K;L$#! % +'7>323##73####73##   W)W I69$J X.\2T z000y006 LKPX@ ?JKPX@?JKPX@ ?JK!PX@?J@ ?JYYYYKPX@'BKY=K [ =K[CLKPX@*BKY =KY =K[CLKPX@'BKY=K [ =K[CLKPX@*BKY =KY =K[CLK!PX@*rY =KY =K[CL@' rY=K [ =K[CLYYYYY@IG)%&&)% +'7>32#"&7#"&546?#7332>?332>54&'#"&54632yY  #Ca=N,(.46: ?\M 90' ADB $&F5 vg 3{hG[B9,45"^#+%W!.DR#"K>(:Wi. &3piX 0X@U.% Jc Y :K  ; L 0/-,+*)('&$#"!      +"&546323"&546323##73####73####!#" W)W I69$J X.\%%&$N000y006 XN@ K   JKPX@0 [?332>54&'#"&54632w "!!#Ca=N,(.46: ?\M 90' ADB $&F5 .')%'3{hG[B9,45"^#+%W!.DR#"K>(:Wi. &3qf3K PX@B hpc c  a  Y :KY;L@C ppc c  a  Y :KY;LY@+  3 3210/.-,+*)('&%$#"!  +"#7>32326?3#"&/.73!73#7!#7#3#e '6$   ' +%# "=(2 XW 2( D K23,  ",+ 1G003;GA, JK-PX@3  pc [BK  [=K [ C L@:p  pc [BK  [=K [ C LY@!=<32326?3#"&/.4>3232673#"&"7>54&# (! # %$ &D]61CP 9E8-JGeW#:N+ E/(eq @@= JrY :KY;L % +.54632##73#3!737#7A   XNS K7e f7^J $ XC0C0011y0 ?@ 1*JKPX@.pBKY =K[CK[GL@.rpY =K[CK[GLY@ ? ?''$#+% +.5463232>?3#"&54632326?#"&546?#7  P|U ! A7* 1IhnBS 6GP5*2>$/A JQ n   702IV$n;3$h\ =/002+Eg!@UYM +%!7!V4dN#@UYM +%!7!>&6@@JW[O$& +>32#"&54>@(3 "*>/7! :-2@J[BL$& +7>7#"&54632(4 "*>/8! :/tW@J[CL$& +7>7#"&54632(3 #*>/7!!:.)$@!JW[O$-$& +>32#"&54>7>32#"&54>@(2 "*>(2 #)>/7! :-/7! :-)@J[BL$-$& +7>7#"&546327>7#"&54632(3 ")>(2 ")>/7! :./7! :.tVW)@J[CL$-$& +7>7#"&546327>7#"&54632(4 "*>(3 #*>/7!!:./7!!:.] +U@ JK-PX@cBK?L@rc?LY@ %)$ +7>327>32#"&/#7#"&54632 6  *k=  : Qs@?QC8*JK-PX@ ccBK?L@r cc?LY@ML)'))'$ +%7>32#"&/#"&546?#"&546327#"&546327>327>32#"&/!X~ 4w |"Ow  t7z     3x @W[O   +7"&54632~!*."!)-("%+("%+Db %@"[CL      +"&54632#"&54632$$$$ '('(b #0@-[CL ##    +"&54632#"&54632#"&54632$$$$$$ '('('(6! +9IUj@gpc    d c;K  [CLKJ-,QOJUKUFD><31,9-9*("    +%"&546323#72654&#"4632#"&"&54632%32>54&#"2654&#"KTgPMS.Er;[;?9009A3kUCP1J/?QJTgPLT.F.+2!0+1!@8/0:A4VKNiVC&F4ET9+9L92:]uK<'L;$HHVLNiWB&F5(-.:(--;pT9+9M91:0!0+'7 G%kǻ0+7'7'7 G%kǻ@:K;L +3#,-Fg,!-@*[^K[_L!!  +"&54>32'267>54&#";90C*<:1D&-"-,D?/\I.E:0^J.*0%"P"!%1(!I"#'S1 '@$ JbZK[L +##7#?33#37h,: FI,}:UU%R'&>@;!JccYZK[_L#$"$" +#"&54632#326'4&#"'73#>32XTH/;  #1/(7! !18AY)% C, /o+g-'5C@@"Jpc[^K[_L)(1/(5)5$'$)$ +#"&54>7>32#"&5467.#">322>54&#"r%7%9> ='-;   15./:  /."8+;6=;7&$  EE,!+F*"1"@pYZK[L +#>7##73>$5D$" %3)1$VWT Ew$%HOS\+'7)@&5 J[^K[_L,*" *" +#"&'467.54632'>54&#"326'4&/.'oSD6F+" E>1A!L&!#)g'%(7% ?G1.,: "7<,'#3 %B-! !%) 4]-'3C@@Jpc[^K[_L)(/-(3)3&$'$" +#"&546323267"&54>32"32654&E8*.A &.3%/D%6#<<93H+F)!&R|!-@*[RK[SL!!  +"&54>32'267>54&#";90C*<:1D&-"- D?/\I.E:0^J.*0%"P"!%1(!I"#'  v%@"aNKZOL! +#73267>733#73_ ,  )XV ^+& (( 6{"6@3 Jpn[NKYOL$'' +!#?>54&#"#"&54632373 q38$ J646O<^(_+F+  -9+'9M-IB=|>J@G6Jpcc[RK[SL=;42.,+)%#! " +4632#"&5&632#32654&+732654&#"#"&RK/3>%  VA29   +0!' 2' #  +1,*"4  :D+% 6'8"  Ox '@$ JbNKOL +%##7#?33#37',: FI,}:UUU%E{&>@;!JccYNK[SL#$"$" +%#"&54632#326'4&#"'73#>32TH/;  #1/(7! !18AY)% C, /o+%J{'5C@@"Jpc[NK[SL)(1/(5)5$'$)$ +%#"&54>7>32#"&5467.#">322>54&#"0%7%9> ='-;   15./:  /."8+;6=;7&$  EE,!+F*"Hew"@pYNKOL +3#>7##73>$5D$" %3)$VWT Ew$%HOSD'75 JK PX@[RK[SLK PX@[NK[SLK PX@[RK[SLK PX@[NK[SL@[RK[SLYYYY@ ,*" *" +%#"&'467.54632'>54&#"326'4&/.'.SD6F+" E>1A!L&!#)g'%(7% }?G1.,: "7<,'#3 %B-! !%) 4C{'3C@@Jpc[NK[SL)(/-(3)3&$'$" +%#"&546323267"&54>32"32654&8*.A &.3%/D%6#<<93H+F)!(,m@ ! JK PX@/ h a  cY:KY ;LKPX@0  p a  cY:KY ;LKPX@/p U   cY:KY ;LKPX@0  p a  cY:KY ;LK!PX@/p U   cY:KY ;L@0  p a  cY:KY ;LYYYYY@(' +#3!73#7!#7#!>32#"&5467#40Io XW 2)F:$'J24.' D2>11G0HH$ /GY,J440T@Q pca  a[K Y  L0/+*)('&#"! ""$#+737#735>32#"&5467.#"3#3#!73!7>7#eFH @ hY@N -6@ } y &).&%v1'L:#Zf:1"KE#:$+=d8 D.&Q8@ 0 JK!PX@;p pa  a[K [  LK"PX@?p pa  a[K K [ LK#PX@;p pa  a[K [  LK.PX@?p pa  a[K K [ L@Cp pa  aK[K K [ LYYYY@8742/.-,*(#"! %"+73>7#73>3273#>5.#"3#3#32673#7#"&'5#2BD F!~U3I!+1>2;R   6@=Q13L.WcJ#$Ke#!?-.P6$#$7!7!>54&#"#73>323#3!32673#7#"&5467#9~(] 4%131Za _54&#"706?)FFP=/3ZQ$#97 $u@>VNR@'Bzb/1HQ~8C"0&DG6Dp-=OS @ QPF>5.0+!#"&54632>7#73>32#"&54677"&54>32'267>54&#"7!*+4% (:*H .-3"!(;-.<)9 76):!" ! ~ }]%)*gz_( ) $^/3%D450&C2"= @,,8(@JGKPX@'h  ] Y:L@(p  ] Y:LY@"(('&%$#"!  +#53##5!#'#373#3#53#3#53#55OIO4`_22-}v,228'!LssLH'''6''!'V! 0+".54>32!32673"!4&{PqE)LpG\w[c5hcle 2[LO\4OPih~d ""@JHUYM +%'%!!rI =y@H;L +'#' = IId # @HGUYM +'7!5!'7 IIV = x@G:L +737 =II  0+%'35'537375}jg&VV%gjUVWqghuabi 0+%'#'7373'#3'uכqgh:abigj}jg&VV%UVWd;  0+5##57'533537'#;qghuabiLjg&VV%gjUVW 0+%#575#7##='7FV%gj}jg&UVW^huכq9abi"0+!7 !mX<<ld5d@UYM +!7! Z 5/R#/ )$ 0+#"&'#"&54632>323267.#"%"32654&J=3K""O38LI>4O""M2@B2*&@A(&2%@ >%*//ICJ>((>GC;OB((BN<0/6%&=11:%&96,+1>;/*0+"#>3232673#"."#>3232673#".*+P(-(*$+ +?3"1)&R)+M*.)*$* ,@3"0('!9:"#E2!9:"#E2Xk*, 0+%##7#737#73733#3N/N{ e T/T} eii//qq/g:<   0+%%7%!7!  o0+7t/h:   0+7-7!7!w> KF oL7tv0/S'82JKPX@*a [ BK[=K[CL@(aa [ BK[CLY@876543,*)(''  +2#".54>"32>54.#53267>533#53N^55^NN\44\NHyV00WxHH{W12WzWK ,GK1ZOO]33]OOZ1.TyKH{X12XzHJyU.' ''S'J@ ? 5JKPX@6  pf  cb [ BK[CL@7  pn  cb [ BK[CLY@#)(FD=;43210/(J)J''  +2#".54>"32>54.2373#57>54&#"#"&546N^55^NN\44\NHyV00WxHH{W12WzG5A?2H ^&+#% F1ZOO]33]OOZ1.TyKH{X12XzHJyU.1/0F(:@p.P A& -1S'`x@uI [4J  pp ccc [ BK\CL)(VTPNGEA?><86/-(`)`''  +2#".54>"32>54."&5463232654&+532654&#"#"&54632N^55^NN\44\NHyV00WxHH{W12WzR1B '!/%(! %$$ ' I.5H#+,'S1ZOO]33]OOZ1.TyKH{X12XzHJyU.&*  !'#$(  +++/!0*%<4S':^@[65,Jpp b [ BK[CL:987430/+*)(''  +2#".54>"32>54.#5#5>733573#N^55^NN\44\NHyV00WxHH{W12Wz802> >.8**1ZOO]33]OOZ1.TyKH{X12XzHJyU. H)3mUZk.Nc+S'No@l721 L J  pa c   c [ BK\CL)(GEA?;96543/-(N)N''  +2#".54>"32>54.2654&#"'73#>32#"&54632N^55^NN\44\NHyV00WxHH{W12WzS%'*#( ӱ$;EK?-E '1ZOO]33]OOZ1.TyKH{X12XzHJyU.%()#$  5`27:A'+  S'JVo@lH+ Jp c  c  c [ BK[CLLK)(RPKVLVCA=;75/-(J)J''  +2#".54>"32>54.">32#"&54632#"&5467.2654&#"N^55^NN\44\NHyV00WxHH{W12Wz:.)/3G%/HANH+= !!"&%"'%%1ZOO]33]OOZ1.TyKH{X12XzHJyU.@K3<.X[nW#(  /##))"%.S'9@ 6*(JKPX@&ha[BK[CL@'pa[BK[CLY@543210''  +2#".54>"32>54.#54>7##53N^55^NN\44\NHyV00WxHH{W12Wz4>!, )41ZOO]33]OOZ1.TyKH{X12XzHJyU.#PNJ:q":S'?L\M@JA=1Jcc [BK[CLQOHF86,*''  +2#".54>"32>54.#"&5467.54632'>54&#"32654&/.'N^55^NN\44\NHyV00WxHH{W12WzFO99O H66AB (&(()%.D 1ZOO]33]OOZ1.TyKH{X12XzHJyU.v7939- *01/+* 0[""$  'S'HTo@l+ FJp  c  c c [ BK\CLJI)(PNITJTA?;953/-(H)H''  +2#".54>"32>54.267#"&54632#"&54632"32654&N^55^NN\44\NHyV00WxHH{W12WzU2&)5EP3I=GO,C %""#""'" 1ZOO]33]OOZ1.TyKH{X12XzHJyU./>H5"32>54."&54632#53267>533#532654&#"N^55^NN\44\NHyV00WxHH{W12Wz"ACCBE>A7+18..-1ZOO]33]OOZ1.TyKH{X12XzHJyU.^]_^^_Za)' ''MFIMMIENS'3? @ 94-( 0+2#".54>"32>54."&54632'2654&#"N^55^NN\44\NHyV00WxHH{W12WzGAHHBEFIB..-1ZOO]33]OOZ1.TyKH{X12XzHJyU.]]_^^_Z`'NEHNNHDOS+ %  0+2#".54>2654&#"7"&54632N^55^NN\44\OCIFEBHHB.-.1ZOO]33]OOZ1`Z_^^_]]'ODHNNHENx30+3!xDx &0+7!%!!xX QFP3=0+7!FPFP2=0+7!%!!F}Pi<A^? 0+%".54>32'2654&#"N8eJ++Je88dI++Id89KK99LLA%B_9:_B$$B_:9_B%{F>?EE?>F<A9? 0+%".54>32<:_C$$C_:8^B%%B^A%D_97]C&&C\69`D&dD 0+".54>32'2654&#"Oa77aOOb88bMZml[Zoo2\QOX00XNQ\2t[WkoWXsD0+)!!Kmq h;0+#%!!#73!=# u*K6 xUlX;  0+)!!''7'77KkuG l2 <LX RMD=<,0+%'"&/#''.'.5.'>7&'&5467>7>7646;76#"37265'4&2#"&546Y  4  ( 5 ]@ =*I"#(b< "X  k    !    6          2 <LX RME=0+7&574632>7>''&'.'&'##'7"326574&#2#"&546P  X" 7&'&5467>7>7646;76326?>32326?>32326?>32;2654&/.&727>32'.#"#"37265'4&2#"&546"#"&#"32654&Y  4  ( 5 ]@ =*I"#(b< "X  D.(   )& 2" "Cq?9%3   L      u!    6     gW ] T F? ."0       /d<@ v:!0+?'46?5.7.'.7>7>3>7&67&6322#"&'&#"&/&&#"&/&326?>'&6'.#"&7>54&4&54654&#"32654&#"3726'#"&54632j!    6     gW ] T F? ."0       Y  4  ( 5 ]@ =*I"#(b< "X  .(   )& 2" "Cq?9%3   v      2o <@ o\0+7&574632>7>''&'.'&'##'%.#"&7>322767>54&'&'&;2632326/.54676&32326/.5467>32326'%"326574&#2#"&546"32654&#"#"&P  X" 7"&='&637237265'4&#"4632#"&654&/.5467>32654&/.547>32654&/.546=4&#"3267>'64'.54676732654&#"!    6         gW ] T F? ."0   Y  4  ( 5 ]@ =*I"#(b< "X  k    .(   )& 2" "Cq?9%3   v  Oyb0+#u=#6 xUS$KPX@)h[BKY =K[CLK)PX@'h a[BK[CL@(p a[BK[CLYY@$$#!  +2#".54>#35##+N^55^NN\44\@KG,1ZOO]33]OOZ1''? 'S6S@P*4Jpn[BK[=K\CL65.,%#  +2#".54>##7>54&#"32654&'>32!N^55^NN\44\ G2@A62G %"+&^1ZOO]33]OOZ1a?9(G0/00-!%B O.SL@)>JK#PX@0c c[ BK[=K [CL@.cc c[ BK [CLY@KIEC<:6431-+$"  +2#".54>4&'>54&#"32654&'>32+32#"&'>54&#"326N^55^NN\44\'++"I5-I ( %$% !(%/!& A1:T1ZOO]33]OOZ1Z%)0!/+++  (" #'! *'5S&@ "JKPX@&pf[BK\CL@'pn[BK\CLY@&%$#  +2#".54>35#5#>7#33N^55^NN\44\))9.= >1091ZOO]33]OOZ1>+cN.kZTn3)HS:@ ,JK1PX@0pc[ BKY=K[CL@.pcc[ BK[CLY@9731*($"  +2#".54>4&#"735#>32#"&'>54&#"326N^55^NN\44\E;$'#*'%& E.?J1ZOO]33]OOZ1d72_5  $#)(  +'AS6B@ JKPX@1p c[ BK[=K\CL@/pc c[ BK\CLY@87><7B8B31-+'%  +2#".54>4&#">3232654&#"32>"&54632N^55^NN\44\G3/*.  =,HMAH/%&&%("$%1ZOO]33]OOZ1i<2K@  (#Wo[W.7.%")*"#/S%?@<%#Jpn[BKCL  +2#".54>46?5#3733N^55^NN\44\b4) ,">1ZOO]33]OOZ1Q:"q:JMP$S+8Hj@ <8#JKPX@ [BK[=K[CL@c[BK[CLY@GE31*(  +2#".54>4&'>54&#"326'.54632467#"&N^55^NN\44\A66G P99N&)  D-%*(1ZOO]33]OOZ1a/*+/2/* -949"j'  $S4@Y@V &Jp cc[ BK[CL65<:5@6@31-+$"  +2#".54>4&#"3267#"&'>54&#"326'2#"&546N^55^NN\44\=J3OE4(&3$ A,PG(!"(""#1ZOO]33]OOZ1SU8C<5 2654&#"#35##+"&54632N^55^NN\44\CA>EBCC81+R...1ZOO]33]OOZ1aZ_^^_]^)''? 'NEIMMIFMd 0+".54>32M[33[MN[22[4]LK\44\KL]420+!  Y a`20+%%' a 20+ '7Y T TR20+ 7% TRY 20+)kG20+ N80+TkGt0+7F0+ #;l$A`0+3Mk;7.   0+!#3'3#6}TQ())[  0+7!!733#3~5~džUQ(T)[E/fJK PX@ h[BKZ;L@!p[BKZ;LY@//)* +%!7>54.#"#733.54>32371,O;#'B/@bA"%(%' 3ZK?_>o:6Uet<'G5 ?hH7#"&54632(2 !%9&,!$2)0+'3267#"&54632#"&546324 16XH0M y7:*.%RR%/;cks{[A,|xtpljd_K82*&" 0+#"&54632.#"32674632#"&'#5353'4&#"32632654&/.54632.#"#"&'#'##73!3##5#%3##5#%32#'##7''2654&+4632#"&'3#3##%3#"&=33265'#5353732+%4&#"3262654&+32#'##7'373#'2654&+N! %&!*(!!''!!(RTj "! D;88978_:&#'q'p( "&&" (iVSSQT'9$$%%7%:&#'<0/<z'A)$%)" )$**$$))'~~K!!!!   '**<99;JJ :$))$%((p4?[[[;~~'$$'K !!t+<999]II[;K  :,'4@1%$Jc[CL''  +"&54>32'.#"2>54&'[n+Li>ak'Jl95#3R8/P8 6 oVBuX3nW6s]< .I`1L^- aZi #BR@O Jr a  c Y :K [ C LA?<;75/-*)('*% +'7>32'7>323#73#3##7!##".54632+326  p  %XJW XJX bf  Xc%w2H-%#  A;Qs2T 2T :0011~00z$,+0'e> %@@=p[c 1M@  B JK PX@7p hBK Y =K[CK \GLKPX@8p  pBK Y =K[CK \GL@8rp  p Y =K[CK \GLYY@222M2MLKFD$)#&*% +'7>32'7>32#73326?3#"&5467#"&5463232>7#7'yY  yY  P[Y  $ 8*(# ΐOH0;#m vg g +C $% <3&"B^[+-$ )5+ +;@8d[BK=K[CL*("    +2#"&5>>?33267"&74632#"&a&${c7"_d26%F#8H%NU&'cvnoI*6""(=)L@~*$0+#7>54&#"32#"&54632"&54632~qT7\M*+$7  YKCN$$Qc?eO<%& :E<2'(] *'0+2#"&54646?33267#"&54632#"&0$$qT7\M*+$7  YKCN'(gQc?eO<%& :E<1- +@(p[BKCL    +2#"&5>3#"&7>7>%$$% A&'WI*G@*D- 0+7#>7>7>32"&54632$  )F$$+G,F%7Kd'(  0+2#"&5>3#"&74>%$$ !+'(+G,F%7Kd\Fj@UYM +#73YF9]Fz@UYM +!7!nF4sF]|@UYM +!7!M&F61y:FVNGC90+#"&7467#"&54>327332>54&#"3267#".54>322>54&#":;W87'&K'55 6J+.6+3F $>.Wi;.QpAN76YT]2Bwc5<1'% 4%By\74%9=H=2eP3<.d.(1Qk;K}[KwS,3<=?3^ScSG6IM-:1HU$(00+3#330+3#2/10+3#,,GS0+3#k4n3SBoS0+3#o12SBI` 0+.54>7? _w7f^1B{%LЏXl#*JBq_Q]v 0+7'>54. _w7f^1B%LЏXl#*JBq_Qk"@aUYM +#3#3}ִ)kN"@aUYM +3#73#4}ִm[)T1b01@.$ JcW[O0/! +#";#"&54>54&'7>54&54>3 #N; >8"#!"+5 7H@$*$*(54&+732#3 #N; >8"#!"+5 7H@$*$*(7.54>7!_s7e[iW ^v4]QLvO*1C$N؆Wl%)KD$NԊWl%)%f|MBr`Q;# 0+7'>54&?'>54.!_s7e[iW ^v4]QLvO*1C$N؆Wl%)KD$NԊWl%)%f|MBr`QJa# 0+.54>7.54>7!_s7e[iW ^v4]QLvO*1C{$N؆Wl%)KD$NԊWl%)%f|MBr`QaP# 0+7'>54&?'>54.!_s7e[iW ^v4]QLvO*1C$N؆Wl%)KD$NԊWl%)%f|MBr`Q^  0+ # ;l $Ax 0+35k;{7.3`# 0+26?#"&54>;##"&54632+08QR(E^6 @{KL30zKALJN;Z= +T]T+"% "be0+737#73733733#3##7##7#737#1l?8-78/8np>9/88/8i?ٶ33331AQUt@q-  J  c  cY:K[BK Y ;K[CLRRCB32RURUTSKIBQCQ;92A3A$%$% +!##"&54632>7#73>32#"&5467"&54>32'2>54&#"7!/>%77A0"" "+-2!Z %77@.#" "-/51>,=#8:,>#)'>7 0  Iך0ɧ߄6 1  W26)K8":4(I7 &!3=""4@//8%5GS@Pd  c:K[BK;K [ CL'&FD=;/-&5'5$"  +"&54>323#>54&#"326"&54>327>54&#"326>E!6H(=J6J667f! #/$+O>F!6I(323#>54&#"326"&54>32!"&54>32%>54&#"326%>54&#"326>E!6H(=J6J667f! #/$+>D!8I(F!6I(53. +373#>54&'+#7.'#73.54>327.#"4&'>' - &,/*$54)}b '-F%(0G1=9.4G'  A,29G5%:CQN &Q  #3 $-:%`lFK1S  4J #,9'+B,+89p+7N<@ 4 JK'PX@?p pa  a[BK ;K [CL@Cp pa  a:K[BK ;K [CLY@<;863210.,'&%$%$ +3>7#73>3273#>54&#"3#3#32673#7#"&=#)JS T8IX2:G#"409;%@4)  9MHW1;"T3ceR+(+7cH+5.]  9C$;O++(+TdcPI%-w`"S@P J  a  aY:K Y;L"!  +3'#73'#73##73#3#3#3!737#k x2H XLS Hv ? 5e f5%U,00E00,U,11)I@F a a Y:K  Y ; L)(" &! +737#73#732+3#3!737#32>54&#Bfk jPW je*OqGH !m W!e,PC6S69EH,,0IH6[A%H,{11{!6J(12+i1X@UJp pa  a[BK Y ; L1/+*)('&#"'$# +37#737>32#"&5467.#"3#3#!73!7>75#uUME z`BK ?Q ;2,2&(J8? \!M+;kr20#gT,+M+B]mD_C+i*F@CJpp a[BKY;L*)'$# +37>32#"&5467.#"3#!73!7>?#qiz`BK @P;3,2&(J8? prbkr20#gTS,LC`mD_CQXq-@ JK PX@3fpngdW[O@1rpnsdW[OY@ &'& +%3+#7.54>;73#"&5467.#"3260dB*BQ >\;*2B 7%/C*B61JKFZ^ ^K9mU4ae ;+#:QYCL8T'I@ = /JK#PX@4  W   aU c[BK[CLK-PX@2c  W   aU c[CL@8c  W   aa cW[OYY@)(ECA@?>;931.-,+(I)I((($ +4>32#".732>54.#"2653#'#"&54>3273#.#"6`NN_77`MN`7(1WvECvU22VuDDwV1K+6-?%Oc/@"'> -8*;01VS]22]SS^32^TLzT--TzLLzS--Sz-10sd2M511+RQPXl* 0+>32#"&54>(0 ")=/0 4+c/ 0+7>7#"&54632c(/ "(=/0/! 5*l*)! 0+>32#"&54>7>32#"&'4>'/ ")='/ #(=0/! 5*0/! 5*c0)! 0+7>7#"&546327>7#"&54632c'/ #(='/ ")=00/! 5*0/! 5*=\.0+'7 G%kǻ\0+7'7'7( G%k\ǻ;\  0+'?'7 /#V!>%b˼ʽ \  0+7'7'7'7'7) /#V!>%b\˼ʽrR{G90+#"&/#"&546?#"&546?'.54632'.546327>32{ON A   A QQ ?  A .   9X   X9     9W  W8 <Z@ N JK PX@Ih  p  ha[BK  Y=K[CK \ G LKPX@Jh  p   pa[BK  Y=K[CK \ G L@Kp  p   pa[BK  Y=K[CK \ G LYY@ZYXWRPIGCA>=#&'$#% +4&54632%>32#"&5467&"#"!326?3#"&546?##"&5463232>7#73V>%* (1 X  $ 6*)  G~JU1;$~M K ^V$$ E=,C $% <3&"CPi,*$(4+<fKW@ ? JK PX@Fp  h[BK [32#"&5467.#"!326?3#"&546?##"&5463232>7#73%"&54632W@(: (4 X  $ 6*(! G~JU1;$~N K!!^V($"H=,B $% <3&"APi,*$(4+W%'g-@* J:KY;L +7#7333#73 JE-J W$111w11"ri B@? Jr  b:K Y;L   % +'7>32#7333#73'#73N  V JF,J W p2T 11w119qi JK PX@4rh  p  aY:K Y;L@5rp  p  aY:K Y;LY@  % +'7>3273!73#7!#7#3#  =(2 XW 2( D K2T 1G00Gi 'C@@Jr Y:K Y ;L'&%$#"! % +'7>323#73#73#7#73#3#73~  .W XW W| W XX W2T ^211G002,0011Gi +4@1Jr[BK[CL (&   % +'7>32.54>32'32>54&#"F  v{4]Mt2\LTCfE#JTBgF$2T sW}KwKTXfU};TcQy1i .@ )JKPX@-rpf Y :K\CL@.rpn Y :K\CLY@ . .-,$*% +'7>32#"&54632>7##73##73H  8.3:$"*# .H)QO MH O 2T 3"B2 * XC00z00i ,9V@S" Jr  c Y :K Y;L85/-&#! ,,% +'7>323#73#3#)73#73#>32'32>54&#"  XX XX XW Y?=Qj+Ppj4N4E;92T G0011G00CN6_E(1'32"&'#7332>7!7!>54&#"#73>321  D\%%54&24Q<(  ?U?h45% _7rb+Sz2T 81_ %6#3Sh41(Z\M]J(+lQRi -=]JKPX@8r  a [BKY:KY;K [ C LKPX@3r  a [BK Y:K [ ;LKPX@8r  a [BKY:KY;K [ C LK!PX@>r  a [BK Y:K Y;K  [ C L@8r  a [BKY:KY;K [ C LYYYY@:820-,'%$% +'7>323#73#73#3>32#.5467#32>54&#"  qX XW XE?Vl>t2\Qv{LTCfE#JTBgF$2T 11G00AsU1wKTs+^XfU};TcQyi 5@@  JK PX@7r  h   a Y:KY;K \CL@8r  p   a Y:KY;K \CLY@"76 :86@7@21.,'%$#"!  5 5% +'7>3226?>7.54>3!#3#737#"#"&?33#"  8:+5<+Jd9' WW WCe,@97.?, YpLy1F.>2T "y)1 F58T7011--z11B=47&%41@#1;.!1:@7Jc[BK[CL.,&$  +"&?>327>54&#"32>54&#"]I<"MHH 5C#=J"BbGDhe'(;YVC&B/36 =obs<1+H5"=6(\N3`j@$'cHa)?M$*2 &6 @ !JKPX@-p=K[=K[CK[GLKPX@)p[=K[CK[GLKPX@-p=K[=K[CK[GLK!PX@)p[=K[CK[GL@-p=K[=K[CK[GLYYYY@('0.'6(6'$#&# +7#"&54>3273#"&54632326'2>54&#"F/6]5?A$?Y3V^ 5H;Xh,-; j[̵  JK PX@K  p h  n  ca:K [=K;K \CL@L  p  p  n  ca:K [=K;K \CLY@ ZXTSRQPOJHFECA;97620$"&'" +7463232>54&#"#>32333>32#"&5463.#"32673#"&5467##7##"& (<&"3(P067[kCkZ '3>#12$8'##.(E7<5\9C9Y %3B(24Q'Hdm%#123NBA90^.O:!0(%>^p1$332HHN72.T@&26K@H4Jppc[=K[GL"&#$'$" +#"&5463232654&#"732>54&#"#>32Zk:  " (>+-0+F 3f?LRbM0?k;3%k]9J01B$-61.L@P;Vk K 9e@b#*  J  p cY:K[=K;K[ CL6520 99 +"&?6&+##73326?>32#"&5467326?r.)31BG[m+6+5) '% $ 1 3-2,?y/o#6%.$ .",>C;>+'1I@FaY:K[=K;K[ CL+)   +"&5467###733>32'3267>54&#"QT]EG[ r\ *;M.TR!@^+60 (6"4 cN}+e)L:"dK4oZ;6C<>?6D!9;;  $5,@)1JrY7'.546;73#"32>54&/!?\:,?'8M.-C?#!%!$R"310%B/*'$=+1fR4/="4aO:6(0432#"&54675$: C.G7"8<**S_! S!'9@6a[K[ L%$  +"&'4>32"!>5.32>7!_e)Jh=]i(Ih$=0# 19:?&>0# bWAx[7_Y9v`=!4E$32+73##73733#732>54&#"e&/ATm Ci8$*K'#P':&5--43273#"&54632326'2>54&#"F/6]5?A$?Y3V^ 5H;Xh,-;JYb0+3##73326?3#"&5467b W[Y  $ 8*(# b'+C $% <3&"BD@b6D@A(JpaY =K[CL66)#&' +!!32>?3326?3#"&5467#"&546?#7 F\ A<0 2Ha  $ 3*&08? 12 PRb'd1:T^$& !% ;4$7>$H:$+(5+=RbPI@F%JpaY =K [CLPOJHBA<:)*#& +!!326?3#"&546?#"&5467#"&546?#7332>?332>?3 /K  % 3*$  .4;3) -4>".1 URb %D:, 1IY #C8+ 1Hb'L& !% ;4$*#@12* ) =/-'4 +69Ta(4:Ta'- 1AB@ #JKPX@*pBK=K[=K [CLKPX@&pBK[=K [CLKPX@*pBK=K[=K [CLKPX@&pBK[=K [CLK!PX@&rp[=K [CL@*rp=K[=K [CLYYYYY@32;92A3A&&''% +'7>32#"&5467#"&54>3273326?32>54&#"yY  D6$"% 0\1?9%?X39@;.\ $"H;&.,'A-vg <4"$/MOSG9w_>I8zH#&dAY\4I324>3232673#"&"7>54&yY  &D]61CP 9E8-JGeW#:N+ E/(C& >x@ 0JKPX@&pBKY =K[CL@&rpY =K[CLY@ > >)#&+% +'7>3232>?3326?3#"&5467#"&546?#7yY  [ B<0 2Ha  $ 3)&08?!13 PR vg 1:T^$& !% ;4$:<$I:%+(5+2 1\JKPX@BK[=K[CL@r[=K[CLY@ +)   % +'7>32"&54>32'3267>54&#"yY  QS!?]?6D!9;; ?@1*JKPX@.pBKY =K[CK[GL@.rpY =K[CK[GLY@ ? ?''$#+% +'7>3232>?3#"&54632326?#"&546?#7yY  U ! A7* 1IhnBS 6GP5*2>$/A JQ vg 02IV$n;3$h\ =/002+> #9K@ 4 JKPX@.  p  cBKY =K [CLK-PX@.r  p  cY =K [CL@8r  p  cY =K[CK [CLYY@ HF><863210*( # ##+% +'7>32326?3#"&5467#"&'&6?#73>324&#"32>yY  `  $ 7*(# ]";O.3= HQ I<%3CI'"4  &2'vg 8 % <3)E#L=(#b++;,!"?&!4@% '=KPXJKPXJKPXJK!PXJJYYYYKPX@2aBK [=KY=K;K[ CLKPX@*aBK [=K;K[ CLKPX@2aBK [=KY=K;K[ CLKPX@*aBK [=K;K[ CLK!PX@*ra [=K;K[ CL@2ra [=KY=K;K[ CLYYYYY@ 75,*! ' '% +'7>32"&5467###733>32'3267>54&#"yY  wQT\EG~[ 8\ *;M.TR!@^+60 (6"5 vg xdN+)L:"dK4o[;6D<>?6D!9;; 9 JKPX@3pacBK [ =K[ CL@3 rpac [ =K[ CLY@ 31/.,*%$#" 9 9% +'7>32"&54632+3267>7#73>54&#"#>32kyY  @R 2"(=  .3.@2d=VL<[vg x:4&-%9' 6A33LEdK7pY9 AJ@  JK PX@-h   cBK Y=K\CLKPX@.p   cBK Y=K\CLK-PX@.rp   c Y=K\CL@8rp   c Y=K[CK\CLYYY@CBFDBJCJ&#&+#'% +'7>32#"&?3326?>7.546;326?3#"&546?#"737#"yY  *-/ $ /"(8uZ]  $ >)) A%)iE?b7#"&54632 #9!%".Ki @ Gi% +'7>32  2T d @rW[O"# +332673#"&546)!&*A)PE66d "!')E<0+ Em@Hi +77# ^6WQQrm@Gi +''73^6QQrX +@(W[O      +"&546323"&54632#!#"%%&$"[ @W[O   +"&54632%$%%1 @ Gri*% +'7>32'7>32n     Uj  L'@q @ Gi% +.54632  $ XB@UYM +!!B2f1@.cW[O  +"#7>32326?3#"&/. '6$   ' +%# 23,  ",+ *@'JcW\P$&$% +3267"&54632#"&54632> *!(B 0B$BMe-11* 0+4632#"&732654&#"C,.@B,,C)''& '@1;;13;;3"''"!&%NT 0+"&54632$$'(F 0+"&54636r!"$&8@5JbK YL +7#7333#73'#73' 6,E): C Rk+++5++$E@B J aYKYL$# +3#73#73232654&+326'4&# FuF QL=H1/\K4+0N=8YPR14+*4/5K /(L\G+ !L:!!%&@ JK!PX@'pn[K[LK"PX@+pn[KK[ LK#PX@'pn[K[LK.PX@+pn[KK[ L@/pnK[KK[ LYYYY@!  && +"32673#7#"&'&>3273#>5.>4M26@=R12 M,Xb&HgA3I!,0=?\i*54&#b hm)TW DtKuADb>@M*]S;u\:+_4Qe23273#>54&;4L0:<@;  aYK  Y   L+'3#73#!7#73#3#737!3#DsD C0 1C CtC D79D +****_+++@ #@ YKYL+'3#73#3#ErD CuD +**_++@(cYK[ L"$#+7#73##"&54632#326VP CWVE64#8;**RI0"' 1^I@F Ja Y K Y L+37#73#3#73'#3#73#731MB ;s4 EeL9A DsD ̰**++++** 2@/pYKYL +%73!73#73#E3$*p CuC Gv+k+**_ <@9 J Y KYL +3#3#73# 3#73#7= BtC BoFpB CtD {*_++Gj++*0@- JYKYL +3#73## 3#73#ogA C;hB DsDgo**4++&(@%[K[ L +"&'4>32'32>5.#"^e)Jg>]h'Ii9>3N38?2M4bWAx[7_Y9v`==G?\j*;F=Zi:@7c YKYL$! +7#73#732+326'4&# EvD WYzF,xA?ZS,6++++<9Wk[?#)&#=JX@U1!JAIpc_[K[  LIG:8.,'& ## +"&'4>32326?3#".47'.54632>5.#">?6&#"^e)Jg>]h.B)$ # ),  591/1% ! 9?3N5i  ' bWAx[7_Y,\SD%3$-2#- >BA0'0 JK&PX@5 p  a YKYK[ L@2 p  a YKYK[ LY@0.*(''+!%# +%#"&5'.+3#73#732326?%32654&+ /%,%K3B EvD WUOJ   IES14Bx(3%1(B''+++17BU ,%Q)GD!3H@E2Jpn[KK[ L33+%+% +#>54&#"#"&'#7332654&/.546327%):0,6# +E_P3I !!+B/4<2!#4UE/F$0)%&=7C[$#?.5=+&*71AE$<JH_K PX@ hYKYL@!pYKYLY@ +373##7!#7#3a Kv8%++#vK +nn^+Ez'@$YK[ L##+3#326?#73##"&?#u BD%LNQDA @@=J Y KYL +7#73#3#73'3#737'#73MA 8e6 DRC 8`7 ̣**++++**FL6@3JY KYL +#7#73#3#737#7 DJB :*N N*X9 ***))* 6@3pnYKYL +7!373!7#F*y r3#)z 2f*_e+f C@@ Jr  bK YL   % +'7>32#7333#73'#73'yY   6,E): C Rkg ++5++#&L@I& Jrc  bK YL%$##"! "%+332673#"&546#7333#73'#73'$%8%EB+,w 6,E): C Rk &1IA(* ++5++E@B Jr  bK YL +''73#7333#73'#73'T9 6,E): C Rk/kie++5++ '*[@X* J c  bK YL )(''&%$#"!     +"&546323"&54632#7333#73'#73' "!! 6,E): C Rk:')%'++5++ C@@  Jr  bK YL   % +.54632#7333#73'#73'  P 6,E): C Rkz   ++5++nB@? Ja  bK YL +3##7333#73'#73'Z 6,E): C Rkn/++5++#&C@@&  J  b _KYL%$"  +467#73'#3#7333#3267#"&3'KAX C RB 6,E): <:M& *,7'/Q'+++5+%G# 1 %&)?@<)  J  c  bKYL('%#&" +46323#73'#3#73.732654&#"3'>)+:%&: C RB 6*  !n4.55-%1 V++++ -""! /22JK.PX@0cc  bK Y L@7pcc  bK Y LY@) 10 / /.-,+*)('&%$#"! +"#7>32326?3#"&/.#7333#73'#73''# (! # %$  6,E): C Rk*()  +&-  ++5++% 2*@)JK!PX@(pa [K[LK"PX@,pa [KK[ LK#PX@(pa [K[LK.PX@,pa [KK[ L@0paK [KK[ LYYYY@ -,+*'% 2 2% +'7>32"32673#7#"&'&>3273#>5.yY  w4M26@=R12 M,Xb&HgA3I!,0=g ?\i*3273#>5.T9 4M26@=R12 M,Xb&HgA3I!,0=kiK?\i*3273#>5.>4M26@=R12 B&&*):52 ,"-6NW&HgA3I!,0=?\i*3273#>5.T9R4M26@=R12 M,Xb&HgA3I!,0=/ki?\i*3273#>5.U##24M26@=R12 M,Xb&HgA3I!,0=:()f?\i*54 41D hm)TW D91 ~9DDb>@M%*]S;u\:+հ%4Qe254 41D hm)TW D91 ~9DDb>@M%*]S;u\:+հ%4Qe254&#T9 hm)TW DtKuADb>@MkiS*]S;u\:+_4Qe23273!73#7!#7#3#yY  j0#(v CvD '% 3 8g e+*f)'K PX@=r   h  pc  a YK YL@>r   p  pc  a YK YLY@''&%$#"! "%+332673#"&54673!73#7!#7#3#$%8%EB+,`0#(v CvD '% 3 8 &1IA(* e+*f)HK PX@4rh  p  aYK YL@5rp  p  aYK YLY@ +77#73!73#7!#7#3#T90#(v CvD '% 3 8ki e+*f)@ JK PX@4rh  p  aYK YL@5rp  p  aYK YLY@ +''7373!73#7!#7#3#T9G0#(v CvD '% 3 8&kine+*f) +K PX@;   h  pc  a YK YL@<   p  pc  a YK YLY@+ ++*)('&%$#"!     +"&546323"&5463273!73#7!#7#3# "!!0#(v CvD '% 3 8:')%'e+*f) K PX@8 h  p c  aYK YL@9  p  p c  aYK YLY@#      +"&5463273!73#7!#7#3#N##(0#(v CvD '% 3 8:()e+*f)  JK PX@4rh  p  aYK YL@5rp  p  aYK YLY@  % +.5463273!73#7!#7#3#  P-0#(v CvD '% 3 8z   e+*f)nK PX@7 h  pa  aYK YL@8  p  pa  aYK YLY@ +3#73!73#7!#7#3#q0#(v CvD '% 3 8n/e+*f)&  JK PX@5h  p a _YKYL@6p  p a _YKYLY@%# +467!73#7!#7#3#3733267#"&MA CvD '% 3 80#(9P& *,6/Q'+*f)e%G# 1 %3K PX@B hpc c  a  Y KYLK.PX@C ppc c  a  Y KYL@Jp ppc c  a  Y KYLYY@+  3 3210/.-,+*)('&%$#"! +"#7>32326?3#"&/.73!73#7!#7#3## (! # %$ %0#(v CvD '% 3 8*()  +&-  e+*f)% >@ 5 'JK&PX@2 c  ab [  K [   LK.PX@6 c  ab [  K K [ L@: c  ab K [ K K [ LYY@987631+)&%$#"! >>"%+332673#"&546"3267#73##7#"&54>3273#>54&$%8%EB+,D4L0:<3273#>54&T9M4L0:<3273#>54&W##74L0:<3273#>54&7>7#"&54632;4L0:<323#73#3#?yY  ErD CuD g **_+6@3rcYK Y  L"% +332673#"&5463#73#3#$%8%EB+,ErD CuD  &1IA(* **_+l2@/JrYKYL+''733#73#3#lT9ErD CuD /kie**_+w #E@B  cYK Y  L #"!     +"&546323"&546323#73#3# "!!ErD CuD :')%'**_+@ 0@- JrYKYL%+.546323#73#3#  PErD CuD z   **_+cn-@*aYKYL+3#3#73#3#vxErD CuD n/**_+@4@1J_YKYL%% +467#73#73#3#3267#"&211N ErD CuD N1/& *-6(U$+**_+!K# 1 ({+K.PX@* cc YK  Y  L@1p cc YK  Y  LY@+*)('&%$#"!   +"#7>32326?3#"&/.3#73#3## (! # %$ ErD CuD *()  +&-  **_+@ :@7cYKYL   +"&546323#73#3###ErD CuD :()**_+@  0+'3#73#3#ErD CuD +**_+":@7JrcYK[ L"$#+''73#73##"&54632#326T9VP CWVE64#8Aki;**RI0"' 1^1X@U !Ja_ Y K Y L+)%#+37#73#3#73'#3#73#737>7#"&546321MB ;s4 EeL9A DsD (2 !%9̰**++++**&,!$2) "C@@Jp_YK YL  +%73!73#73# 7>7#"&54632E3$*p CuC Gv(2 !%9+k+**_&,!$2) C@@p cYK YL  +%73!73#73#%"&54632E2$)p CuC Gv""+i+**_$% ?@<JrpYKYL  % +'7>3273!73#73#:yY  3$*p CuC Gvg k+**_ D@AJpYK[K YL  $& +7>7#"&5463273!73#73#E #9<3$*p CuC GvM!%".Kk+**_4@1 JpYKYL+?#73#7373!737 O7C G/e g93$*p C0.%**312k+ <@9Jr YKYL% +'7>323#73## 3#73#yY  gA C;hB DsDg go**4++>@; JHr YKYL +77#3#73## 3#73# T9偱gA C;hB DsDki)go**4++(?@<  J _YKYL"  +3#73## 3#73#7>7#"&54632ogA C;hB DsD3(2 !%9go**4++&,!$2)3+" JK.PX@-cc YK  Y   L@4pcc YK  Y   LY@%3210/.-,*)('&%$#!  +"#7>32326?3#"&/.3#73## 3#73#S# (! # %$ gA C;hB DsD*()  +&-  go**4++S@@= J  _YKYL +3#73## 3#73#"&54632ogA C;hB DsDy$$go**4++'(e(N@K#JIc_ Y KYL(('&%$"$# +#"&54632#326? 3#73#73#738DE104hB DsD fA #FD/"' )2++*fp**& +5@2Jr[K[ L (&   %+'7>32"&'4>32'32>5.#"yY  ^e)Jg>]h'Ii9>3N38?2M4g obWAx[7_Y9v`==G?\j*;F=Zi&#3:@7rc[K[ L0.(&##"% +332673#"&546"&'4>32'32>5.#"$%8%EB+,^e)Jg>]h'Ii9>3N38?2M4 &1IA(* YbWAx[7_Y9v`==G?\j*;F=Zi&&7@4Jr[K[ L#!+''73"&'4>32'32>5.#"T9^e)Jg>]h'Ii9>3N38?2M4/ki4bWAx[7_Y9v`==G?\j*;F=Zi& '7D@A c[K[  L 42,*!''    +"&546323"&54632"&'4>32'32>5.#" "!!^e)Jg>]h'Ii9>3N38?2M4:')%'bWAx[7_Y9v`==G?\j*;F=Zi& +5@2 Jr[K[ L (&   %+.54632"&'4>32'32>5.#"  P^e)Jg>]h'Ii9>3N38?2M4z   bWAx[7_Y9v`==G?\j*;F=Zi&/?K.PX@) cc [K[  L@0p cc [K[  LY@! <:42)' /!/  +"#7>32326?3#"&/."&'4>32'32>5.#" # (! # %$ A^e)Jg>]h'Ii9>3N38?2M4*()  +&-  pbWAx[7_Y9v`==G?\j*;F=Zi& '7=@: Jrr[K[ L42,*!''*%+'7>32'7>32"&'4>32'32>5.#"ZmN    ^e)Jg>]h'Ii9>3N38?2M4oLa  "6T  bWAx[7_Y9v`==G?\j*;F=Zi&n#2@/a[K[ L  +3#"&'4>32'32>5.#"^e)Jg>]h'Ii9>3N38?2M4n/bWAx[7_Y9v`==G?\j*;F=Zi%'1@. J[K[ L$" +"&'4>32'.#"%4&'32>^e)Jg>]h'Ii!0"3N5I*3N4cW@x\7_Y9w_>&O=Zi ?\j% '3<@9,+ Jr[K[ L 0.$"  %+'7>32"&'4>32'.#"%4&'32>yY  ^e)Jg>]h'Ii!0"3N5I*3N4g gcW@x\7_Y9w_>&O=Zi ?\jD@A  a  cY KYL$! +#32+3#73#7#32654&FDAO]yEU EvD J=>ZR3+F132#"&5'.+3#73#732326?%32654&+yY  T /%,%K3B EvD WUOJ   IES14Bg (3%1(B''+++17BU ,%Q)GD!.7@ # JHK&PX@:r   p  a YKYK[ L@7r   p  a YKYK[ LY@751/..+!%$ +77##"&5'.+3#73#732326?%32654&+T9 /%,%K3B EvD WUOJ   IES14BkiY(3%1(B''+++17BU ,%Q)GD!'0E@  5 JK&PX@< p  a _ YKYK[ L@9 p  a _ YKYK[ LY@?=970.*(''+!%#+%#"&5'.+3#73#732326?%32654&+7>7#"&54632 /%,%K3B EvD WUOJ   IES14Bt(2 !%9x(3%1(B''+++17BU ,%Q)GD!&,!$2) ?O@L>$Jpa[ KK[ L ? ?+%+%% +'7>32#>54&#"#"&'#7332654&/.546327wyY  ?%):0,6# +E_P3I !!+B/4<2!#4UE/Fg $0)%&=7C[$#?.5=+&*71AE$<:U@R9JHrpn[ KK[ L::+%+% +77##>54&#"#"&'#7332654&/.546327T9%):0,6# +E_P3I !!+B/4<2!#4UE/Fki%$0)%&=7C[$#?.5=+&*71AE$<H@G-* JK PX@9pnh_ [  KK[ L@:pnp_ [  KK[ LY@HHEC%%&% +#>54&#"##"&'732654&'7.'#7332654&/.546327%):0,6# +E^K%*):52 ,"-6&7 !!+B/4<2!#4UE/F$0)%&=7C[N!!)3 ) r#?.5=+&*71AE$<:U@R9Jrpn[ KK[ L::+%+% +''73#>54&#"#"&'#7332654&/.546327T9Q%):0,6# +E_P3I !!+B/4<2!#4UE/F&kiÖ$0)%&=7C[$#?.5=+&*71AE$<3HW@T28 Jpn  _[ KK[ LB@<:33+%+% +#>54&#"#"&'#7332654&/.5463277>7#"&54632%):0,6# +E_P3I !!+B/4<2!#4UE/F(2 !%9$0)%&=7C[$#?.5=+&*71AE$<&,!$2)N3?X@U2Jpn  _[ KK[ L54;94?5?33+%+% +#>54&#"#"&'#7332654&/.546327"&54632%):0,6# +E_P3I !!+B/4<2!#4UE/F$$$0)%&=7C[$#?.5=+&*71AE$7#"&54632a Kv8%++#vK (2 !%9+nn^+&,!$2)JH$x JK PX@'h  _YKY L@(p  _YKY LY@ +373##7!#7#37>7#"&54632a Kv8%++#vK (2 !%9+nn^+&,!$2)JHrHK PX@%rhYKY L@&rpYKY LY@ +77#73##7!#7#3T9 Kv8%++#vK ki+nn^+JHyK PX@*h aYK  Y   L@+p aYK  Y   LY@ +3737#737##7!#7#3#3a J7b `58%++#4e d6K +%nn%+Ez %4@1JrYK[ L##% +'7>323#326?#73##"&?#yY  y BD%LNQDA 32'7>323#326?#73##"&?#mN    I BD%LNQDA @;cc YK [ L10-+('#$$$" +4632#"&732654&#"3#326?#73##"&?#&=(*;=((=)   BD%LNQDA 32326?3#"&/.3#326?#73##"&?#V# (! # %$  BD%LNQDA 323##73## ##73##LyY   CC 946: CGyg *g**3|**kFqA@> Jr Y KL +''733##73## ##73##~T9 CC 946: CG&ki*g**3|**kFq 0X@U.% Jc Y K   L 0/-,+*)('&$#"!     +"&546323"&546323##73## ##73## "!! CC 946: CG1')%';*g**3|**kFq $?@< "Jr Y KL$#! % +.546323##73## ##73##  Pp CC 946: CGq   *g**3|**kFLeA@>Ja Y KYL +3##7#73#3#737#72 DJB :*N N*X9 e/@***))*FL A@>JrY KYL % +'7>32#7#73#3#737#7yY   DJB :*N N*X9 yg ***))*FLC@@ JrY KYL +''73#7#73#3#737#7T9 DJB :*N N*X9 &ki***))*FL ,Z@W)J c Y K  Y  L ,,+*('&%$#!     +"&546323"&54632#7#73#3#737#7 "!! DJB :*N N*X9 1')%';***))*FL A@> JrY KYL % +.54632#7#73#3#737#7  PT DJB :*N N*X9 q   ***))* C@@JrpnYKYL  %+'7>327!373!7#yY  *y r3#)z 2yg *_e+fC@@HrpnYKYL+77#7!373!7#T9*y r3#)z 2ki*_e+f L@I pncYKYL      +"&546327!373!7#3##*y r3#)z 21()ː*_e+f '*@ *JK PX@?rh  pa  aYK Y L@@rp  pa  aYK Y LY@ )( ' '&%$#"! %+'7>327!#7#3#373!737#3#7337yY   (% 6 <0$(h D*B :šHg +e)e*++JK PX@:h  pa  a YK Y L@;p  pa  a YK Y LY@+7!#7#3#373!737#3#7337f (% 6 <0$(h D*B :šH+e)e*++w""JK PX@Bh  paa  aYK  Y   L@Cp  paa  aYK  Y   LY@ ! +3#7!#7#3#373!737#3#7337h (% 6 <0$(h D*B :šHw/}+e)e*++E!yK PX@.hpa YKYL@/ppa YKYLY@$!$ +74>3!#7#3#373!"&7;#"E-PqD(% 4 70#(|Q\K<@.v3;Y;AuX5f)ebJ>C9Ve*K@HJpbK[K[ L('#!  +"&5467!>5.#"#73>32'32>7!TQ H2@1V,* O/XQ$Df26&=-  IK M"31$:J%7 )[@X  pa  c YKYK [ L(&$# +%73!73#7!#%#73##"&54632#326?(5 XW  [=VP CWVE64#811G00`;**RI0"' 1{ )K!PX@9  p  c YK YK  [ LK"PX@5  p  c YKYK [ LK#PX@9  p  c YK YK  [ L@5  p  c YKYK [ LYYY@(&$# +%73!73#73#%#73##"&54632#326E3$*p CuC GvVP CWVE64#8+k+**_f;**RI0"' 1,/\@Y   J a  c  Y KYK [ L.,*)%#+3#73## 3#73##73##"&54632#326V W@W XWVP CWVE64#8 00B11G;**RI0"' 1/@   JK!PX@2  c Y KYK [ LK"PX@/  c Y KYK [ LK#PX@2  c Y KYK [ L@/  c Y KYK [ LYYY@.,*)%#+3#73## 3#73##73##"&54632#326ogA C;hB DsDyVP CWVE64#8go**4++;**RI0"' 1g'K&PX@3  p n  a YKY L@=  p n  a YKY KY LY@$''&%#"! &!+732#!73332>54&#7!373!7# 5jm XOWZR'Uf>*y r3#)z 2x0nIS1GMt>Ui*_e+fg .@JHK&PX@;p p  n a YKY L@Ep p  n a YKY KY LY@%!!!.!.-,*)('&%#" &"+77#%732#!73332>54&#7!373!7#?T9 5jm XOWZR'Uf>*y r3#)z 2kib0nIS1GMt>Ui*_e+f#.a@^Hr  pn YK YL$$$.$-'%##"!&"+77#732+737!373!7#%32>54&#T9I hm)TW Dt*y r3#)z 2vuADb>@MkiJ*]S;u\:+f*_e+ff_4Qe254&#b hm)TW Dt*y r3#)z 2vuADb>@M*]S;u\:+f*_e+ff_4Qe2<:953/-*)('*%+'7>32'7>323#73#3#%#73##"&54632#326>yY  yY  ErD CuD VP CWVE64#8g g **_+;**RI0"' 1&@@=Jc YK YL&%$#$& +7>7#"&546323#73## 3#73#w #9DgA C;hB DsD!%".K!go**4++[3gg@df2LJp n [K K [  L444g4gdbWUPONMJH=;6533+%+%+#>54&#"#"&'#7332654&/.546327!#>54&#"#"&'#7332654&/.546327%):0,6# +E_P3I !!+B/4<2!#4UE/F%):0,6# +E_P3I !!+B/4<2!#4UE/F$0)%&=7C[$#?.5=+&*71AE$<$0)%&=7C[$#?.5=+&*71AE$<8@5JbK YL +7#7333#73'#73' 6,E): C Rk+++5++!nJK PX@&hcYKYL@'pcYKYLY@ 4"#$ +%+73#7!#7#>3232654&#";Y; CtC )#34CPQQK',5&E3+*k-S< $E@B J aYKYL$# +3#73#73232654&+326'4&# FuF QL=H1/\K4+0N=8YPR14+*4/5K /(L\G+ !L:!! UK PX@hYKYL@pYKYLY@ +3#73#7!#7#3 DtC q*$wJ+*n_qT5@2sYK YL +'3267>?#7!#3#7!#%#/%#H+ M  DuX4)rA+v -(+U=7y3,**_"?2-DK PX@/hpaYK YL@0ppaYK YLY@ +%73!73#7!#7#3#A0#(v CvD '% 3 8+e+*f);m@O$ L U JKPX@Eh   c  Y K[KZK\ LK.PX@Fp   c  Y K[KZK\ L@Bp   c  Y K[KYK\ LYY@"mkfda`][JHDB><;:987653$/#%!+%3#737#"#"&?3326?>7.76&'#"&5&632;7#73#3267>32#"&5467326?3#"&?6&+C E9<.5$/17 #  +5( #"-,G1D D0?045.+"#   $ /(0!,B***%%U+2@*$e)*@/#%%9@19**43?=! (-0=-*T&&6+11M("7@,5JK.PX@6pc[ K[ KK[ L@4pc [ KYKK[ LY@0.$34%$ +%#"&'#73326'4&#"732654&#"#73>32"8K)/H"&1:*;N,1   I>/*1G0&I$AWBC+))A-!$=(-I<$(/G.!$0:/563O/8@5JYK Y L + 3#73#73#7#73#3#73 D CsC CZ`C CtC Dn++**&**_++:V@S- Jc c  Y  KYL:9876543210/,+*)('$$$""+'3267#"&54632#"&546323#73#73#7#73#3#73d 16XH0M  D CsC CZ`C CtC D7:*.%++**&**_++&=@ & JK&PX@? p   cYK[K YK  [ L@< p   cYK[KYK [ LY@=<7521.,$$!+73#73#73#3267>32#"&5467326?3#"&?6&#7>7T  DsC Du  E;+**^**$MOM@N# 4'NOK <@9 J Y KYL +3#3#73# 3#73#7= BtC BoFpB CtD {*_++Gj++*>@;  aYK  Y   L+'3#73#!7#73#3#737!3#DsD C0 1C CtC D79D +****_+++&(@%[K[ L +"&'4>32'32>5.#"^e)Jg>]h'Ii9>3N38?2M4bWAx[7_Y9v`==G?\j*;F=Zi,@)YK YL +!3#73#7!#3#73uD CtD  DtD C_++**_++:@7c YKYL$! +7#73#732+326'4&# EvD WYzF,xA?ZS,6++++<9Wk[?#)%&@ JK!PX@'pn[K[LK"PX@+pn[KK[ LK#PX@'pn[K[LK.PX@+pn[KK[ L@/pnK[KK[ LYYYY@!  && +"32673#7#"&'&>3273#>5.>4M26@=R12 M,Xb&HgA3I!,0=?\i*7##73##73#f ";!E> ;;< 2'*0 ?0;****1%+)3# JK!PX@+  c  c YKYL@) a  c  cYLY@/.-,%$+#3#737.'467>37#73"%4&'267> `x53(oB C B ^r73(j= B ~HEV3R!!IKU2Q%%&EH6]&))(O@=[%)).>/K%25Q>@@=J Y KYL +7#73#3#73'3#737'#73MA 8e6 DRC 8`7 ̣**++++**qeK PX@"g YK YL@!s YK YLY@ +%#7!73#73#!#73##3) DvD CwvC Cv++**_**_Xf'@@=JcYK  Y  L''&%&# +%7#".546?#73#326?#73#3#7Y1D)4(C B0+ D8A CrD + !/[**Z&  **_++y8@5 Y K  Y  L+73#73#3#73#3!73#73#|tA AttB CuE CsC B+**_**_++**q?@<s Y K YL+)73#73#3#73#3#73#3# CuD BvvB AvtB DuX3)+**_**_**_J7!K.PX@*p   cYKY L@0p  c  cYKY LY@!   +!#73##7!#>32'32>54&#"E Ct6$+Q D.0ASO(;'5,*+m*39Qn++5%! +K.PX@(   c Y K YL@.  c  c Y K YLY@! +*)'!  +%3#73#3+73#73#>32'32>54&#"CuC DuC CsC D//ATP';'4-++**_++**39Rm++5%!sK.PX@" cYKY L@( c  cYKY LY@  +3#73#73#>32'32>54&#" CsC D//ATP';'4-++**39Rm++5%!,]@Z"Jpa [ KYKK[  L&$!  ,, +"&'#7332>7#73>5.#"#73>324G )2B)&=. 1@1Q0* M/XQ#Dd+%H43$9J%*"32#"&'467#732>5.#" EqC C4` 2EW2]i'IiA_ed48?3M37?2N3+++**1V?%_Y9v`=bW  }=G?\j*;F=Zi?+4͵ JKPX@4h   a YKZK\ LK.PX@5p   a YKZK\ L@2p   a YKYK\ LYY@-,0.,4-4!-#" +7#".6?3326?>7.'4>;#3#737#"737#",/ #  &1"*2";Q. CvC C0Q"+aX:`JD.O'0&"M%7()>)*_++!fK3#-  JK PX@4rh  p  aYK YL@5rp  p  aYK YLY@  % +.5463273!73#7!#7#3#  P-0#(v CvD '% 3 8z   e+*f) +K PX@;   h  pc  a YK YL@<   p  pc  a YK YLY@+ ++*)('&%$#"!     +"&546323"&5463273!73#7!#7#3# "!!0#(v CvD '% 3 8:')%'e+*f)Jz+~ JK PX@*h  cYK Y L@+p  cYK Y LY@+*'%# +!#73##7!#7#>323#737>54&#"3A Kr8%+*#2C*5(C A0+ D7G+mk !.X++W'   hJK PX@#rhYKYL@$rpYKYLY@ %+'7>32#73#7!#7#3yY   DtC q*$wJg v+*n_%,G@ JK!PX@0  pp   a[K[LK"PX@4  pp   a[KK[ LK#PX@0  pp   a[K[LK.PX@4  pp   a[KK[ L@8  pp   aK[KK[ LYYYY@,,%&#% +#32673#7#"&'&>3273#>5.#"J 8@=R12 M,Xb&HgA3I!,0=2%<.! '&54&#"#"&'#7332654&/.546327%):0,6# +E_P3I !!+B/4<2!#4UE/F$0)%&=7C[$#?.5=+&*71AE$<@ #@ YKYL+'3#73#3#ErD CuD +**_+w #E@B  cYK Y  L #"!     +"&546323"&546323#73#3# "!!ErD CuD :')%'**_++@(cYK[ L"$#+7#73##"&54632#326VP CWVE64#8;**RI0"' 11>W@TJ    cYK Y K[ L>=<:42-+*)('&%$# 11+!#73##"&54632>7>?#7!#>32'32>54&#" Du  I1. S  C.(ATC';'5-"*$"NON"8I# 4'ILM#%**39Rm++5%!"/IK.PX@.W c Y KY L@5pW a Y KY LY@ /.-+%#"!+!737!3#73#73#!7#73#>32#'32>54&#"8 C89D DsD C0 0C E00AUnCP';&6-++++****-9Rm++5%JqN'x@ " JGK PX@' h  cYKYL@(  p  cYKYLY@&$- +%'>54&#"3#73##7!#7#>32N6O1:--6>8K Kt7%++#27EW'TPI?FK#91 ++mm <& I@,) 2 JK&PX@Dr  p  cYK [K YK  [ L@Ar  p  cYK [KYK [ LY@ I HCA>=:8'%$!%+'7>323#73#73#3267>32#"&5467326?3#"&?6&#yY  7##73##73#< 16XH0M  ";!E> ;;< 2'*07:*.%J ?0;****1%qiK PX@#g Y K YL@"s Y K YLY@ +%##7!73#73#!#73#" 6) DvD CwvC Cv+++**_**_e /@,rYKYL +7#73#7!73# DtC 24$%w+++*o_ JK PX@rY;LKPX@=KY;LKPX@rY;LKPX@=KY;L@rY;LYYYY@ +7#7333#73 | 6,E): C +++5++} @  JK PX@"r r  b Y;LKPX@"r  b=K Y;LKPX@"r r  b Y;LKPX@"r  b=K Y;L@"r r  b Y;LYYYY@   % +'7>32#7333#73'#73'yY   6,E): C Rkg ++5++ '@ JK PX@ r b Y ;LKPX@"r Y=K Y ;LKPX@ r b Y ;LKPX@"r Y=K Y ;L@ r b Y ;LYYYY@'&%$#"! % +'7>323#73#73#7#73#3#73yY   D CsC CZ`C CtC Dg ++**&**_++ JK PX@2rh  pb  a Y;LK PX@4rh  p  aY=K Y;LKPX@5rp  p  aY=K Y;LKPX@3rp  pb  a Y;LKPX@5rp  p  aY=K Y;L@3rp  pb  a Y;LYYYYY@  % +'7>3273!73#7!#7#3#yY  m0#(v CvD '% 3 8g e+*f)& +3@0Jrc[CL (&   % +'7>32"&'4>32'32>5.#"yY  ^e)Jg>]h'Ii9>3N38?2M4g ^bWAx[7_Y9v`==G?\j*;F=Zi)C ..@ #JK PX@+rpf  b\ CLKPX@-rpf Y =K\ CLKPX@+rpf  b\ CLKPX@-rpf Y =K\ CL@,rpn  b\ CLYYYY@ )('&%$"!  . .% +'7>32"&54632>7##73##73#yY   ";!E> ;;< 2'*0g \ ?0;****1% *7hJK PX@+r   b   cY;LKPX@-r   c Y =KY;LKPX@+r   b   cY;LKPX@-r   c Y =KY;LK-PX@+r   b   cY;L@1r   b  c  cY;LYYYYY@"7653-+&$#"! **% +'7>323#73#3+73#73#>32'32>54&#"#yY  ~CuC DuC CsC D//ATP';'4-+g **_++**39Rm++5%! 8KPX@ .JKPX@ .J@ .JYYK PX@6 rp  c  aa;K[ CLKPX@8 rp  ca Y =K;K[ CLKPX@1 rp W   aa[ CLKPX@8 rp  ca Y =K;K[ CL@6 rp  c  aa;K[ CLYYYY@ 20-,+*(&!  8 8% +'7>32"&'#7332>7#73>5.#"#73>32yY  4G )2B)&=. 1@1Q0* M/XQ#Ddg Y+%H43$9J%*"32#73#73#3>32#"&'467#732>5.#":yY  ~ EqC C4` 2EW2]i'IiA_ed48?3M37?2N3g ++**1V?%_Y9v`=bW  }=G?\j*;F=Zi? 7@@ ! JK PX@7r h  a   aZ;K\CLK PX@9r h   a Y=KZ;K\CLKPX@:r  p   a Y=KZ;K\CLKPX@-r  p  a   a\CLKPX@:r  p   a Y=KZ;K\CLK-PX@8r  p  a   aZ;K\CL@5r  p  a   aY;K\CLYYYYYY@98<:8@9@53-#'% +'7>32#".6?3326?>7.'4>;#3#737#"737#"yY  ,/ #  &1"*2";Q. CvC C0Q"+aX:`JD.g '0&"M%7()>)*_++!fK3#-4'4@1%$Jc[CL''  +"&54>32'.#"2>54&'[n+Lj>`l(Jl73"3Q8/P8 8 oVBuX3nW6s]< .I`1L^-#4-@*[K[ L +"&54>32'2>54&#"[n+Lj>`l(Jl>/P8 FB3Q8M oVBuX3nW6s]<91L^-AK.I`1>N+ #@ YKYL+#7!#3!734r66v66(D@Apnn[KZL ((+"2#"&54>32!73!?>54&G$T$%).=J@G;Jpnd_ [ K[ L64$$!&#&" +%#".54632+32>54&+732654&#"2#"&54632ˋt"@/ G(&C2LF" +g]@1/O{`Ke[Q05[`v,"0!+>(2*+Y=/+  ETD1/o55-J@G#Jc_YK[ L'%"!  -- +".54632+32>54&#"'!!>32!>/ ?--H1?=$KZZ;@S^&Da|+#/#%9I#11%? A@;aE'I&s&4A@>!Jpcc[ L('0.'4(4&'$&$+%#"&54>32#"&5467.#">322>54&#"$B_9Y^(NuMH]2$&J>. !]1Kf'A-=6PiG4^F)f[KR;3%%Dc<")G$:M(42oW5>XA!@pqYL+#7!#>7!+,GvV9 W Db}E9?;??6.s+='@$; Jc[ L0.&$,$+%#"&5467.54>32'>54&#"32>54&/.'&B[5_iD<!8M,Qi64 * ,*G==R93QD#>.?*; 331P9\BE_5"+D.GB0W;aL*-2A6)1 3E'7",-  Q#$4?@<Jc_[K[ L&%.,%4&4&$"$$ +#"&54632#3267#"&54>32'"32>54&EsUHe E,Ud#P6Sg&AV/Vm"=->3(@.DCCY;9"0',TK9]?"\/6J,632'.#"%4&'3267> db.RqBbd,PrE .$)C% _ 2*)C$ zrVOuvLW +%!UZ\%M !-&"X[\F?%(@%[BK[CL  +"&54>32'3267>54&#" db.RqBbd,Pr4E)C# 1D)C% zrVOuvLWV[-&"X\[&TW+%!UZ\b%@"a:KY;L! +#73267>733!73{ "3 3d ]>.  11%>@;pc[BKY;L %% +"32#"&54632!73!?>54&W-Nv]Y`%A[5&4(3Y]n7%.!ObKE.OJL+z;PH*6("FH@E  pccc [ BK[CLA@97$"&!$#$$ +%#"&54632+32654&+732>54&#"32#"&54>32'Ea8Vc""J4PeEL- @/C*;<.K#9L)Wf>9!  &)5U:LA&0#*eQ92/.733?3V$O N#tG0D\;2O@;&! JccY:K[CL#&#$$ +#"&54632+32>54&#"'!!>32$Ee?Qg#"L10I/>9%KZh:9"We8cI+HE&0$)%=O+94IC QYK(8K@HJcc[BK [CL*)20)8*8 (( +2#"&546;.#">32#"&54>7>2>54&#"Pf"K-]m ^#2 )2WO3bK/f_,ih_"6Aw*BT)1;%=N(5HhC"@pY:K;L +7#7>7!#7!TLf{?@'6A6_N; C93B7?:-=)@&; J[BK[CL20(&.$ +%#".5467.54>32'>54&#"32654&/.'&D^7.O:"O?";Q/dd87!+ **GDGMB/VBKh53: <-5U; +>(Qk8'0J1UE;^&;fY.6:G553A@TH)6"i80(8@@=Jcc[BK[CL*)20)8*8&$#$" +%#"&54632+3267&54>32"32>54&(_KNl#"R3Xd "L7Tq>_@\r ),?(C<.C)CY11EF&0"*%$WR2bK.cc%ork)?P&9>&=O(:AQJ-0@-#"J[BK[CL'%  +"&54>32'.#"%4&'3267>db/QqBbd,PrA - (D% ^ 4.(C$ zrUPtwKX  +%!UZ\*M%'-&"X\[QJ%(@%[BK[CL  +"&54>32'3267>54&#"db/QqBbd,Pr3F(C$ 2D(D% zrUPtwKXV[-&"X\[&TW+%!UZ\D%@"a:KY;L! +#73267>733!73w ."> 1 >.  11!2%>@;pc[BKY;L %% +"32#"&54632!73!?>54&o-Nx]X`$AZ5%4'2Z]n7%.!ObKE.OJL+z;PH*633FH@E  pccc [ BK[CLA@97$"&!$#$$ +%#"&54632+32654&+732>54&#"32#"&54>32(Ea8Vc""K3QdEL- ?/E,<;.K#:L)WfD9!  &*5U:LA&0#*eQ92/.73!?3V$O W#t@;&! JccY:K[CL#&#$$ +#"&54632+32>54&#"'!!>32 %Ee?Qf""L10H/>9%KYg9:"We8cI+HE&0$)%=O+94IC QPB(8K@HJcc[BK [CL*)20)8*8 (( +2#"&546;.#">32#"&54>7>2>54&#"Pf"K-]m ^#2 )2WO3bK/f_,ih_"6Aw*BT)1;%=N(5H~"@pY:K;L +7#7>7!#7!UNh~?@&6@6bP= C93B7C>-=)@&; J[BK[CL20(&.$ +%#".5467.54>32'>54&#"32654&/.'&C^7.P:!O?!;Q/Wr97!++*Q(Qk9'0J1UE;^&;fY.6:G553A@TH)6"i:2(8@@=Jcc[BK[CL*)20)8*8&$#$" +%#"&54632+3267&54>32"32>54&(`JNl#"Q4Xd "M7Tp>_?]r ),?(C<.C)CY11EF&0"*%$WR2bK.cc%ork)?P&9>&=O(:A>J #b93>6  R      F $ r 0m | >u ( < :q  Copyright (c) 2018 LLC Contrast Foundry (LLC CoFo). All rights reserved. Copyright (c) 2018 LLC Contrast Foundry (LLC CoFo). All rights reserved.CoFo RobertCoFo RobertItalicItalic1.001;COFO;CoFoRobert-RegularItalic1.001;COFO;CoFoRobert-RegularItalicCoFo Robert ItalicCoFo Robert ItalicVersion 1.001;PS 1.1;hotconv 16.6.54;makeotf.lib2.5.65590Version 1.001;PS 1.1;hotconv 16.6.54;makeotf.lib2.5.65590CoFoRobert-RegularItalicCoFoRobert-RegularItalicCoFo Robert is a trademark of LLC Contrast Foundry (LLC CoFo).CoFo Robert is a trademark of LLC Contrast Foundry (LLC CoFo).LLC Contrast Foundry (LLC CoFo)LLC Contrast Foundry (LLC CoFo)Elizaveta RasskazovaElizaveta Rasskazovahttp://www.contrastfoundry.comhttp://www.contrastfoundry.comhttp://www.lizarasskazova.comhttp://www.lizarasskazova.comRegular ItalicRegular Italic  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjikmlnoqprsutvwxzy{}|~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~uni00A0AmacronamacronAbreveabreveAogonekaogonek Ccircumflex ccircumflex Cdotaccent cdotaccentDcarondcaronDcroatEmacronemacronEbreveebreve Edotaccent edotaccentEogonekeogonekEcaronecaron Gcircumflex gcircumflex Gdotaccent gdotaccent Gcommaaccent gcommaaccent Hcircumflex hcircumflexHbarhbarItildeitildeImacronimacronIbreveibreveIogonekiogonekIJij Jcircumflex jcircumflex Kcommaaccent kcommaaccentLacutelacute Lcommaaccent lcommaaccentLcaronlcaronLdotldotNacutenacute Ncommaaccent ncommaaccentNcaronncaron napostropheEngengOmacronomacronObreveobreve Ohungarumlaut ohungarumlautRacuteracute Rcommaaccent rcommaaccentRcaronrcaronSacutesacute Scircumflex scircumflex Tcommaaccent tcommaaccentTcarontcaronTbartbarUtildeutildeUmacronumacronUbreveubreveUringuring Uhungarumlaut uhungarumlautUogonekuogonek Wcircumflex wcircumflex Ycircumflex ycircumflexZacutezacute Zdotaccent zdotaccentuni018Funi01C4uni01C5uni01C6uni01C7uni01C8uni01C9uni01CAuni01CBuni01CCuni01D3uni01D4uni01E2uni01E3uni01F1uni01F2uni01F3AEacuteaeacute Oslashacute oslashacute Scommaaccent scommaaccentuni021Auni021Buni0232uni0233uni0237uni0259 acutecombuni0394Sigmauni0400uni0401uni0402uni0403uni0404uni0405uni0406uni0407uni0408uni0409uni040Auni040Buni040Cuni040Duni040Euni040Funi0410uni0411uni0412uni0413uni0414uni0415uni0416uni0417uni0418uni0419uni041Auni041Buni041Cuni041Duni041Euni041Funi0420uni0421uni0422uni0423uni0424uni0425uni0426uni0427uni0428uni0429uni042Auni042Buni042Cuni042Duni042Euni042Funi0430uni0431uni0432uni0433uni0434uni0435uni0436uni0437uni0438uni0439uni043Auni043Buni043Cuni043Duni043Euni043Funi0440uni0441uni0442uni0443uni0444uni0445uni0446uni0447uni0448uni0449uni044Auni044Buni044Cuni044Duni044Euni044Funi0450uni0451uni0452uni0453uni0454uni0455uni0456uni0457uni0458uni0459uni045Auni045Buni045Cuni045Duni045Euni045Funi0462uni0463uni0472uni0473uni0474uni0475uni0490uni0491uni1E46uni1E47uni1E62uni1E63WgravewgraveWacutewacute Wdieresis wdieresisuni1EBCuni1EBDYgraveygraveuni2004uni2007uni2009uni200Atwodotenleader zerosuperior foursuperior fivesuperior sixsuperior sevensuperior eightsuperior ninesuperior zeroinferior oneinferior twoinferior threeinferior fourinferior fiveinferior sixinferior seveninferior eightinferior nineinferiorliraEurouni20B4rubeluni2113uni2116 estimateduni2190arrowupuni2192 arrowdownuni21E6uni21E7uni21E8uni21E9uni2460uni2461uni2462uni2463uni2464uni2465uni2466uni2467uni2468uni2469uni24EAuni24FFuni25A0uni25A1uni25AAuni25ABuni25CBuni25CFuni25EFuni2610uni2611uni2612uni261Auni261Buni261Cuni261Duni261Euni261Funi2713uni2776uni2777uni2778uni2779uni277Auni277Buni277Cuni277Duni277Euni277Funi2981uni2B9Cuni2B9Duni2B9Euni2B9Funi2BC5uni2BC6uni2BC7uni2BC8uni3008uni3009uni301Auni301B commaaccentcyrbreveCR zero.zero Iacute_Jacutei.TRK iacute_jacutequestiondown.cap question.smcpquestiondown.smcpexclamdown.cap exclam.smcpexclamdown.smcp hyphen.cap endash.cap emdash.capat.lnum slash.cap backslash.capbar.cap slash.smcpbackslash.smcp parenleft.capparenright.capbracketleft.capbracketright.cap braceleft.capbraceright.cap uni301A.cap uni301B.cap dblparenleft dblparenrightdblparenleft.capdblparenright.cap uni3008.cap uni3009.capparagraph.smcpnumbersign.lnum uni2116.lnum percent.lnumperthousand.lnum dollar.lnum Euro.lnumyen.lnum rubel.lnum lira.lnum sterling.lnum cent.lnumcopyright.pnum_lnumquoteleft.smcpquoteright.smcpquotedblleft.smcpquotedblright.smcpguilsinglleft.capguilsinglright.capguillemotleft.capguillemotright.cap asterisk.smcpf_igrave f_idieresis uni041B.bgr uni04100301 uni04150301 uni04180301 uni041E0301 uni04230301 uni042B0301 uni042D0301 uni042E0301 uni042F0301 uni0432.BUL uni0434.BUL uni0436.BUL uni0437.BUL uni043A.BUL uni044E.BUL uni0431.SRB uni0475.smcp uni0473.smcp uni0463.smcp uni0434.SRB uni0433.SRB uni043F.SRB uni0442.SRB uni04300301 uni04350301 uni04380301 uni043E0301 uni04430301 uni044B0301 uni044E0301 uni044D0301 uni044F0301 caron.alt acute.cap breve.cap caron.capcircumflex.cap dieresis.cap dotaccent.caphungarumlaut.cap grave.cap macron.cap tilde.capCyrbrevering.cap dotbelowcmbperiodcentered.smcpa.smcpb.smcpc.smcpd.smcpe.smcpf.smcpg.smcph.smcpi.smcpj.smcpk.smcpl.smcpm.smcpn.smcpo.smcpp.smcpq.smcpr.smcps.smcpt.smcpu.smcpv.smcpw.smcpx.smcpy.smcpz.smcp aacute.smcp abreve.smcpacircumflex.smcpadieresis.smcp agrave.smcp amacron.smcp aogonek.smcp aring.smcp atilde.smcp cacute.smcp ccaron.smcp ccedilla.smcpccircumflex.smcpcdotaccent.smcpeth.smcp dcroat.smcp dcaron.smcp eacute.smcp ebreve.smcp ecaron.smcpecircumflex.smcpedieresis.smcpedotaccent.smcp egrave.smcp emacron.smcp eogonek.smcp uni1EBD.smcp gbreve.smcpgcircumflex.smcpgdotaccent.smcpgcommaaccent.smcphcircumflex.smcp hbar.smcp iacute.smcp ibreve.smcpicircumflex.smcpidieresis.smcp igrave.smcp imacron.smcp iogonek.smcp itilde.smcpidotaccent.smcp i.TRK.smcpjcircumflex.smcpkcommaaccent.smcplcommaaccent.smcp ldot.smcp lacute.smcp lcaron.smcp lslash.smcp nacute.smcp ncaron.smcpncommaaccent.smcp ntilde.smcp uni1E47.smcpeng.smcp oacute.smcp obreve.smcpocircumflex.smcpodieresis.smcp ograve.smcp otilde.smcpohungarumlaut.smcp omacron.smcp oslash.smcposlashacute.smcp thorn.smcp racute.smcp rcaron.smcprcommaaccent.smcp sacute.smcp scaron.smcp scedilla.smcpscircumflex.smcpscommaaccent.smcp uni1E63.smcptcommaaccent.smcp uni021B.smcp tcaron.smcp tbar.smcp uacute.smcp ubreve.smcpucircumflex.smcpudieresis.smcp ugrave.smcpuhungarumlaut.smcp umacron.smcp uogonek.smcp uring.smcp utilde.smcp uni01D4.smcp wacute.smcpwcircumflex.smcpwdieresis.smcp wgrave.smcp uni0233.smcp yacute.smcpycircumflex.smcpydieresis.smcp ygrave.smcp zacute.smcp zcaron.smcpzdotaccent.smcp aeacute.smcpae.smcp uni01E3.smcpoe.smcp uni0259.smcp uni01C8.smcp uni01C9.smcp uni01CB.smcp uni01CC.smcp uni01F2.smcp uni01C5.smcp uni01C6.smcp uni01F3.smcpij.smcpiacute_jacute.smcpnapostrophe.smcpgermandbls.smcp uni0430.smcp uni0431.smcp uni0432.smcp uni0433.smcp uni0434.smcp uni0435.smcp uni0436.smcp uni0437.smcp uni0438.smcp uni0439.smcp uni043A.smcp uni043B.smcp uni043C.smcp uni043D.smcp uni043E.smcp uni043F.smcp uni0440.smcp uni0441.smcp uni0442.smcp uni0443.smcp uni0444.smcp uni0445.smcp uni0446.smcp uni0447.smcp uni0448.smcp uni0449.smcp uni044A.smcp uni044B.smcp uni044C.smcp uni044D.smcp uni044E.smcp uni044F.smcp uni0450.smcp uni0451.smcp uni045B.smcp uni0453.smcp uni0454.smcp uni0455.smcp uni0456.smcp uni0457.smcp uni0458.smcp uni0459.smcp uni045A.smcp uni0452.smcp uni045C.smcp uni045D.smcp uni045E.smcp uni045F.smcp uni0491.smcpuni043B_BUL.smcpuni04300301.smcpuni04380301.smcpuni04350301.smcpuni043E0301.smcpuni04430301.smcpuni044B0301.smcpuni044D0301.smcpuni044E0301.smcpuni044F0301.smcpzero.tnum_onum_zerozero.tnum_onum one.tnum_onum two.tnum_onumthree.tnum_onumfour.tnum_onumfive.tnum_onum six.tnum_onumseven.tnum_onumeight.tnum_onumnine.tnum_onumzero.pnum_lnum_zerozero.pnum_lnum one.pnum_lnum two.pnum_lnumthree.pnum_lnumfour.pnum_lnumfive.pnum_lnum six.pnum_lnumseven.pnum_lnumeight.pnum_lnumnine.pnum_lnumzero.tnum_lnum_zerozero.tnum_lnum one.tnum_lnum two.tnum_lnumthree.tnum_lnumfour.tnum_lnumfive.tnum_lnum six.tnum_lnumseven.tnum_lnumeight.tnum_lnumnine.tnum_lnum jkklnoop      $%89ABUVVWWXXY DFLTcyrlZt $ 0 $ b  p B 0.Hz&2xj j`T3~45{yhijklm\}YO@ ,(*+8:L    NB!SU&'1.)0-/49<>=IJDEFG2AHK?"%7CPSUXY[\]^`acdefghijklmopq{stuvwxyzr|}~#635;`az|~xnoMrsged"% >@CDEFGHIJKMNOPQRSTUVWXYZ[\]^`cdegjkmpu{   !$&(*,.02469;=@ACDFGIKMNPRTVXZ[\]^ab NORUWXpq{|}~ $[6r|"(.4:@FLRX`flrx~_UW gedf T$VQRTVWZ_bnLL ff  """, gedffSTUV"%!" $STUV"%!" $6",-MV-XM,L L[ (2<FPZdnx"" (2<FPZdnx &0:DNXblv  &0:DNXblv $.8BLV`jt $.8BLV`jt",6@JT^h",6@JT^h *4>HR\ *4>HR\(2<FP(2<FP&0:D&0:D$.8$.8",",  $""4"styy 6L"styystyy"8Nd"styystyystyy$:Pf|"styystyystyystyy&<Rh~"styystyystyystyystyy(>Tj"styystyystyystyystyystyy *@Vl"styystyystyystyystyystyystyy" ,BXn"styystyystyystyystyystyystyystyy$ .DZp"styystyystyystyystyystyystyystyystyy#O@ ,(*+8:L    NB! $&'1.)0-/49<>=IJDEFG2AHK?"%7CPQRSTUVWXYZ[\]^_`abcdefghijklmnopq{stuvwxyzr|}~#635;MgedDEFGHIJKLMNOPQRSTUVWXYZ[\]   "$&(*,.02469;=@ACDFGIKMNPRTVXZX{|}~W>{yhi_jklm\}Y`az|~xnors> >@C^`cdegjkmpu{[\]^ab NORUpqU<ged{={yhi_jklm\}Y`az|~xnors= >@C^`cdegjkmpu{[\]^ab NORpq. . n4ystystystystyst UUn4st yy  UU Ir$(2  702:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz$ $i$ $i$ $i$ $i$ $i$ $i$$ $$i$A $Ai# #i# #i# #i# #i# #i# #i## ##i#@ #@i" "i" "i" "i" "i" "i" "i"" ""i"? "?i! !i! !i! !i! !i! !i! !i!! !!i!> !>i   i   i   i   i   i   i    i =  =i i i i i i i i< <i i i i it ti i i; ;i i i i is si i i: :i i i i iy yi i i9 9io5 o5ioU oUik& k&ikF kFi !A "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrzA@AkA@AkA@AkA@AkA@AkA@AkA$@A$kAA@AAk@@@k@@@k@@@k@@@k@@@k@@@k@#@@#k@@@@@k?@?k?@?k?@?k?@?k?@?k?@?k?"@?"k??@??k>@>k>@>k>@>k>@>k>@>k>@>k>!@>!k>>@>>k=@=k=@=k=@=k=@=k=@=k=@=k= @= k==@==k<@<k<@<k<@<k<@<k<@<k<@<k<@<k<<@<<k;@;k;@;k;@;k;@;k;t@;tk;@;k;@;k;;@;;k:@:k:@:k:@:k:@:k:s@:sk:@:k:@:k::@::k9@9k9@9k9@9k9@9k9y@9yk9@9k9@9k99@99k2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz$ $i$ $i$ $i$ $i$ $i$ $i$$ $$i$A $Ai# #i# #i# #i# #i# #i# #i## ##i#@ #@i" "i" "i" "i" "i" "i" "i"" ""i"? "?i! !i! !i! !i! !i! !i! !i!! !!i!> !>i   i   i   i   i   i   i    i =  =i i i i i i i i< <i i i i it ti i i; ;i i i i is si i i: :i i i i iy yi i i9 9io5 o5ioU oUik& k&ikF kFi"*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrzA@AkA@AkA@AkA@AkA@AkA@AkA$@A$kAA@AAk@@@k@@@k@@@k@@@k@@@k@@@k@#@@#k@@@@@k?@?k?@?k?@?k?@?k?@?k?@?k?"@?"k??@??k>@>k>@>k>@>k>@>k>@>k>@>k>!@>!k>>@>>k=@=k=@=k=@=k=@=k=@=k=@=k= @= k==@==k<@<k<@<k<@<k<@<k<@<k<@<k<@<k<<@<<k;@;k;@;k;@;k;@;k;t@;tk;@;k;@;k;;@;;k:@:k:@:k:@:k:@:k:s@:sk:@:k:@:k::@::k9@9k9@9k9@9k9@9k9y@9yk9@9k9@9k99@99k >AhjJ<FPZdnx",6@cccccccccccccccccccccccccccx}PUX^ckmno yst xDFLTcyrl"latn<BGR SRB (AZE (CRT (DEU (MOL (ROM (TRK (cpspkernfZbz     !#%')+-/13578:<>?BEHJLOQSUWhijklmnopqrstuvwxyz{|}~V|~D~F&*06<j&*****      < j  p  v   j   j      p 8       4 j t z      p   2 < B H f  * x  "T L: ;$>em'p'rB|000&$SE[p|$ ?dek d?dfo eg ?dfgkog ?[defeg?defg|g ?def|g#?[def| Tdeg ?def| g ?dfeg; ;?[w cdi ";B5[kbci ";?B[cdi );?uES[lz>mp|*wC"uf %0  d P-"#;I?G@R`]ko^::M';DV1; ]I    C-B ?[k  ?S[   ; ;?cd??;M)) Y) 79:!#%3UIM Y+ILXYZ\  (*,.0246IXWX ?|didgipTdgux ?|doidgx!< "?|iTdegx/ "?Bmp~|cdiTdgx "?BBmp|cdiTgux ddg ? ???ii%;cn>m|Y~dfmggb||| ??   Bj ]f;Bw-]f g TdegB|fTegxy fTegxdgydgxxydgx ?|Tdeg;?eg;?f{e ;?g;?f{eg ;?{#;ES[f|{Tdeg;?f{g;?E{Te #%)39:=>?BEGHIORSTUYZ[^defgw 348:<?KLPRZhijkmnopstuvwy{|}~ bcdfghltxQ`derx{NEGZcMAmp|brr6 .@[uffqUe\Xp]n 9===H@ZR]e,6G N~  $ u$$  !s000090E-0'000000BB00000'0pnyY4  # $ 1 86/-##))33>>?? BB:IITT&[[W^^ ccddggYww%(jj<mm=pp>ss?yy@ABCGKMOQUYY)ZZ'[[*\\^^bbcc2dd ff3gg +,FHDVT "X5CC;QQE``IddJeeLrrSuuPxxR{{N!970.,M++      6S5ZHHH/SSSS(!TTT#   SSSSHSSSSSS        S S S S SGS5 Z Z Z Z Z H H HH H H H H     0 / / S S S S S S SS(((  Z H S   /S599J999IJ99;919999KE999I993993J;999J99E97CCbC?QQ=LL=C=C=QCQQQQQ?=ACCbCQQL==QQQJ3C9b H  S S S S,, "TTTTTTT..........MGSS&'6612::4<:F:8C?]PCQQQDDRDRR>@B%%%%%%%%%%%%)*%%%%%%%%%%%%%%%%%%%%%%%\%%%%%%%%%%%%%%%%%)))))))))))*** % % %%%%%U[[[[Y_[[[a[[][[]PN[[[P[[_[W[$P[][[$P$$N$[UV\\^O\`\X--Z #%)3>?BIT[^cdgwjmpsyYZ[\^bcdfgCQ`derux{  )M? :$i:z-&H-B$0B22CCC$888K--E 66U-''66U-- 9 f\iA@vj{s st yy      UU _a 2'3~/=KgKKKgKK?KKKKgKgKR@SAABT OOOOzO{WOOE{{{ {X164======>gKKKKKKKKKKggggggSSSSBKOOOOOOOOOOOO{{{{OOOOOOO{{{{{{=O=O=OgOgOgOgOKOKOKOKOKOKOKOgOgOgOhOKKK{K{K{K{K{y{?WKKKKKKKKKKgOgOgOgOKKKRRRR@F@E@ES{S{S{S{S{S{A{B{BTXTXTX KKOKKKKS{>OKKO>OgOR@EB{WGGCGfGGL(CGG9G;GGGGDcGGGLGGkGGkC9!GGGCGGcG7w w"ws#iiwwiw%iii iisUwww0iiiiiCkw )GKRA{A{A{KOB{~~5y{{zz;<HHl:HdH8ws+*qawiiixxjxjjtV]n|nnn|nn_nnnn|n|nM}PPQ`]]]]]]]]]|||||nnnnnnnnnnnnn||||nnnnnnnnnnpn_nnnnnnnnnnnn||||||||||nnnnNMMM}}}}}}}}}}}PPPPQQQQQ```^^^|KnKnKKnnnnn[oooobYoooooqooqaI$o&ooaooYouomaoq,oo-.mammImo[\pprJpZpvee#styU_`a(b #6"{}Myxfa?/1 '' Rn mgg u'&*Br!! $x  no k00ihikkllqrttvvxxzz{{||}}~~  !!                 PPRRSSTTUUVVWWXY ZZ[] ^^__ aabbcc ffgh iijjkk llmnoo pqssttvw yz||}} ~~    HeH,j+/.)(*u""$$z??@@'BB0``&mmnstlyyl{{tzzzzhiojjMkkomm7noopp1qqfssMtuovvBwwoxxqy{o||!}}o~~g<ofoYoYMB o oMo<o:R"Ri8RNW[T[R[$R[WRWW%WN[PRviR2W9T[v[WMYRoieJKIJKIHmslwUUj_a>cc-ddff gg5ii6aUbVqrpZCp=p;#RNv_?RWSXSX\OQxyx^yPPDQS]TT UU]VVhWW@XZ][[L\]]^^__`]aa_bb?ccFddee ff]gghi]jj?kl]mm@nn]oocpp]rr?ss]tt_uu3vw]xxyy4{{?~~F]DE^`G^A^dk hiklnoqrtxz ,<HJLSVXY[]^PPbR_cacqfqtstvwyz|4$&,.k$MbyfaAVwZvtm-[JxT=tTc}  nY s$$,                                 ,,     !&-"#$%&&'()**+, !!!!!&&&----------""""#$%%%%%#&&&&&&&&&&'''(((((()))))))))))****+++++,,,----####,,,,#(% <;<d)+( 2DD3gMgggMgg5ggggMgMgY>?667@ &````Z`[\][^__``_IJ\\\#\h$RfffH3333334MggggggggggMMMMMM????7g'````````````\\\\`_``````\\\\\*\3`3`3`M`M`M`M`g`g`g`g`g`g`g`M`M`M`N`g[g[g\g\g\g\g\\5]g[g^g^g^g^g^g_g_g__g_M`M`M`M`g_g_g_YIYIYIYI>K>J>J?\?\?\?\?\?\6\7\7@h@h@hgg`gg^gg_?\4`gg`4`M`YI>J7\]L"g_YI6\6\6\g`7\;;EF=EF=<QGfffffffjjjjjjjjjjd\\/.ccc -01UOVP,ZZ8TaTTTaTT:TTTTaTaTAWbBB Ci888888888aaaaaTTTTTTTTTTTTTaaaaTTTTTTTTTTT:TTTTTTTTTTTTaaaaaaaaaaTTTTAAAAAAXWWWbbbbbbbbbbbBBBBCCCCCiii999agTgTggTTTTTASSSSSee!$$&(*24= DHJSUZ&\],.EK[a!#ZVX")T#l%BuDO! ( )$}Myxfa?/1 '' Rn -mm{{""       $$$%\k\2154/' .0HVVVVVVJVVVVVVKLLM-6nnnnnnnP!,HHHHHHIVVVVVVVVVVMVnnnnnnnnnnnnnnnnnnnHnHnHnnnnnVnVnVnVnVnVnVnnnnnVVVVVVVJVVVVVVVVVVnnnnVVVKQKPKPLMMVVnVVVVInVVnInnKPMRRNRRR7WNRRDRFRRRRO@RRRWRRuRRuND R RRNRR@R>e(eeasswggwew*ewsesss+ssawceee8ssgwwsssNue RVLLLVnMkk^_]^_]\;BBB3" <&=}q~rFGSSvESAS?)ea{CesssfftfttxbdhjloophhhhhhhhhzjmllloooopppppiiiVVVVZyyyyXyyy`yy{yy{CTyyyCyyXyyCy{9yy :CTyZ[zz|UzYz# mm{{"""$$#$դ'ZZplugins/limit-login-attempts-reloaded/assets/css/fonts/CoFoRobert-RegularItalic.ttf000064400001164340147176754540024615 0ustar00 FFTMGDEF58-GPOSL=vGSUB#9\OS/2cr`cmap4Rcvt 5 "fpgm?x gaspglyfT1XPheado,6hhead$hmtx)nvloca:$"maxp%v name9v6post3$prep !\.jM_<ZZ<6]<6*:w4LXKXJ^2 COFO   +M-6DuVN/<u4bOeDx4,":  (78'-7"NNYNO}0u@G,@>3GQFefppze[@z#xQ_34- :-J-3+<!A"/>$U')Y*L*2-#-5S?CC<6)Kp@:1NeN4W4NVol)/Nh.r }N0tNs^$HGpN1 M!M#<@GGGG>>>>GGGGGN^Fffffze\34-4-4-4-4-4-)-3333/>/>/./:0L*22222Nn2BCBCBCBC))4-4-4-@-@-@-@-J-J-G3G3G3G3G3@!@!@!@!A"B">/>>/>>/>>/>/>'M>$U3')3'3')25)3'L*L*L*L*L*G2G2G2|@255e\e\?e\"fBCfBCfBCfBCfBCfBCp6ze)ze[[[j9j-9)t*fBC)T -)F2e\ze)$U(mHtqKK GG,e3F>XKef1\q3GGGQ@`g1PMxZj;H{%4-@) 23|BCBC202C+2L*--Z*)0DC0R=J=+>>%&33 -/>/8U+A"20BC)DC5*E2a) L*p6p6p6G3ze)MPEd"]U3s@]0 {xguS\Rtgtv\v]x&p t su\t%tH}vN4N&N*N&#VpdypdxgdqNdRN>NXNgNhBSBSBSBSBSBSBSBSBSBSBSBSxvxQFPFr<M<d4D+;+;>2>2>2d>2dDOBSBSBSBSBSBSBSBSBSBSXd2%22%2228FMEyR4,a8>M>@31-\]s}1q}soI}?K1='5i'J^3V"(88N NN`NP+O+PXlclc= ; lr%<%<GGg1;{%.!|  E!d:!<JCDP=4-3BC2)>%&{ \F %%e*W&+& %J6EF'FF % % % % %%%%%ee*WWWWWW&&&&&&&&%%   %J%J%J%J6E6E6E6E6E6E6E6E6E6E6E'F'F'F'FFFFFFEBBBW[!hh'e&[ %%J)+5XHP`JJ%2Jh)_h&)N4N4NNNN N5NINXN.N#OFOFj08(%UYhN?E8NQNQNDN!;3N&GPC:$~7~37Y_cuGc      " & 0 : D p y !!!"!.!!""""H"`"e$i$$%%%%%&&'')++0 0 927YbrFb      % 0 9 D p t !!!"!.!!""""H"`"d$`$$%%%%%&&''v)++00{uh[S;%"bhfX>pTzaZSK}+߹߶ݼ<(܈܀a^?%֨փD4Z ~   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`aqdeivok ujrgglzcnm{b7w[ap]^_xb`\, UXEY KQKSZX4(Y`f UX%acc#b!!YC#DC`B-, `f-, d P&Z( CEcEEX!%YR[X!#!X PPX!@Y 8PX!8YY  CEcEad(PX! CEcE 0PX!0Y PX f a PX` PX! ` 6PX!6``YYY+YY#PXeYY-, E %ad CPX#B#B!!Y`-,#!#! dbB #BEX CEc C`Ec*! C +0%&QX`PaRYX#Y!Y @SX+!@Y#PXeY-,C+C`B-,#B# #Babfc`*-, E Ccb PX@`Yfc`D`-, CEB*!C`B- ,C#DC`B- , E +#C%` E#a d PX!0PX @YY#PXeY%#aDD`- , E +#C%` E#a d$PX@Y#PXeY%#aDD`- , #B EX!#!Y*!- ,EdaD-,` CJPX #BY CJRX #BY-, bfc c#aC` ` #B#-,KTXdDY$ e#x-,KQXKSXdDY!Y$e#x-,CUXCaB+YC%B %B %B# %PXC`%B #a*!#a #a*!C`%B%a*!Y CG CG`b PX@`Yfc Ccb PX@`Yfc`#DC>C`B-,ETX#B E #B #`B `aBB`+u+"Y-,+-,+-,+-,+-,+-,+-,+-,+-,+-, +-),# bfc`KTX# .]!!Y-*,# bfc`KTX# .q!!Y-+,# bfc&`KTX# .r!!Y-, +ETX#B E #B #`B `aBB`+u+"Y-,+- ,+-!,+-",+-#,+-$,+-%,+-&,+-',+-(, +-,, <`--, `` C#`C%a`,*!-.,-+-*-/, G Ccb PX@`Yfc`#a8# UX G Ccb PX@`Yfc`#a8!Y-0,ETX/*EX0Y"Y-1, +ETX/*EX0Y"Y-2, 5`-3,Ecb PX@`Yfc+ Ccb PX@`Yfc+D>#82*-4, < G Ccb PX@`Yfc`Ca8-5,.<-6, < G Ccb PX@`Yfc`CaCc8-7,% . G#B%IG#G#a Xb!Y#B6*-8,%%G#G#a C+e.# <8-9,%% .G#G#a #B C+ `PX @QX  &YBB# C #G#G#a#F`Cb PX@`Yfc` + a C`d#CadPXCaC`Y%b PX@`Yfca# &#Fa8#CF%CG#G#a` Cb PX@`Yfc`# +#C`+%a%b PX@`Yfc&a %`d#%`dPX!#!Y# &#Fa8Y-:, & .G#G#a#<8-;, #B F#G+#a8-<,%%G#G#aTX. <#!%%G#G#a %%G#G#a%%I%acc# Xb!Ycb PX@`Yfc`#.# <8#!Y-=, C .G#G#a ` `fb PX@`Yfc# <8->,# .F%FRX +-g,:+?+-h,:+@+-i,;+..+-j,;+>+-k,;+?+-l,;+@+-m,<+..+-n,<+>+-o,<+?+-p,<+@+-q,=+..+-r,=+>+-s,=+?+-t,=+@+-u, EX!#!YB+e$PxEX0Y-KRXYcpBE1*B@ XL8&*B@ ^RB/* B@@@ @ *B@@@@@ *D$QX@XdD&QX@cTXDYYYY@ ZN:( *DdDDLL**II++II++;;++{|;;++6,ddddhtXD $ T 4 X  T0H4||t\H| @!$!"d"#H#$x$%p%&&d&&',()t*++- .0012305067t949;H<$<=?@ABCDDEpEEFGHItJ0JtKL@MlNNODQQTQR<RSTTUUUVVXY Z[\\] ]^_`\ahcdefh hiijDjklmhno pp@pqrTrstu\w`yd{h}`<`x xhX@L <lH ( 88pLt<hʤdӈLռ֐$ڐ$۸|@px<l@h@` 04t0X D P  L@48L@D|`$ <!"8#%&'H'*x+ ,\-@-/\01L13347L9:< =>@C@CDF HLILKtMOQRSTUVWXLY@YZZ[$[[\\\]^^P^^_p_`abcdde\efdfgi<jklmn|nopppqxr@tvwXx`yz{0{|t|}|~|~$tP<@| <D40x| \p$h\lxtt4$h\d<żȸɜPld L؄x۸ސ@TT(t|4dT@x` 0,44\4h `x|   D ,L< x<D \!L"#$&8&($)4)*8*d***+ +0+T+t++, ,H-8---01235L667 788889$::@:d:::;;X;;<=\=>$>??@@4@`@A8BCETG HlI,IJKLN`NNOP P8PdPPQSUVHVWXYxZ[\^`4abdedfxgPhhi\jlmmo(q,r<slt\uwXyz|}}T}}~ ~~P\<p l\8,Hxx|| @4<  THtHL` lPtżƌHɴp˴̜@|ӌԔՔ<L8$ݰ\ P(|L,D, \8(HDT$     ` hh|!""$%%&'( )D*4+,../ 01d2457@9P;>\@AB<BCLD<EEFGGHIJJ|K,L4LMtN`NOPQHQRDRST|U<V(VWpXP>  0+!%!! '7`222j:F%!6%)@&pBK[CL( +7#>7>7>32"&54632$$  =I$$XH+G@+C'(uu $@!sBL   # +7>3237>32u#Wf#W$%  $%  HK PX@&  gb  a=LKPX@%  sb  a=L@.r  sb U Y  MYY@ +737#73733733#3##7##7#737#l?1.01/1no?./.-/.j?{4444/C/:Ei@f/2 <1% $ Jrp  nsK[KK [ LA=6*: +373#4&'#"&'#7.'#737'.546327.#"'232654&y%) !%),"04Ah[ &"7!!+8*8>@dH P/ 3:)^63E&CM C-5 67KY7>$C6; ?2IC')%l :."$<f! +7^@[pc  d  c;K [ CL-,31,7-7%#++   +7"&546323#72654&#""&54632'2654&#"KTgPLT.Er;[<@8/0:A4KTgPMS.E,?9009A3VKNiVC&F4ET9+9L92:VLNiWB&F54T9+9M91:BN\U@RZF7+U2Jpc[BK[CK[CLSQMKA?;9*$%' +326?3#"&'#"&5467.54632>7#"&54632%>54&#"3267/.'f(4, % (  . +?0g2Va|f dT@Kw_? *  RU&+0=6?([(nLU`$F>6&5%&&4($#(TPWk<"Wh@4TY z  -22#:S9!*Di9L"Xu @sBL # +7>32u#W$%  4 0+.54>7* _w7f^1B%LЏXl#*JBq_Qa 0+7'>54.k _w7f^1B%LЏXl#*JBq_Q G5@2=A3(JWc[O)),))* +#"&/#"&546?#"&546?'.54632'.546327>32RQ C B TS A B   ;Z  Z:  !  ;Z  Z: eq$ )@&rsUZN +3733##7#r636 636c/a]@JG[CL$& +'>7#"&54632 D<$+B) D!&%<2%DR&@UYM +%#73A9{b @[CL   +"&54632<$$ '(@r?L +3#55,,-@*[K[ L +"&54>32'2>54&#"[n+Li>ak'Jl?/P8 FA3R8M oVBuX3nW6s]<91L^-AK.I`1>N #@ YKYL+#7!#3!73Ls66v66'>@;pc[KYL ''+"32#"&54632!73!?>54&$/BpVLg1M`.t=*5]%M?(?"  EU9E-G=6Dn4h27<"++<C@@:Jcc_ [ K[ L53$"$!&#$" +%#"&54632+32>54&+732654&#"32#"&54632mK[=0!?/MF +g]?10?qYKe[P/4[`v?6"0!+>(1*+Y54&#"'!!>32HZ9,.G1?<$D]O>?N]|>7#/#"5C!62.? DHm7s&4A@>!Jpcc[ L('0.'4(4&'$&$+%#"&54>32#"&5467.#">322>54&#"%B_9Y^(OuLH]2$&J<. !\1Lf'@-<6QhG5^E)fZLQ;3%%Db<"(G$:M(42oW5>8!@pqYL+#7!#>7!c+5?fK4U?Wl=9?9??5- s+='@$; Jc[ L0.&$,$+%#"&5467.54>32'>54&#"32>54&/.'&B[5_iD<!8M,Qi64 * ,*G==R93QD#>.?*; 331P9\BE_5"+D.GB0W;aL*-2A6)1 3E'7",-  Q"$4?@<Jc_[K[ L&%.,%4&4&$"$$ +#"&54632#3267#"&54>32'"32>54&EsUHe E,Ud#P6Sg&AV0Vl"=->3(@.DCCY;9"0',TK8\@#^16J,67#"&54632$$ D<$+Bq'() D!&%<2%0+%%7% u-+8Y+"@aUYM +!7!!7!\ -[ //c0+77%0" /-+8O!-9@6pc[BK[CL#")'"-#-&$( +#7>54&#"2#"&54>32"&54632}c7 /I133(G 5F&QX$$*cd&6C%+6""(=)N'(0 9kFV@  76JK'PX@)c  c \CK[?LK1PX@0  pc  c \CK[?L@.  pc  c d[?LYY@HGPNGVHV(%(&%&'$ +#"&7467#"&54>327332>54&#"3267#".54>322>54&#"9;W87'&K'55 6J+.6+3F $>.Wi;.QpAN76YT]2Bwc5<1'% 4%;By\74%9=H=2eP3<.d.(1Qk;K}[KwS,3<=?3^ScSG6IM-:1HU$(0c8@5Jb:K Y;L +7#7333#73'#73 JF,J W p111w119e*E@B J aY:KY;L  * )#! +)73#7!232>54&+ 32>54&# XW aQY]==,MnUt0D*5=pQKp3O4>B1G0M8Bn B30T<#x1<*-4F',-@&@ JK'PX@+pn[BK;K[CL@/pn:K[BK;K[CLY@!  && +"32673#7#"&54>3273#>54&DfB!IVQn4@%f9n{1[Q@^'%84SU|;UfdQN'0wQP31^  ?A0@-Y:KY;L&! +732#!73332>54&# 5jm XOWZR'Ufx0nIS1GMt>UiqK PX@/hpaY:K Y;L@0ppaY:K Y;LY@ +%73!73#7!#7#3#=(2 XW 2( D K11G00egK PX@&haY:KY;L@'paY:KY;LY@  +#3#3!73#7!#F Io XW 2)x111G0@-c@ $ JKPX@-  pa [BK;K[CLKPX@)  pa [BK[;LKPX@-  pa [BK;K[CLK!PX@)  pa [BK[;LK'PX@-  pa [BK;K[CL@1  pa:K [BK;K[CLYYYYY@('&%"  -- +"326?#73##7#"&54>3273#>54&DeB &<(QfNAP' b;qw1YPA^&%80VR|A%A0Zf33U+1kXN20\  ?AC>@;  aY:K  Y  ; L +'3#73#!7#73#3#73!3#XW WB`BW WW WMMW 1G0000111 #@ Y:KY;L +'3#73#3#XW XX 1G001*+@(cY:K[CL#$# +%#7!##"&54632+326sh  XssX9?'" &6J00Kkb6(*0II@F Ja Y :K Y ;L +37#73#3#73#3#73#731@dU NB [bOV XW x0011"11G00 2@/pY:KY;L  +%73!73#7!#?(5 XW  [11G00<@9 J Y :KY;L +3#3#73# 3#73#7WNz WW V^XW XW %011/k11G0:0@- JY:KY;L +3#73## 3#73#V W@W XW 00B11GG(@%[BK[CL  +.54>32'32>54&#"8v{4]Mt2\LTCfE#JTBgF$sW}KwKTXfU};TcQyb:@7a Y:KY;L$! +%!73#732+32>54&# XW jiY:US:V6:E111G0QItG!9M,1;F_#=JT@QA1!Jpc_[BK[ CLIG:8.,'& ## +.54>32326?3#".67'.54632>54&#">?6&#"7v{5]Lt8P3 .# ( 47#&,IP<:=-.KTBgF$  3(sW}Kw:zo]1I$#':I/<WeA?ULR!UZ['TcQyD  !EP>\'2P@M J p  a Y:KY;K[CL20*(''+!%# +%#"&574&+3#73#732326?%32>54&+W 6+4$2bDV XW bdnX)   \)I6;54&#"#"&'#7332654.546327$+0HB:?UfUw_<]&)/W:COTeTlP>T  1<>06>3273326?32>54&#"6$"% 0\1?9%?X39@;.\ $"H;&.,'A-g<4"$/MOSG9w_>I8zH#&dAY\4I32"32>54&?Se[ l*b;;B,KgF#I<'/%*J5! 1?$j1S/AVG?@d>@^o.1%?]m,%7-%6@3Jpn[=K[CL&'$&" +%3#"&54>32#"&5467.#"326X/RBRY 5#;T_$32#73326?32>54&#"5*'!'e2?A%AY48FOL  $"H;&12&A/g<3&'=QQH;w_3232673#"&"7>54&3&D]61CP 9E8-JGeW#:N+ E/(<5@ -JK PX@/hh[BKY =K\GLK PX@0hp[BKY =K\GL@1pp[BKY =K\GLYY@54'$#'$# +##"&5463232>7#737>32#"&5467.#"3AdMU1;$~M K X?)8 (3 iPi,*$(4+'^V($"I=, &6 @ !JKPX@-p=K[=K[CK[GLKPX@)p[=K[CK[GLKPX@-p=K[=K[CK[GLK!PX@)p[=K[CK[GL@-p=K[=K[CK[GLYYYY@('0.'6(6'$#&# +7#"&54>3273#"&54632326'2>54&#"F/6]5?A$?Y3V^ 5H;Xh,-;"3JKPX@,pY:K[=K;K[CLKPX@(pY:K[=K[;L@,pY:K[=K;K[CLYY@ #+%& +%7>54&#"##73>32326?3#"&546r&  #J?0 &IZd/6>"37 -   $ 8*(#a2>Xc%y/!A2-*3s<!% <3)G> %@@=p[7#7#"OH0;#m 2%([^[+-$ )5+ 9T@QJpc Y:K[=K;K[CL987653.,)(%#$%! +3326?>32#"&5467326?3#"&?6&+##zl,6,4* $# % 1%.)31BH[p#3%0$ ,", = C9=+(3,6+>y)(@%pY:K[CL#& +3326?3#"&5467#x  $ 7*)$[; % <3)I*3L* JKPX@3p [=K  Y  =K;K[CLKPX@$p [ =KY;LKPX@3p [=K  Y  =K;K[CLK!PX@(p [ =K;K[CL@3p [=K  Y  =K;K[CLYYYY@LLKJ&+#+)% +>32>32326?3#"&546?>54&#"#>54&#"##77/6=!1- +2;"/6 .   $ 5*(# '  %B7) .JY $C9+ /J~[ױ#C3.$ / <.-'2w7 !% <3'"Be432326?3#"&546?>54&#"*~[8.7@$1; *   $ 5*(# ( &F:, 3+"B4!**6#j5!% <4+Fc27P[$2%(@%[=K[CL  +"&54>32'3267>54&#"QS!?]?6D!9;;(E JKPX@-[=KY=K[CK Y?LKPX@#[=K[CK Y?LKPX@-[=KY=K[CK Y?LK!PX@#[=K[CK Y?LK-PX@-[=KY=K[CK Y?L@+[=KY=K[CK Y?LYYYYY@%#&# +#73#73>32#"&'4&#"32> H[(4]3??&@Y32A Mt-#H;%12&A0,,z+RHPK:w_<7+.;=V^ 4I;Wg- &G@DJ=K[=K [CKY?L &&&# +#73#"&54>3273'2>54&#" \a3^5?A%AY432#"&5467&"#"#Z-,`6"!;7- -I+Qa& 1M_.7E@B5Jpn[=K[CL0.(& 77 +72654.54632#"&5467.#"#".54632*FCQC`D!<, ="(?3326?3#"&5467#"&546?#7[ B<0 2Ha  $ 3)&08?!13 PR 1:T^$& !% ;4$:<$I:%+(5+<+JKPX@ Y=K[=K[CLKPX@#[=K[=K[CLKPX@ Y=K[=K[CLK!PX@#[=K[=K[CL@ Y=K[=K[CLYYYY@++($)& +32>54&'#"&54632#"&546?#7I  0Q9   #EkH>; <\%S!!9Wi/ &33{hG:0%Z#+6@@ 3JKPX@"Y=K[=K[CLKPX@%Y=KY=K[CLKPX@"Y=K[=K[CLK!PX@%Y=KY=K[CL@"Y=K[=K[CLYYYY@ $)%&&$ +#"&7#"&546?#7332>?332>54&'#"&54632#Ca=N,(.46: ?\M 90' ADB $&F5 T3{hG[B9,45"^#+%W!.DR#"K>(:Wi. &3Af@c 4".1Jpn[ =K[ =K[CK[CL@>+$%"+$# +>32#"&546732673#"&/#"&54632>7'.#"#>32/Q5"C1( %,)%( 9U6L2 $0.($RS^'ZY%?3#"&54632326?#"&546?#7U ! A7* 1IhnBS 6GP5*2>$/A JQ 02IV$n;3$h\ =/002+?T@Q%Jpnn[=K[ CL=<:8,*! ?? +".'#"&5467"&/.#"#>32.54632632673886##  :1#% ,8531 $  E2!% ,   /  (*HM  / (+IL0.@+$ J[BK[GL0/! +#";#"&54>54&'7>54&54>3 #N; >8"#!"+5 7H@$*$*(54&+732#H #N; >8"#!"+5 7H@$*$*(3232673#"." +7.3/.+ 5/3/-#1C'3A! *@'pq[=L    +2#"&5>3#"&7>7>%$$% A&'WH*HA*Ce>-@ JK PX@0fpng[K[ LKPX@.rpns[K[ L@,rpnsd[ LYY@ &'&+%3+#7.54>;73#"&5467.#"3260dB*@Q >\;*3C 7%/C*B61JJG\` ]K9mU4`d :,#:QXCM84*B@?pc a[K Y  L*)$#"$# +37>32#"&5467.#"3#!73!7>?#u< bV?E (39 } $0.&%v7%C ,Zf"32654&. ;Y"WX!\9$=]"\Z!\?%>KM<;JJY#W;"'@Y"[]"[@&!9Y#Z4H32#"&5463.#">54&/.'Mf !!J5;T81$;D\E6I*"?1  B&?P9. :BSE!t  ;B3. CF04C?'0.G:)2O6Nf<()>()%.!82'7I9Gf:#WePW3%: U1*8. 3dD@(W[O      +D"&546323"&54632 "!!.')%'l'GgdD@\; /Jc  W   aU cW[O)(CA?>=<9731.-,+(G)G((($ +D4>32#".732>54.#"2653#'#"&5463273#.#"l&Fe??eF&&Fe>?eG&$">X55W>"#>W55W>"(# 0<3273326?32>54&#"!7!3 %I%1/3E(+2.-G  7-$"0" S0' $;=A7,[J09,`7 H0@D)7,BP#+1/$  0+'?'7 /#V!>%b˼ʽh e>K PX@gUYM@sUYMY +!7!#26/r.ENdD: JK!PX@<  h c  c  c dW[OK-PX@=  p c  c  c dW[O@B  p c  c  c U  dW[OYY@NLHFEEB@5321%%$&(" +D4632#".732654&#"#"&/.+3#535#532326='32654&+r|d/P;":Q22S; !fYZahSYf6 `o&2#  %'by 9Q11S<""54&#"#"&54632373J q38$ J646O<^6(_+F+  -9+'9M-IB^+~>J@G6Jpcc[^K[_L=;42.,+)%#! " +4632#"&5&632#32654&+732654&#"#"&K/3>%  VA29   +0!' 2' # V+1,*"4  :D+% 6'8"  + dD@ Gi% +D'7>32yY  vg )$2@/pcY:K[GL&#"$$ +#"&54632#326?#"&54>;#E"2G3733#73_ ,  )XV ^]& ((1!%3@0][^K[[L%$#"  +"&54>32'3267>54&#"!7!>D2I.BB2Jr*%*( @8I@+VD*G@(UF.*."e&*0"]1#{  0+7'7'7'7'7 /#V!>%b#˼ʽM"dD"JK PX@Arr  p  hq a b   U  Z  N@Brr  p  pq a b   U  Z  NY@! ! +D3##73267>733#73##7#?33#37,-e_ ,  )XV ^,: FI,}:Ff& ((UU%M7ndD@c! Jrr   p  ns a  c b  U Y M7654.,(&! +D3##73267>733#73#?>54&#"#"&54632373,-l_ ,  )XV ^ q38$ J646O<^Ff& (((_+F+  -9+'9M-IB<>BMPdD@ 6PJK PX@Opp h q cccc U Z   N@Ppp p q cccc U Z   NY@$ONMLKJHGFEDCBA@?=;42.,+)%#! " +D4632#"&5&632#32654&+732654&#"#"&%3#%##7#?33#37qK/3>%  VA29   +0!' 2' # ,-),: FI,}:V+1,*"4  :D+% 6'8"  hF^UU%!a +;@8pd_[=L*("    +2#"&54646?33267.54632#"&1$%zc7 `b36%F"7H%NV&'cvnoI+5!"(=)L^q B@?  Jr  b:K Y;L   % +.54632#7333#73'#73f  n JF,J W p$ XF11w119^i B@? Jr  b:K Y;L   % +'7>32#7333#73'#735  j JF,J W p2T 11w119^mE@B Jr  b:K Y;L +''73#7333#73'#73U^6 JF,J W pQQr11w119zf/2b@_2Jcc  b:K Y ;L 10 / /.-,+*)('&%$#"!  +"#7>32326?3#"&/.#7333#73'#73 '6$   ' +%#  JF,J W p23,  ",+ 11w119dX '*[@X* J c  b:K Y;L )(''&%$#"!      +"&546323"&54632#7333#73'#73j#!#"p JF,J W p%%&$;11w119_a&)?@<)  J  c  b:KY;L('%#&" +46323#73'#3#73.732654&#"3^E-/B2%+J W qU Ju*))'!*3;;3,91111a 2""))""''7JK PX@:h  pa  aY:K Y ;L@;p  pa  aY:K Y ;LY@ +7#73#7!#7#3#!73!737#73 Su 3(A K>(3 W3ެR111G00獾11@;KPX@2 JKPX@2 J@2 JYYK PX@=  pnh  [  BK;K[CK[?LKPX@>  pnp  [  BK;K[CK[?LKPX@:  pnp  [  BK[;K[?LK'PX@>  pnp  [  BK;K[CK[?L@B  pnp :K  [ BK;K[CK[?LYYYY@65430.('&%! ;; +"32673#7#"&'732654&'7.54>3273#>54&DfB!IVQn4@%^6$*):52 ,"-5cl1[Q@^'%84SU|;UfdQN%/L!!)3 ) opQP31^  ?Aqq  JK PX@4rh  p  aY:K Y;L@5rp  p  aY:K Y;LY@  % +.5463273!73#7!#7#3#>  =(2 XW 2( D K$ XF1G00qi JK PX@4rh  p  aY:K Y;L@5rp  p  aY:K Y;LY@  % +'7>3273!73#7!#7#3#  =(2 XW 2( D K2T 1G00qm@ JK PX@4rh  p  aY:K Y;L@5rp  p  aY:K Y;LY@ +''7373!73#7!#7#3#7^6P=(2 XW 2( D KQQrč1G00qX +K PX@;   h  pc  a Y:K Y;L@<   p  pc  a Y:K Y;LY@+ ++*)('&%$#"!      +"&546323"&5463273!73#7!#7#3#M#!#"=(2 XW 2( D K%%&$;1G00q /@, JrY:KY;L% +.546323#73#3#  PXW XX $ XFG001i /@,JrY:KY;L% +'7>323#73#3#  VXW XX 2T G001m2@/JrY:KY;L +''733#73#3#^6XW XX QQrG001X #E@B  cY:K Y ; L #"!     +"&546323"&546323#73#3##!#"MXW XX %%&$;G001!@@= a Y:KY;L! &! +73#732#!733#32>54&#I JDW 5jm XLD LYZR'UfM,0nIS1+,Mt>Ui:f3\@Y+" Jcc Y:K  Y  ; L3210/.-,*)('&%$#!   +"#7>32326?3#"&/.3#73## 3#73# '6$   ' +%# ֗V W@W XW23,  ",+  00B11GGq +4@1 Jr[BK[CL (&   % +.54632.54>32'32>54&#"h  v{4]Mt2\LTCfE#JTBgF$$ X sW}KwKTXfU};TcQyGi +4@1Jr[BK[CL (&   % +'7>32.54>32'32>54&#"6  v{4]Mt2\LTCfE#JTBgF$2T sW}KwKTXfU};TcQyGm&7@4Jr[BK[CL#! +''73.54>32'32>54&#"X^6v{4]Mt2\LTCfE#JTBgF$QQrsW}KwKTXfU};TcQyGf/?K@H cc [BK[ CL! <:42)' /!/  +"#7>32326?3#"&/..54>32'32>54&#" '6$   ' +%# lv{4]Mt2\LTCfE#JTBgF$23,  ",+ sW}KwKTXfU};TcQyGX '7D@A c[BK[ CL 42,*!''    +"&546323"&54632.54>32'32>54&#"l#!#"v{4]Mt2\LTCfE#JTBgF$%%&$sW}KwKTXfU};TcQy^ 0+%''7'77ii(gk$$F'1@. J[BK[CL$"  +.54>32'.#"%4&'32>7u|5]Ms2\z;)BgE% ?+CgE#sW}KwKT3Qy5/U}f3q %3@0 JrY:K[CL##% +.546323#3267#73##"&7#  , VY!5cek]V O](Y(ZN$ XC0zoY00Qf3i %3@0JrY:K[CL##% +'7>323#3267#73##"&7#w   VY!5cek]V O](Y(ZN2T z0zoY00Qf3m 6@3JrY:K[CL## +''733#3267#73##"&7#^6] VY!5cek]V O](Y(ZNQQr0zoY00Qf3X 1K@H  c Y:K [ C L 10-+('&%$#      +"&546323"&546323#3267#73##"&7##!#"' VY!5cek]V O](Y(ZN%%&$N0zoY00Qei @@=JrY :KY;L % +'7>32##73#3!737#7-   XNS K7e f7^J 2T z0C0011y0@nKPX@(   aaY:KY;L@&a   aaY;LY@"$! +#7!#32+3!7332654&#o  WTjj\ n XMUse:F01eNIi{x11fM1:4kJK PX@/hc[ BKY;K\CLKPX@0pc[ BKY;K\CLKPX@(pc[ BK\CLKPX@0pc[ BKY;K\CLK!PX@2pc[ BKZ;K\CL@0pc[ BKY;K\CLYYYYY@10/.+)#!  44 +2#"&?332>54&+732>54&#"#73>EMKK674L0<< ( #" 1"9D##(:%$*:LEstA3273326?32>54&#"  P6$"% 0\1?9%?X39@;.\ $"H;&.,'A-n   Y<4"$/MOSG9w_>I8zH#&dAY\4I32#"&5467#"&54>3273326?32>54&#"yY  N6$"% 0\1?9%?X39@;.\ $"H;&.,'A-vg <4"$/MOSG9w_>I8zH#&dAY\4I3273326?32>54&#"T9t6$"% 0\1?9%?X39@;.\ $"H;&.,'A-#ki<4"$/MOSG9w_>I8zH#&dAY\4I32326?3#"&/.#"&5467#"&54>3273326?32>54&#" # (! # %$ 6$"% 0\1?9%?X39@;.\ $"H;&.,'A-~*()  +&-  <4"$/MOSG9w_>I8zH#&dAY\4I GE>M?M=<9710-+%#     +"&546323"&54632#"&5467#"&54>3273326?32>54&#" "!!86$"% 0\1?9%?X39@;.\ $"H;&.,'A-.')%'9<4"$/MOSG9w_>I8zH#&dAY\4IGE>M?M=<&&'$$$$" +4632#"&732654&#"#"&5467#"&54>3273326?32>54&#"=(*;=((=)   6$"% 0\1?9%?X39@;.\ $"H;&.,'A-s-55-.66.!!! <4"$/MOSG9w_>I8zH#&dAY\4I32>3232673"7>54&26?#"FT "gA27iE -7%73B"6F "Z2AJ[or/3/F0\@^cND$-3_9Hd MCJF8(ZH1FB  0!.&(,=1CP"9E8-JGiSD1#xTH9<-:@-JK PX@5pnh[=K[CK[?L@6pnp[=K[CK[?LY@ &'$(%& +%3#"&'732654&'7.54>32#"&5467.#"326X/O<%*):52 ,"-6EJ 5#;T_$3232673#"&"7>54&  P&D]61CP 9E8-JGeW#:N+ E/(3 '3p@ -JKPX@#pBK[=K[CL@#rp[=K[CLY@)((3)3"+)% +'7>324>3232673#"&"7>54&yY  &D]61CP 9E8-JGeW#:N+ E/(3".r@(JKPX@#p:K[=K[CL@#rp[=K[CLY@$##.$."+% +''734>3232673#"&"7>54&T9&D]61CP 9E8-JGeW#:N+ E/(3 3?9$JK!PX@,p  [3232673#"&"7>54& "!!&D]61CP 9E8-JGeW#:N+ E/(>  %c JKPX@"pBKY=K[CL@"rpY=K[CLY@ #&% +.54632#73326?3#"&5467w  PB[Y  $ 8*(# n   b+C $% <3&"B>; %cJKPX@"pBKY=K[CL@"rpY=K[CLY@ #&% +'7>32#73326?3#"&5467yY  [Y  $ 8*(# vg +C $% <3&"B.I f@ JKPX@"p:KY=K[CL@"rpY=K[CLY@ #& +''73#73326?3#"&5467IT9`[Y  $ 8*(# #ki+C $% <3&"B:Y 1K!PX@+p  [32.''7.'37'2>54.#"TQ!=U3%6(a S3J&a T-9"?\5*B-(,?(/ dK8nW6!?"#2(#%9~F7t^=*>Ye&';Wd(89*%S% JKPX@D   pc[BK [=K Y=K ;K [ C LKPX@:   pc[BK [=K ;K [ C LKPX@D   pc[BK [=K Y=K ;K [ C LK!PX@:   pc[BK [=K ;K [ C LK-PX@D   pc[BK [=K Y=K ;K [ C L@Kp   pc[BK [=K Y=K ;K [ C LYYYYY@'  S SNLA?<;86+)$#"!  +"#7>32326?3#"&/.#73>32326?3#"&546?>54&#"F# (! # %$ ~[8.7@$1; *   $ 5*(# ( &F:, 3~*()  +&-  +"B4!**6#j5!% <4+Fc27P[$2 1\ JKPX@BK[=K[CL@r[=K[CLY@ +)   % +.54632"&54>32'3267>54&#"  PQS!?]?6D!9;;2 1\JKPX@BK[=K[CL@r[=K[CLY@ +)   % +'7>32"&54>32'3267>54&#"yY  QS!?]?6D!9;;2,_@ JKPX@:K[=K[CL@r[=K[CLY@&$ +''73"&54>32'3267>54&#"T9QS!?]?6D!9;;2/EK-PX@+c [BK [=K[ CL@2pc [BK [=K[ CLY@! ?=42)' /!/  +"#7>32326?3#"&/."&54>32'3267>54&#"# (! # %$ 0QS!?]?6D!9;;2 '=sK!PX@$ [32'3267>54&#" "!!QS!?]?6D!9;;no!( <@9caW[O    +"&54632!7!"&54632d#$Z #$&'/&'2-1@.#"J[=K[CL'%  +2#"&54>.#"%4&'3267>+UQ!?_?C& >x@ 0JKPX@&pBKY =K[CL@&rpY =K[CLY@ > >)#&+% +.5463232>?3326?3#"&5467#"&546?#7  Pv[ B<0 2Ha  $ 3)&08?!13 PR n   71:T^$& !% ;4$:<$I:%+(5+C& >x@ 0JKPX@&pBKY =K[CL@&rpY =K[CLY@ > >)#&+% +'7>3232>?3326?3#"&5467#"&546?#7yY  [ B<0 2Ha  $ 3)&08?!13 PR vg 1:T^$& !% ;4$:<$I:%+(5+C&9z@ +JKPX@&p:KY =K[CL@&rpY =K[CLY@99)#&' +''7332>?3326?3#"&5467#"&546?#7T9[ B<0 2Ha  $ 3)&08?!13 PR #ki1:T^$& !% ;4$:<$I:%+(5+C& J< JK!PX@/  p  [?3326?3#"&5467#"&546?#7 "!![ B<0 2Ha  $ 3)&08?!13 PR .')%'W1:T^$& !% ;4$:<$I:%+(5+ ?@1*JKPX@.pBKY =K[CK[GL@.rpY =K[CK[GLY@ ? ?''$#+% +'7>3232>?3#"&54632326?#"&546?#7yY  U ! A7* 1IhnBS 6GP5*2>$/A JQ vg 02IV$n;3$h\ =/002+(H@E JY:K[=K[CK Y?L%#&# +#73#73>32#"&'4&#"32> H[a4]3??&@Y32A Nt-#H;%12&A0,,K+RHPK:w_<8..;=V^ 4I;Wg K@ = 6JK!PX@7  p  [?3#"&54632326?#"&546?#7 "!!U ! A7* 1IhnBS 6GP5*2>$/A JQ .')%'W02IV$n;3$h\ =/002+oBB@? Ja  b:K Y;L +!!#7333#73'#73] JF,J W pB2!11w119-b)9  JKPX@-  pa=K [=K [CLKPX@)  pa [=K [CLKPX@-  pa=K [=K [CLK!PX@)  pa [=K [CL@-  pa=K [=K [CLYYYY@+*31*9+9&&'# +3##"&5467#"&54>3273326?32>54&#"6$"% 0\1?9%?X39@;.\ $"H;&.,'A-b/4<4"$/MOSG9w_>I8zH#&dAY\4I+ JKPX@3  pc:K=K [=K [CLKPX@/  pc:K [=K [CLKPX@3  pc:K=K [=K [CLK!PX@/  pc:K [=K [CL@3  pc:K=K [=K [CLYYYY@;:CA:I;I98&&''"% +332673#"&546#"&5467#"&54>3273326?32>54&#"$%8%EB+, 6$"% 0\1?9%?X39@;.\ $"H;&.,'A- &1IA(* <4"$/MOSG9w_>I8zH#&dAY\4I3273326?33267'2>54&#" *,6D< 1[1?9%?X38@;.\ $ #:M& "H;&.,'A- %".L%".KOSG9w_>H7xH#& *2 %G# AY\4I32"32673#7#"&54>3273#>54&@  DfB!IVQn4@%f9n{1[Q@^'%84S2T U|;UfdQN'0wQP31^  ?A- 1q@ $JKPX@'p[=K[BK[CL@%pc[=K[CLY@ &'$&"% +'7>323#"&54>32#"&5467.#"326yY  ;/RBRY 5#;T_$3273#>54&J^6ZDfB!IVQn4@%f9n{1[Q@^'%84SQQrU|;UfdQN'0wQP31^  ?A-,y@ JKPX@)pn:K[=K[CL@)rpn[=K[CLY@ &'$&" +''733#"&54>32#"&5467.#"326T9/RBRY 5#;T_$3273#>54&%$@DfB!IVQn4@%f9n{1[Q@^'%84S%%uU|;UfdQN'0wQP31^  ?A- 1O@L$Jpn[32#"&5467.#"3264## /RBRY 5#;T_$3273#>54&\^6DfB!IVQn4@%f9n{1[Q@^'%84SWQQreU|;UfdQN'0wQP31^  ?A-,C@@JHrpn[=K[CL&'$&" +77#3#"&54>32#"&5467.#"326T9U/RBRY 5#;T_$54&#7^6 5jm XOWZR'UfWQQrl0nIS1GMt>Ui-:JU@* JKPX@4  pY:K[BK [=K [CLKPX@6  p[BK[BK [=K [CLKPX@4  pY:K[BK [=K [CLK!PX@6  p[BK[BK [=K [CL@4  pY:K[BK [=K [CLYYYY@<;DB;J7#"&54632#"&5467#"&54>32#73326?32>54&#"a #95*'!'e2?A%AY48FOL  $"H;&12&A/!%".Kg<3&'=QQH;w_54&#I JDW 5jm XLD LYZR'UfM,0nIS1+,Mt>Ui-x/?^@[. J  p  aY:K [ =K [CL10970?1?//,*'#& +737#733#326?3#"&5467#"&54>3272>54&#"T K "P Nd  $ 5*'!'e2?A%AY48F0"H;&12&A/ %I.w%A#& <3&'=QQH;w_3232673#"&"7>54&&D]61CP 9E8-JGeW#:N+ E/(qd%K PX@=r   h  pc  a Y:K Y;L@>r   p  pc  a Y:K Y;LY@%%$#"! "# +332673#"&54673!73#7!#7#3#9)!&*A)PE66^=(2 XW 2( D Kd "!')E<0+֍1G003/;G@D5 Jpc:K [=K[CL100;1;"+)"% +332673#"&5464>3232673#"&"7>54&$%8%EB+,&D]61CP 9E8-JGeW#:N+ E/(q[ K PX@8 h  p c  aY:K Y;L@9  p  p c  aY:K Y;LY@#       +"&5463273!73#7!#7#3#%$6=(2 XW 2( D K%%>1G003 '3L@I-Jp[3232673#"&"7>54&2##&D]61CP 9E8-JGeW#:N+ E/(q&׵  JK PX@8h  p aY:KY;K [ ? LK)PX@9p  p aY:KY;K [ ? L@6p  p a _Y:KY;LYY@%# +467!73#7!#7#3#!733267#"&PHL XW 2( D K=(2BQ& *,7/S%1G00獾#I# 1 %31=v@ 71JK'PX@(p[=K[CK[?L@%p_[=K[CLY@322=3=(+&E" +#"&5467"#"&54>32326733267"7>54& "%3@; OW&D]61CP 9E8-1@$O" ]";N+ E/(qmHK PX@4rh  p  aY:K Y;L@5rp  p  aY:K Y;LY@ +77#73!73#7!#7#3#7^6=(2 XW 2( D KWQQrM1G003".B@?(JHrp[=K[CL$##.$."+% +77#4>3232673#"&"7>54&T9&D]61CP 9E8-JGeW#:N+ E/(@m4@+ JKPX@2r  pa [ BK;K[CLKPX@.r  pa [ BK[;LKPX@2r  pa [ BK;K[CLK!PX@.r  pa [ BK[;LK'PX@2r  pa [ BK;K[CL@6r  pa :K [BK;K[CLYYYYY@/.-,)'!44 +''73"326?#73##7#"&54>3273#>54&H^6ZDeB &<(QfNAP' b;qw1YPA^&%80VQQrR|A%A0Zf33U+1kXN20\  ?A -=x@(JKPX@2p:K=K[=K [CK[GLKPX@.p:K[=K [CK[GLKPX@2p:K=K[=K [CK[GLKPX@.p:K[=K [CK[GLK!PX@.rp[=K [CK[GL@2rp=K[=K [CK[GLYYYYY@/.75.=/='$#&$ +''737#"&54>3273#"&54632326'2>54&#"T9C/6]5?A$?Y3V^ 5H;Xh,-;@d?@ 6 (JKPX@6 c  aa [  BK ;K [ C LKPX@2 c  aa [  BK [  ; LKPX@6 c  aa [  BK ;K [ C LK!PX@2 c  aa [  BK [  ; LK'PX@6 c  aa [  BK ;K [ C L@: c  aa :K [ BK ;K [ C LYYYYY@:98742,*'&%$#"! ??"# +332673#"&546"326?#73##7#"&54>3273#>54&L)!&*A)PE66RDeB &<(QfNAP' b;qw1YPA^&%80Vd "!')E<0+R|A%A0Zf33U+1kXN20\  ?A :Jk@ # 5 JKPX@;  pc:K=K [=K  [CK [GLKPX@7  pc:K [=K  [CK [GLKPX@;  pc:K=K [=K  [CK [GLK!PX@7  pc:K [=K  [CK [GL@;  pc:K=K [=K  [CK [GLYYYY@<;DB;J3273#"&54632326'2>54&#"$%8%EB+,W/6]5?A$?Y3V^ 5H;Xh,-;@[ 9@ 0 "JKPX@6  p  ca  [  BK;K[CLKPX@2  p  ca  [  BK[;LKPX@6  p  ca  [  BK;K[CLK!PX@2  p  ca  [  BK[;LK'PX@6  p  ca  [  BK;K[CL@:  p  ca :K  [ BK;K[CLYYYYY@# 4321.,&$!  9 9   +"&54632"326?#73##7#"&54>3273#>54&%$ADeB &<(QfNAP' b;qw1YPA^&%80V%%tR|A%A0Zf33U+1kXN20\  ?A  2Be@   -JKPX@8p [3273#"&54632326'2>54&#"Q##&/6]5?A$?Y3V^ 5H;Xh,-;@-B@$ 2 JKPX@4  pa _ [BK;K[CLKPX@0  pa _ [BK[;LKPX@4  pa _ [BK;K[CLK!PX@0  pa _ [BK[;LK'PX@4  pa _ [BK;K[CL@8  pa _:K [BK;K[CLYYYYY@<:64('&%"  -- +"326?#73##7#"&54>3273#>54&7>7#"&54632DeB &<(QfNAP' b;qw1YPA^&%80V(2 !%9R|A%A0Zf33U+1kXN20\  ?Ae&,!$2) ;KN@$ 6JKPX@5pc=K [=K [CK[GLKPX@1pc [=K [CK[GLKPX@5pc=K [=K [CK[GLK!PX@1pc [=K [CK[GL@5pc=K [=K [CK[GLYYYY@=32#"&54>7#"&54>3273#"&54632326'2>54&#"(2 !%9E/6]5?A$?Y3V^ 5H;Xh,-;Cm"N@KJr  aY:K  Y ; L"!  +''733#73#!7#73#3#73!3#^6XW WB`BW WW WMMW QQrG0000111"S:@ JKPX@1rpY:K[=K;K[CLKPX@-rpY:K[=K[;L@1rpY:K[=K;K[CLYY@ #+%' +''737>54&#"##73>32326?3#"&546p^6S&  #J?0 &IZd/6>"37 -   $ 8*(#QQrka2>Xc%y/!A2-*3s<!% <3)GC#'V@S  aa Y:K  Y ; L'&%$#"!  +'3#737#73#!7#73#3#3#73!3#!7!XpS R!W W d W W!\ [pW WMKU  d1+z00zz00z+^111S";ε JKPX@6 paY:K[=K;K [ C LKPX@2 paY:K[=K [ ;L@6 paY:K[=K;K [ C LYY@7521.,%& +%7>54&#"##737#733#>32326?3#"&546s&  #K@0 %H_ ]Zu t;/7@"37 -   $ 8*(#a2>Xc% %I.w%"A3-*3s<!% <3)Gf+L@I cc Y:K  Y ; L+*)('&%$#"!   +"#7>32326?3#"&/.3#73#3# '6$   ' +%# XW XX 23,  ",+ G001>_9K-PX@2  pc [BKY=K [ C L@9p  pc [BKY=K [ C LY@42/.+)#"!   +"#7>32326?3#"&/.#73326?3#"&5467# (! # %$ [Y  $ 8*(# ~*()  +&-  +C $% <3&"BB-@*aY:KY;L +!!3#73#3#XW XX B2!G001>Db2@/paY=K[CL#& +3##73326?3#"&5467WY[Y  $ 8*(# b/+C $% <3&"Bd6@3rcY:K Y ; L"# +332673#"&5463#73#3#)!&*A)PE66XW XX d "!')E<0+G001>k-:@7pc:KY=K[CL#&"% +332673#"&546#73326?3#"&5467v$%8%EB+,/[Y  $ 8*(#  &1IA(* +C $% <3&"BbJK)PX@"Y:KY;K[?L@_Y:KY;LY@ %% +467#73#73#3#3267#"&41g XW XX `32& *,6+R$1G001!K# 1 ( 88JK)PX@/pn[G001> (@%pY=K[CL#& +#73326?3#"&5467[Y  $ 8*(# +C $% <3&"B' *A@> a cY:K [ C L)'$# +3#73#3##7!##".54632+3264XJW XJX bf  Xc%w2H-%#  A;Qs\0011~00z$,+0'e>C 1MB JK PX@?p  h[7#7"!#"[Y  $ 8*(# ΐOH0;#m 2%(%(+C $% <3&"B^[+-$ )5+@m#:@7JrcY:K[CL#$# +''73#7!##"&54632+326@^6sh  XssX9?'" &6JQQrU00Kkb6(*0IUM"@ JK PX@"h:KY=K\GLKPX@#p:KY=K\GL@#rpY=K\GLYY@""'$$ +''73#"&5463232>7#7MT9OH0;#m #ki^[+-$ )5+1X@U !Ja_ Y :K Y ;L+)%# +37#73#3#73#3#73#737>7#"&546321@dU NB [bOV XW (2 !%9x0011"11G00l&,!$2) 9Nc@`> Jpc _ Y:K[=K;K[CLHFB@987653.,)(%#$%! +3326?>32#"&5467326?3#"&?6&+##7>7#"&54632zl,6,4* $# % 1%.)31BH[(2 !%9p#3%0$ ,", = C9=+(3,6+>yk&,!$2)i >@;JrpY:KY;L  % +'7>3273!73#7!#  ?(5 XW  [2T 1G00)kK %4@1JrpY:K[CL#&% +'7>323326?3#"&5467#G  ⢔  $ 7*)$[&F ]; % <3)I "C@@Jp_Y:K Y;L  +%73!73#7!# 7>7#"&54632?(5 XW  [(2 !%911G00&,!$2).7@4Jp_Y:K[CL$'#& +3326?3#"&5467#7>7#"&54632x  $ 7*)$[p(2 !%9; % <3)Ik&,!$2) D@AJpY:K[BK Y;L  $& +7>7#"&5463273!73#7!# #9;?(5 XW  [!%".K/1G00),JKPX@'pY:K[BK[CLKPX@)p[BK[BK[CLKPX@'pY:K[BK[CLK!PX@)p[BK[BK[CL@'pY:K[BK[CLYYYY@ #&$& +7>7#"&54632'3326?3#"&5467#& #9ꢔ  $ 7*)$[!%".K; % <3)I C@@p cY:K Y;L  +%73!73#7!#%"&54632>(4 XW  [%%$11G00%%)]%9@6pcY:K[CL!%%#& +3326?3#"&5467#"&54636x  $ 7*)$[!"; % <3)I$&;@8JpY:KY;L +%!73?#7!#7!75 WHklEW  \> P ?1 13200<3=ԓ!0@-!JpY:K[CL#* +?#737326?3#"&546? OR[VW Z0  $ 7*)$#/$/,2,; % <3)Iv:i ;@8Jr Y:KY;L% +'7>323#73## 3#73#]  )V W@W XW2T z 00B11G*% ?KPX@ JKPX@ JKPX@ JK!PX@ J@ JYYYYKPX@4pBK[=KY=K ;K[CLKPX@*pBK[=K ;K[CLKPX@4pBK[=KY=K ;K[CLKPX@*pBK[=K ;K[CLK!PX@*rp[=K ;K[CL@4rp[=KY=K ;K[CLYYYYY@ ? ?+#+%% +'7>32#73>32326?3#"&546?>54&#"yY  R~[8.7@$1; *   $ 5*(# ( &F:, 3vg +"B4!**6#j5!% <4+Fc27P[$:(?@<  J _Y:KY;L"  +3#73## 3#73#7>7#"&54632V W@W XWL(2 !%9 00B11Gl&,!$2)*%3HC@ 8 JKPX@6p  _[=KY=K ;K[CLKPX@,p  _[=K ;K[CLKPX@6p  _[=KY=K ;K[CLK!PX@,p  _[=K ;K[CL@6p  _[=KY=K ;K[CLYYYY@B@<:33+#+% +3#73>32326?3#"&546?>54&#"7>7#"&54632*~[8.7@$1; *   $ 5*(# ( &F:, 3 (2 !%9+"B4!**6#j5!% <4+Fc27P[$&,!$2):m>@; JHr Y:KY;L +77#3#73## 3#73#u^6ӗV W@W XWWQQr< 00B11G*4:9@ JHKPX@4rp[=KY=K ;K[CLKPX@*rp[=K ;K[CLKPX@4rp[=KY=K ;K[CLK!PX@*rp[=K ;K[CL@4rp[=KY=K ;K[CLYYYY@::+#+% +77##73>32326?3#"&546?>54&#"T9~[8.7@$1; *   $ 5*(# ( &F:, 3ki+"B4!**6#j5!% <4+Fc27P[$*%FP@ JKPX@9p[BK[=KY=K  ;K[CLKPX@/p[BK[=K  ;K[CLKPX@9p[BK[=KY=K  ;K[CLK!PX@/p[BK[=K  ;K[CL@9p[BK[=KY=K  ;K[CLYYYY@FF+#+%$& +7>7#"&54632#73>32326?3#"&546?>54&#"d #9v~[8.7@$1; *   $ 5*(# ( &F:, 3!%".K+"B4!**6#j5!% <4+Fc27P[$(:*V@S J c  _Y:KY;L%$  ** +267 3#73#73#73##"&54632#*'a5EW XW V W^X9=("!&RTD11G000km6()1*5H@ "JK PX@-h[=KY=K;K\GLKPX@.p[=KY=K;K\GLKPX@$p[=K;K\GLKPX@.p[=KY=K;K\GLK!PX@$p[=K;K\GL@.p[=KY=K;K\GLYYYYY@ *'$(% +7##73>32#"&5463232>7>54&#"3J~[8.7@$1; kLH/<! j&F:,+"B4!**5$^[*,& )6j17P[GB#2@/a[BK[CL   +!!.54>32'32>54&#"U v{4]Mt2\LTCfE#JTBgF$B2sW}KwKTXfU};TcQy2b)2@/a[=K[CL#!  +3#"&54>32'3267>54&#" QS!?]?6D!9;;Gd!1:@7rc[BK[CL.,&$!!"# +332673#"&546.54>32'32>54&#"e)!&*A)PE66,v{4]Mt2\LTCfE#JTBgF$d "!')E<0+sW}KwKTXfU};TcQy2#9:@7c:K[=K[CL31(&##"% +332673#"&546"&54>32'3267>54&#"$%8%EB+,QS!?]?6D!9;;G '7<@9 Jrr[BK[CL42,*!''*% +'7>32'7>32.54>32'32>54&#"     v{4]Mt2\LTCfE#JTBgF$Uj  L'@sW}KwKTXfU};TcQy2 '=@  JK PX@#p32'7>32"&54>32'3267>54&#"DmN    QS!?]?6D!9;;@!xK PX@4  hfpaY:K Y;LKPX@5  hnpaY:K Y;LKPX@0ppa Y:K Y;LKPX@5  hnpaY:K Y;LK!PX@0ppa Y:K Y;L@5  hnpaY:K Y;LYYYYY@!!!$ +74>3!#7#3#!73!"&3#"@3dc3(D K>(3K}*ZRvI"oWwH0獾N@Kr>Yb2)5IF@C/Jp [=K[CL+*BA*5+5))-$&$" +%#"&'#"&54>32>323267"7>54&67>56&'&\E8M`6QS!?]<3N"`3BI3L0p-3/F1 9- cMF%</ !54" $JG5/-7cN6oY8.301=1%0  9E8-+!7K*71#s5989R(s.8R\i 3>Z@W( Jr   p  a Y:KY;K[CL ><64 3 3+!%(% +'7>32#"&574&+3#73#732326?%32>54&+  A 6+4$2bDV XW bdnX)   \)I6;32#73>32#"&5467&"#"#yY  Z-,`6"!;7- -Ivg +Qa& 1M_.\'2G_@\ 7 J p  a _ Y:KY;K[CLA?;920*(''+!%# +%#"&574&+3#73#732326?%32>54&+7>7#"&54632W 6+4$2bDV XW bdnX)   \)I6;32#"&5467&"#"#7>7#"&54632Z-,`6"!;7- -IS(2 !%9+Qa& 1M_.&,!$2)\m.9]@Z# JHr   p  a Y:KY;K[CL971/..+!%$ +77##"&574&+3#73#732326?%32>54&+^6 6+4$2bDV XW bdnX)   \)I6;32#"&5467&"#"#T9cZ-,`6"!;7- -Ikig+Qa& 1M_.$i ;N@K:"Jpa[ BK;K[CL ; ;)%)%% +'7>32#>54&#"#"&'#7332654.546327  ;+0HB:?UfUw_<]&)/W:COTeTlP>T2T u  1<>06>322654.54632#"&5467.#"#".54632iyY  *FCQC`D!<, ="(54&#"#"&'#7332654.546327^6z+0HB:?UfUw_<]&)/W:COTeTlP>TQQr  1<>06>@ <JKPX@*pn:K[=K[CL@*rpn[=K[CLY@75/-$">> +''732654.54632#"&5467.#"#".54632T9*FCQC`D!<, ="(54&#"#"&'732654&'7.'#7332654.546327$+0HB:?UfUr\$*):52 ,"-51K&)/W:COTeTlP>T  1<>06>54&#"#"&'#7332654.546327^6+0HB:?UfUw_<]&)/W:COTeTlP>TWQQr7  1<>06>R@O <JHrpn[=K[CL75/-$">> +77#2654.54632#"&5467.#"#".54632T99*FCQC`D!<, ="(7#"&54632{ bG(6@6( a (2 !%91GȘ1&,!$2)]O4z$ JK PX@,fp  _Y=K[CL@+rp  _Y=K[CLY@.,'#% +7326?3#"&546?#73733#7>7#"&54632   $ 5*)% GSR$G$jh(2 !%98 % <3* C+xx+8&,!$2)emA@>HrpY:KY ;L +77#73##7!#7#3P^6 bG(6@6( a WQQr1GȘ1?2JK PX@0hp[BK Y=K[CL@1pp[BK Y=K[CLY@21#*$& +7>7#"&54632326?3#"&546?#73733#. #9   $ 5*)% GSR$G$jh!%".K8 % <3* C+xx+eD@Ap aY:K  Y  ; L +373#73##7!#7#3#3| bL DG(6@6( D~ ~La 1,Ș,1"]O'}K PX@/fp  a Y=K[CL@.rp  a Y=K[CLY@'&%$#"#% +7326?3#"&546?#737#73733#3#  # 5*(# M L%SR$D#lk%n l8 % <3* CK%}+xx+}%f3f9R@Occ Y :K [ C L98530/.-,+(&#"!   +"#7>32326?3#"&/.3#3267#73##"&7# '6$   ' +%#  VY!5cek]V O](Y(ZN23,  ",+ 0zoY00QC&RD JK-PX@6  pc[BK Y =K [  C L@=p  pc[BK Y =K [  C LY@'  R RQPJH?=:964.-(&  +"#7>32326?3#"&/.32>?3326?3#"&5467#"&546?#7%# (! # %$ 4[ B<0 2Ha  $ 3)&08?!13 PR ~*()  +&-  1:T^$& !% ;4$:<$I:%+(5+f3B2@/a Y:K[CL## +!!3#3267#73##"&7# VY!5cek]V O](Y(ZNB2h0zoY00QC&b6D@A(JpaY =K[CL66)#&' +3#32>?3326?3#"&5467#"&546?#7[ B<0 2Ha  $ 3)&08?!13 PR b/\1:T^$& !% ;4$:<$I:%+(5+f3d+<@9rc Y:K [ C L+*'%"!#"# +332673#"&5463#3267#73##"&7#)!&*A)PE66 VY!5cek]V O](Y(ZNd "!')E<0+0zoY00QC&FN@K8 J  pc:K Y =K[ CLFFED><#&+"% +332673#"&54632>?3326?3#"&5467#"&546?#7$%8%EB+,[ B<0 2Ha  $ 3)&08?!13 PR  &1IA(* 1:T^$& !% ;4$:<$I:%+(5+f3 1>@;cc Y:K [ C L10-+('#$$$" +4632#"&732654&#"3#3267#73##"&7#C,.@B,,C)''& ' VY!5cek]V O](Y(ZN?1;;13;;3"''"!&%0zoY00QC& JP@M< J  pcc Y =K[ CLJJIHB@#&($$$" +4632#"&732654&#"32>?3326?3#"&5467#"&546?#7=(*;=((=)   *[ B<0 2Ha  $ 3)&08?!13 PR s-55-.66.!!! 1:T^$& !% ;4$:<$I:%+(5+f3 1<@9 Jrr Y:K[CL10##*% +'7>32'7>323#3267#73##"&7#       VY!5cek]V O](Y(ZNUj  L'@m0zoY00QC& J*@  <JK PX@.pp32'7>3232>?3326?3#"&5467#"&546?#7jmN    [ B<0 2Ha  $ 3)&08?!13 PR cLa  "6T  u1:T^$& !% ;4$:<$I:%+(5+f3,f, JK)PX@#Y:K[CK [?L@ _Y:K[CLY@*(#" +#"&5467.7#73#3267#73#3267k *,6@=W(ZN VY!5cek]V O]$zf9D&  %".K%Q00zoY00 #D" C&Ey@ EJK)PX@)pY=K[CK[?L@&p_Y=K[CLY@ )&&/" +#"&5467.5467#"&546?#7332>?3326?33267 *,6E< 07? 13 PR [ B<0 2Ha  $ $:L&  %"-N%7>$H:$+(5+1:T^$& !% +3 %F# pimA@> Jr Y :K;L +''733##73####73##^6 W)W I69$J X.\QQr000y006GKPX@ :JKPX@:JKPX@ :JK!PX@:J@ :JYYYYKPX@':KY=K [ =K[CLKPX@*:KY =KY =K[CLKPX@':KY=K [ =K[CLKPX@*:KY =KY =K[CLK!PX@*rY =KY =K[CL@' rY=K [ =K[CLYYYYY@DB)%&&% +''73#"&7#"&546?#7332>?332>54&'#"&54632\T9#Ca=N,(.46: ?\M 90' ADB $&F5 #ki3{hG[B9,45"^#+%W!.DR#"K>(:Wi. &3emC@@ JrY :KY;L +''73##73#3!737#7O^6 XNS K7e f7^J QQr0C0011y0:@,%JKPX@.p:KY =K[CK[GL@.rpY =K[CK[GLY@::''$#' +''7332>?3#"&54632326?#"&546?#7T9U ! A7* 1IhnBS 6GP5*2>$/A JQ #ki02IV$n;3$h\ =/002+eX ,Z@W)J c Y :K  Y ; L ,,+*('&%$#!      +"&546323"&54632##73#3!737#7b#!#" XNS K7e f7^J %%&$N0C0011y0i B@?JrpnY:KY;L  % +'7>327!!73!7!  _3 K?'3 =2T ɽ01G K@1JKPX@1  p  n[=K[BK[ CL@/  p  nc[=K[ CLY@ IHFD86-+)(&$ K K% +'7>32".'#"&5467"&/.#"#>32.54632632673qyY  b886##  :1#% ,8531 $  E2!% ,vg y   /  (*HM  / (+IL[ L@I pncY:KY;L      +"&546327!!73!7!%$3 K?'3 =%%01G Kg@d1 Jp  n  n [32.54632632673## 886##  :1#% ,8531 $  E2!% ,.()   /  (*HM  / (+ILmC@@HrpnY:KY;L +77#7!!73!7!/^63 K?'3 =WQQr01GFa@^, JHrp  n  n[=K[ CLDCA?31(&$#!FF +77#".'#"&5467"&/.#"#>32.54632632673T9886##  :1#% ,8531 $  E2!% ,ki   /  (*HM  / (+IL9W -D@AJpb:K[BK[CL!!!-!-'#%$ +#"&5467!>54&#"#73>323267>7W.WQce CU@7. 16% !h9nl= B;?_ QReZ-U&7Tb(A/N'0BHFJ9D" m#.a@^Hr  pn Y:K Y;L$$$.$-'%##"!&" +77#732#!737!!73!7!%32>54&#^6 5jm X23 K?'3 =WZR'UfWQQrl0nIS1G01GMt>Uik `H@F &JHKPX@N  p p  n nY:K [  =KY;K[CLKPX@Q  p p  n nY:K [  =KY;K[CL@N  p p  n nY:K [  =KY;K[CLYY@+"!^][YMKB@>=;943-+!`"` &" +77#%732#!73332>54&#".'#"&5467"&/.#"#>32.54632632673PT9 5jm XOWZR'Uf0886##  :1#% ,8531 $  E2!% ,kie0nIS1GMt>Ui   /  (*HM  / (+IL-.n~@T  4JHK-PX@`p p  n nY:K[ =K [ =K[ CK[ CL@fp p  n n nY:K[ =K [ =K[ CK[ CLY@)po0/xvo~p~lkig[YPNLKIGBA;9/n0n&&'# +77##"&5467#"&54>32#73326?3".'#"&5467"&/.#"#>32.54632632673%2>54&#"T95*'!'e2?A%AY48FOL  $886##  :1#% ,8531 $  E2!% ,H"H;&12&A/kiT<3&'=QQH;w_7#7?(5 XW  [H#"OH0;#m 11G00%([^[+-$ )5+)9%A6 JK PX@D  p hY:K [7#7x  $ 7*)$[#"OH0;#m ; % <3)IG%([^[+-$ )5+0V@S   J  c Y :KY;K [ C L/-*)%# +3#73## 3#73##7!##"&54632+326V W@W XW>sh  XssX9?'" &6J 00B11GJ00Kkb6(*0I;@  0 JK PX@A  hY:K [ 7#7V W@W XWP#"OH0;#m  00B11GF%([^[+-$ )5+*s ?[4@ P JK PX@Op  h[32326?3#"&546?>54&#"#"&5463232>7#74#"~[8.7@$1; *   $ 5*(# ( &F:, 3OH0;#m 2%(+"B4!**6#j5!% <4+Fc27P[$^[+-$ )5+f3m 4@1HrY:K[CL## +77#3#3267#73##"&7#^6 VY!5cek]V O](Y(ZNWQQr<0zoY00QC&9G@D+JHrpY =K[CL99)#&' +77#32>?3326?3#"&5467#"&546?#7T9F[ B<0 2Ha  $ 3)&08?!13 PR ki<1:T^$& !% ;4$:<$I:%+(5+B""JK PX@Bh  pa  a aY:K Y ;L@Cp  pa  a aY:K Y ;LY@ !  +!!#73#7!#7#3#!73!737#73[ Su 3(A K>(3 W3ެRB2!11G00獾11)b?ITIKPX@ ) JKPX@ ) J@ ) JYYKPX@Ip  pa   c [=K[CK [CLKPX@>p pa   c [=K [CL@Ip  pa   c [=K[CK [CLYY@-KJA@PNJTKTEC@IAI=<:831-+'% ?? +3#"&'#"&546;76&#"#"&54>32>3232673"7>54&26?#"pFT "gA27iE -7%73B"6F "Z2AJ[or/3/F0\@^cND$-3_9Hdb/MCJF8(ZH1FB  0!.&(,=1CP"9E8-JGiSD1#xTH9< m#.a@^Hr  pn Y:K Y;L$$$.$-'%##"!&" +77#732#!737!!73!7!%32>54&#^6 5jm X/3 K?'3 =WZR'UfWQQrl0nIS1G01GMt>UiJY"@ ? JKPX@F  p  n  nY:K [  =KY;K [CLKPX@I  p  n nY:K [  =K Y;K [CL@F  p  n  nY:K [  =KY;K [CLYY@*WVTRFD;97642-,&$YY&! +732#!73332>54&#".'#"&5467"&/.#"#>32.54632632673 5jm XOWZR'Uf-886##  :1#% ,8531 $  E2!% ,x0nIS1GMt>Ui   /  (*HM  / (+IL-'gw@M  -JK-PX@X p  n nY:K[ =K [ =K[CK[CL@^ p  n n nY:K[ =K [ =K[CK[CLY@(ih)(qohwiwedb`TRIGEDB@;:42(g)g&&'" +%#"&5467#"&54>32#73326?3".'#"&5467"&/.#"#>32.54632632673%2>54&#"5*'!'e2?A%AY48FOL  $-886##  :1#% ,8531 $  E2!% ,7"H;&12&A/g<3&'=QQH;w_32#73#7!#7#3#!73!737#73s  K Su 3(A K>(3 W3ެR2T 11G00獾11) GQ\KPX@1  JKPX@1  J@1  JYYKPX@Fp   p  cBK [=K [CK [CLKPX@;p   p  cBK [=K  [CLKPX@Fp   p  cBK [=K [CK [CL@Frp   p  c [=K [CK [CLYYY@,SRIH XVR\S\MKHQIQEDB@;953/-'% G G% +'7>32"&'#"&546;76&#"#"&54>32>3232673"7>54&26?#"%yY  0FT "gA27iE -7%73B"6F "Z2AJ[or/3/F0\@^cND$-3_9Hdvg yMCJF8(ZH1FB  0!.&(,=1CP"9E8-JGiSD1#xTH9<Fi '3;@8,+ Jr[BK[CL 0.$"  % +'7>32.54>32'.#"%4&'32>#  u|5]Ms2\z;)BgE% ?+CgE#2T sW}KwKT3Qy5/U}2 *9d@/. JKPX@BK[=K[CL@r[=K[CLY@ 31$"  % +'7>322#"&54>.#"%4&'3267>yY  qUQ!?_?$/DW@T.4 Jpn  _[ BK;K[CL><86//)%)% +#>54&#"#"&'#7332654.5463277>7#"&54632$+0HB:?UfUw_<]&)/W:COTeTlP>T(2 !%9  1<>06>0.(& 77 +72654.54632#"&5467.#"#".546327>7#"&54632*FCQC`D!<, ="(7#"&54632{ bG(6@6( a (2 !%91GȘ1&,!$2)]O4z$ JK PX@,fp  _Y=K[CL@+rp  _Y=K[CLY@.,'#% +7326?3#"&546?#73733#7>7#"&54632   $ 5*)% GSR$G$jh(2 !%98 % <3* C+xx+8&,!$2)eBA@>Ja Y :KY;L +!!##73#3!737#7T XNS K7e f7^J B2h0C0011y0b7P@M)"JpaY =K[CK[GL77''$#' +3#32>?3#"&54632326?#"&546?#7U ! A7* 1IhnBS 6GP5*2>$/A JQ b/\02IV$n;3$h\ =/002+U]JK PX@hY=K\GL@pY=K\GLY@ '$# +#"&5463232>7#7OH0;#m ^[+-$ )5+('/@,$ Jp[=K[CL$"+$ +#"&546?6454&#"#>3232>7&D]60DU 9E9,JGe(#:N+ FdD@Gi +D''73T9#kidD@Hi +D77#T9ki(dD@rW[O"% +D332673#"&546$%8%EB+, &1IA(* . 'dD@W[O   +D"&54632##.()` *dD@cW[O$$$" +D4632#"&732654&#"=(*;=((=)   s-55-.66.!!! ,dD@! JrW[O%% +D;3267#"&546h3:M& *,7K%G# 1 %"/Q.fdDK-PX@cW[O@"pcW[OY@  +D"#7>32326?3#"&/.# (! # %$ ~*()  +&-    dD@ Gri*% +D'7>32'7>32mN    cLa  "6T  t dD@ Gi% +D'7>32yY  vg "0+!7 !mX<<l0 0+#7!!73!7704(uM6(39z2#45-10+##7332>?3326?3#"&5467#"&'-JR \ A<0 2Ha  $ 3*&08? ) w+1:T^$& !% ;4$7>$H:$ 60+3##7!#3267#"&7#UIbCc (  Ac,,9*0KJ!qq  JK PX@4rh  p  aY(K Y)L@5rp  p  aY(K Y)LY@  % +.5463273!73#7!#7#3#K  =(2 XW 2( D K$ XF1G00qX +K PX@;   h  pc  a Y(K Y)L@<   p  pc  a Y(K Y)LY@+ ++*)('&%$#"!     +"&546323"&5463273!73#7!#7#3#:#!#"|=(2 XW 2( D K%%&$;1G00eD+N@KJG pcY(KY)L++*)('&%$# # +7!#7#>32'>54.#"3!73#e6@5( EP1%B1.Ka3,N:!-,QI_ bFƖ %A3MkT# R_p>)2  11G_i 8@5JrpY(KY)L%+'7>32!73#7!#7#3   XW 5( ݜ^2T 1G0ȘF,@ # JK'PX@4  ppa [/K)K[0L@8  ppa(K [/K)K[0LY@'&%$! ,, +"!!32673#7#"&54>3273#>54&1O>-  IVQn4@%f9n{1[Q@^'%84S-I^104UfdQN'0wQP31^  ?A$/H@E.Jpn[/K)K[0L//)%)% +#>54&#"#"&'#7332654.546327$+0HB:?UfUw_<]&)/W:COTeTlP>T  1<>06>7>?#7!#>32#!7;2>5.#"A'-- Q4! ! 2,)&e  X?=Qi,OpD WNk3N3E99x35|q'32#'32>54&#" WNOW XW W@VAW Y@=Qj+NpE[k3N3E:91$11G0000CO6\B&1%:H#5-e+M@JJ pc Y(K Y )L++*)('&%&#+7!#7#>323#737>54&#"3!73#e6@5( EQ1$B1 &W V& A8-QI` bFƖ ,!=11 2+ 11Gi S@-8 JK-PX@Dr  p  aY(K[/K  Y )K  [ 0 L@Ar  p  aY(K[/K  Y )K [ 0 LY@ S SRQPNIGDC@>$)!%+'7>3273#7!#3267>7>32#"&5467326?3#"&?6&+3Y  v XW  ]Dc(4")"#  ($   - 3B6  ,7cLV 2T 1G00>>: )  4<;:987$'$&$%+3267"&54632#"&54632 #"&54632>7##73##73 *!(B 0B$BM.3:$"*# .H)QO MH O e-11*3"B2 * XC00z00U46@3s Y (KY)L +%3!#7!73#73#!#73#3m=+ XW VOW X111G00G00c8@5Jb(K Y)L +7#7333#73'#73 JF,J W p111w119w#<@9JpcY(KY)L6"2$ +%#!73#7!#7#>3232>54&#" $EhC XW 5' CB[]ux.G/4:C&3\F)1G0Ɩ?!7J))0`*E@B J aY(KY)L  * )#! +3!73#7!232>54&+ 32>54&# XW aQY]==,MnUt0D*5=pQKp3O4>B1G0M8Bn B30T<#x1<*-4F',-_ ,@)pY(KY)L+3!73#7!#7#3 XW 5( ݜ^1G0ȘU#5@2sY(K Y)L## +'3267>?#7!#3#7!#%#;3*J"'! c  Wn;/F0 "'/1S<)aaY"R00ܫG=;20,*#%!+!#73#"#"&?3326?>7.'&4>'.'#"&54632;7#73#3267>7>32#"&5467326?3#"&?6&+3. XKR;F @;C - #"C2 ,(") *'XDX XD](8 '%%  (%   - .A6" +7gLX1*?^JGO6..'(./c6B 2/*#-13400@C> )   8?>EHW+%('.'7U?BXG7?;W@09JKPX@4pc [ /KY(K)K[0LKPX@6pc[ (K[ (K)K[0LKPX@4pc [ /KY(K)K[0LK!PX@6pc[ (K[ (K)K[0L@4pc [ /KY(K)K[0LYYYY@42&%&%$ +%#"&'#7332>54&#"732>54&#"#73>32+H`39V%03O4%B1@?&)0E-:8B]30% [1Re\X8<8Y< -+N  =41F)397-= .1JJH('M@Ii ?G8@5JY(K Y )L + 3#73#73#7#73#3#73u.W XW W| W XX W^211G002,0011G;W@T.Jc d  Y  (KY)L;:9876543210-,+*$&$%+3267"&54632#"&546323#73#73#7#73#3#73 *!(B 0B$BM.W XW W| W XX We-11*^211G002,0011G@ !, JK-PX@? p  aY(K[/K  Y  )K  [ 0 L@< p  aY(K[/K  Y  )K [ 0 LY@GGFEDB=;8742$)!+#73#7!#3267>7>32#"&5467326?3#"&?6&+3 XW  ]Dc(4")"#  ($   - 3B6  ,7cLV 1G00>>: )  47>7?e  XX W'-- Q4! ! 2,)&x0011G35|q'@;  aY(K  Y  ) L+'3#73#!7#73#3#73!3#XW WB`BW WW WMMW 1G0000111GIK PX@[/K[0L@[/K[+LY@ +.54>32'32>54&#"8v{4]Mt2\LTCfE#JTBgF$sW}KwKTXfU};TcQy6,@)Y(K Y)L +!3#73#7!#3#73X XW  WW Wx11G0011b:@7a Y(KY)L$! +%!73#732+32>54&# XW jiY:US:V6:E111G0QItG!9M,1;@&@ JK'PX@+pn[/K)K[0L@/pn(K[/K)K[0LY@!  && +"32673#7#"&54>3273#>54&DfB!IVQn4@%f9n{1[Q@^'%84SU|;UfdQN'0wQP31^  ?A`4@1pY(KY)L +373##7!#7#3v bG(6@6( a 1GȘ11"xJKPX@(pf Y(K\0L@)pn Y(K\0LY@""$% + #"&54632>7##73##73.3:$"*# .H)QO MH O x3"B2 * XC00z00M6#-7' JK-PX@+  c  c Y(KY+L@) a  c  cY+LY@3210)(##+#3#737.5467>37#73"%4&'267>832'32>54&#" WG'5 X?=Qk+Ppk4N4E;91G0CN6_E(1'32'32>54&#" XX XX XW Y?=Qj+Ppj4N4E;91G0011G00CN6_E(1'32'32>54&#" XW Y?=Qj+Ppj4N4E;91G00CN6_E(1'7!7!>54&#"#73>32D\%%54&24Q<(  ?U?h45% _7rb+Sz 81_ %6#3Sh41(Z\M]J(+lQR!1wK PX@3  a [/KY(KY)K [0LKPX@3  a [/KY(KY)K [+LKPX@.  a [/K Y(K [)LKPX@3  a [/KY(KY)K [+LK!PX@9  a [/K Y(K Y)K [+L@3  a [/KY(KY)K [+LYYYYY@.,&$! &$ +73#73#73#3>32#.5467#32>54&#"X XW XE?Vl>t2\Qv{LTCfE#JTBgF$111G00AsU1wKTs+^XfU};TcQy)4 JK PX@2h   a Y(KY)K \0L@3p   a Y(KY)K \0LY@!+*.,*4+4&%" )) +726?>7.54>3!#3#737#"#"&?33#"<8:+5<+Jd9' WW WCe,@97.?, YpLy1F.>'"y)1 F58T7011--z11B=47&%41@#1;-%5 JKPX@%p*K[1K[+LKPX@!p[1K[+LKPX@%p*K[1K[+LK!PX@!p[1K[+L@%p*K[1K[+LYYYY@'&/-&5'5&&'" +%#"&5467#"&54>3273326?32>54&#"6$"% 0\1?9%?X39@;.\ $"H;&.,'A-g<4"$/MOSG9w_>I8zH#&dAY\4I;73#">32#"&"3267>54&@%Q]U"!'nHeB' )4?#QU!>[:Qf&953+@.H[2t.Nj< ;,ZD=uZ8lL( 'j63K7))a*8A)%43@0a[1K[0L20*( %%$+74>3223#"&"7>54&32>54&))Gb8?C:5 (-tWNN4+" 7T` (3/%8@X;u\:6+,=*(MbTk/@":0 /7#2+0 '1@.%$J[1K[+L"  ''+"&546?>54&#"'>32326732>54.#"'>32'2>54.#"TQ">Y6=F -!"@!T.3C&!EkD+B-%.B)/ dK8oW7N9%K <. '&$Ye&';Wc(893'5@2! Jp[1K[+L''"+$+74>3232673#"&"7>54&3&D]61CP 9E8-JGeW#:N+ E/(q[  JK PX@K  p h  n  cb*K [1K)K \+LKPX@L  p  p  n  cb*K [1K)K \+LKPX@H  p  p  n  cb [1K)K \+LKPX@L  p  p  n  cb*K [1K)K \+LK!PX@H  p  p  n  cb [1K)K \+L@L  p  p  n  cb*K [1K)K \+LYYYYY@ ZXTSRQPOJHFECA;97620$"&'"+7463232>54&#"#>323733>32#"&5463.#"32673#"&5467##7##"& (;'"2'P067a6B6a '2>#13$8'#"/'D7<5c9C:_ %3C(14Q'Hdm%#123NBA90.O:!0(%>^p1$332HHN72.T@&27W@T2Jpcc [ 1K[ +L-+)(&$  77 +".54632+32654&#"732654&#"#>326*9!5B%7  " ?8-+)83]9IL;;$+j *$D/(*)<(&&%@8<0,D 1%B\C&2g$JK PX@!pY*K[0L@!pY*K[+LY@22)#&& +32>?3326?3#"&5467#"&546?#7[ B<0 2Ha  $ 3)&08?!13 PR 1:T^$& !% ;4$:<$I:%+(5+C&QյC JK PX@5  pc[(K Y *K [  0 LK'PX@5  pc[(K Y *K [  + L@3  pcc Y *K [  + LYY@QQPOIG><98&($$$""+'3267#"&54632#"&5463232>?3326?3#"&5467#"&546?#79 16XH0M =[ B<0 2Ha  $ 3)&08?!13 PR y7:*.%1:T^$& !% ;4$:<$I:%+(5+09]@ #*JKPX@5  p cY*K[1K)K[ +LKPX@7  p c[*K[*K)K[ +LKPX@5  p cY*K[1K)K[ +LK!PX@7  p c[*K[*K)K[ +L@5  p cY*K[1K)K[ +LYYYY@6520 99 +"&?4&+##73326?>32#"&5467326?.!30DG|[ :*5*2'  &'$ 5 2..+;+";$/$ 2"/6%?59.)2>@;JpY*K[0K[0L#&$"+7#"&54632>7>7#7!326?3#"&546?#.  'I"YX]  $ 8)+!J,I+)  .+;%!<2*I7\@Y2/ JpY*K[ 0K)K[ 0L10)'$# 77 +"&54632>7>7#733326?3#"&546?#+  %L"X^b  % 7*+M)N". )  -+g;%!<2(Ka++ !@@=paY *K)K[+L!!#& +373326?3#"&546?###732'3267>54&#"QS!?]?6D!9;;*%3JKPX@/p[1KY*K)K[+LKPX@%p[*K)K[+LKPX@/p[1KY*K)K[+LK!PX@%p[*K)K[+L@/p[1KY*K)K[+LYYYY@33+#+% +3#73>32326?3#"&546?>54&#"*~[8.7@$1; *   $ 5*(# ( &F:, 3+"B4!**6#j5!% <4+Fc27P[$(E JKPX@-[1KY*K[+K Y,LKPX@#[*K[+K Y,LKPX@-[1KY*K[+K Y,LK!PX@#[*K[+K Y,LK-PX@-[1KY*K[+K Y,L@+[1KY*K[+K Y,LYYYYY@%#&# +#73#73>32#"&'4&#"32> H[(4]3??&@Y32A Mt-#H;%12&A0,,z+RHPK:w_<7+.;=V^ 4I;Wg-%6@3Jpn[1K[+L&'$&"+%3#"&54>32#"&5467.#"326X/RBRY 5#;T_$32>32326?3#"&546?>54&#"#>54&#"##77/6=!1- +2;"/6 .   $ 5*(# '  %B7) .JY $C9+ /J~[ױ#C3.$ / <.-'2w7 !% <3'"Be4?3#"&54632326?#"&546?#7U ! A7* 1IhnBS 6GP5*2>$/A JQ 02IV$n;3$h\ =/002+0'7GX@U' JY(K  [1K  [+KY,L98)(A?8G9G1/(7)7&#&#+#73>32#"&'3#73#"&54>327"32>54&2>54&#"c VI5><9T647SN NRF*BC"+$%"+$# +>32#"&546732673#"&/#"&54632>7'.#"#>32/Q5"C1( %,)%( 9U6L2 $0.($RS^'ZY%?3326?3+73267> '08> 13 PR\ A<0 3G`  $ 80$  $7>$H:$+(5+1:T^$& !%=>I#"6!()0/l JK PX@&pcY*K[0L@&pcY*K[+LY@ &&("+%#"&546?#"&546?#73326?3326?38*(" >"/E R" !#+A :Hc  $f<2)J#185+b7!+>%=5Ll!JK PX@#pY *K [0L@#pY *K [+LY@LKFD&)*#% +%326?3#"&546?#"&5467#"&546?#7332>?332>?3  $ 3*$ .4;2)-4>"/0 VR a $D:, 0JZ $C8+ 1H& !% ;4$0"@12* (=.-'4 +69Ta(4:Ta'=H5[~  JK PX@*  p _Y*K [0L@*  p _Y*K [+LY@WUTRLKHF&&)*" +%#"&546?#"&5467#"&546?#7332>?332>?3326?3+73267>  $  .5;2)-5="/0 VR a $D:, 0JZ $C8+ 1Hc  $ 70$  $)#@12* ) =/-'4 +69Ta(4:Ta'& !%A7##7!>32#"&732>54&#"r ]5+ #2(E4 3B%=O*4@/&&2''!2@X.3g-Mx, L(>4'K;$'L *!4@!"A>-?(JK PX@)pcY *K [0LK-PX@)pcY *K [+L@3pcY *K[+K [+LYY@<:20,*'&%$#& +326?3#"&5467#"&'&6?#73>324&#"32>`  $ 7*(# ]";O.3= HQ I<%3CI'"4  &2'8 % <3)E#L=(#b++;,!"?&!4@>'/@,JcY*K[+L($#$+%#"&'&6?#73>324&#"32>";O.3= HQ I<%3CI'"4  &2'#L=(#b++;,!"?&!4@-J@Gpac[1K[ 0L'%#"  -- +"&54632+3267>7#73>54&#"#>32@R 2"(=  .3.@2d=VL<[ :4&-%9' 6A33LEdK7pY9%1KPX@-a[1KY*K)K[ 0LKPX@%a[*K)K[ 0LKPX@-a[1KY*K)K[ 0LK!PX@%a[*K)K[ 0L@-a[1KY*K)K[ 0LYYYY@+)   +"&5467###733>32'3267>54&#"QT\EG~[ 8\ *;M.TR!@^+60 (6"5 dN+)L:"dK4o[;6D<>?6D!9;;5>JK PX@(h c Y*K\0LK-PX@)p c Y*K\0L@3p c Y*K[0K\0LYY@76:86>7>&#&+#" +7#"&?3326?>7.546;326?3#"&546?#"737#"*-/ $ /"(8uZ]  $ >)) A%)iE?b3232673#"&"7>54&  P&D]61CP 9E8-JGeW#:N+ E/(3 3?9$JKPX@,p  [(K [1K[+L@*p  c [1K[+LY@!54 4?5?20.-+)    +"&546323"&546324>3232673#"&"7>54& "!!&D]61CP 9E8-JGeW#:N+ E/(p)=@:J)GaY(K[1K)L%' +>54&#"##737#733#>32;^@"#J?0 &J\ Z[{ y>06< 4/-PoBo"u2"->Xc%&C/r&"C5 <:Cs  3d@10JKPX@/K[1K[+L@r[1K[+LY@ .,! 3 3%+'7>32"&546?>54&#"'>323267SyY  Jppa[1K[+L%'$&"+%3#"&54>32#"&5467.#"3#326X/RBRY 5#1? ' 7#7#"OH0;#m 2%([^[+-$ )5+.@C@@JcY*K[0K[0L&(&#$% +##"&54632>7>7#7!>32#"&'&6732>54&#".H"/  &I"XWH<%3>!9P/2= +&2&#!3 +)  ,+82%M?)!Y8&!4@!"?+-B@? J  caY*K)K[+L)'$#$ +%#"&'&67###73373>3232>54&#"!9P/2= AI}[ 2&""4%M?)!W6+8!4@!1O";  JK PX@6 paY(K[1K)K [ 0 LKPX@6 paY(K[1K)K [ + LKPX@2 paY(K[1K [ )L@6 paY(K[1K)K [ + LYYY@7521.,%& +%7>54&#"##737#733#>32326?3#"&546r&  #J?0 &I] ZZ| y</6>"37 -   $ 8*(#a2>Xc%&C/r&!A2-*3s<!% <3)G0 E!KPX@/6JKPX@/6JKPX@/6JK!PX@/6J@/6JYYYYKPX@:   p c/KY*K[1K)K [ +LKPX@<   p c/K[*K[*K)K [ +LKPX@:   p c/KY*K[1K)K [ +LKPX@<   p c/K[*K[*K)K [ +LK!PX@<r   p c[*K[*K)K [ +L@:r   p cY*K[1K)K [ +LYYYYY@ BA><*($" E E% +'7>32"&?4&+##73326?>32#"&5467326?yY  :.!30DG|[ :*5*2'  &'$ 5vg y2..+;+";$/$ 2"/6%?59.)C& >@ 0JK PX@&p/KY *K[0LKPX@&p/KY *K[+L@&rpY *K[+LYY@ > >)#&+% +.5463232>?3326?3#"&5467#"&546?#7  Ps[ B<0 2Ha  $ 3)&08?!13 PR n   71:T^$& !% ;4$:<$I:%+(5+R@ D = JK PX@= pc[(K Y *K [ 0K [3LK'PX@= pc[(K Y *K [ +K [3L@; pcc Y *K [ +K [3LYY@RRQPJHA?86#($$$""+'3267#"&54632#"&5463232>?3#"&54632326?#"&546?#71 16XH0M ?U ! A7* 1IhnBS 6GP5*2>$/A JQ y7:*.%02IV$n;3$h\ =/002+CI%2N@$3 B4 A JK PX@0p  c _Y *K[0L@0p  c _Y *K[+LY@MKFD?=8622)#&& +32>?3326?3#"&5467#"&546?#7.#"#"&'7326?>32\ A<0 3G`  $ 3*'08?!13 PR  %"   # 1:T^$& !% ;4$;=%I;%+(5+ % #5 - JK PX@8  hn   a  cY(K Y)L@9  pn   a  cY(K Y)LY@,)#! &2+>32#!73##737#73#!#732>54&#"-=Pk%JnH XF(5X Y/'k3K1E;9 8O0S>#1ܗA//A$1A#5%*/A@ %JKPX@.c[1KY*K)K[0LKPX@$c[*K)K[0LKPX@.c[1KY*K)K[0LK!PX@$c[*K)K[0L@.c[1KY*K)K[0LYYYY@ &'%+&# +>32#"&'&6?>54&#"##73>3232>54&#"9%3> :P01?  &F:, 3J~[8.7@$1; @&2&#!3 83%M?)!Y6B27P[$+"B4!**6&!4@!!@E'cK PX@a[/K[0L@a[/K[+LY@%$  +.54>32"!>54&32>7!6v{5]Ms2\"1Q@/KKT2T@/ hsW}KwKT-Ja2*TciXf2Of4/2)4@1a[1K[+L'&! +"&54>323>54&#"3267>7#QS!?] 6D!6CK'#a1@.JY(K[/K)L$"+>32#"&5467##73#.Y<"'$ #?-57J X,Wa!+  PQ(y00 @  JKPX@Y*K[1K)LKPX@[*K[*K)LKPX@Y*K[1K)LK!PX@[*K[*K)L@Y*K[1K)LYYYY@ $$+##73#7>32#"&5467H7 ; Cp-O6:++Qf! St? /@,rY(KY)L +7!73#7!73! XW mG'/111G0 +t@ )(JKPX@#p*K[1K[+L@#rp[1K[+LY@&$ +++"&546?>54&#"#73>32326732326?3#"&546?>54&#""&54632*~[8.7@$1; *   $ 5*(# ( &F:, 3c$$+"B4!**6#j5!% <4+Fc27P[$'(N$/;X@U.Jpn  _[ BK;K[CL10750;1;//)%)% +#>54&#"#"&'#7332654.546327"&54632$+0HB:?UfUw_<]&)/W:COTeTlP>T$$  1<>06>?332>54&'#"&54632  P#Ca=N,(.46: ?\M 90' ADB $&F5 n   3{hG[B9,45"^#+%W!.DR#"K>(:Wi. &3pii $>@;"Jr Y :K;L$#! % +'7>323##73####73##   W)W I69$J X.\2T z000y006 LKPX@ ?JKPX@?JKPX@ ?JK!PX@?J@ ?JYYYYKPX@'BKY=K [ =K[CLKPX@*BKY =KY =K[CLKPX@'BKY=K [ =K[CLKPX@*BKY =KY =K[CLK!PX@*rY =KY =K[CL@' rY=K [ =K[CLYYYYY@IG)%&&)% +'7>32#"&7#"&546?#7332>?332>54&'#"&54632yY  #Ca=N,(.46: ?\M 90' ADB $&F5 vg 3{hG[B9,45"^#+%W!.DR#"K>(:Wi. &3piX 0X@U.% Jc Y :K  ; L 0/-,+*)('&$#"!      +"&546323"&546323##73####73####!#" W)W I69$J X.\%%&$N000y006 XN@ K   JKPX@0 [?332>54&'#"&54632w "!!#Ca=N,(.46: ?\M 90' ADB $&F5 .')%'3{hG[B9,45"^#+%W!.DR#"K>(:Wi. &3qf3K PX@B hpc c  a  Y :KY;L@C ppc c  a  Y :KY;LY@+  3 3210/.-,+*)('&%$#"!  +"#7>32326?3#"&/.73!73#7!#7#3#e '6$   ' +%# "=(2 XW 2( D K23,  ",+ 1G003;GA, JK-PX@3  pc [BK  [=K [ C L@:p  pc [BK  [=K [ C LY@!=<32326?3#"&/.4>3232673#"&"7>54&# (! # %$ &D]61CP 9E8-JGeW#:N+ E/(eq @@= JrY :KY;L % +.54632##73#3!737#7A   XNS K7e f7^J $ XC0C0011y0 ?@ 1*JKPX@.pBKY =K[CK[GL@.rpY =K[CK[GLY@ ? ?''$#+% +.5463232>?3#"&54632326?#"&546?#7  P|U ! A7* 1IhnBS 6GP5*2>$/A JQ n   702IV$n;3$h\ =/002+Eg!@UYM +%!7!V4dN#@UYM +%!7!>&6@@JW[O$& +>32#"&54>@(3 "*>/7! :-2@J[BL$& +7>7#"&54632(4 "*>/8! :/tW@J[CL$& +7>7#"&54632(3 #*>/7!!:.)$@!JW[O$-$& +>32#"&54>7>32#"&54>@(2 "*>(2 #)>/7! :-/7! :-)@J[BL$-$& +7>7#"&546327>7#"&54632(3 ")>(2 ")>/7! :./7! :.tVW)@J[CL$-$& +7>7#"&546327>7#"&54632(4 "*>(3 #*>/7!!:./7!!:.] +U@ JK-PX@cBK?L@rc?LY@ %)$ +7>327>32#"&/#7#"&54632 6  *k=  : Qs@?QC8*JK-PX@ ccBK?L@r cc?LY@ML)'))'$ +%7>32#"&/#"&546?#"&546327#"&546327>327>32#"&/!X~ 4w |"Ow  t7z     3x @W[O   +7"&54632~!*."!)-("%+("%+Db %@"[CL      +"&54632#"&54632$$$$ '('(b #0@-[CL ##    +"&54632#"&54632#"&54632$$$$$$ '('('(6! +9IUj@gpc    d c;K  [CLKJ-,QOJUKUFD><31,9-9*("    +%"&546323#72654&#"4632#"&"&54632%32>54&#"2654&#"KTgPMS.Er;[;?9009A3kUCP1J/?QJTgPLT.F.+2!0+1!@8/0:A4VKNiVC&F4ET9+9L92:]uK<'L;$HHVLNiWB&F5(-.:(--;pT9+9M91:0!0+'7 G%kǻ0+7'7'7 G%kǻ@:K;L +3#,-Fg,!-@*[^K[_L!!  +"&54>32'267>54&#";90C*<:1D&-"-,D?/\I.E:0^J.*0%"P"!%1(!I"#'S1 '@$ JbZK[L +##7#?33#37h,: FI,}:UU%R'&>@;!JccYZK[_L#$"$" +#"&54632#326'4&#"'73#>32XTH/;  #1/(7! !18AY)% C, /o+g-'5C@@"Jpc[^K[_L)(1/(5)5$'$)$ +#"&54>7>32#"&5467.#">322>54&#"r%7%9> ='-;   15./:  /."8+;6=;7&$  EE,!+F*"1"@pYZK[L +#>7##73>$5D$" %3)1$VWT Ew$%HOS\+'7)@&5 J[^K[_L,*" *" +#"&'467.54632'>54&#"326'4&/.'oSD6F+" E>1A!L&!#)g'%(7% ?G1.,: "7<,'#3 %B-! !%) 4]-'3C@@Jpc[^K[_L)(/-(3)3&$'$" +#"&546323267"&54>32"32654&E8*.A &.3%/D%6#<<93H+F)!&R|!-@*[RK[SL!!  +"&54>32'267>54&#";90C*<:1D&-"- D?/\I.E:0^J.*0%"P"!%1(!I"#'  v%@"aNKZOL! +#73267>733#73_ ,  )XV ^+& (( 6{"6@3 Jpn[NKYOL$'' +!#?>54&#"#"&54632373 q38$ J646O<^(_+F+  -9+'9M-IB=|>J@G6Jpcc[RK[SL=;42.,+)%#! " +4632#"&5&632#32654&+732654&#"#"&RK/3>%  VA29   +0!' 2' #  +1,*"4  :D+% 6'8"  Ox '@$ JbNKOL +%##7#?33#37',: FI,}:UUU%E{&>@;!JccYNK[SL#$"$" +%#"&54632#326'4&#"'73#>32TH/;  #1/(7! !18AY)% C, /o+%J{'5C@@"Jpc[NK[SL)(1/(5)5$'$)$ +%#"&54>7>32#"&5467.#">322>54&#"0%7%9> ='-;   15./:  /."8+;6=;7&$  EE,!+F*"Hew"@pYNKOL +3#>7##73>$5D$" %3)$VWT Ew$%HOSD'75 JK PX@[RK[SLK PX@[NK[SLK PX@[RK[SLK PX@[NK[SL@[RK[SLYYYY@ ,*" *" +%#"&'467.54632'>54&#"326'4&/.'.SD6F+" E>1A!L&!#)g'%(7% }?G1.,: "7<,'#3 %B-! !%) 4C{'3C@@Jpc[NK[SL)(/-(3)3&$'$" +%#"&546323267"&54>32"32654&8*.A &.3%/D%6#<<93H+F)!(,m@ ! JK PX@/ h a  cY:KY ;LKPX@0  p a  cY:KY ;LKPX@/p U   cY:KY ;LKPX@0  p a  cY:KY ;LK!PX@/p U   cY:KY ;L@0  p a  cY:KY ;LYYYYY@(' +#3!73#7!#7#!>32#"&5467#40Io XW 2)F:$'J24.' D2>11G0HH$ /GY,J440T@Q pca  a[K Y  L0/+*)('&#"! ""$#+737#735>32#"&5467.#"3#3#!73!7>7#eFH @ hY@N -6@ } y &).&%v1'L:#Zf:1"KE#:$+=d8 D.&Q8@ 0 JK!PX@;p pa  a[K [  LK"PX@?p pa  a[K K [ LK#PX@;p pa  a[K [  LK.PX@?p pa  a[K K [ L@Cp pa  aK[K K [ LYYYY@8742/.-,*(#"! %"+73>7#73>3273#>5.#"3#3#32673#7#"&'5#2BD F!~U3I!+1>2;R   6@=Q13L.WcJ#$Ke#!?-.P6$#$7!7!>54&#"#73>323#3!32673#7#"&5467#9~(] 4%131Za _54&#"706?)FFP=/3ZQ$#97 $u@>VNR@'Bzb/1HQ~8C"0&DG6Dp-=OS @ QPF>5.0+!#"&54632>7#73>32#"&54677"&54>32'267>54&#"7!*+4% (:*H .-3"!(;-.<)9 76):!" ! ~ }]%)*gz_( ) $^/3%D450&C2"= @,,8(@JGKPX@'h  ] Y:L@(p  ] Y:LY@"(('&%$#"!  +#53##5!#'#373#3#53#3#53#55OIO4`_22-}v,228'!LssLH'''6''!'V! 0+".54>32!32673"!4&{PqE)LpG\w[c5hcle 2[LO\4OPih~d ""@JHUYM +%'%!!rI =y@H;L +'#' = IId # @HGUYM +'7!5!'7 IIV = x@G:L +737 =II  0+%'35'537375}jg&VV%gjUVWqghuabi 0+%'#'7373'#3'uכqgh:abigj}jg&VV%UVWd;  0+5##57'533537'#;qghuabiLjg&VV%gjUVW 0+%#575#7##='7FV%gj}jg&UVW^huכq9abi"0+!7 !mX<<ld5d@UYM +!7! Z 5/R#/ )$ 0+#"&'#"&54632>323267.#"%"32654&J=3K""O38LI>4O""M2@B2*&@A(&2%@ >%*//ICJ>((>GC;OB((BN<0/6%&=11:%&96,+1>;/*0+"#>3232673#"."#>3232673#".*+P(-(*$+ +?3"1)&R)+M*.)*$* ,@3"0('!9:"#E2!9:"#E2Xk*, 0+%##7#737#73733#3N/N{ e T/T} eii//qq/g:<   0+%%7%!7!  o0+7t/h:   0+7-7!7!w> KF oL7tv0/S'82JKPX@*a [ BK[=K[CL@(aa [ BK[CLY@876543,*)(''  +2#".54>"32>54.#53267>533#53N^55^NN\44\NHyV00WxHH{W12WzWK ,GK1ZOO]33]OOZ1.TyKH{X12XzHJyU.' ''S'J@ ? 5JKPX@6  pf  cb [ BK[CL@7  pn  cb [ BK[CLY@#)(FD=;43210/(J)J''  +2#".54>"32>54.2373#57>54&#"#"&546N^55^NN\44\NHyV00WxHH{W12WzG5A?2H ^&+#% F1ZOO]33]OOZ1.TyKH{X12XzHJyU.1/0F(:@p.P A& -1S'`x@uI [4J  pp ccc [ BK\CL)(VTPNGEA?><86/-(`)`''  +2#".54>"32>54."&5463232654&+532654&#"#"&54632N^55^NN\44\NHyV00WxHH{W12WzR1B '!/%(! %$$ ' I.5H#+,'S1ZOO]33]OOZ1.TyKH{X12XzHJyU.&*  !'#$(  +++/!0*%<4S':^@[65,Jpp b [ BK[CL:987430/+*)(''  +2#".54>"32>54.#5#5>733573#N^55^NN\44\NHyV00WxHH{W12Wz802> >.8**1ZOO]33]OOZ1.TyKH{X12XzHJyU. H)3mUZk.Nc+S'No@l721 L J  pa c   c [ BK\CL)(GEA?;96543/-(N)N''  +2#".54>"32>54.2654&#"'73#>32#"&54632N^55^NN\44\NHyV00WxHH{W12WzS%'*#( ӱ$;EK?-E '1ZOO]33]OOZ1.TyKH{X12XzHJyU.%()#$  5`27:A'+  S'JVo@lH+ Jp c  c  c [ BK[CLLK)(RPKVLVCA=;75/-(J)J''  +2#".54>"32>54.">32#"&54632#"&5467.2654&#"N^55^NN\44\NHyV00WxHH{W12Wz:.)/3G%/HANH+= !!"&%"'%%1ZOO]33]OOZ1.TyKH{X12XzHJyU.@K3<.X[nW#(  /##))"%.S'9@ 6*(JKPX@&ha[BK[CL@'pa[BK[CLY@543210''  +2#".54>"32>54.#54>7##53N^55^NN\44\NHyV00WxHH{W12Wz4>!, )41ZOO]33]OOZ1.TyKH{X12XzHJyU.#PNJ:q":S'?L\M@JA=1Jcc [BK[CLQOHF86,*''  +2#".54>"32>54.#"&5467.54632'>54&#"32654&/.'N^55^NN\44\NHyV00WxHH{W12WzFO99O H66AB (&(()%.D 1ZOO]33]OOZ1.TyKH{X12XzHJyU.v7939- *01/+* 0[""$  'S'HTo@l+ FJp  c  c c [ BK\CLJI)(PNITJTA?;953/-(H)H''  +2#".54>"32>54.267#"&54632#"&54632"32654&N^55^NN\44\NHyV00WxHH{W12WzU2&)5EP3I=GO,C %""#""'" 1ZOO]33]OOZ1.TyKH{X12XzHJyU./>H5"32>54."&54632#53267>533#532654&#"N^55^NN\44\NHyV00WxHH{W12Wz"ACCBE>A7+18..-1ZOO]33]OOZ1.TyKH{X12XzHJyU.^]_^^_Za)' ''MFIMMIENS'3? @ 94-( 0+2#".54>"32>54."&54632'2654&#"N^55^NN\44\NHyV00WxHH{W12WzGAHHBEFIB..-1ZOO]33]OOZ1.TyKH{X12XzHJyU.]]_^^_Z`'NEHNNHDOS+ %  0+2#".54>2654&#"7"&54632N^55^NN\44\OCIFEBHHB.-.1ZOO]33]OOZ1`Z_^^_]]'ODHNNHENx30+3!xDx &0+7!%!!xX QFP3=0+7!FPFP2=0+7!%!!F}Pi<A^? 0+%".54>32'2654&#"N8eJ++Je88dI++Id89KK99LLA%B_9:_B$$B_:9_B%{F>?EE?>F<A9? 0+%".54>32<:_C$$C_:8^B%%B^A%D_97]C&&C\69`D&dD 0+".54>32'2654&#"Oa77aOOb88bMZml[Zoo2\QOX00XNQ\2t[WkoWXsD0+)!!Kmq h;0+#%!!#73!=# u*K6 xUlX;  0+)!!''7'77KkuG l2 <LX RMD=<,0+%'"&/#''.'.5.'>7&'&5467>7>7646;76#"37265'4&2#"&546Y  4  ( 5 ]@ =*I"#(b< "X  k    !    6          2 <LX RME=0+7&574632>7>''&'.'&'##'7"326574&#2#"&546P  X" 7&'&5467>7>7646;76326?>32326?>32326?>32;2654&/.&727>32'.#"#"37265'4&2#"&546"#"&#"32654&Y  4  ( 5 ]@ =*I"#(b< "X  D.(   )& 2" "Cq?9%3   L      u!    6     gW ] T F? ."0       /d<@ v:!0+?'46?5.7.'.7>7>3>7&67&6322#"&'&#"&/&&#"&/&326?>'&6'.#"&7>54&4&54654&#"32654&#"3726'#"&54632j!    6     gW ] T F? ."0       Y  4  ( 5 ]@ =*I"#(b< "X  .(   )& 2" "Cq?9%3   v      2o <@ o\0+7&574632>7>''&'.'&'##'%.#"&7>322767>54&'&'&;2632326/.54676&32326/.5467>32326'%"326574&#2#"&546"32654&#"#"&P  X" 7"&='&637237265'4&#"4632#"&654&/.5467>32654&/.547>32654&/.546=4&#"3267>'64'.54676732654&#"!    6         gW ] T F? ."0   Y  4  ( 5 ]@ =*I"#(b< "X  k    .(   )& 2" "Cq?9%3   v  Oyb0+#u=#6 xUS$KPX@)h[BKY =K[CLK)PX@'h a[BK[CL@(p a[BK[CLYY@$$#!  +2#".54>#35##+N^55^NN\44\@KG,1ZOO]33]OOZ1''? 'S6S@P*4Jpn[BK[=K\CL65.,%#  +2#".54>##7>54&#"32654&'>32!N^55^NN\44\ G2@A62G %"+&^1ZOO]33]OOZ1a?9(G0/00-!%B O.SL@)>JK#PX@0c c[ BK[=K [CL@.cc c[ BK [CLY@KIEC<:6431-+$"  +2#".54>4&'>54&#"32654&'>32+32#"&'>54&#"326N^55^NN\44\'++"I5-I ( %$% !(%/!& A1:T1ZOO]33]OOZ1Z%)0!/+++  (" #'! *'5S&@ "JKPX@&pf[BK\CL@'pn[BK\CLY@&%$#  +2#".54>35#5#>7#33N^55^NN\44\))9.= >1091ZOO]33]OOZ1>+cN.kZTn3)HS:@ ,JK1PX@0pc[ BKY=K[CL@.pcc[ BK[CLY@9731*($"  +2#".54>4&#"735#>32#"&'>54&#"326N^55^NN\44\E;$'#*'%& E.?J1ZOO]33]OOZ1d72_5  $#)(  +'AS6B@ JKPX@1p c[ BK[=K\CL@/pc c[ BK\CLY@87><7B8B31-+'%  +2#".54>4&#">3232654&#"32>"&54632N^55^NN\44\G3/*.  =,HMAH/%&&%("$%1ZOO]33]OOZ1i<2K@  (#Wo[W.7.%")*"#/S%?@<%#Jpn[BKCL  +2#".54>46?5#3733N^55^NN\44\b4) ,">1ZOO]33]OOZ1Q:"q:JMP$S+8Hj@ <8#JKPX@ [BK[=K[CL@c[BK[CLY@GE31*(  +2#".54>4&'>54&#"326'.54632467#"&N^55^NN\44\A66G P99N&)  D-%*(1ZOO]33]OOZ1a/*+/2/* -949"j'  $S4@Y@V &Jp cc[ BK[CL65<:5@6@31-+$"  +2#".54>4&#"3267#"&'>54&#"326'2#"&546N^55^NN\44\=J3OE4(&3$ A,PG(!"(""#1ZOO]33]OOZ1SU8C<5 2654&#"#35##+"&54632N^55^NN\44\CA>EBCC81+R...1ZOO]33]OOZ1aZ_^^_]^)''? 'NEIMMIFMd 0+".54>32M[33[MN[22[4]LK\44\KL]420+!  Y a`20+%%' a 20+ '7Y T TR20+ 7% TRY 20+)kG20+ N80+TkGt0+7F0+ #;l$A`0+3Mk;7.   0+!#3'3#6}TQ())[  0+7!!733#3~5~džUQ(T)[E/fJK PX@ h[BKZ;L@!p[BKZ;LY@//)* +%!7>54.#"#733.54>32371,O;#'B/@bA"%(%' 3ZK?_>o:6Uet<'G5 ?hH7#"&54632(2 !%9&,!$2)0+'3267#"&54632#"&546324 16XH0M y7:*.%RR%/;cks{[A,|xtpljd_K82*&" 0+#"&54632.#"32674632#"&'#5353'4&#"32632654&/.54632.#"#"&'#'##73!3##5#%3##5#%32#'##7''2654&+4632#"&'3#3##%3#"&=33265'#5353732+%4&#"3262654&+32#'##7'373#'2654&+N! %&!*(!!''!!(RTj "! D;88978_:&#'q'p( "&&" (iVSSQT'9$$%%7%:&#'<0/<z'A)$%)" )$**$$))'~~K!!!!   '**<99;JJ :$))$%((p4?[[[;~~'$$'K !!t+<999]II[;K  :,'4@1%$Jc[CL''  +"&54>32'.#"2>54&'[n+Li>ak'Jl95#3R8/P8 6 oVBuX3nW6s]< .I`1L^- aZi #BR@O Jr a  c Y :K [ C LA?<;75/-*)('*% +'7>32'7>323#73#3##7!##".54632+326  p  %XJW XJX bf  Xc%w2H-%#  A;Qs2T 2T :0011~00z$,+0'e> %@@=p[c 1M@  B JK PX@7p hBK Y =K[CK \GLKPX@8p  pBK Y =K[CK \GL@8rp  p Y =K[CK \GLYY@222M2MLKFD$)#&*% +'7>32'7>32#73326?3#"&5467#"&5463232>7#7'yY  yY  P[Y  $ 8*(# ΐOH0;#m vg g +C $% <3&"B^[+-$ )5+ +;@8d[BK=K[CL*("    +2#"&5>>?33267"&74632#"&a&${c7"_d26%F#8H%NU&'cvnoI*6""(=)L@~*$0+#7>54&#"32#"&54632"&54632~qT7\M*+$7  YKCN$$Qc?eO<%& :E<2'(] *'0+2#"&54646?33267#"&54632#"&0$$qT7\M*+$7  YKCN'(gQc?eO<%& :E<1- +@(p[BKCL    +2#"&5>3#"&7>7>%$$% A&'WI*G@*D- 0+7#>7>7>32"&54632$  )F$$+G,F%7Kd'(  0+2#"&5>3#"&74>%$$ !+'(+G,F%7Kd\Fj@UYM +#73YF9]Fz@UYM +!7!nF4sF]|@UYM +!7!M&F61y:FVNGC90+#"&7467#"&54>327332>54&#"3267#".54>322>54&#":;W87'&K'55 6J+.6+3F $>.Wi;.QpAN76YT]2Bwc5<1'% 4%By\74%9=H=2eP3<.d.(1Qk;K}[KwS,3<=?3^ScSG6IM-:1HU$(00+3#330+3#2/10+3#,,GS0+3#k4n3SBoS0+3#o12SBI` 0+.54>7? _w7f^1B{%LЏXl#*JBq_Q]v 0+7'>54. _w7f^1B%LЏXl#*JBq_Qk"@aUYM +#3#3}ִ)kN"@aUYM +3#73#4}ִm[)T1b01@.$ JcW[O0/! +#";#"&54>54&'7>54&54>3 #N; >8"#!"+5 7H@$*$*(54&+732#3 #N; >8"#!"+5 7H@$*$*(7.54>7!_s7e[iW ^v4]QLvO*1C$N؆Wl%)KD$NԊWl%)%f|MBr`Q;# 0+7'>54&?'>54.!_s7e[iW ^v4]QLvO*1C$N؆Wl%)KD$NԊWl%)%f|MBr`QJa# 0+.54>7.54>7!_s7e[iW ^v4]QLvO*1C{$N؆Wl%)KD$NԊWl%)%f|MBr`QaP# 0+7'>54&?'>54.!_s7e[iW ^v4]QLvO*1C$N؆Wl%)KD$NԊWl%)%f|MBr`Q^  0+ # ;l $Ax 0+35k;{7.3`# 0+26?#"&54>;##"&54632+08QR(E^6 @{KL30zKALJN;Z= +T]T+"% "be0+737#73733733#3##7##7#737#1l?8-78/8np>9/88/8i?ٶ33331AQUt@q-  J  c  cY:K[BK Y ;K[CLRRCB32RURUTSKIBQCQ;92A3A$%$% +!##"&54632>7#73>32#"&5467"&54>32'2>54&#"7!/>%77A0"" "+-2!Z %77@.#" "-/51>,=#8:,>#)'>7 0  Iך0ɧ߄6 1  W26)K8":4(I7 &!3=""4@//8%5GS@Pd  c:K[BK;K [ CL'&FD=;/-&5'5$"  +"&54>323#>54&#"326"&54>327>54&#"326>E!6H(=J6J667f! #/$+O>F!6I(323#>54&#"326"&54>32!"&54>32%>54&#"326%>54&#"326>E!6H(=J6J667f! #/$+>D!8I(F!6I(53. +373#>54&'+#7.'#73.54>327.#"4&'>' - &,/*$54)}b '-F%(0G1=9.4G'  A,29G5%:CQN &Q  #3 $-:%`lFK1S  4J #,9'+B,+89p+7N<@ 4 JK'PX@?p pa  a[BK ;K [CL@Cp pa  a:K[BK ;K [CLY@<;863210.,'&%$%$ +3>7#73>3273#>54&#"3#3#32673#7#"&=#)JS T8IX2:G#"409;%@4)  9MHW1;"T3ceR+(+7cH+5.]  9C$;O++(+TdcPI%-w`"S@P J  a  aY:K Y;L"!  +3'#73'#73##73#3#3#3!737#k x2H XLS Hv ? 5e f5%U,00E00,U,11)I@F a a Y:K  Y ; L)(" &! +737#73#732+3#3!737#32>54&#Bfk jPW je*OqGH !m W!e,PC6S69EH,,0IH6[A%H,{11{!6J(12+i1X@UJp pa  a[BK Y ; L1/+*)('&#"'$# +37#737>32#"&5467.#"3#3#!73!7>75#uUME z`BK ?Q ;2,2&(J8? \!M+;kr20#gT,+M+B]mD_C+i*F@CJpp a[BKY;L*)'$# +37>32#"&5467.#"3#!73!7>?#qiz`BK @P;3,2&(J8? prbkr20#gTS,LC`mD_CQXq-@ JK PX@3fpngdW[O@1rpnsdW[OY@ &'& +%3+#7.54>;73#"&5467.#"3260dB*BQ >\;*2B 7%/C*B61JKFZ^ ^K9mU4ae ;+#:QYCL8T'I@ = /JK#PX@4  W   aU c[BK[CLK-PX@2c  W   aU c[CL@8c  W   aa cW[OYY@)(ECA@?>;931.-,+(I)I((($ +4>32#".732>54.#"2653#'#"&54>3273#.#"6`NN_77`MN`7(1WvECvU22VuDDwV1K+6-?%Oc/@"'> -8*;01VS]22]SS^32^TLzT--TzLLzS--Sz-10sd2M511+RQPXl* 0+>32#"&54>(0 ")=/0 4+c/ 0+7>7#"&54632c(/ "(=/0/! 5*l*)! 0+>32#"&54>7>32#"&'4>'/ ")='/ #(=0/! 5*0/! 5*c0)! 0+7>7#"&546327>7#"&54632c'/ #(='/ ")=00/! 5*0/! 5*=\.0+'7 G%kǻ\0+7'7'7( G%k\ǻ;\  0+'?'7 /#V!>%b˼ʽ \  0+7'7'7'7'7) /#V!>%b\˼ʽrR{G90+#"&/#"&546?#"&546?'.54632'.546327>32{ON A   A QQ ?  A .   9X   X9     9W  W8 <Z@ N JK PX@Ih  p  ha[BK  Y=K[CK \ G LKPX@Jh  p   pa[BK  Y=K[CK \ G L@Kp  p   pa[BK  Y=K[CK \ G LYY@ZYXWRPIGCA>=#&'$#% +4&54632%>32#"&5467&"#"!326?3#"&546?##"&5463232>7#73V>%* (1 X  $ 6*)  G~JU1;$~M K ^V$$ E=,C $% <3&"CPi,*$(4+<fKW@ ? JK PX@Fp  h[BK [32#"&5467.#"!326?3#"&546?##"&5463232>7#73%"&54632W@(: (4 X  $ 6*(! G~JU1;$~N K!!^V($"H=,B $% <3&"APi,*$(4+W%'g-@* J:KY;L +7#7333#73 JE-J W$111w11"ri B@? Jr  b:K Y;L   % +'7>32#7333#73'#73N  V JF,J W p2T 11w119qi JK PX@4rh  p  aY:K Y;L@5rp  p  aY:K Y;LY@  % +'7>3273!73#7!#7#3#  =(2 XW 2( D K2T 1G00Gi 'C@@Jr Y:K Y ;L'&%$#"! % +'7>323#73#73#7#73#3#73~  .W XW W| W XX W2T ^211G002,0011Gi +4@1Jr[BK[CL (&   % +'7>32.54>32'32>54&#"F  v{4]Mt2\LTCfE#JTBgF$2T sW}KwKTXfU};TcQy1i .@ )JKPX@-rpf Y :K\CL@.rpn Y :K\CLY@ . .-,$*% +'7>32#"&54632>7##73##73H  8.3:$"*# .H)QO MH O 2T 3"B2 * XC00z00i ,9V@S" Jr  c Y :K Y;L85/-&#! ,,% +'7>323#73#3#)73#73#>32'32>54&#"  XX XX XW Y?=Qj+Ppj4N4E;92T G0011G00CN6_E(1'32"&'#7332>7!7!>54&#"#73>321  D\%%54&24Q<(  ?U?h45% _7rb+Sz2T 81_ %6#3Sh41(Z\M]J(+lQRi -=]JKPX@8r  a [BKY:KY;K [ C LKPX@3r  a [BK Y:K [ ;LKPX@8r  a [BKY:KY;K [ C LK!PX@>r  a [BK Y:K Y;K  [ C L@8r  a [BKY:KY;K [ C LYYYY@:820-,'%$% +'7>323#73#73#3>32#.5467#32>54&#"  qX XW XE?Vl>t2\Qv{LTCfE#JTBgF$2T 11G00AsU1wKTs+^XfU};TcQyi 5@@  JK PX@7r  h   a Y:KY;K \CL@8r  p   a Y:KY;K \CLY@"76 :86@7@21.,'%$#"!  5 5% +'7>3226?>7.54>3!#3#737#"#"&?33#"  8:+5<+Jd9' WW WCe,@97.?, YpLy1F.>2T "y)1 F58T7011--z11B=47&%41@#1;.!1:@7Jc[BK[CL.,&$  +"&?>327>54&#"32>54&#"]I<"MHH 5C#=J"BbGDhe'(;YVC&B/36 =obs<1+H5"=6(\N3`j@$'cHa)?M$*2 &6 @ !JKPX@-p=K[=K[CK[GLKPX@)p[=K[CK[GLKPX@-p=K[=K[CK[GLK!PX@)p[=K[CK[GL@-p=K[=K[CK[GLYYYY@('0.'6(6'$#&# +7#"&54>3273#"&54632326'2>54&#"F/6]5?A$?Y3V^ 5H;Xh,-; j[̵  JK PX@K  p h  n  ca:K [=K;K \CL@L  p  p  n  ca:K [=K;K \CLY@ ZXTSRQPOJHFECA;97620$"&'" +7463232>54&#"#>32333>32#"&5463.#"32673#"&5467##7##"& (<&"3(P067[kCkZ '3>#12$8'##.(E7<5\9C9Y %3B(24Q'Hdm%#123NBA90^.O:!0(%>^p1$332HHN72.T@&26K@H4Jppc[=K[GL"&#$'$" +#"&5463232654&#"732>54&#"#>32Zk:  " (>+-0+F 3f?LRbM0?k;3%k]9J01B$-61.L@P;Vk K 9e@b#*  J  p cY:K[=K;K[ CL6520 99 +"&?6&+##73326?>32#"&5467326?r.)31BG[m+6+5) '% $ 1 3-2,?y/o#6%.$ .",>C;>+'1I@FaY:K[=K;K[ CL+)   +"&5467###733>32'3267>54&#"QT]EG[ r\ *;M.TR!@^+60 (6"4 cN}+e)L:"dK4oZ;6C<>?6D!9;;  $5,@)1JrY7'.546;73#"32>54&/!?\:,?'8M.-C?#!%!$R"310%B/*'$=+1fR4/="4aO:6(0432#"&54675$: C.G7"8<**S_! S!'9@6a[K[ L%$  +"&'4>32"!>5.32>7!_e)Jh=]i(Ih$=0# 19:?&>0# bWAx[7_Y9v`=!4E$32+73##73733#732>54&#"e&/ATm Ci8$*K'#P':&5--43273#"&54632326'2>54&#"F/6]5?A$?Y3V^ 5H;Xh,-;JYb0+3##73326?3#"&5467b W[Y  $ 8*(# b'+C $% <3&"BD@b6D@A(JpaY =K[CL66)#&' +!!32>?3326?3#"&5467#"&546?#7 F\ A<0 2Ha  $ 3*&08? 12 PRb'd1:T^$& !% ;4$7>$H:$+(5+=RbPI@F%JpaY =K [CLPOJHBA<:)*#& +!!326?3#"&546?#"&5467#"&546?#7332>?332>?3 /K  % 3*$  .4;3) -4>".1 URb %D:, 1IY #C8+ 1Hb'L& !% ;4$*#@12* ) =/-'4 +69Ta(4:Ta'- 1AB@ #JKPX@*pBK=K[=K [CLKPX@&pBK[=K [CLKPX@*pBK=K[=K [CLKPX@&pBK[=K [CLK!PX@&rp[=K [CL@*rp=K[=K [CLYYYYY@32;92A3A&&''% +'7>32#"&5467#"&54>3273326?32>54&#"yY  D6$"% 0\1?9%?X39@;.\ $"H;&.,'A-vg <4"$/MOSG9w_>I8zH#&dAY\4I324>3232673#"&"7>54&yY  &D]61CP 9E8-JGeW#:N+ E/(C& >x@ 0JKPX@&pBKY =K[CL@&rpY =K[CLY@ > >)#&+% +'7>3232>?3326?3#"&5467#"&546?#7yY  [ B<0 2Ha  $ 3)&08?!13 PR vg 1:T^$& !% ;4$:<$I:%+(5+2 1\JKPX@BK[=K[CL@r[=K[CLY@ +)   % +'7>32"&54>32'3267>54&#"yY  QS!?]?6D!9;; ?@1*JKPX@.pBKY =K[CK[GL@.rpY =K[CK[GLY@ ? ?''$#+% +'7>3232>?3#"&54632326?#"&546?#7yY  U ! A7* 1IhnBS 6GP5*2>$/A JQ vg 02IV$n;3$h\ =/002+> #9K@ 4 JKPX@.  p  cBKY =K [CLK-PX@.r  p  cY =K [CL@8r  p  cY =K[CK [CLYY@ HF><863210*( # ##+% +'7>32326?3#"&5467#"&'&6?#73>324&#"32>yY  `  $ 7*(# ]";O.3= HQ I<%3CI'"4  &2'vg 8 % <3)E#L=(#b++;,!"?&!4@% '=KPXJKPXJKPXJK!PXJJYYYYKPX@2aBK [=KY=K;K[ CLKPX@*aBK [=K;K[ CLKPX@2aBK [=KY=K;K[ CLKPX@*aBK [=K;K[ CLK!PX@*ra [=K;K[ CL@2ra [=KY=K;K[ CLYYYYY@ 75,*! ' '% +'7>32"&5467###733>32'3267>54&#"yY  wQT\EG~[ 8\ *;M.TR!@^+60 (6"5 vg xdN+)L:"dK4o[;6D<>?6D!9;; 9 JKPX@3pacBK [ =K[ CL@3 rpac [ =K[ CLY@ 31/.,*%$#" 9 9% +'7>32"&54632+3267>7#73>54&#"#>32kyY  @R 2"(=  .3.@2d=VL<[vg x:4&-%9' 6A33LEdK7pY9 AJ@  JK PX@-h   cBK Y=K\CLKPX@.p   cBK Y=K\CLK-PX@.rp   c Y=K\CL@8rp   c Y=K[CK\CLYYY@CBFDBJCJ&#&+#'% +'7>32#"&?3326?>7.546;326?3#"&546?#"737#"yY  *-/ $ /"(8uZ]  $ >)) A%)iE?b7#"&54632 #9!%".Ki @ Gi% +'7>32  2T d @rW[O"# +332673#"&546)!&*A)PE66d "!')E<0+ Em@Hi +77# ^6WQQrm@Gi +''73^6QQrX +@(W[O      +"&546323"&54632#!#"%%&$"[ @W[O   +"&54632%$%%1 @ Gri*% +'7>32'7>32n     Uj  L'@q @ Gi% +.54632  $ XB@UYM +!!B2f1@.cW[O  +"#7>32326?3#"&/. '6$   ' +%# 23,  ",+ *@'JcW\P$&$% +3267"&54632#"&54632> *!(B 0B$BMe-11* 0+4632#"&732654&#"C,.@B,,C)''& '@1;;13;;3"''"!&%NT 0+"&54632$$'(F 0+"&54636r!"$&8@5JbK YL +7#7333#73'#73' 6,E): C Rk+++5++$E@B J aYKYL$# +3#73#73232654&+326'4&# FuF QL=H1/\K4+0N=8YPR14+*4/5K /(L\G+ !L:!!%&@ JK!PX@'pn[K[LK"PX@+pn[KK[ LK#PX@'pn[K[LK.PX@+pn[KK[ L@/pnK[KK[ LYYYY@!  && +"32673#7#"&'&>3273#>5.>4M26@=R12 M,Xb&HgA3I!,0=?\i*54&#b hm)TW DtKuADb>@M*]S;u\:+_4Qe23273#>54&;4L0:<@;  aYK  Y   L+'3#73#!7#73#3#737!3#DsD C0 1C CtC D79D +****_+++@ #@ YKYL+'3#73#3#ErD CuD +**_++@(cYK[ L"$#+7#73##"&54632#326VP CWVE64#8;**RI0"' 1^I@F Ja Y K Y L+37#73#3#73'#3#73#731MB ;s4 EeL9A DsD ̰**++++** 2@/pYKYL +%73!73#73#E3$*p CuC Gv+k+**_ <@9 J Y KYL +3#3#73# 3#73#7= BtC BoFpB CtD {*_++Gj++*0@- JYKYL +3#73## 3#73#ogA C;hB DsDgo**4++&(@%[K[ L +"&'4>32'32>5.#"^e)Jg>]h'Ii9>3N38?2M4bWAx[7_Y9v`==G?\j*;F=Zi:@7c YKYL$! +7#73#732+326'4&# EvD WYzF,xA?ZS,6++++<9Wk[?#)&#=JX@U1!JAIpc_[K[  LIG:8.,'& ## +"&'4>32326?3#".47'.54632>5.#">?6&#"^e)Jg>]h.B)$ # ),  591/1% ! 9?3N5i  ' bWAx[7_Y,\SD%3$-2#- >BA0'0 JK&PX@5 p  a YKYK[ L@2 p  a YKYK[ LY@0.*(''+!%# +%#"&5'.+3#73#732326?%32654&+ /%,%K3B EvD WUOJ   IES14Bx(3%1(B''+++17BU ,%Q)GD!3H@E2Jpn[KK[ L33+%+% +#>54&#"#"&'#7332654&/.546327%):0,6# +E_P3I !!+B/4<2!#4UE/F$0)%&=7C[$#?.5=+&*71AE$<JH_K PX@ hYKYL@!pYKYLY@ +373##7!#7#3a Kv8%++#vK +nn^+Ez'@$YK[ L##+3#326?#73##"&?#u BD%LNQDA @@=J Y KYL +7#73#3#73'3#737'#73MA 8e6 DRC 8`7 ̣**++++**FL6@3JY KYL +#7#73#3#737#7 DJB :*N N*X9 ***))* 6@3pnYKYL +7!373!7#F*y r3#)z 2f*_e+f C@@ Jr  bK YL   % +'7>32#7333#73'#73'yY   6,E): C Rkg ++5++#&L@I& Jrc  bK YL%$##"! "%+332673#"&546#7333#73'#73'$%8%EB+,w 6,E): C Rk &1IA(* ++5++E@B Jr  bK YL +''73#7333#73'#73'T9 6,E): C Rk/kie++5++ '*[@X* J c  bK YL )(''&%$#"!     +"&546323"&54632#7333#73'#73' "!! 6,E): C Rk:')%'++5++ C@@  Jr  bK YL   % +.54632#7333#73'#73'  P 6,E): C Rkz   ++5++nB@? Ja  bK YL +3##7333#73'#73'Z 6,E): C Rkn/++5++#&C@@&  J  b _KYL%$"  +467#73'#3#7333#3267#"&3'KAX C RB 6,E): <:M& *,7'/Q'+++5+%G# 1 %&)?@<)  J  c  bKYL('%#&" +46323#73'#3#73.732654&#"3'>)+:%&: C RB 6*  !n4.55-%1 V++++ -""! /22JK.PX@0cc  bK Y L@7pcc  bK Y LY@) 10 / /.-,+*)('&%$#"! +"#7>32326?3#"&/.#7333#73'#73''# (! # %$  6,E): C Rk*()  +&-  ++5++% 2*@)JK!PX@(pa [K[LK"PX@,pa [KK[ LK#PX@(pa [K[LK.PX@,pa [KK[ L@0paK [KK[ LYYYY@ -,+*'% 2 2% +'7>32"32673#7#"&'&>3273#>5.yY  w4M26@=R12 M,Xb&HgA3I!,0=g ?\i*3273#>5.T9 4M26@=R12 M,Xb&HgA3I!,0=kiK?\i*3273#>5.>4M26@=R12 B&&*):52 ,"-6NW&HgA3I!,0=?\i*3273#>5.T9R4M26@=R12 M,Xb&HgA3I!,0=/ki?\i*3273#>5.U##24M26@=R12 M,Xb&HgA3I!,0=:()f?\i*54 41D hm)TW D91 ~9DDb>@M%*]S;u\:+հ%4Qe254 41D hm)TW D91 ~9DDb>@M%*]S;u\:+հ%4Qe254&#T9 hm)TW DtKuADb>@MkiS*]S;u\:+_4Qe23273!73#7!#7#3#yY  j0#(v CvD '% 3 8g e+*f)'K PX@=r   h  pc  a YK YL@>r   p  pc  a YK YLY@''&%$#"! "%+332673#"&54673!73#7!#7#3#$%8%EB+,`0#(v CvD '% 3 8 &1IA(* e+*f)HK PX@4rh  p  aYK YL@5rp  p  aYK YLY@ +77#73!73#7!#7#3#T90#(v CvD '% 3 8ki e+*f)@ JK PX@4rh  p  aYK YL@5rp  p  aYK YLY@ +''7373!73#7!#7#3#T9G0#(v CvD '% 3 8&kine+*f) +K PX@;   h  pc  a YK YL@<   p  pc  a YK YLY@+ ++*)('&%$#"!     +"&546323"&5463273!73#7!#7#3# "!!0#(v CvD '% 3 8:')%'e+*f) K PX@8 h  p c  aYK YL@9  p  p c  aYK YLY@#      +"&5463273!73#7!#7#3#N##(0#(v CvD '% 3 8:()e+*f)  JK PX@4rh  p  aYK YL@5rp  p  aYK YLY@  % +.5463273!73#7!#7#3#  P-0#(v CvD '% 3 8z   e+*f)nK PX@7 h  pa  aYK YL@8  p  pa  aYK YLY@ +3#73!73#7!#7#3#q0#(v CvD '% 3 8n/e+*f)&  JK PX@5h  p a _YKYL@6p  p a _YKYLY@%# +467!73#7!#7#3#3733267#"&MA CvD '% 3 80#(9P& *,6/Q'+*f)e%G# 1 %3K PX@B hpc c  a  Y KYLK.PX@C ppc c  a  Y KYL@Jp ppc c  a  Y KYLYY@+  3 3210/.-,+*)('&%$#"! +"#7>32326?3#"&/.73!73#7!#7#3## (! # %$ %0#(v CvD '% 3 8*()  +&-  e+*f)% >@ 5 'JK&PX@2 c  ab [  K [   LK.PX@6 c  ab [  K K [ L@: c  ab K [ K K [ LYY@987631+)&%$#"! >>"%+332673#"&546"3267#73##7#"&54>3273#>54&$%8%EB+,D4L0:<3273#>54&T9M4L0:<3273#>54&W##74L0:<3273#>54&7>7#"&54632;4L0:<323#73#3#?yY  ErD CuD g **_+6@3rcYK Y  L"% +332673#"&5463#73#3#$%8%EB+,ErD CuD  &1IA(* **_+l2@/JrYKYL+''733#73#3#lT9ErD CuD /kie**_+w #E@B  cYK Y  L #"!     +"&546323"&546323#73#3# "!!ErD CuD :')%'**_+@ 0@- JrYKYL%+.546323#73#3#  PErD CuD z   **_+cn-@*aYKYL+3#3#73#3#vxErD CuD n/**_+@4@1J_YKYL%% +467#73#73#3#3267#"&211N ErD CuD N1/& *-6(U$+**_+!K# 1 ({+K.PX@* cc YK  Y  L@1p cc YK  Y  LY@+*)('&%$#"!   +"#7>32326?3#"&/.3#73#3## (! # %$ ErD CuD *()  +&-  **_+@ :@7cYKYL   +"&546323#73#3###ErD CuD :()**_+@  0+'3#73#3#ErD CuD +**_+":@7JrcYK[ L"$#+''73#73##"&54632#326T9VP CWVE64#8Aki;**RI0"' 1^1X@U !Ja_ Y K Y L+)%#+37#73#3#73'#3#73#737>7#"&546321MB ;s4 EeL9A DsD (2 !%9̰**++++**&,!$2) "C@@Jp_YK YL  +%73!73#73# 7>7#"&54632E3$*p CuC Gv(2 !%9+k+**_&,!$2) C@@p cYK YL  +%73!73#73#%"&54632E2$)p CuC Gv""+i+**_$% ?@<JrpYKYL  % +'7>3273!73#73#:yY  3$*p CuC Gvg k+**_ D@AJpYK[K YL  $& +7>7#"&5463273!73#73#E #9<3$*p CuC GvM!%".Kk+**_4@1 JpYKYL+?#73#7373!737 O7C G/e g93$*p C0.%**312k+ <@9Jr YKYL% +'7>323#73## 3#73#yY  gA C;hB DsDg go**4++>@; JHr YKYL +77#3#73## 3#73# T9偱gA C;hB DsDki)go**4++(?@<  J _YKYL"  +3#73## 3#73#7>7#"&54632ogA C;hB DsD3(2 !%9go**4++&,!$2)3+" JK.PX@-cc YK  Y   L@4pcc YK  Y   LY@%3210/.-,*)('&%$#!  +"#7>32326?3#"&/.3#73## 3#73#S# (! # %$ gA C;hB DsD*()  +&-  go**4++S@@= J  _YKYL +3#73## 3#73#"&54632ogA C;hB DsDy$$go**4++'(e(N@K#JIc_ Y KYL(('&%$"$# +#"&54632#326? 3#73#73#738DE104hB DsD fA #FD/"' )2++*fp**& +5@2Jr[K[ L (&   %+'7>32"&'4>32'32>5.#"yY  ^e)Jg>]h'Ii9>3N38?2M4g obWAx[7_Y9v`==G?\j*;F=Zi&#3:@7rc[K[ L0.(&##"% +332673#"&546"&'4>32'32>5.#"$%8%EB+,^e)Jg>]h'Ii9>3N38?2M4 &1IA(* YbWAx[7_Y9v`==G?\j*;F=Zi&&7@4Jr[K[ L#!+''73"&'4>32'32>5.#"T9^e)Jg>]h'Ii9>3N38?2M4/ki4bWAx[7_Y9v`==G?\j*;F=Zi& '7D@A c[K[  L 42,*!''    +"&546323"&54632"&'4>32'32>5.#" "!!^e)Jg>]h'Ii9>3N38?2M4:')%'bWAx[7_Y9v`==G?\j*;F=Zi& +5@2 Jr[K[ L (&   %+.54632"&'4>32'32>5.#"  P^e)Jg>]h'Ii9>3N38?2M4z   bWAx[7_Y9v`==G?\j*;F=Zi&/?K.PX@) cc [K[  L@0p cc [K[  LY@! <:42)' /!/  +"#7>32326?3#"&/."&'4>32'32>5.#" # (! # %$ A^e)Jg>]h'Ii9>3N38?2M4*()  +&-  pbWAx[7_Y9v`==G?\j*;F=Zi& '7=@: Jrr[K[ L42,*!''*%+'7>32'7>32"&'4>32'32>5.#"ZmN    ^e)Jg>]h'Ii9>3N38?2M4oLa  "6T  bWAx[7_Y9v`==G?\j*;F=Zi&n#2@/a[K[ L  +3#"&'4>32'32>5.#"^e)Jg>]h'Ii9>3N38?2M4n/bWAx[7_Y9v`==G?\j*;F=Zi%'1@. J[K[ L$" +"&'4>32'.#"%4&'32>^e)Jg>]h'Ii!0"3N5I*3N4cW@x\7_Y9w_>&O=Zi ?\j% '3<@9,+ Jr[K[ L 0.$"  %+'7>32"&'4>32'.#"%4&'32>yY  ^e)Jg>]h'Ii!0"3N5I*3N4g gcW@x\7_Y9w_>&O=Zi ?\jD@A  a  cY KYL$! +#32+3#73#7#32654&FDAO]yEU EvD J=>ZR3+F132#"&5'.+3#73#732326?%32654&+yY  T /%,%K3B EvD WUOJ   IES14Bg (3%1(B''+++17BU ,%Q)GD!.7@ # JHK&PX@:r   p  a YKYK[ L@7r   p  a YKYK[ LY@751/..+!%$ +77##"&5'.+3#73#732326?%32654&+T9 /%,%K3B EvD WUOJ   IES14BkiY(3%1(B''+++17BU ,%Q)GD!'0E@  5 JK&PX@< p  a _ YKYK[ L@9 p  a _ YKYK[ LY@?=970.*(''+!%#+%#"&5'.+3#73#732326?%32654&+7>7#"&54632 /%,%K3B EvD WUOJ   IES14Bt(2 !%9x(3%1(B''+++17BU ,%Q)GD!&,!$2) ?O@L>$Jpa[ KK[ L ? ?+%+%% +'7>32#>54&#"#"&'#7332654&/.546327wyY  ?%):0,6# +E_P3I !!+B/4<2!#4UE/Fg $0)%&=7C[$#?.5=+&*71AE$<:U@R9JHrpn[ KK[ L::+%+% +77##>54&#"#"&'#7332654&/.546327T9%):0,6# +E_P3I !!+B/4<2!#4UE/Fki%$0)%&=7C[$#?.5=+&*71AE$<H@G-* JK PX@9pnh_ [  KK[ L@:pnp_ [  KK[ LY@HHEC%%&% +#>54&#"##"&'732654&'7.'#7332654&/.546327%):0,6# +E^K%*):52 ,"-6&7 !!+B/4<2!#4UE/F$0)%&=7C[N!!)3 ) r#?.5=+&*71AE$<:U@R9Jrpn[ KK[ L::+%+% +''73#>54&#"#"&'#7332654&/.546327T9Q%):0,6# +E_P3I !!+B/4<2!#4UE/F&kiÖ$0)%&=7C[$#?.5=+&*71AE$<3HW@T28 Jpn  _[ KK[ LB@<:33+%+% +#>54&#"#"&'#7332654&/.5463277>7#"&54632%):0,6# +E_P3I !!+B/4<2!#4UE/F(2 !%9$0)%&=7C[$#?.5=+&*71AE$<&,!$2)N3?X@U2Jpn  _[ KK[ L54;94?5?33+%+% +#>54&#"#"&'#7332654&/.546327"&54632%):0,6# +E_P3I !!+B/4<2!#4UE/F$$$0)%&=7C[$#?.5=+&*71AE$7#"&54632a Kv8%++#vK (2 !%9+nn^+&,!$2)JH$x JK PX@'h  _YKY L@(p  _YKY LY@ +373##7!#7#37>7#"&54632a Kv8%++#vK (2 !%9+nn^+&,!$2)JHrHK PX@%rhYKY L@&rpYKY LY@ +77#73##7!#7#3T9 Kv8%++#vK ki+nn^+JHyK PX@*h aYK  Y   L@+p aYK  Y   LY@ +3737#737##7!#7#3#3a J7b `58%++#4e d6K +%nn%+Ez %4@1JrYK[ L##% +'7>323#326?#73##"&?#yY  y BD%LNQDA 32'7>323#326?#73##"&?#mN    I BD%LNQDA @;cc YK [ L10-+('#$$$" +4632#"&732654&#"3#326?#73##"&?#&=(*;=((=)   BD%LNQDA 32326?3#"&/.3#326?#73##"&?#V# (! # %$  BD%LNQDA 323##73## ##73##LyY   CC 946: CGyg *g**3|**kFqA@> Jr Y KL +''733##73## ##73##~T9 CC 946: CG&ki*g**3|**kFq 0X@U.% Jc Y K   L 0/-,+*)('&$#"!     +"&546323"&546323##73## ##73## "!! CC 946: CG1')%';*g**3|**kFq $?@< "Jr Y KL$#! % +.546323##73## ##73##  Pp CC 946: CGq   *g**3|**kFLeA@>Ja Y KYL +3##7#73#3#737#72 DJB :*N N*X9 e/@***))*FL A@>JrY KYL % +'7>32#7#73#3#737#7yY   DJB :*N N*X9 yg ***))*FLC@@ JrY KYL +''73#7#73#3#737#7T9 DJB :*N N*X9 &ki***))*FL ,Z@W)J c Y K  Y  L ,,+*('&%$#!     +"&546323"&54632#7#73#3#737#7 "!! DJB :*N N*X9 1')%';***))*FL A@> JrY KYL % +.54632#7#73#3#737#7  PT DJB :*N N*X9 q   ***))* C@@JrpnYKYL  %+'7>327!373!7#yY  *y r3#)z 2yg *_e+fC@@HrpnYKYL+77#7!373!7#T9*y r3#)z 2ki*_e+f L@I pncYKYL      +"&546327!373!7#3##*y r3#)z 21()ː*_e+f '*@ *JK PX@?rh  pa  aYK Y L@@rp  pa  aYK Y LY@ )( ' '&%$#"! %+'7>327!#7#3#373!737#3#7337yY   (% 6 <0$(h D*B :šHg +e)e*++JK PX@:h  pa  a YK Y L@;p  pa  a YK Y LY@+7!#7#3#373!737#3#7337f (% 6 <0$(h D*B :šH+e)e*++w""JK PX@Bh  paa  aYK  Y   L@Cp  paa  aYK  Y   LY@ ! +3#7!#7#3#373!737#3#7337h (% 6 <0$(h D*B :šHw/}+e)e*++E!yK PX@.hpa YKYL@/ppa YKYLY@$!$ +74>3!#7#3#373!"&7;#"E-PqD(% 4 70#(|Q\K<@.v3;Y;AuX5f)ebJ>C9Ve*K@HJpbK[K[ L('#!  +"&5467!>5.#"#73>32'32>7!TQ H2@1V,* O/XQ$Df26&=-  IK M"31$:J%7 )[@X  pa  c YKYK [ L(&$# +%73!73#7!#%#73##"&54632#326?(5 XW  [=VP CWVE64#811G00`;**RI0"' 1{ )K!PX@9  p  c YK YK  [ LK"PX@5  p  c YKYK [ LK#PX@9  p  c YK YK  [ L@5  p  c YKYK [ LYYY@(&$# +%73!73#73#%#73##"&54632#326E3$*p CuC GvVP CWVE64#8+k+**_f;**RI0"' 1,/\@Y   J a  c  Y KYK [ L.,*)%#+3#73## 3#73##73##"&54632#326V W@W XWVP CWVE64#8 00B11G;**RI0"' 1/@   JK!PX@2  c Y KYK [ LK"PX@/  c Y KYK [ LK#PX@2  c Y KYK [ L@/  c Y KYK [ LYYY@.,*)%#+3#73## 3#73##73##"&54632#326ogA C;hB DsDyVP CWVE64#8go**4++;**RI0"' 1g'K&PX@3  p n  a YKY L@=  p n  a YKY KY LY@$''&%#"! &!+732#!73332>54&#7!373!7# 5jm XOWZR'Uf>*y r3#)z 2x0nIS1GMt>Ui*_e+fg .@JHK&PX@;p p  n a YKY L@Ep p  n a YKY KY LY@%!!!.!.-,*)('&%#" &"+77#%732#!73332>54&#7!373!7#?T9 5jm XOWZR'Uf>*y r3#)z 2kib0nIS1GMt>Ui*_e+f#.a@^Hr  pn YK YL$$$.$-'%##"!&"+77#732+737!373!7#%32>54&#T9I hm)TW Dt*y r3#)z 2vuADb>@MkiJ*]S;u\:+f*_e+ff_4Qe254&#b hm)TW Dt*y r3#)z 2vuADb>@M*]S;u\:+f*_e+ff_4Qe2<:953/-*)('*%+'7>32'7>323#73#3#%#73##"&54632#326>yY  yY  ErD CuD VP CWVE64#8g g **_+;**RI0"' 1&@@=Jc YK YL&%$#$& +7>7#"&546323#73## 3#73#w #9DgA C;hB DsD!%".K!go**4++[3gg@df2LJp n [K K [  L444g4gdbWUPONMJH=;6533+%+%+#>54&#"#"&'#7332654&/.546327!#>54&#"#"&'#7332654&/.546327%):0,6# +E_P3I !!+B/4<2!#4UE/F%):0,6# +E_P3I !!+B/4<2!#4UE/F$0)%&=7C[$#?.5=+&*71AE$<$0)%&=7C[$#?.5=+&*71AE$<8@5JbK YL +7#7333#73'#73' 6,E): C Rk+++5++!nJK PX@&hcYKYL@'pcYKYLY@ 4"#$ +%+73#7!#7#>3232654&#";Y; CtC )#34CPQQK',5&E3+*k-S< $E@B J aYKYL$# +3#73#73232654&+326'4&# FuF QL=H1/\K4+0N=8YPR14+*4/5K /(L\G+ !L:!! UK PX@hYKYL@pYKYLY@ +3#73#7!#7#3 DtC q*$wJ+*n_qT5@2sYK YL +'3267>?#7!#3#7!#%#/%#H+ M  DuX4)rA+v -(+U=7y3,**_"?2-DK PX@/hpaYK YL@0ppaYK YLY@ +%73!73#7!#7#3#A0#(v CvD '% 3 8+e+*f);m@O$ L U JKPX@Eh   c  Y K[KZK\ LK.PX@Fp   c  Y K[KZK\ L@Bp   c  Y K[KYK\ LYY@"mkfda`][JHDB><;:987653$/#%!+%3#737#"#"&?3326?>7.76&'#"&5&632;7#73#3267>32#"&5467326?3#"&?6&+C E9<.5$/17 #  +5( #"-,G1D D0?045.+"#   $ /(0!,B***%%U+2@*$e)*@/#%%9@19**43?=! (-0=-*T&&6+11M("7@,5JK.PX@6pc[ K[ KK[ L@4pc [ KYKK[ LY@0.$34%$ +%#"&'#73326'4&#"732654&#"#73>32"8K)/H"&1:*;N,1   I>/*1G0&I$AWBC+))A-!$=(-I<$(/G.!$0:/563O/8@5JYK Y L + 3#73#73#7#73#3#73 D CsC CZ`C CtC Dn++**&**_++:V@S- Jc c  Y  KYL:9876543210/,+*)('$$$""+'3267#"&54632#"&546323#73#73#7#73#3#73d 16XH0M  D CsC CZ`C CtC D7:*.%++**&**_++&=@ & JK&PX@? p   cYK[K YK  [ L@< p   cYK[KYK [ LY@=<7521.,$$!+73#73#73#3267>32#"&5467326?3#"&?6&#7>7T  DsC Du  E;+**^**$MOM@N# 4'NOK <@9 J Y KYL +3#3#73# 3#73#7= BtC BoFpB CtD {*_++Gj++*>@;  aYK  Y   L+'3#73#!7#73#3#737!3#DsD C0 1C CtC D79D +****_+++&(@%[K[ L +"&'4>32'32>5.#"^e)Jg>]h'Ii9>3N38?2M4bWAx[7_Y9v`==G?\j*;F=Zi,@)YK YL +!3#73#7!#3#73uD CtD  DtD C_++**_++:@7c YKYL$! +7#73#732+326'4&# EvD WYzF,xA?ZS,6++++<9Wk[?#)%&@ JK!PX@'pn[K[LK"PX@+pn[KK[ LK#PX@'pn[K[LK.PX@+pn[KK[ L@/pnK[KK[ LYYYY@!  && +"32673#7#"&'&>3273#>5.>4M26@=R12 M,Xb&HgA3I!,0=?\i*7##73##73#f ";!E> ;;< 2'*0 ?0;****1%+)3# JK!PX@+  c  c YKYL@) a  c  cYLY@/.-,%$+#3#737.'467>37#73"%4&'267> `x53(oB C B ^r73(j= B ~HEV3R!!IKU2Q%%&EH6]&))(O@=[%)).>/K%25Q>@@=J Y KYL +7#73#3#73'3#737'#73MA 8e6 DRC 8`7 ̣**++++**qeK PX@"g YK YL@!s YK YLY@ +%#7!73#73#!#73##3) DvD CwvC Cv++**_**_Xf'@@=JcYK  Y  L''&%&# +%7#".546?#73#326?#73#3#7Y1D)4(C B0+ D8A CrD + !/[**Z&  **_++y8@5 Y K  Y  L+73#73#3#73#3!73#73#|tA AttB CuE CsC B+**_**_++**q?@<s Y K YL+)73#73#3#73#3#73#3# CuD BvvB AvtB DuX3)+**_**_**_J7!K.PX@*p   cYKY L@0p  c  cYKY LY@!   +!#73##7!#>32'32>54&#"E Ct6$+Q D.0ASO(;'5,*+m*39Qn++5%! +K.PX@(   c Y K YL@.  c  c Y K YLY@! +*)'!  +%3#73#3+73#73#>32'32>54&#"CuC DuC CsC D//ATP';'4-++**_++**39Rm++5%!sK.PX@" cYKY L@( c  cYKY LY@  +3#73#73#>32'32>54&#" CsC D//ATP';'4-++**39Rm++5%!,]@Z"Jpa [ KYKK[  L&$!  ,, +"&'#7332>7#73>5.#"#73>324G )2B)&=. 1@1Q0* M/XQ#Dd+%H43$9J%*"32#"&'467#732>5.#" EqC C4` 2EW2]i'IiA_ed48?3M37?2N3+++**1V?%_Y9v`=bW  }=G?\j*;F=Zi?+4͵ JKPX@4h   a YKZK\ LK.PX@5p   a YKZK\ L@2p   a YKYK\ LYY@-,0.,4-4!-#" +7#".6?3326?>7.'4>;#3#737#"737#",/ #  &1"*2";Q. CvC C0Q"+aX:`JD.O'0&"M%7()>)*_++!fK3#-  JK PX@4rh  p  aYK YL@5rp  p  aYK YLY@  % +.5463273!73#7!#7#3#  P-0#(v CvD '% 3 8z   e+*f) +K PX@;   h  pc  a YK YL@<   p  pc  a YK YLY@+ ++*)('&%$#"!     +"&546323"&5463273!73#7!#7#3# "!!0#(v CvD '% 3 8:')%'e+*f)Jz+~ JK PX@*h  cYK Y L@+p  cYK Y LY@+*'%# +!#73##7!#7#>323#737>54&#"3A Kr8%+*#2C*5(C A0+ D7G+mk !.X++W'   hJK PX@#rhYKYL@$rpYKYLY@ %+'7>32#73#7!#7#3yY   DtC q*$wJg v+*n_%,G@ JK!PX@0  pp   a[K[LK"PX@4  pp   a[KK[ LK#PX@0  pp   a[K[LK.PX@4  pp   a[KK[ L@8  pp   aK[KK[ LYYYY@,,%&#% +#32673#7#"&'&>3273#>5.#"J 8@=R12 M,Xb&HgA3I!,0=2%<.! '&54&#"#"&'#7332654&/.546327%):0,6# +E_P3I !!+B/4<2!#4UE/F$0)%&=7C[$#?.5=+&*71AE$<@ #@ YKYL+'3#73#3#ErD CuD +**_+w #E@B  cYK Y  L #"!     +"&546323"&546323#73#3# "!!ErD CuD :')%'**_++@(cYK[ L"$#+7#73##"&54632#326VP CWVE64#8;**RI0"' 11>W@TJ    cYK Y K[ L>=<:42-+*)('&%$# 11+!#73##"&54632>7>?#7!#>32'32>54&#" Du  I1. S  C.(ATC';'5-"*$"NON"8I# 4'ILM#%**39Rm++5%!"/IK.PX@.W c Y KY L@5pW a Y KY LY@ /.-+%#"!+!737!3#73#73#!7#73#>32#'32>54&#"8 C89D DsD C0 0C E00AUnCP';&6-++++****-9Rm++5%JqN'x@ " JGK PX@' h  cYKYL@(  p  cYKYLY@&$- +%'>54&#"3#73##7!#7#>32N6O1:--6>8K Kt7%++#27EW'TPI?FK#91 ++mm <& I@,) 2 JK&PX@Dr  p  cYK [K YK  [ L@Ar  p  cYK [KYK [ LY@ I HCA>=:8'%$!%+'7>323#73#73#3267>32#"&5467326?3#"&?6&#yY  7##73##73#< 16XH0M  ";!E> ;;< 2'*07:*.%J ?0;****1%qiK PX@#g Y K YL@"s Y K YLY@ +%##7!73#73#!#73#" 6) DvD CwvC Cv+++**_**_e /@,rYKYL +7#73#7!73# DtC 24$%w+++*o_ JK PX@rY;LKPX@=KY;LKPX@rY;LKPX@=KY;L@rY;LYYYY@ +7#7333#73 | 6,E): C +++5++} @  JK PX@"r r  b Y;LKPX@"r  b=K Y;LKPX@"r r  b Y;LKPX@"r  b=K Y;L@"r r  b Y;LYYYY@   % +'7>32#7333#73'#73'yY   6,E): C Rkg ++5++ '@ JK PX@ r b Y ;LKPX@"r Y=K Y ;LKPX@ r b Y ;LKPX@"r Y=K Y ;L@ r b Y ;LYYYY@'&%$#"! % +'7>323#73#73#7#73#3#73yY   D CsC CZ`C CtC Dg ++**&**_++ JK PX@2rh  pb  a Y;LK PX@4rh  p  aY=K Y;LKPX@5rp  p  aY=K Y;LKPX@3rp  pb  a Y;LKPX@5rp  p  aY=K Y;L@3rp  pb  a Y;LYYYYY@  % +'7>3273!73#7!#7#3#yY  m0#(v CvD '% 3 8g e+*f)& +3@0Jrc[CL (&   % +'7>32"&'4>32'32>5.#"yY  ^e)Jg>]h'Ii9>3N38?2M4g ^bWAx[7_Y9v`==G?\j*;F=Zi)C ..@ #JK PX@+rpf  b\ CLKPX@-rpf Y =K\ CLKPX@+rpf  b\ CLKPX@-rpf Y =K\ CL@,rpn  b\ CLYYYY@ )('&%$"!  . .% +'7>32"&54632>7##73##73#yY   ";!E> ;;< 2'*0g \ ?0;****1% *7hJK PX@+r   b   cY;LKPX@-r   c Y =KY;LKPX@+r   b   cY;LKPX@-r   c Y =KY;LK-PX@+r   b   cY;L@1r   b  c  cY;LYYYYY@"7653-+&$#"! **% +'7>323#73#3+73#73#>32'32>54&#"#yY  ~CuC DuC CsC D//ATP';'4-+g **_++**39Rm++5%! 8KPX@ .JKPX@ .J@ .JYYK PX@6 rp  c  aa;K[ CLKPX@8 rp  ca Y =K;K[ CLKPX@1 rp W   aa[ CLKPX@8 rp  ca Y =K;K[ CL@6 rp  c  aa;K[ CLYYYY@ 20-,+*(&!  8 8% +'7>32"&'#7332>7#73>5.#"#73>32yY  4G )2B)&=. 1@1Q0* M/XQ#Ddg Y+%H43$9J%*"32#73#73#3>32#"&'467#732>5.#":yY  ~ EqC C4` 2EW2]i'IiA_ed48?3M37?2N3g ++**1V?%_Y9v`=bW  }=G?\j*;F=Zi? 7@@ ! JK PX@7r h  a   aZ;K\CLK PX@9r h   a Y=KZ;K\CLKPX@:r  p   a Y=KZ;K\CLKPX@-r  p  a   a\CLKPX@:r  p   a Y=KZ;K\CLK-PX@8r  p  a   aZ;K\CL@5r  p  a   aY;K\CLYYYYYY@98<:8@9@53-#'% +'7>32#".6?3326?>7.'4>;#3#737#"737#"yY  ,/ #  &1"*2";Q. CvC C0Q"+aX:`JD.g '0&"M%7()>)*_++!fK3#-4'4@1%$Jc[CL''  +"&54>32'.#"2>54&'[n+Lj>`l(Jl73"3Q8/P8 8 oVBuX3nW6s]< .I`1L^-#4-@*[K[ L +"&54>32'2>54&#"[n+Lj>`l(Jl>/P8 FB3Q8M oVBuX3nW6s]<91L^-AK.I`1>N+ #@ YKYL+#7!#3!734r66v66(D@Apnn[KZL ((+"2#"&54>32!73!?>54&G$T$%).=J@G;Jpnd_ [ K[ L64$$!&#&" +%#".54632+32>54&+732654&#"2#"&54632ˋt"@/ G(&C2LF" +g]@1/O{`Ke[Q05[`v,"0!+>(2*+Y=/+  ETD1/o55-J@G#Jc_YK[ L'%"!  -- +".54632+32>54&#"'!!>32!>/ ?--H1?=$KZZ;@S^&Da|+#/#%9I#11%? A@;aE'I&s&4A@>!Jpcc[ L('0.'4(4&'$&$+%#"&54>32#"&5467.#">322>54&#"$B_9Y^(NuMH]2$&J>. !]1Kf'A-=6PiG4^F)f[KR;3%%Dc<")G$:M(42oW5>XA!@pqYL+#7!#>7!+,GvV9 W Db}E9?;??6.s+='@$; Jc[ L0.&$,$+%#"&5467.54>32'>54&#"32>54&/.'&B[5_iD<!8M,Qi64 * ,*G==R93QD#>.?*; 331P9\BE_5"+D.GB0W;aL*-2A6)1 3E'7",-  Q#$4?@<Jc_[K[ L&%.,%4&4&$"$$ +#"&54632#3267#"&54>32'"32>54&EsUHe E,Ud#P6Sg&AV/Vm"=->3(@.DCCY;9"0',TK9]?"\/6J,632'.#"%4&'3267> db.RqBbd,PrE .$)C% _ 2*)C$ zrVOuvLW +%!UZ\%M !-&"X[\F?%(@%[BK[CL  +"&54>32'3267>54&#" db.RqBbd,Pr4E)C# 1D)C% zrVOuvLWV[-&"X\[&TW+%!UZ\b%@"a:KY;L! +#73267>733!73{ "3 3d ]>.  11%>@;pc[BKY;L %% +"32#"&54632!73!?>54&W-Nv]Y`%A[5&4(3Y]n7%.!ObKE.OJL+z;PH*6("FH@E  pccc [ BK[CLA@97$"&!$#$$ +%#"&54632+32654&+732>54&#"32#"&54>32'Ea8Vc""J4PeEL- @/C*;<.K#9L)Wf>9!  &)5U:LA&0#*eQ92/.733?3V$O N#tG0D\;2O@;&! JccY:K[CL#&#$$ +#"&54632+32>54&#"'!!>32$Ee?Qg#"L10I/>9%KZh:9"We8cI+HE&0$)%=O+94IC QYK(8K@HJcc[BK [CL*)20)8*8 (( +2#"&546;.#">32#"&54>7>2>54&#"Pf"K-]m ^#2 )2WO3bK/f_,ih_"6Aw*BT)1;%=N(5HhC"@pY:K;L +7#7>7!#7!TLf{?@'6A6_N; C93B7?:-=)@&; J[BK[CL20(&.$ +%#".5467.54>32'>54&#"32654&/.'&D^7.O:"O?";Q/dd87!+ **GDGMB/VBKh53: <-5U; +>(Qk8'0J1UE;^&;fY.6:G553A@TH)6"i80(8@@=Jcc[BK[CL*)20)8*8&$#$" +%#"&54632+3267&54>32"32>54&(_KNl#"R3Xd "L7Tq>_@\r ),?(C<.C)CY11EF&0"*%$WR2bK.cc%ork)?P&9>&=O(:AQJ-0@-#"J[BK[CL'%  +"&54>32'.#"%4&'3267>db/QqBbd,PrA - (D% ^ 4.(C$ zrUPtwKX  +%!UZ\*M%'-&"X\[QJ%(@%[BK[CL  +"&54>32'3267>54&#"db/QqBbd,Pr3F(C$ 2D(D% zrUPtwKXV[-&"X\[&TW+%!UZ\D%@"a:KY;L! +#73267>733!73w ."> 1 >.  11!2%>@;pc[BKY;L %% +"32#"&54632!73!?>54&o-Nx]X`$AZ5%4'2Z]n7%.!ObKE.OJL+z;PH*633FH@E  pccc [ BK[CLA@97$"&!$#$$ +%#"&54632+32654&+732>54&#"32#"&54>32(Ea8Vc""K3QdEL- ?/E,<;.K#:L)WfD9!  &*5U:LA&0#*eQ92/.73!?3V$O W#t@;&! JccY:K[CL#&#$$ +#"&54632+32>54&#"'!!>32 %Ee?Qf""L10H/>9%KYg9:"We8cI+HE&0$)%=O+94IC QPB(8K@HJcc[BK [CL*)20)8*8 (( +2#"&546;.#">32#"&54>7>2>54&#"Pf"K-]m ^#2 )2WO3bK/f_,ih_"6Aw*BT)1;%=N(5H~"@pY:K;L +7#7>7!#7!UNh~?@&6@6bP= C93B7C>-=)@&; J[BK[CL20(&.$ +%#".5467.54>32'>54&#"32654&/.'&C^7.P:!O?!;Q/Wr97!++*Q(Qk9'0J1UE;^&;fY.6:G553A@TH)6"i:2(8@@=Jcc[BK[CL*)20)8*8&$#$" +%#"&54632+3267&54>32"32>54&(`JNl#"Q4Xd "M7Tp>_?]r ),?(C<.C)CY11EF&0"*%$WR2bK.cc%ork)?P&9>&=O(:A>J #b93>6  R      F $ r 0m | >u ( < :q  Copyright (c) 2018 LLC Contrast Foundry (LLC CoFo). All rights reserved. Copyright (c) 2018 LLC Contrast Foundry (LLC CoFo). All rights reserved.CoFo RobertCoFo RobertItalicItalic1.001;COFO;CoFoRobert-RegularItalic1.001;COFO;CoFoRobert-RegularItalicCoFo Robert ItalicCoFo Robert ItalicVersion 1.001;PS 1.1;hotconv 16.6.54;makeotf.lib2.5.65590Version 1.001;PS 1.1;hotconv 16.6.54;makeotf.lib2.5.65590CoFoRobert-RegularItalicCoFoRobert-RegularItalicCoFo Robert is a trademark of LLC Contrast Foundry (LLC CoFo).CoFo Robert is a trademark of LLC Contrast Foundry (LLC CoFo).LLC Contrast Foundry (LLC CoFo)LLC Contrast Foundry (LLC CoFo)Elizaveta RasskazovaElizaveta Rasskazovahttp://www.contrastfoundry.comhttp://www.contrastfoundry.comhttp://www.lizarasskazova.comhttp://www.lizarasskazova.comRegular ItalicRegular Italic  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjikmlnoqprsutvwxzy{}|~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~uni00A0AmacronamacronAbreveabreveAogonekaogonek Ccircumflex ccircumflex Cdotaccent cdotaccentDcarondcaronDcroatEmacronemacronEbreveebreve Edotaccent edotaccentEogonekeogonekEcaronecaron Gcircumflex gcircumflex Gdotaccent gdotaccent Gcommaaccent gcommaaccent Hcircumflex hcircumflexHbarhbarItildeitildeImacronimacronIbreveibreveIogonekiogonekIJij Jcircumflex jcircumflex Kcommaaccent kcommaaccentLacutelacute Lcommaaccent lcommaaccentLcaronlcaronLdotldotNacutenacute Ncommaaccent ncommaaccentNcaronncaron napostropheEngengOmacronomacronObreveobreve Ohungarumlaut ohungarumlautRacuteracute Rcommaaccent rcommaaccentRcaronrcaronSacutesacute Scircumflex scircumflex Tcommaaccent tcommaaccentTcarontcaronTbartbarUtildeutildeUmacronumacronUbreveubreveUringuring Uhungarumlaut uhungarumlautUogonekuogonek Wcircumflex wcircumflex Ycircumflex ycircumflexZacutezacute Zdotaccent zdotaccentuni018Funi01C4uni01C5uni01C6uni01C7uni01C8uni01C9uni01CAuni01CBuni01CCuni01D3uni01D4uni01E2uni01E3uni01F1uni01F2uni01F3AEacuteaeacute Oslashacute oslashacute Scommaaccent scommaaccentuni021Auni021Buni0232uni0233uni0237uni0259 acutecombuni0394Sigmauni0400uni0401uni0402uni0403uni0404uni0405uni0406uni0407uni0408uni0409uni040Auni040Buni040Cuni040Duni040Euni040Funi0410uni0411uni0412uni0413uni0414uni0415uni0416uni0417uni0418uni0419uni041Auni041Buni041Cuni041Duni041Euni041Funi0420uni0421uni0422uni0423uni0424uni0425uni0426uni0427uni0428uni0429uni042Auni042Buni042Cuni042Duni042Euni042Funi0430uni0431uni0432uni0433uni0434uni0435uni0436uni0437uni0438uni0439uni043Auni043Buni043Cuni043Duni043Euni043Funi0440uni0441uni0442uni0443uni0444uni0445uni0446uni0447uni0448uni0449uni044Auni044Buni044Cuni044Duni044Euni044Funi0450uni0451uni0452uni0453uni0454uni0455uni0456uni0457uni0458uni0459uni045Auni045Buni045Cuni045Duni045Euni045Funi0462uni0463uni0472uni0473uni0474uni0475uni0490uni0491uni1E46uni1E47uni1E62uni1E63WgravewgraveWacutewacute Wdieresis wdieresisuni1EBCuni1EBDYgraveygraveuni2004uni2007uni2009uni200Atwodotenleader zerosuperior foursuperior fivesuperior sixsuperior sevensuperior eightsuperior ninesuperior zeroinferior oneinferior twoinferior threeinferior fourinferior fiveinferior sixinferior seveninferior eightinferior nineinferiorliraEurouni20B4rubeluni2113uni2116 estimateduni2190arrowupuni2192 arrowdownuni21E6uni21E7uni21E8uni21E9uni2460uni2461uni2462uni2463uni2464uni2465uni2466uni2467uni2468uni2469uni24EAuni24FFuni25A0uni25A1uni25AAuni25ABuni25CBuni25CFuni25EFuni2610uni2611uni2612uni261Auni261Buni261Cuni261Duni261Euni261Funi2713uni2776uni2777uni2778uni2779uni277Auni277Buni277Cuni277Duni277Euni277Funi2981uni2B9Cuni2B9Duni2B9Euni2B9Funi2BC5uni2BC6uni2BC7uni2BC8uni3008uni3009uni301Auni301B commaaccentcyrbreveCR zero.zero Iacute_Jacutei.TRK iacute_jacutequestiondown.cap question.smcpquestiondown.smcpexclamdown.cap exclam.smcpexclamdown.smcp hyphen.cap endash.cap emdash.capat.lnum slash.cap backslash.capbar.cap slash.smcpbackslash.smcp parenleft.capparenright.capbracketleft.capbracketright.cap braceleft.capbraceright.cap uni301A.cap uni301B.cap dblparenleft dblparenrightdblparenleft.capdblparenright.cap uni3008.cap uni3009.capparagraph.smcpnumbersign.lnum uni2116.lnum percent.lnumperthousand.lnum dollar.lnum Euro.lnumyen.lnum rubel.lnum lira.lnum sterling.lnum cent.lnumcopyright.pnum_lnumquoteleft.smcpquoteright.smcpquotedblleft.smcpquotedblright.smcpguilsinglleft.capguilsinglright.capguillemotleft.capguillemotright.cap asterisk.smcpf_igrave f_idieresis uni041B.bgr uni04100301 uni04150301 uni04180301 uni041E0301 uni04230301 uni042B0301 uni042D0301 uni042E0301 uni042F0301 uni0432.BUL uni0434.BUL uni0436.BUL uni0437.BUL uni043A.BUL uni044E.BUL uni0431.SRB uni0475.smcp uni0473.smcp uni0463.smcp uni0434.SRB uni0433.SRB uni043F.SRB uni0442.SRB uni04300301 uni04350301 uni04380301 uni043E0301 uni04430301 uni044B0301 uni044E0301 uni044D0301 uni044F0301 caron.alt acute.cap breve.cap caron.capcircumflex.cap dieresis.cap dotaccent.caphungarumlaut.cap grave.cap macron.cap tilde.capCyrbrevering.cap dotbelowcmbperiodcentered.smcpa.smcpb.smcpc.smcpd.smcpe.smcpf.smcpg.smcph.smcpi.smcpj.smcpk.smcpl.smcpm.smcpn.smcpo.smcpp.smcpq.smcpr.smcps.smcpt.smcpu.smcpv.smcpw.smcpx.smcpy.smcpz.smcp aacute.smcp abreve.smcpacircumflex.smcpadieresis.smcp agrave.smcp amacron.smcp aogonek.smcp aring.smcp atilde.smcp cacute.smcp ccaron.smcp ccedilla.smcpccircumflex.smcpcdotaccent.smcpeth.smcp dcroat.smcp dcaron.smcp eacute.smcp ebreve.smcp ecaron.smcpecircumflex.smcpedieresis.smcpedotaccent.smcp egrave.smcp emacron.smcp eogonek.smcp uni1EBD.smcp gbreve.smcpgcircumflex.smcpgdotaccent.smcpgcommaaccent.smcphcircumflex.smcp hbar.smcp iacute.smcp ibreve.smcpicircumflex.smcpidieresis.smcp igrave.smcp imacron.smcp iogonek.smcp itilde.smcpidotaccent.smcp i.TRK.smcpjcircumflex.smcpkcommaaccent.smcplcommaaccent.smcp ldot.smcp lacute.smcp lcaron.smcp lslash.smcp nacute.smcp ncaron.smcpncommaaccent.smcp ntilde.smcp uni1E47.smcpeng.smcp oacute.smcp obreve.smcpocircumflex.smcpodieresis.smcp ograve.smcp otilde.smcpohungarumlaut.smcp omacron.smcp oslash.smcposlashacute.smcp thorn.smcp racute.smcp rcaron.smcprcommaaccent.smcp sacute.smcp scaron.smcp scedilla.smcpscircumflex.smcpscommaaccent.smcp uni1E63.smcptcommaaccent.smcp uni021B.smcp tcaron.smcp tbar.smcp uacute.smcp ubreve.smcpucircumflex.smcpudieresis.smcp ugrave.smcpuhungarumlaut.smcp umacron.smcp uogonek.smcp uring.smcp utilde.smcp uni01D4.smcp wacute.smcpwcircumflex.smcpwdieresis.smcp wgrave.smcp uni0233.smcp yacute.smcpycircumflex.smcpydieresis.smcp ygrave.smcp zacute.smcp zcaron.smcpzdotaccent.smcp aeacute.smcpae.smcp uni01E3.smcpoe.smcp uni0259.smcp uni01C8.smcp uni01C9.smcp uni01CB.smcp uni01CC.smcp uni01F2.smcp uni01C5.smcp uni01C6.smcp uni01F3.smcpij.smcpiacute_jacute.smcpnapostrophe.smcpgermandbls.smcp uni0430.smcp uni0431.smcp uni0432.smcp uni0433.smcp uni0434.smcp uni0435.smcp uni0436.smcp uni0437.smcp uni0438.smcp uni0439.smcp uni043A.smcp uni043B.smcp uni043C.smcp uni043D.smcp uni043E.smcp uni043F.smcp uni0440.smcp uni0441.smcp uni0442.smcp uni0443.smcp uni0444.smcp uni0445.smcp uni0446.smcp uni0447.smcp uni0448.smcp uni0449.smcp uni044A.smcp uni044B.smcp uni044C.smcp uni044D.smcp uni044E.smcp uni044F.smcp uni0450.smcp uni0451.smcp uni045B.smcp uni0453.smcp uni0454.smcp uni0455.smcp uni0456.smcp uni0457.smcp uni0458.smcp uni0459.smcp uni045A.smcp uni0452.smcp uni045C.smcp uni045D.smcp uni045E.smcp uni045F.smcp uni0491.smcpuni043B_BUL.smcpuni04300301.smcpuni04380301.smcpuni04350301.smcpuni043E0301.smcpuni04430301.smcpuni044B0301.smcpuni044D0301.smcpuni044E0301.smcpuni044F0301.smcpzero.tnum_onum_zerozero.tnum_onum one.tnum_onum two.tnum_onumthree.tnum_onumfour.tnum_onumfive.tnum_onum six.tnum_onumseven.tnum_onumeight.tnum_onumnine.tnum_onumzero.pnum_lnum_zerozero.pnum_lnum one.pnum_lnum two.pnum_lnumthree.pnum_lnumfour.pnum_lnumfive.pnum_lnum six.pnum_lnumseven.pnum_lnumeight.pnum_lnumnine.pnum_lnumzero.tnum_lnum_zerozero.tnum_lnum one.tnum_lnum two.tnum_lnumthree.tnum_lnumfour.tnum_lnumfive.tnum_lnum six.tnum_lnumseven.tnum_lnumeight.tnum_lnumnine.tnum_lnum jkklnoop      $%89ABUVVWWXXY DFLTcyrlZt $ 0 $ b  p B 0.Hz&2xj j`T3~45{yhijklm\}YO@ ,(*+8:L    NB!SU&'1.)0-/49<>=IJDEFG2AHK?"%7CPSUXY[\]^`acdefghijklmopq{stuvwxyzr|}~#635;`az|~xnoMrsged"% >@CDEFGHIJKMNOPQRSTUVWXYZ[\]^`cdegjkmpu{   !$&(*,.02469;=@ACDFGIKMNPRTVXZ[\]^ab NORUWXpq{|}~ $[6r|"(.4:@FLRX`flrx~_UW gedf T$VQRTVWZ_bnLL ff  """, gedffSTUV"%!" $STUV"%!" $6",-MV-XM,L L[ (2<FPZdnx"" (2<FPZdnx &0:DNXblv  &0:DNXblv $.8BLV`jt $.8BLV`jt",6@JT^h",6@JT^h *4>HR\ *4>HR\(2<FP(2<FP&0:D&0:D$.8$.8",",  $""4"styy 6L"styystyy"8Nd"styystyystyy$:Pf|"styystyystyystyy&<Rh~"styystyystyystyystyy(>Tj"styystyystyystyystyystyy *@Vl"styystyystyystyystyystyystyy" ,BXn"styystyystyystyystyystyystyystyy$ .DZp"styystyystyystyystyystyystyystyystyy#O@ ,(*+8:L    NB! $&'1.)0-/49<>=IJDEFG2AHK?"%7CPQRSTUVWXYZ[\]^_`abcdefghijklmnopq{stuvwxyzr|}~#635;MgedDEFGHIJKLMNOPQRSTUVWXYZ[\]   "$&(*,.02469;=@ACDFGIKMNPRTVXZX{|}~W>{yhi_jklm\}Y`az|~xnors> >@C^`cdegjkmpu{[\]^ab NORUpqU<ged{={yhi_jklm\}Y`az|~xnors= >@C^`cdegjkmpu{[\]^ab NORpq. . n4ystystystystyst UUn4st yy  UU Ir$(2  702:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz$ $i$ $i$ $i$ $i$ $i$ $i$$ $$i$A $Ai# #i# #i# #i# #i# #i# #i## ##i#@ #@i" "i" "i" "i" "i" "i" "i"" ""i"? "?i! !i! !i! !i! !i! !i! !i!! !!i!> !>i   i   i   i   i   i   i    i =  =i i i i i i i i< <i i i i it ti i i; ;i i i i is si i i: :i i i i iy yi i i9 9io5 o5ioU oUik& k&ikF kFi !A "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrzA@AkA@AkA@AkA@AkA@AkA@AkA$@A$kAA@AAk@@@k@@@k@@@k@@@k@@@k@@@k@#@@#k@@@@@k?@?k?@?k?@?k?@?k?@?k?@?k?"@?"k??@??k>@>k>@>k>@>k>@>k>@>k>@>k>!@>!k>>@>>k=@=k=@=k=@=k=@=k=@=k=@=k= @= k==@==k<@<k<@<k<@<k<@<k<@<k<@<k<@<k<<@<<k;@;k;@;k;@;k;@;k;t@;tk;@;k;@;k;;@;;k:@:k:@:k:@:k:@:k:s@:sk:@:k:@:k::@::k9@9k9@9k9@9k9@9k9y@9yk9@9k9@9k99@99k2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz$ $i$ $i$ $i$ $i$ $i$ $i$$ $$i$A $Ai# #i# #i# #i# #i# #i# #i## ##i#@ #@i" "i" "i" "i" "i" "i" "i"" ""i"? "?i! !i! !i! !i! !i! !i! !i!! !!i!> !>i   i   i   i   i   i   i    i =  =i i i i i i i i< <i i i i it ti i i; ;i i i i is si i i: :i i i i iy yi i i9 9io5 o5ioU oUik& k&ikF kFi"*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrzA@AkA@AkA@AkA@AkA@AkA@AkA$@A$kAA@AAk@@@k@@@k@@@k@@@k@@@k@@@k@#@@#k@@@@@k?@?k?@?k?@?k?@?k?@?k?@?k?"@?"k??@??k>@>k>@>k>@>k>@>k>@>k>@>k>!@>!k>>@>>k=@=k=@=k=@=k=@=k=@=k=@=k= @= k==@==k<@<k<@<k<@<k<@<k<@<k<@<k<@<k<<@<<k;@;k;@;k;@;k;@;k;t@;tk;@;k;@;k;;@;;k:@:k:@:k:@:k:@:k:s@:sk:@:k:@:k::@::k9@9k9@9k9@9k9@9k9y@9yk9@9k9@9k99@99k >AhjJ<FPZdnx",6@cccccccccccccccccccccccccccx}PUX^ckmno yst xDFLTcyrl"latn<BGR SRB (AZE (CRT (DEU (MOL (ROM (TRK (cpspkernfZbz     !#%')+-/13578:<>?BEHJLOQSUWhijklmnopqrstuvwxyz{|}~V|~D~F&*06<j&*****      < j  p  v   j   j      p 8       4 j t z      p   2 < B H f  * x  "T L: ;$>em'p'rB|000&$SE[p|$ ?dek d?dfo eg ?dfgkog ?[defeg?defg|g ?def|g#?[def| Tdeg ?def| g ?dfeg; ;?[w cdi ";B5[kbci ";?B[cdi );?uES[lz>mp|*wC"uf %0  d P-"#;I?G@R`]ko^::M';DV1; ]I    C-B ?[k  ?S[   ; ;?cd??;M)) Y) 79:!#%3UIM Y+ILXYZ\  (*,.0246IXWX ?|didgipTdgux ?|doidgx!< "?|iTdegx/ "?Bmp~|cdiTdgx "?BBmp|cdiTgux ddg ? ???ii%;cn>m|Y~dfmggb||| ??   Bj ]f;Bw-]f g TdegB|fTegxy fTegxdgydgxxydgx ?|Tdeg;?eg;?f{e ;?g;?f{eg ;?{#;ES[f|{Tdeg;?f{g;?E{Te #%)39:=>?BEGHIORSTUYZ[^defgw 348:<?KLPRZhijkmnopstuvwy{|}~ bcdfghltxQ`derx{NEGZcMAmp|brr6 .@[uffqUe\Xp]n 9===H@ZR]e,6G N~  $ u$$  !s000090E-0'000000BB00000'0pnyY4  # $ 1 86/-##))33>>?? BB:IITT&[[W^^ ccddggYww%(jj<mm=pp>ss?yy@ABCGKMOQUYY)ZZ'[[*\\^^bbcc2dd ff3gg +,FHDVT "X5CC;QQE``IddJeeLrrSuuPxxR{{N!970.,M++      6S5ZHHH/SSSS(!TTT#   SSSSHSSSSSS        S S S S SGS5 Z Z Z Z Z H H HH H H H H     0 / / S S S S S S SS(((  Z H S   /S599J999IJ99;919999KE999I993993J;999J99E97CCbC?QQ=LL=C=C=QCQQQQQ?=ACCbCQQL==QQQJ3C9b H  S S S S,, "TTTTTTT..........MGSS&'6612::4<:F:8C?]PCQQQDDRDRR>@B%%%%%%%%%%%%)*%%%%%%%%%%%%%%%%%%%%%%%\%%%%%%%%%%%%%%%%%)))))))))))*** % % %%%%%U[[[[Y_[[[a[[][[]PN[[[P[[_[W[$P[][[$P$$N$[UV\\^O\`\X--Z #%)3>?BIT[^cdgwjmpsyYZ[\^bcdfgCQ`derux{  )M? :$i:z-&H-B$0B22CCC$888K--E 66U-''66U-- 9 f\iA@vj{s st yy      UU _a 2'3~/=KgKKKgKK?KKKKgKgKR@SAABT OOOOzO{WOOE{{{ {X164======>gKKKKKKKKKKggggggSSSSBKOOOOOOOOOOOO{{{{OOOOOOO{{{{{{=O=O=OgOgOgOgOKOKOKOKOKOKOKOgOgOgOhOKKK{K{K{K{K{y{?WKKKKKKKKKKgOgOgOgOKKKRRRR@F@E@ES{S{S{S{S{S{A{B{BTXTXTX KKOKKKKS{>OKKO>OgOR@EB{WGGCGfGGL(CGG9G;GGGGDcGGGLGGkGGkC9!GGGCGGcG7w w"ws#iiwwiw%iii iisUwww0iiiiiCkw )GKRA{A{A{KOB{~~5y{{zz;<HHl:HdH8ws+*qawiiixxjxjjtV]n|nnn|nn_nnnn|n|nM}PPQ`]]]]]]]]]|||||nnnnnnnnnnnnn||||nnnnnnnnnnpn_nnnnnnnnnnnn||||||||||nnnnNMMM}}}}}}}}}}}PPPPQQQQQ```^^^|KnKnKKnnnnn[oooobYoooooqooqaI$o&ooaooYouomaoq,oo-.mammImo[\pprJpZpvee#styU_`a(b #6"{}Myxfa?/1 '' Rn mgg u'&*Br!! $x  no k00ihikkllqrttvvxxzz{{||}}~~  !!                 PPRRSSTTUUVVWWXY ZZ[] ^^__ aabbcc ffgh iijjkk llmnoo pqssttvw yz||}} ~~    HeH,j+/.)(*u""$$z??@@'BB0``&mmnstlyyl{{tzzzzhiojjMkkomm7noopp1qqfssMtuovvBwwoxxqy{o||!}}o~~g<ofoYoYMB o oMo<o:R"Ri8RNW[T[R[$R[WRWW%WN[PRviR2W9T[v[WMYRoieJKIJKIHmslwUUj_a>cc-ddff gg5ii6aUbVqrpZCp=p;#RNv_?RWSXSX\OQxyx^yPPDQS]TT UU]VVhWW@XZ][[L\]]^^__`]aa_bb?ccFddee ff]gghi]jj?kl]mm@nn]oocpp]rr?ss]tt_uu3vw]xxyy4{{?~~F]DE^`G^A^dk hiklnoqrtxz ,<HJLSVXY[]^PPbR_cacqfqtstvwyz|4$&,.k$MbyfaAVwZvtm-[JxT=tTc}  nY s$$,                                 ,,     !&-"#$%&&'()**+, !!!!!&&&----------""""#$%%%%%#&&&&&&&&&&'''(((((()))))))))))****+++++,,,----####,,,,#(% <;<d)+( 2DD3gMgggMgg5ggggMgMgY>?667@ &````Z`[\][^__``_IJ\\\#\h$RfffH3333334MggggggggggMMMMMM????7g'````````````\\\\`_``````\\\\\*\3`3`3`M`M`M`M`g`g`g`g`g`g`g`M`M`M`N`g[g[g\g\g\g\g\\5]g[g^g^g^g^g^g_g_g__g_M`M`M`M`g_g_g_YIYIYIYI>K>J>J?\?\?\?\?\?\6\7\7@h@h@hgg`gg^gg_?\4`gg`4`M`YI>J7\]L"g_YI6\6\6\g`7\;;EF=EF=<QGfffffffjjjjjjjjjjd\\/.ccc -01UOVP,ZZ8TaTTTaTT:TTTTaTaTAWbBB Ci888888888aaaaaTTTTTTTTTTTTTaaaaTTTTTTTTTTT:TTTTTTTTTTTTaaaaaaaaaaTTTTAAAAAAXWWWbbbbbbbbbbbBBBBCCCCCiii999agTgTggTTTTTASSSSSee!$$&(*24= DHJSUZ&\],.EK[a!#ZVX")T#l%BuDO! ( )$}Myxfa?/1 '' Rn -mm{{""       $$$%\k\2154/' .0HVVVVVVJVVVVVVKLLM-6nnnnnnnP!,HHHHHHIVVVVVVVVVVMVnnnnnnnnnnnnnnnnnnnHnHnHnnnnnVnVnVnVnVnVnVnnnnnVVVVVVVJVVVVVVVVVVnnnnVVVKQKPKPLMMVVnVVVVInVVnInnKPMRRNRRR7WNRRDRFRRRRO@RRRWRRuRRuND R RRNRR@R>e(eeasswggwew*ewsesss+ssawceee8ssgwwsssNue RVLLLVnMkk^_]^_]\;BBB3" <&=}q~rFGSSvESAS?)ea{CesssfftfttxbdhjloophhhhhhhhhzjmllloooopppppiiiVVVVZyyyyXyyy`yy{yy{CTyyyCyyXyyCy{9yy :CTyZ[zz|UzYz# mm{{"""$$#$դ'ZZplugins/limit-login-attempts-reloaded/assets/css/fonts/CoFoRobert-RegularItalic.woff000064400000365040147176754540024760 0ustar00wOFF FFTMGDEF<58-GPOS@HL=vGSUB9\#OS/2 [`crcmap (a4Rcvt h5 fpgm  ?gasp4glyfhvXPThead16ohhea!$hmtxh)nvlocad :$maxp %vname69vpost8$3prepP xc`dOzY6__78~Cm=f5c^@b2 xc`d``^1 61Er*:w4xc`aa7fbc0b2121 PȠ Ӆ/0*00L1^gZxHxڕW tU~~(1C96m|Ɔlq(>3┲0?DD:':*mi(3?"d :q<#7bCe ²HarY{CI%Q,[9`LcP  |Z#{eW .3}nig3}yBMbD0y,Jc}z^_?]}0G] !/х'`[un֝o1v$rOh}|w&I~!SWk Q~=7-F w6;ȧz>L ^Grwֿ|Ly<wiWKIn^sʜ(VyF^Sgio{ZОH1Hn!$ ܞdܛ^PKeIo8wקn|xY~z ӟX yq֜Z눽Z5/^a>IQ4,3/DY=U"JobR"QԡڙN潦q]2A"0P@bd){×vSq~!zy6>xh w .m 27x/ ڶ5SkSfNcf Bx 3_K&lViBmז@?^8}(=A~n)ļ;ʳtgMuEa;RLJ*tբ;WoW׾]m|[cCl~<. ~Fy/0-Cދt^9xpi]D1r6#5A[:d2?FU[#g!>(ԜԈhn} {Gmy^F̳pn-+ C@G:ĝ&ҩ+e2Cd]/mshu:@)E{3G ztx͔}Le?繿PR4njj eX)(Z+҅QjKj+spa^\Kܟ,ejckb۳=9g;gg{wb^T$[TClQBV~9,a9-JQUPz=B*VۓRe֖@m:]fM7]D`;һ%l_oNڼ4׿ɿտ"=!=5#1c%3b)uM{@dO+9&'FE)?WmPbXU$ĮSQX0PfG)וϡVן쟞l( tnmqrw\sg]OuOI`5R̍^. O ǺNsst:-r*N:SCݡBoCO2CBV;vv47o\  oGrPΡ1yWWNĨ3Fz?j`q>%89 ~g $2A fI %I5F~`8#L.2Fr9`Õ\EWX1kD:rILf 7q3S[۹;\q7p/әAdRDjgy l2x趖7mPV1m`;>H;f1f3y3 ȣ<)5xU aJV)wxмo!)h fBU`TGNgIk1{䔊_dO ڻ0_HgU9^<74WE%~A22-uok˦kCl Z5>s[Qr⡶ksJUPQ %QU4Iz\C5JU.1Bm]&oA~\n奴9}PŏO ]EW!5qM|qDq9RSǜ @g뉦h0.s1>sn|_2>s{ap9 bi|0A!sl02A9 ] mn}[X|ƈ/ bO bϊ#/H&%Q" >VO's/BCʮt )?cZxcp"(b##c_Ɲ  ؝10ʳ2h8<,>,jP8 &'6}Vyf>1a>l @1A} pcfp٨#b#sF5oG#CGrHHI$8DXqhKh`ߺw#f6>+xc` 7yͿnjbBmm eFWô\w,δ oE?xm}XnFCIy~H!$EcbkgSF,t&4bp,i89,;EFgڄw?]/P.ɉlOz [ATTr @TDBZg@L\95=8^rs K RDɝ\CRˠ>rgKhi iHNC=9N#UHYK^RS4%4+<_ *q OA1>C\K?7KjEkyo[Cjh:O=ʤ @CzeJ} ޏ?g2 LQ' {SR} BA(Z85y yNw)}$Y-$XV=d|Zl =w-p㾭T|"mD&87GoNme> }t ~'nz|~owS98Abs~GГɌr1b='ΑNiz9(%%>m*.s.~ Wu/D < -wrPw|엢>{uw[]]yxyȘJ)^ S%QjL0E25 djq^M-D {72.`G̟iyC82-:Zϕi%)3߮o;өX3^<}2BCd@'?A2k; a0pFȌ%qJfXb1Bf|:l=L ~|{&2[fb$&$jOޫq(Lre^| ySR74|o$3\f&$wc6AS׳hsɦޗK1PJR=K=Cg)s Meg=`Q/p>B˯A_o9ۊk R@F= c/XN[rRmhOoHNBݮӕ޺{$@G 'E?7y7C}K >/Q??r`C)'PS?0FL^32_(Fhb3>1r&P/'1(LFkEF@/e:ܱԘA3+g60˷O[w_ {!}-do!,E_|Sc1s\8_ߒ8RbroOdyq9szV٬d}MU2ZÚB\ );>TQo=V y$ 69󷉳>&fm=w]ƻO@2Ox?^Cr;{O3;Σs7{NwOO?+ 4>fsx/p?|\$[s |=^F/^*sL: ~ܤ-863LJK gxTJoỏ?<`! QA_|L=AYE7Y'UֲbYͲ/x/&ɺV.5y-[+ TNnueseȾ ϳ+ %k^CMdSIlSfQ Mp'E/d[wɶ]+w-Be{L)X)wlo m@@RS!'BtƆp5<ʎ@rّԊ o}Ɏ {x̽ |\Wu0~{o6f{*hfI3ҌݶlX^N , % %S-KMA[$@<{ߛEdY?˒5wιg?hp0o#12=i)hMAq.ӆ>77/?w KoAXLY t 3Ņjy qAp!Bq *b=yD[jrt"K͏Q-PmR^bB[@9wE퉽ێpzq_4Z,nkK{)b51<=LX_4s&?w nw%|ֻ7;Ddm2ݾ˝Ϟ`jqv`>d͛x~n$YQE@"Cz:u#Ňx~(T=i )7Lz$w> Gn+za>͍Ktk{o f|dj_ãh[KXn13 knCj_÷:0j!H3#F?&BF0p@L&+O d[*#mzۦ-oH( bؽhDč!%=Q$j%~ŠC e!ɝ~yz^Q5VF#9I+5AƠZF =ßjeBfw#hF^ JaM` ?w(-7?R>U,?)})x~dc(x+8,[s!Y8S;XAHBoYm4 V[Xӣǃm]_GO04fEp ߿?[0HÑKPV^!|]5;8-H;|@h;* J}=[/UX5>ua (lݵ.f'C jv8`SZJu"zDO!sGoXLv޺pnxPe 7{d.3s]nxG蟯 µF։SGfnKA.L`ӻpҋ_?W,6_,bYϓ8b( ;a6cae,c ZAC8]b9kx`F&h4m}s enΡT_Ϣ D~=%nX*={Ƒ/UB4óB0WX6 EpqdYaXXANB W*@"H0DBؓMCl-faдM|+7[l'Yd@>} ֛s'Wve{W{~ꑍgO'rt ͒k'W~ŷծKIKܣv@Z/j k|G.F7HeZs=`VTAT2{./N6/fJ؝}{FtCiA| d8 @*5u䷹: A4@^9:-$L ZY9&u\rAi>4} 2S9gr㟇=UߎC{p)m~o87,ef_!e ɱbԆnAa (f`Vð5x'=xoyX眈gTCٖC\n!G;o>Ŕf+]`nԳZR\<3lrb/#cPbB7r0ы#|<#ߌ5Qf22Cz #''x<_#WO?7V}h݈nC ^Z!C:Hd"]XM*!c bWE:VJߑ=ؿеxHݣ2]/.3jlpk v Nq}x15ڳ19Ώ9W x)-,b jb ;hyٚkTH,zc%80VM IWt.oI_lu;aϮӱ}=nLh5\H2q86н9^;>g`i.W8a;u$!%:(n@6]1,2rUCzܴ{w5yvkY#MCf=TnFK? AʂE~'(-E9 +SIJ?w4ɣj~EEK:b}jkRFpC||GwcE0V~=xaIiJQc!]Ufh=;W?| 5di(P4NHK4P2w"愅'QrR%bsFm(‰ ?R ;s )l:d[o2W*ɩ{'Ǣb(d6]Vkb(iquL@U-=@&>SX*R,#ӕo4/hYCCC] nOY/Ν/u権s&qгsoncjOSX;^UGrHPÆa4+,^4-5zAܛ]w59e hEf |,S6% 1씫&3e1qXb'F3zkQV^^CݹזNXܶvr)Zꈢ>8AOӰ4r PHpJ"e8o0`pf#ToyK`A.4*j'/yeF·dw|u{fsښKXKgq\a ;lhh֜x(pQ0 Ή΍ Y%(#kE#Z"aH% p'_\\bk=*1jS&Lച]F0@Q}. \)vWƬW.緸^ӵRVt8NTcEh_OHO$5~|LX1߿ }7<^#P6n %#:*bxVxq8K]$+.P/0^S}J|O.A.IK6V$E;΀5z%5"@8Е+#IJqUw;KVd^25齃h v< pV ydx DfO!`ű#5 {R txo) b,ak霖nWm9Բ`*{0?6BN۟ @(Jz7>y09S+G_uSLALrGqҙnY0]@mPSD@FsXeXnk4ʹB2 ɨIF_RP$څH ]"GKn;R9dĒYν'޸kxO}b2Skob0cP:0`wbQ{$~尣PX}g}[QR0 ^n*R/=Dڏ>tTB|mV yN TbmteddїG M6_?;~}ғCzꑞƟҗW~H~uz *e(@2wv?_V+rs/~JJ3YKXSzAYb_ )1X&6Fuvla<?0,}=EoKY ㅙe^"`/zi8_S7Նl24rt8}b4b]"n@<+ak\DH`swNH?\SOfGsK^lድFPYOaۼ;@ ,AÚi\K'Só&g}G4!4#hQCQʅ '!##PjU%^Yk8W-5n3p>4V9r(D=M2PhBɈG;~[?$>\wKw?^; /޳RMhQ<!|h v+ŎX;'Ǖ I X_JTϺw*Gwx"&]ՄS|vraluS6gyHe(,5K$E~} AjFzktV(edI0&DH9}xO#ёzo$s^ױfQ/{\FnJ!MCe-M=`#6ÁlyAkh?۾Z>(%d_E]8D,{=72#,R}N kifO q CnBvR\ع\pzrpnl؁٩p9<#m'҃oǩ 9ބBY;Ӓ%6;+?4u?Q%#}RM&SkTKEz]-,ќ5Hz㑰Ɋ1JqmS#D[=foȉ;- K2&24#ݜh_M;llD; wJ"6Es3O%"Yֻ13ԅ$1P) WdpF"SOz`q%2ESEz^iZSnbN1l`.&8-꫎DBe_%*d?xcxz u|s แ7\DfYN>0poLr#}UyL,h. XlA<0$WǸ%+dmRQQNƀ)F:a^;<[b3<`x s8*D]`J)C?;?{ԙ9G_O xip$NY M/@^}CkV+sM H_A]vA/锪<*ϭ-dJj<{uά^ZMҍo;l>B |>R?ZBE`;0h g:~ Bg I|^kN]\E>dPP֡l\}O==Ľαst[,wa<ʥ>FzK69i^Ly/q/p#?Tx}lH{!noqF0j/ d"DH-;ҤjC̔d%NFpL7v vco2ok+guh&0~ H;\Έ$X8i uP`6҉BW1=+lCD"TxM6mƒrD{T2b^abePqOgV F:H0_U4Gw8AG$ֵP[rԪ*&nVqN\2Ӵ*=)PX̃Yk̚F.Ysk5 3]F\Yš`[L|9-,Jˠl}Hqtq"]RRH벳pxDtYgtǭymޒM2+0rO:{e|4 z ޣdh  [v&*\8Pm084ͭv.k/6^3WmߞlmxҊ]#A><$Faj~wd*r]6겥1SoO1mUq6rYX9 o E|H=$$r"1l9L!6(qAVhGY-TF]Dr+fj0W vKۍvdspȟ6$M[ V"3tOe5$ioUMX%6r7] )FVC͟\j[[ߍH" ҶD$#Ey Bg3-Y > er9߉gfHk,V+ /<35=~OZ[q \!5ue+ T ZCf>%WD1͟_lWsGBr]$LXDhcdk6ѡ]1R ĥQD#p/ Y 65p/ނQ@/tmw73;'CsÉc@b8uԚ>o$jǍ\oH g P1G6M+_\X:Ԟt],kR;5/KϫVz(C?d䕩G*dUx)=۸Dip⮼Ė1|`g†Wgbp4^_Q;G;bBsMbl޷p*]Acf{s _I9?`yXu@&08gE${%NX+qȶݟlF)m0|Yڻ\Z r~ُ |?zrv@,J766 ΍N*MBϏրG.[.Eed3.IZθrQL@q9 Pf!ǁV䁨ţ@ð% K1qƗ adbl:|p8zkOo-_ x%@  a] f] ڠHNm?4H÷yX~\*C}L;%, B7iXVwACA-N8P,sb0!rmܤ6zZ]Z|7Aގ1?=M֐fh$qql׊5EӜANc_}uB" /DvW9\SG쩟Ebh)%FG(7jCf1s\nO%-|5b4.s9b>Ȇ'{iF?7P:M1?,% `G)n~ScYFꁣTY$0Q4R+|N?U,vSs;فl? \PHyn(Q*k}l O,Ͱ)+ ,>r ̓vJ}{>L!|8x"voɂAL:SyB!u@9} 9g !砊8.({D2uNߧp:c8F'6>H(ZDRa5R8 D#J)qNxSPF_;?{E>7J\o6>'쟩j̝l zСslPBvi(L3@1Vgo DI!8!b@50B̷k) EK!/AZ:A `<&A7@߁fru7lJD|&ZPl7$: BzkץgOgts!_Nۥh'0o`Z}SU #rp<Y[Ċy XI;/6C(Z8SDx&@XBr ]{ni07^/6]W! Q"6d,] eDlMvau2ΖaS4V"OoƕˌǍР7-b]Q<";w,NOMNԪ8S8fhk=/[*g \l;Ӣ|s/oIClp<0i^{~7/N8F iCyayҫy=:έx{8/O%=7m00*r&7ӣ{ /]Z.hFS={7/6yHl8&W 29윍) *F.?lyk @~c[\_x`*0AB, XHy8@U O@t^w1JZA~', dY^I%dx DƇ(c aTdr|sɧ㜱qD&jZc: k%mN."-W+-$꺝b NI|)R۟:) 1DtQC1xtu8p>,p*̈́jgH8?\o]|,gjhg6=Q5<1TބG @OL:ZI!OE@QsJOģ*8!r[+66;#M!qx;;g ypßJxЗzBr5_zTʇBd(74D"D&g}]p R ;J,,wuN/2JLTx(49+T#:sR(_P[%[HØ N.iP e4}_<sdOf}+#<Ԓ_2/d9԰YgS͖!$rC[s8e3ف"BA+}*ià ox@x]h^l8k 58lqIH'dr3ʰ,m437sM7:\ ߸dh_Ou~5ew?ENzS{.=-@|(95iEJc5ױ?5N됶55-; Bn"/p$_dx&gU8;p-Ul;i\@- ( d2s?9:J2Ƈ}ׅNH7`"s< ώ"H9s j5Cܜ"A9".Zh6ł&TixRf{8r=:_W|…. =0OVzOpVO(-wYĢI/P8^$ՊuŲ8A!SSq*&o85|"W^6 /xR)csj;!*ܒ;߆&kppgڲ͆u*iAq 6pw+N*'}`Wr 1P<F=gmV|b*~EfP7Ϋq^%Psiw(EAh%˥*d< f j Wb7m! 7nWJǨthJ`64@4~6',qQiwkߛĎ8ni+d핒 WBKQvG8u,^rvُ>}6qO79}ql͑SrLo qHaHI;Tz$(`Rҭ/C^|I?yx\Nb;=^7f[¯÷˃PVdс J4JB6t֨.Xl:>V]Ncϯk{ /6Josx*ϻ9mwǕź.;jMV\UExWSqH%JGq͌!+QN+Xq WG֋w|s.H)soiIfy2=ږ!+B9D )^nNʹ\^PmSP .nr67^sp[~pB?L92ͤ9l !2z~')F0wO,KJ"$) B1#yݯ1M\B}x2z*V&SQ0FsTo,Lk;w.$#=#p)R,&\0m. n[ Lw.[vZ{2p˶v?K7(KӏVj(fV^OfX(~5"$' :Jvx;pw~~wz~}Z7\=֊OMBsarijib|:WNGB] #L6t-h9^5lXOqnC㴥IdҚHՒrCszz],ū82?1x-O/QV4AVl(82^.K8F=pl53io[.;>fOI_\OLFtq{t5?5xmOUZ7; r ,DHɽbHt I.EK&sh8)GfWnaVP}P1itȚ>aalv?q`:79jP#`{L,5Ű|WWO09Oqi@ t@lݐ@ fx,,q?G 3;q 1 XX &,ј%|fM;wVy dֵٹvZ[Nr qPInQց# 2MI8̞qaʥ_U铉D!Y(Y?nލbzg-7iD줅2-VxVhhHpA7!HțpJH8dEV" % k|b+JA[S!4fl<hy(j!6Y߭]FV*k^RU=tꮌؓ\Ɲ[Qrw-#C1UT$C6z *R]T a9fF\ƶR&Cnk)эDZ+xx!eW|$:7F XtV6Cd?N=oɪG6lF6FK7*9ޠdws#O&W77^bJc'[W^Av7cp޽!E;ӟK={/@׾" ?[g?\(5HLW7kf=86gxǀ 7. ѢIp{ T=ؗ vp‰sE-X>g&',w&KJ OR^>@9$o(fX9DV`Ea㤑8D~$!2Ѳ~_ږ@/l5IM8lC1bq>mbb@yW:UȥJ_nS$0~o2<N8mnE0 LL!c//rcucp4ʄsL25F|WOc[ҳkX޵Bxrғ}kp&/IÏug5%箦&-:nky5=L)"9S'!s(]Pzmyjh3Mw1P'S0q>G,73HIK߸zVzLA7 bකZ V9@-2*yz%"y_WJxdx9 Y "V`!-*/427r=ateK'g݃ ^9&bUwwgX!ѩ*jr6 G3SFkixfgxB"PE!4<[ۯW #d ^~b /J+ඟ&\9UU]]/ZRZ-u%vubM[X3xAmVY C&`BB?$ $CQ?KUuu[8??ԩ|[҇xBq:zhpROcH=m.zMOij5uO (qOXlQ/VWZ6쎧GH˷=豨jey1R~Y! bQI,kf afy]D4t[Ij/Gghdad<؆nk܃,xPK$TN9El{P-& 2}B=| |u*$ ?*9w-]bK"_ 0LdQtU2d` /oz wNL(5@V3jCH.+v5 W$FY0CA\rx;U(@]dz هؘ\h! n&dYTObi{Z3EEO,Uii%'gBN4fMߠ!zrSfn2SE/q4 ߸v5YS>Hi(2x DcD|e8v@ fq'IkR֚F -)A'0CܗV')5?uq=~t9,Ǡ w4 o4mfg-:Nj`[iׂb#h9*.]~wKnNoE,vMi0dwBp;D'gyԬqy_1(ARѾA g*ӻ/oR4ҽ*3.^ʐ @`uE1F / 6uO12 :TЮ;*e=RFzo2.0iņgu@ f,$Hi1m8#\6`ZPFa,\!?6'ɇ{(1=#ӓË#; 3a[ߋtGw#u!t77x:aC~̚-%H0CpGBՓt]&|62/>*,C/"rzWPt^Y낼w d1Ѿ u,1u;ZIut^a<%,b,ݝInD-Vj^BJwj%]֣7fd' X,7U`P]hF$:O@bDi\aZb7:8s]\B]0Ob'QZBs"A$ M gy r$ahi32 eYoZHڟ}^썱V $tFՀd5g%yq|r'᤭r8Zw9[cs_u=Bj _\wSRD,݅}C{V[>Qb^β֓!( :S\#ǹYalEVz\(Y,E\{ RG[}ު6TZ [:ܝŏv֣ zm7 >E*BvȏQh T Ąi/QBOha4$f"0MH_R]YY-_ sت&lP6God`9s[[Cv"rO RHֱ4 `.w au ڽD$Qk#0u=/|%<B.ᑠ@0i5 8 1^$51Zҭ}\#m"'CHj喀pm%tqKo8>qޝ-`{FND[B37~7^w'wV )$fť"|fF0 o "U^MϧWVQC?PS 㳴{reTi]žd 1#o['SD7?|j')$qLRķҏnjwׁ/ېYB4ո3U)h5I9sÇ~n: 5VvѠ`*AAkhpɄ wSo7߿UNډ}j*%e$Kua`D,TAv`<sSX/ b[єpAzN.Z\ruMJu݇=xA5ER05Fuv;"vlM<-eNA*^D8R8,Tta>s\Lh DGz.NǴ~~uP8HL쭀OuHv^V,1Y(Mɐ$$QTSP 9Uox(Al8qه,=z 0;N%"Vu>ų\R7ze 4ď*?|'{[ !%K%S&"aq"8{J(V:_cn_c aS%Gvg䡟1 03 -iF{ko ^k);r6>ORWsGf?huh]Np s±֦tw~ <`,w$Gԍ,jv\nZO | L,.g# VmPpcZagj{@ǵ lҗho"ਲTs w[ 3l-_ z^ Z'!\Ի> 0uzGѮɫI[U^|4`H.~ '7 0@jk-?+J}h WѶP=GeP BAHQw&&-ilA.$iW IdBXȍ5+z-Ffi_̥/3v f;<(QH^VS7('%a\\uYÆ˖t5}Ճ&!IX%8Bp1kTN.vXhgT]+֠'c[+8H' aZ qzDyӲ`{zfw_M\Vzwy%9o(Apf(]s֑CF 8f̂Bkq5*`7R(U&&ڛ"WfB)C!5Iʜ/ifx}C;~ ~n&3Tƨ`EQ kVw5W8k;kFODz1:A/|a uQzgb%gI%H{[^d[7LL:k?:٣q.цVG{Q0fer]h5Fʿa_jRnK- RJiVnU gz %gH-L(c$VX%%3d1Sr9?6jx+S`Ir]>KzY\_,_߸x 22q||&^^\d/>u29)ycȯ"9/?9 -jmlHWIdfJpN8-E:'`,EIeϑ#KӣØfۄ]Zs,MJPpnw4 7<G#0l/7ב%ؼk/s;Y9V~QO{ RCƪ X=(`+|)Ab(绯ȹ8swgǓ?du~SD/#*_ch~]U"l4ӛDFd\i1NEUȖ "d,f5<mPc$CNV x.iEQ$!Fp~vR(:өx4;bSVȪZLv_arCwv\n^p4Kn[,E -^Wp]|+q\k!?9[kSf Z$kuF:yi44pG3Bgfߙݾs&)Dj]2 lx,HM2 jmҢn_\-4X!7+( kUTF]4Y%¹L7MAurI1>LݴDJvG9݂,U[H\h%[-蝛A0Nki}4 `1?ku$cՁj4YGLsb>\ {-J% `MU)͌rGNaN0?^]q3\ p"TOj:!|j5bDy퀭Tȶ5:ZɤX5qv}ߚD%?c Rsiz0V4}tGl3޳d[%}Kmk7WvϲqToU#?RcK9tw8T&+L3R}h [8ٝf~4LvoWW)mߌ1w7%o4>Gz2&gࢀ1HaBCz0)ٰY`Ib_:n⯑G"r2E7YX=qê܎IBgw zpݧy3octуM䈜5.P0j۩1ƥ=ZbU9WΝvq_Zbh쫼UFFVfr::ṃ_P0'Ak]WWk+-In07*cR39qOk9(s%vQlx5 WY3$- xp*9qsxΉ)\gakDI`f XxJ 6讳/u_?w$ۤkMi& `N)ZF0@ii)Y4_I6,*H.swMcx؇:i!4s*L d z qk~\~}=AKdhi[UivzJiK=m7zZ2SͫzԶ AE" +T3B!yȮ{9=K(!*.JLYcQgV<~,7|^#irgݳ!1E蠩3Tnvn;@z[8"gnF9$CN\81x"@G/PNCKzxY  k;lHYMv몢g,x.YWg "ަpP$>v3MXn++_џJqHv_B~yEG oYMW|ZYHe$q}{#f::pЛSґpfBJuha(vN-fvPa +?v~ӗ-$6m-y*="~7JZ_%Rąڛ|s|ޜj O W{Ñ{^s[>5uLt;sG^}5KCo8gn9w =O.wL{њwG{4g=g\>z9y 0V@YN53%Mu0?  -5u/W:xGt r⡺߉-^O!J%nYvlmO"@d #^E[ϙ84mx,5)1 +cٍEEOv06縞C> 4M0?0š-#IE1JG/(l*MKKy7lxߍ'[?d(,c.}2aL qo]8T\h-,6a&Cِpl<ڍ%1`7L쭋s}%"]\~4υ|REZLsqk784xcMN`~癳$[cFeB W@wYDWH%fݢA$0\3ֱ^kZȐurM׭^omlռt\$zhxBtgz`ⴞxƙtBI$s g uc樒Uzt,KC=-XہLW)${NAdv: ϱZ,RkGqa%qx5UL_X!^ wu8W/ ~:+_j:wr+ ޯ=$"*."m?0cZY9PՄ+m-aq 0Bׇ)7f,:?́ V"XE"TfV`Z.H쮞^"O3KÃ=mRAQRozlf Jm`Cbx_"=z`VuA[A+ps^Ej \%U@޳#f- kw2H.ĝ"w\KdP')gv w!rc A,滅.KW6!Xa )ˁD]l!511A]ݗǫhյfU3Wq杖/5V4|2fg1ø[1C"@bH43B$kx:lNǝt|g>үV"oI/$:mTtfCnuQ&9 B?%%ڇب?Qe y hT?,yl]~~F{{>㪠nF9^Г14I߂3Y,?A OE7# t.)$eGX?Udǿ_m29t!Νn]Zͤx}]X,BW %T;٥LvvN`2 &?h|axI&#D}]#ߵ+GFWȭp͛')tݷFSãh:u`epQڿO]{TPJ ~~v(}WA5Zy&Tk_=֟a"@}=PY0La9 MϟLGܲJTVt鮇zw|/:-OvBj>jFv!tܕ1!_hp1ncHQ#]`청{Wxz턖H}xCc28݊h8|{JJ69:!<ɼIobCQ 4fiR?NX24>v͕Oךqo uI$X3"QM 213#$8R%} -39űPLb)HY؈ܭ$cy,^ jAv7Xq $혡C rҮ7* Sp=ҿai0]^mU;Bm?-g`Y5'2 r01€~:PE"f֎ԝqlUh4"\D+fQ@`4"i\\;qj&6zoCSƶtD+Iq_Mt$VS(+v9Kc-:>zSpz_?"`.)OLOJN6KMgveVD^uunm}/r>̷p[_~/4Z9bnMK|MˈI>1,t1 kLej Egct_>s,^?o)_+Roz>5`ԯ/1vG/Nǡ]MJ70bX[ai\(?l\O! #>jHs['}ކDz(bUAr8<0"k7hfE)hQCx#1 DqX㈒"[gt* b|Ē|DIj?BFQK?T)Z :Rb``ehZ-0*z!_5ŭ}|ǹd6BCf=޶шxPv88N4ٜ^-,8>1vE9}?E~Re]6ֈl,+ "xV nCwᨰAa2鼉dɯUQyj>M _4.##2rE9M2"Ŝ l^2D$nX ZeŸ̬VĦ歷3׷AKD]iYn}4(|_xgQZOt$G:΂u|'V Zkys"g7ЖjԀq+驉q\UrkdaB cXj2\E)09 l2Ľ1¦FM5<a3.,2]_tn3SJKǭ᫃wGirxB"¯|'.ߘ=h+6JMth2d`~vqm:0oI&QЅ(64+'a8 *J&Bc` QJ|eq_)|_ ^g"ubAm k?ԑl6WG<mzx/p=EkzW$znJZW& TG +lεl]7&mN[Xk2ZG VQ/ Ec_ixWV j3<}gÍ_7EF& |ZҤ26:<[f7En|f}ݕeW-sA_Xx]j=NV1M*eun@d lv%b*$cڅ^y,ky% f9EB+i,VaEo\M&!9`T~63x xM[v>a:6C80󠒒޼3}wvw~땵K sà wN$^(Q kjM%H^/S*M ޾dX0%/O'Jc˶wwI6RpkPS#D']Yl?w M=}>TX>s3;D8$]~Ty '쇢YiHP,W+VQQ$0ޕgΗ3۰aSR@Kb"1 3iymWD>"|s^pqnDŽ;-\,PF)E$:6ldA~7%V> kj hӝHc4:m;Vc~`Y+/tosA0 ,PD_lleUVNWxPƌvhtȲ,ژs$qUkfOI+=7:#x鶷7;Hgbqλ Ɯ)nX9[6 ܎i@x,M!7 ;q$B8xI)4=(1c|:]/cw_ l[*"#&+,0#5#ٕld6Y;$i%~]UE ?&(WrӏAEtyo!ox:~N'&[)r(g ]`j@zg :#ZKv~L()[S7:073= @`#TƨށËVlAH{*t@U)0 *dF̸b fLJ:_ q9lVb Kz/\p~nS֤uX {ZڇcITl+,|jlKdIU~祚)4 L˙p,%yӊĚ/TT53\c쌊)~qoÆ!-~7EBF$sn7;OXgn8q#K+ +D]  w;s\ܵ+UL\G^ʈ#^+sPCƖOmFᚉ" ek+9kgOT&*nW{Ñ93C䕙8(qgD 7A ^5_ʃoyӯy 7d.7+6gi"x$L?`Rj}91jSzZRo8jPaDccTDc;u1y%!!L0O,H̲?$[.w[4)&,b6|U.馬*K­ r &ELĂXdiC-&HBI@)f~tnJ5@*hX1A8P8~{?׊usx"X~ipE ƴ``چ1V!ujgf\ ,}Tԫ^>9 j''|rWU-&q&\gH%hBJFY#C<&SANZT=EBJXZZU8~TUsiȘ)C?0 lݚVBBcИ2գ-rEKm^Pgr9C}k6:= rmW'eB0,4v,d6_PRdCh xh# ݍ Hm?Gn3fe8,Gj!,JBk 21Tej"q|?>?x;a5f:0>rXn[Ź CG3NiJ ~˧;*7z!:?Ńi ?@#*`GfIj|xªSe]7EƷiU YU pM/ ߭jtkjo~FpIV9)`<.,:ȣ RE[~Ûzr`YHcFUu;QLJemx? :SÒ+ z2q+s+6nL#Wy\սnf ~p0܂E'7+T(:j&! ƱPu\XIqCPM Ӿ;q?Ј# Z"3%pN:xkG}ggP֭$rw6bw7'1t ;rw[?@A I3&nt0'_a R7oa>掭w3MX^戝F0 bحr"Mto~"!/w_^ڿr"GQUtU2O?ki*#4U=m]Sj5ӁٺL?z/?z/'ޫUAZ?v#%MN14_ Dgg;XE{}%COZHgtVS^PdE\k"*ɩTDh!da+);V324\ Uw\ry=k9FS=fivOJl8^I8Ӷ5KjFȷ: ]@,xpVh ̸źM\s Y#%NmҘqlfxIɨKLG:ex$zin\Twj^]wv.m WMPڞf'oj! E$ƀ>`KrZσT/pv_jǔ)sSƭ:4*a!Yt1@,2 Rg|[zPўm\iY ?}'' GT{4tX' z8^}\P> ' ^"wԃ[4F.Si.%` R2eOڗ~p\cwR(d$iW t hќVf%¨ssOc`r8a3hGIcc9 Rl]&:a#Z,TUqy74f E& +^%noepU7(@/Üd^]8zoy&s߿NJjc^"̎kqXWZkpX i+|`Æ~y/ *!Z0kH7dsVn$]g䲊̫9tϯ.yt_ #bJ}o0RERe?MFЌ7S>nxzFkZ4 ,\JrK9v9N-bSC52~}-zP0&%30H /]B 0 Ky 3py|יq:c)lQ 5,4A{494'2m'Yoh7 ]Ih; 3[as G 834 uP vd5֖Z!fq!KzрU4 A{ R/} (05{.W4U9Ѵcfu{4"]5M]xM_7Q]ɫ abU.%m3kx[fa{&XD>>4"A!eQnpt +\TN̳ld~hOOwl’o38>A:GhJ>PwCB&iji F[ޚϿ)kOW' hZLYi| 5",zˎ'MՌKdC;5M@9 \8m`.|2dlXhvW )Lu|nRjnӾH5ymv6ح@*f-fIZh:ow `ؐbC.ooLl"JO/ O}=Gl$; 2|ɉLxQRgZJSbu4u5ƺ]۟ED(ེ)w { mUOt3"|<`ߎIqEb?٦}e"/q2[8L0t 7mV 'RIDDt9lƊq%5 M&'K1W܁gJ ;_,`d`;}>#V-7<@P, VK|:rL<%]r{ͭ>d26("=`,s94KS]aLKӽő.a;SxTI1x '>`~D}]ЌCfdʘR¥JLiyѕT̄"ĂHdߓf;ɫm_{H|_p]39c9gH;:x%SE!a_ћGzh6χa\5 5?L(6suM6ח~:l^;W!T\8;s^cb:C#]7wҁ>#v"9aUFM\o[7(3y1~~qXWW2}R4M=. m>W4|&->25=f(ʛgW3qjOA3Z`4/Ak-+d "G[Sf]!|[Wxx|79a댥,Z9qO_ǓPJ5t%≸í:hkv!ga;lgo* sO[qgH;r3Y9W!O\>{f`H(9GOmϦ ,[dh+Tp2'ңlA`q9Rߌcԩ%KL6ISw]ؚw1q{w5lS]sVN*WS؞"U֧O"ʊPja|"&g_o'vf:;{tfY#wv՝HIt>́O*RP",% &on!y%*KH?AΉ$N; kKJ ɶLO{{@&2/xhoo;FHg=׵ǚ3r,^"pvP0U4fEƱ-*\޻ [v+alMѹUM4j> PK uG.^[GC_B/*L=3Ulqw8}2o)mML}9ssuL3cی4D_e#ffuJ}ǰEo4I~9tC`h&O^eeិ=3WJxHg~ ҍ5K_P6g % U@V= zL-j qj5z#JlՂ<;kӷLw~ۇw܄ǕQ"T "N1N-Zau?HcLy\9녜[$QJLCe6\xيbkb޵W܇y` l?gEIh$4(Yt XT3VxI$|#0 u-)M`+%Bύ:xI<,V$J" Jt kaM8Иͳɉ›o z>tq.53󶣶rq̽tpysxym^(,6j/vu rmۛˏY|5vGD+ʨnLp ,G|T4LyXS@%? 6j<~/$+ C7U)y|u3Oo3 =0'+Z緶fm:/( 퓻ԒV꠱`]Pݝޭ=Uċ&4HẃK':UVtIhFA$rd\)Wq]I6MW򱉞6$e0ҼH^}$ChӲ˽5Tpg2kZ_=k5?1,ޒ GjI] WO|?zA~ ϟGχ^լgLj]ONm`6` ([Л[ ,%dy&7l"c 3vB}#+ zu,{ w !^g2ѝM% \.~{M{u-Bl~|0>~0]gn-GqyWgr"|e7st;97xDޅҕ,]GWiWErGCEڛTterڈ.lP m;݊$7V/rh)\ME/cbi~dǙwgz#dPeBT*NMW=E=XK=p;=PŞ>?R΃.k 9fpATB> R]*TV @$k!Э.&Jp4D#r3 b8ԍm)yNL3WDo:ELr4T?J$Zwc̤/#Iߒ^qEp8ƽHEoE0H=&\PU>@j6J,3 gwQYQKa$#<;zo_nj"C"%,'V&ܪ9Ҫ9O*79'64ˍ.7 ;=9ӭ5'̪WYQʭ]wx@bL6t .j@C*Y.^MgCn9ѹ'pͤ!du8 l:.7_AlOm봏jKf<;b}%TA\V3uۣe I%:mcowf#:Jɗ/i\T!fyW|fv E,lχ}A4Lo|Exm2ɦ\%v ̪-E& +Zz[c1&s5 Q#Vm!zr&x$h)E+Gv~6l7Z]$Xc15q5kidфBæ=3Nw@Dih(Q[,=@glOƅttP/˼iޛOW3پ']}G.Ew 'J& f" `n-+48P(IK <ٿ?=2؝n>%w %|G/9\,bNᣜ#=]B{|)m'uf?XT5:cS3LEHQ~ձLDi)*#%E*%HMҲ#VUUU"Noޘ5ؐBy#Ք!;(dlƍ9O?T́STRŞ.?rZ~F]HO9x:vZ xyM/CZ@,-NZRYDQ7[ʹmlvT{qQE(>^KQh1^Rt"9W9yꯟ8zI*wT NDs%e !Y$ C3@4p-ijjGw i6ڠ-4F" ]c{]fi_i)=6{n_lNbqegGJN=*e&8W VmKl2T$7s?s#J񦋯8<17+N zH}0:g=< )Mf"r"l;I榁X(h蟳V`Uo]B /oz`vJ(zDН\^I'4h}{#t,Z$ݸ rળ>r^ C u-`h$@-vYI%kz]@qRɿc[!OF_p`5.~Tܹى18ɠH; ׼Ao"@.E]}bJl]Fy~:3 SqWe bZL:Cj]dT.7]ɇvYN+3:E`nCO @O=`4"6"g5qRh ُ:nvj¡޻tTlx9#}K Nʖ-l i_\V.?%!& Gֳ>zA*67Bf|=N&: %!`AFw.-%Z hBi RddNuٌcq\Áv9t k"Ǣ Ip3 < :aF˝=Ҭwkrdm%ZW&좝-ek碁s%}o'a.w+&X./Y$l ~.@IK`s3ϒ #ᙘrZܘ$vyBdOD@Ia*9>j+ٲ? E}I|GqcoOH[U3_@%[| .5=PȂF g%D T)"#C_F$B`:sMD:Z ^vc,j>׀fMVz+EHeiդV\6%o跏ӝ9hyfq=R.ؓ'&LV=3,]?+Rt% _IN'-j+wM ş+F˄oH8SC@AeD*[3[fqϚY5Jom? d*!-'%'#u; Wk^GċPW#!ⴈZ6v!xz#cVBuSA>') g.$ azfx"[i02`Z܅+u lg&"ڎ5K%Gċ_գHVWJeţ_c{:Pں)':n@SAH'"prsVP.4lGjVoP$Ѿ-39ns$.Ԛ-ihP Cw ى$Ʃ"4oIlG$uKbIMBv4+~pu->w[fpGk!c;bXډ (4ClPQ nx2 CaU0ڿ(jυHBӥ5,q-xZ,총®'Yw0Hz#D/ΪV'pUԪh|#Fm(*pv b}p`ˁP eYW+귻"ǗL.6n,~֚ޛ?u8Hݴn#.Tdp m C"-L!yMg1xڍE `XdcK9 ` K{m"ܯhB$gz ^)Cg$^40e؂-k@:Uj÷PSs_DhXN~\a5m9:Vgm{QS?A軐<5\.P$PLCDgZˉ*u$\"Y}qY^@C5{F)b~٩qH'qQ+<2uH\q@4 %/E%}ࡧ7Dqt/:EyP* .vE4ltHuPl#!dk:-cCGsIkh +ޒhQ3Z,.$O5^FQ 1Di3&:+Tկ~Q{40CN^wf{IEm: =<CC,p6Ofҥ$gZ. y+A`u-\~BkNǬ \ߖ FKUS0)ϧN{NU$QdLKIKD>#rD>"*HHA2lR\ ]HћbY}`/@4B GreU \#ZVڠq^f-WX‰)Zx a)ſq^яӷ} Q#Ãd<h$"یl,\o߇vw؈z x_` yTGNή$=$=O‘;M[^0AqZKV3mH.E_M3F_(3qu Ao鷍}F" %!z̺Epu;35<]`at"z Lt̃kN(A0Ea31 2fz)al&)`@w%{@<'T3 t~j*.gYVψFQ ȋ&ec>Y}t_ .Hy̲;2NK@&|~|sR]g!=_fhe8W k2PO"fkVQv Kʩ hC׀V"Q$E؎hE JZuK\Ut{g¥|DX7.Z-0,\X~ rqG=, 2M'/90 %$MB# 8f,0Fkh-Tv弞v8ƄRG&m8ݵQH] Lۤ% e(ܻ7_2g-uf]kEKHKr$owI&BXokzRm#5@q[;Ù* 5vIcYK#$Q9:է_ jsZk.QVWr& C6{x1h}3δtp~K tsŪ1~\_뼱 Şno;n n.EUZeuȤtY2gQf_Z<#wV 62: W%0U\TVK}rࣚҠt š7^Hћ.tFfAK{qA DhE׆p8(qewux7:m9wMӓ)Ǵ&RfCZ8溘VUyGh*ʚ$H{6FOwd+PCM]!_'c#z+'&!gzt:6K^64v'c|iٱ`YKXdxr%Jkƽ/޴U- ~u{ge7]womёv7 yoM Ho(k7kvqhި=-D3H'Pf5$ұGENק6poHgwcUuݭWlC>-se#zԘp. CC7͛($я ".`0. 8 [@G63q<9Gֲh4ha >\ {F\#_g>Ir󆀐l L%H,OF`Љ:e3 &Nm-Hpi&N466Z͔GRg^* i;V Z`{Ռ8!B0d#JBP3kQRU[A-;hvթ7(KF mEIR`[no##EXݿ>HLG?:A "% y! H ͤY# vldTGـhvk~'&{+R!_Gqpw VNAɈ˧3V$\L'qoPgMnzL'SNj]LӅ>ZmCZr15{ `XE(\'0n嵨Q4ݻ֌IQF1l k؝aA4 Щ<n*OG? >+TXXzrF\r|W}P %(@ȧLkAYpUh:zf?g:U=ڬ&!㐚A6m]TS~n.]E#xFk-jw`B9RPW~al?_~Fvs*`0`ǐi'j0  [8-֬y5A9) 8~XDԜHvjr769uyl]_BDoMvѼ:JҴ≄\ އvܺfTmj>Yc^hAu|6g?`S";g'Rsz xѹªul)&= C`'vv]_5#K6 L^X&Ӻ7+7~{cj4|gɴ9\NrzdFvB^#-4`qj@C.9KbMgTy3fQouO OǤjk,;_#Bjkymv =4|`UIgT$r%w׼k8.$\p/t5*sF܆jj54kL?jϋ|%.%)%cCwk}_66X/BE8mt#{48]B"du !c@`i)_Hfg:;$f/:z:{hjL"uܡ(֎|Hy]Q}e t8=%W)r;Nl&TP!b֝w}G]!8dzz8uROL`|v7X謥,l{;p܁mX#3hk%cGXiX=PdxoL6{LGc XZ\$ ,$AwZBoj gf uRTuxz=2<71z὇>* ~E|K\#*ǚ=HbV{<?[wሤhi[kKуS>]4ZE&.` (%MR+"bD*tO/d ZfhGg>3|:S69#C|? MP(e嵓ÊGcǩd!,q% ڶօIAj5B/u\{ 6>tIhPYO] Q@wWU% $A8>nvDE~5:?C&xb h֎%aa HR ҤBBɌԁd[P]'K,99.`zfY\(UK:}ܵۑQƀnHZU%]k>BKRAg5X5Xefq|0 X]sH?܉H,\*dIɡB"F%V7N \#rщX:JFG,#A PH_&z;mlC'&BD >Sptj-g8Ng%( \™-Y,77f+a5 A&dg@4l<6e6lו {J=&Rzo~th :І7DڒE~o, `Ij0n'p#X8=/cZՒjIhO;l!#oSGם3F}ɤG ΞNM W7ϓ*첀+ yh$5hpQ ~W¹pvB*5C aX[`[% vG=.Qz F6t& Hܚc?GYiԶ;8{gI?#?oܚ:3h;?kF4v;?1AB?.7?MGΔ7 icyc 3+ .}jh~i.r>lI3fJư,S7Ff.kOU͗)L޸2S |^]YEt" 淯{p r3(+ޠ7q'ĽO 0ζC b;!E >q.SWسl" yz/RXfObcIfl6:%] Tj{ o'Rdr&[A.-x.683΋mˢK[Ӌ`XϽХ^| [^c7^2Auh.&uLKd 6c'0l^U>t`MJQdhTji" 'gwhE͵r8B q"rҴ% }ݏgu;BX J!5= gg/E%XJÛ?FN-ο&'jGV @,7C@Wu2ׄƨi;{3VGb!1[\EpgRܞ<vɅRbWO̷G庹e@z !tIɘ9R;I&>7M&=IWΖtV/*ىZK<9 W`6a] F^׼&KH`n.ȁx8Z@[IPm%5q{TGv%懍os48> uT-ǿv?u?G!(:xH&@\]*|`v4Vށ\>S獽t7)# s﻽{4OL!1%}WBشX;1XX&mڛ#hNw7⊊fVf3rM٬UtҗT2Vſœ<,@k =a] y|wvt~7nC~FF3&3?JїEg@aEѸD90&6CkQŒ4"(f V+V[.Y\8bJZ;}}-/xp:YSu&qoTԿ(0PVQ0z+?/ tKB-#H#Huܙ{_OyiQsU/[xoo]{ekշJHEHmUV:=V#μ V_4N$ ^,Ns6sdbYyErQGEC{%k)t&7%ՋT#Rh*0ǣF^/E{q8j6GZ0 p^0 ZV)xMo/#-ZBga R*+FA;\2?w۝W\8|XCᇟK/N_*|~'x=%P^PbPYm^2^xߣ.Bk%!W*s}ͬbpoԽmxW^}WX9Vu.Gl* 'D4$^l꿣QwA^8+pa(!IM#4<MO?pzlU+oarËwq~LEE:h,FQPZ[R|oO2@g2gP)ZH%S=@6O'PuFcEp< T:i)#Gcj\|nV _7]o\~yչkͽ^@/OGg̳:$b5ךq "?o̼zC;9s,a ,Rل_pv,T~`yڃhxu7l:AxY-:AJlCXqXtIkCk*–RR]BP : AɀĴ1bH:PAJk[R='#u[G^:5uBˎuL~yzp w(Nܽcg-S-ljCP1O+ h<^AP<Ӵ?:7ƭY#"؂$XT{ZeWtb-Jb(N u(LjN fFp3!o Pqb`d" eN4,6B.?쭝 'a MfG,lॵ^.azq<dz.Štˈb,ʙ.1" *U>w~r|xhL^@dC"fu0 #d6HXNEeΖb@]䶘 ("J,O}HfÒdrM8 N֖*e: SgOq#@^YgBW TcE+;+إ2bضst?/N dJ^rؕyrf# 5JAFeX\<ŚýLN+u;ZhHZ7m]HAcTq3k:h́`Omfx@ 0X7Ў[t[YՂI*chxSBOBmOU*GKC Hz}c X;7U{J=Nє '-K%j z\^x86HCD84;; #zN#^<[QƙiN>8s2S]3e*_julCmJy{K dFƢQ% sSfsЁNVb@fh*+Gp^`gƇ:5oEGGG{+tf;=pĩ'O; S TZ31gF5??5@r؃No޺ԲM[]Ah{NNPN0(U[ ]g8FdX_J}zze /" 瑮1hF^J}pQʾؔ *Qkkg{ZH~f \6;}9v~0L̄^XmT;g2/d/陛GNGNo{!o|=5>9"#'S=Jc ߋV@QY_\«NW_ /|՞c/j5װ[h>}/#W^s9~O=e',uv%ԵcᕷRC?6!mCs,]0F<:kocO¿5mJ՟*KoWL]\9e_ ICVxZu.ޮno>?K13?:\vưw!B/ F.N&sܢb켥lyg>.`_$F,ؚI`٬|M AZuqUgQar99"{ѣo/P*s'XujfaV S霚@[$6ךbJ#|9~֦gLn@58K.3t;jR4PQo4~ >:XX $!:pՆ|"gFce@*( !.M% c2D(pEcͺ,! /Kqau *^a/or4#X] Gk5;xhaF.1¢N8! "@jd&!U/T8Ydբ.g{ Hw6UZ#A'j4S*]|NV9;_Tm;*E=Ǔ A^n.$2?}cS_뱎OIY2RR5v'-v'R4:AS4OnHFgXx,עFaVsr#T4T';xNZ|^Qo@\*@mo\iEţQW"UhX r,Q/[BIMzYZ{9"^;&JqRZlfݡh&q)ڛ^~z'9vb2C-G ;Rf\c!/Z <-,cACG P[04; @,ktNVJL<oB&0l$^dib1uIGXHRE< A/MVi{ \)^GrLⰘ&J4}d4S"&4LV*jp.37&KޜJgaAo,=S;x7Y2[3(brIؑkXBjVXn#>`FBp,$`Mutix5R cz7ھ9c8D taW} 6S2L+j /N1)1)n긓ߎ'ͳUZWf tZti6}AgRޞ=D(ҙ6"y;t L'+k:vO9p)HkJAyTZ&\W~O!TO6t_V'a!qR_=jh?k6vv{Z*3RtuιٻDY<#bOuES?2,R3>'SeXYRϣ?Fr3R۸.DW,A`"<6KL=_6zDs3ԇ➢ YN/zAbL[CИn`~Cgm *ol+Ș3}ژ?n>`RKYu'Ⱦ>tPx7= zO!]x%^Ow_ի,GSz)9X>^8K)I1[";~v$_xo*U~e.cj\%,w{&_8^R R?%N <%=$N1Շ&#HTHl@ΕZiNC8! ҳT8-.eRk*(fXٔ\hH6$eAK:5z5~coW&1VݶdtJ,nCpGǧ3Tm " _~SaSSE~w1MX$f߮cڢTNh~įqep% ^ o?π 0+?__>ww7ׁׂ׀{K \.,1EFzXZy:-o*إ*Jk[[aa*|L!đ"rLnW Qp;bUWBl&3<-`澚9>rz'x|4mL!_Ns;d$(H:K'O ]I2^3du-f,v箿ݶn~5Y"}f2ٔ3p4w\~ > B gs)=,WA>?>lfMi'S7mG}x*~w?nA$rdzlKC fh4 9B!p9t+_i=N雙E ^\N&XlC,Ғf~wJz僧Tf;=r;0ֿ Uth#ON_NkXå^ }Ǚ#`mA 4RdoDQ\5I=j&5 >jSelg$ƪ$Q&j&gW3GߊGg_ţo.Nu:vs}׷,gПX(ex3wI[xCZm`SV-X=͵鬭Y`2{k?&B @hXm 8N ZO Ժ 8IQȼu:'x~ u~bY,Nq7>`9pPi0޶UoB?94ٲw5 H@X7.y\V&pPhZ v^R.SAXN3=%rIK)+|{kܠ҇@1_M "sK} EQiUbn:'W hq/ j^oY[>Qtzq]?\AP,,jy.ݥ&7l`^{o\i<~i (v"ր %} 9SaI g7ΐ/hBuC`@ًEwFބ;aI|ZhoʓGN'=I:j鱿"{\3U.u;ZCEt=pjB3 9$Guh9rsFrZP_ /"LT-8o 'Bg$W?nvN+̩C.^=j-S8A_mդf0B_'͡pBp'0#8O;֒j1U]WC> $mbkIu *Jd.S` f/;3-z,檼6|\vGc/)Sx:NCAgv@BCFBSxG|+255 _:L>ѲwRZ2&?qV߬@K9q<0v[wN}L=wV?{&U [Uݕ;09L<=IFm%dɲeYG&1  >ڰ6`1&]]cz{G#[Fu=s9*e}[i$ I%/z^Cg df퉵7~33,Uƹc \ ch箺+WC;p Ȯ"Cxg'5c?d}.r7tW\?p]wds3eIt.UgۿoGN|kMt*k(PwcrVHA_o`qmy vaesߵly.Gngd6dd-ɆOo4>O㑃ZSKW]}>{@ܒs/t. EG p2сR{ ^5{C0 ؊3Hp>ˀI@4|4REQ J`j0 pKXQF|elv8ahp0⺿db.RO/ ՅJx o0eᎉ-Bzl14±` _L Oo7De"_@O$܄8<=p0 l${|^l: VE+PeA؂[*eA`e Ê̲S'޿wxa8׌yb^OuO'.̇&f#CRj}p4t*^ *^ :ݑd{ݚ v?:~H7̃ 2hƆN#5k,``Q0q+HɂLDI:95MY?>Y.l[&vIkgSjpg;X |Y^~7C-߆!~ECɮ^3@DkֽL 57> lM)m{y0]KI.5W~gw$.}Ζ%!ڃ[,JNe< |Kv+gEOvČg4*IVFR A.mt#Uo)cC\Ӆ쮄7a9ր?G|]8u.2GZ8?1h4iQN`U6΍F-m{OYgڙ-쑆g;{O.$oA|KF\!}k#QؠeU0ӈ5O"V2e hf'OHZkbWC^z`W{ԯo^yO'Wy}k_grxbD\ _,.de~Bڃ$'$$1lBv/Qk 5Wpb#%wHwv Vc%9J: r<43KOmm +aYj9 b!p.Zm,8Z.:s3Sɉ|KL/t.鸊Wsph(ݱTC/o-\o?Z,^z۶/έ\?7sϛa.e }2x{o)Pf/y/߳eGG^w{o^^yOwνmvo];XI4fj\yIpȶwpw5uܞeWao1]kG`ĭ i!T/gVUza,@7p k=W>x?ce]ˎ;R|q#04[ثkd#x!؃~9arv/'M=T뗃k@Ey{R]缑7O$qG-v;DW4~ ;^q ؅-k/ijZ^]]~[ߵkj4YoqZwl-hTȨU:DY[w`&3*)+*ӣPɮv>`RMfTӁabU)aXdjZLye87Vb>,+ICE/A|ŋfy˂ȸ&2ES :of !tot&/dżD_7 iѶKVv\:351s&) v;QrG=ss>8].;ʗ'6͢rf.u+O ΰ]F~|6o<_MYb^e^ - co2PuL< },I)zɊwcl <[V`%$  :V̢tb_W[& ~Zw=HۖZ^ٶ0?352PG w1`f~w`)=@$@$ i)%+Gʑ'pZg6"LZ,WjrXphg%wi)a Pv$g,`텣s\jl)6؃q@IƒQB ["Hz0ęXu*\(D'"nGi_`;ۉvr8A}eTEаH5 Rȷh6HA!["18o?0k,-ʟS>Z<{,fPw(='ж_]Lgo{ήwt7k_{ M7TGrHGK|e b،w׍Wio u8n :%V|'46q uwqIu;4jvhab Ә{-$Df =w] ˽-t(9_n_*RU=Y:eqO 7DA /MD<;<鑀ѿS*%~U9hb\NS}=BTޱ{a䆣cK/Np4Lx.qx#Gqе߳W" ܃"*\dHĊg*D?N$ZɊRE;(@Rkѭl9ݲmVK^W./9w];w,o.uGTws)6[kWUm -N鱤 -iξB^5s%J*?9A!+8qsűAwhxf,']6eW'аaO_rgH/ݑpX|vđ3x>??o{ɞd?ͷ ޅ^,@ք"+fwA׺8B{\Wnˈu1;<("-8%_5vIt;B%`ըz[Լc&=Wf˫/2xw!׳\9*DzQc1ț3BG rC"G^ sx^GC!' PN }~ڎVpf a6$!5=c &|IWQp$<ɱ\0]-dmm46eIAD춺yGܡ|w27V LJvDh{FD6EOY(y\5]掛ߊܳ؋'ΛA$:sMī6Jn 3GKX]{YT>{HɌnٻ;R:B{Ӆvd+':G- \s; 3>glbW=ãh^a40$#[ԙ2rY|.i>K6bDi8M/ 3L5U/r#C#])ghh[| I|3wGӽL{*>AW`xt`uLj: 龁W3t6c?][c`OLJ *{VG#!r؍fޟ'I|E=[6Cp(|&S9ik9Y#:RıUjpm{&, <17RڱYҠR#'`W)w|/&ZoG&菕sԍG_:BƷFNܧm ~nzK;? Dĉq N"1hA|ۮ@9^51p6(30G4F|8` <@eZ74L L~_u.;Wm6)4|±V*+ܙI:6WCn`leYxoʋ|?1klga9v>E~]8 mY4x3+2^۴ Hw `4&0'nr tJ [DRyoq\+xp;e!G: 9zmƊGʖ j WͲ:mJ\3 ean erNod*{FFHGٴoGr?מewyo.4QgxNTyH dVp 驱3k;m6YE_DMCKʹ^fȼچy30w&GD''v[|LT}H[(;*yĚʲqwr vg'}mxjʓ[bj.kFra#u90K nbn,# x- ;J\gb%CF9iAIhUiDH݃ugҙLRCYtNULjשׂ&dPnr81y ?\2݂١ʽdOW )Oq[wێ=[o8:0ts{yK_6U>X+_A @~!""ti`0c@#Ǎs5 dS$=rҙԣlg1XTwWGBDߝ=\[I Ϙ?ڕt9(ʄ2AlQ=!z~ʟ@ 8ݨl򝡤(H./;wk@F #e12z=D5f]M뮭o Z[.TzDMFFO=U.|wמ}"GDSLN7ύm/\S®wf "Bwd%AgjM ͜i ڨ 23LzRȶٌ̬7rjOV} 1Щ{4[ں30hO{iqW, /?Rq~h= ?q:><_f)g'|aLWT<4ƙ@^ʼ`-!iabDZ:MFa̐uC[ qFFu(:|2뙴Sb1g6Xc}diu*I--'L:Kd "6ѓWU:K}B`,YHEp2П֭տ<Ggly< e??y? ^wΊqb! ϣ OO'"Qje3`VRXתp TgmdFb<[[]A'谍G]_U]HZCPRj*!7ә@Q W%]{TjRjJqx /]jR &3mDt$_6or {\Wo^WY@4\&7m:1[@iW|*j5*!kaUUN>Vu\nV쏦]1/wcȀ/鰹ڽm p0e |~y0`~$"d4-B5- eS2;I"Q%!N{ alvTM6bz䍚 ؎$\*%ř$1gj]1o,VYqܷdZ5Tq+9l썦w':;vJt<65k\O  _H/iLл5$;O|r?:H_1ͯ1Lv ?E2v3,|OI?+"$=2`1_x-WX:botg$tw {:λa)f*Y1V]mOE`s䭮 g.Y2mq<:Qǀ3oH.Nf1r\f98hb8 h{U/ſ17g ;{Θ2mHحAq3Q,JAӲB0w;w@@6|Nw"tř9֑ss&E-p>)F$$1wV}H^bw&I.U-:JXG/Rّ?s]6ů>$qe%@; kCi17PçAOAϞf_8 B8VA q}q$h]=".ULX8qTvu4r YHBCvJ.#)ٖMc*9~wٖ.jGNElo1?bk]R%~\qC'Ѭʡ55HzZ:o:>bO8p`nUe}AE}ܜ_љtWLg*J%á[ʍh*$'k޵G;4a}5[XS - _DDG1<欫-sEšن=O߁+lCApP0#w1"o l^ =nrJ%>PKrhS(59|Z?:,|2z{sз@Ҵ}EG>z%3V eR``,@`F!lP卑fVUF_+[E\K_|hi ۷}|s7 d2KЛ^>}[7?< '֞exXI*I@!6x$WMf)2;? \ƺ곶9l$'=x Vۑ|,SWν/Y2ܥMe}ޡ$)N-=iD˳SYS@|f]E$։ fK vo&֧up/\\?;eO܉Γ|Lr:$>) #lw?1" M&"}'%E'&{j)N0|7o,W~>Q{}*?DzR>>̀JRbwF O=c8?(@'I'@V#@a2.mm|he lLNMvmVmd`Fw6X2o,q)ɷ{ɥɭbi-o$h(zh =ۅZDi92UIR>rW$EN\Hg[]B Z”1䣥D^7~YRnF2\l_óWf/f<K.JaCV> ~g c_^KFvYI2Wud#av9¥vlګQ;*3+si:876:8 }@aI\G A|+8ROxe a$: J)z*x5o-7mVYuʧSU"sߟ|'g?K6VF[*G z,RB僯偪R1g*gj(_W^ښX_ҰU8xQ$,1Xk f~\HCkhd+'ʛj1i$mWg˙iAu湳*|r ~r%aF :"2QL(ciA @K•qf.eJ8"s5hF5>p>GG^0et&p$%ҥihM>AfI'uI'zU MlrS0pŇ'~84ٿm_arCWfF_rE,? #"8h掋ܺej/1e(`wot3]Zïv:rx"Op{dTS]C{f]ĺ8-5)Mx pD^?~/ B(B`+"W%xO ߓ0nп8VL::]̾Lb'b &0Of ]^vcQMtyI,姕/y|eߎŰOeb噅=D.=J=D)Wާ ]]Vڭ> xğ#yʃ\?H+ϸ33&}td"7daSP@~< H_W!g/HMxw`? b?}`gc gQMŃcUjħ;JCalȜ·zU [g `,8(i*be"-,]D~53%% 97ɒ?07#| US;z~tKɉ_M@=J}#SN$ƞ<=K,o囝Rޯ͆Ϟ:543~̵g5֘?@ Vf!Y3|;kX?ݏ3_N(W>3>SEj<?oג3-_"h/ʒsM<ۼ$wa'C-ʌ3pm,FDMS[1/'DZ`9i!\J֑_ZyI3NEMڧ$6w"^v(<),9'Qji1(OģOwӝ$ .."%'S4u5]sld[{T%9*⸷wW ѩQ%S𭆵#;q61pTxqC,c14JĒںGX :/Ƀ1DgvI:k`& C`4b@`w"'Ug$PChG0D_1#ow>-qJVIȰPxBcC:y3:fdM,41&5m<\ !{ý⑝^blǤA)J: 2o8&sLqz3Y}Uɤ;=*oAo ֟' fH#G^6OVmNqahs-]>ăH:l \8 {1;G/i*jV۩ 7Ho-Sd3!uu} ?nX*h<%vGLWD FqXyVc~碾Z <ާ0ޥNn7^Y'GnfQJ uS 26\L7(M%rfAtA .3Ӳ"|&Aw MkA.l<":~h8qW.z0#!cJ)kO/e)+|k*t2 TG.l_fwpHg*uJtkMG/>5@r{mS{M37@A7Mm6jvͦٷ$uB `mrpSJ%ջ'5^VE fƑ'y1oZ # % :5tCҩ7ܾojGNuDpyn ̴*L mz\q"ŗ:h7+/bx'=6k҃@nx7=܋'/?oϡt `4RG`YnLP=aOݼ۞EM?rOҍX~\_+yط!z=ޜoom \[ø`oyxUʦu"c>Nǵ@˼x pY8#pH '+ĵDXTl֣}҄q|B_P.].WU TP䮴Iل'?l@]ڜ1!(#sg"~$UcB6xt iMBt_4chk>s%*J݌uyK"vh:e"hD缵4wnά6g˂TG䟅X[O"lc!˥, e faAaf uC\jl*'":ʱ!D 0'1Y; Uvߨb t P-b zj͠!'PY]3*-[@mm6qnn>ucq ^O\l^/R/CD`C%q^NoU-|L1>K/m>Ym8$'0 0rcfShC^8w<4˒|Ԑ*ZEyd:/h`H:pEC[;|߶ʻ)ĄA{R@"OIB¢VCH#گŇ uJ_~(ո-0ҿQyI[oÙ% Uӗs-4)Ф(>ŧ$^_n6R5Rɼfm0N 80N`3opZH$ bv)m$M_ 6CS #TY#Pg[YW J ʧߤa4YWD Bg{6C%Ŗ/zl>JwҀł/V`SeJwI1C9gr}>d9cWxjsؖ^dm6wW j5d8Z?RY}a_Zw԰6e^Z;i]NkrRy&Hpt cI';jE|{TlFis9IP, 4XMWDcf=m7\oQUh׼h4z")"2Z8 []m)ixy ;m-jyO- _rlLS.T]@du 'T;x|t#aF;SHo9l(c#sMmĶVN<2nbxiX|Jihs3HkbIgM%:tT_e۪bq-ZpEݳfe{(օtj&.Qeir`M`?>{ud57IXO6:!6^HiK $SbćF,}QH8k&>7_)xSzщ$pӍ}5 W>ZTG HW`@W6B)iCVI_O<d Ɍܼ四#?hg@ Bg0e8Cu{qQ֪DcZxxpEbuM84'.ٝ[rc/%p͕t},ᏉCHyFzM!8 :XdIAn*ljW(DԳopm*,<26RPJ^CH'y.MEo/~u~ӧoك4;Jj *I|q0=WnՐy 5<3&8|Vb́w$ S2eE1r(@V䣛C,V%>&LJ%/izGy@6G89hӤ'DLe & dlbj&3ɛ3C'jC"l5x, yOO< {1@(7Tw&!Q { G|7GaĂbS aol f23&鍸?Bpcn~G2o}3("? |2f41așpvYF#x4 βl&)rأF4!=4fcqyK.V`~n&aw@NoQ÷y#KbdQ,Xq3AHt1R|ڈkHs+ݴ#a/^}ihvQ8JgV@Lӥ|`Lf*n?kvdƧI|JL`tx`rp("eD4AM^#1+OiVqp.|kJ*[iJ1U>id#& #Ӣ>4bi:+ q^+6 M-aܘޫ鴾8A71qegu$'wwu1B0+-PִgBh=wi>l qMsky͸&^Xƿ!B2 KmZ&wg\1s1@pٮn=\c{5xLyd^5V#݁ukNm-,S2,MXᛑss}ՙum5.&QE鿪Eb䄶J{Pv+ d{~i_Do^ܚ`Uvứ.(b&fW LRe:Q  P͎CDI >؎SˉhDqk\ 5Y8 LK-#Glb'әtznz )z#`$|W+]džD2q, *Y~S*ҌvcO7h9\A0<4%\
? Qo7&Z?ЛRj3{= +ҳݢʂل53&zCoo93Slrg}e-[5L)ִc\r6ar$MO 4%D~Q:8 O󫠔ff|l@ѭхkELڭ jОW:\&@@5ab\4iZc7%ӸQi3sc6iSZ[ݡ ݝlJ1j4=.)tq'&\* >pʕ^&a>t}ᒑ@veـ/Md36_ty!u$v!ӄnV݀{Rl{ Ph"> 8Hl PfehQ%-Sjq[:hýe려 B]UF#>]UMшŻLcIF>Neѓ~#Q:Mo%|[.-7sf +j  CjYS=zƳOd>~ar7A@ZRhIP1,)Kf7 3JJ6 ,=(U2q_Q.u(JgZI)2*<1Ҁ!a ~])pNα')y6˦#𝏽mސ'0k3/0u&#]v@=o#3f$bFdKXXnXhV_RuZd˲^r)@{Pǯ و!2>UYQQr:7˙8d^3cK{l&*Yɫv+:aQ$.fK7.-R"a.ՕVO}.}Y />7 ~#(J tAԖ܌\Օ-5ޚljDd48EE0O֎B''y,|)k]J=GˣzށA |h~k¯ )sAݫA\$wࠠoSH?7!<.FCXoQ#]V#_wuefߎ'W!9+$aa)-Z&G D;bWyϲ` TЉqeAUCȊxR+ZH#7!ڻZ(6a{2=Xq޲B| 3ޢ-O昭}}>riz64[HT'Q4uanj6_*5[R]dMa: Tdʌ$ &e)FI2fޞEA8+:\{?G!5^V)ikC9w<^>}|Օ oYݩ}'z+ƾ^x >m}ľ+*2ԜƣG4ɒc@-7r=kX"""^X*fD,$5l MQa`Z\JD"&6VŢ6Mw&6NvzJL+uj߳@ 1F™V,dzrte3@{ݩ'AbDM¶f7!{^*+/k_CЅs*.b U6das'}h-B&-kfEKyYP86LdtӴӞjO;A+'|'gtZT3_$x)3{1゙vCi VЅz),ֺa4VkaLb>ua_ݕG#['FT #b<ʔРw\D|2 %ܘr|Sr2z$&Gd35%`F.E?162<ڎ.;6ZlhMT ߞ lf QPǟ8_".I|b8Ǔz}~gY_$9}KGnrHHhbM8OM.T$Z40_vle۷-Ώ )~Lfh_*[CA.3HNޙ2NZnBot{>Iن~^nwZvE=/UŕMU_7~\R1 x3N7nGˣ?Ug;:ccv-%!r檇X=caq~Bz @Zǽ8 ǯh4``<&dtoW5Vʯ-ۢ|{|/>4>>T޹0KЛ^>}[7?<hXA}t :g!ZuOKo铱G fwݰ)׮eLEΒtBy!&w!' isLBqD4`4M惾lGVNe;_rt{@vx|V÷E'o j|z/^`byt 'F3ݽ0O3Lޗ@q733]b{X`AIQDQ$E>:TV['Nꤒmi^,[lV\N8mm˩e73M_DA|3g\0y~%~#@^qcMrHwb:Yb0UIw,(az8:>SJ]&N JeϡOȔA\4z4GqJkFgQDRo-̒JTeRFX8~.d%6.5'm[-c(*F9w[.}k3\>}p$ Dm/tDtL؇W;AJ0P yH0huI1I:dFD~nk/{ѷ(}(r՛Sn) LîsSN|.٪aM=fs<I/z1G8חN~2Y8=Zm"+sHi&TT>{`S84k*i[۵>W ‹$dq6#í^W3? tq :W읩z=i)up'R)oaq EF\wI_ڰIu/glE6Vy yp_l~ٹ"֫𙠟4߃"T~9ollP5_/ O f:`x<Y.ߤ5T dViWh(К+Bh~Cÿtjqg hXHwr p1|9/D'ٝ.[}a֣gSBhs^`)1@J3J{AܞRo4cgvWܱd2Y:dVn\].O#Z`/Ɯ&T9*R+¶De !.Э8,|b0ճԅ/C;5G/?d*NӯJ.QbC8xZ p[;xC;A|/oTȣ&ՠ_:\J0 U~BWq9<&ÃR>|9I%SJRkF;Ʃx Wܶ,wL ఫr~{:+' $Y):#r516r,7vy𖑽veR|Er J~D0ձ=b~ ԋ۱c2=ZVoϑxZQaڀ۵]$ɵ=oElSɫ]w.%;''J NCcEi HdʀԹG-28=hĔm:t}\38^IE;lp$xN\qasA{I%q:gͻ'oA衧ոm cK`w/[PZҶN쿣 .@#@ArmP;znPzx~G vͨ>e+*& ׶aMzSPkGB`!znfukAQbу GiX*22M74Ƌ_)ϊ}}"b\hj%{.^ OѥWkʥ\4e $ˏa}Af p .QN>=ILl9F! `Pco㋵6ǵW<\& :bv1*qwnC{|J(,߆ɓgA=S~chDtuDTRN/ nש׿ 2ܽ4U^y!א0GHGzX^jP=# :&%;ǂxqgq86V$M>|.SΖ'vdT QekURމew-Y 636 TK7:MBiSs(1kopQn0O tR8bvo%nIIlsA<9<5U)lŒH0n4F:=p-h$4&ظ$̩0pSOyonY%,6s7.ß_Zt<.-Z.yCj%zc+5^nխ+Rt8gѣȕti"ڦAĦS۔aEqazjv Ry[[n曹&n09~+fLHYfI0d…_b Ph.h@=f 70&5~$l^i 6+C l #cuµ>U?vFeƍ/eH4#I,8cp6my'05a_CVǯI2uꈒ Ғ<5D9l&=T0MCrHw~7x|}ߞEon<}J, K1d>Ž=nʇg~!M~1*MA 0SO|j'(ҙ3b%J#KV,"-( "e2K)bLG0`oϺA *~u>;6pHI!83yk5y=pjfVɚA|eI_ɶ6ɋo' ;ٻj|{঱zVH&O2!?|tfTt-Dpq% p'_Y,#Yobw5 4<<+:3˿?o􆯤 J\t{?@8Ʋ$ҳE$r쎞"y8vt5U)9raC++Zkڻ5vc#CvnEoMoMUMҎ׭8o$QtziWC0H6+^/*rj~V!񖂲렇I;Q~jVޠxxF}Ѡ'Ekuܹk&Q`p+x mt rmr͓_'[zr+Ki]m}ZXbk[줭m%kkηc*8e~߽OHTѸ 7l v ak z]U;.U_ KqښT=U"P-YZ iqS/ NAH ?GZ&8 1^ZLm.CdPXc οcw= }PO$Y1H{DNUu\e D)Z~~ir~.3i4A%bx=PЧE$A{LkFkW,^Uժ##Audw7NS+t<- ̢i(3 0F"!g?d1_d[Udٶ;ϖt{0>$ ([Ǚ0s֫zÃ++U(ʀE 8u5\3^׭¥0Z SZuuQrXx<26$w~}fW0b׾L0q0$m`-6]mY[p'$K=>O!hGWkDTpRH+i)=կucF;ˣZc^`"L|Zy/H~N2n JZ!Qzw 1CA8"Qxo\iߩˡDYptvtI2z w=1w4,B!#WC;M}tarK&V{nϩ/OdmacI_h9@eqM_Q9` S6LU4zxZ :5'3ـib&V|*fg}?fE߶61JyRw:X_Bډ=XW?( \QaR0vh5J褪\Z a_{Llb8BrL~hQTHfS/E檱 jo&mj11S-:w_Tv{n`<_l8NjR3rcvU"BRX#X I8t,vhYN#WB5LAD^ [ v3^=g.jexJVX6s`zt1#?iyD:R{X)bn%5%%$ ~\k_oX\^b+hTU%`hD/`魄 64O 1Wҳ.|s4ur(&^NLq: Q(SdrYBv?8|^q[ }Іlvwgb,#浪DlzfptxOP(:AUWg|"F_bTrFF`rLRZоIU6]sGujuZ^ %gGFRN$z2S .V@wQJ^fᴘY-eb.< HgW 4_DMTЇ&&~T$[R-IcTzxF |.DX%]+#*V7"сM:\mr_A fRccK/,MsމTKo M͜B{v*TW:th-rn+;;35)[u40ӰjO.6mK~wH`~2w}ppߛ lD_OOb,霟^uhtֲrnf'@nwu"-9 -ЈF3è6in}騒0$4O"pEϊW(ܗ?uWn.$Mz tubuV l頮 DfN,9<7{ц{6:3Z>Ck{һg=$cbE{KW` qp jr]I=9-I8z'5$PjgNYLik@u2k 23?z|9 x=~GO߉уSFn7\ѻkb4Uamdqytd'CɷIMHѱR<,NjJiw)g?ⴰz7\cB y{&o{ɽUAG륩{G`O{JbUtD,a r1m[]i#7M-'934L?TjvzvaCSkq4 zP:0O2{RB4.&91qc]̊;ǧzG|D̅șre GT6;{m'OE&Gbi[8^T'Ppn4JKgcaKmO9i8sm81oqJ4qopK+-=WC}GgIp~8N QBi1p׷n663]'ߊ{8?y{'j V9o+8 b/_?cө] ry\L,%qjKe .O[8'JxڥTMkA~6~"THc@nmBHBJ OMd7[w7 )sA7gG'}vvTJiyޏygf ucK2~jüqG<MM6>h<3q/^/QKXx͆+x`~xhKު)6p5aŘ8'_4 4^gs o/㹹 vW"ƈ]$B&l8&:>s"H*Fπ6}cv:7aڇ!r9| Q ƑwMDU-tHƉ~;B歅EKPkb 6&|7UnF4葔q8HqvVNB4SZ.w4 gαl۩Tz%|pO&.)f$3!(bF'HH HxB=YzӢM~48vȌ7/8nP8el*aұ|ircwTOI>Y q[y'| /R)n ;W6*n(W^;'kzu U#1HFBF$}\D<73?.68FjXuH'h4ZZc'H;Dot˨SlsytL.oI/x}Xu|Hزc')3s]K3-[6iiRHe"_,K ]ffff{effffK+70, qP 5ZP 0&$X`EX VU`UX V5`MX ֆu`]Xև `C6M`S 6F a64C Bl [ְ l QNAL)0t;L;N0\膝aa ,=!p 'p( G9p\ Gkpp [- W5(< B$xG1x') < A%x^>#`14X Ka>e0ð{pp|_8bp a5`koX 8'$\pE\ WUpU~pu\ĵpm\p}7čpc7e 7F0a66c b㖸nමnvd 8t;L;N8~?\Ɲqq.=1=^tp&Dc?#0%汀Kq0^7~?Ax0ax8:o;*GQx4g1x, x"')x*x&g9x.x!^%x)^x%^W5x-^ x#ބ7-x+ކ»~|ća|q|ħi|y|_ėe|_u|ķm|}?ďc?sįk{ğgwĿoB"bCc)7Mp+p <}pUU]4TKu4ꩁ&DDH+ϴ2Bj:GӚMкOІp9| 'ep F1mBf95D! S,ZhKڊmh[ڎvRuRh2M4 ځf,ڑv4R7LhO hW8vixҞJP/9G.-~J)C<h) 2ڋ}h_ڏ@:CP:#H:cX:D:NST:N3L:Φs\:Χ B.KR.+JkZFn[Vnt'Ew=t/C=H=J=IO =KH/ JIoK}H }J}I_ }KH? JI L/| !|(Ƈ|$G1|, |"')|*Ƨ|&g9|.|!_%|)_Ɨ|%_W5|-_ |#7-UT>Od3骸@{OY 3L鯊k v$l0(, &JrMGo&O$t&QoWCg? #1M( 9E*&n81mQl84\,(IC N11Sz1}_`jM:WATĕHH\ⳫN#wqp$N77xw)3vv:')cfxIyZiOgit|0g3}IvɪYoF❥(WH'@*^eL-0[>6}Ț>>d5ѽr s5Mks\(vQ,Q얨 U`lwM' V-]2vȐpI,б(YP#U/PkKlllll vhXXPʻBRj)/YT<קLIcLPp]P{#:VyzTI;Mĕf55 ÂAKlllll vv HX! HC?$! ŒX! HC?,a X?,a X8Z2VD#~_+"D#G~K-᷄~K-᷄~K-᷄~K-᷄~[m᷅~[m᷅~[m᷅~[m᷅YEQ][MmSb:h<%qo/0OQC NɹQIvv p^ eIxq\aɺlL![RܥΨ̹F府e&Ni7]lEڂaeχQ.ߗu5ʃyPyP<(jʃb'߃QeL ٌ?jzBzE%ųPaPp{3Ci]kllԉCa%h 6  X.5v{`H]0c}LcF= 1AmEr,"*&. jmگh[``LP͂-?4mu|F'r\b8N 1ڟ_TNS0m;{z+hXRgL&OD|n17PV헌w%RAzkjV{FŪx1. TCb'ZwR]t/5պxv㕖x~'?Z zA_{+Xlrԗk{{REֺQEuk0ʪKZ m 꽬8ٜL ֊)cOe xW{37XPҸaG[Qۆ%N6YuyDfpX> K ަ"T*U^GKFɂy|LM,SL*) aw+-tշ# _{Y6VCpĐif 7Fglr!r{IbFyqh|UD Y+E:C*V(7111´XFZ,"KZ]㩼>X.%ZEn;zpQ/^rԺ6oVʈjЗ4Uo4Cq5MDϞ*2CI{U>q =ѰHCR^Wb zR{e aP Y 9 z jҰLð= :Z)冸ZƋmuԴwQmUq=AV 4GSpzWg!QB}Hd'SU@r^1xRpAԦ ) )' :Fc^+U%i5YTHwRiˮkAAfD- Y[f:'hd+C,ߑ4Kʈ!e ^ 6R JtZdVY2geJ9 fJ,˞4qH<_G)C,g]+kĘG9eX>哫\ZR4QDT/NJHf2dJɜXg ,;JʇoC%**wdX T+ #ÕFˍ ScH)g# 6nlNUq3*ce-:ZM&j*6klSi6 Gn:;laNv;Zr1#d*!S y4Xb`"ͦb*f*5S4tecXf<ecXf<ecXf<ecXf<mcئiی6xl3ی61gefm3ی6xB^蝊un5 Z+ ʂXE>˚ʂʂ*LRWg: -?dի>L2Uw7.3'%CWJFgYjO;b5t;Tii;7MiQ5r9M4UTENS9M4UTENS9MW W"x=aOeWBM(uWe\FBf~`"IfQOu4wZje~ci*RRE===blO=>r\+w ;x~Ux \U\8^cΈ !Z"*U3#4/|!"" )affSMVL5Lߡ鬳 h6ߏk:G@8()"gggB 3 pS8u \@B\ - Rr4812y@W_W&_+]]HNtÒC /%8S !ҡuϦ_+r„\K3IO ӳgòISo)ҡTN33aI_6&kML_ɿe9SgLc9ӳdέY9+1t!#G_+>8ICeeԡgWIcLh I=&uL`&mcҶe2ƚ4a$ښ s Clݰ> 1cЋ;&ɘ1q|;6l{ h^.Tޥ[OL[APA&݂CC B!tb莦1Mn smSfxuU:GuVwW}j-fY̰~FFZmcƫPqInU~?g?Qkh >h6LSʠi+zNz]LUCޤLNcNʣi /1zu<ޡ>M`>O/7;}I_q:ArSp܂ wC)pKo{G}FJ #t1IS@ppPa܌[qs܆/Xnq$T]܍=DWW sp?n^ _Afzi+-WBljMp?<C0lG` < [1x?xx^WUx ހ7-xޅ?3|SA8 G 8_)Dd` 0  Q-v$/8l;M]X{ao.+p «j0!6'Għi|㳸Ý
\<R#+?W/#(Z<qx/ -x׾Ov B$BdV@(ŶTpA3,bh.i-D`A$Vb%V QܶB+rroJ t1^|#eO(UyYmegy}b G3`KR^ٴ!w@3p s%{6دE#tLLI5ЗM~ dzT};[2ȹ`ܬgoݺ㌭KZCD3V{'vd]|e-|oZ3ڽ/;[?{Ϻ:~z'GUhހ>uY\m{Ès\wz[{p-p)Z!޼Ez}Esr=~x?{$Ye|1cf?ƒW5DJ$gs1ZW0ss#k7^9]ͽm;N:}g}8wڊ$2E[l=Y(9Cs^#/ș.(73s0^N]_A-ța#V8B#')XKr;;~G_xG#9Sy64F@oƅFx= xVZiN"^K2yGx_yD߱ދ"%ZKL+G*M,h јVr!"^\kx-rr\U|R4Zvi>$ӍC FψW7IEM?^:rq3" 8zW򽼂יP _ԑ>2wq 41r5^u3UZo0QE0slkwzG*2=zA`#x_ҚǶn|_TRS?xOxO%IkZ=W@>Ol|ҲZUG%l2/̋7(oZ?2~i,V{+L6jZʫW)+kcOX/Ԫrrpԋ6jXʅʅkZe|ʲXzתr_}wZZU^ZB²XתI哖һV(mkղXתrr Z?WZZ,޵[pUb]ʫW)+kcYkղXzתrrp/c]V +lb])2*REӌ7xro<7O_Nytx:΃̯á$B2q؄˻J ;!|`F=5E@nr%\?ԟ[-Vs+ ҟ6s\?w?ɟ{tsŸǟ?7_smpގyx7ދKq9Xh?F#[Za8Niwy_]UZ~/#]x}|]T>|" IS:Q@ "bC:XCfAH!@"$ٽ&${gg3gΜ9C P_GӀJRХUn [ *BFZqQqqw5y\#l{ݧt]= M=Pv/uC|B_PY%oXK PO z4қ 6wh$K=ze>1q4&DDi)-~6fE{(@tRStFȬ!(-bDAQXEIQZ5^T7-6qC%ŃaQUT5Em#ψh,^E'Yt]E7]/DOK/>'bxE*^bxC Cś-1L o1R+FH1b,~KF#]Er[G3w*23Uc soyn3(%歒y{"_'Mz7jN|ҨԨS{0_|C|JC9* ϱp(|;{(: ["j>R;Ϳ ':tFwo46_B=&OL;c:3(M-h1>O̬91ccbŜI5bcf>[=vlر{ )xkgL+TPB 5(n] Sxp*r?TIb Ip12P9C!JH8MެC'H\LYQ2݈[l()-7!T/f^r68/vylAE2%WKbX˭CDta>,ߒ!_퐊4REWkQmb[xR@MBm"_P|LDiIJ īyT[$jPjTrSkQNg z8>Rѻb (gޮCP #3bF&mFG + }xNG͉9I& ds -AzQuybݯZhM"DvAlۯ(zmێBl[1ĶyLFi"Sqb<#Èb܋SI030̂~#A!v-hgկ^B!v5zzHUM5yG_˱̛A؈!ɯD9WL[ėT;B|++"}5>yAG6AݶG>Dݞ缾8kw0סm"tP4<ڢC)6UWP݆ZLzR-z%Π+9QOukBD:#ԈR_t0b97Qs<Ś(9ϓ(ڜL5)t UG~ Y7uJDeG$ e>rZ.NRQj܃ZJA-of#D4Z/wa[Z/6!b'BB48IKNJC-u @ih4\QܒQ&7{5~ ykJF7^zTU z}U/u_[TۢoQ+ ݃O~NrwnGBp%K8Ix r%ŭp Wpw </ EF!g,A_Q52?[_G&j+Ѐ#}AeR~|-NCtl>R)5J^ػ#x|/!tz=DD/)d4sҙ VG1&$#t<O C2bTg2b]X9ы|o%ӾgI@9^E|_ 3i*rzF̔u9aqilDGY:$#-(TAm#Hu;R]T!UHu'RߢD\x5CFT)e (b+ʰF܍PʡFE)1oGNGgP͠GCw zA4JueH:΂Z4GQHu<'UGTcW>c =w\)q~ϙ.D?(#U Ni܍r-+g#ϟ1ݚi$_cP[Q[i\(]:c& P򈳠<ŜPo#9o0ުNh%'I JuEF2ԇn×R}ɥu BўY܃j:P"T*گUϧQ 2ۡ;\Qb(zv]6^@2E:ଜ9;4ЇJY+bڅCLSbJALS*bh208!-4rT87W4(o?*Stu;wm A?+!i쯸VKSÈj ryv!9 (db!`O+ _Tg+9\v :f"W'&[nƗͪL_+ʕ2.]*)g1R"U3jK|u_AU~-)nԪ̓ӑvNCt!3H[-*\)\^G:V9>51-X_seMe}1LCB &pltAa¨\*]"b}b_Avy܏DjQm#OO ! >>dBSKF_t߂3Cs{&L[h+m~st($XQHD QJ\%wjMU#8ԑr#qKgl_2#Ɖb/%'^l6];.[*!#(`6mFkngo|h|d1cn>c4̗ۚ̾s9oN0'S{̧ZQsmd)N9[C[\ _)H|f?]+@ٯ 9lYWӺtrr=O~%ߖw6rɷN~2,&7iyP=wLFlWU+\ J?0W:¥ɳKZV"Go/q7 =,'n+BSkqY 8*' Fw_r& r|M?&i6/ ?/IIeMs"KpLs;R=XtE~ڄMl&!g̥ZXxOG-4sb7vpr)8r 6d) \QDzRo.GV}6Oqslǫj+P#䇙Ycez=hpDyO H 2fx{O\D)ҳi)Gv )uS4 ?9fj(C+J1֜5fӣc ,9FO=Oct`9_W~(Y7+I]9D=/LB3OqMPS(Վ*~̭Vwg]󉜼ʅοr~%?߹d \9w(Sgx #i9?zI=^6N."{Jfu3sM"3Dו{ȓ8i'b3tn^N9-< ojaZPOn[or,c>֋#nC^&)%qhSU\Da"#u=䟒> #$*WZ)- $#9QxuQ.䛑y%ZzrHijZ=W='ϣ|$?H字?Fe2?o6K7a_q,L_nwQPsKMT+El |o C󳝃ݗc9_|0QxT. n5差:8t>:c ~fq%E.k3Hc'`͊_Xc ֲH)nM]NΞ~kmTuBnʁxRBp&mnK³+2t}O6b\™ǕlGiD-t?C:gL^vK31SZ) lE:`2LjWϨN~"rCQj?۹#a~RwlOV1C)8A9XL FHv>Kvr=JW\ߺO__|UYR3Wt3<;<B?`mY.\yV,EYp0 5IExo\zӕ Db$^*JUlSGTp";= (DUx~zPnf Єn7dISB$:уJ=,zTU1L jU#H!&TK3I1_̧bXDOb)=#֋hb4[FShf4[Fs*i5>c E+t@vz,kf z||j-͖lKOvT||꛽Tk8s92ǚczs93Ǜs96'9ɜDUd9ŜBOO<ڪ9mYnB[p_9e){ {b+N\½)XjG͙]Ϫg =җosJ1 "!"*E|lga;~]W .?z48_heUb bR0Wh7n7{mO'RQO L,>pTS{wi>{Հ_ j?xCj;u jWoZ]! "䠆NSu-6-5a_WwR{U WUq}5u#ƫ@Tnclヸ?wՂjGq0=-U #YI_Roq0#J:pCH'P_ N)e]<<Bi W9p+$S+J5d~B4׊-kj<P!QakxplTUL Z)m~ ^+DYm-s4<2P#-)l{|elezZ8GY{k\﹟*UԑOI^ VZ9CDUIT]ӽ' _R娥t9JꙦo`0r9TŃ8{yd-3C@o1穉_5kWj7C +k$rkgߧmgV,Vj~Aj[j˞3VК3~R4pb[Inͯ x쮇aznA}oז_r;~?/CO6D=˶c5KZԿ_m|K(t;kcl^* ǒŜ'xPP$W$DI" ?_sHOHOH|8FB'9*h44Rъa02͏1gl]7 W@#g|vz'ܓoU\=B1^UCjY48 ƮwC@ȿrߩ0o'C.x):8@pļ:\4Xy\op):'8w؏UE}„v=0'qh{ɮ>R Ugfv; {:C9~מsYC7O-s~ER;{ Xjq{p ;"2{O75C}uudPxM NWӵXi zzݐu(sz!7A^Rmj w/oOgVzZjN:m/jIʞ@n_!T^zBzO$t BˁA₧Ϻ`PO3dxa c7t>Qwp7/{+z*a3Uӊ*loE̾?٧+qH9DOc&v]g Ѐb|TqtF1(|RqV%a$~hi22lZI[XnP,8v%H5}H,媌[\99jFKY9S0wX#Χ\OOZErH=][=-(yi#e;uA NQr .SGqu RMd%3}T ] w<'eSfg;'D+*<f7P|Ԯ:C^IUoP$?#r)zUDfJzNEa#G8ݵ/ Ds.8YEr=ܦk]DrP^/u0SɝZ-z#tYf6v9M'LcQN~:/UTF:}ɋ֐߲zq(s?]wLrc=#. ׎7N7c*)wx~F\ڜ/PA$Ӯ\(}[PXI|jȏ/lEf߽*F?l d˱qN#n=erB#96S\g؎ݾ`#}y(ްWT@R$L@d\'u', fo r]MvaUqc̛shT?_GD-Ljg'brT u5q2oFq[開p%Mn4Hp,i1mG;F:`@l*>{=ߤN|1b=f\C0.`Be[õyfQ2IsqG/W*xqg.Rv7isڤ:n*x>+~V0N}HE.ym@Wc|| ^7CXR)Nx赥)tZ4-zmĵBxn9ULFrn~[W z>h8ξ:S, d&QZ.UZ͹אruvofV j?!&DMtcъ[f!K6 +^CZۺQ]t}0}% $[Y?1%矲tPcU|3#r#!b mrY,aY&[b-5qw͸>vCfYWq?7Ё}>Al5.и mlSc5)Z~ܲɓҾ|_QJpS'o^#~²P7OlzieYdx߬nV:AN}Tu5 挓Y&E7(\u` PϘ$o~ oz*pi1Ɵ{*':ljJp f<>*YylAKeJ]v%>㖥\=b + i88ʮj;g*WJ`NIuɁJ%{d|%+sq[fΖwfXjQUwqL]ntաs^POW|ЯS«Bj"&ך[m1IR6{5dnS2uA{I_#,PԀ:ZS3YX PLn)t(q;yڢ+Y4;V>bì+A RrIb?H^M>#wQ :R,:SEtED/**^/S^W?yH}X, br\!V b%rJjika֊(:qnQ&xxqdTΘhLkI$6>1>! o?7PFY qf4l@e͆fCf#]e66f1Ml07s+2[C Śv4;⹓ىʘbvsWbnvOEzf3#@s }|>"ר9𯛯S!x[eސBQk:hYB\j;?Xp;~( | .϶C>vȭӛ*l50=Iנtndݢn ԅvZ/DCR@ZO+s?j=ge;_=[ QE ^QgՁ1A1]!@xX1a3/cccc3Jq36Ʊݔ''gsN6f89s\=pd=82cfG8ol>`2j9pˌ̀k'jCg8Ykkm?ZO㬵km?ZۏvmZ=Yk8oԇu;l6RDFG`rb-pc866ަFL/^4F%=}a|`|@M|F!cc<1l-"S82OҠ5e2ϳ嘪Lk46_P}KKz֘fLWt<0fPsc16fck5eN}Ma zEf=j>jՂU,SL^`jUS43Q9U VUfK<+j sKvOW(h +y^e< ^Iw OɹT k䯬8B.պe24 DzU:~yJ/4޳tծnںN_cDK62(=$JKo` eͅ2@ {ֳ ?ghK7yYYױ#523PI%Y̡cfL=c=WN ߪ!|UïTC!pg e#iPy^ h {.I$ ߮R[R>2 Xnj} l+ÎLx%_[2tpgo~8^kֻHbvן6>*U#8|y>! 9IE]mnd#|ңpGu#]mi"@7s|}w'A.u0nQ;6HiD"uGcr= ʗ*u;h]d'3{imJ{|aUm_,K]k=gHhB-C:+W>㞵nE^FӮja?*uFOh.^ajGe Avظ׻*-#$EӃ.䳖U0. rz̟Zg5z^ I'99IuSbKJ6 Y 9ʑs%:Go)*Z3N<\q0Ҫ2"nj(ݧ]q0n-Վ̵|1aL?\A5VrmBR-).(t*OnRжhTgU3EcϺS36X=wlKqfoAڈ B/|ZG >QCDF[wem`KP3VֱN95+vcn0qx./5zO@xb^a˜jq,핊RXL (Y{+(Շ h `RVqZVeOeCi&3]NsM?`c-G8k+ЃUlU5&E _3/8 B;W/ުPS"G~Zx{=Nj@5 I^]fο:qiSʭiٜ9h;yO3d vK{eu|r *g[#YCy׍"$8~wo=8aVJ2xqƙA1$6ܫ2|YAN9"I+A%0> =}g[rvgc[LsM 6Ar΃>F{ oyM1y<ÜBIRK75|]"evw;߼pmK[K;R,1Xz-MV+q:hSq%mBNmw ^mlso\綼3~[G@f"#Qn{tGl8[)tK~{Ͱ=W rDd!o2PَS^\\\Adm͖/k_R9xiqNҕ1R%28K(gJX'>0秢~;$JRY*NW k넞2eL|N kxwqAJ`,WPCv6rPT%Pl?/KQys-⒎ˋݮʯ\wHr%\>ԥrQш-RHTj1}ŢN:.Q0R 抠͊";k缕wZhQO*V:&QʥD^ՠTvucpi. wsՇY˻*R%i"7M|-|򚲤[p[Arҵ U 7Wn*3#>sVAe 9iZd*'/5~ 0j@7vuu/wP[w9jׄSg!*qKoS8e <%%~'\}szU/cm]#SOwN^:թ{&@h%rijT[:ƹ=~ʹk.ԧ yYB4A;$"`n{=vqs|CߩZJJ ED_'רJKJ[ܦ-&@MzwzԉtA ཊ]S[ǪԷuBk}vQŔl_E ijD@rP+}{s"m+QcjuT'SA+p!ȓn/[I E>s^Au 5l[g ~@ԫ@-c6KY^/.?fe_c_9މ15ފ1(CCHSt>FQ72Lc߱4  u6i(ZY& (bc5QXj,zQhl&[L,#̊yY]65qujY2ctruw\!#%<Vn;kB.Y~i_'H.ˤ..d|@^L2%PF^QueVᴂH%։yA@[cuw~]c@dr!={ [;:ʓSg^Gzu5'isY2w- 뼌>'u^SU֞c}:Gs~EٹaaRgcMOa5Y9Ys:Qcn kҴw7S7gnh_-LOp^a=#;eqG7uƃ:|gtx16a8 :|u}>#hvOݚ~gj 7~X*=YJduD꤄;ۣ\V2?8r$Z~N5u*cS;pﴐʖ9Yr<npOЈ<.Q:I!N sß}ǿb<29ws:o#Q#F֌L`96Sei7yimif~e1$*K,aKzϵ <[[oqf8GkTc!mLL4\:@oS8. 9EW~˹|FrE:s8'I8Aފ1+]vkO;3u|DvF=='!rfr<7pyՁvܧ8ij ZR.LGuZ-9NyrqU7/rrG\6rtUײLe@QATl$0lð[/ogGza [/6Fy1__P,,ζ __Q^c1>3QBf%EEb!a|._!s9>"_!!n"VM;.v`q,*I6݈}B+>=I# /եwW]թuӿ{iwC6{PgΛ.x)H uMsylc;s¸ҩ0ay<0n$=WH@t*,궳jX~IoSb jQ)=M[ߟBHAx.avt3]E=}x|Э|{YM~sJ|ߎe_/G7 Oo?ة:pMuDgwj4ޤa oAtnMA[1+WEz^>Q-^j^ *^-f_@5cҐŮ֬wz!S(ꂻ:Z^5].`Ww =.K<4'lƩ~:=}A 0sw58>G]JRh:O!M(@y*MPqppJ/"{O<  M`8 >x]ߦJoXxc```dK9@ P?N/ IcIY1ǐ9)S]d{'+ѶBK)_ιOWe$rLG~iLS˚-FL5Bƾ>Ztf&$$HgMC2miwK:4vZPz00C7+;4]Ne壒AoEMQ^?x]78"**À'2d\ż5̫ 6b%/ D|x>>"n穲@DQ̞ݳ17+6Wf-uf2T((@L$mDiυHc ]8YndS.+ZRx"d#_ls -ElX2_I/\Qݳw?$0Hh<.X ҟQ6cȈ'c&  f u&!Mz(ZoJ%BTNTm9Tk:DM:LB(T@pkzzWU%?I)wu%݇+9"%ٖF.}jÆj.jϖm4rveVi_Ngk*AM߿ׯgf:sɅ`{z/ em8T;+R$j")nBsޭW(UIII@%]*H (5|KmY!ʤdNaB;'䰟YdOᅴ՜lCZz3ߴ̹tP]qQ( 5y@w[t)*$<į~7TZFnGCVm*Cj؀ͼ]~m hzBzbz0H9o-%"~C٣TG)M}^2"PMg6[;@_4m+.&Eeh׫=\ٲLkb̬C kͷF.DTک.JIߤLQ(ӹ )Zv0dFl#~CABacNF;LJTSRXE]lr:TnyWPaҊ*du*jjZj:ꬫz꭯:jF{p#^k@TzzL?~co10yۋ&&36|'x屟T_gj+elZXmhv)wOmyh yg<>kk34f[N-<3h.)2O͡}UkT`JXt@erBx| KŚM_ ??K . A wLkᏐ :r2錬EF~P(*5COl$' y|al|tCxeRa2rP\PD<~9$\9 a2 M tYCܫBj` #8zq1uI 0eѤbd  *uqzzO/?\Qvaä9᠎b HJI O"Ҫ&]=@e!j?jPH;x\uu,Qe hCdgMJ x 1Sx̜d b4dz}Q.Ӎ¨$ Kڭm%1E28,Npg$[[E'_65.A_1+8Bi C8R7*bV U V#f ̓׬.r7Mi3jYSu[t2UrW("('h>g bвgUڪή(sӣVly)sY9~{:tk}@;<hF,4if4wH!E*:7ܜnï` /Vz&:]:gssъH"ʶފ%f^Kvz^"_w3*HQRVh1$y0 -:`Wtd&4BYoy8F@h S@<?vcR @ -񵥻fuF؉sP6珕gg>Y3XdgN0oGggm69p CL$q68EX[5/?DOWX03`62{CO*RѳU1Br ҆mMۗ]} 6R+BOV@tg|w#mlULpaLU!]@~6> 1;aSdqlA/QIlBh< cGP UWwBk%A-!$C>H 'iUZ$>ej^Ƴqu3o]r/z@Ym͹<y}ȷ4!YliCgUM#&O-{ F:5 Lmvr+Q+&MIi<ցSC8LY^2w;$ iԠcOnZE?H‰D|%Q*.N7E6̷Ji@Ug#BNirHn)*Py :/r"G(qbuf T2K|Jbh6韡L9._Dt̕鲟ߢsye:GS,(JRgoD`$J4%pt " $ Ls_̵iQ<ڥJ4Osw,:csBb`#VDBҩZe\dFU=8f'59) 'rrd` =*;%b3p;*F/> ynhԛ`'TKK(C7kש[ѱɩMX"W(5:p{P8dsqԛ1kɊU k6rgsUۆ6z䧷v$H BJTI@waE&(^imԏz1GV|.?غ ֓qQﳬ Gtq{O ']lW_$d;K):)kt.קm1w~^)[WQf ȥpOw CPq2TOO}0`4Z!=5nˑQVQ]1:ޥ18WVG弤O_ ɺB~s6eD m朐%j w+L_/\^*Q|vM>gֶѸfO D'+\*WE.q;fy2w.g%4 X?*KC1wD}k-Vw9Ie.J/i`+WL.M+&C#~m2*R| C=O8gVupL jm^D/UVՆT!nf`Y{ Ÿ_Ar {9 ƵH~ز#XZsoNly-5&ޠ lFeeЦC#N agi$З.2a@ 0 S߶0_}4)nL uR ͅә&*䋫w`[켫oS @=`6!.L}'>QjY ޿UB `֢ۖ2>oA_|١yݨ[S~Oǡ%x^RTxҬV õ(4YVtY֘l,-`*T*r=ڣGrB"zhEq\aw () )ՠnsG|GYj\o75돵f\O-$x =5Avy:9|,%>o &'ЗC.#Myͦ>\oNzv?j-dB #v7wNppLr@{[R[&d-EЯV zt:-~Rimnzn#_G/lP6mv<#f$Fw^/%'}i`7v&wr"N<HW!SKu8ZgwcZWZ 1'=$}DQ}'HlT~ic|ƎkHVw(kp8Հk`1+d{&EJ*.CUWVؤJ!ZBBǫ*kY,~3[>N4RJr\.-ySX&EYc7+ȢyrM"j˨nk Ks>TVmB-}_3}6;@G&L.J3=E.RO#.3p } `Դ+"*r°7+~fh]Ae쾠d@rs nG-~=mj5-}6 u (|d<ά窷j(Sϕi% sb dUlrs&fx tԢ[=Vzj54Y ǧ'&&SN78r6#pk.$ƽE n$S?qm[sTMx4ϚցO=֋_Svж )Q9Pf%V]¾lHb^um ^5#kDYSq~/ BIJ^@jpnM)6f,O胨łjmXBpGDLOi4pzs9 ^~ Zt60mICc@L(*&C@ d4bX 5 \E{υJDKrGC`hV< [SU6$Ȃ2  **Cp`o!q's_GL6Zț~/E;(%[n`R@jR$ .z0m̞yǬ`$hGC3_){aKkh3]pomn}6GV<S%$|}!K^s v&\<]-LU+õT.J,ɕj9/ŵ7]enO'C(:+k@atB|W1lg_-#BG̻*ߦr#4]ђDn{4=V‘'_Z淫s_k7( I ]H 0z8Qw1OF/ ?CcX#vSiwY42jg5aUEJɬtHeKSR\vnj&yfWgrm#Gf/^2ՈK*p|;Ҩ޶E>hfgi)`-~Et?riDH%Զz_X4i +t_U6C^g٦hVﵴ7*%_S”t,Ќ -ؙ*S@zǖ2\sU~9(_-դ1Q5DTki.׻F .UjJ=>⧌}3XTJZ:Y6])JɐU{r~4o@;<?_?0Oֆ$O{\]l%'gdAh?8pֹ 6+'pxZuޭ= hdo;rL;@g8<Я=u(2u+%/+VD}@{.e!Uz ;rZ."LpZUlmAs(ʠm^Zh /dJCW!X7| r:e I "%Ԧ_eȔZnņGMx3*wKQ_.no(*ٸܕY] di6fOcVT$Jxq SAjSt2k%ƌQ178ֶqqLjK FܕYU[B}Fd|c忔N%"3߯>{"FBlSQS!:$W8h+S !pPm* *EueK5j/%z?uozL=izދ^{ɗr~2&ec%U5QsG|lFuAfJXѷ(X]%A!ikn5Ov'L>BBrѲ3Vr+Lq`o3,o,q#,>v{8.<t$OLj)iSTf lZ2ƊxceApV;j0czPG:PIg:Nd |(u!`* cWq<qYSr;+ Il]FizCj3k I g"3mHS$hF6l4u,vjJ?aҗ܊: 2ZH3 kuֆZMvf2#s M(t%!1nq=ib;^Cܥ 2sYI%bAξ Ԫel?z˵u !t-0T2w! jInK:┭3p&4i߽ӖyJϘHm2ejR5`mVwdRx~WRx^Wqjüv92g_aX1qˬsXrҗ2w;#\Hyԑ޽ 0Ř řc{< /> @\6֫}@/v zsd9\)4Gh{1ćZ%DXĈgٛpBHf æ͞N$CJáK췮i0N93և:A΅.RC;5\ﲍs2} ˘>< @7 BiA߁XȋlP&@mѨ/'DcM8/&%C\*tHZrlZEsy?ٺ`I1m+bWԨ:H hI)](' 3sLVA,Z2dMղA}CPTf`OU-U=WVL2T)U>֒iZȕgn3t4z(u$u )/R؛ElX&Jӻ]YLʙ2k* )HlK*.Hۋ8KբU"^%6Dڠ#FC&riAa!r 1hAB#" I"vt DtY;iECȮ5%^.AM9J"M ܝMM`,f,0cJw ʱmr%cd^8NjIZ]/Bx׏YɥjE E E ܝbdD0wԛțfԲVdĭ?hma&& US/9dAZ4 QABBք%["ϭDdrZ6r8 6n\V[j_hPt.O/j@Xm,uY*E+rߎMjLA n|E7qjw4'Ap+M\^KF%)jA5()N iyBzZƷo§z0{ͷJ6!XI 1PGwvo΂|^b# 9LKp>^ Ѧٸ" tdQ ܂<tV} vlZjV,n RzZ=:oxDHN'W@"xaxSRTjkdf2iu`OZ}fáfT;hH(NS]Q \QcUӄɋ49 \.˔je G2h7Q~tz_QewΰQ,:qXTA,>`Mek„ZK v1,@U|湭qlO1 Z Av$_\~Nح q)PVG:m!i#P܆'ifryGw J2 dmKrc9[,4ڴ7 |ch'eaNF₡P~zq."U]k_ޭ^*҂3bR5>R!MB;J5{ӄ^}k>js0sǾr{0~{ɐ Tl,tT)Ǜ^.t>1[gaN 9i]68 zU¼槐9+s޶^*ܘnyLH&TBMl0_]]l?0Aam%$.8!kRpP> qp `DT n%kMByݡXolZݝa/{kJN6s: 7ri^ ly) ;Y ȊPybez/=G%EoБ,#R٢ tD()#-]TZLt"`mȨz)M| |@g}bmX, ݅mzYI'|8$QP:O7F=Pf/l WK(0F;rNРUD yRu$GmUԻSTPKTѡG"WZadC-1 ް,pY \i%86(D֩Z#ÀnE@`@MR3|65iNj7Ztr<̈!/7RO>e*(⡓'ZRV-Ť_LLW8$@_']H3!?'CVVj!/)fni%y-kaoGn"}WhMpxۗgu!࠾ƦK &c6r'3}'35)(Zy< RjjyICt]= lY;!%E%z*[i=i{^MѱU_WJ -@oZ5k*Tp[ *U:ΛҰ3 #4m7s;.^`e#O1{3Yؠ2l,k;^:"c@(Dzb@04߬E>"ž"er` H{]|)ǻ [[Px(Wrc+m2ZKnUW9 tAz:E$(Q$$g8ed1' `,6r1maXCIŘx5"MH]A( lӊJ(nEܺdȤlEVFA iU@jtd^t6_.Egg1+ jH52eQb6v0C]2MX0#&,c=%f߉9Ν0nD^){[@w5>yu t" "mQy[fD2(NI5` Jj,R){ýٔ{rFQn~6h Q)'W S;h< .D4H$a+c;!I$G@Ż?Dh{vRFnA='|~Jb=˟|lA IF ga+ݫݧL +;[~&Gc٦kώVx`ΏSԙĜu遖JMkmGHBD<)MT`_9f0&{3|cM4Lhꫨ½U Y+^fG]gO&&Km_T[x&$2X2n 夅*oz%]%B "5l1 4sΤ-o*ݶ` W5 N^p<> F"p#e;!d[[6E d(9z$$;#"!߬ :2NH)Pfy<6=AqثbЛC|r#1U# 71SϘ~`3Ü7ӟ\Ppް6ˣ)d=as'[VQSpYIK([.N,ʮ"XZQzI޾9]+15%61?Q_ K1f;lmو;YM+js1|_5KF\N8"DKd^0,9(vQxd1;;yNCXUܳrJKa8hٙ^.zL!JOC nxa| b-ؖSk$ȸ!4@ip% ^jBI 7BFKQ=k\`G~oeD  2`<|GW$E6'z RkiFBAn\_s!ξ?VaKʹ@;jo Csxܝ1- ;izts<${&t|GPd7Cjb_明!Y-ϔ6tB}tB~b;pxх}XRijD&G6v0ܳVs%@~^I@.>:W&tNB܏K$q~E Ԫsu8%ៅ42J9?dͪ B7n |Jmɇ<'M-OL =A7Er1?b X)܅rsy.R [Z|jPSn6nCN~%>8_K?_:6 +kժ4\RdIꑷ}Z>@)?:vO1'@cb_ [.)P)ǡ9k\<| KHJI"@F jѤUoPJ?k$ZB1Щa`s.oTS"ut)TguO}_Jɚ[HSzEA,$:Öq8QNu]\}\b'^8ɒԥ/cZrvh[ &]ъWV+_*Wլvuo.yke4ϱK)먾ꪨ0i[DWR) ;2,wzB*/\~!B)꼵DħPSN'~s)PV7Knμc,Z|"ߺ 'l:y6?-\vU\4xf۷SϽko7탏zynPU uSƄ )r1cǍ0qT!W`$L\| %&)jnɦ7WCW^jZx;$s! ѕ)ttk]UFς#!_D%⪫kq,AN`>7Z]2oņ3(3n3 8HE60'`WXK)xRW4B6;nt!`n1*j=-ލMӷqӿ 3IsdSff{OS'B6a! 2pvT(h j17=D$`ZMϯ4 "YnifViSc#iV&F,t@Ck*NVRn&Pw͢'CTme1_O׳a{[cr@pE苹.(˂{zgxWu% vh;?S-|0݉'qovhhX) v]X$[Jq|7 (4By)TPLiDP&= $& q2*cht&,;礂AO$P\z^$g"FzbNI 0& awj{=F>c.30tf؆XxYCӚQ{`F*sˁ=T!уڅ҇;# 4M i *NSkCq_ٱKՂGnΆQ~.$3 a[oiHAfՒC- K iLh3Qrzҙ҉vaea d0c ɘ >&e`"VńM}rb"^6SN/lS`>1zE >q!$=GwG۾/ż'|"q2UI+mq7ޑw 7 A12/ ܭHr6^oe౜.^+=Ϳco-VS5$ʼnm%ozQ LV k"y6QTILDUʛ m%ی}o1ocv%UaMKsUC5̴VrϋVK+b1[0P)& %sz#)=:=^Le8f&2vX({nk a.ӍOc~Be|m H qb= (/a~!0?~<@9J6`hͧT[HcMO9! pLr˽뺣7qSu7p#7v>ݛP0b8AR4r"L(IBKBVTM7Lv\OHuޠI)u۾ 0(IEYMۅr,~yNɕ_~p"G^^K(8p ĘeVdݐFpph-7( 3쥴|@ذ厊14+{%{! `!^ rGĘb彜\KPo-7 $,gbL_ Xz\LbqlIĉ{/C\BqK.ەp[:\cű]VZ#N\!=&"Q7:2@ C: 'r]k%vz'|^41̢5}CF j 3^5}6:34+JM !xkjS,_5fگ1Z3$KRٻjGxL0[hSNZ'ᾌZFBqK.J'n\fkc8VR+3oeZhaH{1_q9 &vW1b+ބ7y!I?5 6bԒe+V)9n=hҢY6:t͵몶np{XchNwhǾPKy}BGvv?Bxf5ԅ)&$va$U"X2:@yvRL$nImf<6DB 77\<|B"bR2r J*jZt |Ƞ["]Zt$ls-8fѲU+uJrK6ڟʻ[YRy#2glFO_3U.F+Sfé;{s%e|ׇ̹Mmaaul[g1hpфIRy $KRԺN6/0x9U8 $S?$։)}7_7;Brp߶t_=[R@Cͧ㧴Fy!}s'B|@@АЯ,_Q-8a1P_DsW?a^fPw%c3- Q^7SKVd@23GǕYC y jzYnY`Ye5p02{OQaHo,&tc'd 4A0IG5>aj14wvi jL:pQN, ]' ۰d:;G No:·$)X'gMT i 3tIғc}GfT'ڥnkPB<9$zOŪ~v:ݷHvO^ 8ڊ Tded ̆-fLxg>UPQVM꡼[5ڈHPcJ3!SOA`hOx@j]d:h; |C0pa⥆.o)k h*ji:kih&ijֶ>eק%ߴ#n8hX-6bmi鐹 % Ddzdb2s.'#5=a\6Mf,jSgUW.%wWmqK7%g`1Cu ӽ:Kņ 10qԸ>Z Wpq"5Ut3h!qy10ΪhaZ%#6UtiU&9ʢ_j?w7W8OQk\).btP&ŷgJK쇅:mYRy)M~g#14I& ؾEP>!g&ѷr,t&f9.o^\r7!I[ޒ JөpB}V-cZ,ԂtTJ4^Ƽ#G*Z7:b1OF$rJ5f1Ҋdj^%:J.uBx6PWet/g9fD,`mb1,Pdb2Q6{B*B KTKHtGaaBDfMrӹO,e >x0>s93u 5o)UYR $-ضΣ;A%7< TQȒO|x4ges#fok=9=QW lUc75Xby~4**z),u吇-FΟ5u*f΍+/pĕ|}DڱB]Le/Cݽ撟L~zO$T+NSnj WWE=?bw5<)1,AL5 VJjXCl Fjs֏ -ٲ7~4Z$׺e H>N cN$+m>(+|8pPvr%}݆yTTMw+7G' v[Br(-Me) ǿ%u!B4Uڮi[cžv9 3=y`a U@qÀSޟ.&@F7Y(CؿrvXKsDbLKҭ|M0'@Fmƚ U&)BnCZ?8`ė8I%f`U@639+]hPuwg=0}Ù劔_nBHqjbasvU Q# F NE~~{+;%82'Gmbhl9It(*cz 5%#t|Ntfg4'Xl}!nRݯ6 ILcֹ ^ΈK27+EfEޝ-y{\E0swmvy>6^-B1H_S@WOB[kyE.{{1HKXӽ '$Z7m?Sh$猵l#dF&5GeIae ?;hdPqafUȯQy޽Ly{SNc%9SaRP$ 8E !DZuz rcl2(: W.ta;f\<@df0@Jkq.ĭOQi#nw!. q~؋5(+$ckuy ta;@ut~r47=U?`ym_6;80wX5J{Lsr ^x}.=%?c->w|߄7Om#.#W6a:_leߝ %6GUyQR(ba6_Ebbm{%P2ػpN~lt~Zˢ~crmh$k]xAGwKx{5p arOQJBh$Boean"+U!100hi>쪂*\_:.–po) ._Lx m0~v Wȡi0kac7i)8,U+,ʗ*ĔI݂ }XGZ4JG\E6Е f}*:iЖЕ~DK,\善](QYwch&z),=j /I]AZٮMjM@VhE\ôfi?#|o 40o9o4 `dw: s%(븦tDS&z^Լ|;gqg5עŸMA1:Moq)Uݙm[tѯN=mx>bjPsZ/^˹fN6oD"i6Z>.2Y%=Uͳl4tq}yZD[k'kq"0Rȵ;ܵVbZ(,(JeR d3KT\׬ZԪˤjMeDSί;I}Dsܩ ±fq[#Q:rl-n%FgL!'K˙ʡ.Gtxj#QKͶuXwB" uպ'!yo^Gv5XonVl3QMVn/)K[<5ra5 \67`Ug"i|,Lt8 3pؙ;L@CU=Q\~ ;/ӣEeOӪTͨU*:8Wa'38my}ZD֨YYUcHD<iqzt1[r 8m 4)?9X$OQwz8pT.[|-5Í4P<)a]3 ~Tr>H-/=8t?mבk 9m%%yr=\ Sz6d8_B/}7}F T^5$v.|Vj\7{R2F[vLzk.=%sG91=TSx/u=+&k^X>O3K:LO콆9H)g;*T":Dz?<¤1JRk%00 XhR×p@:?'N\Xm})#'AWڏw{=&;xv؏?kվmuv&4q&`ǔQ1=c$=\eVjk7; C-Yq7G?/IfކN8{ns~CŪegSR |{@_h9/7D|y.at^?CmE4 j,93#<& [twbZ`:1G! /e Qbs|`$cuwL=To-φ{d_Fzes9n ͯ LDniPbڕ~2z?گFT?PN쯖RK޹oۈm.IG.Y0~ H unMAUr׃ Х UX09E|+iG$*oh7{Y09;kWP/1{)q~k`rc#ovws#%`DX׊\n_#mPUYe2x˒ْT%!WpTkC.ᆕyס$A(F:îI-du5^5{;sָ1C]Lu0A!pnrm(b^9θ9fWWe:댨jf\zqM2:u!"SGw2bp]xsiL^{)׹K3"c}Y-Bj%>?kr7߹e1Xvk"R1I/\1kΔV"^>Ceuzco||3'k.惟l'y6P^eېZK5FOCrQZ\\c*v`CgnŷfĽ֒uk9Ny* "Y1VHf,]c79tq*~mn"!r?;MGY߳v.^Tkc 7\~@Gwaǫؐ>f$49.ڇ=&?b>M^d*U&b E`ёE֣"M=/+?m2W )8>S^ϏSg᫝SSx֕PG#y֊ p!&9i{nׯ{Xs—8'd*m `,1x0,f47+fc3dDa%Jdf˶ܰ8ޱTF~v+W*ќLСapnf>TQǠ(:(Q̹*J8<qoS[TP/yݭ~aDx>sڜ_oXr K^x|Ô0Mzvrע(5솮MeydrJAVxN:+1k~ }{U޺#9 mš3qȺG>B0=n Ѕ;.${r@/qzpѸÛHhQ.6]5tl-/ƻDꎎ ܔd*hkrDj~tb#OdӁ%hRi업jFgUkާCtơY23σȳ3QBҔGI%s*&uOڥ@ѕ44A:OtA&YTNx .Ү"3kCժgiR9qqtUO/\LiN2VEo%71iW5xS RvM}kr8QG}Óhɺ&ߎ&9m/A\ώIV휛.׃ Uݪ}=bTϜչJ o(K3ҜKwۦ3"4b[x|‡,WdOS?o}Ědw5rRm }bv g`8&&N[ kڈBio6nAǶco% Ϡ\),MŢųm$eM{*N@˒/f/w?ע{Pe̠~e^s:jQHJ2[#Sh5Ӷڊc45~J]W2;厽 9$;3ݲ[^ NM.YNJ\yC;}٠Ǥd2i3 eXN%jsT{Lv"8 Bӟq4a*O@+p$*¯Rsg& h4Fnh5inHpc 5ycZSFŖz%\fo%~:i4y}}Ȝ1D) |F[KE̶ƐhxmgWB5p]f~n~pf[wmN{Ka5!>Yy0[03?5(Xaa 7kddn%3/:Byo#GVb w]m b}L,BG-:ji %kJa7ۦw;iz]jp=j POzjExisCY 5+tn7*9YFLMjC.f]Hl̖AS>M4>Ȩɦ?jA"m:[¬ej<<[,Gea2f# [0.B`~=fWBEv*1OS)!~Mj喰:?:ƒ!ᇒ_` MUS<HEOwFX̶f9m*/b/~=^)^;qΩ88LCѮ[pC3=)630.DzU_7GTlNߐK^V՗t;/0.d35!}[+*&P. /ur)jlSBdpT!C 1U=NWsN oLM V+>uů"* }\V 9K6IK9iF3F%4 ~ViHK0>P9ܷOb ^aq P7VG۝('(* |V@-AjRi@ eRDZZ%;a V܀xn0~`g_$&^H/tKK|\]s,I BC@ ;|Ϻ+`9,Zޮ% sK26?̾- e2\[{i?wP7;pC%qն}~ يYi4'vZg<_:*%?\h3oP o -XbVBHE=B q!fm2Fq3{a_03%T|mX%d.x|q%Ӄ,vX#S)armYP!%U;[rw1y2ח9ḋtF@7:ȗ3!st?"G,J>8Q ;ab.wAjs-E5E5EYA$u4ƒ΄%%b=O(Y܎@E$^Yr⪭0}uѥT"c4S-ӗ0}UbF̼69C`65W2|AN^Ĉ<4{ѵZ`@98fYtZN܋Uuq:]qG=m: WmxXQ+7)Jb[=Ӝ\:/[^'=zVn\&\7mI5!͕;j)[U[Hw#Ϋ)TY%{w6//fJ>?A3MY`(ʗK0 ^6KfFJΖ+*FL)K3,-{xs/y$(`-1nUw6?DRU+ # ᖩdeXw)F-zn3RyviG~ӳmAa}j}]%ܠ*4CTV/ uU Xo禶52Z*Bݠ% ]ԅ/_u=8qSmi~Q{1.znGŽKP,T4g~x4!GC뙻I4OsY>[/ԢsDZKoz~Z/gW ;g[mӼR{,շD@)|4dyXA\&Ym$j&kؑƺnL'xX}lOV[닡nk̭Խ^{{H0P0wUB e {\|iޙ XyZskn!}f:Dn03%HHֻ\ħg|7LCc0}Xj |${@eQ.J0e(ןDa%X?`C~u}jl*WdXI }AleNIm9g.+τcDsՖxئe,he `II>im[-zE:Ҏg$Gʓ35 .ܠOcfw%h3j-`xǜ xڦ^TY( ]kԻX؞ .JV~҉:I8V8ȆS2= h `ZJtǑڱKtܴ~vz8(` flC-F@~42S?=3>_B/iZ{#4W5'>øpZ1Q5Ii68Oa8|Μ{.71T/??r  u "uKNjπ(390.ÚXx'+ :Zىu?Qcη'vV=8joحg\V{`|a?D.a]_K##Md:| Źw&GnKms3&E(Z.;]NT| ÍPuW tblia7VU,c EMp7sBj˩HxC$%Mc}gy*x$Oy~dLf+0V)9ғs~]j,z;[mcep2LFcIs5hpD5< ?W9S%\W|_eHIMqWeFfZhаaAtU+#+Z3t:v6St׹Q^=Yݗ7Ά';C+(pkWMcL83X[`D̀ѴtL/Tl7ʘ hqp^eb Y֟mhhQH_fϿL?0gr#r[\q4H ꠄO(;ok^~k' H(U>rtT;L&&`-/zj)u6e$![NΉ_HG 'TWT5j$JNrMzճCk#ڈe0_qVELuke.s(wmnN~eP..$a<\V_y)aUVr{Rn J3k;|FYR5`81ٰh-e cޏM.uN'eUO;IK;Grg4Oj@@&MKvr`S[d_fa I\(j"awQG[Tn3d`q^,Іu5ʰ؁NIV+W̬:2<7o-wszp#K7#7og,)1mynwI65we].FmG#cpYWQ\72?,A=iqܨq_/ɬN67sˍpkSPN>@Zu? Pl]`v|ޤ]AՇ~υ˅:ns#GNNhѤ/Gh@͹ tqT>%/LT:wO'+CvCW+􎘺'숼 4taFQ5`7hq2 n͛Cw 4̎_.Jg* 5MoLpUXQzM>/zBc;uRp.-M&86S"&#J@F܏BcDK302V`::H3 CC0iJ݇7.wu0cf4$Pm=` Ǧ'j7!@нp-qaVTtC%n _Cd|%ɜNE[mʏ=g/A~:%.4OY'C%)qu%E:o}ۂƼUf)q|GcI7:u5gC>zq (ebwD @-H'6`S叭bhF<ʬ['wV&2̮8_4{N!npp|z!3[,D,5׍ ɆSXW,%S,;N&.~ H%?*"=<}H)}Q{IKv׆e Q=suPf {(Pd Q@6߱&iifJ&anqxA$.|AZjIH{퍢 LI @bx#9'ڨޢ`&at(LnX0(Q@'6S'MSWδN p&ixH4JsQXѐxyDꙉɥNf&'Lz,Zǭ8zl`8`Pn>|)Q_";9Ǚ =q}<1hXeZdMjZcXcJ(xuGA{ћt_!f}3?TCL#MkM?Bacƺ9UFDd΃<)/fD60. F>kh5VG Sj?Kj2YR` e{-TJ-?3q27X7RR)OAu c1OaRWϹq^EO䉁ތkt-着j~Vr@$"VbqJl..h.,o 6ʦ`Xkeo‹V`GQt$Yn"85Eî hORg)8"?tƼBcoaWR/βHx[;><}\֜VX98.Z8 ,@ Vʥ% s"\3 ]\BG6`~_sh(6[k6gR@SD>e2 @_$A毆eyBukPl.ПCH^ubCmD7p;Q|9EJu@Q'F0bz2"A58y ߗ&/B:bż-o˘:dL`g#Lo7ؘ'-һxÀ!λk]S;X#jTdyA;dREȧbgܑͬN=0}s0>(FUwW#ĩ喕#f%":`|n 5Rpkj.8~x03Q„Gm 0\`l (PXn)"/;+_9+m>(h8`ܽU57qT Ʀ"3џ;_hulpI=O=ŻST͎t'B7_ZґUiÖ7;`N:SZ*_53kT!h9P鞣 kT5vVf7ae%lv@K9zAUlǏ;ZfnX38RDo{Â^[t8)&dzB&oo2V tߴ~7hf,;o=u\GK6z#Mn^eRmIoNy&ۺ1LuKunK`E;C'#UH`$ן/ɷ;o 7pLp"pEWћBMl\1fs)s0bakMW¶`^yAkr`RDbucP\f5wB8i; slbaxB**kJ,7lB xW;Z*rB VBF|;xӇC_(I'-3y L9ė8K<6F azynq<'DuYzf{u5*hOmp$#[yKѩK#[7[[9nHi2@Tߞ+ C>ZE4h'&@|Tr~˚-T~ K%*Iנd0-4>Ois:+]L5'JfA.[@BxUVFhVznCuXDƠ6UklcQC>]B߬r0ޒI_K+vM&y3g~ѧ@kyЇhn2+G˗1{*ֲja-[M +.=0RWf"b87*{|&y7W:pJr*S{voFLG(C`IvÛ-k[g8,=k)Nz!6u1Yx`ʲYDR[TE,ů9ְ,|HEIa18G _(CTRns;\ <R|~ӖknMZٹgoF]WIIש;=ՅkrCb**9ZƩ=)iiqnJ47C>a-8L۾hb?¼ʞv̌Rq(x_*SIdtMZK;(vpzkZ#pЗ|IB +YAEWu&ʬf/̚6|ؾ,eg%Enb_SϧN=~!uokq=K plPd\M2K=J .(f.+:KLvQw\9=tLR?꫙QS#|aӉI:)ƚVB$Ci5':ӘY]ܟˁbtPYOͼ7椄A;Q]܎z@&_^hqэ1qk[D!o%gMMP8P DG'5uoM bǪ KG]m5wGAjvZCQS`9Xk)|{ \2@ld.#h ~$\wM:EBki*"l#~{ gcn`Ғ׹?Y:ipwLIȉ|+~|dS9b[9:kޢb;\SݫN*rG ΚǩOi\G9SGKR'Y\Knn6jaVTB ;|BX됣q_X;&?&Fy&F{<50'͓S5ze4-ǫGOs 3%g}L0vĒ~$R=(r8yXRcFvb)~La >a{bQκbz' ia^e\5lqL[VJoD6Zq59:ԣr6ۇ |-2K~*%x7Ngvmה^d5(7%G7onu},*&%Q.b &Y@|d*Ƃ߶ U /WoM {kZP"ֹ״?y1!֗@)ȟ׻"@=싫\5ܝM_AZ 7RwQ_S@d<.[ |[S]Ğ0dv /{$rgGVV҇uVGd<K\(19"inz%D&az.]UpO/™έ;F9ZB_|Hh$HMy)%nE)[\qOk[X4?93L\UnꈪoՁ0(gJIU,940ݵ13 \D[ZCT/DHL9>SZp#dhgt):mAh_Vs,^`i=nN~KG=>2C7H\&\mUpL^.AcY?-.pPcUΜ# Q7x ;d)~"(YǛ( Wk|>#zIIj.פ uDAtµy-Y 4 4*.dm:o={y]MQ$,ejZd@USx""7>/A> ֏=x:>&ӵ{|B# AwP0!#֋AE"Wu22!}Hd*g^/ OQ={c>d&> VFTƉ`uMM /7fְ8TTYH|Uoi!M׻FrO.h0Z52o4͓,~hcv7a*eCvp`T q(vn@4%8zWX%"imWT6Hm<$ni4, L'x"y|x q 5k#}ǐJV¸ժX`ɚF)W.8̽Upzᾼ"+7l|` 5rv9=;:'g}?`4[S6rMZKQxMoh/ ^[SGJQԜSRc5-GA#ѩ*<1hCu3T`GXǵ@dUi#+}hP㹀 gP-ES0lg&$܆^W-n4 P}36f 3)jYt!40x3陵$%ff3iePϤ1Or~R~o\ JUn8J 5(.=GYysdaw,!,%FRɖ<ĖSly:cDmV p'N2a "ItEIUIUpJG UH_Gsq/ F_Ύ{h]z* m,\5jCj jʼiȜM*!s + YEEX{Xmc҇8|IYԻ}ts^ t7b3@Q?EhfR%F9IZH<J}Gl{RBz4ER^(d'{Bp!UFLz =dܜG@>h&#*%Ydɭ`$`VV{EEҏ TDi853=;~B%&nDeWznlѠ#v]SN ^$ HiFlvK>?4٧&Ђ+M|Dp x xC,oY e75\Fز4Sz8"'/q+8q5wEd:4" ׳Y~8Y.bv  z̲0Wgq_D޴eۄ ?h8F=z]gzˬ5ɣYhw|ҩsyQ׷aH7]hNG*se'vQyv!l-oZ/i<[лm/5nG~I.Uy̶!j䓳ĭZs dH kq *23^3]#ldD}(8}H$KjM4 c&Ĩ_r@szT*M ^f];\jVU,ckXB5GF u Ψ8Vnzo9]ʹ9kUdjq鮨Əw,]Y$ivEVr臕8&'#5<޸?(HVP\PksL+7%Rҁ`+yef-^RM2wP8X8V|pZQJZ#h%萠Tθ71tCdOVSFtER˵>d3͜"boѷG/G/ydAH./z)! Th&_bl?ieuSҒ5ߨfFUHmg w-=_$ÆL^ N4G oB4yݬ@oRD&< bCEN# (5DٮJ QQ|`yP~hL3ag!yE7s GT,`:9j,s08$J*[#ͻT4Sc<핡<.ĬM<9pL!mA1"r=,>l>.HKDhCdG[֚$7TlT-geASIɅ<#Z|J#{ yhܙ%S YE̺, 9r"]dڑa..t0X b+=vY Ke#:d2j*ٜ_q<{/Sr>q%Mfaѳ;ɂM5aS< ->1Лҗfp(iB[YɥBߕ"TkVOTlՓ5\$]qE+FW,Xlt2h1D-K`FaP=;fyhB[Nu}ՑDܦpq=_Óarw5ڃ0G9-l& K9g@;VμhɢHUZ"3y4O!eon uQD$6ha,jO#amнto,0TRT|•@TJfWpF뀇#.ĵīA38ց1ʶ_:uSٱɥl 8Q6K r-&ӱQD2?bPN65&;cdv3IJ6Bu9%g!R);7!C3/z_a^ OJ aZxr *v k家Dn~DڕTWrqRϊq.ҳ,6 % 2Y1[fv`v3m}#ːx\a`6Ñ_c՝COs7~q:p*Q,ن݉*drܺcmd0\ $S\ާcJi$\?K ~Z`^0ãd<;Bzѯ˰˞庵+{#_@L7ySɋ.b˸ aӧDc AUq*DpYl/ѧ-NN é*c ~{_x)$<ڍgɣlv.ApM rȷ0]- ea?\$"P5 $`JIhD?K(L2*QTY 16g9:@DZGO[[XЈniQHmD}so P\kk/<&G ؿrI6` H2ZTFqj"T5o@=GytIP W#Rˮ_@s;>Kl%AKf3 tqgsB.YTD 9ֿĻ-~ JvK:,4\O@ 1#]$cGYP)YzM=X8e+ %lFl/蝗4HܱX%HY+bát{]toʽ,`FXN)O@)/PJ_i:p盡m1X,޹i5O xUg`ZԭWxR$`mb3cu{[͜oդ,>-&IT 36Nl& 6NDK^ݛݤΞOAHX1PK14<>?k桑@<с2eഓeKk=y )8ZjU`|y7z-b I[vO@ݧ.h?i21V43_Gn!-uo4NTk4ՔDa[2P,']_Cy½&'}CāDG1 s.%uÔmkjJ|bWxm G4aⱵ*ZIf^1?Oh~< PxS #6 V9[i0 "lo&б9O^Kykp5T?1;1}2xP.4N|&Z MM{o3qtfJ4j뗓-xB^y#{sCAUrVX4:à L5 IV5hLCDWAcd@m kM,Uú|@H)؜g <j/h Z쬌*9DZs0/iޞewLNy CsaB.Hy~\xq9mPvL>qMʼo5}:;И |!8K@dzы`dd!~ ;!U(N Z[d2T]F#W+o{yjM$^f)M }Si)Ny\,zxzLde/r DMP$ !2üYiOŜk8zvFl%BDX E@S6nzn FCvV]%V$4wEґIH¹qS &Đ(7JDdiR`wSbghsuc?(YJ<~dw(o4ℭIU>_jϛQ]41suv]F˦?m81}AZ{Li5R`\{W5K;&v4-{C/++lI/=T{CI2/UZT7Tnoː_ sۚ_3pW ɫs!u: $$W QmfçH(6ȟI/LS.57]~07c,Ui6 ]ո~ە9o-٫ ._o^ZH5mBBW- j7Z#b$tr"WMK%dɤxd]n`L4)t8ƈ1a%Fy[)tnq+ɶ2P YvA+mD180Z` ((*;A[@!ߵEA1TMAjI΁hO/dCLmH#gchxZDt>ay sf=gqzk_rDc).gsHp xԵj PדXKH&8 Ho9˄aDLŖB8 Q(##fPLeGI--3$K&*:CST>q - V_9s3QWnMXMDy^^gq<>α:<1[kivtc-.RPFvJ YCQ*)ZEVrYuzEr[:5C#RQMfJJA)5hjef4QrhNF+Eqyo0R>"6MOT}AEoe4gQIqk<6)^2rdhwgJnhix&/4Շ쇷Ggo= yyND6_?{>ύx,eݖl;5:n) i9Uj%J \J|= h2Iy˸̆Š=(,$5 :SKCaf)oiW~@*d3ܑ_=X NwCnf-=6} %Ea=li39xmpdNyV \v_!riԡ #egZ*Nݘj,%iT'Xc)֧rpd4p 9w] o54لSR+$M5˂Lm(x DfִIiu&dn$u!H{adJ"%)QyVEg*)+YQ#0Tڥ\vd(yY5dkJY2rNva4@B`ۥL i\ U yA d&0aJ ;ʤ)i h L0S~=Ȫfr`67:=^FTgnGEkBg]{T^c55Ey 4!Zҽs{05MDd!^S4Xj61%$`Z||mh4(OQFPF:z˹ GFn}?;]>}zînK{kHy#6 msgb ?)ڟz7716o!`sOA*H˺:,ɍ%*h$S?щ)(P.R~sƉê[~߿)Xx%ޕHIN:!~kª!#'Pi6`; KzkxgM$?iAgOtTuL4TJTPdF9Cu.Nꧦ wo~ZC}?|5c6ҍHT%*Wt_s5&J$L'@&=l,!e W7h&ߢk#.OaZRğh XjXb ++3@{9E% ɔ(O߱)"='0}28Qd:Q>qi^RR*q{Jz$^Z>.q&vK==T_cz~iOBkyEϕ?t"r;;GPyOkDӣ֋~+. {*?&y?0#9`5^*ӚWAZuDxz>"F]j#Q`}B雿R 96ZPK6$sq{?BAZfY=2)ӬW\X v%ȳw`YU8' S=Zik 7立,nW&p]:&uL˃+[~$'cc6Zɸ Sd(Ft1]° H-o) KE/xH.vuFQ# \[dݶobrhG8PKkBۦiFK-r&\u3>q\3$0Ha(F{;^+I5kjYTHev415BT&~gtŔ(*MmeJp-rS cC&c\tbqX9'q.NQl&Dw`J]a=@xsÀȡ~l o9O'_F lF6Zh{@iqZ֜mv@xMHk ";fs4ѷ%Ǝ>už,YBnD薜r9CW2QIDt冇D9fH/*ŠU2,pbBdEPhM~M>GTv_/)b!b, TpH8"G*\pXd)F9eQ2 KO,&ƻEaw㚕.tEA6FoH_̞7*3Wr]y ?3P gGg9gobP|)b65HyoͪJ῰.H8=ST91Xm>J]!mި_y1^G  eU+ nb|Qqa|o@W;{aW #9U34S}ʘeL-, 1Nh5T o݂5uT\"!v? r]x㤥Q] ኆ{['rLFHK CkWX!&u9ܛ@mQUm5 &a cV 2:ljPF5>'O|SDeZ>&mD*h}d{~$8^;j$G3vUg ]EnVK18:N"SD IݖaV31#Zߔ1 (G*5Ϫw5"n1r&9nVmwm͠zlMZUvlndxl4w$PNȷ\i9*K!*!&3,ŢaSz]49(DG)*p6~>qF*c^ݵz'D+<:%ߨ%kNID7ś8˞y@ !$p:MparJ ۰y,##r ϊ3.*AŰLGPVK?GRBQ/$}2{[wH%D\۱Q %Zۇ*N(WGk ![jFs\"$z]$av:K$+Q^}Oxö, po߱%bfm&1hC=% T֒n>J4HɖuI6[=< ;-1٩~ׁ=n~R&n 4_͚iĘ-2M_Yz v#"\RFTu辂:nڜx [+a^NW+T~\y[1$ɩdD$"N+?ALi+/9c_饰w/lU6OP@uٳgL=QnC)* 3&w(h`DM$;[TY VkOԩRZa:yjg^_\$pgT;zYe(5b؂ cLߢqGы(8?q^Ǘu"jU\-uk%aʮՆb:5MǣFX[Niisr W1BEeN+Kx<0V zRˀE[%/_̏ }0`*إ84.Z4s^^~L2pqΗ=}uPuF C`elqd^ZA7:Eu8̔ bP/Y0G%:Pd |;iƣ˯_WyX{j:.Qo #6īэ,\/h%M'zyfkM&DԴ2$TK9+Wg| D2{-*bQzʆ g-tZ{`@h'qE 8`-KZi j\^:A*/zpI&7LnfŇL[74/kb / X97XYȹ?9KXi(0c[DV^+e%r)Nnb@zCGyf(#Js2㘻z4{祔nUo|ZJQ1b.qTKsCl۟|{nUh\mև}UƻfL{{_w?WmU>hf$4=.THn_ ۳nX_ۯe]HG?I%vY+½f ~zD[tE1J'ֲut0wBJ_ojڹ7r_p4QځQ8[g/Kk^Ddkf9VߋỴҶy썟_C|ý"~mWRڴgqf6mjH7||(87/H |ߤRDSr|^,Bƨ!Ëj="J{,-W&I?K{gwA‹χ4`me8`d B"3m / O=S]]-!7sgVDQwqEDOKd! 2ߤZyrx^{A~ƿ`T ZU.qY̢ uaŋI;=d[^DZR/n%7lWuͣz[yQ*s|9 }P4̬9޽- Mb:p2boms woǓq)EJ-'"B=>K7>43v+V* `p${@jNΫ@É9*"Ny>4)xPHrFD-i *"e G=h#} 2f&H~YD/-SN'~wq#I_ئcv9i/$qthкZ?oe5KФE֬ kkw`T$Yu묿#-T.oF`i\0[kZ%gf;Z'PLb(qSۖډ9qF5Q.BDg4ڿ?#Tz!3.Tg#vHݬ(sHbI8DOh,摕bZ͈퉌虙2NX2w @K溅1XX/ cu=CW,$ WƳZG~TØ\Fq#C IoqZFM-r#'Ξ מɪxGY66p6B2_C3˼V}I˷QAC.DVo: x1>k"Pܸ&1pLn1ܮQKtzk 4J''5y8Zw܀:TfǩbOvʒ1dnHiy۵^Ɂ%"_no/Xl1x(I!'bԕa.F`R[|yO-[ZiM=tR;j=l.k@/ HM ɜ\6 H-h vkF=8 0 uUV}6kq$}f$;RVyrdokp@/Ne/ ؛oPƐ8$e1E{kXf0jm"=F G7 ?0$B^~vs8m)#;|!Q"j*$bO 8sE&q-lB.ˊB.J'81FvgGv5Vþ+\pчVKx@Qt ՜eޠ3Hc1k%Ӭ]|sHؾkd^sYع)o+gp4ŒTG`uoQlV7;Dx^W=/~`u&# |COVJ -MYW bBC@LVG>G -*?9r& uAC -MwH0 9;9umҪtMFC0X:+WpKDf+<#X-F/񜼍 &pkf{dMAD&g*ZQ x/:+ dc}`#X3 γγZz{̰{D` "ꂼ'S'  l>@IJ ^sXG NZcH)KV(ag IM>Uyse/-oxTR,[fggt6#LUm?-q'Ak#d/gL͌8'zK8Y&z YH_$Wb;g8DQ˰qcObp#{0=G/6Q;X37t;>\s=Յ^eq԰:.S;tyLA h.u ʆ|RʍXM@xoTAG wy+ j k~ *竫ՖsAzZY 38FD%C˷RBx2}͓7!iD$MnP/h:AT}/̠B?TGEvNp5/,vM&3>?!՛aJ^Iֹ27bgkRU,IQ,|RN*WPRUMY`lI徙`駫LZ6cMb37Pkts[4'~AE=g)L3{q3#*Ύ$D|%x~SQ2(X~ N{8'^5Pܷ9҆C$($0DSOA aIղ ;B\P˧>Cih,muv̝OklOYN=ۄjMDҁ}zsR{Seپ6n@<8(ߠ%"E }7D$X VC*-S2Q/T.tŒ3i|qV㿖Mx:@F eZY·e K+;hN Yuk1ʣOO?d"@yLu!5S/$po.]8%hZ&ү}_N_ca !`VN)=o@W$,:" ⠣Ww;: D8+ g@wf ;Vd/E2vPR "e~- EvJR'JDZ+.HhqTiQ K+:wiЁ]nρA!LF@|_`o$Fjj 4"%CZZWbNz#4';.q}7$ S+y uU`@X(q&S6*`r&YܛU ӕuBm*Ecb}rE 'ع}YÕPzF>d(3PP+)vivj[F;ѽ]ta(+3x_oRj%0ʕKE@1` n!j9^ ffr.Y{ V=S;J~\@iE/P m Y(EI#){KǞF:0euepzӻa%+KveAKB)auK.A>Cޫ:~K ,x %ʳO5s0k^dI@WQ p# Tcr!Mwˎ#n"ʣzt'ܬst9E,KجJ)Xe桟qmJr:` K_DY {o^Cn]+;8IY\hכu[ O.ԩ@7[sl9#!:$X>J.=` Lt¬>Ga;ɍ! fj2R 7]E/;R()x,//R1녯z+4,߅Q7N\<¿@)M̞_Tn)u W@)+VЖ,ލjǥgnzs,hC͟YJ[aVET+8;t{q2`#&+P l tH)LhFaR1] v˾"YƎ%s#` GejAn0Pɟ(fGb5nImK~:VP8Fro"C¸qUP7Zv`vvU#/5᱀0sA*t.r+]_7-4A!ILfoj8NtPۭt^ZrI( d֡,\jPoyY.8dL9tz-\-4əx4薛;`=&zoiǟ9[0Sy @&F6~a%l>uEwD~8XAZ q)Ӛ=pAixBX|L/ˌPdct 0k"d.奼ҕ%3؍H'!P7fwۮ/ᴜB攊:/M@ՉO00)wa*,tKhvY||:TJܓS|,*P=W"Oizã=ic[:yAe7p^|A7]/Օ L3cOhJ r;sh;B#ys[d# U9c__2=z l}t#!m-lWS0wz<$׸SVӀ C΁Ljft9gW IODN^o !ADmQ.Sj>ԶՊay&4P]`e.1"vB;ea7liȠ䥢f́EѻrsV CN +mcPPڪAj"ͦ^S%gId6렴Τՠ <`Mhy1J(%N頻GtR$ _ٱy*_!#t!9=bR,dRs6Qxgc@s c`aB3k,0K殤#(Zf`lH¬X6n6/&THn 1*_ B¤r؝U!B CHg[ A%%MgU5>u5kxjȶ r ]ʅ|D)yv]hA(+'C{gB f+HW|9^Y;#SEpưǎ 6K 7\kAO/)d jXY|z&gWJxm=k`{fa@!ދj0)>D Z? ĭckɝrZp[B)l5{ 1w]T ",z/0W:`AA@W=S3M-R tHpy%IHZ/ ;Zdkl y!-4B8<ȒYQ,i{ȼ8~z&xaEbd˞43A\ iq7)E`1z-9{a9qj'kn@Wٻ/*JhO6aWf87UZ4~%>axY6 0$*eO3RX% D} —dKߍb I >͍>~lAYf/* wgKs淡ɱ6,|eyCւ~{,۳!-'Ěf{c6pDi ).BXa[}rA$^FԩvcJ;|rOdYZԆ@Aj^[8+ݘz Y:-Q*_]i mύ*Ш*ҥ~N#[u`Ot>yoz >&jj ESXHQRˏ"KAK_.U2K$p& ){5㎽r'~a`;_J=#E_ܜ ;gkeI!w h#p< SfPUnp|GFf20s z 䟁- q@Ժomk,aA]2/0{bAvٹgB`/paz]1[NT٫>ۃ5,Mn 9NCr)F,Na' s5y2\G5Z6W}oZS=Z{~8˰B!x+RA3f]<\ bBeHjĖ4ojT])y{ڥIy#/P`BXN7ڙiŧeBG${95#J3u I݈[&R ښ;#ע@MTs-,F~ff= drÀ/21 .gvp~.%↰[QH8ey~KDGZ*ä{>iE[g } } p-:~%HYвPY{,MEjBuxKG*͍KvnePc' X dg007vTlTa9X(/5FӐ8u!Ѫf>z+Jfz np;|+>. 5gTZh{PJ^VrK1f!\[ T ^As Z?g<=lË]c*I+GytGh;ig>R/lFQ8kn;2?9(} >״~7^XeT,xֵ+1~湏^hYಠXE+A|h`v%mTGcK%:~bB[Yai$Μ8^`ީD,)v*bxNl:藓? x0xH1eԺʗwk&t$l"E",,561 \*uJd.ă9ퟨ@{!t8yۚy.qjxc[3S8'Q <fl!sn(bܢxt9-*PSx ٥n>(My;vY:^שrzF/5[uɺs N88dURζ x033'܊wїHPQ~(͎c29%O19F^/c.~8S*M+Jn<5̓'Nd#mq3[|i]2\'m }A];!([)ݧq1*$~m`a0c8$_zSbSFOJƪbmN-䮄D1N7G=)\~7s:) ]xUgCQ,=$Va ЁHeɞ#@.$\{]gsbt~jUы(|jGFZ!Yu[(Ml3*>\^0ǹna4 l #u)yf[;zibn.ǡotJ߭!LlhpST}-_-0YQl]b*]wߖ=B.]l-[&N!{تnGD2mE+a<hA^Z?IT &{ 9*Gp`p,ȶ}/`"YNrN/9T'r._Vu^vэ-ǎd! bqτr!|+,Zz~mk_q\İ?JQ-]Mn ?x3!مp;:Ed͏.ӯXѬQD-M$4{K&N[2t@iXT1gGe.9 (qHnt4QԊB1OTaOM}B-H ʳ9!8/E@FS>݊@E?8ztV&[7۵%=v~3.tN.'r, `\ҋB쫠hI>eG| )[U[c-A}bLbE0TR[&y8;w3ݑ ? !(i6Qb;G9l9.ޅL^W36C[㮧eA%lBm6;SWa&XhaDy`Nޖ p&q=",=̺8ĐjV΃?N6yfΆNwSčg 6EQ$m|+dae^t-TBhnXfg<7뛨dD 8L#}CAț@?=(TENa7^jׅSS! }-~,y`fFǗH0haCמ%;@Aא+f囒)KWdRd5kl//i[Xxv 6ch׮̨!Ƚ+_C[S@"gAZh*&N3 +hҳ)Figj%= ~mTl ;0-7$(R IҾ JE z̃T[hޅ5#5^|O*jǥob`2ܽ;sfwʎ&eo-#,^ QjUUI=oi=68Hy>c?c[W%f A_%}<.b< tO^fK iSVbU*a+q+A >io>ZOpJUaZ${Cɼ0TxyޮO/bԔ0d*ܓ$ҜmdIv5ðL2u$%UT&s d .}puT 5,h!y|8~H+雎\!^.>>2ZuPBSfD*ADf{#P\|x })t?{z JlRH^6Zy'&=I)&’DZCX2xu> Ibrjs{{1mF.m[zT y0’NPnxM(HG#Y9>O7͂8  i3(q 1Lqـo[^HYj0q2VoAɨĈ µoTb[\o0M䓍9i%Y %& 22A~O.䕯+HL8wXuo֢愍f(K2=q{zp;r>HADݟ[!wpڮLC`(4:M`Y_'߀4(V &s#PޗEЏn~b<PHI[D{\1Å#"#*`Ji}{n,6 Eq.;>ޗ0U xDRn4~wIPҵ#x~Z,v@ub5*jL/frU l $%CE"Љm 4KrC@GMJ%,ZO?^γPsR:/&]}.KthO_""F*[ˁTXBJ!i]\}1(<4@0=P{~-q?Cnp,>" s-]DD/{Σ/*Gpm8) Y߈?RRg0eA\&KY.G ̸ Ahk[j-G $w;׀ޞ՚a"B wqr"P [|%A؜ H'> ]x0:=;T[)q6\<լ&`7K;J*^GqSzv" )9ZΡ.FHE `nRt^tV ek({Jͣ#fȈ}#e&;`厶h#Q^3oQ#8= ٠-%W:]\(@/dsʻQҕb 褂 ,Աo PUrig2.)ӂAtM焿Qhca@i +p%@sŖH`?왵֬̂IFJ*]յ*b5jʋ`^%^֙ t1 F{ GX89dNu͘3]qP26!0%BW},GS-UOL"V bq0O' \JMGm?q)QsPi? sUU+t;nݗo{lXӏaWP 7p[ Q 5~lϻ<¤ T%:7{5!.K{mM! ŃFE޳$,ڤI.Iu}Ai-;[ IObW{֖)w׫_O`<-zM[#Nۥo0V^]jx݁,*SYtQ‘J%=]Gju/Z{SsBУ<!kD;|lCV}޾6v~$ގ(J8!H-hFO3ܤs.Jtẗ́ =k~o@wD%.pLb0] @'A +5.4H=O~ˣQQeuF-X888.0I{W` btD$Xy=IR`,]ap$ߝQ{w~yYgiTY䉌v#pHH0t]:*+]$@µM)b]1z{(i06 2c+,@ھ߬KBq{%JJe}u' /-9 ✱G𪾹Fq'HKmzd!^X#6#J[4$C|$^z(̸};N#Qk1:ׂ>#<=O,9 ϣe$KgOTS-" 6UP:踟R +YB?;j;0X.8tg:wWR7rgt0sq:.#/.=GD2/B`n0m1j$մ@^[4l!KJ;Pp긩+^ E `BBM+Zj`J &GbBFR՝uS/ ŗtV =.fGU&H dj[YUe=*$Jװr -;6_1s[$ nEC2r;j on!,$)-B|<vEW֠`,*cz+(xsRj痾M{E|ewvf \Ԥcu/|a c*%E5 z@EɛMV \x#Cfٿ}! Pe)Py]N*r:U"ϙbdžH{6և%T?v qQV|Cv}'aPKQR-SgО׼iḮ11>+ɋEϱwj@Ǧ y;fpcԚu>ֹ--Zn,ڪ\wadZs ALעcLH )ҷƖq:J>Zl{)}tWЗ"Gtܖ$LtgK%!]N<%;`x1QS.#Ǜbf^=J<|zPpX~?߯*enqw8hʁkE 98kb }CNC`:~eb)IP|G H-&`?%lag!|v7I\GO:UQ !b@&L!2%۰)UWo{/H.eCe SyaP{[B‰G_Ox# 0#DQpbX4 Cuo@\B!-> [2}Ս*GzWߛ09M5§ltJ=KFHhx0A[Z;+(P >R1X3lDB @6 %)sp>H:ljxʧ%^ gyAcuh`.1t4bS pgZbuNW̄dS&'>_',P!+GY7R}D~1y O {S٩  *~ t\c79퀙-/ sB?|f%a.J/܆C "+IvƝgM fJ']C]bS0ʱ֒yGPI)/9I蕜FK7dDѓ/ Wk!!mq9w \/@UNəeØFP3(G)TbԯYs4 *9wNCI{dE%| T^p[T@=C7=+R 朏,QQ֕pH0Nڝͬ2"|0~7W J, q{oS:WOD* }֐umi(6*~#Yv wEw7YhnP ڍLokE 8bf:_<~ŮA|9Wh_1 rC>D . `#ߒ̻bXo7ȼb+.F*)ZP"ly ?1 'xJ<v_";/:&Prc Kռ˔FJ4CWG1r6H5@ᣄ3~&޸cPK{b!X}qKY30Wl S)'.[ykrW!uxGըeQ/4。TkgB{Q++< en M 9, &it)4_#Q Z")d)GzQAe(WQK_tf.E5 D9Ea; F`h{w jiےןH4Z}zË]bkwurDl]WNh ot[ϚZ4>2Q)3׮ Yqrߩ QK6}/"" kk.YH =MU6X n%5B0MQ6_Ǩl-^%*JmKh/ Zo"JdM7`B_"\" H;ްѠLl&An8[-:vܻYS1Hf ]# e*M-&yw@ t[ev̏*0E NI DrZ?^ `6^ %v#CuVOƶ6ubTm] }_s`}P?kE\˭L^0褡gXw8ISš,{ܢzVN%&wp}Vjdp2Luޖ}I1E"wpluQ GP9*K6'ZD Yt\6X93C"gB6hk٨5!J a]x"WhBBHGE%|P"v՘~C'l 'X^/4WjQtGq6}!arfmۦ9RqqDcIRA7ĠI3$옎iz\i7D;8=d*iCb5oLc Eq7 N*C>4N:)I{yh8 z%UIy`&OqSW_h8 c88D@>N̉*rA.3xF 5DɌ'S] ,x4>%1K]UUg:^yͦG'gC9xHʺN3e&]Ȫd*z/X][i܎6=6IY4!hQZ2GJDdL ,gW`LA%#d捋Kg -N-p0C#1yx=zt]WZqwVYJ@~6 LzRP=ȓ3 rjn$ k̔]"5EcD5֑dqGC 94v?$1&f\8Y<>GHOjA ܯn$we]f}d4/BǽxC7LQx&ހ{$6)[9O0nc3 /b8NR5c^2a>e0z~EQT jmCsݝ?PWL9⸧nL"BG(fuɠ+ o6r;P3Q|f4p3Ռ z(tD^a5 g$Yj[T@4:gR֨3B4ZS%ڛLsoL,9A.eMC({*: ^(n(ЈX[Vxmӹh1&c xZkVj9 'ȼG3s$1j ;qV֌wL0_Y 7*}M*V8 sgTؾNE92,E c1Z~Dx4*:!~H+i5- +(@INq|+{ƾ_OR;zʽp3x(gDͲ腘 oZ;իLX[;uCpkk#Y'o`MB{8+7j.rzs+aM_s e ` kNԌT gW걡 #sj=&IҀRq02G(8Mf-<1z?.85 42\g2,2ck>FD{T)HB7LGh9C 0ϋDx,6A8ֵ`)ƱWFnh|cc=&04CL L892i%',4svIDyV7_Yi\yQz0j#,;|L*,,[ffe^~\jtᰊqf=j$4tEZPó؞]Q7ɓe[2,zf/w0ȄI۲}*rt9@jyoWC`N!i낎{>v)v@\jY@Ș%(*}p?5\(>aP2iUfرзaPñ`ǻX]Rg,kT= H 6U,.F2'ksU(N~B)¹ f\0t#<i ʞMw'dl$p4>Ӈ6 ` GUl@6?]S_Ͼ `W]Rb F+sk!x߁D˯\ nD5pgrO@q`byj㽽R,#2 %U4WV0o-D( 'Vv @W{W /v:G]$z'%~f#VKu?XHj /|r=E9j6O|1z߿~BYŜ*o^!$=Vm"l J|Djo\szq )t ،pM)%c?ÌD-Y8@M7:(8σa>O.<^&7%v2.@@"˰EWgSu0,JZZ nvIwkW#&,>ph粑h9j'sj ($L~̥:rZeqc#ԩ't(sUMMږe_IfD)}&(K)Ǖ9p*;3|KXn{RM~UR|ޥqXJg@RImͤ+qkJ 5-%] e*r-(QRnfjGQJi_e?IZ|X~< WtisĎe8ʵ?uӏ >;~~|dxٗE@cRU)T}ڪkTsQGY1)[jheBWJ9;%/7=/~*L:;";Ǒ%Xl> 0on?C{ ve¹ 'Q妾^Rwྦ_<gߎ!nt\2mQb4u5Ɇ ywDЉgĩV$d;G< /$G7`FXf$,YHJ? }]'sD} >V@7@jù;hNT&sm4`KE0H ~=|xUz=%k; gw tpT~j \1IV:>(ISvZjy@"~΍74k&\~ tqs5Y[(5B네tZfm^Gt|ZÀj[K?n9@itAulί@dnkԑ 5Arg2{,[}C } -(]& .b!u?,JBu)9?.ٟpa_d6:aw Jo/ $2ԍC<{6jqU#022RGW ~"G*£uwc>^ pFO_%_nLJf|DרVВy9d,XfӐG_#g9bL|E9Y㏮ع>=OU+ |RHLdu `h@jX1^28&uV@aS4L"QIvYs>ܢR =ȇ.Zrpib~]K OL7?zyk/٫6z!r Fd$eQK~?vQg>j%23¼7#Bc;_62b٘_fss;j=o ;m_LmAh\'aoD FIy7kqI1 Vi,x:l-^)s|R 56}`PpJvZ72xgo W]uwB c]"O[f}TWJqƚrҝcb{5je8 %NVg9,S) K'Z!63$svO2v$ikXV2U0 !5LDbDAr̴"dƾMG #ɂfIĜJFg$#׫BU+q!n~Fu*b)FJAg-?RrzcEF,b?McBJZ_lT$|fP 5,sYDPj$򒇚3{HSh1XF^=: -d {BG fZ ɢnFuX'~}E`=$5"O9qA-L= ؉xSI4}wڕ VZy3)7`NWf^Mb˶{+'1ۧYJg87Z M5q!TEUiܘ𱠈Ni+0výpH@Ӱ1ùiҘou0ZgtA.IYu94w0<͟d^Jvꍯ_p@MO,N(4%@HZף㩭38D?I0'fX ]GN +9~'Ol+Qx*}}VO I(4%@H]G_vݶY]M؆Xx}}*s;e[62N LMۆM0aGm@3ri +Y-NJEsR24]yJ^JwUQͲ]Nd; )dR(޷\CO!h!9P8U"ΪHGcuURvc1w}<5o5V~:ř;fHUcdᭈ9c*U`7a> (@z5Zt;2<C6B%$_^\ *,G߲fq~yB 73<D#&J!b#@#ͤc!'-&`Q'|Jp:YvrG[D59݂sc  {aDy)& ,lE2"  k' /m˸Dd]`L? L6+~;ڿ_~<#Ԉ6uZ{Ld'uvYUJ3<-ky5|v\ pǍ3lgkn 28f3Ӣ[v:Lz$?~8 qcƴFu}zC y]773 @a1U}яtvΑ)bf$s译.Mm[g{c%x˙R<-q%#v3~:ڮs( *{%ˀك0mw@F߿98[3!?VQwA?![PaBN@^wy4h@lo,x\g;KCJ GKzs lG%OTd3O@^VђbLݸ&0td EV$?͈YNt*}O*maT8tF(9Q>O606Q>q&DsN m30Vpɱ o"pA~n D.ZрƝ({,:3~B<&|0Z =)z8ӳ(܌^sGBs,s3VQH \R[Y$ro4ۓB&np٫iV IqpB]`l]Ծ.}3íQA(vY?r|'r(O$2 8q7~ /("c s3@]<>L TJ- 0ހQ\O NWFԨHur?<8WRE?-m?ϬaBA*f% b63]LA܎1t#ְ.;N+O"ZTU`ͧ$NT%* &$j@kXg-3#d V袆(âFQRwlm%0.a-T:x@%~/DR.B™KloK; VbgU;o~_]/KL$ <U*4  /}z5~_OBll$U=_&]m@}S ~Pr)?x@S@o۰&n+9ԧhRM'_6voxކБs$Dΐl~_}'y]ǯFأ#z9l=QF AhUQSݽ0N.`Ptv0YgwE3q%a 1qX$KP]\ *[œn+[:J|*glm| 'xĄVcV4 Ou$@ WyեIVi--SN&'xq7Ab<,C<"B!- 5h@- l|}{ķ[^P𣑃=yA/n^ ]|~!˘4"V0*dqH%i98OUf 5)I_9m&CzCR# }Kx?KW_!Exо0UM%UG* T0+G)->Fr^7U;[lj[1uHKA`-54*֕q oĜgc}5VJrK漂 t.⡋ɍ7#%`+BpvGyB " sBKHB = 2WhOwǡX{N_ND^v,ְKB/-^Y4gϱ[ gWj<|@0DMj.8u m$]&PCC7s)\Ԣ >jU/KDPSS;Φa♓"QgOkFrPF鯲Q:uǃfod }h-tx5)c+-:m+o_!{ּ.v $.| `z]U`Cq鹫LS"uzi %K:y>zݲ@(6h|-/ OVuHbs]/R4 yX&=NZ4jvNo$k7]ũU40ŒΫ/U~S _|Z [ '?]\9TO{| Xy,D-kV.F)LKNzjYvci*JiދqrYx7iv37:+P;޾o3>s7G^<,:>=OɌt)kLUszYQ= hM3oFcmBs)Cbi_:/>?2L{so'YG$m͋>^&.x 7JLp@"-b^'s{UC+?+s64u~;!pFt6=sS\,&+>[c7W] QE٭?j*6>NL@ݽrRxS܂&S[E\-\Tf-P ppw $hpM \Ԁx푹_Nk\JCҒU*yxVos8僝.‚ua$hfim,{f~3K()g|Prea1&һwY'gVFg4MmJ {( \2ض|!ѶyFvW"=DBm _zKJz{1v-{NP=!Oy&~6Tهۇrm;hX^%\9X} bŚC?w.wy õ>Xo!{Y_V3=l ہAY+7Y_aXsC`?PkְбB*ijg_ OEncQnyH e{JI.W+}}A?f}5|R:P+i0ŦujLD &-uTb؎pl\{?^B0q)W]n1 yw s}Ʈ^}R#"#' 9mU=)-1Ų-zjeW&DdTfȐRJvJkc\jiAYc"?f3u/-DxE2֫rIUuw-7׾/z|^)|9+Y~E-Ǽ+^s`9sU:f"dR Q}4ݻuBr:gpO {) 5:^:M~ xA%qHnDղe.vUKQ騆&ڥ  3ol+XKZ#iȍ\R !,}8[e>ћO`>?oI]v7-%1ȹ>JfP~X *i F6QsK< :Upxp͏Etb`Q]Pi V_(Q ծ Zma@?N6f~6V&nn uÅ{$ӛyZ Uf]f}X}1לX;d xmJT2y/q=:}%-pZªO|-;h|D({Z=C8ts;O }7@w*`{tIT2D!GWub3='8k۔̳5 ]>FC*NSq{aija2\/VW30]dp$p5Bđ`X 1M rx "p4ďIsjP̨uqT:C1b-0lQUN:mZurۃ=1oBݷ6x\ b`, /-ƩbtblUQ -}c<̒oG]uoHHِ޲MdP(M }ޡ°@"er,j,Z\Xaܾ2}/ݖ&&ӽۦ^Z$N)kՃ @YS{eA`UwOg5x+7ŖBog`&SSN5U}!H1O'j0yje> 4A81^|P1y Ԁ?(fPI+T!,4\[KSR3cRNb{{n.!y˔47HgytR>8xx@~$PACtxcg Z_B] hI:|F%֭EYۅ2g\qS*;qp*_<'^x h8fRWgzYnVtJA;'>3/;Jn@ra`tˠ!oذێ#>s]2m\)T"%J9ܟjUTV ԫӠfCA4@,T8^xHDHH4X!C^>BHD=FXx\O0Q$I%O2G^&mg'/ ^tB -EYToK$KM8`NXr)VzeUv9. o^3=*'`ԤPvR74e-M ijXS#FԘ~{ܓ縬Wzn̬_`7F|y9b膕SknGmr80-q=P@i~L_p@,2Z NF|gEbT&W(Ujpy@\f [@i( lXmv<4iܩKӇ:ja؈QM {JμcDlB*X 9?aIvYwE[. @9$hE%e JܥxTIgZ:dZ@zPb@ haZ#khjiuރGO u MPhS3s 'Id Fg0Ylbdbf O(cKhԄ46!Nva iލ{ksֺ6SN;; j]2׫ۡd?dJkJGQr/ʸC)85xQ /B '/^idZ:sqEdubi!\ ,Ү&q!-e;:& „2.lG$DPƅdʸaBRcR"L(BZvtL& -F?`@÷Ss 5[IKq= .Vk?zWX a|Qq;pH~VIєnԦFMHsRzE((DPP-Lo`Be_\YNQ;W\m)_nuv~v˨.%aBKgtfvL!@d)ttBZvts62pr;:&W]k\߾u8]}1f,2/<~Jbm\^}9y6ծzP"j ENi*rd:_VߋYLl0B#rYZd!MVpD Qs/eA^.HL44_n1zisa.}=g8B9&/9cF6W ~],% neBkn6JONڔĀ3&$M%SY淭5;5[K)ϜGckW)ݘ|Dqf['ib.>4ۘ.5 ;e%On>D!z'ntEg:ҹK^&}/r .8N4R7/(pQF!0k&k~3Fr` g0x cƂ[.YbTR1 IRtJSd_Qp_aG0z+ G@F@UްZЃLq3 >Bt 'JUe˽2GGnU4ʉ8s;u-(/wp4(TW>]Hj ȗ[׋Ƅ3a4h/&5i&Zg]~Mjd]hI{TtSt'G;(eLlgCYI=D#2$X A0mG1VH4 e7;7g;I*8Զ򯍀 w\ &O2_%< ɢ: N,͡sHɂ:'&\ӻ>M\z5j~HDШu$mpRb-j_1d;]¹ȭ3r'rOVԭ,B!: pp!Г,,,,,̅K&33M~ ̂J\1yXA }>d&OR*0LT-2\d+Eo6_hoGLzC2IZC plugins/limit-login-attempts-reloaded/assets/css/fonts/CoFoSans-Bold.eot000064400000370304147176754540022405 0ustar00 LP  CoFo SansBoldvVersion 1.001;PS 1.002;hotconv 16.6.54;makeotf.lib2.5.65590CoFo Sans Bold0BASE/;HPFFTM\GDEF$&+dGPOS$I ULGSUB,v+*OS/2bt!`cmap Hcvt Xdfpgm( gasp+\glyf^?$Xhead"x<6hheamt$hmtxlu 0locaE@ maxp  name&z 'postmAJHprep}woA _<ח%ח,]a,S(8wKkXKX^& COFO   (dM1L<F &<@:H +0 4+*y  *1W7/.UWUz1 K0KpK]K0K,KK>KKK /K /K,D  6B 44])D3(J= J w H"J= ;#= ==J=.J=J t=! H9 #  % .Pj221LC7! Pjm5)/8r&_"I-.v.$H4-D (8V)-#_'#7      0pKpKpKpK,,K,,K / / / / /R /DDDDKP=((((((H(   =  .J=.....H0H9H9H9H9% I=%  ( ( (0 0 0 0 KJ J pKpKpKpKpK0H"0H"0H"0H"KJI, , , ,  ,K =K;K#=>J =>K 8>K =>K=V"5 KJ=KJ=KJ=J=KJ= /. /. /.<rKt=Kt8Kt#,!,!,!,!   DH9DH9DH9DH9DH9DH9 # % 6.6.6./]KKH KeK =K KN=DH9H(]KKH H( /0,! % $+),(&&43}$( :L=vpKpK$.K0,,K,, 8K0KKK KK.K pK)KKK KK /KK0+  K2K3KKK)#K((<, ==T M=M="=? =G=.B=J= %  P="(9=O=p===)!7=! ; B J=J"=M=% @= p /.) 7K>. K,= K\=( ( KJ=/$ /.KJ=,! #  #  # pK% @ P^%++ 7/ /7//&&Y/0j"j'x"&5+0(("-4-&5+0((0>08$ iK6215+58A V B " B p S U p!X8<WUU>$>$>$>$>$>$>$>$>$>$>$>$]]3>$>$>$>$>$>$>$>$>$>$*$B5T`?(d2/,K, ;=  :6(H" H9H9#= J==]8,(88s7)$1L j"j'_"_'+%++@6@:B52@6*$B5PjPjz1/8+#*'$-&%"-4-&5+0(("-4-&5+0(( pKK /K)#K((M=.% ==)!&3h4  +{$?%}.*~7~37Y#_cuGc      " & 0 : D p y !!!"!.!T!^!!""""H"`"e$i$$&''0 0 927Y#brFb      & 0 9 D p t !!!"!.!S![!!""""H"`"d$`$$&''v00{uh[S;%"bAigY?93)!e/sleb^ (UA10F6Z V   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`aqdeivokuj20r34ghlzcn1.m{b7wU[ap]^_xb`\, UXEY KQKSZX4(Y`f UX%acc#b!!YC#DC`B-, `f-, d P&Z( CEcER[X!#!X PPX!@Y 8PX!8YY  CEcEad(PX! CEcE 0PX!0Y PX f a PX` PX! ` 6PX!6``YYY+YY#PXeYY-, E %ad CPX#B#B!!Y`-,#!#! dbB #B CEc C`Ec*! C +0%&QX`PaRYX#Y! @SX+!@Y#PXeY-,C+C`B-,#B# #Babfc`*-, E Ccb PX@`Yfc`D`-, CEB*!C`B- ,C#DC`B- , E +#C%` E#a d PX!0PX @YY#PXeY%#aDD`- , E +#C%` E#a d$PX@Y#PXeY%#aDD`- , #B EX!#!Y*!- ,EdaD-,` CJPX #BY CJRX #BY-, bfc c#aC` ` #B#-,KTXdDY$ e#x-,KQXKSXdDY!Y$e#x-,CUXCaB+YC%B %B %B# %PXC`%B #a*!#a #a*!C`%B%a*!Y CG CG`b PX@`Yfc Ccb PX@`Yfc`#DC>C`B-,ETX#B E #B #`B `aBB`+u+"Y-,+-,+-,+-,+-,+-,+-,+-,+-,+-, +-), .]-*, .q-+, .r-, +ETX#B E #B #`B `aBB`+u+"Y-,+- ,+-!,+-",+-#,+-$,+-%,+-&,+-',+-(, +-,, <`--, `` C#`C%a`,*!-.,-+-*-/, G Ccb PX@`Yfc`#a8# UX G Ccb PX@`Yfc`#a8!Y-0,ETX/*EX0Y"Y-1, +ETX/*EX0Y"Y-2, 5`-3,Ecb PX@`Yfc+ Ccb PX@`Yfc+D>#82*-4, < G Ccb PX@`Yfc`Ca8-5,.<-6, < G Ccb PX@`Yfc`CaCc8-7,% . G#B%IG#G#a Xb!Y#B6*-8,%%G#G#a C+e.# <8-9,%% .G#G#a #B C+ `PX @QX  &YBB# C #G#G#a#F`Cb PX@`Yfc` + a C`d#CadPXCaC`Y%b PX@`Yfca# &#Fa8#CF%CG#G#a` Cb PX@`Yfc`# +#C`+%a%b PX@`Yfc&a %`d#%`dPX!#!Y# &#Fa8Y-:, & .G#G#a#<8-;, #B F#G+#a8-<,%%G#G#aTX. <#!%%G#G#a %%G#G#a%%I%acc# Xb!Ycb PX@`Yfc`#.# <8#!Y-=, C .G#G#a ` `fb PX@`Yfc# <8->,# .F%FRX +-g,:+?+-h,:+@+-i,;+..+-j,;+>+-k,;+?+-l,;+@+-m,<+..+-n,<+>+-o,<+?+-p,<+@+-q,=+..+-r,=+>+-s,=+?+-t,=+@+-u, EX!#!YB+e$PxEX0Y-KRXYcpB-*B *B**B@ * B@@ *D$QX@XdD&QX@cTXDYYYY" *DdDvv>>vv>>2222\fb<d*vX  rL|  J x 8 R x f  R  F r $H`t$r8nv^J|Hx Tb8^*B~$p*6BN` R ^ j v !! !!$!0!&J&V&b&&&&&''r(((&(2(>(J(V(b(n(z(()))()4)@)L)X)*R*^*j*v******+|+++,",.,:,F,R,^,j,- --2->-J-V-b-t-------..*.Z......../,///////01J1V1b1t111111123Z3f3r33334 4N4Z4f4r4~4444445.5555555556666n6z666666666667 77"7.7:7F7R7^7p7|777778.8Z88899F9999:: :F:h:t:::;(;0;8;H;P;< >6>B>J>~>>>>>>>?????@"@T@@A AVABBBtBBC&C.ClCCDD.DdDDDDDDEEEEEFF2FfFFGGdGHHHHtHHHHI IIIJJJ(J:JxJKK\KKLL  0+!%!! '7d`222j:F%!L,@)Y"KY#L+7353_0ؕ<vDK1PX@Y"L@UYMY@+333J^v<<FK1PX@&  sb   a"L@/r  sb U Y MY@+7#537#53733733#3##7#37#\e r|   Zd qz Fyyyy5 ` !(/.@+-,&%  J]+L +?5.546753.'#5.54&'> 2(wsh[kp)&zr~n[m%0(-$3,+",a]]iYY eS)`[_f YXc %" #f '3K PX@%  d[*K [ #LKPX@+   c  d[*K [ #L@3   c  d"K[*K#K [ +LYY@')(/-(3)3#!''   +"&54632#32654&#""&54632'2654&#"NiiNQddVU"##""&&NiiNQddQ"##""&&-_dc^_b]f00.00.00g_db__b]fc/0.10/0/&,6~KPX@43# J@43# JYKPX@[*K[+L@[*K#K[+LY@1/+)*#+!'#"&5467.54632>77>54&#"3267'&/%_?|W9tg`lSEn!y :"~5,3+%$.TG<4#+/ geK\>#SicQKXpJ'=i%+ .#"')+5 +<v5K1PX@ Y"L@UYMY@ +3Jv<@-y 0+4>7.@#?W3MKcYTMhNxe'YBypHZN:-s0+'>54&'7s#?V3N%@.XTNg Lyg'Z!Wdp9uHZN]uJ@ JK1PX@ Y"L@UYMY@ +7'7'7'37' U2aa2U d T2``2T ]i?V**W?ii?W**V>hHAB; ,@)UaYM +%5#53533#|Axx ^ @GY#L +353'>=0NK *'HQ M% +VR@UYM+%!5!V+}0@Y#L+35304>@r'L+34!g+ -@*[*K[+L     +"&54632'2654&#"bJOOJIPP dqrccrqd  #@ J"KZ#L+73'733!9MĮ[s߇N*@'J[*KY#L%"+4&#"'>32!!5%>:84G bQ<E='2::a{xdTg6X.@ jK@HJpnY"K\+L +"&'732654&#"'7!5!32B EAEDGB/( -P;# g]-.1)/)l,F2kv | (@% Jb"K#L+!#5!533#%3(+TT팝f,*e6@3JcY"K[+L$%$#+!>32#"&'732654&#"'!6 M(w D=G9@D%;!jql}cW(+6.-3(g1r$;@8 Jc[*K[+L $$$%$"+%#"&54632.#">32"32654&rn @6KOX?w?@?B@>>k{X_%+[c%f//.10..18%@"JY"K#L+3!5!b:7}#/>@; Jc[*K[+L%$+)$/%/##*"+%#"&5467.54632%2654&#""32654&}:34-557=D==EECAFGEDGHBAcpja54&#"'>3253 '%""-,/7 sur<(#C'1" %*&YilVEHؕ1aQANK'PX@& AJ@& AJYK'PX@+c  c dW[OK-PX@2  pc  c dW[O@7  pc  c  WdW[OYY@MKGE(&#&$&(" +#".54>32#"&'#"&54>325332654.#"3267'54&#"326 x@Yh9=n\Vd7aQ5< B.Mb/@# 5u$)Ig>ErP-+NmA-`a*"-,#*e!4d_]h82\Q|* )l`1L4$OJ?cB#-QsEIoJ&+)4/15,  ,@) Jb"K#L +#'!#376ZX{K~ C@@Jc["K[#L   ! +3!2##32654&#32654&K32.#"zHL J{V02XzHKEPca|C6ow-WVYV+yl3DphgqK'@$["K[#L !+3!2#'32654&+Kfgl`alfffjbK8 /@,aY"KY#L +3!!!!!KHSK8 )@&aY"K#L +3!!!!KD0"l@ JKPX@a[*K[#L@#a[*K#K[+LY@""$%(#+#5#".54>32.#"3267#5{%gBFvT/3[~K} IAYddXH\_G&+-XVYV*kl,=pgho@*wK '@$a"K#L +33!3#!K% XK@"K#L+33KXX @"K\#L !#++53265XimkF402ok+1K -@*Ja"K#L +3333##KQQ K(@"KZ#L+%!3(#KN .@+ Jp"K#L +%#33#ζʓ?'LXaK @J"K#L+!##33ȓ;C>/-@*[*K[+L +".54>32'2654&#"K~Z33Z~KK~Z33Z~KZbbZZbb +WYWW,,WWYW+teerreetKu +@(c["K#L $!+3!2+32654&+K2qv<44<lvsng/03-/)r@JGK PX@h[*K\+L@p[*K\+LY@%#)) +".54>32'':7'3>54&#"K~Z33Z~KK~Z3?6>hJ8 e;bZZbb +WYWW,,WWa+QNdPV6errehuK 3@0Ja["K#L !+3!2#'#32654&+K0qB;}<44<lvNdh//3-,v''@$J[*K[+L+%+#+?32654&/.54632.#"#"&, N<>C%3xYs?D:>/6T[.0& ! Vc_liZ"8' ]Tck`x!@Y"K#L+5!##dD@"K\+L##+3#"&53326EQN@khHKK!@J"K#L+!33X  '@$ J"K#L +3# #3jɪɚX  &@# J"K#L +3373#' 踔^J#@ J"K#L+!533󱪩(B6w /@,JY"KY#L +35!5!!6t7oB>\#@ aY'L+!#3B|_|4>@r'L+#3؄4>O@aY'L+3#5!!4F|g)97!@Js"L+#'#vuo>@Y'L+!5!3~3#$-K)PX@ Y"L@UYMY+#3˘t}(+KPX@ J@ JYKPX@c[-K[+L@#c[-K#K[+LY@)'#%#5#+!5#"&54676254&#"'>32'&"3265\J-F`cT!=($ ) l]-N9!2(%+47 !LFME#!"CZ)F3(!=*!yKPX@ J@ JYKPX@"K[-K[+L@ "K[-K#K[+LY@(#+33>32#"&'732654&#"=H'+L8!!;Q/(D8/0770.9 ?^>@aA!+*6GA?G7.'@$J[-K[+L$'&#+%#"&54>32.#"326oq`n$@Z54N6 *+0851++Qa|>`@".?"/GBCH,  !yKPX@ J@ JYKPX@"K[-K[+L@ "K[-K#K[+LY@ (#+!5#".54>3253'54&#"326F1,N9!";R/(B4.3971243 !?_=@a@!XD.6G@?H;7@4Ja[-K[+L&'"+%!3267#"&54>32'"3.8.,+!6M3r&AX2ps$6 098)6)w?`@ q).+, n/@,["KY%K#L!#+3#53546;#"3#_RR_ZV=# wwm}]Bu!}"4 "/@" JKPX@ [%K[#K['LK1PX@$%K[-K[#K['L@!_%K[-K[#LYY@ $&(%%%+3#"&'7326=#".54>3254&#"326$A\6^z 5"1=I1,N9!!;R/-F8-1981-9(^? #9.3E>32#4&#"=J6La-+%9&XT(+')';,@)Y"K%K#L+533;-~~>3@0Y"K%K\'L +53+53265EWbF#($-~~C `Xz!%= 1@.Ja"K%K#L +33373#'#=8nx7=@"K#L+33=X=J"V JKPX@[%K#L@%K[-K#LY@""##$# +33>32>32#4&#"#4&#"=K6:IZ6K_,)#7,($7>)0%+*YT)(*,%)'*+%=LJKPX@[%K#L@%K[-K#LY@ ##+33>32#4&#"=N6Kb/)$:@ *XT(+')' -@*[-K[+L     +"&54632'2654&#"rrtt1::10;; wwwwvFDDDCEDF=>*!f@ JKPX@[%K[+K'L@ %K[-K[+K'LY@(#+3>32#"&'32654&#"=L1,K7 "@aA!*6GA?G8. >!yKPX@ J@ JYKPX@[-K[+K'L@ %K[-K[+K'LY@ (#+5#".54>325354&#"326~B2,N:!";Q/1D5-396134!?^=@aA!#3TD.6FA?H;=n '@$J[%K#L !#+33>;#"=E!%.1C<%~&'!''@$J[-K[+L+%+#+?32654&/.54632.#"#"&!-(*%+CHMu\Ur }))%%"?JWoi]r C?MQLD" BAHYO kb)@&rY%K\#L# +!#"&=#53533#;kUd\JJ!!CVh}xx}'9 ZKPXJJYKPX@%K\+L@%K#K\+LY@ ##+!5#"&5332653Q3L^-*(58&XTH*)."* !@J%K#L+333sqd  !@ J%K#L+333# # QXZRZ[OPL  &@# J%K#L +!'#'373pc[\U鎎 >"@ J%K\'L!"++5326?33i$[[C3"( ̠xhgH}L. /@,JY%KY#L +35%#5!!.|}{}>$3@0Jcc['L$#!,!%!+75326=46;#";#"&=4&#*2^NU6("*((*"(6UN^2*->ocQ|#.q-j>@Y'L+3j|g2>$-@*Jcc['L%!,!% +%#"+5326=467.=4&+532;)2^NU6("*((*"(6UN^2)->meO|"3k-2X,@)Wc\P#"#"+#".#"#>323267XTO740!zTP73/!Vq#Vq#LE@Y%KY'L+3#3#QtC0CH!C@  JK1PX@ "K#L@ Y#LY@ +!5.546753.'>7dwxcW_d)"$' h_)%$*] om ]\_H-,Ia\[3C  B7N%9@6JIa[*KY#L%%D+%#!!5>5<1#53.54632.#"3֛G1-tUqnv ,.-2 $@E)_E+_mbQ./'&?"!'#/B@? #J HGcW[O.,(&!-+7'7.5467'7>327'#"&'732654&#"xWp nWq32tWs rWr346..22..6'Wp44oWr sWs23qWq 034//44 }>@; Jb  a"K  # L +35#535#53333#3#f±h]_1_\ _1_]j>*@'aY'L+33j|||Ktt5>;3G-@*>1! J[*K['L%#%"+#"&'732654&/.5467.54632.#"'>54&/"&#}kmu 4(%2,4FQ[2*{gmr ,*%-0+NMV0)/0A !)- VaZP%* PQ3M<(T\[N"+ PK4L< )#(  * & )-x$@!Y"L+53353)G-}}}}8'C@ A@43JKPX@' c _["K[-L@,cc c W [OY@)(><861/(C)C''  +".54>32'2>54.#"7"&54>32.#"3267J^66^JJ^77^J32'&""3265 /$6@LW  "$2+.. *4<@y "8 U@ JKPX@ %K#LK#PX@ Y#L@UYMYY+3#'%3#'IA>K PX@gUYM@sUYMY+!#5!I}.-6( JKPX@1 p  c  _[*K [ %L@/ p  c  a  _[*LY@'/. 20.6/6 - -,+*)#! +%".54>32'2654&#"'532#'#7#32654&1U?$$>V11U?$$?U1MfeNNefz226V-"""$>V11V>$$>V11V>$2iNNiiNNiE&($PHH/ .=H@Y"L+!5!H=c$X *@'_[*L     +"&54632'2654&#"JccJKeeK**((XaLLaaLLae*))*H B ^K%PX@ aY%KY#L@aaY#LY@  +%5#53533#!!|£xx=|4z(@%JcY%L%"+4&#"'>323!57> #` VHHN1.>¢:<=8.5(VQl-|@ J IK PX@!hfa[%LKPX@#pna[%L@)pnaW\PYY@ +2654&#"'7#5!2#"&'7!!  p0d1@ZNFT a#?FPX>003!###1O66O1XxZ 8K*+K7 ~""8 3+)&2@ JK PX@hc\'LK PX@pc\'LKPX@!pcW\PKPX@pc\'L@!pcW\PYYYY@ +"&'732654&573<@U!$*Q#16I'( 3/'(+-3-{ )@&JrY%L +535'733SdX2n\U8GWU#d qKPX@[*K[%LK!PX@c[%L@cW[OYY@     +"&54632'2654&#"FZYGHYYH" !"""TNLRRLMUT*$%''%$*'= g@ JKPX@%K#LK#PX@Y#L@UYMYY@  +?'337'3'b#&' 3+t3+y&'t3+t3+7& ' 3+t3+:!=@:JpY%K\'L!!+#53267#"&7>?>=V'%""-+06 tur<'#ꕕC'1!%+&XjkVEH l&$u l&$ l&$ k&$ g&$ p&$ 3+B@?JaaY"KY #L +3!!!!!!'#3'\Z ~#0$4@,+JK PX@*hf`[*K[+LK PX@+pf`[*K[+L@,pn`[*K[+LYY@0.)' 44 +%267#"&'732654&57.54>32.#"zHL q16I=<@U!$#DoN+2XzHKEPca|C6eu (+-3'( 3'1WRYV+yl3DphgqK8l&(gK8l&(K8l&(bK8g&(bl&,KLl&,2Zl&,÷>g&,ȳ 7@4a["K[#L ! +3#53!2#'32654&+3#KCCghl`algvffjbvKk&1/l&2/l&2/l&2/k&2/g&2RK81  0+?'77'RVVVVVV/'6@3%$J[*K[+L'' +".54>32.#"2654&'K~Z33Z~KK~Z33Z~ 3ZeZd . +WYWW,,WWYW+_%@A uwe": Dl&8Dl&8Dl&8Dg&8l&<K 4@1cc"K#L   $!+3332+#32654&Kqu<44llqwl|,03*=2&=@:!Jc[*K[#L &&+!#532654&+532654&#"#4632QA<.37.9*%*-*14~ths)*9By{.(/(y+"%)61+lpdW-GPFai(&DC@(&Du(&D[2(&DaQ(&Dj;(&D_(+.5BKKPX@ .JKPX@ . JK-PX@  . J@  .  JYYYKPX@$  c [-K [+LKPX@) U   c [-K [+LK-PX@*  a  c [-K [+L@4  a  c [-K[+K [+LYYY@0/@>:632/505"$%#5$" +%#"&'#"&5467>54&#"'>32>32!3267'"3.&3265(jbBbeBKacT!='""+ l]32.#"3267<@U!$"`q$@Z54N6 *+0851++ WI16I'( 3' r>`@".?"/GBCH,"F\ !(+-3&HC2&Hu&H[-3+&Hj9&C=6&u%7&[+&j$0@!J$  HK PX@[%K[+LKPX@c[+LKPX@[%K[+L@c[+LYYY@&%,*%0&0+'7.'77#".54>32.'2654&#"? .%Ba@BB=\=4[A&"=T13(65465:8@^"/A?c;cH) =Z96X=! /RG89EE98G=&Qai&RC?&Ru&R[:&RaU&RjFH#BY ;@8aaUYM  +53!!53ȑK~ܐ 6@3J[-K[+L  +"&546327.#"2654&'qrt 2?q3?  wwww"GJE" 9 &XCK9 &Xu9 &X[E9 &XjQ >&\u=H(j@ JK1PX@ "K[-K[+K'L@ [-K[+KY"LY@&#+3>32#"&'32654&#"=K0Xt";'0;83&<`$|?`?!}&0DABG., >&\jC Y&$3+(&DpP k&$(&D]? 3o@J IK-PX@b"K#K['L@b_"K#LY@ +"&5467'!#332673y?W%66'0 /zZ45 4X %\(40=@$.JK1PX@(c[-K[+K['L@%c_[-K[+LY@;951+) 00 +"&54675#"&54676254&#"'>323267&"32656O%J-F`cT!=($ ) l]-N9!*  *c2(%+453"33 !LFME#!"CZ)F3 $\(!0l&&&Fu0l&&&F[.0e&&&F^0l&&&F\1Kl&'o &G A)KPX@  J@  JYKPX@&a"K[-K [ +L@*a"K[-K #K [+LY@(&" (# +!5#".54>325#53533#'54&#"326F1,N9!";R/)Crr447/0871244!!?_=@`@ _W11WD-7G@?H;K8V&(&HpOK8k&(&H]=K8e&(&H^K3Hx@ J IK-PX@(aY"KY#K['L@%a_Y"KY#LY@%& +3!!!!!3267#"&5467KHS!, .?W&  %\23 84,3@  ,JK1PX@(a[-K[+K['L@%a_[-K[+LY@.-10-3.3+"&'" +#"&5467#"&54>32!32673267"3. *6Or&AX2ot8.-+| $6 053/w?`@ q#98)4.).*-K8l&(j&H\,0l&*"4 &J[@0k&*"4 &J]Q0e&* "4 &J^0&*S 3+"4  -:@-JHKPX@) a[%K[#K['LK1PX@- a%K[-K[#K['L@* a_%K[-K[#LYY@9731+)!  +#54673#"&'7326=#".54>3254&#"326^^? #9.3E>32#4&#"=55ppM6La-+%9 W11Ws(XT(+')'8k&,$&a0V&,&p9k&,%&] 3G@ JK-PX@"K\'L@`"LY@ +"&546733267?V#!) .45 2X %\4^@ JK1PX@Y"K%K\'L@`Y"K%LY@ +5333267#"&546;+ )6N"-~~ #\53"/Ke&,'=@%K#L+33=Ks&,-;>&LMl&-%>8&Y[K&.S 3+=&NSJ(l&/0=1f&Ou 3+K(&/S 3+8&OSK(&/=&OK( 0@-a"KZ#L  +%!3753(#啍=*@'a"K#L+33753=GX}}"? ,@) J"KZ#L +%!5737?$AA #y#%LyL , &@# J"K#L +355737TKKKK,o+t,p,Kl&1 =&QuK&1S 3+=&QSKl&1=&Q\O=&Q3+KHO JK1PX@"K#K\'L@`"K#LY@ !#++53267#3jiG/($ʞ,okd!&Ei=>X JKPX@[%K#K['L@%K[-K#K['LY@ !%##+%4&#"#3>32+5326/)%9N6KbYW:"$!+')'@ *XT`Y{#/V&2&Rp\/k&2&R]F/l&2&RbT<' KPX"JKPX"J" JYYKPX@!a [*K[#LKPX@5a [*K Y"KY#K[+LKPX@3a [*KY"KY#K[+L@1a [*KY"KY#K[+LYYY@&$C(" +)#".54>32!!!!!%3267.#"fB$K\44\K#?!,*bZ,,Zb*WZXW+~eroR")5K!PX@"J@"JYKPX@#a [-K [+LK!PX@-a [-K [-K [+L@7a [-K [-K [+K[+LYY@+*$#1/*5+5'&#)$)"$$$$ +%#"&'#"&54632>32!3267'"3.2654&#"O!5M3:VY:rr@;0/JK PX@)hf`[*K[+LK PX@*pf`[*K[+L@+pn`[*K[+LYY@ $%$%+#+?32654&/.54632.#"#"&'732654&57., N<>C%3xYs?D:>/6T[yp16I=<@U!$"r.0& ! Vc_liZ"8' ]TXj (+-3'( 3'a!&>@<;0/JK PX@$hc[-K\'LK PX@%pc[-K\'LKPX@"pc`[-LKPX@%pc[-K\'L@"pc`[-LYYYY@ $%$%+#+?32654&/.54632.#"#"&'732654&57.!-(*%+CHMu\Ur }))%%"?JWVQ16I=<@U!$!N` C?MQLD" BA?U (+-3'( 3%M,vl&6!&V\ x&7S 3+ kb&WS[xl&7l 6@3paY%K\#L#! +3##"&=#53533#;%|=]dUd\JJ!!CȳVh}xx}'x/@,aY"K#L +5!#3##5#535d瀀vv kb9@6r  aY%K \#L +!#"&=#535#53533#3#;kUd\HHJJii""CVhTG{xx{GT(Dk&89 &XafDV&89 &XpeDk&89 &X]WD&89 &X_Dl&89,&XbaD0%\@ #JK#PX@p"K\'L@p`"LY@  %%+"&5467.533265333267?V!}~EQN@Z`!, .441 hHKKHks (\94%h@"#JK1PX@%K\+K['L@_%K\+LY@  %%+"&54675#"&533265332676O"Q3L^-*(5*  *53"34&XTH*)."* $] l&:0 &Z[l&< >&\[<g&<}6wl&=.&]u6we&=.&]^6wl&=.&]\3/7@4 Ja[*K[+L&%"+467!.#"'>32#"&267!/ YJAQz2WxFCEX ZJ$ PS?1myVW-0LKNIK,l&'<K&'=  &G=;K&/-JK>)&/MQ=>&OMKI&1-K>&1M=>$&QMLDl&89 &X\EV&(+&pK,&'=K&']  &G];l&(+&uJ/l&&u,v&6S 3+!&VSux&7S 3+ kb&WS[V&< >&\pZ> @%K\'L !#++53265WbF#($ `Xz!%$!@@=Ja[-K[+L!! +#"&5467!.#"'>267#us%@V0tuH5+(0 }$8O."3 1v?_@ p ;6%7)q(.+++#7JK)PX@ Y"L@UYMY+3#'#jz78zRR)#@JK)PX@ Y"L@UYMY@ +'373l}76|k#OO,m !@`"L   +"&'332673RKjjLP??P(-@Y"L+53(-~~&  1@.cW[O     +"&54632'2654&#"1<<10==0 <./==/.32#27:D#BOL#{m"+,(]vvZKm&|3+0 4@1Ja[K[L(%"#+.#"3#3267#".54>32 JHB]^CFIHzX20WzJ.CMJKLB.dz*UZXW+v,v6K,>p&,ȳ  3+X- %iKPX@ cYK[L@*cYK[K[LY@!%%!%$! +7>45!32#!#+5326%#32654&vqjl:",2m||<44(hsy8jyqlIHa(*20,K>@; caK\ L$! +33!332#!!#32654&Kvp$||<44 jyql<*20,7@4JcYKL##+5!#>32#54&#"#OO(v?B@ l|F9Kl&.Kl&o&{Kr MK PX@gKZL@sKZLY@ +##5#3!#X $Kt 6@3cYK[L   !+3!!32##32654&Kt~~q723Zqqd$++"K~%K@YKL+3!!K r3@0QYKYL +3>746<5!3#5!!# E )b1qB ^od厎9_' 籱CD뺰?\L  )z(D@A Jc[K[L$"!((+"'>32#"&'732654&+532654&YAE 89=D LEBE7=hj6-<,91ctd`6K JA]qoj19)*'#}%$%(K $@!JKL +!#33ƚ822XKo&K. !@YK[L!%+7>45!##+5326jl:",2(hsy8XIHa(KN0K+/2K!@YKL+3!#!KUXKu30&x7"@ JK\L!$+%+5326733)5H1O;",,>& m+a'2KPX@-f g d W [O@+r s d W [OY@(((2(2*)''! +5".54>35332+#2>54."{H{Z34Y|GH{X22X{H&D22C&D33DR$HoJJmF"NN#GlIJoH$R(?+,=%D&<,+?( ;Kr )@&RKZL +3#5!3!bޗ#2h)@& JdKL#"+32673#5#"&=3AM >O+vF:*X qK %@"KZL +333333KڗڗXKr%-@*RKZL +3333333#5Kڗڗa 6@3cYK[L   $!+5!32#!2654&+Mvq<44<jyqli*20,K[ 4@1cK\L   $! +332#)3%2654&+Kvqy <44<jyqlX*20,Ku *@'cK\L   $!+332#!%2654&+Kvp <44<jyql*20,)4@1Ja[K[L&%"#+?3267#53.#"'>32#"&) RHDV SE@XtGvT/2?MLMI<4no)UXoK&sKPX@!a[K [L@)aK[KK [LY@" &&  +".'##33>32'2654&#"BsW: oo :WsBJ~Y33Y~JYaaYZ`` "EjGEjE#,WWYW+seeqqees(p 2@/Ja[KL&+!#5##7.5463!";5p~@Hp><44<gUql+10,(D,(R@ JHKPX@[K[L@c[LY@#!(("+%#"&=4>7>7>322654&#"~pz'JnE1V" $Y/SSU1Xr0641.>:r?XzN(  GK"&rD<>B4*HA= C@@Jc[K[L   ! +332##32654&#32654&=W`(+'X]ST!aa#?B; 9+BK\a=@YKL+3!#=V}zJ+@(QYKYL+73>7>7!3#5!#35#4HԌ};()|Sr$7"IH6@3JaK L +!5##'3353373#'#?*oj++ko+巷(D@A&%Jc[K[L#! ((+%2654&+532654&#"'>32#"&'7./")NK%!((03 zbho(&(1{lku 3d_*%NWME#5 31IQ\R%,= @ JKL+3#33#ʍ,/=&TR 3+= -@*JaKL +33373#'#=9qv9궶 !@YK[L!'+7>45!##+5326lB\@%JMJm32/`R}"= '@$ JKL +333##=vs͇J^]=  '@$aKL +33353#5#=걱R=!@YKL+3!##=ȏm=>*SF!@YKL+5!##™m}}m >\> -:Q@N%J K [K [KL1.!!62.:1:!-!-)' !# +23*##5#.54>75"&#263>54&:3*#:bG''Gc;;bG'(Fc;8@A6CA<]??_>  >^??^<CDCBBCDC [=zF )@&RKZL +3#5!33Hm(/@,JdKL##+!5#"&=3326753V:$]_*+% UX+ = %@"KZL +!3333@mm=zE-@*RKZL +3#5!3333HmmQ 0@-cYK[L  $!+!32+##32654&oUa^Z^DD.$'UWY[l~|%"=<@9 cK\L  +!3!332#'#32654&iUa^Y#ED.$&UWY[|%"= 0@-cK\L    !+3332#'#32654&=oV`]Z)ED.$&UWY[|%"4@1Ja[K[L$%"#+?3267#53.#"'>32#"&6++23((5 }x^l|qeu$,0.f,.)(N[|x\=nKPX@!a[K [L@)aK[KK [LY@$" +333>32#"&'#%2654&#"=I}cssbI91::11:;\ewwh]lFDDDCEDF! 2@/ Ja[KL"+463!#5##7.735#")d]A`n15\\%#%CNYLn&HC3z#K@H!J a_K[ KL  ## +2+532654&#"##53533#>`*A-_r+2%'2%6IINBpUu_ziM,' W11Wp%=&uw4@1Ja[K[L$%"#+.#"3#3267#"&546323,*4 4(*2 ~takofsD".0.f+/)'M]{z_!V;L+ 7@4YKKL   +533533A-}}}}>M #'iKPX@ cYK[L@*cYK[K[LY@ #!' '!'$! +7>45!32+#+5326%#32654&lmUa^ZC[@$BB.$'JMJUWY[m32/`R}"O|%"=+>@; caK\ L$! +3335332+5#%#32654&=mVa^Z~CC.$'걱UWY[|%";@8 JaK[K L## +3#53533#>32#4&#"=IIM6La-+%9 W11Ws(XT(+')'=&u=&CY >&\TF 3+=z MK PX@gKZL@sKZLY@ +##5#33m >@;ra c\ L! +3#5353!!32##32654& t~q3/0PPg^plb#)*$N:@7 cKYK\L$! +3533#32+##32654&lZca]r\\%!"꾾sCDUTGw_/!>@;a[K[L!!  +".54>32"!.267!K~Z33Z~KK~Z33Z~KKb s aKL` a +WYWW,,WWYW+8RKKRLTLLT >@;a[K[L     +"&54632"3.267#rrtt*8 8*+8 9 wwww.00.0110!@J[KL!"+>;#"#3GO9"! #J;#& $!@J[KL!&+#37>;#"puL  0%0B-}K#/GK PX@fYKL@rYKLY@ +3!53!KH>eGK PX@fYKL@rYKLY@ +3353#>܎{ -@*aYKL +35#53!!3#KCCǢv;v  -@*aYKL +35#535!#3#=33Vnni}giKr6@3Ja]KL +33333#5##KQl-Q =z$6@3Ja]KL +333733#5#'#=9qRTv9궶Kr0@-a]KL +33!33#5#!K%bh =zR0@-a]KL +333533#5#5#=HK걱< >"#@ JKL+#53"˞vl7/@,JbKL+!5#53333#v߰svk(v >"+@( JKZKL+!##5#53333{~RvlPl~=K)@& JcKL#"+%4&#"#3>32#AN =N+vE; r=K/>$Z/KO&1d 3+=U&Qd,Ov&6d 3+!U&Vd l&:& &ZC l&: &Zu/ g&:- &ZjK8k&(~&HaFl&< >&\C@^-@UYM+!5!-1}+Q@UYM+%!5!1z+bQ@UYM+%!5!b7z7{ $@!HUYM +#5467˔NK +'IP M% /q @GY"L +53'>=?NK *'HQ M% /^ @GY#L +353'>=?NK *'HQ M% 7{ 3@0HUYM   +#5467##5467NK *'NK +'IP M% IP M% /q +@(GY"L   +53'>=353'>=?NK *'OK *'HQ M% HQ M% /^ +@(GY#L   +353'>=353'>=?NK *'OK *'HQ M% HQ M% & MK1PX@a"K#L@UaYMY@ +#53533# {{T&eK1PX@ a a"K  # L@% Ua a Y   MY@ +5#535#53533#3# |{{|/* @[-L  +7"&546323JJ34JJJ44JJ44J0&' '3?KK PX@+   d[*K  [#LKPX@1 c    d[*K  [#L@9 c    d"K[*K#K  [+LYY@7A@54)(GE@KAK;94?5?/-(3)3#!''   +"&54632#32654&#""&54632!"&54632%2654&#"!2654&#"NiiNQddVU"##""&&NiiNQddNiiNQddK"##""&&"##""&&-_dc^_b]f00.00.00g_db__b]f_db__b]fc/0.10/0//0.10/0/"C5JK!PX@ %K#L@UYMY+3#''HRJKPX@ %K#LK#PX@ Y#L@UYMYY@ +?'3'x[@"K#L++36RQ" QK)PX@c[%L@cW[OY@     +"&54632'2654&#"R__RS^^S && '']]]__]]]W*99,,99*& Z JKPX@rgUZN@rsUZNY@ +#5#5733#'35_eԣ((qGYNN5m@ JKPX@ac[%L@!acW[OY@ +"&'732654&#"'7!#>32GTa$ ! a+32'"32654&V[\QEOb#* -#GLTP$#! Vac].1/+7;:B0m*@'JsUYM+#5!P=Zc(#/ JK PX@cc[%LKPX@"ccW[OKPX@cc[%L@"ccW[OYYY@%$+)$/%/##*"+#"&5467.54632'2654&#""32654&\QWVPUVO#$$" ""$$""$$3<95) *1::1% +WI({$q@ JKPX@cc[%L@"ccW[OY@ $$ +"&'73267#"&54632'2654&#"DPa"%& -#DPVNR][R!!"!/0.,8:9CU_e^"  3+-{y 3+4z s 3+-|t 3+& 3+5 3++}  3+0m  3+(   3+({   3+0hJKPX@cY"K#LK!PX@!WaY"K#L@"caY"K#LYY@!# +3!!!>;#"##0A$'.?; "-'>U.J@GJI  a a[*KY#L.-*)('%% +%#!!5>7#53.'#53.54632.#"3#3ݡG#, nj R-qnv -.-2۲ ' )_  ^  _mbQ./' ^ ]1Q@N+*J Ia b[*K [ + L11/-"%%" +753<5<7#53>32.#"3#3#3267#"&';7>7#5!>54&#"'>323#3!3267D xq5Y?$7  j+++4 khz3~   4+,3Ld+C/ Z Y  !'%!S[_S Y  Z  %#'8R +@(aY"K#L  +!5!5!##R–I_턄k$gJ@G  ca  ["K#L  +#3##5#535#53!232654&#tqؑNNNNrl:1282eiie2v2enli23+-1 %"0+%#"&='>7546323>54&#"_[X#/gKKOrW""D+%||Sk  ^  ]YRH\/;&"T&%K  !% @ $" 0+"&54632##332654&#"!5!DUUEESSߪ%%kQQNRRNOSH>&#"%$##&hh 0+5!##5373#5#'2gdHF^EKFNZZ@å2$  0+%#".54>32!3267"!5."nI^74[JExX3%}OWLy%#t]m2]SN~X0.RsD7:BNE=6191&'u3+s3+5&'x3+s3++&' }3+s3+5&' n3+s3+8&'r3+s3+Ax&'H3+s3+V 0+!!VVXxVXB 0+!'3'LVmXVX" 0+!'7'7!"VXVmXB 0+!737YVXVXp[ 0+!!#_~z[y^S[  0+7!5!#SNz~byNcUo 0+73!5!U_yNb_dNxpo 0+7'3!Ny_}N_x!0+!5!kKR}}+X3}0+!!X%}~8y!-9 3.*$0+#"&'#".54>32>323267.#"%"32654&+A,;Q "*4,A**B/3T$P40B*'1 0"!-0% '>2!A##!2>A4!:(*8"4@ "-&''!(#)<gM/# 0+232673#".#"#>232673#".#"#>50,|PM31.|SQ50,{NN31.|SNhNiPgNiW4[ 0+?#537#5!733#3!|5Z<6y6S<5hywzkkzwyhU5{  0+%5%!!5  &h}U5{  0+%5%!!U J &h}$'2V@S-,+Jp c bW[O(((2(210/.*)''  +2#".54>"32>54.535'733Rd99dRRd99dRAoO,,OoAAoO,,Oop]0mc9dRRe99eRRd9J.QpBApQ//QpABpQ.X9GZX$'@S@P/.=J ccaW[O<;:931,*''  +2#".54>"32>54.4&#"'>323!57>Rd99dRRd99dRAoO,,OoAAoO,,Oo *` YNKT.4W%#9dRRe99eRRd9J.QpBApQ//QpABpQ."=9731,*''  +2#".54>"32>54.#"&'732654&#"'7#5!6Rd99dRRd99dRAoO,,OoAAoO,,Oou_WPZ a'+"''%! FwFC9dRRe99eRRd9J.QpBApQ//QpABpQ.}EPD:J\V_U@$'255,JKPX@3ph  c bW[O@4pp  c bW[OY@43210/.-+*)(''  +2#".54>"32>54.#5#5733#'35Rd99dRRd99dRAoO,,OoAAoO,,OoBk..9dRRe99eRRd9J.QpBApQ//QpABpQ.Y]UU$'Hf@c>9 8,+J  c a  c cW[O)(B@=<;:640.(H)H''  +2#".54>"32>54."&'732654&#"'7!#>32Rd99dRRd99dRAoO,,OoAAoO,,Oo?T\ c,$#%("# b,-9*\9dRRe99eRRd9J.QpBApQ//QpABpQ.D5 ZN !5&GR$'BNi@f218J  cc  c  cW[ODC)(JHCNDN<:64/-(B)B'' +2#".54>"32>54."&54632.#">32'"32654&Rd99dRRd99dRAoO,,OoAAoO,,Oo<]gf]ST e$&*06( <-_W#)'%!'$9dRRe99eRRd9J.QpBApQ//QpABpQ.lmtw?38; 2"BU$'.Q@N-J pcaW[O(((.(.,+*)''  +2#".54>"32>54.#5!Rd99dRRd99dRAoO,,OoAAoO,,OoU9dRRe99eRRd9J.QpBApQ//QpABpQ.Hcg$'?KWj@g:.J  c  c c  cW[OMLA@)(SQLWMWGE@KAK53(?)?'' +2#".54>"32>54.2#"&5467.546"32654&"32654&Rd99dRRd99dRAoO,,OoAAoO,,OoA\\!"%b]]d$#!_['+,&&**&)/,,++.9dRRe99eRRd9J.QpBApQ//QpABpQ.MD<#- 5";KJ<"5 /"9GU$'BNi@f821J  c   c ccW[ODC)(JHCNDN<:64/-(B)B'' +2#".54>"32>54.2#"&'73265#".5462654&#"Rd99dRRd99dRAoO,,OoAAoO,,OoE^ff\TT e%&*07'!<,^W"*'%!'$9dRRe99eRRd9J.QpBApQ//QpABpQ.Mlmtw?38; 2"BU$'3:NK!PX@ 8 76 J@ 8 76 JYK!PX@.  c   c cW[O@4  c   ca cW[OY@'<;)(FD;N"32>54.2#"&546#'732>54.#"Rd99dRRd99dQAnO,,OoAAoO,-Oo>GG>>GGnW$'OS      9dRRe99eRRd9J.QpBApQ//QpABpQ.Pg{|dd|{gEW:< 7..8 8..7 $'3?R@O cc  cW[O54)(;94?5?/-(3)3''  +2#".54>"32>54."&54632'2654&#"Rd99dRRd99dRAoO,,OoAAoO,,OoAVeeVWddW$,,$"..9dRRe99eRRd9J.QpBApQ//QpABpQ.pqottoqpX;NN==NN;$+jK1PX@c_[%L@$ccW[OY@! '% +!+  +2#".54>2654&#"7"&54632Rd99dRRd99dRWddWVeeV".."$,,9dRRe99eRRd9pqottoqpX;NN==NN;]$0+!%!!]fm%,]@ 0+7#!!3!!pqN@m-96 4r8}30+7#3pqNq6 4r$ 0+2#".54>!5##7#Rd99dRRd99d@8cm/^q9dRRe99eRRd9W]ZH:$," 0+2#".54>!5#7>54&#">32Rd99dRRd99d#%MW3-TKNY `* 9dRRe99eRRd9*vVW@'F2:KK<"$0- 0+2#".54>4&75!3>32#"&'326Rd99dRRd99d DFx҇ !&((#*)a [OWa9dRRe99eRRd933>W_VaG;EP$!  0+2#".54>535##3'7Rd99dRRd99d..9dRRe99eRRd9YU]Y$4" 0+2#".54>2654.#"735!>32#"&'Rd99dRRd99dTW\*9-b #"(%#$,c \9dRRe99eRRd9RG&5! NZ 5D$.: 4/( 0+2#".54>2654.#"46327.#"72#"&546Rd99dRRd99dWX_-< (60*&$e TS]fg^$%(!%(*9dRRe99eRRd9UB"2 ;83?wtml$ 0+2#".54>35!3Rd99dRRd99d't9dRRe99eRRd9Dgc$+7C @ =81, 0+2#".54>"32654&'>54&2#"&546"&54632Rd99dRRd99dR]]!##c]]a$"!Z^&,,&&-,',-0)(/,9dRRe99eRRd9G:!1 4#;KK;#4 /""3267#"&'32654&"&54632Rd99dRRd99dNX^,"32654&#7%".54632Rd99dRRd99d?GG??HHTI'   9dRRe99eRRd9g{|dd|{gE5HP 6+W44W+6 *>s0+#s‡34$>m0+3$‡43B>  0+!#3%3#BooEEk=kk5>  0+!53#5#3wooFFgkkk=`#*@'J[*KY#L&'+!53.'4>323!5>54&#"PE҂;H3[LM~X0K?GNaZTlfHwt#SIyW0.TwHYz*txHZkl? #@ GUYM +53'>7F?  @  0+3#%3#3+53265t}_t} U]Q$((aYz%* 0+533533_'^$ 0+# #X$6* ("0+74>32#"&32654&#"32654&+6$A\6fw779Akv{Y4:1*.><..9@6[6U8gS1NLDenqg6,%%08632.3.('0+%#"&546?>54&#"'>323267 ``qNTC'# '2 |t[_hWO@%*"-4NMNK=J EKSC@E " "4 J 0+!5##'333373#'#?*oj++ko+u4(%0+732654&+532654&#"'>32#"& 9).951[W.61))9 }^es666>od{*%1,+2t/((.*(TWhW6PK?am\9 X9 &XTO3+=N 0+# #nrpe=Q=JP8zS0+!5#"&53326533#5Q4K_-))4H8&XTH*)."*(0+#5#"&=3326=H*Q]#+%6]X!)(%8F"0+#5#"&'#"&53326533265FL6:IX6K`,)#7,($7>)0$**YTG'*,%*()+%*8z&0+3#5#5#"&'#"&53326533265FHGL6:IX6K`,)#7,($7>)0$**YTG'*,%*()+%*T 0+%#"&=#5!>3232654&#"TydkpB&#A10"),,("1\tr\~-DB'+00(,'%7 0+73>32#"&732654&#"7B&#A1xdkq0")--("1'-D.\trJ'+00(,'%$ *$0+%#".5467'.546;#"2654&#" n6[A$`I"#QH_9L3243358o ?>=X '%!"-+/7 sur;(#C'1" %*&YilVEH"nC:__3+'nH:``3+"n8:m``3+'n=:{``3++ VKK3++"KK3++"bKK3+@5n%!0+4>7.74>7.@#>W2H"?/aKHf#>W2H"?/aKI3U>"Nwd'UQctA{BUNNwd'UQctA{EU)gy65e'#0+'>54.'7'>54.'7e#>W2IJd/?#H3V=##>W2IJd/?#H3V=#Lxf'UAzAtcSU'exNLwf)UBzAtcSU'ex@y 0+4>7.@#?W3MKcYTMhONo\(ZBypHZO:t 0+'>54&'7t#?W3NKcYTN3W>#LOn]'ZBzoG[(_qB\0+!#3B`c||5O0+73#5!!5k|$0+5326=46;#";#"&=4&#*2^NU6("*((*"(6UN^2*->TcQ|$.V,2$0+#"+5326=467.=4&+532;)2^NU6("*((*"(6UN^2),>ReO|"2Q-@n%!0+4>7.74>7.@#>W2H"?/aKHf#>W2H"?/aKI3U>"TOn]'TKZmAzBVOOn]'TKZmAzDV)`p6e'#0+'>54.'7'>54.'7e#>W2IJd/?#H3V=##>W2IJd/?#H3V=#RLp_'V@zAmZLT'^oNLo_)VBzAmZLT'^o*s0+#s‡NO$m0+3$‡`NOB  0+!#3%3#BooEE`ckskk5  0+!53#5#3wooFFkkks0+3`c0+#3`cj0+3j|`cj0+33j|||rq1Q#ee3+8k3++  0+"&54632.#"2654&'b IXJW ! ^%<Jhjq'?q  0+"&54632'2654&#"EGFFGFGG dqrccrqdq  0+"&54632.#"2654&'E $FQGP  ^&?Hijq 6#s  0+73'733!I۵L֊sp*Z gs  0+!#5!533#%3$#OO댝f/'b$e-Y0+3!5!oMq,&f#/ )$0+%#"&5467.54632%2654&#""32654&f:34-556=D;;EE?=FGBAGH@?cpja=&u 3+&u=&u$3+!&u&-K1PX@ Y"L@UYMY+3#IG]l@UYM+3#zxl44l@UYM+#'`xll@UYM+3#%3#}|8l l @JUYM+3#'#x66lFFl'@$JUYM+'373v54wEE ek LKPX@fW\P@rW\PY@   +"&'332673QMhhJMAAM+nkX@ JGKPX@hc[O@pc[OY####+54632326=3#".#"+2+   Z,,#  6B   6C   $XV@UYM+!5!X4b?g*@'UYM+53353?Hyyyy%e@UYM+53%~~.O 1@.cW[O     +"&54632'2654&#"SS>  M??MM??MP####o AKPX@fW\P@rW\PY""+332673#"&{ &&}_cd`o#$#$TRR&J  @w; V<[ C      0 Y v : xd > { <G < Copyright (c) 2018 LLC Contrast Foundry (LLC CoFo). All rights reserved. Copyright (c) 2018 LLC Contrast Foundry (LLC CoFo). All rights reserved.CoFo SansCoFo SansBoldBold1.001;COFO;CoFoSans-Bold1.001;COFO;CoFoSans-BoldCoFo Sans BoldCoFo Sans BoldVersion 1.001;PS 1.002;hotconv 16.6.54;makeotf.lib2.5.65590Version 1.001;PS 1.002;hotconv 16.6.54;makeotf.lib2.5.65590CoFoSans-BoldCoFoSans-BoldCoFo Sans is a trademark of LLC Contrast Foundry (LLC CoFo).CoFo Sans is a trademark of LLC Contrast Foundry (LLC CoFo).LLC Contrast Foundry (LLC CoFo)LLC Contrast Foundry (LLC CoFo)Designer: Maria Doreuli. Team: Irina Smirnova, Elizaveta RasskazovaDesigner: Maria Doreuli. Team: Irina Smirnova, Elizaveta Rasskazovahttp://www.contrastfoundry.comhttp://www.contrastfoundry.comhttp://www.contrastfoundry.comhttp://www.contrastfoundry.com  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjikmlnoqprsutvwxzy{}|~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~uni0000uni00A0uni00B2uni00B3uni00B9AmacronamacronAbreveabreveAogonekaogonek Ccircumflex ccircumflex Cdotaccent cdotaccentDcarondcaronDcroatEmacronemacronEbreveebreve Edotaccent edotaccentEogonekeogonekEcaronecaron Gcircumflex gcircumflex Gdotaccent gdotaccent Gcommaaccent gcommaaccent Hcircumflex hcircumflexHbarhbarItildeitildeImacronimacronIbreveibreveIogonekiogonekIJij Jcircumflex jcircumflex Kcommaaccent kcommaaccentLacutelacute Lcommaaccent lcommaaccentLcaronlcaronLdotldotNacutenacute Ncommaaccent ncommaaccentNcaronncaron napostropheEngengOmacronomacronObreveobreve Ohungarumlaut ohungarumlautRacuteracute Rcommaaccent rcommaaccentRcaronrcaronSacutesacute Scircumflex scircumflexuni0162uni0163TcarontcaronTbartbarUtildeutildeUmacronumacronUbreveubreveUringuring Uhungarumlaut uhungarumlautUogonekuogonek Wcircumflex wcircumflex Ycircumflex ycircumflexZacutezacute Zdotaccent zdotaccentuni018Funi01C4uni01C5uni01C6uni01C7uni01C8uni01C9uni01CAuni01CBuni01CCuni01D3uni01D4uni01E2uni01E3uni01F1uni01F2uni01F3AEacuteaeacute Oslashacute oslashacute Scommaaccent scommaaccentuni021Auni021Buni0232uni0233uni0237uni0259 acutecomb dotbelowcmbuni0394Sigmauni03BCuni0400uni0401uni0402uni0403uni0404uni0405uni0406uni0407uni0408uni0409uni040Auni040Buni040Cuni040Duni040Euni040Funi0410uni0411uni0412uni0413uni0414uni0415uni0416uni0417uni0418uni0419uni041Auni041Buni041Cuni041Duni041Euni041Funi0420uni0421uni0422uni0423uni0424uni0425uni0426uni0427uni0428uni0429uni042Auni042Buni042Cuni042Duni042Euni042Funi0430uni0431uni0432uni0433uni0434uni0435uni0436uni0437uni0438uni0439uni043Auni043Buni043Cuni043Duni043Euni043Funi0440uni0441uni0442uni0443uni0444uni0445uni0446uni0447uni0448uni0449uni044Auni044Buni044Cuni044Duni044Euni044Funi0450uni0451uni0452uni0453uni0454uni0455uni0456uni0457uni0458uni0459uni045Auni045Buni045Cuni045Duni045Euni045Funi0462uni0463uni0472uni0473uni0474uni0475uni0490uni0491uni0492uni0493uni049Auni049Buni04A2uni04A3uni04AEuni04AFuni04B0uni04B1uni04BAuni04BBuni04D8uni04D9uni04E8uni04E9uni1E46uni1E47uni1E62uni1E63WgravewgraveWacutewacute Wdieresis wdieresisuni1EBCuni1EBDYgraveygraveuni2004uni2007uni2009uni200Auni200Buni2012uni2070uni2074uni2075uni2076uni2077uni2078uni2079uni2080uni2081uni2082uni2083uni2084uni2085uni2086uni2087uni2088uni2089liraEurouni20B4uni20B8uni20BDuni2113uni2116 estimateduni2153uni2154 oneeighth threeeighths fiveeighths seveneighths arrowleftarrowup arrowright arrowdownuni2196uni2197uni2198uni2199uni2206uni2460uni2461uni2462uni2463uni2464uni2465uni2466uni2467uni2468uni2469uni24EAuni24FFuni2610uni2611uni2713uni2776uni2777uni2778uni2779uni277Auni277Buni277Cuni277Duni277Euni277Funi3008uni3009uni301Auni301BuniA7B6uniF6C3uniF6D4uniF8FFCRI.altuni00CD00A40301 uni0407.alti.TRKuni00ED006A0301 uni0457.alt uni041B.BUL uni0432.BUL uni0433.BUL uni0434.BUL uni0436.BUL uni0437.BUL uni0438.BUL uni0439.BUL uni043A.BUL uni043B.BUL uni043F.BUL uni0442.BUL uni0446.BUL uni0447.BUL uni0448.BUL uni0449.BUL uni044A.BUL uni044C.BUL uni0431.SRBexclamdown.capquestiondown.capguilsinglleft.capguilsinglright.capguillemotleft.capguillemotright.cap hyphen.cap endash.cap emdash.cap dblparenleft dblparenright parenleft.capparenright.capbracketleft.capbracketright.cap braceleft.capbraceright.capdblparenleft.capdblparenright.cap uni3008.cap uni3009.cap uni301A.cap uni301B.cap slash.cap backslash.capbar.cap brokenbar.capat.capcopyright.pnum_lnum zero.zerozero.tnum_lnumzero.tnum_lnum_zero one.tnum_lnum two.tnum_lnumthree.tnum_lnumfour.tnum_lnumfive.tnum_lnum six.tnum_lnumseven.tnum_lnumeight.tnum_lnumnine.tnum_lnum zero.dnomone.dnomtwo.dnom three.dnom four.dnom five.dnomsix.dnom seven.dnom eight.dnom nine.dnom zero.numrone.numrtwo.numr three.numr four.numr five.numrsix.numr seven.numr eight.numr nine.numr uni04100301 uni04150301 uni04180301 uni041E0301 uni04230301 uni042B0301 uni042D0301 uni042E0301 uni042F0301 uni04300301 uni04350301 uni04380301 uni043E0301 uni04430301 uni044B0301 uni044D0301 uni044E0301 uni044F0301 caron.alt acute.cap grave.caphungarumlaut.capcircumflex.cap caron.cap breve.cap tilde.cap macron.cap dieresis.cap dotaccent.capring.capCyrbreve jkklnoop%&)*45=>CDLMWXXYZ[[\ bTDFLTcyrl6latn BGR .SRB N    .AZE .CRT .DEU .MOL LNLD lROM tTRK       aaltncaltvcase|ccmpcrcydligfraclnumloclloclloclloclloclloclsinfss01supstnum  BJRZbjrz "*2:BJhpx>@D$<<$V  L  D v     V  2  n0  P# $$$$%%"%@%^%|%%%%%%V{|W}~ZptuqSTUVY]o^_`abcdefghijklmn\wxrsV #,>?@CL^_`chjkmpu{!"[\]^abpNOPQTyz, /v gedff  gedffSTUV!"STUV!"6",-MX-[M,LL*]^_`abcdefghijklmn (2<FPZdnx"" (2<FPZdnx &0:DNXblv  &0:DNXblv $.8BLV`jt $.8BLV`jt",6@JT^h",6@JT^h *4>HR\ *4>HR\(2<FP(2<FP&0:D&0:D$.8$.8",",  $4styy  6Lstyy styy "8Ndstyy styy styy $:Pf|styy styy styy styy &<Rh~styy styy styy styy styy (>Tjstyy styy styy styy styy styy  *@Vlstyy styy styy styy styy styy styy " ,BXnstyy styy styy styy styy styy styy styy $ .DZpstyy styy styy styy styy styy styy styy styy  T'{|v}~ptuqwxrs' #>?@C^_`chjkmpu{[\]^abNOPQTyz  F yst   yst   yst     F         st yy  $   70t "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz= =|= =|= = |= =|== ==|=L =L|< <|< <|< < |< <|<< <<|<K <K|; ;|; ;|; ; |; ;|;; ;;|;J ;J|: :|: :|: :|: :|:: ::|:I :I|9 9|9 9|9 9|9 9|99 99|9H 9H|8 8|8 8|8 8|8 8|88 88|8G 8G|7 7|7 7|7t 7t|7 7|77 77|7F 7F|6 6|6 6|6s 6s|6 6|66 66|6E 6E|5 5|5 5|5y 5y|5 5 |55 55|5D 5D|o5 o5|oU oU|k& k&|kF kF| (!'A&l "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz "*2L@L~L@L~L @L ~L@L~L=@L=~LL@LL~K@K~K@K~K @K ~K@K~K<@K<~KK@KK~J@J~J@J~J @J ~J@J~J;@J;~JJ@JJ~I@I~I@I~I@I~I@I~I:@I:~II@II~H@H~H@H~H@H~H@H~H9@H9~HH@HH~G@G~G@G~G@G~G@G~G8@G8~GG@GG~F@F~F@F~Ft@Ft~F@F~F7@F7~FF@FF~E@E~E@E~Es@Es~E@E~E6@E6~EE@EE~D@D~D@D~Dy@Dy~D @D ~D5@D5~DD@DD~)t "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz= =|= =|= = |= =|== ==|=L =L|< <|< <|< < |< <|<< <<|<K <K|; ;|; ;|; ; |; ;|;; ;;|;J ;J|: :|: :|: :|: :|:: ::|:I :I|9 9|9 9|9 9|9 9|99 99|9H 9H|8 8|8 8|8 8|8 8|88 88|8G 8G|7 7|7 7|7t 7t|7 7|77 77|7F 7F|6 6|6 6|6s 6s|6 6|66 66|6E 6E|5 5|5 5|5y 5y|5 5 |55 55|5D 5D|o5 o5|oU oU|k& k&|kF kF|l "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz "*2L@L~L@L~L @L ~L@L~L=@L=~LL@LL~K@K~K@K~K @K ~K@K~K<@K<~KK@KK~J@J~J@J~J @J ~J@J~J;@J;~JJ@JJ~I@I~I@I~I@I~I@I~I:@I:~II@II~H@H~H@H~H@H~H@H~H9@H9~HH@HH~G@G~G@G~G@G~G@G~G8@G8~GG@GG~F@F~F@F~Ft@Ft~F@F~F7@F7~FF@FF~E@E~E@E~Es@Es~E@E~E6@E6~EE@EE~D@D~D@D~Dy@Dy~D @D ~D5@D5~DD@DD~ >A{}*4>HR\fpzccccccccccccccccccy~,O,O\\pppppYpY+, yst      WY\,, pp   xDFLTcyrl"latn<BGR SRB (AZE (CRT (DEU (MOL (ROM (TRK (cpspkernv~     !#%')+-/13578:<>?BEHJLOQSUWijklmnopqrstuvwxyz{|}~X]  @(.DZ Bd(NtH^d^"0:Dfx2HHHHH  ( 6 P V \ P P  >   B H b l v  P B   T j p z V B B  6 V 99;Y[Y`   }CJI" 9;|~ 9?Y|d||~ "9?| |~9|~ "9d} 9|~ 9;|~ |9;[ 9;?|~ [| " ;[|~(/D4$.& =& #[w#0F1/1  | -(:0"+  #9IYw% | !9?MY ("++C2(+/  " #I  #?Y99;9IY9Y[EKNOD/2/2YIIMYP$Q$S$U$WOYBZB$$$$$ $$$$4B=8G$$BBBIOMYP$Q$S$U$WO$7$$$$ $$$$ N=GG$$HFGHJRTX(/D4$.&  (*,.02=AINR "q}|~q| q}|~|~ "mm?f|~lllm " q}_fo|~ q}|~n^_`jo|m bf #?^_`jo"   C"6?"@` /2m}ppp,p"8"L$$$$$$$$$$/[$9Y,IY\bf^bf^`j99q}{  9}x9; "#%)379:;<=>?IY[\^cdegw!#%35678:<?LUWXklnqrstuyz|}W\]^_fghoq{Z|`u   552`, $$  v  x z w !        9  C,E {2 }    %gcg#@&"!bb ABHCDKKEFGKKHHIJLMNOP QRS^TUVWXY^ZZ[R\]_>`?a eAAAAAACBCCCCKKKKHKHHHHHHMMMMOQQQQQQTSTTTTWWWWZ[[[[[[aRaAQAQAQBSBSBSBSH^H^CTCTCTCTCTDUDUDUDUKVKVKWKWKWKWKEXEXFYG^G^G^G^KZKZKZVKZH[H[H[CTI\I\I\J]J]J]J]L_L_L_MMMMMMN`OaOPPPHPEXXEXXMCTPCTH[J]L_OaX[ll'mk(rr)*+nrsrj,umqlnurrnrrror-kms./qrrqprpoorv0~yzz{{x{6~~||{{yy7x8||wz9:o{;m<mnzq~tt=wo{o{KZJ]N`N`N`CTOacchihi geErWXj23z4z5ww~~}}1ffddd$ jlrosroorvy{{{QP*G*:5DKTWVH9>=RJ<O34%7L  F r&   @ASMsI rrrr          rrrr r&               %%%     & 'h\ (ZX-'' (]Y[ -/+mttU"0,ttt!tt"tt"#$"jt`tt#tt,t1""t"fqgp!ttt$tck'"d.tttt).).e'"   s?Nr^n_0o22ltt2a22#bi;CBE86'(-/+"t"$t,t1;   "?DS2UWBY^EccKmmLstMwwOyyP{{QRjq'))++--//113HJZ irt'TUV]_bhmns W[]beiloqx{{}}ideoromnDFLTlatn$ ` `դ'ח%חplugins/limit-login-attempts-reloaded/assets/css/fonts/CoFoSans-Bold.ttf000064400000367664147176754540022432 0ustar000BASE/;HPFFTM\GDEF$&+dGPOS$I ULGSUB,v+*OS/2bt!`cmap Hcvt Xdfpgm( gasp+\glyf^?$Xhead"x<6hheamt$hmtxlu 0locaE@ maxp  name&z 'postmAJHprep}woA _<ח%ח,]a,S(8wKkXKX^& COFO   (dM1L<F &<@:H +0 4+*y  *1W7/.UWUz1 K0KpK]K0K,KK>KKK /K /K,D  6B 44])D3(J= J w H"J= ;#= ==J=.J=J t=! H9 #  % .Pj221LC7! Pjm5)/8r&_"I-.v.$H4-D (8V)-#_'#7      0pKpKpKpK,,K,,K / / / / /R /DDDDKP=((((((H(   =  .J=.....H0H9H9H9H9% I=%  ( ( (0 0 0 0 KJ J pKpKpKpKpK0H"0H"0H"0H"KJI, , , ,  ,K =K;K#=>J =>K 8>K =>K=V"5 KJ=KJ=KJ=J=KJ= /. /. /.<rKt=Kt8Kt#,!,!,!,!   DH9DH9DH9DH9DH9DH9 # % 6.6.6./]KKH KeK =K KN=DH9H(]KKH H( /0,! % $+),(&&43}$( :L=vpKpK$.K0,,K,, 8K0KKK KK.K pK)KKK KK /KK0+  K2K3KKK)#K((<, ==T M=M="=? =G=.B=J= %  P="(9=O=p===)!7=! ; B J=J"=M=% @= p /.) 7K>. K,= K\=( ( KJ=/$ /.KJ=,! #  #  # pK% @ P^%++ 7/ /7//&&Y/0j"j'x"&5+0(("-4-&5+0((0>08$ iK6215+58A V B " B p S U p!X8<WUU>$>$>$>$>$>$>$>$>$>$>$>$]]3>$>$>$>$>$>$>$>$>$>$*$B5T`?(d2/,K, ;=  :6(H" H9H9#= J==]8,(88s7)$1L j"j'_"_'+%++@6@:B52@6*$B5PjPjz1/8+#*'$-&%"-4-&5+0(("-4-&5+0(( pKK /K)#K((M=.% ==)!&3h4  +{$?%}.*~7~37Y#_cuGc      " & 0 : D p y !!!"!.!T!^!!""""H"`"e$i$$&''0 0 927Y#brFb      & 0 9 D p t !!!"!.!S![!!""""H"`"d$`$$&''v00{uh[S;%"bAigY?93)!e/sleb^ (UA10F6Z V   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`aqdeivokuj20r34ghlzcn1.m{b7wU[ap]^_xb`\, UXEY KQKSZX4(Y`f UX%acc#b!!YC#DC`B-, `f-, d P&Z( CEcER[X!#!X PPX!@Y 8PX!8YY  CEcEad(PX! CEcE 0PX!0Y PX f a PX` PX! ` 6PX!6``YYY+YY#PXeYY-, E %ad CPX#B#B!!Y`-,#!#! dbB #B CEc C`Ec*! C +0%&QX`PaRYX#Y! @SX+!@Y#PXeY-,C+C`B-,#B# #Babfc`*-, E Ccb PX@`Yfc`D`-, CEB*!C`B- ,C#DC`B- , E +#C%` E#a d PX!0PX @YY#PXeY%#aDD`- , E +#C%` E#a d$PX@Y#PXeY%#aDD`- , #B EX!#!Y*!- ,EdaD-,` CJPX #BY CJRX #BY-, bfc c#aC` ` #B#-,KTXdDY$ e#x-,KQXKSXdDY!Y$e#x-,CUXCaB+YC%B %B %B# %PXC`%B #a*!#a #a*!C`%B%a*!Y CG CG`b PX@`Yfc Ccb PX@`Yfc`#DC>C`B-,ETX#B E #B #`B `aBB`+u+"Y-,+-,+-,+-,+-,+-,+-,+-,+-,+-, +-), .]-*, .q-+, .r-, +ETX#B E #B #`B `aBB`+u+"Y-,+- ,+-!,+-",+-#,+-$,+-%,+-&,+-',+-(, +-,, <`--, `` C#`C%a`,*!-.,-+-*-/, G Ccb PX@`Yfc`#a8# UX G Ccb PX@`Yfc`#a8!Y-0,ETX/*EX0Y"Y-1, +ETX/*EX0Y"Y-2, 5`-3,Ecb PX@`Yfc+ Ccb PX@`Yfc+D>#82*-4, < G Ccb PX@`Yfc`Ca8-5,.<-6, < G Ccb PX@`Yfc`CaCc8-7,% . G#B%IG#G#a Xb!Y#B6*-8,%%G#G#a C+e.# <8-9,%% .G#G#a #B C+ `PX @QX  &YBB# C #G#G#a#F`Cb PX@`Yfc` + a C`d#CadPXCaC`Y%b PX@`Yfca# &#Fa8#CF%CG#G#a` Cb PX@`Yfc`# +#C`+%a%b PX@`Yfc&a %`d#%`dPX!#!Y# &#Fa8Y-:, & .G#G#a#<8-;, #B F#G+#a8-<,%%G#G#aTX. <#!%%G#G#a %%G#G#a%%I%acc# Xb!Ycb PX@`Yfc`#.# <8#!Y-=, C .G#G#a ` `fb PX@`Yfc# <8->,# .F%FRX +-g,:+?+-h,:+@+-i,;+..+-j,;+>+-k,;+?+-l,;+@+-m,<+..+-n,<+>+-o,<+?+-p,<+@+-q,=+..+-r,=+>+-s,=+?+-t,=+@+-u, EX!#!YB+e$PxEX0Y-KRXYcpB-*B *B**B@ * B@@ *D$QX@XdD&QX@cTXDYYYY" *DdDvv>>vv>>2222\fb<d*vX  rL|  J x 8 R x f  R  F r $H`t$r8nv^J|Hx Tb8^*B~$p*6BN` R ^ j v !! !!$!0!&J&V&b&&&&&''r(((&(2(>(J(V(b(n(z(()))()4)@)L)X)*R*^*j*v******+|+++,",.,:,F,R,^,j,- --2->-J-V-b-t-------..*.Z......../,///////01J1V1b1t111111123Z3f3r33334 4N4Z4f4r4~4444445.5555555556666n6z666666666667 77"7.7:7F7R7^7p7|777778.8Z88899F9999:: :F:h:t:::;(;0;8;H;P;< >6>B>J>~>>>>>>>?????@"@T@@A AVABBBtBBC&C.ClCCDD.DdDDDDDDEEEEEFF2FfFFGGdGHHHHtHHHHI IIIJJJ(J:JxJKK\KKLL  0+!%!! '7d`222j:F%!L,@)Y"KY#L+7353_0ؕ<vDK1PX@Y"L@UYMY@+333J^v<<FK1PX@&  sb   a"L@/r  sb U Y MY@+7#537#53733733#3##7#37#\e r|   Zd qz Fyyyy5 ` !(/.@+-,&%  J]+L +?5.546753.'#5.54&'> 2(wsh[kp)&zr~n[m%0(-$3,+",a]]iYY eS)`[_f YXc %" #f '3K PX@%  d[*K [ #LKPX@+   c  d[*K [ #L@3   c  d"K[*K#K [ +LYY@')(/-(3)3#!''   +"&54632#32654&#""&54632'2654&#"NiiNQddVU"##""&&NiiNQddQ"##""&&-_dc^_b]f00.00.00g_db__b]fc/0.10/0/&,6~KPX@43# J@43# JYKPX@[*K[+L@[*K#K[+LY@1/+)*#+!'#"&5467.54632>77>54&#"3267'&/%_?|W9tg`lSEn!y :"~5,3+%$.TG<4#+/ geK\>#SicQKXpJ'=i%+ .#"')+5 +<v5K1PX@ Y"L@UYMY@ +3Jv<@-y 0+4>7.@#?W3MKcYTMhNxe'YBypHZN:-s0+'>54&'7s#?V3N%@.XTNg Lyg'Z!Wdp9uHZN]uJ@ JK1PX@ Y"L@UYMY@ +7'7'7'37' U2aa2U d T2``2T ]i?V**W?ii?W**V>hHAB; ,@)UaYM +%5#53533#|Axx ^ @GY#L +353'>=0NK *'HQ M% +VR@UYM+%!5!V+}0@Y#L+35304>@r'L+34!g+ -@*[*K[+L     +"&54632'2654&#"bJOOJIPP dqrccrqd  #@ J"KZ#L+73'733!9MĮ[s߇N*@'J[*KY#L%"+4&#"'>32!!5%>:84G bQ<E='2::a{xdTg6X.@ jK@HJpnY"K\+L +"&'732654&#"'7!5!32B EAEDGB/( -P;# g]-.1)/)l,F2kv | (@% Jb"K#L+!#5!533#%3(+TT팝f,*e6@3JcY"K[+L$%$#+!>32#"&'732654&#"'!6 M(w D=G9@D%;!jql}cW(+6.-3(g1r$;@8 Jc[*K[+L $$$%$"+%#"&54632.#">32"32654&rn @6KOX?w?@?B@>>k{X_%+[c%f//.10..18%@"JY"K#L+3!5!b:7}#/>@; Jc[*K[+L%$+)$/%/##*"+%#"&5467.54632%2654&#""32654&}:34-557=D==EECAFGEDGHBAcpja54&#"'>3253 '%""-,/7 sur<(#C'1" %*&YilVEHؕ1aQANK'PX@& AJ@& AJYK'PX@+c  c dW[OK-PX@2  pc  c dW[O@7  pc  c  WdW[OYY@MKGE(&#&$&(" +#".54>32#"&'#"&54>325332654.#"3267'54&#"326 x@Yh9=n\Vd7aQ5< B.Mb/@# 5u$)Ig>ErP-+NmA-`a*"-,#*e!4d_]h82\Q|* )l`1L4$OJ?cB#-QsEIoJ&+)4/15,  ,@) Jb"K#L +#'!#376ZX{K~ C@@Jc["K[#L   ! +3!2##32654&#32654&K32.#"zHL J{V02XzHKEPca|C6ow-WVYV+yl3DphgqK'@$["K[#L !+3!2#'32654&+Kfgl`alfffjbK8 /@,aY"KY#L +3!!!!!KHSK8 )@&aY"K#L +3!!!!KD0"l@ JKPX@a[*K[#L@#a[*K#K[+LY@""$%(#+#5#".54>32.#"3267#5{%gBFvT/3[~K} IAYddXH\_G&+-XVYV*kl,=pgho@*wK '@$a"K#L +33!3#!K% XK@"K#L+33KXX @"K\#L !#++53265XimkF402ok+1K -@*Ja"K#L +3333##KQQ K(@"KZ#L+%!3(#KN .@+ Jp"K#L +%#33#ζʓ?'LXaK @J"K#L+!##33ȓ;C>/-@*[*K[+L +".54>32'2654&#"K~Z33Z~KK~Z33Z~KZbbZZbb +WYWW,,WWYW+teerreetKu +@(c["K#L $!+3!2+32654&+K2qv<44<lvsng/03-/)r@JGK PX@h[*K\+L@p[*K\+LY@%#)) +".54>32'':7'3>54&#"K~Z33Z~KK~Z3?6>hJ8 e;bZZbb +WYWW,,WWa+QNdPV6errehuK 3@0Ja["K#L !+3!2#'#32654&+K0qB;}<44<lvNdh//3-,v''@$J[*K[+L+%+#+?32654&/.54632.#"#"&, N<>C%3xYs?D:>/6T[.0& ! Vc_liZ"8' ]Tck`x!@Y"K#L+5!##dD@"K\+L##+3#"&53326EQN@khHKK!@J"K#L+!33X  '@$ J"K#L +3# #3jɪɚX  &@# J"K#L +3373#' 踔^J#@ J"K#L+!533󱪩(B6w /@,JY"KY#L +35!5!!6t7oB>\#@ aY'L+!#3B|_|4>@r'L+#3؄4>O@aY'L+3#5!!4F|g)97!@Js"L+#'#vuo>@Y'L+!5!3~3#$-K)PX@ Y"L@UYMY+#3˘t}(+KPX@ J@ JYKPX@c[-K[+L@#c[-K#K[+LY@)'#%#5#+!5#"&54676254&#"'>32'&"3265\J-F`cT!=($ ) l]-N9!2(%+47 !LFME#!"CZ)F3(!=*!yKPX@ J@ JYKPX@"K[-K[+L@ "K[-K#K[+LY@(#+33>32#"&'732654&#"=H'+L8!!;Q/(D8/0770.9 ?^>@aA!+*6GA?G7.'@$J[-K[+L$'&#+%#"&54>32.#"326oq`n$@Z54N6 *+0851++Qa|>`@".?"/GBCH,  !yKPX@ J@ JYKPX@"K[-K[+L@ "K[-K#K[+LY@ (#+!5#".54>3253'54&#"326F1,N9!";R/(B4.3971243 !?_=@a@!XD.6G@?H;7@4Ja[-K[+L&'"+%!3267#"&54>32'"3.8.,+!6M3r&AX2ps$6 098)6)w?`@ q).+, n/@,["KY%K#L!#+3#53546;#"3#_RR_ZV=# wwm}]Bu!}"4 "/@" JKPX@ [%K[#K['LK1PX@$%K[-K[#K['L@!_%K[-K[#LYY@ $&(%%%+3#"&'7326=#".54>3254&#"326$A\6^z 5"1=I1,N9!!;R/-F8-1981-9(^? #9.3E>32#4&#"=J6La-+%9&XT(+')';,@)Y"K%K#L+533;-~~>3@0Y"K%K\'L +53+53265EWbF#($-~~C `Xz!%= 1@.Ja"K%K#L +33373#'#=8nx7=@"K#L+33=X=J"V JKPX@[%K#L@%K[-K#LY@""##$# +33>32>32#4&#"#4&#"=K6:IZ6K_,)#7,($7>)0%+*YT)(*,%)'*+%=LJKPX@[%K#L@%K[-K#LY@ ##+33>32#4&#"=N6Kb/)$:@ *XT(+')' -@*[-K[+L     +"&54632'2654&#"rrtt1::10;; wwwwvFDDDCEDF=>*!f@ JKPX@[%K[+K'L@ %K[-K[+K'LY@(#+3>32#"&'32654&#"=L1,K7 "@aA!*6GA?G8. >!yKPX@ J@ JYKPX@[-K[+K'L@ %K[-K[+K'LY@ (#+5#".54>325354&#"326~B2,N:!";Q/1D5-396134!?^=@aA!#3TD.6FA?H;=n '@$J[%K#L !#+33>;#"=E!%.1C<%~&'!''@$J[-K[+L+%+#+?32654&/.54632.#"#"&!-(*%+CHMu\Ur }))%%"?JWoi]r C?MQLD" BAHYO kb)@&rY%K\#L# +!#"&=#53533#;kUd\JJ!!CVh}xx}'9 ZKPXJJYKPX@%K\+L@%K#K\+LY@ ##+!5#"&5332653Q3L^-*(58&XTH*)."* !@J%K#L+333sqd  !@ J%K#L+333# # QXZRZ[OPL  &@# J%K#L +!'#'373pc[\U鎎 >"@ J%K\'L!"++5326?33i$[[C3"( ̠xhgH}L. /@,JY%KY#L +35%#5!!.|}{}>$3@0Jcc['L$#!,!%!+75326=46;#";#"&=4&#*2^NU6("*((*"(6UN^2*->ocQ|#.q-j>@Y'L+3j|g2>$-@*Jcc['L%!,!% +%#"+5326=467.=4&+532;)2^NU6("*((*"(6UN^2)->meO|"3k-2X,@)Wc\P#"#"+#".#"#>323267XTO740!zTP73/!Vq#Vq#LE@Y%KY'L+3#3#QtC0CH!C@  JK1PX@ "K#L@ Y#LY@ +!5.546753.'>7dwxcW_d)"$' h_)%$*] om ]\_H-,Ia\[3C  B7N%9@6JIa[*KY#L%%D+%#!!5>5<1#53.54632.#"3֛G1-tUqnv ,.-2 $@E)_E+_mbQ./'&?"!'#/B@? #J HGcW[O.,(&!-+7'7.5467'7>327'#"&'732654&#"xWp nWq32tWs rWr346..22..6'Wp44oWr sWs23qWq 034//44 }>@; Jb  a"K  # L +35#535#53333#3#f±h]_1_\ _1_]j>*@'aY'L+33j|||Ktt5>;3G-@*>1! J[*K['L%#%"+#"&'732654&/.5467.54632.#"'>54&/"&#}kmu 4(%2,4FQ[2*{gmr ,*%-0+NMV0)/0A !)- VaZP%* PQ3M<(T\[N"+ PK4L< )#(  * & )-x$@!Y"L+53353)G-}}}}8'C@ A@43JKPX@' c _["K[-L@,cc c W [OY@)(><861/(C)C''  +".54>32'2>54.#"7"&54>32.#"3267J^66^JJ^77^J32'&""3265 /$6@LW  "$2+.. *4<@y "8 U@ JKPX@ %K#LK#PX@ Y#L@UYMYY+3#'%3#'IA>K PX@gUYM@sUYMY+!#5!I}.-6( JKPX@1 p  c  _[*K [ %L@/ p  c  a  _[*LY@'/. 20.6/6 - -,+*)#! +%".54>32'2654&#"'532#'#7#32654&1U?$$>V11U?$$?U1MfeNNefz226V-"""$>V11V>$$>V11V>$2iNNiiNNiE&($PHH/ .=H@Y"L+!5!H=c$X *@'_[*L     +"&54632'2654&#"JccJKeeK**((XaLLaaLLae*))*H B ^K%PX@ aY%KY#L@aaY#LY@  +%5#53533#!!|£xx=|4z(@%JcY%L%"+4&#"'>323!57> #` VHHN1.>¢:<=8.5(VQl-|@ J IK PX@!hfa[%LKPX@#pna[%L@)pnaW\PYY@ +2654&#"'7#5!2#"&'7!!  p0d1@ZNFT a#?FPX>003!###1O66O1XxZ 8K*+K7 ~""8 3+)&2@ JK PX@hc\'LK PX@pc\'LKPX@!pcW\PKPX@pc\'L@!pcW\PYYYY@ +"&'732654&573<@U!$*Q#16I'( 3/'(+-3-{ )@&JrY%L +535'733SdX2n\U8GWU#d qKPX@[*K[%LK!PX@c[%L@cW[OYY@     +"&54632'2654&#"FZYGHYYH" !"""TNLRRLMUT*$%''%$*'= g@ JKPX@%K#LK#PX@Y#L@UYMYY@  +?'337'3'b#&' 3+t3+y&'t3+t3+7& ' 3+t3+:!=@:JpY%K\'L!!+#53267#"&7>?>=V'%""-+06 tur<'#ꕕC'1!%+&XjkVEH l&$u l&$ l&$ k&$ g&$ p&$ 3+B@?JaaY"KY #L +3!!!!!!'#3'\Z ~#0$4@,+JK PX@*hf`[*K[+LK PX@+pf`[*K[+L@,pn`[*K[+LYY@0.)' 44 +%267#"&'732654&57.54>32.#"zHL q16I=<@U!$#DoN+2XzHKEPca|C6eu (+-3'( 3'1WRYV+yl3DphgqK8l&(gK8l&(K8l&(bK8g&(bl&,KLl&,2Zl&,÷>g&,ȳ 7@4a["K[#L ! +3#53!2#'32654&+3#KCCghl`algvffjbvKk&1/l&2/l&2/l&2/k&2/g&2RK81  0+?'77'RVVVVVV/'6@3%$J[*K[+L'' +".54>32.#"2654&'K~Z33Z~KK~Z33Z~ 3ZeZd . +WYWW,,WWYW+_%@A uwe": Dl&8Dl&8Dl&8Dg&8l&<K 4@1cc"K#L   $!+3332+#32654&Kqu<44llqwl|,03*=2&=@:!Jc[*K[#L &&+!#532654&+532654&#"#4632QA<.37.9*%*-*14~ths)*9By{.(/(y+"%)61+lpdW-GPFai(&DC@(&Du(&D[2(&DaQ(&Dj;(&D_(+.5BKKPX@ .JKPX@ . JK-PX@  . J@  .  JYYYKPX@$  c [-K [+LKPX@) U   c [-K [+LK-PX@*  a  c [-K [+L@4  a  c [-K[+K [+LYYY@0/@>:632/505"$%#5$" +%#"&'#"&5467>54&#"'>32>32!3267'"3.&3265(jbBbeBKacT!='""+ l]32.#"3267<@U!$"`q$@Z54N6 *+0851++ WI16I'( 3' r>`@".?"/GBCH,"F\ !(+-3&HC2&Hu&H[-3+&Hj9&C=6&u%7&[+&j$0@!J$  HK PX@[%K[+LKPX@c[+LKPX@[%K[+L@c[+LYYY@&%,*%0&0+'7.'77#".54>32.'2654&#"? .%Ba@BB=\=4[A&"=T13(65465:8@^"/A?c;cH) =Z96X=! /RG89EE98G=&Qai&RC?&Ru&R[:&RaU&RjFH#BY ;@8aaUYM  +53!!53ȑK~ܐ 6@3J[-K[+L  +"&546327.#"2654&'qrt 2?q3?  wwww"GJE" 9 &XCK9 &Xu9 &X[E9 &XjQ >&\u=H(j@ JK1PX@ "K[-K[+K'L@ [-K[+KY"LY@&#+3>32#"&'32654&#"=K0Xt";'0;83&<`$|?`?!}&0DABG., >&\jC Y&$3+(&DpP k&$(&D]? 3o@J IK-PX@b"K#K['L@b_"K#LY@ +"&5467'!#332673y?W%66'0 /zZ45 4X %\(40=@$.JK1PX@(c[-K[+K['L@%c_[-K[+LY@;951+) 00 +"&54675#"&54676254&#"'>323267&"32656O%J-F`cT!=($ ) l]-N9!*  *c2(%+453"33 !LFME#!"CZ)F3 $\(!0l&&&Fu0l&&&F[.0e&&&F^0l&&&F\1Kl&'o &G A)KPX@  J@  JYKPX@&a"K[-K [ +L@*a"K[-K #K [+LY@(&" (# +!5#".54>325#53533#'54&#"326F1,N9!";R/)Crr447/0871244!!?_=@`@ _W11WD-7G@?H;K8V&(&HpOK8k&(&H]=K8e&(&H^K3Hx@ J IK-PX@(aY"KY#K['L@%a_Y"KY#LY@%& +3!!!!!3267#"&5467KHS!, .?W&  %\23 84,3@  ,JK1PX@(a[-K[+K['L@%a_[-K[+LY@.-10-3.3+"&'" +#"&5467#"&54>32!32673267"3. *6Or&AX2ot8.-+| $6 053/w?`@ q#98)4.).*-K8l&(j&H\,0l&*"4 &J[@0k&*"4 &J]Q0e&* "4 &J^0&*S 3+"4  -:@-JHKPX@) a[%K[#K['LK1PX@- a%K[-K[#K['L@* a_%K[-K[#LYY@9731+)!  +#54673#"&'7326=#".54>3254&#"326^^? #9.3E>32#4&#"=55ppM6La-+%9 W11Ws(XT(+')'8k&,$&a0V&,&p9k&,%&] 3G@ JK-PX@"K\'L@`"LY@ +"&546733267?V#!) .45 2X %\4^@ JK1PX@Y"K%K\'L@`Y"K%LY@ +5333267#"&546;+ )6N"-~~ #\53"/Ke&,'=@%K#L+33=Ks&,-;>&LMl&-%>8&Y[K&.S 3+=&NSJ(l&/0=1f&Ou 3+K(&/S 3+8&OSK(&/=&OK( 0@-a"KZ#L  +%!3753(#啍=*@'a"K#L+33753=GX}}"? ,@) J"KZ#L +%!5737?$AA #y#%LyL , &@# J"K#L +355737TKKKK,o+t,p,Kl&1 =&QuK&1S 3+=&QSKl&1=&Q\O=&Q3+KHO JK1PX@"K#K\'L@`"K#LY@ !#++53267#3jiG/($ʞ,okd!&Ei=>X JKPX@[%K#K['L@%K[-K#K['LY@ !%##+%4&#"#3>32+5326/)%9N6KbYW:"$!+')'@ *XT`Y{#/V&2&Rp\/k&2&R]F/l&2&RbT<' KPX"JKPX"J" JYYKPX@!a [*K[#LKPX@5a [*K Y"KY#K[+LKPX@3a [*KY"KY#K[+L@1a [*KY"KY#K[+LYYY@&$C(" +)#".54>32!!!!!%3267.#"fB$K\44\K#?!,*bZ,,Zb*WZXW+~eroR")5K!PX@"J@"JYKPX@#a [-K [+LK!PX@-a [-K [-K [+L@7a [-K [-K [+K[+LYY@+*$#1/*5+5'&#)$)"$$$$ +%#"&'#"&54632>32!3267'"3.2654&#"O!5M3:VY:rr@;0/JK PX@)hf`[*K[+LK PX@*pf`[*K[+L@+pn`[*K[+LYY@ $%$%+#+?32654&/.54632.#"#"&'732654&57., N<>C%3xYs?D:>/6T[yp16I=<@U!$"r.0& ! Vc_liZ"8' ]TXj (+-3'( 3'a!&>@<;0/JK PX@$hc[-K\'LK PX@%pc[-K\'LKPX@"pc`[-LKPX@%pc[-K\'L@"pc`[-LYYYY@ $%$%+#+?32654&/.54632.#"#"&'732654&57.!-(*%+CHMu\Ur }))%%"?JWVQ16I=<@U!$!N` C?MQLD" BA?U (+-3'( 3%M,vl&6!&V\ x&7S 3+ kb&WS[xl&7l 6@3paY%K\#L#! +3##"&=#53533#;%|=]dUd\JJ!!CȳVh}xx}'x/@,aY"K#L +5!#3##5#535d瀀vv kb9@6r  aY%K \#L +!#"&=#535#53533#3#;kUd\HHJJii""CVhTG{xx{GT(Dk&89 &XafDV&89 &XpeDk&89 &X]WD&89 &X_Dl&89,&XbaD0%\@ #JK#PX@p"K\'L@p`"LY@  %%+"&5467.533265333267?V!}~EQN@Z`!, .441 hHKKHks (\94%h@"#JK1PX@%K\+K['L@_%K\+LY@  %%+"&54675#"&533265332676O"Q3L^-*(5*  *53"34&XTH*)."* $] l&:0 &Z[l&< >&\[<g&<}6wl&=.&]u6we&=.&]^6wl&=.&]\3/7@4 Ja[*K[+L&%"+467!.#"'>32#"&267!/ YJAQz2WxFCEX ZJ$ PS?1myVW-0LKNIK,l&'<K&'=  &G=;K&/-JK>)&/MQ=>&OMKI&1-K>&1M=>$&QMLDl&89 &X\EV&(+&pK,&'=K&']  &G];l&(+&uJ/l&&u,v&6S 3+!&VSux&7S 3+ kb&WS[V&< >&\pZ> @%K\'L !#++53265WbF#($ `Xz!%$!@@=Ja[-K[+L!! +#"&5467!.#"'>267#us%@V0tuH5+(0 }$8O."3 1v?_@ p ;6%7)q(.+++#7JK)PX@ Y"L@UYMY+3#'#jz78zRR)#@JK)PX@ Y"L@UYMY@ +'373l}76|k#OO,m !@`"L   +"&'332673RKjjLP??P(-@Y"L+53(-~~&  1@.cW[O     +"&54632'2654&#"1<<10==0 <./==/.32#27:D#BOL#{m"+,(]vvZKm&|3+0 4@1Ja[K[L(%"#+.#"3#3267#".54>32 JHB]^CFIHzX20WzJ.CMJKLB.dz*UZXW+v,v6K,>p&,ȳ  3+X- %iKPX@ cYK[L@*cYK[K[LY@!%%!%$! +7>45!32#!#+5326%#32654&vqjl:",2m||<44(hsy8jyqlIHa(*20,K>@; caK\ L$! +33!332#!!#32654&Kvp$||<44 jyql<*20,7@4JcYKL##+5!#>32#54&#"#OO(v?B@ l|F9Kl&.Kl&o&{Kr MK PX@gKZL@sKZLY@ +##5#3!#X $Kt 6@3cYK[L   !+3!!32##32654&Kt~~q723Zqqd$++"K~%K@YKL+3!!K r3@0QYKYL +3>746<5!3#5!!# E )b1qB ^od厎9_' 籱CD뺰?\L  )z(D@A Jc[K[L$"!((+"'>32#"&'732654&+532654&YAE 89=D LEBE7=hj6-<,91ctd`6K JA]qoj19)*'#}%$%(K $@!JKL +!#33ƚ822XKo&K. !@YK[L!%+7>45!##+5326jl:",2(hsy8XIHa(KN0K+/2K!@YKL+3!#!KUXKu30&x7"@ JK\L!$+%+5326733)5H1O;",,>& m+a'2KPX@-f g d W [O@+r s d W [OY@(((2(2*)''! +5".54>35332+#2>54."{H{Z34Y|GH{X22X{H&D22C&D33DR$HoJJmF"NN#GlIJoH$R(?+,=%D&<,+?( ;Kr )@&RKZL +3#5!3!bޗ#2h)@& JdKL#"+32673#5#"&=3AM >O+vF:*X qK %@"KZL +333333KڗڗXKr%-@*RKZL +3333333#5Kڗڗa 6@3cYK[L   $!+5!32#!2654&+Mvq<44<jyqli*20,K[ 4@1cK\L   $! +332#)3%2654&+Kvqy <44<jyqlX*20,Ku *@'cK\L   $!+332#!%2654&+Kvp <44<jyql*20,)4@1Ja[K[L&%"#+?3267#53.#"'>32#"&) RHDV SE@XtGvT/2?MLMI<4no)UXoK&sKPX@!a[K [L@)aK[KK [LY@" &&  +".'##33>32'2654&#"BsW: oo :WsBJ~Y33Y~JYaaYZ`` "EjGEjE#,WWYW+seeqqees(p 2@/Ja[KL&+!#5##7.5463!";5p~@Hp><44<gUql+10,(D,(R@ JHKPX@[K[L@c[LY@#!(("+%#"&=4>7>7>322654&#"~pz'JnE1V" $Y/SSU1Xr0641.>:r?XzN(  GK"&rD<>B4*HA= C@@Jc[K[L   ! +332##32654&#32654&=W`(+'X]ST!aa#?B; 9+BK\a=@YKL+3!#=V}zJ+@(QYKYL+73>7>7!3#5!#35#4HԌ};()|Sr$7"IH6@3JaK L +!5##'3353373#'#?*oj++ko+巷(D@A&%Jc[K[L#! ((+%2654&+532654&#"'>32#"&'7./")NK%!((03 zbho(&(1{lku 3d_*%NWME#5 31IQ\R%,= @ JKL+3#33#ʍ,/=&TR 3+= -@*JaKL +33373#'#=9qv9궶 !@YK[L!'+7>45!##+5326lB\@%JMJm32/`R}"= '@$ JKL +333##=vs͇J^]=  '@$aKL +33353#5#=걱R=!@YKL+3!##=ȏm=>*SF!@YKL+5!##™m}}m >\> -:Q@N%J K [K [KL1.!!62.:1:!-!-)' !# +23*##5#.54>75"&#263>54&:3*#:bG''Gc;;bG'(Fc;8@A6CA<]??_>  >^??^<CDCBBCDC [=zF )@&RKZL +3#5!33Hm(/@,JdKL##+!5#"&=3326753V:$]_*+% UX+ = %@"KZL +!3333@mm=zE-@*RKZL +3#5!3333HmmQ 0@-cYK[L  $!+!32+##32654&oUa^Z^DD.$'UWY[l~|%"=<@9 cK\L  +!3!332#'#32654&iUa^Y#ED.$&UWY[|%"= 0@-cK\L    !+3332#'#32654&=oV`]Z)ED.$&UWY[|%"4@1Ja[K[L$%"#+?3267#53.#"'>32#"&6++23((5 }x^l|qeu$,0.f,.)(N[|x\=nKPX@!a[K [L@)aK[KK [LY@$" +333>32#"&'#%2654&#"=I}cssbI91::11:;\ewwh]lFDDDCEDF! 2@/ Ja[KL"+463!#5##7.735#")d]A`n15\\%#%CNYLn&HC3z#K@H!J a_K[ KL  ## +2+532654&#"##53533#>`*A-_r+2%'2%6IINBpUu_ziM,' W11Wp%=&uw4@1Ja[K[L$%"#+.#"3#3267#"&546323,*4 4(*2 ~takofsD".0.f+/)'M]{z_!V;L+ 7@4YKKL   +533533A-}}}}>M #'iKPX@ cYK[L@*cYK[K[LY@ #!' '!'$! +7>45!32+#+5326%#32654&lmUa^ZC[@$BB.$'JMJUWY[m32/`R}"O|%"=+>@; caK\ L$! +3335332+5#%#32654&=mVa^Z~CC.$'걱UWY[|%";@8 JaK[K L## +3#53533#>32#4&#"=IIM6La-+%9 W11Ws(XT(+')'=&u=&CY >&\TF 3+=z MK PX@gKZL@sKZLY@ +##5#33m >@;ra c\ L! +3#5353!!32##32654& t~q3/0PPg^plb#)*$N:@7 cKYK\L$! +3533#32+##32654&lZca]r\\%!"꾾sCDUTGw_/!>@;a[K[L!!  +".54>32"!.267!K~Z33Z~KK~Z33Z~KKb s aKL` a +WYWW,,WWYW+8RKKRLTLLT >@;a[K[L     +"&54632"3.267#rrtt*8 8*+8 9 wwww.00.0110!@J[KL!"+>;#"#3GO9"! #J;#& $!@J[KL!&+#37>;#"puL  0%0B-}K#/GK PX@fYKL@rYKLY@ +3!53!KH>eGK PX@fYKL@rYKLY@ +3353#>܎{ -@*aYKL +35#53!!3#KCCǢv;v  -@*aYKL +35#535!#3#=33Vnni}giKr6@3Ja]KL +33333#5##KQl-Q =z$6@3Ja]KL +333733#5#'#=9qRTv9궶Kr0@-a]KL +33!33#5#!K%bh =zR0@-a]KL +333533#5#5#=HK걱< >"#@ JKL+#53"˞vl7/@,JbKL+!5#53333#v߰svk(v >"+@( JKZKL+!##5#53333{~RvlPl~=K)@& JcKL#"+%4&#"#3>32#AN =N+vE; r=K/>$Z/KO&1d 3+=U&Qd,Ov&6d 3+!U&Vd l&:& &ZC l&: &Zu/ g&:- &ZjK8k&(~&HaFl&< >&\C@^-@UYM+!5!-1}+Q@UYM+%!5!1z+bQ@UYM+%!5!b7z7{ $@!HUYM +#5467˔NK +'IP M% /q @GY"L +53'>=?NK *'HQ M% /^ @GY#L +353'>=?NK *'HQ M% 7{ 3@0HUYM   +#5467##5467NK *'NK +'IP M% IP M% /q +@(GY"L   +53'>=353'>=?NK *'OK *'HQ M% HQ M% /^ +@(GY#L   +353'>=353'>=?NK *'OK *'HQ M% HQ M% & MK1PX@a"K#L@UaYMY@ +#53533# {{T&eK1PX@ a a"K  # L@% Ua a Y   MY@ +5#535#53533#3# |{{|/* @[-L  +7"&546323JJ34JJJ44JJ44J0&' '3?KK PX@+   d[*K  [#LKPX@1 c    d[*K  [#L@9 c    d"K[*K#K  [+LYY@7A@54)(GE@KAK;94?5?/-(3)3#!''   +"&54632#32654&#""&54632!"&54632%2654&#"!2654&#"NiiNQddVU"##""&&NiiNQddNiiNQddK"##""&&"##""&&-_dc^_b]f00.00.00g_db__b]f_db__b]fc/0.10/0//0.10/0/"C5JK!PX@ %K#L@UYMY+3#''HRJKPX@ %K#LK#PX@ Y#L@UYMYY@ +?'3'x[@"K#L++36RQ" QK)PX@c[%L@cW[OY@     +"&54632'2654&#"R__RS^^S && '']]]__]]]W*99,,99*& Z JKPX@rgUZN@rsUZNY@ +#5#5733#'35_eԣ((qGYNN5m@ JKPX@ac[%L@!acW[OY@ +"&'732654&#"'7!#>32GTa$ ! a+32'"32654&V[\QEOb#* -#GLTP$#! Vac].1/+7;:B0m*@'JsUYM+#5!P=Zc(#/ JK PX@cc[%LKPX@"ccW[OKPX@cc[%L@"ccW[OYYY@%$+)$/%/##*"+#"&5467.54632'2654&#""32654&\QWVPUVO#$$" ""$$""$$3<95) *1::1% +WI({$q@ JKPX@cc[%L@"ccW[OY@ $$ +"&'73267#"&54632'2654&#"DPa"%& -#DPVNR][R!!"!/0.,8:9CU_e^"  3+-{y 3+4z s 3+-|t 3+& 3+5 3++}  3+0m  3+(   3+({   3+0hJKPX@cY"K#LK!PX@!WaY"K#L@"caY"K#LYY@!# +3!!!>;#"##0A$'.?; "-'>U.J@GJI  a a[*KY#L.-*)('%% +%#!!5>7#53.'#53.54632.#"3#3ݡG#, nj R-qnv -.-2۲ ' )_  ^  _mbQ./' ^ ]1Q@N+*J Ia b[*K [ + L11/-"%%" +753<5<7#53>32.#"3#3#3267#"&';7>7#5!>54&#"'>323#3!3267D xq5Y?$7  j+++4 khz3~   4+,3Ld+C/ Z Y  !'%!S[_S Y  Z  %#'8R +@(aY"K#L  +!5!5!##R–I_턄k$gJ@G  ca  ["K#L  +#3##5#535#53!232654&#tqؑNNNNrl:1282eiie2v2enli23+-1 %"0+%#"&='>7546323>54&#"_[X#/gKKOrW""D+%||Sk  ^  ]YRH\/;&"T&%K  !% @ $" 0+"&54632##332654&#"!5!DUUEESSߪ%%kQQNRRNOSH>&#"%$##&hh 0+5!##5373#5#'2gdHF^EKFNZZ@å2$  0+%#".54>32!3267"!5."nI^74[JExX3%}OWLy%#t]m2]SN~X0.RsD7:BNE=6191&'u3+s3+5&'x3+s3++&' }3+s3+5&' n3+s3+8&'r3+s3+Ax&'H3+s3+V 0+!!VVXxVXB 0+!'3'LVmXVX" 0+!'7'7!"VXVmXB 0+!737YVXVXp[ 0+!!#_~z[y^S[  0+7!5!#SNz~byNcUo 0+73!5!U_yNb_dNxpo 0+7'3!Ny_}N_x!0+!5!kKR}}+X3}0+!!X%}~8y!-9 3.*$0+#"&'#".54>32>323267.#"%"32654&+A,;Q "*4,A**B/3T$P40B*'1 0"!-0% '>2!A##!2>A4!:(*8"4@ "-&''!(#)<gM/# 0+232673#".#"#>232673#".#"#>50,|PM31.|SQ50,{NN31.|SNhNiPgNiW4[ 0+?#537#5!733#3!|5Z<6y6S<5hywzkkzwyhU5{  0+%5%!!5  &h}U5{  0+%5%!!U J &h}$'2V@S-,+Jp c bW[O(((2(210/.*)''  +2#".54>"32>54.535'733Rd99dRRd99dRAoO,,OoAAoO,,Oop]0mc9dRRe99eRRd9J.QpBApQ//QpABpQ.X9GZX$'@S@P/.=J ccaW[O<;:931,*''  +2#".54>"32>54.4&#"'>323!57>Rd99dRRd99dRAoO,,OoAAoO,,Oo *` YNKT.4W%#9dRRe99eRRd9J.QpBApQ//QpABpQ."=9731,*''  +2#".54>"32>54.#"&'732654&#"'7#5!6Rd99dRRd99dRAoO,,OoAAoO,,Oou_WPZ a'+"''%! FwFC9dRRe99eRRd9J.QpBApQ//QpABpQ.}EPD:J\V_U@$'255,JKPX@3ph  c bW[O@4pp  c bW[OY@43210/.-+*)(''  +2#".54>"32>54.#5#5733#'35Rd99dRRd99dRAoO,,OoAAoO,,OoBk..9dRRe99eRRd9J.QpBApQ//QpABpQ.Y]UU$'Hf@c>9 8,+J  c a  c cW[O)(B@=<;:640.(H)H''  +2#".54>"32>54."&'732654&#"'7!#>32Rd99dRRd99dRAoO,,OoAAoO,,Oo?T\ c,$#%("# b,-9*\9dRRe99eRRd9J.QpBApQ//QpABpQ.D5 ZN !5&GR$'BNi@f218J  cc  c  cW[ODC)(JHCNDN<:64/-(B)B'' +2#".54>"32>54."&54632.#">32'"32654&Rd99dRRd99dRAoO,,OoAAoO,,Oo<]gf]ST e$&*06( <-_W#)'%!'$9dRRe99eRRd9J.QpBApQ//QpABpQ.lmtw?38; 2"BU$'.Q@N-J pcaW[O(((.(.,+*)''  +2#".54>"32>54.#5!Rd99dRRd99dRAoO,,OoAAoO,,OoU9dRRe99eRRd9J.QpBApQ//QpABpQ.Hcg$'?KWj@g:.J  c  c c  cW[OMLA@)(SQLWMWGE@KAK53(?)?'' +2#".54>"32>54.2#"&5467.546"32654&"32654&Rd99dRRd99dRAoO,,OoAAoO,,OoA\\!"%b]]d$#!_['+,&&**&)/,,++.9dRRe99eRRd9J.QpBApQ//QpABpQ.MD<#- 5";KJ<"5 /"9GU$'BNi@f821J  c   c ccW[ODC)(JHCNDN<:64/-(B)B'' +2#".54>"32>54.2#"&'73265#".5462654&#"Rd99dRRd99dRAoO,,OoAAoO,,OoE^ff\TT e%&*07'!<,^W"*'%!'$9dRRe99eRRd9J.QpBApQ//QpABpQ.Mlmtw?38; 2"BU$'3:NK!PX@ 8 76 J@ 8 76 JYK!PX@.  c   c cW[O@4  c   ca cW[OY@'<;)(FD;N"32>54.2#"&546#'732>54.#"Rd99dRRd99dQAnO,,OoAAoO,-Oo>GG>>GGnW$'OS      9dRRe99eRRd9J.QpBApQ//QpABpQ.Pg{|dd|{gEW:< 7..8 8..7 $'3?R@O cc  cW[O54)(;94?5?/-(3)3''  +2#".54>"32>54."&54632'2654&#"Rd99dRRd99dRAoO,,OoAAoO,,OoAVeeVWddW$,,$"..9dRRe99eRRd9J.QpBApQ//QpABpQ.pqottoqpX;NN==NN;$+jK1PX@c_[%L@$ccW[OY@! '% +!+  +2#".54>2654&#"7"&54632Rd99dRRd99dRWddWVeeV".."$,,9dRRe99eRRd9pqottoqpX;NN==NN;]$0+!%!!]fm%,]@ 0+7#!!3!!pqN@m-96 4r8}30+7#3pqNq6 4r$ 0+2#".54>!5##7#Rd99dRRd99d@8cm/^q9dRRe99eRRd9W]ZH:$," 0+2#".54>!5#7>54&#">32Rd99dRRd99d#%MW3-TKNY `* 9dRRe99eRRd9*vVW@'F2:KK<"$0- 0+2#".54>4&75!3>32#"&'326Rd99dRRd99d DFx҇ !&((#*)a [OWa9dRRe99eRRd933>W_VaG;EP$!  0+2#".54>535##3'7Rd99dRRd99d..9dRRe99eRRd9YU]Y$4" 0+2#".54>2654.#"735!>32#"&'Rd99dRRd99dTW\*9-b #"(%#$,c \9dRRe99eRRd9RG&5! NZ 5D$.: 4/( 0+2#".54>2654.#"46327.#"72#"&546Rd99dRRd99dWX_-< (60*&$e TS]fg^$%(!%(*9dRRe99eRRd9UB"2 ;83?wtml$ 0+2#".54>35!3Rd99dRRd99d't9dRRe99eRRd9Dgc$+7C @ =81, 0+2#".54>"32654&'>54&2#"&546"&54632Rd99dRRd99dR]]!##c]]a$"!Z^&,,&&-,',-0)(/,9dRRe99eRRd9G:!1 4#;KK;#4 /""3267#"&'32654&"&54632Rd99dRRd99dNX^,"32654&#7%".54632Rd99dRRd99d?GG??HHTI'   9dRRe99eRRd9g{|dd|{gE5HP 6+W44W+6 *>s0+#s‡34$>m0+3$‡43B>  0+!#3%3#BooEEk=kk5>  0+!53#5#3wooFFgkkk=`#*@'J[*KY#L&'+!53.'4>323!5>54&#"PE҂;H3[LM~X0K?GNaZTlfHwt#SIyW0.TwHYz*txHZkl? #@ GUYM +53'>7F?  @  0+3#%3#3+53265t}_t} U]Q$((aYz%* 0+533533_'^$ 0+# #X$6* ("0+74>32#"&32654&#"32654&+6$A\6fw779Akv{Y4:1*.><..9@6[6U8gS1NLDenqg6,%%08632.3.('0+%#"&546?>54&#"'>323267 ``qNTC'# '2 |t[_hWO@%*"-4NMNK=J EKSC@E " "4 J 0+!5##'333373#'#?*oj++ko+u4(%0+732654&+532654&#"'>32#"& 9).951[W.61))9 }^es666>od{*%1,+2t/((.*(TWhW6PK?am\9 X9 &XTO3+=N 0+# #nrpe=Q=JP8zS0+!5#"&53326533#5Q4K_-))4H8&XTH*)."*(0+#5#"&=3326=H*Q]#+%6]X!)(%8F"0+#5#"&'#"&53326533265FL6:IX6K`,)#7,($7>)0$**YTG'*,%*()+%*8z&0+3#5#5#"&'#"&53326533265FHGL6:IX6K`,)#7,($7>)0$**YTG'*,%*()+%*T 0+%#"&=#5!>3232654&#"TydkpB&#A10"),,("1\tr\~-DB'+00(,'%7 0+73>32#"&732654&#"7B&#A1xdkq0")--("1'-D.\trJ'+00(,'%$ *$0+%#".5467'.546;#"2654&#" n6[A$`I"#QH_9L3243358o ?>=X '%!"-+/7 sur;(#C'1" %*&YilVEH"nC:__3+'nH:``3+"n8:m``3+'n=:{``3++ VKK3++"KK3++"bKK3+@5n%!0+4>7.74>7.@#>W2H"?/aKHf#>W2H"?/aKI3U>"Nwd'UQctA{BUNNwd'UQctA{EU)gy65e'#0+'>54.'7'>54.'7e#>W2IJd/?#H3V=##>W2IJd/?#H3V=#Lxf'UAzAtcSU'exNLwf)UBzAtcSU'ex@y 0+4>7.@#?W3MKcYTMhONo\(ZBypHZO:t 0+'>54&'7t#?W3NKcYTN3W>#LOn]'ZBzoG[(_qB\0+!#3B`c||5O0+73#5!!5k|$0+5326=46;#";#"&=4&#*2^NU6("*((*"(6UN^2*->TcQ|$.V,2$0+#"+5326=467.=4&+532;)2^NU6("*((*"(6UN^2),>ReO|"2Q-@n%!0+4>7.74>7.@#>W2H"?/aKHf#>W2H"?/aKI3U>"TOn]'TKZmAzBVOOn]'TKZmAzDV)`p6e'#0+'>54.'7'>54.'7e#>W2IJd/?#H3V=##>W2IJd/?#H3V=#RLp_'V@zAmZLT'^oNLo_)VBzAmZLT'^o*s0+#s‡NO$m0+3$‡`NOB  0+!#3%3#BooEE`ckskk5  0+!53#5#3wooFFkkks0+3`c0+#3`cj0+3j|`cj0+33j|||rq1Q#ee3+8k3++  0+"&54632.#"2654&'b IXJW ! ^%<Jhjq'?q  0+"&54632'2654&#"EGFFGFGG dqrccrqdq  0+"&54632.#"2654&'E $FQGP  ^&?Hijq 6#s  0+73'733!I۵L֊sp*Z gs  0+!#5!533#%3$#OO댝f/'b$e-Y0+3!5!oMq,&f#/ )$0+%#"&5467.54632%2654&#""32654&f:34-556=D;;EE?=FGBAGH@?cpja=&u 3+&u=&u$3+!&u&-K1PX@ Y"L@UYMY+3#IG]l@UYM+3#zxl44l@UYM+#'`xll@UYM+3#%3#}|8l l @JUYM+3#'#x66lFFl'@$JUYM+'373v54wEE ek LKPX@fW\P@rW\PY@   +"&'332673QMhhJMAAM+nkX@ JGKPX@hc[O@pc[OY####+54632326=3#".#"+2+   Z,,#  6B   6C   $XV@UYM+!5!X4b?g*@'UYM+53353?Hyyyy%e@UYM+53%~~.O 1@.cW[O     +"&54632'2654&#"SS>  M??MM??MP####o AKPX@fW\P@rW\PY""+332673#"&{ &&}_cd`o#$#$TRR&J  @w; V<[ C      0 Y v : xd > { <G < Copyright (c) 2018 LLC Contrast Foundry (LLC CoFo). All rights reserved. Copyright (c) 2018 LLC Contrast Foundry (LLC CoFo). All rights reserved.CoFo SansCoFo SansBoldBold1.001;COFO;CoFoSans-Bold1.001;COFO;CoFoSans-BoldCoFo Sans BoldCoFo Sans BoldVersion 1.001;PS 1.002;hotconv 16.6.54;makeotf.lib2.5.65590Version 1.001;PS 1.002;hotconv 16.6.54;makeotf.lib2.5.65590CoFoSans-BoldCoFoSans-BoldCoFo Sans is a trademark of LLC Contrast Foundry (LLC CoFo).CoFo Sans is a trademark of LLC Contrast Foundry (LLC CoFo).LLC Contrast Foundry (LLC CoFo)LLC Contrast Foundry (LLC CoFo)Designer: Maria Doreuli. Team: Irina Smirnova, Elizaveta RasskazovaDesigner: Maria Doreuli. Team: Irina Smirnova, Elizaveta Rasskazovahttp://www.contrastfoundry.comhttp://www.contrastfoundry.comhttp://www.contrastfoundry.comhttp://www.contrastfoundry.com  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjikmlnoqprsutvwxzy{}|~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~uni0000uni00A0uni00B2uni00B3uni00B9AmacronamacronAbreveabreveAogonekaogonek Ccircumflex ccircumflex Cdotaccent cdotaccentDcarondcaronDcroatEmacronemacronEbreveebreve Edotaccent edotaccentEogonekeogonekEcaronecaron Gcircumflex gcircumflex Gdotaccent gdotaccent Gcommaaccent gcommaaccent Hcircumflex hcircumflexHbarhbarItildeitildeImacronimacronIbreveibreveIogonekiogonekIJij Jcircumflex jcircumflex Kcommaaccent kcommaaccentLacutelacute Lcommaaccent lcommaaccentLcaronlcaronLdotldotNacutenacute Ncommaaccent ncommaaccentNcaronncaron napostropheEngengOmacronomacronObreveobreve Ohungarumlaut ohungarumlautRacuteracute Rcommaaccent rcommaaccentRcaronrcaronSacutesacute Scircumflex scircumflexuni0162uni0163TcarontcaronTbartbarUtildeutildeUmacronumacronUbreveubreveUringuring Uhungarumlaut uhungarumlautUogonekuogonek Wcircumflex wcircumflex Ycircumflex ycircumflexZacutezacute Zdotaccent zdotaccentuni018Funi01C4uni01C5uni01C6uni01C7uni01C8uni01C9uni01CAuni01CBuni01CCuni01D3uni01D4uni01E2uni01E3uni01F1uni01F2uni01F3AEacuteaeacute Oslashacute oslashacute Scommaaccent scommaaccentuni021Auni021Buni0232uni0233uni0237uni0259 acutecomb dotbelowcmbuni0394Sigmauni03BCuni0400uni0401uni0402uni0403uni0404uni0405uni0406uni0407uni0408uni0409uni040Auni040Buni040Cuni040Duni040Euni040Funi0410uni0411uni0412uni0413uni0414uni0415uni0416uni0417uni0418uni0419uni041Auni041Buni041Cuni041Duni041Euni041Funi0420uni0421uni0422uni0423uni0424uni0425uni0426uni0427uni0428uni0429uni042Auni042Buni042Cuni042Duni042Euni042Funi0430uni0431uni0432uni0433uni0434uni0435uni0436uni0437uni0438uni0439uni043Auni043Buni043Cuni043Duni043Euni043Funi0440uni0441uni0442uni0443uni0444uni0445uni0446uni0447uni0448uni0449uni044Auni044Buni044Cuni044Duni044Euni044Funi0450uni0451uni0452uni0453uni0454uni0455uni0456uni0457uni0458uni0459uni045Auni045Buni045Cuni045Duni045Euni045Funi0462uni0463uni0472uni0473uni0474uni0475uni0490uni0491uni0492uni0493uni049Auni049Buni04A2uni04A3uni04AEuni04AFuni04B0uni04B1uni04BAuni04BBuni04D8uni04D9uni04E8uni04E9uni1E46uni1E47uni1E62uni1E63WgravewgraveWacutewacute Wdieresis wdieresisuni1EBCuni1EBDYgraveygraveuni2004uni2007uni2009uni200Auni200Buni2012uni2070uni2074uni2075uni2076uni2077uni2078uni2079uni2080uni2081uni2082uni2083uni2084uni2085uni2086uni2087uni2088uni2089liraEurouni20B4uni20B8uni20BDuni2113uni2116 estimateduni2153uni2154 oneeighth threeeighths fiveeighths seveneighths arrowleftarrowup arrowright arrowdownuni2196uni2197uni2198uni2199uni2206uni2460uni2461uni2462uni2463uni2464uni2465uni2466uni2467uni2468uni2469uni24EAuni24FFuni2610uni2611uni2713uni2776uni2777uni2778uni2779uni277Auni277Buni277Cuni277Duni277Euni277Funi3008uni3009uni301Auni301BuniA7B6uniF6C3uniF6D4uniF8FFCRI.altuni00CD00A40301 uni0407.alti.TRKuni00ED006A0301 uni0457.alt uni041B.BUL uni0432.BUL uni0433.BUL uni0434.BUL uni0436.BUL uni0437.BUL uni0438.BUL uni0439.BUL uni043A.BUL uni043B.BUL uni043F.BUL uni0442.BUL uni0446.BUL uni0447.BUL uni0448.BUL uni0449.BUL uni044A.BUL uni044C.BUL uni0431.SRBexclamdown.capquestiondown.capguilsinglleft.capguilsinglright.capguillemotleft.capguillemotright.cap hyphen.cap endash.cap emdash.cap dblparenleft dblparenright parenleft.capparenright.capbracketleft.capbracketright.cap braceleft.capbraceright.capdblparenleft.capdblparenright.cap uni3008.cap uni3009.cap uni301A.cap uni301B.cap slash.cap backslash.capbar.cap brokenbar.capat.capcopyright.pnum_lnum zero.zerozero.tnum_lnumzero.tnum_lnum_zero one.tnum_lnum two.tnum_lnumthree.tnum_lnumfour.tnum_lnumfive.tnum_lnum six.tnum_lnumseven.tnum_lnumeight.tnum_lnumnine.tnum_lnum zero.dnomone.dnomtwo.dnom three.dnom four.dnom five.dnomsix.dnom seven.dnom eight.dnom nine.dnom zero.numrone.numrtwo.numr three.numr four.numr five.numrsix.numr seven.numr eight.numr nine.numr uni04100301 uni04150301 uni04180301 uni041E0301 uni04230301 uni042B0301 uni042D0301 uni042E0301 uni042F0301 uni04300301 uni04350301 uni04380301 uni043E0301 uni04430301 uni044B0301 uni044D0301 uni044E0301 uni044F0301 caron.alt acute.cap grave.caphungarumlaut.capcircumflex.cap caron.cap breve.cap tilde.cap macron.cap dieresis.cap dotaccent.capring.capCyrbreve jkklnoop%&)*45=>CDLMWXXYZ[[\ bTDFLTcyrl6latn BGR .SRB N    .AZE .CRT .DEU .MOL LNLD lROM tTRK       aaltncaltvcase|ccmpcrcydligfraclnumloclloclloclloclloclloclsinfss01supstnum  BJRZbjrz "*2:BJhpx>@D$<<$V  L  D v     V  2  n0  P# $$$$%%"%@%^%|%%%%%%V{|W}~ZptuqSTUVY]o^_`abcdefghijklmn\wxrsV #,>?@CL^_`chjkmpu{!"[\]^abpNOPQTyz, /v gedff  gedffSTUV!"STUV!"6",-MX-[M,LL*]^_`abcdefghijklmn (2<FPZdnx"" (2<FPZdnx &0:DNXblv  &0:DNXblv $.8BLV`jt $.8BLV`jt",6@JT^h",6@JT^h *4>HR\ *4>HR\(2<FP(2<FP&0:D&0:D$.8$.8",",  $4styy  6Lstyy styy "8Ndstyy styy styy $:Pf|styy styy styy styy &<Rh~styy styy styy styy styy (>Tjstyy styy styy styy styy styy  *@Vlstyy styy styy styy styy styy styy " ,BXnstyy styy styy styy styy styy styy styy $ .DZpstyy styy styy styy styy styy styy styy styy  T'{|v}~ptuqwxrs' #>?@C^_`chjkmpu{[\]^abNOPQTyz  F yst   yst   yst     F         st yy  $   70t "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz= =|= =|= = |= =|== ==|=L =L|< <|< <|< < |< <|<< <<|<K <K|; ;|; ;|; ; |; ;|;; ;;|;J ;J|: :|: :|: :|: :|:: ::|:I :I|9 9|9 9|9 9|9 9|99 99|9H 9H|8 8|8 8|8 8|8 8|88 88|8G 8G|7 7|7 7|7t 7t|7 7|77 77|7F 7F|6 6|6 6|6s 6s|6 6|66 66|6E 6E|5 5|5 5|5y 5y|5 5 |55 55|5D 5D|o5 o5|oU oU|k& k&|kF kF| (!'A&l "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz "*2L@L~L@L~L @L ~L@L~L=@L=~LL@LL~K@K~K@K~K @K ~K@K~K<@K<~KK@KK~J@J~J@J~J @J ~J@J~J;@J;~JJ@JJ~I@I~I@I~I@I~I@I~I:@I:~II@II~H@H~H@H~H@H~H@H~H9@H9~HH@HH~G@G~G@G~G@G~G@G~G8@G8~GG@GG~F@F~F@F~Ft@Ft~F@F~F7@F7~FF@FF~E@E~E@E~Es@Es~E@E~E6@E6~EE@EE~D@D~D@D~Dy@Dy~D @D ~D5@D5~DD@DD~)t "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz= =|= =|= = |= =|== ==|=L =L|< <|< <|< < |< <|<< <<|<K <K|; ;|; ;|; ; |; ;|;; ;;|;J ;J|: :|: :|: :|: :|:: ::|:I :I|9 9|9 9|9 9|9 9|99 99|9H 9H|8 8|8 8|8 8|8 8|88 88|8G 8G|7 7|7 7|7t 7t|7 7|77 77|7F 7F|6 6|6 6|6s 6s|6 6|66 66|6E 6E|5 5|5 5|5y 5y|5 5 |55 55|5D 5D|o5 o5|oU oU|k& k&|kF kF|l "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz "*2L@L~L@L~L @L ~L@L~L=@L=~LL@LL~K@K~K@K~K @K ~K@K~K<@K<~KK@KK~J@J~J@J~J @J ~J@J~J;@J;~JJ@JJ~I@I~I@I~I@I~I@I~I:@I:~II@II~H@H~H@H~H@H~H@H~H9@H9~HH@HH~G@G~G@G~G@G~G@G~G8@G8~GG@GG~F@F~F@F~Ft@Ft~F@F~F7@F7~FF@FF~E@E~E@E~Es@Es~E@E~E6@E6~EE@EE~D@D~D@D~Dy@Dy~D @D ~D5@D5~DD@DD~ >A{}*4>HR\fpzccccccccccccccccccy~,O,O\\pppppYpY+, yst      WY\,, pp   xDFLTcyrl"latn<BGR SRB (AZE (CRT (DEU (MOL (ROM (TRK (cpspkernv~     !#%')+-/13578:<>?BEHJLOQSUWijklmnopqrstuvwxyz{|}~X]  @(.DZ Bd(NtH^d^"0:Dfx2HHHHH  ( 6 P V \ P P  >   B H b l v  P B   T j p z V B B  6 V 99;Y[Y`   }CJI" 9;|~ 9?Y|d||~ "9?| |~9|~ "9d} 9|~ 9;|~ |9;[ 9;?|~ [| " ;[|~(/D4$.& =& #[w#0F1/1  | -(:0"+  #9IYw% | !9?MY ("++C2(+/  " #I  #?Y99;9IY9Y[EKNOD/2/2YIIMYP$Q$S$U$WOYBZB$$$$$ $$$$4B=8G$$BBBIOMYP$Q$S$U$WO$7$$$$ $$$$ N=GG$$HFGHJRTX(/D4$.&  (*,.02=AINR "q}|~q| q}|~|~ "mm?f|~lllm " q}_fo|~ q}|~n^_`jo|m bf #?^_`jo"   C"6?"@` /2m}ppp,p"8"L$$$$$$$$$$/[$9Y,IY\bf^bf^`j99q}{  9}x9; "#%)379:;<=>?IY[\^cdegw!#%35678:<?LUWXklnqrstuyz|}W\]^_fghoq{Z|`u   552`, $$  v  x z w !        9  C,E {2 }    %gcg#@&"!bb ABHCDKKEFGKKHHIJLMNOP QRS^TUVWXY^ZZ[R\]_>`?a eAAAAAACBCCCCKKKKHKHHHHHHMMMMOQQQQQQTSTTTTWWWWZ[[[[[[aRaAQAQAQBSBSBSBSH^H^CTCTCTCTCTDUDUDUDUKVKVKWKWKWKWKEXEXFYG^G^G^G^KZKZKZVKZH[H[H[CTI\I\I\J]J]J]J]L_L_L_MMMMMMN`OaOPPPHPEXXEXXMCTPCTH[J]L_OaX[ll'mk(rr)*+nrsrj,umqlnurrnrrror-kms./qrrqprpoorv0~yzz{{x{6~~||{{yy7x8||wz9:o{;m<mnzq~tt=wo{o{KZJ]N`N`N`CTOacchihi geErWXj23z4z5ww~~}}1ffddd$ jlrosroorvy{{{QP*G*:5DKTWVH9>=RJ<O34%7L  F r&   @ASMsI rrrr          rrrr r&               %%%     & 'h\ (ZX-'' (]Y[ -/+mttU"0,ttt!tt"tt"#$"jt`tt#tt,t1""t"fqgp!ttt$tck'"d.tttt).).e'"   s?Nr^n_0o22ltt2a22#bi;CBE86'(-/+"t"$t,t1;   "?DS2UWBY^EccKmmLstMwwOyyP{{QRjq'))++--//113HJZ irt'TUV]_bhmns W[]beiloqx{{}}ideoromnDFLTlatn$ ` `դ'ח%חplugins/limit-login-attempts-reloaded/assets/css/fonts/CoFoSans-Bold.woff000064400000146024147176754540022557 0ustar00wOFFBASE˸>P/;FFTM\GDEFXt$&GPOSL$I GSUB E*,vOS/2$W`bt!cmapd cvt 4dfpgm ` gaspPglyf<~(^?head66"xhhea!$mhmtx| 0lulocaqE@ maxp  named'&zpost0 mAJprep}woA _<ח%ח,xc`d``>k)Yu"Ȁ S(8wKxc`af X ( d͟q=b``>(0$iR`5 xڕYlU9oG Җ[ZJ R+R6ʠ(IP""*Ox1C !A1ȃ6XsƽgG5$\/>i;&wXc9Dl4}pf;ش4_u3Cp3&ey_6r_`y3&>1F#kyAx*\ṙfS>%v'_l&iڏ-JE 8 2`ӊkl15?fb:U)9M;&2}k[<&;'>GʝP=u{ҏqjvTTtuZװX; "5B+H^4'R*H11=/i-*9a~xi;XN5{ c˧$ϓK<)1 {43~fDgTO1N>%nqb!gBށ^ `G]qLws?(7-95Ry~A1#?Zۿ3=O6bduĀGuGu`m4<9 Ձ*/qzM w=ny} 5j˨A2؉f'swO\_l)ݎmv~ߵj1!EvLDr%ی*DkKkfaqJx2YflY(nM|UTUIWϚcY!V:Z1:I[گSu@O׳ ިw꽺ECv=<خ~?_/OH%KKKH[ $j82us@&ʹN~1(ef y_Zj6C5:iYAj~xia͉>tv]c7Ǻ$4:ڰ $*yJoW{3CCC\{v+ܥn;qɮ<n u~uNt;'cΗNSlq69O8˝r';1Nth0:t4 M t|}wAwO?N|ә9mؚتó?YQr9'Z C1L4#a\\¥&xer$jcq??Ha"1FCWs גdISids=9Lg7p#71e0[cs۹;{gESB) T"yv]vm}fZ|Aڅ, ᱊7xE%L^u`QTӶe,Ycߡh2GXm4sԋ8/~OqVg;,2*6S[z^b/Wxl:YVEX HAQ*$,,xڭVisV$NBuyij?B0`B,.JPZ)v}~͕ig7~Z}M I;Ôa|ϻ:zw JgVvt٢0:2Q0:o6! "!S(M{Us; ہM%ʨ"IIqV5f>oNbA FIF#+ "vpe=b ^;tiLp?$3r($$ ~_D~%zODw'k" o ts'#Xv(h+L1+bƔ?$/94;9u}7f2%k' ?>ex[GɞP/'2,Gɘ 3eXMzI٢멉S^eeX/B;OMflUԍ(3]~@!Mii5s:%.xEf4Tk7HrzLCoVI ֟U1Gfl&gg?d.b;H8yldK6V_A&D$M߄RR0%呱7MSj^wi M9)o`9Ә1\%gl]@|١E,gTeJr,RIyT2mX (Q!C% :TC*˯{]-#K>YJr>,G+*|dVsEC}"O㣸*29h82J^c@+96*DKI\!ã9WgǍ`N4zcO7d5d."ˈ/;:tEUZ/*UX*h"wzlbuELi..~[f B^WBzڋǢA9 }s+xYa=ͬdχ.lyR{(]/Jzq3^lG^}'KX̲JXh .m`D.Gh[q#GTNෝnPM~eYCjnh50|}"綢jK]E=f9(K*zfK+:vkb>vKMb|9- 1 s8_˘ŏO5 ]EW!Z5y |ʆyDq;R SǞ dZК-aaǜ_0a0Asgs_37a1A`9 :aeEGi>m}-t?ᰉn?AԈ?iԟF_j4bCE7GG|5b1z: xrT8rEvMfxcp"(b##c_Ɲ  ؜6J21hX[8ؙ8 l-6qV0i7&N i7y .U;#68tDldNq٨h``dqH)JL,esck3"#vy@^^&'MZ!mH)yq"E|K), ¯(1ŴbYQUTyUxhǪ%U +ʀW)'rWE՚jKVNUW[1 .1h hڃAO^MQjPUOquB^Sk@W|TӫM3[m5i6=Thj53ZtnYn^^_ /VT=7-!>ڜXTNMn%e@2 Cp^/+#;Mxin(n6$L$S)`7|6L31S}q#8Ҙ-ĢD-M#+ɪYkجm55/59p%p<o>lcx6Mc3MڒS;nڷw-C>ǸcqF&Ђ8i!g9\qn9ߝW{uoޞvC=>O3yY^ zǼsMuu5O_ov{=v:*::;>wtVvv~@ ڀ= Lw~wۺt_ tF\H !cHl!=WDO>H -A cDp)x Z{D~2C~*L3‚6l“delTP @u4fèb:̊aư)l[Ŷ Nĩ8 p70}8çe|_1}d"H09xڤ `Ǖ0\==94f44cq!6ⴍcG`;:$N8\f$|&&fl8^Uw I5U^""Y;&!.<Ɯ>_/Uu"-PvS bg:?e]vx*8Sl!ߒyYM|6 K`&杲^ @EaMQy&)N4j'Q*ajK;L&%-ܥgne gs1ɾ2rW9(Ӆw˿5|m~n~W^y6#E#(!թDUeEa:/}K8G`NXMaF໣@OEJ*"6Z~>z7 l)ػ [o FJV&^*,C+Vl4]WXuOG=R8岀$DO?%fR$zv*,kБD'4Χ0' n0S n El| {LȣSXcPRSMƒA'Rq:,n ?O 䢄=PPM Hb&i}ScCE0 9igw{6nYv-]F]@+͋ԆUkWZ'2f2W] ۇkjjkjk`G*"΀T&r } 5$^wddO't/owwtT) ! tg?SOS$bn_<( q06,5Q8Y 5U(ݵ~f7d=d"^2SD|ntc+Rܺ1|~Tp` fR/!'̗vv>f=cΚ軙 _U ?mZ.V[q氣rN=} $ Ua H j҄?op*DOddIyޚi%E`T#: L Aa EaEp(E%+ ` MGo<6zwϚgΝO(xX-o?&v{uv0 )yn;f0/D4a&**)u{]/ ڄٴ8#isv̉STSzkXT[6tߪpb`QS̶{4`(p*g*숈I jIRD N\ ޻|ֽ!m#pd%QAe ,S.;r$bp$ T']/ g.dC=766feVk3g̙ x1MC-i[Qwvڭg`4Fģxe4pK 5iaa#a5:" :qX];lY zթg 9y3'{\Lt7u1nOfhm߹jWEKfU& P~㳔^K'ا סO \jH%}ڇ ӬMưC/4f/2t;ǿ}Q^rXhdz' =+vCO4#v uL}qd}cx)v7sg 2wh-*"Hq$"C(ra}%t;|of^d x K-fw-%>d!>ᤠu%TfPh7kgy@CQyXeta$a-1b%", 'zQ72҅ׯ߲zhy0VxԤ*2DF#I2P2Ozġ>;RW ~6TIvT+sV;G`dK\d$নs'S Sm)_w*8Y {4`xC GVJI`UvrQpKx}ǜ=Kjv>?oFڵ}#s+U}l㛷T߰-Qӧ.smҒ^`R8WOXpL͗%-Wf z +%=?\|)>LQ ")Aͬosja6ߝ_Wy+~q<~Kړ6Lnמ/e^<ƖǏz&\D%%D3a{S dr`ṕ pDu0>C"iX'7y^z[Ϸ3e7}!e@f 0$ARkRhӟOӯffxmuM)$֫돎"Jܮ"dN\QHdr}5˔={?ܛc׺u;v[KM^c'T /:ڑܮrݚonMI*}JP5K=̱c[}6Yn')$. dnɋ nPq<-!TTy( #WџrPyJb1:+'FHҩPWmCkGΗ?Uz%D% C ˖5!d7Im>)&TVX:aH&Osq8#ɷe`wt#\0ncO'BNto~C7 ) -Tas4582x ;Nq _QCU5%K}@E僦M;nrim5Mǖ wk+~˶lxՖKS">_c]dxjN671Yş,ǽ4.v҂pǏ_z_p`VNpJgiS=he \c^ԓzflfCg$ _K87鑔>A1LlS:Έ0Kt.F`.O?$c4 =Γg<΃w@-cfE³W&uXl̤]L:(Gds/_:w?]I{/\N&S08 `1(4RuPGO>3yF3|M0ލ~|"I35qtT# JL؄w4]Bsnzꞻ3acwAǀ10WliEĉ"6%tlu}V8SF=z;!xH뿀,UJ %{d,"jjKosG}zT9gxBDwIEBiB< RR);vT,$vI8өSF@mW-^j`7ҭ}+:v;\?7!cFEl *a9!H`2Ba=zqUHjEt8Bp8 pv'@GPN7| pЌ{ʍ֢y 9UsSNJ/f-K\{ld20me{ym-$+ @Ԡ̮ͅza/P:8 %]MCU0z+MDb̏(a OMwN_=ޘt aM?}jT:p`y ؘ(c"?c|B]a(eeh9GK}=33y?"Q,;Pl[异 8Ƀ6 kVHf`l{@tVLA=ˑ4QT,]9Oޝyhz1C`ѡYf]ݏ*_uIGO\'ϝ'N|p0n! |FTm2|AYr>Nd js g;y$ߙSQxƿʙߡ;}&}g'BTj̆a^$z3, !W~͍L ̍ߊY`6oQ~eҦh Ѧ=+ߺm}-3-Y-} mmbʯqAJeqA1AZckd0*z[}ד4(ǰ2u'jSg |91Geߪjۺn@rs,efE2pNWB}%x{C0`YxAБI-@*-jA΃P% \ 6G.YXڜS˶۝KLlk;&Gr>wk!E9;g\4:Z ٙZc& )NUWAc.V}U::Fh;u)N9M#< ۋO}ޝ&ٴwP,4UWWW7EzGކm;Lggc{vdjmA~͋1^njn.Ada@*)BH4.& -'B_Q oį{׿]w=qŪUt0j|~\2FՁ6CH=&ӞG̮K٘@ߧN%\.mur,tSO'׃z e`$|Uy,gCjh"ȃe67D s K<ߺ|BWW&z//$[S;^U -_XeHkϻ^"@Azhӊ]ڳW4*7l_U5wW߶~AgtgwJue^<VTAҴ~ 7F%=~18(E'YmBJhĊ7β pAyWK \[F~p.~/bb{x.xjBM-2Tgז;xOTWRQh7v3EE )'/f4e408_PdUj#WS 9" dE0?{Gmg83J4rWA?hb !mȐ0ߍQyy{Etѩ1u\wbD5tS|ۤ|(ՠ.O a\.:ð g-g8@0IS+E}3RS]^2tL _ÝiL8_Հ$[ -cۗͿ~]OϺ{ΦeUE@ZP gY[H^Iz6uE2,B <.c S8pTAoNb:,_he|fXt2S'aJ)!/5 ¯dO){G{K#sa:pXP`bVZQIۀga_[mmK{ns8~!HI9xO$:-|ٹq CseR3mD1OYl7(n 5lNzy,AQ݂&iA}/˧tsKPL'Shy>?(esWzoc4 WyEQRy>7Fҧ#}ݽjOJBG Gn t8IND̕" icsKO:$Z,|*$k"4Jgz ڨXh;]YLd-Rb?Juk0HY씹.EzdۯHC$ y8̀量16Eaʭ&B's @]ӽxqKp$ % U ֧" LݬTP傫dQPn2KfɁMbiSNb̓9q̉5Ǐ>1Z_s)p>i KٿKDxXe ?'Y*\x3">Wu3T{Y{㦉9<{fi#zOZS6Lay Af P *\~h^%6:+N.A.;yM]wP ųgzNTX6mBam,[b !B,ݜLl`擵i߬Ii_M紏vǿTK.Q-xl!o.0A0Vm0f# 5DY-^%~p{\J'qeݦrFOsIlDW{ a,fSzțK7_cYJ>;zо</66>oy.g1xyą21XRُG"\GdzLM~FӯZh!'k^r.5]zuI_œ<ӾYk|)}6y$-L[HEZļ3?LHπx29Md8TԉB4P}^J_Szc 4"9|*%=׽|m)s^}E82]Nyy3޸.0$M;ܦ(p#F6i7=9ɝ8-8jq1sTz)JC|Lw80 bR k,v?pH Olٲ-/U&㪯9㰻4AMSe-S,lA l?ب"{cel!f.Rlǫu vmOhMD k$菶k,3n̒)~'dr..Os?-mR_UB.&4械RT$RULȤ}T1+[ͺ.BF4BH tW*m Ɉ$HKHhӵbkv&Z41Pw֤ڦr46p1GOk6:RTeJvbpӚ5.Ǻ\F lYb/YReg悾6W&TeF#eƳsj+uszH x@Q@PusUU$ K]H-Yb9*NĽe:B%=gStl :Ril %ycI/ly^)5ъ@& '31N#9P9W>I|{~߀Ifl/Ma:Aqis/|-#x}TN~8+s>eKnb YLI+M>fvr\%X\=_Ӄ"?dKdj&O䌑dRs9'XlK=T/JS;1 3ځXjPAOjWZ&IϹ: #3ViѤi]ZdCgd 51}T"ǒAps{osHϙoj m"(܎{87@=RB$RZD/*hEkJ>j3x-4k k]Цgk M <.++)[@J䑻~qBM ¾$}x%v]Ň4&I{*I PtN>=g:ER?s8G9N$WPkNJAt0}m0h\6ΫXLѡ@OI䤖1OiCJ|)" } d$!v4ը"BPC/ xxyܩaF>GlfFkj`NGCtNW^fU5fLER4YidAe`NtEknuZw&8p?Ϗj ݔ2;#JV z=S<#ryW=ҪɞuL̪P|y E.3QΩ;Ye}Aui{oERvq U,bt 4 g*IJOЉFJu93:J0mY2PIb*[&@ XVHMR)kuU]mU:+"\K t# 3|墒^~ݴ-2ٶeT%}zoqf ^nLzj|N9KeNƪU42KW-$С3]ro)EiߡI#r^[-և_GuȟyD4TQ27;(,AɉLH3x0 XviUCL{@i\uRlOu⪫=ƌ%LmNJKybw<[%Uw |ĝWX/[&-8$~M?4tPSj-l=fMDCb[~wҶk+2'2B'ۘM^cU\xq# h=A-a:'JZ=SF8hD8%`ӥSGyf4G $S?Yj>3o f}4[[96sodL&y=Sp2uy/f Z"rE"̳,+{^S໑v+_2R4a!zJqbGq?TU=A K-f1R`TK@,DI XL /.55,y22חvҷ 64 ޖ裙Si%EJ5:){xyߡބ,b(w ꜨFU\c[QIPFn42eݐ$ʅ[Q656pU]M4ۓi҇RpkC*'D<7&#X(O$VpAs][|^\`7ON[O>aLP`U]M栒|7g!4#G!,XM*k5GY'yiT|Ɲ,5YFh0c.>}[y;:ߎeEY-*q+7wFGi1U_˞]#9nϢ\s#?5VXݫ6|tSIR#"dqt=3^zBm,yXBV#,J#TbBg (f¡p"_(gFZn"(5um4hCW|6QiV]! a=I aKrӹPIy"Փ $#XaBܰk~/[|= ޾b+O'=G|}чf>| Y-fa a@ykw5sE<" `v'zMC2U3 + OX[-F`g4).>Izx_늵9_՚s<Ev4fbݝ;&/e qD%@^d&"aWienz>&Ƙq9u3k_صd8u8?2·8b/Rڻ'+o(~)x #./1b#Rnl >uܲ+& n>=[F]+-"t2[5Y:*(_`q/L;o)~~i#d5~j('3ɭ_mϩ c^^) &8YHR pV?SO^gRU=nJ|^[ 2)G@.F4c(ڱ|RԲ]A5&rhʂ@~@i_*?6b,2Lo Jʚc%ڥN/4Wˠ (nzѦ$&X*覽S /Z;MqeUv ^v#]֏=Q*Ҝݲif!xjW)xV)sOHU*%fA҉$yT$e`]mnS$v .վĨPE}\8R49dyaukvON׵նڊmvCoimnXJJ,'Wo;ZWXvEo+.J d s%^0Z:KT"EBPIƺ 1ݱOCJ:y Y) Pc +wDZ`I>FM7) F̨ig``Zi)3BLW۽bs~a(q ~V^a`_o~ʤAC ONRP ׉C7#Gvv:t$sF>UKW)PJh|>N9'éGz h"kIg{Xs1xŖH##7ޠ{.џ̣_'na)msZVLHgh"mJtXO,ifJ^xPF qWTaJ.veY}Yұ >uo9zp뭁DeTe5;$Ê={s-Eݧؘ^hcRxJ9fu Y-' A@yi56D $&rmcZHGiUxf,cEG9g^X}::vz%kƗYw7Ǵ'KȓU?"ɑ~E+Hqey{z>]`y; az|Za*j VIGM(AE}eao#MhTvo Ιj L{ݹ=/M[*녭44|ݰ)t-{ޓTy: Yuc"eV@2 tFI鬺";!N] T*`Y*U/oZG2?^[9X@A2+<D^:h0φ8;Uô`:,ꗁ"DC{ζwRzӖ}/?4g*? n?oA;/b;MɟzLA=\垑§p>/\b,c+a.v8;'kH.t& §~qc4'У*[!wKB[vJMq@𜐅ɩĜ);s3:g4''޶|P"Pv%ݭSs?2dO"WZd8ή'5EE>,iXAŴLFVk(admnhj@;VA5.-ˬ9Jݴ]P"OPg{y嶵Kg?qd=alՒlQF ,m xc +zE2$p`I2d++fD%`6b.&n}۞{ٙc?v jz!YlS)E 4:Jffу;YF0dEnXR/prjw! O~Ud3hT@Z-!_i2hy:xbY>?f1uærjkxMik~׌۷mrM#P8ɋ쎃P/QAh$8"',n ̛G|~/Swަo+lQFn&RNL*-,O6;&tW_wK'Y޲/WJzYšm]][zzsZ,g^Gak:ZRhڹ"= 'X(b]ˉJ>' ~YkN]9gHnԶ$OccMR3Rku7[Ayg6ؘwAԞ1iz=_oqw7:©/լ(7=gξ4^ 3_VX##ce=al\dT!T?XO"[n&įd$f2ԋ7D2Q.([ o dԄ " (:X "\`.J*!fN @y,s8"<d:[aV2].1/>lyX$\wV4y&~+\/ Y`[Le F*iU(wWhKlf>sZϊ/,KyNY|O횻gI3c?Òݷ͟PröC}ϝߦ=8SAvA/:B%Phq`I)R(XBx)X';QJg)Aqύ@Sa$I2D0LеMКpcg4㶱mi;;'^m 47hMjр;׭۾}ݺ Q٪OHp25]^aI+jaOŅVEƶƠTjb}i02v?se-?w:s5'~4owG*(Y2BơkYlViY e- s(7 R^][@ 0Śȝ{#]7̮[\w]Һmjn;=޷tiΨ7M*v|4!cG.ҋߧ-{ߧ}J,q>e.&"}+<-{Ρ^lNOMt"CNWSas󠵕.{^G"Y qwprDsD܊UbI4HT<y1X$I ť@(=yO{.Ңomӣ}eNg.qj.C`Su6tU9vm9ML Pom}pSxbz[7ϯ3& .{ce%LEȗ1-ϕhQdՕLY+jP\EruM ֓ڤ½k6lVDnٲy6}r\t{ᒞdݼEJ"ѨdoN=Ɏ^Io|_:}7yVfiMN@~Z,(V YIôu։ps}ܞK/;Eۙ+/&+x ː9y;~:Sea?ywa[A^?M jwXM==XĮPn ݣ@Wf+2c治P'@2 iB<3: 쳙~Uedz_kxri+{=`99xO;wҚ}zGIEc$ۄo*g9KR=xFR +FA y6-Y(|KEBw]OHS}i*U,cJPGq}+"]xF{4$+,N}@_$aښNN_s?uoJj{4Ci ቗kY޾\W+[|…̏((Y3;26~r_6t' @ku=4(l'TEYUP-F(I(Ԣ]G*TQ"@_68Sۖ^<1m΋z>FGpރrS"QoxAC2m4ܴr˭%TY[}}eu,Z3ppMw *w^@cA ( jA|+Pj)L7P0_9қb4ؽE^4iB+Bs ,w9sͭT 6^|ypVذ+[ f̽lזVxha͂:d" Gl * tfOܹ-!7|wY@5`q&)[޹*2#ﰃY*BJT,J Fjȫ6J39[ʥ*=<{U?l]W }0(ǤS[NV@cYje8ɧ遙33yY6~U#x>&7kp^C r{~cJssP@:џ[1:ǜ㣬Cdr$9}sOYA|G@tCpn?94@;a~:J$^z,-ܮ[l>dM \#[PX<)dwp?T3a:=tia%tvJv-JoeЊ;׾s欥Kv 51ʓ~HVˑ;U~JHǍ7ȲgQCie"TqWTLӝCk:>}@-C ,ۀ16ĎW#βfNI[;v6:i~iFM4]I{憗{y_ ׏{<h*?jv0i&F97NmxwM WѬxe㓏E*=e.fqf)}2~K-i+#jfsȵYUZhw0?NdL BQV4YjWׅۀCQq? <~*Z{n* l( /ʀ]{[ g=tG c?˱D<^UV^3Fe0_ZA,9+Q C,@?;؋05{d#r)~ ҄]7l'QN/ݎlݺN5u !Vg|S؞{ yY\;gGF6\\a/#6Wlɺ35 iأ|[+aoiB񮱄p]%;->j΄-,Z0cMցSS(޳p7,dqb7i7I3k+~o(KXVΨ-'/77Y<.uXEsų`|ߚG2ytW?OrOw%O111Ncq |"7q{+ 4?%۝.<`R-:23)? a;` qg +0pnsv-&˼p2˿xs2aEbۧH2vEq#|hsMɏ_HPHq97G 8Ά9㱅e7R ؼnJuxc*&qMy# &ǕG9.&d x%@9NCNC#p6M.#*0Ld67YBuߞlP.b-X shRM4Sl~kO\bα/Zw?I қZ+.l~~M콐́q2|r#6w `pZp_=rǏd:gUQ%u 3"go@!&r"O`º¾P(JIJ3KY-^윝f sEMMh*BiC{ 8.Fc wHϑi3>E=Nݧ F{|'f<4!x۬JS D!3L(Ȁt *N:Ҕ2- O5PQdT!h44U`Na3MnZnP0#k9>!`B-=M[߯a& b,vnΦ3Xx3|G`~oVRrpd ~8/?Pʀ Y#"P .ek_ &6810aζZnxp}xKKssKKK$"_J)W*JV7ջ .PO 9Ȟͩw%;%TtL/-Jul*]ݢh{vf4m`^J f(KJu T23QcZPRD‡H}Q4)`; |<^4}?e(|sp 8 (|gplA?"S!$S”> Dp*1<ſ/N>>"/ӉN.M[޲ xg}]\Vv.SmI pwu՗Xf|qLeshm¡ȇBivo:=V~UcݓМ8" f%q|b(@>OBHC3^ #߇s7v*EB%.였) {&suQo?$aԴ#W~ O&lS[dw! y_A1ʲdtp69+EiYl?Q D>/$|{ecUpy HD}b,y~¥P:B-+`䋥Й9 d,Xԭ*׎M }a٧C铫7ּ+ މ-G^M(eGWo P|RM҄G*#(8o/KªW^$P(vRT1b6GaRd6r('(dmq'gNmA-dr3c%_,5@f!萜AD;>w-Z-Z֜S񂃻?=4P#ÈC3v4wT՝QM{իG kW};Oq]XgaT>3'.(Z+OpIoEiV67n|.9MNvI2рL#޸l3;b.c!i7hi|% jGntͣ;']^B?:Q th{{9:FNG1G_WaxLdma:BZF8P8BB[m+G>:8@}|*x1Zș33~[*DūĞN՘Fa{&:)fPO\`@hMzS?wjkj/8&_W@ezTeh)r0xL$7%snf}CH(]$MexpyR\U7O2Q2NϮ92t"=UH9W)A2w4+lL FdU)'ӘZS u Gc*wÍVCFy܆=q\/Ԓq5<B7 -O uP{~x<}8}P 2Ǟ6n?>Pa-}HҘ?$շx9]_c1{d;grH O`܇ߋ`v/{Ga$]@G6y# +B$57LJ> 366}: 3 N-j"qvL]>wٳE]$>"DA݅ 5$mK}3l:=]o ]T;B 7)T C?'+~ ۋ;x4d^}뎱[bǦ. Q;њUe!P |b aCW1ﺪEdNfzO:zsvG:>GBH6mѢ/x(yx!ùаw;fA~^c1en~T711s###GclhmP[ Sw&66llkXS-н6,f;'YJ4UfdRH Cs3YQ^V,&fRrqɀeh I͝K\0+ݬhn.+to1yʼTPbay^#kP a\%hѢmFIeyJ1@i7` uvG 55M= >ʰ {_Οw#5eW2d |^.!#MO($b0EdUZn IΒ7ވX_Ă-\$C/mav7T^Ϥc^|$03]]ARk+"U@\:>qJ%"P4EcϦAu079TW\44&_v#7\]ZsdXt6'fCW@oPv#<"[5:#Yo8!JnbcXYYDB 2(pH거&V=`(ΩNxƍ oЉ[/SYj.Y#N6zsrs} na]/M$-^Хu^o JPWڟ 8'FM"!+i[}E+?p]sX=n{a"0ch[uYͩAP}ybJD7!}!0c`a5caӢdӢ4EOYpɤ닸+B_W/[(Xb [)\6 jfʔ+2ڀ:49ɐi k:T6ohc0cv J_kşSҢMT.J82u>^#gNs w6G$˄^њiKwO=BgsO0o LRn6̒2=7G8g(E‚*3= ,^S^hV{1-C,.~,Єݨׄ#4I,\.3dg^8aHJmO_aNcsy)o]B\Q^TN[{لֳ&45k,dWUV%%=qy)u+1>FeIA)șF(MZ0,kv61?[lsПxRt'lIQ$+۲t,4a~m4 /S$Fcbk$3k$>;`ȭø|]|;X1Ȗ/9'^Y|>Yײ=L ;xuCCuucG n((Z)z_œPy|\)*%d;]7Soe,7 1h n|ԛL)/NwkvW/×KLq Ԣw_DboW(6橱c+p6l`~[_T, !Ks qGr,uh?zHj IgPA|@S,;gQy,ZBYM\zkgQ=F\e#̫ ѡŝkƭ&7w,ޓط;qf[Ⱶ8MGӯ +axϹl̻1g&rx>ǥ{ںQipȥpo@ZN1 n&% 7SҞz<(@B4``/ C14)x |`IM.M]6OKs3p\gwa5p/ !p+v`Dۋڃ8>r=sg$Z1[] L`<};sZ=oBu 15anw3@8`6puӕ@~,>,a^%f-OIk,Nzl6f@uJש䰴P7e=u CLAx̊38">2 :^c7j|+`77T"6L`1&_5.90e硾o"(/yʎ2nt8\Yr0/8\Oc P+{j89ݼlxs찺 %%zZ#./]mlH*ŔU1/R!Z;mFx ^D !9gcab155]Jp]zg$Ѹt&crZ6g2Wf|-b&}dzA"bd)}[Q;aw;`ӗVJ?:ks\8/-x\.]ǝ>zamKqy9gk60o.7=9>H_vl9?l2̬vW9{ONlZj5]ۗu'\U2|QcD-C\F! ~?,t %V^iQ^@t{F%/q.[`;\S5XX J~aL [KnK*iuuuuե~Bz)Ԗu)|_hCS{MعO;c'_*;T[{v~_^Xxd6AXq5]ʔV7[޷zmw}F%YH_yTU1NU7 k$a4e0$G0 fUIv&vxoy&?(Tar0dtZO(}D60f6c4 JGU=0Rc_<Ì:w]#T!Uګ acxkP5gz ]=]сB/WuM:ym* zeb;p +  V@hXuN5VN XedpgG_Zw;Itq'YqFymoٿqfK{`-і}sk'<#fd4DV81xglߊy >Juh yҨQf",7mp>~K^L>#<&=s;s*t_Ŝ[33(MOM9 6̟0ApM#8/3q~ټgK^p淝lX$>+3Jf]"jqkygҁ2` ΋l?]ӳ-r/͛7>2) !H%M9ognw[[: Yo c4o9O7at1 wN}ڐwyp\ȌSзRG dWOdӤK<1ٕuW:jő;O- o;vPyr~CmMCck*-u+JU{|.x=>o'Ŧ )n'<7pg8ߪM3c(;ZlݚH=;8{N1l3y O|&8 gýX%P.mgQH#<(A$Ҕa <@}q6tqS+N4 ۝e5{n6'aNlAu !$L$CaH:EIr(uDN$patbXI$(Zf;OnKɣ ^p\,ZW p)΅Fag( 4Jg\w=1 7'9bs+'PJyo ؄O`0g\8#G1qIy ض$\pRSINI7D6WMs^@} =)HAMS8mēEJ=EHX"Ɣ5qQڲ[!#gB"B`dKjĮIXr8#XCKt1޻).>b?}qį)^SлޱpV#=pC#V C9( @pK T"CD0ݜHƵ`m`h4yM ktff!}G 7""[ ,Fn #8ЭL CyS=pP S_Om5ŹQ'IQ*ke2eX^tp`/,>^K5!xz_>pQN,)Is]P'PܳbKUUTj[X].r4TjXh-kCZ`wz)!)mwѮLmBN5;BGNb!(xڵNAƿm˟+F -5H %$ƫMdwZ'0>773{vYO`!j85 Togq'ubx[O8pLe^$a+콮]|6b[K3xh4#Fж9S*ֺ#[,I;{;aEЕsmqAE셮/Ek~0+bsȉ8QԗB"qv{o8>cmM&*jx}e`ﹱefk,,r$MZ;nRYJdqm+۝&~;;s%eD`bC5TK XzjFjq4&DDiZViZVi Z֢iZ֣iڐ6iڔ6i ڒi+jYdCajE)F[6-mG#)AmNI)4:iMͤY3B]Mv9ͥy;A{^4ХtN%A'бt>]M16Jt<Et L?/t ]OOӓtRN>z\zh=GW^%2#Lӫ7M )Khr@ D*bi -aڗ. :1uGo/01a"&a2"VXb55&u.b#lM)6[[ZhEQİ5؎>O=v#6#LTtbcD7c',]ЅnFv?/>솹ݱ^B/胋ȠY,"^ sʨ`1X}8`Cq8Ghcq7#zޥCz> 8'dBTqY8\q.ER\qUZ\qnMV܆q]^܇CxQ<SxY,sx/E ^kxoM{xC| >g_K| w?G ~/w?wp r<븞x <'d^Wxe^Wxu^;1nzk zxm^x}ހ7xcބ7xsނfފ~6;V:#oo;q;'~SJ:Ny ONy3y̻pwl]ysy{9Ž>vygq8}%.s/a^~?A|0‡a|8GQ|4q|<'I|2§i|:gY|6y|>_E|1_—e|9_WU|5_u|=7M|3·m|;w]|7}|??C0?c8?OS4?2~E~_WU~_7M~w]~/Xg[ָhEc@*],)xo]RJBwSZb2 .iHW}}[_J|>=j锟OK?U& 0d5;jI醫5]% SNeNMʌ)@J4L5W}T t>7U씑de$z$Y=uVم ªonjfҕ)ia-WOINI o59/0S3yL>4,`;&όq,oA;KiV%I+TT0@CQCCCQKnURm\FZv`n\0_v=z*zzd,KKEImO1VU1`qEn9F ?UGTI~]Zj\mhXU4"EmZmQɗKJyGHT;`i!%usn-eKuC#N炧큹jѧјh\4UVKETYUTD/*!QE%_TE%_TE%_4VS5JK2!5j_X!}xZI%avEW|aAvo,y¼ub0sUb_a(ZE#QQ=%>x-E4$jڢhXt]D4*:ItNڐV>=#21Y,YD,"KEmIQű[Ö-dS>I(^GkU?v;UٜʕǫvoyϫPmK%F[u`: }Rou7|[zW|j@)+*2>7fh3T=i**o ᣆOVe>avÛ;6X mu cN}ǛPV=`~aj־Suʩ?u3>}3K^~4Tmx=E;'JҨH)GCIm+@+a ,j,ܜ^^$mr'Gyw>K7%eG_c=SfzB/YZFowbx{P9.b3ӎ5ƘX&ҙt2Nq:×%1> p}:T FiyRm͐VSpB 0I Ă  s)(o[V ָ(vme\#5,KV\<@k/A{mMߒ/Qv﹣ކvh Zrg!Z+7ope68ݼ= J䠒B[Z6p(4qhGk>i ;U4%d^uqB 7ҕt(dJNV%3>(*zh&hNpa.0\+p# YyX%XwiqzEk#V]*[ffLq`lql#WwI΀*uts 6Dk]'t;` ٟ9Y99{rrM(:M{9Ct^#tzzi/i>V:@ ivзQŕXG}Hu@6&L[R3mZCߡ]F!.ѳgzj e2)ijq\OZlFMSoi|[Dd2ZN+[TKI/le{j|_쿃2`Mt@h2LبV]>",W9Zi8|1 _Y엵>_SrjU#gv^׭L ʃrˣum/nԾUV+9fAC9Z`LJlϲv兗@ SU[-ѫ Չ #5/۰Ion&q?Y}Ҙ5$F~˚V{[kSTֻ#=b7c`B*uQ +>˙Q"py#ţ/Sf2yf]=wL=Wv G׽|C[>DlY+kyG=->ޱryI)8sdc6/Vs?i~%z 9z= ~z>k}o^v fN`#G#ݳf;u{0ݾ=G;ߙ#܄LDZV{sHݎ՛cޜ|=H8r~f\*Ojwv((BÖgnsû\JjK[G!C{9!xU#b2)r)~c~ :Cxf Etu 52,#3ʨ1Fh3:.cǍ1h aqŸj\2feyfYbV5fh6mfE S̚{ɭppppBs1;YitT3-.apppppp5.7YitD3^NappUUE\df5+y}h {/aΨn5aͼ5; W W2rL/k59V8V8I8IPPBMgVZ3h晭bo{ ˅˙95ߔL/i8!Ğ ||22yϚoJkC9j{;Gx2i}:D/Xp5qvO8X?Q8vWkF^k.q)wO@]c7Em{7빇ytk1,z?ӓzfzJso =K<;/K2BUz^7(V[(~LE{E?~ʦ\rA*b:D:LTEGh8Nvܞ;rg>rwɽ>o'_yKrW|~#< O<<GyOY8?'/94~yw?/_ͼ6;8wn8pq1ƸŢ1[!݅| Q,&qdk 622?F?ʨ)QoD^}$fxؘbފɌv%ؔScώ}$ة_v@f z|w$ Qol۶0ΈwFUq7?n1[63/_7\08ax%w}ⳉ%~'&~1vڝwYh5HrGK9V9O7H6݄k *q|)Tb&GɠuWɠn I%?H5Poe3R'iKT)Iɤ.xCP%R`Lb16f:[ʍ9x@d-u]W\o|OHj1z|YhNx{.%)1}y6o]ݍ<"ntsRx{FlVVmvV"A (Gl(TH!]i t!Ys2΢I1([55K-ȳDS.  T@lPN1QGE5P"J1H_H_-㏤LBl bˀiB.V.պ8aG^ {М0ResQVV6yf%PM}G]@KJ@i(-?rAic-| XXv i~+ NC q"CE-\x4fP$X@'(l䞏܋۩-C.r(NaN/rH H0v4B rk-^/F.ˀW,_r X,ˏi2d 0[:A֠N+5 Л?/PVoҀڣ)|~d#Pm-L=~ |u Y^uS< t@'Q8hrA/)>#px@r*.GɕsЧs)- :FqWtE F]]!T[@__vFL)b vF2,@P b 4+p|˨;pA ]^p5Zu(L7"Q@@<  ;Y| ]xPȰ7љ5p,].Kt1z%qT5J().S2,ǀO>,CRd-ޭlllF[[q ؉:@=e%dJpJ 8 p T@$_#p%zJJ'g@ и3g2݃ޒ4zw$>pErϩ'4mOg{ mR 4!ʫiyQ)ǬuF\h~]0ǃ9^ ]gP³y"XlGv@oj^QG ĩ܋c8,.F) CJH2nEVMa=D.;\ґvOQuF=w_P, 3r&Y` Dv/rNazR2@,ɬS'BbvxxGGG$R{ʎ;H@i=(W V9ҊPGvH,ޗ %_TPC&@oDv!m:uUt ^1=JZws3JlgXx*E1p^!6ֶUѺm\$Riln-ڶ|2l 3x(@wExuEu|tl{eA%.ݠzG=9Nf x#74nڇ]Hh}I7y˼*hrÛT~"g{|/*_Eϯ>^ʟJSy 7#w#3yﱼ|>e\ϐF/cqq1ָոǸ1͘m1ˌ/d̾Qyo{<>R*ڵRռ9Rb)A@&[o Z<~k,\\W}&ϵ\eRx$XIe߄1s%Cr2bZ (R5"w i%K5%[%Ov#oyFka F z_›J'.E)_)?7 ̧[5@ujIsSv7r3t x_:,rDS-s-tn9m8ȮFʩ$ZP} lA8Cڷ9WgǟuLPk{jVq󮰦o#?7/T/-FlNV~mF j#,m*<_uS6 fn4qn@}v-޾OzR߻^|'\\q'EѯPmj| < [}VHD)G[JZ2IjVv =u[ߜ\+1h,k.]WQ~xs4!U-=Y2Wk̇6߁RIWQ#Nob%C Ԭ\)D9iR 9( g|ʫT)!Kkl_s>Ov=ʹZ˭QhՆ *,}G@}E>P3fFTWJM"e5HuӴ\œUFtM,dEVwvꗶ \]1#٫sO٣dJ^67Ԧjml.ko FIқ~6]پ|ZWVJH*,R-]㠷rm }Bmy޺%egU;n?ȣFY{f}(B>ۃdkK2J< Jg!Ri1`E0,wY|{n!xǷZKY]LJ/h 7dPKz7=[aY 1aF f? H٨~ ^@Nm{D/wAlTkn5ӥ9?L]>}m-V_NȯPОD~~Lw7̑RP;0k|z5omuLoQ.UH&njxՖP^ -SY=-٫Gάч22o=>rqeڟ(89QP<4ڧa֚h79"Ӻȿmhjq,BSkrlA?M9iteitk$WBThͲ*^x~?צyZ S֨&vB_q#!hC;Z-yClZֲI ߡu[-yk#Hـ]Ld,H]\|㼑>=N7b;MS/ݾ__X|m]nWmE'_v+XU~z\y8 cnqVmnN=z| ?"m]#|VyqbEO}:PQeM$;e}7⨛w%Dw,3/A^kCNR[ccdg=7µH.A_SslM^l") 9wzd-Y>L}9X^ixcy~Yz}TXt+m̝lN3gꠑY5\ +ME9?Zy6۰ݫ rt<UPY7+}Yp͂Fܚ:Ƙ 띛5SlJiB- x6K*λ%KL0SyK"nRR+i֥C",!.hy_Wc {=cK͹j~F_9ݭmGـi;ӭ֎"f@H-|>[9pD6mNOY[ղ~5wrj\po`ϥ{o p.ZT ]cQ~6[\ߞ%׫&~!ש}n[r;sΣkysN~U_V }m}/+v}/5 6ޱ2ʹ0~mZ%S6;9N_}$O^LX#+R)`[뎘jEuPQf4M׆8#3,Ԡ'{4CO=A=\_J 8j>Yo ] I~ uN}ЋS@>ҞRyz/dt;!]dĝMlEc5rr{S&[}js\+<VS!:i8:G=mx:ZKZ㕽OR>/9I܋܏F"\B?O򭼌Wyo d.̔<&7Ē<6`d`a`҅U] դ'ח%חplugins/limit-login-attempts-reloaded/assets/css/fonts/CoFoSans-Bold.woff2000064400000115774147176754540022651 0ustar00wOF2P?FFTML`^d  HV 6$0 ' [\ˑՎv*1?Y#vPWUm*;CWM21Jmvۄb.NBHF6mR\<܂IR h󲎗EusUvh`7٧8zs x:R*L-gtwI65g')i.uttEěʆC8;<3bOrPY=N=aXrWIJR۬_<Tgog$^x?BY MY[ Y]MmuH$pHmؤS C7d*+ hV] 16)T/n]J}ѾĴPcbwKwfY2bo&Tg\M @50)S+eS`i{{;oSDHkkMH"`8@ kIOϕV: Jw@oӣ|+wL٢w ҁ8C2q+A egIo1_&ʌi%矤>LZN,nR>{+߈?=?%[D2uUVIa,Z羟ϦޭZi)iio030/yd̝r2OZ@, +]yj+378ev Nf.&~VIU-- &H Xj`i0qC]1Yl1n9}:o|[npO$ ݓ+%'35X{B F͉Z qx<+NS5S(]wF=66Oo(8B{  E*  ACN|_aDy*0@9cm55˨XE &:8 ucpwB 3v~zܹ2B#T 6m(_k :7Kk-!|~lY¬Յ9뭙Ykґlr ^W T'%Bo(IҤː)K+> qPb%J)WaGwigweW]wmwcO=ko_kzC.jNfqxd F\DbB>nGX /JmRFl>jzTLToCE&7( !Y3%f1D<!Y703ʂ˺gFt$F*jI֑mvN-r=.;gk#3 da,um9e7$!.m^p؆)Nmv ]aL+l~eU]?0f*JDh2]B~Wxmx}ےxo>\|3W2R2~}+k`QgoNvDY~%p[+_8j gO_@pɱܯB0hgq<6ԟؒ>`_Yu. ; sⓠ30;[^?V Z1k-6'13d:@!<0J֕.2Kg`"61_C&ޝt-! Oz I "iuZ !=[yd (}Kpz cq$ ~I!O?;)mae;&*%dP̄0W5tc9&E9lrLW_3)^\6r1쬫Ja6 @|׍]@Rc L UB9i76wݨu^w=. iV JeM=nͤqC {c:SuaY,܆K3f2xUjqT)PGܳ&Ecas5msw>A$lP#<܈%u2^ l9'ޫ0'XnRŶ(M[8ؓbu}in@=r鍱]|Ep̊(08$_l\~!+VhL,IAô ^v0Vx,hjtg|H F6ÁhIl%I;x`8MِJQ$H|@91 "[ Dfrrqxx a\/npC*0j&KN-d!I"AWD4&[ZVQIK[Dޞ2׫Nw0B?F7n]?)VM>8JQu(~k aZ|xNfW"% lRt_a`XOEtQjYۋ ,!ETǾ4,RSW @*6zW^;j4$ G#ח1Gc? 'psV*fW - 3}o6TϹN%B GD걎]DX(?xkt#CO jgxG#uH8z"J'xMux꿾l:78Jf<^yͻ+μ's56yzeVy"e[02{.zoy:7ӈS0-V{)[ ׂ2q'9"}^Kuon-ǡ&t:j19\e8 jv{K-W4)lw %хha⽈q B*M4jS'! +s`uX{`bh'0P_#rQUCS5i!Pl0(Fڣ `\ (i9a$RFa dcՉ#RFb:H*tQn sl>\B#;p¼No_A=h;$LSPmT}(Ȱ7{Ԅ$ m4h( a7IVQ1%!{{L8AQo\R <."tN[m>Yir2 ԁn"֯%rHXcʃIĖ9.ODddxe0 3`X 0=Pa|,hyz"62D.l`0 n%^*G )cQ2FA`Ud &k2:;<%v'wz2Z@LqTϖ!>ھMO[!NI.} S'C8/6~| pVܳL'Pmzǿ))Í[0oA UNIf-Iڐh<ALojZhd\l& 0pO#,IÍ3CIWb[P )?MYJ=SA 8e<~˔C9|]E :mzDf;TtNw҇ڋSyMVJUz }֓=5Uk[f(X3t:lS>CINd%eqjE:d#^V=l;vkr̦īz qlT \هp&o5f4c1ܰUAW8&-VI=dJ4F  Jd85'gzö?%/l"{phBc:uDآ!Y3?OTF$L7D?Fdr&4L>O/v*ghI+@}N4(<,X9& lK/cw]"ݏehJxE|M"ƌZtL$:^ZEum9{D|E J.֜/鲤m6\^E&WL{jV0Ii)dcq+K! 랻ϹF˴,N\6(DCũ^$ Ƌ, 9dѢl;I@ 4:m.8+:5'O6 @Oi ʾgcK?l|F2 ZVzdASe8 &jL/R_{,T*lE 4]Λ-1qz#N/Ħ rRgamdr b㳫\E >|E͕'eܠb2CUH|t=Sj#֪ ˕SmA Ccw*(OW]~<@x9mr ղf)2Ot,_G0bନtHʹRlڴ$~"ʼnl: B-Rg8o\lx"{W⢒ҾQڀ%naB综ψjΫ4uoZ8 V;]UO@Ȉ@嫮BZYȠE(Ovb|Jv}PpoO_Gba+E-0 yK rCaLڣXC (pYIӨ@g& ꅯu& u?2>x=^V`3ƭpG^Ũͣ\3khA(cF1 Hع4AC˨] -{kp!f!Bm!6Ql# T7>A 4,KJtnonPekBld}./jDm_ւ;[R訶g'YYx e/k /6[9jf@ØFLT1j_:0TՑN,&u!8j9i[fG2e;Rl+0#2R[leRne|r̯D۳yxg$I>'̎6;[]-HZy>,$Ot' 7!H~Y?̏mg!t<Əvj oH <Սvfy x{=S:~}G?K9]PDQ1d hXN^7/', kQk7+=Ei=OՓb<|̛2'xeS|x 9I|"gFF]G=EE#Yh#ڎC@ah|MZٹ3n L~miСڠչz&bJ\v W]aP,O>FֹTr*5jRVSѷ1 Y]@jV̞Gļy}6P ;NlJ_2V^WuTZYUTj.Y͵QgMvc^>Wd''Ӝ8S'$-pL̵fLH-|P!e"Nlh׃ЈjxIl 776bzQܬ<.J,:=!jiEEwUDbʪ5W"%˅Uf2B f`Q[Yr+\b(pgSC(b I636!ApoY{{W/id7{}c~~,B -/bqpH.ׯKI[Ce^Pw ᇐn"3]T_=C)댮Xek\ s! c}u'&ÖAW0 ̦w3z" \]:VDbDUx'qdaY-Qg>XaBx}JVQ7Q\< f_R?KGFY \?zh0/`J!M;A.'lJg58z4(9!/głc,3eof,Țo?.O=M @D"ME@0$n;FD7042~ݹLSjAuwؾ'#w*:MoCygocD$$G30,'HT AdХ JORQМ5{Τƺ^`DFBU [a"3 U,\j TЪ  GuyzZ@^{5(yEj%IiӈЋ"=AXB8<|ET8.lޢHWqP(L&  OQ8шܺ!E:[1,ygoKgH3DT}9Zlݫ_ʵ:´_ 䂗~ǖ2\~ \r\{\3ύwO|<{8?Wct[v"`0>ץ.#:2F..ft#(Y܍;q?譞6׸ҥ_}l&,*UL#٠BL sγ\0lTDl`Z4̚_w,)֤TrGu=KqmwuRYq0M}! _iLZ}u 9Ga\Uѿ]'&.!)%-#߀A9y6Vל~2c[iO愧? 9<ɐeBIըS!d4kբMNݺkȠa#+7^T (gwʌm ԧ"hbMp9˟L :yGq"ˑG'bБBE# e$ *Bf#BOR>vԒZ"ԸFs Ŕ,hG=N&Z }" ݨ0Q?C Txv!1n2BGi"Ix1Sa)yTŚVNn;w^J}X.%C{fZ5wټ ;k85o |KRRdC Jpa54 m%g27\f%ju {OIïCrРKN\]+&6 չZсG0uU=\:Z&[o u:M;h &/80^B9D HSZ"E!,+"W`CdMq\/B"7M"!rWq!$,(8mi pN~)nn“u.}|Qtm6AMNު^?SޙҹcNT}J}iۚ@Y{})3'cWV#r sZ'r"u{2D,fq mNTQ.Ƅ++GfޥRP!v-ʰ^vWb*놔25l"eG[jM|a P^FXOC OՋxXc `lg%`@T޽V6qE\|r̫E}֤gz_5 |JB\)5?h) X<3 d`HJ3a:0 (Bԍlq+Mn@kYRץ)7} 1k@hbe϶&B ,@N [uQ0`#h&ge&":GIUM%-ׄjɘj=h)fVm*9yB#B:Z4*X|ڽih!OiU d9%}L5E4]P>4+w~kJ)~u7dYu2dADM6#g,r~ks>WZD0-.ĚUopX;KِZ[4JTS6vaPPJmj~isK3heِcڂ.$Ei"~ڛX ʱ: I]%/K Pk4l o(o/)D.۠Cry`dͯJo iSJǫ]^4bA)@g'Oƻ RAvP\s\]Z0HB`}>",Er "*%# qQzo+(f6ak0[Ru9#~1ش7nRtvS+G>&j~M>U.qֽ1  UKN7;t#G<w]?\gI[u!7SygC5=N!>Rx쵽f󢩫>/gK%6;S ;/`[УΓ{a|w-]=\MhÝ1wn+|S0YӺz-,uuPɆ=9#IWp>uM{MXs* AprJW8 V},5j/mA4t|_<,1'~#(ͫl};?<҅Dljq'['%ry_3GDzj [YDwh͗xm-8Bh ԜA_4V{Z/@_^{S3Z5nW1]EX%6lI%z`V{E4 H#[5bYku4{Q„T&2NYFYJ9v.5rbG\иLSQRښYSK(!o`D߂_"_>qٚr1J4>!@GvV*#Cm ͹؎$7"P0#Y3u70QOv+,4SE BQ5w}5aIH Xjb syB7H t_y"ZOldX^so 2ų֫02 %G!`ɘ٫iKzLZwź6G1m6D &ʴ8*N<0݂Ը42gh&V5|=_#aEL#I]{ WՌ)@Ў@ Ř); _p1^0+j !zY>ce3аCsx,*~xud -4UvpjN 5t@K<! 56I IHVs;3 4Ba|H#_h@}i*T̊a@R !r}20O|)}Bwv+:yU/@_FTj¢{)]?#O R&}u!&; N 4VglW!3U1I}7|v5j:BJG4^N&T|YvY|N3ixyT+GQ)4!qXt,s@Y[?|߰Ԙ5OP%cZ9ͫ|E-l ز*b 3ڦ<>dgpc}.W)$h KhyJ u?a~e 9dj!Y[@a j}q-+xDΏk)=d12 c PpÑxHJC9- ,=U`aTL@o6P^%GnW](g*6qez49@7UKXtc{wy͒QuZg 4 [.Uecm0z4Q`i/']}oMxKof]O/'B}N^Gf᫑41> w8%7ԫq:TtWrMc¬ߛT'pTuABl} P,뀐[Нs:OLmHX~`tr6죥`ml=4Xg\HB`MC~Y7vJh,ҹ$Oʌ %|^݂Aub1G1ʼnVС PK; 8|[) HIegǍd7Ix Os,^Ty2$?WZϿʿkΎ%H5f1,]%J~'3D` k%|~ FP.nP;!m7Iz;f" &,38Eu₷JNX fݽAv,Uv.z(hrʀc)3 lؗw\ښnUx* ˯z%WGzU2*T$'KƲ\f.ä<99ݨ]u3npOssSS~OaM#k{kM{WϠ%s3~L =7 im1 % XU;گkt&GaF.OFdq_EcF }N ,%b7X ]~.OBqXD3X/)'AJLѿLxQP#e%fkTbUT EMSJ7 ?I",IE6mn3$fIʂhZ@Ͽ\Di]jD&EQX$ZU)[)XS`ZU" +1OV("s(M1(d^@@s0JqMN)ˁnk88}=ۗ-9mT@bH[{gD+Գg0 ]S~摖}򼢜͉p"с΢@tffrЧ ^ ݮ=vu^nǵ=w[:#`#^=E~R[w0?P9ĥsד;1T7֑[>\۳rP6E*h;UBpPXFc铴H #+~2R5>=ZGK)!0T>:]II24a&yfDYz.+gpyt< ݲpYaHVp$X?De}ps:Bpbu㛃^CÚm#W ~]>yτD.bK ~@ugImrK#àƦhSaY bK@(M+d%;'cI<  ?FE %Ll>^`96W)旣DSyPĥX$t,lnHܼ{a"ڤ5Y~I4CM: z~&%2LW4 Z elRCV)q&u:3_URl& ~ MEe"pn7!뎽=(X,ϘFS+]cp 2[*1Bl-TX*<]fʦrkf10Ej㪒 '_2}:_s~R"fpq80s㣇8҉IgN,nM]8:pe|FߥQ:/C]* 'Xͫ-,̳i ^v^kCmEO8 6rgeks|Ko#\е15{tl}?2$tˇYI?-#BSgű Ɋi S(, kG`fchϬ/?4V/L t̘0pg)dqfj霙vNlRIv~wݖ7 ҅g&/x!hnpelg Gsr3Fx."fU$uvz8ies8<n>cG>X tQсB"WnwnX; ꓪ0"$YuHx 6 dX58Ʀd ^ś?mQ$xW诿s0x! fȂSr`X&xvWG38R/DoN\i@k b᝴=r >.`&p=.J9J&a#0cz|@ GG>gIdNV&KOm DX,h SL)+S}D/duB FVY| ht4VĮ_gQtaTc[P%ASh(2A9Ӧe X"R ʠ%Ğ>*2Q,*ݏS mmcUk97_JU>CJ5bm^$}LvEpPFKMŮ= j9w,{2iEI,*KBY7i jD!{k{Ͳ'Y&9.fé!L@+,9-˴ 8fυtH@y=Qe1Hv*6d0c4+%K+$IaEFR~&/Jh4"h"A GHUYiZt0 < ~Ds ¡èPCx8 OJT<7 TkFcRA&?w/1d&Edgз["i\6=A ͢5)T F_u&pS(,jb +%938KoۿGK {{kzz{|_Kӷ,;GAtіǎQiͣ$d˞ 7˅Q>sDĥ2$%,̣vc.'o0\{POP5uϟEU@A0PgDX`;a^;2r680U INP%F>cbTXaQG ^c^L%Sozp4dG1e~NZjlH0EKks} x'+vz0m'0T>fIA툫ߘL ep`; Nw7*N u@`\tNZ]kұށ|@4ϥSy/W*I4j5,W4¸Rơw޲~z&?]([RZJm Fī&PŽҭUStkG >F;–!y}P:LIU R#Sii*̡{*TB߆"O!-Sm=~jClnø8TsZ{nL@5;m` " ^u6t%!<9+h{KAH3eL%!ezm]=oj@é_ݻ@PqUykKH|?J pA+d<+_hj9plAIV* }Gl[%/V"\ ({4r祲6C˩MP3^5yxt*M$M"c$Qb/˺ dg@*e$a6c7xObϐnǒn2@ߟC>t=A@E40[~yj}Ɠ$7#:/'~DƱHAg=}_wnOvL8/\Zh;]S;FqѻX! 7:G@AǑC:<.WC{d|0B3egUOBwdk]S;|vLp:dj5Ǩ:[l &<4'򬯡g .wrJBhyV ! F#ӪpQv[ǧ6q1/'f I1 ?]ᴘIL>0R=7W]:!Lf3XX&?QFBgA?N38qҝ͋(Ņ7L\(z`!Ҝl?9{( q-\^ RÍ(jv++ T/ W-Hޚ\5hf`#oŇr]}z!U5PV~ aĀ*Y EJC#JU,-[G=iD>lҊϢ㡎MEsD,7c7jm[a.r|?R{Yymžzd0XeH,j6i릊=~ koTpao\V8R8cTG[JEh? d'y^5_="F b L禢 ,.l'Y:Z[j kIqoW&7ĐC$ ;'{唓{JFz2*wYY_X_p`DZXx[]ܑg[en +^ck cx8hۧ7Tx$a[P;?7RaI-eFO-8`|{?"'sqW-<^WяZ+u… :m+Wf]g ;^)ŕD{@M :=Knވ)SI/GǍB Rx8gF/eK=JE_n͜j]}zy5 1WIiRRt05%Tj*5+ۜڇ\Y=s #28d]disϹ0E0ZN-]ʮWUYtz)[B|2Fn߹ i2zJp 6$o[t\?]THN>;qS&g(2q{?C! !A"?}Mzl C>^FRS I^n*D vWxfʂ1_1s~{cc:1Ti*(5h/SwƸH*NqwZg}2pP}8>-/6T?SZRZ3\+e.x -Du*맥%iׯx䋟5e<#<>al/Sk-i6pFѴM^Pϓy6n \׾YexP/iĻմTw|O>SOOtM:Uן EjP"mkv,:?PHGʒH%r)+dvCY܉Z§H]K>bmig2^b?pJ~;٠I(-Vn$5M|;=[!d=%j7aђQ4(K}J~xI  R-G֠!m vxzhI,Y-A]FCgej[;ԼY,ҔyG&c'@ ёY0BZN(Bl\ eMaY)I qt4 ˋE/a_E@АמO³> 7] bl'!ahkVI΋R.ǹ" Aѣ52X&hﯛ Ew6u ,bA=%* ;w;a+/ B!hx8$3>+ESJY"ICz f!OC$k9Z9f1 |<:z}(r_,e&|g!~<n-ae$j y38Ev%-S*Ur$MJI seDRn~vByUZR;-UDr׹Um(Ԫ&hSPP!Elo\f_]qđ7S?Bw;r<չ-NOn kHya Ĉfbef4*%j&S@xdo'zަ0. \rG7BHp92gxyvO!)Hoxq'ۍ2J'FO@#E^# u)?xRvR6wðwip)􂠋 jXFBv8:'+,+צ zN*eD  I4 ː}2 |2:8d4p ~]CNmO 8)4)ϰ]ug3O>!3dE:"%Drݳ=x%8VW||{V,;w<<;`Te*c_b{b8M^v+hkͅO7i"64:N5iV+=[>⤉{ {Jٱt(Ĭ$B@,<8 P%pxSP wD/D@.K+Ao2(8( |$> {{5`x+ y}T/օa1)mSI'OY_Nj!p~_#a & P*4@ e@:oPC ϥ8C;NGO(T/8D샠pb,iXM5 Q~ Ĥ=>}K~(cg=٫c`^+O6H[P:>*r45DF'1ry)>$~U5Tq3K*쮰6TQ5 h?D"u(Su?yDfsX.|^E00LV?V32,#A"[cw!utNE2b>11YXXS&fyU-:Gʇ+S]+* 4˜=&&  M7 'ՋX f!S)hXJN aO1qTX= NaR( ̔$j b~WL1ޠp9ZzΕ7oxr( >Q/B 7* Cxr~V =KʣFbeHo[n#S"AtgT*uF@?\>Nt}h # aK#bWd Xg5jDu ")/ˠIgv@2r1[c5(I 2eو >+4(t=oz߲^0y ܔ^(]UJcOϴi4BW0*=5Uҙ^4bSu-Z>7@~k耵щ۟v7Ȕn-m7d[sh^fyxxyK5fnWo 6̖w׉,2҆ ~v_֟gBힾ}xߚyMEM23sEȎ +9d׉9POs}vsHYC+8Ea\mq _J1UyU1h=LFY~I-J]3 g^G^qK'֞xIsfp䀂2.#:*(@vjBU#h,9j)0b z)~3/0+j!=yޚ]h䩡LHigbK?s]sNA/:ld]tt] 59sIX-yfoi{A@C t&$m '9z5#u%j8\eW4ۥ#8)e}*cOd>$]^^ >vxUzHm&dnf+u(v) 3[i3nڴnCuĘq3vưpc_uzj='=^;ujQ-;f{sfpHd^8鉐ԓebHE: MׁQ^߿9#{>zdnbD2lkWԀd)^>?J/8mZgqشr4#0]DsAf9ZǧD:ZDr"Ѭ|!s4y:J K!:ll!]GO]aV9Rrp-1*X^ZEgK2Ňw[碨G{/?T=?Y@fx H{> a=/wmo{_ j#gS@&r\w3heEIJ|i>̹֜E@o'[PMvV;5k+l{29zMfPbk`:3q@^#rK/ݗ)Z%pK<鯋YB8ݝeЛ5RmC't|I얁=cr3#ъ{h17f}T.2u\h]7v.w;90us\",ZzvV5e1ED&Ő,6?X%v 굈'Wt( Қ܌rZ#IG18[eisU~V~a5E?fM>C)t!}QN&p2@㉪q$z09rNsa{80l)b{#+ˮݙƚo^/Tg ^1v1؊8~2Q(:%@OUYz1f5Zi=۷4жRT$C/Ed^rfq>DxDd-"5>-Thހ:Q *p)5Ip:F߀.:_nRFedqK>ATȠ&@ՂMAbꙖ,1ʗw%RIh{6 "g:qn3kpmwoտzNNIT !qd)`͛?̍BX1Y [p 9 )惥6h|mG!nBCts_m,L,!~"lQrmCe7J9^mh59C:ZCg#QA[21 .5ݼ-4!fB2=amfPP$@J_/AI^/j`$,±`}l@f3o8?)Łp>ژ\7OciU@LA9A(V%IO ]T`MsHIL&UPx )J0] _M-gy:D ?4q4^;:;9cUetTN r۵ycXr.3XxBlIĉ4H@Y Єy vĩ'n ؿوCcFYKLZ#6_`fP"Sj) 7yS#k\ݭaI!M3bd 8C K:FvAbA^8*finX҉&ZD}^gҙz"P ra.kWpH[:V֡LyOܦ]%d%ſ߆{`?dlkQд6v̊VV6{ݛ&`lHG]=s>5}!]ƃ~:";soqTɫ$Us@9 PטO۱,<5IVMGZX|Ip/}g9Ky7+Ý#*#?&CLb]֔0_㣞Ϡ.X-K1Oapھ96Gv<79l 8n0/ vLKY ߶]!p͖1f&961J@j4__0h$$&.3&v_]"p!dhouN1 jNl;dnV `=vܶ)elB$&eozʼn, f/!WAlh8;NwJm<)Uj5;~pER Hmݏ7oEdϱLVT'ea-\INc_i6 G犮@qm2+`0L|lJ&j tf۹vKlLFYg[rJwljƴM'禱i#vf*]Gtz;ֱyʦxFAӌMF(㰱DžiZm(W;  g B%ba W) MĂZ-AQq<ɈD#a"9n{?'pq+f6pI],lZg@ܦDM} a0lo8ˣ$jROoM|4f拉iSjJW1WnF]'J`x~29(_aRWy7C KH'F3Q)EWҸ19006Z Z`PUd|·3>k]num>{w H^ߎhW9] - Ҧ RL=ul~8zVXaW: Z+FS֌< Sh@~r$ܪG(>qn CEN19'G Q]PO԰߃c<sDܯIFߪ\噑$A{,Z Jlw >)DV 8~L1`3h5RS37rӹ4Y ,CeOl7I$q'pItHn})Hd\_Oʜ$VGXeQ%hu= 0dlXmUC\\\$uf|F]PrLnoaFdIWGvc5NKL}ULk GoʑM2/56~"/-SON+?>$fam0:JT8&!Q J`L9xQeu0O#AXd2F0c\Ǽb2С &PvqLDyޣeBۡ<AT3~^Ơ3xw)"R Jm:xǫ6Sawu B аb2p٦ qi Ye!Oݝi_]7Iv (DEj|ewэ;R /ZpwDDY^s b:!&eW)ۣGOKiBy^fJ}EW 9c)BQ-pQ⍨i+j/JrY{1FuWSGdS9Nh|Ȉ-*v兩 F3A<$"L& >HZyi9` J[5gYW=W~}D$DŽGgZ\kןummY"{s)GVDЁ)M]2Hua9>trNb)9}\{;y KĤ0f6ú<4Ƃ >:܆sf6&K Ͳqvc~L` 3`}F2"bQ|*\Cmu{S$Jo'"[D$&xWaYf>j)g.ӈngaѕ8p )Ւ_6@U@ }/;n.%ßfa*C $h`=١U&VPs a`SH;'wׁ1Y*X}t$!Mo>&aoB>,@UP,T~D@%jTz:IqG${&<6e9`acUׅS )p~~|vq:Cl^kF[)mRE(1Z%%W6If:l!Ú;Y+5<z8)JG {Qn)[9N٤m>/S͖05^1Qְf7!ȋ:Y aVTza"sڜug,ɠˆӎ*(E +`Fw2Cd  8#!*Fz1(2uNw{n[j QS}NZC^b8{f s, ˄ژXV|b&+jS6ΔTh%Uɤ(7PpuxHJ) j#籎(-/9W@'38vĒSBEXd9Q-EInn8ifYxE 6y(J dS-M/Ժ"M],v1nWb(GPXSR) K]j"ߛ2>JRAe) Eg Pn8X0H܂R޸[x#J3/t![d*?d+k8,N8/tj4{ȨRbPMmSdi[t-7o:dYk 00ۂ?"9adjD$8#R0+Z3BF\UrZf!Xv"EB@s,r(9oP[_A4rȝ:/o 8>Uة nn{06jNˣq64-] *#c5"L & #{s.iՑcGa49Y)0d92;4gdBP&'/r@3y?|-b' ͻmH=ibD5hma=0V3{!/h RzZ}aizgCi5Hry* 2 ./¢7lFeir -n4j7H  #{8?3HԚiax(KKFA\92g̬+٠?FxB[q 7 ;|Ir@=sP$6')1.]Cz )Ih#<֝x* wz+^mb7FZ=APpWdɢo=$i;0EvWTZ#x^s:,vjebi?HP 8|Sl[0l+>:PYr93qwTlu}#=_.F$"`K@ltCb`9%L:#ZČ3>4?ځekyKh&Y+[2}(P(^j S)[1HHB 8*u.R3=WҪ I/1U.x}qL)MaĊ.{9 8vf49vEf-E\wӷ`ikN3LgzP_] N @YjVa" #hB}"&-WKf`Ԫ}!![FRAC%1E.Or9qxX{J*LӞ!>aa PC SZ՞dęgRi걻*K4(<W.Ow@_WfǒW 4@CAŕ qx$ *;\1ilVn31 8"|) Йhͯwպ9)L l+Y^?i.;<'gzX!SU (bUwjg:TW/§Q8F"ͦ/njau>٤]SlZ:G*Pwb;'G\w/~[IIVUQ1/N7oiNPf?"Aƽ9;zDIo),Fa0nSw5\EBq>-zBX<} tfP29yomSt)vٞ UciL: WJ'mѻiL x]Gh2v~D\@>c/6Y鑂CzTku^#ʥA(i[3fM@sܭq4H&S0Cj?-%$EI4hh@>sE,G*H5]=߈utN,LM!aqoC;=ÿ 0:Z ?ְ`*3[2ddEg;s&{|FXxɭ$f#vX .O??9mг(B)'ݫ_qo=ѿPȩ[\XSeɕ7 yө$%ykz*Jz!Ѣ_T%w.Fo~_ҪwBV%2 Nc mF*LgvR5# V~ 2{Nƿ=%_~mEŏ[?a&g =MAsBr^Cj~Fq3jg[(߷ UsUoWx ײ_Ջ{< Q5 j| ~mhXL]S} ,J%ߓ V|ݯtvMey8RYdfO'#}-?+o%mݶyeNBzuZzfOxf!o??}w|ױ,_7Q USD3q{r'Y{=_/v;]MsD,kǾx~ ?yW3erCqrЀ-hIPa&³ rsP`=MMz*sN|&ѪXrf*;b[]̍gue۴Tu<޼͙l˵B(-"zL>53\"ehE[{m h"hxa+;1Z4Q~yrd˔,^PW+EI֘Ton2_z1EB PR9\QX;դy9:Ka|L0T{!a?ˀ5I$>eFVo~:RuwYʾ3!Os` +0`fx"29[Ε8 ck0͹AM-R^nwjP?2з;#fQOτs# d #va{7%t`u7[[v`sƀmBl`Kt(7C^[ODu0DD}/ +,"bb vy2g{$V[L0)4}RGO`s=7(YuVD#_5B!s$̉ F֙ noH'|}]OCfi g"j$l0It G4qOCc#щ⸮!2$@P7=Fe+BJ'@ ש`{u VEf X`\k渙C D2QFԴRβlU'YbQ 1t$ ZI # 'ԗ{+MMgBK+GIaOS=u`>%'Qe⫭VOݨ}Qm!nl9(^OVˆtKהsm5bճvMga0VERaPl^{I%fL'&ДshztUI )U ' x"C/(Yw*BTPP;)t|<ڴ?Up[2cÛLx<d<tuQ!*U ~-}*m<2Xp[DA   B*yVaw '5Be]#u(#=74:cG ~"x.F:%zz]}K\ū.O1.ISwTNBUUTS]CML י҅CSC+cHbs)giKUzvi'dK-xꏊ\ juW䲏 c;O*@ƄLoPM&+KGp+i/Jk}[EL_2yPF즺YSw:feC6gBe1>j*Cg@i;9YXi5.N{1bⳍ|ԚNgP'^=0DaL#%[c.._2 C m 핦ZJocxA luѾKnKq`ȈϐWj?^ڡ)'qb/Wg9 :W]q%<|4;YyǗ?X0X6k9Ĉk@%y!dرvӑ|\nO#yL./Ē0p\T5Z]aܨ`kNgW?f!DdT onܽzUu5hTZ,+ڴ8Nj8j̦pLBXRJZFVN^AQIYEUM]CSK[ǷH&F& +f!(ɊI,@j;-o$\7y<χP0֞sjDL\dG̝:h:Ns3V@}wO D{8MV̙i0 jNdЬE0f5o~q)PN-}ɲcvW4RJ)rևa]VѬ2XotqC?NK (1WSsE:_ۀo"N?WҮWS#}3UdReABut^ tFMԢpmDg>%<0W<ƚ88V.&?h^je-7jnwN934B'ʸJ]aBRiô"L(B*mVv1@ e\H .0 aZ٥&q!6L+I *]Eʮ5#9_\b ^F?ˇ y2_3[oy7t2_pV<;s:-&NK.c.UA*B ʸ'>NuuhDk>#.;3V"Jr%.I vo3Zx&ݢ|M_;Nw+ta*-梕,aBfφЛRiô5@$ 뫒^?7`[) sY@UwxWbM2^UaOȄ ;BCʇ%/*I6l%`ϏCٌ ;'$@ɴk\#QNMa_y*^vB$9MEdʦt\=1_LI)Ƥ Gh˕}9&VU\Dꔉ u*@T/ÙFl'2u.>|x4KJtBɺ2grXMnM;{|ћ?5 'dl;oɵD5hb'Չ?;T X!16N\&AFFFAAAIe6 o͛^CϔwUF ;?Q\Dw]=ß-'V߃(;oOu>}ۗC >n+o+@c+xݍODO>'Bj]Z>}O},_W~plugins/limit-login-attempts-reloaded/assets/css/fonts/CoFoSans-Medium.eot000064400000366464147176754540022761 0ustar004  LP 5K/ CoFo Sans MediumRegularvVersion 1.001;PS 1.002;hotconv 16.6.54;makeotf.lib2.5.65590 CoFo Sans Medium0BASE/;PFFTM\ GDEF$&'GPOS~ERTLGSUB,v(T*OS/2aGq`cmap Hcvt O<Xdfpgm( gasp'glyf3$Xheadx<6hhea\t$hmtxz 0loca"N6maxp  name92: postmAJprep}woA/K5_<ח% חBkS(8w1aXKX^" COFO   (dM1YE F.h")E?D H'.8B2p'(#/5F!>54"UVUu6P3PsPbP3PPPFPPP3P3P1J   6HB8B-*..FC&E& $nD(=C@ CCtC=C(&FCF&gC)};>    0Gp2@1YPC#GpS6+;>d$1 O:4p2*H4,*$(IC'/}#1%0*=3sPsPsPsPP P33333Y3JJJJ PLC......I.& $ $ $ $C-"=C(&(&(&(&(&H-&;>;>;>;> EC ...3&3&3&3&PE& E&sP $sP $sP $sP $sP $3D(3D(3D(3D(P= < OCP@P CFPCFP:FPCFPCS P=CP=CP=C=CP=C3(&3(&3(&Ot&PgCPg:Pg-1)1)1)1)}}yJ;>J;>J;>J;>J;>J;>    6060603BPP<&P]PChPP5CJ;>I.BPP<&I.3-&1)}  (**.($#5t#&($?@C`sPsP(P31P# 2PPP PPP(P sP1PPP PP3PP3 h. P6PP PP/P(.52CC@ $#>C>CC,C>C(&8CFC& & EC ,&C9CdCC$C% $ $,C #)@(;C=C>C 4C b3(&  ,PD(  PCPRC    P=C3(3(&P=C1)   sP $  @ P^*.. B7 7B7700\88"M M%y$(4.2,+$/4,(4.2,+9G=:$IP'"27C0=>Q X K  K x U [ x$W:FVUU>%>%>%>%>%>%>%>%>%>%>%>%``4>%>%>%>%>%>%>%>%>%>%'*H8Te;(d2*P@C4;.D(:>:> C =CsCN>,s>>m= (1YM M%1 1%.*..>B>DH82>B'*H8&&GpGpu6;>2$$25&)1.45/$/4,(4.2,+$/4,(4.2,+sPP3 P/P(. $>C(& C$C%$M5(r"*z*3!^**~7~37Y#_cuGc      " & 0 : D p y !!!"!.!T!^!!""""H"`"e$i$$&''0 0 927Y#brFb      & 0 9 D p t !!!"!.!S![!!""""H"`"d$`$$&''v00{uh[S;%"bAigY?93)!e/sleb^ (UA10F6Z V   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`aqdeivokuj20r34ghlzcn1.m{b7wU[ap]^_xb`\, UXEY KQKSZX4(Y`f UX%acc#b!!YC#DC`B-, `f-, d P&Z( CEcER[X!#!X PPX!@Y 8PX!8YY  CEcEad(PX! CEcE 0PX!0Y PX f a PX` PX! ` 6PX!6``YYY+YY#PXeYY-, E %ad CPX#B#B!!Y`-,#!#! dbB #B CEc C`Ec*! C +0%&QX`PaRYX#Y! @SX+!@Y#PXeY-,C+C`B-,#B# #Babfc`*-, E Ccb PX@`Yfc`D`-, CEB*!C`B- ,C#DC`B- , E +#C%` E#a d PX!0PX @YY#PXeY%#aDD`- , E +#C%` E#a d$PX@Y#PXeY%#aDD`- , #B EX!#!Y*!- ,EdaD-,` CJPX #BY CJRX #BY-, bfc c#aC` ` #B#-,KTXdDY$ e#x-,KQXKSXdDY!Y$e#x-,CUXCaB+YC%B %B %B# %PXC`%B #a*!#a #a*!C`%B%a*!Y CG CG`b PX@`Yfc Ccb PX@`Yfc`#DC>C`B-,ETX#B E #B #`B `aBB`+u+"Y-,+-,+-,+-,+-,+-,+-,+-,+-,+-, +-), .]-*, .q-+, .r-, +ETX#B E #B #`B `aBB`+u+"Y-,+- ,+-!,+-",+-#,+-$,+-%,+-&,+-',+-(, +-,, <`--, `` C#`C%a`,*!-.,-+-*-/, G Ccb PX@`Yfc`#a8# UX G Ccb PX@`Yfc`#a8!Y-0,ETX/*EX0Y"Y-1, +ETX/*EX0Y"Y-2, 5`-3,Ecb PX@`Yfc+ Ccb PX@`Yfc+D>#82*-4, < G Ccb PX@`Yfc`Ca8-5,.<-6, < G Ccb PX@`Yfc`CaCc8-7,% . G#B%IG#G#a Xb!Y#B6*-8,%%G#G#a C+e.# <8-9,%% .G#G#a #B C+ `PX @QX  &YBB# C #G#G#a#F`Cb PX@`Yfc` + a C`d#CadPXCaC`Y%b PX@`Yfca# &#Fa8#CF%CG#G#a` Cb PX@`Yfc`# +#C`+%a%b PX@`Yfc&a %`d#%`dPX!#!Y# &#Fa8Y-:, & .G#G#a#<8-;, #B F#G+#a8-<,%%G#G#aTX. <#!%%G#G#a %%G#G#a%%I%acc# Xb!Ycb PX@`Yfc`#.# <8#!Y-=, C .G#G#a ` `fb PX@`Yfc# <8->,# .F%FRX +-g,:+?+-h,:+@+-i,;+..+-j,;+>+-k,;+?+-l,;+@+-m,<+..+-n,<+>+-o,<+?+-p,<+@+-q,=+..+-r,=+>+-s,=+?+-t,=+@+-u, EX!#!YB+e$PxEX0Y-KRXYcpB-*B *B**B@ * B@@ *D$QX@XdD&QX@cTXDYYYY" *DdDrraa>>rraa>>2222\fPz*R`FdP  L v & L | : p & v  H p 4J6x2h.X6|84`NNpj2&"n@VZ,F.   * 6 B N Z f r !!t!!!!!!"@"L"X"d"p"|"#^$$$$($4$@$L$X$d$$$%% %%$%\%%%%%%&4&@&R&^&j&v&'N'Z'f'r'~'''''''(P(\(h(t(((()`)l)x)))))))****+,+8+D+P+\+h+t++,,,(,4,@,L,^,j,v,,,,,,--D-n-z------..Z.f.r.~.../D///00 00$000<0H0T1>11222 2,2223333*363B3N3Z3f3r3424>4J4V4b4n4z444445 55"5.5:5F5R5^5j5v555555555556 66*666B6N6t667747N778(8H8R8n8v888889>9P99999:4:::::;$;,;j;r;;;<(<<<<<== ==6=>=F=N=|>>>F>|>>??Z??@H@@@AJAhAAABLBpBBBCCNdNNOOBO~OOPPPQ(Q>QQR8RRS6SSSSSSTTT&T6TFTUUpUVVpVVWWTWnWWWWWX X(XDX`X|XXXXXYPYYYYZpZ[\$\]\]^x__`h``aa aVaab$brbbc^cddd2dNdlddeffffffg g*gBggggh2h:hJhRhjhrhzhhhi:iniiij(j6jDjRj`jnj|jjkk4kZknkkkl2ltllllllmm&m4mBm~mmmnnn.n6n>nTnnnnnnnooo(o8oHoVodoroooooooooooppp"p.p:pBpJpVp^pfpxppppppqq8qZqqr r2rNrrd>  0+!%!! '7d`222j:F%!Y,@)Y"KY#L+7353hp#˄ExDK2PX@Y"L@UYMY@+333P v \ v ))FK2PX@&  sb   a"L@/r  sb U Y MY@+7#537#53733733#3##7#37#jqffhpfFbbbb).R#*1*@'/.('  J]#L+?5.54>753.'#5.54&'>.x =1pq";S1Pgn u 21qs{iPe}y2718%1;66,3[\.G2VVcQ $2Y\]cVU`&' /() -"F '3KPX@+   c  d[*K [ #L@3   c  d"K[*K#K [ +LY@')(/-(3)3#!''   +"&54632#32654&#""&54632'2654&#"KddKN^^ QQ.%))%%,,LccLM__M%))%%--9^`]^^][c45243354h^`]^^][cU45243354),6~KPX@43# J@43# JYKPX@[*K[+L@[*K#K[+LY@1/+)*#+!'#"&5467.54632>77>54&#"3267'&/&aAwX>n`\h[H!d 6!t? 192*+3\RE%@+81!icL\B&Ng`NL[Y)Bm&x2 5+'-03> 4E5K2PX@ Y"L@UYMY@ +3P x )?/l0+4>7.?$@X3>'E2dU>3X>#Ovc&K TdvA}GK&fzD/q0+'>54&'7q%?X3>&E2bV>3X># Mwd&K Vdu@HK&ez ieJ@ JK2PX@ Y"L@UYMY@ +7'7'7'37' Z)bb)Z Q Z)aa)Z il=F//G=lm>G//F>mHAB; ,@)UaYM +%5#53533#dAbb'g @GY#L +353'>=9I@ ''CFB# .YD@UYM+%!5!Y+h8@Y#L+3538B>@r'L+3B"kj2 -@*[*K[+L     +"&54632'2654&#"YVSSVUTT nwyzvvzyw  #@ J"KZ#L+73'733!D;Ȏ:nb^n'B'@$J[*KY#L%"+4&#"'>32!!57>B??R v|w2F*_GL.>FA`|w_-F;6irv1N(\D@AJcY"K[+L +"&'732654&#"'7!5!:32Aux SDLPWD."b~ ^c85>39-Zn[`hu#m (@% Jb"K#L+!#5!533#%!s@\\XjjI/T6@3JcY"K[+L$%$#+!>32#"&'732654&#"'!+ Q)w|w QBMGMH(Eq"8nlh~aW12@97>!b5^(;@8Jc[*K[+L$"(($%&"+%#".54632.#">32%"32654&^}QnBiu HAL^_?6]C&ENOEGLLhz0W|LĩXY&8dy"&5S;<99>=99=!%%@"JY"K#L+3!5!gFt8p>m#/>@; Jc[*K[+L%$+)$/%/##*"+%#"&5467.54632%2654&#""32654&m=423656>IJIKKMJMKTRMKQNaoi_>KM2]ieW;KL3/+12,/1a21267/245^(;@8Jc[*K[+L$"(($%&"+4632#"&'73267#".2654&#"5~QnBiu HAL^_?6]C&ENOEGLLhz0W|LĩXY&8dy"&5S;<99>=99=4&` `3+"g'` `3+U55I0+%%5%5 sɀsV4@]Y%L+!!!!V""ghU55I0+55%U psɀs!<@9Jp[*KY#L!! %*+7546?>54&#"'>3253'-!#639? s {opn>$)uE%/(#&/5+RhjSEK$̄6eG|ANK&PX@& AJ@& AJYK&PX@+c  c dW[O@2  pc  c dW[OY@MKGE(&#&$&(" +#".54>32#"&'#"&54>325332654.#"326754&#"326t>Vg9FuR.-PpB.^Y2#(22($1c3c^[g91[Py( (l\1K2&VN?eE%/TvEKsM'30<47<5 ,@) Jb"K#L + #'!#3?=iXr!Pg C@@Jc["K[#L   ! +3!2##32654&#32654&P#hz,9A6q B7432.#"xQW xJxU.0VxHxTP`klcK>nt.YTVX-vk;MqoP'@$["K[#L !+3!2#'32654&+PqlmqowntqP5 /@,aY"KY#L +3!!!!!P]hlilP5 )@&aY"K#L +3!!!!P[mj3#l@ JKPX@a[*K[#L@#a[*K#K[+LY@##"$%(#+#5#".54>32.#"326=#5g$h?JyT.2X|JzyUKcqpeQgQC#*/YSWX,mk6HqpN5bP '@$a"K#L +33!3#!PzKzzXP@"K#L+33PzXE @"K\#L !#++53265EeeaI44#jap-5P -@*Ja"K#L +3333##PzfeP,@"KZ#L+%!3,$zrrP6 .@+ Jp"K#L +%#33#rĬw>)X*P @J"K#L+!##33wWv3-@*[*K[+L +".54>32'2654&#"J{X11X{JK|W11W|Kennedoo -XVTX..XTVX-mnoonPa +@(c["K#L $!+3!2+32654&+P"pwB<;Cmmlp]:6;53)s@JGK PX@h[*K\+L@p[*K\+LY@%#)) +".54>32''267'3>54&#"J{X11X{JK|W1C9AUH> p~L""nedoo -XVTX..XTb+U?b kf d?oopP| 3@0Ja["K#L !+3!2#'#32654&+PpE?C;;CmmNe^96;51b''@$J[*K[+L+%+#+?32654&/.54632.#"#"&1y XDEO.6w]ix|y GIDI5=V[w66/)%* X[]jgW*=3(%) ZSag^o!@Y"K#L+5!##[z6rr6J@"K[+L##+3#"&53326zzUTRQgf\NN !@J"K#L+!33ƀX '@$ J"K#L +3# #3^yч}X  &@# J"K#L +3373#  铧[M #@ J"K#L+!533񏾽:P6e ,@)JY"KY#L +35!5!!6n+hrpq9pH>K#@ aY'L+!#3He4eB>@r'L+#3lk8>;@aY'L+3#5!!8]ej-B!@Js"L+# #aw~|xf>@Y'L+!5!3h. @Y"L+#3ph.)KPX@ J@ JYKPX@c[-K[+L@#c[-K#K[+LY@'%!%#D#+!5#"&5467654&#"'>32'&3265gK0I^cT">2((. j hWVrp:'-*#3B7"LDKE&*&("AUO` !1(CyKPX@ J@ JYKPX@"K[-K[+L@ "K[-K#K[+LY@&#+33>32#"&'732654&#"CsQ(+L9!}a-GH57A@92J% >]={14>RHFRA<&'@$J[-K[+L$'&#+%#"&54>32.#"326}jl]h$>V22K3g239@>:32J]|>_? ,< !4QJHS2&!yKPX@ J@ JYKPX@"K[-K[+L@ "K[-K#K[+LY@ (#+!5#".54>3253'54&#"326K3.P:!":!#!?_<=_@!X8;@QHETI$7@4Ja[-K[+L&%"+%!3267#"&54>32'"3.B524gi^m}%?U1hr,A 5BE.32#4&#"CsP1Oas23.C &XT+.160@,@)Y"K%K#L+533@zws2pp>3@0Y"K%K\'L +53+53265IzR\<&+&2ppN \Td&*C 1@.Ja"K%K#L +33373#'#Cs=>C@"K#L+33CsXC6"V JKPX@[%K#L@%K[-K#LY@""##$# +33>32>32#4&#"#4&#"CoO1:M[3M`s01,@s01,@?"'1%++YT,+38.+,38.CLJKPX@[%K#L@%K[-K#LY@ ##+33>32#4&#"CpQ2Obs23-D@"(XT+.160& -@*[-K[+L     +"&54632'2654&#"klmm<@@<:CD wwwvaQKKOOKKQC>f@ JKPX@[%K[+K'L@ %K[-K[+K'LY@&#+3>32#"&'32654&#"CrR1+M7!~b+FH57BA92J="% >]<|4?SHFSD<&>!yKPX@ J@ JYKPX@[-K[+K'L@ %K[-K[+K'LY@ (#+5#".54>325354&#"326G3.P;!";S10HntD3;C@;<> !?]<>_A!$8Z8;#"CoK"')1N@&h'*)''@$J[-K[+L+%+#+?32654&/.54632.#"#"&)i 6./.#.AEMoWVj f0/*.&&>LOheXo%$ @?FPO=( C>CTK__)@&rY%K\#L# +!#"&=#53533#;_PbPNNs%%ES`f{{f,#>ZKPXJJYKPX@%K\+L@%K#K\+LY@ ##+!5#"&5332653S2O^s120@s>!'XTB-28.$ !@J%K#L+333yvw   !@ J%K#L+333# # vcfgenjkbfo  &@# J%K#L +!'#7'373ssmif鞞 >"@ J%K\'L!"++5326?33? SK9*!- xx+W@f!a0 ,@)JY%KY#L +35!5!!0ifgf>$3@0Jcc['L$#!,!%!+75326=46;#";#"&=4&#+8XSF5+'****'+5FSX8+h/>xcPe%3}/p>@Y'L+3pgj2>$-@*Jcc['L%!,!% +%#"+5326=467.=4&+532;+8XSF5+'*++*'+5FSX8+/>vdOe$6y/@J,@)Wc\P#"#"+#".#"#>323267JNK64/ fMK72. Of*Ng*Y>@Y%KY'L+3#3#YaG#P:!*@'  J"K#L+!5.546753.'>7"_sv\MVeg 0*+. h dY2.+5] ok ][ZG#20E[[X;O * MCE(9@6J Ic[*KY#L%%&+%#!!5>54&'#53.54632.#"3Ȝ"U14sVkiq v365<  *Cjj H- R!H-_mcQ(79.)F%#-s}#/E@B #J HGcW[O.,(&!-+7'7.5467'7>327'#"&/32654&#"lIr  oIq76tIs pIq67<337733<-Jq8 8oIq sIs76pIp 4::45;:y>@; Jb  a"K  # L +!5#535#53333#3# lΏnkR;R^)R;Rkp>*@'aY'L+33pgggFrr69!3E-@*>1! J[*K['L%#%"+#"&'732654&/.5467.54632.#"'>54&/#wedr s;,/943LKU8,!ua`p r2..43)WKQ6+ $+12K&.-+P_WO +-("%" LL6N?,L\XN (.'"" MI6L<| 3 '-  4#$* +2^$@!Y"L+53353+pRq2oooo>'C@ A@43JK"PX@%c c _[-L@,cc c W [OY@)(><861/(C)C''  +".54>32'2>54.#"7"&54>32.#"3267J^66^JJ^66^J32'."3265 0#3=D;+M G<=IN##%%2+.. (5<<|$   ?@ JK*PX@ %K#L@UYMY+3#'%3#'zyo||O;@sUYM+!#5!Og{4-6( JK$PX@1 p  c  _[*K [ %L@/ p  c  a  _[*LY@'/. 20.6/6 - -,+*)#! +%".54>32'2654&#"'532#'#7#32654&1U?$$?U11U?$$?U1NgfNNggu107P.%%%$>V11V>$$>V11V>$1jNNjjNNjF'&#RJJ1 2A>-KPX@ Y"L@UYMY+!5!> AU*b} *@'_[*L     +"&54632'2654&#"FbbFHccH"00"!..b^KI^^IK^W/##--##/HBs aKPX@aaY#L@#aaUYMY@  +%5#53533#!!dbb323!57>'R SECL/.Mϟ7=>6-52KIk,o@  JK PX@!hfa[%LKPX@#pna[%L@)pnaW\PYY@ +2654&#"'7#5!2#"&'7#&'#  {$m5CWJBRT'9QGOF013!###1O77O1TiZ 8K*+K7 jI 3+'+!@ JK PX@hc\'LKPX@pc\'L@!pcW\PYY@ +"&'732654&5737?I"%*J%13B%( 01*&**3/p MJK&PX@rY%L@rUZNY@ +535'733Qh`*^_K;>UK#^ qKPX@[*K[%LKPX@c[%L@cW[OYY@     +"&54632'2654&#"GWWGFWVH%$$%"''TNLRRLMUJ/)),,))/%  O@ JK*PX@%K#L@UYMY@  +?'337'3&|hy 0&'3+t3+*r&'{3+t3+=&'3+t3+6!=@:JpY%K\'L!!+#53267#"&5>?>=I{'-""548? s zpoo=%(䄄F%.&#&-5+RhhSEI$l&$l&$ l&$j&$a&$d&$ 3+B@?JaaY"KY #L +3!!!!!!'#3 . )di oio3&21@*)JK PX@-hf[*K[#K\'LK PX@*hf`[*K[#LK PX@+pf`[*K[#LKPX@/pn[*K[#K\'L@,pn`[*K[#LYYYY@.,'% 22 +%267#"&'732654&57.54>32.#"xQW xl 13B;7?I"%$0VxHxTP`klcK>cs $&**3%( 0*VX-vk;MqoP5l&(zP5l&(P5l&(jP5a&(l&,P4l&,6El&,õ'a&,  7@4a["K[#L ! +3#53!2#'32654&+3#PDDqlmq&b owntqbPj&13l&23l&23l&23j&23a&2YR1*  0+?'77'YFEFFFF3'6@3%$J[*K[+L'' +".54>32.#"2654&'J{X11X{JK|W11W|)=%dqep8 -XVTX..XTVX-^.Nkn*H Jl&8Jl&8Jl&8Ja&8 l&<Pd 4@1cc"K#L   $!+3332+#32654&PpwC:9rlkno86;3C'&=@:!Jc[*K[#L &&+!#532654&+532654&#"#4632E><7AD97/+3817=t{mdp++;C{f529.c5(-/@6&hobU/JOHce.&DCN.&Du.&D[7.&DaO.&Dj@.&D_.%.5BKPX@ .JKPX@  .J@  . JYYKPX@$  a [-K [+LKPX@)  U a [-K [+L@*  a  a [-K [+LYY@0/@>9632/505"$%#D$" +%#"&'#"&5467>54&#"'>32>32!3267'"3."3265"i\Adg@K_cT"?0()0 j hW=SY0fqC603 o-A 7<(,,#1BES6,.4JEMD"*'("AV,#%~n)@G.93/= !.-&)4@+*JK PX@%hc[-K\'LKPX@&pc[-K\'L@#pc`[-LYY@0/(&"  44+"&'732654&57.54>32.#"32677?I"%"]q$>V22K3g239@>:32j SG13B%( 0't>_? ,< !4QJHS2"?Y #&**3$&HCD$&Hu$&H[6$&HjD&CC"&u&&&[&j"$0[@!J$  HKPX@[%K[+L@c[+LY@&%,*%0&0+'7.'77#".54>32.'2654&#"K"&"=bGCG;Z;3X@%"e;cG( =Z86X=!$;3RABMOB@QC&Qai&&RCP&&Ru&&R[B&&RaX&&RjPH.BL ;@8aaUYM  +53!!53~~̀Zh& 6@3J[-K[+L  +"&54632'7.#"2654&'kml #&XCY>&Xu>&X[J>&XjW >&\uCD=@:J"K[-K[+K'L&#+3>32#"&'32654&#"CsQ1,L7 ~c)EI17EC:.Kd"% ?^=z2;QHHR>; >&\jDV&$3+.&DpNk&$.&D]A5G@DJ Ib"K#K['L +"&5467'!#332673t7R'>=%2   'oi13"4X *N!.5.;S@P",Jc[-K[+K['L973/)' .. +"&54675#"&5467654&#"'>323267&32653I' K0I^cT">2((. j hWVr,  %P:'-*#3B23"52"LDKE&*&("AUO` )O !1(3l&& &&Fu3l&&&&F[93a&&&&F^3l&&&&F\9Pl&'{&&G &9)KPX@  J@  JYKPX@&a"K[-K [ +L@*a"K[-K #K [+LY@(&" (# +!5#".54>325#53533#'54&#"326K3.P:!":!#!?_<=^@!rL55L8;@PHEUIP5P&($&HpQP5k&($&H]EP5a&($&H^P5BF@CJ IaY"KY#K['L%& +3!!!!!3267#"&5467P]h!0!  &7R) lil +N/2"7$5,3O@L  ,Ja[-K[+K['L.-10-3.3+"&'" +#"&5467#"&54>32!32673267"3. %3I  m}%?U1hrB534c ,A 6231v=_?!n#BE-405308P5l&(}$&H\53l&*(4&J[G3k&*(4&J]W3a&*(4&J^3&*S 3+(4 +8@+JHKPX@) a[%K[#K['LK2PX@- a%K[-K[#K['L@* a_%K[-K[#LYY@751/)'!  +#54673#"&'7326=#".5463254&#"326Uw4? ! }l#?X4Vxn @%9GK3.P:!}c/JG39C@;9B~bH=D 5(:S3NN($6C: !32#4&#"C88qQ2Oas23.C'L55L"'XT+.160(j&,&a P&,&p%k&,&]5,@) J"K\'L+"&5467332677Q&z!+  '13"4X *N59@6JY"K%K\'L +5333267#"&546@zws+  $2J%2pp (O23"2Oa&,.C@%K#L+33CsPE&,-@>&LMl&-'>(&Y[P&.S 3+C&NSP,l&/5CZ&Ou"3+P,&/S 3+:&OSP,&/Cb&OP, 0@-a"KZ#L  +%!3753,$zwrrʱyyC}*@'a"K#L+33753CsUrXpp9 ,@) J"KZ#L +%!57379$CCyrr$f%-RgR  &@# J"K#L +355737VMMrNN1b1s1b1Pl&1C&QuP&1S 3+C&QSPl&1C&Q\UC&Q&3+PD/@, J"K#K\'L!#++53265#3a^B3,'}N]e\m,/ .C>X JKPX@[%K#K['L@%K[-K#K['LY@ !%##+4&#"#3>32+532623.CspQ2ObSV8 (& 4.160@"(XT\Ud'3P&2&&Rp\3k&2&&R]O3l&2& &Rb`O'KPX@ "!J@ " !JYKPX@!a [*K[#LKPX@5a [*K[*K[#K[#L@1a [*KY"KY#K[+LYY@&$3(" +)#".54>32!!!!!%3267.#"X;%K}Y22Y}K$>:E pe10ep,WWVX-oin&P '3@ JK.PX@#a [-K [+L@-a [-K [-K [+LY@)("!/-(3)3%$!'"'"$$$" +%#"&'#"&54632>32!3267'"3.2654&#"Mi^@;0/JK PX@,hf[*K[+K\'LK PX@)hf`[*K[+LK PX@*pf`[*K[+LKPX@.pn[*K[+K\'L@+pn`[*K[+LYYYY@ $%$%+#+?32654&/.54632.#"#"&'732654&57.1y XDEO.6w]ix|y GIDI5=V[vh 13B;7?I"%$n66/)%* X[]jgW*=3(%) ZSWe $&**3%( 0)^)+>@<;0/JK PX@$hc[-K\'LKPX@%pc[-K\'L@"pc`[-LYY@ $%$%+#+?32654&/.54632.#"#"&'732654&57.)i 6./.#.AEMoWVj f0/*.&&>LORN13B;7?I"% K_%$ @?FPO=( C>;P &**3%( 0%J1bl&6)&V\+o&7S 3+__&WScol&7vjKPX@)pY"KY%K\#L@'paY%K\#LY@ #! +3##"&=#53533#;i:LePbPNNs%%ES`f{{f,#o/@,aY"K#L +5!#3#'#535[x6rra a__9@6r  aY%K \#L +!#"&=#535#53533#3#;_PbPMMNNstt%(CS`'KZe{{eZK%."Jj&8>&XabJP&8>&XpbJk&8>&X]YJ&8>&X_Jl&8>&XbhJ2$]"JK*PX@"K[+K['L@_"K[+LY@ $$+"&5467.533265332677R#zUTRQz]`-   '033f\NN\gr +N>5%B@?"#J%K\+K['L  %%+"&54675#"&533265332673I&S2O^s120@s,  $23"5:!'XTB-28.$ )Ol&:9  &Z[ l&<~ >&\[8 a&<6el&=0&]u6ea&=0&]^6el&=0&]\83#7@4 Ja[*K[+L! ##&'"+467!.#"'>32#".267!3 dWJ]x 6Of:0UvGDsQ-5Td i@# ]iJ: 6U:UX.-T{bX]]Pl&'<P&'=&&G=;P&/-HP>&/MYC>&OMP &1-P>&1MC>&QM;Jl&8>&X\IP&.%&pP&'=P&']&&G];l&.%&uM3l&&&u1b&6S 3+)&VSo&7S 3+__&WSc P&< >&\pR> @%K\'L !#++53265R\<&+& \Td&*(@@=Ja[-K[+L +#"&5467!.#"'>267# ku#=T1ktR@2.8 frU-< :w>^?!m EC,?Td6318* z@Js"L+3#'#ylfBCeSS* y!@Js"L+'373kfAAgk PP.X !@`"L   +"&'332673KGXYFL;"";L(2@Y"L+53(z2pp$  1@.cW[O     +"&54632'2654&#",;;,-;;- 8.-99-.8<57EJK PX@f\'L@r\'LY@  +"&5467332671G,#c,  %./"7 -M#&Q^@ JGKPX@h["K["L@p["K["LY####+54632326=3#".#"#.+  L)*" &1@ /?& @Y"L+3#%3#rsauc u(`@UYM+53(zpp$.?o 0+!!5-5!!/jimjCD0+332653#5#"&'Cs020AsnP-* +38.$> ( =0+3#5!#;#"&=#dFL#9DB}gg-gDNP5l&(uP5a&({=@: JcYK[L#$! +!532654&#"##5!#>32#!=BGK(Kz9Q'zki.7906rr [vv[Pn&|3+3 4@1Ja[K[L(%"#+.#"!!3267#".54>32xUQQj  jSPTwHxV0/VxI6N_\i^`O4cz*VZWW,u1b6P,'f&,3+E- 'iKPX@ cYK[L@*cYK[K[LY@ #!' '!'$! +7>45!32#!#+5326%#32654&הwp`e4",6oD9:(kv}9jskl6)]]W#vct.3;77P>@; caK\ L$! +33!332#!!#32654&Pz7zwpBE9;jsklH3;777@4JcYKL##+5!#>36#54&#"#9 V.}uyAJ(Kz6rr ivìH@6Pl&.Pl& |i&zPq MK PX@gKZL@sKZLY@ +##5#3!uzIX6$Pa 6@3cYK[L   !+3!!32##32654&Puw{pA:;n_kkd//34.Pg%P@YKL+3!!Pr q3@0QYKYL +3>7>45!3#5!!# D +^v2rEZgf$32#"&'732654&+532654&WHQyzw88;C~ x VKJN?Cfg>6EEC9cqba7L IC_mni;B53--g/+-2P $@!JKL +!#33'yQXPi&P. !@YK[L!'+7>5!##+5326z`e4",6(kv}9X6)]]W#vct.P60P+32P!@YKL+3!#!P3532#2>54.3"yEyY44ZyDxEyX33XyE+M9!!9M":M*+M9"Q"FlKJlE!MM"ElIJmF"Q#+E12D*1F+i*E ;Pq )@&RKZL +3#5!3!^vzI66O)@& JdKL#"+32673##"&=3CP(H"zz T0uzHB2X  lzP %@"KZL +333333Pzzz66XPq -@*RKZL +3333333#5Pzzz^u66 6@3cYK[L   $!+5!32#!2654&+9woD:;C6rjskl663;77P0 4@1cK\L   $! +332#)3%2654&+Pzwofz1D:;CjsklXl3;77Pa *@'cK\L   $!+332#!%2654&+PzwoD:;Cjskll3;77/4@1Ja[K[L&%"#+?3267!5!.#"'>32#"&/x ]PTd  `SJ`wqGtS-{9Ka]j^\G<kq*VXpP"sKPX@!a[K [L@)aK[KK [LY@""  +"&'##33>32'2654&#"vzzvJ{W00W{Jcnncdkk 厗.XTVX-nnoon(\ 2@/Ja[KL&+!#5##.5463!";5\zDHp*B;:CgSkll5977.D2(R@ JHKPX@[K[L@c[LY@#!(("+%#"&=4>7>7>322654&#"|jz|'Hh@0R" $Y+V\[1\o<=>96LEpOWwK% k  Q\%(uQDEH>1QNC C@@Jc[K[L   ! +332##32654&#32654&CS[)+&RZgk%"!uv( "A@< 9+@JotC@YKL+3!#CKfz4+@(QYKYL+73>7>7!3#5!#3#4uJpqęfC)%wc솆c':1W$H6@3JaK L +!5##'3353373#'#A5zr8p8s~|5彽#(D@A&%Jc[K[L#! ((+%2654&+532654&#"'>32#"&'734'0NO*#+.39 htZ`g'%'0sdcp i8R#R",(LQM@#7 5.HOUN%0C @ JKL+3#33#uoypMOC&TX 3+C -@*JaKL +33373#'#CsD~C似!@YK[L!'+7>5!##+5326nvsBQ4$MQM~:84_Mf(C '@$ JKL +333##CmpkrpC '@$aKL +33353#5#Csss乹&RC!@YKL+3!##Cs~C>S&F!@YKL+5!##s~ff~ >\&>%2?M@J7J K [K [KL53(&;93?5?.*&2(2%%A8A +:3*##5*#.54>7:35"&#263>54&:"#6^C''D_7q7_C''E_8  ?KM>]> =]>?[;JKKI2IKKK [Cz8 )@&RKZL +3#5!33Jp{s~,/@,JdKL##+!5#"&=3326753W;#Z`t2/*s OT.$C %@"KZL +!3333`st~~Cz--@*RKZL +3#5!3333Jpst~~@ 0@-cYK[L  $!+!32+##32654&uT\YYc]\2%&RQRY}&%% C<@9 cK\L  +!3!332#'#32654&ssrT[YX]]1&'RQRY&%% C 0@-cK\L    !+3332#'#32654&CsuU\YZ]]1&'RQRY&%% $4@1Ja[K[L$%"#+?3267#53.#"'>32#"&$h :33<;218 frYh{zkap&1;9W632#"&'#%2654&#"CsU|`ll`} U?;@@;:DE`hwvmbWQKKOOKKQ% 2@/ Ja[KL"+46;#5##7.35#".bWsThu48ll)++DMSK" "$&HCD$z%K@H#J a_K[ KL"!  %% +2+532654&#"##53533#>N*B-2M5(:2/7.BsLLqRBnR_P#afqT80'M44M!&C&u#4@1Ja[K[L$%"#+.#"3#3267#"&54632g643? ?135 hn]hhbjJ"4=6W6=2%G[z{\)V@L 7@4YKKL   +533533qOps2oooo>M'iK"PX@ cYK[L@*cYK[K[LY@ #!' '!'$! +7>5!32+#+5326%#32654&nppU\YZAQ4$XX1&'MQMRQRY~:84_Mf(a&%% C>@; caK\ L$! +3335332+5#%#32654&CssqU\YZYY1&'乹RQRY&%% ;@8 JaK[K L## +3#53533#>32#4&#"CLLqQ2Oas23.C'M44M"'XT+.160C&uC&Cc >&\TF 3+Cz MK PX@gKZL@sKZLY@ +##5#33ps~ >@;ra c\ L! +3#5353!!32##32654&ɿx(ثuwxr?89iXXiy^nhc--33/::@7 cKYK\L$! +3533#32+##32654&qtU_]Ynkk+&'aUDRQGx 3!>@;a[K[L!!  +".54>32"!.267!J{X11X{JK|W11W|KXm  lYZn \ m -XVTX..XTVX-QeZZej[[j& >@;a[K[L     +"&54632"3.267#klmm3CA45A D wwwv;;:<>;;> !@J[KL!"+>;#"#3@F1 /B7r  !@J[KL!$+#3>;#"~y^2<+S62fP-GK PX@fYKL@rYKLY@ +3!53!PTtDRGK PX@fYKL@rYKLY@ +3353#Dpn  -@*aYKL +3#53!!3#PDD b=rb  -@*aYKL +35#535!#3#C99KڂWfyWPq6@3Ja]KL +33333#5##Pzf`v/eCz 6@3Ja]KL +333733#5#'#CsD~dOp C似Pq0@-a]KL +33!33#5#!PzKz^vbCzF0@-a]KL +333533#5#5#CssKqM乹 < >#@ JKL+#53s}X /@,JbKL+!5#53333#쏿~at9a >+@( JKZKL+!##5#53333}q]}yZXatPh)@& JcKL#"+%4&#"#3>32#BP)G"zz!S0tzHA lzCK3>(Z3&PS&1d 3+C`&Qd1Sb&6d 3+)`&Vdl&:3  &ZCl&:  &Zu2a&:G  &ZjP5j&($&HaJ l&< >&\CH^ ,@UYM+!5!,2 i.C@UYM+%!5!2f.iC@UYM+%!5!i;fB $@!HUYM +#5467ŃHA &'BGB$ 7 @GY"L +53'>=HHA '&$BGB$ 7g @GY#L +353'>=HHA '&CFB# B 3@0HUYM   +#5467##5467I@ '&HA &'BGB$ BGB$ 7 +@(GY"L   +53'>=353'>=HHA '&I@ ''$BGB$ BGB$ 7g +@(GY#L   +353'>=353'>=HHA '&I@ ''CFB# CFB# 0 MK2PX@a"K#L@UaYMY@ +#53533#̜o ddM0eK2PX@ a a"K  # L@% Ua a Y   MY@ +5#535#53533#3#̜o cddc8$ @[%L  +7"&546320EE01FFF11FF11F8x&'" '3?KKPX@1 c    d[*K  [#L@9 c    d"K[*K#K  [+LY@7A@54)(GE@KAK;94?5?/-(3)3#!''   +"&54632#32654&#""&54632!"&54632%2654&#"!2654&#"KddKN^^ QQ.%))%%,,}KddKN__#LccLM__B%**%%,-%))%%--9^`]^^][c45243354h^`]^^][c^`]^^][cU4524335445243354 (IJK&PX@ %K#LK.PX@ Y%L@UYMYY+3#'zy% -=JK*PX@ %K#L@UYMY@ +?'3%z yO@"K#L++3>II$x QKPX@c[%L@cW[OY@     +"&54632'2654&#"PZZPQYYQ&))&%**^][``[]^K4<<44<<4({ Z JKPX@rgUZN@rsUZNY@ +#5#5733#'35PUӪ~++ՀKQEE4qm@ JKPX@ac[%L@!acW[OY@ +"&'732654&#"'7!#>32BRT'""#&! S-32'"32654&RWYN?LS"'. 2#BLRJ)'!%%W`c\-1538:9B2c*@'JsUYM+#5!W1OY,t#/A@> JccW[O%$+)$/%/##*"+#"&5467.54632'2654&#""32654&tXLPT!ONNN#&!!&$$$$%('&%''5:86) )1982& )P?+n$q@ JKPX@cc[%L@"ccW[OY@ $$ +"&'73267#"&54632'2654&#";#"##9 F'#%/LpnA"#k+*,GI.J@GJI  a a[*KY#L.-*)('%% +%#!!5>7#53.'#53.54632.#"3#3̝!U+3tiN-kiq v365<ڸ "5jj;&RR _mcQ(79.  R Y1O@L+* Ja  a[*K [ + L11/-(&%%" +753&45<7#53>32.#"3#3#3267#"&'CCKjeyo ;86D  B9:= m {enN Nvxc`-9A@N N@D9-`ezw=W=I@F= Ja   a[*K [+L;94321%%" +%#"&5467#53>7>7#5!>54&#"'>763#3!3267; xhg:  'l423@ s}fcu8 ' >25? LcUY O   O &/,(OZ]P!O   O +*0(:P +@(aY"K#L  +!5!5!##PzVRjjH$_J@G  ca  ["K#L  +#3##5#535#533232654&#ptTTTTn|}A;XqqX>c>fihj?:459%"0+%#"&='>7546323>54&#"rMXR$ 5YCCGkP''N+*ffNe$  NQTLDS1U+"%]&&P !% @ $" 0+"&54632##332654&#"!5!g?VV@ATTy=y ""oOQNPPNOQ +)(*)))+Y"h 0+5!##5373#5#'"*jVrRNpQNBQ[MM@ָ2$  0+%#".54>32!3267"!5."nI^74[JExX3%}OWLy%#t]m2]SN~X0.RsD7:BNE=6197y&' u3+s3+C~&'{3+s3+0&'~3+t3+=&'v3+t3+>& 'x3+t3+Qm&'O3+t3+X 0+!!XFGkFlHK 0+!'3'ZFXHFG  0+!'7'7! FGuFXHK 0+!737dFlHFGx U 0+!!#MddUcdLU U  0+7!5!#U@ddVcAb/e[i 0+73!5![Mc@b/Mc0b@cxi 0+7'3!@cMb/@Mec$0+!5!pwffBW 3r0+!!W$rh:~!-9 3.*$0+#"&'#".54>32>323267.#"%"32654&*@)232673#".#"#>40-gLG41.fNK40-eOD40-fNHYH[ KWHZV4O 0+?#537#5!733#3!~"32>54.53'733Rd88dRRd88dRCqQ--QqCCqQ--Qqvg*ag8dRRd99dRRd8B/SsCBsS00SsBCsS/O=BZO%'@P@M=/.J ccaW[O<;:931,*''  +2#".54>"32>54.4&#"'>323!57>Rd88dRRd88dRCqQ--QqCCqQ--Qq% #.W XNKU26f%$8dRRd99dRRd8B/SsCBsS00SsBCsS/!'!;MK<3D'GPRz+%'De@bA ;/.J< I  c a  ccW[OCB@?>=9731,*''  +2#".54>"32>54.#"&'732654&#"'7#5!6Rd88dRRd88dRCqQ--QqCCqQ--Qqs^VL^ X/-(,,+"DHK8dRRd99dRRd8B/SsCBsS00SsBCsS/sENB< "DgNX]>%'255,JK PX@3ph  c bW[O@4pp  c bW[OY@43210/.-+*)(''  +2#".54>"32>54.#5#533#'35Rd88dRRd88dRCqQ--QqCCqQ--Qq8]ɉ778dRRd99dRRd8B/SsCBsS00SsBCsS/[VNN%'Ff@c>9 8,+J  c a  c cW[O)(B@=<;:640.(F)F''  +2#".54>"32>54."&'732654&#"'7!#>32Rd88dRRd88dRCqQ--QqCCqQ--Qq@M` Z 0%(++() Y' 2?\\8dRRd99dRRd8B/SsCBsS00SsBCsS/?; $"" R\ AKFQ%'@Li@f218J  cc  c  cW[OBA)(HFALBL<:64/-(@)@'' +2#".54>"32>54."&54632.#">32'"32654&Rd88dRRd88dRCqQ--QqCCqQ--Qq@]dhZKUZ(&.8:*B`_U&0-)&.*8dRRd99dRRd8B/SsCBsS00SsBCsS/lntv:6>BCDCR%'.Q@N-J pcaW[O(((.(.,+*)''  +2#".54>"32>54.#5!Rd88dRRd88dRCqQ--QqCCqQ--QqW8dRRd99dRRd8B/SsCBsS00SsBCsS/XW]%'?KWj@g:.J  c  c c  cW[OMLA@)(SQLWMWGE@KAK53(?)?'' +2#".54>"32>54.2#"&5467.546"32654&"32654&Rd88dRRd88dRCqQ--QqCCqQ--QqC[Y#"'`Z[b%#!]X+./*)-,*.21/,138dRRd99dRRd8B/SsCBsS00SsBCsS/SD:%- 2%;KJ;%3 1!9FO%'@Li@f821J  c   c ccW[OBA)(HFALBL<:64/-(@)@'' +2#".54>"32>54.2#"&'73265#"&5462654&#"Rd88dRRd88dRCqQ--QqCCqQ--QqD]chZKUY(&/8;)B`_T&1/(&-)8dRRd99dRRd8B/SsCBsS00SsBCsS/Tlntv:6>BCDCR%'3:NK"PX@ 8 76 J@ 8 76 JYK"PX@.  c   c cW[O@4  c   ca cW[OY@'<;)(FD;N"32>54.2#"&546#'732>54.#"Rd88dRRd88dQCpQ--QqCCqQ-.Qq=JJ="32>54."&54632'2654&#"Rd88dRRd88dRCqQ--QqCCqQ--QqCYeeYZddZ-33-+558dRRd99dRRd8B/SsCBsS00SsBCsS/rpnttnprQBOOBBOOB%+;@8c_[%L! '% +!+  +2#".54>2654&#"7"&54632Rd88dRRd88dRZddZYeeY+55+-338dRRd99dRRd8rpnttnprQBOOBBOOB`'0+!%!!`fm%,`3 0+7#!!3!!^_>=m-9/*p5} 40+7#4^_>w/*p% 0+2#".54>!5##7#Rd88dRRd88d@7ga*gv8dRRd99dRRd8PdZB>%," 0+2#".54>!5#7>54&#">32Rd88dRRd88d$%Pf61UKNX W.# %8dRRd99dRRd8+zRPG'D34&75!3>32#"&'326Rd88dRRd88d LHݑ!+--(-/ X _LV_8dRRd99dRRd827<^XMkB! 535##3'7Rd88dRRd88d778dRRd99dRRd8[N V[%2  0+2#".54>2654&#"735!>32#"&'Rd88dRRd88dUT\\?2 Y )(++(%0 Z `8dRRd99dRRd8QFKA \R ""$ ;?%,8 2-& 0+2#".54>2654&#"46327.#"72#"&546Rd88dRRd88dUT_`B*:8.&(ZUKZhd\*+/&).18dRRd99dRRd8RCDCB>6:vtnl! % 0+2#".54>35!3Rd88dRRd88d&i8dRRd99dRRd8R]W%+7C @ =81, 0+2#".54>"32654&'>54&2#"&546"&54632Rd88dRRd88dRW]!#%b[Z_&"#X[*-.)*0/+/23.*318dRRd99dRRd8F9 3 2%"3267#"&'32654&"&54632Rd88dRRd88dQT_`B);8/&(YUKZhc]**.&(/18dRRd99dRRd8RCDCB>6:vtnl %&2 @ ,'!  0+2#".54>"32654&#7%"&54632Rd88dRRd88d=JJ=>IILT 18dRRd99dRRd8baabE;>H9YY99YY9'>\0+#[p46*>_0+3+p64H>  0+!#3%3#HgppGGWWW8>  0+!53#5#3ppFFjWWWe '*@'J[*KY#L('+!53.54>323!5>54&#"*>(ڌ)oa_xd'LA0 t`%]J{V0.UyJ^*`s 2AM&hyy; #@ GUYM +53'>7Bw4? ! aH  @  0+3#%3#3+53265phRphsTWH,**`Ve,, 0+533533V-Us*0+ # #̀X;; * ("0+74>32#"&32654&#"32654&+;#?X4bs869B~hrxpj:D:14IG45CJ?j6R8fR3MMEanqmC3,+7A@;:597.'0+%'.546?>54&#"'>323267 x[ZmJN@.&*%,8 gnVYaSI?,"4'0< LLJG;D & DHQ>>A '%(4J 0+!5##'333373#'#A5zr8p8s~|54(%0+732654&+532654&#"'>32#"&l ?.6A?6\Z3<7.-Ag|Y^o567=h^v%,+930:_6-.6.+OReV5PN?_kV>X>&XTU3+CN 0+# #OyvyCQC6P>zB0+!5#"&53326533#5S1O^s110AsKp=!&XTB-28.$,0+#5#"&=3326=sI*O]t*..<ZW(20*>0"0+#5#"&'#"&533265332650oN1;L[4M_s/1,@t/1,@>!'1%++XTB+48.%+37.%>z{&0+3#5#5#"&'#"&533265332650KqIN1;L[4M_s/1,@t/1,@>!'1%++XTB+48.%+37.%I 0+%#"&=#5!>3232654&#"Iq`cmD'#A19'/45.&:ZpmWg-C>.2:3,3++= 0+73>32#"&732654&#"=pD'#B1r`cmp:'/45.&;*-C-ZpmL.2:3,3++(("0+%#"&5467'.546;#"2654&#"~jhfH "'KB f4K<;>9;@Bn|q]l 5!69b ;dMBDKLDBLYc°3+!0+#53267#"&546?>=L{'-!#639? s {opn>$)E%/(#&/5+RhjSEK$ n(:aa3+%n-:bb3+ n :mbb3+%n:{bb3+.'YKK3+.(KK3+.(iKK3+>4M'#0+4>7.74>7.>%?X2:%C3gP:3W>#%?X2:%C3gP:3W>#Ovc&GSexDEG&fyMOvc&GSexDEG'fyB4Q'#0+'>54&'7'>54&'7Q%?X2:&D2jM93X>#%?X2:&D2jM93X>#Mwd&G UewBBG&exOMwd'G UfvBBG&ex>l0+4>7.>%@X3>'E2dU>3X?#ROn[&K M[nA}GK&_qDr0+'>54&'7r%@X3>'E2dU>3X?#JOn[&K M[nA}HK&_qHK0+!#3Hcfede8;0+73#5!!8e$0+5326=46;#";#"&=4&#+8XSF5+'****'+5FSX8+h/>acOe%3e/2$0+#"+5326=467.=4&+532;+8XSF5+'*++*'+5FSX8+/>^dOe$6a/>M'#0+4>7.74>7.>%?X2:%C3gP:3W>#%?X2:%C3gP:3W>#TOn\&FL]qDEG&^qNOn\&FL]qDEG'^qBQ'#0+'>54&'7'>54&'7Q%?X2:&D2jM93X>#%?X2:&D2jM93X>#NMn]&G N]oBBF&]pOMn]'G N]oBBF&]p'\0+#[pLN*_0+3+pcNLH  0+!#3%3#HgppGGcfWHWW8  0+!53#5#3ppFFWWWH&0+3&lcf&0+#3lkcfp0+3pgcfp0+33pgggvv6G#dd3+>k""3+2  0+"&54632.#"2654&'Y *UYVY , ^.Lx z|y1N $f  0+"&54632'2654&#"ETOOTTOO nwyzvvzyw$f  0+"&54632.#"2654&'E.TUTU ) ^1Pz {|y+G 2m  0+73'733!V;px]p5P&Z)o  0+!#5!533#%!tLM2]ieW;KM3/*22,/1a31256014/X$xor r3+/plyt t3+4lqst t3+,okts s3+({lt t3+4qks s3+.qps s3+2cl t t3+,tq t t3++np s s3+$9x 3+/<py 3+4<ls 3+,7ot 3+(<{ 3+47q 3+.7q 3+2<c 3+,6t 3++7n 3+lP5lPl&3l |l&P0b&W 3+/l&Pl&(\l&.$C&u& >C&u 3+$&uC&u%&u$-K2PX@ Y"L@UYMY+3#Ek?Ml@UYM+3#ysol5l@UYM+#'^psll@UYM+3#%3#~ui pl(l@Jri+3#'#|vt@@tlKKl@Jri+'373us@?tuKK"Qk LKPX@fW\P@rW\PY@   +"&'332673MGWXGL<#" 2? *PP@UYM+!5!P&U3da*@'UYM+533533oSommmm!a@UYM+53!|qq*3 1@.cW[O     +"&54632'2654&#"8ML99KK9 !!H99GG99HE#""#i AKPX@fW\P@rW\PY""+332673#"&d#*+"eV\[Xi"''"KNNVJ$b;(< C3   E]     4,  } v d x >K  <w < 1  O Copyright (c) 2018 LLC Contrast Foundry (LLC CoFo). All rights reserved. Copyright (c) 2018 LLC Contrast Foundry (LLC CoFo). All rights reserved.CoFo Sans MediumCoFo Sans MediumRegularRegular1.001;COFO;CoFoSans-Medium1.001;COFO;CoFoSans-MediumCoFo Sans MediumCoFo Sans MediumVersion 1.001;PS 1.002;hotconv 16.6.54;makeotf.lib2.5.65590Version 1.001;PS 1.002;hotconv 16.6.54;makeotf.lib2.5.65590CoFoSans-MediumCoFoSans-MediumCoFo Sans is a trademark of LLC Contrast Foundry (LLC CoFo).CoFo Sans is a trademark of LLC Contrast Foundry (LLC CoFo).LLC Contrast Foundry (LLC CoFo)LLC Contrast Foundry (LLC CoFo)Designer: Maria Doreuli. Team: Irina Smirnova, Elizaveta RasskazovaDesigner: Maria Doreuli. Team: Irina Smirnova, Elizaveta Rasskazovahttp://www.contrastfoundry.comhttp://www.contrastfoundry.comhttp://www.contrastfoundry.comhttp://www.contrastfoundry.comCoFo SansCoFo SansMediumMedium  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjikmlnoqprsutvwxzy{}|~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~uni0000uni00A0uni00B2uni00B3uni00B9AmacronamacronAbreveabreveAogonekaogonek Ccircumflex ccircumflex Cdotaccent cdotaccentDcarondcaronDcroatEmacronemacronEbreveebreve Edotaccent edotaccentEogonekeogonekEcaronecaron Gcircumflex gcircumflex Gdotaccent gdotaccent Gcommaaccent gcommaaccent Hcircumflex hcircumflexHbarhbarItildeitildeImacronimacronIbreveibreveIogonekiogonekIJij Jcircumflex jcircumflex Kcommaaccent kcommaaccentLacutelacute Lcommaaccent lcommaaccentLcaronlcaronLdotldotNacutenacute Ncommaaccent ncommaaccentNcaronncaron napostropheEngengOmacronomacronObreveobreve Ohungarumlaut ohungarumlautRacuteracute Rcommaaccent rcommaaccentRcaronrcaronSacutesacute Scircumflex scircumflexuni0162uni0163TcarontcaronTbartbarUtildeutildeUmacronumacronUbreveubreveUringuring Uhungarumlaut uhungarumlautUogonekuogonek Wcircumflex wcircumflex Ycircumflex ycircumflexZacutezacute Zdotaccent zdotaccentuni018Funi01C4uni01C5uni01C6uni01C7uni01C8uni01C9uni01CAuni01CBuni01CCuni01D3uni01D4uni01E2uni01E3uni01F1uni01F2uni01F3AEacuteaeacute Oslashacute oslashacute Scommaaccent scommaaccentuni021Auni021Buni0232uni0233uni0237uni0259 acutecomb dotbelowcmbuni0394Sigmauni03BCuni0400uni0401uni0402uni0403uni0404uni0405uni0406uni0407uni0408uni0409uni040Auni040Buni040Cuni040Duni040Euni040Funi0410uni0411uni0412uni0413uni0414uni0415uni0416uni0417uni0418uni0419uni041Auni041Buni041Cuni041Duni041Euni041Funi0420uni0421uni0422uni0423uni0424uni0425uni0426uni0427uni0428uni0429uni042Auni042Buni042Cuni042Duni042Euni042Funi0430uni0431uni0432uni0433uni0434uni0435uni0436uni0437uni0438uni0439uni043Auni043Buni043Cuni043Duni043Euni043Funi0440uni0441uni0442uni0443uni0444uni0445uni0446uni0447uni0448uni0449uni044Auni044Buni044Cuni044Duni044Euni044Funi0450uni0451uni0452uni0453uni0454uni0455uni0456uni0457uni0458uni0459uni045Auni045Buni045Cuni045Duni045Euni045Funi0462uni0463uni0472uni0473uni0474uni0475uni0490uni0491uni0492uni0493uni049Auni049Buni04A2uni04A3uni04AEuni04AFuni04B0uni04B1uni04BAuni04BBuni04D8uni04D9uni04E8uni04E9uni1E46uni1E47uni1E62uni1E63WgravewgraveWacutewacute Wdieresis wdieresisuni1EBCuni1EBDYgraveygraveuni2004uni2007uni2009uni200Auni200Buni2012uni2070uni2074uni2075uni2076uni2077uni2078uni2079uni2080uni2081uni2082uni2083uni2084uni2085uni2086uni2087uni2088uni2089liraEurouni20B4uni20B8uni20BDuni2113uni2116 estimateduni2153uni2154 oneeighth threeeighths fiveeighths seveneighths arrowleftarrowup arrowright arrowdownuni2196uni2197uni2198uni2199uni2206uni2460uni2461uni2462uni2463uni2464uni2465uni2466uni2467uni2468uni2469uni24EAuni24FFuni2610uni2611uni2713uni2776uni2777uni2778uni2779uni277Auni277Buni277Cuni277Duni277Euni277Funi3008uni3009uni301Auni301BuniA7B6uniF6C3uniF6D4uniF8FFCRI.altuni00CD00A40301 uni0407.alti.TRKuni00ED006A0301 uni0457.alt uni041B.BUL uni0432.BUL uni0433.BUL uni0434.BUL uni0436.BUL uni0437.BUL uni0438.BUL uni0439.BUL uni043A.BUL uni043B.BUL uni043F.BUL uni0442.BUL uni0446.BUL uni0447.BUL uni0448.BUL uni0449.BUL uni044A.BUL uni044C.BUL uni0431.SRBexclamdown.capquestiondown.capguilsinglleft.capguilsinglright.capguillemotleft.capguillemotright.cap hyphen.cap endash.cap emdash.cap dblparenleft dblparenright parenleft.capparenright.capbracketleft.capbracketright.cap braceleft.capbraceright.capdblparenleft.capdblparenright.cap uni3008.cap uni3009.cap uni301A.cap uni301B.cap slash.cap backslash.capbar.cap brokenbar.capat.capcopyright.pnum_lnum zero.zerozero.tnum_lnumzero.tnum_lnum_zero one.tnum_lnum two.tnum_lnumthree.tnum_lnumfour.tnum_lnumfive.tnum_lnum six.tnum_lnumseven.tnum_lnumeight.tnum_lnumnine.tnum_lnum zero.dnomone.dnomtwo.dnom three.dnom four.dnom five.dnomsix.dnom seven.dnom eight.dnom nine.dnom zero.numrone.numrtwo.numr three.numr four.numr five.numrsix.numr seven.numr eight.numr nine.numr uni04100301 uni04150301 uni04180301 uni041E0301 uni04230301 uni042B0301 uni042D0301 uni042E0301 uni042F0301 uni04300301 uni04350301 uni04380301 uni043E0301 uni04430301 uni044B0301 uni044D0301 uni044E0301 uni044F0301 caron.alt acute.cap grave.caphungarumlaut.capcircumflex.cap caron.cap breve.cap tilde.cap macron.cap dieresis.cap dotaccent.capring.capCyrbreve jkklnoop%&)*45=>CDLMWXXYZ[[\ bTDFLTcyrl6latn BGR .SRB N    .AZE .CRT .DEU .MOL LNLD lROM tTRK       aaltncaltvcase|ccmpcrcydligfraclnumloclloclloclloclloclloclsinfss01supstnum  BJRZbjrz "*2:BJhpx>@D$<<$V  L  D v     V  2  n0  P# $$$$%%"%@%^%|%%%%%%V{|W}~ZptuqSTUVY]o^_`abcdefghijklmn\wxrsV #,>?@CL^_`chjkmpu{!"[\]^abpNOPQTyz, /v gedff  gedffSTUV!"STUV!"6",-MX-[M,LL*]^_`abcdefghijklmn (2<FPZdnx"" (2<FPZdnx &0:DNXblv  &0:DNXblv $.8BLV`jt $.8BLV`jt",6@JT^h",6@JT^h *4>HR\ *4>HR\(2<FP(2<FP&0:D&0:D$.8$.8",",  $4styy  6Lstyy styy "8Ndstyy styy styy $:Pf|styy styy styy styy &<Rh~styy styy styy styy styy (>Tjstyy styy styy styy styy styy  *@Vlstyy styy styy styy styy styy styy " ,BXnstyy styy styy styy styy styy styy styy $ .DZpstyy styy styy styy styy styy styy styy styy  T'{|v}~ptuqwxrs' #>?@C^_`chjkmpu{[\]^abNOPQTyz  F yst   yst   yst     F         st yy  $   70t "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz= =|= =|= = |= =|== ==|=L =L|< <|< <|< < |< <|<< <<|<K <K|; ;|; ;|; ; |; ;|;; ;;|;J ;J|: :|: :|: :|: :|:: ::|:I :I|9 9|9 9|9 9|9 9|99 99|9H 9H|8 8|8 8|8 8|8 8|88 88|8G 8G|7 7|7 7|7t 7t|7 7|77 77|7F 7F|6 6|6 6|6s 6s|6 6|66 66|6E 6E|5 5|5 5|5y 5y|5 5 |55 55|5D 5D|o5 o5|oU oU|k& k&|kF kF| (!'A&l "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz "*2L@L~L@L~L @L ~L@L~L=@L=~LL@LL~K@K~K@K~K @K ~K@K~K<@K<~KK@KK~J@J~J@J~J @J ~J@J~J;@J;~JJ@JJ~I@I~I@I~I@I~I@I~I:@I:~II@II~H@H~H@H~H@H~H@H~H9@H9~HH@HH~G@G~G@G~G@G~G@G~G8@G8~GG@GG~F@F~F@F~Ft@Ft~F@F~F7@F7~FF@FF~E@E~E@E~Es@Es~E@E~E6@E6~EE@EE~D@D~D@D~Dy@Dy~D @D ~D5@D5~DD@DD~)t "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz= =|= =|= = |= =|== ==|=L =L|< <|< <|< < |< <|<< <<|<K <K|; ;|; ;|; ; |; ;|;; ;;|;J ;J|: :|: :|: :|: :|:: ::|:I :I|9 9|9 9|9 9|9 9|99 99|9H 9H|8 8|8 8|8 8|8 8|88 88|8G 8G|7 7|7 7|7t 7t|7 7|77 77|7F 7F|6 6|6 6|6s 6s|6 6|66 66|6E 6E|5 5|5 5|5y 5y|5 5 |55 55|5D 5D|o5 o5|oU oU|k& k&|kF kF|l "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz "*2L@L~L@L~L @L ~L@L~L=@L=~LL@LL~K@K~K@K~K @K ~K@K~K<@K<~KK@KK~J@J~J@J~J @J ~J@J~J;@J;~JJ@JJ~I@I~I@I~I@I~I@I~I:@I:~II@II~H@H~H@H~H@H~H@H~H9@H9~HH@HH~G@G~G@G~G@G~G@G~G8@G8~GG@GG~F@F~F@F~Ft@Ft~F@F~F7@F7~FF@FF~E@E~E@E~Es@Es~E@E~E6@E6~EE@EE~D@D~D@D~Dy@Dy~D @D ~D5@D5~DD@DD~ >A{}*4>HR\fpzccccccccccccccccccy~,O,O\\pppppYpY+, yst      WY\,, pp   xDFLTcyrl"latn<BGR SRB (AZE (CRT (DEU (MOL (ROM (TRK (cpspkernv~     !#%')+-/13578:<>?BEHJLOQSUWijklmnopqrstuvwxyz{|}~X]  @(.DZ Bd(NtH^d^"0:Dfx2HHHHH  ( 6 P V \ P P  >   B H b l v  P B   T j p z V B B  6 V 99;Y[Y `   }@BI 9;|~ 9?Y|d||~ "9?| |~9|~ "9d} 9|~ 9;|~ |9;[ 9;?|~ [| " ;[|~),A 5+6$ =& #[w!3F/,/  | '(83'.  #9IYw "| $ 9?HY ("..@2(., " #I  #?Y99;9IY9Y[EKNOD,2,2YI6MLPQSUWBY2Z2 42=(G222IBMLPQSUWB%  4=0GHFGHJRTX),A 5+6$  (*,.02=AINR "q}|~q| q}|~|~ "mm?f|~tttm " q}_fo|~ q}|~n ^_`jo|m  bf #?^_`jo"  @"4?@ `  ,2m}vvp*v"3"L,[9Y&IY\bf^bf^`j9 9q}x 9}v9; "#%)379:;<=>?IY[\^cdegw!#%35678:<?LUWXklnqrstuyz|}W\]^_fghoq{Z|`u  882f& s  v z $        6 A&C  2 {   %gcg#@&"!bb ABHCDKKEFGKKHHIJLMNOP QRS^TUVWXY^ZZ[R\]_>`?a eAAAAAACBCCCCKKKKHKHHHHHHMMMMOQQQQQQTSTTTTWWWWZ[[[[[[aRaAQAQAQBSBSBSBSH^H^CTCTCTCTCTDUDUDUDUKVKVKWKWKWKWKEXEXFYG^G^G^G^KZKZKZVKZH[H[H[CTI\I\I\J]J]J]J]L_L_L_MMMMMMN`OaOPPPHPEXXEXXMCTPCTH[J]L_OaX[ll'mk(rr)*+nrsrj,umqlnurrnrrror-kms./qrrqprpoorv0~yzz{{x{6~~||{{yy7x8||wz9:o{;m<mnzq~tt=wo{o{KZJ]N`N`N`CTOacchihi geErWXj23z4z5ww~~}}1ffddd$ jlrosroorvy{{{QP*G*:5DKTWVH9>=RJ<O34%7L  F r&   @ASMsI rrrr          rrrr r&               %%%     & 'h\ (ZX-'' (]Y[ -/+mttU"0,ttt!tt"tt"#$"jt`tt#tt,t1""t"fqgp!ttt$tck'"d.tttt).).e'"   s?Nr^n_0o22ltt2a22#bi;CBE86'(-/+"t"$t,t1;   "?DS2UWBY^EccKmmLstMwwOyyP{{QRjq'))++--//113HJZ irt'TUV]_bhmns W[]beiloqx{{}}ideoromnDFLTlatn$ ` `դ'ח% חplugins/limit-login-attempts-reloaded/assets/css/fonts/CoFoSans-Medium.ttf000064400000366014147176754540022756 0ustar000BASE/;PFFTM\ GDEF$&'GPOS~ERTLGSUB,v(T*OS/2aGq`cmap Hcvt O<Xdfpgm( gasp'glyf3$Xheadx<6hhea\t$hmtxz 0loca"N6maxp  name92: postmAJprep}woA/K5_<ח% חBkS(8w1aXKX^" COFO   (dM1YE F.h")E?D H'.8B2p'(#/5F!>54"UVUu6P3PsPbP3PPPFPPP3P3P1J   6HB8B-*..FC&E& $nD(=C@ CCtC=C(&FCF&gC)};>    0Gp2@1YPC#GpS6+;>d$1 O:4p2*H4,*$(IC'/}#1%0*=3sPsPsPsPP P33333Y3JJJJ PLC......I.& $ $ $ $C-"=C(&(&(&(&(&H-&;>;>;>;> EC ...3&3&3&3&PE& E&sP $sP $sP $sP $sP $3D(3D(3D(3D(P= < OCP@P CFPCFP:FPCFPCS P=CP=CP=C=CP=C3(&3(&3(&Ot&PgCPg:Pg-1)1)1)1)}}yJ;>J;>J;>J;>J;>J;>    6060603BPP<&P]PChPP5CJ;>I.BPP<&I.3-&1)}  (**.($#5t#&($?@C`sPsP(P31P# 2PPP PPP(P sP1PPP PP3PP3 h. P6PP PP/P(.52CC@ $#>C>CC,C>C(&8CFC& & EC ,&C9CdCC$C% $ $,C #)@(;C=C>C 4C b3(&  ,PD(  PCPRC    P=C3(3(&P=C1)   sP $  @ P^*.. B7 7B7700\88"M M%y$(4.2,+$/4,(4.2,+9G=:$IP'"27C0=>Q X K  K x U [ x$W:FVUU>%>%>%>%>%>%>%>%>%>%>%>%``4>%>%>%>%>%>%>%>%>%>%'*H8Te;(d2*P@C4;.D(:>:> C =CsCN>,s>>m= (1YM M%1 1%.*..>B>DH82>B'*H8&&GpGpu6;>2$$25&)1.45/$/4,(4.2,+$/4,(4.2,+sPP3 P/P(. $>C(& C$C%$M5(r"*z*3!^**~7~37Y#_cuGc      " & 0 : D p y !!!"!.!T!^!!""""H"`"e$i$$&''0 0 927Y#brFb      & 0 9 D p t !!!"!.!S![!!""""H"`"d$`$$&''v00{uh[S;%"bAigY?93)!e/sleb^ (UA10F6Z V   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`aqdeivokuj20r34ghlzcn1.m{b7wU[ap]^_xb`\, UXEY KQKSZX4(Y`f UX%acc#b!!YC#DC`B-, `f-, d P&Z( CEcER[X!#!X PPX!@Y 8PX!8YY  CEcEad(PX! CEcE 0PX!0Y PX f a PX` PX! ` 6PX!6``YYY+YY#PXeYY-, E %ad CPX#B#B!!Y`-,#!#! dbB #B CEc C`Ec*! C +0%&QX`PaRYX#Y! @SX+!@Y#PXeY-,C+C`B-,#B# #Babfc`*-, E Ccb PX@`Yfc`D`-, CEB*!C`B- ,C#DC`B- , E +#C%` E#a d PX!0PX @YY#PXeY%#aDD`- , E +#C%` E#a d$PX@Y#PXeY%#aDD`- , #B EX!#!Y*!- ,EdaD-,` CJPX #BY CJRX #BY-, bfc c#aC` ` #B#-,KTXdDY$ e#x-,KQXKSXdDY!Y$e#x-,CUXCaB+YC%B %B %B# %PXC`%B #a*!#a #a*!C`%B%a*!Y CG CG`b PX@`Yfc Ccb PX@`Yfc`#DC>C`B-,ETX#B E #B #`B `aBB`+u+"Y-,+-,+-,+-,+-,+-,+-,+-,+-,+-, +-), .]-*, .q-+, .r-, +ETX#B E #B #`B `aBB`+u+"Y-,+- ,+-!,+-",+-#,+-$,+-%,+-&,+-',+-(, +-,, <`--, `` C#`C%a`,*!-.,-+-*-/, G Ccb PX@`Yfc`#a8# UX G Ccb PX@`Yfc`#a8!Y-0,ETX/*EX0Y"Y-1, +ETX/*EX0Y"Y-2, 5`-3,Ecb PX@`Yfc+ Ccb PX@`Yfc+D>#82*-4, < G Ccb PX@`Yfc`Ca8-5,.<-6, < G Ccb PX@`Yfc`CaCc8-7,% . G#B%IG#G#a Xb!Y#B6*-8,%%G#G#a C+e.# <8-9,%% .G#G#a #B C+ `PX @QX  &YBB# C #G#G#a#F`Cb PX@`Yfc` + a C`d#CadPXCaC`Y%b PX@`Yfca# &#Fa8#CF%CG#G#a` Cb PX@`Yfc`# +#C`+%a%b PX@`Yfc&a %`d#%`dPX!#!Y# &#Fa8Y-:, & .G#G#a#<8-;, #B F#G+#a8-<,%%G#G#aTX. <#!%%G#G#a %%G#G#a%%I%acc# Xb!Ycb PX@`Yfc`#.# <8#!Y-=, C .G#G#a ` `fb PX@`Yfc# <8->,# .F%FRX +-g,:+?+-h,:+@+-i,;+..+-j,;+>+-k,;+?+-l,;+@+-m,<+..+-n,<+>+-o,<+?+-p,<+@+-q,=+..+-r,=+>+-s,=+?+-t,=+@+-u, EX!#!YB+e$PxEX0Y-KRXYcpB-*B *B**B@ * B@@ *D$QX@XdD&QX@cTXDYYYY" *DdDrraa>>rraa>>2222\fPz*R`FdP  L v & L | : p & v  H p 4J6x2h.X6|84`NNpj2&"n@VZ,F.   * 6 B N Z f r !!t!!!!!!"@"L"X"d"p"|"#^$$$$($4$@$L$X$d$$$%% %%$%\%%%%%%&4&@&R&^&j&v&'N'Z'f'r'~'''''''(P(\(h(t(((()`)l)x)))))))****+,+8+D+P+\+h+t++,,,(,4,@,L,^,j,v,,,,,,--D-n-z------..Z.f.r.~.../D///00 00$000<0H0T1>11222 2,2223333*363B3N3Z3f3r3424>4J4V4b4n4z444445 55"5.5:5F5R5^5j5v555555555556 66*666B6N6t667747N778(8H8R8n8v888889>9P99999:4:::::;$;,;j;r;;;<(<<<<<== ==6=>=F=N=|>>>F>|>>??Z??@H@@@AJAhAAABLBpBBBCCNdNNOOBO~OOPPPQ(Q>QQR8RRS6SSSSSSTTT&T6TFTUUpUVVpVVWWTWnWWWWWX X(XDX`X|XXXXXYPYYYYZpZ[\$\]\]^x__`h``aa aVaab$brbbc^cddd2dNdlddeffffffg g*gBggggh2h:hJhRhjhrhzhhhi:iniiij(j6jDjRj`jnj|jjkk4kZknkkkl2ltllllllmm&m4mBm~mmmnnn.n6n>nTnnnnnnnooo(o8oHoVodoroooooooooooppp"p.p:pBpJpVp^pfpxppppppqq8qZqqr r2rNrrd>  0+!%!! '7d`222j:F%!Y,@)Y"KY#L+7353hp#˄ExDK2PX@Y"L@UYMY@+333P v \ v ))FK2PX@&  sb   a"L@/r  sb U Y MY@+7#537#53733733#3##7#37#jqffhpfFbbbb).R#*1*@'/.('  J]#L+?5.54>753.'#5.54&'>.x =1pq";S1Pgn u 21qs{iPe}y2718%1;66,3[\.G2VVcQ $2Y\]cVU`&' /() -"F '3KPX@+   c  d[*K [ #L@3   c  d"K[*K#K [ +LY@')(/-(3)3#!''   +"&54632#32654&#""&54632'2654&#"KddKN^^ QQ.%))%%,,LccLM__M%))%%--9^`]^^][c45243354h^`]^^][cU45243354),6~KPX@43# J@43# JYKPX@[*K[+L@[*K#K[+LY@1/+)*#+!'#"&5467.54632>77>54&#"3267'&/&aAwX>n`\h[H!d 6!t? 192*+3\RE%@+81!icL\B&Ng`NL[Y)Bm&x2 5+'-03> 4E5K2PX@ Y"L@UYMY@ +3P x )?/l0+4>7.?$@X3>'E2dU>3X>#Ovc&K TdvA}GK&fzD/q0+'>54&'7q%?X3>&E2bV>3X># Mwd&K Vdu@HK&ez ieJ@ JK2PX@ Y"L@UYMY@ +7'7'7'37' Z)bb)Z Q Z)aa)Z il=F//G=lm>G//F>mHAB; ,@)UaYM +%5#53533#dAbb'g @GY#L +353'>=9I@ ''CFB# .YD@UYM+%!5!Y+h8@Y#L+3538B>@r'L+3B"kj2 -@*[*K[+L     +"&54632'2654&#"YVSSVUTT nwyzvvzyw  #@ J"KZ#L+73'733!D;Ȏ:nb^n'B'@$J[*KY#L%"+4&#"'>32!!57>B??R v|w2F*_GL.>FA`|w_-F;6irv1N(\D@AJcY"K[+L +"&'732654&#"'7!5!:32Aux SDLPWD."b~ ^c85>39-Zn[`hu#m (@% Jb"K#L+!#5!533#%!s@\\XjjI/T6@3JcY"K[+L$%$#+!>32#"&'732654&#"'!+ Q)w|w QBMGMH(Eq"8nlh~aW12@97>!b5^(;@8Jc[*K[+L$"(($%&"+%#".54632.#">32%"32654&^}QnBiu HAL^_?6]C&ENOEGLLhz0W|LĩXY&8dy"&5S;<99>=99=!%%@"JY"K#L+3!5!gFt8p>m#/>@; Jc[*K[+L%$+)$/%/##*"+%#"&5467.54632%2654&#""32654&m=423656>IJIKKMJMKTRMKQNaoi_>KM2]ieW;KL3/+12,/1a21267/245^(;@8Jc[*K[+L$"(($%&"+4632#"&'73267#".2654&#"5~QnBiu HAL^_?6]C&ENOEGLLhz0W|LĩXY&8dy"&5S;<99>=99=4&` `3+"g'` `3+U55I0+%%5%5 sɀsV4@]Y%L+!!!!V""ghU55I0+55%U psɀs!<@9Jp[*KY#L!! %*+7546?>54&#"'>3253'-!#639? s {opn>$)uE%/(#&/5+RhjSEK$̄6eG|ANK&PX@& AJ@& AJYK&PX@+c  c dW[O@2  pc  c dW[OY@MKGE(&#&$&(" +#".54>32#"&'#"&54>325332654.#"326754&#"326t>Vg9FuR.-PpB.^Y2#(22($1c3c^[g91[Py( (l\1K2&VN?eE%/TvEKsM'30<47<5 ,@) Jb"K#L + #'!#3?=iXr!Pg C@@Jc["K[#L   ! +3!2##32654&#32654&P#hz,9A6q B7432.#"xQW xJxU.0VxHxTP`klcK>nt.YTVX-vk;MqoP'@$["K[#L !+3!2#'32654&+PqlmqowntqP5 /@,aY"KY#L +3!!!!!P]hlilP5 )@&aY"K#L +3!!!!P[mj3#l@ JKPX@a[*K[#L@#a[*K#K[+LY@##"$%(#+#5#".54>32.#"326=#5g$h?JyT.2X|JzyUKcqpeQgQC#*/YSWX,mk6HqpN5bP '@$a"K#L +33!3#!PzKzzXP@"K#L+33PzXE @"K\#L !#++53265EeeaI44#jap-5P -@*Ja"K#L +3333##PzfeP,@"KZ#L+%!3,$zrrP6 .@+ Jp"K#L +%#33#rĬw>)X*P @J"K#L+!##33wWv3-@*[*K[+L +".54>32'2654&#"J{X11X{JK|W11W|Kennedoo -XVTX..XTVX-mnoonPa +@(c["K#L $!+3!2+32654&+P"pwB<;Cmmlp]:6;53)s@JGK PX@h[*K\+L@p[*K\+LY@%#)) +".54>32''267'3>54&#"J{X11X{JK|W1C9AUH> p~L""nedoo -XVTX..XTb+U?b kf d?oopP| 3@0Ja["K#L !+3!2#'#32654&+PpE?C;;CmmNe^96;51b''@$J[*K[+L+%+#+?32654&/.54632.#"#"&1y XDEO.6w]ix|y GIDI5=V[w66/)%* X[]jgW*=3(%) ZSag^o!@Y"K#L+5!##[z6rr6J@"K[+L##+3#"&53326zzUTRQgf\NN !@J"K#L+!33ƀX '@$ J"K#L +3# #3^yч}X  &@# J"K#L +3373#  铧[M #@ J"K#L+!533񏾽:P6e ,@)JY"KY#L +35!5!!6n+hrpq9pH>K#@ aY'L+!#3He4eB>@r'L+#3lk8>;@aY'L+3#5!!8]ej-B!@Js"L+# #aw~|xf>@Y'L+!5!3h. @Y"L+#3ph.)KPX@ J@ JYKPX@c[-K[+L@#c[-K#K[+LY@'%!%#D#+!5#"&5467654&#"'>32'&3265gK0I^cT">2((. j hWVrp:'-*#3B7"LDKE&*&("AUO` !1(CyKPX@ J@ JYKPX@"K[-K[+L@ "K[-K#K[+LY@&#+33>32#"&'732654&#"CsQ(+L9!}a-GH57A@92J% >]={14>RHFRA<&'@$J[-K[+L$'&#+%#"&54>32.#"326}jl]h$>V22K3g239@>:32J]|>_? ,< !4QJHS2&!yKPX@ J@ JYKPX@"K[-K[+L@ "K[-K#K[+LY@ (#+!5#".54>3253'54&#"326K3.P:!":!#!?_<=_@!X8;@QHETI$7@4Ja[-K[+L&%"+%!3267#"&54>32'"3.B524gi^m}%?U1hr,A 5BE.32#4&#"CsP1Oas23.C &XT+.160@,@)Y"K%K#L+533@zws2pp>3@0Y"K%K\'L +53+53265IzR\<&+&2ppN \Td&*C 1@.Ja"K%K#L +33373#'#Cs=>C@"K#L+33CsXC6"V JKPX@[%K#L@%K[-K#LY@""##$# +33>32>32#4&#"#4&#"CoO1:M[3M`s01,@s01,@?"'1%++YT,+38.+,38.CLJKPX@[%K#L@%K[-K#LY@ ##+33>32#4&#"CpQ2Obs23-D@"(XT+.160& -@*[-K[+L     +"&54632'2654&#"klmm<@@<:CD wwwvaQKKOOKKQC>f@ JKPX@[%K[+K'L@ %K[-K[+K'LY@&#+3>32#"&'32654&#"CrR1+M7!~b+FH57BA92J="% >]<|4?SHFSD<&>!yKPX@ J@ JYKPX@[-K[+K'L@ %K[-K[+K'LY@ (#+5#".54>325354&#"326G3.P;!";S10HntD3;C@;<> !?]<>_A!$8Z8;#"CoK"')1N@&h'*)''@$J[-K[+L+%+#+?32654&/.54632.#"#"&)i 6./.#.AEMoWVj f0/*.&&>LOheXo%$ @?FPO=( C>CTK__)@&rY%K\#L# +!#"&=#53533#;_PbPNNs%%ES`f{{f,#>ZKPXJJYKPX@%K\+L@%K#K\+LY@ ##+!5#"&5332653S2O^s120@s>!'XTB-28.$ !@J%K#L+333yvw   !@ J%K#L+333# # vcfgenjkbfo  &@# J%K#L +!'#7'373ssmif鞞 >"@ J%K\'L!"++5326?33? SK9*!- xx+W@f!a0 ,@)JY%KY#L +35!5!!0ifgf>$3@0Jcc['L$#!,!%!+75326=46;#";#"&=4&#+8XSF5+'****'+5FSX8+h/>xcPe%3}/p>@Y'L+3pgj2>$-@*Jcc['L%!,!% +%#"+5326=467.=4&+532;+8XSF5+'*++*'+5FSX8+/>vdOe$6y/@J,@)Wc\P#"#"+#".#"#>323267JNK64/ fMK72. Of*Ng*Y>@Y%KY'L+3#3#YaG#P:!*@'  J"K#L+!5.546753.'>7"_sv\MVeg 0*+. h dY2.+5] ok ][ZG#20E[[X;O * MCE(9@6J Ic[*KY#L%%&+%#!!5>54&'#53.54632.#"3Ȝ"U14sVkiq v365<  *Cjj H- R!H-_mcQ(79.)F%#-s}#/E@B #J HGcW[O.,(&!-+7'7.5467'7>327'#"&/32654&#"lIr  oIq76tIs pIq67<337733<-Jq8 8oIq sIs76pIp 4::45;:y>@; Jb  a"K  # L +!5#535#53333#3# lΏnkR;R^)R;Rkp>*@'aY'L+33pgggFrr69!3E-@*>1! J[*K['L%#%"+#"&'732654&/.5467.54632.#"'>54&/#wedr s;,/943LKU8,!ua`p r2..43)WKQ6+ $+12K&.-+P_WO +-("%" LL6N?,L\XN (.'"" MI6L<| 3 '-  4#$* +2^$@!Y"L+53353+pRq2oooo>'C@ A@43JK"PX@%c c _[-L@,cc c W [OY@)(><861/(C)C''  +".54>32'2>54.#"7"&54>32.#"3267J^66^JJ^66^J32'."3265 0#3=D;+M G<=IN##%%2+.. (5<<|$   ?@ JK*PX@ %K#L@UYMY+3#'%3#'zyo||O;@sUYM+!#5!Og{4-6( JK$PX@1 p  c  _[*K [ %L@/ p  c  a  _[*LY@'/. 20.6/6 - -,+*)#! +%".54>32'2654&#"'532#'#7#32654&1U?$$?U11U?$$?U1NgfNNggu107P.%%%$>V11V>$$>V11V>$1jNNjjNNjF'&#RJJ1 2A>-KPX@ Y"L@UYMY+!5!> AU*b} *@'_[*L     +"&54632'2654&#"FbbFHccH"00"!..b^KI^^IK^W/##--##/HBs aKPX@aaY#L@#aaUYMY@  +%5#53533#!!dbb323!57>'R SECL/.Mϟ7=>6-52KIk,o@  JK PX@!hfa[%LKPX@#pna[%L@)pnaW\PYY@ +2654&#"'7#5!2#"&'7#&'#  {$m5CWJBRT'9QGOF013!###1O77O1TiZ 8K*+K7 jI 3+'+!@ JK PX@hc\'LKPX@pc\'L@!pcW\PYY@ +"&'732654&5737?I"%*J%13B%( 01*&**3/p MJK&PX@rY%L@rUZNY@ +535'733Qh`*^_K;>UK#^ qKPX@[*K[%LKPX@c[%L@cW[OYY@     +"&54632'2654&#"GWWGFWVH%$$%"''TNLRRLMUJ/)),,))/%  O@ JK*PX@%K#L@UYMY@  +?'337'3&|hy 0&'3+t3+*r&'{3+t3+=&'3+t3+6!=@:JpY%K\'L!!+#53267#"&5>?>=I{'-""548? s zpoo=%(䄄F%.&#&-5+RhhSEI$l&$l&$ l&$j&$a&$d&$ 3+B@?JaaY"KY #L +3!!!!!!'#3 . )di oio3&21@*)JK PX@-hf[*K[#K\'LK PX@*hf`[*K[#LK PX@+pf`[*K[#LKPX@/pn[*K[#K\'L@,pn`[*K[#LYYYY@.,'% 22 +%267#"&'732654&57.54>32.#"xQW xl 13B;7?I"%$0VxHxTP`klcK>cs $&**3%( 0*VX-vk;MqoP5l&(zP5l&(P5l&(jP5a&(l&,P4l&,6El&,õ'a&,  7@4a["K[#L ! +3#53!2#'32654&+3#PDDqlmq&b owntqbPj&13l&23l&23l&23j&23a&2YR1*  0+?'77'YFEFFFF3'6@3%$J[*K[+L'' +".54>32.#"2654&'J{X11X{JK|W11W|)=%dqep8 -XVTX..XTVX-^.Nkn*H Jl&8Jl&8Jl&8Ja&8 l&<Pd 4@1cc"K#L   $!+3332+#32654&PpwC:9rlkno86;3C'&=@:!Jc[*K[#L &&+!#532654&+532654&#"#4632E><7AD97/+3817=t{mdp++;C{f529.c5(-/@6&hobU/JOHce.&DCN.&Du.&D[7.&DaO.&Dj@.&D_.%.5BKPX@ .JKPX@  .J@  . JYYKPX@$  a [-K [+LKPX@)  U a [-K [+L@*  a  a [-K [+LYY@0/@>9632/505"$%#D$" +%#"&'#"&5467>54&#"'>32>32!3267'"3."3265"i\Adg@K_cT"?0()0 j hW=SY0fqC603 o-A 7<(,,#1BES6,.4JEMD"*'("AV,#%~n)@G.93/= !.-&)4@+*JK PX@%hc[-K\'LKPX@&pc[-K\'L@#pc`[-LYY@0/(&"  44+"&'732654&57.54>32.#"32677?I"%"]q$>V22K3g239@>:32j SG13B%( 0't>_? ,< !4QJHS2"?Y #&**3$&HCD$&Hu$&H[6$&HjD&CC"&u&&&[&j"$0[@!J$  HKPX@[%K[+L@c[+LY@&%,*%0&0+'7.'77#".54>32.'2654&#"K"&"=bGCG;Z;3X@%"e;cG( =Z86X=!$;3RABMOB@QC&Qai&&RCP&&Ru&&R[B&&RaX&&RjPH.BL ;@8aaUYM  +53!!53~~̀Zh& 6@3J[-K[+L  +"&54632'7.#"2654&'kml #&XCY>&Xu>&X[J>&XjW >&\uCD=@:J"K[-K[+K'L&#+3>32#"&'32654&#"CsQ1,L7 ~c)EI17EC:.Kd"% ?^=z2;QHHR>; >&\jDV&$3+.&DpNk&$.&D]A5G@DJ Ib"K#K['L +"&5467'!#332673t7R'>=%2   'oi13"4X *N!.5.;S@P",Jc[-K[+K['L973/)' .. +"&54675#"&5467654&#"'>323267&32653I' K0I^cT">2((. j hWVr,  %P:'-*#3B23"52"LDKE&*&("AUO` )O !1(3l&& &&Fu3l&&&&F[93a&&&&F^3l&&&&F\9Pl&'{&&G &9)KPX@  J@  JYKPX@&a"K[-K [ +L@*a"K[-K #K [+LY@(&" (# +!5#".54>325#53533#'54&#"326K3.P:!":!#!?_<=^@!rL55L8;@PHEUIP5P&($&HpQP5k&($&H]EP5a&($&H^P5BF@CJ IaY"KY#K['L%& +3!!!!!3267#"&5467P]h!0!  &7R) lil +N/2"7$5,3O@L  ,Ja[-K[+K['L.-10-3.3+"&'" +#"&5467#"&54>32!32673267"3. %3I  m}%?U1hrB534c ,A 6231v=_?!n#BE-405308P5l&(}$&H\53l&*(4&J[G3k&*(4&J]W3a&*(4&J^3&*S 3+(4 +8@+JHKPX@) a[%K[#K['LK2PX@- a%K[-K[#K['L@* a_%K[-K[#LYY@751/)'!  +#54673#"&'7326=#".5463254&#"326Uw4? ! }l#?X4Vxn @%9GK3.P:!}c/JG39C@;9B~bH=D 5(:S3NN($6C: !32#4&#"C88qQ2Oas23.C'L55L"'XT+.160(j&,&a P&,&p%k&,&]5,@) J"K\'L+"&5467332677Q&z!+  '13"4X *N59@6JY"K%K\'L +5333267#"&546@zws+  $2J%2pp (O23"2Oa&,.C@%K#L+33CsPE&,-@>&LMl&-'>(&Y[P&.S 3+C&NSP,l&/5CZ&Ou"3+P,&/S 3+:&OSP,&/Cb&OP, 0@-a"KZ#L  +%!3753,$zwrrʱyyC}*@'a"K#L+33753CsUrXpp9 ,@) J"KZ#L +%!57379$CCyrr$f%-RgR  &@# J"K#L +355737VMMrNN1b1s1b1Pl&1C&QuP&1S 3+C&QSPl&1C&Q\UC&Q&3+PD/@, J"K#K\'L!#++53265#3a^B3,'}N]e\m,/ .C>X JKPX@[%K#K['L@%K[-K#K['LY@ !%##+4&#"#3>32+532623.CspQ2ObSV8 (& 4.160@"(XT\Ud'3P&2&&Rp\3k&2&&R]O3l&2& &Rb`O'KPX@ "!J@ " !JYKPX@!a [*K[#LKPX@5a [*K[*K[#K[#L@1a [*KY"KY#K[+LYY@&$3(" +)#".54>32!!!!!%3267.#"X;%K}Y22Y}K$>:E pe10ep,WWVX-oin&P '3@ JK.PX@#a [-K [+L@-a [-K [-K [+LY@)("!/-(3)3%$!'"'"$$$" +%#"&'#"&54632>32!3267'"3.2654&#"Mi^@;0/JK PX@,hf[*K[+K\'LK PX@)hf`[*K[+LK PX@*pf`[*K[+LKPX@.pn[*K[+K\'L@+pn`[*K[+LYYYY@ $%$%+#+?32654&/.54632.#"#"&'732654&57.1y XDEO.6w]ix|y GIDI5=V[vh 13B;7?I"%$n66/)%* X[]jgW*=3(%) ZSWe $&**3%( 0)^)+>@<;0/JK PX@$hc[-K\'LKPX@%pc[-K\'L@"pc`[-LYY@ $%$%+#+?32654&/.54632.#"#"&'732654&57.)i 6./.#.AEMoWVj f0/*.&&>LORN13B;7?I"% K_%$ @?FPO=( C>;P &**3%( 0%J1bl&6)&V\+o&7S 3+__&WScol&7vjKPX@)pY"KY%K\#L@'paY%K\#LY@ #! +3##"&=#53533#;i:LePbPNNs%%ES`f{{f,#o/@,aY"K#L +5!#3#'#535[x6rra a__9@6r  aY%K \#L +!#"&=#535#53533#3#;_PbPMMNNstt%(CS`'KZe{{eZK%."Jj&8>&XabJP&8>&XpbJk&8>&X]YJ&8>&X_Jl&8>&XbhJ2$]"JK*PX@"K[+K['L@_"K[+LY@ $$+"&5467.533265332677R#zUTRQz]`-   '033f\NN\gr +N>5%B@?"#J%K\+K['L  %%+"&54675#"&533265332673I&S2O^s120@s,  $23"5:!'XTB-28.$ )Ol&:9  &Z[ l&<~ >&\[8 a&<6el&=0&]u6ea&=0&]^6el&=0&]\83#7@4 Ja[*K[+L! ##&'"+467!.#"'>32#".267!3 dWJ]x 6Of:0UvGDsQ-5Td i@# ]iJ: 6U:UX.-T{bX]]Pl&'<P&'=&&G=;P&/-HP>&/MYC>&OMP &1-P>&1MC>&QM;Jl&8>&X\IP&.%&pP&'=P&']&&G];l&.%&uM3l&&&u1b&6S 3+)&VSo&7S 3+__&WSc P&< >&\pR> @%K\'L !#++53265R\<&+& \Td&*(@@=Ja[-K[+L +#"&5467!.#"'>267# ku#=T1ktR@2.8 frU-< :w>^?!m EC,?Td6318* z@Js"L+3#'#ylfBCeSS* y!@Js"L+'373kfAAgk PP.X !@`"L   +"&'332673KGXYFL;"";L(2@Y"L+53(z2pp$  1@.cW[O     +"&54632'2654&#",;;,-;;- 8.-99-.8<57EJK PX@f\'L@r\'LY@  +"&5467332671G,#c,  %./"7 -M#&Q^@ JGKPX@h["K["L@p["K["LY####+54632326=3#".#"#.+  L)*" &1@ /?& @Y"L+3#%3#rsauc u(`@UYM+53(zpp$.?o 0+!!5-5!!/jimjCD0+332653#5#"&'Cs020AsnP-* +38.$> ( =0+3#5!#;#"&=#dFL#9DB}gg-gDNP5l&(uP5a&({=@: JcYK[L#$! +!532654&#"##5!#>32#!=BGK(Kz9Q'zki.7906rr [vv[Pn&|3+3 4@1Ja[K[L(%"#+.#"!!3267#".54>32xUQQj  jSPTwHxV0/VxI6N_\i^`O4cz*VZWW,u1b6P,'f&,3+E- 'iKPX@ cYK[L@*cYK[K[LY@ #!' '!'$! +7>45!32#!#+5326%#32654&הwp`e4",6oD9:(kv}9jskl6)]]W#vct.3;77P>@; caK\ L$! +33!332#!!#32654&Pz7zwpBE9;jsklH3;777@4JcYKL##+5!#>36#54&#"#9 V.}uyAJ(Kz6rr ivìH@6Pl&.Pl& |i&zPq MK PX@gKZL@sKZLY@ +##5#3!uzIX6$Pa 6@3cYK[L   !+3!!32##32654&Puw{pA:;n_kkd//34.Pg%P@YKL+3!!Pr q3@0QYKYL +3>7>45!3#5!!# D +^v2rEZgf$32#"&'732654&+532654&WHQyzw88;C~ x VKJN?Cfg>6EEC9cqba7L IC_mni;B53--g/+-2P $@!JKL +!#33'yQXPi&P. !@YK[L!'+7>5!##+5326z`e4",6(kv}9X6)]]W#vct.P60P+32P!@YKL+3!#!P3532#2>54.3"yEyY44ZyDxEyX33XyE+M9!!9M":M*+M9"Q"FlKJlE!MM"ElIJmF"Q#+E12D*1F+i*E ;Pq )@&RKZL +3#5!3!^vzI66O)@& JdKL#"+32673##"&=3CP(H"zz T0uzHB2X  lzP %@"KZL +333333Pzzz66XPq -@*RKZL +3333333#5Pzzz^u66 6@3cYK[L   $!+5!32#!2654&+9woD:;C6rjskl663;77P0 4@1cK\L   $! +332#)3%2654&+Pzwofz1D:;CjsklXl3;77Pa *@'cK\L   $!+332#!%2654&+PzwoD:;Cjskll3;77/4@1Ja[K[L&%"#+?3267!5!.#"'>32#"&/x ]PTd  `SJ`wqGtS-{9Ka]j^\G<kq*VXpP"sKPX@!a[K [L@)aK[KK [LY@""  +"&'##33>32'2654&#"vzzvJ{W00W{Jcnncdkk 厗.XTVX-nnoon(\ 2@/Ja[KL&+!#5##.5463!";5\zDHp*B;:CgSkll5977.D2(R@ JHKPX@[K[L@c[LY@#!(("+%#"&=4>7>7>322654&#"|jz|'Hh@0R" $Y+V\[1\o<=>96LEpOWwK% k  Q\%(uQDEH>1QNC C@@Jc[K[L   ! +332##32654&#32654&CS[)+&RZgk%"!uv( "A@< 9+@JotC@YKL+3!#CKfz4+@(QYKYL+73>7>7!3#5!#3#4uJpqęfC)%wc솆c':1W$H6@3JaK L +!5##'3353373#'#A5zr8p8s~|5彽#(D@A&%Jc[K[L#! ((+%2654&+532654&#"'>32#"&'734'0NO*#+.39 htZ`g'%'0sdcp i8R#R",(LQM@#7 5.HOUN%0C @ JKL+3#33#uoypMOC&TX 3+C -@*JaKL +33373#'#CsD~C似!@YK[L!'+7>5!##+5326nvsBQ4$MQM~:84_Mf(C '@$ JKL +333##CmpkrpC '@$aKL +33353#5#Csss乹&RC!@YKL+3!##Cs~C>S&F!@YKL+5!##s~ff~ >\&>%2?M@J7J K [K [KL53(&;93?5?.*&2(2%%A8A +:3*##5*#.54>7:35"&#263>54&:"#6^C''D_7q7_C''E_8  ?KM>]> =]>?[;JKKI2IKKK [Cz8 )@&RKZL +3#5!33Jp{s~,/@,JdKL##+!5#"&=3326753W;#Z`t2/*s OT.$C %@"KZL +!3333`st~~Cz--@*RKZL +3#5!3333Jpst~~@ 0@-cYK[L  $!+!32+##32654&uT\YYc]\2%&RQRY}&%% C<@9 cK\L  +!3!332#'#32654&ssrT[YX]]1&'RQRY&%% C 0@-cK\L    !+3332#'#32654&CsuU\YZ]]1&'RQRY&%% $4@1Ja[K[L$%"#+?3267#53.#"'>32#"&$h :33<;218 frYh{zkap&1;9W632#"&'#%2654&#"CsU|`ll`} U?;@@;:DE`hwvmbWQKKOOKKQ% 2@/ Ja[KL"+46;#5##7.35#".bWsThu48ll)++DMSK" "$&HCD$z%K@H#J a_K[ KL"!  %% +2+532654&#"##53533#>N*B-2M5(:2/7.BsLLqRBnR_P#afqT80'M44M!&C&u#4@1Ja[K[L$%"#+.#"3#3267#"&54632g643? ?135 hn]hhbjJ"4=6W6=2%G[z{\)V@L 7@4YKKL   +533533qOps2oooo>M'iK"PX@ cYK[L@*cYK[K[LY@ #!' '!'$! +7>5!32+#+5326%#32654&nppU\YZAQ4$XX1&'MQMRQRY~:84_Mf(a&%% C>@; caK\ L$! +3335332+5#%#32654&CssqU\YZYY1&'乹RQRY&%% ;@8 JaK[K L## +3#53533#>32#4&#"CLLqQ2Oas23.C'M44M"'XT+.160C&uC&Cc >&\TF 3+Cz MK PX@gKZL@sKZLY@ +##5#33ps~ >@;ra c\ L! +3#5353!!32##32654&ɿx(ثuwxr?89iXXiy^nhc--33/::@7 cKYK\L$! +3533#32+##32654&qtU_]Ynkk+&'aUDRQGx 3!>@;a[K[L!!  +".54>32"!.267!J{X11X{JK|W11W|KXm  lYZn \ m -XVTX..XTVX-QeZZej[[j& >@;a[K[L     +"&54632"3.267#klmm3CA45A D wwwv;;:<>;;> !@J[KL!"+>;#"#3@F1 /B7r  !@J[KL!$+#3>;#"~y^2<+S62fP-GK PX@fYKL@rYKLY@ +3!53!PTtDRGK PX@fYKL@rYKLY@ +3353#Dpn  -@*aYKL +3#53!!3#PDD b=rb  -@*aYKL +35#535!#3#C99KڂWfyWPq6@3Ja]KL +33333#5##Pzf`v/eCz 6@3Ja]KL +333733#5#'#CsD~dOp C似Pq0@-a]KL +33!33#5#!PzKz^vbCzF0@-a]KL +333533#5#5#CssKqM乹 < >#@ JKL+#53s}X /@,JbKL+!5#53333#쏿~at9a >+@( JKZKL+!##5#53333}q]}yZXatPh)@& JcKL#"+%4&#"#3>32#BP)G"zz!S0tzHA lzCK3>(Z3&PS&1d 3+C`&Qd1Sb&6d 3+)`&Vdl&:3  &ZCl&:  &Zu2a&:G  &ZjP5j&($&HaJ l&< >&\CH^ ,@UYM+!5!,2 i.C@UYM+%!5!2f.iC@UYM+%!5!i;fB $@!HUYM +#5467ŃHA &'BGB$ 7 @GY"L +53'>=HHA '&$BGB$ 7g @GY#L +353'>=HHA '&CFB# B 3@0HUYM   +#5467##5467I@ '&HA &'BGB$ BGB$ 7 +@(GY"L   +53'>=353'>=HHA '&I@ ''$BGB$ BGB$ 7g +@(GY#L   +353'>=353'>=HHA '&I@ ''CFB# CFB# 0 MK2PX@a"K#L@UaYMY@ +#53533#̜o ddM0eK2PX@ a a"K  # L@% Ua a Y   MY@ +5#535#53533#3#̜o cddc8$ @[%L  +7"&546320EE01FFF11FF11F8x&'" '3?KKPX@1 c    d[*K  [#L@9 c    d"K[*K#K  [+LY@7A@54)(GE@KAK;94?5?/-(3)3#!''   +"&54632#32654&#""&54632!"&54632%2654&#"!2654&#"KddKN^^ QQ.%))%%,,}KddKN__#LccLM__B%**%%,-%))%%--9^`]^^][c45243354h^`]^^][c^`]^^][cU4524335445243354 (IJK&PX@ %K#LK.PX@ Y%L@UYMYY+3#'zy% -=JK*PX@ %K#L@UYMY@ +?'3%z yO@"K#L++3>II$x QKPX@c[%L@cW[OY@     +"&54632'2654&#"PZZPQYYQ&))&%**^][``[]^K4<<44<<4({ Z JKPX@rgUZN@rsUZNY@ +#5#5733#'35PUӪ~++ՀKQEE4qm@ JKPX@ac[%L@!acW[OY@ +"&'732654&#"'7!#>32BRT'""#&! S-32'"32654&RWYN?LS"'. 2#BLRJ)'!%%W`c\-1538:9B2c*@'JsUYM+#5!W1OY,t#/A@> JccW[O%$+)$/%/##*"+#"&5467.54632'2654&#""32654&tXLPT!ONNN#&!!&$$$$%('&%''5:86) )1982& )P?+n$q@ JKPX@cc[%L@"ccW[OY@ $$ +"&'73267#"&54632'2654&#";#"##9 F'#%/LpnA"#k+*,GI.J@GJI  a a[*KY#L.-*)('%% +%#!!5>7#53.'#53.54632.#"3#3̝!U+3tiN-kiq v365<ڸ "5jj;&RR _mcQ(79.  R Y1O@L+* Ja  a[*K [ + L11/-(&%%" +753&45<7#53>32.#"3#3#3267#"&'CCKjeyo ;86D  B9:= m {enN Nvxc`-9A@N N@D9-`ezw=W=I@F= Ja   a[*K [+L;94321%%" +%#"&5467#53>7>7#5!>54&#"'>763#3!3267; xhg:  'l423@ s}fcu8 ' >25? LcUY O   O &/,(OZ]P!O   O +*0(:P +@(aY"K#L  +!5!5!##PzVRjjH$_J@G  ca  ["K#L  +#3##5#535#533232654&#ptTTTTn|}A;XqqX>c>fihj?:459%"0+%#"&='>7546323>54&#"rMXR$ 5YCCGkP''N+*ffNe$  NQTLDS1U+"%]&&P !% @ $" 0+"&54632##332654&#"!5!g?VV@ATTy=y ""oOQNPPNOQ +)(*)))+Y"h 0+5!##5373#5#'"*jVrRNpQNBQ[MM@ָ2$  0+%#".54>32!3267"!5."nI^74[JExX3%}OWLy%#t]m2]SN~X0.RsD7:BNE=6197y&' u3+s3+C~&'{3+s3+0&'~3+t3+=&'v3+t3+>& 'x3+t3+Qm&'O3+t3+X 0+!!XFGkFlHK 0+!'3'ZFXHFG  0+!'7'7! FGuFXHK 0+!737dFlHFGx U 0+!!#MddUcdLU U  0+7!5!#U@ddVcAb/e[i 0+73!5![Mc@b/Mc0b@cxi 0+7'3!@cMb/@Mec$0+!5!pwffBW 3r0+!!W$rh:~!-9 3.*$0+#"&'#".54>32>323267.#"%"32654&*@)232673#".#"#>40-gLG41.fNK40-eOD40-fNHYH[ KWHZV4O 0+?#537#5!733#3!~"32>54.53'733Rd88dRRd88dRCqQ--QqCCqQ--Qqvg*ag8dRRd99dRRd8B/SsCBsS00SsBCsS/O=BZO%'@P@M=/.J ccaW[O<;:931,*''  +2#".54>"32>54.4&#"'>323!57>Rd88dRRd88dRCqQ--QqCCqQ--Qq% #.W XNKU26f%$8dRRd99dRRd8B/SsCBsS00SsBCsS/!'!;MK<3D'GPRz+%'De@bA ;/.J< I  c a  ccW[OCB@?>=9731,*''  +2#".54>"32>54.#"&'732654&#"'7#5!6Rd88dRRd88dRCqQ--QqCCqQ--Qqs^VL^ X/-(,,+"DHK8dRRd99dRRd8B/SsCBsS00SsBCsS/sENB< "DgNX]>%'255,JK PX@3ph  c bW[O@4pp  c bW[OY@43210/.-+*)(''  +2#".54>"32>54.#5#533#'35Rd88dRRd88dRCqQ--QqCCqQ--Qq8]ɉ778dRRd99dRRd8B/SsCBsS00SsBCsS/[VNN%'Ff@c>9 8,+J  c a  c cW[O)(B@=<;:640.(F)F''  +2#".54>"32>54."&'732654&#"'7!#>32Rd88dRRd88dRCqQ--QqCCqQ--Qq@M` Z 0%(++() Y' 2?\\8dRRd99dRRd8B/SsCBsS00SsBCsS/?; $"" R\ AKFQ%'@Li@f218J  cc  c  cW[OBA)(HFALBL<:64/-(@)@'' +2#".54>"32>54."&54632.#">32'"32654&Rd88dRRd88dRCqQ--QqCCqQ--Qq@]dhZKUZ(&.8:*B`_U&0-)&.*8dRRd99dRRd8B/SsCBsS00SsBCsS/lntv:6>BCDCR%'.Q@N-J pcaW[O(((.(.,+*)''  +2#".54>"32>54.#5!Rd88dRRd88dRCqQ--QqCCqQ--QqW8dRRd99dRRd8B/SsCBsS00SsBCsS/XW]%'?KWj@g:.J  c  c c  cW[OMLA@)(SQLWMWGE@KAK53(?)?'' +2#".54>"32>54.2#"&5467.546"32654&"32654&Rd88dRRd88dRCqQ--QqCCqQ--QqC[Y#"'`Z[b%#!]X+./*)-,*.21/,138dRRd99dRRd8B/SsCBsS00SsBCsS/SD:%- 2%;KJ;%3 1!9FO%'@Li@f821J  c   c ccW[OBA)(HFALBL<:64/-(@)@'' +2#".54>"32>54.2#"&'73265#"&5462654&#"Rd88dRRd88dRCqQ--QqCCqQ--QqD]chZKUY(&/8;)B`_T&1/(&-)8dRRd99dRRd8B/SsCBsS00SsBCsS/Tlntv:6>BCDCR%'3:NK"PX@ 8 76 J@ 8 76 JYK"PX@.  c   c cW[O@4  c   ca cW[OY@'<;)(FD;N"32>54.2#"&546#'732>54.#"Rd88dRRd88dQCpQ--QqCCqQ-.Qq=JJ="32>54."&54632'2654&#"Rd88dRRd88dRCqQ--QqCCqQ--QqCYeeYZddZ-33-+558dRRd99dRRd8B/SsCBsS00SsBCsS/rpnttnprQBOOBBOOB%+;@8c_[%L! '% +!+  +2#".54>2654&#"7"&54632Rd88dRRd88dRZddZYeeY+55+-338dRRd99dRRd8rpnttnprQBOOBBOOB`'0+!%!!`fm%,`3 0+7#!!3!!^_>=m-9/*p5} 40+7#4^_>w/*p% 0+2#".54>!5##7#Rd88dRRd88d@7ga*gv8dRRd99dRRd8PdZB>%," 0+2#".54>!5#7>54&#">32Rd88dRRd88d$%Pf61UKNX W.# %8dRRd99dRRd8+zRPG'D34&75!3>32#"&'326Rd88dRRd88d LHݑ!+--(-/ X _LV_8dRRd99dRRd827<^XMkB! 535##3'7Rd88dRRd88d778dRRd99dRRd8[N V[%2  0+2#".54>2654&#"735!>32#"&'Rd88dRRd88dUT\\?2 Y )(++(%0 Z `8dRRd99dRRd8QFKA \R ""$ ;?%,8 2-& 0+2#".54>2654&#"46327.#"72#"&546Rd88dRRd88dUT_`B*:8.&(ZUKZhd\*+/&).18dRRd99dRRd8RCDCB>6:vtnl! % 0+2#".54>35!3Rd88dRRd88d&i8dRRd99dRRd8R]W%+7C @ =81, 0+2#".54>"32654&'>54&2#"&546"&54632Rd88dRRd88dRW]!#%b[Z_&"#X[*-.)*0/+/23.*318dRRd99dRRd8F9 3 2%"3267#"&'32654&"&54632Rd88dRRd88dQT_`B);8/&(YUKZhc]**.&(/18dRRd99dRRd8RCDCB>6:vtnl %&2 @ ,'!  0+2#".54>"32654&#7%"&54632Rd88dRRd88d=JJ=>IILT 18dRRd99dRRd8baabE;>H9YY99YY9'>\0+#[p46*>_0+3+p64H>  0+!#3%3#HgppGGWWW8>  0+!53#5#3ppFFjWWWe '*@'J[*KY#L('+!53.54>323!5>54&#"*>(ڌ)oa_xd'LA0 t`%]J{V0.UyJ^*`s 2AM&hyy; #@ GUYM +53'>7Bw4? ! aH  @  0+3#%3#3+53265phRphsTWH,**`Ve,, 0+533533V-Us*0+ # #̀X;; * ("0+74>32#"&32654&#"32654&+;#?X4bs869B~hrxpj:D:14IG45CJ?j6R8fR3MMEanqmC3,+7A@;:597.'0+%'.546?>54&#"'>323267 x[ZmJN@.&*%,8 gnVYaSI?,"4'0< LLJG;D & DHQ>>A '%(4J 0+!5##'333373#'#A5zr8p8s~|54(%0+732654&+532654&#"'>32#"&l ?.6A?6\Z3<7.-Ag|Y^o567=h^v%,+930:_6-.6.+OReV5PN?_kV>X>&XTU3+CN 0+# #OyvyCQC6P>zB0+!5#"&53326533#5S1O^s110AsKp=!&XTB-28.$,0+#5#"&=3326=sI*O]t*..<ZW(20*>0"0+#5#"&'#"&533265332650oN1;L[4M_s/1,@t/1,@>!'1%++XTB+48.%+37.%>z{&0+3#5#5#"&'#"&533265332650KqIN1;L[4M_s/1,@t/1,@>!'1%++XTB+48.%+37.%I 0+%#"&=#5!>3232654&#"Iq`cmD'#A19'/45.&:ZpmWg-C>.2:3,3++= 0+73>32#"&732654&#"=pD'#B1r`cmp:'/45.&;*-C-ZpmL.2:3,3++(("0+%#"&5467'.546;#"2654&#"~jhfH "'KB f4K<;>9;@Bn|q]l 5!69b ;dMBDKLDBLYc°3+!0+#53267#"&546?>=L{'-!#639? s {opn>$)E%/(#&/5+RhjSEK$ n(:aa3+%n-:bb3+ n :mbb3+%n:{bb3+.'YKK3+.(KK3+.(iKK3+>4M'#0+4>7.74>7.>%?X2:%C3gP:3W>#%?X2:%C3gP:3W>#Ovc&GSexDEG&fyMOvc&GSexDEG'fyB4Q'#0+'>54&'7'>54&'7Q%?X2:&D2jM93X>#%?X2:&D2jM93X>#Mwd&G UewBBG&exOMwd'G UfvBBG&ex>l0+4>7.>%@X3>'E2dU>3X?#ROn[&K M[nA}GK&_qDr0+'>54&'7r%@X3>'E2dU>3X?#JOn[&K M[nA}HK&_qHK0+!#3Hcfede8;0+73#5!!8e$0+5326=46;#";#"&=4&#+8XSF5+'****'+5FSX8+h/>acOe%3e/2$0+#"+5326=467.=4&+532;+8XSF5+'*++*'+5FSX8+/>^dOe$6a/>M'#0+4>7.74>7.>%?X2:%C3gP:3W>#%?X2:%C3gP:3W>#TOn\&FL]qDEG&^qNOn\&FL]qDEG'^qBQ'#0+'>54&'7'>54&'7Q%?X2:&D2jM93X>#%?X2:&D2jM93X>#NMn]&G N]oBBF&]pOMn]'G N]oBBF&]p'\0+#[pLN*_0+3+pcNLH  0+!#3%3#HgppGGcfWHWW8  0+!53#5#3ppFFWWWH&0+3&lcf&0+#3lkcfp0+3pgcfp0+33pgggvv6G#dd3+>k""3+2  0+"&54632.#"2654&'Y *UYVY , ^.Lx z|y1N $f  0+"&54632'2654&#"ETOOTTOO nwyzvvzyw$f  0+"&54632.#"2654&'E.TUTU ) ^1Pz {|y+G 2m  0+73'733!V;px]p5P&Z)o  0+!#5!533#%!tLM2]ieW;KM3/*22,/1a31256014/X$xor r3+/plyt t3+4lqst t3+,okts s3+({lt t3+4qks s3+.qps s3+2cl t t3+,tq t t3++np s s3+$9x 3+/<py 3+4<ls 3+,7ot 3+(<{ 3+47q 3+.7q 3+2<c 3+,6t 3++7n 3+lP5lPl&3l |l&P0b&W 3+/l&Pl&(\l&.$C&u& >C&u 3+$&uC&u%&u$-K2PX@ Y"L@UYMY+3#Ek?Ml@UYM+3#ysol5l@UYM+#'^psll@UYM+3#%3#~ui pl(l@Jri+3#'#|vt@@tlKKl@Jri+'373us@?tuKK"Qk LKPX@fW\P@rW\PY@   +"&'332673MGWXGL<#" 2? *PP@UYM+!5!P&U3da*@'UYM+533533oSommmm!a@UYM+53!|qq*3 1@.cW[O     +"&54632'2654&#"8ML99KK9 !!H99GG99HE#""#i AKPX@fW\P@rW\PY""+332673#"&d#*+"eV\[Xi"''"KNNVJ$b;(< C3   E]     4,  } v d x >K  <w < 1  O Copyright (c) 2018 LLC Contrast Foundry (LLC CoFo). All rights reserved. Copyright (c) 2018 LLC Contrast Foundry (LLC CoFo). All rights reserved.CoFo Sans MediumCoFo Sans MediumRegularRegular1.001;COFO;CoFoSans-Medium1.001;COFO;CoFoSans-MediumCoFo Sans MediumCoFo Sans MediumVersion 1.001;PS 1.002;hotconv 16.6.54;makeotf.lib2.5.65590Version 1.001;PS 1.002;hotconv 16.6.54;makeotf.lib2.5.65590CoFoSans-MediumCoFoSans-MediumCoFo Sans is a trademark of LLC Contrast Foundry (LLC CoFo).CoFo Sans is a trademark of LLC Contrast Foundry (LLC CoFo).LLC Contrast Foundry (LLC CoFo)LLC Contrast Foundry (LLC CoFo)Designer: Maria Doreuli. Team: Irina Smirnova, Elizaveta RasskazovaDesigner: Maria Doreuli. Team: Irina Smirnova, Elizaveta Rasskazovahttp://www.contrastfoundry.comhttp://www.contrastfoundry.comhttp://www.contrastfoundry.comhttp://www.contrastfoundry.comCoFo SansCoFo SansMediumMedium  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjikmlnoqprsutvwxzy{}|~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~uni0000uni00A0uni00B2uni00B3uni00B9AmacronamacronAbreveabreveAogonekaogonek Ccircumflex ccircumflex Cdotaccent cdotaccentDcarondcaronDcroatEmacronemacronEbreveebreve Edotaccent edotaccentEogonekeogonekEcaronecaron Gcircumflex gcircumflex Gdotaccent gdotaccent Gcommaaccent gcommaaccent Hcircumflex hcircumflexHbarhbarItildeitildeImacronimacronIbreveibreveIogonekiogonekIJij Jcircumflex jcircumflex Kcommaaccent kcommaaccentLacutelacute Lcommaaccent lcommaaccentLcaronlcaronLdotldotNacutenacute Ncommaaccent ncommaaccentNcaronncaron napostropheEngengOmacronomacronObreveobreve Ohungarumlaut ohungarumlautRacuteracute Rcommaaccent rcommaaccentRcaronrcaronSacutesacute Scircumflex scircumflexuni0162uni0163TcarontcaronTbartbarUtildeutildeUmacronumacronUbreveubreveUringuring Uhungarumlaut uhungarumlautUogonekuogonek Wcircumflex wcircumflex Ycircumflex ycircumflexZacutezacute Zdotaccent zdotaccentuni018Funi01C4uni01C5uni01C6uni01C7uni01C8uni01C9uni01CAuni01CBuni01CCuni01D3uni01D4uni01E2uni01E3uni01F1uni01F2uni01F3AEacuteaeacute Oslashacute oslashacute Scommaaccent scommaaccentuni021Auni021Buni0232uni0233uni0237uni0259 acutecomb dotbelowcmbuni0394Sigmauni03BCuni0400uni0401uni0402uni0403uni0404uni0405uni0406uni0407uni0408uni0409uni040Auni040Buni040Cuni040Duni040Euni040Funi0410uni0411uni0412uni0413uni0414uni0415uni0416uni0417uni0418uni0419uni041Auni041Buni041Cuni041Duni041Euni041Funi0420uni0421uni0422uni0423uni0424uni0425uni0426uni0427uni0428uni0429uni042Auni042Buni042Cuni042Duni042Euni042Funi0430uni0431uni0432uni0433uni0434uni0435uni0436uni0437uni0438uni0439uni043Auni043Buni043Cuni043Duni043Euni043Funi0440uni0441uni0442uni0443uni0444uni0445uni0446uni0447uni0448uni0449uni044Auni044Buni044Cuni044Duni044Euni044Funi0450uni0451uni0452uni0453uni0454uni0455uni0456uni0457uni0458uni0459uni045Auni045Buni045Cuni045Duni045Euni045Funi0462uni0463uni0472uni0473uni0474uni0475uni0490uni0491uni0492uni0493uni049Auni049Buni04A2uni04A3uni04AEuni04AFuni04B0uni04B1uni04BAuni04BBuni04D8uni04D9uni04E8uni04E9uni1E46uni1E47uni1E62uni1E63WgravewgraveWacutewacute Wdieresis wdieresisuni1EBCuni1EBDYgraveygraveuni2004uni2007uni2009uni200Auni200Buni2012uni2070uni2074uni2075uni2076uni2077uni2078uni2079uni2080uni2081uni2082uni2083uni2084uni2085uni2086uni2087uni2088uni2089liraEurouni20B4uni20B8uni20BDuni2113uni2116 estimateduni2153uni2154 oneeighth threeeighths fiveeighths seveneighths arrowleftarrowup arrowright arrowdownuni2196uni2197uni2198uni2199uni2206uni2460uni2461uni2462uni2463uni2464uni2465uni2466uni2467uni2468uni2469uni24EAuni24FFuni2610uni2611uni2713uni2776uni2777uni2778uni2779uni277Auni277Buni277Cuni277Duni277Euni277Funi3008uni3009uni301Auni301BuniA7B6uniF6C3uniF6D4uniF8FFCRI.altuni00CD00A40301 uni0407.alti.TRKuni00ED006A0301 uni0457.alt uni041B.BUL uni0432.BUL uni0433.BUL uni0434.BUL uni0436.BUL uni0437.BUL uni0438.BUL uni0439.BUL uni043A.BUL uni043B.BUL uni043F.BUL uni0442.BUL uni0446.BUL uni0447.BUL uni0448.BUL uni0449.BUL uni044A.BUL uni044C.BUL uni0431.SRBexclamdown.capquestiondown.capguilsinglleft.capguilsinglright.capguillemotleft.capguillemotright.cap hyphen.cap endash.cap emdash.cap dblparenleft dblparenright parenleft.capparenright.capbracketleft.capbracketright.cap braceleft.capbraceright.capdblparenleft.capdblparenright.cap uni3008.cap uni3009.cap uni301A.cap uni301B.cap slash.cap backslash.capbar.cap brokenbar.capat.capcopyright.pnum_lnum zero.zerozero.tnum_lnumzero.tnum_lnum_zero one.tnum_lnum two.tnum_lnumthree.tnum_lnumfour.tnum_lnumfive.tnum_lnum six.tnum_lnumseven.tnum_lnumeight.tnum_lnumnine.tnum_lnum zero.dnomone.dnomtwo.dnom three.dnom four.dnom five.dnomsix.dnom seven.dnom eight.dnom nine.dnom zero.numrone.numrtwo.numr three.numr four.numr five.numrsix.numr seven.numr eight.numr nine.numr uni04100301 uni04150301 uni04180301 uni041E0301 uni04230301 uni042B0301 uni042D0301 uni042E0301 uni042F0301 uni04300301 uni04350301 uni04380301 uni043E0301 uni04430301 uni044B0301 uni044D0301 uni044E0301 uni044F0301 caron.alt acute.cap grave.caphungarumlaut.capcircumflex.cap caron.cap breve.cap tilde.cap macron.cap dieresis.cap dotaccent.capring.capCyrbreve jkklnoop%&)*45=>CDLMWXXYZ[[\ bTDFLTcyrl6latn BGR .SRB N    .AZE .CRT .DEU .MOL LNLD lROM tTRK       aaltncaltvcase|ccmpcrcydligfraclnumloclloclloclloclloclloclsinfss01supstnum  BJRZbjrz "*2:BJhpx>@D$<<$V  L  D v     V  2  n0  P# $$$$%%"%@%^%|%%%%%%V{|W}~ZptuqSTUVY]o^_`abcdefghijklmn\wxrsV #,>?@CL^_`chjkmpu{!"[\]^abpNOPQTyz, /v gedff  gedffSTUV!"STUV!"6",-MX-[M,LL*]^_`abcdefghijklmn (2<FPZdnx"" (2<FPZdnx &0:DNXblv  &0:DNXblv $.8BLV`jt $.8BLV`jt",6@JT^h",6@JT^h *4>HR\ *4>HR\(2<FP(2<FP&0:D&0:D$.8$.8",",  $4styy  6Lstyy styy "8Ndstyy styy styy $:Pf|styy styy styy styy &<Rh~styy styy styy styy styy (>Tjstyy styy styy styy styy styy  *@Vlstyy styy styy styy styy styy styy " ,BXnstyy styy styy styy styy styy styy styy $ .DZpstyy styy styy styy styy styy styy styy styy  T'{|v}~ptuqwxrs' #>?@C^_`chjkmpu{[\]^abNOPQTyz  F yst   yst   yst     F         st yy  $   70t "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz= =|= =|= = |= =|== ==|=L =L|< <|< <|< < |< <|<< <<|<K <K|; ;|; ;|; ; |; ;|;; ;;|;J ;J|: :|: :|: :|: :|:: ::|:I :I|9 9|9 9|9 9|9 9|99 99|9H 9H|8 8|8 8|8 8|8 8|88 88|8G 8G|7 7|7 7|7t 7t|7 7|77 77|7F 7F|6 6|6 6|6s 6s|6 6|66 66|6E 6E|5 5|5 5|5y 5y|5 5 |55 55|5D 5D|o5 o5|oU oU|k& k&|kF kF| (!'A&l "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz "*2L@L~L@L~L @L ~L@L~L=@L=~LL@LL~K@K~K@K~K @K ~K@K~K<@K<~KK@KK~J@J~J@J~J @J ~J@J~J;@J;~JJ@JJ~I@I~I@I~I@I~I@I~I:@I:~II@II~H@H~H@H~H@H~H@H~H9@H9~HH@HH~G@G~G@G~G@G~G@G~G8@G8~GG@GG~F@F~F@F~Ft@Ft~F@F~F7@F7~FF@FF~E@E~E@E~Es@Es~E@E~E6@E6~EE@EE~D@D~D@D~Dy@Dy~D @D ~D5@D5~DD@DD~)t "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz= =|= =|= = |= =|== ==|=L =L|< <|< <|< < |< <|<< <<|<K <K|; ;|; ;|; ; |; ;|;; ;;|;J ;J|: :|: :|: :|: :|:: ::|:I :I|9 9|9 9|9 9|9 9|99 99|9H 9H|8 8|8 8|8 8|8 8|88 88|8G 8G|7 7|7 7|7t 7t|7 7|77 77|7F 7F|6 6|6 6|6s 6s|6 6|66 66|6E 6E|5 5|5 5|5y 5y|5 5 |55 55|5D 5D|o5 o5|oU oU|k& k&|kF kF|l "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz "*2L@L~L@L~L @L ~L@L~L=@L=~LL@LL~K@K~K@K~K @K ~K@K~K<@K<~KK@KK~J@J~J@J~J @J ~J@J~J;@J;~JJ@JJ~I@I~I@I~I@I~I@I~I:@I:~II@II~H@H~H@H~H@H~H@H~H9@H9~HH@HH~G@G~G@G~G@G~G@G~G8@G8~GG@GG~F@F~F@F~Ft@Ft~F@F~F7@F7~FF@FF~E@E~E@E~Es@Es~E@E~E6@E6~EE@EE~D@D~D@D~Dy@Dy~D @D ~D5@D5~DD@DD~ >A{}*4>HR\fpzccccccccccccccccccy~,O,O\\pppppYpY+, yst      WY\,, pp   xDFLTcyrl"latn<BGR SRB (AZE (CRT (DEU (MOL (ROM (TRK (cpspkernv~     !#%')+-/13578:<>?BEHJLOQSUWijklmnopqrstuvwxyz{|}~X]  @(.DZ Bd(NtH^d^"0:Dfx2HHHHH  ( 6 P V \ P P  >   B H b l v  P B   T j p z V B B  6 V 99;Y[Y `   }@BI 9;|~ 9?Y|d||~ "9?| |~9|~ "9d} 9|~ 9;|~ |9;[ 9;?|~ [| " ;[|~),A 5+6$ =& #[w!3F/,/  | '(83'.  #9IYw "| $ 9?HY ("..@2(., " #I  #?Y99;9IY9Y[EKNOD,2,2YI6MLPQSUWBY2Z2 42=(G222IBMLPQSUWB%  4=0GHFGHJRTX),A 5+6$  (*,.02=AINR "q}|~q| q}|~|~ "mm?f|~tttm " q}_fo|~ q}|~n ^_`jo|m  bf #?^_`jo"  @"4?@ `  ,2m}vvp*v"3"L,[9Y&IY\bf^bf^`j9 9q}x 9}v9; "#%)379:;<=>?IY[\^cdegw!#%35678:<?LUWXklnqrstuyz|}W\]^_fghoq{Z|`u  882f& s  v z $        6 A&C  2 {   %gcg#@&"!bb ABHCDKKEFGKKHHIJLMNOP QRS^TUVWXY^ZZ[R\]_>`?a eAAAAAACBCCCCKKKKHKHHHHHHMMMMOQQQQQQTSTTTTWWWWZ[[[[[[aRaAQAQAQBSBSBSBSH^H^CTCTCTCTCTDUDUDUDUKVKVKWKWKWKWKEXEXFYG^G^G^G^KZKZKZVKZH[H[H[CTI\I\I\J]J]J]J]L_L_L_MMMMMMN`OaOPPPHPEXXEXXMCTPCTH[J]L_OaX[ll'mk(rr)*+nrsrj,umqlnurrnrrror-kms./qrrqprpoorv0~yzz{{x{6~~||{{yy7x8||wz9:o{;m<mnzq~tt=wo{o{KZJ]N`N`N`CTOacchihi geErWXj23z4z5ww~~}}1ffddd$ jlrosroorvy{{{QP*G*:5DKTWVH9>=RJ<O34%7L  F r&   @ASMsI rrrr          rrrr r&               %%%     & 'h\ (ZX-'' (]Y[ -/+mttU"0,ttt!tt"tt"#$"jt`tt#tt,t1""t"fqgp!ttt$tck'"d.tttt).).e'"   s?Nr^n_0o22ltt2a22#bi;CBE86'(-/+"t"$t,t1;   "?DS2UWBY^EccKmmLstMwwOyyP{{QRjq'))++--//113HJZ irt'TUV]_bhmns W[]beiloqx{{}}ideoromnDFLTlatn$ ` `դ'ח% חplugins/limit-login-attempts-reloaded/assets/css/fonts/CoFoSans-Medium.woff000064400000145204147176754540023116 0ustar00wOFFʄ BASE(>P/;FFTMh\ GDEFt$&GPOSL~EGSUBX E*,vOS/2$W`aGqcmap d cvt 4dOӿY"Ȁ S(8w1xc`aJd X ( d͟As100cS``c|´H)0? xڕ[lTU4:S@VC -PJ Rhi:7Fy$hPI DbCQFCP#![gjiIg}Y_k(swSuE>Z:.w@ BQ[qU j#?Rq~jVvUT$_ 5뜚 nrpHc5hCYTwp/x lUE_&y1=mLnO%r?S v NMw_pZQ[_jrj_yڔUuDOv&ZX}]ʸ߱K93+V3/fi VG" 2ؠic2EzTg/jrkWy8GGiw >ڭRwSjA7AtBbe2>J_"`01߽sTlDK~5'~::ۿ؄a>c;Yvv[(6mvN6MǦpW 69kfs'|P"xكx:&i z̆:m1\̇lĮ83tE!8 2-x3WXxҬNeG|r ?~+XM7Y-L߄`Yy}"6`9qJ5t_ZCd_؋@iGXD%911_i4:ly5 }RyB<~W$3q.=E{c-2'5> 1)zjH9S3yΑrXC:y>C)cOggᖠՐݏz(j9v`bx 䏺ܕp썟,X?QZW&.pjЈgu<:j!}I-Կ1Lc-O^DžM xՔkPEg.fALB+ ~A,D2JY]Q(-Kˤ8SXD8R69tf""В46~s;ef>1!EvLDr%ی*DkKkfaqJx2YflY(nM|UTUIWϚcY!V:Z1:I[گSu@O׳ ިw꽺ECv=<خ~?_/OH%KKKH[ $j82us@&ʹN~1(ef y_Zj6C5:iYAj~xia͉>tv]c7Ǻ$4:ڰ $*yJoW{3CCC\{v+ܥn;qɮ<n u~uNt;'cΗNSlq69O8˝r';1Nth0:t4 M t|}wAwO?N|ә9mؚتó?YQr9'Z C1L4#a\\¥&xer$jcq??Ha"1FCWs גdISids=9Lg7p#71e0[cs۹;{gESB) T"yv]vm}fZ|Aڅ, ᱊7xE%L^u`QTӶe,Ycߡh2GXm4sԋ8/~OqVg;,2*6S[z^b/Wxl:YVEX HAQ*$,,xڭVisV$NBuyij?B0`B,.JPZ)v}~͕ig7~Z}M I;Ôa|ϻ:zw JgVvt٢0:2Q0:o6! "!S(M{Us; ہM%ʨ"IIqV5f>oNbA FIF#+ "vpe=b ^;tiLp?$3r($$ ~_D~%zODw'k" o ts'#Xv(h+L1+bƔ?$/94;9u}7f2%k' ?>ex[GɞP/'2,Gɘ 3eXMzI٢멉S^eeX/B;OMflUԍ(3]~@!Mii5s:%.xEf4Tk7HrzLCoVI ֟U1Gfl&gg?d.b;H8yldK6V_A&D$M߄RR0%呱7MSj^wi M9)o`9Ә1\%gl]@|١E,gTeJr,RIyT2mX (Q!C% :TC*˯{]-#K>YJr>,G+*|dVsEC}"O㣸*29h82J^c@+96*DKI\!ã9WgǍ`N4zcO7d5d."ˈ/;:tEUZ/*UX*h"wzlbuELi..~[f B^WBzڋǢA9 }s+xYa=ͬdχ.lyR{(]/Jzq3^lG^}'KX̲JXh .m`D.Gh[q#GTNෝnPM~eYCjnh50|}"綢jK]E=f9(K*zfK+:vkb>vKMb|9- 1 s8_˘ŏO5 ]EW!Z5y |ʆyDq;R SǞ dZК-aaǜ_0a0Asgs_37a1A`9 :aeEGi>m}-t?ᰉn?AԈ?iԟF_j4bCE7GG|5b1z: xrT8rEvMfxcp"(b##c_Ɲ  ؜6J21hX[8ؙ8 l-6qV0i7&N i7y .U;#68tDldNq٨h``dqH)JL`߿н_\rD>4gsYiͤ3g3w23 ,[KeD:;LrwUFy˼\F.ۚwn:ΠC#Ac2 Ìb߱D))%JKh%Z֩%}/-R{_/s}-[,[)unXMw;%ʡr[x$#􄟈{zcP~#w$$ Cֹш5.6n4.+%ra.k ij"ƚ曶n=cz=SUϞ'yhv44ǚO^{X ԲEk5zjm_ۮڡHǏ~ЯWJ B`=p8t:񎃎: ڂ`( S< IBXrZCdh0 weu!].kk6v$|~u#'IfJ##M;yL^SJKY)7"05AR&N zt-66MOПYz>{ z=ޞ'H_xڤ}|\ř{mQ٢UKZJժkfY"*,"nr H8!@ @H\ʅ%$!Orixf潷bΠ6;of7|h|"wHDf{&C'0+}6Xf>my3_ۿ }]w/qځ5?`7&U' ! I=Il_ 2ռ'Csy1  kI#33-3"t0~i1wa%[+n=޴ĊC%~F#=yQ ;c# Mh5v3R(yx:h48'^7GyIFӰ  h_. ;b3efj }3;11>:xeU$TGrxrTN0X¼\UIu-nquhdUsB>`K~`sD?e"EeNA 줯%$A5-6 Hm $|5#3&kƱȶk6%,P/<6< wLuexzm5+)5pQ(_&SZH5kDOFȌQ*CsLH!JZxK$1+n? OeqLΏ-݆7b&o{pڦpn>8|p{j28Bs7`l:6CauN~3Bè[]+f6Lxg")7ڼa1jmvv}M$wn쨨Xٸ{Oʊ=t=hÙ΁8RsM2( @(Z6ڊ7Øm9t(W+'M8m̪X{M,Ng{ J rv#v< l;}? ('f]43dꚓa2߄X~߻ I vJwRZ}CG4 @$g1= #1͖nc4J#~mvV^vݓ>?#s9˳::0i|9Fc0h6-'%76M\^^#yc.(FIj̏HcfdLLL6C{~y0ܱCgCew WnρmwW^: q ާVX7bNmP89 )XjH Q<0oSFF@EHdS + obbymCmnV~ӉtS5p_TrԝvP;] -M$X~xh\G0D=8K\3.܀%wī( *k`BT sp󁭁T" ) <7 ,sa(\%3c4JhYY^ρ\6wo?19d b&N^ E`]j23- nx@曂ȘV((),q=0M ,sSg&nɿ;n>\=mho$kk_ʡc/><<|ɎomjmpaKc86#c*@Q$ ~m#qJ9wmDOxlj[q9^SM0]9پRW ۙ,sh{bw Bc>7U37T7%kUתx'f'>ɽ;64-Cq _0T^ W]@^OPx9?%=|x^ %ESIJl#r~e ("x#>x㕰Ag>7}"*O-ۢ"bg.Ͼz;(֡\WrhvFJZ@%_]xВEqɊ ǔ,;/ Z'qL %&4=NUw!0B{q ~lsd+Fkq(Ì D?$m #?78l̴l0B]K$+]kˆK?vn+]Q}j_=wDR] f6q**Ko y z`,`Έ2',aKWL p DI"̀ux`(kwh>S#׬;;?+Ծ-%p{!&X %B7UikhW@e~zSa=r{/=4}>JCC*b 1Jj{x3Yۉx;wy;;ul-*yfD~"UvrT#s4 wys;duG9> ~4" pdrרʊŜH7yof ݝi\cw΍udM 4|kˑ}3[]/:*Fά:3\g侙& N]f$55G%8\i8p9WqaM$-1%: ?G,{&ӵd1$ H4ؘ%po2 99S0V\@5. D|9̛`~wp-0qvă0UzejfҗBŕ'\s~G_M%1.2C`EFc+4$up&OK/WO0( =DOՁ\*$ I݉ɠ<ҡOࡃ OBA.h%'RdLLS}T`phWP08t,ezz{u3֜ϮYwfؿӧNh$U+|E O!lLC7NLD2}a1I3ןeqeL%cVZ5z,9٥9=K'GU& BKZbmgnSQF^̉nc)H7[ۼIn-L`;#6YQ8VdPٸIYz!;,pFnE` w4;T0͜loӷ^n-_OhcZMѾȌn甍l ,IXvxG҇ՇwzYUm"ׯC?U]]Q.Yã; %R}am>ye/WBbJqC0(j4.',n9za.xGB(/(|;N#?` joo֮iĶϝߙ: amPS&J?y'W*BKhV_@Sx;yx#pÏz{{1zSR*\^&3lö(!z;=tm'Gq7ʪćtl{r D!akN?ķq]tjo #lSӑ ˌd ]qvK5=1]g%jg]r ǹ:ɀ02_M6#/>_rj ɤm3x?4{Q73 bC_O-".`^8Y%b7k.^|8wBo?nI<#'ˡYX&4ɧ8vM";'u\71y~7}~d'励=KN[gs| ff™ޒar`⎐R PI=HШΥ=D"E~_ongSCkDLTZ@w5z=%M o+WMLq4JJۇɮ˜h-ޮ{@4X۷1¹Ņ` Y@c`LX''0I`')7*#E Y'f<4yF fSKT:[4P뮵SuF+b.yMGo(V41W6: mKQ 3>3sSuP<\$lӄµp]'5mh.-o(βW tuQyP ֈKZMa)̊Fl },6ij-.͆9%N[" 6zSz|5 e֪u MuvyCC㆘ 罫o:׬ws| *Q`fhd`,|-/V]q; jgT[-^p_'SDBUm{PE=knXw 33"f'J&vI@>i!ba8x)a[׭0oyΜ'['}[[2_.*F~t1Y on¼%MyS8w1/ jj1;!p|HLxn78?Id#? 0ngpպÙӺv.je5V_ۂJԭgf[ #GN_5w}hot@A40)j½a4Q"wN#[u6?79 Z3&u +?c{ݿ|܇;~s$laܡY.43s{q8߄^cfVෛ`x/Te"ZSUsX!&tck6{Q*҈Mg|Ca&F6:gojzˏ~G_+t٤JNoZ-ϩK ?HP#y<H)ifӨɾնx˓{1掆{6Vc~ }5or_&ӟ Wռcu[]GP$)1IZbS,CKy8>oY N"*;׵\64=Aayi z|WMCsgUʹ߀=!l[hԊĸ99q4 -K[ U۲V*Cv궊eo7g]99XsG_ ;"e63ڒIޛg\yO+,nɒ)Ilb0;1aYz7o흽f}׶=r' `4:H$nK _< (N>%," HM~Yꛘ *cMvܒ?T.[0oZD[_ș ç8id0D%5dP0ad <֛mpj箓0&P&ĭHֽ`M+8 JK{۽x[oxK?w>Yδ DXQWVLܙ4Bl xuO׿v' ŶsoPƯo?^m݉_زu[❭dBCς>"Ҁ)D jihɼaBN{m'\:WRn!a @P M y}5oh:<տ>a0t4vm| )?MH1>bv-g:]DBWS7Mn$-- yh+{|G5|>5L?h:o{a5`M1[ $""A%b;J ltXI%Tp]xnuUPUϏf׷Ֆk+F0q`OT~dVzV"~Rf >9rddgW&={*y s1#]'4)5UE4bN#ZSZR ϲڌ;6YŰMWY hoy,Eu*}|T\ EQqEڹ'Q Up*wa)DL#I GQm*-nc4b>5kIx'{/e0~nk*gڱOP WG O&T:UYeNm_Ы {L%@i#?7& 7K ,H0٤ӪPg~($.0}ȯ"^iB1,3)U3gV[[5YV]X p47Ykk5 ͮF3f_)wp+WN"!0$|cΩ#bE `*/M,!s  j/^{/?Nï .~E`"S\pҤfRrmp%wb"j9;WDA 4Zw0Y}EAZ 慃B1;Ĕ?_ջ(T:1TtNg:kfidJ.qk0zvVA7f( "IB (+Ej{~`&LO?qUfQwL/ 8V'+PMLJ+mZIx8NFB&KEE^qP"s%{yyƦj0_\[9Ž<3dGLrs ]S5 L#S?VB@c~|aVH褓t=]l/H? }"hf1H  K>' 攨u'ZOO}> ص':2Fggl<_;2.}xm`Xt$6#)'pDĜ! R\W2|OiӾdbC̐\ Fc ڌ2=`~`_ 'Xe|qM:*`~YU|EFEfѨ^0Ά{w@qPO_ ۫$BJ@c')tU̲},;aDv;IlF-Uđh_6Ԡ$.w0w`4T˰,r|P34cl'(LRBZ =;KtHg̒b/)%d`ƲW&=N87 O:oI1rČVH2s cj&)_ ʡC:.vv(--//-a׍_i'3_g#SX"VCΫab=?vvϧRZ `4w0@>{`"; =~g왿gg.z+4*\2.W1Vg6qUTp 0ȏRdWmCg&'_"5aJɣ^!s3{FwIa~:kiHyy6y !} B˵mݔҾSi6=}Ri]HiAO?㞝RĞFf"j5HDՐY Ⱥaq,k4RxHޔMb^Mo@ݬӎGL.}lǗ>8f9CcC83hd%s8?@;vcjVQ‹ L1Y!m\YYZ_X?k#'>ja( sYpC8MƄg*&Ԛ[/)n~w1T2S:%ԽL=h,6GZh/L?wir6*մ}_IqJ OKg4)> 吸c( "IFhd4M7gz;:m,aI|<BXI /b&\?I~YJgi\.}DK_`У);ooO*gA\+.$wtYgALIV#ZL |J ӸEڿA: algAU $+dK4Q@/#$d[2,$e7j$bX{6+9*?8sy睭uwM=l[>y'.EBT$rDmjy0ϵYIĵN{4UvgDFHgL@]Vk<շ "%XuƒeMk+2:hYv@..hjKJd_j};co wwQEP z'~ PyP@HUCZ}Qac^!0W{?Ǣ\>$sR-(B-tZ`҉#:~SYkTFfr?5ٸlK ԎGa1bռ-0ќ_YRZ%1#[%WVW{+EoJ˝[WW{ 8ʼ%uN@ ?',UɘWVXR XP%P5K%Yn* +کphLT.JxHgG{qGW0ڨ<" `TYQqبV4SY0)kRc|2WT\pHGFIE84vNv9YN=˴9N2N6?X'wlGYkHi?a=v<Ͽ :>@,Hƕh4f6WNlw2E*/ec#L],*Ixɞ*ȗ BJn hX6X "}c,\с[ttiKʒ5ÍvUhk (pnѻ 4mv,OߧwuSdoTjj-U8D"&hH^[D PMCtHH,N$^N_?_?yr]=C[TD䐂|Cja@9fZd+2]#ԗd]>s= lCFLK3BxNM`Dc\(L0-l'{2]S9i?&sbqm\7\?2\txjr!cƏ  ˻'JsVusļ]<8w6;M|:T?9T>i ]tuN2 _J M}v'J" `4"k>} X[>V6ٕJ95=)EF12QtkuAoAn<Pqv_7;^ UG%ie93{U~iDIz:֟ ‡D ,cJOD%vUY k+JEV3I 6JmH}~AUeSsJk#Z>!47 ^^,YwyI64cpjSǟTsS/'$Zxɹ[fڤ0G4qIh_INvIO5 3Jozg!qZ)Β!j8K<-LR4|Z4Pkvԁde&/JJz8Rq|D.o̙}l[55a"f/t_h4b3Wl/O9cf ưK:E^o_&*z+8 BtZ-[26^l8aTYy R+Xd+9zNXR|6J9*Bہv!OHBLigK?ϜSUPTmq@ ԒelM/Gʧc/hҼڿшw)_BϥG?>R*KԟӗYIMjՏ2@^z!R,ˇE5V ^@Ju2P9 XF#[+%̈́X> bjl_XY?l*~õ#X6BH؏(7lLFdbbߤì=TլsĦ6]D, 2.p"9~JdmJdcq4GW.1G1&mDU$87uIMOr)) ٿt@x"eFJF{}{ _>|<Jj›R+A%ŵNθCy$}O )K(iwaz`-%l~ooCL|ڋ)Yl(g+I[K_CK61_D|;BXfLih&CwlQ17)ASSi'+N7iJr&eْGU!"fԋR7&G([i$C-e$=cћur'J$ M$Z}ՀBn,V}<$) K:+ĿG|~ڻi{z гg6{CBwK'HE F,jM$C^z^Wӹ* 5롽 r]akyҼ_2o]"}0)uMeMOjR $ZTӂu8N)GB}Z,%!ʴ4$O9tATsēVC52aiٵdff.TM'燙UT ;.*-J16jm=r8˵Ս=miU)oJty2zt\#k\ӳGMA<.HW[|Rl'Ht_'9,y-7׋KrZ"k7 7<&&23۸hXA_ (ɴ Vi՘e/)u0C-ro7^-c{+; =w9?$4!COє&PP|nTq* ^-Bۥ%#14JžT|3a',koW1~"=6v7W|Z/WSlSJR^IbC؞d>_b+۴?_bIkگsQc$R= ڱFzuHI-&^mN;B&CGD֛SJU<'ײIT ǩ}pH, )T0@) 5-e~a][F%{$KJBcQH>Ɵ(d˵̆+CQz(=2(?%j?k%cKcK?ŗ,fR`>ۄY؞67e_e #M.\ꃾ#;Ӝϱ $׏J_ Lڭ-[Z,H|˜1dG:҉D'^X"d:m>CNL%m{\QF'2HrOr_;%.:XK4&{kddѠ"ˤ$vuoIIKw&g`D#H+; #Fōpd0McG4BVk0Ey\bR<6s|==5]wuFo|GJ ˷c)KjrJ߯yA jfA]J)QI;!b_&6z8cmT{k>DkVˢmEFW?nXԍ4cTTe6d R|A@Rϳ3:;uVX/͢J^e(lϝ*q?iIde1ɟp"nݙCBA7"R [>f۲Lz-rc +Vx0%{^v򤹨k\8:u8VLiIGp~;*a c@68dO*WOvZ($43.$wT~~?@/;e:[N'PVBI(SY\ BRyΪ{xvy>n7UmHڃ+f8f>qZ2;ҫ} kk~f$3q踪K#J{#}Y/RhJ^ϟ6 f#:Y|Í09tЧi{d;2o1mJ2Σ)=;8\ڠeƋV1Ԕ_ݔ]Ϡ nt=>qܒ vYק̻[͔yQ={wH3}U$sU-Zs Wcd89Wٹ RMk=}ֺ Y=z攊Nd[)ŜH]oAFE(kZ8h=gF(YM@`TS[d6ffhEI(T#6tb뀳qMpu 8 b@~aZMU~=4l?Ggִ$6W5@@H}Qrw-H*&r,3lszEgҺ{SWK*KwnD ꗘYIںbŶ]\?4faN@,p#3uzFP(Y&7p~1R5#.>ȫf< -l,d'kuN7|}b$8pf S4"q+? UوI_5ZP"нt?W ;iHxJCb1-~o᧸⥝;{sίR|hY+i".u2Tbv:o-3MB#RQSqV|Ԭu4HS<jxVviu93jZǷm{_?g{r d_Ȱ,=ׅL))5/2ĩtdir: P>Q.V Qk{H$]ree$?-6Q4̮hmFHhCуGf&>Fy7wHs̯j?2S1'd4pӳ-+T%֐ EI8I[!K GHGb"[{.E 6qUڍNry\-'J~z'g6XqK7V[Nɮk9k7W]:>><8u]ѨR 461TYAj^E4XMf JeTugYyYy$2 Xr +1s*r-^[n7kNiUxe#,ZWdjV` i}*F ,,j+ȂP.p]%"ZD;hg ?s3ҀS=Z~3=Iw6QZ3dm4@C8;G,7Z1B!XX';woU9x<8[ȱ]osR{rNQ~T`0]BR4Mv9v_&nCGg4_Š:6ڵWX pFV)JAZezlJc?~1~zow hM}R F!N* J=*){bјm $<܄132RoCOG/&&l pwyg߶u; [KUm Xv|7 j>K<<HLC\!eAVDNU;|ؼ _|W~n૷݋_ʼnB R hIM 8BjUjf|+VM e86宸lK^e[QI;ЂԶd%΁#YTMM}gn8q!n]u붦v2odۘuÞHVd<֊wzVYψRj~C 7ȩ#xFNuC63WQޡH|')r7'! 6 HѢ|6I΅h?fFPdY/sW*k9O%IBY7!6zC&=;fa.,\5=GzjڞyG]O8:vǻv{zWup pE=j+3?ev`Oǐ@]%B++G2I]?eL/&qvW.ES.ERhw)/z4\oݶ8XRo7k}.|nonAA+Xyt-yil7[ *x+QTQݴPT7ꝤRGbIDDb%l@0>5xr?[ͭCSӿF<孳w@qS˹rrްzzaV̝kfjfO\̱믣~u~CXOL't|owgRc= Hb"EUA![_j"KzN_\1ȹruO$NK~":d^A1Hs* 8Dnp!OX x DᓈqCaZu6`w*QU=mSs g* XEs{* 6< ~}SxS1s\QxSh} êx|UG0*3݀Ԣ7볈|8@70}n`ah=:l)UuwB@S7)fR_"Рz#2;o.TWf}Z-FDpAtA \^flXvEz{%}|x?Ov !rA 0bst\QE<Q:`yXjH:).>*3AJ&ٮ1:2`_ކBn~>~g?J,|6OuzP}(FHJ ¬Bb4F3,NQ Zgf۸ԩX}][;~J {64Lk%"cz X)z). pjɵFD']䁪w.p[DOdųbz("QNPu:FRX5`h`nW?'ΤO‚))U.f޲-;)օ*}/ w[7wNniߚĿpޞv,BsBN*d<_[N͵[xq_mTWW蚃n{goډ Ɛ۴r3cxUʿױ2vMh_T]O7":Lm&nVm$%0Te,+/]:rȝc0oKbk'wH~:Dz~:LK?Ien VSP "c0.&92ʝ'eRh'ow(?QK9Н#|u|%_*]K/)iM2rXNqIN19Ԥ洒LN+y@:7WRtGAhTj,@?~Gee|vkL$3s+oT*R. גI[^h1 hӱҖؽo%7xn ;w> )f|u(Ria*{ɦGTefahgЁdVb1{׭0>mxz.A_\68r88-sHn'26-rqlԝG@s-RC!)``l.D}xO:BӺĘ~ϒ*$rwj!L(gٵ,\k-llsr it&[k2lJ*KamwV_4+"+ku o77)Q [XJETOi"a3~}|h} `չl-dYVK%[^dYWyXKǎMH$!daIJ)%Ph%M-mXZ.J W-Bi?gF-e V9?} +T.5eABFJq[[sfu$ޣvSTyz~:5HQV29dO#}r:;6ezَweZ?wlaK#:Api$:WZsۿ]{3afTN_Į {r <0rc'&'?H!NuS#TؿC2^wU猛/`$Edr%Y"rܺ.#T\Ⱦ3y:C80!'<Ιr`yl^/9#xSaޓ@zQwlc *.@܄{^Wwg2N4%Nkmc-,J*0r2&dԏ~u-ϣ {tոv@my6˘%+ʰgDG1@z9LAM† >&z%w}Tߕl۳[txa-u12T)[[#ä쨆Ǣ!w~sjm߳GH)4>/M w qw[<|FO%}it/E%qGsE߿;깸[XQQ b RI1}_WP -3,t>D&a,XF|2l&ї|2L%y{ea6ye-[&'d%C| ܈l\dWԥ8]fI8,@S?'gټbx46?"ըr9A\KS⊒.ڗKц&ns{ (+*HZ8(q:ZK.U&'IaemotիCށzAhĥ߼,IjJRL.uWuHcӍcLҍiyU5vJ_![,`ZؾbD8]bt/qoӓ;ɶ/KWMMqZbx0H%%8W[XRrYS*;Nj!xQ 嘋a;aM?gEry{p>&S_G(OVHGG9Vg@ZEV75}T ˍAP ',) >!cj-}.u:0B-st$HW@MVLRdIr4Mn:UdR's7TNnaaF$`! KrJWu`iCg[lN0( SD _c@qaָmָ wIѱns8+uX{D[uvCP{ y֏LÌRI/e7EGE%BQ.zR4G 8/yɣ*"a1 =0(XTosРAS1x'ֲb($ULoq؞}-c7Ip8>'[sbBjxE/h"j<=/w wu u;P#cҪRrm$c.%%/;n6bT%Að~cP!yO>c | 󣮾Wj?:~UNp'+աM{6neo,ug`-Wb3{}[O)e: ߧДWgfA9 +[πfoP !CN>:@_:º[HiL0 Enh#G)t3z& Hr4ʳ]2`[08Vg8r]N˅>WbLdQhŞEDB:* *վw7b:l$3$4¶ٻgNx 峯qL^5lʦE|j)0dp<%=NI$gr8jeR{Ysy5tB`b:oOY&(`8JoE)jlT:{Ҳ{R iQVoyVj<[TU0MUSCMf-VDB]^yf(UJJb%\*56RUQ dR1+Ȱ }kLݵi>T%ո_bIi/:rzRD)Ue)ՔkeM ,N3Epw#4ڥu eB.3%+.% "k0.RlDK%x߄ BݵgZ_Cu=g:›n=pF8dδtҙuL/S"i|X빝=[258sŕE T3yTVE?ȝբ]`+9cV lbp]ŦA\C&RhG`*Gg3/r:+d%\uy7#۝#@o9h_XTk-c>;G+` n=|;ܬEl oxhܡTԜWwjxByOZl2̓neV;LE\Üa*6BE|O-՚nT豛Di"Wg`]9 T5HҢM(hk6{Y&4<;M7fT:Y2ҪY-#}xշ c=CҝAJD s>{&okʨX;qkd?4Nع>x|>JD-qY,28jikmǕ')dqa4 ǰLځcMFO wQ%T  -YbЄM ހ dH(l]^ԙ;zy yHǮEZΖq q^ L<3dyўȿ ss n|#2y`pzn}a|C|oQQ|}|ob'UBՅ^F$ HW2,@&@bF$_YR\Ϊʊ8_JERwN Yؽ`Gl9r.B.=\kt5w1zVꡑ mCRq%B([!  %E8Rm'SLC}:XԋPz3w| oJ`ÑQ_{5^%:&͐7v Qxԟv[9Wt;^gEM()MJw`'&Ct3{1bC!3V0}@+++[/^6䖋hG YG3 MiqSX׶RQƕGƗP5t"onS^S|3Ɯ߀yAק KOnf|1oJa]bT~mh1li2û=kunno|\j6KpN_qAor7AI¤ TTVVJ +-vaU7:i8ܗ>,uzUEyNbt3 ;+Ժzf~楺CصU @̊%Y6czW51^POxbJ'480_6|7@m m1[@DbniA 0iՅ6>}yOE-FcWi) #Cv͵~xdnz|0wmpe%pk'K-: z g F7ߕ }Owv)D nGE1^[G&!+be7 \Pߥ A+,WUA[,.u]&$v;Svۭh>QtPs7SʑT(%߆1SvEHH fڀcZI*6rUUrXQQr_Bt :`d 0ougga@T*$,NS%/B6?>v5ղHTxȿ > u.[Am)>-o;YqW]m08S04554<99\x[w,,ǿ+fʃ}#NqMhiZjɂ==5s )ߑtYq_cP6 -\===]ͮF_UR )$0wlcU()pCq @-7$ Uי+N o\:IyLze}MN]Vsaf+lMV bzԝ?OBNb"IBP?OxՀ$ˋ͐(O!̿NU8};ZvdžuN>8.湋 =%>ۗD?4-XUU:eB{EcQo0 z# r3}zM,Tϓn\yBס4\n7ra|OVfŜmZw3y@.E>sydq/3jV[K1곳z11ǭ&1k  /~ o991 j4rٳgR 7.]d^B?cRnlwwL4S[Y77?Xr wJ9]iv>;Қ׾R `֗ӧ`54#$9XbǖԹZ|K ;>Ƶknd]˾yxp}]웹5yvIW[]Qzǡ}[ϧԵ;7ar>Xd,?^d?jR#܍@=O~zxKU/hyl44MI#xˁ_hA#f3kQ3]kɱv+%‰ JjM]E]Kn1< SK$Fa%H#.6*2,$ uu'u u=uu uK&jZrH }Fa`w]z}4vG zr?%-S1|C%vE@qi"wăKu|" # 5hzȫX l TV2dj\ZsGFuҨ:FPSYZ-SoZMWd5V}Eog)v}u ec23hS\i۫Fհ3u ݷU5*W0'x`HP[ޣJOW:&Sg26Ѣqsr\{޺aj4Xg2 2FͤSSSVە)ZNP /#t"$D͝UjM&HJUwwع2aYdj8#a\! $Ee|ftpeus=3襙t&mJBQ 't9Kn93J00E~0+g1 %{#\*`K"h2f7`5-n7]_|*QG*W_w<?(L+])Ȏ:K% Zx^*aϑcu̍nH+f*V@EԚ9W"=Ao// ݴc얊Ɗͥ-Drt]h_5>35=:Pe?z>CB!:"cI-9ʉ^A:ݎrFLx|[Jv FE,KirZ-55u ,KrD9 Ak ;܇vHģX`X`*v(R)z`N;xNMݚZ--[; x 6/ T4ӑ *֕x˼]gTK]wI_Q

BnC߈#ߙ2EYCL.i5 {<[mu.9:TWg [@4Wb?6~}|aq~hjbClqD\9#y^0s J94`La]gH"~2mB[?&d4u]~mL[Ry<8jhg#ِ^-g|6OzG__R|@Rm"2_XlʂM0!xؗ{l:8byQdN߯ VߛVF緖7immm㋮o+xE|Ngi8{vN-.Ʈ @O+ uѝfsԮƫ_Y}}3"{e=L#^&i:KL[ڃH&M:-}SfԮc_6g; Z%ոV&j|vypf]dsعn0sq툏kEYЎZ#{Gvղt2rpz3=8k{{:Ni-6İ4}ԗgw»9 j?#7)F8ZT&;XAM5STUBT5^399VS@ZiX|L'@hDm,zrm/X~p Ś0ˢ,Oϗ} %g)D?VAV%]uw(!tܲH$L/HzF?9,|WAvcB[i#~r~pr3h&~ܡq6z^_]Z;t}eee'Z;_̦u5mju{橁ʰZ~W.)/,ˊK#>]$_P&?9]h;qϢCтhK _'ڎ.}_'>` |q'>`^>pL2A◞3 8l['!$?.aX# S\)'UYX@w'}wR.JQm'r a w9}Ӌ@s$L %ai\ 9AIR cbas$Il*V^MD]+i|?TD\Sr1X@? ,|μJʧ}"9KJ}1ENxPvD!ߖ!e߾vOICdTv( ;Cm_ҸwߥY5y{syrJbB(0ɻdYӕC(؟}sү]:]~boK`Vj T3!+' < "d(~~:'ڛl ߷U6cUY2[(C-Fy8F0MlASfDD: !{#o${0ؕS|^VNwqƚKMKm53]Nդ+3)ZC.#b.+7W᪦&qN!ײv!v !&{?+uuN,minQco}- ihK0 6^D3q:Nr.ZA 41-ڱ2`QF( ԱVK$cw{lݿvdlslᎎ/IxڵTMO@@POUEC"SA*H Nbh8 RoU/^{F?ҷE@UԬlyvf< =7ɠhlЊ8CK̸8W5'^vYzqW/zK_x Wi.ٍ\ֵDb8CSmlh#f|8O]9Z̵ :V}~xrjBkyKUZwU5)K 4\zT³Beh48EJ3g[">yX^HY 6tÚTåvtĂG1kSVLvX2پ1'b‰86bݖX%rQv."v)8=l0j+~47g[fl5v!3DsթLM'sT %6Q6>ҎQ`=ĽN闺*.bѹ#"7 X6']*a aVͬGNMϽUVU[\uɳWg.D{v#Fv|.F,?8~@:(jjZ:N1-đi>]M16Jt<Et L?/t ]OOӓtRN>z\zh=GW^%2#Lӫ7M )Khr@ D*bi -aڗ. :1uGo/01a"&a2"VXb55&u.b#lM)6[[ZhEQİ5؎>O=v#6#LTtbcD7c',]ЅnFv?/>솹ݱ^B/胋ȠY,"^ sʨ`1X}8`Cq8Ghcq7#zޥCz> 8'dBTqY8\q.ER\qUZ\qnMV܆q]^܇CxQ<SxY,sx/E ^kxoM{xC| >g_K| w?G ~/w?wp r<븞x <'d^Wxe^Wxu^;1nzk zxm^x}ހ7xcބ7xsނfފ~6;V:#oo;q;'~SJ:Ny ONy3y̻pwl]ysy{9Ž>vygq8}%.s/a^~?A|0‡a|8GQ|4q|<'I|2§i|:gY|6y|>_E|1_—e|9_WU|5_u|=7M|3·m|;w]|7}|??C0?c8?OS4?2~E~_WU~_7M~w]~/Xg[ָhEc@*],)xo]RJBwSZb2 .iHW}}[_J|>=j锟OK?U& 0d5;jI醫5]% SNeNMʌ)@J4L5W}T t>7U씑de$z$Y=uVم ªonjfҕ)ia-WOINI o59/0S3yL>4,`;&όq,oA;KiV%I+TT0@CQCCCQKnURm\FZv`n\0_v=z*zzd,KKEImO1VU1`qEn9F ?UGTI~]Zj\mhXU4"EmZmQɗKJyGHT;`i!%usn-eKuC#N炧큹jѧјh\4UVKETYUTD/*!QE%_TE%_TE%_4VS5JK2!5j_X!}xZI%avEW|aAvo,y¼ub0sUb_a(ZE#QQ=%>x-E4$jڢhXt]D4*:ItNڐV>=#21Y,YD,"KEmIQű[Ö-dS>I(^GkU?v;UٜʕǫvoyϫPmK%F[u`: }Rou7|[zW|j@)+*2>7fh3T=i**o ᣆOVe>avÛ;6X mu cN}ǛPV=`~aj־Suʩ?u3>}3K^~4Tmx=E;'JҨH)GCIm+@+a ,j,ܜ^^$mr'Gyw>K7%eG_c=SfzB/YZFowbx{P9.b3ӎ5ƘX&ҙt2Nq:×%1> p}:T FiyRm͐VSpB 0I Ă  s)(o[V ָ(vme\#5,KV\<@k/A{mMߒ/Qv﹣ކvh Zrg!Z+7ope68ݼ= J䠒B[Z6p(4qhGk>i ;U4%d^uqB 7ҕt(dJNV%3>(*zh&hNpa.0\+p# YyX%XwiqzEk#V]*[ffLq`lql#WwI΀*uts 6Dk]'t;` ٟ9Y99{rrM(:M{9Ct^#tzzi/i>V:@ ivзQŕXG}Hu@6&L[R3mZCߡ]F!.ѳgzj e2)ijq\OZlFMSoi|[Dd2ZN+[TKI/le{j|_쿃2`Mt@h2LبV]>",W9Zi8|1 _Y엵>_SrjU#gv^׭L ʃrˣum/nԾUV+9fAC9Z`LJlϲv兗@ SU[-ѫ Չ #5/۰Ion&q?Y}Ҙ5$F~˚V{[kSTֻ#=b7c`B*uQ +>˙Q"py#ţ/Sf2yf]=wL=Wv G׽|C[>DlY+kyG=->ޱryI)8sdc6/Vs?i~%z 9z= ~z>k}o^v fN`#G#ݳf;u{0ݾ=G;ߙ#܄LDZV{sHݎ՛cޜ|=H8r~f\*Ojwv((BÖgnsû\JjK[G!C{9!xU#b2)r)~c~ :Cxf Etu 52,#3ʨ1Fh3:.cǍ1h aqŸj\2feyfYbV5fh6mfE S̚{ɭppppBs1;YitT3-.apppppp5.7YitD3^NappUUE\df5+y}h {/aΨn5aͼ5; W W2rL/k59V8V8I8IPPBMgVZ3h晭bo{ ˅˙95ߔL/i8!Ğ ||22yϚoJkC9j{;Gxv$BH%!HÅ)woM%Evҳ5{|ƹ8gړƌ?<=z$5ER(Pzsw~q*Ư4:E pMW5zҟ FM3EiC37;p|flz!}Dsi-6JvG Q: :FEd\ʧB*&PU9&8#9c!7K17f܂/V|-+j[7-|wܓ{]|7~~(~Gq"xOI2“y ʯ9`l0]?CP7SBZkݵ7%va f#|I^C#8"-14idȔk#o~.rXȍ[tSsLs"ՓF+c>Jʎʏ֢Ew7z`sQi6݆_Kl"̱-Sa:ńbcy¶.fx̸w䒘cctPzIxJsb'N;#؅({؍[cw5o)z^hYZ }O7b*TU%OQ(1i(A)ŽҎ 3váZ${ҪBժ(Aj9-@L(F E\nP(A|v*z)ݲ@7roѦCD#>vuF9fAAIT4.rA93.E 3O ~/FBQ@l!bKylhKrx4(Eib!Wr%"R`P 9!>iG۽ԘXGU4_ it}E;}8RNo]I9ԉN\dsK[|+ZYCpV j۩ !"yc|<(~ڮGmwb-| X NE'ZpZЁc10ZVd|ĹgKEo"yC-Cy(]ڢkPBJA h`*ih h#N{y^DP,JMAi(){%}~0_lA/p],Uh*c-\,W6$VhzE[;"PO20HB]d]'5B;Dq`7W6(m.v6W}%y8`kG;3MPGI@נkPcWj'i ^ "'Swm0{j8@ J@s%29@$ԯxZClpn:wc44}S 8'5>{k'grYf̀(@`XB r`(ZNԗ{A  ( pʾdw 7A-"KFZCk5\k@]b u~G"_X%"^ ` kR2r `J_6vԿ{?~B~@bF2ȀeJvbpH*qF2= hq_RÔ85L#H O%Q(% TE[#xz7.ēhcƂU CHm<9S&Y`RB`R|sSz Vs C2+$Њ ʰiO(5>Df݁8 PC~[(eimy%K}WP}&s ;eZ[BY1hVg lv|IAw|\xƣj ڟ@kX_y/Oq9KR-u`5`ҷzDlՖ57"][%6(E{Q^Yi&~ 7%.%,|8 8&<@|b-!" 7A"g]w= +tCnqkYa05~.X]>)G E>st}'mpmϡzM\9Om- nS<41\chk\hQr*LIU|ˇ:-ZY0&MC#%ADNh޼5D7 n_^z$=EO3"MV>WVӷ1;9.-W9X#-ޤ#9uQ?K^K^k[^y3o᭼ ^Ï<Gq:13\ϐ$6H{X{D= Ӟ~=MԦiӵ/*m5iӆHsc#(%V~]|3E!C|j$,'[70[o\ٗ3Im`Y/s:Q8~k\7 +"ŏb?b.}dT|, `H@+bK\`_b7~Gzn{HS v)$i$ïN~T"8Đu8"V,2EAjXNN@S&zr/dmoGs<.R*R>Ft$zYC__Ķu3!էc8R[# e3vȇL:'smNk5V5 ="~U~<&Ҫ'Mƺ>+Xp:k:VIͥoho/գ\#$.yC"ӽܭ&<8hpI:is6z4k+3u[m@Uu swnUi9`9au}&E I,kmrObs^!gPTjSjW|vsH_.>75ث?toap.Y-t˫+@/)r})nqU}{+̨GxQp%𽫥E:Uj翼CEQS/AIOتk/.(w||ɤ-T,$Spr OV7R K?OaNqUn&BY3TO^=6 NYv{!"?𔸡kkK yNxXoc0bMHXVΙ-sgg|>}.z}|OK}Yhpʬ {]s'TRoֈP7b~/W*Uy(փ'֋\ԓ*9:@܉ rN/ Q[ZeyrOĻ^ڈiGL^|UU)7;O.* _v+~vvǚ},#l<rvsrÂ%)5yR{SUt}LZybbX,ܓm/VV!9PfBbQjRʢGפ[QiF΀ͺw͏To:v*nԵ@ߧin~5ϘrI)`T:oP;(Ҹ襣-2)1Jq;5lHYYc .6o"v8-NTrܝBt)P lgKQxqs|F0[ ԿR~77Cn6u~/ԯ8\_@`!!=ʟ\Z  -,,,XNx5k""bJY퀘,WB'CyB]Ck%;BRtf5İmվ\)}m{ǵJZ\Ybʭ+TVZ]8/% j.}NJR}XA/[z3jHӺ>|_;c՗>s$| ^7skj.`0p٪̦X{+k:<5E&Q" Ͻ{J 'Joӝwc]FR=iգdwE9'wo ˡ$8S{8̙1pF UÅjOk/Lin E\k xD!xj.:H7k%kJ2_A6>qҳ_YzZ.UW'kU^+6H^#^[Af"Mފl[lrb+Ւg9skZ8,VVl f`N8i`$L{Ԁx._[9&sR^i%]/ .N<^QXZ4\ z0| kMfbI͐KU8=jsTf?'9jtcq_.ŃX$jk3 Ps$+0 GUw%.RZ)Uhy;#ڼ9h7ٛ<*-EJ *)'wZ{\Zb-֑)^ߤ7awl*٪i|sPh@Ԟ9 륔6C)`Z떘rGqlX LwVb*Zi\=,T_r{7A,]5F>lӁ<2uߍ ]Կvw=VŹ w}뎎XMfl-an*jhݹsGG`>~yU*PnrcG# Łf jxCzVZAK- ۏtwVf84Ӳ}Zs=0OQ1+xH4Ϋ*i (!>=L[ru7aMw!贐̲׷^[̤|KjYӠkV7>։t֚NkfSU{J}fwm;bg9-T窢G VJHG{s%EvRRj9>jVnvJT Xet[vBmac֫aW}*ѫb[m(Ӈg߹*G,G_[b E T*yzvJJ_%Ԍ@ЏVMpNv؃ ;Nu׋.RCԏF>OP A4!!az6z4՜fOCGKuOSwہFc^ @Fևﳄ`!A @?V[p;f: BO Vp(z'3Am4a:B;MM `+&EY?`+{}zTնY5)NG1BC_p4@h4B{ bx?";g:Wy u@yRe8^ Dp' FG\;!<^I8OBL FoHD/2:Mg"݌t `27xҫ nE~G/IIc$$Ǔgq'ϭgHy#P7 \2ZB?vA tU^tepwA<<\\\7I:缤c:OTwC(n& e&1:C q݂~f\og+" hڵ@p%oĈrIHh܏l`C )6Х1mWHn:cx_wWh̑ [AJh58h#ĨAM jmHZAUHP c5 fyn+G34 /C[qNЏvMu'7e\Q -d )}C.z`0$~8FGL]?-v7.R*u?<6)}c!eLuyC| ʑA>.%rm?)&G\{mUYzH i8u@WFj1ƈ+Tre=O0ZȵN+vΑ6|iqT7ɹr{^= }ةښlR; 礨~ ޢXI }% w97iOIG@AY}4J= z6'Σei5ӛTHgi5^[=|%|5q@|_GzEp,?ˣyܖ?A"%w. yiaG !==iOkWpy^eDm"^^d^MӦ[[AR7j˵S[ryxc`d``b>̔<&7Ē<6`d`a`҅U] դ'ח% חplugins/limit-login-attempts-reloaded/assets/css/fonts/CoFoSans-Medium.woff2000064400000115604147176754540023201 0ustar00wOF2 P?FFTML`^d  6$0 : [#ȑn{WH7?ܖ\oV`BfŦ;_2n!g"c?D<"QK+cNE3}x/ˡx9 >]ь"HjT7"OS}铫Ol']`z:q#:JnIn&h49D&uTsh׉/|%g/~b~ ȺGkc#džSr_pKN$ɼCD=V2qo{uϷcՖfSH՟3:vR \^dȁ4oZ@0?p5NCɋJJdeKƖ#W>ȿWga#pRFNE~1ӍF heVkZp5cٜMsژX("TI * abbJ]鶯ۿ.=jOs{hO${wA]LW~$T̒`9ˏ]G9Yߕvْ1D i(7&9$2|;8W6X 95amSS{{F$D \I C%nJllKjjIdo$,o?z㪉 @k](;8[ m2b_ M5Eh';B(:7Djל߶zo?޶c%4 ߠ""!8a@=m3#ԗk!ֽ_-- d7ddB8?òaZ,A1pc(Jb`UC޵)6@@zq#%1)IC`^@x{OdTKVZncS@V_WwWp8aܿRJ)1 aa@lSL)}kmva޸7dfݾg> Y#yIƟWZ@z]o>7q+vZ7!qpg]z 9o| A EP%ВFC +Hf4무Hcifyo."Eq..6.0 JoܟTO: B!Xڗ,RwO=)UJ {;U@X 槹BSPȲ"o3+I2OI Q6ۍoo%PdblIOľþ_C x{GhhQOԙݜfhX -Vv Y-Gz5^"MM@9uoROǐf, y 1J]`x6,\%j&/:dB}$=cuFTEs%@!CH]):[|;hb"1^#FϟY K՗$}XsxQ"N2A^~K"du[* @KN(`3%K=cA"|=cc#‿t((1@`XpAi&h܆s{uz%(qpCTg aBQU ӲҶnfl * p"*$5Լz8,_<6ѡNVh;8b`E튆{Vai a V^v}"#s"mLp8EUWbDaTc}#u8dT(0A)rK 20bD\y3 5Z_ r 9ZS '4XH}ppabJQcz 6QXU@@7#Fn':ED\:ǪKi9oǞ,kXoݾ'QZ ., LًBk1:HH'BBʲ>loȞFy;::j \(zGhZKXKXNY``O$yp+[UrqQB 'g0ee7(](Ɋt 򷙚Q`!Kxk)DkV^rxc/9ks.ݑ~[*奲,ʪOWe8"G - C2%K&oI i v=.@ AU'OJJAV3Lzj_J(*8Ws1$P FJ= |8&cI:`y#,%7B\MCIIdMx;>OB­ w^b((BB~b!6=q ""T*K*[_*v)|uoXEU%XTW142]'9i^35Y+.;GOY_ K5bq(3KIj*|TTE>J d| M{q=Ӣ?j} ж DM\o+$P%xՈ!'NЖ'e@a9L nq UQ 9']"nʇ-Vt՝ʗ߀MEM1zn-q݉"X-ӽk^!j¾uf,\|%zBnSc1m/tAW_W 0Br& F'ڪ7c4P1l[;_xLMEMK3n ¦7`ސ&h;Ӡ϶ lj-B]]z]ϊ7y[/e6_87tܹ'-Z9_g涞߶…;.E>dNʹ#K.pך3(ӎv K mϳL%!zqHDjHIGM*흴&TѴ͗p bDJW>L’Y2L0U>8u9}I'HB g`-F8lJUTFpii:uê魗X(}L")+\}h[*ʚ36PM5V{g못]5]Mݲݭ}{mzP+ mٵNϽ^e[^:ߟ]T kQG"L\s%xxhyXlc:R'Q*DtΰJQDcQT=U9\{{wj$p%"ΦSw/1H{:E2hs3/<0=~@vu6]a:_V6pGyfC75B7DŽk /g6klq<>iwT"R$c4TAө$*+^,wv^4&"* ;%b잂$ߟ p+i&|/N[E_-,BIz8*ۍT5 ~|Q1EV L3x̣ez04G.RZ(}Fjfڋ.l_kUh $ol ,1Е ./ -s,.b:ɯM>e}8&P`Y!Ry.rԆxB嚑T.e(RxfZSfaޤ5u@m*^=){N%}-2=x6ky.00A:K((ۋ_O`Kvx8ɉZn0ljyPdRfȶEUzJ)_ti"Ĝoͤ,m.G-P4ElyOP2G|"ʀcEr"ar&*y}KٔKmV'2C.HڔX ݐJ )`qNA60p2:dʑ>U ?*7]'n92PK$wa@L3Z`pfN:mh[! b&~eJ0E]00\iP(LO.drU24 7seq| !2LJ5Srp_?ei&4bFY鈩xwP4}7(<;J8;9&ԽQ|9dL,Kq T({CMT.?%2Gv-yn7=ޫތO4OM=VF poftiM۷I)ա̲/>N3.3RaN1k.k8kNgg,}?;u_M2o=id!q'C0S5Qy&;::jKYHTv}CĪĢ3s٣H) 8x"I W:=֖j{̠\0 hh0fp$z8.DIIT |I9TRXmZuDCH\7N-+tJ,L3E1Ӿ/OE*=uf| Ok5hH {$K2Swرh VtͧXsa?񺰡6ie0&݂>t$gŇj) D(FDW.F򒱎z\lfuHТeͱrvק,ǨsxN-ww:ɰ)2De*.%OwYfҙܚly6c= Sbdl f(UJ؁,MĦ9TWZbM{dNzkڿ .q0q4"NSы Y3wsS0^Aj%zO-MH\QI ۢ*(nCD;Ez A:%W W2ÑaG8wAnνg_˧ ˆQ\\؝VvWsۉ8ԤPxi'g!prÖG]-Ң`-kO5/~eٳ* $E|]0|Q]39I0W\=#B1y:zw~6`_OnGt5{bh0 OyW6ަA?J ·භS K룎G.M+ 1XAPiذiouEʼnw^Vh>C}W']5TDpGéMT` 4&2Gq3A!'EWSh-0>[6bYfs\fn岦:ǚej>޹X2qjjǛcw+8zҀ#L]c,xX0$xOcf pr`1=f0g2"r԰Ĩ~}KvT..._a-Q-1]bC̴݇A-|^36 Fr)˕FBuMb+g@`D OWW'oFׄV 7KBD#@?mUY\ c]});m !Sjkqi}c@fp~ɀ"}5U^ +M)%ʤ4&"B1܉(Go4oj#T Bp~ )fVH"%O[>y{ꆪ68zd9ƒ^.*;]}pF~g㹽]#/TP`;&1@!b1 Aa $C+8 2BtUghLS٦f~c1W\vqۣxLV{깷 $T)ҳJ<\:/"D2*U݅Ђyu tuU17XjCMLo]>栝+tVH7<ƻ[g6ӽE.yu+KnZ{}zguPXּFܸ7 `G0&W+JW}̇5Z45>Ge|Hx^7qǦpK4~9< տx)_`S=08,xI 2k^mlzgF푆m :8Un|^v8<_H 1JG{z6#'-];2#pr<\4JTp0][SH4EŔ(\ rmRs!w1O1 4##04 ōuO|C3>WwumrK*B"ho{s6YpF#xgk}m32?wrCWo8iܖ:V h4hך_ૺVW7]20UMܨILtk7:6>8@ lA|$46 #3~&e"F՚ &Zy_ D- 7XpIP¥4 P,Ag U8 w<6gFE+F,E*xL1O=wr:%99wEf(CK8Bn5e5'3K&PcNr%zX#޹Xt>ȩ٤U68NLdFA%?9W "D6')!"lqg33FQjʓ-LI?GXܽ&L+7BH[UQD"g,kRg1-C,/@,cG$ VY\[UobaY? LTcM[g+&<5پ3 <VyF"٦eo7JlhIJx-1WVyD q& 'lYǝʵc/oŶa4!sYǺ\HWsh%fkŘ&. ǀ}`ly Q;۫WMv˞͠nt;?rѳ:6" Q}?2mխqƵeH,^?7aU7meU7m/UBa@XEEͣ0%$Ӽlw8˺8˺G08kBߟ8yߥ98o?8qjZͣSQĿ8T EIF&Ƣ8(f3IG$8(&A'8шa(,`0`nh-86zBQv$T^\̔)0k'!"b,h`?B~]2dK~9Ӈ$ߤxu~/һ#~/j5Y柉Q)AX(J411EE\F׏KtEgqøucmQQ\̴ik$"bL鞎Y3: )`A}||E~Sγ?`6 ~$5(^3,FzsMF|֬E9ڴ;3Й]pK[զퟶ؉(~V` Hhg_Hb׭;*w h帚;4=r3_<;A8&y Bcx?ܷ?TmpsBکgV>"!ۤjaLLE+%h_!_J! 5q¦Uͳ{pozKg0ˊ}?DMt8,bGyl4<>>T`YO}m[7 cc\L1^Y}88%ղ66ZvFnYlezngvŁ=`5'ifmEz_>=ͯ;?=͏3[N3?vf{?F]/ z<سq@{%uo߹;{OO{7{zPB/_X_σ;W>'?''ŖZn;٣^ 9;If-:ڜtiguHc{ɿvr9&soڡ5aKr\#TpѪ\6BKԋ,#d+̷2*mlv[=FU:eUL^%rB X@b{9+Ga|gX'8&z=} ON+qufD&P 哷$@{\Yz8}1ySS&+vـu1\))P~Ӂj= Re)-)%|5/@/C4Y )0IR>% YvAĐ=1*IT2s;uq9 Xbcn_L(4t)9 տx*GGȫ͸HSWBwy<-&'uI@AJ;^߭ɾ蛈(%#C8P)SV@I"g"޼ k6p[G~I r(H~$իh"ʞ?1IQ0b] Ú +?2e$x٬c~Rq&)Xv _ۻ]>epyM(W42l8 NΡN{Jv}Tw)&fI,~G Z%K<Xe7ä'7O63¦1o'+a\jSD%Hb^`ҕ)<xKt!o%ρ҅PX0մȽlKHCa2D[":8L2)uO!(iN8ErwWRgΣw^ZJƫ( Oo%)vHluMO=Y?pxižrP 4Fby,umT/T>^жt2ZEt1#[PƠ H22E9>VXI!LX V f^ 4R(5Ra*Z3.F.Rh5RaB𗺲lkQ̐TL&DM T@-D1h@C5Q[訽G("S /(O`1B.o@ӠR`GD? ˣp"sPje>Hǵ9%H{x@^3,s㊪+Q R*(7)MTƬH#^1/?AM L.q k =pX=Ũv]YQdż9ەJV%Z)eX;何 1R sI!ݡX1G MVxhpN;u>,H23ӎ(CÖ#^RJ`妅vs`g-M0s|d?q գϾs&2j tc'E3_̌3b>rj#\Sk@44Ek*C}Dis3!g`kRڶieV`LIr|dFⓚT`TDhx^(Up-ԀqXW?ReÕJaM-ZT gǛkg^<({ 9W"Y2(?x{/^1pF!!C\U@;(@AopbC(E8v4%,0-ix[]LQ=Tlm.z Ac;>dJD<'GU,l&j_zVh$ʺV>d'o>d.d\K G E4hQW&ukTr/ř͛0p ݜή-~/PX1Ќկw4{X4?/P$?ZtqD>4 aʟ4/|!F|AogeǠ K XjXlGzz+( n>'C!2¸ˏL JvQ)1@-CkGw`]K9E%MM$m{a-_Hj?E@KYY iV Ä,p,GFz2Oh "7ҼzG4!,2|!q#ZCjȰZp@&#KyoV'%܉֭/M{ra$IPJ0E)ƺw\!բV*X)HɹYzGڈbՔdERBm%ǁ ר,e%!~n`r>ѧTX}8$ Y5{Nާ).1^ d}IX?^j1ƇT-0a+jLk{9>prG?'ܺŀRUY&bȎ= Sp_K`:̪5SgWO ڀc ՑZ]U(:n;ؒ J?r%) rE^DdE[IRhH>*;AW jy( j('Ga|Ҭ"e*JE>k(C劘;fUDq=EݮBg{PKS+਻Ī"?p#lv%(-z !p3VnDD ὘-~JkWt! uPġxO82ҹp(?@$M).GH2qk|oxd*.l\RbbeDS!q!]]ƻͥXqoF=DNO^A{"OUi?$6ܤ*t[`FPX"pLAciF3IbEa~4q'miXsv*P{IyHcR^+Z )"eI.x߽RW~'M6c[1&:ob"P 6VpGC_6\)e2 $3CHk3MaZm@FHl 6<7-i},Ak ߳ ]7Y'Ӏ@/CxFx_W(b7Fv]"]J|Saurfi}EçpZ%q@C9D+ccl'69<8^_bM~d<<`N#< ٔټcy;7(6uGIЇ9 |,Mf +st([ɾLҬv'xb+Y@j&ѻ\oqo-L@_ׇStk:ڥMu8'D`h{$~~5%UWhMgIH8#扎>[СԬɯ1krq ! }8ʒ/#>>;Z\f) 'ϸ IY% WphY\6S ^> f e4FIPwT! WJJ~"oCf6Q/<gW}Ӭv]z[r t<3L1jY${fڿ\nnHu.18H'Ž%7Wў4.v"y )U3 \.#4YeӛqTy4FmV&ǒs]ۥ9M9HPqܴf~ NιWTu)K ʿ4Ų㾲Mx05LU5mS|VǷ c}<hX׀Ї&C>; trQhu S|;?0KzÊ3<"yZj쒰j||';.Ίw_?buA3ز!I7A3 - I0]\T66S)'x 4+ECfm)/AB-(312;B^̢~JVFV.'zJvfů5MIi0ZK#'@X@Q87Ōćxh"|Sq#u)lͧhEr_^m)С8>Nga)Z`uP;]ϩ9%xw{z9/x eg+;Wn{)Se?T7K oU> `mHϧ}$\!-`H_ N/^N+&߶|;П?޸yNge_Z* @C_k=9¸;3hP1svns+K=^ UUhE{L"7Mo2.VQ.Lm>(#NiLw+6sffs PN+߃GpIB$ִ,FZ%pi5It5_d ezN&1WNm Vy ׅ( *1tos _[١"Wewm5|{`S/PZѩ5y3,wV@C,XC#;tb뱜F8䥋ۋ GF'9_,576G9ʅJ.gA33'9=iG6iժ:{m#УpZOcLSv)ETbu}]#uL^|W][B矇bi1mNv]Wq%r:Es>3tg-pk޵<45$.~wk5?ԷL]PR~%$ yDǮ~ek K+2\8Kӷm"$f[hJ)]WSxR*,42YL:yIo&r2_UǠ`otN6". %(AX,Kz+˥b/%0zJr@yW7|rKחYO|&ȃp3(@^^Ӗ 8=F5.*[yAQо868F~ah֊5M͎يR4`)BKkML7~+u85U-D5M ~;Vt6Sƚ/|Df)Qga>d~q8vxli>an4j),jjR*NY\)ƪ7Dn*;zJxڢ bH`ЃM vWXF+/gi~im|m"t Im>ё`W> _3:]VS:0"q/Fk5ZE-u#Ehimtݼ}Hفdk ʲӜWOz<[e Pd܆#֮:v;'rPFwU]9'?5t\QGOrx\pk :hP[f]3梤򶚶_b^|ɵF995ͤjT if[W;29Y|E}3%N /#亷kOlы]EW] ݞ߽NmN"~>]?}ʞwם#=]IN[W*4b+WBd Sd rrXN"CrM޾1 s~^Nb*J%/dz5 Mf`#j(/~s$yJH@WQE3FswyU8$/?q]YF(tzdϗ#&3y ",{*-BER͈$H [GSZJ9^OQ[ TpVNI2ytkduhshV+e4 [&smt@[sM1+dQNb|rhJfp:E1”C.7WV8 -hUjgA`Eb*BuŎ%C 3ђJ[6ʶS ghcelǩݢ:U_9dIM4+^R[ ÄKYY6sbgsR^RbtKÍ&PhщCnĵþc|)d ZU@ݸp֏+a l:}5j@v*z6T:(s2~\LFQ<~\Р)uO#.Z#pGTg9 %9-P` 3F x;jbҚj@!H,W΄ͨQq#eã"y}M7 U@T_5 S7F):3b(Ir3Z y^~|ޚ朜@5(~'iA67*;K 47%做TsTiyf_JnfxxiG\/):k >-Ht]ǡ`QF,!oCKk,HrfcD(,o6M;[j)-%/yy)؎ M"Q|UaK C 4Z,E5訦'NC6GN4WnnHyE>ٮ!%h'n1V~: w>" NBq++R_F KޯsJN礞9q`ryQ#rG}݉m}>NS~5_&ios9Q,T`Qq8cltfLu = b ?<|,#`_"-Z5|Zԟ?[bǒ~Ȃ6)h% !QrK7ԤwJHNA|(5ŝb.]/H~JVYG1ͫK/LTi2VYŇ!H՚*!Q\LÚdfþi&AZ"X ÿJ*4EzNu.-`SŞGq=9f`Em͠J-yw$ODzzfV˓kgzCOYHZY\޾}@P36IA4 ]7x>=nd|"8ض;twrs냭9"upH280HM5OwuvuL?d?A$Ѫ?Ҹj17ߑE-fzVM[^@ `Et*ER`K&wgȼI==\!=e_+[kx:19ir*ɲ[0eR aTMʿsa//]Agyհ !Vp}ӻ"S_OI MK@'pxҷU*PWϭ뮓[";G3%oS9Er_ddħ(kfG|(%')ߦdž5Zg䑔h"Bv</`,217bzzJ6fEVl8H+Ϥmx,8w*%j$FokB"GNݺͭ1.jX$-#`pN'EEC0@Ey -8ļ +su(yyzY,"4ݹ\i^o-sx0X#J&rVKޓ1t$ )SWqwLγ@g /6KLAÁ@"JM/ 7BufgۻC͞bMF*g|>lI:16k=(sXэs$~W HՃLM s]ZTGu&e6Ūj~ͽ=e uf+EVW2іhu:+T#1WsNpد0;$|V&ky4 +V3=ӱޓ,{9 β_.rncZ/DJBHv.A@iIa,̑]qgЪM[ۦ|)?{ՋɂM@^rc o9M)40&j  [fa MB#R =?;b}ĒH(KwR|idI@,?-iǗWu74;ڧI%s%.-Nhoc (*:e^odm9F05<4|WSNͭW 7] aeJ"TR+ JCCJS/6?XqV5<qYkpGz>IC:Bw{}3  O eTY hl /f^}ugzC S+A.-NZL8x^߭G4"zwtݮ.k[8ृ}4#nim˝ZJii=݌m秌Bcchn?46- aR r&5:l O>- 3͏λWMX2i(Gjh"oKF.~hJZ+m YGJgD7r c3]}hq۶ȟx'r `9O|ҫF.]\tm\7|eGw*U?`~KKz\kDTG * m$m߃<AuPӯN(-KvmNOA+.H$Fc4TFiG-CB-Nmoؾ߳kSR'v[m[ُUpֲj96Lzo Nb3`sRmt'0-/j`jy!&ݙP.PCB1 Q(6Zf <@Ppv?>Ս0 1@Sw"¿o$D*UmhB5J1kU?9½|D!+Y93\=JTE\!iA_xԧ_TUj/MMwΠ<1/_|>^4^{ƃq3"!+*}!|_Ws8|1WݴY^ZInWl*LIT>OeL)3YjLVd' NО>~$b?Y?1HiS~g)K{ʏog?^9g&ZF7JD.NoXrݐ4nol~C]Sjw:|**% `LqZz>-j"JIH`dLRKb;HҝHįl+i T%vV2w6xl1S"پ]P/ T =ؾ]"ٱc9?<Ԯ>j}\_Hv=/ə ?2仞UhFB=fp3 k렰[ OkrCF}bJ4^%WeV%V%5daɴ?܊!TOm +[2elI-}\աد_5wQ%l*iͪZkIR8^Bnr[ae6،0L pЊY Sa&37zm6D&ֈhGkW(TzE&yfVbf-`'2ϡsʸ!SU=s`R퍰$7۳g]&c2$}Y Ba"ҧn3)R}AdT0cwo9lkv;;b ) ul.VU" zKhƢoәQ*SzfV98 ։5!.1M< $dLțŧY9%,dSZgJ9%b͆([@Q0 ҅!a=fs:ޔ*2'ZcP_5b_b^:1M34h6ArAjQu|^o44^Q?VTh+3vkBrFmzX;DZH+sY8y,3h&݂@R>.?UA5T#\D)ns{{j@o}}>so@0jT&oitٿ|zuN`G#_AP< V/(š{E-^|,UD%Y[]m]^O Q2SrXdKl 12*HԐHIVi C?9 I͠ m>RhKdVJ'ꌄ0X;|HzZwLФuMڎjPt|gD%* oefA6Rn2v"6`瑳BQ/-Qťk2im4so['"1?w^OEwyI/gdK2nCig޽ XK#n%w`kg7WD *bZu !U']G2.}mپdgw !,Z?\F,.9]KfL02Zu5)d-ƛrQZ~f6HRcNcD,8SsLtlB0*T0TSWOx4,zԕ:qaCS=?mw nMwX?^o3M9fd񋠀!S2ccķwAW{\7 눖No8>U# :4KzN('qOփ,\mAFۃUQ՞/޺E1=MS'O M10#M2+5c84q(;S^9JĮr@qOU*UDe,*/U@_ƌ{qYio[Ib^ݑȥЕ#. R):VWLH;djo} .R܇BOPTXR]!w*!Z?LYU/0Ӫ!"srV!"*YC ee=1d~[ZMniuwEKYK K@o _&QC?!+_'K'P{5G,.tAT"=r4) !lsQBj)gd A;:[=t1*N]qΊ> -Av`ׂ\!q5F+f`/ K}1huOAe 鹋,3XjBPHs EMsu̕`g&.q4'QW.=_%XmIŵLۃ2ꈸ*+%^4pO7FC]dU*SB 0/X"gdG. ߱K|Lɋ aI|Eh+!r=H%0Hd,]Pa!I+(_/9]K4ex]i[ЬWp.fFijj6D z?e Uol B>`߳ ZD@T I6cԞ7?{$lҙ#{#yCj=/{2lf\kk!HG@ nx7Mt1R !xjK:s2 vH'99|n2 Z)4XMKi'os̯dO Oԓy3f#,oHبqP ;pb,$J.G&Li:aZtͽ74>6cpmTDPmBzA/@J€P0A?xœ'spLS`VLIf,8\0ˇ9D66.?0>-^R :{=ti0YSRcaiKڽSKioq_lx*~[qYj ?_TS>!;u o;A{Zk҂pdAXx_ώ`7;]8֦L>GҘYLYqcػwFkwEW.\5wN@.aW9ʡP],.(:ugRwR'p+ni?TcfR]ϱC!zC̡\ɻ٩ϟ81P GBC2IBTT:ҏP L[砄`I bjys51sv5ˬ)FD;&9TI?^?;s-C Rs%G@%dA ݧcvi9#֪NUk{rslz]GHGJܚJ y$\ Q5OݩNNy-Ol>Y FmP8ֳ]aAKx"5]и_k:p8Fl૩ьA9ž{W9hɆ|zhZ<'_Z[-|deOu+ǧ㠳4.rpIbшkJLܮzrAshN*YޯzEjIzhfvm?t 6b=286@^h5ۣ~qaԻؿ4# 4ԣf(-HE|>}^bmn,i>.2>ɒRddO(a5$t4QT$1p>[g,C54f %l_t`{R@~V)Mr~=@b \--f k=o?/H,UZ\H\+YϳS. mI]$Ϋ8j49.0 4XYd`=A"à;bh5y{=XW4sLRC.h!d*~/oXԒ;\iGA)Z5!i-MKl㪀DҠENJeQݯAI~^J+߅1x-ۭNzgq{jUuunFbʪ8k͟F ۑ^i׀lՖU[h'.Vx*(ml;{i_ga!C:DKG(>jN<]"gxh*Kń8 K9zYnKw\ViY l3E0E*+Yn,r?: nK h 鱶Vp"zC͗i.=LH;IhӴj^tj^,&+1}RΡL]F>]çbӀoJ2ޒLarGe&o`3Ac F 2?bpnM4_~Hu闐rAvP*I8p+2MGW0?nkgC}%/kk"_ o-f t, ,ĎNl2`jx{ahZ`Y5:rV昀̷dƂ\'UW9%2}@j0+BX,M֣p?&."FU[ao"/HOo:bMZ Õ5C;ӹ{jMp6 OXK= -pA Fm,^Nuu^6΄]Bۚ£p,LUwNZŎN]5*+nEhY F̓(Pj{[Ykey?Ev~>i^[7mY@b.'X;x䆴St,NDԺ1I9r$cLm=ctTfLZVKim52 ) it:l"t3rNg`ehgB5m{ٖ7t )Z_rnf|w D( uCK^AvˈE~®gWQ Ã"ki LJ\\Z wݑadxm18 6eiO!gI =nf|D6ߔ){VjekmpعI"% xkrY@ϫ(][SgV4A0U8 - jp(6^,[RZDZ`.HB+QzdN}KH % ശ$د^YAw>>1Y#;^ֽvC,M|y,K#^Kپۣ懔rlT9z少4E,AF$8CJ>FQEhSV\x(ՌױC)VFT''/242>MlMH f=̱%iMKdT)jZYB>]PGw&XmefVis)D+D8X03u"N]8t׊K{^ Z)u@FRMg1\zR[Pr6JqM":&  πjoZW@-Fq&JE@FuBϵ96#@/ >mQא/ Vu LGhU T",ޢZ GN]umT!Igl@nGuIap߉` =2j}@_Ng:\b)X+PBxhiIt P7% ;:~]M~t*qO3`O@T!g08j u4Lѐg p7苧,)眫1&ٮBKȋcE4x>.jeŲrχA ׀Z"E7)ꨘdER mzjȥeRMz!Z+CaXL~l`wmH"F˛8ix/'s`EsH^R.SfU,Mp5yփfe|smloN+&=Zvj"Qђ>Vi{VoK ATtf7_YE>z NI]w"~TYM.97).|,/EV`{ x̏eYiCnc-7jk5LYocՎU|6JjsjG[lAh2;@CٳI߽b CnMԲW>珆'<u P6yY/97W}yPԵni ?<+} 6ՁI.1.U`> {@'NK?~*>dqf/[3j"{Ǫ=[8<yc~u]rQ ( LuçuyLMgEH0@* [*{\bUeuTr^вv݀>Mt41{J!c?/}JXO?BR_$Uҟ"cah5%X0,QcSC)TuVk95%Bf4犘WMϥbS\]P7q_H~iX:穩H6{UwRynfIL>ܔ8j,J6;chy` 0!DHNn)C"uu>=9xk_.%]•ލ5qԪ5ÖDz1O_ 1XD_!FRKU-b9>h;v{vP k{7K~u&GK80$a`ZyP+ԉ*""1rd32}VƏ1p!*.X`G_+5I$qI5k5tb+9ΚK%dl̙/O fk tsK#O@㊌15׊"F}cQW5~MIPhIEM¤* 7~۾G6Öf[2#+~ʳ(~.Tm 4nԿO~c qTHCz/qa'TU9CXeٌُl=[JȨA"V{8o1a҂ӽCaى;XCt󨒍hy..$aj8S+!v0i4bˇGǖ}yz0wʎI\ CH仨N"X;Nu'X)rF#)XYQsɇ 8 ~\2C-uF;INa6O5@&FJ dNgu/.񠁱7#:_UmJrØcy9 W\"yHuY&7PBlr2%O9B{&8|\Cf42feCzl.fdSu%8X<F̀+i 8r'Je|.mMr KL{L7RdM(g|g0ROvx &i(B1(h3W"Uh9,CX"ː[6+;vbeQf?Y\b!V5h5Au^GQL̟[j$ѻVH\N=$kXid *O h!RTalVXVz&ZSboV# P|bMtƋ<<kDr΂8dl܂8e( #<MgCnx)/nj9EA*'wD$ S @tz$>qꘞMਉFX.7mI v|4ƾPsgnuV;SvMv12n]yKg[c&_תo^9QJCxp` H%hBڮCv] djS5k۠F̆/NiZ ;dl PVd>V/ʃHӚ S⸭8\(eWEDCDd )P&<뵲$|Ps0a_]GSs/"H2Tƣ.y\_Lz ub+mW$uZG]ǞlHI-f<8^tyf=>o8pٰD]ť5ROB¹wjC`LyV^ A 37 ^ qNL)lk b;&ҋKA̝zQΕ//|<>qz[m/%% `w$,1%o /`7qm܄v*7ܢ+#Y ;ĵιr ŴӔ.Uk  Rm<79OtqHҶaai\84`ӥb3'krSM|c)]}x1 m|4!p30Hчo(ȸE/L.0@嫪6ũmB mv{;_ ^'.2IaSlvrvfĪr4%.:B15;2T`b=;,B54SҞ =!$1IH; pK' ~. zLmMwR{Pp0A(`H -NNEh BP"Ța$w呎(){Kd%Ke'lP"ʎHV5' "9VS-slg% sQPu{. ui{6e ,PGbXq`C&r+)AK ERci$]8DvhYCkmw/  4sFz)j ˦+OY Ba+L>r "f[!¥K`$UYQWe;G iJ.,9یF^[oj~FAuEU9 |CFCkRh  j]6-=UF:0#TQMߐǤ >Cqu7,\RH9g" f:rY۫u춨ʀ ba5sJ|M:*5u@ ԌW3 V* 17/BKXW!R(>eG9?|Q.=5jlw,qUQ 9V@/5CEf<6FJE#'Y5'?ӡ.QQP!,?z+B[b5VDz~?H87 Z%[J!6V^mƽS+0ciLmhvFϢ>ѵI/*P%\r<:`ȋ"O'PV^SQ8*Q'בDYkj ,mb{ad|j]Uq+Gs<8;,lqCc;E:cgl ~,l,'2pkc~{`I~Pb!iFj9ld̵[t4n;)\2+}Dۊ#':$,.+NSSسg )r8 CxTrG+̌Y+lAXKt+q }/ّEU޸QC}+N硖PO-u ^kŠ @ dt  ZǹqG9+˭aⓒYgr!y.غKʆSPy^ )U8wQj:9WS-ZRi2|=Ӌ W?]u^VK V[iecIcP>aԂJj|+xhUL;E}%lQ[/dEm#ӒFm`)B(8^.d̻x5{þkw$29EZ3a0 [l6m!}81dyޏdn){uDv Pc<1Vj^ ʪ. j`&i88UFc7FXĸ&g.@[Y:vJ}tk87+dטsEX\(>>{Ƽ;@RnwФB%vj6! =msRs,qMr i}W ;`_1 v(pR@zyN")P G8*` ~@PAP<] |\UBaQyO8F幎Ñ&`~pݎ)̄T0j Sڠ$k}>%vO;^! CFIx:z5 #F9Zc^$xJ:_8漞`sG(3EnE@za~v *}) aj!Au=.ꑍ'xƽNzs{GNՍǴ}jg{{DŽ1s=gcWF?=CVv+oT+OX!Rk q@yXiB#abHl\HzסC,%sCa 2 ]@1ıךVyRj0c/* #A*;fjG}d5&j84|:$lAǃ",$ko%Hޗ ZDX)0BGF]&et+DH'8N!AXvcssN"iS:״]C OFB !n楆_}1}%pE[O#@m л\ڒ fZ-qX+>{a<}\Ul%4O,*' ~rԬ6\Fd.3^f^ n--IJqc먨y0^dODŽptcٌn^UHW'bOaGwBb;-x -@] .dC0PCVBҀ5y!" w$"'-Ȓ|A0rP,_%Fye0҇i$ Iח%#r{LMB1~YT(֮"צuZu,PfPL"Sy\tzBy*^1B`mkM syN_a3 eU<=B82$p uY4qyl7~O~D\T9.?o;idhv'Xmds:d5Zĭy z&}M[}УdYssSHg5:+Ĝ{u";|1q  %bEE ۦ,xvܘVD#$B;f8UvP='C[G>3"m4V*Z߃R#@?_<=aKbz ,m;-C쪙:Siu_WpȀFCjgߖXc7WB#V[c.̟hrm ݠj5|z#Mͭ-G3 ?qHaZzB,6BX"ɋ%݆PNo0"kv8u cPKNp_v֝{{*‡_y$X~Ln,†"q4XOS<~@ "b]жDZ>Id F'*/(>  fJѩ-XdيJQN2NVJvlKL>X 3%Tf$K`qLbVFw;']d9MN8[˺ƾ J)U&׍[w=xÏK#.Tae5jZ:L̚ZkסS0y0h(jӶ7bqėǧ$+d:/+tӌObq> K!4MZM]ilIɺ{DS.bCu1xZ<,paB Si8/^BC!7̪N("A b)4cHg Ai1DH-ȻHi l{2O[Mh-2; q&b#:8mM_p-zHW'v(;ӂr||8X+%ci(}STB7)& `tI\yZqw'{LzZ~L:HV7\x) jj7#aG̈rY'ʙ}c^S5ϒJzZof27ST8^Kq!6Y݈H70vnQ{>Tp;B quP?';힃>ߧ@w%:bq!6  l'Be\He;aq!6V  l'Fe\He;u 4"L@gNntg\QD]so՞L!=٦'?Y,ɩTLQ8(ҙAq!SM(B %nwQo_ʌ^ SplD\s !IDѾKA2C~!`@:YßjK  NO8y hJvFwErS^boh4wܿ7]uu%Ek۾V*R+A.9Ջy3P  ^%C#4C+Ay4ظj5͎?!´/3ـB<ãU^FBP1F@`$(9ĢdHZHF^f3^pF`R9qR],CsK#(UYFW2v -EޘM'E峡V* o$TTZ/dqyIEƪ[)[9~\? =Pv%H12CS<f22&p6:0#H<<(UUUn<W7WwWhW7WW}zWOWpWW7qW7W7wP|6rPSr< 2 (6@K.?.,b@0-KFKKbK-K!.@K@.VK2n+E2;x2R1daQ%;x36j-JFR"WJ<h72H5, (p()_,$2y##AAE 7wWwWwWwWWW77777b7PPPPmWGK666666I6.,,,,K+*-K!.!.!.!.!.H).+E+E+E+E@K6667.7.7.7.W?.?.wW,wW,wW,wW,wW,7@07@07@07@0W-+SK\WF}zWKOWKOW<OWKOWyKOW-KW-KW-K-KW-K7!.7!.7!.fx.WVKWV<WV772727272wnwnwnP+EP+EP+EP+EP+EP+E6262627!WW-.WTWK=WWKP+E I6!WW-. I67).72wn .(*n1(!7i((((E1KFwWwW"W77W}+W zWWdWWW"W wW:WWzWpWW7WqW7wd<2|W<WWRW{W7W(6,8KK(,**K*KKK4K!.,K@K..7K2KKVKK*K*,,K*2F(K-K*K&K P7!.WK" WKWEKW-K7 .7!.W-K72wW,@ P_122PAAPAA<<_BC(**#z(+4242.(25,+4242.DQ#M<$!W(2?T7HHd Z W  W  Y c (W<RUUU>'>'>'>'>'>'>'>'>'>'>'>'dd6>'>'>'>'>'>'>'>'>'>'p#p2P<Ti6n(d2(\WFK-A5@0*E*EK-KaK<D2aDrDfE.1d**##2122s<sP<PrPr<2s<sPp#p2P<22;x;xn<JF<22DC25>:<H<(25,+4242.(25,+4242.wWW7dRW7W(6,*K!.K*K*"+7!2tZ$q*y2V#6%%*~7~37Y#_cuGc      " & 0 : D p y !!!"!.!T!^!!""""H"`"e$i$$&''0 0 927Y#brFb      & 0 9 D p t !!!"!.!S![!!""""H"`"d$`$$&''v00{uh[S;%"bAigY?93)!e/sleb^ (UA10F6Z V   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`aqdeivokuj20r34ghlzcn1.m{b7wU[ap]^_xb`\, UXEY KQKSZX4(Y`f UX%acc#b!!YC#DC`B-, `f-, d P&Z( CEcER[X!#!X PPX!@Y 8PX!8YY  CEcEad(PX! CEcE 0PX!0Y PX f a PX` PX! ` 6PX!6``YYY+YY#PXeYY-, E %ad CPX#B#B!!Y`-,#!#! dbB #B CEc C`Ec*! C +0%&QX`PaRYX#Y! @SX+!@Y#PXeY-,C+C`B-,#B# #Babfc`*-, E Ccb PX@`Yfc`D`-, CEB*!C`B- ,C#DC`B- , E +#C%` E#a d PX!0PX @YY#PXeY%#aDD`- , E +#C%` E#a d$PX@Y#PXeY%#aDD`- , #B EX!#!Y*!- ,EdaD-,` CJPX #BY CJRX #BY-, bfc c#aC` ` #B#-,KTXdDY$ e#x-,KQXKSXdDY!Y$e#x-,CUXCaB+YC%B %B %B# %PXC`%B #a*!#a #a*!C`%B%a*!Y CG CG`b PX@`Yfc Ccb PX@`Yfc`#DC>C`B-,ETX#B E #B #`B `aBB`+u+"Y-,+-,+-,+-,+-,+-,+-,+-,+-,+-, +-), .]-*, .q-+, .r-, +ETX#B E #B #`B `aBB`+u+"Y-,+- ,+-!,+-",+-#,+-$,+-%,+-&,+-',+-(, +-,, <`--, `` C#`C%a`,*!-.,-+-*-/, G Ccb PX@`Yfc`#a8# UX G Ccb PX@`Yfc`#a8!Y-0,ETX/*EX0Y"Y-1, +ETX/*EX0Y"Y-2, 5`-3,Ecb PX@`Yfc+ Ccb PX@`Yfc+D>#82*-4, < G Ccb PX@`Yfc`Ca8-5,.<-6, < G Ccb PX@`Yfc`CaCc8-7,% . G#B%IG#G#a Xb!Y#B6*-8,%%G#G#a C+e.# <8-9,%% .G#G#a #B C+ `PX @QX  &YBB# C #G#G#a#F`Cb PX@`Yfc` + a C`d#CadPXCaC`Y%b PX@`Yfca# &#Fa8#CF%CG#G#a` Cb PX@`Yfc`# +#C`+%a%b PX@`Yfc&a %`d#%`dPX!#!Y# &#Fa8Y-:, & .G#G#a#<8-;, #B F#G+#a8-<,%%G#G#aTX. <#!%%G#G#a %%G#G#a%%I%acc# Xb!Ycb PX@`Yfc`#.# <8#!Y-=, C .G#G#a ` `fb PX@`Yfc# <8->,# .F%FRX +-g,:+?+-h,:+@+-i,;+..+-j,;+>+-k,;+?+-l,;+@+-m,<+..+-n,<+>+-o,<+?+-p,<+@+-q,=+..+-r,=+>+-s,=+?+-t,=+@+-u, EX!#!YB+e$PxEX0Y-KRXYcpB-*B *B**B@ * B@@ *D$QX@XdD&QX@cTXDYYYY" *DdDPPGG>>PPGG>>2222\"jDl6l6LZ ( Z  H b 0 v  R  J x &Jbpf&\(t \&R^t$NL8tLl4p &@ZV $ 0 < H T ` l x !!!*!!!!!!""T"`"l"x"""#$6$B$N$Z$f$r$~$$%%%&%2%>%J%V%%%%&&& &r&~&&&&' ''''''''''(( ((((((()$)))))))))****++^+j+v+++++,<,H,b,n,z,,,,,,,,,--2-Z-------...N......./v//000"0.0:0F0R0^0j1@222*2<2H2T223 3,383D3P3\3h3t33344\4h4t444444444565B5N5Z5f5r5~55555555556666&686D6V6b6n6z667 7J7z788F888889969X9d9p99: :(:0:<:D::;*;6;B;N;;;;;r>z>>??8?x??@:@@@AZAABBBTBBBCCLCzCCCCCCDDDDDEEREEF FPFFGGGbGnGGGHHHjHHIIIIZIIJ>JJJK KTKKKLLjLLLLM(M^MfMnMvM~MMMMMMMMMMN NN"N.N:N:N:N:N:N:NTNnNNNNO>OzOOP@PdPtQ:QbQQRRJRRS SSSTTT"T2TTTTTUUvUVbVVW&WjWWWXXX6XPXjXXXXXYY*YDY`YpYZZ6ZTZrZ[l\\]4]^D^_`R`aLafaaab$bpbbcNc~cd:dddddeHepeg6g6gPg`g~ggggh2hrhzhhhhhiii&iNiriijjLjjjjjkkkk,k:k|kkl ll2lhllm"m8mNmjmmmmmmmn*nTnnnnnnnooJoRoboroooooooopppp*p8pFpTpbppp~pppppppppppqqqq"q.q:qFqjqqqqqr,rjrrrss.d>  0+!%!! '7d`222j:F%!d,@)Y"KY#L+7353t _ YknnP>DK1PX@Y"L@UYMY@+333VPZPFKPX@(  s   a"KY%LK1PX@&  sb   a"L@/r  sb U Y MYY@+7#537#53733733#3##7#37#{HHyHFFFFF@B#*1-@*/.('  !Jrs+L+?5.54>753.'#5.54&'>@S J:go!9O-B`lQ ??htycB[yRC?;GLECBF 8=VZ-E/RQ`N,?P][^QQ\31 =61 9( '3KPX@+   c  d[*K [ #L@3   c  d"K[*K#K [ +LY@')(/-(3)3#!''   +"&54632#32654&#""&54632'2654&#"H]]HIYYKKA)11)(55H]]HIYYI)11)(55H^ZW[[WZ^:;8989;:l^ZW[[WZ^B:;8989;:-,6~KPX@43# J@43# JYKPX@[*K[+L@[*K#K[+LY@1/+)*#+!'#"&5467.54632>77>54&#"3267''1%dDsYE$hWUdeN"K 0gJ&7A<03:e`O/M3J4"l`N\ G)Hd]KN] "k, Hs'm&; =5.481\0+4>7.>&AY2,)J8"qW+4X?#Ot`%9 Sf{GG9%dyP1n0+'>54&'7n&AY2,(J9"oY+4X?#Ot`%9 Sf{GG9%dy%xQJ@ JK1PX@ Y"L@UYMY@ +7'7'7'37'`cc`:`cc`xq<3553=DmB3 "&n<95" 2\3@UYM+%!5!\*NCn@Y#L+353CknnS>@r'L+3S#On<b -@*[*K[+L     +"&54632'2654&#"OeXXedYY L #@ J"KZ#L+73'733!R'hcPhCxP24'@$J[*KY#L%"+4&#"'>32!!57>LIK_Oo7X; 7K+ J^6NVH`{ 7M,0K?:P^5^2J#D@AJcY"K[+L##+"&'732654.#"'%!5!6232AfReHT_1A#- tj{'Eb SkF32#"&'732654&#"'!!V*wxnQ bGUX\N-O!R%Xsfd~]W<32%"32654&EtTi9{dQ*;''E4i>0YE)N_cJN__dz6\zCǦYQ( @; Jc[*K[+L%$+)$/%/##*"+%#"&5467.54632%2654&#""32654&Zuy@60:tz833APXUTQ[UWQfcTPb]_mg]@KM7[fcT>LL=;3??58>F>:5#".2654&#"0YE)N_cJN__dz6\zCǦYQ( KPX@]Y%L@aUYMY+!!!!U  LLU<5@0+55%U VpV!<@9Jp[*KY#L!! %*+7546?>54&#"'>3253'7!$@>CK Qqkik?!/!^kH#-"/*.;C/KegPDN *nn32#"&'#"&54>325332654.#"326754&#"326oD> ,@) Jb"K#L + #'!#3 ]IG\F}XfKWK C@@Jc["K[#L   ! +3!2##32654&#32654&Wdz)6<5kPC@IKGIWc.PP=c[[5;<17:=871@.J[*K[+L+%267#"&54>32.#"u]cQw.SvGxQa]9X:yDUG krSZ/rk CY(Ge=zW'@$["K[#L !+3!2#'32654&+Wyz{yOwW1 /@,aY"KY#L +3!!!!!W|wPNPW1 )@&aY"K#L +3!!!!W|wPN7#l@ JKPX@a[*K[#L@#a[*K#K[+LY@##$%(#+#5#".54>32.#"326=#5M"kXWW @J"K#L+!##33sSjzS8E7-@*[*K[+L +".54>32'2654&#"}JyU..UyJJyT..TyJr}}rr~~ 0YRP[11[PRY0Nz{{zWI +@(c["K#L $!+3!2+32654&+W ovuyKECMnccrQE@E>7)H@EJGp[*K\+L%#)) +".54>32''267'3>54&#"}JyU..UyJJyT.F=C=FA%){__-.}rr~~ 0YRP[11[Pd+W-` N"yJ{{zWd3@0Ja["K#LA!+3!2#*+32654&+W nwFFfLDDLncMgRE?E>7J+'@$J[*K[+L-%-#+?32654&/.54>32.#"#"&7QeLO^9:w`^%B]7o}P QPNX6#@ aY'L+3#3P昘HHS>@r'L+#3ON<>"@aY'L+3#53#@Y'L+!5!3N(&K1PX@ s"L@ riY+#3`lN6)KPX@ J@ JYKPX@c[-K[+L@#c[-K#K[+LY@'%!%#D#+!5#"&5467654&#"'>32'&"3265uM3N[cR%@ <.35 LbOQiPC"341*32#"&'732654&#"KP\(,M:!|e3K[32.#"326KeZc|#EKJE?9 @Y~z?]>Z<";_ROb;.yKPX@ J@ JYKPX@"K[-K[+L@ "K[-K#K[+LY@$#+!5#"&546323'54&#"326O5b}e+KPPU32'"!.P>8> KjSfy#PT4" CLs;]?!xmF97H]/@,["KY%K#L!#+3#53546;#"3#p\\]U;86/J*]EH-5"Jn04)@ JKPX@ [%K[#K['LK1PX@$%K[-K[#K['L@!_%K[-K[#LYY@ $&$%%#+3#"&'7326=#"&5463254&#"326KcLwNN(BSO3b}|h1OW;EOJHHL)r_JM 3)@K>""xut&#*NE^QL[WK,@)I"K[-K#L##+33>32#4&#"KPU,SbP7>9P#%WT/1>F;FLKPX@Y"K%K#L@a%K#LY@+533F[VP8``$>XKPX@Y"K%K\'L@a%K\'LY@ +53+53265N[LU/(1'8``\ WPJ,0K 1@.Ja"K%K#L +33373#'#KPE`aFwK@"K#L+33KPXK"[@ JIKPX@[%K#L@%K[-K#LY@""##$# +33>32>32#4&#"#4&#"KMR*#%0'+,WT/1>F;/1>F;KLJKPX@[%K#L@%K[-K#LY@ ##+33>32#4&#"KMW.SbP7>9PB%'WT/1>F;. -@*[-K[+L   +".54632'2654&#"1U<#ed||dHHHHGNP !?^;vvtG_ST\\TS_K>!f@ JKPX@[%K[+K'L@ %K[-K[+K'LY@&#+3>32#"&'32654&#"KPX1,M:!|e/M[yKPX@ J@ JYKPX@[-K[+K'L@ %K[-K[+K'LY@$#+5#"&546325354&#"326M3b~e/NNQV;EPLGHK!!ut% ;b*NJ^QLe\KM'@$J[%K#L!#+33>;#"KLP#+$2)E)M  2''@$J[-K[+L+%+#+?32654&/.54632.#"#"&2K @668+3>BLeSW^ I 77080*=NE`^Sk -+%! =>>NR6#0&" E9=NFP[)@&rY%K\#L# +!#"&=#53533#;PJ^CSSQ)*GPUJJ3)ELJKPX@%K[+L@%K#K[+LY@ ##+!5#"&5332653Y.S^P5<9PPF')WT;1>F;$!@J%K#L+333˽URx$ !@ J%K#L+333# #Syxdy{NUTy~$m &@# J%K#L +!'#7'373w^]y{\误>"@ J%K\'L!"++5326?33 H6."2XSID5J(4y2 ,@)JY%KY#L +35!5!!22;QAJNJ>w$3@0Jcc['L$#!,!%!+75326=46;#";#"&=4&#,?QY44..,,,,..44YQ?,J2>cNH':2x>@r'L+3xKn2>$-@*Jcc['L%!,!% +%#"+5326=467.=4&+532;,?QY44..,,,,..44YQ?,2>cNH':2R8,@)cW[O#"#"+#".#"#>3232678DF72. LDF60, GW 2FX 2d4;K1PX@Y%KY'L@]Y%LY+3#3#dkkI _nMa)!*@'  J"K#L+!5.546753.'>7'WorTBKcH 9236 G\Q>95B\ }nk ][QG(86#?S[UE] X ZQ:(9@6J Ia[*KY#L%%+#!!5>54&'#53.54632.#"3'c!1<qX }dbk R >>@I"  /DPP N1  B#L1_leQ 2CF7-N(%5dt#/E@B #J HGcW[O.,(&!-+7'7.5467'7>327'#"&/32654&#"^9uo8q: 9u8s p8p:!!: C::==::C59t:"#;p8q  t8t:""9p8o@; Ja  a"K  # L! +!5#535'#53333#3#reav|BFB`JBHB|x>*@'aY'L+33xKKK@pp633DL@ >1! JK,PX@[*K['L@_[*LY@ %#%"+#"&'732654&/.5467.54632.#"'>54&/p]Zl Q D29C>2SCOC0")lZQnP ;38>6(aJJ@0#'.?33W,A1+(I\RP112(.' GH:P@1D[TN023$'( JF9M=p <,+3 ?/(1 -8=DKPX@Y"L@UYMY@+53353-X`X8^^^^F'C@ A@43JK1PX@%c c _[-L@,cc c W [OY@)(><861/(C)C''  +".54>32'2>54.#"7"&54>32.#"3267K]66]KJ^66^J=jM,,Mj=>jL,+MjFOh2B%?V H)(-==-(*H Y36]JJ^66^JJ]68.Nl=>lO..Ol>=lN.cf\0J2B9+D:8B'7B"/)K&PX@J@JYKPX@c_[*LK&PX@"ccW[O@)pccW[OYY@'%!%#D#+5#"&5463254&#"'>32'.#"32651#132'2654&#"'532#'#7#32654&%0U?%$?U11U?$$?U1OigOOiip..9I0((($>V11V>$$>V11V>$/jPPjjPPjH'%"UMM5 7F1@UYM+#531FD2ox *@'_[*L     +"&54632'2654&#"B``BD``D%77%%55oYIHYYHIYF3))22))3HBc 8@5aaUYM  +%5#53533#!!!HFF323!57>#!#+? NA=I,/^ߚ"# 3>=5+8?>?l$,_H@E  JacW[O +2654&#"'7#5!2#"&'7(,-'  w;ETE3!###2O66O2VPVZ 8K*+K7 P _ 3+$2 @ JK PX@hc\'LK(PX@pc\'L@!pcW\PYY@ +"&'732654&5731< <#()B&.19"( -2-$(&22b MJKPX@rY%L@rUZNY@ +535'733OljIc>=4Q>#V pKPX@[*K[%LKPX@_[*L@cW[OYY@     +"&54632'2654&#"FTTFETRG(**)&,-SOMQQMNT>40/22/04#  I@ JK1PX@%K#L@Y%LY@  +?'337'3%^oZ A&'3+t3+Ak&'3+t3+E&'3+t3+1!eJK&PX@pY%K\'L@p`Y%LY@!!+#53267#"&546?>=9k`'7!$@>CK Qqkik?!/!nnH#-",*.8C/KedPDK *l&$l&$l&$i&$Z&$V&$ 3+ B@?JaaY"KY #L +3!!!!!!'!3  C >o {PNP77*4@*)JK PX@-hf[*K[#K\'LK PX@.pf[*K[#K\'LKPX@/pn[*K[#K\'L@,pn`[*K[#LYYY@.,'% 44 +%267#"&'732654&57.54>32.#"u]cQe".1991< <#($.SvGxQa]9X:yDUG bp ($(&2"( -,SZ/rk CY(Ge=zW1l&(W1l&(W1l&(uW1Z&(l&,Wl&,<+l&,ó Z&, 7@4a["K[#L ! +3#53!2#'32654&+3#WFFyz{y5H+OwHWi&17l&27l&2'7l&27i&27Z&2b[)!  0+?'77'b2122127)6@3'&J[*K[+L)) +".54>32.#"2>54&'}JyU..UyJJyT..TyQK.r9Z> D 0YRP[11[PRY0^9`#s(Gf=3Y"fP{l&8P{l&8 P{l&8P{Z&8l&<W? 4@1cc"K#L   $!+3332+#32654&WVnwvxLCAxnccrE@E>K&=@:!Jc[*K[#L &&+!#532654&+532654&#"#46327::DPTE671?E9BGQwd_l..>GK?=E7H@168K? dl_S1O NLe`6&DC_6&Du6&D[=6&DaM6&DjF6&D_6.5B(K PX@  .JKPX@ .JKPX@  .J@  . JYYYK PX@)  U a [-K [+LKPX@$  a [-K [+LKPX@)  U a [-K [+L@*  a  a [-K [+LYYY@0/@>9632/505"$%#D$" +%#"&'#"&5467>354&#"'>32>32!3267"!."3265jS>fh>K[bS%@ <.37 KcN@Q_._pP>8> 8L BE!332+9TCM;.18HCLA&402$?O2*'zm!NT4"G<9J'"#(69..2@)(JK PX@%hc[-K\'LKPX@&pc[-K\'L@#pc`[-LYY@.-&$  22+"&'732654&57.54>32.#"32671< <#(!Zo#EKJE?9 K NE .19"( -(|t?]>Z<";_ROb;# 7T &$(&2,&HCZ,&Hu,&H[@,&HjQ&CK&u&&[&j*$0[@!J$  HK,PX@[%K[+L@c[+LY@&%,*%0&0+'7.'77#".54>32.'2654&#"\$9eNCM9V81V>$";S14I;(HMPIBTU1, 9 11&Y76X=!$0N `KNX[MK^K&Qai.&RCe.&Ru.&R[L.&Ra\.&Rj\H;B< ;@8aaUYM  +53!!53jjjjnLjj.#6@3! J[-K[+L## +".54>32'.#"2654&'1V>$#>V2d +GTHN , !?^;;\?!vt 7 ]`S!7 E&XCjE&XuE&X[NE&Xj^>&\uK>!=@:J"K[-K[+K'L&#+3>32#"&'32654&#"KPX1,M:!|e/M[&\jER&$  3+6&DpKj&$6&D]E7D@AJIb"K#K['L +".5467'!#332673n,"*IG\l !5! _} $$5X1=K67.;S@P",Jc[-K[+K['L973/)' .. +"&54675#"&5467654&#"'>323267&"3265-C)"M3N[cR%@ <.35 LbOQi-  ;C"341*::>*LL^QLe\W1H&(,&HpSW1j&(,&H]PW1\&(,&H^W7:F@CJ IaY"KY#K['L%& +3!!!!!3267#"&5467W|w!4#  .K+!PNP2=,1$5,6,3G@D  Ja[-K[+K['L.-10-3.3+"&'" +#"&5467#"&54>32!32673267"!.-C !fy#9> F 8K  =/19s;]?!xm!PT3" 4 !4%F97HW1l&(,&H\@7l&*04&J[P7j&*04&J]_7\&*/04&J^7&*S 3+04 '4@'JHKPX@) a[%K[#K['LK1PX@- a%K[-K[#K['L@* a_%K[-K[#LYY@31-+%#  +#54673#"&'7326=#"&5463254&#"326I_+1 KcLwNN(BSO3b}|h1OW;EOJHHLmUL27+ )r_JM 3)@K>""xut&#*NE^QL[WW{l&+H&K[3+;@8  a  a"K #L +3#5353!533##!!5!WFFT|TFFT|DmmmmD /}z;@8 Ja"K[-K #L## +3#53533#>32#4&#"K<9P0>::>%&WT/1>F;i&,&a H&,&p j&,&]7,@) J"K['L+"&546733267-K*V!.  -2$6X0=7_@ JKPX@Y"K%K\'L@a%K\'LY@ +533#3267#"&546F[VP-  -C)8``$/=.1#5S\&,6K@%K#L+33KP$W &,-F>&LMl&-)>&Y[Wd&.S 3+K&NSW1l&/:KL&Ou%3+W1&/S 3+<&OSW1&/K0&OW1 0@-a"KZ#L  +%!37531&V]PPbbK[*@'a"K#L+33753KPe[X``1 ,@) J"KZ#L +%!57371&FFUPP!&O&8YOY &@# J"K#L +355737ZRROSS;R;o:R:Wl&1K&QuW&1S 3+K&QSWl&1K&Q\[K&Q3  3+W>3@0 J I"K#K['L!#++5326=#3TP<7-)pSjyG^SM10=K>X JKPX@[%K#K['L@%K[-K#K['LY@ !%##+4&#"#3>32+53267>9PPMW.SbLU5.1'K1>F;B%'WTWPH-7H&2.&Rp\7j&2.&R]Z7l&2.&Rbof+@ $ #JKPX@5a [*K[*K[#K[#L@1a [*KY"KY#K[+LY@(&5(" +)#".54>32!!!!!3267.#"I6%JyV//VyJ%<Yc >[:96:[> .XUSY/PN=fI((Hf.N")5J@G"Ja [-K [+L+*$#1/*5+5'&#)$)"$&$" +%#"&'#".54632>32!3267"!.2654&#"KjS?[\=1U<#e>]^:_pP>8> 8K  >VHHHHGNPCL3..3!?^;v2002xm!PT4"G97I_ST\\TS_Wdl&5KW&UuuWd&5S 3+<M&USWdl&5x7k&U\ 7Jl&62&Vu7Jl&6v2&V[97*J@@=21JK PX@,hf[*K[+K\'LK PX@-pf[*K[+K\'LKPX@.pn[*K[+K\'L@+pn`[*K[+LYYY@ $%$%-#+?32654&/.54>32.#"#"&'732654&57.7QeLO^9:w`^%B]7o}P QPNX@;0/JK PX@,hf[-K[+K\'LKPX@-pf[-K[+K\'LK(PX@.pn[-K[+K\'L@+pn`[-K[+LYYY@ $%$%+#+?32654&/.54632.#"#"&'732654&57.2K @668+3>BLeSW^ I 77080*=NELK.1991< <#(H\ -+%! =>>NR6#0&" E96K $(&2"( -$F7Jl&62&V\8c&7S 3+P[&WSncl&7WjK1PX@)pY"KY%K\#L@'paY%K\#LY@ #! +3##"&=#53533#;P59gJ^CSSQ)*GPUJJ3)c)@&aY"K#L+#'#535#5!3UO!!HPPP[9@6r  aY%K \#L +!#"&=#535#53533#3#;PJ^CSSSSQ*.CPU<@rIIr@;5'P{i&8E&Xa^P{H&8E&Xp^P{j&8E&X]\P{&8E&X_P{l&8E&XbqP4{&]$JK1PX@"K[+K['L@_"K[+LY@! &&+".5467.53326533267,"&VjXXeV]]!2!  $!4csSSscp3=E7%A@>#J%K[+K\'L  %%+"&54675#"&53326533267-C)"Y.S^P5<9PP-  .1#7A')WT;1>F;$0=l&:D&Z[l&<z>&\[4Z&<6Sl&=2&]u6S\&=2&]^6Sl&=2&]\?7%6@3 Ja[*K[+L! %%&'"+467!.#"'>32#".267!7pjUjO4Mb6-RuG &/McK>&OMW&1-W>&1MK>&QM%P{l&8E&X\N H&6&pW&'=W&'].&G]< l&6&uP7l&.&u7J&6S 3+2&VSc&7S 3+P[&WSnH&<>&\pH> @%K\'L !#++53265LU/(1' WPJ,0.@@=Ja[-K[+L +2#"&5467!.#"'>267!`x}`bq^M:6C IuF9H Cxwwj SR5" EKUF96I(`8JK1PX@ s"L@ riY@ +#'#7lLPPLlQQ*^0JK1PX@ s"L@ riY+#'373`jLNNLPP1= )@&rW[O   +"&'332673CAB#"C?G5&&5G(85KPX@ Y"L@UYMY@ +53([8``!  tK PX@cW[OKPX@_[*L@cW[OYY@     +"&54632'2654&#"(99((99( 4++44++4277EJK PX@f\'L@r\'LY@  +"&546733267-C2G/ .1$64=("ALKPX@`["L@Wc\PY@####+54632326=3#".#"(()! =(%" " .;.7 (~4K1PX@ Y"L@UYMY+3#73#\lJ`Lzu(n@UYM+53([``(.Eg 0+!!5%5!!' b5MQ QMK>0+332653#5#"&'KP5<9PPKY.31>F;$F') 0+3#5!#;#"&5#dFL#%><KK2L@NoW1l&(W1Z&(=@: JcYK[L#$! +!532654&#"##5!!>32#&KNWT+V VW+z$?X3N7#".54>32Qa]c{ 6zf.F2 PxGvS..TvGw?\vqLty*8 az+WYVW-t7J6W, Z&,--'4@1cYK[L #!' '!'$! +7>45!32#!!+5326%#32654&xvwnS]-#,;pNAC'n{;jkcnX.nja!jfP5>E@EW>@; caK\ L$! +33!332#!!#32654&WVdVxvwngNAC)jkcn/W>E@E=@: JcYKL +"##5!!>32#54&3U(V#[6wsVDU XPP enLIWdl&.Wl&\b&zWqy MK PX@gKZL@sKZLY@ +##5#3!yTVvXX$WI 6@3cYK[L   !+3!!32##32654&WuownNCEPgccdC;>@;WK%W@YKL+3!!WP q3@0QYKYL +53>7>5!3#5!!! A /ZT ]sJNwߏ?n,!MPOW1(6@3JaK L +!##33333##]mi`V`im]0YO((0:O(D@A Jc[K[L$"!((+"'>32#"&'732654&+532654&SOaQoj847@ts Q bTSXHKccI@PdPBdm`a9M IEaili HLD>5:K<36?W $@!JKL +!#331bTqiG?XWb&Wd.i!@YK[L!'+7>5!#!+5326VS]-#,;'n{;XX.nja!jfP5W0W{+72Ws!@YKL+3!#!WVXXWI37&c7\"@ JK\L!"+%+5326733h!SMD>,6aӿZHHO$( Q2 $/KPX@  ccK LK PX@  ccY L@%U ccY MYY@,+*)!  +5".54>7532#4.#2>%3u@uY55XuASAuX44Yu@'AX01XA&(BX/1XA'QBkKJjC LL DjJKkBQh9O/i/N89N//Nm;Wq )@&sKZL +3#5!3!yZTVvߏX</)@& JcKL#"+32673##"&=3DT1V(VV#Z6wsVLI >X enW %@"KZL +33!3!3WVVVXXXWq-@*sKZL +33!3!33#5WVVVZTXXߏ 6@3cYK[L   $!+5!32#!2654&+xvwn NACLXPjkcnX>E@EW 4@1cK\L   $! +332#)3%2654&+WVxvwnNV_NACLjkcnXO>E@EWI *@'cK\L   $!+332#!%2654&+WVxvwn NACLjkcnO>E@E74@1Ja[K[L$%"#+?3267!5!.#"'>32#"&7Qi[ht7peWjPmvBYytLstUEhrqW"sKPX@!a[K [L@)aK[KK [LY@""  +"&'##33>32'2654&#"h ~VV~ IwT--TwIq{{qqxx ԏ1[PRY0Oz{{z(B2@/Ja[KL&+!#+#.5463!";BVgJIwnKDCL iNcnOAB@E6D8)R@ JHK PX@[K[L@c[LY@$"))"+%#"&=4>7>7>322654&#"zdh'Fb9.N! #Z&Yi_3bmKEJBA]RndWsG" M  _r+,zcKNQI;\^K C@@Jc[K[L   ! +332##32654&#32654&KNU(+%MU ((&#.')B?: 9*=I!""!Ǎ$!%#K@YKL+3!#K<Jnz+@(QYKYL+73>7>5!3#5!#3#2"RMNNJK+*=V;nІO*?HEg,H6@3JaK L +!5##7'3353373#'#CAb^|HLH}]aA*(D@A&%Jc[K[L#! ((+72654&+532654&#"'>32#"&'79<.9MT.)147? KnPU]%%%1kZYi L>;,"#'A' *0+HIK;#9 6-ENMH '5K @ JKL+3#33#VMXMu$wK&T_ 3+K -@*JaKL +33373#'#KPQ]`O!@YK[L!'+7>5!##+5326rQP@E%$ QUQ$B?:_FJ.Kv '@$ JKL +333##KvrNSr${zK '@$aKL +33353#5#KPPP$.RK!@YKL+3!##KP$nK>S.F!@YKL+5!##PJJn>\.>%2?M@JJ K [K [KL53(&;73?5?.*&2(2%%8#A +23"##5"&#.54>7:75"&#263>54&23"# 1WA%&AY3 O 3YA&'B[3f  HVY  B\V8X<=\= <[=>X:TTTQWQTTU[Kz( )@&RKZL +3#5!33MNqPnІn2/@,JcKL##+!5#"&=3326753X;!Y_P=41P IN1* $K %@"KZL +!3333PP$nnKz-@*RKZL +3#5!3333MNPPnІnn, 0@-cYK[L  $!+332+##32654&|TVSYʝi|{6'&ܤOHKV1'((KV<@9 cK\L  +!3!332#7#32654&PP|SUSW|{6'&$ܤOHKV1'((K 0@-cK\L    !+3332#7#32654&KP|TVSY|{6'&ܤOHKV1'((*4@1Ja[K[L$%"#+?3267#53.#"'>32#"&*K A=?ED><> HlRcwxdZk )6JEDDM9&DQ{}yQKnKPX@!a[K [L@)aK[KK [LY@$" +333>32#"&'#%2654&#"KPd |\d||d\~ cFHHHHGNPdlvtsh=_ST\\TS_* 2@/ Ja[KL"+46;#5##7.35#"5aNPkt]854&#"##53533#>8T^3J/$"3 :=9PPPPNY}`N"H32I :>=NM>?9 KeZ1T<"$>S/]aP"Z2VFL ZKPX@YKKL@aKLY@   +533533X`XP8^^^^$>M'4@1cYK[L #!' '!'$! +7>5!32+#+5326%#32654&rHtTVSY­AD%# ts6'&QUQOHKVB?:_FJ.x1'((K>@; caK\ L$! +3335332+5#%#32654&KPPuTVSYut6'&äOHKV1'((;@8 JaK[K L## +3#53533#>32#4&#"KPPNV-SbP7>9P0@88@%&WT/1>F;K&uK&Co>&\TFKz MK PX@gKZL@sKZLY@ +##5#33ۡNP$n >@;ra c\ L! +3#5353!!32##32654&U1ϹuorsNCE LaaL_kcdC;>@;":@7 cKYK\L$! +3533#32+##32654&O}O[YSʝi}|2..JlDNMG%'($7!>@;a[K[L!!  +".54>32"!.267!}JyU..UyJJyT..TyJh~  }hk}~ 0YRP[11[PRY0pii܅mm. >@;a[K[L   +".54632"!.267!1U<#ed||d@O(JAAJQ !?^;vvtKGGKNHHN!@J[KL!"+>;#"#36;( Z[?63P!@J[KL!$+#3>;#"UUu+-$hw2/(JW *GK PX@fYKL@rYKLY@ +3!53!WcPK:GK PX@fYKL@rYKLY@ +3353#KJ^n -@*aYKL +3#53!!3#WFFHAPH  -@*aYKL +35#535!#3#KAA<@J@Wq|6@3Ja]KL +33333#5##WViPT0}(ߏ0Kz6@3Ja]KL +333733#5#'#KPQ]}GN$OІWq_K PX@!gaKZL@ saKZLY@ +33!33#5#!WVxVZT\)ߏ/Kz60@-a]KL +333533#5#5#KPPMNOnІ<>@JKL+333#URP&/@,JaKL+!5#53333#!eaHKH>+@( JKZKL+!##5#53333NkURh?xcWJ)@& JcKL#"+%4&#"#3>32#DT3T(VV#Z6wsVLI  enKK7>.Z7.WY&1d 3+Kn&Qd7YJ&6d 3+2n&Vdl&:D&ZCl&:&Zu5Z&:h&ZjW1i&(,&HaPl&<>&\CQ_0,~@UYM+!5!,30N23@UYM+%!5!3N2s3@UYM+%!5!sANP $@!HUYM +#5467mB3 "&#n<95" A @GY"L +53'>=TmB3 "&:n<95" Aqn @GY#L +353'>=TmB3 "&n<95" Pz 3@0HUYM   +#5467##5467gmB3 "&vlB3 "&#n<95" n<95" Ak +@(GY"L   +53'>=353'>=TmB3 "&vlB3 "&:n<95" n<95" Aqkn +@(GY#L   +353'>=353'>=TmB3 "&vlB3 "&n<95" n<95" < MK1PX@a"K#L@UaYMY@ +#53533#ܠL FFC<eK1PX@ a a"K  # L@% Ua a Y   MY@ +5#535#53533#3#ܠL FFFFB @[%L  +7"&54632-@@-.@@@..@@..@Cfn&'( '3?KKPX@1 c    d[*K  [#L@9 c    d"K[*K#K  [+LY@7A@54)(GE@KAK;94?5?/-(3)3#!''   +"&54632#32654&#""&54632!"&54632%2654&#"!2654&#"H]]HIYYKKA)11)(55XH]]HIYY6H]]HIYY8)11)(55)11)(55H^ZW[[WZ^:;8989;:l^ZW[[WZ^^ZW[[WZ^B:;8989;::;8989;: 0JK1PX@ %K#L@ Y%LY+3#'[Z#  8JK1PX@ %K#L@ Y%LY@ +?'3#[ z?@"K#L++3H>>(h uK PX@cW[OKPX@c[%L@cW[OYY@     +"&54632'2654&#"NRRNPPPP----,..^][``[]^=>@A==A@>+l Z JKPX@rgUZN@rsUZNY@ +#5#5733#'35=@ҳ_//ԔPG::4]D@AJacW[O +"&'732654&#"'73#>32

32'"32654&MQUK6J @ %,45#=LOB"0,$%+*Z\c],3 =<999A4V*@'JsUYM+#5!_"+AL2c#/A@> JccW[O%$+)$/%/##*"+#"&5467.54632'2654&#""32654&cSFGQ#OCFK#)&&)&))&(-,)**+7866* '1863& )I3.^$G@D JccW[O $$ +"&'73267#"&54632'2654&#"3N > ,1,1%32

;#"##15D P(+$2)Q PE% M  F>Q:4J@G$#J I  a a[*KY#L430/.-%%D +%#!!5>5<5#53.'#53.54632.#"3#3'c!1>@I/DPP N1B"B!_leQ 2CF7#B!#S1O@L+* Ja  a[*K [ + L11/-(&%" +753&45<7#53>32.#"3!!#3267#"&'#JJQh]tLGCDRREFJ H wbhB   By{\[ 4EVSB   BRZF4 Wb}zMO=I@F= Ja   a[*K [+L;94321%%" +%#"&5467#53>7>7!5!>54&#"'>763#!!32671 x]ct @2l ><=O Mua[q A 6 J7546323>54&#"^9TJ+";G9;=.?#--Z+2KKH]G:'BMF>$MICt1'ڴ(l&#(W !% @ $" 0+"&54632##332654&#"!5!?:VW;32!3267"!5."nI^74[JExX3%}OWLy%#t]m2]SN~X0.RsD7:BNE=619?m& 'u3+t3+Tl&' 3+t3+7~&'3+t3+Hv&'3+t3+Hx&'3+t3+d_&0'W3+t3+Zu 0+!!Z2@3[2J3W 0+!'3'k2>3@23u 0+!'7'7!@23a2>3W 0+!737q2J32@3M 0+!!#5BHMHB5YM  0+7!5!#Y/HBGH/`SAc&a 0+73!5!c5G/aR,5@T`/H&a 0+7'3!/G5AR&/5BH(0+!5!HH` W3d0+!!W$dL<+7 1,( 0+#"&'#".54632>3232>7.#"%"32654&)=&1.AaC-0 ">--1+$75((2R8/# 0+232673#".#"#>232673#".#"#>41. LH?50.$LJB41. JP7"6.+$LJ BFBH EC!BHU5@ 0+?#537#5!733#3!DqUJQJwUDyHHHHyU 5T  0+%%5%!!5 ^> VpVLU 5T  0+7%5%!!U > VpVL''2V@S-,+Jp c bW[O(((2(210/.*)''  +2#".54>"32>54.53'733Rc88cRRc88cREtR//RtEEtR//Rt~s$Qm8cRQd88dQRc880UvEDvU11UvDEvU0FB:ZF''@P@M=/.J ccaW[O<;:931,*''  +2#".54>"32>54.4&#"'>323!57>Rc88cRRc88cREtR//RtEEtR//Rt,&*1 K XNJU69x%&8cRQd88dQRc880UvEDvU11UvDEvU0 &.$9OK=4C&PFL,''Dd@aA < ;/.J  c a  ccW[OCB@?>=9731,*''  +2#".54>"32>54.#"&'732654&#"'7#5!6Rc88cRRc88cREtR//RtEEtR//Rtr^THcL 80.321!AIW8cRQd88dQRc880UvEDvU11UvDEvU0hDL=?"$)" ;wBNh:''255,JK PX@3ph  c bW[O@4pp  c bW[OY@43210/.-+*)(''  +2#".54>"32>54.#5#533#'35Rc88cRRc88cREtR//RtEEtR//Rt,LhBB8cRQd88dQRc880UvEDvU11UvDEvU0_K DD''Ff@c> 98,+J  c a  c cW[O)(B@=<;:640.(F)F''  +2#".54>"32>54."&'732654&#"'7!#>32Rc88cRRc88cREtR//RtEEtR//RtAEd N 6'.10-.M 8"?Z]8cRQd88dQRc880UvEDvU11UvDEvU0;A !"'%%( Fn DIEP''@Li@f218J  cc  c  cW[OBA)(HFALBL<:64/-(@)@'' +2#".54>"32>54."&54632.#">32'"32654&Rc88cRRc88cREtR//RtEEtR//RtF\_jWAWL -&5A@,D[^R+95.,718cRQd88dQRc880UvEDvU11UvDEvU0lnvt59FKEEDN%"$&&%"$''.Q@N-J pcaW[O(((.(.,+*)''  +2#".54>"32>54.!5!Rc88cRRc88cREtR//RtEEtR//Rt\8cRQd88dQRc880UvEDvU11UvDEvU0lHQ''?KWj@g:.J  c  c c  cW[OMLA@)(SQLWMWGE@KAK53(?)?'' +2#".54>"32>54.2#"&5467.546"32654&"32654&Rc88cRRc88cREtR//RtEEtR//RtDYT%")[XY_'""^R.44..00.3782.778cRQd88dQRc880UvEDvU11UvDEvU0[C8%. .(;LJ<(/ 4 9CF " "''@Li@f821J  c   c ccW[OBA)(HFALBL<:64/-(@)@'' +2#".54>"32>54.2#"&'73265#"&5462654&#"Rc88cRRc88cREtR//RtEEtR//RtB\_jWAWK .&5A@,D[^Q+:7-,608cRQd88dQRc880UvEDvU11UvDEvU0\lnvt59FKEEDN"%#'&%"$'';BN@?> JK&PX@.  c   c cW[O@4  c   ca cW[OY@'DC)(JHCNDNBA=<31(;);'' +2#".54>"32>54.2#".54>#'732654&#"Rc88cRRc88cPEsR./RtEEtR//Tt2$$22$$2D="bA##""8cRQd88dQRc880UvEDvU11UvDEvU0`2XBBX22XBBX2Fe%2BA\\AA\\A''3?R@O cc  cW[O54)(;94?5?/-(3)3''  +2#".54>"32>54."&54632'2654&#"Rc88cRRc88cREtR//RtEEtR//RtE]ee]^dd^8<<86>>8cRQd88dQRc880UvEDvU11UvDEvU0tnmuumntHJPQIIQPJ'+jK1PX@c_[-L@$ccW[OY@! '% +!+  +2#".54>2654&#"7"&54632Rc88cRRc88cR^dd^]ee]6>>68<<8cRQd88dQRc8tnmuumntHJPQIIQPJd+0+!%!!dfm%,d+ 0+7#!!3!!GH+:m-9%/n1}?60+7#6GH+%/n' 0+2#".54>!5##7#Rc88cRRc88cA7mQ$s~8cRQd88dQRc8FnZ:B'," 0+2#".54>!5#7>54&#">32Rc88cRRc88c&%Sx96UJNX K 1*&,8cRQd88dQRc8,LFP&C4=KO9$.&'0- 0+2#".54>4&75!3>32#"&'326Rc88cRRc88c WI!123.08 LcHT^8cRQd88dQRc80=:hNBw; ")$"?=L'!  0+2#".54>535##3'7Rc88cRRc88cBBh8cRQd88dQRc8_DK_'2  0+2#".54>2654&#"735!>32#"&'Rc88cRRc88cVP]Z?"8 M.-01.'6 N d8cRQd88dQRc8PEID nF (%%'"! A;',8 2-& 0+2#".54>2654&#"46327.#"72#"&546Rc88cRRc88cQQ^[D,@A5&- LWAWj_[117,.598cRQd88dQRc8NDEEKF95tvnl$"#('#"%' 0+2#".54>35!!Rc88cRRc88c$[ 8cRQd88dQRc8cQH'+7C @ =81, 0+2#".54>"32654&'>54&2#"&546"&54632Rc88cRRc88cSQ^""'_YX[)"%TX.00..44.2873.778cRQd88dQRc8C9 4 /("3267#"&'32654&"&54632Rc88cRRc88cUQ^[D,@A5&. KWAWj_\106,-7:8cRQd88dQRc8NDEEKF95tvnl$"%&'#%"''.: @ 4/)( 0+2#".54>"32>54.#7%"&54632Rc88cRRc88c2$$22$$2Ab"=""##8cRQd88dQRc82XBBX22XBBX2FB2%=A\\AA\\A#>>0+#=R592>M0+33R86P>  0+!#3'3#P>><>x  0+!53#5#3xppHHn>>>i '*@'J[*KY#L('+!53.'4>323!5>54&#"/F.5>_+1 UL27+ (F CKPX@_L@rW[OY@   +"&'332673IFB%%%"CDG9!%%!9G22%/;cky[A,~ztlhd_K82*&" 0+#"&54632.#"32674632#"&'#5353'4&#"32632654&/.54632.#"#"&'%3##5#732#'##%3##5##'##73''2654&+4632#"&'3#3##%3#"&=33265'#5353732+%4&#"3262654&+32#'##7'373#'2654&+.! %&!*(!!''!!(RTj "! K88:&#'78D;q'p( "&&" (iVSSQT'9$$%%7%:&#'<0/<z'A)$%)" )$**$$))'~~K!!!!   o<99**[JJ :$))$%((p4?[[[;~~'$$'K !!t+<999]II[;K  :(  0+73#5!#3!(fPPPPWpl&&<b 0+533533N.NVmmmm XFLK>  @  0+3#%3#3+53265`lNE`lNPTP<5-.$^SK30 0+533533J4JP2jjjj$0+ # # ]\XYA* ("0+74>32#"&32654&#"32654&+A"=T1\o:7;CweltP~CPD:>US=?NVJ} 4Q5eQ5MQE]npvS;51ALMED>B@5'0+%'.546?>54&#"'>323267 oUTgGE=6/3*2? KhNQ[OC<5)?-3I HJGB7> "&.%BDM9;= !"$.,04J 0+!5##7'333373#'#CAb^|HLH}]aAp4(%0+732654&+532654&#"'>32#"&O H4?KJ>]^8E?41LKtQVj568=z_Xp1 .3C;7CG>35?0/HLaT4QP@]hPEXE&XT]3+KN0+# #(TR$tKQKPDz-0+!5#"&53326533#5Y.S^P5<9PPONF')WT;1>F;nІ20+#5#"&=3326=PI)N\P336F$WT0<91D"0+#5#"&'#"&53326533265MR*#%0'+,WT;1>F;1>F;Dzc&0+3#5#5#"&'#"&53326533265MNLR*#%0'+,WT;1>F;1>F;< 0+%#"&=#53>3232654&#"32#"&732654&#"EPH(#B1jZZhPE-6?@5,F.,C,VmgN69D91:12.*$0+%#"&54>7'.546;#"2654&#"xdc}2B###*B<*n-JFGJBEMMn~|p1L7 4!29J!A^YLLUULLYdc̰3+!0+#53267#"&546?>=?k`'7!$@>CK Qqkik?!/!nnH#-"/*.;C/KegPDN *n:dd3+#n :dd3+n:mdd3+#n:{dd3+20\~KK3+20~KK3+20s~KK3+<4#'#0+4>7.74>7.<&AY2((I7!oU'4X?#&AY2((I7!oU'4X?#Ov`%5 Uh}GG5%cyOOv`%5 Uh}GG5%cyP47'#0+'>54&'7'>54&'77&AY2((I7!oU'4X?#&AY2((I7!oU'4X?# Ov`%5 Uh}GG5%cyOOv`%5 Uh}GG5%cy<\0+4>7.<&BZ2,)J8"qW+4X@$UOmY%9 M^uGG9%^rPp0+'>54&'7p&BZ2,)J8"qW+4X@$HOmY%9 M^uGG9%^rP60+3#3P昘fjH&H<"0+3#53#<Hw$0+5326=46;#";#"&=4&#,?QY44..,,,,..44YQ?,)J2>pcNH':x22$0+#"+5326=467.=4&+532;,?QY44..,,,,..44YQ?,)2>ncNH':v2<#'#0+4>7.74>7.<&AY2((I7!oU'4X?#&AY2((I7!oU'4X?#SOnZ%5 NawGG5%]qOOnZ%5 NawGG5%]qP7'#0+'>54&'7'>54&'77&AY2((I7!oU'4X?#&AY2((I7!oU'4X?#JOnZ%5 NawGG5%]qOOnZ%5 NawGG5%]q#>0+#=RIM2M0+33RfLJP  0+!#3'3#P>><x  0+!53#5#3xppHH>>>20+32Ofj20+#3ONfjx0+3xKfjx0+33xKKK||<:#dd3+Fk((3+<b  0+"&54632.#"2654&'O 6"d\e[9 ^9`"i=b#O2X  0+"&54632'2654&#"EeXXedYY L2X  0+"&54632.#"2654&'E <%d\e[4 ^?e#h8\"SDe  0+73'733!f'hP{DPCE2J5j  0+!#5!533#%!R[tffv8iFLLm>H:E<:0+3!5!gNXPmHF#/ )$0+%#"&5467.54632'2654&#""32654&Fuy@60:tzz843BPPMTQOIWQZWTPZU_ke]@MM7[fcT>LM=;3??58>F@:KV&u 3+*&uK&u*&u"-K1PX@ Y"L@UYMY+3#@P59l@ri+3#xclQl7l@ri+#'ZQll!l@UYM+3#%3#|bkRh~Wl2xl@Jri+#'#7sVMMVslPP]l@Jri+#'373`sVMMVPP$7j )@&rW[O   +"&'332673GBB!#" CAK5''5K*Gi,@)Wc\P####+54632326=3#".#"*-%!  <*'!  /8 .: 2GH@UYM+!5!GD#3Z*@'UYM+53353#X`X^^^^z\@UYM+53]bb% 1@.cW[O     +"&54632'2654&#"2DD23CC3 !!@33>>33@6$""$%cb @rW[O""+332673#"&%G'//(GMQQMb ++ ?II&J O ;_<g C      6 k v  = xp >'  <S < Copyright (c) 2018 LLC Contrast Foundry (LLC CoFo). All rights reserved. Copyright (c) 2018 LLC Contrast Foundry (LLC CoFo). All rights reserved.CoFo SansCoFo SansRegularRegular1.001;COFO;CoFoSans-Regular1.001;COFO;CoFoSans-RegularCoFo SansCoFo SansVersion 1.001;PS 1.002;hotconv 16.6.54;makeotf.lib2.5.65590Version 1.001;PS 1.002;hotconv 16.6.54;makeotf.lib2.5.65590CoFoSans-RegularCoFoSans-RegularCoFo Sans is a trademark of LLC Contrast Foundry (LLC CoFo).CoFo Sans is a trademark of LLC Contrast Foundry (LLC CoFo).LLC Contrast Foundry (LLC CoFo)LLC Contrast Foundry (LLC CoFo)Designer: Maria Doreuli. Team: Irina Smirnova, Elizaveta RasskazovaDesigner: Maria Doreuli. Team: Irina Smirnova, Elizaveta Rasskazovahttp://www.contrastfoundry.comhttp://www.contrastfoundry.comhttp://www.contrastfoundry.comhttp://www.contrastfoundry.com  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjikmlnoqprsutvwxzy{}|~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~uni0000uni00A0uni00B2uni00B3uni00B9AmacronamacronAbreveabreveAogonekaogonek Ccircumflex ccircumflex Cdotaccent cdotaccentDcarondcaronDcroatEmacronemacronEbreveebreve Edotaccent edotaccentEogonekeogonekEcaronecaron Gcircumflex gcircumflex Gdotaccent gdotaccent Gcommaaccent gcommaaccent Hcircumflex hcircumflexHbarhbarItildeitildeImacronimacronIbreveibreveIogonekiogonekIJij Jcircumflex jcircumflex Kcommaaccent kcommaaccentLacutelacute Lcommaaccent lcommaaccentLcaronlcaronLdotldotNacutenacute Ncommaaccent ncommaaccentNcaronncaron napostropheEngengOmacronomacronObreveobreve Ohungarumlaut ohungarumlautRacuteracute Rcommaaccent rcommaaccentRcaronrcaronSacutesacute Scircumflex scircumflexuni0162uni0163TcarontcaronTbartbarUtildeutildeUmacronumacronUbreveubreveUringuring Uhungarumlaut uhungarumlautUogonekuogonek Wcircumflex wcircumflex Ycircumflex ycircumflexZacutezacute Zdotaccent zdotaccentuni018Funi01C4uni01C5uni01C6uni01C7uni01C8uni01C9uni01CAuni01CBuni01CCuni01D3uni01D4uni01E2uni01E3uni01F1uni01F2uni01F3AEacuteaeacute Oslashacute oslashacute Scommaaccent scommaaccentuni021Auni021Buni0232uni0233uni0237uni0259 acutecomb dotbelowcmbuni0394Sigmauni03BCuni0400uni0401uni0402uni0403uni0404uni0405uni0406uni0407uni0408uni0409uni040Auni040Buni040Cuni040Duni040Euni040Funi0410uni0411uni0412uni0413uni0414uni0415uni0416uni0417uni0418uni0419uni041Auni041Buni041Cuni041Duni041Euni041Funi0420uni0421uni0422uni0423uni0424uni0425uni0426uni0427uni0428uni0429uni042Auni042Buni042Cuni042Duni042Euni042Funi0430uni0431uni0432uni0433uni0434uni0435uni0436uni0437uni0438uni0439uni043Auni043Buni043Cuni043Duni043Euni043Funi0440uni0441uni0442uni0443uni0444uni0445uni0446uni0447uni0448uni0449uni044Auni044Buni044Cuni044Duni044Euni044Funi0450uni0451uni0452uni0453uni0454uni0455uni0456uni0457uni0458uni0459uni045Auni045Buni045Cuni045Duni045Euni045Funi0462uni0463uni0472uni0473uni0474uni0475uni0490uni0491uni0492uni0493uni049Auni049Buni04A2uni04A3uni04AEuni04AFuni04B0uni04B1uni04BAuni04BBuni04D8uni04D9uni04E8uni04E9uni1E46uni1E47uni1E62uni1E63WgravewgraveWacutewacute Wdieresis wdieresisuni1EBCuni1EBDYgraveygraveuni2004uni2007uni2009uni200Auni200Buni2012uni2070uni2074uni2075uni2076uni2077uni2078uni2079uni2080uni2081uni2082uni2083uni2084uni2085uni2086uni2087uni2088uni2089liraEurouni20B4uni20B8uni20BDuni2113uni2116 estimateduni2153uni2154 oneeighth threeeighths fiveeighths seveneighths arrowleftarrowup arrowright arrowdownuni2196uni2197uni2198uni2199uni2206uni2460uni2461uni2462uni2463uni2464uni2465uni2466uni2467uni2468uni2469uni24EAuni24FFuni2610uni2611uni2713uni2776uni2777uni2778uni2779uni277Auni277Buni277Cuni277Duni277Euni277Funi3008uni3009uni301Auni301BuniA7B6uniF6C3uniF6D4uniF8FFCRI.altuni00CD00A40301 uni0407.alti.TRKuni00ED006A0301 uni0457.alt uni041B.BUL uni0432.BUL uni0433.BUL uni0434.BUL uni0436.BUL uni0437.BUL uni0438.BUL uni0439.BUL uni043A.BUL uni043B.BUL uni043F.BUL uni0442.BUL uni0446.BUL uni0447.BUL uni0448.BUL uni0449.BUL uni044A.BUL uni044C.BUL uni0431.SRBexclamdown.capquestiondown.capguilsinglleft.capguilsinglright.capguillemotleft.capguillemotright.cap hyphen.cap endash.cap emdash.cap dblparenleft dblparenright parenleft.capparenright.capbracketleft.capbracketright.cap braceleft.capbraceright.capdblparenleft.capdblparenright.cap uni3008.cap uni3009.cap uni301A.cap uni301B.cap slash.cap backslash.capbar.cap brokenbar.capat.capcopyright.pnum_lnum zero.zerozero.tnum_lnumzero.tnum_lnum_zero one.tnum_lnum two.tnum_lnumthree.tnum_lnumfour.tnum_lnumfive.tnum_lnum six.tnum_lnumseven.tnum_lnumeight.tnum_lnumnine.tnum_lnum zero.dnomone.dnomtwo.dnom three.dnom four.dnom five.dnomsix.dnom seven.dnom eight.dnom nine.dnom zero.numrone.numrtwo.numr three.numr four.numr five.numrsix.numr seven.numr eight.numr nine.numr uni04100301 uni04150301 uni04180301 uni041E0301 uni04230301 uni042B0301 uni042D0301 uni042E0301 uni042F0301 uni04300301 uni04350301 uni04380301 uni043E0301 uni04430301 uni044B0301 uni044D0301 uni044E0301 uni044F0301 caron.alt acute.cap grave.caphungarumlaut.capcircumflex.cap caron.cap breve.cap tilde.cap macron.cap dieresis.cap dotaccent.capring.capCyrbreve jkklnoop%&)*45=>CDLMWXXYZ[[\ bTDFLTcyrl6latn BGR .SRB N    .AZE .CRT .DEU .MOL LNLD lROM tTRK       aaltncaltvcase|ccmpcrcydligfraclnumloclloclloclloclloclloclsinfss01supstnum  BJRZbjrz "*2:BJhpx>@D$<<$V  L  D v     V  2  n0  P# $$$$%%"%@%^%|%%%%%%V{|W}~ZptuqSTUVY]o^_`abcdefghijklmn\wxrsV #,>?@CL^_`chjkmpu{!"[\]^abpNOPQTyz, /v gedff  gedffSTUV!"STUV!"6",-MX-[M,LL*]^_`abcdefghijklmn (2<FPZdnx"" (2<FPZdnx &0:DNXblv  &0:DNXblv $.8BLV`jt $.8BLV`jt",6@JT^h",6@JT^h *4>HR\ *4>HR\(2<FP(2<FP&0:D&0:D$.8$.8",",  $4styy  6Lstyy styy "8Ndstyy styy styy $:Pf|styy styy styy styy &<Rh~styy styy styy styy styy (>Tjstyy styy styy styy styy styy  *@Vlstyy styy styy styy styy styy styy " ,BXnstyy styy styy styy styy styy styy styy $ .DZpstyy styy styy styy styy styy styy styy styy  T'{|v}~ptuqwxrs' #>?@C^_`chjkmpu{[\]^abNOPQTyz  F yst   yst   yst     F         st yy  $   70t "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz= =|= =|= = |= =|== ==|=L =L|< <|< <|< < |< <|<< <<|<K <K|; ;|; ;|; ; |; ;|;; ;;|;J ;J|: :|: :|: :|: :|:: ::|:I :I|9 9|9 9|9 9|9 9|99 99|9H 9H|8 8|8 8|8 8|8 8|88 88|8G 8G|7 7|7 7|7t 7t|7 7|77 77|7F 7F|6 6|6 6|6s 6s|6 6|66 66|6E 6E|5 5|5 5|5y 5y|5 5 |55 55|5D 5D|o5 o5|oU oU|k& k&|kF kF| (!'A&l "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz "*2L@L~L@L~L @L ~L@L~L=@L=~LL@LL~K@K~K@K~K @K ~K@K~K<@K<~KK@KK~J@J~J@J~J @J ~J@J~J;@J;~JJ@JJ~I@I~I@I~I@I~I@I~I:@I:~II@II~H@H~H@H~H@H~H@H~H9@H9~HH@HH~G@G~G@G~G@G~G@G~G8@G8~GG@GG~F@F~F@F~Ft@Ft~F@F~F7@F7~FF@FF~E@E~E@E~Es@Es~E@E~E6@E6~EE@EE~D@D~D@D~Dy@Dy~D @D ~D5@D5~DD@DD~)t "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz= =|= =|= = |= =|== ==|=L =L|< <|< <|< < |< <|<< <<|<K <K|; ;|; ;|; ; |; ;|;; ;;|;J ;J|: :|: :|: :|: :|:: ::|:I :I|9 9|9 9|9 9|9 9|99 99|9H 9H|8 8|8 8|8 8|8 8|88 88|8G 8G|7 7|7 7|7t 7t|7 7|77 77|7F 7F|6 6|6 6|6s 6s|6 6|66 66|6E 6E|5 5|5 5|5y 5y|5 5 |55 55|5D 5D|o5 o5|oU oU|k& k&|kF kF|l "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz "*2L@L~L@L~L @L ~L@L~L=@L=~LL@LL~K@K~K@K~K @K ~K@K~K<@K<~KK@KK~J@J~J@J~J @J ~J@J~J;@J;~JJ@JJ~I@I~I@I~I@I~I@I~I:@I:~II@II~H@H~H@H~H@H~H@H~H9@H9~HH@HH~G@G~G@G~G@G~G@G~G8@G8~GG@GG~F@F~F@F~Ft@Ft~F@F~F7@F7~FF@FF~E@E~E@E~Es@Es~E@E~E6@E6~EE@EE~D@D~D@D~Dy@Dy~D @D ~D5@D5~DD@DD~ >A{}*4>HR\fpzccccccccccccccccccy~,O,O\\pppppYpY+, yst      WY\,, pp   xDFLTcyrl"latn<BGR SRB (AZE (CRT (DEU (MOL (ROM (TRK (cpspkernv~     !#%')+-/13578:<>?BEHJLOQSUWijklmnopqrstuvwxyz{|}~X]  J"4Bhhn8V,N2`@z X^NN2N<n| ( Bn x   . . . 4 . . ^ h n x  . n B P  . .222 ^ l ~h    " @ . . .99;Y[Y   }<8I9;~ 9?Y|d||~ "9?| |~9|~ "9d}9|~ 9;|~ |9;[9;?|~ [| ";|~)(> 54?! =% #[w7F-(-  | (67-2  #9IYw| (9?BY ("22<2(2(- " #I  #Y99;9IY9[EKNOD(2(2YIM<PQSUW2YZ 4=GI2M<PQSUW2  =GHFGHJRTX)(> 54?!  (*,.02=AINR "q}|~q| q}|~|~ "mm?f|~~~~ "q}_fo| q}|~n^_`jo|m bf #^_`jo"  <"2? (2}~~p(~"-"22(9Y IY\bf^bf^`j9  9 q}t9}t9; "#%)379:;<=?IY[\cdegw!#%35678:<?LUWXklnqrstuyz|W\]^_fghoq{}w    <<2# n   o t   ~  (      2   = A2 y   #fbf!?$ aa @AGBCJJDEFJJGGHIKLMNO PQR]STUVWX]YYZQ[\^=_>` d@@@@@@BABBBBJJJJGJGGGGGGLLLLNPPPPPPSRSSSSVVVVYZZZZZZ`Q`@P@P@PARARARARG]G]BSBSBSBSBSCTCTCTCTJUJUJVJVJVJVJDWDWEXF]F]F]F]JYJYJYUJYGZGZGZBSH[H[H[I\I\I\I\K^K^K^LLLLLLM_N`NOOOGODWWDWWLBSOBSGZI\K^N`WZkk%lj&qq'()mqrqi*tlpkmtqqmqqqnq+jlr,-pqqpoqonnqu.~}xyyzzw~z4}}{{zzxx5~w67{{vy89nz:l;l~myp}ss<vnznzJYI\M_M_M_BSN`bbghghfdDqVWi01y2y3vv}}||/eeccc" ikqnrqnnquxzzzP[*F*;6DKSVUH:?>QJ=O45%8Lr  G r&rr   ABRMsI  r         rr &rrrrrr r               %%% r     &tt t'htt\t tt(ttttYtW.ttttt'tt' (]XtZtt tt.t0,muuT"1-uuu!uu"uu"#$"ju`uu#uu-u2""vu"gqfp!uvuu$uck'"d/tutututu)/)/tve'"   ++s@Nt^n_1o33vluu3a33#bi<CE97tt'(t.t0,"u"$u-u2;    "?DS1UWAY^DccJmmKstLwwNyyO{{PQip'))++--//113HJZ irt&STU\^agmns W[]beiloqx{{}}ideoromnDFLTlatn$ ` `դ'ח%חplugins/limit-login-attempts-reloaded/assets/css/fonts/CoFoSans-Regular.ttf000064400000366204147176754540023140 0ustar000BASE/;PFFTM\hGDEF$&(GPOSě?R|GSUB,v(*OS/2`q`cmap Hcvt Xdfpgm( gasp'glyfD:3$X\headx<6hheaHt$hmtxT 0loca̼maxp  name@ֲ 3postmAJprep}woAA%_<ח%ח!xS(8w(TXKX^ COFO   (dM1dPF@F(-P>Pv%H12CS<f22&p6:0#H<<(UUUn<W7WwWhW7WW}zWOWpWW7qW7W7wP|6rPSr< 2 (6@K.?.,b@0-KFKKbK-K!.@K@.VK2n+E2;x2R1daQ%;x36j-JFR"WJ<h72H5, (p()_,$2y##AAE 7wWwWwWwWWW77777b7PPPPmWGK666666I6.,,,,K+*-K!.!.!.!.!.H).+E+E+E+E@K6667.7.7.7.W?.?.wW,wW,wW,wW,wW,7@07@07@07@0W-+SK\WF}zWKOWKOW<OWKOWyKOW-KW-KW-K-KW-K7!.7!.7!.fx.WVKWV<WV772727272wnwnwnP+EP+EP+EP+EP+EP+E6262627!WW-.WTWK=WWKP+E I6!WW-. I67).72wn .(*n1(!7i((((E1KFwWwW"W77W}+W zWWdWWW"W wW:WWzWpWW7WqW7wd<2|W<WWRW{W7W(6,8KK(,**K*KKK4K!.,K@K..7K2KKVKK*K*,,K*2F(K-K*K&K P7!.WK" WKWEKW-K7 .7!.W-K72wW,@ P_122PAAPAA<<_BC(**#z(+4242.(25,+4242.DQ#M<$!W(2?T7HHd Z W  W  Y c (W<RUUU>'>'>'>'>'>'>'>'>'>'>'>'dd6>'>'>'>'>'>'>'>'>'>'p#p2P<Ti6n(d2(\WFK-A5@0*E*EK-KaK<D2aDrDfE.1d**##2122s<sP<PrPr<2s<sPp#p2P<22;x;xn<JF<22DC25>:<H<(25,+4242.(25,+4242.wWW7dRW7W(6,*K!.K*K*"+7!2tZ$q*y2V#6%%*~7~37Y#_cuGc      " & 0 : D p y !!!"!.!T!^!!""""H"`"e$i$$&''0 0 927Y#brFb      & 0 9 D p t !!!"!.!S![!!""""H"`"d$`$$&''v00{uh[S;%"bAigY?93)!e/sleb^ (UA10F6Z V   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`aqdeivokuj20r34ghlzcn1.m{b7wU[ap]^_xb`\, UXEY KQKSZX4(Y`f UX%acc#b!!YC#DC`B-, `f-, d P&Z( CEcER[X!#!X PPX!@Y 8PX!8YY  CEcEad(PX! CEcE 0PX!0Y PX f a PX` PX! ` 6PX!6``YYY+YY#PXeYY-, E %ad CPX#B#B!!Y`-,#!#! dbB #B CEc C`Ec*! C +0%&QX`PaRYX#Y! @SX+!@Y#PXeY-,C+C`B-,#B# #Babfc`*-, E Ccb PX@`Yfc`D`-, CEB*!C`B- ,C#DC`B- , E +#C%` E#a d PX!0PX @YY#PXeY%#aDD`- , E +#C%` E#a d$PX@Y#PXeY%#aDD`- , #B EX!#!Y*!- ,EdaD-,` CJPX #BY CJRX #BY-, bfc c#aC` ` #B#-,KTXdDY$ e#x-,KQXKSXdDY!Y$e#x-,CUXCaB+YC%B %B %B# %PXC`%B #a*!#a #a*!C`%B%a*!Y CG CG`b PX@`Yfc Ccb PX@`Yfc`#DC>C`B-,ETX#B E #B #`B `aBB`+u+"Y-,+-,+-,+-,+-,+-,+-,+-,+-,+-, +-), .]-*, .q-+, .r-, +ETX#B E #B #`B `aBB`+u+"Y-,+- ,+-!,+-",+-#,+-$,+-%,+-&,+-',+-(, +-,, <`--, `` C#`C%a`,*!-.,-+-*-/, G Ccb PX@`Yfc`#a8# UX G Ccb PX@`Yfc`#a8!Y-0,ETX/*EX0Y"Y-1, +ETX/*EX0Y"Y-2, 5`-3,Ecb PX@`Yfc+ Ccb PX@`Yfc+D>#82*-4, < G Ccb PX@`Yfc`Ca8-5,.<-6, < G Ccb PX@`Yfc`CaCc8-7,% . G#B%IG#G#a Xb!Y#B6*-8,%%G#G#a C+e.# <8-9,%% .G#G#a #B C+ `PX @QX  &YBB# C #G#G#a#F`Cb PX@`Yfc` + a C`d#CadPXCaC`Y%b PX@`Yfca# &#Fa8#CF%CG#G#a` Cb PX@`Yfc`# +#C`+%a%b PX@`Yfc&a %`d#%`dPX!#!Y# &#Fa8Y-:, & .G#G#a#<8-;, #B F#G+#a8-<,%%G#G#aTX. <#!%%G#G#a %%G#G#a%%I%acc# Xb!Ycb PX@`Yfc`#.# <8#!Y-=, C .G#G#a ` `fb PX@`Yfc# <8->,# .F%FRX +-g,:+?+-h,:+@+-i,;+..+-j,;+>+-k,;+?+-l,;+@+-m,<+..+-n,<+>+-o,<+?+-p,<+@+-q,=+..+-r,=+>+-s,=+?+-t,=+@+-u, EX!#!YB+e$PxEX0Y-KRXYcpB-*B *B**B@ * B@@ *D$QX@XdD&QX@cTXDYYYY" *DdDPPGG>>PPGG>>2222\"jDl6l6LZ ( Z  H b 0 v  R  J x &Jbpf&\(t \&R^t$NL8tLl4p &@ZV $ 0 < H T ` l x !!!*!!!!!!""T"`"l"x"""#$6$B$N$Z$f$r$~$$%%%&%2%>%J%V%%%%&&& &r&~&&&&' ''''''''''(( ((((((()$)))))))))****++^+j+v+++++,<,H,b,n,z,,,,,,,,,--2-Z-------...N......./v//000"0.0:0F0R0^0j1@222*2<2H2T223 3,383D3P3\3h3t33344\4h4t444444444565B5N5Z5f5r5~55555555556666&686D6V6b6n6z667 7J7z788F888889969X9d9p99: :(:0:<:D::;*;6;B;N;;;;;r>z>>??8?x??@:@@@AZAABBBTBBBCCLCzCCCCCCDDDDDEEREEF FPFFGGGbGnGGGHHHjHHIIIIZIIJ>JJJK KTKKKLLjLLLLM(M^MfMnMvM~MMMMMMMMMMN NN"N.N:N:N:N:N:N:NTNnNNNNO>OzOOP@PdPtQ:QbQQRRJRRS SSSTTT"T2TTTTTUUvUVbVVW&WjWWWXXX6XPXjXXXXXYY*YDY`YpYZZ6ZTZrZ[l\\]4]^D^_`R`aLafaaab$bpbbcNc~cd:dddddeHepeg6g6gPg`g~ggggh2hrhzhhhhhiii&iNiriijjLjjjjjkkkk,k:k|kkl ll2lhllm"m8mNmjmmmmmmmn*nTnnnnnnnooJoRoboroooooooopppp*p8pFpTpbppp~pppppppppppqqqq"q.q:qFqjqqqqqr,rjrrrss.d>  0+!%!! '7d`222j:F%!d,@)Y"KY#L+7353t _ YknnP>DK1PX@Y"L@UYMY@+333VPZPFKPX@(  s   a"KY%LK1PX@&  sb   a"L@/r  sb U Y MYY@+7#537#53733733#3##7#37#{HHyHFFFFF@B#*1-@*/.('  !Jrs+L+?5.54>753.'#5.54&'>@S J:go!9O-B`lQ ??htycB[yRC?;GLECBF 8=VZ-E/RQ`N,?P][^QQ\31 =61 9( '3KPX@+   c  d[*K [ #L@3   c  d"K[*K#K [ +LY@')(/-(3)3#!''   +"&54632#32654&#""&54632'2654&#"H]]HIYYKKA)11)(55H]]HIYYI)11)(55H^ZW[[WZ^:;8989;:l^ZW[[WZ^B:;8989;:-,6~KPX@43# J@43# JYKPX@[*K[+L@[*K#K[+LY@1/+)*#+!'#"&5467.54632>77>54&#"3267''1%dDsYE$hWUdeN"K 0gJ&7A<03:e`O/M3J4"l`N\ G)Hd]KN] "k, Hs'm&; =5.481\0+4>7.>&AY2,)J8"qW+4X?#Ot`%9 Sf{GG9%dyP1n0+'>54&'7n&AY2,(J9"oY+4X?#Ot`%9 Sf{GG9%dy%xQJ@ JK1PX@ Y"L@UYMY@ +7'7'7'37'`cc`:`cc`xq<3553=DmB3 "&n<95" 2\3@UYM+%!5!\*NCn@Y#L+353CknnS>@r'L+3S#On<b -@*[*K[+L     +"&54632'2654&#"OeXXedYY L #@ J"KZ#L+73'733!R'hcPhCxP24'@$J[*KY#L%"+4&#"'>32!!57>LIK_Oo7X; 7K+ J^6NVH`{ 7M,0K?:P^5^2J#D@AJcY"K[+L##+"&'732654.#"'%!5!6232AfReHT_1A#- tj{'Eb SkF32#"&'732654&#"'!!V*wxnQ bGUX\N-O!R%Xsfd~]W<32%"32654&EtTi9{dQ*;''E4i>0YE)N_cJN__dz6\zCǦYQ( @; Jc[*K[+L%$+)$/%/##*"+%#"&5467.54632%2654&#""32654&Zuy@60:tz833APXUTQ[UWQfcTPb]_mg]@KM7[fcT>LL=;3??58>F>:5#".2654&#"0YE)N_cJN__dz6\zCǦYQ( KPX@]Y%L@aUYMY+!!!!U  LLU<5@0+55%U VpV!<@9Jp[*KY#L!! %*+7546?>54&#"'>3253'7!$@>CK Qqkik?!/!^kH#-"/*.;C/KegPDN *nn32#"&'#"&54>325332654.#"326754&#"326oD> ,@) Jb"K#L + #'!#3 ]IG\F}XfKWK C@@Jc["K[#L   ! +3!2##32654&#32654&Wdz)6<5kPC@IKGIWc.PP=c[[5;<17:=871@.J[*K[+L+%267#"&54>32.#"u]cQw.SvGxQa]9X:yDUG krSZ/rk CY(Ge=zW'@$["K[#L !+3!2#'32654&+Wyz{yOwW1 /@,aY"KY#L +3!!!!!W|wPNPW1 )@&aY"K#L +3!!!!W|wPN7#l@ JKPX@a[*K[#L@#a[*K#K[+LY@##$%(#+#5#".54>32.#"326=#5M"kXWW @J"K#L+!##33sSjzS8E7-@*[*K[+L +".54>32'2654&#"}JyU..UyJJyT..TyJr}}rr~~ 0YRP[11[PRY0Nz{{zWI +@(c["K#L $!+3!2+32654&+W ovuyKECMnccrQE@E>7)H@EJGp[*K\+L%#)) +".54>32''267'3>54&#"}JyU..UyJJyT.F=C=FA%){__-.}rr~~ 0YRP[11[Pd+W-` N"yJ{{zWd3@0Ja["K#LA!+3!2#*+32654&+W nwFFfLDDLncMgRE?E>7J+'@$J[*K[+L-%-#+?32654&/.54>32.#"#"&7QeLO^9:w`^%B]7o}P QPNX6#@ aY'L+3#3P昘HHS>@r'L+#3ON<>"@aY'L+3#53#@Y'L+!5!3N(&K1PX@ s"L@ riY+#3`lN6)KPX@ J@ JYKPX@c[-K[+L@#c[-K#K[+LY@'%!%#D#+!5#"&5467654&#"'>32'&"3265uM3N[cR%@ <.35 LbOQiPC"341*32#"&'732654&#"KP\(,M:!|e3K[32.#"326KeZc|#EKJE?9 @Y~z?]>Z<";_ROb;.yKPX@ J@ JYKPX@"K[-K[+L@ "K[-K#K[+LY@$#+!5#"&546323'54&#"326O5b}e+KPPU32'"!.P>8> KjSfy#PT4" CLs;]?!xmF97H]/@,["KY%K#L!#+3#53546;#"3#p\\]U;86/J*]EH-5"Jn04)@ JKPX@ [%K[#K['LK1PX@$%K[-K[#K['L@!_%K[-K[#LYY@ $&$%%#+3#"&'7326=#"&5463254&#"326KcLwNN(BSO3b}|h1OW;EOJHHL)r_JM 3)@K>""xut&#*NE^QL[WK,@)I"K[-K#L##+33>32#4&#"KPU,SbP7>9P#%WT/1>F;FLKPX@Y"K%K#L@a%K#LY@+533F[VP8``$>XKPX@Y"K%K\'L@a%K\'LY@ +53+53265N[LU/(1'8``\ WPJ,0K 1@.Ja"K%K#L +33373#'#KPE`aFwK@"K#L+33KPXK"[@ JIKPX@[%K#L@%K[-K#LY@""##$# +33>32>32#4&#"#4&#"KMR*#%0'+,WT/1>F;/1>F;KLJKPX@[%K#L@%K[-K#LY@ ##+33>32#4&#"KMW.SbP7>9PB%'WT/1>F;. -@*[-K[+L   +".54632'2654&#"1U<#ed||dHHHHGNP !?^;vvtG_ST\\TS_K>!f@ JKPX@[%K[+K'L@ %K[-K[+K'LY@&#+3>32#"&'32654&#"KPX1,M:!|e/M[yKPX@ J@ JYKPX@[-K[+K'L@ %K[-K[+K'LY@$#+5#"&546325354&#"326M3b~e/NNQV;EPLGHK!!ut% ;b*NJ^QLe\KM'@$J[%K#L!#+33>;#"KLP#+$2)E)M  2''@$J[-K[+L+%+#+?32654&/.54632.#"#"&2K @668+3>BLeSW^ I 77080*=NE`^Sk -+%! =>>NR6#0&" E9=NFP[)@&rY%K\#L# +!#"&=#53533#;PJ^CSSQ)*GPUJJ3)ELJKPX@%K[+L@%K#K[+LY@ ##+!5#"&5332653Y.S^P5<9PPF')WT;1>F;$!@J%K#L+333˽URx$ !@ J%K#L+333# #Syxdy{NUTy~$m &@# J%K#L +!'#7'373w^]y{\误>"@ J%K\'L!"++5326?33 H6."2XSID5J(4y2 ,@)JY%KY#L +35!5!!22;QAJNJ>w$3@0Jcc['L$#!,!%!+75326=46;#";#"&=4&#,?QY44..,,,,..44YQ?,J2>cNH':2x>@r'L+3xKn2>$-@*Jcc['L%!,!% +%#"+5326=467.=4&+532;,?QY44..,,,,..44YQ?,2>cNH':2R8,@)cW[O#"#"+#".#"#>3232678DF72. LDF60, GW 2FX 2d4;K1PX@Y%KY'L@]Y%LY+3#3#dkkI _nMa)!*@'  J"K#L+!5.546753.'>7'WorTBKcH 9236 G\Q>95B\ }nk ][QG(86#?S[UE] X ZQ:(9@6J Ia[*KY#L%%+#!!5>54&'#53.54632.#"3'c!1<qX }dbk R >>@I"  /DPP N1  B#L1_leQ 2CF7-N(%5dt#/E@B #J HGcW[O.,(&!-+7'7.5467'7>327'#"&/32654&#"^9uo8q: 9u8s p8p:!!: C::==::C59t:"#;p8q  t8t:""9p8o@; Ja  a"K  # L! +!5#535'#53333#3#reav|BFB`JBHB|x>*@'aY'L+33xKKK@pp633DL@ >1! JK,PX@[*K['L@_[*LY@ %#%"+#"&'732654&/.5467.54632.#"'>54&/p]Zl Q D29C>2SCOC0")lZQnP ;38>6(aJJ@0#'.?33W,A1+(I\RP112(.' GH:P@1D[TN023$'( JF9M=p <,+3 ?/(1 -8=DKPX@Y"L@UYMY@+53353-X`X8^^^^F'C@ A@43JK1PX@%c c _[-L@,cc c W [OY@)(><861/(C)C''  +".54>32'2>54.#"7"&54>32.#"3267K]66]KJ^66^J=jM,,Mj=>jL,+MjFOh2B%?V H)(-==-(*H Y36]JJ^66^JJ]68.Nl=>lO..Ol>=lN.cf\0J2B9+D:8B'7B"/)K&PX@J@JYKPX@c_[*LK&PX@"ccW[O@)pccW[OYY@'%!%#D#+5#"&5463254&#"'>32'.#"32651#132'2654&#"'532#'#7#32654&%0U?%$?U11U?$$?U1OigOOiip..9I0((($>V11V>$$>V11V>$/jPPjjPPjH'%"UMM5 7F1@UYM+#531FD2ox *@'_[*L     +"&54632'2654&#"B``BD``D%77%%55oYIHYYHIYF3))22))3HBc 8@5aaUYM  +%5#53533#!!!HFF323!57>#!#+? NA=I,/^ߚ"# 3>=5+8?>?l$,_H@E  JacW[O +2654&#"'7#5!2#"&'7(,-'  w;ETE3!###2O66O2VPVZ 8K*+K7 P _ 3+$2 @ JK PX@hc\'LK(PX@pc\'L@!pcW\PYY@ +"&'732654&5731< <#()B&.19"( -2-$(&22b MJKPX@rY%L@rUZNY@ +535'733OljIc>=4Q>#V pKPX@[*K[%LKPX@_[*L@cW[OYY@     +"&54632'2654&#"FTTFETRG(**)&,-SOMQQMNT>40/22/04#  I@ JK1PX@%K#L@Y%LY@  +?'337'3%^oZ A&'3+t3+Ak&'3+t3+E&'3+t3+1!eJK&PX@pY%K\'L@p`Y%LY@!!+#53267#"&546?>=9k`'7!$@>CK Qqkik?!/!nnH#-",*.8C/KedPDK *l&$l&$l&$i&$Z&$V&$ 3+ B@?JaaY"KY #L +3!!!!!!'!3  C >o {PNP77*4@*)JK PX@-hf[*K[#K\'LK PX@.pf[*K[#K\'LKPX@/pn[*K[#K\'L@,pn`[*K[#LYYY@.,'% 44 +%267#"&'732654&57.54>32.#"u]cQe".1991< <#($.SvGxQa]9X:yDUG bp ($(&2"( -,SZ/rk CY(Ge=zW1l&(W1l&(W1l&(uW1Z&(l&,Wl&,<+l&,ó Z&, 7@4a["K[#L ! +3#53!2#'32654&+3#WFFyz{y5H+OwHWi&17l&27l&2'7l&27i&27Z&2b[)!  0+?'77'b2122127)6@3'&J[*K[+L)) +".54>32.#"2>54&'}JyU..UyJJyT..TyQK.r9Z> D 0YRP[11[PRY0^9`#s(Gf=3Y"fP{l&8P{l&8 P{l&8P{Z&8l&<W? 4@1cc"K#L   $!+3332+#32654&WVnwvxLCAxnccrE@E>K&=@:!Jc[*K[#L &&+!#532654&+532654&#"#46327::DPTE671?E9BGQwd_l..>GK?=E7H@168K? dl_S1O NLe`6&DC_6&Du6&D[=6&DaM6&DjF6&D_6.5B(K PX@  .JKPX@ .JKPX@  .J@  . JYYYK PX@)  U a [-K [+LKPX@$  a [-K [+LKPX@)  U a [-K [+L@*  a  a [-K [+LYYY@0/@>9632/505"$%#D$" +%#"&'#"&5467>354&#"'>32>32!3267"!."3265jS>fh>K[bS%@ <.37 KcN@Q_._pP>8> 8L BE!332+9TCM;.18HCLA&402$?O2*'zm!NT4"G<9J'"#(69..2@)(JK PX@%hc[-K\'LKPX@&pc[-K\'L@#pc`[-LYY@.-&$  22+"&'732654&57.54>32.#"32671< <#(!Zo#EKJE?9 K NE .19"( -(|t?]>Z<";_ROb;# 7T &$(&2,&HCZ,&Hu,&H[@,&HjQ&CK&u&&[&j*$0[@!J$  HK,PX@[%K[+L@c[+LY@&%,*%0&0+'7.'77#".54>32.'2654&#"\$9eNCM9V81V>$";S14I;(HMPIBTU1, 9 11&Y76X=!$0N `KNX[MK^K&Qai.&RCe.&Ru.&R[L.&Ra\.&Rj\H;B< ;@8aaUYM  +53!!53jjjjnLjj.#6@3! J[-K[+L## +".54>32'.#"2654&'1V>$#>V2d +GTHN , !?^;;\?!vt 7 ]`S!7 E&XCjE&XuE&X[NE&Xj^>&\uK>!=@:J"K[-K[+K'L&#+3>32#"&'32654&#"KPX1,M:!|e/M[&\jER&$  3+6&DpKj&$6&D]E7D@AJIb"K#K['L +".5467'!#332673n,"*IG\l !5! _} $$5X1=K67.;S@P",Jc[-K[+K['L973/)' .. +"&54675#"&5467654&#"'>323267&"3265-C)"M3N[cR%@ <.35 LbOQi-  ;C"341*::>*LL^QLe\W1H&(,&HpSW1j&(,&H]PW1\&(,&H^W7:F@CJ IaY"KY#K['L%& +3!!!!!3267#"&5467W|w!4#  .K+!PNP2=,1$5,6,3G@D  Ja[-K[+K['L.-10-3.3+"&'" +#"&5467#"&54>32!32673267"!.-C !fy#9> F 8K  =/19s;]?!xm!PT3" 4 !4%F97HW1l&(,&H\@7l&*04&J[P7j&*04&J]_7\&*/04&J^7&*S 3+04 '4@'JHKPX@) a[%K[#K['LK1PX@- a%K[-K[#K['L@* a_%K[-K[#LYY@31-+%#  +#54673#"&'7326=#"&5463254&#"326I_+1 KcLwNN(BSO3b}|h1OW;EOJHHLmUL27+ )r_JM 3)@K>""xut&#*NE^QL[WW{l&+H&K[3+;@8  a  a"K #L +3#5353!533##!!5!WFFT|TFFT|DmmmmD /}z;@8 Ja"K[-K #L## +3#53533#>32#4&#"K<9P0>::>%&WT/1>F;i&,&a H&,&p j&,&]7,@) J"K['L+"&546733267-K*V!.  -2$6X0=7_@ JKPX@Y"K%K\'L@a%K\'LY@ +533#3267#"&546F[VP-  -C)8``$/=.1#5S\&,6K@%K#L+33KP$W &,-F>&LMl&-)>&Y[Wd&.S 3+K&NSW1l&/:KL&Ou%3+W1&/S 3+<&OSW1&/K0&OW1 0@-a"KZ#L  +%!37531&V]PPbbK[*@'a"K#L+33753KPe[X``1 ,@) J"KZ#L +%!57371&FFUPP!&O&8YOY &@# J"K#L +355737ZRROSS;R;o:R:Wl&1K&QuW&1S 3+K&QSWl&1K&Q\[K&Q3  3+W>3@0 J I"K#K['L!#++5326=#3TP<7-)pSjyG^SM10=K>X JKPX@[%K#K['L@%K[-K#K['LY@ !%##+4&#"#3>32+53267>9PPMW.SbLU5.1'K1>F;B%'WTWPH-7H&2.&Rp\7j&2.&R]Z7l&2.&Rbof+@ $ #JKPX@5a [*K[*K[#K[#L@1a [*KY"KY#K[+LY@(&5(" +)#".54>32!!!!!3267.#"I6%JyV//VyJ%<Yc >[:96:[> .XUSY/PN=fI((Hf.N")5J@G"Ja [-K [+L+*$#1/*5+5'&#)$)"$&$" +%#"&'#".54632>32!3267"!.2654&#"KjS?[\=1U<#e>]^:_pP>8> 8K  >VHHHHGNPCL3..3!?^;v2002xm!PT4"G97I_ST\\TS_Wdl&5KW&UuuWd&5S 3+<M&USWdl&5x7k&U\ 7Jl&62&Vu7Jl&6v2&V[97*J@@=21JK PX@,hf[*K[+K\'LK PX@-pf[*K[+K\'LKPX@.pn[*K[+K\'L@+pn`[*K[+LYYY@ $%$%-#+?32654&/.54>32.#"#"&'732654&57.7QeLO^9:w`^%B]7o}P QPNX@;0/JK PX@,hf[-K[+K\'LKPX@-pf[-K[+K\'LK(PX@.pn[-K[+K\'L@+pn`[-K[+LYYY@ $%$%+#+?32654&/.54632.#"#"&'732654&57.2K @668+3>BLeSW^ I 77080*=NELK.1991< <#(H\ -+%! =>>NR6#0&" E96K $(&2"( -$F7Jl&62&V\8c&7S 3+P[&WSncl&7WjK1PX@)pY"KY%K\#L@'paY%K\#LY@ #! +3##"&=#53533#;P59gJ^CSSQ)*GPUJJ3)c)@&aY"K#L+#'#535#5!3UO!!HPPP[9@6r  aY%K \#L +!#"&=#535#53533#3#;PJ^CSSSSQ*.CPU<@rIIr@;5'P{i&8E&Xa^P{H&8E&Xp^P{j&8E&X]\P{&8E&X_P{l&8E&XbqP4{&]$JK1PX@"K[+K['L@_"K[+LY@! &&+".5467.53326533267,"&VjXXeV]]!2!  $!4csSSscp3=E7%A@>#J%K[+K\'L  %%+"&54675#"&53326533267-C)"Y.S^P5<9PP-  .1#7A')WT;1>F;$0=l&:D&Z[l&<z>&\[4Z&<6Sl&=2&]u6S\&=2&]^6Sl&=2&]\?7%6@3 Ja[*K[+L! %%&'"+467!.#"'>32#".267!7pjUjO4Mb6-RuG &/McK>&OMW&1-W>&1MK>&QM%P{l&8E&X\N H&6&pW&'=W&'].&G]< l&6&uP7l&.&u7J&6S 3+2&VSc&7S 3+P[&WSnH&<>&\pH> @%K\'L !#++53265LU/(1' WPJ,0.@@=Ja[-K[+L +2#"&5467!.#"'>267!`x}`bq^M:6C IuF9H Cxwwj SR5" EKUF96I(`8JK1PX@ s"L@ riY@ +#'#7lLPPLlQQ*^0JK1PX@ s"L@ riY+#'373`jLNNLPP1= )@&rW[O   +"&'332673CAB#"C?G5&&5G(85KPX@ Y"L@UYMY@ +53([8``!  tK PX@cW[OKPX@_[*L@cW[OYY@     +"&54632'2654&#"(99((99( 4++44++4277EJK PX@f\'L@r\'LY@  +"&546733267-C2G/ .1$64=("ALKPX@`["L@Wc\PY@####+54632326=3#".#"(()! =(%" " .;.7 (~4K1PX@ Y"L@UYMY+3#73#\lJ`Lzu(n@UYM+53([``(.Eg 0+!!5%5!!' b5MQ QMK>0+332653#5#"&'KP5<9PPKY.31>F;$F') 0+3#5!#;#"&5#dFL#%><KK2L@NoW1l&(W1Z&(=@: JcYK[L#$! +!532654&#"##5!!>32#&KNWT+V VW+z$?X3N7#".54>32Qa]c{ 6zf.F2 PxGvS..TvGw?\vqLty*8 az+WYVW-t7J6W, Z&,--'4@1cYK[L #!' '!'$! +7>45!32#!!+5326%#32654&xvwnS]-#,;pNAC'n{;jkcnX.nja!jfP5>E@EW>@; caK\ L$! +33!332#!!#32654&WVdVxvwngNAC)jkcn/W>E@E=@: JcYKL +"##5!!>32#54&3U(V#[6wsVDU XPP enLIWdl&.Wl&\b&zWqy MK PX@gKZL@sKZLY@ +##5#3!yTVvXX$WI 6@3cYK[L   !+3!!32##32654&WuownNCEPgccdC;>@;WK%W@YKL+3!!WP q3@0QYKYL +53>7>5!3#5!!! A /ZT ]sJNwߏ?n,!MPOW1(6@3JaK L +!##33333##]mi`V`im]0YO((0:O(D@A Jc[K[L$"!((+"'>32#"&'732654&+532654&SOaQoj847@ts Q bTSXHKccI@PdPBdm`a9M IEaili HLD>5:K<36?W $@!JKL +!#331bTqiG?XWb&Wd.i!@YK[L!'+7>5!#!+5326VS]-#,;'n{;XX.nja!jfP5W0W{+72Ws!@YKL+3!#!WVXXWI37&c7\"@ JK\L!"+%+5326733h!SMD>,6aӿZHHO$( Q2 $/KPX@  ccK LK PX@  ccY L@%U ccY MYY@,+*)!  +5".54>7532#4.#2>%3u@uY55XuASAuX44Yu@'AX01XA&(BX/1XA'QBkKJjC LL DjJKkBQh9O/i/N89N//Nm;Wq )@&sKZL +3#5!3!yZTVvߏX</)@& JcKL#"+32673##"&=3DT1V(VV#Z6wsVLI >X enW %@"KZL +33!3!3WVVVXXXWq-@*sKZL +33!3!33#5WVVVZTXXߏ 6@3cYK[L   $!+5!32#!2654&+xvwn NACLXPjkcnX>E@EW 4@1cK\L   $! +332#)3%2654&+WVxvwnNV_NACLjkcnXO>E@EWI *@'cK\L   $!+332#!%2654&+WVxvwn NACLjkcnO>E@E74@1Ja[K[L$%"#+?3267!5!.#"'>32#"&7Qi[ht7peWjPmvBYytLstUEhrqW"sKPX@!a[K [L@)aK[KK [LY@""  +"&'##33>32'2654&#"h ~VV~ IwT--TwIq{{qqxx ԏ1[PRY0Oz{{z(B2@/Ja[KL&+!#+#.5463!";BVgJIwnKDCL iNcnOAB@E6D8)R@ JHK PX@[K[L@c[LY@$"))"+%#"&=4>7>7>322654&#"zdh'Fb9.N! #Z&Yi_3bmKEJBA]RndWsG" M  _r+,zcKNQI;\^K C@@Jc[K[L   ! +332##32654&#32654&KNU(+%MU ((&#.')B?: 9*=I!""!Ǎ$!%#K@YKL+3!#K<Jnz+@(QYKYL+73>7>5!3#5!#3#2"RMNNJK+*=V;nІO*?HEg,H6@3JaK L +!5##7'3353373#'#CAb^|HLH}]aA*(D@A&%Jc[K[L#! ((+72654&+532654&#"'>32#"&'79<.9MT.)147? KnPU]%%%1kZYi L>;,"#'A' *0+HIK;#9 6-ENMH '5K @ JKL+3#33#VMXMu$wK&T_ 3+K -@*JaKL +33373#'#KPQ]`O!@YK[L!'+7>5!##+5326rQP@E%$ QUQ$B?:_FJ.Kv '@$ JKL +333##KvrNSr${zK '@$aKL +33353#5#KPPP$.RK!@YKL+3!##KP$nK>S.F!@YKL+5!##PJJn>\.>%2?M@JJ K [K [KL53(&;73?5?.*&2(2%%8#A +23"##5"&#.54>7:75"&#263>54&23"# 1WA%&AY3 O 3YA&'B[3f  HVY  B\V8X<=\= <[=>X:TTTQWQTTU[Kz( )@&RKZL +3#5!33MNqPnІn2/@,JcKL##+!5#"&=3326753X;!Y_P=41P IN1* $K %@"KZL +!3333PP$nnKz-@*RKZL +3#5!3333MNPPnІnn, 0@-cYK[L  $!+332+##32654&|TVSYʝi|{6'&ܤOHKV1'((KV<@9 cK\L  +!3!332#7#32654&PP|SUSW|{6'&$ܤOHKV1'((K 0@-cK\L    !+3332#7#32654&KP|TVSY|{6'&ܤOHKV1'((*4@1Ja[K[L$%"#+?3267#53.#"'>32#"&*K A=?ED><> HlRcwxdZk )6JEDDM9&DQ{}yQKnKPX@!a[K [L@)aK[KK [LY@$" +333>32#"&'#%2654&#"KPd |\d||d\~ cFHHHHGNPdlvtsh=_ST\\TS_* 2@/ Ja[KL"+46;#5##7.35#"5aNPkt]854&#"##53533#>8T^3J/$"3 :=9PPPPNY}`N"H32I :>=NM>?9 KeZ1T<"$>S/]aP"Z2VFL ZKPX@YKKL@aKLY@   +533533X`XP8^^^^$>M'4@1cYK[L #!' '!'$! +7>5!32+#+5326%#32654&rHtTVSY­AD%# ts6'&QUQOHKVB?:_FJ.x1'((K>@; caK\ L$! +3335332+5#%#32654&KPPuTVSYut6'&äOHKV1'((;@8 JaK[K L## +3#53533#>32#4&#"KPPNV-SbP7>9P0@88@%&WT/1>F;K&uK&Co>&\TFKz MK PX@gKZL@sKZLY@ +##5#33ۡNP$n >@;ra c\ L! +3#5353!!32##32654&U1ϹuorsNCE LaaL_kcdC;>@;":@7 cKYK\L$! +3533#32+##32654&O}O[YSʝi}|2..JlDNMG%'($7!>@;a[K[L!!  +".54>32"!.267!}JyU..UyJJyT..TyJh~  }hk}~ 0YRP[11[PRY0pii܅mm. >@;a[K[L   +".54632"!.267!1U<#ed||d@O(JAAJQ !?^;vvtKGGKNHHN!@J[KL!"+>;#"#36;( Z[?63P!@J[KL!$+#3>;#"UUu+-$hw2/(JW *GK PX@fYKL@rYKLY@ +3!53!WcPK:GK PX@fYKL@rYKLY@ +3353#KJ^n -@*aYKL +3#53!!3#WFFHAPH  -@*aYKL +35#535!#3#KAA<@J@Wq|6@3Ja]KL +33333#5##WViPT0}(ߏ0Kz6@3Ja]KL +333733#5#'#KPQ]}GN$OІWq_K PX@!gaKZL@ saKZLY@ +33!33#5#!WVxVZT\)ߏ/Kz60@-a]KL +333533#5#5#KPPMNOnІ<>@JKL+333#URP&/@,JaKL+!5#53333#!eaHKH>+@( JKZKL+!##5#53333NkURh?xcWJ)@& JcKL#"+%4&#"#3>32#DT3T(VV#Z6wsVLI  enKK7>.Z7.WY&1d 3+Kn&Qd7YJ&6d 3+2n&Vdl&:D&ZCl&:&Zu5Z&:h&ZjW1i&(,&HaPl&<>&\CQ_0,~@UYM+!5!,30N23@UYM+%!5!3N2s3@UYM+%!5!sANP $@!HUYM +#5467mB3 "&#n<95" A @GY"L +53'>=TmB3 "&:n<95" Aqn @GY#L +353'>=TmB3 "&n<95" Pz 3@0HUYM   +#5467##5467gmB3 "&vlB3 "&#n<95" n<95" Ak +@(GY"L   +53'>=353'>=TmB3 "&vlB3 "&:n<95" n<95" Aqkn +@(GY#L   +353'>=353'>=TmB3 "&vlB3 "&n<95" n<95" < MK1PX@a"K#L@UaYMY@ +#53533#ܠL FFC<eK1PX@ a a"K  # L@% Ua a Y   MY@ +5#535#53533#3#ܠL FFFFB @[%L  +7"&54632-@@-.@@@..@@..@Cfn&'( '3?KKPX@1 c    d[*K  [#L@9 c    d"K[*K#K  [+LY@7A@54)(GE@KAK;94?5?/-(3)3#!''   +"&54632#32654&#""&54632!"&54632%2654&#"!2654&#"H]]HIYYKKA)11)(55XH]]HIYY6H]]HIYY8)11)(55)11)(55H^ZW[[WZ^:;8989;:l^ZW[[WZ^^ZW[[WZ^B:;8989;::;8989;: 0JK1PX@ %K#L@ Y%LY+3#'[Z#  8JK1PX@ %K#L@ Y%LY@ +?'3#[ z?@"K#L++3H>>(h uK PX@cW[OKPX@c[%L@cW[OYY@     +"&54632'2654&#"NRRNPPPP----,..^][``[]^=>@A==A@>+l Z JKPX@rgUZN@rsUZNY@ +#5#5733#'35=@ҳ_//ԔPG::4]D@AJacW[O +"&'732654&#"'73#>32

32'"32654&MQUK6J @ %,45#=LOB"0,$%+*Z\c],3 =<999A4V*@'JsUYM+#5!_"+AL2c#/A@> JccW[O%$+)$/%/##*"+#"&5467.54632'2654&#""32654&cSFGQ#OCFK#)&&)&))&(-,)**+7866* '1863& )I3.^$G@D JccW[O $$ +"&'73267#"&54632'2654&#"3N > ,1,1%32

;#"##15D P(+$2)Q PE% M  F>Q:4J@G$#J I  a a[*KY#L430/.-%%D +%#!!5>5<5#53.'#53.54632.#"3#3'c!1>@I/DPP N1B"B!_leQ 2CF7#B!#S1O@L+* Ja  a[*K [ + L11/-(&%" +753&45<7#53>32.#"3!!#3267#"&'#JJQh]tLGCDRREFJ H wbhB   By{\[ 4EVSB   BRZF4 Wb}zMO=I@F= Ja   a[*K [+L;94321%%" +%#"&5467#53>7>7!5!>54&#"'>763#!!32671 x]ct @2l ><=O Mua[q A 6 J7546323>54&#"^9TJ+";G9;=.?#--Z+2KKH]G:'BMF>$MICt1'ڴ(l&#(W !% @ $" 0+"&54632##332654&#"!5!?:VW;32!3267"!5."nI^74[JExX3%}OWLy%#t]m2]SN~X0.RsD7:BNE=619?m& 'u3+t3+Tl&' 3+t3+7~&'3+t3+Hv&'3+t3+Hx&'3+t3+d_&0'W3+t3+Zu 0+!!Z2@3[2J3W 0+!'3'k2>3@23u 0+!'7'7!@23a2>3W 0+!737q2J32@3M 0+!!#5BHMHB5YM  0+7!5!#Y/HBGH/`SAc&a 0+73!5!c5G/aR,5@T`/H&a 0+7'3!/G5AR&/5BH(0+!5!HH` W3d0+!!W$dL<+7 1,( 0+#"&'#".54632>3232>7.#"%"32654&)=&1.AaC-0 ">--1+$75((2R8/# 0+232673#".#"#>232673#".#"#>41. LH?50.$LJB41. JP7"6.+$LJ BFBH EC!BHU5@ 0+?#537#5!733#3!DqUJQJwUDyHHHHyU 5T  0+%%5%!!5 ^> VpVLU 5T  0+7%5%!!U > VpVL''2V@S-,+Jp c bW[O(((2(210/.*)''  +2#".54>"32>54.53'733Rc88cRRc88cREtR//RtEEtR//Rt~s$Qm8cRQd88dQRc880UvEDvU11UvDEvU0FB:ZF''@P@M=/.J ccaW[O<;:931,*''  +2#".54>"32>54.4&#"'>323!57>Rc88cRRc88cREtR//RtEEtR//Rt,&*1 K XNJU69x%&8cRQd88dQRc880UvEDvU11UvDEvU0 &.$9OK=4C&PFL,''Dd@aA < ;/.J  c a  ccW[OCB@?>=9731,*''  +2#".54>"32>54.#"&'732654&#"'7#5!6Rc88cRRc88cREtR//RtEEtR//Rtr^THcL 80.321!AIW8cRQd88dQRc880UvEDvU11UvDEvU0hDL=?"$)" ;wBNh:''255,JK PX@3ph  c bW[O@4pp  c bW[OY@43210/.-+*)(''  +2#".54>"32>54.#5#533#'35Rc88cRRc88cREtR//RtEEtR//Rt,LhBB8cRQd88dQRc880UvEDvU11UvDEvU0_K DD''Ff@c> 98,+J  c a  c cW[O)(B@=<;:640.(F)F''  +2#".54>"32>54."&'732654&#"'7!#>32Rc88cRRc88cREtR//RtEEtR//RtAEd N 6'.10-.M 8"?Z]8cRQd88dQRc880UvEDvU11UvDEvU0;A !"'%%( Fn DIEP''@Li@f218J  cc  c  cW[OBA)(HFALBL<:64/-(@)@'' +2#".54>"32>54."&54632.#">32'"32654&Rc88cRRc88cREtR//RtEEtR//RtF\_jWAWL -&5A@,D[^R+95.,718cRQd88dQRc880UvEDvU11UvDEvU0lnvt59FKEEDN%"$&&%"$''.Q@N-J pcaW[O(((.(.,+*)''  +2#".54>"32>54.!5!Rc88cRRc88cREtR//RtEEtR//Rt\8cRQd88dQRc880UvEDvU11UvDEvU0lHQ''?KWj@g:.J  c  c c  cW[OMLA@)(SQLWMWGE@KAK53(?)?'' +2#".54>"32>54.2#"&5467.546"32654&"32654&Rc88cRRc88cREtR//RtEEtR//RtDYT%")[XY_'""^R.44..00.3782.778cRQd88dQRc880UvEDvU11UvDEvU0[C8%. .(;LJ<(/ 4 9CF " "''@Li@f821J  c   c ccW[OBA)(HFALBL<:64/-(@)@'' +2#".54>"32>54.2#"&'73265#"&5462654&#"Rc88cRRc88cREtR//RtEEtR//RtB\_jWAWK .&5A@,D[^Q+:7-,608cRQd88dQRc880UvEDvU11UvDEvU0\lnvt59FKEEDN"%#'&%"$'';BN@?> JK&PX@.  c   c cW[O@4  c   ca cW[OY@'DC)(JHCNDNBA=<31(;);'' +2#".54>"32>54.2#".54>#'732654&#"Rc88cRRc88cPEsR./RtEEtR//Tt2$$22$$2D="bA##""8cRQd88dQRc880UvEDvU11UvDEvU0`2XBBX22XBBX2Fe%2BA\\AA\\A''3?R@O cc  cW[O54)(;94?5?/-(3)3''  +2#".54>"32>54."&54632'2654&#"Rc88cRRc88cREtR//RtEEtR//RtE]ee]^dd^8<<86>>8cRQd88dQRc880UvEDvU11UvDEvU0tnmuumntHJPQIIQPJ'+jK1PX@c_[-L@$ccW[OY@! '% +!+  +2#".54>2654&#"7"&54632Rc88cRRc88cR^dd^]ee]6>>68<<8cRQd88dQRc8tnmuumntHJPQIIQPJd+0+!%!!dfm%,d+ 0+7#!!3!!GH+:m-9%/n1}?60+7#6GH+%/n' 0+2#".54>!5##7#Rc88cRRc88cA7mQ$s~8cRQd88dQRc8FnZ:B'," 0+2#".54>!5#7>54&#">32Rc88cRRc88c&%Sx96UJNX K 1*&,8cRQd88dQRc8,LFP&C4=KO9$.&'0- 0+2#".54>4&75!3>32#"&'326Rc88cRRc88c WI!123.08 LcHT^8cRQd88dQRc80=:hNBw; ")$"?=L'!  0+2#".54>535##3'7Rc88cRRc88cBBh8cRQd88dQRc8_DK_'2  0+2#".54>2654&#"735!>32#"&'Rc88cRRc88cVP]Z?"8 M.-01.'6 N d8cRQd88dQRc8PEID nF (%%'"! A;',8 2-& 0+2#".54>2654&#"46327.#"72#"&546Rc88cRRc88cQQ^[D,@A5&- LWAWj_[117,.598cRQd88dQRc8NDEEKF95tvnl$"#('#"%' 0+2#".54>35!!Rc88cRRc88c$[ 8cRQd88dQRc8cQH'+7C @ =81, 0+2#".54>"32654&'>54&2#"&546"&54632Rc88cRRc88cSQ^""'_YX[)"%TX.00..44.2873.778cRQd88dQRc8C9 4 /("3267#"&'32654&"&54632Rc88cRRc88cUQ^[D,@A5&. KWAWj_\106,-7:8cRQd88dQRc8NDEEKF95tvnl$"%&'#%"''.: @ 4/)( 0+2#".54>"32>54.#7%"&54632Rc88cRRc88c2$$22$$2Ab"=""##8cRQd88dQRc82XBBX22XBBX2FB2%=A\\AA\\A#>>0+#=R592>M0+33R86P>  0+!#3'3#P>><>x  0+!53#5#3xppHHn>>>i '*@'J[*KY#L('+!53.'4>323!5>54&#"/F.5>_+1 UL27+ (F CKPX@_L@rW[OY@   +"&'332673IFB%%%"CDG9!%%!9G22%/;cky[A,~ztlhd_K82*&" 0+#"&54632.#"32674632#"&'#5353'4&#"32632654&/.54632.#"#"&'%3##5#732#'##%3##5##'##73''2654&+4632#"&'3#3##%3#"&=33265'#5353732+%4&#"3262654&+32#'##7'373#'2654&+.! %&!*(!!''!!(RTj "! K88:&#'78D;q'p( "&&" (iVSSQT'9$$%%7%:&#'<0/<z'A)$%)" )$**$$))'~~K!!!!   o<99**[JJ :$))$%((p4?[[[;~~'$$'K !!t+<999]II[;K  :(  0+73#5!#3!(fPPPPWpl&&<b 0+533533N.NVmmmm XFLK>  @  0+3#%3#3+53265`lNE`lNPTP<5-.$^SK30 0+533533J4JP2jjjj$0+ # # ]\XYA* ("0+74>32#"&32654&#"32654&+A"=T1\o:7;CweltP~CPD:>US=?NVJ} 4Q5eQ5MQE]npvS;51ALMED>B@5'0+%'.546?>54&#"'>323267 oUTgGE=6/3*2? KhNQ[OC<5)?-3I HJGB7> "&.%BDM9;= !"$.,04J 0+!5##7'333373#'#CAb^|HLH}]aAp4(%0+732654&+532654&#"'>32#"&O H4?KJ>]^8E?41LKtQVj568=z_Xp1 .3C;7CG>35?0/HLaT4QP@]hPEXE&XT]3+KN0+# #(TR$tKQKPDz-0+!5#"&53326533#5Y.S^P5<9PPONF')WT;1>F;nІ20+#5#"&=3326=PI)N\P336F$WT0<91D"0+#5#"&'#"&53326533265MR*#%0'+,WT;1>F;1>F;Dzc&0+3#5#5#"&'#"&53326533265MNLR*#%0'+,WT;1>F;1>F;< 0+%#"&=#53>3232654&#"32#"&732654&#"EPH(#B1jZZhPE-6?@5,F.,C,VmgN69D91:12.*$0+%#"&54>7'.546;#"2654&#"xdc}2B###*B<*n-JFGJBEMMn~|p1L7 4!29J!A^YLLUULLYdc̰3+!0+#53267#"&546?>=?k`'7!$@>CK Qqkik?!/!nnH#-"/*.;C/KegPDN *n:dd3+#n :dd3+n:mdd3+#n:{dd3+20\~KK3+20~KK3+20s~KK3+<4#'#0+4>7.74>7.<&AY2((I7!oU'4X?#&AY2((I7!oU'4X?#Ov`%5 Uh}GG5%cyOOv`%5 Uh}GG5%cyP47'#0+'>54&'7'>54&'77&AY2((I7!oU'4X?#&AY2((I7!oU'4X?# Ov`%5 Uh}GG5%cyOOv`%5 Uh}GG5%cy<\0+4>7.<&BZ2,)J8"qW+4X@$UOmY%9 M^uGG9%^rPp0+'>54&'7p&BZ2,)J8"qW+4X@$HOmY%9 M^uGG9%^rP60+3#3P昘fjH&H<"0+3#53#<Hw$0+5326=46;#";#"&=4&#,?QY44..,,,,..44YQ?,)J2>pcNH':x22$0+#"+5326=467.=4&+532;,?QY44..,,,,..44YQ?,)2>ncNH':v2<#'#0+4>7.74>7.<&AY2((I7!oU'4X?#&AY2((I7!oU'4X?#SOnZ%5 NawGG5%]qOOnZ%5 NawGG5%]qP7'#0+'>54&'7'>54&'77&AY2((I7!oU'4X?#&AY2((I7!oU'4X?#JOnZ%5 NawGG5%]qOOnZ%5 NawGG5%]q#>0+#=RIM2M0+33RfLJP  0+!#3'3#P>><x  0+!53#5#3xppHH>>>20+32Ofj20+#3ONfjx0+3xKfjx0+33xKKK||<:#dd3+Fk((3+<b  0+"&54632.#"2654&'O 6"d\e[9 ^9`"i=b#O2X  0+"&54632'2654&#"EeXXedYY L2X  0+"&54632.#"2654&'E <%d\e[4 ^?e#h8\"SDe  0+73'733!f'hP{DPCE2J5j  0+!#5!533#%!R[tffv8iFLLm>H:E<:0+3!5!gNXPmHF#/ )$0+%#"&5467.54632'2654&#""32654&Fuy@60:tzz843BPPMTQOIWQZWTPZU_ke]@MM7[fcT>LM=;3??58>F@:KV&u 3+*&uK&u*&u"-K1PX@ Y"L@UYMY+3#@P59l@ri+3#xclQl7l@ri+#'ZQll!l@UYM+3#%3#|bkRh~Wl2xl@Jri+#'#7sVMMVslPP]l@Jri+#'373`sVMMVPP$7j )@&rW[O   +"&'332673GBB!#" CAK5''5K*Gi,@)Wc\P####+54632326=3#".#"*-%!  <*'!  /8 .: 2GH@UYM+!5!GD#3Z*@'UYM+53353#X`X^^^^z\@UYM+53]bb% 1@.cW[O     +"&54632'2654&#"2DD23CC3 !!@33>>33@6$""$%cb @rW[O""+332673#"&%G'//(GMQQMb ++ ?II&J O ;_<g C      6 k v  = xp >'  <S < Copyright (c) 2018 LLC Contrast Foundry (LLC CoFo). All rights reserved. Copyright (c) 2018 LLC Contrast Foundry (LLC CoFo). All rights reserved.CoFo SansCoFo SansRegularRegular1.001;COFO;CoFoSans-Regular1.001;COFO;CoFoSans-RegularCoFo SansCoFo SansVersion 1.001;PS 1.002;hotconv 16.6.54;makeotf.lib2.5.65590Version 1.001;PS 1.002;hotconv 16.6.54;makeotf.lib2.5.65590CoFoSans-RegularCoFoSans-RegularCoFo Sans is a trademark of LLC Contrast Foundry (LLC CoFo).CoFo Sans is a trademark of LLC Contrast Foundry (LLC CoFo).LLC Contrast Foundry (LLC CoFo)LLC Contrast Foundry (LLC CoFo)Designer: Maria Doreuli. Team: Irina Smirnova, Elizaveta RasskazovaDesigner: Maria Doreuli. Team: Irina Smirnova, Elizaveta Rasskazovahttp://www.contrastfoundry.comhttp://www.contrastfoundry.comhttp://www.contrastfoundry.comhttp://www.contrastfoundry.com  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjikmlnoqprsutvwxzy{}|~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~uni0000uni00A0uni00B2uni00B3uni00B9AmacronamacronAbreveabreveAogonekaogonek Ccircumflex ccircumflex Cdotaccent cdotaccentDcarondcaronDcroatEmacronemacronEbreveebreve Edotaccent edotaccentEogonekeogonekEcaronecaron Gcircumflex gcircumflex Gdotaccent gdotaccent Gcommaaccent gcommaaccent Hcircumflex hcircumflexHbarhbarItildeitildeImacronimacronIbreveibreveIogonekiogonekIJij Jcircumflex jcircumflex Kcommaaccent kcommaaccentLacutelacute Lcommaaccent lcommaaccentLcaronlcaronLdotldotNacutenacute Ncommaaccent ncommaaccentNcaronncaron napostropheEngengOmacronomacronObreveobreve Ohungarumlaut ohungarumlautRacuteracute Rcommaaccent rcommaaccentRcaronrcaronSacutesacute Scircumflex scircumflexuni0162uni0163TcarontcaronTbartbarUtildeutildeUmacronumacronUbreveubreveUringuring Uhungarumlaut uhungarumlautUogonekuogonek Wcircumflex wcircumflex Ycircumflex ycircumflexZacutezacute Zdotaccent zdotaccentuni018Funi01C4uni01C5uni01C6uni01C7uni01C8uni01C9uni01CAuni01CBuni01CCuni01D3uni01D4uni01E2uni01E3uni01F1uni01F2uni01F3AEacuteaeacute Oslashacute oslashacute Scommaaccent scommaaccentuni021Auni021Buni0232uni0233uni0237uni0259 acutecomb dotbelowcmbuni0394Sigmauni03BCuni0400uni0401uni0402uni0403uni0404uni0405uni0406uni0407uni0408uni0409uni040Auni040Buni040Cuni040Duni040Euni040Funi0410uni0411uni0412uni0413uni0414uni0415uni0416uni0417uni0418uni0419uni041Auni041Buni041Cuni041Duni041Euni041Funi0420uni0421uni0422uni0423uni0424uni0425uni0426uni0427uni0428uni0429uni042Auni042Buni042Cuni042Duni042Euni042Funi0430uni0431uni0432uni0433uni0434uni0435uni0436uni0437uni0438uni0439uni043Auni043Buni043Cuni043Duni043Euni043Funi0440uni0441uni0442uni0443uni0444uni0445uni0446uni0447uni0448uni0449uni044Auni044Buni044Cuni044Duni044Euni044Funi0450uni0451uni0452uni0453uni0454uni0455uni0456uni0457uni0458uni0459uni045Auni045Buni045Cuni045Duni045Euni045Funi0462uni0463uni0472uni0473uni0474uni0475uni0490uni0491uni0492uni0493uni049Auni049Buni04A2uni04A3uni04AEuni04AFuni04B0uni04B1uni04BAuni04BBuni04D8uni04D9uni04E8uni04E9uni1E46uni1E47uni1E62uni1E63WgravewgraveWacutewacute Wdieresis wdieresisuni1EBCuni1EBDYgraveygraveuni2004uni2007uni2009uni200Auni200Buni2012uni2070uni2074uni2075uni2076uni2077uni2078uni2079uni2080uni2081uni2082uni2083uni2084uni2085uni2086uni2087uni2088uni2089liraEurouni20B4uni20B8uni20BDuni2113uni2116 estimateduni2153uni2154 oneeighth threeeighths fiveeighths seveneighths arrowleftarrowup arrowright arrowdownuni2196uni2197uni2198uni2199uni2206uni2460uni2461uni2462uni2463uni2464uni2465uni2466uni2467uni2468uni2469uni24EAuni24FFuni2610uni2611uni2713uni2776uni2777uni2778uni2779uni277Auni277Buni277Cuni277Duni277Euni277Funi3008uni3009uni301Auni301BuniA7B6uniF6C3uniF6D4uniF8FFCRI.altuni00CD00A40301 uni0407.alti.TRKuni00ED006A0301 uni0457.alt uni041B.BUL uni0432.BUL uni0433.BUL uni0434.BUL uni0436.BUL uni0437.BUL uni0438.BUL uni0439.BUL uni043A.BUL uni043B.BUL uni043F.BUL uni0442.BUL uni0446.BUL uni0447.BUL uni0448.BUL uni0449.BUL uni044A.BUL uni044C.BUL uni0431.SRBexclamdown.capquestiondown.capguilsinglleft.capguilsinglright.capguillemotleft.capguillemotright.cap hyphen.cap endash.cap emdash.cap dblparenleft dblparenright parenleft.capparenright.capbracketleft.capbracketright.cap braceleft.capbraceright.capdblparenleft.capdblparenright.cap uni3008.cap uni3009.cap uni301A.cap uni301B.cap slash.cap backslash.capbar.cap brokenbar.capat.capcopyright.pnum_lnum zero.zerozero.tnum_lnumzero.tnum_lnum_zero one.tnum_lnum two.tnum_lnumthree.tnum_lnumfour.tnum_lnumfive.tnum_lnum six.tnum_lnumseven.tnum_lnumeight.tnum_lnumnine.tnum_lnum zero.dnomone.dnomtwo.dnom three.dnom four.dnom five.dnomsix.dnom seven.dnom eight.dnom nine.dnom zero.numrone.numrtwo.numr three.numr four.numr five.numrsix.numr seven.numr eight.numr nine.numr uni04100301 uni04150301 uni04180301 uni041E0301 uni04230301 uni042B0301 uni042D0301 uni042E0301 uni042F0301 uni04300301 uni04350301 uni04380301 uni043E0301 uni04430301 uni044B0301 uni044D0301 uni044E0301 uni044F0301 caron.alt acute.cap grave.caphungarumlaut.capcircumflex.cap caron.cap breve.cap tilde.cap macron.cap dieresis.cap dotaccent.capring.capCyrbreve jkklnoop%&)*45=>CDLMWXXYZ[[\ bTDFLTcyrl6latn BGR .SRB N    .AZE .CRT .DEU .MOL LNLD lROM tTRK       aaltncaltvcase|ccmpcrcydligfraclnumloclloclloclloclloclloclsinfss01supstnum  BJRZbjrz "*2:BJhpx>@D$<<$V  L  D v     V  2  n0  P# $$$$%%"%@%^%|%%%%%%V{|W}~ZptuqSTUVY]o^_`abcdefghijklmn\wxrsV #,>?@CL^_`chjkmpu{!"[\]^abpNOPQTyz, /v gedff  gedffSTUV!"STUV!"6",-MX-[M,LL*]^_`abcdefghijklmn (2<FPZdnx"" (2<FPZdnx &0:DNXblv  &0:DNXblv $.8BLV`jt $.8BLV`jt",6@JT^h",6@JT^h *4>HR\ *4>HR\(2<FP(2<FP&0:D&0:D$.8$.8",",  $4styy  6Lstyy styy "8Ndstyy styy styy $:Pf|styy styy styy styy &<Rh~styy styy styy styy styy (>Tjstyy styy styy styy styy styy  *@Vlstyy styy styy styy styy styy styy " ,BXnstyy styy styy styy styy styy styy styy $ .DZpstyy styy styy styy styy styy styy styy styy  T'{|v}~ptuqwxrs' #>?@C^_`chjkmpu{[\]^abNOPQTyz  F yst   yst   yst     F         st yy  $   70t "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz= =|= =|= = |= =|== ==|=L =L|< <|< <|< < |< <|<< <<|<K <K|; ;|; ;|; ; |; ;|;; ;;|;J ;J|: :|: :|: :|: :|:: ::|:I :I|9 9|9 9|9 9|9 9|99 99|9H 9H|8 8|8 8|8 8|8 8|88 88|8G 8G|7 7|7 7|7t 7t|7 7|77 77|7F 7F|6 6|6 6|6s 6s|6 6|66 66|6E 6E|5 5|5 5|5y 5y|5 5 |55 55|5D 5D|o5 o5|oU oU|k& k&|kF kF| (!'A&l "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz "*2L@L~L@L~L @L ~L@L~L=@L=~LL@LL~K@K~K@K~K @K ~K@K~K<@K<~KK@KK~J@J~J@J~J @J ~J@J~J;@J;~JJ@JJ~I@I~I@I~I@I~I@I~I:@I:~II@II~H@H~H@H~H@H~H@H~H9@H9~HH@HH~G@G~G@G~G@G~G@G~G8@G8~GG@GG~F@F~F@F~Ft@Ft~F@F~F7@F7~FF@FF~E@E~E@E~Es@Es~E@E~E6@E6~EE@EE~D@D~D@D~Dy@Dy~D @D ~D5@D5~DD@DD~)t "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz= =|= =|= = |= =|== ==|=L =L|< <|< <|< < |< <|<< <<|<K <K|; ;|; ;|; ; |; ;|;; ;;|;J ;J|: :|: :|: :|: :|:: ::|:I :I|9 9|9 9|9 9|9 9|99 99|9H 9H|8 8|8 8|8 8|8 8|88 88|8G 8G|7 7|7 7|7t 7t|7 7|77 77|7F 7F|6 6|6 6|6s 6s|6 6|66 66|6E 6E|5 5|5 5|5y 5y|5 5 |55 55|5D 5D|o5 o5|oU oU|k& k&|kF kF|l "*2:BJRZbjrz "*2:BJRZbjrz "*2:BJRZbjrz "*2L@L~L@L~L @L ~L@L~L=@L=~LL@LL~K@K~K@K~K @K ~K@K~K<@K<~KK@KK~J@J~J@J~J @J ~J@J~J;@J;~JJ@JJ~I@I~I@I~I@I~I@I~I:@I:~II@II~H@H~H@H~H@H~H@H~H9@H9~HH@HH~G@G~G@G~G@G~G@G~G8@G8~GG@GG~F@F~F@F~Ft@Ft~F@F~F7@F7~FF@FF~E@E~E@E~Es@Es~E@E~E6@E6~EE@EE~D@D~D@D~Dy@Dy~D @D ~D5@D5~DD@DD~ >A{}*4>HR\fpzccccccccccccccccccy~,O,O\\pppppYpY+, yst      WY\,, pp   xDFLTcyrl"latn<BGR SRB (AZE (CRT (DEU (MOL (ROM (TRK (cpspkernv~     !#%')+-/13578:<>?BEHJLOQSUWijklmnopqrstuvwxyz{|}~X]  J"4Bhhn8V,N2`@z X^NN2N<n| ( Bn x   . . . 4 . . ^ h n x  . n B P  . .222 ^ l ~h    " @ . . .99;Y[Y   }<8I9;~ 9?Y|d||~ "9?| |~9|~ "9d}9|~ 9;|~ |9;[9;?|~ [| ";|~)(> 54?! =% #[w7F-(-  | (67-2  #9IYw| (9?BY ("22<2(2(- " #I  #Y99;9IY9[EKNOD(2(2YIM<PQSUW2YZ 4=GI2M<PQSUW2  =GHFGHJRTX)(> 54?!  (*,.02=AINR "q}|~q| q}|~|~ "mm?f|~~~~ "q}_fo| q}|~n^_`jo|m bf #^_`jo"  <"2? (2}~~p(~"-"22(9Y IY\bf^bf^`j9  9 q}t9}t9; "#%)379:;<=?IY[\cdegw!#%35678:<?LUWXklnqrstuyz|W\]^_fghoq{}w    <<2# n   o t   ~  (      2   = A2 y   #fbf!?$ aa @AGBCJJDEFJJGGHIKLMNO PQR]STUVWX]YYZQ[\^=_>` d@@@@@@BABBBBJJJJGJGGGGGGLLLLNPPPPPPSRSSSSVVVVYZZZZZZ`Q`@P@P@PARARARARG]G]BSBSBSBSBSCTCTCTCTJUJUJVJVJVJVJDWDWEXF]F]F]F]JYJYJYUJYGZGZGZBSH[H[H[I\I\I\I\K^K^K^LLLLLLM_N`NOOOGODWWDWWLBSOBSGZI\K^N`WZkk%lj&qq'()mqrqi*tlpkmtqqmqqqnq+jlr,-pqqpoqonnqu.~}xyyzzw~z4}}{{zzxx5~w67{{vy89nz:l;l~myp}ss<vnznzJYI\M_M_M_BSN`bbghghfdDqVWi01y2y3vv}}||/eeccc" ikqnrqnnquxzzzP[*F*;6DKSVUH:?>QJ=O45%8Lr  G r&rr   ABRMsI  r         rr &rrrrrr r               %%% r     &tt t'htt\t tt(ttttYtW.ttttt'tt' (]XtZtt tt.t0,muuT"1-uuu!uu"uu"#$"ju`uu#uu-u2""vu"gqfp!uvuu$uck'"d/tutututu)/)/tve'"   ++s@Nt^n_1o33vluu3a33#bi<CE97tt'(t.t0,"u"$u-u2;    "?DS1UWAY^DccJmmKstLwwNyyO{{PQip'))++--//113HJZ irt&STU\^agmns W[]beiloqx{{}}ideoromnDFLTlatn$ ` `դ'ח%חplugins/limit-login-attempts-reloaded/assets/css/fonts/CoFoSans-Regular.woff000064400000142320147176754540023273 0ustar00wOFFBASEt>P/;FFTMĴ\GDEFtt$&GPOS0B|ě?GSUB E*,vOS/2$W``qcmapd cvt 4dfpgm X gasplglyf4zJ\D:3head66xhhea!$Hhmtx|u 0Tlocas̼maxp  name3@ֲpostL mAJprep}woAA%_<ח%חxc`d``>+X3ErS(8w(xc`a a X( d͟=b``>(0$xiR`< xڕmhUǿ:,6WjpS w-[ZiMs$hC4HF>TF"=^iQPo7ڃPj@*H\h>5oօs)~n>p:݋jKw1iVSzL$޵y e6&.-᧪¿YYfpTVWߪP ^Vy>0f}#O˼_x ^#j$UNiZ3q}8{~Պ~jkԪSj1ڭrZXZXsnU~QqTNBiX@KDg2NA(<vg`2&.ԝ /=@v1!EvLDr%ی*DkKkfaqJx2YflY(nM|UTUIWϚcY!V:Z1:I[گSu@O׳ ިw꽺ECv=<خ~?_/OH%KKKH[ $j82us@&ʹN~1(ef y_Zj6C5:iYAj~xia͉>tv]c7Ǻ$4:ڰ $*yJoW{3CCC\{v+ܥn;qɮ<n u~uNt;'cΗNSlq69O8˝r';1Nth0:t4 M t|}wAwO?N|ә9mؚتó?YQr9'Z C1L4#a\\¥&xer$jcq??Ha"1FCWs גdISids=9Lg7p#71e0[cs۹;{gESB) T"yv]vm}fZ|Aڅ, ᱊7xE%L^u`QTӶe,Ycߡh2GXm4sԋ8/~OqVg;,2*6S[z^b/Wxl:YVEX HAQ*$,,xڭVisV$NBuyij?B0`B,.JPZ)v}~͕ig7~Z}M I;Ôa|ϻ:zw JgVvt٢0:2Q0:o6! "!S(M{Us; ہM%ʨ"IIqV5f>oNbA FIF#+ "vpe=b ^;tiLp?$3r($$ ~_D~%zODw'k" o ts'#Xv(h+L1+bƔ?$/94;9u}7f2%k' ?>ex[GɞP/'2,Gɘ 3eXMzI٢멉S^eeX/B;OMflUԍ(3]~@!Mii5s:%.xEf4Tk7HrzLCoVI ֟U1Gfl&gg?d.b;H8yldK6V_A&D$M߄RR0%呱7MSj^wi M9)o`9Ә1\%gl]@|١E,gTeJr,RIyT2mX (Q!C% :TC*˯{]-#K>YJr>,G+*|dVsEC}"O㣸*29h82J^c@+96*DKI\!ã9WgǍ`N4zcO7d5d."ˈ/;:tEUZ/*UX*h"wzlbuELi..~[f B^WBzڋǢA9 }s+xYa=ͬdχ.lyR{(]/Jzq3^lG^}'KX̲JXh .m`D.Gh[q#GTNෝnPM~eYCjnh50|}"綢jK]E=f9(K*zfK+:vkb>vKMb|9- 1 s8_˘ŏO5 ]EW!Z5y |ʆyDq;R SǞ dZК-aaǜ_0a0Asgs_37a1A`9 :aeEGi>m}-t?ᰉn?AԈ?iԟF_j4bCE7GG|5b1z: xrT8rEvMfxcp"(b##c_Ɲ  ؜6J21hX[8ؙ8 l-6qV0i7&N i7y .U;#68tDldNq٨h``dqH)JLo%r`Pm`8. *8# Sl?Ɵ/Wo |G`)!*4 1[% [T(DjQ&jEDʃ@( A<ZYxU%k&aI%3$&Kv$RtFƤq@^Id ٦H^ o~<"/ɓp)l=pG)x^}8 _ Bp+늯=EBqSRJL\Un)wʤu**JT+Թj@-Sj\S'44MUi5Y-U۪j vQjIEL.$ ! EbHArܡTC-hA b[`qTGUuۺ=ݥG -qt%_Jуz^/[s ̀L0a6N R[i5 2ck$yqŸn<+ -uTsUEM͞mpӚtiAsԼl3O͏e-JYp{ ,\$>qKp/>}^'_/gd<0X⁓Y*H ڂΠ'Zp;x< H &yԑU$NzH"G9GF#s QB'$)CPU B[Dg_ xڼ} x[G̽fZ,˶I,y_dY^ey-Y}8I'M,5+mJ ekZ. t P}+̽W6;3̙3G[WCsi# "czA_Sn7;ى kl[E>@Ogwhҋ; bUOVз9*¥*16Wq?aiz0ZJfh9b5.`+fܖU7^UOxQ$FSS `yܜl{-jViAwOes/wЭ]iΌHku 󭷛#Y_~﫽?;^W?ur2T*eU>oj2U2Nan!m?lC9 x`{ C\Ta/eV#kf=q}@9*;vw89sdSW{Ktu~^&2>]SPm,ĵŸf_kM6&ȷ_j@R`?S!MfD);E2!Kz(9%r4.lcVk,:i 5)dOa񡒎ҁFnlhdkl=r++cI gso`y]h l55聴xÛ G0#s6@P zv_kBRY[/DPɵnG͍[SsM=2)>9h(u?Yz1z >y؍cHddAo ;Wɞ+[UdaC³{!J s8N<+*NyZ73d]Ab4sߖ&kہ`x;B顝PY4ad5ٍvFQs!5 ( "̵ pa)<M"~}3^cn.T(`ě&X|NDG9~p @(q$Eحc mꀇumzr`#'j 7C`)O:UP ΢Bx.S< cYd䝠b&hO{p+jNx]ju/Gܕٮ겪jStxf~fQAٗ %87sG>`* " dVШfI ȨT%=j`ZH%ȩECpRt*nzׇ¦h_m-). +% 7K0 ^y/‹Z7ݼybmiZ#eټ`s{#ǪGw V57U7/d-޶yMSW\^**5Q=Pk-YEE oÉR 3{ZC!va O2P=a"x &0-tjZPnS [[n_|o o_Ɲ^|)(0GHjXa-23bO`XN 좜"9nFHgfL n#|Vm=Zf׃%}1ϝXJde$ږfZZk^65R:w;='*+@2,MmnI|H1ѓRpYRưC'?]5rIsMG=ё2vM GnZAP"4V%ˬ hȸ x㏜}>rؑӟȽ rw&sT D E4*TTWձu">d?/ŇUď?OCᒳV3BL*;9YF|#.){#76dZ9(ё6\pA5bÎ{&-ՎZZ"-݁#/mt۰;tj_:ZY3~$riW^~hrøC|2Ol=ˎ1v Hp:F2-*g_n>1Á!.]w3Vrs`qrd3@p%]Ka8<,$@t3r hfƕ3c@#46Tӄ,V+h? P-o@ Nn ⹝Wax_jVEHCZH$5@K x2|pA9E8IX -I=<@dx|םyC\0;jeXyCZ- ]V2 0$N7&bexbdW^z(= GeYh+`VOtnNy#GFF }.\_3uZS5;cGhS?o<|E /6&9yj6IL2}*98I]rgt >ʝ޳OpO'sE=l%7j^EY5h&.)ر]sHbI^be ,uuxJ-+Ά֓ iƸ*ב ` ='?\ŜZP߸EYS";9vz:` ׃QBPPo臨éuw!p S { Bhdp$fXMX<՘ٙאBLxp:8%aӶC =s.H '⓭}'f= |zW[&4Mn9ݵ~cfĦHM,9%*8`jE+ha 3wA K&]-JWdmFq3Tmu(ӯ̒y{ /ONnPn##0.p'x'b:B):D?IceL?V_CSxyzSgf{vӏ tglSwJZ/$փīJ.*b![؄p_wW7sx'a1\(\8O"ZX($ f\$ik_RqQo7Bi%H*T=Raa@+0=ikO=\؅ƇWgn L\p^~-6ى: 2YcM7yQď8IН&PX7WoNQr4MяL~K@^v?9zD|17;>φvǹ{װ~ VgBarʐR TI,CTF Je!#'4fg>̝qwFdkV31Kcjf 3K<* -ehxg寯-ki::ϪƜURCi|hzzxfqIN^RVA,'ްu N̤)B 洔͌SͲjl:I4Q8lv^u3y\7 f[^.Y/dxa`o { ʔ IQY?(P@%df|"mzRwŴ~]s':tWZxstW--ߤ3_S–S`KXI.d6bfhUc Ism^nV&b7m+ =/k(ʣ9Xk`_d]|%.G+gbñm*LzىAa5sc'Ll#מ_qI9ZLwVa|F*j Gܭ#{c#hf\m F$VJ=&P @(P7-MdUlICMo=6"cr2}xR`#lTi?GHoaE3 qaaExwCꫫ!t?3M99 {bB  ™t UF^k5)jj|FzbfEDb- jUku$ΧsX`/W~*GC&8<ùpAGSPU,4̔VʥHM>3d䇔x. gf`6q7QG$ 7[fk X"gBnO"pxQYRNYxOg,OTI8tzkP\AJѝ+٬99EFlL9cc+mҭO[.K\7?2:;;:2$ Y`~"lO dFE)?Y/#vHKpJ uB@d-sAǩ wO 7to/ڼ^(> N"^S_ul:F|X ư?ܖ˯VLJ[zH:ǁzZV{3\glt:DmIR@LR.4Gc wyqv]i.>S7,| m\sW u TnuѴpCCc?62Y߯kk= Gv]k,:uP())t94x/3|R;-%m{h-" 䑙Ղqb`s%0p9z?Z/jE޷V5%$Z@"˪;>U59hmJ$zE!8_$tXZw?ӆ;Omza|=ealm''F豄1ZLjV29ȱGǮrƼb>B$0vRo'A5V۝^خ‡zß;rlǿ7l\_RQ?&43G<3gēiaX[30pCA>ү4Z 2N11Y&&Y/k/نݏa{m'MEmݲKI ]cޞVmK$t4߽mX_~yP-=N%7S H@բשP$  &$PUYX"^B,3.IEt0dθ梢&FSFƽf9Gh:`ov[6^l0h$32hhmDy?vFm?4/j1ahQM Xwc<(JN9MC#=wf+__KK;{N ~t^Jᛤ) no2SR0Uܻ"3#?FpZYdL zPE+iLqPr1I` Sl}yZ͎kn+T75U*==GеC Łp ^PUM mmmk̲EYѸ_e 6 fZ¡2Vv +qwȹyD ɅIq3wd/B7uz?<(Gz<Az֨t7/JRS#AQ}>94.,`UUygаg0ĥF72?jaU6_5ж,@S H%{ʈ:vɀ9=;0JA #ĪT5T7UUV~q 9_S Y'(GaOX}vyΝY{k |>5#㿋C㵵bgr"L"{=vlptcZ:kzq-w؉kOkˁO?y H ˭.sa{a z<h?25ՕټTuΓ

.ڢ/ E5)+٧dbKfNf2NPC~~POO?S-+ɧ& o 7Ѻdūu8 @lG7 p2H GmOՎ$,\<}d(n'X۪kU9n_VigIUm+._b2[WUrž:7|8Gp, L["qO`<=қ38 @Jڽ\%|Sa4 >Л,9%PbNP M"iڒ, Pn󕕕TTF㣡꺺zv?x`XG-*Ix (\#>D0] ڱoE!cEW+R\NJg BȬ|o! `C{\<HJy.$=sͺgL2'ss\WkD۾`p$&B$Cǩ+YYKjB#R2N*N |.'I&6v-lG'X$yEYU#$ߚ莲Hr kﶔ & 4migѵ);;SڧѧSY;eg*q㫟T@nP3(jAv cou [4d=qܐ*uj~^4%%>m!"c^3G[Fc1[JI& Td%@_ujv<}xzYT+10{."~P5O{1 }$3p =MYcTUGBq=%c3Z .-%r6T]|=yo٫Q J+_k}7k8p$ڨ)? ܳQJEti_+|9ڿ ??JWgav=C&4Cb5DA$Q#@$A+i5OD<(bى8"?z?h?@+ag"Bot~HchI}jwg);O+/p5u,W塇zGyf~P:oC-ɶ5A$0 0*(-,=w/TʹRu V\G]צPQVH^YQxsӂcϹSr- Ia(q OaÆJxڧygNφõ; ADYEt#I0mĥ_4k%מ_ SYf)d3{]rgb]$NFsmL}\.U j 7;[U**QZ<8ڳH^P .v9ɓ:= ξC[wWU#چhXuHP1۶p1z=nrnQ<;k5 iKҾ8~2rojxLmcQ N>#f^W F̔{Kt 걠4ຼjXs+0go9^d:o!:` h8y:SUS5Wj.k]2j=TjJm]v).0Ń癗GBm̖4D3aS|^9zxcL,SEA+ok1PqEfy^茏ֻpF_kAܾ&CXEcR_CVM*J=<G,PrS#ЬFQHP @=7a<"_6XheIqQA*ouN.k|# 8* X*8/:+QMTHwZpT_”@8K4n;쌭m'gCgy_a'qڔ%?~l3coY'P=r [4 v0D7z2ΔUpFSSRSo<+,M=J$S!)CYsQД-;5X4H,w,K/+2oV&cr˖^34lls;jEbB4>93ݬ7V3Z%Qmbp޶Q;7gbTgSP_Q ɵRdu/eTjj*!"ijI^A [D P}NKWe=,/:>dB7cEV5r#\ÝrLX+P+H1VI![Ar^yjUSyN]xZ-4(?/+!v$s4ٿ.<'e+˗2wc3g^ ο}K{qNqLrW&kYA/+>k=l/qA$FQuuVLT`4B)]A6lS1*AOSiѲqgUQNHm/U7XOLjBX0hNR.4f2 ("ͲcG8')Q)r 5}6 R8)| .M&OWH I,aR`R?=s9gΑ%4CciP%mfh{ BgJپ .)F_ՐпM3=F7ߒqEW$ ]b-ϨfMBǠ} r}ʺY-m]5>Ct!WQZ_<e>$D?$:T8^HqWRzu*(JH1-W9V{[0 ?PPtHjKRJmƌ&- GZ1rruUhS hmޱ},Β(ujh_0zG?oJt~Qd›ʸMFFhԂ/k,V|;>l,H6_T7Ĺg?>69ɇv.SfPJYY&R-ȟ!f548 E}5Kb9iKNp7&Zޑe|o`mM&׶,K.8ۓaBy7ddXJ )*19=n337$ 'bcZoJRHe҇Q|h/SlY7*(綬}; &676=mmEް}-5a 薰tnܽe3H|w֔SJQծyNUEs(秜ƭt0U$@2A(kR)͙˚ok ?2iS}x׋B3ͅMY 3"P5ySՂ(Xն/V"{(}X#NʹZZ90TF ZNNqe][](xKܥť.kqI+$$J uy>țmc9ͩ .KtUU~YWSSGՕz65ŻMl?Vŗ1f ?$^sJoϮ5ɹ\sYchim4h muRDH0saԂ&Rx5$55ń43T5U%%RIlZzϻ=._0Ssk3X=J7I  99sgl]#Kϊ")WJwu44D噶^T^Usչg*/{U^5g[ummd2h%A|,$@ FKHϒZt4q,nzv hޤKjAhWpS404t_ziÚD邔aᏯu]p*AraBó)rk*IJgRFQ/7"7΍)cgO 15AZާŜc=z9ڑCӾXN4) ̉Nhw?^VՕk }ᖀ7%e5Id~;ҢGb#J$9wڻyI>fO(ͦ?}=˲ ;;HURc[.MJܣ4 !c(ڤ=?ίF#+F,dLiI3ݟeg)= :uCOsn׼֬**ȶgZ2 :Y~ԥY'%=i:[F*3ݷffGݴ}^=(aC|ZJ zr5I64^SmyJxJ #yjO=7>+iL52$BJ?I+(ܒAm m 7hoMw2S:e{y:dHWtKyſ0@mK ZDޓe|gՈrV_2lߨF(u>NTHHlM)qV IjTeZu>kfLi~#V͜AyY$V YS#b,,laͪ憮~ަ^3߅_-ڑMWZOTmjrwP㣬,E:#l uE}D jjIMju;Hvs>NyG] zp?GLRSRrԣ)MKc\DZ g2\ҜLȠ *Tjx"\ h\c Ï+b N'n'zp<쯀Vyi)2+0_GoIn4÷XvSXdlب6otO%|[4X8y"qɭGMxB 4HH+K&4pg QF8u8I^5DR> $1KgG-n[#F 0}Ip-i7KZJ=~Tb>_V} ߹HV7OsćB.-HBuqW}$g7/in+$?wHU%}އ>{űGr G'35~D6<_ <W;FU~jߠ1.^%q.4f0PC؟B[uzN4Nt;$ɵIW>~C{񏄷#sng>:sQ\޵ڳ\ޞ|W|;Qjx=֨y -jzQXT:S̪X!tPH0 *"$m u\^ꇸ ؍ l}+?!˴ zQ@j.F4옚MQr]i5ڱ]+rc7)#p?ci8m{T=Jґ~5_%m7QQ.Ջ#7RMXhh471& !\asܑ7FǗkM*?hzRnĒьj^Cô]vڜ⍏Оwp/\wBpK[ţrˤ!!d)100B$p\Lk;hMR9& REJ!1!@/ˬ ar,c ;qj4WGW:/s1ǟYى=9JU˂!G69r jd>#56MQNSGlF o!ivn+﷮v -/9.|e\ʁ#r/sP-aY4۔zyG`ؕ;98X.g#'Ӣ>t ͺJZ4gzmj6nD nk3c M&c;Xw(m78r K_v $ăU3J|fRp3\e_["vZU9[u)OC#@˹9DRQxFxnmj`4r%הJo?N!Ќ2LPeIϡs$I:hHI,o%gHOyJvlyP`' &E-X.M Av`w!S|{{ON 88?Gտz+(hU5:)I/A&L.֯$#L[=@w]*BMzZ`۶nw'y]I:r XO}gRoz@ϨT3(~-`6J>TēLDIII6Vgwe$'f6R"I+3yo݄q/7CC;vŇ?~R|dۏ{8wJօ5p"USSï٤ȍZr ;t9-u?ుC{ȅEl~wt{6%g»Ma}$(5_ђW8_6 ؕ_ZPfnzmÄKF՚IDERGۻ*ԻKv:[.igcnӯ ['4jjPePKpKfH K̻hIh>݌ 5Lʔ+5/Wc_gpx>_ĉ*o)>h6k.󅛋w>`kt˹t9[ϐ+&8^=D,8UD͙gB^y"l%SPx*XmǟP~7-7{}x= Gz.P(Ed S._.Ygio]7nyÛ/"}S7u{_}LGNeqRٰњe)h9Q\di5VeY !Z48ZUZ[l7FM{csvN}Ljp޼Hd44T#i@~FK:"[M}@]Dd%gb1>nQ7iίH<9/gA0r-s3Or~ޝ*DN7<6x26;P%w }rϘWDI0+człt7G/ ܇okţ=%5Y'=fwGL$D|go}Kd?5kt;ov|R#-t̑dAG~A#yל%H9rg?' Z$>2]R; djODnlUQ0i9I7̘~h>-A{WxݙF"?<@/wOf XOs]塯zQ>.ډOIǔ_W 9WiB Ցg#s186VWqaL[h9/X5:::,~ cz_oasQG oaЦ ʼn?öm%IijW(Ii"shT֠A:18'--ΩD[}a-?uL\󟜥g{ ˬ~ɦO]>\9 [HM.?|إ-pȭ)Z/ˆ1_AE< Fs Ƒt*3AjPi])cve~KGG^XP$:O~tcn4H&ZKX AZLċ Uʨs `HlS*rBbLpBb̖'u}Az^E)KԗUcIaP}uN̬@Y \Y~qkL:s~}t_/E m=K/kC!cļ{ҡ[wH+ml*1utO;h YW-KH: "3ĒgTWPD@ߙވ g|n -.3DSѓ$D[Βtf/-^)HݤVi[{N F@70лTi9T-Qf[LYYpj\U UAb,ƿu`և_c1GOpiIIٻ^hާhlĿVR GT֒zjD. hL<=?'ʤP\!QaV+)!R-%\f@u/255%_ _Ȟ¯_v+Ӻ-vlE%Wnl )hևxq;\wwY;Uk N[\˚)mvU[ĉtW`gwP;-~: SHr:oKz$޶9@3!:="܁@(QlEl\yRF{ޏ,YmKŧk$義/(R֪aZaz%W^(+BoK/Z[_o ᓏx}hMErs ~ zQ#mkdX/,p8@smR Fpv F)κ}z3e;v] g_b+V\sHvI]֜kͲrm,ŜɮKU ZДKC tt hjS.ßE#r偎S-͒Kת ލV,ZZ|og~˵7+?N|U P hKWv6lnOqw17#Ů^FK%<Ǹǿ|L=5ge9\sEhx|ܸr~i/*bUe!&z+FddV>c:<$._"Npd;ؖsMs&RD񮻞 hDYt)70`lUskIdanvKcD\W# apf?Xo>c'՞Xؗ{"!oZmeLW^]𩲌EN2.Im1s"G[S~7oY'VxbD|H^@ MԖu㈀+Wװo8{ dL|7;l:~1|3v6\  ֜9 ~=%+NX_9. ;Y/g\XŔYo~_eܕ![mKqqbk@ Ϸ} oo\Ro } ,[ze};84<^!4ֈU$qd#MV  vʲx8EfmogT<{=a.~n(s`W-xIkm(Vx *Hc,Uj1M5҅B]!Z,ox [@aD/:<c2S._My)%oܕnC~<4<6TnR_ g=ȵ렓EH37 gvDhV^#3=Vӹ\5k\ECˌ)2(ZG@K#WxP:H1\1, xRT/R3To=mT(x_GtTƗΆ Z\R7'yi&3Kbӱ eޞ`:=jOs3MKbc3cSSc3hEl0 3o14<%UJ<)VeXV0@^~| ^!Ǒ7*:KcO#48_"5I  fZ}0= e2ܰ ͪBjh(RЗ톷LOm:5=tuD(Zx.~&9|Jaİ1B(Ġ\ N";He/ODDJ  ӂm_R_t^hi9siDFu!HZH dc&,l 1*U =C`  +/ՔU Vа-KQgN_ QqV2Q߾+S4bh\xr\Ui(*P?۶YVlxn ]ʤH Ɲ.Z̺`~dX&\ptZ*`), #˭hp$G6*@jk퓛g]>yYi[HU ;NUYŮA="݊8=@Po}F)I_Į$߀毣 j;y aAGuQ_H)E6#)<lֲjkPYj)Ԙ%?f 18U^g7ZK:{*˃v{sUK&CT0x|L\ݧ/+ЗU**++8eNWظY1wY־SV)(}_tp _ʛ^p:%ʤSt4Ƴ:w]i8=tt@IrۀQGIyug,N(}=ċ: .Zfbf.&q k@}c" hK =.xyZk|,Ne%F;6 S|nFeP" -" Dm, AYkwlJKU`niE'A?7oߟ~8/RH-zN\$|7P3ߔFfEؤ2,¤$voBmHR(Am %Pq!3CPX@I@-E[eS@&%Af]Ulf#>{#jfyLw&QFu5v%a|P}x~zI,*Zf.#E {ⅱV1*UIeYn7vngѡɞ±7$c=j:@_PE mRqԑ$|3 ,44jYAAj>G9ڵJ,>C41_p6L."waS-e .CmM]'u|\X(*k"昼8jHnݤw eE<*7k\A01dΡ Db%Z}hPM;fe5 ) &| |(Qjg8S/cӊ~ G2EhY ]r!$Sh@p tU*E1 z!S Y-dZ2%r!(gD_vݸc}TbRqfvv7L1ۣ=Jjiz9}e"J_ɼM8kk+ֶͭ wn֫VtoqyqQhOYqWO;|) 1 ?GoAL\U ?A8u|2:aeniv7Cb|J!C NĠh,84NX}sd`Zȯ~ŜC/^+PO1 )W3@lMU?4Ϲ!/Z;<h%}`ܷ恱[7O,Kx?)uh=+h~c Z3Wާ|r̍Ƽ|Hfz-D 2$s-GeDUp^'CgebHf?۩geԜ-(sȜ(ae4WC2[ ɌAs$湥nU$wuxj҉$,^"ϟ1o#{!~˲a/9)O7);p/,2y*,e_~pYC<WUSi킗y+w  yTlyGz'rB@ӘЎo/Y?Q1&2GX $w?'Gxa#a=b=ߋ3[&`>j;0me,ʼ(afk}oj|CCvp^arqwV cڒ)C6_ࣿ@Xں|"#c94NQ]/$4>N_Asb-Yi,(ordwA;x Sx9뽮nWVH̖M-Ǜm%6CijOZMeVWEĭr5Vcb&qwlkPp];^ fd#=XJ ,zF+Ė0F[g$E*[Wi$h 07k4cU`^&vwMQ>G@"A $Z0w~l刏t]w|ϰ4>w ]U7Ŏn ]GG 32e858V^uԋMuZZ@r^U(K6BU ix;c\h N':dT*K+Q@{FnQUÛU/5<{PwP}R7gop"NkyAl## @}e'ջi{eڈ#!2t)Em[jm <~+ehWkeHT|)x"Y}7m-$;-zsmP*AC @C6#P*DvKg4n pQfI{U\?3-JʚNW߆G6#f+^lVW4zc45[Ͷvl(aoQbB<5qBA0gTDJ{7"61` ]@T;?-&tj*u%/FF$sWK9̆Q 6jBu.1\b %Uj2D#mh556==72v/d +LɚnOCޭAo 鍨|kdvlNeE`z KI+A&'/&Xq@&UXUY#Mж/cHM9 ɩhzzܬ. s^ׯp|oʩug?ByB gck|6؉+ښ=.*HАgI wYF*1O 7 [ϱeb|l c~/Π'["yc^6>{ڬ#}d n44-?kyz-X+}RΞI$L: Df'~0%r:1o˚"8 +xʞ5C ,m/x?^aLڄa?Y#}OᏘfEEhO$i0)çahb—/ôȅ܁r(-~_;R\^DRa$ RH5Gb!Uj,`JCŞ[j t2 ِ0rL7惡A0XPhǗ7ݽûw֌&Z䩘]hrǽXQkbw5W ZyȀ%bs1kY۳lorЙ8ER1Pq;-PwHqQx_ l6YIuQޠf3{1KeѮa7[(,g x~ .C!p!no /{$:2x<w'8%؂vͨ`fG{cc&BTۑC(YX>SW"<ذAd>0!vp;1lGQKpRȅ_W iUPOAk,[%0UmvCIRi29&jԥêʲ2NV˵ZsiJm\1LH"P/(iDUm-ETEE*^l[vnڤJS>? Af 0D%7|}٘W>6kCꃪbK˪R\755VkuС~ 7&ә"y mJ%jF 充VQ~2B'?96+劢(CܫlT2TUUC>|ju$z2*UKZE),87՚Pr׉~28I9~ڀim_ujsk5blؽ )ZDkQ>?B6Gn?hmn&4nkS5u~g@Ϣœ^TJ"|p([Dك)SSjXKafx ];991%d~]z57_+7\-M(~Sc\)S]2? /; Kgx]W"!lն0v`9;]<07{s7jXjTQQ_v_X/K.qxWV+ CANp-[(+oa X / Ņ~|e!:{MXD%{Ρ2}ݝy>;:+E0ysZ1h!*~Ev³d♶GIʹeU8L_ЂǐTIsu{~#,vye3Bs1a⁕kAkKwBvPgh\"cQោwezgZ@}F6(JO:yqvA^*⽆v:&$yׁVR8pm#G'j(461.aegO?3p& T(>Hv 3RgǹrM-s Z7W֧w柼msۑ{YL-ٶhP(̻F^[wXi>f3G7MĖC AEBvʹvU_d`?utDz5&5J'cbs;?q-S#/ 1fRR!68s'6y|I&#J-cvla?_ ^ä |OYGbH镍ߓVQ@<n=r͍r:?<8768969eHII`jp8YoDZBh0A%Gŷ7ۮb_B%.6ki5 Gtp _ʛ~Nۖxai.+Eq$,<K(?KetF3$ oNԓ.o+`܎[IdOOҦQھ4 -Dn)'-4\yF$7M9r^+DNWn4z5͍fHZAN<^@[pˉy5"Z0Y _,NSiJ1 Es*Og '`zK)_̓qC;EQH4nKN&).c_%9Y%8 ȼe{ {]O˩BxZD ͧs2"x^@(1V#]]XzȳH*I)Sgq\@G2|DF>IǶCc8#Ď@y@yXZ@qq,*zԫPot!fCyL<"Z|ukIV/n%Ed+ αDoF&(: 0^?WKxH׹aΚ:T-,j^'Sȩ7+JMݢ,Q)Xe/B]>zӚc;eq`?Q!fh\q2NEeTRswbiIQ?JDa>:;})=|&kY\V1mԫpގ1RIРi`!=`V Kz K9띰ۍ>d*o5xڵTMoQ=QӍ&&VZv I%iCSn+ 0a>ҍ;Kοօ;zն.I#/3s~̝z +|6B? Naopdϡ ǃkf"{gQ\\“G+*la_ N~Fzhp+9C^7x~np ^Ne2\@CLE}$VF"(`耫f5$bm됛Z K\ks{J\Z8FnvN-qpP#$GA's`k.yvUI|`@. }]Zۨ2{@]u,*?#p`̣HIuNhII).9v15r{:꜖:b79bIL*PF0rFkG-ߍp,Ğ˱Hq,x B(lpM^\f~I2llL&m֝͋.x}e`ﹱefk,,r$MZ;nRYJdqm+۝&~;;s%eD`bC5TK XzjFjq4&DDiZViZVi Z֢iZ֣iڐ6iڔ6i ڒi+jYdCajE)F[6-mG#)AmNI)4:iMͤY3B]Mv9ͥy;A{^4ХtN%A'бt>]M16Jt<Et L?/t ]OOӓtRN>z\zh=GW^%2#Lӫ7M )Khr@ D*bi -aڗ. :1uGo/01a"&a2"VXb55&u.b#lM)6[[ZhEQİ5؎>O=v#6#LTtbcD7c',]ЅnFv?/>솹ݱ^B/胋ȠY,"^ sʨ`1X}8`Cq8Ghcq7#zޥCz> 8'dBTqY8\q.ER\qUZ\qnMV܆q]^܇CxQ<SxY,sx/E ^kxoM{xC| >g_K| w?G ~/w?wp r<븞x <'d^Wxe^Wxu^;1nzk zxm^x}ހ7xcބ7xsނfފ~6;V:#oo;q;'~SJ:Ny ONy3y̻pwl]ysy{9Ž>vygq8}%.s/a^~?A|0‡a|8GQ|4q|<'I|2§i|:gY|6y|>_E|1_—e|9_WU|5_u|=7M|3·m|;w]|7}|??C0?c8?OS4?2~E~_WU~_7M~w]~/Xg[ָhEc@*],)xo]RJBwSZb2 .iHW}}[_J|>=j锟OK?U& 0d5;jI醫5]% SNeNMʌ)@J4L5W}T t>7U씑de$z$Y=uVم ªonjfҕ)ia-WOINI o59/0S3yL>4,`;&όq,oA;KiV%I+TT0@CQCCCQKnURm\FZv`n\0_v=z*zzd,KKEImO1VU1`qEn9F ?UGTI~]Zj\mhXU4"EmZmQɗKJyGHT;`i!%usn-eKuC#N炧큹jѧјh\4UVKETYUTD/*!QE%_TE%_TE%_4VS5JK2!5j_X!}xZI%avEW|aAvo,y¼ub0sUb_a(ZE#QQ=%>x-E4$jڢhXt]D4*:ItNڐV>=#21Y,YD,"KEmIQű[Ö-dS>I(^GkU?v;UٜʕǫvoyϫPmK%F[u`: }Rou7|[zW|j@)+*2>7fh3T=i**o ᣆOVe>avÛ;6X mu cN}ǛPV=`~aj־Suʩ?u3>}3K^~4Tmx=E;'JҨH)GCIm+@+a ,j,ܜ^^$mr'Gyw>K7%eG_c=SfzB/YZFowbx{P9.b3ӎ5ƘX&ҙt2Nq:×%1> p}:T FiyRm͐VSpB 0I Ă  s)(o[V ָ(vme\#5,KV\<@k/A{mMߒ/Qv﹣ކvh Zrg!Z+7ope68ݼ= J䠒B[Z6p(4qhGk>i ;U4%d^uqB 7ҕt(dJNV%3>(*zh&hNpa.0\+p# YyX%XwiqzEk#V]*[ffLq`lql#WwI΀*uts 6Dk]'t;` ٟ9Y99{rrM(:M{9Ct^#tzzi/i>V:@ ivзQŕXG}Hu@6&L[R3mZCߡ]F!.ѳgzj e2)ijq\OZlFMSoi|[Dd2ZN+[TKI/le{j|_쿃2`Mt@h2LبV]>",W9Zi8|1 _Y엵>_SrjU#gv^׭L ʃrˣum/nԾUV+9fAC9Z`LJlϲv兗@ SU[-ѫ Չ #5/۰Ion&q?Y}Ҙ5$F~˚V{[kSTֻ#=b7c`B*uQ +>˙Q"py#ţ/Sf2yf]=wL=Wv G׽|C[>DlY+kyG=->ޱryI)8sdc6/Vs?i~%z 9z= ~z>k}o^v fN`#G#ݳf;u{0ݾ=G;ߙ#܄LDZV{sHݎ՛cޜ|=H8r~f\*Ojwv((BÖgnsû\JjK[G!C{9!xU#b2)r)~c~ :Cxf Etu 52,#3ʨ1Fh3:.cǍ1h aqŸj\2feyfYbV5fh6mfE S̚{ɭppppBs1;YitT3-.apppppp5.7YitD3^NappUUE\df5+y}h {/aΨn5aͼ5; W W2rL/k59V8V8I8IPPBMgVZ3h晭bo{ ˅˙95ߔL/i8!Ğ ||22yϚoJkC9j{;GxYA(nXh"AUvۏE?s޽{wI61Yv~>}Μ9wٓ/$UϦ߫1P ܘ#c܄iSAg\2~8sꅸ5~:?ש矇SՑ¸7R\3U!G}~bfe}K8/Gt;-;.)i%C?{TC_/WkZE 6OI 6C_)@[h+mhO(DݴRZh?ϙ|.".>\‡s)<#Ke_y$ãX>o|c4x<Óx2ic + o-º ~TIܷ+,ZTޛ~CuzowBVy׽;6qPfYnW?RTGZyR8R|wy ?2K}FfPgSDf]*vj3EW *"h:Piކ~/Ro12pHO:q'"!o=e#"2@5ދhR<  eA (VB W>ؤdnw"m!r 2q̜ՌB 1"DiUmz(҅DhHd]s?uݣp-WߥU^ Fƽê>%t iئA5kB6Si: \eMqEEh>h~" 3YfEH5T"sGG#C~b<:7ޟt?A]-'@}g ?u|*jUCmIՠfeh؅҂(-҂(-Hk }NDig3{ {=F#PQ&P j/#p k*Q'h9D4 9U uH/B%ݝ;0\s zB9!'r]!yTӯ8kqFlf~G~>~0iSrF2SV,%x@=!PPx4?VCM|xkQ >OrC)n*PV*4+#GAȔuHE4|Q>3LbGA;ъyJȾ"kh(3 n-f;yZ4Z 82c@3?}( @P 3p?m(dU.``:`D%{@|X<pd xv}'R*R"sߌV0(Ρw'@$Tx}ۭ? ck~-ޟ,``=y ȧ"`V3`3-@# >@Cɘޢ2gk&”E|NAZ arHy=YJ]-Mu?/~F))>0cJT+ :ʋ{躄.ClwkOiJ~^"\7pߌ:\JjVy[J2:\,sb`85j^QFKwߵјmP;hiWjЩHD*E;UJ'7jTxITHS 0Ulڎ$sppȺ\\-%}")ƕȈHj-ϵlJjE=s!Q{׃xC!U7}<֓%A 4'EU׋F>$mjeZ4>7"}b塔2EU)yKͿED=?xϏ |^omc<; %Qr#Jj%c T}&Qx< 6#EڊJbGo)-i&ey?Em6+gf}h(#Z tv$QrʁK5kBF= o9gj`X9U[,Eo!ӲѣRFI;*RXbWn?Mն>U"F~.c@hRm $W<&j9c̹!+JN;{VbDX眣kM=ۿCeX*tۆR 䫊Q9+ңj%c:M;ˬGJnKYxՏ۶U,҂jr&gG,CH{}ݽjמv mƺvO;1r4˥] U^`%М䨃wNqr0t{1SlgSCy~EP8ZU[_Mj.~*?г{-u{ sj)v")폽9%V,}Yi6{WmJ7+sprۚm֨/Y&B{[zP6űXU $NNV%Ϲ6K=-]a{~#y(9 {w؇>.؜ڼVole`;Z+9".k ם{ΡZ лg<`lGĻhc夝Cr,\X}ZVxv)F RsF#`g%`nZ"_ArjgXn@BvtONm!gmmCp)_˛Vm*HllqVu tȼv"5b명byv#9䀛 *KR X_Y$"iU6IүzۚVg/Bi {X'%μ|xޙjF<Ԝvߋ*ꦫk4Q]mo!2"wau[55VCrՉ{^*iS> 3kJnUÆ2$b]>wpJF)Igk 8Yɬ:Uzr\5-s"-l}Zʓ6⴯5G[~HQTuk?ʯ֜$uC*Lq0}Zc%)T{RCzpH2haw$9C فxrd"Ehcg(#|h1VlSݲ쌑uslvX1i7:H&}]l٧M&yaL ]hHWv&ɧo//)݃Os7❠e Nn˧؟c4L!/#]‶.Z2.ZN&]9+d}ш8Z*lMi{O :u1:>+MZo';Bg˿wEں\ F-{em>B\Wz\x;1:0{ؖŵ)#&՛eEv- ͙Bv i̔wuZکF_>i\É{s!5s~'99R}MuTwNNӎnTخs J,;حiLmEe/ɵ!zQZ(Tۆ T*vV}꒲YjGg3;hC]Q+ɫ–jV79c4HyڃX(.vH6wLku 7$e&fgD5ly6giCWmlڔ췡IM,~#cV,㢯5ڷYTLmVk:֌oP9Fpnra.Wt̑'rR!noEwwXlJk'"u,Im3ǚ1ZV;*sN.5RrzY8KqsL/Wc2KZ2gcّOUY?`5zJ\q{;VcGQ g}M8c+$ZۥiV'>>Vφ>[ZJO}8@%v2muON$ngFIks qiůUt8uTsADIÙ6)E{c-6OegNiW%J=bI]3(WI2/^\S{!=CRr?.{XW$*/߭zC51grSvEa=hZ! &%V;1jԞNkJM멵Y 86_)1U[Vz Ӟ$Ҋ9W R4WΓm؛V7KlAj6XZ9˶lH6l9q6D.tmۡ.;g$.m貧&Nn+m Qj8W'[k{YJ'Xk8K`װޫ}RqСDNAԐj_s2L;)A7QI69fey;zި\4ЧU TIa a :4k×镖nk38ٕ'OirZ9+ߚ i7un#MH}. bESr6woriZQnip?I+vj~{u[2.gpҼrK^gkځlZqݰmv9m,cç6)x1߻z ҕ/XPha%:TD~MqLwC\L: h O}.Mi҅4.t1g]0K2]:N;?!j?q`vrOwMӴHU-G  z g & _" *9ahfE @h ƃg#? O'LW s@} &p.Zł CM՗0A]W[h'Y  ~?*ͦQ4hv$| 5B7O2uGcr6b~F!:2&RZD$֬- "6O@[JKp][v,UN(:ϳ2o1jA|Gl/IIc $$+ᮣ${)W>sgK)@hoqbxPf#t?*[9N7fljr"-Jn@I7ʧSg@ s4w2i 0 av@CHpdx/Cd[χ$.L$~Nb@!7$YH~RHn!HRO '|6#w"tŶ]GR`WR{PP'PJP L^u8|KI,F G/7C[}m0y^)/C|*V92Z*a!aeL*H*H*ff@o_Rףub^MU9_eq <&rQ&'ZaC'}[rH:k!SeڛUB=WCrT #7R YB*&HIZ9AgTOYHe;eվ&_AWBx M(߇CܠmC+gTx=R2K#S+6/yp\ eCZƇ6|H3yq3 g.~ eLF_*-;_  y+-=w'DAw4#y$c (E{X>>89OKo7y:?ÿx?dz~ǛO|7y3W[o^q ?`q^eF1ø1.7njkic15yc7KqQ0V+o̔<&7Ē<6`d`a`҅U] դ'ח%חplugins/limit-login-attempts-reloaded/assets/css/fonts/CoFoSans-Regular.woff2000064400000113164147176754540023361 0ustar00wOF2t P?FFTM|`^d  \4 6$0 3 [vȑlsauyq$%c[nO{I%{&&p}èCQ4h^{il`j>[`J3l۹b`D G&Y!k4,ފ{E+-SZd5eh+אgkaxMs\u&U Fѐz4/p]n 2us=Y?ϓB:^aEVLʹJL$gCD" 6"+<0ٵU|YnG"qQb6=R6],}lbpGe9BUT}ꦒ|u@&`ĪW[!"("M2D5=Alk x4OWHjt,& ii (e< h毪se˨ y@1CUMJg_խS8M$5E13ꛡ.?=~ӯ4ljKVXm*H+8*ƴ#UuT tzr$ BI8P~n΍ ,X%[ۚ6H AE0/T<2γ+PXP%p9,6qf?mm{/܇Q݂Ez85/Ua 0dM%hc>IG>>l X|h:3} Fg;7ѳ71\e 6 LJ!Cl/*i 8cr=0M'@w~ ?}KAl`YC%&ߊNW,j])9xE&RsP474I%(dA!abvܐHP֬5;9k ǽziZRy&Jimpq6fƒi)UmOLZRY' K hZ4Mtsrr+09Ln]ݔ֘ J>Ua $,@b=*K!Q!q!! tr/xxMn> "Ec $' ?Q=%M}-`+6 <̾_NIiq+Ifw>¦U!^/ߜ,,QFTDhvﮡ]ф&!Hl3mi86S[?-?xȻuTƚ$G3ɚZ:B:HzƦ/'IU\KLy㉵W ǩ,)aOt ,ސ Frd+n4gvPwX=Iu̓գ} ;!i.hH"ȡ2X Ӎ2ױ/H#M~WVn#(ZIq^so92<`bx#?U)h9$@ |2g.V.3*Mʀ4bx-L`s@Q%%DqK1Zàdsn5uMfgT:ȞAH(FƤNd95@= =p<n1:Y!p_h(GR .$EXP.beȄ:i2hExli$> Kx;?mԐ&qu*K㳽7Dcl A3IFrݨLTqI6|2bœfEʉ9DHŖh257]W\"AVAJ:oA=JJUCV9 U/r+Vjtk Jc0 LejPin?W7O{h񇲊EkHU[^Rk[>E?P ~JFn *OHZjX~S bagsD84 $̎<$}IX1! ETw=‘CPBSCŏ$˨;nkI*>StPֿ_[]ܲsCE0%]V0c'{GrpK,S'+Qx0`BBLR뷝>OeW8MIE␊:X^/Ni[}}!yPYm̫ mmz"f#`Jؼn1êY[3vVpTʊ`T7pn TFu_mUfw8`|]wW];frz_6,@AYfXEHJ4 =(OP-4gKOoa waZ !P:W⩓?MR&oZHT{иU:UVHi(6@9BL6?J1|?* ` X.0|2?VWvE _*iSM,_ۆGHE9[x/RwOLdr#f$`c^¢eeh:Yeg5'ìfr~u}iP7[^lFEѬβЄJ9TI3Vںhj~=kBtLq+xN g(ZQFs?gtZ9Z=$cWa.C~>]k;&mOoq(Cd;u> MGUf.ugň:}L)$N>rpk+۴2`V.A '>p<խ87"8ouTkޏ4](^[!,}[DyM[;>!-cY5n䫛u}pҊkx+&G p#S>“BcC֟l7{H19OTj'"8; 2a `z\ƗojOcP[2mSiGV{?+dHR/׉JfӦ++d`-H/=ʠ Cƀ%ח{MS?I+v\ H $)CF༐|::+,.aK-~m#~^xKa.jwzY`rcgoibRБ܏s@W..y'q/KF'&gsB>\@zC#=dDp &^8 QuᛮmĤ~RI HQ퇳2A]~2#F~.n77-CRzLr~oS/bەuLwB.au>8 {v]NP owHL"vxH %jx'"QRSaࡡqP_n=-7*`&. a_C»Ґx,NE G5 O<%QƩ>3NlkGػ;Җ#[7} \5rT2U1v'T2]b;) AqBl(5Q&(E8Aˤz&\t95*cFӄ2Pms?\% ˯xk.zW,3/k9x> y5 + 1a1^&Zn|&mn楱%OOM&*j ݹ'Q][NT2~Up &ԡ[pjYJP3Ϸu IJ+fմoрL_t Ȉ55z !WL$ [D[.jrN LdBr&ղ*%\NB!g,0lSFYD?>o*$\΁Z쀥Ǡ|۳T2}Ћ^?|Ɗf['&o_;;wYc܄z|ziǕ !!^>0)9}1x IHH!-#+'( BY={$K];83$QrS`&Qk@kJX54z8X~Ҙ=-䞸,1yέzWЊ#Qnj0\H$ %q) ོ>Q.aò- e-lڲ 6Dlo@b5;n$0c8ż %8U̯&0g4OlWl^d@dM{b];rZ6GO1=|&8X&|rt1aE#KCnmjݽdRzikSlcW*\I&!;9qnw57]n5nr! C{~"Xċ$2/ɽ73S#k};3 xKpJNE#at,`U'>|Nx&grD(ʌ$b\gy-gKk]!Peo_0=Q눣l+{W2n=& }9O1Vy+;1%L5C32̩CCΠEqעM* _mlEM B lXl$g8Y o\}FΟZVs Tqj5W2?G4l- 3)w`y \aʨvh`p͠2VyzW^zNz 6=!rZHtvMg^g{o~O>[ TRVFe iD6.Oc*m]Mnۻ=Cߔ 79vTۓ+kAabw[TN(SӺzZ;W]_#z/۰m~lׁ ?7ᗻ[_1@ OKቷ!nP s5(Uz qͨ`BFq̌[|,l>'!zrˢR,Wfu줻tq`|s߉u'1sɂ7KY*:"8]uMc=UGDcv~71>k-If=˰|>"fckX<ٚ-Aa"Dgab)NIJSs(S#9Ԧ1Mi~Ud"_*[%u.nL:VZW|qյL҆#c#B&Th F,25ވyX+]=^vp$q57!yE |S,}:>qE-e ÛSɢz,z}zOZGԍDfN[ttB̵a\z1'ԃYNZױ9mERϦzT gIl+Pԣ=fCY]TIq1<ξbMNԓ;PzSECZJ=i>1;<.LI>iÂ5!ږW%mxu-Ӡ6jv&tZsLśьY96 YtYX_2X7g5x~9XVjUW'A/^7˭b):-`b5lm$dB $lֽo'6Y-I<9)NEjҒ g$2y,,̭n̺շ ol㻦[TysZ܊ִ=HuO0"Kw xQkr[+`֬-+iW*^f5Fֵ57k|ܕeSϽ`ͻQ?F8N'AeA t:Dž KҖA Zݎa|%nA}Fc(WnZzt`V[–]--w0P,fʬ+ AtUR {cҡMA*ja=1kFd["le JM̿n$X$*?Dž$ޛQ0W}7xSw: Bx!>pCqZn>pl(ʕyZm"[͍@X`)sux؇+ Atm)a=1a& UjiZrt`Lz@.yjqٿ "D=)Th@, qGL>zm2Pˆpi5QMjVZզvuS]Vzէ~oّٟuTԥmJ TXrXaJɻGe.6nWul2xx[M]l0A>`S.b{!W: iX#akVQ**% ?<Jh1=Hxx-@ $~ )@UUK b|]i$; ^&kI~0092} E'L/wy{#?ZeÇMd>YL֐6K֓.O5(*K 1Pd5A|MJb 6/7ZY'z=7i*UOgz*kȢ ~/TV>4>r:H&Er$Gk uqZ$ *aky%_YL +zJRy׼|NT6PߺpWөdGТF\`$6 hsOzWx1qߝ{lsY7ս[z>j͋A>OM<y״AZ/uDHK^~F)4pl*`~OÛQT\Da{P͟}@rs((lP~$)hm\#@23Gq3%ƵYC -_EZ tQ**XUc\P%VR'Ayczj>)ĸ%-Ҍ2 q@UTنxnTsτ,Āzos E14 E% JRҒΑ64=mQc>}23qzũEc:roU 4 R ׬c>ZL1LK>YƄ`7KtOjN#ӷ]Q{S % )Uj/tR j{UV VN`rID:mL8Dl&PhO!y>#@*.c * Hw:8kyc_;e PeP*Fj&Z:Jfz憟@Kq8eEV[JVKcπ}$@&,GSVLιּװ{;r5s˂gje>īJuqKf\2(1xKI.6<&Y{+L7hTPұw*,ΠU)Rjqᮉc5̷_q Ci yi]N> -~F]lnOur*,-9O 2kH:]gPL+f^NTT >:lv /=i-Sh6P,OоQaRF{O5# #)4 Ys,^`hsLz2ɱj"ϸ-"=7WT/Dk7z*)/VzUtN~/Ne]^ [E^)]KzNfJuc{q 1kz=!頫 o3>s mgz 9x#o_󻙼/XFwQc|g{a<kDLRDI25YF$o(LE2RQkDb!و̻vqķ㩭=A4wBw=-B,eaq"HekWmӱ}FyaN7`ԀzҞ.[g2,CEcⲢ{Պ ǨH7sr_Lr`<4)Y.cHH8i= (wa)4"M'>ig+a Pv D۠`ʣ+$y^~=2(@tD[hz\i5$2#2GnG!;wr` l{QAKvp?hdϩqvVltO]f^U_PL\#Cg:) !b} 9\y>W+UmMZC~WykbiZ(-[L] FC>ݛl{(o>!<+yn}{njj<>H<ƨ8G^ͼXf=7fJtk6Xķg bD)Z l}t!XZm'Olk/(,֤9{dr"K4vķSP!h5՝#c*~)@lĀ@@pӨ:V9‰%qr|x_VmSXnnaDTT^4!3ٚUr}aMޯ]syq" ѣv]V^. ~bol0 ܧ)\~spsJMi UZ|ΝNem.+g#_p؞\,kR5?,IB,|Z2i]ofGꝞTcYL&BB&qz!70b:|\- T@Cm\!OUGt±k!:2!:5N,A;Us0Ę5)Pa&i `ݚۚDW*+#Roe\[Bh {FV9?e~տTU_>`{zhdQĿkԘa&ri 5%+Pg䬀7QQM}|eaj9?n&o'l %9C2G^&eBt@=+{@ E>!K[?\Q ךpi<BR[*tت!J8g@ $ O'qEڨp8w:d7 $,lV`jDgõ\C ܾɗBTE2dm1 o8VrJ~Hk=ޙ42 %_0\Bm޽#i2%UyתLn4rƢho) UٖRKBgÊEa2$K y c͝5d Y%bZ<}=<0XYw[iDP< :/ Z\1jD-^3eȜZ !.L/DYMβ1JW髡dTc\/4+p"Ud]E@dM-Dn* ő8>zDpC*&%۔HWz[=z2'Fkqx 4DĴm Q]!x/6ڟnV}/DUoI>zQRn!؄,ꔜ+|v+oYvۼUs K%a'9;}7ГuswA  Dis0C]/Q:!egFY$=Vs0 JAGff?tF tau/&#GZ1i>`.XLKx *=2)àClbƭnj~;Be~MQf:gy̆stoh^ER`+0/͏V@fj||KÖOQ؅ 'qҫ_]Mh:x>.7p7@u`s_3`Ǘ}Nq#F ڄGgs$b#v7^!;v6,w覗E>YnZVs֟.`ۙc)GAGT.3uS0DZ[O1i:kx$޻Ta+Crp!5@!I!lA}*VSSc~pi/`@jt9'ѐ\du׫[X?,:[CG`dp>M/wsՂVly"Pš6LL.2,2_dFIܷä;-|M%'`&3=zGAUXq O<Βq%kS톱M0_CSEC,IXhRDDѕU٢bH>jOEd(^Ntkܨ&BhL0KI3O#f,(^(I( [B81{1&R>\kGʍyUP NA6np-IP_dZ1(d) gXpdt nUA2N"$(؞e%Fzn3lT™Ibhv)?4UL܂VAhtgxGK:T?æ^̈Q^1 KكTd:D<, Be2&.Ebt$AAj4hg4ii*`M)JӮY=w FP,p|~cF/TF 飩 ̔Pzb9Z}d'}5w`2OQA Դ ˚QY$P33^.l䭨v{b>Ȉ=!H~E l(Th(BmdYM$:{؝N?-IbB~se?ZC[H"0%i~Ψ}e3(P0 vcGUbc=Jk T>э;j"kj1j$Pd+2#  j qwPޔ+ d7z5(|뺀s0[5 AE bPujJ6- r|X aTȈ0! ; W b浖?jm"ҭݬ6raw% uuՆQumXfQ&X-Gj $/ݝ[Wړf7䃁g3xqל25$ծ] vZwݶqi-##*mx܈v87 oAORH{ꮀWhov< Qx?3lwucnGa ­;aWI^Brz%ŏކMSejD=J Jv:Fs0HQij"qSAD찑d!% Act̏-*?ǼGY&hթ_LSsQl R_|ުjŀd1s1F P1n+wa`Nps_G|уKyL5isUtTѫ[%|vݦ0e. _PK U"+ ۫A%S+.!.@)'5 K8ocKc1GBgK|X9SR@[Ap6HM13UˏAusP@:/(v} gh7yC3>4BZZiGk@븙cM6"#Y&߄z'Mkfb%R85xSs$.v~tU Unc0A6{6.T 3.PLnPH"'ˠ^u}2 ()[z H#36Γ#|c:,0jmn7Q,YөuX)p #!kxrh =hQINyqx2V}h DS$̂GVNx$ q "΋${frVX&3n<.6`bPj X$Cn2f.}&whӵevI*ye!,rhDmͶ߃cecq +O_G~rÏtI}$w|hm-vdXm@kX,j@A ͘ GjRSޅ .TJNثr/e (b 8c=SD@5œVI72Anwؕ.} `ښߥnݾ`F]Ŵ3Ƃ^dq$vB~zv e 3Wwz+,"n^ڜ9e0-j+#Ir_ڤ%IZiXTqW,_q y<Ķ{~khő\sqNSE\t'f94*c*bȮx29|ٷ{?ujizU}ow]}/IF9_9ѣAce#K_ .|WKռ/M㧽5ϒi3@eBT_jr|4 ]XCjo5VE'6n_=y Έٶ<UU:"K z Sg>=={{7wf9'oxrv*FEB#K[\Ø7b+[[8U|@nr"4szrǂ3WX6.H W[/x|NfgSxlk6nh+){5ZKv?Y3z -.8ߕ4>mEv#_d:i4 JfTᇻ q1c#2ArB) X]/@K]#"^lpd v+=ReJ0E.B|mIV2: ق&;[qܣT= U h(6s/`>g$Ő#Fv&N$ZW^Iʚ]:@_a݀Z xc Y5v$bRiv<ǪO &V wVV ۝ -5P@^h<#==cT KgqqDb?TFAR<`8@dk DscF#F- +T; h2 m[.WMWds-^E9˳kw5ߘܳtz}ɡI+{ȕS og|b.Mz~󹞍=jIW#Bz ?cr! /$]sCcFI~aIh2ccv# 6O*S Su Id0NvHu9|lS)6D~듰<`?}\>hj,Aumaכ%ZgV[Tc^bD,W9&A_S1@L J%YW.TZ`kw[[2yK3nxk~^5زBٳHRRT*U*6jnY_=CC_׋0_]6 ǏYVd"q5@)DUoIcMej,5KKg9VTfR  |ϣr쩗r{a8YQ)9P,x@h{D!^/ݖ!g&Cdr.Br]b8Fj<,C2QfSHRQ=Tq]MrLG8M3IŎg߹*B KĐXeZK( (֔T:@WSTap9GU E^#6JKd&6UD PZ{[(F l8m+ Yw5 ҘTZZR$o5qi." &NQ/-oy%#.KA`heWhh{fɟg2ϳ8P^<{ r1xD }z1UAv=f? -GRcfA3qTm4#|{++\j n=#~;cAR_<~|KR>4Fe3"q_`~` WƢw'Q[3^yþ6R, @\zԱqk:?o@O~@_KR1"%ߵ=dcp(GʟH52VYRY.LO"⒖_YYhiE6US@T&j] ew0b(7 Y0 Q# ':JzNu9,͘X4^t˓'%O6CZLOAi! >bhYH뾜Ș3INq]$Xd̋IQsw{߆+a!k]}Zy#$e"1 Z&o\RM\`B-GhskH 2J."ec>G)аǎB>},J׉o+Kj3ʭ=\;ݓ­- vK,:j F8 ZU.XDkccBU4¤ ,^Wk|Zh%*Gɖ.nߵ_Հg:Řu싰4:wW_ ]XЈXDȘWm0D]t["&ˉ-yɔ0B!{_ Xl;2CZ>Zyf?Z+$Xsk_.k.Uz,:Z_Y-H/Wa1*ݺ갵MS+%oN&(01ԍfQ-%KU=~5)BN UXɡ.lF20}W'b" #SHQpF^eTx;8^ifdSr有a5`r%ʩ>=Ǒ5·ÌOtϋriQ /x2^|_lsyB->.8:&c;-~U;=K;J?:/^G5EƤM-otȉӧ'mևGN - ]#8xo[ߊ˗wo{[ʾC ^6$HC VX3/CfVWEo$D`ZyIh_x"Q:RzI\kDʲCCG\ آwcQc\?1ීs VQ8~4f'o#=ED緯څy3Շb-6|_6(&]V(L/o0\6]0AE;9vӴǧ~6,?[`EXi<@) eZ-̢C溦6>ZmZ3ʂ[氷}wܙ 8xbk)";QQBwHe B$g-^^xdgBpLR"R+_ŝ9pח#lՉp׿*#Xf5>ɏa?N8W.lL𺐄~n\oO>t1nGC}n/E{ ]NRSQ?}1Ơm;;*E?۲ :c8;*5{Gxetzh5bnNOʗF}^AA"PK$]3v+6DIr+1XQ1)gW$RցE 3]9̍2.>qDyuȹ>|r5 )").F*x7SĬ ,┞0 ܭW 1h-%?x|f]E,2蹅K~\ح4rE'X>T]o}[q~V WeJv]P':ZcŘQ-&D2\3h裢]UC(:;l{u!/?Z|TJR"Gł!gF*Uk,[|'pƻOR b>B\ CWg\|РWJj{xp*,Hr2U9!+gMLUjfP;,Z`S;LT%\X> CT` )ڔ&i4Xb1V(~(O(AÐ)^cA \A8L횒 JԱҘ"#nQΏܕSSq+ iT *;eSӃ:?0 ^\jpN> ~ x4WYSߋIF"B)i/P{ޱ(?fd;L)R)5+qgc#rz,cV!kYb$+ҿ,2Ll6%7Y¥72xR-V?I˒J^y/f0BJ7⇳=ˁg #:} Vg_%} ?[fyCIuuiVa>$fTjP]z:Zti_*> ەrSEg'99fn0vA@+(t_,7F{x!+P-sT i]_:`}Fׂ`<>AQ=U<=V~q1zLO9ķSS?&ZrejփξYh v5t8vP;"*+_h5^T_àF,gEæczDGծranf9+ Rvp7IdWerDb_]͹PLp[F;(6#`G vAޘϛ|I$J5]4;dH> UJŮlleQJR5$o#y+ë/0nJ`d33`?T ZXfL2T0џ53y-Zo}O,l"8U-eWg b8_ ]K4Q.jWlM& /"PfAācW2aYf 6!JW^$ Q\~Qz!_݄|**~;‘"hs`Tk(WQrבS?Szy`Yqct/Lf5ZFW1lbB+Xz_!su4j>8i^&3U̓?,SI, r 7/(ZDm( QIͅf5N[YF?Be94ğOzYUro/UV)n,V?T?/1ҷ^+^}u\1)}i6.!D`׋؆V}\}pmLtbfZԴvmlI':a0tNQ$$e%\KJD&DzyBi)di`0igehe dFub g9-IѬK7Z,I)g s<_JL]Olp$tMҝ]NgDISW%I^Suu2Ax{zlxa-.G,q z3Tr`kC]hI%mߞ&}G"="˪=+w b.:FI'Hqy2#cPU8cgjbhHi\¥Gybt>ASz]?z7q<5v2oawB{% PR)W>b"0?S𼈳tOiؔ@8\>sDsu9b~`ؑoin(ۇsurj׿~U۝FW:[s57̙&ZsAss֟1ӄ'~AMkI{j}}DbXA񉣻elY? azO6m 1T3σO;+ϛL;kG_zUYR5T^)w^tm0]QK>꼣]##E[1ƲYa째c߭>r)湊*YtBK1B|\PStA/Ka\xG^E%qgeჺH>4cǹk~F燞kvY 3POB p @FMu/6 :E{t;:\sq{{\h=T= j|yYoFR2RR>5P9huIZwI[ z!U=y]$mdl(CŃ]QFzp;ߣ JAA(Mkď 6uM:zZ ϐm,ud/eqa[߾P涡mh-E{px,+ 5{]&5(So\k ,@`<97AOEƈ#S;ƥzi5O|K8ٟ͢yB›-(Έul~RW9,^, ]bQ H ,5-Nř|<>I.\v쟧r]'/ά+-ձ$ڙ5j'vWjWlvvT]2ܴ3MP3ޮ)㫁 eChگ܋AhB|qE#@iQ:'ߤRz9^D b ʗ-5aX`:,OyB*ùיg6/MfUM::X! }O}576qd>sG)Yaˮ%E{rxϯ~×_7_rřÊ:7o>78kj.y:Ư^_DZU=#q+Xom7xY#Ϭ,{CnZ§eh_pXDxϊ\I; 7lu?>[#EsSaS _2ȉ H=sֽcΗ*PGoOx ~|j(Z\ y퉗X+TQ< Ђ]5-'ޓzL΅637dz"Ir'@K|Z>jtEV>?s}X>x͢,6}fN eӓRe1HOwdQ[r$\HQy2uƐF /$0kS>3H>Hi}Nx3Z;=kR)c'=LOgĝ?Uqs}VYĶOumȪzi9k-"KdwMIK- +޷|"6T>-n$L.~Sӓތi$>ˏ՟-=d;,h!UJhtpFWlvhWN;# N[#c4!x4/0I]X2 ef12$s4߷JK Z*:RLC"ZRЖs хxe,̽w=F%?up?gZI4dz,@M0aDD,db , atpҫ F0"nvY | '; | Έ+AK]~"# s غrq +g2 Pqb*6hl^k瓎]3;k,7k!5z:YeH7ŢigYVE䞚 j#I '}(NIxW7[ G2#(%ҁVq$,#F"q{ J[Xĭ ;v=]$$ #_syGS#Gʃ25wh>R?QRj0X6ɖ5=&/*?H+D @`mB|(o[zڢVqZwHKYfJ~si7Zkb~6 8E,.MmRE{"pg۾˳(ą(!Ҳ2p~%ZxCT\L+ d(E%͵͖*BҋzkUw75 4I?#utYTVl8:_2KsՕg@6 m?/q 8ݲ"dIZ .VX<8(/)W&]l*ER&Q<;#(ԀbZC'b[@6qL_Y9-̈́r$Pq֕g :4e+=\t goP[,Gd&t,xmi2)p@b$IO.`QŜ#ғP! q2Q<'7WFvIcVHOҫ$19sQPw5ެ{Il-;f3ri%Ӡdcfӡo9!Wہ"_ bp/3v5;ےs8LnÀS$~o\=R=?}I(=U|:/G޶yZxA)XGXVܪJ l Տ')E o:^`Ez6Mc[R^xC,(MNk*&od^C2Ubn/)ͽ ,nfc0H2GVR!)li5/>ůOn/e?,Ng5hxzkTMBNNz`CeU]mAK kq%jtb*nxwO vI{ fJs[|P"B+#lֲd5VאC&mlTЊ'7}遐BgU6YkPލuPzSbq:Gl)=:Lu&qeޮvTTD+Azsݹ [֏42q7=\<«تQR$qϴ šTBQ̖p }v(+ M@tI_J<7u]Q$~ RnXw N'")6E$٥> Bpg/B$h +yOR״:We̝5 dZmOPD݂$qTm 93F*3zkS16Ю,~%*$"9SQED-1pIĞ_Ly)pҟ:x9+5 l@nhHo̞a ަM3]aB 77K5v5r$y&:(z`| 6k=?:فʭӖy\\s" lCW!DfMrEʑHs )Qo - y%]T!lH{us<<0=91?kD}J34f p7>F§e3xBrl`n=ÕSSV_B#3>)r~9ôvaކ jY^$HJ0iR 1jxlW/r; ٬Wˁ(R}M:%0grNLK6 ɩ`%~2yLvFK TKK i%NՐ~rnsSH)MBB|ڈ Zgr\^&!tʌm  e^jDe;4(gEy*+~.!F ?bsmvmHrH\T\㼳ZLz_/Iuӷ޵}LSC&"tOv&&`M6QZֻL|4JJj  /(uC٤_PWd!v8SV3RW2YM 8a)*gsD"9$/)d)a ;z9p0͑Ints$xX_ٜVLz̵hǘ \GO7G{G;m7А雫Z@e"Ϗ#kOw 3R"~[yFWJ" =WI;6\Oa,6'"нFo}|[ڦI uqMH%:X(tyd;57S~]9b~U~{EOd;^'_QP%wY"OcOசSK#"yͦ7/}CfdUF.`QKJka)3$q;X$;fʼn+mm A) ,hP3X;*h-_Vsd0wg?ipխ4`k. g: G"4 oO{,s=]iT"ПڊKy.c@WuDY}.4-je"ώ~~!3136p&t }_ b?!N3@;yʁ'$-ZW r99ò$7^%~jKDڦ$7L5ܪ 6^< BDc+ 9Z+W VNWHLJV?@\=%?hWO5NЁQ&GԷHBJ6vbquHFMH,L@2V1&KUZkK[jsȨB2"(!05t x4ljՒSܑv'V9,IIeN\ur/ATɟ!ڛaI``0P4e 9v){7u  [ Vug}SN._=<"UVczFK{3N%{eχ]T+rS'vOR?ڛZ)!N4W#I/vͦ ,쫠OLS`Dc0̤! "Nr%1=SM렜]=WXD缲Uވ[c1l\n|<=nAM}緖_t~:Ք$4A$&4TdB沙-neQxf8y/13+n{FWFN`>&i/9`GVQ:gi5i&NkK(P/6x;$T)s?#S=\y쉍INIjUڍ8B1jv9Xj#i>7M׋1|ݍd@^Fػy$6Vcݮfw|'e2jj Uv&W`m_U/A:A.Fϫ>O7wLbMhM,.dQdǭÁ?xTi~7RՇ@,\hY_RͶZ`ufm-Y_Ǻ y- .*:w*RK5Y `4I~';7c$Tn'KvNLboc[A֧9UCއ.ygf:ϡmeLr܉涥Gr;lC%Yܣ6m"c`ih;b@l"MwX&jXNOQbQ6ͮAA6s/'pΗ\OG%ZsWurF9W,(S/$.xlZɉg5BTCyW>1ƪ_gjKuB㎀L 7\ʻ"Wh/C&ZGlN\%[ToYAW2l ˗zgwO>\<4Cʒp)HlI6#4G&]DqUOX,8ͳS]Fd8<Ư !NiUaxkF+]>*krnT4&keRe \OENILSynW$eao@l$`8GrVR"Dsнc<Qkے fvm :p=M;6uLrײ"۪6uIbhT#tfD{aBRI51ܼB|WvӶ00w}O?Z0 jU*J/&O9y5g^-(/BO;z B[ϐJGWs>y(|d3Fٴ?:$o:i`W93 C)0sk& y_h!D4!#lGae1Z|OL]]RVY! }KyEJ^9]Bʻ13-*(iLB'S#ժ m۽̵IJӿo2ZIC][2So<[bg=d@Gk܄#}&C<6b00Ap@RzS 0TI"pNrTiv.1򟚬: @tIY6i绰nkk9!;\dTY | S N0d&^kkhˑ0^r'$8JjsH0sO]-?~K6Iʑ.\$;lNeĐ"fJHA ZYd۴ɠH?sT :% Z괏)- xPLȆhظ-$|&5T!fpw?o/C٬HE,#!\+$BIܘseLYM=++N!{EwWkٴ;~}Kʹ,/v2/uf_60l{54TQô0j"΢u_+II$!=C7L)!c!+^4=Fl88tǬWɚWR Qr.duYū Z3+[dtQrR &{TVւg>`/SgT 2˦TZ#@-t>qL<+Nԗ4HRb Y$-%<;D1KBe3|g:B3huKF ZCNmWK.6D-o2`Amj@!kZCE@=5g &| #S$-9k p=Ll⿱y^a`W $UdR!f/ԓ5ا!؎LNO=?4OzbjZPQ%p:K3f]Kj ֊F:gKk)0ajTճr+ <.6U Z$P x||qP8 ɤxpy%u('5Lq*8$>*g/]A1+Vj[D) |f 9QT%iwz)<3zgEKydr-kMK7%\<0е[*׀OjLΡp,p7lUp̆ R\2:иOGS $$:3ᰇh$ $i055pYMͨ3rA$ +@4tG ^af';Sk } SRNr8"زq $hCf4r::dSa`J^Q&ݼ RVrS VH]=Ը ( 9(i8@bA 2V ʉ[G!djgi@,o3~vtڞr;PDvׇ9R p"@. hޗ[Oԝ-mk4Z 3z[%s$i(q^%iI%L620chmo ԠK Gi+٘fz=Jg*5a6e4ۊKGu_ECת'h׀-\pYZs;%Q%g8;X]vC@n*$by+ ZUB` 90"yEN0-UEJLJFXhUFh u&5t$EBKQ%VҖd 440oں ӴNX5l1#2V,5JG3AGl$ːL5gSneOR0Ɵ՘Pb; }je\tkK-neH4U"DZfúϸa;nLс*=cbźA^"JZ}6b8^4:Y8l"3O9:@IEMCKG`5l cbn_ 3ZS` Oe%/F: 7| 5fSw@PjjXI)jj|T:JyT@&6fXzX@$)N?zhX!H,q/|;{G'g ud=~?o(m‡Q;vR\T5P-.\mbN"SZh6mٞhm6:@>+YqE(Uܿ9GS*jԪSA&ZjӮCQz` 4 2J3,6 "D*+\WWT~7Ճ3ف8,Y~vF5br6ݦ&@ٵ!&K )A'!]f.X%%xWɲzMͰe V>wb/ΫFZ:(Zt  !0JQC|#ϦXh:˦&)= WN -9ԉgУ4w\]6XsW&\W2*j.* 1栆KJ8yWCUrm*ǿ 67䭌tKQ"δo[nNXǷ˱j.ГvXTҧJzlMȊ2.ҙZM:+_ɹPayb3Fw&|kLfIVaBRic9&q!6SaBRic9&q!6SaBRic9&q!6SFr$Z a"lTTZ@~}:24gufk;uu2pV=>tDtڸq R9ʸHVDPuI@ɪzE=yV"F3.qݻ'd9tsfS?qu?[t\#Jh3DPEu{Ϋ!FGGƅTXyŠjkO= s!ؾjnS% |QMb8?$wkou2!c`baI10f6FT_ƝG|}l0f5d0#?@=>?HAblx:4Wg{w_aXiߕ~`|m죟Xot21U~|Kj~6<^zmO} yxoم8=_X}./0i\^_tNtqy拍tmVsq{{}E^|ꊎvytl4tRNSS%GIDATx @Wh'^d05j Z5oV OQ=J Ac<μn ˷pfFQoaAc7FS%̠m69tAcy_}wx[F4-,n'qYˠM9|:Acys'"9'Z)p+|EAx2hA_PX"VPr3%q 4nZ+psM2} D&%GE%d῟bXND:B&¬X^ ҧ4, "fhX%p"%}Yd7S kF n'n׉8q k&mJn=q> mf`}0ouE}mAcͤ_" F`ωÄ䐾aFE)6ƚa(HmmEf޺Un@ ppʠfh9a$ 8o8@\AT / /~eX37MÛ2n7ml6(zøDՠ.xy74ִBe˛{&ڃ}]xM0,rYˠӷ/[iM2J x!ah[P:s5z/POAӏ*2Ʉ\&!Iي՘BJ? ,;[M44Z)w3E6!A1&dL|bXhݯ;cw@ 32^MX š{w2;AcM7z^dIf<u{^ݝ.W(Yi8+qgW yfX3Ψ8x];EI}WQVŹe2J5Ӹ3rQG('Ty+J7\; k&]B^KN\_[Xz"T/`iT[zXă k@bwbbCwb SBw4@PXP*@I k2!, i让]vOMY6t7$5A{h/ Z0qH-h4{ZJA>XWHK:TI5MDas&pe IDž;-vY|mӕ=:bPHDDjIT5&&D!mA- ղ'FuiiRciRu# S]Z jWuirTTZTƢ ݈EF~uȃfcRS{K[JKKKZK@VQcK)&ZRZR@ii)^Dv5~8U)j*jjT쳊ZZJ[Z[pKK}qkVKQQCyVVi?Z:iIU|85pjVjjjV*$Rwjkj[[SqԬYߚX'+봃A 0 9'/oxޙU,1ҬӣPamcsԔԔToNXSkԓ'!Gһ9{ ZMg.w جYS)));Hlw4iGJsl;RDw@~:`6%(R027 M-[şt쮪]{a{+ Ɣ3P[;J ˙3grA 4g=*a&Ucuo@뫽w$=6*=}oXH"OUߋt쪂dbw廒^pI,ck>-O -==joL[ US{1?bҡ 1(p1g! ڀ{#4QM4yE"8kEQib~aBZm9ðfv6ؼ؇>DBضEa9c0Mv4 !՚ϋNNނ!q[1ye*^?W~=َ Rh@'ohEM}+!Z:jZ\wiE=vd[ AұLYT)ݵ6.]wo#G.=hHBqm m Fϋ iٌTfӿt' h5$F=Ph袑z*@}r.*@d, $e4qcq@@r7-l@C-bz.gBl4e@g&tFJ=x2htq4_O4vF+A`Cqi!ڃK- -|&Ƞ=82evY:::ii6sONo^qNflR%͖3V\xC1AVqPW˓Ti Zly81hSڠ4XfLjM᧙н]=f- ;56Bϥ lc!zӬӄbB0h1Tc 7Q-x4 ,EۣZ-d 2y)Q Z즩xu3h/z5jgЂBNVYTl]mnqSlZԈEZ2h*Z Ug PںEA3h&ǽUEmZ 3hFMγ},/ͤ{30׎fC7d :$Bg999yyCMxȅZT۟ggSu'h=ڑfgjҰv݀BO<xVnTWV Nc%@Ps;fQzrOqƳ#"D䆚w0hF-(FΨe hs65Gy*_j4' AMо)GiMBk!h8 jGf !O݆&g6*#5Tq!wk̥];Ac_@ˎA[U_]KmTlȀ&Zy>zZuBm< >BVhI+$#BLΞ@h6k@SvTWW']iк hnP#͹C@;s@sEж#-G/ҴM,t֥+h i*LJژEҴM}G4uۘ$My4Ƥi|>2@5њׅ}hHݥT+ʅB4MǞVHS47H32h~[uݿOkC.&#-rTn~ deڀ :1I3l Qj Z^W2Tb:քCmȢCt>0E>,|6gqя:#%5M Fվ}%ڎvH^:`c|/&3xK W <m#5;kLJ}S)V?W?Z{V\f6{M@rh $uV i!l<-5]؂ bސCyATb^+Zi<}:c]qh@fbiFmydC:ͬ1kA-=rNѐsY?刔>-aִV3@glA* H`Z捧AL%ao9mƹ#OƳA={{{ݡi}x4{iF_ؼO`z9wٴo@崭Ay. -BZ&CZh~LɎ:-BZv@[s;)c.[Bkb$EH iҦ69iaZ)4iaZ4-yZ.Z `rgHSg&C%nsޖeUQ~0<OjGX4RP[άEG-M@8iSuyQ*=V[Ծ3X/t$ O1d7VSH3vhB!l Bj궝am譥0gf9W azTm;4$ "ҹOuip UnZƤvz G$#tISg֪f'- As54UJw,!T|d'%hZ cO5~+Av9 X 9Yj汜M t7O9c6l6j~5%}dЌJH5APQa^gl4]z&Ok%fTt通\ݟwjA Lq{X٦x7hvвwiS*bЂ\/A AԿa!-QS?x>r| ZQ۠YP\Zr@վu ZM8Ou!yջNA \3Ϳ-伃NƠ\Z>I:j3h|4 -ǯCKl`l>U\8ί@er5˘Ám kѧjg{i;%ͪ2i~ ZOT&-͏q':沍JۙǠf|4|ԏ mp M4^;hV-d5&if;iiA̠u?ͪ^'mAcM =e4-g9{^2Ơf;GhA dG Z8H>J7h9>WginZN-ʠɀnp0h9i6_v2h" 6ʋ0){mvWr6Ⱥ֕]ky[#4_'4@.+[mgA񃎨qm4 z,ё大U[MWf#ހ2h>R~*,kO?el1ge|luLm qK<k}k{u8/vmhP;zAR W?Ͱx/vk;#z#fi96"CiS{kBoHbt,׫.>ykQa{`Bջ|^2xX4="KNLB^'ĠyLLF `P豙A8wy2h~W_w˅|`4l:GVU9Voik8il*MKoruF3[͓ mP]3[@D9gWz2hAZr麡5ߋ3h luکGw2hsVٓhUOeд̒dYM]Nl 6i=vH/,w4m87"B?j=7u ZM]9JY;i ˙iuz@67g.Ҭlh@i;əfҬƏ虢@p ;4Eg\cO^}m:Oi9,z =k[ASo ;uv1hMjrt=&M344iEZA[3e@lZ_3h*5S>v[ZWl ڔ@ !i<oŠ7H伭ơ˯E4?QӶ~Eˠq5"g 67РY宲4_)qʡz-$A >Cݯh}mAs L iz&~ZfcWfcoǮL!a_'43Y_yO~!a֢4 ;&ے|fV}iόxFC<mI:-6;h_0i#kcAqs_97X~iΠO~-=hBJsў*}B@W&t0h垜x̥!-?vt m_4qz@ΠE4צգjqTO!i=M Qo/}?Sp@zrog~&HtBܹ^%hifR[Cfho ~ѐNs2ZۢăCbΩ4[N?AxL=8;P xȠ{?4y>SΑP-GF chUWl _/hmE{6 Ui4#fA@{̃8PhZm܇+W<89b|ЊU00h,7hx0Ұ+h*: Q=99`nFGWd A:F}CcSW&4:hCꭇhV@e,?hb"\i?L2&5FmF}Y8_N<ސ`4@1V5hͧ#lZf8>`po 7=NA)hASaCfeM:AskjpDT؃ӟOо"nsfg;mHݖӸt=cO&7"Ԃ450r4/iCs/Уi hMZN@Ӡ+y #(7x{'͠9/|.8AK JTNm~o4TW .7<@ap~aO1h>>Y'д{؀y~͙>.e"}[zC'І{ȝy|M:kyqo06l7yzquS rjڐ)Ͳz֭KڨV>oMi4A!;hw`[m$jðSЬn'd흭^~yç4VMDyR}l72h#>tmLgZ'Kuȩa/neДр-@᰾fdͦt6& A)ႏ6u7-۴,޾a4д=Uzà|-σAoBenڴAS:i9Z 4&oߴi;gӦ0hJ'--@3k7]+AҖ_g6mZ}ev,6]x3izz|zDϣsnʖin M5[_:6ݥ=t,o[G0o'62h-wiY Vgײe -ȁN3hζs[0&N hrD} bZ)[I0=!hO{;|ٖO93y,WD.g%I!u(uiw;7Мi=朠.ML?]8bI?dȠMKl ,gn5Mtj3/  iW.}"qyqܵF-[&_ݩD(4$jߥ]7 eDVn9#t0VpNV 瞷(ZHFQM9ku{# Q00{rt @UP)(" 9VB7,ז3V!g]oewG+صSԂܹsڈb]86h#Za$Λ=A4{A0#ځwnAH(5r%A*j85LN{31Uw=N K,DR2-6m\Apzu;ط#S;.jb*A0=v9RЬ^X`vw vX;"C#f9H8͡si h6]FӼo8zS;a𵐲;ŇX\ld4h4Nh괭ORm4=g_%pCv\򁢝](˧wxfzC\'dէY @rV^=g@ۉ\-7b>Zr :1h{(nޤPySr@._1/t2UMSg%Mt\l;s$?V֔@ʕq FÜTO4U^WFL^5xGx855+4IZoC ]e{69)u$M,[D7a}PSx/,A䐴&#R6 O<HK s\!Voi}Iә3f7@~IS &`Kƭ&5D"F[%#q@{XEWz?vT'=YxLr9 T%d(*)Yx*!W"=Tb{^EZnqѓ@h i Ĭ5S - ZX4[%a9 htHJUQuf9dryt;2Yܬl]1|YE%ݷ6h6 ޟ4m{>\}3grJړ3O@nV9`Z5Tv+*T Z`O w47*lU~r*(U3`' HF'd5bͭVa(5 j[pGLN2(!_ewA>Ѕ$L'Zʏ62,5h<\4\64Ee"3"C&VD23?G?"3"#` @?L,h tNv^ShS.<'g `H)AW:c1 Ij$32(0|HuiV #4 j*UdV+gٯR—?&hV 23cLI02UTHj:Zm'rƨfOmH}utK7ze o >ČYEV3&` Quޕ+2d(uo;;j~۽:s&[{UB̌kpJ2DAgH ,}"@[[ Z NySG6U13 ,-gr/G B./(!28B aQ%@ͮas5QsǬ\2Mcs5=";!cݯ"v`Bzv2p0FW&X$$d,ĸӤ{uf掙%[#3>.l62I@0 i5NUdS-[itgPr(h +#3ʬ{7dd)!A$+[N ybg8;?Y9(hO`g`l;e $UQ2 q~pŹM@}SH۶ +ZM]_F( B ;a)сw!2WBd"hD"8$Ptxf}XP~:4sNXq6Tqq^^6:Rڀ>PHq9HyjE:FHC s/jǿdDвKS.IRvm@+v[Y{ fHiMt x :]6N4ÈxNY=|`$]Њ = /YL %ﴂK+WD@E_ysڐ9n. VFжM8'=ȕgIr4pGgTϒ+q/4GyE#ٶ 4k@xdh@ hWz|CqqW(Ž\̠g$w\twՈ4 r<-ɵ1TkkkAO4sҮZ0A:+ & >0y'(DfFMXz$pr_#2P+H^(N'" # Wd0JVaA7x@:; fO~ʕ8(ˬr\$**=tEگaXd~EEIUjc)>.BFRBSTA1VԸr9G|]r(56?E@ JKHDaqQc)bD$@*`R] >J[JEDZEI-`)8B4i<$aQ'gm)**Bd @+BlR䩥h,IE`lZJЧSP1) :$P|!$As5W;ZZGV(jm"B;㢏E4~ 5V+"Ʉ!Z m#4As+ *7<}֬֏ҬVA^ !( [VbJRKB;p+ UJ[dH ᢬; t4W;=قZZZ1K–R`CݰPa?$xYp `a8w.0hCJYt~!aܵfQBVюBajև`X0K"'Ԋ5?lڊJ@?jdN#Asu6O _|+," wH"~c@)p,9ܟh!g<éکK ,ڵ'THv#Z@B f?=ToN_ɬ'~(?$ fae /9B4h>A-ϑrڇ#lN?) p3q Ԕ_TY ͇ɓʁQNJaݟzBjW@SE#V#59 @Cъ/ɔc%EC0A )E)g+UhtTpO܃Z@WZf )DJ ;$X;N+;Rv8R aܤb>pTdWI<&BpdZGLG 3hN׎Xۜ Ԕ>Z &cшtbь!䑊[ b;LRG؀p-:}n}]D0E_>`FM*BXcE4gp3[,c @#@~ʏp0p[gb%OTH" g0ܤ! S;C%`dp! })Mk!L|{f}v|RR)$%e/PZ޻p{b%,XK{΂4MAʹTԸ}l@Z>Y1|UԌf 0!bD[v{Ĥ#.<`A{LB1!u¢pA Z;ct,A.@v4%?rGO`Z @&0r6,H\:4 d`!XL`>达+DǼAJ/ o"F6<@=6itGm6lﭹRnvZWVO\8X;E>`E k}҇Dc__ۋ}X@aI@h‘߉AG v_@Ue 1Z@b24Q@ch'`J./ NTdMOD& QOsVt⢃A y>_:n7($#Ţ)P&'%SQrn }dDw>״X]8Mp$`ȹmA%qdp$ %KF-ǎ cx8pk Vr{-,RƏD$1ٲhٲe A('$$ϛGn³kHt䋊X[X_o9vPߗA .2I"p+rҲe AL!gDǠlnN«ĿfN:y!8y[h"0r#HnNcTo7K1bob ZA /m<79"Đ#|#TɊI)rs,"$YE#'MB f@~U-A`3)^e  J`RC Tir`?'`!6ᄤGQNfrb,|??p3-PL-A|hDd'L 27)C(pj@I\PiTb-Y$Eڟ/ǠtB̢/"~e4 K+H.?j;`ЂG_?8wC@`q$k츧Bm&ڼUE!!X6p[^h_DuAkDtZ$7GSG6T-RZލ.ֻOF낌2-k/ k HbbC#K/ K׹o@hLv=~.[{'A0hIENDB`plugins/limit-login-attempts-reloaded/assets/css/images/anytime-min.png000064400000030767147176754540022422 0ustar00PNG  IHDRJ NtEXtSoftwareAdobe ImageReadyqe<PLTE*/@EIXz}7> '!(•@u5˚kskZlm٥蟫h |OKzt$/Cr {˓ o1'!I{;;;&LJڛy{;bUxW-JB$KBII|ޢ/`uqKe鸥›D7- oɹ9+zš6u&nhlu3Ay$8U\7sH$523ѧ _MFrg={`[{r4͠x`NKN&'dI?TjA D5Msiޚ|WK`d~E4`~k'v?/|_GeQF<`9S-&;.V-/xd0C$kQ?KG8fHLT (Vâ07T CIɘV 0CL{X*>DR`mHF9nz'$q1Y>יE>ǝeU`9hY>wLQpqY>b$mf,|9<˕"pa!ā8X[&FO7G;e5a, Qv _M3AsaKϦXMAֆOOT9 id 7E)R4d/{ oZ7Ų-T*i~+h|H,d@SODzS,*~r!`h I!+Low, 44v/cta#W/t)xeqUlBC;fkoty(|pKГu Zi4t+# 2y 8^zl+ nHCN[Cڛbo, |,vhOÄ*[|/O~gRjhl#t풊 &,,{,v<4ÿU04ōB\4r+F(]^4q=K5t亁Cߩ|O ^Cۛaå V7oSd&ǿDaA)<:X42n `$t61(h+fx9 3E% V264WddaVИoϗ;!=r6^Mً~%eaqNv^Nd`d =,11YCp?*DQʼnG63.QKRCYZة/EVCۇJ+` Lv,<*DK&kvpT Z*0!݉R. m&XxHL^kd1=bD9HC=cca [m$mrrtHcH}.:uiRV ͷm8tvrUCS0/8`c$g'Jy54;L peLnҀIN2khH)Z8d|Ȁ%f52F]`44 :ZafhW'ˤyD7V44 ::hjANY6 9 pA =؉R MR\C:p"(`n3(\?Z Wud|O[ 8W=ĉr<<},v OHzDƃ$"upY547gLe<4mjh[ 8ڂa(A%?s:j=5kha"c8'J547""f2(HÈ =//劚E= '/EM.&a  6 Jl%]Dꬣ蟬"e <O{p,I?ƉIB5p+iRpo 0FQYp(]d(ƒ[Icb$7)ymES"ctQ $NY^|')8TQ{'J)vۤ:a}cr8QJ!ZݎG)8ݠ`S (%pq+8Da0fߞ)8`I(`9:[AKbsb_5brh,C''JpI`{ N:C"~+M%F`NY8D"`\+6 Yr!ڱhrN;ىR KsT XeQ€8Q2P:s D{qWrޝ $`a[I=(D9 Y^w9Q*m_i%0b p`ҬzlE{w#PKV- p)@7t7UDwr/X+i!fu 2q:Q=q>;'du %tHq8u4cm 0bV`upneH'4-8O y-]?Sx'١ E-k%Æ1pIJY닓; 2'ƈ؄!\+Cy;׊fHn0k,b;b'[L(IA"*˃%$;)cNH| e:́XD7Z@ RpѓGfdv%;Jn{onCEN̛" 4D ֏_w(sZ LCkep=,mqp|P ]FIֹe` Khhy,fm# G1V!f_44elX! x``vZR&` k9-֎TZ=hX I/𮡋erRBpF;ihˀ]݃QRjpkeݭު6cTE Zj+jm(zH>vBTaI)hkU`_: E Fi]CFHͶ XX\, F!p m5Ԙ8v"#ڝ ܢb;ңih,xf2Sl2U1LAصB0Ԓ(wbd54eN (2Dj,^ͅ89j6`q .l}FJČ5Y'Y~ ɷÑK8S˥2n~QЈaK<ƭpQR٫{M( CИlK#[ҖQy56dCv~[a{}p!1R;@W]+0#Xfy"mZ٣>.wµ]<'?OY-FI  5ݫt[^b;a׋{O9QW\B+`FXȚl֐, ܒ,+y{ƖuVj~(9 #_o mָo҇ac(VWvmYF翞81q8ݑƉ\n ] wd07 mr=GU,]Xm쐻tp$D?K8_d H õC :P{>h{nOn+Ț&}ܺf@83Dv k$J@?^ 0uYC(z b[5!2·t * YEP!_N X}=zkUw\nA˗ӿҒ=/_nI_nY-\fz:/I zQ,ԝqAIeoRC_3E:q32( f2loy}櫪 nozR^۹7))=D\ ;;!o/*޲w#=zm׽hxe+p o^$^{SݛԙE/ԉ(Ux xO)s$*ZK_Kۢ$^&"=3iRGl܃-W[^(`(JV`+VU> ~5n)·hEE-CYCw*AR [=zĨNtp8Th/.X ys,{͛(w)b~oqE `ԿDǪͷs~?.''9fY9pwcιy&6.J_@ `mE~ެ9 }S?ewsfDiBpsglC6 XUZ7 $gV\ftoSBS5'ԩYw ]f2lܩ/)AԃNVƁU{.e=ow2b9g[S[_0-cZ"DsǙ)ǝ*7>D wi޼8\/ġRy,~J01fXtpkΧ҄_aaإyϛS/0%xgy1H@>3&X{?k@yy#\| 2˸5 8^2. =O` y%?ṮŗB>B.VP;pE:KT4K3T U/_S5?~~!,epXUBo"܏LQǜH>TUGWWO9Z"U)[RRDbߪP^JUz'YIxZ"|u5x}>hQ/HHDD=7A^A=WbQ8Nr))/R',qOLFsm7ȦM@.R`4DTRr,*b[l'\,^;i4Hz5BIe4|v4A&݆t 5S4 ^=:=J -*c~A7P7Pⱱ)l V m9е_sEE D/|Y|qJpy# F|^:ai)׆4Kߛ=?"ƇN0F1(˿r:#a"1ExJΡc@ 1bb@#1ܯچJoC\|;)=Pb&W'r}K /ϖҘm(HKch ¥c|* 2|1TF573_"9k.sqFEE\xTW@6\U@YXd;!]C[ܐ%XCv6x{r#+r $+ss3@\H'݅(zB]P^ToV|Z`wܴ4xAab.$p" "H!Vp2'0#JmӺ ݕەؕ .`ٕ%ҺP6KE4xyz$,kBm'(?ɉi&8EWH;.Ļ8LϻĮ.x7mc1s`rx6}@|c<8#qƙHL<3fI.gv":s&3Pw=&XJYlg"<qHq= *$b7L!Hf0pxKȀ\\&. 0GDȈȸtOg ,ㅌ32!ʽw!=E2oLZHeD :#::q/JFr('KG`*oĴ8<,3 L%ǏGX:8އb R=o?bѨ4dfpR`*6;Ps{@zzxo= }+WWV{!@n/j?+0,G>_}׫WC.~U}ŗ˪]S ]~ٲe:(ֿD Q(^ w C6Z/O(RE'N\z/XQ}i ^V_L1`CEEE_Zd}ђ닊Xի,9PJuW~U^r6fw?|+K.Irt+@[icl;?ٯ~ٳ d?|.ү. ^]rk?@_b!@P*]l( їL;`׀+DG_ ݇k}8k:Kvc4DQ(_wm R̝&c/[\;8u@̇;8r!nq7B"orݱ+Wkݕ+W+3_A+3~+W]r!l s[|r̺o?2?f>6UxAENhǾ?3y̳_r2!3FəɷCwl [@2g&'C^gq/|V'D3r09("V3ivٹs'z$ />N!ƬqƯW~.?+xCӝ\5M\VT~+z+'?اx 3a0L`& 0 3a0L`& 0 3a0L`& 0 ̄f0L`& 0 ̄f0L`& 0 ̄f0L`& 0 ̄f3L`& 0 ̄f3L`&/; IENDB`plugins/limit-login-attempts-reloaded/assets/css/images/backup-min.png000064400000034652147176754540022216 0ustar00PNG  IHDRJ NtEXtSoftwareAdobe ImageReadyqe<PLTE*/@q|tz~vpr}s7YiyoݟiogeݖqqW؆y@csjcrtLq{qvwW6m%tRNSS%54IDATx `TUﳒ}OR} ib !1v !dcg!;$jBI4BAൃ*JTFPqmp[{^l{:Mo}V%lUun=w[s:ĥi9‹8`.‹8`‹8`.9`.‹8`.9`.‹8`.怹8`.‹8`.‹8`.‹8`.‹8`.‹8`q5~Xhy=~_w/o߲ݧ~uߝwߝoGz뭷vt;wR7Wsj["kvkXxk?V5;/Br+X_{;}B40$K}|׿c$ќ_2V3ӯm !jXm 1x%p#.?X#@dl<`eYXM|{ iӀqQ܃$HxϚ =k~GfϞ5{=,\s4):ݳk{  i4@ KitFZC_}׮_ /VV/bkRtR`zX إKFK' ^Y8`6s,zs4~m| ޟ۪9`şs(so?BJ$o9`q=x@v1 +|& x?䀕\L'lhAJ[l)8 H2?^?x>9x})~}=[)bp|}߾rw}nY~A~߻D-htzx߻B^,8d]h-B-K6VD w -ˢ[{-lw=a0+@{]Vw{w;K 7E+ }UoU{o߻w7 ܋iHR͖ܶo_ }~ NOO=VZ:Qh+_[\8M2捞X[;HؗHq,$V9VA rL@xv^+{M:"Gu-q8&(gM ^BI.8WWLMqB8|9.n(` *S\W79~JTR$w]76"&J]\]#]]&ڛ tEcc`lB/r l`bӝWR T'jcWN󧓊ū?p%wu 8e!x86f Yp+8P&*9xkq81FH(!) 3P溑% v%-\_spC\JrGoذ!*j@ sh߉nl{T;+оv!QaCr5qt6')TxGǍ;f0q'Tu#آ V,%G 7brj\ni3STD|]a R-,$qRɹT4,k??*DUU0WǬU~0Rm\yLuR*S9OlD7GEC&5f7T4$Om>uK18hWtNA|ž.Gr+h 9јfH:!τo ;q?&~vB"&h)'!!:rIFׄDU X'nulgvv||b|bvu%f'f[|||vb DD%&d)L Pp(jԠhas_OWWO7}||BKO|6 ԕ ouVO_p] IVw`8BƽU@ ^>l~>Z珪MJg7)NQ%#\lVPiAnDk{+J` 8 |w#/Ռ |tRRYLJѦZcQԁl<yHU8ͼ[:Z0rw߯_ojlFvGvD2o (Žwa`@KڜIئ__s^s[}ORpo #})oW*=/ /$rs3n$/3R8A|3_Q|̈́m[y ) o7/MeeU~E|̈́˭?ˌ[F/×-F/={An7_;9Ά [ j1 ^AT90tݚ/p L'Yߔۘ\Xؘ[XT  5^( jl.l\ .͹W :R#bqGcEnHaHHcHH\Hnl  ),l$cHJL+/p1H:[4vW RL20Sree!T^QVpp)+;\ ,>ru?$=]<|2"eUnj Y2e|ffFA"eif'~'ՋƖ򬟸״̟]MfXfZd0q~ef|Г@xI逓Dan K Y)HwR3 XY箞N( S zII:vE"0 ,yvѹ$"$b;#_QpF U90Iyx?.,)> `Pl P tZ1I \ N:۪/===='a;y(؜;D1= oR`mc[62<3ߞ}Ygm ܺՓe³h+}+³W\B3B'uY[q &gyyoX)x+W\'^3Y𰿷yo0uudE˰ 8I}XWUQ[3A=|áC!PoI,6}k0hQ b>`v#kg3']뀵fV&]뀵 u'di+K$4ۑ,krOW9k8VkxA "倵  XI4X`0Ā]-Z0oNkJ&ͦ_tqy'֖hpcQ"oMvHS18V;ln%bؾ+>'z9`q֮{^iH1m".ENNmz=4Nw8Z|L`tuƔZCÆ5 1WN*E1֕)zGgyL?t?'QX<$ s LHe&W>(\12bg)u^B׹(/vL|`G6fOBLg%5 vfѢD\֞&uOruKv+cj{V:qIZ&T'~HgkCZ!`]{5'v>fHu+e}JF;[I`"MlkSz@QVڵ+`- عؖEQLWTNW\oZY(VI.4+;?d OzMUب4" SU[:j\{0ӈJ[Io_:U< >iҼϹԮfkիpthTUFf^f\14R]\y:qЉ| pthk .1>r\6tqW1 ]S6ZYw:KQ`Vk:G skSӚX jQ"i;+$:T'eVa4WOۗ5}Z ]MҶ' j³<蔺-5R̋|gϋprXjIZufٻ;<=KGOҵb Y^9~c4s֎z1 #`IÆ6Mm-@Q[Y2Nv4i|x%s^,JkIv]O0XsqF+'qzד.\;9[0C?h5\muqZۥi.֭i#_1OaL|ߴ֊bY9'y$M֪uhn-ě!?Je|WvL*NıuF+م)V _՞Vz僖KuMcZ\ɖq``Ѓ+AwF'Ye hHӭ3/~h!4sh V${ ;k_Ύxb%sz皿d1Ja.K NR`#lz'My>~C .9)S'YxViM)iRuV=>2tL[2RV.-ncK%;ۨ)%cQgEY:~Ɏ-.y6)_nP.uLja8=b-fӶ9;ǘ0jS"RSz6FJy={gg&t³̨M. Yi[{:I/wW#ۦ!S%Sa xRz@!^;-x!y"Oy?S.y YJ;(4cEՀO8)Fa+RCY*\yͫ9Da%:KN|lp^Жe𕴯R{e%R#~EIҊL PYӒ"'x{% +%zLL$XDLK= h;&kRo12c6/Ï D.V{td5ftz'xr3K]?0|z6SI2b#q)fU8F2Ɍ; *)0±RK65,iI4fvuy'ydTFT8I' k[_5N?*S9W$o1[| v8j>5H8fmgHN80;I;WfInu^7\Mـ들~4 .jU+[12C kU*i Y9JS({֭"*0Wr0ʹ' 1f\yepC˱+=KMXŠ}W|W:`X•V܍+NN\*v4akY7X < h5Fk8`+;l4:P. aGpXg])`|j,t!\OWniX~EY| L}ZlYm] ?^(MU _!-?Ġ`F<Тj\] XAjlJ7?+RZ*`%U`"Vc`W't4ؔ^<1lWOU`~%S8F Ȣޡ 6m7L7XaPԖU?+gUm2~^OF{bժ7VͿ{e:^\nz(&`0Q:F~,4\U tlb,Y;Hp\o||"o>&[⊀gE{mix0:4֪ WqEEq"3|7/Zt~= #CSge*it_ #Eqw ) [3/OM?^ฦ1Vw> @cM r 4!΂LMMqEZ>5-ۆ_Q6*| 45LX@nȍ7x\+"o’&,Z\nq¯# :gL <ބ)|hr4#MqMT<66FMt$n/+ԘpT)F,ɕcY6&ldte؅`kkp bvySP4_UE@J61sMb\k",UwrlD#ɍ@6 2a `<.Gq_耮X MlYtMRpB @ ]jROʌ1ڸ'@9tY(p(06epѶ-3?/J l k?HJfRw``3Q见f=CoP;7#E ec|OR*|xD39*z~5Hn(Jz#x׷%i߈l > g6 !B1g(i?F,޼wGyxlh߹¶#jg(T%վ3pC;;c(0H)p23vTi!4| =0Aolo nDЀЩƝ; p ȐhOOLOHHlMdX=m։؈W) Aau; A}0 ,1bS,xC RޟTlDuxƀlI"h#+Ǽ;Obmx.fG.Be#l.B}0ߕe;Q<?<| Nk/VĎJO<>`ڧ ..w_E;#'t[~v i/#ڼz ׅ]HaX5vX%!ׅ9pg%zck? {>+I3 @ԝn.\^];a`?՚!ihi [[#X ^'жOj= ޔY _z [zAhw"[)>"zdK,; 9~wV:giV"_'4 !TĜw -:Y}BD1~]٥lY|ܡ1rwJ8jR3drw$tȎHHǘWvhlplP^r[I{oKK$0 û`D;27f-x@X3k@̑$)_2v C.aAP?aA1|MM Ē&//h׷#@!l0 xt;Z8"MUj+t#%_ "O"o2aɓt 2$/@cN2TrKL9/dyx!bhaqbΝ:w'i?N^4Ԑ^)z&8Br3CC2Mn^n^αb43#~7"%X1tC #lnndbFd{?:B^بVRZ_tC0nHQ%,i!4n,e?h㇤+EQ MFs`IJnSR7/KK0CE751VR2Zo_eLDIqfXYYe5ieD7KMZ zpʰ £딽FZj _4X]{jz2z\  Lҙf[Ys8 `2,@Հe50.JFltIsM{2zҀnMOXfZOAC"-&3;h`,`L i?BjОSH1"!ˉz_"PԄt@[q@=-a cH;B2gn= 00*C/U:_BADXIDp]xcupu. 驈]%/ET'C(X`Q vuo~)xB G [7T:ڨo,+e(btGtt .AQ vJh$MHG01b6 mc 1/^/pIZ[/7-`ә/K<!T`OTBl%%h( f*Ww7{vCR݈i`OLCjf/[7P]cIS4KuK; UW{K[%lZ/{"C!c !ӳB#/ b8!s0(;o2h߳lMxw g7"g!V117@J,<4wd')|wߟۿ/ڣm5trBZXLiϭ}L}Y̹CX }HPg;b;t(@Ϭp?gwoퟍG#d,~g۱'elڏHzҖT8VYHQy$5K8b&^}}t\l ]n+ 𧟸G}xII"?d|w>OV M@xVopoYo M3`Z"t[Bf8 ³ Eހ5< h`:<|'P#$z%+`~oH7)-xo &G<"x.Y/ G !"p;;kL|5+y Y?A%+pr&'؅%½B::rfҺ:ov8ׁ3k܀M:E]C:<`ANuyQ@Vldz0y`= 3&X/cHyXoD, ՝suY` aapb\yDyKߧa:1B}RRuug?.T2xG 4_6qr~2PI?z C! P u(v8+)2Q23&Xm4CȡanJ[cn*2LM\z;(57\hP!݆ ThH74,`6pe4i2A2%d$hwCn8,@xP4Fpp dtzmNӻ{TR?`^p7.@Xq_׀^~7@r7&a~^o"XE-n!yElm :rnv m_AO^2qJ,ƗM&lT:>9cɍCVH%^NxƗ lݸ#1̲R| ^ǂeq3Ʌp!Z6t,ER˖QrYDp|!pCve.L'p|!^pFAk!B )iFl<`2q&!f@2 "CΰS8q;wZ*Ȧf-&5Y8/S1'gkTq xQrɴb=V$)WـMl H^AD!ɖLWW`M/ry"d3G!0o=%>+ZMD b9o1$3+6mY͑ 0/ߔl"y"c3V?ӗɿN5"/\~y5j.~7mzԦM˗oG\0sq\0sq\0sq\0sq\0sq\0sq0sq\0s\0sq\0s\0sq\0sq\0sq\0sq\0sq\0sq\0sq0sq\05o!3~nIENDB`plugins/limit-login-attempts-reloaded/assets/css/images/call-min.png000064400000032557147176754540021666 0ustar00PNG  IHDRJ NtEXtSoftwareAdobe ImageReadyqe<PLTE*/@7WdƉs7z7y{o7oȾ#oGꟙ꪿[nWHQ$~X,D" B`X,D" B`X,D" B`!,D" B`!,D" B`!,D" B`!X" B`!X" B`!X" m.@$IAQ(`;s+Dd3UQ~"(1N vG`M ͝@'xn`Xi~W_oN;PyTp׵M9AV7^_CۛUAؾxçTtkKt̶$cn؞ RW2㤭.&Eد8V꒜z_"o5 6|ĤubVpb2Ԏ北X}Ń݊缮bGN{-&R1m/@ľ\)=Ž͌\(:ģž\k)^/؉vȣV%yg#v`ŷ25(iDj[m9_^s=Oxm9 pҷ/ɫ̔/nzߪhb'V([ԖH;[i|J ( big.h㛡)vJyGn,p㛡)>$]-$lMqcbV% fh ƴ͍<ᱯuVwr[ NܗG6m2nKRWξQJl+-Y'$9HB=Ub:jyۙ?6WY%}Z)~D{j ]ou3l!`aK'}>/ș3d7;Z&O.:01 ]|op x몰50a5h?;w}︇l!B;ރ{0U̞眼-v&ݝ6몰T \ON! {0rM@*YܹJUʻLv-R+0{~=G͏*B9SKM{: W[VWw4|?3a Ç7νGPDqL3-foUTiؒ:{JAv뼒62%dȫ)/ 7Xb%K,\"穤q㾱c`JީvV9F2眦-:NyKlT Ƴ~h֭vZl ZZ"DM^e^[E!{ovCt Vhu@s\=zgh6X}c-# $sGCĢQu4B7F}!΄96: ++y;[x襣UG*Ul,[Gg襜}+< LknϏ~6@7^M4YXITb/Y&'#5E:6|LWxX_UY9:/W˔"I.+<!6/JR, )[9JRe&'O:kGu58zX1$ (l+ʰJY9 U3Þ[^> w;c?j55` SyyXFekaJa$̰a*5cJ|J)U~ó kµ, ^0" KFGeHrtX?h\_HC)*|BO1hC*pWhѣ.p G1 H/ GGDp.`(S_XZ #J1rHUأe:{YR}6-*dl9h$FGʐ]Bd0GQ؍?:(pX(ȳ p[:/_#t,FYTKꬷG*c?U%Pfo د7Pϱ|;kY{QFBhGb{iY4b̢%h EI/]ĉS1@OdRBO*069ME҉$4M `& A)3q)QnƵa2 &(~,]t"}D2QV§BOT>ٞٞIYOg#Spf/S,Mx@,YKiDuCB‚# @ %XphDiR9}acm X8|~֒!d%d>CReɋT ,a;]T4DV }>߸I{HWm/jC.xq a1KdEc$r$Nfِ:}z鋨h!:Mb5dv(;= 8:o^hdUs Co H 7#,G}7x4n6CY\kT˜9,{cxpUlx ۴drjU;AwXVkTt?5924 ѽ&GHdՀ//?77z5yo*I>bF87x1bĥdd#(7D`w|]Bذp<%a^|5<:ݿr ހA6ҥ0K|G}S.\S4K]:)_$yNbTÈB:#*@S^~ / rԔ[,]>Bٔ#_!ZS#_rNÚS|JӇ8rBQ yZ_`ErtA;j^vXLooa޼rx_2oކ R>W~ _@p@ +߆r`1( JoX#}:)ys|{ d +78Cr*@Awe̼1cj ²rBu6l!psj 1BVD$Cp*Ɛn!D|Eq;g; PS=zYu~}^4C Ȳ^ TJUTdYO'"&%Yn9}e jq K?'_~ &؂b ֯l )B[dVY>9ߢ;;`riד'oC3p3cB!F-*jmgPZ3A3p3f6cz8m/+2y/x}gV?ր.DǫV/m3Vnm$ dL$9Xn66d!!}'^ې_<π׶c3/W.Y9mEJH C+W+ak;Ai(q^95Mt,}+p" &ŃlH<4T io%9'hŃh8V·LlXxY6]Ϟt__كT;79pz^?t~ԩޘzcSzB (7F(axA(u`xTl{. ܁Ye'Pj_9FO3zc8pH00ΗIC|w@܋2Xj@80q@CK:"Qg~G);ߡY@T7HYXбU2cǐkI.`c XJPXQ+?KTlp7a,!>c釦X e/yCYP%h;n~*X#"\`#+EI jrc-u<`OV27뮻.KS*AC)t7`{ Kk~%`i?Oψ Z]l<. cc,:~.x'jv.5<ǒ(w]p?y"g x Kk.xA@'*fXxy K soshʊ:?eRKqHl!`#0VK+V [XPʬ`jvB lCW̞M`tY R* + XZ#=+=xl$[T`,# ,g& Q~L ?p6Gvct셻g/\8Bp!rP.DI~ Y(ݘ؍1%M#",[ƲQ _JKYxA@@f9 ##G#ڽ{9YEH#PtG` `{>YN a#DH2,9Tϑ |" vOY>g\~sΜ#o3T,[dc3-,{Dr3KO>mXzsn27Ι4&Ul0xuߓ`;ܒ$Ǣ?d-`A.B"S$^Uق׷`^[| <^@>4i'Ꭿ?JXZu} 70}L1Bk$ u[@Ů=xU|`sVQvR5W)@Tɢ^ޓ`;/ 7$Xk. DE!unе}I'`OצpOF1}9Fe%>@ XpצO/4} ^>}K/-xi^yi+ziX9`\CI/`h &K -)~;I^I)k>O v,IeF 0?}e9VW_[%^$.l /LH[Z`:lACIv`Dw׬yw Uk@Ō54 fku#F5ȱϬ̚4Y~~O֬9fq g͹v͹sְ9ɔ`?w8Cq@{dyB0ƫ?N;.>~zj"^·y*M7{A\"  C7`q%7B+b2`X`X cuZs`Mhb\Sрt wk0g[!G78pTp7P#u'ǣ^-X6jSnrپ~{q=siJ{_K|۰Dm vOΪ*JXe/Ozց/wK27]o_>ƞ` hϺꌿA/SGVD-T]'bܵ3u6xQDXQǹG|ɺYOi.u*} q_OW\32zHHwl^TcoSǴFZ`t8_)DJe'jSFm &E2XgxՈՎњ$>D eEY. W䒈g_r(F:k*%&k^l X bX(QN{-/`+ξMͳi*WJszTVky 89or[ ,oP4|k/;a>y]pUuУUvk%)<гMXSܭ뫳&|kO'Q/#o'8BG`dgڃdu%H+](i=ncY&@kH4BJÑ`Ut+]tjܶ=VI:yDyX7&|kaokti:)m僯L8vЦutϜltrD0n+?C4u%l XGGaU2Ky:>(?O*iF;nߖ:B/?vE|ew$Gl)^6<?ˤigg3`5%%np$#Nߒ01Fefq LlX K''g c}aAkސQH2uؗoF)3, 0pfA@X}I!&LYVu2v@ CpôE =J,+Wap\oJoђ7&5t# Lh+Œpvlpx.LCu-WnEgAͲ*\R?!mH,m귙 '_ [4K?UK*S'aKbn{U`CgU9.E C؟u`?zwֱVC?+ja?t? WpƩ-uf&e`2"k~i.{HzFM8X@4oNwhC 9Yi^O_+weeJF_;2|lT eu:JY:taײ,gX2u]p%vzWnsW [NKr^|p?g*uPVT; 8qP0s#\cvcn!m%`I7 G3KYzW)r8dʍۧ{}VJ%;Jw6=㽒uݨ%ԄY3`'v 4ht_3&ghd-?΍pI[t0].SvpK {>3fZe J貛ڼv ^7u=;sJS;X8Nc+r/tF/K5d z6oC|ʔ.)iWSzTyEhwp~%9kioݚ#cW%0uuR+f:J2Y4gq%gmC8-D՜d$Lf:b+,lʴDNrBF=3_D%)о4f֎qu=v%;,c.սsCleG,&\Y.fs$V;ccض&7Ŗ vX`꜖̏62yئWjV;K7Vy=]\uKG|NӝUbVIdGV]>j*$`ŝ6ll(jAWlR:1z 8YinW"X weUUwcˎZl!gz  yF=ftbKû9,dONN'szmE9 6JN:[f qyMt?:`]&'Zp9zkZhcU,}%kki{]'q5bOvxxt'u-"?,*;}bWLM1/NPo{ uj>aB 0';2@99VTs{v尲V m-.Ӌz?֔xW~{[ŸfEM+''Lu@nu<(~Jh}#M x+ݫ3_yP0;}=H{J>\r`kk'!%ev֗]8KpC[e2r Sw+2]ud+{V2q{.0_h=F쾓sE:6ӭC8i 6ñ!IՁ:@ 3r=A8'vF/w7lSQw&`egtW>/ˁ 3p9 '_N6Ů|+Wjro(a _Vy[9 ^23[j>H+J;vWN[P+xOmq6Ӎ;_GN6 Vɕ7yG3fG, :J7(s󭾧N Ag:?ű%o,t TsƛNfBMou[ޓ\ŷ&Kfl%"2(h1ӈ2EXm]r՝t }A,j} p bo{䌑>V;/H𤥿JF>2Ukە7߫jk FSſIQVMdܮ벵z]W`fq=wc"9?H+9GpשzO%r0n9:XCƈ b?y,e}1Vj?q 7)DÑp5)lp:ȟ;p:|.@9u[D{9_HDtJ0p8vJ_P7Gb?!~d@/r.AQF9x2eh</}`L@$9vX6C'' :t2ZW|, B`!X, B`!X, B`!X,DB`!X,DB`!X,DB`!X,D" B`!X,D" B`!X,D" '8XY-ScdIENDB`plugins/limit-login-attempts-reloaded/assets/css/images/cross-min.png000064400000027227147176754540022102 0ustar00PNG  IHDRJ NtEXtSoftwareAdobe ImageReadyqe<PLTE*/@EIX琕ϕz}q_cpv|~dpm੮ۈgotrZbwiz{`se7Br^y3"?ao[ݽ*#*\-$T˜O$ȷLv^s܀w>V]}juwuuuw7D`bnpj5Wk%|1'˱_ǚHukn:VyM5;.rDI8" D)߁&~dw%a0F'D~2 q]{mlͲ#y+ 36p۽xB:pZtLV5.NΆl4@()>Fn<+.:. A Xs6@olH%Sn`YLY'ނn1Ͽae hGyg1/4;QVw-F2; t+* (oȆ2P2J@QqwxaS2$m49RSoTP&R"nFJez輥I5z}'A/[N?HM=R|R}S}yS}}}ϧ>آIp}GJ} <^Z1MK%KpoMmsւ s55ֲkXSX2-C57۶g~sXj,P{Ʒ6&LMHe3!g`IL!!uOjμ; =:*kpk1gr~ h\ٷoĐ}ڇQ"Z!5wye} ,LU½ ljo/)]9s̭RcӾu!C1~ZuL`%8dxB8BŠ?&qN t2_zdoCNJ)WhLLqqLb1 a81C.$IX&Dt%%[:Y52G'{{nRR2v!mrhdLqi63Te܉{sdDJOvu<2#ܹsq =ns % z ۽r˥?*kUܸsY֡ߕY@qsjltȮt'm)+/+yAh:dc)gb klL(% f8_1{;qqhFs0`C'J|wFQϰmuΜC7sm߾l9Ws%m9X:7J糖IDl419U ι"BUWs\@ ^0XQE2xEzk_c !l/e@Z* toM֨% 8hd@@+pptcuGґD|ߛDWypDyȑ#G1NyQAG8::uc0Iw}f˚ӸͫzJϐoy`F&pAp6ŬGYiN{&hf_Fmm,-=`qσ`zر=/o4bYb? 4EXϟAqF 鎀܁ 0f{^p0 fY\y~ yNkrNp;`ΝB"8ؽ. FX{0+~2O֗74?#5~K2}+d6D@"C!b2-++mE;о _fgx,+tJ+ R[XŜZhI/%=@.[\A+&|*ҪH=x8A ղŋCK)}^`MdV[X PE1 &Ï( K[jIK]V!2ŀpcE͊L̅l'N:.[5#GW`K3l8] X6x>o5]e\X <=LD 8<_ r ]]ɝV^jҍ\ekw;oyl  yfy3߱Ѫ. 1}//%`BwQi[*,ͽsP>^E0`'ń QpXt&M{ i#oŽy]p7|Xdv0 ^lC\'9Z Uz߄xq` a}GXe_Xߛ<`7>f%_%W+@e_JwHn ;0J(S*@@e $9M0gh%`˓))))͍Q ɔ+)lK|̊ \il"`6/Q{+M\pcfTcsJss,klnlh퀌Fp6`v0|mX.I]),;A;:;::bF!(D+/{y",Dh;:~qDUGUUZUu PVD$:V8}**׃.=gO=Q5{3sO\Y˹GrF>{9*d侬{vc lsU>>2H@pLc vn8ls&H< ZY6pk,@1 +KEnVn N^[Ç.C3|T``o1]-`KPPaLM 1!F05%ώ&A xp,|z8mW.8 wXBRC_*>3G׍h]VMi=P!F0Ci F+maamx>i7[nl@=iO? …c~ZZEqu}$}+A~Y2_1Kt&=h#߀-/G={X̱gAU+L1_)nX^җ =KYd!n"@yϰ3`|{xplm!9$=ϒh{:ZՂ/GnZi&K-~pCFA;لhjx,AWF?iҫ .]JR.*(̗|Gfla=[ \v?NՀyN 0v|A9Kvs4:3u X'Il-X19) XT{ل\xveD04%5vm JlPX.6vuJjt96&ml``,4nj jǔ Lu=k~8$` Xh`"E&cNrdؾcE6oԶ"rc`UU2fE*YkLXFoXvEUMeߪX%<^"X ,jOкYz]nhh%Y-񀆖 ,2`eYa I c/25Ňw'졔dq.` Kki`` W[ w%KUz p~jL6`JgSAӓ%-ҭ萀;N$q|oj4vxFIqU57Y%"R/bE 0?eGܯMI%%`2z3l p r3~8%rQ~p!cNmUoh˫UZGjz'TFlNl8hgSVJ:ǀ4l21`|HmɭaWSg{Q^b@M&3;½v?WGAen=fWI1Q Tb1r+ofλvwEtL+친$|ӓώ,lh9Wk&7Qul-|tߑ`x=ӻ?]0؊avlr8eZJf{iV^&ĝ| ]M^=8gl-bft݃f.V߲RAڊdžJw3ZF€G^ʅuVl--z^;[N]V 8Qlf fq Ÿrj:[ZiSPif,cUE  +݉)Wl6MϮFW:k`ddR*Nd_)_UYt7 zCvR̓ZTփ/,eN$ޫ%R0kNNtR6nuvv42 𱛽[L5Hxz뵒0;C|El:1Oz]䢜OWg3`'޳w6q/Ѐ<:,ܭ0Ʊ|tv82`''/` _q*DR8?+78:bfl8_F0`*S:NHsWUL3=$!G RX绍%=gKT,B ؉FЌ!%0I $>H 6 vtѬ0{$|&xZjtHAg`;z]Y&30=°,3ـ6q>g ªL $ O X l;x>i("3; w`o6t;bhJGv#vWW2|?}jKCf5nxՔڰ8`윧Pf]uXN8^XUF8^X]&,_2`q^`ONXXu^U"JjXu"<=X$ܚ._o/tpXZ`|/%`qEI<|y,( KɗsJx-tF?07EZiW2%7JΗJXʕ 0Oj L|w<@w5g_,G?Տ׳"ml޼ylNҬl^5::vn,9 "Ỏ 8鱿YEx W0kŢE!~,~"iVf0CqI@F/p)4:,x";JaHEKX8GغeYg{i5zHjҫhWWc]{tw_񕌰7uꦦ_UCpWǪa nDGS7~rfI_/t)"v80"AO0[HG|x}0}\(k#ע֌v-&sf:a?a?vw@ݟݍ};Sc݂ 8[^?0nPQmOkگf0)^f7apH]ֆ Y(6Bؐ\X  (dlxv7YaJʛ yo8ސbq֏YmϭFV$^eC⹟e(o[Q`E0[B-$~5`;^/I7NЍvΤ T()5< ֭(, ٬`-kLWR2^/||?z>7|_ةEr}YT`SS"|k}s,|mS _VCy %^^S{A-k}kB\_[˂35@Y[9{3f)1{}B._rH/ׄXޚĐ,>(Ȝ5P 0`@ Đucp[CJ$2HH +B!<u14qǬK,f0Q=v$'F"/g㋋cc!bok)niD[<9Cv.g~GG0-Ŵ1;#t .+PP\Y^zI^kӹc/hLZ 聎~?Dٳ‘<`,}ѳ,)fc;%Er O42[&c<>=Z w=e4bB=fp ؉N8XoC 6OZvsh=yk=lB!(q0~ ܙ%`x:a\m\So݁-*ؽ<Q\1ZbpO5Us XJguꂳȮ 3`ǭ'@AȮ:xphK0;,˳+Pl<*.]VQa6!ʮ:’ufss}#@?eDzePJQZ$KbY*\`x}RD+(T224tBzZ .+ O; z[=<;,`~Q^,`'f7Berx.ܞ]ʬ98.z|.`(>Ō0[ op 9:cgru¼.Wc08.BcJ0I 96ghx_qH-l2,/l ,2 =}B.}a1s`́p @,̪W*+TVVUTAؗʾ+})W*RR0{J\W*R*[8v{rs\iMII{%Jecc+̎RqgBqX"U_cccccYXH0+S0 q5`V9 *QrҠƎq,&AV,f1 5o XeZܺˁ鎪//:q/ȳ ]U'~ ad0kxkg^JgqnU\sЄ1:P^έ:}ȕ|4x{ʨH7%ڑ\`F`GnxH, R##I]K:D. F_g n Πp9"XI{*,J8PȐh"@#`yVh/ ҭ7(pwmEi…CCC(b4pCC^8>Du9d̆WCXXݢv*Ga᮴‡.c>*]CȳM -*(hSZCXVXbڋi42O+d44aq' ׾Pr㑅OƢ 2#-i 6KŁoKjU/0 ! &FÆAl%ܫnz|A##{%:1} ^WU%{*. /mǫrz[L=ŸwX-.Y;]ciϦM,苷kTikZWZ]jE6eΫrj[uVJb‡nPC,zU_,'`|lI_TPcGAAΥKWjuVƽwHwqWꫦ4r{lxe]%GyޠK4.{Ǣ%XV&?E ;OUx/|ߞǺMDVIqVOVcz~pus&] \+{uZ]A_Il9< ʕEEzuԠXi~L732IDI0000&`&`&`&$L"$L"$L"$LIDIDID 0000&`&`&`&`L"$L"$L"$LIDIDID 000`G9g+IENDB`plugins/limit-login-attempts-reloaded/assets/css/images/deny-ip-min.png000064400000042530147176754540022310 0ustar00PNG  IHDRhh1{tEXtSoftwareAdobe ImageReadyqe<PLTE*/@EIX7s"h8Ss! #Z1ep1XMCF%j+H"QbrIh Zu cበ3B9b4vE zR ΜӍ!Z"hB54Fhb5ICa4CPYE4ͤ4T0i&ACibbAGwA!%ɠ9 WrjjL); h\C:hw"hb6AGPL>'ÅTch籒e6%ҍX-lhN!hY(&V:S"h("2.:AC2'\ **0cDPDcvACZ!h@;!hACаD4t4զ -W٪l](jVw4C6A5|[-+I=kj"k&MIWAC9Mk`a2}Glt… 7=(fF, эg\~?'_gx gA,I@}Yy9sg?;D,Y~:TIK yJ 7|@E4iJc&WўsT1蓞dv?߄Y^vvڑ ;=b6s& 21PS@SlC+RS7& RvL,9?çTrUF~n&IA A!H1{fk99):DT& NW-@61W vӫ7/|9yaf5QS40jZ=M3h>0Hl9eճg*3iLro>J۰#zv$ܷ>jc$=e`"hj–7hwߞf{!Mr po?!hpkLc6D.}{@p6!Eu]{{=w $H.لUCn.<==p=;?D<"'D Zki.eJ3ZxTwޣ=9?$)G)t$r[Y@[<{--!гr4$?;if>N G(q iϛ٣@ͳ#9O(̿ uA.2ٍd?>UJKo$_X8.|C=$9[^e W^B/Byu+O^Q^U3{C,u8;E̙G6g_dC9y~(8 |R 4;BR^c8vݽ  /fA93asn߾a aW"Oݕ'+uKYr^`+!h#N w 7LBmY;{v ~l9!`v.D?0gϞ~\ھr*g0s$H:svwKI0N)}:p6R7Pm?gϾ 'p ɴޥ7N'w=YԎ2f]٬!w/Og6_mw"GN2yۗ%{/o@_i gJC\Rէr)sL,0pa!n M m#LR?{9 0/#h)\%[3+ 36!3dr%\yELelmD""Pgh~JGЬkrL漇VW+ :7dT`r#٭\IR7ƮЌ+GjXd8]MA*jm)O[ F726+۴3ȻeQsT۶m6 OYC ~(yfR/@̶ol8l$Q`4a6m*gB H6z+4(U5k76N0a۶7~[z쀦C"4$A jVHx66n& Jv-O,01gܾrN#7%A]\6 XCF̖}mvt N# }NtANȱܴӦ e/10{`McCa89Jo~x˛ `KٺuA.}w+=\[inVzmdC@ݲ-ٿ V^SV`ZE'yॆ;-B\ fذܺ'pu= $pzɒ% 2lnzziKEA+e pm,RJkO7_ @t毜JABfL.l=M_f؟O7l3Z(K@#70A]%Hͯ\ͯBo+ͯդW+o%+DLs5&4ߠ!h^O$T^z?bD0kO7nCyj e5ͫ_)&X_W#,?AajS&+=)׺yV3yH[=@D6)d!I}ܯ&PGnZMnHnF7fr,LRlدQڧy"P`3=5s$ù$ f%՟\tcok-L|dk="-O,?wܬY*tp3oZ?UF9 jraֹ3ie˟x(<ׯ?TdzxGh9I9VWOϝ9νGzl/4S̞Rٵ<@Fk!\zN՚5k~ <֓c&8έdBk{$Mp/SlU@|ڙpY>̹7禛y5s!Is U !ޚnbGEwk4V<i;1 iJ`G7slKv$M#!{r7d{&i,bJ_7C4=)twGd 'tCXvSM#hfsfʽEP;ȑ# y[9$9u#sTJo'ieĺizN:+fP%hN-,=[pGxYz~d;ߺ})Rv)el֟[ZsܾtR!m)c= D9r;KZJp-ؐ4r#TFhᄵ0Z4y6$[REjz۟H4wY9Kys*gVljU̍ xKF9l'9$,7ggɥi|Ƶ׮]KjҼԵqi /jOYjׁ+5 0rv^Ξf[g_$jΔk~sF LR7 вcٰ71j%\۹K 0jN+LU-VEA<k>y}489{a>bn%>\5gJoU-?%m^^?v \)dO7$l4TƜ̨9K1u֭D ['8f)䌝Єi>Y=oq'`C"^Wg䥟^[<XuLɜQ/Q3-KOZ_ՠeMR:~_U_3ķ֯} ZmVgez\|XPy5oKΘܹ͝˧5>AՂ*ɪcRYfobf%n'%roAi8ʻWyгCeޜU#hcUT=KUBibikɎ$EЕ,D ;q Z Y8]8;B~ Y\@uvEZ+ǡWԥ,Ui㪔cW]]:9H lS i}Zeu^gæw NE6@Z%U+];}z 8j\AzvimSJ@Sys1ٸ|0};]P 6>A3[aa%^+j{ {rZ8jl^i]]܉]/sa6ojpxv(3#5H )ۆӪA:u'RXc+4^UӾS}Zθ=̖])jJAVyu8 8SQd綅I7 VѴJ_N*W-Lڸ1`PC'oW4)PA 1#U41T>³E*k N:qA@4a">\`U!f3wᙴA@S ?fhDsFx T&^u{l.1qh,r{Pwmohtb\ߧ#U@-y'71mmZA$N)K7J zʸj; µY^[VwZwl!8플ph69jA p6xfPVwl+# ,!\k2xMk<`#b:NI4in뀍@v ޵Fu 4CMZڡ4 4ioߤYh%C1h|Cq::)&v#he.9; 4_PmÖib%"nKFͤY hQΒ3|j yޅ hNޒ3]|Jbue߾nr.up֌<1bBm?pG眦1BnC:$@ ˪8 EO)&PNދߴZk‹!hy=X0igQK) *EG|z 7gC^O mi#.U*|mΑv6{n4쩬 m*t . B{ٗwFh Β3*h ʵ*.US:]v[IhP!Wo@=VZ!38[1giJ=@㭢*V\,El9*vEZ^,[ *9NVZ,E e+YNgTАA9=Tnن,Ih _c pbKWbKgch ,UsvV̲9䂖Yc˒ !͈/ߙnlt5 ۚz;_,dEGO hbr Luy;0TW\llriX\[h(Qj⦍6&.kv 2r..Ķ_y,5`KKcccHccoKGnI`C'W%-eUo~00Euo(I7`|zc}*kΈp}|Ǣ#TZ ZҘ)x͢팰NCv|E{47_m,2F/Y׮ۆwEڂ%^Q EghNgВb7iY]v56 KH{f4Czl3` jkmmU6.Ezh/{$=>z#IvIh|{X/":: E2篅 GzH5T@40ZGXg+^v*lVh1&1s@ro )վN5i6aZ54ѿ\`Ћ/48`A7QX)&h8P^e;ĬQE*`ۋxMW 5e?H?g`[.hƬdW|'li6Mi0f>eFo/W7$&(矵 hA`ӚUhaAGTq4Aጂnh򀖶fcAs*A#h&V@{m̃A ֍q4n%4fA v.hqRu4!hmsu΀ :#;S1VFp <bBrGC;"6FuQq~C 5à^\R7!o#}IvwX%˲1 E='uJch e 9j fFVα0f \-:?k4c To@ p'ְ5筒h!$9.f$Yp\ߴ*nwS0k~)cc hU:X'fZhKYi~6HwDHc O]TCT)'Y5, .4j'yϥ(ПK)W]ҡE~ )s**RV_ST\BU5Ug [%ј{7+7 6-ǜN&kFQG5EM9/o _efrTԢL宯ѡp Z-_i-u>*̦AW[,תɒÙ60˷j:sj6*̦B`SKjTcUZn;2]( ȕ yC5Vb5|Ux G!W1@ȅtnkk q$k"7+(jѹoPv 0”Ɵ[45pqg|#6Ұ骱CHY㭕9r?g/DqV|*:ʄ$o+C-R7r]͒ihf|A QR9˒oo8 \mt(EK"mh@yY/{cҚEAszr%MGCt;cyo*[Z,UF~\;.k4b,i:NV,^Yаl-[X) LY'?)yeHs9Y(x®7TW Honz/Z';krZ+]ufQ%]|whwYhit`/hZGэHˋF] ǚMB9!R V׾ h!ؠLoDrom*XZd/S'-)Z\ O^o}]<ǶU6h}M)Zߍց"n,8 TUkw*zEW=94XHaK"EsL챪/ C_#Gv'ִ ց/:/QpȪ?h'pIhjY¤9;u;PU+nM>m)r(d;uurVmM)<]%L3-GrV7y_ pMS&3hJ<1iٰxvVhs*`gocӀךWkmm 4Ez[:/x&ޒӺU4nX3bD d,ohԥw_ԝw3p;_;h%&0dhJ;P~5䐬.!׎;[EGA˘4ҔE Cy]og^gcfc|w5Xy{׎w~r暴)nn񖤜NmP7oPP6ђ'pu޵*-%5YtQȲK(81* uֵWNpZ5@ 0 $U+9ÒA |j BƤx_`ظ3r{Q}JY4|W_:d!+fvٵ{,:Ҏ)%'}N>[Tؤ H$M7h], ՓZMB:dL^Y]}~"1Q/0/.I]҄}c.Bܠ1F>g5&ѩ]CD#_"yR, ZIU4-!_V D%m7h)K\%x&o9O0>9@P]xKN.bD2ހ i#E/k#dwʪ>'hQihLDml3)Eh3{ztXLmss /GXt踁AiJ;!vE-jN]Hߟ)3%i?N0:\],Jz?Im@Zsjo=Mƺb/]p!1oBD . -` h84a+<M0jMcVk=;IS^AR8VmpYl)zlXH3x9ߝt UOW hI+tb` o7XIuBla:>331E/ӬVI]=!TAAʭv8sX--}l2VI㭢E"44>f N9r<cg*itU4vAW!jUhmdY1 4>В&U[rҲ 5E8_= Ȕ.tGJWM4NB OIXZ?k4:/8DUW3{”BEil_EsV+Z4u"z3|Njw i;E!}P`Zr KpTИ4=[580=6!:TV+7EC;O`l{O=#}KU!hXIsv tC;D.t [jIj-,ݤN-Mgn@7}6 6v mgJϪ!9N':Mǡb . !B+)RMyQͭ:Fw Lc `X>hZ=\bQN5*iڀWjuU)ZX°' Ru)<3F)>#bP:Uf`d2@EIyGoPҭgbv̒}C+F =@ӆI8ED->KPʨ M=ZSƜ Wkn44^MK9FU OIэX+TlYs%lS 4=7r1sdXqwzia.r3bYwj]pF ,H0*fl.1:(N _~!*=7s1zc (15~֗:45GW{ϥL5/qWl/n ļ4&fHkI_oŌ2Du=]>-&_Zۚ"-]#oFIm$j%4~_,KgAxqpQUKK/9ـIq! 8kp#eA#+&9hln8zI -2/Ds5xQ%;}24jb&@,[ ܚҁ楔;>m#%>j"ht!&u^*_2m  h"BQq;:`'A22=cOǪ-C-&AYv4V[%(@Kǫ4g~x2E,#x Yaopu~wb!@ TA/j4}dP+yX`f'D"s1n=pTd9s"hR7ow (60Y;zEA3ncBefʌ8'uvPj ޚ]+j:#ghP#1((QbdAGPSZjw8[H;m^#ho3Sl*çzSC͊Oz)Kc }u V|\d%KK̜nBNg 8txܣeS -gs6F3Pκ8fD nrjJ=QC:PFlZ/>=60jsV : 9NCϏIS}f(g֜NدAlQai[xALdPI onYDKgRfHG2ccl1L{A3ǨYti,kD-fQs$YNj}B2 NOF& PU-3SCVy.'fVir1X~C2 aY= hEO+O0̩ȊּP1Z>j>`5 f72@ VNZA4;o޸ĉU5*Ru杞P]AER/ωHZϨ ͓Q40kGak#S)ߠi&-1PaKJl+czLoޤA3_ ~B0cB^$FiMvÜU2z+Z?AE)/Y3 S쉙S1jvىr?Rz4~)RzɵǢZٙBl+I lh(*fwKCЊZɨAƔxk<&wBJ6#Ę?2êhf5qAF6tzyS‘i(Lic4 Oֶj(;tgw^AʴȚ)ᮤ![V2ozG@l qcJfKY)6B!hvR!si**ZB!hu4T4@Edf M5- 'MJLs {ߴh1Ctp 7yf+LkUWpji7tKArw f/L=ndͦ2i`g&uv4)eg *"h6ߔ3jr Ai)izɉNLZv"hv ÉR)Mr4~r^a ABr(AC[KV]6dTxZA>) ~kY hU!c~fwQ+q"h:$4oL'fWEIPAC!MLI#hzapDP%6F3 HV+ydAC#M~Q^ L&e-7!MX[(;gά֣:}2d\J{zPƲc|ZG{B3ҐFPF͡7fKwʼ$VF-wZO 7"gG(o1@C"VF?| rat+"hՊZUCЪGDЪO ~OiJ5X;( ';PU x4Ǵy~SZK x-n4BP( 4 AC!h(BP 4 AC!h( BP 4B!h( BP AC4BP( P AC!h(BP( 4 AC!h(BP 4 AC!h( BP AC4B!h( P AC4BP( P AC!h(BP( U._(zxIENDB`plugins/limit-login-attempts-reloaded/assets/css/images/deny-list-min.png000064400000046132147176754540022655 0ustar00PNG  IHDRhh1{tEXtSoftwareAdobe ImageReadyqe<PLTE*/@|~zq}bnpvtwjߐ^{ryYR_cp9Wh4FVEIXxysㆊ]bomo7Zj~|u~t⅓W׉etgߊ;.tRNSS%GIDATx @Tg/|bQYdQ&$p-*(1/qI5qevǐI373}n7=wܭyTj8.R]Qq'_I|_Aɷ'ߙ|'u]*;n\:M &ߝ&$[޹{;wοKf ikr wRdZޙ?+WMP6OI/Q`&OkZQ(.*}6?[>E團R@Vʣ 4l8o"@|rN/Z-D^[:{w΋f 4l,B =;vl"^#A^C1z;Fm^[zw^tEw_h#wI˱c]Zu7=MTڱjTƚ^{RT" 4&jdı7;t5%vUWyMjzyt {YI r|Wծ]w]: 9E:`ꎎHD;ZWsDuu&1섶xUUǮwTB*A*C]owT6:qN"sI,[h//HǥґۗR.TAS%.ZUs*~MؚRvBΝjRɪ`C ,/ nKIERISv@ YGC%𖲒*RPVfN55(_#%e%5԰;S^h5+Wr% 5*tjhV=Vx֯_ 1T{R&Y+kVrXmֿhsEj~JPTXAX1!t~Đ]є)Sz{`UgEŊ O CєMNz 4!)pKz{(CT!J =h~] -zMb[} J~Zi3XGU*5@,w }&18f>N ;|?GyoqTRjǍǩq|n~>C&18틊8qC1%6j߾(|\}%|Qc;- 4A%#xaO^Tm7KJ)ۧ|l&1(PAPIW__ExQql]J7MK{h40$^D"P%xA*~i?I{zr@i{24,R!d|^J;!jahiMb0k|ʐkJH{(oB¡ChOPC {޽TA5O\^4ĐPploQV:ʮq@eO<۲ k Mbp'q;%.Hڲ <2>^ *ʞh,9,Hҥ )_O`V %$?-sJsrqdn:9TtT$7728ܕ(59r Jbp, M7tR!U-'\*#=UAs Ko CA@%r[s[[!Daa00*F02vhJV*$lԅ,$ԏS-@qj%50e-j,THRKjkjkn[P@ TZĠؒmq(Hp,TW.rj˽Pen >MI  Sfeaac$^j!T,P#[ejB7,1g% ,1l؀B+e;{Dz!FjdCK P AS&1to && 6#@LLK@@K@L*EUB bT5'@s$)96 mA]p4rITOE"C ("a\6PNPJQm]] žn̮.~_2}}XSPEdE,iLVOAWfvum|ƅ8 +~~\む>wVvau5zlgvd??FjKXx&.І7ӕ;18ږC ~~/8SJQB#D 3q\h"T;"ىn!J~i^ï֏TGP/6xAoD d"+^ߟwF}Ŭf#Δ%4ۃ족T <6l׏VVVFkWmZm*28j++7V}[F$y AʺF~Ctp*/4. Yvc>jmnyڈڼJ<*񀵧kkk6VR]jPWƸ>GIcT^ 4[4 -8]гL$]8;q^%eEDDEZ,QP_O-UjWQAՕW1my\sV02/8."a)6"T b+*b)_b멆2(B+JTԻz&&YI&ʡmvim^}OA(TQ^Q$ˆ2bc3ࡂrI"o 4f5hAO ͻc iISTўAJ(m2,H-4ʑƣKrů(NMh5F7nz= rybZq#oӢmD6E"ކzJGD'nh^mtU>dl߂vn8j&hTq˻y6^jzhM13iJX1l&3yE+>_^J{٥9Ξsyb&Fjy8ovfVHmtޜe˙_isf{/C;c/=iWKv'oqs|^MυfM0kCEʹ <Z?'Nv6SL:K*6$;>oв˽ڤfMPhmw6iR9#Ό g(lSl<=ZAmSŝ%jeixπmh.9&N[l26ẻ?x脖՗ۿ]}=y8=L{=TgooSNh'Y~& H΂n  ك&M2xԯK7̼iO:l*8!SxOheNl=m mpc \-t1\ {{ n]CA@{]Ξawk8¹{nnmP.xYދ#֜HacS7r[Nw 4̊Wp 2m9ƋDCfC~;@-`fOMLdj֞v.@y&9f;cOjpǕJ1}* iM vk} .6 \~77xEla\>)ܷ/`|Q>^z4| NxQi4Y\!̓ xZK ܱYM|v 4ftg xf5 ٥Ίҙ]Z@3nӛ}#hhG\L#kc~qC{uG7x{po2NXh.;^us롹Z7|<^Vh ڂ%mc6c5ן睼ޙϒq )qf;6xpeih\ ڽoN{34לPsؠ^ %'2e98n@sg6{^-%^_3NS@kp,w`4hrc4Sjs)Оwh#OiZϩ.N悋761`<~8۳9 khyz fۣ ;`^hr x1f]w/GS߰ZTyȶӴzd9ru~ieʖ>Nh=NS_Bhξ[]GHo@sB~l ZsO pd{!~d@ޢ}Mp4OϦ4[y%МrMޢ &ͤԷmP?vZ9c_@ܸO4tGAv 4rOvکКO7)Мax/{]K7}1~pyX9tnelͲAvn)q~;93^ G7g(HljLLc@H3375#f|it-8K9_^e4s:Svjv;닄9[8-Ah\_؝uS}ǭؚsVڨ3_6NN;Bn߇>hcJhvN3vK{M̊GyӌМєF/mB<3َ0q4S,xcӜJH|C9my'sJ+hNJhT[2!r'@< q6&6W9ǹufFin ̈́qL'M3GGe6imT7qz 9z%ܑL;m|KF>W@sG>zGӋ LL@Ϧ>B~@hxJ 4&@h4pؚ0z@h]͡oDFОhM 4&@hM 4cM 4& Z0z@hh @hM 46/h2@hM 4&@hMB 4&@hM 4&!@hM 4&@hM 4&@hM 4&@hM 4&@hM¹#YK@s =g%xm,h oə &МmHҔ3&МM0Ҵ35M9=ک=@s^I336цfBgm#͌"͔'$͜G ͤgTI33WoҊM+≗ l5nmC(mYb@5lձ:u[,h̷`l#ڄfo|%oъ́}!8nzzG949!FlAY 4O6|&к< ڠN&Њ=ڐ|==M)M7a046І.ȄB3IFh<H9N exU/h~rsկ 4xlk"X\6qmh>K^X摮3[}4μo3fjQʸ>C 4!&\[jƌ6 4Xy&\C 4:?c?A&C-Kg/w7>+ W{|?к@s3@hq\=ӾNH ۊ֏@hN_—{N`@hkv5N&io~so}h@ 4 pqڕMZj>=@suAv.Mi'3k۷wi@cgK X#mλ|9&(قsY&М#Vw޽sVwwV] 4;D]6G;wvV #Ww;wGu #.+?>ĝN;%F˔ЖTf1J]hm0w1,;JN:Ԁ@{5-:F:b%6˗+e߂0ߢ"z8툭@vh[{k[$k¶HEҾiۡmLjˑA%?5pZ 4]K"P[+o4]Z"!X[HtnЖk-EoҢ(KSWq% .bVEՋT#zTthdЮ\YǎV5V,VDYcaB"aӪoo3Vh mK5^oVc:&2Hu1e':@VMĪwuTw ՁFѱk?㜏 lh mQ(q9A?t Z`zmWu ʎ'nw];::vut_P ꂙ]?vU5Am'f]U 9fiQSA=`,4?9vfvV~V:XZUGsޤ 4펪4LdU!:.$(SȶY]& ZI-:.KHݥKLA&I&-) yͮ<0s%sTq*c٠mBvK;SRTd egPj8qFy'kRvSvրTaM ))tƶ# @C6Z&ᑽ)%5v =sgR2Esbsꮪv58aQhqû`@Hh[k+&0,  ly5c"#om ZY-D׶J?s1[aw5MXZW+쉕鮦a',p 44Fy p6?~7#,pl\<4I=;3 y45WVN[;#v/p@@h[S?m"J`ސ$[_^829J33qף[hԭh}3;Oi-0̭rhb%cEcУ"^"K+IWK8yDG IM[o@Yh`-O9㩾a3љ[?rhgA?3(!;E^,E/}<攏A fJgnlme:PoV-K)d ^Ԩc>O fJg#=6tE`XE\@Y.f\?s3뛜sM)S:sܮvf^O~Bz 9a6κѐfNg>Y~?)!)B~*|ɡg6JgK[b͘ߋ2~R4s%ϫ<TEPW@# ZScncݽvUB.nbGړZvoVw_y?0֋Nhi/iQSw1'nqyPWD~KM[ഋy͑O^ǧ:zcU2O N <g:t:t~wDEO#B|d}J~nд4JiK^Xxug@yCо Ru~F TF}T۴q:uab;A6{.>]%?xlOC &d{er:ɃaZ97}2nC#0C A lGUQ1چzh+mU L$) qr}5l;G8Z-?Es9%99%< fs4E&ІP6B[Ssus%~ۿ/=kh-?YWCJryjd9A!ɩ+a4%DnjKTQQU>W?89zfӤD0PNHJrYfРF&('44\Aهp4԰2&v5l('==t܉S.݉ U>ЕIzs 98@o>g~gN0sOhJFrD!W魰CsT: TWBNPCTúr[V +UN< s[UJ|?0w\hC10ƏnMU>luk+|DCpK4P# 4y@uϥ?)S&4C/|P  '5h!jhmriJ\=|?y! h5aKfim%LfUܤU^TJP֏E`8j].;Cӄbh,EcW?]p%̒2ʑjQǭabѾZV ? S?^G&q\;D$,zj*,Pq@ZQPڪڶɐ:[ [cXRUFKz, }CIO Ä_NLMM]nXL(YLtj1#Y =-Z)j Rb@T uZx0_LcP:"h5p Q:pA4N?XZZⷐhbM;k]^GбX-6;}e;Ԇjb-oA a_X6(eXm\̆ Z(&4U ZtTb66ԴpwbT;vΈe>UhhAblJ(b!5ˁgh[lǨoQZ,i1iC#C`d͘B/>ȴtɖV14hĊ2ę1Z(ɭc $7PO.R_;/"e5)4z70-jE)bPjHTC%-ƢVVg@[RLP%@M]O6icMٍ80 v! ,iA$lÖ4L~P)n.3&+jC~G_7&q~hjg+Sh>C7#[9)O"UJet֣1t;&i[؞&mgf7 Aj4V+bPg];O#@ xQqhj*דMݓnӘ d[4O=oԌgVfgi(> , $=Z`E 'FӁc$8^5Ci%`~яp/rH{Ӎ5siGنnzOl}cnv0,$888 &dȠ#{#ˆ`GmU=>\W mg1;mSl|m[Vf]G/lԯ|Di:B5FFN~E<7D5S^/9>e%C-AQ^p-ePY^xZ<~fW5nS WAY5ȋȣ)ix%5$`!\OG2T>Q;LIO2ڼZ=QI(E"udҘhEy4koט Mgnva[Tڧ{E8CDQ L.тTbJz5:\$2-)=VWB.%/QAns3OG<AG+ӵx2paz,QW{iTIjUeF@; ]Y[G>LJmSE098Lʂ5Y`6g l[[ݼBtG>ˆz[<G0ðr>:ZCb +"iEõ槦G~#C7т ̍ЬbX~+לrj*4AXJUQ߼zݼtp8צ#Ϫ 7N-ږdZ}f2s'4TTQ}l}lYeVCHz`X2vC$MNHXVA0Dϡ\HO 1pRŏ9Cm^ b oY=3S, {EI! *IXTPzH.U{ 3FTW#se=!IcyPP V?H?h zKfݳpoͼi 42S \s\E}PxɓUER=5ITy'Kb&Knx֣a~z3bٯo5<5{ x .Yd+Q-Yv¬sٳf͍Gu]Юfd$T%P=#>{FE i2X ddG140JEEFȨ`䓰U$a zzg`Sb ̠'Nzۿw-pH4/(yNhhǫ^ӌvtANFOy)$ 4Oio ϠdSBXsc+ک1IԍCk,q)C췇I)O쮞3 nf`R d17k|C:LsnޞT yXn`E%6$zVsO#uv[Ȥ_ei ^hWmRR)+"l'%ae{d(Lj,IaI+Qw($‘^ Tez$meVT|@@Y 9)WFz=~Q}™ Cl@= )P 2"zkE:e|"h"ѝ b? Ƌw4q⹐?H蹓? ^y%;{fW ]V6NЬ") L9M"#>R3J32t9֥x#055EUMDPXhj(Rh&m4=ԣ4<ҥ\agz .lCtQb1G1iFǓdVyynhW إHD6 &B!M iS{Sih5 Wc65I QZQJAeIexҏJ9*1aY?  o*eLlIpRD}d$ؠ4OI )eDCUix)9E&%%RkU?jԟ( 4KoMsDDf] :J4 jB^vʅ4Nq6:&ceSd#FQ~M9ɩjiFNpbЬӘKxt! @&]ί~њԁ *^@xcэQ[x$ljz)`)a#()y9þAHn~N9{NQ@#^&B%@DGpjvZct%'B&@47Rk4׽DFݵu:TlLth֭i$SƅDeDGTycUefc87AJ5JS٢ +a<"ۖ :;h4kƣG?8mm I\1KƇ64SۢхR DڢdKy@gǘ#` h֥ф!:@b)(A%吤Fj}TSB 2RFFXN96HH+GێB=[#׵Q04RVM}wѣDtnVF%5. DjʕYQjFX9Gۨt84-rK4k+TyF<(;fc``Dawzv%mdXHݴks+Tێ"Mu p^ &-bJi6g.> \u(BsQwwaa! jQ {v0t;JCu#v:\ o7FBU,L Ҍ|jT(d0«On.١it*n B-Md:p`; @MԎۡQ=+bofi #d*!xՑAHBHRS)?ujA 'SiBBzU ; 1bw:>у21RxfAU!lЬW? N:B`xy7*ٌ8! C=ՈTՕI*cPIМ--CЎwLg惆9_fR4MEjCxRPSj[#d#u0!rJsk8CQCdiJhJ^c"A+ń%F mdyA9X&@rXCa؂ZtRMO@=PO/B2uM YCM]:#ZRMSɺuFAAxh qpV!|ܞV!!r\ìЬ֥WH:^Tf(%% \r7Ԭ[w.-]m\RTZppx=JPqfbhyxC sd7%B v(Pu BM2+(箠A=SQv;wp014ЃjC&D! =zpFk\.TQ0+#F:C,ds`(7A<(kZcGDrgs>jp01mT&BQh"jP[ A2141QfÃ=)x ffz^jl"nTI45AA%~PPԌ [7O b48ȢV}cE,+H՟p%-ͦwA>ьEtVi=H 4{'hp7V)hT- _ަAäfGs)"AwU mnuv`;Gμā e/(M hyFg|hÛ^ g͂KSrn:OwԌdf1Wa&Qc]<(i5-J]Me3uBDfN !ХYo*3L[~:59s1sa&І9ر7@[i Hf [倆@q zXAH̙H k&WDܐua|e2hw\ -3 "^4uduzEQN_lLfA5 K/gr9X\ )eƴƤe83pDFiKemeTˁE_ϗ-T 1l[6mKEn  f/_l3g^^6gμ[ehN??MBIH4 &!!$@hMBBI4 &!!$@hMBBI4 &!$@hMBBI4 &!$@hMBI4 &!$$@hMBIH4 &!$$@h@BI4 &!$@hMBI4 &!$$@hMBIH4 &!$$@hMBIH4 &!$$@hMBIH4Wg pIENDB`plugins/limit-login-attempts-reloaded/assets/css/images/email-min.png000064400000002532147176754540022030 0ustar00PNG  IHDRИtEXtSoftwareAdobe ImageReadyqe<PLTEw}$λƯGXMZkvkw,>冋/?Ӽ[lWg~ߢ|لտkKWtRNSc5IDATxW1hTtiJ]jW}JAv1I2lG~&o"1CM3 1AofD1A b 1A bĠMyg Z*£ 1^v3Iq:;]b58!hR5%;9hG}7 #M|联KzQ"g~#lQđ3+%{2?uл9)4HD[=R"jR9[Hd%đRoY9 jjs$RQ9M 2)q*ϓfR= ܻ !RJSqH1s0 )xl59XJo(@/Bf F @j$p*țA^$<D&Q8~ ۮ;@&@焀$uVD$#(THi qHPSioɪEvR_/Dޠd.wh">zO(ZD1AOT9ؕJ#Z<*I$Z {rgU"!}Pd8_(A _VD{""(ă@a `DP'q=)T-ƒ8EhP6+‚2ςEHPR.aQ!QgHHﱈ 1X1Xd'H+(@=*ã2=+o Ll>,3 W",K@PvK2VGCЛdOgvAghtODTthvo{Eo!e1$h#_7.fkB_h ]<<_`nc+IENDB`plugins/limit-login-attempts-reloaded/assets/css/images/email.png000064400000004241147176754540021246 0ustar00PNG  IHDRF pHYs,K,K=sRGBgAMA a6IDATxKoUn!q 6XH|XQX .Y| 腤ibĹq| N{`{f圙/YI%O3!PR(#}ŵz=B1w_}(#u{+]e>nϑ3gQq,uR:63@"s#)nD#*vR*hvf~a).D:㑁#^ hrDkkko/F'$^?$ EHWom*)jɐT'Y߇QhQ'I8?7 keRPDI(t@"ʶ d%G'8L()<:EH4 .ؗ8!!JpDz.~Dq1P}n}PBJj_@ą$8"_@8sDf"Q0dwt_&iH$edHi#(G- Q H{@"!@"ٝIB xS2HvmGd, ۑs'gEJC1)]#\'-xj6%= QsdHi(z]hxƧdh &Dӌ,--ً ^u$>-ccc=0mZ 񬯯{mv$>APَg?piEd, 0<΂l:1@<@?D&"2jKx H$| *sĬ(EǙsoϕscȈ9P\x1$:qK 2}N=$Ui (xD#PLF%,H;@Y#2VGd"mnKZWtA8 qDr,(1@~x(B4%0T0QC;F8p}bv*ʼn(@_q!oq T?\v=ø\U۞\ h+G-_Z>%\*Z^p!Ley})q'Al\~!6^Tya{zCM$kF j pz5!\ 7oذ{;ӊj~ou*S۷o?hܝ,>=iEݻw~wz:ҿUϕOS[2WgKOMO?3)y?=5eM2󳟑mؖUQi6-5U4;m۱m\jh^ h\wSeK"jcdR֞hk4mj /SksRh#x8K[.miU yEZJ=K"*-,?h'h.d7x5Q榩xDloKX%/7nu.%B}7rov,W-@FvsٹbCT&W‹srQĎ{rOsOH.'NH8'^ Tͽf.u^>G7劁N_\Mrs q`֙PwrNZpNԩ˝uĭV q`Fr:;:;;tʝuuF*p ^$Q套xMQO&# ib`b@CfȌгIg#u6lR_d_dRRdxAH*eEMʈE`D> 2KFг-4ldh(K*sW_(b(FHKh C4d~BhT(ϡ4G b~E%J694АY򉨨Q4'("J4;hMy%Fm4dKxÇ 9??jN*(xm{SAyXx~PAO<АBt4%r:Έ&$&q108!%559yW.*vEk.n*Fڮd1zciNCb[ Z11%I=| %6[yN/eM}>АɥcK7mK*%"421.&SmӦM4662[.%44\$ _'{IڪM4YҒ̖˫+*J+K]ʫ_WSCi9Z jr5&<&!dmEEf9Q)dVdr"Ϲ\^Ngfr1)ݙLً:ٲ1999ęȴ''sjkFOLh4d<71h51MsN ȼNAq5gɖ bh2kS 1עEt}MD2ʼnsO9'DGӖАYPеkCCdx8 V|ƨ=MmCCccעx=tАO‰Kxx8* JxqPx17qx״Q(8+!ᷮ<ˋ[qφߺ!ZzWoEGp="Bd3%/F 5""o-o)`[E-h]XZ/^̋.s;&YQhX6rcg^LLLpLWcc,O,> 5/Xjczdm^r36ǽ>P+i`{}6%^<ԦԶSO jRzh h{Ĉڠ6e~]2iK;y2%%甓qb0۹?F(J]kO qdnJ\JJIO\hdKNTkĀEnUʟHcR)~U\G ^DzIU8Ty Ml:Qī\yGP&j470eYig3?X̅Ƒ@djL@S1NM}ٰ f3<9@#М^㕋 JW41̴ʂ# HqeR;r\tW؆m)LA]`a0nN-pO_˛ȱ\@hޢ, s8Q4Be5Gv 8{%@{U@!=ʿ<@szԸpf2]݄3UmLiF@-_.‹a!9K俣ŕw]r\,0yn5x\=@3M@m O NqX;{D+OnwiC M]t ;45wiz94#uTS6@ zGGN#;&9Ԇj1Skh8riNpͩuЦos OM:$-@+Ϟw~GL~3ndy>]GmcӾ+ o6ixB7m /߹@84#L;^%Ӷ{;B@1hf>2+w>[4~;ٖIl92ͼМhhhhhhhh!hhhhhhhhhhhhh!hhhhhhhh!hhhhhh!hhh!hhhhh!hhhh!hhhhhhټy# ,@4E_e*W6ȺB~tuOVhIl h+l,@4,{$8Bc;5@ٙ=#?f~ 4߽4ܝu&^~nbdy {GGia3N- v~>?Wԙ{N8?U"ɗ,[(hSy<{mc῕Y2-Ge\4퉠~Zvmg.i+iDLlkk[,R̟Jѣ6řOŧv̈́-X;%[mngxIg4KTgQR%mmdn4S~ mixm]޶H֞|ryrYb,̤;jvGͭ˙qRVٺ>lOҺ5IT6lEhsl-uhiHqU$(ٜm]A6ǡ٤}C dhI@EE۷Sm;US+튞MJ3߾}C7pyY󼁔^4G ~~֡_h7WO)$Xbc멲AVIKr6+kt& QB hwv].j߽^vPYњ40[ [3j@LOOO';bIEDe1Ow‡5~BSh;J=Se}{C3]h~:] mѱm\-}[*Ũ-5uFnN=6˳z|AG "e6^6Vjk;]-:&Ɂ> MП3?4T `mRhTc >]pNT3Do;VWZS[&BBYM> mrOp4nYLÖB,y)*?䪏B@>)i*<]FӲt)at\uRAk*R/7ղ7ݧ4A[YzckҥK #ּGހ&:S{ʳ:;;d/;ʹk\ξqC-(mԸKhT#-d .2dȽ߹!-7[;wJ٫ghfm]0774{wNl$ZEo9|֙OY.@ۑMNKh" OK={ܝ@ӗpt:7gh{ M„΄s <̈́Ӣt9!̈́s o#d\Ε\9Mg-ѹ3j< Ou uvvZqreiq2mSWкtʻ4-<ԙPytֱ^CVg]!nMHq"m.;Q3>}q-Mcy,'PACAY *(JZ @=U UT]cu6j| o oaZeBM WUUUć5n4PQ#߂<};ԟ%RS.<Q"4nr@iP%q5UA0ɪ_4ۣ]!h@s爖Оhllljj";YT,^Ph͍UTl4+QU߂v<:{B_cp\:q8mO "HD5jH:w6/#/,w Q͒3\e)<7q_Rf!02r:42QWn_lΑCl}^hmmh2 Iɲ`ݡb!qOl>+NWKՉ<3k_ƅ㇏jPAՠqǃ󃎳40h88G\ Pn 鸬Sq"(J\ -Ze qpD7N.iNաG+M H+UzVVj<.[mRU^vC)C3:8ФG+]v%3]$(%s.IM"[NOm78Vr]ɻd*ĉz,u$KO mUZy8vIv/1ыn= [IMpjݔ,'˙zuEv\4*p& -Ų@&hS5Jc(jRNrokإ=BVj)h PbKٌERaɦhӦ+ C^)տ^]D&mwr9>?\ 8LuyuyiiuuuiiIM)˩E+ĐR\^ _: aʘj~W_x~-hs{vThkJ5*g\TuK%VWAxDiuRѺZlIc}?ß$4b 8m#I,FE733IXyf&W"QoX*F(\nYQ> n .Нsr0:n`j) Z&_$x# C[Kj 2srr2s˄(d~˙-[̢)'9ܐYy=iFǞ,4kTxRȹOAmaY4eNP\$:hJ˙L f3i͑^)n-`p MvHDNtNt4A3ȅ08#&awL\EOPuOE*|AjfkspZHEs-z0zh%9b9 9CV/fi8ABUHqYƨXD =cb>y4T6:>*kbƢ P+&8,Jc24Fb)ŲgX cCCW{/{_ŭ*4iNgZ@[+%i 6<|HǞ%7CApEXŶbe-_۾rQ~lߏOn_ ` fl[TyVL^Y̕a\ݿƢ+Ls{D7d=+ v*3ژR;(OFc>iSGM]h93P;@\zzxmzj0@-=19Jmaso- 11@m=4 |E9ݺf2sB۞NlzjSSj{zxAS{;7anJ;S$`b|{m "T=S7=)m/ǯ[JCB')ǝL)NɔZZS>ٟr8jlO9YO8Iq=fi=A ۑ8ɯE'&^LRs SWT8ab)_v;v<ڽ%wi)L_HgĉsȅTd/ qJ#RO"[m5|e$k_hK4f]*~W)pʟ=uJU\%TTV2~''@INe\e%1 Ƒwz.ʓ F}<\8RiK jrP4W8!׼Wm!-oZ5Jܞ'u{qNy4s*7!jj bu!oCzöMe7Fѕk/vrO<^8x&Zl:LS7Qu3pĚp5}fʚkDx/4q+?BՋ8݊݇S\yrp.\@]hZ̚\XChiZc (71`ͅgD5.\ M=oǏ!*{7d'8r[s0/ y֚g￐'f͊+ɣoh34[W[ Z V ͺ㱼y5ąfz<%H[:Q&I=L{yh[U~˯Dp8f5~ehy $r^!0) V.Vɳ$]FUxVChj|Ь IiiBiyyJQ2ќB&VTy]tHcVy/Z YiBP~ЬWlI [-"q!,ln4:,mŖ-[X Kl {o&ouWhj|~Xh֍[8aii[¶ќFn Ŵ0 a@[x#є&^a;s4oh͢/)ͺ1Ԥ ,&MIږi0ե^ ä>흹B3pwC%h,MizY[0mYϦ¶^nVZ^W?QU~HQ%h֛DeaXz%a uTVfp:DC1,Km)Yf[,nYn;YM._ hmߕ4H #~Ċ*TG~ m_T;rǠ)ם4yS& h ZK@[Z@$4ɕMv)hЖu < MZjIh倃a˴UB PR< mvi;YTܡ'afv;Ù69K4 ?h@.∳~O 4 1w|wB/v4  .BklgHѬ%Z;4ޟ̘io witwh Ϳaa.w<=|گc)wǡ\4=ݷ9[g4ﻛVinA4\Frc h^]I[ @8c.i+-P7 qCkif4j4Hsnj̍M7Ҵ{7jMG҆qgiof47M?w9F$0X< u{陿l4_ʠa=cv=f?7]|=S}MV@d5KTc靝yw@/nıWج ~XMLcJ8%8'P8 =اn-HrL/9M% YB$ ԁ((Iq8>NRm@%;,:ItAİ4yPiZc)A1 ) 1 eQ*Q5šD〸]jE<QV VX&@;WFY(ĸ,,GHJ'ʊDIɪSŪ]+F+5,V $$V H԰XmR!qYrX!?mE[%xP ԭC& kX{â6 w¢s =L, edY0"ɒX t|\K’bUvf[FQfK pѵl!G6D0HGL+QU[ Ӹ[XP,9,L&B,Jc-,UFS4%;Qn4|Q #AjeD# Z$MUf>H6"HC(ܪVIǾBq"tA] bEas4F*uZt>SEQ݆=JBrm׭DACcgD#3!(w(0jR;$l Jӷvz % 4wf].x¶bb `+WAA$ԩgp6F3\T^RKLYX$S;eΦ鯾0Fj2}e(,}&Ї{ʴemiFRз*1LpKuUwB)Cvjb%@oޡ|y5Qčړ& sϿMM_Qmw %*H;\Y*팴*fr,[Yd 8/zʩz 9TТWN( /(q ~w` /$vƧhLDˣUA˔+xAP# CvHI'S)62ya&ԓHFM__P:XKߍNV@wBKǿ.t89zחo< ~RBV$@ҖnX/yI?D).;@`R1 ~Em(/;w4}ɍCGPJ+$(Q֋nngcVdaRdFHbQV[O"K>ao@Iz@ܸ2V0msĕ#{nB B2`sHrf\޾rswMbA8nK6s%}pU9JAQRP9_S0.RRv2A^HkGInj!'I6YaS5/ҙ"ϿӀշNHq [$GҭOԥs,Gl ԕĆq+® :P$`9GmQ~I1+tYa|KuuR%dM`-#S."Q]?:zч^I$[2LF ?NSAȑqU0Ȼgɋ1 #jX$, &K@]=N%4 R^yy=6遀 Tl2$!"K %C|9$!%&2Itc>Ti%Ǿpa&(SAbreWnCg"Gy/ {$A$`n'I AzUx<y5slkpUtT"wX kY @j$\^$ :z.rW 40V#"59Uo 1%?O|>v{&& I X\4%IWBpk9W5ܜJtvZ c+,[sZ ~_SHQ$x:'J 4v:y5p !݋i {mE&Tձȡ`j.op}ʕT. xGw#H.1%[xtPȜ#RTPef<ŃB/"KsSUlWb)5.q.er(jRYyC|v2I;ǏYCs|3jI uϺH*:zH(4 ћ?,Щ 5S_ben}MhPo ]gɑN37ғ Gonf/!*Rw|+l_` :)0,:"$GЛM ?@l>q/ZԞS~lc hf@~D;?o[.Ѧ?#+;{.&*2`h Au}O_rVoo:Z0\3Wjyg4fIo7Gw+iGx,A5'*VY. ǚ9>pnFhh=Y$x\9 k'|U󼧲f"d+VQ䪖/'oS7QakqSϧE.%69&I̘N@ur0 śYՄA_QZK(TwՇ9- Za57!VKj(b.kύ-c"ǠrB}4YqfS Mk ҨTDd&eo!9UjtwBJB9O^EtIFeˆEU70Frc" :ʘ%Z#ǖ09K2ϣ/Y<'t0ޙݠB:bt-=E;CjU'p#j21UaD"Gֶ]y(*nI:2L>e fkw2'cz4{ qUSR+0K4z[qG][G2q2y.E9bNx rmV aQ CX1E^8"[8`NDn8.(s97|R \ؕAGˁ+7䌇N 6Ц\,azY5ŤC)p5gU 'Znkm,3lm;;~{T,UINOQ>*wwUzloUZُɋD'cW;pHG U%_1XM̩ F5$۰6[ƕ< xz.Z#T=d7K#ZO#٣:Ag2I5;qV Bdy#9=fNtA]r(Jr?=M8PߧVBqg%ZX*ˉȯxȁ˜&[Dou]jV GGAk!Ei#$z.09B#Q7?cCaiE+A]_6Z @lV r>z@oU(5vr gz ila r5 4H^8URc-YUnIz4{I~G{>z68˕(]_rùUQ*_u>3tY+lZO}38ut3`*t5ѻT G;Bz-\6$]ψˌ^7K~-:^e eDL !A1\<[_q @Ǘo>N'Y; f 6hYV,K OEh1== n 9]Gt-(ouTwx!eeJ=*rh,߻&]nAB b$HK ݟ""{oW3B3㋓}`"WmJ\21Vg)ɋ:'DbGGJҢ}NK]r3a4fUMݶh~/k}ake]{K廂td"&4FEDϏ 1'\&:{^&q6hkU*!F_t>84y!}enCEא!"@d#L@Ӽ`us>HϏ2vmr3^h|Z!?|r)% Z_,2,lí4cnэ\u. ~͎윒c!Ar(ǗTža!l5AH; ӹ4X{ty˧p4a Q`}F*ʩZBȚ }Y+:HrV(`aɡ3; D|YOmKefVO"`q0Pr}6'kA: FѦQls-uWJHOy]ӛW LoKtCGEz࿔ͱnȆ9AI͕s=np] .+n}GW0@W Nnhrڷy̨aS4Aij\JADҪGd'H .$URZhoGC[d(L A:h}4*v5̻ELW9>bt3o|0@qc`s)o[X%,UR7 I Vj/v#{gTfS$)+7E{`3=Kll mnUvA5\ H7:^=Z:W ();赨JRP  =hD#-4y F*B-E|}'?1moIh2C`AHV)|`7*I7IC~V}kO"#܎5_9AtNC~VI nq`WzQJ=wp< [8Hw-?UjVh5{^GYx*_+b+ ]A"}L҃+4 {=T>dt5_O 3.ZeG;H'~k乃[0V4unk:A$xoGR䅯”Kl%ڪYˀ9gS9;YH@Hʀ D%ab}ףih)9$R*kI:aF#4y lg{˔AY ȸE t$\\όz^ĥȗgRAWNfhaeU+!'Ϥ雟koȲr."3mY Jdcl4K =Lyo^ZbՂeZnkZ^7#<0Ede޸9=} ##=Y\[ϞcVNd4;$ VSpܓ%-331{'ӂ 9ט0 p"Ed4X7.6}O0FB$7$.ELۿ^f ~i,p9#,U⬬5H5 jަ4P+N4}чFb;]~G$$eEK |e#m =;wnStQa*6A9_%Iw/j9v(|86.4};??q id*Y'_yμ?=lVPvO?6ʼnu1lX=n7o*iЍ'-p奐}@Gd,61p_k4{|KL%]@m?]EII i>CH F_ٳ$߳Nh&_кƥIo:Oy>Q ?`,3SFt O] r b#p c'AGĝ12[RݚזF $Dn?E?4E^fe M0j&bvB?~^#Z_M!]tbCBjwDA="6T@ޑ"]/$ǀ &y}Bł$\n.d(N% /YHmvvBi& $ʤpS{l}=2'}hcSOt꼗IဘJq8i&soFE͞{)2 {9eV)7RU|j:< T;%ZpB[t宓cZird;Ix$P6 p3=\UKwO ҹW">ޏ]s1n]a#1^rh$`d`Z ,.XpOLGib,j gR*ICcAɈMp:9D[y -IOb[4ơ9f8# '9#7^'La>r}[jnb rGtWR.ٴ̘Mq*m)#B_vSg2 ʕws0o96 ]7a5tx F^pJR z,| FJ9cqė۔/ݹ͋yENkx\#Idgw퐈sxV йUP8}=2:?hO&x5nfݓ.S1㲊5j7=.l  m~.8*su|.n UFwd5^ԛ ަ_W5i: $qbz?WB$mM .+$,5dNf8twI N8 2_|qeI`#EA.X;MOQ(6^/<^3T|SsCU#n5F##Q}jv'H 4lzh_\) Lûb=3l$ͫۢjVtyEhZ?_t~̟QФJW/UlP$(?YeBCM}DJ+D=$*bι]*zL.*[)C5Gn3N֖ZQuznR@:jgd(U4ē8ȁ;ᔋ+|)5ɇTSJJh2h/'ogINLzӝ$) 4 1u_` ,)u:NnM D-4n! jIENDB`plugins/limit-login-attempts-reloaded/assets/css/images/icon-backup-big-bw.png000064400000003050147176754540023514 0ustar00PNG  IHDRBBT pHYs,K,K=sRGBgAMA aIDATxsDǿ28x:SŁ60l8I&'DGN#޸ 4 =kyo6ȒV28{PxP+DtE H$Hk{XX;:ߐ5BwCI"P%>Cr @$w,qQYr692B!x(ޘ_DcgɏN;`?3+B"so')*,G] B?IPB-7 fS}㢎cP !TؓS _C~ )8Dx&oeG\3ePEfcBcOkT|Ql&ͼt,±H+7[Y@ BG#""0 -\N܂*4YR!,Y*"S 4$QEE`*%<=jLeBsCe!LeBx)SL8*gkTiиc,Q8W6%[yʄ]o$o#ɖ~9O۳J6*J5Jۈ77`T5O|Bw+V!>Ų1.t.|W ].ȄO%c^0LVqŰmYp儰m?zE6o6=,D\5 KUz WEJ ,}|BƟJYۊ^0#6#/(A{bPayd`&נ S()aP}6=cnyA O`m{z^vvW hWZjga!&ZB.IE#%BX:q%֪h@"sܭKπd#_<[ c}y M[-sIZ+GD </';,gΩc9oHYqJߍ>J4{!?J^R}gkN%ńL)74`SGldbrTj/:XY>.$&N7wMѨ!"wǣG%h>4|`|~CƛդySŵ$uRԍ[>B{]a9I ?e^Z/Hx!@3>dRŅ֑bBYzr>5๪CX0Ej#H&3e36ΉH2ȪgH. A!"j $+gqM 4wq4cb^9_~vv_BbgxA!%  \.W`+sPZf2@ 2HUN3䂺WWRta>琲 E3ސ2J2 'cOW!rͦo%? ލ2ˢ\ Bк4 ~EQMK2[mT2t\l6=bVlp/#v[>x Y?tn]bY \eӢQeUse6YlXx1 .uX-eVZ nI23xq8d4αŃlrA/r.Bq[2kMkWL֞d=0d*KIIENDB`plugins/limit-login-attempts-reloaded/assets/css/images/icon-blocklist-bg.png000064400000030540147176754540023462 0ustar00PNG  IHDRX pHYs,K,K=sRGBgAMA a0IDATx} dWym3o]3I Vi$0Fa)6ŒH$B©Je1JʢcǦ*K%fqH(6KJ`ؑA  i4Boo?o뾽o;_͝ݷw?%A6 {leF6F)VqzP;xKs):E:7r so /' u=yGuC\'W%@~q7Uh! 쮞_hGWYZQqyT&@iFVlcKqnJyDUHɪ"19\/4L/0XhPôVbB5iӏDNg<0 =RM7,PvJ^=K^@׾yCi-\E'Bk;iz UEs)z'АS4;uo}oM "aY@r֚u#ٻBkĀ Uv)%)zkqO7)QvKZSfnΚiDz+"K_:Qh 卿s6H"y$í~rԨjFV|,3LT6կ%} : FJbEzgM7$H%Qy[Yh܏ 3'\VC>eD* }vȖ2:A^3 {% \P3K 9 9}#{{L2eGPf *y*r|=s+ٗ7$=EE 5*){(Zzp͋H!OnZ'MLȭҹ^uHI `Qj_+>d*W[zTB5J~fiǭst:~_w+ukՄsR !8\%#~`g.Qv\̀jMWH954a " \CFOH9H>sh=lƿ1L\g>" gg)-{!$HEH+}Ys7uE:ut\;NzgSJl AtڹVt9o=oP:4!>DY3nR$/1f19D2^T`QuɨJucsYm-QʮȍETnNv"H%RimqXG'8gfߜ!zU͓\ A|cSn?0K{oRGAIDE>{jrZł-b^Ml]~RЇd٫=3 @, 3jvBRR jR0Y,LyJ%w\q$yfz8M)Ʌ2aw=9v}y'1QP1!aٚTƾ&~)"DP-ʇA ne>ymua(iu@`QIG72;'N|/$߼{;*U#f  ƥ~Of޼> 塺Fܷ(lpDv*RMDy7pZ\'! {vnGNtm3Sp K lÔJ+:Fr+Íq P~1mT8Zt)Rĥ2T Kx2Q l.$ɭ:µ)q5}i\)nmzQk) 츀JK5!Usj+lMݟ*ֱ; RI\!2 zpX+4҂%1y^bi8j`BMb3n\=_]e)mvas*FJ9&Jb0vDmc&^/ <T33U:o|HɁ`HT#6HF4Jq<8|iZE`KcLCA2my\ O>XꂨtfQ` "G`tY||".` Pqhwi,^V%7.뿽J* TD+b1qJleDlyi</>cUPLppKU$/o?<3K/ ]C>? D$.窩~S|3Y(b bmՄ$$ǨR 2ybooUL=I die_⮋m}?TyWb$~֒D[d/cHHd܈Ab2NG5eÞn_tT||?Ƃs[/={6ӷ` feH& n SՑgzMzQOh'+;_/* f?ͱ[1ܛe!֒ydc+ x='EZ'̣`#]lx/=_)TY=T**$F3Ӂo݃>"t*taHcY̚<^ѸTu__`s^ {7.DȠq$;'|Ecg:S?oO8i#(ߧz) H $y6H\97+! G|_D =Y6A;I 6E\|c7uGI*U-E8C}V54= d#tߗtkfi+yAǞJࣛʱ)aѝXJ%UlӪ&7VyE&K\x2KU<>8ŞݗUH>$\@nI!E؁Q|g#-Nw&y3@O,H)6!ы#֟$L A̤$qS (%$>Wt/f6Ndw{ pjI> /ln'j߽ﯥ&7YZ}RŠ\ԒUiz ԓ/}p__Z}>- !3 pN- :O_SӴX W ͛`a%Z}h#A\鮡I DN,[_+ŦK!WG*`@NrĻ_ $Iv(RM~tιWȀQ lUϺ^\$tIgҾp8J}wm`}wJ P bk=s Ujw^~2;ʴ%stJ#La Ӻ"z,юW*DŽ[/^N"X\aa$Ngo0>hԭ娎| 88 ݺUBװރMo9Zb%7yoFP E#fqe̕p2F-Fi&IA7CUfŒl_G:˒%အڎ~~"H 6| 1=k;GƱQ偖ilЦt5ςܤo.\>7l$IRYHT$-ܼbi%s.BmU1daWxD>AhCGt}(e|fqjE$.*žztɔ+N΍+R FlJNXmurzD `]FHnYjs dR&.Hy 3ߋص\ڕSvQޑ\.ҕ,d^&aNLL7:( ׌.Cf͠WWhC՗+4)%Mk,q~*^#r#l>U\X($"A5K:|w{6BoeNYgҮt 0J$փn+ T5a,Nbo FAVx[y VDlޞceq;Dy69 q!rQ]%%'H}V[M$0Շ+jtxwkOD^e{QZRzz<"ZRK-)u_ c=HzX69=8S̽lZ9i-jY缓뉻wɇ6j&@dP^]7:]嫗5Q8~F{%Y;cHu~.~(Sz[_ӏ9aj).f" € "Vv{*9ٕN(Z}%(#Bû6X}G4w.E߻N?ʫP˿=^·~$ӂZ#":Q}Z^چ{$ŧENF,cdtb} IK;RA͌褽3):v$%'?AS'z x:mNv)$ =0ohi3{%5h@ʼmy;t8ȃld@Pv%t>cGhڐ.T)(/S~R2-A!N:W$H~ y .lIc,ͯ%;oU['h8aRcC [1N4jpf'N7I@ M +Lou}|vqPXeF4]{/uoKdxe)1l@GG`WLxQ^?n;cOR^P` Bl{cø &̺pgePJJJǢ5U#o0U벙 mLAC^:jCo*H.S?]aKf"[0G|_{TJ;];?*(P8Wq8=Lr?n9q -AĤ$#zQS^D 6> ݌ːP^Rƅ[T U;q7CI,x|v4NAQ- ])ziveID $U0ҩ6nvNd4moْݤHVpmL1!xBͤLU;5a"Weֹezrd"=ApaVdֆƹ܁$,saCE:*"p<]_:u? Bui9.N9$oy6W{\MTdbu? C@IШtik@jxUY.l}[0o|-qE4ZfiIwZeή6Am21~' DsFoj5;7h^uheFeqH!t`s4[]aA?k[L5;d17{ 6D -\X&H(A( Oy}ǒvۖdn=4y*?Ph|7 ڍzAH~ ^qɒG7#4ǴD-z5weAb'+̍껛t8׵!eè0ZxEx@}a6GVEgw|A<]{P5$A|]6V?PώJٕY_Do/Ȗ o%/#FV{=kmA rm9H $%~wуm+$Ie}lޗUn)ATªd$Xj&$oڀ)Z"- u45`ժ_Oӆӏұǩ8RRR_/!9Rgu nG_J3ACy/H $u,͞Pp<=b\Ylc7y>u%X>'kp l nmsRڽ ԧ-%Yl@==a8ڎ9t#ϓK;1,Y/Ue$" $| 42L)@F;uiSmH>-rē c[ʱϝO 'xiYQYoQjo4RQ56 j?||t5BI@2 &]#$hȎtH*QKQXWt#t'6ỳOVhs4.WF V]?-'sg5^9$#2{|I+*tY 뙻^O[oZuJTA]Ԥ7MIq5>zVAX#'-+@9uNK.7^$=<$0"kbo1K!ܴtWeK: R.L9OZD&Pa,X# ttAx&w $HKm#AҡW^HTL[m b~ÏYU‘T? Wxg  3o(M; BԵAt$?kOU]5s < C#Mhc_H%nYa Z]]^Z ' Y <|dC]S`W!]CH&KB $H O)mL s;uvPت(U(ikԮEvHZB=oQԜ;RABtv:܊t,l(N&*A;<ݕ|$!F,!II(HdBD+:<{ufAnQ0vP%[dR{WaۜȒ=Vh^g8HXZ@;;|箜ȶ<4\ Cxx\g^};Y\3rvĩ ˃x8X>1~oM@$&=" pbT˨D݁XpGݿ*;ymQuyWב %aʳMpȅ-Z:E0>[nk7HR PL6mVwQjcWvRmr(I| HcsZ:Hx4K+%Q}(gcOW륏-wy5@&8;x1&9>l{:}փ 4d+y8IEo! +l 3/n=~YI>IUuH.j;:Ca-: =j|z&Vjotq3Mզu MRpɻ5M-HP?Ⱦ7]=wFRVR?5a0O>%r2WY-=p5h5˕4 w^Ul1lrT?:Kn-Aم'3&O[_:)&]$HB`G$2{/EOZ,‰\j5lSt}il|ӊ7ͪaHWQ:BdxDj5)^)ʯĞwDC{ii*"-Ihrwo%;V=o R/ݘ͜$ |{Y]|4+?p 짳[L~~ǑaߛEGu$&TH&6 ?:Vϖ5QrcUڥCy&:"4OL)D>Ca >`%mAl嵋J̞K/MБ?;o)z{tkmT7Sh]v-Mp"j9ߘ1 '8z]Y97*D{ˇ ÷Nx:EFҸ2Qcj+l0IQ%AϨ(`$eVAEE+͝Mq9IHvp?U:q{^7IV@Լzh rAc4,pL lHJwb`MsؤTrٽM* oTF1 ; Qx2S 3AwNs?4)Z4EfJ;oQ@hȢdATo0)HCM:G]*IIܷze _$,s@:,NyXP{+M{MӸ3z򙈚.Ԏz,>hc @|,f~SJ`43MS%-#i8qع|qCChb晙2rv̊X3Xt@ZJzF3p'|!` !GFOƬ'om$bs Ƙܛ 6 8?'ʹ :m)^Ejn0AzN4qRꥈdzZ+MXJkbZ2):# 1B(rTY+ [󚀘IծpF+\@d쏊7f vxT +~]w W YD'ddέ]΍$JI"M -!J*랾fZ%)pn{zϚj*fm߳5-t4l-tLCkZSŇ@k# A]h?Zq^t@ZH\5ݎ -q=5ҫ_.r}t&gINvoϤ}Zzst.eEw~NL%O6/>9Mf|I7c؟xp}Ͽ(.ųy"WK6j)$O^m.3B{U{<_b2}NV"}%8Si(q?ue=Ъ@D<{wnsr?IZץT2NVVh(ס3}?/C2{C*jf@6+)(P9V^@'PMcO-*#,-ZY\8ƣ=#x^]W/1+!Tvg$f27* 6EyUdѺG]X*:<Fyi1ѳ0.Vn.Q$JH}!,5gXj>?`_ ##WD-U3(إcV@YE<`S'B>Khk9q6}7pt:USVC<`qTTBϠ~nf:v.e*H"b,Y40H4w8G 8?[:,w@~/NzcPM\hu0y*IwQq&ă`pXcp DĘ%x?3^RBoPb{d,qxR^Ľ<.\WtdF]p>`>@m .7C"98tF5˼SZihBVc D"LVw2240DŽAeP\ x̝! +xN$1R*N Dg7'CWUNd!>wZ JA#GEb?XqEOu7 pE ⶶ_s跻$GAˀ\ AVH1j=Jok8f|V-] L-[$ \#xݧqJ"X^@i4bdAFvd4*uxBEFQ2=>Cw [Y7t1AV֊Jv:"JO+9bX 9~Yp"j 'Pk5'yAEG ǣ-(cPS2|̡#`bSAn2y"j[0MB!7\ q :< L1}VGଈʳEK2 1ǡ/`܎'3:L'QPE։>IREtE=IlK\7,2@o+GP;_i*oL 8ۜv &}1Jf0m>^]NUaۘmp΄(Jq]ԥ)xXS D2-JZlWrQ) mAu@TΫ,.kN \aŻ(;tdPbP߇w@J *"7TnF*%CqհRuwi!q }?;K\׌~9@g'[/\7JRk "xKZ^,¯qL}QEhMФt`pǃ3Lq'J]8*&x(i} ^a9~^d_!H٫p*opַ)eOu,Lwx"}hQh!0e`Etbh JN͚DؘUcZ9N/ a,k@(Uw-DBJ(.%d׀=̆=rU͠ c`Lpy?B  A!$+{Se71k"Qur$ׁ#3G{xpǼ/x.Қ:TE8/>˼SYI5ݨ6 -9yK >)&0i?:Bso[m !W5cX*$*LS@xN^#e IkqE 'ó!銱M}\E"4#K[Q oӒ(y0̌f;.j nOMKoHZ2I !zAf޵I \?k"M%Ȭueub)M\_Q хzGӛy? w '/zP%◅lp9%F6 fBW SQT9QIx _)wB!a0n 87X:12Pں=H}zE40#p C2=rG^SUEѲе"L0>}HӲc>g@F s~F19SXM5@KgN2LM_&f;&K[Ms$bq=Dw, (k%;ND@֪̋( cf1"Uyּ jz}J+0&`#ע3ɁPX JG/'UJKsT61&7f4BA&<Ɉ ^&%=&ah"|<TB<Jt$ƘylpDiaS#qLh3Y-&HDtp {Jh;}&ᥖDO7G >r\-L !/8#f D#44ApBlB%]O+.b슋-(̅qe]k(fBJ* p$߃YDǒ)@$53UΥf]4[@9t(c6}pRBW u'U/|ѹZDAu Ɵ,tڀ8QpPtQw`H6Pvtd>ha+? HPs#Xl?l:5 r\W&ymYkA ʓ i&9@*20DR 1i60>%3 #\1W1!d<>&5@)mz;:wl-2 wnp>ǡCn<7Jé2ߨd هzDzn-"WB#oa>6a@Oh[FC&BEf+RB Po7wqY-qu4&hB9 \Ě(²݌'`a}:X%Ѽ洩&#QjZé,tZD.&l<kk|Pf SC _!@ws+=nA0̏d/v(ZXQ:ogbSy"ZǕߒ4QL"LH)rH"#LAeR,` Ʌ29WN<9ǘ[96֜k3[ܙ\l+k ?(K|s̻Xel;TzŌsZ&D)Lk0UNG,Fz$ ۍX2{ؿV- =ԁԥxәLaƤ qߋi/F6N R+iK_T\ȉOx%pɡE"6T R?"o>p5q^JCRRL^mYA<y|Xq`%!dѬ/&4Mi sMJhq G ^϶YLL̃cālHȑVXpْЕ{=)|TG @&ܳ>+w*QV|\,rU*u"p,x|$ft2QvN&z==YVLcqf[7a #8z!x=#Z H[j%Rѡ5߶Dw-t 65Q19Y߻DI#تN>#1M.`RkO{جEL(~ LC'r#;UmdgfGɧ02_MqKy}Tw77JD$&gL+D(M#9803( a`0?3hQgwvMzyhiioEUt4!kji9EswHR'%tM|9m0;f}i";_}X-?DQɞw#Zh(ޢ| MwM/Tᄑ{\ LYғ]z{6N&k&noovS PF2ɁR! ~̞xw \A֗;EV4g5QͼF>uڑ+L޼ymo6a;gNӸOJC!8e-Gnͽ"m0,BTphOSJ<`s 큌:MwErG=/~у m˽H|< Xf+ksn+&t0T1Iܝj; IG-]z!.}I3~iS.^w4ipsg6hjeJA`_ /e92SąmBRhL#JZsjPP~k`}-DqN^ ٝ.\M~߱~Q*4Na@\>3kƣɢ\[9)2~ fE8Z[i0=#0=9ڛt%?[&DENqhX {$JF&1;' B]*^[k&aUTfZxړr}V cRm6u}dC[?P%ER{k}n䊰?}g?imEHJ͜6,xNc)iђbKznkI+9= YlV%W1'i$lx=~zys  *aҠu f!l2~>{“^B2ِ{Әw42GSSse)r)>^w#*ݯ o)-{ISl0K6 |@t mmlɉZ`gZ|PcFÓ=ٙ!%cl0<y3< պLBͻ(d|d{ӳ9,d)^/iЁvɁ>F^܋}nO[:nj/sZgI30] ݓxxM d5V&u_f?^.&(g36m)nn5<ް<-Ǿo;0j~;=GŅݵf}m>utRqBiKpZo\k8V_doB0w`]Qm-'Y&qC4=:CVĤDr✗kĥ;ܩ_6^+53Zq;k4(_hW7'1׋-Mvt+)rSn{G~Bp{ڵ^.P!q^)p@?" Lj8tWCql,eTZ|2%̾ tu:?Dr}p>b |{_j3Dýc0+\\`?~ Z$/?ik0?(}ĊFo`\\΀{Ưӿ%Z1v3` gBtuP[ww*8,%(+*Fb3UsӠ#-wM-忣]Z}8cܓM%r*<ܞ=nb!rcGäS#0y;*|X Kx0Nc2s[$փ](r͞T2Q;p}JnɔOf#xvo/ i] X-^!q., Q}#(Zg .|~Ǜqx7?I/;3B9u{n9<7/_VCePk-8 bi^]ҢBkp(r׃"o_ĵģn"?W[a. ޗr?(arӺ.ߌuE;jHqبm*~$Hϴ9kB 6쬢Zc!a"n Gbҟ7`F%<O"! SgpŬ%VO`9qe;A9Ău Xfʫ{CGq5njH ԽTMs]WH;gwu V;F1[]TDI-_1U/|U瞭 [[)&‹+V3=buԤ.YgVLήX}QߦhzNEX"|g=.Sq;_ /귘éY1 3 \(g5*~lęPE#2˽'+G fb%1\zohqG@ѕ|è1MnN ]YJ6*v n VvOQݣ?:4ify C|Xs x4_.'o;H~5dyW2x$B($u8%faS)BD~/ zN{sQYyMQl"}Iת@I ,N}WhuQX>ۆbeرk`Ht\ey{轛Whǒҭk效Ο&'C;5{8ɝВ\a_ʋs83G,Yq}^R5=xP8K(wšV}>p89K]hMkZgG/5nXִ&ҥ| Q%ȗ^S%?Pwa?LbtSt9bG#sT[Id醷M4::}\S'DvUӱjS7Yb:k:]bλXӲ3qkDK=RFז}L<4''|Q{{Bk<<'3W qMwGۓy]D Jv״rNvq]@K*n^S@G1{Dz(7Z@0NjpFKYeiuQUcknzIM\16F6:JaeqAET,1Asw[pvrtgnnuxolZ^k|kz{n~jܵh^and݁ոΈݜ`ۀnq}ho\z{~krms녊~|uxw~ruٍ컾ԕ|pv+0A.3Dy|̌KP^TXeXVZhNR`д/4Dǭ͎WtӋƪȷƼ㲴ҝ38Hɹ硤hkw—惉7;Kòϝ~os~nѧCGV¯j||i݊Ŀ?tRNSS%IDATx}@g)on(r+w5w'wg<{UA8rrI! C|w|/DcQ!Mhcczٝgvgvgw_>ٙ{{a8*߈BtWImmݐHU:DbEf*d}ʚĂ"cΨuU*Y_;?NbU=.gcUi3ϕiC۬uth&I瞻=x(ynW-JT:8ERvt3j;r.7Hk1eR7C]-5hthsH˨Jڢl& ]9QN|QfX8'YpleT{,wҧFuYbbWf7PY]+Kz]|Rq ia)R'vHp2cP< Pݲ p>ʖ.&i8hkCft (%o&Umդ<2t?Z13 x`3;F{m8QPM6K2­V1/Wҵ喡'ꙠSLT^? kO?jf=~"=њ(.W[ÄWA+ܚ84S9Og\%,'Ǥ[ILb)Sv)Gu2!\?8gS-sDR2\>"}; 32!NKZsb0klAqe> 9Y<#&Igl?*Ą[(8>ϑ MYTI ?IL 7*Fr0!,St) .cBZZ+;Wl q ť Ã^P1&&WJ)fHDH4RȠJi Ib1">)#V/mP"olc*(h!c)2noVYHfFh ͔gi^pUaoIqg*9/IYGҧdnVlD]~'"/H'KUZ]xFMq=:t'#uމ;c(Lz~pRLw5y#e忡 ŅM7Ρ!ɬXB= ](FqT2i#Ρ j*JQ {IcI *ܭpA)@r@Z/:A %x'E¤oғ2l?jIp?v'M[4NngStR&snxҹ((`I7PC~ICΣS{?#ْndU.EǻM+H%ؒGkJjlIGjv&tx~&F^i!Io%%5hudƛ^B("QvFZHz)e8' $ F~X{iXFȯ/,S"cm1 \PK)c]rqr_A4Dtoz c !} G9Ţ·Uz(9 PNK5cHK"S34ꡜbt/)'1Uiߝi\}m>:٩ Bdl^4.)*m7栜QGѨu]ql]>aL[嬘fzܪq)!UF;NLU'xacү¶cUap1Z3շiN6bYK#o=}zOlL'ӝ#:uE-JHEvtzj[؋mllIǪflLW2+V#2B%[ =̤TyҶc[fNj&~d%X^U4{FYܾ]*d@¾hcWL;56`2' W~l=%meʷ_I1JI z%v7+wY=[8v1=7ӗ.%_+rSΘ-!M{4+qt݅]/0Nf8F,%zyǁg5v!I0 >7slSУ,)LݭnxHCſײ;TV&{l'RL}ȑ ubv_T/7'H]"AF- 1 pb&Z5 x|f󈭻'ZS##\ן@eDH.&1liQA'onvY3`Bt/:5C3ISW\/rq /J+]5F"۵fj$H8CY;1~2@u$*"/p O>sO|WSsGf#AH ";Ai%vN4 4$w(ݖ),pN,5@ҵF< bs"䡟}KH/(ġM9Թ" bчe G-O~[.NGoG%0@vtP~ MDES4Mu95.ԖU;Z4 f$Mw?$ۂtdϊ;qq GׂB\v~#/\Ƿ1}}!|6b"k-J{|j.?kr͙1$g!M&>kOz$zUoEd|ÅOMa+I}|v?$2|2l1I+lQ%F.'FwɼFU*' D!t^rZٳ LC![](`f^R=0^0!pyP.P%LMnr~'|Z^@=VMlK'3^qʳc I7'|r #׏+jƟ Hpx IQmF;_%f] zçwzHK|TOy9J#gѬf 41gs7/ȡrcxiĻ z$Gz?JP3 T{dlAhW^1ùG_J=iTOL2¤J[^4tXXhO/jrNgRdNXvᅗ)(Oo\$KȜnw$h% ;#.!fkroKQ7qnrI&=FJ2gRyC.h|R$q7/x;ĵ>S!$oe_;GEa^ҺTvGR=!9%R3i&c-yP9Nۡ%c>Bx ϏDN཈+%J`5"%=朂uq)@1&IK9b/ F{:TOw L8gPH p\b,#͇D=/P&qnI/q|dwX邆4qʧ9osr+YN%*@H&p*N_ϟ=6*kۥtXi>))v4aG`W.9?qAkuX i&KME= )[5DRKB2]5>yg(/,.*LБ&:.}퍧zV_=#v<EJFrUۨu r.œ}꭯ꭧ~W]FV>y|8]l<7C&{K?d4$W˹a) OH~i5f>& 6) )1i0ㆀAlsB?n˹WJ6 #E$f'x} *Ka#VtؤC܎$v2p]Gx FXǐoqB$&8H3q مx,<&^$.Ȝ:&$HN!F[k&$Y7Jd?&,=MsHf|)Qx?2q"-l{?Y #ɗ\՞։=~+BɀzFhÉ֜jcH=>r8gܼY,2ZtA̴x#bF[g'=jq5&d{Yڍbu91!G+,:?Nҏ AҌ_E#>%絽[o[ - IҌ?JdAtҳ9rӷ sxGIW^|0w1%͟OT˳+`9o2L(fN>Lb &2!N1ıH·5F&I?qb8y870NWTwt@PL+a[JKOhV̤҃#Le?tXk7Nḍ5ԑt?Gcs N?f3-(G?-nrZhk ]#я{DE!vHFk>a5E!KͤL鎬 ߠʬ1XQn"IǠ0s-$}wg%[s"c0*ALXqcCʼh)Q؎j56+2m2vf X3N)՛IЏF=1E?yc]';l=6mU5IsM 5 O7ytΝ;9.?J2")"] Dmc,z/='X' fh Ҡaj'6=^ :u /;U:T .x'׻_ǨW> ɼ%e9ޕfekn^9[LdTu# }rR,DϠ_S*J K1P, \8 U)Gh5k)"ڣ& n7a{诟P>i' ΁-i|RGұ,-&*b<Is|ȫSБs" .=JH.U| PD(x9HQ >y$!H^P˷9憡P7y$@]j4 9aҚh:';6iI㈼Vδ# ()o%6in]w2@S0%iXޥ+,in/$?t7jmOwI;ztyW:xΤu;}c^Hh;ҸrFR^[/%\Cy|I:h{x+v)%^9Mgi[Gg*1 'J'*r8i`)5O5pqEmؤ ֱmvXDwzzSKzJFeiTDtuShD̀0HJ_ Opw9aA Wnq+'4ٍ=Lӧj'f?<;HsEP'/+ 7H7D4G$-lZIznI5Is=)FqZ؊vܗ3bS -AltE^г<$[js+k<%͵V[̤4i6EǤJ9Ɲp>Ν'ؼ: ԕ]'%6a:  xGijb- 'φFK\{~+APѰפZW)XG%geN|W;vPf ' ia q2;RzU ~F?IAQ w]O=,# >k_4w '+i+XaZ%&'mE]Iw?e&c٤% ``=o `vkBF7yB;DwLp)iu yw:p eKh>W;rRMԆgk8Isƽm 5s'ixoMEKynr> qsyBM7#YGx#\Q I!U>fp>#Y}J쳜p!iڬAmS˜&ܴC`ڏZAV礹uK ZLbˉ.r~ q({+\-]}5{iDM,{;$7XnZw%NUZG!\{zfϤ9du@ qZ.ٜVkL2~2d9AlfsJU12@4ǽRc3O,9-:N=9mRֈ^6;c֧lȖ"Sgt$Hsu^݄œ{wXAёHfiHa{Hˇd#/i]k7\6mgnh0KFnҏu|{#Wk(;Hs\𣬣洫/1%PE$(E`& ئ=[bUhc#Irc~e(Eʫ>`V͔C"+[e_]R<#`g7TY^5##(;=xgXUyg7h(ism6tthFYJ6+#|)m)Q/H# Aio4ʌn Ee;{_Ww㗃jE8A%>oߓJc{̐'F VX}QN͹n4F:GXsIENDB`plugins/limit-login-attempts-reloaded/assets/css/images/icon-cancellation-bg.png000064400000025432147176754540024134 0ustar00PNG  IHDRX pHYs,K,K=sRGBgAMA a*IDATx}yys "x,,rRDIVE#.+I*]2T9\U)rD]eҥe 0%Oı{{==;==ۃ}3WhllwwC"A jmڀ E'1#YvRlv9N!_lŶW-HrLlG Ҝ KA ~V0 aA#$Žbd;Jn$ɲ!$%!AtqE "IaU(r@QB"/ve W(%U,N(!2A{bxDI(DIȪS닎]J IP H H*Yaf=L;XW " TZ'A9װFd]"},,6$<k&%ƚI&XrX5d^,e[rXltܥUaU* pgFQfK ѵl!G6D0HG{bܪd#fi)'jGłZeaa:%6$Rka WaDK(݆VfC,HZYt#-Q--UVda݈"M sZYt;Z57s%E/?V VzX5KCibYEᾕ^\FYakؽGk% b#eSAT͵Um7J+=,zuh$~myB(mQc=*A"Aqna!_?`(ha![{¢ + b+ zȨ' 뎀j@8q::9yԾwZldn zcd㡃;ؗywXspy5W""XWЉ| $$6 X~S.t|'h0)'|xscڮJ7S;p_GE~ecnw%HzBZU+3ghGK]-^hqƣ/WxoKjPDFߣ*&S=A*!I$ݥv #ؿHVBU3G9ǑhdB\x:#Ȓ$wu}B."I*WI\'8=߶'z-st{f JXjWvDnN7C 4GDjNBڞG^W$`& zUB.Vة7 U?^muQ,,$\\ p.S?Ӂ_{ 5v%|Х}îHdA`Y*)WJQ)rrǹ,/o{N3±!dI2zBK/8thc7տ0ÒЀI)l{ d>fO=\?+=PY/wcXY0нt_%tԀs"'_Qy߱H~b-$lnEebQ/?6{s, 05#s'U*sS$">r1Vyb3Lḇ/m\7l+#š1eҕfn@(DŽe8g>p)?9.cYl( WF]2QpjvVKi*В #s(ln+^͚~*_ d0PaJL=_4zЩeP9X*++:jAbQ]2 y;TVqUn$B#aUuLMN=mzlaSEV@r ~a75 $I2\\st[J,U,-0d"eF j !Oc$A.lwžyYU:]ph1W0Jڲ5jvY .;*׋ 8JՈv tgbj,ڃ\a_Z”0O&9U];\=V WINg/fNedyoU &: mU:0QfwKe)ߢmxmPUϪ2,bR buB\ A8+Wd j"1]8kXwS -(31J'V~l)5+)> eYn $݆ItV\]Zz~!vRe9G 5uiW\YV;kEKApZrN J7A+8@jUNCi7F+ۃ9E,CKT7SgUG-Fc;$y[1%3s 3 "'9rK SYwS}okϭ{5قj$DuRlmڬ!ձ+Ô3 D WUNi-:Za1fӴrYI&Cb?<;KEn"]tIc/+~!"QžT7nz/.a`jk 9ilQP ¦)|'^$f?t\y7~k.KVMlةN|vSYUiցxrC ~I;kͲA %^4 p[S7Lyk=B ̸|3#.@eRuGS>%A}n;Mx =ۚ<@!wjqńW䍷RD{g+c8_))`8\Sؖ2!)ݪXa>Jo 3FF qS^)<5w#FHJ;< '\s87NIPЌ6ăDjExlJ~'K_BU4s|}ɜp03YQ#5RdM=<,}k/euqYpCtϢW!Rw"I~jt18U򱛊 "?7s[lc7/>rZGRߘjƽEF>9]c GU2H|PgsO͞sR-TJ$'I+hrߗѧe1e i@ǖZ!Մj,!i5xLӇ!4b[4c@}v#'<MSh# ATJ' Hүnb&ɞڷJkrYhÏ1@lQ$;4$X18i k V1/wCmWzq#߲@{?5Œ&)t=g#0:;u7hy°G4ѡ:Ycmp[L:Hj>r05Wv[ZJl/@y֓ S;%, Fcm7.TvS=HwRrr=h~zHf9SɑsMu/2k i 0NuCx3ߺr7?D/"SK=ٰ:$) _%i v:m` PU]씰#{>q} IL . ,FZN$_Ѭ& 3SMoX4m@{CD3L $[7ܭzק$Q*Ȓ[HV5ܵ7kTa3SM^h=HP:#qwU}H@6$Id[AHAaSб H^_9K rjX7Z9WZe),91&I&ceB{eϡv (5 ";]~uLGc5&UY\^Vr5{ܐ!ZXMYuYc* x\&&N$ IaKEv5vHPvZX-fT0sr..oZl^fVv]Vb'kyTmٹ%Yjs*LřuX21`zA_2͟[XD֬>Z$U-E VI*6PBv@EU;,\ѯȑD=$ t='׾dY/B`fF*tiͮ.!"Αa0 uΩhqWx%|.6@E7/dY?$@b'9gzWr@|F| r H$dTV,> gK))4[D/s4SJs^92<ҥ_n>yG%Dz**r|T,6|s|sY"q;JE[rs8C]=S=.%H@Œu_3`SYmu&S՗7r]O r䁓mNy<oQi"Ȅ&,Ruf4R Dvɛ5xz48̝rhh7k"Wݴj}J:X| Fo5Wl'%]_/0U;s*>PXna0Qm5b[ uUeX3J *jX27q\7r\J\KH2!"\D&4/̙\:RޠYK[ʚs 5/Q00V$GyiFw/>6#%TOm}iAu$CddjP.}`uFW8 $ZYz@#30aC@771bg«~A03YQ]]t4fqmȪib9y{d=yڻ:bXlA1}13/s}3rj,9рE̋c6m/ktɕ"ϰI-}+B=}wUW 'q]8#Sy . " Yrط̝ғ_*URVe%09*R-=RxZ=++Ud&[W{fPP+}4|my!zK\SFRF̽MnB}Ao:|os`aXQ7}Gѓu ~hVF{Zbr 7+sadNn^W9JhýX^ ܸ@\"l0cLp7Bn unҫ16:vY͑Un_Zͽ0?ky>,CŅAÄ[?yZM~Z:ZҼK%iw+dу~D4ĵ9hj$)O0XD9"V0TiS?O|e/Lug=bw (b3=~@Gҟ|a.}m%.;(U)=$Ix8A˅#<Aq;WأÉ]hi [48VH Q$1$l$C[n.{pΣزt>zk[]l}N,gh/Ҷ #t4X8Ejk{. kx79blgԎT= Yk%Qppzn-4"eԨj. l\ ) ٳ$bzHO}+ܖXCC^ڛ*[dהQXM^;[W9D:t6ܫ9֠1_1.o㌂Evqkt z%ZtrpEa GDZ_h $sb<=qZlx+] '1 !CUҶF]tEFg~A'4=V,]3 7+5,$*$n6 P6l5, _?MM$ P_2#r,7Zu9AlwDƬ(aՕUm^]տD/ȉҎ;fhy9DHf5aD9.v9.]A$bEϝLGq#&u#ɀ[k& t=fuB㋼(b'po럧 z!^Pgsp&#\ǞpfZ9_xUV˼6(p ({+ "-pRKD)~r+l (nxH}_BȢɂ-Tʂ,E/ UE0RГPe3+%c4 O?VPV('Oyb h7&JnN)bU.peuNuQ5D9Y~,+aySx#ՍvxŸTw TjkE,hcuS #P (JEgF:g%0 nYթ$Ac3p+gl8$T"|V Al*HRI Ȏ(MӤ7+Ԓk :Cb Tay9%K>2섿I=BS{ â&=zU%>n%J=!A4M 70sy9 Z=e_J $ 6 }|5FK@ZeT[Lq^ ?Qzy^( ឹXY9*N:4]h #pxF7q|7 h07qʼxPT39xpDV)Io~=y)vA@#tFQ$YƄp4zH7jyJ4q2Y˞=Dp"L59BD@%5 9\c="5H$UZZʴH ueKR0jdOD'M5;!T-qjRQIgo rzQFxTYE?FTS؞v_Ix}5'$ T.BN{UZ Qɢ2.?:H5y,Z#-]ް+q4QQA 6'rtpzLgjw ݼԓvj4z=;&Ex-k;L]E a $) HD,,VIFcG¢DI#AEo`IA"kX.hJ Eob @u^Í/6kim^ÊӊL7˺|-z􃸦_" @S)A>f=Zݎh5z,0 ʣe vn#qF$,)b vn]ԐZDE" VH4̪Z]Cqy 񴪖E7 jVfaq  %Q4->]0o@sUX+%#B/Ana {m J xt%IGbxրui#fIbfrgO{,,<)`XF$bs4b; &L,RHrLz} P% xuH ]$bzR>i#"XWz UEGǩXb8ԈjE,$Wt %E vݶ 1NNKW@j 5Q( ~R׀juN ;Td?Ibv'B&9cCv4b(,{FK3B7hcf Ҁ$ ugj;c؛@F-bIJnIENDB`plugins/limit-login-attempts-reloaded/assets/css/images/icon-checkbox.png000064400000001601147176754540022670 0ustar00PNG  IHDR``w8 pHYs,K,K=sRGBgAMA aIDATxyPont.t&Nt@7#AZ'BrSmx;ps(@DDDDDDDDDDDDDDDDDDDDC#`Wߩ=pFX, ?^J{X6e*WŸVT Y_~Ԩ ~p+ɉ xeg#_OR9 mv lGvK 2T×i; b84s %}0"E|Fv x24+£n7lЗ;e39M/{]ѪE'(<[OAI~X/?9F^NpUٜVn@S`^BWͭ+8P&|T(EKXKXT;|^F\ºU(l/[P+yv6 |1nw{F`m#K4$lroY;r}Α$(bJ) UF1(M['j ABDQ#TUA%*CS4AqB CRHlyZ~{Μ3{=qf9wd|̬3{߷#%!#ɪH:Uo.5Rb+$/iRB%)01xmEddTE"JeMN>TrabĖHK4/_:ho(8wRt18Ӭș ##Z9&DTl+sפD@jMع3AY;v MkquˆhsZk $>#k:Tw;-WIW M:yOt "k:Pׅrg7׊}@4\2rD]h roȚpaz[[ ֏UP_:VϪi uiX&.\Gi"9VD`e`eIEt~8qK]WK^፜trѽXW[īw9Fz7 ֶ}|2zeqgWN:%3켬˧=h\/xMnjwg>7ό%?wz)[Dx'(ͯ00M{%w?%wAzyT2UpGIA7@ˉfњZw.~^wnSYEX` DXqJ @X߁Z/8W}~wRh~Nx{>I8 5XHmʡMpf^%!+ԾJ\ucWh0T;H.nB!B|]o@:Xc+'}9 2wܼ[:.?EbIxhIJAq b?+%cslQop"('GO4,`)!_}/ڕe1mK|-`*&+BI}/2r^!WO['6HABQ2A6w:N2CIt7c7eu}KpL/DYg坶9ISl XV6ӂyR\@z++[#6*J#UKq,|U!Nj(ƐF*)FOcnFЗ*.$v%6D![г^}+ʾc_4io>If:`e(YOPw{_Җ%DSmR&x.Py5bOޗ%rn6 / ("ORF&A.|Pw1t\bQ\ AHAe{>boa2a3<"A#HE1< \2pqc½y w }c(,2i |_}:k^9Ff8} \'_Cj3 1uyxK_<;(>GXkVj={C@^nb0c848F 7 SܼTO,ceF,cի47<D5jd*q 8(FA@J牒âsD\2h LKRQȴ!@6R@&>!2\])sJ6'="}#'(tKσ}ܙ|xGܘ1; <}@Q61R(:2,^٪Z xNȱv )v1 Q8p^9l:~'pj,Tŷ5 Jk*Q/vTm)S!6=)b|;cHy9+'ȂPXdxdJAd#`97`#s1p:eaP^vb}I=5IXP%8 * ] ,L}A/C4m>ײ2;p?fc\k_'pҨpw!Ӎ*&IvhjʿKXo>MਇKWdBAOL4LY%Z0dUh:avzay}sΙӪU|n~<H<921@H\Ftu~fÎCH*P4X vM‘N7۰)ޥ£ivf7%57`P%wTV:ԕXNqqbfr}.}49~Dzsw_瞍N|%q{}5x[yMlwQ6]=OOr<>ߏϽNbTpYh:r^o߽]_Z1'gZ$j}Z[#A ǟ{UCa&e8vۀʠcLfX=EaEs @vtB:te<:&p ,@dscJp!(p9tM#G[ݔ'uZ TU?ڈsiWf93ʙyCk\\- è:Ĺ;sS>=txkP\nd|;uv.[/׽|hPK5G>=Dȩ}& #i;@B ֪ '6mB΋b+KᐍKl|*4a [U`*2]Ԟp0'K N ӣ8ËYJt[q c -{wB?zߓj\h7ӤVS7@wL'8Wi!m$@F˔"\럶[f"k5: n7(%&Ά?z @LdBu~b)ŮL`W9VLywKiRY\Z'Ď~I2;&gG̉ACơkL[Zɇec}4b_f}cQOr0p9_Z+BƒzsZHb G+jxy%8ë?] ?c? pLluQ]Ni݇ƷUYnYfC8suNjpp5h " /FZ+ˡJh\zz ?Qa!~>(!"UԍwcyɄJ>^Jּc\Ўsfc=@­i5IP\.x",н2+L0RX _jɘb1Uhخ`+'u?Lᆐ\#,MB85Yp{,*UR%uSˁQjd*A] jVC˰@?x0KcS/߆շI7HcV-$DiM1nyUCpf}ˀy9tPU{qsZ0z* 93Sl/܎jܫq]xǩZtuaJ{|)]E(Y:8p~fULƁVޮ*X s9COcJ6aQEx?9a 9b`a%p5IJ4D}_fqoytn;+'3J_l}|Y}">{)&<Dc8|P "N4j˴34?| KT qC>3|mx99%xu5 &cNf&,kfjT=` u=pvV1lSXHO;c 6/}N'g`pڌW'rxT vC,XΓ7.|1ZlS:Xd?b?qE݃͗ؐgZSxlsXBX(׆={g:nmn.֝Q^fvU^^Fy=i˽hyzBf|)TX}P˒C7F ʡ0bdV;/&<݈{=p׾lL,@ z`f.(_O %e޺+nO3PQg.+O&=bZQBV˼gMܟMO4xXBߧë)M(ƒ}ؽkiǰXbv hg{Tʐ# *E5<";൯tiyFfpn~8ӖqGYPp R^V<~~ &6C첻+4 O)Bi3LO7n}TV1zJqT0 a ѳZ_]$XQ.Bʃ0nX88{,ӚҪ~.ڄKZԽ;uQ*G%c^ڈ) غyrf7 DO qKQRsbTG5 ,+Q@A}׺*2ҋ#Dcdѱ8$D5O4=/O07k*i,K&xzd,Pbcȗ˞AC:P z'[I؂n(iSIUS7וlt>$m=hjL̿of&sdݐzx0c~ͿK$ W.R7Th*8 }V[~jXJ ls=ض^p}(,Vǁ!ec ǎ7 x\CK:'7c)AJ`@}1uT'IḇwZB&] %Q>' oqZSurͫNg ~` wȻ 1a!-t:&y`ራ'˪ [>T|'l1}k5sKoΞ1F'Yj Uj'򳔓 6%&?2OՁ0u7d IWc%ݐ #Ƴ u؅3cH"c#XFLQ\J}ĝTF dh@Ջ$~trZbO`Aհ'9$OLJZKs U⹞Ɠؕ+X>2VB `B>o0T2Ok#P 'ˢUƵĨ荚K2Y9ZX*62abxտGMa"2WT,DZSJ^`L/,u8 ;zN})qQG\VE*HO\Ѝq!k=%YWFl1O/B=s a !(G/[tUCK-f!?0QIVXl]IFխ q I{ #m˛ayU\܇>jeZ)?l!yJBX \ 祪K>;lu b07gء`*L:wawD7+ݕ~B?ēJN>X":rSzC%LNg:RBn[?_=L͵zbv‡Ku􌯛%v?"e/xȝ 4 ނ?Բ!vXTnh.8gAyTLuILlשZLL|{T|Ox dدw_OkP3u*Fųy'3ܫ%#_[(= $߭ A߆ V t=X`Y5H"Ybl.bg arρ-nƼc,Xy/?ե>چؚX 'Yk H볷g7_˙o5ڣh63!lj ;-xڤ-ȁ6X;^U5Rn՗6Ӥͫ"<X5閖&_9Tg ]$ {vkZ6 \d>o|vz:RCjz8b/Ad_Gn]f2;@hzvb 9)|<f\YmPb"yuoi':QOB!ni38ϦIB6juGo@gJ)+$j#bOVj9JQﱦ}8-a՛g0Ps>D/G`iֶmi7YWmA?4)({Z ٹq%Je 8"tnt[]"x-j L`};&rP96cyci*(}~eJav轆A#4.YK%m| x&i]TRV!hh \kGPEZa*}g2]^xrw#^fJucSP]N4X=3`s+vSnl(P5 *xC@9crMMef]hto5[gơE*w5cџOԩ>!6|ISn`cB\wkv!zGLg\V4u?#ǖ{l ywGy0~|unB|+S-^Trb숍:0x+eǠʤFcm@#)G$i'0<Xg_†:Q $B}Ku O(` 5*vkπMβ۲8HXz!Qڇ_YRKi`T$lV֩}p`r*>f%٣tqcUPu`Quxn8W=g:DigWIBd!pĘOI(SK.A=,k΁?(ܾqn>tDeysQ}}@%^"Qni'axJ6UW%G`dk:t$e<]ғKk vy, UQ8~ZJ!* }ot\鈉 oY9zih镨PS@L֜:9 k՗YZi)v> !/_KbxwkO,mBrKJ9dz-y鶲R-@IENDB`plugins/limit-login-attempts-reloaded/assets/css/images/icon-exploitation.png000064400000043717147176754540023637 0ustar00PNG  IHDRX pHYs,K,K=sRGBgAMA aGdIDATx} lWY9{ߐ@ QڀS;-u9kvۉi&j ]@wKw/AI` @9gS Su[uz5s "1r$rB2T.NHFJ88&x< 2N8S))nqYR b% IO6.p':RLZsf"Ja^*NK+ ґe]O@QP`$+Dɡa YB,xeRDZ\<(N.73\&Ͳڢ8vLH!)䊭md!P$<[r:TZ/U=!P$w'Z3E#T=rKd2-Qg,:AwQ!'[sBq@f׾ H5ZPgd" %ȇOZŁ`} Hx9yjq0^2ڣEeѺ)XZ +îXlVx j5$ u/ѼG˛0 0 CqUGzaG:!^L’JׂCa Ndvjs*!!okëo2\'v8|g܆oy׉3NNMW*^!iDb^e`{>}9{kbEU/J:qt޺>2>cŏJo1om =WzQY(`/P8GIth8,T@b0hdg54青^(/,CdoC+$9:5ȭ҆v1f 3`Mƿ1Ŀ_d15Xr q5go,Ry*Q V'6ٟ&[M23#Q@*{C5͆yz*`|$2AԬeC`tLFXH0@^!bߖyC6>OUx[4G퇘$y .ZU3JGKṘ X =gː g>qWr*)sfg@63+\.nLm\kH#Q}m]| md‘4rNw HGqw*?y̘p{cm- [10hmx$F Ann_^'k{dfMh?`]CHlscBZǿtq~w &;f91o I׋OXh;j ό"ټwbp 9PaFdkG -R\'wJ`_Qyxj7?  ՞>}K`7 Of\M/w1bey :hXf̰ Iڇ1pჹg".eWq @:M3Wˡ\J1{Թ6R{w{Dc)?]{&4a c%hrX }xv69`xC;:ɠE R?X(8f9izH#r0T(H!c̦YQ$V r-/FH\51@N '04 ހ|(&L_/n"q)auLfȏC{ C{猗 B8(C .TR(4'L~ ^O겑}f5U&0(e('NL܈%2c=2Eoo}wCXq9>;3[+pb>kx@ Z,TJt+D ɊK*#^Pr?fp+&a@sPY \~`6 9 P a%+)gZP1B]p8ύj*  S1l4cCTC&ѹgY ϖgjjXji8CO1oj"Y㯮9%&=(#gmUY߄wBށ0)fQdw,렱F 7-﫭%1*:8 909C;@{5dd-KrX$ɞ@NN`{ c<1A>L>z5; n&SyNFCL<:ʤad_٨Wf/:؛E R+D͑"5(ܪTo>,$m j%F{_VM_a~pJ ˓ԠfO43bFS ~99$0Fka&|:|˥(Τm̗F d8J&U8vzPǠA6S32 aكin/05H-_7eٱa7&P^ MӪ GC ,8|0x_=\q t%]릗5CPgV8r9Lb~ͿSq auBv\|0a}A˟R_aax[cd,5݁YlD2ZR4rn wI:z1aqDLÙcFg?\_6g9Df"/,n=Y>pkC.gbH3[kx @ХdAv.TbEv3l7b uHf%V$>^r0ZЕFVak.+'cZ}M!-f@9O?nI'ʫp0rWdӾ3Aa 1`4mБx<نij}EZga}/zw4ΘRd5\4BUG(@bA3Zչޫ+ TT$b: MP"W5Z~Ӱmx[% ^*^r,v(d}3 ,&5ƲXi? 'f-7A0c.$}FbEՍ3„v woM3Kt}UIlvg*+cOM=QzTt8Օ/cRstp5\dw {L 6Zڟ]n~z8+ .uJϓ_z9UIqëp$a\U^Kʃq5¶WptZA .j~ER}ɐER7kE8.#=Rm3ۮnyR|xMux>V.STXA~.)'trq)qMG7X,\R nc-!#-e5B+\+)',Ø_HhY;Aowp:m%i3qJ1><B s$>!]S?aaqL:FA_ps]<+,V;E;u=` h;u:>d:U2,Me`B|8YLn8˯ūߑaxIHɖpt0z'oσUp3eVƣ辻X\nՄi`{jmIтalpO!"(̞ !|] ]cוN*Ł3lLWabƢl@_n:,<Ϙ\/ʁKQqfC9BG2ď^sW1 C`:5-^錘= TұdqѦ&pUBZГM^%!cQ`7a/7j?6+Y\~] k8!2R!>WJ_Ԙz!5A0sYz$e eI}VH0_ I8Y^ fE0o3:T 5#?W'Cm0$.Uj֕ЎqMp{wϰu7_@4ljqo)5jI5}r~vT*2U5HL{:ٓk<}@`|$tAw5W[fy $H1%2_N/ `OkQ)_Yf!lho#Vbj=Us mmZ) $?wV> yc4L]z,asޏ!„B:7\."}L;,g;W@4L?ᵰCL\GLt ((h/xA v%%*^Iݏ I15ͯkJDk,P̟Ya/.yj^':ZuL!5<X#:u m0^ypnƝ@l## VͥAhZeD5k}̃#8.͝ʧ+|@M,?l@; doJYL^#% 7ד[]k{a.i8KdV0?UOC݌ɽD} ?H5D` |NОj˴2~'&= 5VEdjZ>1`(-NFg![CLx^,ƚ'UZ)KvwM9/ր ZZWDY-Of1Ia^x npR%d׾m*p– `C̅f A`O@Q8j^" l}$⤭c4_g̶j2yflhg n+6I7i l'j<GKo4죐Іi2n]Coڱʝ%*AD:LA!ym]Tᰜ-S!$2IMCޅAɨ=GA'a5QgbÖ%_U|ruÝLAtڍ4Ahmj66 le%E.-|HI5}l=NϘA팳9*ruI_.-H|DFZf"Uujx󚺲\ŊZ<̖ɓg)1+MڷCؿ/51J3z0UI՚싵pdMO!u)*5"":i>C?B8fkÍ \.4~ni%}RQhe>OWI}Ul`f ^$8@ȕdI%Zrh>.B}]7f> K`ܪĞ :dߵnra;G~k)ce/ ẅCgYɖvHzOVm}y,Im |_.M';eqO>(͠AqS麩'H-c'Bs3_;cԐeXiZ -@+E\A$ۻsGQ-D ;Uq@zpf _xil#}Ab9 U1F>\S#Axn_m !a܆93fܵg!#FoX2نLT&o4ˎxƖ=JȂ4°%,{.|j#r_ _Nae,fKMl,VLBgA8I"5FX Ij$ YYuͷccj 5h.K`ȔfZcmX[T킹Eث 51Ec]:+ dlV" 'n[oJ -5ds}Fz# ײs^ 1֝x_,N;!#!&uX]_a2U1l#ux_!RGmpC 4GWԭy f{A--FR& vMe^iV pu eRDHsF{xCL<bs|` B[ v FJhqZ/ ;7u1bD0}[b(q=.>p0[#SԭEh$u;"lPx h0-LʉS3RRR@[a&v#5?5ΑAp.iͲWp[*OY@[&E\v7vTi0;SRAfԼ|X j:Z>ž|^oLlHuq%cbכ50ϵnxlٯOGdj-`p,;_Kie _{o!tm}Zvϑ&e=eQWȢ)L tU۹"JAƜ"M_gT]'>BgT#0] oXlsM0읎l{O%tWm7M[@'0g@9Z}]眳=ۮY0p)p_3tI5~yp!9NQ]%sKn(PkrOӥqt.OT"ٵ܌,(n*;( ;}Ӟg1KPHλeY&O+/2llo1; 9@Lg\/<[Mt7D?v֐ XMtiDV j۽ p `INxb =i*c62_w?l!+q^Ӧ¬@ _xEWwEC#!df x]'hb9L,2e2m>h;#$}o~$h _"J \7E]3%r{2V9c ^2ܴͤ;ڝ@Dw?CtIBف%1X9.e1]͍35(^ާL"ix[nxw{^[>/z>f_d{HQ" S+W8ubv\ <3_v>Áڏ O5 A׾S8 [`-425&cĪB.Dp[YaH7vH"kb"՟nD&lJ<\)t{T8zБLL $УK`uO3G$,AXJY/L@&`yRD[x?&Y׵$ެ JzR 0^@Hl7Hf灪$LhNf0+D\fu^%bKDyšvFGtKa11X}acYݣ\K'lrt̊OV22ϙzR]__Rd=piiSPۅߗ>MIY S_+p^2sg#އhڝHLtVN5oL׭pəο W̾*T6p^oP7cc]үYX-Ne\u ^_5ɬ Yf~ cj;-^@(iZU/ ~$s/r}&dD:|/zfDgfW!{$e Yfb^cIZI&LX8uYqԷ73/e9}{ЃP@܄%7i?uW0 w +}߁vo# QLi!0/]R>k{$K4eq5 a>i!ruFбʽ;Bx+Z\h*5ZrIQ=eƴ@3(yNat%z3ₚI*wWfR!cߟ7_-;;2|2QrF I,AV_;~KCƳაINh eN16a,Z q< @0MM\V 7Zn5׍%c丠&}y$'q.<Ǖ? gMR'a!~.v(G=NrL.%AbFdE2>Hr.G檿i8۔4Di6ȬP2 fh .x7 |$v0ޤ^N, ^5?'I\EFa:+)IrޥC}4yVipxBۤ3JsZ\2[ej2o=J8.\u ~̴H^K+OasY.23L?7\2Tz (rBB,֜?VSo6]iANܛCx"7Q_+~.]fMs8/&|8۔ڔ-pg6Zdc-g200z"OYbZsr'JPCJ5&rs:u16dT+rRXtfܬfu,rcNdM=FY 9evio+p_BtSUrBw< A w7CAif?t:rgaaiv;4j"s)$j ҁįQPx(: !†Br9fT+UsjF.2J/U gbb}+ \6 t8mR q7)<睙 E)t ?C Dr3krIÖRQ0:+xUsLB<|jxePdkg×5gxPs8]d޹eU' $]l\ k8e_e73ٖ Gʶ rN\{ 51^%L_gEdAhؘ'{{Vd pC)#i)4\ YM)I'sr!0a b9-KY6Άra`[;GqCuLEQO'qNO`ьOapڵ.v"0 8`hItz4jMr$P UJQp# ^5:륤Ag26Zf;1FgG;+#hn*Q$xInLJ |DjzFdD|yC{yH֊e{# X.e(279tEFѬ"{$(ee<&ʬd#c=oyX-Q*Daۏ'NpO4߇dǁe!;9-h٩rV9vrF)쳺O MaSi5eplݾح7jF Q(YMA6Yѷ&. #syk VTJSd88A:4aGXVsA{ Ί10yTQ+&\uaӡ NcV!(K3VQV[@DȺ]5<.mOc D4̋TlXẺ<5 /=HA>L^bh=?=x=*:ؙkmG̠aFƫYq BZ[߳F&͑Q2Gl5bmG+_ǭbq3Scfی|$Q,RXqhnv X%n\} $ljra}bPmpNd곐kˍQҦQI̕yZh?;H5Pbo`"\,wn?4Ҟَ(}:mjSMyE~`#k"X?$!qhťȅץ+}Z`k*n7]p.7!XOO2Μ#tєƴn9+լqq- IkڜU}xGuz1JaH]WԙWAط)ij)[̛1` {Qu! mgiKH>ߪ4u2.V#rڙt C/,3ț"$ZH:R+Cs_u%8{64"j WRw`\}R11Ѿ}"2YicPWqǻ#mdϹ Ѝ7p a۫ >BQ/uԕLl RNRJR݅~Y}oG>$9wn_\qNY cXY^a.)JYANd_VM@cյI~K~mj~`R7.mk6sbNz68WVY%ϗfS6?%㴏C*j[TS~okf #V/\ tR++abم; ص"WJ|wr؈ў!Y r):Y']gF'Bjv"Ib'Z0N'0H+qnL9 L,c) ؙiK^lRNg+Uګ&Yi!< =(Ju'd%\~kWŬVĦqSڄh{c-Cx*`)O2@ 8OcQ>T#Df=*敬Q{:l("zSR Ib skM'aeAvm`',p# J v--\EG&ٌ ۋEx\ӊ^VsWE8oa`þY!Q"ј-Dw܊k0'aRFQ3Cb+Y,eCժȮNƜsB!t= 㑒x̡$v#[NVYZYr |<7iI6\翅 @Ċb=)5;1;yrwcX_5Xa`k$ޭp{hnx"2z^3J=iD!F*dm%fb2ey\䨽B FQH0OȺQ՚Pp³ Hi[ޮ$֬7u\Տɔ'iY /خ{eD MRv'7J>ܞfK`:>Y~EbkiV |)${(Q/v+q:ppHkwH2Eu FsLw,m>Ӟ릃s;y,Cpj ѲGoSm-PaP `HFDn-ruЎci6p  Ɵ({c9Q9pr1⹰Sp~nG c \>ϧtn t}v+f@.&Cnps  CZѐhȒ"!Q)}M [k'!ד6\G$ϬVW=q^*a 3aVy12l=RӱTSbs't\&(&EbD:Mѱr^"R*jgck0M],A* Mk>{ 0㟀/Œ;^5*N5ײ@R7L(!*k>n7Aȶ59 &"T X>*پ_CmoғH1 $ JHCvQ o%:|&LuYjh{dHN6 gm2n!ꐷn{>>gCx􉴘JfM^Bmwhf{^,I{ WTM`cP]5F,DTIŀx$ D5U*̀Ɩd||ݭץLw3Zmo.&YX΍&mDbp"IGCFw \ ]*w~#Z#>12 E+s܂}4Z-iMF¨QП588±81n",wm9|Vxaj- r?78v2v%<+Ң*243y:ll%-Z0f͓gggv봷XP8؍񃛒uMiǑ S8=7 A[ra}Tfy/m[Tҕ G4ˠ-+QVLXV`VD&@n<KS@wsK5ГkK⼔e KOȅvhVd)K9t5u +)hk5b:XE;%׎Mu PwW쇋OFb~\Chm1 MUϏ1N!ۭV$}#9uׯ~$ α:ٖ Ȥ @hNJ(K/ƭI:jah <|Ad)/>-Q1/:N:#'EK2\l3V([#!nmи WBJ]Xg .n/[Cb_E }%1L/@y`Ww)(3ZmF?'~|\O W/?$¼MTY i7gˑ0cLRVPq0qhEyH]@5Wq:}^F>~q=҂F*+8%񜛵d>| {>:NuBK<׶mp< ?aAH_cZ/N}?ŹBwp"PrnYh//cn7{|Sgc)0iF~d$%H36O),c!ݷcq7Q E tېrgGJ|," d㚩O5_' L}L"c!r*˹B voyLIcqoǢT`r@`}cqPLn+@q\yh$ǀsD("-\N|̻,W-軅0s/hC_b7X/CR(xœp`sX|D5xKe#kb 3퀃up.dٿ\ wНAt^Ztc -BrDCf &G ~p\ gDD>y\\1LXobWhq~ٌO0K\ `6$*-0&-:*aE3-xiw g)ـRG7q1`pGciL\,iV`R%n. y7MYC M̰3]! .1(3@%;10E_A4G9HOQ>>uQB%FUDղ ,HY} S}pYr:Gtq$eU~?*uZȔ/nk7P2ldQܧeK3vR5Y7aQ|9м5@(D@sa1FqAMB:О@5߄C䜠Lkh|T4sZn7PK=3}Dp6oO ri\Lc4M 5@E7K&c-9.d=s Ydb$;v/t5&3*ԔS65%Y˥,2jNxPs.ώF>e,00coيn%UU lQ_<:xs dCwĨx>я4uXR8X5ӟ)q;/`V3D&lEj;k^"X{XPY\Uͧڇ[KAHރ,H0~ 4 @"XM]دAAc#Ѹ#^L5nhx *|K[D.28'꩗S{3&2Jb,꘼Elz> Ie:{sJt Yhy8Dȇ"-HxcQ(eyT!LK7?>@ו,t%tz%::czR<1D@G_ A3#"_~(dZ|1NKga,A~d)xrfxbͬH<.5K0dV-tQG9 b0kvaִ@ԱISǷ_ iёQde]3mo}Lo bK'Š>4[n|S#(.UĪo@t]h5@p TB~Yj@g _? 3c< iK.C2 J+#=5:?hssSiFHĸ _jw[@k`:dj΁fˡV/ ArP gG$<=x )).CkwNVid+ ՛`EJ5:O!)Ɓx)b&m1%Ph9jBkIe hAݿ%Za#h!džgԴ`Rz[M)^8!ybwXM12VVݣÃbMțŬ6@Oy>FEB*mїj @ݛ4L-W;g =b~?ejBO0FZOl<и5-AC.ʪ Ief+r%XW-E*Yw9B=¤Ftm56Y[8%A<]hnKc r8ODBl{| UUcE?֖N &kULz\//ҩh#ߔVy <4uoܬ!2 ҄Ǭ:sT,bf 1 b#Rķ`(؂4v }5Ș}͵/ְ1w2nM]j=%nx `DߤCb [_~p/;"hC+Nv_q,!q }Ȝd:U 'GĔI5OLD!@h1xq^$Т2I|ׄG3$cpjvbag߯Z}5A骦WfmX|Ie8bFmt?ՉiuZMXHs5Wj!aᘱ4u/jOab`܋L4Ƨՙ #~8=B6:Uw蠅̠0˚^j:5FK_9|e9>2iOjyT̘qF Sj%dKY[Ymݹ'ܖ}oThX||RjLB84ΊMut ͗1 t ޮK-/$ -I4+<Ec,)Z,—>9aZ zO&<X-xZ)悂 <@8LrA ;ލA'm {HBāO=TuRƚGBc!S-d D'9SL: H&zuXۡ!R|$骻S ZHn s&^)Iи`=mm3h(p^-{hs#wX`XkR4oĚeq@O o?= 튛&Gj$͸%,_MYm=,bg;p;DAN_ ;*oY(eߊ<}'댆:3xTH4|QW<誉pc9W'g>isbf5e=P= F:Ѭj62RaG8~Loa89jM|}_F9r&Pjgd>׼3h遶kB!.o\}:-aڛjC3!DlaAie8c)8?FUȡЙ@ݙ2}/#ji?(jJm@i>:bGZ=֚sCjV<.LRK#Rmacn-UA3咭gG9J,j{=qY4LԄ݄~Yäi Z?3C;郑܌kA;:݋q!KM4;yt.c%ۥf V.MC2j-ldvV->;([:hf{ ~5wq֛ ζO,C3}<␬D1oFCe>cLSIdyYf6@ve$ߥu[]k@n!ޠ_riLNG ܏_tC %L-/IxyMqFE@x}ba["ڹKLcCQ uJ bM3KhM0w, ߏjʗnQabؘXGc(N-KT|UxzyݟvkH0w#3N++`i^-quasn|!FB"9otXzk1]ոܚ' %^^ Z2ǿ1R~_3G z1=eA2_CnVcaBoҽ#ߏoCCOW#Ŏy9G8聠Aj?+a\du2.$.3߮9k@)cl(nkE"sxb9T[R1P2s`ؘ=բ:aZ: > MY>t)q:pCR qwTt4k;JpnZ@{*+utl=О:t27)\- i Jݩ _^y K>a2ULuC.>peה^c>f.N_Q>ʏ:gv\ŒrI8rB hxFsgV=tEbӥxsDg>NoiOsA =޲~&\o >iUj+T"*x =Kzخ2h 1sD-* RӔeHR;BJN8J5HTvnOv^t-DdQ;gASj%MWQܔ3 vK0:Y ڛ;מǭ%0&ߩ/DE岗C߾z^Q뚮VNlň󨝱Kf)_?(uS %p `Y0)WCȚ8kTMlK+g:HATDВn}=X?䇍-O@jhbv2z[K~a$!?ȊtABLI7-Z k0$/f$í"[j4^5Y }aN(18IZB,Ӗd]qpE41MSU sa .oUeqDACܡyc&'a~<#C++7u|i4LMAaDg(.8icEϡ׵[ @c܈]Er7 茳 }CEsTstiKfv99QCeؔtE7 CgݲX'3J.8K*SFMd_Ų},̏qjtsy\?lA;x\Uծ ^? v=\v=yXie1}VmbnQK3je? ;:=Sиڳ=iNL w|VRYgG#`@%,&&2ɕEPqõwg:Rv,}0KȀ~z/7$n{`BK=CiD<$Jmf|s&闵8iOĥȂ FXTihyԹ/x}دߍ6a%$Je9 'Z039sG~n̖? a:f-@W)MmL 7YG)Jq:S1xcF35K䫒8m_ ^&*K5CQ? Wqqh^͓H-Gۦ@flMp,$6k~aK^ ر3e<$:c3a7|/J#Lrj)x⾂GC,BNǸC1VHu!" r4䯱ޯƿobe:'H=!ޓd4>Dm,5m5X~-xBLFt.0qܳD ,c% 8urN6 qٺi8TҬ@ 4W,, wŌ>ȶ$4UۚDEGX eEMT=GMՄE0a^kwS`Xe@۰u&"9+ȬK"`# OtI /򞑫*+`}{ $#Qpg/BpAGsFO UV+&aInq FؗXL̰.t1w%"It~a,0Hr3M#TMб4_1Zsrb[Q},n-:x(݀b͋g5iC#1ZH"pX agISFuB3M’Ti~z.K6?co&/-DKA?ΐFD8ז9IR7~u]"xƓ_wF(-M.@3 jE^G|+6&XIFȗ,ک-劄׽] sin8ڒ,e/ټ4/s L;7ErB#{HdoR/46dHRSj>nɅ[蝫{@ PNzRˍ- RhͬbZo]`}{))`˼k}L!l ZԻBsl5u){uR$Qn~@- Is=RRKlHn2@"k8 s9\q"tX- [dC@ Zd)+`+⮺%ܼz _B[XUȡ+/FK6wP0c KmLa#%SWuv5i?,X][!BsUyViX>>r 4n9FB%ڷIWVƞsZg"Gމ J-|dIiث~D)׵ٳq4|<A {e{BrS 'Zl9M]#_%IENDB`plugins/limit-login-attempts-reloaded/assets/css/images/icon-gears.png000064400000035117147176754540022214 0ustar00PNG  IHDRF pHYs,K,K=sRGBgAMA a9IDATx} %Wu޹V[{F#I$6l 668q/؉$w㄀?v1?0a@@b$V4roz=U>w=uzUN?9iȕJ+'*?\NJj+% YZHX% R$FXߖHTe\J%F*ʁ(Ъ ]IÁ+9%9,UrxT>˾LU|iiniN2V2}}QґK8"JUoe?iOhnqBEwԼF*#lwg.|I}^doV /7wWg-6ޕߺd+d.gݞVdc Wwd.g-d  㹜:+GmK«Ǘ̕,div͒!#z([VY/4[-)Pxss u $I[S*P{-sPy) ~ERI2sSo,*R._:,@I0NW^(^ 7s7q( u9͐DckdwhcEFb̅Le)92WZxGeWFPk? UaL[(e1,R+mA+cP" kl*07% w.)Jm2؆ۆl:BsYp7#P]Ay,ײZK 4Ӽ2 7:Kf-8#q:},Ag4̌>4L? %zK@x+qcSH5{&Y'u7!E!^nyuRAzpKPЃ5Ÿ L=LVAoG-zX%X~cKfMbdWf"ĹePJ;w$UIH<%;Cj/ R}A_V0BLѵ9qT;}Aynܨ_QI%2~% m괠p<ItyY`LfxsOz}AIE,AF\ Y2)boͰǰ\Pj[*,{1ʏwJɠ<' ̐C&Q ="b֍9OKD>׷P6>B7A.Us@WbnďdX5%F$F6a 2+EHEEv<ӲAtg4? SLL*@ޚHG m"Nfy&9B&cdB +t0At G8 "[w8¸TqxKZ#S2'8 bBNlp:M m SSqn\_I6-̨d3)GىojnOj{878EPߎVV݀8-<F *.6߮fpqʹ)ЉQ3]CtiCߙ|`(ԧA3)0ihX3W"~&!gtNgpNҾSeoTvtzjN'.Q)NQBjWَ`> dhWh%T@[ ο?8~):|T+v{M~gBH>7n_7E w +NoVʳH^81$^ڸm0*?T"ϴBeIkt1=|\wnŘ'J;FW -[WbODj $" ;u ՋC25`Cg-&;\Drn7v1ὸpy@h- _8A,K᧰onr=PGYD6onmmPPعBFBOn͔.}d4\މܬVuIe3`8mwY-vc++r)~n<7f1AYlŎ,̛pkҘ0'd_Q@"?(/4rz PFШ!uZ _KQ+pNw@a- $vt7DY1بXwf ){?QQ7C3Em' l\ w˰&XP'/Z²RE|كB_ b3n1@dX(ٸRnr=ux\&1 ōRXuZ+XbhM1 ^yƵX1e'b i\LS&GWqQ{Kwc;q6x(C,4δݙN2?Z$@(f}Xec??Q1iÑi,ԁbϮ(X 3ilSy*ޟAb]+ (OVI Oon8]DRZ]P$(C%M ~~<ta(ZR8dyuP`&GBy,ا l噽deޕ, w@Aޝ 91#Íڙmy'^_ Bވ֧ēQΚC<<47>E0wkǀ:;7y41=ȇ MFu;jz=*rXھ{ к6<.Υ+35 dA4 eL ʇlcm_{B/P0ayJd2JT7ΰ^E[ƾNBVoR03!2;l9~m‡ `L aQ,x}UXJM9F. fv(ݐ:lyU{c=,͐iuHs׃ VjR*GG`Ƥ ɋ Z@nGڹal_9^;;9U3J܍fe LKݱ,#BD8toLhEΪ@z .|vXL `NÛ\Tɋ1\مޘಃYb;iŵɽZSU'Ŷy휜}G Jؽid"ITTA 7&z)r'Hxx xuM gZ)%r]?C>Q2>@/& ӄ}!ytӴT||-< '6 WߴG`k[2xD<}J4~BBnT9E(4^/ZjHi&~b=͠P 8 ɾᦱ.BN߮78Մlx:Ig>URXK[{uʺڦҏ;d>wk(JibnB„8|[럴:W_Ziѹr:SAv?HB`c鰃xd ^x/x:Ӵ<`y\3SUһ@|,.cpBBBx2GM8agrͶ&ߑZ ßƙ{䀇٩3Ǡ(hÒrhDIE 2"i%{J0^TVcPaִ\Y&v ܠ/i+xL@Tl!Fa(Ȏ$\'{zTR 7sJuXT-)Hx2>S n ,1Xv*WT$1;?#[ckFPesvf! .gZ7[M{P{@|8 xDyU HT"CEA<wqK?yA3yx"d-/.ܺ@^`= cbP2X,E?emEU% /ևIu@߆zyu,X]u;Im .ɔ?rLL93.usy)gЩ䐅~Lz"@gri,+3l,lݠq_d>$5qZߔ4 .ˀ'%Cͣj Vp:g+',<޾1%㨈11t$u]{&̯ax `u7 VQ怸b6M-)8M4a:^b>= J} E֞zjz]jS_xDPiᕮYc ĩfKɫB4dh2+(ByPEj!i.> U!XT֪ /o6mymLZ!✡N.Ÿ>Rtj<-UW8f:Z,(Q! xPV\Eb> ,a!]Kg#?|s2uaLp=MiEQ R%f4֭xNzJ|k \UT.C+(SI?yиT݉hO*MTۗ;<}h4quUH_/ƴ<_e +ـU{q(CmYCH=e#CKdtEc]Bxy'>,u9:Fn9݅[ ײ q6ez`W$ [i}.ɦV 3պ2 P OHF_rA&|"l*i@&TkR2NέN yOY/;% uecn4&zs+41 :Ċu\qo!`lp^QY9יA!qp!brugtpa}Yj &l{$ Y@A%00T0"UwT!P傑U2ÓZ vyΡTVJ8c+lQܬCΏE݊tht!RZA a+˪~ 0LBytZzD~Ծ?DK>+EBKlP*Ml{+W%eIpAftݢWl uOF]xb?Zs2QoX6Q%!mSp:f&0q(]1PM&Zea"V:1cTH5S! E;^GMέ2!N%t1sځjAsn2N<,@ -.v`LoDY}r b u:43tpM.BtaƦui Kugq]R*a|'4 XsG1<(wnZb5denО{SkSaQ'ٖ-Z<*  谭O!%_)*L7 r2-=6eLB$ӍqenE~ 5j{*+1n7!.M qzu#q**]TWDW! ɥ0(MEHt֋qUֆ3$ha8\iUvE)vt'\e q=ĪwJ l2YFʭfFU[C3ƏsJظimu_pגG4i~_rmf1R^PEJ'z<sx9]lnYshRK8cGOQpG_C CnHqI;Z'Yt_$Z4GL@b(e< jIF}a ~p_Df!ctkdSV-e Jh@`8Y=Qh)׷\ì>ao сON"…5@'\?x}6:hh i=g$(:eMb6q\|m7,2oKc n,AZzyp&J*y _DKmcwS}ǪbM{=]ۄIo=gD;޾4cCx,^ńF4B@̓ܚ(u9'6٭y(NG#Yj|vxe׋'>#\cI>|'5ͺޘV ǥvf?'aߨȩ'o% "kU\wϸP@^缔#`TO K99u+*q24G;[Zȩ>uϾ=Pl`֪^HR$A6E n,g1PAc.b߭Sv$\}Vx*.oʮDkqeߌO(GȲ_3JmJ"B Nb\ _Ҩ|*Wg"ww*JlԀjH,,yAN1:n19M-K\(&`&ҩ$;^ɘQjFf*; QG98m[oy$QIOsԹ1Cx8'4Ċԃ|=o#0"UO1,ۇqo JBxN +1[F <ݚqFGj bț翄D,N>E 7KŽ)e:&|Z32Nt.TnoH/M/n\ݢP?g"} `!Y 7]#uQ},"8v=vÅI n;E\m),;֔h-eYVH*7Y7.xI,t00 [OؔrEkqR,Еm2>aAP2\Uv>Hw# ܕ'GrF t[zĞ|FS?ʉ3dKUdtڇM^k^H3b?8Fi@PW#9=.E I!S2;z#W1L@b bՒ@#iZ<8sDFZs:U-[P aNtŸbMtZ/?'L>]j /k#5fHlȝڴͺc- IZ_F!sENw2IlLaܴbk'}jz^/kWusOwEI>P6) )jꃙE3u5EFQ U|2s@1LO ;3 ,4n|J.,*L9=. oñs( rrFŢT D'{t3N.2I; RAc_PRytI@쭸!o Ğ4&9 b} #EYn Ko\y=vQ J QsH ,U|'bW (pqXaƲJ:Ʊ.[d,~3}SlKpH8spj8Lbzmi1%Kw}& IJhbE+$I }. &Bra&B rww3k s.憏yR[uPUٞAcLe+ʏ. Y_~XR,ex>VҾ2o2^W^%-dڗ:Db\7b|Dٌtlkvo>pMxx)IIFKO]#Mu |%W(K@FxtF <_Dk@⒔+&3M[AqIe˱!QAũTiK$dI@1[>c?j _;j i՞7p9?F-45+g z"p@VjqW ų!I{Ngl\R|ۘ^s+EjB>i)يc6š}-Xa CUЅ{nRlAy(Ì ʸ,Àl%pPZA^fºʝ^K)S%4 ,W؋pҾƒȍ/CրćƱe1Pu2R">ֹ!1DQ=b%0^3b0%'e}`QOZF`-7a#FTnǴyp(POkn,?ډɪ>;#Xr.@XT3)g 2JIIݿ]6n55pl9q: hn}b/cu2!u( g`Ls9>w.Ka!C78X9Ftp= םЇx4-1.d[T3+'5ș@].U},f6VØ֑,WAl%h}8/5LAtOAY;rH|ΓF Y \l"N#QoVi*W.%ӕ>PIq,:g*t{N=k(NDQLii A&?KHhjϻ=v8̸JZ|sx]eZG'>GJ\F)H1B +.6Jƌd70S ჰ_T9d7ى/c\@:ѕyN%H`S jUix2GJ.ۺ }] k͐N--ER k!sewmyqKdB /_%jkͭ7N]4ᚴʭ_s H5)8y{E! GB.wjly/Ż`Bras, c"@+=RϢ\o~hIO[~<앁)юosk,[trG9N1J2RC&L6d.fE9\Y-Ti> |qc5(b\ۣ+(^ŗJz!򰵓n[#3J$8#]XEWQD& t.fڂuYp7q]:#c/CJT7vQJTJݬaå=̵’M 佶i s$%3:o1]AՉ7(.pEmNnfwnv*zDIq6r^sfGbm: M `iaE]8gqȵ2* %JT)Xql.> @l.zov+:Xt9rw$c.%6%Xۂ[%rFF.{Y׍FDZRqbIE7JUDvhipsY.2σi $-$@u"4Z.53 z]%`rB}M+Xh>]n@G=iIrlO.*ECl(4׀x_f_Wɱ? |cfy,~*\Zh[peu(zdU(UX{ 񑩃UN$qI*<3ayﮊ 8c/î״ lw$ٲ{Z0c LFFCqdc U5΃T,(~{H$K{p]]`5(8Kqa<5Dfý{eo%^FϬ%F 24lc _ߔ-(SKL=Z#n1eY0(e uKŚzD[i<:`Q+%JN!6K ,O ]:=tP0Sr"Z E/$1r {% ևҌ;cZãJN"e\\Y6(_p=Њ 嶔!qW.Q>.wy{h uqGV㗅QK4ppi$ q~z晲z{ʗ-Tatߠve NGCm.LQ. ;:5Q6T K%6 Į*I1Vg$+%iܻۘt(Q.`YrnJ:X1/q˹!+6 e2qs%:A+GHG3X`yl4O˶ dP\@+s9{˳영8"94ߕJ%:s eV 't]sï|pȜr qv!{B׸H]ڙ xXn${څ^`ϭ=SKZ/mHX2sZd,δH# [s)93DEAZ2ҰWfV+H˽uu8^wtze)^wNWS;oDIENDB`plugins/limit-login-attempts-reloaded/assets/css/images/icon-grow-clients.png000064400000026400147176754540023523 0ustar00PNG  IHDRF pHYs,K,K=sRGBgAMA a,IDATx}yeWyw]3AHL@AF&&'`S^T)b2bS.'PvU Քc$,0[ $""K##$!4rvOtF^w|12G^( dREҩpED\I!*Yϯ0DF[$9ٕHTt\A%e&@H Ѥ/?r>(*\L2`*p򵵖̉șM!ѡZ+,+U%PqSf%jSrDqZZ|JCK]4zE;]- XAI7IKKe`rto\'IKOMЁkOtyPqrсP"ډ<)]fP9ϗW[s9S Ek'tIPZM'2>i_o:q-IBrGZi, 5-( p-+VC}LLae}Z]u@ʒZṥ}ilʁRKz XFg+ҁ@҅ЍX-tR)-)x+tKn}׿{v󘤿dst12űH$\^Ed7 Gga %MxKx ϡ׊`t{Jfh$XϮY1w}xKa*}+>s/QdK=r𐛌"%W /wN.*16[ħH_">4sIJ&,y~S͜Wm %& {-i߼d<嗃t)(D߀__LC4O|0R pړ;߯P|;(C?R[d7vl[te:`TCR} KZ|Tu2w* LQTen=#U|/8%oŴ+R GAvZBKoc "wE 62|{ Ll!X%{Tǐ<%Z=] xDx7.ZJ+3Z4?}{!7L=ϓ  X3L 2TnRy+~{ݢ_[$Ջe$%"4YF s*ޱg{@*Taa 8??i}={$S Tޯv>|BXq58y [UB/ .`e 'цu5) ` }H%Z*KF{;&'"LCi|s[C?=hѯ_٥_S5> i,-`^ndby#Sm =Ts iZa Xcαc'#=;~y:*ܔ4}]br'|´7L ዬ1s=_YM6UW bxq̆mG &gr$0ܰJ~S:>@؃a@+^T qA@b Upr7}!Kb" 0EPnq-6X\|r>l nĠSȫ$.% 47% 1xZY+ؒ"H5ho<@/qX/|Rvrp GL *Λ_Na:]p[0͸ܦz @A!\r$Nc-\%6%I+0QUAn೿2)S`r'M=˪ Krz@=7Xb6QNL$<ؑdتj  6t@F^ :2`Ȥڽȯb㭢FV>ѯ/A}~q_hCrMa.$=o^ВD@\TcKYQg~ZJoΑSA*EN1< VszVjL>v :f]aRrt{5;%Aײrp#ߓgꞠSJrJ́l2΍ SvL]TѸwwù!G4jeJ/>8x C\N9@.6P&慵N/h'x >c rbDsl+{zx ~ Ah䡆#sR\M")T{f׾YZ9A~ 4F~;9myķQ |ݞ+*~U*9O}oq *`))`Sn 'TW |rL [̡ [\E>BbhZQ$Jr݆-b|jWDnH>}CBt=EN !VR%=8('Axֺ-(Ҹq{v[Qưo/uSHU Q(3n^nv(mVhlg^HgɢҒp:v# hf9:tZuP^jO|Mj":>z3OVCdj:tOZM r p1pKINB" /RB62WJc^2=*RJ n#/W 'ʅZ#K x%/6C)KX\H(T/np®U!yT Oӑaa8w–IRsƦBl5%( f`{~c^>`!4K-.Z.gj7Cz\ظ!#cb|w0|E:\XZQ&!"߷'߇n D:8>q/ra1Ap|߮Nψz-'^{Bri$BK3oaWp7=xp8x+NʬE[݇YKX. Eu1 %M3b32/^k Į)cQh"vB._߰+H a?TU8_dgFVud6COe=`:܀5P1[^JEJ,^rB_ jCS0QZ%@A aeN>80p->J7# <3? W|] YTH+lOv-l7>P~RpAײ)0Oa@a9pE! vR.w˘m mޅagv9)= .*@ǓjQfiD.hUc,ƪt-|W_wNܫ9rr'rg 8oHlG2SBt`X=(MSRYGBj3pgpUChHm"v?TۮGM-zSGi.g E㚁¸*>eA 1 v gaHG_d w+\ּ0f5*\kfŞ ѽ5}@yjP265v RI[v!3v2lomr0xڞih5@5!H<ܪ6c)d|DJrOOfc5'Hv ƀ8Mh{>4Xr:Tr D?A{dD-I%Ź ]hy/eR3xw҉v/q6 / -YE=y Sk%{M7 {du~wd[}f3> 0 /F3iԻܓhL\3 8'⠯a]O?,5/vY35a{֔i?2ð>Fخk(MNQ Lު9i%VfLw# G\obj u$\2u*]C^ZL| GV$\WDsWt0s7m;@K&AT?4 `m&J>vތVhpTP5@:.~ނbɇ[Xmcz,1ȼvHf 8ؘF@tյgn̹bs7k?_x>&.~ba)=^gD9Cm+'jar1GZy[ǃrɋHQ!]+b0кL脴!cOCWnKr=L%f>.1-F;[1P!۠~lfmfg?f?qNK3j3fj]$RE^߁=)!O5w A$5 9K_r߰7xԻ|XC \Zo~ByW3=wBR?#>G=a)ov 1I8!+u,LWL{ً8p)0,Jkqvkw@Zu+Wcp>G1}L3+f``73DW~ܯPOm춶aO0)TZߞ$+3p rjXǴ}0  6w:}Or og~ &A)`K!x2ai@byHi36u|`Oi Af~#1ncyN[3 Ah⵩~eD޿ \X:;P@p+z*|-uf ׿ pcـ[)KOpڊ%)~3_?&a +By\UUPSVGpf!$ 3[{LQTe*ZQ`:gc{8hi"l|YZX͹ mk,q.'!ve-QYE05Tˇ!Wj%z {H_{=zc[ޢ\:/8P Y!-Qk;3."ү/^.]9Ptx{;%{Z$Z4<IXnrrYVfS3!7 !$ש%_b"1k=^\4~ .iv*P6^W6wYljX0BպR'*m;3NVpeBڋ]>b-氧La<4J04Wוs4oj٧;@Ax oXW$q7υR3(|0'pMG̝*5s@7)8gMa|]&{Pxܽ1QWj؛za%ѻ24 f:im c-E RIBf~ғWwcV*(76f(jlE ^"0 UB7I\qy!o |Y< Lbeb 5XL%"lPD*{ xhH̀C}r$ba@F"5F;+naC<5Z 9c&7JC1|(乧O/KvM (;DxׄO3!h> 웆I3..Q-pւ43w4 c4_Y _V۷ KYPpuĐIl=z>4rчHs+q9f4[|' 91Oihf"}b TZke_Mфvp p.۲ЖA4'sy0rɀS OTf85P5{t4ѡ5_6u/!) ޳]DH1@V7ѣ8AGJG15x}h92Y6um~`]&dX+lFWaU&Uõt|t.4-~Yy@fIM\`4~m z6 /$kє"U)>TF3ѓ_/4Z*Ӂ檅\cS 3KZ%t|S1m_Jp$D48ݐx4)kjHj'Tgwio$LM0z-PJxs3觿goktm~H}m?F 5frg [6-$=>g?ҩ0s:(+qUoEoޥ_a=V&e #:x 0fYqqUe9p.Gn!qj:=NS v]:`x:GyUe^c8rzMvx͙tm%%0cK ׽{zdN?7 \}]'τ* qk^+|H VAw^!d.wN R#^Ϟ7a<}|TQRX32F҃Lq5 k>վ?)>r7qqH^L$Z-._rGCͤZǘW죧ˢ\彸IBzWUC)\5Pz+Y09x122h>1tD<(l 'E^ljjY]g#b bz3'GeX1m)9pFc41ʆha]Ht?5(1n\gl(x|ܢ¡T- @mU /PU^_, sFp8ex ;Jc,e:^ڑy4|ANeTFE -Z1г5B^ߟ-0rtYٞ뻛SuZjQ, 66 1Krw72ñ3!yƭKBj+>rp]11()b&xR9\2P+@CECP+_dHq߷516u9a!}Qf 2Atf)yF5Z']H(pm'p05M, Y#ƅyhD̵w]$p[ <18̏cפ0uEx&D]9(4uB&';Vh3!D4T[ VaygxQL`fbp k5а[g:}qJp%ѐkMBhnhM42Bzi-ù.Pq]t_m)2*t&{ſ",Y Rҳ,m6Ӓ  L5ydu4~_m=0jVSc$.u6r~k3 p-4`TK3; La2q(N31asFY,PNcd?zS o~'30 !g|gq}1-u8UX!z,: $X> v|i!^ǁi9M3LEn=9\L:,BAڻr! R?f [tԒֆuBNhʄGQМNdܒӓONN70@E6*\cc~yE`NOp lS $02Ͳb|RJä*Zyi\f >M8NIݞPbJ%rpJ߁TVAB8T)$K"Y`M&ppM$kihI Jo΋ä9/+H4~|K >-Vګ?sߓ**;jfx>p4~lWlϨ p߻šAEH+B  0z1Ii9O&֍sN0')#ԅ!Q'i xZQ~S}Ko՞[ 6QoZq2|sAV׍|1i6o|_f>xl_,.4K|ӷN8~?ӿSL?um;n>e{a\#uuE 6cfZN׃1X j_7m~5RK{H;Zj(<R:>hPKT7|H+ 9+ZNv7(Bh`nFxA+PĩK~YsiWK ش>xܘ]){fT֥'&% {7ټ f$z-]Dݧ)+7t挖mAIT7ɾ4WH[=B|Rcfv8={ d-$aRbK<<#c hd~EEDђ.ݒR2: )/:_/Nqӑ$]җjJLLr8dagJG ;:Li~D2{)@_ M{~k鞥QCK)'=k;cׁ#-IENDB`plugins/limit-login-attempts-reloaded/assets/css/images/icon-help.png000064400000051235147176754540022042 0ustar00PNG  IHDRX pHYs,K,K=sRGBgAMA aR2IDATx liY&9'̻ Em ݍ,R;Lۀ4jHآ<3O<#:͌Ӵ͌3=)h(eXU EQPuk_9~yo8_U܈s,9A9!󙓩]"zJ,ivT E%H?qrt)H!3oR &R@SZr w!dI3I)Pܼ_,8-,@ۤ!K68DH<1eig.]-OdIGrd1;.dYȏ%$+729\Uu,iIX7̉kҔWO,ը%բ9eYRK(_x|6L^t\aGRїSg}J Y=T4UڵoYJ%̈́VWnxbD },ƒfBhL Gȉ\%͖wOO;v2U&?}1I{%͋Άyc2%@\tbio,i!h @NKeIKZ+OiYcI KSɞǒ+$5ȗXҢS'o]|\vI[E`Eyv41@4w %4φ7D}+ɒtr<^& ͭb2BKʵ(/פܪ%tjo=R Z/v-OcvǙ]y:x rcKjIjZ;D2J5T%VKZa&6فKjIkh{^, %> @cIG`ora K:jtʅ~ @`շcIG ]ȣT _IK"ePe#%MۊщX-<h;*;iQdBd>v$$!p8Ɲ^Cy4$*n&@6o(Eg9Geu U $V_)#f/ux)I''WBă,R{|43qiɒv&S _': ؂ڋp\/Hd8] &6+%T&$_m钶ViA!чKě:iH5kphtdP ^Mb# cfmޫ岤6ըvTbCi!ӗa '('JA 2<9RzћԒ:'SF}X >I !_T<鰂%=jbntKS>'0î >yTM2_«/>BW1|_6k_A",+P$~b/ yZ"P t|g$ZFL MDޅǗC)e)c9: M[CJ S 0b$OQ MAp'&%TF 0 VdPFjTAUJYtʆ > #3|xΧ4 ],mI%CH$Yo݄YNZ7S/UV寊 !%Uv0` 095@u\ =LکEG7ܩeTYIy_*#6C{)8J(^ >,HSM2q1~Tи wKxyuP^)uz&ܱK+hod,&=vݞmĺz'07n]( mRĺJgүl3H XC2 HDq H|@,w y>=Pr9H{ʥR:Pz-JnleT _x+R`|B6ap}pz~%@bBժrLvקT !-H!U-ՒvG4u; =֗T5LX=WLAYgCUPDB{NL]eg4ȃJH*uD%<=LLNpo"} O]NeuAp82FZF^kD@H܆*(4̍>:.+2A` 6$bb*bhOA]AjZHf4Vr\=[ ToV ST2p9"+Nz]H6 p>>9Йs.T=oz~ǁ򯖉Ia\;XE_ !@bj \U*o8nbQ08L X7:x9DPU&Q6fIuP~zt"0E>&˟PJE:^UMR5ITS3kHC4)Ɛ *?t KGMthމk E);ABǔVrBpuk$$@vԞJJ5 ic-KW;`Iؚפ`- A|jL+!^ {%9qE>wʝ )lj6g$tG&\ ,qz7et(t%Nv=||t8Bp<8C`4'  H\ ۰MLlmFWDH%Gw |' C.ᰎQ؇FMb r9B;1>BZЭj UFC߂#n1apOR{oH Ii؁4sLnr3g`3[璑Kx7BØ=oV!yʤI,@-yB̦R3批 15{Wֹ)^_3.3B:6H$1 LQ0DCjgxHR%p]1|Ƙ*`߈׿. ż&2Hq84Jalps?`p*7u*TcABIh*>Frp%:p3WX5{uE ]ugSzH  ufdu:TS=R~ 0){%[x)ۗYzMc4OmFl؀Jվ*p)Cjiq2yލ_S#E- KVȢHVC+opjW1lq$NJ5+xńf2D:rSTlOG Y<"XSݷ^;:ry[ g> D[ɕֲn &=1O92 HG@(9>j7lU^`sxy?#K.l Dj z`ImCN0FuD>&R_&@R Esx51/0靈v]< I%%N2.5%?Ze8jay ~1&5 J/P+P)ܵXކ$Gx+= `CJBb]Fl*݀#W}^X\a9يeYY:VCl217~OtԸ ~fmLWXgbRBxuV@qLE#VMr[dnsXflhx$1Rc5 s N U o$J)EX2+plf"--+nLF?>p"6PSXV0-RP?\(d D+A2I8v*bn @`,icuo[ɕ^6pSͼ1Gx2ߗ= 6 ̩dwölt0$#LUWBK[HK6GE2C%~!~YMCx< LV_b>0ZwykPc }ml$ N*EFH7 f) )jkYBe CnzF P%u!Z $PA(H U.TBbۡ oHn߃DU +C /s!1eHhw`6UVO574ד^v(L7$`:xZ}PB@ϕ&E`Mh܄o8H{p6>iw,o2x[qB͖7,H_8m\aZ~Y15q(5,vtNzPuqfۀ*s֍c ak"∾Fҥ \O(HdzFךﰆ:vjf^̛ Br`E̙JM Q"IU<b%Lg|L 8=pil๐@Rkc~#/q#E'QFS؇`Аa$kdXSb.ScH/ڱ(5~^B%zP F>)@bÇA\rEa=@@%;+_$rygZ4mqY&(Hr^%\_=i~1#>g w%㴶Dj8GEGA7},\ׯVz'/ ul ܡ6)1`ZD=W)c*%ACuns<#)ԚC/ gem!' :Dk*U!-/EHt ؙ~#-S5ўnx*2DiXX{%ޭXSaSu? p}75 p 5I.#b݁UTu |=:b02 )髴PRdUh3s9[BX1$ 8}KUc!hkzuo9^TVUR%z伽B=} %I:|ٲH IHi?VGklUR;H j&ūng?D:h_3Υ5U >>#StMNiȺ$/ $t'(y=ߥk Ͻq0~sĘRڀ'5]`>\o' m]\#}SKgZ\ۣZ#[4wA4p$% * ՟WSV5hU-[|@zAbPC>v.H)f3D%Q%MaVF &RG;KhBh`/W No)GoVdZ9KC`"waLai7́"҈hT5g}ƭ+ |@ݰ^mn+#S[RAYSc`B,,-1Y(CШAEK8B E}N0Zў]<:ea{WHMO#kl1SžOl i[Q*&eGقzʫkWpʭ¼ 2ˑI Fel; I2-`>$[SHkHb!iڰ dNQdjؖo܍oSu`p{?b1ԦL~>fΝjj\sb[[kllm|QCIl<7Kvڠ@̦ ߎݞi*O{1YL B NuWʥjE+ovK' ^ sjr)k/^8䬪C6d1fa(iR-):ML)g :ڨK ̣a+`yQtsrq1t_}VչG&x^.i(4nh$ERRS jt-r4Uݵ2h?ˤTypv6@Q!)5VϿ?~Jo^ 'c3bu+=;QZ0 -2hMƥ-,zkSf>moGզꯢCWPIُ6Tz U#j!]{rVj!G @bâwpBPɼ 4a1_GTa5nV;T%`ŦrŹ-(FyMl89Hp{ U-m8 wv7yjV=d5c؇;dW(g&2iXZA5qXszu4KVupY92̓jBb5P5\eE|_˄}IR(T2gdTUXj5 ~K 7󭊕6:63cQ>_D "LtC[%!ƭFT[H˅.󢊥Q&}.o R)H yp6>p %iS)Hs~+tnc+@,<S!2w֘`ȳY)#jQĭ2zԼ|FWsJ,8p2i565cZ-P'8xNL@q2gch! cʃRO9BJ͕{䉋-mEF%*푒t9>svژ$1} *V1czkˋLlس#qٌ. M9fĬe&6B5*Z) NQQO^)c͈Y)w0a G$r2l76G ZD{S6Iy=\U S ͢c)\E0ѱM ꗚ8^21kPnQݻW;FHz $kL;|*?`Rбx| :U ~> '5R9U$&h = b8+*N1z4eOٻ"-Ǜ) _k`ܖجt LX{dM <_gt K(lڌד dDEf?ҜaB ! *G_vSz9E?Ue; -X9P r#tޯX%#.Лjmӵ =g 3o/8#Ja0øS GV`7LYqlQmࡺ΃*j_GwI֌Ӂ U6(9)kR qϖ~K $Qʑ` *q6^nίm,a.;6qSVҚiѤ=Y";+ @jcPA?9U{D~LRܰ S)Qu2yo]mbnTI ޳l[1įkPJDz(ى4ǤU)̛ CtY2;ŠJ![pfRD`mXڛ6d{w[U2vi?.}JFiJ |&mnlE L#~J}t"| :Gُh1Si1h:@pC"`wQ7ۄjp Zgo>jL.Eք}ZY vialk-Q` DOÎ;>)M0O61(ž_^}>bb6 gp?f[XsK8ڈXl63n*@f:xԺX&6כiCrw^!d)ҡAqpQ+dtߎoo Xg JuY2~S_ salH3f];FzpAlV{gŮj e4DH)h=zWqfTnb k8P_CHtp)'Hqf S̒YPjmD$:/?8@t03#}1$)ɨݹ{F%Ahe߉p[KWP NvJ mUKen,D9 v9U~%ѓu mr:e0a-C +o]I >-G מ6_J95@\ώ9Yz)(a>֩f*n `rrUd;0K 8'^3fk(]5Ql4EnLWe콲+zGn:i.3!gw^3#cajm OȾS`'apsU'i)=6&i# Dō{@e{w6ehfQ\ BpɬzonU;$7YfnN+AUxH<!.g6m qc]B>BLGJ[WX2pצc<+v*SUI3D:cǯj7,Ջݗvc]jxXM#t[;Ƒbp^ $*#jL(p"^ݍ?žsuײwo·w$Vq Hz^f/v 5sB HIRL2Z1=H\0լy:] fc!N67 ,9ܗacٖP C[@/s6ff.: aS_s7G+Q+i.,;R9bT)¦MvӮ+iiqΆMiiWǡB/ ԞȮ U2@#ư6/ͼH$lb@6ÍG-k{aijuL!OToVpm[XTh< *hԂ97F^bu\I+0pH(* )lH.թcw܅MÜZbXV9ǻsmq<[UJ-~mۢ7~RDwGm,4010\x`. Mi'DH2[-õ-0G sCؐ,*c|GЮaلX$f,mukVH5 IE΅JڌzY=Rߧ7l2{bFi -7`6#@ZWJCjG 4J;d 4$UGW];z̴>+dž^yNsiT740~ 6h %efMuՔ̗6_ s6Ŏe!M~Mō4b0Z.iA%Ӯ2dG0o v<)2JTezFJ.m9ʸ$QEƳQj=W~:b/?7za{9ڱ6~=o.+锺L@ IgG *PKJv,Vq#OAZ9'C}'F+d>e1$ b0Q3"p<$P|+,]C5)O|c#0L+-cfF=bB͚Ro,xwpZ nY>ka+]>Q3)O,gCT] 39e~7`6vt1p8Pr-v:Fbxf`#K{J&"3؃"P~P=qE3˜EJFY_Ղi1[GKXVJ;f'54cj3LJM 2m-%sJP*iHYuS4d|3;z&ja]jd}F%`#8k`^/Ɗ8Lٶ;lYlUVnm(Q$&@x4밚>f7ow>Wg[et<3 uc1718z b*;6 fg׏ZqI(kP9xJU}޻`خhА̬ԢKs8+ODZm̞瑘ij;`ؤ%|^R֪d 2?+M{T)K?c3 _H8aÇ`ig=b?Z]ulj<5n {ǎ,y*sd؆9rƂI2g\S[qnB<\7hihQ s & #/DA.]2ޕ]5L+aþ&-ɞ2-@j#ÍxU;ng%@ޏ ِ SgOIp@{9){>l-qP<˃rξȻ M)N,L7ݎ=}?ޯq]pb(O0K @ㅺxۛgF fupѿH @U0إ9z0QE 1۸{yA`gH>xG2 ;SܷH;bFT<6:1Hj3hVN e?f̱ ~mO#qx5u J)4蓮~:fH ` )\C@<.H£V@uN&ך%Ha1_u.!c.qaFdABbI 1f34 Vb9٩?A]fRz(Kbi[{NbK"KxQ8 MI[҉mRb6ldg5>Yhz[gr Q4)jgZ-ԆFu*$i OH%G3x9bx4q>(V~MlɳFlڊ)1V>1Gnz{ ,wXfb+D=&CXo:D bRiKWqCk*5%&҂~z7&GՍ%%#z2ine@Iy^ Fhh}2}k=Op`hY\Ay\ؒR仡y< ZG7aѺƻ? Kڎ(M5ou]UlםԑB0-t8=BA!AfSZ_cL(E?߼gLCm^"yYb 5~>K+p}jxzlУ%%n 5iaLR#{/'VEoVf@҄~ 3;n[Y!ǣPM͚8<^T61}=b%KYS[p9%[~$?8Umj<Fm@,@Ħ̿[BM :Ex 5NP3 CX˕G̍f> *^1 )rYEd5{Ux8bdP£p" 55-]4e&tl̪?;"ELLV2>VB!ix9!Bp2NlòއBkApv[eW$ruZ߃scP\kZLx۬i4.6"Kq/zAD(er u2_30nWdt Y7"IU?b@,ة>-m3vs JwA%9 bⳗ%L!EٕU1|ǵ: N)b-}Lf"`\~vG?s;.f )K ߯¨,Պ C;`۴Cić8.&\*[/~-ٲ{6e0^Vo;G=0̄  d3#v}gj_߂-Q`z#.c㼜 iX8X?C0ǿ{dkaZsjM N!!]6>V>jIHqACO J ?Yalͪc[F[隻ˎ;,:|տWٳ= ^e>Gs5=jT&27-8֙@xI2D9 6mpgl4v'CP?.>Z8>VLH6EBB\d>e6/:`/~̓4 :xs=okÆ0/COA@aU:P" $H] lglyv&&B*INR)X0,Mf̘l .-KX߈Mq!٦Asd<ފ T+ =ԡ`>L/6/2C\O6b^9tBoik Q…ei5Zt`Ud7AZmh٧p\1T@Ȼb6rmД[޲ѼQm!Vg9bwfePX57lPZAqJ}֌5ߥj8u {8btp(HcR88X\WI9~hȱq?^Ip+~:Da2|{_ O]+2,Hwա ߔ-nJ|RqDA^`Sǿ48֮VP~\oG1oYjlȰՇز)km*B8muR|BjubS]S{)G.=2Цq98ɝS &~6%[q^ԤC6Bq{e-l5V.&+],=HI8ߩlúoD<[+۴X_:*VTiDzj[`OJ tPw7VOfPceI!V $[bc#&T@. O b6j^Ze P-Ӗ24B Pd7BȤ=lQ3}AUɟW] sJրޞ4!)k?5⥚\:UB9G"\ 7eU͘udC[>Ƅ ~F1B@agψ(JjN p/gp}n=N/QrF`u`t0B/}+UmIj½}`[稀YэP7ozԫU 9 ŠkpXD;A xy Ujkc]=kS,Z'ȃ"AY%1Uyyn- jT7z?Fq ~yFiK뛬 6pqg hGp?*h$gȔZE>,=8!RNS9p3d'dRN8-i̋.5*k5A ^UwF@B'78< N5.J ,Uaϝ\/pdhlNpzL<.ۮ#bԉ8HBS6)I(I=Dr+0Jj˨9%4{G/Dv֝L9SYpƝv݋'ڟ  mRjӶ τ6ywkNjxƻ7A-ܛkA4q(A[g1-鄪ՠA:kyJC;>`0nm,ɶI97=${ﭽ8 !yP]"%>V^E]I:T, &СYlnBFbjH72lA\z5KJni:텸0$YVq#53؆Rzr8=>Њ /k 7ъGe#Xt(`c,UCPLxبzCk+.mΒ7bէ]W?|_3^9 p<AwҀK9.Uan L"i&LU,.6: `C`^Q>[\pNz̠J޵ @}6Dk'իgdZ 8 a,+$&nntyMnj_N8ӒE8&܅hvNǝtAWkydCYU/_7}dg$ŀVNH¯?!>9ݯ*cQo<T+.?GOS|Xl]A'#^ݴ^ b6vZ@knȥ"v^_[tEtS[4իʎ۲20v(5N'B*NН;z}<_,~n20Ar7FQذ%9ċIC8"|2 7[eot >(mPL"xϞ)4VT5wmkPj{=`JKh4~sՁ.Ĕ㝀3C'i%up`ÓJI:TW#;GV?E$J#aruM! i)!/u*ԉwEN؍,9Ya$S|3Dܙ 5P:HWy4ASP>wyzFU^"I#P|~D[ӂ8x%ї'HMs||xDYn\Y̍[./1G/8mh;+aO]`Xʮ1} ظJ@U1@83e@:vAeY@46pC:4F;fDpR'gvȵ I?6l52m Ύ!o l ;\7 qA/q;^݊c-\vCzWe}y,A{f3#J1Qxɜa8UM804sCw0ՉpCi2},,p7gbQVK qY܃ӃT@0cVnZuw[9f[xR8 ȶ44!Q 5ˮs [A+o–/H#-$xVlh'xmFs "N*հ;{?(#?ϳ96êfmnWB 0s4qNG j^I7TJfh #irJNw차VbܛC077OeoS>~l\P B!ǻ^[R\NTk@=Ê6HTD vWR*uJq<{B RKF85U)2.yJs.zѐDT MK׈;&K ǫ-vs5vgvx r,"@=wh'Ce9A;bP ʁ!LQ8C@[Cq>eyn:YQ7Z=T*{(x}Ϸp0gph; FܶzR#'Pr6H`ԡe}>A`PKxc"C>. &L^ 1 m| px搚Ly5e{  sL܏߹]&ؔ>gD39I9`߰ 𾉭I9]3Gta\!uvt)6OQbA5^0&p7j5@d `--/87J:AnCIܬ8D[^&1^sF0 H&wacGhk|YZ$CC@c0=V7 -f loRR1"~>8Q(Q8WSp/XqfW9Î N{p&T'wpW ;1+h(noiS 8VvP$Ϝ_ PCI2[e#䒖"=5efJHjV-)8W 2)\™T8OϦlAiT8M8ކlt̍,&WuOȰHsa:\"k[(8 *g@Rd7kҶ(J͢ʟ:DhA}$=Z6 s;\HbH4%N 6)QžI2-< qOQdSp\*88su<A"PJ<;U m3>SZh2!bqDI6? H;HΆQhQH i`7XYط:PձNÆ._q('q vEu+V!RE V~5Crd&dylfb [ud2R}Np%CrLL۬v 2E&_fjTg؀w4k&ǝ&+V\GK QF4T,gRoK%m ٠RLՈrY(K T+2;SHR՚Jc`odm9MWmяpՇ[Y2Lij'-U%:0?#u:I ?%djUy; ?hDwᵢ&83YҒ"]}&d`dZے05ן-Kj u H/vVuYd^Ғ#Kp\Kvy[E#geO6T YAZ7 Wo%( 86ɢ2ܗޭ%͗hO 3$iIod_A{N~$/L'ܱz2xI3!E| `ڷU^G*%%`n$#оAJ[ά[J%M(5V6Nצ3Tds.iRc+Ԑ^&Ke=RmJs4-ծ%MDT8dý\]K,iGzIwڮIh!b;᜴3K:x4Uj;Z`(_PzT9b+@H 86ڭT:ҔE'%> c|%_iq!: *Y`r<-s@@N eHb;:RGpжh)Gp0C\I`3&B]ԍCq6" q | ^|UIENDB`plugins/limit-login-attempts-reloaded/assets/css/images/icon-ip-bg.png000064400000020527147176754540022110 0ustar00PNG  IHDRX pHYs,K,K=sRGBgAMA a IDATx]{Y̾ޗ};~&i픴U"LVf53O^ݙwBJ6qcy cĺzl->ΩǚzBC !Q8fIrF=NCf 2DV a,YNC)Mqzlb$z<%͒ mq?h`69r RFQ@MM(F'V9(Tq\m>lF1!5L lJ1I(!q1<QNh)h1klaN&:c!"|<5|F Es`L8 ?l#H5@4#=uFDo0d$QxPm#;xD0$&a M`Cd(qș*FpHLkfr0M. &CI@n#$1Ug| nV *&#@+( Xcp} bvӆ'h6ӈXO@ƴO< tJ㘳iŘv5ѪkD# YvO7:jþne(L,2f uz{cpSD9cVqBྐྵYűzaup ǁmD"sƬc묻80 DGs`hO &z2Gm4j F+~c0q;g  RL3L3VQ G A7D>w>Zow|C=k-V 0MW-?fH3_%3B}gcP}nmN<|iOEpN0W^yb^Щh?t5؇oH8B64d藴2J? [7 ;4/-Zx{zJQ<#BeS!fEzs!Z#=äs\Iz?Eُ?Jg&B2LaacT8+p.xEeDIOd!h?E>,o߀ǮCuW4Th(Ok)"2$ $j A.(r|=G`d^ }YX׀"GA $ Ph|dUc/]ބo؀7u,2}#Ay%GPq<YDZw|z;C].u5xuA/ѰDAQ7嵆/3+ؾ h!5 IW<dhïa"Ԯ{/II{QB5Jܺyנ&A1R{-ۿ ~Q8 ԯyZ/IJ^J58k4TR5y6il/g{yb$jpdSMC:c?o&vHCɦGe>ĈccVkp]W2DJ>&p\{xMK9esz}zޛk>i뤨e=(VBy 6cC*"mxMeݻN+T4aӗ7m,/*`G[\`! m<ĝOzwL}N{-N/seV{y{`YQ~/oGrAMCus1XRW^T7{E$:²oȁbC9B"xNaCR"!վ8bVBusZhB4Βs w^D@%`~wncSWϖ姪pLkz@%pDHe: O (k%laCJ@e*#\djQ`6ɂW5TصX=$R y.s#I,hn]")Wgc" ]n HrHM7^Ps_ڿK7 b__؀geEӗ,|V_IYx|$kF,(-hJ0 JQ"cKS P#bFZE0ʂB 9m&cN :~jL%LJ|EҜV"XQYOPs)2VB-Kn3ic'T. PK7 0R9*Ac-k-ËXy]? ;d*{%hr[ CRH2E9#B.C]+jW$WmjBEָŽ5”2 j`)[S"T>~eҚ/Woj7[~ldJoƌk?YمYH|2چ=y"̒2 " NhFu=S 8@"*M}$iA~oܿy2BӴj\ aOj-gwkwLPAϑ-=@ӡ:>M?0PPGţ@IQTDY=6rmO׃&t0 sk /q(p5!X"hb t_wdth㋠ը ()m]hsU︪SI}8]?<W+9^LA]=CŞTi:ՔR&8psoF u}5^;j$}Lf+"T9@s5ICsW)4;wQ9erK|+p.elf9Τ'E_eAr)zjy)rU2IPP{Cbn҃ݣӊxRGo ?7ElHA*FϔV."W!Fc^@eOY9 MIqKwbL&3 9L8lb!rlPwӉ'@i7|T3zO'Y`PdQgERX1!,w91Do]XI$L9+ N ;^e3L+aI ѶL&;yqrK?ۭ1fա4PGlne! ]va}[>-~3(ny8 j*;>X-lK>C=6fke5HWܪȱ_99R%h!"fc1&ArQZ=/Ž۶WIЅdA߃r~L+'35n1"Й-!#n_ n}UhMQ٠+;F0 ftD)5-iK Dufs]\7MjKh9h).B$=3;)@:NvduRٖ䐣5]'e3jՎvҝ{X Kak7lMUnA WRXkɬ2ȶ`'}L3ѩ &T烠` l)?Bs5+uu>ɁEEe)1l20 &wbTMbj?)|zJ%}MمچB m+Zh.jۢ*2Y7SjA$;ѫz7y +$FɖGʻp Xm'w&;ӘӰkɓFc:ĥ\XKc3&8/ 5oh}wi=.)q^4AddZTٲThBA(g@|?!:bӆ~&hPav$.Rv1lWێQLsb{{1ƅ ϙ9 3>$tk^ىn0w>Jw+V#ZPGz+N-ߜ BL? 5^lbE4]bz >HE9e@9EQB9;tmmQId&pg>3P?ESaGNh2nt@¸gSFͤDt#6Ǿ1t);[8>HtppAP .VLh}-d:M@{yM(nݓiq8NzKr9[kX%]wF0I"&͟t7 q!nxd;OW HR͛"\']Wg'0Ab' 1DDִ};fWBLNdqƂ b\@P`ąl+Vko\"inLeHx241xlAZa٦&pXfq"A' B9i]Yļxm8A4ҳv[KAĜ9iܾf=$Wav =FB(/ Y 6Z4m֣q%` 2 y"}`ҬA$FҐ89i{H& Nl!pyĘa8;=ə 0Xx b(YG)Xn tGET=`$1S^9}TQA /kL(iCRg>Hb0Ay "i.U5 I'1M7L-"6ۇ,5&a$¿ S9pfz&K1Ei3ȱZq b.%ьcCǩmЀklE]ޞ+f@A47dL-Ev^PPp[]Hԁ_yt.94% \:$ElF}vBFIDj22<{ܷOF#Ηz~y Zq);Ǿ|]W/Bm"}Zi'B[ o(~2|WK%6Jܓ pw,,CD[8x|lzI7J{He|OVJQOںMw-=H;lZ jtYnl 8 UL3\Ƭ@p]"'֎ '&ju$-+^[|5:O#=A0ʊ"I;M۶ w5_W֡b9vo=urv7mQ%c][PdTWe,m\W!F`F4JZDE+ 7k˗hςYyL:^`#" #:^'?\98?Hf'NLj 2 ~!!9k$sv݇R޼7nE<}Cbz~tEq b\о0Žux/%ԕof aLlGm_ rcb}$ Lʝ+z"wIQZP穪 x719+ BABE0^F;_dh{J|DA'SGBYxTu&`+"bS~IkN02{d 2`+e1 [y>D'&6y:Md{^v?iL)P5V(x힗4 Ջ>_PTBi35TϵɈkIP(Q jĔ Zs@c+EBHe&-l*WB[R$AM[Qhˊ O YS4{&)Qjtֱc 2bJK>jz,bsYs5A=9pl@MɬB5( + kA :@89y|-haSfhf$1zw:p')uU ϲO,QQM֧޲"_%bA,$]9zxi^Iilh+PUEkY@2`a4WHHMy/>av0n۰S>g u)YQ+\A8JU$e YI̱` h=-^ (,,E˭FD8 WR ZMp};|Fky& g` a r  &A" Y ^1S`0OuzqO"(wN iGm| 'm lݕ cU{ c@7{DagL+i{#Ό~"3 ԗ & 0Ӆ"VO6SsI&Ř2,ĐRSAޖK`04]/ie`d_O|" 9R2Ώ0aƭDHvy #1pgcuBՊ `0Rģ1tJ?6w= 9!0ƮLF149#|Hr F8i\1LFpb#Hr\m>LdLd&nyiFN &`l(As^`0ǝ0U#ؗ'RD4QX0F pY˘\H3Fj ]}Ɛ@mqbZE*+@H"pXD*Qn k F) Zd(HZeր9 ktrw\dvzE&AkF u Y04„'vySYݐ t" U|<k&  y/ҴIENDB`plugins/limit-login-attempts-reloaded/assets/css/images/icon-ip.png000064400000017523147176754540021524 0ustar00PNG  IHDRF pHYs,K,K=sRGBgAMA aIDATx][lY{׭ϙIF hh| D0u!EЙ%4yDI4ȃH$$AƐq23ok}ڻ{Wu骮>;ԩ}_FDtD]$-NR8K'eB){-5?.$1eGZ\>ʔT< ]#@3ҌӁ$I@!*LLlL%NvpJ-iz<6l!pcn(&V熃Dzf&@M;iqF ޮL` ?ԪW"I]y7>q?*<‘.M=>xUĸ@!}eKD"y<UT~+yn3:pa2j=[ X@m%p!;9h Y1 })cH<ޗ&(^RCŃCˌhnA쉗,@i5"U,ib,i9i1XZ);r.y^E&Dq@i0B%sb9B3iаenqh I C{Ң*H8ŠVX {3SG "5[ ok5VKhqTj,(;hk}Z\(Ҡ7,=%P,-Zjs-=iD06.e`og׻XOm| mprBXw,QL^ ƥFx/F>iUS&C1^lsxc~/}~ɹq.| Ŕa=ӯ֛p^b 9=|ٙ:#$ ҈V8 K:<9 ǑxFa}l cgmxV3 гF|tW0J˱ EM{WIs\=ŏb0?c0uJq2^2P*%V!)+g7#ka=ś#z_2868M@fxh:/緋\6nEY^Xi}PlEj߃BK2fH#)fKچhWӯ|ZL%]droYu\domb\ N}Srr,t-H/Pe)i| 0l:|L ±7xՒ[Rm۷صÐsWAd_.q't.=|\ +ŇTY).$vW4ST[ D/fUPzү6sPBA fiiTZM GQFfl@T1<,˃g?Oŗp\HN6Yc@K6`(Bvߵ o?v~ CuO<Χon;*d{1gZ?_%A J> dhSm  jDHĆKJƹׇiR[R\]ԊmؿJ ,CExz}'I\x*A18h fTQy) kܛN 9d,ͪFAEh>x&AV Zj@"W@TLI?(%ָryC~b..%P҅ci>s'=j@Iե 4 X31΅ܠ4s 'h$cF37 }b9IH({.6Ros~VNUtsT$6N_wF{b{RHё%GY*"'^A&&`:7@Me+%**:Gi'"+aYG^$">@BDxl\! mu-nHb!%%Pw*kyJQ]ָ:FVݧj/-`CAu`1ps8Wc"b6%P/x/ &#WSY+ۤ{^duˌ2utnYh^% I5 n5] :4v,R9a#@WU-n zeot%PeZUQ}6KHD/6ׇ$bL7GPaQlͻHqEd(JEgoo3FN5kAe-d5_T:yPIƟ heO׋*;_f_ϴ +* ^硭dXVZyfAs_^ H>@&@Q*R  "I/jfR*AGW,7 MC1om\/*Lオㆰ{:e^ Puh RKn*6΀qDI0i:g%uQUDkv7HD8h\G Qٿx;e^%uIXW!Xrΐ@4|BmS)U=7 4UrI|x@1+^X| Dpscn>E42ʶKi&n;yS@7k1Ecw_I&H'^̯(?ڸ7ԙYaZv5MK +uWڍՆkg&0WFR5TFHt[mgF%!$WQ^\u.߄'k>(_ F:dy&XeA^ĺE N/[ngr_3~AI+ɓ$ҺNqPVt$JCf0WHlc^oqKH{_(d):˄ Yh0O)B@uzraaqf)Jx1ȟFxg -M˰́vUKGYXL1cRSM Tʁ(vC+m 2 4N_é^51kY~?ۙi~)퇱74ITȹQY!vSz#%Ln:OdpHӦtu¼F3PqCc _R#S$J Nvs*L'0s5;,䣮L;oHxZsގ`^[>+οnHO]6oD{+{g߄҈ &!0OGC)!r͹ox^L5\v@5j]-9Zj3OYhz8Sdp!yA14{MAhlTz^;Y;mC]κ6wcM*lRj{m-f(/.˳<ݍF4% \vOn4h؄ݎ- 6LyjuE^gæD 9)m V_ReVj{v:bl ҄iC,\Ik'q #:juJ-L ya=L^/#UKVy4ly`epߩjoԉ"Gi9PLd^Fn9OK%Z cxUݎNKQTQcZk--r8ca)"H&ήztWS:Q w2$6es͵E J,yvE= *xQ63SKl9UXUaUw8t?HGXS yZ($UBYOԦT)b31zN&l8e7ѸϺqP%|mvqn<+K97>_=G…ݣd0x鑥 PaNY67"|v% Oeߢ Yjggh=iIԫ/d0N$Ȭ@0(}0vTPf=s{ :l`OًT\v8/,2m{/5m&vث 1NQs|Iiևi؎~C|tہDBE}RԫK k]QQ=#ד̈~Grnjr<ЭG %PBM)p3 nvwVT(*fljbR9 uEy9VQaDj5=뉅5]=3wlWlt3S\ YjR/n40d@1+kDe/k^gB͚E>_qZpm g=ps-z/n5Wm$"h|Y)N,dA=dmb7袷 l)i@ Ւ Q/mY#mQ,lw4}"rOXn]<-J^ou0oY*lu]}i_ya ե&_ԥu c[H*JʍNa**ES6 4k{H#Z NalI4nːls֥ۘu^زr;Zp$fC's1g_/1S2Чmq}_m˟YP,༰e*l]-n5ol=c`ȑJ>4RiBU8'fQ'x3m/P%w0#)>p҃QPPk_k-~LdC$ZZ.'ۗ>(q>TRrނם'UV7Qv:қu.J۩*p9A\PhqN݊w R;C83B\^ "W̤'e'cBh$HWc@[¶O J;~O6` qKZ99H=-H/ $%#E$[c)@ zlFd|۳z*1\~(.4EO8B0'l\. 썘OmŒ=<2:z߼bPpS?sN(~=^6-lL-N֫<>OEIatLAY֜j:SJYb A|_a"~[=`ΛW ԪK.P̽KUG ʢhCTSdZ唶 $PwPL#X숶a)\z^7ZE#ohS$L#™^@d2?;yWT)RLn(ʽ)[Amy'áH2"Ƴ|tL*%yA# Tz b"rڍ"zAJʇl礆bzmIid>t¨NJ0-ޖIv(qj [;UﴟaJU K҇n<}iDqɿPTd'N׾iL.'u=yC_:OuNr>ͦ"e;da`NO2/̮vX85O C nhn\P7̻_fǎ? ]v.h|BlKa :}G!Ρ(nkrFsa--nvDYu>ڪOS"Gk"x_rh G OH;Zh/!B-Q9_g ZA!KZ[[Y<3|F[h<-4ˊꇭA݂K.,BA 9p螴xq4|,ǽtZl|$-L$cG /f~asKX=O.V]5VXhwO~bA杲'ܸD48~~W&?|n1 y1fKOK[<AKrxTsUlo_ ^l c,گLT08Aш3G7I9wTV2 4~MV[jk'@$[ɍ m{㐇iuf&A 4[%}.1$6[ƃyˮlrhx, /9p!R\ɹXRB❛L77V| mtAS1cx AY[\hWPeU^&xTD$QHMqR=9z~!]HoE}Fq˸x#c ǣcnd4ʬB $QT:ɅX958OQZTǼGAC(өxG}2.ez%Yw+ G,ӽ$'_mW,Osy^Qzÿ8ɤeu+%ST$&ȏ%5`iX;\]8-BGҡ$EVs8|EHJ(liJ}#U#$ yq?gHH袷% އ!H=h6 OX}fclr\,!vPzAIH6U[,KX IT:ZA . ysB*M9Bed;c7fsIПosTZ&:Rڐ\]Ls6K~w8U~$2JԻN  t,f)c;Z_BkcmK^v@1JķYmjj9մ9̈́{'$z)G?ݻ'j'>񆬴Ȫ!R@:?c"\z_c$F #,;$ժl9*-=fT<$T\ZH6 Yiݧi^HBɿK3EYrIR.25%A,{ tB5'h"Q$ }"7V8C ]8xJ,IaByZ b^SBjB8_{=d!H-(vqȗF#?k\; RoTcTW,dkWr%㱱ă 7,^sTs.^k /K'kQ CZUK?:-$my49M+ljA]L^)Y>vYYi5s\}HȋM"\/oaRn#mݳ?^ 8g* ZB 7E>~U-0(=U[BZث`jI'/N*םz…vPmZ U*AO?c]"U\Xm]c0 8~dyxrT^PvȢne!H-|>C3fG/[cc!B˕ljK q >-d[Q0y%Q.WT$'{">kϳ?QHGx G:9Ng R'L,aC=p * L^V*+]R]me ʎ7a}%Þ,MSC'Qʁ*07dzN%?eYHOos̝N˚-AT!!og"[FivEOvX B*bug^$R0aL39F}?9iWr!HW 1Ɋ>8(L\]gB-M`Uwez^k܇m53)ʨlԫ A h_Uq-u"?&ʪCʶxBcqY6(춍гIH}+Lh@z`Ջ$ >p@ sTkkeλIeNjT*{4n'+O|xkb3q,A{-'Vt_W%Q>Beu+|p,'hk8m-e]F$6Dg'R良 tOD$QuAX*xf ݌?tdHby`tAt_r rmM*H d\8simAg$8/sFZ&] Iؙ?=d2`{4vLF؝+A]YP+UqiŞ:8RɭڰF0|^/Ľc?'Qo֏>}EYg4vha:ErзHHKULt:$GF\r cwesn\r>)-aUֻꥄȈyPU njK S\,RqՍnTsGP8%5Ūj:er;A*@GWPNP׹9BJs*żO@W#zStPEbt*4@–"WTjuHYiB(JlA!)k}C7 A B 3E/iV7zG6@-]zi8A$S"$ac*׫w k(k#l9vNśdu减ӞOMpAK"(Y$.NJmO IQӫG8cXj\&E+Hٓizle*J̉Vb5 =)=0 <'ipKxv(K9y9C9N Vo;ԪL~ pڻ^ bHoJ}jvDL+"I*-G* WTO)̷x0O)0R!M Km#K;iUYrv`r. Cc Zw_mD$ܲ5'sN#p}#r%q?H?dٮnP$X8?p`C!=.h|5ѺxG]ﹰ%O|e19cAi]ٕ}^ÐP?XM^~׽4s4LdDhqpE9-/G3>5u6]\0??_QMVeحpiu׾_>\#1>De7 Ur%QfM l0q.O)e ltSGT$vVHn&}JSc b۔;4ыTXFV% 6ɒ 5#;9 RζeȂ9LWLCxޗ7L="5jj*5m3tpВם~Ii=\Ju,˱' QTSR\ jd2&s{z S4&iCxh[^7CW|OQx,EJ2C7NwȆoVf6C`1S)*lE;' #A,yT$@Gٚ.x4~լLuV37S8FK4t"]'XU5*s5ɓjyX% v0`"|G=\N<sTT#8[.˜tUAfW 0 Hw 90|M%ug~N"t>4 x#)$}YIU$ :mJir6815=>eUWp=;K_`ڀLPVɰE wp& b NM8. TpdKWb<^Hn"Q #-t~Nx*NdHal8fK-s X=k4?ݚ}5qL7ʫiiA[ (T%PO2?J;RUcO w$S_d @X0hKY"/xAPeRPaYWV0<=nMI@L JT,D@xz7KMx MgCUkVB\ޛRl`ǒpI2&+4SRZ2^D?~DJ-(Tk?r`n[-|K~$;z1H~Z긌_J*ފb|WQ\j] _l ^awTO1%umE/Cs@\N??]^c+%|.'.8#j-_?[0/ӑOPRyxh-StME[)3G,FWvuaPbߑn*%K$4Yѕe<@i/ZPZd' i/;%uLIݟ( U9TjQP:6{g$Hw+mnbw"歜c! {€Fw豿-4lo0V|nAGYCOOֵBW :^uE+y~zbZ$ fﰖ\vF6>@7ujL#t,5 [_waoGI.N+l.Q/m]@Ei5dZ *j@Y"LwccKG?IWC-g)x4OR{ YRr$?re$HO(AuǮ ;}oȱRw*>~"oݒOr~פl▗&rNjzBrj-F;! WE?FzT]ٖ$Քqi>b[q0ິ FW|G.UrΗ 5W $|+; V:bɠcZHմ{ \>*w,+I+ 5%hʫ>{DAG.\@\%ݣ:d0Pk5R!v$Fk:Y]zR.'6 Cl}rm5-pZ$P }AY-b#W=-&d?5۪Gu'?+ 39TThu_g~ ~lu?!D*,:Ƿxg?-Ez16RdL댛˩n+4@s0Me ŵfh ‹&Gզ]/0LczyoU|JP8A eT*,grU܎9 60/0Jzz٨X 2~`f¤Y=m*訝VU!Oﴂ<2vFbu~Q}(v ɳGܯk*2#ۨdՖ?O6b{׿:ZCWd鼑V;09y=ZTk%9Pmv* ,Ƀ:Lx midX!u`[ q6ݤ͋jxQ"~^ {uATu}$ HKJGGű嚙K Yo[Xdsܼ =Oґ'ϏC70[c% )fv6򺧿9"Jjdծ]EDO1ܘ[LK~EIVd^.#·>>(gDYu(cAV5bY̓p':zuyӁd!Ar=7-v*羿N'i"gWЪA{q 讥;aJ:GIwѶȇodE:!i!J`Ro2 ]\/A 7_;G;¥HqΡv:s8MyI-*_W pJpBx| uw8oHcWrY.c\9;jv@Br6p Y[\Iz㡗aLYGD|:jBwd *H94+4\x)woVej2=_G鱿yYvgCb6jWkDIg5 $ǯt&Wb m-Whz[=sY7P"7g YvzJk ޾~i$r :ʚyJ(94l[crde .zD ѷvzE[6Hj\XKyrgʻ.Op≑5<鴎l>QD[Аۤ+qT_?m4s,:juL1$8V,$;v}xpėc)zKctϕ*up$WR0YʲG~$zrt_rfuͺziYUiVMCz(bIxFRqTrڪójjtg&k*m%vXӵWeJYB;91qm]_bn龑J.؆ @gV:% I@qL':J'r0ciyxf@#DmpWqt^t*MfxYI73t -v8?'U!BUs{7;FOoN#(u"t̰.Y*Yq8.5GCY:b#u@ CgFZpt|ɓ-K8YUR9Fy h ҡ361ƖS`AL!4 3YGl:"2?ɂ,-u!n0sGX-75q T!cF+"ߘ >3_ DaHՊ+x]ә8ڹ~6,wC) $ /帋HW`N(H эӂLU6zԪ^3ǩkkU__}_Ͷ j2FJTzFVR\P:ZAN/l̪E GV;/dLWn^ױB~SjMtzdZIG+<]9el\у{l]TGG70ג'J9҂ 5BB8fq"dADe.oZ,H\kBsD@~ ^z;=WDOT`:89Wf*8[)ٟH%?%! JvM()QB0`UP:Jƪ<5YWޓ5V,uyH񗅇.j^[L9/x4O`1ob)UP'Tǩ[Qv'EvYE)-[!G4m{Uwå TQ@u:C:"xd6[hO [j-0I z~[ "8y\Z ~GjUu~EPYwi[AC|j4# Bj#2 7ס:iokUjCísuD^RuvԻV0С5:AS楮CBaQ&BlLTmlyѢFgtz f941HKF²AnUka,{^xAj[.97m20X{9n) I VLiIn[S+FS{]Q7$#N%L4X] )$qђ*~;uxi ?h0ZXTuUYMG $Q41h& 5> J|r$l Tj$mbB@Zm-#Ve 8|9Ɇ+E[gD-ph!]*vod`Uj))vFQ*0Pktjqf< @!)UpT}$r.$T!!L2B֒X ,H88oRՑ' bQ:9 !֠IENDB`plugins/limit-login-attempts-reloaded/assets/css/images/icon-lock-bw.png000064400000003672147176754540022452 0ustar00PNG  IHDR``w8 pHYs,K,K=sRGBgAMA aOIDATxRF{qʼnU)vqH&X "/`,l?ľ \1P)rpRWnIvfԳW%KBx<x<LSDXj7R@ >L/(Awd+nÔB_S V@4}q y15'X5po8ioQ(x?Lccmǭ:jXTN !nxxG+7_3"׌ TX񏭿4zB"sBӳ[?u%.8a{k;`F?C([3 @6PpO c>{FK>YP󑭣 /入%Z\Y_ B Cȷm&D*R(CEװ9m:(z]֨ LD]j4ꆊ!)XZu'Q Rpl앐+*b$ *3дt#!|wS'Bef8`tXUi@oD"&T@"{?z[ep>0& bRlgqej<< a svkZWD&',b #/RrF4Gd" 3 M%I ϡJ!a߱)X1֚U-$/Dl,,Fq5m3U=]98ӊoz:sˮ>qr7)B t4VX[_G+iKؚ21$ī\vWH6,Ÿ(H, зfZ061k/=P}q'1/~9v Jpv*Oo?hJ ŀҪJ .p@vak,IA3 6M( '̉A4HA3_z>r=n`yl ރ.Ђ]Oj`1pc>;p&oQP yйD%Sf"h{D: 9.+'.J_S_Jct_q?AM?S_`kAkf3hL}[/)C0nbrM; %0O ئkP8mǏK}prLebK& pDMb ѵ%=*9 Nyl(D4\љe*ZeH6}`37@@LLZ IC",Nd1.e]+bt+[BxI \Ѕ>m\zzҍ iқ6 SPJ]؂*(K 6B?}f5] 2',ǔG`3)wO w,K$N/0)q0Q|aZ=sh5eteO`}Kюo ѿvt7R`xS(x8*8PXcx806RDmRDjv͜\b@M+^*Ɏq&e?%A={:zګ9;xѬ 9Șw,DJ:`L5;5V(_-K-W0LqDLJWb6!ΗR-2BvI+(7J\9<ʈMNec1BQ~ٴm`I;O<DElb%@qvY:6ɬgYX#`;,\̇w'CSH9M+58"?j vN$y Z2i r~8v_$Q[ʐ4W( ed[rH"L3z+`sP)c#Ɯc܅P431.{`(bw;淥g^,7[ߖlĭ_&Pi>8#ZWU^Wzϓ1߀7 @q=G쇏Xg$0Whq <ۣe4(gDیO-JKI1 B'M`Om? 2ז<#΍*}`~<Ȉ fˈ1;/ =Zl<c~ .aӟJ.9cdB,?^McЦ*lB*H5y ~O[9gbwcY'sF2zwDe,UBz1.|/ػ)<>^U<1+BeOTK*JiӢG Pim!j`BP\~=~c#W'X%Fq Y;߉aT=x`قyh$p L:j} @"eSxkIJe PT,raOa< 98hV c=E1 ``](F"u&}*2(#K΢LUHh|'TmyMpir'0H'0H{C*c3|/Ef Z,@VJ[E*£k~䰯 3T!l$o[y63/Et%>{5_p WzYcDWwvA|9Ms7n M`k=a@Ooz[b11TcSu-R˜w%fDcН! fJI9JiJA|sZ|~[q\=f@.E u0F#qa5 CԛDb 60X'a,!8VFp\fTRKm&l|: UTe*< $Oѳq?4猟 z<1cȲ=*W܇A!ҝ` I_EpK dL#pm~~K_H** {An a"S~i`;<xkaʤ;䗥uA* !8 {rXFuޗ"I?N3ղ M0,g~|y,,bIe5 E$C:¦RcFʘXǜ5+Ľ$'X(֗,@d&I>y4_RݹQ(pjybV15%& ^!EGnOs>cH?P/X!>em|1 c;y]o洘KW&LAǛ?h@ f i|S aOb0"ܸ`fC՘e&࡚ x6&!d 8&H?fy ì8$ORm| ^– #xr *N3<6Bl E`XǸƌ4$"螧j,Nrqn|w -.z!1a(ToZmV"F\9\H|3?]E<4k7+Qe"?Ѹ1_'3,{H eJ-ѴJ6$=4xg|H%S,ATjl10=3}Xls}ojݫ;iՎ2hJX<3>+$XjD\H%8Tia)kwcwb;XI+5]iYDUqw7(-u` vԷZ #\'5)Sx]m ƒ#n"MқCniߛK ` ~+PR|m>ܡ%Z̪?P4/5UÐG OV4g(2ZYoڤaL=720$ -r>WInΣR j̑tۼ3뫹n2^'a:=4.`z&)e_+ =F Xf\AL b^8HN93_\*I|L[g x6պ#MdgQqvn 0b@=0@ Ȫ E&t#/pdD"GF6hEQvLm#ꅹW[ջ8nRsZ8gD||4 S9FطnBz r>KU$שZ@>Zo3 N->մ='`.5C\z= 0,k\ h'N۱АD83iZJ}zˢ `am@&lCvn_&QW0@k㆔]렌I1,O}´r Qݍq6gQv lkW,nn%}!|=ܦ>{!sȵGaCQتb0]za"5xB~|KW ^R}xRpi' kܸj,)׀E qDfZr7{H2\ 5iTOKoseoKG/udٲ9b:gcF.G].V6v,Xjb}@D<=aۼ6PqiLTN!a.(aX0h]p/H#J P%,c)h$EB**m!E{!LD/:`i=l͋Ne2`_OJxYA7ςJZ 8-gX(Ĝ_ !Tr7[>ݷQf0ٸo3^e{2jZ8`pA3)`>6 .K+IRH۶▢]gNO/^2}+Kyo[ZQoAzJ%\ܯ6oERAT)pke^#c hF9Hz٨hd TBg]pꎗ.ŤB,AzӸ, k4c>wu/-EϹvqz|g~ܽ XƏ;:YrmexHo3TF9n|Lepnfz$&-bY,Pd/%i;G|bU|G8+Q=5Gv}\\K>s4$L㞑}=qKe".ew5pK{L(7#2ą=t<6E'cMkqns9 @ +=r tƴ~8y8bwmg`fmQXU76Ϻ/_F i2v`Y<]j .D볰VNj:c)+;sF~Kό êUge?> E>GW{fө =oc'S-ti+\ ik/Ĉe%h>>aجv{h]^ {]8-cPΞ}pl(>~,n4h2]z6`b)kLhHoAD_J/I2 &2BOk2S+TY $τޣꊽٽU'R)K]{[D\5H  q"s]sbJ|K|CaoE]: b)K#qvshgB1Uγnwfla el7u--Tz]+&cUy]1@Lb16ܭfHDo t @50_`IF9穃yXRxala ցs}3.(4]MTuYǰF联dV,4xDB=AmHFEFŗ^t`E.h,, #5iHy˥X*:يuܮ=iFe?zʘ9'N4w6mmO[Ҩrzվ8Wpwoa#&ac=Zݭ;%fSʰÁb0$I =l9إWkZDlr@>{}ow瀹1]Mj:Hzg Sbiofa 4>2\\ m_'.$2/ L@|*Y崞[qV5~3 `{~jD &{*kM;1͹v1ABFٶIr<9a)Ķ5Uگ9 ZsCq9pDysT^l)|xD"\#X67KoR=@MZh PӀwG5ޅV[1(?";ylRziINm 7uÙ/KUS ¨|X @v8@@ qMP}f>! = ]n=YJ㲝Ce@Q|I O|͵8NfƨVlj/'Q,+}{kul;<38a>5P;ࢡZц H +W`-RIda.~ eq9` HGf6kv ;ۍt!\:irpjX69&VNjфu'fLK7Ɔ%Fagu$_D\xF:)*feI So0>Zt>abh`WX-vJXRXr+:da.6vA J;Ri82J\hA-D3r>Dv,f٬: 0gYgt*T&F3˒nO/| @JI7vBӡ,J76Nz?) %}:Yx~R9PD˴EJ'G0ϹrC]>CYf^.4 Z&%N<92 诓D\=r`:|2:Y|rQ澪]$FJ[AswNHnݱQ;%X ?P9Sve ZU5hP Hغ1]`e;Hdױ. '^>sngS@g P.i8W}@s9϶G$A$Z]v4"gjRl NG9F6-a>_tIENDB`plugins/limit-login-attempts-reloaded/assets/css/images/icon-pre-install.png000064400000021244147176754540023341 0ustar00PNG  IHDRF pHYs,K,K=sRGBgAMA a"9IDATx]mlWY~{9^J!D%h/R#F# {mD`VDAKRIӒTJ-s̞|w}Μs=}9y׻4YdtH_L@Zl#)$'(ѹ\V$cU:"OIFb88\(#@[ܱv@Rea"ALG:Jdm4 iXGB ~ZkǜP*ͣ ҡ8'$#'͝!P{Μ6N76{;0zU.3P >;Y)iq" `S.L wU:I_Z\J3ېKEG׮2jo>yvE!/w9J%ڽ N>pAw=} .!I1 B[$0^ˉtpc.ԐvXnVZdTϗ@mFs zfg6Zi{ZTH'+TYbEYL{`j&ߖ=Ͻ-Z!ˍjOA)Xk " Zm)-jEZҭΨ>--SG "5[Vj@=ibP1Od Ĩgo%r ~~79u]8((dUS: A3OCOPJy0Ȩ,ߦӎz7qqעcn\K1dCGoB<#I娸II ^L)egDv}y'bDߕl%y2,zzo'y~F^Y*_L7N/sycS8zSٛ^:‘~,5-GF\2\mCVDt"JO'. .kne O^H_쿺1PkסV s GCc|AV<,ƅ ҔAagf "H A&p*0Z) uXƂD17[gp ѫpƍo1_'U:J!DL(3 ԴHIPs+Czԫ'~Pa~g'8ENr1'C=ҦA; t@" d]I{h)sLq_=&=b2[Uh$TBVL L::"a%cH1I%|U'ЦN <7,$^)$qv%e+8)ڽ=%ɡA>2)N6\p$!+1TE(!㬈7m6D8Nf/A88u(1ՄA=Q|*sy1F9 ɖA=]HW|A/$#t,@!yMPGӱAeAc3L.< PVYgQm$ 5aHՙe Ա|r$'* Ҩ~ދ7I|6|>ԍV/aN19&.;Y׬MƄ۶;`srNgu,ࣆ[O@nFD$ *)==.8Z7Yu#TO0qn2v t|% Dž(]  P榈o6DD:0).9&\+"Q)ZXEBn5|}ͅZz"JLi ˕ƨƮp V@CTV;M2 WCvd!AFDmo&yWv[WC*>]mjPOu,'*0MD𰬿9[E,8 RSXtF! Y3W@#IpS5o G@X'2t }v| Fo#ڱmKKŨꗳv]a4SA"^ h:N0UPaAHOl5-b3S R1Bv4@[T͛C?*uօ:@f5i hzjܩA;%Pv&&H^#wEGpD!B%Fi׷jFu 8h7*A|Pcw8$Q RH$QU}h4-nCƍ-j T.!r\?^HwCͼ !׀뿢L$#ACJ- ]ލ;Aڍ3f}b@b܏#" (fLɉ=[<[hZT"tS3~#MS@ZTɳocZ>5w`G$ m#( iEDv:9`5Sz9q3tK:dĄ!~#x殹cYlǸ7#fGNѸZu ҰlT-eԵM["902;-10=5d1ӷ]4r]o]Ooy{wiE6 "/ice-fqzx>SoF 1m3[0N{$EO-TDڏvL_bV1 {3"%,FLy*Z ~!?D`^dzE9\ Poߵ7͗,EIHj;43Z6:d00I-5 kj<__]8Mi`Eq?;WJR֒4aU*@mg:BF.ﺰF푠%J .wC <)1g"kNI XNljzÜu!c:m0OnjVu5m3ītF3 V'Z:`Y Cz*i"1mAp\ 3V7_bsk$0Ԁ'0RȐxugh T)@1*Lΐd]8D*SL E$\l_F'QZu>UNq|XJlV-2 rz%n=nrM76 p4\a^]{-@qFwHov nq5V'ĝ{a,@ŽuMY#O kǾ%sF"=_{>q|cg3T5뻟 ˱2ur|$FP6Wh>σ<BvRH!R9߸le-uwC8~U p ?)G҇\tn Q Qkv.2 _*T$1~!/  铿pS™%KLC_:+a2ѫE52nN͒D ,#XvƢBiv}TJ?rBS_\os%A8᪊\*`$>6UqŁׇa<%zާp|\nr|UtV皭M;wuifT0Jb.!&>~8&9 PvIE/+oCD׬jSL̷~@d/BW&S:>Ody h.6^14R+Z$eQx ;/$g;W[Ad}AP=GF'vlg\:T2;Ѣp.qnZVz+ac߸l9&jJb eؔ<^oU~v"FϩS60`ʕ/$nxs:n-vpf~ЍlQ2UL;(t4'Pxa)"7 K1&ķWk +/mUTtIl=drs/lgC cu)~`~8P~7%:nTSaUJUYNh;r L%5(?#ǎfTSU[<ln81Kf hGO1zbls T='d|wH±yhΩMX<7†gy@qyw&CFS+a͸l /<4cDSE_jr ;v$AUd!{X9O_gV0T1<,b9d=xk2;{DP: l7nǂ<1v&f>QVVr&^ga5F44j@ngz0=ưQۂ1 ߍ٩†LSN҈} y2eq̀9̉qs]WIuDٸ/F@F &Gh+dW2z2d<$vw:4}(󌭯MK%VwUf^6 Mό#6bufƵ::M ؐA>d 07R+&w?6lb,:H3ZJT}m+V$C]U\A,n):TH8 Xsj߳u>_7T*%_S_^Y/yYW|Q T&ߥп9zo.L$r]N`_ VoeK&&=H_;AEIGUÜ}&ya3b!h]TeQԹ nJh T] G~sݑ\}Suh܍uc74Yq6&$16Z煏*PwƁ{c˼8H*+eH&j+|y2hwjA`l6IlT?P%'-|I*)cryGF<<':i0]xʘVȅGKzX]\|dNHjp+6`K.)^İy #4K㽰hUqYIơD q=aenAΥ;vgu c# MMc"ex3Ft.lF|`x;~be8 k S9D x[JZ'y[ψ9aJ8ƲVa&qj,e[n/(}tBClatIc'US7 Yr oI6JeYq9@퐤1aJOrAnp01 dam"+c[C<i|qAa + ~1=e s}a`d"M%P[ZE*Lu^O~pͼM@xW9]vFއ uM7yɞA9c}E ]#BWvZh $$Ktz|`s)66 SxuBl>v!wzNotY.7t둭6+I)}"b=⊷kp' P8S'L&{E +, :_.Egob^ 3I}L ffeE,"zk叓d )6Ƒˁo o(-"ݐ8n(&u f fkbj5Cfn߅G49FAFJ>Y/tvD5-w<AbgC,eF KhDl-L*}^^q/ZN(a_\s1:|1Zs$)DQ&I3ia7<ld =7 Rp1b\r,gEr7O}VNX cdYlykdj!ٗʱ2&>]M1s6bI躳|1}6U].{>ԸMe M|mHN6AS, |.< PD'^\Sp TKBbgfg|*j^ymߥhRvYZ屏O4rvdw..;?{9<9Z@/jեPT`ƘXJ溸UiV Z+UVU;c>z7=2# G͍}g6/o@!+!d) HvVǜK3`N}C/r@& ZDh+Ai|%6e1Vs~SLR0:QiG 2#l8@ %J2nW=2kK34-v ;!1eP%t 2M:ҁ~sY#7% l;Txw~xƥSH<ib/}LUX(q*^i&_&E 0=~hXRI uv NhKM-g@읨M;_8#ȗNs+φʹ߳gA`$ ؝xSn|gjl|"u[4R5*$#C Qa|&B~$}l"[=^/0Ӡ}W*mX.#VUW;1@ͮȲRm@6Rab9X NxqY_;VK<67HOmhUJw-z+mVQpǍ{&5UhľV3ڰMQwˮM`0#=D{Xwf@ۇHtJZ(X5d@LsXQ^m\l.z9#n3O7] x Y۶C?vNjMib6v@ J!whQX@ a+Z#ˍ=2o9-bjakPxddӵP|JZ4)]pڰ5[PuɻJ{1@҃Crcc1#$WeI!-Qi>d!s;QZ4=W].H vWԼ[@ܸDW>h4|rM 5_<7s f.hAum-ς$(B9Ѓ󂶦t5pLk撨 B8U'r11] vmKf>|-b'osG$BUac\;8H¿VwK1jIW^Za87N:-j4eIyh~xC4>spth8d ؽ@ZJh|hu5p{l63|ލ[Ww7.1o*|I'uZN*܄xvF˨'#G(R*^V% 5HȐ֛u)բX0?`G+8%o.wJ) ؑ%}G HAeeGBnd;'ō~ :kD*'.寓~NRL8t8J\GݕSB|])&JlUVVFx2S7&A}S E83N@wZʡgSx, t#&3dPrH4W:܈z Kwx''818N./5y2 9Ng-2 ABχ Hp9|RM8N *.=XR?+%bxs?o,ܯsT*Oo]wʮ?J)p) :pUH}pCDP(jY Ni_!L.,`}`)y{d9N 0 Yy6 q&sŎĨX%ǰ$r#F %;d2댆܎᯻&{pm #iAe^~$jN(Q\Ȁ *.׫C /a)os+8p1T"1@DhN9>V0vl^bDН`l4W9V#pp"w$s>S 4ँRrcVle+ =q4kU2%W;"1q\r .30߀|=Ty GzbRwɧnE *fq'cP~7ws xH; `3|?b:R \#-1q6 nq*ǎLu1$Eh[SvcD,tK"0k d // r<2AgÅ հ9D[9tcx- xQe| >8FfRԆCyY0`KL`𓜀b5!T Jц0_[L)=H+pN²7+dS`I/n6u܊J}b#֢lD׾($z*6'b)'@wlnDN8/g,w:C KJ2drM++LWXpO,DjW6qPbτ jKԣm]$Էg]=86w(2"N#Uj4{%_=Mam # >h+@܅e^BR+bZNUr4Ԙ{þJ q? ^1?. <1Ųv *,*5ZYgB+j$$/w$GH97*y\% &m >Bl#]eASׁ6~q7J-#{ )`UmًOi ZZ D*c|"g E1\0{ƿ[9=q![S8/ VV'ӸM7Q+y<}_s{ ^o[nL@D mZpc g~!G|< /]:DsE,aQZcy,8x ұ)tJ-eA?u$#<<0c]Pd(!Ѽ3D.!i?O젠w *aU3$DL|n y .dY7!<3w4z sЇ3Fׁ8Wܱr\o^ XD\^VyxfV}!8\<ޡS@M!t6he2"JLrL??H߫{c}Z_ύK4nVKnUhE0Xv?YT+>y|ms #W)RMF\J9yeaicI!."w4u!eQڮ$6U 2<1Z84˿\/=݆zӟ5IPixhJigy'd71g6LgB:Ȱ̲d/o<ȗ/A0Ο=`PiWS@&'[vf#x 6ngaDn\#<@EUE1R󺆽܄MN< ѐfZK}%Y?t@EĿMtxhQF\6q"0uke a .x΢NҧqٵyM``x(Okl®5=4k Zڿ@N=SWX>3,q['@&nɸkdMbiLgppC:KI(=BZ?u0Xq@ePIA`L/1rtFcU1ǩ08smi(23-EIdQEM馰XTxfAbkh̯J؜&N M@0qXǵysqEE1V]!a۱ f8-p^ VKH1}i*Ns*z{KAՕLÎY( :PQlOyħ#&pVߐSpX2G)avD3^"Ud})1 ٍ!Ps .r@(;jRP^[S܉9iEEс5.wܸIY8J#ߴ[rv59@l]=V\uՠch`L{RhytBiWTwz SyRqn#l8j8^<<:VY T*WxR~1WD>`ߑ}wl0$Ȼ` 2 XOj4}yjq uLor̅rGϖ.;k-B^_68|B- lV+xD eK r=Z?[j&AĴp"gB?Bn;\s"XuqOa35]H/`:w֎Iđw?.M;[-v6[0pdxF6(ԵIF鼽a@b+s [3z \` {݉ @BEWK@ҧ ,8Öa\&GڴPtv=*\Y4\X)Sf5Uۜ@8 k:NtW:Qr/|eìrbr]VC&`#Muą4@VWwҼ)uj<38&o 2; UZnH=(Ȕ5nwkJ9Ot]SMG%T~YThU;Utwnx/dNb[$KR]1%)|R1HcgE~eDd:p?hDP Y{\ձ%i/c9chzV"Yy;4: /(`Oa\,wٵ ۪Dڼ.: ۉLe1VDB*3_5(kbk˅nVxk=:xժ~F:1L\Xَ{# ~_Ѐc ,~T#E'^3PJߌk*K؛1tThdʐ $l"C 7i޹$x2AdwLHߠcfbqfq+p ғQXYʎ^ 8z^ߴőn}A+cY:nT1VWKm"Ta  i '&Zz!㍟Ԓc,-SrewDK Œ\!Pm< 5?qU?)f {WF?niMAbU5QU (jτpݶly-*dOǪ5)2խh(2_i„Gp<ss4rSFť>دUN&TJf ?Ӱ'[3|O4:ϔᘙ̘J{_!~6|SXaIZ:2 M"Nө9Αm5U\yh5gZU ^h"c>L9Y}h HES}[יK9iO4*6P4[ zCvAWւ% %wτt%Y= lRGN[&OɗQ?d0BNhr=-k9KL&;|?bm ~3݌gGj:X۟4E jQԗs.F沪h:uNl2^ t~܇饥 d).aY+ʾ/\GBѡiTz^XpD#B 4}d)ex2Z'=Ze͡D~F }c[~Q+аgVMh 4!jkSa&hYVki\$&ꆦFȾ e7<μfO8<0ݕ4m]f/8|;:xz#&M2ѤU "3L /Im-z&T9Ϩpe۰ePmv:)xPQMuQSf8P򈙈O =pk#R3'$.R(,ydAu"&B`{mE.CaM{~(+(v\tXNUbLm(pЃV6a 4 qt?",jyͿƠ'b}GMP6 ykn0. 7>T$OՎbWҎ?UP(g:<-ԦOzF-,UT󪊷S~a}" w>$ΩKMg?u u!e:#{F" 6Z<ǵ*–aiO9&ـ ܇AfFLIR:k7O_S3=`Xa-gVxvfh!ruXO [fjL6DCч6Dj O*(>{wC[)t8iI3E4VoB2Ұ$cS ta3cXk2;'$ذ(?@t|_K3lSbsm]2vr]o?Q6\(4j*}u7V֞ܬ#sNipSPňcmw3M5.oDGFcCa 8#zSm9=‰7TnK̆M A,s!SĀ_ aX9/&O>ss= sIIGs@^ox Ŏ·mn-( g7͞"hDGBP͹+޿I.67DOQu3HVy q(p-*v)q綮7ix^G&Ac0^ߟ"@oij鰡YfЅJu<"{j0BSjj}dQJ. DYRGߗf}h ǗCu%eąD*TВw_7Leg8NA# mǓalWRl7'#&g?e"1L_lM,$tMuێ@`7.BT-.6 4 ;},XCfE[3V<7`ބ%:bRGh:#xiz\!6v2v ֽGfXr"Nl< ?/Nh>๿4ۙ\;Ms˙l,[³&Kw;nXe); &(G,6C2L`Z d=|" %goQߴw {έ$!*YRm(%Tlh|s1Y,VL6gfz "UN1[L55u?Ʌc/]6s Y@$f{cXmo7k8@`9F&by3sqL(=Ǔ~k b ;Ѡw$=rq|rNIG=pȇZrrgLPDڟ''q GlE  0s[k}EE%ңt.Cq:ugn;r18OPe F/>J~ZL]1s@c V31w[W*暸f2NHtdz(vM1kq㻴&_ݨ(OH?V{FGBGXZQY?sBƿw M,vXm3^+''qC~{`Gi=Í3O[r 8m㠚&WjTMVKemA> 9M@*]g%4x]Il&4ة&] +$w w9D@-Ix8*B @Sb ꖟwS(uyRW! 5٩]ug@I_(gW\Okͽj'3!2qE[0L5ݶF-@$uӈYP88 X4+<ɊFs9=k=/zA_ecoO ]Ć<RjFYcؓ)PJ3*Gd;)9`ɪYƾfnP zÛi /cL\I)t>cXm&Uq7ֿ3Pswpw-w0ժ"y6TEɩ(qS}T;Ra4(fȐC (Jz7k{R]uAL< $ҕfvJT8^GpD`J LoC89LseҜpеde0Um`GUbW&m<,u}2맃0טhpC#\R ( =@\MfFLJ8θ&90  k}YAaf`r" ,W++u|D^5"k=A6Q_@vEQW(k'Uf/rt]d+I"hmR ׮_g+Pi!vCySl*ũ~XE mCgfWsx,a"aQ/9"ش5gZeZPlK@BGT=.baԇOXK]Yo!vcM0 Rlvf†!w(70xֲo9M,DQ%c+gԳ(UXԂ 3WIyZK@,Fgo6\ʪ\mUFl:h MrB"8$z;xoϩk= c:U!ɘ{faw܅GJBaY퍨IklCk]Q)Z5N襨 wזwR4ڼ4z'nv:nY)ivDU]&{UIߗlm'Uj{HB^BTs²8LWUS?7zZ+pn.F7x~cQ.bm 2rtxLc ъkg>t :|gtlN#kٍ2湌OJ"7-S'9`E.vZn[l ғ#ro.).N}\ hg.Áڪ,m IӢAtoɠύcpFtq4[ƪ(ˆgeA'%[ l[Ym uҚA͔YtMhGgh]҂.b[eG{;`-@tJ+vJ&p{Rϧ]'w` Q{wC<<36mAph&rVh 0 JPO.8m9UK\) ,g׷ڗ$zՋDB;uUmPh>)2~WǿOtl9!rRϳW::$l>b8T U~d^p&V$94GѰQp&KVWdy E7ZjTqw#I H[HK H}(Ψ+A1 ) 1 e*{Q:.QحNHV(u#JM bU)eD6JM"7q#YX,(+N'H=d)&j׊J aiL `EȁJ `l EkdaQ;`C[UEU%zPn! ^FE5aIBE=t YX4S$-&%Ec$YA,9,"ɒXb[rX4:xIXAʢpيQ1AlalEbt"D"چTIĽlHnd# rs*QVYrX4;m"E_iE+F)(l(r$U,ZemE "-Z%UR.hm" "U,Z+*QwBKt.J+=,V R[b|< Yaڰ-G+sՊ34EkZqInt=WXaڱMYbYnk|gZco}MdoSZns6<}v |WWo['È[  biEs:Caz1:rMh %hs49h.t zWHIhRحȟxK#K E&ct=?Rr&@bi: :'o[!/C,h M+QkԒɢ|:Oғ_YG߭FU iv}/)# si,QV {0ǨXVڨΪQOG~qÒE)yWLүԿ#N^X^6XȢخA;@r91ZM4|' n>FW>J z&A%An2 YF %5*g+#5Js Aƛng&8`8%IUqe@z( cor<ǃ6(Bb:=4p,uW/KjQ$t8Ŷϟ,NgY8#DT,o͝_bV>J^_Sl0!FۚuېA%ƢvWN9=I[;9\HH=$iE~wUſ5N!gS+G6Z_Oûy*B+bU>En-ABʛTv_8x&ZG5$vy#CWވ¼&}*UH-"Xd XG ^=m6ަjG$A b)H]aB*=VDĕ|2Ā/' $8#7ґ`<8E+q9;I!LH4疑Ee1E4;^\t %xQjlnJ*nJ1z]OX"¶CeE;UL$ gN_A$a"I[s:@ZɃA*%܀,HZZHӄutTmpi.- &ogY_ns'+]BqIB8:Pk  J r+mzz6XX!,A%5%+XuquܤqlE=}7%$Its=wtgS7_>)˵ңRXuz*fP빬5$ \c&w9dFm#lJa pt Av[˦_QjaKj  }撍}itmS,AÐ[8Ҥzph#ނ|*Ԗs&:fzup+"He::zXp՞Nњ}=_( HGI-wk)@'#!ol)@+"T8]WR/U*%dꢬ5ԮKOsa)ug7#a֭K&IU&M9)@^exZr, =Q٦%e\:\S֏ 63x4mtU)7"=Bެj/g!Ձ%H)p-N3-@X5q;֟wc(S5!Ʈmz B:$hxT@2[{ln鶦:U/91ETHNoadQX R @b l8'; h((9iIԱ̙ L0[ը3"BL΅1`oXoJd)V 3>0i3I`*{!>YGH tZ&n]҅L”$E=;ȃ 0!EBQթޱު%H0NT Xl+9Sq"si4I8ij3F2\-5bE` p:k-8yg <7hZ;.^2D6,YuC݄L}Xd&2Ԃ #4?_#g8AIߚ ,ԸIf@lx0=מ:-m,tF0~/F;Ow]O#t Bhjov 7N%!#Q|^wyv}j:էb1Ǿe7IhD7{";q%>TG!"@<xvz6Cm q$Kb:~RO=~V=늒?F:0p['b _ZGi PHӰA'ف1z⿕QВfoAVDmht42:Y^ GKmyZ%+n F۶a7R:odKHz֖P@$Mûhպps49y֒%7aG gO $˂X 9 cCqK*#8t*,|av8}Έ {lW#ifUs+1Hjhr6uۇǩ?+4R3S6\_·6AMTo|csgyZנk ()I1? ;8)&ԥs. N7["ǖO{= ÂzvZ R}n\4 Б'طu6hK[)NzwiW6 vE* ~g56Ca-P햑20Pqk"9K߾h)x4\gHLʌgoR֕ RCށc~)QRjvc+ =nYKjNDP2J SD-=];?L3k?$Ǜ*v6Єqemf~CY`;a 7@HA ujQ ")#M%GC|$uKbÎB:H{R &YПHsMfڸ{ܦl+K? I.@6&qJgEHL_/O=G3 /9ϏqI $3s5Є[xvjpkDbDEE#D59/(dIM#xG|{G]YB+ux˒q޵suj4k׍(1A<`.0TLvE{=F(yg;Y^;G~ԑTSn1T$Rhd^ä̝}e#$C~zY+Ս1AM^Zap~J߷ڸ&M>ʓ=B1l]yAA)h<d{ŗt{H4Fghn<@k$AF:s%x.-oS;=Xj`#9m;49!q3Bc$NJh鉉LL´> @pFaߝ3nbDy_\hpmt՞Q~6StTK7(׍I D?}XR+r6ͨR; ͠Sz*vWRGe?0qkȁ*=uj4>zqgyAWuW:Zy@,Ւ[$Z=Q C Ipqq'{CBKQGH£:Mҡ .z.SOF:$bT(+/J Ͷ]+R:ڦ6ꜸS-xyF²9 &u[xSX1wDѥSK੿tmesҔRe J߾(ٿq;P s NdJ_+z˘ ܍7%vDD1iPJ"$B@?Z w /l 7pUul^iTw#:0diaܹ@8}i$ȩuc KtF]% $?"8u]gBj& W`@6GeYQ :qt5^};H5,)O?] @&wI:$&1qHcIXRh~9JANF$0ଐ@r>UXcSiz$m=QD黟D wVҕKLUSgˋ#5l*&"17MY tdo]= T$^0ŕ79#d|xh(+*J~: 4ٺ%!@Uюwns5$4EX7ULVl#e&sdS2)p5(1Ga{HԒR~_;hS1hN ރ&7-PpGa{!WdQI}ljQI _.Թ>Q1cC8YD rSH͗OPy.tB ͱ%QeͦU-B A dxNzMEq]PrXV[>"^:y /.${sZ(3MWLe=|UE]yH71CZt !Ns65d>aiʀ XȈ{lpѬ"?>} ]0{$1]:#s#%+ m|$JJ=-:u-hqД[IH:4w:@Sǃ45KWPKWh+߸VD[.360q9A9tG}r$L'EhPq{Tޣ ({Up Du1b.$6r.ypuh1ZrZ(RDZ O|y^rO$;.dJc$ `$Q$5+v٥NDǎtGÐiC)1}M誑ESϐRdV-1%Iԛaџ Q:'nov\&OrN<o1" y M*Z`LdTI}ze(Vute;dH/Gd 5B-Y%E;c,rI |i`HfD?o.]?8;3s?.=^н9]I8RGamy418*HpZLv9젊$S'܊t@ծ`c7. >>N~^覤X\{9pd>j)C9(4v]_?A$hQR(=sI҈QGyQsoMR֜Yab5dзV+3 ȣV'Ct$J=) >=*oO-n`HI"AcTQ\B Sjz1v˨ŀtot.e649X'm|Fn$-}3zM heeR-/hQ8D㈰G$- zώӛ?Rn&)3O~54Έ:%i}Zf_61$Mu'ߝQ4"sK$朲@`` rZf9 4X3^MyNSN!;5: pRԅcYsh r&T4v8Rf֛M31Rp2٥>w(r~65IȡA\k/ Tyܠj"$( mn@R_J7uH궜n=-$ylQLQ\bO=ߟdУ\S)ɝ ,p"9ZM10DAHnQH Di{-hB0ܬ΢ZVUig^sHr2L$G\u'bp .~)t )ϏNǬ, 7/-,V9(˜"bu1GwXDx"A^X8C: bȺ*,cmՆSt8ǁ7˺|-V =bi_! ՁvwA>f=Z(U8`=Z[(Aģe vV}q\Sz)b vV]ԐJD{¢*^Ea_1܏Je (K2,!u& 7ZTF=0?¢9JT@IPl|Ģٰ7_2b),Øz"͂f+ƒ['DVY :XveQk¢re*͕,I,&Pc$-daQ`٨j{>KzJEt;`Em WM!)+U"wQˎh0 }kArbeԭbx^::VE"ʵbE5ݕ@MzXWE5RÏ2iwub. YKI6\.:Ţjn+AC ]ETBhAwb(J0PkwhI,&IK;\5j? ų)FddiNfFдi@Al.X>-G8*87!rhwKFqIENDB`plugins/limit-login-attempts-reloaded/assets/css/images/icon-web.png000064400000051067147176754540021672 0ustar00PNG  IHDRX pHYs,K,K=sRGBgAMA aQIDATx %Yyoˬ^ hnBX4#٣9㑄,u책,|s4b$ylY26@Q 6[/44V"ox/̊ΫdDxߗ!;$7.KD7+Y0ţ/G.AƉJR yFyrP,"e_l\Ntpt(K HJ1die$]:2+ie#Jdrg'0 ի֥?Kiҡ:YLgYVAT[ǎqirֶyLeɴT _:TZj\Vq[e,K0HҕgOfTKhrQ5ZQ~b(Ad:Z/:cy`g~YkNPHfׁ1H5Z(gA@$OkVktQ}3Hkrbx[ %ySΝ,t_꘤uieQ96-Y-A¯^~7ZZ Z ,A/C*KK- !lSO7d_ 2GK+Od+{$u[hiiۯ8.{=1HjPQ1Y5Aea͆_-D3䏮].-tv9ώo%q}R)ar2"<k=+e},^9(s!]lI:q4 nlV)Z qwdvR 1ǵˆ42Eob}2Չa ɇv釯xNM2{klF0 =imS$fgUsy:}=vqpOzs20N7,VMa|-I+H}F4cba& 7Cy7~#R6嗼V9ef^'.~LUHO:&߂0siDrXŬz9XW K5b\ S, &Xn !E L`u` o׉$d2r?` {H^!8M8J'},/7{!omާ$\M<9Xtc D$<am"Gkr+$1,d>GfV k J1OSoS&c3#]GI6%SR:1WBcgIHr/`!gS(qvtV&ZԎb+ !j6j"dMY8am|LxD#߄d/f}/rM WqIR;>Lrdw鵲 a~ / 톺[4#rğݔ \V=͖ٗKgxm 2 .WFNqrjJchJTBF<~C &7a(Lq۱uܛ HU(Bqor6ȇ 3 nO쾯8:ـEh%~ Oh;xϙ+tAґG~yYseNc_ħ?Wcb?)qqmfE[0z^& yL 7d/ƒOpg8hL,+eX(78ʗ@ǪEsC=VQ`_+&/4.zw"f {F. d^Xj n7x+|V©Xdc荏&)b"HXZG_#EF\w_Ăy揰ìlcq mRp'N\pr=54Oc[*c af`g}oSfj c峓`G ~+xL<*" 06oO\dqdcQl{L(8ѬLsMpː U)D? 1HM/pð)y7L%74q ̓9-Lm,q sCߨκ;Aסca:!L'=2H5|%TKSs$4I'H}PkP͗Re9SD>(I5oc4J`eGX} sѱhMI (>;z)'0obћBd G^}{?fl{4%~V5] &Bi$4x%أSv 0"),*8в%ΐ)$x J Φσ0`k sx?M}:@hMph4~\˜+Ğy0GB#ce`O*yy4%c$$}7]Yq6CID-׽2 ,'ASj &%no#]XeV iՆsXy!$+3>4Cfmyr+OZ 1AL'FS4LG&x,o)I;/taCc0'k̂C<|1o9與߅&lxF,X@<[7wKp{3;[EQvGBa,  DQ+=~fH ,7564'>4zW}<[0 8YH~dyDݓ 0Im5R]D-c4 |A | jHz,R!a!tKCYC!G6|;4 Ds(? 0[hZsKaDYԛV\f~1K~B&%gs\P^ izlȐw &/$OZA=<S[Ŏ4)U>nJŒDA(ӡouu_XãSh~saͫcN;YwgëȤAN=0ǢtQQ"8o]`579fknȄJt! 2sp1'f8MN۸9c h%S!1s0n,!_c!RJ@VY/h .ךNQPbO3pέ, -%s o\1LĴZckNͮdSSV5Z&$MbbZx?Dt4ȈXB¶Լ پd`,ЛN )`#.] darkaßם~OṾ1"NS1]1/$g\ep=,sG]noBi9RvRd L@d zL 8,0}s02'e9퇇AxQsX߁ +s2ZG`bMCN=ΙQPN|rh=8 ’ uTC ~Wb|#>~BUm &Ar}G$8B%$g׮ 8ayaLc!ߩz}tȵ$I8h[ZCiD[^QMVf`|C8 741|FBI[jОv99L2 j Aw:81%H AF e'ed/gqNmHBxԦaZѼ-\+1 4 ėCvF~j}قN>L \PehbZic0$۸IT%S7 >?,c,$eM1ivŗsz{^DG]R Q L~Y!I1r`7k|zV V6}0)L.'⯼9$>Ȉm 5 >onkbLeZFz;q oݞvjc19>ݎӈFI6"Cj+$EE~0o7ibRAL #M(k$Þ$.>d!fǴl t.7dz*[ґ.\P^;n=WF d4s4JC֚ !&Mo3 P  [OIQP+/o&d_@~ ť~+EVA⍋'^׏ dAC< =LF.9 oj{D(uӅN;s%'.eՑ$4)$~WIhv4&At+ MoCV`F_eEq|X^H1K$ڶZՖ#M%$1FjMcp (z_3Ht.\V` ḼT4]4L:k°;P;H3 nt ތ^B&hͰHߣCi:@c ~<u왦>5DYN5 B†Jw=dx-^BrQ|efByQVKvc0 9#ȂN7֟LJ-bW:辯dJniháu;"'mhىZNcQ #`Ũ*PT&?ሠ蜗#VSB(!4$4pm7cs.L].Ɇ&Jp/Ss ` fVaJ60syUNh +jhfkZd "D洃n͵#~ QFP{Q}j*0qkszЙBFO䆦/!m8>!.0XǰgtqRQVA8y&6n^6+)9M,&|#">al.f0%}uaRR +xNIB.~yzBL<3ru߫4;{ k$+)B"4UUY R_bh;)΀zRM Eo|}&A-T"$j^en !Z7&;gWK}µPxI4 qq%:W\e&aɌVOb$Do uAh:銇Y5G8"LY?Q[WbAd!gw׃*MSm@q~GTLF{aiA+#5CHS WhdZ&R)p$$c:ńa2uHJ-}qr=DCB 2H_LO4wl/Ng$Z 2IJ:ί >!g$vVRNU%Qa3nw^d|45CNeKa3Wj1Y "6XI$B5eN{S b:Xcv~D;ʄӥL=9.nx:2!BGN i5Hft5P˸,S3<_Nބ4M ͼP|q9 B".}Tqjp#j`D *bA:N tK8|R[E$+OBil'e ] *kt&]eW^8QC]7tbyF͵U6WG%O!@ݐ5"wXl+YPRkKD̒^>˝քyӋN)ل/54,[DkR3H}wmkWx$Cx"Ɍr`FD Xe뜎3S*Dmư?%2`41XE›#*0\sU_aib˜&3F6?vKu)xIg&&K#.ǧSxK- =/tlLm` x)sYjZ/i0+km x⚍'ל"T@j9"%qJk5n`JE+ F/S/K]u&4TD#~cױ`QXI=Y0u!2ޅW4Zb ()YEvg8ăI$§Δ4BFF9B88ʴ1S׵gێkG3_ubx!Vf qWW?CplwㆦY-ASt`NO;DsQ}ٙcGLB1QS!M40) |hhxamp>8j2v<[x$s0԰߁٘"UĵnK1JK8`FD{ M N |ٍu4'P e-u0׾8WЮ8+yV7N.)K[&VRYbA : NIQY4m3m:mYðdGsc:iX7Ԁ;I5 >Q:T;lQ]$\Z]*)uͮ[v d Dxxk2^KxoJ8-Q5?ǑBa.^a5]51OM`8⻒yZ)IntҒh d IC؍̳U;+‰'ɜow:̬X-l-bѪ=Lzew̫|R*27.,?O@[m{fI^Rbujx22$05Cm=͹.e)^ٸ|OF!&#c&x"< =_~B]FR}BH^"a^F-H FgM g~INzYRTڑ–9G;Xyde QR"g//or浚X%F0t$ ֭{՜Ob,+c Ypx1M^txxO_O8,d 258! Ag1G #rmS#Jn.̬)HGGlʐ3qN:9S2=] |\>Vv}x*]\d4awy'4jHب=H,ua5;ZM`-DMXùDK Lx1CH!aeH)B$MmANƠAUkw )\vsCI8+{r 9/҅NU;: Up˒tKG(6A51h*N;{PjD1@s>E4:r "|u>cӗehpIIW@#%7ޘlʢ FjjF< &(iV@y8i)Gy 򄙮 ɸ~&sqOq:TR3T{&"&bOa9.;Hl.Ꙍ)5T1`  oVa*Z=tVN|/̫䅍3|g8•XLM+?ookDpCԏSsu ,ЧbjvrB'P[^ Stdhx9"JR4Z፴I+!с PTH?)q7`'(6Aļg`7FRUGd ,n^^@ x.~6S'K^.!zB9) v}KXj7*haׁ$䟖"vIJy$.6OKGU#pai,!/ jPӐ1Ne4O%g8ϊ1qI 1 UUM^x#l'/%DFtɲ~;ȟAjƺ =A˭pQ\xpβc: +{ejJ>2r]z< 9V~3#ұ, ]5$/PRNu7nH=.Z~y^mݐ;-:{:PUDZjlb #-q ×!HNW̃ '4\6%Q=]\`օHKtoXr'gݰiw^"4 kpGMbLI ƅX2ZK tDje?VЦԂeƊk2U _Zz0̭%AaϨ@, M[)r-,dis襃P*ư,n:MR'Tk`ĻŹh_Je~Ѻ;o־<["\ŽjpAgl4zElO4lb* :l(_Nc(2W(`nQ 5Ҙ|Q9BjuCxTM;kxLN>m~'n=2nHLmNq&Jl?1E,M> F0iRR<^C8m40 ,BNb秀{8$ǚ; 3qA{AѮefP0x9"ü^&$bg4+MmJlM5q_\4*+gL i[} /Nc*Fv0?UWbB]# K]?V 2'xQ,PW'qCK01~\Y 3|˦@ QE vG  *^ Fd*']x8dF Z-EN{^~ޫ(F*zoyєY!qӮpQt!@B#N@U&#Z "i0Y^YUg%OM!3mJa%X.VN'p!߰~ >l?5#0HJ8B1ld;8||hXS$\59/`)KPjZ \imkC 4Fpp]_nfvV fbPK`VAxQXyiGxg'y3K= F:G06m$$ $Ii7y'lbj ШBhꣁUH;z,QH瘁3 \&=vIBܽyx>D {N,LZ-QMhRɀA}X Yq@f$Lc\[;z$@gщ@xlnOpDć"`suFmZyCPa(B !D\$c}^x\&,748/a_y'0$ G'^1 s^$"HU`˯[Cy GN}mi>{IU@i)20ɒ#`5Y/`w ]$B-((p&F00ӴCv I2>m~ ӗS0BpV*a"l1qjmԒfCSViB!eI3GhV+SD 8q]\I..^(>wnQ# cd'ҵ:)Vf!͓zG4"Kq`LA:1 kD ӺN.,2N,ͨOp8qi 1I(Tx4=xT!N|5U9gdvÑ##z笍r&t'I,I,h`Nܧey?JWcpob: ? 5ܤ;%d13xACP:1:Z0_iiM&Fh2Sm/^s_WX:iňS|$5q: slXLTIØK&.Bw;C`0?Z(#5g] -qat&3"ۈU!\V'ZUiB!|sXCn!}χvz B+l3Mvs" ,媶jx 7mT%J ˔pӼ~/bQ쟇| q$&biY3KA=+BB`}E|5ԍmD&.AtmosYY+ZxK< A0xch o0Ov}F~oR #O1ѧڣC{yEZM)$T*v7/1#_p?31.?Fovo0,II !mB3%}ppP 4Ur5bSմbj2KHfd,!18 !$Qh@i$%qwaJ)^(i#Pb90lRyd|H Ǽ҄(%'" K-ѫ&(Mmx\lŢkpFџi)n!0&#Uo`V$pWa 6wǨAXN1FMΘ$M 94lOv#bS (EGIHZbgowaj"к̑{ MJ\l<~xQ?i9.`AK4A贺 Vj4hGI!#Z-cSB{R@XI(ZO/Mv x:#$sw$/ZaR>B8æ{zW`p90;.rg8=t о$`4֭%]pǶyGэ8jTEMj]g,A=9?Va|Th.,Y9 ಟ?їQU'=;R0Oi5'oVrչgpf Lh`(92o1sp3 3-Ƕ< <#&"rSy''2. A9Q?Vr?eH O0("gJhPx9d_AZ]QN0ZN"H W`_a>EG7d59$,SXkQϪu팛wLa!!sj&⸅>TÝx3|mgez\&(o<ړ7RQڽYԊaok?<2}Z]ZVA~@*Ā-S+MCr&ROiFWڠP|}nDO3uS~נb8Ex\Uicֶtg]tdه!]cŇ?A;I`(n3iDKYoZ"dF c#XفEb}7+:M7$ dѬ}H1rV' K2ƤpRL59D­? Ur6aH 8ROh>nʱLz0 {1ϲ´&TRwW97VI@GXE4 hnp:D2/>^əi^VBQ1͵8謝EMmwcgx;qk} iDXֲ 5)iɹ"Eg% `^{G3o~ lB`߃"=͔xRVfOຯbf9+i-@ҼCIЗ 6D3BX 3A-{Lùc9W0C1/T0oIӊ&;p0츘trC=L5_Ǎf,ߐćQs_*1JdL صtj_s n D vvs0_ͫ?ZVSi&(}Z?3d );dּ+=HDH uI4l VH&~LO,?M$n|Cf;.Do&~?pjGmeE"` rQHX΂NѸ #QU})jĭHpv7Ź^&\ߙCsP[['T9iF*1 ?P 8ycݰLp3> L;ɽaG%=ퟫMJ{(cu2,jjc!`IJfŲSG!04kgVuu'jIsuN}΋m si9K`V3:\ !N%B=$p 6bX]IqY"|t6 YgB[SIA8Z-ѯ?t$OCj7Q*5\=6ó|RUcC4Q i5-5iס"woaDhɷ@Fh^&2{ݒ'O1Hے D aИx/48 8eHm!D0$w\GG5S}#?Ҍ&p62ͩadwLG|E`|DۖԓXJ`a]6CMȘ´ 3ҤZLq:ܧ:?/i><,cM &M*n:Ha4ˇt4՝D Mnt&8f+'<soua*_]7&̎Y3sp;̪3pY& ǧvm Zsd=xȖSTP] %%nC?/>3mjryաLJH*.%8&"jEa!6vu_ `0K }#uHrߒ!Bhˤs5lzJ5)NٛBpMLdJ:2BSpvXӄo*QZ$M"OKHJ~HˤmM4 zNob帡f0UG0rևwUcek2G&w| KAnWXFNEhq JR1zkK!T}8l>INKv dS,تM F!a¨uh^qaijAhO6Hq ᔒ)PQfxqfDm$f1'ŪP:)uWqU:^_"Q٨ҘЍy H*sgbĞmb NLQŇ4 PR[ts\&/b1dOAsA$.><[i$0u}1}`rSly(i˧rbA$&l!#%փO8'WC_24/c@rR?Se0;$%nO=yc4{TiG'y L ѭT!> ChԓmD`s]9dF3a8XN{Y=ʲ7舠PF1Gl8vSfHѡ6F{䛒 h牅HӸAy 'ۛMK0/Y0'pg:Ȃ1h X;I"<"qՀM=2 0r4hΌBi*I]@,>e_ ZqO^wb|'ibaDɱGddRؓ܉MGQo3wTB-"`hP9# f#9ڃt%݋tS珍ESh̙PzD JȢM1tdW60ЈV p1S:>ۇ1̹> 2b2Tm?x?$!yC%3Zz~$" :k|LP\#q6LĠ$fIE~Sxd|ڤWAk\%I@R3e :Y^lS&U?>I.t]_rDa5`$6fꄳ@P'~.zY:`bɼSgzqA@2?"8fr^ ɨ n6}{ gLS4f6(Z,g|s=XFF+I#fYn9`D5cffDYRwn=B 4(X$,:Hmcr1'IU fg0OA2~a3@AK_pz`ݙY^~A8qOq 6ֈMBcKg!QR6wYS:1B4iѤ(k#H]DFX)q?Lͩ$U Qa 2U`lgj WKv$8h̸%FD)j >=Wᘡ5+_\~!1Jl*k)XU=;3b6|^ygy /8:3ˇ80RDiNPifcga }PF(6DgUhW X)`-Nb%NWX)}3WF A™l)9WooӃ`+%+Q\9glԳ}6gE:ڙT5g9CS萫xT'J)3f810f9K޷ h.f6"'˥%T3QC[ d/rAng~b"$3}q'e{VNYsVDP1"v hҮ͘mDh'Jt F@wX(=H;mD`h'J6ENZ9}WŽpjc3vpPZj(wdFEZj(L+yP6ehDHHRKLpjHщѶf2ޚZ-~i+Ռ3Z/XDZjkQ+cG©0#lkRKlwIs_햍a͚?gOHG0[CCdw6;Τ=C 7%R蠖.:doP."/wK--]3AH-r -AH~I ki_ GCFZZ.!_sAfMғeqmK-]$bn4-!iJ$֯l[v[(fL6$4藬IK-`m<#ЁAK_6֏ڤ)4?@(~\BlRKgEu[ߤ}Q6b-Ak3i)ji.9u^ KK ŶҮ ٔCJ*4w‰PŠ+-SBR&M*_ m&p jiIUG[uK׫hAXCyu kilPSǞA?AX ljjW/`{_cgADW:TPY%Ɏ92k 5h}P`{u[Ged{g.5iĪ;*s;v8몏l*5h}' 4G>g]] @5hMY[4W}\h3!Q* ZfNbDi0b8S>g+5+a\|8Vk <=HKEp3k"Opu*5h\E_3+WdL$Oܿm%/zXE_iK1^ykMu4:4h68K,ݗ.[_2qYJ1p%Ȼ~Xn"p+-ۘIĨ* )N+bRȭ|e?9 `0nWx땇Syy%IK1l{g Zy("*<_d~{Y@+ߗg-&}%fZwyrh@k 6|E-سLeTAWP{%S(笅R^#81"cÝcr 5 ?N[d6A3/nޙC-#@-kcDp?m10aPT@J(; b̧^ ֻMsdֻWw_8v HٹS Hv !;  1\pG:BwB0$s? RH"|T@B;6Д&-u@ctϦioK vP!icvHĘ+ C4PV2@nN?;0h˞&-e@WӴw.30(k%0$ v2Z;WapJ0JeܵS9ҲgNYcaؘ1VvJ.L3ؾ12  ceNA޴*q- :/w! sr1lBb'AC{ hc6 5I. R)4|ܰa;ǘ1/x@=23:}Æàa00FLa{Æ 37;!`#c lTc"\'I5hQ3ή<4H,7 =0@ x #bc;!!p'FHsdBaa,UmVFs-id>` j߾}1o>o02 coF+;1ŝ,Es0I%q׾'$-@+3hoҕ Fj6fX;̀RrWiТq$/L$#T cOq:896ی4ĝG4Qt܄"oɓrI ,g@M`/ӂN2< y\zՆGAy)lu "=h¼Cϓб8$ȣyy)㎓T$c#!󤤝P3sg[`AwY bXހ#IYh&3 ]XN4$$q DWlg;ı1QY&}Syy.]L#Z\cd1t4yJ ,$#І39$RI!#*AC9o:@xH{CV JςC쥄 h.P~,wH2#Jx !#nuHE ԌC$gAK,f*.qlJ ߂FZ O%kJzClCz$ϔ0;>dap J>AdFin[>ݴ$470\IJa5dII+"=f %ݒXRfErf}%h(i̒9-@krMJmh=o,Z šY,< gad0V"a(qH2TY׈YHfC4?$A*@I,:n(&#n֖nZAsvw4<T"x%ps"r%h92񻗯]"w?>m,<:/ !WK|y d2K^C1fV?taF:i ʵںgFאe7#.JrV EFJby|N_R|6wf>,>ϻpw٬:⚤N0v ֮q. ċ޵tLI4-,rqE I×0 %H!$t{%2fmP+|J2yp*ek.Vm Zȭ *Uar_%J;fYGƹFG ͮ*k ee5T&l^#dNTf^D?Dim}:hϣF|f]+c+If5jc [D\"; |qHDUL!ƍ%)LfJv~)sMl85@QRXC5ua+2,_hUa}aQ%3Ad}O|r3G`UZA j!,<}b,|Hf d Od=`5eP28):|EϦ>~֪_B2D "V:fAXŚFoU4>D(ݷ_W;]U+>"&9FWHxk$LѡW#옴6 ÝKɋ2 Zsrx/C]L?7Y$QM0z2Lj$jd1CMw[p++?5,RI? IkOfH\j8}2`L ׯ=$= Ca_?wʊA{&k|IEq$es0e}AkT.ϱOSƃVJ~H?Տ,(n))N?ej($G~H[MVlrG[)88;&', ykYǙ{V][ON1FXXL҃y {c~ \F2y-'+VYD%{H @sG6"ƍS'D"싐8LXuJZ(ygAsIevh_GL#Gjci<՗O]֯i4Sf=ccd.Lo4rm8qg};i `YT;ɡ͊G-Ny, E/_2琴/ZU1|8{HowoǿClrqqu&y+M֞k ŅLfR?$,!XhxN9(sNOۆ27_wo^ap YtYNL왕6wj'oEj?ǼcEx9jZ[l5"~r,,`m(b>9DgP;8_Pyp LQF0ؙC7,.487h(cF 9Ue˚C6G a* id#!0G9d$X̡qY`S245>He@V,݋{1W~ OۓGcldqO9R4#+({Ԃ̑ r9At=xNמ,0{$)2.)Ր,,ޣ`@STG'c<T0 + ab аݣ !pncxSK=G9\~'i$<xjHy)XJH?`mNȞk/-Gmqok]?.Yf'ĻVtwѝ֟Cwl[@xب6y&9x<БQ98a8nR49-FO-v}\BK5gDf%ơ9ڸ3|F/<531 > UO{=a|#,=cr¾Yk-ABG%.-+ /D~ M &({M욿P2?95&|m>'&ρ3km܌fH",k^߂0 _󉰞i4AkrЮt?UFACK|?£s0}|-.WE `_,|CPQ*jS˔gh~S> Mpk|mj?lyw,x%q-$AnR7  x5L%xTXӅ|*Y埞..-+-&BrpEM_CA2sK-:P!wGdӟCĢcԅ#_PFT1p#$1GOCH _.SΡաnG`&@T1Gq 3Ν >}a@] SU,[c) eKq$ҥeyl9|:,ߧqD"Y7H^b$8_kVc;5WuZES$McğE-\ZV:[QtG,쓜uۡ?֮:EZ5cKy>ODgiQ_.-+eZ(r^y7}Pʙ _2YfZ]Ki}_R@ӣUgIҢn<3ɠ9shW^"E13!%-N3??]$ωÿ?"?̥#v s ^^E19/E 1rf=e&Gxq͇:-2{{4ul;mۑ[m}hG8ÄڟK2ȂrftEGELSyqAv> ପY'|q%ӶD,"s#Hϡ~ab+ Ιr?Hs63(Ciٳ_Z@D+kriਟT:ϱV1Dxj |˷,sgB]貺o6$%r`=%3|oO_К<)pEVaCezIӢf'^β4r|tmrkfVz<k&-ɴPf8ʑCl.PS"+|l-<xs ?nLCOfY.-kq^-{q9wV&h+mL\",yP:pshqE(ʭa96I|cXIڻqてļl+m.hv X/EsȒ%T!EEp.B8S3@)Ӹ@ xZV/Xru+Zhu,6lr&sV0ɱ`g첺<qmpx痖H.0,*3Hs%Ll.e9wf&8O~_V[o@s4ؽdh)@s \e-ϑ+b)-6;Z,y;ȑWs%82jsW09Ut08g"g:.={ɟ咜 K~m9ھiHGМ nH՗_]sTЯXVK xZ˜WpD*6%(IM[X~_;ԧh|9hP!/oq:ϚzB3?fpu М J ^AN|x5Ʈc*7'\Z}4'hXs<2gRl6S {.-?zZ!##lxDi?zש*wP~!ߐ,>bϥy?Z-G}5>ȳgoRg:rB^bu(B4 _*{vDl¤B U)D0TC 1gۯSUh<K@4fӥyvzZIgwwТֳmP~З-7VXv@k٩XYAհ|vTXy62ʏ+gQqRt6Nł֦>BM}Uz*;:ȖXX(a&jάTj9_ {j M!wSmb߻9:c)?%tl;R !M=.,vxyg%)xxmLMkb:h[_ E{;v^7[;j0(鷩3k–_S7@Tl;]vyeo? 5!T7|dž MTl;O^ u2{}vfԥݘOQ@5s&n;iZ^24f,LKޙqStM?5\qLlSЪm_ 2u8dI}2?DK;7>Xl _IhAפF X֐^Xt+"xsm̡pkNOS}Е!JCHTY=d4_F5 ջ1@*@Ϩ Z{koq"*YkjҴ7aݒ}ΟQ!]mOКl}O,d:Ux9$\ߥ@0i Tm<8>qL4DAQRqQ݃reꃼm˜~/S8S~x$K x:.h G.|TKpjRZJ`A*|ːK,@blr]_X_p(t4aP뾌Gtw}A;SimN^iXZ^c= ֢ݸN[ _0i;Xt@/Yu1r-WII@f~lu+U/g~ V-vϧ*A ٽTz\ z[FkXM;VC場0g,?[Md𰓖][e\ 5ZheW1Wլ? Z47AEs2XP-^-ۋոUw22j8dji8__~[m!go6qP ul5e%ehy!k2~er ~5_~ՃlwS4nQMeJF2,2 ]h9XzZ{uT~`cζͻW ]qfd.[6.[Ճ#e,?K68,j<hzgw;-`BըZqm0x54+jꃤT`ֱL֦瀀;h9.?M  Pj]"lXqK  |1q} Ӭm6JnkT%M,' մ{VS@WsiA}ׅ/[y!Ϧl]t W$.kly5*|v>vgC5w])wS.fN\Y=YIŴĵ52?<vt{XF̥K1QhEv$wK(J$"rNbp5kAZ[pJ XB[f=$,C mGZ@Q9t#G ڻnTf) H=Nz9I*uҤ5DM5:GVdS_3imZ]߯XbyF'ͳр{m&]PAܚtp uHnA*tf5CCD8BĀpXEgA5-X~hHŎuvG )GkwEԵ$Z,WPͅPVsh)xkPw/igY% 򃃃+6;@m) Z}دLSGFiWrLm: ;i.\:.θZ}bO?]՝B^q5cIœ& oqرSRsر==v&;X#Pi uԎIl %{D&f3dz GNotZa ;&:Τ6]UXq1,űܜ bӍG4P[Ce-dm@Ivc }^HagAELh $LUޝ}wύ=kWC&t~͵ڻgaX)рWΤR7 n9yd _za|Gcc-/++TV\rjF;.lw- L1&G]L6h LL*,UEL;Y 6ܽ|mmgxБQWR{=|&7 n@CPk2*+*ͫDR" uIj*^ü+fGP%'?øwo&R~HB:[4Yp2o7PnIH?cMa2^\,TWRU-;;i/Cܵk(ȤP$ݚ6Pmɏm\YEil@ߕa@WlOG3geepUEWXc_{4lОW:+26֬"K%ݓ3 .U󘈯X*sYKULVdeȺ?:A{(um ϢR:(z|qELйsi֊j'錹+2oN2h`7:ᘫHr_/m,-dV Lm*o&Ғ Df 5glHu6K~/ u=l #:X]ΠҢk).K،Uwٕ6ϳ>mSRCMU#wX{#. Xnlj`}RԓL[4̡yTpA~s-jf)5%7WoiUN!xB!}A{*TP$,-]:4 '64wY-b\v)ӢbLZĥyß]0%EnNaQ30J Zl.Nj,*2kIJrL>)H`j ňa`94GEL2gdmM!W 5m}@Ki~5(Y:0^HYAfeqe7̡Iv|v dmM)]Vi%Β QvfS1bPASL-]:P9С e ĻT0H)+&+*%zmrdjB^riЃAqzr;OV4[)2EV֥!vpiJ48K6hAڠ)E;`^}9CSOGy=iK'&j2)HwVҌ"YA3h jB 43ng !zA@e/i 49K2h_Af jl| B&.Ң.nz ZW=u@뵊Jfh~եuZT$gZ%5myݽ hDܽE24ߔY/i\M_뢬t*r?Q4ݔ/iX;uivmǠmuٺ ęzy[MG 뢨AIkJ3deNf~nidnPMf?G_xT64?Y' aMLs,i5XE"mqm]4]sU\LjZ\4+gQCZT*Ț'/v6%&,ڒ/Ӿ0,b^?FmqgqaGp]**pάT;iwH#_/ojw՞ Ý1д-QLCa_uzk8tiU>ǜ<輱ЌISJk7ʝ9AଫSIZovCMq;7vs;.Acw'c]Z玗pԴCwJVY(@oI lھ]|6nub&_94G3R:zڈݾV$DZ=׍kj#zRgPVɞ9ΠEqr>{?[.Pf֭ՄاmܺN /oMx~WY5 Km3ޫCEmF@[A9x mYlnݸV{6]rcc5~G+Pv k;m+}VRj%& %z۾ڌZֶn.7V{u(6yoM@j 4U'J _Ba0lӂ&VrB ۼu՞ۿ ?ŝ.U?wPvPx{V(AsټԷT1Rj<|3+hC`e4EJSqV,byXâAOw&6.ZO&2Ċs ܼy8u(-K nN=AU{\t)TVN_#iL|mݙZO(6PөdpvqaU6|8.?׃΅se@ >\K-ÇLTQ'4I XG3 7@-"5qmAbgX;+1ϐ @|#,?*LBmPcb:fe6&9*Ha$p8&?:LmF9OWΜqvվ U ,R?[UVqfwEL{xMyn֠|KuoUrcn'ϼ@%c5\{rﰵ9(û't7Zθb` ?tuwNo^.Z7yt[Pag$dփ&7[89ܒwsɥ/b)lHWKp$j24L=A Ja:zQk)iQLN&7ZU5Ad9l8(hktbfs~nG_jG}eI{4F|TjQ{#?uֵcy)T{5dKoe.4?lL6ټ@hήۤTCv@~\jQ7&>RI"S|پ4tkioT#4kWGytO,lcin92)hZ<'83&ͣ%)ou^=|ڕ䍁6nE*f"褁Bm݂Q=Ǻ;omH٤mt3 0z#,D iY<(m@Ѡ55oS !$O@(.l+ci?#_CqwmWc7A ؼ6P UMSOچ)3h) F{J/ǟqZ~ٸYXU|e)Ih)Ԧ m N .p6YG=Ş`3h#S6.~C= Z[bzAQFͣ6A(5H|J(j;VxT8!;hgO;*SB<hĂf>%)>b}6P[TT*Z,QBt/ϤhFzmӆ..h[BȶA=E@eo4;F7EF-y6.R*$nf!s QT%]O6fQ*LxV3hQfn-m2P<;ٽhBvB5&"toZw`MsoãG$]a7m)nH}voUwa Q_MuSz@yVb 6J}wj5uw_YL }>`V|ۺZ]4wANZs}1"ֿ)BJ0pYȗQڏ.?Ƣog嬴{i'SH}H ]@U'W1pf *[ xng2h~ÖT(h"N*!3$HXoY~fBoRkmv;iUR|͜yW͊jW(!aD|*?7sWarMu\AF̙֨2;h-t>G#$9JhmvICmҟRaHm& ®<G9 v~]ڻ f+%밅-5tT"̀`SW;gҞ.ٽh ӥ6gf%ho&Uq}ufLMԥ56ѶhOOpܤjdj7}?SFMV~"Eb{=IA\CY[KY}̙&sHmF51T/ii.M^zsp`} ŚjB^.zK{(}3r6u h\1총vxdUK/CK=N,7{uؿ7a}j;'H N$zhc*?nM`}~ĢSv$pMjCV9}B^k[S'Lmo"fKhN:'0\4!ڛJ0@m;b)ic;P:fM3ԀqS%k뱔?<{uhN  z Xh4P ~Ϯ;e= 1 GtJ^jדL:ؚܵ ?b]gȍhQhXO+'O8pڻ:{]G{R?k= (40>yrgm,c ?tj^*!t=u͵Юz(jk嚓_쵝Zc'ƌ6-Ւw9:U'e1NnM h6\1flF)9?i'ށ欋ak0NVZO_qR3}'i$ 70:O.cI:@C=4.8SGF5n_(~PdW /ihqdָMyq^g\~3YMFs GuTfV5 Tegi{V4HQIצ0Ӳ:gǑC|(%hf8x5KZڡOݳ1YkYx~EQ38!ъvGU4g3]GVYRfߛJڥu;$g.G+Ask\޻UftZuq gǃޗfdTGXq9c-ZG.vO+^hdnߪ{fdp~ޑdȌl=tZe?k`C9`WƷtjf\UJ|+;2|9{"4{6PgCe:F ~ =ͨ5 |Pac+3[h6оK;ʎ j=Eܹ\5IZ`Qjkr`׹i/ٍ)orX7 0*ܘt:84oAs<xUOF[E`: _jnB,Uz>!bB"m_RLKy7v3,*[¡y S?Ysׯ2j.k}{Z;;P/KZL)=zLɐ`ҟ$gfO.QHT]i<ͱKC:^%[[)ϞnW:ߑȔu2| ̭o0:6R}qyM:XP?kМU nJA *rp C(XDA st}$\ Azp(sSmw0D*16{URiм]?1 VjⴅU`tF5h6J 'r0c/squ</QcBl8 Sw<]Ir(0 mwhş0/D׃IGOһa{Ɩkc (`Nme(* s&ׯ֯Cܕ.sx.{J k=A[!. }0Q8j7sM `3"ozGfi8 e|7,ypy̎,+DdtмO覭-uHɪX#g޼Mh'_, XoFV7m҅M YOL23`joxg0/?ԁݖ~/&Ρyۏ| Da/d]8bh[|wl`"0V7q=f3?g[)Y$^1VvS~D;.orSBjmeA&~NEqOlAթhVrQav*$`xZH SD~!AA"3vS4~ը'mj ?ժ6N1$q *4K<i'۾4 \Sӝ Nݭ|Sі_p_H,h@WWNo=eZ[x0M`S&DV_(!S"HX-vE[ O埒:gn)I 1u(QD;Āw%Be*!X%j(d|dBM|Joe؊h]Hu9z_|Sp2N {ĴRCƐN.,ɢ8㩍͍ADH(R({0rʆzُJ>[OJڽǖG%SRDYZ1* |ʌ[ %IBUkh4@Sl)$mN[;C[C ]RK;6GrS3:氐3U-t\HQeyB'֧,hrÑ~Kt*| %\"2FQK M8o?`N<["B#)&|5[TT"sҪYEq!{?dG9R8wL $]UPwR:ho;9}5/bŋlñ hC6SKO+/]Ŋu~ngKe\$K/ҩ+.VNsן!؟]sjL_iHAv^:24~Ӹ UWe ۟3I.J@?AOg>T!)-|aimh0(2((U%7iR2J;] n𻿰QiDMa` C\ _b|7 JbWΈ'8Mm%E8 \R Yj &bzR@sC'VvEjwFXIBk]/BSQ@,W4*?j6qQx| heR2U%Tr+,b/} BQH%'L4hn5§[W0^ `l/hHnQb?mo%4bw@R!_): ثc.1rT úSi8w|T#dU6.ZyW5 YTzD{lJRT3OD:c`f*^ {ʿsp&49q~ 7bLQ(?†5Bo97wYCM9$R?* |m %yS9.\Խ^M kvjv:1aK"ΝmF,[7{+8ݑlf[3{ks7wиta!4³!aC3`l=<|4酵\{ Գ)2a:qlAdL޼. c}|h | XC!fIGЂGLTco<:WxtOA33+(aOs6s{^vS4dqn_`sn0pV3/rBرY|s"6عQHY?ܜ CD8Ռ'C^0f Es6dXŽ̦5S.0uh?K͎)MkqGs fV-؏_H’-A@G5P<4>I2LP(5HҁfvP1-hoư/TIz.U@sۣ_v %W\sYGD)Y l;`Nj&sRij5Syp|fSQ:,h|ӵ>0| f i 6Sh3X#-lm9 &M=ݜhOLDD dw8׈}%9>~]lֳFUnvYy4tmsǏ_q,V c<}Lx#=> @|+O>8$s!s"κTlKj\yJ87RTMN PaۡCegRcQdi pjC`U2C<ӆJ ⬲KU3^l!nďl=iСA c&$"JܐLCu?%6cJigҠ%WN:@ &Pr48&421#0@>?Y'#hz 5q!\5ƫMf<celU*FaUMg]hRevxd{sCRMǿ]s[p+ڐL'xYr:I<[L.Ya1wqVDG[B0b#bS N\𨌩Y 9iYx[(^ ңvӑa~NX!ZaMv#+1Q✥h4t{Š@]q"cᅄb­BW+-PH!|8zBէ6g)Zk$ ʍ8(BAr}Ebb)b}PwRTMTo߬1DNX!W( #SQTb^Sf֗jR4EZ"nqPwX3 " cң' @rz{9s35U[ii9hq}Vltpۉ(?k:h]`v`+._Qeru+A+ɉogdк*?)v&4aE.E9䃚N\Ӂ&xueb݉$2FMSj%2pƃf}q&{ &|4cٗZN Yi>Ԕ;oV1+'ZrgAf?@3}ϩի^j:4؅u'KzҴb+u{:+2lrj}/;KGL4;j5ډga; gWhsAR:/tiߥL|3jY?7xԌaO:4skgfȄ'&8g72a0ڟemYiS )^͂YԞ/*NK:]rmzjȌ1@&f Ԫ2̺i +3a 0Uv_b1W35DnZ Q֔јeha}t)ifgvYU-3k|ɵڑ3k0;Lȑ ZV W%3'm? ehtq0w geuYXjK nHEάDVfjĀ9⬾)mffk)™eVDWV-̭|My*]}@2tUm0ZBqV秩<W6ܱ2|Et|j'Ye[{8dcC75_{Q OQw@B>R3*;B-Y^$/6bǍe΄n D;W{[i>VhwP{SwUeBBCΪ*a_7 u_쨶vmpVUUh+no z>Y_Z1g@{'K㠑k#b,CB44ĊXKu[c4+aAӠ9 tWSuR;1 K:IZKSSuuuyyGR;0 ghAӤi4i4-4 &MIӢAӤi4i4-4 &MIӢAӤi4i4-4 Zʐ֦UAKiZD֡A󚴠פh4ϥAӢAӢAӢEEEMMM  -4-4-4-Z4hZ4hZhдhдhдhѠiѠiѠiѢAӢAӢEEEEMM   -4-4-Z4hZ4hZ4hZhдhдhѠiѠiѠiѢAӢAӢAӢEEEMMM  -4-4-4-Z4hZ4hZhдhдhдhѠiIyR铌> IENDB`plugins/limit-login-attempts-reloaded/assets/css/images/ip-min.png000064400000035207147176754540021356 0ustar00PNG  IHDRJ NtEXtSoftwareAdobe ImageReadyqe<PLTE*/@bdfv䯱gjr⩮[`p\m]EIXqie݊tdz]bp~DIX|`oX؁3DUkJzncS^ڌQVdwcs㐕{_ZhxlhlyCHX[ja}xz}]bo^nuw|y墤WXؔ_ۂtdޝ{auXFl|_cphZpsw7i֠‵WL|VƨգP[R9` [ÒShNjE쓀YȤm5Z.4X  _SIkƷAN#'_GSք+_x}on G8`դ[<R9`U6a!%z{KXmT[<%63򱆖7y)&3BlSհ褲V tgb1ܗ iq6'} -p)fҾFE%E> dڈeO6`gV+2j׷pJƛGae倕 ìU lȌ#Y8g`<-f`! 9`9 &#s%0el~Yl2w-#/iDkbycY%4 xkZ $c m3v e,#l2K|BeTeeXކF!9:/yb2xCÍ>1U8iv|`n_uUQx޶n3g{ソ p^83ԬϦq|a1DSg|ꩧp?'/̝uګ^/,:bJe:ޏfd |P6#he>>Kz*xlF)S!20sFy/jA@Y|ʀ&24}Lgy1\vl3)#G!؎m~f6w_;Q }AO=3(+#2Y}2!| =s5T#ϗS.k ;vn&pi$yL`^VV& %Yh1I&K$&-Q (-}04mvKp;aDGx!`$2׷TnxLp}CNA_Zm>+?o!QCbTARL ɖR8 È+E,m~ 2l/^Ľ` 1[FH`@@>Q AtaP̿  Y $C PKc0 qK!"J<. A # 0HΖ`P0h !_dR:_$-]'m'388 D,=}Qx]+tA0 ~3op dA ! ѲD "ap Q0 E- !.$`B !!lGW:&㟆?ei o5퓐o"t&"o 7M!EiX.|o cXd R BR8`oR.7 !@FD*!N"oN  H'‡ PRz'RB>|8H _}AZPX[PJqQB{H ڃAAhPv ]t8~WB 8Dp eB~xqq$'8>~\`aЏC2RB/` D#߃㌯]`d`sjIxWCKbEl&rk$/v=bDDB D@$;¾Kx@|PJL_ʮ0lA 1!%/(/KhKK@V9bdz0D7+ã> _h׈>rRI:B^.12Z#6 QD<hyǃ|VL-;xMuyr9j|  4 3 @Xƒ|< dtqB>pnE ׊AfAtTT_q ii+y`@u9`HNX=P AZ2PFt:@W@5Ń 0$`Q15НyfU1HE];k󇷔5F2L 0E$Y~Qcrď"MN'ɨ1!tvmi}'9)Lٴ1Շ JY Ax&]EPC:tR WT)"E(39;e޴}>)5{W8eT_!!aN)Bf3t 7SP KV΍,G}#+FǍ9] YFLyl7 y:(ޑM7@*"ˍn XIsCb5GH+opP& ?fϊ9Eccc`͊=Vb,Y p')&T3/٧WE󃱃H  s~p0)6)3.Za?6IÎ ȋe! $ c14Hu}EӌIC$d`IbQ ;C÷~kklDY6a$"QrhãhsgdҔDb#c?E]fZm_ӁI Io&v>G͏G1Q3I$t霥 ydh9 P@1h a4d =%_'2)iB)W x!Ep(?|dh=!BnQF!8=hӈo͑ýd*kUS[6b wΙ!9ex=$~z!%9o1MhxxI5FW;\"fN䊆 %R&j`)ֳcxN_&#lꒈNZtj o1;w[_>,, A,\#jHR9w:Hj|rZos]7hPQ˓F0l}ؓ g*,DO" Lx=Y rqMiy\VdXaؓ'huB{0p )]È"ҰBB褩WԲ+pE5^XQX!]&{EaoBp]4Z(Gv!T"kVh{wUT4WfX&Ͱ~R'x4c4I^-" iW7ND\щ+;7xa͐fT*P, k4o""S x hGw I6oO3 QTẂȮ+Ti,aFGs'p G#+ YwҥP>ApO-z]ʉf9 ioΛWy3y̝Y_S`zNC*A+Wj_k1al=pR C[I$d#[=پn ZEUZ9ZҩK9m)3\[me-,Շ|]zD.ZvGWۺnuC #IQˈ2u֭Rl[X*+VvVe.[ 3!eEeyleGuMj*.,e E`D931xC0s۶bɖ 5n9uKJ*ljV{Už":ac.["9F҇%Sls%WgUV= DW!~Uc",A2t\K=., 1@8 2ƀުUW F@>)WAcc_S';J.x]M~x,U.YlH0=}|@ d;I!=^?Q#/kTbu\TĎKԐ6ؾU_c|1*yk1A4F6#^%Όb'Zb֧BCAGkso_Kw鷅k*-[kL,\(g(U@\ {.s|m"`t(>%f_sceN8r')VS<, ۴/7Jg`1ZJlZYŶhU56UYhcF o;e.1t+m)xgHl7(_ wYGɟ 9ɧEG)99odH_z }Pfw6w9ׁ^;E?g'-[X[b|X[Sijhu(@Cق{bI)v$od>S(ڥUBM]D*}{ &x9^gu(8MK4ĪAt3h~D;׍sw Ymh6+Ƕѫu_*)IX2Z)6ho}eh'zOw(G|MRZWw:գ%bG:$~cw|F U?lF0!Y hbÔ,+PGU|N]GxKIw76^moDAo ~j^rtz﷕jXJ9ݢaz+9u +2ڊ~w`%f|vHTxDjS+ؕ45y/z#mEylmlͻN>Z6i|]#^K[ZyqlӲuߔ݌r3\z8a<캃nO`*gV9F^OZ0܋H4 m.t鍺쿥q^OWNpGpX=mifݠjߟ{~|N^gdz5;&Ϳ 7']U%'LpGC0"%Np>뾭zV ps"<Kr?Tp83 86/5:2Je58`ـGs]uSq)Cyi벅t`P 9`/#R_l"o Quk=sܹfWVo p%Z/S/hSOm~jHya6lqb vRE}fo>>11>)x-hzvz"2ugR{҂lQ-XUz8 |ob{<ĕhn'&\dowr?{4fU ])PPX|A{|H; O,_mn_71hi)X퀵ȶ[[†K,lќrwX;9)(-eKL)8lZKX~v}WN5L4QVEz11LV ~L0HCwUr+nsu.&= i`2Qr/:$;bV=f^6$(7$Ac+ҶiB+K>3w ]Bގ?Jrf4)U+ x`/Y FcdewX3ihLu]@S&Vz೮o72iZJQlY䶱 07%oM_pQa1aZZlT?g݅ )))覤\ =%40]@=ޯ~f?;ׄˮ WB#{B/ C#P(D`Y˽i LXhzz4`hDDDyI9x H!Q^;%n [qWq@ZMU`#.ž\^]^>@"˓# f"  3qp]qCߪtbrrr%_P23 1}XFkfQNJijb mt3(kC :d̙vf2ɟz`T! 7t"w]!  8Je@ xX 33kgf lɔt,n,ec6(]N/(wiK6Zڒk!f';RTfGXXxM[=]-:%b+d`E6][YYY[Y{ kq'T$d? CYbx~5P:% *${@sj::*+`Hj~KRNج5ff̞O+A9芄?LY9 999#A;` 8 dȄ?nSz-<{ŶsDʟ~,H. YY7n0-GP;>:9=`"4$%4Or+R:slVtlRll`cA˂>N^y0 :z>D3ZhgIH bk`W!$6h<D p'a\yςIH3Z,m#T{t35vfIӾ'^$hIc$LG5zQZNwINU\#>b*XˢWַ"##Fۛo.]zQmBJ)NZYJL|dհdrL}b_EEϡ!4rhRt !S p( zd\[:OZJ;^"x5_b|P3g!*;KeJYRv<(jS_֫B]o P>;w+l;+9;ڏukė~{׶rd fSy㧳~† y$R ]LK(6uY LjfD8&P̾{^-u<[nV.#B:S;@?#`U:(!?:Mڜ VF9`(壙[33e.[N&V32ldBJ3? KbZ]^ekxUNMKSt^23^?z~c!|eh{CculVuG&* ܋nٻ ŪB)\5j;j,wcIOoߡGN*+`̊V,slk O¦kd_;L'}z;k)9/`sY񬐗-ƨd+|dNJsW,I\raM d@:rJ{ \=4], O<Ztާ3,'¼\r%?ɝ7Urz*ޟJS)(+0ͯy]~#XG\[/p#`0TS󖽹4]1wU:Oe'ND]]]/{ta|ZϙXīr먀 ^aZTukܪ5RnU+,h 93Y78NoݪOB<* dtA}nDY4Z,kwu>CmHY,}n^ҀTU kk"% ؑWC= u"#k>0=^"6wm&ۢzĖSOoT)96}7;h"|N^a {߬~>4}|Rqt=ZM)SF' khW4jV{ݯdxSM qcE{Φ9^o֭@wλf&loqd_[~vF`qF,0O`dߗB< je_}CMl_օzb}S n𫺸OW zLAAkE]Xg`Lٸ&ʱ0 v⠌>f\f(l/tZ7CɌN󼌁(reOᾳS vHa~sI(7mT͌ ;FsR ]aCqqqTTp4I 06|^?B$X?ڂ|ULFk@[Fϥ!ӽ]W_&KKF`1 [M&uJƍ# .vߒHFj.#/}|`.0s္p\8`.0s္p\8`.0 s္p\8`.0 s္p\8`.0 s္p\8`.0 ̅怹p\8`.0 ̅怹p\8`.0 ̅怹p\8`.0 ̅s\8`.0 ̅s\8`.0 ̅s9`.0 ̅s9`.0 E} ߻ IENDB`plugins/limit-login-attempts-reloaded/assets/css/images/like-min.png000064400000003352147176754540021666 0ustar00PNG  IHDRИtEXtSoftwareAdobe ImageReadyqe<kPLTE=356"<9'7#8787;S()ߩp4~6D, Ս(/5ߩ4Ԍ!69%7.Ԍ)<ڛ6,9+":9aTٚ*)b657~7<29/ۜB40G-%8 ;2ڛ4$E5 "p;;8F7:'E"1TytRNSTIDATx_@'"ІQZ @[Ppo J/w'yzy.w@Y@ A1שJ&5M>a^i*;tJAFMF̬ 0SeS2;WM(k.Tƪ^ d"zdC%4RFEɠnؗ\K_ +^>(lAU7&Aso 9Aw {ؗ{ACᆢzA+0z  Wj@ZP1JǠH8ԣHiBz9kv*Ndʚ###D. rQ I H:V@DQZ@lHd@60RBR*rJd$ Ue]) "<*&@4ɑ^HIy~^@s ? Z@ZI$ YгᄓePxk0%[D.i3rdxJ4P7\@g\ˀ\p<@I""қ\0j]&_29';;G`eH2 n0`*p56q]DWUF] H@kceX@&x5;V^P^qlw l|ahtT:򁺒DZc[z@&9–.P?D:,dZcYI6ȔPBg&m L(;[zT(RPP4T;ݩjL gAThM D\C9@~pOP ~Y}ŠtFWAiL DӭC"ȫzN=@BhI @62>,"1wUχf۠T 4X 4xȘ-tZe @Bo%his\e@s\ky%pUk g,Ǻw_V5Fq d6NJq|tm^8hn$28~5;9h8Xb9l~gipU R)u}*8lUdۓIFGOb+-1IC6IENDB`plugins/limit-login-attempts-reloaded/assets/css/images/logo-llap.png000064400000011733147176754540022051 0ustar00PNG  IHDR5TY pHYs  sRGBgAMA apIDATx]rGΪdθ5 IfqƆ0/B`Hq' 8.VkzcpeC-@؋4̬@r(1LuuueoU F'Oy|aEyGQ 5j8\DZ:hL|ЛǭFF. $ `#zT!&d5j8&$  >F!H37d?n7Pƌc*u|V P1 >Dp ~95aLD 1ح1'5GXa]CGPc  Dνr7D25f# ,THg%R۟JhZCVf`N"Y_Hؗ &5f S0R=w2_[h"xPJYX ͹hy"UWg]h!:}&!zQz·>\~0S?YuRB,<1Vu >Djb YŽDڹbPg8=ڂ`y  q\@Z7( 81HQӌ* E.޳B~כS.P;*D(*&=fjʏ$>!5jCbkoI{7SHl}Y9?֛X^-.\Dζm: QXܜz!3WI2O#RmwZ S{;jL6q< яq4a&Ģ`}lD\Gzb) RUoAZ|H]K W PWC UD㡡eX6-\<Ӵ.NuAD;=3JY*oCQTw nĸ4z܇ñuG{M2?@(rM:Z3@LLF=&DrA|LũO0̾soH7+jhLNuaYx>`ad~ hMe -~X)>d>HErF$#3(3TČEi>AEoqghˈ# XOuhGo|o5'SE~$r-hA+c$"D<Ί%{zReDxVbZ\PE[EU_x#RƗZNN~B JsY> gf e]E"bAl3V)m2Ը:*9NV2+Aq="[v "Yv +/ѤEei7v \%yĖc!L~2&EJpNGe-gdv1iG@TrCKNW!9/ 2+˰WQ&b(c@h۟BZ^w`\; (LۨSz;=)7D36 Wtf}l?SM /q'3meuX`I$_a6џ]JMMoQԨ )ުutd#sEo1v| uL\DjQ:T^n ˚@5,[ KPN)q˜w#92֐_}yLc>lm40GNޕ| Dl`Y oA]\wy{yR; S?mv ,7M}JW@T0 D`D2sdH^E-cHEIzWw3Na .^|䭬 mٕi(h._:D>\|t}aǠs i^c(ȊIf}LfI"G p4:ѪtU }U:)OIyFO6ں#}'IWStuig6Mq|}B%]etH,']|l `47 LΛ;CڧÎ8v~b?rˁZrg^a•D& s(˩VqK[P<|/U7Fz]VOH-EڲkDže~L4)q{l{(Wyus~XD:){RZ[ WׂՃA5~"[Y-1DhL Av[TG;nccz&沍xHyV;q|Y/{9{J1sm}v(L =cfu!c9Ϊ՞m}}p|c䎭-?wg0 sHˣDE8ʵJyTjԻ'!|G֫йc"kOQt%SAGwJ+)XUvBލVGAtY*g/Dl1>T0&3iB&Ǔ2dc8MޅSZ~܁}wCT'=n۝V'<㫋}>&*)OMeLۨ~"_Ia/h JXJ綑&YK#HÉ,;VDZNL/Yt VW#R-Nh qYd^ m?/ GlgγR]\EܳZ;T&\0xly1msI'WTL<^=(}#[j}9wd#0m[S/6ԃ~]^3>du"+"q  fic虅N`ŇDdA߈uwKPzVubL/u gP ݶ2:sgE"=+ֳJYA ЁmD }^sDz ^xŻ՜k4O.9R&zr>0O8- ~c"$~+8O,*o*Nbn@J6ZFm/e/'#,?@]١H| G%$UdDTZ Y(rWte\rɜ!6s*ǂIz&1DǴ'<%ANOڟwˈDGzE4(azw>%urBD$n&%,e5]ipn@団Bcx+hC!% '0ӡܮY}ۉx~G9:zMM;,k =(OӉX2L3aۆ7m;s,a@H7HA6wQ v|^q1?5G2r)Z4\c&+sɴ1I4 GiT>79aD┅aḻ'm3T>jKJ|;O}s\NOlQsnǖ1&EcX|,iZmyQٶH^f&oɞKμƞ>ۥW>:wj#Ml3 WGB$nF B9Zk.P3,sN5jL "Dy|PK3EЊoc8 e/ )z_DUhk!yMp{k@u~ܱy3Jj a*E5F2Ge9S0"UhSqE5#zмih9F7-%ʹp5tɍ5j &:"mwHzRZlGDOt^1vg6}>Z>BZ>TsdsOjԘE ;rIENDB`plugins/limit-login-attempts-reloaded/assets/css/images/micro-cloud-bg.webp000064400000072020147176754540023133 0ustar00RIFFtWEBPVP8X WALPHvP۶6 A b @a20A>Ax:x֎ a?RւzwS ϴ8[]]y@TsoL-?<~_p}~eڂsq[}kF^kV^}*5?3/y)w|O[SCY3u+wpkk*kn-?gf^F=x } ˕M|)?OW4gjyJL>^Eiʷr} kl>_*%\g"SN?^g|z=K^?4K[%?g)c^Ps S%??_?Q3|RI@ _7_?~_o=%*%O;KϟKR}뺮}׍쟺u'K[/ٷ ~___+_oVP8 ldP*X>@K#! in_?t+#7>wivA5&m2j-e5Tdx[E Mv.dRkp ]5T\ !mA U& U&m2j5hACUIE Mv.dRkp ]■CtgY$1o؂qKh|*F\on[@:vpc!up 0$#QoB v.d[E h$QW2j5h-*^ΒtN)m3 G -LVLE (S;A Uqr4݀ I W󣼀CUIE n0vP]5fuT;ɮDIbAA8\!9] RkVqrעi6XWD+]YS;|U MtD5P r !j0FaRpQxdԘ`d!BLCQmA_mp ƣuabv,)oR XXbdճ? #HHR"%ܵ΋ ںp \8Rkp ]=Γ{nZU 'Fn ߡ2/q& - .W^Bs U&m*U&m2j-6.i:* v٫^ hACU[ і^H2jl]5TDFCUISx'̂MvAlD5T_FԚ)m\ % 'E\ ! ۖp mp0U\Y5T1[mYqKhPCUI`םH K^ACcR_5R^0j5 ʞE©CUIOp ]lqKhAg+z"w{kykV_mASvv CPػN)wRfuT\ !wd'ow-z@~!5T~)fRA&Ad<ҽ~݂p j5i 2j5cO Q[EuT\ !1akrsv> 'EèCԼ諄5T\?@eGP(ACUIE P:UnܸԚ 65/% ҆.fMp Jgٔ^3^qKhrעdRkp6˪T]NimIuW;_A U&m D5T苘{m2pگ1"^qX벷Wiz7-|}o}f=̖q1X5T\!E\ 5T\ !e\!9h~8CV)qRעdٯ[E KhA`9Tj5hӒň:UpmW2jy.=FZB'^̹2 wj? ơ58_ ^B8 /Rkp ] _ #ZAUOMv,_b p$QW2jH.bS`CbA88֖p ] iNV3vL gU P[w\8CUIL%(XX:lZ\ !wU&x8AGk'0S{^ARbkp DR.+ 5̶5hj5jSFêׅ*A|p ]5TVT=7ۗ#[Ir c(5[V.dRltwej5c5n%E\ עd?5ۤ j=37[Eha5T{rf7-!;VDKum2j5hACUJfI5TncsYp!U7qKhACUIۑ>_U&m/Z!dz;\!9l̂qLc.(uT\!y Rm\ $']z ע,mϰSxYE]}kW2$VN'\ ۆ;_賁kpodRkp ]Ko^/i:*A XXl\Ԛ^aFf+%\ !,Dk^UY)Jx\K\5WIc&dRk̀nfA6> *]':OkgrעdRkp ]5hu諃X: 4//bR:qKhKa Z\^ua-w+>jy'ѣI'! پ(%pz*ݮjOaR٫R g\ ɮ #j7Q[m} TڮdRk3&+)mNa~_Tmk-dg5 j$QW2_[E {r*wDԶ$A Tػ@0q@i)994W1.fp!ԃS5ߞ;W[8RkFjp~~+7-y%]65&m2^fkPBA XXEcE\ ם h1ϚTcFt}-E:}VCRk28Y*WUgȢd:! *|-z*ci/ >[\1lWm{S尌R'Y=蘖ZdRktD+m38ۗU&@΄Kh@yQA8r޹%E[L<-ϰSK8萒gbMv!![܅cz*! YGD.<-ED:s]:U/ZFa(%L0! U&m}AD͏znm pIf 6|7و2jJrם53|諄ѾQ&m2jt Hmݰo'܆,kU6o Eԝ&m1kA@^$mp >NA{|Rk񦝳Ԛ]LMp ޒ t) ۙ/-z3RE|Rkp[!RkQD$8$d_.e0p_LEvMN)N o;'Mv٣6lPЊ kW2_.d\"IEmi:,%, =YN -zڐ0BH!m]CUI+_QRl7kmIa&m]Ronh1qk΅b~duT:'y6PUIE[j5cH!,Mvڵ2dhTCUIU6?p V)pz*A U @ORua}]%H!A/MI.uOkE U&! m2_ VpIW2js]K5h7cC ShjN)m2jt򊸬u諄/"buT33ۖaU 3^`V!p iQ0R.CUK}0)o jEJ;d2jY)ؘ?;sG{m2j5 ؇ ?R(hz\P0NZ5w l1 1:dj5T*(0JgZ'R.+Bh8ACUIE Mv.+z*A XX\%qFjWKib ɤ kW:/8m|d39WkY !kK,R.eH_ U&R/[RkhjP3SE[*׷ h`k 0Jg>ZU Mv.lA U&Oۖf&/p ]\!G6jo[m4XAƟW㥶o+z*-H sKm!mA U&m'+ZdRkW yJ]"UI^vDV@!ڈq@o VD=L".l5/-z'qXVtv :SM#0iv YÄY0qKh5r2np ]v?j5D&یksRkծע㪤m-/8Ax-Lt.d.CUIE5{mdr'[EX!;Ǚ`P?Xj5 fpz+2vA%\sh'5T:5UŐ `=H a؂qKhu@ [EQB^rqEdRkm8ZU[o\ ע'A5,gpW l"ۖgfm1-5Tn[JuTv/DE\3B9A8Yd[E Lju;b -V-z*A U&"a;8@#eOqo;5h7cDYZ.zPN^`W/|2jSq諄&^}j v\cKn&BuTD:OE^a[ 9.] m}Di( > U&ʊ*lv)ShA~1D1lA U&mku1Յ[Ej= pjو2Ez U&g;N*ED:0`xo]Vpd-O鋄8,@:U ԸuI'U.dעW@`p ]i !I-z@1u6n6mH+bbB!zvil-A U&+G!s"ݓi` 0N)m_}]afqKhTj5{=]g1Ͷj^)t@`|}8ꩍrqKqRkp2l]' h \ !CqKhAhAC` 4]Y [E g₋(+mHSIiW^ArעdR{^F1nZp\ #j:Mw*XbpLm]ZD0*ɶN)mMsRkpp6٣{SESz3S߈AC5T\ !mA Z'U LCQn(!mrעd[AQ[E٨Omm{*A/mMv.d@!_} ڈ$;tZc77'H1rרtKa URbI6p 5rۧrעpg<-A&բ}lgn)in`VV`2)5T~#Rڵ/-ɣ&A U&j g\ !  Dp!"%,^aH!,M)RעdYW8;U ƻY)-A U&  1wp Rע#39OT:MvCF@ϧv GkumH一 CU7,4%Et#7t$߼3_ ɜkW|hj5~a2j5qRjpI`W lEc;|U5vvpj.d^|h6|u諎|~0/̍tn>B07Fob':γ.L c~m2jlhqXOCUH 5T;ɮE[y@ѫjMŹkѾq]N Ò'֡CL3upiv S쁿 {?ZMot.)md5hKa؊SE\ !8?mA ]z]%VHk&A U1nkRA.!Mm=7ڨls2P/=ɋ?qL5T>mv ?7[mqՅ[EcPMyn[1W3pn5'Xv=v/xRk5аW*-^"A8pod*@Jh +#} iILW Vu(9.S=spIQnZU]Q6 tM-QWb ,R:w.tat8"*,$|rbpbyjDKmo-z*A U&m2j];VmFo-tM_2j7CZ nөķۄGDO Gο!=Rkp 01w=?a T k[d*=e;ym1N)jNkIEL/mpn_-C[[9]ImphACUI01A TMv. `\ U#83ڀ7| A X^rS]`̵&)j?z*~鞢GUIE y,ZU&wƔպK^r[ vԋm+zD4˚pqX];pdqRlA8G_|$,R.8x Lg IyXXc5T[\ P?Xv9vn/iUIs ǔ VU&mq` 8|YT\-uTj}5UŐCkRn+z3RlZU(?] 1 l23^\{dq'ȫ`6d){}n & m/Ɲ[V*kWMg9Jk24͌^o52بapv1#hA ̕5&jDx^aGNE\V7TE\ 6Z]#/ p?vzgKi{rעEc:nxB!\)t)mZdȌ?m2jdؼ0mvRL:\SZ9Km40>gym9*%I7e[ȧ^BvACUN-EuU&A5TŦ0 lop02*A U&[#zlPyw24N)M+!>τ9'xPqKhnkH-A U&lС:FG&>ZU3, NDٲkcyz.j[mj:g:ɯ3[6ikW2j,wF3Efw:j5{\UmZԈv1C.}i㹝(tKaըsf\ !mPb_W2elj)-`Y|$uT(CUI*!o f|-ꡃU Mve.{d-B 5$ rj:M}ok/9w2X} :aW>j5hACUJrGdbbCxgCUId":x >]߃ ^`]'I_`#0sjz*A U&N"u}ȑ1wkp iEcטET`ZEIL!mA U&6"dW6}k]uSx' Nd|Rkp ]VJIĴ$a5`2 6DR!RkpHgc@p ٵ&!M폃 u R-bM~ӹ ACUIےy"N..`6̃I6`aD<ƺsF3زk`5c`J>j5hACUIE J]K ^Tj5hARm!5T8hy-ݪݎTbj[8#6A $6b 2B3W L({Iթyzvۈѳ&ĺA"qOѸ#"U7(wۖp ]5TNz H[m{5k|U }f-W2j5hA38ʗNxD-}n_dӪ t\bȘ9Gw.F#2.uiN|n^N*V5a( ~W4yj-U Mv.dRkp i;#Q<^ADEp6`9mݷ-vh> >ZUHu62 X.dg֏[zj5hACUIE Mva-zeH 17D*U=3`/0A;UWU&ܵACXK=IJ#Tրs}' ~f$d@K^A Uq-EDLuyj5hACUIE Mv./ϖo ]@1wkN!hAmUWD\^2.uT\ !mpj5&u͆3g)oaY`\-uTpCU7r25T;qU Mv.dRkp 6ܵ諄9D2-׵עvF]N2j-C\-rrޒ s\ !n6N Pi :R7-:y*ȖcȊ[E;ڄ5T:hu{m2j5hACUIE44N)m1-ۯU&Jum lFXpYrbH!)m2jn2?u7'ջ"] o5!t%CxX$wޛmF"p:#ט:@hު]5T\ !mA L(1^f܁pmWZ΅F CUJσ a7VdV[Zd3:#s)-A 2ߦXp PSuWjk !^z.d[E[v/)ɚ\Rkp ]5T[yr=z՛A8\sGePZjԼgCUL[V:I(T V='A oy%B#]SFOAx{ĶW{ \!gfp:cn jmA U&m2j5یvL#>А91'`l ^8ADL_VE[} }pa8 UI S8ע Rk;%WuޜWnJ=s{57[!- S)+`p ]5TY/JLowXTBGH؂t7rrEY\h.\Cl !FFR.!ԚPDmh 9M-z"0IupQRl?F 6 Ż&m4pۿ0t -A U&m2j5acTΈȳzCULpW2\!y 5EA Uqz4;[:`5_.m$;jMzdRo!!( 0LddK&pRjE\ !+{E\ !mA U CLywۖykWB_g")ܿ NgK:NDN-d#- [L§pfY^b -@am!ՅdicگN(&;]t"̇[Erע1^qKhACUIE \6b_|Bs/mMҊFdTvDCէ5bypMt5m\+PN)mCUIFE5k|X-Yp{nm1YO`wۖp ]#xx1q̽UKr vB>ZU 'FiI5Gg%l/Jĩ j6Fj^WCUIO*,|[V= ه;Lf+"GF4s~YٮDCm-- v. y؛$QVs9ȍw(\ 7,vcU ^R@`yG^WRXnLUz^z^WK ԳIUzWUUz^ۓ`Bckp{A U p.1%Z1rעQPoO!{c*H!l/'E @`թy" XX"ܽQ {mԷCFf]ˍ\Y m{}p3mԶ"Y" # R/ eucuT! \ 6.CC(^ANo/N~|RNMv"U&jonӫhܽ_fm#pRkbl,1#4]dRad2*R.ci:*DU OVRf8_ d‰z2pLVp;Ki)mtWSP#Q;* [E Mv3*{j_!R=VThId+976ڰN)tA T pz,nh5SfoVylv{W!Rkp +1N) Vss[m;Ep}jo@N),uT\ 5T:PN]X_DE107IH U&RkܵVvjm%A-ܡjd.HdSm#^AF""[!#|fp & \ 44Mv٫6ܵ5w3o&L[m6]'-רtnF?STH5l[I@hy[SK̆&c> {>??9oWD{kvL3| J.0AVTapqs@(6`s]3"V; rQ'r ΅U|rYv3*3 JZ~&nj.7GJ iI! >,mETA 2E` o Jqv0=d +  ,Cz`ns !Om=h1MpqĹ.F]Rcb@A3Daޞ(#[ܘE=ln=Wϐ+Vy'@q,qP^0B0IW-A)52q@&:`/9^?6@0!ojج*P^ęx^_J6q'AQ0"TTjEaJFf(i.KA :uQ؀ CPj9,F : *Kޝ/xl {ɶ:砥G냘%~&w=^70! 8 qdQ68Nq|T 1$3Q5^Юph3D!Ȭ)/45(:g\ H {eZ?>,r &D.XqNN+2S|.}<𲠹wY&S^C3 @Ѐ%dnW; pa u$`aio'|PYx=0׀*(PLҐ ؚWF 8RuXENͦXHu7P*XF­i; x0Ĕ45F4l!_&Ț_@r jZPxv:!/Y.fb[?|snv8>'U2lʖ"(iX//zDr׋Yk{ M~oK{ЗB8+QÌm[5`/(jm@;\կQ zx} h@./@ YGm@Sp_`}~v>j'8(R-^ PRԍ!#B6m(Db0hHF+cp0 zuO\U:C5)7`m g'@Dy d6/GЋ<0iHf8V= 'J_`l'WKU`?&cWTb\sap&\ o@ ?vlνA؏QVM=[ .(y AT/լ˜t/r*J`}]#P`UmB <)3A4MԵ'-p hpj܄EkӐd&>(<. k2'/fCt3B5/w>bt!EM OZKgBe"- &?&82~wxu*4Tw}t1H԰{@Ch!0G|cWmb ^65]pq:! dEʜK`i!T>dxEZ җ:_*`]bk #Pӏ2ٹ0) [pgh}r ͻ&`e@%Ctny+u!]ܽ>2' 9Ζ3i~ű}`t 'A')6usYu!̸*հ @W݋IumQ"I˭JeW#E|*_٠  ltl9¿hؠAY1h*FϨC4'=<AO' 0Kr'b`!tWLfCst?F|ȱ !/*d!zTUEYPOnSTЎhgil*q6r`:DQ=Z)h OWuIhwvjQH&_x.]n/WCxOhD Xƈ@+N2V PY 3Z1Jh~vmxje{~2wx C/ZZn=]M0F,,_O{yڞg1x>5Ԕc*y|c"l81P!1%C7 R!@mn g$OBsW3Ѵxw'FS+8v46d$=ua-`VR}|μ݅]>fo'jI,5P6 0{=s` @@Ȯq8'ȕx w8]EK7tA p6 b#j-5k:ڈJ iwxΝt7Ssm6yIi$b-A:(@MGS֓ ZGWޤ>B%"ߒa}4Zb̅plRlC+9l4bJ_ ق߇cI8k|V$'4Q7B˷+g\,9&#nо1DxKy %dU@;YF01=mUât?{=@ ,iF$ ;aeSֆ^ɨ~ HX· (,+tT?+} z Nxi(뜶 Ay+Y!TNA!1pŏFi D]_@xq!*@IvBrb_\a; a:Xf+#%T:wV+%XA"$P)ƌ]R{u[1Z$2Gf"rl< *N -!F}U[rH S} {5dT]^,=X} k-PA5>g@9<SD\McG_$%W(͵QЎ0^pwJi 5=F!$+") @OFW>oN^,Ob1%[o u0ۙ03UK4Bo$l%EH;^ %Q I2H(6|'gGS4 V&Bj-`ES?!h3s'A JrDY{~ 2-\&N% G۷ $d_9QL@]j8#]}hiJj N]t}ćldh*7 "e8-UCN6U 152> +'OC[R`T3O5d  X|3F {YXPMonRNieО`1p2z[C} 4?f< ͺӫ[E+A8, ieV23Fw&`4RrO\k LJ4D2 /){~~OkGMư5E<)1,ڂS1TLw~=E"BSFVnMw Oa]< x<0`)rxGLa@ #db`[ochnci /kߜOxW6@;R]Ӎ [ًñGlP1>GMN@/O1o ^aR TطTq'oнCkrZv[GXh~Cߦr6 z)A% ۔ f>!\`^tLS5C-@a 6 JI69jb"b6Cb~Q~=ƥ &Nj|Xbi _.~JQsӽ@2s=вҔVW=Y(6pX0"| U*V1bk]f@{ɐV0 ?i*<-n۽ ^(7oz ]'-E ,ʳӸWO %Kwx :t$!.!a@ΞkQG|LsnK(} ex'˨?J6TD>qwD=l_22&VSMo`ߗgǏ2Y=N% nWPK#f@jG`ln$m&Sj'4oz6z`"F{d[&#q;oKxP,K3kyŠ?U)%{n)w O|f\l<ʲ;RvԌY+VM[ \?'K^ZwiB  y5e$uTKyct a7Hލ ժe EBAh,A,"fP`w !avWӁ}G?`o1Z2!p?*+O&.7W 7thn>-׋@ )ڒD tK]y .DЛ NxlF&eAuVv7 4>eumL$ rȴV4 n<(gߡ_^&m ܗyz\r<<<P$**7jSQ/m(,J[6h*H3|b =."kp`0_͙nLyEɿzQC1+|JH̿_ҭlM)QGF 0<$(J@UPPpTSf@I^y` ˀBXk6;w%+8Nk >EC0%1 ׉%x>I8++>,[AmbM1st,؀)byq_>R޵%a4Lz'~Xyҿg`@B&b;Z 7Кu _BUh0#RHS ΩOiw4H}m+M,P2~PW,($1H?BsLP}VNpPu԰ p8'v'f+<'@ dEn?+oJ= 5@z<5<~tK/Yt ю|8 Z& !+S*VDR*δY14<K%yrw~]E6մNR R qjGAF0pDx+YU>LJ{?aMH).>Mkm? cЛ%#$l|X؄eU,kT6BVc~{w̼-ʵlX ܏ N :LBtAOXj^i8㛾d'FBInY|W7cͫ`Nʦ[ycEՌ68bfxIah]ߨZA "OE, ],j>6d23/Z⽳5 ᓙHp`VkdBbʦplugins/limit-login-attempts-reloaded/assets/css/images/micro-cloud-image-min.png000064400000214457147176754540024251 0ustar00PNG  IHDR =tEXtSoftwareAdobe ImageReadyqe<PLTE*/@  lkrT#DIX*B;-p  2I  b [7~_l_xk>?>}/w}WU L]þgbn/}K/|d Vbycc/ǞhB@Wcb:ƾc_D#qc2! S{S7d}c/0&8&@&x񈻇. jD1c]c} dc]Xcq/"dapO cwKUc#t-9TS◿{RB@f%|:05OP-6 QfC5+V(9GaB@f^}A31%cTRKyAc;th׮,,Yˏ+R_fc 2(/T۵d…% O./|_UTk*;F<[Ct+D9VR‡.\ҥ=f̸cGQ5ZWI#;jصbK,9p҇>/L2)^*nxTJ}Cjv#,) YKŏ36mz ,1\|9b4῰Ў;Vr%9jGی} k_B@h}S= +qlX͈C;vrlWI%DZOɚ1c尿m;}* ,_a?F P#ʱC+jVЈ걇r9_D56csmڴ 6=2߼q'|1PM _WTO=XJm1 ӧON VvmxYbTI1"Y1)lL1V m$(6uA?G{ AY"4,Lj{bN9fcL/CPcF3uCplO~%d".};0w1hF>TЀ)DG6㮒׀"D29H d\p!jh_rrR}/*7np5& 6}ر_>U H׀^qAX4c [Qk $6=w&M,ǘcǮYz͢ݳ0 @X#~mIbTROY˅b31S Mp\Pl5w^f,A@f>bTu\q5Fic+v$ &1N{嘨Ʀ˗)cE5Z迧_{ ☬ n* R)WTBׅ'u+n&iPWy|5ךEk d9ñȳul8TSʒhRC%Q}cuIK-%kࢁ d@2 Ы]b̗o26“]忰oH&)oXA1Szl"Q}cdM.tu[9=q 9bŮJ^*Y?_g8Q*jliȆnꇏl쁈1mZJHl/)Y N^*{klR)\5dNjRlСC45doUcsMOїfc;jvjlcʥlb1]k*66VjlƆNZ7n?  묩% !aM[BYslM丐5Xz$[HTcw Q B@T8{([J-刿LW~)?=U6vhSS9McBjkj'~  c ;oR3\HŊ;vS%/KeG_>`,cDHlLL@lPȆN4tR]]ĉwN7|! O?бTƴvp!_Wa*9_c{1&7pCRPlYBӦ ՋIu'nY3gcP9—*tQd.JilRٿkl^M mRP'cp{"o1~4sLcu&1DŽz?"dqƴZ…j8/U o'_sLyc3_; w*4\٘*5m۸QPD;s  ]äp1Y] &Jn'>Xk1-_[>]T]f5sl6tNbٻwܝA@{c@j ƨ]pR c }ck֬j?u|XmuiEbgr{ !gXL=wPd:ʅ'[**r^ NBbL`lYd1I&r)&JǪss+?G?d16ᖑ|ñ#FQsf^z郅ڵ݇}vg+$@6]MppLi3\SN4Ik b'R5;˱uk\B@~ߘ| cNJ*y]T. [cL1 ljzGco~ 2Qm(1'c=[[nڵ?ZU%bS4RUc4[Lӱ]+vCh)5z5&]3v_$?OnF*b;{K UV.\WXXs ,Ht5|T -)ysT'7]˸YF1T7Qpl'tXu*vko1XȢ}T~%p_9˱31Rޘ~ycy8FG2Ścz.c_1{rڵ3gn h5,c}e5& ~Ȣ՗J~bE-Pt&[P)O,/_yIlRډ< 3EOYYGk?sۇ>q|$! ZFK19rRSۂK4߭pl<dfTmXWTg.-r+ QK)3g?|cy(  Nߑvsc襒AK/-.__ەv2plj}rYq,&MK1}/zJr\$DW)e×-[w %dQd_@CS-ٱcobm䓰C@֕^ _w۵냓~=m߈__ F]49'm6~b?_*EO˧ϟ?ʳ{=I6>u /\1ZER%'eE,"QW)8?}ݜ/87FICÿVj~TkgΟ9_t-c$*6.! B5Ȋ 1ߌfcp#hl ^JiF]JJNޚ̙޹r+ E9&8FHgO3e(&%djl)Gp+ٵ%6vq^*Nr4v\,.]cuT3]3pp_}cL2&V9jϞ[06y2uF:GlI#&CkHGcr3\7\ne3䷠]$ixc4_wFcFm?<*sOuY5ƱtRD˰~#6V<]3d~>+iE85Q&\['JƻHb×-4\ldMd2uh"Ql{8G`lOZ\ZOñTR )G4eWIޢؓnݬsLߩ~cƠ 3}c1elc'9o6x3\;(Ht4|͚TblhI~1XSXaaS)~}c襒v}>;|9b  뤳

T;iĺzOgrsiqc/ņ?5''_>3f AYd [,J%M{ 'ݘXy5|5E>8*sk]E\;3tQS-F.(,A 7k (ON~|E_/(Eñ'KrV=7cLRc?zX~Ev;EK9tc]č~7{u(w*D9&@lټQ5WS _wPWyP`y'Hzy*$|ҫ^~"J@TN6~ :vhY43|୺rv1DZvl>9.F[GIؓO^eE~}MB ,'H]/[IY ĿW o<El8p"2y3wQO9tƍZowun.'\p[JGo{Fu=g2N-״@Ʉ ,`K O.FZPiYӧ>jv _h@fiZ+dOW7V]Q?;"-c=4{}G1.ƨ[ 96gdB@A-w>Mr¯&r_+&2Ħɜ:n)˘qQzma~0ᴌ쭳yrϫWɢ/˵9?E O|hL t~D"*\4mNЍ?&n5oQ(DR+-#Bd!aȑ>&daj įM|H7RMv9ug ~k~b싾(~^*9x1-UO*E1b˹[1!  a ͯ=>7coܠɘ3vjE UccN/"?U"Us75N,"ؑ76Y9uJ_`L#G̷ф ,qR ]x˰T2Ҭ1-bb1[޴$(_/j(dž7kycWN%ƨ1g9#G{1 ,ޖ.":#GWqNϬ1EM3%Eu?砞ӈTrz_TM/DUcur4&.x2Y5M osŲem1[Se~`[HۘƴaQ^5ܪSMSʌf 8K/:쯵uk'j~>{2R~%ټQ{6LH>G\ἱj{3g򌉿~{8n+>|nTX  > McWk~f_yO_UñuR5.\cy7bt1j젤VS+:fc\uNl`'dSƎDySd _,)"ibHRc۷Ϥrw#JI^.T.)8ֿcR-vf0cW ,T_3ıe ߳x26T ;k&[._ =ڀ_@L(b=S`L玒1QF7q|8! &n)eջΚ6r5=Sb^S7Vw*gp ]vQ{zr/g2ߩKrHb cdz$M=aQlÉ+ׯ  wKHvDOY[+mc3(Ǥ"of87C),?Tk#Gj[%JR$=٩hƿ +W<'d#~\FZKZm¿S捝˭.\k)bf> -2údyn_,%\8v1?ߘ؄ 6l8a}qw dWw,~˄ v*)B WZ(~el;/o QœOnoKT)/#i/0pq)yO1Qs2#G2zYwi#~^ ޯT Jz9=l8SqP5'Hb}*`O{q>Å҄JQQ5V\(zAYu,fnrycbou q16s&Gn4^wJ6\!XN-=k/w*IuJX9ĉ2ŇP=J7=M;\]Gqc#~_YoOyT|;#_@#~;F7C1S,..u+̝;)S AY.MŻHnc6Pku%;.h:Fv4mc%Ş|crjۜ{(9&*Q9\L%&c'K!1lB@FPNuujʉ\~ıµQcıcǴH4U>UٯOS;5FOHڌ%\n99۷c&Xqs =dʔ^S AY8 88&ѵ]m1\3k[S>؞Q2I}.N)vpj/ zO }/cg'N(^_\PnS.r`ʒ^Sz >=TN.&WqcteyΎuV<.U?g2O TNJDm5 ?UrNOaNH;,Wgj8bW߂oovT.GbL>TU\_JbSDW)^K{ȃ AYX1V7nDM0U殫^;oA3~>S9|Ȟo쪖H7F[\.)F1W;i&;4 '6\XbR9^*; ѧo AYXݬIuuu]|".~$_gΜ/(Ɨ(\ ?g\Glce5vSIWp!ksql}WD9&86Eג#Gz(qi/  at8ۻ27L:56|aWgb0իW5;;aM;76GKJ1-ol\}6lRc ֿK/D9&)\ƞ~io AYX=O;_$Re5+ESݨ0~~#wdWg;;=9~՞)Wo_1AVm1 ƎLbo(:*ccI~zJzgGOWqqb%al=_Fm$^bGh4Fn n*bgdN8dTIYMplp[FH|R.8brsAFW]ET-IVg_YO-%/U7Gr!tk_n$Ӄ?;!T%d*)_gncNe("M֢?98F.T%Ŝ9r3<7I=S+vl"߂W*e=606hg?HDg AY%9.J9gټ=fz|R>S(7"sD5& 6GKMm%wW*GO+Wn(^_w)*E1vS 7|Zc,! T3l[oEۺG[Fc# 0NI9#ܫ-#qRae\G3 &g*ޥJ|ڌc?ILǛ%d]츠1R76jď}|U.3V*_Z/6Q> + b(zI/}5\VcK Q.,LOǛNEdZ&ʱ c{$~n>ygL?JS4STy8yRDUR!=T]B)R)bc<&陙 KG|,WQVVccCCüy<Ou Ӻ۪Ŀ܂"@-}{pZ Gg*gM;st,ڵݕ++s95qsD&ΞٷnqOy:cg?`egoèr|57 z.Hů2lƴJ"aNi3z73֜p!0V*iO3| wGM؛:8=<3g[涜m(,s'cjlʸ1eQN-z7L8 ^yw.'rfG4HzFfFFy@X9/r'|(MX+yŭǏwTA=eO>;7E|zr TRNFp\^*3rEcY-#=')3wi/#M؃Ryo?lKDd;e9h_)>A;%X-+YwK-1{Gmcr/cqCl&ҌZF*S.cn5 ?=Q+%Yg2#ig\CbM2dYS4JN[8ֱQ7E|+z < 7*zPc~oe$ 64L+(!q]57dX/ 3RNHZYq9-o*E _-%?TZx ySDbpAe_y̑˕9̑kI&[埾b!F?szRlHa-Śk;FGOܰ- ~.F:0W^w*cU# 1bXV2 kN}xn/xXE{@plQE=7)3NN%M}=.i噼cɏx ϰX*0 '*E=v9N~Jv\dSuw1Z|Ly7gp\HWX&18Pt>Q%iFzo,mv#1 3M'EWIXA7Xh(Tde//fӺ)XPUc92Ϛb0&I.)6/z9d@fҥ?3g[zy%pejƋ b-cn䤘(ƺr΋Hd՟~aLI2RQ)ff{'3eW1wSG2 0~'-Flnj='gJo|F2 ^׿-Qeʆq@O˔]yƢ;dY_|Cd^}B?6㯦CR5ì %+2 Rvq;N"@A*Uj)I2 lSJt"  {JCF_! X _w 2 KOm4!@ADË1G0% Rs4bI$k2Hqu $2ru:73pU  ؟d kg TX#@AbfN2O\dʮ)=cHd5j(S:d@YN*,`I§ ,ǘ"ؙd@1Ou41Ed`4~dPc${uCAaPJ2\ 0mT$Y/>h+p{ LQ)Z2 J"cӢ\f?! n2 cHX lOf  1f?!W  1f;5D `̎$C"@%FcHGF >{d"m1{ qdEĘN!R|2 @1=v*D2d1s0f! X=1f! T+Rkmeag >sKl@2&|2]ev&v25G5cv v2Ȑ*Œ?+ RdXȠ+aOv# Ƞ*O6#V-2]ˡ3~ ,)N2?@ȠX91[ w2;]eJW[#,ɰAq+i1 J܎sp {g8<1 JuHVl> Y?)J5H&(fOd OReU+WS@)Z%QWi5iv' T,P2(YH K&dWKXV5dP w' ֒ei3QPy2(fyZ_\mlU-2{(][M%S`o풪]]h+-'S8Vf1}ຨB["L,"4ۂq @[&C$X-2(LjdYYZgdm m$k7\k 3+ұU!@fQdUC:I4dP1J5HVd򈬴 ͙_SslWF,/?tǴdRd Ykjs,~ϕY17#B U%d[/̵`dPBS{l\Ks1 YG1X/L`dP0Ǫ]ٔ81ZUi/;#Y@T @*%"*XYqجfZ02 vv<=MYYJ$3Y/̴`dB]4'x;PB$3׼%_jb6@%cn|k]OPMQx$ = ^|1 4XB)"FwA,U1ݴ$dVrc->TY **T?Adk 9c!q,R@ͣȲ-Na̓4@LjpR\Z/–d,8Z˦Xc2p̦jS *ɼ,8L%7YPE@\J;Y dYRq0[YϖȲM7 dPYuA74,u@9YMNX75l- ;YM 5dIdhq6Y,G odɮ!a5%V+n,Nحn2a<[ L&Al'Kd9F"@fȖyhȮ8=7dAvD2nW[C'z|9@mȮaȲMi BxU #@d'K\oYd Slknj`4^#[*;,L[QqI2%FQӺ/9f?d #Nvs V5t $ sy0.W Sa^wD^M &Grȏ?@ 3HWZ"Td3(` %dlUg,X[S*-u'%Z&( ĺ1wi}k7_*+K kKQ|d[J;^d}RX[Һky)Ivi\ @fds{31{C.^~-;Ȃ&r޻64?[2K&W\ص~$ǃ%^G2e 2ƫdMb/+|'?XmGv^yd&nvi 3u*&c(昑#bsd)HhR31%~ ܃VmCہ,Ͱq~,c1wf? dCL2 +&Ր=@djP8ܹ.fv=3o b/u,&(e0d<%f.%C.wlР|{ %@VoR3eػ @f"7J dd]iХ@$ r^d d YWx0q1upef '5(iS 3dpS^*v5eufTYo+H QF`U(CciW^6ƩZ{zİ>i@V2 wR5KH֚0q7p,+7Yd#YA4Ɛ4EY%E,y,j0REWX ,L9fDz",Ure< kpcƲ؄eacݷje@g$Y-87b |%we%)@Yn;d5ĹX. r eO O&CIq>q3dj8H0e9b~C4ct4a1M˜?H/?3 ^aA2{Ga,l쏑Fw1LҌ96…Cw?1@ $Til, ӫ1j2+ 2wL$$ri}#gc᫱^*5iMR+_XxqCj: s$sl(.Gʠ 1{7W/F,pfC5;>pbYfkl@X_Lzb,+X@F}e ̱TzlEM͊|2Gd 8`2l ޹+#~RL@LPLB͎C[bWɮ_KuY 2 cER/c 9Vj11wX\K% K.{@f`ϱfG`쩎b,o,ʗJFX_sl)kرbŎ;vصk(>+9yr2x/@2[sl0{4"a̯{o3% bZPM͎5?{oU} [qBc4Q@ * `|#>ur )X @L@ @d["Dq,'UcrF&;Iӛd]Iܵ}eiAZ+1K%Dc :@wU(0_bP6~A2cЍpc7'\̟>QasS7taL=bdxS?ޯ͵98vSɱ%KӘ6X<<0[e{4UxJKi4OYhhntݩ*uEs)g_4 cSSSо67w_@ ܄JGJ=##1Bˣd@ Yn {K8gs|)Nk"ԗfRA00כb,Fa$ v[u 3Nc_kʥ1MKN$ygu'{*;K2fhT%Mc d-ѧ_ QG;Hrce&~+`l TIXy@y'$S@V1/`0O[%@WX^z-}33_r ؟._TKM ȷ $­rTssg'*;(F8v? DuJƱZ(d##^)V80^BOwdAp ;.c( #\|L}D.ONMr@ d":75QJ$10~h$@җ8@v߳i c6[+4SiPcD(Yx4Ujj]tV8 5)+ ?)CC-^o v޾[?d^8H_+hW"-c[h "iZ,a1[tuuW=޹ 6hLoaǣz,+riS8B2A d/dƬG%\;U/9a\Q]]Q}ȱV1* #)gfpjjj߮wzT:HRރ^oʥ_?2\*7Q=S,3yp(`+&J+o1(-|GHf0UR5O}݈AcOYl(-`F*-Hhwk(&";1#oLg'R@֫J0ʹhFKTzݩow;H{E.̝r3ݘ#mܭs@!&:7&7Vk* cOeH~>\*-{,z󴊟H>U2EGFY,FpټA[doi*~5GBǍQNO3DH1n[_b--͝@ ̘dV8VW[m$ vҽ4?omc .>q#FFSuysg9N]͝(F:7Q(Ղ|VٗG*~\q,5u8Ucj++.pE$sy1_2) _ B F1+.cо⧚va /7<3FBi0jqLbj]?61}d+͋v8Z*M[pwr7q3+1CrA( Sc15)ËYdλ7ϖtvñw׀WQlqfcU"uHHoVEnp1qcOPPÏ/bb e1i:@ =k{{gnir̮] cX) R ~\PO%4#'.$n Y=}rš`oD ǀdX)2ɜwGc3onLdcfŝ浒JجF0v{tl"{MXKf? ʆ5͟Z +%3f1ci19i6@2;d+xf8ƢܘT,Tܴ1w -Tv"ĚH4ԈMTӘ'/ԓc536Y=- 27ZMbc T @V(+),y9H漫>j;K.F…*Jiwk8 2WLbX+ XN1=t DG_`+4Yʘ2`LKQ@(? syW#}tv8f,_z*wZ13₇1_;Ik5ZØ'ߒ#>d-c-)|Oa$NMJR ՙ LaBdq9qid9R,n_tH@#;±r$Sƍ"SIsп{Fč"WC7jaeceCeYbGAXaNlNNllN9H+Ɩ(xZ$ TLQ52.pszz7C+2~bB$&(Vԣ1\)kFYL8iL+,)S#Ʊ89H+^pLSc,Lc rcF#&n$3X'U;Gi#cw<UͣK%QЅic0̌uBYWAaT/NMcc wi s}d_ӘEpRݴ袜foj1](RQ:JpэC?L)֩p.p#ˉ)Q#YNa)dc9$se.lgKLcKfX[HW ǏD*i.k~PΑ5hwcX@p̸U0{ JIMů10~cb ' 039H˔]N;;~3>i^*y`RA@ygsa]MA=@1[>B7ׇF"?RJpvL3c"q,8`,SֿwA2-(w|~8^R9udSgszEB `+ p^^ĿXrq*U~7V ڍTkUǔa!_$s<mco|"Ry3]whP>`S!bGd#:jc-5p"qEA_a`q`23ohXdλYeMcG|ĴO9_7lh饲ycԋTJo:nL/Ec*ךj,5X붚*0B8Vj,'dy7e3Z3*°9Hv+_>ԍ_*|n qc(VQ]^Hc*1^*R$7;~*ZnÜoZEuK+Kˁ;%}i #v 8o ed|$sw_[|UØaEzjEJA+X*iEHD\!ָT*a$#eww%n, 11Td dMVX|wA2YhyJۥ_,W  iuVL Uz0b-'XD\X;;<Eੜkܢ1X*s45FPۚڪ0)O@pW9H<~ .fgIMn5aLKǦmj$Ŀ6w,V1a\T9 t"C%TrQ=Z7VMKɈy,2[)X33[8֤>x;|a$sb4vı\z4OyaFB'"z@ c]`=qz*GpȷzBC9:78b0UF~U[p~cQf" ( lؑg6a_z%9Hv zЎ&~*?鯏 -0P^90ꮮ bN򍌋F<#K.\3\"SeK `1:T;s&ZيI4VH>;@ 忇\R?̄ 14L}䨬xm#|]kLjU%%iX%x֎´BY* cMrP,~cMz0S?c^uA2ͧmy?.>9S_u?dD..]3q#TR++U` [%DL8VW&+ IX,6A5Fub+Xz d=8WwߥJŬ~K2t _a$P(6brc⬔,~1k┤XF_0 (~SrN01kU"ӟ kc (Kd7͆c Ģ_5H]#1b@.cS*r OR)Q=66ETU"BUU!ueFLZ_t Ę2j ?b@cc52V4|[eρE>Osz#zE0 =9 j 㤞<4"~5_c Sŏt4"Z12eM$0f*Ac#Sh?d=v+}ƴ@1#u~5wjKEQpo<=:oTBSJÇ9p $r.ѭX7֦V5eR<;@ ?wj4Hs㰞)M,GKe5uUs5Hsc N˓^ %Ʌ9r1,U6UQEKLljq c@tpU$s1?~m7O~ã A=@C76PM]|+} zɊn,WXG"wXk.. bG1i\RSAcqŏVSYrjòT*(#0)_tA{l[eGM}_Y$BYztkyyT3%g@+%Z1E1kBnbDF_ 6NLeoJ)qcRT ?3Yl\V24cc 4khx2z@" V/sj X)م0 6U4Sj*=N}L͘SbMݤⷦ&ʘB\ꘞI}3 ;1+} nqU$sc?RT1s%Gtc4#ƱbMsbFHi$FH_92u^$[Q9RZ[3 _!a50t_Urd0ųxK.,*~n1H)$K%ōk#<#㱦XAIn7T.Tߗ7yjs7rAE=tMGmlD%m JW#Eidk6U L ʖ\kXtnw+Eޯ+{m>U"2IpSp Z%*_jKoH4aP*p=d+==OͥZ)bM #bwʊ dTk񛼘TztS%]*am!sCrqA.51*Fb[4REpgh3?c"6|H~`i5t slc^24FK0ffXHbU\H## FCz<Ča kiQXoL_?J[%*k/3I~ƱBy|d3R,&?3G(f`yAw,v8F[$ⵐ;}TV\ÏN &rD}=-%h @S6ˢ1^-kkb]VWg1#H3bM8fv#I5[wbG2T|CoJ/D.仮ӧT((drb7CBVY߶ˍ8&@v')Z*djnn&EK'ߨFҪPk5-֒3|&iDranwñRS%%\80.XꡝhF2G1? 6N$:(~h@0 LXG#>2U$[w 7A@M&JdoQHjʊ.)-@jƍ;&~BWec_McpF.e1ii0Jɺ1͎R1?_D"5HďӘZ*Տ5Y<]yLX1>"UAT],V~C BʚrmL`̜njDU6Qd8U1|ܷK"0;*/ċ^i:*ssSys7L `uXaNL!p,.*cuV,h[ɎDJ@1j, +(/T06d\ {^}~ Ҹ[.4@s3QxSXW5TRoaB11:TժqΔ\0/oOPB!5=~r#$k1Ao1F^$wy(U(..D=T$#٭da=Ʊ6|{C%Kû*c)P3wT_KX_ :Yo- SɑT+z aeR*B)=WLf2XÂb2PX61c$,V_9~rLe slO>$8m_,H,Q]ĎuML0J%31CWXoylSS9̮Z5;&8f5UM{$LT45Y:Z#n>_zȊ]i\0WVfgggHv+S$ !]Gf;ydF2fhSK{&ȋ9j-Bz1Aײ 3n$FS%NeTTUIA=яQ)M~cM&_SZS? ^c8VJ*d1B@r$ "8uFL6%cS4t4, ˷<\*{*{BYĿv%0aƆkѷ[WfNJba c~0;E,Ďy} >w=McPMS졡!~V1ɂI݇,8MstPMcp")(< ѝB=s9;E06cGso8*uu*$m.,)K+ҀX*0 kc^*J1_; \ *@V-@SeȮ{zQSd^پxOڵAOdwjYTjzd*$nA2~c|DXe v7*shn1?DMЍ2C"t.>/'!;/Cٕ e=j kKd ["YA/ٳEFqdXåo1Ajbs@u'XWS[k=/^ 3kђ m8Z)դ)5- ] sz7J&'R+iƴ=WHj"!S0v]?99yt RW*==m5uz+[2"AV.yhggHcjFOe'UwW+%*=ODXycy:"O3čX\^@M%c4I…L0| ?}X3uyh&SkevJҿX6VJ cŕCŘƳdziVSdªK=nxk%=S|V)-:˛x/D5?<IL3cxTT_~qcRTgUj[z,m"şАv|dicw +卝:} +p4\NWFYN0VS(XS$f6DCoIL O_|PyIXAAqČUjc=)jHVSdװU.;{$ ҶwnxdWh.ԫ10vbt㘩#˓p '~L׻2CJc$JhY=ZĿpmDRU->7.0;<ݡJWGB3>R8֓ kKnI dWw1PCP-=㟸36pl"VJ\tuML 1z* Ec܌JX4h%\H/2\n;Ʊ)I¯crljms-ʼna16vJX7@` $tȡXP85ïPMc dYt:c1.tեDo=1TY]= *xqh-}yTUI#SJ+ԯԶ{Øcr|A, TK*)VvJlE ~byTI-Z@Udbjkm:K]qlkzqlVoE;:>#!*(ߍԯbMJV\{0HuZMѲ1}$S"12' 9ufkp3o 9 64{k .dgcQ @L-c'4d>=8fKzR9@nHSK° XF1:UZ]_ k#4q-(~P۝Z2#`ӸR"])2J@ux@QNH8Vc8LWq|VJS5Tɢ̘2NȊ|+} cߙwsl^ YYk-l$\l(Z$"_+B;YLcBf$,-3FEcbNMWeYSɦ4.ۍӕq|4_a gamrcc>_|4գnf1N!xcFAkcΒdDVdDDd][ؑ$)oZ" vgCa38E1=Dg8dT^j,*~>ԯp]\rN:E$G1bТ'TS5XxSjz|5v ,n$?tV$U'clko0f1'$TYJʿ8@v%oYqly4-_ HLJU9_Aٯz7[h\VZSZCOabe(s(:6К5&pLc:ol]@5e;E9zT&CTOGTimGbX09:z62]Z;ql94KgCaSNuBȯ=c:E,3ЬEH)VWdTJ70Qu5#pwԇJ5qE@3T#½^@t8o)5.ʷ%jQ1e\]ƢOl Xtj);tuUQRc%KeS_bIcp 'uSkvOȊĺ1MT@D`?gn'6ZdMMC9>4J}w.w&c.( aȾVJ\h-F.J: M Xpnt0Sk횎ʴB#n,l!z̯>MSz*D־{"va(~* /3g3FX2[0¦y#_)X*U<٥Bn>S Ҏ]X^ſt6WP?:E3|1są^ 7`̷NpXwiE H1cl"!&-BKz )yԯ(bzXOnRfóxSZ*HFU.M?qudd7Fʿv2|NF5US.H|$g8#X;õh{*ՉQS_*~*';''8Vӆ1TicgScjy_IIB]r7CB$8fKz(.$_X>I.͂7!XV>* oiFs̎uA:Vgh阂baÿQKe.xÖUJ/bOod$?|HLٿ!Zm d"Gҡ"1aJU|%q*o:I#~ޛ`)gJ!H/ b}SV.D)Z'H&XN\lavgrHff\ /e~45:;3+Ad3/~[ pdbYgϒnLcUz+qL "qJ`px@QW?Jn7_s5 {jXaRKͯAm1 cLE8cRdXgK%5 <ԟFJIMDnP|enI>#)֢fjlZ1EDe؟/XɏJ’~k!W$1ث^|s`+*2.xg8c"~݌QnœB2NScEjK9V .㥲z&8(1\-$ ~h`d# V"_LkXY caEIEEEQ/:@v98k}]rղ˾xrC->똞NXSk:4\:E YKQK& &~?##Uz*aMV!*~!,,cY)#%5 b, (VP,)* +{Hd7=Vk!U(}td~Z jeZ#,F⵲B,c:J-c?!%zk*Y7-3CF1/1 w.Xnx#_Ϩ}6#qků=YEJ!KH(IH*R6(Ĥe-˻^8 ٕ**|Z[O؂BvJ)0[e.XGhpq,1֍qX! 1"4i]FuZ6K+c~ESnP F*~F*.5VYYm#%''[tccER q6R3)0_?Q XQQ %d7 $ƭIÇJa kWX\\č⢶VZC9ycP\ĐU`LW`㘖ʱt WX=J)5o8#_k4] ԯ#O _%1=%r$jLMcaIX+R4%&} 1ɮVy<ƖJ}ZO3W""ȱ:ʤM cʸB.$H ZQI1"qc̍}trTcDniN蠔b66TmQ\l1'_"#.rŋU9VȎWXXh7~oJd 1ɮZo^|-?1PI1Sq"h͍I?jLMħ0cqqb3 Z1ܰ5RHtM'7#MҙưWu:U cmR$S²TB*XQIP&НXbXM%BB$ _嵑 9-mqPTGɯ}cnįb"A_KQTVV&1*ia & gF;R:ǍyݾzsSeKH[I ojcHiR{DJI2%y,A$%/b~6ip [\xn*9k5Vy9-?(RXs+Fc\RmGB7f$cvSVi-_8I.769yٱĿÎ44$8o=bf"P2?Xn!XRbVn~c 1ɮXrq$m}Vr.U#wJvUFJӮ. wK%4LW#q5Rbu/&aubmY:o>_".@II>UJI*RdT"d%?J:~Cma % 8U8T$dd۴:@dW(~9XazPq#g$k1#.rknbVƵHZ/ d~dMLicŽ]wzH&')6X0qE"Z*Q!֣Ʊ0[$=f\O{%Y±:@&oN؇CB$[vrcib*F4~-F*b] fLtc\[1#eHjrEʳt5q5+ 98E#nxgW0N,"Z7&gJA1EcE0ƱMa@2cقD8HvɱU7rgPE< [ec,V sԣ4FHˉ3lƭ5#I-֙F*} nP\FX %8S"6de͌19m55ӖݓtxVv$jLĒv'%1%z 86k}' ~2z/]Eɮǿzn%[nybP*2}! PZZo1s3ښaDe,?(~h.з[_?I5! eA1SEZ*Ǔ{ OnokknLqmaI:~Z(ElCeeĩrPAe[?cr.<|]!Π4{?UJ5\1H1*TŔұR1Kq80 cMM A= Kex7݋1ꑚvS; 0ql'".F1ݷq$3eJE*0*N#. &,mzľrl!!-+=6(ڼ^-}46.8GԯqdnwubMeSXXgV#"DgN* 1, `F71:; U(cO;RwTf,+_)ŔUU]βע ech$rL}[9@Aɖƶ_w-ߊ5~NQn"-.\P(/&TI 7GS_b]i,8̍~5 [)EDgݞdMA2n1#Q?TBQ5,`xY,|4%nS[֭CVe S圝&$Ar|tav_n\'/J_jh _P_bݩu$С2RJFJ~̘Wj_x:_}#}m g$!ԻuēBcC)R,JSpX0~bg*߸Ubo0$511hC%ر Hu;@6{M;X:Hvi:J.ZN O[ǯ1Fj"eXsua%'33֏1DX/7JRA׻&Aw$+F!>Tjk²6a=mSƠS6jk ᧂ$ɍdUVJ d_DdK؞oވ߷cs?Uj K%XxXkk?JD\㠞uւ7#1{R)*~(8&3=T$Ix"NHK!(A,J))5)J-0(à^@6g!!-]rl J/Rk}x!utcuP@!Z*r @*t[d";̢1/U#5P7Jݮw9l4RNOhˍ6ll6*J:U":_c:6q7v$4(~5$宯pM(V,(xK&z wvߟ #D^LxXJ`%qKeRQn!MD 0?(փ6Y@6g|($AeQ\\w}v#ZƴUusb'B(EM/RP_*5i;R1(RO1 㧂%'PYiXóٌT.uӺr:~!)P Ƶa6FJFɎ$FAad#۸qCޛ [H("o.gvQ{*ڌVJ_MfBΰ)VH.3ea!J_z\* ~X*Y86D!=td_9p̌G1$'LI(#51QTX)Y?Hi$,xh+'CB$[ҿl dçDßK؝ZesHio ⬲L?NPD .tx:` 3%6J" @)b $In!UfIP ƲSk(*L_F,"McľNȥa vhX@nA x@vXȏkMA=}+ۺ.ԌWJ)3Ӣ=p`݁@+*!~#67WUogzl-'Oʳ#_ ~O^J.2jL Y05RPl损^@2)/V - c~kag+a F=o S(9$q,DZ&a&? c -'ŅT[\1:W23ܣ{jŦi1J$'RJ cT)"Hu+ǘKc11Q8F1b`6onܼ쩛oMZH8=w~rXd3&!⯫+%bi, !c?6L+B&!Bct׀8~7#\Nrgx1%> bc,Q f$o!JFS%S%q,!!!,)I,"}F&!t,ƶI c=ݻ@%`7om'DFY9֭ނvFn$T ?!h 'Iuo~tnPwH'f mm\^,K+_Jyp0fPca% aE%% W(d) *H bQ[@ .s,(`,"{.@ T*~7\quamICƅ_ڍdHSex:-ZyTɅ"8;CvJbj۴"K&2a'#O* ;zы邷knIZ*I8VnZH6V܂F6ſQY㱽kV0) q 0fq3I8*$]KfэDSFHaPo|wpl>J'Ʌ**Ϙ5ϋeXH,?9r$Se2E1dZ ;'61 cǎݻ GS BlQ3Ҫ7b A?\K,5n1tTD7Q?nMV X*8 1 '/ɂ.TScj̖ o31eaHE[X9~˝2,))!))ɬ c4z"8 Bƽۻ9cRlQkP\,B}6@VvHR)䘮LcED\Pi"04'*Üş>S톫I~z₎ҾgQlqxzY 0tEYi;%]))[e*ҞJ3o?pT[[ mظ@Ge,X`,"{6@JlFptcS%p p\dhfvfIǏRlobMs{DpVƧJ0Fʓ4F$Yf*կ$Z*yL7 &;lc7oܻ c dwF1{RdQ7X.4kZ3k*~Jyҽ>wC. E0ނrqϮd31-zP.0ƞJgi1Q32~ N$[eãe+r3^)qTӘB1;vW,h[~6h`,">k K ?-+±B (1_e_7Yv0T> 1 Ev)3r Ն#?>j<}f<[35SNuRH)mwJsƐqd"%JAR]l=qB~ Δj$;HoAvwwq|zT CcFo$º GIeLNN^+s,dF1vU SɱƀcRNT 7RI}Ų9,2TfMc#K%U#E^\*~7[$,$n$. gn=(vĎvQbv޻w߿CJǂAK"YX`S2FHi(d;vM_8=?T~rz0"A<րi_ݘ&UHpQ$״2'7Q)IH~rc(/(T&Z ֆrl Qc;RǎU8 Hzq+!كd0h E6\W I=g40E`g8`"S8FgzT FR) fSh"D$ X4h=Bƨ1ѥ HU%1s$s& Mwq\zq󱽍TW;原rǑ;VhbPdG%傱,2ۨfg_3zb8pHgspAE~~0Ҍ4 ҇׆R՟[ei5'j1DXgÍ3NZ42~2"KaX*MnRkcIE EEa6ݘnW $}5vpčmLcjj {1ǔ1zbT1b~MQIb,czc'Qa)4Ej[S5zzjڤk,2T"JV+JX&&EY/qYDwJ|xl3<~ݱ{;wwK⠞$=),Dk%Qc" 015MJ~`L|ȑ;w8eۋ+.-疀=*+W͚^$er$bXbӳΈ> ?1Uy}71r7uWnOSeMdc%Mb'#"O]JF2_,!c?EO[%FPc:l r7;[?ܿ_b ƎQØ#[<ȑd.kN-dKQc }JJENg8r[t5Dj*QlLnc4A50~)ݓRBe~5!2'aMJdTh;RR&I?f1zI2.x 5Z (vlo*Vyj c,]@vw2dvD] ƾ3_\?;VHvB) `b401K50l,} ac>n8_λ]jtp9Y~,jΖ~7*-cjW.Fы/i<" D[e@…dZR10#.-Z*whDŽ!Jd0V"='K;"RXXod H̋-bqlUuBe` cSe::ý^] sx_yJY){܂ucď EᇙJ̞J Ą$Q\PnW6?$98vXFX#8~r#Q, Ǝ!זիJ{{ =r0%mKǖRJy\.ЌHppTrR.: Ùc܊4NWζiO2+2YA1J,BmF(~0 ?HT/0@įƠx(0lN5Y`l׮-`ldKRcz\D|-[}1T ͍H\SI1p[94FwKɉڍr!_Io6JfǒpƦQ15fP9-m&;F IErWKLqccud vٵk] ǂ~ mBM̊1fI&O%*A5P$\4>ox:Δjop(qIr㑩޲+c=2L,1cY76wʪp6Sjb[&6$ ۴ָ1-JHRw~5߿gJpc8e5ջ!^^H45m/&833bz N]rT>{*YƏ1T0$ l H5|D3ҴAE)bYN1EF3'Yydctqc@>F"~`"g?Mb8UbT vdn4lgWh/8||$ vJ|1;F)s$ ,:4Q}eWkB2VJWJ"]Hy*2dOY0eddڃ=ۊ/ $c학#Ռϰ#Iix:@17\>i[Y?Op̯pH~2,"aC1d=UpuCn  ombE2krlw@fůf1)A% ?)eǿOdc 7%RIp`l7)tf[uG2Ǐy4 {{ɞ |ǧda$ uz,1Lj"o _4lȰ5xJ5?y\%b:BgE=6$M 3(r,D3"P^$IESnqHdc7Kh"D&g8b$jLٶmjqǗh|@f'm1=:{r"كK^bYm? aXf41rBJ/f13~xPv%_ʶ6rc$WPc\.W8k,tc(2R&B7F;}rwHSeqqYe|e1F1x*p4I.:I8?71RzLO%aXʭDmݺFؚjͨmT@jkLcHrDƠU+j0Ub|AL>Ҁl{,_^؟dKRcvB~}ƈMpXۑD_\̢1Sg!-Y2. I>UaYVq`#5\!XnEى:ނPlչHJFca(~ƶȩ#.((.~Sp쮻^\a@targVq w.^Hv l(p/(~7~PSGe1ƆƩ6<r*3}"YP?gVb8'_nC-X شO HY#yf2#u,vNV\n;zQ'o-I=EG V,geat[z[*)olupxËFm`}f<[*ېn!7J$E5oqW(įbA=I2qecRGXs+c!޽p+E$%!AO[%H4R~~@a=j {€ BaȈl$3} oh vLc,ƗJƊ]C8A= {phi J~3wʄ03ËQ8UJ!S 6sg~e;v.`FڿNw;ri1T?.[T>.B{ԻfW=rDd~%vgQA=NV-aV8wsi;P/rX2!ͦz7c{e}͂_D^.xd!=z34[Wc{ݻ*?;^A -;ߧ]t\-(<\Af25wo4 NbA}X }ٰ2|L(~l)QT '.J `G][So8Qfr\;I?cMIo$l 2~h,J &'"~Tn]#wJ7r2߽OI¯vl٩SE7FpZ*'75jS{Bc4 _,u+=;ldsHnI"ȷ{!T: \0B9FXSc'niU8u[*-f$0CJ%jE8߂H?y @68obAHnr#UŨoSTowWXcĵy=i_H " \,h~HvԘKv-(p̋;!n{HD x#X2y*,H2E "MoXqXfSeů[õ/ܪōRaA-tď aKRXO a:|M*dr HzsMժU|>HsKe&>h v `S% kҾvtX<*dz{ʼnTCKe* O,d WeR&Q$H ƍk֬ѡڏtL cw AO c];jrVʿ] n;>Ҁ[AMz,ho]5f7$slѝVyV41Ʋ+i$C8رdknFfWI M)bJUU_X 5#%$%IvJBz*IsX(0H5|IOHF-.M䆷%MZ w±XrY쉠V}RdO/ Kn ncGԂ XGu6a]nD 7b/FpEM*c% EQ"nQ@ 3ѡ1Cboq1Qc+\"pJh2=2T~qmw|zكA_,ɮ|+ؓnBAX)u?PmznHMLHa,,!!~ NL4H ! 25W|In 1nF±) ?\vymE^*Az={~q;6;n>~?Ҁ7X, \22[G(7PkP@vv00ϭH"?C؞6F2R)";E"a ~s1B~M+%%Y:ElLhhZ.J\M"%*w^껍#+I!=/(S@;nCd˻Y.3? ?{Wd@ɾ} m-qK542hŃBK%"3|?gJXp,L0JTFH,ű򄡀]fA qcǨ2h,~ҿaQDHcz`{alyod׎dKF&^9BTzk=,Fx+Qd\APvTfMc'aʑ̼1RpXhKJJH_V)0F͆- oݸwp5Nv#+e dFM~1c/nvODe8 {,xZu53ĕ"5Sc6AeDd[ֻܔ_Mzb .Fu%'X2.$FU nzF/ޢSpʒ0r%E)*E;oTӘQ0ֈ^ޭ _AG`DbI:k (<ޔ{`T 1붏e,ȶ-?O"${X0#٭D?3Y?yFBkPB!T${.'SޘXًhۭ2X26TFEE,4h*OlC5F+q1,#o*-$~=kE _"E6vMY= /}ۉ!Sxd/s FKPcW=H֢g"8b־l,Czick?_*^D5Z+1cFpbB\*1q&hd'n[-!TblDI^w89Q*׳M$FO\"= ۠&?Z.V=B+Cpݨ1 ٭Eݯ1un,~r[Li٘N9i_eUe X)i+D]F2 ]+1mެv7#7Cs#kc ۅmq:Úb:] c?xq)On]q@f=Z~=x..x-Sn-/*>1ƭzjRT@QU~FkO%qL}ȉĕZ6ƦJstl\U.a=.43MsGlc T1]!h) [AWI&B1&F:WE]Lg LɖA,XCZN6B mCeL'(,f/v w$iHr'd&53~Ĭ҂gC^Oc(k2W-bddJ+$7.khErs>Z|dOdX3-vߘn/ ߂~;{Wi_1Y1(.`m4f2.8pHkO6Ʀ?{J*A7ThwqH1b0Z]jgjW;[wX+׌D#ϛˎ'ͼx&?|LN\*i|4|qG\|a[O5H.>v-cto$F#dsV9UdXŠҭ岕T lw)--6RgǰL:#)vCXПaVKmG"{dd[y{2&;|egn"dVbEQ[+}g8 [*GOELّsȰ; ^׋ʋ8[oxy1QR {0X2mz "P1$rh4p4,#]i6mx|:&;sd@V{DZ7}k\qX)]{ᯗyWecX)C/T}Pb4?.R.Fo۵roFZ.UեxKf__Š(Kl[Yﴛ-c>f>1ه-04fu;Ø]]{NO9z o~$_}RC՟}g8E$VfژE&.{ؘo5TNO4UfX/mЌĴ1;'1!6?s)'sͥ*b;5:12H.-7q VۗnH)`'rև1X066TTf4wƏqMaE|rc ~$tߒvȚ%CmLvGF2م~y@ar?ߦ~*V[( rX1)BmJ.^݉eB:2ɉ>o _Ҽ,Y]=&Xg[&,/L`2pDM{D@Cϕv'Gew4$LvtdYU2k_CNO}P'8u.u˧uؑ28cĐcѯbc5f1R5HJ\:)q2K쏒|#x쭃ժLs7!XRiʞAonH-uj_Bbz.]"əʼnT9oI=TJ?V;2Y=SH,@_J䈂D-@֜؛V56d1~1;E#)x掄hb|<`]3l "~±V6ƧJ:~kZ9PK^[CLR龭or3WiYdW&Xn̠ukZ3y,Fdu;,Z@vM>2.NvkV9Go .~ i: e÷؊D#YC^ IcF*;xA ) 'vBߨv4ժl;e}buZrH[2Xk+==y?Tp{plzfgPO-*QTՔWXnzFb对Ƭ13a^WEd+6Ď3v!{ѓYS{t,]*m/|i`[(ˋa.TLEPV/⯓wʨ2<7T@c]c,,~q=/Ӹ dՖn u?Xɶ6;37b4f"j ,9VCE}f1c0 3oOc5Kowq|щkfaPu RTj fY_)úYMfi>ofى.iGc9@p =lڭ[s++hJ"Iq?JK%HVHk* +UV阈Ɍj K,B<6MϹ̨ !!d "wstiժlBd7F{Bzj*~ܜ\ricRz̏b/iE86kJlFb/kuk%{RbV'c{dVukDWp]F"K0e0QeuwH7ӏ{5&;Ӿ_0{@H 4vֵ^*}E5nvj,,mHGpHH^-,'g[#x0kI}BYf.'"3˝>=zamfߌ{?a؟ X[źi,$ɉE9ܾ}lJ&޵ϯF:_*1al x ",ż/$AX($131k(dOum~Ts죪,y>|0rg˶3'mG ps]lTd.16,N,ZTBUTJ'-XOw8Cz|k˜jSk(OLh =ӟ "da;2S)ҙ bVLvDM=77KE6])ocR9ɉݙv៵p"k_CZ'lTVV/eR"4ohQ?$O-?ZN(b\xJN3˛_[^&Z T_YDHDdbh-|JUc8lȞ*}Z݉Uv@ǟCf+H¨ 3,3y2zВM2ER)#]#q?U@dl5YzQd=mncpsTZD\K-_fֵko{7b5lk0XN!XTbF%)Ibf$ɂ'Q29K*tcϕrE.Z*CX'-c>SƼvY.By"{E/;*HHx GO6aDY<_yubyyxy8\)q?F+hy§׿|R0vY]bu:uЎz/ҏ41kys[%IW: r J*}m8}6<>op6AnA ;u $ɐcm[fl3҇jԔ0fK-M6{xDv 48E;1iI/0Y6!]-NLޝjlحFa qTƏz7Գ0=_Z턌1te:~ уg'?e|#5/y[x[q?7uōzxDo4&mG \JƼ8龸r~kF"5+8zl\ LJ;Y&#Pʸ(G@eif= Mr cb,oɚ_h"xYem`-.O]r$_o5ݘW[k6T1x×buMf9#ٱk$Y5%0`JXm $h'"<ع+ &;- "8OLrfxyfy_ض;k1R 8zF8 bc&j_c [1x}Ij,V gfJlUDLvܕ{aLy\f&k2S'j1z|ErDPLc!hFZ]-9&KdyQϳVƦoʊȗ^Ĕhc&hY`TDV=x^/ILy>'?|3QX0I>89sי[\*gQ:v)׶ݖ` _ - gPџZ.*M <0?` gin(sɣJDUD,xo޽ƹsϟ?`ϝ{ʻԻdS1fI9'N<@-*glD Q8#M:6]l< GVk>'(ߴc#4 ٯeOJ#$F7_ md{Mzz9 2v%#H p%M(^IOrQt ǤF[L0kXfy쇵G+ʍ{ULv]wZ6XpHndX]3.|9*v +eiY[fy%4#!(QZ 0'xb~ hȌiEd30bx)0I{r1dW߷WsT:mRYʼ(vM(˼2&ڏꓠb$0aɟƍᆵȄ` XZׅM_=Vv,!<&_ Ώf *1-fpqle,_LR.tHb~|LPFјkZXϰ.8ΑȊ(3҂̤I]sQc2&7ǜZ4<^.{a1L@vYۓ]uY8`Áax4# :9M1ymX C"K2hY0>|ܖni3WޫȄva- *?!o%by ]n"LOc\ͻbY2L$b ב_0> ^Q/+"~!Iw?XX*|jd|T*C]°GR-;dޟ?3gQ΃CqYDds1f$O_b" ~|[y 5x7"KLd>yg[B8GsWjzN5t1߫"]:&& SY'e)~^_7埥ǂ-2xo/+"9O}C~fOeJ6%3)526Xcq.R{yʇMcqYgxdz$t,rl+|"2əlˡ_g·LR(a+^*m0C[c&G,L&6nf!b<9{El@E=ObROt xȓgQuVjeJ-)Ȅg`2g5AcdQgYr}"*`Mx9R1B_Љ{-Ȅg2)NJnk'y6 qDc rJ%pmkɕRD&<3rGVW^I%-S!#T2"wda7|HR)hi d٩?D0Z[-yb/H.H "`rX;q?:LҤGw!03,fNSUlo0Y9m|H]=LxJ&bq~)D;JORWb-JЍ# Odݚf(R${­EZJGl}wچDdS3d{g8+F(Vii!:<㱛þk3 OdJhw車@~\ 2j P/kID&<Ih=qվ~_ߍ'N Od1AD&8xyu "22+ LAD&LAD& "A "A ADd ADd "2A "2A LAD&LAD& "A "A ADd ADd "2A "2A LAD&LAD& "A "A ADd ADd "2A "2A LAD&LAD& "AD& "A A ADd "2ADd "2A L LAD& "AD& "A A ADd "2ADd "2A L LAD& "AD& "A A ADd "2ADd "2A L LAD& "AD& "A A ADd "2ADd "2A L LAD& "AD& "A A ADd "2ADd "2A L LAD& "AD& "A A ADd "2ADd "2A L LAD& "AD& "A A ADd "2ADd "2A L LAD& "AD& "A Ah c%7"IENDB`plugins/limit-login-attempts-reloaded/assets/css/images/new-threats-min.png000064400000046547147176754540023220 0ustar00PNG  IHDRhh1{tEXtSoftwareAdobe ImageReadyqe<PLTE*/@qEIXpdtigb7>ݳs1=}|{M}h,d̬̪Ȉ/S#"EfdŲAQ4b1h,ŠX Ac4bX,ŠX Ac1h,bX,Š4Ac1h,bX Š4b1h,bX Ac4b1h,ŠX Ac4bX,ŠX Ac1h,bX Š4Ac1h,bX Š4b1h,bX Ac4b1h,ŠX Ac1h,bX,Š4Ac1h,bX Š4Ac1h,bX +TܼjG@\\܁긺9551;G˿yȿ|G3N3hUL.. .^e z`7[AsbW⢍逷kA@6c_R,zS?}si:|U#vH9@_2yv-'cWL`,T[ڲF=B4="8;PA63gm5c.77w> ,ӣoԓ1ғٓ<*G73h6+|nxfmi,]:"ꮪW[Ӹ%{~ݪntzv}%[` 07g0h5ew.g`Kם4]xH3D ^xr7(=$FwhC' oP7~f ewj<}EWEe;:kMlZi=PC ܓrYƵ^/O Π2O` -whۺ2Z^ykIBL8=sȢWSe**~]3==Zz y^[z쵵Q&Ik_^;6Ay't`~|-]K̬k1ҤI!V"I/%34 ᔝTm}BOv$L$ K&Pׄҍ<'A6N3h&7fú*lQ喙&5ka„I %OBDI -МM^Teq„ΠyfFټ(55cڜIC ~)`ʗNA;xASh\ <5rڶ;YJ/%/'x$% _ ҃ R?Y[!/.3h 93]&zIN CN8&2`cʺdy Y0Zם9ɂ U**h4dHTS:Ql2_(dЌ9]dmdK!mN~`'#+n]AhOAA:A]e~S`g̋rrn'dZduDAf zoy#$&. Π) h v u%=?FJ`%=iMĕ)#ށdAmTm ܩA;a #v?3OMp7ب]~g H$6J(}#Hhy0XΆ gφ;YYE6jxa;7l؀¶av[2w<k~A$lg#މl4} yrOO;FǟzQbM8Tx1Ëqd%N"dgS.pEGʏ5H>h.:orEXZGm@JTp H8^&Ս4bT0~|*Mx 'k@h 1~Vڋ An;>F"r$Xu =ȝ lpEroq$:͠ݡL^oB2r9L!:P!A̩K #]Cv!v9%M~9\ߜF翧^,g/u#F0rАCau.0_΍cj7ıngmzEgj~oo^X5C7G"#y^∼4VwoF^A%7-)K|Amp:_6|h/0# qJJJ^ >Iyٛ$!6𹖖Fi^9{/"^ITX24A RmVFH$%]Cx_#ܐ5@Ie^CSikXU% Ws/Xd>4#aE̠QP-wO`ghӦYM,Bs$QKuMpM&8&x7m ri yBg9m>̚5+^0dV]x d2xDpm֬MTJo:[4wMxzc-n\m'+Y}~$M p s.$9rZMGP #G MID;r)qCX: 7`ІD-KW,->}{{5W[7 3lA 9PPa;+MzIb&z~EԦ7qg8 o"MGĝ/3hԨY}#.16GzID!1F[ŋD(9I N9y̺H<+b`vA4u 7Yx5:nߔ`!մXUmbub../B-tDӶoJfj']fд?ؒ _l> +qNܘxqcSuE J7^܈9e nWӑZvzf_f]Yܟ*\^5>zkI<:qm7n/|Oވ)pXڈdWE%El~HaPvnQ|ʈ{Pj{yם[¾ |yUSɓ/ ?`q)'}+ p_8\rdq歰6ϝX3sHL,L\ࡪzr`Y}Ɔrs*dEҹrD*:l)2RUUEv6R_-G=|9  hʀ, J!@H\k.*Љ)U?A+*\r 4U\ k oomɆcC;h$mܹ\ \J1>GNХX'N٪C1N!1Mtfg+#LU͡m lM+H 1T(Q`D+6asO' 4r/C?8/%Jsq\,Ν;#BA3a ׎@k;"9odln:1т6$tqn 9KD* H/OTr|~92A3yaR;T~<3H{`>>YhEd&M뷔?!M'N?z"]&( ODqt@۲!YkU86osFBBG"XJD qaqg<¯" 4:G<ʈ(`5 #7#/ ,6.\@ &*c Bۜ튇ya8fZm\pN@ꈐ)5zV!=BbM;GDfx 5a#Kbs#5ܹ BD\c6G`6 56ud'V4LÌlL2#0l)MND5\Is]PEઝ! .FM#+Gc_= ZFW)'0Q-9h{s+2@Qt}US:2s"`s\9nW3֨-?{@-JdV|6X<9dB>L@p9YPJZ|7 Ԙnfydb%"`ty^;Mkڜ@͛Hɪ&i § L`$b$np ?=;4jz4iڼy @aiLDj .& c6@ 9'VLlJ^#4jON6}*OӴhS4ATƌA6 PZDf"vto(@;SpOSƠ ]3@0l.KI `;!f*A+7vC;=-0J¥i4y>/xgɴ5 1ȡ~.`l':DβWt_֠85ΞZ-02CuR,lJ OЕխ?[xav sbu8À3٥RD' ?Cu"li\ɇƠɋ32j8D&g#jeV_!_XB ۿ TȽ ѣT4w7wiiج>u>ũ_s+._|tw#.fH3w ^]AQoTF򶺮+dhv!kv]FA\ԆN"PyxUr呀 lՎO>ykl4y~Oe5p9#lAP7بonǭ^qIجYDne}[EoyPXP^VA> WbTCrP)k|٦=I6YD[P'ނ,ȍe:+KnQF4MY=-?Mw|G d˟O 7ET3Օ4{T[5QcYY7خ;vVde+f@峴v/\ASmj8Aʭ%m@uK٤ei)p"kV+DQX<{^WT6;fbК9sf`f 7&PRH4pNV/SX t ̒Btg jf gUҟrGֆӴ_ȗW JBd}@>jh_XB-ڠF- 4kuMTkҾ[XY(+\`g{$ig!9ug?<[؃(;Rt)6hmvy. c[(Ww&SXAA!: tJΞs,FA'fUֹYyj#Nk;{"CvgyE}gZP'hU2; r4io`K5JɤDk\R+hJ_ }[˻mį P3?_!~|,#^2Z6fp%ml ![twAÇK-2# D#y2o[Кv=麍YG8h< FfJ))YM]#]\G&GAs|a ڀw)C֎ U MZRW> /lPWHvPՀH0?| W@bmRV![^?,Aej^M]/9,^G|a U؆- Z޾\2,eʕ49x:tz-HPKKj_j1{@a(/hJC;v7V1!JC[V~-HP-'Nm-_o!-[V/h*cef_V6j7 i-SiS13ސ:C&Lf ;A h*=g 3 mkwD ^"o4SR8|a  m2Q&Mߝ*њJD=Uo˪ę(l1h*Ab!&MHhpKl S/ĉN] g:TD4jlqL>j8fMvbo5hh6 9Ue364i*}'gFAW 'LoXfRU۬+eGU3E9m+hڨ։[`m¨Q bn먭ӶΙ͠KobocKk"j:4]b&rӅ@[Eh] ʹz(c {2A4McKٗ"8^ˇFBV޸0; O׈ L{T'J;?EhyˬR  q+fɁ ڣKo|ZBpc}C5mq3N_ f|էHKby|{}2^iNo֜=*ޤ_i{s!S Уŋa"Q3o|)=oMyЖZP;I鋟-^ o0fh:BlIxOLb1mc ZS4{3o- SlIiz"CP'SwH #}^j[f+\q,qݣ& P^RukЬ<\?o82;Akg<[ufuCqMڿz'^ .Hk&9&/tlLP3c#4pRK:|wXo,@?(%'i 0hڼ@cO^ 4-cChàinꎢYE24ko\W8I3h2tYIMk?&/jH@?h(ġ.og 7=n*0m ZYzUl Š) :gZw­AqdGc1hGTnM&đC\YŠ5*- Ĩܚ4+5`h'Yq톁UAubj͊ y =ZhV84u|] >ZhVܸ 'o&Ab@3O1Z\@30!Փ-4~1̿qAsh-f6f\N4Wff @k6D+7M_Ash1h&Oy2h.< ќ Aft/3sL mx׽E]vUwsg۹*w/kBh7Ġr"Ӽ*EAGl00+qH񔃟3F˂ >1t̍h2M韃 v`'9Mt;|v ]+~cͮmkO ZC[przsp/mh1myh2{Av`H5k$6Uݪ`D M qhc?Šn\6M!QhF07|qlcNFBfԔW^?6_X%F&.7ihA8jݰ T\sf6L->_fh FM@P[)K{/4ag?Lf<1 :M`Wmq)Z عԺZS0JcTOZ3[c'iͦ^k挩S>tZ@H"u ʴB ŠG\041.l&(PiޕFb1h. kU}gM.#z^lMan@C}!!mN:,`#hW`]1gf`/FB2^E9NVB]'i5}UB  DW:!{A$@̪vy9n8E44w*t3.7 _6_a/h*'iN2VsVNIH<؄f,oј Q4{AkW*lSwTS3Qu4b 5T?`q1 Z(OEG_u|vِ;r\͙@N>۵3J]#NMEG y08AshZ4cѶŹ9S֮zr"hh#úO 6gF84튡ܨ`O ?kٖ Q>͊I# 8΢=FEڀsAf@\})IQb 96j!?kˣky} 3 ]vF-E0o  6,5׉*vjlgMz&m0"1<g4kI˟goԖB13kFEsA rAZ` ńʨ`9k1h&m(jvRAalA4 !EX߃ֶ{M, 9s(h65.Y#gN?EiCQZuxf,f~ή4$-8?.4|MYAݢ* [nDeўǂŒ3',iQmZ3CC)έb4֬AvP0u ,s2߳QYsG;/nUCÚE{K[28Rne 2rWN:4sIjwR{ƭPs{sCeY^պs=_G0Bly@ץԘM\mLLjsyG CNfꉟŸͰXHF't?h ~ou 4ǃ'-4Zw_+LvH"ued̓{Fn3WtFʏL (c}kTlVǍ9?Cb3W6nɽwٷxi%l@ .$ɠ7iҤ j~!Mnieoqc-[vKccMqyV4Hrrs64k7Uq2ZrZב\^2|2!l^xq揞x[Hs,hVN0aʕ+׬t>햿*2 Z|kVBv55+F6UuE3A;SR$em FmUE9u)~%|ɟG<5a5 3vHs$hh&%999%e]rʺv3ݦHs"hK^o 0i4CA<(ۀ }C O99א<жvvgo0{vٳ!oh?AyҜ_K͆pl Qu#gY7\B@|`J*>q~EƏh<%P^4ұ ɔ |YCvق#A^4ϢqƏC D Ǎ8AJrq vZcH*OY@@#Hsh;G7|]I)|΍8|ar s4HrHbo #ݡ+=2lhYؑ .b5ؑP>ȑHd*C s<>t}m5k˾?Gl 7GX=:L,žz4\,qՊjkKӰڵ6@0@ 3@H櫙D G1y4($B!3\2QG_EZjB05ke'f0ʂ9/ڳG322): w3߅ܻ`»h ¬H$A: Eb6lz-m^Ͳk0aF3Hsh EEE ,w""ӱPYtlsET+n}y/۱ Fxʜˀ‰4vXVW EJ؝8 ,_ôh0a1뱄v߁h϶Vf40#9}4 by|%46 M^œIo;ߓph߉5l Vdt^>9}@l< g3U7Bس`pwQN6V9u[ܸh`W i:ՄɟYgMP0ff,S@͚cbAw7wjm}pJҼy-.i<{-wZkp!A% RPd "U$kEKK\@V@@-N3wE,~-aB@[a,A`ZRаaIU6@*P3% d9pt?]k9к: OC^ @[5 SAVm:wa xj:l9}u f-ܲ[a@nE5ՁBLֵjI]kz@Zu ԃt>?][܀}imN]kvf?Zl͆2` g[[-ԁ# <:r~7CO?f@=n?CՄimU)M`e#[Rϖfӳ٥"W /_@{z駟 P7'A?t~ȆOfc1;cFi~ˀ4c?>30?;+|#דKx!CBk/|2 A"R3(,(}aIs iNm_FF7 6fʨ'vvetwCRߍY,twףӮ]2njޢ>&19 Uy@~$v|^w^}F=l{pʃPiWwUM봏Is iN] n<`WdFH«y蚷cCDLرoa&+yYhKY[YyҐfe}"\>7Ǥ94G @^YYTI-Y_!lY ʝIsiYSVE ,ƮǤ94g-w9kEahu-i! 4eFH?1i"Y.,&I9 ={zn=eenaP**ê=-ANtpm\Kh1!*_1i"i}:4TFiOl͇| ]KJ`y(ΐ\4G渇Od]rd>D%T %= j Isi{%%IW#H)Y u>|f5~1i"y}_o0--O txuï^  <+~eǤ94>v_L}zԩHPuȵ`%T4O-]1iN#́VM:u*~N}ҩ' %+ e?1i#͉v=!t퉒72c*^ouY4G9q"uQ7,'q⨭SN-uDt ӷ|LHs&hM ﭐ(|6MBqn%iODg"͡v<Ӏ!xxӐ.̈́ k{)8siNͷ 8*MdW5Ⱦ:m$FM|LiwR 2-O}>&Mg!ZAMZUM H OQQ 5=jGyyj#4oh\=:]E飁&a|/ReCbU KO<-~Ÿ]-5cҔlIr3ZBR#HIr9/QŁg"`Hcڜ@ִ?7>V&-A hn|'9,XҚ;\f0bV+,&NƲϏ4P!e-ib44Ʋ~eiܢl!AcA:Yq4-oAlҺl 0hMZ _Ʋ`X&1 Jvv4h ZVg ZĒV>eiڊ>eiwػn Ew )u GcY@ZtS~{yGjwcA a2K9QcX&]0`"Qf4٨ @kmѡ.1 T?Ac1h,bX Ac4b1h,ŠX Ac4bX,ŠX Ac1h,bX,Š4Ac1h,bX Š4b1h,bX Ac4b1h,ŠX Ac4bX,Š4Ac1h,bX Š4Ac1h,bX Š4b1h,bX Ac4bX,ŠX Ac1h,bX,Š4Ac1h,bX Š4Ac1h,bX Ac4b/ QIENDB`plugins/limit-login-attempts-reloaded/assets/css/images/onboarding-bg-big.webp000064400000164744147176754540023616 0ustar00RIFFWEBPVP8 м*>@K$&U inw_)^catHā-˺Uɿ ^&sSK?zzyvzSCwlឹ:6q̟>x_(EU]ς !G=*9|AQl@oQضcf؇Xkjb!X> RUa=*9m!=" {bTs؇> !G=*i[ɲ+BO?䤫H}"bgMe2=l;~{*9h-ns`q D:C0ٌe`*9|AQlC {bTra ` #Kcd\ 8GY1+_C|aluD;nK*bӪgmm-,xԊ{вѕC+ZJ0*RlC> !G>Ȁ8pU6%zR2lwD!^#sq X؇(&Zͻg #(P"`w Gdgm툕*M}y~{eTs؇Js& ?Pnф+@ma":lJX |_ijWP{90TetDJըlTs*TBx؇=lC1p1r0GЬy.9=5DWޓlTfZ.|%MW,`c.)Px#N$C H*Wv> !G=*9|AR) ש|N;#RԌ46]*9SEcZ,*C ՙ>94rlC$\JeC @TSZA ¨'=Cp\b'ɲޢ z?TfZ.x[{HG \8|@UTY_I țL% ӱ2}x^{wˆI4G&Ze&ߞ؃/ dԚp1TtVET?atQ-/]G="Z' ؈rg~tQ܀q!$"9ZAb |ɡ6>kl*K*2iG)5&\>= !RNb {bױ%mCRc:!kJB9>${;dax¨"J絬i6jC'+uN-errї~{B cu,Lyhv؇(",)<=JDkzFdԢ2\6c)-xxcdw"1;$#]duXY@x6X!n&~by툼p/fr6(T*:kr,+nΘGQ1/f0; _i*(uץbsTsdzfկxK댴c֭scJ+pᅝ#DdR7AZC5'c0|AQQfxC^MpVP=8G Ɗ$r=W+rWbbN:Ӽ *2ю{ZJA ֑+p/=ȄDDܛ^RB""hr8l5$vhh|AM@#8f؟ - /DVF5x)iF'z///r"PdǠBu)=}|";-rwQlC |y4 L8ZF9Q7! (%>"Lj~ J@!2%N6\YMUX@\TtbMxU6⣞؉W^[Lj᪙c݃(A^hmh5bc㶭؎044CLXFex#53 VZsF0^=gח!G=*9= 'Ud<<.ht> C zB '  ><s{ 2UI {҄$> ̯skq+`*bk7 gWb {bTs$RB Lߨ)7ןq4Q^36Ж5ѩ6Xvx~{eDIZKQU& rw%Kyۼ B6؇> p\ R@'z㼰`L'(THG&na g9v_ruRL]v (F^_FpҼ]Z-G *:Ӵe7{Tf[*GGC 97H lLxYH}CRl؈mq)FJ-Z-MPI ͖TsP'18*?9+n_؇Cwx> )\e;$D |AȠ !_f(jPxDQ.⨀""wEaUH/6X! {c5=`C1O6>;8<=伴y^GME.c1T&͟9i$R95&6P> VeGo^9kCRkQdTeIpSm|AQp]^7ȼ/> tF! "ZGCjJnvl2G,h 4>"UFF]9!KgPў7!ӫb/ wh‰}ħKyH*9H2jM9ۙb P!4}Vp٨~O {=ETA 2YTr|ARMRԛ-Hިnuì=51tiG\`f1%b H*2ɬ Ox^;Tsx^{bxX =@khH/WbM KM"ve9gח:yu퉞> GQm^2fDZdG=): +Kb N> +";p;5, ρ%(ۣ/_k/u>Nxm6ഛk,Hvt !GBvɳfq23iw%rJ"T6X!ݦ}ycC>2C]m#~"c;dߪ FSy=[ 53|ʂMwikm%EDF6/(cyOWTsa2jMR_պGA\gs^[=dD \L1aG-Du2Q \`ώAxApդP 0 сD \kO9-CukLծ1> t~{{ i?sPN&Z! ^:FzNoVQwמ؇=ZCs.$܂ #6MGsB^&גC 蔀Rw x> F20jjl)Џx]?"^J =Lj)fC d 9\IlfGs*2/"^ Za2U|D: D!Z:0҅@C SfDTsgɘThQ5,;NexZ(/.g^M ;!=Cw6X Q{-jfZa blkD`BǚmY5&d=>U}y~{by7~4|>;f]Ddh>|rxi%`WӴe*wA%3ŋi a0sA]!_)4%9>@gw5I:"$O*xl {=0x1GSt)#qRPwD%HzM"`> ̃:QzhG7OXAO["&/=ZCEFexG;kAtH(D=7pqQ S ߀b;f= _=vDp~]}vi\*Mәm~SPՐ$ Wc+qZMTWXgq{DBT*- ܴgl,[ $Ə94=I^&t^_@Tsc! 툕*^U*&٩6N#6Cb x5+C 蚑"2f 6ǹ6Tm:L[2q EZI+MvP>,BvLj' R2jpZ($F1$<{>D57l'[=xI~^_ϛ~ X!N68" r}yj1m99}#O^;Yقp.ex26X*e^zlxq !Px _N[!\klC <1їxZ*?&^_CKQQXmxwu| ^{b/Rj,K]WSyk>>o$cpЊe {be]ae=B=EHtC' `?F^_؇ŌK j*K1e^%^ZM!EwRpаQ$`.^{ 'Fvɩ8=f6_L3FdQV$bݿ=x#kqռ,舒*92gjЎHfUyߏJJa !G=&OKF2`V)ۂTJ40# Wϒ ۹0K_ڰ j&kGbֱˠE2/eI6"|hikqWh|AQlC /hsh0*]wC (mtIxHxv)=IPvTsc`%r1%*D%txETAzENv9;wߤm|AQϙ5fBa˂Cވ؃*ʵi {bk39? 1TJKx#M6ٲq 絢)5yj R4ةX=jׯn$r$ 9e047$bJb؇=*WT؉H*9Hɩ``*9툐Թx(ˇA!$0/0\*9v`Cᢛ#źT!,JT9 \^_c! ߹&Bg& _2-eoǴ-o ؋ovr~C1My*AEd_]x3 =Pl-Uo֟F0D`1y~{arC{//a4/=Q^7R6o@-m~{b [RlׅNG$AR&KJ{ {bUgȪ|ӸRXZO/ʌtePK)(]/lLo%y햜S&Ԣ"DF9G>//lu ח~@G3IcnW@s-D*M̚>dXRK@_!H!޷xjC}yx/5F+a絬x^{=!I xALc%y~wAmY:i *9{g\AˡK0>`=jZC(WJ'p23GEjߕ^{bx"Jɳ!%i*`*9ȇd!:9Ƕ!*y|Al H=t*/Qbb# O%T&(NXUIWG=у/R>8-.\p`x}f=2$RnS]n# Pլ Ȣ~XbV؎1d 8@bCǛTXD#xwzF$C:I`<c .PE{#k.XS̤xC!8IH&Q{lBpX!mX!67oa2jMTؐp{/Hyl}^&*CK\-}a|Bq-' W|AF99, I'߁e@ }RlCdQ{喌sخrwikq*GlC גTN#Ɋ rZYi"|;ˤ\:c<'|AQlC _a&8f( Ţi9\T!N'Tt%bѕ> )= C Ă~#x""5&Ǎ%Wm$-{0 {1FT9*9{GKWA$KSq %u jfjNpԛ,-|oam.F^_؇HҼx|4 IԽ${"!E VCjMy'XC;d`JzBA)$\ZL >NXv!t`Hz*K_y~w2RC{^_2rxIc ]lC zȕ絭jBejL-)Hٯ 2p[pm6.yH$'ї8\;aqYxb b}⩀DH'K{)z@vέըJXIΉ!'AQBO$*Z>O*9SPxG-LLɦ)>C!B"yԻ?NhRHC$][2mWU&%M G! HC xةVA ʧt2/Ҿ*0&"!dk u2⴫~as9N]).ht>#7a5*Lc&I4$#mn!G=t˞9 HQ8NQyk9lC {b!V=N,> N>p~&ts^_|{m|AOYj6t9j;_1s.e@/*+ # kv\XQ߬rx_uFIތG=\ʴ͖xf ,TsI=S[*U|AQ܀~aU X[@ !I@ƨG%ȋic-"/c=D=x5I.exM^wT (>b"VU/LC {bTs ߗI"b Myy~{bgqu[Dxho2jYң0mQQWԦC*C+CjޜKCۧQl(GCH!}1af/*1W愿Vl~S͹6y}Fzf3FfmC>0:(ԝI+fv؈6H! }h)t$wQSz~{bepwE#3 +AJPNa>X*Hq??x^)?4kRl {bGt)oe>86X! {cakHS01ypKNФ+[tYvS|4huџ 6(q`cSLpTQn2* 46)侮'FTDG؉N""Mw B%TuC =*Knͭ8'5=|~pe!aELwzh {(tJZ&F">ҭ&5R% r꺀U&=]-+#I!H8L{UX{:NAF: kX#AxL_ "$c؋f{Әi>UFygiqс=B;*[33)؀DUO my~V(Tr^[[|AQGAIy+E_`ECfTuL&f2XR\6"cU|`+mrrvMa v.numZCW=>  *VQ?* /̃󵼛,G^_Q܂2`0^{*Yy~{cCBI-x'|t4;/t0y~{b oN 3R-̣/ZOحOA@y:W<VxՓ|f DY>z͐(! { j[8! =2C%UmwGЏ/l-'Wa[ZO^5 {!V=olC8yjO)UBi 'wE|[Jj,JԊ?>B%)xܙ $$ۂͦ d[k\F^_9!0NC R:@asA: 2HQ̢Qʆ$>J KHtjN;4nJM>nn;܀A ӫ[-ɨң.8Ifx?6ɦ0*="kOK [hy㤂 4B;<\^˳"P|Ox-8ǝ1QʱfA ;t:V/($H.:MmN֍H6VMEzG= 9ޔ؃J;M@H"N; dl}"Epn#S'-GR猠b&M6)`K! {e &% '_~;ˢU8>Y«ly谏 *׭qBH*9|M=5(d^d{5qqP"9)a {GHTwp;wYLEԴGcTEN rLG(o`ڨ%8m9D)1~gel*)o:""zE EG*+ԛ 4B>q(uG!kBuNabcW$=ݸ2ݱ*:#{AɲU/liSeY x4> _źW.0)foXPy3v>3 zN8B#^w()<ݱ {vH@:&^{b"*EG;G@etE skrCxY#hGFJiH~wLaܚ"%F^o9Rd.k.\Ĕ;e9[QZE `mkE&e=ZQ9黉}V1~kZ;G)_K6X!U*y~{D̚e!DZ)Fa1jEFg`A4>2߱eoo]Iv)hY%mŕwRԀbS6nH[7lα>=&鳫ALE%QM2rgbԝ!CɩC%T, 텤A|5 .{/p7S%nN̫@|I5׆~(Yds/@ ԛ,)VB`=|?[kJE*HGsnePqEAN2%-)z(pv - \fNb"x~|AQ^9eέv{K^ZAH! ~C>mvAX.2+n b/ )j5=ˮ}ghivV+=V 3^RhjwTh.3v#6VfK)׃}PFVEy~q8̫%߾/=쾼,鏎Թ센GK^7  ʋ־21FMH:AN#S"0LnTt8#N9Fg.:-5ZE*9ד=.SٸOD[*'VOa27gH$*RW?y%M l+ ? An0~ Pm۠G(A f~aṀ%l@z/)}& Ky툕*Ma&1 HDni <ӭ86LQ#❲qʥGxi%pCU|AQlCb wם~>*Ąq}pDT#3[P }yH56X"*w#l&ӻG%ye^{iv=APĂqA9K\#9W:9=q rN9 ^n4~{|Ёp\3:A(N,d}CG>dUI17.?D' K \#KIѧsc!UV R Cq 툼ty- I+eB@bT퉢}d4b%Je#9EV> -`%o&۝ӘT|E>.nAʰ_%. bvō . ,rx}`d z#VC8hCM!u"\MxTyB!8l3TSb1J^}Kq5WfUފ>(X,w@q@@|aT&[8*Nnk|Je pR+a.`[o@=O]{,-pW)C>e_؇^5^#/f~ul.)XA7CRc:t$߉CԘή5WJbRB tv2P5Uȅ[G>"Q!h +&8ҧ"ZCI[BteWZO ؇Rl=֬L}劐[ n㦰kq_|KŨ:XmIE ˘^We$;bc*e&ߥ L۳E&ws4AGáEϕnUts@c@k fD'Z &3+1PM-sNhA`> oMIUfA4_1lT<ǝ(Cë0NDDh*מ؇Q\"ז1oڨաwtx˱0| iL]KktP X9Zq,VDqFwe}{zv!G= F9pM^M߁r1BC0k!ԣ[0ILɴgbdnfb RT.|Z/60 )ƾQ`2uҩ3 (,Pt6>[/ 9|AQlCN|AQlC$q 9P\ŭˠ-x&ɱڗ-W:ӝMTłMˆVee0osZJeRlGx//G=Ñϣ//¨ 6'ttT -; =S6-٘"_;,rxU{-Hʙ`#0vrfϤKS9KCVx`h9 bT.9yoHY&J&spqrͷ^Md?~{}PH*9 W k6KubV!yHeӲpc3Z;v^%|@J5)R.)o/kVX: .}I> _ܵ!Px eT#/u!@[ [2*@씛f,oEG=>/LeRkɑ|`#Fѣ@ lZ5؋8E"a4#2 &Ts(I^{arC̫Nb 0K6X! {bA9=ɯ%@dw>@pCYq=|̇dמuVm=a_zNN/[ѴC |AȠB bm8C {bVSEsۯ&3Gr!tͿ-PJ;R|sNbϙHD*l"^!C!6t{ 5{ٸ݂b3%e 9T%eI}+ 9k_qp6D5x᳖6R班@K个#b(ScZP툇w{f}X> "aS9iv ݳ jiTC.gc SŨژNF,"0xƿB9UJ|e vjfH=1~|ʵ,|AQk@ai:Tsy^VIKУ4p/EjL@4> W!TyB! L>,B \U͍ȫWWмtc t ~^_صU"j.^|p땺Lh{7؈oINo!oW-U&&` =:'t?t =A%KqhlEzx勌Y؇' "*3vfy|M^e(g&F^k516]j &؇DDDgM?f@RMEVx$cqhH֪M4O EnDA/^ TU&kP6Xq !RˆM7T~ 綜C |;!kdKǼ~z)*9Ict_&Oѡ[<)X97J4=KiIa}Szz*YtTPK" &DZG>f2j} @s^,{ٻG!sc5+Z1Ki:,t>d8¿/lC Л!M_yaor2"RMV@T^sx^{b/xЗ|AQvnj*&AљX1О7;d/>!VԹeȥHN-I8q5`_hV 爖xnWTXlG?ovLj*9GQ;"&`KdeCCrgR*ak խ;) 6DMŢO`bZH*M$ W+gLQ8Kl +1UbV&o/gZvɯ$&]?*X!QMnߊ+]$W6 z9?X! :iI %G=1־et ޸g'lA';DrAo?ZO#F^_nn8 i!G(M\D#`L>4x8wXR_ڠLSzu }|Πeed_%ADDo`!6e!/ 7)=ET *=W^{b H! Tjma Z@+-.rHFw^ic1=mg(=MΣ;dмnോ>-#/-z2rOHYph$GTuAj~hՁ~{cI ;Z#puXpER^ [-HZw#"PpX[J L^zekYHRέFMj^8hy~AZ4#:V@ =c}T2bͺ Jܩҽ[o .L÷ʮ0^-P":"$_ e +S'4W> xE켿=|e-U&3ME49Y^`86؉T? $^#`Xi8 X 61cRv JAO[akvC-U+)Rm lC sS gɘTs!m9*2//lZJ[KN|=S H* (֯I([zA.{y~^[qH'F^ZMx// ! MNR5`8;^ODIYDHVXerکa>86B9b:9DBxUt9UEѭǞ?2NPCؑ!6fVЏoXR&^ȹצo]#)ߝ'@ƈ5.9%! ؇ l$|@<(k݄d$z9T>"]z2&:\oe&ߤ ZLeRv4ہ-M~(k l]p,D2d:W7YcR򑟿$ZөowXŁ$+mZ*;Eݥ,giG=7XHC! ;+`IxZ&'&1 ~̆:ϬjMEOZR5 0E8f.8[`D)Tp0@|DZo[|Maq}y~{bS^u }>H:x!0^ח/lI ?+/Зic تxALM\'ighr:@6Df q+!ATsP%AQ|e#^/rVvTmeAs(ѝlP{jdg絤1ʼrVJZG \@ʿ=Ü4H#> &@t{-q3:y\LBz!<MYHɩCͮl~QgŤ 9j̢\]! 5i6{*Q/^x45z*9텢/%7F=hZY㞏S $II5#fH*: *A }W_-0kheH9u/aЀs0DL?e"%?_vQi>\acwkK\MMa#=B  X! TeR2n=H*AeDi&fMyDN۟Pc`˻ "^O.x?F[h\h>N T?TDjM߉5@TuR

=>T;sRl6I@kngșk.EїԝhnU?RmFZC&?D0^=aT=$vM6 W\`I̧i]&JAQʏnx26kx\!6y%\@-r K.[hD؇Ė2 %NC/M54.1@YR(m\@N@pmH)"RM{:)6X .ٷaud:ŏ+ЊI{b;t`&ڶcTn}y=A /-=g縧!nߝh2! bȣ#h3i@98X`EEQm"' :-{܄JA |AQЗ!PKsؑy˝ 䪓^ϥhm[ɲv#//GTr}2z3[t@S8o9Zqb _- [!F9폳e0% pZuv-O@&6x!&||72j*'AvNH}FkHOa#C1 >!X *)5D, y~{bHZȰL*Y!J*{MCTd~{b \*,I,$Z!۟F_KRhD[ ?t(t e ~T3*Ԓ^I^xq<@)c |AQlC /.|#|iX3c9/0 p/B^f?tfMnG LDt Vvs qYXPD8ԕ{k"{;CI.|Hw׋ICS̓H! ĵ ͺ[3%tPh&smcE3|#Hms"jpW:Gskx[Zcp^çڄ6DjM㐶9jMC0#2q89]&`2uc2LJ>"% i0ŅG 5i]) z*$lC&@m*β$#"#hEPFrfZї50Gwgkż36%8- D)hA7CE1te8qN4jCRlCɲTC^J r"Nj:#7M^zcB4A7`nLZ>^ qׄ¼!u x^Tt64֮K!/3tϟeìBH!tx;j|?F\GW؇Oɩ6W7FH&+M r ?SU<5jtb[׋NI9NZ-?:S㤁[ L12Um $B>dFӥ!HRmj֑%Jv8njÉ,ڷyiձ+n b̃86CڹfRVBl?y|d\#&v"4:HG"c X#し~ !I|@CҶ!pO/B&>2(ĂeȣP7% rrW^f~} d4b>S:c4o ƼmXebsXgxt)*u=D* E -[ȼ4Aym(GcRl;Ij~ ʹ" WI|a=KI|ns;u2帇G(2U b:25.߈SoT,|Ѯ[<%15&= bTs*AZgG=$"kd1 z &qRn_4(Lh5RbQqlFhwƈppz6X%*1Ey툼oĚTsx^{bh0pD7׮^{R{T'rZA[ |0 Z1-{A#hGIe8û2Xhd'a4ѮƖ@@7iuKTw c@0MxYמsXLύ!6֭{D\28xh%nߊZy! X=vU`!'F[;9j_WN|AȠ+kq3JDT/R`@蛆xO}1i}y7{<:3:0|!Tz A!S=y6>.kF;9"=)ĈvUR`DL]~˝˴W^voL|%,` PAaؿHNW6)6S"1Ts!,>\*py_؇>0T&MG|aTRr?@4: Ma7"-yaU|L?7rȜ#]*{X5,il1*! {6X! 7CT^{b^_sTt%/-KwbGtA 3=CK3M*RCNR lDy|AQlC  2w3> y6NE)!"%AզlJ~$>4؃Jɳ09 o' 4bhp>a7 H@8ϯp *;S8Y֠E\wu&RxD9TaY9:9QPKtdas {D!rh|AQv`iš6btglB cfDDjMwy|e"lxWأaP {[yPCמ?]jAkcъ(J*I} l mݮlɌ=* b=w= U \96J//0>͓oDDL9=m !kR3P}pxh_֯I|۶ESyk6k1&x؋JS΁=U0! AWDT0|iLgC1[BXIцO-;'E=]._@fzFBfoK6ت?[x>kV6؇v~r)!y ؇&}' DDL>261޼,a>֑qG!nqżi U Joo9\3fȥ$;bE_#r ZF:*ԽI(W;E/mJ//lDRv1dNq CEZ** y#an`3'lG'!4ђ05>!bfIxskH t'mn!G4m|AQlGk`" ĜN9*- YGr؇i>ghH2_\ 䁭u N}.1`*3pv؇ԢOzVHjX_@YX~*c9//vk NsEtRlC> C}/3m])^_RI6w<[ ʫM2RYZ25ѮRfa> =l Ͳ}}zѧ $3AT3'ё*9|5?'ӊ;]]//qUtٌcR^nFXLQo1,w@HV XCRl =aã^{f,e QCv!ѦAkQ;lE5[Mj Y { CF1 %8d-7.V @C&eZahG ("G 1X[B : !$-oz Ә؇H!›"u9PtK5IG=9o"% lC =ӧGQ# C$dH _*Խ{ PqQ*K6w\`A;p[2aw /=:ɣqemhJoepמoX@x^|Ml6E_џ-}/e폳YFUo-f <24}amogyJ^, 羕[,pDu_gsTsչ 7pS_q@|5zvRn*6X"-lC\m"Ì 7o gA޲g<1 kI|9R*L #,s<]oj hcA5ةvhй#y'=Hv> @iAR' /$)dp;(NC$}s:ݔפּB^a٪-~f9BUA׋t׌ "\orܽbd +bT|T]8R:Tv"$4J9xEcC`z[yA@QkW81,E`csAi]"Idt=p*1qvbW}J&{3QGjJƸїiA7&>-z$̃@k85&|Ey~{}K*s56Z2- $(9~{iYkqf2p/dV.M '0=Tcf!%S9d<@7#Ek lGm ߏ #s^ =++0|Mؒ/Пdnm}YdV> \0`=S3 ߅0T 4"ץe- Ӆ ^gv#ݶ YƯ XĻׅu썠* K @o3"lC {bTsb'~* Y3^6yZDxZurZ NJ]5XG2SD"9`يE"^lD')J~^{b8 J{/-\-G^,bVY֯/ʌ&afˣ=ւ}Ť$TI)!$ /=6^-<=K G\XjNxRm^+zsOe؇ъ|_{td 6uC+! Ă xdb*-Y/zhR 4XM%+G6rE0Te)#xO! ñOz]h Mr*9혲M>*YBqȌb "! hy*`*WzLj*9u&xyf^e3>2jcy%wlH塺^,׻%{3 a&]  s,bU'L߯.#~[5NN5[GWgY19!ޟgS-<5F:/4Tx~Ẹhp4-.#՜;բU(ѣАbe]*K8i}&3>ғN|aTJ~1̴ Z歡+ wMxMG?MJmÇW:\b(dBǟv*z˓;e$lĦ~AT.JZYaPkq*9|Av~Iz/{v *:+ɌYceP d,ۂP0qN`6%x5~D+>ɍL%((=0FXvOw꽘 1*Db9, ğ*PD&NKdem _C 3"*їH*9Hගb}gyp/(bM{꽏!Ɏ}>H5C`6Ȍ@4\my~{bTuqx؈(#!'1G\ +>=f^{LyMx^|26ؘg" Me{Zt"NÛVoȸ ^?}1y퉌/)ah;z\(X<$QfUSGѻ2z<_'= #gb!V#Iy~wם˂㍺lqV `lC {bTDNmw!  ޼# ZHޙ()`H9Uu MӇ1d~ZA^ƆeCU~ѐ1*D߮Bע:Wl5jelC }B~{i(R ` W*.uNp5`QemO ؃Y>@jzrbǠM/TlYs[6[[z(Q)~ E /=b $ѐ1"lhq*:+X~/@^g 3Z9Rx"d7- K:a! BnR%mJ:Qk2#$7CFURh;h byɇ'%@S;yQc^lWu_+_QO. g Pp_K> 2ppg̯-Ic#/-}&16쐶uX%{b̉GknYҽu!#qA{46gB}܂u#QERcBc0pI (E/lE~8ƙb#*_D=#NN <֌% -:c]˞⼍bԜA Yk_)#SG4&aފeF"yja7r <b׏oyn$vkMGQszH#@^\pD%%#3%`SkH8R*JБ1vO&T^θb+ 'Q^ob? &гO@-Qu47^NӲr?7z_AjRns_evk4O'^*DߞۈDPܥ&mB^*VS".f> HgzQl&0ڨ! ɕk!~,-J"BEAIzǠ$gNؙ HQsy4cX1:6X"ƈ؇.90嘍xpt , zήGue@sYzÙpԀ` C&/=5& ׅNA,F^*"߮B׬bͶ!66sب,d_3{6WD"a T,M^о8NĖ$C3YoO34w|Ȫ‡e2!_zyRtc0<%3JV sJJD;q:nP\\1S]i׬eNYa$Tsj~ s> !/zfk=ET,qBa!-1,Ȧ9yiYE ׎ |DMZ$](o2< qCϢ\ޱ<DF~&ߞ֐^Mx*ErzCjFlM/|6q4j8^ȅJ[tV ̕ ~ 갞: s/)iuVʳfm_EBV`8v Q"R\P^vYMzB^_؇G B>''|;D9A/cRlv(},ب n!L@qU1>e_,āuÛzxsۺȂu{f`Nw;әMrn=gM5IHm$sduz7O}aˇ PU//ϱ2(1i!/SwMde:D؉kl{F諆OPrDk&H\ ChROynL Q֠G ,Fo QG3f'Oɬ'aa5{ٻ C>!.9 _Mv$ 9Eb{~!K uBT0޿,HS)i{ B@-`=O̿ע޿޿ܟ$IIy0?(I`@oiOVnku7LJQLFES k{+I#-O&ԇf. ,&G"ݥf 7&;<>\@mn>w׉hodǸlF%&nF暳~}Y$ Ҡ4J,=5՞wmꁱVPb͓ܖ"؀rhu-eE:iY˷;kR;d1JH8Y.YVIthŃϋ1սp-4~n"NEP8;~ۨWBlKP_(0p_^8 m=c f,u8-UCc\D(ҭ qiu:(MQ[%[ wS5P3NsB?|I;4΀⫄C& 6|:3әPL<8x\?}NT]Y@c{oR']EHfwתX;܍  yl uB,(NdL,0dt[@^;4uL)+石r7=ٿRSo/m3w)2NEbBcg$&18/.ϸBUwVRԟM2A@g"*ǥ1~ yJ anMI˦I@0o`+ 4窒 Dшc!)ӯ }1dț p6Å P_xM j.N##HQu Q88`(=q@ /cvb_b]5tՕ,^?fF L]scӞ~I~.606y"6b"$@cֲ!nWFqgoM9%TE][9;x@|"+JXLi&;PU0qab{g ,r-sPU ȟcxqv0$Z;>%bx>(qcAI0LEywݼfu'}筞gu_lnnܷ#y3hpv%A19",ٞP773I.b ?j=U0&O?4t^P᭩ҙS$dcǰE:y[Zɵ1<#'O51ޚ0uJ@)y,_DaܓB3{XcP{41G~~fpK(kVɉC{tBtm&H4`a5A(6v\|k5{6(buFYxBԅ< уLCek<;ѓc@ 5ݵ a:1jbE\ P:m5w3uJq{GS+d[7<0rW_g뫕f';{@9{lčC:eӍ^wIȀž@dlC}#٧Ď_"9@.ř"\\)}$ 8`Wox:D7tFZyMƲ+PNEݺ(,˴Q (mCo[84tk&"0{tMŢw`%%k ,+UO|%~VPq VzsqDd [&6w̠usBO̧FRi#67.5@R(ҁLw }pF-hB^gz_^EvɎ(o='u|'&!.dP6"زXؿ^Sc=X88QVč3 V(TK".[eШ ˜gcnkN1dnO qZfg ::2Y`ֳc#+AI_ꅐn('Ӳjp}]@'zUjs RÁ\j [>Rϸ\4<Mtr5-pjϲ@>D4onq[Jb>~%vec Nk\dIA4 @Aw?C+ ) Dif=s^= Rn6BVV p 0+0Zz՝~x{*@'\߁}p |GnK@J"I{!9p4)ʾ#7 $] *z0j{Pgʎ5\-3Sx-p39O^% ֶ Ojxy9rCZ'<`h"")8{#=i`fPDGM]ۃ0_GzB@` }q,6X6z%r),.b'_^df)gK Jx1Z_XjX!w}`IEM&L% $v@q8Jj*Hs?PuՒnk"G(7K5 dyج%1}Q:378qg[;o娭Wfo}cȀι6\T\Ⱥda3wMޱXAPAEJD Lb |wi}! =<# ]RU9)3<"_m_)!? / @~ֹ[*hlo4$f?Ǭfx%"v92PowY0Z;y<gwlN;@Pjt kLz5+:Q[ hCˌ>cJ&.$&ڧ=%m[8poP}L]ċN9l_wHO2KyDFEkpحZ6[s2EuPO+<25 BLHK.@'j|7"TБC8!vmף_q B()7_/}9Gh t-d5D/4#b¿?x w8WݴV6GK[["cwPBq =,XQXԵte)|K dpَTuՉeʦR9UI=,;>ΖLc@ugU%ug[s@g"jRg=BֱSx! ]zGPkW*:" e9o|n{j-XQs5J8RhFu3H]x Sq{ @+CW(R)ʒ{cXS)˚9 ng7fށ!Kc f E."hZ9J`CI- ęEIlw|wł4 Fx+2'킺*L )xVƈ@`#sܣXrhY/XB}滉>ƄF'yY9ShCC7BNΉ-y( ;@fPo7\c`e_&~[s@g" y,V-2aEb~c7G@oHp 1+s?/fB'8C@j3n#V5KR_Ȁ"/RrH&>@/x$"A$ #V k*G&*eIP v t͕izy=Vc4t|G@\h ;Nd}yPʰ'6Ge:,;h QֹCr؍l*KQ 0pcozˉ#N~X= `5\J?VZnpBXXJ szۃR Ҵ64x%d'@\X)}+ GPA0 ȼ0 +!8"K0̏3rӜQIq8+#_Ba x ςh{ m؇(ɪRf!0Z4vTnfNs65!ܾ)_8$]gOҎp`%</dEcְXIir2ql$7L'0pS 0~OHqLe_-hrvf]~c'䁣!A ".|O5Bz[dksk" ?f\Oi^Yum;뢔/H70J^wZ Ff9.HDYWk]YVOe]՞j7+[nYNWzM)|ww,:0O: iA4%˷`.pdځ98loxn|j tݸbU}U8:z0֩Kvږe3h V<e(~ zF'Eq$+AG?1CӮXġ%O76(`vo:=θ+d}Avks@'5rDsӪfզ+l)^Ż_н#h\+{H<$Ճp5lkKk!g[@7S՝%++fی{Hja^CiR qȨߚPD8h~GW "+S_8/F4ZoPX0S3)~ yä >UNI)24=^0nR@ĺsMR\vgQpbҾG}|,ά8W^"&;x?V;DmVu{bo=TXkq\i,7u"^9ֿ^Yd[dwT B#{s-,buDUU]c@4V9܃ K\9l ݞ`Lk{@x)M3-ԆUc!DtXk|<wx QFS54"6Y.8pn8lFwJ6M_} *zyӷ5>HM:;,fY[1R h'wOh̟ ;R'np!eB|:Pg7VĘ3rgPjS%2',*T_[P!9H>0"2QZKt_!;rVQfi`6%)3t8{c z+zN)פ0 Gз[B t_G[D\w!9DoĬtT۾tW?NNt.cFl Vh/ JÀ0P} ِy3!b'Jݻri#rYQE#m9l0̺|Iy]cP:G6uWT~JVDueuD("ۻxDbhv^bF)br|[voe՛F)#w?vK\e_[B00[̯k@G߀u?:W5=2}jȮ{-(aH@> 'd e̟\E-<=nC]z6tt%ה2 eRǙ ;Jifz>Wr^A w/jH}75zeWq[%{9yJRTђ(_x@EȬ\X/{zcLTU'`Y\8 ^KEuفD/K"s!-Naoj_Xw `_wYYFUn;.&.{54{ʀ~J=Snj &q-@I5GYg<b|@$LJ'Vk0+eYH"a1zA؇K /:`..8Ә3b:|WJ;p"z.f_1MGOguLvXj'Et5] ŠE7! D\d5;ōBuk;ϦT iV'7@TNTM~t<:oMNqH/mgsCNJg&$EQF.(Cq@ǽqFIA-sV8IE@35 `j<S1r}FTm5H~/¬hB^+FtZLD0u)ޭk^}dhxnɋ׌` brD7GR#_<q_r@Ro^YBhsSư!-8:rJӰ 冒 Z!ƖbIλ(4 upr촸3Y\'ˑd{*LzgM1i, I Q%E8'6a% O7P&j#x+ntipP@5ݤlj 7 ]Z0wq⬾+H6k%g"tB+jˁ/悘a% `ٸ@ tSʋƧg!&dt՞Gyi;@]7QE x3OWL9x)rS@k\*igL}ڴO4gR~]N,KCW'hKb)MAeU 1cpl$A&LƃRRxE^*I]Wm%'j8dUDAݍp'f)wp]2o[p(Q` Jhh-nwpkxXkl/1rL3Mr{;rv*T4o% 8WtRFD8}jcZ^ir3uxsUgq(aJ0W)K$|!;>nsU4aPlB17ZDB*uMHa{i(/ء+򻨖۱ &:"KFdD|!(pH d`̥Ej9VSJkwYYeЀH 2?G\{7$0\_Ю"n2yg =3 8`ƞŇ뫕 s89Bg<3ESm9ʤ3wlc ,1aO'wtd)#FYҭsMFVq؝W~!=\ X.ҌZ, "WŮ :OnY=!LhźlRj7^@{wGmyx5(Ã, g_0%P{ ҃O~}RkB)qtHr&@rEg~9 W R|XjTd/_W鏜܇^ÓRGBgN@ -i6&WYϘUwvJs#nR{TônJ+At-0 W7mB zW dznl b/y:g|1pVG۷ (1r-wci[9N5YC/R:Dx0pv!kB0xSĢL\WBx3ĈI0!kosɒr?Duyw&=3;6RIG'sᄛ_leBʸH (6_g*zf*('4v̹5 "M.zG?ׁWuI&͓fj2t\Z'6J@<%|bVq̌{Q|>Мq,N:<5V @sa.DarNlTs^k ٠].OܩX"K4dMڒ7 -i5k AL(fG۵8!N[Mv˗>RЕ6"姀t|Xs8l ,i&m_zęC{aKW0'1fڊZ Zjs@C `:H}!o]Px{/O? 4g^ 6&"qL}LʝA\Ikj:&/{HuB}] %ߺPUul1Œ")mM0Oͮ 7,&;4aBjI9 IN1ުk ";}W,*enM~nuw윹ԧj"GvkǠ,\__F_<)JI.b$"!UHu9T8kԴE/%: 1/}4J7$%De-[ -yQ:9mpTyxCBagqT* *DD0 ˿v9Oњ`[b*Pl9@ӦoD;|vӣQujjZB%ljF{GpK\6luRV[I> J7IJ'4#dDoc aSLX%?$ׁ R, u&`7zwC :}$Otwhꇌp2V+NʪTeE9'ՠX {_yQȌH򐒶7bkyO75!ՠNJ_ ϵH"x9 =f<8bŧU ?BOŤv;p;b-vb8Sb4imӖ9gss;^Dܭ'"] k7_GQ.ߜy7i>Rzω R.z'Q3= >cWT3m5<Ҧ7xR8$oB2ᕳ|\%z(9!w.U>"qQsDeͳBv o* DmI.5THqB|@5z;,yJ-C-VBL@z9Ha|[OYx ڗAZKQMZ*z~Ag0 cz? ?5$y*~OQr5a4v8C}ΈY-Y"MC7b";g,KᮦMɷۓa=&zUZ<Oz-˗=0\>w;J[wOn^lCN(ҡ↷r#_a7I}@h$fmZZB{6$oQdXw 麗GGzbaṭOXB9=f.և6bf ?`]>7Z/VE"O|鰽)Ȣ4:e@@ +ɴӆWiHmySatj*$Z] 'V/ֺP> K3㯡J.\): O)ea8bfX9Wɷ![dibnN_T-By--#Y^%9+ \H20!@P//]/Ё,`,jɈkQ:jT=e!PSKy?4 gU9I?$ &0. n90e*a FTY&J"5!̏KicTqZ|G ܹeUCDhM cknuABɎdN$7@ xr‘n8[ ]\X3җ!5 &.2sdX]QWd<3ԿICCHmd腿29W:*0Ų !dc˺yK HHq1l|[$RwXqX-l|i!Ä1+IhיEqxw0NlݤJ eMwr3^&2%\i lEdQESyrSךH,E?0ImDS xC8hû)Jrg.X1}$Ҭ3%dc1W5hU*D?XLlٷ^0W nTLd0/N@OrFbL"+_] 4UQQ0n>"DzI ɐ:O Qv̲;g~xX9c<H[d%g;˹#*6 b[=^Opߒ4LmR0A!> d%Tb UVm3tkc^MGB6րY +ÙR'D) Dac/sb@Kw'nK)<ǔМHk'vr[(Z;}囱p&ǠբQm0.d:z'᱅9 q ]:l|唍~HА `䬜}U/U6H!LyXK8v*;H O<5KU*/nT>ӂ\JPFIl>X- /A]en(JyHJ^zGx_ugPHosCVn9F"sH]z 0xm_$:`M Ve ު4",Iag5U]! ʂB='v~!]f[&ࡣ.ry Q"b_#ūuyXIpad^;:u]ѫ#m94֜5V"si_b Jeag~PfHh'W*/Պ:V\hggE؈^XiwQ:wͅd"fz5-sgʲ(@mwIYS9n`#PdX/P\M`MA;Feħ/焃\R"]Y! ceoĨn\IٗX8$\x v "Sq\oXWthg!? C*<0q_HEauO+) ϖ4Qn +%*jm$Y?$c^fFy#Grɩ×trJ4Ec;F FcU/43j); $dC$ %G}~$Q}~&e>sK6rF m4 xg, *t|O\U o{0*$[$ijfPO8蛊PJ?q;)fܧ sL;&G_``^wnI[^qYE]}ކ*262hdÀ'{𿳤cOΈJSCt̪zr 3X&jΧ@j6~ BVNk_L"1-px n^[,>\)s+Q6kהfR|R @c (G`)$* D{Dz8DK7v GƎ3|.Ֆ9_K%Ww$iklVi93É畹.`qi;L En *:<.yV'*'l'?e []ՏwOd`>;% 9KNs3Bd̎ V@:.+i7a[sT;~}q벘 x7C =- u 5o˲sTfS1ᖱ.kAE'y:3VnBSe@5M?whN؋;1>5JX a.XE ,N) 'Ě;'*Xo/VDžR fUBPEC'ޱ)T5l Cug\q(%  G샚y $@ ZM1YbU$#:q& AyVwl a^GiC,Gaw咟(3.җۨ81zDH9籬@B3 ]3cz1{paܰJXf[ W^ 'r-.SͦTO{8 hMD- a{8  eFǡt*QS8vP.!iJ쌄@%@[ ^h_>jJ!QJ1}-]ON^&(x߀8qcs8vWXwQmp11.)ZXNäXץ;n{ :R\c4 ]jӠlq0 8ˣӫ7Ɓқ QBs39Q%ܶkp8%sa8 S+hLCLW!dOZKgu!*6|*FsAY>x&:qX#Ƴh;1dBk~6^?>@~aqdNPB݀FĂ4A=3G)y疸<\ΫB=9  h^q)#2BY#_&0!9C 9Lbԉ;)mY$.ǪЭ鞁הJۦT)#b|m5Iz0| &-zhiRh"ja^ "\C@Tzƴ; <<=zȆvtk:graMvM*n^Iv7ncV!D[dCq+pUJ8+oSԊO`7=p XY1ym$Ͱ#qs. *:I)"hR/%1AɈs*JpcYu{qcc[N cSGb#c=@#< 7U|I.,Ų@^ɸǀ"%nn^愲$Q)"#7go T!]SC.H!˴8G$7GK{–Itp?ʝz ^#߇e 6h|U5/nVVK}vѓ$=Y*V0-,,s:zv[509Э00#k}QdJؚ#V|D"2P׶'~fE#FSu0 ~ _uF_tهXu ℯThܴ.ƞS#zAY>^@ܱ-}YQΆ%֖t  F Vx4N 1hѣHB$91I:_yWr5V}13Y&9\9"aMXڞH03ׇk|&oS` iD#|ۥ+| ьf8eNۤ!ǁ?A8 " k u;$eWCKB(T:b-F^*C t뜽:>@nmѾărsXcS}ˉ(=R1%V bډDд9Q$F"[:¢?X*- rXYE$'QO|p${W>}⇿ay 2IV6fAC-? Q[G܋-R#R 8"-H"iWc ~]8[3Ioג,ʹlښlPG@"+ET _CS/ׄI~B$mr"]nuPxƛ *@F(D 8U߮tcN\S6P/6 NcÓ_.ҎMm@8^eA, X_*e4Ę66̯2Ms [qSkm,a%|zߺcXjjǡ?K\fI?@#6{x̓m1M W#㊁dHǤaB KR4in ңMպD\A(A~{}}el2*7ےެ^9\:-nպI k\HE<Lo5'yl~K'^NOܛƨa ʰ'@zCdž\A|> JaXޒ!?GաHG6 P"'*30Fg^iH!w.|g6GbQsT /]ulI:t@.x ahN|0mwCN}.(l9?@#!ע=$B~=rrHr@Zԫ:0'Aw%͆)8#ь-J;h~hl|TPIVvj` yIG$+LVrz6XaI250W):PQT%W]cC?,>1xQ؊q_=d-Z"!\G_1X0-T+;֪6,ڌmkĊ3dveL D=Υ|}N 6jUTNG3\B[$4^W(M~FjBP 0&2o񬸖 W5o 3ˀ-opmKhew=k̄K|Fd8#T (`&ǘ} }h. mF#D`jIJy&)z=Zy AXe+_ol Uh@19+mT!`'_#Zy'"Ua< 3"cɱbWYd+:!RXœonW胢?u%=l 3),S"8V˾7F$lOz7~ 8>$:"^@ )?.sB{ ŏn1)dDlRec <i,I9b2=:x0ru:. S)JL/X1XD>粸Xa CM_S*Ӧ:0U`k@ǴNMY=D5}U- 5lF+h؉ Or$}KO448kvbWA4NFq]>^ rOސy#eDf,lG;XiJV d_+`1WJMX!%mX\f4͵$3mH* <?BS|@? ub>5(U)o ,J3RD*}lgΙr0)Ȭi#VLNeE(zJDKl޻$5":  hgH"ObF[7(L qYdlj#ϗzmaB(xeqѿ}%Qv>?a=K-tfJ;=;I-3 ׀<729d B9HoOLO+~2#Š#U&`|8\MӬ~ V'u#&<ehp)lHz'qdzᵑ!%`V![ #r ?q.RR٨U{-"%uAѠllEu4M~a_p`>sLU//&2,.S4W^܉޼ e=d$ig%vK =פ_GuQ^TQdq*E 2O,}B}Z)Q`=~4 f[#7jY2m}#m/c8ܿq;L7\n V"D] fRG( j,_4( t OIWO6AuXBY%GR:~k>1l@A3.7MIS'u0v ciE JU,Vc߂uz+BytDZA\d'؍gaő5̸ 1!BDGlI2sb#h1ϔ- },rV\QI'bY-|,DPYNV>d]6vP`c(UEbC_SZq~3.c:&m H_b_.lϗ+ XߪE$7qms~*/A,ƨsA@HrH!!E 2, ?@m<>@6[iu ƩT7NQA _Er}ibᱥ3[*B4P% Kp?/zҥI1Uv O"{ Nߞ&#P`sԲ/ B10rWp 6?4Һk܀~Tȱ,]PP鴷+qv71 0~)]ʅwRh0p;W"B?yuVCM@s^V6/:`h60]ZOU0k| BİLd3nGgD6< F  X!~_"1H7AMQ `kE6m%&̆\(tX̘ok+ m-!r Е$AZ ĊH|LZG21$+M(o^j..3(Ƌ13{# eD)#V5Z⤢,5W"drG\ 7T$Qfj5,|⺷DW3>7kd /YStJW5g*rd%jUddHT%>AV ā](1W{DΗi_ h୬nBp>IEQ9MD$5<;}8~bgRPmo/^5 3[qo􋳡]/Cc#6&WyK$S>(S L, (vM! B-0@'?j l>Y4}^;;@r-)uyX ,P`6 @@sӗo\ 9Gp8JPV1ߵ {S?\s|{q8lXiwf>A¶6*ߎQf,u[g& ;HxbJs#$.3C'Abŕxgn.].91+!,2FfhULm+UpNj  -@*_A |!xAq@4d@0Wx%@ťh3y@d¦M+CL)dkQ_D XAT|q*]u6 ifK]qlHF760KX(%^v7K xZVZ[j^K)v$b(%޻!9@ev9lRnCպgaOt`"XތQ%Ѧ]{E>H$7FMPMWD|ka&B[4PtL}8`['DnRfkroTYd% M`wNz&$QLn6jT*DDa\괔OX.ԆGm|Ү 9A >A[6g~΍ VT+@$ܧǛLcFHc9)(!,j=ݥ^5%O7W./̮t[ hh^|HeM\Y1:EGW9:wqQwkg+9>0_[sL-Fd𔵈llZ^_U,1/A@&\X~DڵP_Hr%:uN-0aҦ6٘MOV] 4XGYaCY'2DJ@E -*&DOg_LM֭{7M\(D`= 'nK]|Ŗܟ,C iwcTQI4C;ϸaQ*p?PuNoj[X|" j3 u"a'U nu[ ]jTZWOxJ~y|J-k7ڎN"KdyOv rrṀCar0UA'mnbk*)uʼnIpB2Bl*xs$D8[`j",-|O~`\b~+s #^xXm}7ekj_ܹs؆iKmEB#`Y 4h:}$}"Z'Ӥ:Y 7W>ThٓsnP6 |^P⬻TR8q.v0ޏ'Bh~%Y#!\:!cPղ>q;M{H|gV\y5[Eko@AJ FC1闅YOU`}}%̀ͽl<5&U*bWp~TPdjDo p;k}7H6̥|=" 3ڒߴipTGNwϺ|t)n 2ڀ:* !۳eQ씶%0D* IXp\J+H $*W n2uA-LUɍ܄c tۥ~Hݗp HT4A%(wO=\[J|# kP"Oo6ń18k8$$\=HUGRT,̵ QmiVwp@a"zϻ"Xq(ug"O0|Svt QCᢉ_,s<+۰_ B6f== ~__eaK !4ـT?V/3dD9u.Y~_̄qp2Eq/wBVk1˂j.z7mǛڍ)Twߴ?;A%~ lnp]GџBcsk&ȊG4 X7e%5we*o\QDpboolX|L˨O c%D:[5FJL@:og/JFMė[ o,,v-M#֖+a40Whκ"ͬa90-IE}TrE)*ciP(ۍCS c ]D2ɕbМQ_\q3`q0C jZ:R=H;X?0!A0wMz":pHc@J3Gkm*f V #AlϢD(@RGY\ e:k$Ɇk|B;g-#l0kZ41sXa#qs eFIׁsycxYn;ĘI IDQaqYv(E0LZ!8..`kXI 1򐸃2ۿK[ $RH8}'H~Y4}[syFomJ D y K5 H `K;ڔ؆w;m#]b|rpTN.^+׀Q@[h3R0 hcw#\r/508t:?xOyP4!jԷYxnO EIp~YvL0plugins/limit-login-attempts-reloaded/assets/css/images/onboarding-bg-min.webp000064400000153462147176754540023633 0ustar00RIFF*WEBPVP8X  ALPHW@&m56""\Զm]lY#bmYp 4\=᪶m+F0`ym6!@""5Og}???:ɯ?}???Gzo6??u#??%ש??O_g>?gOmoVP8 * >@K&t inVO}%3{zB-ߌz?IߧP^>o={=7u^;ؿ`~UןEeM~>.Cb/T6"Gcb/T6"*."GcE CTb"Gcb/T6"Gcb/EQF^ 午AQX؋午AQX؋午AQX؋(`3!',~4[k>lTE57,,Coq*K# [~^_*@iJ+GGd<522֑*?x,F!n Xw_ț X^˹֘1 /Vvh\$lFG(FeqloqC^`4k؝cb/T6"Gcb/X+2dtd&l|U{Amo:~Mu7teJD]S{AQYX+^0AIԩ߈*?x*?x-={hr/R.,lZn%+zN IA_"VI5Z2i,x*?xE$lE 0CKF#dWs0k 2dH'ثQ^1Ln uG_G>?HQS{MF^_^`͌OAQX؋午AR"`F^l .8~Qno" YqG$,嗤 H91|Bu8=*{ u7YoN >$}Q}@6l3$,^'et6%Qڃ9L'ccClEdkІoqoח,v͈*J|͍ INРVe@ї >yxlAQ\sd9՛7^Z@ uQ0`=%3˽WT~auFZSʮF^ ,,d7%9VrCM#v~U%seA}(~?F^_F午*M"G$؂R.FVXC9k_љ6ſxj. K7:xcCw,Z?(IJRMF!]M"M%CO6lӜǟ7]Mb9ΩS{3C=VW䨯c!{/=YTW!Aȁ%҉;} $[M؂#/XxsT6.wFZlE q*?' ;G3ĩdBBil2 AX%-b *~V`i^egQo]Mg.a@ceGlyer/TÊA5#x͈+ uZ46~ ?nPlARD:6і#e+s/T6# "W"[J,ʷS{\\}]*,yAuoCL Lld -&`7f Щz~۪;FGJ24]ySgmD:6 &oq١T\nR3OE ^ ,lE ʷ^-nL&,[^0Cy gw;KUG$$uK/IH E Gcu˪ *?EOl uVQ6 u7a+@`SVN-".)E + %U}' zъ |<ٱGynerVF ^ ,vC yxf TP`(ׇFu7r$p⭡/TV3w/gR#tkE{s*ZlEB#&x04b/ RBV1V^_9W#b/TZX؋H؋#0W28\j蜫u7p卑eW9,lFZ '; -N" Xn*Q_+;ad_#۫~֝ #ʷS{AXܴenxG=[U+Շ#a;t76#~"Gs؉`F^5 (+! 61X$˫>^،{C'b?pT! +CjoqFؗ9x,*oqU#2ї1m 2tC : F$iy1~;lIԛ?qoqH#9 /W8!O?Tzdi2Bg\ T:RmAkx_,cb/T6"H,cu؂70}l6>]ONsvDq*?{In"^̃?e<96gK0 f"6$_T6?}M"؂L\AQb<^[T: /q?4 e!z@午A]~_ņ$k5sfT72.,B#|Ĺ%>$*?!ᮦᮦx/T;/rѨ-x)q?[/TO]ʨ ɓUH#I^Wde.#:縣xl~E ?z^`;E ^ ,lE O*?`*?xY9nޖWb  h1i;QyLi@ gz yq%KxEE !@^ - {rDs0YyY.lD:^ iaS午εW#b/TK*Qtly%ϣOtnt''wg!ETk6"^gaT8؜έWy+q9؋̫lA'Ade午H.o7yMՐTN*D u:FQ&v lWm=dSxk)zطܴe]{AQX؋午D:6 +,*oq*?¦xӛE ՙ+|K~S/Yg#E:C!Sփ{{&OFx~KRCF#,lE3iAQ~U *Ad AQXط/  6%i؏*Á*U^F_DTC]N̈́ef7F{ӛ&NyxxUri^ ,lE ſv۩yN6"!QZJp }{sg]Icks nKboq*?fǩy §ު,]M%1eFđ"_S{c \׷S{AQX؋FQXVS{D:6!X}y2o !G>2E62gbPYۃ3W6&W,K0lA;,Yx rimⷺ|4[yj]ҭώi: Q FM"Wo$<5aт{˾oqU7C:*?xmAR %պ& ם1?Loؒb*G`l ׶ ;&INCb +qa*s4Ұ \M^zŸ_H~H멽^ -9E~ i_{e;E &=DEz*Hb«R*p[vu6"* g{S{AQ}^V(#A⸉lI9~ r,s<>M߼5/|3"+q2+|xV!/^ 7DH\;O h>erm ؕ[>-Txun. &=YyXk#I^ ,lE Y. T7^i#b/UvSMGcb/S SbL$6:,m;=ʔ'An2午AQr*B\ÅxE* h cb5S Db ۪yW\#^^` &mtlAQXًV(exk.İ 3+!Y?37wLV 0u>VР+CҾ,\ RRiedU "WlE TlARp)edeU0l&^zF揄y^ ,lEKoq*?T?6'0]Z2$?p$u7p;#uyY5/EcV/ߞ]M) @X/ZX؋H؋oqF*^#WS{AR %պOL;!{0WIG?u7\l{k(p޸x|,=$ԂqF^ ăxT+x#2T"T6"H2./_"~UBu0zlj.ǹuĩYӖpkzNfT.5uPH`:W)xs<Ѵ4: &MM"Gcf`!5M[p]卙^ V{+ɽ^/O7ur=%W,v:zxkLbBwfQ q x*?2M%?]պ|Tr6"Gcb7S{S{Uk_|AR?+ah ;=\lUSVMîD߻q;{FjKXj wNDH*oq-,FZ!OxL޴qcb/T6"GcdWo6&$I.˗mUi?%( gÈ*Bm^ x'b W _DTpHU0!7lAQX~]*h˗/P1*?x*JqNaQXXwLadT>ٝ P4;EZ/:" ~̢M"f%R&[_2H午\AR H]M^EPP*?sFuzTؿʾ]K"_Zv"cSL0{RT M3WJ'mWJ\u7RHG ,$]z['S{ &xu7 ][^ -$%n" SHd*+.rC _.[E;^؋d&7?`D: E~eSiטXYtJb:0]ven:2~`;,Fk]ŎeaYu0k^ )ǾlAQX؋0={//X؋(̫6U5`K/Il@dyx^IIlTHu-/ьA3v;t &O5epw|.FNz4ǫX}1GcbS{ѯ0*?z/edFİ؂k.+LMF!|t`{+n2` #}4QXsTr: ^㽈G+𢰒ĵ蝽fL4lN._%=\@!L"ϩe*F_JU+rGp:[Ɔ،!]M"Gcb1V?FaA.j֒HFu,شF%-aUJ ?w/0Aɑ29!e/+/19nQq:K;X |Z pUkbB{KqIR'"VI2午ASH{jރ4:RMhn@&xh\dKѝTa$%A"i"/c L:}ƓAXr(b/"` ]L4:(،IGzjC0؄㹐Db '4> F ,lK gz#bU~& &\V $eW$9u;S")2zALi\A؋SM"lAQX؋午AX,qITx*Q7Cdfu82SED`:Do,I*d?đ hsDBqZ]<1Zc+5@es2j/Os *?\E&ZVoq*?x+288)ǩ^ ,lEoq>/+Xa" L`ண@ VTld t@ .r}Rn'3w`,9_ u73GݖPTpFȗ}؂=&z.x&X>yXh: Nv%-0rehp^.=3K{kb7DTS{-Nb#N6" lE Ә^ ,lRĐTm8̬#b7S{1OO!ɉ`@5{rn@`z䆶٥۫VA] ?ud~;r[/TIS{oqCzvT^oqLSdEM^M(@i\R*Mh+^ '{ 3ltdƓA;ZD'tԓGf60 Ʋw4*Fr̬?Por S{AQXٗW* ^0卒XM2u8IQun6H]nucC=`d7)4帤T]\E5dM Ne\*2#"eHiw]יF j0L6n\ub{aS"TZlE z7ChbAJ嗙+3*ݖPTJً 1=3ZHj7Ҷ GD/yoPRxTҴG-ypuz;'fI} sgP('?'F^h2BM*b/TÈAQX؋06"Gl8amMf |NU,6e]=y:ʚuWTMn~tXK!]l(>H&ƫ֎j3> 7TΚeu72cE8$*/|, /午AQX؋O//Xؖh#ėq,+*|AQsQX؋単9nÿwp+ndڣ2{/Vlz(2kH 74_I.f&*O`/H@]8S&}qlVoqNQ'i oM~:/u7׷S{oqH!7>YȺ/4TO#TVe_*?+_(#YX"P唉7U!^I7snm6{rWzºJ7;-;Q)jJ9pziVr]y7Gc~ESHZ F{AQXؖ7H؋#unCbgTuVMC7 \L_Quy7S{D:9t\ot!8첛5Hz ][y۲!ѱGcf/B6 ߧS{.rvYJ+iơFgKbx3BFb&aI!7qF^ VGzuX؋.`QX؋ qi^ ޽ȩ%D|x[yqr_//X؋%+|'| _ |;b(5k+ X@H4uP-@[a\2W#bXT/T8؋午AQst*6"VF^`kψ*?1|]EUlA_rFA_*>[Yu 4cA_:',v,Ak9YJ޽tM" G+ İ^"zs~t۪y/T-ZyOqju7!˨^{pƖ)5ֵJB^EGRG>r(CVoq(Z`nrDWl7OE%^ ,lE ۩^F۪yo:/X؋}/T6"8G_ٳ,N(IjmHZ>oCxaw2U[؋P,lE _E0oq*?nA2_ Ţ ab7T6"`uV17A[K*8ZE&W^՞cF%:tČcba\AQX؋Yy揄Pediq22M"Gcb/+3Z$/ G7M8dy)ÎٱtH^t [1X#bpn7[Voq*?x2 6ʷSСXؖQMê*qJ#Uj-Tȗe֊t8@2X؏157έFTqZ@mFƈC>6oq*?x#//;y`_"|nBR|urD\ )V_:'uf ̝_AI~ rx7Cb ?qH ]M47~!Ԟb ^ 9,lE$lKO~"Y.Gl?F^{OE TkX%cnPu7'7$)WoZB'l̀72P72V- *0@W§%}R*?{I!3ZV7^M]M"؃+`j9*]EպG!#&f`||d'@L5_@ W>ђ6#`S| hױNf,9u:F^_2 I uQ6]奔na?q*Ad^rVLc,P˹Fa9iN!r M$vL؃ӛE㶅~b/ѧ]\VW|{Y*?x+#55M 9c81"amܫX$ %ϣ!8+)utf Iw@/TvHPU*m9aeǫrnI:6Ӣ午^0Y~s~/XmyHflc E q_2'*^˝_4$J*j|ЀLu4ZMݴeJ坶o['Pnq2 5ىl~/T6"m4Xsi#b078,*o5vZ2 u?ʼiB4zPq$XVo\PU8* c +6 -0p7*?`+H{u7Hؖ8z/iq>,AQX؋CQ~U^ -Ucʑl^in(BiL͝aW*bu7Z bj>'#T ,^F^ "5e΍FMdjZDOks.Ŵ&3]wS{拫u88+uN٫ËYAXCH؋$O,ѱT>y}M"߼?VV첏ދsj0rPpJB7ʷ[ 6' v/p ^FHؘlcbXYeݽ-/J-G;-|'(b Y4 E [즦xS>ãr& hUXv_5/YqGcv0ġѱ$efC~y47}䇆'oJ7U0:xD`=oYFE 'rߜJM"ln!#;AQsQXADz~'WgQZce2DCG:#-٬9cA>\]N,l!?t tFFKxXv*"k0 %Y u7Y$OE|#b/bFVd7mr񳕊Ird-As^a16{"vhׇŋ[AQX؋卉*FWTySi׳(f E -xK nD + eĀ%i ^T@^X~ u7-F [| ^`xјO5z 5VoF YqH.@U]i`K-j:۰IlXz/W.) NbmЂ7Drnj?[6S"$ꃛE#v$׬*!ѱHN^ *N̈́fBi`kό,|`H'!AU P'Gו @:#p<zN(a{^ YSuvh[oMbvdu~<9*W5FMaW:2Hx~-RFİ8"`^ jYAQ7U"_@1Si#q^ xiqI Fl\"}!V24*6"Gcb/TeN.M=Ł$ߗ,l`Z9n6bs55]w`*ue/b>^VZ|{ι"Gcb/*Q_+ƕ6E͐~'`T#j첆^/Tl؃+2aCb l؂'PB}˯Ir#|{C]N+8xu7H؋(0o"Ye$Vx%uK Ȍ~|FK/s#IАXbEaM2iQ6AZ~ζ 8墳^7b~}R 8F\!x\!*?`*?z6"exԲ~~KB?*@!|S׷Zw%4d!"B%ȐynW#f/,lK %פꃴo7 #e;^_6 ,lK E +̇01 #Od6#j/i:߾7~oAZ"6 -E ׻-njoh)]qi(/T#b ^ ,n{`/VÌC{m eRd޲ l@Jp$!(wjZu7GE0mU ՁH /Vex+#/6E~ 'i%넊ᷳ^,Ċ'#`S{1:h*6"4`xkwx2 AQ[//X،hZ3!-n(Q\ K1 ׻=h̄~(*坾qXN7+pt {7oOm-午\AQX{u7،|DQʖ?d8?q,*7 `'y'cb/T6"GVt$ a$QI"HQFa 5Ve&6"pG[CVoq]֋0午AQ~U,̂~/2uCxGw&߾ !y 24"2<׌;dX؋$cgW-ɏ2/`〨9,l~E ۩yW Y嗘EвʥN.iY\ט*׿ X`lFZ呟ahH+Ve.Ջe*@">dwHӍAQX؋午aS~I7 5\=8Qu5nxTuncCwWJthS卽!3AkglDJf լS9sAQX؋午D:6"i,7_ r 9ݎˆE!ѱVF@ D}jfTĐ-=z@Ӎ3+=W`} F۩^0T6"GcbXTeG̅%d,Բ˱4 ^bwa$OK4 E;KUa{;d$΍-1qCF]Y8]ޢU GJ+Gcb/T6"VIA\9pc$ka^08q)*slHv7_~9 qB9 ) :x@ 5k6"H #^_*?x#//X؋H؋e?'7Z45?iT?lF,w ETla{/04iCQ2љ22ӳiأxvb/efA?q*?xoqosHA۹WSDn .!Et?HbQ5IW6 (tjo0#eվeWN:m^gQn@~^_6"Gcb/TTlAXu7ܗ9"sM+}Z<+F`@05FLUbHb^ ʫyXm|c圐-;x*?¦x+4ӽSaC7^2(-|2H#? 8؋ #B|(TZ/gmӱboܺ!:SG<îM"Gcb/TTTk ?I4/#1ŗZwG4!-[b PjݾS{r2p#G=onGcuGcb/TߕnAe᮪9;}`2y'G"G +2olW 単 \'Pp;B~/ F^ ,lE!ѱ`F^`E Apɻ,eƋ^0'+c0C=Z\i!~ZZH|u7%87v'$RjőM{Gcb/T6"GcbXT/T̄"R*A~s 'Vf +3 yZl-(d ϖkU^pdGp7*?x*?ʷS{ARSS]M -Uv4uNϜץx )טh%NU,eY&opDaI/Kv\Hw(u |-DcDF午AQX؋[^ ̃ f*jdcs$[oun5_e eZuZ3xx&z1JōBr񅨜'3i5$oq*?x,F.W_*Q`CI ign l?i lZb8k{?}Tkח1rKX\ 'i7Y+"Gcb/T6"VF^br~ !@ !-ۥ@.?} x26m#1kAU(,Du7q#e7^M^M"Gcb/ededS{׿,Z2/,2]{9[0[wn+j׸ xH;A E xdH'#`'"Gcb/T6"Gd<5eGcug/-$\e%l؈N$^h$^]."GccF >*W0&)ڃeduZ2ٱM"_TGcb/T6"Gcb2#uH,:<q5&)=,lNgVot fG(C-,*ot6 1sR %Ib午AQX؋׷Wϒ$-6BiАYugDIZ9$4f]eD?qm##eb/h},ZaNZ/ZX؋午AQX؋午\AQ~bk̙7lap-oYC*3qYc; 8،!ZTqZ7S{xIXgFջṼe_պE ^ -99o/vO0@.RI1>|-3<9rpa{~6"Q]..Sg\64GUb.lr/"r:6!8^_*?x*?edS{S{o봐`|mNѻ[ "qFaGcb/i0 a ,ŕ64~+Y yY{cb/T6"Gcb/Ve2H؋pD\nA~ckQ BlLdҿm7n8]OlӍ<~Y)[ce_*?x*?xlATG0V//L]FJS|RJچKDl.x |*m,>*?zH,`*?@^ ,lE ^ ,lE!ѱVF^`j9!}ۆDݝR4{UZA cY |W`=~+ep"Gcb0 u8l5Z2."؂*?x27]eyve_q[2y^Vy_``XF午M>嶀.`"!Ie1y:$tlh 6rl|}RJ Y"? V#xVB)"l4"퍄3ɸ;1G7hl7:LNRKQ'OEV0&B=W /=ѯ^TAsnI6oG$f0p?y.!76 J^`@Fv mmh \E{,N2jZbkfe[4}UT{Q`g{T"Fic, 5i TFlqdc(^̠ȽF@5}6f3و0HyK'gz\~|ݔ>] j4l#8$B3CZ|!0jd.Г> ڣI x"2ѷp{{|XTuPnrRuj(X̖q_V >bx-D+3&^5g@t"E%'p@2['fjY uD@7Px(fJG]S-zcleQTPPHT0hkG5!H1GdS``E1 *TKk} qϯO ruDr莞'"b!ZmI™,$E$r|ZR V8 LSNHD; )|y@S Ƶ fkJN25fH[?4ɉj_$nz-@Q6R!R.9ѺGt&V"O ~8KC: ,Q6v 频S?S~HYxazxT[+gj>AuAm~{V<]8ZIukKٓ)BI /Y9{C $ t~۬VҶ '?;$1rSؼ)c:DzEz.}5nW, W$@[ T *]SuÖngkKU:PZҴYQAmi3v_/),lgiCݘO(5@  T$B>6RA.ı8/ pwau?x/4pI< ESQkcLuI۲: ߮W i }t!lPc| reCPG@c9^bNGdQ`IȂN/H3?Hǿp YzS3FoP,e=nN~/(b>Q 8`,W8!2:&pB(ߺSdO[[,m WZ_E#{hՕ5#ZWCl [fihyV~ppKR{qKנv΀vwm(eMH=o+*W{c+Џu2 q My@D 2%d"3k>䋿42jiZ'߼k8@ՂTfkFhUIqt,lmWCliJ7m(%]!#;ُ$B&6gԯ!_J}5UܡT>7YwfgWЄXՕ➅( kVs5IEJX4fZ{*-DV3^." (@t\ ȞC7rzC$r!Pzm6(Lsq+jٖ#1X6+-7/VttmZ(q>mn2Kq;9/uȐ=nN:';;*rТٚu0;X\z62ti# b<!HNʬs.eRY 5䮀Θ$(9/u4+Sc4R<%OeXdy _(#P@!'D9 De(>Rg"="X$..iX TGJ~ٹ= x͸QEݱH5p [/K^6~(w˜0y' ZYbL*jn3i;,5-^0=v̆6# 5}1hծQK5@$A]eSfW&qTo.sj'nn)j@'IMxg5kCV>گaB@ȍ'`Bv$'vnW ;/׹!(jY:3ۍ}PLUAGA_Y|";I+1Ƙ;WBjJp$15>?j#c'dw*&ʅphln+{􏻎b}dD7y,3ɦ0\oCIS->7F )#fG R'&"iy{wZV*f¹)xe$i:e c \`Ƞ9,edDfwfPj (: =6e#Ê?f|Xaŏw+8$v؜#\^6A[˳(U\C+H@C**cy.dķ/ >3kҖ{9kzL/uQ?~}bD]a.ߧ^.<[KBe`3RR%'NNb9dtq/!9 OW }GcCu{ec;G,K%uz9ѧu]e!d]1]>rBSHv`&J_jQ>BiI nvggG)5,8ܸJv8_t jv.[)ogr^6#DŽ|X%b'!U Cgx -=/.:U$A7$IJpGu{\+ NT0#c~_J%Dv㞳AyO\>dJz??r2BDXTcK꿯ꍾ٢O4Mc$F~ Ә*7f }PuG%s`pՌ( ̀[Iܑ[W(.jw^Hh9 *vzPs햱txf%K{"2{?21},9@2pD,;17r^|&f$YC!`@=68uxH($!&o2ߍ#M<.PwcPvǩO8n#I[d.ڛ1Dک.%b66DrpVc;2nV~^={;H\];w9&Ð!i@s+xJ˞;՗Km`[FwuiӞОR*ZȜS$EZ6'(+z<1Pi%V?܈g4H.0 -{U|iN6{c(*9Lk$1 %b_~Mbswt`\lM\P^/6_/JT&>Crt~& p7[?4V=~9DkFJ4g30J~5*]XK>i2*AɇكOdpƵKR3"-^mbPwV]K(G(pi`(g%Вzv |M&FRt6k72<é-m!@];#CSmh#\(}g aT!W?Log1neH5ƹnrq0ا)<8o(ۂ8ۄО8g7'*JGRaCuQ հ$"8DaE"~1;#MLxer<[3pN&i݋LMC Ц|T֏sx&^~ @`dZgo_\q<)@T;pjA4,6=:0-!؊7` םæ)sRS@tV!]L*1fai7a[yL :tӹ Xrhqb*urACsza 0t:lHRM 7 73hu)C`)kzsNiU3ކo7,(\K(rllsGtdȉK*7bgA|^#cqrQ?:X,E\H\ mjIF¿(e:hT[TYOSNk\D?#= f#~z@ yגKɜd[o[K350Ұv>Q6!2Ax=Z9eP%/ ]2 =yp|N*JRPmeuzP{]MWZ4T=Q)TnٸY9M/ص v@UY3]֖R(  F&͐I%=e'6ޮv&&[ZkOq/JNh\MtrZı;`q͵HF/6auNzS0rׁ7-AsZ⯐].ѴĈ:<ҔEydέl`Y7A'_tjs7b])*Nqs'A51,70w2 l2H( ptnRtlTL6z)'l? Q76oxZM >%ԩav 6BǬ"%!h 1a+ ѐ ;U T(f~@(Y|-̎‰/q$.lq3k0ƄHɏKGGjO)[l=ػH0H(ruF՘ F@K{z4ٌUcwE`m'SNk*3v)aNC&uc٧ƏXzل;}Y:0v,'@"ޜFXX<άO/]!:agѧk̂&L,4+ww1yH@jtQ~h1ZW`3Sʞ- `R!|@@B#avb{\İQ Mu̾oW:dĥ V7u2p4XC ңMt\<^p(wtO9Bqֈ߶rdBZT/xlՠ6DL|as\%MWY2^\ד6FdƔ*.b !Fk%)fǎ'TH"vdc0'w.R?"ymj/bDpŸn mʼ.x.i #?G0ۯ=`QP>*)ErbaR PtU#g78#Hȧz$eK~i4`r"`tn^`d7K_9E7ZzVUy -L4 .XrΚ\W@̓G7ӚMu@y+IQzv)' 29ggc'IJ_k7@h 0O?x-I_%?T0(Zڿtu^1jj!>J4A}G \- F2;nRI f}"5cq)BIٌDʉqIފvBH`wzm OkXh|BSoV6lH?S3vTMa1`q] {όqh+gip%u%+k]S= &^sh"/ ۻϷCu lpAGw"| Ւ4C3UPGg'\'\:SU;Õj Q q $a@+ r[D.(|H~` RWm<(})И%%]^C vJyDxSe hBraJ=oG$h($n[5pH\!B0%2=Q٢w\rcXS'VId%5D4E"oiN OٹouGAVYPK Y$w7lM/=gO&h9ÈesQ%n7_Yb? 9ߑ #?GkvB=ET|ց =_=9>3dHjj@0u27?8.žsmB[xk!2V<'F𬛓(Zp8)ʹ{F6p3Gs}$ޟ bEA`T#h ߇ib2P;?X~;z:\Y25 0|*AX}/P[el$ZK!-jq>u:96' ܜ51E~zsoo{B 7~E\H>O%!O5 {S5c auO%fu]QH#iKjlqZ:ۀ:k3z8CAof#= %3û:~[" 3Uq(ymȞ.xL-r;o-6Iʓ3ܸmZ{P^f 07Xat?ȥvTfэMM5QƓ[}!\sn\;| v-\(Am a=)׺"8lUI&e1fzE$aNu?Z߮kay%M8t*8,Zq@x)r8uSjT5ދFXAY G7OHng,`riJLGӐ)`U .c.\a`|'` 9M1 +d'EPcbV>e\m3C ", /M'xYCAD{ldhXqҜ\[BH)Th&7\꿍^4/*_y޷=`8wP#WBcARؐm / FeCŤXξ'wpxh$GV]ǡn|,Y~K*1{ĵ dn+8Tה\ΙEcJkC:6dl !zΧ;Ʀm|U9ixNJ[0R7ҋf ړ"," +w}%tsʅ4ppAS,.b(!0*Q=Xmઝ3zytM2b6mk~^1բ0#OJxd~UNt3CӼΰF0.Ӑ ۝i4:TZ'zN'+&tŌ*WWi^!BwXAlxY_Md6J6`Ӆyӂ&6Hwx =MOQwIѡSgJ=ӲW R:sNo:M>g4 B響7}߅ C ُ=*M')]j3ֹ+Leޒ4({PS/*_yMbz8O6.e`2u/gkemz!NߦIy(Bq@ Z!VSɹ`cG$)B;ā~N3rKdu:wJ7̋$Jes ձ,R~G֕p@ tTjyݞZ`{qr8j-̰M$]rk5Xt)&a@3>+P;4Q.ly'kfM Ix&'QЈe&*VkO?/ҩzf='܈(n\~w%}Av_3xJV5QWFUn3@TTP/<2T SǣbIkޟ#D5Jجy~p$:[ߕN_A/s-o. iHs#(|g-2!:\ t+`䰼!f0}oZs X$Qt6y)~*z8 4X͆$ soLo LFsCQo`йR yޮ)20Q&-w U @`Ko¼7Mp*?iT2}}̩J9MyBDծQ_)hrɺT|d<ڴzH†S.uJ'VB31!ͧ T `8]˅"T{8;9(0= %[IT 3>{2{T;J ]?J>,iI*0t#fhKA#W].hԋTEDd7UY2jJ:_MPlSX7Lj+:@"[Fd>mTPUGpތaI]M jl/CyO& $d#r>VwEb,P\3 h*mon 6=#: $K=hGzuI" ZPl }gpE5# "T>H* !Z#4#ߨC4{<٩L!џJ]rM%dL'40LOuIOKf ʳ e+Eԑz/T /]˫[5zc\ ^H k$g&[^g%vy&S:w\Xo;gΊ5Iӭf'GB3+Hɴ iحk+{nd/EӍ_Ùo왊4DbhiJj;%AWGPyD]~~Ӊ:PGGK9i_z9` o"&z B#07w6\=>'춄kɛ[[41pĐW04ji#Bq^ "e Ɗl9խ) زƯƵ=>1‚ ICP'?`VUS:1as&]$PXT) $_-SI~SNUdw>C&^^Y \D9@[-->``xmp?r73{h{oeVx?>z6&=\5W P6@y`➈+fXZŨ|/_ }QNj툽fJfds/UoncG!K]I[/v!~3r8p08cbUv+&807M렟:,/-`(@TKlrƟh(5wXx1,Fvk&|1ϤP7q]Kk kгaz}PnI ]թBdulo0-J1z;%X H44Uh<)c8= 1X'|& *n-7ScNÄy $9reZ$zLLccyٜB( SkB2sw~)AgH ]An !?'r3G.{hz5.#6Ϯ"gP6R*Y4z<=z{)d!bǷxm ;x'vG~ܥ$E"0zw\Z@g?<՜[4G2NӫGɀ>yRAu0~)ѱ4(K@:`.0{Qb?q'* Xy B[dc4E~ӟE䮓4VT)Hl7a, 6^ PT]7p&T_Ac qze(Hh_2:OR#,ĺ^+ߛ}J'xj6~N3'H\7'ntB, )WL;<XzB0K|1ե%mΓ'x݋>?-oCVsNB\R0hQґKW`@>rw_lzͽ\ս4Kc֖%>گW)7) #v5ݚǬH wM/ et1#q/ɋķ6iB7Fy.ADh+!$6h- K5 *)Z=@W40Q#cKg$UOĞڱ'QbZDˢg3e6lQծtB`lڔ&ߞ~,aǏp$/2hWwEaP-UQٲZ !B:fB%w,9;vF_3qT!3,X*ʻ6(ۼ,kOfD^rPŕ1>_JM+I5֞\(!I!`O(/D_x0p"D;}_" 4,bBs@%Oݺa:sN֐?J44md-s=Vǫw!x<& gѿ% _bHKJ)Ry$ixqxUn n;t+X `ЏSS]t:>CJ _QL.2FEʤ;KA:%øg3QGQ;N#A' (\0$#GN`?I2MT?g[f@tŀ1J 650bQSUМ:ю-+KHu'7yZݕ4L$v 53)zN),];O˙yV`$Ϳk} a o:};m>fAO0OFO ׂ r7OQ|}ߐҨy:6I&/FhPn(N1qde"ܲqfM']?2~@'9GY3i]-"1MQ?͡Ɓ &IBa,7} ]6cݽ+1E.˂;J;R&h3ػpc'w`?(꿅T1LH4dB_YDI~S'홭KY-gإtv iRS9C_I`` ^Bè2P؊2/$0 qхU/vdBܐ2,of7#A5_L:kxH:u 4Go/sS`u"9y@)kpL{r3G&!:-?n* : Ҽ-H|=bI@ICٮ{\hfwnɏuOV-6j,P5dbwxy3fA7o82j{T{ކ 4ߍBUYZJy h%PW:\f]ThHyɇNQ#s0!hʜj৅#cCS_^lBizTxot Ġ.N}XI& qȟ (cӵP#wG=py_؄5RDY)pWhXgUPy54(u{(B8UC`0 "}c󋾼ܛ̓0#Οt\;$TcYZς (U(׳W%xZ|g*zJ~_ݟ =9"^vZY׈s˾%etc⹚5c(cFW< R%%m3LI'̡A051!/ .Q|g֗l$t,nѠY!ⶥ!?Me!H3v mhJPa1˵ƴ͚%!P|, {d2ۂ3eGr)ǿ(-obn[H%if!BwTyBLdj_|u/cC= 3W𣀏]bsQ7Gr*#7Y5 Ǩnb\I6آaУwOf7ĩ ƝId1 ^ؠa.%HTqYbWy$"هa9kƄG=1eԇp8 fx$5Iү}UG"h2?X@ROƀ :+5(mKl#'dĊ{L"0NJ?j mN0 )n1EMEڞ0d \=T )1Z Fݤ(L&@VJfNc(NxJJr{{܃2F*4`Xߢ@0lLAŤُscm&$Bim$'h`=x8~x1#"exG/+B5DKcì6.3Q66K!NwBUF0{tul0J=3;۰Cn X{8&k'pIS[[&-GNW};P^XJ8gH]H[It0{Kdf:5!eo1'YR}+xX2f%fdAr9}ujgf 8{ђ҆^~38w;ӱηfOnss v'r$>LG8KN5z(4c N>ioT<0R,CQ3IK ܌O8j9zd8{@:9Od߹D}Al:p"x)NyGM`uÈMVθ]w ]5YYJ#-B`.ccZj)ݔ6mI֓KWj XprٱA_/C}j޴nPu_:Dv)v Jqui?6;rnQ}$.+s={N(U|ʹ^z%O~_Oـ}s\ɋͻCu'S?6dK"g?La(!GnłY oy_XҭckvmTV7^"r(Ks~wvz>>c7۷m)od gc#Q̤RLen戴()kSU/Ay2_Gx_<+PD]C%HVȩ&pe/DF3X;[E4z q4]VP߽7l ~E iٹpHLl 4&JpN/Uaxud>GODZ1[7#3 K叩pCX?ƆZ4q 7(m~|U,#a$ Ёy{4{6hl η͐6f?m,1[ ]@ע}I/l@l 3sj4 #?`ɇMwˮZPvd/t.ei@nRw!JGE^GcV.V^u rb@;oj{čKn9oy >]UY ˤzl[נ k7*X5``_[ Q"LOFL)"(1w6VyiB_'2 z9Wk? rj u `lGJRiFlh;Y[9.meV3J };w-A,?@>31Gwd)0W9 4{"HHRl]P7PM2xAt]‡;a|6 G%;W7`Wf( Ƒ>ෝ4-qfGi-,~K+7MB:8Y{3"A5'R::"Κ&ѝɦmz>t;n pCK,߉!=bH~3 @>h~) lpKִ o@cjC FS}gAudY]ԛDvVv)pwڼFZ;ٺJFIFvU%{ݱ{4q/9éX.)śP]rFNY Ԣ=Dt̉;U'ihB:k^Yԅ1pJ/pwպz q(bp:WdudYdʐ:$L@7@m7xZ|*"S[L*L6@?na{]2xtgES]N6B{3ćsZtN]"ZRkt^jIv %-x1rn>E1g"XaJS|)Caw/^B5sg5U4+,즱LLW!@(R%,ǎ"9n{[ar/蓆!Eݓ Cr.0=b_罻5&h/Sg,nMI@6g,,gy`P5?80 - ,5 :0C&]fS v "7}č2f@ֱP^(du(|⟳Uhǜ<-] -E.͹ȿ?D8Y[{҅SIMϒ,lлS<{)'=;YL.-Ԁ%:I'%e1n#m D|9h K)(QV2H@Sta"w542.`DF*nJ:2佢ќw5Jlց&ʴ)?B2}iJ doI-R6Xߨ'1iYU"lpUm:+\av.G HSjؔ:Sơb.L܃FH}*xh6W qoiH,W"E{q2l;))/fe*a7;"O+:_ֲ2:-5&3t}Mh}`{Ol5P^9-o(0ImaCR' y "1ېFR/Qw -7gI!֜RmfE`2BAhr5 %ȿnaIqg%u<S|QY?3x -oA#3 ,fgdP`1%/miiXa5Y<~TXJD6HڌXrXYRoy3fl[fr`Qp*>w&CPcGL+dԲDXwdqB=)6f\k &J ezEe^2q184*^dw82I]&ƿaX*!jP > O kGtu_Kn J`Nm/\d?3`#v ]w$mżDHezmgLuސ.h "N@ Kp2nǢ tC)L"b Syy%pHCIgBD/)Β4D^x?Yhώּlʹ4͟MwI& ;w> =:@POe1l!B;a]~4?Xg^*|^F .UR䦀>߷y8E:iKTdFԀȖ"Dʇ"yS'ap/KXb%AaϼY-mj0$0r 8@3qGj&QJ IQuDgzX8Tz?yr?"{0P Z9DL *te)l yTIp| s|Y$s`ki ?p #RjHSBNBY$R:.)BO7e.:_L͢QQ-R/UF jX^ox:FՄEt MsmHĬ KVሙ:AiToq2o@z ]WXMu<| McN!痝#FxHRYvꃪ3AJYƌNurz bm`gXX4W\Pp'R;pR,Ӆ 4 ~6Nk#l@; sn$^K}A?u?, h)%S q2ΎfՃ]C/sLHܝ#_)*}$zaU1_9؀qhp!962h"ghdeXu]hy]X#I2ΥǟvSp ?*&ة" M6l>ꡆ6[sU%= h 7O1e"hߌ#,0n=YzДM5w 2s:5m$bYfKL}-z`F*{8+b?H.{Ek!8>W"*8pMhm̓Yjs 2w, 4b#RRu|7732j-ɬDvRߜL0dhh \̑6=59Ə׹9w>$C2ރG㦔bU]n2_l!6:yZE1_bt#WnpC/~dr4.m۵7P*78O4&;2qOt3+#eHK_p/S-dh?TrF#Bk$>?3d{mH'rj`fI X]PsOXFyMEgOYyK?>1t{RcP2}]>: Si|?TΊCo٧>&h Ŕ<C׳Hs H ȯ<9*ǐ~^ 0H0Xt6-Hb ge;IYHcw\ږaRVClʩ&%Oɺ4\V6~VjH_ϕKj?+"$B;gE%6"[ U)‹7&1$Ґʯ@d řU3:gז _bq'3ChH%'t<2 KBY쥻[Dz౞˙" YfjeF,4@sJօ\s"L!zmPz[@1ȁ(@- AYa oE9#kS 5E3@ eDA øjEKL\)QOKI$D >K=WiGSxk%\-!s!k ~^ 2#UîWq{yR,b*Trܵ5IN4ʳS h0K0sYHJ܁ d@֡|3̇4d@܊xꀵ*Wtl)fi/XLHIDClaskA?l$c-ĉx.1y? JVN&b%-q]5䄤IP!$ws@gMNC wQKpKjq2p}_=j8 pWL)~Q>؛ywr%2" fJ5ȿ1d_z$JFвI,sr_,|;C'^C`9?Uр =1epFwIƻUZ Kk燸|K-9Wj+őkDwjM] ς+pǯ@Oj?~j{LStx&¼kxLͳefW01[rk a`gטjmtզy@lp-ro~8m؄;6HB|k+YyD#w Uߕ: |T2x av0jDNhdir _y|Fbn |@))+RvׁeQrZ;Ä>Sޫ᫣/or2;{8Rg ImJ1 #Ov܍tMb\m>E7Y 좧tp>ub=;#.lS \g/O@ؼxGfFdv`98 ~R\e_+O8ۉqlBJ xxbI tnaNģ> bJ\<lqF<sٙ uuR,t)p_&1tk:[Eju,!,v4\lXMBŶ^jAE|f Å-3}|g;ʞ] ]uy%pB}2Rg\a/tS ; u~ty>*I'K]Ka=Q#%f1^{@g&;OrN?<+]sZs`_"q?vY@*)s K&2d/ԉѓTYgoN:YQy }xh!)f='(w+ GLPĩƼ?πaA~ӡ$f̩G<|l Ԣ!s p&6MF.5SQPtRVs,#ֆ>Պfe 3(wA0%BG8n48DSZi}0XeSߗ3vDO%>^*A4.zko`iPd!pM#Qp 74 mE^9骉z]sI#x"&]PzkE"S(@-0ǿ8( BvfGܑ))W~D1L;;eVNu4ZP.]11\$z㌒>|;+SkJz+K(єȷ99{<8?.b'Aޚ!B00At?v]xBL$Hᦗ$ [S' Ye}qO02i׸8<""i)m8)M=ZVuDy!]nt_ @CJ)BNhG lzK;9<ǎ{o&pjpfjiFyj"$aė>ˤ2."*̡nD,Gv1k8H6/zcEO&r~vW!4?.?<Nb`To5lZ?]5%SN,iv%t#?8v ;̌q}=RUtQZ:(x@X!BDz X tGr P<"})}87٫ Gi|`xV|E/x{z.n $.0R 5J?Iq ذ5<ުBjzP@\gAԋfwFz;mv밻Op6dD.j/D-{%\n*go$L+fFsJ& cFB}Fס[SP hIB[s?3CKѰcg jBQ O>uzuRK4J 7LV|ܰ R'v`yH ijXټ'^lbJ=+FaP[5Ԓc{FBpJK퓒i`/PtaӞD TJ6~q0y}%1yC苓`hai>K0(r100kYv:|+_fj4YtRNS4VǑIDATxdi4 KhuulnN1s0 r# ! }}aYy='O~{Mx8ߥU,! =zb%SOi(,QBFM}@  ܩpE̜fCQ?`ΉWvd29 s6r7OoKBqu ZvV<ѸAͧĈ;C,Q-Ixk$t{dj[kdpzVH%-/&@L Xz^8hsB)R`QYDO:D jESⰈFszY~Nz&9["DgF2S0UC4h'TDy^ (C\"#mi(*;ږ* *< 0-aBl aﱷ(Z]ubWD @Q{{pAgI eD$RmcRzLТ7CqC (OPA8<9n#??88=L~>>1A"&O5.BPC9^OB.O(z{k\<\lV Dx;5xmlZ~MOhx<8} :%,Ĺ5h׊HOB_8ԜOܐE2TКNibN<@q;W{,b"9PZaO$?s#B/.x;q=Nl!oG0~=IME)@֚s#)-y<yf帹  z@Z6YК!ge߹@WqCRhgy5G^Ɨ<̠|%)#}2-W< $ Ed= Þ@Ȑ:hq rwW MШO֊DpIENDB`plugins/limit-login-attempts-reloaded/assets/css/images/schema-ok-min.png000064400000112701147176754540022610 0ustar00PNG  IHDRtEXtSoftwareAdobe ImageReadyqe<PLTE*/@ DGTEIX7$|~}|7s`|<5uG\}f䍑o>># A6GO,\(}/|晑#g1cC0,}w¯)Jxr_F/;ƌ={6?0# A69f3#9{dw` __Woٳ{Nn>ٽyX՚~!zy۳t7N2xOn6}Y3`V{J;͛5k _3| 0Y=?!}ʻtE+};=,vf"eÙ7=0YiZ}XJWRjD:3x_Mt{ժѤ_[bZ*qrɓ~ _/x񦦦Uׯ&<}G޸A}=|ÆUI^濫~2߾8 CB+e32~|YtM\x҄LN8*SW/%,]%ejj M\m[i0w5þ+n|)oy;'&.[vԶKK+ Ai̳Jƞ<̗:G"=~I.ԶStʿ|!<~5Jtح`M\vnP켤d9 ̶˗^>`2P?</wJoyF+Eϥ+笜:'o&F- ǽW2r_vE7{ w%Txcgw#~&CaZu_?U'Ra̤m//Ƨ&RhNJ^l~ һ*&ov*eh2}m̗'{IYdgCAzHW]Y Qm %44ɼi⒒R--9J'4O`2Dd}_8{u%VKK0_oⲃJN\b+S7M;yo֕+E#_d4\vL J6Dw8Wm+ g</ ߼#fCzN:4I͠e|]w bf)w"}K/w9\M3c!//,CXr>]iFAUb]xj*=3%JrXK3}K_>3ٯ2eJ4kM!Hw-+|fX`r{\<6[Ωm,zngچkyC= !gg}2>,i_ n7R.-{>蒒%PE╅ч|P#yjۗ}y'rߙO}.%=z;VLC>z`~ź~i7YEEEcu_jl8wƮbbE2}U A>5}%W+|h۴oI:UwM}qr//]M;quL!H'sSjKkscҩ+"^y.qtS8rzWug (y.,L\2Q,dBz{}<Ϧ[Wr<.[6LӦbws` `}ЉKJ&J Gtix陏<Ϝ9 ϼtuTN}EjaҢE^޹W+Olҙ}aƓ91 0H6(x5K}gK+w0(:c%U [ې󳜜L=Ң^~'\|= TQWT<׷S9HiHtir[>̍c'v-q{`ᄍ[Xa|Ej;|wc7c/Hҋ/{zsa4Y@rR͂[+>5ɯmiR|@3=3o,v~iт%~8K؉z yĭ{ LJ+ ؕu%<ѣG  9YCC5rߗ;#|X~mȈ3Ʒ--<%Kx݊!Ӗ*S l 1J}ߗOsǘ~nj%vVȓzmp?Dxwe/K}g3 ѻT>.\ؽe_y~<҉E^>q1f̘W^]gK-u1˵r7C4LrKѳT:o۷uDG/s|A=I~a6VZOKѳx ?-b3gUw߅-_ ZYX=1FG4؞y^#|g$TGN]|Qx^C{g-6ސ{O~3}A}ޫ ^]×t5bĘW>UFo\ѥIL}򱍹'_W!u%Ƙcʑz+6–}[v@SWq5ifr'7^a/CwPk=l sr_g)hޛJ9FYqNﺜC_ ]ؙK/_.cw`DG;€ `9G񢴬Or{=Sj˾ 9y}s_'I7M xzڭ߹/_Nj`{*\Фũ|FcK+ |F8IA~+t}"ް{7KY^]?!!wx`14zCX -°؋_ƒ`q<0({LZY3OL;xx``:zy۳9op .x%_ieaĈǢ? 4oM;G㣩}4׭?`H{y?..Fx|H}ijR—DbHv7cv0̓x5?]u9u7L ~m,>R,Ӥ`13?^GSẊN_~Ôg[;#)2AkeqV޺6z+׵ _w~ÖAܮ[H[FS7o>m$+ïƋ#_Gcs[@Oosp$X6=)wx`8Ox}#] XƼ2>"e)0xwmnJЦ,];h/LF OVw%ZOK[xɪ]|&-~iKwV})3]p+ V =߰(66! c3?IWZmի@HS ^"y`MbpwF.OMBku)d=Kf^:?Z6H.8 pɭ֎Ů5i~* _9 ;vw i:c}l|Й Ѵ@Hm]>3f&x SMd7͋_׼)^҃~oOvwnwȮƋS þ*?|p}W8= xU+nOZ=7mk*X.8ar>,c3tO_N)7^Ŋit`7>B:Up:Q/Dr'pi0^U ͉<]3ŽN[y#UEug0,dps&2zf)t~GXgDҪ'`[k}^biG Zp9vFzGRr]Ir I1^M΍e,C瞡tNww-OqF?67l绻Cosys75j+UN(aM8LɍpFEx\pEuccq×#oe$:H7+©*t­n^*tjnNVrcRnCj{7;tG|{A8ݾ1t*ZY{ˈp{cs@`[7l6ѣxqf7գ'9~\/:Ŭ|&n8ÖMT^Lme±+mDaq]Vr3V&n~)pzH[msnk;.8v)p&%Gzѱv Ӕ?RgmS.Gۥ'q8 V=vܓs#HS|Ä㕯m װj|W%_n[X.8NГ=)_}ݭU,|\]v߄k*V^h~3a=.r>jb5a.$9`ò;P.kK){ a#]]qvP~v`{iqPrI]Gr>IvH|\'+tFS`{I ,@TF[ةOsNA)sat]:.m;\W|WI+eyܹx>31VVu$V8P~ፁ ux,*F'BbqӋ߸dGk eMh߁%–\:x3x@}r`ÓAv-h`G嫀JY}d.C:7#k#ߪ/W=EyJ+ W~;oh 7~>?o%tρ(*0&`H0\_g pu;u({|(ui3-_~ `lq>GWUz/;p3y,k`l4`m$ӚI8)Wss` иf -E08 `SF06x9 ,4m&]V6 p+HF5`:P6  ,U)! 0^`0NՆ8,nEB1I8 J f*[0ֽ\ Ȍ-di {0C 8aM#HWC8N6w`,b$nla^4FRqA435t2w ttPaA4+A|`yTYKwCh4:%?ygR]FP:cfp\~Ȁ>ՙx!c}>/Gj_J*N p(-`pbuQTpdD3 j3jšq `!*zUjX8\.a0z#X5X B X'~&\:k֟߀ } Q ߄֋{v`M3`ZH`obOp V0?t>^8%v%c_؀#bhFA=m !bhFA_l2ҼK  0"h gh14v!.?Qh14v!7.7?Sq(_kBkAokTpW Y dM *rt`Ł9h+A;_u:}cYjb~Ws^` jf`4oDu$6Drʿa2w4~5V8~#*HnM$#8 Hҧ;9$ fn"%<8$ VRU*\*``Λf)ڇ9i2;exL$ b3Q~U ~CpC i ՛ojm87~:%`gcv"Qjvp|tYï}vAr`W1_~ck<$a=]5,o~.ex8~Qx\FӱLo/oU,*k e(gWSa 5,/~F;_M:W976"ؑjX8\nA W* 촀_T~jpo.@W{plXz`ڀ`-`r̯ 'Fί;_Mz2OS_K v6LC`aH:0~-$8<n5b:P~-#8t~#`l@)~-!jH8,E _ v>t-tuNL;  mP5`#pxuįߠ=N._v $#.VʯIߠ&9{.s0`;`+!8<a d ao0`2Å_`a/.r`5jÈ_\:/B5iFl%aů pg]CpxU|0W} !l Í_++] 8U>XCONpī=';. 8(WX8 w"Opp7u"99". Ur7u,#Go0Ew4 m1aïz;#:'E.C+G(ߛ!8 f`-#8U')'pXp ao0M;e{+~+n8I N+΄A b`7l$3i{#Ë_98<N7Ⱜ3=5`3]WmؔF vAtGuL&uW"] z##;ߊ q`w\cRI;HUP8b¯E #9E_7 į 4#OC;`'\ ` ]opEh.̚v7+"4vMC۟`gĪ v'a5x1s;Oo`lA˞;ߊ``\c~ˎ;_M +1&bٓ`/~o5,2'=eGȯ \4sNښ`'/pXbE)NWKx5#II#Uy"pXlzrÒ`gq$x I"ءH8V#ة9puI;_5apU` v,u[[JsU8l-W3= C[L ] J#oDqpؕaCMvXKIh~70Vw=aBUH#0d:Wm"`ou#doDFM$FF'" v:fH I'e01tbhsv>]!4+I mW ,v/6'tP_jFlCM -61_Mpr ~)M&6`W:ץ_u:`J]¯I :)ߐ#hR:*ׅ_H 5ew v A z"Fk4`.` vj +ྲྀ*cH{  X"~VTS"C- X&~5%Qr Wv3+c L8Qz `Mܞ{΄1zVX. ef<]ZƲK')]Ưƀ`a6~`.zrNl_҂ uCnx=-؛਎~=.W3qhs+3du'`g$ʂ}np9-j8 8+cJes'Zt&UN(خCp#g\ǯƀ "u89n{yJW+ 1QQ~kU 8*MWTQj6&*X/-_ X pEus01Zsut`Ob[^?~3``OHg$`[|ѮY>^P;%hY9`;.D-7l<`DĔDD}[=Q).%`[[o1or[w$ V\\Y"8lNP:)#`[[@M.-jC1ŭ}3XYYQG +22[-}'UW/|=uy[^]ԧ `V{Q,pRyTWV٭8 "i8VM3:{&|C7^Tf$5 b Z7 %WHVX֨9M! &z"XJLVh!-`i6aGNrq]L G'Ǣ>q0bYZ^5%DԱD[@[|v)wgS XSBmr`Vߪ=R M8 AU x+-רF~D[@5d98ړ8AhOZ?jmc~)LD!=5x[گ{ɡ9 ڂz鯧nja<.ev=%3vOƻmx ,zMX[b,90] %Tq6>hF`֌sdj ~198p#%f}`aD# 6- o #b(^TG _#uy!رNzkLo%! 6)~> ~cE!;?OԧN}`Y'͋m5/J!; 4鹅_wz;G XweؙDu >n8^R%P3DYů ?/?FcV uCpyL+7b<ϣeZ&(qE -0ޅ=Ra@sl$%8Žkcw|g=UL~ 5Y[rpݣc3)jq}~~{& L2{Ǥ#GF|(J9~s_o|f-d`Hk XSK0Q_!ˎu_)~{82m;8V)VhLQPVo^hs SV3|_6$d -}+Jy/ޥhC3~5 芨2fSak2| 9w)*G i`?~j6"֔:] |a~gL 0QڷjȈ+C߯-7Y / pd6W9`W Fxp.IW |}/k rM7`f48^m~׫qW79, J#h*ִ[}6٣Ca׻tTޔ}jÃus&2!r^Cm\?"xf>c> X9~5t),BDwp_ _ȑ#?+H~^6|`M]\)|7ƁAjF825`!\89Mh5+M3c!X4^6YF/H65At#~w}Qw%̯͆eb}Ӑo :ɉ?!R>s_yJ-]q[`m8`~+q^O9O :?;}ψ~11"`wm12066SIŀ5?B ^@x}cڙgt%k ؗ`'p~M%:FbP \0'#soc#G g#ϖ͘QV#!88wP!IC:GXʯT]?cRJ]͸1Fٌ=7XIS(ށ}[MGbgf4g>*#TAKsRxԗxo `g Vl8ZRa5{iױ :KoYٍD=7{7 ;aP5kS$ps7q_ eٲ{,v`FpAс̯igf8j $~݀N%w (xC`K~{l ^:K̈́)B)MufpRl[T,&gce7n(/{r' 7ap_'} 6~^w1`_>0g;R})x/!Δ2 {H&\R>MCbnCt~={9d(kFP`pD\KIПYYe\F쿛U dWiF kReu9Wi<Wo^;̗ٓ2úUUUY[QD>G&(0ɀ0 `u"ۯ*}#Qz=np5OwSKYaF'{Wp=zא!H+V'$ 蔖Gc/^rսyذ5~Q,|{w0j?MgRoats27=$3e&/<<  >xUFg>v ntS\%eùVehFWĚtrQ&2W9-](/_ =Ƥ@ 4iw6bjYr|op—/׏G'rz9l5A?HV:[3ߕI6f9fsw0Qwf22H{0-G'7 WCsG[9#E\gO0{)u+ǹ75}`*^_ }O_"e_D mz~V)L_9wpT5LjV kW DpZw0ׄ3\oyg+tI|1&U W7=,6عJ<^}~M\eK+Y< pG5D+puf<7xG&) ҡ:@j3M9Tw}9Tw汳w)m:зnX鑑v6a[]:گf:yC=Cg&y+/ӭ|VmvenCR_}IS**ʆIp/&T<)JⳤxsUpH苍_Uf9*🾧)gJSWv3xyG"x^=|qrC+qժm >+z v0`u3I bgH}3(+ edgJgo7ݺRBgz _  nsxɀW}`qh8:>ʵլܔ;$,h35P5_Ul {Dy3KM5ڡ+6_/ײUYOYr =KQuěD}zbmGrx?=IaKBpH M#gbgȭ2J~ܳyfd:ovujQԮyseۖz1z+=G:Ԟ{Ԍ M+XQɡ2lS+ |e,$7H4[ |eEѳ9Jwٲm:'l0T!|'g] \)0!>{CywYߓ>vFjxUoq>5tU*Sۖm۶੃rx!zVnJoV]\0,hW(.n'>J#We_WzYJwZzyٲSȁL|ֶ^b;UQ/L5Ҁ=2ۻ:Z 6V2421,Nm*}i㨪{ffR,g3U ӻ)ootz`XqFScg3f Bgy{t;bE`X7s7Sл4t%|'үw/q2~5G:apE|##qήؘS^_ SXZw.m߲2+/ :1oӲ:4D^:ah9pm4F!r_>39A<{՝9}]0wĉ,0'F F}^=?c^Z**?^7}_?yVslYWY~5׮n7I+2_J|wûtʕ+2#,#+ù67jaBk^2& ) m0Syϴ<{G"x[Uʺy4tE+%e^bR;pʕ#~Yp>Ir?Wo? ,prhD (A.YId7hݷJ3A+i43y[Jl1~ܗ׭%+YrN߫|&9_}ΚRyJN=7*RQPXߕ+A>u-X ]I Y{7n+CƠ<|j)kTZW%,^ɕN`k6Tx+O0˞˳w4$!:#r澣s~(&͟PIZU#Ă_QZ}^DijcY]Sr$L Po 75\ EV\Ss`}w5Z*Cq+6 \uW3rWL^i&w4RrR߉+WR*%z33SSU tzm,y{^'.?fާz8EۏJ2Pny&x^^3/>s]$]IcgI"x&25Z]Ask69* RhH_BnjicPX'gi]gr9%QqyGBݗd8~7{b)]\N@^g0৻WRxK?}ϋҳx$e:_Zv,xV%]IS%r(3g_2 06?j>ı-y߳&\ʏ!e?[ dijuPijR\iݤ9l$=EWYԞM#%r_I(JVh&ĖpГNApHn:tF}W)>r"KNIRኚKJxeo6n _+Ϻ'8qG~$^>f2IF|&yД@ xa01}W?~VOm绌eҩ u6RЩƶFa/{ѣWњF{1wzH*/wtiRMX%}e](6 Gbߗ_n%ssff[fcaJ~LWuH)yqGǘz~C~جߟ8YM~Jw_t8oj/MҡL Gܗ 7hi!U[zؙe%e#])qkBMh ]74MPXCw8.ڸ-ˌھγ8L,]Z2QR%|60~E݊waaW5u,OZzzk|Bl _kO;de&ަƯr=5_1U|Eے)+=wN+Yo'5{/v$$$zw\dǙ; W.]I&I͹ 1sŬ'~` %~"tV업#+=Y7+My_=Ny\xL]D}9췱ey ?߬+~k닊5hn5`8638/mЕP&%+yl+ r{s+v=I `;B;mm6қ$/SYYX+iAN~iWx7y|NGwt=o}-߆n.ӜYJ>] 33V7{J_ijdt*V{o&U_; ի, ۋjk64wD3ywkm%?e^ZZw&/< {3[Z25]_84~۳kY[@WXXȷ?0v du&H{,3o}&miyWm朗+.HcsݗWruXZd_U_7o2^?%|Ig>k[k Lݕ6ʠ>h'R.=Sۯr$mA╸TBu6m,w}`42Ypυ^i7Cg;k׮cE0!O1 h8g/Mo, 9xH["7x&&#yj徵E|Gw̒ϳu:{׮Q I(<[@X,ծI/ɱ/}KDۗi(#7JugPH۳,|Uw$eG(t%γ)}z(]ٷoxH쬴P_7I<` ]JSuxM}O]+qж̶6mY__>Cg x7If}(F[NrXp Jx@sF:%s tgrxlm)3ujzsTg54 R|z]<&z2ߛxNh:Wrj%~lAFhiB%rLbjM2_/9o `9 ]R}VQ.{Wbq g*Ej`?}w e+KH,&3Ssq=hfs}mQCQծxhPI Fe5nܐ[a3bjC"UE20^&}GRJbtzGW]z>Q_PTRkyqD<_E<]DŽzk×[/Ep h p u1/+7VNY߶ãkd/- zlKϷe|b^|o!؃k,C[ p,B85Aŗ/QW"K5KWձz~-+,6f ;}`q!#9,#BgJ8Rf2z 9UGogbŭ qyWޘ!S<ɯ(^&uDT$z2`0~HNɎ8>"t0o{{V{¾IWکtu/=ߒĊlU7yK3㗊V"Q,Bwܙ{aˡ RpZ( l]?٨pt罂+vz2߷Eߗǹ*gg+3ϲe8 `}w9~{/pa'JCf$C{8\W(x[P"1qW|j|nbJ<[ټvuS,/F>G6(x+ eQ߫+c{߁۲¾ݻ'öRyYpl()pWS|/[⑅v·hWgq$J{H;Gm^AnwEjծvH+Ts w.0vlٲ{CΆ 99r1}()JPt9svPW#GIJie0Ojk9+ K}o]ʳJTuIgg);z_^x~tŴe߾ [6~wnuy ^7I@lml+X~ӓk6&RPV]GaZM]љv~s^,&wieS9#Vcfw|ul#rgf6lزaoκy_}k'vN[ns]Wn'2VuyAņtKyؓk?Ts_q)OX DݪPz>IOOJ3|56Ƒhk9,|;_.sŜrC{g>#|0ys_nu罺-xiK''cn@Ͼ!)CII͕uS2*k7Nc)$ԙ ߠ 8#/<',}/<>smHhRW>MRc~fRx/MߥQn+swa˅ .l`Yy ~{mkH/8?ӭm48F+|{R撊C!秇P7t>?QtjW۳x緞/,A<0X(L~g=vZ}qmCԱ3IܨʑgJ~ɁWH;}: n{ھ۽!g7̗ o_ ^ZhK'dLqxlĈ_cƼ2&@XI=GU&p~v{Jha#+kjkv: c9R*[3WQWI=:M%* ՆU&gnrt47<2 `;uUbUFQA(mKsӮZ @ύ>97yZˍJk3~# N} i+ 旃 6 ޝ-&˹=/nLM,,L8>B_ e<ȝ1}7 @$ X*Z_~b-𵷧ok>+k7~UB?^uA_ M?[%ܨxmzf<:/c\࠱wiRr/bcȅ]8 0޻*n8A߬ ;]oy{tUZ]#p_;~l}y_WN/wj; UWCEmfc G-&Sv|ܢ/&GStYx^q]ES#wo^Rػ_BDq&q9 4CnҔȊH#<ʂ{/>'>sr̦FS{Yd>::_q=5Ǐ\1$V0]D˕#6VǬq5&dkh^9P1>h# Rf7ZXq,ep5ǵaՈGRmpyfKKse_^=o>]\$7h ms53>w{ޕٚWoɥA9 4L],]V kw 5 >p#ob>hF$,6ǩ:u>-.—秮X?_=< М:hב%ώI : ,%w5a])^j ػ _ս ^k[uf 5H&9m7;º RMD_J/ Kv9ޯ!ԩ/>=}e .{ۂnT9rd+<;Nhrbb09yٻfqw+ Kpϡh4[WAqGT_ˡ]\{L7m]Vؼb{f_Vs%ӭ %`Vo4`BԨ@Sm\`\9o,\s'/~w<-|lro] /- /͙YΎO!poXc.zYā*c)wNkD:ue׹}6$ecw08˾y %~eV9.{0$:Ws0x9z( Q*kk@׊|b\Y\!1Mww/ύw[M^1ª6 z:F*b&rL<…ʺ/!gvC4p2~5nk\$zY< tB7~me׹Ѹzݷ4W,k&/87715}iӧ\aia݅u=?M|eϥGPPKQF GI!&D7K<} tN l2s~׮}'wOl(gqcqghCy|ld|f/wZrŌecSqDabHp;7n?fή~O}]G&/ҷfx\*ύ.U͍`n4E\(]awg}]]ů9Bu/_Ŭz ½bRP|3UF p/tͳ^uy=ovOX]Yߪ_4lhWEqN:)3|8b9Q՘ 6jN^3 rÌbϗՆ(ۘrwXyU=Bmb˱ɓ[&/\#LC;T!7-DCAY ٟ_?96yfWU'7xߗc_˟ǞBWmln/[]Up #ǘ JۃA`+M̴M@cp5&~ֶhrs\vuSn].yE ȞF ̮Fp?&+ s_.<9# 4aS*DILIM|*d@Nߢzk2$pvAtW̧Ģ.Ϟwc G#Oqaվ}0lW'06707r5#(Fs&I'Q~@b;5$v>PXĉ#ncsDWnLML<7}GhdxycNũWRKT 7 m˾TQHD CL`äbٟ&)w|wr]݅nTxs#XXUL?TW/qwm-mxIaue|]50:()IXI31¤ϝ;xtn#{«|epqjoF Lqaɳw3kseg>oN!_2{hM/q*Goq nM֍#o\wvlcʍE ~'6h*_X]c?iUbA׆v*♪طr\-1V%IMȥĘ"3a#bξ>o,Tlqe}~j}qۿ>>9-g{֎,gj'Rvy!f9ˁnǹVysswnm&q"+?ˋEFqJg. MRVV $R EnFh_2E@|w{ܷEϻ]mlP1bNu`0rֱ?C:5# [hJdHtDy,FY!JxFǯē@]Y\ջ/T^ue6hG DH\n\[{W(M)&(fCWcVaQFtGbyJ"jҬr@"kgg'^ɷ#]muEGd/;*_7A^ͭyǛml N>Ơw:m*4ڀ_;C M0fW+e$~_-8wFPo5eIҎ][93sgCz5?fcxXՆ"{.s7JM>`qݞk<#wϤ7iY]S 7-84>羮}6 #pġ0Ф\ y75W9nF..NQ[WO=5J黓6pG*m҈s!OL(5u4JH8t>gkF^X{";=wv#N̂Kjrd0vv@ߥ'xdak(,=8M"{o2 uJsy?TkJ?H5 NͮBY8{yd4$ƑY)3. >.\p pN1"1Sh^Gn0 掰u ߣ(@ଷ{g.8M:<<:u(vВ6? *^8ҥϏSVԾi~{ U}`m͚^YLLL<yAW߻;9/, r"J2X˝CjirR6Kml,uˁZs_(GNf&غnaiٳ G~Ӿ37;M}oa Kl9sF." GAY/O[oakʚY'PBlgR|jfJߥ%mx:}@̭$0kD[]wC/zXm_e]~kAmHY0g;PF KM<'O7+ 1;Tv(ݢۃHѬ190:6XM{zcYX& uoYإyʹWױ;^}_j |_nukD#EOY{L Jm0qsULh \s Gؽ*?]DjάϔY.y͕-(v G%Vֆ l%~0ph2+kbEv;\:쯚*ה?G[vjK kbwdW[7:YzȄ 1~QctWqb#|5 m(iA 'ښ5|nG_}\<gJ~ ?]x&Xw- Pkh)Gb}ӳN:A&'rk |G>ҏ:ege7m)DWkv_6Luf Ivh{ e5-JB΁/S 툽DюLk;vͻ-?y{ z[Q,gTb\2bR0靽%ynH`^{48 _?0{d N"yͳKwr Ny},$7)΀ؙ~W`0 ᵑ'̡-G Фn ~[;/v~~n4{O Ғ%n,lY}_G0(-$c8Q#t<%] GJF^NJ{l|kQs)}G`G\\ˍ9sE:3ʢ¾*s1s#y4"K]V~tӇr7-"]׆9Z+_Syb׏B'K4 dC6m.4-ߘH^~@uf{k![Lw(ϞyJ*^ # @ԴZECsXLZPN; wůz͋?Aax[QԹQbʝ2'N"/nB5J;m+>rܽdouK- _=۽Δ#eXi@rgW 0J9漏qd:nU{.}z0~hOK|tMo#3d(JפIѮ}d+^W@ ~7/O({ii95 [î}-$.!+dʜ*|ޛU`՗1^4rFI vu )]B?dQgNåm>X:P-+Yo :f9Q^Llky1ߤCLluQxQm,[`4^ /E%샀.' |@Io5Vs&/. Tʄ_='7a 7{5uR!-{\d/x[`]0Û=#l3yU7 (k,=gx0VCO`og`.C}^&SO>Ke&D[~4%eӞ>ދx .*K_|{__w7)ߧ:<!k3ǎYnQXBڗF< xKs޼y֬Y` &\ -+luwT.ݕ =w-2Ad7o&;f%R6#R5SnoS@gᔳ)n_(`rWW(a$ԬB7 "dmvbҢXo_A=U8)pR0OSOAP!]ߗMO9` 4d?"SBz@NzP,|p"@=üS(PE8@) xNE_DEEXv㶇J { kjѵBAd,ѽP.tI(?M10A_OM0uыDlS@}d}-:I>8`#r"`h=}q9L&ue˾A磏A~珠'y`uH#7G7v,8bgG{b[fP>4R+e_(7:F4"H|E1E uF$):IL=vFS~Ebh4#}27$7XvF߈=O Ɣ\Mq"ǫӣ驔ƓmHL <.lU,ƢFEcT4%`ҞA 3p4b2B}g_ [>$U%`Dɪ  > S?s"jF`{{GpٗJΔTLUIn TaUB ,p@r)mp k4x|l?繹U *U"!FjHpRD֒*֒ܭUU[ss lIJޒx#joJA&'/(9(9CO$h4Rd ?Ro>$/&kN |DC0QZȍv#(X 5ǿՕϔluꍴ(&!A,hBM.M!dJq HP2j2M1>(\H "?ycȤ!vo vF~ 6<}.sHHL 0Q 91 vqQ 1 J?|iT*e_bvC 8  |n~la Y'}/ut Eqކ$vf$@!1TQ!;wBҘsaqpYv!ߙun/x5\b(;(K[ $)%b1&JB^g!|`ɲ|>1&t< CǏ XS$Q!Qx+`6N |E#%{{G՞b_c𖕵Ki{@]Rr81ic^I$p@HH)n5ٳWϮ]CGٵl xC$Ă&]qOM<{lnj"{ ~YgFȳWk7"r 6^r,QtS|ܓ;ö#-4 W:=_2?F(fŘO)hx͍,)Y/ ,d$h|K|G:VnږN/=8prl| DL%tG]=ۦ1D"QM`K!a"KuKha)A6} #!MLX ^DJ櫨0Y>L؀?F%>3QF n)At7Q#I[4˄w31nN|W_3pاПH0HH9̏k/_k V$& Kday' Ӱ ,ڮl{c$R=aM!q0$~$$8cOjZW7r)j k^aadB4IImG UMqTt{Z.hI܄i'-va6./fK3elUNiEӫ)Y>_S&|}Tv:Q.q/GdEgg_ p t>+_U Zز~ fXuw \сQ#ΎrFNda@YV=ZnCA,:[&g}`TzhF U,j=sP65awZvv皲Sׯ/G,bBzF_ wz7O];T=YHӫ }p7߬p zB; 7>x)Ml+SVuf!i@ `__A+Z X&z0A VEŗ5ٝ}Kɧv @MMԈo6f Y9p2׿zp|ܔ*xp:@ѧ*U]p0g*>ƨYQ1G]EtH&cS-&V)FxFU=hsxXz:h!t$>~tcx V' )7dY C;,/EvHyL ^`=F$.cF'D_È?sNQڔWeNc |o# _H'1lF<5_nl> ucP%)(AC2 c1v`v{8HE(aXw>zuEs<<=QpE zTz\w_u3zC[A>  xL#@IJXap4 n?UL+R<جF֫-F `.G#!ͣNh ^NiN]2(FjIYXͫWO%R$ dp/ɣ,قG% 9vF6OV5CJY8_Mk1 ̵C99wr7/Y]9lT7z*g_Oɞ8Wyd؞hlR`P*SYdwe%À/@R}Cf mZ#jYFwr߷]|sWU4zʫ=U^W] g _0ܥx#zGqݎf2:Ԙ$UiիJ 5pk>jj0n'iѬ"+G6pae Hx>dk*նU͕u[U͝GyJv\_S3 ϟf>C#vbN7jIjf;S$EutfTRH aFn0ԶT˄JX\|C! GP ( hz*)Z]g@tPh7;RI4gFHV{GvޙSӉd#S{MUj'ڊ/ƙ3Y\3eM!/eyZI([G5Ps{nmU v(tQ]s#=(5vw:,Obot sguΡ`[p;6SE-&rF2` ?Vtb'sa+ߙ_tޘ5cey꩐PӡgGe P2#s窨er۞ V"yu,-;o?#cuA;N{g(/|,8Pֱ4ٹWt͝*U^iCS)Yci\$SJ6]{ {IzpnEJ4u gRgW6ySTe7OJDƩnWk?vY1DhS<:̽\ Grڦ#ό_PxNk T0,;$q8*YSn|p9xt+0dbђ0/53> Lpa|Z0ڵ,Ju!gTVm+J:qVO#3[~:k[ʧE)j>ᔥrVRD{0 /-/3`eVN9Hs~{0cx?pw*gh\67TȖrJ~{0cYa];/]c Q[aPGSQqLx!h2YJtέ`}Ky|Ύ+}7HGQƄ7 XaQh7V6*F{pAs;WG&`ewmev+_G:H5N5Jǃ J `pU ()^lUXп;`g_)ج|-JPv{y?F!lS?CkJˏe6}'z0纝J֩_]WZп?`XMiK6psG=`2z†=o),G=`2zPaMni e`–7Jh|e47ohf=JW"ߍ l)+'-6dRՍvc)-ztsSҍfԝoVO:2^LPzZb}_AoWP~|`-P8}@a;%7PX)aB0n (_S `V;;X4K,ͨuh-CVr@Z:Wa7q,V3fحpH S7 .{ Qy alReC^*ɹkn,}}+H-EX K0Pg>v[غ*1R=6ѥ7A1[*FHo *{cYa7h sd^yvU[F7.^0S=m?w-_WVL%HU݊ )L/+YJ)^k{:wvmPס|;ׯ5`#{mfΥIC9"6OlX][^5ޥ+,i$m]# jܽkᕷ 0oo鲙c=DyE.Z#؋EޱEF × m(*VTT;Ck͊ӫuL@0+ 7Ҭ]6oV j iK h ZJ|k_6cHq ݕ#~ ^ܣkV-ZlXZ2m#y,l7yvzca˼ ^lm=~*E.gNşYEˋ=Zte^:`l\k%Ʒ #;~ uvpfaK|gd,6 aN~ XU zEb* KuKrF. ˄m7s5D:`uYYUr^2 K[)K1WFlRMׇ12U" HR(}N,i X)?

G[GxtrmF2`6îT6X=]{>jp YȤJR1]NHj`Q2!Nu=$IO_ W&C*EFl(ߩ!M$|_oǰIڪ=RN7̾lMq0k*nl?J5"@= ߤq8b- j[no?ReR/6[ܮn?{͖) S2`g[MZ 6;)#WHi3F'E&6-"ѕRW*GgBl.8kSMW5^np zȭ8P%sft͡{ nԤ'z>]Wq>zwrٍo; ]& 4w7G_Y#, ms3Xm,Ҭpa+a9ƺQ4:e>Jf; f4r(*hEn?뭣NQ&o/ L]|-j%]eKSm?m`v;/V?mupfEF]e{Yw옵ym 0vCkRͰ:KKK/6:CZH&o!mvw,Y73/ Bt Mxp֬S b UAJQ--N-ZS "7 !eؚEQ-=(:ڑEע+^#^t" `1l5xo0:|l4#y$|2Xf2bcU%`ĂgTU!bW{W{0{ ^;_*6$ N=SRmw[)XnpVJ#Gn֭[k6?t1”`Rq  ~@R6ZþSb= AkV c՚@p KTZ͓vA}1Bv8Nx`VGU~ 8A  O2*ZУ3{x^w򂘀7BNNFo2yA L s~X+Vʀ`Ą sw sh`G'*Г`} hńDgEQNv[Tn`DED#Q;nTHL;zD$1Qǣb^ Tn52A#p|% ȡZZՄ&ppZ .CB[T6pc@?LiiBe\پ%J3CHF  61Ә:JK?̪m,d~ў`AƂ 2N/e.R-X6jcIj M2\]^`e%G+no_dɒv%(0S+m#RIYrɒZ0W.Yr%X`K |5.A+!j5FSX׸%@/յg^z `վ.VFU A4:VɢS[qK4[HegC.& @){a#E0a6\cIӊ7bfIڈ ,.Fo1+x6:_4PRZZq+-b"Y{18ioqxa@zԎWMJJڛt=xrKA{!:Ii“&Gƒ&i5VO[|R|< $aTJbGy *F ×mH/|qx;f+,.9Ѝ1IqOfC5x %..KKő040*LKtЯ7f Gڧ^IL|%W0lB(}R//Rc8|ްaC}p$'ډ/ Gp fq7l-;J!3}xn؇9Q zǠ"-gٳgkvtˆdagY H1g_;hZ.S^@W"X^ёx"ggwxP|9X*aiX2:__Q^zY~}9:0>L׃czH:<9/up(Yoc+Bx&YA~1R*~X^_ RzXŸ>ޏUT|,]_1)~ X %XZZ~AF#]sS '|N阛˕isχ4˞҅SQrlS~F4MSܬ^ޯOMm<ɃaIl;./_bGCfBG3w/ nds*֥ũ|~$-})+M JD_*mV~.޿Dwbrug=L-xξ?Gs{Kޣ˴6Ȉ]V û唅>{ҥ{ S峞Y`9Kx+O;Fя2" 'ֹkxWOuhm0ᐙKFF/1MFGu? 8Y׍ڦo03ʣ];}(Ѱ~۴OQjڏ`XH`!XH`!XH`!XH`!XH`!XH`!XH`!X`!XH`XH`!XH`XH`!XH`!XH`!XHO B,$ B,$ B,$ ,$ B,$ __CxIENDB`plugins/limit-login-attempts-reloaded/assets/css/images/sprite-add.svg000064400000134011147176754540022225 0ustar00plugins/limit-login-attempts-reloaded/assets/css/images/sprite.svg000064400000126210147176754540021501 0ustar00plugins/limit-login-attempts-reloaded/assets/css/images/start.png000064400000003100147176754540021305 0ustar00PNG  IHDR66Ej pHYs,K,K=sRGBgAMA aIDATxݚO^F8Gpod6>A  ,ZݡMjXcF4E0-5μyfT G@NX?IߏF 20U0> W*:co0&܂LRi gkw7xۀ`4%1p>ajdxj!xaC^vzOחgdd X+=A~Յ酃ѿlHLu /bp/ݫ/WH +PL`ғq2[F a>_ekBA^]ǁ륿!m\`[% -E3l`s1Ÿ5ko}mi>?Cyk ̙Mɦ00|x2&İɓp^{ LÛzaA{0cD ؐg{R*E*  ܮEhulo`SjbjlUZhcAe&ZW.OSŤ ((qnؗtnil,.=(l}<u޴v-y]KB&1nϚ0r|7n;2Ǿ5?k_FyhLu[(h E 1EdPj*rӫ"i_ $Yr *K~7 [ v"s2c/X:x,+kMEj;+7KNOFuM 9lp?YdvOs[Sas==3`*sHnB ?b5͈O&AeZ(Gۘ?NOGQK7Hpg { .1 ; @rSxWҬO |s=r(DFvk)+v۷i`aJv#Y%vh"#[7qqGez6op!/ނ,>z{IzL7U 鏌dۼv=Q;1֬*R&_RVEI>9c>m%Z=VBoJLjw pD1x:K~{07d6$2'#v)IwWo1a/3M} LpߚM;M)RM"ɕyy.-/o^Fj˫閐ts[kuO[ hR ~>Ah7.vB ePEX&A)XgM+MeDg&8SV߽S AO3B?tBQ'jv2%N]k 8%ߣawҜ b Nװ֮0-lLZQ)kLt0(2m clMaX/ͩ 5n:f[W']w&6xۗ h{,Y-nr%K7狛6]E!*^v)-Nν3}S~9}<>|Dg7\J{4K 3tfZޱ`7u7Yɶ~f]<4m*<%%{^`FR l8<Oh8<Ok2n6cL`>]=u$,`&+hk6J_*|K0?@lxdom]L3ݞߌ0.;TE,;4tMOmPLUA&e+`8u]577~"h8<Oh8<]C8YsZ}iA ֠)ȞsW.!m. z[#R䨚 \R{v r R ?˝#[|f`y)A-QN 4wϮ:Kr{河3ZP!0t{l\YwSnPIA.Vm-R $ysI@;eغX.vYvB n]gWcVn*ôyT=Mhpt +3 '@ px4 '@ pC`=x?.jlk]R Q.ޫ5@P,[Zj6ƵKɟڕ[ ,P/5/thzG]Yn!wk9څR+@K tťa.mKu DM篂U!LgK\At$VrX˒`LoMe/R+X.X.]L]Nq%e7w"< ּp뻴ʩ@  uǤ OO7 '@ px4 PdrvM{wQve{Ȯ]0d1w%L,vQwqyyx`]jW.!WWl/D3,v܁6]iZ<:IݯtM~9UPi!snS!QyU緯lJ Ț!$(7-/ޮB¤F[^)F#*U$`7\!OUŪ3ǐ_J:𨃏ܽX6X!|.!}t$ePROQա/P[Cmb,=XA!tho14]Zh=Oh8<#@keEٲM&IKѢ&b04(.%thtIH2>Dgͳ]ݢ@NE]hɟ|T=m5@ .#BW2wQ׿¨alrvEb)n#ය݄F/N6%t]KX" nz"t.'`[A-y-LTi rgW=)lj&˺;YeF,6CG_0l;y1|5'@ px4SLT_ʿߐ:ADV\cK !e8L}F{=.y0~w,ݭ9^n gH]Y,b}H!0 La4-Uڣ$R|crQx/a _seRmDz$V\ 3<ɔ0㗹1VD#a=5!*,6~ ^#Jt Wg{ȃsd,o9X1 ?*uuB,=`޻'1l$[Gx4 '@ DΞ-z)E}:g˖ gÁyk>fiNa~  ɏk`.73PȸҜ;+ ZpMlbinFݬLپȓ4 :a.0JN.pk8NPx\lh݅x2iǹ?OH5M@.K4p\a/>ay%^zU25O'0VOsMR4"0VܞFqyYEL0])PK~Irx /Qs*SL1fn>6U4>i#\}cJjrjo_u8n,JFgyFk6a[0y|kS\6 + )L*g EDخq|Y_'-?Z";<Wϼ= [\IL}‹7OqX 4<z7=~CP6w'ƟL~*?7ȳg%npMBC{ L^O2;C!-c%DP]y_VaX1uҗEc_t'[PP> `4B "O7ՑF3 <5ϝ|B.0#bb],ҥK{/QWܯd0~.ꏜ}eK Y@3>?_"X,u5OԘ(xsG4DI 4 '@ p4XNIMs(,ѡކ<&R=>@]ZG^ _Hk|p7rFp,/^>G-B+7(z3d-A^'qzj z_`I:L0T|aɄ܇'/CTS̤ U (.2Rr ?< aGBKsRƔ[IlcylU_ɷxO QH1NcӺ#?5f4ߣ3lgGAnjԄ&"\r'VZvD)ykCbW;I[‰k!fuiQ*tWsN_~W< g)'8}ږjHzD66Dkx3?xFy znoO+v,bcxsLwxtnGĝlNn2ھIOΐlƟw g kг=ޜlAl)l; )"W2:-.H٥aq66$\0oqnjcC[Oh8<O":F@j1Xg dbݖ3zELHWW+wx0- pxk` px4 '@ pAܣDkH2u]AzwnPExFyAum 0F0bG:1;L6|CGICHRݿ6y~˘{o}@]Q~"h8<Oh8/~B P-d׻͒£"D ;R򠫹 `d] a{ -+PS#R3@O z-̒ ¿rvJQz`W_9HGx\EA2͌r͠&~U>wS[Σ- `9'C~ C@eCٹq_ XzN%tEXtdate:create2020-11-26T11:59:23+00:00T%tEXtdate:modify1985-10-26T08:15:00+00:00"StEXtSoftwareAdobe ImageReadyqe<IENDB`plugins/limit-login-attempts-reloaded/assets/css/images/ui-icons_454545_256x240.png000064400000015662147176754540023562 0ustar00PNG  IHDREr@gAMA a cHRMz&u0`:pQ<bKGDE;-tIME 5sIDATxk%Gum;!^pl0[HXȹH:w8;g1s]&<Clfq؅!,"·Wu׫{vGwn>UUuN=ΩSx4g : 6!Agb3 6+JD0&s؇N_Bs&&ڏ>~= c{vj%_DYEF qܸG RSơCEہ!' NP)~tϷ=;wהmeBH{s S&S6MCP6z̐!(hnE6VjնcO6y7iʶ~fKjڬT0<26+^;4~%pxh84^/ :2n6eLh`~=uprn0sOs횶WrGh _ Cmz-=)wFi#@u-cթPO{Ss˛^|BA'm TQn`.[ܫ |Եt7^p @pxh84^sC8UkN}A 栺*s%~aJYT}-1pTVP%%?p(>~PA.E ]1^([#\ֱWRЃ>4j"mhI@I>]yҙA6E:q7n05AuPy L8Pj K9 [EZ.Ȫ.Lu֛L;Xt0Ua29@às_!_ l84^/  @7R?~¥\4F>R7F{VCl9wT.[)?}ڕk Po5othz'\CVgskۥb%@6[\ܩ۶`6YsKݞs7jAAnX2G?1R6+u W@P"[U|~mm`3` { H+"ȤN=Mϯ4U `z~S=n0o粤= ̙hJ#[4ٗv4`5@bt n0w59-̩B(X'[67i3SP@  Ĥ/7^/  @:6U.EowsXE{LsUXcau7WvR҅l~٭Nv]h;Іi;MGC'{I79J*F ͦ> B\u}A窞o<ȟVaCHP"nLum߼]݅=eMFdUf;Il;:DCߪiŪ'Ƚǐ_VL:p s/5V.~{3R[IAH]$fCT5 Pہ(Ku^([ݬN4]&E@.`C5oJ @pxh84'Җ:6lB'.D Рxw5%1\U)F:Jm^[uRdTwOtI&~|Uͩzq;j~đ TsD_S>ܵ TG4m5'W:m" VH#t|dM‚ nz: um?bGA-<[ez#S/\хyDV{+ @u6y#L<"<]5d lj&˺'Y%iFbgJ AH} P=o2O౩pxh84$Jl_ҿAwp( UNQ߆'$kLe>Wƞ%ײ:RfQkb½?.ux8LPr07jNװOfX˼I\99Tn?S#Z֙kk@ g?mbiʘ,kċr]= JOE*We~ 4 -E,dN9wuʬqw>c3e|qEwKځ3%,y ]Y$p)CǢ yR<KۿK}AHD`!@}Enevp7/ 4shVTʉXJ`ג ~\#gᅑ./T!Ij|*<^T@+]uƜO eә"O>^(/檜}cݾ~["ɯx·z&$u7@L&ir=G g jw)ZLZsܗ~M+@>7pZOI'y#GSAS^zUK! ;4Og0͂_ ]%=e`d ԣ=K?RPz12Ӎ-x9uJZ[Ԛ[@byvp#ai.\wiC#Y. ǵꚸM*R6ȩ-~fZ>Ohզ:as|3|*f0S}a?~oVJ]@l,5}c×%ESԸՙ_T !co `_Xp j9C>|"qOꁾKt͝i' t #{P&rej5hv^M8GE h&]@X֔AfaJɂH*_VnX3ug<}hr PPv!o[@ [DF- 2)oCOSP{y#\_.1C|ܼ],ҥKY단Kssͅd w2L)߰O˾e+'HL$1 ?Ѽz>!0r>:xGtb*h8.pxh846VtU9Oyw莇!+IT .ZvZF "pS΃ѯ?!p !B|5CޞH(zzi8[97Q{ z_b:LXTO>٭E {R\)|er}o+BO#/}WH6gvs!Pf^3d"#Qgh8la0`XJ&ɂ`7;a E EO8SҿLD_:Z Qz2*T55XQ{8!WfS~!a89'JHSle'@&3YE,_ɷx1O WP1E#u3jkEyg\iQbp-; ;ť\ {ǔU5e)6ti,UJ6os&X!؉N3˔A! :)OFH*V3 9g[yTΞ,FU &_C<ҫ(_?(W1p? OW p!3J8ҨoWd'`9MYa,3˳|ClSŦ.׳wU!ܟzBļ:b ؑr@jvx_ E4X3|8Wi5gqqp/+3v+s+Q7].v )gp (6G,(6G ?Xd ou'p0M:nCfF/?>mO΅ؑT^rR[M)<#5Ќݤ>;rZs[{uY0c?]yUm-~/d|d7?C e_>DѡWg>iKݑX8ƫ "Jfqvqxh8 p_]|-Yw :o\+ >%W7 :r.\+tW#*Oԃؗq!TFQu~rÁ &(_=q~}`_ƳCN%EHs hkQEϬ6\PO6/I m!ƹClg>҅ 1O 6X}G.M.W@@,TKD6k,s?ofR"vޣMt2'zlY=@'Ӥ>U?Rω;}]q?ko)\LXfӜ4X jJĽAonLٮg{SaDVf2n2tdcj˚k$ Ongyv'C46ާ~4=MI3dF9ݑW= dH!R u}8o=-p`$ ^/Oe4VF/X[II V=zd1abXC :oFE,(`p4lbZD'OWA]4RCC-yЍis'/US$C C#\r=hLݒï6^/  @Ñ[D*-> Mk_>zlIТ3,ruX(+d<dBqv%^IgPY=:-*%]~E#grboncLE8ȝ6ΰO;㚌u5>zAC &C&gIZP bsb/p.o'G+o^_n\! 噻/fvq=fJ>yOeĢHES|fD<`gizI>7p5SZت!{y{~=4@#˹5"p@yU8ZSq ?*66x{ϖ/  @Ñ <п8~o>U8/yu67s|Wٿpo.P<]ץƟ/Doz7hz ! 6*Uyjr6~`oK?B?o˿9iic.ͅ%wvms%]\7}U]7%~T_|JOvh務Ѹ[鄚{ [@+r.~ٳuĭO"2#f`Ͽ=MMv7Q}WLZnJߔ B &+$U= ;T=(r/Kj +oد~jI8&e 1Uyz;6~hoK?B?o˿)~yUY: uRXX ^fNK)Fi޲i~o8KX/pu 97:dس~o! 6^/  @*l;ݣdmxr ]1t(XnM^ j!!/6nt1P;FXQA^qƍtCTxDqۜBk 3||9/`/  @pl]h^@l!=mV$! 3hZ`꠳9 `x_ akݞ=k.|!,!ثØ~A+l[U?d0ğrB0_S<ҥI_~?CWS|3ȇɲ_>Nք(az X>E=<Y=kuo UX0%tEXtdate:create2016-09-14T12:30:40-04:00brmw|~:Qaeޏ[tۃigiy}Xp~|e{jo|oِx|W.9Jogydܘb`>Yiyc܍dܘbtsbc݄zmrmrW׋Iqwi_j׆gՂ_|ulnЏ}e|eq%@tRNSS%EIDATx `Ty4H腪IzX4R$dE #a=)Y)U@[CG6RB`mk;v6&mӇnm}ܙ43ޙ?wsI?sϹwX,(,ŠX Ac1h,bX,Š4Ac1h,bX Š4Ac1h,bX Š4b1h,ŠX Ac4bX,ŠX Ac1h,bX,Š4Ac1h,bX Š4b1h,bX Ac4b1h,ŠX Ac4bX,ŠX Ac1h,酎[ ::4Ѵ[oo~k 8/t?cL ߚiXᵵŊjkkZl/ep!QiLt@Hcp],1~#"_J٫r*-}lz_u0hU8h5XR f ? ~@PQ/*`v0c"67Ki,k鵾6j28F4>X@`  ςX,ǧ26rCiA@끒<aImi3Cp|SǾ1gyti 8{? R &/ oLSi0x4k>A?5G mh7-pd K͇MZoQ(,k%%T,!.% 5 3q/;:DUBhW9fHڅP5ARLKbC*< hwg1h^i[r'3y%%KJ~L^ Pז]H3L)ڍ[慓31gkN4{i[vnݽ{(bRek7fo[IY{i}XԼ2~v pqa!0SX} s$ R!]XFµ2!" + !t5.|ʟ)^)B^.E{1--|O@FXĠyR{83Z|wL >lJ^Z3(^W*_"JKJlT yAF8cɳgj_T:reJK+_-Jɦ=Y}yE;gjD{+Ch?]^X+_Y^xWt9\yw*z|׻WRu,b GKC*r9VHWyo/[{[[9yvKnp녶Vp Mc:<<|vFw/v X.z"`SwkAAAkw7$Q\"ݽةKԽAlSgfM Ar C+BUvkpFڵk*qZ5OK 4OYT|&O>؜m^ 6#,i76o 6)Ђ,m.P>i@$t* 0hӒYY0~ϑ9mɒK@mdvH|k*I%e͢XҖ#)؉%KbM0Q7Kkb4nqnH`bЦ>K{SHT8:  8boι{Uh|`vA'Mf-'}HGD1SIхXD 13ǩקxA̚NqJ.?;s&<ә;2sS0` ## xRE6"^#y6IksiSZxL ڄ:boqTDc[&mr:(FWȈ=I̜+99WPq3FŹ <mRhoaOyp̝;w;J##_\2VHO"SZ`7<p ܁mR=pf3OF"h+RцI05FBYPU:ϝǠMa٧9gcc&qڴn Y6R&EP-͂&g&!ӺIqj7pcᬬMYYYc6dH P4Ă ;LF(SF8f5foG5eE5S j :b c*kjl ڤp=I23hxeR"ӟȒpȈpb=ڢ'Ҏn|㣛 8oz荀NF+t36Fc>B0zFظ>DJ7n#+`ظAsO)-KidcaU+$X_ ~e#P_A+_I*#fOU8=<'#oWt4m~;zoo#VEHz]$}/PiXզL yE'FwA%*)*Nb^TT@hvP-z6A(h/XTD{Ѹ7z-o:n9z|·!!!CPBBBB;P-v@TB/h\$I"QB*B >ٸ'CoJd/z9$4 Q`}9( FB]nhS8Z5!%4nE 2.96/( EB.eLHQSMw>D'\!?(TcEVD *mQ.@{idД&jJRz3*ԎZEwD&]wrШZ-MiwiQE!jɔaQے`F~Q_i߹u*-FM: l_߆ީ;E NT%ױhdJpOZIUUUϴoVUv4&UQ1}[{NਪZWa(C ;{{5e0{y>C3UL$XgDaM`Gah(ܠΪIIwI/+ 62\q1b8))Z#**:t1-r<.vSRE0T5_:6%t94"**"""*"* 2J+5e]`.܇0 HRZܾqeee]e Ȼ"(,{DЅ$_Dtuasٟw5bt6v}+w9rss=` \hn..e{rs\rˤ4ee(h\0C@ٌmmn~"\>lmO3vp2枞=CH X-?rN ̓&2Xi>ۓx6''jknKLL%bul@$ $&F4Kwo_kγÍG23L,Q~Y<}m `[xQ'#qm0hX}hčN(jC mkľGlE}Ffm߾}g6Ƞɋpw=I$LΜ< QEۙ3PYEu@G߬:YЊC WP5s B ++4yX邻'X~<gӘ$bh֊YԬYT5 <,Ƽ}7@. =53`vaʌ=K ]˹;9Le|̬c ֵ{v,m&}5]f. d1'R=2:m̘i4 =unt`jA ( 0-MD-?AsgyUcJW4eΖ23SSF͑Ĝ@;1g~MffA3g%-AO}FäG_dES$-= @wn] jϫh4 \l@-x.lB7תhbҙriJSNUuT/@*7TʫXxA3hJܒyj ihZXH{ u+K|[u@+ZYJ؀:YTEҀ:s8S#&`Exנ-AslZ=h|SeF^.g|L5|U]ڜɫ@yCu47J .! pAc4Of`€7j3b h{'V8cИ3A4G%@(_ Jj4mqW1hƜ1h pƠ1g ?1hƠg s R30g 1h̙A2h6}ȓEƜ1h pƠ1g ?1hƠg sƠ1hƜ1h~ڹ1h>=,AW<1h>34i3Wz 3MǤ3M3M3M3M3M3M3M3M3M3Mw3Mo3Mg3M_3MW3MO3MG3M?3M73~^H9g M_#'M=h/$|Kp4s3pkKMϙ_Ct3텼 c@K /?CW/_i\u6- 6h.H\8\b61i~™MkUzD4qnS-);ZZZ,h/ ի8f>[44Fj) ?/ߦ' Zh Y p!]OvhvFղS K1|14 жB[MXhv҂/١j9:gv>/=6kllPzZT[9H 7۱g ϝ NX .P5{0-=[v.H/JeF-1~ [mhKpxŪp2e)RŖkx?n͞`KN@ Zgxoƻ^t,hxvנB8k43cokZyi߁ԋ\=mj4ihٱXϭS}̴p_G (|)=x@ fgFT95[8 3/d{ kO0h O5C e)m`]kH3Nt`65q݂6DAL$JVR άfxR%NPPMD`WZ5җvU<)hJJJAD&A,~LԸ:gb=O:6Hh/SW",g)FMP?#T}wMG?&C5edjfOݒd1h.OL}3){P3i7VдV$k~lm\`^Kywe_i-aZ|] E @[%h-܍1hjا+:Y!p-M = əoM=DY'ж"JCp*D,sܾ&>l| /IhMWB 2VX 통"Sj;}8n}Fg@ZX*%Eշa A៉g13|+f`*,oWR"VJ5Sciw>q5|͙}u<V0m%R)Jctҕ'x봾N<tZ`D(*V*Ra?-<];™M7 nihH#(!h|gʌӤ ΔӪE6oޜ9-m3!d]@;:  ?l x]@sC;yA[RZ!^K6Sa $$;82zK6gڀ3C+Ѭ=@&jK֠u V Tm^Ca'i4pi| hzSM4֚%78l3Ui~1x\ w6@HG)N(^3V%a7G頛'i}Z2.9 #.\*Ν;<8KK}rv,; .'iS p+q;"qk)9Svr^q`-qܦ#Όwȳu-a7sо88%pD<;2&Ek> -8*™qs jNWћhLx\S#ur607&lA10˷H?+]|e~O 4PRpx "P슠GO郹@fbt穹b6@kĈQ@͕$5njT`F(!Tӹ_s'"bd4~ G@۴iYMgaHXacVVq6 zi3x.h˯{q WvN4 Ɇme?Yф>AxCSc6U*)&h,LjsʠF(5b Íg7bYBS,l@FFd? eۓޞtjK-]4lhAMVaxA l`FYaQʦBev/@廾f보|oL4d+!A% Y70KOiW7ݹrI& J(jT6lBbs 葍f9}3ŝ\Y\mB@! uXCD6e#s ^vCήTX߫p棩r~Mu5VUϯC{C#p󫫫O`{X#?u8AStp##P!hBc|U)Lw>c(VχIs 4A{J7CH!l"C:0ϧL$e5u'1$ܠh9ZnlGAȞUϏQ,ѲA0=ߤs&,ƕx^#$nms6Z@(:#AdD?qT9~M;։aqqUn} .hEh 37beDc}~tƌV"/@xÎ3D'87i6~Oyѭvzp3l Yr2hBg#*gF$ O4qDEm#nA`kҞr Z'.n3*v$#'5sef@:(B2 no` _VG ق+I4?\uZħq0.5sf[JB1P@A`hH,!""fo(v D7{:~fްٚ2JV[o0oGg"QS6n@]ȊBB^a7|N.x};]?٪$(tﮢѣTQ跋 fȩP.jzcbJLv{#oytZ|xѺKE >в /r'Ӣ"Q8Ee:.l|?>]r wН[tŵT1~ߴ@[|\~0Q A% U Pj} Nmt}7s_:'Y~֭N9h[u)ֽ>.g@/*TA(*T%6W$WLC$/vDE^L 'j%%[&~Z@ GΊ-**Jƶ) ڰcTCG a?%'Ytн-xݓ&׏2wvN[ v¢L^(l9y;L^ιxeU|)7cxZl@P<LDQAΉ(%D/y?yŸO78EdhAם;`y5zQ;O;C>2QzD sQvPQ[gt=aH3h,f[JIwbh||πE"i M~JY29>ddC$2GP ^'-vc%0A9`H#R$pq_C(%KRJQoK-;Կ#Mb,u o*qI}G5|V%&;Tls%N7a=YImۤ#DY$$PA'?Էn7{mڠ@G;@@%SUd!1ɝSU՞ܾm2?:ۑm m:\m[6pt?5@ֱi=(dhdjlo6:;_rKතPy}_rg' $#hooTAW8pm &gԂ/dNM}#u"Fi b*fRUEU cgpHJ@ ~Ψ:˰Cc狞nDHg3 Ԓ5$U33IIIS"C v[3 ;$`kH2/0\0nU4\LgDUHD-&=LE4# —tLfEgP4jR5=v{ahwNJRp$ bR0E{&ʢE4w^^9i8ײNOcYZ R@[DDWE1Y0`WEWu rDu8Wlpe RZ4~f#9=-!(#6a Je]eRUe"7,vaх;ˠ=!WYRL 'o|ۗ K۱5UM|OA+SVVD!bePT?B;5v \ъ*¯K!2*NJ>Čõ Xm."Z!)++=dѾ^$7GV&EL9-/UXQ ,rRf}L]vs.$9{_Vр驀@3iռ`!wO \l;Ԝ eD+ ,(^͢W.1I3(ܞ2mA_o>!m:z'y 7x>Þs4p{\ yY=t'8"zdE?ĔPw{?f 1td䐦1l䤹9*RҞ$@J"DSbOn'M$Ϟ==r?5QH:O6/r~_?w K oԂ i -FàD@(JD{МijX=Kg$& 'Kl> FӃ^=glƣ9l؆I̳BfC hZ6!rhKL|#lYes"6$Mlg)'93@W=Y&q̽F[3 7+ <moz_h`o'A6@jDfZڱMgr&zen/mmm& 6`|С X gJHh:C(h T 0A GkK>`3*' ;} 9VO$8!t lQLƮx/(:h3J[$2 3C@ w"i$'3WHEã`HEAJeDd*f}M&.nxJ@,h& L2 }3|&Z!pQC$@-`̌<? b Ux'2g6[8at 8zL}&\@~HQ Yd=JMG;'$4D_06wK3 @Tȣy6}I,q+mx4"zLO_D3 X8BGe؉HQGz[z63lF }zE-mx4[^ ;kz,e'dp8 _}_(JGfOsqľŋ3ofˋ`K:<$ {|l=qs-^6*U:d=qBp8 ,RCΔiAM&(|PYvBحm_[GΔS+QU^8io&'ٓ=^_=^'0Ğqv | <>%G,O 8)~1f!oߎi|1H{ ѓla=N (*\o'"TߎP}Mf,%o8mQ8q jF%؉:\=.ŋ&x8lbc7tcE8LY5 `YoݏC>@4!qq"1V8=8Gx @ȼq){ɸ_$t>p'p@ݽ]V\j*r,Iu`xuWz<'%*W߱6]Kn+Wj==)v'(8O+.MK4.LSjP4Wt.y&oV.A)<°e˖-[Dl&ءВJDB_$ Rt)!244ʎ9 Ԇ-HN|}3μ "IѐONLZRW:7:bN׊cMwl#Ux3gjVHЊo@+`B8}#5 `l7x 8ļ{6;63f%mD @ef:Rg b"N}ǙO@Cf6f!I,J ,,LW6S>c_to>e !g>7٬YϢ  \C@r_)g PE!Y5 e(a>k$op~DbLOԔ3| 4@ l$=Q[YT~*ʻ Yߤm֑w3',F'[ݳb 轠nr\A>=ޡLL)ع[63E`o5{834:[[įe2e˔4YP6D;A|4 P 4k^f=ሙ0i8{6ۭ"9eM NgHAF;n-[ٲ_|'e_kJc L97OVxxn-@#iǽ[ -k,!J#PxZF Kgjjf*|{vƠi])&' យ@<àiY&$(j0:TΏ i[1Ψ_c_`14xjP 6?[C=4 xb{#,c7j1C0hXGR;>n)H)`﫤VY,Fm J 88ppH!]U?}"luAvH^L'~QpI$Y{teeYx$Am$ISgoVW}EdIm[ eAX aAXaAXPLL1D#$I$I%$!c?$?kAYF̑MF2bmsOArPMʠi0>w_?Q/QŶ߲D@0D~Uw147V-{ֱw4kG)\jj2|2؇:O4(4?ok??߽6Y+#v }IL/tef+ʥ=տ?}%? 08ۻP}k>qu u*5:}8DLGM Qѥɺ2:g6I.h;$n{#[CO7(\,3ƒ:my2q_SRQX]!Q^̱!ݻ7n}a5>B!G-iӋHic[4!fLpWOׄʊO2-Pf9 |Ƒ8e&7p̽K/,Ù(Ѝ dM\ck`àEu lC==dhw񿱴gKq$UdE C?k鐬A$Fi`-jEڻL=Qϒ׈a y SєG\mPHDf94 chL(/bw埻7{l4O6L2 sXYj ; ̋jdֻjB2w ݓ>v MH\l IiC@:8$@_̓;KQg̚- Sb3irq=.N {>d0ӄ Qc60汃kg\hGH 5sz$nK36p᪆Wzp{5RL}N?5D^Zw?~c=k#Gd ۈaS( Qт@(lj? [rEsē:Zmmt#0^#"-O=nPuQs:C5GY`ݲZ(,Iiuق4b0,}|!Ye h0H9ރaQ#S龜L⇻ݻRd/ِ.CCgx6 *0}{j_s osdlc9w]^luSS:R]uH%N-m/|s{apӏ^hPkQl{CF / <={,dRrx`pH.{0W)GD5#a0BLdD?.\.8DJ68ܽ=Q/7փ0`S'VcYTOѦ8'+4QA4=od?=%ur=g =?340YtCцGf=xٷͰ×l5ܿX4Cpӷ%K \C-gpA*.RƩ+Z(a Q}m>`Me<k]դ$GfBBd6slbyMj@iGL=,IK3I.@ p8X)nFlr% F4DjLHH@ RQVe7: Xah]Gbhx`5;QդD;|L5U6 X~~']:ctaxR:i[ov4j~S>5;VϋJv"q,m)/GJi9cXU`ˆ{tz@ %p5^fۃt=xI|| ?bN9A Jna܆ Bn;'JuEe3=wsߨDf6Sc1EچPIB F `=W-uQuH[Q@ۘ~<|6`. -T4rOYb㚧BEAA+/jC;J߁:V#X7ŤI܌@CM%] -,BMqmrKm6`*q!27Bbޕw)<8EiAI 7 =qi FÛGQBpxĽK =1-ᅴGͦŢC(bq-"&&m"cC+)Er#ﴺW d v&,4/ = sޱzw{{kJc x"4 n-/ {M׊X"anpj{w茑 @; ?|esSy62SⰘ9 .ƻ?vtFS2H:ft"Ih0%8dI5PNG@w<9{o!)"?߁Eh`4i:i7Blpt~ZKnxO 1D@Ami ,d6NaXjE[!i3p7fxϏ P)x@8$ H7!_ehbc;tpwJ22T$j3 σ}HE[s|hp0ރKp߀6}csC 2Rd2>V ܁*[DV8+ Ԙ\, iFƅ=!( E} ^mڅ`{xߋu$)fYT.R5 _J8m"߆P"p;/~Ro0ݣCLD0@E w+h & ^`|kˉhO!xeAâ1@ m#rm2L?@ۘݖu^Z,bx0_ w;p?I"bcl; | b~rQ qnA@0(;pwXTdf[u{m%{kS~\9\q~K9 cT; /q@)qGb30aOoۜ\Q.[wJ9߈> w Af6m iXZG[ExcD(;7cӇ'ܝgix}#/Wgs&;};ѤśG)b|x1=lny~Z;)m{{Y,Nc@)!Ŋϱ6Oud:39Iq^~\Yϼ߆;w -'H+#OLf(/u>{s2K×"@O})$i=tq/y { ǥi,Rqyo!n [y~ͻ鹧ܹ]eD("k)hp7 Rr(_RZwGa[!ʌul#ܯ/i;G%lH !!1$ A$\Ey cWBBۄ5率n=~rZ{Dx֍%366 rQ=|%lŒֆ }u X3;2 K+M~zlc 1S'x<6ʹ/ - 8=DnGc{-$ش`-QZƝϝ-ψ ]ee&A4&`ppie[3"ts_̧7'1uk88w%-\ǽp .KC]9(8CvZaY#N`U> yMܽ'Ëw=:zañwû \DEW4%ΦpuNyUbJMXTN KٽaUbJSzϹun} Vc~j]Y+vYxxx_6Bx({BwC'0Yir^@{P_׭k·`=۞\Wh2E]3J8ר+`N\|!iP=R޵wsz|{3}}g{G.a}t#8V>隡pH;{J%x?鮆wZ{XPs{N5?Qufc;S8S>2 _w ;}=~ʜ=x4/x\=8v($q ɔXn}Dޙ}*-lX̝#y?#w6{|{OSëO("q$TDn6a.j0ɤܧJt#y='ywE;yg=0cXr43nfN,M6&py݊,D v O7 @#k{q{yw$s]t:Ĝc=8}+ojg=.Y3t2"! %YWw;sNrw@sˈdbx=~1`|rwves4=< 3!w1w;wTMdj RC-d97n!a4$7NԚ-+M&E&a4$'9]\Ͻj ;]aG;leڹc~k$)2_F(ąۤ*92rfa"nvy\_޳sN$wR͔&LO۸|p3aA{MMxGfřNOp}!nww/ )|nCnJY3{GXƭhN#jA2vLY}6xL,OQrRm`+؝Kvsxݨ'6w2']#x:Фę]^AU9:Z:N7iaqZL>L6&SnY]^0ç'Qwӟ8w6wwdI4(mOv1#! -iK:cS'0[ilw=ww. azv;i޽:;9BTޙ.'wNUӚ+b5#蒱QQ)SV]cInd "֡EyF^)nj]7tsp8]Ν޽-}`xL{-m*L#.qN/l 6W;f.M29wjޏw]$(MNh8$eڧ:)8JM <t9r+\istst{ $^dއo{glL> 1eBNJ+MX~9%/B m؝!s -'wFon,;{?0w#BǽVpc(6킈J<=Pԥmw;a4.kkA=>#&;ޟT93wNyQ=#ah..6(3ܞ5ը\;gis܍sn }~,8w .AV^  \KJ5F?$%BHe8tNWwo݉ǤMq C`,<5qP&XE.l-sUo@ Kzw"w'FܭP7 bι{P ; Yw*U"08-R6beH8\!LCL ~ ;n:LPމGM43gCdۀ%?w N3H- T`x<se-! /ްf+&rxmhޕ{Wh(M3'GƜo&G4xɤÐ9 q鋏y(wxs[&[箽ý ¹bpC3@^q>aF1sBNVÉhV_ݩ 5]Iy'/ǻ9aɬuv+{8Ȼ8+fΜKpξps'tsE "ylL5 #>N!;Q rqe 5256 8YܭM׼{D]:fZ\s5y/Ыur@I|rRrM|ߝ6LS0`TaKDSAiKᖽ3LX!fgsap{8.׻㟻xמmSY6pkJAk YMF1 $˹[.c n޵wĬFU,)/@1L5շ2p1 Kde2Vݬ[؝rsisjW)o{i3w]ݪh=$m]X:#͘r?TRӛ%G3_Ik-Kӝ;g8\3. ]=]zz ;]?B]2*QB3DFԃ#B w^9w 傟);\NWr܁X ]yssg;!й$۞y'I݀K#O2rld`.4?w=w򆗻McB]ǓrJ͑6qW~gS/t%w%j.1rGvNs{蘻sp@-kC͢RP!?,D13%|h#s+us;͹;rq\}8&nI{{y/ UmVA%C (XwNo|- ȝkks$yRN/<5;][-ˎV5]zƥ ZX,I 0z͜@ η|4ȹ;=wKH JLs 管YDDVpb|qPL4Vɍ5UH6"V`w;5Dsns\.Ő#w.cԞW>_ү޲H))Xm;9D+gw;hH  Z}w1`R9wq;܍A;A@{q }`G=")|4@bj"D5dΦϹ[\|mzhh-}XWrT r4Թ}7ä_]k8sz݄"+m@_LO_z2W>wmj{pʤ1F<-'/7j(tv#俄ݙ\wmׄiT0DzJ'ra ss}܅z M@Z)鹋ŝnղpK bJ*BjQGw,EP(s;mŀ ;G2;|HOmXuz M6r2B6]Z:f?*[ݯcj)(?;V{<ܳ&#NCg-HTΦM{j{?Oge*Mu) bm:t wZт?}JR>T#`M2!>$Fhj54?q[@|vڹ,8]Dk=_E/mJt !Ƶ^=]~0H8naoݒa?jnq{QU>lň .A_j[Ic(N&v{R0}/yXxan7&wlxm{T:s߫*L Y&|'A<|>. \#sHܗwh}X8yڭ]S9.eSۙN5E$%o3'UJnh8A~C(]J.jR>F'f=~kyfx(8AbO3j O[Yaa7&FԸ{ i/xMHԅ`[ ag=Dn3ǗRC5DԶpL#0$}n 7x3а+{X7wCxM2*Jf>ӅyEpX)-SRp_>wsqUW;*3ZycbTKᰤx Z8cTMײg+=Ce,a('/hn>jLc>PIڹ /b܍ȷobDH~DֲW%3m#)n)"'F5ovbw~pjxw(URj4H敝Q[;u͆Y93$aMˁ;` VoD#:OSU3djnPN🻓x*ӻq--sL8`Q*d| 41EܱܝĻx*nYҌyÑeIu̫@=IgJ!G*m܉1jDK;gS8IDr-ޡ1]n!w@ 2˸{pݸsq;_w4QĂA3\H^E6de P@:a&^ȜWik\wyG A֓J.BmKNZ;ܳFBn2|Ѹ#sraޓ;R5wS%@qw ~xԢo5~WU.(DL4$58{=snzisGL~INTYDJ¤C"&[K޵/U<\5===U+wc%ݜW&huluZZ7 *?FlOQL4"|KA[3 Ƞ&tA魂0wI"q8I>_|{,jaQ ZlF &+crDג$dƂy wOinzș;!ZHޓiZ:ZHQf @wpoՏT8SA{E=U*wcRd,q}fN3ars45 E~b0O`_!ywOynֵ1~ִwlw!>>!Ww&! IN:^!ćf{"5~nNd:ܚ;.:-Eމ{ b(igLbD̓1h ,8}u\DAY{~{ [ur7Q͹[Jw4{t5l}ÃDWNnA這Ό3\H9]{Bruu}= KN#q9$Į)8,z*GMf ts?45w~׉Jns1I~-NpErX ҩ1%ӵ-!pIPbyP;!Gv].3<3?w͝jU lpG XBȾk+d.eSDlmGS=0(͝u~IԺ1wjƽq'`%dlo> A񔠽oe6:&NR) yPdsZ8SRĝK< `Q'mۙK)C:@񌱬dd:d 2m=3]b@jFm^w;c-+㠑{\L9@ yd4G6u@Yf=Iȹf$牬ݦ|!ݔ=߲qZ9?Th9rM8[He Ȉ\u= 97xowWNcܱǝ eD<|ᐧb/\QF6# ]K,CZУe9s|󸛴#!*Ɲ̾|/uV1R0( ɘMWH$W:gܻrgw$;_θ3ubB>DB2O~yEWL@E3J{ʼn ݓft=:δP~!džZF^h mWp@>MIny|RI #&BgR)7sУHwץ5mdALXabIÐID̋jdw=I(nsﶇeIԟ)i74~*=XJ?㨱A)p(qde*quX5Pɽm{M05rq'dF}ia1iU0KgSGwtPמr9)OHAF^ya⎊Ƙu 9eBssiqVRim\dK[5%6{{|wn^:į})T`]_mF,3hɽg{/} =_wyA,IJӥu>~8LuL{#4ȴ9toIco}#%ϞqwG55?+BŻdu";ݓ -;މ&_ŸCL[jІ&&# Yf?EpG!i;vu畖{掿z?s;fA֘(3X=xʩS^=Ѿ{~{$sdjw>1ԐYcfA3`-h3D :5y-}T쫐q gr H D~5_͈;|Zfa`Ϸg}%sG;̵;U!19>j,L"75ᐈK݊߃4=y"&cq5;z{F.!?lS)a[  $z(s>{A;IgYhoyWFok$ SX%eבG0:"2V~\?{jr8w3 w-Q1v؜<CK yn Q|γV.}?{3EJM玾wQ=z}|NZpF0TY#>,e'f3{1N;Eu;z{Ulۖ) Hj*0%[a=,O)fFwöM6$y")fsﬓ+F \~ q~CΡ!c}0TU`H(Ծ@2Y[}{sFL-玼wi]NfJ~*LN=:?.t p=R=-ZHlt|{Os{'[/# rɻ$`;`<\uLJѓ6 5SJ;]g}UN sG;*w0goHi:LdZcY!Y]3'pnr;֌]msa֥g?򧏑@M3 qNViӖvO(I7;igO;462!l}Ѓ&k’n(Plւ(!} ;|˞ѓ{ܱ:W%X/vZ 6/agorsl9 Ru2NO^!B [PSD֯ ɽ1:*K qrGź(RR5 qЅ^&i@ ; א@ +3{ӹsL+(uD^LZPe_E⊙W$vFSJB)I^͗+fB:D^/r8Bj)vTrro8w콳6u;zŻ`v6].GS~gT&HZ4ڂ"|\ь厽wQeh觔Ŗ̈T.VĈ]m~+tHYPVUXzr7w콳NQqlC F0IMF|'h Xt 41ƬQfsY%(vsG;0q'`4`(,^_7]T LDBKnpKpA>$ Ie{ޟ_Г{qnYNwn$!*V음JjwrPc =Y&qa߂A}ƹg*?9<޹vK;LynYf+`ўba4XZ ͣQ(^pə6ʽQx{矯Ūŝƕ G8j6!A 5qXn{&r~0۪&a;Y$qO c04B ^-O1 7oL^ Q$9")fcF6_*Oy a"mmX! b˾rOt&2y(N>zgp wϰw:BCBu{wzp'[٭zg+G]t{'6&mnG@Նe6+:G\.yOxjRUsW/T'E;#5 Vp?l; | b~rz 8vmH At?ϛ;U;sS>z &E}Aܽ׶X{c?RN_)3]ոHO>3$ġAW{ (%9 9RN~;wN%?+wK;Rl5aiU9:nieÏhjіN xdn;Ռ;,=.ށVrim(_GϨ'@y:!/Y N .o&bwGmPsW:QROFjm%.96K<'->ՆSj@%rA=Ơitܩcw?1<:Kݔ.CD6Q5v|1]B9s)X $D)9I3[Z畒;/qn N(]DΒ !j_5Q l2G(_ӻ.yY*'N6 #|ܹF ha bb~NJBI:cQ8:ߌ%'~r z)#[NF;POp &}GN>LX4m@Lg5P;.ln]#{Zr';P4z愫+S+ӄee!RD#/DBf %jhe隸{pn;q]n A,a"/neJا' ^qO avGL콋;E,#ɘKic&eD嘶985#'LR?%O=.w.)\?dPRB<'?ӈ[e/POLetw[Ľ;%{'{'"MΡ4$"1:z'>zRW?{%{O%wd1X{s")pUtx o~(QtBsT2(g#;uCe$gfGXr8 bJ}KUHylf7W)B-Erglokev6 H\YkM~dLMoc ~qgls}q 3M/4>"mɉDZwxvqg({trHe&1J178`vɕ.&h^⸳F&ZAeý&p'&+>n:DQaif @wL _՘3ǂ]qA*[n@ӓ#)YK|M5`o'C]"@B~4,SH j)*)/KX$:X&ބ7C@ /0 tZiBS !|(|chҢn<ʅ2#eꂼK3¹k]w64$\Ey cWBBjoN#"5"|n,x S-fng+6h7(6` _ܩDxwĝn)eĽ'xg.ɺ {T5HK ɨ}v7J gIR!hPt89\Z v5g&~pRJw19youՎ=d1 VeA꣐Wj#;mqFETty}NSµb-X_>&C,*o"yiEp!55;l&8SbGEh᬴@9/QV=(je]9sN*m 7XXuLŵKayF+Pam +m8a4EՄu™rL&M w:״1pGAk bL>|VX&oyw2iJĝ=f)]Q01u|zѨGL?QMQnvK"yyrmPA;!2M=CP qP8c*AՒ5;]N)̗ gah0,ΎU;B L E>T hިݏtR@cz]w#=9`xOlg1Rq4?e^ɻ\wK($q ɔXn}Dޙ[J3|`d*^ݵ/e`XNaծJwP3?J*К9EM&4P48tiwØmװ,#3nPشIqK09M`s(󺕤G֠.p1<~!FN,º ?VZ_kBxhqbUTh{b߼ߡ-qX#JAQި.K=BsF oij̓zv);nz N p>q6i}j#f8ai#;4k@iUg4> :s103Lp}!n{[SfweG"5nEsQ c);ƈe2OdyBjT;{?w^Y5?}ihR./PW{ݐ>td`TxTT-RKp; HeI4(mOv1#! -iK:xViNЕ8a7D#+iy .,{_:-&hU WJ3킕{ xuOPXSoRsr;=挨P !NR <7d eێv06q $ysWu{6?9.nUbJmUgpzAGzKY݋;ttWMLA1`zo!0)'p45\"!dEܝVr7w0ۭ;8T) G=Gj i6r[9ziPwYd2Q!un>MUwb\ѾFL`Բ/CU \f]22J>*%v0!;"0P1̝] `:l{kRI#Y(k/S ڿ9LYS\F1wf]|x4tL6MVLa5]:4^9(ϕhP 1e| wgUzaа<[eQ~ޡ3%Π eY|m!x&x^ɥ !-މ{ 䃵PT#'B.Gw+7s띾5,ӼOtFPJu2V+)bNIz/8"/e;-h0"|k 1;֌o.JO]Բ\P!n^TFX$Kx ƴ? g͆j`D5#<׾Bqj4`"_7\bU1y&-rE*Is(5u;,"C`Rbmhy * W >d¿3^),߉^ɥqrVET ;pBk`3j:\T0~.,3"rh&\DbMMl ט(k a|q<5۸;z!:޸q&ୢcg,Q}pdd^WV(ɭw]JOtXg+M1|'C3P(+Ƹywa3X@k;8fWJ42d&;9{;YXZSḺZF Jw}XZH C6ĭh[(  s'Ms8UIU@[> q7$<_8wPlFQgN9[MhI!sPy/<1E;> t\hϴDܩb wjnqnb*-b}#%z 9`&xt>oV)4 ny\{0?9/YϽj-z2V.nW_p[rB@x I\8/wh,aߨZcә 'UiZYxX/-zvsŭꝱ1dME,}L-[d2{`ySYئm?u 72$h?.Bc/ TqGGI&8wPTC{Wh 9KJ-{?ҹ3tT] 9$nl/0>34waUwTme&zքZ=ӪI{) 4/ N>% cwl@7UN|.b'o;d$tgOffN!)4`aԠ}4Ed,QdL ZktrA3F w %eBmۀUPI,ǐB&$[گo{Ac;";_d8+S]\M rw^cQ*?qieT|'+Գ<߉)91+;H͙ziukHmDk;8tQb!Nປ:M(rږȏ~$ûF%]4ŽLCpa{rqB1iWx>bH~svi#]rX9ROk)v3*||kJ9w!`Q;iޠ2:z2< s&'w;s<+u7.{gavU{hZOX=[^tȎcD">R熐1G5w]0ێ_?;<ljZMѤ!Q;vp_Cs3x2 wYp,ThrqQDA&L2PAk[" Yf_٣wBot.d9BgY-RsgS ܩ!IgaW- @ijJD1{R j=QR4,,cx)s;l\(X1*xh49fQ a,o:yA=)w|(u.+r-D(Qpŕ9Zk*K+;jr7MhZlqŽOLŠi,,ƉBPu+h#2M|t;*ヤ1wAq;ywP]F!"1*J 62T/cLK`YdPcq)aoII<ۦpy! szAC;{KAIr5jݽ{2EFW | ʾ߽,y7ySN8Nwt#AK}mdf[m2S.u49B~݃= ;˦މm1K%YCg-HTΦM{j{?x4wT{흵bm:t s R}!""r0BwZrw|#yDߠ0Fι0;'g mߍ9cinQ>fdmE2V=EǣTP 1wm2fƀ 5%Ȕ>+YXhLdԏv {@ Ȓ+!^>{v;:ۖ{o͸U3 hQ%e,"-?]+zٜ %cnAw<0Yc9%`phP9\HXBm/.psGw)u]ӷ Ke!J2 M"8ypBaЁ3L)1n]5%/yq9u^g=T'3dJL!|s"9N[8))w0=?&A r{|/z6Nqp>91a7fU=3YD4$3WfHI,o~Y]d_IꖮAUœP}Z3Mjzp4wtNNqBECBs ^Gd!*4v,10~@VghTP]{ vmB[ >w 85׈)T!q~ds"UxIɾaopcMpi_ M+y8|ԍ;Is,[6m:4u{biIceAl/5|-9(C7 {H z"Mpǩp]? T6ZVmkBH9ACAc.9; RN k\T#QȁET5hР=F܁Z{@9vz݃t{99ah cہTcƹCT(c,=Gg3<\EbofZM :wӲ>K)*LsXBCbHZC9S3dYA3ݯwv=Oٗ6%eZJx.R?OF0/ztak,F\=Lw z s+p En/3\PEzvGqm.w+u+'WULN" !>?ydܣ^rJ FT@K'AOevJngv;G#lL /Wqς\8 X@@lŖM.jR>F~p{j2;h̭ o^E.fAb/})TǃFqvWY4d)`&̦'-ߒԼ5 7ggH W&C>'f=~kyf\cu5w:,sӖ5tVdE f65n~u/vF4Rjbpږ{䯰퀣?&o{_vmb&jrLP,"8tn ,zѩ)˲.ᚹgwg4A=*0aQ}4-2qǨte;le.c.}*D%oO<.+t[g쮻ts71DֲW%3m#)o -l#Y̓M#Кeww\qDzǡTBK8 M +Z_'ߩS.n6̂a!yWvEnP~8^Ώi C?hdUi*)stB`!P|䎑; 厣c4wMhis iQgpǧ2U,mh`cƔ>2/)VB{G|3d!%8մpdYbR]j3>Pn1 -ݫ5̛b:st[Lr$[G(' 2벻2޻Xyrn5w 1Ei  R p1#y G2@*Nbnz7Z7=vmw 6%\M~m|Y!6ꈞ#d"RNY# =%ݴcxn^jLr]r{9im;샋& g% =I$7++W:@GgTZ0:@EL =̏ظXa_\5=E]I{7mpo%@fBs7s[恆 ʏSS,EL1h ]1PnK;~F 7GC;32AR=1VAkIVc"clޏ/*8v7&.ŁZ3[P;G[*eԩUCbAz78sG^M9e4 e*k8a%A;n+!z>Rs7ó1rpe}'l|!,¬ew/w [=w⢴w{ b(igLbڂCy71t]{Fw?}wQCe֭7M`Q :|crT|Nwrf_:b#x  C)}IL/teo$EK}eݑ;{CH/kâ%$Lv^.PQFnR7.'dwe7w8~R莟uldžZF^h mWp@j 6ɍ9_}3)dĕDh{;Md iZKx}r;cY=95 w:x, R$"â6'ܑ\p\#"'Rh-O/UP+-9Z;d|1&ܝޏ 掲;FUDw`81FwA([P>|(uMP6{\z[L`v/˚htGP>!NM3 uuqc#AZ#͇i0ӱE%"t˧V\_N8Z;8n93ڈ sGnxthUc`&&i@L18V,i2 9(y1^ xWvW/ 3#ۖSiي̒:j,w5G >l\d:+Ӂ媆~$+ +ޕwtt|>gx6&dF}ia1%!aNPxQ5确=3^WEԻACuU; ! s/׍1rʊ2ͥŅZaKqQ,mN[:֐4 ޕr;۞S.wĠ '~xN2mD|ǣɃ\pLX#fs~rGx]@cS >4DP4xIuo&vX8]M;@!]gy˝Bw3A"ktC\k5)왅w8 YE@wo9N|B4<[iK-$cTu#,0Ԡ㧐4\;J#0w?+u7 gw"(1 Qgz,4~W*A4#]AlHL|4K@G9hAF i%"hО{V@=4EY'GQ͈;|Zfa`oX3p3c6=&Ǜ‡Q횅)YB&5y[{PKp6w3|wQ aH@ J $z(s>pԘaj'kl/ιDu:% {Ԗ;S wb쐱9y2-EDŸ[->`~_4Gj|^dw? n_Ml2&I 4#yJОC~bV+f^\bcwwNIBՈ@j\1+wFEeZ) zRKMGfzw7%ؔEV5r1[|$-\mA>t9r'wĶ Jq{5b+/1!BW[gB:@R$&cw w$V(s$m&ɎV# JUMJTCX,lsߌݙ`]ؿnH.tax vX3C>DA/,{w#LhTz^TҷkfqhSOy9O@Ԃߌݙ E|L+J/.E#b΃t=xI>D'o o q!d%r v 6D\Et+9Q3ݗ*a ٝIND%l4%b(R /&t ,A% Bew++)U%0ÕC6B s;beޅ>HaM\o4'}*bZ8#Rt2r\Ӏ*D^W6 M#D@gG^ JD[&#wX431`H[bT_'SjQBD``p (۱f Vi0Ni5"<P>Ep@ZL 44Pֽyw (pcD,BMsH8T2u 0  a#O̰y߻q #`|n?:+`פa4XZ ]fI!k2Cx9a.w(ҘÜplBbѡnjtS.3%M`!U/J;t].{>  ~Յ(ZP$Wa9 f}& M HqrB̰a~wcۊ1JшY[Zg _J)@`b[D”mSܷcw4z?.&wN ,/é$#Ǚmbx;vw`1]_]\(=M|"5щ$-_œ}Qr 7*M0@;9=>ŢIk ^;&!B>#N)<+aaGU(3>enP]նJc?pN,cT0G@ ⊥2chawҙnm?xEFjC\FY F ։Lm^s`@_:OprwQM:w[@l4p:#<"N2 یBF"ð&]zN-#J{oy`"wN s,?I%@?B3U+vJqQ8*zK[n@_SV"unݴ ?Isܗ{9!Mh¸1fF^,޵|]%wh  BY/eXx|#?ys/x:B\䎐:w n81R/>r@hs)DhP,S8 {?va\,Ƨ@[T6֞aUkA]@P Pn2ٚ*0e8vo`:'1֔_xοwF۹rEwrlaxTmXismZSpe@r~3g ߽c)F8s yzhpf@u 5y1vlܟjw(}5R3h-qqcOEWNk򝨚4}˱R2 Y6{ }PNnJ]"Z(N2!brR60^`~쮽{^)qHܶݓ=`TY!Xk#MB%1ߡ|/gOU {0V@ s 8PJcMqf,l=XRp'fwޅz~{l6618}2nb:2qgtpcwPG㞆s{P4Ƅ+S+ӄee!RD8=|w 1]ӗ;)?)Vxj/$+.'[߻)aP.x>i,`q뱻VN%+0wu4ssfg̤HӶ8 f4Op$db nH*z, '7z[?|+wg J]gQTes4yb*~5vkzy&;Wػibvަ2N:܈ĤF.|OƖK]A&"!;SξwGUd/X}},H5Z*SXYOeek;xdQSn@Kc0p1>Z 2Wc^h6a*>[pϝ3VLҹe3 rQ=|%lŒֆ }n0DQBw:״1pGAk bL>|VX&/ ޹c1RڕEY 0T>eE2G 4E-ѐaEp{'wCC4edz.3*pVT,kl%w۶;7AB{a}t#8]#4@tPD8JՀ-۽ N{xk?4qF*zra NLhdoMm$&]yvewƐޙhhT< H;sk:{\iolX뱻(TQtWI]QB8N D*К9EM&4P48~Tn,rw|U81bwP{X64)C-=m09M`s( XPA8L ѐ?[B(;is#w{[V~kM8#NLQ`/#ïw{dw-dwPEMgTTRC-d97n!a4Ɛ]JS E2;+#j{gٓp>q6i}j8acw4Yjxqqwʘ!Zn;4QԘ4wdQt` qEwΝ9 {WH[ќFԂdd+옲lJ1"ywY$(j*y~+/;id{+uI3@]U߫suu o^1J}mM^Ww()w@w(XP bGBZӊu񈭾Q+po$rZ;NEzn 8FmU WJ3킕{ xuOPXAV y>Dpg:%x(eG q̖LA$cX(v!8(`Ewn.SFwu޽#o/uu{(p+WZ-m8s <V_:^1L9p .!i20"fly^-D=PKq2զ*ɟRrg݅@"LvYΣ#5G(|,O^`*yfSnwDYd2Q!un>MUwb\ѾFCiidw(v73AUӚ+b5#蒱QQ)r8r#w-%%]~ﲻJqef]umgYjRFrz{wP *\9 wUwdS<*Zn!w+ hM [m$R zzwƨuOn$*Dd -qRcKP8tu~ΐ(U(y1vGΪ. A{Wn4ϘT-1%C*09^ݵwx'⮣1&  H9TdhKB#}%Œ0)b(撅tpS۱Q;%3f w!{ٰdV: 3 U;sJ/-9.[ !w BXwud*m^s0B 7WFj>R#Sc"w[X;QlYn3Z:C9 $UZr>yڤZ/U! ޑ/N+wr+Nk p[ڃ)L̗׬RZZ}=vךaOkz'Ndv]K݊*S-Yv9E!TZt\S$.ebbwU;#Co\h,C:Zcә 'UiZYxVEۢqN+w|!'-8 jr9Xb7c*(m)ܢ 1;_PQ,,>ø 6h waC/p##Hr"(4f@wqd0rײaR;U]T]Xj%t (Ɗ|VeFwDV&inwS޹Bf{G-H'e3Xȥ XiG3N4wv~i !eC?9I("~\#^}{Sm,;C@o-)p,=scB]㶁2Sk:3 'K#i)4`aԠ}4Ed,QdL Zkrţj$*|NXm *RH@9݄dZObo us?wxeGu.=t%5tE-˨>}m ^3'>9GJxMM,""+R818(qs^}+|Fƚ*Raeq|~C1jͣjK[C#EZLI1j йMRA{; Yxg ϽSOî3zZd?!B!SM@[C֐JA6Y1G ~]w8hv%#8o;OŽLCpa{rqB1iWx>bH~-wtMS}]U˞i.E[TbJ*0z6LjD| !5wnIBܕ~s7nxS`AOu7[1(&Q| :/V9"cwNYB Ω<$ܖƶ${CElp2owPw1KEg/CiǂrXpTSd ¹t\NFP#,Q]0[]tQa!&Ex)җ(AކHɵp: f;Uf{G´Mh\[W}k\Kv'L.qHN?1d#B fNvM@cnMp]yn3蝂p,Thrq7# L80}z\,o]ͼD q6G49BgYRZ[ݢ(D$FPTC:r4pg;I>iQGt4NrC5/v_ؘCIN!+YXhL:s)|\%4#Kˇx7vTz=Ժ{M-C#`10PB[-jDlE凳 {Ej x{hbńƊ<%`phP9\HXBm!OqץwnN H=$PLuR=d޲Xi8SfICDp2'[И`u+u(K8i#%f9SbLݺj,K^| R+r|;ޙAUV%th ^L!|s"iy~D湇irRK[;<hNo:˖(EN@%itfmO%dŹ橢vgbj bϋGqð7ynwZp`dEDKV(w#St]"J0wIdD7FRmPPCiS0;hC#S!vj$鯱,wIɞ$UxrD:9B~ 4o{uQ&ށ[P]>`^5nw`qNr5Avu4,G6y1vz ]5np:r7@c!$ ЗhNPsn[Az,i5/xP޽jZa/׊yRn*#}]ʵA&R#4Eb5[@3|=vWq8b4iɴ ҦDb\U/ЅPT- @{Km;=z $wɦv؂n]|J2CQw2 "Tm{s2>3<I-P?E:s߫*L Y&|'A<|cɝJJT G/R&92,<߉8adZ_m^ݕS`,L${x<+LNlŖ jR>Jt <5|P4MTixۆ݃~w"K XZgfpϣЧ;&axҷ&~}M slX5]wOl ,-%u~ ع݃3nz3=H.w][t'̢ VJ6G ^0vHFgb;5e⏥0wM۬@g BҐsut\*Al28ShXߋ#P^ϝD$w r@xO^`0\dHԷ(ĬGa-! wer.(w݅\,fQd*$(n5;Mmqx~LsgkZnK!"oP/䯰퀣?&~+e9 "rD&jr%O\C^l:|wFJhtTO 0vSɆWѻ3o}gĨ>+AkY>^ !Ǩte)`-;dBkG??.#WkwH?GNxAs-DžUcqJmw0r\r|WSwc&e )mosXbF+ W[F"'F5>YB掳w%]=*[cw>wJ!dD=Uu:f,VPSZ%S{䍭 wzQ_w'Dx; 56ު4 9CF:N!0i^ocl f ,cl'wCwWuZ) AZ9ҢB>2iOGeX&ƌwe=玱H6r/IFpڌT8[ H!ӵc{:{)?X~\gwݞ OLD*-XHMbu~RaO6BLBĆa u.fMAc G2@*-)k.8~q{0 ^x0m0%QhY?`Ҧ6>рCvuD2)'mB}`9Oix3u=pr*v}M"J&zIӟ{ʉб {!?WvE*1*be$>arT+<EQ#b;Āe9%)W},ZZ7 *?FlOQL4"|KA[3"2Š&teӹ`s.xp$,utȚ$2NAR=1VAkIVXД$%p Vy) -u*ق2U?R)l>?^1eܑs"xƬ:YW25 E~b0EW@ X9"]>.Cupe}'l|!,,z$"й{?eVsw{ b(igLbڂqp00`4C\Y>Ժ번tù ?6.$hVREN^9)3grq\wܽ);si55?y0cA41,Tӥȑ,WL?wgQ:u6|t-!pIPbyPH;wogmஂ-WR#2^!S, Mv)=5 bkEwG̡4ƴM-iJ Nk" xXV222\kEfn?wܽ ޟ,WXq=S><Dha*)f bҞce5! i%][d-J@ @p[VЕ>FF䪻}z@ZJ n~˭k;ʈxTuC|2؇:&S*|gϦW]~@+bRWr}Nd6chFx @a(AQ1)%\.Z#2r70:J>@8,Z{(OQ$Lv^.PQFnR҉sXV;4- /%=!r=&$7<>P7A\F|]\+7u_ ڦi-y23K괧&AWAt)b| ]y^Ŗ!0*xwe%GkG,И/SwZܽ9enEH*H )cv 'Fȱ ?7玟7;lݡNӷ@no\y y8Fwd E\cApG@ P]56 (kk HlbO-7Nf &Z7;}m|LBB>kwq ̙LmDSqA"c)Ȯ==w_wVĄ9}CdALXabIÐI᧗(y1^ (Bn?w}QW dݶJVdTQc9RPf"F U$+j.@cB"<-; LJ[Ƅ(/#5| ͝*t upUs4DpU"c%|aNuo&vX8]yAo<.;xHzE׻o'!wTDN< )n  pU($_gBnFS80k(NϚZ"h2yB #_ﱞyd-˴mhb56*ː=McBW2À=gY,*Чh Hbƴx~39y;wg˳A㞴OaIA7m(zbz%oa?,{{7hzr qiw^Q7wNjD3׿d)Kz( .HPRek~T_5;dzF`ip݊ԼxBtIZ+Gf '@ ++#vޡcq;rרMl2O$2*ďg_E⊙W$X7x?vHz?%J뎽A|bV(0,S@ kj) ewe7!Q (987+Ni1wF՘-`GS]>.C;M[CCwIi[wIaT۫[\`/DՖ'뙐I$pyIy_vWx;4 E&o4IՈDU1V ۜn`u]zwFi]!ؿn"Kc(x vX3C>DA\T8enqlRyQI^$šM=<=Ph'dž=@Ԃew]rG, B@ Gx.E #b΃t=xI>D')ܕw>YuwCG JD:m *Vsg(ڭ/U 4u7CI4Sc1EچPIB F ew'c{;죻S :(Gm&W t C U$>Acr;.A$}.#(hxOFS2H"C /aNh$n()&sCw[/yRjn.:KDy"SvT2#wXpW=~$vw ঝA+X@@Z^!=f@W,5@wkwFɶt5i "Ape-{,xZ'2yuc ۝G ЖV4ɼ@/ یBF"ð&@qg "GQBrڮs3fĀ$mڰ,bx0_'˶ʝL>kHܵ0S'\kNƱKnkDP 5۝92 |ALTY{^{m%{kS~\9\qHq¯tvwHJC?*l0~tY|+r GlQ)t@O[ؿ~vw REϥ-+VOV&^0:GMFSt"lh#E۝)j28ݴ6ӚIϨ'@y:!/Y N .o&cD?5kf6[Kr%x^jéD5i_݉m`۩M2KDk c?6DLP\+l~vgE=B еN,BvXՀ&!sп];[;Sl7Z-,D Z)@I(Igq>7#G[u'c,$}pEBS?=\6@ [IArt%m@Lg5P;.ln;x qa72? #\]X&,C. "釿;J.򭒻#JO 1Tj/$+.'[߻9u+NIc3S~MvGLyyBB'BHLX8 ggxH<=#Kp/lϯ.;Î܍do!wg MҞ4}hITyga  7"1:z'>zRW]Y{ԩޱ-~H{( R1h5Z*SXYOee;bup;F2t.c%1-Z*L-E$r<)䮬;L.] ,=2YB13fRj[XF9h SV0ݷs;2KJ;(=_R+Bf89*P{Ƞ mmR6S-)$F{9YG&]q7|Z X S}.EPT۲%H߸6li y0`2J3Z` }h7ScCijX䮮1%;>2oGIqCmP^2:I[ALʸl LF~s}mvGم/5Cp )p[(]E,OJSe阷]`P5%wO4\ʍRm|E="=Zi$p_|;1TEm8LޙcQ%xf\mhpW8|h~|I̱DSU<5JMuaXzqp1 &$wےY-V3ݦ<4jZҊ槁2EG+t8G%ӏ{V?>8ʼCNHepr|TGXr8 bJ}KUHϘSb!qy/޻fy^KTZE$YDa  ll|@+k906e< /{DPq7ȝ6]?qECn ^K#~y^Ɓ|LTupwfwODܻzGce;}J5h1AQFXY [$WvX6{gvGRww,ϐJN.:jiܛacblpeǶ/w…welA$B|pg= W\T\CὗfwX;Rn4{q LRw<-ב4zȌӤߖy]))Ii& wအJ|[:>51yM]4Wfwϳ60Νl'x녃-h[40׹{q*;=ҼðN師j"_A^ĵ3C wP.,5)X-Gr)rW}16$2_1|P]x1U|24Ww솹s-XE.[X&:^.Ow`ݠXrPv/_q]wcl1@w[TN =I?n}LdP}ѨgaMl*>{Ԋ7gw]w vRH ]ee&A4&`ppie[3"45Z#;q'ѱؒ-,  7{8RJ2(ab Q+S@p@S O3ʝ.̝!n؇fh6\gA1TAXVKJǃ$Whw]n t] ~qt8]#4@tPD8JՀ]; "ܹ=0^=桩6RιR{Fޞr!!&]y{vT콋qG^xwu; I\sfx2e1VB~wkl_uxˬ%d#7Vї;5qqs殌(?J*К9EM&4P48~Tnr׵u\>% MP k{LN\8ʼn"TN;'oC4$NwG$wԕqsvo' kq6i}j8a߿AOv^u-4h0z17iȈqy_rZv^kʎEj܊4$#[aǔgSwɻd%'&A_!B_Z8 ^7 56;Xd;ޤŽbh1<0Ud{Om@.{X`Ai3| ah)N+_ #NsGu @< c;2q|uZNMs f+Ꞡ5*%v0!;"0P ;6]iW"fpDg!X^_=U?sԞ0e 6宀'J@dDae&XEC;\YŽSv;5>aK[y"ӣȽCgKA˲B,M/.i0MNh8$eڧ:)8JM <t9r+\i?{o ݾ5,ӼOtFPJu2V+)bNIx/muSV8qFÈPqU'X3 M {T(=u)c9.EH0hNtؠ kLsp{lFT:s/+]qjf"_7\bU1y&-rE*Is(5un|{(LJ "OAe9ǁ7\X^),߉~vGęqkw9H1 N <&y +f=6Yn* N?OkwНywɡ`fsd,^c%2lJ#$hkĜo\DH8XVQı3Ĩ>r8rR8;pp=.KɟW6x)fS`}{JeM#okLEe=(4層q.pǍcc;I 8&AF N1n;$bv1Efw;);tŝwRwkj _Zd$FpdxY;8J2F{ ; o% _9jJwܸKcB]_yO㐑`Zӑ6qW>YߣݡG :w+l im͢RP!?,D13%|h>펛\C,UwPRw[kYPE6`>PSYH@9݄dZOh9.&P)wiwDV׹q9 U:.M7PRCWԲ'+P5ss+ΗiwHiwPbYDDVpb|qPL4V HmD[AQpW PkU(_>֖#Qs -Tws@eV&S)tꋴ;,s=;2S;&Gb0jCu>DUHq>b\c A `1i~krmm!w4,rDž9U 1j1]/G&q]9mKGp7E+wɫFz򴜼~bA "Dv@_- sǹ εe4-}EXK[%!T?-[SZ]WޥAPez7sG0H˯K5Xb5cQuH5O֐;K2wL;↕:JmTj Cv?D8HBZGUcg5DΙ_ي!%6F1ѐ 3(Inf(YwM+\KxXX _p8@"o{U.r!q;ݝa!&zٽRS25=p #VN~C * Bb,B_2<(EH[z] ;ewQƈ{wl;h`BjQsM@̬}s;m#/o#]Aրr\I"F &&X+eq,2w,4>%QxH3*)T |f%f)[CFS6;8^]]շ40PԬ ZjE βQpޝRتb*i$ V'AYɋGRc x~vi{ż#rQw˔:܃JF"PpD9BHkE Q .UoHiJ/rG>.)"[?<>0KR' AխX7kM_wr;ywP]F!"1*J 62T/c Vܡ1_rw]K}'om P 踝Fc!6PRSbCً.qpGfJYFSNtB4/.{4 ܃RP{.5#q wLKyмk{9aVLTKgMY$4mUwb[w#wϘ g-HTΦM{j{?gm#caR=u0uaeP9")s]+; (s&4mCL!X,aqG!\H֙uOwLRvc?o'M %Dd{ɫHlpYyEpX)-SRkl)3= qGA?wR3LyhGr|OAkY>^ pIZ,w0##]Tx$VK`8.m^݉,}K}qa՘ }\:C܆mw]YSӄE&gds?mM,~Lz HD6) =`yߴ].;N5ƌ}:*n,jNֶ=Uu:f,VPmwKlRXŪ:2iOGeX&ƌM;TwD=K(a@pHW@(5.yqCUFRwݞ OLD*-XHMbuf+`˨/u/;hq^1as)gC|E G2@* ؆5Rһ;N{g++I%USE\M~m|Y!6ꈞ#d"RNY# y~wUn^jљlJv꽜 YpXɂ#9F-w7W֓;>x}>wYDjcGul,{X.V#sGMyvEܻC{5 wT [\W:ҺU1b{b#^B)7+0j#HޱaD4+;E|_}aEdgd{P+crDג$dƂyv7;@K[p-6$dXb4AުmqRW ̓ ĽAo@pd h&D͜2f25 E~b0_ &țxa=>$HqG>w߇g>rpe}'l|!,¬mwĹA;;.qD 0dLbD̓1h ,(tnwۻ;dŹ`9RЊ5LfC+_'nb7Q~"sVBVlwܻEz~̈^ۓ8f]SqX΁U *RC/wq̀ܠ5u%g% ҩ1!2-!pIP*bP8Y2o}'lN_w#s`q*"BpIBX8ABSzj@vxt9qwĮvױ<$t, wKr6}lK_)A{m tHM0RsbrB; [H!P_6M ĩzMDKogdd:d 2m^ݕwy Nowĉa1ֲEt GfLsdQ nvySwso\]ip[@s~Pz{--VPf E`33 Nsw܍ReD<|56\cBM/\QF6=! Fw3ӓaKL)PJqwdLJdzɦ+{s|'):^=s9FHwںoѕ҇E1!A"l'"+\&U]G'_;[tcC- /Ն+8a &$7<>)ͤDWZ:ٜ5w^F4%Q>gFp85 w:x, R$N ȅȉ<F )v1TvK֎*Y1_L/" vc]u('nU@+_RƐ=j77Nc@1~~%w;iH^=>5O,0V>rwsō:-Jz~k H7!cRЛc vS3hwrwN%-N~'-s| SєG\mPHDf94 an]ץ5mdALXabIÐID̋jdw/P-4lEfILE5;#e6.2 a0R%N & Q`_GkLIȇ%ԁ3©#;:^TykO uW^-b0 E?A k.HFe:o XC` hvU6݆t#Ww,2b쐱9y2-EDŸ[->`~_4Gb>#6n˩hcBGj#UpӢ54on2Z;w[t% ޠv쀵JLJѓ6 5SQϛu:;CI /,.h,Y>sXyaEp.l;mqmI:Sv ka&؜ .u8S y X:ƴm];{'KظDdA㞴.OaIA7m(ia_ ξmeaf 4CNɹ*eD&x@4Cpk;J.Ȗ3 Q)Tb-Uu&j h[Vw*],+g$X\"5/%^c]e PCn)} IaZrwr%;[i@??NT_T s/S"bq+ɜL7x wTs_N]SP5"5Y4(*ЪN׋Z Dh:05.'`0vdsWqt'sv?< ĹDOW#RX#"tez&B8WӼü?2=@~BksWb C~dľ $jDAwIvjAhu ^Ti"Ͱ\v)Rf'0] g̭Gi }!ww݀+sk48g{+ERWZk!fJRa)s `uj+i mDSh*4w?&Ԛ9JT->p)"zكFG{F;Ƀ;"wRN;!d%r v 6D\Et+9Q3ݗ*a}+wew)6w9` 6֌ 2s,Ju6Lҍ&/1ԗ0oAHۻ#y9%Ԙ)pJ\!6%0ÕC6BI9 9*{xdSaʞE5/( ϓ v~o{-BLD) :[ͤ08i08/ )2w=q=l- W6 M#D@gG^ JD[2w]Bs ^I=-4Fhxh?SI7Lf 20@ c ;k3$NkZJ%Cr|fc<Ц&q3 M7uosǼ;i{ӢwR.d4wsPc =Y&qa߾>5C |q3x&gv(ǝ X&/x3@)m r4seM ]qarn8]3,J;sWm\)qfuSw)i"cz!wGܝuL\7wܹ{ B^-O1 =`YBSzkiC݉rnz'+ֆ"fmJժR ؽ֦kE,0e KkDs7K;YsK5 m=RC6lg"?#J_Y]|qNM/S;ysC h4^ M|"1 HZD;x'9!.h$nT`(sW޵aƼ9q.l?uM/T;is')o*xSuj {\\R'q╰*aL]AnKy9n4|(d݀I0@:BZ1Xw0-v?` Z^!=f@W,5@2nl6}ލ^zܱ Kχ*s"[ADY#`ȋ(4Z0XNdjJ4j#O_brMeD9wUK 1@2Hݣ/B6l3 :D R(JD2wx{GQ\λ1㠊QEdy ('/qA'</ 1BW=sw] o=~w2nܵ~b{[݅\Мw]HWisrw A~R减z*DhP,S8 {1w.ӂ6'e~7{$E#w8R@AC0@8o@bJ:LzolN.'o!!xcܛmb?|ν8F|hSp7ˠ;ilaLdD1-UEl\q٩'e^ge7wG`5/6 >1?U9(C8vmH A7g̔0y,`TwKd_@ܽ׶X{a5̇?_^/V3>`wG=9\Gn@@= UHhނ'ʷrmNq@`=maݽWOl? ]$&QcU}U! ?Fcr7t"lh#ݽb ⾮GYwwd]G,atDD!;&RqtD̀2j{(B5wqwT "V݄:,6q|.mxO1Z|=x]+DդK~qw/3@KZfl B Q~ 7.x&ľ)ܿ" b*t EK'ƿ#7=߇> {헣rH~3:}=A/nT}_H/zGo_Kg=_^_z_^z_^z_^z_)ۣyݑH?wGݑHyw_//{#樯?{#ןhs3|fsT/ljnԏ]Z}RWv/ZWzk}mӮ `覔^EFmݽlZo?/bG-6D˽g_lzX\B\JBKO;muf4} m: m:|̥)gӯϿѾn^붨_=ˇOW_ߴ=Mϼ5^:~v?;rn~K>Gf?K\H!]lqMNmQKJnk|QG ?75E>d64⤧K%LO^hw/?\KowPG>yOS{|ɦ>sy韇O_v$C.VP8 * >@J&:!qY@ gnZnڃNz+_?w>/OWY*Og՟}T3W7Wooz?&?W^?,~Z?qC43_Ǿ_/?-6?pz}G'֟O_`z_'Gπ9~æ  i;c݈w+CXbǻV=؇r7? ߽q=4؇r;v!ܬ{|mvz{>m:x"ͧ}Q,S*SI݈w+CXbǻo|6k8(4MUXۣ|c݈w+CXT0@tK+ Τzr(_ Gmg߲ nǴJ;Yyh Vٰ/G Ҡwұ|lgu6y&%qV%` q8*spFQ՞;H :S'[9"ĺqM'v!ܬzBrWmn5tyۣ9Q= G{K\xoUX-T >Pf؎h<;a3E kVdž<$ w+OD㞰lOF˹Hzs䝻ȑ0ġ^7LONqUa܎A4Ma+C+W~RnoZyQHsۣ "_tdj\;v!ܾ_ GlXSI݈~K:WHL4< !GwMHZڞGY[8h]k?EKoztDp~n%Ԑ۳5D,4S .Z7I[3ME_Ifq+CX>:k_ Gmk_.X]_KLJp%悈$M,:ރgF'|aZV{a_ Gm֞89ObGt/( \|6k_ ;1b" kը<-^Vxpy7v+apOLf~JkΐCե4+CXbǻObJvݛmlV=؇p(: p58UM"uX'!ai`bǻ1cܒC@q+T)Zj@WE 5j)ZkҀ7v!ܬ{c݈w+7&/.-ox׬.=؇rQn5tyM{2XO .q[v彼pQn7In(jZ(s3fHa_jHOu_|v. SgzxLtyۣ|6kd;qS\0\b08 );cv^R#Vn4iLb߆ۣ̀{6؇rÎDpy}~\\q/)C[GբsUSjΆ;HzR>+b_ Gmk^qlG-I؄+FT^ GD(wbۣ|5flP+:YڲԵqzgUtvKT(yG[FnzZf|6k_ Gm`W'jz~ OQLrs_ GNk]X3 6vXbtyۣ|6H/:J6ٝ-< (nm6t5ҙNL1a^`nw+CXbǻV=茼昂ڢ,ܷDV<6]n@Xa^CXbЬ{MnY D'7S΀%eoؓN@{6O/ ze4[9GGWK!oy%f՞gYߌKۢǻV=؇r;uRZ7>k,.U؇~k_ Gm=V4])xq~Gk} kEepGtQ} 9z 0NCXbǻV=؇swL${v}=؇r+#CXbǻV>6kᲖBX|Ftx]ru(zt mBG 2ױ#7.e+!fy@ic{^M^rBNSu:NSu:Su:NSu:͒Y:i_65v!ܬ{c݈w+CXbۣ.Xm _fOH߄;%)T/]F71,%X}{**]Sc<*i f:n$SDh኿,gy͟? 6]l/<^ygyƱz W 6k {c݈w+C[tyۉu[ PW5FtSreN x`s8'v$Os]ooÿڂZN;C੡/Mܬ{c݈w+CWvC9lr"% v`^c݈w+un5yEv!ܬ{pK@ǹvlS}\㷲oKH*)p\'EoK#(Y5׀Ii4M&Ii4M&Ii4M&Ii4TdQ܅|/PnhnCXbЌ{cHV=؇vlkh >:q,TEi}xomJ^gZh@,pTQ*H%Y1M)tÛgd1@Q&(";^ԄFR@h(ƱչXc+?Wh)m"־5۞v:v->X ~"'L'(C ǻ n1_ clhL-cؾ+@<5¶aܬj`ٹw+J&hwۣ|6CX@ۣLn{0b6o*Z@bG"dL6 O~hPv4/Q# |w:Wm8Z]Fâ>%Vmn5tzU4؇r->kᶠbp] IEv"U=L{ $tC 's4xXOlꝁIhԟ_|O 픓V D z,a1ʌI݉r;v!ܬۣ|6kN709>d&n;m D?̖=؇r (&[RtF*P/-+;J1vrźd"5g(ÆtP;runV9{k9c݈`؇WWmn5sx:p]\6Ul*yXV0t^Y5tyMLm_̦AZG.`\9yMľ(,"8=iiLbG՘ \@i₊;Gnň@J |mAXףVTuh_Qy>12ZS)) Nꅲ4 Pv:M&rcNB# 8Tڝ[Pó + 1l3 dpXyVuőnǁ_L;v!BH[|6miNpvB<}"7'2";JqoK 8 hh4CU{͖Wxwr,ka.~xnBnH6mn5tyۣ|6ҚNCѿ5ny-8ՙ?cY t6^VMy&-xs2oPv`]0k;`v+9?Jfd f&Yov< #ʹ*i*`0>kbǻV=؇r;v!ܬ{w$]a_ hK桯G}03BˠM<6D~RN%X.nrlFD*?"V=؇r;XbǻV=\)6 n3]4]' s/gw&F,',.! EDHo滑=#+mL<^ KZ . OLzXmy |m>k_ Gzgݹx׍C 7;Ǻ8Gu"!/cRrF'UIе@IL].!;ʩm-a$ mA/+CXb^a_ ֕@DHd]b"4P)!/Aܬ{ v{^HZV3:ѭ{I A;9Koi GEd]T`[tҒsXf3!ܬ} %a_ Gm<סD+%nYwNc` >;.Mƴͨ=!)4Iִu 70Q3O>S63HٜBʼ86ەulNc-הzr-Q-Yԃmcs~d\CXɭǣÞMyzEDf?ntti`V=؇rᲮU T65tzA;XqZq:he?eP r@={ldIY~ NSI݈^%^8.rbdoCI>'ih]9)RJ=[x !ܭ]ǻE@^3V=؇r=ĹXbx|76l&gϺ\f ǻqEWe | $S={<臮u=84*>Qbi+ ԲJ#s׵wxD |&lOʹwy;V!n5ty?Ǭ=QASi_AG`F˂pwnN{qNSu:NSu:NSu:NStN6% 6FpQOO21AIMKnr kw7![*dʝ'r;[hH2a~`i;gN|$ Y{->աZөu:NStFwAhu:NSϽF u#v;clncz $P=PCS}.䓺ָ͘CD4'4v@_ GmiVnj.:b-6n5ZAmA[eJk }=Rbu5gi` (kr;v!(zK=؇r\]2K ۝#Dėi-D*zbǻV=؇r|`V{ʊ^gْ_y[dh= 6۶^dN4ʐw+Cn6 ȓ[ت/ZNCXbǻ;;dhV*R QYD|xTB`Rhmn5ty=W$dgW4]ư#>w O; hZ/ݘ#W UF\+VNtyۣ|6͡+xZ5gUݰeW?r!ȍV=؇r;uQ7x[ҹ 0FLՑNm|Y GRYpLա-FX* zIciqQ݌̮*L8.r,7M'v!ܬ{:!}RMbʿFr/fHI'v!ܬ{c݈wؐPpVn~:Og;DӊTќV-|1X6k;v)ap춟X. { XbЬ{bN _ )@ۣ|6k~f:ngqbw)aBcv!uܾm<)_Yu;d I݈z7n7In?-vlc |mn5M͹Ƹ $Ȼ rIr\IB,^P2l.k_ Gm<ۢsc]Tn;R[)aFۣ|6%_L!Z *M['n5tyۇ- O烫=yd;s;Ui\HR GKm |Ը\ǻV=؉>_0{銀y2Wm^mv&45q !IF?^d;v!ܬ{mqqjg۶ۨ3`we*N@H*ڼ]%Ng3}Ls9yCi4M%lD =?f%'2\NRUҺd3H2~b'_w;_u_jI9N4pKgi*J;MLT:Ӏ۸N'Zq8N'q8N'q8N'QJFWeB}ط S`^W$z | hQJ8fi\_~fs9g3}>K@bmzWW~j]5v~ۗ;^ Q J"-D%("ӠZO[r9b勄3'+~j]5wմ %;j{j/>; E˞ 9x'R ;c݈w+ܬ{c݈w+CXbǻ1gEa ck݈w+DQg8ckē vn7@6/-{c݈w+YDJEX|ۣ>fm_r#3tUHq)[9RY{4`}ubE@WXudabKsIA +}w^؇r:(*`,`*pD$t4G([,& #va].Kt]. G-5s+_ Gm<س{c݈w+ƀRd؇r;v!ܬ{c݈w+CXbǹ7 z[fw;:!n;z*8#6~?K bЬxiAޞMD:>M%.kD?M'n <vTbr4I/W6-de%+g)A)^O>bi6ƽE.>wM4vI+淬Kv bBݟ |\ ,=IW[:ҫWZJ/ ȼ>5G};:LNO[LcDA\̾#XT:,\J?ޘ(hƅac466/Hw[ʌmx_#7^NچKPJkB|We _e6lὋI~J:}ZEO7 {tGվ-.f#\<OSzAL@ĥ{wP+z(oEssR;D&XHza,8Q}L(A܏OiP.'9;d'1Ḇ'z=-@-4?˜%FoS+;N\*3Wvpl%bc,ΰlsдR,u~5Bl( OrɃ۴'?-Ge-`}8bsIf)B:a9YkmVXNL$Ίwm%XqSa%&=^_On)7t ahRR~F3`!` %2bҊ9.@vU|ߡ]nW "T֓: ;]ˡl A'9W:h!t lX}j@Ǧ߂)|v]d/y{a8`h`oS^,EXŤCgKhì$98 A=X2:Qp y+ #M.mL(E)miSNa&ilRH_#x<P=.MUtCU6Ȇos5ƚEfMVOOݷ\}S8CuĬ%$wA4 ;bz[*{N87fCJ+dmL<:WʘB2rgdOxFV0ԙHS%v^:Y*۰`u_5)F^nyz܇;|l`.H$T?ZwA:e9Xh+_/:=@"d׳`1 I&̼@+PMncQUpP:@؇Gx" +M?&OJVJmk38 oRv-v 56jx:?661ۧ@|rƾZ'g),!9_3sHqn֟w4:H%Ha (}{܉tw;cDD1|n[%=k /}؆qhfư%eMa$Ilxa+IIu3>B<{::ՉBzcʼ?5 x.b*v<=x5Jɏa̽~AD֎eSEGgFPđVѢ0',7?mJ˽].lE551z!LW^%PҨe:Eˈo6#]; E7w,`n7[~,D&bcvht -v>KMV<хO:vo.)iDZ K=G'F"м-$>-6U\L斒"+MQ'P)eUAߥ׽U@YG271tƮu; Y| ǯ z̈Yhr$lar~#y; l赗k~j>E1>NHkI첢bGG)?:jF #'?јzCxtN &"g@JJrߪtD=ɔ͕NƎ _ݗB\Y=Ћѣ J;xMIV E!ٷiAI!A-8#W'dXpA#pPH<^Equ?^}a>o:3 Hz= R* Qde1:']g;ްuX#wŽda[kp{pZ|uTQdu? ͰnR:CB '{WIkrQBdͅߟCZ#oy{-)2~Eֲ^D)mEys6-63NF^g!n ?ƻw?f{^+0}n҉^ϢcˍY͵.8ҺxobmYHwjr$s5yf֤f/=k;6i`udbY1|OӲxa H70UCt<0S#bt8@tkhֶMlL&,IȠ7?eU>P4QLLk1l 뒣_?1pDJдnqb<!d7Ǟ,2$I˥IZg*3ۂ&}}ʡrM,ff]8M+`:#iKIsu|=L͖#hgW Svy0P 4(]S&,;eNqD?OMJDlm,drϹ5zzַl3qb`5xT(> <, Zz $E|{bZ2"(W2/W !|;dmvGײVW?/Fio6E{0Ӎr>''X/>)8IU=ijC\O $@T,^V{ w.s־bټZTY$E3[d LWQ{Ijxn\H⊆'ooQZnLy5arjQ@:=OB#Uhu>]^% h7p cvɰlQOm&uG7?{V+&J(8ADp;PYLcW{LLYKļM D\ Aa#W'? ʖ}p;? ?iKԻ-8"Vza?q!]ٍᏱ[vPȺIGr6Utϳ\TD F>}IâU${p"Y+1v~NQЊ]3DfZ9̈IBhD&YvR|b@О{ ޱS)wlm*IS^@2P x ]1sӨfnɜ jπ70}O %q@UhGwgf!8C Gb@OJϮqۉ [醄xL?/kfG\:mȦk#Gn_ğ50 rȠ݇Q T.t.j%"675gH}7V2c97$DD>sj@2lm|{#?53տJEk3-)enK hNJ`{t١W V<2+ꛨ .4Y32~ wa`4U]5{x͗tҜml7X F\/oL `f#MlOm}U .ߵJiV]Bewt`vm{b\iweٌ^r>}}z$)xuP5u8덨h67G81GwyHY9KC|kO<q8۶xd,7R39.ef.ul%CLF*ްnn9)guAɗ$~HwZD V 6\Bwp[t?0̹ԅ5f--xesl:,lNd+eҢjZrDԥ0}4߈nq+i)52'wn8 G;(s1Ya3 @VEı@ʋuJzwvj~M#Hu%],:c4+3܁Bb? 4gO[mk8ue1[[ʗІZX. s"A`]8:LbrEQ`;i.?\ISYG|kFǮ$ bdo;;ϲU:;!fp}WP,XYat $hm;Jf\[6,+G!@!x :&~z&J}y#Hv1f8,C4̡tYf=`GŽ`V@09FvZ`럗Z+"/1* d+J/, cUGn ȪH<<,R°6e5ks_;)gñ< m mЪ;0s'65j]%3P~yp27Y,/a ,k&ɮD;:K&)ky u) hhSiIG%"KnXӨTBʲ cF<$(35S7=m9)ňو*@;wOY x{ %3 s뒕!kP]v/=Ģ9oz&{]/U7 \28FiE44;Dtw5T6Z}iFVα׾ce5"P9Alźl $s:h.aA}\ӓlq@ %P(ϳgo2]5WF=iW8xXʉ+PSkrd}6\^.8692h0۠IQs%Dd[Gi]ke.ÛV>ԫӠ4!OƆh2 Koݿ;!ĻNz]qVxT"NVbqyОM"M$BD|Xmf?;h6?q>1X\|q(f.o-57jnѨ~.Tm`n1+-DEbfg~nڦD:y+KILgh&! ~?֠~\ok-x`ċֿ0AMBZsVh|L\Db:3Y>&z~ŠhhehRU>H`#BCy_/pJGLiaTȧ1k n`]&M$y| 7DI9qN3[$g 4|ܢ'.xߒTIҦ+8"L>3܌iΘC-8Ѱzz6Q]Iꅛa gLr \w'\mɭ3ݽ ҁCGMVoR[PgZa_"njKt;[_[T$_Qxbj#dc  }aCHqqwl}~VA)6iGos%7G;^>g8[xAս; zrd =4bI}X}%gxwN 1>ZnO[7 84p& 0b3~g4~8U@aaYiހ%E+/~Y83PA1YxʫQ[n28|5qZ.rXh(zH gwL %Ţp3iC(i k?]UY=!y<\ zM Ek [}5 +oҐ \^:S+yK[."y0{ܯ"Qrep}#ۙANiV)$"[AWpY7\V/zu`AG&hJmƑJ1 "4ZcA +U_ܹG;tFm7C'Wuir}Er-Eyd: L.%ʈ2q%RGV qJM`+t 0CF+! 7Tsτ^;rm+{LI*y5\2Keʁ#5>[\H{{+r7`33B,5leV9Q9ƢsΔ)zjqw#e`ddC1L3؞eqvP6 uNpT:Sc7eO$[˳+'~wi =7Dx=1Orᕅҩtװ%n;>y>3n'ùLiJ%ULE_e:mά[ש?36'a0\&J>R].1}grH1I{Rl&^qH ~c$*hTIȾQP0RN: 3fts0#}b_SwP9<&}T_2՗E(.TkTvƦ6 ;2\vT&e^a WF[& T/4GJp^ 4YmQ"26X^UGa~Q&PSy^-'&3eGCd,*"ozx~rC_05P]Pz^LѦ {A,_nٽY{¿6Dl!IetaЪ[d}M +Vm]:fk~$J*Crq&`.jS\P^>,? ' (AfST[LO5Hd/]֯c&*ZPf4A}Sdq=rG:adZ/z!u^}QF} )u߁I]#MCp?vd+wMth%HFS~CipxE]YOJG+-z7yO{`Q>|؂9q e %ͱX,2ai)}𙳤#5^Eb1Uu;M9z|{! {<-Y]~`\ &*upQnEy@O) 9rF/8 4JOx͘n'O=6g:D,$.n-ԫ`l< S6N]Tf$'<˳Ͽ^"HszG You|Jy, x'?qU :r)kS-2#ˈ`)kJ{Qzhd PzSX_,& ”gG<_6NCs,` 0-y\Y~%gza#zo6zfziAM@PkQ@3=L'^o%oPr |;qӗJr_*q#+J3Ow奨wtՊޫ$z R{tlJ/]b#(f >yڰN5C*ez"aHrME}OMAxv k`|t I:aըo'ؘ[ِm?,L|Hwg>5m_@b֏r \4,znIsLVx?X b(#<8TZтEpnZD՚-'CZ{=tLAǯ2"ۡN BunTX#/WUF;M b8)+)ig8aV[k]^wJ~MX<%u#Nku1L⻃*Nm\"0@5|qzf&mf{ZN+_GK-Ir;'⋸<\C*XFz ֲդz~5G%._@:4'87E5~Mj1I>2û4ß&ӗml^Ā> 4@ 6&*,Ϗ|br1 sx1(T |k.QK,q@*"T37__R`F+ A|AeфTۃE(f/+Ksk*ð4%,P(8[Z WefM/,Q'/M_r3bX9^NH|5~;O]r\2J*XADiְ/̟Iǃт^'X>%4Ij6_AlDDv?!7nL }!5 貎{0lIc[U4("j)c3m)Opcv&Xds c#|(Zi,{ y EWGCUQyf uD q ۥu]K0 Г#Zsf0"om̮5è 3Z +G W9Ax{Nx0:ʵj| M*Z|d-:Q6 *)-oD@غk[ϱ婦ր!]DzAoR?&<<8圡ެ{d/1̼¯=T - \=ՁqvEv=8.:dsN'* 7?pkŮ5]K>6+u,ͻb壘CZyU?448 bE6s Z 8kCb0(7s_j˄/OT=̓KU|XEÎVKABO4R|߱ߗd<>('P8[ot'ѻ+aٮx .@ fwdbeNwπ,0V[T3l Tq`4eMg9{nOh$ 6 o&v xs>'Г+Ijf^czd3|ƷF#MxΦѨQFje)Co R zv1wAsA\Ɋ4F8QŢW<éRG"V-wp:s\cn^a^-!V/I_? GT.53 8|e`aLJk*|3+IhtJ#үT>G``ߢKGA/KcW@>fp*as( _Fin%\eX TX< WgH SiD'hViGj4X$))Z9NK__ "I|T,>0?QF߲GXY|5%p {RzY*#9"d|bOB0h=H},>Ǖ7 B#Xv1#eHpTQIf)~0wg'pOpEm˻^1so_oMBh#;'㜺Rȗ$AG ێaSG  73ڦIf*OȀe-PZPgyH0Eν.4. ayИ&M2DdY-r_{$wOj4w?\?)VYC'UJy!YS'cs"$ |vtp K 1G*Q!1q9یxrpS "BFc[(o/=aHh<P!X˖b&jMJ}:( bLkP13Mq$ބ,.?@:[^?S>;6ygMp^Kjg*_aL[7䦹x_]T $~OZ-H?|ZHc5)FN-Ǟ nsc9La2K̅-5C[_عf%9: l &fN5ѯeSIuVbpJa|FeAD {&➦|yx5C "06MH ۰JS{/F К ^0ld lV@2'IٹuLL6H^w%7O՜jmD}sn4M-a_D/ ۸ uOPx E3µ8!,瞑&L<:XuCm( Z4]vH&j>؇?ؘh;-/,sQtT[GSiB m줻sOWDG2:W_s%na ptwbpB<X)$ z ̻)˽DH_wĝ~T3RS:B%ggR{ |`^/}E ӂ1Ӈ9V|F&sxz{c,9Eއ3Âm'/Iaֳ.8JGKksϜOfv?>99H'KQn "P3JA{\Sa3 w%lIn1D3Mkɇ} ekI٩Ñ ӏC#ԳuڞJԃeq"ICK Qo$j_UwIK)} $^t衘YfXi2&@S`O0sDZJgCJ2JwرL' on& #ݳm2bU'eK^ >qP+\n;Z0U~d%x)"F$#_s aD=Y[MTNxLo)R%eq3t9WU\^0R$g1 o%/Tp3~A670g3:ټMb!ljPtY]9 }af/c(AD fl?" {|'@$x})B$QC>W,@N챜aG9d& we B;4O&VJXt 9G{cYӭ6ǝGTŚ{/p[DcԄmfґw{)FµLFo)=,$sAM&.W1^SP fYgCc{S%8?#x](mě.klKI: >h*?Y|  U[^lgPA[_Ô`N ;kn"ef|e .AGCtt*m#$dW.s]0bOAûp3ytI8!&m"4Dxה(_'+ٵ:$:`g<}lnq:GUBܰ'n~]R".A p&T e:nB`FB C4&K6M"cy3M.t?)^PzdgY M(WZqԻֻ + kVqb=mh)T?q7ZH jZp]DGzF;!8veP;aW|(hS1tCB`ӄw$KrܽpFz2BhhJ0JsAJ2h3fj܇[4'J|U}.3" 4e|+ٗ9 *ˋc9@ˁL~rR,yr#D'dWH&p rX_ 5ө.Lkт݋Zhvyܦrq|qg( Fz.,>= [V1 *8,7hF뤑|G/Oi@*dϫzp(}TC3_+rqJjt*lojݭ?_,ٮ!Kū 'l9<+&0nJ}-$}F?y-G2 *:krx% hF֨W=+>#Ȟ4Yx5>C=&$TRB,YUW6%ATf.;%*bW6hq6YF<-5Lٛ!OM_Lyb k[ܵ#ۧw`A5f{ g_@?y3p_QnjӿTE+Cz5-m0E)r2nr^A+ Bb5|k?phNY5u9#&=P!XUӳu3_6R{yYJ}3R7 #G~"UdV6#F393gt5_GAZL~Wh&8]pB:GACI45`rj[c`HPÌien5[x‚Td<4f9j;3;9;xcWQjґfmŝ,%αĶ@wA-KIt q ' HI(rUa.?p Sx?a\2-C'8W'AxGv LaܱfnA%qyt,6JnkҶ@h6[Rf&h1#p[*]kEGPTNL1K,#e|ND^Fԟ cmI Rrj8}ΧN,jl$Yg Pu9NM+SXqr#Uɪ[9"L;<eC_xѝb} ć[T૏UΖ9~-9zC1$!3ǿH~g㦕_Am:^*׫؉trH]ᮕgc,αzL/I'*-̔ $3Sp>؏)PSCjT  ro˃C_cc.t@mbLCWғA3ٗ>({V< $84naL.{LКsG. ek  W~@=Cӳ7,p|/nRjTI(KG7BH<ꘆ>ӳ\i=d.ݵnmm-Ih%ïz`klVz@ {Vu8DP8#_,6vjv`n<CpΙi啕;ؿ(($@bI cWzZÊ9[Vs&' &)&=8w}zOz?O&,lX59}b !|!uXM|"ǗYDqyŘjuLN،^ t94n*u!ђ@ȬR4" mRDClv4τ4c:4W_oUSV9fIwZ9}jK#C4\SsoDE98p7X ᑵPoma\^߼jѿa&o?z*lfv}@nZdOLE7j7t17uRg7"%jC@Q+fέ\U`\J0Y{e zh|!k"nrH(2Ph=*ze =̺q|4e,{JdM8#5=cTl):ƃy唼&P_ptL)DԣB =G{X$vkZM`99g\PJ@ܰY@Z3-XQFW5 ZgN&&<ݗhոO~\7VY{@V(I\E/$Td_ο.'˓"ŮkV[b7A3ۺ":U]Ot𷣓*I]rlҀvz&*=>_art-ń=}G50fj3<-9[ 'ÝTg"}hl ~=@F0tB:{@jMG}2{P+9zOZ ->eܙ3ޭ2Z{xZu'= 4N#-Фbc WB:Xak<Ib^js龕Nj{')E<sj@2v1õ~C7ej!:p.%Y:ae5bV]0S #!)boX:Drۄ{6 uCTѩ*H~^j_5CD )uW)N"fsJE~2aЛW q0i^Ih̳Qf ӿGS2_ʍ0$9ܣdz[rToAs.heCWM[a06Ë ޫbӄu 6$uǛ/D>9׭AڿNqSR(u ƍEs!4QfJwQ T{#ghn򞶰 T;6#&0 !r" *R6cHQ[~`8iY "TR4ޓB2ALZb:TG#dt0=(%9ބH͠L?6CrCA)2b˳ dШ\5{B $ֻUG[_JwDEΩXyaSke0Lw:7$2Z˹2 l:Dc,;B(hQ>z(oզ\sG8\#4+9OoL< Y 檅;R?cOa+\4QR XC?4/ [$h %p坡W+YBlU~0xCbt={:G""oGd^ vwc:v8qjٴss 1j j"UFPQH%6~ ˎ8hXq^7&3=/BfU@&bB`mI,rg~( IuK{*D`gB)|Xlbf(`!x0n 4[Z{+|>"ҹ;?ڽcqRwިYh\o-'Բ:} c7 vKڻfjZ+HyViF!Dv,؁W"@ݕbuX'}6\XV*W9C94Vp{$#:QA g$, w՗BP\E1mSX1曈i\OpKr^ HUqXw@R 7LmڙN ;."1$@Qber/WapJ}@!m !;5yTHCf,)z%:=z iBtD{N*-ެ5贑 lCRPMF`aEO(]uGqTl+@q̬6xMħDeݺ^H*eu%} ^)|hXC;e2@z=O"d$3YF^r9uF"t"^V-uȹum( uK2 Xjx0sw=Z 4|1h@aN3}z6|AK/-I/$C6CdXnP- Jwy0gG^e$hq\oZh(*5 "XRN栩Iuo ldJٞ U019\Pd9N^w 5̳tk8| lPtedQ[?s0 a6q_\4wU"IHeX/}tݲ0%?hBt}x/Y+\iJH(OLZdVQ%Ssc,Ea ߹kF+ ^~60P>̔R @֊0۳ 3H%;~> )+[b_%`e]0tFNpܓx-s5BAH^!A'5Omm[P$jLg%;hlYwcK+臩ً*&x񐱸TP_ۯkZqQvx1h?dˆR[V:b#Xv|6Ͽ׮Z~>Qtqio.A# n+52(ΠRG"<*x|x= VPu$j ]yɫ"֘nmP=f/;8 Ѡr;[!R0SO!{.Ɠ~"lV:ϡ!ӫH]|6^ԣLܭvխS2PaH,}Z-[DöIFBޫ"%\_[Z` D؊]wUI2=HE9~_hLswQnos!dcHW^*ThDx_m}ы}(" [[9Y >يhժ)ko߻ .C޴Ly-SVYt L[FY'[W^y@j?W;gdN2qx녽e`C8K$9un~_?cGHF3XE>sRW8I0999D p{4Kѧ?Iy}JSw/2 LؚP_LVg(dףKۦy` KYmKE}_3epO?[Ya wЅ|3C1K8muX;ds#@W>?UO.mAT7ӽvjU񣓁;h s.UCIҀ^qRbT2L]/ɣ {*WD75&vö+mkf"B dsNo@ n/|N=@%bg>ƘR37Y3ȸbʴ,p^%eN~( 2$9aq;RB~g=R>7۳M6߆ cA|x"NlB;81t9ayR_ʅ@-aiDsʎNl#K[_|y/"Au8U8C0 f6dRZ 8L$h01Q¹{_qR1[V=KEc yʵz+*:~ Y4\2$}I܀oNp( 3^&XI4.v<-sqab'z?;7æW 5>,o*V= ,m$qW|{[G7 $~aZJv5-%;v\qSX^ d^:8ڸۄ5':\&}LvYC?Cڠa6q4z~ R2<'Y$"fւ_ߝ<b\uHV䔬sċ8dK]? g%d!(VEY#Fs" <@]3Gz-f5-bjK i~"tn\ߨ`O#ML;$ > [Rh~9b-Չʊ+Fj)=bY/!9y{gxVupR峅f,1! ]hݮxb$⯄Sk'ZatM,qH5?4.Hg71來/N{&U)l?$* 8g tK*K{(n:z"(qC|FTaJdچ1 Ce&(CZpǤj Q [^HaZ/Z_ YJ[2x"j;?{+@>\V * "fܬBjPUPSFrCѵh^u9|5';U1t.H=}Ze*n 0;'#SF(SiQHZwEH&/,Քk1YQ80_(7yyZ~XPmsέ[?w 6Y$AHv,Sm=]a#] `ZXgdqdJ}ylT݌oP>H/6jT*VQ[ș}ڶ?=.gՖ*>8ኈ}/)bYYy豿6%"n\:<UnNϗ6Z =xZR<,hw8IwF;}c9̝+4{M .}xmٱ*Ѭ(  IIt`HVᎩi|,j(Tl߇n2п!ߕ8+YWcV97l2Nctkעk"JkD{@p&Dtno 4}].㔾[w n-6V[T}e:$?F oFb vVB| };wOzku k֝c4t4(qLxSo1i,//z":4~wpe {7sX?hC=.粻Smڊ+Zη4 dnT#YE3E ^SáBP.uL~Rn#|*5X U{#=LeFk_!3< W0RMa" 3k%S=SǪ4} |K C=E.`Ghbgk*M;BCԢ0յ)x%ΚOEw +rWTGܹ͟m`0 THBub (zn3YQPƴ`q\7FI8M() 9o:NͳSw}e*L@(nN;mCx+)H˴!ki&2Wvih;zD}^+n!Jlނ~o_zR+K~Z;$#f)Y\ 2'`Fв9Wm3jTa^:700v kcUp ,Lؔ*9\ؿs@ɟ^P q8YgHf_d!qN)#i@] .]p)J~*i9 bȝ{rY RYUޥ^|:pF g˳UJ6g ,^Q~=J+clP+I[(m07[4Jg sr}|@0Kg~Vq 7}*tDҰBUuZ""A$(L1AO3^bd7+ɛ1+5xnT~nEK88tÒvudQO[ )!³4`jrU8RIe ɪ77PVV|IdEN8,jIDl)ّE$6Sw88!2?c2D, 횺(@iyxoXߩ~&6=iDĪ|Ѯ Z$vwW)69pL ~-lɼKvx#*cnB)㊅) luB[JqA&j;oY侑=a Ϻ$5x~TAvR< r\kRؓm@U~Y+7Cvˉ.tO"^KӶ0/@Nk DY񪈨Ds ,.Ww.HԨ8/ʫ_yE7 dG}Մ)9 P^z`FRU'~-_o׀o}e&} w2@y3| WAO2H4Tز|;|n'C7@6BxOTy6gl >'5]31Eow?#jA?h¢6| aܱU7]_ ECXt$Aji1 ] γD,O<|_eo"aoQfD615W$?18%Y.9hm֚@ʗT_Uħ>1O[":|yWAtLveqx @Ҷ 3-Y*oEBPLQ:BmKeS?W X` ^^dQ2)onǯػ1s"U̸{5M nmM@S8pxI0vɊ% ^>!tx{ {rxe2?If+ė LFpc./g6`7+?tX6*i!B4bE/iYλ #Woȵ Isp;dlvIy3M9ܪ1 ÌFTl P*V\rd`}IӪgfԟ$˞ Te$|.uA:  LX6&Y^IюkyDT*6 6%ɿ%2`>SQ5u;)"~Q֛QV=7 oh)2J8QiDT?S!{NjX`TMvP9}9 |I9s6+ $%CI.KVy#3/ZТ'䂢/Oi2e_ SCPjxu3x T>5#L 9Z^N|}I 0}Ƹ9#K,  CaΊ!sbƪ/i+=c؝gۜ!6I6{9i@ 3*D#ۼiZ .>3$O|@>lmy^ yZE8e S*Kn'3(>h7XΏ 9q.4hjQ #ZHm:p ތAΑ^v"SW:- ƤhRp6DK-eI<Ѧ`*_{I@"vh^X8Dl}bX_Uxր:eNl}l[& $(|uO=IrOxGڗ󹢉'PhA`(YTw/.J\i#?eⱋ'г3i{3}RV3lǯG_406@U Pcb¶K9~{3>=Ya6f{+L_rFy[˟zF&vBZ_#3^(PI@ 9<.C_+D=9NG⑮}%8|c!L%"W4- ^rUuA;&XvAQ ҩLO MƂöHJnu9ukQ* NɤgYIO|T"SK@! <:uҥ1ʌS 7{Cl2GIa#%k$%6$!~^V$AcA Ro%.9ҡ$*\ v!@6onNl_$dvN&/)\~s1o4-[C;vL{ȁ n׼%᷽[Ű~5ǙsEz>ϓ6b g xh7x ;pA|5Gu.6Us"t ] Sdհ=y磘AHdRGEu}Y]vj޺"o'`*ѡ!,}P_']` 5*koJm ˢgȿG,&i[AM5m#0&dmStE?8yB=bR؜ vxz2s_mhQuI#`+mkѯK1mov$+h47Y2<6^T@oCf)lH(O'BH $$tprza__79DbmYm 򨵅**f"t[B&|^hZBa٭!Mw.`sgèqO"mP/M^W(6Sڙe^,{$kE(@y{D^8ʴ%+}܃uA܀Pl1m( Z>fK^(M|/Jkt prХ^PӋaR>k$rC %:|lv4MU+ Z)8 8Vɤoc9W[hi%\}&V 9챬"(dV8/u"Iy(*A}L⦃&W|XR4Kpfm'E* w86rF4y&`)_T#qQR Xpu/ܦrLxzHr;DΓM;^9.Nѵh*to;}!]Y0xHS=yZ=Sf !]F gN~8+ݔVߌh'+X O*|[3Lf&czVF U#Xr}!'uF4t3@z4$QS!WR \dkJ">Z: QT xpcֆ#ZAyW'w(#J]Hk EH?@) $`II0 Ma&w.E5PR^@8 #βj6X]Qz {4-]ѮE01 #K}HlƜhSU_rX[r]1L$GS8EAɀ~\Ojaca(œhOmxJ@)SubMLv0)f]MJDy __MRL2\=kt&J>0 %6%8<\aT9tqdsoxAIAV[dy2焍]NJt F+ֆQKYo{0=FK^ퟍ%{ܼ qd[e Y87_\lmxdE EpطL ~uSlv|dZj 1}fV36O 7礒݇dx15F*KTu6;BlŽVm@啫td$pb2Rpd{›0PANzDhj=t}2GMl?.yܾ0`NLߘ)&}&VbBIa)(a?  iPGwAysZAm+qj‹SaI!4jlE4!/͙$_ߏw5#}*/Am$iAYͅdˆz7ި߽Yvwۅ,iƽNj|r+3R!t q1A0?69«z2b̟9]5@C[|17pڲ}f%]mDٛp:!Е{ 9eZ҃{@n%;%?j3mG,;H O9m?`sЍ"݅/# ,< , t`b9_1*h=xEe"uE@̫:_HRjEp# yj{y.^Y@øUӐtw)nj4J$9:{/KĢ*"zWB+W.v}6Bx돍?xS]t$ͺy;.].;H%!.=h$4"($eAd9lSmseOz]cKKЙ%zOjw $;g+6tߢ4&J5,9CP2TuHf%6=>w| k?Bbi(()<<ڦ4?YO2EH #Pv'&"9ܶbno,~ .#7n?jס(ݠ=v/2ȴɒAoR; 堭@Ph:]Iٓo0V/P}&tOxZ*|2 y6.93e֖&^==b Q 0wn+&,.ۘ>t=-I]i#9TF˸k#\XgA趬%cp_ É1ܷ 1[5MZH/n*|0,$mKpc=nd`}l 3 mDH]M`o"<X,{Q-%3c?񠌠l1;Oh0P B/ :(yFcbI䬤H 4zЏYe?=|lS56 }fXhRZgaZfB 6tvv+ &t._sO*hV-9;/<ŪLܖn m? I ƿhϻ_?Xz.g s%ij|%KNTJ.zxFMu%7ѕfPx3XP%ŮmU{g#؊jir1dZQ}EFhTI:mv=.y6R߉U9yً|Ѳ~J)D3:r*UǥFSv MpHuTJJ4&"X s GEo˪EUszՠfrb˓sq?䣄܌ =`<*34o芎E&^BMR!"3v"i4b(:DZbZR4ze=J 5bR|&%gJ#w愰\Ʊү|VD&E_^dR-gU#"}2^*DR]S(fV۾f5wwoqOl5h?CE{H"[L9AnSj.ѳk+l`0=k')h6J?BU!{so>b 5&F0N%3]AQ"`jBᩋ]ƥ} ~?,me!SÉ;[JAdH#e:'oeτ$-g`fENDJgrr2gEAEC<3؆˯6M4m#6>&!C]@ֶ:7@bL &q @wSoZ]Q+`y0hl5K;jBc|2D` NG,j\(lTˋE^bN{ <7|$=j8n-!6,:bQa:0?#F+7,)LOh@S}x ~'f"ˎELc*?JMǛHbEt/uYgCCdbS0MET1b}w[\C1`>QA uˌT>-eOocd!u{<@QX*t+?QVN|47Q6@Ԧy0|Don灖Iys(i8U'n֝F@^Xf1i@%#@@1XW1S5\R@QvQ5*HUPV9f eVT Nb7.6ճ'BV u  hh4-GAEx5( ;pް%LTѐOXQ&ڇ䢁rfejriԃfUY"AciLE.!8_2h$f[#Do)` < ÜZ ).T?YU)@|h wDҽn"4zkLRb=5."# z]"m[(3{? GLYOfXZetY֊i{"6iPHL}W%ڹ\7o4Bnʋ'^7 T\ mSs8HNFmw! }(Q=ciq]l(C)"0_RWF}"k;lC=V]xM}D2*Zv$ҙBZ! .m P UlW<]@*~IENDB`plugins/limit-login-attempts-reloaded/assets/css/images/welcome.png000064400000014203147176754540021611 0ustar00PNG  IHDRF pHYs,K,K=sRGBgAMA aIDATxkluϝcDR-9CƒFDՃRbK@[ @K )a .‰DKv,%bH4p DPD~TmUQ$rwgrvv̝? wvfs=;xϺ }j:}8Ì <r'ohc>عj cY 9>ƴ$K|־a1U9VgO+gq޸Z$x&I~(%Q$w'71RU@ڹzp5oQ^i[(hT8l#ܹr;E!ca6GU- OS؈QV{jl8kqԒ 41usflO]&M\C^hSRN}(ђ㚡O1J~k1 KGE_NI!۶&]v<r!A앨U)@#b}J*2Ȇ#;Wʼnm޼rMHk6we?.5xñkaAbCT֥^rB\+l>$Y8aMӖ5į ȆVOǕw+pO-Pm5A҈G5,_BeQINu_85,U,*'XBZu@ed1W_.kmX#ykn:(_щwJ KlOqū,D狖BJЫ$KЬPA8-p jaԥ't2v$\٬ѷO"E&IJ kdIL$;( 48Գ3sxVBKKR~vmenPՏd^\Λ/bfM"Usa*1N1u(`u=X0cDfi]])loiDSz-8 kQ{e|VQ ^o:>5 EV@ƟmhU ֧,lH O x A9eMG{wl * s"hU v,7 XOxFD+ִL}],O(zAy1cAߡQSZF2}㔛Ŋs "m~8cp=V|,{R# V[O"}:Β5j4gfF;SB"q.$OOԉ!a~}3_2 uI4M=!pk z !UBPtgu{gqu D'{f B"H$F~O_S>Cu.dRmĥn'pDhx+>#=?&@hXT2r Nlbaa &ԏ~uQ?!$ ~~}7,Ï"TA/n鮦?n{:n~L0Y"rìj4cX);{3\Lby!"cڿ?:H \@w: ikJ,Azӈ1]8t"A"`O/e{,*>v1rA Q8r1PWɉ#eFlFwiZc\\7N:NWT3:9clzsd`K,A'ڂ6}cPC.T@sqLv|;J#:DB9EAߴ%WفIw3#0 ^/Nݍ\O"чbs)VȎmVy&7/Ѓel.{pOf0aqe V2Zz>y\֥& ]h(Sm?^YDdc\,%#+c||Nu%A/{K?ZDd&ӣm!vUy Kd5 v_#ՌY\iՋ:Xɗ*.}"K\# ]`,rJg9d;?R:*mCnj V1Sm0ė<˲]S3nh8:H.PJ *Qj EwkFnV>k"lvӟfIQwg0g"k9H^8 =WUۉ#f\#3ژHd4Ftxu*N):m%3SVU}O O7ɷjƉR  z+$aׇOV>zU']ٙS͛=}[2k(^U2 *yNҖøDaMr\VDv *͸G_#;Ai┱ țP+i@r- Q~p ^>"*<|?khL+ =frnVEdOc#)qE\ %*+,; ^;X596x QQqyHRDqG W2ef0|UCDY}*E*~,/^n*|HȚ""wA4g lUD] r&⋯h&q+M$]jC jQ 8D+zmE'%1mH(0";$ v* U64rPQK - 㖕7ʝoFίt'8."::b+ ܉gOnB3b=$"c5~S'z\W1V'q!Eݢ2^xt{VfdbcVgY^P)"(PWm ¦7 `vQ󵆘C&q\mZ,b,Qn*E+b";7jX (Д6uE9g;bOpkCmo7q1JNI=Cߠ[)۶T[L,{r͋lM"2D*e)" ~l Fc+Pzog_/{ݷFɽSB{#}߆,\N2d>zo?1 "T1;JPrI˸#+fG#\QP" X݅rmS "UVNd].ٖm]Јu}rRDi/ #eJg Dtc>"P"nzjv'JTv&NlJqfr' 'Hdڣv+CƩ.ew\yk^hwaa86qd\ө}|pgY\K6UM~^PtreQ9Z+>Y hZkꕙmj5ri-!%,mATjU,Yb=(Q$[+Tu,Ip]V'|PE ]1VF\vDmSŷ T{,p1DkZ}24I~'%dbOR_8'q |{~;-axg;Y}+IO8s>qԤCc(hJM[c4('4^=$j|YΜPjMo:*(w'ğSPO۪̓77#72,lӤ2Ƥ&IF-&}ΜRNB?-oJ8 m&(")Ub9 SŢ:2S K<%6g_p"">Z[5"BI&k l753o99BA -Z`˷D${՝|' <M"\ϦmPrɑ_vr l^%̕㪈 fz} WFwƶCЎ*]s>xU%f 5#F궁M:WS|'3f,ăѦx(=֓$VnE _>NŃS_nGhAyH6E5kw&uaƗ/kCg/_l ";\<݊~zm&_|S3n-&f}` 0eXEv^L`w!+)}a/Ë CHRY=~ zbutton{margin-bottom:4px;margin-left:2px;margin-right:2px}.jconfirm .jconfirm-box .jconfirm-buttons button{display:inline-block;padding:6px 12px;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-radius:4px;min-height:1em;-webkit-transition:opacity .1s ease,background-color .1s ease,color .1s ease,background .1s ease,-webkit-box-shadow .1s ease;transition:opacity .1s ease,background-color .1s ease,color .1s ease,background .1s ease,-webkit-box-shadow .1s ease;transition:opacity .1s ease,background-color .1s ease,color .1s ease,box-shadow .1s ease,background .1s ease;transition:opacity .1s ease,background-color .1s ease,color .1s ease,box-shadow .1s ease,background .1s ease,-webkit-box-shadow .1s ease;-webkit-tap-highlight-color:transparent;border:0;background-image:none}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-blue{background-color:#3498db;color:#FFF;text-shadow:none;-webkit-transition:background .2s;transition:background .2s}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-blue:hover{background-color:#2980b9;color:#FFF}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-green{background-color:#2ecc71;color:#FFF;text-shadow:none;-webkit-transition:background .2s;transition:background .2s}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-green:hover{background-color:#27ae60;color:#FFF}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-red{background-color:#e74c3c;color:#FFF;text-shadow:none;-webkit-transition:background .2s;transition:background .2s}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-red:hover{background-color:#c0392b;color:#FFF}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-orange{background-color:#f1c40f;color:#FFF;text-shadow:none;-webkit-transition:background .2s;transition:background .2s}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-orange:hover{background-color:#f39c12;color:#FFF}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-default{background-color:#ecf0f1;color:#000;text-shadow:none;-webkit-transition:background .2s;transition:background .2s}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-default:hover{background-color:#bdc3c7;color:#000}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-purple{background-color:#9b59b6;color:#FFF;text-shadow:none;-webkit-transition:background .2s;transition:background .2s}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-purple:hover{background-color:#8e44ad;color:#FFF}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-dark{background-color:#34495e;color:#FFF;text-shadow:none;-webkit-transition:background .2s;transition:background .2s}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-dark:hover{background-color:#2c3e50;color:#FFF}.jconfirm .jconfirm-box.jconfirm-type-red .jconfirm-title-c .jconfirm-icon-c{color:#e74c3c!important}.jconfirm .jconfirm-box.jconfirm-type-blue .jconfirm-title-c .jconfirm-icon-c{color:#3498db!important}.jconfirm .jconfirm-box.jconfirm-type-green .jconfirm-title-c .jconfirm-icon-c{color:#2ecc71!important}.jconfirm .jconfirm-box.jconfirm-type-purple .jconfirm-title-c .jconfirm-icon-c{color:#9b59b6!important}.jconfirm .jconfirm-box.jconfirm-type-orange .jconfirm-title-c .jconfirm-icon-c{color:#f1c40f!important}.jconfirm .jconfirm-box.jconfirm-type-dark .jconfirm-title-c .jconfirm-icon-c{color:#34495e!important}.jconfirm .jconfirm-clear{clear:both}.jconfirm.jconfirm-rtl{direction:rtl}.jconfirm.jconfirm-rtl div.jconfirm-closeIcon{left:5px;right:auto}.jconfirm.jconfirm-white .jconfirm-bg,.jconfirm.jconfirm-light .jconfirm-bg{background-color:#444;opacity:.2}.jconfirm.jconfirm-white .jconfirm-box,.jconfirm.jconfirm-light .jconfirm-box{-webkit-box-shadow:0 2px 6px rgba(0,0,0,0.2);box-shadow:0 2px 6px rgba(0,0,0,0.2);border-radius:5px}.jconfirm.jconfirm-white .jconfirm-box .jconfirm-title-c .jconfirm-icon-c,.jconfirm.jconfirm-light .jconfirm-box .jconfirm-title-c .jconfirm-icon-c{margin-right:8px;margin-left:0}.jconfirm.jconfirm-white .jconfirm-box .jconfirm-buttons,.jconfirm.jconfirm-light .jconfirm-box .jconfirm-buttons{float:right}.jconfirm.jconfirm-white .jconfirm-box .jconfirm-buttons button,.jconfirm.jconfirm-light .jconfirm-box .jconfirm-buttons button{text-transform:uppercase;font-size:14px;font-weight:bold;text-shadow:none}.jconfirm.jconfirm-white .jconfirm-box .jconfirm-buttons button.btn-default,.jconfirm.jconfirm-light .jconfirm-box .jconfirm-buttons button.btn-default{-webkit-box-shadow:none;box-shadow:none;color:#333}.jconfirm.jconfirm-white .jconfirm-box .jconfirm-buttons button.btn-default:hover,.jconfirm.jconfirm-light .jconfirm-box .jconfirm-buttons button.btn-default:hover{background:#ddd}.jconfirm.jconfirm-white.jconfirm-rtl .jconfirm-title-c .jconfirm-icon-c,.jconfirm.jconfirm-light.jconfirm-rtl .jconfirm-title-c .jconfirm-icon-c{margin-left:8px;margin-right:0}.jconfirm.jconfirm-black .jconfirm-bg,.jconfirm.jconfirm-dark .jconfirm-bg{background-color:darkslategray;opacity:.4}.jconfirm.jconfirm-black .jconfirm-box,.jconfirm.jconfirm-dark .jconfirm-box{-webkit-box-shadow:0 2px 6px rgba(0,0,0,0.2);box-shadow:0 2px 6px rgba(0,0,0,0.2);background:#444;border-radius:5px;color:white}.jconfirm.jconfirm-black .jconfirm-box .jconfirm-title-c .jconfirm-icon-c,.jconfirm.jconfirm-dark .jconfirm-box .jconfirm-title-c .jconfirm-icon-c{margin-right:8px;margin-left:0}.jconfirm.jconfirm-black .jconfirm-box .jconfirm-buttons,.jconfirm.jconfirm-dark .jconfirm-box .jconfirm-buttons{float:right}.jconfirm.jconfirm-black .jconfirm-box .jconfirm-buttons button,.jconfirm.jconfirm-dark .jconfirm-box .jconfirm-buttons button{border:0;background-image:none;text-transform:uppercase;font-size:14px;font-weight:bold;text-shadow:none;-webkit-transition:background .1s;transition:background .1s;color:white}.jconfirm.jconfirm-black .jconfirm-box .jconfirm-buttons button.btn-default,.jconfirm.jconfirm-dark .jconfirm-box .jconfirm-buttons button.btn-default{-webkit-box-shadow:none;box-shadow:none;color:#fff;background:0}.jconfirm.jconfirm-black .jconfirm-box .jconfirm-buttons button.btn-default:hover,.jconfirm.jconfirm-dark .jconfirm-box .jconfirm-buttons button.btn-default:hover{background:#666}.jconfirm.jconfirm-black.jconfirm-rtl .jconfirm-title-c .jconfirm-icon-c,.jconfirm.jconfirm-dark.jconfirm-rtl .jconfirm-title-c .jconfirm-icon-c{margin-left:8px;margin-right:0}.jconfirm .jconfirm-box.hilight.jconfirm-hilight-shake{-webkit-animation:shake .82s cubic-bezier(0.36,0.07,0.19,0.97) both;animation:shake .82s cubic-bezier(0.36,0.07,0.19,0.97) both;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.jconfirm .jconfirm-box.hilight.jconfirm-hilight-glow{-webkit-animation:glow .82s cubic-bezier(0.36,0.07,0.19,0.97) both;animation:glow .82s cubic-bezier(0.36,0.07,0.19,0.97) both;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}@-webkit-keyframes shake{10%,90%{-webkit-transform:translate3d(-2px,0,0);transform:translate3d(-2px,0,0)}20%,80%{-webkit-transform:translate3d(4px,0,0);transform:translate3d(4px,0,0)}30%,50%,70%{-webkit-transform:translate3d(-8px,0,0);transform:translate3d(-8px,0,0)}40%,60%{-webkit-transform:translate3d(8px,0,0);transform:translate3d(8px,0,0)}}@keyframes shake{10%,90%{-webkit-transform:translate3d(-2px,0,0);transform:translate3d(-2px,0,0)}20%,80%{-webkit-transform:translate3d(4px,0,0);transform:translate3d(4px,0,0)}30%,50%,70%{-webkit-transform:translate3d(-8px,0,0);transform:translate3d(-8px,0,0)}40%,60%{-webkit-transform:translate3d(8px,0,0);transform:translate3d(8px,0,0)}}@-webkit-keyframes glow{0%,100%{-webkit-box-shadow:0 0 0 red;box-shadow:0 0 0 red}50%{-webkit-box-shadow:0 0 30px red;box-shadow:0 0 30px red}}@keyframes glow{0%,100%{-webkit-box-shadow:0 0 0 red;box-shadow:0 0 0 red}50%{-webkit-box-shadow:0 0 30px red;box-shadow:0 0 30px red}}.jconfirm{-webkit-perspective:400px;perspective:400px}.jconfirm .jconfirm-box{opacity:1;-webkit-transition-property:all;transition-property:all}.jconfirm .jconfirm-box.jconfirm-animation-top,.jconfirm .jconfirm-box.jconfirm-animation-left,.jconfirm .jconfirm-box.jconfirm-animation-right,.jconfirm .jconfirm-box.jconfirm-animation-bottom,.jconfirm .jconfirm-box.jconfirm-animation-opacity,.jconfirm .jconfirm-box.jconfirm-animation-zoom,.jconfirm .jconfirm-box.jconfirm-animation-scale,.jconfirm .jconfirm-box.jconfirm-animation-none,.jconfirm .jconfirm-box.jconfirm-animation-rotate,.jconfirm .jconfirm-box.jconfirm-animation-rotatex,.jconfirm .jconfirm-box.jconfirm-animation-rotatey,.jconfirm .jconfirm-box.jconfirm-animation-scaley,.jconfirm .jconfirm-box.jconfirm-animation-scalex{opacity:0}.jconfirm .jconfirm-box.jconfirm-animation-rotate{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.jconfirm .jconfirm-box.jconfirm-animation-rotatex{-webkit-transform:rotateX(90deg);transform:rotateX(90deg);-webkit-transform-origin:center;transform-origin:center}.jconfirm .jconfirm-box.jconfirm-animation-rotatexr{-webkit-transform:rotateX(-90deg);transform:rotateX(-90deg);-webkit-transform-origin:center;transform-origin:center}.jconfirm .jconfirm-box.jconfirm-animation-rotatey{-webkit-transform:rotatey(90deg);transform:rotatey(90deg);-webkit-transform-origin:center;transform-origin:center}.jconfirm .jconfirm-box.jconfirm-animation-rotateyr{-webkit-transform:rotatey(-90deg);transform:rotatey(-90deg);-webkit-transform-origin:center;transform-origin:center}.jconfirm .jconfirm-box.jconfirm-animation-scaley{-webkit-transform:scaley(1.5);transform:scaley(1.5);-webkit-transform-origin:center;transform-origin:center}.jconfirm .jconfirm-box.jconfirm-animation-scalex{-webkit-transform:scalex(1.5);transform:scalex(1.5);-webkit-transform-origin:center;transform-origin:center}.jconfirm .jconfirm-box.jconfirm-animation-top{-webkit-transform:translate(0px,-100px);transform:translate(0px,-100px)}.jconfirm .jconfirm-box.jconfirm-animation-left{-webkit-transform:translate(-100px,0px);transform:translate(-100px,0px)}.jconfirm .jconfirm-box.jconfirm-animation-right{-webkit-transform:translate(100px,0px);transform:translate(100px,0px)}.jconfirm .jconfirm-box.jconfirm-animation-bottom{-webkit-transform:translate(0px,100px);transform:translate(0px,100px)}.jconfirm .jconfirm-box.jconfirm-animation-zoom{-webkit-transform:scale(1.2);transform:scale(1.2)}.jconfirm .jconfirm-box.jconfirm-animation-scale{-webkit-transform:scale(0.5);transform:scale(0.5)}.jconfirm .jconfirm-box.jconfirm-animation-none{visibility:hidden}.jconfirm.jconfirm-supervan .jconfirm-bg{background-color:rgba(54,70,93,0.95)}.jconfirm.jconfirm-supervan .jconfirm-box{background-color:transparent}.jconfirm.jconfirm-supervan .jconfirm-box.jconfirm-type-blue{border:0}.jconfirm.jconfirm-supervan .jconfirm-box.jconfirm-type-green{border:0}.jconfirm.jconfirm-supervan .jconfirm-box.jconfirm-type-red{border:0}.jconfirm.jconfirm-supervan .jconfirm-box.jconfirm-type-orange{border:0}.jconfirm.jconfirm-supervan .jconfirm-box.jconfirm-type-purple{border:0}.jconfirm.jconfirm-supervan .jconfirm-box.jconfirm-type-dark{border:0}.jconfirm.jconfirm-supervan .jconfirm-box div.jconfirm-closeIcon{color:white}.jconfirm.jconfirm-supervan .jconfirm-box div.jconfirm-title-c{text-align:center;color:white;font-size:28px;font-weight:normal}.jconfirm.jconfirm-supervan .jconfirm-box div.jconfirm-title-c>*{padding-bottom:25px}.jconfirm.jconfirm-supervan .jconfirm-box div.jconfirm-title-c .jconfirm-icon-c{margin-right:8px;margin-left:0}.jconfirm.jconfirm-supervan .jconfirm-box div.jconfirm-content-pane{margin-bottom:25px}.jconfirm.jconfirm-supervan .jconfirm-box div.jconfirm-content{text-align:center;color:white}.jconfirm.jconfirm-supervan .jconfirm-box .jconfirm-buttons{text-align:center}.jconfirm.jconfirm-supervan .jconfirm-box .jconfirm-buttons button{font-size:16px;border-radius:2px;background:#303f53;text-shadow:none;border:0;color:white;padding:10px;min-width:100px}.jconfirm.jconfirm-supervan.jconfirm-rtl .jconfirm-box div.jconfirm-title-c .jconfirm-icon-c{margin-left:8px;margin-right:0}.jconfirm.jconfirm-material .jconfirm-bg{background-color:rgba(0,0,0,0.67)}.jconfirm.jconfirm-material .jconfirm-box{background-color:white;-webkit-box-shadow:0 7px 8px -4px rgba(0,0,0,0.2),0 13px 19px 2px rgba(0,0,0,0.14),0 5px 24px 4px rgba(0,0,0,0.12);box-shadow:0 7px 8px -4px rgba(0,0,0,0.2),0 13px 19px 2px rgba(0,0,0,0.14),0 5px 24px 4px rgba(0,0,0,0.12);padding:30px 25px 10px 25px}.jconfirm.jconfirm-material .jconfirm-box .jconfirm-title-c .jconfirm-icon-c{margin-right:8px;margin-left:0}.jconfirm.jconfirm-material .jconfirm-box div.jconfirm-closeIcon{color:rgba(0,0,0,0.87)}.jconfirm.jconfirm-material .jconfirm-box div.jconfirm-title-c{color:rgba(0,0,0,0.87);font-size:22px;font-weight:bold}.jconfirm.jconfirm-material .jconfirm-box div.jconfirm-content{color:rgba(0,0,0,0.87)}.jconfirm.jconfirm-material .jconfirm-box .jconfirm-buttons{text-align:right}.jconfirm.jconfirm-material .jconfirm-box .jconfirm-buttons button{text-transform:uppercase;font-weight:500}.jconfirm.jconfirm-material.jconfirm-rtl .jconfirm-title-c .jconfirm-icon-c{margin-left:8px;margin-right:0}.jconfirm.jconfirm-bootstrap .jconfirm-bg{background-color:rgba(0,0,0,0.21)}.jconfirm.jconfirm-bootstrap .jconfirm-box{background-color:white;-webkit-box-shadow:0 3px 8px 0 rgba(0,0,0,0.2);box-shadow:0 3px 8px 0 rgba(0,0,0,0.2);border:solid 1px rgba(0,0,0,0.4);padding:15px 0 0}.jconfirm.jconfirm-bootstrap .jconfirm-box .jconfirm-title-c .jconfirm-icon-c{margin-right:8px;margin-left:0}.jconfirm.jconfirm-bootstrap .jconfirm-box div.jconfirm-closeIcon{color:rgba(0,0,0,0.87)}.jconfirm.jconfirm-bootstrap .jconfirm-box div.jconfirm-title-c{color:rgba(0,0,0,0.87);font-size:22px;font-weight:bold;padding-left:15px;padding-right:15px}.jconfirm.jconfirm-bootstrap .jconfirm-box div.jconfirm-content{color:rgba(0,0,0,0.87);padding:0 15px}.jconfirm.jconfirm-bootstrap .jconfirm-box .jconfirm-buttons{text-align:right;padding:10px;margin:-5px 0 0;border-top:solid 1px #ddd;overflow:hidden;border-radius:0 0 4px 4px}.jconfirm.jconfirm-bootstrap .jconfirm-box .jconfirm-buttons button{font-weight:500}.jconfirm.jconfirm-bootstrap.jconfirm-rtl .jconfirm-title-c .jconfirm-icon-c{margin-left:8px;margin-right:0}.jconfirm.jconfirm-modern .jconfirm-bg{background-color:slategray;opacity:.6}.jconfirm.jconfirm-modern .jconfirm-box{background-color:white;-webkit-box-shadow:0 7px 8px -4px rgba(0,0,0,0.2),0 13px 19px 2px rgba(0,0,0,0.14),0 5px 24px 4px rgba(0,0,0,0.12);box-shadow:0 7px 8px -4px rgba(0,0,0,0.2),0 13px 19px 2px rgba(0,0,0,0.14),0 5px 24px 4px rgba(0,0,0,0.12);padding:30px 30px 15px}.jconfirm.jconfirm-modern .jconfirm-box div.jconfirm-closeIcon{color:rgba(0,0,0,0.87);top:15px;right:15px}.jconfirm.jconfirm-modern .jconfirm-box div.jconfirm-title-c{color:rgba(0,0,0,0.87);font-size:24px;font-weight:bold;text-align:center;margin-bottom:10px}.jconfirm.jconfirm-modern .jconfirm-box div.jconfirm-title-c .jconfirm-icon-c{-webkit-transition:-webkit-transform .5s;transition:-webkit-transform .5s;transition:transform .5s;transition:transform .5s,-webkit-transform .5s;-webkit-transform:scale(0);transform:scale(0);display:block;margin-right:0;margin-left:0;margin-bottom:10px;font-size:69px;color:#aaa}.jconfirm.jconfirm-modern .jconfirm-box div.jconfirm-content{text-align:center;font-size:15px;color:#777;margin-bottom:25px}.jconfirm.jconfirm-modern .jconfirm-box .jconfirm-buttons{text-align:center}.jconfirm.jconfirm-modern .jconfirm-box .jconfirm-buttons button{font-weight:bold;text-transform:uppercase;-webkit-transition:background .1s;transition:background .1s;padding:10px 20px}.jconfirm.jconfirm-modern .jconfirm-box .jconfirm-buttons button+button{margin-left:4px}.jconfirm.jconfirm-modern.jconfirm-open .jconfirm-box .jconfirm-title-c .jconfirm-icon-c{-webkit-transform:scale(1);transform:scale(1)}plugins/limit-login-attempts-reloaded/assets/css/jquery-ui.css000064400000107270147176754540020656 0ustar00/*! jQuery UI - v1.12.1 - 2016-09-14 * http://jqueryui.com * Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px * Copyright jQuery Foundation and other contributors; Licensed MIT */ /* Layout helpers ----------------------------------*/ .ui-helper-hidden { display: none; } .ui-helper-hidden-accessible { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; } .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } .ui-helper-clearfix:before, .ui-helper-clearfix:after { content: ""; display: table; border-collapse: collapse; } .ui-helper-clearfix:after { clear: both; } .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); /* support: IE8 */ } .ui-front { z-index: 100; } /* Interaction Cues ----------------------------------*/ .ui-state-disabled { cursor: default !important; pointer-events: none; } /* Icons ----------------------------------*/ .ui-icon { display: inline-block; vertical-align: middle; margin-top: -.25em; position: relative; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } .ui-widget-icon-block { left: 50%; margin-left: -8px; display: block; } /* Misc visuals ----------------------------------*/ /* Overlays */ .ui-widget-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; } .ui-accordion .ui-accordion-header { display: block; cursor: pointer; position: relative; margin: 2px 0 0 0; padding: .5em .5em .5em .7em; font-size: 100%; } .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; overflow: auto; } .ui-autocomplete { position: absolute; top: 0; left: 0; cursor: default; } .ui-menu { list-style: none; padding: 0; margin: 0; display: block; outline: 0; } .ui-menu .ui-menu { position: absolute; } .ui-menu .ui-menu-item { margin: 0; cursor: pointer; /* support: IE10, see #8844 */ list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"); } .ui-menu .ui-menu-item-wrapper { position: relative; padding: 3px 1em 3px .4em; } .ui-menu .ui-menu-divider { margin: 5px 0; height: 0; font-size: 0; line-height: 0; border-width: 1px 0 0 0; } .ui-menu .ui-state-focus, .ui-menu .ui-state-active { margin: -1px; } /* icon support */ .ui-menu-icons { position: relative; } .ui-menu-icons .ui-menu-item-wrapper { padding-left: 2em; } /* left-aligned */ .ui-menu .ui-icon { position: absolute; top: 0; bottom: 0; left: .2em; margin: auto 0; } /* right-aligned */ .ui-menu .ui-menu-icon { left: auto; right: 0; } .ui-button { padding: .4em 1em; display: inline-block; position: relative; line-height: normal; margin-right: .1em; cursor: pointer; vertical-align: middle; text-align: center; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; /* Support: IE <= 11 */ overflow: visible; } .ui-button, .ui-button:link, .ui-button:visited, .ui-button:hover, .ui-button:active { text-decoration: none; } /* to make room for the icon, a width needs to be set here */ .ui-button-icon-only { width: 2em; box-sizing: border-box; text-indent: -9999px; white-space: nowrap; } /* no icon support for input elements */ input.ui-button.ui-button-icon-only { text-indent: 0; } /* button icon element(s) */ .ui-button-icon-only .ui-icon { position: absolute; top: 50%; left: 50%; margin-top: -8px; margin-left: -8px; } .ui-button.ui-icon-notext .ui-icon { padding: 0; width: 2.1em; height: 2.1em; text-indent: -9999px; white-space: nowrap; } input.ui-button.ui-icon-notext .ui-icon { width: auto; height: auto; text-indent: 0; white-space: normal; padding: .4em 1em; } /* workarounds */ /* Support: Firefox 5 - 40 */ input.ui-button::-moz-focus-inner, button.ui-button::-moz-focus-inner { border: 0; padding: 0; } .ui-controlgroup { vertical-align: middle; display: inline-block; } .ui-controlgroup > .ui-controlgroup-item { float: left; margin-left: 0; margin-right: 0; } .ui-controlgroup > .ui-controlgroup-item:focus, .ui-controlgroup > .ui-controlgroup-item.ui-visual-focus { z-index: 9999; } .ui-controlgroup-vertical > .ui-controlgroup-item { display: block; float: none; width: 100%; margin-top: 0; margin-bottom: 0; text-align: left; } .ui-controlgroup-vertical .ui-controlgroup-item { box-sizing: border-box; } .ui-controlgroup .ui-controlgroup-label { padding: .4em 1em; } .ui-controlgroup .ui-controlgroup-label span { font-size: 80%; } .ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item { border-left: none; } .ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item { border-top: none; } .ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content { border-right: none; } .ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content { border-bottom: none; } /* Spinner specific style fixes */ .ui-controlgroup-vertical .ui-spinner-input { /* Support: IE8 only, Android < 4.4 only */ width: 75%; width: calc( 100% - 2.4em ); } .ui-controlgroup-vertical .ui-spinner .ui-spinner-up { border-top-style: solid; } .ui-checkboxradio-label .ui-icon-background { box-shadow: inset 1px 1px 1px #ccc; border-radius: .12em; border: none; } .ui-checkboxradio-radio-label .ui-icon-background { width: 16px; height: 16px; border-radius: 1em; overflow: visible; border: none; } .ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon, .ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon { background-image: none; width: 8px; height: 8px; border-width: 4px; border-style: solid; } .ui-checkboxradio-disabled { pointer-events: none; } .ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; } .ui-datepicker .ui-datepicker-header { position: relative; padding: .2em 0; } .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position: absolute; top: 2px; width: 1.8em; height: 1.8em; } .ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; } .ui-datepicker .ui-datepicker-prev { left: 2px; } .ui-datepicker .ui-datepicker-next { right: 2px; } .ui-datepicker .ui-datepicker-prev-hover { left: 1px; } .ui-datepicker .ui-datepicker-next-hover { right: 1px; } .ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } .ui-datepicker .ui-datepicker-title select { font-size: 1em; margin: 1px 0; } .ui-datepicker select.ui-datepicker-month, .ui-datepicker select.ui-datepicker-year { width: 45%; } .ui-datepicker table { width: 100%; font-size: .9em; border-collapse: collapse; margin: 0 0 .4em; } .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } .ui-datepicker td { border: 0; padding: 1px; } .ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding: 0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width: auto; overflow: visible; } .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float: left; } /* with multiple calendars */ .ui-datepicker.ui-datepicker-multi { width: auto; } .ui-datepicker-multi .ui-datepicker-group { float: left; } .ui-datepicker-multi .ui-datepicker-group table { width: 95%; margin: 0 auto .4em; } .ui-datepicker-multi-2 .ui-datepicker-group { width: 50%; } .ui-datepicker-multi-3 .ui-datepicker-group { width: 33.3%; } .ui-datepicker-multi-4 .ui-datepicker-group { width: 25%; } .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header, .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width: 0; } .ui-datepicker-multi .ui-datepicker-buttonpane { clear: left; } .ui-datepicker-row-break { clear: both; width: 100%; font-size: 0; } /* RTL support */ .ui-datepicker-rtl { direction: rtl; } .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } .ui-datepicker-rtl .ui-datepicker-buttonpane { clear: right; } .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current, .ui-datepicker-rtl .ui-datepicker-group { float: right; } .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header, .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width: 0; border-left-width: 1px; } /* Icons */ .ui-datepicker .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; left: .5em; top: .3em; } .ui-dialog { position: absolute; top: 0; left: 0; padding: .2em; outline: 0; } .ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; } .ui-dialog .ui-dialog-title { float: left; margin: .1em 0; white-space: nowrap; width: 90%; overflow: hidden; text-overflow: ellipsis; } .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 20px; margin: -10px 0 0 0; padding: 1px; height: 20px; } .ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; } .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin-top: .5em; padding: .3em 1em .5em .4em; } .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; } .ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; } .ui-dialog .ui-resizable-n { height: 2px; top: 0; } .ui-dialog .ui-resizable-e { width: 2px; right: 0; } .ui-dialog .ui-resizable-s { height: 2px; bottom: 0; } .ui-dialog .ui-resizable-w { width: 2px; left: 0; } .ui-dialog .ui-resizable-se, .ui-dialog .ui-resizable-sw, .ui-dialog .ui-resizable-ne, .ui-dialog .ui-resizable-nw { width: 7px; height: 7px; } .ui-dialog .ui-resizable-se { right: 0; bottom: 0; } .ui-dialog .ui-resizable-sw { left: 0; bottom: 0; } .ui-dialog .ui-resizable-ne { right: 0; top: 0; } .ui-dialog .ui-resizable-nw { left: 0; top: 0; } .ui-draggable .ui-dialog-titlebar { cursor: move; } .ui-draggable-handle { -ms-touch-action: none; touch-action: none; } .ui-resizable { position: relative; } .ui-resizable-handle { position: absolute; font-size: 0.1px; display: block; -ms-touch-action: none; touch-action: none; } .ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; } .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; } .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; } .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; } .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px; } .ui-progressbar { height: 2em; text-align: left; overflow: hidden; } .ui-progressbar .ui-progressbar-value { margin: -1px; height: 100%; } .ui-progressbar .ui-progressbar-overlay { background: url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw=="); height: 100%; filter: alpha(opacity=25); /* support: IE8 */ opacity: 0.25; } .ui-progressbar-indeterminate .ui-progressbar-value { background-image: none; } .ui-selectable { -ms-touch-action: none; touch-action: none; } .ui-selectable-helper { position: absolute; z-index: 100; border: 1px dotted black; } .ui-selectmenu-menu { padding: 0; margin: 0; position: absolute; top: 0; left: 0; display: none; } .ui-selectmenu-menu .ui-menu { overflow: auto; overflow-x: hidden; padding-bottom: 1px; } .ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup { font-size: 1em; font-weight: bold; line-height: 1.5; padding: 2px 0.4em; margin: 0.5em 0 0 0; height: auto; border: 0; } .ui-selectmenu-open { display: block; } .ui-selectmenu-text { display: block; margin-right: 20px; overflow: hidden; text-overflow: ellipsis; } .ui-selectmenu-button.ui-button { text-align: left; white-space: nowrap; width: 14em; } .ui-selectmenu-icon.ui-icon { float: right; margin-top: 0; } .ui-slider { position: relative; text-align: left; } .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; -ms-touch-action: none; touch-action: none; } .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; } /* support: IE8 - See #6727 */ .ui-slider.ui-state-disabled .ui-slider-handle, .ui-slider.ui-state-disabled .ui-slider-range { filter: inherit; } .ui-slider-horizontal { height: .8em; } .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } .ui-slider-horizontal .ui-slider-range-min { left: 0; } .ui-slider-horizontal .ui-slider-range-max { right: 0; } .ui-slider-vertical { width: .8em; height: 100px; } .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } .ui-slider-vertical .ui-slider-range-min { bottom: 0; } .ui-slider-vertical .ui-slider-range-max { top: 0; } .ui-sortable-handle { -ms-touch-action: none; touch-action: none; } .ui-spinner { position: relative; display: inline-block; overflow: hidden; padding: 0; vertical-align: middle; } .ui-spinner-input { border: none; background: none; color: inherit; padding: .222em 0; margin: .2em 0; vertical-align: middle; margin-left: .4em; margin-right: 2em; } .ui-spinner-button { width: 1.6em; height: 50%; font-size: .5em; padding: 0; margin: 0; text-align: center; position: absolute; cursor: default; display: block; overflow: hidden; right: 0; } /* more specificity required here to override default borders */ .ui-spinner a.ui-spinner-button { border-top-style: none; border-bottom-style: none; border-right-style: none; } .ui-spinner-up { top: 0; } .ui-spinner-down { bottom: 0; } .ui-tabs { position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ padding: .2em; } .ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; } .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 0; margin: 1px .2em 0 0; border-bottom-width: 0; padding: 0; white-space: nowrap; } .ui-tabs .ui-tabs-nav .ui-tabs-anchor { float: left; padding: .5em 1em; text-decoration: none; } .ui-tabs .ui-tabs-nav li.ui-tabs-active { margin-bottom: -1px; padding-bottom: 1px; } .ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor, .ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor, .ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor { cursor: text; } .ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor { cursor: pointer; } .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; } .ui-tooltip { padding: 8px; position: absolute; z-index: 9999; max-width: 300px; } body .ui-tooltip { border-width: 2px; } /* Component containers ----------------------------------*/ .ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; } .ui-widget .ui-widget { font-size: 1em; } .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; } .ui-widget.ui-widget-content { border: 1px solid #d3d3d3; } .ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff; color: #222222; } .ui-widget-content a { color: #222222; } .ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url("images/ui-bg_highlight-soft_75_cccccc_1x100.png") 50% 50% repeat-x; color: #222222; font-weight: bold; } .ui-widget-header a { color: #222222; } /* Interaction states ----------------------------------*/ .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default, .ui-button, /* We use html here because we need a greater specificity to make sure disabled works properly when clicked or hovered */ html .ui-button.ui-state-disabled:hover, html .ui-button.ui-state-disabled:active { border: 1px solid #d3d3d3; background: #e6e6e6 url("images/ui-bg_glass_75_e6e6e6_1x400.png") 50% 50% repeat-x; font-weight: normal; color: #555555; } .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited, a.ui-button, a:link.ui-button, a:visited.ui-button, .ui-button { color: #555555; text-decoration: none; } .ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus, .ui-button:hover, .ui-button:focus { border: 1px solid #999999; background: #dadada url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x; font-weight: normal; color: #212121; } .ui-state-hover a, .ui-state-hover a:hover, .ui-state-hover a:link, .ui-state-hover a:visited, .ui-state-focus a, .ui-state-focus a:hover, .ui-state-focus a:link, .ui-state-focus a:visited, a.ui-button:hover, a.ui-button:focus { color: #212121; text-decoration: none; } .ui-visual-focus { box-shadow: 0 0 3px 1px rgb(94, 158, 214); } .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active, a.ui-button:active, .ui-button:active, .ui-button.ui-state-active:hover { border: 1px solid #aaaaaa; background: #ffffff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x; font-weight: normal; color: #212121; } .ui-icon-background, .ui-state-active .ui-icon-background { border: #aaaaaa; background-color: #212121; } .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; } /* Interaction Cues ----------------------------------*/ .ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight { border: 1px solid #fcefa1; background: #fbf9ee url("images/ui-bg_glass_55_fbf9ee_1x400.png") 50% 50% repeat-x; color: #363636; } .ui-state-checked { border: 1px solid #fcefa1; background: #fbf9ee; } .ui-state-highlight a, .ui-widget-content .ui-state-highlight a, .ui-widget-header .ui-state-highlight a { color: #363636; } .ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error { border: 1px solid #cd0a0a; background: #fef1ec url("images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x; color: #cd0a0a; } .ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; } .ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; } .ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } .ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); /* support: IE8 */ font-weight: normal; } .ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); /* support: IE8 */ background-image: none; } .ui-state-disabled .ui-icon { filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */ } /* Icons ----------------------------------*/ /* states and images */ .ui-icon { width: 16px; height: 16px; } .ui-icon, .ui-widget-content .ui-icon { background-image: url("images/ui-icons_222222_256x240.png"); } .ui-widget-header .ui-icon { background-image: url("images/ui-icons_222222_256x240.png"); } .ui-state-hover .ui-icon, .ui-state-focus .ui-icon, .ui-button:hover .ui-icon, .ui-button:focus .ui-icon { background-image: url("images/ui-icons_454545_256x240.png"); } .ui-state-active .ui-icon, .ui-button:active .ui-icon { background-image: url("images/ui-icons_454545_256x240.png"); } .ui-state-highlight .ui-icon, .ui-button .ui-state-highlight.ui-icon { background-image: url("images/ui-icons_2e83ff_256x240.png"); } .ui-state-error .ui-icon, .ui-state-error-text .ui-icon { background-image: url("images/ui-icons_cd0a0a_256x240.png"); } .ui-button .ui-icon { background-image: url("images/ui-icons_888888_256x240.png"); } /* positioning */ .ui-icon-blank { background-position: 16px 16px; } .ui-icon-caret-1-n { background-position: 0 0; } .ui-icon-caret-1-ne { background-position: -16px 0; } .ui-icon-caret-1-e { background-position: -32px 0; } .ui-icon-caret-1-se { background-position: -48px 0; } .ui-icon-caret-1-s { background-position: -65px 0; } .ui-icon-caret-1-sw { background-position: -80px 0; } .ui-icon-caret-1-w { background-position: -96px 0; } .ui-icon-caret-1-nw { background-position: -112px 0; } .ui-icon-caret-2-n-s { background-position: -128px 0; } .ui-icon-caret-2-e-w { background-position: -144px 0; } .ui-icon-triangle-1-n { background-position: 0 -16px; } .ui-icon-triangle-1-ne { background-position: -16px -16px; } .ui-icon-triangle-1-e { background-position: -32px -16px; } .ui-icon-triangle-1-se { background-position: -48px -16px; } .ui-icon-triangle-1-s { background-position: -65px -16px; } .ui-icon-triangle-1-sw { background-position: -80px -16px; } .ui-icon-triangle-1-w { background-position: -96px -16px; } .ui-icon-triangle-1-nw { background-position: -112px -16px; } .ui-icon-triangle-2-n-s { background-position: -128px -16px; } .ui-icon-triangle-2-e-w { background-position: -144px -16px; } .ui-icon-arrow-1-n { background-position: 0 -32px; } .ui-icon-arrow-1-ne { background-position: -16px -32px; } .ui-icon-arrow-1-e { background-position: -32px -32px; } .ui-icon-arrow-1-se { background-position: -48px -32px; } .ui-icon-arrow-1-s { background-position: -65px -32px; } .ui-icon-arrow-1-sw { background-position: -80px -32px; } .ui-icon-arrow-1-w { background-position: -96px -32px; } .ui-icon-arrow-1-nw { background-position: -112px -32px; } .ui-icon-arrow-2-n-s { background-position: -128px -32px; } .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } .ui-icon-arrow-2-e-w { background-position: -160px -32px; } .ui-icon-arrow-2-se-nw { background-position: -176px -32px; } .ui-icon-arrowstop-1-n { background-position: -192px -32px; } .ui-icon-arrowstop-1-e { background-position: -208px -32px; } .ui-icon-arrowstop-1-s { background-position: -224px -32px; } .ui-icon-arrowstop-1-w { background-position: -240px -32px; } .ui-icon-arrowthick-1-n { background-position: 1px -48px; } .ui-icon-arrowthick-1-ne { background-position: -16px -48px; } .ui-icon-arrowthick-1-e { background-position: -32px -48px; } .ui-icon-arrowthick-1-se { background-position: -48px -48px; } .ui-icon-arrowthick-1-s { background-position: -64px -48px; } .ui-icon-arrowthick-1-sw { background-position: -80px -48px; } .ui-icon-arrowthick-1-w { background-position: -96px -48px; } .ui-icon-arrowthick-1-nw { background-position: -112px -48px; } .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } .ui-icon-arrowreturn-1-w { background-position: -64px -64px; } .ui-icon-arrowreturn-1-n { background-position: -80px -64px; } .ui-icon-arrowreturn-1-e { background-position: -96px -64px; } .ui-icon-arrowreturn-1-s { background-position: -112px -64px; } .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } .ui-icon-arrow-4 { background-position: 0 -80px; } .ui-icon-arrow-4-diag { background-position: -16px -80px; } .ui-icon-extlink { background-position: -32px -80px; } .ui-icon-newwin { background-position: -48px -80px; } .ui-icon-refresh { background-position: -64px -80px; } .ui-icon-shuffle { background-position: -80px -80px; } .ui-icon-transfer-e-w { background-position: -96px -80px; } .ui-icon-transferthick-e-w { background-position: -112px -80px; } .ui-icon-folder-collapsed { background-position: 0 -96px; } .ui-icon-folder-open { background-position: -16px -96px; } .ui-icon-document { background-position: -32px -96px; } .ui-icon-document-b { background-position: -48px -96px; } .ui-icon-note { background-position: -64px -96px; } .ui-icon-mail-closed { background-position: -80px -96px; } .ui-icon-mail-open { background-position: -96px -96px; } .ui-icon-suitcase { background-position: -112px -96px; } .ui-icon-comment { background-position: -128px -96px; } .ui-icon-person { background-position: -144px -96px; } .ui-icon-print { background-position: -160px -96px; } .ui-icon-trash { background-position: -176px -96px; } .ui-icon-locked { background-position: -192px -96px; } .ui-icon-unlocked { background-position: -208px -96px; } .ui-icon-bookmark { background-position: -224px -96px; } .ui-icon-tag { background-position: -240px -96px; } .ui-icon-home { background-position: 0 -112px; } .ui-icon-flag { background-position: -16px -112px; } .ui-icon-calendar { background-position: -32px -112px; } .ui-icon-cart { background-position: -48px -112px; } .ui-icon-pencil { background-position: -64px -112px; } .ui-icon-clock { background-position: -80px -112px; } .ui-icon-disk { background-position: -96px -112px; } .ui-icon-calculator { background-position: -112px -112px; } .ui-icon-zoomin { background-position: -128px -112px; } .ui-icon-zoomout { background-position: -144px -112px; } .ui-icon-search { background-position: -160px -112px; } .ui-icon-wrench { background-position: -176px -112px; } .ui-icon-gear { background-position: -192px -112px; } .ui-icon-heart { background-position: -208px -112px; } .ui-icon-star { background-position: -224px -112px; } .ui-icon-link { background-position: -240px -112px; } .ui-icon-cancel { background-position: 0 -128px; } .ui-icon-plus { background-position: -16px -128px; } .ui-icon-plusthick { background-position: -32px -128px; } .ui-icon-minus { background-position: -48px -128px; } .ui-icon-minusthick { background-position: -64px -128px; } .ui-icon-close { background-position: -80px -128px; } .ui-icon-closethick { background-position: -96px -128px; } .ui-icon-key { background-position: -112px -128px; } .ui-icon-lightbulb { background-position: -128px -128px; } .ui-icon-scissors { background-position: -144px -128px; } .ui-icon-clipboard { background-position: -160px -128px; } .ui-icon-copy { background-position: -176px -128px; } .ui-icon-contact { background-position: -192px -128px; } .ui-icon-image { background-position: -208px -128px; } .ui-icon-video { background-position: -224px -128px; } .ui-icon-script { background-position: -240px -128px; } .ui-icon-alert { background-position: 0 -144px; } .ui-icon-info { background-position: -16px -144px; } .ui-icon-notice { background-position: -32px -144px; } .ui-icon-help { background-position: -48px -144px; } .ui-icon-check { background-position: -64px -144px; } .ui-icon-bullet { background-position: -80px -144px; } .ui-icon-radio-on { background-position: -96px -144px; } .ui-icon-radio-off { background-position: -112px -144px; } .ui-icon-pin-w { background-position: -128px -144px; } .ui-icon-pin-s { background-position: -144px -144px; } .ui-icon-play { background-position: 0 -160px; } .ui-icon-pause { background-position: -16px -160px; } .ui-icon-seek-next { background-position: -32px -160px; } .ui-icon-seek-prev { background-position: -48px -160px; } .ui-icon-seek-end { background-position: -64px -160px; } .ui-icon-seek-start { background-position: -80px -160px; } /* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ .ui-icon-seek-first { background-position: -80px -160px; } .ui-icon-stop { background-position: -96px -160px; } .ui-icon-eject { background-position: -112px -160px; } .ui-icon-volume-off { background-position: -128px -160px; } .ui-icon-volume-on { background-position: -144px -160px; } .ui-icon-power { background-position: 0 -176px; } .ui-icon-signal-diag { background-position: -16px -176px; } .ui-icon-signal { background-position: -32px -176px; } .ui-icon-battery-0 { background-position: -48px -176px; } .ui-icon-battery-1 { background-position: -64px -176px; } .ui-icon-battery-2 { background-position: -80px -176px; } .ui-icon-battery-3 { background-position: -96px -176px; } .ui-icon-circle-plus { background-position: 0 -192px; } .ui-icon-circle-minus { background-position: -16px -192px; } .ui-icon-circle-close { background-position: -32px -192px; } .ui-icon-circle-triangle-e { background-position: -48px -192px; } .ui-icon-circle-triangle-s { background-position: -64px -192px; } .ui-icon-circle-triangle-w { background-position: -80px -192px; } .ui-icon-circle-triangle-n { background-position: -96px -192px; } .ui-icon-circle-arrow-e { background-position: -112px -192px; } .ui-icon-circle-arrow-s { background-position: -128px -192px; } .ui-icon-circle-arrow-w { background-position: -144px -192px; } .ui-icon-circle-arrow-n { background-position: -160px -192px; } .ui-icon-circle-zoomin { background-position: -176px -192px; } .ui-icon-circle-zoomout { background-position: -192px -192px; } .ui-icon-circle-check { background-position: -208px -192px; } .ui-icon-circlesmall-plus { background-position: 0 -208px; } .ui-icon-circlesmall-minus { background-position: -16px -208px; } .ui-icon-circlesmall-close { background-position: -32px -208px; } .ui-icon-squaresmall-plus { background-position: -48px -208px; } .ui-icon-squaresmall-minus { background-position: -64px -208px; } .ui-icon-squaresmall-close { background-position: -80px -208px; } .ui-icon-grip-dotted-vertical { background-position: 0 -224px; } .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } .ui-icon-grip-solid-vertical { background-position: -32px -224px; } .ui-icon-grip-solid-horizontal { background-position: -48px -224px; } .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } .ui-icon-grip-diagonal-se { background-position: -80px -224px; } /* Misc visuals ----------------------------------*/ /* Corner radius */ .ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { border-top-left-radius: 4px; } .ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { border-top-right-radius: 4px; } .ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { border-bottom-left-radius: 4px; } .ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { border-bottom-right-radius: 4px; } /* Overlays */ .ui-widget-overlay { background: #aaaaaa; opacity: .3; filter: Alpha(Opacity=30); /* support: IE8 */ } .ui-widget-shadow { -webkit-box-shadow: -8px -8px 8px #aaaaaa; box-shadow: -8px -8px 8px #aaaaaa; } plugins/limit-login-attempts-reloaded/assets/css/limit-login-attempts.css000064400000637101147176754540023010 0ustar00@charset "UTF-8"; @import "../css/fonts/stylesheet.css"; .llar_hint_tooltip, #llar-admin-dashboard-widgets .llar-widget .section-title__new .llar-label .hint_tooltip, .toplevel_page_limit-login-attempts .hint_tooltip { display: none; position: absolute; background-color: #4ACAD8; color: white; padding: 12px 20px; width: 180px; border-radius: 20px; top: 26px; right: -20px; z-index: 955; } .llar_hint_tooltip-content, #llar-admin-dashboard-widgets .llar-widget .section-title__new .llar-label .hint_tooltip-content, .toplevel_page_limit-login-attempts .hint_tooltip-content { font-size: 12px; white-space: initial; text-align: left; margin-top: 0; margin-bottom: 0; } .llar_hint_tooltip::before, #llar-admin-dashboard-widgets .llar-widget .section-title__new .llar-label .hint_tooltip::before, .toplevel_page_limit-login-attempts .hint_tooltip::before { content: ""; position: absolute; top: -12px; right: 12%; border-width: 6px; border-style: solid; border-color: transparent transparent #4ACAD8 transparent; } .llar_hint_tooltip-parent, #llar-admin-dashboard-widgets .llar-widget .section-title__new .llar-label .hint_tooltip-parent, .toplevel_page_limit-login-attempts .hint_tooltip-parent { position: relative; } .llar_hint_tooltip-parent:hover .hint_tooltip, #llar-admin-dashboard-widgets .llar-widget .section-title__new .llar-label .hint_tooltip-parent:hover .hint_tooltip, .toplevel_page_limit-login-attempts .hint_tooltip-parent:hover .hint_tooltip { display: block; } .toplevel_page_limit-login-attempts * { margin: 0; padding: 0; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } .toplevel_page_limit-login-attempts .p-0 { padding: 0 !important; } .toplevel_page_limit-login-attempts .pt-0_5 { padding-top: 8px !important; } .toplevel_page_limit-login-attempts .pt-1_5 { padding-top: 24px !important; } .toplevel_page_limit-login-attempts .mt-0_5 { margin-top: 8px !important; } .toplevel_page_limit-login-attempts .mt-1_5 { margin-top: 24px !important; } .toplevel_page_limit-login-attempts .mx-0_5 { margin-left: 8px !important; margin-right: 8px !important; } .toplevel_page_limit-login-attempts .button_micro_cloud { cursor: pointer; } .link__style_unlink, .llar-label, .link__style_color_inherit { text-decoration: none; color: inherit; position: relative; } .link__style_unlink:hover, .llar-label:hover, .link__style_color_inherit:hover { color: inherit; } .link__style_color_inherit { text-decoration: none; border-bottom: 1px solid currentColor; } .no_href_link { cursor: default; } .llar_typography-secondary { color: #666D84; } .llar_orange { color: #FF7C06; } .llar_orange:hover { color: #F07200; } .llar_turquoise, #llar-setting-page-logs .description-page .description-secondary a.unlink, #llar-setting-page-logs__active .description-page .description-secondary a.unlink, #llar-setting-page .llar-settings-wrap .llar-form-table tr td a.unlink, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td a.unlink, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td a.unlink, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td a.unlink, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td a.unlink, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td a.unlink { color: #4ACAD8; } a.llar_turquoise, #llar-setting-page-logs .description-page .description-secondary a.unlink, #llar-setting-page-logs__active .description-page .description-secondary a.unlink, #llar-setting-page .llar-settings-wrap .llar-form-table tr td a.unlink, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td a.unlink, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td a.unlink, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td a.unlink, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td a.unlink, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td a.unlink { text-decoration: none; } a.llar_turquoise:hover, #llar-setting-page-logs .description-page .description-secondary a.unlink:hover, #llar-setting-page-logs__active .description-page .description-secondary a.unlink:hover, #llar-setting-page .llar-settings-wrap .llar-form-table tr td a.unlink:hover, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td a.unlink:hover, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td a.unlink:hover, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td a.unlink:hover, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td a.unlink:hover, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td a.unlink:hover { text-decoration: none; color: #4ACAD8; border-bottom: 1px solid currentColor; } .llar-label { border-radius: 8px; background-color: rgba(74, 202, 216, 0.0980392157); padding: 0.125rem 1.125rem; } .llar_bold { font-weight: bold; } .llar-display-none { display: none !important; } .llar-display-block { display: block !important; } .llar-visibility { visibility: visible !important; } .llar-hidden { visibility: hidden !important; } .mx-auto { margin-left: auto; margin-right: auto; } .llar-disabled { cursor: default !important; pointer-events: none; } .dashicons-secondary, #llar-dashboard-page .section-title__new .llar-label .dashicons, #llar-setting-page .llar-settings-wrap .llar-form-table tr th .dashicons, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr th .dashicons, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr th .dashicons, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr th .dashicons, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr th .dashicons, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr th .dashicons { margin-left: 8px; font-size: 170%; line-height: inherit; position: relative; z-index: 1; color: #E8E9EC; width: 15px; height: 15px; border-radius: 20px; vertical-align: middle; background: #666D84; } @media screen and (max-width: 767.5px) { .dashicons-secondary, #llar-dashboard-page .section-title__new .llar-label .dashicons, #llar-setting-page .llar-settings-wrap .llar-form-table tr th .dashicons, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr th .dashicons, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr th .dashicons, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr th .dashicons, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr th .dashicons, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr th .dashicons { font-size: 1.4rem; } } .dashicons-secondary:before, #llar-dashboard-page .section-title__new .llar-label .dashicons:before, #llar-setting-page .llar-settings-wrap .llar-form-table tr th .dashicons:before, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr th .dashicons:before, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr th .dashicons:before, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr th .dashicons:before, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr th .dashicons:before, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr th .dashicons:before { position: absolute; top: 50%; left: 50%; font-size: inherit; font-weight: inherit; line-height: inherit; transform: translate(-50%, -50%); } .llar-auto-update-notice { display: block !important; } .llar_input_border, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .input_border, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-key .input_border, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-email .input_border, #llar-setting-page-logs__active.limit-login-app-dashboard .llar-block-country-section .llar-block-country-mode select.input_border, #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td input.input_border, #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td select.input_border, #llar-setting-page .llar-settings-wrap .llar-form-table tr td .textarea_border, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .textarea_border, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .textarea_border, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .textarea_border, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .textarea_border, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .textarea_border, #llar-setting-page .llar-settings-wrap .llar-form-table tr td .input_border, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .input_border, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .input_border, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .input_border, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .input_border, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .input_border { font-family: inherit; font-size: 16px; line-height: inherit; padding: 6px 8px 6px 16px; color: #4ACAD8; border-radius: 16px; border: 1px solid #4ACAD8; width: fit-content; } @media screen and (max-width: 1599.5px) { .llar_input_border, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .input_border, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-key .input_border, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-email .input_border, #llar-setting-page-logs__active.limit-login-app-dashboard .llar-block-country-section .llar-block-country-mode select.input_border, #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td input.input_border, #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td select.input_border, #llar-setting-page .llar-settings-wrap .llar-form-table tr td .textarea_border, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .textarea_border, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .textarea_border, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .textarea_border, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .textarea_border, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .textarea_border, #llar-setting-page .llar-settings-wrap .llar-form-table tr td .input_border, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .input_border, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .input_border, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .input_border, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .input_border, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .input_border { padding: 6px 8px 6px 12px; font-size: 14px; } } .llar_input_border:focus, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .input_border:focus, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-key .input_border:focus, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-email .input_border:focus, #llar-setting-page-logs__active.limit-login-app-dashboard .llar-block-country-section .llar-block-country-mode select.input_border:focus, #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td input.input_border:focus, #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td select.input_border:focus, #llar-setting-page .llar-settings-wrap .llar-form-table tr td .textarea_border:focus, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .textarea_border:focus, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .textarea_border:focus, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .textarea_border:focus, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .textarea_border:focus, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .textarea_border:focus, #llar-setting-page .llar-settings-wrap .llar-form-table tr td .input_border:focus, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .input_border:focus, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .input_border:focus, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .input_border:focus, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .input_border:focus, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .input_border:focus { box-shadow: unset; outline: none; } .llar_input_border::placeholder, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .input_border::placeholder, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-key .input_border::placeholder, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-email .input_border::placeholder, #llar-setting-page-logs__active.limit-login-app-dashboard .llar-block-country-section .llar-block-country-mode select.input_border::placeholder, #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td input.input_border::placeholder, #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td select.input_border::placeholder, #llar-setting-page .llar-settings-wrap .llar-form-table tr td .textarea_border::placeholder, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .textarea_border::placeholder, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .textarea_border::placeholder, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .textarea_border::placeholder, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .textarea_border::placeholder, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .textarea_border::placeholder, #llar-setting-page .llar-settings-wrap .llar-form-table tr td .input_border::placeholder, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .input_border::placeholder, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .input_border::placeholder, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .input_border::placeholder, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .input_border::placeholder, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .input_border::placeholder { color: inherit; opacity: 0.5; } .llar_input_checkbox, .toplevel_page_limit-login-attempts input[type=checkbox], #llar-setting-page-logs__active.limit-login-app-dashboard .llar-block-country-section .llar-block-country-list.llar-all-countries-selected .llar-country input[type=checkbox], #llar-setting-page .llar-settings-wrap .llar-form-table tr td input[type=checkbox], #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td input[type=checkbox], #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td input[type=checkbox], #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td input[type=checkbox], #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td input[type=checkbox], #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td input[type=checkbox] { background-color: #FDFDFD; border: 1.5px solid #ABBFC1; box-sizing: content-box; margin: -0.25rem 0.25rem 0 0; } .llar_input_checkbox:checked, .toplevel_page_limit-login-attempts input[type=checkbox]:checked, #llar-setting-page-logs__active.limit-login-app-dashboard .llar-block-country-section .llar-block-country-list.llar-all-countries-selected .llar-country input[type=checkbox]:checked, #llar-setting-page .llar-settings-wrap .llar-form-table tr td input[type=checkbox]:checked, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td input[type=checkbox]:checked, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td input[type=checkbox]:checked, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td input[type=checkbox]:checked, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td input[type=checkbox]:checked, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td input[type=checkbox]:checked { background-color: #FF7C06; border: 1.5px solid #FF7C06; } .llar_input_checkbox:checked::before, .toplevel_page_limit-login-attempts input[type=checkbox]:checked::before, #llar-setting-page-logs__active.limit-login-app-dashboard .llar-block-country-section .llar-block-country-list.llar-all-countries-selected .llar-country input[type=checkbox]:checked::before, #llar-setting-page .llar-settings-wrap .llar-form-table tr td input[type=checkbox]:checked::before, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td input[type=checkbox]:checked::before, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td input[type=checkbox]:checked::before, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td input[type=checkbox]:checked::before, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td input[type=checkbox]:checked::before, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td input[type=checkbox]:checked::before { content: "✔"; font-size: 14px; line-height: 1.1; width: 100%; height: 100%; margin: 0; color: #FDFDFD; } .llar_input_checkbox:focus, .toplevel_page_limit-login-attempts input[type=checkbox]:focus, #llar-setting-page-logs__active.limit-login-app-dashboard .llar-block-country-section .llar-block-country-list.llar-all-countries-selected .llar-country input[type=checkbox]:focus, #llar-setting-page .llar-settings-wrap .llar-form-table tr td input[type=checkbox]:focus, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td input[type=checkbox]:focus, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td input[type=checkbox]:focus, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td input[type=checkbox]:focus, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td input[type=checkbox]:focus, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td input[type=checkbox]:focus { box-shadow: unset; } ul.llar_list, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content ul.field-list, #llar-dashboard-page ul, ul.llar_hint_tooltip-content, #llar-admin-dashboard-widgets .llar-widget .section-title__new .llar-label ul.hint_tooltip-content, .toplevel_page_limit-login-attempts ul.hint_tooltip-content { list-style: none; } ul.llar_list li, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content ul.field-list li, #llar-dashboard-page ul li, ul.llar_hint_tooltip-content li, #llar-admin-dashboard-widgets .llar-widget .section-title__new .llar-label ul.hint_tooltip-content li, .toplevel_page_limit-login-attempts ul.hint_tooltip-content li { position: relative; list-style: none; font-size: 12px; white-space: initial; } ul.llar_list li::before, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content ul.field-list li::before, #llar-dashboard-page ul li::before, ul.llar_hint_tooltip-content li::before, #llar-admin-dashboard-widgets .llar-widget .section-title__new .llar-label ul.hint_tooltip-content li::before, .toplevel_page_limit-login-attempts ul.hint_tooltip-content li::before { position: absolute; box-sizing: inherit; content: "✧"; color: #FDFDFD; margin-left: -18px; top: 50%; transform: translateY(-50%); } button.llar_button, #llar-setting-page button.button, .llar_button, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button, #llar-setting-page .button, #llar-setting-page-logs .button, #llar-setting-page-logs__active .button, #llar-setting-page-debug .button, #llar-setting-page-premium .button, #llar-setting-page-help .button { font-family: inherit; background: #FDFDFD; border: 1px solid #2A2F40; cursor: pointer; white-space: nowrap; vertical-align: baseline; } button.llar_button.menu__item, #llar-setting-page button.menu__item.button, .llar_button.menu__item, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .menu__item.button, #llar-setting-page .menu__item.button, #llar-setting-page-logs .menu__item.button, #llar-setting-page-logs__active .menu__item.button, #llar-setting-page-debug .menu__item.button, #llar-setting-page-premium .menu__item.button, #llar-setting-page-help .menu__item.button { border-radius: 10px; font-size: 16px; line-height: 1.45; padding: 6px 18px; text-align: center; } @media screen and (max-width: 1599.5px) { button.llar_button.menu__item, #llar-setting-page button.menu__item.button, .llar_button.menu__item, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .menu__item.button, #llar-setting-page .menu__item.button, #llar-setting-page-logs .menu__item.button, #llar-setting-page-logs__active .menu__item.button, #llar-setting-page-debug .menu__item.button, #llar-setting-page-premium .menu__item.button, #llar-setting-page-help .menu__item.button { font-size: 14px; } } @media screen and (max-width: 991.5px) { button.llar_button.menu__item, #llar-setting-page button.menu__item.button, .llar_button.menu__item, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .menu__item.button, #llar-setting-page .menu__item.button, #llar-setting-page-logs .menu__item.button, #llar-setting-page-logs__active .menu__item.button, #llar-setting-page-debug .menu__item.button, #llar-setting-page-premium .menu__item.button, #llar-setting-page-help .menu__item.button { padding: 6px 15px; } } @media screen and (max-width: 428px) { button.llar_button.menu__item, #llar-setting-page button.menu__item.button, .llar_button.menu__item, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .menu__item.button, #llar-setting-page .menu__item.button, #llar-setting-page-logs .menu__item.button, #llar-setting-page-logs__active .menu__item.button, #llar-setting-page-debug .menu__item.button, #llar-setting-page-premium .menu__item.button, #llar-setting-page-help .menu__item.button { padding: 6px 14px; } } button.llar_button:focus, #llar-setting-page button.button:focus, .llar_button:focus, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button:focus, #llar-setting-page .button:focus, #llar-setting-page-logs .button:focus, #llar-setting-page-logs__active .button:focus, #llar-setting-page-debug .button:focus, #llar-setting-page-premium .button:focus, #llar-setting-page-help .button:focus { outline: none !important; box-shadow: unset !important; } .llar_button, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button, #llar-setting-page .button, #llar-setting-page-logs .button, #llar-setting-page-logs__active .button, #llar-setting-page-debug .button, #llar-setting-page-premium .button, #llar-setting-page-help .button { position: relative; min-width: 175px; text-transform: inherit; text-decoration: none; } .llar_button.button__orange, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button__orange.button, #llar-setting-page .button__orange.button, #llar-setting-page-logs .button__orange.button, #llar-setting-page-logs__active .button__orange.button, #llar-setting-page-debug .button__orange.button, #llar-setting-page-premium .button__orange.button, #llar-setting-page-help .button__orange.button { color: white !important; background: #FF7C06 !important; border: 1px solid #FF7C06 !important; box-shadow: 0 6px 12px 0 rgba(255, 124, 6, 0.4980392157) !important; } .llar_button.button__orange:hover, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button__orange.button:hover, #llar-setting-page .button__orange.button:hover, #llar-setting-page-logs .button__orange.button:hover, #llar-setting-page-logs__active .button__orange.button:hover, #llar-setting-page-debug .button__orange.button:hover, #llar-setting-page-premium .button__orange.button:hover, #llar-setting-page-help .button__orange.button:hover { background: #F07200 !important; } .llar_button.button__orange:disabled, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button__orange.button:disabled, #llar-setting-page .button__orange.button:disabled, #llar-setting-page-logs .button__orange.button:disabled, #llar-setting-page-logs__active .button__orange.button:disabled, #llar-setting-page-debug .button__orange.button:disabled, #llar-setting-page-premium .button__orange.button:disabled, #llar-setting-page-help .button__orange.button:disabled { border: 1px solid rgba(255, 124, 6, 0.4980392157) !important; background: rgba(255, 124, 6, 0.4980392157) !important; cursor: auto; } .llar_button.button__transparent_orange, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button__transparent_orange.button, #llar-setting-page .button__transparent_orange.button, #llar-setting-page-logs .button__transparent_orange.button, #llar-setting-page-logs__active .button__transparent_orange.button, #llar-setting-page-debug .button__transparent_orange.button, #llar-setting-page-premium .button__transparent_orange.button, #llar-setting-page-help .button__transparent_orange.button, .llar_button.button__transparent_grey, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button__transparent_grey.button, #llar-setting-page .button__transparent_grey.button, #llar-setting-page-logs .button__transparent_grey.button, #llar-setting-page-logs__active .button__transparent_grey.button, #llar-setting-page-debug .button__transparent_grey.button, #llar-setting-page-premium .button__transparent_grey.button, #llar-setting-page-help .button__transparent_grey.button { color: #FF7C06 !important; border: 1px solid currentColor !important; background: transparent !important; } .llar_button.button__transparent_orange.orange-back, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button__transparent_orange.orange-back.button, #llar-setting-page .button__transparent_orange.orange-back.button, #llar-setting-page-logs .button__transparent_orange.orange-back.button, #llar-setting-page-logs__active .button__transparent_orange.orange-back.button, #llar-setting-page-debug .button__transparent_orange.orange-back.button, #llar-setting-page-premium .button__transparent_orange.orange-back.button, #llar-setting-page-help .button__transparent_orange.orange-back.button, .llar_button.button__transparent_grey.orange-back, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button__transparent_grey.orange-back.button, #llar-setting-page .button__transparent_grey.orange-back.button, #llar-setting-page-logs .button__transparent_grey.orange-back.button, #llar-setting-page-logs__active .button__transparent_grey.orange-back.button, #llar-setting-page-debug .button__transparent_grey.orange-back.button, #llar-setting-page-premium .button__transparent_grey.orange-back.button, #llar-setting-page-help .button__transparent_grey.orange-back.button { background: rgba(255, 124, 6, 0.0980392157) !important; } .llar_button.button__transparent_orange:hover, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button__transparent_orange.button:hover, #llar-setting-page .button__transparent_orange.button:hover, #llar-setting-page-logs .button__transparent_orange.button:hover, #llar-setting-page-logs__active .button__transparent_orange.button:hover, #llar-setting-page-debug .button__transparent_orange.button:hover, #llar-setting-page-premium .button__transparent_orange.button:hover, #llar-setting-page-help .button__transparent_orange.button:hover, .llar_button.button__transparent_grey:hover, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button__transparent_grey.button:hover, #llar-setting-page .button__transparent_grey.button:hover, #llar-setting-page-logs .button__transparent_grey.button:hover, #llar-setting-page-logs__active .button__transparent_grey.button:hover, #llar-setting-page-debug .button__transparent_grey.button:hover, #llar-setting-page-premium .button__transparent_grey.button:hover, #llar-setting-page-help .button__transparent_grey.button:hover { background: rgba(255, 124, 6, 0.0980392157) !important; border: 1px solid currentColor !important; } .llar_button.button__transparent_orange:disabled, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button__transparent_orange.button:disabled, #llar-setting-page .button__transparent_orange.button:disabled, #llar-setting-page-logs .button__transparent_orange.button:disabled, #llar-setting-page-logs__active .button__transparent_orange.button:disabled, #llar-setting-page-debug .button__transparent_orange.button:disabled, #llar-setting-page-premium .button__transparent_orange.button:disabled, #llar-setting-page-help .button__transparent_orange.button:disabled, .llar_button.button__transparent_grey:disabled, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button__transparent_grey.button:disabled, #llar-setting-page .button__transparent_grey.button:disabled, #llar-setting-page-logs .button__transparent_grey.button:disabled, #llar-setting-page-logs__active .button__transparent_grey.button:disabled, #llar-setting-page-debug .button__transparent_grey.button:disabled, #llar-setting-page-premium .button__transparent_grey.button:disabled, #llar-setting-page-help .button__transparent_grey.button:disabled { background: transparent; cursor: auto; } .llar_button.button__transparent_grey, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button__transparent_grey.button, #llar-setting-page .button__transparent_grey.button, #llar-setting-page-logs .button__transparent_grey.button, #llar-setting-page-logs__active .button__transparent_grey.button, #llar-setting-page-debug .button__transparent_grey.button, #llar-setting-page-premium .button__transparent_grey.button, #llar-setting-page-help .button__transparent_grey.button { color: #A4A8B7 !important; } .llar_button.button__transparent_grey.gray-back, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button__transparent_grey.gray-back.button, #llar-setting-page .button__transparent_grey.gray-back.button, #llar-setting-page-logs .button__transparent_grey.gray-back.button, #llar-setting-page-logs__active .button__transparent_grey.gray-back.button, #llar-setting-page-debug .button__transparent_grey.gray-back.button, #llar-setting-page-premium .button__transparent_grey.gray-back.button, #llar-setting-page-help .button__transparent_grey.gray-back.button { background: rgba(164, 168, 183, 0.2980392157) !important; } .llar_button.button__transparent_grey:hover, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button__transparent_grey.button:hover, #llar-setting-page .button__transparent_grey.button:hover, #llar-setting-page-logs .button__transparent_grey.button:hover, #llar-setting-page-logs__active .button__transparent_grey.button:hover, #llar-setting-page-debug .button__transparent_grey.button:hover, #llar-setting-page-premium .button__transparent_grey.button:hover, #llar-setting-page-help .button__transparent_grey.button:hover { background: rgba(164, 168, 183, 0.2980392157) !important; } .llar_button.button:focus, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button:focus, #llar-setting-page .button:focus, #llar-setting-page-logs .button:focus, #llar-setting-page-logs__active .button:focus, #llar-setting-page-debug .button:focus, #llar-setting-page-premium .button:focus, #llar-setting-page-help .button:focus { outline: none !important; box-shadow: unset !important; } .llar_button.tags, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .tags.button, #llar-setting-page .tags.button, #llar-setting-page-logs .tags.button, #llar-setting-page-logs__active .tags.button, #llar-setting-page-debug .tags.button, #llar-setting-page-premium .tags.button, #llar-setting-page-help .tags.button { font-size: 16px; font-weight: 400; line-height: 1.7; border-radius: 8px; border: 1px solid #FF7C06; width: fit-content; padding: 0 20px; z-index: 50; } .llar_button.tags_basic, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .tags_basic.button, #llar-setting-page .tags_basic.button, #llar-setting-page-logs .tags_basic.button, #llar-setting-page-logs__active .tags_basic.button, #llar-setting-page-debug .tags_basic.button, #llar-setting-page-premium .tags_basic.button, #llar-setting-page-help .tags_basic.button { color: #FF7C06; background: rgba(255, 124, 6, 0.0980392157); } .llar_button.tags_basic.active, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .tags_basic.active.button, #llar-setting-page .tags_basic.active.button, #llar-setting-page-logs .tags_basic.active.button, #llar-setting-page-logs__active .tags_basic.active.button, #llar-setting-page-debug .tags_basic.active.button, #llar-setting-page-premium .tags_basic.active.button, #llar-setting-page-help .tags_basic.active.button, .llar_button.tags_basic:hover, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .tags_basic.button:hover, #llar-setting-page .tags_basic.button:hover, #llar-setting-page-logs .tags_basic.button:hover, #llar-setting-page-logs__active .tags_basic.button:hover, #llar-setting-page-debug .tags_basic.button:hover, #llar-setting-page-premium .tags_basic.button:hover, #llar-setting-page-help .tags_basic.button:hover { color: #FDFDFD; background: #FF7C06; } .llar_button.tags_basic_add, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .tags_basic_add.button, #llar-setting-page .tags_basic_add.button, #llar-setting-page-logs .tags_basic_add.button, #llar-setting-page-logs__active .tags_basic_add.button, #llar-setting-page-debug .tags_basic_add.button, #llar-setting-page-premium .tags_basic_add.button, #llar-setting-page-help .tags_basic_add.button { color: #4ACAD8; min-width: fit-content; border: 1px solid currentColor; background: rgba(74, 202, 216, 0.0980392157); } .llar_button.tags_basic_add a, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .tags_basic_add.button a, #llar-setting-page .tags_basic_add.button a, #llar-setting-page-logs .tags_basic_add.button a, #llar-setting-page-logs__active .tags_basic_add.button a, #llar-setting-page-debug .tags_basic_add.button a, #llar-setting-page-premium .tags_basic_add.button a, #llar-setting-page-help .tags_basic_add.button a { vertical-align: middle; } .llar_button.tags_basic_add:hover, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .tags_basic_add.button:hover, #llar-setting-page .tags_basic_add.button:hover, #llar-setting-page-logs .tags_basic_add.button:hover, #llar-setting-page-logs__active .tags_basic_add.button:hover, #llar-setting-page-debug .tags_basic_add.button:hover, #llar-setting-page-premium .tags_basic_add.button:hover, #llar-setting-page-help .tags_basic_add.button:hover { background: rgba(255, 124, 6, 0.0980392157); } .llar_button.tags_add, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .tags_add.button, #llar-setting-page .tags_add.button, #llar-setting-page-logs .tags_add.button, #llar-setting-page-logs__active .tags_add.button, #llar-setting-page-debug .tags_add.button, #llar-setting-page-premium .tags_add.button, #llar-setting-page-help .tags_add.button { color: #A4A8B7; border: 1px solid #A4A8B7; background: rgba(164, 168, 183, 0.0784313725); } .llar_button.tags_add a, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .tags_add.button a, #llar-setting-page .tags_add.button a, #llar-setting-page-logs .tags_add.button a, #llar-setting-page-logs__active .tags_add.button a, #llar-setting-page-debug .tags_add.button a, #llar-setting-page-premium .tags_add.button a, #llar-setting-page-help .tags_add.button a { vertical-align: middle; } .llar_button.tags_add:hover, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .tags_add.button:hover, #llar-setting-page .tags_add.button:hover, #llar-setting-page-logs .tags_add.button:hover, #llar-setting-page-logs__active .tags_add.button:hover, #llar-setting-page-debug .tags_add.button:hover, #llar-setting-page-premium .tags_add.button:hover, #llar-setting-page-help .tags_add.button:hover { background: rgba(255, 124, 6, 0.0980392157); } .llar_button:focus, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button:focus, #llar-setting-page .button:focus, #llar-setting-page-logs .button:focus, #llar-setting-page-logs__active .button:focus, #llar-setting-page-debug .button:focus, #llar-setting-page-premium .button:focus, #llar-setting-page-help .button:focus { outline: none !important; box-shadow: unset !important; } .llar-form-table { width: 100%; } .toplevel_page_limit-login-attempts #wpwrap { background-color: #F6FBFF; } .toplevel_page_limit-login-attempts #wpcontent { background-color: #F6FBFF; font-family: CoFo Sans, arial; font-style: normal; font-weight: 400; color: #2A2F40; } .limit-login-page-settings { margin: 8px 50px; } @media screen and (max-width: 1799.5px) { .limit-login-page-settings { margin: 8px 16px 8px 0; } } .limit-login-page-settings__logo_block { display: flex; flex-wrap: nowrap; justify-content: space-between; align-items: baseline; font-size: 18px; margin-right: 20px; } .limit-login-page-settings__logo_block .info-box-icon { display: inline-block; margin-left: 5px; } .limit-login-page-settings__logo_block .info-box-icon img { width: 15px; vertical-align: middle; } .limit-login-page-settings__logo { margin-top: 21px; margin-left: 4px; max-width: 172px; } .limit-login-page-settings .nav-tab-wrapper { position: relative; border-bottom: unset; margin-top: 20px; } .limit-login-page-settings .nav-tab-wrapper .nav-tab { border: unset; background-color: unset; font-size: 16px; color: #2A2F40; font-weight: 400; margin-left: 0; margin-right: 35px; padding: 4px 5px 6px; } .limit-login-page-settings .nav-tab-wrapper .nav-tab .llar-alert-icon { display: inline-block; vertical-align: middle; box-sizing: border-box; margin: -2px 0 0; padding: 0 1px 4px 2px; min-width: 18px; height: 18px; border-radius: 9px; background-color: #d63638; color: white; font-size: 14px; line-height: 1.4; text-align: center; } .limit-login-page-settings .nav-tab-wrapper .nav-tab-active { border-bottom: 4px solid #4ACAD8; } @media screen and (max-width: 991.5px) { .limit-login-page-settings .nav-tab-wrapper .nav-tab { margin-right: 20px; } } @media screen and (max-width: 767.5px) { .limit-login-page-settings .nav-tab-wrapper .nav-tab { font-size: 14px; margin-right: 0.87em; } } @media screen and (max-width: 575.5px) { .limit-login-page-settings .nav-tab-wrapper .nav-tab { font-size: 12px; margin-right: 0.5em; } } .limit-login-page-settings .nav-tab-wrapper .llar-failover-link { color: #4ACAD8; font-size: 14px; float: right; padding: 7px 15px; } .limit-login-page-settings .nav-tab-wrapper .llar-failover-link .llar-tooltip:before { right: 0; left: auto; } .limit-login-page-settings .field-col { display: inline-block; margin-right: 20px; } .limit-login-page-settings .limit-login-log table { background-color: #fff; } .limit-login-page-settings .limit-login-log table th, .limit-login-page-settings .limit-login-log table td { padding: 10px; } .limit-login-page-settings .limit-login-log table tr:nth-child(even) { background-color: rgba(0, 0, 0, 0.09); } .limit-login-page-settings #limit-login-app-setup-code { width: 85%; } .limit-login-page-settings .llar-app-notice { background-color: #fff; box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1); padding: 15px; border-radius: 3px; margin-top: 20px; margin-bottom: 20px; font-size: 14px; border-left: 5px solid #ffba00; } .limit-login-page-settings .llar-app-notice.success { border-color: #46b450; } .limit-login-page-settings .llar-app-notice p { font-size: inherit; margin: 0 0 20px; } .limit-login-page-settings .llar-app-notice p:last-child { margin-bottom: 0; } .limit-login-page-settings input[name=admin_notify_email] { min-width: 243px; } .limit-login-page-settings input[name=lla_trusted_ip_origins] { min-width: 400px; } .limit-login-page-settings .llar-test-email-notification-btn { text-decoration: none; margin-left: 16px; font-weight: 400; } .limit-login-page-settings .llar-test-email-notification-loader .llar-app-ajax-spinner { float: none; margin: -2px 5px 0; display: none; } .limit-login-page-settings .llar-test-email-notification-loader.loading .llar-app-ajax-spinner { display: inline-block; visibility: visible; } .limit-login-page-settings .llar-test-email-notification-loader .msg { margin-left: 5px; } .limit-login-page-settings .llar-test-email-notification-loader .msg.success { color: #71c21b; } .limit-login-page-settings .llar-protect-notice { font-size: 15px; color: #848484; margin-left: 10px; } .limit-login-page-settings .llar-protect-notice a { color: #222222; text-decoration: none; border-bottom: 1px dashed; } .limit-login-page-settings .llar-toggle-setup-field { color: #2271b1; text-decoration-style: dashed; } .limit-login-page-settings .llar-toggle-setup-field:hover { color: #222; } .limit-login-page-settings .setup-code-wrap { display: none; min-width: 450px; } .limit-login-page-settings .setup-code-wrap.active { display: block; } @media screen and (max-width: 1199.5px) { .limit-login-page-settings .setup-code-wrap button.button, .limit-login-page-settings .setup-code-wrap .button.llar_button, .limit-login-page-settings .setup-code-wrap .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .limit-login-page-settings .setup-code-wrap .button, .limit-login-page-settings .setup-code-wrap #llar-setting-page .button, .limit-login-page-settings .setup-code-wrap #llar-setting-page-logs .button, .limit-login-page-settings .setup-code-wrap #llar-setting-page-logs__active .button, .limit-login-page-settings .setup-code-wrap #llar-setting-page-debug .button, .limit-login-page-settings .setup-code-wrap #llar-setting-page-premium .button, .limit-login-page-settings .setup-code-wrap #llar-setting-page-help .button, #llar-setting-page .limit-login-page-settings .setup-code-wrap .button, #llar-setting-page-logs .limit-login-page-settings .setup-code-wrap .button, #llar-setting-page-logs__active .limit-login-page-settings .setup-code-wrap .button, #llar-setting-page-debug .limit-login-page-settings .setup-code-wrap .button, #llar-setting-page-premium .limit-login-page-settings .setup-code-wrap .button, #llar-setting-page-help .limit-login-page-settings .setup-code-wrap .button { min-width: 120px !important; } } @media screen and (max-width: 991.5px) { .limit-login-page-settings .setup-code-wrap button.button, .limit-login-page-settings .setup-code-wrap .button.llar_button, .limit-login-page-settings .setup-code-wrap .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .limit-login-page-settings .setup-code-wrap .button, .limit-login-page-settings .setup-code-wrap #llar-setting-page .button, .limit-login-page-settings .setup-code-wrap #llar-setting-page-logs .button, .limit-login-page-settings .setup-code-wrap #llar-setting-page-logs__active .button, .limit-login-page-settings .setup-code-wrap #llar-setting-page-debug .button, .limit-login-page-settings .setup-code-wrap #llar-setting-page-premium .button, .limit-login-page-settings .setup-code-wrap #llar-setting-page-help .button, #llar-setting-page .limit-login-page-settings .setup-code-wrap .button, #llar-setting-page-logs .limit-login-page-settings .setup-code-wrap .button, #llar-setting-page-logs__active .limit-login-page-settings .setup-code-wrap .button, #llar-setting-page-debug .limit-login-page-settings .setup-code-wrap .button, #llar-setting-page-premium .limit-login-page-settings .setup-code-wrap .button, #llar-setting-page-help .limit-login-page-settings .setup-code-wrap .button { min-width: 90px !important; } } .limit-login-page-settings .app-form-field { display: none; } .limit-login-page-settings .app-form-field.active { display: table-row; } .limit-login-page-settings .llar-app-field { display: none; } .limit-login-page-settings .llar-app-field.active { display: table-row; } #llar-setting-page, #llar-setting-page-logs, #llar-setting-page-logs__active, #llar-setting-page-debug, #llar-setting-page-premium, #llar-setting-page-help { color: #2A2F40; margin-top: 40px; line-height: 1.5; } #llar-setting-page .title_page, #llar-setting-page-logs .title_page, #llar-setting-page-logs__active .title_page, #llar-setting-page-debug .title_page, #llar-setting-page-premium .title_page, #llar-setting-page-help .title_page { margin-top: 40px; margin-bottom: 15px; color: inherit; font-size: 20px; font-weight: 500; } @media screen and (max-width: 1599.5px) { #llar-setting-page .title_page, #llar-setting-page-logs .title_page, #llar-setting-page-logs__active .title_page, #llar-setting-page-debug .title_page, #llar-setting-page-premium .title_page, #llar-setting-page-help .title_page { font-size: 18px; } } #llar-setting-page .title_page img, #llar-setting-page-logs .title_page img, #llar-setting-page-logs__active .title_page img, #llar-setting-page-debug .title_page img, #llar-setting-page-premium .title_page img, #llar-setting-page-help .title_page img { width: 36px; height: 36px; vertical-align: middle; margin-right: 8px; } #llar-setting-page .description-page, #llar-setting-page-logs .description-page, #llar-setting-page-logs__active .description-page, #llar-setting-page-debug .description-page, #llar-setting-page-premium .description-page, #llar-setting-page-help .description-page { position: relative; font-size: 18px; color: #666D84; padding: 30px 44px; border-radius: 20px; background: rgba(232, 253, 255, 0.02); box-shadow: 4px 4px 18px 0 rgba(162, 180, 189, 0.2); } @media screen and (max-width: 1599.5px) { #llar-setting-page .description-page, #llar-setting-page-logs .description-page, #llar-setting-page-logs__active .description-page, #llar-setting-page-debug .description-page, #llar-setting-page-premium .description-page, #llar-setting-page-help .description-page { font-size: 16px; } } #llar-setting-page .llar-settings-wrap, #llar-setting-page-logs .llar-settings-wrap, #llar-setting-page-logs__active .llar-settings-wrap, #llar-setting-page-debug .llar-settings-wrap, #llar-setting-page-premium .llar-settings-wrap, #llar-setting-page-help .llar-settings-wrap { margin-top: 20px; } #llar-setting-page .llar-settings-wrap .llar-form-table, #llar-setting-page-logs .llar-settings-wrap .llar-form-table, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table, #llar-setting-page-debug .llar-settings-wrap .llar-form-table, #llar-setting-page-premium .llar-settings-wrap .llar-form-table, #llar-setting-page-help .llar-settings-wrap .llar-form-table { color: #2A2F40; font-size: 18px; border-collapse: separate; border-spacing: 0 18px; border-color: unset; margin-top: -18px; margin-bottom: -18px; } #llar-setting-page .llar-settings-wrap .llar-form-table tr, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr { position: relative; font-size: 18px; border-radius: 20px; color: #666D84; background: #FDFDFD; box-shadow: 4px 4px 18px 0 rgba(162, 180, 189, 0.2); } @media screen and (max-width: 1599.5px) { #llar-setting-page .llar-settings-wrap .llar-form-table tr, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr { font-size: 16px; } } #llar-setting-page .llar-settings-wrap .llar-form-table tr th, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr th, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr th, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr th, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr th, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr th, #llar-setting-page .llar-settings-wrap .llar-form-table tr td, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td { font-size: inherit; line-height: inherit; border-radius: 20px; background-color: unset; padding: 29px 5px 32px 44px; } @media screen and (max-width: 1599.5px) { #llar-setting-page .llar-settings-wrap .llar-form-table tr th, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr th, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr th, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr th, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr th, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr th, #llar-setting-page .llar-settings-wrap .llar-form-table tr td, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td { padding: 12px 5px 12px 25px; } } @media screen and (max-width: 1399.5px) { #llar-setting-page .llar-settings-wrap .llar-form-table tr th, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr th, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr th, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr th, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr th, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr th, #llar-setting-page .llar-settings-wrap .llar-form-table tr td, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td { padding-left: 15px; } } #llar-setting-page .llar-settings-wrap .llar-form-table tr th, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr th, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr th, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr th, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr th, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr th { color: #2A2F40; font-weight: 400; border-top-right-radius: unset; border-bottom-right-radius: unset; width: 300px; } @media screen and (max-width: 1399.5px) { #llar-setting-page .llar-settings-wrap .llar-form-table tr th, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr th, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr th, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr th, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr th, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr th { width: 260px; } } #llar-setting-page .llar-settings-wrap .llar-form-table tr th .dashicons, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr th .dashicons, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr th .dashicons, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr th .dashicons, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr th .dashicons, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr th .dashicons { font-size: 140%; width: 12px; height: 12px; margin-left: 2px; } @media screen and (max-width: 1599.5px) { #llar-setting-page .llar-settings-wrap .llar-form-table tr th .dashicons, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr th .dashicons, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr th .dashicons, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr th .dashicons, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr th .dashicons, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr th .dashicons { font-size: 20px; } } #llar-setting-page .llar-settings-wrap .llar-form-table tr th .hint_tooltip, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr th .hint_tooltip, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr th .hint_tooltip, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr th .hint_tooltip, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr th .hint_tooltip, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr th .hint_tooltip { right: -140px; top: 30px; width: 200px; } #llar-setting-page .llar-settings-wrap .llar-form-table tr th .hint_tooltip:before, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr th .hint_tooltip:before, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr th .hint_tooltip:before, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr th .hint_tooltip:before, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr th .hint_tooltip:before, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr th .hint_tooltip:before { right: 142px; } #llar-setting-page .llar-settings-wrap .llar-form-table tr td, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td { color: #666D84; font-size: 16px; line-height: 1.5; border-top-left-radius: unset; border-bottom-left-radius: unset; } @media screen and (max-width: 1599.5px) { #llar-setting-page .llar-settings-wrap .llar-form-table tr td, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td { font-size: 14px; } } #llar-setting-page .llar-settings-wrap .llar-form-table tr td .textarea_border.full_area, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .textarea_border.full_area, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .textarea_border.full_area, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .textarea_border.full_area, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .textarea_border.full_area, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .textarea_border.full_area, #llar-setting-page .llar-settings-wrap .llar-form-table tr td .input_border.full_area, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .input_border.full_area, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .input_border.full_area, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .input_border.full_area, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .input_border.full_area, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .input_border.full_area { min-width: 720px; } @media screen and (max-width: 1599.5px) { #llar-setting-page .llar-settings-wrap .llar-form-table tr td .textarea_border.full_area, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .textarea_border.full_area, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .textarea_border.full_area, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .textarea_border.full_area, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .textarea_border.full_area, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .textarea_border.full_area, #llar-setting-page .llar-settings-wrap .llar-form-table tr td .input_border.full_area, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .input_border.full_area, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .input_border.full_area, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .input_border.full_area, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .input_border.full_area, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .input_border.full_area { min-width: 70%; } } #llar-setting-page .llar-settings-wrap .llar-form-table tr td .textarea_border textarea, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .textarea_border textarea, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .textarea_border textarea, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .textarea_border textarea, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .textarea_border textarea, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .textarea_border textarea, #llar-setting-page .llar-settings-wrap .llar-form-table tr td .input_border textarea, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .input_border textarea, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .input_border textarea, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .input_border textarea, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .input_border textarea, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .input_border textarea { font-family: inherit; font-size: 16px; color: #666D84; background-color: #FDFDFD; padding-right: 24px; border: unset; scrollbar-width: thin; } @media screen and (max-width: 1599.5px) { #llar-setting-page .llar-settings-wrap .llar-form-table tr td .textarea_border textarea, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .textarea_border textarea, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .textarea_border textarea, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .textarea_border textarea, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .textarea_border textarea, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .textarea_border textarea, #llar-setting-page .llar-settings-wrap .llar-form-table tr td .input_border textarea, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .input_border textarea, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .input_border textarea, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .input_border textarea, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .input_border textarea, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .input_border textarea { padding-right: 18px; font-size: 14px; } } #llar-setting-page .llar-settings-wrap .llar-form-table tr td .textarea_border textarea::-webkit-scrollbar, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .textarea_border textarea::-webkit-scrollbar, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .textarea_border textarea::-webkit-scrollbar, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .textarea_border textarea::-webkit-scrollbar, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .textarea_border textarea::-webkit-scrollbar, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .textarea_border textarea::-webkit-scrollbar, #llar-setting-page .llar-settings-wrap .llar-form-table tr td .input_border textarea::-webkit-scrollbar, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .input_border textarea::-webkit-scrollbar, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .input_border textarea::-webkit-scrollbar, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .input_border textarea::-webkit-scrollbar, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .input_border textarea::-webkit-scrollbar, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .input_border textarea::-webkit-scrollbar { width: 8px; } #llar-setting-page .llar-settings-wrap .llar-form-table tr td .textarea_border textarea::-webkit-scrollbar-track, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .textarea_border textarea::-webkit-scrollbar-track, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .textarea_border textarea::-webkit-scrollbar-track, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .textarea_border textarea::-webkit-scrollbar-track, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .textarea_border textarea::-webkit-scrollbar-track, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .textarea_border textarea::-webkit-scrollbar-track, #llar-setting-page .llar-settings-wrap .llar-form-table tr td .input_border textarea::-webkit-scrollbar-track, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .input_border textarea::-webkit-scrollbar-track, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .input_border textarea::-webkit-scrollbar-track, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .input_border textarea::-webkit-scrollbar-track, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .input_border textarea::-webkit-scrollbar-track, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .input_border textarea::-webkit-scrollbar-track { background-color: #A4A8B7; border-radius: 8px; } #llar-setting-page .llar-settings-wrap .llar-form-table tr td .textarea_border textarea::-webkit-scrollbar-thumb, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .textarea_border textarea::-webkit-scrollbar-thumb, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .textarea_border textarea::-webkit-scrollbar-thumb, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .textarea_border textarea::-webkit-scrollbar-thumb, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .textarea_border textarea::-webkit-scrollbar-thumb, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .textarea_border textarea::-webkit-scrollbar-thumb, #llar-setting-page .llar-settings-wrap .llar-form-table tr td .input_border textarea::-webkit-scrollbar-thumb, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .input_border textarea::-webkit-scrollbar-thumb, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .input_border textarea::-webkit-scrollbar-thumb, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .input_border textarea::-webkit-scrollbar-thumb, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .input_border textarea::-webkit-scrollbar-thumb, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .input_border textarea::-webkit-scrollbar-thumb { background-color: #666D84; border-radius: 8px; } #llar-setting-page .llar-settings-wrap .llar-form-table tr td .textarea_border textarea:hover, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .textarea_border textarea:hover, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .textarea_border textarea:hover, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .textarea_border textarea:hover, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .textarea_border textarea:hover, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .textarea_border textarea:hover, #llar-setting-page .llar-settings-wrap .llar-form-table tr td .textarea_border textarea:focus, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .textarea_border textarea:focus, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .textarea_border textarea:focus, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .textarea_border textarea:focus, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .textarea_border textarea:focus, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .textarea_border textarea:focus, #llar-setting-page .llar-settings-wrap .llar-form-table tr td .input_border textarea:hover, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .input_border textarea:hover, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .input_border textarea:hover, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .input_border textarea:hover, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .input_border textarea:hover, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .input_border textarea:hover, #llar-setting-page .llar-settings-wrap .llar-form-table tr td .input_border textarea:focus, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .input_border textarea:focus, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .input_border textarea:focus, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .input_border textarea:focus, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .input_border textarea:focus, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .input_border textarea:focus { border: unset; box-shadow: unset; outline: unset; } #llar-setting-page .llar-settings-wrap .llar-form-table tr td select, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td select, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td select, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td select, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td select, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td select { font-family: inherit; background: #FDFDFD url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%234ACAD8FF'%3e%3cpath d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e") no-repeat right 5px top 55%; background-size: 16px 16px; } #llar-setting-page .llar-settings-wrap .llar-form-table tr td select.input_border, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td select.input_border, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td select.input_border, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td select.input_border, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td select.input_border, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td select.input_border { padding: 6px 64px 6px 16px; } @media screen and (max-width: 1599.5px) { #llar-setting-page .llar-settings-wrap .llar-form-table tr td select.input_border, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td select.input_border, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td select.input_border, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td select.input_border, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td select.input_border, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td select.input_border { padding-right: 35px; } } #llar-setting-page .llar-settings-wrap .llar-form-table tr td .input_border, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .input_border, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .input_border, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .input_border, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .input_border, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .input_border { border-radius: 8px; } #llar-setting-page .llar-settings-wrap .llar-form-table tr td .input_border:hover, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .input_border:hover, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .input_border:hover, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .input_border:hover, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .input_border:hover, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .input_border:hover, #llar-setting-page .llar-settings-wrap .llar-form-table tr td .input_border:focus, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .input_border:focus, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .input_border:focus, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .input_border:focus, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .input_border:focus, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .input_border:focus { box-shadow: unset; outline: unset; } #llar-setting-page .llar-settings-wrap .llar-form-table tr td a.unlink, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td a.unlink, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td a.unlink, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td a.unlink, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td a.unlink, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td a.unlink { font-weight: 500; } #llar-setting-page .llar-settings-wrap .llar-form-table tr td a.unlink:hover, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td a.unlink:hover, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td a.unlink:hover, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td a.unlink:hover, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td a.unlink:hover, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td a.unlink:hover { border-bottom: unset; } #llar-setting-page .llar-settings-wrap .llar-form-table tr td .description-additional, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .description-additional, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .description-additional, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .description-additional, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .description-additional, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .description-additional, #llar-setting-page .llar-settings-wrap .llar-form-table tr td .description-secondary, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .description-secondary, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .description-secondary, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .description-secondary, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .description-secondary, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .description-secondary, #llar-setting-page .llar-settings-wrap .llar-form-table tr td .llar-protect-notice, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .llar-protect-notice, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .llar-protect-notice, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .llar-protect-notice, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .llar-protect-notice, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .llar-protect-notice { font-size: 16px; line-height: inherit; color: #A4A8B7; padding: 16px 8px 8px 24px; max-width: 740px; } @media screen and (max-width: 1599.5px) { #llar-setting-page .llar-settings-wrap .llar-form-table tr td .description-additional, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .description-additional, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .description-additional, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .description-additional, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .description-additional, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .description-additional, #llar-setting-page .llar-settings-wrap .llar-form-table tr td .description-secondary, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .description-secondary, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .description-secondary, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .description-secondary, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .description-secondary, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .description-secondary, #llar-setting-page .llar-settings-wrap .llar-form-table tr td .llar-protect-notice, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .llar-protect-notice, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .llar-protect-notice, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .llar-protect-notice, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .llar-protect-notice, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .llar-protect-notice { font-size: 14px; } } #llar-setting-page .llar-settings-wrap .llar-form-table tr td .description-secondary, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .description-secondary, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .description-secondary, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .description-secondary, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .description-secondary, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .description-secondary, #llar-setting-page .llar-settings-wrap .llar-form-table tr td .llar-protect-notice, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .llar-protect-notice, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .llar-protect-notice, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .llar-protect-notice, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .llar-protect-notice, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .llar-protect-notice { color: #666D84; } #llar-setting-page .llar-settings-wrap .llar-form-table tr td .llar-protect-notice, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .llar-protect-notice, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .llar-protect-notice, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .llar-protect-notice, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .llar-protect-notice, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .llar-protect-notice { font-size: inherit; color: inherit; } #llar-setting-page .llar-settings-wrap .llar-form-table tr td .llar-protect-notice a, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .llar-protect-notice a, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .llar-protect-notice a, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .llar-protect-notice a, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .llar-protect-notice a, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .llar-protect-notice a { text-decoration: none; border-bottom: unset; } #llar-setting-page .llar-settings-wrap .llar-form-table tr td .llar-protect-notice a:hover, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .llar-protect-notice a:hover, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .llar-protect-notice a:hover, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .llar-protect-notice a:hover, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .llar-protect-notice a:hover, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .llar-protect-notice a:hover { border-bottom: 1px solid currentColor; } #llar-setting-page .add_block__under_table, #llar-setting-page-logs .add_block__under_table, #llar-setting-page-logs__active .add_block__under_table, #llar-setting-page-debug .add_block__under_table, #llar-setting-page-premium .add_block__under_table, #llar-setting-page-help .add_block__under_table { margin: 8px 0; padding: 24px 48px; background-color: #F6FBFF; border-radius: 20px; } @media screen and (max-width: 1199.5px) { #llar-setting-page .add_block__under_table, #llar-setting-page-logs .add_block__under_table, #llar-setting-page-logs__active .add_block__under_table, #llar-setting-page-debug .add_block__under_table, #llar-setting-page-premium .add_block__under_table, #llar-setting-page-help .add_block__under_table { padding: 16px; } } #llar-setting-page .add_block__under_table .description, #llar-setting-page-logs .add_block__under_table .description, #llar-setting-page-logs__active .add_block__under_table .description, #llar-setting-page-debug .add_block__under_table .description, #llar-setting-page-premium .add_block__under_table .description, #llar-setting-page-help .add_block__under_table .description { color: #2A2F40; font-size: 18px; line-height: 1.5; font-weight: 500; } @media screen and (max-width: 1599.5px) { #llar-setting-page .add_block__under_table .description, #llar-setting-page-logs .add_block__under_table .description, #llar-setting-page-logs__active .add_block__under_table .description, #llar-setting-page-debug .add_block__under_table .description, #llar-setting-page-premium .add_block__under_table .description, #llar-setting-page-help .add_block__under_table .description { font-size: 16px; } } #llar-setting-page .add_block__under_table .add_block__list, #llar-setting-page-logs .add_block__under_table .add_block__list, #llar-setting-page-logs__active .add_block__under_table .add_block__list, #llar-setting-page-debug .add_block__under_table .add_block__list, #llar-setting-page-premium .add_block__under_table .add_block__list, #llar-setting-page-help .add_block__under_table .add_block__list { display: flex; margin-top: 16px; margin-bottom: 8px; color: #666D84; font-size: 16px; flex-wrap: nowrap; justify-content: space-between; } @media screen and (max-width: 1599.5px) { #llar-setting-page .add_block__under_table .add_block__list, #llar-setting-page-logs .add_block__under_table .add_block__list, #llar-setting-page-logs__active .add_block__under_table .add_block__list, #llar-setting-page-debug .add_block__under_table .add_block__list, #llar-setting-page-premium .add_block__under_table .add_block__list, #llar-setting-page-help .add_block__under_table .add_block__list { flex-wrap: wrap; } } #llar-setting-page .add_block__under_table .add_block__list .item, #llar-setting-page-logs .add_block__under_table .add_block__list .item, #llar-setting-page-logs__active .add_block__under_table .add_block__list .item, #llar-setting-page-debug .add_block__under_table .add_block__list .item, #llar-setting-page-premium .add_block__under_table .add_block__list .item, #llar-setting-page-help .add_block__under_table .add_block__list .item { flex: 0 0 16%; display: flex; flex-direction: row; flex-wrap: nowrap; align-items: flex-start; } @media screen and (max-width: 1599.5px) { #llar-setting-page .add_block__under_table .add_block__list .item, #llar-setting-page-logs .add_block__under_table .add_block__list .item, #llar-setting-page-logs__active .add_block__under_table .add_block__list .item, #llar-setting-page-debug .add_block__under_table .add_block__list .item, #llar-setting-page-premium .add_block__under_table .add_block__list .item, #llar-setting-page-help .add_block__under_table .add_block__list .item { flex: 0 0 32%; } } #llar-setting-page .add_block__under_table .add_block__list .item .icon, #llar-setting-page-logs .add_block__under_table .add_block__list .item .icon, #llar-setting-page-logs__active .add_block__under_table .add_block__list .item .icon, #llar-setting-page-debug .add_block__under_table .add_block__list .item .icon, #llar-setting-page-premium .add_block__under_table .add_block__list .item .icon, #llar-setting-page-help .add_block__under_table .add_block__list .item .icon { width: 50px; height: 50px; vertical-align: middle; margin-right: 8px; } #llar-setting-page .add_block__under_table .add_block__list .item .name, #llar-setting-page-logs .add_block__under_table .add_block__list .item .name, #llar-setting-page-logs__active .add_block__under_table .add_block__list .item .name, #llar-setting-page-debug .add_block__under_table .add_block__list .item .name, #llar-setting-page-premium .add_block__under_table .add_block__list .item .name, #llar-setting-page-help .add_block__under_table .add_block__list .item .name { width: 80%; padding-bottom: 17px; } #llar-setting-page .add_block__under_table.image_plus .row__list, #llar-setting-page-logs .add_block__under_table.image_plus .row__list, #llar-setting-page-logs__active .add_block__under_table.image_plus .row__list, #llar-setting-page-debug .add_block__under_table.image_plus .row__list, #llar-setting-page-premium .add_block__under_table.image_plus .row__list, #llar-setting-page-help .add_block__under_table.image_plus .row__list { display: flex; } #llar-setting-page .add_block__under_table.image_plus .row__list .add_block__title, #llar-setting-page-logs .add_block__under_table.image_plus .row__list .add_block__title, #llar-setting-page-logs__active .add_block__under_table.image_plus .row__list .add_block__title, #llar-setting-page-debug .add_block__under_table.image_plus .row__list .add_block__title, #llar-setting-page-premium .add_block__under_table.image_plus .row__list .add_block__title, #llar-setting-page-help .add_block__under_table.image_plus .row__list .add_block__title { flex: 0 0 14%; margin-right: 20px; } #llar-setting-page .add_block__under_table.image_plus .add_block__list, #llar-setting-page-logs .add_block__under_table.image_plus .add_block__list, #llar-setting-page-logs__active .add_block__under_table.image_plus .add_block__list, #llar-setting-page-debug .add_block__under_table.image_plus .add_block__list, #llar-setting-page-premium .add_block__under_table.image_plus .add_block__list, #llar-setting-page-help .add_block__under_table.image_plus .add_block__list { gap: 16px; } @media screen and (max-width: 1599.5px) { #llar-setting-page .add_block__under_table.image_plus .add_block__list, #llar-setting-page-logs .add_block__under_table.image_plus .add_block__list, #llar-setting-page-logs__active .add_block__under_table.image_plus .add_block__list, #llar-setting-page-debug .add_block__under_table.image_plus .add_block__list, #llar-setting-page-premium .add_block__under_table.image_plus .add_block__list, #llar-setting-page-help .add_block__under_table.image_plus .add_block__list { column-gap: 10px; } } #llar-setting-page .add_block__under_table.image_plus .add_block__list .item, #llar-setting-page-logs .add_block__under_table.image_plus .add_block__list .item, #llar-setting-page-logs__active .add_block__under_table.image_plus .add_block__list .item, #llar-setting-page-debug .add_block__under_table.image_plus .add_block__list .item, #llar-setting-page-premium .add_block__under_table.image_plus .add_block__list .item, #llar-setting-page-help .add_block__under_table.image_plus .add_block__list .item { flex: 0 0 15%; flex-direction: column; align-items: start; border-radius: 20px; border: 1px solid #4ACAD8; } @media screen and (max-width: 1599.5px) { #llar-setting-page .add_block__under_table.image_plus .add_block__list .item, #llar-setting-page-logs .add_block__under_table.image_plus .add_block__list .item, #llar-setting-page-logs__active .add_block__under_table.image_plus .add_block__list .item, #llar-setting-page-debug .add_block__under_table.image_plus .add_block__list .item, #llar-setting-page-premium .add_block__under_table.image_plus .add_block__list .item, #llar-setting-page-help .add_block__under_table.image_plus .add_block__list .item { flex: 1 0 30%; } } #llar-setting-page .add_block__under_table.image_plus .add_block__list .item .name, #llar-setting-page-logs .add_block__under_table.image_plus .add_block__list .item .name, #llar-setting-page-logs__active .add_block__under_table.image_plus .add_block__list .item .name, #llar-setting-page-debug .add_block__under_table.image_plus .add_block__list .item .name, #llar-setting-page-premium .add_block__under_table.image_plus .add_block__list .item .name, #llar-setting-page-help .add_block__under_table.image_plus .add_block__list .item .name { width: unset; margin: 10px 23px 17px; } #llar-setting-page .add_block__under_table.image_plus .add_block__list .item img, #llar-setting-page-logs .add_block__under_table.image_plus .add_block__list .item img, #llar-setting-page-logs__active .add_block__under_table.image_plus .add_block__list .item img, #llar-setting-page-debug .add_block__under_table.image_plus .add_block__list .item img, #llar-setting-page-premium .add_block__under_table.image_plus .add_block__list .item img, #llar-setting-page-help .add_block__under_table.image_plus .add_block__list .item img { width: 120px; align-self: center; } #llar-setting-page .gdpr-information-link, #llar-setting-page-logs .gdpr-information-link, #llar-setting-page-logs__active .gdpr-information-link, #llar-setting-page-debug .gdpr-information-link, #llar-setting-page-premium .gdpr-information-link, #llar-setting-page-help .gdpr-information-link { display: block; text-decoration: none; position: relative; } #llar-setting-page .gdpr-information-link:after, #llar-setting-page-logs .gdpr-information-link:after, #llar-setting-page-logs__active .gdpr-information-link:after, #llar-setting-page-debug .gdpr-information-link:after, #llar-setting-page-premium .gdpr-information-link:after, #llar-setting-page-help .gdpr-information-link:after { content: "\f345"; font-family: dashicons; line-height: 1; font-weight: 400; font-style: normal; text-transform: none; text-rendering: auto; font-size: 22px; text-align: center; position: absolute; right: 40px; top: 50%; color: #2A2F40; transform: translateY(-50%); } #llar-setting-page .button_block, #llar-setting-page-logs .button_block, #llar-setting-page-logs__active .button_block, #llar-setting-page-debug .button_block, #llar-setting-page-premium .button_block, #llar-setting-page-help .button_block { margin-top: 24px; display: flex; flex-wrap: nowrap; column-gap: 16px; } #llar-setting-page .button_block a.button.menu__item, #llar-setting-page-logs .button_block a.button.menu__item, #llar-setting-page-logs__active .button_block a.button.menu__item, #llar-setting-page-debug .button_block a.button.menu__item, #llar-setting-page-premium .button_block a.button.menu__item, #llar-setting-page-help .button_block a.button.menu__item { text-align: center; } #llar-setting-page .llar-accordion, #llar-setting-page-logs .llar-accordion, #llar-setting-page-logs__active .llar-accordion, #llar-setting-page-debug .llar-accordion, #llar-setting-page-premium .llar-accordion, #llar-setting-page-help .llar-accordion { font-family: inherit; font-size: inherit; font-weight: inherit; line-height: inherit; border-radius: 20px; background-color: #F6FBFF; } #llar-setting-page .llar-accordion .ui-accordion-header, #llar-setting-page-logs .llar-accordion .ui-accordion-header, #llar-setting-page-logs__active .llar-accordion .ui-accordion-header, #llar-setting-page-debug .llar-accordion .ui-accordion-header, #llar-setting-page-premium .llar-accordion .ui-accordion-header, #llar-setting-page-help .llar-accordion .ui-accordion-header { color: #2A2F40; font-weight: 500; font-size: 18px; margin-top: 20px; padding: 31px 40px 31px; border: 1px solid #4ACAD8; border-bottom: 0; border-top-right-radius: 20px; border-top-left-radius: 20px; background-color: #FDFDFD; } @media screen and (max-width: 1599.5px) { #llar-setting-page .llar-accordion .ui-accordion-header, #llar-setting-page-logs .llar-accordion .ui-accordion-header, #llar-setting-page-logs__active .llar-accordion .ui-accordion-header, #llar-setting-page-debug .llar-accordion .ui-accordion-header, #llar-setting-page-premium .llar-accordion .ui-accordion-header, #llar-setting-page-help .llar-accordion .ui-accordion-header { font-size: 16px; } } #llar-setting-page .llar-accordion .ui-accordion-header-collapsed, #llar-setting-page-logs .llar-accordion .ui-accordion-header-collapsed, #llar-setting-page-logs__active .llar-accordion .ui-accordion-header-collapsed, #llar-setting-page-debug .llar-accordion .ui-accordion-header-collapsed, #llar-setting-page-premium .llar-accordion .ui-accordion-header-collapsed, #llar-setting-page-help .llar-accordion .ui-accordion-header-collapsed { border: 0; border-radius: 20px; background: unset; box-shadow: 4px 4px 18px 0 rgba(162, 180, 189, 0.2); } #llar-setting-page .llar-accordion .ui-accordion-header.ui-accordion-header-active, #llar-setting-page-logs .llar-accordion .ui-accordion-header.ui-accordion-header-active, #llar-setting-page-logs__active .llar-accordion .ui-accordion-header.ui-accordion-header-active, #llar-setting-page-debug .llar-accordion .ui-accordion-header.ui-accordion-header-active, #llar-setting-page-premium .llar-accordion .ui-accordion-header.ui-accordion-header-active, #llar-setting-page-help .llar-accordion .ui-accordion-header.ui-accordion-header-active { background: white; } #llar-setting-page .llar-accordion .ui-accordion-header .llar_setup_code, #llar-setting-page-logs .llar-accordion .ui-accordion-header .llar_setup_code, #llar-setting-page-logs__active .llar-accordion .ui-accordion-header .llar_setup_code, #llar-setting-page-debug .llar-accordion .ui-accordion-header .llar_setup_code, #llar-setting-page-premium .llar-accordion .ui-accordion-header .llar_setup_code, #llar-setting-page-help .llar-accordion .ui-accordion-header .llar_setup_code { position: absolute; top: 50%; right: 2%; transform: translateY(-50%); } #llar-setting-page .llar-accordion .ui-accordion-header-active .llar_setup_code, #llar-setting-page-logs .llar-accordion .ui-accordion-header-active .llar_setup_code, #llar-setting-page-logs__active .llar-accordion .ui-accordion-header-active .llar_setup_code, #llar-setting-page-debug .llar-accordion .ui-accordion-header-active .llar_setup_code, #llar-setting-page-premium .llar-accordion .ui-accordion-header-active .llar_setup_code, #llar-setting-page-help .llar-accordion .ui-accordion-header-active .llar_setup_code { visibility: hidden; } #llar-setting-page .llar-accordion .ui-accordion-content, #llar-setting-page-logs .llar-accordion .ui-accordion-content, #llar-setting-page-logs__active .llar-accordion .ui-accordion-content, #llar-setting-page-debug .llar-accordion .ui-accordion-content, #llar-setting-page-premium .llar-accordion .ui-accordion-content, #llar-setting-page-help .llar-accordion .ui-accordion-content { padding-top: 0; margin-bottom: 16px; color: #2A2F40; border-bottom-right-radius: 20px; border-bottom-left-radius: 20px; border: 1px solid #4ACAD8; border-top: 0; background-color: #FDFDFD; overflow: hidden; } #llar-setting-page .llar-accordion .ui-accordion-content a, #llar-setting-page-logs .llar-accordion .ui-accordion-content a, #llar-setting-page-logs__active .llar-accordion .ui-accordion-content a, #llar-setting-page-debug .llar-accordion .ui-accordion-content a, #llar-setting-page-premium .llar-accordion .ui-accordion-content a, #llar-setting-page-help .llar-accordion .ui-accordion-content a { color: inherit; } #llar-setting-page .llar-accordion .ui-accordion-content .llar-form-table, #llar-setting-page-logs .llar-accordion .ui-accordion-content .llar-form-table, #llar-setting-page-logs__active .llar-accordion .ui-accordion-content .llar-form-table, #llar-setting-page-debug .llar-accordion .ui-accordion-content .llar-form-table, #llar-setting-page-premium .llar-accordion .ui-accordion-content .llar-form-table, #llar-setting-page-help .llar-accordion .ui-accordion-content .llar-form-table { margin-top: 0; border-spacing: 0; font-weight: 400; } #llar-setting-page .llar-accordion .ui-accordion-content .llar-form-table tr, #llar-setting-page-logs .llar-accordion .ui-accordion-content .llar-form-table tr, #llar-setting-page-logs__active .llar-accordion .ui-accordion-content .llar-form-table tr, #llar-setting-page-debug .llar-accordion .ui-accordion-content .llar-form-table tr, #llar-setting-page-premium .llar-accordion .ui-accordion-content .llar-form-table tr, #llar-setting-page-help .llar-accordion .ui-accordion-content .llar-form-table tr { box-shadow: unset; } #llar-setting-page .llar-accordion .ui-accordion-content .llar-form-table tr th, #llar-setting-page-logs .llar-accordion .ui-accordion-content .llar-form-table tr th, #llar-setting-page-logs__active .llar-accordion .ui-accordion-content .llar-form-table tr th, #llar-setting-page-debug .llar-accordion .ui-accordion-content .llar-form-table tr th, #llar-setting-page-premium .llar-accordion .ui-accordion-content .llar-form-table tr th, #llar-setting-page-help .llar-accordion .ui-accordion-content .llar-form-table tr th, #llar-setting-page .llar-accordion .ui-accordion-content .llar-form-table tr td, #llar-setting-page-logs .llar-accordion .ui-accordion-content .llar-form-table tr td, #llar-setting-page-logs__active .llar-accordion .ui-accordion-content .llar-form-table tr td, #llar-setting-page-debug .llar-accordion .ui-accordion-content .llar-form-table tr td, #llar-setting-page-premium .llar-accordion .ui-accordion-content .llar-form-table tr td, #llar-setting-page-help .llar-accordion .ui-accordion-content .llar-form-table tr td { padding-top: 0; } #llar-setting-page .llar-accordion .ui-accordion-content .llar-form-table tr th, #llar-setting-page-logs .llar-accordion .ui-accordion-content .llar-form-table tr th, #llar-setting-page-logs__active .llar-accordion .ui-accordion-content .llar-form-table tr th, #llar-setting-page-debug .llar-accordion .ui-accordion-content .llar-form-table tr th, #llar-setting-page-premium .llar-accordion .ui-accordion-content .llar-form-table tr th, #llar-setting-page-help .llar-accordion .ui-accordion-content .llar-form-table tr th { padding-left: 0; } #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .textarea_border textarea, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .input_border textarea { color: #A4A8B7; } #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .description-secondary { padding-left: 0; } #llar-setting-page-logs .add_block__under_table, #llar-setting-page-logs__active .add_block__under_table { margin-top: 20px; } #llar-setting-page-logs .add_block__under_table.image_plus, #llar-setting-page-logs__active .add_block__under_table.image_plus { box-shadow: 3px 5px 23px 0 rgba(162, 180, 189, 0.2); } #llar-setting-page-logs .add_block__under_table.image_plus .row__list, #llar-setting-page-logs__active .add_block__under_table.image_plus .row__list { display: flex; } #llar-setting-page-logs .add_block__under_table.image_plus .row__list .add_block__title, #llar-setting-page-logs__active .add_block__under_table.image_plus .row__list .add_block__title { flex: 0 0 14%; margin-right: 20px; } #llar-setting-page-logs .add_block__under_table.image_plus .add_block__list, #llar-setting-page-logs__active .add_block__under_table.image_plus .add_block__list { gap: 18px; } @media screen and (max-width: 1599.5px) { #llar-setting-page-logs .add_block__under_table.image_plus .add_block__list, #llar-setting-page-logs__active .add_block__under_table.image_plus .add_block__list { column-gap: 10px; } } #llar-setting-page-logs .add_block__under_table.image_plus .add_block__list .item, #llar-setting-page-logs__active .add_block__under_table.image_plus .add_block__list .item { flex: 0 0 23%; } @media screen and (max-width: 1599.5px) { #llar-setting-page-logs .add_block__under_table.image_plus .add_block__list .item, #llar-setting-page-logs__active .add_block__under_table.image_plus .add_block__list .item { flex: 0 0 49%; } } #llar-setting-page-logs .add_block__under_table.image_plus .add_block__list .item .name, #llar-setting-page-logs__active .add_block__under_table.image_plus .add_block__list .item .name { margin: 10px 33px 37px; } #llar-setting-page-logs .add_block__under_table.image_plus .add_block__list .item img, #llar-setting-page-logs__active .add_block__under_table.image_plus .add_block__list .item img { margin-top: 23px; width: 154px; } #llar-setting-page-logs .description-page .description-secondary a.unlink, #llar-setting-page-logs__active .description-page .description-secondary a.unlink { font-weight: 500; } #llar-setting-page-logs .description-page .description-secondary a.unlink:hover, #llar-setting-page-logs__active .description-page .description-secondary a.unlink:hover { border-bottom: unset; } #llar-setting-page-logs__active .llar-table-header { display: flex; justify-content: space-between; align-items: flex-start; margin: 40px 0 5px; } #llar-setting-page-logs__active .llar-table-header .title_page { margin-top: 0; } #llar-setting-page-logs__active .llar-table-header .title_page span { color: #666D84; font-size: 80%; font-weight: 400; margin-left: 10px; } #llar-setting-page-logs__active .llar-table-header .right-link { font-size: 16px; line-height: 1.625; margin-right: 5px; text-align: center; } #llar-setting-page-logs__active .llar-table-header .right-link .dashicons-image-rotate { font-size: 16px; vertical-align: middle; } #llar-setting-page-logs__active .llar-table-header .right-link .dashicons-editor-help { vertical-align: middle; } #llar-setting-page-logs__active .llar-table-scroll-wrap { max-height: 400px; padding: 0 20px 30px; border-radius: 16px; background-color: white; box-shadow: 4px 4px 18px 0 rgba(162, 180, 189, 0.2); overflow-y: auto; scrollbar-width: thin; } @media screen and (max-width: 1599.5px) { #llar-setting-page-logs__active .llar-table-scroll-wrap { padding: 0 15px 20px; } } @media screen and (max-width: 1399.5px) { #llar-setting-page-logs__active .llar-table-scroll-wrap { padding: 0 10px 10px; } } #llar-setting-page-logs__active .llar-table-scroll-wrap::-webkit-scrollbar { width: 4px; } #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table { position: relative; border-collapse: separate; border-spacing: 0 3px; } #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table.llar-preloader:before { content: ""; display: block; width: 100%; height: 100%; background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46YXV0bztiYWNrZ3JvdW5kOjAgMCIgd2lkdGg9IjY0IiBoZWlnaHQ9IjY0IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiIGRpc3BsYXk9ImJsb2NrIj48Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiBmaWxsPSJub25lIiBzdHJva2U9IiNlM2UzZTMiIHN0cm9rZS13aWR0aD0iNSIgcj0iMzIiIHN0cm9rZS1kYXNoYXJyYXk9IjE1MC43OTY0NDczNzIzMTAwNyA1Mi4yNjU0ODI0NTc0MzY2OSIgdHJhbnNmb3JtPSJyb3RhdGUoMTQ0LjAxIDUwIDUwKSI+PGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIi8+PC9jaXJjbGU+PC9zdmc+"); background-color: rgba(255, 255, 255, 0.7); background-repeat: no-repeat; background-position: center center; z-index: 999; position: absolute; top: 0; left: 0; } #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table thead { position: sticky; top: 0; background: white; z-index: 100; } #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table thead tr th { color: #2A2F40; font-size: 16px; font-weight: 500; padding: 20px 18px; text-align: left; } @media screen and (max-width: 1599.5px) { #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table thead tr th { font-size: 15px; padding: 15px; } } @media screen and (max-width: 1399.5px) { #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table thead tr th { font-size: 12px; } } #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody { color: #666D84; } #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr.empty-row, #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody.login-attempts tr:nth-child(4n+1), #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr:nth-child(odd) { border-radius: 16px; background-color: #F6FBFF; } #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr.empty-row td:first-child, #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody.login-attempts tr:nth-child(4n+1) td:first-child, #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr:nth-child(odd) td:first-child { border-top-left-radius: 16px; border-bottom-left-radius: 16px; } #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr.empty-row td:last-child, #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody.login-attempts tr:nth-child(4n+1) td:last-child, #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr:nth-child(odd) td:last-child { border-top-right-radius: 16px; border-bottom-right-radius: 16px; } #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td { font-size: 16px; font-weight: 400; padding: 18px; } @media screen and (max-width: 1599.5px) { #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td { font-size: 14px; padding: 14px; } } @media screen and (max-width: 1399.5px) { #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td { font-size: 14px; padding: 12px; } } #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td.llar-col-nowrap { white-space: nowrap; } #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td.llar-app-log-actions { display: flex; justify-content: center; } #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td input.input_border, #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td select.input_border { color: #A4A8B7; border: 1px solid #A4A8B7; } #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td select { font-family: inherit; min-width: 150px; margin-right: 25px; background-size: 16px 16px; } #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td .llar-log-country-flag { display: flex; align-items: center; white-space: nowrap; gap: 3px; } #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td .llar-log-country-flag .hint_tooltip { width: fit-content; top: 33px; } #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td .llar-log-country-flag .hint_tooltip:before { right: 20%; } #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td .llar-log-country-flag .hint_tooltip-content { font-size: 14px; } #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td .llar-log-country-flag .llar-tooltip:before { width: auto !important; } #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td .llar-log-country-flag img { width: 34px; height: auto; border-radius: 4px; vertical-align: middle; margin-right: 5px; } @media screen and (max-width: 1599.5px) { #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td .llar-log-country-flag img { width: 30px; } } @media screen and (max-width: 1399.5px) { #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td .llar-log-country-flag img { width: 25px; } } #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td .button { line-height: 1; margin-right: 5px; border-radius: 8px; } #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td .button:last-child { margin-right: 0; } #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td .button .dashicons { vertical-align: middle; } #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td .button.llar-app-log-action-btn { min-width: 35px; text-align: center; display: inline-block; line-height: 20px; cursor: pointer; } #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td .button.llar-app-log-action-btn i { vertical-align: middle; } #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td .button.llar-app-log-action-btn:hover i { color: #3c8dbc; } #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table .table-inline-preloader { text-align: center; } #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table .table-inline-preloader.hidden { display: none; } #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table .table-inline-preloader tr td { padding: 5px; } #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table .table-inline-preloader tr td .load-more-button a { padding-bottom: 1px; text-decoration: unset; border-bottom: 1px dashed; } #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table .table-inline-preloader tr td .preloader-row { display: none; align-items: center; } #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table .table-inline-preloader tr td .preloader-row .preloader-icon { background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46YXV0bztiYWNrZ3JvdW5kOjAgMCIgd2lkdGg9IjY0IiBoZWlnaHQ9IjY0IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiIGRpc3BsYXk9ImJsb2NrIj48Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiBmaWxsPSJub25lIiBzdHJva2U9IiNlM2UzZTMiIHN0cm9rZS13aWR0aD0iNSIgcj0iMzIiIHN0cm9rZS1kYXNoYXJyYXk9IjE1MC43OTY0NDczNzIzMTAwNyA1Mi4yNjU0ODI0NTc0MzY2OSIgdHJhbnNmb3JtPSJyb3RhdGUoMTQ0LjAxIDUwIDUwKSI+PGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIi8+PC9jaXJjbGU+PC9zdmc+"); background-size: 100%; background-repeat: no-repeat; width: 30px; height: 30px; display: inline-block; } #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table .table-inline-preloader tr td .preloader-row .preloader-text { color: #999; } #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table .table-inline-preloader.loading tr td .load-more-button { display: none; } #llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table .table-inline-preloader.loading tr td .preloader-row { display: inline-flex; } #llar-setting-page-logs__active.limit-login-app-dashboard .llar-preloader-wrap { position: relative; } #llar-setting-page-logs__active.limit-login-app-dashboard .llar-preloader-wrap.loading:before { content: ""; display: block; width: 100%; height: 100%; background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46YXV0bztiYWNrZ3JvdW5kOjAgMCIgd2lkdGg9IjY0IiBoZWlnaHQ9IjY0IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiIGRpc3BsYXk9ImJsb2NrIj48Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiBmaWxsPSJub25lIiBzdHJva2U9IiNlM2UzZTMiIHN0cm9rZS13aWR0aD0iNSIgcj0iMzIiIHN0cm9rZS1kYXNoYXJyYXk9IjE1MC43OTY0NDczNzIzMTAwNyA1Mi4yNjU0ODI0NTc0MzY2OSIgdHJhbnNmb3JtPSJyb3RhdGUoMTQ0LjAxIDUwIDUwKSI+PGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIi8+PC9jaXJjbGU+PC9zdmc+"); background-color: rgba(255, 255, 255, 0.7); background-repeat: no-repeat; background-position: center center; z-index: 999; position: absolute; top: 0; left: 0; } #llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-log-pagination > a { font-size: 16px; line-height: 1.625; } #llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-log-pagination .spinner { float: none; } #llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-acl-rules { display: flex; justify-content: space-between; flex-wrap: wrap; column-gap: 15px; } #llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-acl-rules .app-rules-col { flex: 1 0 49%; min-width: 590px; } #llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .help-link { color: #4ACAD8; font-size: 16px; padding: 10px; } #llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .llar-form-table thead td { font-size: 16px; } @media screen and (max-width: 1599.5px) { #llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .llar-form-table thead td { font-size: 15px; } } @media screen and (max-width: 1399.5px) { #llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .llar-form-table thead td { font-size: 14px; } } #llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .llar-form-table thead .llar-app-acl-action-col { text-align: center; } #llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .llar-form-table tbody td { font-size: 16px; padding-right: 5px; } @media screen and (max-width: 1599.5px) { #llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .llar-form-table tbody td { font-size: 15px; } } @media screen and (max-width: 1399.5px) { #llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .llar-form-table tbody td { font-size: 14px; } } #llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .llar-form-table tbody td input { min-width: 195px; } #llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .llar-form-table tbody td select { min-width: 200px; margin-right: 0; } #llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .llar-form-table tbody td .button { min-width: 20px; margin-right: 20px; border-radius: 8px; } #llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .llar-form-table tbody [class^=llar-app-rule] { margin-top: 10px; border-radius: 16px; } #llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .llar-form-table tbody [class^=llar-app-rule] td { padding-left: 45px; } #llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .llar-form-table tbody [class^=llar-app-rule] td:first-child { border-top-left-radius: 16px; border-bottom-left-radius: 16px; } #llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .llar-form-table tbody [class^=llar-app-rule] td:last-child { border-top-right-radius: 16px; border-bottom-right-radius: 16px; } #llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .llar-form-table tbody .llar-app-acl-action-col { padding: 10px 25px 10px 15px; text-align: center; } #llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .llar-form-table tbody .llar-app-acl-action-col .llar-app-acl-add-rule { min-width: 100%; } #llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .llar-form-table tbody .llar-app-rule-pass { background-color: #cffbe8; } #llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .llar-form-table tbody .llar-app-rule-allow { background-color: rgba(74, 202, 216, 0.0980392157); } #llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .llar-form-table tbody .llar-app-rule-deny { background-color: rgba(255, 150, 155, 0.1490196078); } #llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .llar-form-table tbody .llar-app-acl-remove { color: #EC4652; border-color: #EC4652; background-color: rgba(255, 150, 155, 0.1490196078); } #llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .llar-form-table .origin { float: right; opacity: 0.5; } #llar-setting-page-logs__active.limit-login-app-dashboard .llar-block-country-section { padding: 30px; background-color: white; border-radius: 16px; box-shadow: 4px 4px 18px 0 rgba(162, 180, 189, 0.2); } #llar-setting-page-logs__active.limit-login-app-dashboard .llar-block-country-section .llar-block-country-mode { font-size: 16px; color: #666D84; display: inline-block; vertical-align: middle; } #llar-setting-page-logs__active.limit-login-app-dashboard .llar-block-country-section .llar-block-country-mode select { font-family: inherit; min-width: 150px; margin-right: 25px; background: #FDFDFD url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%234ACAD8FF'%3e%3cpath d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e") no-repeat right 5px top 55%; background-size: 16px 16px; } #llar-setting-page-logs__active.limit-login-app-dashboard .llar-block-country-section .llar-toggle-countries-list { font-size: 16px; color: #4ACAD8; text-decoration: none; vertical-align: middle; border-bottom: 1px solid currentColor; } #llar-setting-page-logs__active.limit-login-app-dashboard .llar-block-country-section .llar-block-country-list { font-size: 16px; color: #2A2F40; display: flex; flex-wrap: wrap; max-height: 400px; overflow-y: auto; } #llar-setting-page-logs__active.limit-login-app-dashboard .llar-block-country-section .llar-block-country-list:first-child { margin-top: 0; } #llar-setting-page-logs__active.limit-login-app-dashboard .llar-block-country-section .llar-block-country-list .llar-country { flex: 0 0 10%; } #llar-setting-page-logs__active.limit-login-app-dashboard .llar-block-country-section .llar-block-country-list .llar-country label { padding-bottom: 10px; display: inline-block; } #llar-setting-page-logs__active.limit-login-app-dashboard .llar-block-country-section .llar-block-country-list.llar-all-countries-selected { display: inline; margin-left: 20px; vertical-align: middle; overflow: hidden; } #llar-setting-page-logs__active.limit-login-app-dashboard .llar-block-country-section .llar-block-country-list.llar-all-countries-selected .llar-country { margin-bottom: 0; display: inline-block; margin-right: 20px; padding-right: 20px; border-right: 1px solid #E8E9EC; } #llar-setting-page-logs__active.limit-login-app-dashboard .llar-block-country-section .llar-block-country-list.llar-all-countries-selected .llar-country label { color: #2A2F40; padding-bottom: 0; white-space: nowrap; } #llar-setting-page-logs__active.limit-login-app-dashboard .llar-block-country-section .llar-block-country-list.llar-all-countries-selected .llar-country:last-child { border-right: unset; } #llar-setting-page-logs__active.limit-login-app-dashboard .llar-block-country-section .llar-block-country-list.llar-all-countries-list { font-size: 14px; display: none; margin: 10px 0; } #llar-setting-page-logs__active.limit-login-app-dashboard .llar-block-country-section .llar-block-country-list.llar-all-countries-list.visible { display: flex; border-top: 1px solid #dddada; padding-top: 10px; } .llar-blur-block { position: absolute; top: 0; bottom: 0; left: 0; right: 0; backdrop-filter: blur(1.5px); background-color: rgba(164, 168, 183, 0.0784313725); } .llar-blur-block-text { position: absolute; top: 45%; left: 50%; max-width: 46rem; width: 80%; font-size: 18px; line-height: 1.3; color: #666D84; text-align: center; padding: 1.5rem 2rem; background-color: #ECFAFB; border-radius: 20px; border: 1px solid #4ACAD8; transform: translate(-50%, -50%); } @media screen and (max-width: 1599.5px) { .llar-blur-block-text { top: 40%; font-size: 16px; } } @media screen and (max-width: 1399.5px) { .llar-blur-block-text { top: 45%; font-size: 14px; } } .llar-blur-block-text img { max-width: 5rem; } @media screen and (max-width: 1599.5px) { .llar-blur-block-text img { max-width: 4rem; } } .llar-blur-block-text .title { margin-top: 1rem; font-size: 26px; font-weight: 500; } @media screen and (max-width: 1599.5px) { .llar-blur-block-text .title { margin-top: 0.75rem; font-size: 24px; } } @media screen and (max-width: 1399.5px) { .llar-blur-block-text .title { margin-top: 0.5rem; } } .llar-blur-block-text .description { margin-top: 1rem; } @media screen and (max-width: 1599.5px) { .llar-blur-block-text .description { margin-top: 0.75rem; } } @media screen and (max-width: 1399.5px) { .llar-blur-block-text .description { margin-top: 0.5rem; } } .llar-blur-block-text .footer { border-top: 1px solid #4ACAD8; padding-top: 0.75rem; margin-top: 1rem; font-weight: 500; } @media screen and (max-width: 1599.5px) { .llar-blur-block-text .footer { margin-top: 0.75rem; } } @media screen and (max-width: 1399.5px) { .llar-blur-block-text .footer { padding-top: 0.5rem; margin-top: 0.5rem; } } .llar-blur-block-cell { filter: blur(7px); } .llar-table-app-login, #llar-setting-page-logs__active .llar-table-scroll-wrap, .llar-table-no_app-login { position: relative; border-collapse: separate; border-spacing: 0 3px; } .llar-table-app-login.llar-preloader:before, #llar-setting-page-logs__active .llar-preloader.llar-table-scroll-wrap:before, .llar-table-no_app-login.llar-preloader:before { content: ""; display: block; width: 100%; height: 100%; background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46YXV0bztiYWNrZ3JvdW5kOjAgMCIgd2lkdGg9IjY0IiBoZWlnaHQ9IjY0IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiIGRpc3BsYXk9ImJsb2NrIj48Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiBmaWxsPSJub25lIiBzdHJva2U9IiNlM2UzZTMiIHN0cm9rZS13aWR0aD0iNSIgcj0iMzIiIHN0cm9rZS1kYXNoYXJyYXk9IjE1MC43OTY0NDczNzIzMTAwNyA1Mi4yNjU0ODI0NTc0MzY2OSIgdHJhbnNmb3JtPSJyb3RhdGUoMTQ0LjAxIDUwIDUwKSI+PGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIi8+PC9jaXJjbGU+PC9zdmc+"); background-color: rgba(255, 255, 255, 0.7); background-repeat: no-repeat; background-position: center center; z-index: 999; position: absolute; top: 0; left: 0; } .llar-table-app-login tr th, #llar-setting-page-logs__active .llar-table-scroll-wrap tr th, .llar-table-app-login tr td, #llar-setting-page-logs__active .llar-table-scroll-wrap tr td, .llar-table-no_app-login tr th, .llar-table-no_app-login tr td { font-size: 16px; font-weight: 400; width: fit-content; padding: 20px 2px 20px 14px; } @media screen and (max-width: 1599.5px) { .llar-table-app-login tr th, #llar-setting-page-logs__active .llar-table-scroll-wrap tr th, .llar-table-app-login tr td, #llar-setting-page-logs__active .llar-table-scroll-wrap tr td, .llar-table-no_app-login tr th, .llar-table-no_app-login tr td { font-size: 14px; padding: 15px 2px 15px 12px; } } @media screen and (max-width: 1399.5px) { .llar-table-app-login tr th, #llar-setting-page-logs__active .llar-table-scroll-wrap tr th, .llar-table-app-login tr td, #llar-setting-page-logs__active .llar-table-scroll-wrap tr td, .llar-table-no_app-login tr th, .llar-table-no_app-login tr td { padding: 12px 2px 12px 14px; } } @media screen and (max-width: 767.5px) { .llar-table-app-login tr th, #llar-setting-page-logs__active .llar-table-scroll-wrap tr th, .llar-table-app-login tr td, #llar-setting-page-logs__active .llar-table-scroll-wrap tr td, .llar-table-no_app-login tr th, .llar-table-no_app-login tr td { display: table-cell; width: fit-content; font-size: 12px; } } .llar-table-app-login thead tr th, #llar-setting-page-logs__active .llar-table-scroll-wrap thead tr th, .llar-table-no_app-login thead tr th { color: #2A2F40; font-weight: 500; text-align: center; } .llar-table-app-login tbody.login-attempts tr, #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr, .llar-table-no_app-login tbody.login-attempts tr { border-radius: 16px; background-color: unset; } .llar-table-app-login tbody.login-attempts tr:nth-child(4n+1), #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr:nth-child(4n+1), .llar-table-no_app-login tbody.login-attempts tr:nth-child(4n+1) { background-color: #F6FBFF; } .llar-table-app-login tbody.login-attempts tr:nth-child(4n+3), #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr:nth-child(4n+3), .llar-table-no_app-login tbody.login-attempts tr:nth-child(4n+3) { background-color: unset; } .llar-table-app-login tbody.login-attempts tr:nth-child(4n+2), #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr:nth-child(4n+2), .llar-table-app-login tbody.login-attempts tr:nth-child(4n+4), #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr:nth-child(4n+4), .llar-table-no_app-login tbody.login-attempts tr:nth-child(4n+2), .llar-table-no_app-login tbody.login-attempts tr:nth-child(4n+4) { background-color: rgba(164, 168, 183, 0.0784313725); } .llar-table-app-login tbody.login-attempts tr td, #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td, .llar-table-no_app-login tbody.login-attempts tr td { color: #666D84; } .llar-table-app-login tbody.login-attempts tr td:first-child, #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td:first-child, .llar-table-no_app-login tbody.login-attempts tr td:first-child { border-top-left-radius: 16px; border-bottom-left-radius: 16px; } .llar-table-app-login tbody.login-attempts tr td:last-child, #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td:last-child, .llar-table-no_app-login tbody.login-attempts tr td:last-child { border-top-right-radius: 16px; border-bottom-right-radius: 16px; } .llar-table-app-login tbody.login-attempts tr td.llar-col-nowrap, #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td.llar-col-nowrap, .llar-table-no_app-login tbody.login-attempts tr td.llar-col-nowrap { white-space: nowrap; } .llar-table-app-login tbody.login-attempts tr td select, #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td select, .llar-table-no_app-login tbody.login-attempts tr td select { font-family: inherit; min-width: 150px; margin-right: 25px; background-size: 16px 16px; } .llar-table-app-login tbody.login-attempts tr td .hint_tooltip, #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .hint_tooltip, .llar-table-no_app-login tbody.login-attempts tr td .hint_tooltip { box-sizing: content-box; right: 0; top: 30px; } .llar-table-app-login tbody.login-attempts tr td .hint_tooltip:before, #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .hint_tooltip:before, .llar-table-no_app-login tbody.login-attempts tr td .hint_tooltip:before { right: 25px; } .llar-table-app-login tbody.login-attempts tr td .hint_tooltip-content, #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .hint_tooltip-content, .llar-table-no_app-login tbody.login-attempts tr td .hint_tooltip-content { font-size: 14px; color: white; } @media screen and (max-width: 767.5px) { .llar-table-app-login tbody.login-attempts tr td .hint_tooltip-content, #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .hint_tooltip-content, .llar-table-no_app-login tbody.login-attempts tr td .hint_tooltip-content { font-size: 12px; } } .llar-table-app-login tbody.login-attempts tr td .hint_tooltip-content ul, #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .hint_tooltip-content ul, .llar-table-no_app-login tbody.login-attempts tr td .hint_tooltip-content ul { padding-left: 16px; padding-right: 10px; } .llar-table-app-login tbody.login-attempts tr td .hint_tooltip-content ul li, #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .hint_tooltip-content ul li, .llar-table-no_app-login tbody.login-attempts tr td .hint_tooltip-content ul li { font-size: inherit; color: inherit; margin-bottom: 0; padding-left: 10px; min-width: 120px; } .llar-table-app-login tbody.login-attempts tr td .hint_tooltip-content ul li::before, #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .hint_tooltip-content ul li::before, .llar-table-no_app-login tbody.login-attempts tr td .hint_tooltip-content ul li::before { content: "✧"; color: white; font-size: 12px; margin-left: -15px; padding-right: 3px; } .llar-table-app-login tbody.login-attempts tr td .hint_tooltip-parent, #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .hint_tooltip-parent, .llar-table-no_app-login tbody.login-attempts tr td .hint_tooltip-parent { display: inline-block; position: relative; } .llar-table-app-login tbody.login-attempts tr td .hint_tooltip-parent span, #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .hint_tooltip-parent span, .llar-table-no_app-login tbody.login-attempts tr td .hint_tooltip-parent span { color: #FF7C06; font-weight: 500; } .llar-table-app-login tbody.login-attempts tr td .hint_tooltip-parent .dashicons, #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .hint_tooltip-parent .dashicons, .llar-table-no_app-login tbody.login-attempts tr td .hint_tooltip-parent .dashicons { color: #A4A8B7; } @media screen and (max-width: 1599.5px) { .llar-table-app-login tbody.login-attempts tr td .hint_tooltip-parent .dashicons, #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .hint_tooltip-parent .dashicons, .llar-table-no_app-login tbody.login-attempts tr td .hint_tooltip-parent .dashicons { line-height: unset; font-size: 14px; } } @media screen and (max-width: 767.5px) { .llar-table-app-login tbody.login-attempts tr td .hint_tooltip-parent .dashicons, #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .hint_tooltip-parent .dashicons, .llar-table-no_app-login tbody.login-attempts tr td .hint_tooltip-parent .dashicons { font-size: 12px; } } .llar-table-app-login tbody.login-attempts tr td .llar-log-country-flag, #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .llar-log-country-flag, .llar-table-no_app-login tbody.login-attempts tr td .llar-log-country-flag { display: flex; align-items: center; white-space: nowrap; gap: 3px; } .llar-table-app-login tbody.login-attempts tr td .llar-log-country-flag .llar-tooltip:before, #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .llar-log-country-flag .llar-tooltip:before, .llar-table-no_app-login tbody.login-attempts tr td .llar-log-country-flag .llar-tooltip:before { width: auto !important; } .llar-table-app-login tbody.login-attempts tr td .llar-log-country-flag .hint_tooltip, #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .llar-log-country-flag .hint_tooltip, .llar-table-no_app-login tbody.login-attempts tr td .llar-log-country-flag .hint_tooltip { width: fit-content; right: 0; top: 35px; } .llar-table-app-login tbody.login-attempts tr td .llar-log-country-flag img, #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .llar-log-country-flag img, .llar-table-no_app-login tbody.login-attempts tr td .llar-log-country-flag img { width: 34px; height: auto; border-radius: 4px; vertical-align: middle; margin-right: 4px; } @media screen and (max-width: 1599.5px) { .llar-table-app-login tbody.login-attempts tr td .llar-log-country-flag img, #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .llar-log-country-flag img, .llar-table-no_app-login tbody.login-attempts tr td .llar-log-country-flag img { width: 30px; } } @media screen and (max-width: 1399.5px) { .llar-table-app-login tbody.login-attempts tr td .llar-log-country-flag img, #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .llar-log-country-flag img, .llar-table-no_app-login tbody.login-attempts tr td .llar-log-country-flag img { width: 25px; } } .llar-table-app-login tbody.login-attempts tr td .button, #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .button, .llar-table-no_app-login tbody.login-attempts tr td .button { line-height: 1; margin-right: 5px; border-radius: 8px; } .llar-table-app-login tbody.login-attempts tr td .button:last-child, #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .button:last-child, .llar-table-no_app-login tbody.login-attempts tr td .button:last-child { margin-right: 0; } .llar-table-app-login tbody.login-attempts tr td .button .dashicons, #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .button .dashicons, .llar-table-no_app-login tbody.login-attempts tr td .button .dashicons { vertical-align: middle; } .llar-table-app-login tbody.login-attempts tr td .button.llar-add-login-open, #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .button.llar-add-login-open, .llar-table-no_app-login tbody.login-attempts tr td .button.llar-add-login-open { display: inline-block; width: 30px; min-width: unset; min-height: 30px; padding: 0; text-align: center; line-height: 20px; cursor: pointer; color: #A4A8B7; border-color: currentColor; } @media screen and (max-width: 767.5px) { .llar-table-app-login tbody.login-attempts tr td .button.llar-add-login-open, #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .button.llar-add-login-open, .llar-table-no_app-login tbody.login-attempts tr td .button.llar-add-login-open { width: 25px; min-height: 25px; } .llar-table-app-login tbody.login-attempts tr td .button.llar-add-login-open .dashicons, #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .button.llar-add-login-open .dashicons, .llar-table-no_app-login tbody.login-attempts tr td .button.llar-add-login-open .dashicons { font-size: 14px; height: 16px; } } .llar-table-app-login tbody.login-attempts tr td .button.llar-add-login-open:focus, #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .button.llar-add-login-open:focus, .llar-table-no_app-login tbody.login-attempts tr td .button.llar-add-login-open:focus { outline: unset; box-shadow: unset; } .llar-table-app-login tbody.login-attempts tr td .button.llar-add-login-open:hover, #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .button.llar-add-login-open:hover, .llar-table-no_app-login tbody.login-attempts tr td .button.llar-add-login-open:hover { color: #4ACAD8; } .llar-table-app-login tbody.login-attempts tr td.button-open, #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td.button-open, .llar-table-no_app-login tbody.login-attempts tr td.button-open { padding: 0 2px; } .llar-table-app-login tbody.login-attempts tr td.cell-login, #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td.cell-login, .llar-table-no_app-login tbody.login-attempts tr td.cell-login { max-width: 9ch; } .llar-table-app-login tbody.login-attempts tr td.cell-login a, #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td.cell-login a, .llar-table-no_app-login tbody.login-attempts tr td.cell-login a { display: inline-block; max-width: 9ch; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .llar-table-app-login tbody.login-attempts tr .cell-id, #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr .cell-id, .llar-table-no_app-login tbody.login-attempts tr .cell-id { display: inline-block; } .llar-table-app-login tbody.login-attempts tr .cell-id .id, #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr .cell-id .id, .llar-table-no_app-login tbody.login-attempts tr .cell-id .id { font-size: 15px; max-width: 14ch; display: inline-block; vertical-align: middle; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } @media screen and (max-width: 1599.5px) { .llar-table-app-login tbody.login-attempts tr .cell-id .id, #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr .cell-id .id, .llar-table-no_app-login tbody.login-attempts tr .cell-id .id { font-size: 90%; } } .llar-table-app-login tbody.login-attempts tr .cell-id .hint_tooltip, #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr .cell-id .hint_tooltip, .llar-table-no_app-login tbody.login-attempts tr .cell-id .hint_tooltip { top: 30px !important; } .llar-table-app-login tbody.login-attempts tr .cell-role .hint_tooltip, #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr .cell-role .hint_tooltip, .llar-table-no_app-login tbody.login-attempts tr .cell-role .hint_tooltip { right: -25px; } .llar-table-app-login tbody.login-attempts tr.hidden-row, #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr.hidden-row, .llar-table-no_app-login tbody.login-attempts tr.hidden-row { display: none; } .llar-table-app-login tbody.login-attempts tr.hidden-row.table-row-open, #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr.hidden-row.table-row-open, .llar-table-no_app-login tbody.login-attempts tr.hidden-row.table-row-open { display: table-row; } .llar-table-app-login tbody.login-attempts tr.hidden-row.table-row-open td, #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr.hidden-row.table-row-open td, .llar-table-no_app-login tbody.login-attempts tr.hidden-row.table-row-open td { font-size: 16px; } @media screen and (max-width: 1399.5px) { .llar-table-app-login tbody.login-attempts tr.hidden-row.table-row-open td, #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr.hidden-row.table-row-open td, .llar-table-no_app-login tbody.login-attempts tr.hidden-row.table-row-open td { font-size: 14px; } } .llar-table-app-login tbody.login-attempts tr.hidden-row.table-row-open td span, #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr.hidden-row.table-row-open td span, .llar-table-no_app-login tbody.login-attempts tr.hidden-row.table-row-open td span { font-weight: 600; } .llar-table-app-login tbody.login-attempts tr.hidden-row.table-row-open td a, #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr.hidden-row.table-row-open td a, .llar-table-no_app-login tbody.login-attempts tr.hidden-row.table-row-open td a { white-space: nowrap; } .llar-table-app-login tbody.login-attempts tr.hidden-row.table-row-open td .open_street_map, #llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr.hidden-row.table-row-open td .open_street_map, .llar-table-no_app-login tbody.login-attempts tr.hidden-row.table-row-open td .open_street_map { border: unset; } .llar-table-app-login .table-inline-preloader, #llar-setting-page-logs__active .llar-table-scroll-wrap .table-inline-preloader, .llar-table-no_app-login .table-inline-preloader { text-align: center; } .llar-table-app-login .table-inline-preloader.hidden, #llar-setting-page-logs__active .llar-table-scroll-wrap .table-inline-preloader.hidden, .llar-table-no_app-login .table-inline-preloader.hidden { display: none; } .llar-table-app-login .table-inline-preloader tr td, #llar-setting-page-logs__active .llar-table-scroll-wrap .table-inline-preloader tr td, .llar-table-no_app-login .table-inline-preloader tr td { padding: 5px; } .llar-table-app-login .table-inline-preloader tr td .load-more-button a, #llar-setting-page-logs__active .llar-table-scroll-wrap .table-inline-preloader tr td .load-more-button a, .llar-table-no_app-login .table-inline-preloader tr td .load-more-button a { padding-bottom: 1px; text-decoration: unset; border-bottom: 1px dashed; } .llar-table-app-login .table-inline-preloader tr td .preloader-row, #llar-setting-page-logs__active .llar-table-scroll-wrap .table-inline-preloader tr td .preloader-row, .llar-table-no_app-login .table-inline-preloader tr td .preloader-row { display: none; align-items: center; } .llar-table-app-login .table-inline-preloader tr td .preloader-row .preloader-icon, #llar-setting-page-logs__active .llar-table-scroll-wrap .table-inline-preloader tr td .preloader-row .preloader-icon, .llar-table-no_app-login .table-inline-preloader tr td .preloader-row .preloader-icon { background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46YXV0bztiYWNrZ3JvdW5kOjAgMCIgd2lkdGg9IjY0IiBoZWlnaHQ9IjY0IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiIGRpc3BsYXk9ImJsb2NrIj48Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiBmaWxsPSJub25lIiBzdHJva2U9IiNlM2UzZTMiIHN0cm9rZS13aWR0aD0iNSIgcj0iMzIiIHN0cm9rZS1kYXNoYXJyYXk9IjE1MC43OTY0NDczNzIzMTAwNyA1Mi4yNjU0ODI0NTc0MzY2OSIgdHJhbnNmb3JtPSJyb3RhdGUoMTQ0LjAxIDUwIDUwKSI+PGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIi8+PC9jaXJjbGU+PC9zdmc+"); background-size: 100%; background-repeat: no-repeat; width: 30px; height: 30px; display: inline-block; } .llar-table-app-login .table-inline-preloader tr td .preloader-row .preloader-text, #llar-setting-page-logs__active .llar-table-scroll-wrap .table-inline-preloader tr td .preloader-row .preloader-text, .llar-table-no_app-login .table-inline-preloader tr td .preloader-row .preloader-text { color: #999; } .llar-table-app-login .table-inline-preloader.loading tr td .load-more-button, #llar-setting-page-logs__active .llar-table-scroll-wrap .table-inline-preloader.loading tr td .load-more-button, .llar-table-no_app-login .table-inline-preloader.loading tr td .load-more-button { display: none; } .llar-table-app-login .table-inline-preloader.loading tr td .preloader-row, #llar-setting-page-logs__active .llar-table-scroll-wrap .table-inline-preloader.loading tr td .preloader-row, .llar-table-no_app-login .table-inline-preloader.loading tr td .preloader-row { display: inline-flex; } .llar-notice-review, .llar-notice-notify { display: flex; padding: 15px 20px 0 !important; border-left: 4px solid #333 !important; } .llar-notice-review .llar-review-image img, .llar-notice-notify .llar-review-image img { margin-top: 10px; margin-bottom: 20px; } .llar-notice-review .llar-review-image span, .llar-notice-notify .llar-review-image span { font-size: 80px; color: orange; width: 80px; height: auto; margin-bottom: 20px; } .llar-notice-review .llar-review-info, .llar-notice-notify .llar-review-info { flex: 1; margin-left: 30px; } .llar-notice-review .llar-review-info .llar-buttons, .llar-notice-notify .llar-review-info .llar-buttons { display: flex; align-items: center; } .llar-notice-review .llar-review-info .llar-buttons li, .llar-notice-notify .llar-review-info .llar-buttons li { margin-right: 10px; } .llar-notice-review .llar-review-info .llar-buttons li .dashicons, .llar-notice-notify .llar-review-info .llar-buttons li .dashicons { margin-right: 5px; } .custom-app-tab { position: relative; } .custom-app-tab .spinner { float: none; } .custom-app-tab .llar-app-ajax-msg { font-size: 13px; margin-top: 5px; display: block; } .custom-app-tab .llar-app-ajax-msg.error { color: red; } .custom-app-tab .llar-app-ajax-msg.success { color: green; } .custom-app-tab .llar-delete-app { color: #dc3232; position: absolute; bottom: 15px; right: 15px; } .custom-app-tab .llar-delete-app:hover { opacity: 0.8; } .custom-app-tab .llar-why-use-premium-text { margin-top: 20px; } .custom-app-tab .llar-why-use-premium-text .title { font-weight: bold; font-size: 16px; color: #4d4d4d; } #llar-progress-bar { position: fixed; top: 0; height: 6px; left: 0; width: 100%; z-index: 999999; background-color: #eee; } #llar-progress-bar span { height: 100%; position: absolute; display: block; width: 0; background-color: #00b357; transition: width 0.4s; } .header_massage { margin-right: 20px; } .header_massage #llar-header-upgrade-mc-message, .header_massage #llar-header-upgrade-premium-message { position: relative; margin: 20px auto; width: fit-content; color: #FF9800; font-weight: 500; padding: 14px 32px; text-align: center; border-radius: 40px; border: 1px solid #EBB35A; background-color: #FFEFD6; box-shadow: 0 4px 18px 0 rgba(114, 117, 123, 0.2); } @media screen and (max-width: 991.5px) { .header_massage #llar-header-upgrade-mc-message, .header_massage #llar-header-upgrade-premium-message { padding: 5px 14px; font-size: 11px; } } @media screen and (max-width: 767.5px) { .header_massage #llar-header-upgrade-mc-message, .header_massage #llar-header-upgrade-premium-message { margin-left: 16px; margin-right: 16px; } } .header_massage #llar-header-upgrade-mc-message p, .header_massage #llar-header-upgrade-premium-message p { font-size: 16px; margin: 0; } .header_massage #llar-header-upgrade-mc-message p .dashicons, .header_massage #llar-header-upgrade-premium-message p .dashicons { width: 32px; height: 32px; font-size: 32px; color: inherit; vertical-align: middle; margin-right: 5px; } @media screen and (max-width: 991.5px) { .header_massage #llar-header-upgrade-mc-message p .dashicons, .header_massage #llar-header-upgrade-premium-message p .dashicons { width: 16px; height: 16px; font-size: 16px; } } .header_massage #llar-header-upgrade-mc-message.exhausted, .header_massage #llar-header-upgrade-premium-message.exhausted { color: #EC4652; font-weight: 400; margin-left: auto; margin-right: auto; padding: 12px 25px; background-color: rgba(236, 70, 82, 0.1019607843); border: 1px solid currentColor; } .header_massage #llar-header-upgrade-mc-message .close, .header_massage #llar-header-upgrade-premium-message .close { position: absolute; top: -6px; right: -9px; cursor: pointer; } .header_massage #llar-header-upgrade-mc-message .close .dashicons, .header_massage #llar-header-upgrade-premium-message .close .dashicons { width: 16px; height: 24px; font-size: 24px; } @media screen and (max-width: 991.5px) { .header_massage #llar-header-upgrade-mc-message .close .dashicons, .header_massage #llar-header-upgrade-premium-message .close .dashicons { width: 16px; height: 18px; font-size: 18px; } } #llar-header-login-custom-message { position: relative; margin: 20px auto; width: fit-content; color: #FF9800; font-weight: 500; padding: 14px 32px; text-align: center; border-radius: 40px; border: 1px solid #EBB35A; background-color: #FFEFD6; box-shadow: 0 4px 18px 0 rgba(114, 117, 123, 0.2); width: 900px; font-size: 16px; border-radius: 20px; } @media screen and (max-width: 1799.5px) { #llar-header-login-custom-message { margin-right: auto; } } @media screen and (max-width: 1199.5px) { #llar-header-login-custom-message { width: 795px; } } @media screen and (max-width: 991.5px) { #llar-header-login-custom-message { width: 710px; font-size: 95%; } } @media screen and (max-width: 767.5px) { #llar-header-login-custom-message { font-size: 90%; width: 100%; margin-right: auto; margin-left: auto; } } @media screen and (max-width: 575.5px) { #llar-header-login-custom-message { width: 400px; } } #llar-header-login-custom-message .message-flex { display: flex; } #llar-header-login-custom-message .message-flex .col-first img { width: 150px; } @media screen and (max-width: 1199.5px) { #llar-header-login-custom-message .message-flex .col-first img { width: 130px; } } @media screen and (max-width: 767.5px) { #llar-header-login-custom-message .message-flex .col-first img { width: 100px; } } #llar-header-login-custom-message .message-flex .col-second { width: 30%; line-height: 1.7; color: #2A2F40; margin: 16px 25px; text-align: left; } @media screen and (max-width: 1199.5px) { #llar-header-login-custom-message .message-flex .col-second { margin: 16px 10px; } } #llar-header-login-custom-message .message-flex .col-third { width: 45%; margin: 16px 25px; font-size: 87.5%; } @media screen and (max-width: 1199.5px) { #llar-header-login-custom-message .message-flex .col-third { margin: 16px 10px; } } #llar-header-login-custom-message .message-flex .col-third .row-first { color: #666D84; font-weight: 400; } #llar-header-login-custom-message .message-flex .col-third .row-second { position: relative; margin: 5px 10px; color: #A4A8B7; } #llar-header-login-custom-message .message-flex .col-third .row-second hr { background-color: rgba(255, 124, 6, 0.0980392157); display: inline-block; width: calc(50% - 50px); border: 0; height: 2px; vertical-align: middle; } #llar-header-login-custom-message .message-flex .col-third .row-second span { display: inline-flex; width: 50px; justify-content: center; } #llar-header-login-custom-message .message-flex .col-third .row-third { font-weight: 500; margin: 10px; padding: 5px 10px; background-color: rgba(255, 124, 6, 0.0980392157); border-radius: 10px; } .settings_page_limit-login-attempts .update-nag { display: none; } #llar-welcome-page { padding: 50px 0; } #llar-welcome-page img { max-width: 100%; height: auto; } #llar-welcome-page .llar-welcome-page-container { width: 100%; max-width: 760px; margin: 0 auto 30px; background-color: #fff; border-radius: 4px; box-shadow: 0 0 4px rgba(0, 0, 0, 0.1); } #llar-welcome-page .llar-welcome-page-container.llar-premium { border-top: 5px solid #50c1cd; } #llar-welcome-page .llar-welcome-page-container .llar-welcome-page-section { padding: 20px; text-align: center; } #llar-welcome-page .llar-welcome-page-container .llar-welcome-page-section .llar-logo { text-align: center; margin-top: 20px; margin-bottom: 30px; } #llar-welcome-page .llar-welcome-page-container .llar-welcome-page-section h2 { font-size: 2.4em; line-height: 1.4; } #llar-welcome-page .llar-welcome-page-container .llar-welcome-page-section h3 { font-size: 1.5em; line-height: 1.4; } #llar-welcome-page .llar-welcome-page-container .llar-welcome-page-section p { font-size: 17px; color: #444; } #llar-welcome-page .llar-welcome-page-container .llar-welcome-page-video-wrap img { width: 100%; height: auto; cursor: pointer; } #llar-welcome-page .llar-welcome-page-features { display: flex; flex-wrap: wrap; justify-content: space-between; padding: 0 15px; counter-reset: cnt1; } #llar-welcome-page .llar-welcome-page-features .llar-feature-item { flex: 0 0 24%; text-align: center; margin-bottom: 40px; position: relative; padding-bottom: 60px; } #llar-welcome-page .llar-welcome-page-features .llar-feature-item:before { content: counter(cnt1); counter-increment: cnt1; position: absolute; left: 50%; transform: translatex(-50%); bottom: 0; font-size: 1em; font-weight: 600; width: 40px; height: 40px; line-height: 40px; text-align: center; border-radius: 50%; background-color: #ecedef; color: #979aaa; } #llar-welcome-page .llar-welcome-page-features .llar-feature-item:after { position: absolute; content: ""; left: -39%; width: 69%; height: 1px; bottom: 1.4em; background-color: #ecedef; } #llar-welcome-page .llar-welcome-page-features .llar-feature-item:nth-child(4n+1):after { display: none; } #llar-welcome-page .llar-welcome-page-features .llar-feature-item .llar-feature-image { margin-bottom: 15px; } #llar-welcome-page .llar-welcome-page-features .llar-feature-item .llar-feature-info .llar-feature-title { font-weight: bold; margin-bottom: 15px; } #llar-welcome-page .llar-welcome-page-features .llar-feature-item .llar-feature-info .llar-feature-desc { color: #979aaa; } @media (max-width: 768px) { #llar-welcome-page .llar-welcome-page-features { display: block; } } #llar-welcome-page .llar-why-recommend { text-align: left; font-size: 17px; } #llar-welcome-page .llar-why-recommend ul li span { margin-right: 5px; width: auto; height: auto; font-size: 25px; vertical-align: middle; color: green; } #llar-welcome-page .llar-welcome-list { font-size: 17px; text-align: left; line-height: 1.4; list-style: none; } #llar-welcome-page .llar-welcome-list li span { margin-right: 10px; width: auto; height: auto; font-size: 22px; vertical-align: top; color: orange; } #llar-welcome-page .llar-upgrade-btn-wrap { padding: 20px; } #llar-welcome-page .llar-upgrade-btn-wrap a { display: inline-block; background-color: #e27800; color: #fff; font-size: 22px; padding: 20px; text-decoration: none; font-weight: 600; } #llar-welcome-page .llar-upgrade-btn-wrap a:hover { background-color: #af5d00; } #llar-welcome-page .llar-upgrade-questions { font-size: 17px; } .dashboard_page_llar-welcome .update-nag, .dashboard_page_llar-welcome .notice:not(.llar-notice-review), .toplevel_page_limit-login-attempts .update-nag, .toplevel_page_limit-login-attempts .notice:not(.llar-notice-review) { margin-top: 15px; display: none; } .dashboard_page_llar-welcome .update-nag p, .dashboard_page_llar-welcome .notice:not(.llar-notice-review) p, .toplevel_page_limit-login-attempts .update-nag p, .toplevel_page_limit-login-attempts .notice:not(.llar-notice-review) p { margin-left: 10px; } .dashboard_page_llar-welcome .video-container, .toplevel_page_limit-login-attempts .video-container { position: relative; padding-bottom: 56.1%; height: 0; overflow: hidden; } .dashboard_page_llar-welcome .video-container iframe, .toplevel_page_limit-login-attempts .video-container iframe { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } #wp-admin-bar-llar-root #wp-admin-bar-llar-root-premium a { color: orange; } #toplevel_page_limit-login-attempts .wp-menu-image.svg { background-size: 25px auto !important; margin-top: 7px; } #toplevel_page_limit-login-attempts .llar-submenu-premium-item a { color: orange; } #menu-settings li { position: relative; } #menu-settings li .llar-alert-icon { position: absolute; right: 5px; top: 7px; min-width: 15px; line-height: 15px; height: 15px; } #wpadminbar li .llar-alert-icon .plugin-count { vertical-align: middle; margin-top: -3px; } .llar-auto-update-notice { display: block !important; } .llar-attempts-chart-legend > div { margin-right: 10px; color: #60666d; display: inline-block; } .llar-attempts-chart-legend > div:last-child { margin-right: 0; } .llar-attempts-chart-legend > div:before { content: ""; display: inline-block; width: 37px; height: 9px; border: 3px solid; margin-right: 5px; vertical-align: middle; } .llar-attempts-chart-legend > div.legend-1:before { border-color: rgb(54, 162, 235); background-color: rgba(54, 162, 235, 0.3); } .llar-attempts-chart-legend > div.legend-2:before { border-color: rgba(174, 174, 174, 0.7); background-color: rgba(174, 174, 174, 0.2); } .llar-attempts-chart-legend > div.legend-2 .llar-tooltip:before { left: auto; right: 0; } #llar-dashboard-page { font-family: CoFo Sans, arial; margin-top: 40px; } #llar-dashboard-page * { box-sizing: border-box; } #llar-dashboard-page ul, #llar-dashboard-page ol { margin-left: 0; padding-left: 32px; } #llar-dashboard-page ul li, #llar-dashboard-page ol li { font-size: 16px; color: #666D84; padding-left: 16px; margin-bottom: 10px; } #llar-dashboard-page ul li::before, #llar-dashboard-page ol li::before { color: #9762EF; margin-left: -20px; } #llar-dashboard-page .section-title__new { display: flex; flex-wrap: nowrap; justify-content: space-between; gap: 20px; font-size: 16px; text-align: left; } @media screen and (max-width: 1799.5px) { #llar-dashboard-page .section-title__new { gap: 10px; } } @media screen and (max-width: 1599.5px) { #llar-dashboard-page .section-title__new { font-size: 14px; } } #llar-dashboard-page .section-title__new .llar-label { color: #2A2F40; min-width: fit-content; text-wrap: nowrap; padding: 2px 16px; border-radius: 8px; background-color: rgba(10, 172, 208, 0.08); } @media screen and (max-width: 1599.5px) { #llar-dashboard-page .section-title__new .llar-label { padding: 2px 5px; } } #llar-dashboard-page .section-title__new .llar-label-group { display: flex; column-gap: 20px; } #llar-dashboard-page .section-title__new .llar-label__url { color: #A4A8B7; font-size: 87.5%; margin-right: 18px; overflow: hidden; } @media screen and (max-width: 1599.5px) { #llar-dashboard-page .section-title__new .llar-label__url { margin-right: 4px; } } #llar-dashboard-page .section-title__new .llar-label__circle-blue { font-size: 64px; vertical-align: middle; color: #58C3FF; } #llar-dashboard-page .section-title__new .llar-label__circle-grey { font-size: 64px; vertical-align: middle; color: rgba(174, 174, 174, 0.6980392157); } #llar-dashboard-page .section-title__new .llar-label .dashicons { font-size: 140%; width: 14px; height: 14px; } #llar-dashboard-page .section-title__new .llar-label.exhausted { color: #EC4652; background-color: rgba(236, 70, 82, 0.1019607843); } #llar-dashboard-page .section-title__new .llar-label.request { background-color: unset; } #llar-dashboard-page .section-content { margin-top: 16px; overflow: hidden; } #llar-dashboard-page .dashboard-section-1 { margin-bottom: 20px; display: flex; flex-wrap: nowrap; gap: 16px; } @media screen and (max-width: 1399.5px) { #llar-dashboard-page .dashboard-section-1 { flex-wrap: wrap; gap: 8px; } } #llar-dashboard-page .dashboard-section-1 > [class^=info-box-] { position: relative; text-align: center; flex: 0 0 auto; width: calc(33.3% - 16px); padding: 32px 30px 24px; border-radius: 20px; background: #FDFDFD; box-shadow: 4px 4px 18px 0 rgba(162, 180, 189, 0.2); } @media screen and (max-width: 1799.5px) { #llar-dashboard-page .dashboard-section-1 > [class^=info-box-] { padding: 30px 16px 16px; } } @media screen and (max-width: 1599.5px) { #llar-dashboard-page .dashboard-section-1 > [class^=info-box-] { padding: 30px 16px; } } @media screen and (max-width: 1399.5px) { #llar-dashboard-page .dashboard-section-1 > [class^=info-box-] { width: calc(40% - 4px); min-height: 272px; } } @media screen and (max-width: 1199.5px) { #llar-dashboard-page .dashboard-section-1 > [class^=info-box-] { width: 100%; min-height: 294px; } } #llar-dashboard-page .dashboard-section-1 > [class^=info-box-]:last-child { border: 0; } #llar-dashboard-page .dashboard-section-1 > [class^=info-box-] .title { font-weight: 500; color: #666D84; font-size: 16px; line-height: 1.5; } #llar-dashboard-page .dashboard-section-1 > [class^=info-box-] .title-big { font-size: 20px; } #llar-dashboard-page .dashboard-section-1 .info-box-1 .section-title__new .llar-premium-label { float: right; margin-right: 18px; padding-top: 2px; color: #666D84; text-wrap: nowrap; } #llar-dashboard-page .dashboard-section-1 .info-box-1 .section-title__new .llar-premium-label .dashicons { width: unset; height: unset; background-color: #97F6C8; border-radius: 4px; color: #FDFDFD; margin-right: 5px; font-size: inherit; } #llar-dashboard-page .dashboard-section-1 .info-box-1 .section-title__new .llar-premium-label .dashicons.disabled { background-color: #EC4652; } @media screen and (max-width: 1599.5px) { #llar-dashboard-page .dashboard-section-1 .info-box-1 .section-title__new .llar-premium-label .dashicons { margin-top: 2px; } } @media screen and (max-width: 1199.5px) { #llar-dashboard-page .dashboard-section-1 .info-box-1 .section-title__new .llar-premium-label .dashicons { margin-right: 2px; } } #llar-dashboard-page .dashboard-section-1 .info-box-1 .section-content { clear: both; margin-top: 24px; margin-bottom: 16px; } #llar-dashboard-page .dashboard-section-1 .info-box-1 .chart { max-width: 300px; position: relative; margin-bottom: 15px; margin-left: auto; margin-right: auto; } #llar-dashboard-page .dashboard-section-1 .info-box-1 .chart .doughnut-chart-wrap { position: relative; width: 200px; height: auto; margin: 0 auto; } #llar-dashboard-page .dashboard-section-1 .info-box-1 .chart .llar-retries-count { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); font-size: 28px; font-weight: bold; } #llar-dashboard-page .dashboard-section-1 .info-box-1 .desc { margin-top: 10px; color: #A4A8B7; font-size: 14px; } #llar-dashboard-page .dashboard-section-1 .info-box-1 .actions { margin-top: 5px; } @media screen and (max-width: 1399.5px) { #llar-dashboard-page .dashboard-section-1 .info-box-2 { width: calc(60% - 4px); } } @media screen and (max-width: 1199.5px) { #llar-dashboard-page .dashboard-section-1 .info-box-2 { width: 100%; } } #llar-dashboard-page .dashboard-section-1 .info-box-2 .section-content { overflow: visible; } #llar-dashboard-page .dashboard-section-1 .info-box-2 .llar-chart-wrap { width: 100%; margin: 0 auto; clear: both; } #llar-dashboard-page .dashboard-section-1 .info-box-2 .llar-chart-wrap canvas { height: 300px; } #llar-dashboard-page .dashboard-section-1 .info-box-2 .chart-stats-legend { text-align: center; margin-top: 10px; } #llar-dashboard-page .dashboard-section-1 .info-box-3 { text-align: left; } @media screen and (max-width: 1399.5px) { #llar-dashboard-page .dashboard-section-1 .info-box-3 { width: 100%; } } #llar-dashboard-page .dashboard-section-1 .info-box-3 .section-content { overflow: unset; } #llar-dashboard-page .dashboard-section-1 .info-box-3 .section-content .list-unstyled { padding-left: 5px; font-size: 14px; line-height: 1.5; } #llar-dashboard-page .dashboard-section-1 .info-box-3 .desc { color: #666D84; font-size: 16px; line-height: 1.5; margin-bottom: 20px; } #llar-dashboard-page .dashboard-section-1 .info-box-3 .title { color: #2A2F40; font-size: 18px; } #llar-dashboard-page .dashboard-section-1 .info-box-3 .actions { position: relative; width: fit-content; left: 50%; transform: translateX(-50%); } #llar-dashboard-page .dashboard-section-1 .info-box-3 .actions__buttons { display: flex; flex-direction: row; column-gap: 16px; } #llar-dashboard-page .dashboard-section-1 .info-box-3 .actions__buttons a { text-transform: uppercase; font-size: 16px; margin-bottom: 5px; } #llar-dashboard-page .dashboard-section-1 .info-box-3 .actions__buttons a.button.menu__item { text-transform: none; text-align: center; } #llar-dashboard-page .dashboard-section-1 .info-box-3 .actions__buttons .menu__item { min-width: 200px; max-width: 235px; padding: 7px 8px; font-size: 16px; border-radius: 8px; margin: 0 auto; } @media screen and (max-width: 1599.5px) { #llar-dashboard-page .dashboard-section-1 .info-box-3 .actions__buttons .menu__item { min-width: 160px; } } #llar-dashboard-page .dashboard-section-1 .info-box-3 .actions__buttons .menu__item.button__transparent_orange { color: #FF7C06 !important; border: 1px solid; background: transparent; } #llar-dashboard-page .dashboard-section-1 .info-box-3 .actions__buttons .menu__item.button__transparent_orange:hover { background: rgba(255, 124, 6, 0.0980392157); border: 1px solid #FF7C06; } #llar-dashboard-page .dashboard-section-1 .info-box-3 .actions__buttons .menu__item.button__orange { color: #FDFDFD !important; background: #FF7C06; border: 1px solid #FF7C06; box-shadow: 0 5px 10px 0 rgba(255, 124, 6, 0.4980392157); } #llar-dashboard-page .dashboard-section-1 .info-box-3 .actions__buttons .menu__item.button__orange:hover { background: #F07200; } #llar-dashboard-page .dashboard-section-1 .info-box-3 .actions__buttons .menu__item:focus { outline: none !important; box-shadow: unset !important; } #llar-dashboard-page .dashboard-section-1 .info-box-3 .remark { font-size: 14px; color: #666D84; margin: 15px 16px 0; } #llar-dashboard-page .dashboard-section-1.custom .info-box-2 { flex: 0 0 calc(66.666% - 16px); width: calc(66.666% - 16px); } @media screen and (max-width: 1399.5px) { #llar-dashboard-page .dashboard-section-1.custom .info-box-2 { flex: 1 0 calc(50% - 4px); width: calc(50% - 4px); } } @media screen and (max-width: 1399.5px) and (max-width: 991.5px) { #llar-dashboard-page .dashboard-section-1.custom .info-box-2 { flex: 1 0 100%; width: 100%; min-height: 126px; } } #llar-dashboard-page .dashboard-section-2 { display: flex; flex-wrap: wrap; justify-content: space-between; margin-bottom: 20px; } #llar-dashboard-page .dashboard-section-2 > [class^=info-box-] { flex: 0 0 calc(50% - 10px); min-height: 100px; background: #FDFDFD; border: 1px solid #e4e4e4; padding: 15px; } #llar-dashboard-page .dashboard-section-2 > [class^=info-box-]:last-child { margin-right: 0; } #llar-dashboard-page .dashboard-section-2 .info-box-1 { padding: 0; } #llar-dashboard-page .dashboard-section-2 .info-box-1 .notifications-list { padding: 0; margin: 0; } #llar-dashboard-page .dashboard-section-2 .info-box-1 .notifications-list li { margin: 0; border-bottom: 1px solid #e4e4e4; } #llar-dashboard-page .dashboard-section-2 .info-box-1 .notifications-list li:last-child { border: 0; } #llar-dashboard-page .dashboard-section-2 .info-box-1 .notifications-list li a { text-decoration: none; padding: 15px; font-size: 15px; display: block; } #llar-dashboard-page .dashboard-section-2 .info-box-1 .notifications-list li a:hover { background-color: #f9f9f9; } #llar-dashboard-page .dashboard-section-2 .info-box-2 { display: flex; flex-wrap: wrap; } #llar-dashboard-page .dashboard-section-2 .info-box-2 .info-box-icon { flex: 0 0 100px; display: flex; justify-content: center; align-items: center; margin-right: 15px; } #llar-dashboard-page .dashboard-section-2 .info-box-2 .info-box-icon .dashicons { color: #0073a0; font-size: 50px; width: auto; height: auto; } #llar-dashboard-page .dashboard-section-2 .info-box-2 .info-box-content { flex: 1; } #llar-dashboard-page .dashboard-section-2 .info-box-2 .info-box-content .title { font-size: 20px; font-weight: bold; margin-bottom: 10px; line-height: 1.5; } #llar-dashboard-page .dashboard-section-2 .info-box-2 .info-box-content .desc { font-size: 15px; margin-bottom: 15px; } #llar-dashboard-page .dashboard-section-2 .info-box-2 .info-box-content .actions { display: flex; justify-content: space-between; } #llar-dashboard-page .dashboard-section-3 { display: flex; flex-wrap: nowrap; margin-bottom: 20px; column-gap: 16px; } @media screen and (max-width: 1399.5px) { #llar-dashboard-page .dashboard-section-3 { gap: 8px; } } @media screen and (max-width: 575.5px) { #llar-dashboard-page .dashboard-section-3 { flex-wrap: wrap; } } #llar-dashboard-page .dashboard-section-3 > [class^=info-box-] { position: relative; display: flex; flex-wrap: wrap; flex: 0 0 auto; width: calc(33.33333333% - 16px); padding: 20px 90px 26px 28px; border-radius: 20px; background: #FDFDFD; box-shadow: 4px 4px 18px 0 rgba(162, 180, 189, 0.2); } @media screen and (max-width: 1399.5px) { #llar-dashboard-page .dashboard-section-3 > [class^=info-box-] { padding: 16px 25px 30px; width: calc(33.33333333% - 5px); } } @media screen and (max-width: 767.5px) { #llar-dashboard-page .dashboard-section-3 > [class^=info-box-] { padding: 16px 10px 16px; } } @media screen and (max-width: 575.5px) { #llar-dashboard-page .dashboard-section-3 > [class^=info-box-] { flex: 0 0 100%; } } #llar-dashboard-page .dashboard-section-3 > [class^=info-box-] .info-box-icon { flex: 0 0 auto; display: flex; justify-content: center; align-items: start; } #llar-dashboard-page .dashboard-section-3 > [class^=info-box-] .info-box-icon img { width: 50px; height: 50px; vertical-align: middle; margin-right: 16px; } @media screen and (max-width: 1399.5px) { #llar-dashboard-page .dashboard-section-3 > [class^=info-box-] .info-box-icon img { width: 40px; height: 40px; margin-right: 8px; } } @media screen and (max-width: 767.5px) { #llar-dashboard-page .dashboard-section-3 > [class^=info-box-] .info-box-icon img { width: 35px; height: 35px; margin-right: 4px; } } #llar-dashboard-page .dashboard-section-3 > [class^=info-box-] .info-box-content { flex: 1; } #llar-dashboard-page .dashboard-section-3 > [class^=info-box-] .info-box-content .title { color: #2A2F40; font-size: 20px; font-weight: 500; margin-bottom: 4px; line-height: 1.3; } @media screen and (max-width: 767.5px) { #llar-dashboard-page .dashboard-section-3 > [class^=info-box-] .info-box-content .title { font-size: 16px; } } #llar-dashboard-page .dashboard-section-3 > [class^=info-box-] .info-box-content .title a { text-decoration: none; } #llar-dashboard-page .dashboard-section-3 > [class^=info-box-] .info-box-content .desc { font-size: 14px; } #llar-dashboard-page .dashboard-section-3 > [class^=info-box-] .info-box-content .actions { display: flex; justify-content: space-between; } #llar-dashboard-page .dashboard-section-4 { display: flex; flex-wrap: wrap; margin-bottom: 20px; column-gap: 1rem; } @media screen and (max-width: 1399.5px) { #llar-dashboard-page .dashboard-section-4 { gap: 8px; } } #llar-dashboard-page .dashboard-section-4 > [class^=info-box-] { flex: 0 0 auto; width: calc(50% - 16px); min-height: 100px; max-height: 600px; padding: 32px 23px 24px 30px; border-radius: 20px; background: #FDFDFD; box-shadow: 4px 4px 18px 0 rgba(162, 180, 189, 0.2); overflow: hidden; } @media screen and (max-width: 1599.5px) { #llar-dashboard-page .dashboard-section-4 > [class^=info-box-] { max-height: 515px; padding: 27px 18px 20px 22px; } } @media screen and (max-width: 1399.5px) { #llar-dashboard-page .dashboard-section-4 > [class^=info-box-] { width: 100%; } } @media screen and (max-width: 991.5px) { #llar-dashboard-page .dashboard-section-4 > [class^=info-box-] { padding: 27px 16px 16px 18px; } } #llar-dashboard-page .dashboard-section-4 > [class^=info-box-]:last-child { margin-right: 0; } #llar-dashboard-page .dashboard-section-4 .hint_tooltip { box-sizing: content-box; } #llar-dashboard-page .dashboard-section-4 .hint_tooltip:before { right: 25px; } #llar-dashboard-page .dashboard-section-4 .hint_tooltip-content { font-size: 14px; color: white; } @media screen and (max-width: 767.5px) { #llar-dashboard-page .dashboard-section-4 .hint_tooltip-content { font-size: 12px; } } #llar-dashboard-page .dashboard-section-4 .hint_tooltip-content ul { padding-left: 16px; padding-right: 10px; } #llar-dashboard-page .dashboard-section-4 .hint_tooltip-content ul li { font-size: inherit; color: inherit; margin-bottom: 0; padding-left: 10px; min-width: 120px; } #llar-dashboard-page .dashboard-section-4 .hint_tooltip-content ul li::before { color: white; font-size: 12px; margin-left: -15px; } #llar-dashboard-page .dashboard-section-4 .hint_tooltip-parent { display: inline-block; position: relative; } #llar-dashboard-page .dashboard-section-4 .hint_tooltip-parent span { color: #FF7C06; font-weight: 500; } #llar-dashboard-page .dashboard-section-4 .hint_tooltip-parent .dashicons { color: #A4A8B7; } @media screen and (max-width: 1599.5px) { #llar-dashboard-page .dashboard-section-4 .hint_tooltip-parent .dashicons { line-height: unset; font-size: 14px; width: 12px; } } @media screen and (max-width: 767.5px) { #llar-dashboard-page .dashboard-section-4 .hint_tooltip-parent .dashicons { font-size: 12px; } } #llar-dashboard-page .dashboard-section-4 .info-box-1 { position: relative; } #llar-dashboard-page .dashboard-section-4 .info-box-1 .section-title__new .title { color: #2A2F40; font-size: 20px; font-weight: 500; } #llar-dashboard-page .dashboard-section-4 .info-box-1 .section-title__new .desc { color: #666D84; font-size: 16px; line-height: 1.5; margin: 40px; text-align: center; } #llar-dashboard-page .dashboard-section-4 .info-box-1 .section-content { height: 100%; overflow: auto; scrollbar-width: thin; scrollbar-gutter: stable; padding-bottom: 30px; } #llar-dashboard-page .dashboard-section-4 .info-box-2 { line-height: 1.5; padding-left: 30px; } @media screen and (max-width: 1599.5px) { #llar-dashboard-page .dashboard-section-4 .info-box-2 { padding-left: 25px; } } @media screen and (max-width: 991.5px) { #llar-dashboard-page .dashboard-section-4 .info-box-2 { padding-left: 22px; } } #llar-dashboard-page .dashboard-section-4 .info-box-2 .section-title__new .title { color: #2A2F40; font-size: 20px; font-weight: 500; } #llar-dashboard-page .dashboard-section-4 .info-box-2 .section-title__new .desc { color: #666D84; font-size: 16px; line-height: 2; } @media screen and (max-width: 1599.5px) { #llar-dashboard-page .dashboard-section-4 .info-box-2 .section-title__new .desc { line-height: 1.8; } } #llar-dashboard-page .dashboard-section-4 .info-box-2 .section-content { margin-top: 0; padding-top: 5px; } #llar-dashboard-page .dashboard-section-4 .info-box-2 .section-content .list { color: #2A2F40; font-size: 16px; font-weight: 500; margin-top: 27px; } @media screen and (max-width: 1599.5px) { #llar-dashboard-page .dashboard-section-4 .info-box-2 .section-content .list { font-size: 14px; margin-top: 20px; } } @media screen and (max-width: 1399.5px) { #llar-dashboard-page .dashboard-section-4 .info-box-2 .section-content .list { margin-top: 15px; } } @media screen and (max-width: 991.5px) { #llar-dashboard-page .dashboard-section-4 .info-box-2 .section-content .list { margin-top: 12px; } } #llar-dashboard-page .dashboard-section-4 .info-box-2 .section-content .list input { box-sizing: content-box; } #llar-dashboard-page .dashboard-section-4 .info-box-2 .section-content .list input:disabled, #llar-dashboard-page .dashboard-section-4 .info-box-2 .section-content .list input:before { opacity: 1; pointer-events: none; } #llar-dashboard-page .dashboard-section-4 .info-box-2 .section-content .list input:checked + span { text-decoration: line-through; } #llar-dashboard-page .dashboard-section-4 .info-box-2 .section-content .list-add { display: none; color: #FF7C06; margin-left: 10px; font-weight: 400; } #llar-dashboard-page .dashboard-section-4 .info-box-2 .section-content .list input[type=checkbox]:checked ~ .list-add { display: none; } #llar-dashboard-page .dashboard-section-4 .info-box-2 .section-content .list input[type=checkbox]:not(:checked) ~ .list-add { display: inline; } #llar-dashboard-page .dashboard-section-4 .info-box-2 .section-content .list .desc { color: #666D84; font-weight: 400; margin: 5px 25px; } #llar-admin-dashboard-widgets .widget-title { padding-bottom: 15px; border-bottom: 1px solid #e4e4e4; font-size: 14px; text-align: left; } #llar-admin-dashboard-widgets .widget-content { font-family: CoFo Sans, arial; } #llar-admin-dashboard-widgets .widget-content .llar-attempts-chart-legend { margin-bottom: 10px; } #llar-admin-dashboard-widgets .llar-widget { margin-bottom: 20px; background-color: #fff; text-align: center; } #llar-admin-dashboard-widgets .llar-widget .section-title__new { font-size: 12px; line-height: 150%; display: flex; flex-wrap: nowrap; justify-content: space-between; text-align: left; } #llar-admin-dashboard-widgets .llar-widget .section-title__new .llar-label { color: #2A2F40; min-width: fit-content; padding: 0.125rem 0.75rem; border-radius: 8px; background-color: rgba(10, 172, 208, 0.08); } #llar-admin-dashboard-widgets .llar-widget .section-title__new .llar-label-group { display: flex; column-gap: 30px; } #llar-admin-dashboard-widgets .llar-widget .section-title__new .llar-label__circle-blue { font-size: 44px; vertical-align: middle; color: #58C3FF; } #llar-admin-dashboard-widgets .llar-widget .section-title__new .llar-label__circle-grey { font-size: 44px; vertical-align: middle; color: rgba(174, 174, 174, 0.6980392157); } #llar-admin-dashboard-widgets .llar-widget .section-title__new .llar-label .hint_tooltip { left: -100%; } #llar-admin-dashboard-widgets .llar-widget .section-title__new .llar-label .hint_tooltip:before { right: 82%; } #llar-admin-dashboard-widgets .llar-widget .section-title__new .llar-premium-label .dashicons { width: unset; height: unset; background-color: #97F6C8; border-radius: 4px; color: #FDFDFD; margin-right: 5px; margin-top: 3px; font-size: inherit; } #llar-admin-dashboard-widgets .llar-widget .section-title__new .llar-premium-label .dashicons.disabled { background-color: #EC4652; } @media screen and (max-width: 1199.5px) { #llar-admin-dashboard-widgets .llar-widget .section-title__new .llar-premium-label .dashicons { margin-right: 2px; } } #llar-admin-dashboard-widgets .llar-widget .chart { max-width: 300px; position: relative; margin: 15px auto; } #llar-admin-dashboard-widgets .llar-widget .chart .doughnut-chart-wrap { position: relative; width: 200px; height: auto; margin: 0 auto; } #llar-admin-dashboard-widgets .llar-widget .chart .llar-retries-count { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); font-size: 28px; font-weight: bold; } #llar-admin-dashboard-widgets .llar-widget .title { font-weight: 600; font-size: 16px; line-height: 1.5; margin-bottom: 10px; } #llar-admin-dashboard-widgets .llar-widget .desc { font-size: 15px; } #llar-admin-dashboard-widgets .llar-widget .actions { margin-top: 5px; } #llar-admin-dashboard-widgets .llar-widget.widget-2 .llar-chart-wrap { width: 100%; margin: 0 auto; clear: both; } #llar-admin-dashboard-widgets .llar-widget.widget-2 .llar-chart-wrap canvas { height: 300px; } #llar-admin-dashboard-widgets .llar-widget.widget-2 .chart-stats-legend { text-align: center; margin-top: 10px; } .toplevel_page_limit-login-attempts { font-family: CoFo Sans, arial; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box { padding: 0 !important; background-color: transparent; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .jconfirm-content-pane { display: block; margin-bottom: 0; border-radius: 16px; overflow-y: auto; scrollbar-width: none; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .jconfirm-closeIcon { top: 17px !important; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .jconfirm-buttons { padding-right: 15px; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button_block { margin-top: 24px; display: flex; flex-wrap: wrap; justify-content: center; column-gap: 16px; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button_block .button { font-size: 18px; margin-top: 20px; padding: 11px 60px; width: 70%; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button_block-horizon { display: flex; justify-content: center; margin-top: 20px; gap: 10px; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button_block-horizon .button { font-size: 18px; padding: 11px 60px; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button_block-single { margin-top: 20px; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button_block-single .button { font-size: 18px; padding: 11px 60px; width: fit-content; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content { min-height: 930px; padding: 15px; background: url("./images/onboarding-bg-big.webp") center top; background-size: 100%; border-radius: 16px; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .logo { width: 90px; margin: 100px auto 50px; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .logo img { background: rgba(253, 253, 253, 0.4); border-radius: 8px; padding: 20px; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .llar-onboarding__line { position: relative; height: 2px; width: 50%; margin: 10px auto 60px; background-color: #ABBFC1; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .llar-onboarding__line .point__block { position: absolute; display: flex; flex-direction: column; align-items: center; justify-content: flex-start; left: 0; top: -30px; width: 60px; height: 60px; border-radius: 50%; background-color: transparent; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .llar-onboarding__line .point__block .point { position: absolute; top: 22px; width: 18px; height: 18px; border-radius: 50%; background-color: #ABBFC1; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .llar-onboarding__line .point__block .description { position: absolute; top: 60px; font-size: 16px; color: #666D84; width: max-content; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .llar-onboarding__line .point__block.active { position: absolute; background-color: rgba(74, 202, 216, 0.3019607843); } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .llar-onboarding__line .point__block.active .description { color: #2A2F40; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .llar-onboarding__line .point__block.visited .point { background-color: #4ACAD8; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .llar-onboarding__line .point__block[data-step="1"] { left: 0; transform: translateX(-50%); } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .llar-onboarding__line .point__block[data-step="2"] { left: 33.3333333333%; transform: translateX(-50%); } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .llar-onboarding__line .point__block[data-step="3"] { left: 66.6666666667%; transform: translateX(-50%); } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .llar-onboarding__line .point__block[data-step="4"] { left: 100%; transform: translateX(-50%); } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .title { font-size: 32px; font-weight: 500; color: #FF7C06; text-align: center; padding-top: 40px; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .title img { width: 36px; vertical-align: text-top; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .preloader-wrapper { display: none; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background-color: rgba(255, 255, 255, 0.3); align-items: center; justify-content: center; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .preloader-wrapper .spinner { display: block; position: relative; float: none; visibility: hidden; top: 50%; transform: translateY(-50%); margin: 0 auto; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .llar-disabled .preloader-wrapper { display: block; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .card { min-width: 768px; text-align: center; margin-top: 37px; padding: 23px 63px 60px; border: unset; background-color: #F6FBFF; border-radius: 20px; box-shadow: 2px 2px 9px 0 rgba(162, 180, 189, 0.2); } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .card .explanations { font-size: 14px; color: #666D84; margin-top: 15px; padding: 0 35px; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .card .llar-upgrade-subscribe_notification, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .card .llar-upgrade-subscribe_notification__error { display: none; color: #666D84; font-size: 20px; line-height: 1.5; margin: 15px auto 0; padding: 9px 70px; width: fit-content; border-radius: 8px; background-color: white; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .card .llar-upgrade-subscribe_notification img, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .card .llar-upgrade-subscribe_notification__error img { display: inline-block; width: 12.5px; margin-right: 2px; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .card .llar-upgrade-subscribe_notification__error { color: #EC4652; background-color: rgba(236, 70, 82, 0.1019607843); } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-wrap { margin-top: 23px; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-title { color: #2A2F40; font-size: 20px; font-weight: 500; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-title-add { color: #666D84; font-size: 18px; font-weight: 400; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-key, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-email { display: inline-block; line-height: 25px; margin-top: 11px; width: 100%; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-key .input_border, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-email .input_border { font-size: 16px; min-width: 420px; padding: 15px 30px; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-key .button, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-email .button { position: relative; display: inline-block; font-size: 18px; padding: 14px 30px 15px; margin-left: -25px; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-key .button .dashicons, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-email .button .dashicons { margin-left: 15px; line-height: inherit; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-error { display: none; color: red; margin-top: 15px; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-email .input_border { min-width: 100%; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-desc, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-desc-add { color: #666D84; font-size: 16px; line-height: 1.5; text-align: center; margin-top: 22px; padding: 0 25px; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-desc-add { font-size: 18px; color: #2A2F40; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-desc-additional { color: #A4A8B7; font-size: 16px; line-height: 1.5; text-align: left; margin-top: 12px; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-list { line-height: 1.5; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-list .item { font-size: 18px; color: #666D84; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-list .item:before { color: #9762EF; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-video { position: relative; -webkit-box-flex: 1; -ms-flex-positive: 1; flex-grow: 1; margin-top: 24px; border-radius: 16px; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-video .video-container { position: relative; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-video #video-poster, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-video #video-frame { position: absolute; top: 0; left: 0; width: 100%; height: 100%; border-radius: 20px; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-video #video-poster { cursor: pointer; z-index: 1; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-checkbox { display: inline-block; color: #666D84; font-size: 14px; margin-top: 10px; margin-left: 25px; text-align: left; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-checkbox input { margin-top: 15px; margin-left: -25px; vertical-align: top; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-checkbox span { display: inline-block; margin-left: 15px; margin-top: 10px; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-image { width: 240px; margin: 0 auto; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .security-alerts-options { display: flex; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .security-alerts-options .info { font-size: 16px; line-height: 22px; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .security-alerts-options .buttons { display: flex; padding-left: 15px; align-items: center; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .security-alerts-options .buttons span { text-transform: uppercase; cursor: pointer; width: 45px; text-align: center; vertical-align: middle; display: block; height: 34px; line-height: 34px; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .security-alerts-options .buttons span.llar-act { background-color: #0A75B5; color: #fff; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .security-alerts-options .buttons span:first-child { border: 1px solid #ccc; border-radius: 4px 0 0 4px; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .security-alerts-options .buttons span:last-child { border: 1px solid #ccc; border-radius: 0 4px 4px 0; border-left: 0; } #llar-setting-page-premium { font-family: inherit; line-height: 1.5; } #llar-setting-page-premium .llar-premium-page-promo { padding: 43px 80px 60px; margin-bottom: 20px; border-radius: 20px; background-color: #FDFDFD; box-shadow: 3px 5px 23px 0 rgba(162, 180, 189, 0.2); } #llar-setting-page-premium .llar-premium-page-promo .section-1 { display: flex; align-items: flex-end; } #llar-setting-page-premium .llar-premium-page-promo .section-1 .text .title { font-size: 31px; font-weight: 500; color: #FF7C06; line-height: 1.4; margin-bottom: 5px; } #llar-setting-page-premium .llar-premium-page-promo .section-1 .text .links { font-size: 12px; list-style: none; margin: 0; } #llar-setting-page-premium .llar-premium-page-promo .section-1 .text .links li { display: inline-block; margin-right: 20px; } #llar-setting-page-premium .llar-premium-page-promo .section-1 .text .links li a { position: relative; vertical-align: middle; } #llar-setting-page-premium .llar-premium-page-promo .section-1 .text .links li a.gdpr-information-link:after { position: relative; font-size: inherit; line-height: inherit; right: 0; vertical-align: middle; color: #A4A8B7; } #llar-setting-page-premium .llar-premium-page-promo .section-1 .action { margin-left: auto; text-align: center; } #llar-setting-page-premium .llar-premium-page-promo .section-1 .action a.button { font-size: 16px; padding: 7px 35px; min-width: 250px; text-align: center; } #llar-setting-page-premium .llar-premium-page-promo .section-1 .action .label { font-size: 14px; color: #A4A8B7; margin-top: 9px; } #llar-setting-page-premium .llar-premium-page-promo .section-1 .action .label .dashicons { font-size: 18px; } #llar-setting-page-premium .llar-premium-page-promo .section-1__internal { font-size: 16px; text-align: center; margin-top: 40px; color: #666D84; border-radius: 20px; background-color: #F6FBFF; padding: 27px 0; } #llar-setting-page-premium .llar-premium-page-promo .section-1__internal .llar_turquoise, #llar-setting-page .llar-settings-wrap .llar-form-table tr td #llar-setting-page-premium .llar-premium-page-promo .section-1__internal a.unlink, #llar-setting-page-help .llar-settings-wrap .llar-form-table tr td #llar-setting-page-premium .llar-premium-page-promo .section-1__internal a.unlink, #llar-setting-page-premium .llar-premium-page-promo .section-1__internal .llar-settings-wrap .llar-form-table tr td a.unlink, #llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .llar-premium-page-promo .section-1__internal a.unlink, #llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td #llar-setting-page-premium .llar-premium-page-promo .section-1__internal a.unlink, #llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td #llar-setting-page-premium .llar-premium-page-promo .section-1__internal a.unlink, #llar-setting-page-premium .llar-premium-page-promo .section-1__internal #llar-setting-page-logs .description-page .description-secondary a.unlink, #llar-setting-page-logs .description-page .description-secondary #llar-setting-page-premium .llar-premium-page-promo .section-1__internal a.unlink, #llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td #llar-setting-page-premium .llar-premium-page-promo .section-1__internal a.unlink, #llar-setting-page-premium .llar-premium-page-promo .section-1__internal #llar-setting-page-logs__active .description-page .description-secondary a.unlink, #llar-setting-page-logs__active .description-page .description-secondary #llar-setting-page-premium .llar-premium-page-promo .section-1__internal a.unlink { display: block; } #llar-setting-page-premium .text-block-1 { margin-bottom: 20px; } #llar-setting-page-premium .text-block-1 p { font-size: 15px; } #llar-setting-page-premium .llar-premium-plans-table { margin-top: 3.75rem; } #llar-setting-page-premium .llar-premium-plans-table .content { border-radius: 16px; background-color: #F6FBFF; padding-right: 15px; padding-bottom: 15px; overflow-x: auto; } #llar-setting-page-premium .llar-premium-plans-table .content .table_background { font-size: 16px; font-weight: 400; line-height: 1.4; width: 100%; border-collapse: inherit; border-spacing: 0; border-radius: 16px; box-shadow: 3px 5px 23px 0 rgba(162, 180, 189, 0.2); } @media screen and (max-width: 1599.5px) { #llar-setting-page-premium .llar-premium-plans-table .content .table_background { font-size: 14px; } } #llar-setting-page-premium .llar-premium-plans-table .content .table_background thead tr td { font-size: 20px; font-weight: 500; text-align: left; color: #4ACAD8; min-width: 150px; padding: 16px 29px; border-top-left-radius: 16px; border-top-right-radius: 16px; border: 1px solid rgba(74, 202, 216, 0.0980392157); background-color: rgba(74, 202, 216, 0.0980392157); } #llar-setting-page-premium .llar-premium-plans-table .content .table_background thead tr td:first-child { width: 25%; min-width: 300px; } @media screen and (max-width: 1799.5px) { #llar-setting-page-premium .llar-premium-plans-table .content .table_background thead tr td { min-width: 100px; } } @media screen and (max-width: 1599.5px) { #llar-setting-page-premium .llar-premium-plans-table .content .table_background thead tr td { font-size: 18px; font-weight: 400; } } #llar-setting-page-premium .llar-premium-plans-table .content .table_background tbody { text-align: left; background-color: white; border-bottom-right-radius: 16px; border-bottom-left-radius: 16px; } #llar-setting-page-premium .llar-premium-plans-table .content .table_background tbody tr { position: relative; } #llar-setting-page-premium .llar-premium-plans-table .content .table_background tbody tr:nth-child(even)::after { content: ""; position: absolute; top: 5px; bottom: 5px; left: 0; right: 0; border-radius: 16px; background-color: #FDFDFD; } #llar-setting-page-premium .llar-premium-plans-table .content .table_background tbody tr:last-child td:first-child { border-bottom-left-radius: 16px; } #llar-setting-page-premium .llar-premium-plans-table .content .table_background tbody tr:last-child td:last-child { border-bottom-right-radius: 16px; } #llar-setting-page-premium .llar-premium-plans-table .content .table_background tbody tr td { position: relative; padding: 16px 29px; border-right: 1px solid #F6FBFF; border-bottom: 1px solid #F6FBFF; z-index: 1; } @media screen and (max-width: 1799.5px) { #llar-setting-page-premium .llar-premium-plans-table .content .table_background tbody tr td { padding: 12px 10px; } } @media screen and (max-width: 991.5px) { #llar-setting-page-premium .llar-premium-plans-table .content .table_background tbody tr td { font-size: 14px; } } #llar-setting-page-premium .llar-premium-plans-table .content .table_background tbody tr td:last-child { border-right: unset; } #llar-setting-page-premium .llar-premium-plans-table .content .table_background tbody tr td .icon-lock { color: #2A2F40; width: 24px; height: 24px; } #llar-setting-page-premium .llar-premium-plans-table .content .table_background tbody tr td button, #llar-setting-page-premium .llar-premium-plans-table .content .table_background tbody tr td .llar_button, #llar-setting-page-premium .llar-premium-plans-table .content .table_background tbody tr td .button { margin: 40px auto; padding-top: 12px; padding-bottom: 12px; width: 100%; } @media screen and (max-width: 1799.5px) { #llar-setting-page-premium .llar-premium-plans-table .content .table_background tbody tr td button, #llar-setting-page-premium .llar-premium-plans-table .content .table_background tbody tr td .llar_button, #llar-setting-page-premium .llar-premium-plans-table .content .table_background tbody tr td .button { width: auto; } } @media screen and (max-width: 1599.5px) { #llar-setting-page-premium .llar-premium-plans-table .content .table_background tbody tr td button, #llar-setting-page-premium .llar-premium-plans-table .content .table_background tbody tr td .llar_button, #llar-setting-page-premium .llar-premium-plans-table .content .table_background tbody tr td .button { min-width: 120px; } } #llar-setting-page-premium .llar-premium-plans-table .content .table_background tbody tr td .category { font-weight: 500; } #llar-setting-page-premium .llar-premium-plans-table .content .table_background tbody tr td .description { display: block; margin-top: 5px; color: #666D84; } #llar-setting-page-premium .llar-premium-plans-table .content .table_background tbody tr td .description a { color: #5C8FDC; text-decoration: none; border-bottom: 1px solid currentColor; } #llar-setting-page-premium .llar-premium-plans-table .content .table_background tbody tr td.inner_fields { text-align: center; } .llar-help-page { font-family: inherit; line-height: 1.5; } .llar-help-page .section-1 { display: flex; padding-top: 45px; padding-bottom: 50px; margin-bottom: 20px; border-radius: 20px; background-color: #FDFDFD; box-shadow: 3px 5px 23px 0 rgba(162, 180, 189, 0.2); } .llar-help-page .section-1 .block { text-align: center; flex: 1; border-right: 1px solid rgba(164, 168, 183, 0.2980392157); } .llar-help-page .section-1 .block:last-child { border: 0; } .llar-help-page .section-1 .block .title { color: #2A2F40; font-weight: 500; font-size: 20px; } .llar-help-page .section-1 .block .text { color: #666D84; font-size: 18px; max-width: 80%; margin: 10px auto; } .llar-help-page .section-1 .block .actions { text-align: center; } .llar-help-page .section-1 .block .actions .button { text-transform: uppercase; font-size: 18px; line-height: 1.4; padding: 4px 20px; } .llar-help-page .section-1 .block .actions .button span { text-transform: none; display: block; font-size: 12px; line-height: 13px; margin-bottom: 2px; } .llar-help-page .section-1 .block .actions .button.button-secondary { min-height: 40px; line-height: 40px; } .llar-help-page .description-page { font-weight: 500; color: #2A2F40; } .llar-help-page .documentation-section { display: flex; flex-wrap: wrap; } .llar-help-page .documentation-section .questions { display: flex; flex: 1 1 calc(100% - 550px); flex-direction: column; } .llar-help-page .documentation-section .questions__block { display: flex; flex: 1 1 auto; flex-direction: column; } @media screen and (max-width: 1399.5px) { .llar-help-page .documentation-section .questions__block { flex: 1 1 100%; } } .llar-help-page .documentation-section .questions__block .question { display: block; flex: 1 0 auto; margin-bottom: 20px; padding: 30px 40px; background-color: #FDFDFD; border-radius: 20px; text-decoration: none; box-shadow: 2px 2px 9px 0 rgba(162, 180, 189, 0.2); } .llar-help-page .documentation-section .questions__block .question:last-child { margin-bottom: 0; } .llar-help-page .documentation-section .questions__block .question:hover { box-shadow: 4px 4px 18px 0 rgba(162, 180, 189, 0.2); } .llar-help-page .documentation-section .questions__block .question .title { font-size: 18px; font-weight: 500; color: #2A2F40; } .llar-help-page .documentation-section .questions__block .question .desc { font-size: 16px; margin-top: 5px; color: #666D84; } .llar-help-page .documentation-section .top-list { flex: 0 0 500px; margin-left: 20px; } @media screen and (max-width: 1399.5px) { .llar-help-page .documentation-section .top-list { flex: 0 0 100%; } } .llar-help-page .documentation-section .top-list .list__block { padding: 30px 35px; border-radius: 20px; background-color: #FDFDFD; box-shadow: 4px 4px 18px 0 rgba(162, 180, 189, 0.2); } .llar-help-page .documentation-section .top-list ol { margin: 0; margin-left: 35px; color: #5C8FDC; list-style: none; counter-reset: my-counter; } .llar-help-page .documentation-section .top-list ol li { position: relative; font-size: 16px; margin-bottom: 15px; padding: 3px; border-radius: 8px; counter-increment: my-counter; } .llar-help-page .documentation-section .top-list ol li:before { content: counter(my-counter) "."; position: absolute; left: -45px; top: 0; width: 100%; height: 100%; font-size: inherit; background-color: #F6FBFF; border-radius: 16px; padding: 3px 20px; } .llar-help-page .documentation-section .top-list ol li a { position: relative; color: inherit; text-decoration: none; } .llar-help-page .documentation-section .top-list ol li a:hover { text-decoration: underline; } .toplevel_page_limit-login-attempts { font-family: CoFo Sans, arial; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box { padding: 0 !important; background-color: transparent; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .jconfirm-content-pane { display: block; margin-bottom: 0; border-radius: 16px; scrollbar-width: none; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .jconfirm-content-pane::-webkit-scrollbar { width: 0px; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .jconfirm-closeIcon { top: 17px !important; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .jconfirm-buttons { padding-right: 15px; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .preloader-wrapper { display: none; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background-color: rgba(255, 255, 255, 0.3); align-items: center; justify-content: center; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .preloader-wrapper .spinner { display: block; position: relative; float: none; visibility: hidden; top: 50%; transform: translateY(-50%); margin: 0 auto; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-disabled .preloader-wrapper { display: block; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .input_border { font-size: 16px; min-width: 420px; padding: 15px 30px; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .popup_error_content__content { padding: 15px; border-radius: 16px; background-color: #FDFDFD; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .popup_error_content__body { font-size: 16px; font-weight: 400; line-height: 1.5; color: #2A2F40; padding: 0 15px; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .popup_error_content__body .card { padding: 0; border: unset; box-shadow: unset; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .popup_error_content__body .card-header { color: #EC4652; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .popup_error_content__body .card-body { margin-top: 10px; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__content { padding: 15px; border-radius: 16px; background: url("./images/micro-cloud-bg.webp") no-repeat center top; background-size: 100%; background-color: #FDFDFD; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body { font-size: 18px; font-weight: 400; line-height: 1.5; color: #2A2F40; padding: 55px 60px; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body_header { display: flex; flex-direction: row; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body_header .left_side { width: 60%; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body_header .right_side { width: 40%; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body_header .right_side img { display: block; width: 306px; margin: 0 auto; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body_header .title { font-size: 44px; font-weight: 500; margin-right: 70px; text-align: left; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body_header .description { margin-top: 10px; color: #666D84; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body_header .description-add { font-size: 14px; font-weight: 500; color: #666D84; margin-top: 10px; padding: 10px 20px; background-color: #ECFAFB; border-radius: 16px; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body .card { min-width: 100%; text-align: center; margin-top: 15px; padding: 0; border: unset; background-color: #F6FBFF; border-radius: 20px; box-shadow: 2px 2px 9px 0 rgba(162, 180, 189, 0.2); } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body .card-header { color: #FF7C06; padding: 15px 63px; margin-bottom: 0; background-color: rgba(255, 124, 6, 0.0980392157); border-bottom: 1px solid #FF7C06; border-top-left-radius: 16px; border-top-right-radius: 16px; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body .card-header .title { font-size: 20px; font-weight: 500; text-align: left; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body .card-header .title img { width: 22px; vertical-align: middle; margin-right: 15px; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body .card-body { padding: 10px 63px; text-align: left; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body .card-body .description { font-size: 16px; color: #666D84; margin-top: 20px; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body .card-body .field-email { margin-top: 20px; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body .card-body .field-checkbox { color: #666D84; font-size: 16px; margin-top: 20px; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body .card-body .field-desc, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body .card-body .llar-onboarding-popup__content .field-desc-add, .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .micro_cloud_modal__body .card-body .field-desc-add { color: #666D84; font-size: 16px; margin-top: 20px; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body .card-body .field-image { width: 240px; margin: 0 auto; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body .card-body .button_block-single { text-align: left; margin-bottom: 30px; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body .card-body .button_block-single .description_add { font-size: 14px; color: #A4A8B7; margin-top: 15px; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body .card-body.step-second { text-align: center; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body .card-body.step-second .button_block-single { text-align: center; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body .card-body .llar-upgrade-subscribe_notification { font-size: 18px; margin: 5px auto 0; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body .card-body .llar-upgrade-subscribe_notification .field-image img { width: 220px; margin: 0 auto; } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body .card-body .llar-upgrade-subscribe_notification__error { color: #EC4652; padding: 9px 70px; width: fit-content; border-radius: 8px; background-color: rgba(236, 70, 82, 0.1019607843); } .toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body .card-body .llar-upgrade-subscribe_notification img { display: inline-block; width: 12.5px; margin-right: 2px; } /*# sourceMappingURL=limit-login-attempts.css.map */ plugins/limit-login-attempts-reloaded/assets/css/limit-login-attempts.css.map000064400000046504147176754540023565 0ustar00{"version":3,"sourceRoot":"","sources":["../sass/_settings.scss","../sass/_mixins.scss","../sass/limit-login-attempts.scss","../sass/_dashboard-page.scss","../sass/_admin-dashboard-widgets.scss","../sass/_onboarding-popup.scss","../sass/_premium-tab.scss","../sass/_help-page.scss","../sass/_micro-cloud-modal.scss"],"names":[],"mappings":";AAAQ;AAuDR;EACE;EACA;EACA,kBAlC0B;EAmC1B;EACA;EACA;EACA,eAZc;EAad;EACA;EACA;;AAEA;EAEE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAEA;EACE;;;AAOJ;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAgBJ;EACE;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE,OApJqB;;;AAuJvB;EACE,OAlKuB;;AAoKvB;EACE,OAjK4B;;;AAqKhC;EACE,OA3J0B;;;AA8J5B;EACE;;AAEA;EACE;EACA,OAnKwB;EAoKxB;;;AAIJ;EAEE,eA9ImB;EA+InB,kBAvK+B;EAwK/B;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA,OApO8B;EAqO9B;EACA;EACA;EACA;EACA,YA7NqB;;ACYrB;EDsMF;IAcI;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIJ;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA,OAlP0B;EAmP1B,eAnOU;EAoOV;EACA;;ACtQA;ED8PF;IAWI;IACA;;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;;AAIJ;EACE,kBA9RgB;EA+RhB;EACA;EACA;;AAEA;EACE,kBA7RqB;EA8RrB;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA,OA9SY;;AAkThB;EACE;;;AAIJ;EACE;;AAEA;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA,OApUY;EAqUZ;EACA;EACA;;;AAKN;EACE;EACA,YA9UgB;EA+UhB;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;ACpVF;ED+UA;IAQI;;;ACrUJ;ED6TA;IAYI;;;ACjTJ;EDqSA;IAgBI;;;AAIJ;EACE;EACA;;;AAIJ;EAEE;EACA;EACA;EACA;;AAIE;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;;AAIJ;EACE;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAIJ;EACE;;AAEA;EACE;;AAGF;EACE;;AAIJ;EACE;EACA;;AAIJ;EACE;EACA;EACA;EACA,eAhYiB;EAiYjB;EACA;EACA;EACA;;AAEA;EACE,OAlbmB;EAmbnB,YAjbwB;;AAmbxB;EACE,OA7bU;EA8bV,YAvbiB;;AA0bnB;EACE,OA5aoB;EA6apB;EACA;EACA,YA3ayB;;AA6azB;EACE;;AAGF;EACE,YAncoB;;AAwc1B;EACE,OAhckB;EAiclB;EACA,YAhc6B;;AAkc7B;EACE;;AAGF;EACE,YAldsB;;AAud5B;EACE;EACA;;;AAIJ;EACE;;;AEteA;EACE;;AAGF;EACE,kBFJmB;EEKnB;EACA,YFoCc;EEnCd,aFoCe;EEnCf,OFMiB;;;AEArB;EAEE;;ADnBA;ECiBF;IAKI;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAEA;EACE;EACA;;AAKN;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA,OF1Ce;EE2Cf,aFda;EEeb;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;;AD1DN;EC+BE;IA+BI;;;ADxDN;ECyBE;IAmCI;IACA;;;ADvDN;ECmBE;IAwCI;IACA;;;AAIJ;EACE,OF9EsB;EE+EtB;EACA;EACA;;AAKE;EACE;EACA;;AAMR;EACE;EACA;;AAKA;EACE;;AAEA;EACE;;AAGF;EACE;;AAKN;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;;AAEA;EACE;;AAKN;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;;AAIA;EACE;EACA;EACA;;AAIA;EACE;EACA;;AAIJ;EACE;;AAEA;EACE;;AAKN;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAIJ;EACE;EACA;;AAEA;EACE;;AAIJ;EACE;EACA;;AAEA;EACE;;ADlNJ;ECqNE;IAGI;;;ADlNN;EC+ME;IAOI;;;AAKN;EACE;;AAEA;EACE;;AAIJ;EACE;;AAEA;EACE;;;AAKN;EACE,OFpPmB;EEqPnB;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;ADxQF;ECmQA;IAQI;;;AAGF;EACE;EACA;EACA;EACA;;AAIJ;EACE;EACA;EACA,OF7QmB;EE8QnB;EACA,eFhPY;EEiPZ;EACA;;AD7RF;ECsRA;IAUI;;;AAIJ;EACE;;AAEA;EACE,OF7Re;EE8Rf;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA,eFxQQ;EEyQR,OFxSe;EEySf,YF1TU;EE2TV;;ADtTN;ECgTI;IASI;;;AAGF;EACE;EACA;EACA,eFpRM;EEqRN;EACA;;ADjUR;EC4TM;IAQI;;;AD9TV;ECsTM;IAYI;;;AAIJ;EACE,OFlUW;EEmUX;EACA;EACA;EACA;;AD3UR;ECsUM;IAQI;;;AAGF;EAEE;EACA;EACA;EACA;;AD5VV;ECuVQ;IAQI;;;AAIJ;EACE;EACA;EACA;;AAEA;EACE;;AAKN;EACE,OFnWa;EEoWb;EACA;EACA;EACA;;ADnXR;EC8WM;IAQI;;;AAMA;EACE;;AD7XZ;EC4XU;IAII;;;AAIJ;EACE;EACA;EACA,OF3XS;EE4XT,kBF7YI;EE8YJ;EACA;EACA;;AD3YZ;ECoYU;IAUI;IACA;;;AAGF;EACE;;AAGF;EACE,kBF1YQ;EE2YR,eF3WK;;AE8WP;EACE,kBFhZO;EEiZP,eFhXK;;AEmXP;EACE;EACA;EACA;;AAKN;EACE;EACA;EACA;;AAEA;EACE;;AD9aZ;EC6aU;IAII;;;AASN;EACE,eF9YS;;AEgZT;EACE;EACA;;AAIJ;EAEE;;AAEA;EACE;;AAIJ;EACE;EACA;EACA,OFlcY;EEmcZ;EACA;;ADjdV;EC4cQ;IAQI;;;AAIJ;EACE,OF7cW;;AEgdb;EACE;EACA;;AAEA;EACE;EACA;;AAEA;EACE;;AASd;EACE;EACA;EACA,kBFpfmB;EEqfnB,eFvcY;;AC/Bd;ECkeA;IAOI;;;AAGF;EACE,OF9ee;EE+ef;EACA;EACA;;AD5fJ;ECwfE;IAOI;;;AAIJ;EACE;EACA;EACA;EACA,OF3fiB;EE4fjB;EACA;EACA;;AD1gBJ;ECmgBE;IAUI;;;AAGF;EACE;EACA;EACA;EACA;EACA;;ADrhBN;ECghBI;IAQI;;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAOJ;EACE;;AAEA;EACE;EACA;;AAIJ;EACE;;ADrjBN;ECojBI;IAII;;;AAGF;EACE;EACA;EACA;EACA,eFphBM;EEqhBN;;ADhkBR;EC2jBM;IAQI;;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAYV;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,OFhmBe;EEimBf;;AAKJ;EACE;EACA;EACA;EACA;;AAIE;EACE;;AAKN;EACE;EACA;EACA;EACA;EACA,eFzlBY;EE0lBZ,kBFxoBmB;;AE0oBnB;EACE,OF7nBe;EE8nBf;EACA;EACA;EACA;EACA;EACA;EACA,yBFpmBU;EEqmBV,wBFrmBU;EEsmBV,kBFtpBY;;ACKhB;ECuoBE;IAaI;;;AAGF;EACE;EACA,eF9mBQ;EE+mBR;EACA;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;;AAKA;EACE;;AAMN;EACE;EACA;EACA,OF1qBe;EE2qBf,4BF3oBU;EE4oBV,2BF5oBU;EE6oBV;EACA;EACA,kBF/rBY;EEgsBZ;;AAEA;EACE;;AAGF;EACE;EACA;EACA;;AAEA;EACE;;AAEA;EACE;;AAGF;EACE;;;AA6BA;EACE,OF/tBU;;AEmuBd;EACE;;;AAWV;EACE;;AAEA;EACE;;AAEA;EACE;;AAEA;EACE;EACA;;AAIJ;EACE;;AD5wBN;EC2wBI;IAII;;;AAGF;EACE;;ADnxBR;ECkxBM;IAII;;;AAGF;EACE;;AAGF;EACE;EACA;;AAWN;EAEE;;AAEA;EACE;;;AAWR;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAEA;EACE,OFxzBe;EEyzBf;EACA;EACA;;AAIJ;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;;AAKN;EACE;EACA;EACA,eF9zBQ;EE+zBR;EACA;EACA;EACA;;ADn2BF;EC41BA;IAUI;;;ADh2BJ;ECs1BA;IAcI;;;AAGF;EACE;;AAGF;EACE;EACA;EACA;;AAIE;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAIJ;EACE;EACA;EACA;EACA;;AAIE;EACE,OFt4BS;EEu4BT;EACA;EACA;EACA;;ADr5BV;ECg5BQ;IAQI;IACA;;;ADn5BZ;EC04BQ;IAaI;;;AAMR;EACE,OFx5Be;;AE45Bb;EACE,eFx4BA;EEy4BA,kBF76BW;;AEi7BT;EACE,wBF94BJ;EE+4BI,2BF/4BJ;;AEk5BE;EACE,yBFn5BJ;EEo5BI,4BFp5BJ;;AEy5BF;EACE;EACA;EACA;;AD77BV;EC07BQ;IAMI;IACA;;;AD37BZ;ECo7BQ;IAWI;IACA;;;AAGF;EACE;;AAGF;EACE;EACA;;AAKA;EAEE,OFz8BQ;EE08BR;;AAIJ;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;AAMF;EACE;;AAIJ;EACE;EACA;EACA;EACA;EACA;;ADjgCd;EC4/BY;IAQI;;;AD9/BhB;ECs/BY;IAYI;;;AAKN;EACE;EACA;EACA,eFn+BO;;AEq+BP;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAKA;EACE;;AAad;EACE;;AAEA;EACE;;AAKA;EACE;;AAGE;EACE;EACA;EACA;;AAIJ;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAaF;EACE;;AAGF;EACE;;AAaZ;EACE;;AAIE;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAMJ;EACE;EACA;;AAGF;EACE;;AAIJ;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAEA;EACE,OFjpCkB;EEkpClB;EACA;;AAOE;EACE;;AD5qCZ;EC2qCU;IAII;;;ADzqCd;ECqqCU;IAQI;;;AAIJ;EACE;;AAMF;EACE;EACA;;ADhsCZ;EC8rCU;IAKI;;;AD7rCd;ECwrCU;IASI;;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA,eFzqCK;;AE6qCT;EACE;EACA,eF3rCF;;AE6rCE;EACE;;AAEA;EACE,wBFjsCN;EEksCM,2BFlsCN;;AEqsCI;EACE,yBFtsCN;EEusCM,4BFvsCN;;AE4sCA;EACE;EACA;;AAGA;EACE;;AAIJ;EACE;;AAGF;EACE,kBFvuCmB;;AE0uCrB;EACE,kBFvvCU;;AE0vCZ;EACE,OF7vCO;EE8vCP,cF9vCO;EE+vCP,kBF7vCU;;AEiwCd;EACE;EACA;;AAMR;EACE;EACA;EACA,eFpvCM;EEqvCN;;AAEA;EACE;EACA,OF9wCe;EE+wCf;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAQJ;EACE;EACA,OF5xCoB;EE6xCpB;EACA;EACA;;AAGF;EACE;EACA,OF1yCa;EE2yCb;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;;AAEA;EACE;EACA;;AAIJ;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE,OF30CO;EE40CP;EACA;;AAOF;EACE;;AAKN;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;;AASZ;EACE;EACA;EACA;EACA;EACA;EACA;EACA,kBF92CiC;;AEg3CjC;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA,OF33CmB;EE43CnB;EACA;EACA,kBFv3C0B;EEw3C1B,eFh2CY;EEi2CZ;EACA;;AD74CF;EC+3CA;IAiBI;IACA;;;AD34CJ;ECy3CA;IAsBI;IACA;;;AAGF;EACE;;AD15CJ;ECy5CE;IAII;;;AAIJ;EACE;EACA;EACA;;ADp6CJ;ECi6CE;IAMI;IACA;;;ADl6CN;EC25CE;IAWI;;;AAIJ;EACE;;ADj7CJ;ECg7CE;IAII;;;AD96CN;EC06CE;IAQI;;;AAIJ;EACE;EACA;EACA;EACA;;ADh8CJ;EC47CE;IAOI;;;AD77CN;ECs7CE;IAWI;IACA;;;AAKN;EACE;;;AAIJ;EACE;EACA;EACA;;AAKE;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAMF;EACE;EACA;EACA;EACA;;ADh/CJ;EC4+CE;IAOI;IACA;;;AD9+CN;ECs+CE;IAYI;;;ADh+CN;ECo9CE;IAgBI;IACA;IACA;;;AASF;EACE,OF7/Ca;EE8/Cb;EACA;;AAOJ;EACE,eFj/CM;EEk/CN;;AAEA;EAEE,kBF1hDe;;AE6hDjB;EACE;;AAGF;EACE,kBFhhD2B;;AEmhD7B;EACE,OFvhDe;;AEyhDf;EACE,wBFrgDE;EEsgDF,2BFtgDE;;AEygDJ;EACE,yBF1gDE;EE2gDF,4BF3gDE;;AE8gDJ;EACE;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;;AD7iDV;EC2iDQ;IAKI;;;AAGF;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAMR;EACE;EACA;;AAEA;EACE,OFpmDW;EEqmDX;;AAGF;EACE,OF9lDU;;ACbtB;EC0mDU;IAII;IACA;;;ADvlDd;ECklDU;IASI;;;AAMR;EACE;EACA;EACA;EACA;;AAIE;EACE;;AAIJ;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;;ADjpDV;EC4oDQ;IAQI;;;AD9oDZ;ECsoDQ;IAYI;;;AAKN;EACE;EACA;EACA,eFnnDW;;AEqnDX;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,OFtqDY;EEuqDZ;;AD5pDV;ECkpDQ;IAaI;IACA;;EAEA;IACE;IACA;;;AAIJ;EACE;EACA;;AAGF;EACE,OFrrDc;;AE0rDpB;EACE;;AAGF;EACE;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAKN;EACE;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;ADtuDR;EC+tDM;IAUI;;;AAIJ;EACE;;AAMF;EACE;;AAIJ;EACE;;AAEA;EACE;;AAEA;EACE;;AD1vDV;ECyvDQ;IAII;;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAQZ;EACE;;AAEA;EACE;;AAKA;EACE;;AAGE;EACE;EACA;EACA;;AAIJ;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAYF;EACE;;AAGF;EACE;;;AAYZ;AAAA;EAEE;EACA;EACA;;AAGE;AAAA;EACE;EACA;;AAGF;AAAA;EACE;EACA;EACA;EACA;EACA;;AAIJ;AAAA;EACE;EACA;;AAEA;AAAA;EACE;EACA;;AAEA;AAAA;EACE;;AAEA;AAAA;EACE;;;AAQV;EACE;;AAEA;EACE;;AAGF;EACE;EACA;EACA;;AAEA;EACE;;AAGF;EACE;;AAIJ;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAIJ;EACE;;AAEA;EACE;EACA;EACA;;;AAKN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;;AAMJ;EACE;;AAEA;EAEE;EACA;EACA;EACA,OFp8D2B;EEq8D3B,aF/5DoB;EEg6DpB;EACA;EACA,eF75DiB;EE85DjB;EACA,kBF/8DyB;EEg9DzB;;AD57DF;ECg7DA;IAeI;IACA;;;AD17DJ;EC06DA;IAoBI;IACA;;;AAGF;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;ADl9DN;EC48DI;IASI;IACA;IACA;;;AAKN;EACE,OFx+De;EEy+Df;EACA;EACA;EACA;EACA,kBF5+DoB;EE6+DpB;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AD/+DN;EC4+DI;IAMI;IACA;IACA;;;;AAOV;EACE;EACA;EACA;EACA,OF9gE6B;EE+gE7B,aFz+DsB;EE0+DtB;EACA;EACA,eFv+DmB;EEw+DnB;EACA,kBFzhE2B;EE0hE3B;EAEA;EACA;EACA,eFj/Dc;;ACjDd;ECmhEF;IAkBI;;;ADnhEF;ECigEF;IAsBI;;;ADjhEF;EC2/DF;IA0BI;IACA;;;ADhhEF;ECq/DF;IA+BI;IACA;IACA;IACA;;;ADjhEF;EC++DF;IAsCI;;;AAIF;EACE;;AAIE;EACE;;ADjjEN;ECgjEI;IAII;;;ADxiER;ECoiEI;IAQI;;;AAKN;EACE;EACA;EACA,OFjkEe;EEkkEf;EACA;;ADlkEJ;EC6jEE;IAQI;;;AAIJ;EACE;EACA;EACA;;AD5kEJ;ECykEE;IAMI;;;AAGF;EACE,OFnlEe;EEolEf;;AAGF;EACE;EACA;EACA,OFzlEgB;;AE2lEhB;EACE,kBFrmEoB;EEsmEpB;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAIJ;EACE;EACA;EACA;EACA,kBFxnEsB;EEynEtB;;;AAQN;EACE;;;AAIJ;EACE;;AAEA;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAKN;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAIA;EACE;;AAIJ;EACE;;AAIA;EACE;EACA;;AAGF;EACE;;AAKN;EAhEF;IAiEI;;;AAIJ;EACE;EACA;;AAII;EACE;EACA;EACA;EACA;EACA;EACA;;AAMR;EACE;EACA;EACA;EACA;;AAGE;EACE;EACA;EACA;EACA;EACA;EACA;;AAKN;EACE;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAKN;EACE;;;AAMF;AAAA;AAAA;AAAA;EAEE;EACA;;AAEA;AAAA;AAAA;AAAA;EACE;;AAIJ;AAAA;EACE;EACA;EACA;EACA;;AAEA;AAAA;EACE;EACA;EACA;EACA;EACA;;;AASF;EACE;;;AAOJ;EACE;EACA;;AAIA;EACE;;;AAOJ;EACE;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;;AAQA;EACE;EACA;;;AAMR;EACE;;;AAIA;EACE;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAIA;EACE;EACA;;AAKF;EACE;EACA;;AAIA;EACE;EACA;;;AC/7EV;EACE;EACA;;AAEA;EACE;;AAGF;EAEE;EACA;;AAEA;EACE;EACA,OHIiB;EGHjB;EACA;;AAEA;EACE,OHWO;EGVP;;AAKN;EACE;EACA;EACA;EACA;EACA;EACA;;AF/BF;EEyBA;IASI;;;AF5BJ;EEmBA;IAaI;;;AAGF;EACE,OHzBe;EG0Bf;EACA;EACA;EACA,eHKe;EGJf;;AFzCJ;EEmCE;IASI;;;AAGF;EACE;EACA;;AAGF;EACE,OHxCgB;EGyChB;EACA;EACA;;AFxDN;EEoDI;IAOI;;;AAIJ;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EAEE;EACA;EACA;;AAGF;EACE,OH5Ea;EG6Eb,kBH5EkB;;AG+EpB;EACE;;AAKN;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;;AFhGF;EE4FA;IAOI;IACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA,eHxEU;EGyEV,YHzHY;EG0HZ;;AF3HJ;EEmHE;IAWI;;;AFxHN;EE6GE;IAeI;;;AFtHN;EEuGE;IAmBI;IACA;;;AFrHN;EEiGE;IAwBI;IACA;;;AAGF;EACE;;AAGF;EACE;EACA,OHnIe;EGoIf;EACA;;AAEA;EACE;;AASF;EACE;EACA;EACA;EACA,OHrJa;EGsJb;;AAEA;EACE;EACA;EACA,kBHjJgB;EGkJhB;EACA,OH9KM;EG+KN;EACA;;AAEA;EACE,kBHvKO;;ACPnB;EEoKQ;IAcI;;;AFtKZ;EEwJQ;IAkBI;;;AAMR;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAIJ;EACE;EACA,OH/MgB;EGgNhB;;AAGF;EACE;;AF3NN;EE+NE;IAGI;;;AF5NN;EEyNE;IAOI;;;AAGF;EACE;;AAEF;EACE;EACA;EACA;;AAEA;EACE;;AAGJ;EACE;EACA;;AAIJ;EACE;;AF5PJ;EE2PE;IAII;;;AAGF;EACE;;AAEA;EACE;EACA;EACA;;AAIJ;EACE,OHvQe;EGwQf;EACA;EACA;;AAGF;EACE,OH/Qa;EGgRb;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAEA;EACE;EACA;;AAIJ;EACE;EACA;EACA;EACA;EACA,eH5QS;EG6QT;;AF1TV;EEoTQ;IASI;;;AAGF;EACE;EACA;EACA;;AAEA;EACE,YHlUc;EGmUd;;AAIJ;EACE;EACA,YH3UW;EG4UX;EAEA;;AAEA;EACE,YH7UgB;;AGiVpB;EACE;EACA;;AAMR;EACE;EACA,OHrVe;EGsVf;;AAMF;EACE;EACA;;AFpWN;EEkWI;IAKI;IACA;;;AF5VR;EEsVI;IASM;IACA;IACA;;;AAOV;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA,YHxYY;EGyYZ;EACA;;AAEA;EACE;;AAGJ;EACE;;AAEA;EACE;EACA;;AAEA;EACE;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAMV;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAIJ;EACE;;AAEA;EACE;EACA;EACA;EACA;;AAEF;EACE;EACA;;AAEF;EACE;EACA;;AAMR;EACE;EACA;EACA;EACA;;AF7cF;EEycA;IAOI;;;AFxbJ;EEibA;IAWI;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA,eHzbU;EG0bV,YH1eY;EG2eZ;;AFheJ;EEudE;IAYI;IACA;;;AFldN;EEqcE;IAiBI;;;AFhdN;EE+bE;IAqBI;;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AFzfR;EEqfM;IAOI;IACA;IACA;;;AF5eV;EEmeM;IAaI;IACA;IACA;;;AAKN;EACE;;AAEA;EACE,OHxgBW;EGygBX;EACA;EACA;EACA;;AF/fR;EE0fM;IAQI;;;AAGF;EACE;;AAIJ;EACE;;AAGF;EACE;EACA;;AAMR;EACE;EACA;EACA;EACA;;AF5iBF;EEwiBA;IAOI;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA,eHnhBU;EGohBV,YHpkBY;EGqkBZ;EACA;;AFjkBJ;EEwjBE;IAYI;IACA;;;AF/jBN;EEkjBE;IAiBI;;;AFvjBN;EEsiBE;IAqBI;;;AAGF;EACE;;AAIJ;EACE;;AAEA;EACE;;AAGF;EACE;EACA;;AFtkBN;EEokBI;IAKI;;;AAGF;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAMR;EACE;EACA;;AAEA;EACE,OH3nBe;EG4nBf;;AAGF;EACE,OHrnBc;;ACbtB;EEioBM;IAII;IACA;IACA;;;AF/mBV;EEymBM;IAUI;;;AAMR;EACE;;AAMI;EACE,OH9oBS;EG+oBT;EACA;;AAGF;EACE,OHnpBW;EGopBX;EACA;EACA;EACA;;AAKJ;EACE;EACA;EACA;EACA;EACA;;AAKN;EACE;EACA;;AFprBJ;EEkrBE;IAKI;;;AFrqBN;EEgqBE;IASI;;;AAOE;EACE,OHxrBS;EGyrBT;EACA;;AAGF;EACE,OH7rBW;EG8rBX;EACA;;AF3sBV;EEwsBQ;IAMI;;;AAKN;EACE;EACA;;AAEA;EACE,OH7sBS;EG8sBT;EACA;EACA;;AF3tBV;EEutBQ;IAOI;IACA;;;AFztBZ;EEitBQ;IAYI;;;AFjtBZ;EEqsBQ;IAgBI;;;AAGF;EACE;;AAEA;EACE;EACA;;AAKA;EACE;;AAKN;EACE;EACA,OH1vBW;EG2vBX;EACA;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE,OH9vBS;EG+vBT;EACA;;;ACjxBZ;EACE;EACA;EACA;EACA;;AAEF;EACE;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;AAIE;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAeF;EACE;;AAEA;EACE;;AAOJ;EACE;EACA;EACA,kBJpDgB;EIqDhB;EACA,OJjFM;EIkFN;EACA;EACA;;AAEA;EACE,kBJ3EO;;ACKnB;EG2DQ;IAeI;;;AAOV;EACE;EACA;EACA;;AAKA;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAIJ;EACE;EACA;EACA;EACA;;AAGF;EACE;;AAGF;EACE;;AAKA;EACE;EACA;EACA;;AAEA;EACE;;AAIJ;EACE;EACA;;;AC1JR;EACE;;AAIE;EACE;EACA;;AAEA;EACE;EACA;EACA,eL4BI;EK3BJ;EACA;;AAGF;EACE;;AAGF;EACE;;AAOF;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAIJ;EACE;;AAEA;EACE;EACA;EACA;;AAKN;EACE;EACA;EACA;EACA;EACA,eL/BI;;AKiCJ;EACE;EACA;;AAEA;EACE,YL3EmB;EK4EnB,eL3BS;EK4BT;;AAIJ;EACE;EACA;EACA;EACA;EACA,kBLlEmB;;AKoEnB;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA,kBLvFe;;AK0FjB;EACE;EACA;EACA;EACA,OLlGS;EKmGT;;AAGF;EACE;EACA,kBLhGwB;;AKkGxB;EACE,OL5GK;;AKiHP;EACE,kBL5GY;;AKgHhB;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAKN;EACE;EACA;EACA,OLxJe;EKyJf;EACA;;AAEA;EACE;EACA;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAMF;EACE;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA,kBL1Ma;EK2Mb,eL7JM;EK8JN;;AAEA;EACE;EACA,OLjMW;EKkMX;EACA;;AAGF;EACE;EACA,OLxMW;EKyMX;EACA;EACA;EACA;EACA;EACA,eL7KS;EK8KT;;AAEA;EACE;EACA;EACA;;AAIJ;EACE,OL9NS;EK+NT,kBL9Nc;;AKoOhB;EACE;;AAGF;EACE,OLtOS;EKuOT;EACA;;AAEA;EACE,OL1OS;EK2OT;EACA;;AAIJ;EACE;EACA;EACA;EACA;;AAEA;EAEE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAKN;EACE;EACA;EACA;;AAKA;EACE;;AAIJ;EACE,OLzRW;EK0RX;EACA;EACA;EACA;EACA;;AAEA;EAEE;EACA,OLpSO;;AKuST;EACE,OLtSU;EKuSV;EACA;EACA;EACA;;AAIJ;EAEE;;AAEA;EACE;EACA,OLrTS;;AKuTT;EACE,OL5SD;;AKiTL;EACE;EACA;EACA;EACA;EACA;EACA,eL9SA;;AKgTA;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA,eLhTE;;AKmTJ;EACE;EACA;;AAiBJ;EACE;EACA,OLvWW;EKwWX;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAIJ;EACE;EACA;;AAIJ;EACE;;AAEA;EACE;EACA;;AAGF;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;;ACvbhB;EACE;EACA;;AAEA;EACE;EACA;EACA,eN2CY;EM1CZ,kBNNc;EMOd;;AAEA;EACE;EACA;;AAIE;EACE;EACA;EACA,ONXe;EMYf;EACA;;AAGF;EACE;EACA;EACA;;AAEA;EACE;EACA;;AAEA;EACE;EACA;;AAIE;EACE;EACA;EACA;EACA;EACA;EACA,ON1BM;;AMkClB;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAEF;EACE;EACA,ON9Cc;EM+Cd;;AAEA;EACE;;AAKN;EACE;EACA;EACA;EACA,ON5De;EM6Df,eN9BQ;EM+BR,kBN7Ee;EM8Ef;;AAEA;EACE;;AAMR;EACE;;AAEA;EACE;;AAIJ;EACE;;AAEA;EACE,eN/DM;EMgEN,kBNpGiB;EMqGjB;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA,eN5EI;EM6EJ;;AL9GN;EKsGI;IAWI;;;AAOE;EACE;EACA;EACA;EACA,ON3Gc;EM6Gd;EACA;EACA,wBN/FF;EMgGE,yBNhGF;EMiGE;EACA,kBN9GmB;;AMgHnB;EACE;EACA;;AL7Id;EK8HU;IAmBI;;;AL3Id;EKwHU;IAuBI;IACA;;;AAMR;EACE;EACA;EACA,4BNxHE;EMyHF,2BNzHE;;AM2HF;EACE;;AAIE;EACE;EACA;EACA;EACA;EACA;EACA;EACA,eNvIJ;EMwII,kBN9KE;;AMsLF;EACE,2BNjJN;;AMoJI;EACE,4BNrJN;;AM0JA;EACE;EACA;EACA;EACA;EACA;;ALtMZ;EKiMU;IAQI;;;ALjLd;EKyKU;IAYI;;;AAGF;EACE;;AAGF;EACE,ONpMK;EMqML;EACA;;AAGF;EACE;EACA;EACA;EACA;;AL9Nd;EK0NY;IAOI;;;AL3NhB;EKoNY;IAWI;;;AAIJ;EACE;;AAGF;EACE;EACA;EACA,ON9NO;;AMgOP;EACE,ON3NO;EM4NP;EACA;;AAIJ;EACE;;;AC3PhB;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA,ePyCY;EOxCZ,kBPRc;EOSd;;AAEA;EACE;EACA;EACA;;AAEA;EACE;;AAGF;EACE,OPLa;EOMb;EACA;;AAGF;EACE,OPVe;EOWf;EACA;EACA;;AAGF;EACE;;AAEA;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAOV;EACE;EACA,OP7CiB;;AOgDnB;EACE;EACA;;AAEA;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;ANjEN;EM8DI;IAMI;;;AAGF;EACE;EACA;EACA;EACA;EACA,kBPvFQ;EOwFR,ePxCM;EOyCN;EACA;;AAEA;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA,OPvFS;;AO0FX;EACE;EACA;EACA,OP5FW;;AOkGnB;EACE;EACA;;AN1GJ;EMwGE;IAKI;;;AAGF;EACE;EACA,eP7EQ;EO8ER,kBP9HU;EO+HV;;AAGF;EACE;EACA;EACA,OP9GiB;EO+GjB;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA,eP5FW;EO6FX;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA,kBPvJW;EOwJX,ePpHA;EOqHA;;AAGF;EACE;EACA;EACA;;AAEA;EACE;;;ACtKd;EACE;;AAIE;EACE;EACA;;AAEA;EACE;EACA;EACA,eR4BI;EQ3BJ;;AAEA;EACE;;AAIJ;EACE;;AAGF;EACE;;AAOF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAMF;EACE;;AAIJ;EAEE;EACA;EACA;;AAKA;EACE;EACA,eRhCE;EQiCF,kBRvEQ;;AQ0EV;EACE;EACA;EACA;EACA,OR9DW;EQ+DX;;AAEA;EACE;EACA;EACA;;AAEA;EACE,OR3EO;;AQ8ET;EACE;;AASN;EACE;EACA,eRhEE;EQiEF;EACA;EACA,kBRzGQ;;AQ4GV;EACE;EACA;EACA;EACA,ORhGW;EQiGX;;AAEA;EACE;EACA;;AAGA;EACE;;AAGF;EACE;;AAEA;EACE;EACA;EACA;;AAIJ;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA,OR9HS;;AQgIT;EACE;EACA;EACA,ORnIO;EQoIP;EACA;EACA,kBR/Hc;EQgId,eRlHJ;;AQuHF;EACE;EACA;EACA;EACA;EACA;EACA,kBRjKW;EQkKX,eRpHI;EQqHJ;;AAEA;EACE,ORjKW;EQkKX;EACA;EACA,kBRlKgB;EQmKhB;EACA,wBRvIF;EQwIE,yBRxIF;;AQ0IE;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAMN;EACE;EACA;;AAEA;EACE;EACA,ORnLO;EQoLP;;AAKA;EACE;;AAGF;EACE,OR9LK;EQ+LL;EACA;;AAGF;EACE,ORpMK;EQqML;EACA;;AAGF;EACE;EACA;;AAIJ;EACE;EACA;;AAEA;EACE;EACA,ORpNM;EQqNN;;AAQJ;EACE;;AAEA;EACE;;AAIJ;EACE;EACA;;AAEA;EACE;EACA;;AAGF;EACE,ORrPG;EQsPH;EACA;EACA,eRlNG;EQmNH,kBRxPQ;;AQ2PV;EACE;EACA;EACA","file":"limit-login-attempts.css"}plugins/limit-login-attempts-reloaded/assets/css/limit-login-attempts.min.css000064400000563543147176754540023602 0ustar00@charset "UTF-8";@import "../css/fonts/stylesheet.css";#llar-admin-dashboard-widgets .llar-widget .section-title__new .llar-label .hint_tooltip,.llar_hint_tooltip,.toplevel_page_limit-login-attempts .hint_tooltip{display:none;position:absolute;background-color:#4acad8;color:#fff;padding:12px 20px;width:180px;border-radius:20px;top:26px;right:-20px;z-index:955}#llar-admin-dashboard-widgets .llar-widget .section-title__new .llar-label .hint_tooltip-content,.llar_hint_tooltip-content,.toplevel_page_limit-login-attempts .hint_tooltip-content{font-size:12px;white-space:initial;text-align:left;margin-top:0;margin-bottom:0}#llar-admin-dashboard-widgets .llar-widget .section-title__new .llar-label .hint_tooltip::before,.llar_hint_tooltip::before,.toplevel_page_limit-login-attempts .hint_tooltip::before{content:"";position:absolute;top:-12px;right:12%;border-width:6px;border-style:solid;border-color:transparent transparent #4acad8}#llar-admin-dashboard-widgets .llar-widget .section-title__new .llar-label .hint_tooltip-parent,.llar_hint_tooltip-parent,.toplevel_page_limit-login-attempts .hint_tooltip-parent{position:relative}#llar-admin-dashboard-widgets .llar-widget .section-title__new .llar-label .hint_tooltip-parent:hover .hint_tooltip,.llar_hint_tooltip-parent:hover .hint_tooltip,.toplevel_page_limit-login-attempts .hint_tooltip-parent:hover .hint_tooltip{display:block}.toplevel_page_limit-login-attempts *{margin:0;padding:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.toplevel_page_limit-login-attempts .p-0{padding:0!important}.toplevel_page_limit-login-attempts .pt-0_5{padding-top:8px!important}.toplevel_page_limit-login-attempts .pt-1_5{padding-top:24px!important}.toplevel_page_limit-login-attempts .mt-0_5{margin-top:8px!important}.toplevel_page_limit-login-attempts .mt-1_5{margin-top:24px!important}.toplevel_page_limit-login-attempts .mx-0_5{margin-left:8px!important;margin-right:8px!important}.toplevel_page_limit-login-attempts .button_micro_cloud{cursor:pointer}.link__style_color_inherit,.link__style_unlink,.llar-label{text-decoration:none;color:inherit;position:relative}.link__style_color_inherit{border-bottom:1px solid currentColor}.link__style_color_inherit:hover,.link__style_unlink:hover,.llar-label:hover{color:inherit}.no_href_link{cursor:default}.llar_typography-secondary{color:#666d84}.llar_orange{color:#ff7c06}.llar_orange:hover{color:#f07200}#llar-setting-page .llar-settings-wrap .llar-form-table tr td a.unlink,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td a.unlink,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td a.unlink,#llar-setting-page-logs .description-page .description-secondary a.unlink,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td a.unlink,#llar-setting-page-logs__active .description-page .description-secondary a.unlink,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td a.unlink,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td a.unlink,.llar_turquoise{color:#4acad8}#llar-setting-page .llar-settings-wrap .llar-form-table tr td a.unlink,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td a.unlink,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td a.unlink,#llar-setting-page-logs .description-page .description-secondary a.unlink,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td a.unlink,#llar-setting-page-logs__active .description-page .description-secondary a.unlink,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td a.unlink,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td a.unlink,a.llar_turquoise{text-decoration:none}a.llar_turquoise:hover{border-bottom:1px solid currentColor}#llar-setting-page .llar-settings-wrap .llar-form-table tr td a.unlink:hover,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td a.unlink:hover,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td a.unlink:hover,#llar-setting-page-logs .description-page .description-secondary a.unlink:hover,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td a.unlink:hover,#llar-setting-page-logs__active .description-page .description-secondary a.unlink:hover,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td a.unlink:hover,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td a.unlink:hover,a.llar_turquoise:hover{text-decoration:none;color:#4acad8}.llar-label{border-radius:8px;background-color:rgba(74,202,216,.0980392157);padding:.125rem 1.125rem}.llar_bold{font-weight:700}.llar-display-none{display:none!important}.llar-display-block{display:block!important}.llar-visibility{visibility:visible!important}.llar-hidden{visibility:hidden!important}.mx-auto{margin-left:auto;margin-right:auto}.llar-disabled{cursor:default!important;pointer-events:none}.dashicons-secondary{margin-left:8px;font-size:170%;width:15px;height:15px}#llar-dashboard-page .section-title__new .llar-label .dashicons{margin-left:8px}#llar-dashboard-page .section-title__new .llar-label .dashicons,#llar-setting-page .llar-settings-wrap .llar-form-table tr th .dashicons,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr th .dashicons,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr th .dashicons,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr th .dashicons,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr th .dashicons,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr th .dashicons,.dashicons-secondary{line-height:inherit;position:relative;z-index:1;color:#e8e9ec;border-radius:20px;vertical-align:middle;background:#666d84}@media screen and (max-width:767.5px){#llar-dashboard-page .section-title__new .llar-label .dashicons,#llar-setting-page .llar-settings-wrap .llar-form-table tr th .dashicons,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr th .dashicons,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr th .dashicons,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr th .dashicons,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr th .dashicons,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr th .dashicons,.dashicons-secondary{font-size:1.4rem}}#llar-dashboard-page .section-title__new .llar-label .dashicons:before,#llar-setting-page .llar-settings-wrap .llar-form-table tr th .dashicons:before,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr th .dashicons:before,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr th .dashicons:before,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr th .dashicons:before,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr th .dashicons:before,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr th .dashicons:before,.dashicons-secondary:before{position:absolute;top:50%;left:50%;font-size:inherit;font-weight:inherit;line-height:inherit;transform:translate(-50%,-50%)}.llar_input_border{border-radius:16px}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .input_border,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-email .input_border,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-key .input_border{font-family:inherit;line-height:inherit;color:#4acad8;border-radius:16px;border:1px solid #4acad8;width:fit-content}#llar-setting-page .llar-settings-wrap .llar-form-table tr td .textarea_border,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .textarea_border,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .textarea_border,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .textarea_border,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .textarea_border,#llar-setting-page-logs__active.limit-login-app-dashboard .llar-block-country-section .llar-block-country-mode select.input_border,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .textarea_border{font-family:inherit;font-size:16px;line-height:inherit;padding:6px 8px 6px 16px;color:#4acad8;border-radius:16px;border:1px solid #4acad8;width:fit-content}#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td input.input_border,#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td select.input_border{font-family:inherit;font-size:16px;line-height:inherit;padding:6px 8px 6px 16px;border-radius:16px;width:fit-content}#llar-setting-page .llar-settings-wrap .llar-form-table tr td .input_border,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .input_border,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .input_border,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .input_border,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .input_border,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .input_border,.llar_input_border{font-family:inherit;font-size:16px;line-height:inherit;padding:6px 8px 6px 16px;color:#4acad8;border:1px solid #4acad8;width:fit-content}@media screen and (max-width:1599.5px){#llar-setting-page .llar-settings-wrap .llar-form-table tr td .input_border,#llar-setting-page .llar-settings-wrap .llar-form-table tr td .textarea_border,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .input_border,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .textarea_border,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .input_border,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .textarea_border,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .input_border,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .textarea_border,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .input_border,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .textarea_border,#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td input.input_border,#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td select.input_border,#llar-setting-page-logs__active.limit-login-app-dashboard .llar-block-country-section .llar-block-country-mode select.input_border,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .input_border,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .textarea_border,.llar_input_border,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .input_border,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-email .input_border,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-key .input_border{padding:6px 8px 6px 12px;font-size:14px}}#llar-setting-page .llar-settings-wrap .llar-form-table tr td .textarea_border:focus,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .textarea_border:focus,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .textarea_border:focus,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .textarea_border:focus,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .textarea_border:focus,#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td input.input_border:focus,#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td select.input_border:focus,#llar-setting-page-logs__active.limit-login-app-dashboard .llar-block-country-section .llar-block-country-mode select.input_border:focus,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .textarea_border:focus,.llar_input_border:focus,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .input_border:focus,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-email .input_border:focus,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-key .input_border:focus{box-shadow:unset;outline:0}#llar-setting-page .llar-settings-wrap .llar-form-table tr td .input_border::placeholder,#llar-setting-page .llar-settings-wrap .llar-form-table tr td .textarea_border::placeholder,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .input_border::placeholder,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .textarea_border::placeholder,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .input_border::placeholder,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .textarea_border::placeholder,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .input_border::placeholder,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .textarea_border::placeholder,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .input_border::placeholder,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .textarea_border::placeholder,#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td input.input_border::placeholder,#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td select.input_border::placeholder,#llar-setting-page-logs__active.limit-login-app-dashboard .llar-block-country-section .llar-block-country-mode select.input_border::placeholder,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .input_border::placeholder,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .textarea_border::placeholder,.llar_input_border::placeholder,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .input_border::placeholder,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-email .input_border::placeholder,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-key .input_border::placeholder{color:inherit;opacity:.5}#llar-setting-page .llar-settings-wrap .llar-form-table tr td input[type=checkbox],#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td input[type=checkbox],#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td input[type=checkbox],#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td input[type=checkbox],#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td input[type=checkbox],#llar-setting-page-logs__active.limit-login-app-dashboard .llar-block-country-section .llar-block-country-list.llar-all-countries-selected .llar-country input[type=checkbox],#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td input[type=checkbox],.llar_input_checkbox,.toplevel_page_limit-login-attempts input[type=checkbox]{background-color:#fdfdfd;border:1.5px solid #abbfc1;box-sizing:content-box;margin:-.25rem .25rem 0 0}#llar-setting-page .llar-settings-wrap .llar-form-table tr td input[type=checkbox]:checked,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td input[type=checkbox]:checked,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td input[type=checkbox]:checked,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td input[type=checkbox]:checked,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td input[type=checkbox]:checked,#llar-setting-page-logs__active.limit-login-app-dashboard .llar-block-country-section .llar-block-country-list.llar-all-countries-selected .llar-country input[type=checkbox]:checked,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td input[type=checkbox]:checked,.llar_input_checkbox:checked,.toplevel_page_limit-login-attempts input[type=checkbox]:checked{background-color:#ff7c06;border:1.5px solid #ff7c06}#llar-setting-page .llar-settings-wrap .llar-form-table tr td input[type=checkbox]:checked::before,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td input[type=checkbox]:checked::before,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td input[type=checkbox]:checked::before,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td input[type=checkbox]:checked::before,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td input[type=checkbox]:checked::before,#llar-setting-page-logs__active.limit-login-app-dashboard .llar-block-country-section .llar-block-country-list.llar-all-countries-selected .llar-country input[type=checkbox]:checked::before,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td input[type=checkbox]:checked::before,.llar_input_checkbox:checked::before,.toplevel_page_limit-login-attempts input[type=checkbox]:checked::before{content:"✔";font-size:14px;line-height:1.1;width:100%;height:100%;margin:0;color:#fdfdfd}#llar-setting-page .llar-settings-wrap .llar-form-table tr td input[type=checkbox]:focus,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td input[type=checkbox]:focus,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td input[type=checkbox]:focus,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td input[type=checkbox]:focus,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td input[type=checkbox]:focus,#llar-setting-page-logs__active.limit-login-app-dashboard .llar-block-country-section .llar-block-country-list.llar-all-countries-selected .llar-country input[type=checkbox]:focus,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td input[type=checkbox]:focus,.llar_input_checkbox:focus,.toplevel_page_limit-login-attempts input[type=checkbox]:focus{box-shadow:unset}#llar-admin-dashboard-widgets .llar-widget .section-title__new .llar-label ul.hint_tooltip-content,#llar-dashboard-page ul,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content ul.field-list,.toplevel_page_limit-login-attempts ul.hint_tooltip-content,ul.llar_hint_tooltip-content,ul.llar_list{list-style:none}#llar-admin-dashboard-widgets .llar-widget .section-title__new .llar-label ul.hint_tooltip-content li,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content ul.field-list li,.toplevel_page_limit-login-attempts ul.hint_tooltip-content li,ul.llar_hint_tooltip-content li,ul.llar_list li{position:relative;list-style:none;font-size:12px;white-space:initial}#llar-dashboard-page ul li{position:relative;list-style:none;white-space:initial}#llar-admin-dashboard-widgets .llar-widget .section-title__new .llar-label ul.hint_tooltip-content li::before,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content ul.field-list li::before,.toplevel_page_limit-login-attempts ul.hint_tooltip-content li::before,ul.llar_hint_tooltip-content li::before,ul.llar_list li::before{position:absolute;box-sizing:inherit;content:"✧";color:#fdfdfd;margin-left:-18px;top:50%;transform:translateY(-50%)}#llar-dashboard-page ul li::before{position:absolute;box-sizing:inherit;content:"✧";top:50%;transform:translateY(-50%)}#llar-setting-page .button,#llar-setting-page button.button,#llar-setting-page-debug .button,#llar-setting-page-help .button,#llar-setting-page-logs .button,#llar-setting-page-logs__active .button,#llar-setting-page-premium .button,.llar_button,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button,button.llar_button{font-family:inherit;background:#fdfdfd;border:1px solid #2a2f40;cursor:pointer;white-space:nowrap;vertical-align:baseline}#llar-setting-page .menu__item.button,#llar-setting-page button.menu__item.button,#llar-setting-page-debug .menu__item.button,#llar-setting-page-help .menu__item.button,#llar-setting-page-logs .menu__item.button,#llar-setting-page-logs__active .menu__item.button,#llar-setting-page-premium .menu__item.button,.llar_button.menu__item,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .menu__item.button,button.llar_button.menu__item{border-radius:10px;font-size:16px;line-height:1.45;padding:6px 18px;text-align:center}@media screen and (max-width:1599.5px){#llar-setting-page .menu__item.button,#llar-setting-page button.menu__item.button,#llar-setting-page-debug .menu__item.button,#llar-setting-page-help .menu__item.button,#llar-setting-page-logs .menu__item.button,#llar-setting-page-logs__active .menu__item.button,#llar-setting-page-premium .menu__item.button,.llar_button.menu__item,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .menu__item.button,button.llar_button.menu__item{font-size:14px}}@media screen and (max-width:991.5px){#llar-setting-page .menu__item.button,#llar-setting-page button.menu__item.button,#llar-setting-page-debug .menu__item.button,#llar-setting-page-help .menu__item.button,#llar-setting-page-logs .menu__item.button,#llar-setting-page-logs__active .menu__item.button,#llar-setting-page-premium .menu__item.button,.llar_button.menu__item,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .menu__item.button,button.llar_button.menu__item{padding:5px 16px}}@media screen and (max-width:428px){#llar-setting-page .menu__item.button,#llar-setting-page button.menu__item.button,#llar-setting-page-debug .menu__item.button,#llar-setting-page-help .menu__item.button,#llar-setting-page-logs .menu__item.button,#llar-setting-page-logs__active .menu__item.button,#llar-setting-page-premium .menu__item.button,.llar_button.menu__item,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .menu__item.button,button.llar_button.menu__item{padding:5px 14px}}#llar-setting-page button.button:focus,button.llar_button:focus{outline:0!important;box-shadow:unset!important}#llar-setting-page .button,#llar-setting-page-debug .button,#llar-setting-page-help .button,#llar-setting-page-logs .button,#llar-setting-page-logs__active .button,#llar-setting-page-premium .button,.llar_button,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button{position:relative;min-width:175px;text-transform:inherit;text-decoration:none}#llar-setting-page .button__orange.button,#llar-setting-page-debug .button__orange.button,#llar-setting-page-help .button__orange.button,#llar-setting-page-logs .button__orange.button,#llar-setting-page-logs__active .button__orange.button,#llar-setting-page-premium .button__orange.button,.llar_button.button__orange,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button__orange.button{color:#fff!important;background:#ff7c06!important;border:1px solid #ff7c06!important;box-shadow:0 6px 12px 0 rgba(255,124,6,.4980392157)!important}#llar-setting-page .button__orange.button:hover,#llar-setting-page-debug .button__orange.button:hover,#llar-setting-page-help .button__orange.button:hover,#llar-setting-page-logs .button__orange.button:hover,#llar-setting-page-logs__active .button__orange.button:hover,#llar-setting-page-premium .button__orange.button:hover,.llar_button.button__orange:hover,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button__orange.button:hover{background:#f07200!important}#llar-setting-page .button__orange.button:disabled,#llar-setting-page-debug .button__orange.button:disabled,#llar-setting-page-help .button__orange.button:disabled,#llar-setting-page-logs .button__orange.button:disabled,#llar-setting-page-logs__active .button__orange.button:disabled,#llar-setting-page-premium .button__orange.button:disabled,.llar_button.button__orange:disabled,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button__orange.button:disabled{border:1px solid rgba(255,124,6,.4980392157)!important;background:rgba(255,124,6,.4980392157)!important;cursor:auto}#llar-setting-page .button__transparent_orange.button,#llar-setting-page-debug .button__transparent_orange.button,#llar-setting-page-help .button__transparent_orange.button,#llar-setting-page-logs .button__transparent_orange.button,#llar-setting-page-logs__active .button__transparent_orange.button,#llar-setting-page-premium .button__transparent_orange.button,.llar_button.button__transparent_orange,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button__transparent_orange.button{color:#ff7c06!important;border:1px solid currentColor!important;background:0 0!important}#llar-setting-page .button__transparent_grey.button,#llar-setting-page-debug .button__transparent_grey.button,#llar-setting-page-help .button__transparent_grey.button,#llar-setting-page-logs .button__transparent_grey.button,#llar-setting-page-logs__active .button__transparent_grey.button,#llar-setting-page-premium .button__transparent_grey.button,.llar_button.button__transparent_grey,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button__transparent_grey.button{border:1px solid currentColor!important;background:0 0!important}#llar-setting-page .button__transparent_grey.orange-back.button,#llar-setting-page .button__transparent_orange.orange-back.button,#llar-setting-page-debug .button__transparent_grey.orange-back.button,#llar-setting-page-debug .button__transparent_orange.orange-back.button,#llar-setting-page-help .button__transparent_grey.orange-back.button,#llar-setting-page-help .button__transparent_orange.orange-back.button,#llar-setting-page-logs .button__transparent_grey.orange-back.button,#llar-setting-page-logs .button__transparent_orange.orange-back.button,#llar-setting-page-logs__active .button__transparent_grey.orange-back.button,#llar-setting-page-logs__active .button__transparent_orange.orange-back.button,#llar-setting-page-premium .button__transparent_grey.orange-back.button,#llar-setting-page-premium .button__transparent_orange.orange-back.button,.llar_button.button__transparent_grey.orange-back,.llar_button.button__transparent_orange.orange-back,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button__transparent_grey.orange-back.button,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button__transparent_orange.orange-back.button{background:rgba(255,124,6,.0980392157)!important}#llar-setting-page .button__transparent_grey.button:hover,#llar-setting-page .button__transparent_orange.button:hover,#llar-setting-page-debug .button__transparent_grey.button:hover,#llar-setting-page-debug .button__transparent_orange.button:hover,#llar-setting-page-help .button__transparent_grey.button:hover,#llar-setting-page-help .button__transparent_orange.button:hover,#llar-setting-page-logs .button__transparent_grey.button:hover,#llar-setting-page-logs .button__transparent_orange.button:hover,#llar-setting-page-logs__active .button__transparent_grey.button:hover,#llar-setting-page-logs__active .button__transparent_orange.button:hover,#llar-setting-page-premium .button__transparent_grey.button:hover,#llar-setting-page-premium .button__transparent_orange.button:hover,.llar_button.button__transparent_grey:hover,.llar_button.button__transparent_orange:hover,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button__transparent_grey.button:hover,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button__transparent_orange.button:hover{background:rgba(255,124,6,.0980392157)!important;border:1px solid currentColor!important}#llar-setting-page .button__transparent_grey.button:disabled,#llar-setting-page .button__transparent_orange.button:disabled,#llar-setting-page-debug .button__transparent_grey.button:disabled,#llar-setting-page-debug .button__transparent_orange.button:disabled,#llar-setting-page-help .button__transparent_grey.button:disabled,#llar-setting-page-help .button__transparent_orange.button:disabled,#llar-setting-page-logs .button__transparent_grey.button:disabled,#llar-setting-page-logs .button__transparent_orange.button:disabled,#llar-setting-page-logs__active .button__transparent_grey.button:disabled,#llar-setting-page-logs__active .button__transparent_orange.button:disabled,#llar-setting-page-premium .button__transparent_grey.button:disabled,#llar-setting-page-premium .button__transparent_orange.button:disabled,.llar_button.button__transparent_grey:disabled,.llar_button.button__transparent_orange:disabled,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button__transparent_grey.button:disabled,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button__transparent_orange.button:disabled{background:0 0;cursor:auto}#llar-setting-page .button__transparent_grey.button,#llar-setting-page-debug .button__transparent_grey.button,#llar-setting-page-help .button__transparent_grey.button,#llar-setting-page-logs .button__transparent_grey.button,#llar-setting-page-logs__active .button__transparent_grey.button,#llar-setting-page-premium .button__transparent_grey.button,.llar_button.button__transparent_grey,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button__transparent_grey.button{color:#a4a8b7!important}#llar-setting-page .button__transparent_grey.button:hover,#llar-setting-page .button__transparent_grey.gray-back.button,#llar-setting-page-debug .button__transparent_grey.button:hover,#llar-setting-page-debug .button__transparent_grey.gray-back.button,#llar-setting-page-help .button__transparent_grey.button:hover,#llar-setting-page-help .button__transparent_grey.gray-back.button,#llar-setting-page-logs .button__transparent_grey.button:hover,#llar-setting-page-logs .button__transparent_grey.gray-back.button,#llar-setting-page-logs__active .button__transparent_grey.button:hover,#llar-setting-page-logs__active .button__transparent_grey.gray-back.button,#llar-setting-page-premium .button__transparent_grey.button:hover,#llar-setting-page-premium .button__transparent_grey.gray-back.button,.llar_button.button__transparent_grey.gray-back,.llar_button.button__transparent_grey:hover,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button__transparent_grey.button:hover,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button__transparent_grey.gray-back.button{background:rgba(164,168,183,.2980392157)!important}.llar_button.button:focus{outline:0!important;box-shadow:unset!important}#llar-setting-page .tags.button,#llar-setting-page-debug .tags.button,#llar-setting-page-help .tags.button,#llar-setting-page-logs .tags.button,#llar-setting-page-logs__active .tags.button,#llar-setting-page-premium .tags.button,.llar_button.tags,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .tags.button{font-size:16px;font-weight:400;line-height:1.7;border-radius:8px;border:1px solid #ff7c06;width:fit-content;padding:0 20px;z-index:50}#llar-setting-page .tags_basic.button,#llar-setting-page-debug .tags_basic.button,#llar-setting-page-help .tags_basic.button,#llar-setting-page-logs .tags_basic.button,#llar-setting-page-logs__active .tags_basic.button,#llar-setting-page-premium .tags_basic.button,.llar_button.tags_basic,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .tags_basic.button{color:#ff7c06;background:rgba(255,124,6,.0980392157)}#llar-setting-page .tags_basic.active.button,#llar-setting-page .tags_basic.button:hover,#llar-setting-page-debug .tags_basic.active.button,#llar-setting-page-debug .tags_basic.button:hover,#llar-setting-page-help .tags_basic.active.button,#llar-setting-page-help .tags_basic.button:hover,#llar-setting-page-logs .tags_basic.active.button,#llar-setting-page-logs .tags_basic.button:hover,#llar-setting-page-logs__active .tags_basic.active.button,#llar-setting-page-logs__active .tags_basic.button:hover,#llar-setting-page-premium .tags_basic.active.button,#llar-setting-page-premium .tags_basic.button:hover,.llar_button.tags_basic.active,.llar_button.tags_basic:hover,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .tags_basic.active.button,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .tags_basic.button:hover{color:#fdfdfd;background:#ff7c06}#llar-setting-page .tags_basic_add.button,#llar-setting-page-debug .tags_basic_add.button,#llar-setting-page-help .tags_basic_add.button,#llar-setting-page-logs .tags_basic_add.button,#llar-setting-page-logs__active .tags_basic_add.button,#llar-setting-page-premium .tags_basic_add.button,.llar_button.tags_basic_add,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .tags_basic_add.button{color:#4acad8;min-width:fit-content;border:1px solid currentColor;background:rgba(74,202,216,.0980392157)}#llar-setting-page .tags_add.button a,#llar-setting-page .tags_basic_add.button a,#llar-setting-page-debug .tags_add.button a,#llar-setting-page-debug .tags_basic_add.button a,#llar-setting-page-help .tags_add.button a,#llar-setting-page-help .tags_basic_add.button a,#llar-setting-page-logs .tags_add.button a,#llar-setting-page-logs .tags_basic_add.button a,#llar-setting-page-logs__active .tags_add.button a,#llar-setting-page-logs__active .tags_basic_add.button a,#llar-setting-page-premium .tags_add.button a,#llar-setting-page-premium .tags_basic_add.button a,.llar_button.tags_add a,.llar_button.tags_basic_add a,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .tags_add.button a,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .tags_basic_add.button a{vertical-align:middle}#llar-setting-page .tags_add.button:hover,#llar-setting-page .tags_basic_add.button:hover,#llar-setting-page-debug .tags_add.button:hover,#llar-setting-page-debug .tags_basic_add.button:hover,#llar-setting-page-help .tags_add.button:hover,#llar-setting-page-help .tags_basic_add.button:hover,#llar-setting-page-logs .tags_add.button:hover,#llar-setting-page-logs .tags_basic_add.button:hover,#llar-setting-page-logs__active .tags_add.button:hover,#llar-setting-page-logs__active .tags_basic_add.button:hover,#llar-setting-page-premium .tags_add.button:hover,#llar-setting-page-premium .tags_basic_add.button:hover,.llar_button.tags_add:hover,.llar_button.tags_basic_add:hover,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .tags_add.button:hover,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .tags_basic_add.button:hover{background:rgba(255,124,6,.0980392157)}#llar-setting-page .tags_add.button,#llar-setting-page-debug .tags_add.button,#llar-setting-page-help .tags_add.button,#llar-setting-page-logs .tags_add.button,#llar-setting-page-logs__active .tags_add.button,#llar-setting-page-premium .tags_add.button,.llar_button.tags_add,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .tags_add.button{color:#a4a8b7;border:1px solid #a4a8b7;background:rgba(164,168,183,.0784313725)}#llar-setting-page .button:focus,#llar-setting-page-debug .button:focus,#llar-setting-page-help .button:focus,#llar-setting-page-logs .button:focus,#llar-setting-page-logs__active .button:focus,#llar-setting-page-premium .button:focus,.llar_button:focus,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button:focus{outline:0!important;box-shadow:unset!important}.llar-form-table{width:100%}.toplevel_page_limit-login-attempts #wpwrap{background-color:#f6fbff}.toplevel_page_limit-login-attempts #wpcontent{background-color:#f6fbff;font-family:CoFo Sans,arial;font-style:normal;font-weight:400;color:#2a2f40}.limit-login-page-settings{margin:8px 50px}@media screen and (max-width:1799.5px){.limit-login-page-settings{margin:8px 16px 8px 0}}.limit-login-page-settings__logo_block{display:flex;flex-wrap:nowrap;justify-content:space-between;align-items:baseline;font-size:18px;margin-right:20px}.limit-login-page-settings__logo_block .info-box-icon{display:inline-block;margin-left:5px}.limit-login-page-settings__logo_block .info-box-icon img{width:15px;vertical-align:middle}.limit-login-page-settings__logo{margin-top:21px;margin-left:4px;max-width:172px}.limit-login-page-settings .nav-tab-wrapper{position:relative;border-bottom:unset;margin-top:20px}.limit-login-page-settings .nav-tab-wrapper .nav-tab{border:unset;background-color:unset;font-size:16px;color:#2a2f40;font-weight:400;margin-left:0;margin-right:35px;padding:4px 5px 6px}.limit-login-page-settings .nav-tab-wrapper .nav-tab .llar-alert-icon{display:inline-block;vertical-align:middle;box-sizing:border-box;margin:-2px 0 0;padding:0 1px 4px 2px;min-width:18px;height:18px;border-radius:9px;background-color:#d63638;color:#fff;font-size:14px;line-height:1.4;text-align:center}.limit-login-page-settings .nav-tab-wrapper .nav-tab-active{border-bottom:4px solid #4acad8}@media screen and (max-width:991.5px){.limit-login-page-settings .nav-tab-wrapper .nav-tab{margin-right:20px}}@media screen and (max-width:767.5px){.limit-login-page-settings .nav-tab-wrapper .nav-tab{font-size:14px;margin-right:.87em}}@media screen and (max-width:575.5px){.limit-login-page-settings .nav-tab-wrapper .nav-tab{font-size:12px;margin-right:.5em}}.limit-login-page-settings .nav-tab-wrapper .llar-failover-link{color:#4acad8;font-size:14px;float:right;padding:7px 15px}.limit-login-page-settings .nav-tab-wrapper .llar-failover-link .llar-tooltip:before{right:0;left:auto}.limit-login-page-settings .field-col{display:inline-block;margin-right:20px}.limit-login-page-settings .limit-login-log table{background-color:#fff}.limit-login-page-settings .limit-login-log table td,.limit-login-page-settings .limit-login-log table th{padding:10px}.limit-login-page-settings .limit-login-log table tr:nth-child(even){background-color:rgba(0,0,0,.09)}.limit-login-page-settings #limit-login-app-setup-code{width:85%}.limit-login-page-settings .llar-app-notice{background-color:#fff;box-shadow:0 1px 1px 0 rgba(0,0,0,.1);padding:15px;border-radius:3px;margin-top:20px;margin-bottom:20px;font-size:14px;border-left:5px solid #ffba00}.limit-login-page-settings .llar-app-notice.success{border-color:#46b450}.limit-login-page-settings .llar-app-notice p{font-size:inherit;margin:0 0 20px}.limit-login-page-settings .llar-app-notice p:last-child{margin-bottom:0}.limit-login-page-settings input[name=admin_notify_email]{min-width:243px}.limit-login-page-settings input[name=lla_trusted_ip_origins]{min-width:400px}.limit-login-page-settings .llar-test-email-notification-btn{text-decoration:none;margin-left:16px;font-weight:400}.limit-login-page-settings .llar-test-email-notification-loader .llar-app-ajax-spinner{float:none;margin:-2px 5px 0;display:none}.limit-login-page-settings .llar-test-email-notification-loader.loading .llar-app-ajax-spinner{display:inline-block;visibility:visible}.limit-login-page-settings .llar-test-email-notification-loader .msg{margin-left:5px}.limit-login-page-settings .llar-test-email-notification-loader .msg.success{color:#71c21b}.limit-login-page-settings .llar-protect-notice{font-size:15px;color:#848484;margin-left:10px}.limit-login-page-settings .llar-protect-notice a{color:#222;text-decoration:none;border-bottom:1px dashed}.limit-login-page-settings .llar-toggle-setup-field{color:#2271b1;text-decoration-style:dashed}.limit-login-page-settings .llar-toggle-setup-field:hover{color:#222}.limit-login-page-settings .app-form-field,.limit-login-page-settings .llar-app-field,.limit-login-page-settings .setup-code-wrap{display:none}.limit-login-page-settings .setup-code-wrap.active{display:block}.limit-login-page-settings .app-form-field.active,.limit-login-page-settings .llar-app-field.active{display:table-row}#llar-setting-page,#llar-setting-page-debug,#llar-setting-page-logs,#llar-setting-page-logs__active{color:#2a2f40;margin-top:40px;line-height:1.5}#llar-setting-page-help,#llar-setting-page-premium{color:#2a2f40;margin-top:40px}#llar-setting-page-help{line-height:1.5}#llar-setting-page .title_page,#llar-setting-page-debug .title_page,#llar-setting-page-help .title_page,#llar-setting-page-logs .title_page,#llar-setting-page-logs__active .title_page,#llar-setting-page-premium .title_page{margin-top:40px;margin-bottom:15px;color:inherit;font-size:20px;font-weight:500}@media screen and (max-width:1599.5px){#llar-setting-page .title_page,#llar-setting-page-debug .title_page,#llar-setting-page-help .title_page,#llar-setting-page-logs .title_page,#llar-setting-page-logs__active .title_page,#llar-setting-page-premium .title_page{font-size:18px}}#llar-setting-page .title_page img,#llar-setting-page-debug .title_page img,#llar-setting-page-help .title_page img,#llar-setting-page-logs .title_page img,#llar-setting-page-logs__active .title_page img,#llar-setting-page-premium .title_page img{width:36px;height:36px;vertical-align:middle;margin-right:8px}#llar-setting-page .description-page,#llar-setting-page-debug .description-page,#llar-setting-page-help .description-page,#llar-setting-page-logs .description-page,#llar-setting-page-logs__active .description-page,#llar-setting-page-premium .description-page{position:relative;font-size:18px;color:#666d84;padding:30px 44px;border-radius:20px;background:rgba(232,253,255,.02);box-shadow:4px 4px 18px 0 rgba(162,180,189,.2)}@media screen and (max-width:1599.5px){#llar-setting-page .description-page,#llar-setting-page-debug .description-page,#llar-setting-page-help .description-page,#llar-setting-page-logs .description-page,#llar-setting-page-logs__active .description-page,#llar-setting-page-premium .description-page{font-size:16px}}#llar-setting-page .llar-settings-wrap,#llar-setting-page-debug .llar-settings-wrap,#llar-setting-page-help .llar-settings-wrap,#llar-setting-page-logs .llar-settings-wrap,#llar-setting-page-logs__active .llar-settings-wrap,#llar-setting-page-premium .llar-settings-wrap{margin-top:20px}#llar-setting-page .llar-settings-wrap .llar-form-table,#llar-setting-page-debug .llar-settings-wrap .llar-form-table,#llar-setting-page-help .llar-settings-wrap .llar-form-table,#llar-setting-page-logs .llar-settings-wrap .llar-form-table,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table,#llar-setting-page-premium .llar-settings-wrap .llar-form-table{color:#2a2f40;font-size:18px;border-collapse:separate;border-spacing:0 18px;border-color:unset;margin-top:-18px;margin-bottom:-18px}#llar-setting-page .llar-settings-wrap .llar-form-table tr,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr{position:relative;font-size:18px;border-radius:20px;color:#666d84;background:#fdfdfd;box-shadow:4px 4px 18px 0 rgba(162,180,189,.2)}@media screen and (max-width:1599.5px){#llar-setting-page .llar-settings-wrap .llar-form-table tr,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr{font-size:16px}}#llar-setting-page .llar-settings-wrap .llar-form-table tr th,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr th,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr th,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr th,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr th,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr th{font-size:inherit;line-height:inherit;border-radius:20px;background-color:unset;padding:29px 5px 32px 44px}#llar-setting-page .llar-settings-wrap .llar-form-table tr td,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td{border-radius:20px;background-color:unset;padding:29px 5px 32px 44px}@media screen and (max-width:1599.5px){#llar-setting-page .llar-settings-wrap .llar-form-table tr td,#llar-setting-page .llar-settings-wrap .llar-form-table tr th,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr th,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr th,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr th,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr th,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr th{padding:12px 5px 12px 25px}}@media screen and (max-width:1399.5px){#llar-setting-page .llar-settings-wrap .llar-form-table tr td,#llar-setting-page .llar-settings-wrap .llar-form-table tr th,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr th,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr th,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr th,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr th,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr th{padding-left:15px}}#llar-setting-page .llar-settings-wrap .llar-form-table tr th,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr th,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr th,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr th,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr th,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr th{color:#2a2f40;font-weight:400;border-top-right-radius:unset;border-bottom-right-radius:unset;width:300px}@media screen and (max-width:1399.5px){#llar-setting-page .llar-settings-wrap .llar-form-table tr th,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr th,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr th,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr th,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr th,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr th{width:260px}}#llar-setting-page .llar-settings-wrap .llar-form-table tr th .dashicons,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr th .dashicons,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr th .dashicons,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr th .dashicons,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr th .dashicons,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr th .dashicons{font-size:140%;width:12px;height:12px;margin-left:2px}@media screen and (max-width:1599.5px){#llar-setting-page .llar-settings-wrap .llar-form-table tr th .dashicons,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr th .dashicons,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr th .dashicons,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr th .dashicons,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr th .dashicons,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr th .dashicons{font-size:20px}}#llar-setting-page .llar-settings-wrap .llar-form-table tr th .hint_tooltip,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr th .hint_tooltip,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr th .hint_tooltip,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr th .hint_tooltip,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr th .hint_tooltip,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr th .hint_tooltip{right:-140px;top:30px;width:200px}#llar-setting-page .llar-settings-wrap .llar-form-table tr th .hint_tooltip:before,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr th .hint_tooltip:before,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr th .hint_tooltip:before,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr th .hint_tooltip:before,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr th .hint_tooltip:before,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr th .hint_tooltip:before{right:142px}#llar-setting-page .llar-settings-wrap .llar-form-table tr td,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td{color:#666d84;font-size:16px;line-height:1.5;border-top-left-radius:unset;border-bottom-left-radius:unset}@media screen and (max-width:1599.5px){#llar-setting-page .llar-settings-wrap .llar-form-table tr td,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td{font-size:14px}}#llar-setting-page .llar-settings-wrap .llar-form-table tr td .input_border.full_area,#llar-setting-page .llar-settings-wrap .llar-form-table tr td .textarea_border.full_area,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .input_border.full_area,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .textarea_border.full_area,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .input_border.full_area,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .textarea_border.full_area,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .input_border.full_area,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .textarea_border.full_area,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .input_border.full_area,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .textarea_border.full_area,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .input_border.full_area,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .textarea_border.full_area{min-width:720px}@media screen and (max-width:1599.5px){#llar-setting-page .llar-settings-wrap .llar-form-table tr td .input_border.full_area,#llar-setting-page .llar-settings-wrap .llar-form-table tr td .textarea_border.full_area,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .input_border.full_area,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .textarea_border.full_area,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .input_border.full_area,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .textarea_border.full_area,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .input_border.full_area,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .textarea_border.full_area,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .input_border.full_area,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .textarea_border.full_area,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .input_border.full_area,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .textarea_border.full_area{min-width:70%}}#llar-setting-page .llar-settings-wrap .llar-form-table tr td .textarea_border textarea,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .textarea_border textarea,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .textarea_border textarea{font-family:inherit;font-size:16px;color:#666d84;background-color:#fdfdfd;padding-right:24px;border:unset;scrollbar-width:thin}#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .textarea_border textarea{font-family:inherit;font-size:16px;background-color:#fdfdfd;padding-right:24px;border:unset;scrollbar-width:thin}#llar-setting-page .llar-settings-wrap .llar-form-table tr td .input_border textarea,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .textarea_border textarea,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .input_border textarea,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .input_border textarea,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .textarea_border textarea{font-family:inherit;font-size:16px;color:#666d84;background-color:#fdfdfd;padding-right:24px;border:unset;scrollbar-width:thin}#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .input_border textarea{font-family:inherit;font-size:16px;background-color:#fdfdfd;padding-right:24px;border:unset;scrollbar-width:thin}#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .input_border textarea,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .input_border textarea{font-family:inherit;font-size:16px;color:#666d84;background-color:#fdfdfd;padding-right:24px;border:unset;scrollbar-width:thin}@media screen and (max-width:1599.5px){#llar-setting-page .llar-settings-wrap .llar-form-table tr td .input_border textarea,#llar-setting-page .llar-settings-wrap .llar-form-table tr td .textarea_border textarea,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .input_border textarea,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .textarea_border textarea,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .input_border textarea,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .textarea_border textarea,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .input_border textarea,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .textarea_border textarea,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .input_border textarea,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .textarea_border textarea,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .input_border textarea,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .textarea_border textarea{padding-right:18px;font-size:14px}}#llar-setting-page .llar-settings-wrap .llar-form-table tr td .input_border textarea::-webkit-scrollbar,#llar-setting-page .llar-settings-wrap .llar-form-table tr td .textarea_border textarea::-webkit-scrollbar,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .input_border textarea::-webkit-scrollbar,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .textarea_border textarea::-webkit-scrollbar,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .input_border textarea::-webkit-scrollbar,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .textarea_border textarea::-webkit-scrollbar,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .input_border textarea::-webkit-scrollbar,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .textarea_border textarea::-webkit-scrollbar,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .input_border textarea::-webkit-scrollbar,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .textarea_border textarea::-webkit-scrollbar,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .input_border textarea::-webkit-scrollbar,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .textarea_border textarea::-webkit-scrollbar{width:8px}#llar-setting-page .llar-settings-wrap .llar-form-table tr td .input_border textarea::-webkit-scrollbar-track,#llar-setting-page .llar-settings-wrap .llar-form-table tr td .textarea_border textarea::-webkit-scrollbar-track,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .input_border textarea::-webkit-scrollbar-track,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .textarea_border textarea::-webkit-scrollbar-track,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .input_border textarea::-webkit-scrollbar-track,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .textarea_border textarea::-webkit-scrollbar-track,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .input_border textarea::-webkit-scrollbar-track,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .textarea_border textarea::-webkit-scrollbar-track,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .input_border textarea::-webkit-scrollbar-track,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .textarea_border textarea::-webkit-scrollbar-track,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .input_border textarea::-webkit-scrollbar-track,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .textarea_border textarea::-webkit-scrollbar-track{background-color:#a4a8b7;border-radius:8px}#llar-setting-page .llar-settings-wrap .llar-form-table tr td .input_border textarea::-webkit-scrollbar-thumb,#llar-setting-page .llar-settings-wrap .llar-form-table tr td .textarea_border textarea::-webkit-scrollbar-thumb,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .input_border textarea::-webkit-scrollbar-thumb,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .textarea_border textarea::-webkit-scrollbar-thumb,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .input_border textarea::-webkit-scrollbar-thumb,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .textarea_border textarea::-webkit-scrollbar-thumb,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .input_border textarea::-webkit-scrollbar-thumb,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .textarea_border textarea::-webkit-scrollbar-thumb,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .input_border textarea::-webkit-scrollbar-thumb,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .textarea_border textarea::-webkit-scrollbar-thumb,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .input_border textarea::-webkit-scrollbar-thumb,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .textarea_border textarea::-webkit-scrollbar-thumb{background-color:#666d84;border-radius:8px}#llar-setting-page .llar-settings-wrap .llar-form-table tr td .input_border textarea:focus,#llar-setting-page .llar-settings-wrap .llar-form-table tr td .input_border textarea:hover,#llar-setting-page .llar-settings-wrap .llar-form-table tr td .textarea_border textarea:focus,#llar-setting-page .llar-settings-wrap .llar-form-table tr td .textarea_border textarea:hover,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .input_border textarea:focus,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .input_border textarea:hover,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .textarea_border textarea:focus,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .textarea_border textarea:hover,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .input_border textarea:focus,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .input_border textarea:hover,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .textarea_border textarea:focus,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .textarea_border textarea:hover,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .input_border textarea:focus,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .input_border textarea:hover,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .textarea_border textarea:focus,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .textarea_border textarea:hover,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .input_border textarea:focus,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .input_border textarea:hover,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .textarea_border textarea:focus,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .textarea_border textarea:hover,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .input_border textarea:focus,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .input_border textarea:hover,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .textarea_border textarea:focus,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .textarea_border textarea:hover{border:unset;box-shadow:unset;outline:unset}#llar-setting-page .llar-settings-wrap .llar-form-table tr td select,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td select,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td select,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td select,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td select,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td select{font-family:inherit;background:#fdfdfd url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%234ACAD8FF'%3e%3cpath d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e") no-repeat right 5px top 55%;background-size:16px 16px}#llar-setting-page .llar-settings-wrap .llar-form-table tr td select.input_border,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td select.input_border,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td select.input_border,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td select.input_border,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td select.input_border,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td select.input_border{padding:6px 64px 6px 16px}@media screen and (max-width:1599.5px){#llar-setting-page .llar-settings-wrap .llar-form-table tr td select.input_border,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td select.input_border,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td select.input_border,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td select.input_border,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td select.input_border,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td select.input_border{padding-right:35px}}#llar-setting-page .llar-settings-wrap .llar-form-table tr td .input_border,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .input_border,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .input_border,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .input_border,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .input_border,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .input_border{border-radius:8px}#llar-setting-page .llar-settings-wrap .llar-form-table tr td .input_border:focus,#llar-setting-page .llar-settings-wrap .llar-form-table tr td .input_border:hover,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .input_border:focus,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .input_border:hover,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .input_border:focus,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .input_border:hover,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .input_border:focus,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .input_border:hover,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .input_border:focus,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .input_border:hover,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .input_border:focus,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .input_border:hover{box-shadow:unset;outline:unset}#llar-setting-page .llar-settings-wrap .llar-form-table tr td a.unlink,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td a.unlink,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td a.unlink,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td a.unlink,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td a.unlink,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td a.unlink{font-weight:500}#llar-setting-page .llar-settings-wrap .llar-form-table tr td a.unlink:hover,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td a.unlink:hover,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td a.unlink:hover,#llar-setting-page-logs .description-page .description-secondary a.unlink:hover,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td a.unlink:hover,#llar-setting-page-logs__active .description-page .description-secondary a.unlink:hover,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td a.unlink:hover,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td a.unlink:hover{border-bottom:unset}#llar-setting-page .llar-settings-wrap .llar-form-table tr td .description-additional,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .description-additional,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .description-additional,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .description-additional,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .description-additional,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .description-additional{font-size:16px;line-height:inherit;color:#a4a8b7;padding:16px 8px 8px 24px;max-width:740px}#llar-setting-page .llar-settings-wrap .llar-form-table tr td .description-secondary,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .description-secondary,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .description-secondary,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .description-secondary,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .description-secondary,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .description-secondary{font-size:16px;line-height:inherit;padding:16px 8px 8px 24px;max-width:740px}#llar-setting-page .llar-settings-wrap .llar-form-table tr td .llar-protect-notice,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .llar-protect-notice,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .llar-protect-notice,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .llar-protect-notice,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .llar-protect-notice,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .llar-protect-notice{line-height:inherit;padding:16px 8px 8px 24px;max-width:740px}@media screen and (max-width:1599.5px){#llar-setting-page .llar-settings-wrap .llar-form-table tr td .description-additional,#llar-setting-page .llar-settings-wrap .llar-form-table tr td .description-secondary,#llar-setting-page .llar-settings-wrap .llar-form-table tr td .llar-protect-notice,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .description-additional,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .description-secondary,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .llar-protect-notice,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .description-additional,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .description-secondary,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .llar-protect-notice,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .description-additional,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .description-secondary,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .llar-protect-notice,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .description-additional,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .description-secondary,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .llar-protect-notice,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .description-additional,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .description-secondary,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .llar-protect-notice{font-size:14px}}#llar-setting-page .llar-settings-wrap .llar-form-table tr td .description-secondary,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .description-secondary,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .description-secondary,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .description-secondary,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .description-secondary,#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .description-secondary{color:#666d84}#llar-setting-page .llar-settings-wrap .llar-form-table tr td .llar-protect-notice,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .llar-protect-notice,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .llar-protect-notice,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .llar-protect-notice,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .llar-protect-notice,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .llar-protect-notice{font-size:inherit;color:inherit}#llar-setting-page .llar-settings-wrap .llar-form-table tr td .llar-protect-notice a,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .llar-protect-notice a,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .llar-protect-notice a,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .llar-protect-notice a,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .llar-protect-notice a,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .llar-protect-notice a{text-decoration:none;border-bottom:unset}#llar-setting-page .llar-settings-wrap .llar-form-table tr td .llar-protect-notice a:hover,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .llar-protect-notice a:hover,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td .llar-protect-notice a:hover,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td .llar-protect-notice a:hover,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td .llar-protect-notice a:hover,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .llar-protect-notice a:hover{border-bottom:1px solid currentColor}#llar-setting-page .add_block__under_table{margin:8px 0}#llar-setting-page .add_block__under_table,#llar-setting-page-logs .add_block__under_table,#llar-setting-page-logs__active .add_block__under_table{padding:24px 48px;background-color:#f6fbff;border-radius:20px}#llar-setting-page-debug .add_block__under_table,#llar-setting-page-help .add_block__under_table,#llar-setting-page-premium .add_block__under_table{margin:8px 0;padding:24px 48px;background-color:#f6fbff;border-radius:20px}@media screen and (max-width:1199.5px){#llar-setting-page .add_block__under_table,#llar-setting-page-debug .add_block__under_table,#llar-setting-page-help .add_block__under_table,#llar-setting-page-logs .add_block__under_table,#llar-setting-page-logs__active .add_block__under_table,#llar-setting-page-premium .add_block__under_table{padding:16px}}#llar-setting-page .add_block__under_table .description,#llar-setting-page-debug .add_block__under_table .description,#llar-setting-page-help .add_block__under_table .description,#llar-setting-page-logs .add_block__under_table .description,#llar-setting-page-logs__active .add_block__under_table .description,#llar-setting-page-premium .add_block__under_table .description{color:#2a2f40;font-size:18px;line-height:1.5;font-weight:500}@media screen and (max-width:1599.5px){#llar-setting-page .add_block__under_table .description,#llar-setting-page-debug .add_block__under_table .description,#llar-setting-page-help .add_block__under_table .description,#llar-setting-page-logs .add_block__under_table .description,#llar-setting-page-logs__active .add_block__under_table .description,#llar-setting-page-premium .add_block__under_table .description{font-size:16px}}#llar-setting-page .add_block__under_table .add_block__list,#llar-setting-page-debug .add_block__under_table .add_block__list,#llar-setting-page-help .add_block__under_table .add_block__list,#llar-setting-page-logs .add_block__under_table .add_block__list,#llar-setting-page-logs__active .add_block__under_table .add_block__list,#llar-setting-page-premium .add_block__under_table .add_block__list{display:flex;margin-top:16px;margin-bottom:8px;color:#666d84;font-size:16px;flex-wrap:nowrap;justify-content:space-between}@media screen and (max-width:1599.5px){#llar-setting-page .add_block__under_table .add_block__list,#llar-setting-page-debug .add_block__under_table .add_block__list,#llar-setting-page-help .add_block__under_table .add_block__list,#llar-setting-page-logs .add_block__under_table .add_block__list,#llar-setting-page-logs__active .add_block__under_table .add_block__list,#llar-setting-page-premium .add_block__under_table .add_block__list{flex-wrap:wrap}}#llar-setting-page .add_block__under_table .add_block__list .item,#llar-setting-page-debug .add_block__under_table .add_block__list .item,#llar-setting-page-help .add_block__under_table .add_block__list .item,#llar-setting-page-logs .add_block__under_table .add_block__list .item,#llar-setting-page-logs__active .add_block__under_table .add_block__list .item,#llar-setting-page-premium .add_block__under_table .add_block__list .item{flex:0 0 16%;display:flex;flex-direction:row;flex-wrap:nowrap;align-items:flex-start}@media screen and (max-width:1599.5px){#llar-setting-page .add_block__under_table .add_block__list .item,#llar-setting-page-debug .add_block__under_table .add_block__list .item,#llar-setting-page-help .add_block__under_table .add_block__list .item,#llar-setting-page-logs .add_block__under_table .add_block__list .item,#llar-setting-page-logs__active .add_block__under_table .add_block__list .item,#llar-setting-page-premium .add_block__under_table .add_block__list .item{flex:0 0 32%}}#llar-setting-page .add_block__under_table .add_block__list .item .icon,#llar-setting-page-debug .add_block__under_table .add_block__list .item .icon,#llar-setting-page-help .add_block__under_table .add_block__list .item .icon,#llar-setting-page-logs .add_block__under_table .add_block__list .item .icon,#llar-setting-page-logs__active .add_block__under_table .add_block__list .item .icon,#llar-setting-page-premium .add_block__under_table .add_block__list .item .icon{width:50px;height:50px;vertical-align:middle;margin-right:8px}#llar-setting-page .add_block__under_table .add_block__list .item .name,#llar-setting-page-debug .add_block__under_table .add_block__list .item .name,#llar-setting-page-help .add_block__under_table .add_block__list .item .name,#llar-setting-page-logs .add_block__under_table .add_block__list .item .name,#llar-setting-page-logs__active .add_block__under_table .add_block__list .item .name,#llar-setting-page-premium .add_block__under_table .add_block__list .item .name{width:80%;padding-bottom:17px}#llar-setting-page .add_block__under_table.image_plus .row__list,#llar-setting-page-debug .add_block__under_table.image_plus .row__list,#llar-setting-page-help .add_block__under_table.image_plus .row__list,#llar-setting-page-premium .add_block__under_table.image_plus .row__list{display:flex}#llar-setting-page .add_block__under_table.image_plus .row__list .add_block__title,#llar-setting-page-debug .add_block__under_table.image_plus .row__list .add_block__title,#llar-setting-page-help .add_block__under_table.image_plus .row__list .add_block__title,#llar-setting-page-premium .add_block__under_table.image_plus .row__list .add_block__title{flex:0 0 14%;margin-right:20px}#llar-setting-page .add_block__under_table.image_plus .add_block__list,#llar-setting-page-debug .add_block__under_table.image_plus .add_block__list,#llar-setting-page-help .add_block__under_table.image_plus .add_block__list,#llar-setting-page-premium .add_block__under_table.image_plus .add_block__list{gap:16px}@media screen and (max-width:1599.5px){#llar-setting-page .add_block__under_table.image_plus .add_block__list,#llar-setting-page-debug .add_block__under_table.image_plus .add_block__list,#llar-setting-page-help .add_block__under_table.image_plus .add_block__list,#llar-setting-page-logs .add_block__under_table.image_plus .add_block__list,#llar-setting-page-logs__active .add_block__under_table.image_plus .add_block__list,#llar-setting-page-premium .add_block__under_table.image_plus .add_block__list{column-gap:10px}}#llar-setting-page .add_block__under_table.image_plus .add_block__list .item{flex:0 0 15%}#llar-setting-page .add_block__under_table.image_plus .add_block__list .item,#llar-setting-page-logs .add_block__under_table.image_plus .add_block__list .item,#llar-setting-page-logs__active .add_block__under_table.image_plus .add_block__list .item{flex-direction:column;align-items:start;border-radius:20px;border:1px solid #4acad8}#llar-setting-page-debug .add_block__under_table.image_plus .add_block__list .item,#llar-setting-page-help .add_block__under_table.image_plus .add_block__list .item,#llar-setting-page-premium .add_block__under_table.image_plus .add_block__list .item{flex:0 0 15%;flex-direction:column;align-items:start;border-radius:20px;border:1px solid #4acad8}@media screen and (max-width:1599.5px){#llar-setting-page .add_block__under_table.image_plus .add_block__list .item,#llar-setting-page-debug .add_block__under_table.image_plus .add_block__list .item,#llar-setting-page-help .add_block__under_table.image_plus .add_block__list .item,#llar-setting-page-logs .add_block__under_table.image_plus .add_block__list .item,#llar-setting-page-logs__active .add_block__under_table.image_plus .add_block__list .item,#llar-setting-page-premium .add_block__under_table.image_plus .add_block__list .item{flex:0 0 30%}}#llar-setting-page .add_block__under_table.image_plus .add_block__list .item .name{width:unset;margin:10px 23px 17px}#llar-setting-page-logs .add_block__under_table.image_plus .add_block__list .item .name,#llar-setting-page-logs__active .add_block__under_table.image_plus .add_block__list .item .name{width:unset}#llar-setting-page-debug .add_block__under_table.image_plus .add_block__list .item .name,#llar-setting-page-help .add_block__under_table.image_plus .add_block__list .item .name,#llar-setting-page-premium .add_block__under_table.image_plus .add_block__list .item .name{width:unset;margin:10px 23px 17px}#llar-setting-page .add_block__under_table.image_plus .add_block__list .item img{width:120px;align-self:center}#llar-setting-page-logs .add_block__under_table.image_plus .add_block__list .item img,#llar-setting-page-logs__active .add_block__under_table.image_plus .add_block__list .item img{align-self:center}#llar-setting-page-debug .add_block__under_table.image_plus .add_block__list .item img,#llar-setting-page-help .add_block__under_table.image_plus .add_block__list .item img,#llar-setting-page-premium .add_block__under_table.image_plus .add_block__list .item img{width:120px;align-self:center}#llar-setting-page .gdpr-information-link,#llar-setting-page-debug .gdpr-information-link,#llar-setting-page-help .gdpr-information-link,#llar-setting-page-logs .gdpr-information-link,#llar-setting-page-logs__active .gdpr-information-link,#llar-setting-page-premium .gdpr-information-link{display:block;text-decoration:none;position:relative}#llar-setting-page .gdpr-information-link:after,#llar-setting-page-debug .gdpr-information-link:after,#llar-setting-page-help .gdpr-information-link:after,#llar-setting-page-logs .gdpr-information-link:after,#llar-setting-page-logs__active .gdpr-information-link:after,#llar-setting-page-premium .gdpr-information-link:after{content:"\f345";font-family:dashicons;line-height:1;font-weight:400;font-style:normal;text-transform:none;text-rendering:auto;font-size:22px;text-align:center;position:absolute;right:40px;top:50%;color:#2a2f40;transform:translateY(-50%)}#llar-setting-page .button_block,#llar-setting-page-debug .button_block,#llar-setting-page-help .button_block,#llar-setting-page-logs .button_block,#llar-setting-page-logs__active .button_block,#llar-setting-page-premium .button_block{margin-top:24px;display:flex;flex-wrap:nowrap;column-gap:16px}#llar-setting-page .button_block a.button.menu__item,#llar-setting-page-debug .button_block a.button.menu__item,#llar-setting-page-help .button_block a.button.menu__item,#llar-setting-page-logs .button_block a.button.menu__item,#llar-setting-page-logs__active .button_block a.button.menu__item,#llar-setting-page-premium .button_block a.button.menu__item{text-align:center}#llar-setting-page .llar-accordion,#llar-setting-page-debug .llar-accordion,#llar-setting-page-help .llar-accordion,#llar-setting-page-logs .llar-accordion,#llar-setting-page-logs__active .llar-accordion,#llar-setting-page-premium .llar-accordion{font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;border-radius:20px;background-color:#f6fbff}#llar-setting-page .llar-accordion .ui-accordion-header,#llar-setting-page-debug .llar-accordion .ui-accordion-header,#llar-setting-page-help .llar-accordion .ui-accordion-header,#llar-setting-page-logs .llar-accordion .ui-accordion-header,#llar-setting-page-logs__active .llar-accordion .ui-accordion-header,#llar-setting-page-premium .llar-accordion .ui-accordion-header{color:#2a2f40;font-weight:500;font-size:18px;margin-top:20px;padding:31px 40px;border:1px solid #4acad8;border-bottom:0;border-top-right-radius:20px;border-top-left-radius:20px;background-color:#fdfdfd}@media screen and (max-width:1599.5px){#llar-setting-page .llar-accordion .ui-accordion-header,#llar-setting-page-debug .llar-accordion .ui-accordion-header,#llar-setting-page-help .llar-accordion .ui-accordion-header,#llar-setting-page-logs .llar-accordion .ui-accordion-header,#llar-setting-page-logs__active .llar-accordion .ui-accordion-header,#llar-setting-page-premium .llar-accordion .ui-accordion-header{font-size:16px}}#llar-setting-page .llar-accordion .ui-accordion-header-collapsed,#llar-setting-page-debug .llar-accordion .ui-accordion-header-collapsed,#llar-setting-page-help .llar-accordion .ui-accordion-header-collapsed,#llar-setting-page-logs .llar-accordion .ui-accordion-header-collapsed,#llar-setting-page-logs__active .llar-accordion .ui-accordion-header-collapsed,#llar-setting-page-premium .llar-accordion .ui-accordion-header-collapsed{border:0;border-radius:20px;background:unset;box-shadow:4px 4px 18px 0 rgba(162,180,189,.2)}#llar-setting-page .llar-accordion .ui-accordion-header.ui-accordion-header-active,#llar-setting-page-debug .llar-accordion .ui-accordion-header.ui-accordion-header-active,#llar-setting-page-help .llar-accordion .ui-accordion-header.ui-accordion-header-active,#llar-setting-page-logs .llar-accordion .ui-accordion-header.ui-accordion-header-active,#llar-setting-page-logs__active .llar-accordion .ui-accordion-header.ui-accordion-header-active,#llar-setting-page-premium .llar-accordion .ui-accordion-header.ui-accordion-header-active{background:#fff}#llar-setting-page .llar-accordion .ui-accordion-content,#llar-setting-page-debug .llar-accordion .ui-accordion-content,#llar-setting-page-help .llar-accordion .ui-accordion-content,#llar-setting-page-logs .llar-accordion .ui-accordion-content,#llar-setting-page-logs__active .llar-accordion .ui-accordion-content,#llar-setting-page-premium .llar-accordion .ui-accordion-content{padding-top:0;margin-bottom:16px;color:#2a2f40;border-bottom-right-radius:20px;border-bottom-left-radius:20px;border:1px solid #4acad8;border-top:0;background-color:#fdfdfd;overflow:hidden}#llar-setting-page .llar-accordion .ui-accordion-content a,#llar-setting-page-debug .llar-accordion .ui-accordion-content a,#llar-setting-page-help .llar-accordion .ui-accordion-content a,#llar-setting-page-logs .llar-accordion .ui-accordion-content a,#llar-setting-page-logs__active .llar-accordion .ui-accordion-content a,#llar-setting-page-premium .llar-accordion .ui-accordion-content a{color:inherit}#llar-setting-page .llar-accordion .ui-accordion-content .llar-form-table,#llar-setting-page-debug .llar-accordion .ui-accordion-content .llar-form-table,#llar-setting-page-help .llar-accordion .ui-accordion-content .llar-form-table,#llar-setting-page-logs .llar-accordion .ui-accordion-content .llar-form-table,#llar-setting-page-logs__active .llar-accordion .ui-accordion-content .llar-form-table,#llar-setting-page-premium .llar-accordion .ui-accordion-content .llar-form-table{margin-top:0;border-spacing:0;font-weight:400}#llar-setting-page .llar-accordion .ui-accordion-content .llar-form-table tr,#llar-setting-page-debug .llar-accordion .ui-accordion-content .llar-form-table tr,#llar-setting-page-help .llar-accordion .ui-accordion-content .llar-form-table tr,#llar-setting-page-logs .llar-accordion .ui-accordion-content .llar-form-table tr,#llar-setting-page-logs__active .llar-accordion .ui-accordion-content .llar-form-table tr,#llar-setting-page-premium .llar-accordion .ui-accordion-content .llar-form-table tr{box-shadow:unset}#llar-setting-page .llar-accordion .ui-accordion-content .llar-form-table tr td,#llar-setting-page .llar-accordion .ui-accordion-content .llar-form-table tr th,#llar-setting-page-debug .llar-accordion .ui-accordion-content .llar-form-table tr td,#llar-setting-page-debug .llar-accordion .ui-accordion-content .llar-form-table tr th,#llar-setting-page-help .llar-accordion .ui-accordion-content .llar-form-table tr td,#llar-setting-page-help .llar-accordion .ui-accordion-content .llar-form-table tr th,#llar-setting-page-logs .llar-accordion .ui-accordion-content .llar-form-table tr td,#llar-setting-page-logs .llar-accordion .ui-accordion-content .llar-form-table tr th,#llar-setting-page-logs__active .llar-accordion .ui-accordion-content .llar-form-table tr td,#llar-setting-page-logs__active .llar-accordion .ui-accordion-content .llar-form-table tr th,#llar-setting-page-premium .llar-accordion .ui-accordion-content .llar-form-table tr td,#llar-setting-page-premium .llar-accordion .ui-accordion-content .llar-form-table tr th{padding-top:0}#llar-setting-page .llar-accordion .ui-accordion-content .llar-form-table tr th,#llar-setting-page-debug .llar-accordion .ui-accordion-content .llar-form-table tr th,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .description-secondary,#llar-setting-page-help .llar-accordion .ui-accordion-content .llar-form-table tr th,#llar-setting-page-logs .llar-accordion .ui-accordion-content .llar-form-table tr th,#llar-setting-page-logs__active .llar-accordion .ui-accordion-content .llar-form-table tr th,#llar-setting-page-premium .llar-accordion .ui-accordion-content .llar-form-table tr th{padding-left:0}#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .input_border textarea,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td .textarea_border textarea{color:#a4a8b7}#llar-setting-page-logs .add_block__under_table,#llar-setting-page-logs__active .add_block__under_table{margin:20px 0 8px}#llar-setting-page-logs .add_block__under_table.image_plus,#llar-setting-page-logs__active .add_block__under_table.image_plus{box-shadow:3px 5px 23px 0 rgba(162,180,189,.2)}#llar-setting-page-logs .add_block__under_table.image_plus .row__list,#llar-setting-page-logs__active .add_block__under_table.image_plus .row__list{display:flex}#llar-setting-page-logs .add_block__under_table.image_plus .row__list .add_block__title,#llar-setting-page-logs__active .add_block__under_table.image_plus .row__list .add_block__title{flex:0 0 14%;margin-right:20px}#llar-setting-page-logs .add_block__under_table.image_plus .add_block__list,#llar-setting-page-logs__active .add_block__under_table.image_plus .add_block__list{gap:18px}@media screen and (max-width:1599.5px){#llar-setting-page-logs .add_block__under_table.image_plus .add_block__list,#llar-setting-page-logs__active .add_block__under_table.image_plus .add_block__list{column-gap:10px}}#llar-setting-page-logs .add_block__under_table.image_plus .add_block__list .item,#llar-setting-page-logs__active .add_block__under_table.image_plus .add_block__list .item{flex:0 0 23%}@media screen and (max-width:1599.5px){#llar-setting-page-logs .add_block__under_table.image_plus .add_block__list .item,#llar-setting-page-logs__active .add_block__under_table.image_plus .add_block__list .item{flex:0 0 49%}}#llar-setting-page-logs .add_block__under_table.image_plus .add_block__list .item .name,#llar-setting-page-logs__active .add_block__under_table.image_plus .add_block__list .item .name{margin:10px 33px 37px}#llar-setting-page-logs .add_block__under_table.image_plus .add_block__list .item img,#llar-setting-page-logs__active .add_block__under_table.image_plus .add_block__list .item img{margin-top:23px;width:154px}#llar-setting-page-logs .description-page .description-secondary a.unlink,#llar-setting-page-logs__active .description-page .description-secondary a.unlink{font-weight:500}#llar-setting-page-logs__active .llar-table-header{display:flex;justify-content:space-between;align-items:flex-start;margin:40px 0 5px}#llar-setting-page-logs__active .llar-table-header .title_page{margin-top:0}#llar-setting-page-logs__active .llar-table-header .right-link{font-size:16px;line-height:1.625;margin-right:5px;text-align:center}#llar-setting-page-logs__active .llar-table-header .right-link .dashicons-image-rotate{font-size:16px;vertical-align:middle}#llar-setting-page-logs__active .llar-table-header .right-link .dashicons-editor-help{vertical-align:middle}#llar-setting-page-logs__active .llar-table-scroll-wrap{max-height:400px;padding:0 20px 30px;border-radius:16px;background-color:#fff;box-shadow:4px 4px 18px 0 rgba(162,180,189,.2);overflow-y:auto;scrollbar-width:thin}@media screen and (max-width:1599.5px){#llar-setting-page-logs__active .llar-table-scroll-wrap{padding:0 15px 20px}}@media screen and (max-width:1399.5px){#llar-setting-page-logs__active .llar-table-scroll-wrap{padding:0 10px 10px}}#llar-setting-page-logs__active .llar-table-scroll-wrap::-webkit-scrollbar{width:4px}#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table{position:relative;border-collapse:separate;border-spacing:0 3px}#llar-setting-page-logs__active .llar-preloader.llar-table-scroll-wrap:before,#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table.llar-preloader:before,#llar-setting-page-logs__active.limit-login-app-dashboard .llar-preloader-wrap.loading:before,.llar-table-app-login.llar-preloader:before,.llar-table-no_app-login.llar-preloader:before{content:"";display:block;width:100%;height:100%;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46YXV0bztiYWNrZ3JvdW5kOjAgMCIgd2lkdGg9IjY0IiBoZWlnaHQ9IjY0IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiIGRpc3BsYXk9ImJsb2NrIj48Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiBmaWxsPSJub25lIiBzdHJva2U9IiNlM2UzZTMiIHN0cm9rZS13aWR0aD0iNSIgcj0iMzIiIHN0cm9rZS1kYXNoYXJyYXk9IjE1MC43OTY0NDczNzIzMTAwNyA1Mi4yNjU0ODI0NTc0MzY2OSIgdHJhbnNmb3JtPSJyb3RhdGUoMTQ0LjAxIDUwIDUwKSI+PGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIi8+PC9jaXJjbGU+PC9zdmc+);background-color:rgba(255,255,255,.7);background-repeat:no-repeat;background-position:center center;z-index:999;position:absolute;top:0;left:0}#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table thead tr th{color:#2a2f40;font-size:16px;font-weight:500;padding:20px 18px}@media screen and (max-width:1599.5px){#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table thead tr th{font-size:15px;padding:15px}}@media screen and (max-width:1399.5px){#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table thead tr th{font-size:12px}}#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr.empty-row,#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr:nth-child(odd),#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody.login-attempts tr:nth-child(4n+1){border-radius:16px;background-color:#f6fbff}#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr.empty-row td:first-child,#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr:nth-child(odd) td:first-child,#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody.login-attempts tr:nth-child(4n+1) td:first-child{border-top-left-radius:16px;border-bottom-left-radius:16px}#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr.empty-row td:last-child,#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr:nth-child(odd) td:last-child,#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody.login-attempts tr:nth-child(4n+1) td:last-child{border-top-right-radius:16px;border-bottom-right-radius:16px}#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td{font-size:16px;font-weight:400;padding:18px}@media screen and (max-width:1599.5px){#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td{font-size:14px;padding:14px}}@media screen and (max-width:1399.5px){#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td{font-size:14px;padding:12px}}#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td.llar-col-nowrap{white-space:nowrap}#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td.llar-app-log-actions{display:flex;justify-content:center}#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td input.input_border,#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td select.input_border{color:#a4a8b7;border:1px solid #a4a8b7}#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td select,#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td select,.llar-table-app-login tbody.login-attempts tr td select,.llar-table-no_app-login tbody.login-attempts tr td select{font-family:inherit;min-width:150px;margin-right:25px;background-size:16px 16px}#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td .llar-log-country-flag{display:flex;align-items:center;white-space:nowrap;gap:3px}#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td .llar-log-country-flag .hint_tooltip{width:fit-content;top:33px}#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td .llar-log-country-flag .hint_tooltip:before{right:20%}#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td .llar-log-country-flag .hint_tooltip-content{font-size:14px}#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td .llar-log-country-flag .llar-tooltip:before,#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .llar-log-country-flag .llar-tooltip:before,.llar-table-app-login tbody.login-attempts tr td .llar-log-country-flag .llar-tooltip:before,.llar-table-no_app-login tbody.login-attempts tr td .llar-log-country-flag .llar-tooltip:before{width:auto!important}#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td .llar-log-country-flag img{width:34px;height:auto;border-radius:4px;vertical-align:middle;margin-right:5px}@media screen and (max-width:1599.5px){#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td .llar-log-country-flag img{width:30px}}@media screen and (max-width:1399.5px){#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td .llar-log-country-flag img{width:25px}}#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td .button{line-height:1;margin-right:5px;border-radius:8px}#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td .button:last-child{margin-right:0}#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td .button .dashicons,#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td .button.llar-app-log-action-btn i{vertical-align:middle}#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td .button.llar-app-log-action-btn{min-width:35px;text-align:center;display:inline-block;line-height:20px;cursor:pointer}#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td .button.llar-app-log-action-btn:hover i{color:#3c8dbc}#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td .cell-id .id{font-size:15px;max-width:unset;white-space:nowrap}@media screen and (max-width:991.5px){#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td .cell-id .id{font-size:90%;max-width:15ch}}@media screen and (max-width:767.5px){#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td .cell-id .id{font-size:85%;max-width:10ch}}#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td .cell-id .hint_tooltip{visibility:hidden;top:30px!important}@media screen and (max-width:991.5px){#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table tbody tr td .cell-id .hint_tooltip{visibility:visible}}#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table .table-inline-preloader,#llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .llar-form-table thead .llar-app-acl-action-col{text-align:center}#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table .table-inline-preloader.hidden{display:none}#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table .table-inline-preloader tr td,#llar-setting-page-logs__active .llar-table-scroll-wrap .table-inline-preloader tr td,.llar-table-app-login .table-inline-preloader tr td,.llar-table-no_app-login .table-inline-preloader tr td{padding:5px}#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table .table-inline-preloader tr td .load-more-button a,#llar-setting-page-logs__active .llar-table-scroll-wrap .table-inline-preloader tr td .load-more-button a,.llar-table-app-login .table-inline-preloader tr td .load-more-button a,.llar-table-no_app-login .table-inline-preloader tr td .load-more-button a{padding-bottom:1px;text-decoration:unset;border-bottom:1px dashed}#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table .table-inline-preloader tr td .preloader-row{display:none;align-items:center}#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table .table-inline-preloader tr td .preloader-row .preloader-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46YXV0bztiYWNrZ3JvdW5kOjAgMCIgd2lkdGg9IjY0IiBoZWlnaHQ9IjY0IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiIGRpc3BsYXk9ImJsb2NrIj48Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiBmaWxsPSJub25lIiBzdHJva2U9IiNlM2UzZTMiIHN0cm9rZS13aWR0aD0iNSIgcj0iMzIiIHN0cm9rZS1kYXNoYXJyYXk9IjE1MC43OTY0NDczNzIzMTAwNyA1Mi4yNjU0ODI0NTc0MzY2OSIgdHJhbnNmb3JtPSJyb3RhdGUoMTQ0LjAxIDUwIDUwKSI+PGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIi8+PC9jaXJjbGU+PC9zdmc+);background-size:100%;background-repeat:no-repeat;width:30px;height:30px;display:inline-block}#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table .table-inline-preloader tr td .preloader-row .preloader-text{color:#999}#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table .table-inline-preloader.loading tr td .load-more-button{display:none}#llar-setting-page-logs__active .llar-table-scroll-wrap .llar-form-table .table-inline-preloader.loading tr td .preloader-row{display:inline-flex}#llar-setting-page-logs__active.limit-login-app-dashboard .llar-preloader-wrap{position:relative}#llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-log-pagination>a{font-size:16px;line-height:1.625}#llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-log-pagination .spinner{float:none}#llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-acl-rules{display:flex;justify-content:space-between;flex-wrap:wrap;column-gap:15px}#llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-acl-rules .app-rules-col{flex:1 0 49%;min-width:590px}#llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .help-link{color:#4acad8;font-size:16px;padding:10px}#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr.hidden-row.table-row-open td,#llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .llar-form-table thead td,.llar-table-app-login tbody.login-attempts tr.hidden-row.table-row-open td,.llar-table-no_app-login tbody.login-attempts tr.hidden-row.table-row-open td{font-size:16px}@media screen and (max-width:1599.5px){#llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .llar-form-table thead td{font-size:15px}}@media screen and (max-width:1399.5px){#llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .llar-form-table thead td{font-size:14px}}#llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .llar-form-table tbody td{font-size:16px;padding-right:5px}@media screen and (max-width:1599.5px){#llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .llar-form-table tbody td{font-size:15px}}@media screen and (max-width:1399.5px){#llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .llar-form-table tbody td{font-size:14px}}#llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .llar-form-table tbody td input{min-width:195px}#llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .llar-form-table tbody td select{min-width:200px;margin-right:0}#llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .llar-form-table tbody td .button{min-width:20px;margin-right:20px;border-radius:8px}#llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .llar-form-table tbody [class^=llar-app-rule]{margin-top:10px;border-radius:16px}#llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .llar-form-table tbody [class^=llar-app-rule] td{padding-left:45px}#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td:first-child,#llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .llar-form-table tbody [class^=llar-app-rule] td:first-child,.llar-table-app-login tbody.login-attempts tr td:first-child,.llar-table-no_app-login tbody.login-attempts tr td:first-child{border-top-left-radius:16px;border-bottom-left-radius:16px}#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td:last-child,#llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .llar-form-table tbody [class^=llar-app-rule] td:last-child,.llar-table-app-login tbody.login-attempts tr td:last-child,.llar-table-no_app-login tbody.login-attempts tr td:last-child{border-top-right-radius:16px;border-bottom-right-radius:16px}#llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .llar-form-table tbody .llar-app-acl-action-col{padding:10px 25px 10px 15px;text-align:center}#llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .llar-form-table tbody .llar-app-acl-action-col .llar-app-acl-add-rule{min-width:100%}#llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .llar-form-table tbody .llar-app-rule-pass{background-color:#cffbe8}#llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .llar-form-table tbody .llar-app-rule-allow{background-color:rgba(74,202,216,.0980392157)}#llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .llar-form-table tbody .llar-app-rule-deny{background-color:rgba(255,150,155,.1490196078)}#llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .llar-form-table tbody .llar-app-acl-remove{color:#ec4652;border-color:#ec4652;background-color:rgba(255,150,155,.1490196078)}#llar-setting-page-logs__active.limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .llar-form-table .origin{float:right;opacity:.5}#llar-setting-page-logs__active.limit-login-app-dashboard .llar-block-country-section{padding:30px;background-color:#fff;border-radius:16px;box-shadow:4px 4px 18px 0 rgba(162,180,189,.2)}#llar-setting-page-logs__active.limit-login-app-dashboard .llar-block-country-section .llar-block-country-mode{font-size:16px;color:#666d84;display:inline-block;vertical-align:middle}#llar-setting-page-logs__active.limit-login-app-dashboard .llar-block-country-section .llar-block-country-mode select{font-family:inherit;min-width:150px;margin-right:25px;background:#fdfdfd url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%234ACAD8FF'%3e%3cpath d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e") no-repeat right 5px top 55%;background-size:16px 16px}#llar-setting-page-logs__active.limit-login-app-dashboard .llar-block-country-section .llar-toggle-countries-list{font-size:16px;color:#4acad8;text-decoration:none;vertical-align:middle;border-bottom:1px solid currentColor}#llar-setting-page-logs__active.limit-login-app-dashboard .llar-block-country-section .llar-block-country-list{font-size:16px;color:#2a2f40;display:flex;flex-wrap:wrap;max-height:400px;overflow-y:auto}#llar-setting-page-logs__active.limit-login-app-dashboard .llar-block-country-section .llar-block-country-list:first-child{margin-top:0}#llar-setting-page-logs__active.limit-login-app-dashboard .llar-block-country-section .llar-block-country-list .llar-country{flex:0 0 10%}#llar-setting-page-logs__active.limit-login-app-dashboard .llar-block-country-section .llar-block-country-list .llar-country label{padding-bottom:10px;display:inline-block}#llar-setting-page-logs__active.limit-login-app-dashboard .llar-block-country-section .llar-block-country-list.llar-all-countries-selected{display:inline;margin-left:20px;vertical-align:middle;overflow:hidden}#llar-setting-page-logs__active.limit-login-app-dashboard .llar-block-country-section .llar-block-country-list.llar-all-countries-selected .llar-country{margin-bottom:0;display:inline-block;margin-right:20px;padding-right:20px;border-right:1px solid #e8e9ec}#llar-setting-page-logs__active.limit-login-app-dashboard .llar-block-country-section .llar-block-country-list.llar-all-countries-selected .llar-country label{color:#2a2f40;padding-bottom:0;white-space:nowrap}#llar-setting-page-logs__active.limit-login-app-dashboard .llar-block-country-section .llar-block-country-list.llar-all-countries-selected .llar-country:last-child{border-right:unset}#llar-setting-page-logs__active.limit-login-app-dashboard .llar-block-country-section .llar-block-country-list.llar-all-countries-list{font-size:14px;display:none;margin:10px 0}#llar-setting-page-logs__active.limit-login-app-dashboard .llar-block-country-section .llar-block-country-list.llar-all-countries-list.visible{display:flex;border-top:1px solid #dddada;padding-top:10px}.llar-blur-block{position:absolute;top:0;bottom:0;left:0;right:0;backdrop-filter:blur(1.5px);background-color:rgba(164,168,183,.0784313725)}.llar-blur-block-text{position:absolute;top:45%;left:50%;max-width:46rem;width:80%;font-size:18px;line-height:1.3;color:#666d84;text-align:center;padding:1.5rem 2rem;background-color:#ecfafb;border-radius:20px;border:1px solid #4acad8;transform:translate(-50%,-50%)}@media screen and (max-width:1599.5px){.llar-blur-block-text{top:40%;font-size:16px}}@media screen and (max-width:1399.5px){.llar-blur-block-text{top:45%;font-size:14px}}.llar-blur-block-text img{max-width:5rem}@media screen and (max-width:1599.5px){.llar-blur-block-text img{max-width:4rem}}.llar-blur-block-text .title{margin-top:1rem;font-size:26px;font-weight:500}@media screen and (max-width:1599.5px){.llar-blur-block-text .title{margin-top:.75rem;font-size:24px}}@media screen and (max-width:1399.5px){.llar-blur-block-text .title{margin-top:.5rem}}.llar-blur-block-text .description{margin-top:1rem}@media screen and (max-width:1599.5px){.llar-blur-block-text .description{margin-top:.75rem}}@media screen and (max-width:1399.5px){.llar-blur-block-text .description{margin-top:.5rem}}.llar-blur-block-text .footer{border-top:1px solid #4acad8;padding-top:.75rem;margin-top:1rem;font-weight:500}@media screen and (max-width:1599.5px){.llar-blur-block-text .footer{margin-top:.75rem}}@media screen and (max-width:1399.5px){.llar-blur-block-text .footer{padding-top:.5rem;margin-top:.5rem}}.llar-blur-block-cell{filter:blur(7px)}#llar-setting-page-logs__active .llar-table-scroll-wrap,.llar-table-app-login,.llar-table-no_app-login{position:relative;border-collapse:separate;border-spacing:0 3px}#llar-setting-page-logs__active .llar-table-scroll-wrap tr td,#llar-setting-page-logs__active .llar-table-scroll-wrap tr th,.llar-table-app-login tr td,.llar-table-app-login tr th,.llar-table-no_app-login tr td,.llar-table-no_app-login tr th{font-size:16px;font-weight:400;width:fit-content;padding:20px 2px 20px 14px}@media screen and (max-width:1599.5px){#llar-setting-page-logs__active .llar-table-scroll-wrap tr td,#llar-setting-page-logs__active .llar-table-scroll-wrap tr th,.llar-table-app-login tr td,.llar-table-app-login tr th,.llar-table-no_app-login tr td,.llar-table-no_app-login tr th{font-size:14px;padding:15px 2px 15px 12px}}@media screen and (max-width:1399.5px){#llar-setting-page-logs__active .llar-table-scroll-wrap tr td,#llar-setting-page-logs__active .llar-table-scroll-wrap tr th,.llar-table-app-login tr td,.llar-table-app-login tr th,.llar-table-no_app-login tr td,.llar-table-no_app-login tr th{padding:12px 2px 12px 14px}}@media screen and (max-width:767.5px){#llar-setting-page-logs__active .llar-table-scroll-wrap tr td,#llar-setting-page-logs__active .llar-table-scroll-wrap tr th,.llar-table-app-login tr td,.llar-table-app-login tr th,.llar-table-no_app-login tr td,.llar-table-no_app-login tr th{display:table-cell;width:fit-content;font-size:12px}}#llar-setting-page-logs__active .llar-table-scroll-wrap thead tr th,.llar-table-app-login thead tr th,.llar-table-no_app-login thead tr th{color:#2a2f40;font-weight:500;text-align:left}#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr,.llar-table-app-login tbody.login-attempts tr,.llar-table-no_app-login tbody.login-attempts tr{border-radius:16px;background-color:unset}#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr:nth-child(4n+1),.llar-table-app-login tbody.login-attempts tr:nth-child(4n+1),.llar-table-no_app-login tbody.login-attempts tr:nth-child(4n+1){background-color:#f6fbff}#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr:nth-child(4n+3),.llar-table-app-login tbody.login-attempts tr:nth-child(4n+3),.llar-table-no_app-login tbody.login-attempts tr:nth-child(4n+3){background-color:unset}#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr:nth-child(4n+2),#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr:nth-child(4n+4),.llar-table-app-login tbody.login-attempts tr:nth-child(4n+2),.llar-table-app-login tbody.login-attempts tr:nth-child(4n+4),.llar-table-no_app-login tbody.login-attempts tr:nth-child(4n+2),.llar-table-no_app-login tbody.login-attempts tr:nth-child(4n+4){background-color:rgba(164,168,183,.0784313725)}#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td,.llar-table-app-login tbody.login-attempts tr td,.llar-table-no_app-login tbody.login-attempts tr td{color:#666d84}#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td.llar-col-nowrap,#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr.hidden-row.table-row-open td a,.llar-table-app-login tbody.login-attempts tr td.llar-col-nowrap,.llar-table-app-login tbody.login-attempts tr.hidden-row.table-row-open td a,.llar-table-no_app-login tbody.login-attempts tr td.llar-col-nowrap,.llar-table-no_app-login tbody.login-attempts tr.hidden-row.table-row-open td a{white-space:nowrap}#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .hint_tooltip,.llar-table-app-login tbody.login-attempts tr td .hint_tooltip,.llar-table-no_app-login tbody.login-attempts tr td .hint_tooltip{box-sizing:content-box;right:0;top:30px}#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .hint_tooltip:before,.llar-table-app-login tbody.login-attempts tr td .hint_tooltip:before,.llar-table-no_app-login tbody.login-attempts tr td .hint_tooltip:before{right:25px}#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .hint_tooltip-content,.llar-table-app-login tbody.login-attempts tr td .hint_tooltip-content,.llar-table-no_app-login tbody.login-attempts tr td .hint_tooltip-content{font-size:14px;color:#fff}@media screen and (max-width:767.5px){#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .hint_tooltip-content,.llar-table-app-login tbody.login-attempts tr td .hint_tooltip-content,.llar-table-no_app-login tbody.login-attempts tr td .hint_tooltip-content{font-size:12px}}#llar-dashboard-page .dashboard-section-4 .hint_tooltip-content ul,#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .hint_tooltip-content ul,.llar-table-app-login tbody.login-attempts tr td .hint_tooltip-content ul,.llar-table-no_app-login tbody.login-attempts tr td .hint_tooltip-content ul{padding-left:16px;padding-right:10px}#llar-dashboard-page .dashboard-section-4 .hint_tooltip-content ul li,#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .hint_tooltip-content ul li,.llar-table-app-login tbody.login-attempts tr td .hint_tooltip-content ul li,.llar-table-no_app-login tbody.login-attempts tr td .hint_tooltip-content ul li{font-size:inherit;color:inherit;margin-bottom:0;padding-left:10px;min-width:120px}#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .hint_tooltip-content ul li::before,.llar-table-app-login tbody.login-attempts tr td .hint_tooltip-content ul li::before,.llar-table-no_app-login tbody.login-attempts tr td .hint_tooltip-content ul li::before{content:"✧";color:#fff;font-size:12px;margin-left:-15px;padding-right:3px}#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .hint_tooltip-parent,.llar-table-app-login tbody.login-attempts tr td .hint_tooltip-parent,.llar-table-no_app-login tbody.login-attempts tr td .hint_tooltip-parent{display:inline-block;position:relative}#llar-dashboard-page .dashboard-section-4 .hint_tooltip-parent span,#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .hint_tooltip-parent span,.llar-table-app-login tbody.login-attempts tr td .hint_tooltip-parent span,.llar-table-no_app-login tbody.login-attempts tr td .hint_tooltip-parent span{color:#ff7c06;font-weight:500}#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .hint_tooltip-parent .dashicons,.llar-table-app-login tbody.login-attempts tr td .hint_tooltip-parent .dashicons,.llar-table-no_app-login tbody.login-attempts tr td .hint_tooltip-parent .dashicons{color:#a4a8b7}@media screen and (max-width:1599.5px){#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .hint_tooltip-parent .dashicons,.llar-table-app-login tbody.login-attempts tr td .hint_tooltip-parent .dashicons,.llar-table-no_app-login tbody.login-attempts tr td .hint_tooltip-parent .dashicons{line-height:unset;font-size:14px}}@media screen and (max-width:767.5px){#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .hint_tooltip-parent .dashicons,.llar-table-app-login tbody.login-attempts tr td .hint_tooltip-parent .dashicons,.llar-table-no_app-login tbody.login-attempts tr td .hint_tooltip-parent .dashicons{font-size:12px}}#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .llar-log-country-flag,.llar-table-app-login tbody.login-attempts tr td .llar-log-country-flag,.llar-table-no_app-login tbody.login-attempts tr td .llar-log-country-flag{display:flex;align-items:center;white-space:nowrap;gap:3px}#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .llar-log-country-flag .hint_tooltip,.llar-table-app-login tbody.login-attempts tr td .llar-log-country-flag .hint_tooltip,.llar-table-no_app-login tbody.login-attempts tr td .llar-log-country-flag .hint_tooltip{width:fit-content;right:0;top:35px}#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .llar-log-country-flag img,.llar-table-app-login tbody.login-attempts tr td .llar-log-country-flag img,.llar-table-no_app-login tbody.login-attempts tr td .llar-log-country-flag img{width:34px;height:auto;border-radius:4px;vertical-align:middle;margin-right:4px}@media screen and (max-width:1599.5px){#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .llar-log-country-flag img,.llar-table-app-login tbody.login-attempts tr td .llar-log-country-flag img,.llar-table-no_app-login tbody.login-attempts tr td .llar-log-country-flag img{width:30px}}@media screen and (max-width:1399.5px){#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .llar-log-country-flag img,.llar-table-app-login tbody.login-attempts tr td .llar-log-country-flag img,.llar-table-no_app-login tbody.login-attempts tr td .llar-log-country-flag img{width:25px}}#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .button,.llar-table-app-login tbody.login-attempts tr td .button,.llar-table-no_app-login tbody.login-attempts tr td .button{line-height:1;margin-right:5px;border-radius:8px}#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .button:last-child,.llar-attempts-chart-legend>div:last-child,.llar-table-app-login tbody.login-attempts tr td .button:last-child,.llar-table-no_app-login tbody.login-attempts tr td .button:last-child{margin-right:0}#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .button .dashicons,.llar-table-app-login tbody.login-attempts tr td .button .dashicons,.llar-table-no_app-login tbody.login-attempts tr td .button .dashicons{vertical-align:middle}#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .button.llar-add-login-open,.llar-table-app-login tbody.login-attempts tr td .button.llar-add-login-open,.llar-table-no_app-login tbody.login-attempts tr td .button.llar-add-login-open{display:inline-block;width:30px;min-width:unset;min-height:30px;padding:0;text-align:center;line-height:20px;cursor:pointer;color:#a4a8b7;border-color:currentColor}@media screen and (max-width:767.5px){#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .button.llar-add-login-open,.llar-table-app-login tbody.login-attempts tr td .button.llar-add-login-open,.llar-table-no_app-login tbody.login-attempts tr td .button.llar-add-login-open{width:25px;min-height:25px}#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .button.llar-add-login-open .dashicons,.llar-table-app-login tbody.login-attempts tr td .button.llar-add-login-open .dashicons,.llar-table-no_app-login tbody.login-attempts tr td .button.llar-add-login-open .dashicons{font-size:14px;height:16px}}#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .button.llar-add-login-open:focus,.llar-table-app-login tbody.login-attempts tr td .button.llar-add-login-open:focus,.llar-table-no_app-login tbody.login-attempts tr td .button.llar-add-login-open:focus{outline:unset;box-shadow:unset}#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td .button.llar-add-login-open:hover,.llar-table-app-login tbody.login-attempts tr td .button.llar-add-login-open:hover,.llar-table-no_app-login tbody.login-attempts tr td .button.llar-add-login-open:hover{color:#4acad8}#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td.button-open,.llar-table-app-login tbody.login-attempts tr td.button-open,.llar-table-no_app-login tbody.login-attempts tr td.button-open{padding:0 2px}#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td.cell-login,.llar-table-app-login tbody.login-attempts tr td.cell-login,.llar-table-no_app-login tbody.login-attempts tr td.cell-login{max-width:9ch}#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr td.cell-login a,.llar-table-app-login tbody.login-attempts tr td.cell-login a,.llar-table-no_app-login tbody.login-attempts tr td.cell-login a{display:inline-block;max-width:9ch;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr .cell-id,.llar-table-app-login tbody.login-attempts tr .cell-id,.llar-table-no_app-login tbody.login-attempts tr .cell-id{display:inline-block}#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr .cell-id .id,.llar-table-app-login tbody.login-attempts tr .cell-id .id,.llar-table-no_app-login tbody.login-attempts tr .cell-id .id{font-size:15px;max-width:14ch;display:inline-block;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media screen and (max-width:1599.5px){#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr .cell-id .id,.llar-table-app-login tbody.login-attempts tr .cell-id .id,.llar-table-no_app-login tbody.login-attempts tr .cell-id .id{font-size:90%}}#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr .cell-id .hint_tooltip,.llar-table-app-login tbody.login-attempts tr .cell-id .hint_tooltip,.llar-table-no_app-login tbody.login-attempts tr .cell-id .hint_tooltip{top:30px!important}#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr .cell-role .hint_tooltip,.llar-table-app-login tbody.login-attempts tr .cell-role .hint_tooltip,.llar-table-no_app-login tbody.login-attempts tr .cell-role .hint_tooltip{right:-25px}#llar-setting-page-logs__active .llar-table-scroll-wrap .table-inline-preloader.hidden,#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr.hidden-row,.llar-table-app-login .table-inline-preloader.hidden,.llar-table-app-login tbody.login-attempts tr.hidden-row,.llar-table-no_app-login .table-inline-preloader.hidden,.llar-table-no_app-login tbody.login-attempts tr.hidden-row{display:none}#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr.hidden-row.table-row-open,.llar-table-app-login tbody.login-attempts tr.hidden-row.table-row-open,.llar-table-no_app-login tbody.login-attempts tr.hidden-row.table-row-open{display:table-row}@media screen and (max-width:1399.5px){#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr.hidden-row.table-row-open td,.llar-table-app-login tbody.login-attempts tr.hidden-row.table-row-open td,.llar-table-no_app-login tbody.login-attempts tr.hidden-row.table-row-open td{font-size:14px}}#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr.hidden-row.table-row-open td span,.llar-table-app-login tbody.login-attempts tr.hidden-row.table-row-open td span,.llar-table-no_app-login tbody.login-attempts tr.hidden-row.table-row-open td span{font-weight:600}#llar-setting-page-logs__active .llar-table-scroll-wrap tbody.login-attempts tr.hidden-row.table-row-open td .open_street_map,.llar-table-app-login tbody.login-attempts tr.hidden-row.table-row-open td .open_street_map,.llar-table-no_app-login tbody.login-attempts tr.hidden-row.table-row-open td .open_street_map{border:unset}#llar-setting-page-logs__active .llar-table-scroll-wrap .table-inline-preloader,.llar-table-app-login .table-inline-preloader,.llar-table-no_app-login .table-inline-preloader{text-align:center}#llar-setting-page-logs__active .llar-table-scroll-wrap .table-inline-preloader tr td .preloader-row,.llar-table-app-login .table-inline-preloader tr td .preloader-row,.llar-table-no_app-login .table-inline-preloader tr td .preloader-row{display:none;align-items:center}#llar-setting-page-logs__active .llar-table-scroll-wrap .table-inline-preloader tr td .preloader-row .preloader-icon,.llar-table-app-login .table-inline-preloader tr td .preloader-row .preloader-icon,.llar-table-no_app-login .table-inline-preloader tr td .preloader-row .preloader-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46YXV0bztiYWNrZ3JvdW5kOjAgMCIgd2lkdGg9IjY0IiBoZWlnaHQ9IjY0IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiIGRpc3BsYXk9ImJsb2NrIj48Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiBmaWxsPSJub25lIiBzdHJva2U9IiNlM2UzZTMiIHN0cm9rZS13aWR0aD0iNSIgcj0iMzIiIHN0cm9rZS1kYXNoYXJyYXk9IjE1MC43OTY0NDczNzIzMTAwNyA1Mi4yNjU0ODI0NTc0MzY2OSIgdHJhbnNmb3JtPSJyb3RhdGUoMTQ0LjAxIDUwIDUwKSI+PGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIi8+PC9jaXJjbGU+PC9zdmc+);background-size:100%;background-repeat:no-repeat;width:30px;height:30px;display:inline-block}#llar-setting-page-logs__active .llar-table-scroll-wrap .table-inline-preloader tr td .preloader-row .preloader-text,.llar-table-app-login .table-inline-preloader tr td .preloader-row .preloader-text,.llar-table-no_app-login .table-inline-preloader tr td .preloader-row .preloader-text{color:#999}#llar-setting-page-logs__active .llar-table-scroll-wrap .table-inline-preloader.loading tr td .load-more-button,.llar-table-app-login .table-inline-preloader.loading tr td .load-more-button,.llar-table-no_app-login .table-inline-preloader.loading tr td .load-more-button{display:none}#llar-setting-page-logs__active .llar-table-scroll-wrap .table-inline-preloader.loading tr td .preloader-row,.llar-table-app-login .table-inline-preloader.loading tr td .preloader-row,.llar-table-no_app-login .table-inline-preloader.loading tr td .preloader-row{display:inline-flex}.llar-notice-notify,.llar-notice-review{display:flex;padding:15px 20px 0!important;border-left:4px solid #333!important}.llar-notice-notify .llar-review-image img,.llar-notice-review .llar-review-image img{margin-top:10px;margin-bottom:20px}.llar-notice-notify .llar-review-image span,.llar-notice-review .llar-review-image span{font-size:80px;color:orange;width:80px;height:auto;margin-bottom:20px}.llar-notice-notify .llar-review-info,.llar-notice-review .llar-review-info{flex:1;margin-left:30px}.llar-notice-notify .llar-review-info .llar-buttons,.llar-notice-review .llar-review-info .llar-buttons{display:flex;align-items:center}.llar-notice-notify .llar-review-info .llar-buttons li,.llar-notice-review .llar-review-info .llar-buttons li{margin-right:10px}.llar-notice-notify .llar-review-info .llar-buttons li .dashicons,.llar-notice-review .llar-review-info .llar-buttons li .dashicons{margin-right:5px}#menu-settings li,.custom-app-tab{position:relative}.custom-app-tab .spinner{float:none}.custom-app-tab .llar-app-ajax-msg{font-size:13px;margin-top:5px;display:block}.custom-app-tab .llar-app-ajax-msg.error{color:red}.custom-app-tab .llar-app-ajax-msg.success{color:green}.custom-app-tab .llar-delete-app{color:#dc3232;position:absolute;bottom:15px;right:15px}.custom-app-tab .llar-delete-app:hover{opacity:.8}.custom-app-tab .llar-why-use-premium-text{margin-top:20px}.custom-app-tab .llar-why-use-premium-text .title{font-weight:700;font-size:16px;color:#4d4d4d}#llar-progress-bar{position:fixed;top:0;height:6px;left:0;width:100%;z-index:999999;background-color:#eee}#llar-progress-bar span{height:100%;position:absolute;display:block;width:0;background-color:#00b357;transition:width .4s}.header_massage{margin-right:20px}#llar-header-login-custom-message,.header_massage #llar-header-upgrade-mc-message,.header_massage #llar-header-upgrade-premium-message{position:relative;margin:20px auto;width:fit-content;color:#ff9800;font-weight:500;padding:14px 32px;text-align:center;border-radius:40px;border:1px solid #ebb35a;background-color:#ffefd6;box-shadow:0 4px 18px 0 rgba(114,117,123,.2)}@media screen and (max-width:991.5px){.header_massage #llar-header-upgrade-mc-message,.header_massage #llar-header-upgrade-premium-message{padding:5px 14px;font-size:11px}}@media screen and (max-width:767.5px){.header_massage #llar-header-upgrade-mc-message,.header_massage #llar-header-upgrade-premium-message{margin-left:16px;margin-right:16px}}.header_massage #llar-header-upgrade-mc-message p,.header_massage #llar-header-upgrade-premium-message p{font-size:16px;margin:0}.header_massage #llar-header-upgrade-mc-message p .dashicons,.header_massage #llar-header-upgrade-premium-message p .dashicons{width:32px;height:32px;font-size:32px;color:inherit;vertical-align:middle;margin-right:5px}@media screen and (max-width:991.5px){.header_massage #llar-header-upgrade-mc-message p .dashicons,.header_massage #llar-header-upgrade-premium-message p .dashicons{width:16px;height:16px;font-size:16px}}.header_massage #llar-header-upgrade-mc-message.exhausted,.header_massage #llar-header-upgrade-premium-message.exhausted{color:#ec4652;font-weight:400;margin-left:auto;margin-right:auto;padding:12px 25px;background-color:rgba(236,70,82,.1019607843);border:1px solid currentColor}.header_massage #llar-header-upgrade-mc-message .close,.header_massage #llar-header-upgrade-premium-message .close{position:absolute;top:-6px;right:-9px;cursor:pointer}.header_massage #llar-header-upgrade-mc-message .close .dashicons,.header_massage #llar-header-upgrade-premium-message .close .dashicons{width:16px;height:24px;font-size:24px}@media screen and (max-width:991.5px){.header_massage #llar-header-upgrade-mc-message .close .dashicons,.header_massage #llar-header-upgrade-premium-message .close .dashicons{width:16px;height:18px;font-size:18px}}#llar-header-login-custom-message{width:900px;font-size:16px;border-radius:20px}@media screen and (max-width:1799.5px){#llar-header-login-custom-message{margin-right:auto}}@media screen and (max-width:1199.5px){#llar-header-login-custom-message{width:795px}}@media screen and (max-width:991.5px){#llar-header-login-custom-message{width:710px;font-size:95%}}@media screen and (max-width:767.5px){#llar-header-login-custom-message{font-size:90%;width:100%;margin-right:auto;margin-left:auto}}@media screen and (max-width:575.5px){#llar-header-login-custom-message{width:400px}}#llar-header-login-custom-message .message-flex{display:flex}#llar-header-login-custom-message .message-flex .col-first img{width:150px}@media screen and (max-width:1199.5px){#llar-header-login-custom-message .message-flex .col-first img{width:130px}}@media screen and (max-width:767.5px){#llar-header-login-custom-message .message-flex .col-first img{width:100px}}#llar-header-login-custom-message .message-flex .col-second{width:30%;line-height:1.7;color:#2a2f40;margin:16px 25px;text-align:left}@media screen and (max-width:1199.5px){#llar-header-login-custom-message .message-flex .col-second{margin:16px 10px}}#llar-header-login-custom-message .message-flex .col-third{width:45%;margin:16px 25px;font-size:87.5%}@media screen and (max-width:1199.5px){#llar-header-login-custom-message .message-flex .col-third{margin:16px 10px}}#llar-header-login-custom-message .message-flex .col-third .row-first{color:#666d84;font-weight:400}#llar-header-login-custom-message .message-flex .col-third .row-second{position:relative;margin:5px 10px;color:#a4a8b7}#llar-header-login-custom-message .message-flex .col-third .row-second hr{background-color:rgba(255,124,6,.0980392157);display:inline-block;width:calc(50% - 50px);border:0;height:2px;vertical-align:middle}#llar-header-login-custom-message .message-flex .col-third .row-second span{display:inline-flex;width:50px;justify-content:center}#llar-header-login-custom-message .message-flex .col-third .row-third{font-weight:500;margin:10px;padding:5px 10px;background-color:rgba(255,124,6,.0980392157);border-radius:10px}.settings_page_limit-login-attempts .update-nag{display:none}#llar-welcome-page{padding:50px 0}#llar-welcome-page img{max-width:100%;height:auto}#llar-welcome-page .llar-welcome-page-container{width:100%;max-width:760px;margin:0 auto 30px;background-color:#fff;border-radius:4px;box-shadow:0 0 4px rgba(0,0,0,.1)}#llar-welcome-page .llar-welcome-page-container.llar-premium{border-top:5px solid #50c1cd}#llar-welcome-page .llar-welcome-page-container .llar-welcome-page-section{padding:20px;text-align:center}#llar-welcome-page .llar-welcome-page-container .llar-welcome-page-section .llar-logo{text-align:center;margin-top:20px;margin-bottom:30px}#llar-welcome-page .llar-welcome-page-container .llar-welcome-page-section h2{font-size:2.4em;line-height:1.4}#llar-welcome-page .llar-welcome-page-container .llar-welcome-page-section h3{font-size:1.5em;line-height:1.4}#llar-welcome-page .llar-welcome-page-container .llar-welcome-page-section p{font-size:17px;color:#444}#llar-welcome-page .llar-welcome-page-container .llar-welcome-page-video-wrap img{width:100%;height:auto;cursor:pointer}#llar-welcome-page .llar-welcome-page-features{display:flex;flex-wrap:wrap;justify-content:space-between;padding:0 15px;counter-reset:cnt1}#llar-welcome-page .llar-welcome-page-features .llar-feature-item{flex:0 0 24%;text-align:center;margin-bottom:40px;position:relative;padding-bottom:60px}#llar-welcome-page .llar-welcome-page-features .llar-feature-item:before{content:counter(cnt1);counter-increment:cnt1;position:absolute;left:50%;transform:translatex(-50%);bottom:0;font-size:1em;font-weight:600;width:40px;height:40px;line-height:40px;text-align:center;border-radius:50%;background-color:#ecedef;color:#979aaa}#llar-welcome-page .llar-welcome-page-features .llar-feature-item:after{position:absolute;content:"";left:-39%;width:69%;height:1px;bottom:1.4em;background-color:#ecedef}#llar-welcome-page .llar-welcome-page-features .llar-feature-item:nth-child(4n+1):after{display:none}#llar-welcome-page .llar-welcome-page-features .llar-feature-item .llar-feature-image{margin-bottom:15px}#llar-welcome-page .llar-welcome-page-features .llar-feature-item .llar-feature-info .llar-feature-title{font-weight:700;margin-bottom:15px}#llar-welcome-page .llar-welcome-page-features .llar-feature-item .llar-feature-info .llar-feature-desc{color:#979aaa}@media (max-width:768px){#llar-welcome-page .llar-welcome-page-features{display:block}}#llar-welcome-page .llar-why-recommend{text-align:left;font-size:17px}#llar-welcome-page .llar-why-recommend ul li span{margin-right:5px;width:auto;height:auto;font-size:25px;vertical-align:middle;color:green}#llar-welcome-page .llar-welcome-list{font-size:17px;text-align:left;line-height:1.4;list-style:none}#llar-welcome-page .llar-welcome-list li span{margin-right:10px;width:auto;height:auto;font-size:22px;vertical-align:top;color:orange}#llar-welcome-page .llar-upgrade-btn-wrap{padding:20px}#llar-welcome-page .llar-upgrade-btn-wrap a{display:inline-block;background-color:#e27800;color:#fff;font-size:22px;padding:20px;text-decoration:none;font-weight:600}#llar-welcome-page .llar-upgrade-btn-wrap a:hover{background-color:#af5d00}#llar-welcome-page .llar-upgrade-questions{font-size:17px}.dashboard_page_llar-welcome .notice:not(.llar-notice-review),.dashboard_page_llar-welcome .update-nag,.toplevel_page_limit-login-attempts .notice:not(.llar-notice-review),.toplevel_page_limit-login-attempts .update-nag{margin-top:15px;display:none}.dashboard_page_llar-welcome .notice:not(.llar-notice-review) p,.dashboard_page_llar-welcome .update-nag p,.toplevel_page_limit-login-attempts .notice:not(.llar-notice-review) p,.toplevel_page_limit-login-attempts .update-nag p{margin-left:10px}.dashboard_page_llar-welcome .video-container,.toplevel_page_limit-login-attempts .video-container{position:relative;padding-bottom:56.1%;height:0;overflow:hidden}.dashboard_page_llar-welcome .video-container iframe,.toplevel_page_limit-login-attempts .video-container iframe{position:absolute;top:0;left:0;width:100%;height:100%}#toplevel_page_limit-login-attempts .llar-submenu-premium-item a,#wp-admin-bar-llar-root #wp-admin-bar-llar-root-premium a{color:orange}#toplevel_page_limit-login-attempts .wp-menu-image.svg{background-size:25px auto!important;margin-top:7px}#menu-settings li .llar-alert-icon{position:absolute;right:5px;top:7px;min-width:15px;line-height:15px;height:15px}#wpadminbar li .llar-alert-icon .plugin-count{vertical-align:middle;margin-top:-3px}.llar-auto-update-notice{display:block!important}.llar-attempts-chart-legend>div{margin-right:10px;color:#60666d;display:inline-block}.llar-attempts-chart-legend>div:before{content:"";display:inline-block;width:37px;height:9px;border:3px solid;margin-right:5px;vertical-align:middle}.llar-attempts-chart-legend>div.legend-1:before{border-color:#36a2eb;background-color:rgba(54,162,235,.3)}.llar-attempts-chart-legend>div.legend-2:before{border-color:rgba(174,174,174,.7);background-color:rgba(174,174,174,.2)}.llar-attempts-chart-legend>div.legend-2 .llar-tooltip:before{left:auto;right:0}#llar-dashboard-page{font-family:CoFo Sans,arial;margin-top:40px}#llar-dashboard-page *{box-sizing:border-box}#llar-dashboard-page ol,#llar-dashboard-page ul{margin-left:0;padding-left:32px}#llar-dashboard-page ol li,#llar-dashboard-page ul li{font-size:16px;color:#666d84;padding-left:16px;margin-bottom:10px}#llar-dashboard-page ol li::before,#llar-dashboard-page ul li::before{color:#9762ef;margin-left:-20px}#llar-dashboard-page .section-title__new{display:flex;flex-wrap:nowrap;justify-content:space-between;gap:20px;font-size:16px;text-align:left}@media screen and (max-width:1799.5px){#llar-dashboard-page .section-title__new{gap:10px}}@media screen and (max-width:1599.5px){#llar-dashboard-page .section-title__new{font-size:14px}}#llar-dashboard-page .section-title__new .llar-label{color:#2a2f40;min-width:fit-content;text-wrap:nowrap;padding:2px 16px;border-radius:8px;background-color:rgba(10,172,208,.08)}@media screen and (max-width:1599.5px){#llar-dashboard-page .section-title__new .llar-label{padding:2px 5px}}#llar-dashboard-page .section-title__new .llar-label-group{display:flex;column-gap:20px}#llar-dashboard-page .section-title__new .llar-label__url{color:#a4a8b7;font-size:87.5%;margin-right:18px;overflow:hidden}@media screen and (max-width:1599.5px){#llar-dashboard-page .section-title__new .llar-label__url{margin-right:4px}}#llar-dashboard-page .section-title__new .llar-label__circle-blue{font-size:64px;vertical-align:middle;color:#58c3ff}#llar-dashboard-page .section-title__new .llar-label__circle-grey{font-size:64px;vertical-align:middle;color:rgba(174,174,174,.6980392157)}#llar-dashboard-page .section-title__new .llar-label .dashicons{font-size:140%;width:14px;height:14px}#llar-dashboard-page .section-title__new .llar-label.exhausted{color:#ec4652;background-color:rgba(236,70,82,.1019607843)}#llar-dashboard-page .section-title__new .llar-label.request{background-color:unset}#llar-dashboard-page .section-content{margin-top:16px;overflow:hidden}#llar-dashboard-page .dashboard-section-1{margin-bottom:20px;display:flex;flex-wrap:nowrap;gap:16px}@media screen and (max-width:1399.5px){#llar-dashboard-page .dashboard-section-1{flex-wrap:wrap;gap:8px}}#llar-dashboard-page .dashboard-section-1>[class^=info-box-]{position:relative;text-align:center;flex:0 0 auto;width:calc(33.3% - 16px);padding:32px 30px 24px;border-radius:20px;background:#fdfdfd;box-shadow:4px 4px 18px 0 rgba(162,180,189,.2)}@media screen and (max-width:1799.5px){#llar-dashboard-page .dashboard-section-1>[class^=info-box-]{padding:30px 16px 16px}}@media screen and (max-width:1599.5px){#llar-dashboard-page .dashboard-section-1>[class^=info-box-]{padding:30px 16px}}@media screen and (max-width:1399.5px){#llar-dashboard-page .dashboard-section-1>[class^=info-box-]{width:calc(40% - 4px);min-height:272px}}@media screen and (max-width:1199.5px){#llar-dashboard-page .dashboard-section-1>[class^=info-box-]{width:100%;min-height:294px}}#llar-dashboard-page .dashboard-section-1>[class^=info-box-]:last-child,#llar-dashboard-page .dashboard-section-2 .info-box-1 .notifications-list li:last-child{border:0}#llar-dashboard-page .dashboard-section-1>[class^=info-box-] .title{font-weight:500;color:#666d84;font-size:16px;line-height:1.5}#llar-dashboard-page .dashboard-section-1>[class^=info-box-] .title-big{font-size:20px}#llar-dashboard-page .dashboard-section-1 .info-box-1 .section-title__new .llar-premium-label{float:right;margin-right:18px;padding-top:2px;color:#666d84;text-wrap:nowrap}#llar-dashboard-page .dashboard-section-1 .info-box-1 .section-title__new .llar-premium-label .dashicons{width:unset;height:unset;background-color:#97f6c8;border-radius:4px;color:#fdfdfd;margin-right:5px;font-size:inherit}#llar-dashboard-page .dashboard-section-1 .info-box-1 .section-title__new .llar-premium-label .dashicons.disabled{background-color:#ec4652}@media screen and (max-width:1599.5px){#llar-dashboard-page .dashboard-section-1 .info-box-1 .section-title__new .llar-premium-label .dashicons{margin-top:2px}}@media screen and (max-width:1199.5px){#llar-dashboard-page .dashboard-section-1 .info-box-1 .section-title__new .llar-premium-label .dashicons{margin-right:2px}}#llar-dashboard-page .dashboard-section-1 .info-box-1 .section-content{clear:both;margin-top:24px;margin-bottom:16px}#llar-dashboard-page .dashboard-section-1 .info-box-1 .chart{max-width:300px;position:relative;margin-bottom:15px;margin-left:auto;margin-right:auto}#llar-dashboard-page .dashboard-section-1 .info-box-1 .chart .doughnut-chart-wrap{position:relative;width:200px;height:auto;margin:0 auto}#llar-dashboard-page .dashboard-section-1 .info-box-1 .chart .llar-retries-count{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:28px;font-weight:700}#llar-dashboard-page .dashboard-section-1 .info-box-1 .desc{margin-top:10px;color:#a4a8b7;font-size:14px}#llar-dashboard-page .dashboard-section-1 .info-box-1 .actions{margin-top:5px}@media screen and (max-width:1399.5px){#llar-dashboard-page .dashboard-section-1 .info-box-2{width:calc(60% - 4px)}}@media screen and (max-width:1199.5px){#llar-dashboard-page .dashboard-section-1 .info-box-2{width:100%}}#llar-dashboard-page .dashboard-section-1 .info-box-2 .section-content{overflow:visible}#llar-dashboard-page .dashboard-section-1 .info-box-2 .llar-chart-wrap{width:100%;margin:0 auto;clear:both}#llar-admin-dashboard-widgets .llar-widget.widget-2 .llar-chart-wrap canvas,#llar-dashboard-page .dashboard-section-1 .info-box-2 .llar-chart-wrap canvas{height:300px}#llar-dashboard-page .dashboard-section-1 .info-box-2 .chart-stats-legend{text-align:center;margin-top:10px}#llar-dashboard-page .dashboard-section-1 .info-box-3{text-align:left}@media screen and (max-width:1399.5px){#llar-dashboard-page .dashboard-section-1 .info-box-3{width:100%}}#llar-dashboard-page .dashboard-section-1 .info-box-3 .section-content{overflow:unset}#llar-dashboard-page .dashboard-section-1 .info-box-3 .section-content .list-unstyled{padding-left:5px;font-size:14px;line-height:1.5}#llar-dashboard-page .dashboard-section-1 .info-box-3 .desc{color:#666d84;font-size:16px;line-height:1.5;margin-bottom:20px}#llar-dashboard-page .dashboard-section-1 .info-box-3 .title{color:#2a2f40;font-size:18px}#llar-dashboard-page .dashboard-section-1 .info-box-3 .actions{position:relative;width:fit-content;left:50%;transform:translateX(-50%)}#llar-dashboard-page .dashboard-section-1 .info-box-3 .actions__buttons{display:flex;flex-direction:row;column-gap:16px}#llar-dashboard-page .dashboard-section-1 .info-box-3 .actions__buttons a{text-transform:uppercase;font-size:16px;margin-bottom:5px}#llar-dashboard-page .dashboard-section-1 .info-box-3 .actions__buttons a.button.menu__item{text-transform:none;text-align:center}#llar-dashboard-page .dashboard-section-1 .info-box-3 .actions__buttons .menu__item{min-width:200px;max-width:235px;padding:7px 8px;font-size:16px;border-radius:8px;margin:0 auto}@media screen and (max-width:1599.5px){#llar-dashboard-page .dashboard-section-1 .info-box-3 .actions__buttons .menu__item{min-width:160px}}#llar-dashboard-page .dashboard-section-1 .info-box-3 .actions__buttons .menu__item.button__transparent_orange{color:#ff7c06!important;border:1px solid;background:0 0}#llar-dashboard-page .dashboard-section-1 .info-box-3 .actions__buttons .menu__item.button__transparent_orange:hover{background:rgba(255,124,6,.0980392157);border:1px solid #ff7c06}#llar-dashboard-page .dashboard-section-1 .info-box-3 .actions__buttons .menu__item.button__orange{color:#fdfdfd!important;background:#ff7c06;border:1px solid #ff7c06;box-shadow:0 5px 10px 0 rgba(255,124,6,.4980392157)}#llar-dashboard-page .dashboard-section-1 .info-box-3 .actions__buttons .menu__item.button__orange:hover{background:#f07200}#llar-dashboard-page .dashboard-section-1 .info-box-3 .actions__buttons .menu__item:focus{outline:0!important;box-shadow:unset!important}#llar-dashboard-page .dashboard-section-1 .info-box-3 .remark{font-size:14px;color:#666d84;margin:15px 16px 0}#llar-dashboard-page .dashboard-section-1.custom .info-box-2{flex:0 0 calc(66.666% - 16px);width:calc(66.666% - 16px)}@media screen and (max-width:1399.5px){#llar-dashboard-page .dashboard-section-1.custom .info-box-2{flex:1 0 calc(50% - 4px);width:calc(50% - 4px)}}@media screen and (max-width:1399.5px) and (max-width:991.5px){#llar-dashboard-page .dashboard-section-1.custom .info-box-2{flex:1 0 100%;width:100%;min-height:126px}}#llar-dashboard-page .dashboard-section-2{display:flex;flex-wrap:wrap;justify-content:space-between;margin-bottom:20px}#llar-dashboard-page .dashboard-section-2>[class^=info-box-]{flex:0 0 calc(50% - 10px);min-height:100px;background:#fdfdfd;border:1px solid #e4e4e4;padding:15px}#llar-dashboard-page .dashboard-section-2>[class^=info-box-]:last-child{margin-right:0}#llar-dashboard-page .dashboard-section-2 .info-box-1{padding:0}#llar-dashboard-page .dashboard-section-2 .info-box-1 .notifications-list{padding:0;margin:0}#llar-dashboard-page .dashboard-section-2 .info-box-1 .notifications-list li{margin:0;border-bottom:1px solid #e4e4e4}#llar-dashboard-page .dashboard-section-2 .info-box-1 .notifications-list li a{text-decoration:none;padding:15px;font-size:15px;display:block}#llar-dashboard-page .dashboard-section-2 .info-box-1 .notifications-list li a:hover{background-color:#f9f9f9}#llar-dashboard-page .dashboard-section-2 .info-box-2{display:flex;flex-wrap:wrap}#llar-dashboard-page .dashboard-section-2 .info-box-2 .info-box-icon{flex:0 0 100px;display:flex;justify-content:center;align-items:center;margin-right:15px}#llar-dashboard-page .dashboard-section-2 .info-box-2 .info-box-icon .dashicons{color:#0073a0;font-size:50px;width:auto;height:auto}#llar-dashboard-page .dashboard-section-2 .info-box-2 .info-box-content{flex:1}#llar-dashboard-page .dashboard-section-2 .info-box-2 .info-box-content .title{font-size:20px;font-weight:700;margin-bottom:10px;line-height:1.5}#llar-dashboard-page .dashboard-section-2 .info-box-2 .info-box-content .desc{font-size:15px;margin-bottom:15px}#llar-dashboard-page .dashboard-section-2 .info-box-2 .info-box-content .actions{display:flex;justify-content:space-between}#llar-dashboard-page .dashboard-section-3{display:flex;flex-wrap:nowrap;margin-bottom:20px;column-gap:16px}@media screen and (max-width:1399.5px){#llar-dashboard-page .dashboard-section-3{gap:8px}}@media screen and (max-width:575.5px){#llar-dashboard-page .dashboard-section-3{flex-wrap:wrap}}#llar-dashboard-page .dashboard-section-3>[class^=info-box-]{position:relative;display:flex;flex-wrap:wrap;flex:0 0 auto;width:calc(33.33333333% - 16px);padding:20px 90px 26px 28px;border-radius:20px;background:#fdfdfd;box-shadow:4px 4px 18px 0 rgba(162,180,189,.2)}@media screen and (max-width:1399.5px){#llar-dashboard-page .dashboard-section-3>[class^=info-box-]{padding:16px 25px 30px;width:calc(33.33333333% - 5px)}}@media screen and (max-width:767.5px){#llar-dashboard-page .dashboard-section-3>[class^=info-box-]{padding:16px 10px}}@media screen and (max-width:575.5px){#llar-dashboard-page .dashboard-section-3>[class^=info-box-]{flex:0 0 100%}}#llar-dashboard-page .dashboard-section-3>[class^=info-box-] .info-box-icon{flex:0 0 auto;display:flex;justify-content:center;align-items:start}#llar-dashboard-page .dashboard-section-3>[class^=info-box-] .info-box-icon img{width:50px;height:50px;vertical-align:middle;margin-right:16px}@media screen and (max-width:1399.5px){#llar-dashboard-page .dashboard-section-3>[class^=info-box-] .info-box-icon img{width:40px;height:40px;margin-right:8px}}@media screen and (max-width:767.5px){#llar-dashboard-page .dashboard-section-3>[class^=info-box-] .info-box-icon img{width:35px;height:35px;margin-right:4px}}#llar-dashboard-page .dashboard-section-3>[class^=info-box-] .info-box-content{flex:1}#llar-dashboard-page .dashboard-section-3>[class^=info-box-] .info-box-content .title{color:#2a2f40;font-size:20px;font-weight:500;margin-bottom:4px;line-height:1.3}@media screen and (max-width:767.5px){#llar-dashboard-page .dashboard-section-3>[class^=info-box-] .info-box-content .title{font-size:16px}}#llar-dashboard-page .dashboard-section-3>[class^=info-box-] .info-box-content .title a{text-decoration:none}#llar-dashboard-page .dashboard-section-3>[class^=info-box-] .info-box-content .desc{font-size:14px}#llar-dashboard-page .dashboard-section-3>[class^=info-box-] .info-box-content .actions{display:flex;justify-content:space-between}#llar-dashboard-page .dashboard-section-4{display:flex;flex-wrap:wrap;margin-bottom:20px;column-gap:1rem}@media screen and (max-width:1399.5px){#llar-dashboard-page .dashboard-section-4{gap:8px}}#llar-dashboard-page .dashboard-section-4>[class^=info-box-]{flex:0 0 auto;width:calc(50% - 16px);min-height:100px;max-height:600px;padding:32px 23px 24px 30px;border-radius:20px;background:#fdfdfd;box-shadow:4px 4px 18px 0 rgba(162,180,189,.2);overflow:hidden}@media screen and (max-width:1599.5px){#llar-dashboard-page .dashboard-section-4>[class^=info-box-]{max-height:515px;padding:27px 18px 20px 22px}}@media screen and (max-width:1399.5px){#llar-dashboard-page .dashboard-section-4>[class^=info-box-]{width:100%}}@media screen and (max-width:991.5px){#llar-dashboard-page .dashboard-section-4>[class^=info-box-]{padding:27px 16px 16px 18px}}#llar-dashboard-page .dashboard-section-4>[class^=info-box-]:last-child{margin-right:0}#llar-dashboard-page .dashboard-section-4 .hint_tooltip,#llar-dashboard-page .dashboard-section-4 .info-box-2 .section-content .list input{box-sizing:content-box}#llar-dashboard-page .dashboard-section-4 .hint_tooltip:before{right:25px}#llar-dashboard-page .dashboard-section-4 .hint_tooltip-content{font-size:14px;color:#fff}@media screen and (max-width:767.5px){#llar-dashboard-page .dashboard-section-4 .hint_tooltip-content{font-size:12px}}#llar-dashboard-page .dashboard-section-4 .hint_tooltip-content ul li::before{color:#fff;font-size:12px;margin-left:-15px}#llar-dashboard-page .dashboard-section-4 .hint_tooltip-parent{display:inline-block;position:relative}#llar-dashboard-page .dashboard-section-4 .hint_tooltip-parent .dashicons{color:#a4a8b7}@media screen and (max-width:1599.5px){#llar-dashboard-page .dashboard-section-4 .hint_tooltip-parent .dashicons{line-height:unset;font-size:14px;width:12px}}@media screen and (max-width:767.5px){#llar-dashboard-page .dashboard-section-4 .hint_tooltip-parent .dashicons{font-size:12px}}#llar-dashboard-page .dashboard-section-4 .info-box-1{position:relative}#llar-dashboard-page .dashboard-section-4 .info-box-1 .section-title__new .title{color:#2a2f40;font-size:20px;font-weight:500}#llar-dashboard-page .dashboard-section-4 .info-box-1 .section-title__new .desc{color:#666d84;font-size:16px;line-height:1.5;margin:40px;text-align:center}#llar-dashboard-page .dashboard-section-4 .info-box-1 .section-content{height:100%;overflow:auto;scrollbar-width:thin;scrollbar-gutter:stable;padding-bottom:30px}#llar-dashboard-page .dashboard-section-4 .info-box-2{line-height:1.5;padding-left:30px}@media screen and (max-width:1599.5px){#llar-dashboard-page .dashboard-section-4 .info-box-2{padding-left:25px}}@media screen and (max-width:991.5px){#llar-dashboard-page .dashboard-section-4 .info-box-2{padding-left:22px}}#llar-dashboard-page .dashboard-section-4 .info-box-2 .section-title__new .title{color:#2a2f40;font-size:20px;font-weight:500}#llar-dashboard-page .dashboard-section-4 .info-box-2 .section-title__new .desc{color:#666d84;font-size:16px;line-height:2}@media screen and (max-width:1599.5px){#llar-dashboard-page .dashboard-section-4 .info-box-2 .section-title__new .desc{line-height:1.8}}#llar-dashboard-page .dashboard-section-4 .info-box-2 .section-content{margin-top:0;padding-top:5px}#llar-dashboard-page .dashboard-section-4 .info-box-2 .section-content .list{color:#2a2f40;font-size:16px;font-weight:500;margin-top:27px}@media screen and (max-width:1599.5px){#llar-dashboard-page .dashboard-section-4 .info-box-2 .section-content .list{font-size:14px;margin-top:20px}}@media screen and (max-width:1399.5px){#llar-dashboard-page .dashboard-section-4 .info-box-2 .section-content .list{margin-top:15px}}@media screen and (max-width:991.5px){#llar-dashboard-page .dashboard-section-4 .info-box-2 .section-content .list{margin-top:12px}}#llar-dashboard-page .dashboard-section-4 .info-box-2 .section-content .list input:before,#llar-dashboard-page .dashboard-section-4 .info-box-2 .section-content .list input:disabled{opacity:1;pointer-events:none}#llar-dashboard-page .dashboard-section-4 .info-box-2 .section-content .list input:checked+span{text-decoration:line-through}#llar-dashboard-page .dashboard-section-4 .info-box-2 .section-content .list-add{display:none;color:#ff7c06;margin-left:10px;font-weight:400}#llar-dashboard-page .dashboard-section-4 .info-box-2 .section-content .list input[type=checkbox]:checked~.list-add{display:none}#llar-dashboard-page .dashboard-section-4 .info-box-2 .section-content .list input[type=checkbox]:not(:checked)~.list-add{display:inline}#llar-dashboard-page .dashboard-section-4 .info-box-2 .section-content .list .desc{color:#666d84;font-weight:400;margin:5px 25px}#llar-admin-dashboard-widgets .widget-title{padding-bottom:15px;border-bottom:1px solid #e4e4e4;font-size:14px;text-align:left}#llar-admin-dashboard-widgets .widget-content{font-family:CoFo Sans,arial}#llar-admin-dashboard-widgets .widget-content .llar-attempts-chart-legend{margin-bottom:10px}#llar-admin-dashboard-widgets .llar-widget{margin-bottom:20px;background-color:#fff;text-align:center}#llar-admin-dashboard-widgets .llar-widget .section-title__new{font-size:12px;line-height:150%;display:flex;flex-wrap:nowrap;justify-content:space-between;text-align:left}#llar-admin-dashboard-widgets .llar-widget .section-title__new .llar-label{color:#2a2f40;min-width:fit-content;padding:.125rem .75rem;border-radius:8px;background-color:rgba(10,172,208,.08)}#llar-admin-dashboard-widgets .llar-widget .section-title__new .llar-label-group{display:flex;column-gap:30px}#llar-admin-dashboard-widgets .llar-widget .section-title__new .llar-label__circle-blue{font-size:44px;vertical-align:middle;color:#58c3ff}#llar-admin-dashboard-widgets .llar-widget .section-title__new .llar-label__circle-grey{font-size:44px;vertical-align:middle;color:rgba(174,174,174,.6980392157)}#llar-admin-dashboard-widgets .llar-widget .section-title__new .llar-label .hint_tooltip{left:-100%}#llar-admin-dashboard-widgets .llar-widget .section-title__new .llar-label .hint_tooltip:before{right:82%}#llar-admin-dashboard-widgets .llar-widget .section-title__new .llar-premium-label .dashicons{width:unset;height:unset;background-color:#97f6c8;border-radius:4px;color:#fdfdfd;margin-right:5px;margin-top:3px;font-size:inherit}#llar-admin-dashboard-widgets .llar-widget .section-title__new .llar-premium-label .dashicons.disabled{background-color:#ec4652}@media screen and (max-width:1199.5px){#llar-admin-dashboard-widgets .llar-widget .section-title__new .llar-premium-label .dashicons{margin-right:2px}}#llar-admin-dashboard-widgets .llar-widget .chart{max-width:300px;position:relative;margin:15px auto}#llar-admin-dashboard-widgets .llar-widget .chart .doughnut-chart-wrap{position:relative;width:200px;height:auto;margin:0 auto}#llar-admin-dashboard-widgets .llar-widget .chart .llar-retries-count{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:28px;font-weight:700}#llar-admin-dashboard-widgets .llar-widget .title{font-weight:600;font-size:16px;line-height:1.5;margin-bottom:10px}#llar-admin-dashboard-widgets .llar-widget .desc,#llar-setting-page-premium .text-block-1 p{font-size:15px}#llar-admin-dashboard-widgets .llar-widget .actions{margin-top:5px}#llar-admin-dashboard-widgets .llar-widget.widget-2 .llar-chart-wrap{width:100%;margin:0 auto;clear:both}#llar-admin-dashboard-widgets .llar-widget.widget-2 .chart-stats-legend{text-align:center;margin-top:10px}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .jconfirm-content-pane{overflow-y:auto}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button_block{margin-top:24px;display:flex;flex-wrap:wrap;justify-content:center;column-gap:16px}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button_block .button{font-size:18px;margin-top:20px;padding:11px 60px;width:70%}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button_block-horizon{display:flex;justify-content:center;margin-top:20px;gap:10px}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button_block-horizon .button{font-size:18px;padding:11px 60px}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button_block-single{margin-top:20px}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .button_block-single .button{font-size:18px;padding:11px 60px;width:fit-content}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content{min-height:930px;padding:15px;background:url(./images/onboarding-bg-big.webp) center top;background-size:100%;border-radius:16px}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .logo{width:90px;margin:100px auto 50px}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .logo img{background:rgba(253,253,253,.4);border-radius:8px;padding:20px}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .llar-onboarding__line{position:relative;height:2px;width:50%;margin:10px auto 60px;background-color:#abbfc1}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .llar-onboarding__line .point__block{position:absolute;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;left:0;top:-30px;width:60px;height:60px;border-radius:50%;background-color:transparent}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .llar-onboarding__line .point__block .point{position:absolute;top:22px;width:18px;height:18px;border-radius:50%;background-color:#abbfc1}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .llar-onboarding__line .point__block .description{position:absolute;top:60px;font-size:16px;color:#666d84;width:max-content}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .llar-onboarding__line .point__block.active{position:absolute;background-color:rgba(74,202,216,.3019607843)}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .llar-onboarding__line .point__block.active .description{color:#2a2f40}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .llar-onboarding__line .point__block.visited .point{background-color:#4acad8}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .llar-onboarding__line .point__block[data-step="1"]{left:0;transform:translateX(-50%)}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .llar-onboarding__line .point__block[data-step="2"]{left:33.3333333333%;transform:translateX(-50%)}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .llar-onboarding__line .point__block[data-step="3"]{left:66.6666666667%;transform:translateX(-50%)}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .llar-onboarding__line .point__block[data-step="4"]{left:100%;transform:translateX(-50%)}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .title{font-size:32px;font-weight:500;color:#ff7c06;text-align:center;padding-top:40px}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .title img{width:36px;vertical-align:text-top}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .preloader-wrapper{display:none;position:absolute;top:0;left:0;right:0;bottom:0;background-color:rgba(255,255,255,.3);align-items:center;justify-content:center}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .preloader-wrapper .spinner{display:block;position:relative;float:none;visibility:hidden;top:50%;transform:translateY(-50%);margin:0 auto}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .llar-disabled .preloader-wrapper{display:block}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .card{min-width:768px;text-align:center;margin-top:37px;padding:23px 63px 60px;border:unset;background-color:#f6fbff;border-radius:20px;box-shadow:2px 2px 9px 0 rgba(162,180,189,.2)}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .card .explanations{font-size:14px;color:#666d84;margin-top:15px;padding:0 35px}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .card .llar-upgrade-subscribe_notification{display:none;color:#666d84;font-size:20px;line-height:1.5;margin:15px auto 0;padding:9px 70px;width:fit-content;border-radius:8px;background-color:#fff}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .card .llar-upgrade-subscribe_notification__error{display:none;font-size:20px;line-height:1.5;margin:15px auto 0;padding:9px 70px;width:fit-content;border-radius:8px;background-color:#fff;color:#ec4652;background-color:rgba(236,70,82,.1019607843)}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .card .llar-upgrade-subscribe_notification img,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .card .llar-upgrade-subscribe_notification__error img{display:inline-block;width:12.5px;margin-right:2px}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-wrap{margin-top:23px}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-title{color:#2a2f40;font-size:20px;font-weight:500}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-title-add{color:#666d84;font-size:18px;font-weight:400}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-email,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-key{display:inline-block;line-height:25px;margin-top:11px;width:100%}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-key .input_border{font-size:16px;min-width:420px;padding:15px 30px}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-email .input_border{font-size:16px;padding:15px 30px}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-email .button,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-key .button{position:relative;display:inline-block;font-size:18px;padding:14px 30px 15px;margin-left:-25px}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-email .button .dashicons,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-key .button .dashicons{margin-left:15px;line-height:inherit}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-error{display:none;color:red;margin-top:15px}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-email .input_border{min-width:100%}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-desc{color:#666d84;font-size:16px;line-height:1.5;text-align:center;margin-top:22px;padding:0 25px}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-desc-add{line-height:1.5;text-align:center;margin-top:22px;padding:0 25px;font-size:18px;color:#2a2f40}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-desc-additional{color:#a4a8b7;font-size:16px;line-height:1.5;text-align:left;margin-top:12px}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-list{line-height:1.5}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-list .item{font-size:18px;color:#666d84}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-list .item:before{color:#9762ef}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-video{position:relative;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;margin-top:24px;border-radius:16px}#llar-setting-page-premium .llar-premium-plans-table .content .table_background tbody tr,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-video .video-container{position:relative}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-video #video-frame,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-video #video-poster{position:absolute;top:0;left:0;width:100%;height:100%;border-radius:20px}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-video #video-poster{cursor:pointer;z-index:1}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-checkbox{display:inline-block;color:#666d84;font-size:14px;margin-top:10px;margin-left:25px;text-align:left}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-checkbox input{margin-top:15px;margin-left:-25px;vertical-align:top}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-checkbox span{display:inline-block;margin-left:15px;margin-top:10px}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .field-image{width:240px;margin:0 auto}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .security-alerts-options{display:flex}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .security-alerts-options .info{font-size:16px;line-height:22px}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .security-alerts-options .buttons{display:flex;padding-left:15px;align-items:center}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .security-alerts-options .buttons span{text-transform:uppercase;cursor:pointer;width:45px;text-align:center;vertical-align:middle;display:block;height:34px;line-height:34px}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .security-alerts-options .buttons span.llar-act{background-color:#0a75b5;color:#fff}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .security-alerts-options .buttons span:first-child{border:1px solid #ccc;border-radius:4px 0 0 4px}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .security-alerts-options .buttons span:last-child{border:1px solid #ccc;border-radius:0 4px 4px 0;border-left:0}#llar-setting-page-premium,.llar-help-page{font-family:inherit;line-height:1.5}#llar-setting-page-premium .llar-premium-page-promo{padding:43px 80px 60px;margin-bottom:20px;border-radius:20px;background-color:#fdfdfd;box-shadow:3px 5px 23px 0 rgba(162,180,189,.2)}#llar-setting-page-premium .llar-premium-page-promo .section-1{display:flex;align-items:flex-end}#llar-setting-page-premium .llar-premium-page-promo .section-1 .text .title{font-size:31px;font-weight:500;color:#ff7c06;line-height:1.4;margin-bottom:5px}#llar-setting-page-premium .llar-premium-page-promo .section-1 .text .links{font-size:12px;list-style:none;margin:0}#llar-setting-page-premium .llar-premium-page-promo .section-1 .text .links li{display:inline-block;margin-right:20px}#llar-setting-page-premium .llar-premium-page-promo .section-1 .text .links li a{position:relative;vertical-align:middle}#llar-setting-page-premium .llar-premium-page-promo .section-1 .text .links li a.gdpr-information-link:after{position:relative;font-size:inherit;line-height:inherit;right:0;vertical-align:middle;color:#a4a8b7}#llar-setting-page-premium .llar-premium-page-promo .section-1 .action{margin-left:auto;text-align:center}#llar-setting-page-premium .llar-premium-page-promo .section-1 .action a.button{font-size:16px;padding:7px 35px;min-width:250px;text-align:center}#llar-setting-page-premium .llar-premium-page-promo .section-1 .action .label{font-size:14px;color:#a4a8b7;margin-top:9px}#llar-setting-page-premium .llar-premium-page-promo .section-1 .action .label .dashicons{font-size:18px}#llar-setting-page-premium .llar-premium-page-promo .section-1__internal{font-size:16px;text-align:center;margin-top:40px;color:#666d84;border-radius:20px;background-color:#f6fbff;padding:27px 0}#llar-setting-page .llar-settings-wrap .llar-form-table tr td #llar-setting-page-premium .llar-premium-page-promo .section-1__internal a.unlink,#llar-setting-page-debug .llar-settings-wrap .llar-form-table tr td #llar-setting-page-premium .llar-premium-page-promo .section-1__internal a.unlink,#llar-setting-page-help .llar-settings-wrap .llar-form-table tr td #llar-setting-page-premium .llar-premium-page-promo .section-1__internal a.unlink,#llar-setting-page-logs .description-page .description-secondary #llar-setting-page-premium .llar-premium-page-promo .section-1__internal a.unlink,#llar-setting-page-logs .llar-settings-wrap .llar-form-table tr td #llar-setting-page-premium .llar-premium-page-promo .section-1__internal a.unlink,#llar-setting-page-logs__active .description-page .description-secondary #llar-setting-page-premium .llar-premium-page-promo .section-1__internal a.unlink,#llar-setting-page-logs__active .llar-settings-wrap .llar-form-table tr td #llar-setting-page-premium .llar-premium-page-promo .section-1__internal a.unlink,#llar-setting-page-premium .llar-premium-page-promo .section-1__internal #llar-setting-page-logs .description-page .description-secondary a.unlink,#llar-setting-page-premium .llar-premium-page-promo .section-1__internal #llar-setting-page-logs__active .description-page .description-secondary a.unlink,#llar-setting-page-premium .llar-premium-page-promo .section-1__internal .llar-settings-wrap .llar-form-table tr td a.unlink,#llar-setting-page-premium .llar-premium-page-promo .section-1__internal .llar_turquoise,#llar-setting-page-premium .llar-settings-wrap .llar-form-table tr td .llar-premium-page-promo .section-1__internal a.unlink{display:block}#llar-setting-page-premium .text-block-1{margin-bottom:20px}#llar-setting-page-premium .llar-premium-plans-table{margin-top:3.75rem}#llar-setting-page-premium .llar-premium-plans-table .content{border-radius:16px;background-color:#f6fbff;padding-right:15px;padding-bottom:15px;overflow-x:auto}#llar-setting-page-premium .llar-premium-plans-table .content .table_background{font-size:16px;font-weight:400;line-height:1.4;width:100%;border-collapse:inherit;border-spacing:0;border-radius:16px;box-shadow:3px 5px 23px 0 rgba(162,180,189,.2)}@media screen and (max-width:1599.5px){#llar-setting-page-premium .llar-premium-plans-table .content .table_background{font-size:14px}}#llar-setting-page-premium .llar-premium-plans-table .content .table_background thead tr td{font-size:20px;font-weight:500;text-align:left;color:#4acad8;min-width:150px;padding:16px 29px;border-top-left-radius:16px;border-top-right-radius:16px;border:1px solid rgba(74,202,216,.0980392157);background-color:rgba(74,202,216,.0980392157)}#llar-setting-page-premium .llar-premium-plans-table .content .table_background thead tr td:first-child{width:25%;min-width:300px}@media screen and (max-width:1799.5px){#llar-setting-page-premium .llar-premium-plans-table .content .table_background thead tr td{min-width:100px}}@media screen and (max-width:1599.5px){#llar-setting-page-premium .llar-premium-plans-table .content .table_background thead tr td{font-size:18px;font-weight:400}}#llar-setting-page-premium .llar-premium-plans-table .content .table_background tbody{text-align:left;background-color:#fff;border-bottom-right-radius:16px;border-bottom-left-radius:16px}#llar-setting-page-premium .llar-premium-plans-table .content .table_background tbody tr:nth-child(even)::after{content:"";position:absolute;top:5px;bottom:5px;left:0;right:0;border-radius:16px;background-color:#fdfdfd}#llar-setting-page-premium .llar-premium-plans-table .content .table_background tbody tr:last-child td:first-child{border-bottom-left-radius:16px}#llar-setting-page-premium .llar-premium-plans-table .content .table_background tbody tr:last-child td:last-child{border-bottom-right-radius:16px}#llar-setting-page-premium .llar-premium-plans-table .content .table_background tbody tr td{position:relative;padding:16px 29px;border-right:1px solid #f6fbff;border-bottom:1px solid #f6fbff;z-index:1}@media screen and (max-width:1799.5px){#llar-setting-page-premium .llar-premium-plans-table .content .table_background tbody tr td{padding:12px 10px}}@media screen and (max-width:991.5px){#llar-setting-page-premium .llar-premium-plans-table .content .table_background tbody tr td{font-size:14px}}#llar-setting-page-premium .llar-premium-plans-table .content .table_background tbody tr td:last-child{border-right:unset}#llar-setting-page-premium .llar-premium-plans-table .content .table_background tbody tr td .icon-lock{color:#2a2f40;width:24px;height:24px}#llar-setting-page-premium .llar-premium-plans-table .content .table_background tbody tr td .button,#llar-setting-page-premium .llar-premium-plans-table .content .table_background tbody tr td .llar_button,#llar-setting-page-premium .llar-premium-plans-table .content .table_background tbody tr td button{margin:40px auto;padding-top:12px;padding-bottom:12px;width:100%}@media screen and (max-width:1799.5px){#llar-setting-page-premium .llar-premium-plans-table .content .table_background tbody tr td .button,#llar-setting-page-premium .llar-premium-plans-table .content .table_background tbody tr td .llar_button,#llar-setting-page-premium .llar-premium-plans-table .content .table_background tbody tr td button{width:auto}}@media screen and (max-width:1599.5px){#llar-setting-page-premium .llar-premium-plans-table .content .table_background tbody tr td .button,#llar-setting-page-premium .llar-premium-plans-table .content .table_background tbody tr td .llar_button,#llar-setting-page-premium .llar-premium-plans-table .content .table_background tbody tr td button{min-width:120px}}#llar-setting-page-premium .llar-premium-plans-table .content .table_background tbody tr td .category{font-weight:500}#llar-setting-page-premium .llar-premium-plans-table .content .table_background tbody tr td .description{display:block;margin-top:5px;color:#666d84}#llar-setting-page-premium .llar-premium-plans-table .content .table_background tbody tr td .description a{color:#5c8fdc;text-decoration:none;border-bottom:1px solid currentColor}#llar-setting-page-premium .llar-premium-plans-table .content .table_background tbody tr td.inner_fields{text-align:center}.llar-help-page .section-1{display:flex;padding-top:45px;padding-bottom:50px;margin-bottom:20px;border-radius:20px;background-color:#fdfdfd;box-shadow:3px 5px 23px 0 rgba(162,180,189,.2)}.llar-help-page .section-1 .block{text-align:center;flex:1;border-right:1px solid rgba(164,168,183,.2980392157)}.llar-help-page .section-1 .block:last-child{border:0}.llar-help-page .section-1 .block .title{color:#2a2f40;font-weight:500;font-size:20px}.llar-help-page .section-1 .block .text{color:#666d84;font-size:18px;max-width:80%;margin:10px auto}.llar-help-page .section-1 .block .actions{text-align:center}.llar-help-page .section-1 .block .actions .button{text-transform:uppercase;font-size:18px;line-height:1.4;padding:4px 20px}.llar-help-page .section-1 .block .actions .button span{text-transform:none;display:block;font-size:12px;line-height:13px;margin-bottom:2px}.llar-help-page .section-1 .block .actions .button.button-secondary{min-height:40px;line-height:40px}.llar-help-page .description-page{font-weight:500;color:#2a2f40}.llar-help-page .documentation-section{display:flex;flex-wrap:wrap}.llar-help-page .documentation-section .questions{display:flex;flex:1 1 calc(100% - 550px);flex-direction:column}.llar-help-page .documentation-section .questions__block{display:flex;flex:1 1 auto;flex-direction:column}@media screen and (max-width:1399.5px){.llar-help-page .documentation-section .questions__block{flex:1 1 100%}}.llar-help-page .documentation-section .questions__block .question{display:block;flex:1 0 auto;margin-bottom:20px;padding:30px 40px;background-color:#fdfdfd;border-radius:20px;text-decoration:none;box-shadow:2px 2px 9px 0 rgba(162,180,189,.2)}.llar-help-page .documentation-section .questions__block .question:last-child{margin-bottom:0}.llar-help-page .documentation-section .questions__block .question:hover{box-shadow:4px 4px 18px 0 rgba(162,180,189,.2)}.llar-help-page .documentation-section .questions__block .question .title{font-size:18px;font-weight:500;color:#2a2f40}.llar-help-page .documentation-section .questions__block .question .desc{font-size:16px;margin-top:5px;color:#666d84}.llar-help-page .documentation-section .top-list{flex:0 0 500px;margin-left:20px}@media screen and (max-width:1399.5px){.llar-help-page .documentation-section .top-list{flex:0 0 100%}}.llar-help-page .documentation-section .top-list .list__block{padding:30px 35px;border-radius:20px;background-color:#fdfdfd;box-shadow:4px 4px 18px 0 rgba(162,180,189,.2)}.llar-help-page .documentation-section .top-list ol{margin:0 0 0 35px;color:#5c8fdc;list-style:none;counter-reset:my-counter}.llar-help-page .documentation-section .top-list ol li{position:relative;font-size:16px;margin-bottom:15px;padding:3px;border-radius:8px;counter-increment:my-counter}.llar-help-page .documentation-section .top-list ol li:before{content:counter(my-counter) ".";position:absolute;left:-45px;top:0;width:100%;height:100%;font-size:inherit;background-color:#f6fbff;border-radius:16px;padding:3px 20px}.llar-help-page .documentation-section .top-list ol li a{position:relative;color:inherit;text-decoration:none}.llar-help-page .documentation-section .top-list ol li a:hover{text-decoration:underline}.toplevel_page_limit-login-attempts{font-family:CoFo Sans,arial}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box{padding:0!important;background-color:transparent}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .jconfirm-content-pane{display:block;margin-bottom:0;border-radius:16px;scrollbar-width:none}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .jconfirm-content-pane::-webkit-scrollbar{width:0}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .jconfirm-closeIcon{top:17px!important}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .jconfirm-buttons{padding-right:15px}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .preloader-wrapper{display:none;position:absolute;top:0;left:0;right:0;bottom:0;background-color:rgba(255,255,255,.3);align-items:center;justify-content:center}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .preloader-wrapper .spinner{display:block;position:relative;float:none;visibility:hidden;top:50%;transform:translateY(-50%);margin:0 auto}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-disabled .preloader-wrapper{display:block}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .input_border{font-size:16px;min-width:420px;padding:15px 30px}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .popup_error_content__content{padding:15px;border-radius:16px;background-color:#fdfdfd}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .popup_error_content__body{font-size:16px;font-weight:400;line-height:1.5;color:#2a2f40;padding:0 15px}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .popup_error_content__body .card{padding:0;border:unset;box-shadow:unset}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .popup_error_content__body .card-header{color:#ec4652}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .popup_error_content__body .card-body{margin-top:10px}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__content{padding:15px;border-radius:16px;background:url(./images/micro-cloud-bg.webp) no-repeat center top;background-size:100%;background-color:#fdfdfd}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body{font-size:18px;font-weight:400;line-height:1.5;color:#2a2f40;padding:55px 60px}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body_header{display:flex;flex-direction:row}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body_header .left_side{width:60%}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body_header .right_side{width:40%}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body_header .right_side img{display:block;width:306px;margin:0 auto}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body_header .title{font-size:44px;font-weight:500;margin-right:70px;text-align:left}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body_header .description{margin-top:10px;color:#666d84}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body_header .description-add{font-size:14px;font-weight:500;color:#666d84;margin-top:10px;padding:10px 20px;background-color:#ecfafb;border-radius:16px}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body .card{min-width:100%;text-align:center;margin-top:15px;padding:0;border:unset;background-color:#f6fbff;border-radius:20px;box-shadow:2px 2px 9px 0 rgba(162,180,189,.2)}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body .card-header{color:#ff7c06;padding:15px 63px;margin-bottom:0;background-color:rgba(255,124,6,.0980392157);border-bottom:1px solid #ff7c06;border-top-left-radius:16px;border-top-right-radius:16px}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body .card-header .title{font-size:20px;font-weight:500;text-align:left}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body .card-header .title img{width:22px;vertical-align:middle;margin-right:15px}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body .card-body{padding:10px 63px;text-align:left}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body .card-body .description{font-size:16px;color:#666d84;margin-top:20px}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body .card-body .field-email{margin-top:20px}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .llar-onboarding-popup__content .micro_cloud_modal__body .card-body .field-desc-add,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body .card-body .field-checkbox,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body .card-body .field-desc,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body .card-body .llar-onboarding-popup__content .field-desc-add{color:#666d84;font-size:16px;margin-top:20px}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body .card-body .field-image{width:240px;margin:0 auto}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body .card-body .button_block-single{text-align:left;margin-bottom:30px}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body .card-body .button_block-single .description_add{font-size:14px;color:#a4a8b7;margin-top:15px}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body .card-body.step-second,.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body .card-body.step-second .button_block-single{text-align:center}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body .card-body .llar-upgrade-subscribe_notification{font-size:18px;margin:5px auto 0}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body .card-body .llar-upgrade-subscribe_notification .field-image img{width:220px;margin:0 auto}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body .card-body .llar-upgrade-subscribe_notification__error{color:#ec4652;padding:9px 70px;width:fit-content;border-radius:8px;background-color:rgba(236,70,82,.1019607843)}.toplevel_page_limit-login-attempts .jconfirm .jconfirm-box .micro_cloud_modal__body .card-body .llar-upgrade-subscribe_notification img{display:inline-block;width:12.5px;margin-right:2px}plugins/limit-login-attempts-reloaded/assets/css/login-page-styles.css000064400000000570147176754540022262 0ustar00#llar-login-page-gdpr { position: fixed; padding: 15px; background-color: rgba(0, 0, 0, 0.9); width: 100%; bottom: 0; left: 0; right: 0; color: #fff; display: block; text-align: center; box-sizing: border-box; } #llar-login-page-gdpr .llar-login-page-gdpr__message { font-size: 14px; color: #fff; } /*# sourceMappingURL=login-page-styles.css.map */ plugins/limit-login-attempts-reloaded/assets/css/login-page-styles.css.map000064400000000315147176754540023033 0ustar00{"version":3,"sourceRoot":"","sources":["../sass/login-page-styles.scss"],"names":[],"mappings":"AAAA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA","file":"login-page-styles.css"}plugins/limit-login-attempts-reloaded/assets/css/login-page-styles.min.css000064400000000405147176754540023041 0ustar00#llar-login-page-gdpr{position:fixed;padding:15px;background-color:rgba(0,0,0,.9);width:100%;bottom:0;left:0;right:0;color:#fff;display:block;text-align:center;box-sizing:border-box}#llar-login-page-gdpr .llar-login-page-gdpr__message{font-size:14px;color:#fff}plugins/limit-login-attempts-reloaded/assets/img/features/icon11.png000064400000062232147176754540021612 0ustar00PNG  IHDR:l)%PLTE{zzZ*+R[jzYYS\kYzR\k*S[j*Z+y+yy*ÃI|/.<~āYҵ䠣ͤDž_kyٿɼ8JޞijϱœYbpU_nտϘ[dsl}v}IѰ顼æy̮êv^hv32ryᜫʫqeB.ftHܜfvݥSzGpf[~ZX䪿\mCpbcerm™rOt_z\tL/b0IDATxڴف1E?]E{nQ͌ ~=_i{}C2ZR0r Ҏl̘4$sx 7ZJό9z(?~2CX7 #gU\'(rsyׄG!uPVos@PzƩZspb%9Ť ῷ[kZbqecʉ/ (yy^@YsO `&ݠ  PymE= ?Do9^"_CgSJ~ߴQW&z~wڒ)rLtbǰO^x]s2Y"*ְq_ĮlS}|[ ҫ<̞s2D`F v-}iZxA$|{ ={>lIΝ'07rAepn=ϰwF.c݁)skJ K"؉*T2MZJf`_ @u Pپcs_RZgč[UVP;dYَp&<< }-z/,O: 6&/X0k~:U&:&s "S1$䙞l_|͇wvڟMHHm..;&Z!8m;bi+ո6 <9 I%U/c򫛯?w7iAigX@ ȤuKCb;7 0㫜ݵ$|?<}c,Vyҳs5uMa=zDPF9*)jU:#j]kDCO[ǧ^QG+,10J7is#uN7>nr*FD)rUX-@mB:ta6Y2V8@@ 3'׆:?u{ _0crh:] =0 h&S/Eɰ/vuG|?smw!Re n1x¡6zWa E̋6/׫rr}g8%R'#KE.P]q7LWd4enY]=Gt6EK_ދtz;<,6tydʧIM1x*i}l(b6vR%/|* /!/*C!d[T+_N+a+-NSX%G=#*ڣqD5c [-*-Fs,% Fg[1Su cc{νWٲ#b*b|_FZeEqUK@GNU{"*C fYI7Q`P-=;=kq RϭmQMu*_Gw։a(#&EF)aao뿡@CK{m:gB!k-0/6EmS|szUnB$Fi ىȎ_M5TITvQ*]A7Q .91W=yv8ĂBaRC A*Wcz_xiw3vJ5D!w Uv#Rw:J7fMIOwt|O6fN˕ մ)j _4rԩ2nkhC4jD7d悔Ε$ |1@SΪ_,Ϻ&)MHi1;b byZ #|~m.Oy<|A)'>z[?A-0`,{9"ͧp]a<֭'IYs׿uVp(E!65MGS-7?4%/{NrM/)-v {]z\ "(xыJ/K=R;"@q%V OjyO̪Jtd~r"2{rF9ҙ BGF*Y=LP0 A*d|Z9ua zQvTTuc]ծ%(HȅyyOqOk9ֆAY>}LtCD7`]+J%YWWjVntUg`M\i^r*sUZ)@Dao@4)cV&KA|eW e{C= y5Mj@;' rMhja#6>ߕw&-#Gn_=^| A[r/oϰvx~m p! уvw=$T>芀&u Z?#V5R>F3S2|Qã c!^^U)m!2[s RSε2<@Gts(L!z]GWwٌl- gDTݒueq(?PàsӃ`'K顝f l_Us4},lV4AU,4~6&3ޅPxμ6QҧQT?9\I͋ms"i!{a%#ج۵qKG_hr^AĤ|g9穉E>n,c cPs#NTY+Kg,-|nď[l%;;lyE"2WKnGfv|{@FwL =<z 8=hx)wN.b=ŰՉYw=Wm9us ]Nzsg'gjHdtqK}QMOzMWY%BfɊJ `x&y 9->ߘse1@<#D73_I`hn١)UxcQ($Ə$(4u7Pt+ω.Vuf︹fIѴ+snQG[diXf@rɀn\+?9ʶ7pZWZeAڵ`=QRfZ\\|ؿF #BWJ:ʒ5qoGv];ad ^P|>^rP5ke{+w#='ek!=TsEq2=r^?VzQ:GZu6S?Pv_cTO&{vchZpI0t&mVA]* \@k*4{І 1E@Ջ)bRKLs 19+wIqMy.aeKCTE=s> "'*(ދUIUd}P{wg|GW(r*j85vqMٚҗ<^xh8hf5ҏRqX]Vr\@E?+Z ![ON m1[$ot,PN>(]G*tMys矰N%qZqJ.~].;#VsMyFaڌ@pcvzoDǚcቆ꾼6M-t>_cv4J!}ڔ+a(VbWiLpxkn5CpQJUм^~MHXhJ~Y, YꢕkRοQ\Ŏ5C_2ou"Uq&yrHǍRpT]5U:yF]iHO/=/C0ްRQVFId[(4\=D;Sx!֩)Ɇo>) ZO_Je7%+ZjޏaZEfAMϩ:9YX× `뭘 TPkhS'ED {0#'k`DqeMq}ЙN$7==0DVܢ ހ!iPY5[$jlDL(vө~Ηϙl̦ȿ+FE3p`~2VX{<\ZR Rs\tϡgCN;xaC[oM`rSS\Ncxx  >|3\!gQIg [{n srY(Ѕ 1O]:ΧoO;K]4荭E y=6P-H6d(c!mV2ɮ:e=Y x2tkit3/cƕjkkƳQb˶B!a@8&z38q&7R40Dْ~J5ka8X 7C /YÅre̦ ɿ+ 6iІI#(aԲS7ot|jNj{?w [$UXpM Hk jϒ2 GYHJ7XQ|Ҡ3C3YD} hzg:f E 52l{;2f1wMCx㻧njXL/ѷ!O:8$` .f" ~8wCxRvPD;0YP0ڣ v6fL&TLt\O}ƮEvLxok5ZA ԙޏC.6=p\[Ŗ`rH?zB^@M$ !9x-("5Ô߯uؙ}D9LхPzY"z-(Ҁۺyf'j>X(PJLJ+4FjmOz'v0sG/|L<|-_ ;dGfXUSۢ Y)uu^PmڙO^4IW)pg,0$1 PeK.49OIVcuħ6mW`{- Ѽh:*!g~KbDZpYYg](H@Q#N8Nmu0I{WIyd֘PKmP\DyM  Ѕ[~9+\m,Y$'W~TGK&%AP{ upG;T%D^$S``Jbfq 󜗗Y l6KxZ%>T+o٠/612Q{U*|gBU.)cMOᐗj^cCNuޠz 0sOX5$6_͔:;v4 /] KˀШ:MRb7#q36i+ }ھT@'7vA6(s$C_Ͻ+GRhf\/-V#ETt_NNR1S.#(IP2M@HgJE(2eMa͠B;J ;;O!(AlG1Oyv;ЍyDEA}zQ5 eۙ-]kGe$Q9Dm>CL }[9NC-lNZ5%P1uNօ[\R3ĭR  ,tB!5ʗtj͕ϙBm~CS@ L.qUPewGFNH.:T_6V2Fqr7Ӕ-iUb(b4_$fzm -} p\xhPEDHt HH +BxԫS9&!d1NÓinl5 s8 VAZР``wfL\Xxa1e``FY'PY:l-Q ('lMQpBn, PST7Ͽ GQpkL7.NK?ʦ1G:# #4U<]P'%IRNMl /\LOy}FMZq~g~dlaYkiz<`ZR 3SwBO I9hhՅNfj1[Țt13$9R!e7:q*N ?f ܏ŋO_xKkpi`gHGd.dؤY0tX; dm0p@~x(QtOT4+]L Iw7G#%5;#Ϧg}\hxwJD}X|꭭-'Fh_uJE;FFV mpQs$qq`so!NKL1$sd=SgW6$GƓw)jr`4MJ:7Dìkb{|>E)-|\;SE!5?*?4*iRR )/#gB_O/S'ĕńG[eI`끭o:9Ɉ\}Chf\OGPW_IՉ.GٴvաT{P(85֐7VVq~hւsq:xCo!L(L> #Lt.PfDꚦ"EQӘ7,6VCv)3~3j> wTc~`{i7F`d}Ӊ$8rTeхn_\)t,\%9)_Mbz6;ZtDGxA"Яo=#AN#t' F^r5ؠ^g[JCw?/ ]hGwx6iZ)Y&S>SMJ50i|;,B., mC DXw[`. ?5"a$r{Qh ksOjXW]( ChIFbko^y#C@ #M&P-"莭B$RZ?ql~aѧN|)7@H[] ]k~*TfЧM:]_4E,بF[hj:zNɛ7GCä(cz & + QrCFC5a|=84tv1yi%<ٕôat(=Ɠpn݌YyFhs] ^Fs>n8, P\0278>D+ &dr P퉳vi\JDDѐ]AX,3 ^BxVLT'˃pOެ -S@]¸{!.=4E.u|?Yo^J;+0Tz5/wki >=[JX)1_[QC>fM\w^t x&:n O4= |ͣS#lNt 21~V3P`4@㔞Qq*9Qe~9bH}(㨎wfTQ% MScjtF뮸QѢ"ío+>" n/gͧFߌ$3ޙ$7Jq*|WTVUFO$AmRUdFi^W+9++%;gGۜ$F1l#e^,=2oz矰4!V]3cYf2yTM0\κD+,XQF٤"2IsljVVDwNcm)One?^@]EGF@0VGrF?\08?pKKwv:]- S!JJlyM*!O㔖AZZp̉AiD*Oa& w)P@GQƱ A K;Ȳ+{>$!Vxڊ;!LjTT3!9Ln"_)L\=2. SE0{-%y7_=4 Oh]Wc"g ^QY Nb/w 8d++:SQ̣n. ILX2:|x4N R-dl!',9e!tcb7V 3v*wJRV+)(A:y'>*sְy>+<(&r $Fa 8 > yI,i[Lt}LN),\_~,B8&gkϿ$bɂԇ2NYtZ&~j4PY&SU$KB|[3r X A$JZ!UA2jх-T$=n#yF;UʠHzrRf~aY2?8|aeO0wTJ7}8>irH$Đ[XIDבѝx RO-Uɀz6̕S5}Lτ~ꊝHLW)楊LzBS"ww줪UALR[_?󗛫2id,``S.jCy?bK,(s<#%T1U)9L9x`aZ\2a;T`J0ƷgZSdzڦDdTyB'YZZ #kEtjcbHb:Of&0VH#f az1U36ԅAs>AtUN׬]m2U2esʓ&贼xnwn/z]9)3^u;ö#M7H:4TTt Db2 &B&HWB5&ךEn^YGW{գSgn< V1rߩ,}֏tҳ#3ڄenVYsGwɽ9B! ai 9hiM?( pmȄlѢQ"T44Ajyjّ'l ?P]ZNO3F-g,>I7xΔ߉P S67BPxT.NklLC*㐑)2^2ߖsNrA(D̹X!G3T/Ϡs {ųSU򴤀JY-o(RWޥ߱6Y`=6 s~dxrw"gp?*L]2 ƿ.80I-)|-LK)$Y*= ,[wnUU)Sjso]cEZW#KG*n頮3[hA]sT207^DP#`(}kQ߫ fSA Gk i3ӅY&6Q;/Xvܾ췄tEպg}i]E-;NuLjKЄ.w3[hfoRq0VlO4q}& oǁ+:iL1b- rg]2F-7~ϥX*j~J7cݍLUaO JliU)OP̿;Kl} =^HœOh; Ps'e[<;&Oj%9ि.dG9e {+W ݸZu-p$Cg$1u|QabRX0~AYqʹ78=1ʃzQE0{$\~ۄp;LxX,ѭv Ae'ZmHzlZ*`,U nUC:;F h-N^ear36pĺNk쥈Y"y|4fIpȺtBk3neЛ--,r{'2M: R8cPm e]X׎`ձ:BYL*tJluR>g'+1^٩ζV-17PnYz Jd, qbpJ6DjlFI ,Q̻:wcsST)qn!wW*r}$vgcukuuYfn.;Fy՜ՓNjj d :jՠmu-eohV9 )&S t"r d-10X{:Zשmo\\&y+V9vQPت"YZ)fgˏ{=.Z*ۣgb;}w\#|d[hƭӂIN& J8a#JdnTɑid֤3^`9PpOS*c1e_X1ؤزfYbS!<&hQy6K&+vlRCWmy-tmE0Gr:(5JS= U,݁ٻ6 kJZ^EqT Ti¥%-* 'z\8T FyMln=^[{2ofn]%^Fn^G_@ Ϟ`5-4[YeXƕBxTLe$Ȑ;d.ExmttuEߖ#`ϻOr3_Zw%piR؞lpBrNl%ťWjb6j<̍} h6I}`{gЇ_\S<`Tر"luٰR"N Y48wp]>쐨^7bW"BN=4i&wRZI< _ gAЫU Ԧ *Kzj F4*rSaF'TcZECHa"zgk8c +'6"IG%evM:@cD#ĽҽBwf_\xO@qw.=9R=S5Y'*9#&4 <8&5 GCP9\ɂ$ƳbpUY}g :"% d֯fO[gݴܕ՝oGӸ/HKm?X+fpժGb9ON2 +;m`XRCa~*dIXX躢À5$Ja!Fm_)9u&-@6'D\Ʒ9^mͦ\EPo sovyE$Dzpz98igjf/ݳJy\,<Уm51 ^s\nݡo>jQǻ4P}bxfND6!grXD<bY2*x<6%` ]G;:ֶњ c,eb&`Pvܺvo?<) JL#[W>ϱ(S/+&qjˮ۲B$'xZك8Zܩj X("1@6Yڒ&XӤmgኅ}S Nn:Ay@DX_hx̌!)(,x9gQ91A  LAVg0V.tˊٲx+\}|qag#jR:~7#kׯLfNB96J8ᚔ;AS&Ő%,Ɍl+d:9ۖXM3 %6E%:n>eS:PLK 7o'݋_DvQIϛ=>qxiIfg3<0 3sYyU6) { *#:ZU,-m mL1: L]9El|ݏFPG2 ` +YLb-)Z3ū<AhN"BX(ah_ḃf ObP8 =&?~k@J2Jsd:ϻy|IoUlcner]Y[ae협SMd ~s\@PIؒ?:6g FXkq؁6;_ϝ'R.NH}Tb~+܆tY-ܭa0"+=#UhgfT T!6h_ѭ'PW  !Xhn!ڒf" Lӄ'D3nK+xe\AdVYo/>6br]4+!33 > CX%Zi1C,fp]84hCeǛ-flc{+SK1((IO$$ &5i:׵H my&gLU.wFri9E`M3M%Dē[E\I,P :PW E\gh˘l MaǑ:qvvOn1*i.lE)/xOϩ&N{qt̻nx.xZ&?# η݇Z'EGt;8`W%DI>ڱ}*Ǭxdna)Xmd&o_ݼr&$6w.` 5X[E E_\ <<24mr_s= =A İ&tDd/>—Eג9!YW|7K°M`RZ$X( lfQ](lR鬘i2=Av/OE`bqnr]{lUj55|m#pR,T;*=ZЬXv5FBiqť4TbiLci^t6LjNyXԋg zYVMVFLs4$Ox lQA ҂L,乫f mfil nW4gaw5W&f璬̻8TvnsfFQ$T}ua jkAݙ2,4H;A/t X8Ffjga+f0Yt<: a\kf5]RLsxDҏHENرQA;{!v@-d,auקﯘi3h1DTklJ4ER-O4-VNc0r }cU=4ZB,!64$x`O4̚O3imk% ˙idqgx3͉ۨH +De%':6,L9-a:+f4 *:VS<_L.qfxb^Xh<jMk؆(ItX硝3M;f)PGs)3MW;WHivOߡ;1C,tދ[*: 0 +|"_y~: UbiL;Gŵ:ijLz?ޔQuJ9ĺ P: Ţa],u"2-ʿF|G'n\v~묘iZ3cUd- JkfQL!ߓd )1\ދ?Y:X%_Ue&DB 儠4 Sbɮi0piÂh2|[<$Z5BNG 4&ȝhe̪O0U/!+f4cC2Gx62ݽkZd8Nr~&7W2cЖMc,ts0Y OrygLS/lEY1ӴdA҅3Y\\LCwIN_QirwdV;B1` 14  -J8oHo Ȋ%3+ rx2qA颏^Ff:e'GB,ғE| NBb;v it} 5+f4oH|$҉s4skLldnX0,D۔V`P-r[+7a8?/ˊ%3>ex(%6/F蜬 r#f9)w0IP`Z!.th)Hמ4O J*3M{f~V/cŏ9F=Utss&v4uDbgaȠ_m®8EF/{3kPv3Mkf[-c{AntM b!1d+(|'|ėX>WD0 еB8u$Y1Ӵgym+#`|ދ9"9eYRfP'#<&9߉=r+^0X(zXk ƻ(lbiLKcH|^yVNKL(D9"Օc/=B׮U߂4Tc 5~5=<@3ӸsuG3MkfIOti$s3`qx)”H rI<jذS#=}bZ 1q4^LaxY1Ӝs᠛rD$[q4x}Jw`f*j3öb,tDZo3Mkf{]<3lJ3{.3#BE'݉*yMظ`h~EP9^0 Ns`?絉(hEB7(BwEZ)6RKQQXIɋz/z) (UEg$fyېyod{3>dZV=dԥrR[HX2ӷ_cux:IY b( b2WzUBD,M{q2R9jBӭZ$iQU8Iv1ĖLC-{T=kN V= !@,ZA2Y/PzUŃL/J|4!d^j2KfD< yiQr%Tthz@XhMgTAmY'yiL(i4U蘫-x%Ӝ<+dclmDv>BEK[fg o2bf"&LspN #9LêtEc k/P*Dg b(A1>Չd_2 d ~^&OJE< 4;ZI0Mg!:eS.Q B2g4AdYm!n|1xL3+i3$ɭ7*J VQ )&Y .{i\d02o) D<F0{ndp:zPx$A{(҈dz`zd2g\iAɋG#ƏLUwqӠ~4d?v1$!F<(k8Ӯ],4C2 yM^DR?2Jid2 rq9M[4~{sn&2Gn6}e~ظK2XaKԗL3~H gSz&X#)PTq+eƑi !ЇwH@TM5JՉd 2 |H'D}+V#h $I$5⩐Xadl!'Tb9>:-U7L1l3+e{iP"&Lz'7!aɹxaЙ#E {.}z@Րigg6#iaQ01-T&" S4d)Xvm]ԎMsY@tg5uG7L_e7v79YNQ(bϓ$q@2sk5i4)ߖd6ėw_.ݘ>h5cieï_$2 ZLJ;tO՝lr Ӕ#LFтKcgZVfޏ˷o^};S}L"Ә\tă^ܸ?{?%s]e8ԩ_4dkY`NmدY!jyId 2N*i^u$i]b{tZN(4M @`;7}*](!l?2MsN~H !Ө}W~! ;ͧtr PQM"`/bwq$uqiskd?2 6+\{ CIYp E1Lc- .+NQɈQH%ة~Io`q}4`7c@ʑRK17^F2MFjPUuJ~$[rOИ|Q2M6F2M6=+^L1iz7ƺ%TEm!Ӕ2i40(p4WǢ}VO2954]BEԵ"i4fi&Պ4TڙBşL# d6}G I)IdiXkoF$xi Kkp/ 4ʐي?aR~h=0C/bU7wj5LGOJn>[IAR7Lc⣊wߒ;AoJπ4dSC+v# $PAN9"Lc{zJ*ķC :aܖ7do2 D[mw9Fg4F]T/Y!XWEvк3=`u}3b~E2`W7:͵r~4X[YB)V^G2Q4;VB-mw_ "|sDeYj%&~< ƀ4i!2mu}vf"r>?d"% h:EFa4U2=*Gd7.^ .: J,9͊&&P(H=ma(JidM*OM{څ.u>d:f%Һz*2r-A]bYMGa L)Siw/`h(!Ci6.!V͋҈~,MM iN4VdZJ vCy8d2a\TܑjsQzO8!7➺!Ӝi>a ۅ:t'-d4d\p^mlJnz0!Ӝi<]P!>lC0mcdGJE96dc2MNP,dh2IivA~OI>1>dc2 5C@xv6=LsNYa96P+įU#=B.F':dc2 ސ߳>XaP~w˱Gj4iMDzo֠sG$Yvhtx%zt'@U1#7(&JY^wq=^Т#y }4Q &}L5 }C%.v?TT$/_C ʥhojKXuR./+S&\( C>eWdʴ斴װLJ'0iE !cDDܻc7%J ~` ]s1ž5zKcS8P,~|+޼voJu6ΒsVFԃ~cU_̄+?LLVJ, JdqyIwGԮV VhFP,J6y;}_&6!Q`cHFq_Cg)Y}B旘1rڅqp8[y4"QI>-޾e*/sS(3:oXreD-8ͨ#oa azmHnd8]7۰m#=hD,[G"@-*0 1ApΟ߶e;˔F%I"))tZyrl}^gT1;%C>s7Hs]fB?c,ڰp/jN$.EYʻ?V,y+eM__??DX9zn-հ*"1L#u* inWisBY6./F}=˱ \|g.8|+ʋkӇ %1 B$5~p2*1K  fCӏ1q6A[Čf)ƉP7ZykT[v62KV+ޗa,2t<-k ' R3L#!Wd}^T٪[8zqM;VqS`c&Ge2U%1-"K+ѐSdh@Ә$\x(ٵ04h52d'Raj]X =b I h\e>k$f{bG >1ˍq*Oԝ͊Qph-W y8=ѼN^,kIx5oJ˸Wq6^,NxϘ:" MS/T>qM N1=ҒME9,Z8v |D;ZCak#%SNh '˦Y9[?NMUc4rIz]}-BbC\G 'Zŕ(Xc_{G#hN,3Wɯp-Dhe,4ڀC*n XOʮpىgb02$1q2N0LA<5gD/\GþH%r/OQquFh <"32`*9_Ѿl,E}e1Aػ>򑮧v\hlXFYB6MbRLHiªkzL5^ߜ6&h#/lZ y_FMد2gyM@oᷰtY/>ɁlZtpDlP{3Mdq1j6#f4o@AOKjG`AP$-!#qm[M\|O+ǣ8Eo/Ttη8AF T0PYoUpNlL_h?2s*^M*fSSҠ>2왫ޔW[aTaSax:57cU Sc@3ܨ>C6hv&y8Qm eFfll'&, fUñW*`)&w/i+8Tn<'9B?CO ^{wzA0ww%IH{ű%HAO/vbjqk>9?^MEie*h5/$8a0 nZtNU nlc˨f Kz7;mϸo|yosw9osf*%-%Rg"Y3%*G} 3?ycބ83j(†۩jM`J?$|!FbfUTb+`967b ՎaCk%$FqkYbMVFΞTG9e j&* 9˒JD7{wFbhɦͻW[2aɁ $3_ܴ7q}B#9:G#[vc[x :yf,~^uU{\ U S1(C>X'I YlHY*d"sܜy*Jvlfe_Yn+t !ߠ8k|>)k8OX8A9=o۴+ B|bz獴M3_hSΰy: 4u%Q:F_]4 J1űV/* ZO;a< &e,>jRf_29 p\;9Dm Ӭw1s8<'\ 5fாqm}ϙ9HĈDΛQdb )<9@;X()H(ʙ&FF=%7Fɔ l5=`dđt`(\kph=e A bHY=S\Vt~S>SoI9ǒssz(b" XI]C W?.&V] |9-WYBGƻ otb yC qqǸcW&z""P< G6š@W jDtvȴϏv߄(r+5Mt2&"<-̌ɚ/h5N$M O\ӒG8Ra QzInq&B $\8쎧]$I;JU`;'̡6.,MX`&ֿؗme^8~ycǙF@uC xչ_-L&rGIɈ7)\dH't0.ɰئ2!KHY~ѝ/uG2~9ѓ[n#GH -MM!wU$6AM8؎~j,7k^!lC60 WZЂ >\ 4ȏ8k EPts}QuẓLUyx^nKvTE,-4(f/OwiS1z+ Օf$*DT%5%g#T J3Eai*uۋI,vLoCh!!bELsGQs\ZBqiƒ0ɐݯG$c,_\cqA"Pd|@N"mPec}TPK[F]ǣ ciiUN|EgYhntPf$ %W@8X-!"xAiXQ̎C>Ҋ+|Y f xix+o$rH*Q&'k<<99~?1X- Q'3eKiV!G{(6kWt9$i/@߂ȼz8><3a+#Gp$}4h6 j\/M#.pNy5$)Զsu+2#8NX" cXHxXQ:bcbpJ?/~4!3zv9dL/-r @63 |;6Gk_,E;kNnHIIzҨ1ld}yI,mh|NH3,ObyCBZ>NC](pPE`ȘvL߈:J\hhYm&n!?-(B*b.Q1B ^&x $N=e6R_v|1aK#v?1S ɍk:E#ާ_nbo dMdhV5R+ם|C}I{GV ۔؋[NrYOn EE,:ʦ5g͸\tB4jIIԶ}B<c&,5!E NKEwt?nO~Z6[*x,RBUZ9ȆKiZ|u~=HITͦ< 9{@",A؋Dfﴞo;M I݂R\ (R)e`fd5҅%fCg8՘E?^ N*(Y(2yrmC_i/c+Lvϧ(oMBR (ȧ($Ef0?\=<ƛU]O%,#`AȒ j?4Ex8Q>c4yK轑]p29'Nȹ.X%9iD}u)4-4qZ5|c'>QAN/#I*8A rzz#i,!Mv]7Ou#FsPHiK>4,\ $& 0D6oDWzq޿ Ӭ? `:KheN7Tlˠ^|I_AH"wD%yzs0ɻWȝc ju+ςRhnuԭM2qƃGRS#V`XCxƢS;o(KApɾz :vBL9SDP?p(D+s{鎍>;J Fz27phu(22-#úo]rFRD7ݻTe{$E03!nqN9@W$aYqF4oN) L: P2RM٘:nݢz1 C C ,WHؙH`X*ɖHpA nNUx O5황z'q*m@76۶M2KMSaOU<ʵ-JDlL O2To|ME;-.4>INjuYREkU]Fќ !nоc>יЩ~lA|lȖjHvjJ.r7,ml>uƣgQhezz^hϿA2 Rl.v}ZPAs5cYc !QQ͍qb/|1fK t%y׈' /g}B2װnݾJ{[ b6l c2E'#@4w;1\'<|~RiɎJp[JTϟe%f_hU 8IInY2|*3= >q["H+퓂(Ѷan.IR#'yR<羅1>,w,Vx*k%ET{ST\\]+U?B*oLy[7MhSuH;d #E#?#nlj.[:6ܻD8f>^2!Ǟ. .YdۄN>8:%W>0.蛲Rd֘Z,i b˚U~(9:sY;IȠ= 6ꍩ'gA@H5 \FVjӎP&'! *.M x4wU3/jY7%B<&32'&ɼ]q.ՙi,*{+{O,wDDk"Tuy_  k|lJLz@4v:#QJ-4wzºe|Y&޷,cA#%rd;q4䛯}>Acd+#N `S?YW_@v˄N8˕nKο2WѭND` s064oP #Wan3JqK9a7,Et]R{%BKħs&$D&t Q-x? [|yM?}S~e7]9?ñonvC]ݧ32|Z:2'ӁD/"XrzuK)WCz4Ԑ<_=FtXky:,cWD͇]#_\Bkk5!bK-ڨh 0۝}I{2;;3{{<M=H4(?u"\ |d4~ÿ3WſI=IFi w>apH&A:#&;':o `)f+v'/ XӂEIE(VM^ht|% 19>_h+E`g^Fɏ\{I\k;'3Wa#s~3hS g&K7nTJGI=Ь"ڤuTYx2g aV8i$%iED5͟$HwLw**·¿sB7auuswjΰv7.)k|v@;ser)Wt1c J N5 G <|(Wή]NN5aMzW)U j.TSHܺ{yI/o>0wYt$Acn|OZmf ! ֢l^g?ֆ~j%pBՁvlΒKJQm"+U3lU#@P8 Lu-iHkjU;qG|8'' W/|Xdꭰ4ŶNˍ딣tSG9_˺\,' v#kB0Ei 0gy\9-|u茎dC@kh]QmtGu۶U Z$U%0jCLM̺IYl@.B(q2j2b:BQY _.q}dZn|pIa3N4^fU&8_uJr&ۘY!b(|x`v mhS#nO~IF%cdi1"S 1>!JZTBKm:-#7Y{iǬz15MzG_)=Lnt.un$*҇2Jʻ]*rnDyvZvW)t02#3H; {d@"fm/8앧 M-{J"Z+N"Yב>N|i&R,8~9ٚ,Rj}NS"| =mOqE$s<,!bj^D,)bnHX%M"t l7Znv<bNg1%݊} =S{77ֻ+hOr*SL$gD(?;>_G^2nrsI/` S gvY Cʳ0Y v6Fk\6Jiҏ|셓p[- t BBRaB O0 sᰖgX2S3eJk|{s Q/ vv QhHnΟ8? 'hyֈ%a8&P3s  L&hlܨI=xBbcOF@в> j1BXґ"g m?dU = "\8,EݥAPtnON*OmU*ޮJ٫g AC|uP-jh,O|#I"W KLUzԥ5D48vܳAvȨ@vR2K3"j e9f~0*1â[hHz &'mDa4M:hl!Yu!62o*{j+ꖘI曊4 qE.&U^=5:1:}Bϑ _^ Шʆb4Gn,t*jV>%U7c{b+(o좌>Y8qFMϽ(IC\B.4^"M(yʓ2^?U l5nӒh)[Scm5"9zA~pC "m+tP ~*`2ۜh*dj)rrA&.N%m /A;01ŧ ]Vz+uPG/44iBJ0 +9א~4ȅ$؂n1~rܕ^oG1X05h٭ )(e@ .s̰we;@g7ieq2 0rd '.'u.P=΀ J@aA/z]`9|Έ2Ne*sL7lMj*c۬~"<ɝk~7)4]]N`,Uri Ky`k&!S[g-R05$wY, \&ǯX4 <8ivBUm&M E>[_s]bX*GiZNaUIp$ц(Pk*g:/i}iQ)@Ƶ?ۄg顯mw jG͊cDҋG8P D*\%fFl,fZC$ ANlgIKAhgTzk*?A+S{r3Bl mD8i>OcKާKP`jѺއ6u7ymxM Rՠ#8tTϟvx?ȧ/:$v8ΟշuU-:5V=3gF9?/ ^AG?q+@ye—W;Kr?oMwf@" KMQOʆwG.WOwf C8D/|qy 5:x,+l^NYy i^aNzP'PZZ* x2 :D1u^+4I;RF:MQU"c [J *Co{6 ϳ#> XcD#>!HT"3F9Y4-,V 4#dκq#طC*wWhKWgY6־,u;z]Oy$P s}צF*u7cgʝ{$3_撖`6` 6$b[ ]`"|!:՝JT&EB\* &Bvmg7eEOfR%o!#%M4֭5_ EAģKp~6Rr:B 8(uմ&WJ\\t>eq/n6kN#܂;5跕s|Co3gI}88#"&R!A@Dʼn0Ao>$pCO q~oHM!!t-Po&\j\/2K reɸBh Xɂh9HDd^WY? mp=cy7ɟDٓHvۈ',|_9S6u}@)L}Lqi#b1/ ,I3`eE>#0] /{`piR\b`{VkR1pruS(I -ZMd|B"kG 1PU]j-!iud*q"qoTBCkXq]RLHt\t-baS$h\ I{8,qoe4e"he25f%c,R5Zj߭8rIn iQTTB_jJ H5 DTmQ9̳@EW3E«KrYBE=cT]Ae9D4QsȖZ RvDTe9_`KJ1P汧<_Sn0L݋ڌ7:&ڋ&mjYz#IwջkO adMi@[WP}OΫW 4Qh/ܥ7w @*"If18>i]e;i&VNF= Ǯ) @š'B)z=6j12qh櫜?T  3 DǩUز' +eoOƁx>!Tn(MKPPe@l9MUH m?0[b EDphwpUEI> JṬß*%E(ȀjYq]$^:|%_S_(6b@DcOSX@,LDp :kOEr 1)1z͉»[䓋l`%iу /:&-%,G*:?3sKx\eM*.+pVYg˧ Wq cGdC ̇8~yPPdmilx5G'r| ,.RQfcZ  >,SDXJ\Jx9*B(]el%/ ,fYq3edx"5*U'3є`dlP`Ep$KwZ`eT"=VVe˭^ř.8xQ6\1]# o捽AT"@jNy)&C8#K4"$ලs,R9XdlH+\O4ń,WHohGk 3XqdAR)S:ozCźh:%m)$٠9JZV"؟SSfJ$(,ן2exsX!-ÄZ, )5X{K5ɱ&V#'UM,/lm6<,֎);mo7Z} d֍ZSl]?\t{j%&nZ1EuXW;֙[ b%AI[-YWe.d5MU 5w,6Tl zgVo2xX2[7 Y>,"0ȍue-/ uUk8vr[uPW:s;+Y/9ֲ#[x$FZ>>u,xJI5"e4[qu %=U\ry6"6&9 Dm79QjgF?p5ٿΓSE6#|-ͧ܌MIDw7i>zdpDXXؕԤ@5A &\Uh,"Vxú(%uRJQܳ 4;{mnF^VoqƥwkllٍluCuy\ZFdN8h/>=O}:oQE'q$}#-l."2W#jWz>aA/mjcl(w؆g.5kơY0dMŴNKVy2wS͉V_M@^d1s,{.%dܓ)i0a 8b7=uaUOy,ڵNu.Ǜ66Myzޤ |MK7^NSzLNL>=sJەąF5sR|e~Jy)㫋NFˋXMIέRQDAA042%lx qwubl;GӀRXo޸fӬtܮqgai6aYGNJ(w\mDCfW/ryZ7ik[v_6`@ٶ@u!AE:E}* ,*V$4+Ip:6` gwĩ6x?wguAOWo_ {ײӵg_xvmJvo_uE^bm|Ivn#FŜZTbNÓ iJ-g}EP3yOD.nYtbN1Ù u_oUJIS&E)Q juU=uX;ca$55e`OgzDy -P%:ҕBiitG}sY"0.QD8DB*"T\_Q9ݕTR=ӕN.]yu:Ru9=-/@J]`d3ǟV)aՂ/CCIM {~Kkׯݒcw'=oZTbVwF׺P˷~=YI!G6E#*U8P\o2$.D ]{z nmul98oSn_QTas)1c(9֜fB2h2siD\ob߹|Spi(M]5JEu=vY74$jfHP3$q lVW^[uNry?8N酬iWPzlJf)i Z*OEwRhmޮA>j 9 !qwv(f 'ϑXrvQ-JW Hi]v%@J&. +: P{l<_ՅHP E49 :vت @Tg%‰Cv*XFl_#RĹΔG\ZJP~Ů&R~3Z=JSM)Ŕz9 sY!/<Ѣ›J  :VSM3˳E6)&).CzwVmd۾ J<+-Kv4;yi-OWJ6A$<[C`yQ^ ݹU[>8"dhej`R) 46LnI~$NԳ_'Z_&'?C/Ȍ?% >^wvڔ@wݳ2RrOjyz >g4"E%(|g%l419?1A L1l>˅$nza+p~DK) .=ۏW6-m1DajR'@DWkT*"@[Ľ\R%S'󫟠7z@/؝FJ\f|j$J67hr9;ʕ:$ yQ*琉|.( }h!%qaz,GVFWVg6Vge1F*@Wq1Ͽ}v@/7 iK9ȪPyy2Ց؍Bcc2]<' iğ<{̑~p>曃W9RDVQw!@t.̤/C9g01 M>I}^OKfaf FivZ@vj.ѻcSeb1 ʼn OXV )[1BTGul@ۮe;֌ڍ[+:Ld!Oj1ܬVj׮7Osg2dY@gSu5BIEv ${G(=TAejOɩ*:pha50ug)"`d|Abvi\){TÎ8KfvҸ kH5Ex<85!ZMesyK+Pti29b JN,Z(?Z (, L4F@!}g@j! zb;/Iw]v\.+3R .,܊9Z~\0k\x ΀_2X! Әpj XAt~ȝp}.z5#&\.1z\nx8./c]8o>st2y͂UF C+p Vۆmo9#u :8Sba^pJ J>2y<^WD0D'Hhy rwR )huﻬ=juCet۟<vr CDH=ITƄP$H)oyJ Q|Z(^2c2}6mC<)zYQRH~ػJvs.h,zu:]҂˨r, D2"ONY_D **Y\w5<)f\?xc* #?Q-b ̀%[iW<^P` QU7lXOE#i(5i'b! (X_4N ":|c"P%O)qݩb %2s6)_Ԫ)gƏ:&28˅}*X{c r06q{_=qAJx8u%p5 E::r2p ꏫeYrH*C4ۣX#=GьZy$3jw4E5AIѸ=C+9 LZhڳJh 鮴uKρ'hE0kO($hH_J=(  ^l߿7mKd\y}hԌhNq_7dG_ܜפ NfqC)Qɯt VF1z@`}\`5QLT'Gײ8'KQN4rO?~gh>i5QjY YTR [Zly|zuSjmӭQl.lD\ϗ%9dr9ЦXS{$9F)"@Z;ի25#ghQ71䪳cjMt<=zylXF_=G ɶ|6G:juk' }H {׎Ȱ*?0/.&Pւ}5GY1aB-`ܒV[s[/@ ddCc82!;b>̉B b k1j*:Ut_OvS=ܝ-ŷ X>]^|]=j#Ч7HE?op^udf"wU:^/qf"TTGˏhzX $ƓJXD) |fOfm;heU ۂ0|>S8ыD$_Vs߭J8ZmX|B?=JX~jYRhlJYC*%v2ֱXYEԨTQDN *7:xGN+o%A$s>[TnU=_Œ25rϥ䔝8Vu}Ey5l,tw`XASEu^ɞ.;ҴR l2^V0YyBs$H8uR߆"Y&9]G*`,OJv]ڀ/|0H?D痽A8b ;۷mbIP"L#P;qCJU䔓/֏rGtcE~h"2`Aw-dlw&:U,ޛ|յ&^}JN4< Ͳ}&[>_vl9ҡ> CH0 PQ"ԭZCSD])]q!_"$!gd_ɂHk jz,/jjBYU $0#6Tl@wVQdt/!OIU%p&yPTjP+u_U Tw6+W0ƅҍ^A D'S[f8(X?gڤIgN3mdܦ&V-zVFr2ΉaRK8Mf:fzrUTm!Z!⚶dwڬUDFQ`ݫ@^ a-p%g*iǕqѸիC~8 ^?JF%;Q+38uorx/V2RϜsh)uytƷG̾N7%#XDen܉NҤ O_.VN Yt* q62XӘ jm[@^\iyZDۥv.6VCX xXX# Ir>CibDO?OxѠia Ud.ѷg}07EޑYuPz!m2B䢣[-E!UT<ʖ̑2]Z7S JGEDkT<G&L 3;;<|>^Dj%߬% qjJd hpQyo]na^g궦P9s5\[t*#x2,?W6atuc-g1*"<&v*^< iSCUby H@pciz'-Z ~muԎɣ~lKma)k8NGtMj2y3C"qr~ I;ңޣ: X2Zb#yp.>Ͽ\/5!$2tV. {K\U{7^~z@j&mƑ$q۶KKP* MjVdT !3˯GD1)d6e{Ed#>I ÝDxpeh#fLviSO?dl7&rȖt{[b!^pD؜i½yo?6hZICVHjb(C(cz$g˓fn& BXW2:wSP<񜭥ʏsq@'Z+Db'/6=Dz{dxŹ5_cBB[ y͈kMB[A:RĤ9i)0baZ m6*fq;X E.U2Z%WŒVPT>>q3Kqz" >_iraNl.{pTg'bKsnlN8iWGHxl\΃'`Qi%0e|, 5;Hk> W^s)y";AęC^0\sa12IA*aخ;ܑhFyyM$dtSjnM=3&'DJ;䴀jdeW)x@)uA S4o`?H?m'lp?(_N,[趸f4[Mwhɐ'g"p!K;B[{:!PW -eKT=2ܑ T*{&\NO.rP6 ZLyzb!]thwJJF͝=ptDq=;%͚k2)\jIMau1D*QL2}Lxf=M&6EB!HK鳗(ǁw=X"52mZK4V֤;Ny 6 "Γ"Ddש^Đu0^i;e @ 5ohw]2>r#7R+ycA6R)77q]$V3^ # %@[UkW"ϫ] _;iߙ MvTBy7%1)du$f7!\o>+囘5ۃӚf]#W0Hb8A$JO}ơ݇p;%CkԆҹzӺX1S?A^y-?:aӄ,W:-5+un :7lP}ibSQ4R@.fwΌlda$,`h"|4{i'Rmxn2(䧐Xb@(Tb~-M_'vI.\[AaFn iI`,"Xq"]ze">y"3O&(x^&#F -γO-,&Vo2-냠 jb\$Wxn5A{p[~⭛IENDB`plugins/limit-login-attempts-reloaded/assets/img/features/icon2.png000064400000025040147176754540021526 0ustar00PNG  IHDR:l)PLTE{zupzuoup{uoZ+Yvpup*{YyXYvpvo*{*d念XMvp{uysxr}x챮~wrztT}~{y}w+|94J.Owr񜙜B꼻뺸E0봲륢긵쬩zwzηƭ¿쮫|{xts?+*SL쏌tf~d+Z蜘3')IDATxMo@3d0s]GN"!48P>TR"!E|!@B@q\?ob'^bDcb^V>Y; ) ϼMkJG;L)˞\ I<}y'MqHa@c*/$vV)85t VlDOQï4DáG=Zj D ,o'uXc|mas(>NJgEgg2㜉_Yם+0sIp.95 `cUh=x%"v>Ry*ODńgZUH$ABRs+۫MO]aղ3ШLXxLWBHf]*z49HX61Ą,Y6u\rRffȊVf*uNX;BRXB#F^l9 8E[a@bE9 V/?R%ee:.%be9䄕D>7-Pw ;EW/ߨ *bRE-s_UXx kDd+LXDbF ~4 qV _bv*⛻=5b5*01ݽzk\(_sDZh0 z6[|ŠVrDTRѩ9aso}$6cP pPqZ cWl愕:UI-;PXGV,g>9a%P .acgD W̩';0QkX1}3EQjujZt1\y4;%*v$ ēKOwFL#^,"@*ƂDB>z7 AgϠTG{`GjP~޶$kKO8qiJu-VO%MpP$,}lbtOE5E7sHqO|Uk–u|4|JŇ.S 3cg).Akrbj 豎7.נ Z0LV޽pd&& 0>wUNX_@Mh=)a3ΕiWRAC9aMzG֯P5ÈH4)O"$HqH=n)Dβ/O ^տ1`&,O I{kiÛ=҂aRH>u듕\q|C+ưaZ֖V ֲQ晰(A{|l0C6D<,Ĥ6U)0LR|qW\"mRDSb抄R^OD96__G&syǦIP:"\º㩆 7 rdlJ#SOHBY("_\Sugxx[zIK1 Q}nCY[wA `*vK:Č>hH++5_`" ;8'g;G|Ǜ5q== Mm;9sAd6Z$Qt֭ت vK}7flCwxwʼ(O,C%锪a.=0 #;o JM AoEr&f[/L0Ŏ36) 6(D_Z+Hjk֓yЖ `aM,0Y!ۖNV#խL"^+T,:8T*,GΡףIk3 +?b9D̅*"Ӓ--=3DLi ² #uZwIkS +tkCD$a}yyrJ5كVˣ>> L Rjnmp K91{NBXZD&{]QIXE[%(E#@_Z,R|wT]P&!&,"g'ëg6%i/bd$'<{N9ͭH:_6A83~YD]v4Kȉ|;9 amn K_'9gj 8 D<7yPfQBkg5IMXd[[$5,NdԎ`=KZD J[! XΞ<9[,T" V&uV$}ύw_LmK; u wjN Sֈ f$m qRN.Z/});6VV]w2ѯqb8SsI)s!#ycER QBQpz{w *Yf=Eֹ FFpzֈ Y.oL!hkiL]&7v̓\s~` ˨p"Z0NZR^G'lY?d'V4 pmE<Ԛ*w 曰 b)4UeT;c.PϼnV|ub  [ׂC]3QO8_NXƔ~㪊T9 g}pٝm%= wvOO1 %zBa%o²2)Ks\'ZLڲp'/ԉ0%Kߵ(F9|q;T5ˮ|6@$,L!?7mt)%L\"-woT)W(#+߄erS;b9KbZ0B@@Z4V?XRQIy9aQ۔|4ت@ "C1kX,gh^)(TF'V[T/W nbu-9h[iY+]_*csXaťZr Sq .JV=€N<*A`g۩_P5 cyS`!le5VL$#˥>9Jݶ$F@O4g'6au^M.} d LTFQWZ2rsqP(!0&߾VoXN6gW&7,;c~.0԰sʈ^{R54:(|lҜ%W+#!a*ng#l8_ڼ]fʖ?=Ya=n|/sקQgZB1~!tW tz*uJJGY;ČfC'a.51{Y"~fC/g^ uuxDXD^Jvc=G~v~s%70f :FGM\TVE7ڧбjn1W=yOMWY&t\r֊*F) rѻVi6$_)qͅ_L%~R/d~> +ƪձLX0QBr4zֆƜa`sՖ&,r=Ј$Nm5ݔzLC_5BJk`ˠOXGXii|{0q2Jў],-tZ,mK{ΞR\bG.f|"5JOXzZOy՗i'Ȟu-h8&053q}@301";BqGfl{aa`XtΎb2s K-,u4I.|C?֫0,DEĹaO1s h)CetaطύUaEN6vezg^,`XDԫ1,o}>7>>}|WŷZ;_z`ׯώܾp;l JT囹acXiKՠ<NɩO(ǰ9#4G4ɻT>JtrxGg丽LVXa:TX:L2 ˗zaeFXna9y*7r Ҏ ,L] a!,BXkFX a!,BX a!wBX a!g{w8am|ENtk-rHP 7|13٤v., ˅raҼ-U.҅ ?r7n2ʄp7 k l'*R0B,1K?‚MuۢXm%akyDZEgꍰU 8Q.[ kܵ/uR%aeR6)+HN8cL6a Y0!'aůP)‚YĘb2%,wFXVdVIy-u8VMPC9% ja6VNvN)X1#au#4xʴ`ǔ^ƕdWX{'?ay-(6-]|[oՈ,;š3,DR{]Ќ`,@ 8tú8eSV*K{T}?cuʌpiuHVFaTJX:za7,~:0TL6 /xR1\X., K n( º/8kuWCQ7,~NXBpa k8S:ʅJVC<P̅ra ~3+{xI)k.K]RWIENDB`plugins/limit-login-attempts-reloaded/assets/img/features/icon3.png000064400000114021147176754540021525 0ustar00PNG  IHDR:l)PLTEZ{zXZYYzY+*y*+z*R[juey]eyQ\kS\kR[kXsMyY9+*+y-XY|ւY=X1Yn[:ڴFx]);͜\WjàpXo6twSj}Wޥs=ªhKmc^aگ؊WBpR_oXf\NRbrTWܘcӅ:hǷůlSnRevڟ՛ӀRƬrSv_bWjaɦplZڷڪ/UTrCٳ؏{οe4VVVUUTS|uOHwnLU8K.V}]5F)IDATx1nA `^z(mZU(]%GB:d}"zflk{}lrŴ,Z)-\<$&+ZRSDhzA5}yiŦc]le}9^YoK%-rÊ.}1c0ie`t9IH]B!ʄ20eN͔)pl,>/{j`I<.:"E.-z\KSB-sX[ ӧ1D[Js l]"+Ȃ H!3HM`nRW [Lz@KNSh"Pn4d!7TFHtOFHe Ng73]ߍvAP|4l0dnʹz#fm6ŋG턽jQ=! xwryPGuWRnP3tO\ٝP _[?e&攲be:okM1ZZ]sf&t1Bբ69t HÊr:]ɩcg*0֚b΍_V xJqh313S4KF(#O $N~X64 b>",.EyU 8#h"L7Ӳ?3g_2Ţtm"pĻ&rD2SpHKbVrGZZ Ծkl4tUS "`j=Q_32?|"YσVO-a :r:q<6HdD$y ^Cʪ%7rpb8б!~|{i#3,ܤKK!Ks&0yiO PSblb,RĢF^`ECk̙wxKt9 9>|yדN huDr6Gj+Lp  $5=_dl1nL9dfV)I帪5DK%Ca2}0&Y%)ZV]ѳ%yd8-W_w$u;km,  Il{¸:KCf8%Q=Sc#!f\ ҠOzMEiE#FQL{>E35AS+0{CYԀ ^تnHg<>0u,!gvVg& )@cyK|ЛWDUD+*ª&gsf]PYNaƄ Ia -&wuJiJ%3{ìLrZ {3gՑꁮGRpe;uᡅ%!Z? 'f`L`tj]vMyWkW4|F-Qjz!ǝz`ihh-E3-k2nq5Y -^ۏGA%ik> #:a7dsl Fn _J%pd263Ϭ$6Vm]( (@VNYh-[u:Й#P^ٮŮ,ؔS2 aV{ڸb}ުټN2KV9[[uli7zan>jkq3k>W#ah>@)2'0oXxj e^(jp^CqYOV@Lx˨yi+̶4F6n1IuH;-GwJST[)zx%)R M ɉۼRCvֹ1dvȓDbPvYaikzyx&,귨 {}w^;7F,H CBR9?,hPRA)$aWMNZ7]  "I3E'KqGLw1=kH" K&MN%nGYFp|#PH盰Ŗ2AeZZ$)0ؽY ӌ=0Aed@e܄ʊƘеV*\w!\tc|:RgOݯSG&W |.?o&Fn~Cץ!D]mH/ߞL&Wb3"$b)Dhd.uNpSVaT1q:u½H)l~d:L{Un)oOe75cqU@1kJ&. 8Vp|oR8 `Dz'YBʏ5S :{g!YP(17!d5шmi:(Q_]z}8>6q93߼<1Ec~w$dwV~|Vo{ˍWEּeH+ #Z4nU6EJKXhFh>]R4)" Δ#~k&(dL HȸaP {&uyd2И4J_ٓaiÆ` )r\xqJB$:`wX PHglԛBduc2GJG{!C!wNd0 N= ƵA`VTR((!aЗyvn4~'e/ȀbA#(9V ⱛ}p7o֦Q4[y|Zj9h͌YW>I ʯ[/SgfXGT!MSNtBP55++QvTѓdf=y\gb@1^w{/K;3J: Y^R.J^\&lkX[Uʭ„.^ PrB8{00!k#tz"UɏXb3` &)%!,!_EF ;&#yhOl^X{ Q9;Df˟ia|\u\bgAت!53EriS*AYܜfeVVT DQJE5C,iJK#Yi.jAJ?UAnIk5v,_sbj,s_+gႶ~@ƪOӌSWf9WBv ׉-^9S;%s%'NgϜ?… Ο|xӥ[9p:E,̣ f (axUȜ YZb(.nuB~[.8<{iD>8俪vm5%Yt9@]B*Qq&VTR5O8IP'(3L%|ΰ?^Z7Ə.# b;<>FT5Qd`ɕh Yu_Ak>]-4ǖ/kQ1UjB"ؙ̹]b k鋮 wpFl@*יc竗=vFV+ N/ݜ1@Jx`0v}:84w3NC:AS xLb%DW;:+縗=_}:SSՙ).RłL4n^ѸɸTU G7Rm-*JB-"uJq.,WB4k'VBVC5.S7qg7V{=衁VA"P|:tEU lw=QxkUXld{A9&&> R5e b9]HVQ1R⨿:>f[!$&Fա#,- 65$rղ>bF³?xv2ʧr)䙾e1֠L)Y(Z4];IEvkA|bGxE`g rt;9B梈ea!4h4=%хFaͪ.uȪ͎Dq pRlYy2a,|6EF|\n8kU:+|9ɠ!# pܾI` uRtt8Y %!]b82ZI(Ϧ ZA&L:aSe)M;S)֜WY-og*.@2:-q Y+XNKх*s Kq'0u]J!9LݠCK4`mtϜ5Ι hP$^U={jտwG wP{.vcnPrd<4rKF޼'W-baEeԏa3o/%Ps}8k}lk6j>A;TS"5ִ)׷Gn; `= ^€9pYƭR4PDoQs\(e7Im3^nYb˿⦥tu1ۂ;}B5/cv˦Fv>}fgWhldЯ7m2~D$}~aKʵIWNJ%RfhSZu7̝yNqC,4OZsquނ3,=Utm -}'N 5sB`Ti4P jqMKwՠ2 P`q7D!lpuOC(;ྜྷ3!{ ^"9үcBafVk|cpZ. u9Y:>4=&>8Dx_zTEG&wkQ;HA`3PQ`O)y ,wt;yGz/޹S~ͷ~nLȈl1t rr $OJ D8 s<蕊MC29:~:㜻wKJ+~_B*TY$4w:]xٺ,~;[:'un7~􎎘GN,ک384u FP쳺$oX٪\T9qFZ' \"doQ|rEoJ MCQnE;M!:\5vŕ5ݍt fOc[D$J瓮(%YNX]:|EelgoήG* ?8ө^议t2d2AF@ &`5EE1\D㖨}_y|sR]uVf/w|;?өx\ a뛣CӲ+lƃO6/inSBS#)yhcJ,-T Nʡu&Q9khM` "ׁa̴yDp3xNLo7Kq:WQM !XɈ&S/VN8z!?c8A7fD^}dGT-tN'VP@n밅 "L\kH'mb1j%O2`#6º28i\qK=eb#t -bhČ!XGK]F9B)8WypYkB'!M:P%ŝt"^o\bUNMB_*5Ș2KHiI\۱8L) &{E>.m'f%H0a)6f9Fp9dL{%^uZ{|J:1༷H0Q2asO,J&nGa}d]&_\gG-[XݓS\ճuCGɊB,4N*y ~ŇAdJQ2Fu_v)4Fj[iqu@ X4P*V.ptMWy^6?^8ɵhrɕ^؊ގGvfr2ݬv(ٞwϩ/MX:DnH]r,PoJ .Y6W$.=m~ xE z1^?~xkUӪmn`IՃ NesxoYΎb G!@Y ;W8|ڔuV`X%N ѕتn*īN|H€"Q pޛTb.&<)蹋H8-x ˖O$&Ek,Ǐ<$\8#A{D-i!iG+q٫x(d.G 'd$/%bBl>l\Ty rޮcdܠ=cNNI NBY,VԳu~ZoVyQY=`#2PU+3yjPIį]|BQZRO\%Gg6DhFXW5+n$mv`w¾,@W0(Z "+0"Y]LB#J{V/k`߻v|= ٜ1T<"|1ujbʱ>.]8tu`+ŀZ#;_ =NIt.*G#yN#O:c?DRhۇ sP%+GCФ&G_̂ʘYWN=IP!MSz׹6$SCLXgȿ{`xJ[(!) e`öEqǩ=lo :5̹Vr""LS5I:=I&vfg20p^-V;D@g[:c:,"$x)M1Lŏ-s'öx1IPkp!U:ot3`Gt!qш9Lb9[T2sKm^:tGtl8gV{hSefcJ4Ř&;dύ!Kc-]#G9!j6藣Wet-G6 Hz!$}3@]_q+bK.c69Y{>\d#߉U>c|觯]j\Cn$-8\EpRD҆LOĮ=z]TTS{!L=#/KP[`. sbM)zB!D/MCX쯙4߃p.nEpSM7R ErVMF .֠6$\6j?l;$ qbOIfGDyjxpN$kK:Om#\v,L9*B{ٞE;tm.YY+Ocz|#OoR1訁êichxh잋įf$( %̇ǟ]mw-[tKט`EUONm zo#yId꩗XI~M:^6jԇz N>TpQ$` Te B/mȄY(RF+X xxٮhx)Pew";yɡx_\^ ơ\ߊ@w׏?2ٸq9'k؞o#I!UsU$tѦxgN /bJXx6VkQ;1V`G0eFg*S3%(YjK}8nF ݯfyV$ٚ 91ӧיřc&(r`۟ݸrW޾yWra}h!MD[;16YݶpR%,>~p:B1'p[ b%a LW>Hh1W\0tኲ.l>'MB}>Gx>KF aX\j3Y3'r?1J`|w&|='1hA9 l?Ád'@ A"ĿIg/ 񱠓S_W, Dz)%dj-eA H"9M G@ajvK(CeQ$ LrZn0Oܖշ[]ŞgF̜kTjofwѯ7 &S`O 0s`v2"dj|ȄEY -&7QNa- ծjnx˲Z<+ >^'_j/?tQLw&Gbv"rpqO^ݭ<CGD(9^hSNp<3"Ncjɤb2X8ESp@1VTӺH PyjpY;Ûe1Xep;3ELLHLZ,2{%/@fcخҭBcPnơ p &mV(vxm9n^sf1 Q.emrUi>*j^Yim3/Jp`^[2>d+C? ղh)J0gFЛDpX""ϲgPjNX bkhDh ǂ01)Njpcq퉓\s9eנ 4%_+Ճ{m^tۏ; cs,?>vk܀iiW<3I< f7(ئ\s fOvOC]vELn/tGbM=kGUU"ǎ28DE[D9ns҅ pSÌu Ԕ'[BRJX d/G⋱ٹ1u+#Gnj\Ǡ/tt! U걏Wޥ&+f RI?[ītʀ[A:[m} 0gn? ¿S^0diG&F,3D(DUf[:5.dOg2`J%^ua# >mAU shGo6Na(kr[ix&O S7`Z&Z}9KԎ1/ٿ=EW(qڟGjsk u@=.&FC5 IթӃ'UhC!XjHY;-Y̓/:8Ou>30s(^3AJr\ʋr1'%Ke. ?tFp*)fEt%v8]A7l"v(4io'd=܏8,:U3aKZ9a-ǐ6] Ѵ9No<=%Ai7reƜ*KK̦\5,WӢ4s$hǎۊBB%`̭Vcy(XtS7On]y4hD~zm&rJ؅]LV*Glp#ktj9,'D+1(pIM.ұkxLZr ]q杣 |~^GGuUeγ&u޼B>p\ܺYI{@a Ň;Zd`s/WǦz/}%X;Ŏ D5>z`paEǏn |ұ F ?c֦!s%ByQyIum<.a@PPC$e3.YU178ٻ+WWCy wNjjpu+M1D p Md1O6Y<&bH0TˁmGc~۾1aa0^%s1wj5ŝZMj\o%+fek4!i0fB/P r<4Kuʁj4Kd`^'fQM Z9ITtIeBc0n=81plՉ@< dUoH[Chn:9wBIi&B >N:{uY̠srZ<у#8%rUG5.} )ͨ4LIS̃0_B˄pPO=g^`f(Œ6kmJ !Ӹ5;+7ŋH FՏ Re&zqV(g=&XZb25phf8g^X\s󅓱 3bwf$/z(n';Ѥ= p]s+訯,-tX߿^^M)r{^3QWLΒ04̚H1zZR;b(zmh=8wsMOhGB7p}bFLb ȲPd2{ ).ܨʋySϲ֪E>ei+_01m pEZ_j3N2V=!oXFYBOnE߬oaeL[W#5q|ңg2d~ e<듪j38/A鋋"PiNSJ35/Ih o 蒵;/H .=as^)$k[}-ׇtt0`Ԝ%ԣ*j,Q{<&Z !ecp/*F>Ty#X<}K~滷nS5v]nK ߾,Hdn!ed7><5d9XYF%DbYO|m|ADۻ\_MRʥBi``^97u-c5OxmLs4mi3h6u/36+vT%M$2g'g:ƻȵ0+2B,v(+&А=-l9x> p<3@!!ӫ# | qNf5\HIK1Q犙঵sEpg0r'Un5_p8>L '^ o bEnprO㕳o3q!|5B-%63'7?:bVzݡ<;NØ4 |P{ }ѧH,.@#jBuN+@y6>988 hL|ct[![ =2 7B0l)ѿKB.Y/B<ٜ9?,H@JNZIfͬORk BҴl֩Ţ)KGYS14߻Cs,MXEN,wZ`IRĊP:D^ÿL ,q,;U87eF7q""r.KʰSk|SN ۰HXA]Z=ς@/zy-DMEގPo勰=Ld`_&l9zm/dy#PW,!`p5d3d݈s]χ'xXE8 <ʶ_]kuMvw&fvff%n"jQb/TP[F,}QA]"__<=r#ivf~3fN| RͣLgRZk6E3 5[CeRN#!tyWZD-zE\s5{|JCZfdE RA,l 󉱗3k% Q̡LJ\DעVNyuSyĚy3b ~iC_D> HsMǕ o;5#&o&ӽt2%Wkm֠gUXYX$!aTDx1#BIj5"g#"b~: v4,ԙluܕ:aiGD!fdU;y}{ϟCօJpgO%|V xpEƑ C;иz.O]z-4E[-0k=L٨V&;S&tLU2϶WCӍ:I> =r>^ ɘK8&-l A]`gq:-nkFp*;P߾~: vn id#dY;9epHQ[SdB^M]0B]F:X0HqkPji_)%;Rn' ?sp#NKKi5pF4@A> q}T/uvL[zάSLIm\j:aT oʢhn(I?gFt/N: \G)-VR)-CB(*N MrufYR4ܞAb.8ίEt1a0:*i綺j{>PIJڮ]gE,PQ"OuVńXiKGJ:;cF:s;֕(o E\9Յ-49 ]~THIi&sceEm(6%¥Qku+V .&0κwPYx蹤v3upM=Tӊ[ 8~5xpBƺt:e5og.Cll0xW U\2T5 nFjZ⏭Br8" d@D1h!?%ɩ%u4Oo6 <{k ƻ#X8!E.Q̛.~O4\0܂)JF# CA8C,$%dEչkBեH8y*U%.Y"xh|E'k:vٖv%}gGDqඎJ;8+'vʶPَ],=*oMB>@)"~+!]fM@R)+~KUGOLÛIƃ"sa$`ǷkUa٩$lozihJّyvo-еߛNKT a9tL;Cة#7Sﵞİf͋.̱S8T /8v0 Na$ fa"x ` H.E93!pKJ$$t]GHDž([ a= &={r5h@x{k;PkE: %"DMױlgY@:Oh&:'g,dpNP6Fpm)2τ=B 1kADK]иĐ,  Scq;]O ]Ǻ_O@դ~׻A 7cHx9_41~iapjI^ 8LUa^u%GN@n']ʀYPRҌ؀(/62V8YK[L^o1e=jlLW.,78nT$c(I@/)WlBz.gȖ&ܫ/?9'K($ OE ]oط4Xl;ZViBIPb?aT1%HMǰ %Vw*<I.RꎍJCĚ*z[x P"cI7ym\vWgh Av 9!CRk?,PE'.Lϱ̈́ژ;$ake^(:dԄ:A:} Za(I.'%mKޠpYgN.9R'b4fM?|wiJso{g P1:eAQy)Jh{ :P-o} oPY5h, Os j{ۢTR_|8Lq8 5S9}")m$.ƍ1%Ns2zH:qMҪSn箠ݷVdՑ]/x~VQ؂H%Z'(&<]55[^3[Z[k?lgJ]߃ܧ"D]:`˜잤.ԁ V-擣1%NNVIGJ[D KߘDyPD#Ѽ>ȁWbB;>˜ =&I]WުcP7͆c iR!e?)t筲ܜׂF#(Iq:'ǎ(w޷(O$Xc-`1 mc +ˮaCMԞ{ ?4:nsUG~ޚ7[ E+w&<下ۺQW Mr?,*mrnIFPL\ [CM m-~9v&9ȁ(Mbt)u+K'7IuU)aqȵW4~R6PļI}NA]hvp @(Ǒ V:cƱ41$nvԂDB΄7_cK|o>f$G[sVEid'rձc񵌯y(;{^ᙍ&ta O9w{LO6R:]ӏ͕ +Z\d"vLFW{lR)f ?)[tׄmU] P\&7',J(p/IY}- wDW ,HM>bՊߪ?{hI4܏:Etdku=a|XPyexEQ KٓO0H[D|3!=z ?ǘ?`Өy <ȓa|GJ55B^ кp*3MJ; ~{G=4 bىá 0fE6r1e\Hk/fi흈^Ys HJl[H13<\!67St+5N\fզjvmvn2x7UߌveG~mVU7MmvWI"g5:R5 ZOTd'`XN2.xAaQYnR'/W-0ɩ?WkAm# w%\GK!~PϾsvVݝSn}pUTLOO7A߹,{3[z@Ғ븾c v7rcp);FK3!`?r1NAw1챿?ŵ2 \#ƅ9h 9_^æn W܂ 7~ ~^,m+PBqSW]I}ҮlL qrn:yJd vDX2/B+2&W+kS~S06Hq:DL|B$9h" xo6VT+cG^ߧJPxIb7~v~oVyjIPxIc㋕,^nXXieyw#{Mw55 [M(&)dV7Lv>YŇ$żxl=rnp{W& soYa` (XE*\j Օ,\KxVYz`ݸr6:RW[~CZb.xf.#jŐ6 ,Y)qyNFL{Shr' 0.p K4lmA0NQ8leὌ = ""VM Rī341וږi?2?.Wh=.$t58\xQB_A^8l F/G9#*NDpkEᇙ=:;8 qLjB^4WSiY~Fn@?e36y[na)Ԩ#k켞?<> %h3 V F%ntK5_~|HEbrGg6'OHoH҂<1ܒQS74dOlL s 8w9`( b@sҼ| Y΅6&UPS}XJ,*]_\iga#aũfzW5>%ih*GHR7fb;]V{ ʲͥcOw%GNtLI"ȸexp\[br970&A.lc^9#&a %tBf|K =TC\Wլ|cznY%_xR)w~%ۭjf4Ѕt.|1QO]ʿIL, ՝mR9edFZ+ "f+0%? Iv[P~?ddtca (qc7+Lʒ+N=VW{/&1~1͵b=q>`4 ۀs|+cG2Jo rJM%+ ) ҵɺkutpX1~M/ $|F-a7<; A'j qH/LÉ0-,C͗"xFc3 Iõ Y^O.k-yY51Ro*cV}lYgV| #> 7pq) O~Eg0M#F$'q3> n Kj7ubCF"|(l7^;}Ccw:Umfd$`e])Wxž0ʝpuXE \љaquم_qē :oƮ:fE"Z!n]by=:oI}Ǿ*06 Eh-tb]LUքr-:ً89 JkG5 Nd4G+-4TF&vLxyg0`8==qf&is(8}+aRÞw5Z`#M{}/S= 5:כǎPN#v=S6a[EN .|Y>>`psO(0N9dXBIv*) @"5j2}Yq5h^B,C[ m*@O\E6)g2YBZ *BH{AO:$vvS6L2F_V8b>u![%/izs-GȸR-y3)x٘ݍOltor>L[-.%? veQ<\sal]{\K{d l/=Yʒ"HxPByy@^93~c,{g|gٗE糧;rky-t7݆0 Q a0IR\"/f9&ovYNRBT˟ Z;$k+۸67&`pD0Gb^g^rq. (0~t]71s$CU65(ߵ8ҶJᜍSZu$20DD}%vuq jY G@Cr<ꂃ wQZoqUgGx1尙ˣA9;~Yqz v~:(|}'cS{2VxQv޷Ʋ ;(0?>ԐNzT-2Y|u_Hc H>f8p]f.?8d(N`3-:75UÈ6v OP N YʬR0OE[:#Զ/TDyYEwߔ?:]-x#]#~gaod1רyHuΎ?:PSSs;P85`nF6VJNhAjrN*ɥ0Q(A $A R\AmZ}Tg . *Gluzf:T&YJ-)}9׫ L9|bk"mLӢ%t0L+ud4c0en]3zSʋ<(Ex?eP[!!j%I?=~1͟ : eN6g_ڬu zKsN"mn.%B# BU,;D :rjtͰ~*-!W"M?׀ک%$;IFo4N^~^ge>6w tr4zɮקroNn*EK,UJiq2baG4 7Շ_qy JtEq0$uTqI3-4G ck*S G\T.1Zxft>`@xwLZ% @R"Wf}Kiq7'h{ahd E ^G4W)`\S(;.TQӔJH0-NtUjH9 64}(&%,o wFc!}!kwy®;5D!|IƄK/ywɣPMa~pʻ a?W969=>ޮ*)쫨ku5\b&w%X8PP+MGW@޹`ZC݃ÁoKO&^>gA P&_u:ؤ0*AR‚ ,""HOifjW 0y]= "Ǥ"w+iŰlv[荣|vxqr]ƭ8;2XGV8 !ಃw0t-[Š4fDQ :\]A.She``Q –`8h%/Y8jpOq(YpQ6MTK';N8r ؞7Oބ9(?`r#+[֘ )a5vD2:%,7 \$V@Jy)vˎkgsF@qqu}}iA\Y _L^,O,$}l=30| ll{f8Ix/q4cq ޫt`Mh @G ZOS*i==V3v5ļ@y+FvWsNl pVAB̩ ˆR86֮\]S( PBC^kUYn`ѺIqAatrBWzM۷/_lfm| SBf2 :*Ah*|jeIH@I܋\6,􂚱 q6qv+=kipp7k;> P*ҌIBN2f0C IMGaDqbʵZ?3\-1)n$wT#s<)dD[3\~$?Ӕ9Ef5& ȎVXF Ыݼcݞ9%βjqym XQL!)Vq@jfK[APt@LI޳i`u #D*dyAąⵆGkT6A"uKTۇ;sյܢnvir jV!âMU)]kGHm/qVIVD}LG%]uㆡFHBԆC99ߡ:9rIi 4Y4ӼHӘ XKѼ*u+@YV_T?-ŀWCWħB^|*Km-c"rm0]'X^0F2N OlgYcޝ̑).݅}AQB J)4FǨv-$V1| m9k򔾕78}v*QdK7je꘭>ZIb3o2Z s +|sTy%N79bLCqQ:]!*Pf݇1LՅA:)AYĺ5] :ϙRj(س簠61`eA1:}E^'8aGQ_6I],@,DEZ(HjMGV4aimZ.H EhΡLe(4LM b3…jĂI+3$㕅m5v{KC1cwk;g8lhL *-K3e AmVC~+( EveʊL7Sôs[1g+qCz+ŗժ\2`:)s$dc3uLš4DOأV"Er1OT8S0&VHw4Iw`YmXI.t`/q^?1OGV;Cw8-R%֎tviMT*(Q+e:] Ѳ@>xt03'<}vd,_큸 =bΠóNI.V\M-ƻ3RJK&b"4s0W#"Ao(/%xsC:I{^w'ȃKMͺ6>"e8R9{i8bՒbT0M|G+uch%aeHWy87>j6'_fȎet*#;6x:9-,}O|Z΍FŗDW3RO%iOxDiC<i'izϪ 6r 6^p1^lOO1m[]ww%rU(N3xzg{=?s$XLdHJLf3o1)UКlq,kՓhZvS1*l fTW8]¶+ذsב°Vnu3BZHKd 4UHN @£ůS.;mt׽~ qES2#3q\VT̥U0M裯[YxJ'Ӷu8*On JlVVZ/_|<;I]rlYmXEod9 Uїyp8^V9"+n ha{IP8mT_(>f5x9g>73ϻ/Zb (SߓtלMcW0*He IX)TVpz6U;R1G?(Qd|{\OB>c, ZIo$S˜N9ΫCrJ9i0LG[Lu[,z0v  8JΩ Pn)$e..U)UqpJ~KS=GKٗ́Jٯ%1Fwlr`Pd' Q'ˮMA1B1/@dHKqz zФFb7T0xI/}/b$|I4μ"Vy(q_\L To9 *rmK-z2WsmzP/k2E/B[p7m{#Q7'E(AY?(IyIs*/qrEn*?%?<$BWiTǒҬW+b6oW@3y ^x* ~JS}.j^џG2:.LBT@髯<!NE^Q& NCFܤŴt)1<$m9*J G?7¹~Q $X݈C+SG<ü ˪\!UsS*1NU'^y!S9&EC8B8#X:O'r((*߃iP+N:А<&6;ܷ 5QOZ֖cLV1BtUJM:{4:M6UjȡO]T9ҌN߯R*ԌCXWh) ]"_nG,/A`H40kcpDOv:PUMz^dOjpVѫaV:TuP=(iR$8PG>>* u*Ʒ+GBs;e(]|Y蹬 uw,s?]@OU-)iR-RPד fY#Z߽y(n PRzᅮ&y;aujո 1̨+Ŕ=SQn{8_,/AtNät~KuH[Y$.tcU`eZWү)g+Y %tioD8J>k,Dr:I0/={Z Z.SK̈JCpĒb]D4@?I^J즜2zXl Li\aXRZYJ%X!vܢ: UP jӍy&I?t.eY"kw 3Y\ޖUB4>"j69^D7wǩ*0mƾ4+D3H %^U*nǶ)a鿞_|bm"U[ .LL*;rMMԂ]**LVHVNf*;"BN}Z(pwmg%87 I$'=WiU~^:|5\;L5@C,d\(`Cp^+Iy=zX"5KWI|Ȗ"&J2-$91LB!;h@W>I*Om]ok 6{V.4LR!|:bAc IC*.J=:AV. O˕л}+WKs0kRA6{鄟N af&~pi20 !CDd]j;t1v./0(?NWQIs罆6'%kf%9l$܌EUE* 7#^M@zwQPȖWPAyt1|%o>nCҤP&n"v)8MKٷbYk(Њ^P,ޣ}`y)P"=.hr\A|V -&Tp?NU\xu(*=i/WflPar]UISaŜ=`AV?ӑ 댏ӠfzVE<5TpZh`GKPJT2;s@Ac5<`z@X31C+ x堓/_7;/(ݫ"5W؋^[hˊ sfOP;2}-f=ZtI8kѾG祸y45]nѯ9Y8xy6M Ҫ_sH{lh$ʠ 5j) r%^U *-ժ 0G:=7mY)it1Zup/'G* CQ#r!LBtm`.,rëG~=? Q3̟?)Se96 ԏ{uA{zs6ag`ː4mos2M;dlӬ39A`9ӿukCP6͵?t;s]$wvl$-NW9n"j' ϰS^=DNE{xXnA[W_G GICO=&yxS}C}~:9fHׇާ5#sntd5V /n,]UMmmF7Sk,i9pY/)iw$TYdzmPBQ@X+ιû^,H3K{l& Pie^}ذoGDKض\E6._}("62FUe5hhhUGPԃDY Dn%5n`mag[e|eTu(:8a^k|vf` (^ w^.;3Vd3jdR%þ4Zl\cP;0a*ܹ[ʔuD(t^V"+y;6}SP9i<8Iʱ^iVмEfĔ(`Un|Z9ϰqoYPSOQ#٤hfq8*aIRnBTZ]o7Urh ]o*ר9G!NA}cO̊Vg$4XQ0cl(p eyYϬb$qemq ꜏cW]oMY$tHM:I.x)užn[hWjj haRlhLB}B3E@Gۆϧ^y{xd[$%E`a_ݔ\Sw#Ax(%axǭ}?G5۴f/TG 5EtJtvyQ77_ˢkɩ]$ dxy^8 3)~6TK0 P. |8.d_aYAqitW`C,֏NcMzPXME袹(28`&(SӇ v@1{_H^L*lu.Ҍ\2 8*2y%2FHAc+6q(Llp%IA TI0N(Ca\w< t+]=o$EI)Ѧ+'!9/8SB ##."HAz]z*CB5r}wOQ}l*;.!WQvٟ:jKdGleT;WY'"UYe+OǹyuxĚWp9Exۇ"88ZOT%g'"8)!Z9!Մ7-^cv+'X>JNdjlĠ:W^ٯ> Tii6K'зDp8oZͱ}4X~]o^֖[K  ^,F$%!>IDfR!JaU)R;%u I8)*uN<|]H[wKܶAG8q^ ZpJIв  2(V-q "/b12*VbAXP !>QI/1 X-CJ>` 0`hú/~}O8EKs0 ALܪz.-X#}nf0dI?+ڂ;W@z+׺W>7 M" J؊b^( kn Dj_ڳd8p_o4 99^  ]""\<{}||Oiy(5TSNpq“*@z9rSym* O'҅ F[5oH׿pH*Gu2zGQ+Hk!%_pᢋfvG`tb{w` uがI箈M~0W!F&7bJ] B6"vP/K$hXE[ef+R~8/_>O]¯nU>R~eW&$ 5Ă?6wCʻi8wϛ-e}_'/фXzGLKUqB/Yo "G,ϡ_pu>7nӿY3{hvwcpy8l,!d sݢ#'7YE#9'v@!>" p]4O֓O EW_MK2SrFߞZHYDVI t>:U/9#1c笷>|6WO [pDi\M3ۀjǫ\ifѮƅ5Ұ&0!'YkRY#ֵ_rRu}DUƔN5ӃwHV\!;.ǻciHJ:4R%HB[cԭ w6Zo&#b=oh'Ne[b*r|j5hu߫k!~f>'. fÎ!"J0{u7ՂQXPii۰^`y8Y2'd͐RdG+Y醖pH Y̪BgCbY:R%PŐ_4-M/r&S׏B*Gu\V[A>%̌ 4 7 oM=}8,۳ P{AՈe^|l.&zu@)ު9܊P[W U3> `oL޼ 0r r y_ I[M25^I㎊+Lma%G6 ?Es ]dWQB>Iy̑ 9dbK),ĤT@ CpMBGԁY_Ic]8(1f 6/ qLӍ.{W^ 'WSOZeʶ%ަ$sQIENDB`plugins/limit-login-attempts-reloaded/assets/img/features/icon4.png000064400000045517147176754540021543 0ustar00PNG  IHDR:l)PLTER\kR[jS[kz[es{ۧy𤩱ꇋYcpޮXaomuչۅ|T^mblyаī~^hvfq~tt}=J/IDATxڬn1;٪"TB UErztdLٵc`ϟ􋥘x1?R&_EIaN&QMU3NaUC#bE兩^ &c_0 2[J|F/D aRl*rѝj-܏^n|$YVTѱ/6" 2 Ξ/ GmDR͏iy1)[K! v030wQ9"> {Oa6)`m5ʥKxMMHE6<:G$]0A5LqDw? $pVZg$qR@ H*:S^uN`IB!efj0.dQ믿R^[X65ҹ!g|}C|B} ]$wd1cXvTV/CF2SKsz c䙢eD T:`};l3]eJ,ģ~\rb=(݇ڜH^[ L$%ڀe+9v];S ni5rlT~,^\`$X, `Bkݦ_f,G)C!Bo`Q (JzތB1q!!XaC0F&[zL+LTΤ0ϒ,f&@1Rl!GqQ"D/B= to\!.H4bdQ^@.Ma48kܰ[^*F$EwTKY^H$(Fk%Z4@mb$e ԬzlJx ,c;웸[̄f UD?;>T _cnB﷬ӡP*m`RCkQ1A(7)Ur`h01l1&z=\7TTi: ާ6܁@0J$U~/ElLfV'6U,r ;2*@M>c4M,uAS=*qAC*¬;n}=SQs=E3Hjnbppn)Ğ0W̧B 俯{@(BɅ]q_p͍b~8IřAࡠi$lsw tt%!9K Ol xfWuhG%!6[  \S (B3',wnr; ԛ՜<7?{|Ō=ۦ~JeWa9zWURK1B0)pHFcÉq{(F/fj(~n֊vs,G׷=䁃aܣ>\Ao83+T'uWY 2Lb9F/{0EhSZ(BCC 5+\1LwS@t&Q)u[V>JbP$ߥ<3ʨndz$1my.0V%&2.P szWwz#lO!qaQdX-TJ ;,C^G;e8oڎQ=HӣQ< ?0٫{A_T"CF%\=Lg !i :95?#k+@˂j EqE-VgR) ,w)mg*ctA5qm Ҕj/eO4 Lb ňfްʩ ,OcBS[qK_6T Kɽ?3ʗ6|c2Ċ+'L})0 f3vM #Þj CtG.m/2KFnUpcu]% udSRx^u-w^nE _Pj/2?8v,0-xw4ҍTn: wQuzys40,~!!'rp8o)U?hYBqn JR`ڕwT8]~_ݱ " ]kϕWD ֌MoTk,x7alCS"e $BG5+y%#ӱӢO-Ч%6u4%c:" {L1Mdԃ>*2ng:QUXX|Z. C3PWjuW b 1 \RX&}LU=}Gr$/:#KOl %g 3ڠtտSM5 @ 58"eT/{l4;寕X|۝)6x=B$~6QO?ۡӁ5>OX*:ŏbk퍳o~2{N|^P;'"Fo^5pqoE~8ElDZ,價 @j %`Ǖ::JIѤ~ݲ2czPVȪb4С&tkbktn!}m'}n }ڸ~dX&F4%GQ5O뭈b!Yc_^in A2P>߱`ݘYe:Oj8> YORQ5ֱ00,#(<8_NGd-x DW1fb"¯ 7̯&cڮVbu3}'Z+TP\Oø8Dž"IFL!xc$ݳII9EjC#~-o+_qA`K_EL2a\Qf:I?X{^ne29PX"A\P;up,fFop2ޅ%%(T$1P|O2lE?p8vz^nogse$^ ΕnV^S⊷ 0.WR ,ƤAb>rXpN6->kV g K w-@%Vux]^hc=}mJA^W=v͟$nڤCy$wm0V:5t=Ś^9?]_j} "Z2 w;ox*8$DN,hso9_愢qd'}LjDisibXQD;>h05oiNP}/׏_?}=J50"hIU$ձF5I`1dͳ QwVa%6̗eD'WUK:CiB}: L8_ Gglk]aVpq G( Yz&TZrchm Da0 Ziq~ ELԳs-ӌI?Zu[ 6]ؐD-'`m+rB-@ 47dJbbTl$&qsRFAqd$* 4mp&ʘ9EVmIMdii1^.[O3\%kY7yc. +C'aX<;# n6>$Xq4-t0 tNMjpOI~9< j$*-x{ԕ35ז'LOx&Zt4u(L[P9i6\%ȆLSOSәA>jDQ A]("\q9dڹC&ziS>{-#ak p]TsKqV)fLڮObHyNK2##b2!&e)-! qn|7w*x$ܑE#[=#=jDITeL=Xhd"D Er#)?^> ꈵO(Dyvw$R&ǧh0ޚdk  |bhUZ7@dkG2DfOoI~g>^Tj\wV(b[vGIm ˰:(@XH!DnJe]L^mTCgRkkpQތ[=%`4W'7W>{yz!xZ[(,_Z Rԡi5!zÕeŝD>x6`M-b3I.'g]24&I.$W+!xa5,CZg^Mqڨi;no. AV' eephK;%L7$"ĆԩnvjݷF). 1/NrVFؙ\&Bt8PKԣJ} ^\% 1 @ Oo^@>k*S=䪠T^Ȏ,'xxP X0+x-in={(x )O/wYw%RPgyvLgK4x!iKcAe8Zz|ӪyI29SE ѸQ}Q#09[f\l fF).H*~4ŶpATN%ni]S-̏\(-lYCI+]ci>9\]R]=V/@2HT+2 |xkԨX2^B) Ac'77H6#<#LO_ L㷧l6s/KatjTW~s]|w27/:1['nșScCD"_1"C"f1B7*`Sudyt?, 7v]&`P編Dh FX~t6G 7,'k= :  3AZ͌jE6Ϛ!ҝ'j7pOp:y79}mXw?Uu]V=vp\L@ꨂ<sDH`>IC R鏡-ED*لN K~mHh4_-) #fCF)^Pg^C1k.NuŽ|>YX}Gbǔ'buv+;jΖf24hQQ雃R^P@d 0fj-IV8׀:{ftSPNt} &Pg֓5Wi]Q!%3f`!g?0]'U+mrB"93 O-sFH=n/lƇF}7'R >mW'^gȲ"(`R|7m2ſ \Y``rB)lmFx3&lSbTFӭF!*aS1f9)!֥lDo@Ckq;Ɉe DL%4WcPQ CUk=Sޟ' U`W6Ӵq >~~쾡OLlsQ1ǾBc `|݉6.`Rm|oU"?<\׳9JSnؾ E̫D=5BOR1 HokB+B;4hX oͳ>`2rqNRA7N.oQNq5jê p,f=50LhF VUT+,UF)d(D{YJQ)7XWLW&\`Ro+ p>2(Zr)s#EP+hwI3 JFe2Z"M$BU3ZBiEFm6j !tVHIYEZ($;|q ]AUYDkF7np:i@K,mJ|+xKITS0+pӱ?۪M;÷xy^\ޙ< axU*W<@/2M Of23{̾:oK+FOqCzZ@!QZ%M9 {Y/b=7SzuEޤ&4%o#WC0 )!=1 þ:qQtKSN 21Q dB?*A"Ӝ{"|RX˗{F48tLh )n uT !0X–I,4 >b$ܧן?tsf iMp& 2IHeX;r|xƂѨZިjKth%U,Q")$:]Y)}f 8>d%p_u`gZMJPDNa½b%™K|OHr4g<:nwX)7Dfw40(+L9=F5 " s{n=ߟ',1tlhFuтtփ ;f7~vI-8Q >?'zl0͗AvEmF(BN7h>@N3:T'ƍ_޳jtO!J) oT2`O'dޡ"Ԓ㔠XLSN-43#ӌz3dFfuSV)72 bqdijڵ,"Ӕ"eUXLĴHRv,4"PV4RuzLv}XiE]lLv!:}i&b8rAFk!ӠYm?9ti8kAFWϖ'2+S֎a!pL3?2uwA:'5,82ME{-43#V>rd?dZYgB갰 RP>8UfNdJrqiN"uJ<p?!Y^iF!n\cL! YQ FXT6lW4usWAo,aAR~x o-Md&e"ݕbZdj}K ̌LxtE4<}ΠXk՚i{S-4! ;W;kD ,xV:SY~zi֧ϞY;̛ ̆L3‡ԓ]zqquo_l^\zp#9o/4!4=ׁu v͹  "x4}`&TY;ej b+R:= BQ]uIsֹH{[k7F)I= 5}!؁lB<)Mp} Fnxʋ6A3K N<geM"B QothVm Z$J3e2eG$. gێ'#yRZ׃S]ۭ')BE|*9Ivq>"̺S(ӠPLwХMEa܁̄ʾjQԼ+쁾=;j@dA"s`*}رmt*HAz,xNUuOZޫlIaK&7J .JЛr|ԩNw)jDi*U:.8ʸq2q;-'ej#hH+(O`$>*:*0,c ,jvԘסh'_?cygͫTDEr>OCH_!h0bg^Nˢ|f{N5=/4b9ټ-uҹ^y\%ʇn{䙖{%fՑz'KgNy%PqJp:2Uѥ~ocȺ;8d˹i' F %[C7y - L T?^AҷB-Jf1*ŪF 5h۶`ۂ[Xe۰sB-^@?|T*LSv(Q̧-x1Lc#?|%ny%n qBF)ߟ7cm;5|{>pH6m̬P0ow$}HT_=}JrP/^vu4bB +i;,+r+::њ*V0eG/t{'=ݜ;Ҳyr BMȾ&b Y(J4fS jWLC%6*f$sU!Yvyf\t\2xf9ix*EWT%dpnt uGV/ƔYJ&qhk 4= "FV"JR5 GF a/{\!t+_v+!5>vYjX"[f޺%E M^.{*5Da$DEqY t(:Ì cHu險Wwbӭb9ַ0Y< g>Yի=1Ǘi1^ [ w xKLSrX):♬J\z{CZ&pO(4J]apJe- SA'mdh\IuS@s ǝo,o"{X)TnNh6K̇PQ9"]ȎBSCHA ҥq΂G~6f5ϙ-•o,T(7(hP{Py :zq&C?dpɅ7WƖJtdåBkF@J G5>;yyy{xz`f!o.7)nb=|d\Za b YҟxmZ%ӗOO?11)Nf1e}X iX]Lni?>967dA蚚UsiЮG@!uU"DrYN'm4Ē)\ '.}~}egf8v'FCNB~̡jzV] U@5|UZPV~[76AE"}S%XFӵ^bZVӰ446 0 K":AA¯-cяwVBZK=j/Լ("K1g:j]S6  Ū=␡A¾ie@\ WKmɾ Ǐ@; 2]^plsh a7W7h Wn{rCҴҭwY2Yڮ<5w-R\B o4}(Z&Rv2es>ru+U'"e(X3M6 ;"D8{9ޯ/ѓi:xО<۳]"%\Lxgu;(hq~ԅ)ۨ#Nɏ94d BD$s52yj&mw1+eu -aDڍ(.")m*_MWnud-:N!. E= ZI'1uo^9E\er Fi'PBiVT[dC (emEuALt!j{WM-rRM#VJ|+T:{2h> x~px/9d.wms8b  HwMQg" @8;㪛ԔX1肓% (dCOrҫiDPbrrez}OF>T5ۋÖ|8_[(|.Any m(F;) s:`W=t%)m am]$ "J^}C\jl &(R2{ͷl\c ؈ ~^aN'S" n:`9;̃YNhtC E{&nOh_g"r3ƃv:7u2ׂP” rc0QIZGeDpO8n~X•Q~Ă qu3L|U&CKpɸgỷU WQʧ>^:ˉu`ҙݠtuTv@&dSq1PF8 <-[?²:f)/@ a-*9,!v-"2tѵV5@!,h yL"4 ϙV'Mr[W3E Fw; 0YTS,n,׶7i3>ndYa3\'<:;uLs'{afC\@4!x49LoNQ-jzXL1}2F琓i h\Jx4ػc ^i ?'sn,DŽ8|2?Q49~2͌LS{9܌RmzVi9 i$jge{@W52DifdU95]6vaVi+8ϩH)G3 n3oPDWr6eJNs 6ii.g0+4KiC4#)~T&%;PIa\>\7s.hƹS(,W9nrV[}^lO;/Wiv^8"J;3:zNO>\H]Vi*ZB$d߉u. 1Rf6&(rcpZ8~qNmmEf2)9fc#A5buNfA2O ,k#&Pq 2!%C׬(,V\t mxfl_}Zm {t  (,VB& $A[zFf2Ӱ2:{4 a:*a(XYni5DA1i&#\'"f8~s.[. r&dRh%1 f)7]f5qЉ]Rr1=@( Ti8bnUQ0˕uD/f03MM,݉;"A_@Gbuj@IsPIЏ%8$f41 Q/Y(Zr+ydܴcZ@PNʴfB* r i3ӔxdS^ۑLPmHԣ.,Œǝ:f03M< jlqLR P+ Dtʨ!JC:EVbL3Z/\R;}>fUܟXN3`fb<36?0rw\|('vf,,bcnUP&ȹ5WdR#Jp:J4Ci ?25tCG#ӅZ@"dUʙIDb} uS^O3`f€ BT6amK[3D@G[7cb$Yіm hO0ELQzi3! JLPR1Ʋp_m8 4x :Mg_sB &ՀdȡibL#R;(fY%\:Hb$E`CY.uxu%QP4-NbLSTd6`Ѹaij[ܯ&x݌ ܗ8bnEq=PPyY榑LtCQL3]_lDznr2`IH.3M1VM~vgPX&nQ:^ed#"kP{pc@_f03M7.4ܯ'񍋚b1S4^8fКmͅss~C;81ՆZsBȹHQ'aIޖdͲimL3Pq(u =4l3MMwk_>ivX8ӪŪl\}*W3ap}xi34g]nhmn %(T@aim2H:g{WY08S1Ȓ.;u=c |/yA e6;$f4_H6aMi 6JRV.L =^ M}/"3`fBr(gRJ1ԝD$ t"n!WFl0uFL3hDžb'WN7~5R &QR.hY1L30;='}fij)`Q:$Ո T=.' aȌGQXf03MGɨG U=IfZI#Rj eӪŒ&֣ mF3`faLSx^g:fibLs}ώ~1Әxbnti3ӔZj ' G3r'rV(_|P0 p8v?WD@ە.3`f&XijI$@'b%[Q@ 4FM@D"lh⠓i1tFߡ, bnؒ]t䠓iw6mAF UCO%!> N%66juL&ӌ^XjX"<_kfmGXɿfǝd@{ts!:L&|^ Kŏ1i*aI dXPF  n<04(M,Z#v㱑idg6ÔOo4뱟:"݈ aײE۟]4~})52MLsaHrb @ \=fO=/暗F4Y2M;;d 'n"}E2R&hLJɂgˎ ɒǾiRd da<N[M!ql!L#hd!t&p#v=&$ly452MLv5&~Qq78Dѕd9 .qL4yidx adwm}؝_]|ni~~L$,VбCR7m#c#$4zFEBGT镒iH÷eD(]ݿȹ9%P &MIGkVO .S&MѯuTPJ==WA(lr;~A#Ӥ4vT`TtS%L?*].fɣfmd4r) D3;J]Ҥܹidl}=w_%Qՙ:\bkaB#d4%0RTܝL..">u. Eos4Y2'$vc5.< $iL%Ӹ5ˢ.V4i2(sSf6Ljl]HW˿idu8 ShX]2*Fۅi""M#Ӥ4E% )l [-x#$4" |qAzL`IWk]dv'Eidڲ5=;Q&LHOt]迩i[FIiOnreϡ&j,'ӸC|R £VFIiT.c*52 Ո2Jl$L#Ӥ4h7B'Q'FRPVind,F.Qz"RNzZC.ocr@FIihZKG҉A6Q2\+]s8_4c}Z;`iw@8[Gl˸ƛBv~ks[drڴNnfo|YF޾e`ɴYXao`MցqGį­Epywgکףֲxĺd`Cı𺲥QqgV؝Ք|΍|żKHh薉T]k؛ԩӆРTDžt~ufo^Jŋ/6]\쥙qؘԠƆ»:}Ekcx͑໶౫ݕޏT|JF|ut^NCpqlrCKIDATxڼ=@`  -bdDȑ@nG ;p95S\cXn,rcX*.}fT]\׽h^ŮsזQ8CCM-J7]W^UW'ulIq0FU~,Ucu.wZ6Au2FD)mOG=I$ȡ!wݬEͺ w$@Cl `@6!XZV4`j&D&):VIep,u4i_Yiiuf\5,78yۖ@́hzuU1q#abkA2x\qU `䌰Ծ>>l@y8j1qEy-k;]}C30իܖ虔6})Vo\ I{kЖc)>z עUh&n|+(L^BA,^Qn s2OҫShfߞ[y{IMىĻѴ`Ċigh<xRD$p 31rA~#xno 380niGJ){q[өRqR}'U,¨zAgU"s0H:ne[ګdgqC,85ӞHvQ!2ւM b#+wQ(Yp V-YNN۟QςƳp3D(Ys&[:LA=ff Xxl]Cs欬J!Jp_SqsUO7]M&6K<<!+wr_S@P>Y4(WG 8-Bc8 b0z@u}#4!v~:2J0>:2(#{) A"LKԼ}s4߻ ~@ēyȒO/­=ÉekFƯjcw :K(T?}bۗ_m1@2tsf(#Llw=2<~F*1A5a~3l#pBYTA*s:ew`ga&YWfR<)jGJNµҎ{ǃŋ\/D` -ޏ.[E:,'0$1HJ+lU\bau= RFe%$ЗoJ#K_ }}G=.ED#ו[ΡzҰ[\?ױyb8<x:ú"yͅ+3C RŹUD%ѐv{i_yq4<Xⓞ?,ۥ]4`u"wiy8*qS7)TS2mʹ7r3ds5ǕKZ)&&Mp(1kW˰2rD$$#5d{Jۓa7FJ󯵷 1 *b4M`nR F|N} %=pqSrbȮm8P);_OmwXtP΀!>~Tzyj1,.CgKD.\Si0X'0)/+jȣ${n*Ig_jmt͊(ḅ0\N&TdY;˷o~zN9^@lC f8:!4.PȰw$ PXDD\gzs^.{'TBV"PVMY'<~'_$pï(ɵ:c?^k>*[^,j*}H$V޶6~+t\wIjױM\o9znAD[v X!%F!SɒO j, tHX+% @sjKV#[[`Nj~;󙫩=|"YElc om +a_JuMp8E9ՠ[CaWV)ILn=5ț3XY&Aqŋ엯~y7޽NkW?~ycVN3N4W8EDKz[lo0 B)h&ișd7A;U&[4*dN5ј4_[̛ɚ[&vqO}MxIhZyۥps"`[;1$sKf+Y l`O]ԛSX=84䎔VW^w:ͱF\é/e9R$ALG.6D+4V ^=/=)۹; Ȟa e.›؃*>fF|勭$qrg9Lԇ>cJKvif6{/4Ƴ}H Xy.\ߘa3G?]h2p9!c.I g?-pqƱ )ӌұ=ISGV-ٯ>[Nty~J*-1%yBwwH5RK^,dr=`֔2M-GX`K!ۖn8m'qtB0k˞:zfM/.L(A'b,/.=kR`^{W@%J\k v1snr9{!EGp1u5=ں$f&ˑH-ojĸĻ6y^Vhk6`> rz v7V6^bi„f@kfn3Va')"ͫ4Dw'~seHENy[%U~vqCa@G2֣#Чv3GCA ؂ d މ ioe1-y:6`+c4VL T U]n, ub]ɕ4zQblR@ N h8wckV&qr8o)ne)&@ m2d?}RXR|+rH~M7.loU P09>b1$ϗ$0Mҁu$Gc&A!lSQ:I)i2d <$FP4I[q1^_>ϖ }G/J)&&\ԕ0?j 6u89_kB[:R@E@ znj wKt0**|k3օKgù* <ʲwSΈ=fC@/{kA A-ϱ|X<aƽ*bB/CmlrhOg\Z`…,dKsϋIc4?)",Sx%ebu֋zNYjL]9yJD'b0jw4F" ;4?vzq〳D6lVTdʡExr$!(G1Q(maԨ㇉1Q/{յo^?gu]xLMOwUuL|z_ )Fc+Sx> 0{>mZ`,$_%iGwTT4W^8If^x"y !l]ZG.|% !vu5S/f;%C3X7˕(0!.x)|߸{ʤ ;(N \Btrc9)]Uy #x2e15'tU)yL5~Ag }8iS@T]k f4>'gS r_F#>I5TJ6$"g ϳN6w#x7Z jL0sujL_?$QoÔrF߱z TY.6ڻWtmp0Q-#UJ_e4 [¾"0&*v}f JF6ףɸWVw !bN)J`i9!& t=低%XadoFW˺ n04*9;ɽ\ҜJgكUy:\6-HzO[;|N D&h;5]M'*i_rܽ^ތitͣ ذcީ] B4Nr(0hQ}Qi5dCC{6x(\'A UONyLd .4`[ ŒA7j@6:\I Ru2͡ ~vHȀLb\f csU3)GE9N.)u90qfAg R%`@5*P! y!TذI;16ٿ?$>Z?,uI* ΝaHɴY)MC6ZJc."#ZWRe|WV@lH ȻЂC 8c{^ `J(827y"2n@Մf DCBʈjh:2V{#> _j 4:6i h3p|Й*B"jxy bJbPC.s6rwFfBۘnlҢ!~`#(sKGhEYT/Bg^sU6.R 4S$y>䍛1s _€W0R m?b}ƒ,S#ŷZ)n^X%r]6XQ6x`c>4N:d: r:2oHI=9xCpɅS8>!a@.ϼoi YU <p8ᡄv1@C m mDXM<_V!/ch*Y~xp"REBE*NsYtdtl;_" Slg`8aE@ua' LoyiRFh,d*`q%˥'LmgƏaŒa: Ei(!Ba)@!Fe#t GuTV\ršhl﯄LTxҋ.` ɪ!YG9vا_kΞ d6˳a2?L#9^,uV5ͅa\wQ2B  J tb=@ 5`zRGぬfTZ=Oƒ+Zju4iSPN Ǩ(1}:V?DZ¨A8cNyiJbKS/UM++I%#gJ%$"8T%\&N*›B|#2q;UrG_La0L#HyEιd&M0̐WnGxqi~ÜM1o9io,h&Z!5Om02zB]Gߣ4 D[<r(:H@!(W$a }9a}6&:磌mܣsd:Wͨ䍖'rt|"&G)H-\N<q8̩3#4@qIb`ե0LA)D+sV2@B4i LnY@0liwN%!hS؈@`VYIK'I\ޑ YdskǃMTny ުTd_tB< D!-vq+{a"}5Y r&Qlo.~=|}WϏsP T)C ղֺ*Lύ+; 8Gj>zN?R7< me,H}D2.d-8f*c''{+A $ F%z鞹tyt&K IӀ _2 OdvߝS 02r׮w=/=j@2 ۻR~36m 2'.nCr4hV]P1C/k"!PN|E+Va#P+bك#+o\~NA ^zT:&)ssDX醴>:Ogx1wśj|$iדRR x #BkPNZ_YBVDt-~}˖-fue. afءmܵ?28^2)R\.8†35o|d>᮳&NeCO}laV'0D&Mr_L#߽6ejhF~P5ߪ3)K(+l(/4!iCv)jgk|pɽ.<.A3 P5Ċ5 YC]Aޕ YջUbX?lctAyM^dX3P#Ϫ|3\+8ZYHC<ͅv釶X}ck$I7#"jT\dI왵i@:~Y&Djv/pc (g9m; Kv.qάu%Bho|=b4&Lx=BvztCD"@RiR$x7#beHU)4G&,\V.Oa;M9PPlY58aO@H'R/xS <S*J ^MY7箿6Ӗ锖?L9ʛ[@{^=qɓ=S'>HHu)%&tQQWwj:T~n%IpM5%'$ĿNͯXx:5l0gbx T:@~CɃ% s"\3d읬Hjsp6"?mםw.'HokVOc {im p'ND$++{ƘZ:)23Q:yK|JI:KU5eU:\99P2 ьNW@8 ̖]L Xx= 1//0WU6M}+=K㦞bןt-–Գ ܭzσF}ħ :<\M4A)9 &ه9aFC/(N׾1=GZg!̺.Ͷ*1C̣*䩐k*2w5$m$>WN̛&M>jc'x2N9df%!4[P2is E6GY`ܔTl&"\9씉5"@' ׸4L< ,({"|u|_W`H8%NRA6髗[CcHAB=!R4FƒlD%,^Xae^anØ`8o=W/a1yeeI" I4F頙pyL3kIor9ݎ/ND%&N3~Zz㧥$[NGIS ahL}G?;LaҡPTBQ󂯧1S5a- ^flG͇(Ui|4XJ .4PG%f9Ш΀*ӠL320SB֤8ŷe3p&LyD`0%̱`\wm] FK aHi ]+q@Ecbw8Ai԰=zv^i]צK :0M|]aYcN q.=4aH0 d0(6L}Ӈ;]ΡJConLG;L^Ӆir1 fi(Ơ(ǂzfXyy`0H_vc2uh9`,SIl<;0 磼K+f|d}q\g ͉iuDŁih.vDFOR ,[nv d8>gm?L,\؁iiDn/d<\it;Pideg´}h0 4Q:4L;]HfޙQipj_t4n`0M;Txaܙs5'f)*]qVi*`2י$0 %{GLAeCLۙ&qʉ4SE&hgQ&dK r2L8A>研gL‡;ӔYΑ'4iDT gyXbx Y4(~ di*,g24+xϑ-%4^i,+g!4N3;WVo>\ZQi:Ӥ nWL| qHKl;@L!㭫LљFeJB8 vA>iKN&D`hnȦBsWxtQt8Ho`Na2]*zNm׺(4ix7,ę$4[C!D׫Z QtL  }i\8Lb:|޴i0xlobU$)LmUoZvB`?0YV94t8%SlU=e9gސlL0M@VoUkQi<4RJ#,UG#rgAp:9)LC#x(Api4eKAs5z(4`##-KH64`k!>7_G4LAPkŎ#"*ٮA)QfohL 1jG9oy;...Æ4q_ȈeCE7g #4E-?z޹H q10MFܓȸ+Zpԃz/u&xś( 'O.ɻJ⏚r, fNkC 5.?޽IqDjˠ(9 L"m㓬gSO=EI2͟]9f4I#\nbߗc䒙Xftљ*#C `9x^cbiDiֈLC`"˓_Edk `uʁ.]VjKO־{ fL5s2iLrX/fv!t7ٽ/gbSmT[L>i/}qr4Ja(/}"EȊ\d\cKf(&ިkgDEdܦh#T4UIӯ߽xpի>yIMuc,^~,t[<YF:gr1OR;L/h;:\ PԪ3DaЛ[r]FH؎D4DT(ZA_(Nvt-sOu}W'e4i֜LrI.+3O2{, 82OZ[agj_j#Tr 2du3MtsmZJ >i 2N϶TO :P!#K:-TJY. )JTT?ij7{ ^@MaCגR\e?r V?NA9c*vR7s UuG,ONJݭ. AYZjKI8ϟ\(!~J&U$_6߶v^o;% y Уqp f^k M壱_298̳#>T +pƓ `%&EZP5jϷV-`3G@j[V/1옮,2GN:#0LbG&jW(i(E _2 Z[~V4rLؙVdypMo<>7N~28D3ticJiH62qg%Z "  cJ\ãCvRrKԻ[8с:-ϝ4q0Ol16Ww=w*L@{G$pF;A7晛Bga G "5zq>\l**x;ӳ{yͩ{ %zmzG?~4rP͊LCCpNtrP҂}Y2tj^3ߙf4ME~gCH_υ^*Q_ m4혃׎ 8:5'G+vm30I+ ) 7m݀Bڪ2)T/Cc'f\b^8!M FNɴEQJG<-,<G""$ ! x%KVl`qzQJ̝vν`DCkuډ\.抃/򐩁SwN4JJJCɠQ[*'ߩ3pW%a/66mMSN QL>%7wbCOzM3VyKa&R#_VqsbCFQ Nf%he2B2eMX- ]M-A;q6 *.vB+bqVϧ_7dtiq Pb ʺr̼ު7LBlDti4uiG"0MW4r"w^fa,;9Nq:@ 80M4_>Ɣ 1Vkdxp=fqf #03,XZdt,Lӥ0(2 p[Hw8tִ4_ͺ i!09,h<N4gTCOF t5LӺ GDdhbĆvx`qH!# t3L'QҤSϲ|q:;$banid"tq_3IX[W8XaQ֚A#1Q?&A]O?!砅izQyGuqAL]s 8L:ӒO:O_|D{۰q'ha^i{X`5z"?eF kب8i4 eu'ca^ibO\KNz>J̲S5oiz mf'Mk&1ظh0M4Bsg<,9D1zW-L0%wjg̅bt  ;0Mkks.tPk4 L#4$ih!/Xְ+:L##ceȮ-p'uϓѨؕizi 7Wٹc]$ixP{q]qE cI8W-;3~̕4IwT194wiR4O<2_aBSb[A{VQ(r2L3b/kN9ouԔ3e;#갰baT0MRw`z8 [b1CݢӺ5hGA1j|`u'(M;*6<Ó֠}j;LcPF0L*vsV{wI&GKq}C_␠$ʼnOEc t[ȝMTc/ JmOe oG}.Ea,ԳXR U |fa0 cn&'Qh() 0Ht.p ) \ ˝+mQHjHC߹#ޝ 2Aq6(dwfv_iQ; OyʋGh&QstU#8ҁX]/i L>3[5 Wfotbqu`*bA}aJ4 LW`DOu3+4%rOqӟ]Q 'W WVvՒ҂6w)n`('#lGiOY#QॷSdת~ؾ|o)U 10A4zCaclt Z"ZksJD\IH3)4 h 9˒R *ZgLM͑Ch"} mzIGqTuvBzwR3諕IX~9`Qk#f-]hu E &G!jI.#ydkCHgLL3GɆO "6Riƒ'y64LOOЦ8xYduM"2i#&p%N^xJϤ-0j2iYX_/]YzșG)79ڕ"1 )jf3i"ghKϮ؀1 w.MեdcU) p:] &HZu:3MR`_ ΧK5``i'oXk4f1G4Z8D;fJaX4E:G{w Ca+&D^o2]7͋< 8ʚLcieL14Z20r54>FQri04BF42 i0Li%gxa)G4^FQ?0q34fFQ^Li4% i*%:44E2 1(w44u41_ri4%Ӕ9 LS(`0 LӀi4`0 LӀi4ƿ<$IENDB`plugins/limit-login-attempts-reloaded/assets/img/features/icon6.png000064400000057047147176754540021546 0ustar00PNG  IHDR:l)PLTE{+*zz*+zS\kXR[jZ܅{YY*R[k܄S[jzۅ*-=܄8Sˡ?ޖ0V-¯ZO4TRKֆ/̔^67=톍FdqDA9hU_ms1:3¶dХymHވOZcq~s{ڋ}IمdmzLψ^guQB}js>vӥjŒӇڳzݻɴƋПˉŭɽ߭鷻˜ߘn "[IDATx][oGJVZֶJ 45D$D$-JJBD[)Ryھ *7\fS,x`bΞsn3yVRyŜd%Z3L8ւ%l9R.r9>PLL܁ZAI>SE PȲJFpwPj<ٴ+"(ԃ6c kq$JFᑍ@z:[B*nË\aV!Am'BDT钯NSa"<2#'U9 v\fq`ueyX)Fo<{}Eov x"c,l9,M\V,nH=X<MC@6:JCC|'=rhW2ƦGGGt.ygVsO G;@v]}{5 qbmtp䡹8j_2i(JfmECJd (^VWn^8= A8Ot3 gvjk񭕠A'Qfj$4)nrrRVxv1S9  zjjR'Å߾CQ@Fb!(suQP u_!3,F"y'EE2[-VC@Uwf֬1^/P~:Fچz+N9[(LٔȡH񃧯DBc|V˴߹ׯzt|wB"< wf )h _8w+}4ϋۅJQx0&ngZ9lX-4V?t蔘 h+$,"ei4K9ErPA3Lzf49k^-OAmdS_$ 'O=<?ɘ(C# J妲q5~aJ ϵ(f2 &C焝vkXv;e~u!C'Yp9-̢J P+7IoJ'(Ї Ûo ^jbE}5LкzJ$VNՑIÆ j6aRl`;G!L0`Q]rYxD uEt 5,r$ISoNZ3@3(VDxףuC IHBzTJ#V}ܝ1T5Mܜe)3[b-I:(u RkZr eFWQx%/YqQELa?P+/Lf@UdW7VPHy['Bx?(3D)Zށ- 5K NSb-jrjRLՠ߈J(٦ϩfÈQL_Q_h0{-S ԓ8,~{hNI$q2,#jNVI^Q5Hm6HCE~G< < N=JG;*1oxopْntR`3r֍5 \uHmT!ǶfYf&Hc:SKXBRU{T!Igk3 ;G0J?cj"*)7O<-N2( 1zAסLQ>8py*[oC)0(QT .)e#ѹ#%B,'' ffN:b:M*RX%@ĩe2!BNΪissbyhCGN%6QGwjCݼ2":C@%gQ\S' dM#Ss4O=œYi6r? S<(^0GNeBEpXX5T"1Wg Ї/B?lfJBMG/t5?dB8s0 "98aiuqw~ScjN{^iL!1dB=+mQbxHX[9|ϟ H9cmX0)٩m Kc {ƦƦzsdT8o< }茯E "|OpGB2(nStiԙP3OФѱCX VWVLO>}gͼXY\\][n T;S6-$4ƽGhpF,Kvŏɯ1 p h0&;!J@uk3iCiU5kҬr4{5I"fSk_o/T:;#PiӢ9~V[ >A`+NaJM$4C{>\ [3ֵo:saN# x/q'TY S?IGfUvrgAZT~%-vlKXi UYi,fvq]qQmTQ~kǐv%1T/ -qI[l붔-`o0;%ja45UUQgi-53GGy<7mu.pC]CYI=3ru&.ztXaIob[%‰hAKnɤգ[ h5`γ5(8\ =B2ѷan#hxE̚ Aza@-sŤ8V~*$EoztFv3r2p;WQGI\6͕ Z- ÅL0kPe49=kȀ !aH:,6DG4S"jQaLl؞DbHA9%´n㖶1tt!-S Գ#q>e켡C%܇020# .է|[7/-݆39:KUdT:H :6/}󅨐Քc&K fjX01.RHT6H蔂Hm4]+`&kxzG]*Ȍ}5X:A'e"q7.ujEW9LM)t0˓tS_z* .t.cȣ<*gmF#l| "PRDA"a~? u>NKa0_s2ne.܍Ű dSI"t:,pb pa6Pa'\ K=}VYId7:"6qhU)P 2(]fE%Z匡 S8)SYх̌_Xu噦sO"9J3t.&C8!tO= 0fq]aDѨ fp2{{!|t$r$&:Ciߐﲒ|'iu,w}\L'D[Mk`I|6<eە(ka?4P=OPˤĻ[ni9@azzA .z$p 4ӛ8iF h f ZOYh.Ȕ| >9+ܫq`\xmY4Lh/#jR 'v LVzF6 )5΃2`M:<@fl{jz bä c۵-,D6`V+ɺT{w>e\eQ%{'Jn; ,ftSdΣ;U^ :֑]^ڡF;U oUURtoʥy`@%@]P/Ir@@!le )퓽93ҵ,D<,|88~K38% ~n?qlMV',eVwU.{MCWOhe }t}K%Ϯ1 _]i0X# hT&<!dzΆS'U L'90KR; z4up3e>(ˑ;[\^mL\}>o={/ܟm"nJtA2k Vy&KDX*\Ѧ豼5E8 LUK&mNNjN}b8u䄼F7sk/V‰NQ 1#f j]Huݠe}C DTqt{]vZhFGi6G\?0n[=-dM\Ds :S2JH}m ̹<}@Ď3p \3ߏ$Q}t%^c_a `=)]{ƷWWV`>XiERpCljUd8Gv}Awws va+o凉5DN¶i]|Rv^O+]94DGtPqrÓ$Ս=K<*H:(׻F3jW}H=y6ӰS Hp A` } .}Ւ7ǽlG!.-J*_=vv8,U/]}zl}c7x%8\Āp7̘ޚJ7 3pJu(tvmy:f8q6z}Y9ڬ~!KPaB8 H]D!S|Ҏ"0tR_~f D84I^E9Haq 0df|1ip*W@GKs֑;7F\nv+݈_`A"B֍ɺb=̴6vӟ!$(g9 fyZg.À1Brݐz5Z="s6ep-([N,_͈)UI+cǿc{͞MDÊBۖTAu tN5_aE__ՀB\:߲@f=k?]Q*6LqD۔b FOtYm}fN+{[~l`嚵.:q;̀6g*p}Zttdg:i#[kTԣJ`B?ea=*ZNVXB5MYX} ̔[5žWC\c] Sfy_v7g5~;^ߔmI>RC7&Us/C:k@C?q0 Dݮ:gQGV D6ͦ+㑒 d59}V!nV9Wf-JH9M ^+s_}26nL=psFnAs8f!^Q'L:gz+ l@Kn:q3Q4mp;l|i# Mg؎i3cJ=^sOgQt]ofػ"Qg%pC(БLPA<\[8, fQQKXfQ _Q:8D6,$ߕE&_eĚA&:?Q"rp-h0?| oFvMf\kғ+#}aydzo ,{eJe晱><݁Re~cڿQv@,N@@P;7t&^oy6KܮǑ i:qMN 8p;ʬV"63v\褬l)˾n1ʾ/Fͯpepau6^#!qŌ0$~->Zla8gKkk&d&w@xxK|PAG}EDDD%""("^xC/ZU~[uFxd;ٙޞo>,q-pSl:Q,TpiՔXW{,*h15EeD%uo8I*IrI fQ2QHhs^a\2˥<|?!9ҁ/}j/&M^AZv4bE-7i!ĉ.CK]ҊB+A`Li@a9 JcQTy0:$Kg[{4*d\oURX%\za.SFxtXJA%^ugúyG ]sYz0@1IHSbЉ\}o^}%-/+ĬJWe|72pLFV7u-00\{ICaht$ :v^MZ1)jrXϯ-pY!(N@ <KkXt܇46;|4sViԡC'f᪰dh tM.=N2m\=#0>u,d0LSC2Cg$3P:fΡ [ii M`| ~N':$@$dqtF,:La!qɽ" !$P . N9LCC2 lqd3 :#(<NJV`EB`딕UDD Ӡd:4MH:J~&l]ɊL3L:)bK0R?LC2Y\3LS:O16%[5Wddh@<t#4&/iGq2 : 8* Б" #HaӠ#|0&:LX2 c4:J)ـe" p ։D:LH96L9Tsp%Dzs?L3LC 3'8Vg4ƥN"i2NjRUU ,nGNDgIMN*aLOii=X9R; oҺ=RrECŏC#Ek@Mqj*:}α38t\BDb@?.{\?M]2yX*7Kd"ʄ&T:YDtЉQ~1Ol4`lEaxnzXVY wxE~T ǑZ"m((/r-G5ӣOe*m-H*k51P\kdh\+Lv>i &|#ބ؁gR·p `kH"b\K-cұZ*R[C# q::qWX^{h,cXF, CҨƣVIN -$umb-K3w`2N@Ax͖b@ $ |O @ZUk-Y\vߙ,Jޱi{|xC^ C*ʊR;dcAچ!BC3*CU2?c3,ln%Z߸^A!!0b ;89R{@QGf+b>:Y'a+b,R2Mj- OI-oZ%M_K"NY㪉RSoZwq mAN]۶n 6W5~]A[X^b}/~~wM'2 ݬJجYiF˥nbXxZxٷa0DFD0N}: @M][4E(N5W M7=UMgkXb&.\I' %wJ:D4ӎ|Ǖ]]'n[TVk(T%GҮ  +;AygSXwsrb2BdeUma:5׭ܣ"hP:,PndcdN|ޜpA7MfB"=Nhت<%jywbm<rKtn3sq1}dfxʲ\{Pl屄R]It 9ʘŗpSK6{݊'dw]duπI8F%E[zZ\I&FJP &ꠜ}R$AlJk:S0X@6 93~:jAs;̛%EJ;;:Ή*B\%GU2oG+rZ0>/BR@sg4)gɟ4(JR˩*2rhJ*YԶijijr1t+ S^Tb" u 5׋)q5s)Fjemj^^t,OU ld~u\ԞuK@fr8/RJleF)^EꯁX7E# 1 az8A#+A*{8J'wbELtˢyjfkO$3;)yZaYr BA`(K'5ЮadpDE@Atl ßZqcO#f!dk!OC3ۚ4efH=ĐA< R1biPd!xIwNM@ ฏ/Kf_HmdQɎcU$&u~=Rl\.5>̦L!d)Cm^V{dD3LH/Yl*&1C $2VNfaJ?z2m T`䖾I4@SW\/(2VInH44k}dĕLSL#~_ Ӫ/r+\?Dx2XN(ʊpTEv" (XiNL#Dmwʹ T-/j`uj-iBAaXWxp %qagB!Rrٔ\iNL ]"'tRJZ* )5;!JNӔ+\PL$k:B(r"Ӝ FJ ѣ!eAe#txQ`Lsbd.NF=Hx#KraKGYqՊLs2d:he@P+d7[$~:qswE92NT7he:U[4λqJ {wV40LTepb?leD Vd#ga[H]ZS3:d'_|ڝ{;/͏?d@(^: d"ӜF4e:Se`|{{;;{;;X2Q=tFy4'Ea-=:leHH1dўCf۠j,2M)Wd 9 ) Ӛ N 4_q}novmFi"  04LL|3_vR%8L_6Ԙmk"kiϾQJ`e(H&oVdFNz[z{{鳫L$0^6%ٱmM}@40Lsys{m"8KN<vI6 (F>z֪VD/hWԇo }>wΙU djw6TL9sl~{<|hZ4DGmɁv}8=V'v 79QS"U<0e4Q~98vGOn޶%*a4slҡm>ؒO{[~4XمQ'M@Fcqo^T6MJ0F`%rp?ubJ&QvM{U96Pd:t  iVz&i4[(r.pŒ*lZwg Ӡ:U*ޚk&S~xw* h}`N(LS]4hpnұ u- _?Giɪc 6($\hU4C4ݛr?ݓTL^F { T#Z Ly_Ztlmq8&_N 4[1B=OF]e#93:6Ȓ`(L8/ZjB;@*N_%g ?sbT4(h%L3 LK:G8FQ0kfVvb؍4 TCawokdK5k}ZOQt>Ąqÿ.-Jwtq4Jf(}ё3öLn3{Wغ&1 ihܴë_0*5Im'&9 ׎c%L3 Loϝ*ʎ٩$I&NE<k2!mL(Heǝ4iԹCE $ϟ&;>HYԃ]iiRw&A'eI"jb#*2۝io.)H-Oj+Ӡ6Dž#d$H6~#Mbߊiv9q\QOGddEff7Z1Z[xݕ\C5b[V ~sViHgǔPϾ=OggGAIM ēc@B8"d|؉~i>ש6BawX%~GBma݇s"tdQNuxFw FZ44V 313F#2[յNtP4#L_W<48K bAHgCӼٷf"W ìiI-yyjl|‹tNm%כ9|`"Hu*AN1dF;Gi5iWZ_ L#|fǯ v#,Y*vfjPqXR l $%L3LӊnmwtldЍkָUQνiPUL:Z Lg.d-fG,?COfW$8um "=4Z447YM 7uD6u{z;'3 +0PUhkPUhr`%'fL&5|{Z#ӓ"s:vii趭8?)?d)&=aFp45j >I04K>$L#1LQ@:i8Lt D9hSwYbFEbN8L#[cMo iLy{T)YJ]5S)xH cAJ^Zt,tc['|Tql L=4 L,wVbX3M:쎈/htH Ӡ>ZY1gA6RvS/{" N(Lc~v|]LcM80QG^:l^:SqrGJf%fU^{dU1L-Xؔؤ;'L,ѻd㒴C_)rn1@D:.NL"ÄU44Qt$87e>:v~ I_vƌJ4?4M, Lc%pj,;%YI2l4 bn(a!`TձNX>0WvɅ&4PO5(3s̘Fq.qE8}E .  zЃAQzЯ޳,kZgdLotTP0 ?4aqljLf< o'Yuqx.t9pF"AISѻRgN) h03N#TGwP`^ 4If8Jv̢gd{0XNFg0 f Yr%sX8# :WnG&׺Hbb %?iAvc|[ݖH!f3J}Lo)0MG`cDL_L6L* ndO|h=#~ 4-8RV ih>*ywu c9 oY1HA$C O|S;T/ $tmCa%M\";cu?<'(3D*V>Rے(U$OL>CFEBwxb܇G& oثu\.ӕJ0M)d ziwM*S͓OgNF* І=RgZeFxD%#u2p)$(K:"ZRA3RjF^U0);auELcaC L1jۗ*d >dȳ ȣ$(I'/΍UXUb=iNiP eӰh E)d],ցc L)]"蜤5f3,@sIC0Mx0`^iD@ a4uƂrLb0O ,ac3ָPՐkK1ɨLT5L4HK8?e) 䉽$jES͍C.Dŧ5f `*ك˱H=8d~3X[rUk1Qҳ}.Uܤر9B,$ʄ?F"&x)ghj%v̇``hL ?'D+#^]q+C^/V4Dvz=fmtHS3b1 /A,B,P2L%TUM\zY:ޙ*FFKuU7fhs~&~o92TB8ւULl8˧]}(ȏcW~±؛r*;kQSX[n BRG ;}~Ǥ3|%pI,IHb+J Dc+0HLbl.~t岸@RJbvspCk'=V6e٧_—i6YD&sZm+$UsŞ}إ`4 02ͲKLмh02x7 /?]$KVk@epwlQ"uf %\F )uE!P9F2 ؃_yvԑ)e<:sVrϷ7cL6P]w[Wa*_Q2=U]1$V{ERa`>2;OyDf\8B1ϫPr `F΋Q>`9j]rAq+w G<•guKDsT@ lOygj({RQqۡS<]lcg'ZtjtV&T(0G@<Ñ7lDUsb%2r5)sc԰1oYr.ZφΜ[J05bv5f=eԻ4VƱF@i5SۑiӈQ0M{zd;2~ I4]Lcix:l_oG|v4x6#X| H`'4b5PʴϻͶKf`WRŖEAMF/'.aN-JYIHC8:W|CF |XR&&2Wao:` ڭ)| Jr&[vԩokV-5 ]ԝytOݟ4ÔGD@;X'S6K\1mI uX¢ zΣ3Ș[e޲7W%=GRK vK,&1;^USB+@UݿWըޓU2?I+ǫ1cnApo~Lr1-ęJ=-,j uUޜ }eRiw.2QOsiV-Ťxo#AbeA"bx#!!$DD"bX`ac9])j=~ܮtկ%ῆo< D~ѭ=Lnh:y]2LӸ8r%Lzs[..Hi2w=PJ|%a(VF{\z2I\X ڻ}!M"'"H[!ǔӢ d]+-ӭ!wx7FxgDF(fXfmw.:vU8h7|_ߛ,kVMvK'  V9s̎[cGYEzYXz|e -($g0aWFyLYf#L΋+?Q?aN0oAF+LSl[Bby-n|:4E({ Lc4|^1 g]+a0 dfa]LCڅ5L|3^i7Rz|9L#s*>|a_ixC_+sɂ W`Շo*IF1@X_0ͯ4.^,ڼ*&-9bڲ@CzM{D.06VA3mR /Ǥ˹Ӈ/\04_3 sԇ`j(N^(_3+Ž01١0 K _J۬0M2feK7N)iL\G#vLcUcfP+FHǞi ٓaT0M589=Fs^Z3'zA#+JSgYW3L YwZ1RFN*؈, > qF-gih7-689FC0")V>r~1wo1)t3L jsi2yWqW@:|} c#aѾLkC7}Q0VwcG ,+8nPDM@Q*& $ixd?X1ڌY!w2pchg8 q0y(6#XFѸbB K5'=lHIaD0 oTP Ў~ε9&ٲ:-,GȖ("aY!LD4<M1ܹrt<!] k 6zaD0IǚPhMGQ0MxK{1%LA8 v)4NiR4U:iL.||}?%i 9݁t2L Qз"Oppea=(!Lcҁr80M2ҡgiLV};l SKW?rLSO2L 84ub`0|XF)oF{ho8J d&L34 H(l&?P/⟯Yd&L\i`aE4_ȏepXy6'Iӈtfiq0 sVtxKz QBƤIiR44εxe[hSH(<9Zo0M"Ƥ<ӠLQzagtzi?.V_ $iT:ևT_ 2A?Lb^ ɌG6&LaT0IǺu&?mzq&^cdQ`e&L1d ҉L㌦?pQnHH'4`WiO<ӄ5~k8wAWNIXf84/EO(Vu=0M2!L3EySS]n_% 3 K[3L3 Cf癦h8 ɐNL`y&l4w Z\g|wvu/]04.k@:U&sh1#H@J3L0MQiV9i.!*3 ERuCZ8${Q(Q:jD8Mʩ`iUDxzq_3?i8 >@-kH'4 ޺qXH>q\Й3]~gS,ܿ_C7#;4EeaJ\7Ysrt)g0͠^uƋlgEqoQ,~dd`0w/\X!Ә7=Vdiw<\i* WՃں긱_uu>0/4ц;rP@`WFgFå0lD Ҩx(4˸'1FQOU_4_;&( 3t`CXvjBUj5Ml&!^XҊ4?_ ^??}ϙDěջ9릛"g|眙 !?r44 i'4d{_,Iy (3L9n->W2a6wL`i2(Dʗ%LA:,dYmaΏcb}l PBd vL0y7#I0 Ɵf>Q':r?;Yi y(˒2N:0 [% V]aG< ppW/D:9Tih;!FR?/Wm `14΍i•Us9LS 1]kCY_'ڨ+|ƿc7A%i 0M$M_vL`J0 +}`b kN$vMmY+ܨLߍ"Ftc1ଏGLS شYqhӛGGy;h(֍!Lc:祥EXw8~$mmf 6^ʹh&M(9^c1ܽrq`ܼk_5&4U`|~y$))._q]Gis6LcӴ̫8‰މ!f l9y$ Lqɜ[`W7&ڶ;6L4fetZ5_vnڇVi40 Rra>d g6 SƝilWk|XO ]?bܓ2OW[&4`lV+9aF 0ܨlS?rLIqA9_]i_Ti 0rZcK["sӄ:F,Ȼ5iZԒ8Q9EJ~.GYnuLSM>øVs 9/L7ݙ; i= Hg2҄~:'Lc4t])9sUOri6n s zZC *kOLS y^CLk3B8E))~f07D:E)zo% Lc3misJ'ga݃Ɋ/9ù9sS3;PPhEM1H˱NK0M%ư9EAp#O![)䫚4:5C8S?NK`*01Y.5c&fZ%wl 6(@b9G8O܃p,LLSEƼ F\y:LZh⦗֘ќʒa2N`-+%O;4T{og[\^O0M&^5B\'hG-kw~&wG ^0yCQ^hBKӅnWLS11gXZٱ.NyMK,LchԱf>Z w qadLWLS1Oqnjr cECWn*(tZ'C`GcfsGJs` 0 lIHCùBtџXν]!LL3"ff]&4U`Sn4"stJsvN?Xy!Lm)Ct9hI0MQgvt0kÉv|Qr_%AguӘ3\\G۳r('>%A,+I0MU mk''ZwֳQCia"5}$43uѾC I0M%H%YlaF ڻlLb_14&;)J~?=*Ge# `*0 c6^H~4.&Iۆ[4}eibU 7?0ǗK @::g Ʋ5'B0 F;tpkRYJUbY8ߠIAJhRD(b䡁".iCC Y2yN/2]_x;Id\f.yyѰD; Qdp0U/@$t"pw. Z6mX\.ǚ)`)K¤kD2M72-uiY9r=2܍%!>h1f>>4W!ii0]&I趯Ly hc=LþÙ6(41{ >dd4Mx-Lۑ(+kf LCQj')ڷ D ,1izi솉:N~s7!i` "z^OgD2Mg2gBM%n7#R@da7"ߩ&V4$Ӡl~YiJO~Ṡ"T ۡ\N?E$ӼL#[-ͯ8LU>{+z;75#' 'pd]F"#f$"Ӽ_a@^[dE܇G2M/2Ly%n! izi6!$mL/MO"4}4C&ova(MP螼] ']4*ddQ',fA+o448߂|?9N0 hQL3LC d84U0$3&JoJ!LSE|فi` I#L8i`Fq]kLƟ}W Ls%=2l)0in8:!yԼ(pi`Q*iF0 Յ4GF43F14׉bdk`LSwW=7 aXӌ`Z`50af&3LszyT.Z===feeNϸ(eS@wѧ35ld*Hy"eK Q7DwG%oNjSX)sV}ṳ:q8Sx Ar[E<& qmjdNlЖ0ržXmb LiMlPOP"f?9Yp!밋3+f9ytnз208hqVË# ;>Ҹ|nY31 @lFU# *؆n2((<չciNu^Lqn|y,:dN{<2 iT0cˀM ô8 bT 6p\DiOslqd4-n>K$H8&I#4%潹Q qb M,A3#⃵{kG]rWb@T.@=[,/;K"Y(9]M-6젏@D9aEJ.yi rv#xJ3u,1'ޭAepE.=0+M's\R'1ys'eB Wm&R)k`:L.nsBAHk0:zm*`Stiiݛ2+]t:dU&b58`mB8'foe4!"[= f9ohH S!RV%=[:zniLObg-[83 #.Vh}4`<jw_18Awf2See8;v/vZl^l'VRs74<: 5=+#V.6OE N@ҸYh.KR~$z4au Z_/:kfώ>Syɬ+ ܭgzR/58bZ~պYР;saːEe6AKT vOhp?84`Uv38 I hpVUֺ,L6VĎ ,q]c&;Z^hPWYn^U|RT>ՆV\(V@Z!M *Gĥ-TYȧ&zI OZ@N19+#Gdi HS*ʨ‰559({W̮ ?qz)C޸9 [aF/#~kFc^2̠P؉'l9Bxw1d1yncPէl V֐S*{O|y'Gm;ߓs:+\i.*BZgޕ`Ѭ,ZV^1KQ5..2+Mة"2lbiD6YEmp+X`XYڵoO-W Cp/;]4z!a ]rЊ]6EyW&vm! U_Oղ 5g~ #r|1IOiۣ#?yg9 [ 2`/Mk@"\hF^63<{,kT[1P+Г )@d}M0԰{GpIB5acw Yx5`z! lr\-CRmҪOg Yߊ#^//88>z0ƋtuNTjםfU}&@ HM ,X5@3!kM ^Y\dBHQvivq7ڱ*]VDx x#Mh@M9xY]KWc L%@ $ch|be%j?̯ V|-١sCqɕgFpT3Ru8PGrsR>%?z#O[od-|_[כ8}"xbZ8N0'2bRȬ$m>5先s9aQdk3 :ʛ}LY(!s86u uֿ,MvX)k0 Ѽ>#pؠA^*SUH&MRH,80LD6E::' dWС^ĵPu$fΆz(;[1.IW3\6{Jau[)${wr2FoAlg ܒ 2xkehTQ:C pJ- uF{ѓ R5݅ڛi㋚!VIڠP Y xmwu?IDqW,{*N -Yد0"b2EPYයi_$dcMqS`]6Y6_dO ?,LN?>G"0?yZ?6ګyNv$Ua|2B@ 4\J*9ltBeIZM 37yYթ[~sؤnjA}wvڦ[7 {X^dI&a{򨑪|zKL/M^CNipuB!Q|MŰ+T'зQE&P.9_l&xˁU Z1?6 %r\FQ{+W*fT#5)pyc"n$Sff+dm6kP;-mXΟ6&os72 } O0I +??/Y+v#oViZΚ`S)r0(%5ɥLA|]NP=۳NXs"%sK S9E<ƈ s)P) Me8@Cbkz,(KӾ&).|S >!4.:GDYJepW6wT#v6QH.CrjaJ]Oa^0]|O[`ABD 63rF)_P8oG6k,_ݯ!ΏΪCrRViNV 4tWmu\"RrP+RHZNcQZj΍&8ȩ͉HOa6V t飘b5M7wL0A'ٙDa‡nX rşA8J b͟ls"D&SSߙ+oU$)a(37Td%QPuבJ\y[@3*b{*)q+F=d‘KFVA:#n#$Y- K_|[-EA[Ҟ)%߹aGV-   |PF(JLD=Ԣ8 gxE}.[=N8iU}u[Qɓ*Ͻ}-M)gS_ַ!> \~BhɂIF,o93iP닩RE z5wTƇ{Jߞ41(L|N=tH`t'_-_8xU) 1&H1;+%?fᘒJwC 7Kn׋:b5h Ma =i\ܗx8?~>Ù{d#y jqm :Og(_] nf"EJCyU2ݧdbQb9ځ"0M.9#4KBEFX"'tצ쥔1@S?BPd/Ds ==Tڰ oAl7_{ŷJ٢avy!_qQt4p {-a;b)WCÀ 볶؀@ҸR|uCo ImUW1sU"Kt. 0AHV}R餌+²V͟<]Jv:m-|gƭ UXr ңO t5-lD!w[Ė.>`*!FGUs5# (am껑߽8fSL r˧2hx.b.EPpM/(ܕ8Su~XmOjkD| N`?а瀎K#+Q9+H |UbOaC{vY?Ty\BoDؽ5 0(N1*#RsВ4Tb@'KR uGKgӸN ;gB᣶MA3mg:4›V/[C_nC`>'EPJ!b?'e=}R,x>B jӾB'Yc2_$o7)tҮ5dWVHq`o?()J qNEu4PFPOcdF0NF:CQF[ goL)$m:o+O@Q}g<H&4UM|RI<$bؑ;Fod#QFbgtIת.zgU|B?dIX.Ɗ9 ʋ4xq hZyJOJ&> RGEiܨj8MKTg{_ȼn ) @,*cE(}ǙV*;0s.bX5r{fNEa!]r?z/] `+bsvU +>4P4]UJ};F4ܠ%&wKGԺ'|Tdfnwn^=sl2Y=Y6r;Oߋ6}zѺā%m!?ΘV˳~]| ^rH((rI3j0$߽>xBa}!;3tNR?%2\xlR? ˎyU=p'MxN/X!l)N3nCUcmax͉TqKɥݦ^ѶB mO H3:ANHA5d'yFHm%ll ɊճՑX=rR21j71-l_S~4D3pp7u3s˺=7n@D']Bp%3O3HБw tnj!W5;gMvlf &q"cudQ󧎠#̴qEݳw_g!§fXOEd?8_>+"om%\}HEE4շh=B1ou45Nx33@6{pEGr Mdά`cbŲe WXL&r"lVرJp|;_Tz| 582=dOn*lIj;K @hf 2ӝm)7ܨawN:> f:+&+fArV^f;* ӗ(:"t$ %&43*b0 PI%.mBk1aQaviEQ{X\2y3gPI%h t2̏{;P7-[)VOVI2A+. {XKfz(s1#&/d𢡄FX:ۢj`^9g鞗a.>$!|8g@s0m@Mh%j:5p4ST(secF-3žH(0*G!6, Rv47:z:1a N_ @}TN<͘4q{`کbSD ӌOE`^S|:ꄥ0B : aO73gYsfH,jVUENE5mlvJ/Б3:aCg6:@OaiRێ&w66LNLg#)JÒRP@K]AV2Tr'ggc5Ę6MhNzdq2#8(>%q1Q4 1AGxtZY}Itϙvgw}?*+ÑQ5ߴUkL,+.>{Bi[_)(î1AtOwȴ_33@xSƩ9#u>Lؚr<8:׎o8 R6-n0.O#ǥ*aن;ϪͰcږm[ris :Npǖ%b "V:1e p&Oĥ'ĴⓡYKk\P/.푪:͂HH."Æ(\g1xrה"QѪlYX*<5.n(3pontΙ:cr.4[:ވLA4`Y%P%I CŤ;4E{[?&7FV:,Q#)u:^k[ͪ1+>0%iN gLR6u.'h/tш,x%*(#iJAؤ_( k븼 k6'$q?\]TFk&ܴn6sz"Rom:G+(kxc2΋3O.ӂp,(L29Z7]K +VS^ÊLy|"=\|7(a 8B `ѽ pZAwEuD 3.tb~~' =S'AW2n;MbNuQ-zFu9jT9ЯCg‡sT'{[?3,i,]9r8K[ډ&^=X[wYu|U־>-\L1aSsx)65{cs}?|LhFE)}p6pKQN zy+uP_8^x\ȡb}gw/n臭Y[ůu(9sO;sr9 r-Cʏ@-o:ONBPdKgalKv(e x8ymJ?/xA¶jAmpqa}.w9yCN@A)àAwFg:0 R 4q"6\e ƴx6نe$ ԝ4IK֞}XŅ*ߨXUS2K/]Ó.ǵNe/ɠ:0@$B x/K rTh9}O'ΉN,\I r\ 2|$1J!#fYŸwfMr޿ Ón+]ueUӭސ Cpum7:ʾ ]/Ú#ŗ ܟVr>Dǘ玘5 7؜^8Y"jPH2@3WLBd k"<7~IL/,*qC?-ѶK=cEm(v0e;}ުE%F⯥_N1.Ξ9:&_|hXIIҊ̤4<붼n[MXu5^sI02'I!"\WKaҰbJ8"daDYը'BvߛuEe[b5!=/UcoK Xa ]i O&Aj1ZMH>$ [~Wɨ?Rs\WM'ʵu0YpXcLBuR]q3DST[NY꽪)nG[}׹tuUŧ^K_8V19)bu6a]HX WI x6#Ȕk*/A8 VELZ샹͇GeolL(Vadd>")NoUi 5yMfn`{"'V6y"&eu xwx*Ha4t!\뼕r:vWFt7_#"q2 e[b͜djseQ iB5qZcNfaiX̉Nq'lTs>JٞڦmKQ09a[`$l@LA!\Zc4/SncL/qUV;Cvtg# a~ü_|$!4(!A+" 5T'Z/ K_`*u"?rËH>K*LOSBTgtDtҰrI*x˝ȝyȈE幬S800C[9R%–_84u3.;VzuQzv}cY3S2aI^NQvgB(M]'IG$[uZ9A''(1ɍ!;.|OI7gmo0NrNЩ,;+n8=n"53g0NS=:r{:PQ9781)##.46/g/ptgĖx3E>8 qc d iB|4gD1sv:o)3܋oVaxjl񼬰[#cKΣuJ; ϭsdtvW_~l~+ͣb|1͌G37IB&c(*)h >۰C9,W =m2 `\/3As`{B-|QXWNuӞʪʶAn89QgNk~S2 f#˲uяD=~L5E$=1Ŏ :I4Ft]2ñ=+Ĭ!E^Dg06`u"}ߡ#A+ex]UC$c{fQo_K?]lLYbk((qղ"yUmqJh;jr|k LUM3CH8 榦؍r>: lUTN_Υ7#vVae!f)kN>X C2.@F \BH||ԣT".o?ץ)C61qql%bGDž mrѯLnvށFOj.a_k|hr1]-K~E|EBSr!Pu+I:_'b1{?p&DF2‘Lפc|{~-o z@xxA cpZI8*r(v`[t؁*2XcNSRsț%<"8~b#I{?L|PkUfS2ȡ\˘?Yf8&h == t\oYhwwG9 4] =.%yNb|bg%\cTNhRKȊMZ[t~* Q,^PMrou/W)[fTR\_*"s[>d"NP'(s8#l>P=~.+s#S;AewQi.ބsf wZ}f8|Ⅵ[iӲتDZ^gѳgB44kqro'n1 ٩A{;͗ls&Mʷi蕽ʄ=%4MC=Vv5vy&9)V%zuyS3.eR-I!X|0P$W~pXYFAƾs{གྷNJ^||$ strchpKXXx༔sWzye2=np †e+SNmr8xİOޚEФ0\nvHֽ]>;SK@&8kl7tY#C.iFV^S "i1EZP⬸Mv ur$}He2@KnnHod䠱']Hp/_"Ȋ1&.\ʠ5" >V3 if[kp z**d)OecqԦzO{̃MCbM䅑!=%/cH[#XlD,DBY\Oza˽.Fݓ|gEt pn =dA)L&Wl&]\;mxd+m^K=ju`3;uD>̦sɽџo8 ɕzV+ tV\r6w@%""$C%ؙp )1ZO{6"[UV@~=0)]XJYm%Фc[{5 N2y٤\I¹3Ǔc%]φg947KX?4EمsI )9]8O>bՐ Ibr@Tf zeye$J/ Vc-P ڷ&y'|8JF9fdNwmc;&Nn:C]y2|y^7n,sڠpX}_$G;c TqNm*IA#H?#Wŀ*7CUϳ_YrOo~A`Zν7xPe* ~ʁĞWnD3( ؕ z`j) WآQ_ z ?VyyCI:Cv!-x\8]T_ŕA #};/A"lc ZCv%xä6.4P zb^GuRPQ\@鞩/VdE.yt1,w:ыu<ȭy]8eiLҕvjhvG~n]ʺS aikN~\*l; *V0#(AJ]Nf ĀìqQ-95.mSu݀q:"<G'S{bMw`"7#/xDxNżޣI89^,l-{yf_%"1K_!o!4WYJԨτɩWԕ'ThZ6N\?$/$:rЅ&)~g> 7wN|["C;U+4rgteBb|+x氪t$!.Y*W"OP1bih[قbf'd[{i ųv+B!}0? 54$0hl} `RZ#-2VwB7ZRPW "rQ#HM+T~3u$XιؒQRnywvٻ;7]:0eB:]AXTQ[琢UCp]Hi"EH0EUB] ,sZXqWqXV߫Â58WKU|!aE GD8\'m]|JZFm m![3E**Dqr^jAg9u:IYÝ @o:?c ֕>!n\6ZZS_LhScЈ$A N̟[0k4.O5k9=8)&-Or^aYr(xxr t2TmQ :/)6P0tte<7y ZXTѤ_"6M(uExAdX^D*0L* ߪ_EQsK"6Yù4ܣ-#e+nN<;IHR 5_.tI(hő4+Q?9ρz@ê턈gd~W6xj^"hK]X 9S'*Oᚢ$ cuv8e*ێv`X :>Jϧ!:X?Үs:=yn,n{cD"}_O -[I+$/S[,H=fmHeێ6UZ"ARVb6M7g=>W1>gO}gg/\]+?>K;?ؠbpIAXPG\H y֣b0Ѱn=@>MN&fFCfTʡJFJ:(?+wKI?5w3f?:ߴ]{:W=Qh1Vj@FNh\?STL,WœX}oHN7HD˸gذ {n.^-.SŴn0BHuFL.HS\2j̤QM7'J]CKeG5R6nYzJ>RQmUI; ^]biD 2V9ϹЬ*^mZˊωfP j\-:y+ җ6?dI  L-OS$@K3X7͵лU $AfLJ9" h{Doƿhi_Sa]R QMqp2>Y;Ѷ#qes65s7#O(u<}+($!I2֜Ӏ,*QC4,%Q_^Nn &!':0]֥<}hv ъSUW/٠uJC-T,}em)4)tnYC Q%n^`M&gӬ+wK~sQ E Xj"MT9D֦^vJ ]h$9Uk1(Bwgtؿ!*8ݶ&}q I<#w'cܖ;i%d5_9EO>2ٜ෋Rm]dy!$.j10H6iةAUyoSW(`ExY06 I\V@42#6)w¯RV9jN|Bb;wG?!+~_Fx4GR\~5WގWT̑oJv msP0,5}yz+X6r/tB#\XKbz^QeNiaVj]V|9X[.q:XN([0 b YTzuu׸zq2`u5kJ*3?I %pe@'1&EFKǣm(5ztA:,.sw%|9lP$~Rv/NDDZ"ᰄF+ $ [@GG8 dGi(8q0tnSΈ2f\bcK ShG%Λ`iB;[șkkT҉,98Rsmҝ= !Z\%:' ;#{F((C%\G*/*Jm?`f,80T.@\K1cBL߈Y%n% 4#fO`K3ʰZ8^U>~eH*_e`s§} @5`ےj[i! 0H)xTx5)l/r4̟ĐC,1S$TΓ7 ~-Vgwq&wr/{I{s5o!w>1!p/‹c5Z)~Nc).P6hYL-+ZIk:4CAMۣ$: h|(y)Lڧ,eBֹe~rJ!Pm?|98uTz=Jf`>TpS[g;:X>BƎ Kt9l R e ljHJ&1V,4=>{/wXBL!ĶF%xu_^]"ق(\NAQ *^n;$맚W~D?BxD9$X N @9/Zƺ𼷱aתl>=(Pzg~G(n凥zR_2lz}wBD>7̤h*nH/d$znBB>_zϰko+i"%ݶwo tmٟK_a6 `)V@RdGmPT4 I;Y'%pg&b%VKNZt=Q m4K?TD'+΄I59I=&>^xT hٺ3v;tJII,.aDbhOξ8 voVZ (FNj퇧d8X\dMCoӾCս{Qљ" f3iZt3R WHAsPQmw:Bt@ ݘd# 1/HH8`pd(Rc0dE"20PYOÀOF׼@Bj`R'x=-!9W|v ^>U$#i$1QPbrXKW"MlY9619FD~yM^% $ 4O? )mu\vfho 0z g! Bk/29jZ8A_ }}ހ,'6x  -C_L6 t=+=f 6!Y!A 7,Jy)l!1DFMS@M|F F1\O3^h&-5]s%Cz\uB/<:Ģ5NygkE C]HPP( =X +a\9%\&$slg^&S&d\@8q-R3rNw :栶 f$cRk_א=Ùrd) l0䙜< /@e(^N7lIzT\kd!)S ,Zr`!9OM?6ך|j-/kWs y8?"-]ɝdĬqmn 44CLJ$$lq{/=ҋ'/HN+`UYvUўhLj;@C*A;|Z|k9ƹoM*In'!kE2B֊U5F*}Y=)t)QSل/@m;A_ӱs,1oBJbl}{5,yÙ"nBXΦʭGfw/!=g3֡j7lgpFY`QHs`Ʃ(l6/أ.x Nي67XEnR`PbӉZ*XG9C|k,ITVǁN43qX Fф%D%Ҧ*r =ዊ Bw瞚#z04zSb.EOu.Κ3.i'6xk^59N۹Ţ$S[Qu|ž}98@z(vb`G8)cVUF%,k0(\#;@ՕG X&'F0*ZEgLu@KD1e!u)tL%~ÚwߩbMLM,!W2bˈ^0W ~u8g!= C>SС5EDfF$T~ k'4{E"0Ec$O 8'>ۧ7m=rFw+b 50&wcbVWE(ޠ8!LI]@ 05MW{p֔:;w+5 )V(&@R.<-=)$OO[ :rv{f<ړ>^חxtU djdS 5(sea*vU?wOǟA)X='Hǽ[D[pxP@(N%m|v`u 'HŇvt[G-P)y{oQ$>BHg}Lu;vn!CǠ-yTL׾#7} )QCO:貽Z#GqѨލ0z:@e>"m>p`hÑnm_t^ lɠc_ѽ+ĎO)vJ+qFPqSg-O;\$ n;S3H S|B@F u3$r+A -(%}WK 1|yNz>A#wXli}<:}26edKr%nVmVE~xMKy[_l,tٙi^v+^yeHڐ9;df]Oi5PlJPo=@zRFp߾=!Q5?0g|>W\\`!L Π9=x˛~3'{[jKg 'i(Oɑ;{xO686z3O.@.rԴ][ AYe *6DlUx{[i=qy[@-I)B^';9A˳d烚sOΗ/yrh$(iEA3,h{Z=6(P]5K9*QD&mDxBsZnNӻ*JM#-؈eew|p|y"DCa^bIqQpF 1ʲ}}[Q7Ht-pGx]gy`sRO;DWVˠQ:2|Ї{gA3< ZŐ*T L0e(_(4/uRXۍCESSC)[~a.h59fͷXX9%[zj2'2j[©5 'sZV)1/U-gCqTn'Jf(羘*;-bd)OFHJ``u3N& 12@CHO B97Wj =TڸKΥ-ю, Ak{ȠDnjSSm5i~r > Ub#s+hK+`wlŔ; #wP,ZCCo;$I;$ !*1d !!HzBT;,?ѽP(E\^vda( ui * lcBأ~8䩁8ƩY/]WE QTςȲ8\Av:XQM㥚Joj6C/ݸ5պd2~j-땊1W= h0n?G&?#Yk _w AIv&>7[6Cw'aJ2 O_%<TZ͒:{,D}m-Ѫ: .0ůNG J?\7 [S9ffm'/Wu%^Zw^"sqAcTX{Y] 呃hWt8203qT3Ld@K&O>Y_1HRa=X3fe9zw,ۇI4gKJyEͪl͆D9H&hrDfe"$?-}jy.}ѐj[<ꪫmEf5MtxTb[?a( BzxRXbj ŌQQ`jgJ?evpT o@ggw݂F38'Wx *1:jZ&~_]Þx5s|OJKx7^8T"oMZTz{P"* zŋzTek3”K0 5HQ8{GT%*?Zlh4+RC')`[,}xv,gtk~V9xD=Hjb rֿmJLXbȈk1PÄ*۷͎-U#Jvjet.%Q2O0oj%40^0-g^18)ek`y%YL)&TQTSm"fD IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/ad.png000064400000003565147176754540020366 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE: <*3\[ JXièW̺[I %wVuyi%ūcu+ *̬2rβEiKsKphdںmܼ"i>X>stϬ)esۺ,d]vԉxwuƱ}ԊĤ>o&g/y)£EӼK޿'y«sRҵ;tzӗArɶֹ:j;ԴD3qq𥮹~Uj 89ex r<yqֹ5zX˄Gk  lzb} aټ3Kڿ?¬zį|I5tt4wm`NּAhs~m'r|ẋx£JʊOwωE{FtՄ3ֽ.ȧ2ΣGO|tOp8%*29O Ͳptؚߣ+풊Ą]U/ָ2`}ݲ0ض?QvQNpǧ9p$%oh|2͟FЫM9ͮ9Ւ~ӳ.ËfTj`LHƧA˰N֚"q|}ldd4hEɄE憄U%ZL*-/ZLiCI_֋"Cԧ;Ӿ^ؒ D|Ye^'В4'e;Զ7Ur+z:21Si5 |\JDiEkfX|lɆw!,Y&Q0{ֹ^jXҵHZ@\08'}"iH`geZL%,z1Wr=1w &SW(ueK+J.W7w|OGW&H[h Q' v/Zzۺ_xyyxE|B^''<9}Oxhh)"-Bz/UqWW=s"8]v~B,/#]6B?,aU7c3ڷ&\R+N%~܂eS'u1Wq'jP) 3SWW N۱^J.zbމS'J핚65׼f뛆NRXNG?ިoSLufБRh-tѴ舘a"i(:>azce)Q3C|~yNZj^fFe$gddKJ_aҠG֊o9:eg^ନ'D VCKD`ߟ2 }3\:"fעYR>,֣a'HO^\q<-seBB̨ю%Z2jɨ%XK pEjIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/ae.png000064400000000431147176754540020354 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<HPLTEs/ w5q,tt?z2r>xAx/~8p~gIDATx͇ @7glZp2S !!!!!!!z$$^\* KHzF.!sKH'/ o`GIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/af.png000064400000003514147176754540020362 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTEq$ᢈdJꫩR:܍t칲؆f E;YLFGnLࣄ߉ْkuk{t棛C3v[dS\D9+كj((m\!㲐 sR -ރ|ۄqYYىh7C, 걬--ٌj؍eޔz56bFދz9$jj氝 ZAʬTTѻ⊋"!ׄb䐑ff㧏<< 1%ߡ:!R6챲NM33㭎UEK.BBaa2,$#ߘ"ᓌ' me}fű ܛvۑpܖvߝ~J5aA"ɳ柛B@zYޙz˹uN~n믰䘕PP_\S@ww黦W<ƻ6*994/=3쳴0 M@ޡpUI3 ۏo/))褢ۋoܑuL700뵯~Y]ݝ{JJjS6%XHe=iC_`꿪abi`vb⠍紡翠鴧禠鯧樚3"ּSSCD׏c㫐W ڕo cd਄JF]Y2(`Ppqonwrؓfx\;sa#}iƧ1=3f&zz'!^}}>>UЯ*WIx q^m(k*oJJ?5{ MA |ä}& +ji&) ~=d}ڶ;1󔔶&-# +@u|r&CG%`c:vv&|}+q:&'gγݽ(h_P̻&.&wb,3&T=RR__ ^&e:f0( t/IDATxwXguweI $&QQQd(JAZqխ8Pk{/;N$.OI^{rp.kIo`A^xs8ߒ/A$G[2-1HtUr 81zc+xWuqnKwn3O|iL 5:{cڸsVv!ken ʟFx9JЇ$F|x{: %ш)460wlH0YU@VS,t|˖CtHuo}Pz%f熃r_8|LHCe) ceST0 >ǢD [2JgȁA>%N:!ĹT  RD.E]&qJY?O5en7)1'::Pt"Td g(?s{uFPM0YxWC(lh[8%kY3J;-˜zi au4?RZA|nJ=AĈe;qw Vro"ʺAQ=[AT#Rz\NG* rnkM|Kz6"m;-3 ۻ$qe]2b-u_g<`nCX؞l9xD:;5NF݉:]'7%%u,o')2IJBQ_OR H~ PO!=C~\ @ &о0#ԬH"Q;"y#ɁJFTM1zŒeJ,^-%ī,& pA,RY,9K/ ]9A^CFˢz1V 򑆿D#b7K6]w)W^}0 BΛ]ƍz|Gz#"|>űz&Xn^A'|tpb#Ў)c}w>s Rڲ q L܌G7Gexcs la?%x`wǚ#~uزqwuL2R Vq$M 6eDc",P<י%M0mIs8A@}qh\P}[ 0_ཏ#0NJIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/ai.png000064400000004566147176754540020375 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE!i.Wk5wcwu3HQ#$@~`ヒ}1tg *aI^$j"jtM6aq80Fg..&,qd 2 "nG f X J "L  V !# px!d -irT wD |H # 9!#0= Z 8R 7"/.F  %kN O !q'(!$!#!s"H y #_ ^ _ 1 #! D W g }{ o1 ] Y "v.^ !` 6ΐIDATxgXgwU;rGi* =ҋ -v]Wb]ILH^vܷwg~;3;3^z;a\J>qˡD8Yq _ɗ'$E0(Em$ *\Ƃ"V3T4aTۇ+7,7LZG遄]H9M!"ML"֍\c+ eZC/Ry-|:~v R pE7RR*-Z,Wȟ&+:T C^u⸝9+Y$Cllj0[a9{A5#&Fj E ːdpQi,\50vA*^a.3=|%ӯ!Ap KڜcW$ymN^*sLbP TkBXn Q]xt\T͎:-77dmݒ00♫l]X5p:MKPtHmB]Fk኶OAENJNo 8hoas)gOp:ԃ` 2{e:! ı>uK)T"v׾! wj mgam>\iM`B!텭 p\{·;X^AGqyZym9XXzvT,om@jڍHɀF=DZ·K =L]ru)^idoY/|MY˝\[K&S)־}bVL ڿU»Jّt"_fBue!%:t5If(Ka+Y?"foLTUvɻTuxU٠c^zm1`%5V&{I[o=t)B I$sdb2 ts$R "I-<^uwb(_듂nՓǸet;37Q OLhݗOTB{~b ᓐDeǷؑ))nKjБvb).amDVÕ~Zfs{!1{o |^Q]&sC;I8l/!/UOv\<AE띭yL&9i{Q:)f o5F+1@;:TfsuC-IPDQ*!SEM\T~\J^z8_^X>A߻IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/am.png000064400000000303147176754540020362 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE  HeAIDATx .v4[ @"H$dxr d)H$D" c$}õIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/ao.png000064400000003237147176754540020375 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTEvmWQ%51ż ezrB=2u[T#!q Lqj!GC)&6}'QKxKE_Y=9lû=ȿ9%#52ph0-74G),oi@;ne,)2/`[w fb63Ƹx~v^Wxc^пd^D?ȸ@`||U\b[ƷMHSNjb83;7AAHH  s`Y{5IDATxb``Q0 F @YME3V|JKKZDExEڳhiA[M3 Q;vv>h#-S0]T>mwD M0ap#,*0NVBY*[ kjͣdgbNR%&Z,,,*6ES/ځ%;]XW p?rqR=JRYx"\(npڥcv\Dr G3MorSwp/[/l3DC̤&Z􄖰 )^r]t"Y2P{*HuC^&[_v:VFa7T~%[)GtOp$Z5g ,`8iAZE`#Yvaw%ZOg|6hݗ\r @n9jo '\cz V%[%Z)^'\$BqSϐRk;k$YXp)]y%Z(]"Y'FtP5P{k,`>%%ZH)"l<34ٯlӿ]iD#6 W.FHDŔb'F8F 3 e{Vz PQ_"{ቼgGB <ݾ4qL/ &5BHF/#AMp#l8v*L3w9>MOIgŒ.iMo-9 NGJJԎO,4L&́awadŶ#k14Ef Eu"7$_M.zs cQ<4g`IGu[qm937/b\Xhdt |OP8Oxô/yJ YÓi ;UaF\mkay1H@1VrG?JU> Bƣ![u3X-yA/LzLRp/v5!ޚzQw~lK|FFϋA*D$}:q o QaQ'ё [vV]qM 2ca t*tpU(8wydbr-H;b:LI#{RnLF/z md3 (bgāEZf-U8)1hbXA`X*N 7ך)jf$ѪfS4s ~2DHdXNJ qG6MeX _o/hSeZE~4)bPN}*r& r۝p2E+k)DA upJ&uWE5Kj<-fZ]?{+ޓȶiˍ@ң\ NeooϮ$Ǹc/5!}cTF>HܕO >$c=S7\Nmu-̉z02bac$k`ADN]r.zӖ៴Svn#M歙ӣo'l? w5I;E0'OMZ0=8?0oHE*qwWX ?5ґѹ(! \J2I"E*lYrQxQ8Nx xXD&MRHr p5Z)xIP:M}zVDѯ9:> Oj&m$UΟUr/?6!k[yn/W$>"$+&cݯ2ɷ*f~׼PwQ̦]7{Tȝ3c Q qmVaIbzC󊀜-DaY#맩GDxMU:W[pslЩ MubeFcQ YƳՉ7hk̿Q)!zӋ>6Z5`,՛^d_0|vSN:pprQVFDd٪UO@m7PD)rW\jZJ _vh.Fx B~fΡJ[9/DCg՘Qg͹e{R3%!tAȄr,rBwg>Ry:2dTr^!m8E%@(䬜ѴHݛlޥj¸n *s+t<5rp A$/jd kL6ތIE>J!E yA_<֫a[-;D CZ)A Sfƭ$@ژb;). Io!m@B^W5Y hA'MީzY'_%'WS=>~ufM}nBcE uv8{-ynRX}{goEq B G;iUM&>s\Q4N¬6Xi<ӬNIsk>p,T kvl|cksN(,h̀ub!jD )&0#ߵNlK rdjvQ6zIu!LJⵉKxKV-6,𪋯hߤ:77aEM (sOh&Ko@HR?8$kО7/53 ۟]/&bv |JdXT.S= ꏰ$; 1gY]BnVbbSŖw?|o493B*縴v[/A;6L:k&w1>2l|Kgy ˎi0_FF)۠Mxebɸ oijhufP˱)n(wF2':{,wƐnw ĩgkMr<'Y*:h# {^IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/ar.png000064400000002610147176754540020372 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTEtprxݹ̸ٮs ڰuƙ֨jѬڲ{ݺԦkx*߷{͖NƊ: ߺŬܶ۵۴ױݺy0j޵xڹ޵u ʐBٰ|џY٪fܵ}ȐIཋm߽›Վ ˩߹ ɏC/Ɂ ݶqt$׫oݗ ǡՏ Ӣ_߼ɣӍ ֪ͦq׳ϚTϴ۽⿉ƎK׬s͕J˗RĢć7״ڵѿoqۭeڲ}ҡ]Ӫ{w yÇ?͘Qۻǰ ֐ oÔܴyܴ{ԣ^޶y߹Ӌ ҢdȪͫ۸ߺиĩݻæԮݸ޹Ɵϯ׮wŴo"ȍ>ͧťɁ̈́ ͬΜ]˓GǼz*ѵԷճy.nڳ~Ѡ\ҡ_ؿs%l޾oноʔMӿܴ~޷~⽆ກ߼ɝ֩lە ݗ ڭjۯox z ٶٷnn;ڴt Ԍ ݴtݴvཌྷྏ⿍Ժֹֻ˓J $IDATxb``Q0 F(,t t lss00f Fjk8Bn nFCRֹB&/ rSa.’mq7Z+H |PQ-HOsL}-3pQ5dbǢ6ա'lXdy?~&4㡶%<_J=VVeGJF +"M4'dI1*L(rSْK$Rьڝ*PbJ2*[-hډ{b4U.$l̦%2$[yG<웳i۳ '"xD+vyޣ7}{Ǽ G<)u=6:I: ʮ;uD^o+u/Z‰/՚qWUxu4)E~?ᣣP[Xmjls5zyqic #cϻ`?Q4lH@v[+bb$ja```qQ0 F(`0 -IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/as.png000064400000005366147176754540020406 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTEf!ѧ0U5|nG)"2j|Ë3\""ӓ 1x;1.b$٢humiœ.9ʳƬiƼJLi& xm(yYGt* tXq)굗Eu͚-y,ڥ}-»{::f8u_:fVFvfO1d+ &Big%fs![h;$֫ވcn 䝤N[ZEg A ~8:RWXY ǦPљx ;tx-,̜dP_e1?")RП8h(s#bD4Am"i̛ɝ34 |%[*ܢ"'1@աӣƚZ!ޮzg.=v+y(Y~H`es0 Ĕu=k96C%%bLۦ:{S=|- _5h1j2j.d'‘ ΝA+ΡާmFёrFwRp^h$ ;C~-FS6&ѤhU$"l_?qH2Ȗ=TIDATxڴ\ǯ5rC&9_3p'QR@-suH֍Ngu kN(q j&ㇴP*3٘S\u7)V}MDq kj XbYeWx).LYrfW GkDPRtR{`pQZ8D>q^DdXiCTHh E& Wkp{^uFpkhVq; ޜ(L134DA4"V/9Ez^Ғ"Kk9FdH6fx%<r%*ZEOLq.H!(FXX`FE,zS!$E4Sb$"@ʢ6eυnDtQ9:XR 㬨%soY&Oh 1 %pXR1,͊*%c|Σ4'xu[oi=oygH''pXE4$f_!y1*RQ@V2DٸV5fH~ y|(MoAwAg_1`Ti9;}a} B,$] nbw T {V]yV(C0`[՝V|A3'L00y# kq g0NE;VGg/? B=<0G#טV6:5s0 ,hU{<|}zPtheT f`(c8a Ѥ&wvZȶڣmvskVCUQ$C({<W2{>BGk|m~AoNR_kalKx{A}㮦8XWUX;G:B?@)Ԅ!th00 [oR 1XM(E@9e^0*xt3]]ЬEmղRCRWêXxvrTyH$carej;ĜH{ L6/&+t7'lw:WyK9ٿ>/,Q+]GPeĨ3Ue//T CS}(g{ΧV'E֮AcKQ 7dP*lw=aIH_іRno~ߖ0_8qmāeF9*[`_w%m;;%b%.6b dtO'/KW..Y~pibJ3fGlRA-{5nM\ř;:FJ[Ǭ['Wc߶8+Ŕpŋ}ȘG{suxY*c#6˵)bڴ͍I]3ֶ̒tD{YT;6ffM͒꫅=Ϗ@/K -t87ˏgGw>1EL2hXAa%>1؅W!̻Aq]sJ*e.b·^[PMP_Z*ܲ̑Lr;);]t5T-i<r1xsqһt-2f ^JxAbhT4M%3HI K 2'ɜK JNBW$4ݽLΊtnbsƛOhI`fWKXqIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/at.png000064400000000306147176754540020374 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE)9.>, +nnLLFF=Uv *ggccOPl4Ip}88!#|"');U/Ijj񏙖WWLM `.b22~!"{##yf&xV揞$d/11dw._sstsn~4k;TD MC$3S˲C;ff\Y}>3w}k@ t8Nbh|Ժ9qMo{zX1Xz˴aYvϴ iR`0\ Njxʚ 4'+ w V78ZCK.AYJ  W$ga/[ "tg*``L֗zwXS'ˋn%Ͼ]oɘΖиiTLɎ{ {в{`*4ܴ9q /~Q\ pdD5`Q OYO+"Gu6/r:GA:;+Q%;&W:xy7N^|ʹvn?8X.L7^o5:qR!nNRTu_.(u-b4Y0"I1 FyNUIm-ƶR?-bm׉]8b G4(jK)TA" 4hcUb d&}PoO~1W. S2No#080ҋCD9XSj|'hQ֋8ָK! taz2离H xQG/p1EMCl7\t =VWfuJnYJ@1ͶTPiV[?o^iPt4XJp< }lޭeڂ>5&nJhȁ9fuX)Jw'cU: 2GH״nl`={t߁@:Xr dsԕ(0R?l8RBAb}\0hF!vH93= ?dY};I$.^As 73,sGb JC0Ʋ2P4V.z!a G-DL;Z~pMㄙ^ƹ-Ojo/0#+ P떭к_37AIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/aw.png000064400000002560147176754540020403 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE3*91ϩV'ثT'h12/'-+,)*6((0b8 **'<96')לH(.0.2̪UR՟K54z{1.la`ȸ-(@=,)J&"kjQIGT̨XW՛rGǭ\[fe~?:z{ןQڪWFD7Ȥ>6ԜDZ˪tuKI(۔}'}~d浿,ڑХ˸Uݟۡ5IJϝj'74feյ!943 ߀ѧNӲ(.'.ҧ܏hhXxߑ~.+݈ (ɔB?`uuyҐVTŧ5ؑ1 vp-jGE耋IDATxb`Cs["s#s/-Y:N4Dhz 54 hkɪfލ$gx>DSKD/ឰ"M--vC(oR}YvV?Ex#!z>!Ayrےyglh|'Ol. givh76_>E'HP+r/k;. /;" <<Y] \X?Gf7"i7Wު㣂%3߮ưDTpTH®QZ;ݖOfk T@jcwiR` ؎[T*rJ7ԖV3*%☝,mG9XpRb'e`[3?ҸҊUM㖄tNSa7$^Ӹ!a|fݫZ7>OfjH]BD#v 3H~YQ0 Fp,t t \t tN:&:dF6:v:|B%t t( X߯ʀkIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/ax.png000064400000001172147176754540020402 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTES4 5 64* 0CvYLL77z TQP\a456* 64!/ D1&.UsZv[H 5!0 6MMROvZ>I|}V;7[I5*$/{J2V9IDATxWo0$0B)tQ6]N?@ 8lUΒW>A|:c,kS+Q_"y " "M$ZF1ip~z^g4 {1'cfX2%\B,骾$#2eۉ*: e mTў!f7mCŜȍ!Uz{t"Zϯ|bY}"1=SE<.;m[Hco]/W4ˆ " "K`"2|fbIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/az.png000064400000002636147176754540020412 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE?5)9:5U6;N-9(9%4A7*9(8-'7&6/0.&7$4%5*:,.>"3'8*98G#4AO@N%6 0'4/$5/?2As} 1ES+`l.BUb(9&5"2T5#3=K 1-=S`U5)itKXam1E0DT4 -hs6E 05D;J9HXez/>_l@Ooz0 @OP^[ffrvU8/3B&4\h1A!3?MCQ+;+7(5KYVc!. .Zf"1Vbjv;NTabnXd&%/C,88LBP,<,9.9MZ!1]i2"/<7&31@gr)/D0E+;q{dn7F0?'7K1@!2*.s}+:[g.!2{JY,DR1;I+PljIDATxs0`6VwafNM1)33333333{gN%? T!E(BP"SQM^Үג?T0GYWx% ~rUjSu |ϨRDK/6}2f~DB1J; 4 'J?1^VS2u_ГA|l\-kfn= \ܭm2؎]OHtAɸ=DXmN몏d q6Ŭ]Z"=ђО XEƿ,Cd \scAb}ZXi:mV6v:aR~t~:I+T8Qv 1,2!v MJ[tBFo4OP$o3~BNʁ]&5~!^!oؙso8v<ު{)͡Bg9/u=T0AVꀳRAP"E(Bo9nIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/ba.png000064400000004540147176754540020356 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE.RRhh   aannžLL-&&:: /uu﯍0 Ѿ'EEɣ ̦(ٲ.NN﨨˥ 熆--) FFTT %*+ "" 즦^^KKŠ"55@@**:: $$..zz>>CC}} ]]qqÞ$33 Ǣ!YY&ß#77% 넄γuu xxDD00ddff00HH&ơ"ff++ ii×RR##ϰdd+//$$zzVV.. ##**\\HH__lH "jjğ#԰ǡ!244__llllâFF22ee¡8 ڢ''*IDATxڬwxE]FgݻpRBHCLBJLhШ1" @ Л A)= {PDQFgvG+3|_?ydASFG/uף^zsvu!Y?  at͈Xg>DC%j#a y,sVZgz]ܓ̤O N<Zː2vd)-2X \8E҂k)]2 9q܋?Y"x5( =_'sz^WNCxV0xAir' /2%tV>h|>󔐫e( rFqЊHa=$2ZeD tbM9O*ۮ \Ro֤ n"EA(m"_"Mf[k+m#;9 #@ W>}*au!2f͊FlF^0!E7{P؁)!Cౌ+%>Fʢ)pL06& 9SN*B)lw9P=kPAtq!gċV#~èʿS|A* W&1rU:d黵AGV|BpX2T=svo~*>!Jy-4m߮,Q#.JE>1U.W˄}bƩ9ts2]-櫜ѱϧ>* eNv;U6³AaT/f[lg>RͪK,~"t~@9v_b!;WBq >;D,uk7Bѝ֫FM*B Lw`Vdρ+Y>qM&cebJL;x\.c1*:}sZl}&1B+9"E*!_+Jƾ>M6#Rj4*"#Ͳ\WީFO"9C?_bD,]TE 11%LM.b _և#ڤg-%P$?AHAB)2*a|ʎBS7Wɡ}0M60١#O4?_K=<aK@OE",I,z!Kn p.f5C^:NnNf>P՝dyPrP$"]q*|H/Mj1o7֖@k+=C#R{Rc_F*Sۙ6FxG.;pqejJIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/bb.png000064400000002367147176754540020364 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<LPLTE&&%!=J"!&('(C4 UB &'(''(('&')":- n0%+!!*((SA u$vsZ&nU7+ѣ#%#% "Уk&3YT(UZܭYV/@r!i&;Ind?D ehD#шF4zM̔#^Sj^~_>NinzP9ȕYcqIy3`D^ x6[$Nʑ3\_ri@ɼ(Ån#=I{bDUs`K$Zl;- Ȫ.w%յ>ֽ!ɺ/+a(aAlFh0v9P}ѐDoT!4!KT9Į2#WFLQ!Dbnf95oR  | 䵋]`$ a'Asp v%#*Ŧ$K&Gdzx妐G1|ҿ'#PLR ŭI͸ s#m ^]h<;-_N+vᜲe8 ~;|$#K)WĀBaEZwb>6:m D.6#~ G${WիiCw`jĚZ^' ShD#шF4m] *IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/bd.png000064400000002445147176754540020363 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTEjN*AnO&@mOkN'@lOlN*A*A)A)A)A(A+A'A(A+_LjNMVJHG(A'A6]K'A-B)`L=ZKrLH)A-_L(A-BjN.B/BjN,BZSIEG*A5C%`LdMAF*AwLH5C%@8D;[K;D:DCFXSIuKH4ChOHEFsLHfMeM>E7D:DFF hNCF?EYSI@EqMH0_L?E$aLfOIcM2C2C6\KLVJSUJ(A*AdPIwKH9D/^LfM^QIgNAEEGFG*_L3^L8D"aLPUJiNjN%aM|JHIGJWJ5\K6C/B(@TUJ8D,_L hNxKH7D2CSTJ;E-B4CeMfMFG?E#cM=EIGcM~IG[KJkIDATxrA ڎ` Mi34W{^=IP@@@@Cn2p(k`1q|Ұ2®Zז_U!1mĶ\%nl.;{>_a|9h:ܗ` R-]>8y,5662SºD7dAd:) u7^__)O;a0,]YM T 1+Ve1' 刖 az2g7$ h-$l d+YUw>4$Ns$aQ.Q,1V949F!Id7]hϊHmT^WEM$Y: \r(S 0 LkCk=9ˆYef*$NP,8afaӨБ٥^F[b{QiJ,]u3eN~0)F>#;/e k< 1eѿGgE Jw좘Gs9i_]/4C¬%2۹'?/t2 @ жQ?IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/be.png000064400000000304147176754540020354 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE0 03  iͭ?IDATx 0? 0[EꥳhH$D"H$D"H$D"H$o+N$U݁#IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/bf.png000064400000003133147176754540020360 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE5,?4;(4)2-/0,*1.ud3*+IOR63u2:^ABY~XLS@HM"*+I*M(50>af1YO'.}Z 8_*C E7Xz ;oDE<%q=@?FCF/nSmf+xA,n;a|7+lQ5"=IDATxeP`e,I }`@ 67{3/ɏp= A|!>@n`%Gح0ɑ2b#X+1nSI]Ցxh#LRkK}VRGh=iե'xf{LBh*E VBkfABK,I$CBLJ`{5%C,0av!~fa @fX]n=E4 sLИ)jO6L"JߋoKIW3 >spNNnݙL})U4<>|R'&-e|aۆI.̅ 9z13~)Kwؙ\+Ds! ě1F-ǕEޅ?HN`˹q ="W ?T7(19=&̨Q$p']JRz_N&>ć#1VUlIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/bg.png000064400000000315147176754540020360 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE&n j#ko4EIDATx́ ~> gAfAFD"H$M wAނD"H$N>)eIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/bh.png000064400000001051147176754540020357 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE&$ "&% ! (uP`M\p}3E%ﯶꗠ  #9K'#7"5Sb菙Xg镞23o|7I=N':#xq~L\$8뜥(;偌erꚣ)u !]IDATxE@a:B5>d {+SA3.!{ :s(u49BTILb zw(Sj9B4*} w^厔K"7c0UetwY/~.cYf*~?l^PA=ԃzPA=ԃzPA=^fu[/^eS`%0 8IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/bi.png000064400000004305147176754540020365 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTEv,uukk8 N M="" **\\**|Yqq{j w 99::33e]33~~}}SSd%% MM|y [[@@ZZ!!҃tɊbbEE݄v IIVVffjxx<<__tt..CCggRRwKJJ8YYOO&&uTGG//~``qjjp 3EEcDmhb-a%U(zf}yLP틲k]I../@=enKvyy}_Wc>LBFYT lqo@@p veztjM3A>n7~qnnppthn zz/y[IDATxڴXV_C@8%r`XBY"@E:*CD(ElmK{O+a[Kr?3${.C#UnԘ!!TP%b. aXM#hJ8SFfXBJf!]-Yef5TW!wE̕j!.Muw̰؂d (oJǜ"v=@S[B7!1 O9m`OG4d L&0SdƮ 5=-ψ9sMMDn:J?b'_$:ٛTPkuM E0D#'K8;o:q}wW_NVNO] ;k`g$(1v:ή_;&$MQz57 ] g w8lf=[H3 MKw>;u_e5%`gTcO/3魲Άŝ9{"F˙!YXV<ܲ'  ﳴqfD3^Ա)aFB;/ȱ)D{n)B}G`SBS2>9-LٴbK롏F&`̨> joL9`g='l4NmM97@2#Bxr*C(B]+'7EUև^Afq)qIG2[:7i&(}+Gz4\~b[RU9B(}N4J"aORrH!Q=6u3x@y\$,<猅6A&Q!(H4q)LuS(R}#?aSl,85Akɚ%Yap0Ii L1eOvgi9LX`,Zbdt% R%G#;vW3b+* NK\럌&= 2($&JKLAjJ˃+Wov‡[2G.HoZ 3VQfRq)ՓWg_{]u>b!ԎbHDh~VgVHKVkZe3"-W2YLVӠz!H]BIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/bj.png000064400000000417147176754540020366 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<HPLTE1!+,FK %IF+K+4W]IDATxPv4RB5iE"H$D"H$ǧI &۴`үH&XI$D"H$'[&@PZiIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/bl.png000064400000000300147176754540020357 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE&0/x*t!>IDATx sol?Pž)3[$D"H$D"H$D"H$ 0A"o IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/bm.png000064400000004114147176754540020367 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE+ +i9mzhЩ4x!$}RP5jky8ɒav%uER힧+"%nE)(ڼs +k221E^Ѻs4IӇuV$Aq;kGYϫl))px#8dE(L%ohU5Selk(!v(JQG͚I*'\+ ${:k~ͷǘͽI$\h$ݵue@g9C]˨°F:Vgⰷ "ƸZֹQRV-XX+5PԳ9D뒜 *(8LĬT6I5M {՛,j/,B#}+B֢1/ӽR,Ǚ6Y( )1qwﯷ{ onQb`EA_[nsK=7<&/<!#ķpa۬.5ᯯ,  ڸ'IVͬ@RFB:_i /=C3/"L`%~Ή,Ó苗?nGGpb>W " $,!&?7*zELMqTIDATxb0cfdd=Pe-,D႓;|3QTpz Rq[֭áOQtKlتѬl|"nI2}tk,AbǤ7V$[/KЭ%ѭEX"n?wY`XDf{W`Vpe(l-v߬bPKfQXx6)Z2,Iid;d=AF掎@,˗ W>J%pp;D^ %pe'X"v9$ I)bc@;#G%X8}$I8X +,O B=mmmV0.$=) K-{ a9^X|دhT`(D-9~3ňdŏ6>pU0PǬD%GQX{.X@^fQ)RfU5* 1GO1!Ò%V`Ԍ@k!YSZ3`h YϏGU>jƅ V S K6A-9k|l?GIw_1o -,9~=<<9R9C8>lZX$EE&LYę"T5TU<5 !պ/kjkL%KKle9?S(pRݗ/S8,ba(N6P`M2%|-Y\Z!U1Q<*[$ѭx㜴 +9 K4ͣzp>E[K QAKlwE.{JJB{+ftE:j[r1ZH\hQyF[O ^U鎸 5SNbkYWRu5 03BSbk99ԴF\=gLZoNN̟]Nb-zzo߾@f.? ;Wʽ\1 +7ΕP4@eS'ٮh+WnbZ9*GThm(`Q0 F"06IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/bn.png000064400000005023147176754540020370 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTEXg iwJZ,,,8 A<ȸ(yE 'i" Y!E"V#b&_!]'9% BSz/b %K"))$뙣RT!># u(.@  &%;)!$ 芔(<" 'q$%쟩 +'' 51 &H$0$!5#e=N2D.\#'k )_"#h'PI@LY50 '% (t 6HoDDDSSS 777&恍f귧#9#q~ !ppp_V )&nd 鑛" }r N 1%} f&>Eq %&'o8-0eNPR_P_ 6Pabb(&E1aE!&ٟ*-%3!XFHﯶW$,:K%lppG`o))) #tivBIDATx{\Ze(,r-83NclD*^6q! [S79ljMJ-n꺫[vI7=ͭu.JVA.}}ysH3ik\qyf/&B&tg9.rȣ+oX>{ޥBzۍbx=LD4F hJ@Ɨ#ЙS k:790Ő F0TSSot >F0pI\6k:03 ߥe|;ᝩ鵘%}5afZ{kiK*co|$DHbbveN`mr+➳wG &7ͦui^_Ni<. lC88Xp( ˟ 4A^ZYN.4@ɟ4zU42AIGZ13MD#6zEl) h*o+`av4֡XŽi4xN!|]>o %9f\8XD\#1|5c1ٕbM[y!mB0gvQGtS1F覎N0oaFFf6@93bG ֘Ec_>Imk{7DuFېvG;Y݇y34';ON{Iz{T]@R~AOFp }23ʆ6c=n҇ZD,j8śV5> !dhA7nB"s'2[a fyG_Tp"}µLja~#8-S D )2}oFA80$ ҙ=S,dbӵGA!فƻe>ĀtF0B56[> H-6(,q?7|+J98NR2.},i-ǖPxn׵!g$U 5RKA),%C|¸E=^@em<*9xe) o2Q@*uv`GXQHHe$Gn#\pb8qIh)Y#`?vY.֫bZ (,:=3ФYW׃ܜdQe-P$bbz@vI+ /)pH.;k)FV 3VV. ;s(,UGԒ7%0 /d_doܠjJlשׂ2e`ODOvAm6c͆LB 7-TL=tէek2qt!lmHPTq:V*IU __,:y*̉!6Jf CHZ\ؾl=+/H7݇ f2!-c( J+FI}+ YF>^\,3Z7"ujԛۀڣwiU3(`_=wAH:/Gm!j&^GAH!hqG'%U$P.W+~^gCel~[J.jXat+Li^`>#=dǤ ?<̵ޥ 1c},u4ɐ $K &Wo407W/ 9q5'̦/s}TwriegbbW^K>,aWVRgByheI3/Sv^>>hZX`$i^Ջ8n Xff&:YrPa VKUεËyy88g GXlyۧ 8^Z&<;[,z>99ڟ/;2IjW7YY"YߖjQ縕9i QN*[l4>o CՈةgQ>Ujw?s|["A]K2)q]Q-{0Sgrw}Ե療 w5mmEyS7x\j]≓q6}C2 ydP xo]"[ZZ>@q-.R'wM r9+6=+ƕX(x/RjR ZWSݭ^4{ {C: 侮UTlSp.z&hєEr N _p tDt%#"VK貋2h`!-,<*\+3#%Z2jɨ%Z2j M=9IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/bq.png000064400000000307147176754540020373 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE(!F#/%<]A%@+BIDATx  ?[x$ $`d+S H$DryddH$D"ܝ !'KfNIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/br.png000064400000005237147176754540020403 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE"E +IH*C"B}ffvwcyB\Thә:?FʇH9U *HB!@#$ F 6R6R?.LR 59%D*H A ?X߮ݛ %A'F"͔~Ɓ!԰ώ#Ediʮ*I١ݨư?,லை^P:#Cc88`ₕȸ㷍9T&oĆ=T׷o/(Gpwڟ֞<y/L+j5IDATxb``g{g[ѭ+lOK;*TDz\ if@x.2#2 }ahﺆMؒ4&  o@;w=c8Y# MdgtbQ;s b휔ƈ6hP !.to@@9d!Uk@،2>O5:)az3s9}k%&.nBHLY$Ĺ2;5SҠ(ݽv;7su@<$OA9\i3$`2t}ذ"bwL*Yvg$@Lb076g`RɄ h/ 3̐Rog2`pca9Izi, gJݙL1޵}d3°Z22f536 3a_{& Yw9 ja8uj&VzR KԜ\ C'6elEڕYzըIV-\y0[S7r9#T2 L0;jI˲o2~P92>[2QsmTTxֳ?cÛf~-1HE.I9LLYyY-; [Kb Vy8 kAnX{Zs0δ8adcXz{}`cIAՕ-8"@ YxJzwaD.6o4 mXˑ 4{>":)}ܓwϣb[ڍUZX9j@̚K !!!"""$$$###8: $%%/1z~ f_ Y]vmvnskFA#$13&"F@h dhGJ@CI~?%!ilZ]TWÝ PSpt!"y}UX35.0{rFI*,@BLO(*X[ GJ >hl$&MGFTMty?:_b~nf')mqSVhմ?>MPNHVYY *& C=50cgfƹ̽#˴ ;֬;>Zʿ"ĀXFR{$T'3:Wf$#.f;pUZ6dpTwɂASU^@y!!HFs)u)$ ?뿅b#)1:7ŋh(?y~Øy.$EJ1wds6] P"w'p!70$DP[k{tƘǛ%9o 4C2ԓN^O"1&pD"م- 7&kJ5D [CEU&Qu o(6De-re /~ә=1(|ekޮ4 ,%4}:C&,i J_ n"հjKaчU2F)5!`AnAl^bf 7VIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/bt.png000064400000006371147176754540020405 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE N։uΧe7\;8ܨEY%ʐ#f7zWsJ!VJ띂F۳~*9lHNJ 峛tIH nܸiSԫםM]*颊㴤ASrLv쪔#Z&[ݝĹ京) ʽL뮚*J ﹦뻪FuۓNW"L!z~cKUƺj?KcI㩕Wm@].{גF w⿲Ǹr2Z xNO!ȿ$tem܊yQNG CCK`1I%`.%PO㧒֞ia1ONςO >uuuߌpɷkCLR!"ΰh6. IDATxڴ\piBrx@xgxBSxV*`Xj=8]8DPE"mK+3mu[n]n:M֟/y|繻nCt8峄rn@SWw!TZ]ݎ3cN>n"wq0O*JԨHAH^pt30q{<3:,S=jKEϐ9lSfF)q/(7ջP}+\h>RMPV9" 2zNպ&4Fi;atu[uYڜ)e/|dӕqi3P*6D&L S]4'%eCr>E BHU;,4H:&Zd9!l^1 1z7#Ή>ٴw` D4!xWAq%LHGCd3| ,4 P_p*01cҪWhH}F͛fƢ8%s ajo_g)-mr%XCUWF>"kO Xų뎢^nC>>6]<]DXѩ@N톔_oW ,Zoś:M{3R3OFPQՁ9OoAsN,*0#SJY Gl\ѫrA+n`|*L ` WpGYbow@r6o*Шmޠw)+sfs7BjR*.Yo3v3\QM9C:yc%+ZU]ݞ' sJ9(mˌ..PtIE$8ӥ$8D?$'3m%dPV7r̎Խv{vmk%.1(VB F l֫*jH\=vlPTj;: 2k졧_/0D|NsV55*pAQW}IAYgaL0rd+2<(Mǘs?8Wkc1}.t:>`̹6O S?u'&" R"Z &*)h}uQOu Sū|ꂯZJ&?Oj1"6n!ƽH$+3|2joyAͰS%aGGO?'Qn Tg p#B+A  oiL=p8F8yОO CX"g|]L W擂xtM_ߚUBԐ!%*74Bi ˁ4"d^]5zCx1 ltĉn&`zr/ièWD5]5Ȫ9>c}x1 W%Zo]Db%RIB!GRb/N IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/bw.png000064400000000327147176754540020403 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<$PLTE+++ Q:`-IIDATx 0@4`W$I(.UDEPH"EFn`! x|@$ m!~'IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/by.png000064400000004425147176754540020410 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTEBEAjj➞貲%%qq^^vv>>޲鷷䥥VVԼ!!ff鴴JJ00;ޑ99깹22  ܋aaB娨YY길((㠠99Wʮ{{:--簰 DDTTBB""ۇޒߓ+3II**箮檪KKllPPcc ܌䣣 GG77MM=ڂ||--<<&BB((RRڅ00wwܮooLLܪ뻻>@@NNFF궶 55PPSS@@44ᙙCC44߸%%ـ쾾.. ::ۈtFmm33ޏNN||֤ZZݍUUܽ..lsDMk=붸^^ڨYa08 ꩭ!)鸸Bݐ--))yy✜EE:piU'mmnnڃBJIDATxڴ_SgF!\ L!b#( e%A(T(2*APEPT\U C[ҡtPk缹s9ϽHHM*!\ `ly:`@$;>E@Vz;`w1RAH"5uq"lrkl- Hy0\d,0ڬ"`<rK d3zb@ޥC5g "s = ΊPƩMګ )͔ dQA$\XzS*(.vgM/ᇠ4#8EbɘrnYr%y(0'h.b@J@3}h{S!4FN쳶&Wי; w<Vt Fh%0w)(1\]@ K>vN |*i ig knݧ&0 MCV(*sSOg`T\ 0RFphapbpyζo6K%R|2Y64MA\~,4SȌf;VxA8e_EE9 0\ ͌ƺ1l4 t@x/O)oWLjqƏɆcB)a]H2,*\ϗD9Lm *E)v?^}<(/:'jVR HDQc'iVuw8Ϗ#@Z<@v%/!@tnb|m\}3~etL rÅ«-]>yHϽ稟=%'wMU, V_E tGb=׾f,}Ļ%lcreD6Aƀ@>" ƺ߸Yy&%h5s#Ar΋\u?|Fγ cW2K@I.^ a(' hkHҌAwN b@=>;8'#_‚e5n.kKKFo|v C.]p +Q%_JZ` ۾AsI=yIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/bz.png000064400000007071147176754540020411 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE?&!m{IG+DZRM6sUHpwZ+]'mhڹٸkA{iMxR ēL<Ʈf7ɯIyw4ordQ8:gO$%y1,5ú<2kƔS ڽD԰Ė($&R2vvvXp0R)iΤqZKpݷ6č֪_`ig$@ą6g9%ZǓJsQ4YOM}a\1Gwg*+ƽ4۶ceG87 X%c^0 D׽ϴtI9~n\+zdʈh?kq 7şⳎS_/aapMZ zE noIͰ:O G>Ӯ>Ay(uu=عǫ3DEʞNA¬_ | ;Ѯg5*~$~Ldm`em |͵U% SXIC9?G"y~wӞx,~z̕V./T/0C&d& һht IDATxY{\S@C5 h@0KeqG RpE H-x#P(6 Q]mNX5\gUG,r8/sgr.e𫦩 JSEfʛ3$4ƞ,P,,Ǥ9_{\TsR*$С>u\VL\}Lk@ÆyUKhvmEbg-Gn ޜ_Dнa)!@ W[MH$$zǖiNY uYJٲxY/F%候Fi8\݅tk,PWI`s% 2,+l4֤X7`-%yy '{RvȢ2#+"z@ZQ"8DUbA[u BK ϬtlmdA5dI1/"YyND~M 'ګļ 2dS/H0%9#p Lɘ{8jfRC KT 4$\K9zr:p+ HWg%ð~XBZ$Rrv (#k 8>,]p܈PgWc*\n~ u|~,J5H8Fm>>UѤlowB/@rY%oXynz>40~'\ԏKUjfV+Ays=)-D].`VdGNM#msmn|mX %[#B!!&̑9)@GbJImGȎO}WAT f˛4~I_ Aq{-^(Uzv8ZC?U+Oó| ӥիCn72_£/3}gM0Z~Zllpu7k2Y=B\:NSscTj^"K$>]v߷߶&C|\nfhuMPF}˅ιc{ڳk׶+큁ۿr?T"02CC>zs'{hgA{lgjW9VgRnZ{lW|7Br[:~v_?BI*' !a;X$ EI(=g>]}c^| r7#I#ȗiZZ+-It.U7:xy+3Jpy1a#(4A unrXloh<{22``@6K򎖦U ' sMsph $_ƪM4ӼM"/8N`zVߏWK@P!)zaַB ]wr.7,4;[xP4< EUЕxMn|7>b B)Z>2T.,6K:vm֩MC: 7Q>$DIDm,}07.-1 hߑ؍:L Qz4]GghVKka;mT'IA·_Ly<$s4jQ-TfiN |؀c )r *ʙ@x0!H|_ߪgT?<0 E\q칐9(Q(&Pc=1nSccM=ߟy1hZaxub —x4iƠC8;᠍9pf,G8fe&H('n|< Yœ20숯n9EQ\*\a@>eïudsY:Zؘ͐"#:'#0666԰5RhSkL(ھ c Bk>yc eOQ\U|5S'OF_Gk #ya^{sAqܣzAtm4_ E,4T4%#2Eh HUšˆm@ Cܛ[xʐ $6=p7yV@J=MۖI (5:oѼc+P8\]!r&(1\rdI{R64n;f$wlknW{xԔϓ'O`-b> NGN^Bt)×+(Msl&j5!X7T6`yJJ|M,gCAK^7"ŧQܥ""=<$պM1k(*)AlZ{TUҭl3iwVD,N*YЫX:-IrGV'Dy = iB $D`AYfL(5(D #M0NzIǨ4 ^Y#u=i'<-:!.~H}sIԔ{+{/z_$Cr4;#Jȏ;#YǓGVTGGw#%+rH3 z+)IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/cc.png000064400000003776147176754540020373 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE~}{|zyxU X~xa$v!jv;F(,\Y2JpAfn*} 7|"E9` ZD; l=3M!OQ&e1 's~ t/'u|Hܱ~l%tƒƏ~n@A զ}!ȈYV?}{џ7"vri^k,i$C8,p^|gъXy  ziNf4>ttsmIDATxWgXTGͼyof^uaAR^BG T% Pc;Kz=1cLLGve7=3;n x^!`\鿦 @N_eY#x') 9seXDY%JP\@쿅bʉTh\Lvo+ɮm}]0wQLL.; :ݛ9[Kxʉq>} v6SN1"'8STR pb|!u "09!r.Jo42s)'Dž_7_Xd(9\r"_aWF.sK}#[qqG!H01bqOq/(=/M=zlF)zn.zᓭDa3l>}s/s{ ^WcG&Ӧ"`єϑ]b#^t DvIC/VYCKOJ=;&2J̍H|J\H9u|#X!"dc޹ =Z^1Jb|VN 9x%Tl*MHN) k$sA^\in%snqe YTΞ˛J] J-rd#dE榧Ʊ3om0O0f̲ z2Irk_hno5Q=<@ '䧳ʠ[Sv3"Uc;N2JHP0|h- Y.Ѻȥ)Ҫʸ]IC_x*c/*Y7ŮP%!8/dUh=#! z@˓31o-Bh#b~(rjR̯R]Z֞I ZZ˶x{^\o`9"quNY{1;"Hw]5%}5y&@!,Ez(8rHO}WɢcA5fԜ֔O<5춐ЇJW xM9R꛷JSPbWmy|qBgj^`nvKc~ŻIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/cd.png000064400000003515147176754540020363 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE!z}|~ ! !" {!! !8.[@e `"!- 6 !y5U" ZyP "Y5 # P!6- yV6"!"zU5 !aAL5=E.L 2z!~NR S""wn~fvH~dl .!3"'5` &K5}kx+-FU[8] RXB$ޓu!D; t,(0]b[S8i GD/ԍ{6 T}c~Q%(' py}$41~  !zIDATxu\qLj""Pq(nb`+("bwwwvwwwwwܶ~羿-+a]8svX(ڴ^Ѿxy 1HE *Xb*v @@CZb,<s 4FR붐@J'Fj_ s ԓb,AV<TPQCtATeg dD> l)TkAKUYQr0™qL`שa8 v:ѧ/)}ɣ\T0rᔌCqHuy*gܨIdfy%?QBf{=ÖTWFRTs?]bk qoSeq::Wd&支l$}M/2$1ÀH[gwtÊXe(wO*W4Gq\/ƙG7EK?sjP%Z6C$jtcR%IRW ȷatDŽ;RH 0Kfc܍nL*  $ZZ1QF7$ՐUQZR:x|0Lzdwg2duze7j8Mt~hׅFI#E}>Sx0~cWS3ՒfrbԠm(WuH̐a7=N*$Kp3vz rp^ 8~r,2! pgnF'g*<)*of3R .K[#%х'ULٲ2:l{Ggct;:Ywt6F绣1:rk\3eQF'_&ѩĆjtM<46ft}2aHF78FR"ѭat+%BJ FR"ѭat+%r@FT"͗ht(BڷFRT l,)2l=hIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/cf.png000064400000001425147176754540020363 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<ePLTEUUtTJntJS1++%)~р~Ӂ\\+F}))zz88~~T550hVVWɢDDEkklQuoSK5Z!  l(**3B:ii-^^eeu==<.mqFPPoXDl?j+LL@[ TFIDATxUOQ᯴V)NwPݽ! ¤dh.ȼ+ə<9Y3KY,><^8@c/,H~<|ա(:#"c!"|:"JH7h;^x"rGF1/Nok`FQoD#|G),0!q4IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/ch.png000064400000001011147176754540020354 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE+%(5)ﬧ苄J?,)'=1똒xo}t&K@+쟙舀节<04(3'#ZO$me$@4﫦;/\S.! ?3'NC 뜖)H= 鑊ퟙ&E9%*Fi*IDATxط0EQ8 ms9gɭDcw-Ψٝ!HNR;.t~8 @pL%HL4BQ @+Y_|(samTD$)[F1¤EL烮= R@xI&H+zBqRh|j.J~6_!o`0ˋIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/ci.png000064400000000274147176754540020367 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTEܨ5=IDATx yG6HF,"H$D"H$D"H$D"H$&O{!gPJIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/ck.png000064400000005435147176754540020375 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTEf.eb]dc#'"cw_Ԓ55=U22dx/MO]!#|"'.` `v$ȅb_OPqq.;U.H4I)&33`p}!"{""y\揞,,z~4k_sdwrvawnnstxV;T!7qnHJ,sMZֶ^1?S(ə'\ :(.=ORh6_8?VPD‰k%'\1ͷ} -q931<U=%IVD{ | KyW݈?WґΏ ԗjΜ=K!{>Rڕv!}wZwy`[ې fwe5$\ ocgw8ћ[pZK~ 6Q6J7Tgl^ZKn9;]op݆Kjq)(ʲн+*EFQlG(?Pb/ ƞY~̢GsP@|Xchٴ"bTV5W,lYݞF%l?uumzĄqNm6r ®`Z;{1)5,&@$"Oa4HC,1 nc RBYjh0 X !]Brai֎P0\Xl"ى\;B`e ;R!?c"ֆ-ٴ6O BUPR 858nB )b,&'7eR ˴4AA3jRwRW|GÍ^ A`om`{a:.Z# \n%Q|M2(WWTe|"Fᖜ>0 (Uv;َ!DQ5M$-HHRii@' ^.E5:i.Hv1I4fG8Ƶ cFD[gj"\"w 1Ԅ%Mg^IO46f3^1ߑ'ץF=^ >h6um/MTw:v>څ f]TUM+Z {nCM[<c38t(T }ORIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/cl.png000064400000001423147176754540020367 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<kPLTE+9-*:lZ3m87.14602,:9e513/8cMLhuσ&=nAeAhf`ힴ;f'#P6+,Gao@g%b(pKq4bdq7wi <7H4,\Z,j~5tw(S%V>\a>IDATxUk@̵[ٍvuwww74B =0g D "wG0~$6bGxaGxV9rAM)ÊZ ƙM='}Mpj`rC?.W\faCU GE0"quWKMub}'`3^xhVlfs˄#/; +}=3h#EIXy ? 5Xr3rVG;])EF$Ӆ.ln=2\[MD"B!B~!sF7-țIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/cm.png000064400000001304147176754540020366 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<2PLTEz^&' #?AK(a& '&8#'' ''A" %% '& &% &?"& 'q'&S!R!I!~`6#l ':#+$cB"D"!%4#(K!)$%&%$7# &&(,$] 'U m'{(IDATxR0`ɽ{'{+.Yto$j(e.Mm @b?@J^urDcK~b< af,~Z}l,y/ELH. a۪*|w>SYOӜ!7CrwBP2Fli+:+՚4愕Sy)^pN!rrt0v%27r(lj97F.+2# @ _ ?HIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/cn.png000064400000002427147176754540020376 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<1PLTE)('&#%" 3!$X *4,:+2H M I z ;%0EW =R 6V G <g ~ 9s v j J S U { P J +O $a m ;.E >r @@08e V | Q -L #u l )p g y v 1| Ct 7$/Y s AA|IDATxU@3I ,tݽkuwwwwwwwwYeҫy&r=I&E e&kleMߺn]uțo.Gw Vݭŧ^sT<ob0n%"#ewROJ8ac^)|zMG*6B3c7MU؝Xi\?WqdmnQb ؼ S\! ,l̕=;-UFuђf"N5EZ(%Kiqei-_ 1??AC]LN\ϻ,i36ѤxeYo;O%{э(Q#d*c f"3bKS=T~-(ЏPu8*nTEAOLͭJn~ss\%{ UؘrY)(זӕ l=Ln enRpX?اԫ ȃIIǗܧYR7?ZZeennO I9R5TKK H{FFSl-%%@?zR%pAL8K9CCSWWOON#33 &*OQjVYQ((_B;?= c$kTTL.K7PP553A=nL $vX>9;;Pп4@@hh .q-Bd0@}@1=v*}R5??P5@ NRRUUl-e3+-AS%EА!c!F.BǞT%%"", LLT€{IDATxڴu\Ao8h<w&14җr2M궣bKh=| p ~3Cx9[̬ q˻4Zb+V6699o/)Ȕf )Laq-t]rXxf*dEZt뱡R\1٢]zYFr|&0r6SwT2dMA\ /gxY)bH7u)eG*`LRӐ]ŭbq+<e{ɱL *͗$p]wn62 i0 ^顚Ғ#lEZKݺ3bW]$ )&R*4h8IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/cv.png000064400000003623147176754540020405 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTEs9)sEQ/-om xtr)}á"9<^w tRMTW{t!nv="laHtΩ-2dy:3/t"+h {W\qy16bsxuq]XNl|mA<uEVQReg zU=xr$lr ANMJVw lE%w o%-g}7)EEYv=AB[O}8v s'ٲ k s. /$f]JsH9.ӕ67'[49`pr?1y r r n)i(/fuiD*o q n$#m h^JrfF ro3[ݶBDZuѮ+!vp8) #ǬtnduLX+.񨡢0#-CPDQs;(SHGXKGXM(+޺ %k- - p r=?]t>. k$z!x!y yz±sxǦ ƨ5rxp@u.y.(j ȱU |s]aZLe )IDATxbadԒQKF-dԒQKF-NHY[(J]&+Hf! `[j //vM4z jNg>*e}yeYYTW!7iC@ OߜMKLSS~0W'=O)O}c~[R13x#b]F VFz҅S$+ϣVpI/04TEXޣ7 Wǻ)JZq"|^lu_}Gʫn JGuyL b0Fzv(IL, 7_T&s (R1 `ؼ7ؠDB006 BK҂+=~gVĩB*Rϩ7؏Kj&}m_J-adXǗaOʼnE|NRX"e EƎΌYbiT,s!lK8AE=TG0ܹqS`(f9ؒU[LȎDXr+nP!s/Xv2VBaJxmoɁ( fMs8o.`ΌN^Q3;NZW,EAr|~||(+V9:ī@؟2K&1{gI5'N`׎V%3g 'p:;NPI,H W̸@(oT2LIl8@VfKߜAKdunukCZuA0A-1R/Q l2L7m7%!Zz[78SM @Al ҜvZS!*V3C`,/HPz&"@Ukn8{n o\妄s'j8P\؈'ZwˋV3|-*& # *_eIUl}C,o0[`❨c_ M%Kq BMsp]pw[$GB򓉒弪o`Q--zAAij `R@~N+eFIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/cw.png000064400000001645147176754540020410 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE+) 1|"wLx)~!y&|*'}]x*~"z xw(}${ y,Pn%|HgQo(~%{>, 26Bb 3c~a|r\sq91T;w<]8Z6XF\/`xj*Fa`{ .`{|75Tj8S+!z"y7u${KfUrsB?\p1P9[pf_wNl@],-#zPg11>)~ 2u8nFf3Ro 2Aav'K.R<;Ql.Ki!F U|IDATxnC1E]$/XfffffffffI>+ sM`FW%:=ǙTNЗ""͔,@Lf{$P܈%!KjV9ALtK7/|;&ÔhFgs$!G[R T[_!5z0"vaZwRιT18BW\$W%IRlU8BK!&װa\88#)3k䑤91fxDG,@$œ/eڎ'TFAMVIz˥}\333001K$$$p8!BW;1IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/cx.png000064400000004443147176754540020410 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE!B9999 9;@ B=B5CdiBBE]!B92I*F6A:bvdc C )8B\?C,J^#B51<B<3Be?9Bc?2 C{qu&#"djE@U@6 K<;Tn?:ݽ:B K=BAC>i-%<<Ǹ;8=CUk9:6Px>~>>B$9=%"<#?8h?>BC3= &gz{>,BG:X '44Ja )\q˯]?6 B7.HBټV9eh8>,2C3BϪM̤RݳGc: sWvU\[C= G!B枯;GO0A٭KRh9!&M@%= )1_IDATxڴw\g穩H mCH0$$Z5VaE@ mq@ PX.(vڽ.mV.$|>/|_>zs5w(!`؈ c~FsQ\Cl+@:\C@߽fe!6q`L aeI 5˼_8p иdL\Bq%%͡4, >ĿE. {Džh`>kPU˶xeԼE4rE1 <ģ/oرDT|@. Q\&*e %1Me%wީ#"ݲ(t]@]\*I2 C ̨ٲB!Sv!>S J-ֶ1qx Cƍ07VQf8>-ɘRiesZ4c+P!Q3ћLjrcHY i-n^le >q=r&ыL9ZIܿ AKHlÙ2/^ղO>1kal)(0h9; YҪKRi-CH/kh;'fPY 7Unjg&hqÁ!PDli D:G~uCxc<$(*DF3]珤Ԯ=*"bk7hٛ42:KjFj\[W'p]?}{3b랥3ҹ cK2b9uN ˬޫƚlIZO3/AK"ȓZ!\$MT2yk|UMN4>vE0w0.r@o}Ay>q:LO ,j\k}qbUdŲj[Ha2AaJa\,'n ZBHdz?b.lae'3ffo$j[{cvhh'&]XmxYZ'ᄍ~e1՝+d+U'Cީ0zU*'%@j 2e^ <-Vp°PQu\/.=٫4:5E\ s\,ϬKF;~'ڝ뮟o:wC'MOdљ 5I+W.1}'6Q|@k^K?"޳|vG^|w΁V\ 2y2Uڶ,^/SDV߿(g#,Rz]ѪCf*U1\jEz0USyoL}1ޘ`ȇ&B@U8Js?G*Csq!*Nos !֕6&p>~?~M0[ IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/cy.png000064400000003442147176754540020407 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTEvsunorqpt굺ŶtCQ$مxaΤGT)~ډ%˽ŕkKX.kqႋmfqN~VʝHV+OYe>ۻԯ9H^ye؃܎/ݓ6mی(xjuS껀q|ZĒxb׀ن 뱷ǹڈ"y^jDɻˠ@N"Q؂wޓ:ES'ݐ3v`j[st뾅ٻ~ w+; 뿉wP]4iów؁؃L\ř[Ӭܾr̿MZ0>M|³}hv ܏1ل״ط| ô{ۋ-ی-܍+;JvS$[ Mw ؎5?oZKHP 2;c (^9ý[AewH ?NS#W0< 0oD_֌kb*ҭ&0YYTDQ0 Fq2۸IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/cz.png000064400000001215147176754540020404 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTEE~ =yD}H{+I(W ?zHf9v+D}FE~>:g>:h F+E}f:v@9g3Y ?z?:g|*H(<{,[G[ ܕD{.IDATxڴR@ a&p{nęɤV]rW<]qG#D!!c3Gh2,.h@rCk].f6c}L1Px1-P cgAl^3#1 $@%ě!RbHJ h|N#F41rdY.{*ė;i~*wPdt,̐#uy2d?˸QfHA} \D|rDqb$5xeAF QD`!f툷hEROx|#}bu]$cMo#2VX"'BO<_cxo"_،`Z0xnIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/de.png000064400000000311147176754540020354 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE3DIDATxͱ WTbvHH@,(S@"H$< *H$D"w |'IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/dj.png000064400000002422147176754540020366 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTEfkE]^c6688b~~ƀlok倾mđ65RR||^QQO87CCmyyGG}}}}Cn~kIIYY>=PPmm94n??77]~~u44..pXX##kk mzz[i77jDD~} WWWIDATxڴew@ͽ LJ@-RU(wwwww+#²FO'yLė/L6KH&nWV]#LSJ5e@V{,?s*r416fʝZ3EX1gtj+jbD0Wm)bD0CUƀLI)bĊYtʆb:5•U@6j+Ď(7y٤FƸ_ͬh*CrvH7ro1v6*b˨uJG`(bGcUo197`SccPSތ^?8ҕMX2ƾ ӜZup| G?Cnvi,1tD36c >G鮅纶Gϱyu+Z dzˉc;olFYFE 7lH@}%Gp!PYzog,6Íѯ@b#w*FDwČψpB! A<\##;#b]BQA(ETe!p 9X6G l-+R!AxujTfx!< 73gxZ<Á=3b_ 5E9]F1*BA3,:C km@Jwg#g^ӓ*IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/dk.png000064400000000505147176754540020367 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<QPLTE.- +7 * )' *436 (&,$?jNIDATxI @ Qgϙ4tF!CZv_"j!KQOHP d-j|˶kES ӻr$ӡ"ǐlIT@hw-%GIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/dm.png000064400000004406147176754540020375 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE) 0#*QiF )0\M#iGIG( +' ItQI,XXz{,;1 V)% xFeTei y{,{I)F "$%%+\T%J UU l+)3*iS)j, klGټ: % < *. Èf%H $'E08{ !5 4 2t- m! 6 0P Q(ErJ 6 (vvb芺wg'<= (< g*>( Y  \ )* `6 W _'(& 8 ' GKH(JIO T')a)1eTFU2h }I4Y}@=!zB9@]r<&?R r q {!d5NUM`hG=WD? ֟;&3kep<]wx: +/ wM *` cC?IDATxb` 賰X3#(3PZ2jɨ%Z2- [lɟ4D{cV$Xb=gUU-V>{]D}KKKI>35-Y8_Y?`kv^O-+f-&UeT+[$J\&e_f%eb@;~l J[*,>V8:_\G^Ns'z}b[)l k>,{H(Zqrp?BF0f¾לt" d@< -Ꭶ!#7bR"R/5@f0k\k2^޽, ]7 LG#` ~g% %E`վ-- "wNHjIԄ\AWۖK)O2o\r&$"|q30/)[$/%M%KZ=9!j@}OU2l~o >mBR`P:q)p{ 4n+!K5A/h֪cC@ⲪcKWVk ^T 󉄋YܢT3h#^SXb̬l -D9)0D3078K3%^S-0 ph ,xSNaPYRKᲷT7xmz7(K%o\[33敽g}y9?ns&\k7"'Y::Ҝ{U.yTHx~ l1 xi.˷mQSQ-ft\R!^SX4펧xM+3rΟrz5C*oĒ-;sG36xOu R&QS)s^X̜ߨq7iܾ;L)Du3s" +xyXE@E̮NPf `${s{)Եc(d sT538F5Z<aִn41 $f0p[̈́w'mj b|hm|[ I\]+kMe1rh %\,.nJ#_h V=9Dvb*5x)CjG߹;KrElmИEGUvK+7zuT䗖i`;V)K0Yɚ™TiiXW\_TJw[Icєޏן=ApYSSS@{S4XXF{eleԒQKF-dԒg @DIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/do.png000064400000002405147176754540020374 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE1)F'**/%8(2-SH,Jw i#C4%n㹍㔾o|Yֶךꔆ㉀vĿϕǪ͓Uo_|C5xKj@߿!#EmV?M&|]Vzc\tT/,pʯrhݕ?td)Q~nS|rngƼ]w$"QGdܳ᪒󜸯t&ࠡ}-`wH*WQHnԴԡ(}[䒆oFԱȆlyOYzIkYsBmlT5\ނ`kMϢۭ|otYzŽN; F =-B2ASwsAR͍mW~ˎєqƂnN+,V̑pBXxq_Mzؠurš_uL@銀tYqG٠Ҷ̌yyIDATxb` |`B ["bINb)X""H,dԒQKF-dԒQKF-dԒh ?`"3%n ˣX/X|-hr>%؈ L˛lΟYrIHdZMLL5<%_|9Ē54Ĭ̥|qb22^ݬiC ]4I+(L[ r4DYk[L򳗦%Z[WFOwطJJ,m,9tUf@ {'o;&xﱞ4#̟;j r|NʚzWVxLHPٸdFjwBR,a%U(:2Rtvb yb|b^qK= DWI>dԒQKF-dԒQKF-dX`:d9CIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/dz.png000064400000003327147176754540020413 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTEb34`1g9g3c3 4f3e344 44( 4h3u4 4d3 4(3 443$T35 0e|l9' 04s644 /8N3+4 4 48V,{ 4-`3!\3GG3 .4拾444 m?JK7용 ^3΍-4tꎟ%4(4:K3!4UA3듣f8)]39c1 0QC3c3-e;4m744a=34g~+4`3Y3 4#.4Aax,43Q脖4 44!B72)%4*c3,-R3D`EH3j_0섘,ꏠQkܤ'Hꑡ 3&.W8ݬ4Yr ]347 o@/4X3ME34'Gk84'+%2엧 3`y 2|Wpn[?36M3희czSB4"D20P3B^BH3?\)40Od1p74VA3v44&4wv~14Vo鉛-Ox34x44)*J(;>?Kg/Na1&'j9(S3DbFaj<;Y 4yUB3 /Oi444\uU2z5Sk<6FbHdkjmIDATxb`$02 F-dԒQKF-<3%l?f:w%\ls/;|㑨)S7%lKorHɛU%gp1mV=˸LCZꨝBrjsQ%l6_y!VWfĪ2Y¶LXl7G.E$,a VcC(U,s!Ʌ㫭` ;W4ر+:[vLl ';Z LΧ|]HRB+ O8u! aZdRH4XC,"'DK=!ɗc >qyh%@%K8C+] fI5W-m᧒%lg!%<Z8x$~fr%#*Y ן ugĔj"U,Y"Ĥ/ ~L8)1$%lȖFo K7/xL%PĨ{.P\qr9N%^г_O8 M]*efi,R.Ip>a7/-W(gK|"j`ikSAFB*N-+Cu^VlC@7o;4N:]NuPv H+h!VXRŶ8 ׌7 HW[u"*/*!UJ ^_-9zě*x1)-vg,PFd Ņͳ>7`%li[ yh0*Y=_6V=szVA}U'lyZ<kZ6e%\|<@9K+)UӠ%$ɻ6Q-uz\l\se&m?bǨ%Z2jɨ%!SIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/ec.png000064400000006306147176754540020365 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTEsfQan*;ԗkXDufJ0ʒS-*JqW'Jv* Th3Ctɷv%% /6oebį{q7D9z) PA Jvmv2դ-Ƿ$:-3ηaS!w1 v{*Q)"~(6zI WL,Ee-lƫ3b!C@ǧHP*vj̖_;JGDND&/FH#*;B !G8 -7ekԼ %E! y WUHIY @_8>e]1! {D#E>C`E3sO \_z~ȳZb4&Zæ \IDATx@ 1`zQE Hx <8" +NQ*(PU(*biVW ׹^?}@kD$/r!:ha I2R8EԄe (bP. gQVVS0.7M*Y%+y$C\RE1+|R"K@x'Y59`ܑ\n,73eNNC2)A=pOXuYKC\ `d Bj4BrA8J3CƗ'P'(Ir@+3 쭓Q $P '0{ &GAKmLHэh Q P:1y$qId%Pr0=BR]vxG@''u8Z#kBXta"s;D§:Oa\֣佨{ZoPl^F"̔DU˷µr}H,ĴSRzH(I'20H~qyjk#38a0)I( |vצ>%{{ ^ƠFw z,bZ^!<6}zU=rs_2ҋ`ǽ:=gA>22-Y|Go075N+xo2#@qdԹ ^I*g~ރ2Y<"zς~ {mgMkٸr y-ȻD@CDL.c D>ꆭ۳`bۥo[~*Oo]0@R{WtYpdžH~t۪o.UUyYű4Wv#j_> ^;{Od;,!6 sH1\Է`^|&sFӅ{&Ndͮ0<H Jz#ʐ;)%dTUVHZֽ}5lw_svkvw %xg葠ɣ˯?@9bx6mZEMvtY3c7YٌCfOJW}٬5v)CAF77[ЙHcDl fS!WTF:9Al Mrc#8DCAet@PSȵ q5F"֫FZZŃa(DAt|ƐGFLHD6?I,޷O|e m..>Cfd=lp'pzPі@C)>5[-m?H&LgbTԀ"^plL+xE:_"+ؤ>x!* L3C,JF-?><ͮ| -ChSTFEvkViei7y cqTA- GTd|k+}squ P*~ rQR=t5k_ ]2 hex -0Ңl _G@&%%8?I]gW GWiPBuw ?o%Gã;~߮{j#!vQ[tΝsՖ@V֊[VVmV1mu$d$`鄑:DY56%YqB ]ɦ?u9] 'S8 /(OZ419_qmJ: 5"o_tf NLDuS y)G ^OH{&&B`Њ6h>ɅIzD>淮E]=F@ˮX&`{o^\3!? bGq1OTxf" v*H/ {6hRF)乢HYz/g^M X}'RzOR}W?X"|Z֥(n/+UoA*C~- zOҷ.>pp.QZ^^y%D }(( ::Cٸq~9yy{SApcyk4%;+@@E.MM &&/2 .st15s{0033cf }6=7YHIDATxUXQpYkn)%$UJADT[1;H.7-P_Rv^̠s@!;q@r@ `ߖ#K=#' iY A2ˈPnP\( li*}xQFA :)WYk)SZ!Hws=Eh U[ !HBb\RI!ȪQb؅xi[B"=1FiO=E#R=RIH#,H~ĺ4<-b_դ IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/er.png000064400000005535147176754540020407 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE'#F"F&%╼"$ #!&E%UPq^)E(QN'E&aV%8%Fxb -!6܂fݒAF5A,꺁=Dr1>'Ԏ)ڑ5LL'.H͋+;2yЌŇc@ G߾% )Jk`a:)/~HsN6&ߊj1ކh$G2T& 0>ANs>}!FGH%H0D!DH&F& 2x†꼃t_-7oSR5 s'EmLސvNAg8?G}x {6Vb)&iƦts:g60u`dW@:֢zyzŦ[rp5OWVPXiîg^h:u/J:Qx+!Ŭ߮Ci{>אr~ٸ0SP,jy^Nj{1@!oRٕ-SAMY\_"{CGzzh~?t}*xiSzK8<_6w!tln&]Xr%)|/|3>SWJnmUL攆!SZΩ1HD5>ɏs'bbbֱ>\A; YE-Y4J^hk&xHoZBdzl 6+TuUԋX>r9KAeV.q!x?&f _0.Vݺw Pe(vZ ^ZBҴ eTKJ:n8`E U6CCӴ E ]>@݂fYٹB<)Xwԭ8}^ߐc;hކ?U2W+\>|_jyŽSt!I">-nҴaGų"kvZcK]5r+رbmF&?K悶9O .j,ٔ9%7exj BQ0}X;zCG  V.՚c~P?f 籇@iz3xr9C$YJmX C_2ǒ|!"@. 0OMK3]HIҳq~ \M;B` {ԉDr,,4 'ohUX2t!A5GWa/?;jt)Z&]jezFuJ}Ѧ"jϤ ^M!s:uӴ Mׁ~Wӻ{ 0x?MIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/es-ca.png000064400000000436147176754540020764 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<BPLTE Hf  +     V.rIDATx Pa k[G5e" hT2hwvEk2&3SFM/0p )3¶#=jgqBd))2ҿM5ZrQ-u1 -;kzwd҅e;M%LS3Giawc'OVM%_+ew{KIqu Yu%gWI̟a'˨c'Kdxy3ORUU}ػR2~,*'MhY`(_UU}w뾮KcɺK&'5Z&TPPMN3fY2%6!M<8H+ℱaə X[ ,biV} Kj~ֺYRXtrqW(sH!ض\``jœ;OZ$hBsYFœ,M :h4-Ͳ Տ-{^xɧP'aiiiLDEk1͒4MDKDR&pc#sN 2$I#> :v:6:ђQ0 F(C}<#IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/et.png000064400000003644147176754540020410 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE)!!kƑ#`"jkfghieٻ5##vKj)TigtƳE nWQj s m:|v h m/bڹ8ֹ:dnŃrQR+imdf>oh ıG2p2}msHtpfl:;YKl#r*Piɑh^b=u{OZVfn(yӷ<\W *C~i kquxy&IkǥZkjca5~iˤ\j3wm$xjBAPoO͵@? o lkƷ3B,r*z 1GʳDc>lIik5"x.{7_fdԡ]j*.1) meȽDm1&JRD|߾0`Y) X:| ijǝ;TkwOTAW)xw0japaS=ͷ=ywYP-4p"i~X,8O1`#[jq!#i-|!Jii( D*./^RTQRg)+ko~r}L''˳C!b˴C#'bdiҞ`fLi:IDATxb``Q0 F(I&&I۟.QIִJ2/*VMϫ658M„l)k/2}HΨ6Un xz ;| [  sdf[Y"ſى Lo}*MffjQ+vH{VTD l^:?3wJd.nٲKKz_K%K4Dky@Ӣm$(UU*mL$N:  K K¶ 2 15X ʍ偽><`!.o=QjXȚZSςݷ-2n~c&4?:/5,,Q.P9Hd6jPX˚ \tXJe#`Hs 6PX( W\izN 5ʙ- {ZʩR@2%# sl Dވ /ԩO4T$AyBP)TKZX .4WeTf3L/\Kp&YDVGzjnY&{bgXKI` ltgp5`K NqX ;/t 2[_ Ҹsuۻ+pe373 :Fq0*,qjmej&HuKulnt4vmB##-,&fdd%QKF-dԒQKF-]-sZIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/eu.png000064400000003501147176754540020401 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE32103/.21,&6-*+#$=ksY"H()?YtmuX}~O7eo] 4*L2B@ֳJRdhE(;VvC 2/N~/z|Q"an_4/BRcj< 9!6@(D F1P|DvyTlsZH^n' :-K%,8~~Nٶ\jb+5Sz33ʬ E)-hq[88%JJ_mWhe0;7M-߼AZrM\r' : K$I%F:(Tci3I6A0?: 9LalI;6E\p8;<1rwU>5A3̰[jc#I 2_laAB/!DJ]o*H'8/ 76,+K|}O0'ۺ߹ܻĩ$ǯ"?3R{CXuHYuJ\q,&J<'K&5 7 7 6 *EWv7O74L5,BL.94L=$%io_ͮ<<=<>>?=J89 Pdi2O~12HIpIDATxb``L&.6adSL/ ~JEsTLL+7Y*w^`X+PF.-`Y ƨ|?SJv\L<o|l5>,&_374Gϰ(LhuVOX0J (_IWZs*kZL`s IKB1gK4jbc%ˊ+%X]_Sn>8ZX0Åm"% =C(F̌T6gD2i U%%HuN4SHDEaD^G_nlWw3:gA|t_7>|+Cm^B$YOndR`#A 3p˓nffnv12e!;ÀnF(Kb,^ēZ4fa!&ʞH&a #֭7Z]_LOEJS2.rmP0%+\"¹KzI$ 4uxS-QzΪF6W0:jEFٍ՘H l zpK(3p-v I8H ę,}Qěɘ47wM-kMhkH!¥6l.B"vzJvK]/8cBkgw1r}ocZb.KYKr[[`U9r2g":7` tm9zڔ ylzKԱQ.ᇲL`gLy=R+1{!=YŐ~p?$XM4qFj]Sp(\J0}u4Bg}q2aUg'@-BjW\ǺpQ4MͦmM7I01r0{Ѹ71(``@c2IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/fi.png000064400000000603147176754540020366 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<~PLTE5-{*y5_Y{0})xJ|}~|46`63~4.{KY|:3]J1~Tx6(x+z1}Z|3,X <{IDATxGB1 EQ7z7+BFI$ĽcgDْ)2tA@@>lOY>Tz/ =ҜB  HoEfO on.̙'<F:)ȏ#CKmK`e- IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/fj.png000064400000005071147176754540020373 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTEh.j}뚦!1Hcw{Ғw4ùD [战*uk!iuɲ4aeJGK[pP泒ɲgj}Gj ;{ (5mha-BR/&_'mKnףആY*18B!2QC HsAA}nn oja&v|H-`e UN@$:"B[lAtCuFlO֪G|6CHs/]An èmk0peO@jQ1a֧L|2lTgV,UDc!U?Vg?q))&YD BWu켡UXa::S TY,`"Dи!ʭBkkՃձ-#IV$ZB>Mn fu!D(@Bpbee&E7elA(C" t:؄!dJTEHQd$nUX3A4ͨJrHFuv *I+TJA4flbUC4T4j@4&()dCF J>n8JeVr7# i.Vyw{pKޯZ LM4 M֡qߞԸ~ WTo 30@`XDHl-Pڇ<1i!RYɗ#ۉY_ܪ9+idYV1='R!1 _Ͱ1v<_THm2[ +VBD Ϗ{>6L.elID8١&Sct*CLbcڿ>qEߣF ![ TMJl\A"'>}8'7PC6qOl$ǭjRU%KƟ#%)C M|}:)z(@a`V]J2^NC(Er7ILO=DWֽUQzr{ 5{\9 VP+ 0E)wįg;|*tҴ>wP `oZEKnY⌒XPY,V+XXxHڝVOnP. `iVLwat-lU5s%ML\:ҋqMYջFQw8**P+*UhY)M95Ӌ;=뭏gu(YcXe劳*+Vb\@`ހe 0 yV=Ṱ7Js6j;νXbD=P3Y.xv})-z-!+ o8mZ\j@&mw B0spL s 8sNpAEo ;f bW:fח w3I4C?ʵˋ ssی0<ț*\PRvnrX:^z[3 % ;o* AXΣ6w7 ud{;yEAogXn? +,dMأ32T̻\eBe1s>P#LDA&L:?LD)MiJw'$)?IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/fk.png000064400000006014147176754540020372 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE!i.ا̔PWtfh}k~l.v!:yȓojUvI'lcw!tM0rq`WlxG°LZ&O/P2WÉݥ5x$@~51K5KOGustFjspfxK{eeHY戗*F+뚦 $kXkszEY (o4ydn>'3Ӳn8ФL߽pKGLbq!^H̴%hвlCk\)k/rJXaxm` { h?wUFrU <oʩTl)Ѯ/ruɬ!k i 9S,@\#Z%C"i!iw (m"m"i^pGwHa+qsb@ۃN=Mbs6b=Qzbv-߈n:_x iČ4/0i#m"j}#j=r#~A "ig)[RrB= aI3mH!= ƆcZ}lv΋3 .xu!b=-S/-N4k4BnF7rǎ-FH` p8|ԙ>CJT'Pvc>=}-s0ύEa3 ,C H viC$ ;Bv w ݌Fw< aD ݦz2Ine̬[tj>&!h\D*"ց\ 0uLV`Bm9I IJ2^ڶf8Fŧ/.a+I<97yR>VZWŨ B,_9|cR*U(a4d}RW8+^v!>#VJLHNXR9 Ѐ:D5@E l3VD+9ͨ !.ؑ܈6Vʱ/NpM+beԽgzǓՑ;wɹ=7HZ̄}NYҊ& rǷim?;WQU ]ޭSV} ˞"|p`/Tk|t"]?zA7ԛ'?e_1 h2ﯫfWTSSK.ïpTw&I9;OG ^t@/8}v @x̑uSg[xpuJٳgԞ2 U 0~To[P(\g2x*Uʗ>aȑ@HZ%0Ir6% bFDF"`4ђ,Xvl?aDatɓ;m~Ou "]dJbӆ ni/JVANvRE艤&UGv =? ǐ=M?5U#l%ŭ-m.|e|FgíŭV#mrs9IIPA- (nU~fૠM05)\Č{ͫK [s[۱$$ƪݸzQ[F^FBI}VxM|b b9\_m" Y`x1R#C'9Kq~)S>H'\}`D:We5<T4p*!eJ Q%I *%M8$x 7[IK,'\hB IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/fo.png000064400000001313147176754540020373 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<8PLTE((8'"'#,E/U992/#SCl($+:988,E5pX2j[1h'"fh""('76(&T2l'!$TJqEm)/q)PDm4($Br!9 Q(%)-!/V/UOk8m3D'"=h9i|&@/X9:((:CmedFq+;#Ns32(&Ch3fe),G,E,B+;y;c9+9Bk8:9504)IDATxn@k;P:iJᔙ ڸV仸.οͷ;3D\h4JںT2M @ ?D=@U=71:${;DgaDϾ%QDL^ 6ҽۗ 呍FGh`+lDEC5h"C>d'l/c/vNBlgV^C¨|}C]jLrTDw{QJ39Y/EpĽIKARɧ lF69kOIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/fr.png000064400000000300147176754540020371 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE&0/x*t!>IDATx sol?Pž)3[$D"H$D"H$D"H$ 0A"o IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/ga.png000064400000000322147176754540020355 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE6m<4j |.iJIDATx 0PhfUU wA΂M#[y (w`)*TIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/gb-eng.png000064400000000475147176754540021136 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<TPLTE$vꛢ! ,/@"1B뛣# !0r~-"4'iu牒)閞2YIDATx7059O4_Z[D_%*NsGD0Rs#5Y*"XXI$ÇvJ ố~ y&ц%|sMʛdԻDzʵeeEPhgkk 'l ŽTڛU% ɺǦɦ##++ppyg-vit3潞66쎓OOccjj퓓mmů mm_۬11|n6& w Zv!fmJJs--44̳<[FB~8MMȧ'hilu ^= eki$&w~mX c ((u!ɥl1 aa jj "HHyyAj~"^]``[0V88i**}~DD@@BK ??2IDATxb` p01"&.ZQKȱO+3ѹ4$9 k" >3y@JqM,)~pQVEEVG_iaa[[L2xmQݎwx6 W8JuKvXbj,ZQ$KORtYJ&H,~!))/J}I w5Yp |߳p3}W  EY~S2㣨v]L$|ThmEĘ,;qL f*hiWbl7 ./Jtm;S-3mkKyvHy^#h;!0}?IQ 4I< O~= [,4&Rpr>&00|RK>xH<|D@%ʌJG&G-7%|SZHJJ2KMWY$q0C.i2/9jXBvW{?$L a+\r&Ѳݥl 2[e>(3f GLՄ?x(Jxu-aLNGAvH+cʣ£Z2jɨ% _K /yCrIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/gb.png000064400000005270147176754540020365 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE.!i-% (Kb$&.Qggec ib (n <|G^ ."i!` )_/auBWNbh면!=Ҏ",q[m7}%ビ#!ifj}{ar!9z'*Er` * *c [.H-#b,\q3u@X43I-C09R!i h21K + ,d +Uj$鞪蚦ꢮj|fy95N產"iabsf륱=U ))@~;Rg 'm撠)?}搞&AVi& ,"a$e%=|!Qe)ndH_BZ $kn =|gE]7x߻׉OeLcge痤m~x!卛䈗:O3MZn %l (] +րcu]o?Xf$;{Pfb0JTg/shy ( 7xc6O0F7M.H\G[)n'ֻI`/x0NIDATxYy\TE r(" K +"*"7}b♘mYZQfVvZ.GkwF5]˖J} ګN΍־ KC=W&YгCS  ]B˕n0eH473Q$(uq؍bS,#KfIڞaB˿($Pze=0mGqº|J%]Ǭy9K_oCxHlZ*yK*Ye7HD^aMdFZ9]hb=b8/Rq* >'sD-T R5 e:?~*5$ЁXTb\{cj}pMܔ'QxC FRHĻ ݐdTzm,HnxXߣi&_@ܓ,maS׾ /t:W`FzD:9J@P6,8per, P*X6e) l1aH$.T.Ru`5gK`Ʉ-\å'Io/5.ǃ DР%?@&d_$LqgMĘ &=v5+O$IަHŜߋ%Rٽ$&6l~ 6-AabNnoI=ZUE?;'LĘD>x^c\H*$]B1Tw l#4i L/"j ƑPv)%VV'Z" Cwd1K4 ,j+u'>5^׈[oR*L`sQ)xۤiY3͒M} &^_0}leCL;^[2Չ3͐tfd 5(1ѐ$@ꇑjDWi<`K&3!Y\'ɳ"odT/H`jJZzxN9D- BG[ވH F-,^#y4}|Hdms$Jl562{9#͑$&CDBn'j8$p4DLϬ\rfgAo#k )pHz;GQXg'Sp;BF 0it8mD<}l:퀥J=ɀ$Dv9JZ56g6զabL*<J%aJZK8't3L I$ wA Ms}QC>R.BIe˷oEKul7.oTj`dhG\E>I¹rN$aZ{(T&e/-DTP^'ioTcb=3A?&ɜ9g٤[)-Yz.֕g{"/*! [؉RQh,]͋[,z"itwg MB* JNRm/%6LI(8,i?ηҭ*杲h]Mt ?Ǻ4lt1=xd =nd> !|Iq _XbBYC'hG/Y1YξIRЋO'7׫rY1JoK{@{L BEwch#D/6:NIR}p`ϱ$ G LLݎFUgZ2rSr=&:kaR*BdQZ%PlM8g WY&$^Oh[sXK6_v a_bIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/gb-sct.png000064400000002174147176754540021154 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<>PLTEe[^\cd`]ab.~ hrÂLвtg|bE`4ʹ_ոfj{_acjKв3F4jbj hruFUNzjtfZ0O<Yam)~X ulx܆FhIDATxڬy[@wmPE("(x_*hէͳٷJgi*|p`Z9J􈒿O4DGwSȟDk)]D~ȢdO[!3'M%WdnCӚ8#g Tu|Z߿ɞJpc<3e^ȢFG_j#PTϫ !q?1dK &{^.qUyWd)qvŷƜ ҪCTwL >U |5ET ypT`Dke?#:edS[1Q0YףeI2V E?*T) e:e)2T2T͛/Δ#sTV':2e2Ou!NG6kEV"B$$)Fժ׻w*2Gpߏ%v2Ywt, *cz.LP1?˭˭[DZ.6eY6> խ;u&'9!04v#&3 *ɬ )Ѯ=R|%(ו$6 - , '04^>*68 + 4 ( . 46 .5t)'&QM,j) ; ,+ ,W"Y 2Mo{7 1N_!7_o)ț.;׼85 %55p8W}% $IDATx{TwI` @ca@q" 5D* *ŅZuU@[ph[6vוU۵}PZg!}_(ţxCC?Nf6!I0 dݺ3gߢhw\ wKc爩k>FGcBvd1Xb!!pR߉}֟:?.?;{v>uڜ4.+OL)Y~OyA*E›;gH";a!v@e;2BŠ*ScjIu3lCx)[pyeAl{cW=qk:dHJ2n$4LY/ Rb JfT.?=◇W~qkԁQ[4.-Pqj]H0!.gHAa" {7<(xu 3u9se/hFub?`NR Ƶc7R(89Hr`T:]%jA*z)H0⤃%(gBT$n$SnFC6lF_Y:nS6#`)5f,Z)pw14;-Z(J3 #v?w}\ǃ;'㐱 0aRbFiqF'xƩH~w܁!L}?Ǘ\4F{}p vH4mI7zhvЄ!kJ^}Ti;%m:3o gB=#']RY |vOQ]V*g^4gKԬd|RlEzWFM^(f)5kIaAtC"F{cD;n`OFn1sӌ[>e`.!'76T4Qvz<̻嗋}#64X6\2șkB[D)Z'aaQ3ڠa dz<).L{r8{8|F<,ÿS:ՂHqW_'%.@agؼQ8çf#~zaxU$f$:G|WGm@޾-Z.%n RȀgO :nS!kdILٛzBЛf(#E2jexXdd[2WNwifXL ȊA}e#gu&] .:HѧK(6NYa<{?9%C[;$*CTZRm6њvQVc% lIFFI4xԁr{ qV+J) `-:^JVLzҶEYu;N rIڐ =@q-w|~:Q3]S$˸pJiFr*܅ˤ;%^4}OEJ#c1|x'{4鿽.jl BL6.v`w03Q4K{C'~>ߋ:bIn_WIupl8 O(\D-`KK!^rƲ? ,4=4=; vSo &N*Vv 1LJ.ւR(P_)~}!#_)-o&%%MXUw,G bv*8)gb$w ^)5֗r b&>P-M(svŰxm8fB(I! ea+`ϳSZ@3,L-D~P~ɡv-La2h%40<]VCZ)y*p4 BQ~?ti Q L]dUIkSE[pN=\or0TGĤ,A^Z\ IFiĵP) l,VF/p罴Kc9uq>p]"2`#*8ZVU*pћ˹К6p7ՏͷCC-KEV04G`#Ij׹hIpG"!ADXSZGp &,8LL}ZxQ#TrcrT`5%lp:R?H )&нÂ+.PCzhk TG|듖pc*@+6+뛷ljRԊ+E o@"dZik zst՟#zwٴU+^Ԟ`X;x^CcZ2Co?"W mmzXKGjb"i=R{+[1[iܬ!M)\; 09~h{lC 'E_F>ƖCxnƔ6Z>2N\0x7,vj1*04 n_ض3a1F~D _fν;TD Os5 ˱ל͹1Yb2\A '#:.tM2qM~jإ6(6-^+>ߵM,{h*M \ `}MCΧ+~۰nGz!)\4YoL= 3e͉D&=fU-R\ Iq905؃G9j MZY6H]zq͹:H>&󫃼?bDR=KnǚZJޟ-AI†u1rE~ΈUM4H(//4.uVLĮajA1Q$vCA a {̨B 9p=E0Cjt>6@C0H_!#### ċ)::~[IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/gd.png000064400000005327147176754540020372 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE&z^a #''c"WNFw=>2#&&y_{;' &+"Vx`K!KI4tcubZ % 't&vb6uc81!%waу#!y&%3Q]:O#&="&'~[',¾&9*dS(*,'va %-:UF*$b{e:#r>.6XA"'T! ' 'y_"23, u[Q! '0.$hA'b"~a`"nEK%$w`cCW*$]E$ !k_|_ }\.2G"-SqZ &}d)TX Yh[KF {^x_{^y^{^}\ &z_{_8&mY #&NQImAA #{f'( % '- Y(QHe$!!"/&$ #;P% #@ !$m@+$h!]Ve 4zO&Tn7b0RRH{_@MD'x=>PHTF0,6#/TVNFwa*v>>U;I3Zy_ &|]$ mIDATxڬw\ww^GrB`b.&&*&F%s F$e-Kl hi(-v8Z]VݶڽrI_xd~{biuߑN> T.?:G("%j-qX#Je2%iʲ'2Grya ˳o[- cJ|fMDL`8dj178]c%87wv,5RcG=PYZ< m|ؠY.3u=ujzH5Dbr5hg6꩛:z AfpȮJVg*t+HђF=eq_$TӔjEIs,a JbM_կ䬾CVܼ‡@#GzoWq]k_?.{}bR-{doކ~/$L,*b2oz}]إ@ HֻU#qF Ěk7&KzA 3V2Ҹ KИ.uKΨf/O|h6* ƜYn0@A;:t_3!@(7(gNz fJ]>Yڤ2O{Fʙ+pӘ!nP00T[{e^L!@4]cMj(:cLw4ZhZ3q9 Oaq##J,8;fޛ9x2ۺ#Cn` 5.⎙D}G1ߪ@0NuR {z5~ĩ_,$5e}8|7B~>.u&*V! q"> KQD\# r|eM.M"b6JXkTzO$FYZ-EďMDKEʆC,H)=Ks */WTdNvg:u`LbvY-\bCNɈUdl8%b"#Zxk2F2DsCK ?y# Z#G]69rA %D PEiuȑ+NT܊ G88785T4-3z;{_pE#-sK'O$IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/gf.png000064400000000300147176754540020356 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE&0/x*t!>IDATx sol?Pž)3[$D"H$D"H$D"H$ 0A"o IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/gg.png000064400000002115147176754540020365 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE- u.. .4.G* ' .B')* --a$C'- .s" . -/.#+X% '+../. _$<(!,y!" 0I-0.;(Z% */z!,-,9(,!D'f#s" +f$u"8i{F']%e$,K& +/+.c$G' + .~! */Y% 1E' s-"<- '.-ar5!IDATxb`  1~AaeR=2%v9rpSH KYW8KxqHSb-@KpIx䉵DUЀءS*q(؈aN.XnÁ4B;AZ8iWaI&e}u?AK4))ԛ# ŒR'J*B535# āt:>+Hi G-dԒQKF-%ưNdZUJs=p;M_ د%fz)0b<;m&iD= =J)LLi#)@Y`cOQ IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/gh.png000064400000001767147176754540020402 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE&k?&h@&x:i@&};B7C8#{:w:ve   3)ģ %~j I=3*iW B5 x: iX ţȥڹ %q o\ y ן\L&ZK&WH ze ud ʔ۸u:ڸ~ z r ' $gZͪm ӱ%ܺ&ϯ QC!j ~i t:p] iV9/| .&<IDATxb``Q0 F(,t $R0p2IJ"\UJ&bz4HD\/SƖ433' >fJ4DLYFd3aZX"q KxB2ԲOiV/k,/6N㣖O ;f3cr| .zy,vR3Ebѭ0Mn AC1_IXLaEФdZ{wm%:v"ɌpKi,GKD#,!FK}OkQ4?hvx a!GKB]}Q̬,NK % Y&މYb&H2,bJH4DH] H*઩N%V+'@T?``dԒQKF-dԒQKF-ܖdX1IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/gi.png000064400000004372147176754540020376 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE U]  k,EI EI  L) { r; 꽸 \dlfi4:J  ƹ *(+49R ԪV^ b5: ə Fk {XKI  |av g ̭ux jCiX eM R &+ QU  $ɾ ͻ dc"' Ѣ+2ok  6  ,+uw$ ' ߰j osU -08~  EG]BQQLP p w  ʿ loPRWZ9   ghOQ4 M?CW_wz{}{})X` q4=ZK"_b5 s/  ԸIDATxwxeKiŻb$]mhs ]MK% $cHJKK 2 bÞ )4l((B=p+qV8}.-$w#|z]~{AЍ!5S554FlĨ*h\PPu}PziNut_](-u^=\?l^?|đEMz(S+y9;:=簝4`G)9˲$T^>U`Y"90k $v1jڝep.Y=XX, .Yd'BD.{<O, ZgOBC,#QDt#8 20e"BAS e7Ae9;|~F 梑#$*XA%^eu YI ]XG HuFR2ݙLЬ_H!},U[>dz]X=|TdL (  ZGf4_f<ٹyA=˝{9Z.d֙yEx>_Y ?! :ATd1/~;idc_#n7n bAqMZ b6x7.3X ઐS4u,iSYW)?5M\U4 * 2,C0H΃E:._HNKa!Ա){t!SFqcDh$~5sy>|4!L# <7`TS?{2L8 1O2E= |sirXkVE !o%`De @ IBzdq2H !ycqЈĢ]#gDclxDr5kvW<:x͝rJoūxˡBʜ2_/wϩEZ%$Ri*4LD?3ĉAfu=s"7%zI'1OUP%YE'GGBՖ fҥ??k=ږеg\),)'q@0m{*"|.DlKpP\\) O'|6{hB fQ8Tj\쉯{!>=qAjާDxAa-UDHޓm##kn /ā<-ٻ/WPҭa9ۡ9^>$KI 9ޓ vkrlS~ Fm:8x[oX}T߷UIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/gl.png000064400000002421147176754540020372 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<"PLTE 3's뙩 2.- 1)&*(%)' 4, 30 1* 0 37.ꐢ+;9/鉜A烗#F0ꓤ꒣\v-.Olﭺꏡxy윬3TSn,MRnc|54U(J6視9z膚;[ 5Toaz;]v웫艛흭:Z>]lꓥoi읭땦i]Y, CȖhctF.\#vAokVS7'*zǂEԗO6xE CY!sny/[aݪ$f P 6b\DH-6` dG o Vcej#QKkg/rH|!6ݎ@mX } `X ; LeXy qo>G*c> H'ϡH3,#W- U_?W}qYEZ~M4lK~s1՛(4RIDATx sol?Pž)3[$D"H$D"H$D"H$ 0A"o IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/gq.png000064400000003277147176754540020411 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE>!s<D<5AզxΆsعrv< <^.q)*ќq yj2( ]8tltBo@:c ynKuq|溻%RҖ̹ޣ8Kd=5m kpu5 u𖖖]D׸ԽE߸ŶyĖv2+rΎ0ܽp|ș'Oֺ'Er!<.'K'SaOutу_H >ʶ|Fj7qoPz7^̨˶߷ƴntL4qc0͊ixlޭ׼?M ¨h6CKmП DQob?АMK?*ɟ()8$Dm"ݵPC@L3bA#Y4F`u,h( D1D1 "iD4 A<h4 RC wH=!'^Dd'#8>X y+IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/gr.png000064400000001104147176754540020375 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE[RWW oTSYfK`DECVOL[ iv llCD>TcͿ[RXR>ɵ2 oa-DvL_]O|܉O~Y1ʽ#IǝqgJY 9*sKY*E~tIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/gs.png000064400000007307147176754540020411 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTEfmN)2Ц_1 6_E/rrix] 鐏g, 22遊lc}}F}A.'I9;<WYY&ZLM}(((j^/OJJϗfN8 Ԯ^^AEECݷpRyʷeff45N 4pbO \c~6jUDҗ0u@`G''|S Q-_eJ:(Z?$,\;mU3(Se\FE58rIt AXW'K^w}HQo9]Ɨḩc[_e?@:WaHiiZHEb__E0)Snsy<={94LAARjoqYY k=)<<=c꾷) >tS.H0fg0 { _J7390'r<z_]~mA!$i=VI9c0o477SD7 Zׅ*> MQU bIJDd;f:,-]x~[x3frao001 NVQPK VQRQQb"!&NO@~랟j vF/^B HQPKJK`_e |ʜҞ#==㠛(ipkvppfJs}]K~;֦B[*'0`1M;8 ' HRc9MW!n ҷ&53 ]lfpߩG 3=[J7@Jesp\w2{Qus^s22II54nnJ 7I[I0ewKC6G ,T@+f@c~B85-E?đkGA<}èq/([zZH)CA@ѭOZ8Q}crG|vɜ'N`׉#Hŧ6A Nhß֬ To؆jrc&s\} 1!kqg禽 ޮ].;wx˫1o|U=@ Yz?/`ӿ4's{%|DwI׵19Ysw㲨 }BϪh քx1o*1avB?B<G˨5S{G3>Lxbt!Xi=0.~zLߛo\;!=pOW9|> lVάI8j?(g]Cp8Baso5 9abm1[- oަ*t7Ot3 %!l6\gs NDVR l{um qLJz[W(ZxНa b4ӵْiD'/)RoG -QIVSOZ7@qʧױAEl1Nt68 U6@I5bQ%2󀪋Zէ4xCyرcv琐?`#2–dIe]a1]Awb3IƐExD =lPnnw 5P6%2,ΨyU1j麶g~%=$F,eF%$e붑WQ2K*u:sIeưf3/ u+.GGKgqZzYcT1w:"H磗˅ˣckıSW,2 쵁Kw l#Is_z,-gz(mE|A(p(pIX߯ tz 1y@xE,? Q( >w>].|S'ZE%hFɇ οy{]`Y8`{4,F0aF3  [ֲu)ah(FŒMM/MKFU!{ '"z;9U-0}W/X Q=G5 cL'W_Nd|RsrbN&Up*@e;W.~!?_Kؓ}9xM| IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/gt.png000064400000002536147176754540020411 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTEIHD?ͦ۵󬽞}}dƢu\^~BcFֽه⋦w̶ѼrY£s[ȆsڸƬՃڊڋLp,yaى[D`<v`Mзέ|pԾ|DʼnOmlP̓tǩ~\y%݌Vگ7쇚n^أ㼧e?-18q;2î Q~F@*iUƦjFDd*[P8KvpRQNLu-I0f&km- ]Z"(p&:0Jnp)Rg;{ɕW?q7Q"[1t /oŢWk3%Dl NJ+mt32Zcא%r*IAL6:)LRY1@˼ܸDRt;y~Fƌg|4 Uݺkc-bKyҢڴKa4y"ԅ8hS3r?fOtxʨ%Z2jɨ%Z2jɨ%CS•%IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/gu.png000064400000005227147176754540020412 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE;Z'!4_6]Ii;xfɚRN:[ԋ#E&[Ij7]%qv"LOt`A9[+̺tg|(0U68\ǩQKEGz6hrl^ +g >X)ͧ>!O몲]Dm8t) ";ZAe*IQEԿ 16^2!S"Gc3_:[=^/Qό8[ҿ&p6rß/*`ԱPҹ,`Aʯ1 XF$*нwF7]%o/5Wr4oʮPpޯvﯸp~m#ϣξ֡&!ao($ؾ'&{a0<߃g(³'Ͳs[qUH`Ký|Ql:C`-IDATxb``^0,XX̀9+++ %RB 4Xʒ@cK&^bKCKxRv31mh%B{+"tt$~OC#K"Wͪ77+h:₌TKX&TE b׷g%,RL:чØO*Z)KmK"AvNofjwH^ZªTopR)Ffh܈"?+Z;Hhр0ƤhY=VԴdJ#tɤG?'/׍չ5%z5E^r$A05>Q jjYP-a&Prh!+``͖,`vM*^T{5Ƣa;+RR!Sa,zjީm EkER+hĴĎ4ŀ>ڋm,5I K&OmT?}:~A&Eu,԰׎SKgx{qM \P`["D%s˽7Vy.Y䪱FhbS\+D6K϶/ev cCQ;AqX [<'OK%mrvǩ%&5LO *]/i*Vo29dI`}wE3A0="!)XR%$u)(;Y4Q^U3Y{)%^}8E5nSS\g*ZbW`0'09~Õ gǾOCOf̬i䳓KgKf%A=Q,Y›0q30EkX"f|{Z<{4-!'z:uK}f ԏ(ZI%*α@;?wsn;&& 2/(  +s=*nn@3ΜA K@gbWr]v'ȒԱUWŞ]Yuye7n@,yM%8at++|~U^\}YaaaKaK(Nf ̡0u1TCSsR`s̡ AWO6޽8Yes(F`9htI2ƕ9,ɒ>^b]$e:aKc/I4ׇi2[SeI: PS9eńs))i+_w\ -I6-e; T@?oMj;~O 񷉈diJ>@pI~#CW+9V::f*++'7䴫1c^?`J@!v gBIw #6Pb UV'ؕ%AݱNuѴ#`+jYFRǻ"U5RRnKHU/Gլ^[[kSym1v>)4W  z : $/ | R "' N( )n)$S w ) )$ wIDATxr04*Va2333333^IgN?H#H32K^qAkADAD@=!pD Hµ,0/r#PX&`?][ut'Ug[TP1*JmmY-@H(R ǎ^ˣPQ>yH ^[9.Bf9["gXsݿFeOib7O,L DADADQ[0MHJEnIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/gy.png000064400000004404147176754540020412 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE9! '">=>d>ʅ6-u$|+%FFG/ !4,e#VKy*gZ.8hC7s%# 2D D;V Y1+K #1(rtS퉈 T*Ւ¬IKA78m'! =jDӼ0[M!Uک޳5- ٟ w&qN<3٭әD:΢͌`J3lH}^' 3ɳҖb 22#zN#ݛ |l5 X/m : `^6 G ܮNףm`R'rdwhABA ?GD: 8Ĺo'%GBZU\ɺ`V% > >@ xWzYإ٦m+ 203U(?aaae-&В rW"IDATxڴ_TU-3Ҩ8fdM}b@ ŖJ"i*T.eEBXɤ[Rhھھgfys~;9dG|O-+D6eS`eI f?ʞH30[9o !O_,͝\>=n"+-dSѼ9OrAq΂lȤ٭sE |2w#ke΢ |o1kQĂIBQ=T.㑜FiKQv_ 2PM9] ;bx6+`ySHXBBacw3'}-`?NW)#9Gjړc(rn0Wz?v( xcVwiQNRc)ZO9iԃ<-eHS4hZ vltG}xsEOsK;=@Q!6~IQw>QQ't OVӴZrZj,D~Qh9HΏ@QL";܍䂢"GBq25'ֵxDXԦG"&[뾨lt!-9bPԕFEצ@9}--s!9 rZjꂡ!ѷ_C@6P2}T~QN6oL Rw _ .N7_&VeQBcd\l"CS;ZNmBq+3 aZ-C0a^q~c*CewMˉ)̂)qME}A"ʞY 8{Z7XJ(E ,{Cf">` ;UBKQFh)噳"jMBس7*xABfԡo|$* ;^[5!v,0ku!ĎS۱B"2DWCQ.wRWxm% "n̝aT_x DFi@n^>,i "̽6p+sRPk!YX$ w$o@G"K^G߻U,! u Ď>>>,,,,䚚]]OIDATxWctQ0nl7M4McMڶm۶m۶m۶lsqggwt4hР%LAP{XTM0ir\LU D\eT, iꑐV$?T9'R+=?'f םYGcZtg4.kq0„0# i0" K(Tъ fRΚH)MQ|)sOnH`QeUj7C5um0IpڶAԚHdS4 !y"-Lޞ6܇o tv .8gkߕSP\Fo/<)V:f3\q\~7P tQB\JFK⾃"WZ _JbY?\K~vS8C%a$mZ^~ԤN(}Ju@79[SBBW*K +$eY 9Iqf+=%;=س]6*1DfqĜ^ab; ~a>@"wݭ/cm6KzD̶cAODx<2%u^SxNI"<VS./#i Ǣx@8"w=wd I.TO:Ř5B`(dbمzut bnWf ;]_ rOcƿ@,0"+@ 7M.V|w=SY~*zz8aFN"\$ eײ Uёc0tv &-'oIHh.^BxVLwn͊F ja#ǽ7[fObŨ*Ư1 %k0'B/ܿkbwWTPz,U5": 4hРA?P3PIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/hm.png000064400000005040147176754540020374 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTEf^eFF22]_dcQQ{|!!ꓓb*ABjjTUUPn`뜜f\iaSS jTˎ-Pqwj mnnYKK]^JJxyJG??9:gr ""vddzz[[lrrІ>=..ˬqq))}..gꕕMMgp1166--55ꅃ l愄dnn** e钒kgg33CCx''`vvfv鎎dbأ%%|``爈11嘘)){YY[[svZ\btl::czﰰȬ__44 qh_ipp@e;U﹆-:ߟp$jZO`;WfX.]AaV9i82Χ wlPXq`՞3З^Yjӱ04(0&5_G噩}:Z(W^/MM+bBy)7{uuuo΄X½ޗh i !>vK({ҹLOQWRX.Lq,vwON'F39i5ywI`A@Wo,H5iavq@?p2U舃 w|IP۳LБ9^YD+(l$Ŋt*҆p|!"N@jj-E"8GG)OfFIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/hn.png000064400000001751147176754540020402 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTEsqow mg˦=nΪp irRwbqΑ1}3~ӞkӘ-ؗC>ux{0ذyY߻1z-ع|} nͬ$,e{K+hNg~df]b}4,Ohtv(։)֚+c|G yQ wЍMS߽)׼7R޵SqMj̃TIDATxEs0F$mh6Tffffffffffжǎ:F'hwqcb!!K 1 goRNb=1&|X8o܆PH\ oCV1ӊCci5!IIc\aDF'Ql!>,¢$4?3J%q >rX{QR?PÈstv,uD㔫mv%&VG9aB,NWPKܱh I,IthN'WQ@eB^[;v:Ҁك`rE*.Dkt=nԓOGx_Yk{C|$H$MY<H&sc`I];IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/hr.png000064400000003457147176754540020413 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE44n7-]]٤ZͱP]Un J7gFUT*WAqDD=C^%c] sޱ 7gf--Gx0v22iz;|{7[JXdSF (:: $R~Yf II ڇьglG(8l{"y6~)JG "  [\'݈G Jg[ ΘL銖5tq{ T4;  @Iwn-/ SZ))36,=?D%"/t҅ .KzCbs0/.0욤{H΄ï(/IDATxb``,Bڣp î.旁T=go &5WTPm[D7cw㷛{8DxLRpIkؗ&dˠk<vT鉈ԏ[JHgF~V ׻R<]=2 G_KJxcAuOW+Npv)ӻTG+N$ZGg 7W,yl>bK+S43nKUXle"YV]jA)d_3d5zG >pmx}<&ߊ*+E~u*ĉcHeI17x$$,O&j\v1">ɒ׈(7)KN[v.+uQ# TFZ~09Qj֊[R| `Ci^Ýuu;J7DX)U)R'wM@+/ wGExc awZG ЙԲd'̎^S %^3,F+V,O%KZqZ2ZXX*=pH%u# LV` lDdi\M@ f8oR ̳,03z 30Z4k5t.dLn!J;qm82ʞHMKY\25k #xu&H1Noa% kJó*+324RI%j$K`f*$QF-dԒQKF-UE:IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/ht.png000064400000002667147176754540020417 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE 4!Yr.4 0D}F2W(IIUyƏ:y<%-*s5ji1 24y38d 7Vv&-dXVn2t+V&U9Mnh gͪH\if:͞[ewɺrƣlt`g*j74ǼqzKQkd&_lMjQF4bʞ'Yz DzwFLğʅfk*$m/BngjGx] 45 .Œ¨W49Θ a#5uA4RRL> [˳r_h5ʙjORӮ 0bԲvSDgÝWg{q,',bj| ws}f-GWwBy/Eʷk 7krlcFおÚԯ33 );l_zHQ_XGOXnX9w{D&|$h.s ^fZ4Yq]v +ɞ|| +Eo#Bql_3эk<̫]յ_X@&'f~鲳ڳjwre>Rm@LcoUGRaɵԭжοҽ}KLi$va0N|1/ؼYrмi"aXѪt׷nsx^YDk|4o!YuאK.]=qT}J@pCT'_ =U#_LMIDATxb``Q0 F(@ +C+/?HA@efP"6*Zr .}BEKfz%؆Vt:3 ,FK%L= ee6q=Ly0IJ||aed@K 7~l1H 3 ,yG?$تS,a&E[393W8\TdCv@!sg`!<[Ws\|ƈIhnb3rgJu{yLًdwÃ=zPtIbiL/&+Jx^=IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/id.png000064400000000252147176754540020364 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe< PLTElu4IDATx {ȓ@3H$D"H$~z IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/ie.png000064400000000274147176754540020371 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTEyI?ܼuֵOx=IDATx _#aT`N%D"H$D"H$D"H$DmW!g}R?|IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/il.png000064400000002711147176754540020376 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE**Ԇ盛&&99667744 %%(( ,,XX5533IIEEFFUUݼ LL;;؃yyUU 00)) ""//22SS##''̷ddzz徾{{峳uu䱱2244 $$ KKͅ::NN << **ՐAAccJJ||TTBBڴxx䣣핕 ϪѰee??ٶpp !!gg88ןQQ%% ~~椤++kkCCڵffϝ88ذШ̇``33MMЧ__jj[[IDATxS1I$p;(Pܡ4 oL:g}y6fsq# n IܒUx($垝kn|;K.@Sw< KG2' ÅJ!:q_oVR𞳚d0T3y!G}u8p4GQ3BC/ nO֘X#lXR>b;wT& 0y՛K[~zr#gHv_%)g%[Ju~H >a<+f~Uk=:L،&yIY4h1 "84>ERч,֓aei %犼㝮Ѣ|pSQ^4m!$ J0m 踉lc4`5YQI{+Rki9m!+1HBcU' i+)LR`9w-X#[ @nSyiO|'ۗ~j^4ApIr ^p7@>腮G(!'?<~k%^ ξ~.#wTWRIK26^@@|ޫyKklAQ1ZxIOLz =5qf2潶SVXZhN1}_J8)?0;[,DoX'{̒3Lٝ<FB%UbZk|+m[Dg^bY>ij\b:2oe߃WO~"T?eٴ~;W~oIJg]*Zzg!b5M*f? n-6 ?WuY[ a<M #"{M_+&3Qw.ÐL&!ҷꄫ#&S";IRqۀ߃Μo(m[]QǂZ) eV8OOݺc^Q{r1H5Bqj?0qRK5FidG .GrگHLm`:  A"u$0p"$qI/O?e.3k$[8ZGcv.eѤXB p0O¶Sā\JM Y \#idh6Pzbէr牮P$VNfH¨"\ eWm*ق>s`i(0ݨF3Ssx!U oʙZ\\&+pIsd#\Usĥ_OMNFEf&ITh"&0)!KM5bq`ݣwHÐ @Kʀ?)i!Աi$V=.#0SQΣFt8$0i?ZrJIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/in.png000064400000002522147176754540020400 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE319/& ddyy^^ww纺qqXXTTꢢԆǸ޼ppssܽ䵵ܣ㰰222277::WW载//--ӡԛЬjj }}ìddyyxxmmccGGiiܗnn~PP(( gg''tt&&MM zzɖ553300``;;**rrhhYYff__nn``툈II--{{rrœͻ퐐VVvvbb]]77llLL[[oohh ,, NN>>]]##vv __~~íUKIDATxb``Q0 F(t ,t t LtZrfFZ6VCSheI6[cY hc~=]<<g^keuwVXH19DK:_*/R❬%yԣ;naAqBJĸnɌ[m";<]%.ȉ+|6;!{񺠡8IIn*["]t{,g̞8H qR EI\##yx)+ۗSnI%{;[ e?mp}qr#41^dJ+^qGmKR'9s;zŘ %|6 _SX:KZcs9ܸxy<;_p,y^#WƤS̙T#.{ꊮrL-OVWV5Еk|m.d%@k4&NDۆy6:v::F:QKF-dԒQKF-dԒm @Lũ1=pIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/io.png000064400000010256147176754540020404 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTEcz44\XXZ]δlhiccq︷ꋉҕw`maҚDD))++{ j[ƔUb]]99VW744˲hga{{((vtNN KxHѹɂRRKIuuְh˧mz""v fuu؅3erHyJIŢe%%x1CTCE.IW;opmI[ZiRQ==[hiJeu m &&hwyiW4XBx~,*'#*S74LSX~ޙ p?hQ//~ p ȅ+4bcu2=ikb~le_ @@VV`Rct^^ nXXjo;?dblQOsr,+vFFnbȕ⦫rzIQq<;@@ |*ٿh2+z2. f y~5e2 ;H:B('{gITMPN_aCOF’.־|qV]ZYŕXWC DIDATxڤ \St3cBm^rΟw ⮓_Wٵ+mPD#n5`lg\ޟ23!7%> U鑭OqhPCc@Jִw F jISX3 vnz],~5G2Rp߾''/?~nt@0}d-޹"^OR%偔>0_ϵthJ?I~"9P S^^ 3j畹^Wm5ߐ6! xAurRKatX $0ͯ6@n*:$fZҶv.h>EYłhYC#r 5yس/^wfψNdHPNfMKwH,<Ζ֠r5k^6G%>,VCi25hH#:][GQL+bʦJ1z7?~A6eq‘NڲfԐS]~Mm*nUn"%p:QСSUi[/w \Ag^*m5sI[F۞Z 4!ݗ>3;7c9nG/Ek1 Y̔7â)~d?.e֒gzlp!3xc`YXhs6GjI<ۏbSLlPJ8M.g00 ҋzy'2SBMwe#cdo,8kӴikf_Dl'bؕ UdEykoжCVFc+q3OT:M;ű챏j g]C]ä ٘=ͥU"v2 W2ڧf#OQ޼>_ <σx xoٟ2/&cs3c2}pP_ !qP0+G }RJ: ^~ԠƦ!T#(H,w*nf JzcU2oߚ kIe  qZlG@ L@> _ާSWL),sm+nn;v,w蛮 ٬5ma[ 砌QL,ɘ#+@oMgk/MESZ Vd:f+e(Ԓ5647dƙqGqVrPI]Q*V>^^Yn#mgnZQU*$s : V!%Dh[=jvm1hj'3 xo]A,Twsj$-](HkZJGtB^[{H}.MD1*uR2 A%(:7I5q4'@GF<&|RhhZz1+&>( p=W@ĢpvNxY v^ׇোVrVĂ",ߑJ2EqOjk,E.@,8a\-0J@]ɝbF0#GÞʜ.O^}Z{:Uƨ6 QN90'՛D8'KC,/ K@dpoS뜔Vs9+}} Rx2H݊"F@=s[n+=+]JJ_\+W~y]M٩*(2PEP~ʧ忿Ϟ~zAќ<}R0s%aք J^Z$*ZhQ,2bɅ,t04L&p_$<e!3`. R<=neGh,YDB49׃xjuS >CH]+*Cig^5b:X$CW0/c4hlb}f+RszJTQ9Cbh-F/FJBJWz2L]ZR!$ dUU-uTI&֨U!a*Tݘ8;]P~xW xz7Ukec(Y+}Hx0:0=2O kZIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/iq.png000064400000002340147176754540020401 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE&-# %Yr1q0ӿq/*]3du65fIus3s2ӝ̴u5o,ӿp.t4ɰ:i Vo.ѻk'v75e7e Mg¦s&Pz=eŪdg l))XѻкV~S|?ĨĩʲnҾUiQy!VT}n,PzOypL)\կ·l("R%PlѼv8;j DMXM|@cx9,_,Yrʲg!LwӾIR|;h'[ Jz=ҽŪ D Uh˹x;¥։r8hpS{ȮfʱȾηًçb KҼ%Y)YCpr0iBo8gX|w8{.`|V}BKt57gU~-`Erǂ_LWIDATxb``dԒQKF-dԒQKF-ܖ00000ZBkK4@$-ə3DX -7;$m,@-K}AtTĤq* akdIp=!?*{S7u,nD!T h U, % P ]?f?dIvVo:05,Y<)Pi)(.T$>]0Z}e\T$V|t\I,+X`@ żD%'ɷ( o¡:QX6$y~c-^YҧE%*.0! j7,d=ݟsv3ŇVVJ\Ź@Ln61`NGL_LJX\("K%~'vr"̴ F뙘]4mIu(,3( L U2- R5n V5@XFN0 F(`Q0  $cIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/ir.png000064400000004705147176754540020411 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE#@ >"?7Qgg$AkkmmuuxĊF^ooey3M*Fʖ$$BBԩhhɔZZݼtÇNeʕΝ&BOO\\==̙s…Ȓ``ffJJav.Ijj%B**cc''GG ]rzzdd킂EEo6Qȑ((%%UUvÈQQll҇˗TTPPLL^^ {Ōɔ22$A55ppرٲ!>6PVVRiRR77=V##bb::˘,,q}}XXZZȒʕbbh|}Ǝ~Ǐ8800..rrs†i}Ѥ˖j~͛nXnDDJbǐ󭭒Сʖhh۷ʔ|ƍr…p!?jjߘҦܸvvNNѢVlr&Cװ7R[pNNC\m Pg>XլlAZϠZpʖyŋcccxTTxĉr„_sggll@Xϟ^^##"?LdPPQhUk k˖44ʕUU&C229S'C:TH_@@o[IDATxgXSWO悀@!H  B!, CVD[lY!uϺ5*ҩtj[jq'?{9ɽ9 $&Ib$&IdǤIOX;d\W낤"/ @o+ދ (-y-Hov2y3ue#.`ytOE c'iyc$SM" _`u%=\}˚=p'DO${b;n,{SYz+$:\'%X"_ʃLMn@Ģ+dJɐ irTY,LH % r{9 CA>cAjaD1J.TZ)a کD]('[,e3GSeRJ(VycRyZ||jQ."{l_dZ!yEY-~,t'Z֒oaYjԟʲB|f3=5P(ҚP(䱴4NާgU$s,CZ؜I1unڨe:k.9UP( rSZI3u6k aKp|T.jT(k.$5a&|8TT Wxie(R$&gyZR$QuWeՆJZwUV%v EƤ+(*| %+YQd1@G<8dᱫ ׳E15n\זӗ @N/H2"/|k) 31";\@͈Y n4W $!&kr#MV.!@cGBDOȐT:wV2o1V?X m-F$Tz1u_g @"@9LIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/it.png000064400000000300147176754540020376 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTEF+7%1*6Ӵ;O=>IDATx sol?PY)1[$D"H$D"H$D"H$ 0x"͜IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/je.png000064400000003700147176754540020367 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE+,*&ڐ $S'-$ !2 jw0+?'(&:p|7' $q,!|意|Wfmܧ:L+ߋb?PW,젨)猖蚣- ,wxZ!:") "P_ 4#W+P`&q #4>&#& {2$;茖,!V,% $ 련6%KRD/.?P.Bݚ"5 H3:J %DU䫫%+Xv $f&Ȳ(!5#AQZh[iScBA# ! "͇ߞlLSHﯵ)"?#ei8A3F`npb]B:L:KS7k<ķpdmk:Z . YUZy*$"'ȌZKE=zcT%0R.0*҂ k -?﷣<AVdSX_0^IJYEDDMe}+Yf~q?5TEU=1PR)-0P S٣j⟼t<ߟAwvvPaIe4*,AFFN| [RrFŽ~#Ha *ہcy:LRYLLbNډA\V s0jT5 rO Z$+*҃ WRSdxk@⿚ Cb)sdD4 C $IUxDH얓H 6AQ,-HoS3Lez. ?uZD։)d_ScC ȨԱW=CBYF> C-)n_RT`$a> >!YYBBrr=TT11zz .0*% -~~h\%% #rj5IDATxڼUSPJPhB wwwwww3 DvݛoNN&8<̓ʑ:f7PuQa!* 6&/cp2cp ``"Lz,mr&HU$)!Jo} iGH!XBfnIRHs&%K$4{:-DD+ eR!! +EA!  4I-Nѹ hDfn$"77 mpmmpmmpmmpmQ1D?h/I)O6XIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/jp.png000064400000002053147176754540020402 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE..//MMhhII@@ GG^^))<<ꄄ00픔XX55ffDDEE3300댌>>VV~~ꆆ **ꇇ襤jj쐐 [[SSqq늊__``aa%%뉉QQTT;;MMcczzꃃ'']]%%(( ||((JJ닋,,kkSS쏏&IDATxiSA$BTQC<8<@A9DAElRTwNe'?gu+չF\vnM'\}J\S(}8T-zpO8 t2D$~Ҍݲ HMVjƛݱ;j?I'0_(S@ a>!w ! K##/yh\ЁQ! s %GX 9SaM$ۀ$$)U\$!i^CB*RV"MD_7~F/А1o߮"+"2NUl)cD;rЫp$ JUNwUJsjaPQCYkӭé, Ա5f--q~~{齐qaXy[VSmazڹ\\8fWKW \ƹaLLLLteWm4 tIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/ke.png000064400000003665147176754540020402 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTEf22UUlll]gee +hdCፍUU<buuu\\KKKᏏEEZ""NNuuhh$$daa,,,:::b}QQLzL4.^UcccffiiikV^Zɰ圜㓓%>>jj⑑ݓ䘘 \s%mmIuul+l2n2sstv`!q␐###l Á W8v00M᷷::WW222//gy_e//츸祥)e)UU c X00UUٿ 662222XXTTREE33 c__^ss䗗giR99c懇o}Zɣ?D--l522͛߇W Y ohH19$S=E ]kvdu-8Zn $ҿW{ĶQB W_>pq`Km /3}>bVsmtx qOpᓭiJH<]3(饐=N;uBZPHXYa[; *Z1W)&b0EROˡTR1 LAtmdS+ ϢeT)= !B YNC =o==!ƺ!|b4H9ۛ8r<:FsA݈< ;i~f+e8G^}́FR (d:gwKO K[{@HMDӫ|2ChJEDe nsԋ]EeSʫkd+B}|z A7&Bw 5V9RQTj7'#_aw|qze>c§{^ݵnEK.Nck?}Whnұ7CvM>'ue&oƧ>*0Ƚ2Qy?4#^5D2Idfpݔa>k0q)<|vUY8HheN˚byk̺)ϚtŎ\~)8o"8%cNK ]t.b*fn#Z2n\EN͞d\6> X2bKֿy' WTx ls1g(Eڿ["3fD8)q@` $I@Eȿ 6ErIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/kg.png000064400000005037147176754540020377 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE'(()(+**+)'),߀ wq&  ,]RBmOz""$ &!%# 'MH&bU6Z &( $"} ( (!!" %i8$ 2 =/ L %uE V#3 >*%$!kX +!5T '$YL$?# & @ ,!"$(:'($'heo% ', f' & rD.! ("i"#s(;'5''' &a'^_A%_&% &#k$#' %'Jc'!" %%(=#% ) I %9]37 %Q&+v S߃B' &&KZms&& %& " " # ;#";ZbIDATxiX3D$$0$!r.("x JU W,.nek"AO/n<$w 6WąU$qͱ:ޫT>:wὌy^~9I)}@[dgaK)h;  ,f"IaV.GAH[fYUw`W :T)Rju *_Xnbjt5:V}\'d@߿y bm͆fB0S& F"Oi)D_O^--YIB#;: 3Oe~&qZ=r_߼'E6#|4!⧾n$HR~Jb~M _4wi,d=J`-9q7ϴ!qV1hGf`M\ O^^A[Z sWPQMAQVy8:1r2ϴɺ{5̑J n3cmIQWRZul ~2`zVI%.Uu3~v ӽ%&m9{r+|Mq$SUgQs&'JFWxӏoh࿽c,F69kvfRfHixgʡS]J4|wR6_[ϷPO2(K}^>g "2jtwӏB`VO)Y:IjT7 ^!ֳ{Ui-}\نxIۗRSe;|߯2 ⃓]E^ze)m_{t}TRFTqi._H$dn'H^ Er˙ Hc4HBUN2D=pcق{@RjWO.(kLPΥݮ= ,2^m*'_}6]%k{ٳ3{Ыܮ A2AdaڮKB&zR,WNٗH纬I֌jIWKv2NRgjFǜV]7eۨ]H l" sׇ% /ׅ0J]ӯmR6  {~?B(e%Ѱ*s,XD WGW-07dVw+|aK9Dgַ(r9'D\ IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/kh.png000064400000003744147176754540020403 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE.%$.%Lx10Nacq %ģ똇%#󳾼:M#vdg" ©-A/F%FUž~}}ȣ%ƨ{3em.$!!ɛ+=ʩӾ!ΐ"3 &ˬ_k?K *%޴EVpxXdNaƒS]+ѹK]z|..Ȝ0^fGY"-?(#$ޤI[%,϶-<ҹ qwNa=RR[ &訍4E&Ѹ^h+9/@ks&2C@M&ϡ;Lӈԩ\d7#%M`ژ#$$#6ɺǠƹ(.ʃwyswsx&)@#5*zIDATxb``Q0 ````` ْLID` G-i6ԜƖ8]9Ɩ[^}^.lNSK;u% LޏX(` IrzUbQdkmPU#w”Ȓ^/1sX[zу0O["g|Ce?`rYn[ed)Iܷ`S_tH tƜNȵwFh4(SjSBنhi,iX9hve/qvq9 ۄ7-tJU?%%xA(䫼T$NlWt;(P/C3OB ,)|"9ρS222UKZiIr'V1*x%,u4 ٮ@LLlJd;'?rkt0rH%ODyTX7=6zV`;)awa5u{SbyeE@HDMFU5W ^+cPo!,9JR+-'cWZK+:|h]YYMIۯEW( ;-q-YJOP[򔊌i ]"l;-EHGVd\2>W@/RXsUk5LII/jB:}QHD4thz}ڈMBXQ0ZSTѭ:,C=JMQF8,Jb4:,5yB=TEPKQB6+cVG?@KN:)3 :.v`A?QWM=dJL6,z9E.N[U1Fx5#[MK _Jm6&p7%r7<(rC.8'Bjf2v=ɐ^X>-<*FU9,:,IxFIUN02+?-JIJS|8K<,hZ1IKG[P0PZRVfVD.fHRVGO0W2+u.!,scJw8?`?R |IDATxV{\W d0N(($@x*DBxAP jQ)Uh}bQhź}wi.>vL_ݟdf{wϹ|S~!TUdQ "g*e>M+$>$lRYMlD\A~QSr|0/rUO2Uܷ_WF)FSVs#V"z?v喹iz޿`H.ViӞ޼z3{"^::O,Ni x]lT'Jk\').ogUl &|RЊJF*28QCd7@Ri[^h$g8"C$ ߿Wz㕻9$\AM.Nx^V*HY:ZO5)ڥl*\|mdO@^3TleE&D TIdOI%9{p4?5լ`+Cm{}wgO {.ƊKJhy&p٬{HNcqnK&='@q jY1i %ݜd`H*+Jp p$h\pbϑW>۝g-IL%&<eSycɹ'IDp {$lQv`K|`lOhxwM䵹&X" &ъ$ Wy+Q[сBpzyvNi&ʃ 7o{"Oݰċor,`̓[ܗ+]64;tep7ǗN'ɑ$.]qmǚ΅>>kN%)?%N3·Myxlo]t$.Yxhs6ք%OtSfXNLBЖQ\,} +m/fE,)|Ξ jk >=4h.] 3Ś5|ж:O.[`_;COb̨w& !E;"(/T#w$hdof-Q!AU$D8Q4 $ R# ؀F4HHWuR7$8F-S QNr:+ǯ,w`ASͱVL;A?$sy P&<`ىՈov\,vuSՆA٠8!mD͉@6ؼQq,TN`ȒEN}!E1&w#EӶc"3:AX%NݿMg& c]Nv{Gq3w29YI>]CAЦ'K*L,NRn Ci"@ֱ0yy7e=WrC D%(JB:A8%H#D?!G*E)\*Jg6Vӫ1w|xĎ1R$HɆ'n}ƒ$G|+H@Nj=U@^$IԬ.P==Fc,Do#F΢I&I8Wۺܼ?"@I̝ G˛%;<2SH7شe} ڸA8d"Eٷ)^Kh+tŠ0P4TԮM9ʙH=V%G 3BA(a8!Ǖ0>ȕ\v+6g6p͟ѧ~C4B9i0)f&|$J"Gh;z.p5yc|"QRۼ C>"B?䕤$E9Zݾ@;[PkEJk<͠I:*_)]Up 1 2"Gv,Qo=qvÌ@A?K$H$IcCzIDATxڴy\eqzߗwnsp26]n18PT IR@MhYI*bZjaQVXt}e%]tI<6qg{?g zAG# Qs,GCü8u7:c=N 3#(fuƼr-˨#0f2@Ln&u3.:cI1Dc8u?y$2DqFu9X)Ʋc2b9yD~s|I{6gXˆY%6'(fյ/'ueGХZDWv#s5Ѕz4y[VAL|j}|Yc8|U+|NR!㬐+2>śZ L8$x8n݌[a9Nfvm1^DQ2%#*0Y *X n[ZnO r ÷=Đl#%Ģd;4JsŏbqK.܌VqAO357tD۸nV`(V?Vu ̟_9?0R$"Doz|TW_g@ݼ#њhG)#a $FJvn=\42"T5uJCB 6qc9ߦU*xƯfxFc>wE)!Ã*aQ,沚E2"dxN8| ?UJֶ<-۶OE2KG2$yR#p5f \z3V~L׬"+$g @gkR>TTiHF )5Ss?2_hAY%1@jHe#pp'W):IIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/kn.png000064400000004423147176754540020404 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE597  ,)MMMaY24TTT<<<***H.CCC)Fsj(e\Ulll !JD)%3:5555*|r1-;me,ɼ&"s y{[C!!!l+S;cbbb+?#000 KZ q7ƹ1 (~OH/ ~ZZZP iaC=RLGA xo>8tggg¶728UN'''E? 9w |||# " %"A;G=IDATxڴyXeƿqڝeXv!@XģDD!2M<$#o (D+K+I젻H;oۋaveggg~o]p7DSqX$b}IwC[ %-39:D<|}ZgU xD&?0M6@*HӼ) =5@*HdUJ950RA~[PkRAR}RQe vS\; =C2^3w:RAJ+n+C!H{LoRAmT  ~pE $1gu9 Wd,RAP,7(*'cl+ҕoUL0=!1~#ܜľ$5e D3~V &C 2\Pը>ԏ"q$RG 0:)wRX?5Ee\r#iif~Jޭ9F]R?ƚpdRE#Sk+Ո 5Ԑ"-[?ڴ",)i( ꙯_\ W/’G:Sxd֦A`BRɩJ6gcqqdSJ3 $LH~jM"BI'I'N"Vi`APd̴ Ӕrw;-a매9~,fEijA`BPIDW6l jqjxp+25Ô/V2N# 0![+k}ye &! AҴ`S'ciAP2i5s$0!~pEqm5FV 0!~hS=&͢կA <\5#hAJ_Ӌ/!W^N+NP#0y\4FC"<:qg361T?}Egán6@-A+v^5%'AqG%[?ci 'kC'͂]㠆jѦS}ժ$d((2ai U. j8W8N{89S@q]X,O"fRe#z檬\ O`E2Oנ5XǴRcf烡9C TZ+5X-" ){89),{B[F&XB3옘c/jGY -^imO:I:D^BE/vyu`hJZu^X})jrWi}W}? 52SV5 ;k/0Wi ! d!vJG8P QHțA yiA zRh?2M $4_7$ iS],S!r:9r@T ϭ( 0_n,IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/kp.png000064400000003072147176754540020405 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE>V>W͖z>""88=T叏00掎BB//&&䅅蛛3M33''22gg︸뤤剉RRuu㈈ꥥ鞞쭭 {韟ꡡAA5N AATT55((44++44MMGGEE00[[hh1133^^虙 iiee=T]]""nn !!ttwwJJAAꤤ kkHH搐kk((!!pphhooﺺ릦厎ii// hh雛捍$$ !!@@쫫畕``xx顡,,擓 RR咒((\\GG~~RRIIR|IDATxw0=kWJ+]ie3333s̼aJ ?Tޚ|~>OIg ŵ*#^W %W?%:HH!$ a@1~3nߴ;Ě@\1=Sfć WS0DdVu8;2\!aZ5rVƻw@^06J3cϪ!5E!\koЌjuYh,I\ δaqyv\vvi'm!D."R OMۊh4sss"^Jpם^/zX@l=+?vE cc% 2'0E^tdvO . "aK󭽬mڡ!lM-̐J=:)K&ޣXż\T0Wͮ<-JLƚ]y3%bm3?okZOLBM]Jzme@XhSH0Nz;J4YNkY7CxK(aA"/8Dޚ"þD\~G#d_&ک#LAl$wI.09ƅs:J=r|t;A']{v-Y7$ Y7T?<qfhrO_uAf@|Jqާ[KB`kr-#$<$$A :H(9ަ: H򝱘WOEIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/kr.png000064400000005142147176754540020407 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE=X***VH{6]쩩EEE44422YYYQQQAVv!9}}}qqq4^TfGGKbbbbMMM;Z?W:VUUUiii111+IgzHQs}eeeD[뒒888==="0M|1S&&&8[JJJRRס"""^^^uuuY]t3xxxBBB2P1N<Oi|&ֶ.7q `}A5 >x yƔhf0q>cW/~QN҅cC9N1ha?'d ZYkj`0.y7 lf5%!&W)7?)%;g2y,#ƹ?=Ymi>lŴ}dre'rV1|Ǻ{~z-?s`:t lev&(XZ48J> k 0`i pûTp#5ڲe&;Lm-ͭj$^+!լB9=Wa0{n:z8m!8桂S͗GSr6?lAscV4FY:T,^;X2;WY.u{Y4XzVL{f3%mbWO>})#˶m2NCRK|P@lm*;^>4pGXl*VP$H]v&.`:泵:d%V-xq,40RXvJR\ID| "ڛH"mRR+ S WUwa9G"%h6n(xtqD!p5e!k&ĂfzrVCcQ]ccIōTjJFA4ʱ6$kL9skԗ"5lY M kMؿ HGzU`IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/kw.png000064400000001622147176754540020413 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<}PLTEA0?4I+GAED23C1<,N3C0+Q 0 *sss)1)11+D)O}}}ooonnnpppuuuF,@ P1/G H=Lzuv+ROLi<'"{̫ elP}++ؾRm/=@2}J21vL?8:-ZMhD9IB }LgEM94 e80c9+0+Z՜#22-,fkpLWNa#o /1\] `_m ^@@gc"==l?{àP\/ƽeyqnº46BD;8D褋Lڑ=fCgڗQQOOW`75jigd)6e)BW%Xv ]IDATx{\CoH"'A)/r35P%\Z((HʄU)H^@b Ev[ם74 ٞ99;қ=%=&C(: F8Vf偢G$tH?ϾN`|DCΌ鍢&M=7[ 89x dOwT 2='>T;3%3 2U?\Hxw6E#Qgpf)(rZhDX(JFD 0,$NQO䌇>?tڴⱁ<X rY&vww[@š[[d³$̚%5F)7{r$z 䆭_EQfmͣɍ]Z@NL'.{Х7@axiᢘٝÛ&2vaSBPO7~ g>q~_ڜhZ,i^^shՇ$mX@H?DC zȦ@W,p<">}9K@ȒuⲇZ5$)g̘ y͝K_tF'bުW;NdKYڠ:52K,A*wDd0LT™> F6]&d{mRPzZ@dۡ;w ]s[fGu#6Gۏn/”.EːЂ3FXa2)A}=CtaZ-rwGwc0A'ʏˏl}>4q`]v3| aUϟ X1=s*ȁR C^RaQ1>Ņ|~M||E<_Q(-=\Yxbyrz䋇%}Zn1K}Fp!]]JLvkhuYՒF2qbaHo/"ZpgI[f: .ɮ"2 n[?r񜓓S)*fVF01)S@OΙLR"},-$8;:Ҭ`gv%N֖.&80'Z|FʮZL=jNһ!\]a4mFp>[^D,\eGUgubAm]@^vĬ 3il!Hpdu{"SbNC۞D0с-$X ˞dVH4m{&ŊhHYv!X#(4i[@mIl%mI{MxakFۗYfG/I)7sBP(m+0i/ӇD V7>rh{bׇ?K8,$y')폯|*Ó|pg#K?zQ?h4 %vv bFh4q8C/ƺT&ةmφ6/"""&"|K`>5?*(0왼9y?C&W9銪b|=޺׺lRقPN{.YyɸQu}E9kڊz2x7mj\j8R"vo㵤UR"R)kc>=˘!]&$1A$MP"|U)3?v3cפ\[܇mQlMho;c.Sd3_'֎=À/vHI3]r7Z0i`Zn.U-~_?4Υ(.U<^P~4 8ᒹ6]ѥRp"1 "9b/g0z^:5DIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/kz.png000064400000007631147176754540020424 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTEonjflmhgik ~V}um5-~eߵ&bٴ߫߳uhrڥߞdߺk!ߠzBp ޶ߣEp߯N޽]RLߤrp`{ķv0wH:m`btT_r޹><s`xPsߩ(xȀd}2ru~vK߱z߽|qɵYnx^ypn|tlаmn+]ʨߛpoiߙ}ߨ߬ߦnn8v̏üx׆W!ox[Z{߭\܃gfkG޺wJߔ޻zߧ#߷n$߯~?ߦqYZɶ<ߣlj\k޸ʍ޿g߼߲X^k̄ԅwhߖ6Wcr޳޶XIemSbAefa: /IDATxڴY TSgNBXay @}d TQ;LmEpP**cZ[:3u٧Y_О s 缗ޟ-ԭ%v[!yfV ͉zsG3b HgvhG%OA yBÝO&5+noܕsR&>Ϲ+ Ӿ^AR2΄trA]¤Sϛ9Kg2d(GoKm|,ޕO.My"kP]^ O`QNsyPx8)4Z"[?+se.XxS_hhhA\k# jֿ2*V(9V ϧ /g _t̂Ⱥ0.so" y@Qe頋y(-_Q5Ejs(3 /H^8w.MQZfib`u c 4$TULdE~ev)"e3 C?ʊȘ6B$P1]gw[T 9荄(Y*au%t;n652&%}y*?uJΪ`\\`AadpQdm#.bWAʣ{#_G 4g-@DY$074 LsDn/_Y Pqeۑ{KlEh*_,~!CS;z,Km$` 7Dz2)C9 L:fZjӣt&X^RU O>Y<VZؕUڵ0 QaxO_q^Z?/|$sS`T[ HC'$G}1f`d׼*b&"ݕL\j{ cOfڤxN1m!xPBRwJB~k B5y}{{}!S@* iN> zqф+}}brt>\:[ z8<78E2SQR}ЖTA1- zO60b -[nbn bJU-fxXBPj*OTIPN*גbtBQo;Tx,o"[6\. (M^3[L0"=B(r^j, .umډCLzyD]Iu}CH0q_5į=y*5AL gҢ0uVv1\V9iOBDHAffDU]VBrD1z%5V)MSlEYdbO,u1aUSxe";VWYm>=CRZ/.AJ{Trt[[`K4}U9о%)zWWU, q|ot{<{"y&8xɁHc` %QR:7^8w `_UuF=B[z(/5^*B7` T~Im;p%&^|J~a%8U='k,ua)5$ a@ 0 ׷@j4("YT:C[<KM6DM֮s^^CM:w>$Pqa0rЯ/GRue3>6؁We?fѼXx /]}gMy17xmQ6% R44UiGx,e < I=-aD0+A#!K/=$ni;.=1Tnr=%$-8 J[ 뺻٢''\YNI^ps }b3Y[cD$Tr&'ITR|}Գ;&槄\,i\;~@O!nU ov:_lk.=U7K-"ᐜќ"yg Zt r]w'\ղǾGgAi"G25P`CM^ <& %V4εUo};y.i @&-n͊'"W{aѬ[\bi2dÐ`(E"*$]Fсj]r^Pi=Xva*KPT[t)4/sx\Kwh_xq--vWOsbl:K ^H=N{1onb x<;rZb"UJ>yi(4>P'H* { n\Թ[dCp#s\F^E8KV{X{brfGK&\G6u$*RW}+ u#(i}By^xINh̆;z̎< :Zubapu9b; c=JX3(+並/<9C`tI aO}IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/la.png000064400000002003147176754540020360 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE&(h"#9)l)ktC_%f!cb`'g`)ha"d_ c$f#e#d b'h0n&g$eԄ 4p?x Bzܽe}'I%H~﫸 /m6RUoj,k(h 1n4q4p&fPlq .l۾IcD_ ,k&gg}Az,In)i_v#Az^w?]4q .m3R C{0n>wµ"dWo$F} 2oxEbo(h(HKg/O7Vë:X9Xw֑2o9t>YE@IDATxS1B-npw*MTĊ  ]XcAi" R`8v3=|JH$DL>Ő\bhhӬŽaayǔbbz | ض{հ|qq ~ ddj~<<lzz h$$22zrr̞YY&&--ZZ33 z zz""""y;;ϡ11x$$ }fxx//״))wGG[[x5577ii[h ~ ǕHHں˚¡ΡCCWYSQ,,wo__PPѩz66  kmmnnO[ǖNNjl''ffvvƒ|߸OOܻ~ LBww } ;H|  Х6:y{{{++jj ~ 8=AA33BBUU̠kkXYWWKK//23hhֆŒƑث||~~BB;$|y\\]]EEFF7D11zӫֱײvQN}}ÐȘ܆<<:!MM}MM??))JJ##ppIIA1ǎM"IDATxgtU6l HH%!Ak(zPPQD@bWf=g}W/ͣ舎舎u aEUżmRgK{)l~Sz${\sOo(rSU!Z^bk޻ݴȑ'iSͩ6Ar?j>'5-xFHB.Ð(jD-G#Be¸Y‘ ݍ߲n&q녷_osOF/n3Fme;F舎舎ȵ IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/lc.png000064400000003571147176754540020375 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTEe\[d\[]^c_`ba~xy |mKKKvvvUC222φjhρs\ vҩr&bЄv޲τi!!!rrr_^^_G9999+"FFFcۑQ0's쒁|||ڲ???un***zb QQQmWWWWȣ !.gk<_Mρ]VN(qơͧϩ\...fӬķ/C3N?ِ$$$ r[liYz찳aaa;/`zgҋSSSht;z}666ZZZx⬱υe~kfff}iiimmm{VPiIDATxwtTE3smzKdAI"- B {&MzGi *E)  V@쀊Rf޾&$os<'_7'?HbaeUabGS%Qn@4c]0"ҚTZ`"5k1H=>R^/ I#6d-&V{)-ƺ/)f~ @)X%|BhZC{YbũJuuMW3=!X2edɑ@%ڋj!RY!s.KZeMqX2E  ]+MŻZ^;d>0Ux탆{ $]_Xh6Fqw 7= n= z^栅Xwu}b*?g25;j^L+]6zθ[ܕiX t^#]*)Iڛk: +Y 』<7D 宁ԙw * K!"-BՙEDz!w) @uu,WbVHbbR1 .ؽkmؓ_k[xg'y>v/7)%D7dc^箮zod70g$ 9p|^U`)=0ڧ4zgJGO.C- !}$_n/,`Հnd+/Dܥg3\f'ѹ"ym6.pNwr B2.{S m<Ҋ}`)W ]JЦ2D']Q2y9g?!$1*~m+p`@}jA$l-?)9+,n'y (*'$(v93>E*-AYkd7sh0έ+;2 (*Z%MCnc,t!,&ݻ5'ڸ-%7UPD* ;ˬ2ͮ1aR}k 7x"~m$!~VS5;&+ط4-{".m_$o6ERٻ5+?'ڷ1ve!l!&(($:[ )f 1bæ/а2-sb~%gW+~ַ4Ҷ3* ,jo`!r$6<':%(+"s()&.ZM]Nwe+ֵ3*|-+xf;< v%~+*)zVI,+o]{#"REzi"+qK@2f$<7+T5]$pie:&!$_S+$e^Pm"ϱ*{>8a)}yi&7$y 2h&YV@!4q h])*]Y5[V.vp>tb (j )n(i *q),}#|%}#s#s&(9O7eZ+t#S`ƍ7# @ 0 RF:Pw%V(L.ryClmٲt*+&­xe l!^{yfy:Y56D=F14B =/b.k@d#2!cȓ@ؑuqq#^&T-EQBN\~1tiWikZiFu $kYpq]mZ҈giN^.IZ,^SI]/C |.u^bG0d(?wbAfGh٥!N!\H_2YE "x(-jak%k9Tb#%oi(mJDQ"HNNZWaO es#sE QZ_SQ6m=xmn\HpXdט Oh+<{4 oFx[$3^k.[g>6*) n1 W3VH!WQnsKa롬KB!C{HIGhSJ_U48$#F[)KɌ 5n+b5FcN5G#E IHXp9 =lu:?N] 楚pݔAJ^E\ G-4aMN+5U=^D bo+|<%`\3)DjIu%.Nhe*~juJ!p+% Ueh`|Hf0/TyJ*B0~_w9z;M~dkF]pkLN`i0Ź'PבA-Z>Lo%%xIB PʢrH?q B=H 9,-6'ggh.H 6Ԍx |ZwDxWֈli \zq1UBP|)]B=%T a>LԮk$ ||zX7Lc,v(c⛌ KVPˠ"9E,OfNd7]ea,T46چwgh1n{d,4in@fEiM)`@Ieis'r(QBBܤQRB|ݫQ>Q՜r+5Ԫr߾\s*Gf^C>rC$>W`5*1"b/>:Q a@nm>Wv\k߿}Ȇi7>{Jٟ.2~Tq巟UkZ.IOAz:Vר8By_؀x' IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/lr.png000064400000002074147176754540020411 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTEf1133ꖖeTTqq&&ggcd\br`^]a_uf""{GGEEwߨ no,,qiMM n\\筭]] v󕕿p""xp諫q(({jkssjog؉AAgcFF..WWww{{GYřk h==MM'&hhloh[rdTTsr"5xxfnn55,,~||^qOO++} i k l kek'IDATxb`"DE$) ~Kxx-`[3ߏ͒r! % |VK!@D"DKr4Q-%R Shkz|X" 8)q[I%KZmL @B5``L-7vvX1ǎr 0h!Ό*VdQ+Vz%?az2- H )0;T}$hS KD,e!( tY(H@W"8BdxE DPXQQg`hIQk a`H֔I٥P0}{)ZXma%ERX"cj+~FNVOdd@\.\TV G! ݕI8L%)8Qn0!U$@!`#p0000 #KF Q@CM@8Z@>KXF Q@CI0Z ZB;`[ߌTQIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/ls.png000064400000002115147176754540020406 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTEC 8l~ȓҰxxx FFF qqq %%%珏ֳҰggg vvvttt lll,,,{{{uuuCCChhh|||ٷ߽DDD((("""666zzz蛛###ܺ333𴴴ҝܹfffiiiQQQpӰ111޻ɂ󈈈III}}}qHHHkkk߼EEE)))펎+++***ٽAAAcccNNN[[[ٶú]]];;;VVVДӱ¹sssjjj޼444```~~~JJJ:::ڬIDATxSUQ ?srN"v]a ((%!3 ę9>03>0o8p#DNx +;]GZn2˲]ƩuȘNiYܚMz MAm4%92CG/4og![~>>QQQHHHqqq sssyyy[[[WWWSSSwww***BBBeeevvv¬000iIDATxEs0`_ۆuiZ%_݃>[%3]!B!@f0 B!F\9IR| ޲FITRFK n TY1lNU'x.>Γ3UyvԝDK#G憬XaYP^7]@{ߟ(Q%n35 \{gTa$O˂1u ( hSѺZ?;r%{AP<CzQչwYLQ>R9LºO׻Aښ}g|.MAX,OxbL%/bE0bD0*.:/BN1AO1\2Z2SI1*-VH0c3a3WH0-.c3HL1 `3..Y2cD0%-0T2,V24R22T26R1 _36Q1,.4.q@0!-4/7/d3o@06/,-"X2b3*-RI11.!-[2[2)-v>/5/:/+V2)-(-6/a3[20.)-UH0%W2/. ^3e4\2..t?0[2^2XG0"-/.a3 -2.GL15/ `3c3]2>O1_E0LK1b3,-*U2$-GM18Q1+-6/%-2.(-b3 _3'-1.'zIDATxS1`tg߹bcL!k(&@( J tB02d'E;it:B!>"| CyK ^$uHr[HX(flS_](“h/yic]t*iI̕˻amQJlBB-F(p0u?bc|ۥl7[n$yzxћW~O5B' 7`I˖dcnuby$R U9i\_MZ*¢&pTΤpd**{ 0frFx%_vJ FtIN&$$:|ZxU S@5Y{^~G_՗vV >%׿B!_ 06&NIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/mc.png000064400000000252147176754540020367 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe< PLTE0 #z|w*4IDATx {ȓ@3H$D"H$~z IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/md.png000064400000005172147176754540020376 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE!1'|[,;*\k3TKy:Twn+Axji3|< x ELnw:RlH)җeK$KqNE^,um2e2%d*XU& 8"^W鎃 <=eçiU=Zy8Zeh;{2B_7 p4"3'4oR'xV%\Vd_NM&;f<"?83mf^b%p&LDDn.m0d05``>z`3yw9^Nb_e)~ $!IDATx}TSe9.wCbಗPH^`B(Bͩ0'NDCd+dYI!F4^@(9s=|=!h͸n9Ӷ-V+g {yf1E"8ГӦM[8)g4g;s|dfTiM>FŦ3# wzDKH&[I0RU$C*ȓBÅtuƛ.s:ƊDͰ]tnwh$-qٴ^KJWшvBVgz.^˓@Vf _rtaUM[&FKf u+2!t0_F4᭪نsꤻru2a}~~ͯ-Zp*pcxhʧ\=OʻOc4$1ܝ]% `z "wϺi;b.({ 䋁Gy*k+eV9W-1$-՝@{}⌑'zGp=iLUBVz(9N_@MGl6`"!)x}[J˭Շ|ic<~j>_{Rq+,VUXXx3̐רV?d0g}K__|b/m1|DK$G:i$x\VE#83c#}KD.z }6"zb~ט\7:(R8Z`CA^"rqcufYz0_ῃЍ1u*Х8Df{̚5ͤ8MPd%["С6ћ33Zs+j>U!Ϣ72bd96ɍ1 #԰:zMN&] Ē3 W͑2Ә/ʖ4|-Ɓ.MΟ6ԭ9<պ=Ѥ7Ǎ1˘4Jlrc UjqȐ2Ɖ0u*b?eoge%\"7i&Ʉ/},ņ0;"Ҩ8}MӬ9}y[̜5ʊ0Ɂ.Ώ-Ξ6^lj ϒ2:Cɔ3-Ȓ3~,-̞6Ч8 Gr|ҩ9)Ε3q)n)|TӰ$Ъ9A AXxw^Ϝ5Ats^Ω9>ҵ<ک3@v~by+Η43^ִ;՟0ė: ̠79Ұ;ϣ7{,|E&`$ҭ:1!}+n(8.ɞ6΍1"!ɘ5ʚ5ː2͇.g'<"V!PԷ< z**յ<̜6Ү:`%FGȚ5;5˓3Ï2Gѫ9Э:i'6ү:o#ޱ5 ̡8)И3 ӯ;ɛ6CЮ::=Ќ13ϓ/Ћ1ղ;t)[,<_plQ Ԫ7ئ3ִDqnwGU1 ~ Χ ໖C"pH.݆܆|)6=^_L s7AmdxN,-.jCNn@b@0.w]p1-羝F@!ܿys=*۽`>k(4U-X|͔;}6~8wRqzݽ0HF}t3 `8&dPNX6|CgR4= cV U3$9YUfð]IK--UIyg V,s \f r 8>ȐH{ BǙaI3CsY 1S ?zCOsh>:~(,8<3$L EuEjBFdAAN pLKoN,GdȲ d7 G5PF>WHiA(6@eP#.F "tHWC2ifW%Ѻ㷏>(ֹAf4k" 7."铯CP2N"sgH]x<++pa51z0R4ß$?wr$gO8e(CO|qNQKw|Y+^c_VR?2bR驒+%E%-_*zJ#F ig$<9NYԔj{}eŽU_nuҊ>L$z0Y~u0֖Ƶ_^]2j_e|!䌾 DvB}醗lٳlIzp=Ϥ2BՇ^A]oE2 E}c>Zvh_M35^!řr SfD]{w,6ڔt -mGZmr p)Fj bf܎HK-k^YoL+^KBJ!~۴Qh\fX#ˣ>Д2F*ٝĄͤhTnH+ u *utMft s+rFAѨowvww-RXB UGW[pyޯKuA][DUDR9!*rVVsDV:&ҲFTʴp<9*4,cχo-"D76}/Ai7y{/*ZgO 6K ob{_PΙ~})I …׳X1AoeL< kr#l|BtNgԪr %b+1y?fzM ^I?Z+ޖY|Lf$A=ya{4xxg`DޣE fCt*lEH{h#|EQdf{Y=#n 6B#?4c)r]Ă_xƁdB1sfڰńpJQ3]nFM>~XacCܷf Fj#Ȑ$2u}g᛭D:\R-|(p 'w_q{y >=YH1ϴ"*Q9c-_IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/mf.png000064400000000300147176754540020364 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE&0/x*t!>IDATx sol?Pž)3[$D"H$D"H$D"H$ 0A"o IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/mg.png000064400000000354147176754540020376 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<0PLTE3(t*)~p'  k~òg釿1RIDATx0 0!-#"21TD"H$D"Hmʓ眪_KUX%H$D"H$O&^"nIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/mh.png000064400000006033147176754540020377 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE;ZW:Y=[9Y0QL0UB`݊Ԧb6V֫Xʢcnt4WZj/Pj9XKbTR9Y8W4T-NV3S1R8XԪe2Rʑ3Vaz}{ن7WON.OSe~R۴VT>]}TrDb1Qisn2StVq:Z5UtJgğe7Xx&H7V#FmV<[ƉNjIfip=[mW\@^Sn=\3TPlvÂZt|PeLh-R[u0P+O䙩To3SQm5UFc6U둢h7W?]VWXsys߭Y:Y{bnnIqة\u}N_xg֨]Ҧ_c{߼rv(J͘˟ҝwA]ӧJh|HeMl]wџ?\Tgq1QNE_Pk+Mwx1U4Uڪ[ݫZ}9YSoXbxʐͤ`k=^NeΠNVUgsryUp|{D_5T6YoDdHeN3T IDATxڴ{@[W HظnK2hu@`,PDqVʳ)+++lLtk2@Al-uZ:]|k7{on/=~9}>m|cd+sEZFm~>8?Ѽ91Om3L/ofդ,+ "$wžUx䘢/d|BAsD' A}7$(UyVX? %dqۋI,'V#\:LD胀Oű|CW!ةftVjz &-iQ3T]LNɼ\ClF3f%L~IF2BhG3v0t\5M,շr%+R~WZS?퓉~hKrJw9ud= {^nlBdžMw@>Z 1fw˥*e^04F_",lftHa&* KP'ǧ;W Bv3b_ -;xBH@,նqҡ Wx tɕ+*'=ԷP#%3p é&U3'RmVFDY xH '=o@xbԱ0jRct-*|T {'dHbN"4 )D1&e#w>N[=up6cbh)Ud7G9\RmEꍊϙc(ϳHɑяy'Z1yDCWB.Y}q΁XTBfЯXFe`œ;P.N-|/CfurDz{hd*k*-<DZRLȑqT-V1CEZ2wtFiw%- !vA, #oIDATxڬw`Ewݷy%&H=O0FBbf@$@ MҤ{C)wQΊb%z+zEؽ^wvevwMw3of~?noCwqE=hm> g RCâJMƴN2sb =$}6]߲v3qf,yVEC"T૒J\FxKDy =(b"_+m [oۣTg;|ΠPlDV5S_(ѠP1,}WX*B-BB k76,b[W)*2[sx$WuVe>:pȌV;zϔ+'JAE!qWhgz!rhdcfUT%Z`/PuAF&ͨXk3h=Ie{C*YD[plT!+K ,oIzB>*62?!,nbw]B𴓴pn'vfڋ*he}ԧ0`zF7dڏ* */C/q|V*˃ 73+VŴ2DRzy`vZYvMJaTdsq+hgPe9 fb5fLŚWUkUY4*:gBG^iBt09ch颲Py1QȰ k 39`P!/0pZ9]~r4F1O=RC\czG'9]X/1vydg'xwuدqӇZ`X.}ԢGWeک_ &_x'0\{{ߢHX&#*2'"R6'KEG"hzm`,5j?%>8}82I5emhH 5 Z6¥sBnwa  $ԍ鈈eG5H1:+P܈O$(Ks'' cT@C>J*Dl2>6{}^hNк eץq,؎]|9UЎrQ~혏|n2w%a7EL4) bI!]Ƈ5M?8skwCA*,0r?q}\ w+'[L'R򖅀~TQ8;c Z 5W C;gZ@'e[1|.{wo~šHр*p)qTgӭYx;qhD1O8{{CDȄ3j͔UadUc$ a.*DmxiPd ę:R *Ŏ>fփ~Z2v"sPP'[ G f)Fʄ=TII̭d95f[+f~P<gfO?-8yf9ᘝ㌅̱*2{6ZK[r>E!*V82czعt'̢JԤ *^ӋfE>ֱeO8HdvXo0r6ؕ aSJ2C+.!gF?ͬq3o6TDiSovؕ&ŭQVEM~0!QVE4" 7EUu*@ʪL,W}ݫiE6zjsn"G%չx`md]SXR;Y'-v("C 3ۉ>EMqRvD`y)Zjwn' IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/ml.png000064400000000270147176754540020400 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE.Gpp?>F&ٚ+HGܤ.4g#5{ZZ%+؏Տam BBo{ 􋔶;:ʳ768H=L˧ަ.?ؘ,ӋTTBA][5.OIJI+'(12"30/ji+</l"'$#5476}_lwv oP$5.//521 Տ!3/.jvmxvu^]/>7ԋ71'%ӋGFVUR`@O98%7 1P^ 2ۢܢ&8ମ0..,ӻ IDATxb``ti!ڮ#Jv.v7`vuh03{K M`~@JۨYAӨ_}d m @˨Ԩg#y1CW XHgmaD$E+.é$hd`'\; x LDK\5I%HJj4擔pBPOVOSYQDKdy?Խ5){jGȖ0WTeߎ~+JYf Ig*UHQua&t- ٯc&BOvX0tcExI .ynCr1 Ŏ5i~2Rlvk'+ +gk>3#1v$R(r,F!;r".-Oq?XPvxTMUZJ`ĻEjȽ=#Njf@4.I%DqYbu'8 O_DEذgfp .9f000Hj-.GK6Kk -hOW%`FN(ܖbP@ )ĢnXU,E!3/01 )g e`(k)lXNQ, } (i2C U۸Qa*'03 Qyk) P$1,W#o I&8+^ uZ!24+2>)1wy55@)42 <)0,?)}4,tG')/a O$^IDATxEwa`:Bd8H4iw{B iwܮ]n3wϝ@K w#8#8#?q8 Q8= ay(2+dBt:("+)2ՠ+l __JI KR iMW{D !HOAA.CcAFz'ފ%PjEfiR@$B i7¥*""yc{ecD}zӽEEX㉯|5/(lAv8?δ$Eb(xy̸kނM-$š}Ȝx'dͣnH!*ȻȦ@ ;y0J|wy4ypM=䂲ر@]v5}!9B v.͈Trn`Hs r8<\xqX,rB\"מJ[F JG4˕18$)ir,?|]D ]V)w( vBJ\}>R[_ƗV,?ќe u*IS\Ipt[nok|\dzw ƻx[R Fۧ?<Y2aTf/b0<^*] B5 p_i4zra0wT6'& /tadBXF%T%Sw_y^Ƚ1m)y_N{[ThgiXźw_#ttbx^ȼsXEUCppx^t>Nw`Xw]0{#V&U¶"?MrX^0X?-}rdhE~ѕIDATxb``Q@%D;6Z3+&K3{|+LjI2 |:s8X*i.M&yzJ_\8MF|)S|?^:k~}$@?P11' CRk|1$x81.rL^I pdd<d) z%ͭ+Ȩm,c:ˆaRC+ bh;cc=#{)8fxSX+6e9 KWI -9w= "몐 v0Jb ʻ&^0NW4BƘ%6ܐܺQBC)Jtx0|(χ{pE?Bct ZLHGg0,no<Tm8^Ѓ?O=<3#3<`}r~Vzկx#G~ZGXq(cq9bEsEϋBR_߲fi\V!3HA韽xa+n~Qף|/P9MptPlK32]E돞 guOrCq.7& 7nn47cn; >(hw7m4I5_p^A[ϸt1.Q{*~qUcR[oMd(MF5'׼yb%Rk7aw߽7{]W<….~sS9,e,q<˒]CT::D %A vO\rq\hWlW^?P=gMJ3XhÝvs]Ryos}cCX0aBXTLdauHi ,ě @f9wW1i0 rWy gDp)}u@&UFu^XMx{ "t`ZfԪ_pbJ% yݭU3؟٢ Z_nzk]~M+DT˗@>QL,K{,cBT{uοax  ʒr^9`n2}kCy]/t|t4=,7jh-XezrLA6%0 ^AC77"aHvU@PrqfҒ$DRA JzkSHBT }Xc3 C(H 2pBSD0\%;wH|Y.Tj uplVhF(jO?)9^YY@!b,!"}0HSe'Dnh8d !0f dx˖b&S,!jie>͕AZ.*u6mG|ur/4S! KJI ӶQ'ć+F1aDm #V'g1dm6̤/;ܸNHիZk n2e~҂, j)1DְRcwGԺ$>PdS>^w2&]$RKa&"8EVvDz;,ƹŻFۭ`qT']$|3=L5(jfϸ̺D2ZAxZS=qYmj<4(x -]5XEOe˟3b*jaW$dI~L4PAOe*僺]oYC$˯7jd;.r^%Zܾz7hҦ|҉I CRgkHZ&̭ape5hb,YCu0LQ4"Iw=vP%Vq, -pOJRIDATx sol?Pž)3[$D"H$D"H$D"H$ 0A"o IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/mr.png000064400000003371147176754540020413 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTEb3*>DP7e2d3'?*>*>(W5\6`4]6^5_5a4_4a3[7d2F}%c3 f1]5­ Z!m.M$oO#Y8"m-;y' g1+s+ϳ X"a4 c3` ʱ [6i/i0]!k/k.jye+q+g0%o-Į #p,¬ b3`46w(d2e2b3W")r+c3^6޷ j/ B{&uǰ г !o-R#b 8w(lR$׶"o,3v) c3߸n-ҳ tgO$Z!7u)A{& J$S#!o,9w(>y'p\7 e1W" e2۸Ư j/`5h0 d2!m-U"+s*bi/® 5t)&q+T#a4Y!d2sW"¬ ޸޹_4߸E{&ӳ ڶF|%f1g1f1?z'b3Q#R#@y'g0߹Ե ִ(q+*r+i/S=~ Gv,d`NEo‚"LLLnOLa'a>&0u&8`g&k=] lGR0?AD6.%\ϵ0ӢGF0ߏ KkHϣ<& ߹%בKn*ӸWx-Yu#ڷ&ʒ^p KCץ)_\`fw/&}Q#0\q@IضAs\7r,Y-xb?C&k%-@z<͹BpYtH!yei[nOs._D&}(Xrq֚K 0p *yΫqS|6&& Etj\fR$Jn;(EVYϭ$ҷ-Dȫ #l2d @% %LL|-jkA&&QCr[0Bׁ~i(t%F N򼲠vUƪ.>PJAS7T\ݚ5Grcd~!^k֋h -W|\Ǹy?BP$+|Q 4l z<ܼ@B{ZP0Dc^[ xxuT>.hLYƼ:FLP &%,, $Db\&S\K ]C8"جʎRN{ٌ3[Z@[\\|p s>O>*?"E^s}Kn0/MbGMU 4BʐQ@,`````FdԒAb @73IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/ms.png000064400000005062147176754540020413 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE!i.1Ie Zcw{!br!YnxHQ=|{ 5-4:1K6z ;|=uIOL3e戗qUn뚦AzYa4 $k (z2aۭU)3Rf&@~hM \NGRwV?rMC~Bmb&)rkj"!\|'% f\)t0)nyomF1/.(#GV NfKYg+beSa sIDATx}\SUwa¸w0,@N|6,Qy5e3^*N0! riEYejQZi%45:mm>_p}v{~w4F7A5T4ޜ Dpը^ ]4K6$E1""O,bB4wx8 vF-TJ @pM+mB>,1J;ǀ بVH;@ b;]\"@Z:rQ*X,Ae*v MT gAQAŨ\)Dd9KЬB"w'vʮ$.,*ЬDncpIPhXAV~]IҍG<88fpSSSS%wS lb(*\^GrZ0?h$g26htW_˵|3RܢfǏ$IldjLb7'-%vT}Ku_c*ȑdߝ|ndƙI1k \Pb@1E7C^sHΕԴvWG1[tߏc}/Fߛm9\8DRa < ISXğ#NB 4dS339$6cp8{);~`p(I>~90EHQ# T5_PG+ȅDK o|Imx7;6v֐DeP;9@ӒH͌ЊɠQJ`3Fݢb%ãr*wbF˱vDr%$)-Ni&)!:GUfe~ɦAa%W܊M 'T {G걢V]'f= nMTA<^@]pe,ɼ%,O1D5K=wpK2NKqW%l[p!ٗ:A-~Pd˩%#MJdw__WϭhvMMhyCuyu7xA«ی " *JLq +^Ό`3SI$q){DydsK ҆]71Ƭ89|g(M 5]a ImU qglĉE[LZKh5i˖-u>K{o]~>7z M$ιoT˒rG/Qe˂c)dOF0zI"25!9 ,@XwDRt./R9Ԓ thwwokd΁YY:MZ- sͶy.')^&Qcu,,5fc]9I!e2I$,ީEG4#B8IU!SvG=ݗYU!*'1c1}mJIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/mt.png000064400000002621147176754540020412 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE ǮSCܖ\}֔P?l̑IכOm\ĘG~ĿǭʓI˒KpL񹧞rKVq˕ڿE߯챍ҴyIJ˿V޾vvſkV<Ѩk@}`٤g8ԇ9Ќ֒MɛⶶǮ{H۔FѝߟMךN琢R&đɯןדKෟ˩TƬrrɱ=݊B󽫮]=G֜Pկȷ}y&ܔU{{׾M륦ݏPa03/$ߑ_14( F\;E VwXeQ4(~kx~Da,ZaED+$(!a!M@H (DwyeD @-"2jEJouG@"#D' _/gd 14,!"o(^c#Zv$*`o-lvߑc#QXq{ݯtoN]uwjBslSGl>HO;c~~jin3n=boƀۻ8r;}4!2x2WֳCZ.I;<G8p#G8_!$ȦIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/mu.png000064400000000345147176754540020414 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<*PLTEM'7m'5U4%Btxh?mQn QIDATx͇ 0[F'PPQܑV?IPRRRRh %%%%%ONC@$`9EjHIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/mv.png000064400000001677147176754540020426 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE4~:: 4 4%546:{5y2z4~;|6w/|7}8::4x0x1w.y3u,~:v-~:4&5v.564{6~94w0϶ǩ$V~:$Vʮʭ BG&5£|8V}Ĥ&WFδx2v/ԧӻվd;:AŻ/[BO*[)Y=fLE{@l}9 466~:Tzǩ3`dJBkI6b/_4"P46 C5MvI;}9Z66H2a Pw C @ȪиD<϶z3.\KQt 4H'5cIDATxׅR@a(E[H[<0[ 2aX,{ (*c!""@{_A*@LK~!: ޅ~TeupU'ለw? Yk%^z\yNk }{|M#e%oa+DD@ 7Hn0aTjmJ‚zH;` q£"@&7DT>$+2*K* {DtXTO^$-k}dRDE̽{woIyPڰ J_DJE9w %,Ýфw(q3 ]G/$aNrr5U9A,'1{i2W;G:z Ũ(UbXovDeaIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/mw.png000064400000003363147176754540020421 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE!;<;y5  #   % 1e R: 0  7I/(?A + @ r CG 9i  FV\ L6j P;f X H     Q .l ,* m  Tb  _< Zy  D'8   ay ?=  n   !  S23)*   U  C( ]B  Ep  *N} &{ > U 'D t   %&B  ()- [   ~  " K   g    Ek @@s b]QIDATxb`` EH.~7cY򴰄I\3cz7 8*c%b)BE~a- V6K |<>G&,ȔMHwMRZ;^sΠ%J설f; s/t+6y6W΂b~RÒI5 %|˞~9Sm]Ǝ+`?1*Bum)$>M  nqJ%fJCVem*,ty8]KW(f9 r:*e]yƗM%{[r{| me~xXDFYyBYyǼ]mU7C{k&}ʅ]jR|&-0wW'L%>Bm"DN2K`UnI%FOl+saBdt8?sIllPrV| {jyE" m B,Kpm|2,x#(Uԙc h ]]oEhʎŗs=HDUɴ0DU, úڦ\HV`"`4񹚄t8XeFO4-8X [Ugm.4` }'wwwy-1PRUYi]Ԁq]5T>mN&sIER h-\X>qNU_gUd`InF7@5Q\8@:(55OHjE*oSdb4P+tx|L%C*]2\5l>!ÓY-|C̭cy9j8I?|jO܊?zǞsPnF"Q+\hߔX&ھt@̼Lsыa5üp<%ZB,Ŧ?5P]N~k`@dH}R/}{~ʮfs屶ArE)͕؃xM/ѷQžťȾ駧m6tcy^ᵷѐG|xp^Qυڜ`/n9V;X2T*[+ۿE(gH(K/ȥЭix]ؒxO2V& {>:sj̳U(mW;ʷl4vž٩Jϼ^q}^{\Dl@}BнI;IDATxb` XfvFaԒQKF-dԒQKF-dԒlcKPЂ[`cȿZ3ZY!SX]vO%N\'u8.N%>EWq԰zHK:Iv 6:c1}f6mkk/"[rbeh;,fixAp%leZ&ehSy{ -7IΫům\r-磲%M[HQ3Kgb keL=hZevIZf=gGpV4-^pQW8sg]\·Rђw|Lrz#|*LwJL?$ /]'wv^~hi\DM=\W6=_&u-a }񅉧D.C0Cݜ]LNT')ܦQ oP_I #Qs;/?\Hx,{/VrE}QW)%e,Mz>?SoԦ(EЪ**OQ?46$V3Z"@vז%Z2jɨ%Z2j [.7IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/my.png000064400000003630147176754540020420 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTEfhFG\]^j|| ll鐐<=)*fkilg`m g b]JB8-P aq.eD5K%%X֫ c#XnX;iU=pg]]qZ:_g 6,Qny*fI:IXFCΥr]:"{b5WEF_\Цg35)R( Xf#Y"cO?za5) W+"W|*r].%U1&T d ^bO?GȠ(WǢ!Өt\8PAF(Xĝ _F8JeϦ[e>1NL||v+!,#U[ ll[HE~d4d ƞ w`8<2(R baO@TCEw_7۸*)Kk:.OYICK%nP`:!-μd6Kibw$>[֋++ME0ܔPm۷THbwe>]uh0ə^dgdadq@!` 6"%EttK? ](b֫$b=3 ,aǧl)7Qd s \(Y||:m 0tuɑ%n&g+Q+>/f̫.jB_}%{H (&[$#EHΧ ;ZTT۬tZ(!pKbtSR<ή^KEOS&2>_D] OH' 4n$D>0TM ˵[`OA03rnKWqTX§bbS-%((#bDAxٙ||1.˳SR +Yb)\r(١$y('(>49k䓹}QJԌ8idGĉQϋO#I[!{xӁ+7S0_}(ON=r>QRϞO- H;z!0ǫG +=6jѽT^dpCH\vˮFg~VfjEAjkջH5JabF)v#"V<[]?<֡."rS alr_`}LڡYk^܆fT5A'*ML@OKx8F oŤJ*XYCΛ %%pcc.>1ʖS&0|Uq|ՅcmmmŞDtԧܾ@ ܽ?{һbppp.08j_̢-.{|bUUUL|+++)@ !$ ˨lZwT9ЈȘmIDATxڴeXSQp9ذ)l18Dz آ݅ lp{?w[WmɃGpQ2DER$5$ Wg>AIWkܕFe9,`bs顎Qh:?["KeZ w|)j%LXrijհwz%}' Gzej[w9 唲0ėt>-ٱG/m99]Ʈ30D۷=ޝ{A8'8zx}h+:\(4crBھcѰ-NW;4|!-JDG}w4#9FIyaؚib X+Y&MM^39*b,+Fb%Av֥m%Y<Ҽ6SB!Qш|e#6`#Z|.F|*JF 0"p7B00!"`ST# B͌#AJU"F0P#婎㈏DGc;p9[IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/na.png000064400000004452147176754540020374 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE86b78c=:e>ﳳ5b 22Ꞟzzも勋jCjj𺺻ߩccf즦UUTv[[[ݤy)X-/],Z;e$Vԋ4a*Y+R&VEl4a1_2_)Zd<<S .fqsD/\KK--tt1@ A{Y.䶣Jh4Pw5> iyOs藗[{EE776Kp}j/۝7b&"Z瑑))?imvHpd>8dlwn`~W-,vS: ЁqL9d-\;7c19M 7YOS'+Z6ba=^\/^s%Woo8c75 b68APP;f(EH8? Y";;h`IDATxڴ\ucW&Bg@8mj*?̈f54˄`` 4-&aah(ai!O˲_Eem97O^wnyĹJ(g?)ʜjrfeed`jQz掽 6%1lSǾ0U68Pa{MN&0"cB^=S~}"iڴﱉDV%<4b,(0; iA9U%SlbVrar":˔S;SzKgNsk#a"tUhJka:K16?X"1y 2uEwӦEb `Gvӥgt;#4]{!CZj~9I&3D9i1vTk4ڙ-1SȕfK &:UKP i] #6?[atAzrGdh o7?[Pi1`FtSblOOj΂rZ`~BU`Z~*e\465}'~D-bgqO2\4B5YLT#/Q1F"xD*}L}τz` K$Y]#2D SH9o goc`g8ABGr80ϻʘw}uwd%֜'U0DzT6#⠌l+cY/xdNǫ" q}&BcKq_H_J(1n'󛕼xvK<E(>R~~[DEM?!Y|E",#1^b> e,1J2G&UMgnCoFz??@fc|4)Exu5Ue$-A#,1{,Z6L[ SƯ`*aے_Y *2TgfqP\^;1^@lEx3d }Sq2B8Bdx^ 0B[Bq".2 !\e82E!lk]bHGG?C2B".3$"$9ex.XDET*?pC$B!ƺ [Xߏn!ZxE]ۛ'yn;0~0+FǹZ\#q?q҆¬^<IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/nc.png000064400000004327147176754540020377 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE5CA5C5A5D5A2@5@DzD8RLEx|2G  V%+ Pjlc|q%|{8=j3Y+,uD% !4-Z:48]ZHYR95!&A#FutC76bSGŴ61/ qeEATS5,)D8vC56ͽ$(~l )q5C9 tj.^Vf\(%5ɺ=5A5LF%"60 |IB=5 4 6оC6-.B6= =$F= !%>-1" !B 87= ](@7B5A6C6:r^DG63` B6D7>?2de@=E;C8wmDH46 rp~ vmIDATxb``4M0qAi 5*'Tk*44[_ MR}B&U}]Ra=UyԳ&pGQ`Q^&¦ML˯lפ7&3e%l3$xM#Q3>7?~|'0GXMLY \^Ƙ78wZz}uvoCӘ!"'[A->D&2Y D~;K_4#! eC 2H. $Z^[\Hb @q 7]Ms[3<~%LrM5q6b$o>4mWf ͸sq|.%&fE@oC-C`Bg>= F |mfkT.32XÇ ;X}((bI~#̫ȭ["u'>$mM&O[һ'~1Hdi>I)9@;v7.fBJKIzh 2aYSy&s&n"ՒVs]E Zbg?E!Ik<$d5l-)Ȗ|ȴ ?b8O#t),u*=+U+編V aR@i/閄j`Zȩ@bXq !ݒ(,&Y瓖^L*YkVΜ:`&ٖ ekH'ԅiIlwJj׳ETI]^zM1 }k"1SQGkm{0DQͿIX3 Erew>ݎ ,,ݦKXy^z)l2aͮleXIɬyhde"hmi #4?fK0&N&`N^|2@1+}㹑#PRD68:oM`DB#7Wzt["e8 ^@6M8 s`I|\XQJZ+j&;s#KDF4 mP͇yŖWfx?AIEiD KX%yz Qt ܘplKo͢2oBYa??lrgFq=Ц tzsl&l/Q&`45L -a_4UPx= b +&0SaV ./HK)4hr-iԱ-tKX:6K32R5[= UGdX5ҬZuV9U  &. IdF:QKF-d$Y`"AUqlIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/ne.png000064400000001407147176754540020375 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<SPLTER +PW+E%GJFOIMLRHHNQQRK_éMg%KQ|Kfy?x=L\l*ҾEKR̵WdV u{Ch'^Yhf%^Ŭӿv[n.}CU Mg$k,[obm/d p4QΚJIDATxES1@$[oiqwB? %3/; 0 0 8m"R.YmffWvP3|S1nzمeH I]{oVGٌ)@&J]N#Qa>82iw= Q ڋHX0Hh 9@,0RBǞt#{ӝsHdu> =;NP@GZ) \.F{DYÓ1,S˱կZO~$#J\5$ ">D|DADA# ,@>vIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/nf.png000064400000003615147176754540020401 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE z |xП})}MA^RdZja.z D5jbUtk$Ͻ| N>ªmc[S#{VJ;~-ƬsB2f[MB~|rzs y5{$w u8%YJ˹REG;ʶpf~*u>1C}5:(.~u~ }Ο$v 1VIè&}(=.s 5)yi^qhxOBzJ>)|}.}r|'{oemi6$.e^RESFriZOXL=+zs~v9);)|ka-#|z|rme-xn}5#la>+/>.G9/{$8& ~VMF5҉vnѻ?-yqʲH9K=I9-RC"F56&5#vk^D3L;wl }0xVH{f`@0{J=v zyprl)n |xz2u'7{(-H78*9*{tq *;,:/=-LADZM@L=¢=+{zQ@QDUFrltl+{*~aU(}) y$C22"3'3 6A#IDATxb`X QKF-d[RNKUAhoIO-R(%1hmɢsSM|y&6NZZ"ŅmDcZZ63YbdtڠC,pf,wt%6Uܜ JWϽlH+Ki64{*}KV_naJ9hd 2鹂%:1wu{3ffy&deTh9OI51\$C KJZ?n ))=3Q^t6 yld^Z[GJ@Xs:o3nɂ:OUEj&'wZSk:~TeK!Y{--~7 mzOTOrĒʖy'k lP?W]Dy VdK@2io"1uTtt-@n9Z:+EϽj`EESiqPv(gk:]o-1YƉW%ӜCf [<dvҖ*NPN4J娅TNUg7:%b܎tY@XYYTıA5CB?Ԉz2϶-M%ݟl63tj U->M9+fI`MkRㇷ*L-73Ic˿#׋{YZ&Lؤ2w',QB1jr]71ԲRE6f̞P2IR*Tn:UѴ8A1!tj䟄h; >|DubfL7 ST ĿIQjKzVXgqXR>$#d#J/')*203lqog*ʼnpV쀵;C}P9Wָ%q}r3B-NfӷLתͱёjIx顃֢q( h>˵_\ _'-:͈DN8GsK _| !QKF-d`-0`9KiIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/ng.png000064400000000273147176754540020377 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTESMιIm4?IDATx70 w ʁ[N"qw5ʔD"H$D"H$D"H$D"|<G {TIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/ni.png000064400000002602147176754540020377 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTEglec zޡФޢ㱇ܝYumqܜ㯙5qwMѻ϶ȩ'[GάТ}Qbg٭oӝ8YZ zEጿ,˛1ھ迚B`u~jΞLj~r긽aoҭǜZ~n2Ȃ]S.:춇DӡZ廷㤉]hOtҮʂBAҐmߥϮXqrhJۘZP=ᬹڢN$B9cIDATxb``Q0 F(t Lt l^^6Il?yIH"H-Z4=$Ym/,t;Y`͸/#Gt M,Vgd| G-Ml\nK5@,Aj[bm/?!K>*[[DF6w\bs|%o}Ywz|a9 j蚈³rU.r7v^4uj'^1dY:9u&m]~GV] sR?Ǘ=ܱζOz,FFM>O긍Ԥ3Kʖq24{^$jgF.Y] \<~؆kR켦5St_4;vL@07-@0% b( 'ՃOiqh߭%.H8&c%TbhsЪ!Ș93%'[+E]V<<$ic`%Ԑ`1 F(`Q`򅘚@IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/nl.png000064400000000307147176754540020402 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE(!F#/%<]A%@+BIDATx  ?[x$ $`d+S H$DryddH$D"ܝ !'KfNIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/no.png000064400000000714147176754540020407 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE)9&d$b*g^%5&6(83B_2A$c0? `/>"2)f$4!1#3)f'7%c=K)gbhIDATx 0t/GO-H!A HX4=2n9!}4 @ C"a $czĄ& kT!PLIψ^Zdxf;<Ȗ45ndI*[t# Wđ_nJ41vun׾ݮcW#C慯²a!ŶG0VoC7   @D?(>u`~]IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/np.png000064400000004214147176754540020407 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTEe _ f Ta`\]dm ^cc5炂@D**z_CCa웛SS^>EBCEB錌!!R=rr~~KK..55";;﫫11膆7JZZzzZTUkddttNNYr.]z*uu>>3M ܕFF떖bHH꒒``cف@@zzqbb `l0񶶅% 22mm::YYmmRRe~'Z9bY/O w,V33ff$$vDD%S** &`=G sd _ f` h bn.Q*Q"SZZԤd"U!Uppc ``jL?u+[hh_llpp !TÞņ$]]hhjj$$b!!LA=EeR"IDATxbl@s )8 -#GcK$%̗HgVe *+hj r_4[$JTxiZh^pGZȭ(`M-adY$4m.M-adϬ$^I[Kx^KSKys#Y!4]d_Qa|ZLbVԲg&pc`(ׂ]w`hZ5?l5fi&%\(va+gͦ[gh6As-,ZyA̢-KvXrMe LB]K~4F$<#Ґ vdre2q`(vdxDz$%_<\2,gV}-S'^Z޽Pdp"R&!JrE BQ[GuGSo$XwPJy@:p9{bO N<3;VS'Nl{QEu]"9@MU,*ZZld7-E½ZlSB,//x_甚]*I)%ő\TPũk5H+e, ra$(Å ŖBY+93z2Ci|K-в:$;'*tRLW9C7C _mmB͔ž^Wuj CJ-i6_9fgp5cgZdRu>F.lmA>\x]pty(op1bԖ%ق݅ӖgLuTfHF\p5}̘+0zK`@Y|mk/C]qnok't$@m̘* +w[o1L`o -xom ,w#q喢_sD]\q9=LAZ#q㰻l p;T_G_ pg{!p'tm &sOg9Pl~|&sLT)IDATxb``Q0 F(`XXi%l8ilT ؁ `#8}AbK8W4Z΄rYkiY1k>%V6`SLcn8ϲM\Էd>[At3yxEjUb{&j&BV>e4SJLD0עPT/%ٌ6a8uAD 8mD>iG;`Xx#IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/nu.png000064400000005523147176754540020420 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTEfgg]d 愄ajc :H77g'TTqii33Gll ̵ 7HHBB*+Zs j^X; ++rrmdsST zrr뜜d6iZZm(մ*V&&znf9 d}}铓igee}},,~`99$$ץr.yt=MM _m ꍍH@ lYzzni QNKԁ& koﰰ``== fV]YGEELL.\KGeeFCOd犊` dhhb!!xIHG %4fﰪ﨨poYy vgghgpk@\hpiQJf FGmm@=R5892PPghbbg`trwxvwyrco?t`j&Q0IDATx}\w2˝; BrUEwy`/| BDm0$Tcjbےi6mjԶIgf_[#^f>3>RVAkF"v=25L0/..Z--]]NcyZzbNK;Owz z6aP?-0s{R3Bܞ {"kЋ쨙40pHb #3N1 tG%_!ˌGŦ΂ f[:V?(J | i0;:c$* jW2m)8Y-ao ՆBbQ< skJ0BD-5|H~ G0"֚(dI. #w|}jY炇c]wZNbU:{[VGlNEbzG97Ɯ0¶ۧ[yC *M6ׄGJ6 "̓~iY{gYL0&A\ 3s0Jي7´悛xAWlAxċ*4bӲs7, Ln UHCqR⅄ F`O 9x,4 ;U ^0pċξhxR\<؏jX gيl&XY͟5DH;EKҲH/&LӟAluvv&$44ݛ+zKށ?"b5A$:Kؐ +hӦMN@3Ė.z|J o wӃ.u=O}!ן@L=tNz dIqFf /3rvM Yn8ӥrJ {1vhQ B;&9yh׸B7.7.`,JLay+&ќq EC=$sj=C7yhX6} /~x .O: h1p{N{}8S=ʱcr3)Y8pio..,jpp dUoo )w9f3#hUdZ2L7jZkZ(>Mec_֣=虒U(i%7oG)a pj加sSR?>9[r9 le_;+%G\!sx%'I:h~1R#-J ET>yf%ά'Inȝ a5!8E]'i')*N 4%32PL֛ ='anѮzvfGt+.ʎI5}^yDG&J3+BbVDͶG V~d9P`%bN " /m"ƔtW##cJR57|dSEje=/ bOUF!%f朧l8B> 7$j*OW=sN}t@nU ] ҍJLFB*J z2qhpx_5NBuT` M gHAʇ7EUޭ !!r5j.$4t-*9VP=D F5imr-o?=th5=;t&~ ");H#|!}etl ,v-~璝&A#7児y2EsDVq/AS"|拖 ">P2z'-(>'9R%~6VW_mBfu$}# {'0 ~"&N +*H o #x zI` 't&)x + #T=z+C!yQY =0hyiw~͹ZFMi%}%~HY'}䦱 ({?av$B*<ơ!{>4IDATxyTGwbY%\ k(KPiT"ՊPT,bET񈢂x T x_UhimmER;F^/}|f7@=z y`(d {;prfz픮ӤPbrdJD/7kKO#$qd[N|t6Gs,ziHўq@~m3Ba^ݣ $vxvsXg7 /oN: 'ҋK$[aqB015 Vj $y8?5l`PX+D J+=Lb!2fֳ֔w1u\5q58dI1`d{ipc(+3hCwc,rm)sgo14`Vw)'seButDOv;$`UOz֔9gxඁZY+h%XSq8dRxAe<^m'DS0Qd|k/%BO2!B-=~/R54o.,Q̈́d[xӅG'{S]\2oWh hJ /DFjDž>!]OAn1iB'ό֙ɺ,uYT?Dj;ݻw![a*=l>:,³&jhRnz#aGd5f2x6md-R\fU˰JvLf$p`Bߠ 0Țh8I8fHPCRaÆ4'f RѐiݹHkI MBJYR(V ^iS[-Jhv~i\ ʊFN[uO>f>t'&]ߏ fQWJV]!I'Ulذa? H-#7IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/om.png000064400000002527147176754540020412 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE-)%a^()O(%$ Wl'()%#+'"'#,(&")%($*&##$ !.*:6%!spmj$OL95(#40^[EA% ]ZD@B>!.)-(fc/+C@2.JFb_84pm>:>:LHMJ1-|zroZV51b_liurYUB?*%kh96 ') 0-NKROhe0,?; KH%+&'"nkgdPo'#pmec}z*)ljTPC?`\XU6362)$SP-*rpYV}HD˺C(TQ+)~;7\YޛQ(PM!c_t>IDATxb` xePᡩ%@,' dĒ\Sc׎?&CK-32(k* 0N'dD%~脮ѣ+F|-*ʢ Dmjq jib #| ^%ƥ D|NPBBvXuGi |.'XiJw 뚮rnzzAkV=-2:oͫŨl d=BcmP$đx\Q6(#s#_ݑQ, S6w1>zN0D*O[C=2m+MDG#:%`c``Q0 F(`Q u;ΝyJ)]lx,bdԒQKF-dԒQKF- :5yFxIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/pa.png000064400000002263147176754540020374 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<@PLTEKKppЄ88CCEEzz&&%%++@@쁁 QQqqmmppqqllttwwllxx((ttjoooMMIIEE샃__>>22##CC@@22 __ńbbkkJJ((dd~~ՖyJJ񟟝++RR00XX//aa˜>>iiRR;;%%**jj11""AA`` OO  IDATxb` 4IJHa%+3 KxHZ`Iw,YHsKqܒ..O[RGcKꍅ9hddrAFFA@0ab*[\&(@;X,jT.,.!FK8QYRF8aڥ.KuiX pВP%,,fC3K.d.YE3KXXrf30]eK3Ke:~+YRJRg1$w/mZ2,Lz'4PYF"``! , <.QKF-dP["MK#`ɾy4DT| -IsKY')( RْUUeX LfȚQ; ,awjH8i ]4v)4K]{ vZA$lH /0V@f`ߔ $ifIV9W̒I:v ZB]^F8@idIQj!1jɨ%#zqiIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/pe.png000064400000003167147176754540020404 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE#" ۵ƤjFg:փeWsA4S{9$>e;\ IszӘ 9ܩcLjZҗLا#TӤOKD+DPRq $Kމyǹ횁}ɖkѴ̇Qe֤ۮ(YxUx{c##$AA#:٪ʸԍ͖1Y7&lҖuɍ yűTcE:6:r|TaăiJ^ @t⼤جuʂ\-$A"]Dž+MylҫƟDjȎΐvh}ѝ ?Ӹן Ig]ɦLeɅ;pڭlx"9r?kT7uAјC}u`TƭwרĄӯ[Ua,u#]_Tƻş#|hIwĻ %J~4IMlmgxpjr~o˔?P\=LMI̘G܃[u/@vhŁ3 _y†(cnjݨ١e`AAYKׁĻ~3{Ǽ"hk IDATxb` ؘ V& %Z2jɨ%Z2jɨ%h*+wv*wN% ihBaeoD `^RU(^9U3[[ie ]~~hQq:k\ǧM0%HҦ$.2o| [ɒ"154hZ[sZUͧC3M][.Nc\Z5Z̦V%Z2jɨ%Z2j IwjIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/pf.png000064400000003702147176754540020400 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE K>j_oKju5eË/01v&vwZ bʖڷSx7bKLNꆐ4AjytQX}FYV} B8Ԥyyz緳,Y)Mq\Tduݙ,+l|!P6z5" ,կƢvRrsX}BKKKVMI{z|TUUɪS%TSN')d"Hma > ˗[λ/\1 ,Ho'%#.:sϜXvyɲ oƲL}%Y |-6ḧ+A<% "ēԑ= Bݵ}ޛVV1MMћoa*WҺ AAS¸Urn4/t/>@GtPwK|`aЯűRhhhwcqټ!ԦЪ7[u l(й7022mos)ܘF?hϜd¿>:O\XIDATxb``Q0 ````` Cf9yj49ЧbD KY n)e,Q!ʖĉ*O1} }Q@Z('n5U-M;"$[߇N(f!!Zk-Tc[xvPM6,Yʥ={]rn,_p..BKWSɒ88d0ّ K+p暆q:,2%BB._+D8;_ӄZd '0ޙ$+I-_9mGHDu,1}8{n%r#ejX ˩^/l-B E֜FKazLNyͣI{!,xmRNLljXb,$ݾ7+'vvW⤂%넌vg?wQqxy}]O6UۄkSnRN;=Q`k=|lV'nScfeD%Ftwy/R*A 0Bp ZۻhLOU}\Pdݶ3Ή[R䘘dSۯ *Ϊ-)} h!UpP|5555 Ln:,9#,9۷edo+՛XU,Xqhb^6~Q?K㞍W!Pr#5,Yp®oooz**ԭU^;y9(:M+%T UU'<.+[ 7S / Z$X,Pl,o*1Xf:ɒr ^o̬?vjo@@@dWxb괞RuJ%$$|\NV])1|U,adlsOI+e߬.r])%s$r`o``⒉=TdieA  ʨf [L ; DM:kV"5i% JTGGɩ-,^B.Z]%rV%4Hϙ0$`_6Z $&Xj>JN00Q0 F(2 2lݩZIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/pg.png000064400000004101147176754540020373 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTERRRLLLVVVGGGXXXNNNPPPIII,SJ***999xSSSMMM]UUUnY%%%WKKK WWW "TTT#1+/)'FQQQ(vU$b777 OOOjQ=* & PYEEEHHHJJJa$BVFFFT~~~---Q.O%z Zt{{{&000g) "!!!r`;T ccc###OBBB???mmmYYhhh\\\7 OXXE'!)///#555HIDATxڼy\ewvfֽ#Yέ[ 0i[T4P T,H5LK2<2o2!Wwfٙwwg?yO>v@0?^qeQpdz}F";sV#`enDv #ldZIvY#q]Gׯ(-))Rq]eSԬ+N""`4Bdڂag,40sJX.K QU*\A!#{& J9Pe8w,u,tv BGA" M266 l١&.,$%զvMhK;!> <%Ljc )$3 pDt~{usb 2EHn8 '6.֫/? 90%*i|gZGK yF]_Ru)-NO }Uz{S,s&)oFD^y= wmZĕ,+4* ˩g 2g=@#[ih尟[M 0lJeZ]W7.jlW!ዹ)t2$%Mb'P !دZc~<$p}a4kAڊ J;Ju3\\υ(2N#lӫVV`%q4o,)g̿P=XAR{;d7䳻ǚ[yȸcdUn2M`^/tybdpĔϭ$ǚÈzVNdv: E $b'ωyuȐkSu6 ٺS, ?50 Z]k-XM x#4x?II/N-7iHv:3es/!΍ȕ|@],~y?n-IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/ph.png000064400000004253147176754540020404 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE8&:W(qEkN^.)4|,`Yp= "%犔z =T02$-egy2D[|6b2%QhrmN- w)K%Qk  @D5_뜥Nr-惍:y cH7iv钜JE!5&:+>Ö9JGW)2Yg!N50 !Bt^#^l_:9n{@iVx`o9X#n7h0Z+W'q-@&.X/TwĹesUeq}pͮsh?Q #(T"AR8`oC]6ޜeFjXȝ%Rg yӖL6-&#gg0 d-rddmaLSc&].3{l9j}St6O--]9V )MenwvMm hOF[~f&S_\ b1J Eġ`Ҧ;vW8ME+}g2я?cs7%+gOǠ1w6XB\q ,v92Ba*DRTWӰSRr+d.Ve^}靓B$t24XQ\gv 0YYSy]vjG~ЁIМDcNIJq9IsFQoB׆y_TNqpH JГ}c_aAfBeXY|'JdABa :qIqA(vUE_,+STzX8q9Qcɜ[%;ZAyca>_ f~~~)}@[-pP6^Mbsɠn 9qHzV 6t&EnR)1\uG8q6>̫.MM> @do,K/Ӫ}=r ZV]5i.}tYF|Qm*H@x~dH@-eo!@}B6UЉCnXR" ZHxN}~E E" qO@*D܀D\oLd_}J_gB>+D't,H=nѴ^Ap 6-iе 5?=*j \G/-0 A7BA ټCu*zP !KglCc LűoIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/pk.png000064400000002533147176754540020406 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<XPLTE Y VZ !h O W X X P Y UQTSRVNQ_TSҽ Z [ZT Y ηji W MEDlkR]¥FE7w6U^QSxxW6v5Se1r0>{>+n*5u4EEɋꊯ[[_^srҼƫ[ihrq~ݘFE"h!T,p,͵4u4RFFː\\Rf>{=C~BV:y9UT$j#rr?|>gf^*n){{ WRRQӿcff&k%ULKFfe#i##h"={=={<~~*n*(l(f\TT̵̵]\dc WZZ:x9[爮7v6NNlkQPbJmlܬƬSR)m(ĨUHGY g(l'`-p,`_Ӿ Y ŪSރ2ܝIDATx@\M ~pnWwwwww!pT&0l¡D֡AAAA"ڈ{K'B̈́KBCxhϹ̲J-n^X8 `"n !d.BG' K׮g}w}_ @nU;^a\j)GEc$tٖU%X JNM8t qgUїZd76DugH"+R-7C4ևArl ! t5hRKlVCj"ѤƶqB.|S>ՠA7(E8H( Ld# r7WD|m;E{w+ͻ9oGJbD8&s$nSbڶ|!t5;Q˝1O;qG:ICKG{6uo[mU(u-px@7b/t2ȕ9/PjV:kB+}԰Ӿ5U{ < dS'Q+A`up`n},.nu9@ڎ}>(OZ~&>|r?d]8D=309x)p [IDATx sol?Pž)3[$D"H$D"H$D"H$ 0A"o IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/pn.png000064400000006146147176754540020415 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE$}+ϲcX(l~+x'6Jk4 4U1_ !Pz$Y.f+f3s)e$$:mm|y9QV2%G(i~RhgsRDGK7K[3s!N$kKw1E7g"慒rkiD^&ZgH,p*r!0pVgXN!sNYK ]*#r0% e!|*dou0m:T{sP+Qm #t$=h{A>#4i0Fe?Wvik3$5rKO %h-D+:r+{똢8`48B:M$H.Ҩ +1mzid;rbvpˤn6wwj Z'i9f^mw;#;'yxfw,oqz(9z=P)q`,K}:h".+ ) o s>v3 0_5L^* #q֏x h ?Aw zQe-)t'o!A)r?i^V5w_l[+~=&wIh8TTg>"* "1G';"=[,$#%%& *+_\?G(1D9u 8w>s$,gcpjTUIDATx\!098HB!#I$"(/ ԪsG T((UbRXQY'l?fu[eX] ._}J.=ol* %d(JdsIXPоҕՌX%V͆iԘ1Q453*2QdFA 3pPXbl"b+1H9љiJM۰5&)5Oh 3ؠPbe𾦴}B1#i]sQ$p\0v "$rz!RN3lU-vgA-AmȡAd-A3lɇ}4(Ж MA4;E拾G~U>qyeTWyǣ$c뻛]ADnD&2W7?qnHл<< L7ʳ>vmy+yT*~$Ȗ ֞]]OLǟ|kF76JrVBB>FM%+U!;>.5wM7;ӍFGFIqiB=r!,+=2 Mf<㤁nn%b4|ia^>[.:q:H9ﺹo bICRw:`8J<^Ư}@w$W)-vvL |}',mͅ0fˎ)]'˗V ~|҆ӷ `&Nx1 raсnɰ&NuH by? bOu;58dH%m̼Ņw^}M+YIӐONZ"O]5i |90ťg܅]D,YSE2>.KHS)gqq3G 65pUFF)˗,]}xML^ʎöʽRX7bX WM<%$rۥZh4 P:,8@uQR/;eJ zrI*k.qe)*髯v,VE,,Sҙ׿tt.J&1 s" {-J.iD/?e/杼Ӛxi:3C@갾W;\'GW8.r8=fiFX|?1p ryݑU;seLUEEEǭL Q@(:2xUؙn䥇%$Z d j7--"6ߜ]ƆƆ{ӛ핋I}$Q#ΡHP"JQF^D =ͅf̼Ƌ-)Q#F *J&؉=CUG8tǒF@HZ'w}nhиzUX'S! {YڿH)(0kSMCR,#C r6S0~B;:waB >{wpE B=1dſV%4 S91[@Ўr]ʪ-tz RdybюAk4 4N òbON1ʲ7:= -MiRRWT2ᤞ\ !:NX`ԫ;IP+)5QXz=\. vR6r+.n+D6rv*}afH1@ye+nR S Wy)z]c"h XH6 MHh6#i!@N$  PHAR`c1ovIL \ (QZcaQO&qOMRL? N.pDXb_5@QJG֗FIZ,k$.%o!cNp}'vPMU5]2Z3RO7 UM/gv{&  OVO`1f/'Ek-(hQQ6u8 IDATxڴe@Q5ȓ@NANPPTPQveg~܏q߽gjv6fË]FAdzTƺ. ?we;[\@4մlx22 D[g 2\OJ;-.).".x*o1|r?wA$x{ ;?LaU mzEpx\6!Q 5[d#dT*`!ifPaεkعHumI `0$mW;_PIPۘĶi'{bE]6q&"^0SdBӏA;a͐U"%~/Fv$k:?\w"&BDUPxSuM_SWy{IW(Gٝ*7Gr1=RH3 *&~ԏc/Y-]7\p}c "rǹj"ZwQXjIAH,-!~6V/V tI*͊"/}tzSUrNhS?P('#KNvc2)̟ʿ;ATw$eVP55M`Hl4u8D%KWz`y2 >ĝHx-wydvYB`Jwηɨ ^uS[!Rg 7" S='uJZ w.\k w֣>z7U1-Sc W#q5NˋT-&J[qkO{F!CL%;IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/ps.png000064400000001144147176754540020413 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE~OY4433&$QuS ~y LL-;; Y:IDATxN@Faл qh;VBeF\yOv.6IbhYzjVqP`@P`@P`@ވwfn^/;q-tb?Gûsa$o/HI^.HׅCr7q&#mxht&op1&WvG}Kp#EILAJ +D$0 NEo$ ~"BwDBO$>L3iD69'J$M#.B:J6IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/pt.png000064400000003644147176754540020423 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTEfJLDx}} cꗙg:/lWXKaӽ~xXJEOPFgMӭShi68VˤVnRE i^T,p0yjN$l1m򶶥#\J%&֚#MhFvdJ3rb27*cγG(S2(D[bQ=YԤ{zLd={춶wQ8uTgalv̛[bL  ݍ~ƛ5]l""{“i쮶͉/eFG _գ Vx^(,3P qɠLz3o 1rRMmcՃϏUnKs z\!DX℘ = 냆 쐑tӾcRvH7FkXK0~ PF gb oqY =IhVbȶ2ʒP Wϧ:IDATxb`$ p1PF-dԒQKF-d2,i%q"2ihACM⛺x?5્57E] (`\[gP٨.U`U}Q'TD]Z@ <8'Pԓ9x ,Nm8o޼//9yhI>S70 ^=8Qz,<% Ru3c>~CZ4u?O*c?jN"6QJ7B| Tl Q:UCyJ/g'TkH4sjWH%pvִ-:b^=8,2`inV-yi[eZkw^hKz{A ? /&yW"=G 7ܖEF+`>mcuI*NZr Էذ}ZP>FMߓ,+iʼnd@. (t=jɨ%Z2jɨ%CF&|CIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/pw.png000064400000002321147176754540020415 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe< PLTEJ??IAGIBHFCJBD@E@RDޝtCkgKHH٤lzGE@7XGZÃxESSEqpeptM uOjbCgfsBhOrDu [j+UɸUhPAmmbDFr3}\DYS̐81VMӺR\\d dMoTRl21Kei>FN* qkjyPМu!:nP~ aR.#3.AH͂ZIDATxՒ0@-2'Nb,3w&LY[#i}3{(D"M%EXo .KMtq# E|3>k+^%t#PaWg[Yjn" %VDr5!(sGl) m.QQgv3G:3ۗ|KS6A/p^" mS]::C'Pk]Rו ErmEj E(xu% &pa_j0gŻ C}-p},bз~"Gz>g"W]r֧*+)Q j~,-)дR'W~nkT4[(b19-_l;FuE8zCܘ:̱[}s%rzSW$D"W`9K()IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/py.png000064400000002370147176754540020423 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE+8 Q3(2%浵칵ɾuuu|||ϼ常?dddKK=lllwvwz(Ky-쒏x)Sn?vuu N˜rւHh򪦩mkkkٻټģԄ(G瓐1R>ӪPmooo킺˭̅ʟϭurpqȼĜ?aڀIOs~^~[~%Q߈ȠCvDdH?QPQؼߖˠӳ跷xxxfefֽҘflIDATxb``Q0 F(lt t t LtZb"*--DSKDϨJA& "j\2LJIBHBXWRS{tasĹh`.Wa )sJGp2jԇ7/a}I%ꖘɦ]i;v]+TD[ "6mq%:]2^\Ǵxkh UA*[©"4DD.Zm.{|ͨNKs¼L`*KpXj$ ,FmKTT fjڲyQ'DDY;1h@MlQG2JnI$)IqeUJU&s(ߴϯ>ïEbEPJRVS&пwNxQk24 X ()KZJЦ>᷼#)c --DK8E4xeS$/"Gۆy:f:V:F:QKF-dԒQKF-dԒm @1IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/qa.png000064400000001735147176754540020400 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE= 1<2;:864;5<752 .`x!B3<9ƍ~72QٲFbd{5=QkMg9xxVo#DР)Iʋ9\t@]ϟٞ[>ѕ*J>Voʉ648Vլ'G*JܸÝ:W̙e|?ĉZrȑSlҫWpԩ 03}*IDATxRPh /Kqww}X.v/s'3cap9|]R\E&GKszm$&!Dk_ol58Cŷ?<;K½|Cߣ'1Nձ1.!6{@1N*zct9l'x~jV $E#ij" 8|**J IqR&A;Lz-ƀ;I֙(ƀ;ɨ+ ցwR>R)/)tKktLrF`nG Y!HĶ^ߢZY ƊvNFwc{40k"Xܱfm]h܍[\OoÏB,K1x!IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/re.png000064400000000300147176754540020370 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE&0/x*t!>IDATx sol?Pž)3[$D"H$D"H$D"H$ 0A"o IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/ro.png000064400000000310147176754540020403 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE1! A '6@IDATx aB"l5Y%D"H$D"H$D"H$DmrV&X IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/rs.png000064400000004635147176754540020425 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE6< @vʃMVe鳵xzYU-3ݴا+Ԩ+ >tS7G5cge*Ȥ7>BŮx]d[òvs-q-d6>LQw6;ǖ+xyDI\_#?oFz@x|*ԅUXNT:CѕU,񼵇4:ʪEI+u^37,ʻS5igL͸)+v1 CzN[W[v+wC=uOSL)+3fih1xz&DJw>˒֫aknrɡ)ܩd+06i:ȵЬ9ǒrڍUx{-8žصguȢ18΍.|4:J3:19UXb1LP]_ȩ\3=:11¤%4=@ӷ_3=ɜ(/'-2Ӻ4ٶGי/ǜ0<-pt͎ͧz4I H75<ӟл>:AI3<*:>̔ٽI-==55<6*:_۵YMOZfS`]b\}1HKPS^H_o>~F><|a٪vu"Du碉6ȴ#;m«Yѫ@?BӬSBl)1<@G@F|%{j:3IDATxyPW XBXj ؐE@ (Z@@D@)`TۈCY,zڃ[[z+6:?p_;{& 俈tW?-.jg{w`rܑ(ЏGqA!˂,ZtD\ >cŊ۷|bǞHT "rpu}Vw+CR~XǏS@D~Ga,U|VNѬw IrSaﭚbn]y/6&bSqkYkw(wg&ns&Ĭٛ%/UUkoQ9ȇ&"GƣX>V"l5k;bcG_z`QK $/, صyNZ|9#RX >"椔-]̯{UX0Fr;F5/uX) kc0m M"1>I*سKyŻ,~Ad.fDwzYc8q1^##^}_<_:90DedYv,-|; '?k`ގG:hY@pV7mWX~^ڼ&hTg¡JG4DPUlTW=[А)JPQY/A~DJҸ;],HpoH|Am%﹞=3 <EV?(V5;``ӫmury-A h8=TbM 0$.w$4QRQU\wЯԩ-@Cb1PMI箃[F3 Rڌ5}Zw})DdhbP:DJOݮ8 (厔at98R#9umR@xWm"u(9Fbu4hA[-,OaeƠmqw~LMMElDP '0?|У\!dd$|k)к 0fהr@ Ng?,%0v qYvۿ0k% _Np1!s3&pqjx 0)stJdq%xZR4|xl-5ťҌԱ9uVҢ3Hz]xXMEӇwY[A.+ P ]pw>=րVu"Ҟv#,5͡!zRl-%qE~MkNZRkU]P "~M948;ĕ@bTZdNcX9ͦ}ڴӲCCrsa bo3#KX錶tp&r',WI5o%1PXL5!z )S@BHM '8rY.t%a]q J\oئZZF$D.iզ>5m9459&ho%e 'nQ>IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/ru.png000064400000000315147176754540020416 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE+99 R+94-/2k)EIDATx́ ~> OAFD"H$M wAނD"H$N>y)ťKIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/rw.png000064400000002755147176754540020432 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE `=h)Z@jL]2HS. 'Nny4N ۉ[LV.8$ Z Ӆ^HE~d臨=V:.K#@ࢶBYRsv;=ƭ9WA+:5%Ga}fyjE_IU0A giyjx=Cune}%6 ҕQUA G4>$묷<ŏTi~7NFUos߽7<лRV\PU3kwEhaԼͻ[ow9K?V>wk4K6!up(\@BX"DcWwl"#ͥ?b)Q*a`b9lvnuqp@,5;izd~557f}X5S  ӐU:TcIDATxb``NC[{8dkxKx8heES]=BQ4s`MCHqf3"^Z8כfLEc9573 䦈?ʶpnh"P@.U|Եg;ū\7 dJiAT /'>qq)/(TvNpP3}E[Joos{U.P5.SvTwK6Sn^7y?,nnMeןWnċu >kHz&( dO e[pRrԮrut)ʞIԥѮ5oxyvl|sbUmaP[mjqu򷭤<.[ S8n{<#NM%@KMgṺD*Ĝu%މ}{襭VujÍr3S=)yL@#̋ƙOdXK^B&x9j\4Sa*qcE tNڴYx8J+|o {rѲUlsTrR;`mߍJ3;%Z2jɨ%:V:6:F:QKF-dԒQKF-0VFкIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/sa.png000064400000004676147176754540020411 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE ~prbTAA-)xi I5чީ}fUE0҉ԏ&P>ςzl/ڞٜЅuZI$ ٚՒx庀swugQ@O<>)5"# L99$D6MBXFjeA5ۡј+k[!ח߬ ⴱݣ-8#1VDܤ^MՑz举n_}odS`Oݧl] 㵬ܣ<'A0;%]JK8N:aQؙӌ7! D22ݥiXsdm^uh֔WE(-1̇}=.|hWXI' ݨYLۢ-|oЂWH_QWHo`oeF</"`T <4סؗDŽ߫ k^C.9(ы @*1 {r ,-ߤі.n^YJTIDATxgTSgޝ2IEQ A!2`-YE"BAEŪD)m֖.kwGq{ν?={w{xy/E"' aSa(E(%5l&ARL#XO-!q4?!37Ԥ l ,ڙBSFhQʤ#g35U 3:&|lry:8ϬCڑ1dA I\k9v 웥EWI׭VfM 0a%]{B1긬|fV]|$^@*p\np#\8ZɿpEyz} Z@58 *<@t|MǙڙm Q;?5 BPt@ N RY<B6 K# T,t 6g9QE-Ӄ^~zc|)0tt,Fl|@ƨ"F1\^eVh7Xۣ!}Yga8<ۃP,9S8(Vtn8_o$"+юz4edgyH``4. :c4d0F[U>w/${O^ċx[G't*`f벙Lh(d1J'Xq[@xu+wkٺ7bxdO։I namhY73GG='D4BS^Y[Jo7eJcBeоRȼ'=;MǐO>aaBB ؐ펎 ,,ݖ{Z ׊qd v_$__y\' **EEffrcOO$$&&33޴1155(!w^ ==}X^^媪k RR%vvڕz[ yy )!ddTTtallWWsa}}ccܿXXnhzz;;e 'qq"" c—|Y//# ӻ-- v_y[rdpf( ( ׼w^Ø|Y66ߘ|XzZ886-msIDATxڴg`E oMnY\DIbfs &cWVlc?0ƲBO$n\*>ލ_$` >!/}˭t s}ݱrNz)hfڬH%g~s~(L+ # |!oسh1ycQɚ[}Lġ`R_N{L_}!Mc͙*uHzdmf PKBazrAuvVNN7KrzᅹG)|rr>B4K 22M׏6iq!BE0H}`@9̖X*wMYwW2%SJVgn^ob~Mf]D󵱞HYK̜u8kNY}/27-BNsN=!ڴ=% Սd? *-~ږl7dlV*JKn/c,t6i[d qfUiS\Dn..+6"4A-μx[1ͰID|`IۛT7ahpI) n$,Y*!D: 8p*8B\r"C>̊7a]ͱ$8d]]بslSΐ^e}FA94wJMl.(~߯G@nLEl_X`|JeB{ As6s{ܰI_ZUOި61zvg`oik6;60z>8t~vMyqztü$wngVDVWIDATxڬ[SQ?=EucT,leSa`wvbbw'bwwww'vw{=q}{AB'`Jr "4`cӜQĹ7gb: bxvI ̹7d` ,<QD795#oJP32>avEZG[K"d tNb\ P1~xvFA1RR PTyt=2kSP[:*R@ķbc,P^8!z_M ~ nbo*Y-%Ċ LDW,X@0 xRY*Xᓦ {Sf+L7tDAb%uA@0$ k$B7rs DBbR+@Α@,sU,azHW/Z\\!_.81 ZbiD(/jQC\Z4bPXh*6X . -X E/VAijR7"M VfHjC9zB+,VKw}B 'VڐɑO}ix\usO҅Fk)+|miۆ/(Z.b%6z=n V*.`mvVCLp+6$?`q?agKZb%Y:~<[$zejε-mc! -XENlZ2Do6l`&^/$M'"Dmtf 9sY|XĪx?>r>q ;TʤIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/sd.png000064400000001455147176754540020404 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE Pr.4}h]:GG:}}hhg]٠p55΀  8{ث٫`bPPh\ͱ5} *$*-55hhڠ4$IDATxڴV@a X`A{m(Ґyn;L& /K-] w 2“ 8B/G 2R 8NFC2LVAɨzd6LH2;JFC$s SD8~'sEwD$ODy#oR|N5٢"Qނf4P9{ G kdHUIt^mb EaIDATxI@ Qw2lBH"j&r^67V91զk<ܘj~1$ջ$& I>vICdƤPϭo0&ZwGUV@@@@@@@@@֊0$(]IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/sg.png000064400000002273147176754540020406 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe< PLTEll((00--)) &&SS||XXrr33  <<11""PP CCDD44ggKKCCNN''dd..$$%%++7788jjhh22wwxxyyEEMMDDtt@@WW..QQ99ii##~~\\ ==uu::,,{{ ?? 77yy<>ffHHdd""sTDIDATxeo@gc @Ü4XfffffffffsWW'k@d@!C-o!(?&9LoF fgºB@샤dv|!u1<ӯYD17X7G U6VZ^b|6Mf%ڻ%&;ܒ*5lAl`Wg Y ][() ,J e[ʱPj6 `(_Jw*xJ;H>HXA*$߳@*u`Q@z)#X CUK;2=|#'țk<Չ=b-Z5."RSUe9%?e ymߴ]hbkS RQ:iQ!$(tv朹*mqE֒DN|U;pB.j p~~_Sȑ\aE _eDF2OgiSpL *Nx:p̀`XZZZZZZZZZZZZZZRS2ӃyIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/sh.png000064400000005645147176754540020415 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTEf.'U&jw''|PK66 &d&8v Cwv*oΑ]knWX2_VFL+̇XRK "af2#IvۮbPLvv\Na{xrFVy詩%u7I#m:* domgIIikrpO)['L3S z &dd#SNqQ AAqmMkη鈓MoUy\}c\\Ow`@tYL,Sb'qr3nJ#k,p40b8p意 k.Y쵬J~~ sRɨ-RZYF[,bpH2#eDfg_*6@ji4hꔝ01gh:w݂9=ppqRx OO Qa=^_c84C dhebizr">"Ux! dw2sG PdQLfN`S@3Acrnx)0-Z!gp\eC3R>AG[BLԏsd"E;IDATx̖{\C $H} o@2­0`&*VY*((,wA'RADֱ}غ:];Wu׮w9I ҄?|0}Z"q;w)4422\?psshyφҢ1ۇsmW`Ҭ)ĉ}ǟ{3z5QeA\cog뭾}D;A.9QQ @ #S;ý pdRȍFrͰs {!\S3jvSrQBn9nOUs_v3\T Q@KYӏpaApxZNX/;<V)/']zuFyG&wR(0Hh8moB/(BI*I$#SJVwv(EXlCh/  1ɷ,GF ×֬A"4@50=y/Hٟ3d1$Pd:۫KC8²?\,ѨX,>/2A_WL}[#:eoR,%²vQ\R8v3 LNMdDn/=m)ju2xiX |-lU/VVU·Ji(}T*>v\@߱ TUy&O.9ϤhNzZSȫGP%x9wʣ-(2F#IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/si.png000064400000002736147176754540020414 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE qq,7vv ¼@'.:8/)ל6|uX胃K~~{{(}Oy41Ȣ"c]1/qL`Xxxݖ.VrROcglo߸vE,43PfjaoNp?źF CH=B1?u]^@@{ndUGNj1nn'112N{Oyh{.'60slBE?GZ?΂V,T X5v΢']{t/)unp+HxLS0#Uq.&n9@3ҳu3ɉܻm$0=.896:8.>4\dF9;fu?9ˌb ofU"U(p1? ^e-5W3{G'ONQK9˸ 8`!*klsRT%*:Gnyco3\ݍ0Ct 7v|# ޏ="+v*#=T[" ]^׀?տwSq}F;77Ï8R@HO@ID  !HA[NeQTf@eRWT: !AB$c# ao{fIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/sj.png000064400000000723147176754540020407 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE+-(h&g b,k')(**,57+j"d$&13!c24&(46ƞ+j'g)+#%+k>@%'.pdIDATx 0tֽS$ !R1s n(K @9$U6/^ O#X2nq(Vȏ.E\jIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/sk.png000064400000003613147176754540020411 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE% N""4MO)dI$#" M-C]d ELbh OH T[ M}J!&$%. NEQG#Z&<"H ].6=D(0u1:v{*2CC%:L!*(HNyQ5=JQ,MN Ng{B,P1X,5EM8@ MIJz6f#5 / Mlr"PO. #$'EA|AN+3R&ZK@'#6,9E$`Lw\ώ G!VOV)_N%Q{GFsE}:k/i;lSER#(7 N HR?FܘB']B L anLS} X_[3!IDATxb``dԒQKF-dԒmIf,ʞE֬%A)0'*!r؅Q@5.</=:`f^%0GKD*~\<Ա$'b L]xY"Q$[‰ fW.)« ̨)!AWDlMٜ$vL`Fd]II>8q:_W>pZ80 @ d [ d]["jNI sLX␅w h1YW Nje;g/ c[?1 $lO%`K\&/atsHtq M[Ҡ8dU7Y8KT)DQ7ؒ ¼V2 hHh.e-az7dD O̅nt?(VȖ3԰$.,>{ŖH +$ x *R}b<&MbLVTȗG ~Eʃk8k83R^} Y_W0QlO}NK6_wD2*DX"wi>p\,bq._η,b[/`WWYtTB2Ia?XZtam&ET/Jj.oDKwVcX`c:-.?P%L>o=^R ! Z֓pY'0kZ:T(}"d*u,arsd<%JbEj-a tOaƫnu X֑hvGn8d̸nyJ 9 Z.B2``&~K />GYL:` œG@ȋX^F@S-㞴 PFѫH\Im;$pOgl?gq 5x2~Q7/1%j %.O>2ӗg) a9f`Q0 xͫA4IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/sl.png000064400000000303147176754540020403 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE007CAIDATx .v4 OD"H$-)*H$D" g$pIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/sm.png000064400000004616147176754540020417 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE粶FaؠȪVg!O[vǍjPRovjPʯ/Ss- ֧\WͷjƳ, sTqV ;.F~?ڠL$nҋ@,Vu2i>(Y)E%JX#V(m3:* [ t$hPb%0:9% ,gMB4_u RZ JNyXN4e6)Qv bVJz:pao!i+heUgAvO) @Bx0ge(}z9m; tL[XpT0<;6G 7!l b@P6> <~W z},l⺫#bdh\0ԫ uڛ2S%UYN E"Cͺ CaK+NgTجYpC_["Ñ\ZaYX6MR4p""4B^zG6a&Vpfhyu 1cNHK r \Fgv+@zqZ<֫sKx!зT):It<rX.$CFB8ՠn(G- ՃzxT/O<5%*ܮxAjB(ܡ;D./ߕ:%,mJ@sq!]t29D*.a溺:=Ftڞ<uI3<ްhj^k5?DZB햓jС_D*~E|lxJIpgDju5[D*'=DaaM@!9x'.+rv;/J$0NH`W`Tϓ{ M>D ZUήX]:\2؝{l4ܿ,lVSO?+4D QD{u "y!7^L"p2"QFD)zKF:VJ+"DQATG5M6'IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/sn.png000064400000001631147176754540020412 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE r&j(k(No' q&l( r&m'p'i)h)n' r&u%w% Oi(9mg= s&f)o'z$L+!l(m(jg)y$-! kx$|#k(Pv%n'l(t&w% q&tu%Sc*  }u&6kMXEG6p' m( IyOo'`+?Y|#Up'!#8}# > EK0 Z{$A-@IDATxES@-i롳iLJ6A(BQI*1!.B! !ABCtQ@_ #EȔAQ܅y]iȚQd`$Bw#!W~z 1Bܛ B]癐֊ Uڳ5 X(NeJVO:yVuKx^ȼXց}KsI1kq쓕gYXڶ Tg!%M*qĸIF]|z0ȴrKAU6 JgȣFQ䊡sBkȘ};!٪nwV*b>dzY#?_yh| !AB)IIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/so.png000064400000002041147176754540020407 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE@A=?>54DXxW=\&b쬖Yd<~"$0&c^޶ytH.ą 8p!PX)pz'ZyA:]˗uYIdQ+a}q⾻F|Zhyu2j9>׶~߰ڸQw<X֦ ggY,Dk lX>"d]ϐޘo}Ql">ƧSQw"\nz@3KYC"~Uz]UWb"zG9owRu̕$&¯AfaxQT~7!dfd u%}(D! QȆe5J:IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/sr.png000064400000002130147176754540020411 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE7~? - 5}=PW=E2{:qߘ. 09A#-.- -.-- -.X'ߘ1*..$׀#%++#+ߜ!h%k%!5),p[&ܒ"8)I(;),,,t$N'M'ڌ"j%"+ڋ"ܑ"-,م"ۏ"Z& -|$-- n%܏" S' ߚ!{$ݓ"?Gׁ#s$,ޙ!QX- :)J(O'p$ -ݔ!,*,<)x$c% ޗ!7?-r 9),4}< -ڈ")*/R'!~#ڊ"r!+_&ߙ!{\0IDATxS@E O\WND{W콂(6P靠L2Ffff$!G8‘<^rn1~HREY)J.p;,uS(%KH.F`ۧa2 Z2Ȉtܧ]> "C1!"Hb:DG+w(mn~6$g՛WrCkWok-YnovǎIsєܨftZfU= ѿbҙp]Uz+%-1.]ޜfAr'2m쫺B@ZZOJ;/#V F}(@A}RUv}wu D<5϶АD@$uBNϗ vs?x$U}m9u͕9"]5|9F] ~dɎG掛\ ?-s?Ɵ۝,ٳ?dp~2G8`vIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/ss.png000064400000003463147176754540020424 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTEG0#lllͨaf@F  E)W 1z.PCN;c>JC( FE* U.E"TG?HJc|tBI 5 H[@ԫ ft jl <#J,4 ]TJFJFVt~D {L> Ztro!S KHLCze +jHQC>  H s[)FDi K~FG%U E D IL Cɽ-=FJ4_DE(A9< E?"B'Ul/kA>@%O N7@G $@:]3vI; C HE uW%\ D D T,@fU5| E;=9t-f=G (c4j [xy@ :|+_F 9FF@ @@3ШFp `^9g]] -p$F#I9* L.y q`ߧD&(M(Vs#;G\AAB xR<B 7Ps`/_b1V*i"_$THk b|.?{+` nd 8]@ Oº1;60jxIDATxڴwXak*Hm BڰNm83,m{o{ڲ]_L}* }_Ү ^ӓ#E͐#X?@jDn r{KT/p-{tXѸ؛!G}ۊdԈf;k5i#iM#09sh:@_<,~FJf rDsҥF p_^[ yg-{JLd%]")h|sȏ֓ ֒ /w]Sh#~ MMJnpbAkw'#%iRF/E28]Ns&zPE8 E2MEJ L]<6+"MDP=*hHQ)*>D; R2~ l9p9ttS >o?t5M/fI!!ኵW&8esJBkZM1Uzg*7Fl(Fr{7 /C8 .qѤ21"RgA\/w]Bٽ"npwU MۙQ=qDJH/ z Ώ?H .c[l5x0`Ev]u2WXᄑ\!:ar2 H[8ȱBeQ!NOFEDF8Wh='ؙ&|y2 r]q[A4iɢ9.=2׭ 9VF&X 4G;u_)!ӫ^L|dlW7-b*6`Nn,$-$xpI;w +J<N+ʣ̩n+K=xbЧG:-U!@3J;4ş"}x.cP=1\JF8~5m6y5ӯ޳zpIDATxڼWPM^eX i 10|g*I@rNnz}/Mjg&J\1E炂 A`Cq#}APO RCA/( ˅7 ]lP]C A~bq iʰPF VTBӌԠTD3Rb.ΩhHu b8WgquΟL]OSy$˴DMqLƸr貥r+}[iϙt?qHj@Jrgc7$93t^1^c[FDS###+6 6ajM;ܣ+? o,\% UN)>4ՈkXO8;Т%WVĥ|~vn%]ӿ Z$Rf͹|t<I9ҁ<|UجIyfYR 3_"Q%ymnapgekk|np8bSYmfzAe:Fm;Ll6esj-Sw(=їڑz1]6}KzL)if{sw7^/rss!ܧ,${p:n;dv%NIDATxb``Q0 F(t ,t $KKWWW I.FzH!]W7DK]f*zK(:-=O@Z!H[)J=N+0 "]Lh`fy@ -ђQhmlqBjUBq*[Yx~S/F3TD^w%=S'}zi>@Z"#"[ZC69">>"F U-٘a/~~2WA/',ZaUӞkgܔ{ٽ^qEu*'a KoXݼ|Y# [EqTg1]s:R;*ʤl54m5quS˯W|JI 帅I*ocO{wu-1z|t_'N߾")S>]=ϧ;U7$FrJRڲ|I< uq&aIJ=FW-ݿDchRJe,!{#M,a.$5$H,b3hcQ0 F( bi_h}IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/sx.png000064400000003773147176754540020435 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE)9#s`VVSxu)3#&`T 2AuuʂGN39m{ttt(Fݶj+5umî ,FF[{#*99s09+/LjEku #!ͤL(-~Ɖh}v󫚅$5 $zbϊ(8Ui{֪/m$"pS`7q s^('ĖF)U_$ńRccyӸz*9({Z~ijk# &@y`2UxWPȗO smQX;0.˰1lz0%_令 $̓ե=CUUUxcjxkc&lkwλr|KNC$euq̠Igsu!qxR(d)kIDATxb3f9`)1Τ%L1. 4)Y̅<:ȘAAdShm %JeLh&An M Z2&,AVKʘp.Kd8-f1T 2 )rYѬkwR]ن!V9fS1Ȑ>޼yQW8d021u8:/5uCQ:TJe0K"L.hj '% iުR,kUP+@$PCTǃx.2HH;6 T*)eMlݢ+ _} RƄb߲in=.=YL2\̓T*pD}Kڏy% P,!]rۂ-gz}=2 B kׁr:_wLU#[RQ+ g U~fb 6-xB[Ww[q`z g:ҢG[YI[[\mwϮTCV$%Nr)j{kPRZt[{pINv*' @ZMWmvVQ=x,Yd;5RI `X2E,ξ/8iD˘t\䕌,DFF,ntIU" ̒sgG0nA[FF2-|J+IHDA`]ٛYe]=Op1<T0K |>0ի^L?lv3~EUXMY!c.Nfz4ۧcFC nlAUB,+V##ϣI[2;T "MV=0?˴2zndʂ n 䠹y"u@S80=&wc}/;BcM̀X,awJ筩itкAl  NӏziO)*TKm웾tDK?u3Q!-VeuutD@U 5 t@"d U %T *P+YBm  % *\P5[Bj %T*LKhT"-IPZBBVAl ͂ a n - f M b l-#@ +.IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/sy.png000064400000001476147176754540020434 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<zPLTE NNUUMMCC~~߮iikkχNNTTӑכ--]]}}##濯߯VV٠ՖppDD**OOۦ""ڢ;; ..Օ--\\ZZ$$ "" [[XX SSы?? PPllLL&&=,ZIDATxUo0pfI];fffffffK=n,MᒟvB0 `0\!$CC+  IgܝӮ):c FjecCTyxFHo{$N~_;$ץJ Ry/->Ejy{A֪ݯ=YNNr?''6xT%|ff~:ԝU*Y Yy jG<*Kr~0`7()R@fSu Yjd?dsbDADADl_ gD-?woIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/sz.png000064400000004546147176754540020436 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE>^ V2W 6Yó: J' III q1Wk6aYYYOO+++7g/13 zzy  YD{UJ5T8:۲ 777C;ky*ӤG?_02Sedd,?qZ 2###śJ]/( Ƥ@v!!nw QF e0zy< (PeAdȨ狊FvY`(=Ԙ0ѧnxGW0KJ$M"$7eWI#[eM4"Vm .b3tĎI< $ * '*;֯[ʎ+X<ΏS&$H(I @-(Cvs\nZ^%M;NAeل(`Vu Ɉ [J/ӨԲ_IJdN2XC$_LRl4$@@ʵ37%l5dMأE_ +)bCi>a_mg~/0#7 [5Y'kZ> suWw=Ϭu:rwi??Q`4U{it. K vQ=u$%)g0LotAr!!fW.QD4 ^B s|Z'OijD4s ?ꀃZKFΥ`gfBU])g_Aw0IDATx\egweYeqdUHx̐K, ꎀ?BXE<<0# C-M$~e;N,ʻ{g]ů<{w_g|%Pu((N2N)ISȆWRN{ a.W CT,NCqJՈRoPrW̴M;$KhD;I!A6)ʬx)* '@8{6.+mFQ?{G} =cΰ %N;| gt| S>?ިI䳑ݒ/`Hsùd |[UQVMG|e(~ wZTS#J  `S "Ąo*[x$ɪ3] XcCɏ=D]jw H!p:Cz6,UJc /+K7ձ}5} ~%EJB[sef9]'ؐb1){Q1ҷzޯ[<qR ɡXs*Uf/APkx9t^[sD9l5?kZ]?l|im\QՇb6z3!:%ʗ'ܛCVki6@.V_Ǟ[G)T2Ĩl_:n6e FIq}G7d1C*l bE?i_ބC#IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/td.png000064400000000270147176754540020377 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTEgn||5IY'!^muqRj9T/쪶=*F4Bkyވ $4 *:Zq4P᢯B],֡)Lez"?RIc(5;y#B$"$%o96A%Ci~6R+I4=V3:ez˝5'2O'&Jc 2Wo9'1FM()B˽տSj2>AP %>˹w#5!> (N^ 9?Z ,.Ks/`v&Q[/$k{Iaͽ˹ k1 +2,=X!y +,E#A'D!?l{Ә\t\sf{PaHZ7#<7O Vm()~A[7Tl .,xIDATxb`@,\Ȁ 9X(Z2jɨ%Z2jɨ%Z28,aAh,ĎkȵD XNAP6g}Qd$:1TP0J gWk)SdӶ*F6M"Ȗ}{aȽmZRɕU@̗edKΨ}d.pɸh`-l 22 Q)g w*Ks%q-dC 3)Ofv002uC,̗X1j;vSX KK 3Ĭ+ad [-- /(,"+D+ڛ),] \@40z02;d7#hF\FFy?5Zbfh`T32>F`|C-;X2qFa*YȸX&*):vu"묬.KHH/5mJ󒤒WNBlSpT KPU.=@vVC@;Ԁ᤾%A # 0y~ncSE%p'{e`xն\UPAerK m_$ 2414b#P0*2o?`m| JGHR3uU('z`I%-DMK͢^ցYp%oj9 E1/ef}@MywLne9e&#($V%[EjXhX+o%ih 04azsɤ7[UR| q710@ %krIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/tg.png000064400000002042147176754540020401 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE &iS ~ mm ,, ~$$y WW^^ ??||MM KKKKR]]파55nn&&aa%%__11PP(( XXffss BByypMM쁁#;;xBBTT##g} Z..XIDATxb'NI#0H4t R2 dQKF-p [nCsKdg0WbDWUkFQ'`C[9Dtk2/9%Mޘ^r$XF@K<$i9yNFr%uU3- (V3U˥%Z] يNiP^2Y0607KY*0ʧNDC'9d r$;P,&XE 鲨$,a[Ŀ,%E %pKjh{1dDhRV%q@J֫Y'}>BRdRQ̋PlnL![ =ȒfDv}?:8F[Z2j ɀxR;P F<\? J"00Z2jɨ%#6::v:V:Q0 F(@IDATxb``dԒQKF-dԒQKn +3"4KTY\va)N18W%ЈЄSK]Kt]%$MՐTa`P<\*8T< @)\_yYL6*YQv7h͢xO$aNͻz[VTz_(yswV('OBufX|w00ȷBYR)d̆ꙙ3A O%n,.LذʖW^pz.({P If6eb7`ԒQKF-dԒQKF-%ٟ +IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/tk.png000064400000004127147176754540020413 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE$}#~ !"|rrF2Feֶ)ɭLe ;5q©".z#}+xڹ7o-J8o -w6p"~ ݺs+AhIUZ"#|kmI2 )?j )&>jū2N 9Ib9nY`Q|y@>O^AP]x}>Xn!:mbgM]cPv {!{= *y.Cf'&~(=M`ѳ;L`"00u$<;'_dO 6ϱ ΰ%:m#*LWYOZWyFR\Q[VT]TywA3! ׺ط5Hc#~ *y '{5(z% z'{2s$~ (,W_S̯$}1BO_djL!|";m&|z?+93FT[vuDm@[4 ,*DS[xӴ3Cg5Ee!8 (8 {Gaܽ)%|#K%}\96P53U(p 0|xJicI"Ԋ]y 3f)F4KGXRʩ- E.J>&mc_FLKÌh~kQ#82ia%־vNF@|5 *7(M; `* 7qz5Y)C[XBj%Fby(y"h] a`$(|#A#'L|jExc  RRR E;syyyw0  D5qX WCttt  gx cccSNNNĠ A 1&4(9,  ::: ]]]y q#---???DBBBV ~b|iJ9} R$IDATxڴyXepuٍB998DE*")KDQ4, "TJ J S˼-oK#ãSKۻffwfٙ}?;ϳϾ}ygyo)ֿ_3Fؿ5:=c?|̔}^zh3*vk~d2jba lGld83q-"c 1*c9v]I7ϣ';RdFU2sDoU?N2oA"EFzFql C/8dJVk!aʧQd42qs/Om2[NܐgfB<!Dex>i!M /W:գDH[E7$[33.*P }K6v Y(hYU.jtnNHĨ]v S⨌{]$܉rPE[uPADQ G8G8+#"IAiT'WۣPFQqDG"j[U)AFlQ]9ADQq] iAkT!!H/E-BQY`B 螩H5]QEFU) y#E#e1#Cj@;+Rܫ 76z%#Ά+۳FǙ_ܣ16`Zj IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/tm.png000064400000005511147176754540020413 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE(fs-ﶓ:ֱWNWF҇[[7Elɖ&fLi8D>4D167Dj5Elstwc뚌T^/kGE]ŏ1c驱+R_2hL$ҫ]<,/ۊbl,=E>DBՏ7rkqV6eW)g:rx&d;sWD\hK@2FK[QgGTӫ5u5H-?RV?R>Z=̿,e{jR1ExT^EJ8ES;'\VBIJH?eQ4FĜmlA}3GSz͠EW7Eqy0GsJzVSLfC2¾UEyrR6ETVsy5*fLD}yK5Bg]C#T0YlwҬQvZ)mu>psucsc7O'7y<=kRRЇ%To4xEK8ޙZGtk߷ BBZEցRqxTgHYmZK+K""Oi%o'4%TGm}izhH(r W4j$E`)!x'Sv)6-AGh#MS֍%^Џ!Y}H>>)_lK;7ԩSeEA5qv*<\⟿_~§D0r @c$4${ po)jQɈVRN49 ewz IWwoҋ}#HyJKfq5p4։JJhG?'|ϧ>)'mI/Z) gC{XNKSa9VшI4fIi< r9H@X]H /T1=.vd>7I$ -)Nszƞ6_ۦEwђ D;Ek<<&;:b\,M- '\QDLު躭|o,Dc)\ y$k IΈiąmS e;5~]T5ۆ7zIV0ʌU"+kl@I0f(cΫ0!@Eb.ZQ2f#L1u&Bj{ر7Ϯ:v_9a_U?;gܦhn/W^>s֦: M p0?=n]iiYq_7O8~>3VbXRsұه*gp9p'i- \G5\:?rs 5-pҰ?{  sPr)bQ3'R!.Ց6.Vl@+*jNVN[(5%1 -&S_d: :L s<0 uH|Xg}c9XGv_m i/$k.HU/yZ\u{{y?8[ZcxݵwnݜvwQ 5'їx<<y׍݅k4luE@wW3f|N?3]W kZ(@sD:A݅gFxhi.C0=>w5S|ɨoٵW[b NK9^iwߧGՠn[R# ;E c3fUpR}^Z?k39 ^š[PcϿ[}|ZS+Û#?/ik~iU鷯?as_dddEGr*|*j̷;CY w2CȐK`oQan.)'rܗ>(H-EǠkZI0\`6( &BbD2@t?%z\_! zuBIJB r⵽ذ.>P5(Ȱ6hP"\tX?\ʩ@&FGQ:#A*480T5kaA'i(d) (.'8 (81(Bб * ^IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/tn.png000064400000003411147176754540020411 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE       #4 KX]ihtnydlDR#Q_I% Vd'$/(*lY@gRߍ#l66m8uLt@X19d*1@s)C퐣cbb(]b'SbނvXhB5mQS!7N7 4 gY1%m{vOuxe?۾PTfi[@( fDr#Yl-][*Jxܓ0'Ww?+Gr0b&} :0Ϲx/ez\6~Oִ#z@(//{!D˦?Y}fa®[F^SRCq, oZɛ)]K?Oݿ3R{B5B3Mr_&pV3$h= `!-b@ 1 ȪOWIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/to.png000064400000000762147176754540020420 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE``++蟟,, ..\\??>>//--ccꧧYY jj!!%%颢//)) 66VV螞tt敕盛餤>>++IDATx0abEbdaq 3 fD̼ @D(2{FqCmdM(Qm{)"bHsk33=4N|{r#`)UD#C27FmSVCn$,po'hY,n|9k"rtk=|DErLH$#HGGݵIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/tr.png000064400000003254147176754540020422 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE       5? '2 &go]f)4bj1<'ow@JYa"iq IS ,9D!-T]S\&1HR#%em$ai +emzNW_gMVcljrFObkYbJS;E#/~ ~ 'clNXu|*CLDM`i*5U^[c ^g xry\d"-W` AK$/V^4>pxFP(4dl甅Sj 2d9GJ斅.z7v5\7 i8}W1e.6? ?Q:ׇ9ʴtu87Hwbnm=B i)i3L"unt}Yn&O )e dWZkŽ"Q[ԬTԍ9JBK 䓯jXr  aVK"H$I$Iyp#O=IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/tt.png000064400000003631147176754540020423 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE iiiQQrr..aaa VV...999 AAA}}}WWW 55511199 ((EEE&&&MM###yy!! ww__)))AA JJoootttSSSyyyIII+++=== >>44##Јeee]]][[[22%%&&KKKҭjjOOODD cc}}:::pppCCC333 ]]==ۦ[[++QQQoo>>>wwwFF;;似ee {{{UUU00%%%XXllhhHHMMMaag`/IDATxڬgPUWwŊEPAP{E `Ŏ .ػ&{쉦$$u3:?׏}o]8ȊQ'y:;< D+#0V*"Ѐ, ƸߴK5.2'^bRBX\PJNfp`/}&B+ŵ4],k28LH EO 4Ŝ7 bNdnkO!KJ77/H^)aZ434.Hxs]_f$kQŲ6I5I`r JWIuJzA2FLRJ&ɷXd[P$|L+޸ iK JG{kn\:R.bK/HERr( N9z:b9KY}c$yb:,˸ ;O3X7l7w<.H.d)w<7G[N6Ul*CE]]$쫵ey9NbuKbhd%l9"MAk} iꕡ'<{f"i.產[ozp !FOc h3_I//`흨<!iZ0s)HI^ *a?Y eR0..$ _qh$kez=* (nM: 0r`x_'!iS ) ,卜ѱ]3IDATx̘\sx`fN3: p p*xR,c?(A8J)V`r8Ԁ-*N 7lj_Nnr /k?x>AЍa`H4e~AK:>M23ߚrk؆k!7WCTr u:kN`/}8uȪșH2l'dbǒH 5rH!1ȡ9n}Ϗ/Yʐtll $M$+hMߎ-2$'|chݪh8|!H?KaO;>7u4E'<$zC72W^F!K}c,zokGAv"FTǯe2]PhAϬy;*H,[l*N\$SZvp7ಬz49J닂 Ps񇐛+74`aeI"~"Hs5@jr$c>яԄh11 ח'!=29h@p7tZV;` ]`1 ao.6ۛ} ĞV)fg<L} 4=dF|s24o&8V/9~0tzQlnpRT~nzzz6ݱqa[+[?AW (WK[1fvԿfe/ȉКE/ۻ㞅>\E)8nVhiUyH&oe>4lܝمV9~=Uͺ@mEᣊȾuFfoƜ٨chw{嗗*_{7?QgXɟ mvn[ˌ)G3G;1tg߽48~d;թ{濰Yq&~LOEі*J9>-!h qs~ cJ.Ѩ+1d!uluЊ5N{wdx4Cy\Hha.Zo,c"^S]"m*tS{r?s{*[%6B^R(Qc}ADz1r}"rU@, say/u3H9޹2#SH;{A%ոaɺ}T|5=MM_M@ Ѷ۞]u:k۠Mt 9?xoG/n6-O!$-ߘ?S}'/SS B韼8$}J \{|dܲe o c6h#eRD6SHtU Iy=lV5O@)(B(SvAYEYGz)f:6154{ ɳQ T}:'މCWλͦ+J}~U?,"!+oPi{($chi\^k^"{8X$c hnFH3Wi6[MOG3q紥@ ^ [xogx(6E|(A.pHD_dXEK)Siwԥ -cL JVBb/I‡S::a`<"k”a)^i-*@MR>LMT\p(ޒPP*EkK0#JJ%H4EpUV)(LDR*9a!a_mӧ-7r)6Jhf:,(Z# VeKԧ档'.")X?'2-Jav|yBES(HIlc,6]aVrp*iz Ba; ;%+1WW <|2ђ3`nO+q1KF*Mz vH4(P^9 mҼϷ}&PIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/tw.png000064400000002760147176754540020430 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTEkVlV CC99xx==yy&&((LL రZZ,,hhIIJJ}}QQPPnn))cchhddʀ))ll⒒<<[[᝝ ގXX..TT"">>""3311BB  Ɍ77ϟttƪk[22.. \\ nnMMyy^^aazz77zzWWWW,, 2""||//11%%FFEE䧧;; ::㏏츸==Ү==//33JJ;; HH''CCDD''c[''IIIDATxS%1@nxkǶm۶m۶m۶m_ۃzovޤjr>Nn˰mmp # zPIxD$E' iť4I#EA0 hHyD( c\ZHjh;B2Ls SM$iӅwE$h[Y7 !f۔gQlHs h2ptr- : b%A|`Ҍ^xfPVC+{DE,28_>,^7! |>.\RLAL`IXTd&;ƆfFM'RDVo*t:lZHZ>Uub 7\bϨk.Q$d~bئ0>_;:ʿ=HJHV>DZ[qW CKf9Oϫe$ ^ +4dE6n94l݂Mc"!=ݶ"-eAW42 >/>`T;m[ADw Fj%;Fn Chŝc@p!i[gEMjE|S_Ol,HrYّX[p8p89Œw;ZIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/tz.png000064400000002160147176754540020425 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<VPLTE++rr77pp0;=wȈ,,99 A. tNj <88?--?AuNj/66oowȉ>0Ђ~~**vȉuNJ00 {ʄ[[:1Ͽ@xȈ-F11 gg@C0п:IDATxڴW@q ME9+"i(Z)UŴ$K$3+hu?O =Q`$RO8 #`&3$1tE =q/dLDb0qf"b&#o#F"XFHmhXr$fT3K̀Z* c \seaE(0g_[H|(T0 7Gko\0spI0Ν?:ȉoE2Bd KUE-`uH%qUT+T#;,M"R'ψ?Daˌ?g'fI8CFi{N!#ch!#E}Ĉϸ0o>qKoCe^43E*m\OcnODVOdD'-U;zM3db?0J!c='"4.gq ٌ8,,fmD;Cy2D2trJY1g#6cWw (8Kc#K%GpK26Nјp9G5pm4Fo)*~ڗi Ƨ\H<gf"--HDiR"[Lq rf&1^bD>?Omȇ㡿L_v&6IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/ua.png000064400000000260147176754540020374 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE[TllP7IDATxA _3 .!i 4 D"H$D"2`%}MIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/ug.png000064400000003042147176754540020403 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE9.mcO 4=!: [+,+,00BBB4 lmnۭutu=1,͒/,8#}|}u^ """}NMO*_^_JVVVgMnd"5 C6669򈆈P 5 > ђ6967bbb/ 915112'-49;ӱΡO2Ǿ~8<8O+<;4_CowoɄwF4JNJ|{|DMN-cXQEB [ OSZTV_[3FKFzzˎƜ1>>AQ0]&ԣF4u+*#0 =870į:ֆ((K>@.1:OϞSB>C? t[//Qu4/3/Ѝ~Ґ}0/0J0/(YYYqpqQPQ7gJKKKx{}7F'L*lxegfg,%$%!cLGHIA`IDATxuPQǟϾc 8QPAn>PR[P[k;:og}fvfy_$A#ATB%TB%%Dy/SIttJCXKtgmAGE xw Aˆ b(>.f_/iU}`2&}>םxZbKԃ[qsq/J*Ғ"Z`X0: as aIz%p } cd%͗+OoٸstoҁDn΍a/:8K3PU͈dH0?S2r`{~izvۃb,~Zk3#~} C$gkW0#/9klF:4NO#igЀž3o>b}0ɴEN}bŀe`,ѻl|[-a#0ЖD}pHTRJ)eBrAkd O wݖ”%$CwZ;9. !] ]=p: \doZ %\:ϭh"Bhq:<nKd6F pEA4>ɼ[vm#xE:h+9$a ZStRi?*W$1E'V@SUtr#*I[ V܀/IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/um.png000064400000004606147176754540020420 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE=D/].\uzzޝ187?hn293;af[a海纼8?2:6= "S-[&V0^*Y)X-[!6cXh3`*Y0\/] Q~$9ep~'W,Z#8d(X1_5Iq $U(W #S/]tFX}䁍]m;G=C #T1Enjx.\%U0]&;fM^ $Thv4a1^|>Qw.Bl*>i2` !R1_Rb򇓫 "S3`gu,[5a 5b2_K\)=hetTeCUz썘/](X%:fcrPs0Dm8Ks*ZHZ~ R'r(hV8ug<E $T,BW6Dv` orǘxʏ1-6SRdtcu dzb]#6۞.N!̌J\g!,v7:.qUw~CB4l6#WfԂtLDTTYuӯCyDhaXZ$ sXHhPu5&%ԧVysUUw*B"$:K%S"Ԯn3^-cju~TqV`V=Dh0&4!}{ٟpk ABN72m{JS? nBU&.O Sc iZS*;U&)rN[u[6y$>/N5U5gnN ejuG6yrV7zHeSzLcPP`CGv;lĈ\+9)Jޕ+ݡ$JwGhcB,G;'_v$-Ad1 'eG,~LY7b"9"E7 iA%шᯘ=Bcn( ΀r9b9ZrUA;Q0d408X?:>mI1W7=hw>y^EVFcvT;S"(%EDiI[A6j΢wq)4xN@0v?'Q(s#nNU,%][B9Eiݱ!RzzzqNǧ%4J5L@Sa@hJ/+r;U{kGnG5-.G*;ٙZE 6JH  Tv$UPJsA4aH+z0GH'"1h% \yDEC*lj2E(Odt%w~B ; 5ns+|zpxN ›hy਍BD8x:$rHwqMyպ_"p՗<*ѻ+Ǥ2rT/cJ.$D0{ ~1K%)RﯹWhm_tЀ+LsnvC7=MnpCMn 2\pr kpre/\톀[ݐKh\2M`]M%2ĜIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/un.png000064400000004674147176754540020426 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTEKIDCJAHEڐ鎻r@EFڸJ{勹耲W]_ߘt畿P܉QmBٍ鏻Xiᅵjv?[ZNM@كGuk∷nL烴疿CbOLۜp6j锿;ؗG~{;ؒxr\ߜTCڄW\߰M܁fd[|yvi`s㑽Fۙ<ٌ鍺^s>=9Bclfx`e79ػ儴IHwzKGۂ擽t}mZfp6GRIDATxexSWsqmxFQO݅jVTԍ(0Ca0t0aҹ;N6f{y'}73?*hA:03GKg,`m>3\֯8.@T((K("GfXB.# &}d5Z۳.lGaet&MLUùh(j2osJ|Bj^يW]Ʈt9 w+{`B2>?/ѧ lIU5 G'ߜ9톃,XAeifA=:cʌ!^.2Lecn:[ZP6eR5HS{W~ad=xr!1f%Ḣ)9Osxoav ʰ{\!#9*CGK`R:1_]z`8wzl ql{on:tr,1koē[^X5o0?!̊Z+ιR)rK<\tkT(ㄒ@?}?^aZEjOmY }%WH%d> jzap^!߼t:7?hn293;af[a海纼8?2:6= "S-[&V0^*Y)X-[!6cXh3`*Y0\/] Q~$9ep~'W,Z#8d(X1_5Iq $U(W #S/]tFX}䁍]m;G=C #T1Enjx.\%U0]&;fM^ $Thv4a1^|>Qw.Bl*>i2` !R1_Rb򇓫 "S3`gu,[5a 5b2_K\)=hetTeCUz썘/](X%:fcrPs0Dm8Ks*ZHZ~ R'r(hV8ug<E $T,BW6Dv` orǘxʏ1-6SRdtcu dzb]#6۞.N!̌J\g!,v7:.qUw~CB4l6#WfԂtLDTTYuӯCyDhaXZ$ sXHhPu5&%ԧVysUUw*B"$:K%S"Ԯn3^-cju~TqV`V=Dh0&4!}{ٟpk ABN72m{JS? nBU&.O Sc iZS*;U&)rN[u[6y$>/N5U5gnN ejuG6yrV7zHeSzLcPP`CGv;lĈ\+9)Jޕ+ݡ$JwGhcB,G;'_v$-Ad1 'eG,~LY7b"9"E7 iA%шᯘ=Bcn( ΀r9b9ZrUA;Q0d408X?:>mI1W7=hw>y^EVFcvT;S"(%EDiI[A6j΢wq)4xN@0v?'Q(s#nNU,%][B9Eiݱ!RzzzqNǧ%4J5L@Sa@hJ/+r;U{kGnG5-.G*;ٙZE 6JH  Tv$UPJsA4aH+z0GH'"1h% \yDEC*lj2E(Odt%w~B ; 5ns+|zpxN ›hy਍BD8x:$rHwqMyպ_"p՗<*ѻ+Ǥ2rT/cJ.$D0{ ~1K%)RﯹWhm_tЀ+LsnvC7=MnpCMn 2\pr kpre/\톀[ݐKh\2M`]M%2ĜIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/uy.png000064400000003347147176754540020435 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE8Cl/h,7>62- Q3rwtg)ɻwb ~-þJž[K W-<6Աţ ܶs Eɹx=gv kٴvƥu_IЭ༥=Ԋtl |qCOش o\ ͪgdT*Μ>{$vur}vάoY$岕Ϋ ɧ~˩ǩ#} "᱕x @<+Ģ߼z ޹ġlWǗͰnmf˯#Ad-/JͮشƬ=~ G۩ya[@dX!ȣʧ ePfT ˰,A6PCUJCOʨΫãǦǨè/%'1&)/!v2;iX [s}IDATxb`ijaKAd,B#.%k@#ըR2XCB@#e/Pxu71pQ0f% ,Qp}`Ĵƭbjׁ]0sa$ GS-ɼ"KM'!u,aV=vwү@mKf p L%.@MK*2nK{'/y[Td[jA%K*q2NlDA9SrcweR.fr,0lU< ~K5\91\{Qkb0w61 AG]<˚+I-eʹF_&:Nt_5kFw((IY/ɶN5|Dhi 5/pt,t)EDŗv Vp^qˠ1~ f:k4;ԓRd?p8Fpkl!m46 FMNH0j ip0p0py`:V:Ѣ~ZLD0ZQ@ް@AYIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/uz.png000064400000002530147176754540020427 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<pPLTE:홣+;r~47  E (/ç$%$D; U ""8 -& W<("Bb ?nj޾|A'* (*;Ƭ#ME;YgAP j԰=93CFG!+?76Nu3Lq֤hӦ}!16,A#1)G|t~IDATxU0*$[N6 .3c̰efffff_N^6~}c{33Wc@½8$*B{e_#I3yv*Mmdđ)T2o^" q/ԲБy\J>T!l*.rW!Ⲱyjqgjdp^8Y [CM Ht'v 8C kJk2ʹ5E1"r wI.~NS s|M&O㊷KO\6Κڅ{xHi5,Pϻg|`f^VX2f1Q WY w@3{7X_ ChP*6x5y kF}#X6A_^jy;~"Y~cp/r'/LX>?eNc^ڳ-~(w=:OXAj9PCͬ;}ፈ%y'ϡ|*8;5\8na<ۛA!۩[Oc0 x*?g0B@U/DOAK -@ %%%%%%%%,@A -,HHHH~ 0Iڐ~ޥIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/va.png000064400000004041147176754540020376 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE´jeMމ̽󹹹hّy 8Ʌh[vwٴ##ͨ;;w}*Ȕֆ+۳p|ͷUVȆʔ,,{qW4ƥԩ,݁zUNNUyӒ3+G3#ࡽXgge*-2Y\=j)ೳ&#\--x+=F󤹤A彽Ӛګ²s"{7Dֺ:90<ЋΆщҎӝߜA =oܺ@(?nq:@ۨ6iqiaiסѾC0*Wl񮱯it]]2kZ24מIDATxb` 013 F-dԒQKF-}%cio.:Wr2-JcK\.wZZ݄O%>Z WW-]D=aau#qWy%]wE99Ue/^ߒ5ަʡZ{k.ՊzNnNn.ƹ_f?Q mRT14Sd-sv j쭛TT\3ncs svG4eUQ6ؤ%"nZa@p8B楦G.x!-j$acKSb2tIyYoʱxcKT͚\~}VEV1krF.`FZbe Kn[:$SuFCκl%1,aaF%K8`'IU26-)w6x; ed䍳`aqXJ ܋\u>:/h>tx#B%zAW9vR%3Nx^zn] KX|ڒ%UcI,>_]PR=C|_%K (Sjb[{t. Ex $$Lj;dW)M4b7M}?^ꉕ;-Q% wwZ2jɨ% NK 8ԷIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/vc.png000064400000002607147176754540020406 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<+PLTEX vXN '6"n =(DcPdaIj)?Y_Ch*!2S8l<> 5N{)ED]VuWB!+Fst#Mx$-G_IDATx{0i&K) mڔ۵+3ܮ4ffffffff8-7={uI;qc&^0e<76ĆbCl HN)d!l! s%.9ɨ<@UM[!e2}โDm n)q~j:ײ~DH+:oB_4S {Mk>bJ9ȟ2orZ}У :$9t , a8wQe69;iwBͤ/0yc~ڪYx{4OФ!P:9'5I1d3\3ʝ]i@۲ܲ{˹#q|Gd U-Ee0l_=QYK]XKOꐮ=? }zseBioGeftnw! w;9Kh=-kP{W;p7!?BA7BDn` =Q-(3 EMl!Z@Y.`ҦxBT$^|SRqi>M-S-ad 1QW6('JnG AhK4_O B۾ꞙsa@P"|>̕-LG#{k_t !tAx[gobCl !,f}o2>IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/ve.png000064400000002550147176754540020405 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE+$} 9n${)5$~#|#}!{"| {!|zw%~&~sv%} zy$}ut)' z%~v'xx:+kzu!{+I5zIb~&.Lt p!@vw3PAZ (D_&D_ty +-K:U02Lx11Pa ,G_*ܺ0>XUm/]uŖ zn_vkף4R4$}7Vk!BE_ |#A'iyy4Zp~"}3,1f{tMc+ , *Pd†6i}-J_u ,1N'FE]*/B!|y /by;WF] '+B;y0J ?3M!|3xi~JdOh#B7pVn6#CG\qBZLfi~wMg )@[cyCX%}yu4QA\.J {= (h}vWo,bgRIDATxS@>tw:cgvum۶m۶m۶EnɤRT,bX*h(A FF/_˘\wI)"Ո qK{^ꈈ G[^>M!7z}-ojwǸq,]1N۽_[Ǥ%+OtE7YrI+ _c1G 3OMϫl J8(J_CNM955z"g%7/g^"FI,Y{8y_?)]>"W9eЋy# zHM=i!5#H<.{@*-ܞq2> $B |a̱ҕ#B%l R R; j́-"ba0 %~mJ{-S/`@:\(t%m_+_(tECge kŻҏ{1g+|{h{i&R ~c}ޯݵ TN$pqfu=ʾ`0FѪ L p))[Zkkadhx] Q,Y#yg,읝,e?1tN˔j&D]IDATx{XS)s@@pB$=@8%གoX jhjmr,D:SswhWЭʹShuK/V@]ϐO`ƃ g4>HØ b&|B턼H]BX8iG3|4wְ"Z0ƛc垘C11-"J;XTï[-^pf  =g{f(iRF Wl9L WyzJp7lb@m۶-oK+mkx4*=-G,uԦn0-`,7h A:;;AEIk8\K*opD5g0,.qt $ZRR*Άh5PtJ0g8bÔw~קH3ʨd&y쵟qblb6&NApSV%2dm!J%aa qKzH+m?Ᲊ1b)iD?NỦu!P 7a?bSz]L~&߻Nptn0f9xglF_F^L./ZỴ ˕#"[,܂~u/, xjFł9aMP3-&ov ˼c3гy(`Dh;t&_QG MTsxywk 1pg hFMx<$^)?-:ٕM3\XݜHd =8 P'195@92g17BPqlY׾R/9Ljj؉0'ǟOտ;IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/vi.png000064400000006623147176754540020416 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTEsӫ5&gJʣ3^n,nö1ܱ7.Zio:K£KFO֪+-{¹LvR#12QbĶYÜ+-𔓉ɢ9;uib0 \=t"y>Ӝjz'rg=/3M왇RXͣ)+خ5419 d@%jf;z'8AvI=Tav?jG@>OPn*mn$'Y/->0fy- s1:d͝R$Wbwy>+9;ciQƠ1ɺþݯ)1u:ϧ3*槆+$138/۲@>Y 6"F~#`,ß9ڭ9@\y)#Ҹ˯^(™"d8֍v9b"s(;l\6հ) )IDATxX{\W0,+H up4<(F Ș)kR@YV֥8jKi%R`k|,T)ࢎ(Hvwiuk>gPQ@q\s99s/ ʠ ʠ8bi:(›ZebbZ5t {S N|(BKi't֦ia[V[4\3!t뗶KF]*.+W`/B[n\GےfF15aNӃmݬ(S ciuz;ɱ-?A8ƬGoh[{͈l;@vco4űa&P#ʃ_$@,lL55ǜE+v]oƻ ` ,BcYA)P /\_Rx %~y][F܆Sc(0CK4(y:1hAJhL6wlZ6˔9X" ,(LIpdQsQrN!&ގ˙YeAGNMvwO7ժTV(1l]M a62 rVGiqj#a܊&`LPbMi[61iP8?8ꨠ:=Ԙuql7q B4B(eyHH=];Պ1fͰ,^5} :irB ꐌZ6;tr{ 0h7[Q _T<48,1VC9îbqC$$$m+ 1a[2` "5>*IqzB8dxd~!_8 ,fpAIhaz4`H%͓# C!ahS2+rcN#'6cb$Ppޥ2)JrDpa 2&ǻ-Hg2$.H~~ p5V,ZlDdPip`d0%^7N8RZ D͏i*(&a;EP}D@GmtuP+T~|O&(73 }O0>zN୵ [ PuMoeKzu}1 Қ%kUs  ٸ7Йk`>@c9n*Ո>Ź~A*xN9yE{J-et  ՑdH4{yHpmjT| x ,93|Vtt'U&5tk+ MuKVDj>rǖuO͊(*E&_Q2(TQː1͙o} 2Ӯt}˳BTdTk/ DT.]LAާg8$[{D]|y3Ե+U|;jSQTi&d{Irf'vfU~d`;vY(Nx#?>v|bFҝY bP g+Z9~}oT7g?ظÛ-%u#_~re? ;Pw~Yn+F;`v~~ ݡ ,U v=!rX:X&Z'ғYQ+JWҏ}}*%p9 \O,BgL P@v⢥0a=K#dE^oJJJAІ ]HU\_:% ä?z>S:m$Uqآ錩riPI#G/X ]8aEOdj"ϺA4%ÙFu/ubtX' FlI5L9$*40BCxÝwF5L:q9_cnn@1Ɓ: 8Bha,AW/~ [-v9/aLqKH:j%S\jK$WVM| $";|1V܆[)8@ %78y\"P{vo52k(; ӅB[Y'?IWaf"|HRI<%;`SU\FNl0Be {3w8shD#шFĐ"xU#AP$Sr&d^&(FȜb$cQ^P!T"ԧ]U!@A *0RrH9g~,ܼǙ@hھjߕƈA;CQ`Dꖴ#ޯsOU'*\.#r'89e*TļpT>$_vטeGlxjL V{FW".ZA8/@A7@n8j#AeJ 43o]]/!D29&d.=p;r(Qq '.ݟ»b$3 #/J̻aH"8o&ͬdVsf>rBhfDDxxBBAACDD"W"vv>>pp- ~~JJAAaa'e'dd>>R??0~0;;) 'h')m)44K46622mEE8|\  r+%%AGEEM"["V66.y.-r-R  BB$`$::$<<00IHN+q+,u,00ܽqIDATxڴyXTUb `0MM2HA %*`Dj-nidYf{swy͙{hx oᔏ ;/$=3. !d î !QE/'_<'ϼ%y!/H@q7#uI4ψ0<͈%!8I/`'37O/O01E^,PVdnA 0g&w b E\]7c6kmgt`!4;ly{'4{_9EA3M4W1#Nyv!!4S?,,t| M"~&<ДANF';4^נfLЌf۳6Y.ո;+4c?kѵJ`^:R6i[r}MHնPiIlhGAsx_f2y ydlh"cXm P&TI1qn8PLϕM$+b lL2u\JL&VXs=I qLnH6aqFth3s2!VŢieEiٺ8 YGbg 11513-- ,W][L o!ms׊Ir/}B݅$nM|sW:ƁϬ$8:zQL/DR)O\;\.ӮqGIq8q#4*$M;Û4Nk/igpM_!uC p+ۤK̷؁4yk4IDATx sol?Pž)3[$D"H$D"H$D"H$ 0A"o IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/ws.png000064400000002471147176754540020426 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE&+!W Z-1$*|+*)~*~(}!y"zw,&|,"y#z${W Yx%{(~ x'}u#{v%|C-7&|3U.+ yd~<xEd+E7X'}/RTq\x,1 - 2xr%v4VHgs:XIeFdӘ'K..Lj}A]lDCb1k+,3SSpy F]y2*hg.R<[!j.=)~sPm 3z*Omp1޻݇7Y%-ڂp,"C(~͛8Z,{`yC_F]%-:%|9s${tu> 37 ,[vDd&|-+Gf,;]l@)~@`D` 6i+1u Aȯ$9Z?]$-)MZX7UU,.JIDATxUs1}ۺp1;MÌefffff wuƮ훾nFNZT~_FxLi|/-3Tt,VCx+'"JflÃNHUll#>Ap~q,8(i{蒑s8;|0y5D; IbP%̵K>"Jx+){W åG)/w-.\$6S%4 [wt˙iiVbI'ݴx%^|k;>"DKgK0KW.Aa;$q`$!3:ÿ8SvlwqK"!_ϻT BP( B q"BIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/xk.png000064400000004035147176754540020415 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE$JЦP#I"I"H HG#J GCթNEԨNB%JF!GE#IҧO֩M!H!H%KתMDFE GݭJ"IdlѧPDȢT,O:Vtu~Qc۬KI^تLӨO3VṳRsgn#Ja|٫L&LY)M[q+P!IFB^i@7ZmqըN;B[ѦPޕm 5ŸW8UG?ršhDΥQ)N?1Q}zy'Kg߮INmڬK<^'LF\PnSq6TbkDmÚkFơU{ĠVl9U%K5S_t'MGˤS`l\xY^blcIi&KF>`@c~ЦQDE3WϦQتMͥRתLij'LܬJ#I'M~֪MCd9[;]1UE2UثL(L(M%K<.RҜjMIDATxb`` +%J+;mXuT6[X|d?r) 'b#w{c"A')+Ci!33Zer2``ffY|Fzq}g*mM J9UrF#OŔL+0 911N\ .}fP[[c 2h׭q[A*˯^*'hR +,;t3H84; K vyo2ef~``忱 Ja,&bqe8m#ƙ._A Ù[۫)7ʽAYd2+N$Aw%AR⅋ST$?CT]9BI39*&&gD짷 3@5j6t ]ܘfL -m-<(JZuO0z IWϨ%KrFl/OP&iT uFwP-,5J;~nߨ8Kuq{Z%}y1F#;LO2aءdgg{f;-a{̌:LnЩBFdm1AVآ[АGE+ղKUEP,aM\UN,:Xi,HRj׬fڵT]IWQF@qoiL6/#pUĔOLQ4Dj9*XotK5 *5ou۩]9+ۄ [ E[XXlz6h,ϥAcm~ ;mAu#m^HijK6u{jW܎Q0 F(  xoIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/ye.png000064400000000267147176754540020413 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE|||YU*~};IDATx [BHkH$D"y;9# @"H$D2 '`JIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/yt.png000064400000000300147176754540020416 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE&0/x*t!>IDATx sol?Pž)3[$D"H$D"H$D"H$ 0A"o IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/za.png000064400000003676147176754540020417 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE320.C''͛Ȥ65fT{e VV$L4E!5hh ,$Kk缼Y*)K,7ܵs1t%( c(SEk&6-{$3&Rr=[K4  5{{21&33ٴ75+DfS+' +2;0$$55/@.6f<a47/,,Լ)::|| 5F:9^DD'/5߾+Ѥ:8.-ܹL>}ʕЫa~uǏ2|#02D. 6oʼnԩׯ%2W-Sֱ65 8, Р6!!@nbBB.H0DA__⋷!+??UE llh„Ӧ`` B68[ mwTIDATxڴ؉_eq"3²Ryywޝ}~veCwkqcPxQc1,+U01܏aAZ1Mm!a^P+c~U T-dJf&t{[T.u&Sn0O4i `}  ,eYKhL1s"_;% 0Xy_1I3(qms~GQ fSf4powX1^14ĘzS)co^1f?4e%* a.0pFxtH1" ;Laa^pG8.,Ƌxngk85#&팤p&AM+`GV-q ?CԊtjďLZ 󅡍,᧎H ]TF0cJ1M̓x[/ jH@"cpϭM<"U"C?y잯hcKyQ-oqAQ\YWRm+eJ\~H©1B'pK>GʢK:ePo±*D 7 fIGb Npqȶc eYW#ƿ {}hmF]`Hlܼfzb+ )2Yb-gı.GbBGȰF F*szb5}1'=ΰFFR*5"wQ 1 'bqzOAb RʰF" g'XH)4 knX܁7XѦ|J#$FZ[xR#O6qO^xRnzjD񳹻#\tZ䪴)\hʺm 0xpbhIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/zm.png000064400000003027147176754540020421 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTE} !{~ : 9 &~}: $ +-n9 pBua&~4liahagVoYgZx)MkZs$udmc\jRuekc}^.tLiXU WbSi>s"rg\q#jQ_[mpe{\ey_e=xvPV\Ko]ryqmNb[]j%k`2zzwdoz un^ VZg{U}s8 B {Z`sqgffr# 5yVKY| Nv9n ~ "^3JCd@o Km2u}[b} qSk^d7d{?cvTqq[XdVTvNs!~cfqv>Z`peR*`eoqYq]mq% kkz`a^YXjr yXx^}\9| ^d1|^IDATxb`tCHvxwQTDYj(/prj{ck Zr'b SUնKs4lw1]'"OE…RZT.NȒ 5b>z^L>:LM̯.S89Euei 4btn[9Cyl1 kS)֪EhַyZz-KY޴`O˫; K, M0_Ϲ)L^N#{-Cڲtԝ5S&hx)qdВ IyNIʛbWᑣ"eQeNtf}SkȏO"4{FD 8oXWh]N\C5!iiZע:yWMlka]ꚭmCBmMߌ Z| KMiyw_\5;w{ҬLdT;;o A4\'ٜ$Já8ڭZ]NS;@PnA$)E`18|$rN3y/e`MoKD*IJF$8Pd ?3p [ƄZBz>dԒQK֋Z2jD`ԒQKF-dԒD~ԒQKhgI-BP,0ܷBIENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/zw.png000064400000004022147176754540020427 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<PLTEdg^_=WfP-ڶ WW}fJKt@7R֔iUPIPPQuu3)ҹO~iҬD7nTHaaa889ʣ'b6111***eIͺrjjjEFFœeNNO 11\\v V#$%^^^풒qqqt]fӥ늊۳""ꁁ s̓kjjezzzخ̬ Y` TЧV QZ1P P6?@@`=~$?QWXXy W։ӊaIx$șmgпdQghhPPfۼƓ̬ ܘHHH*ƠǨf#dIDATxbfaQ3.b%pgؙaL[KmXfxO% +2%ekYfF?,s2&YFHƜGQ,atey1TK5X2n7qSYXb)+EUa aŻ1-aLEVm-adf1䢭%,KFƖ5,ZV4d8˸Ll%.y`5KQ,ɫ atFL %l,`|<[!J%zRX17z P0-f +f "̔@,ܵ2sU+-ѼYIlbw'$Y{~jlT*(24KN))bΨKV\6\)Ê^y>*YrpU,krT4dH|$!lKey٬]!pxŒӔ-B^&6۸7Y(6HdxŬJ:X .6D8[)+,hLTTo-rK-Ե `߱NtܧbOk#9o\wE1 M 0ek,N"IoHKKo}^G$ =L~{ˑ}h-#kƼ'q,fRϛ u}/[ Z]GnՋf,yV@$8QLKK}o rE(x-VKnF2p %v"?%܃Zv98?M ly4V3PӒ,/i:Jddt+%Y21|E_"u%N+.RX6DDV3H#ܴAXd8i;pgPK,5|a ]N5A-V44{i  b#!IENDB`plugins/limit-login-attempts-reloaded/assets/img/flags/zz.png000064400000000631147176754540020434 0ustar00PNG  IHDRdK҅tEXtSoftwareAdobe ImageReadyqe<3PLTE[[[111OOOBBBxxxoooeeeHIDATxA E x*v,]>NY !aA p+ c3 37&w[Y O #E %e| ƶ[$~_o~ߵڃ9[uR./+,+.0/?O=P+2):N.*;O%:H/=N,;6F7H,8J9F&8J16I:H>R03P:m\j5017M7J!'ϩ|ѬIX#fQ)@|cvĵmѫWpvNOof>PջxBsRn, c9&/jE7#xXVg}\ƹ\+"wLgD ڵ;? :݄LK-'1[ѩmG3GƖP0 kL>pfFJ+3#7{QjwnKF KXA~w0jx*9@3K!읾 x,jrLl~['SuNy!l~X%h9YfVHDFrGߙ܏Iϙ=zP^RpˇǼm%`soh[wA燹P/?DK~ OlG3-1U מW}@t.$>z1n_޷uonN%N=q4^%}@rd,w"ŕ@]cn_NF*u&JQ#|a2CʈM\%t8"ӒiF ﰝ«RKHЩU|Wfhdej^Nm`FSZ*EOl^̳`&jL WB;*!B  RΕ۔]1jÛG$c¶E6Ƅ1e`w4V{=,tҁ2N]`:bkzy{J t>BP.%@ ;:;" Cr+߽K[0!$:8^Am 5'Wꏛgt2ƅ\30Μ9`aR3s0hqwzFH# 3&5Y;i&/8&"D|]-2Ҳ'˻R+?7_¥z*` 8]TXOhU" d> UsHN;rdl䁥xȚds<@%,-0%+KǶձPmQX-7Lvl͊ʥљDA&9[Vc#X62/1P>t-jt[?sK%}ػb pNFiYLѽRZe)ivwdy hjop_0b[@lwB(/mjp &kS?mj(lcIS. 虹Y0Ѐt׏|>kgŲۥFZ~Zv: ̜W QǿeF݆˲^5BGBD ^"Dx؝ufeG/*a9ŋK}s>/C#R0'j&'w/mrR;3he ͯʟLB",MyYV{F2* v&)N?[l/L:u SWj?g?R+pyuNUIxɳyl#&yʊfoB($`58H _yJ+i(ANa'm7j)X?e4tbCvĮ e-ʶ6GnE2@^-t,{7lհdR]}8W*/ny=,H#ȉ~_ ;* m,?cɀELzK`%~֪IO+03 } =I~/Ȁ]Y3]y1=6}aA ȓǕ#'!\r4 S;M*R>u.Kfc_Q~a,d ,"`neCBaWzЫG/*Brmm V, I hx+bP \ʒQboEe6{[jps9OKe <0F 0+ *FFzMހCt'z?] 2,6?~O ZaS5ym-$f143ۂiķn`-C( $3+r{iYM[S@(\0?x9.k wR-sA{"F]B{zkIWm# :d /kjs@i0V@"EJoXA%`-xx+gb"5ߺɌD Y"- #1'cQh 2*ga% oS^BXu$0AAm>z6 ܪ4Y@JmsAq"X{"%m <,d p\m Jqit$Z2z~&ǀOw3 @tTyвfcBaꙺQKӿP_5)nV9@=Ji9p+2SfU0-0AoPM0OlH'+~HBVmjGȷ }:hL?nt %L V!M0x4K\3;.h pU$"_[6[Nm98;qTg4J pСf1@k*@UO=#ֵif݈Z쇚dCe^9i |tS =ܕ[\7iN<2b~8mE t=MjmpjDRr~<4v9R-#QŇN5g . s%!F$7`2N.iZX'V_ͧ}各^U Z B.9$ J7i|  Rِq6~gd j.$a޸lrc;ld~"hdnz%I7',#tu$ ]xI 7U" j!4;QWD LڠSgL5͈|2LF8%X)bS?1?2KO=n7F7JFL?2AS2F TuFE7k{XQT,h,b7D%6V#vEQ`ْnֵDŀ;ɨ3^wez;%-*]j=WH ҁ Dh%:҂c}.ėuWzppULL홱7 4"@`P6ֈRX]1?EHK@,S<߽+uGs a_̚4AK'!X ت.P6[׸_4{>SD@JC1UӠ$P:GC1:]hc5@B`tD0 M'"`DAbd'L h9KLEtz! VyM>n)t b",hOP  X ƣm"ٕ`j"1x380+MOn@X. aـ\&y qMzLa,|Arb",sHm* .p0sk "נl!Xbu \M@`։:ȅ&c.SbeΊˢ< k=uС0͎c6XF~I @! :6- LH\jfAd$!EH| &Ct{@t:;ZbJ2 @=t;sUPA Ci44`тsu]WaPAn;NuЧV'wxu` 1$193Pօc)UxB`Ϋܣ1A1;} fK6)PDz`Rӑ{$@dQ)1R_O9uCv[b2!r7Q]DL;A*Vh3B$ -AGY4d`F~kя=K"o NӎOnfrd9 30 rHh CD]oܼ "FLFa6מּ>^ًĚ}%E!|\6Ks.E`f}-ҴŁQzh!M_[n0 |tf^Ky,^0.~c/V5oq`w&.ՁaέDC^gz땁&i81j#ri^~=Bf*$ uRy6.oo @GYR1!gD|yfD"T$qU| óFT+84{xQ .LL@I{vuF3cJРϬsNz^n$coH Mnl(ayYqpL ΐ62b%P8$wH749AQn[< &" ,HlHD(4t`bCqq$KS LEt3f<FBhƧ3'ɜ {%"Ӱٷ}1J'a0o8v-;93|M;**n>/נ|}A 8>o[RhY5\$إjT5HW$I !IBp+ÀH\! K` ~C5K~elLw[_\yˉrqZhTm zPHqf+@2չb gw@)p{/>mn)lUeqLـ) `XH4&=zJDGUjX,=Q/b";3 r0h[rq)7!mM -k Zq8?!}Zv5nue3xT-f0cUCsp.F=T/ۙU}{P;wg2Skjؗoc&!D$kȞ5KHeO"k!kY>@|!$$qu/}/۽̘!ssX@;7o~?{UIǯ>^?̤`H`XWv":)fMyxӛz7ۂj}xmڻvʷ,xy"+/Gꙇwxwݼw"w靻g6/x']6(˟KJUk;zyS\isǼo4% #A4Md f[ #ž&#<"51`[uQtH ԴJxgJ>$4|x,?t:OiAT 4I d2,w?EvRT`h^1cd<-`r~SZR*G D<~U^2y'jn- F6M&\)oXU29+$}HqΞgNy S}6KeCBnlv/M b򔗯t?C8w86ՠ~w{ԮB+R}ZRO#Ð@R; !\TBѰ$ʆn B$h,#o14Tb@s kפ17A$ 3cAtJJ ;Uyùl#Ha ]{Ѯ.F(.WĚK ]A`׮5"! {@PVd@'haDv$/ T-34N*!;L/JXJPj{rj{jS1t>ij:UJAa6?֟zN00w8`P(U)Ь|/1beUBzF`;r$ qC  0P4Ks5>t jLP99D |(-b}AuЀVۅN03Pf5.QP(Õ !EF aLrٺWK{gTfDϨ')⢃YA]7MvV 72u|D)šP<"h:!Z~hœʴJs2Q@2]հPc:wKR69r'կ*wb4#IC1&䞳lh=PF&zP l|ki?J@8E%DUM{2&jQ(05x )@dy+@!PXњePSTo(D< aeJfe\Q-4Cqļ̀ R1eڟc= C^VQ txˬ\  LhgxFT=+ph@ DYN2y8OI^pMTJA)4.)&Ehœ$#)j(:όXnmUݵ2O霡z`<|,5pѧIsJR34)ku$y va449 4Y)Sg.C .>8ʹĴҜdvPT6+ !ڃǥ d2͓ # \*^| U:5o^B+B +\$}Lq\ϙz@hAa^R*m1gBA9wŰ1ujD۟ߢJ k}lJ  & _M\ރ&b6"#{ ɾT1B0:65~F%#6L?JP#WA,)lIn! د:2҃jl9=H 8ޡg򟕠2yi`^ @ZOf7ݻ7J(.8ݑ#NI S繵 }7js͕V. dԙjl/n%r]L2{z3j:7%P׳[smZnbbW̓ ^QO5$mIENDB`plugins/limit-login-attempts-reloaded/assets/img/icon-logo-menu-dark.png000064400000004655147176754540022456 0ustar00PNG  IHDRN#tEXtSoftwareAdobe ImageReadyqe<rPLTE=&=%&<=>====3&C9cl,>_I 0gn\eɹAYUgTUTSudx&cT V{:^*6ؾGs6p9U(k0/Qu MA+ .fֶQѐEiMSI@0m%֚fLSUkLy7S9UJݐ SYkFp0mUp6 Y[i[cAQ0ieٱO#,4mjTp@OFjn;2ƈ5iT(B.v;RH)@o(yHӪihF&iJEs5[{ן$Ҝh^!ͺ&(eȻ5 Ta[4i_?4/Ϲ] 檹#bxOJi}I](4Qa*q5\_A`ڈkA=WS4{b5OC@?~aky> P1?/G܈4H -G̷suh$'z h&L@a32plO3S>+i%N]*M-z&M "SfslٗQξȅW/)܋F>ǤAt[i .rl4q琍k$$@Js_ 3/#l|8n`.aiv҄du&JW & SH,M4}iΈEp8D踌hP2pg^eDy^%q㙣9:{qk28ui8~|;$} 4hͫޯNEίK9.2َ\0;4K *XtI!"phL5'ONڝ1'r %4 O^rIMC/it%0J;W.M g1'M8.? 1ߠB;˹UhO|DdMG{d!F5Mzo3 Cdn;HAx@_.GCx"ltqRU^!K/N"H?̊TLw4cVs4V i `EVk}湧$ /(ô̩8IENDB`plugins/limit-login-attempts-reloaded/assets/img/icon-logo-menu.png000064400000055551147176754540021540 0ustar00PNG  IHDR\rftEXtSoftwareAdobe ImageReadyqe<#iTXtXML:com.adobe.xmp foWIDATx}T}:( ( KK䟨i$FXYR-+v 4AD:i޹R;ewoaΝ{T>sOc=>S/&%]YOԶ-},*z0 +#F@bQhWQi-<,+繼߳kKiupQ/3`ďut CĞy0H>Bu6^㊮R-P?: mB(z' YI]UY C_]Ƣ} 'Uc(U@ぷ&~@q]Ꭓ-F8Pd ڎi뮁ALUzΛ< D+Gύ%Ya8Aw9i>8`Ы|P$œ :lrJ=""rx6!?qu 'BX{˖6[&X]~d~=A@)`$t\fSvފy±HT )!h]=]Зk융9%L*iQ{tOIm%MdX GgfsV+]9Ș3aJk6VoOshYt j07S|7nyeLl%1薂>~.է•@ p:32Svֿzߑd tJb.@u ? 6l[Ld&:=>zݰ'@/StƬlGUӔ׎V|B'25q;׉ cm]և 4/7s~dwj?'owS䜊CUNuVkꄍ=pǟ 32 ЭNg*;׮Hl!O,04mG8L Z.c PzbCw#)rFEEO#0lkȑA4c9_iJB{a G$ j ) {3f+>2[9 AufWL[*[#OA: LJܹ$"&'ذ^ ,B@*]^~{nmaeݒx(Wq5T׃'ϯu7WF7(*%)9rMu*l=_*=Zvhѱ$[7n\ šWՍ$G uҭ~6{j5>^h-!ǒj LqԺv b͗@m\ض3>\hU]O0, ?94 4r]jNB<&粭eD0jG 6eO "[kr#H+ζ%JN9n{/kRhhZ&4H{Jm J+.:BhCM^)?ڻ>=-{ף EaoP +w] TpbٝYy Cu^[}7hN|2I#՗$ [yŋnL|7Ș'V[] __}Mn`O\2`C6O\AsiC x+}gaڰTn}>ev1(ܾf($!SG3 23sÑd#(6> ij*X:}!(h'p9I6Z9hgzFd tʏ-ZS+݀Ph4o5LPW%Waڋ(Hra%7dH5`v-;nE,9Uz=qV{Y˦cib产FmxkԿ@ް 07vʌINztr#~ևfBHMO! 8y.r(=bFmWiaʑzc 8U{ރ(^[Fw`{|@wQl$DǠj+&2om]r! P![?ɔzTS Rw|Zȱ\n_Vة]_ON c ϋSxBYDc>eb1-jrDPWWǦ Q<88zQ o:= ]چewTFwa$gC]|K˫\V$3fD #.ovZ]gKK-hT p,b-Uzs iC.h0нH?Q|ea=\ WB$O" lPg qڒag){!S@F][ (/E`PI~}v bu0IlkgC,v1($\N ~L,e 4 d H'#.*k$_߳IR~XIN7>B<! `~{ )=85h"liH GcrH-e:d҅k5ɶB&u9uʒP':qP3jbD@3a;ᄣ^fT4ja@R.]ݡ:0jͧSP[y`դcwj@4v)$qH1/,qk^㡵wnB/3_mvp/C*pv9ӱ4;ۃ$; Gˬ^qEG\xݧwroF  g@Kn07s*0I?CZNB.nasy5O~P0D/'V>FJ`^Q-fsT`#t4}knZe]aQ2mn v P]lm )Ii )1-RMX){PsiDB5ֲ`jZгev^mi_j2_L~=~M0`>dD ~Fuyc:}DDRhib DamXl B9=_aJ?H>m``f; m np|җ);]ޘ n".G~,PBW854m/K˃VDABҡ# H`4Ui)ˬlS`[ Di;R7S~NKAj~1hM 67XeH4}*bwٝ;C@[#L1FŰv͙3` {SK6aH),M^'\UJNeЃF =pg_ ¨wFi 0fj@?<j|.(,F^Bh]In?G֟+)X z`IB:U@6h=G3i;qiЛ:>[!n$5.kG3"ٮؐ$XkvL5Kml\멢b$hHێ& ϷA[tlMM2淰}1\ 7?Q ܯTa艂?CQ+gfDhrf(h>b7.50?2Zx僟(?m!V$姖Dڿ0"*9X}8^iΓmmQhE_>}lee艂%e:$.PN@eȦ`LA ?phİ!Q?r^js-sx%t Ci}M }qDf;o9>K gMiSx%n [ S6 )?(w%XAc7о O9L?\[Ofe ?%08s 'W-ٶֹ,E kbάB"Ϥln| /7/+Z#f^V8xFcX|_Z{>/ E1=S@iDžs5ؑqd=S۶i2/ /n\Cb(?--9h'=%0?_2﹗8 CaAN^lU8xi8Ӎ]dنr7 zRp@ lMSd m;lN__}%nEh(3/J /p&isWۉe=^&20au)t ((U@gӋ*$sPݡ#A|o?9VeZR W@ˆ@*MANFA@?@,<ϾoI]]&84bnk*IVAM Rh?Xh4z㞰uM1z@Kʏ QX^<we?\Vs_aY^ezwF41>]#|h?8LOD` `ٗCT:ȸ{ IbN>7O.~,ىgd]K"N/JX;>@n=@ @mYWc-.! W@wъ \Ғ-ϵ5~t x̅H`\;Ê hns~ʤ1iRx`432(ϩ֟! W8zV e4Ř'5s` 2W!iޙJӒ^GXcl]Av A>Tع0@2z[ 7U K=,`eXZ]K17rf*‰0Vev@*+|8,5$0%I.q-U7Gr򘙞}?pp9EW~7i؂ƋR]ξ( 4;}Mlҹ;zXE`p?wG=\ߟZx|IVrе!o_{tQi?-N"V~ێ/tnvB 9c'A\ -?%sz(P?D|J2)YBpqaTmmTb ^!t^D7b1w3bWIsAQK3 QiN/ؔM;{6 ! G<`r8n hGw>C;nMh0qCnҮ c~{}Z?f:X2<ߋ?: 7MWs...Q'Cу/a Qgmf讯` DQ.)Ww{zТ݀O)F;tS'!'M W]?︕/oC+ueDo24dKp@b&aP)'E )6+cNGu}N>֒l=F#ڹ܅K..^]3^2}+d5oO:ou Sn 94߮We?+ 0R~'{/̓ COfܥk_~lm}d 'e6, iD?هh8漶KϵW0/~`P1h(P}sO(vc 3fHѪ fۏns 03c.[;Wht=CdM`V ; b;ףmcڄB?ni%X/o_u.}U6n,0}дHh{)ܒ~ї7iwgZ/,1>Fw 0G>[;6jsؕT`c!ԅr_~ҟK1ΤVßgo7Bmz<u0/N}6raC :-?|StH태x[4-ph߯on;wZ#iɘ1c.Y~x̯@Sr:up4%SA 2(!L⟅Fs&bU',2?O jՅ8DJ5BDq(' &+,_|9ȯӲ9ko \[Œlg2{k dDƀU*TS/?#OYqhFQ:R\1c؄J~URPs3n&KX`Z+ }H,[9 bC=m-qd) xޒ5tLjULݍ\6RN >Xa%`B} MYp>ښ{>I y5*$bB}dzU2;rSV^J8 1H݀A JoZV#W뗧!a{t:ir@KZi*i 5hsLUŴ"q.jUzRCp ୍ƈ`'D0zX J_7X)GSMkB$w^fa]p*YܛyX n-fy-/*z;{iBP\NN3>)r5_$AG HA+({вkQ4-:a-N &!J{H Hu8n!2L^^ HbZb-|rʢkDnA^,&P7=W]spZ_bE蟢[Ao։ EK ?](M&^: f#+ԍT73+]Zs#`O|; \L]}e>g4Xɣl[?`jARKit@^2(2I(4yxhܧz#h !aN$GW@xl[F[A-|08#2B t0H0J$=Lr/jsvchiN? &0s {XS' ^ "hJPF);+R|*0e"2տe62BWfN#.쎍Q=^?ޒ5@A.5f|/A$z 4lB&[+L9fU An|Э@XPew?_:ѺZ͕ef'=H~3rq -oߥ+Cf3[ RdȂ6:^pTT˨ /? :#ٺu=p`,8%vj, 7맕ɿ`gD-ݬAe/n(޿)]I>VFu^kL &X,H8uGi5^hLɿ;O|jCK[8:hh97'KGPه_1,Fe㗸eR@V!M0ym7_n讯dwsP7l'3okAņ!CXյdn~B>w >n 7i\D7z* H9& j>U*E.I#Ѿ[b ,J8Es x捽OoSwMimExr˟O,]_C!Y?2BC ˟uBc2w'f ]Gq,d>vȾCuZ#n|Z#ڏ2Z=34%n#}WO8Zקd}9nMjzmu',(xVNA3M/~j:.-RrЯ-1:Jd:P:z=9g'sz4 ̸ Ñ9#̌~.])$V Aĝ[(JBk^_"8XӦ Q41*Dh,q=oϥ>@yW8$)V3l!O:'<,p(@k~|' b8^C+7ߏ?>U0 zI|?mb$2\'bL٥<8ߋ:~~%Nj!;, {RuO A@&n]yro=^L/3bA(.xeģںo[sRQ9g 1ꊎ݋ Z"-dwY|ߟK#%R`>@.C wa\r&Q?If:]Ծ |^|/fN<ŭ]<:,ȣ%jyi9XuQtQkݝz,=|~t6cqQr;/ ,L2*nÖ0:Nޣr0y4-ؗm` ZF+hY@>3޴Hs{ ; G }y8|z{}][rpy&TfFNp@Xv @Ziz (h>H3 Dہp$ ퟡ.n0*Mޑ7h]_C9[z55(Pg`a$[X@T|<[6-96.j\ůBO}xxRfQ~.(p(O7_a:Q~ D_ qr2mRȤޡ=~iabЏxYp95S;/V<B"B{!TAA^A$ ulɝ&ڻ bD{N6 c}F-dк? ˤFZ5uhk=hsD,HC |A So*,h)3́PC᯵Wԟ47Adn0ԓ}w!Q> )`$ r pcXnf~Ls@ "WA+dQG#1 Q[|ŌR7ߟQ/?Em'yqi!>>sm *Z1u\'6.0W 箘N@p$y)Hш~ ʏ&˸q+_b* b rB݀́'pAWl{g"K˹|Ks9q-bA=`VˍbQm]b(r8~(ϻNd"3UϧneP]wR!% @ӄb6;@N NQr~lHk'X M׋ 򴵼 FFdб]F!E $4)lasA P*5 iJ bp`Tꡇewۮ1k>0jD1"naRlH$^E tut[P~M 9j 9E.0؇,G  -AWKL[#-ݽKT~_]&m1rw8m+{}Bo)`S4G֌Q(+ ߿[MMaZ1mDm>\bnK0O]á/hDpbȭp"Vm2 w3&7k~fa}>@8B.#}sA ϾܗI*'w֛Sg_f/OZ3N,Z`̪%2_dS2[} f0_Z^`^~5nBhwu'b{!Jss;̋+(0tunUz2 } HwP|Bƃ E0ug0;9~&U{}g: wLwOtJii,F5߻P dme(L%eƪ(uTw5Z`#Gc6WD-ja@H>U8d|"9aiqɺ6)<9Xc|kmd2eqT|&@A ܷ QJ5\bv#C@*\-̏٦y;&HzY| |u@Qpd<N~T|S"fvh)`,`AATX\Z*Ë^ eS?(#@45L,\;:R@~J,Mgf!mj _pZ^;?u#y\:qc;0f0PkQlCUĽ%wSl@ǯ,mGpA}%f|SW.@Wzux} Rh7W=.R7aeY\6ojP+1FةC u9nt- ^6-rR嗤`D )mĺr 򅋼,1tA_bLœF"ϔ\qN0ji-Amںg9y~A[ MvR*:)=T}L].:+ Ewq2Ds3us)b`w"_GC0~TC^Cs sho^X "r崏aP q'- 𰟒"*Srۀ4 WT ZU<%x@pNL <:y42UС0GVmtL\"2 A3g݅@{eA*$C; fzi`j\ȵѪ Bm)"Lߟ@(uŗNb#ik4aTkwpo@ ݀fc^S'8ؤNIo\-lյA4tq㓶|coρ+%%s:؄ k/=1![. V8h% /@ & 6 >]#?A~'_.F{|cq;oݟJ-8J}wTTE8jܩ^ uy $i\v;/k; Uןs $]wu"8j;@[xK$!q4ƂYk + r1R %n)2aPabWfA)2Q&t˩`IA4r::/f\+FUxy$&C )7+.r5ĩt W DykațA׊+$\>XhdB)yAm% Y@\0ʌ^AV key^ O=@ŋ{cDoD@X B R|kưo)ǟƯـ %?<(1'R{푈m͗_qI~Tc Ĥb.ȹ :wzTt"oD Z&)6maElP`[] EiMG[ ` Tk~C,B]W ˽Bs Xۋu"`YBnCL緁5C%0/еQVPnE@&W8r^A{[>bg6Pw|{ˍ-wA'=hZkV@֗x5OV; J!s>!:[G\4Cli N=8DR6cK]Xy 2:X+@K_ )+*@:t<'{tacC=NFdnC kpm̠)PtSСo$rxFcƆK@h/C~9ZNW[?(5OQRc,+!_Z BDkkuPS7>L7ݼ/,7ī[:û ]Mδ0@ј,l?hNJ1kk]x ma>b-c`w8i jj6Ê-c {2vW#sxQe]k!EÿI:={Ɠᄣ^f\_ǞOlr;X`[C 0OcG#nA}k3@M#(}пǘDwlΈ22 MA0mƔ'Gˍ^c.{E0bhZ3;ReXAw33aEbj\Ht hIVS}A\4Q)SgP*Vk5s(H @MxbмbYL:XuZpe.:~;jQF n$H%N;rN.uyvܭ@=.av1Hia(řbZC<wn(bQK˩~GIpݚr3w@z`G0ةF+D9&U+q`sGTO@wy۾| x0ZyEءdK ؓ`ۖ+#-˜΂U#O'Ϝx!*:XJwpOHgKo{p'z$QY͙TtZR}hCQ(BY0'Ԇ&-[yLSzVsDVOr hHMjr_ZkntUUogxyIPϧIT(ߥǗX- R&mgWnnQВ; Żf! LZ^>`Lf2($*9 t"X-vCW!B^8Ho+ fPAr1W~{a͍'TÈ |DB,>0rD ǜ9َcI.t^9&i?"!)롹.Yp,?P@o@21=^SLٝc#[H2;DeXE$A͌e|3y$w:1V @}d0x h}:O$ga145Z956 ^w;yS.‘uI>4M f@q+q>7Uxk=0՗5gJBl ՅM>n]k/=d[s6shddQxF%(WN)8[ǮH;.=D. a@ȡ?'G٘]Qnz0@-1W(iz7XC!j@KhuA\3Х|2xKY|u^]a@ dBdf> Hhl];;岮t& thdQ"˴%@?z eF ('0l i`80v?\9 9?%/׍墥oݼ|7gDk>C-cg;ӏX Y$.ˌ/ˡ?j Q#}($[. FwY 9Q^wǎ?>|eϟ1w".ue& |JI'{Hlm;᧴)f!Q_^^_N&$K{LZ` Jh$) qsorK%.-pX 5 Uvd]<tds6t[{YS@}|IpLkaInP‚Lr1hݱ?F[N%BMҡ{^kj[ۻ1PAA~AH>2z=kǬ7,A/`./hlMUXLMrܑQ6Y'i 0^&`...5MNoo\.sf" ]]1MOjB*yr)0=ȹöo( _K#-~I@V[-"?øKʜ0  pːVN@840qR-[ɭVP/Ckz1c#m-CU8b'n> A5 [Gp]P ҈uBeN!2ϭ][ ˖| B?+@Y]&1cb}1 K/Y U0.; gV{ingkiEt Thnh  ݗR~$@@<Q3ݺ@͆]+%ԽTz@kOmڹ1jMxc-GW m[]]0q rӟ11޾{W{vp+<0Bls_B!g7m7Mv FӉ "VrIs gE:xixͩ}&Xc*@cvJ3~wir|V⬊{U?D$GO+}]1 6x`^MWјhN+K>;wȡ=XkW?,\$S8NW%O3O&ZqCـibzO*n!C{-+1mc~Sٍ i/c= 2#uJp&Aϰx LUH}fgWgݺĊ C=.o2Yj7rnh3.;; 9(B.gV9>Z}9})Hm4= O?MW}q{Lwxu}&Y<OB{,bwܻgͭ{j%>R}/[_d$1\)D HiPx c.Vʤ(`W{eb@[;5:G )@/2{={ Oǝ.ʀrϠdHrLfN|ޥV$$/hcx@RQOjPO=[Y{3^ޙԀ_hĀ8lH8 ).#Z^}˗U}@qI<5q>[װ9cͺ_>'nHn2#T1<#bF.TCs>ygAA{D}۲/e>ps gBG4sWc{#PERD*x潟S1@:x6g~Z3޾ikeK>3 k `z &}dt'b{άmtznalÜz Ll%_6$bSo?xBaˮfTgG9<2@H ~z73Cm#Y"Y@ӗ+\rsqZ4f{\8 nro{R蟒z6=}~[qh <8NΎ}oiD|zqJw\Ʊ elvL2H2^.sk}([ۇM~ kv=/ S>}Og' m@OYjlʀ J#4/u_e/s?"woYvH~L;h0Q*B7;_g(s>|gs}WLpbvulľSCJ[;TCkM#r5S0ׇ:9?$:A:>+U:_'ci3!.9sCcT__xo&9[qw%|g ޾%~;1K^5o΀dagr!"tx9XgX~SoHj=9#Gw*_弽}@#}q^m1o_DžKg={p0x|ǼrbDs/k,Nڤ%E˺@A(W=}SK ]6*g\B $+B>6G$=)sn,NIjz)]?N9\O9%=ٮ2(jpT~=Mf99޼GzMPPpwǓ sn,NHzm?P8 5>SkI_xIiZw*6[<@$=!TRi nΏ±4tbPv={J$ N<ñkttuzXX]׽Mm|,i9vXqKvub _B|r>6= ~D6xw;X̂H/7x lϡV)Voj>tI/\dpuF}V/A+ë]9/?va01 N=o#+qH8ܜ= ?hwky7 ow&4hd\lO-Q}ވWH~3|cXËdyRcmLqW=R,(OJ@ ]PNz~ nϡz"w7\dQPLem鷘R>Lwh#S>_msiw!=r>b9d勒|x@Jy_']Yrv34}|k;  L{[~NoѦX<ZnV}6< Eb5XՃ/DlМ(e>{9.`=7|ΐ8P+0QH RRQɽs"VLV* a[ײ@πt0 -=~qϾs.Pj&<؈oB ծDã{=}x"xϩxXP)HH!DP3n>*Hku5'b&5 ~ٜiR^}Qc- Ѐֱ?As.mq$^ DF\kG<} bCsONyȂbأט,,U$yG$yX fL:[;,_ӐgV$L{?Egz~%Z[:46xrZSjhzom3<?Ck(ٚHc"߫*{Wl !8{Mƞ W7ɸ{%g^%vRc־9 |ktRdl ]vU*Y󍨞{=އMs&DRg轟ܜfjйd1yO[@G(Z4W대¼h7!"OX:|0H1O_h)l=oNWjwe݆ڕ¢!2J#] TDw^R#5q6,e%s}&{imqUn撧jmB R:[r}WCԩ٤*Xٍ:׍Jn*min,f] oY2QsTU4MP$!F6=v;3A/QTAcmK[xC.쵀^w.uݞZ߫woF.ّSgUl\Rkh' =ckY-ʐ=J/K~HR@ZKa%dtiryfϹ Ɍk7j&=M9?Hr@ ~OSр 4ˇ3XuNRCzNlϯQճf(uZ]$[wsրژ~δ1vV@rZ`}r}KzkNrF Fo?u|(NMG7*P[fM{" և kу<^>]^}_wZ[cf?4{;W(q&Da{΃(a_Ƙtr۟v 4:(({,-]|e?E~Id] <X^(ϝqx=6{~@ -+[Ag U~+yF! ś<ن`/uS6Zz3 ^;]SʈH0A>nm1I%ϡo?i* eâ>p*+XL m(5 P|N1ץI>&@br]s$'>w'̀- t~% @y/)m 998 \l~G[{(տ;ƢA]Ώ\) Y=@cğLTts[.89S3콢!8k"|w;;n%B=Q5*&`\ٌwhz<NXϘĭh-$'1d<-W ycxD3]=O٠y*P 4p"L]юv2DzNfau65l$c4^ntEAYl%cMц   kHhhjMA %@ a 'tnvt۵G]/ Jj*Ȟ ӧ,}@l 65- k.EOEJ*TSRۀPpGAlx=~la6*Jo,P@Cc.Jn+xn qܵ l3jHaP " Gl[=TH@> NevFv<1Ff?cɎ;jh i4vr@elTz=][gsr=LHg0 ^:V6}648қChmI xX-K%hX,`Tk-Hfѿ{@'Pz :XEjF;@oHL@(P @@E 1HvZv3Erׯa7*P.5dpy<O'ٌ*@@ * ΁J @pڀ6x90 t9d<,(s-(ӏ@91 d'H1p2 ?1`/j "Y1,IX?V 1Q !ART"02@Uaq#3P`BSbr4s$5CDcdp%?|Fb͖VpΑc͈.Nz8My-PG5uK}:%?utpݭ(4w)XZpЦ9b*(z/0 e5GOUnu(ȾQJspzȦEka@8CҰy@[gت ҡC*je9(?'IeQ0 @2.ТPo?˶Byr\ PRYR#0ò0-Z*uy.jZ9OmBC zGQ@@jv'2,9:;*ud2IFM3\lZ@ΜQ1J9,&條ޒje5t^`@ln:Eb;v^Nl"9*cijZt_(2uњA&ù[RΕ&%XVzƔ2e¦‡Rۍ:*mpwr|_Y*gn@)|9 .f,UWJ>xd<Cf#0\alJֆ \%12VJBjH=c-C I5vËg7`s(NOL t94lm!( 7 h7mVؗpĕQz<ʡk+pd/ަzA<Ƈ& rU?,=̞d^^wbg~|!5 v"2c*nflfo19 p9G4Blg|%SMYqjBw@{9uv\[ikV*gnڍy u{d,Ca!)oRΪ"@7G5F8m6^{I Yrl;NQmyfšOrоL6} 2cz1>7yS΅sEZX )tqݒYeKVV{SvzN_쓈h1ɃsX>oqXo@ @J@  `I<v%d~T+dF;@%jy[b?a9y5 fޕsPjioIRrUݹoWϚź%/p(*QM_XKma)wGoqgFdB3cQJmi BJAXƫlia~; ֚r}yֱ͉̯Gv]\Ts}JJdV Og}{lŖ*iƶ$x {Ux#q=6h M6i@Б2 h@3S9wz~fj'p:hCR5&:Ì+X>@#kY̨Um>lƑi} `8.xnYm߯ +uENy:C8FHJGe&Č/~ UZ龄.8] rwغثgbkք!`) WY?yY_~ӊ־+v:98Akk6|&S1,!&N vZ7є@)zҞaaM9-o؝O][.P%9w'"ŗa-J$p8;BaKW25t"22tfTخBiv\֕~2!C Dq|;k2^o+zjU{&V+X|+tO8}|ÍyŶkV=H W%ۄWb yB@'D7M$=3e,6)*YQ}zxr[["zt֢EI[Ψ%"ma1WM\獲YIU[5į/1C"3^2#52^\* MQl#_i0Mpf9)_-7 ll0:׫ᵱ1'^1F6{Ǡ lNs.Ojm '_,_"XVs, IJA)5j1t1:)ͧ5\e+q%;9/:i R H$j24Y}bA`$9I&whZ>T @ J@ >9o}(ؙSo N83Rk&Q QӡydKfxa禿$]27#^X 4 HzV ""L'P km43'3REjdvAZAm|3Σ[b_ @\2*|Co[TN5 Bߧ.Rtx;Ăf)`:Nig٭TI'2I:LA GMxsK˭ZM0} BRb vVsSm%$@(FFzXkΉ O*m+NG' @D_}uۭ݀|C C/'#N¸YC X ًݡ,xBǐypfq[9!Y}hm4|W-D eG ķo׷ȃⴎ9ԸR!<%ATN°O+( j)7+TdqXnhw} !ޚYgfj7>AR>K*Nu+M(@O`"OZx$U6X#8-49U1DL</tfM[6Gaf~ ݁B\223w+cFlĕY ^+^Gܾ̾+3C~9zx]A~{jJ鍓]ǫUMQ顲k>_W2/&Ds_Ȟ{(lկw "\_V=J׻⿉}Z|W2/^%kCd{+ ?CdAsdغY<{V"w ޝɈ̷[nMu,,ZƁ'ba(3bSVZVd njk:vCqk24XyŻs1Ϻ(:x]aCԃΚZ%/9;V!y-o7ϖ>{.O;bV #:K/&C㮨k:I4.}XA[(%)I:+ ٚZUίs[Vwƶ-L5a :\I IQi462{T}ɯ޵Gܚf2ͥ%ZTۋmi!H$tahjt[2^,WLMR57ꭽѸh4*̍fbE ZZȫj2nIxRzӘٙ{^@ROWtq8$ 9 cDo^pcf?UliayhځFJ voX2'%'ѽb9S*7xRbI  ڸS9qyX.Y/ NcKGMf|&eX[/ -|8x#7ls`IfSjZ,-.ܫ#|Ŗ}*[1SX>;~>nB=i[j J q*}h"Oټ6fε/"Ţ*b1k嵱\nF3r\Fvv6owz ^CE뿰%HԅskbC>l:J+>Fsbh~|10Mw? ۘ[YdCMgz4=owbj@ZpE+XFCf!MRyq3%ڜcf5@[łƷG 6)DD(NV/ܧ(:EZ-ڭB2m9"qd *o;5F<'7|_ACAq]-PP*(ZuM:\Kh!IP~E$>J?!^";/8}d~ύR7x=y.d/c5;ku=RfB\7s_V+7;3tx(iO5^Vdkq>YKqՄ!J:˿x'R67<(M<-1# &o56??#]vмG譬MO$?) J\>ptU"MۀI^Pصե+8>an'3-"Hdžr=N !x+-|i!) <}m,v5ޛv"HyBeE_I;[>/7 \YrZRe-ZV&KpJPmu'5lY,O+{ֳobQ֮lPP.tJ{8 kMKH5#ݘƒ+ִ+[,Rf3tZ>Vvfg~s2B:j:NKQR2y-@JFuVej6㼽j[,7u)coc6HWƖ{43kcOƲ AU{˓̨(~Ƭ6.y'ޱBuC())*<5/[j٬\@Wd\Eyˆ{;[wo,{U|mXs$ԫoڳH)>bQI^xOI^QfkRPFdjǛ#$ [Zi!)6Aijr6/2Pr+$U-SRr]uv\Y)X\KҴ'|ѐkb 9_ #Fi >ϥO6D^/)ysՆ&N[Hj$faj4t2BR<OA+o 5aj5Fl'ss9#6N^FwIV^E{A Bd6.H{V)tnIȈ~Uq{GȠ<=s%7KkE*˄.)C݊ @m!p)4Ʊ(eUl:V(e-~fpg3ܟ͔(OJYIRϰV!?|?9 96Be2P ^'>S7RR{6L36Ҟíax`5GMmӉ Bp+oVIXoIZ \wqlºD[=E@q4ҜuiBʥ(cDsQ%[ۖͮlXB=o_3>_>OeLE,q I'kX<+vrQH:kWᛚ?N=ԧH@"/GyC5kbE(\_;X-w;>BJgX7.d?-+_R':dp[tN=*s}o߮Y~ǭf_n}o߮Y~ǭf_n}o߮IBy+yE}Ϯ}+7zH[`apb? taFRŝ'3gdb,'ei}^#ֺy}o:%JQI15yU͞&4 ft|oMZ{Aئ؞nsؚSwez)e mE*IQ=SR#J BƐEa7#3[9漎T2S-@bn݊q=\7Vg+خbnpWՙ q?v+ء0ड)@FacQ_ٜ"OII J9$i5qp ~lk`"xdԍ~][gJE`gٻWb*XG"D[Xxy&)'JNT#ݝM =P3 F>wNs M*qV' Ǯ;M_-ix9ZEF+ QCĜt4+RŔX?vOb^Reֆkؕ}tEk}~m҄$%)$ /}oyIpkcxK ?^\vev; iԔV";e TVO1#ߤL^ڏHxPywtAbYnB#y/v:k-[hZp-R@EYoϱ/~RsU|~Bvbh~|5ȞuM\?r?6Zo<iPJ@I+cE__17'k;M%=1^$ SDH V✝eY9E=6Ot,rδe۴iP &b)n8x6LJR 7)m7?o\ zyDբR̎䕍~Jb%+O}xLQ8<{ϕWR5|ڏ8Z>mI6#7{C=󝭍,o2vAoq垘A[kքv;#X8urwRW\#eWI9{E[0hHҵsX]oc<E[+S2dN+F#[{&b:Cбj6M\Yֲqu BrRT2  ) e{6ܤu1 ϫs${{J(s^㑬9+.'WE1V3ҫ0]\E\us /[XjO% گe9}EĘfݿmy9/Ky2t j9˄<4!JY v+G& {6$P_o$c+Ѿb7䃜t|X,րds']l<>.9%%ܹ[7e#Z#~$- B@LO񭏱^nhcKCgHXgkG$ aou bMg6, ]~zdd^UZ3۷цzPU;̈́ }{O@J~zOxY58.woW~_7k<+|3%z ~TFOMk<$fQYn2C\lfVѮ1*WA AX[623<Նl M0e 4АhV/ňeF"r`wFܢ9Z"cKTd'm)yˈSMBORE_{!u6>WBT RZmj=1[۫m}W775#m 2Wx~#nkPڕ6>@^3 ?CxQSl#7GD% vٝ⌥8kL„+i(ԇbS \6 [ٵۘd󓷲2A^Ua&YkF)Wa΅ qb6[ؓ4DY!ؒHdE||֔6VH$&[d\V/no'Ry'›^u[ԑ_Ti(u?ʠi(u4 .䶝+iCm`qz }SCдK6^7*ۇm Mg5|O *_9W0l>>~P5]`nHݓ4v ե؎T4Vأv PY߲uZX[kHRT4t'e{adyϝß{˔QNd?M)C_5xw; {(XB;⍒Urt_ÖiƎN6JN[Y͝+4Ro~1BަCk6E>3o+/Tj)ZTBk _ZZ`I@jVq^c'KFVo\f_M]2gwfCU4 T{$~ɱ_7qS[\$RZ VN*]'y^쩰_Ne̴KN\'?Rf M^K7Em[* e0^C /{~ƙxyzfbUm=d>|~9W˜9_.pO9PƸs=PX{h.*ъObn|z/~Rؽk_)l^߯/Z[b-ֱ{XOc^|z/~Rؽk_)l^߯/Zʋ#wE֑HQcn|z/~Sؽi_)^ߡ~߯vOZCYk^zߦh?Q׆%b˻Aޣ#fj"r./-ϡ!(k9u4+! mĔ'@q7,wu^ZtGbOU;ER !Q&Hb?Tɯ2+#L!S&Hb?Tɯ2+#L!S&Hb?Tɯ2+#L!S&Hb?Tɯ2(a G5CM #Q&G/Tɯ2k#L!S&~~Ğw z`ܹͪ( a;P9 ӫ i5;Qbi#6-o}—!Zؽu}9Jn>bIA ŠB<@@VKmj@ϜQD2a'=raEO>4?]>ñ-R<NX~/.S~{cˇ&͵$Pashe,#1X/Rb8IQ  Xi Sznbq.9C0~JDly4V o8=$ %%;|03"3IQ5nraJI:(qT2?1[\ 8YG\x<~ ;{Ö::3>m IJ R9C6Σ#MLϓ-[hI$x!ڱqc?ӝOpˉqDUr4jP(A(3?4);b $#4SxvDopF}GA82إms^Ca&1Cw@܅ v:H}Ǝm I f?‡x,[n:NQ;NNkYa.FhOpx<7_zleS.bfxpDh6:j5"Kw%ոH~Vj50b7H[>0'9j}y!b D@tSIP'if?iϽ|ڸ ƌWQ$f#1V-IhA9yDdFn*\BiFWRdTA \'@}R72ў =eOsx$;̴Ơ ht^r] tdM_;q_+_s_;_s_+_s_+_s_+_s_+_s_;_s_;_sCd+_sCص`qRF4_31 :5%Q+YbMGK-b [k>}_72:떞}u ZU/ߋ:jMLM[:PߊtSVLe>aξwg0YjaSm Ia;j|%{tp476mƏu֜ޝJPJTV| V_s  Bs;tbT|52KjWI1nsW{ycs竫[R?Rwwhh?:*X8CSmҡR79 .+j7g[!mt)'#VQb=eNϖ%\<\BXBT5 xIPa:[!xkkUu-y̮ $~f<5>kd9xnoȿt;YJ$MP[umJAspޤ"#0u=H*`eO ԀsyCR[[+BU V䟍 VkB ^fHjS yntVyW I,st-  >.yOuMz{珸s$y3)/3vV`8d<Ɍ`)Qu~`mޮF˷D&deg{a :d-݂`;+W*aIPaéߢޮFE"qO:]QZץD퓒Ir,PXY[9ySQd-ah#۵ٛj2't2S)留?C0k45ҺcS/7M8'm[i%N)ɩ3E;*l]9 TX?;#7(n,F  B < ,6 2wX ?@̌In;YN_^5‹hc+|?IUZ\Zt?>́j/6 &T3[{ l[DZe/&e:lQfG94 7(=mi>q!ZEeQv;+(PndtTYlJFǦλC뀫SWG)7ڣJ%DNdObwRII!*H"_uC2Fu4 BikCmn(%)TrV( Vŝh/T˔.)ǝVkW)'+k#(׭Ib!fKy@|9$6r_D9jÖ?-I)L k9Q}ӥfYZF:k653Xz~spa>5"ufNpW՚ :]\'Vk+DwpY5"ufNpW՚ :]\'Vk+DwpY5"ufNpW՚ :]\'Vk+DwpYC@pEt(P [ A\'Vk+Cwp}Y5!f>pW՚ ]\Vk+Cwp}Y5!f>pW՚ ]\Vk+Cwp}Y5!f>pW՚ ]\Vk+Cwp}Y5!f>pW՚ 1:][/j5 pWuf5"ufNpP|_ņ3@j~iV՚KYKH mJ2y i8"ܵP ObȥB*3 RJbYoҥ4*ɠ@ hAX&dJaH|n{\Uk+]^՚ t>pWf5}YCwx:Vk+]^՚ t>pWf5}YCwx:Vk=0"zszI<<`Pf()\ࡶ368;[ q=9ִvCY_ D^T._[dVJNؕ2[l{a5%dq\y-gI'jX(E)yv2;RmaƚzaG+ƿޙ1℆< J9-+ 9,:y2lm`+hlsd,7lńkKAyK %d 1wic9- uU-*Bԅ$F/JFS.J mi J~@m5j5 lny6kz:{M>0}r`0P^W0j텯v|i^bA?Q`s% %D9.NI Ws3ڪ7}Lvm4d>iC0\djڅƤvpg_jkeh?j4xp it5}<ߋ f ZcI~*me|YNy4!.3m:k÷[޼;w+Ul2c|¼MD.&i-8QeJ³)ji 6+'.Ʒ~7wwCb[_5ivq ڊtVC`4?.ӽkZrV7"W!HBe]_ m/NCiE4ya R7 M/,ކ&_|k;URGC݄s*Ӎ*mr^rR$* txLa !GFIL١u*ۃVak^FrkOwGXE}n\,`6N${VG~>iG kZc K=q9Ɇ }Jw_tWBt> :?x)in.CA(IRq]&s59 ObK$Rߵ+D2t !rt PjRBig7!M?RY[ %$Y ;V7!׏ѕ;ryM砥Ai8Fkym> yf;tmБSÐ/?~ 2-4Bj9LiNk2Yi#W+ s4q>h*1Ehk<|V=ʤΘ6Sxi7ktJ_ǖ}s\t4(ugB [a\\FgSh̪&FP@s`Dˍa"s@Ql)Y, kGQ{% U,- ϋd{;?_!h76$%E!*DjFٜEq/v4{US'W%%~om\SncJT2""jj+t9*49E}m/ZEA79$IOuUdr? hA]݆|+FY"/32{—&8FC!)=XW!]L6, 0q4BFdbK[$jZ*/D{pcdӓ{rS58ik454=V\[d`tdYRZBPRO s V{AUr&0'O~\+,Iw{ 9gyT\%olxEF.\3Ma#?!s>lUNkoWYe;k'$+_x]L"}_}$ndz=ƮZTb\Luy4H*ez|sΘjCUYP_FXanldIHJC:3*>*l_7$Ri/fꝎ+aROtnzJ~#c$Dž/.=#&4}4p~1.Wt/x^FxGIKa֤d)%R@{}Є>O J߭esS/JVBURfAiC 3Ng:Iw̐Eer$64rr:]I-v'#7_$u䜎|5QtӘVJ[%/6 $CXf_% 9!V^NZ'S4RIEnZnծծkZ|VVk|V[ UVBӨPp[k|o٭tGG4|oQ5'Q>>[c]ok|Mo5Fݣ]nѮh[FYt/.3ui)M|I=Xz"NHϔ.Y=А9T3#I4)-ͺKAРELs?\F67&53sQϐW/vݩݪ*54P}Rϟ"GٴTBFHHBFe{Y!'jW>{Vo8?Na}&;RqBF|5{IE^+BO~3-}>bnHWE_B=\F3PH?1 !0A@PR2Q`"3q#$apBc?.j.Z ? ;{ODgr.%ou}rރB NrEīv@ܓj~)kBi#sW+d??PNH{{%sS&k}..=Ž2r 8 J .7Ӵ;_?"I+zM{suZH?=%9l[aQ S)ۮ,mL8c5= Q/pI&.ŧ뱻nC4/&)#e4=,-h*H78]I09o>؍z/ RI=i:I.|q$ѻUZLޭZ՟$;<2?6 I ʷ`8i:޹9.H,?VC*y%b&it 籠MUrz&RKcrM<eHi]4Gfv4Nm _ 33~c.?'}b\-9]gu ǣgRi`{Gb0rT󊘃ۑ@vv kg;s CrZm}Fٵ ok2_[=0rS?rDdeQ^Nͩ,vKEWu$eo}ϱ7@\hjz:˚cS]v"Fv_T$?ЯI zwV? ەrUƲbF\t5-qZb*LJ39wd!kv!t~_qܞq==T"pz4I&J@3t9cnkBU_Q03# KMRsPfE1V0(co'u&VKJ 1S<KGn7 '0QςwktC j$K7OH8 0_7E ic+n7My];kl8+]iJG 3w$7)}vtA蝑Wn;|3W:RQ|G%) O檨mOy^f}׳o}׳o}׳o}׳o}׳}q?/^?^Ϳ^Ϳ^Ϳ^Ϳ^f}_TZ2=W.i´Yn`6Xo H*_d2-Y! Ҫ]wvFrZFKtE0^mQBKuLyLymy="|ݹ,ͭek:3z&R*byAVYo48pauڇˎ8=ӕşۏYV7DU{: !ǯm,%i]3ݞE=؉:5n )|9{mP4g&4vrv {9*j$s-1]֦=z:qB*vR¡P#g}-bƦL#!FoNӯK Z`vGU1W6ǣN GJk V4992P7-ni&6x,މ4=h "I<9lL/vAU:S#}6M:mhJPΉل$~{T{#sUuRf-קP:a G #ӵ &:کij]/*ZM {y(&l1JCfqmW @[_׃@]߲_o2h>H mZ#O]Yd8vkIuHcu܍rxO`]1T5B6^֗-#Xj/oF5l+Siݶ ]"ߘjg=98/~KIVuˆ\^^}mhzK6Cd Zvuvv i W88[ih--T:s:m3z@Yh*QBxlM'GO!3Д 0 ܪ"a#r{ @Ncw%zܹ*M y䧔!yZ7I;[0rT ~Jm=^C'%UᦌOyyz;M|SˋtmGC+5rq4i (eUT¢DUM$pCfE,W~e ܇Uᐲa߉Nj֌+ ֋p\5 n`va"Wຼux+]^? WWº^ux+B#X̂l!NC}#c*^x5fJѵl\`9p5pϚo,8u}_dPz+rt#Tgy],SL;y)zB@_ϒ{\|zS6:oFxJ¢e\!;S bqF+Y[Uʊk=px;d`mܴa.J>v:6|xZ"K@(+8}ᨛ T8˦too?⢜gvnCTȫwGq =BYJZ 3~a\c1r `Nyy}coIvږDerS)/9à_Z}K9H-@HܐJM#lbܺ[*U 06@3*I1!ǥu {o;'V5 ʼn[buק:[]]t{6CvPJ݁˸EKKVuj{s9v( {5?ʨ~#&zwSIevYi^%hnl>hJ 0H| Slõ<'PM\FVZbT,jm,"&G֝l/6-Gթ?3՝jk7 BaOr;4@Rڈļx޹jp,7=.79vY *C{Y5RsW`9bi x0{ MVxM@SFAWt2tNȦŧo=ςς߂FC>Sܓ:lډv-h}$צcf'O16=Kd:upUε;H7 Cup KOWY]ЦЯI v\)%ߑm!3 MCy_EBdfi󓖼yj/)n룲(ϹAS3۲lK!hj ,ȷ5hN!4NوrNyv$ʂ3Mprˊ\5#9(Pᜓ8W&˕Njfw-Va(pl쭲symJɃK<tyD0 F,熋$.;m8nd'bE>J_|/1n0Xw<eiy+nZt.dvMNZߣǰP2@m{X+ꆌs{ߘua8Qܷot.PqN}i'}њY0tKdBFyp+{ 6Mhh[Á!>`V+I0gK=mEU7vi<gSӶ")=w"ĽĽA7g+Bz{=PWB~zoG2hcr؆2s\:cnNpjuMO3LˉPVOfupo4\֣;LýMgJ(Ϻޑ pY/wzޅk4@Dk,GU9S&c%] f )q}e=ZVk%c{kV[4ú{ETtzˋ<8r@jOf4r[]2 +-eݳEw#2Ɔ çmu g>쓢-Dj& ` @Nh0n[y56aa౽!,Qˋq줦NaoɵMuXyc ͓5[m ,;mEkYh}qJSES:cE>GrkCE Eu9".S`.5boA!*w[M ,=W@8D3&| UC&:yW[ Q3=^42݂۸94C-C#20ܕK(qis:2i I}22p\,x8DۊeeU6m]#H,{9>l)9&@96%7ť̡ wq73]_]ʹ[n ]b+XV"Eb+XV"Eb+XV"Eb+XV"Eb͚%7Nae55Ə'DI߃DAk e5hP=@-SPEJXhբ;8ËUv5ThGkM gn}c `6GR9(]rk9ץMfdf7vjfj,/$Wn)TOMƜUw lqW7RVYZ6y'jtCaoL=UAZ+3O$+,ͫ@yTmRxClTNEEFNl~?~*:ѷI6ޜpTva6SQecq;@zSMSu^[#O7h:!cf;0# jW)쩚ڃz'5d6hwQU?o&Y=~dyq;F(Nn.xD,vO Bj>bUc4!7<F-$ 9&g7PH7=^%i7hrpӎ A|֗YxCˣr=Q`X§&y%I1*z8# PӤWkp佡 覈!ax clbw訰r(l{^Ng$U~CG^>^!Z>KkácScXjY5cXbƳVjYf՘miE= h0_㢢ch bYk-e7l N0ߗYD<& kSw\t lMCerJN7wvUBpR䉻"9F[3r*pB䎻Y SwdMpG~Sۅ[czI!&&4W mN=[0o<[c8'rFƄ7e7] ze df9>&]@RSFQЫ鵳V~?nNۖ3?=]d9Pzd>>sDy% a@N t?%8ԓu-#]w^q86<13BOYjp8$1<8&nL OriC)~v2V*׏EzK89ãX*jǡpNAA (ZYjSe+U#:µxz#jo<{M9r߇7M 1U8QU#nFDº8bBRYƳ,Ab X kX kƪB ,mXرSp'(HEWxE.Vl8|ډ$&ꆊAI)ĠKBſ|\>uLuaٍUWmB\Wq\WqUU\WqUUUU\Wq\W@֓97Y7xY:`yz ji:n&öSZ9CthU,o]|ZEhM*=EU4U܊'J-V{e*+406eC8ž. HP.4 iEO &(EiJulǸ≥5By2Wڜ}D8Nh= 7ܛ+3Th4.V; ,̠T,Co أ3Vg~r?(.F2 8E# U%Vq -˻dG~7?GMP/48zQ946Jy#-{]S1ݳ'@<|TqBn+[w2c5/FT*vu,{Ul}Wċ1fŚbY1f,Ś58^V_Fh7.˾ =ȠcF 5AcNXԩ ^Oיr<:2|%1؂': VSs cHD1UwY EFUTENmk{[pۯF])e*;_D# *"!:]3mjUW"]q$v즇D4.#Vp#|C}? ous:uݖ7)OKJDǦ. ?\4 1}<mo0-/Sڛff3+DHdv1~]69/iiYo?E +GxW4q<.%ZmNxmr>|(U;1Z&Gv:M7l#1vDhrm?UqBZ ߓ $~_Kykjm6dM4F-n@vڤw?G^m#`)G+&n(R5mGe|Jy;\r#V=J(,o #Dd*{Cq*{LUrGeۛ{&W49pc.RZ?[xkvͶq\lj5Ŧ^i ~A>G?9Ǜ{#a{G.]+dwҟX/pr}{/t-}E$GEm/M?:AsÎ| ]vg7lvqY<(= yEf4M[I5ɺsoϰoAt"?N9on&$Us=ٸ QZ.'J U~ <:o8Pa1G0ܡX]eY{~a{$ 9/cN 0tn}]MXh N].}U ĭ7DC}l]yEnhdefӠX"X"_*,nX܅Z19^\lS;,vYL척e3ge)S;,vYL척e3ge)S;,vYL척e3ge)WFcccccccccccccccccccccccccccccclXYŖŕʍeFYQL}L}L}L}S;,vB&,1uF0lEmc[L}L}L}L}L}L}L}L}L}L}L}L}L}L}L}L}P*,+ U7_Yee0e+ V6:![T#T_QQS|&|@K19BL))0*ynԴW`STtYiN({VjNuP<%+5{-9oC‡UǑUTTe,cOT1䖢?plugins/limit-login-attempts-reloaded/assets/img/llar-video-2.jpg000064400000146204147176754540021075 0ustar00JFIFC    %!'&$!$#).;2),8,#$3F48=?BCB(1HMH@M;AB?C  ?*$*?????????????????????????????????????????????????? f@C:l2w 4zPٿD 9~6nPf3" s7YN2" Y[[=q1 9d. KB*2ܵ'Z]cj"@yM6)N\hHP&/"@ 齢@\f[B @c3'qpD)1bLP"^ s nWtY |@ eX@)D9doX2wZehY) P-LH\K+"b9Jxz-%zT.@yGTLs \iDnZ&/ S%.-eS&%stgeZtL1!J@'+AnR-¡Xs `񓸸I)DY6􋖳D=")H=8-E6\arظ"s ]_1g bĵ/J3 @ gW+hZK BrJe2ԦV.ʀ&''9ndʵԵ/ȀygW)hfV$'. @8MNL[p@&''2.)HO$[bJHY\"S(l@B9nd{Ym(J)h["N@KBjJR. brprzśi֘ ['|' D[rbr`HZ)@"T/ 幐3'qD,x@ @@(RBR,ʅ998[K+}J,H^$IJ%zU% 8vU*r fU"LH[ rR+9ndϮ*@ BԨz (BH%p2WIFҀĸͱhL^6< @"ND199@-̀tfzuuO. %rlPDY0&''P2`񓸸I-+j(ʥTDG }T*$Js %ە>#p@X)@.r 'p  s g[sm=:KrpRHV*)Ps q&{# +9nd Ԑl#@.2uH6@"" D H @9nd Ԑl#X&UcmʟA1>ԫ6uݦ{ֶt.>ZQS$33īȸϷMAs,=li|Y1^26MeǩS8&askƛ^hn]ScmoAH:oASM֖$YYuƜl=.[ucr3<>s{}U}n<靽Q}CljZ+o/)uUs880 >[TgUXky_eKKAǒc][T:ZYN h(r ) sש G9q978UsG75֦eBgU{S<6w5':{mz@ܴB4ea<[i+鵚ޓqP, ʣƑzyQ>7ujJfT=CuU#aԍ:gmU3u0G>_:~vVPc2zV4uڕ7gH^cb[mʦs¦kj~\Svz7~n ?Aŝm0!bfl"@NUBB1̀!z s+ʗzzLW4{o]UsGpELso WOyljOK4u#> ]h?E嶅5i O^ySq¶ƤWg^`7鳪.A:zUmÃc*+yU[Mͦ4G;BX[Tlvu}TƭƥC>i 1HfS\{\i;sgӕ6z|N\ mmOVYa;xr"i?(Gv1&fCNȪ̜A$$ @9d Ԑl#Xt;ևb+uU[,|q ]h?E嶅5iN^QsWK Myljn1٦?AˮƤ޴>TPvo|m󾦶,>]n6γ'nS>^ZWtS·zz-Oo'mIuEVYc3aYmw_e,edY}O"dqgA\}^%axQz \BBPcC:$"V5.'.clBenb3p Sm9*.ڎ;}OnZymMuDߞ_2?gңvP=weQˉ5qқMgk^Xu1voz /# YA—, uM>[!(]aU2H=~x;;;:b+ANY_t?mIL)*6o>3g099\I)6{fVdѧJ5*Ǯ; JUwӖl0)651>k mU}϶Q~"Iq4x1dy{p*?S^hؤ.|;搬cipL@lD幐3RAr%as A30%kjgdKCc\6M̥" `rdIE)LND%,HNN-̀!z s.'bW|^~=}0Avll:ŗn4.uִ4weWUbl'Yx ߧ7>~gPf-%2V*幐3RAr%c[Yss3I;s>y^i^yVykkZmwۖ^.|ҧ);i_y8A6I~ cO*sFt m}>_nl; o k+ssϦ56&ͧ͐͠!))Y tV''幐3RAr%c[YS oJOn݆*/Oulg]Tq!.U]Rm;ܒ4]oEKfWkJW_?cW]4Χ¦K]A-6ےL2ރ{Gz/s$s`Zʤ[C:$"V5.cY•Klzێ~FVgoy2ckJ~->zk*lƫxP]mkLƵuϙMIp9֫ߪ$7~{jS_a1eg>ذm7=Ysnնn/Q5ifR$'*2!HH[C:$"V5.:mlPls(V>֟ߪmaO-*m6t^zN&T17|mkS~ocRbj;=)o 5w>.ޞ:{/ص:^ID& ۠B19L+幐AYl Ԑl#Xֶt2S]RmZk̶%?O#UJqϫt}\_5]R\D}Swnn-;k).;il{>>YYٹ=$q=+M~ :ڟُ"8ΪՖVIfFuVyasDz//×p)}<2SMn;h5[Nn:/AqJ3c85'7H)ERbD@ c&צWL\]9rDOlש G9JzrϡZb`xp-0i|#&B0.- ??~,%*ma3k)OgrdqIJ\>Da.-pIRm{ 8@@P s c^ad`ƶiΓ+G^uH6D0gIf fl%jll%#rc2bC"Ykl%E2k665ilZ"W.ͨe "@NU[0o&L^-3RAr"W[C:3Ɲ2v˹vtdDνI9ȱ0i鞙l`y+ F=C0+2#\25@x)f & HY9d kQfŸgi1qrxɱH` r zl~} 2cb9\tdΐαd0ηu(P+IɉJ 9dçbίv(gt{Ek0'* @BBܘ3̀!wys gMǾmw47xKzC:l2w/ 6b -\@9dèM晑6okFVzDl[0rۤbΉdQ*ay9(S^Y"c]9g\i ~fezI21cKc1 1;Fw ˮ*3u˾+lhqltyM61* ɉ9nd_7%9wb{iϲbxjzś֐f~~Wn>Ly=\Ds g0LiVCKXknC:l.2w 4c C:=yyujYwWvbbp! gMnkZ hq::%@n8Xm/:nUm:sgӝN~Y>> ɉS)9d"A&c3 ѥzog`~y6}yڴ9Hvubbpd3̀tke?rFG 2 XxWM rbpd@J4i,k>؎DS) /L!7Yfi̱fٯ.H-,@2!T&V  !1A"2QTq 045@BRSars#36P`bCDc%d$ptU&?cfu9s:*8F=LZWkOs*:kwc0@U{5tP/RD%jNk2oi^(-)RNE ?T*rpŸBk͓U\:7N\;i_/Z(i@yEv \@]n.ea*MZW9i~wRTMܩCeG*RFh ͹H \[3 JJa t!IU $ =\} 6r$Йrk2zRAL{&W48Qx`kM˺waRiE@KE>q,ܧ! s~?Ӎ>;E(- P̬ L8c)J慺)M Gʮ/c"#Q%9!"ӓ.\HNU9Djb JFӥ9dHzLdiyEvl *)'Hj-Jj=+C;(S H*+5fTT%2BJwr>ޘ`td@b\pISv9KE۷).a"sev+R4c9D<ήSJe݄$$!K jRE)D"NkjuU$&H BUJWSu$^.ܢ.-浻@m#Gܞ[3 gm9_4֪/dV؎S.j{A%DptƱqiDWc4^܊r5Yn/ Mx!n6ɓ<R3wVoi)J@zcSͦjFp2_R$溵IEevwkuJm%I'82¬e:>Ieg|v%I̡X0 @":R2˗ruW!qZANPI)a HBnpܸgbIL԰c . !zJTUEh@,ЖP)QyIz:g?[2SwTJJvb %7 ͥE%YFՔ/l/eˢVTnK9sx)UQgO`e:"hBAel[%;m0ÈIQ'`31򄪥WPfu0$P ;4~ 鵊wrɖuH!9(tFNU40ړB6JOJIۻ*E)h fE2oRZS.53BdV 93LW/Сk+P9`%Ĕ,TnBupE9|Q4f^HZ_m%ʀ6C^')nܽ mP!Td*NSO ݬL>dmvv((wLك!3έ_>2җ^Nnr{L0ԲAUj E|_#-U&6 BD6h5&RN,6]=?))4EIt9tΘq匛\%lᧆD]0g$2Ӎ<@9DS-U͛4nT7XN]t!ex"2ITr-[: Lj/W!3VMNkB܅^l R`R{`qT7@ @ sM魁Al٣V2A ǴNMJ*NՍD$\MԼc.a I%bG37'1ٹSo\ UR`%Uq (kD]݋IsÊH-M7#R%9rTe64t ip|N4{EXZPFjভ s5`{6US.|g"]xa %"Px ))E`-t{%2f!>a) WwL#QsP8هe/# ^U)'-Is>- Z֪QxWb3Fq¥l]FDs?-3LYuQ'/(G>- Rk[CeSDMۓ/dc3WZ%U:7Hjuy;FLRTpg- ӏj @Vy蔪]ϋG|G=V̴_ȥe،sG>- <ϋG|CK m+DMʺp`[ [V|2T)`-Yh7O$srC8A4BgQVΓEiNi-wO$1j }sF`m Z[ARIy={ Yw̪CVY$}Xhy,>bǦ Iv-@ :ė\%xF,%o#3IK3..SWe 2BFAMx%UúFҳr_]0m{~)b1׋m/}~-# +QZҐ5Gk51œgs\KgrhgNj>PoܢoVm}~$,3+:h VLHld!wS;ven,(f<-n/}~rQIFTND튩~.利IU޻gJ!v%,n ir0aIitU0sB P(f<SMV[҃%*%Z=X:+\g΂3F&6W]NVn iӪ^:e~Žc1%Uwp3 -^fO~#Kȸ4*@XpϪyc>*esry*c $[ʧ>HqkWZUpS/N{nӗO7cˡw9%FSń5ₒR0aʺp­ lxOx%UaM!,g'Pk\2:+\g!͒'ʞHPRIJJpqJZr/j_,HZ "ȡ'GMu/2?SGT1☒_*;Gs9뢼0/_n&28xZr>yvIЪAlpcGY;I,J4֫HSms-VԪ;L'$XS_4 🫚"K弪x=s,Yf鼋W,J1(t\I5X q-%?wY.jV 4bizan` Y&\# z#c&Cc1#"̓W'Inu VY9>^s盩 ժsLf49=->kW 0xzE@ۂ8O&0LIu|O<%o1YlI(=JfqM߲(%E#mj,W-;ƈ:\mU} 9ۣPT$ œx9fDŽ\׉]_-Sǎώcz$x<'Wz뜰bj7QBдIa)r@Ei̖H[?aGS3 `tZ_:ϥq-ۻ}`^4qh~=v IZҁFLVn iV{pG :TPRMAz#ֆ>t/YlI(?L'ĐOO5I<Τk:N{MbM% xzcŤ[ww^eG9 u~H_`C2÷5#>jnja]@o+oE+ Ac.R(y.1bș|yO@^GeO'*a@E+(d ĥ3'{e3kM̠jHAVYnkĉ.IDy!b~#!. B"DZiUDoF26ҲpF 3~u{ńm_/b=Ym}́F%L3cnkĉ.yu_awIbӝ/ P(? ~`Qw AmŴsE1d3ڬ{ߓy;#0pqF0Anu++roѭLKs;T $-K+Ys ~hL|y'WhRAmE':"ղh^rݬkhgƶ?ێ%Fj5-).nuKkZV5xkPiBkA^v+4ۼzBrQ4s*~_64ʸnklgş-rHbiM1?bsd拕s+ NisEs64KO,&ݥ:#w$kk߳[G~{?5w߳ʳST*5) BTDzYz8oNWn8O$1zL2lBR4 s\U wi$#fO(9hoОHE>%~2$m:CsIh^OJ]!$ թ*)v nmoS2KA"2pPIJsuC)SK `*È[K-( ŤOhV\1f.Qۚ4WWN^e% dJtL6M-;d4.ܞR)y S%FHUF僚W;\f0s@#LaJ>1fu['gŜkgK0V(ؤ`W0{IF5vѿݢ,wu UF z4 oGbzf-;8R0Wo5q?N0W<ߣm70Ӗ۶JY3x!vOz Ϋ;>(Ĉ:άzPFuYrb´ y?V 8Q,xFm澠Os(;UnŞLMo6I4+ndSҋ./ s\.rM0s@#LaJrKbrLbfIB:8sDŅ9/%)Ю"ܝCZ*A9Q·tfZA)f<3FYR|*1oukHeT*h?ZbNF^N3IS97|q[F#,՗ zջ ce_AYHiڅ=gt0I\8dײ0LIu|O[ڽxmr^GRVݬh9[up <)f<МذVRX:vf+}VӸ?D:LwJże/u{ BZ`gHݸc@w8qm-LǏ# A,g1 5'/,N@T8mףC-)Ś%"t󎜗U6An?cNOVvvfr7ӏzTsh}SEӤt ͍4Mb_ۥ,%UC_-^aD&{uC)>KyT/&'XYYГ,eP{E4+nbej^*6~qv(qRNQQx'[C|TE}10oiţ$ghvUUPÖ@%F&0vD-ѕB݌&~2M6v! 3B)5]ˆz_09?O!J*QRQ9ɋAS/>Eq[wsCn)7V3Ts|${ꗼsSW3r|ȣ)Cs4%*qa 9*K;s\8Oh ,0 *dQwY7aaSJL-{ԏۈu7ZV7Rk a-$&YĔ&0Q~6HvQ0ϧB1 aO8ʯ4wRiG>ix}X– .Q̠֔~}س/ iW_]nFl5'5fQ<[7Mzy~ybضGPZ4EV%Yi@SV|^iw S,{jZչRobѝE"JϞ[7MzzٽkO,k^yz [=N itĚ,Ka}Yq-2!w3,ucI4GS0vie|Uz$gee]'hfIKYEizٽkO,Y6ޗ HJ?{ʚ% ),HaLr4[ˊ K*h10"X׭&DXae/>׎HEWb׭&Dŝ:BEL.=1Z3W6QB)[5fQ<[7MzzٽkO,ZC)eM%R`,k^yc^ox{רX-}T˶u*mk^yc^ox{רX[$Q4T|ƥ% *Y HtDY.7Ä_('Yh‰) %]iw rŏmKZ3!T'a[37c1IdOqX6f%bfYWS ) g̮/l~ ~h&ƨkkyTr =!b\vcF`՛w#vnDsh}ٻϻ7}- (|ݏ_Ig8G#{X_z&i jz0 fω_awщC&fZPvZǕڭyx4"dŅS<̓νȖvL@q u6TPLM:{YO 3NF0!$auCi>18B0Cf~F5u9JYrіV?,<>@{ʌ@ɉ!WPs~Jz~ŅF&|bo1ѧSt8i{3vT:%<:#<`|n1]P^+ ptGCZv#\ }%>ǂ?F%=?|Ʌو_aӨqdD0u-/1=h Cm5ī0SXEiCX6?Co91W,D? OzF}=_z0 ո[Ó[y>D|c~Jz~LJic| )b:=S~~^I?uQR#:O$kB]U?(t{uq*S@%&MRa^TX6:'1E^?9( _ȣ~HB(,Iw,KW ł?F%=?|~1sKX+bXci ^uu`x40VE OO+AQ5o3SW,kbœrбٛzZ[0,D?i.8>=Ϻ!A`Y>x#bSawљCLG[={_aO ͣ, |{c)v#DM#Cih "-ZSHsB# ptGC0]?2ͼBjc6o+ c CC2(J.R(6?]bo$YVm+%奫2N{ LJHL3,I&|$~G;+^MiWt+7n8N0M'qcS4E2s,R8# f۲'?=)L ݘCT"VB]۶Fu =Eeכ[ -()E#͚* x#bS,.17{,6OSriv'=OpZBI&ol:a:E%.K@xZ73XK`ȟ~Qh`~dNZ]Կ|X#bSaWY_+SӞ]|q}d{˟u1BO|'8Għb˕hC)I"B%)3eYuZnt]T$S*cF`ʴiB@c_Lؓ.ӟY8D&ҞNi1)s+Wq\é}FiEfٙB{9{ ptGC0G<X]o?0ߡH,˃>_7|ϛ/ Pqa̖ S6(p-ikRX- R6- NRhe4Z&԰^C;40VDW]R~1k Y } ݢ{( I(~+#>~w1lj6ߐ(G@+-X(Xxi5|x:ϐ>zczq,^ح=FWdRil+ANmċb̸?w 0)e~m/lT safZq. 5Ro0 [Eta1+ |:![m-)F4Għa${kzm: U5p.eN')&&{,1\+*G Oc>t&0zYB튝a)( R1bIY)U>+gs `\&fZiZvk%U,!(5me@ۃ{uQUsFHcZOoz'=XcbX^L>|*K9=B򞟸qawyC=(~: noXm4HR(t0jfA.Y_<8mn!)j:*clJ{&]tFusr*Um|D|͸1yuqjq[51``/b}Y Mps{0=^~NccKU*tPHł˿rGy׶|׷ s6;ۯ: noQ?FOg|eqlr}Sۣv]ˏ4(S;>JbŒUd1(_Z+R8kSb*e/uK_C̺ÅSkҡH[/nkE7j8. .dIv%dQ !A`Y>JʞPU{jlCM6bz?пxoԧmsgЈ՛w#VnDsh}ٻϻ7}- (|S#(Ҭie#M1.2;OgvJ U{A͏.`=(URnYP5Gly&Y&BkKG$fQ7&PT r#VnDsh}Yϫ7}9fG>^m]Y]PD5"jÙtuOw=UrƺuOwU\/꫖5=ޥUrƺԿXTzURc]S_W,k{KuOwU\/꫖5=ޥUrƺԿXTzURc]S_W,k{KuOwU\/꫖5=ޥUrƺԿXTzURc]S_W,k{KuOwU\/꫖5=ޥUrƺԿXTzURc]S_W,k{KuOwU\/꫖5=ޥUrƺԿXTzURc]S_W,k{KuOwU\/꫖5=ޥUrƺԿXTzURc]S_W,k{KuOwU\/꫖5=ޥUrƺԿXTzURc]S_W,k{KuOwU\/꫖5=ޥS%Zb*b*b*b*b*b*b*b*b*b*bfT {N]ȡ0E:]a2jϢ`Y(fbGEPM07Y[BIfi(BЕ {e슁/ntE ]*Bsƭ]|+ Qq>L% N y[NwNwyo?old2ӭ47"Q ?R(ri5iD\ZE9 tf~TO4@)T5s\d#k`~NTBb܊D%5: ;HPMJF !P$*݂ɻK){x([W)[j!E&f0Ff9 zۑRqV672%ոSMID-_x7"Nl $'"GeM|kã~j/wޗƠ{_(P~>eg|v%I̡Q򘻻4EN"@L%еkŒ)ShmRrS HJ E~}S&yEv bCxh@LjPj3䇔rpՕ]@5RrpGg3ky)]Ȏ}Z;qϫG}.9h>y.93!3rulΌ=s@1H3ƬM5U^MO -n\5 C]~o/kB&Q(r u4u)4'!58i.ʕ䦖ôV|ʹ Adb1HREI0 y›F~jj &Arr(+Z T?Ԙ5d}5q{Je-'l/1!rl>]7PH# 3 E50{&s1$#eSLӞ l\  n}N!Cc2@-K~sDh4_|Mlڅ❷67U(%#4a> 8*O\<E|o.\ѕtC4M YAbw[_4/dkū}-D 'QlnjK#ZȵeTL>Ⱦeg|v'1 %WJNœJUBFjh)Pu<UQ#NHQNVFk?k泿E4Q٭Rl![Jtn#Ah (h݇v+vEw Lwv`^TҀXM̶|aHqT&Jl'biiXR-IA%h;.\^Tܞ[㭵 j/ as[hS*YIMnrīJmG`$Pe˻ 2IS9ՏEq<ό# [0"DOa/_}t}|N2{EPZPylT Rޢ !Q@>wqկW^,1b-KI Zsr5/\fDL'(m!1~}_&yEv ZFk?k泿Fl̢rukqTx/37'h>SflueJ|:Z}  ThSE\{aX5gXߋ^vINΝ|ʹ JEDzݨ&ڠȄ- NNcn ZV6 .޳^͝TIP9u?f0jglk``n>[uZ#HHri3pdWRcEIPD V`O MԞRcϢgQe?d;l!;1WO9N,$lW]t!~˘ `td mX墑HHvm3EUAƠ9FST5Ӹ!НP5WzZyPtà-TNJbqim%#91n𞼏FDr bQ%.%$`v0^~dl?ēZq(BOtCo:>H(;u'u XAN q$'v0.eZ0܋ϰUZEI"A4"&4K/MZS]P7?lIR4#1-m0SMqNSg湢Evl >UtBI /ٽ۞(L*eg6JFZTL7" 7g6Q Aoc?IS>`8ʹQ6QHnI8J HRPI"j2Ӎ>;EPZPVʵe Pt/(Ln}iQ]{$ Ґ[wNLRԚ49.Q(2nĥL/nvE Pct6KT806jUS%ކ3 n?,!1QAaq 0@`Pp?޲Xı+ pz`}Riss,r_+[b/Modè B5UxXuu.xW$KNkmZ71R] ikqԺ ,O0,P7](g!4ˈht Z3x0Z;MVj([V3 B W曗k K=t7 gy6FdҺ*)2V}/cO!if0\@W)—ܺymXЅë؀ꞵշeWrq1˰; pRTkFJF.`2so9qL9"dL|( t@P -Q1d֭vz_99=8zTt/<1T}Б:L t7MK m*˂)V.ym`Xb7o'!~EK-wZ<@?wQ,O:w*OJؼBCH7+taSĵq<+$N? 7aELV/Ah ֈ{1e畠A$^ h(K9{DƉM]BCVû Nŕ3ieis4W@q0?[{uC \ AvMcRj+^AFY)`j1fgUm~A"4uuɕ^`o`KZ!ڀx4rhg@%|k R.-PSVIv9TZR`/x…asPc^Mr%P]>TU9bS(47jhhƍ-(ds2U,bbn%RT5-V}\ xn % t & INy3fnep?ɇ`T]^E|]#kb{S]5Z9CM~D2=^hZoStg9w?.Xާ*a0W @=r+'֯jԶgQ@(Q(!6rHB |}evwjt73ҝ f5F]a*h5q0RܥUai`ps, jȦ>cEA.b y}fg9]g*ϿzI,Of[#cr%jXͷcmfÔuYDvLеC9ɀ4| *{J/9GfũS:!%u^I/ Ղ4kF7c`fʵyoKv+׍A5wn \Ģ©e  U-r:]at(>󚕶%ޜ#>ц ʚ{43\W;h,Z,Y,Sޯ"Uj!hKjvraQ\W.D;; $R6++̮B O$;{&UkFSꎋs Th6Њ-sKjhybH,:z/$ޏe,ǿSHl 3Pj*4(#bhX. Dm{u j@ҧx_Qeuݱ26[x8jW"PqF*ҵӦhZ.(:-=2^SMVWY>6/Brb;/G#cǿ@9 VsMCQ$zlUM4 JLk-*[m"ٔziلvÂӒuBkDo+NWZ\УTG]"ƴgRd)C+ȳ$Z:} `CCz'qP瞐4/K^M̲,$w)~8iVYrm`< CiMZldlצx%r/. [y0Qi/HtD3 @Js[befZ.UM5$h،[W]ߢS c>#1[ p@-aq /3 3@?wЭɟ%V1.P;ysP(,'it0 " &Eˑ ڽVG_f^9U@ 5X2l]?M u{*Psfy'?o]딗Us4_Qc#I[K4ly9OP'#cXUuq\_`>j5`^^ą`4 -Bz@2N%D \FT_IـU;WV]M4l .|M=@ glZ CEUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU \CFBl-v)(~t톼nVgMkTE8C8݅jR+Ht,Fh rOMaf g& 87/ aŕƸ]J_=o)J܊v P=?<%|%oA'oVn^:2y||W>\>/>f~)ggٚ3 U`oG !moO03 O{f,]ཌྷ;n9X}ol4!3A8>FAwj=h1"{o4:WwuY1NGyKQh}8/tdSdL;by`|S}m좽 Fӄp?p2m5+Β]َ:\SauSjY.n q9톑{QSܢI?gy cߔԛ2;s09qv:Rdr+Kcnr;ZlCXqx{aFO9VJY_NoX}'u9~Rt}I~)gOfhw6n|pgSZ෡'tB2mJգqwmϛMV.>0'q:5E븺iYzyɞ?HldC ʇ1YGe$i'B{:.t{\=x"V: uKh =!M3;}Lz+cp)Qbhk 2y=x}_cWˀg~ꏽI~)8gOfhw5/Q7-&?.{BHX~`a[oMԢs&Ɯx_p3yGŚgq4ZO!sCqGյӤ09?HQ:6) [ ejU{}p9v-}Ԕ&'|8{ kt3m?ꦋZ.< ?2vhk7mrYI~[nnŲÜc1wq*B3"\>OkOs>)B\jfh9!8K,eEy}8rgXLCkP)3 ֤Y8cû0I"RMC:^dX`3hD^(89 17;z13bøҖO)niӯ?SY34=7VĿV8Ox-8jHܽD&O;; U{,g'FRQ^RG1`(8@Ԟ~nobPA?r&5jz:'Uz S[m5*AWχ]I'wMأ,Kq,O'DƵH&KOY#Gxu8_% mfC5iBr1Z<VB9-:[1BTk٣SCjF헵//%NoA7ZFPMr ]>j"C̓hޚ_ }&_>pBN=LC,A@@ R ϩ,AAv=MQL W1 k%+yUls18l)qZjoojvX==FB =-d6*恿_:>Co=`"gθ:xԻE%HF ж. #^4 _8 66rڀ&k 5X!ݵu:f!>ShRC:E@Cv]R>I`tH^|3ԈJD'DKQr& 8&AMnё?orwmT,~'c*Iмr˩i<2d܀ UJ ֦HKWpi+Ey [b }BhưφlzO+fiTzta.:2 ʉ̇a^LΜ"Ev⚹J9&dHV>~`_F4>Xkh!; D?5ҥEY/Z!UmWU !=T~Tź~g<ġw/ W^ӞwVc~f8Re \'Bg|=dєQ]t}5# a8.dMImkxxMYBp+ϑjr}MNZgppwٖi]kBwnV;%k0 Gd$̹=\ 9\}EWhT :f8gwqOC(/@.*716 3ܘ $4Bˆg܆?bk/l;Ŏr-|Z{WQg4x6rigaTw83w`=}!Z@>Ql0ψL_o;>~$<5ǜ& mm^[H| O;W9]OnͲlUMطLPs^ V 4C<~|&hm!=Xx_^؊ /6}$ډ=XqyְK:+ aY \G %ɒeTZ6ՠKȂaچQ̶;W}*wꔮ ANekUzhlѩe>& _Dr+S{a7WZɛy O-}oCܿ0\gn/(7%Z""@Q)or99 : zfGI;@ufvO%Xqc#ÿ9s3T:Z=\^G:v M;MsDCiOC J˃0͞/CTuM 3Pn -=`#wӇaV$n"Ҥj &r:@>=A9V鿗SXg[kxć ß/DR{E DPWb{t&{Ah&\h#Փ:ٯ$ CA 1X=/iQ5dbk^Ƹc@T&?`}?p5--_:< T1I %/.wO}a*T8ӯ`2?kdz`7z芧Wd1}~5?Ks>g9 u󱙮@`_r xR xRDvRSw0Jx(u2oyrݳ~xs}n%9?XwyeKlݖN?N&qȱ,,Ƅ5DQg1zd9:IȾg?Wf5Nvpi5x8Z;{ U鱗D1^]g7\?7۫d=(Fkb.-f[3Ra>x@~)}S 2 <00ӟayPmE$TS{<7_8O<%uޓצ.~{?|^ sâ#|e},o\#:"GQ, 0O5fTf\5竏ec ;q^][ϯ./>~G[8uc3۴U}f'z0Wx}Z쐎xec ;p 7Ùoy۲_{}8%|fjq^1?@|&\! (+c f#~?BZPS;B{Tf4wa♫ӫdDN9:WH{%WRl=uk4R"$^9 ô݊]yq{XO {6Lw?3f᭏<ȑ~g49|0@N =;vKtfwT>-8ŗ'Ѡkj~vNkX D xgk#g:"kgu<- Q3WW}bBnO=<8ny]yOx狯gLV%ߥg{?o.h[^\;2LB:˦wejZ8`",6gr ?3v14< (DA5˒}ZJC}tt}ֲCTGu`lxw+ygRbhx ]&~Dfu~9@ crS=`C~t;<ϲQU9yq kr|}oX2kg4ejz_eY zsGP BsUvhz>YO`>x3~\zV%iӾҭux?`”S{J~;JD/YQژ׀AnE-AIvXXq,42ʨghqP-c,4tazR$-[Ybt@d;UAдDմeXJƿeeݱ6}z@2 *yE7A)v݀UhUGB@[&4Z4r\'6 PǏS}{{|ÊkQ{Ky)vBu: jӿ7^L؍h@хnTg5(M'qzOT9{Df?<""N4:öfY}\*6[،Q ,*V+SnNCbNk::H 8iò.o'~BA?n>٥#8f4+WĻʶݬ "IM}*J5%p#9R'3Uo(eׅ8Nyk;]Z\7/$KrCM#/$ΚlnСFRi5 .xn&KThU|:˯n:.ūnp6x%I}D KGX FыrkŻƒc8\^nsl.73<\^Kj(t;Ԭv K.6e[ʽ~ŶgՉ!e%rUFr4eQRY {XquG# ߍ_+35sțd4ܣTT2$j< ւ!& _第v&#u՗Z]h|ZwJk] `#p=Τ2 Whl)ƿ׭޼QDDM*z-8BrcLA~6n2 $Wg~0/[k/oCfeDA(H6uBz ܌NuF;N/5zcoAeyUUf:bH;墎^fOt`_E/+"oue3)?}Ҕ`[\fjy% 9.-/EbP iEFڠ9sqWO*1ei@%V_o\͓yʵQm"X܋g?PԺ=I.R=Um(Rr?6A^U&4Qn6+ zPZϤι_[B+_&xzώϤ̭KWazK:@[B+_ʵ/VDK!)Ζ t}"]JHz2혛<@t"Ta(e rWB#Y]̋'@ ^ҿUM:5|(E4" Лi/!1A23` "@BPp#Qa0R?$ !|h~{KߩdH_/?Pc$?* gRB?J ?!~PTA< ?^k>r7 p7 p7 p7 p7 p7 p7 p7 p7 p7 p7 p7 p7 vȓ?OiජV`·rڞ#TZdDl+HYaBEkhƛgD[ө^ޝ86jq.gxjKhm8"e"^1qG<<bvZΫ+g1[]BTG/kBbU ْڄj.d"8-g 0ܑ8\(,䅥'vb6EkI*Qm5vi ΑuF 6iKB8.YbD%X)\+8UPRڜfHhYF] 'OoB! ֗xZ?hhQF>vدkiߋX |l^*Βl|h/E 7ۅQ#$d\%<4dI=X m;^BÜF C߃Nq|lA vZzr})!K5O>I/]-AkseߨP"e$h+CKee#$X*KHQhAd\Opy6#] R-EYE8ob̫LvZYJ+F_U˯UmWmFTN8~{;%#gTe:D,d̵Qu>6{!] P] ^ULܥ#Ⱥyo^ d.b僻.}VYyY_X.ޚx-O"D!j%(JSx)C^4Xc>l|hzhNSVZy[KYpIc8p2*w4^НMB-}n^ARO ki+?P~B>fOW)^1/)W_E^o闾_EкEdb^)>1B\FY4 Uuˏ#cнYiWCq>62'F#S(PcՏ򲿑M̳)8NY^,] p _[ת`}yy̨O~ӿȰYO*9kThJe+|e)bhBZzeQxt]S|mVb_r((]oI.tEnÎJ s[|oSm*QN-Wt&HYE琄fQIr TE:=k|lWKm|Iڟ:eQ552)?QMx&I|6n# K_ :zb;XIh.ciߊGW%:(QDե_r(䘯'Wvy)]mK;VݏO Ǐ v+RkQ;Rs w LkΦP] kXJR\p'˧޶2,7 շKC.́GZQeͱQt,C<50e/R*,Ē8Eg-媞KwaՓRxx.]z& c5fHc"?XG"KyUyPؒ&}Nŏr^Re9Qd /9RG]z`ӒS_-}$\o_i''M+k+/R.]cK3A;=yJvv,z~R|A%'PMafH}K_Uu~s)A&RQ_-}$\o ~ӿbWk=3RbTIgP[OLX/!(g ":)ayEeʉ,-)wʊQʋM&OKmI%{y\R?i.<܆Kj R'vYgɱ/b1 ^eX٤Ĵ"Eq̩/%"%}CB.cܵ()G m6EJ*mdTcMHS[X7p:(2Ţ*^n#%*cؓIJ+x;_i?<;$Id*8c:mU?iFtN#t7xurBYC AM}wйnp?i\E<7~*|B' p2*BXEK_ik`)j٠i6ٶkڸ>OBX7xgy)X}&2R$2Yw5Y`ly!{sBlq l,{^:5֯k&X/ɌJDS|ƅ h(PI+SJD ب4G:"qI> ŸQ*:$OHDe?4qT2B!,HARCiD9F:Qpk ?tJ58r2K)X61!23AQ`p @"PR#q0Ba?$nm ?0G6~Nja7M6u lTf9 4 ~xD.{oQ6toXQ~_M Fn>|> M"cZKIi-%ZKIi-%ZKIi-%ZKIi-%ZKIi-%ZKIi-%@!ʍ oR|>ޤ6쫪UO.P9*\\{*GG!xGJotQW+v*AuED5D\ٝIB_U>hU<ѫRJd<ʢG46\kdfq7%GY#<5@`vVTmDQW:1U\G"eTx `Y vkd)*=ʩLd<{Ndw(VM\S;׌k1BQdy^Ե2kM}ЬyfsŊ$/(BRwQ?Q qlTuo̦UI75s?uҳsuS'$*RWy75rL]HT!w)2YSV  ."AxP6["97T\H~h/<j~J*NU:a<9lӿAvMpTڏQFeu=s*h͊S 3AUӘH[).J7bsbfl7EvUj(e2:B8/ (꧄Ms{h. _OvSDbucs!|59Tw -GX!|eԹQƫ;`]qya#,6Pb}–Ҹ Ћn!QPu-nKcz]ACa;c ^UIÈ!qދ=oHU]ARwKUsdWvS;,%lsn{07*yTm[d@(4 8qEU䠓M0po%17TԌ!\G T]aTeP.Vv ;*pp\E `7Qtvnr!]ƒx ƼخNW?7 ;.%=C0^B fdy ą;+e53* ;*K+vĈpxWp7*URpdH$25q⋬ 4[˚07QmR(DܪVCpܮ#Q_QU=҅6#2}U "u)N(n7x#̆B4dbaA¶U/AXMHm\G({ 8laK 0T 榎6(:TRA%8WaÇlpÇ0?qʔ@<$'ӽaC wE*nyB=7.o -/AVDOkF渗q >(zʦH#CQE{.!)tpc)sz0\(!qM)LAL"NU(;8JHt[s'ep)[ԆؕzÈvgR Z-—U'x`TePw>vÇv)2" *嘄 QI,({Aq({_T,U\gA>򐅊qEL%3q}!QuS < .!RPL"{+ҭUݜ(;8sUe*o2`HmZM*$8nAq⋬]TwTM0U-  1y~6E2W3eT#UiBVd7*+UFa HMIƒK%Qup{R+aPQݑJ%P33U{?E_+z.#liT]aTe5(UKS(\@YsEdrfx !K.!ɼne8Ç譮}'{S$p+TrHm澜UxqX {QM*C+t( ^9=SRIRǪPǡRP:FoAHbO_N?}8jm4-FUQ u)nРz̭UW@Z #4ESщpWӍL q;Z}j* j^4eM)ek4RN~8kS8q'u=)me%B11OnqdxsU<: Tsndk5zQZXGA'QHmwDF5lwVu+Ðdq5k}z*X/75r$@) k \ޫ꠨u[+UJN鄹jjtEJP{7Mu&%>R_tf`+WcFoTOP% \ޫT%^.b: A\A~y +rnT ސ˲ |Q $xg2Sf}wNnB!No.o;kй,6*) nn`* /2D[-즦tB @nOy7 +PMR-+B )!P;)+PrA+a@^k0ˇą渎 b* ;NYAYtٓ=I @[Ԇؕz#Y3[yA̟SzFT&.$6((O08CuM yitʵLH .!䂏Wv?8\;*?t{ɽHm\K&M:-d1F'G f&bq-G08Cu(qTuJL >GU}( 1JA?rwU}*~Vɯw෩ +XUapFBސo"P"W 9Fc-CoԆ̌LM-CoԆEhM-CoׅfYe7?oR|֠./෩ oR)E AT~CoԆȲ魲xG64+p5fj 7MrZQj-EZQj-EZQj-EZQj-EZQj-EZQj-EZQj-EZQj'JdV`!H?eeYVUeYVUeYVUeYVUeYVUeYVUeYVUeYVUeYVUeYVUeYVUeYVUeYVUeYVUeYVU8(F7 j#}Ǧ04_0u̦ ˞RFod1\-@Bt_ بDZM8e *'5;PzZYk&u# M:a>Ћ1:oR,!_~@e&oR++.Kʧ0lTfرdZQ6[9NNjaV!*-E*ʛ MuZIYeP}HYD9FtfG،CeF+Մ؛9gZjj$ WTNd dtELV{VNja8dҤ cPnm111EF%e3v}Y&:H _M9[*B#RF{^oop64@ۅt^RبQ)ҧN&y6Hy#e/6dJ/.P* 6*3q6R90+YL} Myt@8Ƅ\c܄2"?wZN^aE9l^6$"yȲcoln~M#fbo€بc/plugins/limit-login-attempts-reloaded/assets/img/logo.png000064400000013726147176754540017646 0ustar00PNG  IHDR,OfPLTE":";';$<!:$<%=$;$<#;$<$; 6"9#;4"7%<6#;":3BP$<#:$;$;$= 8#<$=#<!8$='?#;#:$<$=#;$<$<$<#;7";22#;"9#;":#;&=";%>!81*@-$=7$=2#:4.%>' !'@!8&?"9%= 7&%>')C&@$<"9 7#*,(A,36 2,9K, 8./G()+)8J9K+""'+F++9K9K3;K+!602K-}#*F+/(/G,+%,*%%*E3#2H/4&$#;(A-'=)C0;L-+/,H2)>=O6"96BT?S=XtRNS90 aOiwّ# ʯ>p,Z5ྉC(&JrӚe%߽{^R3+6' ŸxmĩC@3Ͷ}dVPNkT̿x>-'̉cY;:#Dz}ttdHD4ʻyZW60ҽ~qph^QOL>%ʸo~~p^B7!ôyg #OIDATxXGM^" "EETF@ ѨklF[,{{Iv;{W|H>|͛݃hS4lܰxòC f,(7VBg-vb'?Z4dUFfe "'O@:i]>F5xق6> M.[fPV,ɿ.r5kA}ת+Lt2T5kf}+-ZY}jQD蓏ָUi;hъ֯Xl>tkZF2~S*(7T=1dį9PgwM=uXWQ< ɟoN"} \=nkrgf dX߷Ψ>ѥ+%f< J[Wh|ˮs&_pACÍˊW!6߮e{&AW:)R_)ԅ t˥YzO5uQCLT}cJ.pOU(ڳ=*!u{.{~#lz_ 51F%qEM5SpQAYgVGx[[s*`'=?B|K @m[BWKXFyZcFAw4} 8.hS}it=`1Tt_N&F~ :޵kSӛ^/P_}_X#nnv]4>d AFL ʨ +j d8bq)[j5 9ă3'Bek umo>)e _Juz݂9(*JX˚VUpfQ0D(L) <;5|s`)>u0c7Vq&b#,l wʲ2>hʭÉW?qyeaVڲM/o[{Xaj`V&J}`B454nz@/֞ԺtŽYe;v'v(Z qE^khUΎjaELC4ܭR4XV}4T`AJ)2S'+1E7%[ `h`C:߸i|{bbe_Iŵ~uۏH yF9D>QE un9k,$Z=CkJJ׏m/}F:ƙȪV`Ȳ͢r|kAF:tQ3R!sͱ&N$ I`Jɲڟi1KfG¾lJx>`}JMG?:ZkUX^? m ,vö@}y#_F(cm^zSi[nwۼǺܴ~3Gi[=#7WLDAW- ۮ|;M]&QNwd/;4buĶ댆 Ny&I=h Y9z9>hBAEXwUgF]pvMruU[$tEZjTHhA^N.E?Vtzz4tPqT7tO-QRn~}EfڋD.;5sAҲ6^} ]|L N1&1q@WY&Zmz/ 3S6c"Kcz۪gm.4^(cz j7۷m@0cp8@+1&$+!_R߀t Ot\Jh滰+B-w~EPF?XRM+/%`QҁRb[SuX 7CS&x3[ə"GD+5 %/c)CISa%L>6:0A^/3[̴:6+ϏaY}F6s c,̀[^,݋fl8&\WK1p(q [GX}pN93+oXdǡ i *1>3$LFՃe25`ϣPWè\@ɨܧ8K6iZwHi07(khl X;p&&IYD-8ΝG}V!\9ap>݋$ԡ:,R0Ҟ>",r9:`xz3 ; lbI Rg ̀.i[upE%!Bqq͐ΰǸ8`a]v(FeV pynV%a&d䜌y KXSkls:֌AN9j#v\#roca&鰆GL0|Rd`gLxV; XTXWLO i#=["Թ:{DGs6`ᖣJR+NƤ3$xc 9]GvSO#ym^a]"sg ΰdɄat\Fu lLl kuE5E˸h ~XoX$y`)憚r X%j(gt7"a b`/0h4ׁ: t"y 'ZT|ɳM &G,+p\1XC V&vLe(EӍ,f+KqHVE9"9N9"6Kk:d=ON  XU߻kv`j( .kme\>T / NX,h"t~a1"5 Y'ƹc\9(BvNe9& _(;[ƺ5s~ĉ_`g'ԛ)3IENDB`plugins/limit-login-attempts-reloaded/assets/img/logo.svg000064400000004474147176754540017661 0ustar00 Layer 1 plugins/limit-login-attempts-reloaded/assets/js/chart.umd.js000064400000620505147176754540020262 0ustar00/*! * Chart.js v4.4.1 * https://www.chartjs.org * (c) 2023 Chart.js Contributors * Released under the MIT License */ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Chart=e()}(this,(function(){"use strict";var t=Object.freeze({__proto__:null,get Colors(){return Go},get Decimation(){return Qo},get Filler(){return ma},get Legend(){return ya},get SubTitle(){return ka},get Title(){return Ma},get Tooltip(){return Ba}});function e(){}const i=(()=>{let t=0;return()=>t++})();function s(t){return null==t}function n(t){if(Array.isArray&&Array.isArray(t))return!0;const e=Object.prototype.toString.call(t);return"[object"===e.slice(0,7)&&"Array]"===e.slice(-6)}function o(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)}function a(t){return("number"==typeof t||t instanceof Number)&&isFinite(+t)}function r(t,e){return a(t)?t:e}function l(t,e){return void 0===t?e:t}const h=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100:+t/e,c=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100*e:+t;function d(t,e,i){if(t&&"function"==typeof t.call)return t.apply(i,e)}function u(t,e,i,s){let a,r,l;if(n(t))if(r=t.length,s)for(a=r-1;a>=0;a--)e.call(i,t[a],a);else for(a=0;at,x:t=>t.x,y:t=>t.y};function v(t){const e=t.split("."),i=[];let s="";for(const t of e)s+=t,s.endsWith("\\")?s=s.slice(0,-1)+".":(i.push(s),s="");return i}function M(t,e){const i=y[e]||(y[e]=function(t){const e=v(t);return t=>{for(const i of e){if(""===i)break;t=t&&t[i]}return t}}(e));return i(t)}function w(t){return t.charAt(0).toUpperCase()+t.slice(1)}const k=t=>void 0!==t,S=t=>"function"==typeof t,P=(t,e)=>{if(t.size!==e.size)return!1;for(const i of t)if(!e.has(i))return!1;return!0};function D(t){return"mouseup"===t.type||"click"===t.type||"contextmenu"===t.type}const C=Math.PI,O=2*C,A=O+C,T=Number.POSITIVE_INFINITY,L=C/180,E=C/2,R=C/4,I=2*C/3,z=Math.log10,F=Math.sign;function V(t,e,i){return Math.abs(t-e)t-e)).pop(),e}function N(t){return!isNaN(parseFloat(t))&&isFinite(t)}function H(t,e){const i=Math.round(t);return i-e<=t&&i+e>=t}function j(t,e,i){let s,n,o;for(s=0,n=t.length;sl&&h=Math.min(e,i)-s&&t<=Math.max(e,i)+s}function et(t,e,i){i=i||(i=>t[i]1;)s=o+n>>1,i(s)?o=s:n=s;return{lo:o,hi:n}}const it=(t,e,i,s)=>et(t,i,s?s=>{const n=t[s][e];return nt[s][e]et(t,i,(s=>t[s][e]>=i));function nt(t,e,i){let s=0,n=t.length;for(;ss&&t[n-1]>i;)n--;return s>0||n{const i="_onData"+w(e),s=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value(...e){const n=s.apply(this,e);return t._chartjs.listeners.forEach((t=>{"function"==typeof t[i]&&t[i](...e)})),n}})})))}function rt(t,e){const i=t._chartjs;if(!i)return;const s=i.listeners,n=s.indexOf(e);-1!==n&&s.splice(n,1),s.length>0||(ot.forEach((e=>{delete t[e]})),delete t._chartjs)}function lt(t){const e=new Set(t);return e.size===t.length?t:Array.from(e)}const ht="undefined"==typeof window?function(t){return t()}:window.requestAnimationFrame;function ct(t,e){let i=[],s=!1;return function(...n){i=n,s||(s=!0,ht.call(window,(()=>{s=!1,t.apply(e,i)})))}}function dt(t,e){let i;return function(...s){return e?(clearTimeout(i),i=setTimeout(t,e,s)):t.apply(this,s),e}}const ut=t=>"start"===t?"left":"end"===t?"right":"center",ft=(t,e,i)=>"start"===t?e:"end"===t?i:(e+i)/2,gt=(t,e,i,s)=>t===(s?"left":"right")?i:"center"===t?(e+i)/2:e;function pt(t,e,i){const s=e.length;let n=0,o=s;if(t._sorted){const{iScale:a,_parsed:r}=t,l=a.axis,{min:h,max:c,minDefined:d,maxDefined:u}=a.getUserBounds();d&&(n=J(Math.min(it(r,l,h).lo,i?s:it(e,l,a.getPixelForValue(h)).lo),0,s-1)),o=u?J(Math.max(it(r,a.axis,c,!0).hi+1,i?0:it(e,l,a.getPixelForValue(c),!0).hi+1),n,s)-n:s-n}return{start:n,count:o}}function mt(t){const{xScale:e,yScale:i,_scaleRanges:s}=t,n={xmin:e.min,xmax:e.max,ymin:i.min,ymax:i.max};if(!s)return t._scaleRanges=n,!0;const o=s.xmin!==e.min||s.xmax!==e.max||s.ymin!==i.min||s.ymax!==i.max;return Object.assign(s,n),o}class bt{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(t,e,i,s){const n=e.listeners[s],o=e.duration;n.forEach((s=>s({chart:t,initial:e.initial,numSteps:o,currentStep:Math.min(i-e.start,o)})))}_refresh(){this._request||(this._running=!0,this._request=ht.call(window,(()=>{this._update(),this._request=null,this._running&&this._refresh()})))}_update(t=Date.now()){let e=0;this._charts.forEach(((i,s)=>{if(!i.running||!i.items.length)return;const n=i.items;let o,a=n.length-1,r=!1;for(;a>=0;--a)o=n[a],o._active?(o._total>i.duration&&(i.duration=o._total),o.tick(t),r=!0):(n[a]=n[n.length-1],n.pop());r&&(s.draw(),this._notify(s,i,t,"progress")),n.length||(i.running=!1,this._notify(s,i,t,"complete"),i.initial=!1),e+=n.length})),this._lastDate=t,0===e&&(this._running=!1)}_getAnims(t){const e=this._charts;let i=e.get(t);return i||(i={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},e.set(t,i)),i}listen(t,e,i){this._getAnims(t).listeners[e].push(i)}add(t,e){e&&e.length&&this._getAnims(t).items.push(...e)}has(t){return this._getAnims(t).items.length>0}start(t){const e=this._charts.get(t);e&&(e.running=!0,e.start=Date.now(),e.duration=e.items.reduce(((t,e)=>Math.max(t,e._duration)),0),this._refresh())}running(t){if(!this._running)return!1;const e=this._charts.get(t);return!!(e&&e.running&&e.items.length)}stop(t){const e=this._charts.get(t);if(!e||!e.items.length)return;const i=e.items;let s=i.length-1;for(;s>=0;--s)i[s].cancel();e.items=[],this._notify(t,e,Date.now(),"complete")}remove(t){return this._charts.delete(t)}}var xt=new bt; /*! * @kurkle/color v0.3.2 * https://github.com/kurkle/color#readme * (c) 2023 Jukka Kurkela * Released under the MIT License */function _t(t){return t+.5|0}const yt=(t,e,i)=>Math.max(Math.min(t,i),e);function vt(t){return yt(_t(2.55*t),0,255)}function Mt(t){return yt(_t(255*t),0,255)}function wt(t){return yt(_t(t/2.55)/100,0,1)}function kt(t){return yt(_t(100*t),0,100)}const St={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},Pt=[..."0123456789ABCDEF"],Dt=t=>Pt[15&t],Ct=t=>Pt[(240&t)>>4]+Pt[15&t],Ot=t=>(240&t)>>4==(15&t);function At(t){var e=(t=>Ot(t.r)&&Ot(t.g)&&Ot(t.b)&&Ot(t.a))(t)?Dt:Ct;return t?"#"+e(t.r)+e(t.g)+e(t.b)+((t,e)=>t<255?e(t):"")(t.a,e):void 0}const Tt=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function Lt(t,e,i){const s=e*Math.min(i,1-i),n=(e,n=(e+t/30)%12)=>i-s*Math.max(Math.min(n-3,9-n,1),-1);return[n(0),n(8),n(4)]}function Et(t,e,i){const s=(s,n=(s+t/60)%6)=>i-i*e*Math.max(Math.min(n,4-n,1),0);return[s(5),s(3),s(1)]}function Rt(t,e,i){const s=Lt(t,1,.5);let n;for(e+i>1&&(n=1/(e+i),e*=n,i*=n),n=0;n<3;n++)s[n]*=1-e-i,s[n]+=e;return s}function It(t){const e=t.r/255,i=t.g/255,s=t.b/255,n=Math.max(e,i,s),o=Math.min(e,i,s),a=(n+o)/2;let r,l,h;return n!==o&&(h=n-o,l=a>.5?h/(2-n-o):h/(n+o),r=function(t,e,i,s,n){return t===n?(e-i)/s+(e>16&255,o>>8&255,255&o]}return t}(),Ht.transparent=[0,0,0,0]);const e=Ht[t.toLowerCase()];return e&&{r:e[0],g:e[1],b:e[2],a:4===e.length?e[3]:255}}const $t=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;const Yt=t=>t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055,Ut=t=>t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4);function Xt(t,e,i){if(t){let s=It(t);s[e]=Math.max(0,Math.min(s[e]+s[e]*i,0===e?360:1)),s=Ft(s),t.r=s[0],t.g=s[1],t.b=s[2]}}function qt(t,e){return t?Object.assign(e||{},t):t}function Kt(t){var e={r:0,g:0,b:0,a:255};return Array.isArray(t)?t.length>=3&&(e={r:t[0],g:t[1],b:t[2],a:255},t.length>3&&(e.a=Mt(t[3]))):(e=qt(t,{r:0,g:0,b:0,a:1})).a=Mt(e.a),e}function Gt(t){return"r"===t.charAt(0)?function(t){const e=$t.exec(t);let i,s,n,o=255;if(e){if(e[7]!==i){const t=+e[7];o=e[8]?vt(t):yt(255*t,0,255)}return i=+e[1],s=+e[3],n=+e[5],i=255&(e[2]?vt(i):yt(i,0,255)),s=255&(e[4]?vt(s):yt(s,0,255)),n=255&(e[6]?vt(n):yt(n,0,255)),{r:i,g:s,b:n,a:o}}}(t):Bt(t)}class Zt{constructor(t){if(t instanceof Zt)return t;const e=typeof t;let i;var s,n,o;"object"===e?i=Kt(t):"string"===e&&(o=(s=t).length,"#"===s[0]&&(4===o||5===o?n={r:255&17*St[s[1]],g:255&17*St[s[2]],b:255&17*St[s[3]],a:5===o?17*St[s[4]]:255}:7!==o&&9!==o||(n={r:St[s[1]]<<4|St[s[2]],g:St[s[3]]<<4|St[s[4]],b:St[s[5]]<<4|St[s[6]],a:9===o?St[s[7]]<<4|St[s[8]]:255})),i=n||jt(t)||Gt(t)),this._rgb=i,this._valid=!!i}get valid(){return this._valid}get rgb(){var t=qt(this._rgb);return t&&(t.a=wt(t.a)),t}set rgb(t){this._rgb=Kt(t)}rgbString(){return this._valid?(t=this._rgb)&&(t.a<255?`rgba(${t.r}, ${t.g}, ${t.b}, ${wt(t.a)})`:`rgb(${t.r}, ${t.g}, ${t.b})`):void 0;var t}hexString(){return this._valid?At(this._rgb):void 0}hslString(){return this._valid?function(t){if(!t)return;const e=It(t),i=e[0],s=kt(e[1]),n=kt(e[2]);return t.a<255?`hsla(${i}, ${s}%, ${n}%, ${wt(t.a)})`:`hsl(${i}, ${s}%, ${n}%)`}(this._rgb):void 0}mix(t,e){if(t){const i=this.rgb,s=t.rgb;let n;const o=e===n?.5:e,a=2*o-1,r=i.a-s.a,l=((a*r==-1?a:(a+r)/(1+a*r))+1)/2;n=1-l,i.r=255&l*i.r+n*s.r+.5,i.g=255&l*i.g+n*s.g+.5,i.b=255&l*i.b+n*s.b+.5,i.a=o*i.a+(1-o)*s.a,this.rgb=i}return this}interpolate(t,e){return t&&(this._rgb=function(t,e,i){const s=Ut(wt(t.r)),n=Ut(wt(t.g)),o=Ut(wt(t.b));return{r:Mt(Yt(s+i*(Ut(wt(e.r))-s))),g:Mt(Yt(n+i*(Ut(wt(e.g))-n))),b:Mt(Yt(o+i*(Ut(wt(e.b))-o))),a:t.a+i*(e.a-t.a)}}(this._rgb,t._rgb,e)),this}clone(){return new Zt(this.rgb)}alpha(t){return this._rgb.a=Mt(t),this}clearer(t){return this._rgb.a*=1-t,this}greyscale(){const t=this._rgb,e=_t(.3*t.r+.59*t.g+.11*t.b);return t.r=t.g=t.b=e,this}opaquer(t){return this._rgb.a*=1+t,this}negate(){const t=this._rgb;return t.r=255-t.r,t.g=255-t.g,t.b=255-t.b,this}lighten(t){return Xt(this._rgb,2,t),this}darken(t){return Xt(this._rgb,2,-t),this}saturate(t){return Xt(this._rgb,1,t),this}desaturate(t){return Xt(this._rgb,1,-t),this}rotate(t){return function(t,e){var i=It(t);i[0]=Vt(i[0]+e),i=Ft(i),t.r=i[0],t.g=i[1],t.b=i[2]}(this._rgb,t),this}}function Jt(t){if(t&&"object"==typeof t){const e=t.toString();return"[object CanvasPattern]"===e||"[object CanvasGradient]"===e}return!1}function Qt(t){return Jt(t)?t:new Zt(t)}function te(t){return Jt(t)?t:new Zt(t).saturate(.5).darken(.1).hexString()}const ee=["x","y","borderWidth","radius","tension"],ie=["color","borderColor","backgroundColor"];const se=new Map;function ne(t,e,i){return function(t,e){e=e||{};const i=t+JSON.stringify(e);let s=se.get(i);return s||(s=new Intl.NumberFormat(t,e),se.set(i,s)),s}(e,i).format(t)}const oe={values:t=>n(t)?t:""+t,numeric(t,e,i){if(0===t)return"0";const s=this.chart.options.locale;let n,o=t;if(i.length>1){const e=Math.max(Math.abs(i[0].value),Math.abs(i[i.length-1].value));(e<1e-4||e>1e15)&&(n="scientific"),o=function(t,e){let i=e.length>3?e[2].value-e[1].value:e[1].value-e[0].value;Math.abs(i)>=1&&t!==Math.floor(t)&&(i=t-Math.floor(t));return i}(t,i)}const a=z(Math.abs(o)),r=isNaN(a)?1:Math.max(Math.min(-1*Math.floor(a),20),0),l={notation:n,minimumFractionDigits:r,maximumFractionDigits:r};return Object.assign(l,this.options.ticks.format),ne(t,s,l)},logarithmic(t,e,i){if(0===t)return"0";const s=i[e].significand||t/Math.pow(10,Math.floor(z(t)));return[1,2,3,5,10,15].includes(s)||e>.8*i.length?oe.numeric.call(this,t,e,i):""}};var ae={formatters:oe};const re=Object.create(null),le=Object.create(null);function he(t,e){if(!e)return t;const i=e.split(".");for(let e=0,s=i.length;et.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(t,e)=>te(e.backgroundColor),this.hoverBorderColor=(t,e)=>te(e.borderColor),this.hoverColor=(t,e)=>te(e.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(t),this.apply(e)}set(t,e){return ce(this,t,e)}get(t){return he(this,t)}describe(t,e){return ce(le,t,e)}override(t,e){return ce(re,t,e)}route(t,e,i,s){const n=he(this,t),a=he(this,i),r="_"+e;Object.defineProperties(n,{[r]:{value:n[e],writable:!0},[e]:{enumerable:!0,get(){const t=this[r],e=a[s];return o(t)?Object.assign({},e,t):l(t,e)},set(t){this[r]=t}}})}apply(t){t.forEach((t=>t(this)))}}var ue=new de({_scriptable:t=>!t.startsWith("on"),_indexable:t=>"events"!==t,hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}},[function(t){t.set("animation",{delay:void 0,duration:1e3,easing:"easeOutQuart",fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),t.describe("animation",{_fallback:!1,_indexable:!1,_scriptable:t=>"onProgress"!==t&&"onComplete"!==t&&"fn"!==t}),t.set("animations",{colors:{type:"color",properties:ie},numbers:{type:"number",properties:ee}}),t.describe("animations",{_fallback:"animation"}),t.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:t=>0|t}}}})},function(t){t.set("layout",{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})},function(t){t.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:"ticks",clip:!0,grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(t,e)=>e.lineWidth,tickColor:(t,e)=>e.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:ae.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),t.route("scale.ticks","color","","color"),t.route("scale.grid","color","","borderColor"),t.route("scale.border","color","","borderColor"),t.route("scale.title","color","","color"),t.describe("scale",{_fallback:!1,_scriptable:t=>!t.startsWith("before")&&!t.startsWith("after")&&"callback"!==t&&"parser"!==t,_indexable:t=>"borderDash"!==t&&"tickBorderDash"!==t&&"dash"!==t}),t.describe("scales",{_fallback:"scale"}),t.describe("scale.ticks",{_scriptable:t=>"backdropPadding"!==t&&"callback"!==t,_indexable:t=>"backdropPadding"!==t})}]);function fe(){return"undefined"!=typeof window&&"undefined"!=typeof document}function ge(t){let e=t.parentNode;return e&&"[object ShadowRoot]"===e.toString()&&(e=e.host),e}function pe(t,e,i){let s;return"string"==typeof t?(s=parseInt(t,10),-1!==t.indexOf("%")&&(s=s/100*e.parentNode[i])):s=t,s}const me=t=>t.ownerDocument.defaultView.getComputedStyle(t,null);function be(t,e){return me(t).getPropertyValue(e)}const xe=["top","right","bottom","left"];function _e(t,e,i){const s={};i=i?"-"+i:"";for(let n=0;n<4;n++){const o=xe[n];s[o]=parseFloat(t[e+"-"+o+i])||0}return s.width=s.left+s.right,s.height=s.top+s.bottom,s}const ye=(t,e,i)=>(t>0||e>0)&&(!i||!i.shadowRoot);function ve(t,e){if("native"in t)return t;const{canvas:i,currentDevicePixelRatio:s}=e,n=me(i),o="border-box"===n.boxSizing,a=_e(n,"padding"),r=_e(n,"border","width"),{x:l,y:h,box:c}=function(t,e){const i=t.touches,s=i&&i.length?i[0]:t,{offsetX:n,offsetY:o}=s;let a,r,l=!1;if(ye(n,o,t.target))a=n,r=o;else{const t=e.getBoundingClientRect();a=s.clientX-t.left,r=s.clientY-t.top,l=!0}return{x:a,y:r,box:l}}(t,i),d=a.left+(c&&r.left),u=a.top+(c&&r.top);let{width:f,height:g}=e;return o&&(f-=a.width+r.width,g-=a.height+r.height),{x:Math.round((l-d)/f*i.width/s),y:Math.round((h-u)/g*i.height/s)}}const Me=t=>Math.round(10*t)/10;function we(t,e,i,s){const n=me(t),o=_e(n,"margin"),a=pe(n.maxWidth,t,"clientWidth")||T,r=pe(n.maxHeight,t,"clientHeight")||T,l=function(t,e,i){let s,n;if(void 0===e||void 0===i){const o=ge(t);if(o){const t=o.getBoundingClientRect(),a=me(o),r=_e(a,"border","width"),l=_e(a,"padding");e=t.width-l.width-r.width,i=t.height-l.height-r.height,s=pe(a.maxWidth,o,"clientWidth"),n=pe(a.maxHeight,o,"clientHeight")}else e=t.clientWidth,i=t.clientHeight}return{width:e,height:i,maxWidth:s||T,maxHeight:n||T}}(t,e,i);let{width:h,height:c}=l;if("content-box"===n.boxSizing){const t=_e(n,"border","width"),e=_e(n,"padding");h-=e.width+t.width,c-=e.height+t.height}h=Math.max(0,h-o.width),c=Math.max(0,s?h/s:c-o.height),h=Me(Math.min(h,a,l.maxWidth)),c=Me(Math.min(c,r,l.maxHeight)),h&&!c&&(c=Me(h/2));return(void 0!==e||void 0!==i)&&s&&l.height&&c>l.height&&(c=l.height,h=Me(Math.floor(c*s))),{width:h,height:c}}function ke(t,e,i){const s=e||1,n=Math.floor(t.height*s),o=Math.floor(t.width*s);t.height=Math.floor(t.height),t.width=Math.floor(t.width);const a=t.canvas;return a.style&&(i||!a.style.height&&!a.style.width)&&(a.style.height=`${t.height}px`,a.style.width=`${t.width}px`),(t.currentDevicePixelRatio!==s||a.height!==n||a.width!==o)&&(t.currentDevicePixelRatio=s,a.height=n,a.width=o,t.ctx.setTransform(s,0,0,s,0,0),!0)}const Se=function(){let t=!1;try{const e={get passive(){return t=!0,!1}};fe()&&(window.addEventListener("test",null,e),window.removeEventListener("test",null,e))}catch(t){}return t}();function Pe(t,e){const i=be(t,e),s=i&&i.match(/^(\d+)(\.\d+)?px$/);return s?+s[1]:void 0}function De(t){return!t||s(t.size)||s(t.family)?null:(t.style?t.style+" ":"")+(t.weight?t.weight+" ":"")+t.size+"px "+t.family}function Ce(t,e,i,s,n){let o=e[n];return o||(o=e[n]=t.measureText(n).width,i.push(n)),o>s&&(s=o),s}function Oe(t,e,i,s){let o=(s=s||{}).data=s.data||{},a=s.garbageCollect=s.garbageCollect||[];s.font!==e&&(o=s.data={},a=s.garbageCollect=[],s.font=e),t.save(),t.font=e;let r=0;const l=i.length;let h,c,d,u,f;for(h=0;hi.length){for(h=0;h0&&t.stroke()}}function Re(t,e,i){return i=i||.5,!e||t&&t.x>e.left-i&&t.xe.top-i&&t.y0&&""!==r.strokeColor;let c,d;for(t.save(),t.font=a.string,function(t,e){e.translation&&t.translate(e.translation[0],e.translation[1]),s(e.rotation)||t.rotate(e.rotation),e.color&&(t.fillStyle=e.color),e.textAlign&&(t.textAlign=e.textAlign),e.textBaseline&&(t.textBaseline=e.textBaseline)}(t,r),c=0;ct[0])){const o=i||t;void 0===s&&(s=ti("_fallback",t));const a={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:t,_rootScopes:o,_fallback:s,_getTarget:n,override:i=>je([i,...t],e,o,s)};return new Proxy(a,{deleteProperty:(e,i)=>(delete e[i],delete e._keys,delete t[0][i],!0),get:(i,s)=>qe(i,s,(()=>function(t,e,i,s){let n;for(const o of e)if(n=ti(Ue(o,t),i),void 0!==n)return Xe(t,n)?Je(i,s,t,n):n}(s,e,t,i))),getOwnPropertyDescriptor:(t,e)=>Reflect.getOwnPropertyDescriptor(t._scopes[0],e),getPrototypeOf:()=>Reflect.getPrototypeOf(t[0]),has:(t,e)=>ei(t).includes(e),ownKeys:t=>ei(t),set(t,e,i){const s=t._storage||(t._storage=n());return t[e]=s[e]=i,delete t._keys,!0}})}function $e(t,e,i,s){const a={_cacheable:!1,_proxy:t,_context:e,_subProxy:i,_stack:new Set,_descriptors:Ye(t,s),setContext:e=>$e(t,e,i,s),override:n=>$e(t.override(n),e,i,s)};return new Proxy(a,{deleteProperty:(e,i)=>(delete e[i],delete t[i],!0),get:(t,e,i)=>qe(t,e,(()=>function(t,e,i){const{_proxy:s,_context:a,_subProxy:r,_descriptors:l}=t;let h=s[e];S(h)&&l.isScriptable(e)&&(h=function(t,e,i,s){const{_proxy:n,_context:o,_subProxy:a,_stack:r}=i;if(r.has(t))throw new Error("Recursion detected: "+Array.from(r).join("->")+"->"+t);r.add(t);let l=e(o,a||s);r.delete(t),Xe(t,l)&&(l=Je(n._scopes,n,t,l));return l}(e,h,t,i));n(h)&&h.length&&(h=function(t,e,i,s){const{_proxy:n,_context:a,_subProxy:r,_descriptors:l}=i;if(void 0!==a.index&&s(t))return e[a.index%e.length];if(o(e[0])){const i=e,s=n._scopes.filter((t=>t!==i));e=[];for(const o of i){const i=Je(s,n,t,o);e.push($e(i,a,r&&r[t],l))}}return e}(e,h,t,l.isIndexable));Xe(e,h)&&(h=$e(h,a,r&&r[e],l));return h}(t,e,i))),getOwnPropertyDescriptor:(e,i)=>e._descriptors.allKeys?Reflect.has(t,i)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(t,i),getPrototypeOf:()=>Reflect.getPrototypeOf(t),has:(e,i)=>Reflect.has(t,i),ownKeys:()=>Reflect.ownKeys(t),set:(e,i,s)=>(t[i]=s,delete e[i],!0)})}function Ye(t,e={scriptable:!0,indexable:!0}){const{_scriptable:i=e.scriptable,_indexable:s=e.indexable,_allKeys:n=e.allKeys}=t;return{allKeys:n,scriptable:i,indexable:s,isScriptable:S(i)?i:()=>i,isIndexable:S(s)?s:()=>s}}const Ue=(t,e)=>t?t+w(e):e,Xe=(t,e)=>o(e)&&"adapters"!==t&&(null===Object.getPrototypeOf(e)||e.constructor===Object);function qe(t,e,i){if(Object.prototype.hasOwnProperty.call(t,e))return t[e];const s=i();return t[e]=s,s}function Ke(t,e,i){return S(t)?t(e,i):t}const Ge=(t,e)=>!0===t?e:"string"==typeof t?M(e,t):void 0;function Ze(t,e,i,s,n){for(const o of e){const e=Ge(i,o);if(e){t.add(e);const o=Ke(e._fallback,i,n);if(void 0!==o&&o!==i&&o!==s)return o}else if(!1===e&&void 0!==s&&i!==s)return null}return!1}function Je(t,e,i,s){const a=e._rootScopes,r=Ke(e._fallback,i,s),l=[...t,...a],h=new Set;h.add(s);let c=Qe(h,l,i,r||i,s);return null!==c&&((void 0===r||r===i||(c=Qe(h,l,r,c,s),null!==c))&&je(Array.from(h),[""],a,r,(()=>function(t,e,i){const s=t._getTarget();e in s||(s[e]={});const a=s[e];if(n(a)&&o(i))return i;return a||{}}(e,i,s))))}function Qe(t,e,i,s,n){for(;i;)i=Ze(t,e,i,s,n);return i}function ti(t,e){for(const i of e){if(!i)continue;const e=i[t];if(void 0!==e)return e}}function ei(t){let e=t._keys;return e||(e=t._keys=function(t){const e=new Set;for(const i of t)for(const t of Object.keys(i).filter((t=>!t.startsWith("_"))))e.add(t);return Array.from(e)}(t._scopes)),e}function ii(t,e,i,s){const{iScale:n}=t,{key:o="r"}=this._parsing,a=new Array(s);let r,l,h,c;for(r=0,l=s;re"x"===t?"y":"x";function ai(t,e,i,s){const n=t.skip?e:t,o=e,a=i.skip?e:i,r=q(o,n),l=q(a,o);let h=r/(r+l),c=l/(r+l);h=isNaN(h)?0:h,c=isNaN(c)?0:c;const d=s*h,u=s*c;return{previous:{x:o.x-d*(a.x-n.x),y:o.y-d*(a.y-n.y)},next:{x:o.x+u*(a.x-n.x),y:o.y+u*(a.y-n.y)}}}function ri(t,e="x"){const i=oi(e),s=t.length,n=Array(s).fill(0),o=Array(s);let a,r,l,h=ni(t,0);for(a=0;a!t.skip))),"monotone"===e.cubicInterpolationMode)ri(t,n);else{let i=s?t[t.length-1]:t[0];for(o=0,a=t.length;o0===t||1===t,di=(t,e,i)=>-Math.pow(2,10*(t-=1))*Math.sin((t-e)*O/i),ui=(t,e,i)=>Math.pow(2,-10*t)*Math.sin((t-e)*O/i)+1,fi={linear:t=>t,easeInQuad:t=>t*t,easeOutQuad:t=>-t*(t-2),easeInOutQuad:t=>(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1),easeInCubic:t=>t*t*t,easeOutCubic:t=>(t-=1)*t*t+1,easeInOutCubic:t=>(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2),easeInQuart:t=>t*t*t*t,easeOutQuart:t=>-((t-=1)*t*t*t-1),easeInOutQuart:t=>(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2),easeInQuint:t=>t*t*t*t*t,easeOutQuint:t=>(t-=1)*t*t*t*t+1,easeInOutQuint:t=>(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2),easeInSine:t=>1-Math.cos(t*E),easeOutSine:t=>Math.sin(t*E),easeInOutSine:t=>-.5*(Math.cos(C*t)-1),easeInExpo:t=>0===t?0:Math.pow(2,10*(t-1)),easeOutExpo:t=>1===t?1:1-Math.pow(2,-10*t),easeInOutExpo:t=>ci(t)?t:t<.5?.5*Math.pow(2,10*(2*t-1)):.5*(2-Math.pow(2,-10*(2*t-1))),easeInCirc:t=>t>=1?t:-(Math.sqrt(1-t*t)-1),easeOutCirc:t=>Math.sqrt(1-(t-=1)*t),easeInOutCirc:t=>(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1),easeInElastic:t=>ci(t)?t:di(t,.075,.3),easeOutElastic:t=>ci(t)?t:ui(t,.075,.3),easeInOutElastic(t){const e=.1125;return ci(t)?t:t<.5?.5*di(2*t,e,.45):.5+.5*ui(2*t-1,e,.45)},easeInBack(t){const e=1.70158;return t*t*((e+1)*t-e)},easeOutBack(t){const e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack(t){let e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:t=>1-fi.easeOutBounce(1-t),easeOutBounce(t){const e=7.5625,i=2.75;return t<1/i?e*t*t:t<2/i?e*(t-=1.5/i)*t+.75:t<2.5/i?e*(t-=2.25/i)*t+.9375:e*(t-=2.625/i)*t+.984375},easeInOutBounce:t=>t<.5?.5*fi.easeInBounce(2*t):.5*fi.easeOutBounce(2*t-1)+.5};function gi(t,e,i,s){return{x:t.x+i*(e.x-t.x),y:t.y+i*(e.y-t.y)}}function pi(t,e,i,s){return{x:t.x+i*(e.x-t.x),y:"middle"===s?i<.5?t.y:e.y:"after"===s?i<1?t.y:e.y:i>0?e.y:t.y}}function mi(t,e,i,s){const n={x:t.cp2x,y:t.cp2y},o={x:e.cp1x,y:e.cp1y},a=gi(t,n,i),r=gi(n,o,i),l=gi(o,e,i),h=gi(a,r,i),c=gi(r,l,i);return gi(h,c,i)}const bi=/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/,xi=/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/;function _i(t,e){const i=(""+t).match(bi);if(!i||"normal"===i[1])return 1.2*e;switch(t=+i[2],i[3]){case"px":return t;case"%":t/=100}return e*t}const yi=t=>+t||0;function vi(t,e){const i={},s=o(e),n=s?Object.keys(e):e,a=o(t)?s?i=>l(t[i],t[e[i]]):e=>t[e]:()=>t;for(const t of n)i[t]=yi(a(t));return i}function Mi(t){return vi(t,{top:"y",right:"x",bottom:"y",left:"x"})}function wi(t){return vi(t,["topLeft","topRight","bottomLeft","bottomRight"])}function ki(t){const e=Mi(t);return e.width=e.left+e.right,e.height=e.top+e.bottom,e}function Si(t,e){t=t||{},e=e||ue.font;let i=l(t.size,e.size);"string"==typeof i&&(i=parseInt(i,10));let s=l(t.style,e.style);s&&!(""+s).match(xi)&&(console.warn('Invalid font style specified: "'+s+'"'),s=void 0);const n={family:l(t.family,e.family),lineHeight:_i(l(t.lineHeight,e.lineHeight),i),size:i,style:s,weight:l(t.weight,e.weight),string:""};return n.string=De(n),n}function Pi(t,e,i,s){let o,a,r,l=!0;for(o=0,a=t.length;oi&&0===t?0:t+e;return{min:a(s,-Math.abs(o)),max:a(n,o)}}function Ci(t,e){return Object.assign(Object.create(t),e)}function Oi(t,e,i){return t?function(t,e){return{x:i=>t+t+e-i,setWidth(t){e=t},textAlign:t=>"center"===t?t:"right"===t?"left":"right",xPlus:(t,e)=>t-e,leftForLtr:(t,e)=>t-e}}(e,i):{x:t=>t,setWidth(t){},textAlign:t=>t,xPlus:(t,e)=>t+e,leftForLtr:(t,e)=>t}}function Ai(t,e){let i,s;"ltr"!==e&&"rtl"!==e||(i=t.canvas.style,s=[i.getPropertyValue("direction"),i.getPropertyPriority("direction")],i.setProperty("direction",e,"important"),t.prevTextDirection=s)}function Ti(t,e){void 0!==e&&(delete t.prevTextDirection,t.canvas.style.setProperty("direction",e[0],e[1]))}function Li(t){return"angle"===t?{between:Z,compare:K,normalize:G}:{between:tt,compare:(t,e)=>t-e,normalize:t=>t}}function Ei({start:t,end:e,count:i,loop:s,style:n}){return{start:t%i,end:e%i,loop:s&&(e-t+1)%i==0,style:n}}function Ri(t,e,i){if(!i)return[t];const{property:s,start:n,end:o}=i,a=e.length,{compare:r,between:l,normalize:h}=Li(s),{start:c,end:d,loop:u,style:f}=function(t,e,i){const{property:s,start:n,end:o}=i,{between:a,normalize:r}=Li(s),l=e.length;let h,c,{start:d,end:u,loop:f}=t;if(f){for(d+=l,u+=l,h=0,c=l;hx||l(n,b,p)&&0!==r(n,b),v=()=>!x||0===r(o,p)||l(o,b,p);for(let t=c,i=c;t<=d;++t)m=e[t%a],m.skip||(p=h(m[s]),p!==b&&(x=l(p,n,o),null===_&&y()&&(_=0===r(p,n)?t:i),null!==_&&v()&&(g.push(Ei({start:_,end:t,loop:u,count:a,style:f})),_=null),i=t,b=p));return null!==_&&g.push(Ei({start:_,end:d,loop:u,count:a,style:f})),g}function Ii(t,e){const i=[],s=t.segments;for(let n=0;nn&&t[o%e].skip;)o--;return o%=e,{start:n,end:o}}(i,n,o,s);if(!0===s)return Fi(t,[{start:a,end:r,loop:o}],i,e);return Fi(t,function(t,e,i,s){const n=t.length,o=[];let a,r=e,l=t[e];for(a=e+1;a<=i;++a){const i=t[a%n];i.skip||i.stop?l.skip||(s=!1,o.push({start:e%n,end:(a-1)%n,loop:s}),e=r=i.stop?a:null):(r=a,l.skip&&(e=a)),l=i}return null!==r&&o.push({start:e%n,end:r%n,loop:s}),o}(i,a,r{t[a](e[i],n)&&(o.push({element:t,datasetIndex:s,index:l}),r=r||t.inRange(e.x,e.y,n))})),s&&!r?[]:o}var Xi={evaluateInteractionItems:Hi,modes:{index(t,e,i,s){const n=ve(e,t),o=i.axis||"x",a=i.includeInvisible||!1,r=i.intersect?ji(t,n,o,s,a):Yi(t,n,o,!1,s,a),l=[];return r.length?(t.getSortedVisibleDatasetMetas().forEach((t=>{const e=r[0].index,i=t.data[e];i&&!i.skip&&l.push({element:i,datasetIndex:t.index,index:e})})),l):[]},dataset(t,e,i,s){const n=ve(e,t),o=i.axis||"xy",a=i.includeInvisible||!1;let r=i.intersect?ji(t,n,o,s,a):Yi(t,n,o,!1,s,a);if(r.length>0){const e=r[0].datasetIndex,i=t.getDatasetMeta(e).data;r=[];for(let t=0;tji(t,ve(e,t),i.axis||"xy",s,i.includeInvisible||!1),nearest(t,e,i,s){const n=ve(e,t),o=i.axis||"xy",a=i.includeInvisible||!1;return Yi(t,n,o,i.intersect,s,a)},x:(t,e,i,s)=>Ui(t,ve(e,t),"x",i.intersect,s),y:(t,e,i,s)=>Ui(t,ve(e,t),"y",i.intersect,s)}};const qi=["left","top","right","bottom"];function Ki(t,e){return t.filter((t=>t.pos===e))}function Gi(t,e){return t.filter((t=>-1===qi.indexOf(t.pos)&&t.box.axis===e))}function Zi(t,e){return t.sort(((t,i)=>{const s=e?i:t,n=e?t:i;return s.weight===n.weight?s.index-n.index:s.weight-n.weight}))}function Ji(t,e){const i=function(t){const e={};for(const i of t){const{stack:t,pos:s,stackWeight:n}=i;if(!t||!qi.includes(s))continue;const o=e[t]||(e[t]={count:0,placed:0,weight:0,size:0});o.count++,o.weight+=n}return e}(t),{vBoxMaxWidth:s,hBoxMaxHeight:n}=e;let o,a,r;for(o=0,a=t.length;o{s[t]=Math.max(e[t],i[t])})),s}return s(t?["left","right"]:["top","bottom"])}function ss(t,e,i,s){const n=[];let o,a,r,l,h,c;for(o=0,a=t.length,h=0;ot.box.fullSize)),!0),s=Zi(Ki(e,"left"),!0),n=Zi(Ki(e,"right")),o=Zi(Ki(e,"top"),!0),a=Zi(Ki(e,"bottom")),r=Gi(e,"x"),l=Gi(e,"y");return{fullSize:i,leftAndTop:s.concat(o),rightAndBottom:n.concat(l).concat(a).concat(r),chartArea:Ki(e,"chartArea"),vertical:s.concat(n).concat(l),horizontal:o.concat(a).concat(r)}}(t.boxes),l=r.vertical,h=r.horizontal;u(t.boxes,(t=>{"function"==typeof t.beforeLayout&&t.beforeLayout()}));const c=l.reduce(((t,e)=>e.box.options&&!1===e.box.options.display?t:t+1),0)||1,d=Object.freeze({outerWidth:e,outerHeight:i,padding:n,availableWidth:o,availableHeight:a,vBoxMaxWidth:o/2/c,hBoxMaxHeight:a/2}),f=Object.assign({},n);ts(f,ki(s));const g=Object.assign({maxPadding:f,w:o,h:a,x:n.left,y:n.top},n),p=Ji(l.concat(h),d);ss(r.fullSize,g,d,p),ss(l,g,d,p),ss(h,g,d,p)&&ss(l,g,d,p),function(t){const e=t.maxPadding;function i(i){const s=Math.max(e[i]-t[i],0);return t[i]+=s,s}t.y+=i("top"),t.x+=i("left"),i("right"),i("bottom")}(g),os(r.leftAndTop,g,d,p),g.x+=g.w,g.y+=g.h,os(r.rightAndBottom,g,d,p),t.chartArea={left:g.left,top:g.top,right:g.left+g.w,bottom:g.top+g.h,height:g.h,width:g.w},u(r.chartArea,(e=>{const i=e.box;Object.assign(i,t.chartArea),i.update(g.w,g.h,{left:0,top:0,right:0,bottom:0})}))}};class rs{acquireContext(t,e){}releaseContext(t){return!1}addEventListener(t,e,i){}removeEventListener(t,e,i){}getDevicePixelRatio(){return 1}getMaximumSize(t,e,i,s){return e=Math.max(0,e||t.width),i=i||t.height,{width:e,height:Math.max(0,s?Math.floor(e/s):i)}}isAttached(t){return!0}updateConfig(t){}}class ls extends rs{acquireContext(t){return t&&t.getContext&&t.getContext("2d")||null}updateConfig(t){t.options.animation=!1}}const hs="$chartjs",cs={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},ds=t=>null===t||""===t;const us=!!Se&&{passive:!0};function fs(t,e,i){t.canvas.removeEventListener(e,i,us)}function gs(t,e){for(const i of t)if(i===e||i.contains(e))return!0}function ps(t,e,i){const s=t.canvas,n=new MutationObserver((t=>{let e=!1;for(const i of t)e=e||gs(i.addedNodes,s),e=e&&!gs(i.removedNodes,s);e&&i()}));return n.observe(document,{childList:!0,subtree:!0}),n}function ms(t,e,i){const s=t.canvas,n=new MutationObserver((t=>{let e=!1;for(const i of t)e=e||gs(i.removedNodes,s),e=e&&!gs(i.addedNodes,s);e&&i()}));return n.observe(document,{childList:!0,subtree:!0}),n}const bs=new Map;let xs=0;function _s(){const t=window.devicePixelRatio;t!==xs&&(xs=t,bs.forEach(((e,i)=>{i.currentDevicePixelRatio!==t&&e()})))}function ys(t,e,i){const s=t.canvas,n=s&&ge(s);if(!n)return;const o=ct(((t,e)=>{const s=n.clientWidth;i(t,e),s{const e=t[0],i=e.contentRect.width,s=e.contentRect.height;0===i&&0===s||o(i,s)}));return a.observe(n),function(t,e){bs.size||window.addEventListener("resize",_s),bs.set(t,e)}(t,o),a}function vs(t,e,i){i&&i.disconnect(),"resize"===e&&function(t){bs.delete(t),bs.size||window.removeEventListener("resize",_s)}(t)}function Ms(t,e,i){const s=t.canvas,n=ct((e=>{null!==t.ctx&&i(function(t,e){const i=cs[t.type]||t.type,{x:s,y:n}=ve(t,e);return{type:i,chart:e,native:t,x:void 0!==s?s:null,y:void 0!==n?n:null}}(e,t))}),t);return function(t,e,i){t.addEventListener(e,i,us)}(s,e,n),n}class ws extends rs{acquireContext(t,e){const i=t&&t.getContext&&t.getContext("2d");return i&&i.canvas===t?(function(t,e){const i=t.style,s=t.getAttribute("height"),n=t.getAttribute("width");if(t[hs]={initial:{height:s,width:n,style:{display:i.display,height:i.height,width:i.width}}},i.display=i.display||"block",i.boxSizing=i.boxSizing||"border-box",ds(n)){const e=Pe(t,"width");void 0!==e&&(t.width=e)}if(ds(s))if(""===t.style.height)t.height=t.width/(e||2);else{const e=Pe(t,"height");void 0!==e&&(t.height=e)}}(t,e),i):null}releaseContext(t){const e=t.canvas;if(!e[hs])return!1;const i=e[hs].initial;["height","width"].forEach((t=>{const n=i[t];s(n)?e.removeAttribute(t):e.setAttribute(t,n)}));const n=i.style||{};return Object.keys(n).forEach((t=>{e.style[t]=n[t]})),e.width=e.width,delete e[hs],!0}addEventListener(t,e,i){this.removeEventListener(t,e);const s=t.$proxies||(t.$proxies={}),n={attach:ps,detach:ms,resize:ys}[e]||Ms;s[e]=n(t,e,i)}removeEventListener(t,e){const i=t.$proxies||(t.$proxies={}),s=i[e];if(!s)return;({attach:vs,detach:vs,resize:vs}[e]||fs)(t,e,s),i[e]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(t,e,i,s){return we(t,e,i,s)}isAttached(t){const e=ge(t);return!(!e||!e.isConnected)}}function ks(t){return!fe()||"undefined"!=typeof OffscreenCanvas&&t instanceof OffscreenCanvas?ls:ws}var Ss=Object.freeze({__proto__:null,BasePlatform:rs,BasicPlatform:ls,DomPlatform:ws,_detectPlatform:ks});const Ps="transparent",Ds={boolean:(t,e,i)=>i>.5?e:t,color(t,e,i){const s=Qt(t||Ps),n=s.valid&&Qt(e||Ps);return n&&n.valid?n.mix(s,i).hexString():e},number:(t,e,i)=>t+(e-t)*i};class Cs{constructor(t,e,i,s){const n=e[i];s=Pi([t.to,s,n,t.from]);const o=Pi([t.from,n,s]);this._active=!0,this._fn=t.fn||Ds[t.type||typeof o],this._easing=fi[t.easing]||fi.linear,this._start=Math.floor(Date.now()+(t.delay||0)),this._duration=this._total=Math.floor(t.duration),this._loop=!!t.loop,this._target=e,this._prop=i,this._from=o,this._to=s,this._promises=void 0}active(){return this._active}update(t,e,i){if(this._active){this._notify(!1);const s=this._target[this._prop],n=i-this._start,o=this._duration-n;this._start=i,this._duration=Math.floor(Math.max(o,t.duration)),this._total+=n,this._loop=!!t.loop,this._to=Pi([t.to,e,s,t.from]),this._from=Pi([t.from,s,e])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(t){const e=t-this._start,i=this._duration,s=this._prop,n=this._from,o=this._loop,a=this._to;let r;if(this._active=n!==a&&(o||e1?2-r:r,r=this._easing(Math.min(1,Math.max(0,r))),this._target[s]=this._fn(n,a,r))}wait(){const t=this._promises||(this._promises=[]);return new Promise(((e,i)=>{t.push({res:e,rej:i})}))}_notify(t){const e=t?"res":"rej",i=this._promises||[];for(let t=0;t{const a=t[s];if(!o(a))return;const r={};for(const t of e)r[t]=a[t];(n(a.properties)&&a.properties||[s]).forEach((t=>{t!==s&&i.has(t)||i.set(t,r)}))}))}_animateOptions(t,e){const i=e.options,s=function(t,e){if(!e)return;let i=t.options;if(!i)return void(t.options=e);i.$shared&&(t.options=i=Object.assign({},i,{$shared:!1,$animations:{}}));return i}(t,i);if(!s)return[];const n=this._createAnimations(s,i);return i.$shared&&function(t,e){const i=[],s=Object.keys(e);for(let e=0;e{t.options=i}),(()=>{})),n}_createAnimations(t,e){const i=this._properties,s=[],n=t.$animations||(t.$animations={}),o=Object.keys(e),a=Date.now();let r;for(r=o.length-1;r>=0;--r){const l=o[r];if("$"===l.charAt(0))continue;if("options"===l){s.push(...this._animateOptions(t,e));continue}const h=e[l];let c=n[l];const d=i.get(l);if(c){if(d&&c.active()){c.update(d,h,a);continue}c.cancel()}d&&d.duration?(n[l]=c=new Cs(d,t,l,h),s.push(c)):t[l]=h}return s}update(t,e){if(0===this._properties.size)return void Object.assign(t,e);const i=this._createAnimations(t,e);return i.length?(xt.add(this._chart,i),!0):void 0}}function As(t,e){const i=t&&t.options||{},s=i.reverse,n=void 0===i.min?e:0,o=void 0===i.max?e:0;return{start:s?o:n,end:s?n:o}}function Ts(t,e){const i=[],s=t._getSortedDatasetMetas(e);let n,o;for(n=0,o=s.length;n0||!i&&e<0)return n.index}return null}function zs(t,e){const{chart:i,_cachedMeta:s}=t,n=i._stacks||(i._stacks={}),{iScale:o,vScale:a,index:r}=s,l=o.axis,h=a.axis,c=function(t,e,i){return`${t.id}.${e.id}.${i.stack||i.type}`}(o,a,s),d=e.length;let u;for(let t=0;ti[t].axis===e)).shift()}function Vs(t,e){const i=t.controller.index,s=t.vScale&&t.vScale.axis;if(s){e=e||t._parsed;for(const t of e){const e=t._stacks;if(!e||void 0===e[s]||void 0===e[s][i])return;delete e[s][i],void 0!==e[s]._visualValues&&void 0!==e[s]._visualValues[i]&&delete e[s]._visualValues[i]}}}const Bs=t=>"reset"===t||"none"===t,Ws=(t,e)=>e?t:Object.assign({},t);class Ns{static defaults={};static datasetElementType=null;static dataElementType=null;constructor(t,e){this.chart=t,this._ctx=t.ctx,this.index=e,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){const t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=Es(t.vScale,t),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled("filler")&&console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options")}updateIndex(t){this.index!==t&&Vs(this._cachedMeta),this.index=t}linkScales(){const t=this.chart,e=this._cachedMeta,i=this.getDataset(),s=(t,e,i,s)=>"x"===t?e:"r"===t?s:i,n=e.xAxisID=l(i.xAxisID,Fs(t,"x")),o=e.yAxisID=l(i.yAxisID,Fs(t,"y")),a=e.rAxisID=l(i.rAxisID,Fs(t,"r")),r=e.indexAxis,h=e.iAxisID=s(r,n,o,a),c=e.vAxisID=s(r,o,n,a);e.xScale=this.getScaleForId(n),e.yScale=this.getScaleForId(o),e.rScale=this.getScaleForId(a),e.iScale=this.getScaleForId(h),e.vScale=this.getScaleForId(c)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){const e=this._cachedMeta;return t===e.iScale?e.vScale:e.iScale}reset(){this._update("reset")}_destroy(){const t=this._cachedMeta;this._data&&rt(this._data,this),t._stacked&&Vs(t)}_dataCheck(){const t=this.getDataset(),e=t.data||(t.data=[]),i=this._data;if(o(e))this._data=function(t){const e=Object.keys(t),i=new Array(e.length);let s,n,o;for(s=0,n=e.length;s0&&i._parsed[t-1];if(!1===this._parsing)i._parsed=s,i._sorted=!0,d=s;else{d=n(s[t])?this.parseArrayData(i,s,t,e):o(s[t])?this.parseObjectData(i,s,t,e):this.parsePrimitiveData(i,s,t,e);const a=()=>null===c[l]||f&&c[l]t&&!e.hidden&&e._stacked&&{keys:Ts(i,!0),values:null})(e,i,this.chart),h={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY},{min:c,max:d}=function(t){const{min:e,max:i,minDefined:s,maxDefined:n}=t.getUserBounds();return{min:s?e:Number.NEGATIVE_INFINITY,max:n?i:Number.POSITIVE_INFINITY}}(r);let u,f;function g(){f=s[u];const e=f[r.axis];return!a(f[t.axis])||c>e||d=0;--u)if(!g()){this.updateRangeFromParsed(h,t,f,l);break}return h}getAllParsedValues(t){const e=this._cachedMeta._parsed,i=[];let s,n,o;for(s=0,n=e.length;s=0&&tthis.getContext(i,s,e)),c);return f.$shared&&(f.$shared=r,n[o]=Object.freeze(Ws(f,r))),f}_resolveAnimations(t,e,i){const s=this.chart,n=this._cachedDataOpts,o=`animation-${e}`,a=n[o];if(a)return a;let r;if(!1!==s.options.animation){const s=this.chart.config,n=s.datasetAnimationScopeKeys(this._type,e),o=s.getOptionScopes(this.getDataset(),n);r=s.createResolver(o,this.getContext(t,i,e))}const l=new Os(s,r&&r.animations);return r&&r._cacheable&&(n[o]=Object.freeze(l)),l}getSharedOptions(t){if(t.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},t))}includeOptions(t,e){return!e||Bs(t)||this.chart._animationsDisabled}_getSharedOptions(t,e){const i=this.resolveDataElementOptions(t,e),s=this._sharedOptions,n=this.getSharedOptions(i),o=this.includeOptions(e,n)||n!==s;return this.updateSharedOptions(n,e,i),{sharedOptions:n,includeOptions:o}}updateElement(t,e,i,s){Bs(s)?Object.assign(t,i):this._resolveAnimations(e,s).update(t,i)}updateSharedOptions(t,e,i){t&&!Bs(e)&&this._resolveAnimations(void 0,e).update(t,i)}_setStyle(t,e,i,s){t.active=s;const n=this.getStyle(e,s);this._resolveAnimations(e,i,s).update(t,{options:!s&&this.getSharedOptions(n)||n})}removeHoverStyle(t,e,i){this._setStyle(t,i,"active",!1)}setHoverStyle(t,e,i){this._setStyle(t,i,"active",!0)}_removeDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!1)}_setDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!0)}_resyncElements(t){const e=this._data,i=this._cachedMeta.data;for(const[t,e,i]of this._syncList)this[t](e,i);this._syncList=[];const s=i.length,n=e.length,o=Math.min(n,s);o&&this.parse(0,o),n>s?this._insertElements(s,n-s,t):n{for(t.length+=e,a=t.length-1;a>=o;a--)t[a]=t[a-e]};for(r(n),a=t;a{s[t]=i[t]&&i[t].active()?i[t]._to:this[t]})),s}}function js(t,e){const i=t.options.ticks,n=function(t){const e=t.options.offset,i=t._tickSize(),s=t._length/i+(e?0:1),n=t._maxLength/i;return Math.floor(Math.min(s,n))}(t),o=Math.min(i.maxTicksLimit||n,n),a=i.major.enabled?function(t){const e=[];let i,s;for(i=0,s=t.length;io)return function(t,e,i,s){let n,o=0,a=i[0];for(s=Math.ceil(s),n=0;nn)return e}return Math.max(n,1)}(a,e,o);if(r>0){let t,i;const n=r>1?Math.round((h-l)/(r-1)):null;for($s(e,c,d,s(n)?0:l-n,l),t=0,i=r-1;t"top"===e||"left"===e?t[e]+i:t[e]-i,Us=(t,e)=>Math.min(e||t,t);function Xs(t,e){const i=[],s=t.length/e,n=t.length;let o=0;for(;oa+r)))return h}function Ks(t){return t.drawTicks?t.tickLength:0}function Gs(t,e){if(!t.display)return 0;const i=Si(t.font,e),s=ki(t.padding);return(n(t.text)?t.text.length:1)*i.lineHeight+s.height}function Zs(t,e,i){let s=ut(t);return(i&&"right"!==e||!i&&"right"===e)&&(s=(t=>"left"===t?"right":"right"===t?"left":t)(s)),s}class Js extends Hs{constructor(t){super(),this.id=t.id,this.type=t.type,this.options=void 0,this.ctx=t.ctx,this.chart=t.chart,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this._margins={left:0,right:0,top:0,bottom:0},this.maxWidth=void 0,this.maxHeight=void 0,this.paddingTop=void 0,this.paddingBottom=void 0,this.paddingLeft=void 0,this.paddingRight=void 0,this.axis=void 0,this.labelRotation=void 0,this.min=void 0,this.max=void 0,this._range=void 0,this.ticks=[],this._gridLineItems=null,this._labelItems=null,this._labelSizes=null,this._length=0,this._maxLength=0,this._longestTextCache={},this._startPixel=void 0,this._endPixel=void 0,this._reversePixels=!1,this._userMax=void 0,this._userMin=void 0,this._suggestedMax=void 0,this._suggestedMin=void 0,this._ticksLength=0,this._borderValue=0,this._cache={},this._dataLimitsCached=!1,this.$context=void 0}init(t){this.options=t.setContext(this.getContext()),this.axis=t.axis,this._userMin=this.parse(t.min),this._userMax=this.parse(t.max),this._suggestedMin=this.parse(t.suggestedMin),this._suggestedMax=this.parse(t.suggestedMax)}parse(t,e){return t}getUserBounds(){let{_userMin:t,_userMax:e,_suggestedMin:i,_suggestedMax:s}=this;return t=r(t,Number.POSITIVE_INFINITY),e=r(e,Number.NEGATIVE_INFINITY),i=r(i,Number.POSITIVE_INFINITY),s=r(s,Number.NEGATIVE_INFINITY),{min:r(t,i),max:r(e,s),minDefined:a(t),maxDefined:a(e)}}getMinMax(t){let e,{min:i,max:s,minDefined:n,maxDefined:o}=this.getUserBounds();if(n&&o)return{min:i,max:s};const a=this.getMatchingVisibleMetas();for(let r=0,l=a.length;rs?s:i,s=n&&i>s?i:s,{min:r(i,r(s,i)),max:r(s,r(i,s))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels||[]}getLabelItems(t=this.chart.chartArea){return this._labelItems||(this._labelItems=this._computeLabelItems(t))}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){d(this.options.beforeUpdate,[this])}update(t,e,i){const{beginAtZero:s,grace:n,ticks:o}=this.options,a=o.sampleSize;this.beforeUpdate(),this.maxWidth=t,this.maxHeight=e,this._margins=i=Object.assign({left:0,right:0,top:0,bottom:0},i),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+i.left+i.right:this.height+i.top+i.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=Di(this,n,s),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const r=a=n||i<=1||!this.isHorizontal())return void(this.labelRotation=s);const h=this._getLabelSizes(),c=h.widest.width,d=h.highest.height,u=J(this.chart.width-c,0,this.maxWidth);o=t.offset?this.maxWidth/i:u/(i-1),c+6>o&&(o=u/(i-(t.offset?.5:1)),a=this.maxHeight-Ks(t.grid)-e.padding-Gs(t.title,this.chart.options.font),r=Math.sqrt(c*c+d*d),l=Y(Math.min(Math.asin(J((h.highest.height+6)/o,-1,1)),Math.asin(J(a/r,-1,1))-Math.asin(J(d/r,-1,1)))),l=Math.max(s,Math.min(n,l))),this.labelRotation=l}afterCalculateLabelRotation(){d(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){d(this.options.beforeFit,[this])}fit(){const t={width:0,height:0},{chart:e,options:{ticks:i,title:s,grid:n}}=this,o=this._isVisible(),a=this.isHorizontal();if(o){const o=Gs(s,e.options.font);if(a?(t.width=this.maxWidth,t.height=Ks(n)+o):(t.height=this.maxHeight,t.width=Ks(n)+o),i.display&&this.ticks.length){const{first:e,last:s,widest:n,highest:o}=this._getLabelSizes(),r=2*i.padding,l=$(this.labelRotation),h=Math.cos(l),c=Math.sin(l);if(a){const e=i.mirror?0:c*n.width+h*o.height;t.height=Math.min(this.maxHeight,t.height+e+r)}else{const e=i.mirror?0:h*n.width+c*o.height;t.width=Math.min(this.maxWidth,t.width+e+r)}this._calculatePadding(e,s,c,h)}}this._handleMargins(),a?(this.width=this._length=e.width-this._margins.left-this._margins.right,this.height=t.height):(this.width=t.width,this.height=this._length=e.height-this._margins.top-this._margins.bottom)}_calculatePadding(t,e,i,s){const{ticks:{align:n,padding:o},position:a}=this.options,r=0!==this.labelRotation,l="top"!==a&&"x"===this.axis;if(this.isHorizontal()){const a=this.getPixelForTick(0)-this.left,h=this.right-this.getPixelForTick(this.ticks.length-1);let c=0,d=0;r?l?(c=s*t.width,d=i*e.height):(c=i*t.height,d=s*e.width):"start"===n?d=e.width:"end"===n?c=t.width:"inner"!==n&&(c=t.width/2,d=e.width/2),this.paddingLeft=Math.max((c-a+o)*this.width/(this.width-a),0),this.paddingRight=Math.max((d-h+o)*this.width/(this.width-h),0)}else{let i=e.height/2,s=t.height/2;"start"===n?(i=0,s=t.height):"end"===n&&(i=e.height,s=0),this.paddingTop=i+o,this.paddingBottom=s+o}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){d(this.options.afterFit,[this])}isHorizontal(){const{axis:t,position:e}=this.options;return"top"===e||"bottom"===e||"x"===t}isFullSize(){return this.options.fullSize}_convertTicksToLabels(t){let e,i;for(this.beforeTickToLabelConversion(),this.generateTickLabels(t),e=0,i=t.length;e{const i=t.gc,s=i.length/2;let n;if(s>e){for(n=0;n({width:r[t]||0,height:l[t]||0});return{first:P(0),last:P(e-1),widest:P(k),highest:P(S),widths:r,heights:l}}getLabelForValue(t){return t}getPixelForValue(t,e){return NaN}getValueForPixel(t){}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getPixelForDecimal(t){this._reversePixels&&(t=1-t);const e=this._startPixel+t*this._length;return Q(this._alignToPixels?Ae(this.chart,e,0):e)}getDecimalForPixel(t){const e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:t,max:e}=this;return t<0&&e<0?e:t>0&&e>0?t:0}getContext(t){const e=this.ticks||[];if(t>=0&&ta*s?a/i:r/s:r*s0}_computeGridLineItems(t){const e=this.axis,i=this.chart,s=this.options,{grid:n,position:a,border:r}=s,h=n.offset,c=this.isHorizontal(),d=this.ticks.length+(h?1:0),u=Ks(n),f=[],g=r.setContext(this.getContext()),p=g.display?g.width:0,m=p/2,b=function(t){return Ae(i,t,p)};let x,_,y,v,M,w,k,S,P,D,C,O;if("top"===a)x=b(this.bottom),w=this.bottom-u,S=x-m,D=b(t.top)+m,O=t.bottom;else if("bottom"===a)x=b(this.top),D=t.top,O=b(t.bottom)-m,w=x+m,S=this.top+u;else if("left"===a)x=b(this.right),M=this.right-u,k=x-m,P=b(t.left)+m,C=t.right;else if("right"===a)x=b(this.left),P=t.left,C=b(t.right)-m,M=x+m,k=this.left+u;else if("x"===e){if("center"===a)x=b((t.top+t.bottom)/2+.5);else if(o(a)){const t=Object.keys(a)[0],e=a[t];x=b(this.chart.scales[t].getPixelForValue(e))}D=t.top,O=t.bottom,w=x+m,S=w+u}else if("y"===e){if("center"===a)x=b((t.left+t.right)/2);else if(o(a)){const t=Object.keys(a)[0],e=a[t];x=b(this.chart.scales[t].getPixelForValue(e))}M=x-m,k=M-u,P=t.left,C=t.right}const A=l(s.ticks.maxTicksLimit,d),T=Math.max(1,Math.ceil(d/A));for(_=0;_0&&(o-=s/2)}d={left:o,top:n,width:s+e.width,height:i+e.height,color:t.backdropColor}}b.push({label:v,font:P,textOffset:O,options:{rotation:m,color:i,strokeColor:o,strokeWidth:h,textAlign:f,textBaseline:A,translation:[M,w],backdrop:d}})}return b}_getXAxisLabelAlignment(){const{position:t,ticks:e}=this.options;if(-$(this.labelRotation))return"top"===t?"left":"right";let i="center";return"start"===e.align?i="left":"end"===e.align?i="right":"inner"===e.align&&(i="inner"),i}_getYAxisLabelAlignment(t){const{position:e,ticks:{crossAlign:i,mirror:s,padding:n}}=this.options,o=t+n,a=this._getLabelSizes().widest.width;let r,l;return"left"===e?s?(l=this.right+n,"near"===i?r="left":"center"===i?(r="center",l+=a/2):(r="right",l+=a)):(l=this.right-o,"near"===i?r="right":"center"===i?(r="center",l-=a/2):(r="left",l=this.left)):"right"===e?s?(l=this.left+n,"near"===i?r="right":"center"===i?(r="center",l-=a/2):(r="left",l-=a)):(l=this.left+o,"near"===i?r="left":"center"===i?(r="center",l+=a/2):(r="right",l=this.right)):r="right",{textAlign:r,x:l}}_computeLabelArea(){if(this.options.ticks.mirror)return;const t=this.chart,e=this.options.position;return"left"===e||"right"===e?{top:0,left:this.left,bottom:t.height,right:this.right}:"top"===e||"bottom"===e?{top:this.top,left:0,bottom:this.bottom,right:t.width}:void 0}drawBackground(){const{ctx:t,options:{backgroundColor:e},left:i,top:s,width:n,height:o}=this;e&&(t.save(),t.fillStyle=e,t.fillRect(i,s,n,o),t.restore())}getLineWidthForValue(t){const e=this.options.grid;if(!this._isVisible()||!e.display)return 0;const i=this.ticks.findIndex((e=>e.value===t));if(i>=0){return e.setContext(this.getContext(i)).lineWidth}return 0}drawGrid(t){const e=this.options.grid,i=this.ctx,s=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(t));let n,o;const a=(t,e,s)=>{s.width&&s.color&&(i.save(),i.lineWidth=s.width,i.strokeStyle=s.color,i.setLineDash(s.borderDash||[]),i.lineDashOffset=s.borderDashOffset,i.beginPath(),i.moveTo(t.x,t.y),i.lineTo(e.x,e.y),i.stroke(),i.restore())};if(e.display)for(n=0,o=s.length;n{this.drawBackground(),this.drawGrid(t),this.drawTitle()}},{z:s,draw:()=>{this.drawBorder()}},{z:e,draw:t=>{this.drawLabels(t)}}]:[{z:e,draw:t=>{this.draw(t)}}]}getMatchingVisibleMetas(t){const e=this.chart.getSortedVisibleDatasetMetas(),i=this.axis+"AxisID",s=[];let n,o;for(n=0,o=e.length;n{const s=i.split("."),n=s.pop(),o=[t].concat(s).join("."),a=e[i].split("."),r=a.pop(),l=a.join(".");ue.route(o,n,l,r)}))}(e,t.defaultRoutes);t.descriptors&&ue.describe(e,t.descriptors)}(t,o,i),this.override&&ue.override(t.id,t.overrides)),o}get(t){return this.items[t]}unregister(t){const e=this.items,i=t.id,s=this.scope;i in e&&delete e[i],s&&i in ue[s]&&(delete ue[s][i],this.override&&delete re[i])}}class tn{constructor(){this.controllers=new Qs(Ns,"datasets",!0),this.elements=new Qs(Hs,"elements"),this.plugins=new Qs(Object,"plugins"),this.scales=new Qs(Js,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...t){this._each("register",t)}remove(...t){this._each("unregister",t)}addControllers(...t){this._each("register",t,this.controllers)}addElements(...t){this._each("register",t,this.elements)}addPlugins(...t){this._each("register",t,this.plugins)}addScales(...t){this._each("register",t,this.scales)}getController(t){return this._get(t,this.controllers,"controller")}getElement(t){return this._get(t,this.elements,"element")}getPlugin(t){return this._get(t,this.plugins,"plugin")}getScale(t){return this._get(t,this.scales,"scale")}removeControllers(...t){this._each("unregister",t,this.controllers)}removeElements(...t){this._each("unregister",t,this.elements)}removePlugins(...t){this._each("unregister",t,this.plugins)}removeScales(...t){this._each("unregister",t,this.scales)}_each(t,e,i){[...e].forEach((e=>{const s=i||this._getRegistryForType(e);i||s.isForType(e)||s===this.plugins&&e.id?this._exec(t,s,e):u(e,(e=>{const s=i||this._getRegistryForType(e);this._exec(t,s,e)}))}))}_exec(t,e,i){const s=w(t);d(i["before"+s],[],i),e[t](i),d(i["after"+s],[],i)}_getRegistryForType(t){for(let e=0;et.filter((t=>!e.some((e=>t.plugin.id===e.plugin.id))));this._notify(s(e,i),t,"stop"),this._notify(s(i,e),t,"start")}}function nn(t,e){return e||!1!==t?!0===t?{}:t:null}function on(t,{plugin:e,local:i},s,n){const o=t.pluginScopeKeys(e),a=t.getOptionScopes(s,o);return i&&e.defaults&&a.push(e.defaults),t.createResolver(a,n,[""],{scriptable:!1,indexable:!1,allKeys:!0})}function an(t,e){const i=ue.datasets[t]||{};return((e.datasets||{})[t]||{}).indexAxis||e.indexAxis||i.indexAxis||"x"}function rn(t){if("x"===t||"y"===t||"r"===t)return t}function ln(t,...e){if(rn(t))return t;for(const s of e){const e=s.axis||("top"===(i=s.position)||"bottom"===i?"x":"left"===i||"right"===i?"y":void 0)||t.length>1&&rn(t[0].toLowerCase());if(e)return e}var i;throw new Error(`Cannot determine type of '${t}' axis. Please provide 'axis' or 'position' option.`)}function hn(t,e,i){if(i[e+"AxisID"]===t)return{axis:e}}function cn(t,e){const i=re[t.type]||{scales:{}},s=e.scales||{},n=an(t.type,e),a=Object.create(null);return Object.keys(s).forEach((e=>{const r=s[e];if(!o(r))return console.error(`Invalid scale configuration for scale: ${e}`);if(r._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${e}`);const l=ln(e,r,function(t,e){if(e.data&&e.data.datasets){const i=e.data.datasets.filter((e=>e.xAxisID===t||e.yAxisID===t));if(i.length)return hn(t,"x",i[0])||hn(t,"y",i[0])}return{}}(e,t),ue.scales[r.type]),h=function(t,e){return t===e?"_index_":"_value_"}(l,n),c=i.scales||{};a[e]=x(Object.create(null),[{axis:l},r,c[l],c[h]])})),t.data.datasets.forEach((i=>{const n=i.type||t.type,o=i.indexAxis||an(n,e),r=(re[n]||{}).scales||{};Object.keys(r).forEach((t=>{const e=function(t,e){let i=t;return"_index_"===t?i=e:"_value_"===t&&(i="x"===e?"y":"x"),i}(t,o),n=i[e+"AxisID"]||e;a[n]=a[n]||Object.create(null),x(a[n],[{axis:e},s[n],r[t]])}))})),Object.keys(a).forEach((t=>{const e=a[t];x(e,[ue.scales[e.type],ue.scale])})),a}function dn(t){const e=t.options||(t.options={});e.plugins=l(e.plugins,{}),e.scales=cn(t,e)}function un(t){return(t=t||{}).datasets=t.datasets||[],t.labels=t.labels||[],t}const fn=new Map,gn=new Set;function pn(t,e){let i=fn.get(t);return i||(i=e(),fn.set(t,i),gn.add(i)),i}const mn=(t,e,i)=>{const s=M(e,i);void 0!==s&&t.add(s)};class bn{constructor(t){this._config=function(t){return(t=t||{}).data=un(t.data),dn(t),t}(t),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(t){this._config.type=t}get data(){return this._config.data}set data(t){this._config.data=un(t)}get options(){return this._config.options}set options(t){this._config.options=t}get plugins(){return this._config.plugins}update(){const t=this._config;this.clearCache(),dn(t)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(t){return pn(t,(()=>[[`datasets.${t}`,""]]))}datasetAnimationScopeKeys(t,e){return pn(`${t}.transition.${e}`,(()=>[[`datasets.${t}.transitions.${e}`,`transitions.${e}`],[`datasets.${t}`,""]]))}datasetElementScopeKeys(t,e){return pn(`${t}-${e}`,(()=>[[`datasets.${t}.elements.${e}`,`datasets.${t}`,`elements.${e}`,""]]))}pluginScopeKeys(t){const e=t.id;return pn(`${this.type}-plugin-${e}`,(()=>[[`plugins.${e}`,...t.additionalOptionScopes||[]]]))}_cachedScopes(t,e){const i=this._scopeCache;let s=i.get(t);return s&&!e||(s=new Map,i.set(t,s)),s}getOptionScopes(t,e,i){const{options:s,type:n}=this,o=this._cachedScopes(t,i),a=o.get(e);if(a)return a;const r=new Set;e.forEach((e=>{t&&(r.add(t),e.forEach((e=>mn(r,t,e)))),e.forEach((t=>mn(r,s,t))),e.forEach((t=>mn(r,re[n]||{},t))),e.forEach((t=>mn(r,ue,t))),e.forEach((t=>mn(r,le,t)))}));const l=Array.from(r);return 0===l.length&&l.push(Object.create(null)),gn.has(e)&&o.set(e,l),l}chartOptionScopes(){const{options:t,type:e}=this;return[t,re[e]||{},ue.datasets[e]||{},{type:e},ue,le]}resolveNamedOptions(t,e,i,s=[""]){const o={$shared:!0},{resolver:a,subPrefixes:r}=xn(this._resolverCache,t,s);let l=a;if(function(t,e){const{isScriptable:i,isIndexable:s}=Ye(t);for(const o of e){const e=i(o),a=s(o),r=(a||e)&&t[o];if(e&&(S(r)||_n(r))||a&&n(r))return!0}return!1}(a,e)){o.$shared=!1;l=$e(a,i=S(i)?i():i,this.createResolver(t,i,r))}for(const t of e)o[t]=l[t];return o}createResolver(t,e,i=[""],s){const{resolver:n}=xn(this._resolverCache,t,i);return o(e)?$e(n,e,void 0,s):n}}function xn(t,e,i){let s=t.get(e);s||(s=new Map,t.set(e,s));const n=i.join();let o=s.get(n);if(!o){o={resolver:je(e,i),subPrefixes:i.filter((t=>!t.toLowerCase().includes("hover")))},s.set(n,o)}return o}const _n=t=>o(t)&&Object.getOwnPropertyNames(t).some((e=>S(t[e])));const yn=["top","bottom","left","right","chartArea"];function vn(t,e){return"top"===t||"bottom"===t||-1===yn.indexOf(t)&&"x"===e}function Mn(t,e){return function(i,s){return i[t]===s[t]?i[e]-s[e]:i[t]-s[t]}}function wn(t){const e=t.chart,i=e.options.animation;e.notifyPlugins("afterRender"),d(i&&i.onComplete,[t],e)}function kn(t){const e=t.chart,i=e.options.animation;d(i&&i.onProgress,[t],e)}function Sn(t){return fe()&&"string"==typeof t?t=document.getElementById(t):t&&t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas),t}const Pn={},Dn=t=>{const e=Sn(t);return Object.values(Pn).filter((t=>t.canvas===e)).pop()};function Cn(t,e,i){const s=Object.keys(t);for(const n of s){const s=+n;if(s>=e){const o=t[n];delete t[n],(i>0||s>e)&&(t[s+i]=o)}}}function On(t,e,i){return t.options.clip?t[i]:e[i]}class An{static defaults=ue;static instances=Pn;static overrides=re;static registry=en;static version="4.4.1";static getChart=Dn;static register(...t){en.add(...t),Tn()}static unregister(...t){en.remove(...t),Tn()}constructor(t,e){const s=this.config=new bn(e),n=Sn(t),o=Dn(n);if(o)throw new Error("Canvas is already in use. Chart with ID '"+o.id+"' must be destroyed before the canvas with ID '"+o.canvas.id+"' can be reused.");const a=s.createResolver(s.chartOptionScopes(),this.getContext());this.platform=new(s.platform||ks(n)),this.platform.updateConfig(s);const r=this.platform.acquireContext(n,a.aspectRatio),l=r&&r.canvas,h=l&&l.height,c=l&&l.width;this.id=i(),this.ctx=r,this.canvas=l,this.width=c,this.height=h,this._options=a,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new sn,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=dt((t=>this.update(t)),a.resizeDelay||0),this._dataChanges=[],Pn[this.id]=this,r&&l?(xt.listen(this,"complete",wn),xt.listen(this,"progress",kn),this._initialize(),this.attached&&this.update()):console.error("Failed to create chart: can't acquire context from the given item")}get aspectRatio(){const{options:{aspectRatio:t,maintainAspectRatio:e},width:i,height:n,_aspectRatio:o}=this;return s(t)?e&&o?o:n?i/n:null:t}get data(){return this.config.data}set data(t){this.config.data=t}get options(){return this._options}set options(t){this.config.options=t}get registry(){return en}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():ke(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return Te(this.canvas,this.ctx),this}stop(){return xt.stop(this),this}resize(t,e){xt.running(this)?this._resizeBeforeDraw={width:t,height:e}:this._resize(t,e)}_resize(t,e){const i=this.options,s=this.canvas,n=i.maintainAspectRatio&&this.aspectRatio,o=this.platform.getMaximumSize(s,t,e,n),a=i.devicePixelRatio||this.platform.getDevicePixelRatio(),r=this.width?"resize":"attach";this.width=o.width,this.height=o.height,this._aspectRatio=this.aspectRatio,ke(this,a,!0)&&(this.notifyPlugins("resize",{size:o}),d(i.onResize,[this,o],this),this.attached&&this._doResize(r)&&this.render())}ensureScalesHaveIDs(){u(this.options.scales||{},((t,e)=>{t.id=e}))}buildOrUpdateScales(){const t=this.options,e=t.scales,i=this.scales,s=Object.keys(i).reduce(((t,e)=>(t[e]=!1,t)),{});let n=[];e&&(n=n.concat(Object.keys(e).map((t=>{const i=e[t],s=ln(t,i),n="r"===s,o="x"===s;return{options:i,dposition:n?"chartArea":o?"bottom":"left",dtype:n?"radialLinear":o?"category":"linear"}})))),u(n,(e=>{const n=e.options,o=n.id,a=ln(o,n),r=l(n.type,e.dtype);void 0!==n.position&&vn(n.position,a)===vn(e.dposition)||(n.position=e.dposition),s[o]=!0;let h=null;if(o in i&&i[o].type===r)h=i[o];else{h=new(en.getScale(r))({id:o,type:r,ctx:this.ctx,chart:this}),i[h.id]=h}h.init(n,t)})),u(s,((t,e)=>{t||delete i[e]})),u(i,(t=>{as.configure(this,t,t.options),as.addBox(this,t)}))}_updateMetasets(){const t=this._metasets,e=this.data.datasets.length,i=t.length;if(t.sort(((t,e)=>t.index-e.index)),i>e){for(let t=e;te.length&&delete this._stacks,t.forEach(((t,i)=>{0===e.filter((e=>e===t._dataset)).length&&this._destroyDatasetMeta(i)}))}buildOrUpdateControllers(){const t=[],e=this.data.datasets;let i,s;for(this._removeUnreferencedMetasets(),i=0,s=e.length;i{this.getDatasetMeta(e).controller.reset()}),this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(t){const e=this.config;e.update();const i=this._options=e.createResolver(e.chartOptionScopes(),this.getContext()),s=this._animationsDisabled=!i.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),!1===this.notifyPlugins("beforeUpdate",{mode:t,cancelable:!0}))return;const n=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let o=0;for(let t=0,e=this.data.datasets.length;t{t.reset()})),this._updateDatasets(t),this.notifyPlugins("afterUpdate",{mode:t}),this._layers.sort(Mn("z","_idx"));const{_active:a,_lastEvent:r}=this;r?this._eventHandler(r,!0):a.length&&this._updateHoverStyles(a,a,!0),this.render()}_updateScales(){u(this.scales,(t=>{as.removeBox(this,t)})),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const t=this.options,e=new Set(Object.keys(this._listeners)),i=new Set(t.events);P(e,i)&&!!this._responsiveListeners===t.responsive||(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:t}=this,e=this._getUniformDataChanges()||[];for(const{method:i,start:s,count:n}of e){Cn(t,s,"_removeElements"===i?-n:n)}}_getUniformDataChanges(){const t=this._dataChanges;if(!t||!t.length)return;this._dataChanges=[];const e=this.data.datasets.length,i=e=>new Set(t.filter((t=>t[0]===e)).map(((t,e)=>e+","+t.splice(1).join(",")))),s=i(0);for(let t=1;tt.split(","))).map((t=>({method:t[1],start:+t[2],count:+t[3]})))}_updateLayout(t){if(!1===this.notifyPlugins("beforeLayout",{cancelable:!0}))return;as.update(this,this.width,this.height,t);const e=this.chartArea,i=e.width<=0||e.height<=0;this._layers=[],u(this.boxes,(t=>{i&&"chartArea"===t.position||(t.configure&&t.configure(),this._layers.push(...t._layers()))}),this),this._layers.forEach(((t,e)=>{t._idx=e})),this.notifyPlugins("afterLayout")}_updateDatasets(t){if(!1!==this.notifyPlugins("beforeDatasetsUpdate",{mode:t,cancelable:!0})){for(let t=0,e=this.data.datasets.length;t=0;--e)this._drawDataset(t[e]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(t){const e=this.ctx,i=t._clip,s=!i.disabled,n=function(t,e){const{xScale:i,yScale:s}=t;return i&&s?{left:On(i,e,"left"),right:On(i,e,"right"),top:On(s,e,"top"),bottom:On(s,e,"bottom")}:e}(t,this.chartArea),o={meta:t,index:t.index,cancelable:!0};!1!==this.notifyPlugins("beforeDatasetDraw",o)&&(s&&Ie(e,{left:!1===i.left?0:n.left-i.left,right:!1===i.right?this.width:n.right+i.right,top:!1===i.top?0:n.top-i.top,bottom:!1===i.bottom?this.height:n.bottom+i.bottom}),t.controller.draw(),s&&ze(e),o.cancelable=!1,this.notifyPlugins("afterDatasetDraw",o))}isPointInArea(t){return Re(t,this.chartArea,this._minPadding)}getElementsAtEventForMode(t,e,i,s){const n=Xi.modes[e];return"function"==typeof n?n(this,t,i,s):[]}getDatasetMeta(t){const e=this.data.datasets[t],i=this._metasets;let s=i.filter((t=>t&&t._dataset===e)).pop();return s||(s={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:e&&e.order||0,index:t,_dataset:e,_parsed:[],_sorted:!1},i.push(s)),s}getContext(){return this.$context||(this.$context=Ci(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(t){const e=this.data.datasets[t];if(!e)return!1;const i=this.getDatasetMeta(t);return"boolean"==typeof i.hidden?!i.hidden:!e.hidden}setDatasetVisibility(t,e){this.getDatasetMeta(t).hidden=!e}toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]}getDataVisibility(t){return!this._hiddenIndices[t]}_updateVisibility(t,e,i){const s=i?"show":"hide",n=this.getDatasetMeta(t),o=n.controller._resolveAnimations(void 0,s);k(e)?(n.data[e].hidden=!i,this.update()):(this.setDatasetVisibility(t,i),o.update(n,{visible:i}),this.update((e=>e.datasetIndex===t?s:void 0)))}hide(t,e){this._updateVisibility(t,e,!1)}show(t,e){this._updateVisibility(t,e,!0)}_destroyDatasetMeta(t){const e=this._metasets[t];e&&e.controller&&e.controller._destroy(),delete this._metasets[t]}_stop(){let t,e;for(this.stop(),xt.remove(this),t=0,e=this.data.datasets.length;t{e.addEventListener(this,i,s),t[i]=s},s=(t,e,i)=>{t.offsetX=e,t.offsetY=i,this._eventHandler(t)};u(this.options.events,(t=>i(t,s)))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const t=this._responsiveListeners,e=this.platform,i=(i,s)=>{e.addEventListener(this,i,s),t[i]=s},s=(i,s)=>{t[i]&&(e.removeEventListener(this,i,s),delete t[i])},n=(t,e)=>{this.canvas&&this.resize(t,e)};let o;const a=()=>{s("attach",a),this.attached=!0,this.resize(),i("resize",n),i("detach",o)};o=()=>{this.attached=!1,s("resize",n),this._stop(),this._resize(0,0),i("attach",a)},e.isAttached(this.canvas)?a():o()}unbindEvents(){u(this._listeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._listeners={},u(this._responsiveListeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._responsiveListeners=void 0}updateHoverStyle(t,e,i){const s=i?"set":"remove";let n,o,a,r;for("dataset"===e&&(n=this.getDatasetMeta(t[0].datasetIndex),n.controller["_"+s+"DatasetHoverStyle"]()),a=0,r=t.length;a{const i=this.getDatasetMeta(t);if(!i)throw new Error("No dataset found at index "+t);return{datasetIndex:t,element:i.data[e],index:e}}));!f(i,e)&&(this._active=i,this._lastEvent=null,this._updateHoverStyles(i,e))}notifyPlugins(t,e,i){return this._plugins.notify(this,t,e,i)}isPluginEnabled(t){return 1===this._plugins._cache.filter((e=>e.plugin.id===t)).length}_updateHoverStyles(t,e,i){const s=this.options.hover,n=(t,e)=>t.filter((t=>!e.some((e=>t.datasetIndex===e.datasetIndex&&t.index===e.index)))),o=n(e,t),a=i?t:n(t,e);o.length&&this.updateHoverStyle(o,s.mode,!1),a.length&&s.mode&&this.updateHoverStyle(a,s.mode,!0)}_eventHandler(t,e){const i={event:t,replay:e,cancelable:!0,inChartArea:this.isPointInArea(t)},s=e=>(e.options.events||this.options.events).includes(t.native.type);if(!1===this.notifyPlugins("beforeEvent",i,s))return;const n=this._handleEvent(t,e,i.inChartArea);return i.cancelable=!1,this.notifyPlugins("afterEvent",i,s),(n||i.changed)&&this.render(),this}_handleEvent(t,e,i){const{_active:s=[],options:n}=this,o=e,a=this._getActiveElements(t,s,i,o),r=D(t),l=function(t,e,i,s){return i&&"mouseout"!==t.type?s?e:t:null}(t,this._lastEvent,i,r);i&&(this._lastEvent=null,d(n.onHover,[t,a,this],this),r&&d(n.onClick,[t,a,this],this));const h=!f(a,s);return(h||e)&&(this._active=a,this._updateHoverStyles(a,s,e)),this._lastEvent=l,h}_getActiveElements(t,e,i,s){if("mouseout"===t.type)return[];if(!i)return e;const n=this.options.hover;return this.getElementsAtEventForMode(t,n.mode,n,s)}}function Tn(){return u(An.instances,(t=>t._plugins.invalidate()))}function Ln(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}class En{static override(t){Object.assign(En.prototype,t)}options;constructor(t){this.options=t||{}}init(){}formats(){return Ln()}parse(){return Ln()}format(){return Ln()}add(){return Ln()}diff(){return Ln()}startOf(){return Ln()}endOf(){return Ln()}}var Rn={_date:En};function In(t){const e=t.iScale,i=function(t,e){if(!t._cache.$bar){const i=t.getMatchingVisibleMetas(e);let s=[];for(let e=0,n=i.length;et-e)))}return t._cache.$bar}(e,t.type);let s,n,o,a,r=e._length;const l=()=>{32767!==o&&-32768!==o&&(k(a)&&(r=Math.min(r,Math.abs(o-a)||r)),a=o)};for(s=0,n=i.length;sMath.abs(r)&&(l=r,h=a),e[i.axis]=h,e._custom={barStart:l,barEnd:h,start:n,end:o,min:a,max:r}}(t,e,i,s):e[i.axis]=i.parse(t,s),e}function Fn(t,e,i,s){const n=t.iScale,o=t.vScale,a=n.getLabels(),r=n===o,l=[];let h,c,d,u;for(h=i,c=i+s;ht.x,i="left",s="right"):(e=t.base"spacing"!==t,_indexable:t=>"spacing"!==t&&!t.startsWith("borderDash")&&!t.startsWith("hoverBorderDash")};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const e=t.data;if(e.labels.length&&e.datasets.length){const{labels:{pointStyle:i,color:s}}=t.legend.options;return e.labels.map(((e,n)=>{const o=t.getDatasetMeta(0).controller.getStyle(n);return{text:e,fillStyle:o.backgroundColor,strokeStyle:o.borderColor,fontColor:s,lineWidth:o.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(n),index:n}}))}return[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}}}};constructor(t,e){super(t,e),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(t,e){const i=this.getDataset().data,s=this._cachedMeta;if(!1===this._parsing)s._parsed=i;else{let n,a,r=t=>+i[t];if(o(i[t])){const{key:t="value"}=this._parsing;r=e=>+M(i[e],t)}for(n=t,a=t+e;nZ(t,r,l,!0)?1:Math.max(e,e*i,s,s*i),g=(t,e,s)=>Z(t,r,l,!0)?-1:Math.min(e,e*i,s,s*i),p=f(0,h,d),m=f(E,c,u),b=g(C,h,d),x=g(C+E,c,u);s=(p-b)/2,n=(m-x)/2,o=-(p+b)/2,a=-(m+x)/2}return{ratioX:s,ratioY:n,offsetX:o,offsetY:a}}(u,d,r),b=(i.width-o)/f,x=(i.height-o)/g,_=Math.max(Math.min(b,x)/2,0),y=c(this.options.radius,_),v=(y-Math.max(y*r,0))/this._getVisibleDatasetWeightTotal();this.offsetX=p*y,this.offsetY=m*y,s.total=this.calculateTotal(),this.outerRadius=y-v*this._getRingWeightOffset(this.index),this.innerRadius=Math.max(this.outerRadius-v*l,0),this.updateElements(n,0,n.length,t)}_circumference(t,e){const i=this.options,s=this._cachedMeta,n=this._getCircumference();return e&&i.animation.animateRotate||!this.chart.getDataVisibility(t)||null===s._parsed[t]||s.data[t].hidden?0:this.calculateCircumference(s._parsed[t]*n/O)}updateElements(t,e,i,s){const n="reset"===s,o=this.chart,a=o.chartArea,r=o.options.animation,l=(a.left+a.right)/2,h=(a.top+a.bottom)/2,c=n&&r.animateScale,d=c?0:this.innerRadius,u=c?0:this.outerRadius,{sharedOptions:f,includeOptions:g}=this._getSharedOptions(e,s);let p,m=this._getRotation();for(p=0;p0&&!isNaN(t)?O*(Math.abs(t)/e):0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,s=i.data.labels||[],n=ne(e._parsed[t],i.options.locale);return{label:s[t]||"",value:n}}getMaxBorderWidth(t){let e=0;const i=this.chart;let s,n,o,a,r;if(!t)for(s=0,n=i.data.datasets.length;s{const o=t.getDatasetMeta(0).controller.getStyle(n);return{text:e,fillStyle:o.backgroundColor,strokeStyle:o.borderColor,fontColor:s,lineWidth:o.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(n),index:n}}))}return[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}}},scales:{r:{type:"radialLinear",angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}};constructor(t,e){super(t,e),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,s=i.data.labels||[],n=ne(e._parsed[t].r,i.options.locale);return{label:s[t]||"",value:n}}parseObjectData(t,e,i,s){return ii.bind(this)(t,e,i,s)}update(t){const e=this._cachedMeta.data;this._updateRadius(),this.updateElements(e,0,e.length,t)}getMinMax(){const t=this._cachedMeta,e={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY};return t.data.forEach(((t,i)=>{const s=this.getParsed(i).r;!isNaN(s)&&this.chart.getDataVisibility(i)&&(se.max&&(e.max=s))})),e}_updateRadius(){const t=this.chart,e=t.chartArea,i=t.options,s=Math.min(e.right-e.left,e.bottom-e.top),n=Math.max(s/2,0),o=(n-Math.max(i.cutoutPercentage?n/100*i.cutoutPercentage:1,0))/t.getVisibleDatasetCount();this.outerRadius=n-o*this.index,this.innerRadius=this.outerRadius-o}updateElements(t,e,i,s){const n="reset"===s,o=this.chart,a=o.options.animation,r=this._cachedMeta.rScale,l=r.xCenter,h=r.yCenter,c=r.getIndexAngle(0)-.5*C;let d,u=c;const f=360/this.countVisibleElements();for(d=0;d{!isNaN(this.getParsed(i).r)&&this.chart.getDataVisibility(i)&&e++})),e}_computeAngle(t,e,i){return this.chart.getDataVisibility(t)?$(this.resolveDataElementOptions(t,e).angle||i):0}}var Yn=Object.freeze({__proto__:null,BarController:class extends Ns{static id="bar";static defaults={datasetElementType:!1,dataElementType:"bar",categoryPercentage:.8,barPercentage:.9,grouped:!0,animations:{numbers:{type:"number",properties:["x","y","base","width","height"]}}};static overrides={scales:{_index_:{type:"category",offset:!0,grid:{offset:!0}},_value_:{type:"linear",beginAtZero:!0}}};parsePrimitiveData(t,e,i,s){return Fn(t,e,i,s)}parseArrayData(t,e,i,s){return Fn(t,e,i,s)}parseObjectData(t,e,i,s){const{iScale:n,vScale:o}=t,{xAxisKey:a="x",yAxisKey:r="y"}=this._parsing,l="x"===n.axis?a:r,h="x"===o.axis?a:r,c=[];let d,u,f,g;for(d=i,u=i+s;dt.controller.options.grouped)),o=i.options.stacked,a=[],r=t=>{const i=t.controller.getParsed(e),n=i&&i[t.vScale.axis];if(s(n)||isNaN(n))return!0};for(const i of n)if((void 0===e||!r(i))&&((!1===o||-1===a.indexOf(i.stack)||void 0===o&&void 0===i.stack)&&a.push(i.stack),i.index===t))break;return a.length||a.push(void 0),a}_getStackCount(t){return this._getStacks(void 0,t).length}_getStackIndex(t,e,i){const s=this._getStacks(t,i),n=void 0!==e?s.indexOf(e):-1;return-1===n?s.length-1:n}_getRuler(){const t=this.options,e=this._cachedMeta,i=e.iScale,s=[];let n,o;for(n=0,o=e.data.length;n=i?1:-1)}(u,e,r)*a,f===r&&(b-=u/2);const t=e.getPixelForDecimal(0),s=e.getPixelForDecimal(1),o=Math.min(t,s),h=Math.max(t,s);b=Math.max(Math.min(b,h),o),d=b+u,i&&!c&&(l._stacks[e.axis]._visualValues[n]=e.getValueForPixel(d)-e.getValueForPixel(b))}if(b===e.getPixelForValue(r)){const t=F(u)*e.getLineWidthForValue(r)/2;b+=t,u-=t}return{size:u,base:b,head:d,center:d+u/2}}_calculateBarIndexPixels(t,e){const i=e.scale,n=this.options,o=n.skipNull,a=l(n.maxBarThickness,1/0);let r,h;if(e.grouped){const i=o?this._getStackCount(t):e.stackCount,l="flex"===n.barThickness?function(t,e,i,s){const n=e.pixels,o=n[t];let a=t>0?n[t-1]:null,r=t=0;--i)e=Math.max(e,t[i].size(this.resolveDataElementOptions(i))/2);return e>0&&e}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart.data.labels||[],{xScale:s,yScale:n}=e,o=this.getParsed(t),a=s.getLabelForValue(o.x),r=n.getLabelForValue(o.y),l=o._custom;return{label:i[t]||"",value:"("+a+", "+r+(l?", "+l:"")+")"}}update(t){const e=this._cachedMeta.data;this.updateElements(e,0,e.length,t)}updateElements(t,e,i,s){const n="reset"===s,{iScale:o,vScale:a}=this._cachedMeta,{sharedOptions:r,includeOptions:l}=this._getSharedOptions(e,s),h=o.axis,c=a.axis;for(let d=e;d0&&this.getParsed(e-1);for(let i=0;i<_;++i){const g=t[i],_=b?g:{};if(i=x){_.skip=!0;continue}const v=this.getParsed(i),M=s(v[f]),w=_[u]=a.getPixelForValue(v[u],i),k=_[f]=o||M?r.getBasePixel():r.getPixelForValue(l?this.applyStack(r,v,l):v[f],i);_.skip=isNaN(w)||isNaN(k)||M,_.stop=i>0&&Math.abs(v[u]-y[u])>m,p&&(_.parsed=v,_.raw=h.data[i]),d&&(_.options=c||this.resolveDataElementOptions(i,g.active?"active":n)),b||this.updateElement(g,i,_,n),y=v}}getMaxOverflow(){const t=this._cachedMeta,e=t.dataset,i=e.options&&e.options.borderWidth||0,s=t.data||[];if(!s.length)return i;const n=s[0].size(this.resolveDataElementOptions(0)),o=s[s.length-1].size(this.resolveDataElementOptions(s.length-1));return Math.max(i,n,o)/2}draw(){const t=this._cachedMeta;t.dataset.updateControlPoints(this.chart.chartArea,t.iScale.axis),super.draw()}},PieController:class extends jn{static id="pie";static defaults={cutout:0,rotation:0,circumference:360,radius:"100%"}},PolarAreaController:$n,RadarController:class extends Ns{static id="radar";static defaults={datasetElementType:"line",dataElementType:"point",indexAxis:"r",showLine:!0,elements:{line:{fill:"start"}}};static overrides={aspectRatio:1,scales:{r:{type:"radialLinear"}}};getLabelAndValue(t){const e=this._cachedMeta.vScale,i=this.getParsed(t);return{label:e.getLabels()[t],value:""+e.getLabelForValue(i[e.axis])}}parseObjectData(t,e,i,s){return ii.bind(this)(t,e,i,s)}update(t){const e=this._cachedMeta,i=e.dataset,s=e.data||[],n=e.iScale.getLabels();if(i.points=s,"resize"!==t){const e=this.resolveDatasetElementOptions(t);this.options.showLine||(e.borderWidth=0);const o={_loop:!0,_fullLoop:n.length===s.length,options:e};this.updateElement(i,void 0,o,t)}this.updateElements(s,0,s.length,t)}updateElements(t,e,i,s){const n=this._cachedMeta.rScale,o="reset"===s;for(let a=e;a0&&this.getParsed(e-1);for(let c=e;c0&&Math.abs(i[f]-_[f])>b,m&&(p.parsed=i,p.raw=h.data[c]),u&&(p.options=d||this.resolveDataElementOptions(c,e.active?"active":n)),x||this.updateElement(e,c,p,n),_=i}this.updateSharedOptions(d,n,c)}getMaxOverflow(){const t=this._cachedMeta,e=t.data||[];if(!this.options.showLine){let t=0;for(let i=e.length-1;i>=0;--i)t=Math.max(t,e[i].size(this.resolveDataElementOptions(i))/2);return t>0&&t}const i=t.dataset,s=i.options&&i.options.borderWidth||0;if(!e.length)return s;const n=e[0].size(this.resolveDataElementOptions(0)),o=e[e.length-1].size(this.resolveDataElementOptions(e.length-1));return Math.max(s,n,o)/2}}});function Un(t,e,i,s){const n=vi(t.options.borderRadius,["outerStart","outerEnd","innerStart","innerEnd"]);const o=(i-e)/2,a=Math.min(o,s*e/2),r=t=>{const e=(i-Math.min(o,t))*s/2;return J(t,0,Math.min(o,e))};return{outerStart:r(n.outerStart),outerEnd:r(n.outerEnd),innerStart:J(n.innerStart,0,a),innerEnd:J(n.innerEnd,0,a)}}function Xn(t,e,i,s){return{x:i+t*Math.cos(e),y:s+t*Math.sin(e)}}function qn(t,e,i,s,n,o){const{x:a,y:r,startAngle:l,pixelMargin:h,innerRadius:c}=e,d=Math.max(e.outerRadius+s+i-h,0),u=c>0?c+s+i+h:0;let f=0;const g=n-l;if(s){const t=((c>0?c-s:0)+(d>0?d-s:0))/2;f=(g-(0!==t?g*t/(t+s):g))/2}const p=(g-Math.max(.001,g*d-i/C)/d)/2,m=l+p+f,b=n-p-f,{outerStart:x,outerEnd:_,innerStart:y,innerEnd:v}=Un(e,u,d,b-m),M=d-x,w=d-_,k=m+x/M,S=b-_/w,P=u+y,D=u+v,O=m+y/P,A=b-v/D;if(t.beginPath(),o){const e=(k+S)/2;if(t.arc(a,r,d,k,e),t.arc(a,r,d,e,S),_>0){const e=Xn(w,S,a,r);t.arc(e.x,e.y,_,S,b+E)}const i=Xn(D,b,a,r);if(t.lineTo(i.x,i.y),v>0){const e=Xn(D,A,a,r);t.arc(e.x,e.y,v,b+E,A+Math.PI)}const s=(b-v/u+(m+y/u))/2;if(t.arc(a,r,u,b-v/u,s,!0),t.arc(a,r,u,s,m+y/u,!0),y>0){const e=Xn(P,O,a,r);t.arc(e.x,e.y,y,O+Math.PI,m-E)}const n=Xn(M,m,a,r);if(t.lineTo(n.x,n.y),x>0){const e=Xn(M,k,a,r);t.arc(e.x,e.y,x,m-E,k)}}else{t.moveTo(a,r);const e=Math.cos(k)*d+a,i=Math.sin(k)*d+r;t.lineTo(e,i);const s=Math.cos(S)*d+a,n=Math.sin(S)*d+r;t.lineTo(s,n)}t.closePath()}function Kn(t,e,i,s,n){const{fullCircles:o,startAngle:a,circumference:r,options:l}=e,{borderWidth:h,borderJoinStyle:c,borderDash:d,borderDashOffset:u}=l,f="inner"===l.borderAlign;if(!h)return;t.setLineDash(d||[]),t.lineDashOffset=u,f?(t.lineWidth=2*h,t.lineJoin=c||"round"):(t.lineWidth=h,t.lineJoin=c||"bevel");let g=e.endAngle;if(o){qn(t,e,i,s,g,n);for(let e=0;en?(h=n/l,t.arc(o,a,l,i+h,s-h,!0)):t.arc(o,a,n,i+E,s-E),t.closePath(),t.clip()}(t,e,g),o||(qn(t,e,i,s,g,n),t.stroke())}function Gn(t,e,i=e){t.lineCap=l(i.borderCapStyle,e.borderCapStyle),t.setLineDash(l(i.borderDash,e.borderDash)),t.lineDashOffset=l(i.borderDashOffset,e.borderDashOffset),t.lineJoin=l(i.borderJoinStyle,e.borderJoinStyle),t.lineWidth=l(i.borderWidth,e.borderWidth),t.strokeStyle=l(i.borderColor,e.borderColor)}function Zn(t,e,i){t.lineTo(i.x,i.y)}function Jn(t,e,i={}){const s=t.length,{start:n=0,end:o=s-1}=i,{start:a,end:r}=e,l=Math.max(n,a),h=Math.min(o,r),c=nr&&o>r;return{count:s,start:l,loop:e.loop,ilen:h(a+(h?r-t:t))%o,_=()=>{f!==g&&(t.lineTo(m,g),t.lineTo(m,f),t.lineTo(m,p))};for(l&&(d=n[x(0)],t.moveTo(d.x,d.y)),c=0;c<=r;++c){if(d=n[x(c)],d.skip)continue;const e=d.x,i=d.y,s=0|e;s===u?(ig&&(g=i),m=(b*m+e)/++b):(_(),t.lineTo(e,i),u=s,b=0,f=g=i),p=i}_()}function eo(t){const e=t.options,i=e.borderDash&&e.borderDash.length;return!(t._decimated||t._loop||e.tension||"monotone"===e.cubicInterpolationMode||e.stepped||i)?to:Qn}const io="function"==typeof Path2D;function so(t,e,i,s){io&&!e.options.segment?function(t,e,i,s){let n=e._path;n||(n=e._path=new Path2D,e.path(n,i,s)&&n.closePath()),Gn(t,e.options),t.stroke(n)}(t,e,i,s):function(t,e,i,s){const{segments:n,options:o}=e,a=eo(e);for(const r of n)Gn(t,o,r.style),t.beginPath(),a(t,e,r,{start:i,end:i+s-1})&&t.closePath(),t.stroke()}(t,e,i,s)}class no extends Hs{static id="line";static defaults={borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",borderWidth:3,capBezierPoints:!0,cubicInterpolationMode:"default",fill:!1,spanGaps:!1,stepped:!1,tension:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};static descriptors={_scriptable:!0,_indexable:t=>"borderDash"!==t&&"fill"!==t};constructor(t){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,t&&Object.assign(this,t)}updateControlPoints(t,e){const i=this.options;if((i.tension||"monotone"===i.cubicInterpolationMode)&&!i.stepped&&!this._pointsUpdated){const s=i.spanGaps?this._loop:this._fullLoop;hi(this._points,i,t,s,e),this._pointsUpdated=!0}}set points(t){this._points=t,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=zi(this,this.options.segment))}first(){const t=this.segments,e=this.points;return t.length&&e[t[0].start]}last(){const t=this.segments,e=this.points,i=t.length;return i&&e[t[i-1].end]}interpolate(t,e){const i=this.options,s=t[e],n=this.points,o=Ii(this,{property:e,start:s,end:s});if(!o.length)return;const a=[],r=function(t){return t.stepped?pi:t.tension||"monotone"===t.cubicInterpolationMode?mi:gi}(i);let l,h;for(l=0,h=o.length;l"borderDash"!==t};circumference;endAngle;fullCircles;innerRadius;outerRadius;pixelMargin;startAngle;constructor(t){super(),this.options=void 0,this.circumference=void 0,this.startAngle=void 0,this.endAngle=void 0,this.innerRadius=void 0,this.outerRadius=void 0,this.pixelMargin=0,this.fullCircles=0,t&&Object.assign(this,t)}inRange(t,e,i){const s=this.getProps(["x","y"],i),{angle:n,distance:o}=X(s,{x:t,y:e}),{startAngle:a,endAngle:r,innerRadius:h,outerRadius:c,circumference:d}=this.getProps(["startAngle","endAngle","innerRadius","outerRadius","circumference"],i),u=(this.options.spacing+this.options.borderWidth)/2,f=l(d,r-a)>=O||Z(n,a,r),g=tt(o,h+u,c+u);return f&&g}getCenterPoint(t){const{x:e,y:i,startAngle:s,endAngle:n,innerRadius:o,outerRadius:a}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius"],t),{offset:r,spacing:l}=this.options,h=(s+n)/2,c=(o+a+l+r)/2;return{x:e+Math.cos(h)*c,y:i+Math.sin(h)*c}}tooltipPosition(t){return this.getCenterPoint(t)}draw(t){const{options:e,circumference:i}=this,s=(e.offset||0)/4,n=(e.spacing||0)/2,o=e.circular;if(this.pixelMargin="inner"===e.borderAlign?.33:0,this.fullCircles=i>O?Math.floor(i/O):0,0===i||this.innerRadius<0||this.outerRadius<0)return;t.save();const a=(this.startAngle+this.endAngle)/2;t.translate(Math.cos(a)*s,Math.sin(a)*s);const r=s*(1-Math.sin(Math.min(C,i||0)));t.fillStyle=e.backgroundColor,t.strokeStyle=e.borderColor,function(t,e,i,s,n){const{fullCircles:o,startAngle:a,circumference:r}=e;let l=e.endAngle;if(o){qn(t,e,i,s,l,n);for(let e=0;e("string"==typeof e?(i=t.push(e)-1,s.unshift({index:i,label:e})):isNaN(e)&&(i=null),i))(t,e,i,s);return n!==t.lastIndexOf(e)?i:n}function po(t){const e=this.getLabels();return t>=0&&ts=e?s:t,a=t=>n=i?n:t;if(t){const t=F(s),e=F(n);t<0&&e<0?a(0):t>0&&e>0&&o(0)}if(s===n){let e=0===n?1:Math.abs(.05*n);a(n+e),t||o(s-e)}this.min=s,this.max=n}getTickLimit(){const t=this.options.ticks;let e,{maxTicksLimit:i,stepSize:s}=t;return s?(e=Math.ceil(this.max/s)-Math.floor(this.min/s)+1,e>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${s} would result generating up to ${e} ticks. Limiting to 1000.`),e=1e3)):(e=this.computeTickLimit(),i=i||11),i&&(e=Math.min(i,e)),e}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const t=this.options,e=t.ticks;let i=this.getTickLimit();i=Math.max(2,i);const n=function(t,e){const i=[],{bounds:n,step:o,min:a,max:r,precision:l,count:h,maxTicks:c,maxDigits:d,includeBounds:u}=t,f=o||1,g=c-1,{min:p,max:m}=e,b=!s(a),x=!s(r),_=!s(h),y=(m-p)/(d+1);let v,M,w,k,S=B((m-p)/g/f)*f;if(S<1e-14&&!b&&!x)return[{value:p},{value:m}];k=Math.ceil(m/S)-Math.floor(p/S),k>g&&(S=B(k*S/g/f)*f),s(l)||(v=Math.pow(10,l),S=Math.ceil(S*v)/v),"ticks"===n?(M=Math.floor(p/S)*S,w=Math.ceil(m/S)*S):(M=p,w=m),b&&x&&o&&H((r-a)/o,S/1e3)?(k=Math.round(Math.min((r-a)/S,c)),S=(r-a)/k,M=a,w=r):_?(M=b?a:M,w=x?r:w,k=h-1,S=(w-M)/k):(k=(w-M)/S,k=V(k,Math.round(k),S/1e3)?Math.round(k):Math.ceil(k));const P=Math.max(U(S),U(M));v=Math.pow(10,s(l)?P:l),M=Math.round(M*v)/v,w=Math.round(w*v)/v;let D=0;for(b&&(u&&M!==a?(i.push({value:a}),Mr)break;i.push({value:t})}return x&&u&&w!==r?i.length&&V(i[i.length-1].value,r,mo(r,y,t))?i[i.length-1].value=r:i.push({value:r}):x&&w!==r||i.push({value:w}),i}({maxTicks:i,bounds:t.bounds,min:t.min,max:t.max,precision:e.precision,step:e.stepSize,count:e.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:e.minRotation||0,includeBounds:!1!==e.includeBounds},this._range||this);return"ticks"===t.bounds&&j(n,this,"value"),t.reverse?(n.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),n}configure(){const t=this.ticks;let e=this.min,i=this.max;if(super.configure(),this.options.offset&&t.length){const s=(i-e)/Math.max(t.length-1,1)/2;e-=s,i+=s}this._startValue=e,this._endValue=i,this._valueRange=i-e}getLabelForValue(t){return ne(t,this.chart.options.locale,this.options.ticks.format)}}class xo extends bo{static id="linear";static defaults={ticks:{callback:ae.formatters.numeric}};determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=a(t)?t:0,this.max=a(e)?e:1,this.handleTickRangeOptions()}computeTickLimit(){const t=this.isHorizontal(),e=t?this.width:this.height,i=$(this.options.ticks.minRotation),s=(t?Math.sin(i):Math.cos(i))||.001,n=this._resolveTickFontOptions(0);return Math.ceil(e/Math.min(40,n.lineHeight/s))}getPixelForValue(t){return null===t?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getValueForPixel(t){return this._startValue+this.getDecimalForPixel(t)*this._valueRange}}const _o=t=>Math.floor(z(t)),yo=(t,e)=>Math.pow(10,_o(t)+e);function vo(t){return 1===t/Math.pow(10,_o(t))}function Mo(t,e,i){const s=Math.pow(10,i),n=Math.floor(t/s);return Math.ceil(e/s)-n}function wo(t,{min:e,max:i}){e=r(t.min,e);const s=[],n=_o(e);let o=function(t,e){let i=_o(e-t);for(;Mo(t,e,i)>10;)i++;for(;Mo(t,e,i)<10;)i--;return Math.min(i,_o(t))}(e,i),a=o<0?Math.pow(10,Math.abs(o)):1;const l=Math.pow(10,o),h=n>o?Math.pow(10,n):0,c=Math.round((e-h)*a)/a,d=Math.floor((e-h)/l/10)*l*10;let u=Math.floor((c-d)/Math.pow(10,o)),f=r(t.min,Math.round((h+d+u*Math.pow(10,o))*a)/a);for(;f=10?u=u<15?15:20:u++,u>=20&&(o++,u=2,a=o>=0?1:a),f=Math.round((h+d+u*Math.pow(10,o))*a)/a;const g=r(t.max,f);return s.push({value:g,major:vo(g),significand:u}),s}class ko extends Js{static id="logarithmic";static defaults={ticks:{callback:ae.formatters.logarithmic,major:{enabled:!0}}};constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(t,e){const i=bo.prototype.parse.apply(this,[t,e]);if(0!==i)return a(i)&&i>0?i:null;this._zero=!0}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=a(t)?Math.max(0,t):null,this.max=a(e)?Math.max(0,e):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!a(this._userMin)&&(this.min=t===yo(this.min,0)?yo(this.min,-1):yo(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let i=this.min,s=this.max;const n=e=>i=t?i:e,o=t=>s=e?s:t;i===s&&(i<=0?(n(1),o(10)):(n(yo(i,-1)),o(yo(s,1)))),i<=0&&n(yo(s,-1)),s<=0&&o(yo(i,1)),this.min=i,this.max=s}buildTicks(){const t=this.options,e=wo({min:this._userMin,max:this._userMax},this);return"ticks"===t.bounds&&j(e,this,"value"),t.reverse?(e.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),e}getLabelForValue(t){return void 0===t?"0":ne(t,this.chart.options.locale,this.options.ticks.format)}configure(){const t=this.min;super.configure(),this._startValue=z(t),this._valueRange=z(this.max)-z(t)}getPixelForValue(t){return void 0!==t&&0!==t||(t=this.min),null===t||isNaN(t)?NaN:this.getPixelForDecimal(t===this.min?0:(z(t)-this._startValue)/this._valueRange)}getValueForPixel(t){const e=this.getDecimalForPixel(t);return Math.pow(10,this._startValue+e*this._valueRange)}}function So(t){const e=t.ticks;if(e.display&&t.display){const t=ki(e.backdropPadding);return l(e.font&&e.font.size,ue.font.size)+t.height}return 0}function Po(t,e,i,s,n){return t===s||t===n?{start:e-i/2,end:e+i/2}:tn?{start:e-i,end:e}:{start:e,end:e+i}}function Do(t){const e={l:t.left+t._padding.left,r:t.right-t._padding.right,t:t.top+t._padding.top,b:t.bottom-t._padding.bottom},i=Object.assign({},e),s=[],o=[],a=t._pointLabels.length,r=t.options.pointLabels,l=r.centerPointLabels?C/a:0;for(let u=0;ue.r&&(r=(s.end-e.r)/o,t.r=Math.max(t.r,e.r+r)),n.starte.b&&(l=(n.end-e.b)/a,t.b=Math.max(t.b,e.b+l))}function Oo(t,e,i){const s=t.drawingArea,{extra:n,additionalAngle:o,padding:a,size:r}=i,l=t.getPointPosition(e,s+n+a,o),h=Math.round(Y(G(l.angle+E))),c=function(t,e,i){90===i||270===i?t-=e/2:(i>270||i<90)&&(t-=e);return t}(l.y,r.h,h),d=function(t){if(0===t||180===t)return"center";if(t<180)return"left";return"right"}(h),u=function(t,e,i){"right"===i?t-=e:"center"===i&&(t-=e/2);return t}(l.x,r.w,d);return{visible:!0,x:l.x,y:c,textAlign:d,left:u,top:c,right:u+r.w,bottom:c+r.h}}function Ao(t,e){if(!e)return!0;const{left:i,top:s,right:n,bottom:o}=t;return!(Re({x:i,y:s},e)||Re({x:i,y:o},e)||Re({x:n,y:s},e)||Re({x:n,y:o},e))}function To(t,e,i){const{left:n,top:o,right:a,bottom:r}=i,{backdropColor:l}=e;if(!s(l)){const i=wi(e.borderRadius),s=ki(e.backdropPadding);t.fillStyle=l;const h=n-s.left,c=o-s.top,d=a-n+s.width,u=r-o+s.height;Object.values(i).some((t=>0!==t))?(t.beginPath(),He(t,{x:h,y:c,w:d,h:u,radius:i}),t.fill()):t.fillRect(h,c,d,u)}}function Lo(t,e,i,s){const{ctx:n}=t;if(i)n.arc(t.xCenter,t.yCenter,e,0,O);else{let i=t.getPointPosition(0,e);n.moveTo(i.x,i.y);for(let o=1;ot,padding:5,centerPointLabels:!1}};static defaultRoutes={"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"};static descriptors={angleLines:{_fallback:"grid"}};constructor(t){super(t),this.xCenter=void 0,this.yCenter=void 0,this.drawingArea=void 0,this._pointLabels=[],this._pointLabelItems=[]}setDimensions(){const t=this._padding=ki(So(this.options)/2),e=this.width=this.maxWidth-t.width,i=this.height=this.maxHeight-t.height;this.xCenter=Math.floor(this.left+e/2+t.left),this.yCenter=Math.floor(this.top+i/2+t.top),this.drawingArea=Math.floor(Math.min(e,i)/2)}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!1);this.min=a(t)&&!isNaN(t)?t:0,this.max=a(e)&&!isNaN(e)?e:0,this.handleTickRangeOptions()}computeTickLimit(){return Math.ceil(this.drawingArea/So(this.options))}generateTickLabels(t){bo.prototype.generateTickLabels.call(this,t),this._pointLabels=this.getLabels().map(((t,e)=>{const i=d(this.options.pointLabels.callback,[t,e],this);return i||0===i?i:""})).filter(((t,e)=>this.chart.getDataVisibility(e)))}fit(){const t=this.options;t.display&&t.pointLabels.display?Do(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(t,e,i,s){this.xCenter+=Math.floor((t-e)/2),this.yCenter+=Math.floor((i-s)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(t,e,i,s))}getIndexAngle(t){return G(t*(O/(this._pointLabels.length||1))+$(this.options.startAngle||0))}getDistanceFromCenterForValue(t){if(s(t))return NaN;const e=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-t)*e:(t-this.min)*e}getValueForDistanceFromCenter(t){if(s(t))return NaN;const e=t/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-e:this.min+e}getPointLabelContext(t){const e=this._pointLabels||[];if(t>=0&&t=0;n--){const e=t._pointLabelItems[n];if(!e.visible)continue;const o=s.setContext(t.getPointLabelContext(n));To(i,o,e);const a=Si(o.font),{x:r,y:l,textAlign:h}=e;Ne(i,t._pointLabels[n],r,l+a.lineHeight/2,a,{color:o.color,textAlign:h,textBaseline:"middle"})}}(this,o),s.display&&this.ticks.forEach(((t,e)=>{if(0!==e){r=this.getDistanceFromCenterForValue(t.value);const i=this.getContext(e),a=s.setContext(i),l=n.setContext(i);!function(t,e,i,s,n){const o=t.ctx,a=e.circular,{color:r,lineWidth:l}=e;!a&&!s||!r||!l||i<0||(o.save(),o.strokeStyle=r,o.lineWidth=l,o.setLineDash(n.dash),o.lineDashOffset=n.dashOffset,o.beginPath(),Lo(t,i,a,s),o.closePath(),o.stroke(),o.restore())}(this,a,r,o,l)}})),i.display){for(t.save(),a=o-1;a>=0;a--){const s=i.setContext(this.getPointLabelContext(a)),{color:n,lineWidth:o}=s;o&&n&&(t.lineWidth=o,t.strokeStyle=n,t.setLineDash(s.borderDash),t.lineDashOffset=s.borderDashOffset,r=this.getDistanceFromCenterForValue(e.ticks.reverse?this.min:this.max),l=this.getPointPosition(a,r),t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(l.x,l.y),t.stroke())}t.restore()}}drawBorder(){}drawLabels(){const t=this.ctx,e=this.options,i=e.ticks;if(!i.display)return;const s=this.getIndexAngle(0);let n,o;t.save(),t.translate(this.xCenter,this.yCenter),t.rotate(s),t.textAlign="center",t.textBaseline="middle",this.ticks.forEach(((s,a)=>{if(0===a&&!e.reverse)return;const r=i.setContext(this.getContext(a)),l=Si(r.font);if(n=this.getDistanceFromCenterForValue(this.ticks[a].value),r.showLabelBackdrop){t.font=l.string,o=t.measureText(s.label).width,t.fillStyle=r.backdropColor;const e=ki(r.backdropPadding);t.fillRect(-o/2-e.left,-n-l.size/2-e.top,o+e.width,l.size+e.height)}Ne(t,s.label,0,-n,l,{color:r.color,strokeColor:r.textStrokeColor,strokeWidth:r.textStrokeWidth})})),t.restore()}drawTitle(){}}const Ro={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},Io=Object.keys(Ro);function zo(t,e){return t-e}function Fo(t,e){if(s(e))return null;const i=t._adapter,{parser:n,round:o,isoWeekday:r}=t._parseOpts;let l=e;return"function"==typeof n&&(l=n(l)),a(l)||(l="string"==typeof n?i.parse(l,n):i.parse(l)),null===l?null:(o&&(l="week"!==o||!N(r)&&!0!==r?i.startOf(l,o):i.startOf(l,"isoWeek",r)),+l)}function Vo(t,e,i,s){const n=Io.length;for(let o=Io.indexOf(t);o=e?i[s]:i[n]]=!0}}else t[e]=!0}function Wo(t,e,i){const s=[],n={},o=e.length;let a,r;for(a=0;a=0&&(e[l].major=!0);return e}(t,s,n,i):s}class No extends Js{static id="time";static defaults={bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{source:"auto",callback:!1,major:{enabled:!1}}};constructor(t){super(t),this._cache={data:[],labels:[],all:[]},this._unit="day",this._majorUnit=void 0,this._offsets={},this._normalized=!1,this._parseOpts=void 0}init(t,e={}){const i=t.time||(t.time={}),s=this._adapter=new Rn._date(t.adapters.date);s.init(e),x(i.displayFormats,s.formats()),this._parseOpts={parser:i.parser,round:i.round,isoWeekday:i.isoWeekday},super.init(t),this._normalized=e.normalized}parse(t,e){return void 0===t?null:Fo(this,t)}beforeLayout(){super.beforeLayout(),this._cache={data:[],labels:[],all:[]}}determineDataLimits(){const t=this.options,e=this._adapter,i=t.time.unit||"day";let{min:s,max:n,minDefined:o,maxDefined:r}=this.getUserBounds();function l(t){o||isNaN(t.min)||(s=Math.min(s,t.min)),r||isNaN(t.max)||(n=Math.max(n,t.max))}o&&r||(l(this._getLabelBounds()),"ticks"===t.bounds&&"labels"===t.ticks.source||l(this.getMinMax(!1))),s=a(s)&&!isNaN(s)?s:+e.startOf(Date.now(),i),n=a(n)&&!isNaN(n)?n:+e.endOf(Date.now(),i)+1,this.min=Math.min(s,n-1),this.max=Math.max(s+1,n)}_getLabelBounds(){const t=this.getLabelTimestamps();let e=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;return t.length&&(e=t[0],i=t[t.length-1]),{min:e,max:i}}buildTicks(){const t=this.options,e=t.time,i=t.ticks,s="labels"===i.source?this.getLabelTimestamps():this._generate();"ticks"===t.bounds&&s.length&&(this.min=this._userMin||s[0],this.max=this._userMax||s[s.length-1]);const n=this.min,o=nt(s,n,this.max);return this._unit=e.unit||(i.autoSkip?Vo(e.minUnit,this.min,this.max,this._getLabelCapacity(n)):function(t,e,i,s,n){for(let o=Io.length-1;o>=Io.indexOf(i);o--){const i=Io[o];if(Ro[i].common&&t._adapter.diff(n,s,i)>=e-1)return i}return Io[i?Io.indexOf(i):0]}(this,o.length,e.minUnit,this.min,this.max)),this._majorUnit=i.major.enabled&&"year"!==this._unit?function(t){for(let e=Io.indexOf(t)+1,i=Io.length;e+t.value)))}initOffsets(t=[]){let e,i,s=0,n=0;this.options.offset&&t.length&&(e=this.getDecimalForValue(t[0]),s=1===t.length?1-e:(this.getDecimalForValue(t[1])-e)/2,i=this.getDecimalForValue(t[t.length-1]),n=1===t.length?i:(i-this.getDecimalForValue(t[t.length-2]))/2);const o=t.length<3?.5:.25;s=J(s,0,o),n=J(n,0,o),this._offsets={start:s,end:n,factor:1/(s+1+n)}}_generate(){const t=this._adapter,e=this.min,i=this.max,s=this.options,n=s.time,o=n.unit||Vo(n.minUnit,e,i,this._getLabelCapacity(e)),a=l(s.ticks.stepSize,1),r="week"===o&&n.isoWeekday,h=N(r)||!0===r,c={};let d,u,f=e;if(h&&(f=+t.startOf(f,"isoWeek",r)),f=+t.startOf(f,h?"day":o),t.diff(i,e,o)>1e5*a)throw new Error(e+" and "+i+" are too far apart with stepSize of "+a+" "+o);const g="data"===s.ticks.source&&this.getDataTimestamps();for(d=f,u=0;d+t))}getLabelForValue(t){const e=this._adapter,i=this.options.time;return i.tooltipFormat?e.format(t,i.tooltipFormat):e.format(t,i.displayFormats.datetime)}format(t,e){const i=this.options.time.displayFormats,s=this._unit,n=e||i[s];return this._adapter.format(t,n)}_tickFormatFunction(t,e,i,s){const n=this.options,o=n.ticks.callback;if(o)return d(o,[t,e,i],this);const a=n.time.displayFormats,r=this._unit,l=this._majorUnit,h=r&&a[r],c=l&&a[l],u=i[e],f=l&&c&&u&&u.major;return this._adapter.format(t,s||(f?c:h))}generateTickLabels(t){let e,i,s;for(e=0,i=t.length;e0?a:1}getDataTimestamps(){let t,e,i=this._cache.data||[];if(i.length)return i;const s=this.getMatchingVisibleMetas();if(this._normalized&&s.length)return this._cache.data=s[0].controller.getAllParsedValues(this);for(t=0,e=s.length;t=t[r].pos&&e<=t[l].pos&&({lo:r,hi:l}=it(t,"pos",e)),({pos:s,time:o}=t[r]),({pos:n,time:a}=t[l])):(e>=t[r].time&&e<=t[l].time&&({lo:r,hi:l}=it(t,"time",e)),({time:s,pos:o}=t[r]),({time:n,pos:a}=t[l]));const h=n-s;return h?o+(a-o)*(e-s)/h:o}var jo=Object.freeze({__proto__:null,CategoryScale:class extends Js{static id="category";static defaults={ticks:{callback:po}};constructor(t){super(t),this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(t){const e=this._addedLabels;if(e.length){const t=this.getLabels();for(const{index:i,label:s}of e)t[i]===s&&t.splice(i,1);this._addedLabels=[]}super.init(t)}parse(t,e){if(s(t))return null;const i=this.getLabels();return((t,e)=>null===t?null:J(Math.round(t),0,e))(e=isFinite(e)&&i[e]===t?e:go(i,t,l(e,t),this._addedLabels),i.length-1)}determineDataLimits(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let{min:i,max:s}=this.getMinMax(!0);"ticks"===this.options.bounds&&(t||(i=0),e||(s=this.getLabels().length-1)),this.min=i,this.max=s}buildTicks(){const t=this.min,e=this.max,i=this.options.offset,s=[];let n=this.getLabels();n=0===t&&e===n.length-1?n:n.slice(t,e+1),this._valueRange=Math.max(n.length-(i?0:1),1),this._startValue=this.min-(i?.5:0);for(let i=t;i<=e;i++)s.push({value:i});return s}getLabelForValue(t){return po.call(this,t)}configure(){super.configure(),this.isHorizontal()||(this._reversePixels=!this._reversePixels)}getPixelForValue(t){return"number"!=typeof t&&(t=this.parse(t)),null===t?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getValueForPixel(t){return Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange)}getBasePixel(){return this.bottom}},LinearScale:xo,LogarithmicScale:ko,RadialLinearScale:Eo,TimeScale:No,TimeSeriesScale:class extends No{static id="timeseries";static defaults=No.defaults;constructor(t){super(t),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const t=this._getTimestampsForTable(),e=this._table=this.buildLookupTable(t);this._minPos=Ho(e,this.min),this._tableRange=Ho(e,this.max)-this._minPos,super.initOffsets(t)}buildLookupTable(t){const{min:e,max:i}=this,s=[],n=[];let o,a,r,l,h;for(o=0,a=t.length;o=e&&l<=i&&s.push(l);if(s.length<2)return[{time:e,pos:0},{time:i,pos:1}];for(o=0,a=s.length;ot-e))}_getTimestampsForTable(){let t=this._cache.all||[];if(t.length)return t;const e=this.getDataTimestamps(),i=this.getLabelTimestamps();return t=e.length&&i.length?this.normalize(e.concat(i)):e.length?e:i,t=this._cache.all=t,t}getDecimalForValue(t){return(Ho(this._table,t)-this._minPos)/this._tableRange}getValueForPixel(t){const e=this._offsets,i=this.getDecimalForPixel(t)/e.factor-e.end;return Ho(this._table,i*this._tableRange+this._minPos,!0)}}});const $o=["rgb(54, 162, 235)","rgb(255, 99, 132)","rgb(255, 159, 64)","rgb(255, 205, 86)","rgb(75, 192, 192)","rgb(153, 102, 255)","rgb(201, 203, 207)"],Yo=$o.map((t=>t.replace("rgb(","rgba(").replace(")",", 0.5)")));function Uo(t){return $o[t%$o.length]}function Xo(t){return Yo[t%Yo.length]}function qo(t){let e=0;return(i,s)=>{const n=t.getDatasetMeta(s).controller;n instanceof jn?e=function(t,e){return t.backgroundColor=t.data.map((()=>Uo(e++))),e}(i,e):n instanceof $n?e=function(t,e){return t.backgroundColor=t.data.map((()=>Xo(e++))),e}(i,e):n&&(e=function(t,e){return t.borderColor=Uo(e),t.backgroundColor=Xo(e),++e}(i,e))}}function Ko(t){let e;for(e in t)if(t[e].borderColor||t[e].backgroundColor)return!0;return!1}var Go={id:"colors",defaults:{enabled:!0,forceOverride:!1},beforeLayout(t,e,i){if(!i.enabled)return;const{data:{datasets:s},options:n}=t.config,{elements:o}=n;if(!i.forceOverride&&(Ko(s)||(a=n)&&(a.borderColor||a.backgroundColor)||o&&Ko(o)))return;var a;const r=qo(t);s.forEach(r)}};function Zo(t){if(t._decimated){const e=t._data;delete t._decimated,delete t._data,Object.defineProperty(t,"data",{configurable:!0,enumerable:!0,writable:!0,value:e})}}function Jo(t){t.data.datasets.forEach((t=>{Zo(t)}))}var Qo={id:"decimation",defaults:{algorithm:"min-max",enabled:!1},beforeElementsUpdate:(t,e,i)=>{if(!i.enabled)return void Jo(t);const n=t.width;t.data.datasets.forEach(((e,o)=>{const{_data:a,indexAxis:r}=e,l=t.getDatasetMeta(o),h=a||e.data;if("y"===Pi([r,t.options.indexAxis]))return;if(!l.controller.supportsDecimation)return;const c=t.scales[l.xAxisID];if("linear"!==c.type&&"time"!==c.type)return;if(t.options.parsing)return;let{start:d,count:u}=function(t,e){const i=e.length;let s,n=0;const{iScale:o}=t,{min:a,max:r,minDefined:l,maxDefined:h}=o.getUserBounds();return l&&(n=J(it(e,o.axis,a).lo,0,i-1)),s=h?J(it(e,o.axis,r).hi+1,n,i)-n:i-n,{start:n,count:s}}(l,h);if(u<=(i.threshold||4*n))return void Zo(e);let f;switch(s(a)&&(e._data=h,delete e.data,Object.defineProperty(e,"data",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(t){this._data=t}})),i.algorithm){case"lttb":f=function(t,e,i,s,n){const o=n.samples||s;if(o>=i)return t.slice(e,e+i);const a=[],r=(i-2)/(o-2);let l=0;const h=e+i-1;let c,d,u,f,g,p=e;for(a[l++]=t[p],c=0;cu&&(u=f,d=t[s],g=s);a[l++]=d,p=g}return a[l++]=t[h],a}(h,d,u,n,i);break;case"min-max":f=function(t,e,i,n){let o,a,r,l,h,c,d,u,f,g,p=0,m=0;const b=[],x=e+i-1,_=t[e].x,y=t[x].x-_;for(o=e;og&&(g=l,d=o),p=(m*p+a.x)/++m;else{const i=o-1;if(!s(c)&&!s(d)){const e=Math.min(c,d),s=Math.max(c,d);e!==u&&e!==i&&b.push({...t[e],x:p}),s!==u&&s!==i&&b.push({...t[s],x:p})}o>0&&i!==u&&b.push(t[i]),b.push(a),h=e,m=0,f=g=l,c=d=u=o}}return b}(h,d,u,n);break;default:throw new Error(`Unsupported decimation algorithm '${i.algorithm}'`)}e._decimated=f}))},destroy(t){Jo(t)}};function ta(t,e,i,s){if(s)return;let n=e[t],o=i[t];return"angle"===t&&(n=G(n),o=G(o)),{property:t,start:n,end:o}}function ea(t,e,i){for(;e>t;e--){const t=i[e];if(!isNaN(t.x)&&!isNaN(t.y))break}return e}function ia(t,e,i,s){return t&&e?s(t[i],e[i]):t?t[i]:e?e[i]:0}function sa(t,e){let i=[],s=!1;return n(t)?(s=!0,i=t):i=function(t,e){const{x:i=null,y:s=null}=t||{},n=e.points,o=[];return e.segments.forEach((({start:t,end:e})=>{e=ea(t,e,n);const a=n[t],r=n[e];null!==s?(o.push({x:a.x,y:s}),o.push({x:r.x,y:s})):null!==i&&(o.push({x:i,y:a.y}),o.push({x:i,y:r.y}))})),o}(t,e),i.length?new no({points:i,options:{tension:0},_loop:s,_fullLoop:s}):null}function na(t){return t&&!1!==t.fill}function oa(t,e,i){let s=t[e].fill;const n=[e];let o;if(!i)return s;for(;!1!==s&&-1===n.indexOf(s);){if(!a(s))return s;if(o=t[s],!o)return!1;if(o.visible)return s;n.push(s),s=o.fill}return!1}function aa(t,e,i){const s=function(t){const e=t.options,i=e.fill;let s=l(i&&i.target,i);void 0===s&&(s=!!e.backgroundColor);if(!1===s||null===s)return!1;if(!0===s)return"origin";return s}(t);if(o(s))return!isNaN(s.value)&&s;let n=parseFloat(s);return a(n)&&Math.floor(n)===n?function(t,e,i,s){"-"!==t&&"+"!==t||(i=e+i);if(i===e||i<0||i>=s)return!1;return i}(s[0],e,n,i):["origin","start","end","stack","shape"].indexOf(s)>=0&&s}function ra(t,e,i){const s=[];for(let n=0;n=0;--e){const i=n[e].$filler;i&&(i.line.updateControlPoints(o,i.axis),s&&i.fill&&da(t.ctx,i,o))}},beforeDatasetsDraw(t,e,i){if("beforeDatasetsDraw"!==i.drawTime)return;const s=t.getSortedVisibleDatasetMetas();for(let e=s.length-1;e>=0;--e){const i=s[e].$filler;na(i)&&da(t.ctx,i,t.chartArea)}},beforeDatasetDraw(t,e,i){const s=e.meta.$filler;na(s)&&"beforeDatasetDraw"===i.drawTime&&da(t.ctx,s,t.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}};const ba=(t,e)=>{let{boxHeight:i=e,boxWidth:s=e}=t;return t.usePointStyle&&(i=Math.min(i,e),s=t.pointStyleWidth||Math.min(s,e)),{boxWidth:s,boxHeight:i,itemHeight:Math.max(e,i)}};class xa extends Hs{constructor(t){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e,i){this.maxWidth=t,this.maxHeight=e,this._margins=i,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){const t=this.options.labels||{};let e=d(t.generateLabels,[this.chart],this)||[];t.filter&&(e=e.filter((e=>t.filter(e,this.chart.data)))),t.sort&&(e=e.sort(((e,i)=>t.sort(e,i,this.chart.data)))),this.options.reverse&&e.reverse(),this.legendItems=e}fit(){const{options:t,ctx:e}=this;if(!t.display)return void(this.width=this.height=0);const i=t.labels,s=Si(i.font),n=s.size,o=this._computeTitleHeight(),{boxWidth:a,itemHeight:r}=ba(i,n);let l,h;e.font=s.string,this.isHorizontal()?(l=this.maxWidth,h=this._fitRows(o,n,a,r)+10):(h=this.maxHeight,l=this._fitCols(o,s,a,r)+10),this.width=Math.min(l,t.maxWidth||this.maxWidth),this.height=Math.min(h,t.maxHeight||this.maxHeight)}_fitRows(t,e,i,s){const{ctx:n,maxWidth:o,options:{labels:{padding:a}}}=this,r=this.legendHitBoxes=[],l=this.lineWidths=[0],h=s+a;let c=t;n.textAlign="left",n.textBaseline="middle";let d=-1,u=-h;return this.legendItems.forEach(((t,f)=>{const g=i+e/2+n.measureText(t.text).width;(0===f||l[l.length-1]+g+2*a>o)&&(c+=h,l[l.length-(f>0?0:1)]=0,u+=h,d++),r[f]={left:0,top:u,row:d,width:g,height:s},l[l.length-1]+=g+a})),c}_fitCols(t,e,i,s){const{ctx:n,maxHeight:o,options:{labels:{padding:a}}}=this,r=this.legendHitBoxes=[],l=this.columnSizes=[],h=o-t;let c=a,d=0,u=0,f=0,g=0;return this.legendItems.forEach(((t,o)=>{const{itemWidth:p,itemHeight:m}=function(t,e,i,s,n){const o=function(t,e,i,s){let n=t.text;n&&"string"!=typeof n&&(n=n.reduce(((t,e)=>t.length>e.length?t:e)));return e+i.size/2+s.measureText(n).width}(s,t,e,i),a=function(t,e,i){let s=t;"string"!=typeof e.text&&(s=_a(e,i));return s}(n,s,e.lineHeight);return{itemWidth:o,itemHeight:a}}(i,e,n,t,s);o>0&&u+m+2*a>h&&(c+=d+a,l.push({width:d,height:u}),f+=d+a,g++,d=u=0),r[o]={left:f,top:u,col:g,width:p,height:m},d=Math.max(d,p),u+=m+a})),c+=d,l.push({width:d,height:u}),c}adjustHitBoxes(){if(!this.options.display)return;const t=this._computeTitleHeight(),{legendHitBoxes:e,options:{align:i,labels:{padding:s},rtl:n}}=this,o=Oi(n,this.left,this.width);if(this.isHorizontal()){let n=0,a=ft(i,this.left+s,this.right-this.lineWidths[n]);for(const r of e)n!==r.row&&(n=r.row,a=ft(i,this.left+s,this.right-this.lineWidths[n])),r.top+=this.top+t+s,r.left=o.leftForLtr(o.x(a),r.width),a+=r.width+s}else{let n=0,a=ft(i,this.top+t+s,this.bottom-this.columnSizes[n].height);for(const r of e)r.col!==n&&(n=r.col,a=ft(i,this.top+t+s,this.bottom-this.columnSizes[n].height)),r.top=a,r.left+=this.left+s,r.left=o.leftForLtr(o.x(r.left),r.width),a+=r.height+s}}isHorizontal(){return"top"===this.options.position||"bottom"===this.options.position}draw(){if(this.options.display){const t=this.ctx;Ie(t,this),this._draw(),ze(t)}}_draw(){const{options:t,columnSizes:e,lineWidths:i,ctx:s}=this,{align:n,labels:o}=t,a=ue.color,r=Oi(t.rtl,this.left,this.width),h=Si(o.font),{padding:c}=o,d=h.size,u=d/2;let f;this.drawTitle(),s.textAlign=r.textAlign("left"),s.textBaseline="middle",s.lineWidth=.5,s.font=h.string;const{boxWidth:g,boxHeight:p,itemHeight:m}=ba(o,d),b=this.isHorizontal(),x=this._computeTitleHeight();f=b?{x:ft(n,this.left+c,this.right-i[0]),y:this.top+c+x,line:0}:{x:this.left+c,y:ft(n,this.top+x+c,this.bottom-e[0].height),line:0},Ai(this.ctx,t.textDirection);const _=m+c;this.legendItems.forEach(((y,v)=>{s.strokeStyle=y.fontColor,s.fillStyle=y.fontColor;const M=s.measureText(y.text).width,w=r.textAlign(y.textAlign||(y.textAlign=o.textAlign)),k=g+u+M;let S=f.x,P=f.y;r.setWidth(this.width),b?v>0&&S+k+c>this.right&&(P=f.y+=_,f.line++,S=f.x=ft(n,this.left+c,this.right-i[f.line])):v>0&&P+_>this.bottom&&(S=f.x=S+e[f.line].width+c,f.line++,P=f.y=ft(n,this.top+x+c,this.bottom-e[f.line].height));if(function(t,e,i){if(isNaN(g)||g<=0||isNaN(p)||p<0)return;s.save();const n=l(i.lineWidth,1);if(s.fillStyle=l(i.fillStyle,a),s.lineCap=l(i.lineCap,"butt"),s.lineDashOffset=l(i.lineDashOffset,0),s.lineJoin=l(i.lineJoin,"miter"),s.lineWidth=n,s.strokeStyle=l(i.strokeStyle,a),s.setLineDash(l(i.lineDash,[])),o.usePointStyle){const a={radius:p*Math.SQRT2/2,pointStyle:i.pointStyle,rotation:i.rotation,borderWidth:n},l=r.xPlus(t,g/2);Ee(s,a,l,e+u,o.pointStyleWidth&&g)}else{const o=e+Math.max((d-p)/2,0),a=r.leftForLtr(t,g),l=wi(i.borderRadius);s.beginPath(),Object.values(l).some((t=>0!==t))?He(s,{x:a,y:o,w:g,h:p,radius:l}):s.rect(a,o,g,p),s.fill(),0!==n&&s.stroke()}s.restore()}(r.x(S),P,y),S=gt(w,S+g+u,b?S+k:this.right,t.rtl),function(t,e,i){Ne(s,i.text,t,e+m/2,h,{strikethrough:i.hidden,textAlign:r.textAlign(i.textAlign)})}(r.x(S),P,y),b)f.x+=k+c;else if("string"!=typeof y.text){const t=h.lineHeight;f.y+=_a(y,t)+c}else f.y+=_})),Ti(this.ctx,t.textDirection)}drawTitle(){const t=this.options,e=t.title,i=Si(e.font),s=ki(e.padding);if(!e.display)return;const n=Oi(t.rtl,this.left,this.width),o=this.ctx,a=e.position,r=i.size/2,l=s.top+r;let h,c=this.left,d=this.width;if(this.isHorizontal())d=Math.max(...this.lineWidths),h=this.top+l,c=ft(t.align,c,this.right-d);else{const e=this.columnSizes.reduce(((t,e)=>Math.max(t,e.height)),0);h=l+ft(t.align,this.top,this.bottom-e-t.labels.padding-this._computeTitleHeight())}const u=ft(a,c,c+d);o.textAlign=n.textAlign(ut(a)),o.textBaseline="middle",o.strokeStyle=e.color,o.fillStyle=e.color,o.font=i.string,Ne(o,e.text,u,h,i)}_computeTitleHeight(){const t=this.options.title,e=Si(t.font),i=ki(t.padding);return t.display?e.lineHeight+i.height:0}_getLegendItemAt(t,e){let i,s,n;if(tt(t,this.left,this.right)&&tt(e,this.top,this.bottom))for(n=this.legendHitBoxes,i=0;it.chart.options.color,boxWidth:40,padding:10,generateLabels(t){const e=t.data.datasets,{labels:{usePointStyle:i,pointStyle:s,textAlign:n,color:o,useBorderRadius:a,borderRadius:r}}=t.legend.options;return t._getSortedDatasetMetas().map((t=>{const l=t.controller.getStyle(i?0:void 0),h=ki(l.borderWidth);return{text:e[t.index].label,fillStyle:l.backgroundColor,fontColor:o,hidden:!t.visible,lineCap:l.borderCapStyle,lineDash:l.borderDash,lineDashOffset:l.borderDashOffset,lineJoin:l.borderJoinStyle,lineWidth:(h.width+h.height)/4,strokeStyle:l.borderColor,pointStyle:s||l.pointStyle,rotation:l.rotation,textAlign:n||l.textAlign,borderRadius:a&&(r||l.borderRadius),datasetIndex:t.index}}),this)}},title:{color:t=>t.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:t=>!t.startsWith("on"),labels:{_scriptable:t=>!["generateLabels","filter","sort"].includes(t)}}};class va extends Hs{constructor(t){super(),this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e){const i=this.options;if(this.left=0,this.top=0,!i.display)return void(this.width=this.height=this.right=this.bottom=0);this.width=this.right=t,this.height=this.bottom=e;const s=n(i.text)?i.text.length:1;this._padding=ki(i.padding);const o=s*Si(i.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=o:this.width=o}isHorizontal(){const t=this.options.position;return"top"===t||"bottom"===t}_drawArgs(t){const{top:e,left:i,bottom:s,right:n,options:o}=this,a=o.align;let r,l,h,c=0;return this.isHorizontal()?(l=ft(a,i,n),h=e+t,r=n-i):("left"===o.position?(l=i+t,h=ft(a,s,e),c=-.5*C):(l=n-t,h=ft(a,e,s),c=.5*C),r=s-e),{titleX:l,titleY:h,maxWidth:r,rotation:c}}draw(){const t=this.ctx,e=this.options;if(!e.display)return;const i=Si(e.font),s=i.lineHeight/2+this._padding.top,{titleX:n,titleY:o,maxWidth:a,rotation:r}=this._drawArgs(s);Ne(t,e.text,0,0,i,{color:e.color,maxWidth:a,rotation:r,textAlign:ut(e.align),textBaseline:"middle",translation:[n,o]})}}var Ma={id:"title",_element:va,start(t,e,i){!function(t,e){const i=new va({ctx:t.ctx,options:e,chart:t});as.configure(t,i,e),as.addBox(t,i),t.titleBlock=i}(t,i)},stop(t){const e=t.titleBlock;as.removeBox(t,e),delete t.titleBlock},beforeUpdate(t,e,i){const s=t.titleBlock;as.configure(t,s,i),s.options=i},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const wa=new WeakMap;var ka={id:"subtitle",start(t,e,i){const s=new va({ctx:t.ctx,options:i,chart:t});as.configure(t,s,i),as.addBox(t,s),wa.set(t,s)},stop(t){as.removeBox(t,wa.get(t)),wa.delete(t)},beforeUpdate(t,e,i){const s=wa.get(t);as.configure(t,s,i),s.options=i},defaults:{align:"center",display:!1,font:{weight:"normal"},fullSize:!0,padding:0,position:"top",text:"",weight:1500},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const Sa={average(t){if(!t.length)return!1;let e,i,s=0,n=0,o=0;for(e=0,i=t.length;e-1?t.split("\n"):t}function Ca(t,e){const{element:i,datasetIndex:s,index:n}=e,o=t.getDatasetMeta(s).controller,{label:a,value:r}=o.getLabelAndValue(n);return{chart:t,label:a,parsed:o.getParsed(n),raw:t.data.datasets[s].data[n],formattedValue:r,dataset:o.getDataset(),dataIndex:n,datasetIndex:s,element:i}}function Oa(t,e){const i=t.chart.ctx,{body:s,footer:n,title:o}=t,{boxWidth:a,boxHeight:r}=e,l=Si(e.bodyFont),h=Si(e.titleFont),c=Si(e.footerFont),d=o.length,f=n.length,g=s.length,p=ki(e.padding);let m=p.height,b=0,x=s.reduce(((t,e)=>t+e.before.length+e.lines.length+e.after.length),0);if(x+=t.beforeBody.length+t.afterBody.length,d&&(m+=d*h.lineHeight+(d-1)*e.titleSpacing+e.titleMarginBottom),x){m+=g*(e.displayColors?Math.max(r,l.lineHeight):l.lineHeight)+(x-g)*l.lineHeight+(x-1)*e.bodySpacing}f&&(m+=e.footerMarginTop+f*c.lineHeight+(f-1)*e.footerSpacing);let _=0;const y=function(t){b=Math.max(b,i.measureText(t).width+_)};return i.save(),i.font=h.string,u(t.title,y),i.font=l.string,u(t.beforeBody.concat(t.afterBody),y),_=e.displayColors?a+2+e.boxPadding:0,u(s,(t=>{u(t.before,y),u(t.lines,y),u(t.after,y)})),_=0,i.font=c.string,u(t.footer,y),i.restore(),b+=p.width,{width:b,height:m}}function Aa(t,e,i,s){const{x:n,width:o}=i,{width:a,chartArea:{left:r,right:l}}=t;let h="center";return"center"===s?h=n<=(r+l)/2?"left":"right":n<=o/2?h="left":n>=a-o/2&&(h="right"),function(t,e,i,s){const{x:n,width:o}=s,a=i.caretSize+i.caretPadding;return"left"===t&&n+o+a>e.width||"right"===t&&n-o-a<0||void 0}(h,t,e,i)&&(h="center"),h}function Ta(t,e,i){const s=i.yAlign||e.yAlign||function(t,e){const{y:i,height:s}=e;return it.height-s/2?"bottom":"center"}(t,i);return{xAlign:i.xAlign||e.xAlign||Aa(t,e,i,s),yAlign:s}}function La(t,e,i,s){const{caretSize:n,caretPadding:o,cornerRadius:a}=t,{xAlign:r,yAlign:l}=i,h=n+o,{topLeft:c,topRight:d,bottomLeft:u,bottomRight:f}=wi(a);let g=function(t,e){let{x:i,width:s}=t;return"right"===e?i-=s:"center"===e&&(i-=s/2),i}(e,r);const p=function(t,e,i){let{y:s,height:n}=t;return"top"===e?s+=i:s-="bottom"===e?n+i:n/2,s}(e,l,h);return"center"===l?"left"===r?g+=h:"right"===r&&(g-=h):"left"===r?g-=Math.max(c,u)+n:"right"===r&&(g+=Math.max(d,f)+n),{x:J(g,0,s.width-e.width),y:J(p,0,s.height-e.height)}}function Ea(t,e,i){const s=ki(i.padding);return"center"===e?t.x+t.width/2:"right"===e?t.x+t.width-s.right:t.x+s.left}function Ra(t){return Pa([],Da(t))}function Ia(t,e){const i=e&&e.dataset&&e.dataset.tooltip&&e.dataset.tooltip.callbacks;return i?t.override(i):t}const za={beforeTitle:e,title(t){if(t.length>0){const e=t[0],i=e.chart.data.labels,s=i?i.length:0;if(this&&this.options&&"dataset"===this.options.mode)return e.dataset.label||"";if(e.label)return e.label;if(s>0&&e.dataIndex{const e={before:[],lines:[],after:[]},n=Ia(i,t);Pa(e.before,Da(Fa(n,"beforeLabel",this,t))),Pa(e.lines,Fa(n,"label",this,t)),Pa(e.after,Da(Fa(n,"afterLabel",this,t))),s.push(e)})),s}getAfterBody(t,e){return Ra(Fa(e.callbacks,"afterBody",this,t))}getFooter(t,e){const{callbacks:i}=e,s=Fa(i,"beforeFooter",this,t),n=Fa(i,"footer",this,t),o=Fa(i,"afterFooter",this,t);let a=[];return a=Pa(a,Da(s)),a=Pa(a,Da(n)),a=Pa(a,Da(o)),a}_createItems(t){const e=this._active,i=this.chart.data,s=[],n=[],o=[];let a,r,l=[];for(a=0,r=e.length;at.filter(e,s,n,i)))),t.itemSort&&(l=l.sort(((e,s)=>t.itemSort(e,s,i)))),u(l,(e=>{const i=Ia(t.callbacks,e);s.push(Fa(i,"labelColor",this,e)),n.push(Fa(i,"labelPointStyle",this,e)),o.push(Fa(i,"labelTextColor",this,e))})),this.labelColors=s,this.labelPointStyles=n,this.labelTextColors=o,this.dataPoints=l,l}update(t,e){const i=this.options.setContext(this.getContext()),s=this._active;let n,o=[];if(s.length){const t=Sa[i.position].call(this,s,this._eventPosition);o=this._createItems(i),this.title=this.getTitle(o,i),this.beforeBody=this.getBeforeBody(o,i),this.body=this.getBody(o,i),this.afterBody=this.getAfterBody(o,i),this.footer=this.getFooter(o,i);const e=this._size=Oa(this,i),a=Object.assign({},t,e),r=Ta(this.chart,i,a),l=La(i,a,r,this.chart);this.xAlign=r.xAlign,this.yAlign=r.yAlign,n={opacity:1,x:l.x,y:l.y,width:e.width,height:e.height,caretX:t.x,caretY:t.y}}else 0!==this.opacity&&(n={opacity:0});this._tooltipItems=o,this.$context=void 0,n&&this._resolveAnimations().update(this,n),t&&i.external&&i.external.call(this,{chart:this.chart,tooltip:this,replay:e})}drawCaret(t,e,i,s){const n=this.getCaretPosition(t,i,s);e.lineTo(n.x1,n.y1),e.lineTo(n.x2,n.y2),e.lineTo(n.x3,n.y3)}getCaretPosition(t,e,i){const{xAlign:s,yAlign:n}=this,{caretSize:o,cornerRadius:a}=i,{topLeft:r,topRight:l,bottomLeft:h,bottomRight:c}=wi(a),{x:d,y:u}=t,{width:f,height:g}=e;let p,m,b,x,_,y;return"center"===n?(_=u+g/2,"left"===s?(p=d,m=p-o,x=_+o,y=_-o):(p=d+f,m=p+o,x=_-o,y=_+o),b=p):(m="left"===s?d+Math.max(r,h)+o:"right"===s?d+f-Math.max(l,c)-o:this.caretX,"top"===n?(x=u,_=x-o,p=m-o,b=m+o):(x=u+g,_=x+o,p=m+o,b=m-o),y=x),{x1:p,x2:m,x3:b,y1:x,y2:_,y3:y}}drawTitle(t,e,i){const s=this.title,n=s.length;let o,a,r;if(n){const l=Oi(i.rtl,this.x,this.width);for(t.x=Ea(this,i.titleAlign,i),e.textAlign=l.textAlign(i.titleAlign),e.textBaseline="middle",o=Si(i.titleFont),a=i.titleSpacing,e.fillStyle=i.titleColor,e.font=o.string,r=0;r0!==t))?(t.beginPath(),t.fillStyle=n.multiKeyBackground,He(t,{x:e,y:g,w:h,h:l,radius:r}),t.fill(),t.stroke(),t.fillStyle=a.backgroundColor,t.beginPath(),He(t,{x:i,y:g+1,w:h-2,h:l-2,radius:r}),t.fill()):(t.fillStyle=n.multiKeyBackground,t.fillRect(e,g,h,l),t.strokeRect(e,g,h,l),t.fillStyle=a.backgroundColor,t.fillRect(i,g+1,h-2,l-2))}t.fillStyle=this.labelTextColors[i]}drawBody(t,e,i){const{body:s}=this,{bodySpacing:n,bodyAlign:o,displayColors:a,boxHeight:r,boxWidth:l,boxPadding:h}=i,c=Si(i.bodyFont);let d=c.lineHeight,f=0;const g=Oi(i.rtl,this.x,this.width),p=function(i){e.fillText(i,g.x(t.x+f),t.y+d/2),t.y+=d+n},m=g.textAlign(o);let b,x,_,y,v,M,w;for(e.textAlign=o,e.textBaseline="middle",e.font=c.string,t.x=Ea(this,m,i),e.fillStyle=i.bodyColor,u(this.beforeBody,p),f=a&&"right"!==m?"center"===o?l/2+h:l+2+h:0,y=0,M=s.length;y0&&e.stroke()}_updateAnimationTarget(t){const e=this.chart,i=this.$animations,s=i&&i.x,n=i&&i.y;if(s||n){const i=Sa[t.position].call(this,this._active,this._eventPosition);if(!i)return;const o=this._size=Oa(this,t),a=Object.assign({},i,this._size),r=Ta(e,t,a),l=La(t,a,r,e);s._to===l.x&&n._to===l.y||(this.xAlign=r.xAlign,this.yAlign=r.yAlign,this.width=o.width,this.height=o.height,this.caretX=i.x,this.caretY=i.y,this._resolveAnimations().update(this,l))}}_willRender(){return!!this.opacity}draw(t){const e=this.options.setContext(this.getContext());let i=this.opacity;if(!i)return;this._updateAnimationTarget(e);const s={width:this.width,height:this.height},n={x:this.x,y:this.y};i=Math.abs(i)<.001?0:i;const o=ki(e.padding),a=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;e.enabled&&a&&(t.save(),t.globalAlpha=i,this.drawBackground(n,t,s,e),Ai(t,e.textDirection),n.y+=o.top,this.drawTitle(n,t,e),this.drawBody(n,t,e),this.drawFooter(n,t,e),Ti(t,e.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,e){const i=this._active,s=t.map((({datasetIndex:t,index:e})=>{const i=this.chart.getDatasetMeta(t);if(!i)throw new Error("Cannot find a dataset at index "+t);return{datasetIndex:t,element:i.data[e],index:e}})),n=!f(i,s),o=this._positionChanged(s,e);(n||o)&&(this._active=s,this._eventPosition=e,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(t,e,i=!0){if(e&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const s=this.options,n=this._active||[],o=this._getActiveElements(t,n,e,i),a=this._positionChanged(o,t),r=e||!f(o,n)||a;return r&&(this._active=o,(s.enabled||s.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,e))),r}_getActiveElements(t,e,i,s){const n=this.options;if("mouseout"===t.type)return[];if(!s)return e.filter((t=>this.chart.data.datasets[t.datasetIndex]&&void 0!==this.chart.getDatasetMeta(t.datasetIndex).controller.getParsed(t.index)));const o=this.chart.getElementsAtEventForMode(t,n.mode,n,i);return n.reverse&&o.reverse(),o}_positionChanged(t,e){const{caretX:i,caretY:s,options:n}=this,o=Sa[n.position].call(this,t,e);return!1!==o&&(i!==o.x||s!==o.y)}}var Ba={id:"tooltip",_element:Va,positioners:Sa,afterInit(t,e,i){i&&(t.tooltip=new Va({chart:t,options:i}))},beforeUpdate(t,e,i){t.tooltip&&t.tooltip.initialize(i)},reset(t,e,i){t.tooltip&&t.tooltip.initialize(i)},afterDraw(t){const e=t.tooltip;if(e&&e._willRender()){const i={tooltip:e};if(!1===t.notifyPlugins("beforeTooltipDraw",{...i,cancelable:!0}))return;e.draw(t.ctx),t.notifyPlugins("afterTooltipDraw",i)}},afterEvent(t,e){if(t.tooltip){const i=e.replay;t.tooltip.handleEvent(e.event,i,e.inChartArea)&&(e.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(t,e)=>e.bodyFont.size,boxWidth:(t,e)=>e.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:za},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:t=>"filter"!==t&&"itemSort"!==t&&"external"!==t,_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]};return An.register(Yn,jo,fo,t),An.helpers={...Wi},An._adapters=Rn,An.Animation=Cs,An.Animations=Os,An.animator=xt,An.controllers=en.controllers.items,An.DatasetController=Ns,An.Element=Hs,An.elements=fo,An.Interaction=Xi,An.layouts=as,An.platforms=Ss,An.Scale=Js,An.Ticks=ae,Object.assign(An,Yn,jo,fo,t,Ss),An.Chart=An,"undefined"!=typeof window&&(window.Chart=An),An})); //# sourceMappingURL=chart.umd.js.map plugins/limit-login-attempts-reloaded/assets/js/jquery-confirm.min.js000064400000067076147176754540022141 0ustar00/*! * jquery-confirm v3.3.4 (http://craftpip.github.io/jquery-confirm/) * Author: Boniface Pereira * Website: www.craftpip.com * Contact: hey@craftpip.com * * Copyright 2013-2019 jquery-confirm * Licensed under MIT (https://github.com/craftpip/jquery-confirm/blob/master/LICENSE) */ (function(factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory);}else{if(typeof module==="object"&&module.exports){module.exports=function(root,jQuery){if(jQuery===undefined){if(typeof window!=="undefined"){jQuery=require("jquery");}else{jQuery=require("jquery")(root);}}factory(jQuery);return jQuery;};}else{factory(jQuery);}}}(function($){var w=window;$.fn.confirm=function(options,option2){if(typeof options==="undefined"){options={};}if(typeof options==="string"){options={content:options,title:(option2)?option2:false};}$(this).each(function(){var $this=$(this);if($this.attr("jc-attached")){console.warn("jConfirm has already been attached to this element ",$this[0]);return;}$this.on("click",function(e){e.preventDefault();var jcOption=$.extend({},options);if($this.attr("data-title")){jcOption.title=$this.attr("data-title");}if($this.attr("data-content")){jcOption.content=$this.attr("data-content");}if(typeof jcOption.buttons==="undefined"){jcOption.buttons={};}jcOption["$target"]=$this;if($this.attr("href")&&Object.keys(jcOption.buttons).length===0){var buttons=$.extend(true,{},w.jconfirm.pluginDefaults.defaultButtons,(w.jconfirm.defaults||{}).defaultButtons||{});var firstBtn=Object.keys(buttons)[0];jcOption.buttons=buttons;jcOption.buttons[firstBtn].action=function(){location.href=$this.attr("href");};}jcOption.closeIcon=false;var instance=$.confirm(jcOption);});$this.attr("jc-attached",true);});return $(this);};$.confirm=function(options,option2){if(typeof options==="undefined"){options={};}if(typeof options==="string"){options={content:options,title:(option2)?option2:false};}var putDefaultButtons=!(options.buttons===false);if(typeof options.buttons!=="object"){options.buttons={};}if(Object.keys(options.buttons).length===0&&putDefaultButtons){var buttons=$.extend(true,{},w.jconfirm.pluginDefaults.defaultButtons,(w.jconfirm.defaults||{}).defaultButtons||{});options.buttons=buttons;}return w.jconfirm(options);};$.alert=function(options,option2){if(typeof options==="undefined"){options={};}if(typeof options==="string"){options={content:options,title:(option2)?option2:false};}var putDefaultButtons=!(options.buttons===false);if(typeof options.buttons!=="object"){options.buttons={};}if(Object.keys(options.buttons).length===0&&putDefaultButtons){var buttons=$.extend(true,{},w.jconfirm.pluginDefaults.defaultButtons,(w.jconfirm.defaults||{}).defaultButtons||{});var firstBtn=Object.keys(buttons)[0];options.buttons[firstBtn]=buttons[firstBtn];}return w.jconfirm(options);};$.dialog=function(options,option2){if(typeof options==="undefined"){options={};}if(typeof options==="string"){options={content:options,title:(option2)?option2:false,closeIcon:function(){}};}options.buttons={};if(typeof options.closeIcon==="undefined"){options.closeIcon=function(){};}options.confirmKeys=[13];return w.jconfirm(options);};w.jconfirm=function(options){if(typeof options==="undefined"){options={};}var pluginOptions=$.extend(true,{},w.jconfirm.pluginDefaults);if(w.jconfirm.defaults){pluginOptions=$.extend(true,pluginOptions,w.jconfirm.defaults);}pluginOptions=$.extend(true,{},pluginOptions,options);var instance=new w.Jconfirm(pluginOptions);w.jconfirm.instances.push(instance);return instance;};w.Jconfirm=function(options){$.extend(this,options);this._init();};w.Jconfirm.prototype={_init:function(){var that=this;if(!w.jconfirm.instances.length){w.jconfirm.lastFocused=$("body").find(":focus");}this._id=Math.round(Math.random()*99999);this.contentParsed=$(document.createElement("div"));if(!this.lazyOpen){setTimeout(function(){that.open();},0);}},_buildHTML:function(){var that=this;this._parseAnimation(this.animation,"o");this._parseAnimation(this.closeAnimation,"c");this._parseBgDismissAnimation(this.backgroundDismissAnimation);this._parseColumnClass(this.columnClass);this._parseTheme(this.theme);this._parseType(this.type);var template=$(this.template);template.find(".jconfirm-box").addClass(this.animationParsed).addClass(this.backgroundDismissAnimationParsed).addClass(this.typeParsed);if(this.typeAnimated){template.find(".jconfirm-box").addClass("jconfirm-type-animated");}if(this.useBootstrap){template.find(".jc-bs3-row").addClass(this.bootstrapClasses.row);template.find(".jc-bs3-row").addClass("justify-content-md-center justify-content-sm-center justify-content-xs-center justify-content-lg-center");template.find(".jconfirm-box-container").addClass(this.columnClassParsed);if(this.containerFluid){template.find(".jc-bs3-container").addClass(this.bootstrapClasses.containerFluid);}else{template.find(".jc-bs3-container").addClass(this.bootstrapClasses.container);}}else{template.find(".jconfirm-box").css("width",this.boxWidth);}if(this.titleClass){template.find(".jconfirm-title-c").addClass(this.titleClass);}template.addClass(this.themeParsed);var ariaLabel="jconfirm-box"+this._id;template.find(".jconfirm-box").attr("aria-labelledby",ariaLabel).attr("tabindex",-1);template.find(".jconfirm-content").attr("id",ariaLabel);if(this.bgOpacity!==null){template.find(".jconfirm-bg").css("opacity",this.bgOpacity);}if(this.rtl){template.addClass("jconfirm-rtl");}this.$el=template.appendTo(this.container);this.$jconfirmBoxContainer=this.$el.find(".jconfirm-box-container");this.$jconfirmBox=this.$body=this.$el.find(".jconfirm-box");this.$jconfirmBg=this.$el.find(".jconfirm-bg");this.$title=this.$el.find(".jconfirm-title");this.$titleContainer=this.$el.find(".jconfirm-title-c");this.$content=this.$el.find("div.jconfirm-content");this.$contentPane=this.$el.find(".jconfirm-content-pane");this.$icon=this.$el.find(".jconfirm-icon-c");this.$closeIcon=this.$el.find(".jconfirm-closeIcon");this.$holder=this.$el.find(".jconfirm-holder");this.$btnc=this.$el.find(".jconfirm-buttons");this.$scrollPane=this.$el.find(".jconfirm-scrollpane");that.setStartingPoint();this._contentReady=$.Deferred();this._modalReady=$.Deferred();this.$holder.css({"padding-top":this.offsetTop,"padding-bottom":this.offsetBottom,});this.setTitle();this.setIcon();this._setButtons();this._parseContent();this.initDraggable();if(this.isAjax){this.showLoading(false);}$.when(this._contentReady,this._modalReady).then(function(){if(that.isAjaxLoading){setTimeout(function(){that.isAjaxLoading=false;that.setContent();that.setTitle();that.setIcon();setTimeout(function(){that.hideLoading(false);that._updateContentMaxHeight();},100);if(typeof that.onContentReady==="function"){that.onContentReady();}},50);}else{that._updateContentMaxHeight();that.setTitle();that.setIcon();if(typeof that.onContentReady==="function"){that.onContentReady();}}if(that.autoClose){that._startCountDown();}}).then(function(){that._watchContent();});if(this.animation==="none"){this.animationSpeed=1;this.animationBounce=1;}this.$body.css(this._getCSS(this.animationSpeed,this.animationBounce));this.$contentPane.css(this._getCSS(this.animationSpeed,1));this.$jconfirmBg.css(this._getCSS(this.animationSpeed,1));this.$jconfirmBoxContainer.css(this._getCSS(this.animationSpeed,1));},_typePrefix:"jconfirm-type-",typeParsed:"",_parseType:function(type){this.typeParsed=this._typePrefix+type;},setType:function(type){var oldClass=this.typeParsed;this._parseType(type);this.$jconfirmBox.removeClass(oldClass).addClass(this.typeParsed);},themeParsed:"",_themePrefix:"jconfirm-",setTheme:function(theme){var previous=this.theme;this.theme=theme||this.theme;this._parseTheme(this.theme);if(previous){this.$el.removeClass(previous);}this.$el.addClass(this.themeParsed);this.theme=theme;},_parseTheme:function(theme){var that=this;theme=theme.split(",");$.each(theme,function(k,a){if(a.indexOf(that._themePrefix)===-1){theme[k]=that._themePrefix+$.trim(a);}});this.themeParsed=theme.join(" ").toLowerCase();},backgroundDismissAnimationParsed:"",_bgDismissPrefix:"jconfirm-hilight-",_parseBgDismissAnimation:function(bgDismissAnimation){var animation=bgDismissAnimation.split(",");var that=this;$.each(animation,function(k,a){if(a.indexOf(that._bgDismissPrefix)===-1){animation[k]=that._bgDismissPrefix+$.trim(a);}});this.backgroundDismissAnimationParsed=animation.join(" ").toLowerCase();},animationParsed:"",closeAnimationParsed:"",_animationPrefix:"jconfirm-animation-",setAnimation:function(animation){this.animation=animation||this.animation;this._parseAnimation(this.animation,"o");},_parseAnimation:function(animation,which){which=which||"o";var animations=animation.split(",");var that=this;$.each(animations,function(k,a){if(a.indexOf(that._animationPrefix)===-1){animations[k]=that._animationPrefix+$.trim(a);}});var a_string=animations.join(" ").toLowerCase();if(which==="o"){this.animationParsed=a_string;}else{this.closeAnimationParsed=a_string;}return a_string;},setCloseAnimation:function(closeAnimation){this.closeAnimation=closeAnimation||this.closeAnimation;this._parseAnimation(this.closeAnimation,"c");},setAnimationSpeed:function(speed){this.animationSpeed=speed||this.animationSpeed;},columnClassParsed:"",setColumnClass:function(colClass){if(!this.useBootstrap){console.warn("cannot set columnClass, useBootstrap is set to false");return;}this.columnClass=colClass||this.columnClass;this._parseColumnClass(this.columnClass);this.$jconfirmBoxContainer.addClass(this.columnClassParsed);},_updateContentMaxHeight:function(){var height=$(window).height()-(this.$jconfirmBox.outerHeight()-this.$contentPane.outerHeight())-(this.offsetTop+this.offsetBottom);this.$contentPane.css({"max-height":height+"px"});},setBoxWidth:function(width){if(this.useBootstrap){console.warn("cannot set boxWidth, useBootstrap is set to true");return;}this.boxWidth=width;this.$jconfirmBox.css("width",width);},_parseColumnClass:function(colClass){colClass=colClass.toLowerCase();var p;switch(colClass){case"xl":case"xlarge":p="col-md-12";break;case"l":case"large":p="col-md-8 col-md-offset-2";break;case"m":case"medium":p="col-md-6 col-md-offset-3";break;case"s":case"small":p="col-md-4 col-md-offset-4";break;case"xs":case"xsmall":p="col-md-2 col-md-offset-5";break;default:p=colClass;}this.columnClassParsed=p;},initDraggable:function(){var that=this;var $t=this.$titleContainer;this.resetDrag();if(this.draggable){$t.on("mousedown",function(e){$t.addClass("jconfirm-hand");that.mouseX=e.clientX;that.mouseY=e.clientY;that.isDrag=true;});$(window).on("mousemove."+this._id,function(e){if(that.isDrag){that.movingX=e.clientX-that.mouseX+that.initialX;that.movingY=e.clientY-that.mouseY+that.initialY;that.setDrag();}});$(window).on("mouseup."+this._id,function(){$t.removeClass("jconfirm-hand");if(that.isDrag){that.isDrag=false;that.initialX=that.movingX;that.initialY=that.movingY;}});}},resetDrag:function(){this.isDrag=false;this.initialX=0;this.initialY=0;this.movingX=0;this.movingY=0;this.mouseX=0;this.mouseY=0;this.$jconfirmBoxContainer.css("transform","translate("+0+"px, "+0+"px)");},setDrag:function(){if(!this.draggable){return;}this.alignMiddle=false;var boxWidth=this.$jconfirmBox.outerWidth();var boxHeight=this.$jconfirmBox.outerHeight();var windowWidth=$(window).width();var windowHeight=$(window).height();var that=this;var dragUpdate=1;if(that.movingX%dragUpdate===0||that.movingY%dragUpdate===0){if(that.dragWindowBorder){var leftDistance=(windowWidth/2)-boxWidth/2;var topDistance=(windowHeight/2)-boxHeight/2;topDistance-=that.dragWindowGap;leftDistance-=that.dragWindowGap;if(leftDistance+that.movingX<0){that.movingX=-leftDistance;}else{if(leftDistance-that.movingX<0){that.movingX=leftDistance;}}if(topDistance+that.movingY<0){that.movingY=-topDistance;}else{if(topDistance-that.movingY<0){that.movingY=topDistance;}}}that.$jconfirmBoxContainer.css("transform","translate("+that.movingX+"px, "+that.movingY+"px)");}},_scrollTop:function(){if(typeof pageYOffset!=="undefined"){return pageYOffset;}else{var B=document.body;var D=document.documentElement;D=(D.clientHeight)?D:B;return D.scrollTop;}},_watchContent:function(){var that=this;if(this._timer){clearInterval(this._timer);}var prevContentHeight=0;this._timer=setInterval(function(){if(that.smoothContent){var contentHeight=that.$content.outerHeight()||0;if(contentHeight!==prevContentHeight){prevContentHeight=contentHeight;}var wh=$(window).height();var total=that.offsetTop+that.offsetBottom+that.$jconfirmBox.height()-that.$contentPane.height()+that.$content.height();if(total').html(that.buttons[key].text).addClass(that.buttons[key].btnClass).prop("disabled",that.buttons[key].isDisabled).css("display",that.buttons[key].isHidden?"none":"").click(function(e){e.preventDefault();var res=that.buttons[key].action.apply(that,[that.buttons[key]]);that.onAction.apply(that,[key,that.buttons[key]]);that._stopCountDown();if(typeof res==="undefined"||res){that.close();}});that.buttons[key].el=button_element;that.buttons[key].setText=function(text){button_element.html(text);};that.buttons[key].addClass=function(className){button_element.addClass(className);};that.buttons[key].removeClass=function(className){button_element.removeClass(className);};that.buttons[key].disable=function(){that.buttons[key].isDisabled=true;button_element.prop("disabled",true);};that.buttons[key].enable=function(){that.buttons[key].isDisabled=false;button_element.prop("disabled",false);};that.buttons[key].show=function(){that.buttons[key].isHidden=false;button_element.css("display","");};that.buttons[key].hide=function(){that.buttons[key].isHidden=true;button_element.css("display","none");};that["$_"+key]=that["$$"+key]=button_element;that.$btnc.append(button_element);});if(total_buttons===0){this.$btnc.hide();}if(this.closeIcon===null&&total_buttons===0){this.closeIcon=true;}if(this.closeIcon){if(this.closeIconClass){var closeHtml='';this.$closeIcon.html(closeHtml);}this.$closeIcon.click(function(e){e.preventDefault();var buttonName=false;var shouldClose=false;var str;if(typeof that.closeIcon==="function"){str=that.closeIcon();}else{str=that.closeIcon;}if(typeof str==="string"&&typeof that.buttons[str]!=="undefined"){buttonName=str;shouldClose=false;}else{if(typeof str==="undefined"||!!(str)===true){shouldClose=true;}else{shouldClose=false;}}if(buttonName){var btnResponse=that.buttons[buttonName].action.apply(that);shouldClose=(typeof btnResponse==="undefined")||!!(btnResponse);}if(shouldClose){that.close();}});this.$closeIcon.show();}else{this.$closeIcon.hide();}},setTitle:function(string,force){force=force||false;if(typeof string!=="undefined"){if(typeof string==="string"){this.title=string;}else{if(typeof string==="function"){if(typeof string.promise==="function"){console.error("Promise was returned from title function, this is not supported.");}var response=string();if(typeof response==="string"){this.title=response;}else{this.title=false;}}else{this.title=false;}}}if(this.isAjaxLoading&&!force){return;}this.$title.html(this.title||"");this.updateTitleContainer();},setIcon:function(iconClass,force){force=force||false;if(typeof iconClass!=="undefined"){if(typeof iconClass==="string"){this.icon=iconClass;}else{if(typeof iconClass==="function"){var response=iconClass();if(typeof response==="string"){this.icon=response;}else{this.icon=false;}}else{this.icon=false;}}}if(this.isAjaxLoading&&!force){return;}this.$icon.html(this.icon?'':"");this.updateTitleContainer();},updateTitleContainer:function(){if(!this.title&&!this.icon){this.$titleContainer.hide();}else{this.$titleContainer.show();}},setContentPrepend:function(content,force){if(!content){return;}this.contentParsed.prepend(content);},setContentAppend:function(content){if(!content){return;}this.contentParsed.append(content);},setContent:function(content,force){force=!!force;var that=this;if(content){this.contentParsed.html("").append(content);}if(this.isAjaxLoading&&!force){return;}this.$content.html("");this.$content.append(this.contentParsed);setTimeout(function(){that.$body.find("input[autofocus]:visible:first").focus();},100);},loadingSpinner:false,showLoading:function(disableButtons){this.loadingSpinner=true;this.$jconfirmBox.addClass("loading");if(disableButtons){this.$btnc.find("button").prop("disabled",true);}},hideLoading:function(enableButtons){this.loadingSpinner=false;this.$jconfirmBox.removeClass("loading");if(enableButtons){this.$btnc.find("button").prop("disabled",false);}},ajaxResponse:false,contentParsed:"",isAjax:false,isAjaxLoading:false,_parseContent:function(){var that=this;var e=" ";if(typeof this.content==="function"){var res=this.content.apply(this);if(typeof res==="string"){this.content=res;}else{if(typeof res==="object"&&typeof res.always==="function"){this.isAjax=true;this.isAjaxLoading=true;res.always(function(data,status,xhr){that.ajaxResponse={data:data,status:status,xhr:xhr};that._contentReady.resolve(data,status,xhr);if(typeof that.contentLoaded==="function"){that.contentLoaded(data,status,xhr);}});this.content=e;}else{this.content=e;}}}if(typeof this.content==="string"&&this.content.substr(0,4).toLowerCase()==="url:"){this.isAjax=true;this.isAjaxLoading=true;var u=this.content.substring(4,this.content.length);$.get(u).done(function(html){that.contentParsed.html(html);}).always(function(data,status,xhr){that.ajaxResponse={data:data,status:status,xhr:xhr};that._contentReady.resolve(data,status,xhr);if(typeof that.contentLoaded==="function"){that.contentLoaded(data,status,xhr);}});}if(!this.content){this.content=e;}if(!this.isAjax){this.contentParsed.html(this.content);this.setContent();that._contentReady.resolve();}},_stopCountDown:function(){clearInterval(this.autoCloseInterval);if(this.$cd){this.$cd.remove();}},_startCountDown:function(){var that=this;var opt=this.autoClose.split("|");if(opt.length!==2){console.error("Invalid option for autoClose. example 'close|10000'");return false;}var button_key=opt[0];var time=parseInt(opt[1]);if(typeof this.buttons[button_key]==="undefined"){console.error("Invalid button key '"+button_key+"' for autoClose");return false;}var seconds=Math.ceil(time/1000);this.$cd=$(' ('+seconds+")").appendTo(this["$_"+button_key]);this.autoCloseInterval=setInterval(function(){that.$cd.html(" ("+(seconds-=1)+") ");if(seconds<=0){that["$$"+button_key].trigger("click");that._stopCountDown();}},1000);},_getKey:function(key){switch(key){case 192:return"tilde";case 13:return"enter";case 16:return"shift";case 9:return"tab";case 20:return"capslock";case 17:return"ctrl";case 91:return"win";case 18:return"alt";case 27:return"esc";case 32:return"space";}var initial=String.fromCharCode(key);if(/^[A-z0-9]+$/.test(initial)){return initial.toLowerCase();}else{return false;}},reactOnKey:function(e){var that=this;var a=$(".jconfirm");if(a.eq(a.length-1)[0]!==this.$el[0]){return false;}var key=e.which;if(this.$content.find(":input").is(":focus")&&/13|32/.test(key)){return false;}var keyChar=this._getKey(key);if(keyChar==="esc"&&this.escapeKey){if(this.escapeKey===true){this.$scrollPane.trigger("click");}else{if(typeof this.escapeKey==="string"||typeof this.escapeKey==="function"){var buttonKey;if(typeof this.escapeKey==="function"){buttonKey=this.escapeKey();}else{buttonKey=this.escapeKey;}if(buttonKey){if(typeof this.buttons[buttonKey]==="undefined"){console.warn("Invalid escapeKey, no buttons found with key "+buttonKey);}else{this["$_"+buttonKey].trigger("click");}}}}}$.each(this.buttons,function(key,button){if(button.keys.indexOf(keyChar)!==-1){that["$_"+key].trigger("click");}});},setDialogCenter:function(){console.info("setDialogCenter is deprecated, dialogs are centered with CSS3 tables");},_unwatchContent:function(){clearInterval(this._timer);},close:function(onClosePayload){var that=this;if(typeof this.onClose==="function"){this.onClose(onClosePayload);}this._unwatchContent();$(window).unbind("resize."+this._id);$(window).unbind("keyup."+this._id);$(window).unbind("jcKeyDown."+this._id);if(this.draggable){$(window).unbind("mousemove."+this._id);$(window).unbind("mouseup."+this._id);this.$titleContainer.unbind("mousedown");}that.$el.removeClass(that.loadedClass);$("body").removeClass("jconfirm-no-scroll-"+that._id);that.$jconfirmBoxContainer.removeClass("jconfirm-no-transition");setTimeout(function(){that.$body.addClass(that.closeAnimationParsed);that.$jconfirmBg.addClass("jconfirm-bg-h");var closeTimer=(that.closeAnimation==="none")?1:that.animationSpeed;setTimeout(function(){that.$el.remove();var l=w.jconfirm.instances;var i=w.jconfirm.instances.length-1;for(i;i>=0;i--){if(w.jconfirm.instances[i]._id===that._id){w.jconfirm.instances.splice(i,1);}}if(!w.jconfirm.instances.length){if(that.scrollToPreviousElement&&w.jconfirm.lastFocused&&w.jconfirm.lastFocused.length&&$.contains(document,w.jconfirm.lastFocused[0])){var $lf=w.jconfirm.lastFocused;if(that.scrollToPreviousElementAnimate){var st=$(window).scrollTop();var ot=w.jconfirm.lastFocused.offset().top;var wh=$(window).height();if(!(ot>st&&ot<(st+wh))){var scrollTo=(ot-Math.round((wh/3)));$("html, body").animate({scrollTop:scrollTo},that.animationSpeed,"swing",function(){$lf.focus();});}else{$lf.focus();}}else{$lf.focus();}w.jconfirm.lastFocused=false;}}if(typeof that.onDestroy==="function"){that.onDestroy();}},closeTimer*0.4);},50);return true;},open:function(){if(this.isOpen()){return false;}this._buildHTML();this._bindEvents();this._open();return true;},setStartingPoint:function(){var el=false;if(this.animateFromElement!==true&&this.animateFromElement){el=this.animateFromElement;w.jconfirm.lastClicked=false;}else{if(w.jconfirm.lastClicked&&this.animateFromElement===true){el=w.jconfirm.lastClicked;w.jconfirm.lastClicked=false;}else{return false;}}if(!el){return false;}var offset=el.offset();var iTop=el.outerHeight()/2;var iLeft=el.outerWidth()/2;iTop-=this.$jconfirmBox.outerHeight()/2;iLeft-=this.$jconfirmBox.outerWidth()/2;var sourceTop=offset.top+iTop;sourceTop=sourceTop-this._scrollTop();var sourceLeft=offset.left+iLeft;var wh=$(window).height()/2;var ww=$(window).width()/2;var targetH=wh-this.$jconfirmBox.outerHeight()/2;var targetW=ww-this.$jconfirmBox.outerWidth()/2;sourceTop-=targetH;sourceLeft-=targetW;if(Math.abs(sourceTop)>wh||Math.abs(sourceLeft)>ww){return false;}this.$jconfirmBoxContainer.css("transform","translate("+sourceLeft+"px, "+sourceTop+"px)");},_open:function(){var that=this;if(typeof that.onOpenBefore==="function"){that.onOpenBefore();}this.$body.removeClass(this.animationParsed);this.$jconfirmBg.removeClass("jconfirm-bg-h");this.$body.focus();that.$jconfirmBoxContainer.css("transform","translate("+0+"px, "+0+"px)");setTimeout(function(){that.$body.css(that._getCSS(that.animationSpeed,1));that.$body.css({"transition-property":that.$body.css("transition-property")+", margin"});that.$jconfirmBoxContainer.addClass("jconfirm-no-transition");that._modalReady.resolve();if(typeof that.onOpen==="function"){that.onOpen();}that.$el.addClass(that.loadedClass);},this.animationSpeed);},loadedClass:"jconfirm-open",isClosed:function(){return !this.$el||this.$el.parent().length===0;},isOpen:function(){return !this.isClosed();},toggle:function(){if(!this.isOpen()){this.open();}else{this.close();}}};w.jconfirm.instances=[];w.jconfirm.lastFocused=false;w.jconfirm.pluginDefaults={template:'

',title:"Hello",titleClass:"",type:"default",typeAnimated:true,draggable:true,dragWindowGap:15,dragWindowBorder:true,animateFromElement:true,alignMiddle:true,smoothContent:true,content:"Are you sure to continue?",buttons:{},defaultButtons:{ok:{action:function(){}},close:{action:function(){}}},contentLoaded:function(){},icon:"",lazyOpen:false,bgOpacity:null,theme:"light",animation:"scale",closeAnimation:"scale",animationSpeed:400,animationBounce:1,escapeKey:true,rtl:false,container:"body",containerFluid:false,backgroundDismiss:false,backgroundDismissAnimation:"shake",autoClose:false,closeIcon:null,closeIconClass:false,watchInterval:100,columnClass:"col-md-4 col-md-offset-4 col-sm-6 col-sm-offset-3 col-xs-10 col-xs-offset-1",boxWidth:"50%",scrollToPreviousElement:true,scrollToPreviousElementAnimate:true,useBootstrap:true,offsetTop:40,offsetBottom:40,bootstrapClasses:{container:"container",containerFluid:"container-fluid",row:"row"},onContentReady:function(){},onOpenBefore:function(){},onOpen:function(){},onClose:function(){},onDestroy:function(){},onAction:function(){}};var keyDown=false;$(window).on("keydown",function(e){if(!keyDown){var $target=$(e.target);var pass=false;if($target.closest(".jconfirm-box").length){pass=true;}if(pass){$(window).trigger("jcKeyDown");}keyDown=true;}});$(window).on("keyup",function(){keyDown=false;});w.jconfirm.lastClicked=false;$(document).on("mousedown","button, a, [jc-source]",function(){w.jconfirm.lastClicked=$(this);});}));plugins/limit-login-attempts-reloaded/assets/js/limit-login-attempts.js000064400000014434147176754540022456 0ustar00function llar_activate_micro_cloud( email ) { let data = { action: 'activate_micro_cloud', email: email, sec: llar_vars.nonce_activate_micro_cloud, } return llar_ajax_callback_post( ajaxurl, data ) } function llar_activate_license_key( $setup_code ) { let data = { action: 'app_setup', code: $setup_code, sec: llar_vars.nonce_app_setup, } return llar_ajax_callback_post( ajaxurl, data ) } function llar_is_valid_email( email ) { // Allow empty email if ( email === null || email === '' ) { return true; } let email_regex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; return email_regex.test( email ); } function llar_ajax_callback_post( ajaxurl = null, data ) { return new Promise(function( resolve, reject ) { jQuery.post( ajaxurl, data, function ( response ) { if ( ( response && ( 'success' in response ) && response.success === false ) ) { reject( response ); } else if ( response.error ) { reject( response ); } else { resolve( response ); } }); }); } ( function( $ ) { $( document ).ready(function() { const poster = '#video-poster'; $( document ).on( 'click', poster, function () { $( poster ).css( 'display', 'none' ); } ) const $account_policies = $( 'input[name="strong_account_policies"]' ); const $checkbox_block_by_country = $( 'input[name="block_by_country"]' ); const $checkbox_auto_update_choice = $( 'input[name="auto_update_choice"]' ); const $auto_update_choice = $( 'a[href="#llar_auto_update_choice"]' ); const $auto_update_notice = $( '.llar-auto-update-notice' ); const content_html = $( '#llar_popup_error_content' ).html(); const $upgrade_premium_message = $( '#llar-header-upgrade-premium-message' ); $account_policies.on( 'change', function () { $is_checklist = !! $( this ).prop( 'checked' ); let data = { action: 'strong_account_policies', is_checklist: $is_checklist, sec: llar_vars.nonce_account_policies } llar_ajax_callback_post( ajaxurl, data ) .catch( function () { $account_policies.prop( 'checked', false ); } ) } ) $checkbox_block_by_country.on( 'change', function () { $is_checklist = !! $( this ).prop( 'checked' ); let data = { action: 'block_by_country', is_checklist: $is_checklist, sec: llar_vars.nonce_block_by_country } llar_ajax_callback_post( ajaxurl, data ) .catch( function () { $account_policies.prop( 'checked', false ); } ) } ) $upgrade_premium_message.on( 'click', '.close', function () { $upgrade_premium_message.addClass( 'llar-display-none' ); let data = { action: 'close_premium_message', sec: llar_vars.nonce_close_premium_message } llar_ajax_callback_post( ajaxurl, data ) .catch( function () { $upgrade_premium_message.addClass( 'llar-display-none' ); } ) } ) $auto_update_choice.on( 'click', function ( e ) { e.preventDefault(); let checked = 'no'; if ( ! $checkbox_auto_update_choice.is( 'checked' ) ) { checked = 'yes'; } toggle_auto_update( checked, content_html ); } ) $auto_update_notice.on( 'click', ' .auto-enable-update-option', function( e ) { e.preventDefault(); let value = $( this ).data( 'val' ); toggle_auto_update( value, content_html ) ; }) function toggle_auto_update( value, content ) { let data = { action: 'toggle_auto_update', value: value, sec: llar_vars.nonce_auto_update } llar_ajax_callback_post( ajaxurl, data ) .then( function () { hide_auto_update_option( value ); } ) .catch( function ( response ) { notice_popup_error_update.content = content; notice_popup_error_update.msg = response.data.msg; notice_popup_error_update.open(); } ) } function hide_auto_update_option( value ) { if ( $auto_update_notice.length > 0 && $auto_update_notice.css( 'display' ) !== 'none' ) { $auto_update_notice.remove(); } if ( value === 'yes' && ! $checkbox_auto_update_choice.is('checked') ) { let link_text = $auto_update_choice.text(); $checkbox_auto_update_choice.prop( 'checked', true ); $auto_update_choice.replaceWith( link_text ); } } const notice_popup_error_update = $.dialog({ title: false, content: this.content, lazyOpen: true, type: 'default', typeAnimated: true, draggable: false, animation: 'top', animationBounce: 1, boxWidth: '20%', bgOpacity: 0.9, useBootstrap: false, closeIcon: true, buttons: {}, onOpenBefore: function () { const $card_body = $( '.card-body' ); $card_body.text( this.msg ); } } ); const $onboarding_reset = $( '#llar_onboarding_reset' ); $onboarding_reset.on( 'click', function ( e ) { e.preventDefault(); let data = { action: 'onboarding_reset', sec: llar_vars.nonce_onboarding_reset } llar_ajax_callback_post( ajaxurl, data ) .then( function () { let clear_url = window.location.protocol + "//" + window.location.host + window.location.pathname; window.location = clear_url + '?page=limit-login-attempts&tab=dashboard'; } ) } ) } ); } )(jQuery) plugins/limit-login-attempts-reloaded/assets/js/limit-login-attempts.min.js000064400000007766147176754540023252 0ustar00function llar_activate_micro_cloud(email){let data={action:"activate_micro_cloud",email:email,sec:llar_vars.nonce_activate_micro_cloud};return llar_ajax_callback_post(ajaxurl,data)}function llar_activate_license_key($setup_code){let data={action:"app_setup",code:$setup_code,sec:llar_vars.nonce_app_setup};return llar_ajax_callback_post(ajaxurl,data)}function llar_is_valid_email(email){if(email===null||email===""){return true}let email_regex=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;return email_regex.test(email)}function llar_ajax_callback_post(ajaxurl=null,data){return new Promise(function(resolve,reject){jQuery.post(ajaxurl,data,function(response){if(response&&"success"in response&&response.success===false){reject(response)}else if(response.error){reject(response)}else{resolve(response)}})})}(function($){$(document).ready(function(){const poster="#video-poster";$(document).on("click",poster,function(){$(poster).css("display","none")});const $account_policies=$('input[name="strong_account_policies"]');const $checkbox_block_by_country=$('input[name="block_by_country"]');const $checkbox_auto_update_choice=$('input[name="auto_update_choice"]');const $auto_update_choice=$('a[href="#llar_auto_update_choice"]');const $auto_update_notice=$(".llar-auto-update-notice");const content_html=$("#llar_popup_error_content").html();const $upgrade_premium_message=$("#llar-header-upgrade-premium-message");$account_policies.on("change",function(){$is_checklist=!!$(this).prop("checked");let data={action:"strong_account_policies",is_checklist:$is_checklist,sec:llar_vars.nonce_account_policies};llar_ajax_callback_post(ajaxurl,data).catch(function(){$account_policies.prop("checked",false)})});$checkbox_block_by_country.on("change",function(){$is_checklist=!!$(this).prop("checked");let data={action:"block_by_country",is_checklist:$is_checklist,sec:llar_vars.nonce_block_by_country};llar_ajax_callback_post(ajaxurl,data).catch(function(){$account_policies.prop("checked",false)})});$upgrade_premium_message.on("click",".close",function(){$upgrade_premium_message.addClass("llar-display-none");let data={action:"close_premium_message",sec:llar_vars.nonce_close_premium_message};llar_ajax_callback_post(ajaxurl,data).catch(function(){$upgrade_premium_message.addClass("llar-display-none")})});$auto_update_choice.on("click",function(e){e.preventDefault();let checked="no";if(!$checkbox_auto_update_choice.is("checked")){checked="yes"}toggle_auto_update(checked,content_html)});$auto_update_notice.on("click"," .auto-enable-update-option",function(e){e.preventDefault();let value=$(this).data("val");toggle_auto_update(value,content_html)});function toggle_auto_update(value,content){let data={action:"toggle_auto_update",value:value,sec:llar_vars.nonce_auto_update};llar_ajax_callback_post(ajaxurl,data).then(function(){hide_auto_update_option(value)}).catch(function(response){notice_popup_error_update.content=content;notice_popup_error_update.msg=response.data.msg;notice_popup_error_update.open()})}function hide_auto_update_option(value){if($auto_update_notice.length>0&&$auto_update_notice.css("display")!=="none"){$auto_update_notice.remove()}if(value==="yes"&&!$checkbox_auto_update_choice.is("checked")){let link_text=$auto_update_choice.text();$checkbox_auto_update_choice.prop("checked",true);$auto_update_choice.replaceWith(link_text)}}const notice_popup_error_update=$.dialog({title:false,content:this.content,lazyOpen:true,type:"default",typeAnimated:true,draggable:false,animation:"top",animationBounce:1,boxWidth:"20%",bgOpacity:.9,useBootstrap:false,closeIcon:true,buttons:{},onOpenBefore:function(){const $card_body=$(".card-body");$card_body.text(this.msg)}});const $onboarding_reset=$("#llar_onboarding_reset");$onboarding_reset.on("click",function(e){e.preventDefault();let data={action:"onboarding_reset",sec:llar_vars.nonce_onboarding_reset};llar_ajax_callback_post(ajaxurl,data).then(function(){let clear_url=window.location.protocol+"//"+window.location.host+window.location.pathname;window.location=clear_url+"?page=limit-login-attempts&tab=dashboard"})})})})(jQuery);plugins/limit-login-attempts-reloaded/assets/sass/_admin-dashboard-widgets.scss000064400000006057147176754540024111 0ustar00#llar-admin-dashboard-widgets { .widget-title { padding-bottom: 15px; border-bottom: 1px solid #e4e4e4; font-size: 14px; text-align: left; } .widget-content { font-family: $font-primary, $font-secondary; .llar-attempts-chart-legend { margin-bottom: 10px; } } .llar-widget { margin-bottom: 20px; background-color: #fff; text-align: center; .section-title__new { font-size: 12px; line-height: 150%; display: flex; flex-wrap: nowrap; justify-content: space-between; text-align: left; .llar { &-label { color: #2A2F40; min-width: fit-content; padding: 0.125rem .75rem; border-radius: 8px; background-color: rgba(10, 172, 208, 0.08); &-group { display: flex; column-gap: 30px; } &__circle-blue { font-size: 44px; vertical-align: middle; color: #58C3FF; } &__circle-grey { font-size: 44px; vertical-align: middle; color: rgba(174, 174, 174, 0.6980392157); } .hint_tooltip { @extend .llar_hint_tooltip; } .hint_tooltip-content { @extend .llar_hint_tooltip-content; } .hint_tooltip-parent { @extend .llar_hint_tooltip-parent; } .hint_tooltip { left: -100%; &:before { right: 82%; } } } &-premium-label { .dashicons { width: unset; height: unset; background-color: $primary-colors__aero_blue; border-radius: $border-radius__min * .5; color: $background-body; margin-right: 5px; margin-top: 3px; font-size: inherit; &.disabled { background-color: $state-color__error; } @include _1199 { margin-right: 2px; } } } } } .chart { max-width: 300px; position: relative; margin: 15px auto; //margin-bottom: 15px; //margin-left: auto; //margin-right: auto; .doughnut-chart-wrap { position: relative; width: 200px; height: auto; margin: 0 auto; } .llar-retries-count { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); font-size: 28px; font-weight: bold; } } .title { font-weight: 600; font-size: 16px; line-height: 1.5; margin-bottom: 10px; } .desc { font-size: 15px; } .actions { margin-top: 5px; } &.widget-2 { .llar-chart-wrap { width: 100%; margin: 0 auto; clear: both; canvas { height: 300px; } } .chart-stats-legend { text-align: center; margin-top: 10px; } } } }plugins/limit-login-attempts-reloaded/assets/sass/_dashboard-page.scss000064400000036215147176754540022270 0ustar00#llar-dashboard-page { font-family: $font-primary, $font-secondary; margin-top: 40px; * { box-sizing: border-box; } ul, ol { @extend .llar_list; margin-left: 0; padding-left: 32px; li { font-size: 16px; color: $typography-secondary; padding-left: 16px; margin-bottom: 10px; &::before { color: $color-marker; margin-left: -20px; } } } .section-title__new { display: flex; flex-wrap: nowrap; justify-content: space-between; gap: 20px; font-size: 16px; text-align: left; @include _1799 { gap: 10px; } @include _1599 { font-size: 14px; } .llar-label { color: $typography-primary; min-width: fit-content; text-wrap: nowrap; padding: 2px 16px; border-radius: $border-radius__min; background-color: rgba(10, 172, 208, 0.08); @include _1599 { padding: 2px 5px; } &-group { display: flex; column-gap: 20px; } &__url { color: $typography-additional; font-size: 87.5%; margin-right: 18px; overflow: hidden; @include _1599 { margin-right: 4px; } } &__circle-blue { font-size: 64px; vertical-align: middle; color: #58C3FF; } &__circle-grey { font-size: 64px; vertical-align: middle; color: #AEAEAEB2; } .dashicons { @extend .dashicons-secondary; font-size: 140%; width: 14px; height: 14px; } &.exhausted { color: $state-color__error; background-color: $state-color__error_back; } &.request { background-color: unset; } } } .section-content { margin-top: 16px; overflow: hidden; } .dashboard-section-1 { margin-bottom: 20px; display: flex; flex-wrap: nowrap; gap: 16px; @include _1399 { flex-wrap: wrap; gap: 8px; } > [class^="info-box-"] { position: relative; text-align: center; flex: 0 0 auto; width: calc(33.3% - 16px); padding: 32px 30px 24px; border-radius: $border-radius; background: $background-body; box-shadow: 4px 4px 18px 0 $box-shadow__light_transparent_gray; @include _1799 { padding: 30px 16px 16px; } @include _1599 { padding: 30px 16px; } @include _1399 { width: calc(40% - 8px / 2); min-height: 272px; } @include _1199 { width: 100%; min-height: 294px; } &:last-child { border: 0; } .title { font-weight: 500; color: $typography-secondary; font-size: 16px; line-height: 1.5; &-big { font-size: 20px; } } } .info-box-1 { .section-title__new { .llar-premium-label { float: right; margin-right: 18px; padding-top: 2px; color: $typography-secondary; text-wrap: nowrap; .dashicons { width: unset; height: unset; background-color: $primary-colors__aero_blue; border-radius: $border-radius__min * .5; color: $background-body; margin-right: 5px; font-size: inherit; &.disabled { background-color: $state-color__error; } @include _1599 { margin-top: 2px; } @include _1199 { margin-right: 2px; } } } } .section-content { clear: both; margin-top: 24px; margin-bottom: 16px; } .chart { max-width: 300px; position: relative; margin-bottom: 15px; margin-left: auto; margin-right: auto; .doughnut-chart-wrap { position: relative; width: 200px; height: auto; margin: 0 auto; } .llar-retries-count { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); font-size: 28px; font-weight: bold; } } .desc { margin-top: 10px; color: $typography-additional; font-size: 14px; } .actions { margin-top: 5px; } } .info-box-2 { @include _1399 { width: calc(60% - 4px); } @include _1199 { width: 100%; } .section-content { overflow: visible; } .llar-chart-wrap { width: 100%; margin: 0 auto; clear: both; canvas { height: 300px; } } .chart-stats-legend { text-align: center; margin-top: 10px; } } .info-box-3 { text-align: left; @include _1399 { width: 100%; } .section-content { overflow: unset; .list-unstyled { padding-left: 5px; font-size: 14px; line-height: 1.5; } } .desc { color: $typography-secondary; font-size: 16px; line-height: 1.5; margin-bottom: 20px; } .title { color: $typography-primary; font-size: 18px; } .actions { position: relative; width: fit-content; left: 50%; transform: translateX(-50%); &__buttons { display: flex; flex-direction: row; column-gap: 16px; a { text-transform: uppercase; font-size: 16px; margin-bottom: 5px; &.button.menu__item { text-transform: none; text-align: center; } } .menu__item { min-width: 200px; max-width: 235px; padding: 7px 8px; font-size: 16px; border-radius: $border-radius__min; margin: 0 auto; @include _1599 { min-width: 160px; } &.button__transparent_orange { color: #FF7C06 !important; border: 1px solid; background: transparent; &:hover { background: $primary-colors__orange-back; border: 1px solid $primary-colors__orange; } } &.button__orange { color: $background-body !important; background: $primary-colors__orange; border: 1px solid $primary-colors__orange; //box-shadow: 0 0.312rem 0.625rem 0 rgba(255, 124, 6, 0.5); box-shadow: 0 5px 10px 0 $primary-colors__orange-semi_back; &:hover { background: $secondary-colors__dark-orange; } } &:focus { outline: none!important; box-shadow: unset!important; } } } } .remark { font-size: 14px; color: $typography-secondary; margin: 15px 16px 0; } } &.custom { .info-box-2 { flex: 0 0 calc(66.666% - 16px); width: calc(66.666% - 16px); @include _1399 { flex: 1 0 calc(50% - 8px / 2); width: calc(50% - 8px / 2); @include _991 { flex: 1 0 100%; width: 100%; min-height: 126px; } } } } } .dashboard-section-2 { display: flex; flex-wrap: wrap; justify-content: space-between; margin-bottom: 20px; > [class^="info-box-"] { flex: 0 0 calc(50% - 10px); min-height: 100px; background: $background-body; border: 1px solid #e4e4e4; padding: 15px; &:last-child { margin-right: 0; } } .info-box-1 { padding: 0; .notifications-list { padding: 0; margin: 0; li { margin: 0; border-bottom: 1px solid #e4e4e4; &:last-child { border: 0; } a { text-decoration: none; padding: 15px; font-size: 15px; display: block; &:hover { background-color: #f9f9f9; } } } } } .info-box-2 { display: flex; flex-wrap: wrap; .info-box-icon { flex: 0 0 100px; display: flex; justify-content: center; align-items: center; margin-right: 15px; .dashicons { color: #0073a0; font-size: 50px; width: auto; height: auto; } } .info-box-content { flex: 1; .title { font-size: 20px; font-weight: bold; margin-bottom: 10px; line-height: 1.5; } .desc { font-size: 15px; margin-bottom: 15px; } .actions { display: flex; justify-content: space-between; } } } } .dashboard-section-3 { display: flex; flex-wrap: nowrap; margin-bottom: 20px; column-gap: 16px; @include _1399 { gap: 8px; } @include _575 { flex-wrap: wrap; } > [class^="info-box-"] { position: relative; display: flex; flex-wrap: wrap; flex: 0 0 auto; width: calc(33.33333333% - 16px); padding: 20px 90px 26px 28px; border-radius: $border-radius; background: $background-body; box-shadow: 4px 4px 18px 0 $box-shadow__light_transparent_gray; @include _1399 { padding: 16px 25px 30px; width: calc(33.33333333% - 10px / 2); } @include _767 { padding: 16px 10px 16px; } @include _575 { flex: 0 0 100%; } .info-box-icon { flex: 0 0 auto; display: flex; justify-content: center; align-items: start; img { width: 50px; height: 50px; vertical-align: middle; margin-right: 16px; @include _1399 { width: 40px; height: 40px; margin-right: 8px; } @include _767 { width: 35px; height: 35px; margin-right: 4px; } } } .info-box-content { flex: 1; .title { color: $typography-primary; font-size: 20px; font-weight: 500; margin-bottom: 4px; line-height: 1.3; @include _767 { font-size: 16px; } a { text-decoration: none; } } .desc { font-size: 14px; } .actions { display: flex; justify-content: space-between; } } } } .dashboard-section-4 { display: flex; flex-wrap: wrap; margin-bottom: 20px; column-gap: 1rem; @include _1399 { gap: 8px; } > [class^="info-box-"] { flex: 0 0 auto; width: calc(50% - 16px); min-height: 100px; max-height: 600px; padding: 32px 23px 24px 30px; border-radius: $border-radius; background: $background-body; box-shadow: 4px 4px 18px 0 $box-shadow__light_transparent_gray; overflow: hidden; @include _1599 { max-height: 515px; padding: 27px 18px 20px 22px; } @include _1399 { width: 100%; } @include _991 { padding: 27px 16px 16px 18px; } &:last-child { margin-right: 0; } } .hint_tooltip { box-sizing: content-box; &:before { right: 25px; } &-content { font-size: 14px; color: white; @include _767 { font-size: 12px; } ul { padding-left: 16px; padding-right: 10px; li { font-size: inherit; color: inherit; margin-bottom: 0; padding-left: 10px; min-width: 120px; &::before { color: white; font-size: 12px; margin-left: -15px; } } } } &-parent { display: inline-block; position: relative; span { color: $primary-colors__orange; font-weight: 500; } .dashicons { color: $typography-additional; @include _1599 { line-height: unset; font-size: 14px; width: 12px; } @include _767 { font-size: 12px; } } } } .info-box-1 { position: relative; .section { &-title__new { .title { color: $typography-primary; font-size: 20px; font-weight: 500; } .desc { color: $typography-secondary; font-size: 16px; line-height: 1.5; margin: 40px; text-align: center; } } &-content { height: 100%; overflow: auto; scrollbar-width: thin; scrollbar-gutter: stable; padding-bottom: 30px; } } } .info-box-2 { line-height: 1.5; padding-left: 30px; @include _1599 { padding-left: 25px; } @include _991 { padding-left: 22px; } .section { &-title__new { .title { color: $typography-primary; font-size: 20px; font-weight: 500; } .desc { color: $typography-secondary; font-size: 16px; line-height: 2; @include _1599 { line-height: 1.8; } } } &-content { margin-top: 0; padding-top: 5px; .list { color: $typography-primary; font-size: 16px; font-weight: 500; margin-top: 27px; @include _1599 { font-size: 14px; margin-top: 20px; } @include _1399 { margin-top: 15px; } @include _991 { margin-top: 12px; } input { box-sizing: content-box; &:disabled, &:before { opacity: 1; pointer-events: none; } &:checked { + span { text-decoration: line-through; } } } &-add { display: none; color: $primary-colors__orange; margin-left: 10px; font-weight: 400; } input[type="checkbox"]:checked ~ .list-add { display: none; } input[type="checkbox"]:not(:checked) ~ .list-add { display: inline; } .desc { color: $typography-secondary; font-weight: 400; margin: 5px 25px; } } } } } } }plugins/limit-login-attempts-reloaded/assets/sass/_help-page.scss000064400000007225147176754540021270 0ustar00.llar-help-page { font-family: inherit; line-height: 1.5; .section-1 { display: flex; padding-top: 45px; padding-bottom: 50px; margin-bottom: 20px; border-radius: $border-radius; background-color: $background-body; box-shadow: 3px 5px 23px 0 rgba(162, 180, 189, 0.2); .block { text-align: center; flex: 1; border-right: 1px solid $typography-additional__light; &:last-child { border: 0; } .title { color: $typography-primary; font-weight: 500; font-size: 20px; } .text { color: $typography-secondary; font-size: 18px; max-width: 80%; margin: 10px auto; } .actions { text-align: center; .button { text-transform: uppercase; font-size: 18px; line-height: 1.4; padding: 4px 20px; span { text-transform: none; display: block; font-size: 12px; line-height: 13px; margin-bottom: 2px; } &.button-secondary { min-height: 40px; line-height: 40px; } } } } } .description-page { font-weight: 500; color: $typography-primary; } .documentation-section { display: flex; flex-wrap: wrap; .questions { display: flex; flex: 1 1 calc(100% - 550px); flex-direction: column; &__block { display: flex; flex: 1 1 auto; flex-direction: column; @include _1399 { flex: 1 1 100%; } .question { display: block; flex: 1 0 auto; margin-bottom: 20px; padding: 30px 40px; background-color: $background-body; border-radius: $border-radius; text-decoration: none; box-shadow: 2px 2px 9px 0 $box-shadow__light-transparent-gray; &:last-child { margin-bottom: 0; } &:hover { box-shadow: 4px 4px 18px 0 $box-shadow__light-transparent-gray; } .title { font-size: 18px; font-weight: 500; color: $typography-primary; } .desc { font-size: 16px; margin-top: 5px; color: $typography-secondary; } } } } .top-list { flex: 0 0 500px; margin-left: 20px; @include _1399 { flex: 0 0 100%; } .list__block { padding: 30px 35px; border-radius: $border-radius; background-color: $background-body; box-shadow: 4px 4px 18px 0 $box-shadow__light-transparent-gray; } ol { margin: 0; margin-left: 35px; color: $secondary-colors__blue; list-style: none; counter-reset: my-counter; li { position: relative; font-size: 16px; margin-bottom: 15px; padding: 3px; border-radius: $border-radius__min; counter-increment: my-counter; &:before { content: counter(my-counter) "."; position: absolute; left: -45px; top: 0; width: 100%; height: 100%; font-size: inherit; background-color: $background__sky-blue; border-radius: $border-radius__normal; padding: 3px 20px; } a { position: relative; color: inherit; text-decoration: none; &:hover { text-decoration: underline; } } } } } } }plugins/limit-login-attempts-reloaded/assets/sass/limit-login-attempts.scss000064400000144454147176754540023360 0ustar00@import "settings"; .toplevel_page_limit-login-attempts { // top level css #wpwrap { background-color: $background__sky-blue; } #wpcontent { background-color: $background__sky-blue; font-family: $font-primary, $font-secondary; font-style: $text-font-style; font-weight: $text-font-weight; color: $typography-primary; } } .limit-login-page-settings { margin: 8px 50px; @include _1799 { margin: 8px 16px 8px 0; } &__logo_block { display: flex; flex-wrap: nowrap; justify-content: space-between; align-items: baseline; font-size: 18px; margin-right: 20px; .info-box-icon { display: inline-block; margin-left: 5px; img { width: 15px; vertical-align: middle; } } } &__logo { margin-top: 21px; margin-left: 4px; max-width: 172px; } .nav-tab-wrapper { position: relative; border-bottom: unset; margin-top: 20px; .nav-tab { border: unset; background-color: unset; font-size: 16px; color: $typography-primary; font-weight: $text-font-weight; margin-left: 0; margin-right: 35px; padding: 4px 5px 6px; .llar-alert-icon { display: inline-block; vertical-align: middle; box-sizing: border-box; margin: -2px 0 0; padding: 0 1px 4px 2px; min-width: 18px; height: 18px; border-radius: 9px; background-color: #d63638; color: white; font-size: 14px; line-height: 1.4; text-align: center; } &-active { border-bottom: 4px solid $primary-colors__turquoise; } @include _991 { margin-right: 20px; } @include _767 { font-size: 14px; margin-right: .87em; } @include _575 { font-size: 12px; margin-right: .5em; } } .llar-failover-link { color: $primary-colors__turquoise; font-size: 14px; float: right; padding: 7px 15px; .llar-tooltip { &:before { right: 0; left: auto; } } } } .field-col { display: inline-block; margin-right: 20px; } .limit-login-log { table { background-color: #fff; th, td { padding: 10px; } tr:nth-child(even) { background-color: rgba(#000, .09); } } } #limit-login-app-setup-code { width: 85%; } .llar-app-notice { background-color: #fff; box-shadow: 0 1px 1px 0 rgba(0, 0, 0, .1); padding: 15px; border-radius: 3px; margin-top: 20px; margin-bottom: 20px; font-size: 14px; border-left: 5px solid #ffba00; &.success { border-color: #46b450; } p { font-size: inherit; margin: 0 0 20px; &:last-child { margin-bottom: 0; } } } input[name="admin_notify_email"] { min-width: 243px; } input[name="lla_trusted_ip_origins"] { min-width: 400px; } .llar-test-email-notification-btn { text-decoration: none; margin-left: 16px; font-weight: 400; } .llar-test-email-notification-loader { .llar-app-ajax-spinner { float: none; margin: -2px 5px 0; display: none; } &.loading { .llar-app-ajax-spinner { display: inline-block; visibility: visible; } } .msg { margin-left: 5px; &.success { color: #71c21b; } } } .llar-protect-notice { font-size: 15px; color: #848484; margin-left: 10px; a { color: #222222; text-decoration: none; border-bottom: 1px dashed; } } .llar-toggle-setup-field { color: #2271b1; text-decoration-style: dashed; &:hover { color: #222; } } .setup-code-wrap { display: none; min-width: 450px; &.active { display: block; } button.button { @include _1199 { min-width: 120px!important; } @include _991 { min-width: 90px!important; } } } .app-form-field { display: none; &.active { display: table-row; } } .llar-app-field { display: none; &.active { display: table-row; } } } #llar-setting-page { color: $typography-primary; margin-top: 40px; line-height: 1.5; .title_page { margin-top: 40px; margin-bottom: 15px; color: inherit; font-size: 20px; font-weight: 500; @include _1599 { font-size: 18px; } img { width: 36px; height: 36px; vertical-align: middle; margin-right: 8px; } } .description-page { position: relative; font-size: 18px; color: $typography-secondary; padding: 30px 44px; border-radius: $border-radius; background: rgb(232 253 255 / 2%); box-shadow: 4px 4px 18px 0 $box-shadow__light-transparent-gray; @include _1599 { font-size: 16px; } } .llar-settings-wrap { margin-top: 20px; .llar-form-table { color: $typography-primary; font-size: 18px; border-collapse: separate; border-spacing: 0 18px; border-color: unset; margin-top: -18px; margin-bottom: -18px; tr { position: relative; font-size: 18px; border-radius: $border-radius; color: $typography-secondary; background: $background-body; box-shadow: 4px 4px 18px 0 $box-shadow__light-transparent-gray; @include _1599 { font-size: 16px; } th, td { font-size: inherit; line-height: inherit; border-radius: $border-radius; background-color: unset; padding: 29px 5px 32px 44px; @include _1599 { padding: 12px 5px 12px 25px; } @include _1399 { padding-left: 15px; } } th { color: $typography-primary; font-weight: 400; border-top-right-radius: unset; border-bottom-right-radius: unset; width: 300px; @include _1399 { width: 260px; } .dashicons { @extend .dashicons-secondary; font-size: 140%; width: 12px; height: 12px; margin-left: 2px; @include _1599 { font-size: 20px; } } .hint_tooltip { right: -140px; top: 30px; width: 200px; &:before { right: 142px; } } } td { color: $typography-secondary; font-size: 16px; line-height: 1.5; border-top-left-radius: unset; border-bottom-left-radius: unset; @include _1599 { font-size: 14px; } .textarea_border, .input_border { @extend .llar_input_border; &.full_area { min-width: 720px; @include _1599 { min-width: 70%; } } textarea { font-family: inherit; font-size: 16px; color: $typography-secondary; background-color: $background-body; padding-right: 24px; border: unset; scrollbar-width: thin; @include _1599 { padding-right: 18px; font-size: 14px; } &::-webkit-scrollbar { width: 8px; } &::-webkit-scrollbar-track { background-color: $typography-additional; border-radius: $border-radius__min; } &::-webkit-scrollbar-thumb { background-color: $typography-secondary; border-radius: $border-radius__min; } &:hover, &:focus { border: unset; box-shadow: unset; outline: unset; } } } select { font-family: inherit; background: $background-body url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%234ACAD8FF'%3e%3cpath d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e") no-repeat right 5px top 55%; background-size: 16px 16px; &.input_border { padding: 6px 64px 6px 16px; @include _1599 { padding-right: 35px; } } } input[type="checkbox"] { @extend .llar_input_checkbox; } .input_border { border-radius: $border-radius__min; &:hover, &:focus { box-shadow: unset; outline: unset; } } a.unlink { @extend .llar_turquoise; font-weight: 500; &:hover { border-bottom: unset; } } .description-additional, .description-secondary, .llar-protect-notice { font-size: 16px; line-height: inherit; color: $typography-additional; padding: 16px 8px 8px 24px; max-width: 740px; @include _1599 { font-size: 14px; } } .description-secondary, .llar-protect-notice { color: $typography-secondary; } .llar-protect-notice { font-size: inherit; color: inherit; a { text-decoration: none; border-bottom: unset; &:hover { border-bottom: 1px solid currentColor; } } } } } } } .add_block__under_table { margin: 8px 0; padding: 24px 48px; background-color: $background__sky-blue; border-radius: $border-radius; @include _1199 { padding: 16px; } .description { color: $typography-primary; font-size: 18px; line-height: 1.5; font-weight: 500; @include _1599 { font-size: 16px; } } .add_block__list { display: flex; margin-top: 16px; margin-bottom: 8px; color: $typography-secondary; font-size: 16px; flex-wrap: nowrap; justify-content: space-between; @include _1599 { flex-wrap: wrap; } .item { flex: 0 0 16%; display: flex; flex-direction: row; flex-wrap: nowrap; align-items: flex-start; @include _1599 { flex: 0 0 32%; } .icon { width: 50px; height: 50px; vertical-align: middle; margin-right: 8px; } .name { width: 80%; padding-bottom: 17px; } } } &.image_plus { .row__list { display: flex; .add_block__title { flex: 0 0 14%; margin-right: 20px; } } .add_block__list { gap: 16px; @include _1599 { column-gap: 10px; } .item { flex: 0 0 15%; flex-direction: column; align-items: start; border-radius: $border-radius; border: 1px solid $primary-colors__turquoise; @include _1599 { flex: 1 0 30%; } .name { width: unset; margin: 10px 23px 17px; } img { width: 120px; align-self: center; } } } } } .button { @extend .llar_button; } .gdpr-information-link { display: block; text-decoration: none; position: relative; &:after { content: "\f345"; font-family: dashicons; line-height: 1; font-weight: 400; font-style: normal; text-transform: none; text-rendering: auto; font-size: 22px; text-align: center; position: absolute; right: 40px; top: 50%; color: $typography-primary; transform: translateY(-50%); } } .button_block { margin-top: 24px; display: flex; flex-wrap: nowrap; column-gap: 16px; a { &.button.menu__item { text-align: center; } } } .llar-accordion { font-family: inherit; font-size: inherit; font-weight: inherit; line-height: inherit; border-radius: $border-radius; background-color: $background__sky-blue; .ui-accordion-header { color: $typography-primary; font-weight: 500; font-size: 18px; margin-top: 20px; padding: 31px 40px 31px; border: 1px solid $primary-colors__turquoise; border-bottom: 0; border-top-right-radius: $border-radius; border-top-left-radius: $border-radius; background-color: $background-body; @include _1599 { font-size: 16px; } &-collapsed { border: 0; border-radius: $border-radius; background: unset; box-shadow: 4px 4px 18px 0 $box-shadow__light-transparent-gray; } &.ui-accordion-header-active { background: white; } .llar_setup_code { position: absolute; top: 50%; right: 2%; transform: translateY(-50%); } &-active { .llar_setup_code { visibility: hidden; } } } .ui-accordion-content { padding-top: 0; margin-bottom: 16px; color: $typography-primary; border-bottom-right-radius: $border-radius; border-bottom-left-radius: $border-radius; border: 1px solid $primary-colors__turquoise; border-top: 0; background-color: $background-body; overflow: hidden; a { color: inherit; } .llar-form-table { margin-top: 0; border-spacing: 0; font-weight: 400; tr { box-shadow: unset; th, td { padding-top: 0; } th { padding-left: 0; } } } } } } #llar-setting-page-help { @extend #llar-setting-page; } #llar-setting-page-premium { @extend #llar-setting-page; } #llar-setting-page-debug { @extend #llar-setting-page; .llar-settings-wrap { .llar-form-table { tr { td { .textarea_border, .input_border { textarea { color: $typography-additional; } } .description-secondary { padding-left: 0; } } } } } } #llar-setting-page-logs { @extend #llar-setting-page; .add_block__under_table { margin-top: 20px; &.image_plus { box-shadow: 3px 5px 23px 0 $box-shadow__light-transparent-gray; .row__list { display: flex; .add_block__title { flex: 0 0 14%; margin-right: 20px; } } .add_block__list { gap: 18px; @include _1599 { column-gap: 10px; } .item { flex: 0 0 23%; @include _1599 { flex: 0 0 49%; } .name { margin: 10px 33px 37px; } img { margin-top: 23px; width: 154px; } } } } } .description-page { .description-secondary { a.unlink { @extend .llar_turquoise; font-weight: 500; &:hover { border-bottom: unset; } } } } } #llar-setting-page-logs__active { @extend #llar-setting-page-logs; .llar-table-header { display: flex; justify-content: space-between; align-items: flex-start; margin: 40px 0 5px; .title_page { margin-top: 0; span { color: $typography-secondary; font-size: 80%; font-weight: 400; margin-left: 10px; } } .right-link { font-size: 16px; line-height: 1.625; margin-right: 5px; text-align: center; .dashicons-image-rotate { font-size: 16px; vertical-align: middle; } .dashicons-editor-help { vertical-align: middle; } } } .llar-table-scroll-wrap { max-height: 400px; padding: 0 20px 30px; border-radius: $border-radius__normal; background-color: white; box-shadow: 4px 4px 18px 0 $box-shadow__light-transparent-gray; overflow-y: auto; scrollbar-width: thin; @include _1599 { padding: 0 15px 20px; } @include _1399 { padding: 0 10px 10px; } &::-webkit-scrollbar { width: 4px; } .llar-form-table { position: relative; border-collapse: separate; border-spacing: 0 3px; &.llar-preloader { &:before { content: ""; display: block; width: 100%; height: 100%; background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46YXV0bztiYWNrZ3JvdW5kOjAgMCIgd2lkdGg9IjY0IiBoZWlnaHQ9IjY0IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiIGRpc3BsYXk9ImJsb2NrIj48Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiBmaWxsPSJub25lIiBzdHJva2U9IiNlM2UzZTMiIHN0cm9rZS13aWR0aD0iNSIgcj0iMzIiIHN0cm9rZS1kYXNoYXJyYXk9IjE1MC43OTY0NDczNzIzMTAwNyA1Mi4yNjU0ODI0NTc0MzY2OSIgdHJhbnNmb3JtPSJyb3RhdGUoMTQ0LjAxIDUwIDUwKSI+PGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIi8+PC9jaXJjbGU+PC9zdmc+'); background-color: rgba(255, 255, 255, 0.7); background-repeat: no-repeat; background-position: center center; z-index: 999; position: absolute; top: 0; left: 0; } } thead { position: sticky; top: 0; background: white; z-index: 100; tr { th { color: $typography-primary; font-size: 16px; font-weight: 500; padding: 20px 18px; text-align: left; @include _1599 { font-size: 15px; padding: 15px; } @include _1399 { font-size: 12px; } } } } tbody { color: $typography-secondary; tr { &.empty-row { border-radius: $border-radius__normal; background-color: $background__sky-blue; td { &:first-child { border-top-left-radius: $border-radius__normal; border-bottom-left-radius: $border-radius__normal; } &:last-child { border-top-right-radius: $border-radius__normal; border-bottom-right-radius: $border-radius__normal; } } } td { font-size: 16px; font-weight: 400; padding: 18px; @include _1599 { font-size: 14px; padding: 14px; } @include _1399 { font-size: 14px; padding: 12px; } &.llar-col-nowrap { white-space: nowrap; } &.llar-app-log-actions { display: flex; justify-content: center; } input, select { &.input_border { @extend .llar_input_border; color: $typography-additional; border: 1px solid $typography-additional; } } select { font-family: inherit; min-width: 150px; margin-right: 25px; background-size: 16px 16px; } .llar-log-country-flag { display: flex; align-items: center; white-space: nowrap; gap: 3px; .hint_tooltip { width: fit-content; top: 33px; &:before { right: 20%; } &-content { font-size: 14px; } } .llar-tooltip { &:before { width: auto !important; } } img { width: 34px; height: auto; border-radius: $border-radius__min * .5; vertical-align: middle; margin-right: 5px; @include _1599 { width: 30px; } @include _1399 { width: 25px; } } } .button { line-height: 1; margin-right: 5px; border-radius: $border-radius__min; &:last-child { margin-right: 0; } .dashicons { vertical-align: middle; } &.llar-app-log-action-btn { min-width: 35px; text-align: center; display: inline-block; line-height: 20px; cursor: pointer; i { vertical-align: middle; } &:hover { i { color: #3c8dbc; } } } } } &:nth-child(odd) { @extend .empty-row; } } } .table-inline-preloader { text-align: center; &.hidden { display: none; } tr { td { padding: 5px; .load-more-button { a { padding-bottom: 1px; text-decoration: unset; border-bottom: 1px dashed; } } .preloader-row { display: none; align-items: center; .preloader-icon { background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46YXV0bztiYWNrZ3JvdW5kOjAgMCIgd2lkdGg9IjY0IiBoZWlnaHQ9IjY0IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiIGRpc3BsYXk9ImJsb2NrIj48Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiBmaWxsPSJub25lIiBzdHJva2U9IiNlM2UzZTMiIHN0cm9rZS13aWR0aD0iNSIgcj0iMzIiIHN0cm9rZS1kYXNoYXJyYXk9IjE1MC43OTY0NDczNzIzMTAwNyA1Mi4yNjU0ODI0NTc0MzY2OSIgdHJhbnNmb3JtPSJyb3RhdGUoMTQ0LjAxIDUwIDUwKSI+PGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIi8+PC9jaXJjbGU+PC9zdmc+'); background-size: 100%; background-repeat: no-repeat; width: 30px; height: 30px; display: inline-block; } .preloader-text { color: #999; } } } } &.loading { //display: table-footer-group; tr { td { .load-more-button { display: none; } .preloader-row { display: inline-flex; } } } } } } @extend .llar-table-app-login; } &.limit-login-app-dashboard { .llar-preloader-wrap { position: relative; &.loading { &:before { content: ""; display: block; width: 100%; height: 100%; background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46YXV0bztiYWNrZ3JvdW5kOjAgMCIgd2lkdGg9IjY0IiBoZWlnaHQ9IjY0IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiIGRpc3BsYXk9ImJsb2NrIj48Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiBmaWxsPSJub25lIiBzdHJva2U9IiNlM2UzZTMiIHN0cm9rZS13aWR0aD0iNSIgcj0iMzIiIHN0cm9rZS1kYXNoYXJyYXk9IjE1MC43OTY0NDczNzIzMTAwNyA1Mi4yNjU0ODI0NTc0MzY2OSIgdHJhbnNmb3JtPSJyb3RhdGUoMTQ0LjAxIDUwIDUwKSI+PGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIi8+PC9jaXJjbGU+PC9zdmc+'); background-color: rgba(255, 255, 255, 0.7); background-repeat: no-repeat; background-position: center center; z-index: 999; position: absolute; top: 0; left: 0; } } } .llar-app-log-pagination { > a { font-size: 16px; line-height: 1.625; } .spinner { float: none; } } .llar-app-acl-rules { display: flex; justify-content: space-between; flex-wrap: wrap; column-gap: 15px; .app-rules-col { flex: 1 0 49%; min-width: 590px; .help-link { color: $primary-colors__turquoise; font-size: 16px; padding: 10px; } .llar-form-table { thead { td { font-size: 16px; @include _1599 { font-size: 15px; } @include _1399 { font-size: 14px; } } .llar-app-acl-action-col { text-align: center; } } tbody { td { font-size: 16px; padding-right: 5px; @include _1599 { font-size: 15px; } @include _1399 { font-size: 14px; } input { min-width: 195px; } select { min-width: 200px; margin-right: 0; } .button { min-width: 20px; margin-right: 20px; border-radius: $border-radius__min; } } [class^="llar-app-rule"] { margin-top: 10px; border-radius: $border-radius__normal; td { padding-left: 45px; &:first-child { border-top-left-radius: $border-radius__normal; border-bottom-left-radius: $border-radius__normal; } &:last-child { border-top-right-radius: $border-radius__normal; border-bottom-right-radius: $border-radius__normal; } } } .llar-app-acl-action-col { padding: 10px 25px 10px 15px; text-align: center; .llar-app-acl-add-rule { min-width: 100%; } } .llar-app-rule-pass { background-color: #cffbe8; } .llar-app-rule-allow { background-color: $primary-colors__turquoise_back; } .llar-app-rule-deny { background-color: $state-color__red_back; } .llar-app-acl-remove { color: $state-color__error; border-color: $state-color__error; background-color: $state-color__red_back; } } .origin { float: right; opacity: 0.5; } } } } .llar-block-country-section { padding: 30px; background-color: white; border-radius: $border-radius__normal; box-shadow: 4px 4px 18px 0 $box-shadow__light-transparent-gray; .llar-block-country-mode { font-size: 16px; color: $typography-secondary; display: inline-block; vertical-align: middle; select { font-family: inherit; min-width: 150px; margin-right: 25px; background: $background-body url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%234ACAD8FF'%3e%3cpath d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e") no-repeat right 5px top 55%; background-size: 16px 16px; &.input_border { @extend .llar_input_border; } } } .llar-toggle-countries-list { font-size: 16px; color: $primary-colors__turquoise; text-decoration: none; vertical-align: middle; border-bottom: 1px solid currentColor; } .llar-block-country-list { font-size: 16px; color: $typography-primary; display: flex; flex-wrap: wrap; max-height: 400px; overflow-y: auto; &:first-child { margin-top: 0; } .llar-country { flex: 0 0 10%; label { padding-bottom: 10px; display: inline-block; } } &.llar-all-countries-selected { display: inline; margin-left: 20px; vertical-align: middle; overflow: hidden; .llar-country { margin-bottom: 0; display: inline-block; margin-right: 20px; padding-right: 20px; border-right: 1px solid $border-element__ghostly-white; label { color: $typography-primary; padding-bottom: 0; white-space: nowrap; } input[type="checkbox"] { @extend .llar_input_checkbox; } &:last-child { border-right: unset; } } } &.llar-all-countries-list { font-size: 14px; display: none; margin: 10px 0; &.visible { display: flex; border-top: 1px solid #dddada; padding-top: 10px; } } } } } } .llar-blur-block { position: absolute; top: 0; bottom: 0; left: 0; right: 0; backdrop-filter: blur(1.5px); background-color: $typography-additional__light-two; &-text { position: absolute; top: 45%; left: 50%; max-width: 46rem; width: 80%; font-size: 18px; line-height: 1.3; color: $typography-secondary; text-align: center; padding: 1.5rem 2rem; background-color: $secondary-colors-light-blue; border-radius: $border-radius; border: 1px solid $primary-colors__turquoise; transform: translate(-50%, -50%); @include _1599 { top: 40%; font-size: 16px; } @include _1399 { top: 45%; font-size: 14px; } img { max-width: 5rem; @include _1599 { max-width: 4rem; } } .title { margin-top: 1rem; font-size: 26px; font-weight: 500; @include _1599 { margin-top: .75rem; font-size: 24px; } @include _1399 { margin-top: .5rem; } } .description { margin-top: 1rem; @include _1599 { margin-top: .75rem; } @include _1399 { margin-top: .5rem; } } .footer { border-top: 1px solid $primary-colors__turquoise; padding-top: .75rem; margin-top: 1rem; font-weight: 500; @include _1599 { margin-top: .75rem; } @include _1399 { padding-top: .5rem; margin-top: .5rem; } } } &-cell { filter: blur(7px); } } .llar-table-app-login, .llar-table-no_app-login { position: relative; border-collapse: separate; border-spacing: 0 3px; &.llar-preloader { &:before { content: ""; display: block; width: 100%; height: 100%; background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46YXV0bztiYWNrZ3JvdW5kOjAgMCIgd2lkdGg9IjY0IiBoZWlnaHQ9IjY0IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiIGRpc3BsYXk9ImJsb2NrIj48Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiBmaWxsPSJub25lIiBzdHJva2U9IiNlM2UzZTMiIHN0cm9rZS13aWR0aD0iNSIgcj0iMzIiIHN0cm9rZS1kYXNoYXJyYXk9IjE1MC43OTY0NDczNzIzMTAwNyA1Mi4yNjU0ODI0NTc0MzY2OSIgdHJhbnNmb3JtPSJyb3RhdGUoMTQ0LjAxIDUwIDUwKSI+PGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIi8+PC9jaXJjbGU+PC9zdmc+'); background-color: rgba(255, 255, 255, 0.7); background-repeat: no-repeat; background-position: center center; z-index: 999; position: absolute; top: 0; left: 0; } } tr { th, td { font-size: 16px; font-weight: 400; width: fit-content; padding: 20px 2px 20px 14px; @include _1599 { font-size: 14px; padding: 15px 2px 15px 12px; } @include _1399 { padding: 12px 2px 12px 14px; } @include _767 { display: table-cell; width: fit-content; font-size: 12px; } } } thead { tr { th { color: $typography-primary; font-weight: 500; text-align: center; } } } tbody.login-attempts { tr { border-radius: $border-radius__normal; background-color: unset; &:nth-child(4n+1) { @extend .empty-row; background-color: $background__sky-blue; } &:nth-child(4n+3) { background-color: unset; } &:nth-child(4n+2), &:nth-child(4n+4) { background-color: $typography-additional__light-two; } td { color: $typography-secondary; &:first-child { border-top-left-radius: $border-radius__normal; border-bottom-left-radius: $border-radius__normal; } &:last-child { border-top-right-radius: $border-radius__normal; border-bottom-right-radius: $border-radius__normal; } &.llar-col-nowrap { white-space: nowrap; } select { font-family: inherit; min-width: 150px; margin-right: 25px; background-size: 16px 16px; } .hint_tooltip { box-sizing: content-box; right: 0; top: 30px; &:before { right: 25px; } &-content { font-size: 14px; color: white; @include _767 { font-size: 12px; } ul { padding-left: 16px; padding-right: 10px; li { font-size: inherit; color: inherit; margin-bottom: 0; padding-left: 10px; min-width: 120px; &::before { content: "✧"; color: white; font-size: 12px; margin-left: -15px; padding-right: 3px; } } } } &-parent { display: inline-block; position: relative; span { color: $primary-colors__orange; font-weight: 500; } .dashicons { color: $typography-additional; @include _1599 { line-height: unset; font-size: 14px; } @include _767 { font-size: 12px; } } } } .llar-log-country-flag { display: flex; align-items: center; white-space: nowrap; gap: 3px; .llar-tooltip { &:before { width: auto !important; } } .hint_tooltip { width: fit-content; right: 0; top: 35px; } img { width: 34px; height: auto; border-radius: $border-radius__min * .5; vertical-align: middle; margin-right: 4px; @include _1599 { width: 30px; } @include _1399 { width: 25px; } } } .button { line-height: 1; margin-right: 5px; border-radius: $border-radius__min; &:last-child { margin-right: 0; } .dashicons { vertical-align: middle; } &.llar-add-login-open { display: inline-block; width: 30px; min-width: unset; min-height: 30px; padding: 0; text-align: center; line-height: 20px; cursor: pointer; color: $typography-additional; border-color: currentColor; @include _767 { width: 25px; min-height: 25px; .dashicons { font-size: 14px; height: 16px; } } &:focus { outline: unset; box-shadow: unset; } &:hover { color: $primary-colors__turquoise; } } } &.button-open { padding: 0 2px; } &.cell-login { max-width: 9ch; a { display: inline-block; max-width: 9ch; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } } } .cell-id { display: inline-block; .id { font-size: 15px; max-width: 14ch; display: inline-block; vertical-align: middle; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; @include _1599 { font-size: 90% } } .hint_tooltip { top: 30px !important; } } .cell-role { .hint_tooltip { right: -25px; } } &.hidden-row { display: none; &.table-row-open { display: table-row; td { font-size: 16px; @include _1399 { font-size: 14px; } span { font-weight: 600; } a { white-space: nowrap; } .open_street_map { border: unset; } } } } } } .table-inline-preloader { text-align: center; &.hidden { display: none; } tr { td { padding: 5px; .load-more-button { a { padding-bottom: 1px; text-decoration: unset; border-bottom: 1px dashed; } } .preloader-row { display: none; align-items: center; .preloader-icon { background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46YXV0bztiYWNrZ3JvdW5kOjAgMCIgd2lkdGg9IjY0IiBoZWlnaHQ9IjY0IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiIGRpc3BsYXk9ImJsb2NrIj48Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiBmaWxsPSJub25lIiBzdHJva2U9IiNlM2UzZTMiIHN0cm9rZS13aWR0aD0iNSIgcj0iMzIiIHN0cm9rZS1kYXNoYXJyYXk9IjE1MC43OTY0NDczNzIzMTAwNyA1Mi4yNjU0ODI0NTc0MzY2OSIgdHJhbnNmb3JtPSJyb3RhdGUoMTQ0LjAxIDUwIDUwKSI+PGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIi8+PC9jaXJjbGU+PC9zdmc+'); background-size: 100%; background-repeat: no-repeat; width: 30px; height: 30px; display: inline-block; } .preloader-text { color: #999; } } } } &.loading { tr { td { .load-more-button { display: none; } .preloader-row { display: inline-flex; } } } } } } .llar-table-no_app-login { } .llar-notice-review, .llar-notice-notify { display: flex; padding: 15px 20px 0 !important; border-left: 4px solid #333 !important; .llar-review-image { img { margin-top: 10px; margin-bottom: 20px; } span { font-size: 80px; color: orange; width: 80px; height: auto; margin-bottom: 20px; } } .llar-review-info { flex: 1; margin-left: 30px; .llar-buttons { display: flex; align-items: center; li { margin-right: 10px; .dashicons { margin-right: 5px; } } } } } .custom-app-tab { position: relative; .spinner { float: none; } .llar-app-ajax-msg { font-size: 13px; margin-top: 5px; display: block; &.error { color: red; } &.success { color: green; } } .llar-delete-app { color: #dc3232; position: absolute; bottom: 15px; right: 15px; &:hover { opacity: 0.8; } } .llar-why-use-premium-text { margin-top: 20px; .title { font-weight: bold; font-size: 16px; color: #4d4d4d; } } } #llar-progress-bar { position: fixed; top: 0; height: 6px; left: 0; width: 100%; z-index: 999999; background-color: #eee; span { height: 100%; position: absolute; display: block; width: 0; background-color: #00b357; transition: width 0.4s; } } // new design .header_massage { margin-right: 20px; #llar-header-upgrade-mc-message, #llar-header-upgrade-premium-message { position: relative; margin: 20px auto; width: fit-content; color: $primary-colors__orange_light; font-weight: $text-font-weight-bold; padding: 14px 32px; text-align: center; border-radius: $border-radius__max; border: 1px solid $border-element__red_sand; background-color: $background-element__almond; box-shadow: 0 4px 18px 0 $box-shadow__semi_transparent_gray; @include _991 { padding: 5px 14px; font-size: 11px; } @include _767 { margin-left: 16px; margin-right: 16px; } p { font-size: 16px; margin: 0; .dashicons { width: 32px; height: 32px; font-size: 32px; color: inherit; vertical-align: middle; margin-right: 5px; @include _991 { width: 16px; height: 16px; font-size: 16px; } } } &.exhausted { color: $state-color__error; font-weight: 400; margin-left: auto; margin-right: auto; padding: 12px 25px; background-color: $state-color__error_back; border: 1px solid currentColor; } .close { position: absolute; top: -6px; right: -9px; cursor: pointer; .dashicons { width: 16px; height: 24px; font-size: 24px; @include _991 { width: 16px; height: 18px; font-size: 18px; } } } } } #llar-header-login-custom-message { position: relative; margin: 20px auto; width: fit-content; color: $primary-colors__orange_light; font-weight: $text-font-weight-bold; padding: 14px 32px; text-align: center; border-radius: $border-radius__max; border: 1px solid $border-element__red_sand; background-color: $background-element__almond; box-shadow: 0 4px 18px 0 $box-shadow__semi_transparent_gray; width: 900px; font-size: 16px; border-radius: $border-radius; @include _1799 { margin-right: auto; } @include _1199 { width: 795px; } @include _991 { width: 710px; font-size: 95% } @include _767 { font-size: 90%; width: 100%; margin-right: auto; margin-left: auto; } @include _575 { width: 400px; } .message-flex { display: flex; .col-first { img { width: 150px; @include _1199 { width: 130px; } @include _767 { width: 100px; } } } .col-second { width: 30%; line-height: 1.7; color: $typography-primary; margin: 16px 25px; text-align: left; @include _1199 { margin: 16px 10px; } } .col-third { width: 45%; margin: 16px 25px; font-size: 87.5%; @include _1199 { margin: 16px 10px; } .row-first { color: $typography-secondary; font-weight: 400; } .row-second { position: relative; margin: 5px 10px; color: $typography-additional; hr { background-color: $primary-colors__orange-back; display: inline-block; width: calc(100% / 2 - 50px); border: 0; height: 2px; vertical-align: middle; } span { display: inline-flex; width: 50px; justify-content: center; } } .row-third { font-weight: 500; margin: 10px; padding: 5px 10px; background-color: $primary-colors__orange-back; border-radius: 10px; } } } } .settings_page_limit-login-attempts { .update-nag { display: none; } } #llar-welcome-page { padding: 50px 0; img { max-width: 100%; height: auto; } .llar-welcome-page-container { width: 100%; max-width: 760px; margin: 0 auto 30px; background-color: #fff; border-radius: 4px; box-shadow: 0 0 4px rgba(#000, 0.1); &.llar-premium { border-top: 5px solid #50c1cd; } .llar-welcome-page-section { padding: 20px; text-align: center; .llar-logo { text-align: center; margin-top: 20px; margin-bottom: 30px; } h2 { font-size: 2.4em; line-height: 1.4; } h3 { font-size: 1.5em; line-height: 1.4; } p { font-size: 17px; color: #444; } } .llar-welcome-page-video-wrap { img { width: 100%; height: auto; cursor: pointer; } } } .llar-welcome-page-features { display: flex; flex-wrap: wrap; justify-content: space-between; padding: 0 15px; counter-reset: cnt1; .llar-feature-item { flex: 0 0 24%; text-align: center; margin-bottom: 40px; position: relative; padding-bottom: 60px; &:before { content: counter(cnt1); counter-increment: cnt1; position: absolute; left: 50%; transform: translatex(-50%); bottom: 0; font-size: 1em; font-weight: 600; width: 40px; height: 40px; line-height: 40px; text-align: center; border-radius: 50%; background-color: #ecedef; color: #979aaa; } &:after { position: absolute; content: ''; left: -39%; width: 69%; height: 1px; bottom: 1.4em; background-color: #ecedef; } &:nth-child(4n+1) { &:after { display: none; } } .llar-feature-image { margin-bottom: 15px; } .llar-feature-info { .llar-feature-title { font-weight: bold; margin-bottom: 15px; } .llar-feature-desc { color: #979aaa; } } } @media (max-width: 768px) { display: block; } } .llar-why-recommend { text-align: left; font-size: 17px; ul { li { span { margin-right: 5px; width: auto; height: auto; font-size: 25px; vertical-align: middle; color: green; } } } } .llar-welcome-list { font-size: 17px; text-align: left; line-height: 1.4; list-style: none; li { span { margin-right: 10px; width: auto; height: auto; font-size: 22px; vertical-align: top; color: orange; } } } .llar-upgrade-btn-wrap { padding: 20px; a { display: inline-block; background-color: #e27800; color: #fff; font-size: 22px; padding: 20px; text-decoration: none; font-weight: 600; &:hover { background-color: darken(#e27800, 10%); } } } .llar-upgrade-questions { font-size: 17px; } } .dashboard_page_llar-welcome, .toplevel_page_limit-login-attempts { .update-nag, .notice:not(.llar-notice-review) { margin-top: 15px; display: none; p { margin-left: 10px; } } .video-container { position: relative; padding-bottom: 56.1%; height: 0; overflow: hidden; iframe { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } } } #wp-admin-bar-llar-root { #wp-admin-bar-llar-root-premium { a { color: orange; } } } #toplevel_page_limit-login-attempts { .wp-menu-image.svg { background-size: 25px auto !important; margin-top: 7px; } .llar-submenu-premium-item { a { color: orange; } } } #menu-settings { li { position: relative; .llar-alert-icon { position: absolute; right: 5px; top: 7px; min-width: 15px; line-height: 15px; height: 15px; } } } #wpadminbar { li { .llar-alert-icon { .plugin-count { vertical-align: middle; margin-top: -3px; } } } } .llar-auto-update-notice { display: block !important; } .llar-attempts-chart-legend { > div { margin-right: 10px; color: #60666d; display: inline-block; &:last-child { margin-right: 0; } &:before { content: ""; display: inline-block; width: 37px; height: 9px; border: 3px solid; margin-right: 5px; vertical-align: middle; } &.legend-1 { &:before { border-color: rgba(54, 162, 235, 1); background-color: rgba(54, 162, 235, 0.3) } } &.legend-2 { &:before { border-color: rgba(174, 174, 174, 0.7); background-color: rgba(174, 174, 174, 0.2) } .llar-tooltip { &:before { left: auto; right: 0; } } } } } @import "dashboard-page"; @import "admin-dashboard-widgets"; @import "onboarding-popup"; @import "premium-tab"; @import "help-page"; @import "micro-cloud-modal"; plugins/limit-login-attempts-reloaded/assets/sass/login-page-styles.scss000064400000000463147176754540022627 0ustar00#llar-login-page-gdpr { position: fixed; padding: 15px; background-color: rgba(#000,0.9); width: 100%; bottom: 0; left: 0; right: 0; color: #fff; display: block; text-align: center; box-sizing: border-box; .llar-login-page-gdpr__message { font-size: 14px; color: #fff; } }plugins/limit-login-attempts-reloaded/assets/sass/_micro-cloud-modal.scss000064400000014577147176754540022745 0ustar00.toplevel_page_limit-login-attempts { font-family: $font-primary, $font-secondary; .jconfirm { .jconfirm-box { padding: 0 !important; background-color: transparent; .jconfirm-content-pane { display: block; margin-bottom: 0; border-radius: $border-radius__normal; scrollbar-width: none; &::-webkit-scrollbar { width: 0px; } } .jconfirm-closeIcon { top: 17px !important; } .jconfirm-buttons { padding-right: 15px; } .button { @extend .llar_button; } .preloader-wrapper { display: none; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background-color: rgba(white, 0.3); align-items: center; justify-content: center; .spinner { display: block; position: relative; float: none; visibility: hidden; top: 50%; transform: translateY(-50%); margin: 0 auto; } } .llar-disabled { .preloader-wrapper { display: block; } } .input_border { @extend .llar_input_border; font-size: 16px; min-width: 420px; padding: 15px 30px; } .popup_error_content { &__content { padding: 15px; border-radius: $border-radius__normal; background-color: $background-body; } &__body { font-size: 16px; font-weight: 400; line-height: 1.5; color: $typography-primary; padding: 0 15px; .card { padding: 0; border: unset; box-shadow: unset; &-header { color: $state-color__error; } &-body { margin-top: 10px; } } } } .micro_cloud_modal { &__content { padding: 15px; border-radius: $border-radius__normal; background: url("./images/micro-cloud-bg.webp") no-repeat center top; background-size: 100%; background-color: $background-body; } &__body { font-size: 18px; font-weight: 400; line-height: 1.5; color: $typography-primary; padding: 55px 60px; &_header { display: flex; flex-direction: row; .left_side { width: 60%; } .right_side { width: 40%; img { display: block; width: 306px; margin: 0 auto; } } .title { font-size: 44px; font-weight: 500; margin-right: 70px; text-align: left; } .description { margin-top: 10px; color: $typography-secondary; &-add { font-size: 14px; font-weight: 500; color: $typography-secondary; margin-top: 10px; padding: 10px 20px; background-color: $secondary-colors-light-blue; border-radius: $border-radius__normal; } } } .card { min-width: 100%; text-align: center; margin-top: 15px; padding: 0; border: unset; background-color: $background__sky-blue; border-radius: $border-radius; box-shadow: 2px 2px 9px 0 $box-shadow__light-transparent-gray; &-header { color: $primary-colors__orange; padding: 15px 63px; margin-bottom: 0; background-color: $primary-colors__orange-back; border-bottom: 1px solid $primary-colors__orange; border-top-left-radius: $border-radius__normal; border-top-right-radius: $border-radius__normal; .title { font-size: 20px; font-weight: 500; text-align: left; img { width: 22px; vertical-align: middle; margin-right: 15px; } } } &-body { padding: 10px 63px; text-align: left; .description { font-size: 16px; color: $typography-secondary; margin-top: 20px; } .field { &-email { margin-top: 20px; } &-checkbox { color: $typography-secondary; font-size: 16px; margin-top: 20px; } &-desc { color: $typography-secondary; font-size: 16px; margin-top: 20px; } &-image { width: 240px; margin: 0 auto; } } .button_block-single { text-align: left; margin-bottom: 30px; .description_add { font-size: 14px; color: $typography-additional; margin-top: 15px; } .llar-disabled { } } &.step-second { text-align: center; .button_block-single { text-align: center; } } .llar-upgrade-subscribe_notification { font-size: 18px; margin: 5px auto 0; .field-image img { width: 220px; margin: 0 auto; } &__error { color: $state-color__error; padding: 9px 70px; width: fit-content; border-radius: $border-radius__min; background-color: $state-color__error_back; } img { display: inline-block; width: 12.5px; margin-right: 2px; } } } } } } } } }plugins/limit-login-attempts-reloaded/assets/sass/_mixins.scss000064400000003527147176754540020736 0ustar00@mixin _1799 { @media screen and (max-width: 1799.5px) { @content; } } @mixin _1599 { @media screen and (max-width: 1599.5px) { @content; } } @mixin _1399 { @media screen and (max-width: 1399.5px) { @content; } } @mixin _1199 { @media screen and (max-width: 1199.5px) { @content; } } @mixin _991 { @media screen and (max-width: 991.5px) { @content; } } @mixin _767 { @media screen and (max-width: 767.5px) { @content; } } @mixin _575 { @media screen and (max-width: 575.5px) { @content; } } @mixin _600 { @media screen and (max-width: 600px) { @content; } } @mixin _428 { @media screen and (max-width: 428px) { @content; } } @mixin _414 { @media screen and (max-width: 414px) { @content; } } @mixin _390 { @media screen and (max-width: 390px) { @content; } } @mixin _375 { @media screen and (max-width: 375px) { @content; } } @mixin _360 { @media screen and (max-width: 360px) { @content; } } @mixin _320 { @media screen and (max-width: 320px) { @content; } } @mixin _320min { @media screen and (min-width: 320px) { @content; } } @mixin _360min { @media screen and (min-width: 360px) { @content; } } @mixin _375min { @media screen and (min-width: 375px) { @content; } } @mixin _414min { @media screen and (min-width: 414px) { @content; } } @mixin _428min { @media screen and (min-width: 428px) { @content; } } @mixin _576min { @media screen and (min-width: 576px) { @content; } } @mixin _768min { @media screen and (min-width: 768px) { @content; } } @mixin _992min { @media screen and (min-width: 992px) { @content; } } @mixin _1200min { @media screen and (min-width: 1200px) { @content; } } @mixin _1400min { @media screen and (min-width: 1400px) { @content; } }plugins/limit-login-attempts-reloaded/assets/sass/_onboarding-popup.scss000064400000024547147176754540022717 0ustar00.toplevel_page_limit-login-attempts { font-family: $font-primary, $font-secondary; .jconfirm { .jconfirm-box { padding: 0 !important; background-color: transparent; .jconfirm-content-pane { display: block; margin-bottom: 0; border-radius: $border-radius__normal; overflow-y: auto; scrollbar-width: none; } .jconfirm-closeIcon { top: 17px !important; } .jconfirm-buttons { padding-right: 15px; } .button { @extend .llar_button; } .button_block { margin-top: 24px; display: flex; flex-wrap: wrap; justify-content: center; column-gap: 16px; .button { font-size: 18px; margin-top: 20px; padding: 11px 60px; width: 70%; } &-horizon { display: flex; justify-content: center; margin-top: 20px; gap: 10px; .button { font-size: 18px; padding: 11px 60px; } } &-single { margin-top: 20px; .button { font-size: 18px; padding: 11px 60px; width: fit-content; } } } .llar-onboarding-popup__content { min-height: 930px; padding: 15px; background: url("./images/onboarding-bg-big.webp") center top; background-size: 100%; border-radius: $border-radius__normal; .logo { width: 90px; margin: 100px auto 50px; img { background: $background-body__transparent; border-radius: $border-radius__min; padding: 20px; } } .llar-onboarding__line { position: relative; height: 2px; width: 50%; margin: 10px auto 60px; background-color: $primary-colors__steel_blue; .point__block { position: absolute; display: flex; flex-direction: column; align-items: center; justify-content: flex-start; left: 0; top: -30px; width: 60px; height: 60px; border-radius: 50%; background-color: transparent; .point { position: absolute; top: 22px; width: 18px; height: 18px; border-radius: 50%; background-color: $primary-colors__steel_blue; } .description { position: absolute; top: 60px; font-size: 16px; color: $typography-secondary; width: max-content; } &.active { position: absolute; background-color: $primary-colors__turquoise_semi_back; .description { color: $typography-primary; } } &.visited { .point { background-color: $primary-colors__turquoise; } } &[data-step="1"] { left: 0; transform: translateX(-50%); } &[data-step="2"] { left: 100% / 3 * 1; transform: translateX(-50%); } &[data-step="3"] { left: 100% / 3 * 2; transform: translateX(-50%); } &[data-step="4"] { left: 100%; transform: translateX(-50%); } } } .title { font-size: 32px; font-weight: 500; color: $primary-colors__orange; text-align: center; padding-top: 40px; img { width: 36px; vertical-align: text-top; } } .preloader-wrapper { display: none; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background-color: rgba(white, 0.3); align-items: center; justify-content: center; .spinner { display: block; position: relative; float: none; visibility: hidden; top: 50%; transform: translateY(-50%); margin: 0 auto; } } .llar-disabled { .preloader-wrapper { display: block; } } .card { min-width: 768px; text-align: center; margin-top: 37px; padding: 23px 63px 60px; border: unset; background-color: $background__sky-blue; border-radius: $border-radius; box-shadow: 2px 2px 9px 0 $box-shadow__light-transparent-gray; .explanations { font-size: 14px; color: $typography-secondary; margin-top: 15px; padding: 0 35px; } .llar-upgrade-subscribe_notification, .llar-upgrade-subscribe_notification__error { display: none; color: $typography-secondary; font-size: 20px; line-height: 1.5; margin: 15px auto 0; padding: 9px 70px; width: fit-content; border-radius: $border-radius__min; background-color: white; img { display: inline-block; width: 12.5px; margin-right: 2px; } } .llar-upgrade-subscribe_notification__error { color: $state-color__error; background-color: $state-color__error_back; } } .field { &-wrap { margin-top: 23px; } &-title { color: $typography-primary; font-size: 20px; font-weight: 500; &-add { color: $typography-secondary; font-size: 18px; font-weight: 400; } } &-key, &-email { display: inline-block; line-height: 25px; margin-top: 11px; width: 100%; .input_border { @extend .llar_input_border; font-size: 16px; min-width: 420px; padding: 15px 30px; } .button { position: relative; display: inline-block; font-size: 18px; padding: 14px 30px 15px; margin-left: -25px; .dashicons { margin-left: 15px; line-height: inherit; } } } &-error { display: none; color: red; margin-top: 15px; } &-email { .input_border { min-width: 100%; } } &-desc { color: $typography-secondary; font-size: 16px; line-height: 1.5; text-align: center; margin-top: 22px; padding: 0 25px; &-add { @extend .field-desc; font-size: 18px; color: $typography-primary; } &-additional { color: $typography-additional; font-size: 16px; line-height: 1.5; text-align: left; margin-top: 12px; } } &-list { @extend .llar_list; line-height: 1.5; .item { font-size: 18px; color: $typography-secondary; &:before { color: $color-marker; } } } &-video { position: relative; -webkit-box-flex: 1; -ms-flex-positive: 1; flex-grow: 1; margin-top: 24px; border-radius: $border-radius__normal; .video-container { position: relative; } #video-poster, #video-frame { position: absolute; top: 0; left: 0; width: 100%; height: 100%; border-radius: $border-radius; } #video-poster { cursor: pointer; z-index: 1; } //.video__iframe { // display: none; // position: relative; // padding-bottom: 56.25%; // height: 0; // overflow: hidden; // border-radius: $border-radius__normal; // // &.play { // display: block; // } //} } &-checkbox { display: inline-block; color: $typography-secondary; font-size: 14px; margin-top: 10px; margin-left: 25px; text-align: left; input { margin-top: 15px; margin-left: -25px; vertical-align: top; } span { display: inline-block; margin-left: 15px; margin-top: 10px; } } &-image { width: 240px; margin: 0 auto; } } .security-alerts-options { display: flex; .info { font-size: 16px; line-height: 22px; } .buttons { display: flex; padding-left: 15px; align-items: center; span { text-transform: uppercase; cursor: pointer; width: 45px; text-align: center; vertical-align: middle; display: block; height: 34px; line-height: 34px; &.llar-act { background-color: #0A75B5; color: #fff; } &:first-child { border: 1px solid #ccc; border-radius: 4px 0 0 4px; } &:last-child { border: 1px solid #ccc; border-radius: 0 4px 4px 0; border-left: 0; } } } } } } } input[type="checkbox"] { @extend .llar_input_checkbox; } }plugins/limit-login-attempts-reloaded/assets/sass/_premium-tab.scss000064400000017100147176754540021641 0ustar00#llar-setting-page-premium { font-family: inherit; line-height: 1.5; .llar-premium-page-promo { padding: 43px 80px 60px; margin-bottom: 20px; border-radius: $border-radius; background-color: $background-body; box-shadow: 3px 5px 23px 0 $box-shadow__light-transparent-gray; .section-1 { display: flex; align-items: flex-end; .text { .title { font-size: 31px; font-weight: 500; color: $primary-colors__orange; line-height: 1.4; margin-bottom: 5px; } .links { font-size: 12px; list-style: none; margin: 0; li { display: inline-block; margin-right: 20px; a { position: relative; vertical-align: middle; &.gdpr-information-link { &:after { position: relative; font-size: inherit; line-height: inherit; right: 0; vertical-align: middle; color: $typography-additional; } } } } } } .action { margin-left: auto; text-align: center; a.button { font-size: 16px; padding: 7px 35px; min-width: 250px; text-align: center; } .label { font-size: 14px; color: $typography-additional; margin-top: 9px; .dashicons { font-size: 18px; } } } &__internal { font-size: 16px; text-align: center; margin-top: 40px; color: $typography-secondary; border-radius: $border-radius; background-color: $background__sky-blue; padding: 27px 0; .llar_turquoise { display: block; } } } } .text-block-1 { margin-bottom: 20px; p { font-size: 15px; } } .llar-premium-plans-table { margin-top: 3.75rem; .content { border-radius: $border-radius__normal; background-color: $background__sky-blue; padding-right: 15px; padding-bottom: 15px; overflow-x: auto; .table_background { font-size: 16px; font-weight: 400; line-height: 1.4; width: 100%; border-collapse: inherit; border-spacing: 0; border-radius: $border-radius__normal; box-shadow: 3px 5px 23px 0 $box-shadow__light-transparent-gray; @include _1599 { font-size: 14px; } thead { tr { td { font-size: 20px; font-weight: 500; text-align: left; color: $primary-colors__turquoise; //width: 15%; min-width: 150px; padding: 16px 29px; border-top-left-radius: $border-radius__normal; border-top-right-radius: $border-radius__normal; border: 1px solid $primary-colors__turquoise_back; background-color: $primary-colors__turquoise_back; &:first-child { width: 25%; min-width: 300px; } @include _1799 { min-width: 100px; } @include _1599 { font-size: 18px; font-weight: 400; } } } } tbody { text-align: left; background-color: white; border-bottom-right-radius: $border-radius__normal; border-bottom-left-radius: $border-radius__normal; tr { position: relative; &:nth-child(even) { &::after { content: ''; position: absolute; top: 5px; bottom: 5px; left: 0; right: 0; border-radius: $border-radius__normal; background-color: $background-body; } } &:last-child { td { &:first-child { border-bottom-left-radius: $border-radius__normal; } &:last-child { border-bottom-right-radius: $border-radius__normal; } } } td { position: relative; padding: 16px 29px; border-right: 1px solid $background__sky-blue; border-bottom: 1px solid $background__sky-blue; z-index: 1; @include _1799 { padding: 12px 10px; } @include _991 { font-size: 14px; } &:last-child { border-right: unset; } .icon-lock { color: $typography-primary; width: 24px; height: 24px; } button { margin: 40px auto; padding-top: 12px; padding-bottom: 12px; width: 100%; @include _1799 { width: auto; } @include _1599 { min-width: 120px; } } .category { font-weight: 500; } .description { display: block; margin-top: 5px; color: $typography-secondary; a { color: $secondary-colors__blue; text-decoration: none; border-bottom: 1px solid currentColor; } } &.inner_fields { text-align: center; } } } } } } } } .llar-premium-plans-table { table { //width: 100%; //background-color: #fff; //table-layout: fixed; //position: relative; //border-collapse: collapse; tr { th { //text-align: center; //padding: 25px 15px; img { //width: 50px; //height: auto; //margin-bottom: 15px; } .plan-name { //font-weight: normal; //font-size: 18px; } } td { //padding: 15px; //text-align: center; .dashicons-yes { //color: #00be00; //font-size: 28px; //display: inline-block; //line-height: 1; //height: auto; //width: auto; //vertical-align: middle; } .dashicons-no-alt { //color: #e80000; //font-size: 28px; //display: inline-block; //line-height: 1; //height: auto; //width: auto; //vertical-align: middle; } .feature-value { //color: #a9a9a9; //line-height: 1.1; } } th, td { //border-left: 1px solid $border-element__ghostly-white; //border-right: 1px solid $border-element__ghostly-white; &:last-child { //border-right: 0; } &.feature { //text-align: center; //width: 30%; .name { //font-size: 16px; //font-weight: 600; } } } &:nth-child(even) { td { //background-color: #f8f8f8; } } &.table-actions { .installed-label { //color: green; } } } } }plugins/limit-login-attempts-reloaded/assets/sass/_settings.scss000064400000023121147176754540021257 0ustar00@import "../css/fonts/stylesheet.css"; $background-body: #FDFDFD; $background-body__transparent: #FDFDFD66; //rgba(253, 253, 253, 0.4); $background__sky-blue: #F6FBFF; $background-element__almond: #FFEFD6; $border-element__red-sand: #EBB35A; $border-element__ghostly-white: #E8E9EC; $primary-colors__orange: #FF7C06; $primary-colors__orange_light: #FF9800; $primary-colors__orange-back: #FF7C0619; //rgba(255, 124, 6, 0.1);; $primary-colors__orange-semi_back: #FF7C067F; //rgba(255, 124, 6, 0.50); $secondary-colors__dark-orange: #F07200; $state-color__error: #EC4652; $state-color__error_back: #EC46521A; //rgba(236, 70, 82, 0.1); $state-color__red_back: #FF969B26; //rgba(255, 150, 155, 0.15); $typography-primary: #2A2F40; $typography-secondary: #666D84; $typography-additional: #A4A8B7; $typography-additional__light: #A4A8B74C; //rgba(164, 168, 183, 0.3); $typography-additional__light-two: #A4A8B714; //rgba(164, 168, 183, 0.08); $primary-colors__steel_blue: #ABBFC1; $primary-colors__turquoise: #4ACAD8; $secondary-colors__blue: #5C8FDC; $secondary-colors-light-blue: #ECFAFB; $primary-colors__turquoise_semi_back: #4ACAD84D; //rgba(74, 202, 216, 0.3); $primary-colors__turquoise_back: #4ACAD819; //rgba(74, 202, 216, 0.1); $primary-colors__aero-blue: #97F6C8; $color-marker: #9762EF; $box-shadow__semi-transparent-gray: #72757B33; // rgba(114, 117, 123, 0.20); $box-shadow__light-transparent-gray: #A2B4BD33; //rgba(162, 180, 189, 0.20); @import "mixins"; $font-primary: CoFo Sans; $font-secondary: arial; $text-font: 16px; @include _1599 { $text-font: 14px; } $text-font-style: normal; $text-font-weight: 400; $text-font-weight-bold: 500; $border-radius: $text-font * 1.25; $border-radius__normal: $text-font; $border-radius__min: $border-radius__normal * .5; $border-radius__max: $border-radius * 2; .llar_hint_tooltip { display: none; position: absolute; background-color: $primary-colors__turquoise; color: white; padding: 12px 20px; width: 180px; border-radius: $border-radius; top: 26px; right: -20px; z-index: 955; &-content { @extend .llar_list; font-size: 12px; white-space: initial; text-align: left; margin-top: 0; margin-bottom: 0; } &::before { content: ""; position: absolute; top: -12px; right: 12%; border-width: 6px; border-style: solid; border-color: transparent transparent $primary-colors__turquoise transparent; } &-parent { position: relative; &:hover .hint_tooltip { display: block; } } } .toplevel_page_limit-login-attempts { * { margin: 0; padding: 0; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } .p-0 { padding: 0!important; } .pt-0_5 { padding-top: $text-font * .5 !important; } .pt-1_5 { padding-top: $text-font * 1.5 !important; } .mt-0_5 { margin-top: $text-font * .5 !important; } .mt-1_5 { margin-top: $text-font * 1.5 !important; } .mx-0_5 { margin-left: $text-font * .5 !important; margin-right: $text-font * .5 !important; } .button_micro_cloud { cursor: pointer; } .hint_tooltip { @extend .llar_hint_tooltip; } .hint_tooltip-content { @extend .llar_hint_tooltip-content; } .hint_tooltip-parent { @extend .llar_hint_tooltip-parent; } } .link__style_unlink, .link__style_color_inherit { text-decoration: none; color: inherit; position: relative; } .link__style_unlink:hover, .link__style_color_inherit:hover { color: inherit; } .link__style_color_inherit { text-decoration: none; border-bottom: 1px solid currentColor; } .no_href_link { cursor: default; } .llar_typography-secondary { color: $typography-secondary; } .llar_orange { color: $primary-colors__orange; &:hover { color: $secondary-colors__dark-orange; } } .llar_turquoise { color: $primary-colors__turquoise; } a.llar_turquoise { text-decoration: none; &:hover { text-decoration: none; color: $primary-colors__turquoise; border-bottom: 1px solid currentColor; } } .llar-label { @extend .link__style_unlink; border-radius: $border-radius__min; background-color: $primary-colors__turquoise_back; padding: .125rem 1.125rem; } .llar_bold { font-weight: bold; } .llar-display-none { display: none!important; } .llar-display-block { display: block!important; } .llar-visibility { visibility: visible!important; } .llar-hidden { visibility: hidden!important; } .mx-auto { margin-left: auto; margin-right: auto; } .llar-disabled { cursor: default !important; pointer-events: none; } .dashicons-secondary { margin-left: 8px; font-size: 170%; line-height: inherit; position: relative; z-index: 1; color: $border-element__ghostly-white; width: 15px; height: 15px; border-radius: 20px; vertical-align: middle; background: $typography-secondary; @include _767 { font-size: 1.4rem; } &:before { position: absolute; top: 50%; left: 50%; font-size: inherit; font-weight: inherit; line-height: inherit; transform: translate(-50%, -50%); } } .llar-auto-update-notice { display: block !important; } .llar_input_border { font-family: inherit; font-size: 16px; line-height: inherit; padding: 6px 8px 6px 16px; color: $primary-colors__turquoise; border-radius: $border-radius__normal; border: 1px solid $primary-colors__turquoise; width: fit-content; @include _1599 { padding: 6px 8px 6px 12px; font-size: 14px; } &:focus { box-shadow: unset; outline: none; } &::placeholder { color:inherit; opacity: 0.5; } } .llar_input_checkbox { background-color: $background-body; border: 1.5px solid $primary-colors__steel_blue; box-sizing: content-box; margin: -0.25rem 0.25rem 0 0; &:checked { background-color: $primary-colors__orange; border: 1.5px solid $primary-colors__orange; &::before { content: "\2714"; font-size: 14px; line-height: 1.1; width: 100%; height: 100%; margin: 0; color: $background-body; } } &:focus { box-shadow: unset; } } ul.llar_list { list-style: none; li { position: relative; list-style: none; font-size: 12px; white-space: initial; &::before { position: absolute; box-sizing: inherit; content: "\2727"; color: $background-body; margin-left: -18px; top: 50%; transform: translateY(-50%); } } } button.llar_button { font-family: inherit; background: $background-body; border: 1px solid $typography-primary; cursor: pointer; white-space: nowrap; vertical-align: baseline; &.menu__item { border-radius: $border-radius * .5; font-size: 16px; line-height: 1.45; padding: 6px 18px; text-align: center; @include _1599 { font-size: 14px; } @include _991 { padding: 6px 15px; } @include _428 { padding: 6px 14px; } } &:focus { outline: none!important; box-shadow: unset!important; } } .llar_button { @extend button; position: relative; min-width: 175px; text-transform: inherit; text-decoration: none; &.button { &__orange { color: white!important; background: $primary-colors__orange!important; border: 1px solid $primary-colors__orange!important; box-shadow: 0 6px 12px 0 $primary-colors__orange-semi_back!important; &:hover { background: $secondary-colors__dark-orange!important; } &:disabled { border: 1px solid $primary-colors__orange-semi_back!important; background: $primary-colors__orange-semi_back!important; cursor: auto; } } &__transparent_orange, &__transparent_grey { color: $primary-colors__orange!important; border: 1px solid currentColor!important; background: transparent!important; &.orange-back { background: $primary-colors__orange-back!important; } &:hover { background: $primary-colors__orange-back!important; border: 1px solid currentColor!important; } &:disabled { background: transparent; cursor: auto; } } &__transparent_grey { color: $typography-additional!important; &.gray-back { background: $typography-additional__light!important; } &:hover { background: $typography-additional__light!important; } } &:focus { outline: none!important; box-shadow: unset!important; } } &.tags { font-size: 16px; font-weight: 400; line-height: 1.7; border-radius: $border-radius__min; border: 1px solid $primary-colors__orange; width: fit-content; padding: 0 20px; z-index: 50; &_basic { color: $primary-colors__orange; background: $primary-colors__orange-back; &.active, &:hover { color: $background-body; background: $primary-colors__orange; } &_add { color: $primary-colors__turquoise; min-width: fit-content; border: 1px solid currentColor; background: $primary-colors__turquoise_back; a { vertical-align: middle; } &:hover { background: $primary-colors__orange-back; } } } &_add { color: $typography-additional; border: 1px solid $typography-additional; background: $typography-additional__light-two; a { vertical-align: middle; } &:hover { background: $primary-colors__orange-back; } } } &:focus { outline: none!important; box-shadow: unset!important; } } .llar-form-table { width: 100%; }plugins/limit-login-attempts-reloaded/autoload.php000064400000001057147176754540016435 0ustar00check_user_capabilities(); check_ajax_referer( 'llar-unlock', 'sec' ); $ip = (string) @$_POST['ip']; $lockouts = (array) Config::get( 'lockouts' ); if ( isset( $lockouts[ $ip ] ) ) { unset( $lockouts[ $ip ] ); Config::update( 'lockouts', $lockouts ); } //save to log $user_login = @(string) $_POST['username']; $log = Config::get( 'logged' ); if ( @$log[ $ip ][ $user_login ] ) { if ( ! is_array( $log[ $ip ][ $user_login ] ) ) { $log[ $ip ][ $user_login ] = array( 'counter' => $log[ $ip ][ $user_login ], ); } $log[ $ip ][ $user_login ]['unlocked'] = true; Config::update( 'logged', $log ); } header( 'Content-Type: application/json' ); echo 'true'; exit; } public function dismiss_review_notice_callback() { $this->check_user_capabilities(); check_ajax_referer( 'llar-dismiss-review', 'sec' ); $type = isset( $_POST['type'] ) ? sanitize_text_field( $_POST['type'] ) : false; if ( $type === 'dismiss' ) { Config::update( 'review_notice_shown', true ); } if ( $type === 'later' ) { Config::update( 'activation_timestamp', time() ); } wp_send_json_success( array() ); } public function dismiss_notify_notice_callback() { $this->check_user_capabilities(); check_ajax_referer( 'llar-dismiss-notify-notice', 'sec' ); $type = isset( $_POST['type'] ) ? sanitize_text_field( $_POST['type'] ) : false; if ( $type === 'dismiss' ) { Config::update( 'enable_notify_notice_shown', true ); } if ( $type === 'later' ) { Config::update( 'notice_enable_notify_timestamp', time() ); } wp_send_json_success( array() ); } public function enable_notify_callback() { $this->check_user_capabilities(); check_ajax_referer( 'llar-enable-notify', 'sec' ); $notify_methods = explode( ',', Config::get( 'lockout_notify' ) ); if ( ! in_array( 'email', $notify_methods ) ) { $notify_methods[] = 'email'; } Config::update( 'lockout_notify', implode( ',', $notify_methods ) ); Config::update( 'enable_notify_notice_shown', true ); wp_send_json_success( array() ); } public function app_setup_callback() { $this->check_user_capabilities(); check_ajax_referer( 'llar-app-setup', 'sec' ); if ( ! empty( $_POST['code'] ) ) { $setup_code = sanitize_text_field( $_POST['code'] ); if ( $key_result = CloudApp::activate_license_key( $setup_code ) ) { if ( $key_result['success'] ) { wp_send_json_success( array( 'msg' => ( $key_result['app_config']['messages']['setup_success'] ) ) ); } else { wp_send_json_error( array( 'msg' => ( $key_result['error'] ) ) ); } } else { wp_send_json_error( array( 'msg' => $key_result['error'] ) ); } } wp_send_json_error( array( 'msg' => __( 'Please specify the Setup Code', 'limit-login-attempts-reloaded' ) ) ); } public function app_log_action_callback() { $this->check_user_capabilities(); check_ajax_referer( 'llar-app-log', 'sec' ); if ( ! empty( $_POST['method'] ) && ! empty( $_POST['params'] ) ) { $method = sanitize_text_field( $_POST['method'] ); $params = (array) $_POST['params']; if ( ! in_array( $method, array( 'lockout/delete', 'acl/create', 'acl/delete' ) ) ) { wp_send_json_error( array( 'msg' => 'Wrong method.' ) ); } if ( $response = LimitLoginAttempts::$cloud_app->request( $method, 'post', $params ) ) { wp_send_json_success( array( 'msg' => $response['message'] ) ); } else { wp_send_json_error( array( 'msg' => 'The endpoint is not responding. Please contact your app provider to settle that.' ) ); } } wp_send_json_error( array( 'msg' => 'Wrong App id.' ) ); } public function app_acl_add_rule_callback() { $this->check_user_capabilities(); check_ajax_referer( 'llar-app-acl-add-rule', 'sec' ); if ( ! empty( $_POST['pattern'] ) && ! empty( $_POST['rule'] ) && ! empty( $_POST['type'] ) ) { $pattern = sanitize_text_field( $_POST['pattern'] ); $rule = sanitize_text_field( $_POST['rule'] ); $type = sanitize_text_field( $_POST['type'] ); if ( ! in_array( $rule, array( 'pass', 'allow', 'deny' ) ) ) { wp_send_json_error( array( 'msg' => 'Wrong rule.' ) ); } if ( $response = LimitLoginAttempts::$cloud_app->acl_create( array( 'pattern' => $pattern, 'rule' => $rule, 'type' => ( $type === 'ip' ) ? 'ip' : 'login', ) ) ) { wp_send_json_success( array( 'msg' => $response['message'] ) ); } else { wp_send_json_error( array( 'msg' => 'The endpoint is not responding. Please contact your app provider to settle that.' ) ); } } wp_send_json_error( array( 'msg' => 'Wrong input data.' ) ); } public function app_acl_remove_rule_callback() { $this->check_user_capabilities(); check_ajax_referer( 'llar-app-acl-remove-rule', 'sec' ); if ( ! empty( $_POST['pattern'] ) && ! empty( $_POST['type'] ) ) { $pattern = sanitize_text_field( $_POST['pattern'] ); $type = sanitize_text_field( $_POST['type'] ); if ( $response = LimitLoginAttempts::$cloud_app->acl_delete( array( 'pattern' => $pattern, 'type' => ( $type === 'ip' ) ? 'ip' : 'login', ) ) ) { wp_send_json_success( array( 'msg' => $response['message'] ) ); } else { wp_send_json_error( array( 'msg' => 'The endpoint is not responding. Please contact your app provider to settle that.' ) ); } } wp_send_json_error( array( 'msg' => 'Wrong input data.' ) ); } public function app_load_log_callback() { $this->check_user_capabilities(); check_ajax_referer( 'llar-app-load-log', 'sec' ); $offset = sanitize_text_field( $_POST['offset'] ); $limit = sanitize_text_field( $_POST['limit'] ); $log = LimitLoginAttempts::$cloud_app->log( $limit, $offset ); if ( $log ) { $date_format = get_option( 'date_format' ) . ' ' . get_option( 'time_format' ); $countries_list = Helpers::get_countries_list(); ob_start(); if ( empty( $log['items'] ) && ! empty( $log['offset'] ) ) : ?>
'; } } else { echo '-'; } ?> ob_get_clean(), 'offset' => $log['offset'], 'total_items' => count( $log['items'] ) ) ); } else { wp_send_json_error( array( 'msg' => 'The endpoint is not responding. Please contact your app provider to settle that.' ) ); } } public function app_load_successful_login_callback() { if ( ! LimitLoginAttempts::$instance->has_capability ) { wp_send_json_error( array() ); } check_ajax_referer( 'llar-app-load-login', 'sec' ); if ( empty( $_POST['limit'] ) && empty( $_POST['custom'] ) && ! $_POST['offset'] && ! $_POST['url_premium'] ) { wp_send_json_error( array() ); } $offset = sanitize_text_field( $_POST['offset'] ); $limit = sanitize_text_field( $_POST['limit'] ); $custom = sanitize_text_field( $_POST['custom'] ); $upgrade_premium_url = sanitize_text_field( $_POST['url_premium'] ); if ( $custom === 'true') { $data = LimitLoginAttempts::$cloud_app->get_login( $limit, $offset ); } else { $local_data = ['at' => time() - 60, 'login' => 'admin', 'ip' => '11.22.33.44', 'location' => ['country_code' => 'US'], 'roles' => ['administrator']]; $data['items'] = array_fill(0, 5, $local_data); $data['offset'] = ''; } if ( $data ) { $date_format = get_option( 'date_format' ) . ' ' . get_option( 'time_format' ); $current_date = date('Y-m-d'); $current_year = date('Y'); $countries_list = Helpers::get_countries_list(); $continent_list = Helpers::get_continent_list(); ob_start(); if ( empty( $data['items'] ) && ! empty( $data['offset'] ) ) : elseif ( $data['items'] ) : ?> 10; $long_ip = strlen( $ip ) > 15; $login_url = !empty( $item['user_id'] ) ? get_edit_user_link( $item['user_id'] ) : ''; $latitude = !empty( $item['location']['latitude'] ) ? $item['location']['latitude'] : false; $longitude = !empty( $item['location']['longitude'] ) ? $item['location']['longitude'] : false; $log_date_gmt = date('Y-m-d H:i:s', $item['at']); $log_local_date = get_date_from_gmt($log_date_gmt, 'Y-m-d'); $log_local_time = get_date_from_gmt($log_date_gmt, get_option('time_format')); $log_year = get_date_from_gmt($log_date_gmt, 'Y'); if ($log_local_date === $current_date) { $correct_date = __('Today at ', 'limit-login-attempts-reloaded') . $log_local_time; } elseif ($log_year === $current_year) { $log_local_month_day = get_date_from_gmt($log_date_gmt, 'M j'); $correct_date = $log_local_month_day . ' at ' . $log_local_time; } else { $correct_date = get_date_from_gmt($log_date_gmt, $date_format); } ?>
' . esc_html( $role ) . ''; endforeach; if ( ! empty ( $list_roles ) ) : ?>
Please upgrade to Premium to access this data.', 'limit-login-attempts-reloaded' ), $upgrade_premium_url ); ?>
0 ? '+' . $item['location']['timezone_offset'] : $item['location']['timezone_offset']; } ?>
ob_get_clean(), 'offset' => $data['offset'], 'total_items' => count( $data['items'] ) ) ); } else { wp_send_json_error( array( 'msg' => 'The endpoint is not responding. Please contact your app provider to settle that.' ) ); } } public function app_load_lockouts_callback() { $this->check_user_capabilities(); check_ajax_referer( 'llar-app-load-lockouts', 'sec' ); $offset = sanitize_text_field( $_POST['offset'] ); $limit = sanitize_text_field( $_POST['limit'] ); $lockouts = LimitLoginAttempts::$cloud_app->get_lockouts( $limit, $offset ); if ( $lockouts ) { ob_start(); ?> ob_get_clean(), 'offset' => $lockouts['offset'] ) ); } elseif ( intval( LimitLoginAttempts::$cloud_app->last_response_code ) >= 400 && intval( LimitLoginAttempts::$cloud_app->last_response_code ) < 500 ) { $app_config = Config::get( 'app_config' ); wp_send_json_error( array( 'error_notice' => '

' . $app_config['messages']['sync_error'] . '

' . sprintf( __( 'Meanwhile, the app falls over to the default functionality.', 'limit-login-attempts-reloaded' ), admin_url( 'options-general.php?page=limit-login-attempts&tab=logs-local' ) ) . '

' ) ); } else { wp_send_json_error( array( 'msg' => 'The endpoint is not responding. Please contact your app provider to settle that.' ) ); } } public function app_load_acl_rules_callback() { $this->check_user_capabilities(); check_ajax_referer( 'llar-app-load-acl-rules', 'sec' ); $type = sanitize_text_field( $_POST['type'] ); $limit = sanitize_text_field( $_POST['limit'] ); $offset = sanitize_text_field( $_POST['offset'] ); $acl_list = LimitLoginAttempts::$cloud_app->acl( array( 'type' => $type, 'limit' => $limit, 'offset' => $offset ) ); if ( $acl_list ) { ob_start(); ?> ' . esc_html( $item['origin'] ) . '
' : ''; ?> ob_get_clean(), 'offset' => $acl_list['offset'] ) ); } else { wp_send_json_error( array( 'msg' => 'The endpoint is not responding. Please contact your app provider to settle that.' ) ); } } public function app_load_country_access_rules_callback() { $this->check_user_capabilities(); check_ajax_referer( 'llar-app-load-country-access-rules', 'sec' ); $country_rules = LimitLoginAttempts::$cloud_app->country(); if ( $country_rules ) { wp_send_json_success( $country_rules ); } else { wp_send_json_error( array( 'msg' => 'Something wrong.' ) ); } } public function app_toggle_country_callback() { $this->check_user_capabilities(); check_ajax_referer( 'llar-app-toggle-country', 'sec' ); $code = sanitize_text_field( $_POST['code'] ); $action_type = sanitize_text_field( $_POST['type'] ); if ( ! $code ) { wp_send_json_error( array( 'msg' => 'Wrong country code.' ) ); } $result = false; if ( $action_type === 'add' ) { $result = LimitLoginAttempts::$cloud_app->country_add( array( 'code' => $code ) ); } else if ( $action_type === 'remove' ) { $result = LimitLoginAttempts::$cloud_app->country_remove( array( 'code' => $code ) ); } if ( $result ) { wp_send_json_success( array() ); } else { wp_send_json_error( array( 'msg' => 'Something wrong.' ) ); } } public function app_country_rule_callback() { $this->check_user_capabilities(); check_ajax_referer( 'llar-app-country-rule', 'sec' ); $rule = sanitize_text_field( $_POST['rule'] ); if ( empty( $rule ) || ! in_array( $rule, array( 'allow', 'deny' ) ) ) { wp_send_json_error( array( 'msg' => 'Wrong rule.' ) ); } $result = LimitLoginAttempts::$cloud_app->country_rule( array( 'rule' => $rule ) ); if ( $result ) { wp_send_json_success( array() ); } else { wp_send_json_error( array( 'msg' => 'Something wrong.' ) ); } } public function subscribe_email_callback() { $this->check_user_capabilities(); check_ajax_referer( 'llar-subscribe-email', 'sec' ); $email = sanitize_text_field( trim( $_POST['email'] ) ); $is_subscribe_yes = sanitize_text_field( $_POST['is_subscribe_yes'] ) === 'true'; $admin_email = ( ! is_multisite() ) ? get_option( 'admin_email' ) : get_site_option( 'admin_email' ); if ( ! empty( $email ) && is_email( $email ) ) { Config::update( 'admin_notify_email', $email ); Config::update( 'lockout_notify', 'email' ); if ( $is_subscribe_yes ) { $response = Http::post( 'https://api.limitloginattempts.com/my/key', array( 'data' => array( 'email' => $email ) ) ); if ( !empty( $response['error'] ) ) { wp_send_json_error( $response['error'] ); } else { $response_body = json_decode( $response['data'], true ); if ( ! empty( $response_body['key'] ) ) { Config::update( 'cloud_key', $response_body['key'] ); } } } wp_send_json_success( array( 'email' => $email, 'is_subscribe_yes' => $is_subscribe_yes ) ); } else if ( empty( $email ) ) { Config::update( 'admin_notify_email', $admin_email ); Config::update( 'lockout_notify', '' ); wp_send_json_success( array( 'email' => $admin_email, 'is_subscribe_yes' => '' ) ); } wp_send_json_error( array( 'email' => $email, 'is_subscribe_yes' => $is_subscribe_yes ) ); } public function strong_account_policies_callback() { if ( ! LimitLoginAttempts::$instance->has_capability ) { wp_send_json_error( array() ); } check_ajax_referer( 'llar-strong-account-policies', 'sec' ); $is_checklist = sanitize_text_field( trim( $_POST['is_checklist'] ) ); Config::update( 'checklist', $is_checklist ); wp_send_json_success(); } public function block_by_country_callback() { if ( ! LimitLoginAttempts::$instance->has_capability ) { wp_send_json_error( array() ); } check_ajax_referer( 'llar-block_by_country', 'sec' ); $is_checklist = sanitize_text_field( trim( $_POST['is_checklist'] ) ); Config::update( 'block_by_country', $is_checklist ); wp_send_json_success(); } public function dismiss_onboarding_popup_callback() { $this->check_user_capabilities(); check_ajax_referer( 'llar-dismiss-onboarding-popup', 'sec' ); Config::update( 'onboarding_popup_shown', true ); wp_send_json_success(); } public function get_remaining_attempts_message_callback() { check_ajax_referer( 'llar-get-remaining-attempts-message', 'sec' ); if ( ! session_id() ) { session_start(); } $remaining = ! empty( $_SESSION['login_attempts_left'] ) ? intval( $_SESSION['login_attempts_left'] ) : 0; $message = ( ! $remaining ) ? '' : sprintf( _n( "%d attempt remaining.", "%d attempts remaining.", $remaining, 'limit-login-attempts-reloaded' ), $remaining ); wp_send_json_success( $message ); } public function onboarding_reset_callback() { if ( ! LimitLoginAttempts::$instance->has_capability ) { wp_send_json_error( array() ); } check_ajax_referer( 'llar-action-onboarding-reset', 'sec' ); if ( Config::get( 'active_app' ) !== 'local' || ! empty( Config::get( 'app_setup_code' ) ) ) { wp_send_json_error( array() ); } Config::update( 'onboarding_popup_shown', 0 ); wp_send_json_success(); } public function close_premium_message() { check_ajax_referer( 'llar-close-premium-message', 'sec' ); Config::update( 'notifications_message_shown', strtotime( '+1 day' ) ); wp_send_json_success(); } public function activate_micro_cloud_callback() { if ( ! LimitLoginAttempts::$instance->has_capability ) { wp_send_json_error( array('msg' => 'Wrong country code.') ); } check_ajax_referer( 'llar-activate-micro-cloud', 'sec' ); $email = sanitize_text_field( trim( $_POST['email'] ) ); if ( ! empty( $email ) && is_email( $email ) ) { $url_api = defined( 'LLAR_MC_URL' ) ? LLAR_MC_URL : 'https://api.limitloginattempts.com/checkout/network'; $data = [ 'group' => 'free', 'email' => $email ]; $response = Http::post( $url_api, array( 'data' => $data ) ); if ( ! empty( $response['error'] ) ) { wp_send_json_error( $response['error'] ); } else { $response_body = json_decode( $response['data'], true ); if ( ! empty( $response_body['setup_code'] ) ) { if ( $key_result = CloudApp::activate_license_key( $response_body['setup_code'] ) ) { if ( $key_result['success'] ) { wp_send_json_success( array( 'msg' => ( $key_result ) ) ); } else { wp_send_json_error( array( 'msg' => ( $key_result ) ) ); } } else { wp_send_json_error( array( 'msg' => $key_result['error'] ) ); } } } } wp_send_json_error( array() ); } public function toggle_auto_update_callback() { $this->check_user_capabilities(); if ( Helpers::is_block_automatic_update_disabled() ) { wp_send_json_error( array( 'msg' => 'Can\'t turn auto-updates on. Please ask your hosting provider or developer for assistance.') ); } check_ajax_referer( 'llar-toggle-auto-update', 'sec' ); $value = sanitize_text_field( $_POST['value'] ); $auto_update_plugins = get_site_option( 'auto_update_plugins', array() ); if( $value === 'yes' ) { $auto_update_plugins[] = LLA_PLUGIN_BASENAME; Config::update( 'auto_update_choice', 1 ); } else if ( $value === 'no' ) { if ( ( $key = array_search( LLA_PLUGIN_BASENAME, $auto_update_plugins ) ) !== false ) { unset($auto_update_plugins[$key]); } Config::update( 'auto_update_choice', 0 ); } update_site_option( 'auto_update_plugins', $auto_update_plugins ); wp_send_json_success(); } public function test_email_notifications_callback() { $this->check_user_capabilities(); check_ajax_referer('llar-test-email-notifications', 'sec'); $to = sanitize_email( $_POST['email'] ); if( empty( $to ) || !is_email( $to ) ) { wp_send_json_error( array( 'msg' => __( 'Wrong email format.', 'limit-login-attempts-reloaded' ), ) ); } if( wp_mail( $to, __( 'LLAR Security Notifications [TEST]', 'limit-login-attempts-reloaded' ), __( 'Your email notifications for Limit Login Attempts Reloaded are working correctly. If this email is going to spam, please be sure to add this address to your safelist.', 'limit-login-attempts-reloaded' ) ) ) { wp_send_json_success(); } else { wp_send_json_error(); } } /** * Access capabilities checks */ private function check_user_capabilities() { if ( ! LimitLoginAttempts::$instance->has_capability ) { wp_send_json_error( array() ); } } } plugins/limit-login-attempts-reloaded/core/CloudApp.php000064400000016465147176754540017275 0ustar00id = 'app_' . $config['id']; $this->api = $config['api']; $this->config = $config; } /** * @param $error * @return bool */ public function add_error( $error ) { if ( ! $error ) { return false; } $this->login_errors[] = $error; } /** * @return array */ public function get_errors() { return $this->login_errors; } /** * @return null|string */ public function get_id() { return $this->id; } /** * @return array */ public function get_config() { return $this->config; } /** * @param $link * @return false[] */ public static function setup( $link ) { $return = array( 'success' => false, ); if ( empty( $link ) ) { return $return; } $link = 'https://' . $link; $domain = parse_url( home_url( '/' ) ); $link = add_query_arg( 'domain', $domain['host'], $link ); $plugin_data = get_plugin_data( LLA_PLUGIN_DIR . 'limit-login-attempts-reloaded.php' ); $link = add_query_arg( 'version', $plugin_data['Version'], $link ); $setup_response = Http::get( $link ); $setup_response_body = json_decode( $setup_response['data'], true ); if ( ! empty( $setup_response['error'] ) ) { $return['error'] = $setup_response['error']; } elseif( $setup_response['status'] === 200 ) { $return['success'] = true; $return['app_config'] = $setup_response_body; } else { $return['error'] = ( ! empty( $setup_response_body['message'] ) ) ? $setup_response_body['message'] : __( 'The endpoint is not responding. Please contact your app provider to settle that.', 'limit-login-attempts-reloaded' ); $return['response_code'] = $setup_response['status']; } return $return; } public static function activate_license_key( $setup_code ) { $link = strrev( $setup_code ); $setup_result = self::setup( $link ); if ( $setup_result['success'] ) { if ( $setup_result['app_config'] ) { Helpers::cloud_app_update_config( $setup_result['app_config'], true ); Config::update( 'active_app', 'custom' ); Config::update( 'app_setup_code', $setup_code ); $setup_result['app_config']['messages']['setup_success'] = ! empty( $setup_result['app_config']['messages']['setup_success'] ) ? $setup_result['app_config']['messages']['setup_success'] : __( 'The app has been successfully imported.', 'limit-login-attempts-reloaded' ); return $setup_result; } } else { return $setup_result; } return $setup_result; } /** * @return bool|mixed * @throws Exception */ public function stats() { if ( empty( $this->stats_cache ) ) { $this->stats_cache = $this->request( 'stats' ); } return $this->stats_cache; } /** * @return bool|mixed */ public static function stats_global() { $response = Http::get( 'https://api.limitloginattempts.com/v1/global-stats' ); if ( $response['status'] !== 200 ) { return false; } return json_decode( $response['data'], true ); } /** * @param $data * * @return bool|mixed * @throws Exception */ public function acl_check( $data ) { $this->prepare_settings( 'acl', $data ); return $this->request( 'acl', 'post', $data ); } /** * @param $data * * @return bool|mixed * @throws Exception */ public function acl( $data ) { return $this->request( 'acl', 'get', $data ); } /** * @return bool|mixed * @throws Exception */ public function info() { return $this->request( 'info' ); } /** * @param $data * * @return bool|mixed * @throws Exception */ public function acl_create( $data ) { return $this->request( 'acl/create', 'post', $data ); } /** * @param $data * * @return bool|mixed * @throws Exception */ public function acl_delete( $data ) { return $this->request( 'acl/delete', 'post', $data ); } /** * @return bool|mixed * @throws Exception */ public function country() { return $this->request( 'country', 'get' ); } /** * @param $data * @return bool|mixed * @throws Exception */ public function country_add( $data ) { return $this->request( 'country/add', 'post', $data ); } /** * @param $data * @return bool|mixed * @throws Exception */ public function country_remove( $data ) { return $this->request( 'country/remove', 'post', $data ); } /** * @param $data * * @return bool|mixed * @throws Exception */ public function country_rule( $data ) { return $this->request( 'country/rule', 'post', $data ); } /** * @param $data * * @return bool|mixed * @throws Exception */ public function lockout_check( $data ) { $this->prepare_settings( 'lockout', $data ); return $this->request( 'lockout', 'post', $data ); } /** * @param int $limit * @param string $offset * * @return bool|mixed * @throws Exception */ public function log($limit = 25, $offset = '') { $data = array(); $data['limit'] = $limit; $data['offset'] = $offset; $data['is_short'] = 1; return $this->request( 'log', 'get', $data ); } /** * @param int $limit * @param string $offset * * @return bool|mixed * @throws Exception */ public function get_login($limit = 25, $offset = '') { $data = array(); $data['limit'] = $limit; $data['offset'] = $offset; $data['is_short'] = 1; return $this->request( 'login', 'get', $data ); } /** * @param int $limit * @param string $offset * * @return bool|mixed * @throws Exception */ public function get_lockouts($limit = 25, $offset = '') { $data = array(); $data['limit'] = $limit; $data['offset'] = $offset; return $this->request( 'lockout', 'get', $data ); } /** * Prepare settings for API request * * @param $method */ public function prepare_settings( $method, &$data ) { $settings = array(); if ( ! empty( $this->config['settings'] ) ) { foreach ( $this->config['settings'] as $setting_name => $setting_data ) { if ( in_array( $method, $setting_data['methods'] ) ) { $settings[$setting_name] = $setting_data['value']; } } } if ( $settings ) { $data['settings'] = $settings; } } /** * @param $method * @param string $type * @param null $data * @return bool|mixed * @throws Exception */ public function request( $method, $type = 'get', $data = null ) { if ( ! $method ) { throw new Exception( 'You must specify API method.' ); } $headers = array(); $headers[] = "{$this->config['header']}: {$this->config['key']}"; $response = Http::$type( $this->api.'/'.$method, array( 'data' => $data, 'headers' => $headers ) ); $this->last_response_code = !empty( $response['status'] ) ? $response['status'] : 0; if ( $response['status'] !== 200 ) { return false; } return Helpers::sanitize_stripslashes_deep( json_decode( $response['data'], true ) ); } } plugins/limit-login-attempts-reloaded/core/Config.php000064400000012216147176754540016761 0ustar00 0, 'gdpr_message' => '', /* Are we behind a proxy? */ 'client_type' => LLA_DIRECT_ADDR, /* Lock out after this many tries */ 'allowed_retries' => 4, /* Lock out for this many seconds */ 'lockout_duration' => 1200, // 20 minutes /* Long lock out after this many lockouts */ 'allowed_lockouts' => 4, /* Long lock out for this many seconds */ 'long_duration' => 86400, // 24 hours, /* Reset failed attempts after this many seconds */ 'valid_duration' => 86400, // 12 hours /* Also limit malformed/forged cookies? */ 'cookies' => true, /* Notify on lockout. Values: '', 'log', 'email', 'log,email' */ 'lockout_notify' => 'email', /* strong account policies */ 'checklist' => false, /* If notify by email, do so after this number of lockouts */ 'notify_email_after' => 3, 'review_notice_shown' => false, 'enable_notify_notice_shown' => false, 'whitelist' => array(), 'whitelist_usernames' => array(), 'blacklist' => array(), 'blacklist_usernames' => array(), 'active_app' => 'local', 'app_config' => '', 'show_top_level_menu_item' => true, 'show_top_bar_menu_item' => true, 'hide_dashboard_widget' => false, 'show_warning_badge' => true, 'onboarding_popup_shown' => false, 'logged' => array(), 'retries_valid' => array(), 'retries' => array(), 'lockouts' => array(), 'auto_update_choice' => null, ); private static $disable_autoload_options = array( 'lockouts', 'logged', 'retries', 'retries_valid', 'retries_stats' ); private static $prefix = 'limit_login_'; private static $use_local_options = true; public static function get_default_options() { return self::$default_options || array(); } public static function use_local_options( $value ) { self::$use_local_options = $value; } public static function init() { self::init_defaults(); self::$use_local_options = Helpers::use_local_options(); } public static function init_defaults() { self::$default_options['gdpr_message'] = __( 'By proceeding you understand and give your consent that your IP address and browser information might be processed by the security plugins installed on this site.', 'limit-login-attempts-reloaded' ); } /** * @param $name * * @return false|string */ private static function format_option_name( $name ) { if ( ! $name ) { return false; } return self::$prefix . $name; } /** * Get option by name * * @param $option_name * * @return null */ public static function get( $option_name ) { $func = self::$use_local_options ? 'get_option' : 'get_site_option'; $value = $func( self::format_option_name( $option_name ), null ); if ( is_null( $value ) && isset( self::$default_options[ $option_name ] ) ) { $value = self::$default_options[ $option_name ]; } return $value; } /** * @param $option_name * @param $value * * @return mixed */ public static function update( $option_name, $value ) { $func = self::$use_local_options ? 'update_option' : 'update_site_option'; return $func( self::format_option_name( $option_name ), $value, self::is_autoload( $option_name ) ); } /** * @param $option_name * @param $value * * @return mixed */ public static function add( $option_name, $value ) { $func = self::$use_local_options ? 'add_option' : 'add_site_option'; return $func( self::format_option_name( $option_name ), $value, '', self::is_autoload( $option_name ) ); } /** * @param $option_name * * @return mixed */ public static function delete( $option_name ) { $func = self::$use_local_options ? 'delete_option' : 'delete_site_option'; return $func( self::format_option_name( $option_name ) ); } /** * Setup main options */ public static function sanitize_options() { $simple_int_options = array( 'allowed_retries', 'lockout_duration', 'valid_duration', 'allowed_lockouts', 'long_duration', 'notify_email_after' ); foreach ( $simple_int_options as $option ) { $val = self::get( $option ); if ( (int) $val != $val || (int) $val <= 0 ) { self::update( $option, 1 ); } } if ( self::get( 'notify_email_after' ) > self::get( 'allowed_lockouts' ) ) { self::update( 'notify_email_after', self::get( 'allowed_lockouts' ) ); } $args = explode( ',', self::get( 'lockout_notify' ) ); $args_allowed = explode( ',', LLA_LOCKOUT_NOTIFY_ALLOWED ); $new_args = array_intersect( $args, $args_allowed ); self::update( 'lockout_notify', implode( ',', $new_args ) ); $client_type = self::get( 'client_type' ); if ( $client_type != LLA_DIRECT_ADDR && $client_type != LLA_PROXY_ADDR ) { self::update( 'client_type', LLA_DIRECT_ADDR ); } } /** * @param $option_name * * @return string */ private static function is_autoload( $option_name ) { return in_array( trim( $option_name ), self::$disable_autoload_options ) ? 'no' : 'yes'; } }plugins/limit-login-attempts-reloaded/core/Helpers.php000064400000021363147176754540017161 0ustar00

' . $msg . '

'; } /** * @param $log * * @return array */ public static function sorted_log_by_date( $log ) { $new_log = array(); if ( ! is_array( $log ) || empty( $log ) ) { return $new_log; } foreach ( $log as $ip => $users ) { if ( ! empty( $users ) ) { foreach ( $users as $user_name => $info ) { if ( is_array( $info ) ) { // For new plugin version $new_log[ $info['date'] ] = array( 'ip' => $ip, 'username' => $user_name, 'counter' => $info['counter'], 'gateway' => ( isset( $info['gateway'] ) ) ? $info['gateway'] : '-', 'unlocked' => ! empty( $info['unlocked'] ), ); } else { // For old plugin version $new_log[0] = array( 'ip' => $ip, 'username' => $user_name, 'counter' => $info, 'gateway' => '-', 'unlocked' => false, ); } } } } krsort( $new_log ); return $new_log; } public static function get_countries_list() { if ( ! ( $countries = require LLA_PLUGIN_DIR . '/resources/countries.php' ) ) { return array(); } asort( $countries ); return $countries; } public static function get_continent_list() { if ( ! ( $continent = require LLA_PLUGIN_DIR . '/resources/continent.php' ) ) { return array(); } asort( $continent ); return $continent; } /** * @param $ip * @param $cidr * * @return bool */ public static function check_ip_cidr( $ip, $cidr ) { if ( ! $ip || ! $cidr ) { return false; } $cidr_checker = new CidrCheck(); return $cidr_checker->match( $ip, $cidr ); } /** * Checks if the plugin is installed as Must Use plugin * * @return bool */ public static function is_mu() { return ( strpos( LLA_PLUGIN_DIR, 'mu-plugins' ) !== false ); } /** * @param $content * * @return string|string[]|null */ public static function deslash( $content ) { $content = preg_replace( "/\\\+'/", "'", $content ); $content = preg_replace( '/\\\+"/', '"', $content ); $content = preg_replace( '/\\\+/', '\\', $content ); return $content; } // Solution prevents double quotes problem in json string public static function sanitize_stripslashes_deep( $value ) { if ( is_array( $value ) ) { return array_map( [self::class, 'sanitize_stripslashes_deep'], $value ); } if ( is_bool( $value ) || is_null( $value ) ) { return $value; } return sanitize_textarea_field( stripslashes( (string)$value ) ); } public static function is_auto_update_enabled() { $auto_update_plugins = get_site_option( 'auto_update_plugins' ); return is_array( $auto_update_plugins ) && in_array( LLA_PLUGIN_BASENAME, $auto_update_plugins ); } public static function is_block_automatic_update_disabled() { if ( ( defined( 'DISALLOW_FILE_MODS' ) && DISALLOW_FILE_MODS ) || ( defined( 'DOING_CRON' ) && DOING_CRON ) ) { return true; } return apply_filters( 'automatic_updater_disabled', false ) || ! apply_filters( 'auto_update_plugin', true, 10, 2 ); } public static function get_wordpress_version() { global $wp_version; return $wp_version; } /** * @return bool */ public static function is_network_mode() { if ( !is_multisite() ) return false; require_once ABSPATH.'wp-admin/includes/plugin.php'; return is_plugin_active_for_network( 'limit-login-attempts-reloaded/limit-login-attempts-reloaded.php' ); } /** * @return bool */ public static function allow_local_options() { if( !self::is_network_mode() ) return true; return get_site_option( 'limit_login_allow_local_options', false ); } /** * @return bool */ public static function use_local_options() { if( !self::is_network_mode() ) return true; return get_site_option( 'limit_login_allow_local_options', false ) && get_option( 'limit_login_use_local_options', false ); } /** * @param $new_app_config * @param false $update_created_at * * @return false */ public static function cloud_app_update_config( $new_app_config, $update_created_at = false ) { if( !$new_app_config ) return false; if( $active_app_config = Config::get( 'app_config' ) ) { foreach ( $active_app_config['settings'] as $key => $info ) { if( array_key_exists( $key, $new_app_config['settings'] ) ) { if( !empty( $new_app_config['settings'][$key]['options'] ) && !in_array( $info['value'], $new_app_config['settings'][$key]['options'] ) ) { continue; } $new_app_config['settings'][$key]['value'] = $info['value']; } } } if( $update_created_at ) $new_app_config['created_at'] = time(); Config::update( 'app_config', $new_app_config ); } /** * @param $filepath * * @return bool */ public static function is_writable( $filepath ) { return file_exists( $filepath ) && wp_is_writable( $filepath ); } public static function ip_in_range( $ip, $list ) { foreach ( $list as $range ) { $range = array_map('trim', explode('-', $range) ); if ( count( $range ) == 1 ) { // CIDR if( strpos( $range[0], '/' ) !== false && self::check_ip_cidr( $ip, $range[0] ) ) { return true; } // Single IP else if ( (string)$ip === (string)$range[0] ) { return true; } } else { $low = ip2long( $range[0] ); $high = ip2long( $range[1] ); $needle = ip2long( $ip ); if ( $low === false || $high === false || $needle === false ) continue; $low = (float)sprintf("%u",$low); $high = (float)sprintf("%u",$high); $needle = (float)sprintf("%u",$needle); if ( $needle >= $low && $needle <= $high ) return true; } } return false; } public static function detect_ip_address( $trusted_ip_origins ) { if( empty( $trusted_ip_origins ) || !is_array( $trusted_ip_origins ) ) { $trusted_ip_origins = array(); } if( !in_array( 'REMOTE_ADDR', $trusted_ip_origins ) ) { $trusted_ip_origins[] = 'REMOTE_ADDR'; } $ip = ''; foreach ( $trusted_ip_origins as $origin ) { if( isset( $_SERVER[$origin] ) && !empty( $_SERVER[$origin] ) ) { if( strpos( $_SERVER[$origin], ',' ) !== false ) { $origin_ips = explode( ',', $_SERVER[$origin] ); $origin_ips = array_map( 'trim', $origin_ips ); if( $origin_ips ) { foreach ($origin_ips as $check_ip) { if( self::is_ip_valid( $check_ip ) ) { $ip = $check_ip; break 2; } } } } if( self::is_ip_valid( $_SERVER[$origin] ) ) { $ip = $_SERVER[$origin]; break; } } } $ip = preg_replace('/^(\d+\.\d+\.\d+\.\d+):\d+$/', '\1', $ip); return $ip; } public static function get_all_ips() { $ips = array(); foreach ( $_SERVER as $key => $value ) { if( in_array( $key, array( 'SERVER_ADDR' ) ) ) continue; if( $valid_ip = self::is_ip_valid( $value ) ) { $ips[$key] = $valid_ip; } } if( !empty( $_SERVER['HTTP_X_FORWARDED_FOR'] ) && !array_key_exists( 'HTTP_X_FORWARDED_FOR', $ips ) ) { $ips['HTTP_X_FORWARDED_FOR'] = $_SERVER['HTTP_X_FORWARDED_FOR']; } return $ips; } public static function is_ip_valid( $ip ) { if( empty( $ip ) ) return false; return filter_var( $ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6 ) ?: filter_var( preg_replace('/^(\d+\.\d+\.\d+\.\d+):\d+$/', '\1', $ip ), FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 ); } public static function detect_gateway() { $gateway = 'wp_login'; if ( isset( $_POST['woocommerce-login-nonce'] ) ) { $gateway = 'wp_woo_login'; } elseif ( isset( $GLOBALS['wp_xmlrpc_server'] ) && is_object( $GLOBALS['wp_xmlrpc_server'] ) ) { $gateway = 'wp_xmlrpc'; } return $gateway; } public static function short_number($num) { $units = array( '', 'K', 'M', 'B', 'T' ); for ($i = 0; $num >= 1000; $i++) { $num /= 1000; } return round($num, 1) . $units[$i]; } public static function send_mail_with_logo( $to, $subject, $body ) { add_action( 'phpmailer_init', array( 'LLAR\Core\Helpers', 'add_attachments_to_php_mailer' ) ); @wp_mail( $to, $subject, $body, array( 'content-type: text/html' ) ); remove_action( 'phpmailer_init', array( 'LLAR\Core\Helpers', 'add_attachments_to_php_mailer' ) ); } public static function add_attachments_to_php_mailer( &$phpmailer ) { $logo_path = LLA_PLUGIN_DIR . 'assets/img/logo.png'; if( file_exists( $logo_path ) ) { $phpmailer->AddEmbeddedImage( $logo_path, 'logo' ); } } public static function wp_locale() { return str_replace( '_', '-', get_locale() ); } }plugins/limit-login-attempts-reloaded/core/http/Http.php000064400000002161147176754540017450 0ustar00get( $url, $options ); } /** * @param $url * @param array $options * * @return mixed */ public static function post( $url, $options = array() ) { $options['headers'] = array_merge( array( 'Content-Type: application/json; charset=utf-8' ), !empty( $options['headers'] ) ? $options['headers'] : array() ); return self::$transport->post( $url, $options ); } }plugins/limit-login-attempts-reloaded/core/http/HttpTransportCurl.php000064400000003154147176754540022216 0ustar00request( $url, 'GET', $headers ); } /** * @param $url * @param array $options * * @return array */ public function post( $url, $options = array() ) { $headers = !empty( $options['headers'] ) ? $options['headers'] : array(); $data = !empty( $options['data'] ) ? $options['data'] : array(); return $this->request( $url, 'POST', $headers, $data ); } /** * @param $url * @param $method * @param array $headers * @param array $data * * @return array */ private function request( $url, $method, $headers = array(), $data = array() ) { $handle = curl_init( $url ); curl_setopt( $handle, CURLOPT_RETURNTRANSFER, true ); if( $method === 'POST' ) { curl_setopt($handle, CURLOPT_POST, true); curl_setopt($handle, CURLOPT_POSTFIELDS, json_encode( $data, JSON_FORCE_OBJECT ) ); } if ( !empty( $headers ) ) { curl_setopt($handle, CURLOPT_HTTPHEADER, $headers); } $response = curl_exec( $handle ); $response_status = curl_getinfo( $handle, CURLINFO_HTTP_CODE ); curl_close( $handle ); return array( 'data' => $response, 'status' => intval( $response_status ), 'error' => !$response ? curl_error( $handle ) : null ); } }plugins/limit-login-attempts-reloaded/core/http/HttpTransportFopen.php000064400000004037147176754540022361 0ustar00request( $url, 'GET', $headers ); } /** * @param $url * @param array $options * * @return array */ public function post( $url, $options = array() ) { $headers = !empty( $options['headers'] ) ? $options['headers'] : array(); $data = !empty( $options['data'] ) ? $options['data'] : array(); return $this->request( $url, 'POST', $headers, $data ); } /** * @param $url * @param $method * @param array $headers * @param array $data * * @return array */ private function request( $url, $method, $headers = array(), $data = array() ) { $method = strtoupper( trim( $method ) ); $request_data = null; if( !empty( $data ) ) { $request_data = json_encode( $data, JSON_FORCE_OBJECT ); } $context = stream_context_create( array( 'http' => array( 'method' => $method, 'header' => implode( "\r\n", $headers ), 'content' => $request_data ) )); $fp = @fopen( $url, 'rb', false, $context ); $error = null; $status = null; $response = null; if ( !$fp ) { if( !empty( $http_response_header[0] ) ) { list(, $code, $message ) = explode( ' ', $http_response_header[0], 3 ); $error = $message; $status = $code; } else { $last_err = error_get_last(); $error = !empty( $last_err['message'] ) ? $last_err['message'] : 'Unknown error!'; } } else { list(, $code ) = explode( ' ', $http_response_header[0], 3 ); $status = $code; $response = stream_get_contents( $fp ); } return array( 'data' => $response, 'status' => intval( $status ), 'error' => $error ); } }plugins/limit-login-attempts-reloaded/core/http/HttpTransportInterface.php000064400000000253147176754540023206 0ustar00 !empty( $options['headers'] ) ? $this->format_headers( $options['headers'] ) : array(), 'body' => !empty( $options['data'] ) ? $options['data'] : array() ) ); return $this->prepare_response( $response ); } /** * @param $url * @param array $options * * @return array */ public function post( $url, $options = array() ) { $response = wp_remote_post( $url, array( 'headers' => !empty( $options['headers'] ) ? $this->format_headers( $options['headers'] ) : array(), 'body' => !empty( $options['data'] ) ? json_encode( $options['data'], JSON_FORCE_OBJECT ) : null ) ); return $this->prepare_response( $response ); } /** * @param $response * * @return array */ private function prepare_response( $response ) { $return = array( 'data' => null, 'status' => 0, 'error' => null ); if( is_wp_error( $response ) ) { $return['error'] = $response->get_error_message(); } else { $return['data'] = wp_remote_retrieve_body( $response ); $return['status'] = intval( wp_remote_retrieve_response_code( $response ) ); } return $return; } /** * @param array $headers * * @return array */ private function format_headers( $headers = array() ) { $formatted_headers = array(); if( !empty( $headers ) ) { foreach ( $headers as $header ) { list( $name, $value ) = explode( ':', $header ); $formatted_headers[ trim( $name ) ] = trim( $value ); } } return $formatted_headers; } }plugins/limit-login-attempts-reloaded/core/LimitLoginAttempts.php000064400000206233147176754540021351 0ustar00 array( 'name' => 'Free', 'rate' => 10, ), 'free' => array( 'name' => 'Micro Cloud', 'rate' => 20, ), 'premium' => array( 'name' => 'Premium', 'rate' => 30, ), 'plus' => array( 'name' => 'Premium +', 'rate' => 40, ), 'pro' => array( 'name' => 'Professional', 'rate' => 50, ), 'agency_pro' => array( 'name' => 'Agency', 'rate' => 60, ), ); public function __construct() { self::$instance = $this; Config::init(); Http::init(); $this->hooks_init(); $this->setup(); $this->cloud_app_init(); ( new Shortcodes() )->register(); ( new Ajax() )->register(); } /** * Register wp hooks and filters */ public function hooks_init() { add_action( 'admin_enqueue_scripts', array( $this, 'enqueue' ) ); add_action( 'login_enqueue_scripts', array( $this, 'login_page_enqueue' ) ); add_filter( 'limit_login_whitelist_ip', array( $this, 'check_whitelist_ips' ), 10, 2 ); add_filter( 'limit_login_whitelist_usernames', array( $this, 'check_whitelist_usernames' ), 10, 2 ); add_filter( 'limit_login_blacklist_ip', array( $this, 'check_blacklist_ips' ), 10, 2 ); add_filter( 'limit_login_blacklist_usernames', array( $this, 'check_blacklist_usernames' ), 10, 2 ); add_filter( 'illegal_user_logins', array( $this, 'register_user_blacklist' ), 999 ); add_filter( 'um_custom_authenticate_error_codes', array( $this, 'ultimate_member_register_error_codes' ) ); // TODO: Temporary turn off the holiday warning. //add_action( 'admin_notices', array( $this, 'show_enable_notify_notice' ) ); add_action( 'admin_notices', array( $this, 'show_leave_review_notice' ) ); add_action( 'admin_print_scripts-toplevel_page_limit-login-attempts', array( $this, 'load_admin_scripts' ) ); add_action( 'admin_print_scripts-settings_page_limit-login-attempts', array( $this, 'load_admin_scripts' ) ); add_action( 'admin_print_scripts-index.php', array( $this, 'load_admin_scripts' ) ); add_action( 'admin_init', array( $this, 'dashboard_page_redirect' ), 9999 ); add_action( 'admin_init', array( $this, 'setup_cookie' ), 10 ); add_action( 'login_footer', array( $this, 'login_page_gdpr_message' ) ); add_action( 'login_footer', array( $this, 'login_page_render_js' ), 9999 ); add_action( 'wp_footer', array( $this, 'login_page_render_js' ), 9999 ); if( !Config::get( 'hide_dashboard_widget' ) ) add_action( 'wp_dashboard_setup', array( $this, 'register_dashboard_widgets' ) ); register_activation_hook( LLA_PLUGIN_FILE, array( $this, 'activation' ) ); } /** * Runs when the plugin is activated */ public function activation() { if ( ! Config::get( 'activation_timestamp' ) ) { set_transient( 'llar_dashboard_redirect', true, 30 ); } } public function setup_cookie() { if ( empty( $_GET['page'] ) || $_GET['page'] !== $this->_options_page_slug ) { return; } $cookie_name = 'llar_menu_alert_icon_shown'; if ( empty( $_COOKIE[$cookie_name] ) ) { setcookie( $cookie_name, '1', strtotime( 'tomorrow' ) ); } } public function register_dashboard_widgets() { if ( ! $this->has_capability ) return; wp_add_dashboard_widget( 'llar_stats_widget', __( 'Limit Login Attempts Reloaded', 'limit-login-attempts-reloaded' ), array( $this, 'dashboard_widgets_content' ), null, null, 'normal', 'high' ); } public function dashboard_widgets_content() { include_once( LLA_PLUGIN_DIR . 'views/admin-dashboard-widgets.php' ); } /** * Redirect to dashboard page after installed */ public function dashboard_page_redirect() { if ( ! get_transient( 'llar_dashboard_redirect' ) || isset( $_GET['activate-multi'] ) || is_network_admin() ) { return; } delete_transient( 'llar_dashboard_redirect' ); wp_redirect( admin_url( 'index.php?page=' . $this->_options_page_slug ) ); exit(); } /** * Hook 'plugins_loaded' */ public function setup() { if ( ! ( $activation_timestamp = Config::get( 'activation_timestamp' ) ) ) { // Write time when the plugin is activated Config::update( 'activation_timestamp', time() ); } if ( ! ( $activation_timestamp = Config::get( 'notice_enable_notify_timestamp' ) ) ) { // Write time when the plugin is activated Config::update( 'notice_enable_notify_timestamp', strtotime( '-32 day' ) ); } if ( version_compare( Helpers::get_wordpress_version(), '5.5', '<' ) ) { Config::update( 'auto_update_choice', 0 ); } // Load languages files load_plugin_textdomain( 'limit-login-attempts-reloaded', false, plugin_basename( dirname( __FILE__ ) ) . '/../languages' ); // Check if installed old plugin $this->check_original_installed(); // Setup default plugin options //$this->sanitize_options(); add_action( 'wp_login_failed', array( $this, 'limit_login_failed' ) ); add_filter( 'wp_authenticate_user', array( $this, 'wp_authenticate_user' ), 99999, 2 ); add_action( 'wp_login', array( $this, 'limit_login_success' ), 10, 2 ); add_filter( 'shake_error_codes', array( $this, 'failure_shake' ) ); add_action( 'login_errors', array( $this, 'fixup_error_messages' ) ); if ( Helpers::is_network_mode() ) { add_action( 'network_admin_menu', array( $this, 'network_admin_menu' ) ); if ( Config::get( 'show_warning_badge' ) ) add_action( 'network_admin_menu', array( $this, 'network_setting_menu_alert_icon' ) ); } if ( Helpers::allow_local_options() ) { add_action( 'admin_menu', array( $this, 'admin_menu' ) ); if ( Config::get( 'show_top_bar_menu_item' ) ) add_action( 'admin_bar_menu', array( $this, 'admin_bar_menu' ), 999 ); if ( Config::get( 'show_warning_badge' ) ) add_action( 'admin_menu', array( $this, 'setting_menu_alert_icon' ) ); } // Add notices for XMLRPC request add_filter( 'xmlrpc_login_error', array( $this, 'xmlrpc_error_messages' ) ); // Add notices to woocommerce login page add_action( 'wp_head', array( $this, 'add_wc_notices' ) ); /* * This action should really be changed to the 'authenticate' filter as * it will probably be deprecated. That is however only available in * later versions of WP. */ add_action( 'wp_authenticate', array( $this, 'track_credentials' ), 10, 2 ); add_action( 'authenticate', array( $this, 'authenticate_filter' ), 5, 3 ); /** * BuddyPress unactivated user account message fix * Wordfence error message fix */ add_action( 'authenticate', array( $this, 'authenticate_filter_errors_fix' ), 35, 3 ); add_filter( 'plugin_action_links_' . LLA_PLUGIN_BASENAME, array( $this, 'add_action_links' ) ); $role = get_role( 'administrator' ); if ( $role && ! $role->has_cap( self::$capabilities ) ) { $role->add_cap( self::$capabilities ); } $this->has_capability = ( current_user_can('manage_options' ) || current_user_can( self::$capabilities ) ); } public function login_page_gdpr_message() { if ( ! Config::get( 'gdpr' ) || isset( $_REQUEST['interim-login'] ) ) return; ?>
is_limit_login_ok() ) || ( self::$cloud_app && !empty( self::$cloud_app->get_errors() ) ) ) { return; } $is_wp_login_page = isset( $_POST['log'] ); $is_woo_login_page = ( function_exists( 'is_account_page' ) && is_account_page() && isset( $_POST['username'] ) ); $is_um_login_page = ( function_exists( 'um_is_core_page' ) && um_is_core_page( 'login' ) && !empty( $_POST ) ); if ( ( $is_wp_login_page || $is_woo_login_page || $is_um_login_page ) ) : ?> get_options_page_uri() . '">' . __( 'Dashboard', 'limit-login-attempts-reloaded' ) . '', '' . __( 'Settings', 'limit-login-attempts-reloaded' ) . '', ), $actions ); if ( Config::get( 'active_app' ) === 'local' ) { if ( empty( Config::get( 'app_setup_code' ) ) ) { $slug = $this->get_options_page_uri('dashboard#modal_micro_cloud'); $actions = array_merge( array( '' . __( 'Free Upgrade', 'limit-login-attempts-reloaded' ) . '', ), $actions ); } else { $url_site = 'https://www.limitloginattempts.com/info.php?from=plugin-plugins'; $actions = array_merge( array( '' . __( 'Upgrade to Premium', 'limit-login-attempts-reloaded' ) . '', ), $actions ); } } return $actions; } public function cloud_app_init() { if ( Config::get( 'active_app' ) === 'custom' && $config = Config::get( 'app_config' ) ) { self::$cloud_app = new CloudApp( $config ); } } public function load_admin_scripts() { if ( ! empty( $_REQUEST['page'] ) && $_REQUEST['page'] !== $this->_options_page_slug ) { return; } wp_enqueue_script('jquery-ui-accordion'); wp_enqueue_style('llar-jquery-ui', LLA_PLUGIN_URL.'assets/css/jquery-ui.css'); wp_enqueue_script( 'llar-charts', LLA_PLUGIN_URL . 'assets/js/chart.umd.js' ); } public function check_whitelist_ips( $allow, $ip ) { return Helpers::ip_in_range( $ip, ( array ) Config::get( 'whitelist' ) ); } public function check_whitelist_usernames( $allow, $username ) { return in_array( $username, ( array ) Config::get( 'whitelist_usernames' ) ); } public function check_blacklist_ips( $allow, $ip ) { return Helpers::ip_in_range( $ip, ( array ) Config::get( 'blacklist' ) ); } public function check_blacklist_usernames( $allow, $username ) { return in_array( $username, ( array ) Config::get( 'blacklist_usernames' ) ); } /** * @param $blacklist * @return array|null */ public function register_user_blacklist($blacklist) { $black_list_usernames = Config::get( 'blacklist_usernames' ); if ( ! empty( $black_list_usernames ) && is_array( $black_list_usernames ) ) { $blacklist += $black_list_usernames; } return $blacklist; } /** * @param $error IXR_Error * * @return IXR_Error */ public function xmlrpc_error_messages( $error ) { if ( ! class_exists( 'IXR_Error' ) ) { return $error; } if ( $login_error = $this->get_message() ) { return new IXR_Error( 403, strip_tags( $login_error ) ); } return $error; } /** * Errors on WooCommerce account page */ public function add_wc_notices() { global $limit_login_just_lockedout, $limit_login_nonempty_credentials, $limit_login_my_error_shown; if ( ! function_exists( 'is_account_page' ) || ! function_exists( 'wc_add_notice' ) || !$limit_login_nonempty_credentials ) { return; } /* * During lockout we do not want to show any other error messages (like * unknown user or empty password). */ if ( empty( $_POST ) && ! $this->is_limit_login_ok() && ! $limit_login_just_lockedout ) { if ( is_account_page() ) { wc_add_notice( $this->error_msg(), 'error' ); } } } /** * @param $user * @param $username * @param $password * * @return WP_Error | WP_User * @throws Exception */ public function authenticate_filter( $user, $username, $password ) { if ( ! session_id() ) { session_start(); } if ( ! empty( $username ) && ! empty( $password ) ) { if ( self::$cloud_app && $response = self::$cloud_app->acl_check( array( 'ip' => Helpers::get_all_ips(), 'login' => $username, 'gateway' => Helpers::detect_gateway() ) ) ) { if ( $response['result'] === 'deny' ) { unset( $_SESSION['login_attempts_left'] ); remove_filter( 'login_errors', array( $this, 'fixup_error_messages' ) ); remove_filter( 'wp_login_failed', array( $this, 'limit_login_failed' ) ); remove_filter( 'wp_authenticate_user', array( $this, 'wp_authenticate_user' ), 99999 ); // Remove default WP authentication filters remove_filter( 'authenticate', 'wp_authenticate_username_password', 20 ); remove_filter( 'authenticate', 'wp_authenticate_email_password', 20 ); $err = __( 'ERROR: Too many failed login attempts.', 'limit-login-attempts-reloaded' ); $time_left = ( ! empty( $acl_result['time_left'] ) ) ? $acl_result['time_left'] : 0; if ( $time_left ) { if ( $time_left > 60 ) { $time_left = ceil( $time_left / 60 ); $err .= ' ' . sprintf( _n( 'Please try again in %d hour.', 'Please try again in %d hours.', $time_left, 'limit-login-attempts-reloaded' ), $time_left ); } else { $err .= ' ' . sprintf( _n( 'Please try again in %d minute.', 'Please try again in %d minutes.', $time_left, 'limit-login-attempts-reloaded' ), $time_left ); } } self::$cloud_app->add_error( $err ); $user = new WP_Error(); $user->add( 'username_blacklisted', $err ); if ( defined('XMLRPC_REQUEST' ) && XMLRPC_REQUEST ) { header('HTTP/1.0 403 Forbidden' ); exit; } } elseif ( $response['result'] === 'pass' ) { remove_filter( 'login_errors', array( $this, 'fixup_error_messages' ) ); remove_filter( 'wp_login_failed', array( $this, 'limit_login_failed' ) ); remove_filter( 'wp_authenticate_user', array( $this, 'wp_authenticate_user' ), 99999 ); } } else { $ip = $this->get_address(); // Check if username is blacklisted if ( ( ! $this->is_username_whitelisted( $username ) && ! $this->is_ip_whitelisted( $ip ) ) && ( $this->is_username_blacklisted( $username ) || $this->is_ip_blacklisted( $ip ) ) ) { unset( $_SESSION['login_attempts_left'] ); remove_filter( 'login_errors', array( $this, 'fixup_error_messages' ) ); remove_filter( 'wp_login_failed', array( $this, 'limit_login_failed' ) ); remove_filter( 'wp_authenticate_user', array( $this, 'wp_authenticate_user' ), 99999 ); // Remove default WP authentication filters remove_filter( 'authenticate', 'wp_authenticate_username_password', 20 ); remove_filter( 'authenticate', 'wp_authenticate_email_password', 20 ); $user = new WP_Error(); $user->add( 'username_blacklisted', "ERROR: Too many failed login attempts." ); if ( defined('XMLRPC_REQUEST') && XMLRPC_REQUEST ) { header('HTTP/1.0 403 Forbidden'); exit; } } elseif ( $this->is_username_whitelisted( $username ) || $this->is_ip_whitelisted( $ip ) ) { remove_filter( 'wp_login_failed', array( $this, 'limit_login_failed' ) ); remove_filter( 'wp_authenticate_user', array( $this, 'wp_authenticate_user' ), 99999 ); remove_filter( 'login_errors', array( $this, 'fixup_error_messages' ) ); } elseif ( self::$cloud_app && self::$cloud_app->last_response_code === 403 ) { add_action('wp_login', array( $this, 'cloud_app_null' ), 999); } } } return $user; } /** * Delete the CloudApp object */ public function cloud_app_null() { self::$cloud_app = null; } /** * Fix displaying the errors of other plugins * * @param $user * @param $username * @param $password * @return mixed */ public function authenticate_filter_errors_fix( $user, $username, $password ) { if ( ! empty( $username ) && ! empty( $password ) ) { if ( is_wp_error( $user ) ) { // BuddyPress errors if ( in_array('bp_account_not_activated', $user->get_error_codes() ) ) { $this->other_login_errors[] = $user->get_error_message('bp_account_not_activated'); } elseif ( in_array('wfls_captcha_verify', $user->get_error_codes() ) ) { // Wordfence errors $this->other_login_errors[] = $user->get_error_message( 'wfls_captcha_verify' ); } } } return $user; } public function ultimate_member_register_error_codes( $codes ) { if ( ! is_array( $codes ) ) { return $codes; } $codes[] = 'too_many_retries'; $codes[] = 'username_blacklisted'; return $codes; } /** * Check if the original plugin is installed */ private function check_original_installed() { require_once( ABSPATH . '/wp-admin/includes/plugin.php' ); if ( is_plugin_active('limit-login-attempts/limit-login-attempts.php') ) { deactivate_plugins( 'limit-login-attempts/limit-login-attempts.php', true ); //add_action('plugins_loaded', 'limit_login_setup', 99999); remove_action( 'plugins_loaded', 'limit_login_setup', 99999 ); } } /** * Enqueue js and css */ public function enqueue() { $plugin_data = get_plugin_data( LLA_PLUGIN_DIR . 'limit-login-attempts-reloaded.php' ); wp_enqueue_style( 'lla-main', LLA_PLUGIN_URL . 'assets/css/limit-login-attempts.css', array(), $plugin_data['Version'] ); if ( ! empty( $_REQUEST['page'] ) && $_REQUEST['page'] === $this->_options_page_slug ) { $auto_update = wp_create_nonce( 'llar-toggle-auto-update' ); $app_setup = wp_create_nonce( 'llar-app-setup' ); $account_policies = wp_create_nonce( 'llar-strong-account-policies' ); $block_country = wp_create_nonce( 'llar-block_by_country' ); $onboarding_reset = wp_create_nonce( 'llar-action-onboarding-reset' ); $dismiss_onboarding_popup = wp_create_nonce( 'llar-dismiss-onboarding-popup' ); $activate_micro_cloud = wp_create_nonce( 'llar-activate-micro-cloud' ); $subscribe_email = wp_create_nonce( 'llar-subscribe-email' ); $close_premium_message = wp_create_nonce( 'llar-close-premium-message' ); wp_enqueue_script( 'lla-main', LLA_PLUGIN_URL . 'assets/js/limit-login-attempts.js', array('jquery'), $plugin_data['Version'], false ); wp_localize_script('lla-main', 'llar_vars', array( 'nonce_auto_update' => $auto_update, 'nonce_app_setup' => $app_setup, 'nonce_account_policies' => $account_policies, 'nonce_block_by_country' => $block_country, 'nonce_onboarding_reset' => $onboarding_reset, 'nonce_dismiss_onboarding_popup' => $dismiss_onboarding_popup, 'nonce_activate_micro_cloud' => $activate_micro_cloud, 'nonce_subscribe_email' => $subscribe_email, 'nonce_close_premium_message' => $close_premium_message, )); wp_enqueue_style( 'lla-jquery-confirm', LLA_PLUGIN_URL . 'assets/css/jquery-confirm.min.css' ); wp_enqueue_script( 'lla-jquery-confirm', LLA_PLUGIN_URL . 'assets/js/jquery-confirm.min.js' ); } } public function login_page_enqueue() { $plugin_data = get_plugin_data( LLA_PLUGIN_DIR . 'limit-login-attempts-reloaded.php' ); wp_enqueue_style( 'llar-login-page-styles', LLA_PLUGIN_URL . 'assets/css/login-page-styles.css', array(), $plugin_data['Version'] ); wp_enqueue_script( 'jquery' ); } /** * Add admin options page */ public function network_admin_menu() { if ( ! $this->has_capability ) return; add_submenu_page( 'settings.php', 'Limit Login Attempts', 'Limit Login Attempts' . $this->menu_alert_icon(), self::$capabilities, $this->_options_page_slug, array( $this, 'options_page' ) ); } private function get_submenu_items() { $active_app = Config::get( 'active_app' ); $app_setup_code = Config::get( 'app_setup_code' ); $is_cloud_app_enabled = $active_app === 'custom'; $is_local_empty_setup_code = ( $active_app === 'local' && empty( $app_setup_code ) ); $submenu_items = array( array( 'id' => 'dashboard', 'name' => __( 'Dashboard', 'limit-login-attempts-reloaded' ), 'url' => '&tab=dashboard' ), array( 'id' => 'settings', 'name' => __( 'Settings', 'limit-login-attempts-reloaded' ), 'url' => '&tab=settings' ), $is_cloud_app_enabled ? array( 'id' => 'logs-custom', 'name' => __( 'Login Firewall', 'limit-login-attempts-reloaded' ), 'url' => '&tab=logs-custom' ) : array( 'id' => 'logs-local', 'name' => __( 'Logs', 'limit-login-attempts-reloaded' ), 'url' => '&tab=logs-local' ), array( 'id' => 'debug', 'name' => __( 'Debug', 'limit-login-attempts-reloaded' ), 'url' => '&tab=debug' ), array( 'id' => 'help', 'name' => __( 'Help', 'limit-login-attempts-reloaded' ), 'url' => '&tab=help' ) ); if ( ! $is_cloud_app_enabled ) { $slug = '&tab=dashboard#modal_micro_cloud'; $name_item = $is_local_empty_setup_code ? __( 'Free Upgrade', 'limit-login-attempts-reloaded' ) : __( 'Premium', 'limit-login-attempts-reloaded' ); $url_item = $is_local_empty_setup_code ? $slug : '&tab=premium'; $submenu_items[] = array( 'id' => 'premium', 'name' => __( $name_item, 'limit-login-attempts-reloaded' ), 'url' => $url_item, ); } return $submenu_items; } public function admin_menu() { if ( ! $this->has_capability ) return; global $submenu; if ( Config::get( 'show_top_level_menu_item' ) ) { add_menu_page( 'Limit Login Attempts', 'Limit Login Attempts' . $this->menu_alert_icon(), self::$capabilities, $this->_options_page_slug, array( $this, 'options_page' ), 'data:image/svg+xml;base64,' . base64_encode( $this->get_svg_logo_content() ), 74 ); $is_cloud_app_enabled = Config::get( 'active_app' ) === 'custom'; $submenu_items = $this->get_submenu_items(); $index = 1; foreach ( $submenu_items as $item ) { add_submenu_page( $this->_options_page_slug, $item['name'], $item['name'], self::$capabilities, $this->_options_page_slug . $item['url'], array( $this, 'options_page' ) ); if ( ! empty ( $_GET['page'] ) && $_GET['page'] === $this->_options_page_slug && ! empty( $_GET['tab'] ) && $_GET['tab'] === $item['id'] ) { $submenu[$this->_options_page_slug][$index][4] = 'current'; } $index++; } remove_submenu_page( $this->_options_page_slug, $this->_options_page_slug ); if ( ! $is_cloud_app_enabled && isset( $submenu[$this->_options_page_slug] ) ) { $submenu[$this->_options_page_slug][6][4] = ! empty($submenu[$this->_options_page_slug][6][4]) ? $submenu[$this->_options_page_slug][6][4] . ' llar-submenu-premium-item' : 'llar-submenu-premium-item'; } } else { add_options_page( 'Limit Login Attempts', 'Limit Login Attempts' . $this->menu_alert_icon(), self::$capabilities, $this->_options_page_slug, array( $this, 'options_page' ) ); } } public function admin_bar_menu( $admin_bar ) { if ( ! $this->has_capability ) return; $root_item_id = 'llar-root'; $href = $this->get_options_page_uri(); $admin_bar->add_node( array( 'id' => $root_item_id, 'title' => __( 'LLAR', 'limit-login-attempts-reloaded' ) . $this->menu_alert_icon(), 'href' => $href, ) ); $submenu_items = $this->get_submenu_items(); foreach ( $submenu_items as $item ) { $admin_bar->add_node( array( 'parent' => $root_item_id, 'id' => $root_item_id . '-' . $item['id'], 'title' => $item['name'], 'href' => $href . $item['url'], ) ); } } public function get_svg_logo_content() { return file_get_contents( LLA_PLUGIN_DIR . 'assets/img/logo.svg' ); } private function menu_alert_icon() { if ( ! empty( $_COOKIE['llar_menu_alert_icon_shown'] ) || Config::get( 'active_app' ) !== 'local' || ! Config::get( 'show_warning_badge' ) ) { return ''; } $retries_count = 0; $retries_stats = Config::get( 'retries_stats' ); if ( $retries_stats ) { foreach ( $retries_stats as $key => $count ) { if ( is_numeric( $key ) && $key > strtotime( '-24 hours' ) ) { $retries_count += $count; } elseif ( ! is_numeric( $key ) && date_i18n( 'Y-m-d' ) === $key ) { $retries_count += $count; } } } if ( $retries_count < 100 ) { return ''; } return ' 1'; } public function setting_menu_alert_icon() { global $menu; if ( ! Config::get( 'show_top_level_menu_item' ) && ! empty( $menu[80][0] ) ) { $menu[80][0] .= $this->menu_alert_icon(); } } public function network_setting_menu_alert_icon() { global $menu; if ( ! empty( $menu[25][0] ) ) { $menu[25][0] .= $this->menu_alert_icon(); } } /** * Get the correct options page URI * * @param bool $tab * @return mixed */ public function get_options_page_uri( $tab = false ) { if ( is_network_admin() ) { $uri = network_admin_url( 'settings.php?page=' . $this->_options_page_slug ); } else { $uri = admin_url( 'admin.php?page=' . $this->_options_page_slug ); } if ( ! empty( $tab ) ) { $uri = add_query_arg( 'tab', $tab, $uri ); } return $uri; } /** * Fires after successful login * * @param $username * @param $user * */ public function limit_login_success( $username, $user ) { if ( ! self::$cloud_app ) { return; } if ( ! empty( $username ) ) { $clean_url = ''; if ( isset( $_SERVER['HTTP_REFERER'] ) ) { $referer_url = $_SERVER['HTTP_REFERER']; $referer_parsed = parse_url( $referer_url ); $clean_url = isset( $referer_parsed['path']) ? $referer_parsed['path'] : ''; $clean_url = trim( $clean_url, '/' ); } $user = get_user_by('login', $username); $data = array( 'ip' => Helpers::get_all_ips(), 'login' => $username, 'user_id' => $user->ID, 'gateway' => Helpers::detect_gateway(), 'roles' => $user->roles, 'agent' => $_SERVER['HTTP_USER_AGENT'], 'url' => $clean_url, ); self::$cloud_app->request( 'login', 'post', $data ); } } /** * Check if it is ok to login * * @return bool */ public function is_limit_login_ok() { $ip = $this->get_address(); /* Check external whitelist filter */ if ( $this->is_ip_whitelisted( $ip ) ) { return true; } /* lockout active? */ $lockouts = Config::get( 'lockouts' ); return ( ! is_array( $lockouts ) || ! isset( $lockouts[ $ip ] ) || time() >= $lockouts[ $ip ] ); } /** * Action when login attempt failed * * Increase nr of retries (if necessary). Reset valid value. Setup * lockout if nr of retries are above threshold. And more! * * A note on external whitelist: retries and statistics are still counted and * notifications done as usual, but no lockout is done. * * @param $username */ public function limit_login_failed( $username ) { if ( ! session_id() ) { session_start(); } $_SESSION['login_attempts_left'] = 0; if ( self::$cloud_app && $response = self::$cloud_app->lockout_check( array( 'ip' => Helpers::get_all_ips(), 'login' => $username, 'gateway' => Helpers::detect_gateway() ) ) ) { if ( $response['result'] === 'allow' ) { $_SESSION['login_attempts_left'] = intval( $response['attempts_left'] ); } elseif ( $response['result'] === 'deny' ) { global $limit_login_just_lockedout; $limit_login_just_lockedout = true; $err = __( 'ERROR: Too many failed login attempts.', 'limit-login-attempts-reloaded' ); $time_left = ( ! empty( $response['time_left'] ) ) ? $response['time_left'] : 0; if ( $time_left > 60 ) { $time_left = ceil( $time_left / 60 ); $err .= ' ' . sprintf( _n( 'Please try again in %d hour.', 'Please try again in %d hours.', $time_left, 'limit-login-attempts-reloaded' ), $time_left ); } else { $err .= ' ' . sprintf( _n( 'Please try again in %d minute.', 'Please try again in %d minutes.', $time_left, 'limit-login-attempts-reloaded' ), $time_left ); } self::$cloud_app->add_error( $err ); } } else { $ip = $this->get_address(); /* if currently locked-out, do not add to retries */ $lockouts = Config::get( 'lockouts' ); if ( ! is_array( $lockouts ) ) { $lockouts = array(); } if ( isset( $lockouts[ $ip ] ) && time() < $lockouts[ $ip ] ) { return; } /* Get the arrays with retries and retries-valid information */ $retries = Config::get( 'retries' ); $valid = Config::get( 'retries_valid' ); $retries_stats = Config::get( 'retries_stats' ); if ( ! is_array( $retries ) ) { $retries = array(); Config::add( 'retries', $retries ); } if ( ! is_array( $valid ) ) { $valid = array(); Config::add( 'retries_valid', $valid ); } if ( ! is_array( $retries_stats ) ) { $retries_stats = array(); Config::add( 'retries_stats', $retries_stats ); } $date_key = strtotime( date( 'Y-m-d H:00:00' ) ); if ( ! empty( $retries_stats[ $date_key ] ) ) { $retries_stats[ $date_key ]++; } else { $retries_stats[ $date_key ] = 1; } Config::update( 'retries_stats', $retries_stats ); /* Check validity and add one to retries */ if ( isset( $retries[ $ip ] ) && isset( $valid[ $ip ] ) && time() < $valid[ $ip ] ) { $retries[ $ip ] ++; } else { $retries[ $ip ] = 1; } $valid[ $ip ] = time() + Config::get( 'valid_duration' ); /* lockout? */ if ( $retries[ $ip ] % Config::get( 'allowed_retries' ) != 0 ) { /* * Not lockout (yet!) * Do housecleaning (which also saves retry/valid values). */ $this->cleanup( $retries, null, $valid ); $_SESSION['login_attempts_left'] = $this->calculate_retries_remaining(); return; } /* lockout! */ $whitelisted = $this->is_ip_whitelisted( $ip ); $retries_long = Config::get( 'allowed_retries' ) * Config::get( 'allowed_lockouts' ); /* * Note that retries and statistics are still counted and notifications * done as usual for whitelisted ips , but no lockout is done. */ if ( $whitelisted ) { if ( $retries[ $ip ] >= $retries_long ) { unset( $retries[ $ip ] ); unset( $valid[ $ip ] ); } } else { global $limit_login_just_lockedout; $limit_login_just_lockedout = true; /* setup lockout, reset retries as needed */ if ( ( isset($retries[ $ip ]) ? $retries[ $ip ] : 0 ) >= $retries_long ) { /* long lockout */ $lockouts[ $ip ] = time() + Config::get( 'long_duration' ); unset( $retries[ $ip ] ); unset( $valid[ $ip ] ); } else { /* normal lockout */ $lockouts[ $ip ] = time() + Config::get( 'lockout_duration' ); } } /* do housecleaning and save values */ $this->cleanup( $retries, $lockouts, $valid ); /* do any notification */ $this->notify( $username ); /* increase statistics */ $total = Config::get( 'lockouts_total' ); if ( $total === false || ! is_numeric( $total ) ) { Config::add( 'lockouts_total', 1 ); } else { Config::update( 'lockouts_total', $total + 1 ); } } } /** * Handle notification in event of lockout * * @param $user * @return bool|void */ public function notify( $user ) { if ( is_object( $user ) ) { return false; } $this->notify_log( $user ); $args = explode( ',', Config::get( 'lockout_notify' ) ); if ( empty( $args ) ) { return; } if ( in_array( 'email', $args ) ) { $this->notify_email( $user ); } } /** * Email notification of lockout to admin (if configured) * * @param $user */ public function notify_email( $user ) { $ip = $this->get_address(); $retries = Config::get( 'retries' ); if ( ! is_array( $retries ) ) { $retries = array(); } /* check if we are at the right nr to do notification */ if ( isset( $retries[ $ip ] ) && ( ( (int) $retries[ $ip ] / Config::get( 'allowed_retries' ) ) % Config::get( 'notify_email_after' ) ) != 0 ) { return; } /* Format message. First current lockout duration */ if ( ! isset( $retries[ $ip ] ) ) { /* longer lockout */ $count = Config::get( 'allowed_retries' ) * Config::get( 'allowed_lockouts' ); $lockouts = Config::get( 'allowed_lockouts' ); $time = round( Config::get( 'long_duration' ) / 3600 ); $when = sprintf( _n( '%d hour', '%d hours', $time, 'limit-login-attempts-reloaded' ), $time ); } else { /* normal lockout */ $count = $retries[ $ip ]; $lockouts = floor( ( $count ) / Config::get( 'allowed_retries' ) ); $time = round( Config::get( 'lockout_duration' ) / 60 ); $when = sprintf( _n( '%d minute', '%d minutes', $time, 'limit-login-attempts-reloaded' ), $time ); } if ( $custom_admin_email = Config::get( 'admin_notify_email' ) ) { $admin_email = $custom_admin_email; } else { $admin_email = get_site_option( 'admin_email' ); } $admin_name = ''; global $wpdb; $res = $wpdb->get_col( $wpdb->prepare( " SELECT u.display_name FROM $wpdb->users AS u LEFT JOIN $wpdb->usermeta AS m ON u.ID = m.user_id WHERE u.user_email = %s AND m.meta_key LIKE 'wp_capabilities' AND m.meta_value LIKE '%administrator%'", $admin_email ) ); if ( $res ) { $admin_name = $res[0]; } $site_domain = str_replace( array( 'http://', 'https://' ), '', home_url() ); $blogname = Helpers::use_local_options() ? get_option( 'blogname' ) : get_site_option( 'site_name' ); $blogname = htmlspecialchars_decode( $blogname, ENT_QUOTES ); $plugin_data = get_plugin_data( LLA_PLUGIN_DIR . 'limit-login-attempts-reloaded.php' ); $subject = sprintf( __( "Failed login by IP %s www.limitloginattempts.com", 'limit-login-attempts-reloaded' ), $ip ); ob_start(); include LLA_PLUGIN_DIR . 'views/emails/failed-login.php'; $email_body = ob_get_clean(); $placeholders = array( '{name}' => $admin_name, '{domain}' => $site_domain, '{attempts_count}' => $count, '{lockouts_count}' => $lockouts, '{ip_address}' => $ip, '{username}' => $user, '{blocked_duration}' => $when, '{dashboard_url}' => admin_url( 'options-general.php?page=' . $this->_options_page_slug ), '{premium_url}' => 'https://www.limitloginattempts.com/info.php?from=plugin-lockout-email&v=' . $plugin_data['Version'], '{llar_url}' => 'https://www.limitloginattempts.com/?from=plugin-lockout-email&v=' . $plugin_data['Version'], '{unsubscribe_url}' => admin_url( 'options-general.php?page=' . $this->_options_page_slug . '&tab=settings' ), ); $email_body = str_replace( array_keys( $placeholders ), array_values( $placeholders ), $email_body ); Helpers::send_mail_with_logo( $admin_email, $subject, $email_body ); } /** * Logging of lockout (if configured) * * @param $user_login * * @internal param $user */ public function notify_log( $user_login ) { if ( ! $user_login ) { return; } $log = $option = Config::get( 'logged' ); if ( ! is_array( $log ) ) { $log = array(); } $ip = $this->get_address(); /* can be written much simpler, if you do not mind php warnings */ if ( ! isset( $log[ $ip ] ) ) { $log[ $ip ] = array(); } if ( ! isset( $log[ $ip ][ $user_login ] ) ) { $log[ $ip ][ $user_login ] = array( 'counter' => 0 ); } elseif ( ! is_array( $log[ $ip ][ $user_login ] ) ) { $log[ $ip ][ $user_login ] = array( 'counter' => $log[ $ip ][ $user_login ] ); } $log[ $ip ][ $user_login ]['counter']++; $log[ $ip ][ $user_login ]['date'] = time(); $log[ $ip ][ $user_login ]['gateway'] = Helpers::detect_gateway(); if ( $option === false ) { Config::add( 'logged', $log ); } else { Config::update( 'logged', $log ); } } /** * Check if IP is whitelisted. * * This function allow external ip whitelisting using a filter. Note that it can * be called multiple times during the login process. * * Note that retries and statistics are still counted and notifications * done as usual for whitelisted ips , but no lockout is done. * * Example: * function my_ip_whitelist($allow, $ip) { * return ($ip == 'my-ip') ? true : $allow; * } * add_filter('limit_login_whitelist_ip', 'my_ip_whitelist', 10, 2); * * @param null $ip * * @return bool */ public function is_ip_whitelisted( $ip = null ) { if ( is_null( $ip ) ) { $ip = $this->get_address(); } $whitelisted = apply_filters( 'limit_login_whitelist_ip', false, $ip ); return ( $whitelisted === true ); } public function is_username_whitelisted( $username ) { if ( empty( $username ) ) { return false; } $whitelisted = apply_filters( 'limit_login_whitelist_usernames', false, $username ); return ( $whitelisted === true ); } public function is_ip_blacklisted( $ip = null ) { if ( is_null( $ip ) ) { $ip = $this->get_address(); } $blacklisted = apply_filters( 'limit_login_blacklist_ip', false, $ip ); return ( $blacklisted === true ); } public function is_username_blacklisted( $username ) { if ( empty( $username ) ) { return false; } $whitelisted = apply_filters( 'limit_login_blacklist_usernames', false, $username ); return ( $whitelisted === true ); } /** * Filter: allow login attempt? (called from wp_authenticate()) * * @param $user WP_User * @param $password * * @return WP_Error|WP_User */ public function wp_authenticate_user( $user, $password ) { if ( is_wp_error( $user ) ) { return $user; } $user_login = ''; if ( is_a( $user, 'WP_User' ) ) { $user_login = $user->user_login; } elseif( ! empty( $user ) && !is_wp_error( $user ) ) { $user_login = $user; } if ( $this->check_whitelist_ips( false, $this->get_address() ) || $this->check_whitelist_usernames( false, $user_login ) || $this->is_limit_login_ok() ) { return $user; } $error = new WP_Error(); global $limit_login_my_error_shown; $limit_login_my_error_shown = true; if ( $this->is_username_blacklisted( $user_login ) || $this->is_ip_blacklisted( $this->get_address() ) ) { $error->add( 'username_blacklisted', "ERROR: Too many failed login attempts." ); } else { // This error should be the same as in "shake it" filter below $error->add( 'too_many_retries', $this->error_msg() ); } return $error; } /** * Filter: add this failure to login page "Shake it!" * * @param $error_codes * * @return array */ public function failure_shake( $error_codes ) { $error_codes[] = 'too_many_retries'; $error_codes[] = 'username_blacklisted'; return $error_codes; } /** * Keep track of if user or password are empty, to filter errors correctly * * @param $user * @param $password */ public function track_credentials( $user, $password ) { global $limit_login_nonempty_credentials; $limit_login_nonempty_credentials = ( ! empty( $user ) && ! empty( $password ) ); } /** * Construct informative error message * * @return string */ public function error_msg() { $ip = $this->get_address(); $lockouts = Config::get( 'lockouts' ); $a = $this->checkKey($lockouts, $ip); $b = $this->checkKey($lockouts, $this->getHash($ip)); $msg = __( 'ERROR: Too many failed login attempts.', 'limit-login-attempts-reloaded' ) . ' '; if ( ! is_array( $lockouts ) || ( ! isset( $lockouts[ $ip ] ) && ! isset( $lockouts[ $this->getHash( $ip ) ] ) ) || ( time() >= $a && time() >= $b ) ){ /* Huh? No timeout active? */ $msg .= __( 'Please try again later.', 'limit-login-attempts-reloaded' ); return $msg; } $when = ceil( ( ($a > $b ? $a : $b) - time() ) / 60 ); if ( $when > 60 ) { $when = ceil( $when / 60 ); $msg .= sprintf( _n( 'Please try again in %d hour.', 'Please try again in %d hours.', $when, 'limit-login-attempts-reloaded' ), $when ); } else { $msg .= sprintf( _n( 'Please try again in %d minute.', 'Please try again in %d minutes.', $when, 'limit-login-attempts-reloaded' ), $when ); } return $msg; } /** * Fix up the error message before showing it * * @param $content * * @return string */ public function fixup_error_messages( $content ) { global $limit_login_just_lockedout, $limit_login_nonempty_credentials, $limit_login_my_error_shown; $error_msg = $this->get_message(); if ( $limit_login_nonempty_credentials ) { $content = ''; if ( $this->other_login_errors ) { foreach ( $this->other_login_errors as $msg ) { $content .= $msg . "
\n"; } } elseif ( ! $limit_login_just_lockedout ) { /* Replace error message, including ours if necessary */ if ( ! empty( $_REQUEST['log'] ) && is_email( $_REQUEST['log'] ) ) { $content = __( 'ERROR: Incorrect email address or password.', 'limit-login-attempts-reloaded' ) . "
\n"; } else { $content = __( 'ERROR: Incorrect username or password.', 'limit-login-attempts-reloaded' ) . "
\n"; } } if ( $error_msg ) { $content .= ( !empty( $content ) ) ? "
\n" : ''; $content .= $error_msg . "
\n"; } } return $content; } public function fixup_error_messages_wc( \WP_Error $error ) { $error->add( 1, __( 'WC Error', 'limit-login-attempts-reloaded' ) ); } /** * Return current (error) message to show, if any * * @return string */ public function get_message() { if ( self::$cloud_app ) { $app_errors = self::$cloud_app->get_errors(); return ! empty( $app_errors ) ? implode( '
', $app_errors ) : ''; } /* Check external whitelist */ if ( $this->is_ip_whitelisted() ) { return ''; } /* Is lockout in effect? */ if ( ! $this->is_limit_login_ok() ) { return $this->error_msg(); } return ''; } private function calculate_retries_remaining() { $remaining = 0; $ip = $this->get_address(); $retries = Config::get( 'retries' ); $valid = Config::get( 'retries_valid' ); $a = $this->checkKey($retries, $ip); $b = $this->checkKey($retries, $this->getHash($ip)); $c = $this->checkKey($valid, $ip); $d = $this->checkKey($valid, $this->getHash($ip)); /* Should we show retries remaining? */ if ( ! is_array( $retries ) || ! is_array( $valid ) ) { /* no retries at all */ return $remaining; } if ( ( ! isset( $retries[ $ip ] ) && ! isset( $retries[ $this->getHash($ip) ] )) || ( ! isset( $valid[ $ip ] ) && ! isset( $valid[ $this->getHash($ip) ] )) || ( time() > $c && time() > $d ) ) { /* no: no valid retries */ return $remaining; } if ( ( $a % Config::get( 'allowed_retries' ) ) == 0 && ( $b % Config::get( 'allowed_retries' ) ) == 0 ) { /* no: already been locked out for these retries */ return $remaining; } $remaining = max( ( Config::get( 'allowed_retries' ) - ( ($a + $b) % Config::get( 'allowed_retries' ) ) ), 0 ); return (int) $remaining; } /** * Get correct remote address * * @return string * */ public function get_address() { return Helpers::detect_ip_address( Config::get( 'trusted_ip_origins' ) ); } /** * Clean up old lockouts and retries, and save supplied arrays * * @param null $retries * @param null $lockouts * @param null $valid */ public function cleanup( $retries = null, $lockouts = null, $valid = null ) { $now = time(); $lockouts = ! is_null( $lockouts ) ? $lockouts : Config::get( 'lockouts' ); $log = Config::get( 'logged' ); /* remove old lockouts */ if ( is_array( $lockouts ) ) { foreach ( $lockouts as $ip => $lockout ) { if ( $lockout < $now ) { unset( $lockouts[ $ip ] ); if( is_array( $log ) && isset( $log[ $ip ] ) ) { foreach ( $log[ $ip ] as $user_login => &$data ) { if ( !is_array( $data ) ) { $data = array(); } $data['unlocked'] = true; } } } } Config::update( 'lockouts', $lockouts ); } Config::update( 'logged', $log ); /* remove retries that are no longer valid */ $valid = ! is_null( $valid ) ? $valid : Config::get( 'retries_valid' ); $retries = ! is_null( $retries ) ? $retries : Config::get( 'retries' ); if ( ! is_array( $valid ) || ! is_array( $retries ) ) { return; } foreach ( $valid as $ip => $lockout ) { if ( $lockout < $now ) { unset( $valid[ $ip ] ); unset( $retries[ $ip ] ); } } /* go through retries directly, if for some reason they've gone out of sync */ foreach ( $retries as $ip => $retry ) { if ( ! isset( $valid[ $ip ] ) ) { unset( $retries[ $ip ] ); } } $retries_stats = Config::get( 'retries_stats' ); if($retries_stats) { foreach( $retries_stats as $key => $count ) { if ( ( is_numeric( $key ) && $key < strtotime( '-8 day' ) ) || ( ! is_numeric( $key ) && strtotime( $key ) < strtotime( '-8 day' ) ) ) { unset($retries_stats[$key]); } } Config::update( 'retries_stats', $retries_stats ); } Config::update( 'retries', $retries ); Config::update( 'retries_valid', $valid ); } /** * Render admin options page */ public function options_page() { if ( ! empty( $_GET['tab'] ) && $_GET['tab'] === 'settings' ) { Config::use_local_options( ! is_network_admin() ); } $this->cleanup(); if ( ! empty( $_POST ) ) { check_admin_referer( 'limit-login-attempts-options' ); if ( is_network_admin() ) { Config::update( 'allow_local_options', ! empty( $_POST['allow_local_options'] ) ); } elseif ( Helpers::is_network_mode() ) { Config::update( 'use_local_options', empty( $_POST['use_global_options'] ) ); } /* Should we clear log? */ if ( isset( $_POST[ 'clear_log' ] ) ) { Config::update( 'logged', array() ); $this->show_message( __( 'Cleared IP log', 'limit-login-attempts-reloaded' ) ); } /* Should we reset counter? */ if ( isset( $_POST[ 'reset_total' ] ) ) { Config::update( 'lockouts_total', 0 ); $this->show_message( __( 'Reset lockout count', 'limit-login-attempts-reloaded' ) ); } /* Should we restore current lockouts? */ if ( isset( $_POST[ 'reset_current' ] ) ) { Config::update( 'lockouts', array() ); $this->show_message( __( 'Cleared current lockouts', 'limit-login-attempts-reloaded' ) ); } /* Should we update options? */ if ( isset( $_POST[ 'llar_update_dashboard' ] ) ) { $white_list_ips = ( ! empty( $_POST['lla_whitelist_ips'] ) ) ? explode("\n", str_replace("\r", "", stripslashes( $_POST['lla_whitelist_ips'] ) ) ) : array(); if ( ! empty( $white_list_ips ) ) { foreach( $white_list_ips as $key => $ip ) { if( '' == $ip ) { unset( $white_list_ips[ $key ] ); } } } Config::update('whitelist', $white_list_ips ); $white_list_usernames = ( ! empty( $_POST['lla_whitelist_usernames'] ) ) ? explode("\n", str_replace("\r", "", stripslashes( $_POST['lla_whitelist_usernames'] ) ) ) : array(); if ( ! empty( $white_list_usernames ) ) { foreach( $white_list_usernames as $key => $ip ) { if ( '' == $ip ) { unset( $white_list_usernames[ $key ] ); } } } Config::update('whitelist_usernames', $white_list_usernames ); $black_list_ips = ( ! empty( $_POST['lla_blacklist_ips'] ) ) ? explode("\n", str_replace("\r", "", stripslashes( $_POST['lla_blacklist_ips'] ) ) ) : array(); if ( ! empty( $black_list_ips ) ) { foreach( $black_list_ips as $key => $ip ) { $range = array_map('trim', explode( '-', $ip ) ); if ( count( $range ) > 1 && ( float )sprintf( "%u", ip2long( $range[0] ) ) > ( float )sprintf( "%u",ip2long( $range[1] ) ) ) { $this->show_message( sprintf ( __( 'The %s IP range is invalid', 'limit-login-attempts-reloaded' ), $ip ) ); } if ( '' == $ip ) { unset( $black_list_ips[ $key ] ); } } } Config::update('blacklist', $black_list_ips ); $black_list_usernames = ( ! empty( $_POST['lla_blacklist_usernames'] ) ) ? explode("\n", str_replace("\r", "", stripslashes( $_POST['lla_blacklist_usernames'] ) ) ) : array(); if ( ! empty( $black_list_usernames ) ) { foreach( $black_list_usernames as $key => $ip ) { if ( '' == $ip ) { unset( $black_list_usernames[ $key ] ); } } } Config::update('blacklist_usernames', $black_list_usernames ); Config::sanitize_options(); $this->show_message( __( 'Settings saved.', 'limit-login-attempts-reloaded' ) ); } elseif ( isset( $_POST[ 'llar_update_settings' ] ) ) { /* Should we support GDPR */ if ( isset( $_POST[ 'gdpr' ] ) ) { Config::update( 'gdpr', 1 ); } else { Config::update( 'gdpr', 0 ); } Config::update('show_top_level_menu_item', ( isset( $_POST['show_top_level_menu_item'] ) ? 1 : 0 ) ); Config::update('show_top_bar_menu_item', ( isset( $_POST['show_top_bar_menu_item'] ) ? 1 : 0 ) ); Config::update('hide_dashboard_widget', ( isset( $_POST['hide_dashboard_widget'] ) ? 1 : 0 ) ); Config::update('show_warning_badge', ( isset( $_POST['show_warning_badge'] ) ? 1 : 0 ) ); Config::update('allowed_retries', (int)$_POST['allowed_retries'] ); Config::update('lockout_duration', (int)$_POST['lockout_duration'] * 60 ); Config::update('valid_duration', (int)$_POST['valid_duration'] * 3600 ); Config::update('allowed_lockouts', (int)$_POST['allowed_lockouts'] ); Config::update('long_duration', (int)$_POST['long_duration'] * 3600 ); Config::update('notify_email_after', (int)$_POST['email_after'] ); Config::update('gdpr_message', sanitize_textarea_field( Helpers::deslash( $_POST['gdpr_message'] ) ) ); Config::update('admin_notify_email', sanitize_email( $_POST['admin_notify_email'] ) ); Config::update('active_app', sanitize_text_field( $_POST['active_app'] ) ); $trusted_ip_origins = ( ! empty( $_POST['lla_trusted_ip_origins'] ) ) ? array_map( 'trim', explode( ',', sanitize_text_field( $_POST['lla_trusted_ip_origins'] ) ) ) : array(); if ( ! in_array( 'REMOTE_ADDR', $trusted_ip_origins ) ) { $trusted_ip_origins[] = 'REMOTE_ADDR'; } Config::update('trusted_ip_origins', $trusted_ip_origins ); $notify_methods = array(); if ( isset( $_POST[ 'lockout_notify_email' ] ) ) { $notify_methods[] = 'email'; } Config::update('lockout_notify', implode( ',', $notify_methods ) ); Config::sanitize_options(); if ( ! empty( $_POST['llar_app_settings'] ) && self::$cloud_app ) { if ( ( $app_setup_code = Config::get( 'app_setup_code' ) ) && $setup_result = CloudApp::setup( strrev( $app_setup_code ) ) ) { if ( $setup_result['success'] && $active_app_config = $setup_result['app_config'] ) { foreach ( $_POST['llar_app_settings'] as $key => $value ) { if ( array_key_exists( $key, $active_app_config['settings'] ) ) { if ( ! empty( $active_app_config['settings'][$key]['options'] ) && ! in_array( $value, $active_app_config['settings'][$key]['options'] ) ) { continue; } $active_app_config['settings'][$key]['value'] = $value; } } Config::update( 'app_config', $active_app_config ); } } } $this->show_message( __( 'Settings saved.', 'limit-login-attempts-reloaded' ) ); $this->cloud_app_init(); } } include_once( LLA_PLUGIN_DIR . 'views/options-page.php' ); } /** * Show error message * * @param $msg * @param bool $is_error */ public function show_message( $msg, $is_error = false ) { Helpers::show_message( $msg, $is_error ); } /** * returns IP with its md5 value */ private function getHash( $str ) { return md5( $str ); } /** * @param $arr - array * @param $k - key * @return int array value at given index or zero */ private function checkKey( $arr, $k ) { return isset( $arr[ $k ] ) ? $arr[ $k ] : 0; } private function plan_name_match( $plan = 'default' ) { if ( ! array_key_exists( $plan, $this->plans ) ) { $plan = 'default'; } return $this->plans[ $plan ]['name']; } public function array_name_plans() { $plans = []; foreach ( $this->plans as $plan ) { $plans[ $plan['name'] ] = $plan['rate']; } return $plans; } private function info() { if ( self::$cloud_app ) { $this->info_data = self::$cloud_app->info(); } return $this->info_data; } public function info_is_exhausted() { if ( empty( $this->info_data ) ) { $this->info_data = $this->info(); } return isset( $this->info_data['requests']['exhausted'] ) ? filter_var( $this->info_data['requests']['exhausted'], FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE ) : false; } public function info_requests() { if ( empty( $this->info_data ) ) { $this->info_data = $this->info(); } return ( ! empty( $this->info_data ) && ! empty( $this->info_data['requests'] ) ) ? $this->info_data['requests'] : ''; } public function info_sub_group() { if ( empty( $this->info_data ) ) { $this->info_data = $this->info(); } $data = ( ! empty( $this->info_data ) && ! empty( $this->info_data['sub_group'] ) ) ? $this->info_data['sub_group'] : ''; return $this->plan_name_match( $data ); } public function info_upgrade_url() { if ( empty( $this->info_data ) ) { $this->info_data = $this->info(); } return ( ! empty( $this->info_data ) && ! empty( $this->info_data['upgrade_url'] ) ) ? $this->info_data['upgrade_url'] : ''; } public function info_block_by_country() { if ( empty( $this->info_data ) ) { $this->info_data = $this->info(); } return ( ! empty( $this->info_data ) && ! empty( $this->info_data['block_by_country'] ) ) ? $this->info_data['block_by_country'] : ''; } public function show_leave_review_notice() { $screen = get_current_screen(); if ( isset( $_COOKIE['llar_review_notice_shown'] ) ) { Config::update( 'review_notice_shown', true ); @setcookie( 'llar_review_notice_shown', '', time() - 3600, '/' ); } if ( ! $this->has_capability || Config::get( 'review_notice_shown' ) || ! in_array( $screen->base, array( 'dashboard', 'plugins', 'toplevel_page_limit-login-attempts' ) ) ) { return; } $activation_timestamp = Config::get( 'activation_timestamp' ); if ( $activation_timestamp && $activation_timestamp < strtotime("-1 month") ) : ?>
review-logo

Limit Login Attempts Reloaded user!', 'limit-login-attempts-reloaded'); ?>

here. Thank you!', 'limit-login-attempts-reloaded'); ?>

has_capability || Config::get('enable_notify_notice_shown') || $screen->parent_base === 'edit' ) { return; } $activation_timestamp = Config::get('notice_enable_notify_timestamp'); if ( $activation_timestamp && $activation_timestamp < strtotime("-1 month") ) { $review_activation_timestamp = Config::get('activation_timestamp'); if ( $review_activation_timestamp && $review_activation_timestamp < strtotime("-1 month") ) { Config::update( 'activation_timestamp', time() ); } ?>

Limit Login Attempts Reloaded.
' . 'Due to increased security threats around the holidays, we recommend turning on email ' . 'notifications when you receive a failed login attempt.', 'limit-login-attempts-reloaded'); ?>

'#', 'text' => 'Link' ), $attr ); return '' . esc_html( $attr['text'] ) . ''; } }plugins/limit-login-attempts-reloaded/languages/limit-login-attempts-reloaded.pot000064400000175021147176754540024451 0ustar00# Copyright (C) 2024 Limit Login Attempts Reloaded # This file is distributed under the same license as the Limit Login Attempts Reloaded plugin. msgid "" msgstr "" "Project-Id-Version: Limit Login Attempts Reloaded 2.26.13\n" "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/limit-login-attempts-reloaded\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "POT-Creation-Date: 2024-08-28T20:03:19+03:00\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "X-Generator: WP-CLI 2.7.1\n" "X-Domain: limit-login-attempts-reloaded\n" #. Plugin Name of the plugin #. Author of the plugin #: core/LimitLoginAttempts.php:169 msgid "Limit Login Attempts Reloaded" msgstr "" #. Description of the plugin msgid "Block excessive login attempts and protect your site against brute force attacks. Simple, yet powerful tools to improve site performance." msgstr "" #. Author URI of the plugin msgid "https://www.limitloginattempts.com/" msgstr "" #: core/Ajax.php:175 msgid "Please specify the Setup Code" msgstr "" #: core/Ajax.php:359 #: core/Ajax.php:662 msgid "No events yet." msgstr "" #: core/Ajax.php:451 msgid "Today at " msgstr "" #: core/Ajax.php:538 msgid "Login details could not be populated due to insufficient cloud resources.
Please upgrade to Premium to access this data." msgstr "" #: core/Ajax.php:549 msgid "Continent: " msgstr "" #: core/Ajax.php:558 msgid "Country: " msgstr "" #: core/Ajax.php:564 msgid "State/Province: " msgstr "" #: core/Ajax.php:570 msgid "District: " msgstr "" #: core/Ajax.php:576 msgid "City: " msgstr "" #: core/Ajax.php:582 msgid "Zipcode: " msgstr "" #: core/Ajax.php:588 msgid "Latitude, Longitude: " msgstr "" #: core/Ajax.php:607 msgid "Timezone: " msgstr "" #: core/Ajax.php:636 msgid "Internet Provider: " msgstr "" #: core/Ajax.php:643 msgid "Connection Type: " msgstr "" #: core/Ajax.php:711 msgid "No lockouts yet." msgstr "" #: core/Ajax.php:728 msgid "Meanwhile, the app falls over to the default functionality." msgstr "" #: core/Ajax.php:779 msgid "No rules yet." msgstr "" #: core/Ajax.php:991 msgid "%d attempt remaining." msgid_plural "%d attempts remaining." msgstr[0] "" msgstr[1] "" #: core/Ajax.php:1127 msgid "Wrong email format." msgstr "" #: core/Ajax.php:1133 msgid "LLAR Security Notifications [TEST]" msgstr "" #: core/Ajax.php:1134 msgid "Your email notifications for Limit Login Attempts Reloaded are working correctly. If this email is going to spam, please be sure to add this address to your safelist." msgstr "" #: core/CloudApp.php:132 msgid "The endpoint is not responding. Please contact your app provider to settle that." msgstr "" #: core/CloudApp.php:157 msgid "The app has been successfully imported." msgstr "" #: core/Config.php:96 msgid "By proceeding you understand and give your consent that your IP address and browser information might be processed by the security plugins installed on this site." msgstr "" #: core/LimitLoginAttempts.php:343 #: core/LimitLoginAttempts.php:712 #: views/options-page.php:129 msgid "Dashboard" msgstr "" #: core/LimitLoginAttempts.php:344 #: core/LimitLoginAttempts.php:717 #: views/options-page.php:133 msgid "Settings" msgstr "" #: core/LimitLoginAttempts.php:354 #: core/LimitLoginAttempts.php:746 msgid "Free Upgrade" msgstr "" #: core/LimitLoginAttempts.php:361 #: views/tab-dashboard.php:97 #: views/tab-dashboard.php:253 msgid "Upgrade to Premium" msgstr "" #: core/LimitLoginAttempts.php:502 #: core/LimitLoginAttempts.php:1023 #: core/LimitLoginAttempts.php:1491 msgid "ERROR: Too many failed login attempts." msgstr "" #: core/LimitLoginAttempts.php:509 #: core/LimitLoginAttempts.php:1030 #: core/LimitLoginAttempts.php:1508 msgid "Please try again in %d hour." msgid_plural "Please try again in %d hours." msgstr[0] "" msgstr[1] "" #: core/LimitLoginAttempts.php:511 #: core/LimitLoginAttempts.php:1032 #: core/LimitLoginAttempts.php:1511 msgid "Please try again in %d minute." msgid_plural "Please try again in %d minutes." msgstr[0] "" msgstr[1] "" #: core/LimitLoginAttempts.php:723 #: resources/compare-plans-data.php:64 #: views/options-page.php:139 msgid "Login Firewall" msgstr "" #: core/LimitLoginAttempts.php:728 #: views/options-page.php:145 msgid "Logs" msgstr "" #: core/LimitLoginAttempts.php:733 #: views/options-page.php:151 msgid "Debug" msgstr "" #: core/LimitLoginAttempts.php:738 #: views/options-page.php:155 #: views/tab-dashboard.php:128 msgid "Help" msgstr "" #: core/LimitLoginAttempts.php:746 msgid "Premium" msgstr "" #: core/LimitLoginAttempts.php:829 msgid "LLAR" msgstr "" #: core/LimitLoginAttempts.php:1216 msgid "%d hour" msgid_plural "%d hours" msgstr[0] "" msgstr[1] "" #: core/LimitLoginAttempts.php:1223 msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "" msgstr[1] "" #: core/LimitLoginAttempts.php:1260 msgid "Failed login by IP %s www.limitloginattempts.com" msgstr "" #: core/LimitLoginAttempts.php:1499 msgid "Please try again later." msgstr "" #: core/LimitLoginAttempts.php:1545 msgid "ERROR: Incorrect email address or password." msgstr "" #: core/LimitLoginAttempts.php:1548 msgid "ERROR: Incorrect username or password." msgstr "" #: core/LimitLoginAttempts.php:1564 msgid "WC Error" msgstr "" #: core/LimitLoginAttempts.php:1751 msgid "Cleared IP log" msgstr "" #: core/LimitLoginAttempts.php:1758 msgid "Reset lockout count" msgstr "" #: core/LimitLoginAttempts.php:1765 msgid "Cleared current lockouts" msgstr "" #: core/LimitLoginAttempts.php:1810 msgid "The %s IP range is invalid" msgstr "" #: core/LimitLoginAttempts.php:1837 #: core/LimitLoginAttempts.php:1910 msgid "Settings saved." msgstr "" #: core/LimitLoginAttempts.php:2063 msgid "Hey Limit Login Attempts Reloaded user!" msgstr "" #: core/LimitLoginAttempts.php:2064 msgid "A crazy idea we wanted to share! What if we put an image from YOU on the LLAR page?! (example) A drawing made by you or your child would cheer people up! Send us your drawing by email and we like it, we'll add it in the next release. Let's have some fun!" msgstr "" #: core/LimitLoginAttempts.php:2065 msgid "We would really like to hear your feedback about the plugin! Please take a couple minutes to write a few words here. Thank you!" msgstr "" #: core/LimitLoginAttempts.php:2068 msgid "Don't show again" msgstr "" #: core/LimitLoginAttempts.php:2069 msgid "Maybe later" msgstr "" #: core/LimitLoginAttempts.php:2070 msgid "Leave a review" msgstr "" #: core/LimitLoginAttempts.php:2156 msgid "You have been upgraded to the latest version of Limit Login Attempts Reloaded.
Due to increased security threats around the holidays, we recommend turning on email notifications when you receive a failed login attempt." msgstr "" #: core/LimitLoginAttempts.php:2161 msgid "Yes, turn on email notifications" msgstr "" #: core/LimitLoginAttempts.php:2162 msgid "Remind me a month from now" msgstr "" #: core/LimitLoginAttempts.php:2163 msgid "Don't show this message again" msgstr "" #: resources/compare-plans-data.php:27 msgid "Installed" msgstr "" #: resources/compare-plans-data.php:31 msgid "Get Started (Free)" msgstr "" #: resources/compare-plans-data.php:35 msgid "Upgrade now" msgstr "" #: resources/compare-plans-data.php:50 msgid "Limit Number of Retry Attempts" msgstr "" #: resources/compare-plans-data.php:57 msgid "Configurable Lockout Timing" msgstr "" #: resources/compare-plans-data.php:65 msgid "Secure your login page with our cutting-edge login firewall, defending against unauthorized access attempts and protecting your users' accounts and sensitive information." msgstr "" #: resources/compare-plans-data.php:72 msgid "Performance Optimizer" msgstr "" #: resources/compare-plans-data.php:73 msgid "Absorb failed login attempts from brute force bots in the cloud to keep your website at its optimal performance." msgstr "" #: resources/compare-plans-data.php:75 msgid "1k for first month%s(100 per month after)" msgstr "" #: resources/compare-plans-data.php:76 msgid "100k requests per month" msgstr "" #: resources/compare-plans-data.php:77 msgid "200k requests per month" msgstr "" #: resources/compare-plans-data.php:78 msgid "300k requests per month" msgstr "" #: resources/compare-plans-data.php:80 msgid "Successful Login Logs" msgstr "" #: resources/compare-plans-data.php:81 msgid "Ensure the security and integrity of your website by logging your successful logins." msgstr "" #: resources/compare-plans-data.php:88 msgid "Block By Country" msgstr "" #: resources/compare-plans-data.php:89 msgid "Disable IPs from any region to disable logins." msgstr "" #: resources/compare-plans-data.php:96 msgid "Access Blocklist of Malicious IPs" msgstr "" #: resources/compare-plans-data.php:97 msgid "Add another layer of protection from brute force bots by accessing a global database of known IPs with malicious activity." msgstr "" #: resources/compare-plans-data.php:104 msgid "Auto IP Blocklist" msgstr "" #: resources/compare-plans-data.php:105 msgid "Automatically add malicious IPs to your blocklist when triggered by the system." msgstr "" #: resources/compare-plans-data.php:112 msgid "Access Active Cloud Blocklist" msgstr "" #: resources/compare-plans-data.php:113 msgid "Use system wide data from over 10,000 WordPress websites to identify and block malicious IPs. This is an active list in real-time." msgstr "" #: resources/compare-plans-data.php:120 msgid "Intelligent IP Blocking" msgstr "" #: resources/compare-plans-data.php:121 msgid "Use active IP database via the cloud to automatically block users before they are able to make a failed login." msgstr "" #: resources/compare-plans-data.php:128 msgid "Synchronize Lockouts & Safelists/Blocklists" msgstr "" #: resources/compare-plans-data.php:129 msgid "Lockouts & safelists/blocklists can be shared between multiple domains to enhance protection." msgstr "" #: resources/compare-plans-data.php:136 #: views/tab-help.php:173 msgid "Premium Support" msgstr "" #: resources/compare-plans-data.php:138 msgid "Receive 1 on 1 technical support via email for any issues. Free support availabe in the WordPress support forum." msgstr "" #: resources/continent.php:3 msgid "Asia" msgstr "" #: resources/continent.php:4 #: resources/countries.php:249 msgid "Antarctica" msgstr "" #: resources/continent.php:5 msgid "Africa" msgstr "" #: resources/continent.php:6 msgid "Europe" msgstr "" #: resources/continent.php:7 msgid "North America" msgstr "" #: resources/continent.php:8 msgid "Oceania" msgstr "" #: resources/continent.php:9 msgid "South America" msgstr "" #: resources/continent.php:10 msgid "Intercontinental" msgstr "" #: resources/continent.php:11 #: resources/countries.php:3 msgid "Unknown" msgstr "" #: resources/countries.php:4 msgid "Rwanda" msgstr "" #: resources/countries.php:5 msgid "Somalia" msgstr "" #: resources/countries.php:6 msgid "Yemen" msgstr "" #: resources/countries.php:7 msgid "Iraq" msgstr "" #: resources/countries.php:8 msgid "Saudi Arabia" msgstr "" #: resources/countries.php:9 msgid "Iran" msgstr "" #: resources/countries.php:10 msgid "Cyprus" msgstr "" #: resources/countries.php:11 msgid "Tanzania" msgstr "" #: resources/countries.php:12 msgid "Syria" msgstr "" #: resources/countries.php:13 msgid "Armenia" msgstr "" #: resources/countries.php:14 msgid "Kenya" msgstr "" #: resources/countries.php:15 msgid "DR Congo" msgstr "" #: resources/countries.php:16 msgid "Djibouti" msgstr "" #: resources/countries.php:17 msgid "Uganda" msgstr "" #: resources/countries.php:18 msgid "Central African Republic" msgstr "" #: resources/countries.php:19 msgid "Seychelles" msgstr "" #: resources/countries.php:20 msgid "Jordan" msgstr "" #: resources/countries.php:21 msgid "Lebanon" msgstr "" #: resources/countries.php:22 msgid "Kuwait" msgstr "" #: resources/countries.php:23 msgid "Oman" msgstr "" #: resources/countries.php:24 msgid "Qatar" msgstr "" #: resources/countries.php:25 msgid "Bahrain" msgstr "" #: resources/countries.php:26 msgid "United Arab Emirates" msgstr "" #: resources/countries.php:27 msgid "Israel" msgstr "" #: resources/countries.php:28 msgid "Turkey" msgstr "" #: resources/countries.php:29 msgid "Ethiopia" msgstr "" #: resources/countries.php:30 msgid "Eritrea" msgstr "" #: resources/countries.php:31 msgid "Egypt" msgstr "" #: resources/countries.php:32 msgid "Sudan" msgstr "" #: resources/countries.php:33 msgid "Greece" msgstr "" #: resources/countries.php:34 msgid "Burundi" msgstr "" #: resources/countries.php:35 msgid "Estonia" msgstr "" #: resources/countries.php:36 msgid "Latvia" msgstr "" #: resources/countries.php:37 msgid "Azerbaijan" msgstr "" #: resources/countries.php:38 msgid "Lithuania" msgstr "" #: resources/countries.php:39 msgid "Svalbard and Jan Mayen" msgstr "" #: resources/countries.php:40 msgid "Georgia" msgstr "" #: resources/countries.php:41 msgid "Moldova" msgstr "" #: resources/countries.php:42 msgid "Belarus" msgstr "" #: resources/countries.php:43 msgid "Finland" msgstr "" #: resources/countries.php:44 msgid "Åland" msgstr "" #: resources/countries.php:45 msgid "Ukraine" msgstr "" #: resources/countries.php:46 msgid "North Macedonia" msgstr "" #: resources/countries.php:47 msgid "Hungary" msgstr "" #: resources/countries.php:48 msgid "Bulgaria" msgstr "" #: resources/countries.php:49 msgid "Albania" msgstr "" #: resources/countries.php:50 msgid "Poland" msgstr "" #: resources/countries.php:51 msgid "Romania" msgstr "" #: resources/countries.php:52 msgid "Kosovo" msgstr "" #: resources/countries.php:53 msgid "Zimbabwe" msgstr "" #: resources/countries.php:54 msgid "Zambia" msgstr "" #: resources/countries.php:55 msgid "Comoros" msgstr "" #: resources/countries.php:56 msgid "Malawi" msgstr "" #: resources/countries.php:57 msgid "Lesotho" msgstr "" #: resources/countries.php:58 msgid "Botswana" msgstr "" #: resources/countries.php:59 msgid "Mauritius" msgstr "" #: resources/countries.php:60 msgid "Eswatini" msgstr "" #: resources/countries.php:61 msgid "Réunion" msgstr "" #: resources/countries.php:62 msgid "South Africa" msgstr "" #: resources/countries.php:63 msgid "Mayotte" msgstr "" #: resources/countries.php:64 msgid "Mozambique" msgstr "" #: resources/countries.php:65 msgid "Madagascar" msgstr "" #: resources/countries.php:66 msgid "Afghanistan" msgstr "" #: resources/countries.php:67 msgid "Pakistan" msgstr "" #: resources/countries.php:68 msgid "Bangladesh" msgstr "" #: resources/countries.php:69 msgid "Turkmenistan" msgstr "" #: resources/countries.php:70 msgid "Tajikistan" msgstr "" #: resources/countries.php:71 msgid "Sri Lanka" msgstr "" #: resources/countries.php:72 msgid "Bhutan" msgstr "" #: resources/countries.php:73 msgid "India" msgstr "" #: resources/countries.php:74 msgid "Maldives" msgstr "" #: resources/countries.php:75 msgid "British Indian Ocean Territory" msgstr "" #: resources/countries.php:76 msgid "Nepal" msgstr "" #: resources/countries.php:77 msgid "Myanmar" msgstr "" #: resources/countries.php:78 msgid "Uzbekistan" msgstr "" #: resources/countries.php:79 msgid "Kazakhstan" msgstr "" #: resources/countries.php:80 msgid "Kyrgyzstan" msgstr "" #: resources/countries.php:81 msgid "French Southern Territories" msgstr "" #: resources/countries.php:82 msgid "Heard Island and McDonald Islands" msgstr "" #: resources/countries.php:83 msgid "Cocos [Keeling] Islands" msgstr "" #: resources/countries.php:84 msgid "Palau" msgstr "" #: resources/countries.php:85 msgid "Vietnam" msgstr "" #: resources/countries.php:86 msgid "Thailand" msgstr "" #: resources/countries.php:87 msgid "Indonesia" msgstr "" #: resources/countries.php:88 msgid "Laos" msgstr "" #: resources/countries.php:89 msgid "Taiwan" msgstr "" #: resources/countries.php:90 msgid "Philippines" msgstr "" #: resources/countries.php:91 msgid "Malaysia" msgstr "" #: resources/countries.php:92 msgid "China" msgstr "" #: resources/countries.php:93 msgid "Hong Kong" msgstr "" #: resources/countries.php:94 msgid "Brunei" msgstr "" #: resources/countries.php:95 msgid "Macao" msgstr "" #: resources/countries.php:96 msgid "Cambodia" msgstr "" #: resources/countries.php:97 msgid "South Korea" msgstr "" #: resources/countries.php:98 msgid "Japan" msgstr "" #: resources/countries.php:99 msgid "North Korea" msgstr "" #: resources/countries.php:100 msgid "Singapore" msgstr "" #: resources/countries.php:101 msgid "Cook Islands" msgstr "" #: resources/countries.php:102 msgid "East Timor" msgstr "" #: resources/countries.php:103 msgid "Russia" msgstr "" #: resources/countries.php:104 msgid "Mongolia" msgstr "" #: resources/countries.php:105 msgid "Australia" msgstr "" #: resources/countries.php:106 msgid "Christmas Island" msgstr "" #: resources/countries.php:107 msgid "Marshall Islands" msgstr "" #: resources/countries.php:108 msgid "Federated States of Micronesia" msgstr "" #: resources/countries.php:109 msgid "Papua New Guinea" msgstr "" #: resources/countries.php:110 msgid "Solomon Islands" msgstr "" #: resources/countries.php:111 msgid "Tuvalu" msgstr "" #: resources/countries.php:112 msgid "Nauru" msgstr "" #: resources/countries.php:113 msgid "Vanuatu" msgstr "" #: resources/countries.php:114 msgid "New Caledonia" msgstr "" #: resources/countries.php:115 msgid "Norfolk Island" msgstr "" #: resources/countries.php:116 msgid "New Zealand" msgstr "" #: resources/countries.php:117 msgid "Fiji" msgstr "" #: resources/countries.php:118 msgid "Libya" msgstr "" #: resources/countries.php:119 msgid "Cameroon" msgstr "" #: resources/countries.php:120 msgid "Senegal" msgstr "" #: resources/countries.php:121 msgid "Congo Republic" msgstr "" #: resources/countries.php:122 msgid "Portugal" msgstr "" #: resources/countries.php:123 msgid "Liberia" msgstr "" #: resources/countries.php:124 msgid "Ivory Coast" msgstr "" #: resources/countries.php:125 msgid "Ghana" msgstr "" #: resources/countries.php:126 msgid "Equatorial Guinea" msgstr "" #: resources/countries.php:127 msgid "Nigeria" msgstr "" #: resources/countries.php:128 msgid "Burkina Faso" msgstr "" #: resources/countries.php:129 msgid "Togo" msgstr "" #: resources/countries.php:130 msgid "Guinea-Bissau" msgstr "" #: resources/countries.php:131 msgid "Mauritania" msgstr "" #: resources/countries.php:132 msgid "Benin" msgstr "" #: resources/countries.php:133 msgid "Gabon" msgstr "" #: resources/countries.php:134 msgid "Sierra Leone" msgstr "" #: resources/countries.php:135 msgid "São Tomé and Príncipe" msgstr "" #: resources/countries.php:136 msgid "Gibraltar" msgstr "" #: resources/countries.php:137 msgid "Gambia" msgstr "" #: resources/countries.php:138 msgid "Guinea" msgstr "" #: resources/countries.php:139 msgid "Chad" msgstr "" #: resources/countries.php:140 msgid "Niger" msgstr "" #: resources/countries.php:141 msgid "Mali" msgstr "" #: resources/countries.php:142 msgid "Western Sahara" msgstr "" #: resources/countries.php:143 msgid "Tunisia" msgstr "" #: resources/countries.php:144 msgid "Spain" msgstr "" #: resources/countries.php:145 msgid "Morocco" msgstr "" #: resources/countries.php:146 msgid "Malta" msgstr "" #: resources/countries.php:147 msgid "Algeria" msgstr "" #: resources/countries.php:148 msgid "Faroe Islands" msgstr "" #: resources/countries.php:149 msgid "Denmark" msgstr "" #: resources/countries.php:150 msgid "Iceland" msgstr "" #: resources/countries.php:151 msgid "United Kingdom" msgstr "" #: resources/countries.php:152 msgid "Switzerland" msgstr "" #: resources/countries.php:153 msgid "Sweden" msgstr "" #: resources/countries.php:154 msgid "Netherlands" msgstr "" #: resources/countries.php:155 msgid "Austria" msgstr "" #: resources/countries.php:156 msgid "Belgium" msgstr "" #: resources/countries.php:157 msgid "Germany" msgstr "" #: resources/countries.php:158 msgid "Luxembourg" msgstr "" #: resources/countries.php:159 msgid "Ireland" msgstr "" #: resources/countries.php:160 msgid "Monaco" msgstr "" #: resources/countries.php:161 msgid "France" msgstr "" #: resources/countries.php:162 msgid "Andorra" msgstr "" #: resources/countries.php:163 msgid "Liechtenstein" msgstr "" #: resources/countries.php:164 msgid "Jersey" msgstr "" #: resources/countries.php:165 msgid "Isle of Man" msgstr "" #: resources/countries.php:166 msgid "Guernsey" msgstr "" #: resources/countries.php:167 msgid "Slovakia" msgstr "" #: resources/countries.php:168 msgid "Czechia" msgstr "" #: resources/countries.php:169 msgid "Norway" msgstr "" #: resources/countries.php:170 msgid "Vatican City" msgstr "" #: resources/countries.php:171 msgid "San Marino" msgstr "" #: resources/countries.php:172 msgid "Italy" msgstr "" #: resources/countries.php:173 msgid "Slovenia" msgstr "" #: resources/countries.php:174 msgid "Montenegro" msgstr "" #: resources/countries.php:175 msgid "Croatia" msgstr "" #: resources/countries.php:176 msgid "Bosnia and Herzegovina" msgstr "" #: resources/countries.php:177 msgid "Angola" msgstr "" #: resources/countries.php:178 msgid "Namibia" msgstr "" #: resources/countries.php:179 msgid "Saint Helena" msgstr "" #: resources/countries.php:180 msgid "Bouvet Island" msgstr "" #: resources/countries.php:181 msgid "Barbados" msgstr "" #: resources/countries.php:182 msgid "Cabo Verde" msgstr "" #: resources/countries.php:183 msgid "Guyana" msgstr "" #: resources/countries.php:184 msgid "French Guiana" msgstr "" #: resources/countries.php:185 msgid "Suriname" msgstr "" #: resources/countries.php:186 msgid "Saint Pierre and Miquelon" msgstr "" #: resources/countries.php:187 msgid "Greenland" msgstr "" #: resources/countries.php:188 msgid "Paraguay" msgstr "" #: resources/countries.php:189 msgid "Uruguay" msgstr "" #: resources/countries.php:190 msgid "Brazil" msgstr "" #: resources/countries.php:191 msgid "Falkland Islands" msgstr "" #: resources/countries.php:192 msgid "South Georgia and the South Sandwich Islands" msgstr "" #: resources/countries.php:193 msgid "Jamaica" msgstr "" #: resources/countries.php:194 msgid "Dominican Republic" msgstr "" #: resources/countries.php:195 msgid "Cuba" msgstr "" #: resources/countries.php:196 msgid "Martinique" msgstr "" #: resources/countries.php:197 msgid "Bahamas" msgstr "" #: resources/countries.php:198 msgid "Bermuda" msgstr "" #: resources/countries.php:199 msgid "Anguilla" msgstr "" #: resources/countries.php:200 msgid "Trinidad and Tobago" msgstr "" #: resources/countries.php:201 msgid "St Kitts and Nevis" msgstr "" #: resources/countries.php:202 msgid "Dominica" msgstr "" #: resources/countries.php:203 msgid "Antigua and Barbuda" msgstr "" #: resources/countries.php:204 msgid "Saint Lucia" msgstr "" #: resources/countries.php:205 msgid "Turks and Caicos Islands" msgstr "" #: resources/countries.php:206 msgid "Aruba" msgstr "" #: resources/countries.php:207 msgid "British Virgin Islands" msgstr "" #: resources/countries.php:208 msgid "Saint Vincent and the Grenadines" msgstr "" #: resources/countries.php:209 msgid "Montserrat" msgstr "" #: resources/countries.php:210 msgid "Saint Martin" msgstr "" #: resources/countries.php:211 msgid "Saint Barthélemy" msgstr "" #: resources/countries.php:212 msgid "Guadeloupe" msgstr "" #: resources/countries.php:213 msgid "Grenada" msgstr "" #: resources/countries.php:214 msgid "Cayman Islands" msgstr "" #: resources/countries.php:215 msgid "Belize" msgstr "" #: resources/countries.php:216 msgid "El Salvador" msgstr "" #: resources/countries.php:217 msgid "Guatemala" msgstr "" #: resources/countries.php:218 msgid "Honduras" msgstr "" #: resources/countries.php:219 msgid "Nicaragua" msgstr "" #: resources/countries.php:220 msgid "Costa Rica" msgstr "" #: resources/countries.php:221 msgid "Venezuela" msgstr "" #: resources/countries.php:222 msgid "Ecuador" msgstr "" #: resources/countries.php:223 msgid "Colombia" msgstr "" #: resources/countries.php:224 msgid "Panama" msgstr "" #: resources/countries.php:225 msgid "Haiti" msgstr "" #: resources/countries.php:226 msgid "Argentina" msgstr "" #: resources/countries.php:227 msgid "Chile" msgstr "" #: resources/countries.php:228 msgid "Bolivia" msgstr "" #: resources/countries.php:229 msgid "Peru" msgstr "" #: resources/countries.php:230 msgid "Mexico" msgstr "" #: resources/countries.php:231 msgid "French Polynesia" msgstr "" #: resources/countries.php:232 msgid "Pitcairn Islands" msgstr "" #: resources/countries.php:233 msgid "Kiribati" msgstr "" #: resources/countries.php:234 msgid "Tokelau" msgstr "" #: resources/countries.php:235 msgid "Tonga" msgstr "" #: resources/countries.php:236 msgid "Wallis and Futuna" msgstr "" #: resources/countries.php:237 msgid "Samoa" msgstr "" #: resources/countries.php:238 msgid "Niue" msgstr "" #: resources/countries.php:239 msgid "Northern Mariana Islands" msgstr "" #: resources/countries.php:240 msgid "Guam" msgstr "" #: resources/countries.php:241 msgid "Puerto Rico" msgstr "" #: resources/countries.php:242 msgid "U.S. Virgin Islands" msgstr "" #: resources/countries.php:243 msgid "U.S. Minor Outlying Islands" msgstr "" #: resources/countries.php:244 msgid "American Samoa" msgstr "" #: resources/countries.php:245 msgid "Canada" msgstr "" #: resources/countries.php:246 msgid "United States" msgstr "" #: resources/countries.php:247 msgid "Palestine" msgstr "" #: resources/countries.php:248 msgid "Serbia" msgstr "" #: resources/countries.php:250 msgid "Sint Maarten" msgstr "" #: resources/countries.php:251 msgid "Curaçao" msgstr "" #: resources/countries.php:252 msgid "Bonaire, Sint Eustatius, and Saba" msgstr "" #: resources/countries.php:253 msgid "South Sudan" msgstr "" #: views/app-widgets/acl-rules.php:10 msgid "Login Access Rules" msgstr "" #: views/app-widgets/acl-rules.php:14 #: views/app-widgets/acl-rules.php:63 msgid "Documentation" msgstr "" #: views/app-widgets/acl-rules.php:24 #: views/app-widgets/acl-rules.php:33 #: views/app-widgets/acl-rules.php:73 #: views/app-widgets/acl-rules.php:82 #: views/app-widgets/event-log.php:43 msgid "Pattern" msgstr "" #: views/app-widgets/acl-rules.php:25 #: views/app-widgets/acl-rules.php:74 #: views/app-widgets/event-log.php:41 msgid "Rule" msgstr "" #: views/app-widgets/acl-rules.php:26 #: views/app-widgets/acl-rules.php:75 msgid "Action" msgstr "" #: views/app-widgets/acl-rules.php:37 #: views/app-widgets/acl-rules.php:86 #: views/app-widgets/country-access-rules.php:55 msgid "Deny" msgstr "" #: views/app-widgets/acl-rules.php:38 #: views/app-widgets/acl-rules.php:87 msgid "Allow" msgstr "" #: views/app-widgets/acl-rules.php:39 #: views/app-widgets/acl-rules.php:88 msgid "Pass" msgstr "" #: views/app-widgets/acl-rules.php:44 #: views/app-widgets/acl-rules.php:93 #: views/app-widgets/country-access-rules.php:26 msgid "Add" msgstr "" #: views/app-widgets/acl-rules.php:59 msgid "IP Access Rules" msgstr "" #: views/app-widgets/active-lockouts.php:8 msgid "Active Lockouts" msgstr "" #: views/app-widgets/active-lockouts.php:13 msgid "Reload" msgstr "" #: views/app-widgets/active-lockouts.php:22 #: views/app-widgets/event-log.php:38 #: views/app-widgets/login-attempts.php:51 msgid "IP" msgstr "" #: views/app-widgets/active-lockouts.php:23 #: views/app-widgets/event-log.php:40 #: views/app-widgets/login-attempts.php:50 msgid "Login" msgstr "" #: views/app-widgets/active-lockouts.php:24 msgid "Count" msgstr "" #: views/app-widgets/active-lockouts.php:25 msgid "Expires in (minutes)" msgstr "" #: views/app-widgets/country-access-rules.php:14 msgid "Country Access Rules" msgstr "" #: views/app-widgets/country-access-rules.php:15 msgid "To block all countries but your own add your country as Allow Only rule" msgstr "" #: views/app-widgets/country-access-rules.php:22 msgid "these countries:" msgstr "" #: views/app-widgets/country-access-rules.php:56 msgid "Allow only" msgstr "" #: views/app-widgets/event-log.php:14 msgid "Event Log" msgstr "" #: views/app-widgets/event-log.php:19 msgid "Full Logs" msgstr "" #: views/app-widgets/event-log.php:24 msgid "All attempts blocked by access rules are hidden by default. You can see the full log at this link." msgstr "" #: views/app-widgets/event-log.php:37 #: views/app-widgets/login-attempts.php:49 msgid "Time" msgstr "" #: views/app-widgets/event-log.php:39 #: views/tab-logs-local.php:220 msgid "Gateway" msgstr "" #: views/app-widgets/event-log.php:42 msgid "Reason" msgstr "" #: views/app-widgets/event-log.php:44 msgid "Attempts Left" msgstr "" #: views/app-widgets/event-log.php:45 msgid "Lockout Duration" msgstr "" #: views/app-widgets/event-log.php:46 msgid "Actions" msgstr "" #: views/app-widgets/event-log.php:54 #: views/app-widgets/login-attempts.php:62 msgid "Load older events" msgstr "" #: views/app-widgets/event-log.php:61 msgid "Loading older events, skipping ACL events. Full logs" msgstr "" #: views/app-widgets/login-attempts.php:24 #: views/app-widgets/login-attempts.php:38 msgid "Successful Login Attempts" msgstr "" #: views/app-widgets/login-attempts.php:28 msgid " View more" msgstr "" #: views/app-widgets/login-attempts.php:52 msgid "Role" msgstr "" #: views/app-widgets/login-attempts.php:84 msgid "View a complete history of successful logins for your WordPress account" msgstr "" #: views/app-widgets/login-attempts.php:87 msgid "All logs are stored in the cloud to ensure malicious users are unable to delete or manipulate site login data." msgstr "" #: views/app-widgets/login-attempts.php:91 msgid "This feature is only available for
Premium users." msgstr "" #: views/app-widgets/login-attempts.php:93 msgid "This feature is only available for
Premium and Micro Cloud (FREE!) users." msgstr "" #: views/chart-circle-failed-attempts-today.php:40 #: views/chart-circle-failed-attempts-today.php:75 msgid "Hooray! Zero failed login attempts (past 24 hrs)" msgstr "" #: views/chart-circle-failed-attempts-today.php:45 #: views/chart-circle-failed-attempts-today.php:79 msgid "%d failed login attempt " msgid_plural "%d failed login attempts " msgstr[0] "" msgstr[1] "" #: views/chart-circle-failed-attempts-today.php:46 #: views/chart-circle-failed-attempts-today.php:80 msgid "(past 24 hrs)" msgstr "" #: views/chart-circle-failed-attempts-today.php:47 #: views/chart-circle-failed-attempts-today.php:81 msgid "Your site is currently at a low risk for brute force activity" msgstr "" #: views/chart-circle-failed-attempts-today.php:51 msgid "Warning: Your site has experienced over 100 failed login attempts in the past 24 hours" msgstr "" #: views/chart-circle-failed-attempts-today.php:55 #: views/chart-circle-failed-attempts-today.php:87 msgid "Based on your level of brute force activity, we recommend upgrading to premium to access features to reduce failed logins and improve site performance." msgstr "" #: views/chart-circle-failed-attempts-today.php:59 msgid "Based on your level of brute force activity, we recommend free Micro Cloud upgrade to access features to reduce failed logins and improve site performance." msgstr "" #: views/chart-circle-failed-attempts-today.php:93 msgid "Failed Login Attempts Today" msgstr "" #: views/chart-circle-failed-attempts-today.php:102 #: views/chart-failed-attempts.php:36 #: views/chart-failed-attempts.php:121 #: views/chart-failed-attempts.php:131 msgid "Failed Login Attempts" msgstr "" #: views/chart-circle-failed-attempts-today.php:108 #: views/chart-failed-attempts.php:137 msgid "An IP that hasn't been previously denied by the cloud app, but has made an unsuccessful login attempt on your website." msgstr "" #: views/chart-circle-failed-attempts-today.php:109 #: views/chart-failed-attempts.php:138 msgid "An IP that has made an unsuccessful login attempt on your website." msgstr "" #: views/chart-circle-failed-attempts-today.php:120 msgid "Cloud protection enabled" msgstr "" #: views/chart-failed-attempts.php:44 #: views/chart-failed-attempts.php:147 #: views/chart-failed-attempts.php:244 msgid "Requests" msgstr "" #: views/chart-failed-attempts.php:152 msgid "A request is utilized when the cloud validates whether an IP address is allowed to attempt a login, which also includes denied logins." msgstr "" #: views/chart-failed-attempts.php:162 msgid "Monthly Usage: " msgstr "" #: views/chart-failed-attempts.php:227 msgid "Attempts" msgstr "" #: views/emails/failed-login.php:243 msgid "Hello {name}," msgstr "" #: views/emails/failed-login.php:244 msgid "Hello," msgstr "" #: views/emails/failed-login.php:246 msgid "This notification was sent automatically via Limit Login Attempts Reloaded Plugin." msgstr "" #: views/emails/failed-login.php:248 msgid "This is installed on your {domain} WordPress site." msgstr "" #: views/emails/failed-login.php:250 msgid "The failed login details include:" msgstr "" #: views/emails/failed-login.php:253 msgid "{attempts_count} failed login attempts ({lockouts_count} lockout(s)) from IP {ip_address}" msgstr "" #: views/emails/failed-login.php:256 msgid "Last user attempted: {username}" msgstr "" #: views/emails/failed-login.php:258 msgid "IP was blocked for {blocked_duration}" msgstr "" #: views/emails/failed-login.php:262 msgid "Please visit your WordPress dashboard for additional details, investigation options, and help articles." msgstr "" #: views/emails/failed-login.php:276 msgid "Go to Dashboard" msgstr "" #: views/emails/failed-login.php:292 msgid "Experiencing frequent attacks or degraded performance? You can now receive premium protection for FREE with " msgstr "" #: views/emails/failed-login.php:295 msgid "Micro Cloud©." msgstr "" #: views/emails/failed-login.php:296 msgid " Go to your LLAR dashboard to get starte." msgstr "" #: views/emails/failed-login.php:305 msgid "Frequently Asked Questions" msgstr "" #: views/emails/failed-login.php:307 msgid "What is a failed login attempt?" msgstr "" #: views/emails/failed-login.php:308 msgid "A failed login attempt is when an IP address uses incorrect credentials to log into your website. The IP address could be a human operator, or a program designed to guess your password." msgstr "" #: views/emails/failed-login.php:310 msgid "Why am I getting these emails?" msgstr "" #: views/emails/failed-login.php:311 msgid "You are receiving this email because there was a failed login attempt on your website {domain}. If you'd like to opt out of these notifications, please click the “Unsubscribe” link below." msgstr "" #: views/emails/failed-login.php:313 msgid "How dangerous is this failed login attempt?" msgstr "" #: views/emails/failed-login.php:314 msgid "Unfortunately, we cannot determine the severity of the IP address with the free version of the plugin. If the IP continues to make attempts and is not recognized by your organization, then it's likely to have malicious intent. Depending on how frequent the attacks are, you may experience performance issues. In the plugin dashboard, you can investigate the frequency of the failed login attempts in the logs and take additional steps to protect your website (i.e. adding them to the block list). You can visit the " msgstr "" #: views/emails/failed-login.php:317 msgid "Limit Login Attempts Reloaded website" msgstr "" #: views/emails/failed-login.php:317 msgid " for more information on our premium services, which can automatically block and detect malicious IP addresses." msgstr "" #: views/emails/failed-login.php:327 msgid "This alert was sent by your website where Limit Login Attempts Reloaded free version is installed and you are listed as the admin. If you are a GoDaddy customer, the plugin is installed into a must-use (MU) folder." msgstr "" #: views/emails/failed-login.php:347 msgid "Unsubscribe" msgstr "" #: views/emails/failed-login.php:348 msgid "from these notifications." msgstr "" #: views/micro-cloud-modal.php:26 msgid "Get Started with Micro Cloud for FREE" msgstr "" #: views/micro-cloud-modal.php:29 msgid "Help us secure our network and we’ll provide you with limited access to our premium features including our login firewall, IP Intelligence, and performance optimizer." msgstr "" #: views/micro-cloud-modal.php:32 msgid "Please note that some domains have very high brute force activity, which may cause Micro Cloud to run out of resources in under 24 hours. We will send an email when resources are fully utilized and the app reverts back to the free version. You may upgrade to one of our premium plans to prevent the app from reverting." msgstr "" #: views/micro-cloud-modal.php:43 msgid "How To Activate Micro Cloud" msgstr "" #: views/micro-cloud-modal.php:48 #: views/onboarding-popup.php:187 msgid "Please enter the email that will receive activation confirmation" msgstr "" #: views/micro-cloud-modal.php:53 #: views/onboarding-popup.php:142 #: views/onboarding-popup.php:190 #: views/tab-settings.php:562 #: views/tab-settings.php:586 msgid "Your email" msgstr "" #: views/micro-cloud-modal.php:61 #: views/onboarding-popup.php:196 msgid "I consent to registering my domain name %s with the Limit Login Attempts Reloaded cloud service." msgstr "" #: views/micro-cloud-modal.php:68 #: views/onboarding-popup.php:158 #: views/onboarding-popup.php:230 msgid "Continue" msgstr "" #: views/micro-cloud-modal.php:73 msgid "By signing up you agree to our terms of service and privacy policy." msgstr "" #: views/micro-cloud-modal.php:82 #: views/onboarding-popup.php:223 msgid "The server is not working, try again later" msgstr "" #: views/micro-cloud-modal.php:90 msgid "Micro Cloud has been activated!" msgstr "" #: views/micro-cloud-modal.php:95 #: views/onboarding-popup.php:253 msgid "Go To Dashboard" msgstr "" #: views/onboarding-popup.php:35 #: views/onboarding-popup.php:60 msgid "Welcome" msgstr "" #: views/onboarding-popup.php:41 msgid "Notifications" msgstr "" #: views/onboarding-popup.php:47 msgid "Limited Upgrade" msgstr "" #: views/onboarding-popup.php:53 msgid "Completion" msgstr "" #: views/onboarding-popup.php:65 msgid "Add your Setup Code" msgstr "" #: views/onboarding-popup.php:68 msgid "Your Setup Code" msgstr "" #: views/onboarding-popup.php:70 msgid "Activate" msgstr "" #: views/onboarding-popup.php:77 msgid "The Setup Code can be found in your email if you have subscribed to premium" msgstr "" #: views/onboarding-popup.php:84 msgid "Not A Premium User?" msgstr "" #: views/onboarding-popup.php:87 msgid "We highly recommend upgrading to premium for the best protection against brute force attacks and unauthorized logins" msgstr "" #: views/onboarding-popup.php:91 msgid "Detect, counter, and deny unauthorized logins with IP Intelligence" msgstr "" #: views/onboarding-popup.php:94 msgid "Absorb failed login activity to improve site performance" msgstr "" #: views/onboarding-popup.php:97 msgid "Block IPs by country, premium support, and much more!" msgstr "" #: views/onboarding-popup.php:113 msgid "Yes, show me plan options" msgstr "" #: views/onboarding-popup.php:116 msgid "No, I don’t want advanced protection" msgstr "" #: views/onboarding-popup.php:122 #: views/onboarding-popup.php:162 #: views/onboarding-popup.php:227 msgid "Skip" msgstr "" #: views/onboarding-popup.php:137 msgid "Notification Settings" msgstr "" #: views/onboarding-popup.php:146 msgid "This email will receive notifications of unauthorized access to your website. You may turn this off in your settings." msgstr "" #: views/onboarding-popup.php:151 msgid "Sign me up for the LLAR newsletter to receive important security alerts, plugin updates, and helpful guides." msgstr "" #: views/onboarding-popup.php:176 msgid "Limited Upgrade (Free)" msgstr "" #: views/onboarding-popup.php:181 msgid "Help us secure our network and we’ll provide you with limited access to our premium features including our login firewall, IP intelligence, and performance optimizer (up to 1,000 requests monthly)." msgstr "" #: views/onboarding-popup.php:184 msgid "Would you like to opt-in?" msgstr "" #: views/onboarding-popup.php:206 msgid "Sign Me Up" msgstr "" #: views/onboarding-popup.php:212 msgid "You may opt-out of this program at any time. You accept our terms of service by participating in this program." msgstr "" #: views/onboarding-popup.php:219 msgid "Congrats! Your website is now activated for Micro Cloud. Account information has been emailed to you for your reference." msgstr "" #: views/onboarding-popup.php:245 msgid "Thank you for completing the setup" msgstr "" #: views/options-page.php:57 msgid "You have exhausted your monthly quota of free Micro Cloud requests. The plugin has now reverted to the free version. Upgrade to the premium version today to maintain cloud protection and advanced features." msgstr "" #: views/options-page.php:72 msgid "Enjoying Micro Cloud? To prevent interruption of the cloud app, Upgrade to Premium today" msgstr "" #: views/options-page.php:86 msgid "Do you want Limit Login Attempts Reloaded to provide the latest version automatically?" msgstr "" #: views/options-page.php:88 msgid "Yes, enable auto-update" msgstr "" #: views/options-page.php:92 msgid "No thanks" msgstr "" #: views/options-page.php:116 msgid "Account Login" msgstr "" #: views/options-page.php:159 msgid "Premium / Extensions" msgstr "" #: views/options-page.php:164 msgid "Failover" msgstr "" #: views/options-page.php:169 msgid "Automatic switch to free version when premium stops working (usually due to non-payment or exceeding monthly resource budget)." msgstr "" #: views/tab-dashboard.php:44 msgid "Enable Micro Cloud (FREE)" msgstr "" #: views/tab-dashboard.php:50 msgid "Help us secure our network by providing access to your login IP data." msgstr "" #: views/tab-dashboard.php:53 msgid "In return, receive access to our premium features up to 1,000 requests per month, and 100 for each subsequent month." msgstr "" #: views/tab-dashboard.php:56 msgid "Once the allocated requests are consumed, the premium app will switch back to the free version and reset the following month." msgstr "" #: views/tab-dashboard.php:67 #: views/tab-settings.php:95 msgid "Learn More" msgstr "" #: views/tab-dashboard.php:71 #: views/tab-settings.php:99 #: views/tab-settings.php:304 #: views/tab-settings.php:416 msgid "Get Started" msgstr "" #: views/tab-dashboard.php:75 msgid "* A request is utilized when our cloud app validates an IP before it is able to perform a login attempt." msgstr "" #: views/tab-dashboard.php:83 msgid "Premium Protection Disabled" msgstr "" #: views/tab-dashboard.php:87 msgid "As a free user, your local server is absorbing the traffic brought on by brute force attacks, potentially slowing down your website. Upgrade to Premium today to outsource these attacks through our cloud app, and slow down future attacks with advanced throttling." msgstr "" #: views/tab-dashboard.php:113 msgid "Tools" msgstr "" #: views/tab-dashboard.php:117 msgid "View lockouts logs, block or whitelist usernames or IPs, and more." msgstr "" #: views/tab-dashboard.php:132 msgid "Find the documentation and help you need." msgstr "" #: views/tab-dashboard.php:143 msgid "Global Options" msgstr "" #: views/tab-dashboard.php:147 msgid "Many options such as notifications, alerts, premium status, and more." msgstr "" #: views/tab-dashboard.php:183 msgid "Login Security Checklist" msgstr "" #: views/tab-dashboard.php:186 msgid "Recommended tasks to greatly improve the security of your website." msgstr "" #: views/tab-dashboard.php:193 msgid "Enable Email Notifications" msgstr "" #: views/tab-dashboard.php:197 msgid "Enable email notifications to receive timely alerts and updates via email." msgstr "" #: views/tab-dashboard.php:205 msgid "Implement strong account policies" msgstr "" #: views/tab-dashboard.php:207 #: views/tab-dashboard.php:226 msgid "Check when done." msgstr "" #: views/tab-dashboard.php:210 msgid "Read our guide on implementing and enforcing strong password policies in your organization." msgstr "" #: views/tab-dashboard.php:218 msgid "Deny/Allow countries" msgstr "" #: views/tab-dashboard.php:221 msgid "Deny/Allow countries (Premium+ Users)" msgstr "" #: views/tab-dashboard.php:232 msgid "Allow or Deny countries to ensure only legitimate users login." msgstr "" #: views/tab-dashboard.php:240 msgid "Turn on plugin auto-updates" msgstr "" #: views/tab-dashboard.php:244 msgid "Enable automatic updates to ensure that the plugin stays current with the latest software patches and features." msgstr "" #: views/tab-dashboard.php:246 msgid "Enable automatic updates to ensure that the plugin stays current with the latest software patches and features." msgstr "" #: views/tab-dashboard.php:257 msgid "Upgrade to our premium version for advanced protection." msgstr "" #: views/tab-dashboard.php:263 msgid "Upgrade to our premium version for advanced protection." msgstr "" #: views/tab-debug.php:58 msgid "Debug Info" msgstr "" #: views/tab-debug.php:65 msgid "Copy the contents of the window and provide to support." msgstr "" #: views/tab-debug.php:70 msgid "Version" msgstr "" #: views/tab-debug.php:77 msgid "Start Over" msgstr "" #: views/tab-debug.php:82 msgid "You can start over the onboarding process by clicking this button. All existing data will remain unchanged." msgstr "" #: views/tab-debug.php:90 msgid "Reset" msgstr "" #: views/tab-help.php:20 msgid "Upgrade Now to Access Premium Support" msgstr "" #: views/tab-help.php:23 msgid "Our technical support team is available by email to help
with any questions." msgstr "" #: views/tab-help.php:28 msgid "Upgrade To Premium" msgstr "" #: views/tab-help.php:34 msgid "Free Support" msgstr "" #: views/tab-help.php:37 msgid "Support for free customers is available via our forums page on WordPress.org.
The majority of requests receive an answer within a few days." msgstr "" #: views/tab-help.php:42 msgid "Go To Support Forums" msgstr "" #: views/tab-help.php:51 msgid "GDPR Information" msgstr "" #: views/tab-help.php:55 msgid "Software Documentation" msgstr "" #: views/tab-help.php:62 msgid "All Documentation" msgstr "" #: views/tab-help.php:68 msgid "Cloud Service & Security" msgstr "" #: views/tab-help.php:70 msgid "Questions regarding the cloud service including how to activate, logs and storage, and compliance." msgstr "" #: views/tab-help.php:76 msgid "Technical Questions" msgstr "" #: views/tab-help.php:78 msgid "Popular technical questions about the service including admin blocking, definitions, and email notifications." msgstr "" #: views/tab-help.php:83 msgid "Accounts & Billing" msgstr "" #: views/tab-help.php:85 msgid "Questions regarding updating billing info, cancellation, and expiration." msgstr "" #: views/tab-help.php:91 msgid "Pre-sales Questions" msgstr "" #: views/tab-help.php:93 msgid "Questions regarding premium software sales." msgstr "" #: views/tab-help.php:101 msgid "Top Topics and Questions" msgstr "" #: views/tab-help.php:107 msgid "How do I know if I'm under attack?" msgstr "" #: views/tab-help.php:113 msgid "How can I tell that the premium plugin is working?" msgstr "" #: views/tab-help.php:119 msgid "What do I do if the admin gets blocked?" msgstr "" #: views/tab-help.php:125 msgid "Why am I still seeing login attempts even after the IP got blocked?" msgstr "" #: views/tab-help.php:131 msgid "Could these failed login attempts be fake?" msgstr "" #: views/tab-help.php:137 msgid "How does the login firewall work?" msgstr "" #: views/tab-help.php:143 msgid "What happens if my site exceeds the request limits in the plan?" msgstr "" #: views/tab-help.php:149 msgid "What do I do if all users get blocked?" msgstr "" #: views/tab-help.php:155 msgid "I just installed LLAR and I'm already getting several failed login attempts" msgstr "" #: views/tab-help.php:161 msgid "What URLs are being attacked and protected?" msgstr "" #: views/tab-help.php:176 msgid "Our technical support team is available by email to help with any questions." msgstr "" #: views/tab-help.php:181 msgid "Contact Support" msgstr "" #: views/tab-logs-custom.php:26 msgid "Your Micro Cloud plan has exhausted its requests for the month, which is required to operate the Login Firewall." msgstr "" #: views/tab-logs-custom.php:31 msgid "You can Upgrade to Premium to increase requests." msgstr "" #: views/tab-logs-custom.php:36 msgid "Or" msgstr "" #: views/tab-logs-custom.php:39 msgid "Switch to the failover to access IP management tools with the free version." msgstr "" #: views/tab-logs-local.php:35 msgid "Statistics" msgstr "" #: views/tab-logs-local.php:45 msgid "Total lockouts" msgstr "" #: views/tab-logs-local.php:50 msgid "Reset Counter" msgstr "" #: views/tab-logs-local.php:53 msgid "%d lockout since last reset" msgid_plural "%d lockouts since last reset" msgstr[0] "" msgstr[1] "" #: views/tab-logs-local.php:57 msgid "No lockouts yet" msgstr "" #: views/tab-logs-local.php:64 msgid "Active lockouts" msgstr "" #: views/tab-logs-local.php:68 msgid "Restore Lockouts" msgstr "" #: views/tab-logs-local.php:71 msgid "%d IP is currently blocked from trying to log in" msgstr "" #: views/tab-logs-local.php:88 msgid "Safelist" msgstr "" #: views/tab-logs-local.php:93 #: views/tab-logs-local.php:116 msgid "One IP or IP range (1.2.3.4-5.6.7.8) per line" msgstr "" #: views/tab-logs-local.php:101 #: views/tab-logs-local.php:124 msgid "One Username per line" msgstr "" #: views/tab-logs-local.php:111 msgid "Denylist" msgstr "" #: views/tab-logs-local.php:132 msgid "Automate your denylist with IP intelligence when you upgrade to premium." msgstr "" #: views/tab-logs-local.php:142 #: views/tab-settings.php:467 #: views/tab-settings.php:807 msgid "Save Settings" msgstr "" #: views/tab-logs-local.php:151 msgid "Upgrade To Premium For Our Login Firewall" msgstr "" #: views/tab-logs-local.php:154 #: views/tab-logs-local.php:260 #: views/tab-settings.php:296 #: views/tab-settings.php:408 msgid "Try For FREE" msgstr "" #: views/tab-logs-local.php:161 msgid "Identify & Counter New Threats With IP Intelligence" msgstr "" #: views/tab-logs-local.php:167 msgid "Access Active Databases Of Malicious IPs To Bolster Defenses" msgstr "" #: views/tab-logs-local.php:173 msgid "Unblock The Blocked Admin With Ease" msgstr "" #: views/tab-logs-local.php:179 msgid "Deny IPs By Country" msgstr "" #: views/tab-logs-local.php:194 msgid "Lockout log" msgstr "" #: views/tab-logs-local.php:202 msgid "Clear Log" msgstr "" #: views/tab-logs-local.php:206 msgid "Upgrade today to optimize or unload your DB by moving logs to the cloud." msgstr "" #: views/tab-logs-local.php:217 msgid "Date" msgstr "" #: views/tab-logs-local.php:218 msgctxt "Internet address" msgid "IP" msgstr "" #: views/tab-logs-local.php:219 msgid "Tried to log in as" msgstr "" #: views/tab-logs-local.php:226 msgid "F d, Y H:i" msgstr "" #: views/tab-logs-local.php:231 msgid " lockouts" msgstr "" #: views/tab-logs-local.php:240 msgid "Unlock" msgstr "" #: views/tab-logs-local.php:243 msgid "Unlocked" msgstr "" #: views/tab-logs-local.php:257 msgid "Upgrade Today For Enhanced Logs & IP Intelligence" msgstr "" #: views/tab-logs-local.php:267 msgid "Enhanced Logs Tell You Exactly Which IPs Are Attempting Logins" msgstr "" #: views/tab-logs-local.php:273 msgid "Identify & Counter New Threats With Ease" msgstr "" #: views/tab-logs-local.php:279 msgid "Automatically Add Malicious IPs To Your Deny List" msgstr "" #: views/tab-logs-local.php:285 msgid "Unblock The Blocked Admins Effortlessly" msgstr "" #: views/tab-premium.php:30 msgid "Limit Login Attempts Reloaded Micro Cloud" msgstr "" #: views/tab-premium.php:32 msgid "Limit Login Attempts Reloaded Premium" msgstr "" #: views/tab-premium.php:38 msgid "Full feature list" msgstr "" #: views/tab-premium.php:43 msgid "Pre-sales FAQs" msgstr "" #: views/tab-premium.php:48 msgid "Ask a pre-sales question" msgstr "" #: views/tab-premium.php:53 msgid "Support" msgstr "" #: views/tab-premium.php:61 msgid "Get It Here" msgstr "" #: views/tab-premium.php:68 msgid "You are currently using the free version of Limit Login Attempts Reloaded." msgstr "" #: views/tab-premium.php:70 msgid "If you purchased a premium plan, check your email for setup instructions (Setup Code included)" msgstr "" #: views/tab-premium.php:74 msgid "You are currently using Micro Cloud, which provides access to premium cloud app on a limited basis. To prevent interruption, upgrade to one of our paid plans below." msgstr "" #: views/tab-premium.php:76 msgid "You are currently using the premium version of Limit Login Attempts Reloaded." msgstr "" #: views/tab-premium.php:85 msgid "Why Should I Consider Premium?" msgstr "" #: views/tab-premium.php:88 msgid "Although the free version offers basic protection, the premium version includes an important feature called IP Intelligence. With IP intelligence, your website will be able to identify malicious IPs before they attempt a login, and absorb them into the cloud to save system resources. Your site will not only be more secure, but will operate at its optimal performance." msgstr "" #: views/tab-premium.php:95 msgid "Features comparison" msgstr "" #: views/tab-settings.php:64 msgid "App Settings" msgstr "" #: views/tab-settings.php:67 msgid "The app absorbs the main load caused by brute-force attacks, analyzes login attempts, and blocks unwanted visitors. It provides other service functions as well." msgstr "" #: views/tab-settings.php:73 msgid "Micro Cloud" msgstr "" #: views/tab-settings.php:78 msgid "Micro Cloud is a limited upgrade to our cloud app that provides complimentary access to our premium features" msgstr "" #: views/tab-settings.php:85 msgid "Help us secure our network by sharing your login IP data. In return, receive limited access to our premium features up to 1,000 requests for the first month, and 100 requests each subsequent month. Once requests are exceeded for a given month, the premium app will switch to FREE and reset the following month." msgstr "" #: views/tab-settings.php:88 msgid "* Requests are utilized when the cloud app validates an IP address before it is able to perform a login." msgstr "" #: views/tab-settings.php:107 msgid "Active App" msgstr "" #: views/tab-settings.php:112 msgid "Switches from free version (local) to premium (cloud)." msgstr "" #: views/tab-settings.php:120 msgid "Local (Free version)" msgstr "" #: views/tab-settings.php:125 msgid "Cloud App (Premium version)" msgstr "" #: views/tab-settings.php:132 msgid "Get advanced protection by upgrading to our Cloud App." msgstr "" #: views/tab-settings.php:143 msgid "Local App" msgstr "" #: views/tab-settings.php:147 msgid "Lockout" msgstr "" #: views/tab-settings.php:152 msgid "Set lockout limits based on failed attempts." msgstr "" #: views/tab-settings.php:161 msgid "allowed retries" msgstr "" #: views/tab-settings.php:166 msgid "Number of failed attempts allowed before locking out." msgstr "" #: views/tab-settings.php:174 msgid "minutes lockout" msgstr "" #: views/tab-settings.php:179 msgid "Lockout time in minutes." msgstr "" #: views/tab-settings.php:186 msgid "lockouts increase lockout time to" msgstr "" #: views/tab-settings.php:190 msgid "hours" msgstr "" #: views/tab-settings.php:195 msgid "After the specified number of lockouts the lockout time will increase by specified hours." msgstr "" #: views/tab-settings.php:203 msgid "hours until retries are reset" msgstr "" #: views/tab-settings.php:208 msgid "Time in hours before blocks are removed." msgstr "" #: views/tab-settings.php:214 msgid "After a specific IP address fails to log in %1$s times, a lockout lasting %2$s minutes is activated. If additional failed attempts occur within %3$s hours and lead to another lockout, once their combined total hits %4$s, the %2$s minutes duration is extended to %5$s hours. The lockout will be lifted once %3$s hours have passed since the last lockout incident." msgstr "" #: views/tab-settings.php:225 msgid "Trusted IP Origins" msgstr "" #: views/tab-settings.php:230 msgid "Server variables containing IP addresses." msgstr "" #: views/tab-settings.php:240 msgid "Specify the origins you trust in order of priority, separated by commas. We strongly recommend that you do not use anything other than REMOTE_ADDR since other origins can be easily faked. Examples: HTTP_X_FORWARDED_FOR, HTTP_CF_CONNECTING_IP, HTTP_X_SUCURI_CLIENTIP" msgstr "" #: views/tab-settings.php:249 #: views/tab-settings.php:404 msgid "Why Use Our Premium Cloud App?" msgstr "" #: views/tab-settings.php:255 #: views/tab-settings.php:424 msgid "Absorb site load caused by attacks" msgstr "" #: views/tab-settings.php:261 #: views/tab-settings.php:430 msgid "Use intelligent IP denial/unblocking technology" msgstr "" #: views/tab-settings.php:268 #: views/tab-settings.php:436 msgid "Sync the allow/deny/pass lists between multiple domains" msgstr "" #: views/tab-settings.php:275 #: views/tab-settings.php:442 msgid "Get premium support" msgstr "" #: views/tab-settings.php:282 #: views/tab-settings.php:448 msgid "Run auto backups of access control lists, lockouts and logs" msgstr "" #: views/tab-settings.php:289 #: views/tab-settings.php:454 msgid "No contract - cancel anytime" msgstr "" #: views/tab-settings.php:300 #: views/tab-settings.php:412 msgid "Upgrade" msgstr "" #: views/tab-settings.php:311 msgid "Limit Login Attempts Reloaded Cloud App" msgstr "" #: views/tab-settings.php:312 #: views/tab-settings.php:317 msgid "Setup Code" msgstr "" #: views/tab-settings.php:322 msgid "This is the code you receive via email once you subscribe to the LLAR premium cloud app. (example xxxxxxxxxxxxx=yek?putes/1v/moc.stpmettanigoltimil.ipa)" msgstr "" #: views/tab-settings.php:330 msgid "Edit" msgstr "" #: views/tab-settings.php:339 msgid "Submit" msgstr "" #: views/tab-settings.php:344 msgid "Add this code to all websites in your network to sync protection (payment required for additional domains unless it's with an Agency plan's first tier)." msgstr "" #: views/tab-settings.php:351 msgid "Configuration" msgstr "" #: views/tab-settings.php:473 msgid "General Settings" msgstr "" #: views/tab-settings.php:476 msgid "These settings are independent of the apps." msgstr "" #: views/tab-settings.php:484 msgid "Let network sites use their own settings" msgstr "" #: views/tab-settings.php:485 msgid "If disabled, the global settings will be forcibly applied to the entire network." msgstr "" #: views/tab-settings.php:490 msgid "Use global settings" msgstr "" #: views/tab-settings.php:514 msgid "GDPR compliance" msgstr "" #: views/tab-settings.php:518 msgid "This makes the plugin GDPR compliant by showing a message on the login page. Read more" msgstr "" #: views/tab-settings.php:525 msgid "GDPR message" msgstr "" #: views/tab-settings.php:530 msgid "This message will appear at the bottom of the login page." msgstr "" #: views/tab-settings.php:540 msgid "You can use a shortcode here to insert links, for example, a link to your Privacy Policy page.
The shortcode is: [llar-link url=\"https://example.com\" text=\"Privacy Policy\"]" msgstr "" #: views/tab-settings.php:547 #: views/tab-settings.php:552 msgid "Weekly Digest" msgstr "" #: views/tab-settings.php:559 #: views/tab-settings.php:583 msgid "Email to" msgstr "" #: views/tab-settings.php:564 msgid "Receive a weekly digest that includes a recap of your failed logins and lockout notifications. Premium users will be able to see additional data such as countries and IPs with most failed logins." msgstr "" #: views/tab-settings.php:571 msgid "Notify on lockout" msgstr "" #: views/tab-settings.php:576 msgid "Email address to which lockout notifications will be sent." msgstr "" #: views/tab-settings.php:586 msgid "after" msgstr "" #: views/tab-settings.php:589 msgid "lockouts" msgstr "" #: views/tab-settings.php:591 msgid "Test Email Notifications" msgstr "" #: views/tab-settings.php:598 msgid "It's not uncommon for web hosts to turn off emails for plugins as a security measure.
We've created an article to troubleshoot common email deliverability issues." msgstr "" #: views/tab-settings.php:606 msgid "Display top menu item" msgstr "" #: views/tab-settings.php:611 msgid "The LLAR plugin displays its item on the top navigation menu, which provides a shortcut to the plugin." msgstr "" #: views/tab-settings.php:618 #: views/tab-settings.php:635 #: views/tab-settings.php:666 msgid "(Save and reload this page to see the changes)" msgstr "" #: views/tab-settings.php:623 msgid "Display left menu item" msgstr "" #: views/tab-settings.php:628 msgid "The LLAR plugin displays its item on the left navigation menu, which provides a shortcut to the plugin." msgstr "" #: views/tab-settings.php:639 msgid "Hide Dashboard Widget" msgstr "" #: views/tab-settings.php:644 msgid "The LLAR dashboard widget provides a quick glance of your daily failed login activity on the main WordPress dashboard. You may hide this widget by checking this box." msgstr "" #: views/tab-settings.php:654 msgid "Display Menu Warning Icon" msgstr "" #: views/tab-settings.php:659 msgid "The warning badge is a red bubble icon displayed next to the LLAR logo on the main vertical navigation menu. It displays a warning if there were more than 100 attempts for a day." msgstr "" #: views/tab-settings.php:794 msgid "Test email has been sent!" msgstr "" plugins/limit-login-attempts-reloaded/lib/CidrCheck.php000064400000001556147176754540017216 0ustar00IPv4Match($ip, $subnet, $mask); } private function IPv4Match($address, $subnetAddress, $subnetMask) { if (!filter_var($subnetAddress, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) || $subnetMask === NULL || $subnetMask === "" || $subnetMask < 0 || $subnetMask > 32) { return false; } $address = ip2long($address); $subnetAddress = ip2long($subnetAddress); $mask = -1 << (32 - $subnetMask); $subnetAddress &= $mask; # nb: in case the supplied subnet wasn't correctly aligned return ($address & $mask) == $subnetAddress; } }plugins/limit-login-attempts-reloaded/limit-login-attempts-reloaded.php000064400000003334147176754540022465 0ustar00Limit Login Attempts Reloaded functions as a robust deterrent against brute force attacks, bolstering your website's security measures and optimizing its performance. It achieves this by **restricting the number of login attempts allowed**. This applies not only to the standard login method, but also to XMLRPC, Woocommerce, and custom login pages. With more than 2.5 million active users, this plugin fulfills all your login security requirements. The plugin functions by automatically preventing further attempts from a particular Internet Protocol (IP) address and/or username once a predetermined limit of retries has been surpassed. This significantly weakens the effectiveness of brute force attacks on your website. By default, WordPress permits an unlimited number of login attempts, posing a vulnerability where passwords can be easily deciphered through brute force methods. **Limit Login Attempts Reloaded Premium (Try Free with Micro Cloud)** Upgrade to Limit Login Attempts Reloaded Premium to extend cloud-based protection to the Limit Login Attempts Reloaded plugin, thereby enhancing your login security. The premium version includes a range of highly beneficial features, including IP intelligence to **detect, counter and deny malicious login attempts**. Your failed login attempts will be safely neutralized in the cloud so your website can function at its optimal performance during an attack. https://www.youtube.com/watch?v=JfkvIiQft14 = Features (Free Version): = * **Limit Logins** - Limit the number of retry attempts when logging in (per each IP). * **Configurable Lockout Timings** - Modify the amount of time a user or IP must wait after a lockout. * **Remaining Tries** - Informs the user about the remaining retries or lockout time on the login page. * **Lockout Email Notifications** - Informs the admin via email of lockouts. * **Denied Attempt Logs** - View a log of all denied attempts and lockouts. * **IP & Username Safelist/Denylist** - Control access to usernames and IPs. * **Sucuri** compatibility. * **Wordfence** compatibility. * **Ultimate Member** compatibility. * **WPS Hide Login** compatibility. * **XMLRPC** gateway protection. * **Woocommerce** login page protection. * **Multi-site compatibility** with extra MU settings. * **GDPR** compliant. * **Custom IP origins support** (Cloudflare, Sucuri, etc.). * **llar_admin** own capability. = Features (Premium Version): = * **Performance Optimizer** - Offload the burden of excessive failed logins from your server to protect your server resources, resulting in improved speed and efficiency of your website. * **Enhanced IP Intelligence** - Identify repetitive and suspicious login attempts to detect potential brute force attacks. IPs with known malicious activity are stored and used to help prevent and counter future attacks. * **Enhanced Throttling** - Longer lockout intervals each time a malicious IP or username tries to login unsuccessfully. * **Deny By Country** - Block logins by country by simply selecting the countries you want to deny. * **Auto IP Denylist** - Automatically add IP addresses to your active cloud deny list that repeatedly fail login attempts. * **Global Denylist Protection** - Utilize our active cloud IP data from thousands of websites in the LLAR network. * **Synchronized Lockouts** - Lockout IP data can be shared between multiple domains for enhanced protection in your network. * **Synchronized Safelist/Denylist** - Safelist/Denylist IP and username data can be shared between multiple domains. * **Premium Support** - Email support with a security tech. * **Auto Backups of All IP Data** - Store your active IP data in the cloud. * **Successful Logins Log** - Store successful logins in the cloud including IP info, city, state and lat/long. * **Enhanced lockout logs** - Gain valuable insights into the origins of IPs that are attempting logins. * **CSV Download of IP Data** - Download IP data direclty from the cloud. * **Supports IPV6 Ranges For Safelist/Denylist** * **Unlock The Locked Admin** - Easily unlock the locked admin through the cloud. *Some features require higher level plans. = Upgrading from the old Limit Login Attempts plugin? = 1. Go to the Plugins section in your site's backend. 1. Remove the Limit Login Attempts plugin. 1. Install the Limit Login Attempts Reloaded plugin. All your settings will be kept intact! Many languages are currently supported in the Limit Login Attempts Reloaded plugin but we welcome any additional ones. Help us bring Limit Login Attempts Reloaded to even more countries. Translations: Bulgarian, Brazilian Portuguese, Catalan, Chinese (Traditional), Czech, Dutch, Finnish, French, German, Hungarian, Norwegian, Persian, Romanian, Russian, Spanish, Swedish, Turkish Plugin uses standard actions and filters only. Based on the original code from Limit Login Attempts plugin by Johan Eenfeldt. = Branding Guidelines = Limit Login Attempts Reloaded™ is a trademark of Atlantic Silicon Inc. When writing about the plugin, please make sure to use Reloaded after Limit Login Attempts. Limit Login Attempts is the old plugin. * Limit Login Attempts Reloaded (correct) * Limit Login Attempts (incorrect) == Screenshots == 1. Login screen after a failed login with remaining retries 2. Lockout login screen 3. Administration interface in WordPress 5.2.1 == Frequently Asked Questions == = What do I do if all users get blocked? = If you are using contemporary hosting, it's likely your site uses a proxy domain service like CloudFlare, Sucuri, Nginx, etc. They replace your user's IP address with their own. If the server where your site runs is not configured properly (this happens a lot) all users will get the same IP address. This also applies to bots and hackers. Therefore, locking one user will lead to locking everybody else out. If the plugin is not using our Cloud App, this can be adjusted using the Trusted IP Origin setting. The cloud service intelligently recognizes the non-standard IP origins and handles them correctly, even if your hosting provider does not. = How do I know if I'm under attack? = An easy way to check if the attack is legitimate is to copy the IP address from the lockout notification and check its location using a IP locator tool. If the location is not somewhere you recognize and you have received several failed login attempts, then you are likely being attacked. You might notice dozens or hundreds of IPs each day. Visit our website to learn how can you prevent brute force attacks on your website. = How can I tell that the premium plugin is working? = After you upgrade to our premium version, you will see a new dashboard in your WordPress admin that shows all attacks that will now relay through our cloud service. On the graph, you'll see **requests** and **failed login attempts**. Each request will represent the cloud app validating an IP, which also includes denied logins. In some cases, you may notice an increase in speed and efficiency with your website. Also, a reduction in lockout notifications via email. = Could these failed login attempts be fake? = Some users find it hard to believe that they could experience numerous unsuccessful login attempts, particularly when their site has just been established or has minimal human traffic. The plugin is not responsible for generating these failed login attempts. Newly created websites are frequently hosted on shared IP addresses, making it easy for hackers to discover them. Additionally, newly registered domain names are often crawled soon after creation, rendering a WordPress website susceptible to attacks. Such websites are attractive targets as security is not a primary concern for their owners. We've created an article that delves deeper into the issue of fake login attempts in WordPress. = What happens if my site exceeds the request limits in the plan? = The premium plan’s resource limits start from 100,000 requests per month, which should accept almost any heavy brute-force attack. We monitor all of our sites and will alert the user if it appears they are going over their limits. If limits are reached, we will suggest to the user upgrading to the next plan. If you are using the free version, the load caused by brute force attacks will be absorbed by your current hosting bandwidth, which could cause your hosting costs to increase. = What do I do if all users get blocked? = If you are using contemporary hosting, it’s likely your site uses a proxy domain service like CloudFlare, Sucuri, Nginx, etc. They replace your user’s IP address with their own. If your server is not configured properly, all users will get the same IP address. This also applies to bots and hackers. Therefore, locking one user will lead to locking everybody else out. In the free version of the plugin, this can be adjusted using the Trusted IP Origin setting. In the premium version, the cloud service intelligently recognizes the non-standard IP origins and handles them correctly, even if your hosting provider does not. = What URLs are being attacked and protected? = The URLs being protected are your login page (wp-login.php, wp-admin), xmlrpc.php, WooCommerce login page, and any custom login page you have that uses regular WordPress login hooks. = Why is LLAR more popular than other brute-force protection plugins? = Our main focus is protecting your site from brute force attacks. This allows our plugin to be very lean and effective. It doesn’t require a lot of your web hosting resources and keeps your site well-protected. More importantly, it does all of this automatically as our service learns on its own about each IP it encounters. In contrast, a firewall would require manual blocking of IPs. = What to do when an admin gets blocked? = Open the site from another IP. You can do this from your cell phone, or using Opera browser and enabling free VPN there. You can also try turning off your router for a few minutes and then see if you get a different IP address. These will work if your hosting server is configured correctly. If that doesn’t work, connect to the site using FTP or your hosting control panel file manager. Navigate to wp-content/plugins/ and rename the limit-login-attempts-reloaded folder. Log in to the site then rename that folder back and whitelist your IP. By upgrading to our premium app, you will have the unlocking functionality right from the cloud so you’ll never have to deal with this issue. = What settings should I use In the plugin? = The settings are explained within the plugin in great detail. If you are unsure, use the default settings as they are the recommended ones. = Can I share the safelist/denylist throughout all of my sites?= By default, you will need to copy and paste the lists to each site manually. For the premium service, sites are grouped within the same private cloud account. Each site within that group can be configured if it shares its lockouts and access lists with other group members. The setting is located in the plugin's interface. The default options are recommended. == Changelog == = 2.26.13 = * New "llar_admin" capability added to let other roles access the plugin. * CSS fixes. * Sticky headers added to the log tables. * Small interface changes. = 2.26.12 = * Better displaying IPv6 in successful login attempts block. * Possible intersections in tabs with other plugins fixed. * PHP 8, 9 compatibility updates. * Refactoring. = 2.26.11 = * Fixed possible style conflicts related to tables. * Fixed possible PHP warnings. * Fixed some I18N issues, thanks to alexclassroom! * Better displaying multiple roles in login logs. = 2.26.10 = * Log of successful login attempts implemented for Micro Cloud (Free) and Premium users. * Checklist of recommended actions implemented. * Settings page reorganized. = 2.26.9 = * Chart library updated. = 2.26.8 = * Fixed possible WooCommerce conflict. = 2.26.7 = * Better informing on Micro Cloud. = 2.26.6 = * Micro Cloud API url fix. = 2.26.5 = * Better informing on cloud status. = 2.26.4 = * Added country translation. * Better Micro Cloud API response handling. * A link fixed. = 2.26.3 = * CSS issue fixed on Logs tab. = 2.26.2 = * CSS issue fixed. = 2.26.1 = * Micro Cloud link fixed. = 2.26.0 = * New design. * Free Micro Cloud plan introduced. = 2.25.29 = * A link fixed. = 2.25.28 = * Improved cloud charts. = 2.25.27 = * Security improvement: Better shortcode escaping. * Fixed date formatting on the logs page. * Fixed top menu links on the front-end. * Badge added to the top menu. = 2.25.26 = * Security improvement: Different nonce for each AJAX action. * Security improvement: The toggle_auto_update_callback checks for the update_plugins cap. = 2.25.25 = * PHP 8.2/9 compatibility improved, thanks to Jer Turowetz! * Button size and text typo fixed. = 2.25.24 = * Better loading of translations. * Fixed PHP warning related to menu. = 2.25.23 = * Better side menu. * Fixed I18N issues, thanks to alexclassroom! = 2.25.22 = * Interface changes. * Tested with WP 6.3. = 2.25.21 = * Optimization: autoload for large options turned off. * Interface changes. = 2.25.20 = * Fix against network requests caching removed b/c some misconfigured servers can't handle it. = 2.25.19 = * Better handling of network connection issues. * Fixed responsive formatting on dashboard. * Added fix against network requests caching. = 2.25.18 = * Fixed errors occurring in situations where two versions of the plugin are installed (which should not normally happen). = 2.25.17 = * Refactoring. * Server load reducing optimization. = 2.25.16 = * Double slashes in paths removed. * Better handling of cloud response codes. = 2.25.15 = * Error messages logic fixed. = 2.25.14 = * Multisite support improved. * CSS outside of the plugin issue fixed. * Better number formatting on the dashboard. * Lockout email template updated. = 2.25.13 = * Ultimate Member compatibility. * Fixed conflicting URL parameters in some rare cases. * Updated attempts counter logic. = 2.25.12 = * Fixed IPv4 validation when passed with a port number. * Fixed texts and translations. = 2.25.11 = * PHP 8 compatibility fixed. * Logs loading issue fixed. * Help and Extensions tabs added. * Notification about auto updates added. * Displaying of plugin version added. * Text changes made. = 2.25.10 = * Tested with PHP 8. * Small styles refactoring. * Fixed a rare issue with events log not being displayed correctly. * Chart library updated. = 2.25.9 = * Welcome page replaced with a modal. = 2.25.8 = * Email text, links updated. = 2.25.7 = * Country flags added to log. * Refresh button added to log. * Email text updated. = 2.25.6 = * Email links updated. = 2.25.5 = * Fixed Woocommerce integration. * Updated some interface links. = 2.25.4 = * Fixed session error in rare cases. * Access rules explained. * Improved session behavior on the login page. * Fixed warning on some GoDaddy installations. = 2.25.3 = * Improved compatibility with WordFence. * Better handling of HTTP_X_FORWARDED_FOR on Debug tab. * Added option to hide warning badge. = 2.25.2 = * Security indicator fixed for multisite. = 2.25.1 = * Added setting to turn the dashboard widged off. * The widget is visible to admins only. = 2.25.0 = * Dashboard widged added. * Security indicator added. = 2.24.1 = * Fixed E_ERROR occurring in rare cases when the log table is corrupted. = 2.24.0 = * Protection increased: bots can't parse lockout messages anymore. = 2.23.2 = * Cloud: better unlock UX. * Litle cleanup. = 2.23.1 = * Added infinite scroll for cloud logs. = 2.23.0 = * Reduced plugin size by removing obsolete translations. * Cleaned up the dashboard. * Cloud: added information about auto/manually-blocked IPs. * GDPR: added an option to insert a link to a Privacy Policy page via a shortcode, clarified GDPR compliance. = 2.22.1 = * IP added to the email subject. = 2.22.0 = * Added support of CIDR notation for specifying IP ranges. * Texts updated. * Refactoring. = 2.21.1 = * Fixed: Uncaught Error: Call to a member function stats() * Cloud API: added block by country. * Refactoring. = 2.21.0 = * GDPR compliance: IPs obfuscation replaced with a customizable consent message on the login page. * Cloud API: fixed removing of blocked IPs from the access lists under certain conditions. * Cloud API: domain for Setup Code is taken from the WordPress settings now. = 2.20.6 = * Multisite tab links fixed. = 2.20.5 = * Option to show and hide the top-level menu item. = 2.20.4 = * Sucuri compatibility verified. * Wordfence compatibility verified. * Better menu navigation. * Timezones fixed for the global chart. = 2.20.3 = * More clear wording. * Cloud API: fixed double submit in the settings form. * Better displaying of stats. = 2.20.2 = * Updated email text. = 2.20.1 = * New dashboard more clear stats. = 2.20.0 = * New dashboard with simple stats. = 2.19.2 = * Texts and links updated. = 2.19.1 = * Welcome page. * Image and text updates. = 2.19.0 = * Refactoring. * Feedback message location fixed. * Text changes. = 2.18.0 = * Cloud API: usage chart added. * Text changes. = 2.17.4 = * Missing jQuery images added. * PHP 5 compatibility fixed. * Custom App setup link replaced with setup code. = 2.17.3 = * Plugin pages message. = 2.17.2 = * Lockout notification refactored. = 2.17.1 = * CSS cache issue fixed. * Notification text updated. = 2.17.0 = * Refactoring. * Email text and notification updated. * New links in the list of plugins. = 2.16.0 = * Custom Apps functionality implemented. More details: https://limitloginattempts.com/app/ = 2.15.2 = * Alternative method of closing the feedback message. = 2.15.1 = * Refactoring. = 2.15.0 = * Reset password feature has been removed as unwanted. * Small refactoring. = 2.14.0 = * BuddyPress login error compatibility implemented. * UltimateMember compatibility implemented. * A PHP warning fixed. = 2.13.0 = * Fixed incompatibility with PHP < 5.6. * Settings page layout refactored. = 2.12.3 = * The feedback message is shown for admins only now, and it can also be closed even if the site has issues with AJAX. = 2.12.2 = * Fixed the feedback message not being shown, again. = 2.12.1 = * Fixed the feedback message not being shown. = 2.12.0 = * Small refactoring. * get_message() - fixed error notices. * This is the first time we are asking you for a feedback. = 2.11.0 = * Blacklisted usernames can't be registered anymore. = 2.10.1 = * Fixed: GDPR compliance option could not be selected on the multisite installations. = 2.10.0 = * Debug information has been added for better support. = 2.9.0 = * Trusted IP origins option has been added. = 2.8.1 = * Extra lockout options are back. = 2.8.0 = * The plugin doesn't trust any IP addresses other than _SERVER["REMOTE_ADDR"] anymore. Trusting other IP origins make protection useless b/c they can be easily faked. This new version provides a way of secure IP unlocking for those sites that use a reverse proxy coupled with misconfigurated servers that populate _SERVER["REMOTE_ADDR"] with wrong IPs which leads to mass blocking of users. = 2.7.4 = * The lockout alerts can be sent to a configurable email address now. = 2.7.3 = * Settings page is moved back to "Settings". = 2.7.2 = * Settings are moved to a separate page. * Fixed: login error message. https://wordpress.org/support/topic/how-to-change-login-error-message/ = 2.7.1 = * A security issue inherited from the ancestor plugin Limit Login Attempts has been fixed. = 2.7.0 = * GDPR compliance implemented. * Fixed: ip_in_range() loop $ip overrides itself causing invalid results. https://wordpress.org/support/topic/ip_in_range-loop-ip-overrides-itself-causing-invalid-results/ * Fixed: the plugin was locking out the same IP address multiple times, each with a different port. https://wordpress.org/support/topic/same-ip-different-port/ = 2.6.3 = * Added support of Sucuri Website Firewall. = 2.6.2 = * Fixed the issue with backslashes in usernames. = 2.6.1 = * Plugin returns the 403 Forbidden header after the limit of login attempts via XMLRPC is reached. * Added support of IP ranges in white/black lists. * Lockouts now can be released selectively. * Fixed the issue with encoding of special symbols in email notifications. = 2.5.0 = * Added Multi-site Compatibility and additional MU settings. https://wordpress.org/support/topic/multisite-compatibility-47/ = 2.4.0 = * Usernames and IP addresses can be white-listed and black-listed now. https://wordpress.org/support/topic/banning-specific-usernames/ https://wordpress.org/support/topic/good-831/ * The lockouts log has been inversed. https://wordpress.org/support/topic/inverse-log/ = 2.3.0 = * IP addresses can be white-listed now. https://wordpress.org/support/topic/legal-user/ * A "Gateway" column is added to the lockouts log. It shows what endpoint an attacker was blocked from. https://wordpress.org/support/topic/xmlrpc-7/ * The "Undefined index: client_type" error is fixed. https://wordpress.org/support/topic/php-notice-when-updating-settings-page/ = 2.2.0 = * Removed the "Handle cookie login" setting as they are now obsolete. * Added bruteforce protection against Woocommerce login page attacks. https://wordpress.org/support/topic/how-to-integrate-with-woocommerce-2/ * Added bruteforce protection against XMLRPC attacks. https://wordpress.org/support/topic/xmlrpc-7/ = 2.1.0 = * The site connection settings are now applied automatically and therefore have been removed from the admin interface. * Now compatible with PHP 5.2 to support some older WP installations. = 2.0.0 = * fixed PHP Warning: Illegal offset type in isset or empty https://wordpress.org/support/topic/limit-login-attempts-generating-php-errors * fixed the deprecated functions issue https://wordpress.org/support/topic/using-deprecated-function * Fixed error with function arguments: https://wordpress.org/support/topic/warning-missing-argument-2-5 * added time stamp to unsuccessful tries on the plugin configuration page. * fixed .po translation files issue. * code refactoring and optimization.plugins/limit-login-attempts-reloaded/resources/compare-plans-data.php000064400000021416147176754540022310 0ustar00array_name_plans(); $actual_plan = $active_app === 'custom' ? $this->info_sub_group() : $min_plan; $upgrade_url = $active_app === 'custom' ? $this->info_upgrade_url() : 'https://www.limitloginattempts.com/info.php?from=plugin-premium-tab-upgrade'; $attribute = []; foreach ( $plans as $plan => $rate ) { if ( $rate < $plans[$actual_plan] ) { $attribute[$plan]['attr'] = ''; $attribute[$plan]['title'] = ''; } elseif ( $rate === $plans[$actual_plan] ) { $attribute[$plan]['attr'] = 'class="button menu__item button__transparent_orange llar-disabled"'; $attribute[$plan]['title'] = __( 'Installed', 'limit-login-attempts-reloaded' ); } elseif ( $plan === 'Micro Cloud' ) { $attribute[$plan]['attr'] = 'class="button menu__item button__orange button_micro_cloud"'; $attribute[$plan]['title'] = __( 'Get Started (Free)', 'limit-login-attempts-reloaded' ); } else { $attribute[$plan]['attr'] = 'class="button menu__item button__orange" href="' . $upgrade_url . '" target="_blank"'; $attribute[$plan]['title'] = __( 'Upgrade now', 'limit-login-attempts-reloaded' ); } } $lock = ''; $yes = ''; $compare_list = array( 'buttons_header' => array( 'Free' => '' . esc_html__( $attribute['Free']['title'], 'limit-login-attempts-reloaded' ) . '', 'Micro Cloud' => '' . esc_html__( $attribute['Micro Cloud']['title'], 'limit-login-attempts-reloaded' ) . '', 'Premium' => '' . esc_html__( $attribute['Premium']['title'], 'limit-login-attempts-reloaded' ) . '', 'Premium +' => '' . esc_html__( $attribute['Premium +']['title'], 'limit-login-attempts-reloaded' ) . '', 'Professional' => '' . esc_html__( $attribute['Professional']['title'], 'limit-login-attempts-reloaded' ) . '', ), __( 'Limit Number of Retry Attempts', 'limit-login-attempts-reloaded' ) => array( 'Free' => $yes, 'Micro Cloud' => $yes, 'Premium' => $yes, 'Premium +' => $yes, 'Professional' => $yes, ), __( 'Configurable Lockout Timing', 'limit-login-attempts-reloaded' ) => array( 'Free' => $yes, 'Micro Cloud' => $yes, 'Premium' => $yes, 'Premium +' => $yes, 'Professional' => $yes, ), __( 'Login Firewall', 'limit-login-attempts-reloaded' ) => array( 'description' => __( "Secure your login page with our cutting-edge login firewall, defending against unauthorized access attempts and protecting your users' accounts and sensitive information.", 'limit-login-attempts-reloaded' ), 'Free' => $lock, 'Micro Cloud' => $yes, 'Premium' => $yes, 'Premium +' => $yes, 'Professional' => $yes, ), __( 'Performance Optimizer', 'limit-login-attempts-reloaded' ) => array( 'description' => __( 'Absorb failed login attempts from brute force bots in the cloud to keep your website at its optimal performance.', 'limit-login-attempts-reloaded' ), 'Free' => $lock, 'Micro Cloud' => $yes . '' . sprintf(esc_html__( '1k for first month%s(100 per month after)', 'limit-login-attempts-reloaded' ),'
') . '
', 'Premium' => $yes . '' . esc_html__( '100k requests per month', 'limit-login-attempts-reloaded' ) . '', 'Premium +' => $yes . '' . esc_html__( '200k requests per month', 'limit-login-attempts-reloaded' ) . '', 'Professional' => $yes . '' . esc_html__( '300k requests per month', 'limit-login-attempts-reloaded' ) . '', ), __( 'Successful Login Logs', 'limit-login-attempts-reloaded' ) => array( 'description' => __( 'Ensure the security and integrity of your website by logging your successful logins.', 'limit-login-attempts-reloaded' ), 'Free' => $lock, 'Micro Cloud' => $yes, 'Premium' => $yes, 'Premium +' => $yes, 'Professional' => $yes, ), __( 'Block By Country', 'limit-login-attempts-reloaded' ) => array( 'description' => __( 'Disable IPs from any region to disable logins.', 'limit-login-attempts-reloaded' ), 'Free' => $lock, 'Micro Cloud' => $yes, 'Premium' => $lock, 'Premium +' => $yes, 'Professional' => $yes, ), __( 'Access Blocklist of Malicious IPs', 'limit-login-attempts-reloaded' ) => array( 'description' => __( 'Add another layer of protection from brute force bots by accessing a global database of known IPs with malicious activity.', 'limit-login-attempts-reloaded' ), 'Free' => $lock, 'Micro Cloud' => $yes, 'Premium' => $lock, 'Premium +' => $yes, 'Professional' => $yes, ), __( 'Auto IP Blocklist', 'limit-login-attempts-reloaded' ) => array( 'description' => __( 'Automatically add malicious IPs to your blocklist when triggered by the system.', 'limit-login-attempts-reloaded' ), 'Free' => $lock, 'Micro Cloud' => $yes, 'Premium' => $lock, 'Premium +' => $lock, 'Professional' => $yes, ), __( 'Access Active Cloud Blocklist', 'limit-login-attempts-reloaded' ) => array( 'description' => __( 'Use system wide data from over 10,000 WordPress websites to identify and block malicious IPs. This is an active list in real-time.', 'limit-login-attempts-reloaded' ), 'Free' => $lock, 'Micro Cloud' => $yes, 'Premium' => $lock, 'Premium +' => $lock, 'Professional' => $yes, ), __( 'Intelligent IP Blocking', 'limit-login-attempts-reloaded' ) => array( 'description' => __( 'Use active IP database via the cloud to automatically block users before they are able to make a failed login.', 'limit-login-attempts-reloaded' ), 'Free' => $lock, 'Micro Cloud' => $yes, 'Premium' => $yes, 'Premium +' => $yes, 'Professional' => $yes, ), __( 'Synchronize Lockouts & Safelists/Blocklists', 'limit-login-attempts-reloaded' ) => array( 'description' => __( 'Lockouts & safelists/blocklists can be shared between multiple domains to enhance protection.', 'limit-login-attempts-reloaded' ), 'Free' => $lock, 'Micro Cloud' => $lock, 'Premium' => $yes, 'Premium +' => $yes, 'Professional' => $yes, ), __( 'Premium Support', 'limit-login-attempts-reloaded' ) => array( 'description' => sprintf( __( 'Receive 1 on 1 technical support via email for any issues. Free support availabe in the WordPress support forum.', 'limit-login-attempts-reloaded' ), 'https://wordpress.org/support/plugin/limit-login-attempts-reloaded/'), 'Free' => $lock, 'Micro Cloud' => $lock, 'Premium' => $yes, 'Premium +' => $yes, 'Professional' => $yes, ), 'buttons_footer' => array( 'Free' => '' . esc_html__( $attribute['Free']['title'], 'limit-login-attempts-reloaded' ) . '', 'Micro Cloud' => '' . esc_html__( $attribute['Micro Cloud']['title'], 'limit-login-attempts-reloaded' ) . '', 'Premium' => '' . esc_html__( $attribute['Premium']['title'], 'limit-login-attempts-reloaded' ) . '', 'Premium +' => '' . esc_html__( $attribute['Premium +']['title'], 'limit-login-attempts-reloaded' ) . '', 'Professional' => '' . esc_html__( $attribute['Professional']['title'], 'limit-login-attempts-reloaded' ) . '', ), ); return $compare_list; plugins/limit-login-attempts-reloaded/resources/continent.php000064400000001053147176754540020634 0ustar00 __('Asia', 'limit-login-attempts-reloaded'), 'AN' => __('Antarctica', 'limit-login-attempts-reloaded'), 'AF' => __('Africa', 'limit-login-attempts-reloaded'), 'EU' => __('Europe', 'limit-login-attempts-reloaded'), 'NA' => __('North America', 'limit-login-attempts-reloaded'), 'OC' => __('Oceania', 'limit-login-attempts-reloaded'), 'SA' => __('South America', 'limit-login-attempts-reloaded'), 'IC' => __('Intercontinental', 'limit-login-attempts-reloaded'), 'ZZ' => __('Unknown', 'limit-login-attempts-reloaded'), );plugins/limit-login-attempts-reloaded/resources/countries.php000064400000035265147176754540020662 0ustar00 __('Unknown', 'limit-login-attempts-reloaded'), 'RW' => __('Rwanda', 'limit-login-attempts-reloaded'), 'SO' => __('Somalia', 'limit-login-attempts-reloaded'), 'YE' => __('Yemen', 'limit-login-attempts-reloaded'), 'IQ' => __('Iraq', 'limit-login-attempts-reloaded'), 'SA' => __('Saudi Arabia', 'limit-login-attempts-reloaded'), 'IR' => __('Iran', 'limit-login-attempts-reloaded'), 'CY' => __('Cyprus', 'limit-login-attempts-reloaded'), 'TZ' => __('Tanzania', 'limit-login-attempts-reloaded'), 'SY' => __('Syria', 'limit-login-attempts-reloaded'), 'AM' => __('Armenia', 'limit-login-attempts-reloaded'), 'KE' => __('Kenya', 'limit-login-attempts-reloaded'), 'CD' => __('DR Congo', 'limit-login-attempts-reloaded'), 'DJ' => __('Djibouti', 'limit-login-attempts-reloaded'), 'UG' => __('Uganda', 'limit-login-attempts-reloaded'), 'CF' => __('Central African Republic', 'limit-login-attempts-reloaded'), 'SC' => __('Seychelles', 'limit-login-attempts-reloaded'), 'JO' => __('Jordan', 'limit-login-attempts-reloaded'), 'LB' => __('Lebanon', 'limit-login-attempts-reloaded'), 'KW' => __('Kuwait', 'limit-login-attempts-reloaded'), 'OM' => __('Oman', 'limit-login-attempts-reloaded'), 'QA' => __('Qatar', 'limit-login-attempts-reloaded'), 'BH' => __('Bahrain', 'limit-login-attempts-reloaded'), 'AE' => __('United Arab Emirates', 'limit-login-attempts-reloaded'), 'IL' => __('Israel', 'limit-login-attempts-reloaded'), 'TR' => __('Turkey', 'limit-login-attempts-reloaded'), 'ET' => __('Ethiopia', 'limit-login-attempts-reloaded'), 'ER' => __('Eritrea', 'limit-login-attempts-reloaded'), 'EG' => __('Egypt', 'limit-login-attempts-reloaded'), 'SD' => __('Sudan', 'limit-login-attempts-reloaded'), 'GR' => __('Greece', 'limit-login-attempts-reloaded'), 'BI' => __('Burundi', 'limit-login-attempts-reloaded'), 'EE' => __('Estonia', 'limit-login-attempts-reloaded'), 'LV' => __('Latvia', 'limit-login-attempts-reloaded'), 'AZ' => __('Azerbaijan', 'limit-login-attempts-reloaded'), 'LT' => __('Lithuania', 'limit-login-attempts-reloaded'), 'SJ' => __('Svalbard and Jan Mayen', 'limit-login-attempts-reloaded'), 'GE' => __('Georgia', 'limit-login-attempts-reloaded'), 'MD' => __('Moldova', 'limit-login-attempts-reloaded'), 'BY' => __('Belarus', 'limit-login-attempts-reloaded'), 'FI' => __('Finland', 'limit-login-attempts-reloaded'), 'AX' => __('Åland', 'limit-login-attempts-reloaded'), 'UA' => __('Ukraine', 'limit-login-attempts-reloaded'), 'MK' => __('North Macedonia', 'limit-login-attempts-reloaded'), 'HU' => __('Hungary', 'limit-login-attempts-reloaded'), 'BG' => __('Bulgaria', 'limit-login-attempts-reloaded'), 'AL' => __('Albania', 'limit-login-attempts-reloaded'), 'PL' => __('Poland', 'limit-login-attempts-reloaded'), 'RO' => __('Romania', 'limit-login-attempts-reloaded'), 'XK' => __('Kosovo', 'limit-login-attempts-reloaded'), 'ZW' => __('Zimbabwe', 'limit-login-attempts-reloaded'), 'ZM' => __('Zambia', 'limit-login-attempts-reloaded'), 'KM' => __('Comoros', 'limit-login-attempts-reloaded'), 'MW' => __('Malawi', 'limit-login-attempts-reloaded'), 'LS' => __('Lesotho', 'limit-login-attempts-reloaded'), 'BW' => __('Botswana', 'limit-login-attempts-reloaded'), 'MU' => __('Mauritius', 'limit-login-attempts-reloaded'), 'SZ' => __('Eswatini', 'limit-login-attempts-reloaded'), 'RE' => __('Réunion', 'limit-login-attempts-reloaded'), 'ZA' => __('South Africa', 'limit-login-attempts-reloaded'), 'YT' => __('Mayotte', 'limit-login-attempts-reloaded'), 'MZ' => __('Mozambique', 'limit-login-attempts-reloaded'), 'MG' => __('Madagascar', 'limit-login-attempts-reloaded'), 'AF' => __('Afghanistan', 'limit-login-attempts-reloaded'), 'PK' => __('Pakistan', 'limit-login-attempts-reloaded'), 'BD' => __('Bangladesh', 'limit-login-attempts-reloaded'), 'TM' => __('Turkmenistan', 'limit-login-attempts-reloaded'), 'TJ' => __('Tajikistan', 'limit-login-attempts-reloaded'), 'LK' => __('Sri Lanka', 'limit-login-attempts-reloaded'), 'BT' => __('Bhutan', 'limit-login-attempts-reloaded'), 'IN' => __('India', 'limit-login-attempts-reloaded'), 'MV' => __('Maldives', 'limit-login-attempts-reloaded'), 'IO' => __('British Indian Ocean Territory', 'limit-login-attempts-reloaded'), 'NP' => __('Nepal', 'limit-login-attempts-reloaded'), 'MM' => __('Myanmar', 'limit-login-attempts-reloaded'), 'UZ' => __('Uzbekistan', 'limit-login-attempts-reloaded'), 'KZ' => __('Kazakhstan', 'limit-login-attempts-reloaded'), 'KG' => __('Kyrgyzstan', 'limit-login-attempts-reloaded'), 'TF' => __('French Southern Territories', 'limit-login-attempts-reloaded'), 'HM' => __('Heard Island and McDonald Islands', 'limit-login-attempts-reloaded'), 'CC' => __('Cocos [Keeling] Islands', 'limit-login-attempts-reloaded'), 'PW' => __('Palau', 'limit-login-attempts-reloaded'), 'VN' => __('Vietnam', 'limit-login-attempts-reloaded'), 'TH' => __('Thailand', 'limit-login-attempts-reloaded'), 'ID' => __('Indonesia', 'limit-login-attempts-reloaded'), 'LA' => __('Laos', 'limit-login-attempts-reloaded'), 'TW' => __('Taiwan', 'limit-login-attempts-reloaded'), 'PH' => __('Philippines', 'limit-login-attempts-reloaded'), 'MY' => __('Malaysia', 'limit-login-attempts-reloaded'), 'CN' => __('China', 'limit-login-attempts-reloaded'), 'HK' => __('Hong Kong', 'limit-login-attempts-reloaded'), 'BN' => __('Brunei', 'limit-login-attempts-reloaded'), 'MO' => __('Macao', 'limit-login-attempts-reloaded'), 'KH' => __('Cambodia', 'limit-login-attempts-reloaded'), 'KR' => __('South Korea', 'limit-login-attempts-reloaded'), 'JP' => __('Japan', 'limit-login-attempts-reloaded'), 'KP' => __('North Korea', 'limit-login-attempts-reloaded'), 'SG' => __('Singapore', 'limit-login-attempts-reloaded'), 'CK' => __('Cook Islands', 'limit-login-attempts-reloaded'), 'TL' => __('East Timor', 'limit-login-attempts-reloaded'), 'RU' => __('Russia', 'limit-login-attempts-reloaded'), 'MN' => __('Mongolia', 'limit-login-attempts-reloaded'), 'AU' => __('Australia', 'limit-login-attempts-reloaded'), 'CX' => __('Christmas Island', 'limit-login-attempts-reloaded'), 'MH' => __('Marshall Islands', 'limit-login-attempts-reloaded'), 'FM' => __('Federated States of Micronesia', 'limit-login-attempts-reloaded'), 'PG' => __('Papua New Guinea', 'limit-login-attempts-reloaded'), 'SB' => __('Solomon Islands', 'limit-login-attempts-reloaded'), 'TV' => __('Tuvalu', 'limit-login-attempts-reloaded'), 'NR' => __('Nauru', 'limit-login-attempts-reloaded'), 'VU' => __('Vanuatu', 'limit-login-attempts-reloaded'), 'NC' => __('New Caledonia', 'limit-login-attempts-reloaded'), 'NF' => __('Norfolk Island', 'limit-login-attempts-reloaded'), 'NZ' => __('New Zealand', 'limit-login-attempts-reloaded'), 'FJ' => __('Fiji', 'limit-login-attempts-reloaded'), 'LY' => __('Libya', 'limit-login-attempts-reloaded'), 'CM' => __('Cameroon', 'limit-login-attempts-reloaded'), 'SN' => __('Senegal', 'limit-login-attempts-reloaded'), 'CG' => __('Congo Republic', 'limit-login-attempts-reloaded'), 'PT' => __('Portugal', 'limit-login-attempts-reloaded'), 'LR' => __('Liberia', 'limit-login-attempts-reloaded'), 'CI' => __('Ivory Coast', 'limit-login-attempts-reloaded'), 'GH' => __('Ghana', 'limit-login-attempts-reloaded'), 'GQ' => __('Equatorial Guinea', 'limit-login-attempts-reloaded'), 'NG' => __('Nigeria', 'limit-login-attempts-reloaded'), 'BF' => __('Burkina Faso', 'limit-login-attempts-reloaded'), 'TG' => __('Togo', 'limit-login-attempts-reloaded'), 'GW' => __('Guinea-Bissau', 'limit-login-attempts-reloaded'), 'MR' => __('Mauritania', 'limit-login-attempts-reloaded'), 'BJ' => __('Benin', 'limit-login-attempts-reloaded'), 'GA' => __('Gabon', 'limit-login-attempts-reloaded'), 'SL' => __('Sierra Leone', 'limit-login-attempts-reloaded'), 'ST' => __('São Tomé and Príncipe', 'limit-login-attempts-reloaded'), 'GI' => __('Gibraltar', 'limit-login-attempts-reloaded'), 'GM' => __('Gambia', 'limit-login-attempts-reloaded'), 'GN' => __('Guinea', 'limit-login-attempts-reloaded'), 'TD' => __('Chad', 'limit-login-attempts-reloaded'), 'NE' => __('Niger', 'limit-login-attempts-reloaded'), 'ML' => __('Mali', 'limit-login-attempts-reloaded'), 'EH' => __('Western Sahara', 'limit-login-attempts-reloaded'), 'TN' => __('Tunisia', 'limit-login-attempts-reloaded'), 'ES' => __('Spain', 'limit-login-attempts-reloaded'), 'MA' => __('Morocco', 'limit-login-attempts-reloaded'), 'MT' => __('Malta', 'limit-login-attempts-reloaded'), 'DZ' => __('Algeria', 'limit-login-attempts-reloaded'), 'FO' => __('Faroe Islands', 'limit-login-attempts-reloaded'), 'DK' => __('Denmark', 'limit-login-attempts-reloaded'), 'IS' => __('Iceland', 'limit-login-attempts-reloaded'), 'GB' => __('United Kingdom', 'limit-login-attempts-reloaded'), 'CH' => __('Switzerland', 'limit-login-attempts-reloaded'), 'SE' => __('Sweden', 'limit-login-attempts-reloaded'), 'NL' => __('Netherlands', 'limit-login-attempts-reloaded'), 'AT' => __('Austria', 'limit-login-attempts-reloaded'), 'BE' => __('Belgium', 'limit-login-attempts-reloaded'), 'DE' => __('Germany', 'limit-login-attempts-reloaded'), 'LU' => __('Luxembourg', 'limit-login-attempts-reloaded'), 'IE' => __('Ireland', 'limit-login-attempts-reloaded'), 'MC' => __('Monaco', 'limit-login-attempts-reloaded'), 'FR' => __('France', 'limit-login-attempts-reloaded'), 'AD' => __('Andorra', 'limit-login-attempts-reloaded'), 'LI' => __('Liechtenstein', 'limit-login-attempts-reloaded'), 'JE' => __('Jersey', 'limit-login-attempts-reloaded'), 'IM' => __('Isle of Man', 'limit-login-attempts-reloaded'), 'GG' => __('Guernsey', 'limit-login-attempts-reloaded'), 'SK' => __('Slovakia', 'limit-login-attempts-reloaded'), 'CZ' => __('Czechia', 'limit-login-attempts-reloaded'), 'NO' => __('Norway', 'limit-login-attempts-reloaded'), 'VA' => __('Vatican City', 'limit-login-attempts-reloaded'), 'SM' => __('San Marino', 'limit-login-attempts-reloaded'), 'IT' => __('Italy', 'limit-login-attempts-reloaded'), 'SI' => __('Slovenia', 'limit-login-attempts-reloaded'), 'ME' => __('Montenegro', 'limit-login-attempts-reloaded'), 'HR' => __('Croatia', 'limit-login-attempts-reloaded'), 'BA' => __('Bosnia and Herzegovina', 'limit-login-attempts-reloaded'), 'AO' => __('Angola', 'limit-login-attempts-reloaded'), 'NA' => __('Namibia', 'limit-login-attempts-reloaded'), 'SH' => __('Saint Helena', 'limit-login-attempts-reloaded'), 'BV' => __('Bouvet Island', 'limit-login-attempts-reloaded'), 'BB' => __('Barbados', 'limit-login-attempts-reloaded'), 'CV' => __('Cabo Verde', 'limit-login-attempts-reloaded'), 'GY' => __('Guyana', 'limit-login-attempts-reloaded'), 'GF' => __('French Guiana', 'limit-login-attempts-reloaded'), 'SR' => __('Suriname', 'limit-login-attempts-reloaded'), 'PM' => __('Saint Pierre and Miquelon', 'limit-login-attempts-reloaded'), 'GL' => __('Greenland', 'limit-login-attempts-reloaded'), 'PY' => __('Paraguay', 'limit-login-attempts-reloaded'), 'UY' => __('Uruguay', 'limit-login-attempts-reloaded'), 'BR' => __('Brazil', 'limit-login-attempts-reloaded'), 'FK' => __('Falkland Islands', 'limit-login-attempts-reloaded'), 'GS' => __('South Georgia and the South Sandwich Islands', 'limit-login-attempts-reloaded'), 'JM' => __('Jamaica', 'limit-login-attempts-reloaded'), 'DO' => __('Dominican Republic', 'limit-login-attempts-reloaded'), 'CU' => __('Cuba', 'limit-login-attempts-reloaded'), 'MQ' => __('Martinique', 'limit-login-attempts-reloaded'), 'BS' => __('Bahamas', 'limit-login-attempts-reloaded'), 'BM' => __('Bermuda', 'limit-login-attempts-reloaded'), 'AI' => __('Anguilla', 'limit-login-attempts-reloaded'), 'TT' => __('Trinidad and Tobago', 'limit-login-attempts-reloaded'), 'KN' => __('St Kitts and Nevis', 'limit-login-attempts-reloaded'), 'DM' => __('Dominica', 'limit-login-attempts-reloaded'), 'AG' => __('Antigua and Barbuda', 'limit-login-attempts-reloaded'), 'LC' => __('Saint Lucia', 'limit-login-attempts-reloaded'), 'TC' => __('Turks and Caicos Islands', 'limit-login-attempts-reloaded'), 'AW' => __('Aruba', 'limit-login-attempts-reloaded'), 'VG' => __('British Virgin Islands', 'limit-login-attempts-reloaded'), 'VC' => __('Saint Vincent and the Grenadines', 'limit-login-attempts-reloaded'), 'MS' => __('Montserrat', 'limit-login-attempts-reloaded'), 'MF' => __('Saint Martin', 'limit-login-attempts-reloaded'), 'BL' => __('Saint Barthélemy', 'limit-login-attempts-reloaded'), 'GP' => __('Guadeloupe', 'limit-login-attempts-reloaded'), 'GD' => __('Grenada', 'limit-login-attempts-reloaded'), 'KY' => __('Cayman Islands', 'limit-login-attempts-reloaded'), 'BZ' => __('Belize', 'limit-login-attempts-reloaded'), 'SV' => __('El Salvador', 'limit-login-attempts-reloaded'), 'GT' => __('Guatemala', 'limit-login-attempts-reloaded'), 'HN' => __('Honduras', 'limit-login-attempts-reloaded'), 'NI' => __('Nicaragua', 'limit-login-attempts-reloaded'), 'CR' => __('Costa Rica', 'limit-login-attempts-reloaded'), 'VE' => __('Venezuela', 'limit-login-attempts-reloaded'), 'EC' => __('Ecuador', 'limit-login-attempts-reloaded'), 'CO' => __('Colombia', 'limit-login-attempts-reloaded'), 'PA' => __('Panama', 'limit-login-attempts-reloaded'), 'HT' => __('Haiti', 'limit-login-attempts-reloaded'), 'AR' => __('Argentina', 'limit-login-attempts-reloaded'), 'CL' => __('Chile', 'limit-login-attempts-reloaded'), 'BO' => __('Bolivia', 'limit-login-attempts-reloaded'), 'PE' => __('Peru', 'limit-login-attempts-reloaded'), 'MX' => __('Mexico', 'limit-login-attempts-reloaded'), 'PF' => __('French Polynesia', 'limit-login-attempts-reloaded'), 'PN' => __('Pitcairn Islands', 'limit-login-attempts-reloaded'), 'KI' => __('Kiribati', 'limit-login-attempts-reloaded'), 'TK' => __('Tokelau', 'limit-login-attempts-reloaded'), 'TO' => __('Tonga', 'limit-login-attempts-reloaded'), 'WF' => __('Wallis and Futuna', 'limit-login-attempts-reloaded'), 'WS' => __('Samoa', 'limit-login-attempts-reloaded'), 'NU' => __('Niue', 'limit-login-attempts-reloaded'), 'MP' => __('Northern Mariana Islands', 'limit-login-attempts-reloaded'), 'GU' => __('Guam', 'limit-login-attempts-reloaded'), 'PR' => __('Puerto Rico', 'limit-login-attempts-reloaded'), 'VI' => __('U.S. Virgin Islands', 'limit-login-attempts-reloaded'), 'UM' => __('U.S. Minor Outlying Islands', 'limit-login-attempts-reloaded'), 'AS' => __('American Samoa', 'limit-login-attempts-reloaded'), 'CA' => __('Canada', 'limit-login-attempts-reloaded'), 'US' => __('United States', 'limit-login-attempts-reloaded'), 'PS' => __('Palestine', 'limit-login-attempts-reloaded'), 'RS' => __('Serbia', 'limit-login-attempts-reloaded'), 'AQ' => __('Antarctica', 'limit-login-attempts-reloaded'), 'SX' => __('Sint Maarten', 'limit-login-attempts-reloaded'), 'CW' => __('Curaçao', 'limit-login-attempts-reloaded'), 'BQ' => __('Bonaire, Sint Eustatius, and Saba', 'limit-login-attempts-reloaded'), 'SS' => __('South Sudan', 'limit-login-attempts-reloaded'), );plugins/limit-login-attempts-reloaded/views/admin-dashboard-widgets.php000064400000002153147176754550022442 0ustar00info_is_exhausted(); $block_sub_group = $this->info_sub_group(); $upgrade_premium_url = $this->info_upgrade_url(); } else { $is_exhausted = false; $block_sub_group = ''; $upgrade_premium_url = ''; } $api_stats = $is_active_app_custom ? LimitLoginAttempts::$cloud_app->stats() : false; $setup_code = Config::get( 'app_setup_code' ); ?>
plugins/limit-login-attempts-reloaded/views/app-widgets/acl-rules.php000064400000032626147176754550022104 0ustar00 plugins/limit-login-attempts-reloaded/views/app-widgets/active-lockouts.php000064400000007116147176754550023325 0ustar00

plugins/limit-login-attempts-reloaded/views/app-widgets/country-access-rules.php000064400000012447147176754550024306 0ustar00 plugins/limit-login-attempts-reloaded/views/app-widgets/event-log.php000064400000014152147176754550022107 0ustar00
Full logs', 'limit-login-attempts-reloaded' ), $full_log_url); ?>
plugins/limit-login-attempts-reloaded/views/app-widgets/login-attempts.php000064400000017711147176754550023162 0ustar00

plugins/limit-login-attempts-reloaded/views/chart-circle-failed-attempts-today.php000064400000015506147176754550024526 0ustar00 $count ) { if ( is_numeric( $key ) && $key > strtotime( '-24 hours' ) ) { $retries_count += $count; } elseif( !is_numeric( $key ) && date_i18n( 'Y-m-d' ) === $key ) { $retries_count += $count; } } } if ( $retries_count === 0 ) { $retries_chart_title = __( 'Hooray! Zero failed login attempts (past 24 hrs)', 'limit-login-attempts-reloaded' ); $retries_chart_color = '#97F6C8'; } else if ( $retries_count < 100 ) { $retries_chart_title = sprintf( _n( '%d failed login attempt ', '%d failed login attempts ', $retries_count, 'limit-login-attempts-reloaded' ), $retries_count ); $retries_chart_title .= __( '(past 24 hrs)', 'limit-login-attempts-reloaded' ); $retries_chart_desc = __( 'Your site is currently at a low risk for brute force activity', 'limit-login-attempts-reloaded' ); $retries_chart_color = '#FFCC66'; } else { $retries_chart_title = __( 'Warning: Your site has experienced over 100 failed login attempts in the past 24 hours', 'limit-login-attempts-reloaded' ); if ( ! empty( $setup_code ) ) { $retries_chart_desc = sprintf( __( 'Based on your level of brute force activity, we recommend upgrading to premium to access features to reduce failed logins and improve site performance.', 'limit-login-attempts-reloaded' ), $upgrade_premium_url ); } else { $retries_chart_desc = sprintf( __( 'Based on your level of brute force activity, we recommend free Micro Cloud upgrade to access features to reduce failed logins and improve site performance.', 'limit-login-attempts-reloaded' ), 'button_micro_cloud' ); } $retries_chart_color = '#FF6633'; } } else { if ( $api_stats && ! empty( $api_stats['attempts']['count'] ) ) { $retries_count = (int) end( $api_stats['attempts']['count'] ); } if ( $is_exhausted && $block_sub_group === 'Micro Cloud' ) { if ( $retries_count === 0 ) { $retries_chart_title = __( 'Hooray! Zero failed login attempts (past 24 hrs)', 'limit-login-attempts-reloaded' ); $retries_chart_color = '#97F6C8'; } elseif ( $retries_count < 100 ) { $retries_chart_title = sprintf( _n( '%d failed login attempt ', '%d failed login attempts ', $retries_count, 'limit-login-attempts-reloaded' ), $retries_count ); $retries_chart_title .= __( '(past 24 hrs)', 'limit-login-attempts-reloaded' ); $retries_chart_desc = __( 'Your site is currently at a low risk for brute force activity', 'limit-login-attempts-reloaded' ); $retries_chart_color = '#FFCC66'; } else { $upgrade_premium_url = ! empty ( $upgrade_premium_url ) ? $upgrade_premium_url : ''; $retries_chart_desc = sprintf( __( 'Based on your level of brute force activity, we recommend upgrading to premium to access features to reduce failed logins and improve site performance.', 'limit-login-attempts-reloaded' ), $upgrade_premium_url ); $retries_chart_color = '#FF6633'; } } else { $retries_chart_title = __( 'Failed Login Attempts Today', 'limit-login-attempts-reloaded' ); $retries_chart_color = '#97F6C8'; } } ?>
' . __( 'Cloud protection enabled', 'limit-login-attempts-reloaded' ) . '' : ''; ?>
plugins/limit-login-attempts-reloaded/views/chart-failed-attempts.php000064400000022373147176754550022151 0ustar00 __( 'Failed Login Attempts', 'limit-login-attempts-reloaded' ), 'data' => array(), 'backgroundColor' => $chart2__color_gradient_attempts, 'borderColor' => $chart2__color_attempts, 'fill' => true, ); $requests_dataset = array( 'label' => __( 'Requests', 'limit-login-attempts-reloaded' ), 'data' => array(), 'backgroundColor' => $chart2__color_gradient_requests, 'borderColor' => $chart2__color_requests, 'fill' => true, 'yAxisID' => 'requests', ); if ( $api_stats ) { if ( !empty( $api_stats['attempts'] ) ) { foreach ( $api_stats['attempts']['at'] as $timestamp ) { $stats_dates[] = date( $date_format, $timestamp ); } $chart2_labels = $stats_dates; $attempts_dataset['data'] = $api_stats['attempts']['count']; } if ( !empty( $api_stats['requests'] ) ) { $requests_dataset['data'] = $api_stats['requests']['count']; } if ( !empty( $api_stats['attempts_y'] ) ) $chart2_attempts_scale_max = (int) $api_stats['attempts_y']; if ( !empty( $api_stats['requests_y'] ) ) $chart2_requests_scale_max = (int) $api_stats['requests_y']; } $chart2_datasets[] = $attempts_dataset; $chart2_datasets[] = $requests_dataset; } else { $date_format = trim( get_option( 'date_format' ), ' yY,._:;-/\\' ); $date_format = str_replace( 'F', 'M', $date_format ); $retries_stats = Config::get( 'retries_stats' ); if ( is_array( $retries_stats ) && $retries_stats ) { $key = key( $retries_stats ); $start = is_numeric( $key ) ? date_i18n( 'Y-m-d', $key ) : $key; $daterange = new DatePeriod( new DateTime( $start ), new DateInterval('P1D'), new DateTime('-1 day') ); $retries_per_day = array(); foreach ( $retries_stats as $key => $count ) { $date = is_numeric( $key ) ? date_i18n( 'Y-m-d', $key ) : $key; if( empty( $retries_per_day[$date] ) ) { $retries_per_day[$date] = 0; } $retries_per_day[$date] += $count; } $chart2_data = array(); foreach ( $daterange as $date ) { $chart2_labels[] = $date->format( $date_format ); $chart2_data[] = ( !empty($retries_per_day[ $date->format("Y-m-d")] ) ) ? $retries_per_day[ $date->format("Y-m-d") ] : 0; } } else { $chart2_labels[] = ( new DateTime())->format( $date_format ); $chart2_data[] = 0; } $chart2_datasets[] = array( 'label' => __( 'Failed Login Attempts', 'limit-login-attempts-reloaded' ), 'data' => $chart2_data, ); } ?>
plugins/limit-login-attempts-reloaded/views/emails/failed-login.php000064400000067543147176754550021603 0ustar00


{domain} WordPress site.', 'limit-login-attempts-reloaded' ); ?>


  • {ip_address}', 'limit-login-attempts-reloaded' ); ?>
  • {username}', 'limit-login-attempts-reloaded' ); ?>

Go to Dashboard

Experiencing frequent attacks or degraded performance? You can now receive premium protection for FREE with ', 'limit-login-attempts-reloaded' ); ?>







plugins/limit-login-attempts-reloaded/views/micro-cloud-modal.php000064400000025053147176754550021274 0ustar00
%s with the Limit Login Attempts Reloaded cloud service.', 'limit-login-attempts-reloaded' ), $url_site); ?>
terms of service and privacy policy.', 'limit-login-attempts-reloaded' ), 'https://www.limitloginattempts.com/terms/', 'https://www.limitloginattempts.com/privacy-policy/' ); ?>
plugins/limit-login-attempts-reloaded/views/onboarding-popup.php000064400000056617147176754550021262 0ustar00
highly recommend upgrading to premium for the best protection against brute force attacks and unauthorized logins', 'limit-login-attempts-reloaded' ); ?>
Would you like to opt-in?', 'limit-login-attempts-reloaded' ); ?>
%s with the Limit Login Attempts Reloaded cloud service.', 'limit-login-attempts-reloaded' ), $url_site); ?>
terms of service by participating in this program.', 'limit-login-attempts-reloaded' ), 'https://www.limitloginattempts.com/terms/' ); ?>
plugins/limit-login-attempts-reloaded/views/options-page.php000064400000016443147176754550020375 0ustar00info_sub_group(); $upgrade_premium_url = $this->info_upgrade_url(); $is_agency = $block_sub_group === 'Agency'; $requests = ! $is_agency ? $this->info_requests() : false; $is_exhausted = ! $is_agency && $this->info_is_exhausted(); } else { $is_exhausted = false; $block_sub_group = ''; $upgrade_premium_url = ''; }?>
info_upgrade_url(); if ( $is_exhausted ) : if ( time() > $notifications_message_shown ) : ?>

Upgrade to the premium version today to maintain cloud protection and advanced features.', 'limit-login-attempts-reloaded' ), $upgrade_premium_url ); ?>

Upgrade to Premium today', 'limit-login-attempts-reloaded' ), $upgrade_premium_url ); ?>

plugins/limit-login-attempts-reloaded/views/tab-dashboard.php000064400000034265147176754550020465 0ustar00stats() : false; $setup_code = Config::get( 'app_setup_code' ); $wp_locale = str_replace( '_', '-', get_locale() ); $is_tab_dashboard = true; $url_site = is_multisite() ? network_site_url() : site_url(); if ( ! $is_active_app_custom && empty( $setup_code ) ) { require_once( LLA_PLUGIN_DIR . 'views/onboarding-popup.php'); } ?>
array_name_plans(); $upgrade_premium = ( $is_active_app_custom && $plans[$block_sub_group] >= $plans[$min_plan] ) ? ' checked' : ''; $checked_block_by_country = Config::get( 'block_by_country' ) === 'true' ? ' checked disabled' : ''; $block_by_country = $block_sub_group ? $this->info_block_by_country() : false; $block_by_country_disabled = $block_sub_group ? '' : ' disabled'; $is_by_country = $block_by_country ? $checked_block_by_country : $block_by_country_disabled; $is_auto_update_choice = (Helpers::is_auto_update_enabled() && !Helpers::is_block_automatic_update_disabled()) ? ' checked' : ''; $app_config = Config::get( 'app_config' ); $full_log_url = !empty( $app_config['key'] ) ? 'https://my.limitloginattempts.com/logs?key=' . esc_attr( $app_config['key'] ) : false; ?>
/>
Enable email notifications to receive timely alerts and updates via email.', 'limit-login-attempts-reloaded' ), '/wp-admin/admin.php?page=limit-login-attempts&tab=settings#llar_lockout_notify' ); ?>
/>
Read our guide on implementing and enforcing strong password policies in your organization.', 'limit-login-attempts-reloaded' ), 'https://www.limitloginattempts.com/info.php?id=1' ); ?>
/>
Allow or Deny countries to ensure only legitimate users login.', 'limit-login-attempts-reloaded' ), $link__allow_deny ); ?>
disabled />
Enable automatic updates to ensure that the plugin stays current with the latest software patches and features.', 'limit-login-attempts-reloaded' ); endif; ?>
disabled />
= $plans[ $min_plan ] ) ) : ?> info_upgrade_url() : 'https://www.limitloginattempts.com/info.php?id=3' ?> Upgrade to our premium version for advanced protection.', 'limit-login-attempts-reloaded' ), $link__allow_deny ); ?>
plugins/limit-login-attempts-reloaded/views/tab-debug.php000064400000006500147176754550017613 0ustar00 $value ) { if ( in_array( $key, array( 'SERVER_ADDR' ) ) || is_array( $value ) ) { continue; } $ips_for_check = array_map( 'trim', explode( ',', $value ) ); foreach ( $ips_for_check as $ip ) { if ( Helpers::is_ip_valid( $ip ) ) { if ( ! in_array( $ip, $ips ) ) { $ips[] = $ip; } if ( ! isset( $server[ $key ] ) ) { $server[ $key ] = ''; } if ( in_array( $ip, array( '127.0.0.1', '0.0.0.0' ) ) ) { $server[ $key ] = $ip; } else { $server[ $key ] .= 'IP' . array_search( $ip, $ips ) . ','; } } } } foreach ( $server as $server_key => $ips ) { $debug_info .= $server_key . ' = ' . trim( $ips, ',' ) . "\n"; } $plugin_data = get_plugin_data( LLA_PLUGIN_FILE ); ?>
plugins/limit-login-attempts-reloaded/views/tab-help.php000064400000023022147176754550017453 0ustar00
with any questions.', 'limit-login-attempts-reloaded' ); ?>
The majority of requests receive an answer within a few days.', 'limit-login-attempts-reloaded' ); ?>
plugins/limit-login-attempts-reloaded/views/tab-logs-custom.php000064400000004176147176754550021010 0ustar00 plugins/limit-login-attempts-reloaded/views/tab-logs-local.php000064400000040432147176754550020563 0ustar00

0 ) : ?>
0 ) : ?>
upgrade to premium.', 'limit-login-attempts-reloaded' ), 'https://www.limitloginattempts.com/info.php?from=plugin-denylist' ); ?>

Upgrade today to optimize or unload your DB by moving logs to the cloud.', 'limit-login-attempts-reloaded' ), 'https://www.limitloginattempts.com/info.php?from=plugin-clear-log' ); ?>
plugins/limit-login-attempts-reloaded/views/tab-premium.php000064400000016236147176754550020212 0ustar00array_name_plans(); $is_premium = ( $is_active_app_custom && $plans[$block_sub_group] >= $plans[$min_plan] ); ?>
Micro Cloud', 'limit-login-attempts-reloaded' ); ?> Premium', 'limit-login-attempts-reloaded' ); ?>
Limit Login Attempts Reloaded.', 'limit-login-attempts-reloaded' ); ?>

IP Intelligence. With IP intelligence, your website will be able to identify malicious IPs before they attempt a login, and absorb them into the cloud to save system resources. Your site will not only be more secure, but will operate at its optimal performance.', 'limit-login-attempts-reloaded' ); ?>

$list) : ?>
plugins/limit-login-attempts-reloaded/views/tab-settings.php000064400000135733147176754550020400 0ustar00array_name_plans(); $is_premium = ( $is_active_app_custom && $plans[ $block_sub_group ] >= $plans[ $min_plan ] ); $url_try_for_free = 'https://www.limitloginattempts.com/upgrade/?from=plugin-'; $url_try_for_free_cloud = ( $is_active_app_custom ) ? $this->info_upgrade_url() : ''; ?>

upgrading to our Cloud App.', 'limit-login-attempts-reloaded' ), '#' ); ?>




%1$s times, a lockout lasting %2$s minutes is activated. If additional failed attempts occur within %3$s hours and lead to another lockout, once their combined total hits %4$s, the %2$s minutes duration is extended to %5$s hours. The lockout will be lifted once %3$s hours have passed since the last lockout incident.', 'limit-login-attempts-reloaded' ), Config::get( 'allowed_retries' ), Config::get( 'lockout_duration' ) / 60, Config::get( 'valid_duration' ) / 3600, Config::get( 'allowed_lockouts' ), Config::get( 'long_duration' ) / 3600 ); ?>
do not use anything other than REMOTE_ADDR since other origins can be easily faked. Examples: HTTP_X_FORWARDED_FOR, HTTP_CF_CONNECTING_IP, HTTP_X_SUCURI_CLIENTIP', 'limit-login-attempts-reloaded' ); ?>

$setting_params ) : ?>


value="1"/>

value="1" class="use_global_options"/>
checked /> GDPR compliant by showing a message on the login page. Read more', 'limit-login-attempts-reloaded' ), 'https://gdpr-info.eu/', 'https://www.limitloginattempts.com/gdpr-qa/?from=plugin-settings-gdpr' ); ?>
The shortcode is: [llar-link url="https://example.com" text="Privacy Policy"]', 'limit-login-attempts-reloaded' ); ?>
value="email"/>
value="email"/>
We\'ve created an article to troubleshoot common email deliverability issues.', 'limit-login-attempts-reloaded' ), 'https://www.limitloginattempts.com/troubleshooting-guide-fixing-issues-with-non-functioning-emails-from-your-wordpress-site/' ); ?>
>
>
>
 
>

plugins/file-manager-advanced/application/assets/icon/fma.png000064400000000473147176754550020356 0ustar00PNG  IHDRaIDATxcd011;O@4&J! *e`df`l ÜCt?]JcfFa>90"N3?/(0Q3 ɌP/0"0Xp2!9bw! 2/i.̀Sd` 3(X pLla&'h|<}031Oeƞ^p_NaȇiRe@|$[/K8IENDB`plugins/file-manager-advanced/application/library/codemirror/lib/codemirror.css000064400000020166147176754550024112 0ustar00/* BASICS */ .CodeMirror { /* Set height, width, borders, and global font properties here */ font-family: monospace; height: inherit; color: black; } /* PADDING */ .CodeMirror-lines { padding: 4px 0; /* Vertical padding around content */ } .CodeMirror pre { padding: 0 4px; /* Horizontal padding of content */ } .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { background-color: white; /* The little square between H and V scrollbars */ } /* GUTTER */ .CodeMirror-gutters { border-right: 1px solid #ddd; background-color: #f7f7f7; white-space: nowrap; } .CodeMirror-linenumbers {} .CodeMirror-linenumber { padding: 0 3px 0 5px; min-width: 20px; text-align: right; color: #999; white-space: nowrap; } .CodeMirror-guttermarker { color: black; } .CodeMirror-guttermarker-subtle { color: #999; } /* CURSOR */ .CodeMirror-cursor { border-left: 1px solid black; border-right: none; width: 0; } /* Shown when moving in bi-directional text */ .CodeMirror div.CodeMirror-secondarycursor { border-left: 1px solid silver; } .cm-fat-cursor .CodeMirror-cursor { width: auto; border: 0 !important; background: #7e7; } .cm-fat-cursor div.CodeMirror-cursors { z-index: 1; } .cm-animate-fat-cursor { width: auto; border: 0; -webkit-animation: blink 1.06s steps(1) infinite; -moz-animation: blink 1.06s steps(1) infinite; animation: blink 1.06s steps(1) infinite; background-color: #7e7; } @-moz-keyframes blink { 0% {} 50% { background-color: transparent; } 100% {} } @-webkit-keyframes blink { 0% {} 50% { background-color: transparent; } 100% {} } @keyframes blink { 0% {} 50% { background-color: transparent; } 100% {} } /* Can style cursor different in overwrite (non-insert) mode */ .CodeMirror-overwrite .CodeMirror-cursor {} .cm-tab { display: inline-block; text-decoration: inherit; } .CodeMirror-rulers { position: absolute; left: 0; right: 0; top: -50px; bottom: -20px; overflow: hidden; } .CodeMirror-ruler { border-left: 1px solid #ccc; top: 0; bottom: 0; position: absolute; } /* DEFAULT THEME */ .cm-s-default .cm-header {color: blue;} .cm-s-default .cm-quote {color: #090;} .cm-negative {color: #d44;} .cm-positive {color: #292;} .cm-header, .cm-strong {font-weight: bold;} .cm-em {font-style: italic;} .cm-link {text-decoration: underline;} .cm-strikethrough {text-decoration: line-through;} .cm-s-default .cm-keyword {color: #708;} .cm-s-default .cm-atom {color: #219;} .cm-s-default .cm-number {color: #164;} .cm-s-default .cm-def {color: #00f;} .cm-s-default .cm-variable, .cm-s-default .cm-punctuation, .cm-s-default .cm-property, .cm-s-default .cm-operator {} .cm-s-default .cm-variable-2 {color: #05a;} .cm-s-default .cm-variable-3 {color: #085;} .cm-s-default .cm-comment {color: #a50;} .cm-s-default .cm-string {color: #a11;} .cm-s-default .cm-string-2 {color: #f50;} .cm-s-default .cm-meta {color: #555;} .cm-s-default .cm-qualifier {color: #555;} .cm-s-default .cm-builtin {color: #30a;} .cm-s-default .cm-bracket {color: #997;} .cm-s-default .cm-tag {color: #170;} .cm-s-default .cm-attribute {color: #00c;} .cm-s-default .cm-hr {color: #999;} .cm-s-default .cm-link {color: #00c;} .cm-s-default .cm-error {color: #f00;} .cm-invalidchar {color: #f00;} .CodeMirror-composing { border-bottom: 2px solid; } /* Default styles for common addons */ div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;} div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;} .CodeMirror-matchingtag { background: rgba(255, 150, 0, .3); } .CodeMirror-activeline-background {background: #e8f2ff;} /* STOP */ /* The rest of this file contains styles related to the mechanics of the editor. You probably shouldn't touch them. */ .CodeMirror { position: relative; overflow: hidden; background: white; } .CodeMirror-scroll { overflow: scroll !important; /* Things will break if this is overridden */ /* 30px is the magic margin used to hide the element's real scrollbars */ /* See overflow: hidden in .CodeMirror */ margin-bottom: -30px; margin-right: -30px; padding-bottom: 30px; height: 100%; outline: none; /* Prevent dragging from highlighting the element */ position: relative; } .CodeMirror-sizer { position: relative; border-right: 30px solid transparent; } /* The fake, visible scrollbars. Used to force redraw during scrolling before actual scrolling happens, thus preventing shaking and flickering artifacts. */ .CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { position: absolute; z-index: 6; display: none; } .CodeMirror-vscrollbar { right: 0; top: 0; overflow-x: hidden; overflow-y: scroll; } .CodeMirror-hscrollbar { bottom: 0; left: 0; overflow-y: hidden; overflow-x: scroll; } .CodeMirror-scrollbar-filler { right: 0; bottom: 0; } .CodeMirror-gutter-filler { left: 0; bottom: 0; } .CodeMirror-gutters { position: absolute; left: 0; top: 0; min-height: 100%; z-index: 3; } .CodeMirror-gutter { white-space: normal; height: 100%; display: inline-block; vertical-align: top; margin-bottom: -30px; /* Hack to make IE7 behave */ *zoom:1; *display:inline; } .CodeMirror-gutter-wrapper { position: absolute; z-index: 4; background: none !important; border: none !important; } .CodeMirror-gutter-background { position: absolute; top: 0; bottom: 0; z-index: 4; } .CodeMirror-gutter-elt { position: absolute; cursor: default; z-index: 4; } .CodeMirror-gutter-wrapper { -webkit-user-select: none; -moz-user-select: none; user-select: none; } .CodeMirror-lines { cursor: text; min-height: 1px; /* prevents collapsing before first draw */ } .CodeMirror pre { /* Reset some styles that the rest of the page might have set */ -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; border-width: 0; background: transparent; font-family: inherit; font-size: inherit; margin: 0; white-space: pre; word-wrap: normal; line-height: inherit; color: inherit; z-index: 2; position: relative; overflow: visible; -webkit-tap-highlight-color: transparent; -webkit-font-variant-ligatures: none; font-variant-ligatures: none; } .CodeMirror-wrap pre { word-wrap: break-word; white-space: pre-wrap; word-break: normal; } .CodeMirror-linebackground { position: absolute; left: 0; right: 0; top: 0; bottom: 0; z-index: 0; } .CodeMirror-linewidget { position: relative; z-index: 2; overflow: auto; } .CodeMirror-widget {} .CodeMirror-code { outline: none; } /* Force content-box sizing for the elements where we expect it */ .CodeMirror-scroll, .CodeMirror-sizer, .CodeMirror-gutter, .CodeMirror-gutters, .CodeMirror-linenumber { -moz-box-sizing: content-box; box-sizing: content-box; } .CodeMirror-measure { position: absolute; width: 100%; height: 0; overflow: hidden; visibility: hidden; } .CodeMirror-cursor { position: absolute; pointer-events: none; } .CodeMirror-measure pre { position: static; } div.CodeMirror-cursors { visibility: hidden; position: relative; z-index: 3; } div.CodeMirror-dragcursors { visibility: visible; } .CodeMirror-focused div.CodeMirror-cursors { visibility: visible; } .CodeMirror-selected { background: #d9d9d9; } .CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; } .CodeMirror-crosshair { cursor: crosshair; } .CodeMirror-line::selection, .CodeMirror-line > span::selection, .CodeMirror-line > span > span::selection { background: #d7d4f0; } .CodeMirror-line::-moz-selection, .CodeMirror-line > span::-moz-selection, .CodeMirror-line > span > span::-moz-selection { background: #d7d4f0; } .cm-searching { background: #ffa; background: rgba(255, 255, 0, .4); } /* IE7 hack to prevent it from returning funny offsetTops on the spans */ .CodeMirror span { *vertical-align: text-bottom; } /* Used to force a border model for a node */ .cm-force-border { padding-right: .1px; } @media print { /* Hide the cursor when printing */ .CodeMirror div.CodeMirror-cursors { visibility: hidden; } } /* See issue #2901 */ .cm-tab-wrap-hack:after { content: ''; } /* Help users use markselection to safely style text background */ span.CodeMirror-selectedtext { background: none; } plugins/file-manager-advanced/application/library/codemirror/lib/codemirror.js000064400001271311147176754550023737 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE // This is CodeMirror (http://codemirror.net), a code editor // implemented in JavaScript on top of the browser's DOM. // // You can find some technical background for some of the code below // at http://marijnhaverbeke.nl/blog/#cm-internals . (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS module.exports = mod(); else if (typeof define == "function" && define.amd) // AMD return define([], mod); else // Plain browser env (this || window).CodeMirror = mod(); })(function() { "use strict"; // BROWSER SNIFFING // Kludges for bugs and behavior differences that can't be feature // detected are enabled based on userAgent etc sniffing. var userAgent = navigator.userAgent; var platform = navigator.platform; var gecko = /gecko\/\d/i.test(userAgent); var ie_upto10 = /MSIE \d/.test(userAgent); var ie_11up = /Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(userAgent); var ie = ie_upto10 || ie_11up; var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : ie_11up[1]); var webkit = /WebKit\//.test(userAgent); var qtwebkit = webkit && /Qt\/\d+\.\d+/.test(userAgent); var chrome = /Chrome\//.test(userAgent); var presto = /Opera\//.test(userAgent); var safari = /Apple Computer/.test(navigator.vendor); var mac_geMountainLion = /Mac OS X 1\d\D([8-9]|\d\d)\D/.test(userAgent); var phantom = /PhantomJS/.test(userAgent); var ios = /AppleWebKit/.test(userAgent) && /Mobile\/\w+/.test(userAgent); // This is woefully incomplete. Suggestions for alternative methods welcome. var mobile = ios || /Android|webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent); var mac = ios || /Mac/.test(platform); var chromeOS = /\bCrOS\b/.test(userAgent); var windows = /win/i.test(platform); var presto_version = presto && userAgent.match(/Version\/(\d*\.\d*)/); if (presto_version) presto_version = Number(presto_version[1]); if (presto_version && presto_version >= 15) { presto = false; webkit = true; } // Some browsers use the wrong event properties to signal cmd/ctrl on OS X var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11)); var captureRightClick = gecko || (ie && ie_version >= 9); // Optimize some code when these features are not used. var sawReadOnlySpans = false, sawCollapsedSpans = false; // EDITOR CONSTRUCTOR // A CodeMirror instance represents an editor. This is the object // that user code is usually dealing with. function CodeMirror(place, options) { if (!(this instanceof CodeMirror)) return new CodeMirror(place, options); this.options = options = options ? copyObj(options) : {}; // Determine effective options based on given values and defaults. copyObj(defaults, options, false); setGuttersForLineNumbers(options); var doc = options.value; if (typeof doc == "string") doc = new Doc(doc, options.mode, null, options.lineSeparator); this.doc = doc; var input = new CodeMirror.inputStyles[options.inputStyle](this); var display = this.display = new Display(place, doc, input); display.wrapper.CodeMirror = this; updateGutters(this); themeChanged(this); if (options.lineWrapping) this.display.wrapper.className += " CodeMirror-wrap"; if (options.autofocus && !mobile) display.input.focus(); initScrollbars(this); this.state = { keyMaps: [], // stores maps added by addKeyMap overlays: [], // highlighting overlays, as added by addOverlay modeGen: 0, // bumped when mode/overlay changes, used to invalidate highlighting info overwrite: false, delayingBlurEvent: false, focused: false, suppressEdits: false, // used to disable editing during key handlers when in readOnly mode pasteIncoming: false, cutIncoming: false, // help recognize paste/cut edits in input.poll selectingText: false, draggingText: false, highlight: new Delayed(), // stores highlight worker timeout keySeq: null, // Unfinished key sequence specialChars: null }; var cm = this; // Override magic textarea content restore that IE sometimes does // on our hidden textarea on reload if (ie && ie_version < 11) setTimeout(function() { cm.display.input.reset(true); }, 20); registerEventHandlers(this); ensureGlobalHandlers(); startOperation(this); this.curOp.forceUpdate = true; attachDoc(this, doc); if ((options.autofocus && !mobile) || cm.hasFocus()) setTimeout(bind(onFocus, this), 20); else onBlur(this); for (var opt in optionHandlers) if (optionHandlers.hasOwnProperty(opt)) optionHandlers[opt](this, options[opt], Init); maybeUpdateLineNumberWidth(this); if (options.finishInit) options.finishInit(this); for (var i = 0; i < initHooks.length; ++i) initHooks[i](this); endOperation(this); // Suppress optimizelegibility in Webkit, since it breaks text // measuring on line wrapping boundaries. if (webkit && options.lineWrapping && getComputedStyle(display.lineDiv).textRendering == "optimizelegibility") display.lineDiv.style.textRendering = "auto"; } // DISPLAY CONSTRUCTOR // The display handles the DOM integration, both for input reading // and content drawing. It holds references to DOM nodes and // display-related state. function Display(place, doc, input) { var d = this; this.input = input; // Covers bottom-right square when both scrollbars are present. d.scrollbarFiller = elt("div", null, "CodeMirror-scrollbar-filler"); d.scrollbarFiller.setAttribute("cm-not-content", "true"); // Covers bottom of gutter when coverGutterNextToScrollbar is on // and h scrollbar is present. d.gutterFiller = elt("div", null, "CodeMirror-gutter-filler"); d.gutterFiller.setAttribute("cm-not-content", "true"); // Will contain the actual code, positioned to cover the viewport. d.lineDiv = elt("div", null, "CodeMirror-code"); // Elements are added to these to represent selection and cursors. d.selectionDiv = elt("div", null, null, "position: relative; z-index: 1"); d.cursorDiv = elt("div", null, "CodeMirror-cursors"); // A visibility: hidden element used to find the size of things. d.measure = elt("div", null, "CodeMirror-measure"); // When lines outside of the viewport are measured, they are drawn in this. d.lineMeasure = elt("div", null, "CodeMirror-measure"); // Wraps everything that needs to exist inside the vertically-padded coordinate system d.lineSpace = elt("div", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv], null, "position: relative; outline: none"); // Moved around its parent to cover visible view. d.mover = elt("div", [elt("div", [d.lineSpace], "CodeMirror-lines")], null, "position: relative"); // Set to the height of the document, allowing scrolling. d.sizer = elt("div", [d.mover], "CodeMirror-sizer"); d.sizerWidth = null; // Behavior of elts with overflow: auto and padding is // inconsistent across browsers. This is used to ensure the // scrollable area is big enough. d.heightForcer = elt("div", null, null, "position: absolute; height: " + scrollerGap + "px; width: 1px;"); // Will contain the gutters, if any. d.gutters = elt("div", null, "CodeMirror-gutters"); d.lineGutter = null; // Actual scrollable element. d.scroller = elt("div", [d.sizer, d.heightForcer, d.gutters], "CodeMirror-scroll"); d.scroller.setAttribute("tabIndex", "-1"); // The element in which the editor lives. d.wrapper = elt("div", [d.scrollbarFiller, d.gutterFiller, d.scroller], "CodeMirror"); // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported) if (ie && ie_version < 8) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0; } if (!webkit && !(gecko && mobile)) d.scroller.draggable = true; if (place) { if (place.appendChild) place.appendChild(d.wrapper); else place(d.wrapper); } // Current rendered range (may be bigger than the view window). d.viewFrom = d.viewTo = doc.first; d.reportedViewFrom = d.reportedViewTo = doc.first; // Information about the rendered lines. d.view = []; d.renderedView = null; // Holds info about a single rendered line when it was rendered // for measurement, while not in view. d.externalMeasured = null; // Empty space (in pixels) above the view d.viewOffset = 0; d.lastWrapHeight = d.lastWrapWidth = 0; d.updateLineNumbers = null; d.nativeBarWidth = d.barHeight = d.barWidth = 0; d.scrollbarsClipped = false; // Used to only resize the line number gutter when necessary (when // the amount of lines crosses a boundary that makes its width change) d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null; // Set to true when a non-horizontal-scrolling line widget is // added. As an optimization, line widget aligning is skipped when // this is false. d.alignWidgets = false; d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null; // Tracks the maximum line length so that the horizontal scrollbar // can be kept static when scrolling. d.maxLine = null; d.maxLineLength = 0; d.maxLineChanged = false; // Used for measuring wheel scrolling granularity d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null; // True when shift is held down. d.shift = false; // Used to track whether anything happened since the context menu // was opened. d.selForContextMenu = null; d.activeTouch = null; input.init(d); } // STATE UPDATES // Used to get the editor into a consistent state again when options change. function loadMode(cm) { cm.doc.mode = CodeMirror.getMode(cm.options, cm.doc.modeOption); resetModeState(cm); } function resetModeState(cm) { cm.doc.iter(function(line) { if (line.stateAfter) line.stateAfter = null; if (line.styles) line.styles = null; }); cm.doc.frontier = cm.doc.first; startWorker(cm, 100); cm.state.modeGen++; if (cm.curOp) regChange(cm); } function wrappingChanged(cm) { if (cm.options.lineWrapping) { addClass(cm.display.wrapper, "CodeMirror-wrap"); cm.display.sizer.style.minWidth = ""; cm.display.sizerWidth = null; } else { rmClass(cm.display.wrapper, "CodeMirror-wrap"); findMaxLine(cm); } estimateLineHeights(cm); regChange(cm); clearCaches(cm); setTimeout(function(){updateScrollbars(cm);}, 100); } // Returns a function that estimates the height of a line, to use as // first approximation until the line becomes visible (and is thus // properly measurable). function estimateHeight(cm) { var th = textHeight(cm.display), wrapping = cm.options.lineWrapping; var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3); return function(line) { if (lineIsHidden(cm.doc, line)) return 0; var widgetsHeight = 0; if (line.widgets) for (var i = 0; i < line.widgets.length; i++) { if (line.widgets[i].height) widgetsHeight += line.widgets[i].height; } if (wrapping) return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th; else return widgetsHeight + th; }; } function estimateLineHeights(cm) { var doc = cm.doc, est = estimateHeight(cm); doc.iter(function(line) { var estHeight = est(line); if (estHeight != line.height) updateLineHeight(line, estHeight); }); } function themeChanged(cm) { cm.display.wrapper.className = cm.display.wrapper.className.replace(/\s*cm-s-\S+/g, "") + cm.options.theme.replace(/(^|\s)\s*/g, " cm-s-"); clearCaches(cm); } function guttersChanged(cm) { updateGutters(cm); regChange(cm); setTimeout(function(){alignHorizontally(cm);}, 20); } // Rebuild the gutter elements, ensure the margin to the left of the // code matches their width. function updateGutters(cm) { var gutters = cm.display.gutters, specs = cm.options.gutters; removeChildren(gutters); for (var i = 0; i < specs.length; ++i) { var gutterClass = specs[i]; var gElt = gutters.appendChild(elt("div", null, "CodeMirror-gutter " + gutterClass)); if (gutterClass == "CodeMirror-linenumbers") { cm.display.lineGutter = gElt; gElt.style.width = (cm.display.lineNumWidth || 1) + "px"; } } gutters.style.display = i ? "" : "none"; updateGutterSpace(cm); } function updateGutterSpace(cm) { var width = cm.display.gutters.offsetWidth; cm.display.sizer.style.marginLeft = width + "px"; } // Compute the character length of a line, taking into account // collapsed ranges (see markText) that might hide parts, and join // other lines onto it. function lineLength(line) { if (line.height == 0) return 0; var len = line.text.length, merged, cur = line; while (merged = collapsedSpanAtStart(cur)) { var found = merged.find(0, true); cur = found.from.line; len += found.from.ch - found.to.ch; } cur = line; while (merged = collapsedSpanAtEnd(cur)) { var found = merged.find(0, true); len -= cur.text.length - found.from.ch; cur = found.to.line; len += cur.text.length - found.to.ch; } return len; } // Find the longest line in the document. function findMaxLine(cm) { var d = cm.display, doc = cm.doc; d.maxLine = getLine(doc, doc.first); d.maxLineLength = lineLength(d.maxLine); d.maxLineChanged = true; doc.iter(function(line) { var len = lineLength(line); if (len > d.maxLineLength) { d.maxLineLength = len; d.maxLine = line; } }); } // Make sure the gutters options contains the element // "CodeMirror-linenumbers" when the lineNumbers option is true. function setGuttersForLineNumbers(options) { var found = indexOf(options.gutters, "CodeMirror-linenumbers"); if (found == -1 && options.lineNumbers) { options.gutters = options.gutters.concat(["CodeMirror-linenumbers"]); } else if (found > -1 && !options.lineNumbers) { options.gutters = options.gutters.slice(0); options.gutters.splice(found, 1); } } // SCROLLBARS // Prepare DOM reads needed to update the scrollbars. Done in one // shot to minimize update/measure roundtrips. function measureForScrollbars(cm) { var d = cm.display, gutterW = d.gutters.offsetWidth; var docH = Math.round(cm.doc.height + paddingVert(cm.display)); return { clientHeight: d.scroller.clientHeight, viewHeight: d.wrapper.clientHeight, scrollWidth: d.scroller.scrollWidth, clientWidth: d.scroller.clientWidth, viewWidth: d.wrapper.clientWidth, barLeft: cm.options.fixedGutter ? gutterW : 0, docHeight: docH, scrollHeight: docH + scrollGap(cm) + d.barHeight, nativeBarWidth: d.nativeBarWidth, gutterWidth: gutterW }; } function NativeScrollbars(place, scroll, cm) { this.cm = cm; var vert = this.vert = elt("div", [elt("div", null, null, "min-width: 1px")], "CodeMirror-vscrollbar"); var horiz = this.horiz = elt("div", [elt("div", null, null, "height: 100%; min-height: 1px")], "CodeMirror-hscrollbar"); place(vert); place(horiz); on(vert, "scroll", function() { if (vert.clientHeight) scroll(vert.scrollTop, "vertical"); }); on(horiz, "scroll", function() { if (horiz.clientWidth) scroll(horiz.scrollLeft, "horizontal"); }); this.checkedZeroWidth = false; // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8). if (ie && ie_version < 8) this.horiz.style.minHeight = this.vert.style.minWidth = "18px"; } NativeScrollbars.prototype = copyObj({ update: function(measure) { var needsH = measure.scrollWidth > measure.clientWidth + 1; var needsV = measure.scrollHeight > measure.clientHeight + 1; var sWidth = measure.nativeBarWidth; if (needsV) { this.vert.style.display = "block"; this.vert.style.bottom = needsH ? sWidth + "px" : "0"; var totalHeight = measure.viewHeight - (needsH ? sWidth : 0); // A bug in IE8 can cause this value to be negative, so guard it. this.vert.firstChild.style.height = Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + "px"; } else { this.vert.style.display = ""; this.vert.firstChild.style.height = "0"; } if (needsH) { this.horiz.style.display = "block"; this.horiz.style.right = needsV ? sWidth + "px" : "0"; this.horiz.style.left = measure.barLeft + "px"; var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0); this.horiz.firstChild.style.width = (measure.scrollWidth - measure.clientWidth + totalWidth) + "px"; } else { this.horiz.style.display = ""; this.horiz.firstChild.style.width = "0"; } if (!this.checkedZeroWidth && measure.clientHeight > 0) { if (sWidth == 0) this.zeroWidthHack(); this.checkedZeroWidth = true; } return {right: needsV ? sWidth : 0, bottom: needsH ? sWidth : 0}; }, setScrollLeft: function(pos) { if (this.horiz.scrollLeft != pos) this.horiz.scrollLeft = pos; if (this.disableHoriz) this.enableZeroWidthBar(this.horiz, this.disableHoriz); }, setScrollTop: function(pos) { if (this.vert.scrollTop != pos) this.vert.scrollTop = pos; if (this.disableVert) this.enableZeroWidthBar(this.vert, this.disableVert); }, zeroWidthHack: function() { var w = mac && !mac_geMountainLion ? "12px" : "18px"; this.horiz.style.height = this.vert.style.width = w; this.horiz.style.pointerEvents = this.vert.style.pointerEvents = "none"; this.disableHoriz = new Delayed; this.disableVert = new Delayed; }, enableZeroWidthBar: function(bar, delay) { bar.style.pointerEvents = "auto"; function maybeDisable() { // To find out whether the scrollbar is still visible, we // check whether the element under the pixel in the bottom // left corner of the scrollbar box is the scrollbar box // itself (when the bar is still visible) or its filler child // (when the bar is hidden). If it is still visible, we keep // it enabled, if it's hidden, we disable pointer events. var box = bar.getBoundingClientRect(); var elt = document.elementFromPoint(box.left + 1, box.bottom - 1); if (elt != bar) bar.style.pointerEvents = "none"; else delay.set(1000, maybeDisable); } delay.set(1000, maybeDisable); }, clear: function() { var parent = this.horiz.parentNode; parent.removeChild(this.horiz); parent.removeChild(this.vert); } }, NativeScrollbars.prototype); function NullScrollbars() {} NullScrollbars.prototype = copyObj({ update: function() { return {bottom: 0, right: 0}; }, setScrollLeft: function() {}, setScrollTop: function() {}, clear: function() {} }, NullScrollbars.prototype); CodeMirror.scrollbarModel = {"native": NativeScrollbars, "null": NullScrollbars}; function initScrollbars(cm) { if (cm.display.scrollbars) { cm.display.scrollbars.clear(); if (cm.display.scrollbars.addClass) rmClass(cm.display.wrapper, cm.display.scrollbars.addClass); } cm.display.scrollbars = new CodeMirror.scrollbarModel[cm.options.scrollbarStyle](function(node) { cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller); // Prevent clicks in the scrollbars from killing focus on(node, "mousedown", function() { if (cm.state.focused) setTimeout(function() { cm.display.input.focus(); }, 0); }); node.setAttribute("cm-not-content", "true"); }, function(pos, axis) { if (axis == "horizontal") setScrollLeft(cm, pos); else setScrollTop(cm, pos); }, cm); if (cm.display.scrollbars.addClass) addClass(cm.display.wrapper, cm.display.scrollbars.addClass); } function updateScrollbars(cm, measure) { if (!measure) measure = measureForScrollbars(cm); var startWidth = cm.display.barWidth, startHeight = cm.display.barHeight; updateScrollbarsInner(cm, measure); for (var i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) { if (startWidth != cm.display.barWidth && cm.options.lineWrapping) updateHeightsInViewport(cm); updateScrollbarsInner(cm, measureForScrollbars(cm)); startWidth = cm.display.barWidth; startHeight = cm.display.barHeight; } } // Re-synchronize the fake scrollbars with the actual size of the // content. function updateScrollbarsInner(cm, measure) { var d = cm.display; var sizes = d.scrollbars.update(measure); d.sizer.style.paddingRight = (d.barWidth = sizes.right) + "px"; d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + "px"; d.heightForcer.style.borderBottom = sizes.bottom + "px solid transparent" if (sizes.right && sizes.bottom) { d.scrollbarFiller.style.display = "block"; d.scrollbarFiller.style.height = sizes.bottom + "px"; d.scrollbarFiller.style.width = sizes.right + "px"; } else d.scrollbarFiller.style.display = ""; if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) { d.gutterFiller.style.display = "block"; d.gutterFiller.style.height = sizes.bottom + "px"; d.gutterFiller.style.width = measure.gutterWidth + "px"; } else d.gutterFiller.style.display = ""; } // Compute the lines that are visible in a given viewport (defaults // the the current scroll position). viewport may contain top, // height, and ensure (see op.scrollToPos) properties. function visibleLines(display, doc, viewport) { var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop; top = Math.floor(top - paddingTop(display)); var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight; var from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom); // Ensure is a {from: {line, ch}, to: {line, ch}} object, and // forces those lines into the viewport (if possible). if (viewport && viewport.ensure) { var ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line; if (ensureFrom < from) { from = ensureFrom; to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight); } else if (Math.min(ensureTo, doc.lastLine()) >= to) { from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight); to = ensureTo; } } return {from: from, to: Math.max(to, from + 1)}; } // LINE NUMBERS // Re-align line numbers and gutter marks to compensate for // horizontal scrolling. function alignHorizontally(cm) { var display = cm.display, view = display.view; if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) return; var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft; var gutterW = display.gutters.offsetWidth, left = comp + "px"; for (var i = 0; i < view.length; i++) if (!view[i].hidden) { if (cm.options.fixedGutter) { if (view[i].gutter) view[i].gutter.style.left = left; if (view[i].gutterBackground) view[i].gutterBackground.style.left = left; } var align = view[i].alignable; if (align) for (var j = 0; j < align.length; j++) align[j].style.left = left; } if (cm.options.fixedGutter) display.gutters.style.left = (comp + gutterW) + "px"; } // Used to ensure that the line number gutter is still the right // size for the current document size. Returns true when an update // is needed. function maybeUpdateLineNumberWidth(cm) { if (!cm.options.lineNumbers) return false; var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display; if (last.length != display.lineNumChars) { var test = display.measure.appendChild(elt("div", [elt("div", last)], "CodeMirror-linenumber CodeMirror-gutter-elt")); var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW; display.lineGutter.style.width = ""; display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1; display.lineNumWidth = display.lineNumInnerWidth + padding; display.lineNumChars = display.lineNumInnerWidth ? last.length : -1; display.lineGutter.style.width = display.lineNumWidth + "px"; updateGutterSpace(cm); return true; } return false; } function lineNumberFor(options, i) { return String(options.lineNumberFormatter(i + options.firstLineNumber)); } // Computes display.scroller.scrollLeft + display.gutters.offsetWidth, // but using getBoundingClientRect to get a sub-pixel-accurate // result. function compensateForHScroll(display) { return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left; } // DISPLAY DRAWING function DisplayUpdate(cm, viewport, force) { var display = cm.display; this.viewport = viewport; // Store some values that we'll need later (but don't want to force a relayout for) this.visible = visibleLines(display, cm.doc, viewport); this.editorIsHidden = !display.wrapper.offsetWidth; this.wrapperHeight = display.wrapper.clientHeight; this.wrapperWidth = display.wrapper.clientWidth; this.oldDisplayWidth = displayWidth(cm); this.force = force; this.dims = getDimensions(cm); this.events = []; } DisplayUpdate.prototype.signal = function(emitter, type) { if (hasHandler(emitter, type)) this.events.push(arguments); }; DisplayUpdate.prototype.finish = function() { for (var i = 0; i < this.events.length; i++) signal.apply(null, this.events[i]); }; function maybeClipScrollbars(cm) { var display = cm.display; if (!display.scrollbarsClipped && display.scroller.offsetWidth) { display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth; display.heightForcer.style.height = scrollGap(cm) + "px"; display.sizer.style.marginBottom = -display.nativeBarWidth + "px"; display.sizer.style.borderRightWidth = scrollGap(cm) + "px"; display.scrollbarsClipped = true; } } // Does the actual updating of the line display. Bails out // (returning false) when there is nothing to be done and forced is // false. function updateDisplayIfNeeded(cm, update) { var display = cm.display, doc = cm.doc; if (update.editorIsHidden) { resetView(cm); return false; } // Bail out if the visible area is already rendered and nothing changed. if (!update.force && update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo && (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) && display.renderedView == display.view && countDirtyView(cm) == 0) return false; if (maybeUpdateLineNumberWidth(cm)) { resetView(cm); update.dims = getDimensions(cm); } // Compute a suitable new viewport (from & to) var end = doc.first + doc.size; var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first); var to = Math.min(end, update.visible.to + cm.options.viewportMargin); if (display.viewFrom < from && from - display.viewFrom < 20) from = Math.max(doc.first, display.viewFrom); if (display.viewTo > to && display.viewTo - to < 20) to = Math.min(end, display.viewTo); if (sawCollapsedSpans) { from = visualLineNo(cm.doc, from); to = visualLineEndNo(cm.doc, to); } var different = from != display.viewFrom || to != display.viewTo || display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth; adjustView(cm, from, to); display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom)); // Position the mover div to align with the current scroll position cm.display.mover.style.top = display.viewOffset + "px"; var toUpdate = countDirtyView(cm); if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view && (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo)) return false; // For big changes, we hide the enclosing element during the // update, since that speeds up the operations on most browsers. var focused = activeElt(); if (toUpdate > 4) display.lineDiv.style.display = "none"; patchDisplay(cm, display.updateLineNumbers, update.dims); if (toUpdate > 4) display.lineDiv.style.display = ""; display.renderedView = display.view; // There might have been a widget with a focused element that got // hidden or updated, if so re-focus it. if (focused && activeElt() != focused && focused.offsetHeight) focused.focus(); // Prevent selection and cursors from interfering with the scroll // width and height. removeChildren(display.cursorDiv); removeChildren(display.selectionDiv); display.gutters.style.height = display.sizer.style.minHeight = 0; if (different) { display.lastWrapHeight = update.wrapperHeight; display.lastWrapWidth = update.wrapperWidth; startWorker(cm, 400); } display.updateLineNumbers = null; return true; } function postUpdateDisplay(cm, update) { var viewport = update.viewport; for (var first = true;; first = false) { if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) { // Clip forced viewport to actual scrollable area. if (viewport && viewport.top != null) viewport = {top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)}; // Updated line heights might result in the drawn area not // actually covering the viewport. Keep looping until it does. update.visible = visibleLines(cm.display, cm.doc, viewport); if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo) break; } if (!updateDisplayIfNeeded(cm, update)) break; updateHeightsInViewport(cm); var barMeasure = measureForScrollbars(cm); updateSelection(cm); updateScrollbars(cm, barMeasure); setDocumentHeight(cm, barMeasure); } update.signal(cm, "update", cm); if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) { update.signal(cm, "viewportChange", cm, cm.display.viewFrom, cm.display.viewTo); cm.display.reportedViewFrom = cm.display.viewFrom; cm.display.reportedViewTo = cm.display.viewTo; } } function updateDisplaySimple(cm, viewport) { var update = new DisplayUpdate(cm, viewport); if (updateDisplayIfNeeded(cm, update)) { updateHeightsInViewport(cm); postUpdateDisplay(cm, update); var barMeasure = measureForScrollbars(cm); updateSelection(cm); updateScrollbars(cm, barMeasure); setDocumentHeight(cm, barMeasure); update.finish(); } } function setDocumentHeight(cm, measure) { cm.display.sizer.style.minHeight = measure.docHeight + "px"; cm.display.heightForcer.style.top = measure.docHeight + "px"; cm.display.gutters.style.height = (measure.docHeight + cm.display.barHeight + scrollGap(cm)) + "px"; } // Read the actual heights of the rendered lines, and update their // stored heights to match. function updateHeightsInViewport(cm) { var display = cm.display; var prevBottom = display.lineDiv.offsetTop; for (var i = 0; i < display.view.length; i++) { var cur = display.view[i], height; if (cur.hidden) continue; if (ie && ie_version < 8) { var bot = cur.node.offsetTop + cur.node.offsetHeight; height = bot - prevBottom; prevBottom = bot; } else { var box = cur.node.getBoundingClientRect(); height = box.bottom - box.top; } var diff = cur.line.height - height; if (height < 2) height = textHeight(display); if (diff > .001 || diff < -.001) { updateLineHeight(cur.line, height); updateWidgetHeight(cur.line); if (cur.rest) for (var j = 0; j < cur.rest.length; j++) updateWidgetHeight(cur.rest[j]); } } } // Read and store the height of line widgets associated with the // given line. function updateWidgetHeight(line) { if (line.widgets) for (var i = 0; i < line.widgets.length; ++i) line.widgets[i].height = line.widgets[i].node.parentNode.offsetHeight; } // Do a bulk-read of the DOM positions and sizes needed to draw the // view, so that we don't interleave reading and writing to the DOM. function getDimensions(cm) { var d = cm.display, left = {}, width = {}; var gutterLeft = d.gutters.clientLeft; for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) { left[cm.options.gutters[i]] = n.offsetLeft + n.clientLeft + gutterLeft; width[cm.options.gutters[i]] = n.clientWidth; } return {fixedPos: compensateForHScroll(d), gutterTotalWidth: d.gutters.offsetWidth, gutterLeft: left, gutterWidth: width, wrapperWidth: d.wrapper.clientWidth}; } // Sync the actual display DOM structure with display.view, removing // nodes for lines that are no longer in view, and creating the ones // that are not there yet, and updating the ones that are out of // date. function patchDisplay(cm, updateNumbersFrom, dims) { var display = cm.display, lineNumbers = cm.options.lineNumbers; var container = display.lineDiv, cur = container.firstChild; function rm(node) { var next = node.nextSibling; // Works around a throw-scroll bug in OS X Webkit if (webkit && mac && cm.display.currentWheelTarget == node) node.style.display = "none"; else node.parentNode.removeChild(node); return next; } var view = display.view, lineN = display.viewFrom; // Loop over the elements in the view, syncing cur (the DOM nodes // in display.lineDiv) with the view as we go. for (var i = 0; i < view.length; i++) { var lineView = view[i]; if (lineView.hidden) { } else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet var node = buildLineElement(cm, lineView, lineN, dims); container.insertBefore(node, cur); } else { // Already drawn while (cur != lineView.node) cur = rm(cur); var updateNumber = lineNumbers && updateNumbersFrom != null && updateNumbersFrom <= lineN && lineView.lineNumber; if (lineView.changes) { if (indexOf(lineView.changes, "gutter") > -1) updateNumber = false; updateLineForChanges(cm, lineView, lineN, dims); } if (updateNumber) { removeChildren(lineView.lineNumber); lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN))); } cur = lineView.node.nextSibling; } lineN += lineView.size; } while (cur) cur = rm(cur); } // When an aspect of a line changes, a string is added to // lineView.changes. This updates the relevant part of the line's // DOM structure. function updateLineForChanges(cm, lineView, lineN, dims) { for (var j = 0; j < lineView.changes.length; j++) { var type = lineView.changes[j]; if (type == "text") updateLineText(cm, lineView); else if (type == "gutter") updateLineGutter(cm, lineView, lineN, dims); else if (type == "class") updateLineClasses(lineView); else if (type == "widget") updateLineWidgets(cm, lineView, dims); } lineView.changes = null; } // Lines with gutter elements, widgets or a background class need to // be wrapped, and have the extra elements added to the wrapper div function ensureLineWrapped(lineView) { if (lineView.node == lineView.text) { lineView.node = elt("div", null, null, "position: relative"); if (lineView.text.parentNode) lineView.text.parentNode.replaceChild(lineView.node, lineView.text); lineView.node.appendChild(lineView.text); if (ie && ie_version < 8) lineView.node.style.zIndex = 2; } return lineView.node; } function updateLineBackground(lineView) { var cls = lineView.bgClass ? lineView.bgClass + " " + (lineView.line.bgClass || "") : lineView.line.bgClass; if (cls) cls += " CodeMirror-linebackground"; if (lineView.background) { if (cls) lineView.background.className = cls; else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null; } } else if (cls) { var wrap = ensureLineWrapped(lineView); lineView.background = wrap.insertBefore(elt("div", null, cls), wrap.firstChild); } } // Wrapper around buildLineContent which will reuse the structure // in display.externalMeasured when possible. function getLineContent(cm, lineView) { var ext = cm.display.externalMeasured; if (ext && ext.line == lineView.line) { cm.display.externalMeasured = null; lineView.measure = ext.measure; return ext.built; } return buildLineContent(cm, lineView); } // Redraw the line's text. Interacts with the background and text // classes because the mode may output tokens that influence these // classes. function updateLineText(cm, lineView) { var cls = lineView.text.className; var built = getLineContent(cm, lineView); if (lineView.text == lineView.node) lineView.node = built.pre; lineView.text.parentNode.replaceChild(built.pre, lineView.text); lineView.text = built.pre; if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) { lineView.bgClass = built.bgClass; lineView.textClass = built.textClass; updateLineClasses(lineView); } else if (cls) { lineView.text.className = cls; } } function updateLineClasses(lineView) { updateLineBackground(lineView); if (lineView.line.wrapClass) ensureLineWrapped(lineView).className = lineView.line.wrapClass; else if (lineView.node != lineView.text) lineView.node.className = ""; var textClass = lineView.textClass ? lineView.textClass + " " + (lineView.line.textClass || "") : lineView.line.textClass; lineView.text.className = textClass || ""; } function updateLineGutter(cm, lineView, lineN, dims) { if (lineView.gutter) { lineView.node.removeChild(lineView.gutter); lineView.gutter = null; } if (lineView.gutterBackground) { lineView.node.removeChild(lineView.gutterBackground); lineView.gutterBackground = null; } if (lineView.line.gutterClass) { var wrap = ensureLineWrapped(lineView); lineView.gutterBackground = elt("div", null, "CodeMirror-gutter-background " + lineView.line.gutterClass, "left: " + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + "px; width: " + dims.gutterTotalWidth + "px"); wrap.insertBefore(lineView.gutterBackground, lineView.text); } var markers = lineView.line.gutterMarkers; if (cm.options.lineNumbers || markers) { var wrap = ensureLineWrapped(lineView); var gutterWrap = lineView.gutter = elt("div", null, "CodeMirror-gutter-wrapper", "left: " + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + "px"); cm.display.input.setUneditable(gutterWrap); wrap.insertBefore(gutterWrap, lineView.text); if (lineView.line.gutterClass) gutterWrap.className += " " + lineView.line.gutterClass; if (cm.options.lineNumbers && (!markers || !markers["CodeMirror-linenumbers"])) lineView.lineNumber = gutterWrap.appendChild( elt("div", lineNumberFor(cm.options, lineN), "CodeMirror-linenumber CodeMirror-gutter-elt", "left: " + dims.gutterLeft["CodeMirror-linenumbers"] + "px; width: " + cm.display.lineNumInnerWidth + "px")); if (markers) for (var k = 0; k < cm.options.gutters.length; ++k) { var id = cm.options.gutters[k], found = markers.hasOwnProperty(id) && markers[id]; if (found) gutterWrap.appendChild(elt("div", [found], "CodeMirror-gutter-elt", "left: " + dims.gutterLeft[id] + "px; width: " + dims.gutterWidth[id] + "px")); } } } function updateLineWidgets(cm, lineView, dims) { if (lineView.alignable) lineView.alignable = null; for (var node = lineView.node.firstChild, next; node; node = next) { var next = node.nextSibling; if (node.className == "CodeMirror-linewidget") lineView.node.removeChild(node); } insertLineWidgets(cm, lineView, dims); } // Build a line's DOM representation from scratch function buildLineElement(cm, lineView, lineN, dims) { var built = getLineContent(cm, lineView); lineView.text = lineView.node = built.pre; if (built.bgClass) lineView.bgClass = built.bgClass; if (built.textClass) lineView.textClass = built.textClass; updateLineClasses(lineView); updateLineGutter(cm, lineView, lineN, dims); insertLineWidgets(cm, lineView, dims); return lineView.node; } // A lineView may contain multiple logical lines (when merged by // collapsed spans). The widgets for all of them need to be drawn. function insertLineWidgets(cm, lineView, dims) { insertLineWidgetsFor(cm, lineView.line, lineView, dims, true); if (lineView.rest) for (var i = 0; i < lineView.rest.length; i++) insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false); } function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) { if (!line.widgets) return; var wrap = ensureLineWrapped(lineView); for (var i = 0, ws = line.widgets; i < ws.length; ++i) { var widget = ws[i], node = elt("div", [widget.node], "CodeMirror-linewidget"); if (!widget.handleMouseEvents) node.setAttribute("cm-ignore-events", "true"); positionLineWidget(widget, node, lineView, dims); cm.display.input.setUneditable(node); if (allowAbove && widget.above) wrap.insertBefore(node, lineView.gutter || lineView.text); else wrap.appendChild(node); signalLater(widget, "redraw"); } } function positionLineWidget(widget, node, lineView, dims) { if (widget.noHScroll) { (lineView.alignable || (lineView.alignable = [])).push(node); var width = dims.wrapperWidth; node.style.left = dims.fixedPos + "px"; if (!widget.coverGutter) { width -= dims.gutterTotalWidth; node.style.paddingLeft = dims.gutterTotalWidth + "px"; } node.style.width = width + "px"; } if (widget.coverGutter) { node.style.zIndex = 5; node.style.position = "relative"; if (!widget.noHScroll) node.style.marginLeft = -dims.gutterTotalWidth + "px"; } } // POSITION OBJECT // A Pos instance represents a position within the text. var Pos = CodeMirror.Pos = function(line, ch) { if (!(this instanceof Pos)) return new Pos(line, ch); this.line = line; this.ch = ch; }; // Compare two positions, return 0 if they are the same, a negative // number when a is less, and a positive number otherwise. var cmp = CodeMirror.cmpPos = function(a, b) { return a.line - b.line || a.ch - b.ch; }; function copyPos(x) {return Pos(x.line, x.ch);} function maxPos(a, b) { return cmp(a, b) < 0 ? b : a; } function minPos(a, b) { return cmp(a, b) < 0 ? a : b; } // INPUT HANDLING function ensureFocus(cm) { if (!cm.state.focused) { cm.display.input.focus(); onFocus(cm); } } // This will be set to a {lineWise: bool, text: [string]} object, so // that, when pasting, we know what kind of selections the copied // text was made out of. var lastCopied = null; function applyTextInput(cm, inserted, deleted, sel, origin) { var doc = cm.doc; cm.display.shift = false; if (!sel) sel = doc.sel; var paste = cm.state.pasteIncoming || origin == "paste"; var textLines = doc.splitLines(inserted), multiPaste = null // When pasing N lines into N selections, insert one line per selection if (paste && sel.ranges.length > 1) { if (lastCopied && lastCopied.text.join("\n") == inserted) { if (sel.ranges.length % lastCopied.text.length == 0) { multiPaste = []; for (var i = 0; i < lastCopied.text.length; i++) multiPaste.push(doc.splitLines(lastCopied.text[i])); } } else if (textLines.length == sel.ranges.length) { multiPaste = map(textLines, function(l) { return [l]; }); } } // Normal behavior is to insert the new text into every selection for (var i = sel.ranges.length - 1; i >= 0; i--) { var range = sel.ranges[i]; var from = range.from(), to = range.to(); if (range.empty()) { if (deleted && deleted > 0) // Handle deletion from = Pos(from.line, from.ch - deleted); else if (cm.state.overwrite && !paste) // Handle overwrite to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length)); else if (lastCopied && lastCopied.lineWise && lastCopied.text.join("\n") == inserted) from = to = Pos(from.line, 0) } var updateInput = cm.curOp.updateInput; var changeEvent = {from: from, to: to, text: multiPaste ? multiPaste[i % multiPaste.length] : textLines, origin: origin || (paste ? "paste" : cm.state.cutIncoming ? "cut" : "+input")}; makeChange(cm.doc, changeEvent); signalLater(cm, "inputRead", cm, changeEvent); } if (inserted && !paste) triggerElectric(cm, inserted); ensureCursorVisible(cm); cm.curOp.updateInput = updateInput; cm.curOp.typing = true; cm.state.pasteIncoming = cm.state.cutIncoming = false; } function handlePaste(e, cm) { var pasted = e.clipboardData && e.clipboardData.getData("Text"); if (pasted) { e.preventDefault(); if (!cm.isReadOnly() && !cm.options.disableInput) runInOp(cm, function() { applyTextInput(cm, pasted, 0, null, "paste"); }); return true; } } function triggerElectric(cm, inserted) { // When an 'electric' character is inserted, immediately trigger a reindent if (!cm.options.electricChars || !cm.options.smartIndent) return; var sel = cm.doc.sel; for (var i = sel.ranges.length - 1; i >= 0; i--) { var range = sel.ranges[i]; if (range.head.ch > 100 || (i && sel.ranges[i - 1].head.line == range.head.line)) continue; var mode = cm.getModeAt(range.head); var indented = false; if (mode.electricChars) { for (var j = 0; j < mode.electricChars.length; j++) if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) { indented = indentLine(cm, range.head.line, "smart"); break; } } else if (mode.electricInput) { if (mode.electricInput.test(getLine(cm.doc, range.head.line).text.slice(0, range.head.ch))) indented = indentLine(cm, range.head.line, "smart"); } if (indented) signalLater(cm, "electricInput", cm, range.head.line); } } function copyableRanges(cm) { var text = [], ranges = []; for (var i = 0; i < cm.doc.sel.ranges.length; i++) { var line = cm.doc.sel.ranges[i].head.line; var lineRange = {anchor: Pos(line, 0), head: Pos(line + 1, 0)}; ranges.push(lineRange); text.push(cm.getRange(lineRange.anchor, lineRange.head)); } return {text: text, ranges: ranges}; } function disableBrowserMagic(field, spellcheck) { field.setAttribute("autocorrect", "off"); field.setAttribute("autocapitalize", "off"); field.setAttribute("spellcheck", !!spellcheck); } // TEXTAREA INPUT STYLE function TextareaInput(cm) { this.cm = cm; // See input.poll and input.reset this.prevInput = ""; // Flag that indicates whether we expect input to appear real soon // now (after some event like 'keypress' or 'input') and are // polling intensively. this.pollingFast = false; // Self-resetting timeout for the poller this.polling = new Delayed(); // Tracks when input.reset has punted to just putting a short // string into the textarea instead of the full selection. this.inaccurateSelection = false; // Used to work around IE issue with selection being forgotten when focus moves away from textarea this.hasSelection = false; this.composing = null; }; function hiddenTextarea() { var te = elt("textarea", null, null, "position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none"); var div = elt("div", [te], null, "overflow: hidden; position: relative; width: 3px; height: 0px;"); // The textarea is kept positioned near the cursor to prevent the // fact that it'll be scrolled into view on input from scrolling // our fake cursor out of view. On webkit, when wrap=off, paste is // very slow. So make the area wide instead. if (webkit) te.style.width = "1000px"; else te.setAttribute("wrap", "off"); // If border: 0; -- iOS fails to open keyboard (issue #1287) if (ios) te.style.border = "1px solid black"; disableBrowserMagic(te); return div; } TextareaInput.prototype = copyObj({ init: function(display) { var input = this, cm = this.cm; // Wraps and hides input textarea var div = this.wrapper = hiddenTextarea(); // The semihidden textarea that is focused when the editor is // focused, and receives input. var te = this.textarea = div.firstChild; display.wrapper.insertBefore(div, display.wrapper.firstChild); // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore) if (ios) te.style.width = "0px"; on(te, "input", function() { if (ie && ie_version >= 9 && input.hasSelection) input.hasSelection = null; input.poll(); }); on(te, "paste", function(e) { if (signalDOMEvent(cm, e) || handlePaste(e, cm)) return cm.state.pasteIncoming = true; input.fastPoll(); }); function prepareCopyCut(e) { if (signalDOMEvent(cm, e)) return if (cm.somethingSelected()) { lastCopied = {lineWise: false, text: cm.getSelections()}; if (input.inaccurateSelection) { input.prevInput = ""; input.inaccurateSelection = false; te.value = lastCopied.text.join("\n"); selectInput(te); } } else if (!cm.options.lineWiseCopyCut) { return; } else { var ranges = copyableRanges(cm); lastCopied = {lineWise: true, text: ranges.text}; if (e.type == "cut") { cm.setSelections(ranges.ranges, null, sel_dontScroll); } else { input.prevInput = ""; te.value = ranges.text.join("\n"); selectInput(te); } } if (e.type == "cut") cm.state.cutIncoming = true; } on(te, "cut", prepareCopyCut); on(te, "copy", prepareCopyCut); on(display.scroller, "paste", function(e) { if (eventInWidget(display, e) || signalDOMEvent(cm, e)) return; cm.state.pasteIncoming = true; input.focus(); }); // Prevent normal selection in the editor (we handle our own) on(display.lineSpace, "selectstart", function(e) { if (!eventInWidget(display, e)) e_preventDefault(e); }); on(te, "compositionstart", function() { var start = cm.getCursor("from"); if (input.composing) input.composing.range.clear() input.composing = { start: start, range: cm.markText(start, cm.getCursor("to"), {className: "CodeMirror-composing"}) }; }); on(te, "compositionend", function() { if (input.composing) { input.poll(); input.composing.range.clear(); input.composing = null; } }); }, prepareSelection: function() { // Redraw the selection and/or cursor var cm = this.cm, display = cm.display, doc = cm.doc; var result = prepareSelection(cm); // Move the hidden textarea near the cursor to prevent scrolling artifacts if (cm.options.moveInputWithCursor) { var headPos = cursorCoords(cm, doc.sel.primary().head, "div"); var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect(); result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10, headPos.top + lineOff.top - wrapOff.top)); result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10, headPos.left + lineOff.left - wrapOff.left)); } return result; }, showSelection: function(drawn) { var cm = this.cm, display = cm.display; removeChildrenAndAdd(display.cursorDiv, drawn.cursors); removeChildrenAndAdd(display.selectionDiv, drawn.selection); if (drawn.teTop != null) { this.wrapper.style.top = drawn.teTop + "px"; this.wrapper.style.left = drawn.teLeft + "px"; } }, // Reset the input to correspond to the selection (or to be empty, // when not typing and nothing is selected) reset: function(typing) { if (this.contextMenuPending) return; var minimal, selected, cm = this.cm, doc = cm.doc; if (cm.somethingSelected()) { this.prevInput = ""; var range = doc.sel.primary(); minimal = hasCopyEvent && (range.to().line - range.from().line > 100 || (selected = cm.getSelection()).length > 1000); var content = minimal ? "-" : selected || cm.getSelection(); this.textarea.value = content; if (cm.state.focused) selectInput(this.textarea); if (ie && ie_version >= 9) this.hasSelection = content; } else if (!typing) { this.prevInput = this.textarea.value = ""; if (ie && ie_version >= 9) this.hasSelection = null; } this.inaccurateSelection = minimal; }, getField: function() { return this.textarea; }, supportsTouch: function() { return false; }, focus: function() { if (this.cm.options.readOnly != "nocursor" && (!mobile || activeElt() != this.textarea)) { try { this.textarea.focus(); } catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM } }, blur: function() { this.textarea.blur(); }, resetPosition: function() { this.wrapper.style.top = this.wrapper.style.left = 0; }, receivedFocus: function() { this.slowPoll(); }, // Poll for input changes, using the normal rate of polling. This // runs as long as the editor is focused. slowPoll: function() { var input = this; if (input.pollingFast) return; input.polling.set(this.cm.options.pollInterval, function() { input.poll(); if (input.cm.state.focused) input.slowPoll(); }); }, // When an event has just come in that is likely to add or change // something in the input textarea, we poll faster, to ensure that // the change appears on the screen quickly. fastPoll: function() { var missed = false, input = this; input.pollingFast = true; function p() { var changed = input.poll(); if (!changed && !missed) {missed = true; input.polling.set(60, p);} else {input.pollingFast = false; input.slowPoll();} } input.polling.set(20, p); }, // Read input from the textarea, and update the document to match. // When something is selected, it is present in the textarea, and // selected (unless it is huge, in which case a placeholder is // used). When nothing is selected, the cursor sits after previously // seen text (can be empty), which is stored in prevInput (we must // not reset the textarea when typing, because that breaks IME). poll: function() { var cm = this.cm, input = this.textarea, prevInput = this.prevInput; // Since this is called a *lot*, try to bail out as cheaply as // possible when it is clear that nothing happened. hasSelection // will be the case when there is a lot of text in the textarea, // in which case reading its value would be expensive. if (this.contextMenuPending || !cm.state.focused || (hasSelection(input) && !prevInput && !this.composing) || cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq) return false; var text = input.value; // If nothing changed, bail. if (text == prevInput && !cm.somethingSelected()) return false; // Work around nonsensical selection resetting in IE9/10, and // inexplicable appearance of private area unicode characters on // some key combos in Mac (#2689). if (ie && ie_version >= 9 && this.hasSelection === text || mac && /[\uf700-\uf7ff]/.test(text)) { cm.display.input.reset(); return false; } if (cm.doc.sel == cm.display.selForContextMenu) { var first = text.charCodeAt(0); if (first == 0x200b && !prevInput) prevInput = "\u200b"; if (first == 0x21da) { this.reset(); return this.cm.execCommand("undo"); } } // Find the part of the input that is actually new var same = 0, l = Math.min(prevInput.length, text.length); while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) ++same; var self = this; runInOp(cm, function() { applyTextInput(cm, text.slice(same), prevInput.length - same, null, self.composing ? "*compose" : null); // Don't leave long text in the textarea, since it makes further polling slow if (text.length > 1000 || text.indexOf("\n") > -1) input.value = self.prevInput = ""; else self.prevInput = text; if (self.composing) { self.composing.range.clear(); self.composing.range = cm.markText(self.composing.start, cm.getCursor("to"), {className: "CodeMirror-composing"}); } }); return true; }, ensurePolled: function() { if (this.pollingFast && this.poll()) this.pollingFast = false; }, onKeyPress: function() { if (ie && ie_version >= 9) this.hasSelection = null; this.fastPoll(); }, onContextMenu: function(e) { var input = this, cm = input.cm, display = cm.display, te = input.textarea; var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop; if (!pos || presto) return; // Opera is difficult. // Reset the current text selection only if the click is done outside of the selection // and 'resetSelectionOnContextMenu' option is true. var reset = cm.options.resetSelectionOnContextMenu; if (reset && cm.doc.sel.contains(pos) == -1) operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll); var oldCSS = te.style.cssText, oldWrapperCSS = input.wrapper.style.cssText; input.wrapper.style.cssText = "position: absolute" var wrapperBox = input.wrapper.getBoundingClientRect() te.style.cssText = "position: absolute; width: 30px; height: 30px; top: " + (e.clientY - wrapperBox.top - 5) + "px; left: " + (e.clientX - wrapperBox.left - 5) + "px; z-index: 1000; background: " + (ie ? "rgba(255, 255, 255, .05)" : "transparent") + "; outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);"; if (webkit) var oldScrollY = window.scrollY; // Work around Chrome issue (#2712) display.input.focus(); if (webkit) window.scrollTo(null, oldScrollY); display.input.reset(); // Adds "Select all" to context menu in FF if (!cm.somethingSelected()) te.value = input.prevInput = " "; input.contextMenuPending = true; display.selForContextMenu = cm.doc.sel; clearTimeout(display.detectingSelectAll); // Select-all will be greyed out if there's nothing to select, so // this adds a zero-width space so that we can later check whether // it got selected. function prepareSelectAllHack() { if (te.selectionStart != null) { var selected = cm.somethingSelected(); var extval = "\u200b" + (selected ? te.value : ""); te.value = "\u21da"; // Used to catch context-menu undo te.value = extval; input.prevInput = selected ? "" : "\u200b"; te.selectionStart = 1; te.selectionEnd = extval.length; // Re-set this, in case some other handler touched the // selection in the meantime. display.selForContextMenu = cm.doc.sel; } } function rehide() { input.contextMenuPending = false; input.wrapper.style.cssText = oldWrapperCSS te.style.cssText = oldCSS; if (ie && ie_version < 9) display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos); // Try to detect the user choosing select-all if (te.selectionStart != null) { if (!ie || (ie && ie_version < 9)) prepareSelectAllHack(); var i = 0, poll = function() { if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 && te.selectionEnd > 0 && input.prevInput == "\u200b") operation(cm, commands.selectAll)(cm); else if (i++ < 10) display.detectingSelectAll = setTimeout(poll, 500); else display.input.reset(); }; display.detectingSelectAll = setTimeout(poll, 200); } } if (ie && ie_version >= 9) prepareSelectAllHack(); if (captureRightClick) { e_stop(e); var mouseup = function() { off(window, "mouseup", mouseup); setTimeout(rehide, 20); }; on(window, "mouseup", mouseup); } else { setTimeout(rehide, 50); } }, readOnlyChanged: function(val) { if (!val) this.reset(); }, setUneditable: nothing, needsContentAttribute: false }, TextareaInput.prototype); // CONTENTEDITABLE INPUT STYLE function ContentEditableInput(cm) { this.cm = cm; this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null; this.polling = new Delayed(); this.gracePeriod = false; } ContentEditableInput.prototype = copyObj({ init: function(display) { var input = this, cm = input.cm; var div = input.div = display.lineDiv; disableBrowserMagic(div, cm.options.spellcheck); on(div, "paste", function(e) { if (signalDOMEvent(cm, e) || handlePaste(e, cm)) return // IE doesn't fire input events, so we schedule a read for the pasted content in this way if (ie_version <= 11) setTimeout(operation(cm, function() { if (!input.pollContent()) regChange(cm); }), 20) }) on(div, "compositionstart", function(e) { var data = e.data; input.composing = {sel: cm.doc.sel, data: data, startData: data}; if (!data) return; var prim = cm.doc.sel.primary(); var line = cm.getLine(prim.head.line); var found = line.indexOf(data, Math.max(0, prim.head.ch - data.length)); if (found > -1 && found <= prim.head.ch) input.composing.sel = simpleSelection(Pos(prim.head.line, found), Pos(prim.head.line, found + data.length)); }); on(div, "compositionupdate", function(e) { input.composing.data = e.data; }); on(div, "compositionend", function(e) { var ours = input.composing; if (!ours) return; if (e.data != ours.startData && !/\u200b/.test(e.data)) ours.data = e.data; // Need a small delay to prevent other code (input event, // selection polling) from doing damage when fired right after // compositionend. setTimeout(function() { if (!ours.handled) input.applyComposition(ours); if (input.composing == ours) input.composing = null; }, 50); }); on(div, "touchstart", function() { input.forceCompositionEnd(); }); on(div, "input", function() { if (input.composing) return; if (cm.isReadOnly() || !input.pollContent()) runInOp(input.cm, function() {regChange(cm);}); }); function onCopyCut(e) { if (signalDOMEvent(cm, e)) return if (cm.somethingSelected()) { lastCopied = {lineWise: false, text: cm.getSelections()}; if (e.type == "cut") cm.replaceSelection("", null, "cut"); } else if (!cm.options.lineWiseCopyCut) { return; } else { var ranges = copyableRanges(cm); lastCopied = {lineWise: true, text: ranges.text}; if (e.type == "cut") { cm.operation(function() { cm.setSelections(ranges.ranges, 0, sel_dontScroll); cm.replaceSelection("", null, "cut"); }); } } if (e.clipboardData) { e.clipboardData.clearData(); var content = lastCopied.text.join("\n") // iOS exposes the clipboard API, but seems to discard content inserted into it e.clipboardData.setData("Text", content); if (e.clipboardData.getData("Text") == content) { e.preventDefault(); return } } // Old-fashioned briefly-focus-a-textarea hack var kludge = hiddenTextarea(), te = kludge.firstChild; cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild); te.value = lastCopied.text.join("\n"); var hadFocus = document.activeElement; selectInput(te); setTimeout(function() { cm.display.lineSpace.removeChild(kludge); hadFocus.focus(); if (hadFocus == div) input.showPrimarySelection() }, 50); } on(div, "copy", onCopyCut); on(div, "cut", onCopyCut); }, prepareSelection: function() { var result = prepareSelection(this.cm, false); result.focus = this.cm.state.focused; return result; }, showSelection: function(info, takeFocus) { if (!info || !this.cm.display.view.length) return; if (info.focus || takeFocus) this.showPrimarySelection(); this.showMultipleSelections(info); }, showPrimarySelection: function() { var sel = window.getSelection(), prim = this.cm.doc.sel.primary(); var curAnchor = domToPos(this.cm, sel.anchorNode, sel.anchorOffset); var curFocus = domToPos(this.cm, sel.focusNode, sel.focusOffset); if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad && cmp(minPos(curAnchor, curFocus), prim.from()) == 0 && cmp(maxPos(curAnchor, curFocus), prim.to()) == 0) return; var start = posToDOM(this.cm, prim.from()); var end = posToDOM(this.cm, prim.to()); if (!start && !end) return; var view = this.cm.display.view; var old = sel.rangeCount && sel.getRangeAt(0); if (!start) { start = {node: view[0].measure.map[2], offset: 0}; } else if (!end) { // FIXME dangerously hacky var measure = view[view.length - 1].measure; var map = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map; end = {node: map[map.length - 1], offset: map[map.length - 2] - map[map.length - 3]}; } try { var rng = range(start.node, start.offset, end.offset, end.node); } catch(e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible if (rng) { if (!gecko && this.cm.state.focused) { sel.collapse(start.node, start.offset); if (!rng.collapsed) sel.addRange(rng); } else { sel.removeAllRanges(); sel.addRange(rng); } if (old && sel.anchorNode == null) sel.addRange(old); else if (gecko) this.startGracePeriod(); } this.rememberSelection(); }, startGracePeriod: function() { var input = this; clearTimeout(this.gracePeriod); this.gracePeriod = setTimeout(function() { input.gracePeriod = false; if (input.selectionChanged()) input.cm.operation(function() { input.cm.curOp.selectionChanged = true; }); }, 20); }, showMultipleSelections: function(info) { removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors); removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection); }, rememberSelection: function() { var sel = window.getSelection(); this.lastAnchorNode = sel.anchorNode; this.lastAnchorOffset = sel.anchorOffset; this.lastFocusNode = sel.focusNode; this.lastFocusOffset = sel.focusOffset; }, selectionInEditor: function() { var sel = window.getSelection(); if (!sel.rangeCount) return false; var node = sel.getRangeAt(0).commonAncestorContainer; return contains(this.div, node); }, focus: function() { if (this.cm.options.readOnly != "nocursor") this.div.focus(); }, blur: function() { this.div.blur(); }, getField: function() { return this.div; }, supportsTouch: function() { return true; }, receivedFocus: function() { var input = this; if (this.selectionInEditor()) this.pollSelection(); else runInOp(this.cm, function() { input.cm.curOp.selectionChanged = true; }); function poll() { if (input.cm.state.focused) { input.pollSelection(); input.polling.set(input.cm.options.pollInterval, poll); } } this.polling.set(this.cm.options.pollInterval, poll); }, selectionChanged: function() { var sel = window.getSelection(); return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset || sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset; }, pollSelection: function() { if (!this.composing && !this.gracePeriod && this.selectionChanged()) { var sel = window.getSelection(), cm = this.cm; this.rememberSelection(); var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset); var head = domToPos(cm, sel.focusNode, sel.focusOffset); if (anchor && head) runInOp(cm, function() { setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll); if (anchor.bad || head.bad) cm.curOp.selectionChanged = true; }); } }, pollContent: function() { var cm = this.cm, display = cm.display, sel = cm.doc.sel.primary(); var from = sel.from(), to = sel.to(); if (from.line < display.viewFrom || to.line > display.viewTo - 1) return false; var fromIndex; if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) { var fromLine = lineNo(display.view[0].line); var fromNode = display.view[0].node; } else { var fromLine = lineNo(display.view[fromIndex].line); var fromNode = display.view[fromIndex - 1].node.nextSibling; } var toIndex = findViewIndex(cm, to.line); if (toIndex == display.view.length - 1) { var toLine = display.viewTo - 1; var toNode = display.lineDiv.lastChild; } else { var toLine = lineNo(display.view[toIndex + 1].line) - 1; var toNode = display.view[toIndex + 1].node.previousSibling; } var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine)); var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length)); while (newText.length > 1 && oldText.length > 1) { if (lst(newText) == lst(oldText)) { newText.pop(); oldText.pop(); toLine--; } else if (newText[0] == oldText[0]) { newText.shift(); oldText.shift(); fromLine++; } else break; } var cutFront = 0, cutEnd = 0; var newTop = newText[0], oldTop = oldText[0], maxCutFront = Math.min(newTop.length, oldTop.length); while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront)) ++cutFront; var newBot = lst(newText), oldBot = lst(oldText); var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0), oldBot.length - (oldText.length == 1 ? cutFront : 0)); while (cutEnd < maxCutEnd && newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) ++cutEnd; newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd); newText[0] = newText[0].slice(cutFront); var chFrom = Pos(fromLine, cutFront); var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0); if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) { replaceRange(cm.doc, newText, chFrom, chTo, "+input"); return true; } }, ensurePolled: function() { this.forceCompositionEnd(); }, reset: function() { this.forceCompositionEnd(); }, forceCompositionEnd: function() { if (!this.composing || this.composing.handled) return; this.applyComposition(this.composing); this.composing.handled = true; this.div.blur(); this.div.focus(); }, applyComposition: function(composing) { if (this.cm.isReadOnly()) operation(this.cm, regChange)(this.cm) else if (composing.data && composing.data != composing.startData) operation(this.cm, applyTextInput)(this.cm, composing.data, 0, composing.sel); }, setUneditable: function(node) { node.contentEditable = "false" }, onKeyPress: function(e) { e.preventDefault(); if (!this.cm.isReadOnly()) operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0); }, readOnlyChanged: function(val) { this.div.contentEditable = String(val != "nocursor") }, onContextMenu: nothing, resetPosition: nothing, needsContentAttribute: true }, ContentEditableInput.prototype); function posToDOM(cm, pos) { var view = findViewForLine(cm, pos.line); if (!view || view.hidden) return null; var line = getLine(cm.doc, pos.line); var info = mapFromLineView(view, line, pos.line); var order = getOrder(line), side = "left"; if (order) { var partPos = getBidiPartAt(order, pos.ch); side = partPos % 2 ? "right" : "left"; } var result = nodeAndOffsetInLineMap(info.map, pos.ch, side); result.offset = result.collapse == "right" ? result.end : result.start; return result; } function badPos(pos, bad) { if (bad) pos.bad = true; return pos; } function domToPos(cm, node, offset) { var lineNode; if (node == cm.display.lineDiv) { lineNode = cm.display.lineDiv.childNodes[offset]; if (!lineNode) return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true); node = null; offset = 0; } else { for (lineNode = node;; lineNode = lineNode.parentNode) { if (!lineNode || lineNode == cm.display.lineDiv) return null; if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) break; } } for (var i = 0; i < cm.display.view.length; i++) { var lineView = cm.display.view[i]; if (lineView.node == lineNode) return locateNodeInLineView(lineView, node, offset); } } function locateNodeInLineView(lineView, node, offset) { var wrapper = lineView.text.firstChild, bad = false; if (!node || !contains(wrapper, node)) return badPos(Pos(lineNo(lineView.line), 0), true); if (node == wrapper) { bad = true; node = wrapper.childNodes[offset]; offset = 0; if (!node) { var line = lineView.rest ? lst(lineView.rest) : lineView.line; return badPos(Pos(lineNo(line), line.text.length), bad); } } var textNode = node.nodeType == 3 ? node : null, topNode = node; if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) { textNode = node.firstChild; if (offset) offset = textNode.nodeValue.length; } while (topNode.parentNode != wrapper) topNode = topNode.parentNode; var measure = lineView.measure, maps = measure.maps; function find(textNode, topNode, offset) { for (var i = -1; i < (maps ? maps.length : 0); i++) { var map = i < 0 ? measure.map : maps[i]; for (var j = 0; j < map.length; j += 3) { var curNode = map[j + 2]; if (curNode == textNode || curNode == topNode) { var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]); var ch = map[j] + offset; if (offset < 0 || curNode != textNode) ch = map[j + (offset ? 1 : 0)]; return Pos(line, ch); } } } } var found = find(textNode, topNode, offset); if (found) return badPos(found, bad); // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) { found = find(after, after.firstChild, 0); if (found) return badPos(Pos(found.line, found.ch - dist), bad); else dist += after.textContent.length; } for (var before = topNode.previousSibling, dist = offset; before; before = before.previousSibling) { found = find(before, before.firstChild, -1); if (found) return badPos(Pos(found.line, found.ch + dist), bad); else dist += before.textContent.length; } } function domTextBetween(cm, from, to, fromLine, toLine) { var text = "", closing = false, lineSep = cm.doc.lineSeparator(); function recognizeMarker(id) { return function(marker) { return marker.id == id; }; } function walk(node) { if (node.nodeType == 1) { var cmText = node.getAttribute("cm-text"); if (cmText != null) { if (cmText == "") cmText = node.textContent.replace(/\u200b/g, ""); text += cmText; return; } var markerID = node.getAttribute("cm-marker"), range; if (markerID) { var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID)); if (found.length && (range = found[0].find())) text += getBetween(cm.doc, range.from, range.to).join(lineSep); return; } if (node.getAttribute("contenteditable") == "false") return; for (var i = 0; i < node.childNodes.length; i++) walk(node.childNodes[i]); if (/^(pre|div|p)$/i.test(node.nodeName)) closing = true; } else if (node.nodeType == 3) { var val = node.nodeValue; if (!val) return; if (closing) { text += lineSep; closing = false; } text += val; } } for (;;) { walk(from); if (from == to) break; from = from.nextSibling; } return text; } CodeMirror.inputStyles = {"textarea": TextareaInput, "contenteditable": ContentEditableInput}; // SELECTION / CURSOR // Selection objects are immutable. A new one is created every time // the selection changes. A selection is one or more non-overlapping // (and non-touching) ranges, sorted, and an integer that indicates // which one is the primary selection (the one that's scrolled into // view, that getCursor returns, etc). function Selection(ranges, primIndex) { this.ranges = ranges; this.primIndex = primIndex; } Selection.prototype = { primary: function() { return this.ranges[this.primIndex]; }, equals: function(other) { if (other == this) return true; if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) return false; for (var i = 0; i < this.ranges.length; i++) { var here = this.ranges[i], there = other.ranges[i]; if (cmp(here.anchor, there.anchor) != 0 || cmp(here.head, there.head) != 0) return false; } return true; }, deepCopy: function() { for (var out = [], i = 0; i < this.ranges.length; i++) out[i] = new Range(copyPos(this.ranges[i].anchor), copyPos(this.ranges[i].head)); return new Selection(out, this.primIndex); }, somethingSelected: function() { for (var i = 0; i < this.ranges.length; i++) if (!this.ranges[i].empty()) return true; return false; }, contains: function(pos, end) { if (!end) end = pos; for (var i = 0; i < this.ranges.length; i++) { var range = this.ranges[i]; if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0) return i; } return -1; } }; function Range(anchor, head) { this.anchor = anchor; this.head = head; } Range.prototype = { from: function() { return minPos(this.anchor, this.head); }, to: function() { return maxPos(this.anchor, this.head); }, empty: function() { return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch; } }; // Take an unsorted, potentially overlapping set of ranges, and // build a selection out of it. 'Consumes' ranges array (modifying // it). function normalizeSelection(ranges, primIndex) { var prim = ranges[primIndex]; ranges.sort(function(a, b) { return cmp(a.from(), b.from()); }); primIndex = indexOf(ranges, prim); for (var i = 1; i < ranges.length; i++) { var cur = ranges[i], prev = ranges[i - 1]; if (cmp(prev.to(), cur.from()) >= 0) { var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to()); var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head; if (i <= primIndex) --primIndex; ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to)); } } return new Selection(ranges, primIndex); } function simpleSelection(anchor, head) { return new Selection([new Range(anchor, head || anchor)], 0); } // Most of the external API clips given positions to make sure they // actually exist within the document. function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1));} function clipPos(doc, pos) { if (pos.line < doc.first) return Pos(doc.first, 0); var last = doc.first + doc.size - 1; if (pos.line > last) return Pos(last, getLine(doc, last).text.length); return clipToLen(pos, getLine(doc, pos.line).text.length); } function clipToLen(pos, linelen) { var ch = pos.ch; if (ch == null || ch > linelen) return Pos(pos.line, linelen); else if (ch < 0) return Pos(pos.line, 0); else return pos; } function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size;} function clipPosArray(doc, array) { for (var out = [], i = 0; i < array.length; i++) out[i] = clipPos(doc, array[i]); return out; } // SELECTION UPDATES // The 'scroll' parameter given to many of these indicated whether // the new cursor position should be scrolled into view after // modifying the selection. // If shift is held or the extend flag is set, extends a range to // include a given position (and optionally a second position). // Otherwise, simply returns the range between the given positions. // Used for cursor motion and such. function extendRange(doc, range, head, other) { if (doc.cm && doc.cm.display.shift || doc.extend) { var anchor = range.anchor; if (other) { var posBefore = cmp(head, anchor) < 0; if (posBefore != (cmp(other, anchor) < 0)) { anchor = head; head = other; } else if (posBefore != (cmp(head, other) < 0)) { head = other; } } return new Range(anchor, head); } else { return new Range(other || head, head); } } // Extend the primary selection range, discard the rest. function extendSelection(doc, head, other, options) { setSelection(doc, new Selection([extendRange(doc, doc.sel.primary(), head, other)], 0), options); } // Extend all selections (pos is an array of selections with length // equal the number of selections) function extendSelections(doc, heads, options) { for (var out = [], i = 0; i < doc.sel.ranges.length; i++) out[i] = extendRange(doc, doc.sel.ranges[i], heads[i], null); var newSel = normalizeSelection(out, doc.sel.primIndex); setSelection(doc, newSel, options); } // Updates a single range in the selection. function replaceOneSelection(doc, i, range, options) { var ranges = doc.sel.ranges.slice(0); ranges[i] = range; setSelection(doc, normalizeSelection(ranges, doc.sel.primIndex), options); } // Reset the selection to a single range. function setSimpleSelection(doc, anchor, head, options) { setSelection(doc, simpleSelection(anchor, head), options); } // Give beforeSelectionChange handlers a change to influence a // selection update. function filterSelectionChange(doc, sel, options) { var obj = { ranges: sel.ranges, update: function(ranges) { this.ranges = []; for (var i = 0; i < ranges.length; i++) this.ranges[i] = new Range(clipPos(doc, ranges[i].anchor), clipPos(doc, ranges[i].head)); }, origin: options && options.origin }; signal(doc, "beforeSelectionChange", doc, obj); if (doc.cm) signal(doc.cm, "beforeSelectionChange", doc.cm, obj); if (obj.ranges != sel.ranges) return normalizeSelection(obj.ranges, obj.ranges.length - 1); else return sel; } function setSelectionReplaceHistory(doc, sel, options) { var done = doc.history.done, last = lst(done); if (last && last.ranges) { done[done.length - 1] = sel; setSelectionNoUndo(doc, sel, options); } else { setSelection(doc, sel, options); } } // Set a new selection. function setSelection(doc, sel, options) { setSelectionNoUndo(doc, sel, options); addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options); } function setSelectionNoUndo(doc, sel, options) { if (hasHandler(doc, "beforeSelectionChange") || doc.cm && hasHandler(doc.cm, "beforeSelectionChange")) sel = filterSelectionChange(doc, sel, options); var bias = options && options.bias || (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1); setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true)); if (!(options && options.scroll === false) && doc.cm) ensureCursorVisible(doc.cm); } function setSelectionInner(doc, sel) { if (sel.equals(doc.sel)) return; doc.sel = sel; if (doc.cm) { doc.cm.curOp.updateInput = doc.cm.curOp.selectionChanged = true; signalCursorActivity(doc.cm); } signalLater(doc, "cursorActivity", doc); } // Verify that the selection does not partially select any atomic // marked ranges. function reCheckSelection(doc) { setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false), sel_dontScroll); } // Return a selection that does not partially select any atomic // ranges. function skipAtomicInSelection(doc, sel, bias, mayClear) { var out; for (var i = 0; i < sel.ranges.length; i++) { var range = sel.ranges[i]; var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i]; var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear); var newHead = skipAtomic(doc, range.head, old && old.head, bias, mayClear); if (out || newAnchor != range.anchor || newHead != range.head) { if (!out) out = sel.ranges.slice(0, i); out[i] = new Range(newAnchor, newHead); } } return out ? normalizeSelection(out, sel.primIndex) : sel; } function skipAtomicInner(doc, pos, oldPos, dir, mayClear) { var line = getLine(doc, pos.line); if (line.markedSpans) for (var i = 0; i < line.markedSpans.length; ++i) { var sp = line.markedSpans[i], m = sp.marker; if ((sp.from == null || (m.inclusiveLeft ? sp.from <= pos.ch : sp.from < pos.ch)) && (sp.to == null || (m.inclusiveRight ? sp.to >= pos.ch : sp.to > pos.ch))) { if (mayClear) { signal(m, "beforeCursorEnter"); if (m.explicitlyCleared) { if (!line.markedSpans) break; else {--i; continue;} } } if (!m.atomic) continue; if (oldPos) { var near = m.find(dir < 0 ? 1 : -1), diff; if (dir < 0 ? m.inclusiveRight : m.inclusiveLeft) near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null); if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0)) return skipAtomicInner(doc, near, pos, dir, mayClear); } var far = m.find(dir < 0 ? -1 : 1); if (dir < 0 ? m.inclusiveLeft : m.inclusiveRight) far = movePos(doc, far, dir, far.line == pos.line ? line : null); return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null; } } return pos; } // Ensure a given position is not inside an atomic range. function skipAtomic(doc, pos, oldPos, bias, mayClear) { var dir = bias || 1; var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) || (!mayClear && skipAtomicInner(doc, pos, oldPos, dir, true)) || skipAtomicInner(doc, pos, oldPos, -dir, mayClear) || (!mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true)); if (!found) { doc.cantEdit = true; return Pos(doc.first, 0); } return found; } function movePos(doc, pos, dir, line) { if (dir < 0 && pos.ch == 0) { if (pos.line > doc.first) return clipPos(doc, Pos(pos.line - 1)); else return null; } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) { if (pos.line < doc.first + doc.size - 1) return Pos(pos.line + 1, 0); else return null; } else { return new Pos(pos.line, pos.ch + dir); } } // SELECTION DRAWING function updateSelection(cm) { cm.display.input.showSelection(cm.display.input.prepareSelection()); } function prepareSelection(cm, primary) { var doc = cm.doc, result = {}; var curFragment = result.cursors = document.createDocumentFragment(); var selFragment = result.selection = document.createDocumentFragment(); for (var i = 0; i < doc.sel.ranges.length; i++) { if (primary === false && i == doc.sel.primIndex) continue; var range = doc.sel.ranges[i]; if (range.from().line >= cm.display.viewTo || range.to().line < cm.display.viewFrom) continue; var collapsed = range.empty(); if (collapsed || cm.options.showCursorWhenSelecting) drawSelectionCursor(cm, range.head, curFragment); if (!collapsed) drawSelectionRange(cm, range, selFragment); } return result; } // Draws a cursor for the given range function drawSelectionCursor(cm, head, output) { var pos = cursorCoords(cm, head, "div", null, null, !cm.options.singleCursorHeightPerLine); var cursor = output.appendChild(elt("div", "\u00a0", "CodeMirror-cursor")); cursor.style.left = pos.left + "px"; cursor.style.top = pos.top + "px"; cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + "px"; if (pos.other) { // Secondary cursor, shown when on a 'jump' in bi-directional text var otherCursor = output.appendChild(elt("div", "\u00a0", "CodeMirror-cursor CodeMirror-secondarycursor")); otherCursor.style.display = ""; otherCursor.style.left = pos.other.left + "px"; otherCursor.style.top = pos.other.top + "px"; otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + "px"; } } // Draws the given range as a highlighted selection function drawSelectionRange(cm, range, output) { var display = cm.display, doc = cm.doc; var fragment = document.createDocumentFragment(); var padding = paddingH(cm.display), leftSide = padding.left; var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right; function add(left, top, width, bottom) { if (top < 0) top = 0; top = Math.round(top); bottom = Math.round(bottom); fragment.appendChild(elt("div", null, "CodeMirror-selected", "position: absolute; left: " + left + "px; top: " + top + "px; width: " + (width == null ? rightSide - left : width) + "px; height: " + (bottom - top) + "px")); } function drawForLine(line, fromArg, toArg) { var lineObj = getLine(doc, line); var lineLen = lineObj.text.length; var start, end; function coords(ch, bias) { return charCoords(cm, Pos(line, ch), "div", lineObj, bias); } iterateBidiSections(getOrder(lineObj), fromArg || 0, toArg == null ? lineLen : toArg, function(from, to, dir) { var leftPos = coords(from, "left"), rightPos, left, right; if (from == to) { rightPos = leftPos; left = right = leftPos.left; } else { rightPos = coords(to - 1, "right"); if (dir == "rtl") { var tmp = leftPos; leftPos = rightPos; rightPos = tmp; } left = leftPos.left; right = rightPos.right; } if (fromArg == null && from == 0) left = leftSide; if (rightPos.top - leftPos.top > 3) { // Different lines, draw top part add(left, leftPos.top, null, leftPos.bottom); left = leftSide; if (leftPos.bottom < rightPos.top) add(left, leftPos.bottom, null, rightPos.top); } if (toArg == null && to == lineLen) right = rightSide; if (!start || leftPos.top < start.top || leftPos.top == start.top && leftPos.left < start.left) start = leftPos; if (!end || rightPos.bottom > end.bottom || rightPos.bottom == end.bottom && rightPos.right > end.right) end = rightPos; if (left < leftSide + 1) left = leftSide; add(left, rightPos.top, right - left, rightPos.bottom); }); return {start: start, end: end}; } var sFrom = range.from(), sTo = range.to(); if (sFrom.line == sTo.line) { drawForLine(sFrom.line, sFrom.ch, sTo.ch); } else { var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line); var singleVLine = visualLine(fromLine) == visualLine(toLine); var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end; var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start; if (singleVLine) { if (leftEnd.top < rightStart.top - 2) { add(leftEnd.right, leftEnd.top, null, leftEnd.bottom); add(leftSide, rightStart.top, rightStart.left, rightStart.bottom); } else { add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom); } } if (leftEnd.bottom < rightStart.top) add(leftSide, leftEnd.bottom, null, rightStart.top); } output.appendChild(fragment); } // Cursor-blinking function restartBlink(cm) { if (!cm.state.focused) return; var display = cm.display; clearInterval(display.blinker); var on = true; display.cursorDiv.style.visibility = ""; if (cm.options.cursorBlinkRate > 0) display.blinker = setInterval(function() { display.cursorDiv.style.visibility = (on = !on) ? "" : "hidden"; }, cm.options.cursorBlinkRate); else if (cm.options.cursorBlinkRate < 0) display.cursorDiv.style.visibility = "hidden"; } // HIGHLIGHT WORKER function startWorker(cm, time) { if (cm.doc.mode.startState && cm.doc.frontier < cm.display.viewTo) cm.state.highlight.set(time, bind(highlightWorker, cm)); } function highlightWorker(cm) { var doc = cm.doc; if (doc.frontier < doc.first) doc.frontier = doc.first; if (doc.frontier >= cm.display.viewTo) return; var end = +new Date + cm.options.workTime; var state = copyState(doc.mode, getStateBefore(cm, doc.frontier)); var changedLines = []; doc.iter(doc.frontier, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function(line) { if (doc.frontier >= cm.display.viewFrom) { // Visible var oldStyles = line.styles, tooLong = line.text.length > cm.options.maxHighlightLength; var highlighted = highlightLine(cm, line, tooLong ? copyState(doc.mode, state) : state, true); line.styles = highlighted.styles; var oldCls = line.styleClasses, newCls = highlighted.classes; if (newCls) line.styleClasses = newCls; else if (oldCls) line.styleClasses = null; var ischange = !oldStyles || oldStyles.length != line.styles.length || oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass); for (var i = 0; !ischange && i < oldStyles.length; ++i) ischange = oldStyles[i] != line.styles[i]; if (ischange) changedLines.push(doc.frontier); line.stateAfter = tooLong ? state : copyState(doc.mode, state); } else { if (line.text.length <= cm.options.maxHighlightLength) processLine(cm, line.text, state); line.stateAfter = doc.frontier % 5 == 0 ? copyState(doc.mode, state) : null; } ++doc.frontier; if (+new Date > end) { startWorker(cm, cm.options.workDelay); return true; } }); if (changedLines.length) runInOp(cm, function() { for (var i = 0; i < changedLines.length; i++) regLineChange(cm, changedLines[i], "text"); }); } // Finds the line to start with when starting a parse. Tries to // find a line with a stateAfter, so that it can start with a // valid state. If that fails, it returns the line with the // smallest indentation, which tends to need the least context to // parse correctly. function findStartLine(cm, n, precise) { var minindent, minline, doc = cm.doc; var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100); for (var search = n; search > lim; --search) { if (search <= doc.first) return doc.first; var line = getLine(doc, search - 1); if (line.stateAfter && (!precise || search <= doc.frontier)) return search; var indented = countColumn(line.text, null, cm.options.tabSize); if (minline == null || minindent > indented) { minline = search - 1; minindent = indented; } } return minline; } function getStateBefore(cm, n, precise) { var doc = cm.doc, display = cm.display; if (!doc.mode.startState) return true; var pos = findStartLine(cm, n, precise), state = pos > doc.first && getLine(doc, pos-1).stateAfter; if (!state) state = startState(doc.mode); else state = copyState(doc.mode, state); doc.iter(pos, n, function(line) { processLine(cm, line.text, state); var save = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo; line.stateAfter = save ? copyState(doc.mode, state) : null; ++pos; }); if (precise) doc.frontier = pos; return state; } // POSITION MEASUREMENT function paddingTop(display) {return display.lineSpace.offsetTop;} function paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight;} function paddingH(display) { if (display.cachedPaddingH) return display.cachedPaddingH; var e = removeChildrenAndAdd(display.measure, elt("pre", "x")); var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle; var data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)}; if (!isNaN(data.left) && !isNaN(data.right)) display.cachedPaddingH = data; return data; } function scrollGap(cm) { return scrollerGap - cm.display.nativeBarWidth; } function displayWidth(cm) { return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth; } function displayHeight(cm) { return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight; } // Ensure the lineView.wrapping.heights array is populated. This is // an array of bottom offsets for the lines that make up a drawn // line. When lineWrapping is on, there might be more than one // height. function ensureLineHeights(cm, lineView, rect) { var wrapping = cm.options.lineWrapping; var curWidth = wrapping && displayWidth(cm); if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) { var heights = lineView.measure.heights = []; if (wrapping) { lineView.measure.width = curWidth; var rects = lineView.text.firstChild.getClientRects(); for (var i = 0; i < rects.length - 1; i++) { var cur = rects[i], next = rects[i + 1]; if (Math.abs(cur.bottom - next.bottom) > 2) heights.push((cur.bottom + next.top) / 2 - rect.top); } } heights.push(rect.bottom - rect.top); } } // Find a line map (mapping character offsets to text nodes) and a // measurement cache for the given line number. (A line view might // contain multiple lines when collapsed ranges are present.) function mapFromLineView(lineView, line, lineN) { if (lineView.line == line) return {map: lineView.measure.map, cache: lineView.measure.cache}; for (var i = 0; i < lineView.rest.length; i++) if (lineView.rest[i] == line) return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]}; for (var i = 0; i < lineView.rest.length; i++) if (lineNo(lineView.rest[i]) > lineN) return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i], before: true}; } // Render a line into the hidden node display.externalMeasured. Used // when measurement is needed for a line that's not in the viewport. function updateExternalMeasurement(cm, line) { line = visualLine(line); var lineN = lineNo(line); var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN); view.lineN = lineN; var built = view.built = buildLineContent(cm, view); view.text = built.pre; removeChildrenAndAdd(cm.display.lineMeasure, built.pre); return view; } // Get a {top, bottom, left, right} box (in line-local coordinates) // for a given character. function measureChar(cm, line, ch, bias) { return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias); } // Find a line view that corresponds to the given line number. function findViewForLine(cm, lineN) { if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo) return cm.display.view[findViewIndex(cm, lineN)]; var ext = cm.display.externalMeasured; if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size) return ext; } // Measurement can be split in two steps, the set-up work that // applies to the whole line, and the measurement of the actual // character. Functions like coordsChar, that need to do a lot of // measurements in a row, can thus ensure that the set-up work is // only done once. function prepareMeasureForLine(cm, line) { var lineN = lineNo(line); var view = findViewForLine(cm, lineN); if (view && !view.text) { view = null; } else if (view && view.changes) { updateLineForChanges(cm, view, lineN, getDimensions(cm)); cm.curOp.forceUpdate = true; } if (!view) view = updateExternalMeasurement(cm, line); var info = mapFromLineView(view, line, lineN); return { line: line, view: view, rect: null, map: info.map, cache: info.cache, before: info.before, hasHeights: false }; } // Given a prepared measurement object, measures the position of an // actual character (or fetches it from the cache). function measureCharPrepared(cm, prepared, ch, bias, varHeight) { if (prepared.before) ch = -1; var key = ch + (bias || ""), found; if (prepared.cache.hasOwnProperty(key)) { found = prepared.cache[key]; } else { if (!prepared.rect) prepared.rect = prepared.view.text.getBoundingClientRect(); if (!prepared.hasHeights) { ensureLineHeights(cm, prepared.view, prepared.rect); prepared.hasHeights = true; } found = measureCharInner(cm, prepared, ch, bias); if (!found.bogus) prepared.cache[key] = found; } return {left: found.left, right: found.right, top: varHeight ? found.rtop : found.top, bottom: varHeight ? found.rbottom : found.bottom}; } var nullRect = {left: 0, right: 0, top: 0, bottom: 0}; function nodeAndOffsetInLineMap(map, ch, bias) { var node, start, end, collapse; // First, search the line map for the text node corresponding to, // or closest to, the target character. for (var i = 0; i < map.length; i += 3) { var mStart = map[i], mEnd = map[i + 1]; if (ch < mStart) { start = 0; end = 1; collapse = "left"; } else if (ch < mEnd) { start = ch - mStart; end = start + 1; } else if (i == map.length - 3 || ch == mEnd && map[i + 3] > ch) { end = mEnd - mStart; start = end - 1; if (ch >= mEnd) collapse = "right"; } if (start != null) { node = map[i + 2]; if (mStart == mEnd && bias == (node.insertLeft ? "left" : "right")) collapse = bias; if (bias == "left" && start == 0) while (i && map[i - 2] == map[i - 3] && map[i - 1].insertLeft) { node = map[(i -= 3) + 2]; collapse = "left"; } if (bias == "right" && start == mEnd - mStart) while (i < map.length - 3 && map[i + 3] == map[i + 4] && !map[i + 5].insertLeft) { node = map[(i += 3) + 2]; collapse = "right"; } break; } } return {node: node, start: start, end: end, collapse: collapse, coverStart: mStart, coverEnd: mEnd}; } function getUsefulRect(rects, bias) { var rect = nullRect if (bias == "left") for (var i = 0; i < rects.length; i++) { if ((rect = rects[i]).left != rect.right) break } else for (var i = rects.length - 1; i >= 0; i--) { if ((rect = rects[i]).left != rect.right) break } return rect } function measureCharInner(cm, prepared, ch, bias) { var place = nodeAndOffsetInLineMap(prepared.map, ch, bias); var node = place.node, start = place.start, end = place.end, collapse = place.collapse; var rect; if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates. for (var i = 0; i < 4; i++) { // Retry a maximum of 4 times when nonsense rectangles are returned while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) --start; while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) ++end; if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart) rect = node.parentNode.getBoundingClientRect(); else rect = getUsefulRect(range(node, start, end).getClientRects(), bias) if (rect.left || rect.right || start == 0) break; end = start; start = start - 1; collapse = "right"; } if (ie && ie_version < 11) rect = maybeUpdateRectForZooming(cm.display.measure, rect); } else { // If it is a widget, simply get the box for the whole widget. if (start > 0) collapse = bias = "right"; var rects; if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1) rect = rects[bias == "right" ? rects.length - 1 : 0]; else rect = node.getBoundingClientRect(); } if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) { var rSpan = node.parentNode.getClientRects()[0]; if (rSpan) rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom}; else rect = nullRect; } var rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top; var mid = (rtop + rbot) / 2; var heights = prepared.view.measure.heights; for (var i = 0; i < heights.length - 1; i++) if (mid < heights[i]) break; var top = i ? heights[i - 1] : 0, bot = heights[i]; var result = {left: (collapse == "right" ? rect.right : rect.left) - prepared.rect.left, right: (collapse == "left" ? rect.left : rect.right) - prepared.rect.left, top: top, bottom: bot}; if (!rect.left && !rect.right) result.bogus = true; if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop; result.rbottom = rbot; } return result; } // Work around problem with bounding client rects on ranges being // returned incorrectly when zoomed on IE10 and below. function maybeUpdateRectForZooming(measure, rect) { if (!window.screen || screen.logicalXDPI == null || screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure)) return rect; var scaleX = screen.logicalXDPI / screen.deviceXDPI; var scaleY = screen.logicalYDPI / screen.deviceYDPI; return {left: rect.left * scaleX, right: rect.right * scaleX, top: rect.top * scaleY, bottom: rect.bottom * scaleY}; } function clearLineMeasurementCacheFor(lineView) { if (lineView.measure) { lineView.measure.cache = {}; lineView.measure.heights = null; if (lineView.rest) for (var i = 0; i < lineView.rest.length; i++) lineView.measure.caches[i] = {}; } } function clearLineMeasurementCache(cm) { cm.display.externalMeasure = null; removeChildren(cm.display.lineMeasure); for (var i = 0; i < cm.display.view.length; i++) clearLineMeasurementCacheFor(cm.display.view[i]); } function clearCaches(cm) { clearLineMeasurementCache(cm); cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null; if (!cm.options.lineWrapping) cm.display.maxLineChanged = true; cm.display.lineNumChars = null; } function pageScrollX() { return window.pageXOffset || (document.documentElement || document.body).scrollLeft; } function pageScrollY() { return window.pageYOffset || (document.documentElement || document.body).scrollTop; } // Converts a {top, bottom, left, right} box from line-local // coordinates into another coordinate system. Context may be one of // "line", "div" (display.lineDiv), "local"/null (editor), "window", // or "page". function intoCoordSystem(cm, lineObj, rect, context) { if (lineObj.widgets) for (var i = 0; i < lineObj.widgets.length; ++i) if (lineObj.widgets[i].above) { var size = widgetHeight(lineObj.widgets[i]); rect.top += size; rect.bottom += size; } if (context == "line") return rect; if (!context) context = "local"; var yOff = heightAtLine(lineObj); if (context == "local") yOff += paddingTop(cm.display); else yOff -= cm.display.viewOffset; if (context == "page" || context == "window") { var lOff = cm.display.lineSpace.getBoundingClientRect(); yOff += lOff.top + (context == "window" ? 0 : pageScrollY()); var xOff = lOff.left + (context == "window" ? 0 : pageScrollX()); rect.left += xOff; rect.right += xOff; } rect.top += yOff; rect.bottom += yOff; return rect; } // Coverts a box from "div" coords to another coordinate system. // Context may be "window", "page", "div", or "local"/null. function fromCoordSystem(cm, coords, context) { if (context == "div") return coords; var left = coords.left, top = coords.top; // First move into "page" coordinate system if (context == "page") { left -= pageScrollX(); top -= pageScrollY(); } else if (context == "local" || !context) { var localBox = cm.display.sizer.getBoundingClientRect(); left += localBox.left; top += localBox.top; } var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect(); return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top}; } function charCoords(cm, pos, context, lineObj, bias) { if (!lineObj) lineObj = getLine(cm.doc, pos.line); return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context); } // Returns a box for a given cursor position, which may have an // 'other' property containing the position of the secondary cursor // on a bidi boundary. function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) { lineObj = lineObj || getLine(cm.doc, pos.line); if (!preparedMeasure) preparedMeasure = prepareMeasureForLine(cm, lineObj); function get(ch, right) { var m = measureCharPrepared(cm, preparedMeasure, ch, right ? "right" : "left", varHeight); if (right) m.left = m.right; else m.right = m.left; return intoCoordSystem(cm, lineObj, m, context); } function getBidi(ch, partPos) { var part = order[partPos], right = part.level % 2; if (ch == bidiLeft(part) && partPos && part.level < order[partPos - 1].level) { part = order[--partPos]; ch = bidiRight(part) - (part.level % 2 ? 0 : 1); right = true; } else if (ch == bidiRight(part) && partPos < order.length - 1 && part.level < order[partPos + 1].level) { part = order[++partPos]; ch = bidiLeft(part) - part.level % 2; right = false; } if (right && ch == part.to && ch > part.from) return get(ch - 1); return get(ch, right); } var order = getOrder(lineObj), ch = pos.ch; if (!order) return get(ch); var partPos = getBidiPartAt(order, ch); var val = getBidi(ch, partPos); if (bidiOther != null) val.other = getBidi(ch, bidiOther); return val; } // Used to cheaply estimate the coordinates for a position. Used for // intermediate scroll updates. function estimateCoords(cm, pos) { var left = 0, pos = clipPos(cm.doc, pos); if (!cm.options.lineWrapping) left = charWidth(cm.display) * pos.ch; var lineObj = getLine(cm.doc, pos.line); var top = heightAtLine(lineObj) + paddingTop(cm.display); return {left: left, right: left, top: top, bottom: top + lineObj.height}; } // Positions returned by coordsChar contain some extra information. // xRel is the relative x position of the input coordinates compared // to the found position (so xRel > 0 means the coordinates are to // the right of the character position, for example). When outside // is true, that means the coordinates lie outside the line's // vertical range. function PosWithInfo(line, ch, outside, xRel) { var pos = Pos(line, ch); pos.xRel = xRel; if (outside) pos.outside = true; return pos; } // Compute the character position closest to the given coordinates. // Input must be lineSpace-local ("div" coordinate system). function coordsChar(cm, x, y) { var doc = cm.doc; y += cm.display.viewOffset; if (y < 0) return PosWithInfo(doc.first, 0, true, -1); var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1; if (lineN > last) return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, true, 1); if (x < 0) x = 0; var lineObj = getLine(doc, lineN); for (;;) { var found = coordsCharInner(cm, lineObj, lineN, x, y); var merged = collapsedSpanAtEnd(lineObj); var mergedPos = merged && merged.find(0, true); if (merged && (found.ch > mergedPos.from.ch || found.ch == mergedPos.from.ch && found.xRel > 0)) lineN = lineNo(lineObj = mergedPos.to.line); else return found; } } function coordsCharInner(cm, lineObj, lineNo, x, y) { var innerOff = y - heightAtLine(lineObj); var wrongLine = false, adjust = 2 * cm.display.wrapper.clientWidth; var preparedMeasure = prepareMeasureForLine(cm, lineObj); function getX(ch) { var sp = cursorCoords(cm, Pos(lineNo, ch), "line", lineObj, preparedMeasure); wrongLine = true; if (innerOff > sp.bottom) return sp.left - adjust; else if (innerOff < sp.top) return sp.left + adjust; else wrongLine = false; return sp.left; } var bidi = getOrder(lineObj), dist = lineObj.text.length; var from = lineLeft(lineObj), to = lineRight(lineObj); var fromX = getX(from), fromOutside = wrongLine, toX = getX(to), toOutside = wrongLine; if (x > toX) return PosWithInfo(lineNo, to, toOutside, 1); // Do a binary search between these bounds. for (;;) { if (bidi ? to == from || to == moveVisually(lineObj, from, 1) : to - from <= 1) { var ch = x < fromX || x - fromX <= toX - x ? from : to; var outside = ch == from ? fromOutside : toOutside var xDiff = x - (ch == from ? fromX : toX); // This is a kludge to handle the case where the coordinates // are after a line-wrapped line. We should replace it with a // more general handling of cursor positions around line // breaks. (Issue #4078) if (toOutside && !bidi && !/\s/.test(lineObj.text.charAt(ch)) && xDiff > 0 && ch < lineObj.text.length && preparedMeasure.view.measure.heights.length > 1) { var charSize = measureCharPrepared(cm, preparedMeasure, ch, "right"); if (innerOff <= charSize.bottom && innerOff >= charSize.top && Math.abs(x - charSize.right) < xDiff) { outside = false ch++ xDiff = x - charSize.right } } while (isExtendingChar(lineObj.text.charAt(ch))) ++ch; var pos = PosWithInfo(lineNo, ch, outside, xDiff < -1 ? -1 : xDiff > 1 ? 1 : 0); return pos; } var step = Math.ceil(dist / 2), middle = from + step; if (bidi) { middle = from; for (var i = 0; i < step; ++i) middle = moveVisually(lineObj, middle, 1); } var middleX = getX(middle); if (middleX > x) {to = middle; toX = middleX; if (toOutside = wrongLine) toX += 1000; dist = step;} else {from = middle; fromX = middleX; fromOutside = wrongLine; dist -= step;} } } var measureText; // Compute the default text height. function textHeight(display) { if (display.cachedTextHeight != null) return display.cachedTextHeight; if (measureText == null) { measureText = elt("pre"); // Measure a bunch of lines, for browsers that compute // fractional heights. for (var i = 0; i < 49; ++i) { measureText.appendChild(document.createTextNode("x")); measureText.appendChild(elt("br")); } measureText.appendChild(document.createTextNode("x")); } removeChildrenAndAdd(display.measure, measureText); var height = measureText.offsetHeight / 50; if (height > 3) display.cachedTextHeight = height; removeChildren(display.measure); return height || 1; } // Compute the default character width. function charWidth(display) { if (display.cachedCharWidth != null) return display.cachedCharWidth; var anchor = elt("span", "xxxxxxxxxx"); var pre = elt("pre", [anchor]); removeChildrenAndAdd(display.measure, pre); var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10; if (width > 2) display.cachedCharWidth = width; return width || 10; } // OPERATIONS // Operations are used to wrap a series of changes to the editor // state in such a way that each change won't have to update the // cursor and display (which would be awkward, slow, and // error-prone). Instead, display updates are batched and then all // combined and executed at once. var operationGroup = null; var nextOpId = 0; // Start a new operation. function startOperation(cm) { cm.curOp = { cm: cm, viewChanged: false, // Flag that indicates that lines might need to be redrawn startHeight: cm.doc.height, // Used to detect need to update scrollbar forceUpdate: false, // Used to force a redraw updateInput: null, // Whether to reset the input textarea typing: false, // Whether this reset should be careful to leave existing text (for compositing) changeObjs: null, // Accumulated changes, for firing change events cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on cursorActivityCalled: 0, // Tracks which cursorActivity handlers have been called already selectionChanged: false, // Whether the selection needs to be redrawn updateMaxLine: false, // Set when the widest line needs to be determined anew scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet scrollToPos: null, // Used to scroll to a specific position focus: false, id: ++nextOpId // Unique ID }; if (operationGroup) { operationGroup.ops.push(cm.curOp); } else { cm.curOp.ownsGroup = operationGroup = { ops: [cm.curOp], delayedCallbacks: [] }; } } function fireCallbacksForOps(group) { // Calls delayed callbacks and cursorActivity handlers until no // new ones appear var callbacks = group.delayedCallbacks, i = 0; do { for (; i < callbacks.length; i++) callbacks[i].call(null); for (var j = 0; j < group.ops.length; j++) { var op = group.ops[j]; if (op.cursorActivityHandlers) while (op.cursorActivityCalled < op.cursorActivityHandlers.length) op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm); } } while (i < callbacks.length); } // Finish an operation, updating the display and signalling delayed events function endOperation(cm) { var op = cm.curOp, group = op.ownsGroup; if (!group) return; try { fireCallbacksForOps(group); } finally { operationGroup = null; for (var i = 0; i < group.ops.length; i++) group.ops[i].cm.curOp = null; endOperations(group); } } // The DOM updates done when an operation finishes are batched so // that the minimum number of relayouts are required. function endOperations(group) { var ops = group.ops; for (var i = 0; i < ops.length; i++) // Read DOM endOperation_R1(ops[i]); for (var i = 0; i < ops.length; i++) // Write DOM (maybe) endOperation_W1(ops[i]); for (var i = 0; i < ops.length; i++) // Read DOM endOperation_R2(ops[i]); for (var i = 0; i < ops.length; i++) // Write DOM (maybe) endOperation_W2(ops[i]); for (var i = 0; i < ops.length; i++) // Read DOM endOperation_finish(ops[i]); } function endOperation_R1(op) { var cm = op.cm, display = cm.display; maybeClipScrollbars(cm); if (op.updateMaxLine) findMaxLine(cm); op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null || op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom || op.scrollToPos.to.line >= display.viewTo) || display.maxLineChanged && cm.options.lineWrapping; op.update = op.mustUpdate && new DisplayUpdate(cm, op.mustUpdate && {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate); } function endOperation_W1(op) { op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update); } function endOperation_R2(op) { var cm = op.cm, display = cm.display; if (op.updatedDisplay) updateHeightsInViewport(cm); op.barMeasure = measureForScrollbars(cm); // If the max line changed since it was last measured, measure it, // and ensure the document's width matches it. // updateDisplay_W2 will use these properties to do the actual resizing if (display.maxLineChanged && !cm.options.lineWrapping) { op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3; cm.display.sizerWidth = op.adjustWidthTo; op.barMeasure.scrollWidth = Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth); op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm)); } if (op.updatedDisplay || op.selectionChanged) op.preparedSelection = display.input.prepareSelection(op.focus); } function endOperation_W2(op) { var cm = op.cm; if (op.adjustWidthTo != null) { cm.display.sizer.style.minWidth = op.adjustWidthTo + "px"; if (op.maxScrollLeft < cm.doc.scrollLeft) setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true); cm.display.maxLineChanged = false; } var takeFocus = op.focus && op.focus == activeElt() && (!document.hasFocus || document.hasFocus()) if (op.preparedSelection) cm.display.input.showSelection(op.preparedSelection, takeFocus); if (op.updatedDisplay || op.startHeight != cm.doc.height) updateScrollbars(cm, op.barMeasure); if (op.updatedDisplay) setDocumentHeight(cm, op.barMeasure); if (op.selectionChanged) restartBlink(cm); if (cm.state.focused && op.updateInput) cm.display.input.reset(op.typing); if (takeFocus) ensureFocus(op.cm); } function endOperation_finish(op) { var cm = op.cm, display = cm.display, doc = cm.doc; if (op.updatedDisplay) postUpdateDisplay(cm, op.update); // Abort mouse wheel delta measurement, when scrolling explicitly if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos)) display.wheelStartX = display.wheelStartY = null; // Propagate the scroll position to the actual DOM scroller if (op.scrollTop != null && (display.scroller.scrollTop != op.scrollTop || op.forceScroll)) { doc.scrollTop = Math.max(0, Math.min(display.scroller.scrollHeight - display.scroller.clientHeight, op.scrollTop)); display.scrollbars.setScrollTop(doc.scrollTop); display.scroller.scrollTop = doc.scrollTop; } if (op.scrollLeft != null && (display.scroller.scrollLeft != op.scrollLeft || op.forceScroll)) { doc.scrollLeft = Math.max(0, Math.min(display.scroller.scrollWidth - display.scroller.clientWidth, op.scrollLeft)); display.scrollbars.setScrollLeft(doc.scrollLeft); display.scroller.scrollLeft = doc.scrollLeft; alignHorizontally(cm); } // If we need to scroll a specific position into view, do so. if (op.scrollToPos) { var coords = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from), clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin); if (op.scrollToPos.isCursor && cm.state.focused) maybeScrollWindow(cm, coords); } // Fire events for markers that are hidden/unidden by editing or // undoing var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers; if (hidden) for (var i = 0; i < hidden.length; ++i) if (!hidden[i].lines.length) signal(hidden[i], "hide"); if (unhidden) for (var i = 0; i < unhidden.length; ++i) if (unhidden[i].lines.length) signal(unhidden[i], "unhide"); if (display.wrapper.offsetHeight) doc.scrollTop = cm.display.scroller.scrollTop; // Fire change events, and delayed event handlers if (op.changeObjs) signal(cm, "changes", cm, op.changeObjs); if (op.update) op.update.finish(); } // Run the given function in an operation function runInOp(cm, f) { if (cm.curOp) return f(); startOperation(cm); try { return f(); } finally { endOperation(cm); } } // Wraps a function in an operation. Returns the wrapped function. function operation(cm, f) { return function() { if (cm.curOp) return f.apply(cm, arguments); startOperation(cm); try { return f.apply(cm, arguments); } finally { endOperation(cm); } }; } // Used to add methods to editor and doc instances, wrapping them in // operations. function methodOp(f) { return function() { if (this.curOp) return f.apply(this, arguments); startOperation(this); try { return f.apply(this, arguments); } finally { endOperation(this); } }; } function docMethodOp(f) { return function() { var cm = this.cm; if (!cm || cm.curOp) return f.apply(this, arguments); startOperation(cm); try { return f.apply(this, arguments); } finally { endOperation(cm); } }; } // VIEW TRACKING // These objects are used to represent the visible (currently drawn) // part of the document. A LineView may correspond to multiple // logical lines, if those are connected by collapsed ranges. function LineView(doc, line, lineN) { // The starting line this.line = line; // Continuing lines, if any this.rest = visualLineContinued(line); // Number of logical lines in this visual line this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1; this.node = this.text = null; this.hidden = lineIsHidden(doc, line); } // Create a range of LineView objects for the given lines. function buildViewArray(cm, from, to) { var array = [], nextPos; for (var pos = from; pos < to; pos = nextPos) { var view = new LineView(cm.doc, getLine(cm.doc, pos), pos); nextPos = pos + view.size; array.push(view); } return array; } // Updates the display.view data structure for a given change to the // document. From and to are in pre-change coordinates. Lendiff is // the amount of lines added or subtracted by the change. This is // used for changes that span multiple lines, or change the way // lines are divided into visual lines. regLineChange (below) // registers single-line changes. function regChange(cm, from, to, lendiff) { if (from == null) from = cm.doc.first; if (to == null) to = cm.doc.first + cm.doc.size; if (!lendiff) lendiff = 0; var display = cm.display; if (lendiff && to < display.viewTo && (display.updateLineNumbers == null || display.updateLineNumbers > from)) display.updateLineNumbers = from; cm.curOp.viewChanged = true; if (from >= display.viewTo) { // Change after if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo) resetView(cm); } else if (to <= display.viewFrom) { // Change before if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) { resetView(cm); } else { display.viewFrom += lendiff; display.viewTo += lendiff; } } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap resetView(cm); } else if (from <= display.viewFrom) { // Top overlap var cut = viewCuttingPoint(cm, to, to + lendiff, 1); if (cut) { display.view = display.view.slice(cut.index); display.viewFrom = cut.lineN; display.viewTo += lendiff; } else { resetView(cm); } } else if (to >= display.viewTo) { // Bottom overlap var cut = viewCuttingPoint(cm, from, from, -1); if (cut) { display.view = display.view.slice(0, cut.index); display.viewTo = cut.lineN; } else { resetView(cm); } } else { // Gap in the middle var cutTop = viewCuttingPoint(cm, from, from, -1); var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1); if (cutTop && cutBot) { display.view = display.view.slice(0, cutTop.index) .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN)) .concat(display.view.slice(cutBot.index)); display.viewTo += lendiff; } else { resetView(cm); } } var ext = display.externalMeasured; if (ext) { if (to < ext.lineN) ext.lineN += lendiff; else if (from < ext.lineN + ext.size) display.externalMeasured = null; } } // Register a change to a single line. Type must be one of "text", // "gutter", "class", "widget" function regLineChange(cm, line, type) { cm.curOp.viewChanged = true; var display = cm.display, ext = cm.display.externalMeasured; if (ext && line >= ext.lineN && line < ext.lineN + ext.size) display.externalMeasured = null; if (line < display.viewFrom || line >= display.viewTo) return; var lineView = display.view[findViewIndex(cm, line)]; if (lineView.node == null) return; var arr = lineView.changes || (lineView.changes = []); if (indexOf(arr, type) == -1) arr.push(type); } // Clear the view. function resetView(cm) { cm.display.viewFrom = cm.display.viewTo = cm.doc.first; cm.display.view = []; cm.display.viewOffset = 0; } // Find the view element corresponding to a given line. Return null // when the line isn't visible. function findViewIndex(cm, n) { if (n >= cm.display.viewTo) return null; n -= cm.display.viewFrom; if (n < 0) return null; var view = cm.display.view; for (var i = 0; i < view.length; i++) { n -= view[i].size; if (n < 0) return i; } } function viewCuttingPoint(cm, oldN, newN, dir) { var index = findViewIndex(cm, oldN), diff, view = cm.display.view; if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size) return {index: index, lineN: newN}; for (var i = 0, n = cm.display.viewFrom; i < index; i++) n += view[i].size; if (n != oldN) { if (dir > 0) { if (index == view.length - 1) return null; diff = (n + view[index].size) - oldN; index++; } else { diff = n - oldN; } oldN += diff; newN += diff; } while (visualLineNo(cm.doc, newN) != newN) { if (index == (dir < 0 ? 0 : view.length - 1)) return null; newN += dir * view[index - (dir < 0 ? 1 : 0)].size; index += dir; } return {index: index, lineN: newN}; } // Force the view to cover a given range, adding empty view element // or clipping off existing ones as needed. function adjustView(cm, from, to) { var display = cm.display, view = display.view; if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) { display.view = buildViewArray(cm, from, to); display.viewFrom = from; } else { if (display.viewFrom > from) display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view); else if (display.viewFrom < from) display.view = display.view.slice(findViewIndex(cm, from)); display.viewFrom = from; if (display.viewTo < to) display.view = display.view.concat(buildViewArray(cm, display.viewTo, to)); else if (display.viewTo > to) display.view = display.view.slice(0, findViewIndex(cm, to)); } display.viewTo = to; } // Count the number of lines in the view whose DOM representation is // out of date (or nonexistent). function countDirtyView(cm) { var view = cm.display.view, dirty = 0; for (var i = 0; i < view.length; i++) { var lineView = view[i]; if (!lineView.hidden && (!lineView.node || lineView.changes)) ++dirty; } return dirty; } // EVENT HANDLERS // Attach the necessary event handlers when initializing the editor function registerEventHandlers(cm) { var d = cm.display; on(d.scroller, "mousedown", operation(cm, onMouseDown)); // Older IE's will not fire a second mousedown for a double click if (ie && ie_version < 11) on(d.scroller, "dblclick", operation(cm, function(e) { if (signalDOMEvent(cm, e)) return; var pos = posFromMouse(cm, e); if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) return; e_preventDefault(e); var word = cm.findWordAt(pos); extendSelection(cm.doc, word.anchor, word.head); })); else on(d.scroller, "dblclick", function(e) { signalDOMEvent(cm, e) || e_preventDefault(e); }); // Some browsers fire contextmenu *after* opening the menu, at // which point we can't mess with it anymore. Context menu is // handled in onMouseDown for these browsers. if (!captureRightClick) on(d.scroller, "contextmenu", function(e) {onContextMenu(cm, e);}); // Used to suppress mouse event handling when a touch happens var touchFinished, prevTouch = {end: 0}; function finishTouch() { if (d.activeTouch) { touchFinished = setTimeout(function() {d.activeTouch = null;}, 1000); prevTouch = d.activeTouch; prevTouch.end = +new Date; } }; function isMouseLikeTouchEvent(e) { if (e.touches.length != 1) return false; var touch = e.touches[0]; return touch.radiusX <= 1 && touch.radiusY <= 1; } function farAway(touch, other) { if (other.left == null) return true; var dx = other.left - touch.left, dy = other.top - touch.top; return dx * dx + dy * dy > 20 * 20; } on(d.scroller, "touchstart", function(e) { if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e)) { clearTimeout(touchFinished); var now = +new Date; d.activeTouch = {start: now, moved: false, prev: now - prevTouch.end <= 300 ? prevTouch : null}; if (e.touches.length == 1) { d.activeTouch.left = e.touches[0].pageX; d.activeTouch.top = e.touches[0].pageY; } } }); on(d.scroller, "touchmove", function() { if (d.activeTouch) d.activeTouch.moved = true; }); on(d.scroller, "touchend", function(e) { var touch = d.activeTouch; if (touch && !eventInWidget(d, e) && touch.left != null && !touch.moved && new Date - touch.start < 300) { var pos = cm.coordsChar(d.activeTouch, "page"), range; if (!touch.prev || farAway(touch, touch.prev)) // Single tap range = new Range(pos, pos); else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap range = cm.findWordAt(pos); else // Triple tap range = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))); cm.setSelection(range.anchor, range.head); cm.focus(); e_preventDefault(e); } finishTouch(); }); on(d.scroller, "touchcancel", finishTouch); // Sync scrolling between fake scrollbars and real scrollable // area, ensure viewport is updated when scrolling. on(d.scroller, "scroll", function() { if (d.scroller.clientHeight) { setScrollTop(cm, d.scroller.scrollTop); setScrollLeft(cm, d.scroller.scrollLeft, true); signal(cm, "scroll", cm); } }); // Listen to wheel events in order to try and update the viewport on time. on(d.scroller, "mousewheel", function(e){onScrollWheel(cm, e);}); on(d.scroller, "DOMMouseScroll", function(e){onScrollWheel(cm, e);}); // Prevent wrapper from ever scrolling on(d.wrapper, "scroll", function() { d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; }); d.dragFunctions = { enter: function(e) {if (!signalDOMEvent(cm, e)) e_stop(e);}, over: function(e) {if (!signalDOMEvent(cm, e)) { onDragOver(cm, e); e_stop(e); }}, start: function(e){onDragStart(cm, e);}, drop: operation(cm, onDrop), leave: function(e) {if (!signalDOMEvent(cm, e)) { clearDragCursor(cm); }} }; var inp = d.input.getField(); on(inp, "keyup", function(e) { onKeyUp.call(cm, e); }); on(inp, "keydown", operation(cm, onKeyDown)); on(inp, "keypress", operation(cm, onKeyPress)); on(inp, "focus", bind(onFocus, cm)); on(inp, "blur", bind(onBlur, cm)); } function dragDropChanged(cm, value, old) { var wasOn = old && old != CodeMirror.Init; if (!value != !wasOn) { var funcs = cm.display.dragFunctions; var toggle = value ? on : off; toggle(cm.display.scroller, "dragstart", funcs.start); toggle(cm.display.scroller, "dragenter", funcs.enter); toggle(cm.display.scroller, "dragover", funcs.over); toggle(cm.display.scroller, "dragleave", funcs.leave); toggle(cm.display.scroller, "drop", funcs.drop); } } // Called when the window resizes function onResize(cm) { var d = cm.display; if (d.lastWrapHeight == d.wrapper.clientHeight && d.lastWrapWidth == d.wrapper.clientWidth) return; // Might be a text scaling operation, clear size caches. d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null; d.scrollbarsClipped = false; cm.setSize(); } // MOUSE EVENTS // Return true when the given mouse event happened in a widget function eventInWidget(display, e) { for (var n = e_target(e); n != display.wrapper; n = n.parentNode) { if (!n || (n.nodeType == 1 && n.getAttribute("cm-ignore-events") == "true") || (n.parentNode == display.sizer && n != display.mover)) return true; } } // Given a mouse event, find the corresponding position. If liberal // is false, it checks whether a gutter or scrollbar was clicked, // and returns null if it was. forRect is used by rectangular // selections, and tries to estimate a character position even for // coordinates beyond the right of the text. function posFromMouse(cm, e, liberal, forRect) { var display = cm.display; if (!liberal && e_target(e).getAttribute("cm-not-content") == "true") return null; var x, y, space = display.lineSpace.getBoundingClientRect(); // Fails unpredictably on IE[67] when mouse is dragged around quickly. try { x = e.clientX - space.left; y = e.clientY - space.top; } catch (e) { return null; } var coords = coordsChar(cm, x, y), line; if (forRect && coords.xRel == 1 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) { var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length; coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff)); } return coords; } // A mouse down can be a single click, double click, triple click, // start of selection drag, start of text drag, new cursor // (ctrl-click), rectangle drag (alt-drag), or xwin // middle-click-paste. Or it might be a click on something we should // not interfere with, such as a scrollbar or widget. function onMouseDown(e) { var cm = this, display = cm.display; if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) return; display.shift = e.shiftKey; if (eventInWidget(display, e)) { if (!webkit) { // Briefly turn off draggability, to allow widgets to do // normal dragging things. display.scroller.draggable = false; setTimeout(function(){display.scroller.draggable = true;}, 100); } return; } if (clickInGutter(cm, e)) return; var start = posFromMouse(cm, e); window.focus(); switch (e_button(e)) { case 1: // #3261: make sure, that we're not starting a second selection if (cm.state.selectingText) cm.state.selectingText(e); else if (start) leftButtonDown(cm, e, start); else if (e_target(e) == display.scroller) e_preventDefault(e); break; case 2: if (webkit) cm.state.lastMiddleDown = +new Date; if (start) extendSelection(cm.doc, start); setTimeout(function() {display.input.focus();}, 20); e_preventDefault(e); break; case 3: if (captureRightClick) onContextMenu(cm, e); else delayBlurEvent(cm); break; } } var lastClick, lastDoubleClick; function leftButtonDown(cm, e, start) { if (ie) setTimeout(bind(ensureFocus, cm), 0); else cm.curOp.focus = activeElt(); var now = +new Date, type; if (lastDoubleClick && lastDoubleClick.time > now - 400 && cmp(lastDoubleClick.pos, start) == 0) { type = "triple"; } else if (lastClick && lastClick.time > now - 400 && cmp(lastClick.pos, start) == 0) { type = "double"; lastDoubleClick = {time: now, pos: start}; } else { type = "single"; lastClick = {time: now, pos: start}; } var sel = cm.doc.sel, modifier = mac ? e.metaKey : e.ctrlKey, contained; if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() && type == "single" && (contained = sel.contains(start)) > -1 && (cmp((contained = sel.ranges[contained]).from(), start) < 0 || start.xRel > 0) && (cmp(contained.to(), start) > 0 || start.xRel < 0)) leftButtonStartDrag(cm, e, start, modifier); else leftButtonSelect(cm, e, start, type, modifier); } // Start a text drag. When it ends, see if any dragging actually // happen, and treat as a click if it didn't. function leftButtonStartDrag(cm, e, start, modifier) { var display = cm.display, startTime = +new Date; var dragEnd = operation(cm, function(e2) { if (webkit) display.scroller.draggable = false; cm.state.draggingText = false; off(document, "mouseup", dragEnd); off(display.scroller, "drop", dragEnd); if (Math.abs(e.clientX - e2.clientX) + Math.abs(e.clientY - e2.clientY) < 10) { e_preventDefault(e2); if (!modifier && +new Date - 200 < startTime) extendSelection(cm.doc, start); // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081) if (webkit || ie && ie_version == 9) setTimeout(function() {document.body.focus(); display.input.focus();}, 20); else display.input.focus(); } }); // Let the drag handler handle this. if (webkit) display.scroller.draggable = true; cm.state.draggingText = dragEnd; dragEnd.copy = mac ? e.altKey : e.ctrlKey // IE's approach to draggable if (display.scroller.dragDrop) display.scroller.dragDrop(); on(document, "mouseup", dragEnd); on(display.scroller, "drop", dragEnd); } // Normal selection, as opposed to text dragging. function leftButtonSelect(cm, e, start, type, addNew) { var display = cm.display, doc = cm.doc; e_preventDefault(e); var ourRange, ourIndex, startSel = doc.sel, ranges = startSel.ranges; if (addNew && !e.shiftKey) { ourIndex = doc.sel.contains(start); if (ourIndex > -1) ourRange = ranges[ourIndex]; else ourRange = new Range(start, start); } else { ourRange = doc.sel.primary(); ourIndex = doc.sel.primIndex; } if (chromeOS ? e.shiftKey && e.metaKey : e.altKey) { type = "rect"; if (!addNew) ourRange = new Range(start, start); start = posFromMouse(cm, e, true, true); ourIndex = -1; } else if (type == "double") { var word = cm.findWordAt(start); if (cm.display.shift || doc.extend) ourRange = extendRange(doc, ourRange, word.anchor, word.head); else ourRange = word; } else if (type == "triple") { var line = new Range(Pos(start.line, 0), clipPos(doc, Pos(start.line + 1, 0))); if (cm.display.shift || doc.extend) ourRange = extendRange(doc, ourRange, line.anchor, line.head); else ourRange = line; } else { ourRange = extendRange(doc, ourRange, start); } if (!addNew) { ourIndex = 0; setSelection(doc, new Selection([ourRange], 0), sel_mouse); startSel = doc.sel; } else if (ourIndex == -1) { ourIndex = ranges.length; setSelection(doc, normalizeSelection(ranges.concat([ourRange]), ourIndex), {scroll: false, origin: "*mouse"}); } else if (ranges.length > 1 && ranges[ourIndex].empty() && type == "single" && !e.shiftKey) { setSelection(doc, normalizeSelection(ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0), {scroll: false, origin: "*mouse"}); startSel = doc.sel; } else { replaceOneSelection(doc, ourIndex, ourRange, sel_mouse); } var lastPos = start; function extendTo(pos) { if (cmp(lastPos, pos) == 0) return; lastPos = pos; if (type == "rect") { var ranges = [], tabSize = cm.options.tabSize; var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize); var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize); var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol); for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line)); line <= end; line++) { var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize); if (left == right) ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos))); else if (text.length > leftPos) ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))); } if (!ranges.length) ranges.push(new Range(start, start)); setSelection(doc, normalizeSelection(startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex), {origin: "*mouse", scroll: false}); cm.scrollIntoView(pos); } else { var oldRange = ourRange; var anchor = oldRange.anchor, head = pos; if (type != "single") { if (type == "double") var range = cm.findWordAt(pos); else var range = new Range(Pos(pos.line, 0), clipPos(doc, Pos(pos.line + 1, 0))); if (cmp(range.anchor, anchor) > 0) { head = range.head; anchor = minPos(oldRange.from(), range.anchor); } else { head = range.anchor; anchor = maxPos(oldRange.to(), range.head); } } var ranges = startSel.ranges.slice(0); ranges[ourIndex] = new Range(clipPos(doc, anchor), head); setSelection(doc, normalizeSelection(ranges, ourIndex), sel_mouse); } } var editorSize = display.wrapper.getBoundingClientRect(); // Used to ensure timeout re-tries don't fire when another extend // happened in the meantime (clearTimeout isn't reliable -- at // least on Chrome, the timeouts still happen even when cleared, // if the clear happens after their scheduled firing time). var counter = 0; function extend(e) { var curCount = ++counter; var cur = posFromMouse(cm, e, true, type == "rect"); if (!cur) return; if (cmp(cur, lastPos) != 0) { cm.curOp.focus = activeElt(); extendTo(cur); var visible = visibleLines(display, doc); if (cur.line >= visible.to || cur.line < visible.from) setTimeout(operation(cm, function(){if (counter == curCount) extend(e);}), 150); } else { var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0; if (outside) setTimeout(operation(cm, function() { if (counter != curCount) return; display.scroller.scrollTop += outside; extend(e); }), 50); } } function done(e) { cm.state.selectingText = false; counter = Infinity; e_preventDefault(e); display.input.focus(); off(document, "mousemove", move); off(document, "mouseup", up); doc.history.lastSelOrigin = null; } var move = operation(cm, function(e) { if (!e_button(e)) done(e); else extend(e); }); var up = operation(cm, done); cm.state.selectingText = up; on(document, "mousemove", move); on(document, "mouseup", up); } // Determines whether an event happened in the gutter, and fires the // handlers for the corresponding event. function gutterEvent(cm, e, type, prevent) { try { var mX = e.clientX, mY = e.clientY; } catch(e) { return false; } if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) return false; if (prevent) e_preventDefault(e); var display = cm.display; var lineBox = display.lineDiv.getBoundingClientRect(); if (mY > lineBox.bottom || !hasHandler(cm, type)) return e_defaultPrevented(e); mY -= lineBox.top - display.viewOffset; for (var i = 0; i < cm.options.gutters.length; ++i) { var g = display.gutters.childNodes[i]; if (g && g.getBoundingClientRect().right >= mX) { var line = lineAtHeight(cm.doc, mY); var gutter = cm.options.gutters[i]; signal(cm, type, cm, line, gutter, e); return e_defaultPrevented(e); } } } function clickInGutter(cm, e) { return gutterEvent(cm, e, "gutterClick", true); } // Kludge to work around strange IE behavior where it'll sometimes // re-fire a series of drag-related events right after the drop (#1551) var lastDrop = 0; function onDrop(e) { var cm = this; clearDragCursor(cm); if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) return; e_preventDefault(e); if (ie) lastDrop = +new Date; var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files; if (!pos || cm.isReadOnly()) return; // Might be a file drop, in which case we simply extract the text // and insert it. if (files && files.length && window.FileReader && window.File) { var n = files.length, text = Array(n), read = 0; var loadFile = function(file, i) { if (cm.options.allowDropFileTypes && indexOf(cm.options.allowDropFileTypes, file.type) == -1) return; var reader = new FileReader; reader.onload = operation(cm, function() { var content = reader.result; if (/[\x00-\x08\x0e-\x1f]{2}/.test(content)) content = ""; text[i] = content; if (++read == n) { pos = clipPos(cm.doc, pos); var change = {from: pos, to: pos, text: cm.doc.splitLines(text.join(cm.doc.lineSeparator())), origin: "paste"}; makeChange(cm.doc, change); setSelectionReplaceHistory(cm.doc, simpleSelection(pos, changeEnd(change))); } }); reader.readAsText(file); }; for (var i = 0; i < n; ++i) loadFile(files[i], i); } else { // Normal drop // Don't do a replace if the drop happened inside of the selected text. if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) { cm.state.draggingText(e); // Ensure the editor is re-focused setTimeout(function() {cm.display.input.focus();}, 20); return; } try { var text = e.dataTransfer.getData("Text"); if (text) { if (cm.state.draggingText && !cm.state.draggingText.copy) var selected = cm.listSelections(); setSelectionNoUndo(cm.doc, simpleSelection(pos, pos)); if (selected) for (var i = 0; i < selected.length; ++i) replaceRange(cm.doc, "", selected[i].anchor, selected[i].head, "drag"); cm.replaceSelection(text, "around", "paste"); cm.display.input.focus(); } } catch(e){} } } function onDragStart(cm, e) { if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return; } if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) return; e.dataTransfer.setData("Text", cm.getSelection()); e.dataTransfer.effectAllowed = "copyMove" // Use dummy image instead of default browsers image. // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there. if (e.dataTransfer.setDragImage && !safari) { var img = elt("img", null, null, "position: fixed; left: 0; top: 0;"); img.src = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="; if (presto) { img.width = img.height = 1; cm.display.wrapper.appendChild(img); // Force a relayout, or Opera won't use our image for some obscure reason img._top = img.offsetTop; } e.dataTransfer.setDragImage(img, 0, 0); if (presto) img.parentNode.removeChild(img); } } function onDragOver(cm, e) { var pos = posFromMouse(cm, e); if (!pos) return; var frag = document.createDocumentFragment(); drawSelectionCursor(cm, pos, frag); if (!cm.display.dragCursor) { cm.display.dragCursor = elt("div", null, "CodeMirror-cursors CodeMirror-dragcursors"); cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv); } removeChildrenAndAdd(cm.display.dragCursor, frag); } function clearDragCursor(cm) { if (cm.display.dragCursor) { cm.display.lineSpace.removeChild(cm.display.dragCursor); cm.display.dragCursor = null; } } // SCROLL EVENTS // Sync the scrollable area and scrollbars, ensure the viewport // covers the visible area. function setScrollTop(cm, val) { if (Math.abs(cm.doc.scrollTop - val) < 2) return; cm.doc.scrollTop = val; if (!gecko) updateDisplaySimple(cm, {top: val}); if (cm.display.scroller.scrollTop != val) cm.display.scroller.scrollTop = val; cm.display.scrollbars.setScrollTop(val); if (gecko) updateDisplaySimple(cm); startWorker(cm, 100); } // Sync scroller and scrollbar, ensure the gutter elements are // aligned. function setScrollLeft(cm, val, isScroller) { if (isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) return; val = Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth); cm.doc.scrollLeft = val; alignHorizontally(cm); if (cm.display.scroller.scrollLeft != val) cm.display.scroller.scrollLeft = val; cm.display.scrollbars.setScrollLeft(val); } // Since the delta values reported on mouse wheel events are // unstandardized between browsers and even browser versions, and // generally horribly unpredictable, this code starts by measuring // the scroll effect that the first few mouse wheel events have, // and, from that, detects the way it can convert deltas to pixel // offsets afterwards. // // The reason we want to know the amount a wheel event will scroll // is that it gives us a chance to update the display before the // actual scrolling happens, reducing flickering. var wheelSamples = 0, wheelPixelsPerUnit = null; // Fill in a browser-detected starting value on browsers where we // know one. These don't have to be accurate -- the result of them // being wrong would just be a slight flicker on the first wheel // scroll (if it is large enough). if (ie) wheelPixelsPerUnit = -.53; else if (gecko) wheelPixelsPerUnit = 15; else if (chrome) wheelPixelsPerUnit = -.7; else if (safari) wheelPixelsPerUnit = -1/3; var wheelEventDelta = function(e) { var dx = e.wheelDeltaX, dy = e.wheelDeltaY; if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) dx = e.detail; if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) dy = e.detail; else if (dy == null) dy = e.wheelDelta; return {x: dx, y: dy}; }; CodeMirror.wheelEventPixels = function(e) { var delta = wheelEventDelta(e); delta.x *= wheelPixelsPerUnit; delta.y *= wheelPixelsPerUnit; return delta; }; function onScrollWheel(cm, e) { var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y; var display = cm.display, scroll = display.scroller; // Quit if there's nothing to scroll here var canScrollX = scroll.scrollWidth > scroll.clientWidth; var canScrollY = scroll.scrollHeight > scroll.clientHeight; if (!(dx && canScrollX || dy && canScrollY)) return; // Webkit browsers on OS X abort momentum scrolls when the target // of the scroll event is removed from the scrollable element. // This hack (see related code in patchDisplay) makes sure the // element is kept around. if (dy && mac && webkit) { outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) { for (var i = 0; i < view.length; i++) { if (view[i].node == cur) { cm.display.currentWheelTarget = cur; break outer; } } } } // On some browsers, horizontal scrolling will cause redraws to // happen before the gutter has been realigned, causing it to // wriggle around in a most unseemly way. When we have an // estimated pixels/delta value, we just handle horizontal // scrolling entirely here. It'll be slightly off from native, but // better than glitching out. if (dx && !gecko && !presto && wheelPixelsPerUnit != null) { if (dy && canScrollY) setScrollTop(cm, Math.max(0, Math.min(scroll.scrollTop + dy * wheelPixelsPerUnit, scroll.scrollHeight - scroll.clientHeight))); setScrollLeft(cm, Math.max(0, Math.min(scroll.scrollLeft + dx * wheelPixelsPerUnit, scroll.scrollWidth - scroll.clientWidth))); // Only prevent default scrolling if vertical scrolling is // actually possible. Otherwise, it causes vertical scroll // jitter on OSX trackpads when deltaX is small and deltaY // is large (issue #3579) if (!dy || (dy && canScrollY)) e_preventDefault(e); display.wheelStartX = null; // Abort measurement, if in progress return; } // 'Project' the visible viewport to cover the area that is being // scrolled into view (if we know enough to estimate it). if (dy && wheelPixelsPerUnit != null) { var pixels = dy * wheelPixelsPerUnit; var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight; if (pixels < 0) top = Math.max(0, top + pixels - 50); else bot = Math.min(cm.doc.height, bot + pixels + 50); updateDisplaySimple(cm, {top: top, bottom: bot}); } if (wheelSamples < 20) { if (display.wheelStartX == null) { display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop; display.wheelDX = dx; display.wheelDY = dy; setTimeout(function() { if (display.wheelStartX == null) return; var movedX = scroll.scrollLeft - display.wheelStartX; var movedY = scroll.scrollTop - display.wheelStartY; var sample = (movedY && display.wheelDY && movedY / display.wheelDY) || (movedX && display.wheelDX && movedX / display.wheelDX); display.wheelStartX = display.wheelStartY = null; if (!sample) return; wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1); ++wheelSamples; }, 200); } else { display.wheelDX += dx; display.wheelDY += dy; } } } // KEY EVENTS // Run a handler that was bound to a key. function doHandleBinding(cm, bound, dropShift) { if (typeof bound == "string") { bound = commands[bound]; if (!bound) return false; } // Ensure previous input has been read, so that the handler sees a // consistent view of the document cm.display.input.ensurePolled(); var prevShift = cm.display.shift, done = false; try { if (cm.isReadOnly()) cm.state.suppressEdits = true; if (dropShift) cm.display.shift = false; done = bound(cm) != Pass; } finally { cm.display.shift = prevShift; cm.state.suppressEdits = false; } return done; } function lookupKeyForEditor(cm, name, handle) { for (var i = 0; i < cm.state.keyMaps.length; i++) { var result = lookupKey(name, cm.state.keyMaps[i], handle, cm); if (result) return result; } return (cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm)) || lookupKey(name, cm.options.keyMap, handle, cm); } var stopSeq = new Delayed; function dispatchKey(cm, name, e, handle) { var seq = cm.state.keySeq; if (seq) { if (isModifierKey(name)) return "handled"; stopSeq.set(50, function() { if (cm.state.keySeq == seq) { cm.state.keySeq = null; cm.display.input.reset(); } }); name = seq + " " + name; } var result = lookupKeyForEditor(cm, name, handle); if (result == "multi") cm.state.keySeq = name; if (result == "handled") signalLater(cm, "keyHandled", cm, name, e); if (result == "handled" || result == "multi") { e_preventDefault(e); restartBlink(cm); } if (seq && !result && /\'$/.test(name)) { e_preventDefault(e); return true; } return !!result; } // Handle a key from the keydown event. function handleKeyBinding(cm, e) { var name = keyName(e, true); if (!name) return false; if (e.shiftKey && !cm.state.keySeq) { // First try to resolve full name (including 'Shift-'). Failing // that, see if there is a cursor-motion command (starting with // 'go') bound to the keyname without 'Shift-'. return dispatchKey(cm, "Shift-" + name, e, function(b) {return doHandleBinding(cm, b, true);}) || dispatchKey(cm, name, e, function(b) { if (typeof b == "string" ? /^go[A-Z]/.test(b) : b.motion) return doHandleBinding(cm, b); }); } else { return dispatchKey(cm, name, e, function(b) { return doHandleBinding(cm, b); }); } } // Handle a key from the keypress event function handleCharBinding(cm, e, ch) { return dispatchKey(cm, "'" + ch + "'", e, function(b) { return doHandleBinding(cm, b, true); }); } var lastStoppedKey = null; function onKeyDown(e) { var cm = this; cm.curOp.focus = activeElt(); if (signalDOMEvent(cm, e)) return; // IE does strange things with escape. if (ie && ie_version < 11 && e.keyCode == 27) e.returnValue = false; var code = e.keyCode; cm.display.shift = code == 16 || e.shiftKey; var handled = handleKeyBinding(cm, e); if (presto) { lastStoppedKey = handled ? code : null; // Opera has no cut event... we try to at least catch the key combo if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey)) cm.replaceSelection("", null, "cut"); } // Turn mouse into crosshair when Alt is held on Mac. if (code == 18 && !/\bCodeMirror-crosshair\b/.test(cm.display.lineDiv.className)) showCrossHair(cm); } function showCrossHair(cm) { var lineDiv = cm.display.lineDiv; addClass(lineDiv, "CodeMirror-crosshair"); function up(e) { if (e.keyCode == 18 || !e.altKey) { rmClass(lineDiv, "CodeMirror-crosshair"); off(document, "keyup", up); off(document, "mouseover", up); } } on(document, "keyup", up); on(document, "mouseover", up); } function onKeyUp(e) { if (e.keyCode == 16) this.doc.sel.shift = false; signalDOMEvent(this, e); } function onKeyPress(e) { var cm = this; if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) return; var keyCode = e.keyCode, charCode = e.charCode; if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return;} if ((presto && (!e.which || e.which < 10)) && handleKeyBinding(cm, e)) return; var ch = String.fromCharCode(charCode == null ? keyCode : charCode); if (handleCharBinding(cm, e, ch)) return; cm.display.input.onKeyPress(e); } // FOCUS/BLUR EVENTS function delayBlurEvent(cm) { cm.state.delayingBlurEvent = true; setTimeout(function() { if (cm.state.delayingBlurEvent) { cm.state.delayingBlurEvent = false; onBlur(cm); } }, 100); } function onFocus(cm) { if (cm.state.delayingBlurEvent) cm.state.delayingBlurEvent = false; if (cm.options.readOnly == "nocursor") return; if (!cm.state.focused) { signal(cm, "focus", cm); cm.state.focused = true; addClass(cm.display.wrapper, "CodeMirror-focused"); // This test prevents this from firing when a context // menu is closed (since the input reset would kill the // select-all detection hack) if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) { cm.display.input.reset(); if (webkit) setTimeout(function() { cm.display.input.reset(true); }, 20); // Issue #1730 } cm.display.input.receivedFocus(); } restartBlink(cm); } function onBlur(cm) { if (cm.state.delayingBlurEvent) return; if (cm.state.focused) { signal(cm, "blur", cm); cm.state.focused = false; rmClass(cm.display.wrapper, "CodeMirror-focused"); } clearInterval(cm.display.blinker); setTimeout(function() {if (!cm.state.focused) cm.display.shift = false;}, 150); } // CONTEXT MENU HANDLING // To make the context menu work, we need to briefly unhide the // textarea (making it as unobtrusive as possible) to let the // right-click take effect on it. function onContextMenu(cm, e) { if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) return; if (signalDOMEvent(cm, e, "contextmenu")) return; cm.display.input.onContextMenu(e); } function contextMenuInGutter(cm, e) { if (!hasHandler(cm, "gutterContextMenu")) return false; return gutterEvent(cm, e, "gutterContextMenu", false); } // UPDATING // Compute the position of the end of a change (its 'to' property // refers to the pre-change end). var changeEnd = CodeMirror.changeEnd = function(change) { if (!change.text) return change.to; return Pos(change.from.line + change.text.length - 1, lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0)); }; // Adjust a position to refer to the post-change position of the // same text, or the end of the change if the change covers it. function adjustForChange(pos, change) { if (cmp(pos, change.from) < 0) return pos; if (cmp(pos, change.to) <= 0) return changeEnd(change); var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch; if (pos.line == change.to.line) ch += changeEnd(change).ch - change.to.ch; return Pos(line, ch); } function computeSelAfterChange(doc, change) { var out = []; for (var i = 0; i < doc.sel.ranges.length; i++) { var range = doc.sel.ranges[i]; out.push(new Range(adjustForChange(range.anchor, change), adjustForChange(range.head, change))); } return normalizeSelection(out, doc.sel.primIndex); } function offsetPos(pos, old, nw) { if (pos.line == old.line) return Pos(nw.line, pos.ch - old.ch + nw.ch); else return Pos(nw.line + (pos.line - old.line), pos.ch); } // Used by replaceSelections to allow moving the selection to the // start or around the replaced test. Hint may be "start" or "around". function computeReplacedSel(doc, changes, hint) { var out = []; var oldPrev = Pos(doc.first, 0), newPrev = oldPrev; for (var i = 0; i < changes.length; i++) { var change = changes[i]; var from = offsetPos(change.from, oldPrev, newPrev); var to = offsetPos(changeEnd(change), oldPrev, newPrev); oldPrev = change.to; newPrev = to; if (hint == "around") { var range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0; out[i] = new Range(inv ? to : from, inv ? from : to); } else { out[i] = new Range(from, from); } } return new Selection(out, doc.sel.primIndex); } // Allow "beforeChange" event handlers to influence a change function filterChange(doc, change, update) { var obj = { canceled: false, from: change.from, to: change.to, text: change.text, origin: change.origin, cancel: function() { this.canceled = true; } }; if (update) obj.update = function(from, to, text, origin) { if (from) this.from = clipPos(doc, from); if (to) this.to = clipPos(doc, to); if (text) this.text = text; if (origin !== undefined) this.origin = origin; }; signal(doc, "beforeChange", doc, obj); if (doc.cm) signal(doc.cm, "beforeChange", doc.cm, obj); if (obj.canceled) return null; return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin}; } // Apply a change to a document, and add it to the document's // history, and propagating it to all linked documents. function makeChange(doc, change, ignoreReadOnly) { if (doc.cm) { if (!doc.cm.curOp) return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly); if (doc.cm.state.suppressEdits) return; } if (hasHandler(doc, "beforeChange") || doc.cm && hasHandler(doc.cm, "beforeChange")) { change = filterChange(doc, change, true); if (!change) return; } // Possibly split or suppress the update based on the presence // of read-only spans in its range. var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to); if (split) { for (var i = split.length - 1; i >= 0; --i) makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [""] : change.text}); } else { makeChangeInner(doc, change); } } function makeChangeInner(doc, change) { if (change.text.length == 1 && change.text[0] == "" && cmp(change.from, change.to) == 0) return; var selAfter = computeSelAfterChange(doc, change); addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN); makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change)); var rebased = []; linkedDocs(doc, function(doc, sharedHist) { if (!sharedHist && indexOf(rebased, doc.history) == -1) { rebaseHist(doc.history, change); rebased.push(doc.history); } makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change)); }); } // Revert a change stored in a document's history. function makeChangeFromHistory(doc, type, allowSelectionOnly) { if (doc.cm && doc.cm.state.suppressEdits && !allowSelectionOnly) return; var hist = doc.history, event, selAfter = doc.sel; var source = type == "undo" ? hist.done : hist.undone, dest = type == "undo" ? hist.undone : hist.done; // Verify that there is a useable event (so that ctrl-z won't // needlessly clear selection events) for (var i = 0; i < source.length; i++) { event = source[i]; if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges) break; } if (i == source.length) return; hist.lastOrigin = hist.lastSelOrigin = null; for (;;) { event = source.pop(); if (event.ranges) { pushSelectionToHistory(event, dest); if (allowSelectionOnly && !event.equals(doc.sel)) { setSelection(doc, event, {clearRedo: false}); return; } selAfter = event; } else break; } // Build up a reverse change object to add to the opposite history // stack (redo when undoing, and vice versa). var antiChanges = []; pushSelectionToHistory(selAfter, dest); dest.push({changes: antiChanges, generation: hist.generation}); hist.generation = event.generation || ++hist.maxGeneration; var filter = hasHandler(doc, "beforeChange") || doc.cm && hasHandler(doc.cm, "beforeChange"); for (var i = event.changes.length - 1; i >= 0; --i) { var change = event.changes[i]; change.origin = type; if (filter && !filterChange(doc, change, false)) { source.length = 0; return; } antiChanges.push(historyChangeFromChange(doc, change)); var after = i ? computeSelAfterChange(doc, change) : lst(source); makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change)); if (!i && doc.cm) doc.cm.scrollIntoView({from: change.from, to: changeEnd(change)}); var rebased = []; // Propagate to the linked documents linkedDocs(doc, function(doc, sharedHist) { if (!sharedHist && indexOf(rebased, doc.history) == -1) { rebaseHist(doc.history, change); rebased.push(doc.history); } makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change)); }); } } // Sub-views need their line numbers shifted when text is added // above or below them in the parent document. function shiftDoc(doc, distance) { if (distance == 0) return; doc.first += distance; doc.sel = new Selection(map(doc.sel.ranges, function(range) { return new Range(Pos(range.anchor.line + distance, range.anchor.ch), Pos(range.head.line + distance, range.head.ch)); }), doc.sel.primIndex); if (doc.cm) { regChange(doc.cm, doc.first, doc.first - distance, distance); for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++) regLineChange(doc.cm, l, "gutter"); } } // More lower-level change function, handling only a single document // (not linked ones). function makeChangeSingleDoc(doc, change, selAfter, spans) { if (doc.cm && !doc.cm.curOp) return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans); if (change.to.line < doc.first) { shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line)); return; } if (change.from.line > doc.lastLine()) return; // Clip the change to the size of this doc if (change.from.line < doc.first) { var shift = change.text.length - 1 - (doc.first - change.from.line); shiftDoc(doc, shift); change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch), text: [lst(change.text)], origin: change.origin}; } var last = doc.lastLine(); if (change.to.line > last) { change = {from: change.from, to: Pos(last, getLine(doc, last).text.length), text: [change.text[0]], origin: change.origin}; } change.removed = getBetween(doc, change.from, change.to); if (!selAfter) selAfter = computeSelAfterChange(doc, change); if (doc.cm) makeChangeSingleDocInEditor(doc.cm, change, spans); else updateDoc(doc, change, spans); setSelectionNoUndo(doc, selAfter, sel_dontScroll); } // Handle the interaction of a change to a document with the editor // that this document is part of. function makeChangeSingleDocInEditor(cm, change, spans) { var doc = cm.doc, display = cm.display, from = change.from, to = change.to; var recomputeMaxLength = false, checkWidthStart = from.line; if (!cm.options.lineWrapping) { checkWidthStart = lineNo(visualLine(getLine(doc, from.line))); doc.iter(checkWidthStart, to.line + 1, function(line) { if (line == display.maxLine) { recomputeMaxLength = true; return true; } }); } if (doc.sel.contains(change.from, change.to) > -1) signalCursorActivity(cm); updateDoc(doc, change, spans, estimateHeight(cm)); if (!cm.options.lineWrapping) { doc.iter(checkWidthStart, from.line + change.text.length, function(line) { var len = lineLength(line); if (len > display.maxLineLength) { display.maxLine = line; display.maxLineLength = len; display.maxLineChanged = true; recomputeMaxLength = false; } }); if (recomputeMaxLength) cm.curOp.updateMaxLine = true; } // Adjust frontier, schedule worker doc.frontier = Math.min(doc.frontier, from.line); startWorker(cm, 400); var lendiff = change.text.length - (to.line - from.line) - 1; // Remember that these lines changed, for updating the display if (change.full) regChange(cm); else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change)) regLineChange(cm, from.line, "text"); else regChange(cm, from.line, to.line + 1, lendiff); var changesHandler = hasHandler(cm, "changes"), changeHandler = hasHandler(cm, "change"); if (changeHandler || changesHandler) { var obj = { from: from, to: to, text: change.text, removed: change.removed, origin: change.origin }; if (changeHandler) signalLater(cm, "change", cm, obj); if (changesHandler) (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj); } cm.display.selForContextMenu = null; } function replaceRange(doc, code, from, to, origin) { if (!to) to = from; if (cmp(to, from) < 0) { var tmp = to; to = from; from = tmp; } if (typeof code == "string") code = doc.splitLines(code); makeChange(doc, {from: from, to: to, text: code, origin: origin}); } // SCROLLING THINGS INTO VIEW // If an editor sits on the top or bottom of the window, partially // scrolled out of view, this ensures that the cursor is visible. function maybeScrollWindow(cm, coords) { if (signalDOMEvent(cm, "scrollCursorIntoView")) return; var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null; if (coords.top + box.top < 0) doScroll = true; else if (coords.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) doScroll = false; if (doScroll != null && !phantom) { var scrollNode = elt("div", "\u200b", null, "position: absolute; top: " + (coords.top - display.viewOffset - paddingTop(cm.display)) + "px; height: " + (coords.bottom - coords.top + scrollGap(cm) + display.barHeight) + "px; left: " + coords.left + "px; width: 2px;"); cm.display.lineSpace.appendChild(scrollNode); scrollNode.scrollIntoView(doScroll); cm.display.lineSpace.removeChild(scrollNode); } } // Scroll a given position into view (immediately), verifying that // it actually became visible (as line heights are accurately // measured, the position of something may 'drift' during drawing). function scrollPosIntoView(cm, pos, end, margin) { if (margin == null) margin = 0; for (var limit = 0; limit < 5; limit++) { var changed = false, coords = cursorCoords(cm, pos); var endCoords = !end || end == pos ? coords : cursorCoords(cm, end); var scrollPos = calculateScrollPos(cm, Math.min(coords.left, endCoords.left), Math.min(coords.top, endCoords.top) - margin, Math.max(coords.left, endCoords.left), Math.max(coords.bottom, endCoords.bottom) + margin); var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft; if (scrollPos.scrollTop != null) { setScrollTop(cm, scrollPos.scrollTop); if (Math.abs(cm.doc.scrollTop - startTop) > 1) changed = true; } if (scrollPos.scrollLeft != null) { setScrollLeft(cm, scrollPos.scrollLeft); if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) changed = true; } if (!changed) break; } return coords; } // Scroll a given set of coordinates into view (immediately). function scrollIntoView(cm, x1, y1, x2, y2) { var scrollPos = calculateScrollPos(cm, x1, y1, x2, y2); if (scrollPos.scrollTop != null) setScrollTop(cm, scrollPos.scrollTop); if (scrollPos.scrollLeft != null) setScrollLeft(cm, scrollPos.scrollLeft); } // Calculate a new scroll position needed to scroll the given // rectangle into view. Returns an object with scrollTop and // scrollLeft properties. When these are undefined, the // vertical/horizontal position does not need to be adjusted. function calculateScrollPos(cm, x1, y1, x2, y2) { var display = cm.display, snapMargin = textHeight(cm.display); if (y1 < 0) y1 = 0; var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop; var screen = displayHeight(cm), result = {}; if (y2 - y1 > screen) y2 = y1 + screen; var docBottom = cm.doc.height + paddingVert(display); var atTop = y1 < snapMargin, atBottom = y2 > docBottom - snapMargin; if (y1 < screentop) { result.scrollTop = atTop ? 0 : y1; } else if (y2 > screentop + screen) { var newTop = Math.min(y1, (atBottom ? docBottom : y2) - screen); if (newTop != screentop) result.scrollTop = newTop; } var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft; var screenw = displayWidth(cm) - (cm.options.fixedGutter ? display.gutters.offsetWidth : 0); var tooWide = x2 - x1 > screenw; if (tooWide) x2 = x1 + screenw; if (x1 < 10) result.scrollLeft = 0; else if (x1 < screenleft) result.scrollLeft = Math.max(0, x1 - (tooWide ? 0 : 10)); else if (x2 > screenw + screenleft - 3) result.scrollLeft = x2 + (tooWide ? 0 : 10) - screenw; return result; } // Store a relative adjustment to the scroll position in the current // operation (to be applied when the operation finishes). function addToScrollPos(cm, left, top) { if (left != null || top != null) resolveScrollToPos(cm); if (left != null) cm.curOp.scrollLeft = (cm.curOp.scrollLeft == null ? cm.doc.scrollLeft : cm.curOp.scrollLeft) + left; if (top != null) cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top; } // Make sure that at the end of the operation the current cursor is // shown. function ensureCursorVisible(cm) { resolveScrollToPos(cm); var cur = cm.getCursor(), from = cur, to = cur; if (!cm.options.lineWrapping) { from = cur.ch ? Pos(cur.line, cur.ch - 1) : cur; to = Pos(cur.line, cur.ch + 1); } cm.curOp.scrollToPos = {from: from, to: to, margin: cm.options.cursorScrollMargin, isCursor: true}; } // When an operation has its scrollToPos property set, and another // scroll action is applied before the end of the operation, this // 'simulates' scrolling that position into view in a cheap way, so // that the effect of intermediate scroll commands is not ignored. function resolveScrollToPos(cm) { var range = cm.curOp.scrollToPos; if (range) { cm.curOp.scrollToPos = null; var from = estimateCoords(cm, range.from), to = estimateCoords(cm, range.to); var sPos = calculateScrollPos(cm, Math.min(from.left, to.left), Math.min(from.top, to.top) - range.margin, Math.max(from.right, to.right), Math.max(from.bottom, to.bottom) + range.margin); cm.scrollTo(sPos.scrollLeft, sPos.scrollTop); } } // API UTILITIES // Indent the given line. The how parameter can be "smart", // "add"/null, "subtract", or "prev". When aggressive is false // (typically set to true for forced single-line indents), empty // lines are not indented, and places where the mode returns Pass // are left alone. function indentLine(cm, n, how, aggressive) { var doc = cm.doc, state; if (how == null) how = "add"; if (how == "smart") { // Fall back to "prev" when the mode doesn't have an indentation // method. if (!doc.mode.indent) how = "prev"; else state = getStateBefore(cm, n); } var tabSize = cm.options.tabSize; var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize); if (line.stateAfter) line.stateAfter = null; var curSpaceString = line.text.match(/^\s*/)[0], indentation; if (!aggressive && !/\S/.test(line.text)) { indentation = 0; how = "not"; } else if (how == "smart") { indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text); if (indentation == Pass || indentation > 150) { if (!aggressive) return; how = "prev"; } } if (how == "prev") { if (n > doc.first) indentation = countColumn(getLine(doc, n-1).text, null, tabSize); else indentation = 0; } else if (how == "add") { indentation = curSpace + cm.options.indentUnit; } else if (how == "subtract") { indentation = curSpace - cm.options.indentUnit; } else if (typeof how == "number") { indentation = curSpace + how; } indentation = Math.max(0, indentation); var indentString = "", pos = 0; if (cm.options.indentWithTabs) for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += "\t";} if (pos < indentation) indentString += spaceStr(indentation - pos); if (indentString != curSpaceString) { replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), "+input"); line.stateAfter = null; return true; } else { // Ensure that, if the cursor was in the whitespace at the start // of the line, it is moved to the end of that space. for (var i = 0; i < doc.sel.ranges.length; i++) { var range = doc.sel.ranges[i]; if (range.head.line == n && range.head.ch < curSpaceString.length) { var pos = Pos(n, curSpaceString.length); replaceOneSelection(doc, i, new Range(pos, pos)); break; } } } } // Utility for applying a change to a line by handle or number, // returning the number and optionally registering the line as // changed. function changeLine(doc, handle, changeType, op) { var no = handle, line = handle; if (typeof handle == "number") line = getLine(doc, clipLine(doc, handle)); else no = lineNo(handle); if (no == null) return null; if (op(line, no) && doc.cm) regLineChange(doc.cm, no, changeType); return line; } // Helper for deleting text near the selection(s), used to implement // backspace, delete, and similar functionality. function deleteNearSelection(cm, compute) { var ranges = cm.doc.sel.ranges, kill = []; // Build up a set of ranges to kill first, merging overlapping // ranges. for (var i = 0; i < ranges.length; i++) { var toKill = compute(ranges[i]); while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) { var replaced = kill.pop(); if (cmp(replaced.from, toKill.from) < 0) { toKill.from = replaced.from; break; } } kill.push(toKill); } // Next, remove those actual ranges. runInOp(cm, function() { for (var i = kill.length - 1; i >= 0; i--) replaceRange(cm.doc, "", kill[i].from, kill[i].to, "+delete"); ensureCursorVisible(cm); }); } // Used for horizontal relative motion. Dir is -1 or 1 (left or // right), unit can be "char", "column" (like char, but doesn't // cross line boundaries), "word" (across next word), or "group" (to // the start of next group of word or non-word-non-whitespace // chars). The visually param controls whether, in right-to-left // text, direction 1 means to move towards the next index in the // string, or towards the character to the right of the current // position. The resulting position will have a hitSide=true // property if it reached the end of the document. function findPosH(doc, pos, dir, unit, visually) { var line = pos.line, ch = pos.ch, origDir = dir; var lineObj = getLine(doc, line); function findNextLine() { var l = line + dir; if (l < doc.first || l >= doc.first + doc.size) return false line = l; return lineObj = getLine(doc, l); } function moveOnce(boundToLine) { var next = (visually ? moveVisually : moveLogically)(lineObj, ch, dir, true); if (next == null) { if (!boundToLine && findNextLine()) { if (visually) ch = (dir < 0 ? lineRight : lineLeft)(lineObj); else ch = dir < 0 ? lineObj.text.length : 0; } else return false } else ch = next; return true; } if (unit == "char") { moveOnce() } else if (unit == "column") { moveOnce(true) } else if (unit == "word" || unit == "group") { var sawType = null, group = unit == "group"; var helper = doc.cm && doc.cm.getHelper(pos, "wordChars"); for (var first = true;; first = false) { if (dir < 0 && !moveOnce(!first)) break; var cur = lineObj.text.charAt(ch) || "\n"; var type = isWordChar(cur, helper) ? "w" : group && cur == "\n" ? "n" : !group || /\s/.test(cur) ? null : "p"; if (group && !first && !type) type = "s"; if (sawType && sawType != type) { if (dir < 0) {dir = 1; moveOnce();} break; } if (type) sawType = type; if (dir > 0 && !moveOnce(!first)) break; } } var result = skipAtomic(doc, Pos(line, ch), pos, origDir, true); if (!cmp(pos, result)) result.hitSide = true; return result; } // For relative vertical movement. Dir may be -1 or 1. Unit can be // "page" or "line". The resulting position will have a hitSide=true // property if it reached the end of the document. function findPosV(cm, pos, dir, unit) { var doc = cm.doc, x = pos.left, y; if (unit == "page") { var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight); y = pos.top + dir * (pageSize - (dir < 0 ? 1.5 : .5) * textHeight(cm.display)); } else if (unit == "line") { y = dir > 0 ? pos.bottom + 3 : pos.top - 3; } for (;;) { var target = coordsChar(cm, x, y); if (!target.outside) break; if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break; } y += dir * 5; } return target; } // EDITOR METHODS // The publicly visible API. Note that methodOp(f) means // 'wrap f in an operation, performed on its `this` parameter'. // This is not the complete set of editor methods. Most of the // methods defined on the Doc type are also injected into // CodeMirror.prototype, for backwards compatibility and // convenience. CodeMirror.prototype = { constructor: CodeMirror, focus: function(){window.focus(); this.display.input.focus();}, setOption: function(option, value) { var options = this.options, old = options[option]; if (options[option] == value && option != "mode") return; options[option] = value; if (optionHandlers.hasOwnProperty(option)) operation(this, optionHandlers[option])(this, value, old); }, getOption: function(option) {return this.options[option];}, getDoc: function() {return this.doc;}, addKeyMap: function(map, bottom) { this.state.keyMaps[bottom ? "push" : "unshift"](getKeyMap(map)); }, removeKeyMap: function(map) { var maps = this.state.keyMaps; for (var i = 0; i < maps.length; ++i) if (maps[i] == map || maps[i].name == map) { maps.splice(i, 1); return true; } }, addOverlay: methodOp(function(spec, options) { var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec); if (mode.startState) throw new Error("Overlays may not be stateful."); insertSorted(this.state.overlays, {mode: mode, modeSpec: spec, opaque: options && options.opaque, priority: (options && options.priority) || 0}, function(overlay) { return overlay.priority }) this.state.modeGen++; regChange(this); }), removeOverlay: methodOp(function(spec) { var overlays = this.state.overlays; for (var i = 0; i < overlays.length; ++i) { var cur = overlays[i].modeSpec; if (cur == spec || typeof spec == "string" && cur.name == spec) { overlays.splice(i, 1); this.state.modeGen++; regChange(this); return; } } }), indentLine: methodOp(function(n, dir, aggressive) { if (typeof dir != "string" && typeof dir != "number") { if (dir == null) dir = this.options.smartIndent ? "smart" : "prev"; else dir = dir ? "add" : "subtract"; } if (isLine(this.doc, n)) indentLine(this, n, dir, aggressive); }), indentSelection: methodOp(function(how) { var ranges = this.doc.sel.ranges, end = -1; for (var i = 0; i < ranges.length; i++) { var range = ranges[i]; if (!range.empty()) { var from = range.from(), to = range.to(); var start = Math.max(end, from.line); end = Math.min(this.lastLine(), to.line - (to.ch ? 0 : 1)) + 1; for (var j = start; j < end; ++j) indentLine(this, j, how); var newRanges = this.doc.sel.ranges; if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0) replaceOneSelection(this.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll); } else if (range.head.line > end) { indentLine(this, range.head.line, how, true); end = range.head.line; if (i == this.doc.sel.primIndex) ensureCursorVisible(this); } } }), // Fetch the parser token for a given character. Useful for hacks // that want to inspect the mode state (say, for completion). getTokenAt: function(pos, precise) { return takeToken(this, pos, precise); }, getLineTokens: function(line, precise) { return takeToken(this, Pos(line), precise, true); }, getTokenTypeAt: function(pos) { pos = clipPos(this.doc, pos); var styles = getLineStyles(this, getLine(this.doc, pos.line)); var before = 0, after = (styles.length - 1) / 2, ch = pos.ch; var type; if (ch == 0) type = styles[2]; else for (;;) { var mid = (before + after) >> 1; if ((mid ? styles[mid * 2 - 1] : 0) >= ch) after = mid; else if (styles[mid * 2 + 1] < ch) before = mid + 1; else { type = styles[mid * 2 + 2]; break; } } var cut = type ? type.indexOf("cm-overlay ") : -1; return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1); }, getModeAt: function(pos) { var mode = this.doc.mode; if (!mode.innerMode) return mode; return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode; }, getHelper: function(pos, type) { return this.getHelpers(pos, type)[0]; }, getHelpers: function(pos, type) { var found = []; if (!helpers.hasOwnProperty(type)) return found; var help = helpers[type], mode = this.getModeAt(pos); if (typeof mode[type] == "string") { if (help[mode[type]]) found.push(help[mode[type]]); } else if (mode[type]) { for (var i = 0; i < mode[type].length; i++) { var val = help[mode[type][i]]; if (val) found.push(val); } } else if (mode.helperType && help[mode.helperType]) { found.push(help[mode.helperType]); } else if (help[mode.name]) { found.push(help[mode.name]); } for (var i = 0; i < help._global.length; i++) { var cur = help._global[i]; if (cur.pred(mode, this) && indexOf(found, cur.val) == -1) found.push(cur.val); } return found; }, getStateAfter: function(line, precise) { var doc = this.doc; line = clipLine(doc, line == null ? doc.first + doc.size - 1: line); return getStateBefore(this, line + 1, precise); }, cursorCoords: function(start, mode) { var pos, range = this.doc.sel.primary(); if (start == null) pos = range.head; else if (typeof start == "object") pos = clipPos(this.doc, start); else pos = start ? range.from() : range.to(); return cursorCoords(this, pos, mode || "page"); }, charCoords: function(pos, mode) { return charCoords(this, clipPos(this.doc, pos), mode || "page"); }, coordsChar: function(coords, mode) { coords = fromCoordSystem(this, coords, mode || "page"); return coordsChar(this, coords.left, coords.top); }, lineAtHeight: function(height, mode) { height = fromCoordSystem(this, {top: height, left: 0}, mode || "page").top; return lineAtHeight(this.doc, height + this.display.viewOffset); }, heightAtLine: function(line, mode) { var end = false, lineObj; if (typeof line == "number") { var last = this.doc.first + this.doc.size - 1; if (line < this.doc.first) line = this.doc.first; else if (line > last) { line = last; end = true; } lineObj = getLine(this.doc, line); } else { lineObj = line; } return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode || "page").top + (end ? this.doc.height - heightAtLine(lineObj) : 0); }, defaultTextHeight: function() { return textHeight(this.display); }, defaultCharWidth: function() { return charWidth(this.display); }, setGutterMarker: methodOp(function(line, gutterID, value) { return changeLine(this.doc, line, "gutter", function(line) { var markers = line.gutterMarkers || (line.gutterMarkers = {}); markers[gutterID] = value; if (!value && isEmpty(markers)) line.gutterMarkers = null; return true; }); }), clearGutter: methodOp(function(gutterID) { var cm = this, doc = cm.doc, i = doc.first; doc.iter(function(line) { if (line.gutterMarkers && line.gutterMarkers[gutterID]) { line.gutterMarkers[gutterID] = null; regLineChange(cm, i, "gutter"); if (isEmpty(line.gutterMarkers)) line.gutterMarkers = null; } ++i; }); }), lineInfo: function(line) { if (typeof line == "number") { if (!isLine(this.doc, line)) return null; var n = line; line = getLine(this.doc, line); if (!line) return null; } else { var n = lineNo(line); if (n == null) return null; } return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers, textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass, widgets: line.widgets}; }, getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo};}, addWidget: function(pos, node, scroll, vert, horiz) { var display = this.display; pos = cursorCoords(this, clipPos(this.doc, pos)); var top = pos.bottom, left = pos.left; node.style.position = "absolute"; node.setAttribute("cm-ignore-events", "true"); this.display.input.setUneditable(node); display.sizer.appendChild(node); if (vert == "over") { top = pos.top; } else if (vert == "above" || vert == "near") { var vspace = Math.max(display.wrapper.clientHeight, this.doc.height), hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth); // Default to positioning above (if specified and possible); otherwise default to positioning below if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight) top = pos.top - node.offsetHeight; else if (pos.bottom + node.offsetHeight <= vspace) top = pos.bottom; if (left + node.offsetWidth > hspace) left = hspace - node.offsetWidth; } node.style.top = top + "px"; node.style.left = node.style.right = ""; if (horiz == "right") { left = display.sizer.clientWidth - node.offsetWidth; node.style.right = "0px"; } else { if (horiz == "left") left = 0; else if (horiz == "middle") left = (display.sizer.clientWidth - node.offsetWidth) / 2; node.style.left = left + "px"; } if (scroll) scrollIntoView(this, left, top, left + node.offsetWidth, top + node.offsetHeight); }, triggerOnKeyDown: methodOp(onKeyDown), triggerOnKeyPress: methodOp(onKeyPress), triggerOnKeyUp: onKeyUp, execCommand: function(cmd) { if (commands.hasOwnProperty(cmd)) return commands[cmd].call(null, this); }, triggerElectric: methodOp(function(text) { triggerElectric(this, text); }), findPosH: function(from, amount, unit, visually) { var dir = 1; if (amount < 0) { dir = -1; amount = -amount; } for (var i = 0, cur = clipPos(this.doc, from); i < amount; ++i) { cur = findPosH(this.doc, cur, dir, unit, visually); if (cur.hitSide) break; } return cur; }, moveH: methodOp(function(dir, unit) { var cm = this; cm.extendSelectionsBy(function(range) { if (cm.display.shift || cm.doc.extend || range.empty()) return findPosH(cm.doc, range.head, dir, unit, cm.options.rtlMoveVisually); else return dir < 0 ? range.from() : range.to(); }, sel_move); }), deleteH: methodOp(function(dir, unit) { var sel = this.doc.sel, doc = this.doc; if (sel.somethingSelected()) doc.replaceSelection("", null, "+delete"); else deleteNearSelection(this, function(range) { var other = findPosH(doc, range.head, dir, unit, false); return dir < 0 ? {from: other, to: range.head} : {from: range.head, to: other}; }); }), findPosV: function(from, amount, unit, goalColumn) { var dir = 1, x = goalColumn; if (amount < 0) { dir = -1; amount = -amount; } for (var i = 0, cur = clipPos(this.doc, from); i < amount; ++i) { var coords = cursorCoords(this, cur, "div"); if (x == null) x = coords.left; else coords.left = x; cur = findPosV(this, coords, dir, unit); if (cur.hitSide) break; } return cur; }, moveV: methodOp(function(dir, unit) { var cm = this, doc = this.doc, goals = []; var collapse = !cm.display.shift && !doc.extend && doc.sel.somethingSelected(); doc.extendSelectionsBy(function(range) { if (collapse) return dir < 0 ? range.from() : range.to(); var headPos = cursorCoords(cm, range.head, "div"); if (range.goalColumn != null) headPos.left = range.goalColumn; goals.push(headPos.left); var pos = findPosV(cm, headPos, dir, unit); if (unit == "page" && range == doc.sel.primary()) addToScrollPos(cm, null, charCoords(cm, pos, "div").top - headPos.top); return pos; }, sel_move); if (goals.length) for (var i = 0; i < doc.sel.ranges.length; i++) doc.sel.ranges[i].goalColumn = goals[i]; }), // Find the word at the given position (as returned by coordsChar). findWordAt: function(pos) { var doc = this.doc, line = getLine(doc, pos.line).text; var start = pos.ch, end = pos.ch; if (line) { var helper = this.getHelper(pos, "wordChars"); if ((pos.xRel < 0 || end == line.length) && start) --start; else ++end; var startChar = line.charAt(start); var check = isWordChar(startChar, helper) ? function(ch) { return isWordChar(ch, helper); } : /\s/.test(startChar) ? function(ch) {return /\s/.test(ch);} : function(ch) {return !/\s/.test(ch) && !isWordChar(ch);}; while (start > 0 && check(line.charAt(start - 1))) --start; while (end < line.length && check(line.charAt(end))) ++end; } return new Range(Pos(pos.line, start), Pos(pos.line, end)); }, toggleOverwrite: function(value) { if (value != null && value == this.state.overwrite) return; if (this.state.overwrite = !this.state.overwrite) addClass(this.display.cursorDiv, "CodeMirror-overwrite"); else rmClass(this.display.cursorDiv, "CodeMirror-overwrite"); signal(this, "overwriteToggle", this, this.state.overwrite); }, hasFocus: function() { return this.display.input.getField() == activeElt(); }, isReadOnly: function() { return !!(this.options.readOnly || this.doc.cantEdit); }, scrollTo: methodOp(function(x, y) { if (x != null || y != null) resolveScrollToPos(this); if (x != null) this.curOp.scrollLeft = x; if (y != null) this.curOp.scrollTop = y; }), getScrollInfo: function() { var scroller = this.display.scroller; return {left: scroller.scrollLeft, top: scroller.scrollTop, height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight, width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth, clientHeight: displayHeight(this), clientWidth: displayWidth(this)}; }, scrollIntoView: methodOp(function(range, margin) { if (range == null) { range = {from: this.doc.sel.primary().head, to: null}; if (margin == null) margin = this.options.cursorScrollMargin; } else if (typeof range == "number") { range = {from: Pos(range, 0), to: null}; } else if (range.from == null) { range = {from: range, to: null}; } if (!range.to) range.to = range.from; range.margin = margin || 0; if (range.from.line != null) { resolveScrollToPos(this); this.curOp.scrollToPos = range; } else { var sPos = calculateScrollPos(this, Math.min(range.from.left, range.to.left), Math.min(range.from.top, range.to.top) - range.margin, Math.max(range.from.right, range.to.right), Math.max(range.from.bottom, range.to.bottom) + range.margin); this.scrollTo(sPos.scrollLeft, sPos.scrollTop); } }), setSize: methodOp(function(width, height) { var cm = this; function interpret(val) { return typeof val == "number" || /^\d+$/.test(String(val)) ? val + "px" : val; } if (width != null) cm.display.wrapper.style.width = interpret(width); if (height != null) cm.display.wrapper.style.height = interpret(height); if (cm.options.lineWrapping) clearLineMeasurementCache(this); var lineNo = cm.display.viewFrom; cm.doc.iter(lineNo, cm.display.viewTo, function(line) { if (line.widgets) for (var i = 0; i < line.widgets.length; i++) if (line.widgets[i].noHScroll) { regLineChange(cm, lineNo, "widget"); break; } ++lineNo; }); cm.curOp.forceUpdate = true; signal(cm, "refresh", this); }), operation: function(f){return runInOp(this, f);}, refresh: methodOp(function() { var oldHeight = this.display.cachedTextHeight; regChange(this); this.curOp.forceUpdate = true; clearCaches(this); this.scrollTo(this.doc.scrollLeft, this.doc.scrollTop); updateGutterSpace(this); if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5) estimateLineHeights(this); signal(this, "refresh", this); }), swapDoc: methodOp(function(doc) { var old = this.doc; old.cm = null; attachDoc(this, doc); clearCaches(this); this.display.input.reset(); this.scrollTo(doc.scrollLeft, doc.scrollTop); this.curOp.forceScroll = true; signalLater(this, "swapDoc", this, old); return old; }), getInputField: function(){return this.display.input.getField();}, getWrapperElement: function(){return this.display.wrapper;}, getScrollerElement: function(){return this.display.scroller;}, getGutterElement: function(){return this.display.gutters;} }; eventMixin(CodeMirror); // OPTION DEFAULTS // The default configuration options. var defaults = CodeMirror.defaults = {}; // Functions to run when options are changed. var optionHandlers = CodeMirror.optionHandlers = {}; function option(name, deflt, handle, notOnInit) { CodeMirror.defaults[name] = deflt; if (handle) optionHandlers[name] = notOnInit ? function(cm, val, old) {if (old != Init) handle(cm, val, old);} : handle; } // Passed to option handlers when there is no old value. var Init = CodeMirror.Init = {toString: function(){return "CodeMirror.Init";}}; // These two are, on init, called from the constructor because they // have to be initialized before the editor can start at all. option("value", "", function(cm, val) { cm.setValue(val); }, true); option("mode", null, function(cm, val) { cm.doc.modeOption = val; loadMode(cm); }, true); option("indentUnit", 2, loadMode, true); option("indentWithTabs", false); option("smartIndent", true); option("tabSize", 4, function(cm) { resetModeState(cm); clearCaches(cm); regChange(cm); }, true); option("lineSeparator", null, function(cm, val) { cm.doc.lineSep = val; if (!val) return; var newBreaks = [], lineNo = cm.doc.first; cm.doc.iter(function(line) { for (var pos = 0;;) { var found = line.text.indexOf(val, pos); if (found == -1) break; pos = found + val.length; newBreaks.push(Pos(lineNo, found)); } lineNo++; }); for (var i = newBreaks.length - 1; i >= 0; i--) replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length)) }); option("specialChars", /[\u0000-\u001f\u007f\u00ad\u200b-\u200f\u2028\u2029\ufeff]/g, function(cm, val, old) { cm.state.specialChars = new RegExp(val.source + (val.test("\t") ? "" : "|\t"), "g"); if (old != CodeMirror.Init) cm.refresh(); }); option("specialCharPlaceholder", defaultSpecialCharPlaceholder, function(cm) {cm.refresh();}, true); option("electricChars", true); option("inputStyle", mobile ? "contenteditable" : "textarea", function() { throw new Error("inputStyle can not (yet) be changed in a running editor"); // FIXME }, true); option("spellcheck", false, function(cm, val) { cm.getInputField().spellcheck = val }, true); option("rtlMoveVisually", !windows); option("wholeLineUpdateBefore", true); option("theme", "default", function(cm) { themeChanged(cm); guttersChanged(cm); }, true); option("keyMap", "default", function(cm, val, old) { var next = getKeyMap(val); var prev = old != CodeMirror.Init && getKeyMap(old); if (prev && prev.detach) prev.detach(cm, next); if (next.attach) next.attach(cm, prev || null); }); option("extraKeys", null); option("lineWrapping", false, wrappingChanged, true); option("gutters", [], function(cm) { setGuttersForLineNumbers(cm.options); guttersChanged(cm); }, true); option("fixedGutter", true, function(cm, val) { cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + "px" : "0"; cm.refresh(); }, true); option("coverGutterNextToScrollbar", false, function(cm) {updateScrollbars(cm);}, true); option("scrollbarStyle", "native", function(cm) { initScrollbars(cm); updateScrollbars(cm); cm.display.scrollbars.setScrollTop(cm.doc.scrollTop); cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft); }, true); option("lineNumbers", false, function(cm) { setGuttersForLineNumbers(cm.options); guttersChanged(cm); }, true); option("firstLineNumber", 1, guttersChanged, true); option("lineNumberFormatter", function(integer) {return integer;}, guttersChanged, true); option("showCursorWhenSelecting", false, updateSelection, true); option("resetSelectionOnContextMenu", true); option("lineWiseCopyCut", true); option("readOnly", false, function(cm, val) { if (val == "nocursor") { onBlur(cm); cm.display.input.blur(); cm.display.disabled = true; } else { cm.display.disabled = false; } cm.display.input.readOnlyChanged(val) }); option("disableInput", false, function(cm, val) {if (!val) cm.display.input.reset();}, true); option("dragDrop", true, dragDropChanged); option("allowDropFileTypes", null); option("cursorBlinkRate", 530); option("cursorScrollMargin", 0); option("cursorHeight", 1, updateSelection, true); option("singleCursorHeightPerLine", true, updateSelection, true); option("workTime", 100); option("workDelay", 100); option("flattenSpans", true, resetModeState, true); option("addModeClass", false, resetModeState, true); option("pollInterval", 100); option("undoDepth", 200, function(cm, val){cm.doc.history.undoDepth = val;}); option("historyEventDelay", 1250); option("viewportMargin", 10, function(cm){cm.refresh();}, true); option("maxHighlightLength", 10000, resetModeState, true); option("moveInputWithCursor", true, function(cm, val) { if (!val) cm.display.input.resetPosition(); }); option("tabindex", null, function(cm, val) { cm.display.input.getField().tabIndex = val || ""; }); option("autofocus", null); // MODE DEFINITION AND QUERYING // Known modes, by name and by MIME var modes = CodeMirror.modes = {}, mimeModes = CodeMirror.mimeModes = {}; // Extra arguments are stored as the mode's dependencies, which is // used by (legacy) mechanisms like loadmode.js to automatically // load a mode. (Preferred mechanism is the require/define calls.) CodeMirror.defineMode = function(name, mode) { if (!CodeMirror.defaults.mode && name != "null") CodeMirror.defaults.mode = name; if (arguments.length > 2) mode.dependencies = Array.prototype.slice.call(arguments, 2); modes[name] = mode; }; CodeMirror.defineMIME = function(mime, spec) { mimeModes[mime] = spec; }; // Given a MIME type, a {name, ...options} config object, or a name // string, return a mode config object. CodeMirror.resolveMode = function(spec) { if (typeof spec == "string" && mimeModes.hasOwnProperty(spec)) { spec = mimeModes[spec]; } else if (spec && typeof spec.name == "string" && mimeModes.hasOwnProperty(spec.name)) { var found = mimeModes[spec.name]; if (typeof found == "string") found = {name: found}; spec = createObj(found, spec); spec.name = found.name; } else if (typeof spec == "string" && /^[\w\-]+\/[\w\-]+\+xml$/.test(spec)) { return CodeMirror.resolveMode("application/xml"); } else if (typeof spec == "string" && /^[\w\-]+\/[\w\-]+\+json$/.test(spec)) { return CodeMirror.resolveMode("application/json"); } if (typeof spec == "string") return {name: spec}; else return spec || {name: "null"}; }; // Given a mode spec (anything that resolveMode accepts), find and // initialize an actual mode object. CodeMirror.getMode = function(options, spec) { var spec = CodeMirror.resolveMode(spec); var mfactory = modes[spec.name]; if (!mfactory) return CodeMirror.getMode(options, "text/plain"); var modeObj = mfactory(options, spec); if (modeExtensions.hasOwnProperty(spec.name)) { var exts = modeExtensions[spec.name]; for (var prop in exts) { if (!exts.hasOwnProperty(prop)) continue; if (modeObj.hasOwnProperty(prop)) modeObj["_" + prop] = modeObj[prop]; modeObj[prop] = exts[prop]; } } modeObj.name = spec.name; if (spec.helperType) modeObj.helperType = spec.helperType; if (spec.modeProps) for (var prop in spec.modeProps) modeObj[prop] = spec.modeProps[prop]; return modeObj; }; // Minimal default mode. CodeMirror.defineMode("null", function() { return {token: function(stream) {stream.skipToEnd();}}; }); CodeMirror.defineMIME("text/plain", "null"); // This can be used to attach properties to mode objects from // outside the actual mode definition. var modeExtensions = CodeMirror.modeExtensions = {}; CodeMirror.extendMode = function(mode, properties) { var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {}); copyObj(properties, exts); }; // EXTENSIONS CodeMirror.defineExtension = function(name, func) { CodeMirror.prototype[name] = func; }; CodeMirror.defineDocExtension = function(name, func) { Doc.prototype[name] = func; }; CodeMirror.defineOption = option; var initHooks = []; CodeMirror.defineInitHook = function(f) {initHooks.push(f);}; var helpers = CodeMirror.helpers = {}; CodeMirror.registerHelper = function(type, name, value) { if (!helpers.hasOwnProperty(type)) helpers[type] = CodeMirror[type] = {_global: []}; helpers[type][name] = value; }; CodeMirror.registerGlobalHelper = function(type, name, predicate, value) { CodeMirror.registerHelper(type, name, value); helpers[type]._global.push({pred: predicate, val: value}); }; // MODE STATE HANDLING // Utility functions for working with state. Exported because nested // modes need to do this for their inner modes. var copyState = CodeMirror.copyState = function(mode, state) { if (state === true) return state; if (mode.copyState) return mode.copyState(state); var nstate = {}; for (var n in state) { var val = state[n]; if (val instanceof Array) val = val.concat([]); nstate[n] = val; } return nstate; }; var startState = CodeMirror.startState = function(mode, a1, a2) { return mode.startState ? mode.startState(a1, a2) : true; }; // Given a mode and a state (for that mode), find the inner mode and // state at the position that the state refers to. CodeMirror.innerMode = function(mode, state) { while (mode.innerMode) { var info = mode.innerMode(state); if (!info || info.mode == mode) break; state = info.state; mode = info.mode; } return info || {mode: mode, state: state}; }; // STANDARD COMMANDS // Commands are parameter-less actions that can be performed on an // editor, mostly used for keybindings. var commands = CodeMirror.commands = { selectAll: function(cm) {cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);}, singleSelection: function(cm) { cm.setSelection(cm.getCursor("anchor"), cm.getCursor("head"), sel_dontScroll); }, killLine: function(cm) { deleteNearSelection(cm, function(range) { if (range.empty()) { var len = getLine(cm.doc, range.head.line).text.length; if (range.head.ch == len && range.head.line < cm.lastLine()) return {from: range.head, to: Pos(range.head.line + 1, 0)}; else return {from: range.head, to: Pos(range.head.line, len)}; } else { return {from: range.from(), to: range.to()}; } }); }, deleteLine: function(cm) { deleteNearSelection(cm, function(range) { return {from: Pos(range.from().line, 0), to: clipPos(cm.doc, Pos(range.to().line + 1, 0))}; }); }, delLineLeft: function(cm) { deleteNearSelection(cm, function(range) { return {from: Pos(range.from().line, 0), to: range.from()}; }); }, delWrappedLineLeft: function(cm) { deleteNearSelection(cm, function(range) { var top = cm.charCoords(range.head, "div").top + 5; var leftPos = cm.coordsChar({left: 0, top: top}, "div"); return {from: leftPos, to: range.from()}; }); }, delWrappedLineRight: function(cm) { deleteNearSelection(cm, function(range) { var top = cm.charCoords(range.head, "div").top + 5; var rightPos = cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, "div"); return {from: range.from(), to: rightPos }; }); }, undo: function(cm) {cm.undo();}, redo: function(cm) {cm.redo();}, undoSelection: function(cm) {cm.undoSelection();}, redoSelection: function(cm) {cm.redoSelection();}, goDocStart: function(cm) {cm.extendSelection(Pos(cm.firstLine(), 0));}, goDocEnd: function(cm) {cm.extendSelection(Pos(cm.lastLine()));}, goLineStart: function(cm) { cm.extendSelectionsBy(function(range) { return lineStart(cm, range.head.line); }, {origin: "+move", bias: 1}); }, goLineStartSmart: function(cm) { cm.extendSelectionsBy(function(range) { return lineStartSmart(cm, range.head); }, {origin: "+move", bias: 1}); }, goLineEnd: function(cm) { cm.extendSelectionsBy(function(range) { return lineEnd(cm, range.head.line); }, {origin: "+move", bias: -1}); }, goLineRight: function(cm) { cm.extendSelectionsBy(function(range) { var top = cm.charCoords(range.head, "div").top + 5; return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, "div"); }, sel_move); }, goLineLeft: function(cm) { cm.extendSelectionsBy(function(range) { var top = cm.charCoords(range.head, "div").top + 5; return cm.coordsChar({left: 0, top: top}, "div"); }, sel_move); }, goLineLeftSmart: function(cm) { cm.extendSelectionsBy(function(range) { var top = cm.charCoords(range.head, "div").top + 5; var pos = cm.coordsChar({left: 0, top: top}, "div"); if (pos.ch < cm.getLine(pos.line).search(/\S/)) return lineStartSmart(cm, range.head); return pos; }, sel_move); }, goLineUp: function(cm) {cm.moveV(-1, "line");}, goLineDown: function(cm) {cm.moveV(1, "line");}, goPageUp: function(cm) {cm.moveV(-1, "page");}, goPageDown: function(cm) {cm.moveV(1, "page");}, goCharLeft: function(cm) {cm.moveH(-1, "char");}, goCharRight: function(cm) {cm.moveH(1, "char");}, goColumnLeft: function(cm) {cm.moveH(-1, "column");}, goColumnRight: function(cm) {cm.moveH(1, "column");}, goWordLeft: function(cm) {cm.moveH(-1, "word");}, goGroupRight: function(cm) {cm.moveH(1, "group");}, goGroupLeft: function(cm) {cm.moveH(-1, "group");}, goWordRight: function(cm) {cm.moveH(1, "word");}, delCharBefore: function(cm) {cm.deleteH(-1, "char");}, delCharAfter: function(cm) {cm.deleteH(1, "char");}, delWordBefore: function(cm) {cm.deleteH(-1, "word");}, delWordAfter: function(cm) {cm.deleteH(1, "word");}, delGroupBefore: function(cm) {cm.deleteH(-1, "group");}, delGroupAfter: function(cm) {cm.deleteH(1, "group");}, indentAuto: function(cm) {cm.indentSelection("smart");}, indentMore: function(cm) {cm.indentSelection("add");}, indentLess: function(cm) {cm.indentSelection("subtract");}, insertTab: function(cm) {cm.replaceSelection("\t");}, insertSoftTab: function(cm) { var spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize; for (var i = 0; i < ranges.length; i++) { var pos = ranges[i].from(); var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize); spaces.push(spaceStr(tabSize - col % tabSize)); } cm.replaceSelections(spaces); }, defaultTab: function(cm) { if (cm.somethingSelected()) cm.indentSelection("add"); else cm.execCommand("insertTab"); }, transposeChars: function(cm) { runInOp(cm, function() { var ranges = cm.listSelections(), newSel = []; for (var i = 0; i < ranges.length; i++) { var cur = ranges[i].head, line = getLine(cm.doc, cur.line).text; if (line) { if (cur.ch == line.length) cur = new Pos(cur.line, cur.ch - 1); if (cur.ch > 0) { cur = new Pos(cur.line, cur.ch + 1); cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2), Pos(cur.line, cur.ch - 2), cur, "+transpose"); } else if (cur.line > cm.doc.first) { var prev = getLine(cm.doc, cur.line - 1).text; if (prev) cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() + prev.charAt(prev.length - 1), Pos(cur.line - 1, prev.length - 1), Pos(cur.line, 1), "+transpose"); } } newSel.push(new Range(cur, cur)); } cm.setSelections(newSel); }); }, newlineAndIndent: function(cm) { runInOp(cm, function() { var len = cm.listSelections().length; for (var i = 0; i < len; i++) { var range = cm.listSelections()[i]; cm.replaceRange(cm.doc.lineSeparator(), range.anchor, range.head, "+input"); cm.indentLine(range.from().line + 1, null, true); } ensureCursorVisible(cm); }); }, openLine: function(cm) {cm.replaceSelection("\n", "start")}, toggleOverwrite: function(cm) {cm.toggleOverwrite();} }; // STANDARD KEYMAPS var keyMap = CodeMirror.keyMap = {}; keyMap.basic = { "Left": "goCharLeft", "Right": "goCharRight", "Up": "goLineUp", "Down": "goLineDown", "End": "goLineEnd", "Home": "goLineStartSmart", "PageUp": "goPageUp", "PageDown": "goPageDown", "Delete": "delCharAfter", "Backspace": "delCharBefore", "Shift-Backspace": "delCharBefore", "Tab": "defaultTab", "Shift-Tab": "indentAuto", "Enter": "newlineAndIndent", "Insert": "toggleOverwrite", "Esc": "singleSelection" }; // Note that the save and find-related commands aren't defined by // default. User code or addons can define them. Unknown commands // are simply ignored. keyMap.pcDefault = { "Ctrl-A": "selectAll", "Ctrl-D": "deleteLine", "Ctrl-Z": "undo", "Shift-Ctrl-Z": "redo", "Ctrl-Y": "redo", "Ctrl-Home": "goDocStart", "Ctrl-End": "goDocEnd", "Ctrl-Up": "goLineUp", "Ctrl-Down": "goLineDown", "Ctrl-Left": "goGroupLeft", "Ctrl-Right": "goGroupRight", "Alt-Left": "goLineStart", "Alt-Right": "goLineEnd", "Ctrl-Backspace": "delGroupBefore", "Ctrl-Delete": "delGroupAfter", "Ctrl-S": "save", "Ctrl-F": "find", "Ctrl-G": "findNext", "Shift-Ctrl-G": "findPrev", "Shift-Ctrl-F": "replace", "Shift-Ctrl-R": "replaceAll", "Ctrl-[": "indentLess", "Ctrl-]": "indentMore", "Ctrl-U": "undoSelection", "Shift-Ctrl-U": "redoSelection", "Alt-U": "redoSelection", fallthrough: "basic" }; // Very basic readline/emacs-style bindings, which are standard on Mac. keyMap.emacsy = { "Ctrl-F": "goCharRight", "Ctrl-B": "goCharLeft", "Ctrl-P": "goLineUp", "Ctrl-N": "goLineDown", "Alt-F": "goWordRight", "Alt-B": "goWordLeft", "Ctrl-A": "goLineStart", "Ctrl-E": "goLineEnd", "Ctrl-V": "goPageDown", "Shift-Ctrl-V": "goPageUp", "Ctrl-D": "delCharAfter", "Ctrl-H": "delCharBefore", "Alt-D": "delWordAfter", "Alt-Backspace": "delWordBefore", "Ctrl-K": "killLine", "Ctrl-T": "transposeChars", "Ctrl-O": "openLine" }; keyMap.macDefault = { "Cmd-A": "selectAll", "Cmd-D": "deleteLine", "Cmd-Z": "undo", "Shift-Cmd-Z": "redo", "Cmd-Y": "redo", "Cmd-Home": "goDocStart", "Cmd-Up": "goDocStart", "Cmd-End": "goDocEnd", "Cmd-Down": "goDocEnd", "Alt-Left": "goGroupLeft", "Alt-Right": "goGroupRight", "Cmd-Left": "goLineLeft", "Cmd-Right": "goLineRight", "Alt-Backspace": "delGroupBefore", "Ctrl-Alt-Backspace": "delGroupAfter", "Alt-Delete": "delGroupAfter", "Cmd-S": "save", "Cmd-F": "find", "Cmd-G": "findNext", "Shift-Cmd-G": "findPrev", "Cmd-Alt-F": "replace", "Shift-Cmd-Alt-F": "replaceAll", "Cmd-[": "indentLess", "Cmd-]": "indentMore", "Cmd-Backspace": "delWrappedLineLeft", "Cmd-Delete": "delWrappedLineRight", "Cmd-U": "undoSelection", "Shift-Cmd-U": "redoSelection", "Ctrl-Up": "goDocStart", "Ctrl-Down": "goDocEnd", fallthrough: ["basic", "emacsy"] }; keyMap["default"] = mac ? keyMap.macDefault : keyMap.pcDefault; // KEYMAP DISPATCH function normalizeKeyName(name) { var parts = name.split(/-(?!$)/), name = parts[parts.length - 1]; var alt, ctrl, shift, cmd; for (var i = 0; i < parts.length - 1; i++) { var mod = parts[i]; if (/^(cmd|meta|m)$/i.test(mod)) cmd = true; else if (/^a(lt)?$/i.test(mod)) alt = true; else if (/^(c|ctrl|control)$/i.test(mod)) ctrl = true; else if (/^s(hift)$/i.test(mod)) shift = true; else throw new Error("Unrecognized modifier name: " + mod); } if (alt) name = "Alt-" + name; if (ctrl) name = "Ctrl-" + name; if (cmd) name = "Cmd-" + name; if (shift) name = "Shift-" + name; return name; } // This is a kludge to keep keymaps mostly working as raw objects // (backwards compatibility) while at the same time support features // like normalization and multi-stroke key bindings. It compiles a // new normalized keymap, and then updates the old object to reflect // this. CodeMirror.normalizeKeyMap = function(keymap) { var copy = {}; for (var keyname in keymap) if (keymap.hasOwnProperty(keyname)) { var value = keymap[keyname]; if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) continue; if (value == "...") { delete keymap[keyname]; continue; } var keys = map(keyname.split(" "), normalizeKeyName); for (var i = 0; i < keys.length; i++) { var val, name; if (i == keys.length - 1) { name = keys.join(" "); val = value; } else { name = keys.slice(0, i + 1).join(" "); val = "..."; } var prev = copy[name]; if (!prev) copy[name] = val; else if (prev != val) throw new Error("Inconsistent bindings for " + name); } delete keymap[keyname]; } for (var prop in copy) keymap[prop] = copy[prop]; return keymap; }; var lookupKey = CodeMirror.lookupKey = function(key, map, handle, context) { map = getKeyMap(map); var found = map.call ? map.call(key, context) : map[key]; if (found === false) return "nothing"; if (found === "...") return "multi"; if (found != null && handle(found)) return "handled"; if (map.fallthrough) { if (Object.prototype.toString.call(map.fallthrough) != "[object Array]") return lookupKey(key, map.fallthrough, handle, context); for (var i = 0; i < map.fallthrough.length; i++) { var result = lookupKey(key, map.fallthrough[i], handle, context); if (result) return result; } } }; // Modifier key presses don't count as 'real' key presses for the // purpose of keymap fallthrough. var isModifierKey = CodeMirror.isModifierKey = function(value) { var name = typeof value == "string" ? value : keyNames[value.keyCode]; return name == "Ctrl" || name == "Alt" || name == "Shift" || name == "Mod"; }; // Look up the name of a key as indicated by an event object. var keyName = CodeMirror.keyName = function(event, noShift) { if (presto && event.keyCode == 34 && event["char"]) return false; var base = keyNames[event.keyCode], name = base; if (name == null || event.altGraphKey) return false; if (event.altKey && base != "Alt") name = "Alt-" + name; if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != "Ctrl") name = "Ctrl-" + name; if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != "Cmd") name = "Cmd-" + name; if (!noShift && event.shiftKey && base != "Shift") name = "Shift-" + name; return name; }; function getKeyMap(val) { return typeof val == "string" ? keyMap[val] : val; } // FROMTEXTAREA CodeMirror.fromTextArea = function(textarea, options) { options = options ? copyObj(options) : {}; options.value = textarea.value; if (!options.tabindex && textarea.tabIndex) options.tabindex = textarea.tabIndex; if (!options.placeholder && textarea.placeholder) options.placeholder = textarea.placeholder; // Set autofocus to true if this textarea is focused, or if it has // autofocus and no other element is focused. if (options.autofocus == null) { var hasFocus = activeElt(); options.autofocus = hasFocus == textarea || textarea.getAttribute("autofocus") != null && hasFocus == document.body; } function save() {textarea.value = cm.getValue();} if (textarea.form) { on(textarea.form, "submit", save); // Deplorable hack to make the submit method do the right thing. if (!options.leaveSubmitMethodAlone) { var form = textarea.form, realSubmit = form.submit; try { var wrappedSubmit = form.submit = function() { save(); form.submit = realSubmit; form.submit(); form.submit = wrappedSubmit; }; } catch(e) {} } } options.finishInit = function(cm) { cm.save = save; cm.getTextArea = function() { return textarea; }; cm.toTextArea = function() { cm.toTextArea = isNaN; // Prevent this from being ran twice save(); textarea.parentNode.removeChild(cm.getWrapperElement()); textarea.style.display = ""; if (textarea.form) { off(textarea.form, "submit", save); if (typeof textarea.form.submit == "function") textarea.form.submit = realSubmit; } }; }; textarea.style.display = "none"; var cm = CodeMirror(function(node) { textarea.parentNode.insertBefore(node, textarea.nextSibling); }, options); return cm; }; // STRING STREAM // Fed to the mode parsers, provides helper functions to make // parsers more succinct. var StringStream = CodeMirror.StringStream = function(string, tabSize) { this.pos = this.start = 0; this.string = string; this.tabSize = tabSize || 8; this.lastColumnPos = this.lastColumnValue = 0; this.lineStart = 0; }; StringStream.prototype = { eol: function() {return this.pos >= this.string.length;}, sol: function() {return this.pos == this.lineStart;}, peek: function() {return this.string.charAt(this.pos) || undefined;}, next: function() { if (this.pos < this.string.length) return this.string.charAt(this.pos++); }, eat: function(match) { var ch = this.string.charAt(this.pos); if (typeof match == "string") var ok = ch == match; else var ok = ch && (match.test ? match.test(ch) : match(ch)); if (ok) {++this.pos; return ch;} }, eatWhile: function(match) { var start = this.pos; while (this.eat(match)){} return this.pos > start; }, eatSpace: function() { var start = this.pos; while (/[\s\u00a0]/.test(this.string.charAt(this.pos))) ++this.pos; return this.pos > start; }, skipToEnd: function() {this.pos = this.string.length;}, skipTo: function(ch) { var found = this.string.indexOf(ch, this.pos); if (found > -1) {this.pos = found; return true;} }, backUp: function(n) {this.pos -= n;}, column: function() { if (this.lastColumnPos < this.start) { this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue); this.lastColumnPos = this.start; } return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0); }, indentation: function() { return countColumn(this.string, null, this.tabSize) - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0); }, match: function(pattern, consume, caseInsensitive) { if (typeof pattern == "string") { var cased = function(str) {return caseInsensitive ? str.toLowerCase() : str;}; var substr = this.string.substr(this.pos, pattern.length); if (cased(substr) == cased(pattern)) { if (consume !== false) this.pos += pattern.length; return true; } } else { var match = this.string.slice(this.pos).match(pattern); if (match && match.index > 0) return null; if (match && consume !== false) this.pos += match[0].length; return match; } }, current: function(){return this.string.slice(this.start, this.pos);}, hideFirstChars: function(n, inner) { this.lineStart += n; try { return inner(); } finally { this.lineStart -= n; } } }; // TEXTMARKERS // Created with markText and setBookmark methods. A TextMarker is a // handle that can be used to clear or find a marked position in the // document. Line objects hold arrays (markedSpans) containing // {from, to, marker} object pointing to such marker objects, and // indicating that such a marker is present on that line. Multiple // lines may point to the same marker when it spans across lines. // The spans will have null for their from/to properties when the // marker continues beyond the start/end of the line. Markers have // links back to the lines they currently touch. var nextMarkerId = 0; var TextMarker = CodeMirror.TextMarker = function(doc, type) { this.lines = []; this.type = type; this.doc = doc; this.id = ++nextMarkerId; }; eventMixin(TextMarker); // Clear the marker. TextMarker.prototype.clear = function() { if (this.explicitlyCleared) return; var cm = this.doc.cm, withOp = cm && !cm.curOp; if (withOp) startOperation(cm); if (hasHandler(this, "clear")) { var found = this.find(); if (found) signalLater(this, "clear", found.from, found.to); } var min = null, max = null; for (var i = 0; i < this.lines.length; ++i) { var line = this.lines[i]; var span = getMarkedSpanFor(line.markedSpans, this); if (cm && !this.collapsed) regLineChange(cm, lineNo(line), "text"); else if (cm) { if (span.to != null) max = lineNo(line); if (span.from != null) min = lineNo(line); } line.markedSpans = removeMarkedSpan(line.markedSpans, span); if (span.from == null && this.collapsed && !lineIsHidden(this.doc, line) && cm) updateLineHeight(line, textHeight(cm.display)); } if (cm && this.collapsed && !cm.options.lineWrapping) for (var i = 0; i < this.lines.length; ++i) { var visual = visualLine(this.lines[i]), len = lineLength(visual); if (len > cm.display.maxLineLength) { cm.display.maxLine = visual; cm.display.maxLineLength = len; cm.display.maxLineChanged = true; } } if (min != null && cm && this.collapsed) regChange(cm, min, max + 1); this.lines.length = 0; this.explicitlyCleared = true; if (this.atomic && this.doc.cantEdit) { this.doc.cantEdit = false; if (cm) reCheckSelection(cm.doc); } if (cm) signalLater(cm, "markerCleared", cm, this); if (withOp) endOperation(cm); if (this.parent) this.parent.clear(); }; // Find the position of the marker in the document. Returns a {from, // to} object by default. Side can be passed to get a specific side // -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the // Pos objects returned contain a line object, rather than a line // number (used to prevent looking up the same line twice). TextMarker.prototype.find = function(side, lineObj) { if (side == null && this.type == "bookmark") side = 1; var from, to; for (var i = 0; i < this.lines.length; ++i) { var line = this.lines[i]; var span = getMarkedSpanFor(line.markedSpans, this); if (span.from != null) { from = Pos(lineObj ? line : lineNo(line), span.from); if (side == -1) return from; } if (span.to != null) { to = Pos(lineObj ? line : lineNo(line), span.to); if (side == 1) return to; } } return from && {from: from, to: to}; }; // Signals that the marker's widget changed, and surrounding layout // should be recomputed. TextMarker.prototype.changed = function() { var pos = this.find(-1, true), widget = this, cm = this.doc.cm; if (!pos || !cm) return; runInOp(cm, function() { var line = pos.line, lineN = lineNo(pos.line); var view = findViewForLine(cm, lineN); if (view) { clearLineMeasurementCacheFor(view); cm.curOp.selectionChanged = cm.curOp.forceUpdate = true; } cm.curOp.updateMaxLine = true; if (!lineIsHidden(widget.doc, line) && widget.height != null) { var oldHeight = widget.height; widget.height = null; var dHeight = widgetHeight(widget) - oldHeight; if (dHeight) updateLineHeight(line, line.height + dHeight); } }); }; TextMarker.prototype.attachLine = function(line) { if (!this.lines.length && this.doc.cm) { var op = this.doc.cm.curOp; if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1) (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this); } this.lines.push(line); }; TextMarker.prototype.detachLine = function(line) { this.lines.splice(indexOf(this.lines, line), 1); if (!this.lines.length && this.doc.cm) { var op = this.doc.cm.curOp; (op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this); } }; // Collapsed markers have unique ids, in order to be able to order // them, which is needed for uniquely determining an outer marker // when they overlap (they may nest, but not partially overlap). var nextMarkerId = 0; // Create a marker, wire it up to the right lines, and function markText(doc, from, to, options, type) { // Shared markers (across linked documents) are handled separately // (markTextShared will call out to this again, once per // document). if (options && options.shared) return markTextShared(doc, from, to, options, type); // Ensure we are in an operation. if (doc.cm && !doc.cm.curOp) return operation(doc.cm, markText)(doc, from, to, options, type); var marker = new TextMarker(doc, type), diff = cmp(from, to); if (options) copyObj(options, marker, false); // Don't connect empty markers unless clearWhenEmpty is false if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false) return marker; if (marker.replacedWith) { // Showing up as a widget implies collapsed (widget replaces text) marker.collapsed = true; marker.widgetNode = elt("span", [marker.replacedWith], "CodeMirror-widget"); if (!options.handleMouseEvents) marker.widgetNode.setAttribute("cm-ignore-events", "true"); if (options.insertLeft) marker.widgetNode.insertLeft = true; } if (marker.collapsed) { if (conflictingCollapsedRange(doc, from.line, from, to, marker) || from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker)) throw new Error("Inserting collapsed marker partially overlapping an existing one"); sawCollapsedSpans = true; } if (marker.addToHistory) addChangeToHistory(doc, {from: from, to: to, origin: "markText"}, doc.sel, NaN); var curLine = from.line, cm = doc.cm, updateMaxLine; doc.iter(curLine, to.line + 1, function(line) { if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine) updateMaxLine = true; if (marker.collapsed && curLine != from.line) updateLineHeight(line, 0); addMarkedSpan(line, new MarkedSpan(marker, curLine == from.line ? from.ch : null, curLine == to.line ? to.ch : null)); ++curLine; }); // lineIsHidden depends on the presence of the spans, so needs a second pass if (marker.collapsed) doc.iter(from.line, to.line + 1, function(line) { if (lineIsHidden(doc, line)) updateLineHeight(line, 0); }); if (marker.clearOnEnter) on(marker, "beforeCursorEnter", function() { marker.clear(); }); if (marker.readOnly) { sawReadOnlySpans = true; if (doc.history.done.length || doc.history.undone.length) doc.clearHistory(); } if (marker.collapsed) { marker.id = ++nextMarkerId; marker.atomic = true; } if (cm) { // Sync editor state if (updateMaxLine) cm.curOp.updateMaxLine = true; if (marker.collapsed) regChange(cm, from.line, to.line + 1); else if (marker.className || marker.title || marker.startStyle || marker.endStyle || marker.css) for (var i = from.line; i <= to.line; i++) regLineChange(cm, i, "text"); if (marker.atomic) reCheckSelection(cm.doc); signalLater(cm, "markerAdded", cm, marker); } return marker; } // SHARED TEXTMARKERS // A shared marker spans multiple linked documents. It is // implemented as a meta-marker-object controlling multiple normal // markers. var SharedTextMarker = CodeMirror.SharedTextMarker = function(markers, primary) { this.markers = markers; this.primary = primary; for (var i = 0; i < markers.length; ++i) markers[i].parent = this; }; eventMixin(SharedTextMarker); SharedTextMarker.prototype.clear = function() { if (this.explicitlyCleared) return; this.explicitlyCleared = true; for (var i = 0; i < this.markers.length; ++i) this.markers[i].clear(); signalLater(this, "clear"); }; SharedTextMarker.prototype.find = function(side, lineObj) { return this.primary.find(side, lineObj); }; function markTextShared(doc, from, to, options, type) { options = copyObj(options); options.shared = false; var markers = [markText(doc, from, to, options, type)], primary = markers[0]; var widget = options.widgetNode; linkedDocs(doc, function(doc) { if (widget) options.widgetNode = widget.cloneNode(true); markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type)); for (var i = 0; i < doc.linked.length; ++i) if (doc.linked[i].isParent) return; primary = lst(markers); }); return new SharedTextMarker(markers, primary); } function findSharedMarkers(doc) { return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), function(m) { return m.parent; }); } function copySharedMarkers(doc, markers) { for (var i = 0; i < markers.length; i++) { var marker = markers[i], pos = marker.find(); var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to); if (cmp(mFrom, mTo)) { var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type); marker.markers.push(subMark); subMark.parent = marker; } } } function detachSharedMarkers(markers) { for (var i = 0; i < markers.length; i++) { var marker = markers[i], linked = [marker.primary.doc];; linkedDocs(marker.primary.doc, function(d) { linked.push(d); }); for (var j = 0; j < marker.markers.length; j++) { var subMarker = marker.markers[j]; if (indexOf(linked, subMarker.doc) == -1) { subMarker.parent = null; marker.markers.splice(j--, 1); } } } } // TEXTMARKER SPANS function MarkedSpan(marker, from, to) { this.marker = marker; this.from = from; this.to = to; } // Search an array of spans for a span matching the given marker. function getMarkedSpanFor(spans, marker) { if (spans) for (var i = 0; i < spans.length; ++i) { var span = spans[i]; if (span.marker == marker) return span; } } // Remove a span from an array, returning undefined if no spans are // left (we don't store arrays for lines without spans). function removeMarkedSpan(spans, span) { for (var r, i = 0; i < spans.length; ++i) if (spans[i] != span) (r || (r = [])).push(spans[i]); return r; } // Add a span to a line. function addMarkedSpan(line, span) { line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span]; span.marker.attachLine(line); } // Used for the algorithm that adjusts markers for a change in the // document. These functions cut an array of spans at a given // character position, returning an array of remaining chunks (or // undefined if nothing remains). function markedSpansBefore(old, startCh, isInsert) { if (old) for (var i = 0, nw; i < old.length; ++i) { var span = old[i], marker = span.marker; var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh); if (startsBefore || span.from == startCh && marker.type == "bookmark" && (!isInsert || !span.marker.insertLeft)) { var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh); (nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to)); } } return nw; } function markedSpansAfter(old, endCh, isInsert) { if (old) for (var i = 0, nw; i < old.length; ++i) { var span = old[i], marker = span.marker; var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh); if (endsAfter || span.from == endCh && marker.type == "bookmark" && (!isInsert || span.marker.insertLeft)) { var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh); (nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh, span.to == null ? null : span.to - endCh)); } } return nw; } // Given a change object, compute the new set of marker spans that // cover the line in which the change took place. Removes spans // entirely within the change, reconnects spans belonging to the // same marker that appear on both sides of the change, and cuts off // spans partially within the change. Returns an array of span // arrays with one element for each line in (after) the change. function stretchSpansOverChange(doc, change) { if (change.full) return null; var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans; var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans; if (!oldFirst && !oldLast) return null; var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0; // Get the spans that 'stick out' on both sides var first = markedSpansBefore(oldFirst, startCh, isInsert); var last = markedSpansAfter(oldLast, endCh, isInsert); // Next, merge those two ends var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0); if (first) { // Fix up .to properties of first for (var i = 0; i < first.length; ++i) { var span = first[i]; if (span.to == null) { var found = getMarkedSpanFor(last, span.marker); if (!found) span.to = startCh; else if (sameLine) span.to = found.to == null ? null : found.to + offset; } } } if (last) { // Fix up .from in last (or move them into first in case of sameLine) for (var i = 0; i < last.length; ++i) { var span = last[i]; if (span.to != null) span.to += offset; if (span.from == null) { var found = getMarkedSpanFor(first, span.marker); if (!found) { span.from = offset; if (sameLine) (first || (first = [])).push(span); } } else { span.from += offset; if (sameLine) (first || (first = [])).push(span); } } } // Make sure we didn't create any zero-length spans if (first) first = clearEmptySpans(first); if (last && last != first) last = clearEmptySpans(last); var newMarkers = [first]; if (!sameLine) { // Fill gap with whole-line-spans var gap = change.text.length - 2, gapMarkers; if (gap > 0 && first) for (var i = 0; i < first.length; ++i) if (first[i].to == null) (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i].marker, null, null)); for (var i = 0; i < gap; ++i) newMarkers.push(gapMarkers); newMarkers.push(last); } return newMarkers; } // Remove spans that are empty and don't have a clearWhenEmpty // option of false. function clearEmptySpans(spans) { for (var i = 0; i < spans.length; ++i) { var span = spans[i]; if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false) spans.splice(i--, 1); } if (!spans.length) return null; return spans; } // Used for un/re-doing changes from the history. Combines the // result of computing the existing spans with the set of spans that // existed in the history (so that deleting around a span and then // undoing brings back the span). function mergeOldSpans(doc, change) { var old = getOldSpans(doc, change); var stretched = stretchSpansOverChange(doc, change); if (!old) return stretched; if (!stretched) return old; for (var i = 0; i < old.length; ++i) { var oldCur = old[i], stretchCur = stretched[i]; if (oldCur && stretchCur) { spans: for (var j = 0; j < stretchCur.length; ++j) { var span = stretchCur[j]; for (var k = 0; k < oldCur.length; ++k) if (oldCur[k].marker == span.marker) continue spans; oldCur.push(span); } } else if (stretchCur) { old[i] = stretchCur; } } return old; } // Used to 'clip' out readOnly ranges when making a change. function removeReadOnlyRanges(doc, from, to) { var markers = null; doc.iter(from.line, to.line + 1, function(line) { if (line.markedSpans) for (var i = 0; i < line.markedSpans.length; ++i) { var mark = line.markedSpans[i].marker; if (mark.readOnly && (!markers || indexOf(markers, mark) == -1)) (markers || (markers = [])).push(mark); } }); if (!markers) return null; var parts = [{from: from, to: to}]; for (var i = 0; i < markers.length; ++i) { var mk = markers[i], m = mk.find(0); for (var j = 0; j < parts.length; ++j) { var p = parts[j]; if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) continue; var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to); if (dfrom < 0 || !mk.inclusiveLeft && !dfrom) newParts.push({from: p.from, to: m.from}); if (dto > 0 || !mk.inclusiveRight && !dto) newParts.push({from: m.to, to: p.to}); parts.splice.apply(parts, newParts); j += newParts.length - 1; } } return parts; } // Connect or disconnect spans from a line. function detachMarkedSpans(line) { var spans = line.markedSpans; if (!spans) return; for (var i = 0; i < spans.length; ++i) spans[i].marker.detachLine(line); line.markedSpans = null; } function attachMarkedSpans(line, spans) { if (!spans) return; for (var i = 0; i < spans.length; ++i) spans[i].marker.attachLine(line); line.markedSpans = spans; } // Helpers used when computing which overlapping collapsed span // counts as the larger one. function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0; } function extraRight(marker) { return marker.inclusiveRight ? 1 : 0; } // Returns a number indicating which of two overlapping collapsed // spans is larger (and thus includes the other). Falls back to // comparing ids when the spans cover exactly the same range. function compareCollapsedMarkers(a, b) { var lenDiff = a.lines.length - b.lines.length; if (lenDiff != 0) return lenDiff; var aPos = a.find(), bPos = b.find(); var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b); if (fromCmp) return -fromCmp; var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b); if (toCmp) return toCmp; return b.id - a.id; } // Find out whether a line ends or starts in a collapsed span. If // so, return the marker for that span. function collapsedSpanAtSide(line, start) { var sps = sawCollapsedSpans && line.markedSpans, found; if (sps) for (var sp, i = 0; i < sps.length; ++i) { sp = sps[i]; if (sp.marker.collapsed && (start ? sp.from : sp.to) == null && (!found || compareCollapsedMarkers(found, sp.marker) < 0)) found = sp.marker; } return found; } function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true); } function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false); } // Test whether there exists a collapsed span that partially // overlaps (covers the start or end, but not both) of a new span. // Such overlap is not allowed. function conflictingCollapsedRange(doc, lineNo, from, to, marker) { var line = getLine(doc, lineNo); var sps = sawCollapsedSpans && line.markedSpans; if (sps) for (var i = 0; i < sps.length; ++i) { var sp = sps[i]; if (!sp.marker.collapsed) continue; var found = sp.marker.find(0); var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker); var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker); if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) continue; if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) || fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0)) return true; } } // A visual line is a line as drawn on the screen. Folding, for // example, can cause multiple logical lines to appear on the same // visual line. This finds the start of the visual line that the // given line is part of (usually that is the line itself). function visualLine(line) { var merged; while (merged = collapsedSpanAtStart(line)) line = merged.find(-1, true).line; return line; } // Returns an array of logical lines that continue the visual line // started by the argument, or undefined if there are no such lines. function visualLineContinued(line) { var merged, lines; while (merged = collapsedSpanAtEnd(line)) { line = merged.find(1, true).line; (lines || (lines = [])).push(line); } return lines; } // Get the line number of the start of the visual line that the // given line number is part of. function visualLineNo(doc, lineN) { var line = getLine(doc, lineN), vis = visualLine(line); if (line == vis) return lineN; return lineNo(vis); } // Get the line number of the start of the next visual line after // the given line. function visualLineEndNo(doc, lineN) { if (lineN > doc.lastLine()) return lineN; var line = getLine(doc, lineN), merged; if (!lineIsHidden(doc, line)) return lineN; while (merged = collapsedSpanAtEnd(line)) line = merged.find(1, true).line; return lineNo(line) + 1; } // Compute whether a line is hidden. Lines count as hidden when they // are part of a visual line that starts with another line, or when // they are entirely covered by collapsed, non-widget span. function lineIsHidden(doc, line) { var sps = sawCollapsedSpans && line.markedSpans; if (sps) for (var sp, i = 0; i < sps.length; ++i) { sp = sps[i]; if (!sp.marker.collapsed) continue; if (sp.from == null) return true; if (sp.marker.widgetNode) continue; if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp)) return true; } } function lineIsHiddenInner(doc, line, span) { if (span.to == null) { var end = span.marker.find(1, true); return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker)); } if (span.marker.inclusiveRight && span.to == line.text.length) return true; for (var sp, i = 0; i < line.markedSpans.length; ++i) { sp = line.markedSpans[i]; if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to && (sp.to == null || sp.to != span.from) && (sp.marker.inclusiveLeft || span.marker.inclusiveRight) && lineIsHiddenInner(doc, line, sp)) return true; } } // LINE WIDGETS // Line widgets are block elements displayed above or below a line. var LineWidget = CodeMirror.LineWidget = function(doc, node, options) { if (options) for (var opt in options) if (options.hasOwnProperty(opt)) this[opt] = options[opt]; this.doc = doc; this.node = node; }; eventMixin(LineWidget); function adjustScrollWhenAboveVisible(cm, line, diff) { if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop)) addToScrollPos(cm, null, diff); } LineWidget.prototype.clear = function() { var cm = this.doc.cm, ws = this.line.widgets, line = this.line, no = lineNo(line); if (no == null || !ws) return; for (var i = 0; i < ws.length; ++i) if (ws[i] == this) ws.splice(i--, 1); if (!ws.length) line.widgets = null; var height = widgetHeight(this); updateLineHeight(line, Math.max(0, line.height - height)); if (cm) runInOp(cm, function() { adjustScrollWhenAboveVisible(cm, line, -height); regLineChange(cm, no, "widget"); }); }; LineWidget.prototype.changed = function() { var oldH = this.height, cm = this.doc.cm, line = this.line; this.height = null; var diff = widgetHeight(this) - oldH; if (!diff) return; updateLineHeight(line, line.height + diff); if (cm) runInOp(cm, function() { cm.curOp.forceUpdate = true; adjustScrollWhenAboveVisible(cm, line, diff); }); }; function widgetHeight(widget) { if (widget.height != null) return widget.height; var cm = widget.doc.cm; if (!cm) return 0; if (!contains(document.body, widget.node)) { var parentStyle = "position: relative;"; if (widget.coverGutter) parentStyle += "margin-left: -" + cm.display.gutters.offsetWidth + "px;"; if (widget.noHScroll) parentStyle += "width: " + cm.display.wrapper.clientWidth + "px;"; removeChildrenAndAdd(cm.display.measure, elt("div", [widget.node], null, parentStyle)); } return widget.height = widget.node.parentNode.offsetHeight; } function addLineWidget(doc, handle, node, options) { var widget = new LineWidget(doc, node, options); var cm = doc.cm; if (cm && widget.noHScroll) cm.display.alignWidgets = true; changeLine(doc, handle, "widget", function(line) { var widgets = line.widgets || (line.widgets = []); if (widget.insertAt == null) widgets.push(widget); else widgets.splice(Math.min(widgets.length - 1, Math.max(0, widget.insertAt)), 0, widget); widget.line = line; if (cm && !lineIsHidden(doc, line)) { var aboveVisible = heightAtLine(line) < doc.scrollTop; updateLineHeight(line, line.height + widgetHeight(widget)); if (aboveVisible) addToScrollPos(cm, null, widget.height); cm.curOp.forceUpdate = true; } return true; }); return widget; } // LINE DATA STRUCTURE // Line objects. These hold state related to a line, including // highlighting info (the styles array). var Line = CodeMirror.Line = function(text, markedSpans, estimateHeight) { this.text = text; attachMarkedSpans(this, markedSpans); this.height = estimateHeight ? estimateHeight(this) : 1; }; eventMixin(Line); Line.prototype.lineNo = function() { return lineNo(this); }; // Change the content (text, markers) of a line. Automatically // invalidates cached information and tries to re-estimate the // line's height. function updateLine(line, text, markedSpans, estimateHeight) { line.text = text; if (line.stateAfter) line.stateAfter = null; if (line.styles) line.styles = null; if (line.order != null) line.order = null; detachMarkedSpans(line); attachMarkedSpans(line, markedSpans); var estHeight = estimateHeight ? estimateHeight(line) : 1; if (estHeight != line.height) updateLineHeight(line, estHeight); } // Detach a line from the document tree and its markers. function cleanUpLine(line) { line.parent = null; detachMarkedSpans(line); } function extractLineClasses(type, output) { if (type) for (;;) { var lineClass = type.match(/(?:^|\s+)line-(background-)?(\S+)/); if (!lineClass) break; type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length); var prop = lineClass[1] ? "bgClass" : "textClass"; if (output[prop] == null) output[prop] = lineClass[2]; else if (!(new RegExp("(?:^|\s)" + lineClass[2] + "(?:$|\s)")).test(output[prop])) output[prop] += " " + lineClass[2]; } return type; } function callBlankLine(mode, state) { if (mode.blankLine) return mode.blankLine(state); if (!mode.innerMode) return; var inner = CodeMirror.innerMode(mode, state); if (inner.mode.blankLine) return inner.mode.blankLine(inner.state); } function readToken(mode, stream, state, inner) { for (var i = 0; i < 10; i++) { if (inner) inner[0] = CodeMirror.innerMode(mode, state).mode; var style = mode.token(stream, state); if (stream.pos > stream.start) return style; } throw new Error("Mode " + mode.name + " failed to advance stream."); } // Utility for getTokenAt and getLineTokens function takeToken(cm, pos, precise, asArray) { function getObj(copy) { return {start: stream.start, end: stream.pos, string: stream.current(), type: style || null, state: copy ? copyState(doc.mode, state) : state}; } var doc = cm.doc, mode = doc.mode, style; pos = clipPos(doc, pos); var line = getLine(doc, pos.line), state = getStateBefore(cm, pos.line, precise); var stream = new StringStream(line.text, cm.options.tabSize), tokens; if (asArray) tokens = []; while ((asArray || stream.pos < pos.ch) && !stream.eol()) { stream.start = stream.pos; style = readToken(mode, stream, state); if (asArray) tokens.push(getObj(true)); } return asArray ? tokens : getObj(); } // Run the given mode's parser over a line, calling f for each token. function runMode(cm, text, mode, state, f, lineClasses, forceToEnd) { var flattenSpans = mode.flattenSpans; if (flattenSpans == null) flattenSpans = cm.options.flattenSpans; var curStart = 0, curStyle = null; var stream = new StringStream(text, cm.options.tabSize), style; var inner = cm.options.addModeClass && [null]; if (text == "") extractLineClasses(callBlankLine(mode, state), lineClasses); while (!stream.eol()) { if (stream.pos > cm.options.maxHighlightLength) { flattenSpans = false; if (forceToEnd) processLine(cm, text, state, stream.pos); stream.pos = text.length; style = null; } else { style = extractLineClasses(readToken(mode, stream, state, inner), lineClasses); } if (inner) { var mName = inner[0].name; if (mName) style = "m-" + (style ? mName + " " + style : mName); } if (!flattenSpans || curStyle != style) { while (curStart < stream.start) { curStart = Math.min(stream.start, curStart + 50000); f(curStart, curStyle); } curStyle = style; } stream.start = stream.pos; } while (curStart < stream.pos) { // Webkit seems to refuse to render text nodes longer than 57444 characters var pos = Math.min(stream.pos, curStart + 50000); f(pos, curStyle); curStart = pos; } } // Compute a style array (an array starting with a mode generation // -- for invalidation -- followed by pairs of end positions and // style strings), which is used to highlight the tokens on the // line. function highlightLine(cm, line, state, forceToEnd) { // A styles array always starts with a number identifying the // mode/overlays that it is based on (for easy invalidation). var st = [cm.state.modeGen], lineClasses = {}; // Compute the base array of styles runMode(cm, line.text, cm.doc.mode, state, function(end, style) { st.push(end, style); }, lineClasses, forceToEnd); // Run overlays, adjust style array. for (var o = 0; o < cm.state.overlays.length; ++o) { var overlay = cm.state.overlays[o], i = 1, at = 0; runMode(cm, line.text, overlay.mode, true, function(end, style) { var start = i; // Ensure there's a token end at the current position, and that i points at it while (at < end) { var i_end = st[i]; if (i_end > end) st.splice(i, 1, end, st[i+1], i_end); i += 2; at = Math.min(end, i_end); } if (!style) return; if (overlay.opaque) { st.splice(start, i - start, end, "cm-overlay " + style); i = start + 2; } else { for (; start < i; start += 2) { var cur = st[start+1]; st[start+1] = (cur ? cur + " " : "") + "cm-overlay " + style; } } }, lineClasses); } return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null}; } function getLineStyles(cm, line, updateFrontier) { if (!line.styles || line.styles[0] != cm.state.modeGen) { var state = getStateBefore(cm, lineNo(line)); var result = highlightLine(cm, line, line.text.length > cm.options.maxHighlightLength ? copyState(cm.doc.mode, state) : state); line.stateAfter = state; line.styles = result.styles; if (result.classes) line.styleClasses = result.classes; else if (line.styleClasses) line.styleClasses = null; if (updateFrontier === cm.doc.frontier) cm.doc.frontier++; } return line.styles; } // Lightweight form of highlight -- proceed over this line and // update state, but don't save a style array. Used for lines that // aren't currently visible. function processLine(cm, text, state, startAt) { var mode = cm.doc.mode; var stream = new StringStream(text, cm.options.tabSize); stream.start = stream.pos = startAt || 0; if (text == "") callBlankLine(mode, state); while (!stream.eol()) { readToken(mode, stream, state); stream.start = stream.pos; } } // Convert a style as returned by a mode (either null, or a string // containing one or more styles) to a CSS style. This is cached, // and also looks for line-wide styles. var styleToClassCache = {}, styleToClassCacheWithMode = {}; function interpretTokenStyle(style, options) { if (!style || /^\s*$/.test(style)) return null; var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache; return cache[style] || (cache[style] = style.replace(/\S+/g, "cm-$&")); } // Render the DOM representation of the text of a line. Also builds // up a 'line map', which points at the DOM nodes that represent // specific stretches of text, and is used by the measuring code. // The returned object contains the DOM node, this map, and // information about line-wide styles that were set by the mode. function buildLineContent(cm, lineView) { // The padding-right forces the element to have a 'border', which // is needed on Webkit to be able to get line-level bounding // rectangles for it (in measureChar). var content = elt("span", null, null, webkit ? "padding-right: .1px" : null); var builder = {pre: elt("pre", [content], "CodeMirror-line"), content: content, col: 0, pos: 0, cm: cm, trailingSpace: false, splitSpaces: (ie || webkit) && cm.getOption("lineWrapping")}; lineView.measure = {}; // Iterate over the logical lines that make up this visual line. for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) { var line = i ? lineView.rest[i - 1] : lineView.line, order; builder.pos = 0; builder.addToken = buildToken; // Optionally wire in some hacks into the token-rendering // algorithm, to deal with browser quirks. if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line))) builder.addToken = buildTokenBadBidi(builder.addToken, order); builder.map = []; var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line); insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate)); if (line.styleClasses) { if (line.styleClasses.bgClass) builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || ""); if (line.styleClasses.textClass) builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || ""); } // Ensure at least a single node is present, for measuring. if (builder.map.length == 0) builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure))); // Store the map and a cache object for the current logical line if (i == 0) { lineView.measure.map = builder.map; lineView.measure.cache = {}; } else { (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map); (lineView.measure.caches || (lineView.measure.caches = [])).push({}); } } // See issue #2901 if (webkit) { var last = builder.content.lastChild if (/\bcm-tab\b/.test(last.className) || (last.querySelector && last.querySelector(".cm-tab"))) builder.content.className = "cm-tab-wrap-hack"; } signal(cm, "renderLine", cm, lineView.line, builder.pre); if (builder.pre.className) builder.textClass = joinClasses(builder.pre.className, builder.textClass || ""); return builder; } function defaultSpecialCharPlaceholder(ch) { var token = elt("span", "\u2022", "cm-invalidchar"); token.title = "\\u" + ch.charCodeAt(0).toString(16); token.setAttribute("aria-label", token.title); return token; } // Build up the DOM representation for a single token, and add it to // the line map. Takes care to render special characters separately. function buildToken(builder, text, style, startStyle, endStyle, title, css) { if (!text) return; var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text var special = builder.cm.state.specialChars, mustWrap = false; if (!special.test(text)) { builder.col += text.length; var content = document.createTextNode(displayText); builder.map.push(builder.pos, builder.pos + text.length, content); if (ie && ie_version < 9) mustWrap = true; builder.pos += text.length; } else { var content = document.createDocumentFragment(), pos = 0; while (true) { special.lastIndex = pos; var m = special.exec(text); var skipped = m ? m.index - pos : text.length - pos; if (skipped) { var txt = document.createTextNode(displayText.slice(pos, pos + skipped)); if (ie && ie_version < 9) content.appendChild(elt("span", [txt])); else content.appendChild(txt); builder.map.push(builder.pos, builder.pos + skipped, txt); builder.col += skipped; builder.pos += skipped; } if (!m) break; pos += skipped + 1; if (m[0] == "\t") { var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize; var txt = content.appendChild(elt("span", spaceStr(tabWidth), "cm-tab")); txt.setAttribute("role", "presentation"); txt.setAttribute("cm-text", "\t"); builder.col += tabWidth; } else if (m[0] == "\r" || m[0] == "\n") { var txt = content.appendChild(elt("span", m[0] == "\r" ? "\u240d" : "\u2424", "cm-invalidchar")); txt.setAttribute("cm-text", m[0]); builder.col += 1; } else { var txt = builder.cm.options.specialCharPlaceholder(m[0]); txt.setAttribute("cm-text", m[0]); if (ie && ie_version < 9) content.appendChild(elt("span", [txt])); else content.appendChild(txt); builder.col += 1; } builder.map.push(builder.pos, builder.pos + 1, txt); builder.pos++; } } builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32 if (style || startStyle || endStyle || mustWrap || css) { var fullStyle = style || ""; if (startStyle) fullStyle += startStyle; if (endStyle) fullStyle += endStyle; var token = elt("span", [content], fullStyle, css); if (title) token.title = title; return builder.content.appendChild(token); } builder.content.appendChild(content); } function splitSpaces(text, trailingBefore) { if (text.length > 1 && !/ /.test(text)) return text var spaceBefore = trailingBefore, result = "" for (var i = 0; i < text.length; i++) { var ch = text.charAt(i) if (ch == " " && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32)) ch = "\u00a0" result += ch spaceBefore = ch == " " } return result } // Work around nonsense dimensions being reported for stretches of // right-to-left text. function buildTokenBadBidi(inner, order) { return function(builder, text, style, startStyle, endStyle, title, css) { style = style ? style + " cm-force-border" : "cm-force-border"; var start = builder.pos, end = start + text.length; for (;;) { // Find the part that overlaps with the start of this text for (var i = 0; i < order.length; i++) { var part = order[i]; if (part.to > start && part.from <= start) break; } if (part.to >= end) return inner(builder, text, style, startStyle, endStyle, title, css); inner(builder, text.slice(0, part.to - start), style, startStyle, null, title, css); startStyle = null; text = text.slice(part.to - start); start = part.to; } }; } function buildCollapsedSpan(builder, size, marker, ignoreWidget) { var widget = !ignoreWidget && marker.widgetNode; if (widget) builder.map.push(builder.pos, builder.pos + size, widget); if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) { if (!widget) widget = builder.content.appendChild(document.createElement("span")); widget.setAttribute("cm-marker", marker.id); } if (widget) { builder.cm.display.input.setUneditable(widget); builder.content.appendChild(widget); } builder.pos += size; builder.trailingSpace = false } // Outputs a number of spans to make up a line, taking highlighting // and marked text into account. function insertLineContent(line, builder, styles) { var spans = line.markedSpans, allText = line.text, at = 0; if (!spans) { for (var i = 1; i < styles.length; i+=2) builder.addToken(builder, allText.slice(at, at = styles[i]), interpretTokenStyle(styles[i+1], builder.cm.options)); return; } var len = allText.length, pos = 0, i = 1, text = "", style, css; var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, title, collapsed; for (;;) { if (nextChange == pos) { // Update current marker set spanStyle = spanEndStyle = spanStartStyle = title = css = ""; collapsed = null; nextChange = Infinity; var foundBookmarks = [], endStyles for (var j = 0; j < spans.length; ++j) { var sp = spans[j], m = sp.marker; if (m.type == "bookmark" && sp.from == pos && m.widgetNode) { foundBookmarks.push(m); } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) { if (sp.to != null && sp.to != pos && nextChange > sp.to) { nextChange = sp.to; spanEndStyle = ""; } if (m.className) spanStyle += " " + m.className; if (m.css) css = (css ? css + ";" : "") + m.css; if (m.startStyle && sp.from == pos) spanStartStyle += " " + m.startStyle; if (m.endStyle && sp.to == nextChange) (endStyles || (endStyles = [])).push(m.endStyle, sp.to) if (m.title && !title) title = m.title; if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0)) collapsed = sp; } else if (sp.from > pos && nextChange > sp.from) { nextChange = sp.from; } } if (endStyles) for (var j = 0; j < endStyles.length; j += 2) if (endStyles[j + 1] == nextChange) spanEndStyle += " " + endStyles[j] if (!collapsed || collapsed.from == pos) for (var j = 0; j < foundBookmarks.length; ++j) buildCollapsedSpan(builder, 0, foundBookmarks[j]); if (collapsed && (collapsed.from || 0) == pos) { buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos, collapsed.marker, collapsed.from == null); if (collapsed.to == null) return; if (collapsed.to == pos) collapsed = false; } } if (pos >= len) break; var upto = Math.min(len, nextChange); while (true) { if (text) { var end = pos + text.length; if (!collapsed) { var tokenText = end > upto ? text.slice(0, upto - pos) : text; builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle, spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : "", title, css); } if (end >= upto) {text = text.slice(upto - pos); pos = upto; break;} pos = end; spanStartStyle = ""; } text = allText.slice(at, at = styles[i++]); style = interpretTokenStyle(styles[i++], builder.cm.options); } } } // DOCUMENT DATA STRUCTURE // By default, updates that start and end at the beginning of a line // are treated specially, in order to make the association of line // widgets and marker elements with the text behave more intuitive. function isWholeLineUpdate(doc, change) { return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == "" && (!doc.cm || doc.cm.options.wholeLineUpdateBefore); } // Perform a change on the document data structure. function updateDoc(doc, change, markedSpans, estimateHeight) { function spansFor(n) {return markedSpans ? markedSpans[n] : null;} function update(line, text, spans) { updateLine(line, text, spans, estimateHeight); signalLater(line, "change", line, change); } function linesFor(start, end) { for (var i = start, result = []; i < end; ++i) result.push(new Line(text[i], spansFor(i), estimateHeight)); return result; } var from = change.from, to = change.to, text = change.text; var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line); var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line; // Adjust the line structure if (change.full) { doc.insert(0, linesFor(0, text.length)); doc.remove(text.length, doc.size - text.length); } else if (isWholeLineUpdate(doc, change)) { // This is a whole-line replace. Treated specially to make // sure line objects move the way they are supposed to. var added = linesFor(0, text.length - 1); update(lastLine, lastLine.text, lastSpans); if (nlines) doc.remove(from.line, nlines); if (added.length) doc.insert(from.line, added); } else if (firstLine == lastLine) { if (text.length == 1) { update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans); } else { var added = linesFor(1, text.length - 1); added.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight)); update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0)); doc.insert(from.line + 1, added); } } else if (text.length == 1) { update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0)); doc.remove(from.line + 1, nlines); } else { update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0)); update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans); var added = linesFor(1, text.length - 1); if (nlines > 1) doc.remove(from.line + 1, nlines - 1); doc.insert(from.line + 1, added); } signalLater(doc, "change", doc, change); } // The document is represented as a BTree consisting of leaves, with // chunk of lines in them, and branches, with up to ten leaves or // other branch nodes below them. The top node is always a branch // node, and is the document object itself (meaning it has // additional methods and properties). // // All nodes have parent links. The tree is used both to go from // line numbers to line objects, and to go from objects to numbers. // It also indexes by height, and is used to convert between height // and line object, and to find the total height of the document. // // See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html function LeafChunk(lines) { this.lines = lines; this.parent = null; for (var i = 0, height = 0; i < lines.length; ++i) { lines[i].parent = this; height += lines[i].height; } this.height = height; } LeafChunk.prototype = { chunkSize: function() { return this.lines.length; }, // Remove the n lines at offset 'at'. removeInner: function(at, n) { for (var i = at, e = at + n; i < e; ++i) { var line = this.lines[i]; this.height -= line.height; cleanUpLine(line); signalLater(line, "delete"); } this.lines.splice(at, n); }, // Helper used to collapse a small branch into a single leaf. collapse: function(lines) { lines.push.apply(lines, this.lines); }, // Insert the given array of lines at offset 'at', count them as // having the given height. insertInner: function(at, lines, height) { this.height += height; this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at)); for (var i = 0; i < lines.length; ++i) lines[i].parent = this; }, // Used to iterate over a part of the tree. iterN: function(at, n, op) { for (var e = at + n; at < e; ++at) if (op(this.lines[at])) return true; } }; function BranchChunk(children) { this.children = children; var size = 0, height = 0; for (var i = 0; i < children.length; ++i) { var ch = children[i]; size += ch.chunkSize(); height += ch.height; ch.parent = this; } this.size = size; this.height = height; this.parent = null; } BranchChunk.prototype = { chunkSize: function() { return this.size; }, removeInner: function(at, n) { this.size -= n; for (var i = 0; i < this.children.length; ++i) { var child = this.children[i], sz = child.chunkSize(); if (at < sz) { var rm = Math.min(n, sz - at), oldHeight = child.height; child.removeInner(at, rm); this.height -= oldHeight - child.height; if (sz == rm) { this.children.splice(i--, 1); child.parent = null; } if ((n -= rm) == 0) break; at = 0; } else at -= sz; } // If the result is smaller than 25 lines, ensure that it is a // single leaf node. if (this.size - n < 25 && (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) { var lines = []; this.collapse(lines); this.children = [new LeafChunk(lines)]; this.children[0].parent = this; } }, collapse: function(lines) { for (var i = 0; i < this.children.length; ++i) this.children[i].collapse(lines); }, insertInner: function(at, lines, height) { this.size += lines.length; this.height += height; for (var i = 0; i < this.children.length; ++i) { var child = this.children[i], sz = child.chunkSize(); if (at <= sz) { child.insertInner(at, lines, height); if (child.lines && child.lines.length > 50) { // To avoid memory thrashing when child.lines is huge (e.g. first view of a large file), it's never spliced. // Instead, small slices are taken. They're taken in order because sequential memory accesses are fastest. var remaining = child.lines.length % 25 + 25 for (var pos = remaining; pos < child.lines.length;) { var leaf = new LeafChunk(child.lines.slice(pos, pos += 25)); child.height -= leaf.height; this.children.splice(++i, 0, leaf); leaf.parent = this; } child.lines = child.lines.slice(0, remaining); this.maybeSpill(); } break; } at -= sz; } }, // When a node has grown, check whether it should be split. maybeSpill: function() { if (this.children.length <= 10) return; var me = this; do { var spilled = me.children.splice(me.children.length - 5, 5); var sibling = new BranchChunk(spilled); if (!me.parent) { // Become the parent node var copy = new BranchChunk(me.children); copy.parent = me; me.children = [copy, sibling]; me = copy; } else { me.size -= sibling.size; me.height -= sibling.height; var myIndex = indexOf(me.parent.children, me); me.parent.children.splice(myIndex + 1, 0, sibling); } sibling.parent = me.parent; } while (me.children.length > 10); me.parent.maybeSpill(); }, iterN: function(at, n, op) { for (var i = 0; i < this.children.length; ++i) { var child = this.children[i], sz = child.chunkSize(); if (at < sz) { var used = Math.min(n, sz - at); if (child.iterN(at, used, op)) return true; if ((n -= used) == 0) break; at = 0; } else at -= sz; } } }; var nextDocId = 0; var Doc = CodeMirror.Doc = function(text, mode, firstLine, lineSep) { if (!(this instanceof Doc)) return new Doc(text, mode, firstLine, lineSep); if (firstLine == null) firstLine = 0; BranchChunk.call(this, [new LeafChunk([new Line("", null)])]); this.first = firstLine; this.scrollTop = this.scrollLeft = 0; this.cantEdit = false; this.cleanGeneration = 1; this.frontier = firstLine; var start = Pos(firstLine, 0); this.sel = simpleSelection(start); this.history = new History(null); this.id = ++nextDocId; this.modeOption = mode; this.lineSep = lineSep; this.extend = false; if (typeof text == "string") text = this.splitLines(text); updateDoc(this, {from: start, to: start, text: text}); setSelection(this, simpleSelection(start), sel_dontScroll); }; Doc.prototype = createObj(BranchChunk.prototype, { constructor: Doc, // Iterate over the document. Supports two forms -- with only one // argument, it calls that for each line in the document. With // three, it iterates over the range given by the first two (with // the second being non-inclusive). iter: function(from, to, op) { if (op) this.iterN(from - this.first, to - from, op); else this.iterN(this.first, this.first + this.size, from); }, // Non-public interface for adding and removing lines. insert: function(at, lines) { var height = 0; for (var i = 0; i < lines.length; ++i) height += lines[i].height; this.insertInner(at - this.first, lines, height); }, remove: function(at, n) { this.removeInner(at - this.first, n); }, // From here, the methods are part of the public interface. Most // are also available from CodeMirror (editor) instances. getValue: function(lineSep) { var lines = getLines(this, this.first, this.first + this.size); if (lineSep === false) return lines; return lines.join(lineSep || this.lineSeparator()); }, setValue: docMethodOp(function(code) { var top = Pos(this.first, 0), last = this.first + this.size - 1; makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length), text: this.splitLines(code), origin: "setValue", full: true}, true); setSelection(this, simpleSelection(top)); }), replaceRange: function(code, from, to, origin) { from = clipPos(this, from); to = to ? clipPos(this, to) : from; replaceRange(this, code, from, to, origin); }, getRange: function(from, to, lineSep) { var lines = getBetween(this, clipPos(this, from), clipPos(this, to)); if (lineSep === false) return lines; return lines.join(lineSep || this.lineSeparator()); }, getLine: function(line) {var l = this.getLineHandle(line); return l && l.text;}, getLineHandle: function(line) {if (isLine(this, line)) return getLine(this, line);}, getLineNumber: function(line) {return lineNo(line);}, getLineHandleVisualStart: function(line) { if (typeof line == "number") line = getLine(this, line); return visualLine(line); }, lineCount: function() {return this.size;}, firstLine: function() {return this.first;}, lastLine: function() {return this.first + this.size - 1;}, clipPos: function(pos) {return clipPos(this, pos);}, getCursor: function(start) { var range = this.sel.primary(), pos; if (start == null || start == "head") pos = range.head; else if (start == "anchor") pos = range.anchor; else if (start == "end" || start == "to" || start === false) pos = range.to(); else pos = range.from(); return pos; }, listSelections: function() { return this.sel.ranges; }, somethingSelected: function() {return this.sel.somethingSelected();}, setCursor: docMethodOp(function(line, ch, options) { setSimpleSelection(this, clipPos(this, typeof line == "number" ? Pos(line, ch || 0) : line), null, options); }), setSelection: docMethodOp(function(anchor, head, options) { setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options); }), extendSelection: docMethodOp(function(head, other, options) { extendSelection(this, clipPos(this, head), other && clipPos(this, other), options); }), extendSelections: docMethodOp(function(heads, options) { extendSelections(this, clipPosArray(this, heads), options); }), extendSelectionsBy: docMethodOp(function(f, options) { var heads = map(this.sel.ranges, f); extendSelections(this, clipPosArray(this, heads), options); }), setSelections: docMethodOp(function(ranges, primary, options) { if (!ranges.length) return; for (var i = 0, out = []; i < ranges.length; i++) out[i] = new Range(clipPos(this, ranges[i].anchor), clipPos(this, ranges[i].head)); if (primary == null) primary = Math.min(ranges.length - 1, this.sel.primIndex); setSelection(this, normalizeSelection(out, primary), options); }), addSelection: docMethodOp(function(anchor, head, options) { var ranges = this.sel.ranges.slice(0); ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor))); setSelection(this, normalizeSelection(ranges, ranges.length - 1), options); }), getSelection: function(lineSep) { var ranges = this.sel.ranges, lines; for (var i = 0; i < ranges.length; i++) { var sel = getBetween(this, ranges[i].from(), ranges[i].to()); lines = lines ? lines.concat(sel) : sel; } if (lineSep === false) return lines; else return lines.join(lineSep || this.lineSeparator()); }, getSelections: function(lineSep) { var parts = [], ranges = this.sel.ranges; for (var i = 0; i < ranges.length; i++) { var sel = getBetween(this, ranges[i].from(), ranges[i].to()); if (lineSep !== false) sel = sel.join(lineSep || this.lineSeparator()); parts[i] = sel; } return parts; }, replaceSelection: function(code, collapse, origin) { var dup = []; for (var i = 0; i < this.sel.ranges.length; i++) dup[i] = code; this.replaceSelections(dup, collapse, origin || "+input"); }, replaceSelections: docMethodOp(function(code, collapse, origin) { var changes = [], sel = this.sel; for (var i = 0; i < sel.ranges.length; i++) { var range = sel.ranges[i]; changes[i] = {from: range.from(), to: range.to(), text: this.splitLines(code[i]), origin: origin}; } var newSel = collapse && collapse != "end" && computeReplacedSel(this, changes, collapse); for (var i = changes.length - 1; i >= 0; i--) makeChange(this, changes[i]); if (newSel) setSelectionReplaceHistory(this, newSel); else if (this.cm) ensureCursorVisible(this.cm); }), undo: docMethodOp(function() {makeChangeFromHistory(this, "undo");}), redo: docMethodOp(function() {makeChangeFromHistory(this, "redo");}), undoSelection: docMethodOp(function() {makeChangeFromHistory(this, "undo", true);}), redoSelection: docMethodOp(function() {makeChangeFromHistory(this, "redo", true);}), setExtending: function(val) {this.extend = val;}, getExtending: function() {return this.extend;}, historySize: function() { var hist = this.history, done = 0, undone = 0; for (var i = 0; i < hist.done.length; i++) if (!hist.done[i].ranges) ++done; for (var i = 0; i < hist.undone.length; i++) if (!hist.undone[i].ranges) ++undone; return {undo: done, redo: undone}; }, clearHistory: function() {this.history = new History(this.history.maxGeneration);}, markClean: function() { this.cleanGeneration = this.changeGeneration(true); }, changeGeneration: function(forceSplit) { if (forceSplit) this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null; return this.history.generation; }, isClean: function (gen) { return this.history.generation == (gen || this.cleanGeneration); }, getHistory: function() { return {done: copyHistoryArray(this.history.done), undone: copyHistoryArray(this.history.undone)}; }, setHistory: function(histData) { var hist = this.history = new History(this.history.maxGeneration); hist.done = copyHistoryArray(histData.done.slice(0), null, true); hist.undone = copyHistoryArray(histData.undone.slice(0), null, true); }, addLineClass: docMethodOp(function(handle, where, cls) { return changeLine(this, handle, where == "gutter" ? "gutter" : "class", function(line) { var prop = where == "text" ? "textClass" : where == "background" ? "bgClass" : where == "gutter" ? "gutterClass" : "wrapClass"; if (!line[prop]) line[prop] = cls; else if (classTest(cls).test(line[prop])) return false; else line[prop] += " " + cls; return true; }); }), removeLineClass: docMethodOp(function(handle, where, cls) { return changeLine(this, handle, where == "gutter" ? "gutter" : "class", function(line) { var prop = where == "text" ? "textClass" : where == "background" ? "bgClass" : where == "gutter" ? "gutterClass" : "wrapClass"; var cur = line[prop]; if (!cur) return false; else if (cls == null) line[prop] = null; else { var found = cur.match(classTest(cls)); if (!found) return false; var end = found.index + found[0].length; line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? "" : " ") + cur.slice(end) || null; } return true; }); }), addLineWidget: docMethodOp(function(handle, node, options) { return addLineWidget(this, handle, node, options); }), removeLineWidget: function(widget) { widget.clear(); }, markText: function(from, to, options) { return markText(this, clipPos(this, from), clipPos(this, to), options, options && options.type || "range"); }, setBookmark: function(pos, options) { var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options), insertLeft: options && options.insertLeft, clearWhenEmpty: false, shared: options && options.shared, handleMouseEvents: options && options.handleMouseEvents}; pos = clipPos(this, pos); return markText(this, pos, pos, realOpts, "bookmark"); }, findMarksAt: function(pos) { pos = clipPos(this, pos); var markers = [], spans = getLine(this, pos.line).markedSpans; if (spans) for (var i = 0; i < spans.length; ++i) { var span = spans[i]; if ((span.from == null || span.from <= pos.ch) && (span.to == null || span.to >= pos.ch)) markers.push(span.marker.parent || span.marker); } return markers; }, findMarks: function(from, to, filter) { from = clipPos(this, from); to = clipPos(this, to); var found = [], lineNo = from.line; this.iter(from.line, to.line + 1, function(line) { var spans = line.markedSpans; if (spans) for (var i = 0; i < spans.length; i++) { var span = spans[i]; if (!(span.to != null && lineNo == from.line && from.ch >= span.to || span.from == null && lineNo != from.line || span.from != null && lineNo == to.line && span.from >= to.ch) && (!filter || filter(span.marker))) found.push(span.marker.parent || span.marker); } ++lineNo; }); return found; }, getAllMarks: function() { var markers = []; this.iter(function(line) { var sps = line.markedSpans; if (sps) for (var i = 0; i < sps.length; ++i) if (sps[i].from != null) markers.push(sps[i].marker); }); return markers; }, posFromIndex: function(off) { var ch, lineNo = this.first, sepSize = this.lineSeparator().length; this.iter(function(line) { var sz = line.text.length + sepSize; if (sz > off) { ch = off; return true; } off -= sz; ++lineNo; }); return clipPos(this, Pos(lineNo, ch)); }, indexFromPos: function (coords) { coords = clipPos(this, coords); var index = coords.ch; if (coords.line < this.first || coords.ch < 0) return 0; var sepSize = this.lineSeparator().length; this.iter(this.first, coords.line, function (line) { index += line.text.length + sepSize; }); return index; }, copy: function(copyHistory) { var doc = new Doc(getLines(this, this.first, this.first + this.size), this.modeOption, this.first, this.lineSep); doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft; doc.sel = this.sel; doc.extend = false; if (copyHistory) { doc.history.undoDepth = this.history.undoDepth; doc.setHistory(this.getHistory()); } return doc; }, linkedDoc: function(options) { if (!options) options = {}; var from = this.first, to = this.first + this.size; if (options.from != null && options.from > from) from = options.from; if (options.to != null && options.to < to) to = options.to; var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep); if (options.sharedHist) copy.history = this.history; (this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist}); copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}]; copySharedMarkers(copy, findSharedMarkers(this)); return copy; }, unlinkDoc: function(other) { if (other instanceof CodeMirror) other = other.doc; if (this.linked) for (var i = 0; i < this.linked.length; ++i) { var link = this.linked[i]; if (link.doc != other) continue; this.linked.splice(i, 1); other.unlinkDoc(this); detachSharedMarkers(findSharedMarkers(this)); break; } // If the histories were shared, split them again if (other.history == this.history) { var splitIds = [other.id]; linkedDocs(other, function(doc) {splitIds.push(doc.id);}, true); other.history = new History(null); other.history.done = copyHistoryArray(this.history.done, splitIds); other.history.undone = copyHistoryArray(this.history.undone, splitIds); } }, iterLinkedDocs: function(f) {linkedDocs(this, f);}, getMode: function() {return this.mode;}, getEditor: function() {return this.cm;}, splitLines: function(str) { if (this.lineSep) return str.split(this.lineSep); return splitLinesAuto(str); }, lineSeparator: function() { return this.lineSep || "\n"; } }); // Public alias. Doc.prototype.eachLine = Doc.prototype.iter; // Set up methods on CodeMirror's prototype to redirect to the editor's document. var dontDelegate = "iter insert remove copy getEditor constructor".split(" "); for (var prop in Doc.prototype) if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0) CodeMirror.prototype[prop] = (function(method) { return function() {return method.apply(this.doc, arguments);}; })(Doc.prototype[prop]); eventMixin(Doc); // Call f for all linked documents. function linkedDocs(doc, f, sharedHistOnly) { function propagate(doc, skip, sharedHist) { if (doc.linked) for (var i = 0; i < doc.linked.length; ++i) { var rel = doc.linked[i]; if (rel.doc == skip) continue; var shared = sharedHist && rel.sharedHist; if (sharedHistOnly && !shared) continue; f(rel.doc, shared); propagate(rel.doc, doc, shared); } } propagate(doc, null, true); } // Attach a document to an editor. function attachDoc(cm, doc) { if (doc.cm) throw new Error("This document is already in use."); cm.doc = doc; doc.cm = cm; estimateLineHeights(cm); loadMode(cm); if (!cm.options.lineWrapping) findMaxLine(cm); cm.options.mode = doc.modeOption; regChange(cm); } // LINE UTILITIES // Find the line object corresponding to the given line number. function getLine(doc, n) { n -= doc.first; if (n < 0 || n >= doc.size) throw new Error("There is no line " + (n + doc.first) + " in the document."); for (var chunk = doc; !chunk.lines;) { for (var i = 0;; ++i) { var child = chunk.children[i], sz = child.chunkSize(); if (n < sz) { chunk = child; break; } n -= sz; } } return chunk.lines[n]; } // Get the part of a document between two positions, as an array of // strings. function getBetween(doc, start, end) { var out = [], n = start.line; doc.iter(start.line, end.line + 1, function(line) { var text = line.text; if (n == end.line) text = text.slice(0, end.ch); if (n == start.line) text = text.slice(start.ch); out.push(text); ++n; }); return out; } // Get the lines between from and to, as array of strings. function getLines(doc, from, to) { var out = []; doc.iter(from, to, function(line) { out.push(line.text); }); return out; } // Update the height of a line, propagating the height change // upwards to parent nodes. function updateLineHeight(line, height) { var diff = height - line.height; if (diff) for (var n = line; n; n = n.parent) n.height += diff; } // Given a line object, find its line number by walking up through // its parent links. function lineNo(line) { if (line.parent == null) return null; var cur = line.parent, no = indexOf(cur.lines, line); for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) { for (var i = 0;; ++i) { if (chunk.children[i] == cur) break; no += chunk.children[i].chunkSize(); } } return no + cur.first; } // Find the line at the given vertical position, using the height // information in the document tree. function lineAtHeight(chunk, h) { var n = chunk.first; outer: do { for (var i = 0; i < chunk.children.length; ++i) { var child = chunk.children[i], ch = child.height; if (h < ch) { chunk = child; continue outer; } h -= ch; n += child.chunkSize(); } return n; } while (!chunk.lines); for (var i = 0; i < chunk.lines.length; ++i) { var line = chunk.lines[i], lh = line.height; if (h < lh) break; h -= lh; } return n + i; } // Find the height above the given line. function heightAtLine(lineObj) { lineObj = visualLine(lineObj); var h = 0, chunk = lineObj.parent; for (var i = 0; i < chunk.lines.length; ++i) { var line = chunk.lines[i]; if (line == lineObj) break; else h += line.height; } for (var p = chunk.parent; p; chunk = p, p = chunk.parent) { for (var i = 0; i < p.children.length; ++i) { var cur = p.children[i]; if (cur == chunk) break; else h += cur.height; } } return h; } // Get the bidi ordering for the given line (and cache it). Returns // false for lines that are fully left-to-right, and an array of // BidiSpan objects otherwise. function getOrder(line) { var order = line.order; if (order == null) order = line.order = bidiOrdering(line.text); return order; } // HISTORY function History(startGen) { // Arrays of change events and selections. Doing something adds an // event to done and clears undo. Undoing moves events from done // to undone, redoing moves them in the other direction. this.done = []; this.undone = []; this.undoDepth = Infinity; // Used to track when changes can be merged into a single undo // event this.lastModTime = this.lastSelTime = 0; this.lastOp = this.lastSelOp = null; this.lastOrigin = this.lastSelOrigin = null; // Used by the isClean() method this.generation = this.maxGeneration = startGen || 1; } // Create a history change event from an updateDoc-style change // object. function historyChangeFromChange(doc, change) { var histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)}; attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); linkedDocs(doc, function(doc) {attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);}, true); return histChange; } // Pop all selection events off the end of a history array. Stop at // a change event. function clearSelectionEvents(array) { while (array.length) { var last = lst(array); if (last.ranges) array.pop(); else break; } } // Find the top change event in the history. Pop off selection // events that are in the way. function lastChangeEvent(hist, force) { if (force) { clearSelectionEvents(hist.done); return lst(hist.done); } else if (hist.done.length && !lst(hist.done).ranges) { return lst(hist.done); } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) { hist.done.pop(); return lst(hist.done); } } // Register a change in the history. Merges changes that are within // a single operation, or are close together with an origin that // allows merging (starting with "+") into a single event. function addChangeToHistory(doc, change, selAfter, opId) { var hist = doc.history; hist.undone.length = 0; var time = +new Date, cur; if ((hist.lastOp == opId || hist.lastOrigin == change.origin && change.origin && ((change.origin.charAt(0) == "+" && doc.cm && hist.lastModTime > time - doc.cm.options.historyEventDelay) || change.origin.charAt(0) == "*")) && (cur = lastChangeEvent(hist, hist.lastOp == opId))) { // Merge this change into the last event var last = lst(cur.changes); if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) { // Optimized case for simple insertion -- don't want to add // new changesets for every character typed last.to = changeEnd(change); } else { // Add new sub-event cur.changes.push(historyChangeFromChange(doc, change)); } } else { // Can not be merged, start a new event. var before = lst(hist.done); if (!before || !before.ranges) pushSelectionToHistory(doc.sel, hist.done); cur = {changes: [historyChangeFromChange(doc, change)], generation: hist.generation}; hist.done.push(cur); while (hist.done.length > hist.undoDepth) { hist.done.shift(); if (!hist.done[0].ranges) hist.done.shift(); } } hist.done.push(selAfter); hist.generation = ++hist.maxGeneration; hist.lastModTime = hist.lastSelTime = time; hist.lastOp = hist.lastSelOp = opId; hist.lastOrigin = hist.lastSelOrigin = change.origin; if (!last) signal(doc, "historyAdded"); } function selectionEventCanBeMerged(doc, origin, prev, sel) { var ch = origin.charAt(0); return ch == "*" || ch == "+" && prev.ranges.length == sel.ranges.length && prev.somethingSelected() == sel.somethingSelected() && new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500); } // Called whenever the selection changes, sets the new selection as // the pending selection in the history, and pushes the old pending // selection into the 'done' array when it was significantly // different (in number of selected ranges, emptiness, or time). function addSelectionToHistory(doc, sel, opId, options) { var hist = doc.history, origin = options && options.origin; // A new event is started when the previous origin does not match // the current, or the origins don't allow matching. Origins // starting with * are always merged, those starting with + are // merged when similar and close together in time. if (opId == hist.lastSelOp || (origin && hist.lastSelOrigin == origin && (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin || selectionEventCanBeMerged(doc, origin, lst(hist.done), sel)))) hist.done[hist.done.length - 1] = sel; else pushSelectionToHistory(sel, hist.done); hist.lastSelTime = +new Date; hist.lastSelOrigin = origin; hist.lastSelOp = opId; if (options && options.clearRedo !== false) clearSelectionEvents(hist.undone); } function pushSelectionToHistory(sel, dest) { var top = lst(dest); if (!(top && top.ranges && top.equals(sel))) dest.push(sel); } // Used to store marked span information in the history. function attachLocalSpans(doc, change, from, to) { var existing = change["spans_" + doc.id], n = 0; doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function(line) { if (line.markedSpans) (existing || (existing = change["spans_" + doc.id] = {}))[n] = line.markedSpans; ++n; }); } // When un/re-doing restores text containing marked spans, those // that have been explicitly cleared should not be restored. function removeClearedSpans(spans) { if (!spans) return null; for (var i = 0, out; i < spans.length; ++i) { if (spans[i].marker.explicitlyCleared) { if (!out) out = spans.slice(0, i); } else if (out) out.push(spans[i]); } return !out ? spans : out.length ? out : null; } // Retrieve and filter the old marked spans stored in a change event. function getOldSpans(doc, change) { var found = change["spans_" + doc.id]; if (!found) return null; for (var i = 0, nw = []; i < change.text.length; ++i) nw.push(removeClearedSpans(found[i])); return nw; } // Used both to provide a JSON-safe object in .getHistory, and, when // detaching a document, to split the history in two function copyHistoryArray(events, newGroup, instantiateSel) { for (var i = 0, copy = []; i < events.length; ++i) { var event = events[i]; if (event.ranges) { copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event); continue; } var changes = event.changes, newChanges = []; copy.push({changes: newChanges}); for (var j = 0; j < changes.length; ++j) { var change = changes[j], m; newChanges.push({from: change.from, to: change.to, text: change.text}); if (newGroup) for (var prop in change) if (m = prop.match(/^spans_(\d+)$/)) { if (indexOf(newGroup, Number(m[1])) > -1) { lst(newChanges)[prop] = change[prop]; delete change[prop]; } } } } return copy; } // Rebasing/resetting history to deal with externally-sourced changes function rebaseHistSelSingle(pos, from, to, diff) { if (to < pos.line) { pos.line += diff; } else if (from < pos.line) { pos.line = from; pos.ch = 0; } } // Tries to rebase an array of history events given a change in the // document. If the change touches the same lines as the event, the // event, and everything 'behind' it, is discarded. If the change is // before the event, the event's positions are updated. Uses a // copy-on-write scheme for the positions, to avoid having to // reallocate them all on every rebase, but also avoid problems with // shared position objects being unsafely updated. function rebaseHistArray(array, from, to, diff) { for (var i = 0; i < array.length; ++i) { var sub = array[i], ok = true; if (sub.ranges) { if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true; } for (var j = 0; j < sub.ranges.length; j++) { rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff); rebaseHistSelSingle(sub.ranges[j].head, from, to, diff); } continue; } for (var j = 0; j < sub.changes.length; ++j) { var cur = sub.changes[j]; if (to < cur.from.line) { cur.from = Pos(cur.from.line + diff, cur.from.ch); cur.to = Pos(cur.to.line + diff, cur.to.ch); } else if (from <= cur.to.line) { ok = false; break; } } if (!ok) { array.splice(0, i + 1); i = 0; } } } function rebaseHist(hist, change) { var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1; rebaseHistArray(hist.done, from, to, diff); rebaseHistArray(hist.undone, from, to, diff); } // EVENT UTILITIES // Due to the fact that we still support jurassic IE versions, some // compatibility wrappers are needed. var e_preventDefault = CodeMirror.e_preventDefault = function(e) { if (e.preventDefault) e.preventDefault(); else e.returnValue = false; }; var e_stopPropagation = CodeMirror.e_stopPropagation = function(e) { if (e.stopPropagation) e.stopPropagation(); else e.cancelBubble = true; }; function e_defaultPrevented(e) { return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false; } var e_stop = CodeMirror.e_stop = function(e) {e_preventDefault(e); e_stopPropagation(e);}; function e_target(e) {return e.target || e.srcElement;} function e_button(e) { var b = e.which; if (b == null) { if (e.button & 1) b = 1; else if (e.button & 2) b = 3; else if (e.button & 4) b = 2; } if (mac && e.ctrlKey && b == 1) b = 3; return b; } // EVENT HANDLING // Lightweight event framework. on/off also work on DOM nodes, // registering native DOM handlers. var on = CodeMirror.on = function(emitter, type, f) { if (emitter.addEventListener) emitter.addEventListener(type, f, false); else if (emitter.attachEvent) emitter.attachEvent("on" + type, f); else { var map = emitter._handlers || (emitter._handlers = {}); var arr = map[type] || (map[type] = []); arr.push(f); } }; var noHandlers = [] function getHandlers(emitter, type, copy) { var arr = emitter._handlers && emitter._handlers[type] if (copy) return arr && arr.length > 0 ? arr.slice() : noHandlers else return arr || noHandlers } var off = CodeMirror.off = function(emitter, type, f) { if (emitter.removeEventListener) emitter.removeEventListener(type, f, false); else if (emitter.detachEvent) emitter.detachEvent("on" + type, f); else { var handlers = getHandlers(emitter, type, false) for (var i = 0; i < handlers.length; ++i) if (handlers[i] == f) { handlers.splice(i, 1); break; } } }; var signal = CodeMirror.signal = function(emitter, type /*, values...*/) { var handlers = getHandlers(emitter, type, true) if (!handlers.length) return; var args = Array.prototype.slice.call(arguments, 2); for (var i = 0; i < handlers.length; ++i) handlers[i].apply(null, args); }; var orphanDelayedCallbacks = null; // Often, we want to signal events at a point where we are in the // middle of some work, but don't want the handler to start calling // other methods on the editor, which might be in an inconsistent // state or simply not expect any other events to happen. // signalLater looks whether there are any handlers, and schedules // them to be executed when the last operation ends, or, if no // operation is active, when a timeout fires. function signalLater(emitter, type /*, values...*/) { var arr = getHandlers(emitter, type, false) if (!arr.length) return; var args = Array.prototype.slice.call(arguments, 2), list; if (operationGroup) { list = operationGroup.delayedCallbacks; } else if (orphanDelayedCallbacks) { list = orphanDelayedCallbacks; } else { list = orphanDelayedCallbacks = []; setTimeout(fireOrphanDelayed, 0); } function bnd(f) {return function(){f.apply(null, args);};}; for (var i = 0; i < arr.length; ++i) list.push(bnd(arr[i])); } function fireOrphanDelayed() { var delayed = orphanDelayedCallbacks; orphanDelayedCallbacks = null; for (var i = 0; i < delayed.length; ++i) delayed[i](); } // The DOM events that CodeMirror handles can be overridden by // registering a (non-DOM) handler on the editor for the event name, // and preventDefault-ing the event in that handler. function signalDOMEvent(cm, e, override) { if (typeof e == "string") e = {type: e, preventDefault: function() { this.defaultPrevented = true; }}; signal(cm, override || e.type, cm, e); return e_defaultPrevented(e) || e.codemirrorIgnore; } function signalCursorActivity(cm) { var arr = cm._handlers && cm._handlers.cursorActivity; if (!arr) return; var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []); for (var i = 0; i < arr.length; ++i) if (indexOf(set, arr[i]) == -1) set.push(arr[i]); } function hasHandler(emitter, type) { return getHandlers(emitter, type).length > 0 } // Add on and off methods to a constructor's prototype, to make // registering events on such objects more convenient. function eventMixin(ctor) { ctor.prototype.on = function(type, f) {on(this, type, f);}; ctor.prototype.off = function(type, f) {off(this, type, f);}; } // MISC UTILITIES // Number of pixels added to scroller and sizer to hide scrollbar var scrollerGap = 30; // Returned or thrown by various protocols to signal 'I'm not // handling this'. var Pass = CodeMirror.Pass = {toString: function(){return "CodeMirror.Pass";}}; // Reused option objects for setSelection & friends var sel_dontScroll = {scroll: false}, sel_mouse = {origin: "*mouse"}, sel_move = {origin: "+move"}; function Delayed() {this.id = null;} Delayed.prototype.set = function(ms, f) { clearTimeout(this.id); this.id = setTimeout(f, ms); }; // Counts the column offset in a string, taking tabs into account. // Used mostly to find indentation. var countColumn = CodeMirror.countColumn = function(string, end, tabSize, startIndex, startValue) { if (end == null) { end = string.search(/[^\s\u00a0]/); if (end == -1) end = string.length; } for (var i = startIndex || 0, n = startValue || 0;;) { var nextTab = string.indexOf("\t", i); if (nextTab < 0 || nextTab >= end) return n + (end - i); n += nextTab - i; n += tabSize - (n % tabSize); i = nextTab + 1; } }; // The inverse of countColumn -- find the offset that corresponds to // a particular column. var findColumn = CodeMirror.findColumn = function(string, goal, tabSize) { for (var pos = 0, col = 0;;) { var nextTab = string.indexOf("\t", pos); if (nextTab == -1) nextTab = string.length; var skipped = nextTab - pos; if (nextTab == string.length || col + skipped >= goal) return pos + Math.min(skipped, goal - col); col += nextTab - pos; col += tabSize - (col % tabSize); pos = nextTab + 1; if (col >= goal) return pos; } } var spaceStrs = [""]; function spaceStr(n) { while (spaceStrs.length <= n) spaceStrs.push(lst(spaceStrs) + " "); return spaceStrs[n]; } function lst(arr) { return arr[arr.length-1]; } var selectInput = function(node) { node.select(); }; if (ios) // Mobile Safari apparently has a bug where select() is broken. selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length; }; else if (ie) // Suppress mysterious IE10 errors selectInput = function(node) { try { node.select(); } catch(_e) {} }; function indexOf(array, elt) { for (var i = 0; i < array.length; ++i) if (array[i] == elt) return i; return -1; } function map(array, f) { var out = []; for (var i = 0; i < array.length; i++) out[i] = f(array[i], i); return out; } function insertSorted(array, value, score) { var pos = 0, priority = score(value) while (pos < array.length && score(array[pos]) <= priority) pos++ array.splice(pos, 0, value) } function nothing() {} function createObj(base, props) { var inst; if (Object.create) { inst = Object.create(base); } else { nothing.prototype = base; inst = new nothing(); } if (props) copyObj(props, inst); return inst; }; function copyObj(obj, target, overwrite) { if (!target) target = {}; for (var prop in obj) if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop))) target[prop] = obj[prop]; return target; } function bind(f) { var args = Array.prototype.slice.call(arguments, 1); return function(){return f.apply(null, args);}; } var nonASCIISingleCaseWordChar = /[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/; var isWordCharBasic = CodeMirror.isWordChar = function(ch) { return /\w/.test(ch) || ch > "\x80" && (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch)); }; function isWordChar(ch, helper) { if (!helper) return isWordCharBasic(ch); if (helper.source.indexOf("\\w") > -1 && isWordCharBasic(ch)) return true; return helper.test(ch); } function isEmpty(obj) { for (var n in obj) if (obj.hasOwnProperty(n) && obj[n]) return false; return true; } // Extending unicode characters. A series of a non-extending char + // any number of extending chars is treated as a single unit as far // as editing and measuring is concerned. This is not fully correct, // since some scripts/fonts/browsers also treat other configurations // of code points as a group. var extendingChars = /[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/; function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch); } // DOM UTILITIES function elt(tag, content, className, style) { var e = document.createElement(tag); if (className) e.className = className; if (style) e.style.cssText = style; if (typeof content == "string") e.appendChild(document.createTextNode(content)); else if (content) for (var i = 0; i < content.length; ++i) e.appendChild(content[i]); return e; } var range; if (document.createRange) range = function(node, start, end, endNode) { var r = document.createRange(); r.setEnd(endNode || node, end); r.setStart(node, start); return r; }; else range = function(node, start, end) { var r = document.body.createTextRange(); try { r.moveToElementText(node.parentNode); } catch(e) { return r; } r.collapse(true); r.moveEnd("character", end); r.moveStart("character", start); return r; }; function removeChildren(e) { for (var count = e.childNodes.length; count > 0; --count) e.removeChild(e.firstChild); return e; } function removeChildrenAndAdd(parent, e) { return removeChildren(parent).appendChild(e); } var contains = CodeMirror.contains = function(parent, child) { if (child.nodeType == 3) // Android browser always returns false when child is a textnode child = child.parentNode; if (parent.contains) return parent.contains(child); do { if (child.nodeType == 11) child = child.host; if (child == parent) return true; } while (child = child.parentNode); }; function activeElt() { var activeElement = document.activeElement; while (activeElement && activeElement.root && activeElement.root.activeElement) activeElement = activeElement.root.activeElement; return activeElement; } // Older versions of IE throws unspecified error when touching // document.activeElement in some cases (during loading, in iframe) if (ie && ie_version < 11) activeElt = function() { try { return document.activeElement; } catch(e) { return document.body; } }; function classTest(cls) { return new RegExp("(^|\\s)" + cls + "(?:$|\\s)\\s*"); } var rmClass = CodeMirror.rmClass = function(node, cls) { var current = node.className; var match = classTest(cls).exec(current); if (match) { var after = current.slice(match.index + match[0].length); node.className = current.slice(0, match.index) + (after ? match[1] + after : ""); } }; var addClass = CodeMirror.addClass = function(node, cls) { var current = node.className; if (!classTest(cls).test(current)) node.className += (current ? " " : "") + cls; }; function joinClasses(a, b) { var as = a.split(" "); for (var i = 0; i < as.length; i++) if (as[i] && !classTest(as[i]).test(b)) b += " " + as[i]; return b; } // WINDOW-WIDE EVENTS // These must be handled carefully, because naively registering a // handler for each editor will cause the editors to never be // garbage collected. function forEachCodeMirror(f) { if (!document.body.getElementsByClassName) return; var byClass = document.body.getElementsByClassName("CodeMirror"); for (var i = 0; i < byClass.length; i++) { var cm = byClass[i].CodeMirror; if (cm) f(cm); } } var globalsRegistered = false; function ensureGlobalHandlers() { if (globalsRegistered) return; registerGlobalHandlers(); globalsRegistered = true; } function registerGlobalHandlers() { // When the window resizes, we need to refresh active editors. var resizeTimer; on(window, "resize", function() { if (resizeTimer == null) resizeTimer = setTimeout(function() { resizeTimer = null; forEachCodeMirror(onResize); }, 100); }); // When the window loses focus, we want to show the editor as blurred on(window, "blur", function() { forEachCodeMirror(onBlur); }); } // FEATURE DETECTION // Detect drag-and-drop var dragAndDrop = function() { // There is *some* kind of drag-and-drop support in IE6-8, but I // couldn't get it to work yet. if (ie && ie_version < 9) return false; var div = elt('div'); return "draggable" in div || "dragDrop" in div; }(); var zwspSupported; function zeroWidthElement(measure) { if (zwspSupported == null) { var test = elt("span", "\u200b"); removeChildrenAndAdd(measure, elt("span", [test, document.createTextNode("x")])); if (measure.firstChild.offsetHeight != 0) zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8); } var node = zwspSupported ? elt("span", "\u200b") : elt("span", "\u00a0", null, "display: inline-block; width: 1px; margin-right: -1px"); node.setAttribute("cm-text", ""); return node; } // Feature-detect IE's crummy client rect reporting for bidi text var badBidiRects; function hasBadBidiRects(measure) { if (badBidiRects != null) return badBidiRects; var txt = removeChildrenAndAdd(measure, document.createTextNode("A\u062eA")); var r0 = range(txt, 0, 1).getBoundingClientRect(); var r1 = range(txt, 1, 2).getBoundingClientRect(); removeChildren(measure); if (!r0 || r0.left == r0.right) return false; // Safari returns null in some cases (#2780) return badBidiRects = (r1.right - r0.right < 3); } // See if "".split is the broken IE version, if so, provide an // alternative way to split lines. var splitLinesAuto = CodeMirror.splitLines = "\n\nb".split(/\n/).length != 3 ? function(string) { var pos = 0, result = [], l = string.length; while (pos <= l) { var nl = string.indexOf("\n", pos); if (nl == -1) nl = string.length; var line = string.slice(pos, string.charAt(nl - 1) == "\r" ? nl - 1 : nl); var rt = line.indexOf("\r"); if (rt != -1) { result.push(line.slice(0, rt)); pos += rt + 1; } else { result.push(line); pos = nl + 1; } } return result; } : function(string){return string.split(/\r\n?|\n/);}; var hasSelection = window.getSelection ? function(te) { try { return te.selectionStart != te.selectionEnd; } catch(e) { return false; } } : function(te) { try {var range = te.ownerDocument.selection.createRange();} catch(e) {} if (!range || range.parentElement() != te) return false; return range.compareEndPoints("StartToEnd", range) != 0; }; var hasCopyEvent = (function() { var e = elt("div"); if ("oncopy" in e) return true; e.setAttribute("oncopy", "return;"); return typeof e.oncopy == "function"; })(); var badZoomedRects = null; function hasBadZoomedRects(measure) { if (badZoomedRects != null) return badZoomedRects; var node = removeChildrenAndAdd(measure, elt("span", "x")); var normal = node.getBoundingClientRect(); var fromRange = range(node, 0, 1).getBoundingClientRect(); return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1; } // KEY NAMES var keyNames = CodeMirror.keyNames = { 3: "Enter", 8: "Backspace", 9: "Tab", 13: "Enter", 16: "Shift", 17: "Ctrl", 18: "Alt", 19: "Pause", 20: "CapsLock", 27: "Esc", 32: "Space", 33: "PageUp", 34: "PageDown", 35: "End", 36: "Home", 37: "Left", 38: "Up", 39: "Right", 40: "Down", 44: "PrintScrn", 45: "Insert", 46: "Delete", 59: ";", 61: "=", 91: "Mod", 92: "Mod", 93: "Mod", 106: "*", 107: "=", 109: "-", 110: ".", 111: "/", 127: "Delete", 173: "-", 186: ";", 187: "=", 188: ",", 189: "-", 190: ".", 191: "/", 192: "`", 219: "[", 220: "\\", 221: "]", 222: "'", 63232: "Up", 63233: "Down", 63234: "Left", 63235: "Right", 63272: "Delete", 63273: "Home", 63275: "End", 63276: "PageUp", 63277: "PageDown", 63302: "Insert" }; (function() { // Number keys for (var i = 0; i < 10; i++) keyNames[i + 48] = keyNames[i + 96] = String(i); // Alphabetic keys for (var i = 65; i <= 90; i++) keyNames[i] = String.fromCharCode(i); // Function keys for (var i = 1; i <= 12; i++) keyNames[i + 111] = keyNames[i + 63235] = "F" + i; })(); // BIDI HELPERS function iterateBidiSections(order, from, to, f) { if (!order) return f(from, to, "ltr"); var found = false; for (var i = 0; i < order.length; ++i) { var part = order[i]; if (part.from < to && part.to > from || from == to && part.to == from) { f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? "rtl" : "ltr"); found = true; } } if (!found) f(from, to, "ltr"); } function bidiLeft(part) { return part.level % 2 ? part.to : part.from; } function bidiRight(part) { return part.level % 2 ? part.from : part.to; } function lineLeft(line) { var order = getOrder(line); return order ? bidiLeft(order[0]) : 0; } function lineRight(line) { var order = getOrder(line); if (!order) return line.text.length; return bidiRight(lst(order)); } function lineStart(cm, lineN) { var line = getLine(cm.doc, lineN); var visual = visualLine(line); if (visual != line) lineN = lineNo(visual); var order = getOrder(visual); var ch = !order ? 0 : order[0].level % 2 ? lineRight(visual) : lineLeft(visual); return Pos(lineN, ch); } function lineEnd(cm, lineN) { var merged, line = getLine(cm.doc, lineN); while (merged = collapsedSpanAtEnd(line)) { line = merged.find(1, true).line; lineN = null; } var order = getOrder(line); var ch = !order ? line.text.length : order[0].level % 2 ? lineLeft(line) : lineRight(line); return Pos(lineN == null ? lineNo(line) : lineN, ch); } function lineStartSmart(cm, pos) { var start = lineStart(cm, pos.line); var line = getLine(cm.doc, start.line); var order = getOrder(line); if (!order || order[0].level == 0) { var firstNonWS = Math.max(0, line.text.search(/\S/)); var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch; return Pos(start.line, inWS ? 0 : firstNonWS); } return start; } function compareBidiLevel(order, a, b) { var linedir = order[0].level; if (a == linedir) return true; if (b == linedir) return false; return a < b; } var bidiOther; function getBidiPartAt(order, pos) { bidiOther = null; for (var i = 0, found; i < order.length; ++i) { var cur = order[i]; if (cur.from < pos && cur.to > pos) return i; if ((cur.from == pos || cur.to == pos)) { if (found == null) { found = i; } else if (compareBidiLevel(order, cur.level, order[found].level)) { if (cur.from != cur.to) bidiOther = found; return i; } else { if (cur.from != cur.to) bidiOther = i; return found; } } } return found; } function moveInLine(line, pos, dir, byUnit) { if (!byUnit) return pos + dir; do pos += dir; while (pos > 0 && isExtendingChar(line.text.charAt(pos))); return pos; } // This is needed in order to move 'visually' through bi-directional // text -- i.e., pressing left should make the cursor go left, even // when in RTL text. The tricky part is the 'jumps', where RTL and // LTR text touch each other. This often requires the cursor offset // to move more than one unit, in order to visually move one unit. function moveVisually(line, start, dir, byUnit) { var bidi = getOrder(line); if (!bidi) return moveLogically(line, start, dir, byUnit); var pos = getBidiPartAt(bidi, start), part = bidi[pos]; var target = moveInLine(line, start, part.level % 2 ? -dir : dir, byUnit); for (;;) { if (target > part.from && target < part.to) return target; if (target == part.from || target == part.to) { if (getBidiPartAt(bidi, target) == pos) return target; part = bidi[pos += dir]; return (dir > 0) == part.level % 2 ? part.to : part.from; } else { part = bidi[pos += dir]; if (!part) return null; if ((dir > 0) == part.level % 2) target = moveInLine(line, part.to, -1, byUnit); else target = moveInLine(line, part.from, 1, byUnit); } } } function moveLogically(line, start, dir, byUnit) { var target = start + dir; if (byUnit) while (target > 0 && isExtendingChar(line.text.charAt(target))) target += dir; return target < 0 || target > line.text.length ? null : target; } // Bidirectional ordering algorithm // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm // that this (partially) implements. // One-char codes used for character types: // L (L): Left-to-Right // R (R): Right-to-Left // r (AL): Right-to-Left Arabic // 1 (EN): European Number // + (ES): European Number Separator // % (ET): European Number Terminator // n (AN): Arabic Number // , (CS): Common Number Separator // m (NSM): Non-Spacing Mark // b (BN): Boundary Neutral // s (B): Paragraph Separator // t (S): Segment Separator // w (WS): Whitespace // N (ON): Other Neutrals // Returns null if characters are ordered as they appear // (left-to-right), or an array of sections ({from, to, level} // objects) in the order in which they occur visually. var bidiOrdering = (function() { // Character types for codepoints 0 to 0xff var lowTypes = "bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN"; // Character types for codepoints 0x600 to 0x6ff var arabicTypes = "rrrrrrrrrrrr,rNNmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmrrrrrrrnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmNmmmm"; function charType(code) { if (code <= 0xf7) return lowTypes.charAt(code); else if (0x590 <= code && code <= 0x5f4) return "R"; else if (0x600 <= code && code <= 0x6ed) return arabicTypes.charAt(code - 0x600); else if (0x6ee <= code && code <= 0x8ac) return "r"; else if (0x2000 <= code && code <= 0x200b) return "w"; else if (code == 0x200c) return "b"; else return "L"; } var bidiRE = /[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/; var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/; // Browsers seem to always treat the boundaries of block elements as being L. var outerType = "L"; function BidiSpan(level, from, to) { this.level = level; this.from = from; this.to = to; } return function(str) { if (!bidiRE.test(str)) return false; var len = str.length, types = []; for (var i = 0, type; i < len; ++i) types.push(type = charType(str.charCodeAt(i))); // W1. Examine each non-spacing mark (NSM) in the level run, and // change the type of the NSM to the type of the previous // character. If the NSM is at the start of the level run, it will // get the type of sor. for (var i = 0, prev = outerType; i < len; ++i) { var type = types[i]; if (type == "m") types[i] = prev; else prev = type; } // W2. Search backwards from each instance of a European number // until the first strong type (R, L, AL, or sor) is found. If an // AL is found, change the type of the European number to Arabic // number. // W3. Change all ALs to R. for (var i = 0, cur = outerType; i < len; ++i) { var type = types[i]; if (type == "1" && cur == "r") types[i] = "n"; else if (isStrong.test(type)) { cur = type; if (type == "r") types[i] = "R"; } } // W4. A single European separator between two European numbers // changes to a European number. A single common separator between // two numbers of the same type changes to that type. for (var i = 1, prev = types[0]; i < len - 1; ++i) { var type = types[i]; if (type == "+" && prev == "1" && types[i+1] == "1") types[i] = "1"; else if (type == "," && prev == types[i+1] && (prev == "1" || prev == "n")) types[i] = prev; prev = type; } // W5. A sequence of European terminators adjacent to European // numbers changes to all European numbers. // W6. Otherwise, separators and terminators change to Other // Neutral. for (var i = 0; i < len; ++i) { var type = types[i]; if (type == ",") types[i] = "N"; else if (type == "%") { for (var end = i + 1; end < len && types[end] == "%"; ++end) {} var replace = (i && types[i-1] == "!") || (end < len && types[end] == "1") ? "1" : "N"; for (var j = i; j < end; ++j) types[j] = replace; i = end - 1; } } // W7. Search backwards from each instance of a European number // until the first strong type (R, L, or sor) is found. If an L is // found, then change the type of the European number to L. for (var i = 0, cur = outerType; i < len; ++i) { var type = types[i]; if (cur == "L" && type == "1") types[i] = "L"; else if (isStrong.test(type)) cur = type; } // N1. A sequence of neutrals takes the direction of the // surrounding strong text if the text on both sides has the same // direction. European and Arabic numbers act as if they were R in // terms of their influence on neutrals. Start-of-level-run (sor) // and end-of-level-run (eor) are used at level run boundaries. // N2. Any remaining neutrals take the embedding direction. for (var i = 0; i < len; ++i) { if (isNeutral.test(types[i])) { for (var end = i + 1; end < len && isNeutral.test(types[end]); ++end) {} var before = (i ? types[i-1] : outerType) == "L"; var after = (end < len ? types[end] : outerType) == "L"; var replace = before || after ? "L" : "R"; for (var j = i; j < end; ++j) types[j] = replace; i = end - 1; } } // Here we depart from the documented algorithm, in order to avoid // building up an actual levels array. Since there are only three // levels (0, 1, 2) in an implementation that doesn't take // explicit embedding into account, we can build up the order on // the fly, without following the level-based algorithm. var order = [], m; for (var i = 0; i < len;) { if (countsAsLeft.test(types[i])) { var start = i; for (++i; i < len && countsAsLeft.test(types[i]); ++i) {} order.push(new BidiSpan(0, start, i)); } else { var pos = i, at = order.length; for (++i; i < len && types[i] != "L"; ++i) {} for (var j = pos; j < i;) { if (countsAsNum.test(types[j])) { if (pos < j) order.splice(at, 0, new BidiSpan(1, pos, j)); var nstart = j; for (++j; j < i && countsAsNum.test(types[j]); ++j) {} order.splice(at, 0, new BidiSpan(2, nstart, j)); pos = j; } else ++j; } if (pos < i) order.splice(at, 0, new BidiSpan(1, pos, i)); } } if (order[0].level == 1 && (m = str.match(/^\s+/))) { order[0].from = m[0].length; order.unshift(new BidiSpan(0, 0, m[0].length)); } if (lst(order).level == 1 && (m = str.match(/\s+$/))) { lst(order).to -= m[0].length; order.push(new BidiSpan(0, len - m[0].length, len)); } if (order[0].level == 2) order.unshift(new BidiSpan(1, order[0].to, order[0].to)); if (order[0].level != lst(order).level) order.push(new BidiSpan(order[0].level, len, len)); return order; }; })(); // THE END CodeMirror.version = "5.18.2"; return CodeMirror; }); plugins/file-manager-advanced/application/library/codemirror/mode/apl/apl.js000064400000011200147176754550023264 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("apl", function() { var builtInOps = { ".": "innerProduct", "\\": "scan", "/": "reduce", "⌿": "reduce1Axis", "⍀": "scan1Axis", "¨": "each", "⍣": "power" }; var builtInFuncs = { "+": ["conjugate", "add"], "−": ["negate", "subtract"], "×": ["signOf", "multiply"], "÷": ["reciprocal", "divide"], "⌈": ["ceiling", "greaterOf"], "⌊": ["floor", "lesserOf"], "∣": ["absolute", "residue"], "⍳": ["indexGenerate", "indexOf"], "?": ["roll", "deal"], "⋆": ["exponentiate", "toThePowerOf"], "⍟": ["naturalLog", "logToTheBase"], "○": ["piTimes", "circularFuncs"], "!": ["factorial", "binomial"], "⌹": ["matrixInverse", "matrixDivide"], "<": [null, "lessThan"], "≤": [null, "lessThanOrEqual"], "=": [null, "equals"], ">": [null, "greaterThan"], "≥": [null, "greaterThanOrEqual"], "≠": [null, "notEqual"], "≡": ["depth", "match"], "≢": [null, "notMatch"], "∈": ["enlist", "membership"], "⍷": [null, "find"], "∪": ["unique", "union"], "∩": [null, "intersection"], "∼": ["not", "without"], "∨": [null, "or"], "∧": [null, "and"], "⍱": [null, "nor"], "⍲": [null, "nand"], "⍴": ["shapeOf", "reshape"], ",": ["ravel", "catenate"], "⍪": [null, "firstAxisCatenate"], "⌽": ["reverse", "rotate"], "⊖": ["axis1Reverse", "axis1Rotate"], "⍉": ["transpose", null], "↑": ["first", "take"], "↓": [null, "drop"], "⊂": ["enclose", "partitionWithAxis"], "⊃": ["diclose", "pick"], "⌷": [null, "index"], "⍋": ["gradeUp", null], "⍒": ["gradeDown", null], "⊤": ["encode", null], "⊥": ["decode", null], "⍕": ["format", "formatByExample"], "⍎": ["execute", null], "⊣": ["stop", "left"], "⊢": ["pass", "right"] }; var isOperator = /[\.\/⌿⍀¨⍣]/; var isNiladic = /⍬/; var isFunction = /[\+−×÷⌈⌊∣⍳\?⋆⍟○!⌹<≤=>≥≠≡≢∈⍷∪∩∼∨∧⍱⍲⍴,⍪⌽⊖⍉↑↓⊂⊃⌷⍋⍒⊤⊥⍕⍎⊣⊢]/; var isArrow = /←/; var isComment = /[⍝#].*$/; var stringEater = function(type) { var prev; prev = false; return function(c) { prev = c; if (c === type) { return prev === "\\"; } return true; }; }; return { startState: function() { return { prev: false, func: false, op: false, string: false, escape: false }; }, token: function(stream, state) { var ch, funcName; if (stream.eatSpace()) { return null; } ch = stream.next(); if (ch === '"' || ch === "'") { stream.eatWhile(stringEater(ch)); stream.next(); state.prev = true; return "string"; } if (/[\[{\(]/.test(ch)) { state.prev = false; return null; } if (/[\]}\)]/.test(ch)) { state.prev = true; return null; } if (isNiladic.test(ch)) { state.prev = false; return "niladic"; } if (/[¯\d]/.test(ch)) { if (state.func) { state.func = false; state.prev = false; } else { state.prev = true; } stream.eatWhile(/[\w\.]/); return "number"; } if (isOperator.test(ch)) { return "operator apl-" + builtInOps[ch]; } if (isArrow.test(ch)) { return "apl-arrow"; } if (isFunction.test(ch)) { funcName = "apl-"; if (builtInFuncs[ch] != null) { if (state.prev) { funcName += builtInFuncs[ch][1]; } else { funcName += builtInFuncs[ch][0]; } } state.func = true; state.prev = false; return "function " + funcName; } if (isComment.test(ch)) { stream.skipToEnd(); return "comment"; } if (ch === "∘" && stream.peek() === ".") { stream.next(); return "function jot-dot"; } stream.eatWhile(/[\w\$_]/); state.prev = true; return "keyword"; } }; }); CodeMirror.defineMIME("text/apl", "apl"); }); plugins/file-manager-advanced/application/library/codemirror/mode/apl/index.html000064400000004203147176754550024154 0ustar00 CodeMirror: APL mode

APL mode

Simple mode that tries to handle APL as well as it can.

It attempts to label functions/operators based upon monadic/dyadic usage (but this is far from fully fleshed out). This means there are meaningful classnames so hover states can have popups etc.

MIME types defined: text/apl (APL code)

plugins/file-manager-advanced/application/library/codemirror/mode/asciiarmor/asciiarmor.js000064400000004512147176754550026226 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; function errorIfNotEmpty(stream) { var nonWS = stream.match(/^\s*\S/); stream.skipToEnd(); return nonWS ? "error" : null; } CodeMirror.defineMode("asciiarmor", function() { return { token: function(stream, state) { var m; if (state.state == "top") { if (stream.sol() && (m = stream.match(/^-----BEGIN (.*)?-----\s*$/))) { state.state = "headers"; state.type = m[1]; return "tag"; } return errorIfNotEmpty(stream); } else if (state.state == "headers") { if (stream.sol() && stream.match(/^\w+:/)) { state.state = "header"; return "atom"; } else { var result = errorIfNotEmpty(stream); if (result) state.state = "body"; return result; } } else if (state.state == "header") { stream.skipToEnd(); state.state = "headers"; return "string"; } else if (state.state == "body") { if (stream.sol() && (m = stream.match(/^-----END (.*)?-----\s*$/))) { if (m[1] != state.type) return "error"; state.state = "end"; return "tag"; } else { if (stream.eatWhile(/[A-Za-z0-9+\/=]/)) { return null; } else { stream.next(); return "error"; } } } else if (state.state == "end") { return errorIfNotEmpty(stream); } }, blankLine: function(state) { if (state.state == "headers") state.state = "body"; }, startState: function() { return {state: "top", type: null}; } }; }); CodeMirror.defineMIME("application/pgp", "asciiarmor"); CodeMirror.defineMIME("application/pgp-keys", "asciiarmor"); CodeMirror.defineMIME("application/pgp-signature", "asciiarmor"); }); plugins/file-manager-advanced/application/library/codemirror/mode/asciiarmor/index.html000064400000002411147176754550025530 0ustar00 CodeMirror: ASCII Armor (PGP) mode

ASCII Armor (PGP) mode

MIME types defined: application/pgp, application/pgp-keys, application/pgp-signature

plugins/file-manager-advanced/application/library/codemirror/mode/asn.1/asn.1.js000064400000017067147176754550023615 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("asn.1", function(config, parserConfig) { var indentUnit = config.indentUnit, keywords = parserConfig.keywords || {}, cmipVerbs = parserConfig.cmipVerbs || {}, compareTypes = parserConfig.compareTypes || {}, status = parserConfig.status || {}, tags = parserConfig.tags || {}, storage = parserConfig.storage || {}, modifier = parserConfig.modifier || {}, accessTypes = parserConfig.accessTypes|| {}, multiLineStrings = parserConfig.multiLineStrings, indentStatements = parserConfig.indentStatements !== false; var isOperatorChar = /[\|\^]/; var curPunc; function tokenBase(stream, state) { var ch = stream.next(); if (ch == '"' || ch == "'") { state.tokenize = tokenString(ch); return state.tokenize(stream, state); } if (/[\[\]\(\){}:=,;]/.test(ch)) { curPunc = ch; return "punctuation"; } if (ch == "-"){ if (stream.eat("-")) { stream.skipToEnd(); return "comment"; } } if (/\d/.test(ch)) { stream.eatWhile(/[\w\.]/); return "number"; } if (isOperatorChar.test(ch)) { stream.eatWhile(isOperatorChar); return "operator"; } stream.eatWhile(/[\w\-]/); var cur = stream.current(); if (keywords.propertyIsEnumerable(cur)) return "keyword"; if (cmipVerbs.propertyIsEnumerable(cur)) return "variable cmipVerbs"; if (compareTypes.propertyIsEnumerable(cur)) return "atom compareTypes"; if (status.propertyIsEnumerable(cur)) return "comment status"; if (tags.propertyIsEnumerable(cur)) return "variable-3 tags"; if (storage.propertyIsEnumerable(cur)) return "builtin storage"; if (modifier.propertyIsEnumerable(cur)) return "string-2 modifier"; if (accessTypes.propertyIsEnumerable(cur)) return "atom accessTypes"; return "variable"; } function tokenString(quote) { return function(stream, state) { var escaped = false, next, end = false; while ((next = stream.next()) != null) { if (next == quote && !escaped){ var afterNext = stream.peek(); //look if the character if the quote is like the B in '10100010'B if (afterNext){ afterNext = afterNext.toLowerCase(); if(afterNext == "b" || afterNext == "h" || afterNext == "o") stream.next(); } end = true; break; } escaped = !escaped && next == "\\"; } if (end || !(escaped || multiLineStrings)) state.tokenize = null; return "string"; }; } function Context(indented, column, type, align, prev) { this.indented = indented; this.column = column; this.type = type; this.align = align; this.prev = prev; } function pushContext(state, col, type) { var indent = state.indented; if (state.context && state.context.type == "statement") indent = state.context.indented; return state.context = new Context(indent, col, type, null, state.context); } function popContext(state) { var t = state.context.type; if (t == ")" || t == "]" || t == "}") state.indented = state.context.indented; return state.context = state.context.prev; } //Interface return { startState: function(basecolumn) { return { tokenize: null, context: new Context((basecolumn || 0) - indentUnit, 0, "top", false), indented: 0, startOfLine: true }; }, token: function(stream, state) { var ctx = state.context; if (stream.sol()) { if (ctx.align == null) ctx.align = false; state.indented = stream.indentation(); state.startOfLine = true; } if (stream.eatSpace()) return null; curPunc = null; var style = (state.tokenize || tokenBase)(stream, state); if (style == "comment") return style; if (ctx.align == null) ctx.align = true; if ((curPunc == ";" || curPunc == ":" || curPunc == ",") && ctx.type == "statement"){ popContext(state); } else if (curPunc == "{") pushContext(state, stream.column(), "}"); else if (curPunc == "[") pushContext(state, stream.column(), "]"); else if (curPunc == "(") pushContext(state, stream.column(), ")"); else if (curPunc == "}") { while (ctx.type == "statement") ctx = popContext(state); if (ctx.type == "}") ctx = popContext(state); while (ctx.type == "statement") ctx = popContext(state); } else if (curPunc == ctx.type) popContext(state); else if (indentStatements && (((ctx.type == "}" || ctx.type == "top") && curPunc != ';') || (ctx.type == "statement" && curPunc == "newstatement"))) pushContext(state, stream.column(), "statement"); state.startOfLine = false; return style; }, electricChars: "{}", lineComment: "--", fold: "brace" }; }); function words(str) { var obj = {}, words = str.split(" "); for (var i = 0; i < words.length; ++i) obj[words[i]] = true; return obj; } CodeMirror.defineMIME("text/x-ttcn-asn", { name: "asn.1", keywords: words("DEFINITIONS OBJECTS IF DERIVED INFORMATION ACTION" + " REPLY ANY NAMED CHARACTERIZED BEHAVIOUR REGISTERED" + " WITH AS IDENTIFIED CONSTRAINED BY PRESENT BEGIN" + " IMPORTS FROM UNITS SYNTAX MIN-ACCESS MAX-ACCESS" + " MINACCESS MAXACCESS REVISION STATUS DESCRIPTION" + " SEQUENCE SET COMPONENTS OF CHOICE DistinguishedName" + " ENUMERATED SIZE MODULE END INDEX AUGMENTS EXTENSIBILITY" + " IMPLIED EXPORTS"), cmipVerbs: words("ACTIONS ADD GET NOTIFICATIONS REPLACE REMOVE"), compareTypes: words("OPTIONAL DEFAULT MANAGED MODULE-TYPE MODULE_IDENTITY" + " MODULE-COMPLIANCE OBJECT-TYPE OBJECT-IDENTITY" + " OBJECT-COMPLIANCE MODE CONFIRMED CONDITIONAL" + " SUBORDINATE SUPERIOR CLASS TRUE FALSE NULL" + " TEXTUAL-CONVENTION"), status: words("current deprecated mandatory obsolete"), tags: words("APPLICATION AUTOMATIC EXPLICIT IMPLICIT PRIVATE TAGS" + " UNIVERSAL"), storage: words("BOOLEAN INTEGER OBJECT IDENTIFIER BIT OCTET STRING" + " UTCTime InterfaceIndex IANAifType CMIP-Attribute" + " REAL PACKAGE PACKAGES IpAddress PhysAddress" + " NetworkAddress BITS BMPString TimeStamp TimeTicks" + " TruthValue RowStatus DisplayString GeneralString" + " GraphicString IA5String NumericString" + " PrintableString SnmpAdminAtring TeletexString" + " UTF8String VideotexString VisibleString StringStore" + " ISO646String T61String UniversalString Unsigned32" + " Integer32 Gauge Gauge32 Counter Counter32 Counter64"), modifier: words("ATTRIBUTE ATTRIBUTES MANDATORY-GROUP MANDATORY-GROUPS" + " GROUP GROUPS ELEMENTS EQUALITY ORDERING SUBSTRINGS" + " DEFINED"), accessTypes: words("not-accessible accessible-for-notify read-only" + " read-create read-write"), multiLineStrings: true }); }); plugins/file-manager-advanced/application/library/codemirror/mode/asn.1/index.html000064400000004256147176754550024330 0ustar00 CodeMirror: ASN.1 mode

ASN.1 example


Language: Abstract Syntax Notation One (ASN.1)

MIME types defined: text/x-ttcn-asn


The development of this mode has been sponsored by Ericsson .

Coded by Asmelash Tsegay Gebretsadkan

plugins/file-manager-advanced/application/library/codemirror/mode/asterisk/asterisk.js000064400000016415147176754550025423 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE /* * ===================================================================================== * * Filename: mode/asterisk/asterisk.js * * Description: CodeMirror mode for Asterisk dialplan * * Created: 05/17/2012 09:20:25 PM * Revision: none * * Author: Stas Kobzar (stas@modulis.ca), * Company: Modulis.ca Inc. * * ===================================================================================== */ (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("asterisk", function() { var atoms = ["exten", "same", "include","ignorepat","switch"], dpcmd = ["#include","#exec"], apps = [ "addqueuemember","adsiprog","aelsub","agentlogin","agentmonitoroutgoing","agi", "alarmreceiver","amd","answer","authenticate","background","backgrounddetect", "bridge","busy","callcompletioncancel","callcompletionrequest","celgenuserevent", "changemonitor","chanisavail","channelredirect","chanspy","clearhash","confbridge", "congestion","continuewhile","controlplayback","dahdiacceptr2call","dahdibarge", "dahdiras","dahdiscan","dahdisendcallreroutingfacility","dahdisendkeypadfacility", "datetime","dbdel","dbdeltree","deadagi","dial","dictate","directory","disa", "dumpchan","eagi","echo","endwhile","exec","execif","execiftime","exitwhile","extenspy", "externalivr","festival","flash","followme","forkcdr","getcpeid","gosub","gosubif", "goto","gotoif","gotoiftime","hangup","iax2provision","ices","importvar","incomplete", "ivrdemo","jabberjoin","jabberleave","jabbersend","jabbersendgroup","jabberstatus", "jack","log","macro","macroexclusive","macroexit","macroif","mailboxexists","meetme", "meetmeadmin","meetmechanneladmin","meetmecount","milliwatt","minivmaccmess","minivmdelete", "minivmgreet","minivmmwi","minivmnotify","minivmrecord","mixmonitor","monitor","morsecode", "mp3player","mset","musiconhold","nbscat","nocdr","noop","odbc","odbc","odbcfinish", "originate","ospauth","ospfinish","osplookup","ospnext","page","park","parkandannounce", "parkedcall","pausemonitor","pausequeuemember","pickup","pickupchan","playback","playtones", "privacymanager","proceeding","progress","queue","queuelog","raiseexception","read","readexten", "readfile","receivefax","receivefax","receivefax","record","removequeuemember", "resetcdr","retrydial","return","ringing","sayalpha","saycountedadj","saycountednoun", "saycountpl","saydigits","saynumber","sayphonetic","sayunixtime","senddtmf","sendfax", "sendfax","sendfax","sendimage","sendtext","sendurl","set","setamaflags", "setcallerpres","setmusiconhold","sipaddheader","sipdtmfmode","sipremoveheader","skel", "slastation","slatrunk","sms","softhangup","speechactivategrammar","speechbackground", "speechcreate","speechdeactivategrammar","speechdestroy","speechloadgrammar","speechprocessingsound", "speechstart","speechunloadgrammar","stackpop","startmusiconhold","stopmixmonitor","stopmonitor", "stopmusiconhold","stopplaytones","system","testclient","testserver","transfer","tryexec", "trysystem","unpausemonitor","unpausequeuemember","userevent","verbose","vmauthenticate", "vmsayname","voicemail","voicemailmain","wait","waitexten","waitfornoise","waitforring", "waitforsilence","waitmusiconhold","waituntil","while","zapateller" ]; function basicToken(stream,state){ var cur = ''; var ch = stream.next(); // comment if(ch == ";") { stream.skipToEnd(); return "comment"; } // context if(ch == '[') { stream.skipTo(']'); stream.eat(']'); return "header"; } // string if(ch == '"') { stream.skipTo('"'); return "string"; } if(ch == "'") { stream.skipTo("'"); return "string-2"; } // dialplan commands if(ch == '#') { stream.eatWhile(/\w/); cur = stream.current(); if(dpcmd.indexOf(cur) !== -1) { stream.skipToEnd(); return "strong"; } } // application args if(ch == '$'){ var ch1 = stream.peek(); if(ch1 == '{'){ stream.skipTo('}'); stream.eat('}'); return "variable-3"; } } // extension stream.eatWhile(/\w/); cur = stream.current(); if(atoms.indexOf(cur) !== -1) { state.extenStart = true; switch(cur) { case 'same': state.extenSame = true; break; case 'include': case 'switch': case 'ignorepat': state.extenInclude = true;break; default:break; } return "atom"; } } return { startState: function() { return { extenStart: false, extenSame: false, extenInclude: false, extenExten: false, extenPriority: false, extenApplication: false }; }, token: function(stream, state) { var cur = ''; if(stream.eatSpace()) return null; // extension started if(state.extenStart){ stream.eatWhile(/[^\s]/); cur = stream.current(); if(/^=>?$/.test(cur)){ state.extenExten = true; state.extenStart = false; return "strong"; } else { state.extenStart = false; stream.skipToEnd(); return "error"; } } else if(state.extenExten) { // set exten and priority state.extenExten = false; state.extenPriority = true; stream.eatWhile(/[^,]/); if(state.extenInclude) { stream.skipToEnd(); state.extenPriority = false; state.extenInclude = false; } if(state.extenSame) { state.extenPriority = false; state.extenSame = false; state.extenApplication = true; } return "tag"; } else if(state.extenPriority) { state.extenPriority = false; state.extenApplication = true; stream.next(); // get comma if(state.extenSame) return null; stream.eatWhile(/[^,]/); return "number"; } else if(state.extenApplication) { stream.eatWhile(/,/); cur = stream.current(); if(cur === ',') return null; stream.eatWhile(/\w/); cur = stream.current().toLowerCase(); state.extenApplication = false; if(apps.indexOf(cur) !== -1){ return "def strong"; } } else{ return basicToken(stream,state); } return null; } }; }); CodeMirror.defineMIME("text/x-asterisk", "asterisk"); }); plugins/file-manager-advanced/application/library/codemirror/mode/asterisk/index.html000064400000010757147176754550025240 0ustar00 CodeMirror: Asterisk dialplan mode

Asterisk dialplan mode

MIME types defined: text/x-asterisk.

plugins/file-manager-advanced/application/library/codemirror/mode/brainfuck/brainfuck.js000064400000004176147176754550025662 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE // Brainfuck mode created by Michael Kaminsky https://github.com/mkaminsky11 (function(mod) { if (typeof exports == "object" && typeof module == "object") mod(require("../../lib/codemirror")) else if (typeof define == "function" && define.amd) define(["../../lib/codemirror"], mod) else mod(CodeMirror) })(function(CodeMirror) { "use strict" var reserve = "><+-.,[]".split(""); /* comments can be either: placed behind lines +++ this is a comment where reserved characters cannot be used or in a loop [ this is ok to use [ ] and stuff ] or preceded by # */ CodeMirror.defineMode("brainfuck", function() { return { startState: function() { return { commentLine: false, left: 0, right: 0, commentLoop: false } }, token: function(stream, state) { if (stream.eatSpace()) return null if(stream.sol()){ state.commentLine = false; } var ch = stream.next().toString(); if(reserve.indexOf(ch) !== -1){ if(state.commentLine === true){ if(stream.eol()){ state.commentLine = false; } return "comment"; } if(ch === "]" || ch === "["){ if(ch === "["){ state.left++; } else{ state.right++; } return "bracket"; } else if(ch === "+" || ch === "-"){ return "keyword"; } else if(ch === "<" || ch === ">"){ return "atom"; } else if(ch === "." || ch === ","){ return "def"; } } else{ state.commentLine = true; if(stream.eol()){ state.commentLine = false; } return "comment"; } if(stream.eol()){ state.commentLine = false; } } }; }); CodeMirror.defineMIME("text/x-brainfuck","brainfuck") }); plugins/file-manager-advanced/application/library/codemirror/mode/brainfuck/index.html000064400000006412147176754550025350 0ustar00 CodeMirror: Brainfuck mode

Brainfuck mode

A mode for Brainfuck

MIME types defined: text/x-brainfuck

plugins/file-manager-advanced/application/library/codemirror/mode/clike/clike.js000064400000074016147176754550024130 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; function Context(indented, column, type, info, align, prev) { this.indented = indented; this.column = column; this.type = type; this.info = info; this.align = align; this.prev = prev; } function pushContext(state, col, type, info) { var indent = state.indented; if (state.context && state.context.type != "statement" && type != "statement") indent = state.context.indented; return state.context = new Context(indent, col, type, info, null, state.context); } function popContext(state) { var t = state.context.type; if (t == ")" || t == "]" || t == "}") state.indented = state.context.indented; return state.context = state.context.prev; } function typeBefore(stream, state, pos) { if (state.prevToken == "variable" || state.prevToken == "variable-3") return true; if (/\S(?:[^- ]>|[*\]])\s*$|\*$/.test(stream.string.slice(0, pos))) return true; if (state.typeAtEndOfLine && stream.column() == stream.indentation()) return true; } function isTopScope(context) { for (;;) { if (!context || context.type == "top") return true; if (context.type == "}" && context.prev.info != "namespace") return false; context = context.prev; } } CodeMirror.defineMode("clike", function(config, parserConfig) { var indentUnit = config.indentUnit, statementIndentUnit = parserConfig.statementIndentUnit || indentUnit, dontAlignCalls = parserConfig.dontAlignCalls, keywords = parserConfig.keywords || {}, types = parserConfig.types || {}, builtin = parserConfig.builtin || {}, blockKeywords = parserConfig.blockKeywords || {}, defKeywords = parserConfig.defKeywords || {}, atoms = parserConfig.atoms || {}, hooks = parserConfig.hooks || {}, multiLineStrings = parserConfig.multiLineStrings, indentStatements = parserConfig.indentStatements !== false, indentSwitch = parserConfig.indentSwitch !== false, namespaceSeparator = parserConfig.namespaceSeparator, isPunctuationChar = parserConfig.isPunctuationChar || /[\[\]{}\(\),;\:\.]/, numberStart = parserConfig.numberStart || /[\d\.]/, number = parserConfig.number || /^(?:0x[a-f\d]+|0b[01]+|(?:\d+\.?\d*|\.\d+)(?:e[-+]?\d+)?)(u|ll?|l|f)?/i, isOperatorChar = parserConfig.isOperatorChar || /[+\-*&%=<>!?|\/]/, endStatement = parserConfig.endStatement || /^[;:,]$/; var curPunc, isDefKeyword; function tokenBase(stream, state) { var ch = stream.next(); if (hooks[ch]) { var result = hooks[ch](stream, state); if (result !== false) return result; } if (ch == '"' || ch == "'") { state.tokenize = tokenString(ch); return state.tokenize(stream, state); } if (isPunctuationChar.test(ch)) { curPunc = ch; return null; } if (numberStart.test(ch)) { stream.backUp(1) if (stream.match(number)) return "number" stream.next() } if (ch == "/") { if (stream.eat("*")) { state.tokenize = tokenComment; return tokenComment(stream, state); } if (stream.eat("/")) { stream.skipToEnd(); return "comment"; } } if (isOperatorChar.test(ch)) { while (!stream.match(/^\/[\/*]/, false) && stream.eat(isOperatorChar)) {} return "operator"; } stream.eatWhile(/[\w\$_\xa1-\uffff]/); if (namespaceSeparator) while (stream.match(namespaceSeparator)) stream.eatWhile(/[\w\$_\xa1-\uffff]/); var cur = stream.current(); if (contains(keywords, cur)) { if (contains(blockKeywords, cur)) curPunc = "newstatement"; if (contains(defKeywords, cur)) isDefKeyword = true; return "keyword"; } if (contains(types, cur)) return "variable-3"; if (contains(builtin, cur)) { if (contains(blockKeywords, cur)) curPunc = "newstatement"; return "builtin"; } if (contains(atoms, cur)) return "atom"; return "variable"; } function tokenString(quote) { return function(stream, state) { var escaped = false, next, end = false; while ((next = stream.next()) != null) { if (next == quote && !escaped) {end = true; break;} escaped = !escaped && next == "\\"; } if (end || !(escaped || multiLineStrings)) state.tokenize = null; return "string"; }; } function tokenComment(stream, state) { var maybeEnd = false, ch; while (ch = stream.next()) { if (ch == "/" && maybeEnd) { state.tokenize = null; break; } maybeEnd = (ch == "*"); } return "comment"; } function maybeEOL(stream, state) { if (parserConfig.typeFirstDefinitions && stream.eol() && isTopScope(state.context)) state.typeAtEndOfLine = typeBefore(stream, state, stream.pos) } // Interface return { startState: function(basecolumn) { return { tokenize: null, context: new Context((basecolumn || 0) - indentUnit, 0, "top", null, false), indented: 0, startOfLine: true, prevToken: null }; }, token: function(stream, state) { var ctx = state.context; if (stream.sol()) { if (ctx.align == null) ctx.align = false; state.indented = stream.indentation(); state.startOfLine = true; } if (stream.eatSpace()) { maybeEOL(stream, state); return null; } curPunc = isDefKeyword = null; var style = (state.tokenize || tokenBase)(stream, state); if (style == "comment" || style == "meta") return style; if (ctx.align == null) ctx.align = true; if (endStatement.test(curPunc)) while (state.context.type == "statement") popContext(state); else if (curPunc == "{") pushContext(state, stream.column(), "}"); else if (curPunc == "[") pushContext(state, stream.column(), "]"); else if (curPunc == "(") pushContext(state, stream.column(), ")"); else if (curPunc == "}") { while (ctx.type == "statement") ctx = popContext(state); if (ctx.type == "}") ctx = popContext(state); while (ctx.type == "statement") ctx = popContext(state); } else if (curPunc == ctx.type) popContext(state); else if (indentStatements && (((ctx.type == "}" || ctx.type == "top") && curPunc != ";") || (ctx.type == "statement" && curPunc == "newstatement"))) { pushContext(state, stream.column(), "statement", stream.current()); } if (style == "variable" && ((state.prevToken == "def" || (parserConfig.typeFirstDefinitions && typeBefore(stream, state, stream.start) && isTopScope(state.context) && stream.match(/^\s*\(/, false))))) style = "def"; if (hooks.token) { var result = hooks.token(stream, state, style); if (result !== undefined) style = result; } if (style == "def" && parserConfig.styleDefs === false) style = "variable"; state.startOfLine = false; state.prevToken = isDefKeyword ? "def" : style || curPunc; maybeEOL(stream, state); return style; }, indent: function(state, textAfter) { if (state.tokenize != tokenBase && state.tokenize != null || state.typeAtEndOfLine) return CodeMirror.Pass; var ctx = state.context, firstChar = textAfter && textAfter.charAt(0); if (ctx.type == "statement" && firstChar == "}") ctx = ctx.prev; if (parserConfig.dontIndentStatements) while (ctx.type == "statement" && parserConfig.dontIndentStatements.test(ctx.info)) ctx = ctx.prev if (hooks.indent) { var hook = hooks.indent(state, ctx, textAfter); if (typeof hook == "number") return hook } var closing = firstChar == ctx.type; var switchBlock = ctx.prev && ctx.prev.info == "switch"; if (parserConfig.allmanIndentation && /[{(]/.test(firstChar)) { while (ctx.type != "top" && ctx.type != "}") ctx = ctx.prev return ctx.indented } if (ctx.type == "statement") return ctx.indented + (firstChar == "{" ? 0 : statementIndentUnit); if (ctx.align && (!dontAlignCalls || ctx.type != ")")) return ctx.column + (closing ? 0 : 1); if (ctx.type == ")" && !closing) return ctx.indented + statementIndentUnit; return ctx.indented + (closing ? 0 : indentUnit) + (!closing && switchBlock && !/^(?:case|default)\b/.test(textAfter) ? indentUnit : 0); }, electricInput: indentSwitch ? /^\s*(?:case .*?:|default:|\{\}?|\})$/ : /^\s*[{}]$/, blockCommentStart: "/*", blockCommentEnd: "*/", lineComment: "//", fold: "brace" }; }); function words(str) { var obj = {}, words = str.split(" "); for (var i = 0; i < words.length; ++i) obj[words[i]] = true; return obj; } function contains(words, word) { if (typeof words === "function") { return words(word); } else { return words.propertyIsEnumerable(word); } } var cKeywords = "auto if break case register continue return default do sizeof " + "static else struct switch extern typedef union for goto while enum const volatile"; var cTypes = "int long char short double float unsigned signed void size_t ptrdiff_t"; function cppHook(stream, state) { if (!state.startOfLine) return false for (var ch, next = null; ch = stream.peek();) { if (ch == "\\" && stream.match(/^.$/)) { next = cppHook break } else if (ch == "/" && stream.match(/^\/[\/\*]/, false)) { break } stream.next() } state.tokenize = next return "meta" } function pointerHook(_stream, state) { if (state.prevToken == "variable-3") return "variable-3"; return false; } function cpp14Literal(stream) { stream.eatWhile(/[\w\.']/); return "number"; } function cpp11StringHook(stream, state) { stream.backUp(1); // Raw strings. if (stream.match(/(R|u8R|uR|UR|LR)/)) { var match = stream.match(/"([^\s\\()]{0,16})\(/); if (!match) { return false; } state.cpp11RawStringDelim = match[1]; state.tokenize = tokenRawString; return tokenRawString(stream, state); } // Unicode strings/chars. if (stream.match(/(u8|u|U|L)/)) { if (stream.match(/["']/, /* eat */ false)) { return "string"; } return false; } // Ignore this hook. stream.next(); return false; } function cppLooksLikeConstructor(word) { var lastTwo = /(\w+)::(\w+)$/.exec(word); return lastTwo && lastTwo[1] == lastTwo[2]; } // C#-style strings where "" escapes a quote. function tokenAtString(stream, state) { var next; while ((next = stream.next()) != null) { if (next == '"' && !stream.eat('"')) { state.tokenize = null; break; } } return "string"; } // C++11 raw string literal is "( anything )", where // can be a string up to 16 characters long. function tokenRawString(stream, state) { // Escape characters that have special regex meanings. var delim = state.cpp11RawStringDelim.replace(/[^\w\s]/g, '\\$&'); var match = stream.match(new RegExp(".*?\\)" + delim + '"')); if (match) state.tokenize = null; else stream.skipToEnd(); return "string"; } function def(mimes, mode) { if (typeof mimes == "string") mimes = [mimes]; var words = []; function add(obj) { if (obj) for (var prop in obj) if (obj.hasOwnProperty(prop)) words.push(prop); } add(mode.keywords); add(mode.types); add(mode.builtin); add(mode.atoms); if (words.length) { mode.helperType = mimes[0]; CodeMirror.registerHelper("hintWords", mimes[0], words); } for (var i = 0; i < mimes.length; ++i) CodeMirror.defineMIME(mimes[i], mode); } def(["text/x-csrc", "text/x-c", "text/x-chdr"], { name: "clike", keywords: words(cKeywords), types: words(cTypes + " bool _Complex _Bool float_t double_t intptr_t intmax_t " + "int8_t int16_t int32_t int64_t uintptr_t uintmax_t uint8_t uint16_t " + "uint32_t uint64_t"), blockKeywords: words("case do else for if switch while struct"), defKeywords: words("struct"), typeFirstDefinitions: true, atoms: words("null true false"), hooks: {"#": cppHook, "*": pointerHook}, modeProps: {fold: ["brace", "include"]} }); def(["text/x-c++src", "text/x-c++hdr"], { name: "clike", keywords: words(cKeywords + " asm dynamic_cast namespace reinterpret_cast try explicit new " + "static_cast typeid catch operator template typename class friend private " + "this using const_cast inline public throw virtual delete mutable protected " + "alignas alignof constexpr decltype nullptr noexcept thread_local final " + "static_assert override"), types: words(cTypes + " bool wchar_t"), blockKeywords: words("catch class do else finally for if struct switch try while"), defKeywords: words("class namespace struct enum union"), typeFirstDefinitions: true, atoms: words("true false null"), dontIndentStatements: /^template$/, hooks: { "#": cppHook, "*": pointerHook, "u": cpp11StringHook, "U": cpp11StringHook, "L": cpp11StringHook, "R": cpp11StringHook, "0": cpp14Literal, "1": cpp14Literal, "2": cpp14Literal, "3": cpp14Literal, "4": cpp14Literal, "5": cpp14Literal, "6": cpp14Literal, "7": cpp14Literal, "8": cpp14Literal, "9": cpp14Literal, token: function(stream, state, style) { if (style == "variable" && stream.peek() == "(" && (state.prevToken == ";" || state.prevToken == null || state.prevToken == "}") && cppLooksLikeConstructor(stream.current())) return "def"; } }, namespaceSeparator: "::", modeProps: {fold: ["brace", "include"]} }); def("text/x-java", { name: "clike", keywords: words("abstract assert break case catch class const continue default " + "do else enum extends final finally float for goto if implements import " + "instanceof interface native new package private protected public " + "return static strictfp super switch synchronized this throw throws transient " + "try volatile while"), types: words("byte short int long float double boolean char void Boolean Byte Character Double Float " + "Integer Long Number Object Short String StringBuffer StringBuilder Void"), blockKeywords: words("catch class do else finally for if switch try while"), defKeywords: words("class interface package enum"), typeFirstDefinitions: true, atoms: words("true false null"), endStatement: /^[;:]$/, number: /^(?:0x[a-f\d_]+|0b[01_]+|(?:[\d_]+\.?\d*|\.\d+)(?:e[-+]?[\d_]+)?)(u|ll?|l|f)?/i, hooks: { "@": function(stream) { stream.eatWhile(/[\w\$_]/); return "meta"; } }, modeProps: {fold: ["brace", "import"]} }); def("text/x-csharp", { name: "clike", keywords: words("abstract as async await base break case catch checked class const continue" + " default delegate do else enum event explicit extern finally fixed for" + " foreach goto if implicit in interface internal is lock namespace new" + " operator out override params private protected public readonly ref return sealed" + " sizeof stackalloc static struct switch this throw try typeof unchecked" + " unsafe using virtual void volatile while add alias ascending descending dynamic from get" + " global group into join let orderby partial remove select set value var yield"), types: words("Action Boolean Byte Char DateTime DateTimeOffset Decimal Double Func" + " Guid Int16 Int32 Int64 Object SByte Single String Task TimeSpan UInt16 UInt32" + " UInt64 bool byte char decimal double short int long object" + " sbyte float string ushort uint ulong"), blockKeywords: words("catch class do else finally for foreach if struct switch try while"), defKeywords: words("class interface namespace struct var"), typeFirstDefinitions: true, atoms: words("true false null"), hooks: { "@": function(stream, state) { if (stream.eat('"')) { state.tokenize = tokenAtString; return tokenAtString(stream, state); } stream.eatWhile(/[\w\$_]/); return "meta"; } } }); function tokenTripleString(stream, state) { var escaped = false; while (!stream.eol()) { if (!escaped && stream.match('"""')) { state.tokenize = null; break; } escaped = stream.next() == "\\" && !escaped; } return "string"; } def("text/x-scala", { name: "clike", keywords: words( /* scala */ "abstract case catch class def do else extends final finally for forSome if " + "implicit import lazy match new null object override package private protected return " + "sealed super this throw trait try type val var while with yield _ : = => <- <: " + "<% >: # @ " + /* package scala */ "assert assume require print println printf readLine readBoolean readByte readShort " + "readChar readInt readLong readFloat readDouble " + ":: #:: " ), types: words( "AnyVal App Application Array BufferedIterator BigDecimal BigInt Char Console Either " + "Enumeration Equiv Error Exception Fractional Function IndexedSeq Int Integral Iterable " + "Iterator List Map Numeric Nil NotNull Option Ordered Ordering PartialFunction PartialOrdering " + "Product Proxy Range Responder Seq Serializable Set Specializable Stream StringBuilder " + "StringContext Symbol Throwable Traversable TraversableOnce Tuple Unit Vector " + /* package java.lang */ "Boolean Byte Character CharSequence Class ClassLoader Cloneable Comparable " + "Compiler Double Exception Float Integer Long Math Number Object Package Pair Process " + "Runtime Runnable SecurityManager Short StackTraceElement StrictMath String " + "StringBuffer System Thread ThreadGroup ThreadLocal Throwable Triple Void" ), multiLineStrings: true, blockKeywords: words("catch class do else finally for forSome if match switch try while"), defKeywords: words("class def object package trait type val var"), atoms: words("true false null"), indentStatements: false, indentSwitch: false, hooks: { "@": function(stream) { stream.eatWhile(/[\w\$_]/); return "meta"; }, '"': function(stream, state) { if (!stream.match('""')) return false; state.tokenize = tokenTripleString; return state.tokenize(stream, state); }, "'": function(stream) { stream.eatWhile(/[\w\$_\xa1-\uffff]/); return "atom"; }, "=": function(stream, state) { var cx = state.context if (cx.type == "}" && cx.align && stream.eat(">")) { state.context = new Context(cx.indented, cx.column, cx.type, cx.info, null, cx.prev) return "operator" } else { return false } } }, modeProps: {closeBrackets: {triples: '"'}} }); function tokenKotlinString(tripleString){ return function (stream, state) { var escaped = false, next, end = false; while (!stream.eol()) { if (!tripleString && !escaped && stream.match('"') ) {end = true; break;} if (tripleString && stream.match('"""')) {end = true; break;} next = stream.next(); if(!escaped && next == "$" && stream.match('{')) stream.skipTo("}"); escaped = !escaped && next == "\\" && !tripleString; } if (end || !tripleString) state.tokenize = null; return "string"; } } def("text/x-kotlin", { name: "clike", keywords: words( /*keywords*/ "package as typealias class interface this super val " + "var fun for is in This throw return " + "break continue object if else while do try when !in !is as? " + /*soft keywords*/ "file import where by get set abstract enum open inner override private public internal " + "protected catch finally out final vararg reified dynamic companion constructor init " + "sealed field property receiver param sparam lateinit data inline noinline tailrec " + "external annotation crossinline const operator infix" ), types: words( /* package java.lang */ "Boolean Byte Character CharSequence Class ClassLoader Cloneable Comparable " + "Compiler Double Exception Float Integer Long Math Number Object Package Pair Process " + "Runtime Runnable SecurityManager Short StackTraceElement StrictMath String " + "StringBuffer System Thread ThreadGroup ThreadLocal Throwable Triple Void" ), intendSwitch: false, indentStatements: false, multiLineStrings: true, blockKeywords: words("catch class do else finally for if where try while enum"), defKeywords: words("class val var object package interface fun"), atoms: words("true false null this"), hooks: { '"': function(stream, state) { state.tokenize = tokenKotlinString(stream.match('""')); return state.tokenize(stream, state); } }, modeProps: {closeBrackets: {triples: '"'}} }); def(["x-shader/x-vertex", "x-shader/x-fragment"], { name: "clike", keywords: words("sampler1D sampler2D sampler3D samplerCube " + "sampler1DShadow sampler2DShadow " + "const attribute uniform varying " + "break continue discard return " + "for while do if else struct " + "in out inout"), types: words("float int bool void " + "vec2 vec3 vec4 ivec2 ivec3 ivec4 bvec2 bvec3 bvec4 " + "mat2 mat3 mat4"), blockKeywords: words("for while do if else struct"), builtin: words("radians degrees sin cos tan asin acos atan " + "pow exp log exp2 sqrt inversesqrt " + "abs sign floor ceil fract mod min max clamp mix step smoothstep " + "length distance dot cross normalize ftransform faceforward " + "reflect refract matrixCompMult " + "lessThan lessThanEqual greaterThan greaterThanEqual " + "equal notEqual any all not " + "texture1D texture1DProj texture1DLod texture1DProjLod " + "texture2D texture2DProj texture2DLod texture2DProjLod " + "texture3D texture3DProj texture3DLod texture3DProjLod " + "textureCube textureCubeLod " + "shadow1D shadow2D shadow1DProj shadow2DProj " + "shadow1DLod shadow2DLod shadow1DProjLod shadow2DProjLod " + "dFdx dFdy fwidth " + "noise1 noise2 noise3 noise4"), atoms: words("true false " + "gl_FragColor gl_SecondaryColor gl_Normal gl_Vertex " + "gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 gl_MultiTexCoord3 " + "gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 " + "gl_FogCoord gl_PointCoord " + "gl_Position gl_PointSize gl_ClipVertex " + "gl_FrontColor gl_BackColor gl_FrontSecondaryColor gl_BackSecondaryColor " + "gl_TexCoord gl_FogFragCoord " + "gl_FragCoord gl_FrontFacing " + "gl_FragData gl_FragDepth " + "gl_ModelViewMatrix gl_ProjectionMatrix gl_ModelViewProjectionMatrix " + "gl_TextureMatrix gl_NormalMatrix gl_ModelViewMatrixInverse " + "gl_ProjectionMatrixInverse gl_ModelViewProjectionMatrixInverse " + "gl_TexureMatrixTranspose gl_ModelViewMatrixInverseTranspose " + "gl_ProjectionMatrixInverseTranspose " + "gl_ModelViewProjectionMatrixInverseTranspose " + "gl_TextureMatrixInverseTranspose " + "gl_NormalScale gl_DepthRange gl_ClipPlane " + "gl_Point gl_FrontMaterial gl_BackMaterial gl_LightSource gl_LightModel " + "gl_FrontLightModelProduct gl_BackLightModelProduct " + "gl_TextureColor gl_EyePlaneS gl_EyePlaneT gl_EyePlaneR gl_EyePlaneQ " + "gl_FogParameters " + "gl_MaxLights gl_MaxClipPlanes gl_MaxTextureUnits gl_MaxTextureCoords " + "gl_MaxVertexAttribs gl_MaxVertexUniformComponents gl_MaxVaryingFloats " + "gl_MaxVertexTextureImageUnits gl_MaxTextureImageUnits " + "gl_MaxFragmentUniformComponents gl_MaxCombineTextureImageUnits " + "gl_MaxDrawBuffers"), indentSwitch: false, hooks: {"#": cppHook}, modeProps: {fold: ["brace", "include"]} }); def("text/x-nesc", { name: "clike", keywords: words(cKeywords + "as atomic async call command component components configuration event generic " + "implementation includes interface module new norace nx_struct nx_union post provides " + "signal task uses abstract extends"), types: words(cTypes), blockKeywords: words("case do else for if switch while struct"), atoms: words("null true false"), hooks: {"#": cppHook}, modeProps: {fold: ["brace", "include"]} }); def("text/x-objectivec", { name: "clike", keywords: words(cKeywords + "inline restrict _Bool _Complex _Imaginary BOOL Class bycopy byref id IMP in " + "inout nil oneway out Protocol SEL self super atomic nonatomic retain copy readwrite readonly"), types: words(cTypes), atoms: words("YES NO NULL NILL ON OFF true false"), hooks: { "@": function(stream) { stream.eatWhile(/[\w\$]/); return "keyword"; }, "#": cppHook, indent: function(_state, ctx, textAfter) { if (ctx.type == "statement" && /^@\w/.test(textAfter)) return ctx.indented } }, modeProps: {fold: "brace"} }); def("text/x-squirrel", { name: "clike", keywords: words("base break clone continue const default delete enum extends function in class" + " foreach local resume return this throw typeof yield constructor instanceof static"), types: words(cTypes), blockKeywords: words("case catch class else for foreach if switch try while"), defKeywords: words("function local class"), typeFirstDefinitions: true, atoms: words("true false null"), hooks: {"#": cppHook}, modeProps: {fold: ["brace", "include"]} }); // Ceylon Strings need to deal with interpolation var stringTokenizer = null; function tokenCeylonString(type) { return function(stream, state) { var escaped = false, next, end = false; while (!stream.eol()) { if (!escaped && stream.match('"') && (type == "single" || stream.match('""'))) { end = true; break; } if (!escaped && stream.match('``')) { stringTokenizer = tokenCeylonString(type); end = true; break; } next = stream.next(); escaped = type == "single" && !escaped && next == "\\"; } if (end) state.tokenize = null; return "string"; } } def("text/x-ceylon", { name: "clike", keywords: words("abstracts alias assembly assert assign break case catch class continue dynamic else" + " exists extends finally for function given if import in interface is let module new" + " nonempty object of out outer package return satisfies super switch then this throw" + " try value void while"), types: function(word) { // In Ceylon all identifiers that start with an uppercase are types var first = word.charAt(0); return (first === first.toUpperCase() && first !== first.toLowerCase()); }, blockKeywords: words("case catch class dynamic else finally for function if interface module new object switch try while"), defKeywords: words("class dynamic function interface module object package value"), builtin: words("abstract actual aliased annotation by default deprecated doc final formal late license" + " native optional sealed see serializable shared suppressWarnings tagged throws variable"), isPunctuationChar: /[\[\]{}\(\),;\:\.`]/, isOperatorChar: /[+\-*&%=<>!?|^~:\/]/, numberStart: /[\d#$]/, number: /^(?:#[\da-fA-F_]+|\$[01_]+|[\d_]+[kMGTPmunpf]?|[\d_]+\.[\d_]+(?:[eE][-+]?\d+|[kMGTPmunpf]|)|)/i, multiLineStrings: true, typeFirstDefinitions: true, atoms: words("true false null larger smaller equal empty finished"), indentSwitch: false, styleDefs: false, hooks: { "@": function(stream) { stream.eatWhile(/[\w\$_]/); return "meta"; }, '"': function(stream, state) { state.tokenize = tokenCeylonString(stream.match('""') ? "triple" : "single"); return state.tokenize(stream, state); }, '`': function(stream, state) { if (!stringTokenizer || !stream.match('`')) return false; state.tokenize = stringTokenizer; stringTokenizer = null; return state.tokenize(stream, state); }, "'": function(stream) { stream.eatWhile(/[\w\$_\xa1-\uffff]/); return "atom"; }, token: function(_stream, state, style) { if ((style == "variable" || style == "variable-3") && state.prevToken == ".") { return "variable-2"; } } }, modeProps: { fold: ["brace", "import"], closeBrackets: {triples: '"'} } }); }); plugins/file-manager-advanced/application/library/codemirror/mode/clike/index.html000064400000023571147176754550024500 0ustar00 CodeMirror: C-like mode

C-like mode

C++ example

Objective-C example

Java example

Scala example

Kotlin mode

Ceylon mode

Simple mode that tries to handle C-like languages as well as it can. Takes two configuration parameters: keywords, an object whose property names are the keywords in the language, and useCPP, which determines whether C preprocessor directives are recognized.

MIME types defined: text/x-csrc (C), text/x-c++src (C++), text/x-java (Java), text/x-csharp (C#), text/x-objectivec (Objective-C), text/x-scala (Scala), text/x-vertex x-shader/x-fragment (shader programs), text/x-squirrel (Squirrel) and text/x-ceylon (Ceylon)

plugins/file-manager-advanced/application/library/codemirror/mode/clike/scala.html000064400000067546147176754550024466 0ustar00 CodeMirror: Scala mode

Scala mode

plugins/file-manager-advanced/application/library/codemirror/mode/clike/test.js000064400000003617147176754550024017 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function() { var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-c"); function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } MT("indent", "[variable-3 void] [def foo]([variable-3 void*] [variable a], [variable-3 int] [variable b]) {", " [variable-3 int] [variable c] [operator =] [variable b] [operator +]", " [number 1];", " [keyword return] [operator *][variable a];", "}"); MT("indent_switch", "[keyword switch] ([variable x]) {", " [keyword case] [number 10]:", " [keyword return] [number 20];", " [keyword default]:", " [variable printf]([string \"foo %c\"], [variable x]);", "}"); MT("def", "[variable-3 void] [def foo]() {}", "[keyword struct] [def bar]{}", "[variable-3 int] [variable-3 *][def baz]() {}"); MT("def_new_line", "::[variable std]::[variable SomeTerribleType][operator <][variable T][operator >]", "[def SomeLongMethodNameThatDoesntFitIntoOneLine]([keyword const] [variable MyType][operator &] [variable param]) {}") MT("double_block", "[keyword for] (;;)", " [keyword for] (;;)", " [variable x][operator ++];", "[keyword return];"); MT("preprocessor", "[meta #define FOO 3]", "[variable-3 int] [variable foo];", "[meta #define BAR\\]", "[meta 4]", "[variable-3 unsigned] [variable-3 int] [variable bar] [operator =] [number 8];", "[meta #include ][comment // comment]") var mode_cpp = CodeMirror.getMode({indentUnit: 2}, "text/x-c++src"); function MTCPP(name) { test.mode(name, mode_cpp, Array.prototype.slice.call(arguments, 1)); } MTCPP("cpp14_literal", "[number 10'000];", "[number 0b10'000];", "[number 0x10'000];", "[string '100000'];"); })(); plugins/file-manager-advanced/application/library/codemirror/mode/clojure/clojure.js000064400000037205147176754550025057 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE /** * Author: Hans Engel * Branched from CodeMirror's Scheme mode (by Koh Zi Han, based on implementation by Koh Zi Chun) */ (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("clojure", function (options) { var BUILTIN = "builtin", COMMENT = "comment", STRING = "string", CHARACTER = "string-2", ATOM = "atom", NUMBER = "number", BRACKET = "bracket", KEYWORD = "keyword", VAR = "variable"; var INDENT_WORD_SKIP = options.indentUnit || 2; var NORMAL_INDENT_UNIT = options.indentUnit || 2; function makeKeywords(str) { var obj = {}, words = str.split(" "); for (var i = 0; i < words.length; ++i) obj[words[i]] = true; return obj; } var atoms = makeKeywords("true false nil"); var keywords = makeKeywords( "defn defn- def def- defonce defmulti defmethod defmacro defstruct deftype defprotocol defrecord defproject deftest " + "slice defalias defhinted defmacro- defn-memo defnk defnk defonce- defunbound defunbound- defvar defvar- let letfn " + "do case cond condp for loop recur when when-not when-let when-first if if-let if-not . .. -> ->> doto and or dosync " + "doseq dotimes dorun doall load import unimport ns in-ns refer try catch finally throw with-open with-local-vars " + "binding gen-class gen-and-load-class gen-and-save-class handler-case handle"); var builtins = makeKeywords( "* *' *1 *2 *3 *agent* *allow-unresolved-vars* *assert* *clojure-version* *command-line-args* *compile-files* " + "*compile-path* *compiler-options* *data-readers* *e *err* *file* *flush-on-newline* *fn-loader* *in* " + "*math-context* *ns* *out* *print-dup* *print-length* *print-level* *print-meta* *print-readably* *read-eval* " + "*source-path* *unchecked-math* *use-context-classloader* *verbose-defrecords* *warn-on-reflection* + +' - -' -> " + "->> ->ArrayChunk ->Vec ->VecNode ->VecSeq -cache-protocol-fn -reset-methods .. / < <= = == > >= EMPTY-NODE accessor " + "aclone add-classpath add-watch agent agent-error agent-errors aget alength alias all-ns alter alter-meta! " + "alter-var-root amap ancestors and apply areduce array-map aset aset-boolean aset-byte aset-char aset-double " + "aset-float aset-int aset-long aset-short assert assoc assoc! assoc-in associative? atom await await-for await1 " + "bases bean bigdec bigint biginteger binding bit-and bit-and-not bit-clear bit-flip bit-not bit-or bit-set " + "bit-shift-left bit-shift-right bit-test bit-xor boolean boolean-array booleans bound-fn bound-fn* bound? butlast " + "byte byte-array bytes case cat cast char char-array char-escape-string char-name-string char? chars chunk chunk-append " + "chunk-buffer chunk-cons chunk-first chunk-next chunk-rest chunked-seq? class class? clear-agent-errors " + "clojure-version coll? comment commute comp comparator compare compare-and-set! compile complement completing concat cond condp " + "conj conj! cons constantly construct-proxy contains? count counted? create-ns create-struct cycle dec dec' decimal? " + "declare dedupe default-data-readers definline definterface defmacro defmethod defmulti defn defn- defonce defprotocol " + "defrecord defstruct deftype delay delay? deliver denominator deref derive descendants destructure disj disj! dissoc " + "dissoc! distinct distinct? doall dorun doseq dosync dotimes doto double double-array doubles drop drop-last " + "drop-while eduction empty empty? ensure enumeration-seq error-handler error-mode eval even? every-pred every? ex-data ex-info " + "extend extend-protocol extend-type extenders extends? false? ffirst file-seq filter filterv find find-keyword " + "find-ns find-protocol-impl find-protocol-method find-var first flatten float float-array float? floats flush fn fn? " + "fnext fnil for force format frequencies future future-call future-cancel future-cancelled? future-done? future? " + "gen-class gen-interface gensym get get-in get-method get-proxy-class get-thread-bindings get-validator group-by hash " + "hash-combine hash-map hash-set identical? identity if-let if-not ifn? import in-ns inc inc' init-proxy instance? " + "int int-array integer? interleave intern interpose into into-array ints io! isa? iterate iterator-seq juxt keep " + "keep-indexed key keys keyword keyword? last lazy-cat lazy-seq let letfn line-seq list list* list? load load-file " + "load-reader load-string loaded-libs locking long long-array longs loop macroexpand macroexpand-1 make-array " + "make-hierarchy map map-indexed map? mapcat mapv max max-key memfn memoize merge merge-with meta method-sig methods " + "min min-key mod munge name namespace namespace-munge neg? newline next nfirst nil? nnext not not-any? not-empty " + "not-every? not= ns ns-aliases ns-imports ns-interns ns-map ns-name ns-publics ns-refers ns-resolve ns-unalias " + "ns-unmap nth nthnext nthrest num number? numerator object-array odd? or parents partial partition partition-all " + "partition-by pcalls peek persistent! pmap pop pop! pop-thread-bindings pos? pr pr-str prefer-method prefers " + "primitives-classnames print print-ctor print-dup print-method print-simple print-str printf println println-str " + "prn prn-str promise proxy proxy-call-with-super proxy-mappings proxy-name proxy-super push-thread-bindings pvalues " + "quot rand rand-int rand-nth random-sample range ratio? rational? rationalize re-find re-groups re-matcher re-matches re-pattern " + "re-seq read read-line read-string realized? reduce reduce-kv reductions ref ref-history-count ref-max-history " + "ref-min-history ref-set refer refer-clojure reify release-pending-sends rem remove remove-all-methods " + "remove-method remove-ns remove-watch repeat repeatedly replace replicate require reset! reset-meta! resolve rest " + "restart-agent resultset-seq reverse reversible? rseq rsubseq satisfies? second select-keys send send-off seq seq? " + "seque sequence sequential? set set-error-handler! set-error-mode! set-validator! set? short short-array shorts " + "shuffle shutdown-agents slurp some some-fn sort sort-by sorted-map sorted-map-by sorted-set sorted-set-by sorted? " + "special-symbol? spit split-at split-with str string? struct struct-map subs subseq subvec supers swap! symbol " + "symbol? sync take take-last take-nth take-while test the-ns thread-bound? time to-array to-array-2d trampoline transduce " + "transient tree-seq true? type unchecked-add unchecked-add-int unchecked-byte unchecked-char unchecked-dec " + "unchecked-dec-int unchecked-divide-int unchecked-double unchecked-float unchecked-inc unchecked-inc-int " + "unchecked-int unchecked-long unchecked-multiply unchecked-multiply-int unchecked-negate unchecked-negate-int "+ "unchecked-remainder-int unchecked-short unchecked-subtract unchecked-subtract-int underive unquote " + "unquote-splicing update update-in update-proxy use val vals var-get var-set var? vary-meta vec vector vector-of " + "vector? volatile! volatile? vreset! vswap! when when-first when-let when-not while with-bindings with-bindings* with-in-str with-loading-context " + "with-local-vars with-meta with-open with-out-str with-precision with-redefs with-redefs-fn xml-seq zero? zipmap " + "*default-data-reader-fn* as-> cond-> cond->> reduced reduced? send-via set-agent-send-executor! " + "set-agent-send-off-executor! some-> some->>"); var indentKeys = makeKeywords( // Built-ins "ns fn def defn defmethod bound-fn if if-not case condp when while when-not when-first do future comment doto " + "locking proxy with-open with-precision reify deftype defrecord defprotocol extend extend-protocol extend-type " + "try catch " + // Binding forms "let letfn binding loop for doseq dotimes when-let if-let " + // Data structures "defstruct struct-map assoc " + // clojure.test "testing deftest " + // contrib "handler-case handle dotrace deftrace"); var tests = { digit: /\d/, digit_or_colon: /[\d:]/, hex: /[0-9a-f]/i, sign: /[+-]/, exponent: /e/i, keyword_char: /[^\s\(\[\;\)\]]/, symbol: /[\w*+!\-\._?:<>\/\xa1-\uffff]/, block_indent: /^(?:def|with)[^\/]+$|\/(?:def|with)/ }; function stateStack(indent, type, prev) { // represents a state stack object this.indent = indent; this.type = type; this.prev = prev; } function pushStack(state, indent, type) { state.indentStack = new stateStack(indent, type, state.indentStack); } function popStack(state) { state.indentStack = state.indentStack.prev; } function isNumber(ch, stream){ // hex if ( ch === '0' && stream.eat(/x/i) ) { stream.eatWhile(tests.hex); return true; } // leading sign if ( ( ch == '+' || ch == '-' ) && ( tests.digit.test(stream.peek()) ) ) { stream.eat(tests.sign); ch = stream.next(); } if ( tests.digit.test(ch) ) { stream.eat(ch); stream.eatWhile(tests.digit); if ( '.' == stream.peek() ) { stream.eat('.'); stream.eatWhile(tests.digit); } else if ('/' == stream.peek() ) { stream.eat('/'); stream.eatWhile(tests.digit); } if ( stream.eat(tests.exponent) ) { stream.eat(tests.sign); stream.eatWhile(tests.digit); } return true; } return false; } // Eat character that starts after backslash \ function eatCharacter(stream) { var first = stream.next(); // Read special literals: backspace, newline, space, return. // Just read all lowercase letters. if (first && first.match(/[a-z]/) && stream.match(/[a-z]+/, true)) { return; } // Read unicode character: \u1000 \uA0a1 if (first === "u") { stream.match(/[0-9a-z]{4}/i, true); } } return { startState: function () { return { indentStack: null, indentation: 0, mode: false }; }, token: function (stream, state) { if (state.indentStack == null && stream.sol()) { // update indentation, but only if indentStack is empty state.indentation = stream.indentation(); } // skip spaces if (state.mode != "string" && stream.eatSpace()) { return null; } var returnType = null; switch(state.mode){ case "string": // multi-line string parsing mode var next, escaped = false; while ((next = stream.next()) != null) { if (next == "\"" && !escaped) { state.mode = false; break; } escaped = !escaped && next == "\\"; } returnType = STRING; // continue on in string mode break; default: // default parsing mode var ch = stream.next(); if (ch == "\"") { state.mode = "string"; returnType = STRING; } else if (ch == "\\") { eatCharacter(stream); returnType = CHARACTER; } else if (ch == "'" && !( tests.digit_or_colon.test(stream.peek()) )) { returnType = ATOM; } else if (ch == ";") { // comment stream.skipToEnd(); // rest of the line is a comment returnType = COMMENT; } else if (isNumber(ch,stream)){ returnType = NUMBER; } else if (ch == "(" || ch == "[" || ch == "{" ) { var keyWord = '', indentTemp = stream.column(), letter; /** Either (indent-word .. (non-indent-word .. (;something else, bracket, etc. */ if (ch == "(") while ((letter = stream.eat(tests.keyword_char)) != null) { keyWord += letter; } if (keyWord.length > 0 && (indentKeys.propertyIsEnumerable(keyWord) || tests.block_indent.test(keyWord))) { // indent-word pushStack(state, indentTemp + INDENT_WORD_SKIP, ch); } else { // non-indent word // we continue eating the spaces stream.eatSpace(); if (stream.eol() || stream.peek() == ";") { // nothing significant after // we restart indentation the user defined spaces after pushStack(state, indentTemp + NORMAL_INDENT_UNIT, ch); } else { pushStack(state, indentTemp + stream.current().length, ch); // else we match } } stream.backUp(stream.current().length - 1); // undo all the eating returnType = BRACKET; } else if (ch == ")" || ch == "]" || ch == "}") { returnType = BRACKET; if (state.indentStack != null && state.indentStack.type == (ch == ")" ? "(" : (ch == "]" ? "[" :"{"))) { popStack(state); } } else if ( ch == ":" ) { stream.eatWhile(tests.symbol); return ATOM; } else { stream.eatWhile(tests.symbol); if (keywords && keywords.propertyIsEnumerable(stream.current())) { returnType = KEYWORD; } else if (builtins && builtins.propertyIsEnumerable(stream.current())) { returnType = BUILTIN; } else if (atoms && atoms.propertyIsEnumerable(stream.current())) { returnType = ATOM; } else { returnType = VAR; } } } return returnType; }, indent: function (state) { if (state.indentStack == null) return state.indentation; return state.indentStack.indent; }, closeBrackets: {pairs: "()[]{}\"\""}, lineComment: ";;" }; }); CodeMirror.defineMIME("text/x-clojure", "clojure"); CodeMirror.defineMIME("text/x-clojurescript", "clojure"); CodeMirror.defineMIME("application/edn", "clojure"); }); plugins/file-manager-advanced/application/library/codemirror/mode/clojure/index.html000064400000004766147176754550025061 0ustar00 CodeMirror: Clojure mode

Clojure mode

MIME types defined: text/x-clojure.

plugins/file-manager-advanced/application/library/codemirror/mode/cmake/cmake.js000064400000005050147176754550024102 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) define(["../../lib/codemirror"], mod); else mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("cmake", function () { var variable_regex = /({)?[a-zA-Z0-9_]+(})?/; function tokenString(stream, state) { var current, prev, found_var = false; while (!stream.eol() && (current = stream.next()) != state.pending) { if (current === '$' && prev != '\\' && state.pending == '"') { found_var = true; break; } prev = current; } if (found_var) { stream.backUp(1); } if (current == state.pending) { state.continueString = false; } else { state.continueString = true; } return "string"; } function tokenize(stream, state) { var ch = stream.next(); // Have we found a variable? if (ch === '$') { if (stream.match(variable_regex)) { return 'variable-2'; } return 'variable'; } // Should we still be looking for the end of a string? if (state.continueString) { // If so, go through the loop again stream.backUp(1); return tokenString(stream, state); } // Do we just have a function on our hands? // In 'cmake_minimum_required (VERSION 2.8.8)', 'cmake_minimum_required' is matched if (stream.match(/(\s+)?\w+\(/) || stream.match(/(\s+)?\w+\ \(/)) { stream.backUp(1); return 'def'; } if (ch == "#") { stream.skipToEnd(); return "comment"; } // Have we found a string? if (ch == "'" || ch == '"') { // Store the type (single or double) state.pending = ch; // Perform the looping function to find the end return tokenString(stream, state); } if (ch == '(' || ch == ')') { return 'bracket'; } if (ch.match(/[0-9]/)) { return 'number'; } stream.eatWhile(/[\w-]/); return null; } return { startState: function () { var state = {}; state.inDefinition = false; state.inInclude = false; state.continueString = false; state.pending = false; return state; }, token: function (stream, state) { if (stream.eatSpace()) return null; return tokenize(stream, state); } }; }); CodeMirror.defineMIME("text/x-cmake", "cmake"); }); plugins/file-manager-advanced/application/library/codemirror/mode/cmake/index.html000064400000010070147176754550024457 0ustar00 CodeMirror: CMake mode

CMake mode

MIME types defined: text/x-cmake.

plugins/file-manager-advanced/application/library/codemirror/mode/cobol/cobol.js000064400000024060147176754550024140 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE /** * Author: Gautam Mehta * Branched from CodeMirror's Scheme mode */ (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("cobol", function () { var BUILTIN = "builtin", COMMENT = "comment", STRING = "string", ATOM = "atom", NUMBER = "number", KEYWORD = "keyword", MODTAG = "header", COBOLLINENUM = "def", PERIOD = "link"; function makeKeywords(str) { var obj = {}, words = str.split(" "); for (var i = 0; i < words.length; ++i) obj[words[i]] = true; return obj; } var atoms = makeKeywords("TRUE FALSE ZEROES ZEROS ZERO SPACES SPACE LOW-VALUE LOW-VALUES "); var keywords = makeKeywords( "ACCEPT ACCESS ACQUIRE ADD ADDRESS " + "ADVANCING AFTER ALIAS ALL ALPHABET " + "ALPHABETIC ALPHABETIC-LOWER ALPHABETIC-UPPER ALPHANUMERIC ALPHANUMERIC-EDITED " + "ALSO ALTER ALTERNATE AND ANY " + "ARE AREA AREAS ARITHMETIC ASCENDING " + "ASSIGN AT ATTRIBUTE AUTHOR AUTO " + "AUTO-SKIP AUTOMATIC B-AND B-EXOR B-LESS " + "B-NOT B-OR BACKGROUND-COLOR BACKGROUND-COLOUR BEEP " + "BEFORE BELL BINARY BIT BITS " + "BLANK BLINK BLOCK BOOLEAN BOTTOM " + "BY CALL CANCEL CD CF " + "CH CHARACTER CHARACTERS CLASS CLOCK-UNITS " + "CLOSE COBOL CODE CODE-SET COL " + "COLLATING COLUMN COMMA COMMIT COMMITMENT " + "COMMON COMMUNICATION COMP COMP-0 COMP-1 " + "COMP-2 COMP-3 COMP-4 COMP-5 COMP-6 " + "COMP-7 COMP-8 COMP-9 COMPUTATIONAL COMPUTATIONAL-0 " + "COMPUTATIONAL-1 COMPUTATIONAL-2 COMPUTATIONAL-3 COMPUTATIONAL-4 COMPUTATIONAL-5 " + "COMPUTATIONAL-6 COMPUTATIONAL-7 COMPUTATIONAL-8 COMPUTATIONAL-9 COMPUTE " + "CONFIGURATION CONNECT CONSOLE CONTAINED CONTAINS " + "CONTENT CONTINUE CONTROL CONTROL-AREA CONTROLS " + "CONVERTING COPY CORR CORRESPONDING COUNT " + "CRT CRT-UNDER CURRENCY CURRENT CURSOR " + "DATA DATE DATE-COMPILED DATE-WRITTEN DAY " + "DAY-OF-WEEK DB DB-ACCESS-CONTROL-KEY DB-DATA-NAME DB-EXCEPTION " + "DB-FORMAT-NAME DB-RECORD-NAME DB-SET-NAME DB-STATUS DBCS " + "DBCS-EDITED DE DEBUG-CONTENTS DEBUG-ITEM DEBUG-LINE " + "DEBUG-NAME DEBUG-SUB-1 DEBUG-SUB-2 DEBUG-SUB-3 DEBUGGING " + "DECIMAL-POINT DECLARATIVES DEFAULT DELETE DELIMITED " + "DELIMITER DEPENDING DESCENDING DESCRIBED DESTINATION " + "DETAIL DISABLE DISCONNECT DISPLAY DISPLAY-1 " + "DISPLAY-2 DISPLAY-3 DISPLAY-4 DISPLAY-5 DISPLAY-6 " + "DISPLAY-7 DISPLAY-8 DISPLAY-9 DIVIDE DIVISION " + "DOWN DROP DUPLICATE DUPLICATES DYNAMIC " + "EBCDIC EGI EJECT ELSE EMI " + "EMPTY EMPTY-CHECK ENABLE END END. END-ACCEPT END-ACCEPT. " + "END-ADD END-CALL END-COMPUTE END-DELETE END-DISPLAY " + "END-DIVIDE END-EVALUATE END-IF END-INVOKE END-MULTIPLY " + "END-OF-PAGE END-PERFORM END-READ END-RECEIVE END-RETURN " + "END-REWRITE END-SEARCH END-START END-STRING END-SUBTRACT " + "END-UNSTRING END-WRITE END-XML ENTER ENTRY " + "ENVIRONMENT EOP EQUAL EQUALS ERASE " + "ERROR ESI EVALUATE EVERY EXCEEDS " + "EXCEPTION EXCLUSIVE EXIT EXTEND EXTERNAL " + "EXTERNALLY-DESCRIBED-KEY FD FETCH FILE FILE-CONTROL " + "FILE-STREAM FILES FILLER FINAL FIND " + "FINISH FIRST FOOTING FOR FOREGROUND-COLOR " + "FOREGROUND-COLOUR FORMAT FREE FROM FULL " + "FUNCTION GENERATE GET GIVING GLOBAL " + "GO GOBACK GREATER GROUP HEADING " + "HIGH-VALUE HIGH-VALUES HIGHLIGHT I-O I-O-CONTROL " + "ID IDENTIFICATION IF IN INDEX " + "INDEX-1 INDEX-2 INDEX-3 INDEX-4 INDEX-5 " + "INDEX-6 INDEX-7 INDEX-8 INDEX-9 INDEXED " + "INDIC INDICATE INDICATOR INDICATORS INITIAL " + "INITIALIZE INITIATE INPUT INPUT-OUTPUT INSPECT " + "INSTALLATION INTO INVALID INVOKE IS " + "JUST JUSTIFIED KANJI KEEP KEY " + "LABEL LAST LD LEADING LEFT " + "LEFT-JUSTIFY LENGTH LENGTH-CHECK LESS LIBRARY " + "LIKE LIMIT LIMITS LINAGE LINAGE-COUNTER " + "LINE LINE-COUNTER LINES LINKAGE LOCAL-STORAGE " + "LOCALE LOCALLY LOCK " + "MEMBER MEMORY MERGE MESSAGE METACLASS " + "MODE MODIFIED MODIFY MODULES MOVE " + "MULTIPLE MULTIPLY NATIONAL NATIVE NEGATIVE " + "NEXT NO NO-ECHO NONE NOT " + "NULL NULL-KEY-MAP NULL-MAP NULLS NUMBER " + "NUMERIC NUMERIC-EDITED OBJECT OBJECT-COMPUTER OCCURS " + "OF OFF OMITTED ON ONLY " + "OPEN OPTIONAL OR ORDER ORGANIZATION " + "OTHER OUTPUT OVERFLOW OWNER PACKED-DECIMAL " + "PADDING PAGE PAGE-COUNTER PARSE PERFORM " + "PF PH PIC PICTURE PLUS " + "POINTER POSITION POSITIVE PREFIX PRESENT " + "PRINTING PRIOR PROCEDURE PROCEDURE-POINTER PROCEDURES " + "PROCEED PROCESS PROCESSING PROGRAM PROGRAM-ID " + "PROMPT PROTECTED PURGE QUEUE QUOTE " + "QUOTES RANDOM RD READ READY " + "REALM RECEIVE RECONNECT RECORD RECORD-NAME " + "RECORDS RECURSIVE REDEFINES REEL REFERENCE " + "REFERENCE-MONITOR REFERENCES RELATION RELATIVE RELEASE " + "REMAINDER REMOVAL RENAMES REPEATED REPLACE " + "REPLACING REPORT REPORTING REPORTS REPOSITORY " + "REQUIRED RERUN RESERVE RESET RETAINING " + "RETRIEVAL RETURN RETURN-CODE RETURNING REVERSE-VIDEO " + "REVERSED REWIND REWRITE RF RH " + "RIGHT RIGHT-JUSTIFY ROLLBACK ROLLING ROUNDED " + "RUN SAME SCREEN SD SEARCH " + "SECTION SECURE SECURITY SEGMENT SEGMENT-LIMIT " + "SELECT SEND SENTENCE SEPARATE SEQUENCE " + "SEQUENTIAL SET SHARED SIGN SIZE " + "SKIP1 SKIP2 SKIP3 SORT SORT-MERGE " + "SORT-RETURN SOURCE SOURCE-COMPUTER SPACE-FILL " + "SPECIAL-NAMES STANDARD STANDARD-1 STANDARD-2 " + "START STARTING STATUS STOP STORE " + "STRING SUB-QUEUE-1 SUB-QUEUE-2 SUB-QUEUE-3 SUB-SCHEMA " + "SUBFILE SUBSTITUTE SUBTRACT SUM SUPPRESS " + "SYMBOLIC SYNC SYNCHRONIZED SYSIN SYSOUT " + "TABLE TALLYING TAPE TENANT TERMINAL " + "TERMINATE TEST TEXT THAN THEN " + "THROUGH THRU TIME TIMES TITLE " + "TO TOP TRAILING TRAILING-SIGN TRANSACTION " + "TYPE TYPEDEF UNDERLINE UNEQUAL UNIT " + "UNSTRING UNTIL UP UPDATE UPON " + "USAGE USAGE-MODE USE USING VALID " + "VALIDATE VALUE VALUES VARYING VLR " + "WAIT WHEN WHEN-COMPILED WITH WITHIN " + "WORDS WORKING-STORAGE WRITE XML XML-CODE " + "XML-EVENT XML-NTEXT XML-TEXT ZERO ZERO-FILL " ); var builtins = makeKeywords("- * ** / + < <= = > >= "); var tests = { digit: /\d/, digit_or_colon: /[\d:]/, hex: /[0-9a-f]/i, sign: /[+-]/, exponent: /e/i, keyword_char: /[^\s\(\[\;\)\]]/, symbol: /[\w*+\-]/ }; function isNumber(ch, stream){ // hex if ( ch === '0' && stream.eat(/x/i) ) { stream.eatWhile(tests.hex); return true; } // leading sign if ( ( ch == '+' || ch == '-' ) && ( tests.digit.test(stream.peek()) ) ) { stream.eat(tests.sign); ch = stream.next(); } if ( tests.digit.test(ch) ) { stream.eat(ch); stream.eatWhile(tests.digit); if ( '.' == stream.peek()) { stream.eat('.'); stream.eatWhile(tests.digit); } if ( stream.eat(tests.exponent) ) { stream.eat(tests.sign); stream.eatWhile(tests.digit); } return true; } return false; } return { startState: function () { return { indentStack: null, indentation: 0, mode: false }; }, token: function (stream, state) { if (state.indentStack == null && stream.sol()) { // update indentation, but only if indentStack is empty state.indentation = 6 ; //stream.indentation(); } // skip spaces if (stream.eatSpace()) { return null; } var returnType = null; switch(state.mode){ case "string": // multi-line string parsing mode var next = false; while ((next = stream.next()) != null) { if (next == "\"" || next == "\'") { state.mode = false; break; } } returnType = STRING; // continue on in string mode break; default: // default parsing mode var ch = stream.next(); var col = stream.column(); if (col >= 0 && col <= 5) { returnType = COBOLLINENUM; } else if (col >= 72 && col <= 79) { stream.skipToEnd(); returnType = MODTAG; } else if (ch == "*" && col == 6) { // comment stream.skipToEnd(); // rest of the line is a comment returnType = COMMENT; } else if (ch == "\"" || ch == "\'") { state.mode = "string"; returnType = STRING; } else if (ch == "'" && !( tests.digit_or_colon.test(stream.peek()) )) { returnType = ATOM; } else if (ch == ".") { returnType = PERIOD; } else if (isNumber(ch,stream)){ returnType = NUMBER; } else { if (stream.current().match(tests.symbol)) { while (col < 71) { if (stream.eat(tests.symbol) === undefined) { break; } else { col++; } } } if (keywords && keywords.propertyIsEnumerable(stream.current().toUpperCase())) { returnType = KEYWORD; } else if (builtins && builtins.propertyIsEnumerable(stream.current().toUpperCase())) { returnType = BUILTIN; } else if (atoms && atoms.propertyIsEnumerable(stream.current().toUpperCase())) { returnType = ATOM; } else returnType = null; } } return returnType; }, indent: function (state) { if (state.indentStack == null) return state.indentation; return state.indentStack.indent; } }; }); CodeMirror.defineMIME("text/x-cobol", "cobol"); }); plugins/file-manager-advanced/application/library/codemirror/mode/cobol/index.html000064400000017624147176754550024511 0ustar00 CodeMirror: COBOL mode

COBOL mode

Select Theme Select Font Size

plugins/file-manager-advanced/application/library/codemirror/mode/coffeescript/coffeescript.js000064400000023234147176754550027076 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE /** * Link to the project's GitHub page: * https://github.com/pickhardt/coffeescript-codemirror-mode */ (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("coffeescript", function(conf, parserConf) { var ERRORCLASS = "error"; function wordRegexp(words) { return new RegExp("^((" + words.join(")|(") + "))\\b"); } var operators = /^(?:->|=>|\+[+=]?|-[\-=]?|\*[\*=]?|\/[\/=]?|[=!]=|<[><]?=?|>>?=?|%=?|&=?|\|=?|\^=?|\~|!|\?|(or|and|\|\||&&|\?)=)/; var delimiters = /^(?:[()\[\]{},:`=;]|\.\.?\.?)/; var identifiers = /^[_A-Za-z$][_A-Za-z$0-9]*/; var atProp = /^@[_A-Za-z$][_A-Za-z$0-9]*/; var wordOperators = wordRegexp(["and", "or", "not", "is", "isnt", "in", "instanceof", "typeof"]); var indentKeywords = ["for", "while", "loop", "if", "unless", "else", "switch", "try", "catch", "finally", "class"]; var commonKeywords = ["break", "by", "continue", "debugger", "delete", "do", "in", "of", "new", "return", "then", "this", "@", "throw", "when", "until", "extends"]; var keywords = wordRegexp(indentKeywords.concat(commonKeywords)); indentKeywords = wordRegexp(indentKeywords); var stringPrefixes = /^('{3}|\"{3}|['\"])/; var regexPrefixes = /^(\/{3}|\/)/; var commonConstants = ["Infinity", "NaN", "undefined", "null", "true", "false", "on", "off", "yes", "no"]; var constants = wordRegexp(commonConstants); // Tokenizers function tokenBase(stream, state) { // Handle scope changes if (stream.sol()) { if (state.scope.align === null) state.scope.align = false; var scopeOffset = state.scope.offset; if (stream.eatSpace()) { var lineOffset = stream.indentation(); if (lineOffset > scopeOffset && state.scope.type == "coffee") { return "indent"; } else if (lineOffset < scopeOffset) { return "dedent"; } return null; } else { if (scopeOffset > 0) { dedent(stream, state); } } } if (stream.eatSpace()) { return null; } var ch = stream.peek(); // Handle docco title comment (single line) if (stream.match("####")) { stream.skipToEnd(); return "comment"; } // Handle multi line comments if (stream.match("###")) { state.tokenize = longComment; return state.tokenize(stream, state); } // Single line comment if (ch === "#") { stream.skipToEnd(); return "comment"; } // Handle number literals if (stream.match(/^-?[0-9\.]/, false)) { var floatLiteral = false; // Floats if (stream.match(/^-?\d*\.\d+(e[\+\-]?\d+)?/i)) { floatLiteral = true; } if (stream.match(/^-?\d+\.\d*/)) { floatLiteral = true; } if (stream.match(/^-?\.\d+/)) { floatLiteral = true; } if (floatLiteral) { // prevent from getting extra . on 1.. if (stream.peek() == "."){ stream.backUp(1); } return "number"; } // Integers var intLiteral = false; // Hex if (stream.match(/^-?0x[0-9a-f]+/i)) { intLiteral = true; } // Decimal if (stream.match(/^-?[1-9]\d*(e[\+\-]?\d+)?/)) { intLiteral = true; } // Zero by itself with no other piece of number. if (stream.match(/^-?0(?![\dx])/i)) { intLiteral = true; } if (intLiteral) { return "number"; } } // Handle strings if (stream.match(stringPrefixes)) { state.tokenize = tokenFactory(stream.current(), false, "string"); return state.tokenize(stream, state); } // Handle regex literals if (stream.match(regexPrefixes)) { if (stream.current() != "/" || stream.match(/^.*\//, false)) { // prevent highlight of division state.tokenize = tokenFactory(stream.current(), true, "string-2"); return state.tokenize(stream, state); } else { stream.backUp(1); } } // Handle operators and delimiters if (stream.match(operators) || stream.match(wordOperators)) { return "operator"; } if (stream.match(delimiters)) { return "punctuation"; } if (stream.match(constants)) { return "atom"; } if (stream.match(atProp) || state.prop && stream.match(identifiers)) { return "property"; } if (stream.match(keywords)) { return "keyword"; } if (stream.match(identifiers)) { return "variable"; } // Handle non-detected items stream.next(); return ERRORCLASS; } function tokenFactory(delimiter, singleline, outclass) { return function(stream, state) { while (!stream.eol()) { stream.eatWhile(/[^'"\/\\]/); if (stream.eat("\\")) { stream.next(); if (singleline && stream.eol()) { return outclass; } } else if (stream.match(delimiter)) { state.tokenize = tokenBase; return outclass; } else { stream.eat(/['"\/]/); } } if (singleline) { if (parserConf.singleLineStringErrors) { outclass = ERRORCLASS; } else { state.tokenize = tokenBase; } } return outclass; }; } function longComment(stream, state) { while (!stream.eol()) { stream.eatWhile(/[^#]/); if (stream.match("###")) { state.tokenize = tokenBase; break; } stream.eatWhile("#"); } return "comment"; } function indent(stream, state, type) { type = type || "coffee"; var offset = 0, align = false, alignOffset = null; for (var scope = state.scope; scope; scope = scope.prev) { if (scope.type === "coffee" || scope.type == "}") { offset = scope.offset + conf.indentUnit; break; } } if (type !== "coffee") { align = null; alignOffset = stream.column() + stream.current().length; } else if (state.scope.align) { state.scope.align = false; } state.scope = { offset: offset, type: type, prev: state.scope, align: align, alignOffset: alignOffset }; } function dedent(stream, state) { if (!state.scope.prev) return; if (state.scope.type === "coffee") { var _indent = stream.indentation(); var matched = false; for (var scope = state.scope; scope; scope = scope.prev) { if (_indent === scope.offset) { matched = true; break; } } if (!matched) { return true; } while (state.scope.prev && state.scope.offset !== _indent) { state.scope = state.scope.prev; } return false; } else { state.scope = state.scope.prev; return false; } } function tokenLexer(stream, state) { var style = state.tokenize(stream, state); var current = stream.current(); // Handle scope changes. if (current === "return") { state.dedent = true; } if (((current === "->" || current === "=>") && stream.eol()) || style === "indent") { indent(stream, state); } var delimiter_index = "[({".indexOf(current); if (delimiter_index !== -1) { indent(stream, state, "])}".slice(delimiter_index, delimiter_index+1)); } if (indentKeywords.exec(current)){ indent(stream, state); } if (current == "then"){ dedent(stream, state); } if (style === "dedent") { if (dedent(stream, state)) { return ERRORCLASS; } } delimiter_index = "])}".indexOf(current); if (delimiter_index !== -1) { while (state.scope.type == "coffee" && state.scope.prev) state.scope = state.scope.prev; if (state.scope.type == current) state.scope = state.scope.prev; } if (state.dedent && stream.eol()) { if (state.scope.type == "coffee" && state.scope.prev) state.scope = state.scope.prev; state.dedent = false; } return style; } var external = { startState: function(basecolumn) { return { tokenize: tokenBase, scope: {offset:basecolumn || 0, type:"coffee", prev: null, align: false}, prop: false, dedent: 0 }; }, token: function(stream, state) { var fillAlign = state.scope.align === null && state.scope; if (fillAlign && stream.sol()) fillAlign.align = false; var style = tokenLexer(stream, state); if (style && style != "comment") { if (fillAlign) fillAlign.align = true; state.prop = style == "punctuation" && stream.current() == "." } return style; }, indent: function(state, text) { if (state.tokenize != tokenBase) return 0; var scope = state.scope; var closer = text && "])}".indexOf(text.charAt(0)) > -1; if (closer) while (scope.type == "coffee" && scope.prev) scope = scope.prev; var closes = closer && scope.type === text.charAt(0); if (scope.align) return scope.alignOffset - (closes ? 1 : 0); else return (closes ? scope.prev : scope).offset; }, lineComment: "#", fold: "indent" }; return external; }); CodeMirror.defineMIME("text/x-coffeescript", "coffeescript"); CodeMirror.defineMIME("text/coffeescript", "coffeescript"); }); plugins/file-manager-advanced/application/library/codemirror/mode/coffeescript/index.html000064400000053602147176754550026063 0ustar00 CodeMirror: CoffeeScript mode

CoffeeScript mode

MIME types defined: text/x-coffeescript.

The CoffeeScript mode was written by Jeff Pickhardt.

plugins/file-manager-advanced/application/library/codemirror/mode/commonlisp/commonlisp.js000064400000010610147176754550026300 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("commonlisp", function (config) { var specialForm = /^(block|let*|return-from|catch|load-time-value|setq|eval-when|locally|symbol-macrolet|flet|macrolet|tagbody|function|multiple-value-call|the|go|multiple-value-prog1|throw|if|progn|unwind-protect|labels|progv|let|quote)$/; var assumeBody = /^with|^def|^do|^prog|case$|^cond$|bind$|when$|unless$/; var numLiteral = /^(?:[+\-]?(?:\d+|\d*\.\d+)(?:[efd][+\-]?\d+)?|[+\-]?\d+(?:\/[+\-]?\d+)?|#b[+\-]?[01]+|#o[+\-]?[0-7]+|#x[+\-]?[\da-f]+)/; var symbol = /[^\s'`,@()\[\]";]/; var type; function readSym(stream) { var ch; while (ch = stream.next()) { if (ch == "\\") stream.next(); else if (!symbol.test(ch)) { stream.backUp(1); break; } } return stream.current(); } function base(stream, state) { if (stream.eatSpace()) {type = "ws"; return null;} if (stream.match(numLiteral)) return "number"; var ch = stream.next(); if (ch == "\\") ch = stream.next(); if (ch == '"') return (state.tokenize = inString)(stream, state); else if (ch == "(") { type = "open"; return "bracket"; } else if (ch == ")" || ch == "]") { type = "close"; return "bracket"; } else if (ch == ";") { stream.skipToEnd(); type = "ws"; return "comment"; } else if (/['`,@]/.test(ch)) return null; else if (ch == "|") { if (stream.skipTo("|")) { stream.next(); return "symbol"; } else { stream.skipToEnd(); return "error"; } } else if (ch == "#") { var ch = stream.next(); if (ch == "[") { type = "open"; return "bracket"; } else if (/[+\-=\.']/.test(ch)) return null; else if (/\d/.test(ch) && stream.match(/^\d*#/)) return null; else if (ch == "|") return (state.tokenize = inComment)(stream, state); else if (ch == ":") { readSym(stream); return "meta"; } else return "error"; } else { var name = readSym(stream); if (name == ".") return null; type = "symbol"; if (name == "nil" || name == "t" || name.charAt(0) == ":") return "atom"; if (state.lastType == "open" && (specialForm.test(name) || assumeBody.test(name))) return "keyword"; if (name.charAt(0) == "&") return "variable-2"; return "variable"; } } function inString(stream, state) { var escaped = false, next; while (next = stream.next()) { if (next == '"' && !escaped) { state.tokenize = base; break; } escaped = !escaped && next == "\\"; } return "string"; } function inComment(stream, state) { var next, last; while (next = stream.next()) { if (next == "#" && last == "|") { state.tokenize = base; break; } last = next; } type = "ws"; return "comment"; } return { startState: function () { return {ctx: {prev: null, start: 0, indentTo: 0}, lastType: null, tokenize: base}; }, token: function (stream, state) { if (stream.sol() && typeof state.ctx.indentTo != "number") state.ctx.indentTo = state.ctx.start + 1; type = null; var style = state.tokenize(stream, state); if (type != "ws") { if (state.ctx.indentTo == null) { if (type == "symbol" && assumeBody.test(stream.current())) state.ctx.indentTo = state.ctx.start + config.indentUnit; else state.ctx.indentTo = "next"; } else if (state.ctx.indentTo == "next") { state.ctx.indentTo = stream.column(); } state.lastType = type; } if (type == "open") state.ctx = {prev: state.ctx, start: stream.column(), indentTo: null}; else if (type == "close") state.ctx = state.ctx.prev || state.ctx; return style; }, indent: function (state, _textAfter) { var i = state.ctx.indentTo; return typeof i == "number" ? i : state.ctx.start + 1; }, closeBrackets: {pairs: "()[]{}\"\""}, lineComment: ";;", blockCommentStart: "#|", blockCommentEnd: "|#" }; }); CodeMirror.defineMIME("text/x-common-lisp", "commonlisp"); }); plugins/file-manager-advanced/application/library/codemirror/mode/commonlisp/index.html000064400000015043147176754550025564 0ustar00 CodeMirror: Common Lisp mode

Common Lisp mode

MIME types defined: text/x-common-lisp.

plugins/file-manager-advanced/application/library/codemirror/mode/crystal/crystal.js000064400000026112147176754550025106 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("crystal", function(config) { function wordRegExp(words, end) { return new RegExp((end ? "" : "^") + "(?:" + words.join("|") + ")" + (end ? "$" : "\\b")); } function chain(tokenize, stream, state) { state.tokenize.push(tokenize); return tokenize(stream, state); } var operators = /^(?:[-+/%|&^]|\*\*?|[<>]{2})/; var conditionalOperators = /^(?:[=!]~|===|<=>|[<>=!]=?|[|&]{2}|~)/; var indexingOperators = /^(?:\[\][?=]?)/; var anotherOperators = /^(?:\.(?:\.{2})?|->|[?:])/; var idents = /^[a-z_\u009F-\uFFFF][a-zA-Z0-9_\u009F-\uFFFF]*/; var types = /^[A-Z_\u009F-\uFFFF][a-zA-Z0-9_\u009F-\uFFFF]*/; var keywords = wordRegExp([ "abstract", "alias", "as", "asm", "begin", "break", "case", "class", "def", "do", "else", "elsif", "end", "ensure", "enum", "extend", "for", "fun", "if", "ifdef", "include", "instance_sizeof", "lib", "macro", "module", "next", "of", "out", "pointerof", "private", "protected", "rescue", "return", "require", "sizeof", "struct", "super", "then", "type", "typeof", "union", "unless", "until", "when", "while", "with", "yield", "__DIR__", "__FILE__", "__LINE__" ]); var atomWords = wordRegExp(["true", "false", "nil", "self"]); var indentKeywordsArray = [ "def", "fun", "macro", "class", "module", "struct", "lib", "enum", "union", "if", "unless", "case", "while", "until", "begin", "then", "do", "for", "ifdef" ]; var indentKeywords = wordRegExp(indentKeywordsArray); var dedentKeywordsArray = [ "end", "else", "elsif", "rescue", "ensure" ]; var dedentKeywords = wordRegExp(dedentKeywordsArray); var dedentPunctualsArray = ["\\)", "\\}", "\\]"]; var dedentPunctuals = new RegExp("^(?:" + dedentPunctualsArray.join("|") + ")$"); var nextTokenizer = { "def": tokenFollowIdent, "fun": tokenFollowIdent, "macro": tokenMacroDef, "class": tokenFollowType, "module": tokenFollowType, "struct": tokenFollowType, "lib": tokenFollowType, "enum": tokenFollowType, "union": tokenFollowType }; var matching = {"[": "]", "{": "}", "(": ")", "<": ">"}; function tokenBase(stream, state) { if (stream.eatSpace()) { return null; } // Macros if (state.lastToken != "\\" && stream.match("{%", false)) { return chain(tokenMacro("%", "%"), stream, state); } if (state.lastToken != "\\" && stream.match("{{", false)) { return chain(tokenMacro("{", "}"), stream, state); } // Comments if (stream.peek() == "#") { stream.skipToEnd(); return "comment"; } // Variables and keywords var matched; if (stream.match(idents)) { stream.eat(/[?!]/); matched = stream.current(); if (stream.eat(":")) { return "atom"; } else if (state.lastToken == ".") { return "property"; } else if (keywords.test(matched)) { if (state.lastToken != "abstract" && indentKeywords.test(matched)) { if (!(matched == "fun" && state.blocks.indexOf("lib") >= 0)) { state.blocks.push(matched); state.currentIndent += 1; } } else if (dedentKeywords.test(matched)) { state.blocks.pop(); state.currentIndent -= 1; } if (nextTokenizer.hasOwnProperty(matched)) { state.tokenize.push(nextTokenizer[matched]); } return "keyword"; } else if (atomWords.test(matched)) { return "atom"; } return "variable"; } // Class variables and instance variables // or attributes if (stream.eat("@")) { if (stream.peek() == "[") { return chain(tokenNest("[", "]", "meta"), stream, state); } stream.eat("@"); stream.match(idents) || stream.match(types); return "variable-2"; } // Global variables if (stream.eat("$")) { stream.eat(/[0-9]+|\?/) || stream.match(idents) || stream.match(types); return "variable-3"; } // Constants and types if (stream.match(types)) { return "tag"; } // Symbols or ':' operator if (stream.eat(":")) { if (stream.eat("\"")) { return chain(tokenQuote("\"", "atom", false), stream, state); } else if (stream.match(idents) || stream.match(types) || stream.match(operators) || stream.match(conditionalOperators) || stream.match(indexingOperators)) { return "atom"; } stream.eat(":"); return "operator"; } // Strings if (stream.eat("\"")) { return chain(tokenQuote("\"", "string", true), stream, state); } // Strings or regexps or macro variables or '%' operator if (stream.peek() == "%") { var style = "string"; var embed = true; var delim; if (stream.match("%r")) { // Regexps style = "string-2"; delim = stream.next(); } else if (stream.match("%w")) { embed = false; delim = stream.next(); } else { if(delim = stream.match(/^%([^\w\s=])/)) { delim = delim[1]; } else if (stream.match(/^%[a-zA-Z0-9_\u009F-\uFFFF]*/)) { // Macro variables return "meta"; } else { // '%' operator return "operator"; } } if (matching.hasOwnProperty(delim)) { delim = matching[delim]; } return chain(tokenQuote(delim, style, embed), stream, state); } // Characters if (stream.eat("'")) { stream.match(/^(?:[^']|\\(?:[befnrtv0'"]|[0-7]{3}|u(?:[0-9a-fA-F]{4}|\{[0-9a-fA-F]{1,6}\})))/); stream.eat("'"); return "atom"; } // Numbers if (stream.eat("0")) { if (stream.eat("x")) { stream.match(/^[0-9a-fA-F]+/); } else if (stream.eat("o")) { stream.match(/^[0-7]+/); } else if (stream.eat("b")) { stream.match(/^[01]+/); } return "number"; } if (stream.eat(/\d/)) { stream.match(/^\d*(?:\.\d+)?(?:[eE][+-]?\d+)?/); return "number"; } // Operators if (stream.match(operators)) { stream.eat("="); // Operators can follow assign symbol. return "operator"; } if (stream.match(conditionalOperators) || stream.match(anotherOperators)) { return "operator"; } // Parens and braces if (matched = stream.match(/[({[]/, false)) { matched = matched[0]; return chain(tokenNest(matched, matching[matched], null), stream, state); } // Escapes if (stream.eat("\\")) { stream.next(); return "meta"; } stream.next(); return null; } function tokenNest(begin, end, style, started) { return function (stream, state) { if (!started && stream.match(begin)) { state.tokenize[state.tokenize.length - 1] = tokenNest(begin, end, style, true); state.currentIndent += 1; return style; } var nextStyle = tokenBase(stream, state); if (stream.current() === end) { state.tokenize.pop(); state.currentIndent -= 1; nextStyle = style; } return nextStyle; }; } function tokenMacro(begin, end, started) { return function (stream, state) { if (!started && stream.match("{" + begin)) { state.currentIndent += 1; state.tokenize[state.tokenize.length - 1] = tokenMacro(begin, end, true); return "meta"; } if (stream.match(end + "}")) { state.currentIndent -= 1; state.tokenize.pop(); return "meta"; } return tokenBase(stream, state); }; } function tokenMacroDef(stream, state) { if (stream.eatSpace()) { return null; } var matched; if (matched = stream.match(idents)) { if (matched == "def") { return "keyword"; } stream.eat(/[?!]/); } state.tokenize.pop(); return "def"; } function tokenFollowIdent(stream, state) { if (stream.eatSpace()) { return null; } if (stream.match(idents)) { stream.eat(/[!?]/); } else { stream.match(operators) || stream.match(conditionalOperators) || stream.match(indexingOperators); } state.tokenize.pop(); return "def"; } function tokenFollowType(stream, state) { if (stream.eatSpace()) { return null; } stream.match(types); state.tokenize.pop(); return "def"; } function tokenQuote(end, style, embed) { return function (stream, state) { var escaped = false; while (stream.peek()) { if (!escaped) { if (stream.match("{%", false)) { state.tokenize.push(tokenMacro("%", "%")); return style; } if (stream.match("{{", false)) { state.tokenize.push(tokenMacro("{", "}")); return style; } if (embed && stream.match("#{", false)) { state.tokenize.push(tokenNest("#{", "}", "meta")); return style; } var ch = stream.next(); if (ch == end) { state.tokenize.pop(); return style; } escaped = ch == "\\"; } else { stream.next(); escaped = false; } } return style; }; } return { startState: function () { return { tokenize: [tokenBase], currentIndent: 0, lastToken: null, blocks: [] }; }, token: function (stream, state) { var style = state.tokenize[state.tokenize.length - 1](stream, state); var token = stream.current(); if (style && style != "comment") { state.lastToken = token; } return style; }, indent: function (state, textAfter) { textAfter = textAfter.replace(/^\s*(?:\{%)?\s*|\s*(?:%\})?\s*$/g, ""); if (dedentKeywords.test(textAfter) || dedentPunctuals.test(textAfter)) { return config.indentUnit * (state.currentIndent - 1); } return config.indentUnit * state.currentIndent; }, fold: "indent", electricInput: wordRegExp(dedentPunctualsArray.concat(dedentKeywordsArray), true), lineComment: '#' }; }); CodeMirror.defineMIME("text/x-crystal", "crystal"); }); plugins/file-manager-advanced/application/library/codemirror/mode/crystal/index.html000064400000005147147176754550025071 0ustar00 CodeMirror: Crystal mode

Crystal mode

MIME types defined: text/x-crystal.

plugins/file-manager-advanced/application/library/codemirror/mode/css/css.js000064400000110535147176754550023327 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("css", function(config, parserConfig) { var inline = parserConfig.inline if (!parserConfig.propertyKeywords) parserConfig = CodeMirror.resolveMode("text/css"); var indentUnit = config.indentUnit, tokenHooks = parserConfig.tokenHooks, documentTypes = parserConfig.documentTypes || {}, mediaTypes = parserConfig.mediaTypes || {}, mediaFeatures = parserConfig.mediaFeatures || {}, mediaValueKeywords = parserConfig.mediaValueKeywords || {}, propertyKeywords = parserConfig.propertyKeywords || {}, nonStandardPropertyKeywords = parserConfig.nonStandardPropertyKeywords || {}, fontProperties = parserConfig.fontProperties || {}, counterDescriptors = parserConfig.counterDescriptors || {}, colorKeywords = parserConfig.colorKeywords || {}, valueKeywords = parserConfig.valueKeywords || {}, allowNested = parserConfig.allowNested, supportsAtComponent = parserConfig.supportsAtComponent === true; var type, override; function ret(style, tp) { type = tp; return style; } // Tokenizers function tokenBase(stream, state) { var ch = stream.next(); if (tokenHooks[ch]) { var result = tokenHooks[ch](stream, state); if (result !== false) return result; } if (ch == "@") { stream.eatWhile(/[\w\\\-]/); return ret("def", stream.current()); } else if (ch == "=" || (ch == "~" || ch == "|") && stream.eat("=")) { return ret(null, "compare"); } else if (ch == "\"" || ch == "'") { state.tokenize = tokenString(ch); return state.tokenize(stream, state); } else if (ch == "#") { stream.eatWhile(/[\w\\\-]/); return ret("atom", "hash"); } else if (ch == "!") { stream.match(/^\s*\w*/); return ret("keyword", "important"); } else if (/\d/.test(ch) || ch == "." && stream.eat(/\d/)) { stream.eatWhile(/[\w.%]/); return ret("number", "unit"); } else if (ch === "-") { if (/[\d.]/.test(stream.peek())) { stream.eatWhile(/[\w.%]/); return ret("number", "unit"); } else if (stream.match(/^-[\w\\\-]+/)) { stream.eatWhile(/[\w\\\-]/); if (stream.match(/^\s*:/, false)) return ret("variable-2", "variable-definition"); return ret("variable-2", "variable"); } else if (stream.match(/^\w+-/)) { return ret("meta", "meta"); } } else if (/[,+>*\/]/.test(ch)) { return ret(null, "select-op"); } else if (ch == "." && stream.match(/^-?[_a-z][_a-z0-9-]*/i)) { return ret("qualifier", "qualifier"); } else if (/[:;{}\[\]\(\)]/.test(ch)) { return ret(null, ch); } else if ((ch == "u" && stream.match(/rl(-prefix)?\(/)) || (ch == "d" && stream.match("omain(")) || (ch == "r" && stream.match("egexp("))) { stream.backUp(1); state.tokenize = tokenParenthesized; return ret("property", "word"); } else if (/[\w\\\-]/.test(ch)) { stream.eatWhile(/[\w\\\-]/); return ret("property", "word"); } else { return ret(null, null); } } function tokenString(quote) { return function(stream, state) { var escaped = false, ch; while ((ch = stream.next()) != null) { if (ch == quote && !escaped) { if (quote == ")") stream.backUp(1); break; } escaped = !escaped && ch == "\\"; } if (ch == quote || !escaped && quote != ")") state.tokenize = null; return ret("string", "string"); }; } function tokenParenthesized(stream, state) { stream.next(); // Must be '(' if (!stream.match(/\s*[\"\')]/, false)) state.tokenize = tokenString(")"); else state.tokenize = null; return ret(null, "("); } // Context management function Context(type, indent, prev) { this.type = type; this.indent = indent; this.prev = prev; } function pushContext(state, stream, type, indent) { state.context = new Context(type, stream.indentation() + (indent === false ? 0 : indentUnit), state.context); return type; } function popContext(state) { if (state.context.prev) state.context = state.context.prev; return state.context.type; } function pass(type, stream, state) { return states[state.context.type](type, stream, state); } function popAndPass(type, stream, state, n) { for (var i = n || 1; i > 0; i--) state.context = state.context.prev; return pass(type, stream, state); } // Parser function wordAsValue(stream) { var word = stream.current().toLowerCase(); if (valueKeywords.hasOwnProperty(word)) override = "atom"; else if (colorKeywords.hasOwnProperty(word)) override = "keyword"; else override = "variable"; } var states = {}; states.top = function(type, stream, state) { if (type == "{") { return pushContext(state, stream, "block"); } else if (type == "}" && state.context.prev) { return popContext(state); } else if (supportsAtComponent && /@component/.test(type)) { return pushContext(state, stream, "atComponentBlock"); } else if (/^@(-moz-)?document$/.test(type)) { return pushContext(state, stream, "documentTypes"); } else if (/^@(media|supports|(-moz-)?document|import)$/.test(type)) { return pushContext(state, stream, "atBlock"); } else if (/^@(font-face|counter-style)/.test(type)) { state.stateArg = type; return "restricted_atBlock_before"; } else if (/^@(-(moz|ms|o|webkit)-)?keyframes$/.test(type)) { return "keyframes"; } else if (type && type.charAt(0) == "@") { return pushContext(state, stream, "at"); } else if (type == "hash") { override = "builtin"; } else if (type == "word") { override = "tag"; } else if (type == "variable-definition") { return "maybeprop"; } else if (type == "interpolation") { return pushContext(state, stream, "interpolation"); } else if (type == ":") { return "pseudo"; } else if (allowNested && type == "(") { return pushContext(state, stream, "parens"); } return state.context.type; }; states.block = function(type, stream, state) { if (type == "word") { var word = stream.current().toLowerCase(); if (propertyKeywords.hasOwnProperty(word)) { override = "property"; return "maybeprop"; } else if (nonStandardPropertyKeywords.hasOwnProperty(word)) { override = "string-2"; return "maybeprop"; } else if (allowNested) { override = stream.match(/^\s*:(?:\s|$)/, false) ? "property" : "tag"; return "block"; } else { override += " error"; return "maybeprop"; } } else if (type == "meta") { return "block"; } else if (!allowNested && (type == "hash" || type == "qualifier")) { override = "error"; return "block"; } else { return states.top(type, stream, state); } }; states.maybeprop = function(type, stream, state) { if (type == ":") return pushContext(state, stream, "prop"); return pass(type, stream, state); }; states.prop = function(type, stream, state) { if (type == ";") return popContext(state); if (type == "{" && allowNested) return pushContext(state, stream, "propBlock"); if (type == "}" || type == "{") return popAndPass(type, stream, state); if (type == "(") return pushContext(state, stream, "parens"); if (type == "hash" && !/^#([0-9a-fA-f]{3,4}|[0-9a-fA-f]{6}|[0-9a-fA-f]{8})$/.test(stream.current())) { override += " error"; } else if (type == "word") { wordAsValue(stream); } else if (type == "interpolation") { return pushContext(state, stream, "interpolation"); } return "prop"; }; states.propBlock = function(type, _stream, state) { if (type == "}") return popContext(state); if (type == "word") { override = "property"; return "maybeprop"; } return state.context.type; }; states.parens = function(type, stream, state) { if (type == "{" || type == "}") return popAndPass(type, stream, state); if (type == ")") return popContext(state); if (type == "(") return pushContext(state, stream, "parens"); if (type == "interpolation") return pushContext(state, stream, "interpolation"); if (type == "word") wordAsValue(stream); return "parens"; }; states.pseudo = function(type, stream, state) { if (type == "word") { override = "variable-3"; return state.context.type; } return pass(type, stream, state); }; states.documentTypes = function(type, stream, state) { if (type == "word" && documentTypes.hasOwnProperty(stream.current())) { override = "tag"; return state.context.type; } else { return states.atBlock(type, stream, state); } }; states.atBlock = function(type, stream, state) { if (type == "(") return pushContext(state, stream, "atBlock_parens"); if (type == "}" || type == ";") return popAndPass(type, stream, state); if (type == "{") return popContext(state) && pushContext(state, stream, allowNested ? "block" : "top"); if (type == "interpolation") return pushContext(state, stream, "interpolation"); if (type == "word") { var word = stream.current().toLowerCase(); if (word == "only" || word == "not" || word == "and" || word == "or") override = "keyword"; else if (mediaTypes.hasOwnProperty(word)) override = "attribute"; else if (mediaFeatures.hasOwnProperty(word)) override = "property"; else if (mediaValueKeywords.hasOwnProperty(word)) override = "keyword"; else if (propertyKeywords.hasOwnProperty(word)) override = "property"; else if (nonStandardPropertyKeywords.hasOwnProperty(word)) override = "string-2"; else if (valueKeywords.hasOwnProperty(word)) override = "atom"; else if (colorKeywords.hasOwnProperty(word)) override = "keyword"; else override = "error"; } return state.context.type; }; states.atComponentBlock = function(type, stream, state) { if (type == "}") return popAndPass(type, stream, state); if (type == "{") return popContext(state) && pushContext(state, stream, allowNested ? "block" : "top", false); if (type == "word") override = "error"; return state.context.type; }; states.atBlock_parens = function(type, stream, state) { if (type == ")") return popContext(state); if (type == "{" || type == "}") return popAndPass(type, stream, state, 2); return states.atBlock(type, stream, state); }; states.restricted_atBlock_before = function(type, stream, state) { if (type == "{") return pushContext(state, stream, "restricted_atBlock"); if (type == "word" && state.stateArg == "@counter-style") { override = "variable"; return "restricted_atBlock_before"; } return pass(type, stream, state); }; states.restricted_atBlock = function(type, stream, state) { if (type == "}") { state.stateArg = null; return popContext(state); } if (type == "word") { if ((state.stateArg == "@font-face" && !fontProperties.hasOwnProperty(stream.current().toLowerCase())) || (state.stateArg == "@counter-style" && !counterDescriptors.hasOwnProperty(stream.current().toLowerCase()))) override = "error"; else override = "property"; return "maybeprop"; } return "restricted_atBlock"; }; states.keyframes = function(type, stream, state) { if (type == "word") { override = "variable"; return "keyframes"; } if (type == "{") return pushContext(state, stream, "top"); return pass(type, stream, state); }; states.at = function(type, stream, state) { if (type == ";") return popContext(state); if (type == "{" || type == "}") return popAndPass(type, stream, state); if (type == "word") override = "tag"; else if (type == "hash") override = "builtin"; return "at"; }; states.interpolation = function(type, stream, state) { if (type == "}") return popContext(state); if (type == "{" || type == ";") return popAndPass(type, stream, state); if (type == "word") override = "variable"; else if (type != "variable" && type != "(" && type != ")") override = "error"; return "interpolation"; }; return { startState: function(base) { return {tokenize: null, state: inline ? "block" : "top", stateArg: null, context: new Context(inline ? "block" : "top", base || 0, null)}; }, token: function(stream, state) { if (!state.tokenize && stream.eatSpace()) return null; var style = (state.tokenize || tokenBase)(stream, state); if (style && typeof style == "object") { type = style[1]; style = style[0]; } override = style; state.state = states[state.state](type, stream, state); return override; }, indent: function(state, textAfter) { var cx = state.context, ch = textAfter && textAfter.charAt(0); var indent = cx.indent; if (cx.type == "prop" && (ch == "}" || ch == ")")) cx = cx.prev; if (cx.prev) { if (ch == "}" && (cx.type == "block" || cx.type == "top" || cx.type == "interpolation" || cx.type == "restricted_atBlock")) { // Resume indentation from parent context. cx = cx.prev; indent = cx.indent; } else if (ch == ")" && (cx.type == "parens" || cx.type == "atBlock_parens") || ch == "{" && (cx.type == "at" || cx.type == "atBlock")) { // Dedent relative to current context. indent = Math.max(0, cx.indent - indentUnit); cx = cx.prev; } } return indent; }, electricChars: "}", blockCommentStart: "/*", blockCommentEnd: "*/", fold: "brace" }; }); function keySet(array) { var keys = {}; for (var i = 0; i < array.length; ++i) { keys[array[i]] = true; } return keys; } var documentTypes_ = [ "domain", "regexp", "url", "url-prefix" ], documentTypes = keySet(documentTypes_); var mediaTypes_ = [ "all", "aural", "braille", "handheld", "print", "projection", "screen", "tty", "tv", "embossed" ], mediaTypes = keySet(mediaTypes_); var mediaFeatures_ = [ "width", "min-width", "max-width", "height", "min-height", "max-height", "device-width", "min-device-width", "max-device-width", "device-height", "min-device-height", "max-device-height", "aspect-ratio", "min-aspect-ratio", "max-aspect-ratio", "device-aspect-ratio", "min-device-aspect-ratio", "max-device-aspect-ratio", "color", "min-color", "max-color", "color-index", "min-color-index", "max-color-index", "monochrome", "min-monochrome", "max-monochrome", "resolution", "min-resolution", "max-resolution", "scan", "grid", "orientation", "device-pixel-ratio", "min-device-pixel-ratio", "max-device-pixel-ratio", "pointer", "any-pointer", "hover", "any-hover" ], mediaFeatures = keySet(mediaFeatures_); var mediaValueKeywords_ = [ "landscape", "portrait", "none", "coarse", "fine", "on-demand", "hover", "interlace", "progressive" ], mediaValueKeywords = keySet(mediaValueKeywords_); var propertyKeywords_ = [ "align-content", "align-items", "align-self", "alignment-adjust", "alignment-baseline", "anchor-point", "animation", "animation-delay", "animation-direction", "animation-duration", "animation-fill-mode", "animation-iteration-count", "animation-name", "animation-play-state", "animation-timing-function", "appearance", "azimuth", "backface-visibility", "background", "background-attachment", "background-blend-mode", "background-clip", "background-color", "background-image", "background-origin", "background-position", "background-repeat", "background-size", "baseline-shift", "binding", "bleed", "bookmark-label", "bookmark-level", "bookmark-state", "bookmark-target", "border", "border-bottom", "border-bottom-color", "border-bottom-left-radius", "border-bottom-right-radius", "border-bottom-style", "border-bottom-width", "border-collapse", "border-color", "border-image", "border-image-outset", "border-image-repeat", "border-image-slice", "border-image-source", "border-image-width", "border-left", "border-left-color", "border-left-style", "border-left-width", "border-radius", "border-right", "border-right-color", "border-right-style", "border-right-width", "border-spacing", "border-style", "border-top", "border-top-color", "border-top-left-radius", "border-top-right-radius", "border-top-style", "border-top-width", "border-width", "bottom", "box-decoration-break", "box-shadow", "box-sizing", "break-after", "break-before", "break-inside", "caption-side", "clear", "clip", "color", "color-profile", "column-count", "column-fill", "column-gap", "column-rule", "column-rule-color", "column-rule-style", "column-rule-width", "column-span", "column-width", "columns", "content", "counter-increment", "counter-reset", "crop", "cue", "cue-after", "cue-before", "cursor", "direction", "display", "dominant-baseline", "drop-initial-after-adjust", "drop-initial-after-align", "drop-initial-before-adjust", "drop-initial-before-align", "drop-initial-size", "drop-initial-value", "elevation", "empty-cells", "fit", "fit-position", "flex", "flex-basis", "flex-direction", "flex-flow", "flex-grow", "flex-shrink", "flex-wrap", "float", "float-offset", "flow-from", "flow-into", "font", "font-feature-settings", "font-family", "font-kerning", "font-language-override", "font-size", "font-size-adjust", "font-stretch", "font-style", "font-synthesis", "font-variant", "font-variant-alternates", "font-variant-caps", "font-variant-east-asian", "font-variant-ligatures", "font-variant-numeric", "font-variant-position", "font-weight", "grid", "grid-area", "grid-auto-columns", "grid-auto-flow", "grid-auto-rows", "grid-column", "grid-column-end", "grid-column-gap", "grid-column-start", "grid-gap", "grid-row", "grid-row-end", "grid-row-gap", "grid-row-start", "grid-template", "grid-template-areas", "grid-template-columns", "grid-template-rows", "hanging-punctuation", "height", "hyphens", "icon", "image-orientation", "image-rendering", "image-resolution", "inline-box-align", "justify-content", "left", "letter-spacing", "line-break", "line-height", "line-stacking", "line-stacking-ruby", "line-stacking-shift", "line-stacking-strategy", "list-style", "list-style-image", "list-style-position", "list-style-type", "margin", "margin-bottom", "margin-left", "margin-right", "margin-top", "marker-offset", "marks", "marquee-direction", "marquee-loop", "marquee-play-count", "marquee-speed", "marquee-style", "max-height", "max-width", "min-height", "min-width", "move-to", "nav-down", "nav-index", "nav-left", "nav-right", "nav-up", "object-fit", "object-position", "opacity", "order", "orphans", "outline", "outline-color", "outline-offset", "outline-style", "outline-width", "overflow", "overflow-style", "overflow-wrap", "overflow-x", "overflow-y", "padding", "padding-bottom", "padding-left", "padding-right", "padding-top", "page", "page-break-after", "page-break-before", "page-break-inside", "page-policy", "pause", "pause-after", "pause-before", "perspective", "perspective-origin", "pitch", "pitch-range", "play-during", "position", "presentation-level", "punctuation-trim", "quotes", "region-break-after", "region-break-before", "region-break-inside", "region-fragment", "rendering-intent", "resize", "rest", "rest-after", "rest-before", "richness", "right", "rotation", "rotation-point", "ruby-align", "ruby-overhang", "ruby-position", "ruby-span", "shape-image-threshold", "shape-inside", "shape-margin", "shape-outside", "size", "speak", "speak-as", "speak-header", "speak-numeral", "speak-punctuation", "speech-rate", "stress", "string-set", "tab-size", "table-layout", "target", "target-name", "target-new", "target-position", "text-align", "text-align-last", "text-decoration", "text-decoration-color", "text-decoration-line", "text-decoration-skip", "text-decoration-style", "text-emphasis", "text-emphasis-color", "text-emphasis-position", "text-emphasis-style", "text-height", "text-indent", "text-justify", "text-outline", "text-overflow", "text-shadow", "text-size-adjust", "text-space-collapse", "text-transform", "text-underline-position", "text-wrap", "top", "transform", "transform-origin", "transform-style", "transition", "transition-delay", "transition-duration", "transition-property", "transition-timing-function", "unicode-bidi", "vertical-align", "visibility", "voice-balance", "voice-duration", "voice-family", "voice-pitch", "voice-range", "voice-rate", "voice-stress", "voice-volume", "volume", "white-space", "widows", "width", "word-break", "word-spacing", "word-wrap", "z-index", // SVG-specific "clip-path", "clip-rule", "mask", "enable-background", "filter", "flood-color", "flood-opacity", "lighting-color", "stop-color", "stop-opacity", "pointer-events", "color-interpolation", "color-interpolation-filters", "color-rendering", "fill", "fill-opacity", "fill-rule", "image-rendering", "marker", "marker-end", "marker-mid", "marker-start", "shape-rendering", "stroke", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width", "text-rendering", "baseline-shift", "dominant-baseline", "glyph-orientation-horizontal", "glyph-orientation-vertical", "text-anchor", "writing-mode" ], propertyKeywords = keySet(propertyKeywords_); var nonStandardPropertyKeywords_ = [ "scrollbar-arrow-color", "scrollbar-base-color", "scrollbar-dark-shadow-color", "scrollbar-face-color", "scrollbar-highlight-color", "scrollbar-shadow-color", "scrollbar-3d-light-color", "scrollbar-track-color", "shape-inside", "searchfield-cancel-button", "searchfield-decoration", "searchfield-results-button", "searchfield-results-decoration", "zoom" ], nonStandardPropertyKeywords = keySet(nonStandardPropertyKeywords_); var fontProperties_ = [ "font-family", "src", "unicode-range", "font-variant", "font-feature-settings", "font-stretch", "font-weight", "font-style" ], fontProperties = keySet(fontProperties_); var counterDescriptors_ = [ "additive-symbols", "fallback", "negative", "pad", "prefix", "range", "speak-as", "suffix", "symbols", "system" ], counterDescriptors = keySet(counterDescriptors_); var colorKeywords_ = [ "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkturquoise", "darkviolet", "deeppink", "deepskyblue", "dimgray", "dodgerblue", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "honeydew", "hotpink", "indianred", "indigo", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "rebeccapurple", "red", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "snow", "springgreen", "steelblue", "tan", "teal", "thistle", "tomato", "turquoise", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen" ], colorKeywords = keySet(colorKeywords_); var valueKeywords_ = [ "above", "absolute", "activeborder", "additive", "activecaption", "afar", "after-white-space", "ahead", "alias", "all", "all-scroll", "alphabetic", "alternate", "always", "amharic", "amharic-abegede", "antialiased", "appworkspace", "arabic-indic", "armenian", "asterisks", "attr", "auto", "avoid", "avoid-column", "avoid-page", "avoid-region", "background", "backwards", "baseline", "below", "bidi-override", "binary", "bengali", "blink", "block", "block-axis", "bold", "bolder", "border", "border-box", "both", "bottom", "break", "break-all", "break-word", "bullets", "button", "button-bevel", "buttonface", "buttonhighlight", "buttonshadow", "buttontext", "calc", "cambodian", "capitalize", "caps-lock-indicator", "caption", "captiontext", "caret", "cell", "center", "checkbox", "circle", "cjk-decimal", "cjk-earthly-branch", "cjk-heavenly-stem", "cjk-ideographic", "clear", "clip", "close-quote", "col-resize", "collapse", "color", "color-burn", "color-dodge", "column", "column-reverse", "compact", "condensed", "contain", "content", "content-box", "context-menu", "continuous", "copy", "counter", "counters", "cover", "crop", "cross", "crosshair", "currentcolor", "cursive", "cyclic", "darken", "dashed", "decimal", "decimal-leading-zero", "default", "default-button", "dense", "destination-atop", "destination-in", "destination-out", "destination-over", "devanagari", "difference", "disc", "discard", "disclosure-closed", "disclosure-open", "document", "dot-dash", "dot-dot-dash", "dotted", "double", "down", "e-resize", "ease", "ease-in", "ease-in-out", "ease-out", "element", "ellipse", "ellipsis", "embed", "end", "ethiopic", "ethiopic-abegede", "ethiopic-abegede-am-et", "ethiopic-abegede-gez", "ethiopic-abegede-ti-er", "ethiopic-abegede-ti-et", "ethiopic-halehame-aa-er", "ethiopic-halehame-aa-et", "ethiopic-halehame-am-et", "ethiopic-halehame-gez", "ethiopic-halehame-om-et", "ethiopic-halehame-sid-et", "ethiopic-halehame-so-et", "ethiopic-halehame-ti-er", "ethiopic-halehame-ti-et", "ethiopic-halehame-tig", "ethiopic-numeric", "ew-resize", "exclusion", "expanded", "extends", "extra-condensed", "extra-expanded", "fantasy", "fast", "fill", "fixed", "flat", "flex", "flex-end", "flex-start", "footnotes", "forwards", "from", "geometricPrecision", "georgian", "graytext", "grid", "groove", "gujarati", "gurmukhi", "hand", "hangul", "hangul-consonant", "hard-light", "hebrew", "help", "hidden", "hide", "higher", "highlight", "highlighttext", "hiragana", "hiragana-iroha", "horizontal", "hsl", "hsla", "hue", "icon", "ignore", "inactiveborder", "inactivecaption", "inactivecaptiontext", "infinite", "infobackground", "infotext", "inherit", "initial", "inline", "inline-axis", "inline-block", "inline-flex", "inline-grid", "inline-table", "inset", "inside", "intrinsic", "invert", "italic", "japanese-formal", "japanese-informal", "justify", "kannada", "katakana", "katakana-iroha", "keep-all", "khmer", "korean-hangul-formal", "korean-hanja-formal", "korean-hanja-informal", "landscape", "lao", "large", "larger", "left", "level", "lighter", "lighten", "line-through", "linear", "linear-gradient", "lines", "list-item", "listbox", "listitem", "local", "logical", "loud", "lower", "lower-alpha", "lower-armenian", "lower-greek", "lower-hexadecimal", "lower-latin", "lower-norwegian", "lower-roman", "lowercase", "ltr", "luminosity", "malayalam", "match", "matrix", "matrix3d", "media-controls-background", "media-current-time-display", "media-fullscreen-button", "media-mute-button", "media-play-button", "media-return-to-realtime-button", "media-rewind-button", "media-seek-back-button", "media-seek-forward-button", "media-slider", "media-sliderthumb", "media-time-remaining-display", "media-volume-slider", "media-volume-slider-container", "media-volume-sliderthumb", "medium", "menu", "menulist", "menulist-button", "menulist-text", "menulist-textfield", "menutext", "message-box", "middle", "min-intrinsic", "mix", "mongolian", "monospace", "move", "multiple", "multiply", "myanmar", "n-resize", "narrower", "ne-resize", "nesw-resize", "no-close-quote", "no-drop", "no-open-quote", "no-repeat", "none", "normal", "not-allowed", "nowrap", "ns-resize", "numbers", "numeric", "nw-resize", "nwse-resize", "oblique", "octal", "open-quote", "optimizeLegibility", "optimizeSpeed", "oriya", "oromo", "outset", "outside", "outside-shape", "overlay", "overline", "padding", "padding-box", "painted", "page", "paused", "persian", "perspective", "plus-darker", "plus-lighter", "pointer", "polygon", "portrait", "pre", "pre-line", "pre-wrap", "preserve-3d", "progress", "push-button", "radial-gradient", "radio", "read-only", "read-write", "read-write-plaintext-only", "rectangle", "region", "relative", "repeat", "repeating-linear-gradient", "repeating-radial-gradient", "repeat-x", "repeat-y", "reset", "reverse", "rgb", "rgba", "ridge", "right", "rotate", "rotate3d", "rotateX", "rotateY", "rotateZ", "round", "row", "row-resize", "row-reverse", "rtl", "run-in", "running", "s-resize", "sans-serif", "saturation", "scale", "scale3d", "scaleX", "scaleY", "scaleZ", "screen", "scroll", "scrollbar", "se-resize", "searchfield", "searchfield-cancel-button", "searchfield-decoration", "searchfield-results-button", "searchfield-results-decoration", "semi-condensed", "semi-expanded", "separate", "serif", "show", "sidama", "simp-chinese-formal", "simp-chinese-informal", "single", "skew", "skewX", "skewY", "skip-white-space", "slide", "slider-horizontal", "slider-vertical", "sliderthumb-horizontal", "sliderthumb-vertical", "slow", "small", "small-caps", "small-caption", "smaller", "soft-light", "solid", "somali", "source-atop", "source-in", "source-out", "source-over", "space", "space-around", "space-between", "spell-out", "square", "square-button", "start", "static", "status-bar", "stretch", "stroke", "sub", "subpixel-antialiased", "super", "sw-resize", "symbolic", "symbols", "table", "table-caption", "table-cell", "table-column", "table-column-group", "table-footer-group", "table-header-group", "table-row", "table-row-group", "tamil", "telugu", "text", "text-bottom", "text-top", "textarea", "textfield", "thai", "thick", "thin", "threeddarkshadow", "threedface", "threedhighlight", "threedlightshadow", "threedshadow", "tibetan", "tigre", "tigrinya-er", "tigrinya-er-abegede", "tigrinya-et", "tigrinya-et-abegede", "to", "top", "trad-chinese-formal", "trad-chinese-informal", "translate", "translate3d", "translateX", "translateY", "translateZ", "transparent", "ultra-condensed", "ultra-expanded", "underline", "up", "upper-alpha", "upper-armenian", "upper-greek", "upper-hexadecimal", "upper-latin", "upper-norwegian", "upper-roman", "uppercase", "urdu", "url", "var", "vertical", "vertical-text", "visible", "visibleFill", "visiblePainted", "visibleStroke", "visual", "w-resize", "wait", "wave", "wider", "window", "windowframe", "windowtext", "words", "wrap", "wrap-reverse", "x-large", "x-small", "xor", "xx-large", "xx-small" ], valueKeywords = keySet(valueKeywords_); var allWords = documentTypes_.concat(mediaTypes_).concat(mediaFeatures_).concat(mediaValueKeywords_) .concat(propertyKeywords_).concat(nonStandardPropertyKeywords_).concat(colorKeywords_) .concat(valueKeywords_); CodeMirror.registerHelper("hintWords", "css", allWords); function tokenCComment(stream, state) { var maybeEnd = false, ch; while ((ch = stream.next()) != null) { if (maybeEnd && ch == "/") { state.tokenize = null; break; } maybeEnd = (ch == "*"); } return ["comment", "comment"]; } CodeMirror.defineMIME("text/css", { documentTypes: documentTypes, mediaTypes: mediaTypes, mediaFeatures: mediaFeatures, mediaValueKeywords: mediaValueKeywords, propertyKeywords: propertyKeywords, nonStandardPropertyKeywords: nonStandardPropertyKeywords, fontProperties: fontProperties, counterDescriptors: counterDescriptors, colorKeywords: colorKeywords, valueKeywords: valueKeywords, tokenHooks: { "/": function(stream, state) { if (!stream.eat("*")) return false; state.tokenize = tokenCComment; return tokenCComment(stream, state); } }, name: "css" }); CodeMirror.defineMIME("text/x-scss", { mediaTypes: mediaTypes, mediaFeatures: mediaFeatures, mediaValueKeywords: mediaValueKeywords, propertyKeywords: propertyKeywords, nonStandardPropertyKeywords: nonStandardPropertyKeywords, colorKeywords: colorKeywords, valueKeywords: valueKeywords, fontProperties: fontProperties, allowNested: true, tokenHooks: { "/": function(stream, state) { if (stream.eat("/")) { stream.skipToEnd(); return ["comment", "comment"]; } else if (stream.eat("*")) { state.tokenize = tokenCComment; return tokenCComment(stream, state); } else { return ["operator", "operator"]; } }, ":": function(stream) { if (stream.match(/\s*\{/)) return [null, "{"]; return false; }, "$": function(stream) { stream.match(/^[\w-]+/); if (stream.match(/^\s*:/, false)) return ["variable-2", "variable-definition"]; return ["variable-2", "variable"]; }, "#": function(stream) { if (!stream.eat("{")) return false; return [null, "interpolation"]; } }, name: "css", helperType: "scss" }); CodeMirror.defineMIME("text/x-less", { mediaTypes: mediaTypes, mediaFeatures: mediaFeatures, mediaValueKeywords: mediaValueKeywords, propertyKeywords: propertyKeywords, nonStandardPropertyKeywords: nonStandardPropertyKeywords, colorKeywords: colorKeywords, valueKeywords: valueKeywords, fontProperties: fontProperties, allowNested: true, tokenHooks: { "/": function(stream, state) { if (stream.eat("/")) { stream.skipToEnd(); return ["comment", "comment"]; } else if (stream.eat("*")) { state.tokenize = tokenCComment; return tokenCComment(stream, state); } else { return ["operator", "operator"]; } }, "@": function(stream) { if (stream.eat("{")) return [null, "interpolation"]; if (stream.match(/^(charset|document|font-face|import|(-(moz|ms|o|webkit)-)?keyframes|media|namespace|page|supports)\b/, false)) return false; stream.eatWhile(/[\w\\\-]/); if (stream.match(/^\s*:/, false)) return ["variable-2", "variable-definition"]; return ["variable-2", "variable"]; }, "&": function() { return ["atom", "atom"]; } }, name: "css", helperType: "less" }); CodeMirror.defineMIME("text/x-gss", { documentTypes: documentTypes, mediaTypes: mediaTypes, mediaFeatures: mediaFeatures, propertyKeywords: propertyKeywords, nonStandardPropertyKeywords: nonStandardPropertyKeywords, fontProperties: fontProperties, counterDescriptors: counterDescriptors, colorKeywords: colorKeywords, valueKeywords: valueKeywords, supportsAtComponent: true, tokenHooks: { "/": function(stream, state) { if (!stream.eat("*")) return false; state.tokenize = tokenCComment; return tokenCComment(stream, state); } }, name: "css", helperType: "gss" }); }); plugins/file-manager-advanced/application/library/codemirror/mode/css/gss.html000064400000005334147176754550023663 0ustar00 CodeMirror: Closure Stylesheets (GSS) mode

Closure Stylesheets (GSS) mode

A mode for Closure Stylesheets (GSS).

MIME type defined: text/x-gss.

Parsing/Highlighting Tests: normal, verbose.

plugins/file-manager-advanced/application/library/codemirror/mode/css/gss_test.js000064400000000714147176754550024367 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function() { "use strict"; var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-gss"); function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), "gss"); } MT("atComponent", "[def @component] {", "[tag foo] {", " [property color]: [keyword black];", "}", "}"); })(); plugins/file-manager-advanced/application/library/codemirror/mode/css/index.html000064400000003570147176754550024176 0ustar00 CodeMirror: CSS mode

CSS mode

MIME types defined: text/css, text/x-scss (demo), text/x-less (demo).

Parsing/Highlighting Tests: normal, verbose.

plugins/file-manager-advanced/application/library/codemirror/mode/css/less.html000064400000007742147176754550024042 0ustar00 CodeMirror: LESS mode

LESS mode

The LESS mode is a sub-mode of the CSS mode (defined in css.js).

Parsing/Highlighting Tests: normal, verbose.

plugins/file-manager-advanced/application/library/codemirror/mode/css/less_test.js000064400000003517147176754550024545 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function() { "use strict"; var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-less"); function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), "less"); } MT("variable", "[variable-2 @base]: [atom #f04615];", "[qualifier .class] {", " [property width]: [variable percentage]([number 0.5]); [comment // returns `50%`]", " [property color]: [variable saturate]([variable-2 @base], [number 5%]);", "}"); MT("amp", "[qualifier .child], [qualifier .sibling] {", " [qualifier .parent] [atom &] {", " [property color]: [keyword black];", " }", " [atom &] + [atom &] {", " [property color]: [keyword red];", " }", "}"); MT("mixin", "[qualifier .mixin] ([variable dark]; [variable-2 @color]) {", " [property color]: [atom darken]([variable-2 @color], [number 10%]);", "}", "[qualifier .mixin] ([variable light]; [variable-2 @color]) {", " [property color]: [atom lighten]([variable-2 @color], [number 10%]);", "}", "[qualifier .mixin] ([variable-2 @_]; [variable-2 @color]) {", " [property display]: [atom block];", "}", "[variable-2 @switch]: [variable light];", "[qualifier .class] {", " [qualifier .mixin]([variable-2 @switch]; [atom #888]);", "}"); MT("nest", "[qualifier .one] {", " [def @media] ([property width]: [number 400px]) {", " [property font-size]: [number 1.2em];", " [def @media] [attribute print] [keyword and] [property color] {", " [property color]: [keyword blue];", " }", " }", "}"); MT("interpolation", ".@{[variable foo]} { [property font-weight]: [atom bold]; }"); })(); plugins/file-manager-advanced/application/library/codemirror/mode/css/scss.html000064400000005266147176754550024046 0ustar00 CodeMirror: SCSS mode

SCSS mode

The SCSS mode is a sub-mode of the CSS mode (defined in css.js).

Parsing/Highlighting Tests: normal, verbose.

plugins/file-manager-advanced/application/library/codemirror/mode/css/scss_test.js000064400000006064147176754550024552 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function() { var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-scss"); function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), "scss"); } MT('url_with_quotation', "[tag foo] { [property background]:[atom url]([string test.jpg]) }"); MT('url_with_double_quotes', "[tag foo] { [property background]:[atom url]([string \"test.jpg\"]) }"); MT('url_with_single_quotes', "[tag foo] { [property background]:[atom url]([string \'test.jpg\']) }"); MT('string', "[def @import] [string \"compass/css3\"]"); MT('important_keyword', "[tag foo] { [property background]:[atom url]([string \'test.jpg\']) [keyword !important] }"); MT('variable', "[variable-2 $blue]:[atom #333]"); MT('variable_as_attribute', "[tag foo] { [property color]:[variable-2 $blue] }"); MT('numbers', "[tag foo] { [property padding]:[number 10px] [number 10] [number 10em] [number 8in] }"); MT('number_percentage', "[tag foo] { [property width]:[number 80%] }"); MT('selector', "[builtin #hello][qualifier .world]{}"); MT('singleline_comment', "[comment // this is a comment]"); MT('multiline_comment', "[comment /*foobar*/]"); MT('attribute_with_hyphen', "[tag foo] { [property font-size]:[number 10px] }"); MT('string_after_attribute', "[tag foo] { [property content]:[string \"::\"] }"); MT('directives', "[def @include] [qualifier .mixin]"); MT('basic_structure', "[tag p] { [property background]:[keyword red]; }"); MT('nested_structure', "[tag p] { [tag a] { [property color]:[keyword red]; } }"); MT('mixin', "[def @mixin] [tag table-base] {}"); MT('number_without_semicolon', "[tag p] {[property width]:[number 12]}", "[tag a] {[property color]:[keyword red];}"); MT('atom_in_nested_block', "[tag p] { [tag a] { [property color]:[atom #000]; } }"); MT('interpolation_in_property', "[tag foo] { #{[variable-2 $hello]}:[number 2]; }"); MT('interpolation_in_selector', "[tag foo]#{[variable-2 $hello]} { [property color]:[atom #000]; }"); MT('interpolation_error', "[tag foo]#{[variable foo]} { [property color]:[atom #000]; }"); MT("divide_operator", "[tag foo] { [property width]:[number 4] [operator /] [number 2] }"); MT('nested_structure_with_id_selector', "[tag p] { [builtin #hello] { [property color]:[keyword red]; } }"); MT('indent_mixin', "[def @mixin] [tag container] (", " [variable-2 $a]: [number 10],", " [variable-2 $b]: [number 10])", "{}"); MT('indent_nested', "[tag foo] {", " [tag bar] {", " }", "}"); MT('indent_parentheses', "[tag foo] {", " [property color]: [atom darken]([variable-2 $blue],", " [number 9%]);", "}"); MT('indent_vardef', "[variable-2 $name]:", " [string 'val'];", "[tag tag] {", " [tag inner] {", " [property margin]: [number 3px];", " }", "}"); })(); plugins/file-manager-advanced/application/library/codemirror/mode/css/test.js000064400000015201147176754550023510 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function() { var mode = CodeMirror.getMode({indentUnit: 2}, "css"); function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } // Error, because "foobarhello" is neither a known type or property, but // property was expected (after "and"), and it should be in parentheses. MT("atMediaUnknownType", "[def @media] [attribute screen] [keyword and] [error foobarhello] { }"); // Soft error, because "foobarhello" is not a known property or type. MT("atMediaUnknownProperty", "[def @media] [attribute screen] [keyword and] ([error foobarhello]) { }"); // Make sure nesting works with media queries MT("atMediaMaxWidthNested", "[def @media] [attribute screen] [keyword and] ([property max-width]: [number 25px]) { [tag foo] { } }"); MT("atMediaFeatureValueKeyword", "[def @media] ([property orientation]: [keyword landscape]) { }"); MT("atMediaUnknownFeatureValueKeyword", "[def @media] ([property orientation]: [error upsidedown]) { }"); MT("tagSelector", "[tag foo] { }"); MT("classSelector", "[qualifier .foo-bar_hello] { }"); MT("idSelector", "[builtin #foo] { [error #foo] }"); MT("tagSelectorUnclosed", "[tag foo] { [property margin]: [number 0] } [tag bar] { }"); MT("tagStringNoQuotes", "[tag foo] { [property font-family]: [variable hello] [variable world]; }"); MT("tagStringDouble", "[tag foo] { [property font-family]: [string \"hello world\"]; }"); MT("tagStringSingle", "[tag foo] { [property font-family]: [string 'hello world']; }"); MT("tagColorKeyword", "[tag foo] {", " [property color]: [keyword black];", " [property color]: [keyword navy];", " [property color]: [keyword yellow];", "}"); MT("tagColorHex3", "[tag foo] { [property background]: [atom #fff]; }"); MT("tagColorHex4", "[tag foo] { [property background]: [atom #ffff]; }"); MT("tagColorHex6", "[tag foo] { [property background]: [atom #ffffff]; }"); MT("tagColorHex8", "[tag foo] { [property background]: [atom #ffffffff]; }"); MT("tagColorHex5Invalid", "[tag foo] { [property background]: [atom&error #fffff]; }"); MT("tagColorHexInvalid", "[tag foo] { [property background]: [atom&error #ffg]; }"); MT("tagNegativeNumber", "[tag foo] { [property margin]: [number -5px]; }"); MT("tagPositiveNumber", "[tag foo] { [property padding]: [number 5px]; }"); MT("tagVendor", "[tag foo] { [meta -foo-][property box-sizing]: [meta -foo-][atom border-box]; }"); MT("tagBogusProperty", "[tag foo] { [property&error barhelloworld]: [number 0]; }"); MT("tagTwoProperties", "[tag foo] { [property margin]: [number 0]; [property padding]: [number 0]; }"); MT("tagTwoPropertiesURL", "[tag foo] { [property background]: [atom url]([string //example.com/foo.png]); [property padding]: [number 0]; }"); MT("indent_tagSelector", "[tag strong], [tag em] {", " [property background]: [atom rgba](", " [number 255], [number 255], [number 0], [number .2]", " );", "}"); MT("indent_atMedia", "[def @media] {", " [tag foo] {", " [property color]:", " [keyword yellow];", " }", "}"); MT("indent_comma", "[tag foo] {", " [property font-family]: [variable verdana],", " [atom sans-serif];", "}"); MT("indent_parentheses", "[tag foo]:[variable-3 before] {", " [property background]: [atom url](", "[string blahblah]", "[string etc]", "[string ]) [keyword !important];", "}"); MT("font_face", "[def @font-face] {", " [property font-family]: [string 'myfont'];", " [error nonsense]: [string 'abc'];", " [property src]: [atom url]([string http://blah]),", " [atom url]([string http://foo]);", "}"); MT("empty_url", "[def @import] [atom url]() [attribute screen];"); MT("parens", "[qualifier .foo] {", " [property background-image]: [variable fade]([atom #000], [number 20%]);", " [property border-image]: [atom linear-gradient](", " [atom to] [atom bottom],", " [variable fade]([atom #000], [number 20%]) [number 0%],", " [variable fade]([atom #000], [number 20%]) [number 100%]", " );", "}"); MT("css_variable", ":[variable-3 root] {", " [variable-2 --main-color]: [atom #06c];", "}", "[tag h1][builtin #foo] {", " [property color]: [atom var]([variable-2 --main-color]);", "}"); MT("supports", "[def @supports] ([keyword not] (([property text-align-last]: [atom justify]) [keyword or] ([meta -moz-][property text-align-last]: [atom justify])) {", " [property text-align-last]: [atom justify];", "}"); MT("document", "[def @document] [tag url]([string http://blah]),", " [tag url-prefix]([string https://]),", " [tag domain]([string blah.com]),", " [tag regexp]([string \".*blah.+\"]) {", " [builtin #id] {", " [property background-color]: [keyword white];", " }", " [tag foo] {", " [property font-family]: [variable Verdana], [atom sans-serif];", " }", "}"); MT("document_url", "[def @document] [tag url]([string http://blah]) { [qualifier .class] { } }"); MT("document_urlPrefix", "[def @document] [tag url-prefix]([string https://]) { [builtin #id] { } }"); MT("document_domain", "[def @document] [tag domain]([string blah.com]) { [tag foo] { } }"); MT("document_regexp", "[def @document] [tag regexp]([string \".*blah.+\"]) { [builtin #id] { } }"); MT("counter-style", "[def @counter-style] [variable binary] {", " [property system]: [atom numeric];", " [property symbols]: [number 0] [number 1];", " [property suffix]: [string \".\"];", " [property range]: [atom infinite];", " [property speak-as]: [atom numeric];", "}"); MT("counter-style-additive-symbols", "[def @counter-style] [variable simple-roman] {", " [property system]: [atom additive];", " [property additive-symbols]: [number 10] [variable X], [number 5] [variable V], [number 1] [variable I];", " [property range]: [number 1] [number 49];", "}"); MT("counter-style-use", "[tag ol][qualifier .roman] { [property list-style]: [variable simple-roman]; }"); MT("counter-style-symbols", "[tag ol] { [property list-style]: [atom symbols]([atom cyclic] [string \"*\"] [string \"\\2020\"] [string \"\\2021\"] [string \"\\A7\"]); }"); })(); plugins/file-manager-advanced/application/library/codemirror/mode/cypher/cypher.js000064400000014205147176754550024530 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE // By the Neo4j Team and contributors. // https://github.com/neo4j-contrib/CodeMirror (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; var wordRegexp = function(words) { return new RegExp("^(?:" + words.join("|") + ")$", "i"); }; CodeMirror.defineMode("cypher", function(config) { var tokenBase = function(stream/*, state*/) { var ch = stream.next(); if (ch === "\"" || ch === "'") { stream.match(/.+?["']/); return "string"; } if (/[{}\(\),\.;\[\]]/.test(ch)) { curPunc = ch; return "node"; } else if (ch === "/" && stream.eat("/")) { stream.skipToEnd(); return "comment"; } else if (operatorChars.test(ch)) { stream.eatWhile(operatorChars); return null; } else { stream.eatWhile(/[_\w\d]/); if (stream.eat(":")) { stream.eatWhile(/[\w\d_\-]/); return "atom"; } var word = stream.current(); if (funcs.test(word)) return "builtin"; if (preds.test(word)) return "def"; if (keywords.test(word)) return "keyword"; return "variable"; } }; var pushContext = function(state, type, col) { return state.context = { prev: state.context, indent: state.indent, col: col, type: type }; }; var popContext = function(state) { state.indent = state.context.indent; return state.context = state.context.prev; }; var indentUnit = config.indentUnit; var curPunc; var funcs = wordRegexp(["abs", "acos", "allShortestPaths", "asin", "atan", "atan2", "avg", "ceil", "coalesce", "collect", "cos", "cot", "count", "degrees", "e", "endnode", "exp", "extract", "filter", "floor", "haversin", "head", "id", "keys", "labels", "last", "left", "length", "log", "log10", "lower", "ltrim", "max", "min", "node", "nodes", "percentileCont", "percentileDisc", "pi", "radians", "rand", "range", "reduce", "rel", "relationship", "relationships", "replace", "reverse", "right", "round", "rtrim", "shortestPath", "sign", "sin", "size", "split", "sqrt", "startnode", "stdev", "stdevp", "str", "substring", "sum", "tail", "tan", "timestamp", "toFloat", "toInt", "toString", "trim", "type", "upper"]); var preds = wordRegexp(["all", "and", "any", "contains", "exists", "has", "in", "none", "not", "or", "single", "xor"]); var keywords = wordRegexp(["as", "asc", "ascending", "assert", "by", "case", "commit", "constraint", "create", "csv", "cypher", "delete", "desc", "descending", "detach", "distinct", "drop", "else", "end", "ends", "explain", "false", "fieldterminator", "foreach", "from", "headers", "in", "index", "is", "join", "limit", "load", "match", "merge", "null", "on", "optional", "order", "periodic", "profile", "remove", "return", "scan", "set", "skip", "start", "starts", "then", "true", "union", "unique", "unwind", "using", "when", "where", "with"]); var operatorChars = /[*+\-<>=&|~%^]/; return { startState: function(/*base*/) { return { tokenize: tokenBase, context: null, indent: 0, col: 0 }; }, token: function(stream, state) { if (stream.sol()) { if (state.context && (state.context.align == null)) { state.context.align = false; } state.indent = stream.indentation(); } if (stream.eatSpace()) { return null; } var style = state.tokenize(stream, state); if (style !== "comment" && state.context && (state.context.align == null) && state.context.type !== "pattern") { state.context.align = true; } if (curPunc === "(") { pushContext(state, ")", stream.column()); } else if (curPunc === "[") { pushContext(state, "]", stream.column()); } else if (curPunc === "{") { pushContext(state, "}", stream.column()); } else if (/[\]\}\)]/.test(curPunc)) { while (state.context && state.context.type === "pattern") { popContext(state); } if (state.context && curPunc === state.context.type) { popContext(state); } } else if (curPunc === "." && state.context && state.context.type === "pattern") { popContext(state); } else if (/atom|string|variable/.test(style) && state.context) { if (/[\}\]]/.test(state.context.type)) { pushContext(state, "pattern", stream.column()); } else if (state.context.type === "pattern" && !state.context.align) { state.context.align = true; state.context.col = stream.column(); } } return style; }, indent: function(state, textAfter) { var firstChar = textAfter && textAfter.charAt(0); var context = state.context; if (/[\]\}]/.test(firstChar)) { while (context && context.type === "pattern") { context = context.prev; } } var closing = context && firstChar === context.type; if (!context) return 0; if (context.type === "keywords") return CodeMirror.commands.newlineAndIndent; if (context.align) return context.col + (closing ? 0 : 1); return context.indent + (closing ? 0 : indentUnit); } }; }); CodeMirror.modeExtensions["cypher"] = { autoFormatLineBreaks: function(text) { var i, lines, reProcessedPortion; var lines = text.split("\n"); var reProcessedPortion = /\s+\b(return|where|order by|match|with|skip|limit|create|delete|set)\b\s/g; for (var i = 0; i < lines.length; i++) lines[i] = lines[i].replace(reProcessedPortion, " \n$1 ").trim(); return lines.join("\n"); } }; CodeMirror.defineMIME("application/x-cypher-query", "cypher"); }); plugins/file-manager-advanced/application/library/codemirror/mode/cypher/index.html000064400000003564147176754550024703 0ustar00 CodeMirror: Cypher Mode for CodeMirror

Cypher Mode for CodeMirror

MIME types defined: application/x-cypher-query

plugins/file-manager-advanced/application/library/codemirror/mode/d/d.js000064400000016616147176754550022422 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("d", function(config, parserConfig) { var indentUnit = config.indentUnit, statementIndentUnit = parserConfig.statementIndentUnit || indentUnit, keywords = parserConfig.keywords || {}, builtin = parserConfig.builtin || {}, blockKeywords = parserConfig.blockKeywords || {}, atoms = parserConfig.atoms || {}, hooks = parserConfig.hooks || {}, multiLineStrings = parserConfig.multiLineStrings; var isOperatorChar = /[+\-*&%=<>!?|\/]/; var curPunc; function tokenBase(stream, state) { var ch = stream.next(); if (hooks[ch]) { var result = hooks[ch](stream, state); if (result !== false) return result; } if (ch == '"' || ch == "'" || ch == "`") { state.tokenize = tokenString(ch); return state.tokenize(stream, state); } if (/[\[\]{}\(\),;\:\.]/.test(ch)) { curPunc = ch; return null; } if (/\d/.test(ch)) { stream.eatWhile(/[\w\.]/); return "number"; } if (ch == "/") { if (stream.eat("+")) { state.tokenize = tokenComment; return tokenNestedComment(stream, state); } if (stream.eat("*")) { state.tokenize = tokenComment; return tokenComment(stream, state); } if (stream.eat("/")) { stream.skipToEnd(); return "comment"; } } if (isOperatorChar.test(ch)) { stream.eatWhile(isOperatorChar); return "operator"; } stream.eatWhile(/[\w\$_\xa1-\uffff]/); var cur = stream.current(); if (keywords.propertyIsEnumerable(cur)) { if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; return "keyword"; } if (builtin.propertyIsEnumerable(cur)) { if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; return "builtin"; } if (atoms.propertyIsEnumerable(cur)) return "atom"; return "variable"; } function tokenString(quote) { return function(stream, state) { var escaped = false, next, end = false; while ((next = stream.next()) != null) { if (next == quote && !escaped) {end = true; break;} escaped = !escaped && next == "\\"; } if (end || !(escaped || multiLineStrings)) state.tokenize = null; return "string"; }; } function tokenComment(stream, state) { var maybeEnd = false, ch; while (ch = stream.next()) { if (ch == "/" && maybeEnd) { state.tokenize = null; break; } maybeEnd = (ch == "*"); } return "comment"; } function tokenNestedComment(stream, state) { var maybeEnd = false, ch; while (ch = stream.next()) { if (ch == "/" && maybeEnd) { state.tokenize = null; break; } maybeEnd = (ch == "+"); } return "comment"; } function Context(indented, column, type, align, prev) { this.indented = indented; this.column = column; this.type = type; this.align = align; this.prev = prev; } function pushContext(state, col, type) { var indent = state.indented; if (state.context && state.context.type == "statement") indent = state.context.indented; return state.context = new Context(indent, col, type, null, state.context); } function popContext(state) { var t = state.context.type; if (t == ")" || t == "]" || t == "}") state.indented = state.context.indented; return state.context = state.context.prev; } // Interface return { startState: function(basecolumn) { return { tokenize: null, context: new Context((basecolumn || 0) - indentUnit, 0, "top", false), indented: 0, startOfLine: true }; }, token: function(stream, state) { var ctx = state.context; if (stream.sol()) { if (ctx.align == null) ctx.align = false; state.indented = stream.indentation(); state.startOfLine = true; } if (stream.eatSpace()) return null; curPunc = null; var style = (state.tokenize || tokenBase)(stream, state); if (style == "comment" || style == "meta") return style; if (ctx.align == null) ctx.align = true; if ((curPunc == ";" || curPunc == ":" || curPunc == ",") && ctx.type == "statement") popContext(state); else if (curPunc == "{") pushContext(state, stream.column(), "}"); else if (curPunc == "[") pushContext(state, stream.column(), "]"); else if (curPunc == "(") pushContext(state, stream.column(), ")"); else if (curPunc == "}") { while (ctx.type == "statement") ctx = popContext(state); if (ctx.type == "}") ctx = popContext(state); while (ctx.type == "statement") ctx = popContext(state); } else if (curPunc == ctx.type) popContext(state); else if (((ctx.type == "}" || ctx.type == "top") && curPunc != ';') || (ctx.type == "statement" && curPunc == "newstatement")) pushContext(state, stream.column(), "statement"); state.startOfLine = false; return style; }, indent: function(state, textAfter) { if (state.tokenize != tokenBase && state.tokenize != null) return CodeMirror.Pass; var ctx = state.context, firstChar = textAfter && textAfter.charAt(0); if (ctx.type == "statement" && firstChar == "}") ctx = ctx.prev; var closing = firstChar == ctx.type; if (ctx.type == "statement") return ctx.indented + (firstChar == "{" ? 0 : statementIndentUnit); else if (ctx.align) return ctx.column + (closing ? 0 : 1); else return ctx.indented + (closing ? 0 : indentUnit); }, electricChars: "{}" }; }); function words(str) { var obj = {}, words = str.split(" "); for (var i = 0; i < words.length; ++i) obj[words[i]] = true; return obj; } var blockKeywords = "body catch class do else enum for foreach foreach_reverse if in interface mixin " + "out scope struct switch try union unittest version while with"; CodeMirror.defineMIME("text/x-d", { name: "d", keywords: words("abstract alias align asm assert auto break case cast cdouble cent cfloat const continue " + "debug default delegate delete deprecated export extern final finally function goto immutable " + "import inout invariant is lazy macro module new nothrow override package pragma private " + "protected public pure ref return shared short static super synchronized template this " + "throw typedef typeid typeof volatile __FILE__ __LINE__ __gshared __traits __vector __parameters " + blockKeywords), blockKeywords: words(blockKeywords), builtin: words("bool byte char creal dchar double float idouble ifloat int ireal long real short ubyte " + "ucent uint ulong ushort wchar wstring void size_t sizediff_t"), atoms: words("exit failure success true false null"), hooks: { "@": function(stream, _state) { stream.eatWhile(/[\w\$_]/); return "meta"; } } }); }); plugins/file-manager-advanced/application/library/codemirror/mode/d/index.html000064400000014274147176754550023634 0ustar00 CodeMirror: D mode

D mode

Simple mode that handle D-Syntax (DLang Homepage).

MIME types defined: text/x-d .

plugins/file-manager-advanced/application/library/codemirror/mode/dart/dart.js000064400000011772147176754550023636 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror"), require("../clike/clike")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror", "../clike/clike"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; var keywords = ("this super static final const abstract class extends external factory " + "implements get native operator set typedef with enum throw rethrow " + "assert break case continue default in return new deferred async await " + "try catch finally do else for if switch while import library export " + "part of show hide is as").split(" "); var blockKeywords = "try catch finally do else for if switch while".split(" "); var atoms = "true false null".split(" "); var builtins = "void bool num int double dynamic var String".split(" "); function set(words) { var obj = {}; for (var i = 0; i < words.length; ++i) obj[words[i]] = true; return obj; } function pushInterpolationStack(state) { (state.interpolationStack || (state.interpolationStack = [])).push(state.tokenize); } function popInterpolationStack(state) { return (state.interpolationStack || (state.interpolationStack = [])).pop(); } function sizeInterpolationStack(state) { return state.interpolationStack ? state.interpolationStack.length : 0; } CodeMirror.defineMIME("application/dart", { name: "clike", keywords: set(keywords), blockKeywords: set(blockKeywords), builtin: set(builtins), atoms: set(atoms), hooks: { "@": function(stream) { stream.eatWhile(/[\w\$_\.]/); return "meta"; }, // custom string handling to deal with triple-quoted strings and string interpolation "'": function(stream, state) { return tokenString("'", stream, state, false); }, "\"": function(stream, state) { return tokenString("\"", stream, state, false); }, "r": function(stream, state) { var peek = stream.peek(); if (peek == "'" || peek == "\"") { return tokenString(stream.next(), stream, state, true); } return false; }, "}": function(_stream, state) { // "}" is end of interpolation, if interpolation stack is non-empty if (sizeInterpolationStack(state) > 0) { state.tokenize = popInterpolationStack(state); return null; } return false; }, "/": function(stream, state) { if (!stream.eat("*")) return false state.tokenize = tokenNestedComment(1) return state.tokenize(stream, state) } } }); function tokenString(quote, stream, state, raw) { var tripleQuoted = false; if (stream.eat(quote)) { if (stream.eat(quote)) tripleQuoted = true; else return "string"; //empty string } function tokenStringHelper(stream, state) { var escaped = false; while (!stream.eol()) { if (!raw && !escaped && stream.peek() == "$") { pushInterpolationStack(state); state.tokenize = tokenInterpolation; return "string"; } var next = stream.next(); if (next == quote && !escaped && (!tripleQuoted || stream.match(quote + quote))) { state.tokenize = null; break; } escaped = !raw && !escaped && next == "\\"; } return "string"; } state.tokenize = tokenStringHelper; return tokenStringHelper(stream, state); } function tokenInterpolation(stream, state) { stream.eat("$"); if (stream.eat("{")) { // let clike handle the content of ${...}, // we take over again when "}" appears (see hooks). state.tokenize = null; } else { state.tokenize = tokenInterpolationIdentifier; } return null; } function tokenInterpolationIdentifier(stream, state) { stream.eatWhile(/[\w_]/); state.tokenize = popInterpolationStack(state); return "variable"; } function tokenNestedComment(depth) { return function (stream, state) { var ch while (ch = stream.next()) { if (ch == "*" && stream.eat("/")) { if (depth == 1) { state.tokenize = null break } else { state.tokenize = tokenNestedComment(depth - 1) return state.tokenize(stream, state) } } else if (ch == "/" && stream.eat("*")) { state.tokenize = tokenNestedComment(depth + 1) return state.tokenize(stream, state) } } return "comment" } } CodeMirror.registerHelper("hintWords", "application/dart", keywords.concat(atoms).concat(builtins)); // This is needed to make loading through meta.js work. CodeMirror.defineMode("dart", function(conf) { return CodeMirror.getMode(conf, "application/dart"); }, "clike"); }); plugins/file-manager-advanced/application/library/codemirror/mode/dart/index.html000064400000003133147176754550024333 0ustar00 CodeMirror: Dart mode

Dart mode

plugins/file-manager-advanced/application/library/codemirror/mode/diff/diff.js000064400000002162147176754550023563 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("diff", function() { var TOKEN_NAMES = { '+': 'positive', '-': 'negative', '@': 'meta' }; return { token: function(stream) { var tw_pos = stream.string.search(/[\t ]+?$/); if (!stream.sol() || tw_pos === 0) { stream.skipToEnd(); return ("error " + ( TOKEN_NAMES[stream.string.charAt(0)] || '')).replace(/ $/, ''); } var token_name = TOKEN_NAMES[stream.peek()] || stream.skipToEnd(); if (tw_pos === -1) { stream.skipToEnd(); } else { stream.pos = tw_pos; } return token_name; } }; }); CodeMirror.defineMIME("text/x-diff", "diff"); }); plugins/file-manager-advanced/application/library/codemirror/mode/diff/index.html000064400000010471147176754550024314 0ustar00 CodeMirror: Diff mode

Diff mode

MIME types defined: text/x-diff.

plugins/file-manager-advanced/application/library/codemirror/mode/django/django.js000064400000027017147176754550024455 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed"), require("../../addon/mode/overlay")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror", "../htmlmixed/htmlmixed", "../../addon/mode/overlay"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("django:inner", function() { var keywords = ["block", "endblock", "for", "endfor", "true", "false", "filter", "endfilter", "loop", "none", "self", "super", "if", "elif", "endif", "as", "else", "import", "with", "endwith", "without", "context", "ifequal", "endifequal", "ifnotequal", "endifnotequal", "extends", "include", "load", "comment", "endcomment", "empty", "url", "static", "trans", "blocktrans", "endblocktrans", "now", "regroup", "lorem", "ifchanged", "endifchanged", "firstof", "debug", "cycle", "csrf_token", "autoescape", "endautoescape", "spaceless", "endspaceless", "ssi", "templatetag", "verbatim", "endverbatim", "widthratio"], filters = ["add", "addslashes", "capfirst", "center", "cut", "date", "default", "default_if_none", "dictsort", "dictsortreversed", "divisibleby", "escape", "escapejs", "filesizeformat", "first", "floatformat", "force_escape", "get_digit", "iriencode", "join", "last", "length", "length_is", "linebreaks", "linebreaksbr", "linenumbers", "ljust", "lower", "make_list", "phone2numeric", "pluralize", "pprint", "random", "removetags", "rjust", "safe", "safeseq", "slice", "slugify", "stringformat", "striptags", "time", "timesince", "timeuntil", "title", "truncatechars", "truncatechars_html", "truncatewords", "truncatewords_html", "unordered_list", "upper", "urlencode", "urlize", "urlizetrunc", "wordcount", "wordwrap", "yesno"], operators = ["==", "!=", "<", ">", "<=", ">="], wordOperators = ["in", "not", "or", "and"]; keywords = new RegExp("^\\b(" + keywords.join("|") + ")\\b"); filters = new RegExp("^\\b(" + filters.join("|") + ")\\b"); operators = new RegExp("^\\b(" + operators.join("|") + ")\\b"); wordOperators = new RegExp("^\\b(" + wordOperators.join("|") + ")\\b"); // We have to return "null" instead of null, in order to avoid string // styling as the default, when using Django templates inside HTML // element attributes function tokenBase (stream, state) { // Attempt to identify a variable, template or comment tag respectively if (stream.match("{{")) { state.tokenize = inVariable; return "tag"; } else if (stream.match("{%")) { state.tokenize = inTag; return "tag"; } else if (stream.match("{#")) { state.tokenize = inComment; return "comment"; } // Ignore completely any stream series that do not match the // Django template opening tags. while (stream.next() != null && !stream.match(/\{[{%#]/, false)) {} return null; } // A string can be included in either single or double quotes (this is // the delimiter). Mark everything as a string until the start delimiter // occurs again. function inString (delimiter, previousTokenizer) { return function (stream, state) { if (!state.escapeNext && stream.eat(delimiter)) { state.tokenize = previousTokenizer; } else { if (state.escapeNext) { state.escapeNext = false; } var ch = stream.next(); // Take into account the backslash for escaping characters, such as // the string delimiter. if (ch == "\\") { state.escapeNext = true; } } return "string"; }; } // Apply Django template variable syntax highlighting function inVariable (stream, state) { // Attempt to match a dot that precedes a property if (state.waitDot) { state.waitDot = false; if (stream.peek() != ".") { return "null"; } // Dot followed by a non-word character should be considered an error. if (stream.match(/\.\W+/)) { return "error"; } else if (stream.eat(".")) { state.waitProperty = true; return "null"; } else { throw Error ("Unexpected error while waiting for property."); } } // Attempt to match a pipe that precedes a filter if (state.waitPipe) { state.waitPipe = false; if (stream.peek() != "|") { return "null"; } // Pipe followed by a non-word character should be considered an error. if (stream.match(/\.\W+/)) { return "error"; } else if (stream.eat("|")) { state.waitFilter = true; return "null"; } else { throw Error ("Unexpected error while waiting for filter."); } } // Highlight properties if (state.waitProperty) { state.waitProperty = false; if (stream.match(/\b(\w+)\b/)) { state.waitDot = true; // A property can be followed by another property state.waitPipe = true; // A property can be followed by a filter return "property"; } } // Highlight filters if (state.waitFilter) { state.waitFilter = false; if (stream.match(filters)) { return "variable-2"; } } // Ignore all white spaces if (stream.eatSpace()) { state.waitProperty = false; return "null"; } // Identify numbers if (stream.match(/\b\d+(\.\d+)?\b/)) { return "number"; } // Identify strings if (stream.match("'")) { state.tokenize = inString("'", state.tokenize); return "string"; } else if (stream.match('"')) { state.tokenize = inString('"', state.tokenize); return "string"; } // Attempt to find the variable if (stream.match(/\b(\w+)\b/) && !state.foundVariable) { state.waitDot = true; state.waitPipe = true; // A property can be followed by a filter return "variable"; } // If found closing tag reset if (stream.match("}}")) { state.waitProperty = null; state.waitFilter = null; state.waitDot = null; state.waitPipe = null; state.tokenize = tokenBase; return "tag"; } // If nothing was found, advance to the next character stream.next(); return "null"; } function inTag (stream, state) { // Attempt to match a dot that precedes a property if (state.waitDot) { state.waitDot = false; if (stream.peek() != ".") { return "null"; } // Dot followed by a non-word character should be considered an error. if (stream.match(/\.\W+/)) { return "error"; } else if (stream.eat(".")) { state.waitProperty = true; return "null"; } else { throw Error ("Unexpected error while waiting for property."); } } // Attempt to match a pipe that precedes a filter if (state.waitPipe) { state.waitPipe = false; if (stream.peek() != "|") { return "null"; } // Pipe followed by a non-word character should be considered an error. if (stream.match(/\.\W+/)) { return "error"; } else if (stream.eat("|")) { state.waitFilter = true; return "null"; } else { throw Error ("Unexpected error while waiting for filter."); } } // Highlight properties if (state.waitProperty) { state.waitProperty = false; if (stream.match(/\b(\w+)\b/)) { state.waitDot = true; // A property can be followed by another property state.waitPipe = true; // A property can be followed by a filter return "property"; } } // Highlight filters if (state.waitFilter) { state.waitFilter = false; if (stream.match(filters)) { return "variable-2"; } } // Ignore all white spaces if (stream.eatSpace()) { state.waitProperty = false; return "null"; } // Identify numbers if (stream.match(/\b\d+(\.\d+)?\b/)) { return "number"; } // Identify strings if (stream.match("'")) { state.tokenize = inString("'", state.tokenize); return "string"; } else if (stream.match('"')) { state.tokenize = inString('"', state.tokenize); return "string"; } // Attempt to match an operator if (stream.match(operators)) { return "operator"; } // Attempt to match a word operator if (stream.match(wordOperators)) { return "keyword"; } // Attempt to match a keyword var keywordMatch = stream.match(keywords); if (keywordMatch) { if (keywordMatch[0] == "comment") { state.blockCommentTag = true; } return "keyword"; } // Attempt to match a variable if (stream.match(/\b(\w+)\b/)) { state.waitDot = true; state.waitPipe = true; // A property can be followed by a filter return "variable"; } // If found closing tag reset if (stream.match("%}")) { state.waitProperty = null; state.waitFilter = null; state.waitDot = null; state.waitPipe = null; // If the tag that closes is a block comment tag, we want to mark the // following code as comment, until the tag closes. if (state.blockCommentTag) { state.blockCommentTag = false; // Release the "lock" state.tokenize = inBlockComment; } else { state.tokenize = tokenBase; } return "tag"; } // If nothing was found, advance to the next character stream.next(); return "null"; } // Mark everything as comment inside the tag and the tag itself. function inComment (stream, state) { if (stream.match(/^.*?#\}/)) state.tokenize = tokenBase else stream.skipToEnd() return "comment"; } // Mark everything as a comment until the `blockcomment` tag closes. function inBlockComment (stream, state) { if (stream.match(/\{%\s*endcomment\s*%\}/, false)) { state.tokenize = inTag; stream.match("{%"); return "tag"; } else { stream.next(); return "comment"; } } return { startState: function () { return {tokenize: tokenBase}; }, token: function (stream, state) { return state.tokenize(stream, state); }, blockCommentStart: "{% comment %}", blockCommentEnd: "{% endcomment %}" }; }); CodeMirror.defineMode("django", function(config) { var htmlBase = CodeMirror.getMode(config, "text/html"); var djangoInner = CodeMirror.getMode(config, "django:inner"); return CodeMirror.overlayMode(htmlBase, djangoInner); }); CodeMirror.defineMIME("text/x-django", "django"); }); plugins/file-manager-advanced/application/library/codemirror/mode/django/index.html000064400000004035147176754550024645 0ustar00 CodeMirror: Django template mode

Django template mode

Mode for HTML with embedded Django template markup.

MIME types defined: text/x-django

plugins/file-manager-advanced/application/library/codemirror/mode/dockerfile/dockerfile.js000064400000004255147176754550026166 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror"), require("../../addon/mode/simple")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror", "../../addon/mode/simple"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; // Collect all Dockerfile directives var instructions = ["from", "maintainer", "run", "cmd", "expose", "env", "add", "copy", "entrypoint", "volume", "user", "workdir", "onbuild"], instructionRegex = "(" + instructions.join('|') + ")", instructionOnlyLine = new RegExp(instructionRegex + "\\s*$", "i"), instructionWithArguments = new RegExp(instructionRegex + "(\\s+)", "i"); CodeMirror.defineSimpleMode("dockerfile", { start: [ // Block comment: This is a line starting with a comment { regex: /#.*$/, token: "comment" }, // Highlight an instruction without any arguments (for convenience) { regex: instructionOnlyLine, token: "variable-2" }, // Highlight an instruction followed by arguments { regex: instructionWithArguments, token: ["variable-2", null], next: "arguments" }, { regex: /./, token: null } ], arguments: [ { // Line comment without instruction arguments is an error regex: /#.*$/, token: "error", next: "start" }, { regex: /[^#]+\\$/, token: null }, { // Match everything except for the inline comment regex: /[^#]+/, token: null, next: "start" }, { regex: /$/, token: null, next: "start" }, // Fail safe return to start { token: null, next: "start" } ], meta: { lineComment: "#" } }); CodeMirror.defineMIME("text/x-dockerfile", "dockerfile"); }); plugins/file-manager-advanced/application/library/codemirror/mode/dockerfile/index.html000064400000004333147176754550025513 0ustar00 CodeMirror: Dockerfile mode

Dockerfile mode

Dockerfile syntax highlighting for CodeMirror. Depends on the simplemode addon.

MIME types defined: text/x-dockerfile

plugins/file-manager-advanced/application/library/codemirror/mode/dtd/dtd.js000064400000011316147176754550023272 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE /* DTD mode Ported to CodeMirror by Peter Kroon Report bugs/issues here: https://github.com/codemirror/CodeMirror/issues GitHub: @peterkroon */ (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("dtd", function(config) { var indentUnit = config.indentUnit, type; function ret(style, tp) {type = tp; return style;} function tokenBase(stream, state) { var ch = stream.next(); if (ch == "<" && stream.eat("!") ) { if (stream.eatWhile(/[\-]/)) { state.tokenize = tokenSGMLComment; return tokenSGMLComment(stream, state); } else if (stream.eatWhile(/[\w]/)) return ret("keyword", "doindent"); } else if (ch == "<" && stream.eat("?")) { //xml declaration state.tokenize = inBlock("meta", "?>"); return ret("meta", ch); } else if (ch == "#" && stream.eatWhile(/[\w]/)) return ret("atom", "tag"); else if (ch == "|") return ret("keyword", "seperator"); else if (ch.match(/[\(\)\[\]\-\.,\+\?>]/)) return ret(null, ch);//if(ch === ">") return ret(null, "endtag"); else else if (ch.match(/[\[\]]/)) return ret("rule", ch); else if (ch == "\"" || ch == "'") { state.tokenize = tokenString(ch); return state.tokenize(stream, state); } else if (stream.eatWhile(/[a-zA-Z\?\+\d]/)) { var sc = stream.current(); if( sc.substr(sc.length-1,sc.length).match(/\?|\+/) !== null )stream.backUp(1); return ret("tag", "tag"); } else if (ch == "%" || ch == "*" ) return ret("number", "number"); else { stream.eatWhile(/[\w\\\-_%.{,]/); return ret(null, null); } } function tokenSGMLComment(stream, state) { var dashes = 0, ch; while ((ch = stream.next()) != null) { if (dashes >= 2 && ch == ">") { state.tokenize = tokenBase; break; } dashes = (ch == "-") ? dashes + 1 : 0; } return ret("comment", "comment"); } function tokenString(quote) { return function(stream, state) { var escaped = false, ch; while ((ch = stream.next()) != null) { if (ch == quote && !escaped) { state.tokenize = tokenBase; break; } escaped = !escaped && ch == "\\"; } return ret("string", "tag"); }; } function inBlock(style, terminator) { return function(stream, state) { while (!stream.eol()) { if (stream.match(terminator)) { state.tokenize = tokenBase; break; } stream.next(); } return style; }; } return { startState: function(base) { return {tokenize: tokenBase, baseIndent: base || 0, stack: []}; }, token: function(stream, state) { if (stream.eatSpace()) return null; var style = state.tokenize(stream, state); var context = state.stack[state.stack.length-1]; if (stream.current() == "[" || type === "doindent" || type == "[") state.stack.push("rule"); else if (type === "endtag") state.stack[state.stack.length-1] = "endtag"; else if (stream.current() == "]" || type == "]" || (type == ">" && context == "rule")) state.stack.pop(); else if (type == "[") state.stack.push("["); return style; }, indent: function(state, textAfter) { var n = state.stack.length; if( textAfter.match(/\]\s+|\]/) )n=n-1; else if(textAfter.substr(textAfter.length-1, textAfter.length) === ">"){ if(textAfter.substr(0,1) === "<") {} else if( type == "doindent" && textAfter.length > 1 ) {} else if( type == "doindent")n--; else if( type == ">" && textAfter.length > 1) {} else if( type == "tag" && textAfter !== ">") {} else if( type == "tag" && state.stack[state.stack.length-1] == "rule")n--; else if( type == "tag")n++; else if( textAfter === ">" && state.stack[state.stack.length-1] == "rule" && type === ">")n--; else if( textAfter === ">" && state.stack[state.stack.length-1] == "rule") {} else if( textAfter.substr(0,1) !== "<" && textAfter.substr(0,1) === ">" )n=n-1; else if( textAfter === ">") {} else n=n-1; //over rule them all if(type == null || type == "]")n--; } return state.baseIndent + n * indentUnit; }, electricChars: "]>" }; }); CodeMirror.defineMIME("application/xml-dtd", "dtd"); }); plugins/file-manager-advanced/application/library/codemirror/mode/dtd/index.html000064400000006411147176754550024156 0ustar00 CodeMirror: DTD mode

DTD mode

MIME types defined: application/xml-dtd.

plugins/file-manager-advanced/application/library/codemirror/mode/dylan/dylan.js000064400000023256147176754550024170 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("dylan", function(_config) { // Words var words = { // Words that introduce unnamed definitions like "define interface" unnamedDefinition: ["interface"], // Words that introduce simple named definitions like "define library" namedDefinition: ["module", "library", "macro", "C-struct", "C-union", "C-function", "C-callable-wrapper" ], // Words that introduce type definitions like "define class". // These are also parameterized like "define method" and are // appended to otherParameterizedDefinitionWords typeParameterizedDefinition: ["class", "C-subtype", "C-mapped-subtype"], // Words that introduce trickier definitions like "define method". // These require special definitions to be added to startExpressions otherParameterizedDefinition: ["method", "function", "C-variable", "C-address" ], // Words that introduce module constant definitions. // These must also be simple definitions and are // appended to otherSimpleDefinitionWords constantSimpleDefinition: ["constant"], // Words that introduce module variable definitions. // These must also be simple definitions and are // appended to otherSimpleDefinitionWords variableSimpleDefinition: ["variable"], // Other words that introduce simple definitions // (without implicit bodies). otherSimpleDefinition: ["generic", "domain", "C-pointer-type", "table" ], // Words that begin statements with implicit bodies. statement: ["if", "block", "begin", "method", "case", "for", "select", "when", "unless", "until", "while", "iterate", "profiling", "dynamic-bind" ], // Patterns that act as separators in compound statements. // This may include any general pattern that must be indented // specially. separator: ["finally", "exception", "cleanup", "else", "elseif", "afterwards" ], // Keywords that do not require special indentation handling, // but which should be highlighted other: ["above", "below", "by", "from", "handler", "in", "instance", "let", "local", "otherwise", "slot", "subclass", "then", "to", "keyed-by", "virtual" ], // Condition signaling function calls signalingCalls: ["signal", "error", "cerror", "break", "check-type", "abort" ] }; words["otherDefinition"] = words["unnamedDefinition"] .concat(words["namedDefinition"]) .concat(words["otherParameterizedDefinition"]); words["definition"] = words["typeParameterizedDefinition"] .concat(words["otherDefinition"]); words["parameterizedDefinition"] = words["typeParameterizedDefinition"] .concat(words["otherParameterizedDefinition"]); words["simpleDefinition"] = words["constantSimpleDefinition"] .concat(words["variableSimpleDefinition"]) .concat(words["otherSimpleDefinition"]); words["keyword"] = words["statement"] .concat(words["separator"]) .concat(words["other"]); // Patterns var symbolPattern = "[-_a-zA-Z?!*@<>$%]+"; var symbol = new RegExp("^" + symbolPattern); var patterns = { // Symbols with special syntax symbolKeyword: symbolPattern + ":", symbolClass: "<" + symbolPattern + ">", symbolGlobal: "\\*" + symbolPattern + "\\*", symbolConstant: "\\$" + symbolPattern }; var patternStyles = { symbolKeyword: "atom", symbolClass: "tag", symbolGlobal: "variable-2", symbolConstant: "variable-3" }; // Compile all patterns to regular expressions for (var patternName in patterns) if (patterns.hasOwnProperty(patternName)) patterns[patternName] = new RegExp("^" + patterns[patternName]); // Names beginning "with-" and "without-" are commonly // used as statement macro patterns["keyword"] = [/^with(?:out)?-[-_a-zA-Z?!*@<>$%]+/]; var styles = {}; styles["keyword"] = "keyword"; styles["definition"] = "def"; styles["simpleDefinition"] = "def"; styles["signalingCalls"] = "builtin"; // protected words lookup table var wordLookup = {}; var styleLookup = {}; [ "keyword", "definition", "simpleDefinition", "signalingCalls" ].forEach(function(type) { words[type].forEach(function(word) { wordLookup[word] = type; styleLookup[word] = styles[type]; }); }); function chain(stream, state, f) { state.tokenize = f; return f(stream, state); } function tokenBase(stream, state) { // String var ch = stream.peek(); if (ch == "'" || ch == '"') { stream.next(); return chain(stream, state, tokenString(ch, "string")); } // Comment else if (ch == "/") { stream.next(); if (stream.eat("*")) { return chain(stream, state, tokenComment); } else if (stream.eat("/")) { stream.skipToEnd(); return "comment"; } stream.backUp(1); } // Decimal else if (/[+\-\d\.]/.test(ch)) { if (stream.match(/^[+-]?[0-9]*\.[0-9]*([esdx][+-]?[0-9]+)?/i) || stream.match(/^[+-]?[0-9]+([esdx][+-]?[0-9]+)/i) || stream.match(/^[+-]?\d+/)) { return "number"; } } // Hash else if (ch == "#") { stream.next(); // Symbol with string syntax ch = stream.peek(); if (ch == '"') { stream.next(); return chain(stream, state, tokenString('"', "string")); } // Binary number else if (ch == "b") { stream.next(); stream.eatWhile(/[01]/); return "number"; } // Hex number else if (ch == "x") { stream.next(); stream.eatWhile(/[\da-f]/i); return "number"; } // Octal number else if (ch == "o") { stream.next(); stream.eatWhile(/[0-7]/); return "number"; } // Token concatenation in macros else if (ch == '#') { stream.next(); return "punctuation"; } // Sequence literals else if ((ch == '[') || (ch == '(')) { stream.next(); return "bracket"; // Hash symbol } else if (stream.match(/f|t|all-keys|include|key|next|rest/i)) { return "atom"; } else { stream.eatWhile(/[-a-zA-Z]/); return "error"; } } else if (ch == "~") { stream.next(); ch = stream.peek(); if (ch == "=") { stream.next(); ch = stream.peek(); if (ch == "=") { stream.next(); return "operator"; } return "operator"; } return "operator"; } else if (ch == ":") { stream.next(); ch = stream.peek(); if (ch == "=") { stream.next(); return "operator"; } else if (ch == ":") { stream.next(); return "punctuation"; } } else if ("[](){}".indexOf(ch) != -1) { stream.next(); return "bracket"; } else if (".,".indexOf(ch) != -1) { stream.next(); return "punctuation"; } else if (stream.match("end")) { return "keyword"; } for (var name in patterns) { if (patterns.hasOwnProperty(name)) { var pattern = patterns[name]; if ((pattern instanceof Array && pattern.some(function(p) { return stream.match(p); })) || stream.match(pattern)) return patternStyles[name]; } } if (/[+\-*\/^=<>&|]/.test(ch)) { stream.next(); return "operator"; } if (stream.match("define")) { return "def"; } else { stream.eatWhile(/[\w\-]/); // Keyword if (wordLookup[stream.current()]) { return styleLookup[stream.current()]; } else if (stream.current().match(symbol)) { return "variable"; } else { stream.next(); return "variable-2"; } } } function tokenComment(stream, state) { var maybeEnd = false, maybeNested = false, nestedCount = 0, ch; while ((ch = stream.next())) { if (ch == "/" && maybeEnd) { if (nestedCount > 0) { nestedCount--; } else { state.tokenize = tokenBase; break; } } else if (ch == "*" && maybeNested) { nestedCount++; } maybeEnd = (ch == "*"); maybeNested = (ch == "/"); } return "comment"; } function tokenString(quote, style) { return function(stream, state) { var escaped = false, next, end = false; while ((next = stream.next()) != null) { if (next == quote && !escaped) { end = true; break; } escaped = !escaped && next == "\\"; } if (end || !escaped) { state.tokenize = tokenBase; } return style; }; } // Interface return { startState: function() { return { tokenize: tokenBase, currentIndent: 0 }; }, token: function(stream, state) { if (stream.eatSpace()) return null; var style = state.tokenize(stream, state); return style; }, blockCommentStart: "/*", blockCommentEnd: "*/" }; }); CodeMirror.defineMIME("text/x-dylan", "dylan"); }); plugins/file-manager-advanced/application/library/codemirror/mode/dylan/index.html000064400000031350147176754550024512 0ustar00 CodeMirror: Dylan mode

Dylan mode

MIME types defined: text/x-dylan.

plugins/file-manager-advanced/application/library/codemirror/mode/dylan/test.js000064400000005262147176754550024035 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function() { var mode = CodeMirror.getMode({indentUnit: 2}, "dylan"); function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } MT('comments', '[comment // This is a line comment]', '[comment /* This is a block comment */]', '[comment /* This is a multi]', '[comment line comment]', '[comment */]', '[comment /* And this is a /*]', '[comment /* nested */ comment */]'); MT('unary_operators', '[operator -][variable a]', '[operator -] [variable a]', '[operator ~][variable a]', '[operator ~] [variable a]'); MT('binary_operators', '[variable a] [operator +] [variable b]', '[variable a] [operator -] [variable b]', '[variable a] [operator *] [variable b]', '[variable a] [operator /] [variable b]', '[variable a] [operator ^] [variable b]', '[variable a] [operator =] [variable b]', '[variable a] [operator ==] [variable b]', '[variable a] [operator ~=] [variable b]', '[variable a] [operator ~==] [variable b]', '[variable a] [operator <] [variable b]', '[variable a] [operator <=] [variable b]', '[variable a] [operator >] [variable b]', '[variable a] [operator >=] [variable b]', '[variable a] [operator &] [variable b]', '[variable a] [operator |] [variable b]', '[variable a] [operator :=] [variable b]'); MT('integers', '[number 1]', '[number 123]', '[number -123]', '[number +456]', '[number #b010]', '[number #o073]', '[number #xabcDEF123]'); MT('floats', '[number .3]', '[number -1.]', '[number -2.335]', '[number +3.78d1]', '[number 3.78s-1]', '[number -3.32e+5]'); MT('characters_and_strings', "[string 'a']", "[string '\\\\'']", '[string ""]', '[string "a"]', '[string "abc def"]', '[string "More escaped characters: \\\\\\\\ \\\\a \\\\b \\\\e \\\\f \\\\n \\\\r \\\\t \\\\0 ..."]'); MT('brackets', '[bracket #[[]]]', '[bracket #()]', '[bracket #(][number 1][bracket )]', '[bracket [[][number 1][punctuation ,] [number 3][bracket ]]]', '[bracket ()]', '[bracket {}]', '[keyword if] [bracket (][variable foo][bracket )]', '[bracket (][number 1][bracket )]', '[bracket [[][number 1][bracket ]]]'); MT('hash_words', '[punctuation ##]', '[atom #f]', '[atom #F]', '[atom #t]', '[atom #T]', '[atom #all-keys]', '[atom #include]', '[atom #key]', '[atom #next]', '[atom #rest]', '[string #"foo"]', '[error #invalid]'); })(); plugins/file-manager-advanced/application/library/codemirror/mode/ebnf/ebnf.js000064400000013705147176754550023574 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("ebnf", function (config) { var commentType = {slash: 0, parenthesis: 1}; var stateType = {comment: 0, _string: 1, characterClass: 2}; var bracesMode = null; if (config.bracesMode) bracesMode = CodeMirror.getMode(config, config.bracesMode); return { startState: function () { return { stringType: null, commentType: null, braced: 0, lhs: true, localState: null, stack: [], inDefinition: false }; }, token: function (stream, state) { if (!stream) return; //check for state changes if (state.stack.length === 0) { //strings if ((stream.peek() == '"') || (stream.peek() == "'")) { state.stringType = stream.peek(); stream.next(); // Skip quote state.stack.unshift(stateType._string); } else if (stream.match(/^\/\*/)) { //comments starting with /* state.stack.unshift(stateType.comment); state.commentType = commentType.slash; } else if (stream.match(/^\(\*/)) { //comments starting with (* state.stack.unshift(stateType.comment); state.commentType = commentType.parenthesis; } } //return state //stack has switch (state.stack[0]) { case stateType._string: while (state.stack[0] === stateType._string && !stream.eol()) { if (stream.peek() === state.stringType) { stream.next(); // Skip quote state.stack.shift(); // Clear flag } else if (stream.peek() === "\\") { stream.next(); stream.next(); } else { stream.match(/^.[^\\\"\']*/); } } return state.lhs ? "property string" : "string"; // Token style case stateType.comment: while (state.stack[0] === stateType.comment && !stream.eol()) { if (state.commentType === commentType.slash && stream.match(/\*\//)) { state.stack.shift(); // Clear flag state.commentType = null; } else if (state.commentType === commentType.parenthesis && stream.match(/\*\)/)) { state.stack.shift(); // Clear flag state.commentType = null; } else { stream.match(/^.[^\*]*/); } } return "comment"; case stateType.characterClass: while (state.stack[0] === stateType.characterClass && !stream.eol()) { if (!(stream.match(/^[^\]\\]+/) || stream.match(/^\\./))) { state.stack.shift(); } } return "operator"; } var peek = stream.peek(); if (bracesMode !== null && (state.braced || peek === "{")) { if (state.localState === null) state.localState = CodeMirror.startState(bracesMode); var token = bracesMode.token(stream, state.localState), text = stream.current(); if (!token) { for (var i = 0; i < text.length; i++) { if (text[i] === "{") { if (state.braced === 0) { token = "matchingbracket"; } state.braced++; } else if (text[i] === "}") { state.braced--; if (state.braced === 0) { token = "matchingbracket"; } } } } return token; } //no stack switch (peek) { case "[": stream.next(); state.stack.unshift(stateType.characterClass); return "bracket"; case ":": case "|": case ";": stream.next(); return "operator"; case "%": if (stream.match("%%")) { return "header"; } else if (stream.match(/[%][A-Za-z]+/)) { return "keyword"; } else if (stream.match(/[%][}]/)) { return "matchingbracket"; } break; case "/": if (stream.match(/[\/][A-Za-z]+/)) { return "keyword"; } case "\\": if (stream.match(/[\][a-z]+/)) { return "string-2"; } case ".": if (stream.match(".")) { return "atom"; } case "*": case "-": case "+": case "^": if (stream.match(peek)) { return "atom"; } case "$": if (stream.match("$$")) { return "builtin"; } else if (stream.match(/[$][0-9]+/)) { return "variable-3"; } case "<": if (stream.match(/<<[a-zA-Z_]+>>/)) { return "builtin"; } } if (stream.match(/^\/\//)) { stream.skipToEnd(); return "comment"; } else if (stream.match(/return/)) { return "operator"; } else if (stream.match(/^[a-zA-Z_][a-zA-Z0-9_]*/)) { if (stream.match(/(?=[\(.])/)) { return "variable"; } else if (stream.match(/(?=[\s\n]*[:=])/)) { return "def"; } return "variable-2"; } else if (["[", "]", "(", ")"].indexOf(stream.peek()) != -1) { stream.next(); return "bracket"; } else if (!stream.eatSpace()) { stream.next(); } return null; } }; }); CodeMirror.defineMIME("text/x-ebnf", "ebnf"); }); plugins/file-manager-advanced/application/library/codemirror/mode/ebnf/index.html000064400000004622147176754550024317 0ustar00 CodeMirror: EBNF Mode

EBNF Mode (bracesMode setting = "javascript")

The EBNF Mode

Created by Robert Plummer

plugins/file-manager-advanced/application/library/codemirror/mode/ecl/ecl.js000064400000021213147176754550023247 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("ecl", function(config) { function words(str) { var obj = {}, words = str.split(" "); for (var i = 0; i < words.length; ++i) obj[words[i]] = true; return obj; } function metaHook(stream, state) { if (!state.startOfLine) return false; stream.skipToEnd(); return "meta"; } var indentUnit = config.indentUnit; var keyword = words("abs acos allnodes ascii asin asstring atan atan2 ave case choose choosen choosesets clustersize combine correlation cos cosh count covariance cron dataset dedup define denormalize distribute distributed distribution ebcdic enth error evaluate event eventextra eventname exists exp failcode failmessage fetch fromunicode getisvalid global graph group hash hash32 hash64 hashcrc hashmd5 having if index intformat isvalid iterate join keyunicode length library limit ln local log loop map matched matchlength matchposition matchtext matchunicode max merge mergejoin min nolocal nonempty normalize parse pipe power preload process project pull random range rank ranked realformat recordof regexfind regexreplace regroup rejected rollup round roundup row rowdiff sample set sin sinh sizeof soapcall sort sorted sqrt stepped stored sum table tan tanh thisnode topn tounicode transfer trim truncate typeof ungroup unicodeorder variance which workunit xmldecode xmlencode xmltext xmlunicode"); var variable = words("apply assert build buildindex evaluate fail keydiff keypatch loadxml nothor notify output parallel sequential soapcall wait"); var variable_2 = words("__compressed__ all and any as atmost before beginc++ best between case const counter csv descend encrypt end endc++ endmacro except exclusive expire export extend false few first flat from full function group header heading hole ifblock import in interface joined keep keyed last left limit load local locale lookup macro many maxcount maxlength min skew module named nocase noroot noscan nosort not of only opt or outer overwrite packed partition penalty physicallength pipe quote record relationship repeat return right scan self separator service shared skew skip sql store terminator thor threshold token transform trim true type unicodeorder unsorted validate virtual whole wild within xml xpath"); var variable_3 = words("ascii big_endian boolean data decimal ebcdic integer pattern qstring real record rule set of string token udecimal unicode unsigned varstring varunicode"); var builtin = words("checkpoint deprecated failcode failmessage failure global independent onwarning persist priority recovery stored success wait when"); var blockKeywords = words("catch class do else finally for if switch try while"); var atoms = words("true false null"); var hooks = {"#": metaHook}; var isOperatorChar = /[+\-*&%=<>!?|\/]/; var curPunc; function tokenBase(stream, state) { var ch = stream.next(); if (hooks[ch]) { var result = hooks[ch](stream, state); if (result !== false) return result; } if (ch == '"' || ch == "'") { state.tokenize = tokenString(ch); return state.tokenize(stream, state); } if (/[\[\]{}\(\),;\:\.]/.test(ch)) { curPunc = ch; return null; } if (/\d/.test(ch)) { stream.eatWhile(/[\w\.]/); return "number"; } if (ch == "/") { if (stream.eat("*")) { state.tokenize = tokenComment; return tokenComment(stream, state); } if (stream.eat("/")) { stream.skipToEnd(); return "comment"; } } if (isOperatorChar.test(ch)) { stream.eatWhile(isOperatorChar); return "operator"; } stream.eatWhile(/[\w\$_]/); var cur = stream.current().toLowerCase(); if (keyword.propertyIsEnumerable(cur)) { if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; return "keyword"; } else if (variable.propertyIsEnumerable(cur)) { if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; return "variable"; } else if (variable_2.propertyIsEnumerable(cur)) { if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; return "variable-2"; } else if (variable_3.propertyIsEnumerable(cur)) { if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; return "variable-3"; } else if (builtin.propertyIsEnumerable(cur)) { if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; return "builtin"; } else { //Data types are of from KEYWORD## var i = cur.length - 1; while(i >= 0 && (!isNaN(cur[i]) || cur[i] == '_')) --i; if (i > 0) { var cur2 = cur.substr(0, i + 1); if (variable_3.propertyIsEnumerable(cur2)) { if (blockKeywords.propertyIsEnumerable(cur2)) curPunc = "newstatement"; return "variable-3"; } } } if (atoms.propertyIsEnumerable(cur)) return "atom"; return null; } function tokenString(quote) { return function(stream, state) { var escaped = false, next, end = false; while ((next = stream.next()) != null) { if (next == quote && !escaped) {end = true; break;} escaped = !escaped && next == "\\"; } if (end || !escaped) state.tokenize = tokenBase; return "string"; }; } function tokenComment(stream, state) { var maybeEnd = false, ch; while (ch = stream.next()) { if (ch == "/" && maybeEnd) { state.tokenize = tokenBase; break; } maybeEnd = (ch == "*"); } return "comment"; } function Context(indented, column, type, align, prev) { this.indented = indented; this.column = column; this.type = type; this.align = align; this.prev = prev; } function pushContext(state, col, type) { return state.context = new Context(state.indented, col, type, null, state.context); } function popContext(state) { var t = state.context.type; if (t == ")" || t == "]" || t == "}") state.indented = state.context.indented; return state.context = state.context.prev; } // Interface return { startState: function(basecolumn) { return { tokenize: null, context: new Context((basecolumn || 0) - indentUnit, 0, "top", false), indented: 0, startOfLine: true }; }, token: function(stream, state) { var ctx = state.context; if (stream.sol()) { if (ctx.align == null) ctx.align = false; state.indented = stream.indentation(); state.startOfLine = true; } if (stream.eatSpace()) return null; curPunc = null; var style = (state.tokenize || tokenBase)(stream, state); if (style == "comment" || style == "meta") return style; if (ctx.align == null) ctx.align = true; if ((curPunc == ";" || curPunc == ":") && ctx.type == "statement") popContext(state); else if (curPunc == "{") pushContext(state, stream.column(), "}"); else if (curPunc == "[") pushContext(state, stream.column(), "]"); else if (curPunc == "(") pushContext(state, stream.column(), ")"); else if (curPunc == "}") { while (ctx.type == "statement") ctx = popContext(state); if (ctx.type == "}") ctx = popContext(state); while (ctx.type == "statement") ctx = popContext(state); } else if (curPunc == ctx.type) popContext(state); else if (ctx.type == "}" || ctx.type == "top" || (ctx.type == "statement" && curPunc == "newstatement")) pushContext(state, stream.column(), "statement"); state.startOfLine = false; return style; }, indent: function(state, textAfter) { if (state.tokenize != tokenBase && state.tokenize != null) return 0; var ctx = state.context, firstChar = textAfter && textAfter.charAt(0); if (ctx.type == "statement" && firstChar == "}") ctx = ctx.prev; var closing = firstChar == ctx.type; if (ctx.type == "statement") return ctx.indented + (firstChar == "{" ? 0 : indentUnit); else if (ctx.align) return ctx.column + (closing ? 0 : 1); else return ctx.indented + (closing ? 0 : indentUnit); }, electricChars: "{}" }; }); CodeMirror.defineMIME("text/x-ecl", "ecl"); }); plugins/file-manager-advanced/application/library/codemirror/mode/ecl/index.html000064400000002601147176754550024143 0ustar00 CodeMirror: ECL mode

ECL mode

Based on CodeMirror's clike mode. For more information see HPCC Systems web site.

MIME types defined: text/x-ecl.

plugins/file-manager-advanced/application/library/codemirror/mode/eiffel/eiffel.js000064400000007240147176754550024431 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("eiffel", function() { function wordObj(words) { var o = {}; for (var i = 0, e = words.length; i < e; ++i) o[words[i]] = true; return o; } var keywords = wordObj([ 'note', 'across', 'when', 'variant', 'until', 'unique', 'undefine', 'then', 'strip', 'select', 'retry', 'rescue', 'require', 'rename', 'reference', 'redefine', 'prefix', 'once', 'old', 'obsolete', 'loop', 'local', 'like', 'is', 'inspect', 'infix', 'include', 'if', 'frozen', 'from', 'external', 'export', 'ensure', 'end', 'elseif', 'else', 'do', 'creation', 'create', 'check', 'alias', 'agent', 'separate', 'invariant', 'inherit', 'indexing', 'feature', 'expanded', 'deferred', 'class', 'Void', 'True', 'Result', 'Precursor', 'False', 'Current', 'create', 'attached', 'detachable', 'as', 'and', 'implies', 'not', 'or' ]); var operators = wordObj([":=", "and then","and", "or","<<",">>"]); function chain(newtok, stream, state) { state.tokenize.push(newtok); return newtok(stream, state); } function tokenBase(stream, state) { if (stream.eatSpace()) return null; var ch = stream.next(); if (ch == '"'||ch == "'") { return chain(readQuoted(ch, "string"), stream, state); } else if (ch == "-"&&stream.eat("-")) { stream.skipToEnd(); return "comment"; } else if (ch == ":"&&stream.eat("=")) { return "operator"; } else if (/[0-9]/.test(ch)) { stream.eatWhile(/[xXbBCc0-9\.]/); stream.eat(/[\?\!]/); return "ident"; } else if (/[a-zA-Z_0-9]/.test(ch)) { stream.eatWhile(/[a-zA-Z_0-9]/); stream.eat(/[\?\!]/); return "ident"; } else if (/[=+\-\/*^%<>~]/.test(ch)) { stream.eatWhile(/[=+\-\/*^%<>~]/); return "operator"; } else { return null; } } function readQuoted(quote, style, unescaped) { return function(stream, state) { var escaped = false, ch; while ((ch = stream.next()) != null) { if (ch == quote && (unescaped || !escaped)) { state.tokenize.pop(); break; } escaped = !escaped && ch == "%"; } return style; }; } return { startState: function() { return {tokenize: [tokenBase]}; }, token: function(stream, state) { var style = state.tokenize[state.tokenize.length-1](stream, state); if (style == "ident") { var word = stream.current(); style = keywords.propertyIsEnumerable(stream.current()) ? "keyword" : operators.propertyIsEnumerable(stream.current()) ? "operator" : /^[A-Z][A-Z_0-9]*$/g.test(word) ? "tag" : /^0[bB][0-1]+$/g.test(word) ? "number" : /^0[cC][0-7]+$/g.test(word) ? "number" : /^0[xX][a-fA-F0-9]+$/g.test(word) ? "number" : /^([0-9]+\.[0-9]*)|([0-9]*\.[0-9]+)$/g.test(word) ? "number" : /^[0-9]+$/g.test(word) ? "number" : "variable"; } return style; }, lineComment: "--" }; }); CodeMirror.defineMIME("text/x-eiffel", "eiffel"); }); plugins/file-manager-advanced/application/library/codemirror/mode/eiffel/index.html000064400000031616147176754550024642 0ustar00 CodeMirror: Eiffel mode

Eiffel mode

MIME types defined: text/x-eiffel.

Created by YNH.

plugins/file-manager-advanced/application/library/codemirror/mode/elm/elm.js000064400000012660147176754550023301 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("elm", function() { function switchState(source, setState, f) { setState(f); return f(source, setState); } // These should all be Unicode extended, as per the Haskell 2010 report var smallRE = /[a-z_]/; var largeRE = /[A-Z]/; var digitRE = /[0-9]/; var hexitRE = /[0-9A-Fa-f]/; var octitRE = /[0-7]/; var idRE = /[a-z_A-Z0-9\']/; var symbolRE = /[-!#$%&*+.\/<=>?@\\^|~:\u03BB\u2192]/; var specialRE = /[(),;[\]`{}]/; var whiteCharRE = /[ \t\v\f]/; // newlines are handled in tokenizer function normal() { return function (source, setState) { if (source.eatWhile(whiteCharRE)) { return null; } var ch = source.next(); if (specialRE.test(ch)) { if (ch == '{' && source.eat('-')) { var t = "comment"; if (source.eat('#')) t = "meta"; return switchState(source, setState, ncomment(t, 1)); } return null; } if (ch == '\'') { if (source.eat('\\')) source.next(); // should handle other escapes here else source.next(); if (source.eat('\'')) return "string"; return "error"; } if (ch == '"') { return switchState(source, setState, stringLiteral); } if (largeRE.test(ch)) { source.eatWhile(idRE); if (source.eat('.')) return "qualifier"; return "variable-2"; } if (smallRE.test(ch)) { var isDef = source.pos === 1; source.eatWhile(idRE); return isDef ? "variable-3" : "variable"; } if (digitRE.test(ch)) { if (ch == '0') { if (source.eat(/[xX]/)) { source.eatWhile(hexitRE); // should require at least 1 return "integer"; } if (source.eat(/[oO]/)) { source.eatWhile(octitRE); // should require at least 1 return "number"; } } source.eatWhile(digitRE); var t = "number"; if (source.eat('.')) { t = "number"; source.eatWhile(digitRE); // should require at least 1 } if (source.eat(/[eE]/)) { t = "number"; source.eat(/[-+]/); source.eatWhile(digitRE); // should require at least 1 } return t; } if (symbolRE.test(ch)) { if (ch == '-' && source.eat(/-/)) { source.eatWhile(/-/); if (!source.eat(symbolRE)) { source.skipToEnd(); return "comment"; } } source.eatWhile(symbolRE); return "builtin"; } return "error"; } } function ncomment(type, nest) { if (nest == 0) { return normal(); } return function(source, setState) { var currNest = nest; while (!source.eol()) { var ch = source.next(); if (ch == '{' && source.eat('-')) { ++currNest; } else if (ch == '-' && source.eat('}')) { --currNest; if (currNest == 0) { setState(normal()); return type; } } } setState(ncomment(type, currNest)); return type; } } function stringLiteral(source, setState) { while (!source.eol()) { var ch = source.next(); if (ch == '"') { setState(normal()); return "string"; } if (ch == '\\') { if (source.eol() || source.eat(whiteCharRE)) { setState(stringGap); return "string"; } if (!source.eat('&')) source.next(); // should handle other escapes here } } setState(normal()); return "error"; } function stringGap(source, setState) { if (source.eat('\\')) { return switchState(source, setState, stringLiteral); } source.next(); setState(normal()); return "error"; } var wellKnownWords = (function() { var wkw = {}; var keywords = [ "case", "of", "as", "if", "then", "else", "let", "in", "infix", "infixl", "infixr", "type", "alias", "input", "output", "foreign", "loopback", "module", "where", "import", "exposing", "_", "..", "|", ":", "=", "\\", "\"", "->", "<-" ]; for (var i = keywords.length; i--;) wkw[keywords[i]] = "keyword"; return wkw; })(); return { startState: function () { return { f: normal() }; }, copyState: function (s) { return { f: s.f }; }, token: function(stream, state) { var t = state.f(stream, function(s) { state.f = s; }); var w = stream.current(); return (wellKnownWords.hasOwnProperty(w)) ? wellKnownWords[w] : t; } }; }); CodeMirror.defineMIME("text/x-elm", "elm"); }); plugins/file-manager-advanced/application/library/codemirror/mode/elm/index.html000064400000003150147176754550024155 0ustar00 CodeMirror: Elm mode

Elm mode

MIME types defined: text/x-elm.

plugins/file-manager-advanced/application/library/codemirror/mode/erlang/erlang.js000064400000044645147176754550024477 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE /*jshint unused:true, eqnull:true, curly:true, bitwise:true */ /*jshint undef:true, latedef:true, trailing:true */ /*global CodeMirror:true */ // erlang mode. // tokenizer -> token types -> CodeMirror styles // tokenizer maintains a parse stack // indenter uses the parse stack // TODO indenter: // bit syntax // old guard/bif/conversion clashes (e.g. "float/1") // type/spec/opaque (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMIME("text/x-erlang", "erlang"); CodeMirror.defineMode("erlang", function(cmCfg) { "use strict"; ///////////////////////////////////////////////////////////////////////////// // constants var typeWords = [ "-type", "-spec", "-export_type", "-opaque"]; var keywordWords = [ "after","begin","catch","case","cond","end","fun","if", "let","of","query","receive","try","when"]; var separatorRE = /[\->,;]/; var separatorWords = [ "->",";",","]; var operatorAtomWords = [ "and","andalso","band","bnot","bor","bsl","bsr","bxor", "div","not","or","orelse","rem","xor"]; var operatorSymbolRE = /[\+\-\*\/<>=\|:!]/; var operatorSymbolWords = [ "=","+","-","*","/",">",">=","<","=<","=:=","==","=/=","/=","||","<-","!"]; var openParenRE = /[<\(\[\{]/; var openParenWords = [ "<<","(","[","{"]; var closeParenRE = /[>\)\]\}]/; var closeParenWords = [ "}","]",")",">>"]; var guardWords = [ "is_atom","is_binary","is_bitstring","is_boolean","is_float", "is_function","is_integer","is_list","is_number","is_pid", "is_port","is_record","is_reference","is_tuple", "atom","binary","bitstring","boolean","function","integer","list", "number","pid","port","record","reference","tuple"]; var bifWords = [ "abs","adler32","adler32_combine","alive","apply","atom_to_binary", "atom_to_list","binary_to_atom","binary_to_existing_atom", "binary_to_list","binary_to_term","bit_size","bitstring_to_list", "byte_size","check_process_code","contact_binary","crc32", "crc32_combine","date","decode_packet","delete_module", "disconnect_node","element","erase","exit","float","float_to_list", "garbage_collect","get","get_keys","group_leader","halt","hd", "integer_to_list","internal_bif","iolist_size","iolist_to_binary", "is_alive","is_atom","is_binary","is_bitstring","is_boolean", "is_float","is_function","is_integer","is_list","is_number","is_pid", "is_port","is_process_alive","is_record","is_reference","is_tuple", "length","link","list_to_atom","list_to_binary","list_to_bitstring", "list_to_existing_atom","list_to_float","list_to_integer", "list_to_pid","list_to_tuple","load_module","make_ref","module_loaded", "monitor_node","node","node_link","node_unlink","nodes","notalive", "now","open_port","pid_to_list","port_close","port_command", "port_connect","port_control","pre_loaded","process_flag", "process_info","processes","purge_module","put","register", "registered","round","self","setelement","size","spawn","spawn_link", "spawn_monitor","spawn_opt","split_binary","statistics", "term_to_binary","time","throw","tl","trunc","tuple_size", "tuple_to_list","unlink","unregister","whereis"]; // upper case: [A-Z] [Ø-Þ] [À-Ö] // lower case: [a-z] [ß-ö] [ø-ÿ] var anumRE = /[\w@Ø-ÞÀ-Öß-öø-ÿ]/; var escapesRE = /[0-7]{1,3}|[bdefnrstv\\"']|\^[a-zA-Z]|x[0-9a-zA-Z]{2}|x{[0-9a-zA-Z]+}/; ///////////////////////////////////////////////////////////////////////////// // tokenizer function tokenizer(stream,state) { // in multi-line string if (state.in_string) { state.in_string = (!doubleQuote(stream)); return rval(state,stream,"string"); } // in multi-line atom if (state.in_atom) { state.in_atom = (!singleQuote(stream)); return rval(state,stream,"atom"); } // whitespace if (stream.eatSpace()) { return rval(state,stream,"whitespace"); } // attributes and type specs if (!peekToken(state) && stream.match(/-\s*[a-zß-öø-ÿ][\wØ-ÞÀ-Öß-öø-ÿ]*/)) { if (is_member(stream.current(),typeWords)) { return rval(state,stream,"type"); }else{ return rval(state,stream,"attribute"); } } var ch = stream.next(); // comment if (ch == '%') { stream.skipToEnd(); return rval(state,stream,"comment"); } // colon if (ch == ":") { return rval(state,stream,"colon"); } // macro if (ch == '?') { stream.eatSpace(); stream.eatWhile(anumRE); return rval(state,stream,"macro"); } // record if (ch == "#") { stream.eatSpace(); stream.eatWhile(anumRE); return rval(state,stream,"record"); } // dollar escape if (ch == "$") { if (stream.next() == "\\" && !stream.match(escapesRE)) { return rval(state,stream,"error"); } return rval(state,stream,"number"); } // dot if (ch == ".") { return rval(state,stream,"dot"); } // quoted atom if (ch == '\'') { if (!(state.in_atom = (!singleQuote(stream)))) { if (stream.match(/\s*\/\s*[0-9]/,false)) { stream.match(/\s*\/\s*[0-9]/,true); return rval(state,stream,"fun"); // 'f'/0 style fun } if (stream.match(/\s*\(/,false) || stream.match(/\s*:/,false)) { return rval(state,stream,"function"); } } return rval(state,stream,"atom"); } // string if (ch == '"') { state.in_string = (!doubleQuote(stream)); return rval(state,stream,"string"); } // variable if (/[A-Z_Ø-ÞÀ-Ö]/.test(ch)) { stream.eatWhile(anumRE); return rval(state,stream,"variable"); } // atom/keyword/BIF/function if (/[a-z_ß-öø-ÿ]/.test(ch)) { stream.eatWhile(anumRE); if (stream.match(/\s*\/\s*[0-9]/,false)) { stream.match(/\s*\/\s*[0-9]/,true); return rval(state,stream,"fun"); // f/0 style fun } var w = stream.current(); if (is_member(w,keywordWords)) { return rval(state,stream,"keyword"); }else if (is_member(w,operatorAtomWords)) { return rval(state,stream,"operator"); }else if (stream.match(/\s*\(/,false)) { // 'put' and 'erlang:put' are bifs, 'foo:put' is not if (is_member(w,bifWords) && ((peekToken(state).token != ":") || (peekToken(state,2).token == "erlang"))) { return rval(state,stream,"builtin"); }else if (is_member(w,guardWords)) { return rval(state,stream,"guard"); }else{ return rval(state,stream,"function"); } }else if (lookahead(stream) == ":") { if (w == "erlang") { return rval(state,stream,"builtin"); } else { return rval(state,stream,"function"); } }else if (is_member(w,["true","false"])) { return rval(state,stream,"boolean"); }else{ return rval(state,stream,"atom"); } } // number var digitRE = /[0-9]/; var radixRE = /[0-9a-zA-Z]/; // 36#zZ style int if (digitRE.test(ch)) { stream.eatWhile(digitRE); if (stream.eat('#')) { // 36#aZ style integer if (!stream.eatWhile(radixRE)) { stream.backUp(1); //"36#" - syntax error } } else if (stream.eat('.')) { // float if (!stream.eatWhile(digitRE)) { stream.backUp(1); // "3." - probably end of function } else { if (stream.eat(/[eE]/)) { // float with exponent if (stream.eat(/[-+]/)) { if (!stream.eatWhile(digitRE)) { stream.backUp(2); // "2e-" - syntax error } } else { if (!stream.eatWhile(digitRE)) { stream.backUp(1); // "2e" - syntax error } } } } } return rval(state,stream,"number"); // normal integer } // open parens if (nongreedy(stream,openParenRE,openParenWords)) { return rval(state,stream,"open_paren"); } // close parens if (nongreedy(stream,closeParenRE,closeParenWords)) { return rval(state,stream,"close_paren"); } // separators if (greedy(stream,separatorRE,separatorWords)) { return rval(state,stream,"separator"); } // operators if (greedy(stream,operatorSymbolRE,operatorSymbolWords)) { return rval(state,stream,"operator"); } return rval(state,stream,null); } ///////////////////////////////////////////////////////////////////////////// // utilities function nongreedy(stream,re,words) { if (stream.current().length == 1 && re.test(stream.current())) { stream.backUp(1); while (re.test(stream.peek())) { stream.next(); if (is_member(stream.current(),words)) { return true; } } stream.backUp(stream.current().length-1); } return false; } function greedy(stream,re,words) { if (stream.current().length == 1 && re.test(stream.current())) { while (re.test(stream.peek())) { stream.next(); } while (0 < stream.current().length) { if (is_member(stream.current(),words)) { return true; }else{ stream.backUp(1); } } stream.next(); } return false; } function doubleQuote(stream) { return quote(stream, '"', '\\'); } function singleQuote(stream) { return quote(stream,'\'','\\'); } function quote(stream,quoteChar,escapeChar) { while (!stream.eol()) { var ch = stream.next(); if (ch == quoteChar) { return true; }else if (ch == escapeChar) { stream.next(); } } return false; } function lookahead(stream) { var m = stream.match(/([\n\s]+|%[^\n]*\n)*(.)/,false); return m ? m.pop() : ""; } function is_member(element,list) { return (-1 < list.indexOf(element)); } function rval(state,stream,type) { // parse stack pushToken(state,realToken(type,stream)); // map erlang token type to CodeMirror style class // erlang -> CodeMirror tag switch (type) { case "atom": return "atom"; case "attribute": return "attribute"; case "boolean": return "atom"; case "builtin": return "builtin"; case "close_paren": return null; case "colon": return null; case "comment": return "comment"; case "dot": return null; case "error": return "error"; case "fun": return "meta"; case "function": return "tag"; case "guard": return "property"; case "keyword": return "keyword"; case "macro": return "variable-2"; case "number": return "number"; case "open_paren": return null; case "operator": return "operator"; case "record": return "bracket"; case "separator": return null; case "string": return "string"; case "type": return "def"; case "variable": return "variable"; default: return null; } } function aToken(tok,col,ind,typ) { return {token: tok, column: col, indent: ind, type: typ}; } function realToken(type,stream) { return aToken(stream.current(), stream.column(), stream.indentation(), type); } function fakeToken(type) { return aToken(type,0,0,type); } function peekToken(state,depth) { var len = state.tokenStack.length; var dep = (depth ? depth : 1); if (len < dep) { return false; }else{ return state.tokenStack[len-dep]; } } function pushToken(state,token) { if (!(token.type == "comment" || token.type == "whitespace")) { state.tokenStack = maybe_drop_pre(state.tokenStack,token); state.tokenStack = maybe_drop_post(state.tokenStack); } } function maybe_drop_pre(s,token) { var last = s.length-1; if (0 < last && s[last].type === "record" && token.type === "dot") { s.pop(); }else if (0 < last && s[last].type === "group") { s.pop(); s.push(token); }else{ s.push(token); } return s; } function maybe_drop_post(s) { var last = s.length-1; if (s[last].type === "dot") { return []; } if (s[last].type === "fun" && s[last-1].token === "fun") { return s.slice(0,last-1); } switch (s[s.length-1].token) { case "}": return d(s,{g:["{"]}); case "]": return d(s,{i:["["]}); case ")": return d(s,{i:["("]}); case ">>": return d(s,{i:["<<"]}); case "end": return d(s,{i:["begin","case","fun","if","receive","try"]}); case ",": return d(s,{e:["begin","try","when","->", ",","(","[","{","<<"]}); case "->": return d(s,{r:["when"], m:["try","if","case","receive"]}); case ";": return d(s,{E:["case","fun","if","receive","try","when"]}); case "catch":return d(s,{e:["try"]}); case "of": return d(s,{e:["case"]}); case "after":return d(s,{e:["receive","try"]}); default: return s; } } function d(stack,tt) { // stack is a stack of Token objects. // tt is an object; {type:tokens} // type is a char, tokens is a list of token strings. // The function returns (possibly truncated) stack. // It will descend the stack, looking for a Token such that Token.token // is a member of tokens. If it does not find that, it will normally (but // see "E" below) return stack. If it does find a match, it will remove // all the Tokens between the top and the matched Token. // If type is "m", that is all it does. // If type is "i", it will also remove the matched Token and the top Token. // If type is "g", like "i", but add a fake "group" token at the top. // If type is "r", it will remove the matched Token, but not the top Token. // If type is "e", it will keep the matched Token but not the top Token. // If type is "E", it behaves as for type "e", except if there is no match, // in which case it will return an empty stack. for (var type in tt) { var len = stack.length-1; var tokens = tt[type]; for (var i = len-1; -1 < i ; i--) { if (is_member(stack[i].token,tokens)) { var ss = stack.slice(0,i); switch (type) { case "m": return ss.concat(stack[i]).concat(stack[len]); case "r": return ss.concat(stack[len]); case "i": return ss; case "g": return ss.concat(fakeToken("group")); case "E": return ss.concat(stack[i]); case "e": return ss.concat(stack[i]); } } } } return (type == "E" ? [] : stack); } ///////////////////////////////////////////////////////////////////////////// // indenter function indenter(state,textAfter) { var t; var unit = cmCfg.indentUnit; var wordAfter = wordafter(textAfter); var currT = peekToken(state,1); var prevT = peekToken(state,2); if (state.in_string || state.in_atom) { return CodeMirror.Pass; }else if (!prevT) { return 0; }else if (currT.token == "when") { return currT.column+unit; }else if (wordAfter === "when" && prevT.type === "function") { return prevT.indent+unit; }else if (wordAfter === "(" && currT.token === "fun") { return currT.column+3; }else if (wordAfter === "catch" && (t = getToken(state,["try"]))) { return t.column; }else if (is_member(wordAfter,["end","after","of"])) { t = getToken(state,["begin","case","fun","if","receive","try"]); return t ? t.column : CodeMirror.Pass; }else if (is_member(wordAfter,closeParenWords)) { t = getToken(state,openParenWords); return t ? t.column : CodeMirror.Pass; }else if (is_member(currT.token,[",","|","||"]) || is_member(wordAfter,[",","|","||"])) { t = postcommaToken(state); return t ? t.column+t.token.length : unit; }else if (currT.token == "->") { if (is_member(prevT.token, ["receive","case","if","try"])) { return prevT.column+unit+unit; }else{ return prevT.column+unit; } }else if (is_member(currT.token,openParenWords)) { return currT.column+currT.token.length; }else{ t = defaultToken(state); return truthy(t) ? t.column+unit : 0; } } function wordafter(str) { var m = str.match(/,|[a-z]+|\}|\]|\)|>>|\|+|\(/); return truthy(m) && (m.index === 0) ? m[0] : ""; } function postcommaToken(state) { var objs = state.tokenStack.slice(0,-1); var i = getTokenIndex(objs,"type",["open_paren"]); return truthy(objs[i]) ? objs[i] : false; } function defaultToken(state) { var objs = state.tokenStack; var stop = getTokenIndex(objs,"type",["open_paren","separator","keyword"]); var oper = getTokenIndex(objs,"type",["operator"]); if (truthy(stop) && truthy(oper) && stop < oper) { return objs[stop+1]; } else if (truthy(stop)) { return objs[stop]; } else { return false; } } function getToken(state,tokens) { var objs = state.tokenStack; var i = getTokenIndex(objs,"token",tokens); return truthy(objs[i]) ? objs[i] : false; } function getTokenIndex(objs,propname,propvals) { for (var i = objs.length-1; -1 < i ; i--) { if (is_member(objs[i][propname],propvals)) { return i; } } return false; } function truthy(x) { return (x !== false) && (x != null); } ///////////////////////////////////////////////////////////////////////////// // this object defines the mode return { startState: function() { return {tokenStack: [], in_string: false, in_atom: false}; }, token: function(stream, state) { return tokenizer(stream, state); }, indent: function(state, textAfter) { return indenter(state,textAfter); }, lineComment: "%" }; }); }); plugins/file-manager-advanced/application/library/codemirror/mode/erlang/index.html000064400000004170147176754550024653 0ustar00 CodeMirror: Erlang mode

Erlang mode

MIME types defined: text/x-erlang.

plugins/file-manager-advanced/application/library/codemirror/mode/factor/factor.js000064400000005547147176754550024511 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE // Factor syntax highlight - simple mode // // by Dimage Sapelkin (https://github.com/kerabromsmu) (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror"), require("../../addon/mode/simple")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror", "../../addon/mode/simple"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineSimpleMode("factor", { // The start state contains the rules that are intially used start: [ // comments {regex: /#?!.*/, token: "comment"}, // strings """, multiline --> state {regex: /"""/, token: "string", next: "string3"}, {regex: /"/, token: "string", next: "string"}, // numbers: dec, hex, unicode, bin, fractional, complex {regex: /(?:[+-]?)(?:0x[\d,a-f]+)|(?:0o[0-7]+)|(?:0b[0,1]+)|(?:\d+.?\d*)/, token: "number"}, //{regex: /[+-]?/} //fractional // definition: defining word, defined word, etc {regex: /(\:)(\s+)(\S+)(\s+)(\()/, token: ["keyword", null, "def", null, "keyword"], next: "stack"}, // vocabulary using --> state {regex: /USING\:/, token: "keyword", next: "vocabulary"}, // vocabulary definition/use {regex: /(USE\:|IN\:)(\s+)(\S+)/, token: ["keyword", null, "variable-2"]}, // {regex: /<\S+>/, token: "builtin"}, // "keywords", incl. ; t f . [ ] { } defining words {regex: /;|t|f|if|\.|\[|\]|\{|\}|MAIN:/, token: "keyword"}, // any id (?) {regex: /\S+/, token: "variable"}, { regex: /./, token: null } ], vocabulary: [ {regex: /;/, token: "keyword", next: "start"}, {regex: /\S+/, token: "variable-2"}, { regex: /./, token: null } ], string: [ {regex: /(?:[^\\]|\\.)*?"/, token: "string", next: "start"}, {regex: /.*/, token: "string"} ], string3: [ {regex: /(?:[^\\]|\\.)*?"""/, token: "string", next: "start"}, {regex: /.*/, token: "string"} ], stack: [ {regex: /\)/, token: "meta", next: "start"}, {regex: /--/, token: "meta"}, {regex: /\S+/, token: "variable-3"}, { regex: /./, token: null } ], // The meta property contains global information about the mode. It // can contain properties like lineComment, which are supported by // all modes, and also directives like dontIndentStates, which are // specific to simple modes. meta: { dontIndentStates: ["start", "vocabulary", "string", "string3", "stack"], lineComment: [ "!", "#!" ] } }); CodeMirror.defineMIME("text/x-factor", "factor"); }); plugins/file-manager-advanced/application/library/codemirror/mode/factor/index.html000064400000003750147176754550024664 0ustar00 CodeMirror: Factor mode

Factor mode

Simple mode that handles Factor Syntax (Factor on WikiPedia).

MIME types defined: text/x-factor.

plugins/file-manager-advanced/application/library/codemirror/mode/fcl/fcl.js000064400000011137147176754550023255 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("fcl", function(config) { var indentUnit = config.indentUnit; var keywords = { "term": true, "method": true, "accu": true, "rule": true, "then": true, "is": true, "and": true, "or": true, "if": true, "default": true }; var start_blocks = { "var_input": true, "var_output": true, "fuzzify": true, "defuzzify": true, "function_block": true, "ruleblock": true }; var end_blocks = { "end_ruleblock": true, "end_defuzzify": true, "end_function_block": true, "end_fuzzify": true, "end_var": true }; var atoms = { "true": true, "false": true, "nan": true, "real": true, "min": true, "max": true, "cog": true, "cogs": true }; var isOperatorChar = /[+\-*&^%:=<>!|\/]/; function tokenBase(stream, state) { var ch = stream.next(); if (/[\d\.]/.test(ch)) { if (ch == ".") { stream.match(/^[0-9]+([eE][\-+]?[0-9]+)?/); } else if (ch == "0") { stream.match(/^[xX][0-9a-fA-F]+/) || stream.match(/^0[0-7]+/); } else { stream.match(/^[0-9]*\.?[0-9]*([eE][\-+]?[0-9]+)?/); } return "number"; } if (ch == "/" || ch == "(") { if (stream.eat("*")) { state.tokenize = tokenComment; return tokenComment(stream, state); } if (stream.eat("/")) { stream.skipToEnd(); return "comment"; } } if (isOperatorChar.test(ch)) { stream.eatWhile(isOperatorChar); return "operator"; } stream.eatWhile(/[\w\$_\xa1-\uffff]/); var cur = stream.current().toLowerCase(); if (keywords.propertyIsEnumerable(cur) || start_blocks.propertyIsEnumerable(cur) || end_blocks.propertyIsEnumerable(cur)) { return "keyword"; } if (atoms.propertyIsEnumerable(cur)) return "atom"; return "variable"; } function tokenComment(stream, state) { var maybeEnd = false, ch; while (ch = stream.next()) { if ((ch == "/" || ch == ")") && maybeEnd) { state.tokenize = tokenBase; break; } maybeEnd = (ch == "*"); } return "comment"; } function Context(indented, column, type, align, prev) { this.indented = indented; this.column = column; this.type = type; this.align = align; this.prev = prev; } function pushContext(state, col, type) { return state.context = new Context(state.indented, col, type, null, state.context); } function popContext(state) { if (!state.context.prev) return; var t = state.context.type; if (t == "end_block") state.indented = state.context.indented; return state.context = state.context.prev; } // Interface return { startState: function(basecolumn) { return { tokenize: null, context: new Context((basecolumn || 0) - indentUnit, 0, "top", false), indented: 0, startOfLine: true }; }, token: function(stream, state) { var ctx = state.context; if (stream.sol()) { if (ctx.align == null) ctx.align = false; state.indented = stream.indentation(); state.startOfLine = true; } if (stream.eatSpace()) return null; var style = (state.tokenize || tokenBase)(stream, state); if (style == "comment") return style; if (ctx.align == null) ctx.align = true; var cur = stream.current().toLowerCase(); if (start_blocks.propertyIsEnumerable(cur)) pushContext(state, stream.column(), "end_block"); else if (end_blocks.propertyIsEnumerable(cur)) popContext(state); state.startOfLine = false; return style; }, indent: function(state, textAfter) { if (state.tokenize != tokenBase && state.tokenize != null) return 0; var ctx = state.context; var closing = end_blocks.propertyIsEnumerable(textAfter); if (ctx.align) return ctx.column + (closing ? 0 : 1); else return ctx.indented + (closing ? 0 : indentUnit); }, electricChars: "ryk", fold: "brace", blockCommentStart: "(*", blockCommentEnd: "*)", lineComment: "//" }; }); CodeMirror.defineMIME("text/x-fcl", "fcl"); }); plugins/file-manager-advanced/application/library/codemirror/mode/fcl/index.html000064400000006023147176754550024146 0ustar00 CodeMirror: FCL mode

FCL mode

MIME type: text/x-fcl

plugins/file-manager-advanced/application/library/codemirror/mode/forth/forth.js000064400000012156147176754550024213 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE // Author: Aliaksei Chapyzhenka (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; function toWordList(words) { var ret = []; words.split(' ').forEach(function(e){ ret.push({name: e}); }); return ret; } var coreWordList = toWordList( 'INVERT AND OR XOR\ 2* 2/ LSHIFT RSHIFT\ 0= = 0< < > U< MIN MAX\ 2DROP 2DUP 2OVER 2SWAP ?DUP DEPTH DROP DUP OVER ROT SWAP\ >R R> R@\ + - 1+ 1- ABS NEGATE\ S>D * M* UM*\ FM/MOD SM/REM UM/MOD */ */MOD / /MOD MOD\ HERE , @ ! CELL+ CELLS C, C@ C! CHARS 2@ 2!\ ALIGN ALIGNED +! ALLOT\ CHAR [CHAR] [ ] BL\ FIND EXECUTE IMMEDIATE COUNT LITERAL STATE\ ; DOES> >BODY\ EVALUATE\ SOURCE >IN\ <# # #S #> HOLD SIGN BASE >NUMBER HEX DECIMAL\ FILL MOVE\ . CR EMIT SPACE SPACES TYPE U. .R U.R\ ACCEPT\ TRUE FALSE\ <> U> 0<> 0>\ NIP TUCK ROLL PICK\ 2>R 2R@ 2R>\ WITHIN UNUSED MARKER\ I J\ TO\ COMPILE, [COMPILE]\ SAVE-INPUT RESTORE-INPUT\ PAD ERASE\ 2LITERAL DNEGATE\ D- D+ D0< D0= D2* D2/ D< D= DMAX DMIN D>S DABS\ M+ M*/ D. D.R 2ROT DU<\ CATCH THROW\ FREE RESIZE ALLOCATE\ CS-PICK CS-ROLL\ GET-CURRENT SET-CURRENT FORTH-WORDLIST GET-ORDER SET-ORDER\ PREVIOUS SEARCH-WORDLIST WORDLIST FIND ALSO ONLY FORTH DEFINITIONS ORDER\ -TRAILING /STRING SEARCH COMPARE CMOVE CMOVE> BLANK SLITERAL'); var immediateWordList = toWordList('IF ELSE THEN BEGIN WHILE REPEAT UNTIL RECURSE [IF] [ELSE] [THEN] ?DO DO LOOP +LOOP UNLOOP LEAVE EXIT AGAIN CASE OF ENDOF ENDCASE'); CodeMirror.defineMode('forth', function() { function searchWordList (wordList, word) { var i; for (i = wordList.length - 1; i >= 0; i--) { if (wordList[i].name === word.toUpperCase()) { return wordList[i]; } } return undefined; } return { startState: function() { return { state: '', base: 10, coreWordList: coreWordList, immediateWordList: immediateWordList, wordList: [] }; }, token: function (stream, stt) { var mat; if (stream.eatSpace()) { return null; } if (stt.state === '') { // interpretation if (stream.match(/^(\]|:NONAME)(\s|$)/i)) { stt.state = ' compilation'; return 'builtin compilation'; } mat = stream.match(/^(\:)\s+(\S+)(\s|$)+/); if (mat) { stt.wordList.push({name: mat[2].toUpperCase()}); stt.state = ' compilation'; return 'def' + stt.state; } mat = stream.match(/^(VARIABLE|2VARIABLE|CONSTANT|2CONSTANT|CREATE|POSTPONE|VALUE|WORD)\s+(\S+)(\s|$)+/i); if (mat) { stt.wordList.push({name: mat[2].toUpperCase()}); return 'def' + stt.state; } mat = stream.match(/^(\'|\[\'\])\s+(\S+)(\s|$)+/); if (mat) { return 'builtin' + stt.state; } } else { // compilation // ; [ if (stream.match(/^(\;|\[)(\s)/)) { stt.state = ''; stream.backUp(1); return 'builtin compilation'; } if (stream.match(/^(\;|\[)($)/)) { stt.state = ''; return 'builtin compilation'; } if (stream.match(/^(POSTPONE)\s+\S+(\s|$)+/)) { return 'builtin'; } } // dynamic wordlist mat = stream.match(/^(\S+)(\s+|$)/); if (mat) { if (searchWordList(stt.wordList, mat[1]) !== undefined) { return 'variable' + stt.state; } // comments if (mat[1] === '\\') { stream.skipToEnd(); return 'comment' + stt.state; } // core words if (searchWordList(stt.coreWordList, mat[1]) !== undefined) { return 'builtin' + stt.state; } if (searchWordList(stt.immediateWordList, mat[1]) !== undefined) { return 'keyword' + stt.state; } if (mat[1] === '(') { stream.eatWhile(function (s) { return s !== ')'; }); stream.eat(')'); return 'comment' + stt.state; } // // strings if (mat[1] === '.(') { stream.eatWhile(function (s) { return s !== ')'; }); stream.eat(')'); return 'string' + stt.state; } if (mat[1] === 'S"' || mat[1] === '."' || mat[1] === 'C"') { stream.eatWhile(function (s) { return s !== '"'; }); stream.eat('"'); return 'string' + stt.state; } // numbers if (mat[1] - 0xfffffffff) { return 'number' + stt.state; } // if (mat[1].match(/^[-+]?[0-9]+\.[0-9]*/)) { // return 'number' + stt.state; // } return 'atom' + stt.state; } } }; }); CodeMirror.defineMIME("text/x-forth", "forth"); }); plugins/file-manager-advanced/application/library/codemirror/mode/forth/index.html000064400000003367147176754550024534 0ustar00 CodeMirror: Forth mode

Forth mode

Simple mode that handle Forth-Syntax (Forth on WikiPedia).

MIME types defined: text/x-forth.

plugins/file-manager-advanced/application/library/codemirror/mode/fortran/fortran.js000064400000020756147176754550025102 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("fortran", function() { function words(array) { var keys = {}; for (var i = 0; i < array.length; ++i) { keys[array[i]] = true; } return keys; } var keywords = words([ "abstract", "accept", "allocatable", "allocate", "array", "assign", "asynchronous", "backspace", "bind", "block", "byte", "call", "case", "class", "close", "common", "contains", "continue", "cycle", "data", "deallocate", "decode", "deferred", "dimension", "do", "elemental", "else", "encode", "end", "endif", "entry", "enumerator", "equivalence", "exit", "external", "extrinsic", "final", "forall", "format", "function", "generic", "go", "goto", "if", "implicit", "import", "include", "inquire", "intent", "interface", "intrinsic", "module", "namelist", "non_intrinsic", "non_overridable", "none", "nopass", "nullify", "open", "optional", "options", "parameter", "pass", "pause", "pointer", "print", "private", "program", "protected", "public", "pure", "read", "recursive", "result", "return", "rewind", "save", "select", "sequence", "stop", "subroutine", "target", "then", "to", "type", "use", "value", "volatile", "where", "while", "write"]); var builtins = words(["abort", "abs", "access", "achar", "acos", "adjustl", "adjustr", "aimag", "aint", "alarm", "all", "allocated", "alog", "amax", "amin", "amod", "and", "anint", "any", "asin", "associated", "atan", "besj", "besjn", "besy", "besyn", "bit_size", "btest", "cabs", "ccos", "ceiling", "cexp", "char", "chdir", "chmod", "clog", "cmplx", "command_argument_count", "complex", "conjg", "cos", "cosh", "count", "cpu_time", "cshift", "csin", "csqrt", "ctime", "c_funloc", "c_loc", "c_associated", "c_null_ptr", "c_null_funptr", "c_f_pointer", "c_null_char", "c_alert", "c_backspace", "c_form_feed", "c_new_line", "c_carriage_return", "c_horizontal_tab", "c_vertical_tab", "dabs", "dacos", "dasin", "datan", "date_and_time", "dbesj", "dbesj", "dbesjn", "dbesy", "dbesy", "dbesyn", "dble", "dcos", "dcosh", "ddim", "derf", "derfc", "dexp", "digits", "dim", "dint", "dlog", "dlog", "dmax", "dmin", "dmod", "dnint", "dot_product", "dprod", "dsign", "dsinh", "dsin", "dsqrt", "dtanh", "dtan", "dtime", "eoshift", "epsilon", "erf", "erfc", "etime", "exit", "exp", "exponent", "extends_type_of", "fdate", "fget", "fgetc", "float", "floor", "flush", "fnum", "fputc", "fput", "fraction", "fseek", "fstat", "ftell", "gerror", "getarg", "get_command", "get_command_argument", "get_environment_variable", "getcwd", "getenv", "getgid", "getlog", "getpid", "getuid", "gmtime", "hostnm", "huge", "iabs", "iachar", "iand", "iargc", "ibclr", "ibits", "ibset", "ichar", "idate", "idim", "idint", "idnint", "ieor", "ierrno", "ifix", "imag", "imagpart", "index", "int", "ior", "irand", "isatty", "ishft", "ishftc", "isign", "iso_c_binding", "is_iostat_end", "is_iostat_eor", "itime", "kill", "kind", "lbound", "len", "len_trim", "lge", "lgt", "link", "lle", "llt", "lnblnk", "loc", "log", "logical", "long", "lshift", "lstat", "ltime", "matmul", "max", "maxexponent", "maxloc", "maxval", "mclock", "merge", "move_alloc", "min", "minexponent", "minloc", "minval", "mod", "modulo", "mvbits", "nearest", "new_line", "nint", "not", "or", "pack", "perror", "precision", "present", "product", "radix", "rand", "random_number", "random_seed", "range", "real", "realpart", "rename", "repeat", "reshape", "rrspacing", "rshift", "same_type_as", "scale", "scan", "second", "selected_int_kind", "selected_real_kind", "set_exponent", "shape", "short", "sign", "signal", "sinh", "sin", "sleep", "sngl", "spacing", "spread", "sqrt", "srand", "stat", "sum", "symlnk", "system", "system_clock", "tan", "tanh", "time", "tiny", "transfer", "transpose", "trim", "ttynam", "ubound", "umask", "unlink", "unpack", "verify", "xor", "zabs", "zcos", "zexp", "zlog", "zsin", "zsqrt"]); var dataTypes = words(["c_bool", "c_char", "c_double", "c_double_complex", "c_float", "c_float_complex", "c_funptr", "c_int", "c_int16_t", "c_int32_t", "c_int64_t", "c_int8_t", "c_int_fast16_t", "c_int_fast32_t", "c_int_fast64_t", "c_int_fast8_t", "c_int_least16_t", "c_int_least32_t", "c_int_least64_t", "c_int_least8_t", "c_intmax_t", "c_intptr_t", "c_long", "c_long_double", "c_long_double_complex", "c_long_long", "c_ptr", "c_short", "c_signed_char", "c_size_t", "character", "complex", "double", "integer", "logical", "real"]); var isOperatorChar = /[+\-*&=<>\/\:]/; var litOperator = new RegExp("(\.and\.|\.or\.|\.eq\.|\.lt\.|\.le\.|\.gt\.|\.ge\.|\.ne\.|\.not\.|\.eqv\.|\.neqv\.)", "i"); function tokenBase(stream, state) { if (stream.match(litOperator)){ return 'operator'; } var ch = stream.next(); if (ch == "!") { stream.skipToEnd(); return "comment"; } if (ch == '"' || ch == "'") { state.tokenize = tokenString(ch); return state.tokenize(stream, state); } if (/[\[\]\(\),]/.test(ch)) { return null; } if (/\d/.test(ch)) { stream.eatWhile(/[\w\.]/); return "number"; } if (isOperatorChar.test(ch)) { stream.eatWhile(isOperatorChar); return "operator"; } stream.eatWhile(/[\w\$_]/); var word = stream.current().toLowerCase(); if (keywords.hasOwnProperty(word)){ return 'keyword'; } if (builtins.hasOwnProperty(word) || dataTypes.hasOwnProperty(word)) { return 'builtin'; } return "variable"; } function tokenString(quote) { return function(stream, state) { var escaped = false, next, end = false; while ((next = stream.next()) != null) { if (next == quote && !escaped) { end = true; break; } escaped = !escaped && next == "\\"; } if (end || !escaped) state.tokenize = null; return "string"; }; } // Interface return { startState: function() { return {tokenize: null}; }, token: function(stream, state) { if (stream.eatSpace()) return null; var style = (state.tokenize || tokenBase)(stream, state); if (style == "comment" || style == "meta") return style; return style; } }; }); CodeMirror.defineMIME("text/x-fortran", "fortran"); }); plugins/file-manager-advanced/application/library/codemirror/mode/fortran/index.html000064400000004674147176754550025067 0ustar00 CodeMirror: Fortran mode

Fortran mode

MIME types defined: text/x-fortran.

plugins/file-manager-advanced/application/library/codemirror/mode/gas/gas.js000064400000021266147176754550023275 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("gas", function(_config, parserConfig) { 'use strict'; // If an architecture is specified, its initialization function may // populate this array with custom parsing functions which will be // tried in the event that the standard functions do not find a match. var custom = []; // The symbol used to start a line comment changes based on the target // architecture. // If no architecture is pased in "parserConfig" then only multiline // comments will have syntax support. var lineCommentStartSymbol = ""; // These directives are architecture independent. // Machine specific directives should go in their respective // architecture initialization function. // Reference: // http://sourceware.org/binutils/docs/as/Pseudo-Ops.html#Pseudo-Ops var directives = { ".abort" : "builtin", ".align" : "builtin", ".altmacro" : "builtin", ".ascii" : "builtin", ".asciz" : "builtin", ".balign" : "builtin", ".balignw" : "builtin", ".balignl" : "builtin", ".bundle_align_mode" : "builtin", ".bundle_lock" : "builtin", ".bundle_unlock" : "builtin", ".byte" : "builtin", ".cfi_startproc" : "builtin", ".comm" : "builtin", ".data" : "builtin", ".def" : "builtin", ".desc" : "builtin", ".dim" : "builtin", ".double" : "builtin", ".eject" : "builtin", ".else" : "builtin", ".elseif" : "builtin", ".end" : "builtin", ".endef" : "builtin", ".endfunc" : "builtin", ".endif" : "builtin", ".equ" : "builtin", ".equiv" : "builtin", ".eqv" : "builtin", ".err" : "builtin", ".error" : "builtin", ".exitm" : "builtin", ".extern" : "builtin", ".fail" : "builtin", ".file" : "builtin", ".fill" : "builtin", ".float" : "builtin", ".func" : "builtin", ".global" : "builtin", ".gnu_attribute" : "builtin", ".hidden" : "builtin", ".hword" : "builtin", ".ident" : "builtin", ".if" : "builtin", ".incbin" : "builtin", ".include" : "builtin", ".int" : "builtin", ".internal" : "builtin", ".irp" : "builtin", ".irpc" : "builtin", ".lcomm" : "builtin", ".lflags" : "builtin", ".line" : "builtin", ".linkonce" : "builtin", ".list" : "builtin", ".ln" : "builtin", ".loc" : "builtin", ".loc_mark_labels" : "builtin", ".local" : "builtin", ".long" : "builtin", ".macro" : "builtin", ".mri" : "builtin", ".noaltmacro" : "builtin", ".nolist" : "builtin", ".octa" : "builtin", ".offset" : "builtin", ".org" : "builtin", ".p2align" : "builtin", ".popsection" : "builtin", ".previous" : "builtin", ".print" : "builtin", ".protected" : "builtin", ".psize" : "builtin", ".purgem" : "builtin", ".pushsection" : "builtin", ".quad" : "builtin", ".reloc" : "builtin", ".rept" : "builtin", ".sbttl" : "builtin", ".scl" : "builtin", ".section" : "builtin", ".set" : "builtin", ".short" : "builtin", ".single" : "builtin", ".size" : "builtin", ".skip" : "builtin", ".sleb128" : "builtin", ".space" : "builtin", ".stab" : "builtin", ".string" : "builtin", ".struct" : "builtin", ".subsection" : "builtin", ".symver" : "builtin", ".tag" : "builtin", ".text" : "builtin", ".title" : "builtin", ".type" : "builtin", ".uleb128" : "builtin", ".val" : "builtin", ".version" : "builtin", ".vtable_entry" : "builtin", ".vtable_inherit" : "builtin", ".warning" : "builtin", ".weak" : "builtin", ".weakref" : "builtin", ".word" : "builtin" }; var registers = {}; function x86(_parserConfig) { lineCommentStartSymbol = "#"; registers.ax = "variable"; registers.eax = "variable-2"; registers.rax = "variable-3"; registers.bx = "variable"; registers.ebx = "variable-2"; registers.rbx = "variable-3"; registers.cx = "variable"; registers.ecx = "variable-2"; registers.rcx = "variable-3"; registers.dx = "variable"; registers.edx = "variable-2"; registers.rdx = "variable-3"; registers.si = "variable"; registers.esi = "variable-2"; registers.rsi = "variable-3"; registers.di = "variable"; registers.edi = "variable-2"; registers.rdi = "variable-3"; registers.sp = "variable"; registers.esp = "variable-2"; registers.rsp = "variable-3"; registers.bp = "variable"; registers.ebp = "variable-2"; registers.rbp = "variable-3"; registers.ip = "variable"; registers.eip = "variable-2"; registers.rip = "variable-3"; registers.cs = "keyword"; registers.ds = "keyword"; registers.ss = "keyword"; registers.es = "keyword"; registers.fs = "keyword"; registers.gs = "keyword"; } function armv6(_parserConfig) { // Reference: // http://infocenter.arm.com/help/topic/com.arm.doc.qrc0001l/QRC0001_UAL.pdf // http://infocenter.arm.com/help/topic/com.arm.doc.ddi0301h/DDI0301H_arm1176jzfs_r0p7_trm.pdf lineCommentStartSymbol = "@"; directives.syntax = "builtin"; registers.r0 = "variable"; registers.r1 = "variable"; registers.r2 = "variable"; registers.r3 = "variable"; registers.r4 = "variable"; registers.r5 = "variable"; registers.r6 = "variable"; registers.r7 = "variable"; registers.r8 = "variable"; registers.r9 = "variable"; registers.r10 = "variable"; registers.r11 = "variable"; registers.r12 = "variable"; registers.sp = "variable-2"; registers.lr = "variable-2"; registers.pc = "variable-2"; registers.r13 = registers.sp; registers.r14 = registers.lr; registers.r15 = registers.pc; custom.push(function(ch, stream) { if (ch === '#') { stream.eatWhile(/\w/); return "number"; } }); } var arch = (parserConfig.architecture || "x86").toLowerCase(); if (arch === "x86") { x86(parserConfig); } else if (arch === "arm" || arch === "armv6") { armv6(parserConfig); } function nextUntilUnescaped(stream, end) { var escaped = false, next; while ((next = stream.next()) != null) { if (next === end && !escaped) { return false; } escaped = !escaped && next === "\\"; } return escaped; } function clikeComment(stream, state) { var maybeEnd = false, ch; while ((ch = stream.next()) != null) { if (ch === "/" && maybeEnd) { state.tokenize = null; break; } maybeEnd = (ch === "*"); } return "comment"; } return { startState: function() { return { tokenize: null }; }, token: function(stream, state) { if (state.tokenize) { return state.tokenize(stream, state); } if (stream.eatSpace()) { return null; } var style, cur, ch = stream.next(); if (ch === "/") { if (stream.eat("*")) { state.tokenize = clikeComment; return clikeComment(stream, state); } } if (ch === lineCommentStartSymbol) { stream.skipToEnd(); return "comment"; } if (ch === '"') { nextUntilUnescaped(stream, '"'); return "string"; } if (ch === '.') { stream.eatWhile(/\w/); cur = stream.current().toLowerCase(); style = directives[cur]; return style || null; } if (ch === '=') { stream.eatWhile(/\w/); return "tag"; } if (ch === '{') { return "braket"; } if (ch === '}') { return "braket"; } if (/\d/.test(ch)) { if (ch === "0" && stream.eat("x")) { stream.eatWhile(/[0-9a-fA-F]/); return "number"; } stream.eatWhile(/\d/); return "number"; } if (/\w/.test(ch)) { stream.eatWhile(/\w/); if (stream.eat(":")) { return 'tag'; } cur = stream.current().toLowerCase(); style = registers[cur]; return style || null; } for (var i = 0; i < custom.length; i++) { style = custom[i](ch, stream, state); if (style) { return style; } } }, lineComment: lineCommentStartSymbol, blockCommentStart: "/*", blockCommentEnd: "*/" }; }); }); plugins/file-manager-advanced/application/library/codemirror/mode/gas/index.html000064400000003460147176754550024156 0ustar00 CodeMirror: Gas mode

Gas mode

Handles AT&T assembler syntax (more specifically this handles the GNU Assembler (gas) syntax.) It takes a single optional configuration parameter: architecture, which can be one of "ARM", "ARMv6" or "x86". Including the parameter adds syntax for the registers and special directives for the supplied architecture.

MIME types defined: text/x-gas

plugins/file-manager-advanced/application/library/codemirror/mode/gfm/gfm.js000064400000012021147176754550023260 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror"), require("../markdown/markdown"), require("../../addon/mode/overlay")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror", "../markdown/markdown", "../../addon/mode/overlay"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; var urlRE = /^((?:(?:aaas?|about|acap|adiumxtra|af[ps]|aim|apt|attachment|aw|beshare|bitcoin|bolo|callto|cap|chrome(?:-extension)?|cid|coap|com-eventbrite-attendee|content|crid|cvs|data|dav|dict|dlna-(?:playcontainer|playsingle)|dns|doi|dtn|dvb|ed2k|facetime|feed|file|finger|fish|ftp|geo|gg|git|gizmoproject|go|gopher|gtalk|h323|hcp|https?|iax|icap|icon|im|imap|info|ipn|ipp|irc[6s]?|iris(?:\.beep|\.lwz|\.xpc|\.xpcs)?|itms|jar|javascript|jms|keyparc|lastfm|ldaps?|magnet|mailto|maps|market|message|mid|mms|ms-help|msnim|msrps?|mtqp|mumble|mupdate|mvn|news|nfs|nih?|nntp|notes|oid|opaquelocktoken|palm|paparazzi|platform|pop|pres|proxy|psyc|query|res(?:ource)?|rmi|rsync|rtmp|rtsp|secondlife|service|session|sftp|sgn|shttp|sieve|sips?|skype|sm[bs]|snmp|soap\.beeps?|soldat|spotify|ssh|steam|svn|tag|teamspeak|tel(?:net)?|tftp|things|thismessage|tip|tn3270|tv|udp|unreal|urn|ut2004|vemmi|ventrilo|view-source|webcal|wss?|wtai|wyciwyg|xcon(?:-userid)?|xfire|xmlrpc\.beeps?|xmpp|xri|ymsgr|z39\.50[rs]?):(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]|\([^\s()<>]*\))+(?:\([^\s()<>]*\)|[^\s`*!()\[\]{};:'".,<>?«»“”‘’]))/i CodeMirror.defineMode("gfm", function(config, modeConfig) { var codeDepth = 0; function blankLine(state) { state.code = false; return null; } var gfmOverlay = { startState: function() { return { code: false, codeBlock: false, ateSpace: false }; }, copyState: function(s) { return { code: s.code, codeBlock: s.codeBlock, ateSpace: s.ateSpace }; }, token: function(stream, state) { state.combineTokens = null; // Hack to prevent formatting override inside code blocks (block and inline) if (state.codeBlock) { if (stream.match(/^```+/)) { state.codeBlock = false; return null; } stream.skipToEnd(); return null; } if (stream.sol()) { state.code = false; } if (stream.sol() && stream.match(/^```+/)) { stream.skipToEnd(); state.codeBlock = true; return null; } // If this block is changed, it may need to be updated in Markdown mode if (stream.peek() === '`') { stream.next(); var before = stream.pos; stream.eatWhile('`'); var difference = 1 + stream.pos - before; if (!state.code) { codeDepth = difference; state.code = true; } else { if (difference === codeDepth) { // Must be exact state.code = false; } } return null; } else if (state.code) { stream.next(); return null; } // Check if space. If so, links can be formatted later on if (stream.eatSpace()) { state.ateSpace = true; return null; } if (stream.sol() || state.ateSpace) { state.ateSpace = false; if (modeConfig.gitHubSpice !== false) { if(stream.match(/^(?:[a-zA-Z0-9\-_]+\/)?(?:[a-zA-Z0-9\-_]+@)?(?:[a-f0-9]{7,40}\b)/)) { // User/Project@SHA // User@SHA // SHA state.combineTokens = true; return "link"; } else if (stream.match(/^(?:[a-zA-Z0-9\-_]+\/)?(?:[a-zA-Z0-9\-_]+)?#[0-9]+\b/)) { // User/Project#Num // User#Num // #Num state.combineTokens = true; return "link"; } } } if (stream.match(urlRE) && stream.string.slice(stream.start - 2, stream.start) != "](" && (stream.start == 0 || /\W/.test(stream.string.charAt(stream.start - 1)))) { // URLs // Taken from http://daringfireball.net/2010/07/improved_regex_for_matching_urls // And then (issue #1160) simplified to make it not crash the Chrome Regexp engine // And then limited url schemes to the CommonMark list, so foo:bar isn't matched as a URL state.combineTokens = true; return "link"; } stream.next(); return null; }, blankLine: blankLine }; var markdownConfig = { underscoresBreakWords: false, taskLists: true, fencedCodeBlocks: '```', strikethrough: true }; for (var attr in modeConfig) { markdownConfig[attr] = modeConfig[attr]; } markdownConfig.name = "markdown"; return CodeMirror.overlayMode(CodeMirror.getMode(config, markdownConfig), gfmOverlay); }, "markdown"); CodeMirror.defineMIME("text/x-gfm", "gfm"); }); plugins/file-manager-advanced/application/library/codemirror/mode/gfm/index.html000064400000005027147176754550024156 0ustar00 CodeMirror: GFM mode

GFM mode

Optionally depends on other modes for properly highlighted code blocks.

Parsing/Highlighting Tests: normal, verbose.

plugins/file-manager-advanced/application/library/codemirror/mode/gfm/test.js000064400000016624147176754550023503 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function() { var mode = CodeMirror.getMode({tabSize: 4}, "gfm"); function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } var modeHighlightFormatting = CodeMirror.getMode({tabSize: 4}, {name: "gfm", highlightFormatting: true}); function FT(name) { test.mode(name, modeHighlightFormatting, Array.prototype.slice.call(arguments, 1)); } FT("codeBackticks", "[comment&formatting&formatting-code `][comment foo][comment&formatting&formatting-code `]"); FT("doubleBackticks", "[comment&formatting&formatting-code ``][comment foo ` bar][comment&formatting&formatting-code ``]"); FT("codeBlock", "[comment&formatting&formatting-code-block ```css]", "[tag foo]", "[comment&formatting&formatting-code-block ```]"); FT("taskList", "[variable-2&formatting&formatting-list&formatting-list-ul - ][meta&formatting&formatting-task [ ]]][variable-2 foo]", "[variable-2&formatting&formatting-list&formatting-list-ul - ][property&formatting&formatting-task [x]]][variable-2 foo]"); FT("formatting_strikethrough", "[strikethrough&formatting&formatting-strikethrough ~~][strikethrough foo][strikethrough&formatting&formatting-strikethrough ~~]"); FT("formatting_strikethrough", "foo [strikethrough&formatting&formatting-strikethrough ~~][strikethrough bar][strikethrough&formatting&formatting-strikethrough ~~]"); MT("emInWordAsterisk", "foo[em *bar*]hello"); MT("emInWordUnderscore", "foo_bar_hello"); MT("emStrongUnderscore", "[strong __][em&strong _foo__][em _] bar"); MT("fencedCodeBlocks", "[comment ```]", "[comment foo]", "", "[comment ```]", "bar"); MT("fencedCodeBlockModeSwitching", "[comment ```javascript]", "[variable foo]", "", "[comment ```]", "bar"); MT("fencedCodeBlockModeSwitchingObjc", "[comment ```objective-c]", "[keyword @property] [variable NSString] [operator *] [variable foo];", "[comment ```]", "bar"); MT("fencedCodeBlocksNoTildes", "~~~", "foo", "~~~"); MT("taskListAsterisk", "[variable-2 * []] foo]", // Invalid; must have space or x between [] "[variable-2 * [ ]]bar]", // Invalid; must have space after ] "[variable-2 * [x]]hello]", // Invalid; must have space after ] "[variable-2 * ][meta [ ]]][variable-2 [world]]]", // Valid; tests reference style links " [variable-3 * ][property [x]]][variable-3 foo]"); // Valid; can be nested MT("taskListPlus", "[variable-2 + []] foo]", // Invalid; must have space or x between [] "[variable-2 + [ ]]bar]", // Invalid; must have space after ] "[variable-2 + [x]]hello]", // Invalid; must have space after ] "[variable-2 + ][meta [ ]]][variable-2 [world]]]", // Valid; tests reference style links " [variable-3 + ][property [x]]][variable-3 foo]"); // Valid; can be nested MT("taskListDash", "[variable-2 - []] foo]", // Invalid; must have space or x between [] "[variable-2 - [ ]]bar]", // Invalid; must have space after ] "[variable-2 - [x]]hello]", // Invalid; must have space after ] "[variable-2 - ][meta [ ]]][variable-2 [world]]]", // Valid; tests reference style links " [variable-3 - ][property [x]]][variable-3 foo]"); // Valid; can be nested MT("taskListNumber", "[variable-2 1. []] foo]", // Invalid; must have space or x between [] "[variable-2 2. [ ]]bar]", // Invalid; must have space after ] "[variable-2 3. [x]]hello]", // Invalid; must have space after ] "[variable-2 4. ][meta [ ]]][variable-2 [world]]]", // Valid; tests reference style links " [variable-3 1. ][property [x]]][variable-3 foo]"); // Valid; can be nested MT("SHA", "foo [link be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2] bar"); MT("SHAEmphasis", "[em *foo ][em&link be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2][em *]"); MT("shortSHA", "foo [link be6a8cc] bar"); MT("tooShortSHA", "foo be6a8c bar"); MT("longSHA", "foo be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd22 bar"); MT("badSHA", "foo be6a8cc1c1ecfe9489fb51e4869af15a13fc2cg2 bar"); MT("userSHA", "foo [link bar@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2] hello"); MT("userSHAEmphasis", "[em *foo ][em&link bar@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2][em *]"); MT("userProjectSHA", "foo [link bar/hello@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2] world"); MT("userProjectSHAEmphasis", "[em *foo ][em&link bar/hello@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2][em *]"); MT("num", "foo [link #1] bar"); MT("numEmphasis", "[em *foo ][em&link #1][em *]"); MT("badNum", "foo #1bar hello"); MT("userNum", "foo [link bar#1] hello"); MT("userNumEmphasis", "[em *foo ][em&link bar#1][em *]"); MT("userProjectNum", "foo [link bar/hello#1] world"); MT("userProjectNumEmphasis", "[em *foo ][em&link bar/hello#1][em *]"); MT("vanillaLink", "foo [link http://www.example.com/] bar"); MT("vanillaLinkNoScheme", "foo [link www.example.com] bar"); MT("vanillaLinkHttps", "foo [link https://www.example.com/] bar"); MT("vanillaLinkDataSchema", "foo [link data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==] bar"); MT("vanillaLinkPunctuation", "foo [link http://www.example.com/]. bar"); MT("vanillaLinkExtension", "foo [link http://www.example.com/index.html] bar"); MT("vanillaLinkEmphasis", "foo [em *][em&link http://www.example.com/index.html][em *] bar"); MT("notALink", "foo asfd:asdf bar"); MT("notALink", "[comment ```css]", "[tag foo] {[property color]:[keyword black];}", "[comment ```][link http://www.example.com/]"); MT("notALink", "[comment ``foo `bar` http://www.example.com/``] hello"); MT("notALink", "[comment `foo]", "[comment&link http://www.example.com/]", "[comment `] foo", "", "[link http://www.example.com/]"); MT("headerCodeBlockGithub", "[header&header-1 # heading]", "", "[comment ```]", "[comment code]", "[comment ```]", "", "Commit: [link be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2]", "Issue: [link #1]", "Link: [link http://www.example.com/]"); MT("strikethrough", "[strikethrough ~~foo~~]"); MT("strikethroughWithStartingSpace", "~~ foo~~"); MT("strikethroughUnclosedStrayTildes", "[strikethrough ~~foo~~~]"); MT("strikethroughUnclosedStrayTildes", "[strikethrough ~~foo ~~]"); MT("strikethroughUnclosedStrayTildes", "[strikethrough ~~foo ~~ bar]"); MT("strikethroughUnclosedStrayTildes", "[strikethrough ~~foo ~~ bar~~]hello"); MT("strikethroughOneLetter", "[strikethrough ~~a~~]"); MT("strikethroughWrapped", "[strikethrough ~~foo]", "[strikethrough foo~~]"); MT("strikethroughParagraph", "[strikethrough ~~foo]", "", "foo[strikethrough ~~bar]"); MT("strikethroughEm", "[strikethrough ~~foo][em&strikethrough *bar*][strikethrough ~~]"); MT("strikethroughEm", "[em *][em&strikethrough ~~foo~~][em *]"); MT("strikethroughStrong", "[strikethrough ~~][strong&strikethrough **foo**][strikethrough ~~]"); MT("strikethroughStrong", "[strong **][strong&strikethrough ~~foo~~][strong **]"); })(); plugins/file-manager-advanced/application/library/codemirror/mode/gherkin/gherkin.js000064400000031711147176754550025023 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE /* Gherkin mode - http://www.cukes.info/ Report bugs/issues here: https://github.com/codemirror/CodeMirror/issues */ // Following Objs from Brackets implementation: https://github.com/tregusti/brackets-gherkin/blob/master/main.js //var Quotes = { // SINGLE: 1, // DOUBLE: 2 //}; //var regex = { // keywords: /(Feature| {2}(Scenario|In order to|As|I)| {4}(Given|When|Then|And))/ //}; (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("gherkin", function () { return { startState: function () { return { lineNumber: 0, tableHeaderLine: false, allowFeature: true, allowBackground: false, allowScenario: false, allowSteps: false, allowPlaceholders: false, allowMultilineArgument: false, inMultilineString: false, inMultilineTable: false, inKeywordLine: false }; }, token: function (stream, state) { if (stream.sol()) { state.lineNumber++; state.inKeywordLine = false; if (state.inMultilineTable) { state.tableHeaderLine = false; if (!stream.match(/\s*\|/, false)) { state.allowMultilineArgument = false; state.inMultilineTable = false; } } } stream.eatSpace(); if (state.allowMultilineArgument) { // STRING if (state.inMultilineString) { if (stream.match('"""')) { state.inMultilineString = false; state.allowMultilineArgument = false; } else { stream.match(/.*/); } return "string"; } // TABLE if (state.inMultilineTable) { if (stream.match(/\|\s*/)) { return "bracket"; } else { stream.match(/[^\|]*/); return state.tableHeaderLine ? "header" : "string"; } } // DETECT START if (stream.match('"""')) { // String state.inMultilineString = true; return "string"; } else if (stream.match("|")) { // Table state.inMultilineTable = true; state.tableHeaderLine = true; return "bracket"; } } // LINE COMMENT if (stream.match(/#.*/)) { return "comment"; // TAG } else if (!state.inKeywordLine && stream.match(/@\S+/)) { return "tag"; // FEATURE } else if (!state.inKeywordLine && state.allowFeature && stream.match(/(機能|功能|フィーチャ|기능|โครงหลัก|ความสามารถ|ความต้องการทางธุรกิจ|ಹೆಚ್ಚಳ|గుణము|ਮੁਹਾਂਦਰਾ|ਨਕਸ਼ ਨੁਹਾਰ|ਖਾਸੀਅਤ|रूप लेख|وِیژگی|خاصية|תכונה|Функціонал|Функция|Функционалност|Функционал|Үзенчәлеклелек|Свойство|Особина|Мөмкинлек|Могућност|Λειτουργία|Δυνατότητα|Właściwość|Vlastnosť|Trajto|Tính năng|Savybė|Pretty much|Požiadavka|Požadavek|Potrzeba biznesowa|Özellik|Osobina|Ominaisuus|Omadus|OH HAI|Mogućnost|Mogucnost|Jellemző|Hwæt|Hwaet|Funzionalità|Funktionalitéit|Funktionalität|Funkcja|Funkcionalnost|Funkcionalitāte|Funkcia|Fungsi|Functionaliteit|Funcționalitate|Funcţionalitate|Functionalitate|Funcionalitat|Funcionalidade|Fonctionnalité|Fitur|Fīča|Feature|Eiginleiki|Egenskap|Egenskab|Característica|Caracteristica|Business Need|Aspekt|Arwedd|Ahoy matey!|Ability):/)) { state.allowScenario = true; state.allowBackground = true; state.allowPlaceholders = false; state.allowSteps = false; state.allowMultilineArgument = false; state.inKeywordLine = true; return "keyword"; // BACKGROUND } else if (!state.inKeywordLine && state.allowBackground && stream.match(/(背景|배경|แนวคิด|ಹಿನ್ನೆಲೆ|నేపథ్యం|ਪਿਛੋਕੜ|पृष्ठभूमि|زمینه|الخلفية|רקע|Тарих|Предыстория|Предистория|Позадина|Передумова|Основа|Контекст|Кереш|Υπόβαθρο|Założenia|Yo\-ho\-ho|Tausta|Taust|Situācija|Rerefons|Pozadina|Pozadie|Pozadí|Osnova|Latar Belakang|Kontext|Konteksts|Kontekstas|Kontekst|Háttér|Hannergrond|Grundlage|Geçmiş|Fundo|Fono|First off|Dis is what went down|Dasar|Contexto|Contexte|Context|Contesto|Cenário de Fundo|Cenario de Fundo|Cefndir|Bối cảnh|Bakgrunnur|Bakgrunn|Bakgrund|Baggrund|Background|B4|Antecedents|Antecedentes|Ær|Aer|Achtergrond):/)) { state.allowPlaceholders = false; state.allowSteps = true; state.allowBackground = false; state.allowMultilineArgument = false; state.inKeywordLine = true; return "keyword"; // SCENARIO OUTLINE } else if (!state.inKeywordLine && state.allowScenario && stream.match(/(場景大綱|场景大纲|劇本大綱|剧本大纲|テンプレ|シナリオテンプレート|シナリオテンプレ|シナリオアウトライン|시나리오 개요|สรุปเหตุการณ์|โครงสร้างของเหตุการณ์|ವಿವರಣೆ|కథనం|ਪਟਕਥਾ ਰੂਪ ਰੇਖਾ|ਪਟਕਥਾ ਢਾਂਚਾ|परिदृश्य रूपरेखा|سيناريو مخطط|الگوی سناریو|תבנית תרחיש|Сценарийның төзелеше|Сценарий структураси|Структура сценарію|Структура сценария|Структура сценарија|Скица|Рамка на сценарий|Концепт|Περιγραφή Σεναρίου|Wharrimean is|Template Situai|Template Senario|Template Keadaan|Tapausaihio|Szenariogrundriss|Szablon scenariusza|Swa hwær swa|Swa hwaer swa|Struktura scenarija|Structură scenariu|Structura scenariu|Skica|Skenario konsep|Shiver me timbers|Senaryo taslağı|Schema dello scenario|Scenariomall|Scenariomal|Scenario Template|Scenario Outline|Scenario Amlinellol|Scenārijs pēc parauga|Scenarijaus šablonas|Reckon it's like|Raamstsenaarium|Plang vum Szenario|Plan du Scénario|Plan du scénario|Osnova scénáře|Osnova Scenára|Náčrt Scenáru|Náčrt Scénáře|Náčrt Scenára|MISHUN SRSLY|Menggariskan Senario|Lýsing Dæma|Lýsing Atburðarásar|Konturo de la scenaro|Koncept|Khung tình huống|Khung kịch bản|Forgatókönyv vázlat|Esquema do Cenário|Esquema do Cenario|Esquema del escenario|Esquema de l'escenari|Esbozo do escenario|Delineação do Cenário|Delineacao do Cenario|All y'all|Abstrakt Scenario|Abstract Scenario):/)) { state.allowPlaceholders = true; state.allowSteps = true; state.allowMultilineArgument = false; state.inKeywordLine = true; return "keyword"; // EXAMPLES } else if (state.allowScenario && stream.match(/(例子|例|サンプル|예|ชุดของเหตุการณ์|ชุดของตัวอย่าง|ಉದಾಹರಣೆಗಳು|ఉదాహరణలు|ਉਦਾਹਰਨਾਂ|उदाहरण|نمونه ها|امثلة|דוגמאות|Үрнәкләр|Сценарији|Примеры|Примери|Приклади|Мисоллар|Мисаллар|Σενάρια|Παραδείγματα|You'll wanna|Voorbeelden|Variantai|Tapaukset|Se þe|Se the|Se ðe|Scenarios|Scenariji|Scenarijai|Przykłady|Primjeri|Primeri|Příklady|Príklady|Piemēri|Példák|Pavyzdžiai|Paraugs|Örnekler|Juhtumid|Exemplos|Exemples|Exemple|Exempel|EXAMPLZ|Examples|Esempi|Enghreifftiau|Ekzemploj|Eksempler|Ejemplos|Dữ liệu|Dead men tell no tales|Dæmi|Contoh|Cenários|Cenarios|Beispiller|Beispiele|Atburðarásir):/)) { state.allowPlaceholders = false; state.allowSteps = true; state.allowBackground = false; state.allowMultilineArgument = true; return "keyword"; // SCENARIO } else if (!state.inKeywordLine && state.allowScenario && stream.match(/(場景|场景|劇本|剧本|シナリオ|시나리오|เหตุการณ์|ಕಥಾಸಾರಾಂಶ|సన్నివేశం|ਪਟਕਥਾ|परिदृश्य|سيناريو|سناریو|תרחיש|Сценарій|Сценарио|Сценарий|Пример|Σενάριο|Tình huống|The thing of it is|Tapaus|Szenario|Swa|Stsenaarium|Skenario|Situai|Senaryo|Senario|Scenaro|Scenariusz|Scenariu|Scénario|Scenario|Scenarijus|Scenārijs|Scenarij|Scenarie|Scénář|Scenár|Primer|MISHUN|Kịch bản|Keadaan|Heave to|Forgatókönyv|Escenario|Escenari|Cenário|Cenario|Awww, look mate|Atburðarás):/)) { state.allowPlaceholders = false; state.allowSteps = true; state.allowBackground = false; state.allowMultilineArgument = false; state.inKeywordLine = true; return "keyword"; // STEPS } else if (!state.inKeywordLine && state.allowSteps && stream.match(/(那麼|那么|而且|當|当|并且|同時|同时|前提|假设|假設|假定|假如|但是|但し|並且|もし|ならば|ただし|しかし|かつ|하지만|조건|먼저|만일|만약|단|그리고|그러면|และ |เมื่อ |แต่ |ดังนั้น |กำหนดให้ |ಸ್ಥಿತಿಯನ್ನು |ಮತ್ತು |ನೀಡಿದ |ನಂತರ |ಆದರೆ |మరియు |చెప్పబడినది |కాని |ఈ పరిస్థితిలో |అప్పుడు |ਪਰ |ਤਦ |ਜੇਕਰ |ਜਿਵੇਂ ਕਿ |ਜਦੋਂ |ਅਤੇ |यदि |परन्तु |पर |तब |तदा |तथा |जब |चूंकि |किन्तु |कदा |और |अगर |و |هنگامی |متى |لكن |عندما |ثم |بفرض |با فرض |اما |اذاً |آنگاه |כאשר |וגם |בהינתן |אזי |אז |אבל |Якщо |Һәм |Унда |Тоді |Тогда |То |Также |Та |Пусть |Припустимо, що |Припустимо |Онда |Но |Нехай |Нәтиҗәдә |Лекин |Ләкин |Коли |Когда |Когато |Када |Кад |К тому же |І |И |Задато |Задати |Задате |Если |Допустим |Дано |Дадено |Вә |Ва |Бирок |Әмма |Әйтик |Әгәр |Аммо |Али |Але |Агар |А також |А |Τότε |Όταν |Και |Δεδομένου |Αλλά |Þurh |Þegar |Þa þe |Þá |Þa |Zatati |Zakładając |Zadato |Zadate |Zadano |Zadani |Zadan |Za předpokladu |Za predpokladu |Youse know when youse got |Youse know like when |Yna |Yeah nah |Y'know |Y |Wun |Wtedy |When y'all |When |Wenn |WEN |wann |Ve |Và |Und |Un |ugeholl |Too right |Thurh |Thì |Then y'all |Then |Tha the |Tha |Tetapi |Tapi |Tak |Tada |Tad |Stel |Soit |Siis |Și |Şi |Si |Sed |Se |Så |Quando |Quand |Quan |Pryd |Potom |Pokud |Pokiaľ |Però |Pero |Pak |Oraz |Onda |Ond |Oletetaan |Og |Och |O zaman |Niin |Nhưng |När |Når |Mutta |Men |Mas |Maka |Majd |Mając |Mais |Maar |mä |Ma |Lorsque |Lorsqu'|Logo |Let go and haul |Kun |Kuid |Kui |Kiedy |Khi |Ketika |Kemudian |Keď |Když |Kaj |Kai |Kada |Kad |Jeżeli |Jeśli |Ja |It's just unbelievable |Ir |I CAN HAZ |I |Ha |Givun |Givet |Given y'all |Given |Gitt |Gegeven |Gegeben seien |Gegeben sei |Gdy |Gangway! |Fakat |Étant donnés |Etant donnés |Étant données |Etant données |Étant donnée |Etant donnée |Étant donné |Etant donné |Et |És |Entonces |Entón |Então |Entao |En |Eğer ki |Ef |Eeldades |E |Ðurh |Duota |Dun |Donitaĵo |Donat |Donada |Do |Diyelim ki |Diberi |Dengan |Den youse gotta |DEN |De |Dato |Dați fiind |Daţi fiind |Dati fiind |Dati |Date fiind |Date |Data |Dat fiind |Dar |Dann |dann |Dan |Dados |Dado |Dadas |Dada |Ða ðe |Ða |Cuando |Cho |Cando |Când |Cand |Cal |But y'all |But at the end of the day I reckon |BUT |But |Buh |Blimey! |Biết |Bet |Bagi |Aye |awer |Avast! |Atunci |Atesa |Atès |Apabila |Anrhegedig a |Angenommen |And y'all |And |AN |An |an |Amikor |Amennyiben |Ama |Als |Alors |Allora |Ali |Aleshores |Ale |Akkor |Ak |Adott |Ac |Aber |A zároveň |A tiež |A taktiež |A také |A |a |7 |\* )/)) { state.inStep = true; state.allowPlaceholders = true; state.allowMultilineArgument = true; state.inKeywordLine = true; return "keyword"; // INLINE STRING } else if (stream.match(/"[^"]*"?/)) { return "string"; // PLACEHOLDER } else if (state.allowPlaceholders && stream.match(/<[^>]*>?/)) { return "variable"; // Fall through } else { stream.next(); stream.eatWhile(/[^@"<#]/); return null; } } }; }); CodeMirror.defineMIME("text/x-feature", "gherkin"); }); plugins/file-manager-advanced/application/library/codemirror/mode/gherkin/index.html000064400000003036147176754550025032 0ustar00 CodeMirror: Gherkin mode

Gherkin mode

MIME types defined: text/x-feature.

plugins/file-manager-advanced/application/library/codemirror/mode/go/go.js000064400000013501147176754550022754 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("go", function(config) { var indentUnit = config.indentUnit; var keywords = { "break":true, "case":true, "chan":true, "const":true, "continue":true, "default":true, "defer":true, "else":true, "fallthrough":true, "for":true, "func":true, "go":true, "goto":true, "if":true, "import":true, "interface":true, "map":true, "package":true, "range":true, "return":true, "select":true, "struct":true, "switch":true, "type":true, "var":true, "bool":true, "byte":true, "complex64":true, "complex128":true, "float32":true, "float64":true, "int8":true, "int16":true, "int32":true, "int64":true, "string":true, "uint8":true, "uint16":true, "uint32":true, "uint64":true, "int":true, "uint":true, "uintptr":true, "error": true }; var atoms = { "true":true, "false":true, "iota":true, "nil":true, "append":true, "cap":true, "close":true, "complex":true, "copy":true, "imag":true, "len":true, "make":true, "new":true, "panic":true, "print":true, "println":true, "real":true, "recover":true }; var isOperatorChar = /[+\-*&^%:=<>!|\/]/; var curPunc; function tokenBase(stream, state) { var ch = stream.next(); if (ch == '"' || ch == "'" || ch == "`") { state.tokenize = tokenString(ch); return state.tokenize(stream, state); } if (/[\d\.]/.test(ch)) { if (ch == ".") { stream.match(/^[0-9]+([eE][\-+]?[0-9]+)?/); } else if (ch == "0") { stream.match(/^[xX][0-9a-fA-F]+/) || stream.match(/^0[0-7]+/); } else { stream.match(/^[0-9]*\.?[0-9]*([eE][\-+]?[0-9]+)?/); } return "number"; } if (/[\[\]{}\(\),;\:\.]/.test(ch)) { curPunc = ch; return null; } if (ch == "/") { if (stream.eat("*")) { state.tokenize = tokenComment; return tokenComment(stream, state); } if (stream.eat("/")) { stream.skipToEnd(); return "comment"; } } if (isOperatorChar.test(ch)) { stream.eatWhile(isOperatorChar); return "operator"; } stream.eatWhile(/[\w\$_\xa1-\uffff]/); var cur = stream.current(); if (keywords.propertyIsEnumerable(cur)) { if (cur == "case" || cur == "default") curPunc = "case"; return "keyword"; } if (atoms.propertyIsEnumerable(cur)) return "atom"; return "variable"; } function tokenString(quote) { return function(stream, state) { var escaped = false, next, end = false; while ((next = stream.next()) != null) { if (next == quote && !escaped) {end = true; break;} escaped = !escaped && quote != "`" && next == "\\"; } if (end || !(escaped || quote == "`")) state.tokenize = tokenBase; return "string"; }; } function tokenComment(stream, state) { var maybeEnd = false, ch; while (ch = stream.next()) { if (ch == "/" && maybeEnd) { state.tokenize = tokenBase; break; } maybeEnd = (ch == "*"); } return "comment"; } function Context(indented, column, type, align, prev) { this.indented = indented; this.column = column; this.type = type; this.align = align; this.prev = prev; } function pushContext(state, col, type) { return state.context = new Context(state.indented, col, type, null, state.context); } function popContext(state) { if (!state.context.prev) return; var t = state.context.type; if (t == ")" || t == "]" || t == "}") state.indented = state.context.indented; return state.context = state.context.prev; } // Interface return { startState: function(basecolumn) { return { tokenize: null, context: new Context((basecolumn || 0) - indentUnit, 0, "top", false), indented: 0, startOfLine: true }; }, token: function(stream, state) { var ctx = state.context; if (stream.sol()) { if (ctx.align == null) ctx.align = false; state.indented = stream.indentation(); state.startOfLine = true; if (ctx.type == "case") ctx.type = "}"; } if (stream.eatSpace()) return null; curPunc = null; var style = (state.tokenize || tokenBase)(stream, state); if (style == "comment") return style; if (ctx.align == null) ctx.align = true; if (curPunc == "{") pushContext(state, stream.column(), "}"); else if (curPunc == "[") pushContext(state, stream.column(), "]"); else if (curPunc == "(") pushContext(state, stream.column(), ")"); else if (curPunc == "case") ctx.type = "case"; else if (curPunc == "}" && ctx.type == "}") ctx = popContext(state); else if (curPunc == ctx.type) popContext(state); state.startOfLine = false; return style; }, indent: function(state, textAfter) { if (state.tokenize != tokenBase && state.tokenize != null) return 0; var ctx = state.context, firstChar = textAfter && textAfter.charAt(0); if (ctx.type == "case" && /^(?:case|default)\b/.test(textAfter)) { state.context.type = "}"; return ctx.indented; } var closing = firstChar == ctx.type; if (ctx.align) return ctx.column + (closing ? 0 : 1); else return ctx.indented + (closing ? 0 : indentUnit); }, electricChars: "{}):", fold: "brace", blockCommentStart: "/*", blockCommentEnd: "*/", lineComment: "//" }; }); CodeMirror.defineMIME("text/x-go", "go"); }); plugins/file-manager-advanced/application/library/codemirror/mode/go/index.html000064400000004176147176754550024016 0ustar00 CodeMirror: Go mode

Go mode

MIME type: text/x-go

plugins/file-manager-advanced/application/library/codemirror/mode/groovy/groovy.js000064400000017306147176754550024623 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("groovy", function(config) { function words(str) { var obj = {}, words = str.split(" "); for (var i = 0; i < words.length; ++i) obj[words[i]] = true; return obj; } var keywords = words( "abstract as assert boolean break byte case catch char class const continue def default " + "do double else enum extends final finally float for goto if implements import in " + "instanceof int interface long native new package private protected public return " + "short static strictfp super switch synchronized threadsafe throw throws transient " + "try void volatile while"); var blockKeywords = words("catch class do else finally for if switch try while enum interface def"); var standaloneKeywords = words("return break continue"); var atoms = words("null true false this"); var curPunc; function tokenBase(stream, state) { var ch = stream.next(); if (ch == '"' || ch == "'") { return startString(ch, stream, state); } if (/[\[\]{}\(\),;\:\.]/.test(ch)) { curPunc = ch; return null; } if (/\d/.test(ch)) { stream.eatWhile(/[\w\.]/); if (stream.eat(/eE/)) { stream.eat(/\+\-/); stream.eatWhile(/\d/); } return "number"; } if (ch == "/") { if (stream.eat("*")) { state.tokenize.push(tokenComment); return tokenComment(stream, state); } if (stream.eat("/")) { stream.skipToEnd(); return "comment"; } if (expectExpression(state.lastToken, false)) { return startString(ch, stream, state); } } if (ch == "-" && stream.eat(">")) { curPunc = "->"; return null; } if (/[+\-*&%=<>!?|\/~]/.test(ch)) { stream.eatWhile(/[+\-*&%=<>|~]/); return "operator"; } stream.eatWhile(/[\w\$_]/); if (ch == "@") { stream.eatWhile(/[\w\$_\.]/); return "meta"; } if (state.lastToken == ".") return "property"; if (stream.eat(":")) { curPunc = "proplabel"; return "property"; } var cur = stream.current(); if (atoms.propertyIsEnumerable(cur)) { return "atom"; } if (keywords.propertyIsEnumerable(cur)) { if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; else if (standaloneKeywords.propertyIsEnumerable(cur)) curPunc = "standalone"; return "keyword"; } return "variable"; } tokenBase.isBase = true; function startString(quote, stream, state) { var tripleQuoted = false; if (quote != "/" && stream.eat(quote)) { if (stream.eat(quote)) tripleQuoted = true; else return "string"; } function t(stream, state) { var escaped = false, next, end = !tripleQuoted; while ((next = stream.next()) != null) { if (next == quote && !escaped) { if (!tripleQuoted) { break; } if (stream.match(quote + quote)) { end = true; break; } } if (quote == '"' && next == "$" && !escaped && stream.eat("{")) { state.tokenize.push(tokenBaseUntilBrace()); return "string"; } escaped = !escaped && next == "\\"; } if (end) state.tokenize.pop(); return "string"; } state.tokenize.push(t); return t(stream, state); } function tokenBaseUntilBrace() { var depth = 1; function t(stream, state) { if (stream.peek() == "}") { depth--; if (depth == 0) { state.tokenize.pop(); return state.tokenize[state.tokenize.length-1](stream, state); } } else if (stream.peek() == "{") { depth++; } return tokenBase(stream, state); } t.isBase = true; return t; } function tokenComment(stream, state) { var maybeEnd = false, ch; while (ch = stream.next()) { if (ch == "/" && maybeEnd) { state.tokenize.pop(); break; } maybeEnd = (ch == "*"); } return "comment"; } function expectExpression(last, newline) { return !last || last == "operator" || last == "->" || /[\.\[\{\(,;:]/.test(last) || last == "newstatement" || last == "keyword" || last == "proplabel" || (last == "standalone" && !newline); } function Context(indented, column, type, align, prev) { this.indented = indented; this.column = column; this.type = type; this.align = align; this.prev = prev; } function pushContext(state, col, type) { return state.context = new Context(state.indented, col, type, null, state.context); } function popContext(state) { var t = state.context.type; if (t == ")" || t == "]" || t == "}") state.indented = state.context.indented; return state.context = state.context.prev; } // Interface return { startState: function(basecolumn) { return { tokenize: [tokenBase], context: new Context((basecolumn || 0) - config.indentUnit, 0, "top", false), indented: 0, startOfLine: true, lastToken: null }; }, token: function(stream, state) { var ctx = state.context; if (stream.sol()) { if (ctx.align == null) ctx.align = false; state.indented = stream.indentation(); state.startOfLine = true; // Automatic semicolon insertion if (ctx.type == "statement" && !expectExpression(state.lastToken, true)) { popContext(state); ctx = state.context; } } if (stream.eatSpace()) return null; curPunc = null; var style = state.tokenize[state.tokenize.length-1](stream, state); if (style == "comment") return style; if (ctx.align == null) ctx.align = true; if ((curPunc == ";" || curPunc == ":") && ctx.type == "statement") popContext(state); // Handle indentation for {x -> \n ... } else if (curPunc == "->" && ctx.type == "statement" && ctx.prev.type == "}") { popContext(state); state.context.align = false; } else if (curPunc == "{") pushContext(state, stream.column(), "}"); else if (curPunc == "[") pushContext(state, stream.column(), "]"); else if (curPunc == "(") pushContext(state, stream.column(), ")"); else if (curPunc == "}") { while (ctx.type == "statement") ctx = popContext(state); if (ctx.type == "}") ctx = popContext(state); while (ctx.type == "statement") ctx = popContext(state); } else if (curPunc == ctx.type) popContext(state); else if (ctx.type == "}" || ctx.type == "top" || (ctx.type == "statement" && curPunc == "newstatement")) pushContext(state, stream.column(), "statement"); state.startOfLine = false; state.lastToken = curPunc || style; return style; }, indent: function(state, textAfter) { if (!state.tokenize[state.tokenize.length-1].isBase) return 0; var firstChar = textAfter && textAfter.charAt(0), ctx = state.context; if (ctx.type == "statement" && !expectExpression(state.lastToken, true)) ctx = ctx.prev; var closing = firstChar == ctx.type; if (ctx.type == "statement") return ctx.indented + (firstChar == "{" ? 0 : config.indentUnit); else if (ctx.align) return ctx.column + (closing ? 0 : 1); else return ctx.indented + (closing ? 0 : config.indentUnit); }, electricChars: "{}", closeBrackets: {triples: "'\""}, fold: "brace" }; }); CodeMirror.defineMIME("text/x-groovy", "groovy"); }); plugins/file-manager-advanced/application/library/codemirror/mode/groovy/index.html000064400000004201147176754550024723 0ustar00 CodeMirror: Groovy mode

Groovy mode

MIME types defined: text/x-groovy

plugins/file-manager-advanced/application/library/codemirror/mode/haml/haml.js000064400000012351147176754550023606 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed"), require("../ruby/ruby")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror", "../htmlmixed/htmlmixed", "../ruby/ruby"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; // full haml mode. This handled embedded ruby and html fragments too CodeMirror.defineMode("haml", function(config) { var htmlMode = CodeMirror.getMode(config, {name: "htmlmixed"}); var rubyMode = CodeMirror.getMode(config, "ruby"); function rubyInQuote(endQuote) { return function(stream, state) { var ch = stream.peek(); if (ch == endQuote && state.rubyState.tokenize.length == 1) { // step out of ruby context as it seems to complete processing all the braces stream.next(); state.tokenize = html; return "closeAttributeTag"; } else { return ruby(stream, state); } }; } function ruby(stream, state) { if (stream.match("-#")) { stream.skipToEnd(); return "comment"; } return rubyMode.token(stream, state.rubyState); } function html(stream, state) { var ch = stream.peek(); // handle haml declarations. All declarations that cant be handled here // will be passed to html mode if (state.previousToken.style == "comment" ) { if (state.indented > state.previousToken.indented) { stream.skipToEnd(); return "commentLine"; } } if (state.startOfLine) { if (ch == "!" && stream.match("!!")) { stream.skipToEnd(); return "tag"; } else if (stream.match(/^%[\w:#\.]+=/)) { state.tokenize = ruby; return "hamlTag"; } else if (stream.match(/^%[\w:]+/)) { return "hamlTag"; } else if (ch == "/" ) { stream.skipToEnd(); return "comment"; } } if (state.startOfLine || state.previousToken.style == "hamlTag") { if ( ch == "#" || ch == ".") { stream.match(/[\w-#\.]*/); return "hamlAttribute"; } } // donot handle --> as valid ruby, make it HTML close comment instead if (state.startOfLine && !stream.match("-->", false) && (ch == "=" || ch == "-" )) { state.tokenize = ruby; return state.tokenize(stream, state); } if (state.previousToken.style == "hamlTag" || state.previousToken.style == "closeAttributeTag" || state.previousToken.style == "hamlAttribute") { if (ch == "(") { state.tokenize = rubyInQuote(")"); return state.tokenize(stream, state); } else if (ch == "{") { if (!stream.match(/^\{%.*/)) { state.tokenize = rubyInQuote("}"); return state.tokenize(stream, state); } } } return htmlMode.token(stream, state.htmlState); } return { // default to html mode startState: function() { var htmlState = CodeMirror.startState(htmlMode); var rubyState = CodeMirror.startState(rubyMode); return { htmlState: htmlState, rubyState: rubyState, indented: 0, previousToken: { style: null, indented: 0}, tokenize: html }; }, copyState: function(state) { return { htmlState : CodeMirror.copyState(htmlMode, state.htmlState), rubyState: CodeMirror.copyState(rubyMode, state.rubyState), indented: state.indented, previousToken: state.previousToken, tokenize: state.tokenize }; }, token: function(stream, state) { if (stream.sol()) { state.indented = stream.indentation(); state.startOfLine = true; } if (stream.eatSpace()) return null; var style = state.tokenize(stream, state); state.startOfLine = false; // dont record comment line as we only want to measure comment line with // the opening comment block if (style && style != "commentLine") { state.previousToken = { style: style, indented: state.indented }; } // if current state is ruby and the previous token is not `,` reset the // tokenize to html if (stream.eol() && state.tokenize == ruby) { stream.backUp(1); var ch = stream.peek(); stream.next(); if (ch && ch != ",") { state.tokenize = html; } } // reprocess some of the specific style tag when finish setting previousToken if (style == "hamlTag") { style = "tag"; } else if (style == "commentLine") { style = "comment"; } else if (style == "hamlAttribute") { style = "attribute"; } else if (style == "closeAttributeTag") { style = null; } return style; } }; }, "htmlmixed", "ruby"); CodeMirror.defineMIME("text/x-haml", "haml"); }); plugins/file-manager-advanced/application/library/codemirror/mode/haml/index.html000064400000004027147176754550024325 0ustar00 CodeMirror: HAML mode

HAML mode

MIME types defined: text/x-haml.

Parsing/Highlighting Tests: normal, verbose.

plugins/file-manager-advanced/application/library/codemirror/mode/haml/test.js000064400000005702147176754550023646 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function() { var mode = CodeMirror.getMode({tabSize: 4, indentUnit: 2}, "haml"); function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } // Requires at least one media query MT("elementName", "[tag %h1] Hey There"); MT("oneElementPerLine", "[tag %h1] Hey There %h2"); MT("idSelector", "[tag %h1][attribute #test] Hey There"); MT("classSelector", "[tag %h1][attribute .hello] Hey There"); MT("docType", "[tag !!! XML]"); MT("comment", "[comment / Hello WORLD]"); MT("notComment", "[tag %h1] This is not a / comment "); MT("attributes", "[tag %a]([variable title][operator =][string \"test\"]){[atom :title] [operator =>] [string \"test\"]}"); MT("htmlCode", "[tag&bracket <][tag h1][tag&bracket >]Title[tag&bracket ]"); MT("rubyBlock", "[operator =][variable-2 @item]"); MT("selectorRubyBlock", "[tag %a.selector=] [variable-2 @item]"); MT("nestedRubyBlock", "[tag %a]", " [operator =][variable puts] [string \"test\"]"); MT("multilinePlaintext", "[tag %p]", " Hello,", " World"); MT("multilineRuby", "[tag %p]", " [comment -# this is a comment]", " [comment and this is a comment too]", " Date/Time", " [operator -] [variable now] [operator =] [tag DateTime][operator .][property now]", " [tag %strong=] [variable now]", " [operator -] [keyword if] [variable now] [operator >] [tag DateTime][operator .][property parse]([string \"December 31, 2006\"])", " [operator =][string \"Happy\"]", " [operator =][string \"Belated\"]", " [operator =][string \"Birthday\"]"); MT("multilineComment", "[comment /]", " [comment Multiline]", " [comment Comment]"); MT("hamlComment", "[comment -# this is a comment]"); MT("multilineHamlComment", "[comment -# this is a comment]", " [comment and this is a comment too]"); MT("multilineHTMLComment", "[comment ]"); MT("hamlAfterRubyTag", "[attribute .block]", " [tag %strong=] [variable now]", " [attribute .test]", " [operator =][variable now]", " [attribute .right]"); MT("stretchedRuby", "[operator =] [variable puts] [string \"Hello\"],", " [string \"World\"]"); MT("interpolationInHashAttribute", //"[tag %div]{[atom :id] [operator =>] [string \"#{][variable test][string }_#{][variable ting][string }\"]} test"); "[tag %div]{[atom :id] [operator =>] [string \"#{][variable test][string }_#{][variable ting][string }\"]} test"); MT("interpolationInHTMLAttribute", "[tag %div]([variable title][operator =][string \"#{][variable test][string }_#{][variable ting]()[string }\"]) Test"); })(); plugins/file-manager-advanced/application/library/codemirror/mode/handlebars/handlebars.js000064400000004174147176754550026156 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror"), require("../../addon/mode/simple"), require("../../addon/mode/multiplex")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror", "../../addon/mode/simple", "../../addon/mode/multiplex"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineSimpleMode("handlebars-tags", { start: [ { regex: /\{\{!--/, push: "dash_comment", token: "comment" }, { regex: /\{\{!/, push: "comment", token: "comment" }, { regex: /\{\{/, push: "handlebars", token: "tag" } ], handlebars: [ { regex: /\}\}/, pop: true, token: "tag" }, // Double and single quotes { regex: /"(?:[^\\"]|\\.)*"?/, token: "string" }, { regex: /'(?:[^\\']|\\.)*'?/, token: "string" }, // Handlebars keywords { regex: />|[#\/]([A-Za-z_]\w*)/, token: "keyword" }, { regex: /(?:else|this)\b/, token: "keyword" }, // Numeral { regex: /\d+/i, token: "number" }, // Atoms like = and . { regex: /=|~|@|true|false/, token: "atom" }, // Paths { regex: /(?:\.\.\/)*(?:[A-Za-z_][\w\.]*)+/, token: "variable-2" } ], dash_comment: [ { regex: /--\}\}/, pop: true, token: "comment" }, // Commented code { regex: /./, token: "comment"} ], comment: [ { regex: /\}\}/, pop: true, token: "comment" }, { regex: /./, token: "comment" } ] }); CodeMirror.defineMode("handlebars", function(config, parserConfig) { var handlebars = CodeMirror.getMode(config, "handlebars-tags"); if (!parserConfig || !parserConfig.base) return handlebars; return CodeMirror.multiplexingMode( CodeMirror.getMode(config, parserConfig.base), {open: "{{", close: "}}", mode: handlebars, parseDelimiters: true} ); }); CodeMirror.defineMIME("text/x-handlebars-template", "handlebars"); }); plugins/file-manager-advanced/application/library/codemirror/mode/handlebars/index.html000064400000004224147176754550025506 0ustar00 CodeMirror: Handlebars mode

Handlebars

Handlebars syntax highlighting for CodeMirror.

MIME types defined: text/x-handlebars-template

Supported options: base to set the mode to wrap. For example, use

mode: {name: "handlebars", base: "text/html"}

to highlight an HTML template.

plugins/file-manager-advanced/application/library/codemirror/mode/haskell/haskell.js000064400000017645147176754550025025 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("haskell", function(_config, modeConfig) { function switchState(source, setState, f) { setState(f); return f(source, setState); } // These should all be Unicode extended, as per the Haskell 2010 report var smallRE = /[a-z_]/; var largeRE = /[A-Z]/; var digitRE = /\d/; var hexitRE = /[0-9A-Fa-f]/; var octitRE = /[0-7]/; var idRE = /[a-z_A-Z0-9'\xa1-\uffff]/; var symbolRE = /[-!#$%&*+.\/<=>?@\\^|~:]/; var specialRE = /[(),;[\]`{}]/; var whiteCharRE = /[ \t\v\f]/; // newlines are handled in tokenizer function normal(source, setState) { if (source.eatWhile(whiteCharRE)) { return null; } var ch = source.next(); if (specialRE.test(ch)) { if (ch == '{' && source.eat('-')) { var t = "comment"; if (source.eat('#')) { t = "meta"; } return switchState(source, setState, ncomment(t, 1)); } return null; } if (ch == '\'') { if (source.eat('\\')) { source.next(); // should handle other escapes here } else { source.next(); } if (source.eat('\'')) { return "string"; } return "error"; } if (ch == '"') { return switchState(source, setState, stringLiteral); } if (largeRE.test(ch)) { source.eatWhile(idRE); if (source.eat('.')) { return "qualifier"; } return "variable-2"; } if (smallRE.test(ch)) { source.eatWhile(idRE); return "variable"; } if (digitRE.test(ch)) { if (ch == '0') { if (source.eat(/[xX]/)) { source.eatWhile(hexitRE); // should require at least 1 return "integer"; } if (source.eat(/[oO]/)) { source.eatWhile(octitRE); // should require at least 1 return "number"; } } source.eatWhile(digitRE); var t = "number"; if (source.match(/^\.\d+/)) { t = "number"; } if (source.eat(/[eE]/)) { t = "number"; source.eat(/[-+]/); source.eatWhile(digitRE); // should require at least 1 } return t; } if (ch == "." && source.eat(".")) return "keyword"; if (symbolRE.test(ch)) { if (ch == '-' && source.eat(/-/)) { source.eatWhile(/-/); if (!source.eat(symbolRE)) { source.skipToEnd(); return "comment"; } } var t = "variable"; if (ch == ':') { t = "variable-2"; } source.eatWhile(symbolRE); return t; } return "error"; } function ncomment(type, nest) { if (nest == 0) { return normal; } return function(source, setState) { var currNest = nest; while (!source.eol()) { var ch = source.next(); if (ch == '{' && source.eat('-')) { ++currNest; } else if (ch == '-' && source.eat('}')) { --currNest; if (currNest == 0) { setState(normal); return type; } } } setState(ncomment(type, currNest)); return type; }; } function stringLiteral(source, setState) { while (!source.eol()) { var ch = source.next(); if (ch == '"') { setState(normal); return "string"; } if (ch == '\\') { if (source.eol() || source.eat(whiteCharRE)) { setState(stringGap); return "string"; } if (source.eat('&')) { } else { source.next(); // should handle other escapes here } } } setState(normal); return "error"; } function stringGap(source, setState) { if (source.eat('\\')) { return switchState(source, setState, stringLiteral); } source.next(); setState(normal); return "error"; } var wellKnownWords = (function() { var wkw = {}; function setType(t) { return function () { for (var i = 0; i < arguments.length; i++) wkw[arguments[i]] = t; }; } setType("keyword")( "case", "class", "data", "default", "deriving", "do", "else", "foreign", "if", "import", "in", "infix", "infixl", "infixr", "instance", "let", "module", "newtype", "of", "then", "type", "where", "_"); setType("keyword")( "\.\.", ":", "::", "=", "\\", "\"", "<-", "->", "@", "~", "=>"); setType("builtin")( "!!", "$!", "$", "&&", "+", "++", "-", ".", "/", "/=", "<", "<=", "=<<", "==", ">", ">=", ">>", ">>=", "^", "^^", "||", "*", "**"); setType("builtin")( "Bool", "Bounded", "Char", "Double", "EQ", "Either", "Enum", "Eq", "False", "FilePath", "Float", "Floating", "Fractional", "Functor", "GT", "IO", "IOError", "Int", "Integer", "Integral", "Just", "LT", "Left", "Maybe", "Monad", "Nothing", "Num", "Ord", "Ordering", "Rational", "Read", "ReadS", "Real", "RealFloat", "RealFrac", "Right", "Show", "ShowS", "String", "True"); setType("builtin")( "abs", "acos", "acosh", "all", "and", "any", "appendFile", "asTypeOf", "asin", "asinh", "atan", "atan2", "atanh", "break", "catch", "ceiling", "compare", "concat", "concatMap", "const", "cos", "cosh", "curry", "cycle", "decodeFloat", "div", "divMod", "drop", "dropWhile", "either", "elem", "encodeFloat", "enumFrom", "enumFromThen", "enumFromThenTo", "enumFromTo", "error", "even", "exp", "exponent", "fail", "filter", "flip", "floatDigits", "floatRadix", "floatRange", "floor", "fmap", "foldl", "foldl1", "foldr", "foldr1", "fromEnum", "fromInteger", "fromIntegral", "fromRational", "fst", "gcd", "getChar", "getContents", "getLine", "head", "id", "init", "interact", "ioError", "isDenormalized", "isIEEE", "isInfinite", "isNaN", "isNegativeZero", "iterate", "last", "lcm", "length", "lex", "lines", "log", "logBase", "lookup", "map", "mapM", "mapM_", "max", "maxBound", "maximum", "maybe", "min", "minBound", "minimum", "mod", "negate", "not", "notElem", "null", "odd", "or", "otherwise", "pi", "pred", "print", "product", "properFraction", "putChar", "putStr", "putStrLn", "quot", "quotRem", "read", "readFile", "readIO", "readList", "readLn", "readParen", "reads", "readsPrec", "realToFrac", "recip", "rem", "repeat", "replicate", "return", "reverse", "round", "scaleFloat", "scanl", "scanl1", "scanr", "scanr1", "seq", "sequence", "sequence_", "show", "showChar", "showList", "showParen", "showString", "shows", "showsPrec", "significand", "signum", "sin", "sinh", "snd", "span", "splitAt", "sqrt", "subtract", "succ", "sum", "tail", "take", "takeWhile", "tan", "tanh", "toEnum", "toInteger", "toRational", "truncate", "uncurry", "undefined", "unlines", "until", "unwords", "unzip", "unzip3", "userError", "words", "writeFile", "zip", "zip3", "zipWith", "zipWith3"); var override = modeConfig.overrideKeywords; if (override) for (var word in override) if (override.hasOwnProperty(word)) wkw[word] = override[word]; return wkw; })(); return { startState: function () { return { f: normal }; }, copyState: function (s) { return { f: s.f }; }, token: function(stream, state) { var t = state.f(stream, function(s) { state.f = s; }); var w = stream.current(); return wellKnownWords.hasOwnProperty(w) ? wellKnownWords[w] : t; }, blockCommentStart: "{-", blockCommentEnd: "-}", lineComment: "--" }; }); CodeMirror.defineMIME("text/x-haskell", "haskell"); }); plugins/file-manager-advanced/application/library/codemirror/mode/haskell/index.html000064400000004222147176754550025024 0ustar00 CodeMirror: Haskell mode

Haskell mode

MIME types defined: text/x-haskell.

file-manager-advanced/application/library/codemirror/mode/haskell-literate/haskell-literate.js000064400000002556147176754550030357 0ustar00plugins// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function (mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror"), require("../haskell/haskell")) else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror", "../haskell/haskell"], mod) else // Plain browser env mod(CodeMirror) })(function (CodeMirror) { "use strict" CodeMirror.defineMode("haskell-literate", function (config, parserConfig) { var baseMode = CodeMirror.getMode(config, (parserConfig && parserConfig.base) || "haskell") return { startState: function () { return { inCode: false, baseState: CodeMirror.startState(baseMode) } }, token: function (stream, state) { if (stream.sol()) { if (state.inCode = stream.eat(">")) return "meta" } if (state.inCode) { return baseMode.token(stream, state.baseState) } else { stream.skipToEnd() return "comment" } }, innerMode: function (state) { return state.inCode ? {state: state.baseState, mode: baseMode} : null } } }, "haskell") CodeMirror.defineMIME("text/x-literate-haskell", "haskell-literate") }); plugins/file-manager-advanced/application/library/codemirror/mode/haskell-literate/index.html000064400000022245147176754550026640 0ustar00 CodeMirror: Haskell-literate mode

Haskell literate mode

MIME types defined: text/x-literate-haskell.

Parser configuration parameters recognized: base to set the base mode (defaults to "haskell").

plugins/file-manager-advanced/application/library/codemirror/mode/haxe/haxe.js000064400000042240147176754550023616 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("haxe", function(config, parserConfig) { var indentUnit = config.indentUnit; // Tokenizer function kw(type) {return {type: type, style: "keyword"};} var A = kw("keyword a"), B = kw("keyword b"), C = kw("keyword c"); var operator = kw("operator"), atom = {type: "atom", style: "atom"}, attribute = {type:"attribute", style: "attribute"}; var type = kw("typedef"); var keywords = { "if": A, "while": A, "else": B, "do": B, "try": B, "return": C, "break": C, "continue": C, "new": C, "throw": C, "var": kw("var"), "inline":attribute, "static": attribute, "using":kw("import"), "public": attribute, "private": attribute, "cast": kw("cast"), "import": kw("import"), "macro": kw("macro"), "function": kw("function"), "catch": kw("catch"), "untyped": kw("untyped"), "callback": kw("cb"), "for": kw("for"), "switch": kw("switch"), "case": kw("case"), "default": kw("default"), "in": operator, "never": kw("property_access"), "trace":kw("trace"), "class": type, "abstract":type, "enum":type, "interface":type, "typedef":type, "extends":type, "implements":type, "dynamic":type, "true": atom, "false": atom, "null": atom }; var isOperatorChar = /[+\-*&%=<>!?|]/; function chain(stream, state, f) { state.tokenize = f; return f(stream, state); } function toUnescaped(stream, end) { var escaped = false, next; while ((next = stream.next()) != null) { if (next == end && !escaped) return true; escaped = !escaped && next == "\\"; } } // Used as scratch variables to communicate multiple values without // consing up tons of objects. var type, content; function ret(tp, style, cont) { type = tp; content = cont; return style; } function haxeTokenBase(stream, state) { var ch = stream.next(); if (ch == '"' || ch == "'") { return chain(stream, state, haxeTokenString(ch)); } else if (/[\[\]{}\(\),;\:\.]/.test(ch)) { return ret(ch); } else if (ch == "0" && stream.eat(/x/i)) { stream.eatWhile(/[\da-f]/i); return ret("number", "number"); } else if (/\d/.test(ch) || ch == "-" && stream.eat(/\d/)) { stream.match(/^\d*(?:\.\d*(?!\.))?(?:[eE][+\-]?\d+)?/); return ret("number", "number"); } else if (state.reAllowed && (ch == "~" && stream.eat(/\//))) { toUnescaped(stream, "/"); stream.eatWhile(/[gimsu]/); return ret("regexp", "string-2"); } else if (ch == "/") { if (stream.eat("*")) { return chain(stream, state, haxeTokenComment); } else if (stream.eat("/")) { stream.skipToEnd(); return ret("comment", "comment"); } else { stream.eatWhile(isOperatorChar); return ret("operator", null, stream.current()); } } else if (ch == "#") { stream.skipToEnd(); return ret("conditional", "meta"); } else if (ch == "@") { stream.eat(/:/); stream.eatWhile(/[\w_]/); return ret ("metadata", "meta"); } else if (isOperatorChar.test(ch)) { stream.eatWhile(isOperatorChar); return ret("operator", null, stream.current()); } else { var word; if(/[A-Z]/.test(ch)) { stream.eatWhile(/[\w_<>]/); word = stream.current(); return ret("type", "variable-3", word); } else { stream.eatWhile(/[\w_]/); var word = stream.current(), known = keywords.propertyIsEnumerable(word) && keywords[word]; return (known && state.kwAllowed) ? ret(known.type, known.style, word) : ret("variable", "variable", word); } } } function haxeTokenString(quote) { return function(stream, state) { if (toUnescaped(stream, quote)) state.tokenize = haxeTokenBase; return ret("string", "string"); }; } function haxeTokenComment(stream, state) { var maybeEnd = false, ch; while (ch = stream.next()) { if (ch == "/" && maybeEnd) { state.tokenize = haxeTokenBase; break; } maybeEnd = (ch == "*"); } return ret("comment", "comment"); } // Parser var atomicTypes = {"atom": true, "number": true, "variable": true, "string": true, "regexp": true}; function HaxeLexical(indented, column, type, align, prev, info) { this.indented = indented; this.column = column; this.type = type; this.prev = prev; this.info = info; if (align != null) this.align = align; } function inScope(state, varname) { for (var v = state.localVars; v; v = v.next) if (v.name == varname) return true; } function parseHaxe(state, style, type, content, stream) { var cc = state.cc; // Communicate our context to the combinators. // (Less wasteful than consing up a hundred closures on every call.) cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; if (!state.lexical.hasOwnProperty("align")) state.lexical.align = true; while(true) { var combinator = cc.length ? cc.pop() : statement; if (combinator(type, content)) { while(cc.length && cc[cc.length - 1].lex) cc.pop()(); if (cx.marked) return cx.marked; if (type == "variable" && inScope(state, content)) return "variable-2"; if (type == "variable" && imported(state, content)) return "variable-3"; return style; } } } function imported(state, typename) { if (/[a-z]/.test(typename.charAt(0))) return false; var len = state.importedtypes.length; for (var i = 0; i= 0; i--) cx.cc.push(arguments[i]); } function cont() { pass.apply(null, arguments); return true; } function inList(name, list) { for (var v = list; v; v = v.next) if (v.name == name) return true; return false; } function register(varname) { var state = cx.state; if (state.context) { cx.marked = "def"; if (inList(varname, state.localVars)) return; state.localVars = {name: varname, next: state.localVars}; } else if (state.globalVars) { if (inList(varname, state.globalVars)) return; state.globalVars = {name: varname, next: state.globalVars}; } } // Combinators var defaultVars = {name: "this", next: null}; function pushcontext() { if (!cx.state.context) cx.state.localVars = defaultVars; cx.state.context = {prev: cx.state.context, vars: cx.state.localVars}; } function popcontext() { cx.state.localVars = cx.state.context.vars; cx.state.context = cx.state.context.prev; } popcontext.lex = true; function pushlex(type, info) { var result = function() { var state = cx.state; state.lexical = new HaxeLexical(state.indented, cx.stream.column(), type, null, state.lexical, info); }; result.lex = true; return result; } function poplex() { var state = cx.state; if (state.lexical.prev) { if (state.lexical.type == ")") state.indented = state.lexical.indented; state.lexical = state.lexical.prev; } } poplex.lex = true; function expect(wanted) { function f(type) { if (type == wanted) return cont(); else if (wanted == ";") return pass(); else return cont(f); } return f; } function statement(type) { if (type == "@") return cont(metadef); if (type == "var") return cont(pushlex("vardef"), vardef1, expect(";"), poplex); if (type == "keyword a") return cont(pushlex("form"), expression, statement, poplex); if (type == "keyword b") return cont(pushlex("form"), statement, poplex); if (type == "{") return cont(pushlex("}"), pushcontext, block, poplex, popcontext); if (type == ";") return cont(); if (type == "attribute") return cont(maybeattribute); if (type == "function") return cont(functiondef); if (type == "for") return cont(pushlex("form"), expect("("), pushlex(")"), forspec1, expect(")"), poplex, statement, poplex); if (type == "variable") return cont(pushlex("stat"), maybelabel); if (type == "switch") return cont(pushlex("form"), expression, pushlex("}", "switch"), expect("{"), block, poplex, poplex); if (type == "case") return cont(expression, expect(":")); if (type == "default") return cont(expect(":")); if (type == "catch") return cont(pushlex("form"), pushcontext, expect("("), funarg, expect(")"), statement, poplex, popcontext); if (type == "import") return cont(importdef, expect(";")); if (type == "typedef") return cont(typedef); return pass(pushlex("stat"), expression, expect(";"), poplex); } function expression(type) { if (atomicTypes.hasOwnProperty(type)) return cont(maybeoperator); if (type == "type" ) return cont(maybeoperator); if (type == "function") return cont(functiondef); if (type == "keyword c") return cont(maybeexpression); if (type == "(") return cont(pushlex(")"), maybeexpression, expect(")"), poplex, maybeoperator); if (type == "operator") return cont(expression); if (type == "[") return cont(pushlex("]"), commasep(maybeexpression, "]"), poplex, maybeoperator); if (type == "{") return cont(pushlex("}"), commasep(objprop, "}"), poplex, maybeoperator); return cont(); } function maybeexpression(type) { if (type.match(/[;\}\)\],]/)) return pass(); return pass(expression); } function maybeoperator(type, value) { if (type == "operator" && /\+\+|--/.test(value)) return cont(maybeoperator); if (type == "operator" || type == ":") return cont(expression); if (type == ";") return; if (type == "(") return cont(pushlex(")"), commasep(expression, ")"), poplex, maybeoperator); if (type == ".") return cont(property, maybeoperator); if (type == "[") return cont(pushlex("]"), expression, expect("]"), poplex, maybeoperator); } function maybeattribute(type) { if (type == "attribute") return cont(maybeattribute); if (type == "function") return cont(functiondef); if (type == "var") return cont(vardef1); } function metadef(type) { if(type == ":") return cont(metadef); if(type == "variable") return cont(metadef); if(type == "(") return cont(pushlex(")"), commasep(metaargs, ")"), poplex, statement); } function metaargs(type) { if(type == "variable") return cont(); } function importdef (type, value) { if(type == "variable" && /[A-Z]/.test(value.charAt(0))) { registerimport(value); return cont(); } else if(type == "variable" || type == "property" || type == "." || value == "*") return cont(importdef); } function typedef (type, value) { if(type == "variable" && /[A-Z]/.test(value.charAt(0))) { registerimport(value); return cont(); } else if (type == "type" && /[A-Z]/.test(value.charAt(0))) { return cont(); } } function maybelabel(type) { if (type == ":") return cont(poplex, statement); return pass(maybeoperator, expect(";"), poplex); } function property(type) { if (type == "variable") {cx.marked = "property"; return cont();} } function objprop(type) { if (type == "variable") cx.marked = "property"; if (atomicTypes.hasOwnProperty(type)) return cont(expect(":"), expression); } function commasep(what, end) { function proceed(type) { if (type == ",") return cont(what, proceed); if (type == end) return cont(); return cont(expect(end)); } return function(type) { if (type == end) return cont(); else return pass(what, proceed); }; } function block(type) { if (type == "}") return cont(); return pass(statement, block); } function vardef1(type, value) { if (type == "variable"){register(value); return cont(typeuse, vardef2);} return cont(); } function vardef2(type, value) { if (value == "=") return cont(expression, vardef2); if (type == ",") return cont(vardef1); } function forspec1(type, value) { if (type == "variable") { register(value); return cont(forin, expression) } else { return pass() } } function forin(_type, value) { if (value == "in") return cont(); } function functiondef(type, value) { //function names starting with upper-case letters are recognised as types, so cludging them together here. if (type == "variable" || type == "type") {register(value); return cont(functiondef);} if (value == "new") return cont(functiondef); if (type == "(") return cont(pushlex(")"), pushcontext, commasep(funarg, ")"), poplex, typeuse, statement, popcontext); } function typeuse(type) { if(type == ":") return cont(typestring); } function typestring(type) { if(type == "type") return cont(); if(type == "variable") return cont(); if(type == "{") return cont(pushlex("}"), commasep(typeprop, "}"), poplex); } function typeprop(type) { if(type == "variable") return cont(typeuse); } function funarg(type, value) { if (type == "variable") {register(value); return cont(typeuse);} } // Interface return { startState: function(basecolumn) { var defaulttypes = ["Int", "Float", "String", "Void", "Std", "Bool", "Dynamic", "Array"]; var state = { tokenize: haxeTokenBase, reAllowed: true, kwAllowed: true, cc: [], lexical: new HaxeLexical((basecolumn || 0) - indentUnit, 0, "block", false), localVars: parserConfig.localVars, importedtypes: defaulttypes, context: parserConfig.localVars && {vars: parserConfig.localVars}, indented: 0 }; if (parserConfig.globalVars && typeof parserConfig.globalVars == "object") state.globalVars = parserConfig.globalVars; return state; }, token: function(stream, state) { if (stream.sol()) { if (!state.lexical.hasOwnProperty("align")) state.lexical.align = false; state.indented = stream.indentation(); } if (stream.eatSpace()) return null; var style = state.tokenize(stream, state); if (type == "comment") return style; state.reAllowed = !!(type == "operator" || type == "keyword c" || type.match(/^[\[{}\(,;:]$/)); state.kwAllowed = type != '.'; return parseHaxe(state, style, type, content, stream); }, indent: function(state, textAfter) { if (state.tokenize != haxeTokenBase) return 0; var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical; if (lexical.type == "stat" && firstChar == "}") lexical = lexical.prev; var type = lexical.type, closing = firstChar == type; if (type == "vardef") return lexical.indented + 4; else if (type == "form" && firstChar == "{") return lexical.indented; else if (type == "stat" || type == "form") return lexical.indented + indentUnit; else if (lexical.info == "switch" && !closing) return lexical.indented + (/^(?:case|default)\b/.test(textAfter) ? indentUnit : 2 * indentUnit); else if (lexical.align) return lexical.column + (closing ? 0 : 1); else return lexical.indented + (closing ? 0 : indentUnit); }, electricChars: "{}", blockCommentStart: "/*", blockCommentEnd: "*/", lineComment: "//" }; }); CodeMirror.defineMIME("text/x-haxe", "haxe"); CodeMirror.defineMode("hxml", function () { return { startState: function () { return { define: false, inString: false }; }, token: function (stream, state) { var ch = stream.peek(); var sol = stream.sol(); ///* comments */ if (ch == "#") { stream.skipToEnd(); return "comment"; } if (sol && ch == "-") { var style = "variable-2"; stream.eat(/-/); if (stream.peek() == "-") { stream.eat(/-/); style = "keyword a"; } if (stream.peek() == "D") { stream.eat(/[D]/); style = "keyword c"; state.define = true; } stream.eatWhile(/[A-Z]/i); return style; } var ch = stream.peek(); if (state.inString == false && ch == "'") { state.inString = true; ch = stream.next(); } if (state.inString == true) { if (stream.skipTo("'")) { } else { stream.skipToEnd(); } if (stream.peek() == "'") { stream.next(); state.inString = false; } return "string"; } stream.next(); return null; }, lineComment: "#" }; }); CodeMirror.defineMIME("text/x-hxml", "hxml"); }); plugins/file-manager-advanced/application/library/codemirror/mode/haxe/index.html000064400000005021147176754550024324 0ustar00 CodeMirror: Haxe mode

Haxe mode

Hxml mode:

MIME types defined: text/x-haxe, text/x-hxml.

plugins/file-manager-advanced/application/library/codemirror/mode/htmlembedded/htmlembedded.js000064400000002611147176754550026776 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed"), require("../../addon/mode/multiplex")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror", "../htmlmixed/htmlmixed", "../../addon/mode/multiplex"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("htmlembedded", function(config, parserConfig) { return CodeMirror.multiplexingMode(CodeMirror.getMode(config, "htmlmixed"), { open: parserConfig.open || parserConfig.scriptStartRegex || "<%", close: parserConfig.close || parserConfig.scriptEndRegex || "%>", mode: CodeMirror.getMode(config, parserConfig.scriptingModeSpec) }); }, "htmlmixed"); CodeMirror.defineMIME("application/x-ejs", {name: "htmlembedded", scriptingModeSpec:"javascript"}); CodeMirror.defineMIME("application/x-aspx", {name: "htmlembedded", scriptingModeSpec:"text/x-csharp"}); CodeMirror.defineMIME("application/x-jsp", {name: "htmlembedded", scriptingModeSpec:"text/x-java"}); CodeMirror.defineMIME("application/x-erb", {name: "htmlembedded", scriptingModeSpec:"ruby"}); }); plugins/file-manager-advanced/application/library/codemirror/mode/htmlembedded/index.html000064400000004046147176754550026023 0ustar00 CodeMirror: Html Embedded Scripts mode

Html Embedded Scripts mode

Mode for html embedded scripts like JSP and ASP.NET. Depends on multiplex and HtmlMixed which in turn depends on JavaScript, CSS and XML.
Other dependencies include those of the scripting language chosen.

MIME types defined: application/x-aspx (ASP.NET), application/x-ejs (Embedded Javascript), application/x-jsp (JavaServer Pages) and application/x-erb

plugins/file-manager-advanced/application/library/codemirror/mode/htmlmixed/htmlmixed.js000064400000012726147176754550025740 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror"), require("../xml/xml"), require("../javascript/javascript"), require("../css/css")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror", "../xml/xml", "../javascript/javascript", "../css/css"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; var defaultTags = { script: [ ["lang", /(javascript|babel)/i, "javascript"], ["type", /^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^$/i, "javascript"], ["type", /./, "text/plain"], [null, null, "javascript"] ], style: [ ["lang", /^css$/i, "css"], ["type", /^(text\/)?(x-)?(stylesheet|css)$/i, "css"], ["type", /./, "text/plain"], [null, null, "css"] ] }; function maybeBackup(stream, pat, style) { var cur = stream.current(), close = cur.search(pat); if (close > -1) { stream.backUp(cur.length - close); } else if (cur.match(/<\/?$/)) { stream.backUp(cur.length); if (!stream.match(pat, false)) stream.match(cur); } return style; } var attrRegexpCache = {}; function getAttrRegexp(attr) { var regexp = attrRegexpCache[attr]; if (regexp) return regexp; return attrRegexpCache[attr] = new RegExp("\\s+" + attr + "\\s*=\\s*('|\")?([^'\"]+)('|\")?\\s*"); } function getAttrValue(text, attr) { var match = text.match(getAttrRegexp(attr)) return match ? /^\s*(.*?)\s*$/.exec(match[2])[1] : "" } function getTagRegexp(tagName, anchored) { return new RegExp((anchored ? "^" : "") + "<\/\s*" + tagName + "\s*>", "i"); } function addTags(from, to) { for (var tag in from) { var dest = to[tag] || (to[tag] = []); var source = from[tag]; for (var i = source.length - 1; i >= 0; i--) dest.unshift(source[i]) } } function findMatchingMode(tagInfo, tagText) { for (var i = 0; i < tagInfo.length; i++) { var spec = tagInfo[i]; if (!spec[0] || spec[1].test(getAttrValue(tagText, spec[0]))) return spec[2]; } } CodeMirror.defineMode("htmlmixed", function (config, parserConfig) { var htmlMode = CodeMirror.getMode(config, { name: "xml", htmlMode: true, multilineTagIndentFactor: parserConfig.multilineTagIndentFactor, multilineTagIndentPastTag: parserConfig.multilineTagIndentPastTag }); var tags = {}; var configTags = parserConfig && parserConfig.tags, configScript = parserConfig && parserConfig.scriptTypes; addTags(defaultTags, tags); if (configTags) addTags(configTags, tags); if (configScript) for (var i = configScript.length - 1; i >= 0; i--) tags.script.unshift(["type", configScript[i].matches, configScript[i].mode]) function html(stream, state) { var style = htmlMode.token(stream, state.htmlState), tag = /\btag\b/.test(style), tagName if (tag && !/[<>\s\/]/.test(stream.current()) && (tagName = state.htmlState.tagName && state.htmlState.tagName.toLowerCase()) && tags.hasOwnProperty(tagName)) { state.inTag = tagName + " " } else if (state.inTag && tag && />$/.test(stream.current())) { var inTag = /^([\S]+) (.*)/.exec(state.inTag) state.inTag = null var modeSpec = stream.current() == ">" && findMatchingMode(tags[inTag[1]], inTag[2]) var mode = CodeMirror.getMode(config, modeSpec) var endTagA = getTagRegexp(inTag[1], true), endTag = getTagRegexp(inTag[1], false); state.token = function (stream, state) { if (stream.match(endTagA, false)) { state.token = html; state.localState = state.localMode = null; return null; } return maybeBackup(stream, endTag, state.localMode.token(stream, state.localState)); }; state.localMode = mode; state.localState = CodeMirror.startState(mode, htmlMode.indent(state.htmlState, "")); } else if (state.inTag) { state.inTag += stream.current() if (stream.eol()) state.inTag += " " } return style; }; return { startState: function () { var state = CodeMirror.startState(htmlMode); return {token: html, inTag: null, localMode: null, localState: null, htmlState: state}; }, copyState: function (state) { var local; if (state.localState) { local = CodeMirror.copyState(state.localMode, state.localState); } return {token: state.token, inTag: state.inTag, localMode: state.localMode, localState: local, htmlState: CodeMirror.copyState(htmlMode, state.htmlState)}; }, token: function (stream, state) { return state.token(stream, state); }, indent: function (state, textAfter) { if (!state.localMode || /^\s*<\//.test(textAfter)) return htmlMode.indent(state.htmlState, textAfter); else if (state.localMode.indent) return state.localMode.indent(state.localState, textAfter); else return CodeMirror.Pass; }, innerMode: function (state) { return {state: state.localState || state.htmlState, mode: state.localMode || htmlMode}; } }; }, "xml", "javascript", "css"); CodeMirror.defineMIME("text/html", "htmlmixed"); }); plugins/file-manager-advanced/application/library/codemirror/mode/htmlmixed/index.html000064400000005772147176754550025407 0ustar00 CodeMirror: HTML mixed mode

HTML mixed mode

The HTML mixed mode depends on the XML, JavaScript, and CSS modes.

It takes an optional mode configuration option, scriptTypes, which can be used to add custom behavior for specific <script type="..."> tags. If given, it should hold an array of {matches, mode} objects, where matches is a string or regexp that matches the script type, and mode is either null, for script types that should stay in HTML mode, or a mode spec corresponding to the mode that should be used for the script.

MIME types defined: text/html (redefined, only takes effect if you load this parser after the XML parser).

plugins/file-manager-advanced/application/library/codemirror/mode/http/http.js000064400000005353147176754550023706 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("http", function() { function failFirstLine(stream, state) { stream.skipToEnd(); state.cur = header; return "error"; } function start(stream, state) { if (stream.match(/^HTTP\/\d\.\d/)) { state.cur = responseStatusCode; return "keyword"; } else if (stream.match(/^[A-Z]+/) && /[ \t]/.test(stream.peek())) { state.cur = requestPath; return "keyword"; } else { return failFirstLine(stream, state); } } function responseStatusCode(stream, state) { var code = stream.match(/^\d+/); if (!code) return failFirstLine(stream, state); state.cur = responseStatusText; var status = Number(code[0]); if (status >= 100 && status < 200) { return "positive informational"; } else if (status >= 200 && status < 300) { return "positive success"; } else if (status >= 300 && status < 400) { return "positive redirect"; } else if (status >= 400 && status < 500) { return "negative client-error"; } else if (status >= 500 && status < 600) { return "negative server-error"; } else { return "error"; } } function responseStatusText(stream, state) { stream.skipToEnd(); state.cur = header; return null; } function requestPath(stream, state) { stream.eatWhile(/\S/); state.cur = requestProtocol; return "string-2"; } function requestProtocol(stream, state) { if (stream.match(/^HTTP\/\d\.\d$/)) { state.cur = header; return "keyword"; } else { return failFirstLine(stream, state); } } function header(stream) { if (stream.sol() && !stream.eat(/[ \t]/)) { if (stream.match(/^.*?:/)) { return "atom"; } else { stream.skipToEnd(); return "error"; } } else { stream.skipToEnd(); return "string"; } } function body(stream) { stream.skipToEnd(); return null; } return { token: function(stream, state) { var cur = state.cur; if (cur != header && cur != body && stream.eatSpace()) return null; return cur(stream, state); }, blankLine: function(state) { state.cur = body; }, startState: function() { return {cur: start}; } }; }); CodeMirror.defineMIME("message/http", "http"); }); plugins/file-manager-advanced/application/library/codemirror/mode/http/index.html000064400000002561147176754550024364 0ustar00 CodeMirror: HTTP mode

HTTP mode

MIME types defined: message/http.

plugins/file-manager-advanced/application/library/codemirror/mode/idl/idl.js000064400000035051147176754550023266 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; function wordRegexp(words) { return new RegExp('^((' + words.join(')|(') + '))\\b', 'i'); }; var builtinArray = [ 'a_correlate', 'abs', 'acos', 'adapt_hist_equal', 'alog', 'alog2', 'alog10', 'amoeba', 'annotate', 'app_user_dir', 'app_user_dir_query', 'arg_present', 'array_equal', 'array_indices', 'arrow', 'ascii_template', 'asin', 'assoc', 'atan', 'axis', 'axis', 'bandpass_filter', 'bandreject_filter', 'barplot', 'bar_plot', 'beseli', 'beselj', 'beselk', 'besely', 'beta', 'biginteger', 'bilinear', 'bin_date', 'binary_template', 'bindgen', 'binomial', 'bit_ffs', 'bit_population', 'blas_axpy', 'blk_con', 'boolarr', 'boolean', 'boxplot', 'box_cursor', 'breakpoint', 'broyden', 'bubbleplot', 'butterworth', 'bytarr', 'byte', 'byteorder', 'bytscl', 'c_correlate', 'calendar', 'caldat', 'call_external', 'call_function', 'call_method', 'call_procedure', 'canny', 'catch', 'cd', 'cdf', 'ceil', 'chebyshev', 'check_math', 'chisqr_cvf', 'chisqr_pdf', 'choldc', 'cholsol', 'cindgen', 'cir_3pnt', 'clipboard', 'close', 'clust_wts', 'cluster', 'cluster_tree', 'cmyk_convert', 'code_coverage', 'color_convert', 'color_exchange', 'color_quan', 'color_range_map', 'colorbar', 'colorize_sample', 'colormap_applicable', 'colormap_gradient', 'colormap_rotation', 'colortable', 'comfit', 'command_line_args', 'common', 'compile_opt', 'complex', 'complexarr', 'complexround', 'compute_mesh_normals', 'cond', 'congrid', 'conj', 'constrained_min', 'contour', 'contour', 'convert_coord', 'convol', 'convol_fft', 'coord2to3', 'copy_lun', 'correlate', 'cos', 'cosh', 'cpu', 'cramer', 'createboxplotdata', 'create_cursor', 'create_struct', 'create_view', 'crossp', 'crvlength', 'ct_luminance', 'cti_test', 'cursor', 'curvefit', 'cv_coord', 'cvttobm', 'cw_animate', 'cw_animate_getp', 'cw_animate_load', 'cw_animate_run', 'cw_arcball', 'cw_bgroup', 'cw_clr_index', 'cw_colorsel', 'cw_defroi', 'cw_field', 'cw_filesel', 'cw_form', 'cw_fslider', 'cw_light_editor', 'cw_light_editor_get', 'cw_light_editor_set', 'cw_orient', 'cw_palette_editor', 'cw_palette_editor_get', 'cw_palette_editor_set', 'cw_pdmenu', 'cw_rgbslider', 'cw_tmpl', 'cw_zoom', 'db_exists', 'dblarr', 'dcindgen', 'dcomplex', 'dcomplexarr', 'define_key', 'define_msgblk', 'define_msgblk_from_file', 'defroi', 'defsysv', 'delvar', 'dendro_plot', 'dendrogram', 'deriv', 'derivsig', 'determ', 'device', 'dfpmin', 'diag_matrix', 'dialog_dbconnect', 'dialog_message', 'dialog_pickfile', 'dialog_printersetup', 'dialog_printjob', 'dialog_read_image', 'dialog_write_image', 'dictionary', 'digital_filter', 'dilate', 'dindgen', 'dissolve', 'dist', 'distance_measure', 'dlm_load', 'dlm_register', 'doc_library', 'double', 'draw_roi', 'edge_dog', 'efont', 'eigenql', 'eigenvec', 'ellipse', 'elmhes', 'emboss', 'empty', 'enable_sysrtn', 'eof', 'eos', 'erase', 'erf', 'erfc', 'erfcx', 'erode', 'errorplot', 'errplot', 'estimator_filter', 'execute', 'exit', 'exp', 'expand', 'expand_path', 'expint', 'extrac', 'extract_slice', 'f_cvf', 'f_pdf', 'factorial', 'fft', 'file_basename', 'file_chmod', 'file_copy', 'file_delete', 'file_dirname', 'file_expand_path', 'file_gunzip', 'file_gzip', 'file_info', 'file_lines', 'file_link', 'file_mkdir', 'file_move', 'file_poll_input', 'file_readlink', 'file_same', 'file_search', 'file_tar', 'file_test', 'file_untar', 'file_unzip', 'file_which', 'file_zip', 'filepath', 'findgen', 'finite', 'fix', 'flick', 'float', 'floor', 'flow3', 'fltarr', 'flush', 'format_axis_values', 'forward_function', 'free_lun', 'fstat', 'fulstr', 'funct', 'function', 'fv_test', 'fx_root', 'fz_roots', 'gamma', 'gamma_ct', 'gauss_cvf', 'gauss_pdf', 'gauss_smooth', 'gauss2dfit', 'gaussfit', 'gaussian_function', 'gaussint', 'get_drive_list', 'get_dxf_objects', 'get_kbrd', 'get_login_info', 'get_lun', 'get_screen_size', 'getenv', 'getwindows', 'greg2jul', 'grib', 'grid_input', 'grid_tps', 'grid3', 'griddata', 'gs_iter', 'h_eq_ct', 'h_eq_int', 'hanning', 'hash', 'hdf', 'hdf5', 'heap_free', 'heap_gc', 'heap_nosave', 'heap_refcount', 'heap_save', 'help', 'hilbert', 'hist_2d', 'hist_equal', 'histogram', 'hls', 'hough', 'hqr', 'hsv', 'i18n_multibytetoutf8', 'i18n_multibytetowidechar', 'i18n_utf8tomultibyte', 'i18n_widechartomultibyte', 'ibeta', 'icontour', 'iconvertcoord', 'idelete', 'identity', 'idl_base64', 'idl_container', 'idl_validname', 'idlexbr_assistant', 'idlitsys_createtool', 'idlunit', 'iellipse', 'igamma', 'igetcurrent', 'igetdata', 'igetid', 'igetproperty', 'iimage', 'image', 'image_cont', 'image_statistics', 'image_threshold', 'imaginary', 'imap', 'indgen', 'int_2d', 'int_3d', 'int_tabulated', 'intarr', 'interpol', 'interpolate', 'interval_volume', 'invert', 'ioctl', 'iopen', 'ir_filter', 'iplot', 'ipolygon', 'ipolyline', 'iputdata', 'iregister', 'ireset', 'iresolve', 'irotate', 'isa', 'isave', 'iscale', 'isetcurrent', 'isetproperty', 'ishft', 'isocontour', 'isosurface', 'isurface', 'itext', 'itranslate', 'ivector', 'ivolume', 'izoom', 'journal', 'json_parse', 'json_serialize', 'jul2greg', 'julday', 'keyword_set', 'krig2d', 'kurtosis', 'kw_test', 'l64indgen', 'la_choldc', 'la_cholmprove', 'la_cholsol', 'la_determ', 'la_eigenproblem', 'la_eigenql', 'la_eigenvec', 'la_elmhes', 'la_gm_linear_model', 'la_hqr', 'la_invert', 'la_least_square_equality', 'la_least_squares', 'la_linear_equation', 'la_ludc', 'la_lumprove', 'la_lusol', 'la_svd', 'la_tridc', 'la_trimprove', 'la_triql', 'la_trired', 'la_trisol', 'label_date', 'label_region', 'ladfit', 'laguerre', 'lambda', 'lambdap', 'lambertw', 'laplacian', 'least_squares_filter', 'leefilt', 'legend', 'legendre', 'linbcg', 'lindgen', 'linfit', 'linkimage', 'list', 'll_arc_distance', 'lmfit', 'lmgr', 'lngamma', 'lnp_test', 'loadct', 'locale_get', 'logical_and', 'logical_or', 'logical_true', 'lon64arr', 'lonarr', 'long', 'long64', 'lsode', 'lu_complex', 'ludc', 'lumprove', 'lusol', 'm_correlate', 'machar', 'make_array', 'make_dll', 'make_rt', 'map', 'mapcontinents', 'mapgrid', 'map_2points', 'map_continents', 'map_grid', 'map_image', 'map_patch', 'map_proj_forward', 'map_proj_image', 'map_proj_info', 'map_proj_init', 'map_proj_inverse', 'map_set', 'matrix_multiply', 'matrix_power', 'max', 'md_test', 'mean', 'meanabsdev', 'mean_filter', 'median', 'memory', 'mesh_clip', 'mesh_decimate', 'mesh_issolid', 'mesh_merge', 'mesh_numtriangles', 'mesh_obj', 'mesh_smooth', 'mesh_surfacearea', 'mesh_validate', 'mesh_volume', 'message', 'min', 'min_curve_surf', 'mk_html_help', 'modifyct', 'moment', 'morph_close', 'morph_distance', 'morph_gradient', 'morph_hitormiss', 'morph_open', 'morph_thin', 'morph_tophat', 'multi', 'n_elements', 'n_params', 'n_tags', 'ncdf', 'newton', 'noise_hurl', 'noise_pick', 'noise_scatter', 'noise_slur', 'norm', 'obj_class', 'obj_destroy', 'obj_hasmethod', 'obj_isa', 'obj_new', 'obj_valid', 'objarr', 'on_error', 'on_ioerror', 'online_help', 'openr', 'openu', 'openw', 'oplot', 'oploterr', 'orderedhash', 'p_correlate', 'parse_url', 'particle_trace', 'path_cache', 'path_sep', 'pcomp', 'plot', 'plot3d', 'plot', 'plot_3dbox', 'plot_field', 'ploterr', 'plots', 'polar_contour', 'polar_surface', 'polyfill', 'polyshade', 'pnt_line', 'point_lun', 'polarplot', 'poly', 'poly_2d', 'poly_area', 'poly_fit', 'polyfillv', 'polygon', 'polyline', 'polywarp', 'popd', 'powell', 'pref_commit', 'pref_get', 'pref_set', 'prewitt', 'primes', 'print', 'printf', 'printd', 'pro', 'product', 'profile', 'profiler', 'profiles', 'project_vol', 'ps_show_fonts', 'psafm', 'pseudo', 'ptr_free', 'ptr_new', 'ptr_valid', 'ptrarr', 'pushd', 'qgrid3', 'qhull', 'qromb', 'qromo', 'qsimp', 'query_*', 'query_ascii', 'query_bmp', 'query_csv', 'query_dicom', 'query_gif', 'query_image', 'query_jpeg', 'query_jpeg2000', 'query_mrsid', 'query_pict', 'query_png', 'query_ppm', 'query_srf', 'query_tiff', 'query_video', 'query_wav', 'r_correlate', 'r_test', 'radon', 'randomn', 'randomu', 'ranks', 'rdpix', 'read', 'readf', 'read_ascii', 'read_binary', 'read_bmp', 'read_csv', 'read_dicom', 'read_gif', 'read_image', 'read_interfile', 'read_jpeg', 'read_jpeg2000', 'read_mrsid', 'read_pict', 'read_png', 'read_ppm', 'read_spr', 'read_srf', 'read_sylk', 'read_tiff', 'read_video', 'read_wav', 'read_wave', 'read_x11_bitmap', 'read_xwd', 'reads', 'readu', 'real_part', 'rebin', 'recall_commands', 'recon3', 'reduce_colors', 'reform', 'region_grow', 'register_cursor', 'regress', 'replicate', 'replicate_inplace', 'resolve_all', 'resolve_routine', 'restore', 'retall', 'return', 'reverse', 'rk4', 'roberts', 'rot', 'rotate', 'round', 'routine_filepath', 'routine_info', 'rs_test', 's_test', 'save', 'savgol', 'scale3', 'scale3d', 'scatterplot', 'scatterplot3d', 'scope_level', 'scope_traceback', 'scope_varfetch', 'scope_varname', 'search2d', 'search3d', 'sem_create', 'sem_delete', 'sem_lock', 'sem_release', 'set_plot', 'set_shading', 'setenv', 'sfit', 'shade_surf', 'shade_surf_irr', 'shade_volume', 'shift', 'shift_diff', 'shmdebug', 'shmmap', 'shmunmap', 'shmvar', 'show3', 'showfont', 'signum', 'simplex', 'sin', 'sindgen', 'sinh', 'size', 'skewness', 'skip_lun', 'slicer3', 'slide_image', 'smooth', 'sobel', 'socket', 'sort', 'spawn', 'sph_4pnt', 'sph_scat', 'spher_harm', 'spl_init', 'spl_interp', 'spline', 'spline_p', 'sprsab', 'sprsax', 'sprsin', 'sprstp', 'sqrt', 'standardize', 'stddev', 'stop', 'strarr', 'strcmp', 'strcompress', 'streamline', 'streamline', 'stregex', 'stretch', 'string', 'strjoin', 'strlen', 'strlowcase', 'strmatch', 'strmessage', 'strmid', 'strpos', 'strput', 'strsplit', 'strtrim', 'struct_assign', 'struct_hide', 'strupcase', 'surface', 'surface', 'surfr', 'svdc', 'svdfit', 'svsol', 'swap_endian', 'swap_endian_inplace', 'symbol', 'systime', 't_cvf', 't_pdf', 't3d', 'tag_names', 'tan', 'tanh', 'tek_color', 'temporary', 'terminal_size', 'tetra_clip', 'tetra_surface', 'tetra_volume', 'text', 'thin', 'thread', 'threed', 'tic', 'time_test2', 'timegen', 'timer', 'timestamp', 'timestamptovalues', 'tm_test', 'toc', 'total', 'trace', 'transpose', 'tri_surf', 'triangulate', 'trigrid', 'triql', 'trired', 'trisol', 'truncate_lun', 'ts_coef', 'ts_diff', 'ts_fcast', 'ts_smooth', 'tv', 'tvcrs', 'tvlct', 'tvrd', 'tvscl', 'typename', 'uindgen', 'uint', 'uintarr', 'ul64indgen', 'ulindgen', 'ulon64arr', 'ulonarr', 'ulong', 'ulong64', 'uniq', 'unsharp_mask', 'usersym', 'value_locate', 'variance', 'vector', 'vector_field', 'vel', 'velovect', 'vert_t3d', 'voigt', 'volume', 'voronoi', 'voxel_proj', 'wait', 'warp_tri', 'watershed', 'wdelete', 'wf_draw', 'where', 'widget_base', 'widget_button', 'widget_combobox', 'widget_control', 'widget_displaycontextmenu', 'widget_draw', 'widget_droplist', 'widget_event', 'widget_info', 'widget_label', 'widget_list', 'widget_propertysheet', 'widget_slider', 'widget_tab', 'widget_table', 'widget_text', 'widget_tree', 'widget_tree_move', 'widget_window', 'wiener_filter', 'window', 'window', 'write_bmp', 'write_csv', 'write_gif', 'write_image', 'write_jpeg', 'write_jpeg2000', 'write_nrif', 'write_pict', 'write_png', 'write_ppm', 'write_spr', 'write_srf', 'write_sylk', 'write_tiff', 'write_video', 'write_wav', 'write_wave', 'writeu', 'wset', 'wshow', 'wtn', 'wv_applet', 'wv_cwt', 'wv_cw_wavelet', 'wv_denoise', 'wv_dwt', 'wv_fn_coiflet', 'wv_fn_daubechies', 'wv_fn_gaussian', 'wv_fn_haar', 'wv_fn_morlet', 'wv_fn_paul', 'wv_fn_symlet', 'wv_import_data', 'wv_import_wavelet', 'wv_plot3d_wps', 'wv_plot_multires', 'wv_pwt', 'wv_tool_denoise', 'xbm_edit', 'xdisplayfile', 'xdxf', 'xfont', 'xinteranimate', 'xloadct', 'xmanager', 'xmng_tmpl', 'xmtool', 'xobjview', 'xobjview_rotate', 'xobjview_write_image', 'xpalette', 'xpcolor', 'xplot3d', 'xregistered', 'xroi', 'xsq_test', 'xsurface', 'xvaredit', 'xvolume', 'xvolume_rotate', 'xvolume_write_image', 'xyouts', 'zlib_compress', 'zlib_uncompress', 'zoom', 'zoom_24' ]; var builtins = wordRegexp(builtinArray); var keywordArray = [ 'begin', 'end', 'endcase', 'endfor', 'endwhile', 'endif', 'endrep', 'endforeach', 'break', 'case', 'continue', 'for', 'foreach', 'goto', 'if', 'then', 'else', 'repeat', 'until', 'switch', 'while', 'do', 'pro', 'function' ]; var keywords = wordRegexp(keywordArray); CodeMirror.registerHelper("hintWords", "idl", builtinArray.concat(keywordArray)); var identifiers = new RegExp('^[_a-z\xa1-\uffff][_a-z0-9\xa1-\uffff]*', 'i'); var singleOperators = /[+\-*&=<>\/@#~$]/; var boolOperators = new RegExp('(and|or|eq|lt|le|gt|ge|ne|not)', 'i'); function tokenBase(stream) { // whitespaces if (stream.eatSpace()) return null; // Handle one line Comments if (stream.match(';')) { stream.skipToEnd(); return 'comment'; } // Handle Number Literals if (stream.match(/^[0-9\.+-]/, false)) { if (stream.match(/^[+-]?0x[0-9a-fA-F]+/)) return 'number'; if (stream.match(/^[+-]?\d*\.\d+([EeDd][+-]?\d+)?/)) return 'number'; if (stream.match(/^[+-]?\d+([EeDd][+-]?\d+)?/)) return 'number'; } // Handle Strings if (stream.match(/^"([^"]|(""))*"/)) { return 'string'; } if (stream.match(/^'([^']|(''))*'/)) { return 'string'; } // Handle words if (stream.match(keywords)) { return 'keyword'; } if (stream.match(builtins)) { return 'builtin'; } if (stream.match(identifiers)) { return 'variable'; } if (stream.match(singleOperators) || stream.match(boolOperators)) { return 'operator'; } // Handle non-detected items stream.next(); return null; }; CodeMirror.defineMode('idl', function() { return { token: function(stream) { return tokenBase(stream); } }; }); CodeMirror.defineMIME('text/x-idl', 'idl'); }); plugins/file-manager-advanced/application/library/codemirror/mode/idl/index.html000064400000003141147176754550024150 0ustar00 CodeMirror: IDL mode

IDL mode

MIME types defined: text/x-idl.

plugins/file-manager-advanced/application/library/codemirror/mode/javascript/index.html000064400000010141147176754550025544 0ustar00 CodeMirror: JavaScript mode

JavaScript mode

JavaScript mode supports several configuration options:

  • json which will set the mode to expect JSON data rather than a JavaScript program.
  • jsonld which will set the mode to expect JSON-LD linked data rather than a JavaScript program (demo).
  • typescript which will activate additional syntax highlighting and some other things for TypeScript code (demo).
  • statementIndent which (given a number) will determine the amount of indentation to use for statements continued on a new line.
  • wordCharacters, a regexp that indicates which characters should be considered part of an identifier. Defaults to /[\w$]/, which does not handle non-ASCII identifiers. Can be set to something more elaborate to improve Unicode support.

MIME types defined: text/javascript, application/json, application/ld+json, text/typescript, application/typescript.

plugins/file-manager-advanced/application/library/codemirror/mode/javascript/javascript.js000064400000070217147176754550026265 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; function expressionAllowed(stream, state, backUp) { return /^(?:operator|sof|keyword c|case|new|[\[{}\(,;:]|=>)$/.test(state.lastType) || (state.lastType == "quasi" && /\{\s*$/.test(stream.string.slice(0, stream.pos - (backUp || 0)))) } CodeMirror.defineMode("javascript", function(config, parserConfig) { var indentUnit = config.indentUnit; var statementIndent = parserConfig.statementIndent; var jsonldMode = parserConfig.jsonld; var jsonMode = parserConfig.json || jsonldMode; var isTS = parserConfig.typescript; var wordRE = parserConfig.wordCharacters || /[\w$\xa1-\uffff]/; // Tokenizer var keywords = function(){ function kw(type) {return {type: type, style: "keyword"};} var A = kw("keyword a"), B = kw("keyword b"), C = kw("keyword c"); var operator = kw("operator"), atom = {type: "atom", style: "atom"}; var jsKeywords = { "if": kw("if"), "while": A, "with": A, "else": B, "do": B, "try": B, "finally": B, "return": C, "break": C, "continue": C, "new": kw("new"), "delete": C, "throw": C, "debugger": C, "var": kw("var"), "const": kw("var"), "let": kw("var"), "function": kw("function"), "catch": kw("catch"), "for": kw("for"), "switch": kw("switch"), "case": kw("case"), "default": kw("default"), "in": operator, "typeof": operator, "instanceof": operator, "true": atom, "false": atom, "null": atom, "undefined": atom, "NaN": atom, "Infinity": atom, "this": kw("this"), "class": kw("class"), "super": kw("atom"), "yield": C, "export": kw("export"), "import": kw("import"), "extends": C, "await": C, "async": kw("async") }; // Extend the 'normal' keywords with the TypeScript language extensions if (isTS) { var type = {type: "variable", style: "variable-3"}; var tsKeywords = { // object-like things "interface": kw("class"), "implements": C, "namespace": C, "module": kw("module"), "enum": kw("module"), // scope modifiers "public": kw("modifier"), "private": kw("modifier"), "protected": kw("modifier"), "abstract": kw("modifier"), // operators "as": operator, // types "string": type, "number": type, "boolean": type, "any": type }; for (var attr in tsKeywords) { jsKeywords[attr] = tsKeywords[attr]; } } return jsKeywords; }(); var isOperatorChar = /[+\-*&%=<>!?|~^]/; var isJsonldKeyword = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/; function readRegexp(stream) { var escaped = false, next, inSet = false; while ((next = stream.next()) != null) { if (!escaped) { if (next == "/" && !inSet) return; if (next == "[") inSet = true; else if (inSet && next == "]") inSet = false; } escaped = !escaped && next == "\\"; } } // Used as scratch variables to communicate multiple values without // consing up tons of objects. var type, content; function ret(tp, style, cont) { type = tp; content = cont; return style; } function tokenBase(stream, state) { var ch = stream.next(); if (ch == '"' || ch == "'") { state.tokenize = tokenString(ch); return state.tokenize(stream, state); } else if (ch == "." && stream.match(/^\d+(?:[eE][+\-]?\d+)?/)) { return ret("number", "number"); } else if (ch == "." && stream.match("..")) { return ret("spread", "meta"); } else if (/[\[\]{}\(\),;\:\.]/.test(ch)) { return ret(ch); } else if (ch == "=" && stream.eat(">")) { return ret("=>", "operator"); } else if (ch == "0" && stream.eat(/x/i)) { stream.eatWhile(/[\da-f]/i); return ret("number", "number"); } else if (ch == "0" && stream.eat(/o/i)) { stream.eatWhile(/[0-7]/i); return ret("number", "number"); } else if (ch == "0" && stream.eat(/b/i)) { stream.eatWhile(/[01]/i); return ret("number", "number"); } else if (/\d/.test(ch)) { stream.match(/^\d*(?:\.\d*)?(?:[eE][+\-]?\d+)?/); return ret("number", "number"); } else if (ch == "/") { if (stream.eat("*")) { state.tokenize = tokenComment; return tokenComment(stream, state); } else if (stream.eat("/")) { stream.skipToEnd(); return ret("comment", "comment"); } else if (expressionAllowed(stream, state, 1)) { readRegexp(stream); stream.match(/^\b(([gimyu])(?![gimyu]*\2))+\b/); return ret("regexp", "string-2"); } else { stream.eatWhile(isOperatorChar); return ret("operator", "operator", stream.current()); } } else if (ch == "`") { state.tokenize = tokenQuasi; return tokenQuasi(stream, state); } else if (ch == "#") { stream.skipToEnd(); return ret("error", "error"); } else if (isOperatorChar.test(ch)) { stream.eatWhile(isOperatorChar); return ret("operator", "operator", stream.current()); } else if (wordRE.test(ch)) { stream.eatWhile(wordRE); var word = stream.current(), known = keywords.propertyIsEnumerable(word) && keywords[word]; return (known && state.lastType != ".") ? ret(known.type, known.style, word) : ret("variable", "variable", word); } } function tokenString(quote) { return function(stream, state) { var escaped = false, next; if (jsonldMode && stream.peek() == "@" && stream.match(isJsonldKeyword)){ state.tokenize = tokenBase; return ret("jsonld-keyword", "meta"); } while ((next = stream.next()) != null) { if (next == quote && !escaped) break; escaped = !escaped && next == "\\"; } if (!escaped) state.tokenize = tokenBase; return ret("string", "string"); }; } function tokenComment(stream, state) { var maybeEnd = false, ch; while (ch = stream.next()) { if (ch == "/" && maybeEnd) { state.tokenize = tokenBase; break; } maybeEnd = (ch == "*"); } return ret("comment", "comment"); } function tokenQuasi(stream, state) { var escaped = false, next; while ((next = stream.next()) != null) { if (!escaped && (next == "`" || next == "$" && stream.eat("{"))) { state.tokenize = tokenBase; break; } escaped = !escaped && next == "\\"; } return ret("quasi", "string-2", stream.current()); } var brackets = "([{}])"; // This is a crude lookahead trick to try and notice that we're // parsing the argument patterns for a fat-arrow function before we // actually hit the arrow token. It only works if the arrow is on // the same line as the arguments and there's no strange noise // (comments) in between. Fallback is to only notice when we hit the // arrow, and not declare the arguments as locals for the arrow // body. function findFatArrow(stream, state) { if (state.fatArrowAt) state.fatArrowAt = null; var arrow = stream.string.indexOf("=>", stream.start); if (arrow < 0) return; var depth = 0, sawSomething = false; for (var pos = arrow - 1; pos >= 0; --pos) { var ch = stream.string.charAt(pos); var bracket = brackets.indexOf(ch); if (bracket >= 0 && bracket < 3) { if (!depth) { ++pos; break; } if (--depth == 0) { if (ch == "(") sawSomething = true; break; } } else if (bracket >= 3 && bracket < 6) { ++depth; } else if (wordRE.test(ch)) { sawSomething = true; } else if (/["'\/]/.test(ch)) { return; } else if (sawSomething && !depth) { ++pos; break; } } if (sawSomething && !depth) state.fatArrowAt = pos; } // Parser var atomicTypes = {"atom": true, "number": true, "variable": true, "string": true, "regexp": true, "this": true, "jsonld-keyword": true}; function JSLexical(indented, column, type, align, prev, info) { this.indented = indented; this.column = column; this.type = type; this.prev = prev; this.info = info; if (align != null) this.align = align; } function inScope(state, varname) { for (var v = state.localVars; v; v = v.next) if (v.name == varname) return true; for (var cx = state.context; cx; cx = cx.prev) { for (var v = cx.vars; v; v = v.next) if (v.name == varname) return true; } } function parseJS(state, style, type, content, stream) { var cc = state.cc; // Communicate our context to the combinators. // (Less wasteful than consing up a hundred closures on every call.) cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; cx.style = style; if (!state.lexical.hasOwnProperty("align")) state.lexical.align = true; while(true) { var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement; if (combinator(type, content)) { while(cc.length && cc[cc.length - 1].lex) cc.pop()(); if (cx.marked) return cx.marked; if (type == "variable" && inScope(state, content)) return "variable-2"; return style; } } } // Combinator utils var cx = {state: null, column: null, marked: null, cc: null}; function pass() { for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]); } function cont() { pass.apply(null, arguments); return true; } function register(varname) { function inList(list) { for (var v = list; v; v = v.next) if (v.name == varname) return true; return false; } var state = cx.state; cx.marked = "def"; if (state.context) { if (inList(state.localVars)) return; state.localVars = {name: varname, next: state.localVars}; } else { if (inList(state.globalVars)) return; if (parserConfig.globalVars) state.globalVars = {name: varname, next: state.globalVars}; } } // Combinators var defaultVars = {name: "this", next: {name: "arguments"}}; function pushcontext() { cx.state.context = {prev: cx.state.context, vars: cx.state.localVars}; cx.state.localVars = defaultVars; } function popcontext() { cx.state.localVars = cx.state.context.vars; cx.state.context = cx.state.context.prev; } function pushlex(type, info) { var result = function() { var state = cx.state, indent = state.indented; if (state.lexical.type == "stat") indent = state.lexical.indented; else for (var outer = state.lexical; outer && outer.type == ")" && outer.align; outer = outer.prev) indent = outer.indented; state.lexical = new JSLexical(indent, cx.stream.column(), type, null, state.lexical, info); }; result.lex = true; return result; } function poplex() { var state = cx.state; if (state.lexical.prev) { if (state.lexical.type == ")") state.indented = state.lexical.indented; state.lexical = state.lexical.prev; } } poplex.lex = true; function expect(wanted) { function exp(type) { if (type == wanted) return cont(); else if (wanted == ";") return pass(); else return cont(exp); }; return exp; } function statement(type, value) { if (type == "var") return cont(pushlex("vardef", value.length), vardef, expect(";"), poplex); if (type == "keyword a") return cont(pushlex("form"), expression, statement, poplex); if (type == "keyword b") return cont(pushlex("form"), statement, poplex); if (type == "{") return cont(pushlex("}"), block, poplex); if (type == ";") return cont(); if (type == "if") { if (cx.state.lexical.info == "else" && cx.state.cc[cx.state.cc.length - 1] == poplex) cx.state.cc.pop()(); return cont(pushlex("form"), expression, statement, poplex, maybeelse); } if (type == "function") return cont(functiondef); if (type == "for") return cont(pushlex("form"), forspec, statement, poplex); if (type == "variable") return cont(pushlex("stat"), maybelabel); if (type == "switch") return cont(pushlex("form"), expression, pushlex("}", "switch"), expect("{"), block, poplex, poplex); if (type == "case") return cont(expression, expect(":")); if (type == "default") return cont(expect(":")); if (type == "catch") return cont(pushlex("form"), pushcontext, expect("("), funarg, expect(")"), statement, poplex, popcontext); if (type == "class") return cont(pushlex("form"), className, poplex); if (type == "export") return cont(pushlex("stat"), afterExport, poplex); if (type == "import") return cont(pushlex("stat"), afterImport, poplex); if (type == "module") return cont(pushlex("form"), pattern, pushlex("}"), expect("{"), block, poplex, poplex) if (type == "async") return cont(statement) return pass(pushlex("stat"), expression, expect(";"), poplex); } function expression(type) { return expressionInner(type, false); } function expressionNoComma(type) { return expressionInner(type, true); } function expressionInner(type, noComma) { if (cx.state.fatArrowAt == cx.stream.start) { var body = noComma ? arrowBodyNoComma : arrowBody; if (type == "(") return cont(pushcontext, pushlex(")"), commasep(pattern, ")"), poplex, expect("=>"), body, popcontext); else if (type == "variable") return pass(pushcontext, pattern, expect("=>"), body, popcontext); } var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma; if (atomicTypes.hasOwnProperty(type)) return cont(maybeop); if (type == "function") return cont(functiondef, maybeop); if (type == "keyword c" || type == "async") return cont(noComma ? maybeexpressionNoComma : maybeexpression); if (type == "(") return cont(pushlex(")"), maybeexpression, expect(")"), poplex, maybeop); if (type == "operator" || type == "spread") return cont(noComma ? expressionNoComma : expression); if (type == "[") return cont(pushlex("]"), arrayLiteral, poplex, maybeop); if (type == "{") return contCommasep(objprop, "}", null, maybeop); if (type == "quasi") return pass(quasi, maybeop); if (type == "new") return cont(maybeTarget(noComma)); return cont(); } function maybeexpression(type) { if (type.match(/[;\}\)\],]/)) return pass(); return pass(expression); } function maybeexpressionNoComma(type) { if (type.match(/[;\}\)\],]/)) return pass(); return pass(expressionNoComma); } function maybeoperatorComma(type, value) { if (type == ",") return cont(expression); return maybeoperatorNoComma(type, value, false); } function maybeoperatorNoComma(type, value, noComma) { var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma; var expr = noComma == false ? expression : expressionNoComma; if (type == "=>") return cont(pushcontext, noComma ? arrowBodyNoComma : arrowBody, popcontext); if (type == "operator") { if (/\+\+|--/.test(value)) return cont(me); if (value == "?") return cont(expression, expect(":"), expr); return cont(expr); } if (type == "quasi") { return pass(quasi, me); } if (type == ";") return; if (type == "(") return contCommasep(expressionNoComma, ")", "call", me); if (type == ".") return cont(property, me); if (type == "[") return cont(pushlex("]"), maybeexpression, expect("]"), poplex, me); } function quasi(type, value) { if (type != "quasi") return pass(); if (value.slice(value.length - 2) != "${") return cont(quasi); return cont(expression, continueQuasi); } function continueQuasi(type) { if (type == "}") { cx.marked = "string-2"; cx.state.tokenize = tokenQuasi; return cont(quasi); } } function arrowBody(type) { findFatArrow(cx.stream, cx.state); return pass(type == "{" ? statement : expression); } function arrowBodyNoComma(type) { findFatArrow(cx.stream, cx.state); return pass(type == "{" ? statement : expressionNoComma); } function maybeTarget(noComma) { return function(type) { if (type == ".") return cont(noComma ? targetNoComma : target); else return pass(noComma ? expressionNoComma : expression); }; } function target(_, value) { if (value == "target") { cx.marked = "keyword"; return cont(maybeoperatorComma); } } function targetNoComma(_, value) { if (value == "target") { cx.marked = "keyword"; return cont(maybeoperatorNoComma); } } function maybelabel(type) { if (type == ":") return cont(poplex, statement); return pass(maybeoperatorComma, expect(";"), poplex); } function property(type) { if (type == "variable") {cx.marked = "property"; return cont();} } function objprop(type, value) { if (type == "async") { cx.marked = "property"; return cont(objprop); } else if (type == "variable" || cx.style == "keyword") { cx.marked = "property"; if (value == "get" || value == "set") return cont(getterSetter); return cont(afterprop); } else if (type == "number" || type == "string") { cx.marked = jsonldMode ? "property" : (cx.style + " property"); return cont(afterprop); } else if (type == "jsonld-keyword") { return cont(afterprop); } else if (type == "modifier") { return cont(objprop) } else if (type == "[") { return cont(expression, expect("]"), afterprop); } else if (type == "spread") { return cont(expression); } else if (type == ":") { return pass(afterprop) } } function getterSetter(type) { if (type != "variable") return pass(afterprop); cx.marked = "property"; return cont(functiondef); } function afterprop(type) { if (type == ":") return cont(expressionNoComma); if (type == "(") return pass(functiondef); } function commasep(what, end) { function proceed(type, value) { if (type == ",") { var lex = cx.state.lexical; if (lex.info == "call") lex.pos = (lex.pos || 0) + 1; return cont(function(type, value) { if (type == end || value == end) return pass() return pass(what) }, proceed); } if (type == end || value == end) return cont(); return cont(expect(end)); } return function(type, value) { if (type == end || value == end) return cont(); return pass(what, proceed); }; } function contCommasep(what, end, info) { for (var i = 3; i < arguments.length; i++) cx.cc.push(arguments[i]); return cont(pushlex(end, info), commasep(what, end), poplex); } function block(type) { if (type == "}") return cont(); return pass(statement, block); } function maybetype(type) { if (isTS && type == ":") return cont(typeexpr); } function maybedefault(_, value) { if (value == "=") return cont(expressionNoComma); } function typeexpr(type) { if (type == "variable") {cx.marked = "variable-3"; return cont(afterType);} if (type == "{") return cont(commasep(typeprop, "}")) if (type == "(") return cont(commasep(typearg, ")"), maybeReturnType) } function maybeReturnType(type) { if (type == "=>") return cont(typeexpr) } function typeprop(type) { if (type == "variable" || cx.style == "keyword") { cx.marked = "property" return cont(typeprop) } else if (type == ":") { return cont(typeexpr) } } function typearg(type) { if (type == "variable") return cont(typearg) else if (type == ":") return cont(typeexpr) } function afterType(type, value) { if (value == "<") return cont(commasep(typeexpr, ">"), afterType) if (type == "[") return cont(expect("]"), afterType) } function vardef() { return pass(pattern, maybetype, maybeAssign, vardefCont); } function pattern(type, value) { if (type == "modifier") return cont(pattern) if (type == "variable") { register(value); return cont(); } if (type == "spread") return cont(pattern); if (type == "[") return contCommasep(pattern, "]"); if (type == "{") return contCommasep(proppattern, "}"); } function proppattern(type, value) { if (type == "variable" && !cx.stream.match(/^\s*:/, false)) { register(value); return cont(maybeAssign); } if (type == "variable") cx.marked = "property"; if (type == "spread") return cont(pattern); if (type == "}") return pass(); return cont(expect(":"), pattern, maybeAssign); } function maybeAssign(_type, value) { if (value == "=") return cont(expressionNoComma); } function vardefCont(type) { if (type == ",") return cont(vardef); } function maybeelse(type, value) { if (type == "keyword b" && value == "else") return cont(pushlex("form", "else"), statement, poplex); } function forspec(type) { if (type == "(") return cont(pushlex(")"), forspec1, expect(")"), poplex); } function forspec1(type) { if (type == "var") return cont(vardef, expect(";"), forspec2); if (type == ";") return cont(forspec2); if (type == "variable") return cont(formaybeinof); return pass(expression, expect(";"), forspec2); } function formaybeinof(_type, value) { if (value == "in" || value == "of") { cx.marked = "keyword"; return cont(expression); } return cont(maybeoperatorComma, forspec2); } function forspec2(type, value) { if (type == ";") return cont(forspec3); if (value == "in" || value == "of") { cx.marked = "keyword"; return cont(expression); } return pass(expression, expect(";"), forspec3); } function forspec3(type) { if (type != ")") cont(expression); } function functiondef(type, value) { if (value == "*") {cx.marked = "keyword"; return cont(functiondef);} if (type == "variable") {register(value); return cont(functiondef);} if (type == "(") return cont(pushcontext, pushlex(")"), commasep(funarg, ")"), poplex, maybetype, statement, popcontext); } function funarg(type) { if (type == "spread") return cont(funarg); return pass(pattern, maybetype, maybedefault); } function className(type, value) { if (type == "variable") {register(value); return cont(classNameAfter);} } function classNameAfter(type, value) { if (value == "extends") return cont(isTS ? typeexpr : expression, classNameAfter); if (type == "{") return cont(pushlex("}"), classBody, poplex); } function classBody(type, value) { if (type == "variable" || cx.style == "keyword") { if (value == "static") { cx.marked = "keyword"; return cont(classBody); } cx.marked = "property"; if (value == "get" || value == "set") return cont(classGetterSetter, functiondef, classBody); return cont(functiondef, classBody); } if (value == "*") { cx.marked = "keyword"; return cont(classBody); } if (type == ";") return cont(classBody); if (type == "}") return cont(); } function classGetterSetter(type) { if (type != "variable") return pass(); cx.marked = "property"; return cont(); } function afterExport(_type, value) { if (value == "*") { cx.marked = "keyword"; return cont(maybeFrom, expect(";")); } if (value == "default") { cx.marked = "keyword"; return cont(expression, expect(";")); } return pass(statement); } function afterImport(type) { if (type == "string") return cont(); return pass(importSpec, maybeFrom); } function importSpec(type, value) { if (type == "{") return contCommasep(importSpec, "}"); if (type == "variable") register(value); if (value == "*") cx.marked = "keyword"; return cont(maybeAs); } function maybeAs(_type, value) { if (value == "as") { cx.marked = "keyword"; return cont(importSpec); } } function maybeFrom(_type, value) { if (value == "from") { cx.marked = "keyword"; return cont(expression); } } function arrayLiteral(type) { if (type == "]") return cont(); return pass(commasep(expressionNoComma, "]")); } function isContinuedStatement(state, textAfter) { return state.lastType == "operator" || state.lastType == "," || isOperatorChar.test(textAfter.charAt(0)) || /[,.]/.test(textAfter.charAt(0)); } // Interface return { startState: function(basecolumn) { var state = { tokenize: tokenBase, lastType: "sof", cc: [], lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, "block", false), localVars: parserConfig.localVars, context: parserConfig.localVars && {vars: parserConfig.localVars}, indented: basecolumn || 0 }; if (parserConfig.globalVars && typeof parserConfig.globalVars == "object") state.globalVars = parserConfig.globalVars; return state; }, token: function(stream, state) { if (stream.sol()) { if (!state.lexical.hasOwnProperty("align")) state.lexical.align = false; state.indented = stream.indentation(); findFatArrow(stream, state); } if (state.tokenize != tokenComment && stream.eatSpace()) return null; var style = state.tokenize(stream, state); if (type == "comment") return style; state.lastType = type == "operator" && (content == "++" || content == "--") ? "incdec" : type; return parseJS(state, style, type, content, stream); }, indent: function(state, textAfter) { if (state.tokenize == tokenComment) return CodeMirror.Pass; if (state.tokenize != tokenBase) return 0; var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical; // Kludge to prevent 'maybelse' from blocking lexical scope pops if (!/^\s*else\b/.test(textAfter)) for (var i = state.cc.length - 1; i >= 0; --i) { var c = state.cc[i]; if (c == poplex) lexical = lexical.prev; else if (c != maybeelse) break; } if (lexical.type == "stat" && firstChar == "}") lexical = lexical.prev; if (statementIndent && lexical.type == ")" && lexical.prev.type == "stat") lexical = lexical.prev; var type = lexical.type, closing = firstChar == type; if (type == "vardef") return lexical.indented + (state.lastType == "operator" || state.lastType == "," ? lexical.info + 1 : 0); else if (type == "form" && firstChar == "{") return lexical.indented; else if (type == "form") return lexical.indented + indentUnit; else if (type == "stat") return lexical.indented + (isContinuedStatement(state, textAfter) ? statementIndent || indentUnit : 0); else if (lexical.info == "switch" && !closing && parserConfig.doubleIndentSwitch != false) return lexical.indented + (/^(?:case|default)\b/.test(textAfter) ? indentUnit : 2 * indentUnit); else if (lexical.align) return lexical.column + (closing ? 0 : 1); else return lexical.indented + (closing ? 0 : indentUnit); }, electricInput: /^\s*(?:case .*?:|default:|\{|\})$/, blockCommentStart: jsonMode ? null : "/*", blockCommentEnd: jsonMode ? null : "*/", lineComment: jsonMode ? null : "//", fold: "brace", closeBrackets: "()[]{}''\"\"``", helperType: jsonMode ? "json" : "javascript", jsonldMode: jsonldMode, jsonMode: jsonMode, expressionAllowed: expressionAllowed, skipExpression: function(state) { var top = state.cc[state.cc.length - 1] if (top == expression || top == expressionNoComma) state.cc.pop() } }; }); CodeMirror.registerHelper("wordChars", "javascript", /[\w$]/); CodeMirror.defineMIME("text/javascript", "javascript"); CodeMirror.defineMIME("text/ecmascript", "javascript"); CodeMirror.defineMIME("application/javascript", "javascript"); CodeMirror.defineMIME("application/x-javascript", "javascript"); CodeMirror.defineMIME("application/ecmascript", "javascript"); CodeMirror.defineMIME("application/json", {name: "javascript", json: true}); CodeMirror.defineMIME("application/x-json", {name: "javascript", json: true}); CodeMirror.defineMIME("application/ld+json", {name: "javascript", jsonld: true}); CodeMirror.defineMIME("text/typescript", { name: "javascript", typescript: true }); CodeMirror.defineMIME("application/typescript", { name: "javascript", typescript: true }); }); plugins/file-manager-advanced/application/library/codemirror/mode/javascript/json-ld.html000064400000004146147176754550026013 0ustar00 CodeMirror: JSON-LD mode

JSON-LD mode

This is a specialization of the JavaScript mode.

plugins/file-manager-advanced/application/library/codemirror/mode/javascript/test.js000064400000017221147176754550025072 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function() { var mode = CodeMirror.getMode({indentUnit: 2}, "javascript"); function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } MT("locals", "[keyword function] [def foo]([def a], [def b]) { [keyword var] [def c] [operator =] [number 10]; [keyword return] [variable-2 a] [operator +] [variable-2 c] [operator +] [variable d]; }"); MT("comma-and-binop", "[keyword function](){ [keyword var] [def x] [operator =] [number 1] [operator +] [number 2], [def y]; }"); MT("destructuring", "([keyword function]([def a], [[[def b], [def c] ]]) {", " [keyword let] {[def d], [property foo]: [def c][operator =][number 10], [def x]} [operator =] [variable foo]([variable-2 a]);", " [[[variable-2 c], [variable y] ]] [operator =] [variable-2 c];", "})();"); MT("destructure_trailing_comma", "[keyword let] {[def a], [def b],} [operator =] [variable foo];", "[keyword let] [def c];"); // Parser still in good state? MT("class_body", "[keyword class] [def Foo] {", " [property constructor]() {}", " [property sayName]() {", " [keyword return] [string-2 `foo${][variable foo][string-2 }oo`];", " }", "}"); MT("class", "[keyword class] [def Point] [keyword extends] [variable SuperThing] {", " [property get] [property prop]() { [keyword return] [number 24]; }", " [property constructor]([def x], [def y]) {", " [keyword super]([string 'something']);", " [keyword this].[property x] [operator =] [variable-2 x];", " }", "}"); MT("import", "[keyword function] [def foo]() {", " [keyword import] [def $] [keyword from] [string 'jquery'];", " [keyword import] { [def encrypt], [def decrypt] } [keyword from] [string 'crypto'];", "}"); MT("import_trailing_comma", "[keyword import] {[def foo], [def bar],} [keyword from] [string 'baz']") MT("const", "[keyword function] [def f]() {", " [keyword const] [[ [def a], [def b] ]] [operator =] [[ [number 1], [number 2] ]];", "}"); MT("for/of", "[keyword for]([keyword let] [def of] [keyword of] [variable something]) {}"); MT("generator", "[keyword function*] [def repeat]([def n]) {", " [keyword for]([keyword var] [def i] [operator =] [number 0]; [variable-2 i] [operator <] [variable-2 n]; [operator ++][variable-2 i])", " [keyword yield] [variable-2 i];", "}"); MT("quotedStringAddition", "[keyword let] [def f] [operator =] [variable a] [operator +] [string 'fatarrow'] [operator +] [variable c];"); MT("quotedFatArrow", "[keyword let] [def f] [operator =] [variable a] [operator +] [string '=>'] [operator +] [variable c];"); MT("fatArrow", "[variable array].[property filter]([def a] [operator =>] [variable-2 a] [operator +] [number 1]);", "[variable a];", // No longer in scope "[keyword let] [def f] [operator =] ([[ [def a], [def b] ]], [def c]) [operator =>] [variable-2 a] [operator +] [variable-2 c];", "[variable c];"); MT("spread", "[keyword function] [def f]([def a], [meta ...][def b]) {", " [variable something]([variable-2 a], [meta ...][variable-2 b]);", "}"); MT("quasi", "[variable re][string-2 `fofdlakj${][variable x] [operator +] ([variable re][string-2 `foo`]) [operator +] [number 1][string-2 }fdsa`] [operator +] [number 2]"); MT("quasi_no_function", "[variable x] [operator =] [string-2 `fofdlakj${][variable x] [operator +] [string-2 `foo`] [operator +] [number 1][string-2 }fdsa`] [operator +] [number 2]"); MT("indent_statement", "[keyword var] [def x] [operator =] [number 10]", "[variable x] [operator +=] [variable y] [operator +]", " [atom Infinity]", "[keyword debugger];"); MT("indent_if", "[keyword if] ([number 1])", " [keyword break];", "[keyword else] [keyword if] ([number 2])", " [keyword continue];", "[keyword else]", " [number 10];", "[keyword if] ([number 1]) {", " [keyword break];", "} [keyword else] [keyword if] ([number 2]) {", " [keyword continue];", "} [keyword else] {", " [number 10];", "}"); MT("indent_for", "[keyword for] ([keyword var] [def i] [operator =] [number 0];", " [variable i] [operator <] [number 100];", " [variable i][operator ++])", " [variable doSomething]([variable i]);", "[keyword debugger];"); MT("indent_c_style", "[keyword function] [def foo]()", "{", " [keyword debugger];", "}"); MT("indent_else", "[keyword for] (;;)", " [keyword if] ([variable foo])", " [keyword if] ([variable bar])", " [number 1];", " [keyword else]", " [number 2];", " [keyword else]", " [number 3];"); MT("indent_funarg", "[variable foo]([number 10000],", " [keyword function]([def a]) {", " [keyword debugger];", "};"); MT("indent_below_if", "[keyword for] (;;)", " [keyword if] ([variable foo])", " [number 1];", "[number 2];"); MT("multilinestring", "[keyword var] [def x] [operator =] [string 'foo\\]", "[string bar'];"); MT("scary_regexp", "[string-2 /foo[[/]]bar/];"); MT("indent_strange_array", "[keyword var] [def x] [operator =] [[", " [number 1],,", " [number 2],", "]];", "[number 10];"); MT("param_default", "[keyword function] [def foo]([def x] [operator =] [string-2 `foo${][number 10][string-2 }bar`]) {", " [keyword return] [variable-2 x];", "}"); MT("new_target", "[keyword function] [def F]([def target]) {", " [keyword if] ([variable-2 target] [operator &&] [keyword new].[keyword target].[property name]) {", " [keyword return] [keyword new]", " .[keyword target];", " }", "}"); var ts_mode = CodeMirror.getMode({indentUnit: 2}, "application/typescript") function TS(name) { test.mode(name, ts_mode, Array.prototype.slice.call(arguments, 1)) } TS("extend_type", "[keyword class] [def Foo] [keyword extends] [variable-3 Some][operator <][variable-3 Type][operator >] {}") TS("arrow_type", "[keyword let] [def x]: ([variable arg]: [variable-3 Type]) [operator =>] [variable-3 ReturnType]") var jsonld_mode = CodeMirror.getMode( {indentUnit: 2}, {name: "javascript", jsonld: true} ); function LD(name) { test.mode(name, jsonld_mode, Array.prototype.slice.call(arguments, 1)); } LD("json_ld_keywords", '{', ' [meta "@context"]: {', ' [meta "@base"]: [string "http://example.com"],', ' [meta "@vocab"]: [string "http://xmlns.com/foaf/0.1/"],', ' [property "likesFlavor"]: {', ' [meta "@container"]: [meta "@list"]', ' [meta "@reverse"]: [string "@beFavoriteOf"]', ' },', ' [property "nick"]: { [meta "@container"]: [meta "@set"] },', ' [property "nick"]: { [meta "@container"]: [meta "@index"] }', ' },', ' [meta "@graph"]: [[ {', ' [meta "@id"]: [string "http://dbpedia.org/resource/John_Lennon"],', ' [property "name"]: [string "John Lennon"],', ' [property "modified"]: {', ' [meta "@value"]: [string "2010-05-29T14:17:39+02:00"],', ' [meta "@type"]: [string "http://www.w3.org/2001/XMLSchema#dateTime"]', ' }', ' } ]]', '}'); LD("json_ld_fake", '{', ' [property "@fake"]: [string "@fake"],', ' [property "@contextual"]: [string "@identifier"],', ' [property "user@domain.com"]: [string "@graphical"],', ' [property "@ID"]: [string "@@ID"]', '}'); })(); plugins/file-manager-advanced/application/library/codemirror/mode/javascript/typescript.html000064400000003013147176754550026643 0ustar00 CodeMirror: TypeScript mode

TypeScript mode

This is a specialization of the JavaScript mode.

plugins/file-manager-advanced/application/library/codemirror/mode/jinja2/index.html000064400000003333147176754550024560 0ustar00 CodeMirror: Jinja2 mode

Jinja2 mode

plugins/file-manager-advanced/application/library/codemirror/mode/jinja2/jinja2.js000064400000010274147176754550024300 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("jinja2", function() { var keywords = ["and", "as", "block", "endblock", "by", "cycle", "debug", "else", "elif", "extends", "filter", "endfilter", "firstof", "for", "endfor", "if", "endif", "ifchanged", "endifchanged", "ifequal", "endifequal", "ifnotequal", "endifnotequal", "in", "include", "load", "not", "now", "or", "parsed", "regroup", "reversed", "spaceless", "endspaceless", "ssi", "templatetag", "openblock", "closeblock", "openvariable", "closevariable", "openbrace", "closebrace", "opencomment", "closecomment", "widthratio", "url", "with", "endwith", "get_current_language", "trans", "endtrans", "noop", "blocktrans", "endblocktrans", "get_available_languages", "get_current_language_bidi", "plural"], operator = /^[+\-*&%=<>!?|~^]/, sign = /^[:\[\(\{]/, atom = ["true", "false"], number = /^(\d[+\-\*\/])?\d+(\.\d+)?/; keywords = new RegExp("((" + keywords.join(")|(") + "))\\b"); atom = new RegExp("((" + atom.join(")|(") + "))\\b"); function tokenBase (stream, state) { var ch = stream.peek(); //Comment if (state.incomment) { if(!stream.skipTo("#}")) { stream.skipToEnd(); } else { stream.eatWhile(/\#|}/); state.incomment = false; } return "comment"; //Tag } else if (state.intag) { //After operator if(state.operator) { state.operator = false; if(stream.match(atom)) { return "atom"; } if(stream.match(number)) { return "number"; } } //After sign if(state.sign) { state.sign = false; if(stream.match(atom)) { return "atom"; } if(stream.match(number)) { return "number"; } } if(state.instring) { if(ch == state.instring) { state.instring = false; } stream.next(); return "string"; } else if(ch == "'" || ch == '"') { state.instring = ch; stream.next(); return "string"; } else if(stream.match(state.intag + "}") || stream.eat("-") && stream.match(state.intag + "}")) { state.intag = false; return "tag"; } else if(stream.match(operator)) { state.operator = true; return "operator"; } else if(stream.match(sign)) { state.sign = true; } else { if(stream.eat(" ") || stream.sol()) { if(stream.match(keywords)) { return "keyword"; } if(stream.match(atom)) { return "atom"; } if(stream.match(number)) { return "number"; } if(stream.sol()) { stream.next(); } } else { stream.next(); } } return "variable"; } else if (stream.eat("{")) { if (ch = stream.eat("#")) { state.incomment = true; if(!stream.skipTo("#}")) { stream.skipToEnd(); } else { stream.eatWhile(/\#|}/); state.incomment = false; } return "comment"; //Open tag } else if (ch = stream.eat(/\{|%/)) { //Cache close tag state.intag = ch; if(ch == "{") { state.intag = "}"; } stream.eat("-"); return "tag"; } } stream.next(); }; return { startState: function () { return {tokenize: tokenBase}; }, token: function (stream, state) { return state.tokenize(stream, state); } }; }); }); plugins/file-manager-advanced/application/library/codemirror/mode/jsx/index.html000064400000004552147176754550024213 0ustar00 CodeMirror: JSX mode

JSX mode

JSX Mode for React's JavaScript syntax extension.

MIME types defined: text/jsx, text/typescript-jsx.

plugins/file-manager-advanced/application/library/codemirror/mode/jsx/jsx.js000064400000012113147176754550023350 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror"), require("../xml/xml"), require("../javascript/javascript")) else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror", "../xml/xml", "../javascript/javascript"], mod) else // Plain browser env mod(CodeMirror) })(function(CodeMirror) { "use strict" // Depth means the amount of open braces in JS context, in XML // context 0 means not in tag, 1 means in tag, and 2 means in tag // and js block comment. function Context(state, mode, depth, prev) { this.state = state; this.mode = mode; this.depth = depth; this.prev = prev } function copyContext(context) { return new Context(CodeMirror.copyState(context.mode, context.state), context.mode, context.depth, context.prev && copyContext(context.prev)) } CodeMirror.defineMode("jsx", function(config, modeConfig) { var xmlMode = CodeMirror.getMode(config, {name: "xml", allowMissing: true, multilineTagIndentPastTag: false}) var jsMode = CodeMirror.getMode(config, modeConfig && modeConfig.base || "javascript") function flatXMLIndent(state) { var tagName = state.tagName state.tagName = null var result = xmlMode.indent(state, "") state.tagName = tagName return result } function token(stream, state) { if (state.context.mode == xmlMode) return xmlToken(stream, state, state.context) else return jsToken(stream, state, state.context) } function xmlToken(stream, state, cx) { if (cx.depth == 2) { // Inside a JS /* */ comment if (stream.match(/^.*?\*\//)) cx.depth = 1 else stream.skipToEnd() return "comment" } if (stream.peek() == "{") { xmlMode.skipAttribute(cx.state) var indent = flatXMLIndent(cx.state), xmlContext = cx.state.context // If JS starts on same line as tag if (xmlContext && stream.match(/^[^>]*>\s*$/, false)) { while (xmlContext.prev && !xmlContext.startOfLine) xmlContext = xmlContext.prev // If tag starts the line, use XML indentation level if (xmlContext.startOfLine) indent -= config.indentUnit // Else use JS indentation level else if (cx.prev.state.lexical) indent = cx.prev.state.lexical.indented // Else if inside of tag } else if (cx.depth == 1) { indent += config.indentUnit } state.context = new Context(CodeMirror.startState(jsMode, indent), jsMode, 0, state.context) return null } if (cx.depth == 1) { // Inside of tag if (stream.peek() == "<") { // Tag inside of tag xmlMode.skipAttribute(cx.state) state.context = new Context(CodeMirror.startState(xmlMode, flatXMLIndent(cx.state)), xmlMode, 0, state.context) return null } else if (stream.match("//")) { stream.skipToEnd() return "comment" } else if (stream.match("/*")) { cx.depth = 2 return token(stream, state) } } var style = xmlMode.token(stream, cx.state), cur = stream.current(), stop if (/\btag\b/.test(style)) { if (/>$/.test(cur)) { if (cx.state.context) cx.depth = 0 else state.context = state.context.prev } else if (/^ -1) { stream.backUp(cur.length - stop) } return style } function jsToken(stream, state, cx) { if (stream.peek() == "<" && jsMode.expressionAllowed(stream, cx.state)) { jsMode.skipExpression(cx.state) state.context = new Context(CodeMirror.startState(xmlMode, jsMode.indent(cx.state, "")), xmlMode, 0, state.context) return null } var style = jsMode.token(stream, cx.state) if (!style && cx.depth != null) { var cur = stream.current() if (cur == "{") { cx.depth++ } else if (cur == "}") { if (--cx.depth == 0) state.context = state.context.prev } } return style } return { startState: function() { return {context: new Context(CodeMirror.startState(jsMode), jsMode)} }, copyState: function(state) { return {context: copyContext(state.context)} }, token: token, indent: function(state, textAfter, fullLine) { return state.context.mode.indent(state.context.state, textAfter, fullLine) }, innerMode: function(state) { return state.context } } }, "xml", "javascript") CodeMirror.defineMIME("text/jsx", "jsx") CodeMirror.defineMIME("text/typescript-jsx", {name: "jsx", base: {name: "javascript", typescript: true}}) }); plugins/file-manager-advanced/application/library/codemirror/mode/jsx/test.js000064400000005626147176754550023536 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function() { var mode = CodeMirror.getMode({indentUnit: 2}, "jsx") function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)) } MT("selfclose", "[keyword var] [def x] [operator =] [bracket&tag <] [tag foo] [bracket&tag />] [operator +] [number 1];") MT("openclose", "([bracket&tag <][tag foo][bracket&tag >]hello [atom &][bracket&tag ][operator ++])") MT("attr", "([bracket&tag <][tag foo] [attribute abc]=[string 'value'][bracket&tag >]hello [atom &][bracket&tag ][operator ++])") MT("braced_attr", "([bracket&tag <][tag foo] [attribute abc]={[number 10]}[bracket&tag >]hello [atom &][bracket&tag ][operator ++])") MT("braced_text", "([bracket&tag <][tag foo][bracket&tag >]hello {[number 10]} [atom &][bracket&tag ][operator ++])") MT("nested_tag", "([bracket&tag <][tag foo][bracket&tag ><][tag bar][bracket&tag >][operator ++])") MT("nested_jsx", "[keyword return] (", " [bracket&tag <][tag foo][bracket&tag >]", " say {[number 1] [operator +] [bracket&tag <][tag bar] [attribute attr]={[number 10]}[bracket&tag />]}!", " [bracket&tag ][operator ++]", ")") MT("preserve_js_context", "[variable x] [operator =] [string-2 `quasi${][bracket&tag <][tag foo][bracket&tag />][string-2 }quoted`]") MT("line_comment", "([bracket&tag <][tag foo] [comment // hello]", " [bracket&tag >][operator ++])") MT("line_comment_not_in_tag", "([bracket&tag <][tag foo][bracket&tag >] // hello", " [bracket&tag ][operator ++])") MT("block_comment", "([bracket&tag <][tag foo] [comment /* hello]", "[comment line 2]", "[comment line 3 */] [bracket&tag >][operator ++])") MT("block_comment_not_in_tag", "([bracket&tag <][tag foo][bracket&tag >]/* hello", " line 2", " line 3 */ [bracket&tag ][operator ++])") MT("missing_attr", "([bracket&tag <][tag foo] [attribute selected][bracket&tag />][operator ++])") MT("indent_js", "([bracket&tag <][tag foo][bracket&tag >]", " [bracket&tag <][tag bar] [attribute baz]={[keyword function]() {", " [keyword return] [number 10]", " }}[bracket&tag />]", " [bracket&tag ])") MT("spread", "([bracket&tag <][tag foo] [attribute bar]={[meta ...][variable baz] [operator /][number 2]}[bracket&tag />])") MT("tag_attribute", "([bracket&tag <][tag foo] [attribute bar]=[bracket&tag <][tag foo][bracket&tag />/>][operator ++])") })() plugins/file-manager-advanced/application/library/codemirror/mode/julia/index.html000064400000004507147176754550024513 0ustar00 CodeMirror: Julia mode

Julia mode

MIME types defined: text/x-julia.

plugins/file-manager-advanced/application/library/codemirror/mode/julia/julia.js000064400000026246147176754550024164 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("julia", function(_conf, parserConf) { var ERRORCLASS = 'error'; function wordRegexp(words, end) { if (typeof end === 'undefined') { end = "\\b"; } return new RegExp("^((" + words.join(")|(") + "))" + end); } var octChar = "\\\\[0-7]{1,3}"; var hexChar = "\\\\x[A-Fa-f0-9]{1,2}"; var specialChar = "\\\\[abfnrtv0%?'\"\\\\]"; var singleChar = "([^\\u0027\\u005C\\uD800-\\uDFFF]|[\\uD800-\\uDFFF][\\uDC00-\\uDFFF])"; var operators = parserConf.operators || /^\.?[|&^\\%*+\-<>!=\/]=?|\?|~|:|\$|\.[<>]|<<=?|>>>?=?|\.[<>=]=|->?|\/\/|\bin\b(?!\()|[\u2208\u2209](?!\()/; var delimiters = parserConf.delimiters || /^[;,()[\]{}]/; var identifiers = parserConf.identifiers || /^[_A-Za-z\u00A1-\uFFFF][\w\u00A1-\uFFFF]*!*/; var charsList = [octChar, hexChar, specialChar, singleChar]; var blockOpeners = ["begin", "function", "type", "immutable", "let", "macro", "for", "while", "quote", "if", "else", "elseif", "try", "finally", "catch", "do"]; var blockClosers = ["end", "else", "elseif", "catch", "finally"]; var keywordList = ['if', 'else', 'elseif', 'while', 'for', 'begin', 'let', 'end', 'do', 'try', 'catch', 'finally', 'return', 'break', 'continue', 'global', 'local', 'const', 'export', 'import', 'importall', 'using', 'function', 'macro', 'module', 'baremodule', 'type', 'immutable', 'quote', 'typealias', 'abstract', 'bitstype']; var builtinList = ['true', 'false', 'nothing', 'NaN', 'Inf']; //var stringPrefixes = new RegExp("^[br]?('|\")") var stringPrefixes = /^(`|"{3}|([brv]?"))/; var chars = wordRegexp(charsList, "'"); var keywords = wordRegexp(keywordList); var builtins = wordRegexp(builtinList); var openers = wordRegexp(blockOpeners); var closers = wordRegexp(blockClosers); var macro = /^@[_A-Za-z][\w]*/; var symbol = /^:[_A-Za-z\u00A1-\uFFFF][\w\u00A1-\uFFFF]*!*/; var typeAnnotation = /^::[^,;"{()=$\s]+({[^}]*}+)*/; function inArray(state) { var ch = currentScope(state); if (ch == '[') { return true; } return false; } function currentScope(state) { if (state.scopes.length == 0) { return null; } return state.scopes[state.scopes.length - 1]; } // tokenizers function tokenBase(stream, state) { // Handle multiline comments if (stream.match(/^#=/, false)) { state.tokenize = tokenComment; return state.tokenize(stream, state); } // Handle scope changes var leavingExpr = state.leavingExpr; if (stream.sol()) { leavingExpr = false; } state.leavingExpr = false; if (leavingExpr) { if (stream.match(/^'+/)) { return 'operator'; } } if (stream.match(/^\.{2,3}/)) { return 'operator'; } if (stream.eatSpace()) { return null; } var ch = stream.peek(); // Handle single line comments if (ch === '#') { stream.skipToEnd(); return 'comment'; } if (ch === '[') { state.scopes.push('['); } if (ch === '(') { state.scopes.push('('); } var scope = currentScope(state); if (scope == '[' && ch === ']') { state.scopes.pop(); state.leavingExpr = true; } if (scope == '(' && ch === ')') { state.scopes.pop(); state.leavingExpr = true; } var match; if (!inArray(state) && (match=stream.match(openers, false))) { state.scopes.push(match); } if (!inArray(state) && stream.match(closers, false)) { state.scopes.pop(); } if (inArray(state)) { if (state.lastToken == 'end' && stream.match(/^:/)) { return 'operator'; } if (stream.match(/^end/)) { return 'number'; } } if (stream.match(/^=>/)) { return 'operator'; } // Handle Number Literals if (stream.match(/^[0-9\.]/, false)) { var imMatcher = RegExp(/^im\b/); var numberLiteral = false; // Floats if (stream.match(/^\d*\.(?!\.)\d*([Eef][\+\-]?\d+)?/i)) { numberLiteral = true; } if (stream.match(/^\d+\.(?!\.)\d*/)) { numberLiteral = true; } if (stream.match(/^\.\d+/)) { numberLiteral = true; } if (stream.match(/^0x\.[0-9a-f]+p[\+\-]?\d+/i)) { numberLiteral = true; } // Integers if (stream.match(/^0x[0-9a-f]+/i)) { numberLiteral = true; } // Hex if (stream.match(/^0b[01]+/i)) { numberLiteral = true; } // Binary if (stream.match(/^0o[0-7]+/i)) { numberLiteral = true; } // Octal if (stream.match(/^[1-9]\d*(e[\+\-]?\d+)?/)) { numberLiteral = true; } // Decimal // Zero by itself with no other piece of number. if (stream.match(/^0(?![\dx])/i)) { numberLiteral = true; } if (numberLiteral) { // Integer literals may be "long" stream.match(imMatcher); state.leavingExpr = true; return 'number'; } } if (stream.match(/^<:/)) { return 'operator'; } if (stream.match(typeAnnotation)) { return 'builtin'; } // Handle symbols if (!leavingExpr && stream.match(symbol) || stream.match(/:\./)) { return 'builtin'; } // Handle parametric types if (stream.match(/^{[^}]*}(?=\()/)) { return 'builtin'; } // Handle operators and Delimiters if (stream.match(operators)) { return 'operator'; } // Handle Chars if (stream.match(/^'/)) { state.tokenize = tokenChar; return state.tokenize(stream, state); } // Handle Strings if (stream.match(stringPrefixes)) { state.tokenize = tokenStringFactory(stream.current()); return state.tokenize(stream, state); } if (stream.match(macro)) { return 'meta'; } if (stream.match(delimiters)) { return null; } if (stream.match(keywords)) { return 'keyword'; } if (stream.match(builtins)) { return 'builtin'; } var isDefinition = state.isDefinition || state.lastToken == 'function' || state.lastToken == 'macro' || state.lastToken == 'type' || state.lastToken == 'immutable'; if (stream.match(identifiers)) { if (isDefinition) { if (stream.peek() === '.') { state.isDefinition = true; return 'variable'; } state.isDefinition = false; return 'def'; } if (stream.match(/^({[^}]*})*\(/, false)) { return callOrDef(stream, state); } state.leavingExpr = true; return 'variable'; } // Handle non-detected items stream.next(); return ERRORCLASS; } function callOrDef(stream, state) { var match = stream.match(/^(\(\s*)/); if (match) { if (state.firstParenPos < 0) state.firstParenPos = state.scopes.length; state.scopes.push('('); state.charsAdvanced += match[1].length; } if (currentScope(state) == '(' && stream.match(/^\)/)) { state.scopes.pop(); state.charsAdvanced += 1; if (state.scopes.length <= state.firstParenPos) { var isDefinition = stream.match(/^\s*?=(?!=)/, false); stream.backUp(state.charsAdvanced); state.firstParenPos = -1; state.charsAdvanced = 0; if (isDefinition) return 'def'; return 'builtin'; } } // Unfortunately javascript does not support multiline strings, so we have // to undo anything done upto here if a function call or definition splits // over two or more lines. if (stream.match(/^$/g, false)) { stream.backUp(state.charsAdvanced); while (state.scopes.length > state.firstParenPos) state.scopes.pop(); state.firstParenPos = -1; state.charsAdvanced = 0; return 'builtin'; } state.charsAdvanced += stream.match(/^([^()]*)/)[1].length; return callOrDef(stream, state); } function tokenComment(stream, state) { if (stream.match(/^#=/)) { state.weakScopes++; } if (!stream.match(/.*?(?=(#=|=#))/)) { stream.skipToEnd(); } if (stream.match(/^=#/)) { state.weakScopes--; if (state.weakScopes == 0) state.tokenize = tokenBase; } return 'comment'; } function tokenChar(stream, state) { var isChar = false, match; if (stream.match(chars)) { isChar = true; } else if (match = stream.match(/\\u([a-f0-9]{1,4})(?=')/i)) { var value = parseInt(match[1], 16); if (value <= 55295 || value >= 57344) { // (U+0,U+D7FF), (U+E000,U+FFFF) isChar = true; stream.next(); } } else if (match = stream.match(/\\U([A-Fa-f0-9]{5,8})(?=')/)) { var value = parseInt(match[1], 16); if (value <= 1114111) { // U+10FFFF isChar = true; stream.next(); } } if (isChar) { state.leavingExpr = true; state.tokenize = tokenBase; return 'string'; } if (!stream.match(/^[^']+(?=')/)) { stream.skipToEnd(); } if (stream.match(/^'/)) { state.tokenize = tokenBase; } return ERRORCLASS; } function tokenStringFactory(delimiter) { while ('bruv'.indexOf(delimiter.charAt(0).toLowerCase()) >= 0) { delimiter = delimiter.substr(1); } var OUTCLASS = 'string'; function tokenString(stream, state) { while (!stream.eol()) { stream.eatWhile(/[^"\\]/); if (stream.eat('\\')) { stream.next(); } else if (stream.match(delimiter)) { state.tokenize = tokenBase; state.leavingExpr = true; return OUTCLASS; } else { stream.eat(/["]/); } } return OUTCLASS; } tokenString.isString = true; return tokenString; } var external = { startState: function() { return { tokenize: tokenBase, scopes: [], weakScopes: 0, lastToken: null, leavingExpr: false, isDefinition: false, charsAdvanced: 0, firstParenPos: -1 }; }, token: function(stream, state) { var style = state.tokenize(stream, state); var current = stream.current(); if (current && style) { state.lastToken = current; } // Handle '.' connected identifiers if (current === '.') { style = stream.match(identifiers, false) || stream.match(macro, false) || stream.match(/\(/, false) ? 'operator' : ERRORCLASS; } return style; }, indent: function(state, textAfter) { var delta = 0; if (textAfter == "]" || textAfter == ")" || textAfter == "end" || textAfter == "else" || textAfter == "elseif" || textAfter == "catch" || textAfter == "finally") { delta = -1; } return (state.scopes.length + delta) * _conf.indentUnit; }, electricInput: /(end|else(if)?|catch|finally)$/, lineComment: "#", fold: "indent" }; return external; }); CodeMirror.defineMIME("text/x-julia", "julia"); }); plugins/file-manager-advanced/application/library/codemirror/mode/livescript/index.html000064400000023163147176754550025572 0ustar00 CodeMirror: LiveScript mode

LiveScript mode

MIME types defined: text/x-livescript.

The LiveScript mode was written by Kenneth Bentley.

plugins/file-manager-advanced/application/library/codemirror/mode/livescript/livescript.js000064400000016764147176754550026330 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE /** * Link to the project's GitHub page: * https://github.com/duralog/CodeMirror */ (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode('livescript', function(){ var tokenBase = function(stream, state) { var next_rule = state.next || "start"; if (next_rule) { state.next = state.next; var nr = Rules[next_rule]; if (nr.splice) { for (var i$ = 0; i$ < nr.length; ++i$) { var r = nr[i$]; if (r.regex && stream.match(r.regex)) { state.next = r.next || state.next; return r.token; } } stream.next(); return 'error'; } if (stream.match(r = Rules[next_rule])) { if (r.regex && stream.match(r.regex)) { state.next = r.next; return r.token; } else { stream.next(); return 'error'; } } } stream.next(); return 'error'; }; var external = { startState: function(){ return { next: 'start', lastToken: {style: null, indent: 0, content: ""} }; }, token: function(stream, state){ while (stream.pos == stream.start) var style = tokenBase(stream, state); state.lastToken = { style: style, indent: stream.indentation(), content: stream.current() }; return style.replace(/\./g, ' '); }, indent: function(state){ var indentation = state.lastToken.indent; if (state.lastToken.content.match(indenter)) { indentation += 2; } return indentation; } }; return external; }); var identifier = '(?![\\d\\s])[$\\w\\xAA-\\uFFDC](?:(?!\\s)[$\\w\\xAA-\\uFFDC]|-[A-Za-z])*'; var indenter = RegExp('(?:[({[=:]|[-~]>|\\b(?:e(?:lse|xport)|d(?:o|efault)|t(?:ry|hen)|finally|import(?:\\s*all)?|const|var|let|new|catch(?:\\s*' + identifier + ')?))\\s*$'); var keywordend = '(?![$\\w]|-[A-Za-z]|\\s*:(?![:=]))'; var stringfill = { token: 'string', regex: '.+' }; var Rules = { start: [ { token: 'comment.doc', regex: '/\\*', next: 'comment' }, { token: 'comment', regex: '#.*' }, { token: 'keyword', regex: '(?:t(?:h(?:is|row|en)|ry|ypeof!?)|c(?:on(?:tinue|st)|a(?:se|tch)|lass)|i(?:n(?:stanceof)?|mp(?:ort(?:\\s+all)?|lements)|[fs])|d(?:e(?:fault|lete|bugger)|o)|f(?:or(?:\\s+own)?|inally|unction)|s(?:uper|witch)|e(?:lse|x(?:tends|port)|val)|a(?:nd|rguments)|n(?:ew|ot)|un(?:less|til)|w(?:hile|ith)|o[fr]|return|break|let|var|loop)' + keywordend }, { token: 'constant.language', regex: '(?:true|false|yes|no|on|off|null|void|undefined)' + keywordend }, { token: 'invalid.illegal', regex: '(?:p(?:ackage|r(?:ivate|otected)|ublic)|i(?:mplements|nterface)|enum|static|yield)' + keywordend }, { token: 'language.support.class', regex: '(?:R(?:e(?:gExp|ferenceError)|angeError)|S(?:tring|yntaxError)|E(?:rror|valError)|Array|Boolean|Date|Function|Number|Object|TypeError|URIError)' + keywordend }, { token: 'language.support.function', regex: '(?:is(?:NaN|Finite)|parse(?:Int|Float)|Math|JSON|(?:en|de)codeURI(?:Component)?)' + keywordend }, { token: 'variable.language', regex: '(?:t(?:hat|il|o)|f(?:rom|allthrough)|it|by|e)' + keywordend }, { token: 'identifier', regex: identifier + '\\s*:(?![:=])' }, { token: 'variable', regex: identifier }, { token: 'keyword.operator', regex: '(?:\\.{3}|\\s+\\?)' }, { token: 'keyword.variable', regex: '(?:@+|::|\\.\\.)', next: 'key' }, { token: 'keyword.operator', regex: '\\.\\s*', next: 'key' }, { token: 'string', regex: '\\\\\\S[^\\s,;)}\\]]*' }, { token: 'string.doc', regex: '\'\'\'', next: 'qdoc' }, { token: 'string.doc', regex: '"""', next: 'qqdoc' }, { token: 'string', regex: '\'', next: 'qstring' }, { token: 'string', regex: '"', next: 'qqstring' }, { token: 'string', regex: '`', next: 'js' }, { token: 'string', regex: '<\\[', next: 'words' }, { token: 'string.regex', regex: '//', next: 'heregex' }, { token: 'string.regex', regex: '\\/(?:[^[\\/\\n\\\\]*(?:(?:\\\\.|\\[[^\\]\\n\\\\]*(?:\\\\.[^\\]\\n\\\\]*)*\\])[^[\\/\\n\\\\]*)*)\\/[gimy$]{0,4}', next: 'key' }, { token: 'constant.numeric', regex: '(?:0x[\\da-fA-F][\\da-fA-F_]*|(?:[2-9]|[12]\\d|3[0-6])r[\\da-zA-Z][\\da-zA-Z_]*|(?:\\d[\\d_]*(?:\\.\\d[\\d_]*)?|\\.\\d[\\d_]*)(?:e[+-]?\\d[\\d_]*)?[\\w$]*)' }, { token: 'lparen', regex: '[({[]' }, { token: 'rparen', regex: '[)}\\]]', next: 'key' }, { token: 'keyword.operator', regex: '\\S+' }, { token: 'text', regex: '\\s+' } ], heregex: [ { token: 'string.regex', regex: '.*?//[gimy$?]{0,4}', next: 'start' }, { token: 'string.regex', regex: '\\s*#{' }, { token: 'comment.regex', regex: '\\s+(?:#.*)?' }, { token: 'string.regex', regex: '\\S+' } ], key: [ { token: 'keyword.operator', regex: '[.?@!]+' }, { token: 'identifier', regex: identifier, next: 'start' }, { token: 'text', regex: '', next: 'start' } ], comment: [ { token: 'comment.doc', regex: '.*?\\*/', next: 'start' }, { token: 'comment.doc', regex: '.+' } ], qdoc: [ { token: 'string', regex: ".*?'''", next: 'key' }, stringfill ], qqdoc: [ { token: 'string', regex: '.*?"""', next: 'key' }, stringfill ], qstring: [ { token: 'string', regex: '[^\\\\\']*(?:\\\\.[^\\\\\']*)*\'', next: 'key' }, stringfill ], qqstring: [ { token: 'string', regex: '[^\\\\"]*(?:\\\\.[^\\\\"]*)*"', next: 'key' }, stringfill ], js: [ { token: 'string', regex: '[^\\\\`]*(?:\\\\.[^\\\\`]*)*`', next: 'key' }, stringfill ], words: [ { token: 'string', regex: '.*?\\]>', next: 'key' }, stringfill ] }; for (var idx in Rules) { var r = Rules[idx]; if (r.splice) { for (var i = 0, len = r.length; i < len; ++i) { var rr = r[i]; if (typeof rr.regex === 'string') { Rules[idx][i].regex = new RegExp('^' + rr.regex); } } } else if (typeof rr.regex === 'string') { Rules[idx].regex = new RegExp('^' + r.regex); } } CodeMirror.defineMIME('text/x-livescript', 'livescript'); }); plugins/file-manager-advanced/application/library/codemirror/mode/lua/index.html000064400000004031147176754550024160 0ustar00 CodeMirror: Lua mode

Lua mode

Loosely based on Franciszek Wawrzak's CodeMirror 1 mode. One configuration parameter is supported, specials, to which you can provide an array of strings to have those identifiers highlighted with the lua-special style.

MIME types defined: text/x-lua.

plugins/file-manager-advanced/application/library/codemirror/mode/lua/lua.js000064400000013476147176754550023317 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE // LUA mode. Ported to CodeMirror 2 from Franciszek Wawrzak's // CodeMirror 1 mode. // highlights keywords, strings, comments (no leveling supported! ("[==[")), tokens, basic indenting (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("lua", function(config, parserConfig) { var indentUnit = config.indentUnit; function prefixRE(words) { return new RegExp("^(?:" + words.join("|") + ")", "i"); } function wordRE(words) { return new RegExp("^(?:" + words.join("|") + ")$", "i"); } var specials = wordRE(parserConfig.specials || []); // long list of standard functions from lua manual var builtins = wordRE([ "_G","_VERSION","assert","collectgarbage","dofile","error","getfenv","getmetatable","ipairs","load", "loadfile","loadstring","module","next","pairs","pcall","print","rawequal","rawget","rawset","require", "select","setfenv","setmetatable","tonumber","tostring","type","unpack","xpcall", "coroutine.create","coroutine.resume","coroutine.running","coroutine.status","coroutine.wrap","coroutine.yield", "debug.debug","debug.getfenv","debug.gethook","debug.getinfo","debug.getlocal","debug.getmetatable", "debug.getregistry","debug.getupvalue","debug.setfenv","debug.sethook","debug.setlocal","debug.setmetatable", "debug.setupvalue","debug.traceback", "close","flush","lines","read","seek","setvbuf","write", "io.close","io.flush","io.input","io.lines","io.open","io.output","io.popen","io.read","io.stderr","io.stdin", "io.stdout","io.tmpfile","io.type","io.write", "math.abs","math.acos","math.asin","math.atan","math.atan2","math.ceil","math.cos","math.cosh","math.deg", "math.exp","math.floor","math.fmod","math.frexp","math.huge","math.ldexp","math.log","math.log10","math.max", "math.min","math.modf","math.pi","math.pow","math.rad","math.random","math.randomseed","math.sin","math.sinh", "math.sqrt","math.tan","math.tanh", "os.clock","os.date","os.difftime","os.execute","os.exit","os.getenv","os.remove","os.rename","os.setlocale", "os.time","os.tmpname", "package.cpath","package.loaded","package.loaders","package.loadlib","package.path","package.preload", "package.seeall", "string.byte","string.char","string.dump","string.find","string.format","string.gmatch","string.gsub", "string.len","string.lower","string.match","string.rep","string.reverse","string.sub","string.upper", "table.concat","table.insert","table.maxn","table.remove","table.sort" ]); var keywords = wordRE(["and","break","elseif","false","nil","not","or","return", "true","function", "end", "if", "then", "else", "do", "while", "repeat", "until", "for", "in", "local" ]); var indentTokens = wordRE(["function", "if","repeat","do", "\\(", "{"]); var dedentTokens = wordRE(["end", "until", "\\)", "}"]); var dedentPartial = prefixRE(["end", "until", "\\)", "}", "else", "elseif"]); function readBracket(stream) { var level = 0; while (stream.eat("=")) ++level; stream.eat("["); return level; } function normal(stream, state) { var ch = stream.next(); if (ch == "-" && stream.eat("-")) { if (stream.eat("[") && stream.eat("[")) return (state.cur = bracketed(readBracket(stream), "comment"))(stream, state); stream.skipToEnd(); return "comment"; } if (ch == "\"" || ch == "'") return (state.cur = string(ch))(stream, state); if (ch == "[" && /[\[=]/.test(stream.peek())) return (state.cur = bracketed(readBracket(stream), "string"))(stream, state); if (/\d/.test(ch)) { stream.eatWhile(/[\w.%]/); return "number"; } if (/[\w_]/.test(ch)) { stream.eatWhile(/[\w\\\-_.]/); return "variable"; } return null; } function bracketed(level, style) { return function(stream, state) { var curlev = null, ch; while ((ch = stream.next()) != null) { if (curlev == null) {if (ch == "]") curlev = 0;} else if (ch == "=") ++curlev; else if (ch == "]" && curlev == level) { state.cur = normal; break; } else curlev = null; } return style; }; } function string(quote) { return function(stream, state) { var escaped = false, ch; while ((ch = stream.next()) != null) { if (ch == quote && !escaped) break; escaped = !escaped && ch == "\\"; } if (!escaped) state.cur = normal; return "string"; }; } return { startState: function(basecol) { return {basecol: basecol || 0, indentDepth: 0, cur: normal}; }, token: function(stream, state) { if (stream.eatSpace()) return null; var style = state.cur(stream, state); var word = stream.current(); if (style == "variable") { if (keywords.test(word)) style = "keyword"; else if (builtins.test(word)) style = "builtin"; else if (specials.test(word)) style = "variable-2"; } if ((style != "comment") && (style != "string")){ if (indentTokens.test(word)) ++state.indentDepth; else if (dedentTokens.test(word)) --state.indentDepth; } return style; }, indent: function(state, textAfter) { var closing = dedentPartial.test(textAfter); return state.basecol + indentUnit * (state.indentDepth - (closing ? 1 : 0)); }, lineComment: "--", blockCommentStart: "--[[", blockCommentEnd: "]]" }; }); CodeMirror.defineMIME("text/x-lua", "lua"); }); plugins/file-manager-advanced/application/library/codemirror/mode/markdown/index.html000064400000025315147176754550025231 0ustar00 CodeMirror: Markdown mode

Markdown mode

You might want to use the Github-Flavored Markdown mode instead, which adds support for fenced code blocks and a few other things.

Optionally depends on the XML mode for properly highlighted inline XML blocks.

MIME types defined: text/x-markdown.

Parsing/Highlighting Tests: normal, verbose.

plugins/file-manager-advanced/application/library/codemirror/mode/markdown/markdown.js000064400000062252147176754550025415 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror"), require("../xml/xml"), require("../meta")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror", "../xml/xml", "../meta"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("markdown", function(cmCfg, modeCfg) { var htmlMode = CodeMirror.getMode(cmCfg, "text/html"); var htmlModeMissing = htmlMode.name == "null" function getMode(name) { if (CodeMirror.findModeByName) { var found = CodeMirror.findModeByName(name); if (found) name = found.mime || found.mimes[0]; } var mode = CodeMirror.getMode(cmCfg, name); return mode.name == "null" ? null : mode; } // Should characters that affect highlighting be highlighted separate? // Does not include characters that will be output (such as `1.` and `-` for lists) if (modeCfg.highlightFormatting === undefined) modeCfg.highlightFormatting = false; // Maximum number of nested blockquotes. Set to 0 for infinite nesting. // Excess `>` will emit `error` token. if (modeCfg.maxBlockquoteDepth === undefined) modeCfg.maxBlockquoteDepth = 0; // Should underscores in words open/close em/strong? if (modeCfg.underscoresBreakWords === undefined) modeCfg.underscoresBreakWords = true; // Use `fencedCodeBlocks` to configure fenced code blocks. false to // disable, string to specify a precise regexp that the fence should // match, and true to allow three or more backticks or tildes (as // per CommonMark). // Turn on task lists? ("- [ ] " and "- [x] ") if (modeCfg.taskLists === undefined) modeCfg.taskLists = false; // Turn on strikethrough syntax if (modeCfg.strikethrough === undefined) modeCfg.strikethrough = false; // Allow token types to be overridden by user-provided token types. if (modeCfg.tokenTypeOverrides === undefined) modeCfg.tokenTypeOverrides = {}; var tokenTypes = { header: "header", code: "comment", quote: "quote", list1: "variable-2", list2: "variable-3", list3: "keyword", hr: "hr", image: "image", imageAltText: "image-alt-text", imageMarker: "image-marker", formatting: "formatting", linkInline: "link", linkEmail: "link", linkText: "link", linkHref: "string", em: "em", strong: "strong", strikethrough: "strikethrough" }; for (var tokenType in tokenTypes) { if (tokenTypes.hasOwnProperty(tokenType) && modeCfg.tokenTypeOverrides[tokenType]) { tokenTypes[tokenType] = modeCfg.tokenTypeOverrides[tokenType]; } } var hrRE = /^([*\-_])(?:\s*\1){2,}\s*$/ , ulRE = /^[*\-+]\s+/ , olRE = /^[0-9]+([.)])\s+/ , taskListRE = /^\[(x| )\](?=\s)/ // Must follow ulRE or olRE , atxHeaderRE = modeCfg.allowAtxHeaderWithoutSpace ? /^(#+)/ : /^(#+)(?: |$)/ , setextHeaderRE = /^ *(?:\={1,}|-{1,})\s*$/ , textRE = /^[^#!\[\]*_\\<>` "'(~]+/ , fencedCodeRE = new RegExp("^(" + (modeCfg.fencedCodeBlocks === true ? "~~~+|```+" : modeCfg.fencedCodeBlocks) + ")[ \\t]*([\\w+#\-]*)"); function switchInline(stream, state, f) { state.f = state.inline = f; return f(stream, state); } function switchBlock(stream, state, f) { state.f = state.block = f; return f(stream, state); } function lineIsEmpty(line) { return !line || !/\S/.test(line.string) } // Blocks function blankLine(state) { // Reset linkTitle state state.linkTitle = false; // Reset EM state state.em = false; // Reset STRONG state state.strong = false; // Reset strikethrough state state.strikethrough = false; // Reset state.quote state.quote = 0; // Reset state.indentedCode state.indentedCode = false; if (htmlModeMissing && state.f == htmlBlock) { state.f = inlineNormal; state.block = blockNormal; } // Reset state.trailingSpace state.trailingSpace = 0; state.trailingSpaceNewLine = false; // Mark this line as blank state.prevLine = state.thisLine state.thisLine = null return null; } function blockNormal(stream, state) { var sol = stream.sol(); var prevLineIsList = state.list !== false, prevLineIsIndentedCode = state.indentedCode; state.indentedCode = false; if (prevLineIsList) { if (state.indentationDiff >= 0) { // Continued list if (state.indentationDiff < 4) { // Only adjust indentation if *not* a code block state.indentation -= state.indentationDiff; } state.list = null; } else if (state.indentation > 0) { state.list = null; } else { // No longer a list state.list = false; } } var match = null; if (state.indentationDiff >= 4) { stream.skipToEnd(); if (prevLineIsIndentedCode || lineIsEmpty(state.prevLine)) { state.indentation -= 4; state.indentedCode = true; return tokenTypes.code; } else { return null; } } else if (stream.eatSpace()) { return null; } else if ((match = stream.match(atxHeaderRE)) && match[1].length <= 6) { state.header = match[1].length; if (modeCfg.highlightFormatting) state.formatting = "header"; state.f = state.inline; return getType(state); } else if (!lineIsEmpty(state.prevLine) && !state.quote && !prevLineIsList && !prevLineIsIndentedCode && (match = stream.match(setextHeaderRE))) { state.header = match[0].charAt(0) == '=' ? 1 : 2; if (modeCfg.highlightFormatting) state.formatting = "header"; state.f = state.inline; return getType(state); } else if (stream.eat('>')) { state.quote = sol ? 1 : state.quote + 1; if (modeCfg.highlightFormatting) state.formatting = "quote"; stream.eatSpace(); return getType(state); } else if (stream.peek() === '[') { return switchInline(stream, state, footnoteLink); } else if (stream.match(hrRE, true)) { state.hr = true; return tokenTypes.hr; } else if ((lineIsEmpty(state.prevLine) || prevLineIsList) && (stream.match(ulRE, false) || stream.match(olRE, false))) { var listType = null; if (stream.match(ulRE, true)) { listType = 'ul'; } else { stream.match(olRE, true); listType = 'ol'; } state.indentation = stream.column() + stream.current().length; state.list = true; // While this list item's marker's indentation // is less than the deepest list item's content's indentation, // pop the deepest list item indentation off the stack. while (state.listStack && stream.column() < state.listStack[state.listStack.length - 1]) { state.listStack.pop(); } // Add this list item's content's indentation to the stack state.listStack.push(state.indentation); if (modeCfg.taskLists && stream.match(taskListRE, false)) { state.taskList = true; } state.f = state.inline; if (modeCfg.highlightFormatting) state.formatting = ["list", "list-" + listType]; return getType(state); } else if (modeCfg.fencedCodeBlocks && (match = stream.match(fencedCodeRE, true))) { state.fencedChars = match[1] // try switching mode state.localMode = getMode(match[2]); if (state.localMode) state.localState = CodeMirror.startState(state.localMode); state.f = state.block = local; if (modeCfg.highlightFormatting) state.formatting = "code-block"; state.code = -1 return getType(state); } return switchInline(stream, state, state.inline); } function htmlBlock(stream, state) { var style = htmlMode.token(stream, state.htmlState); if (!htmlModeMissing) { var inner = CodeMirror.innerMode(htmlMode, state.htmlState) if ((inner.mode.name == "xml" && inner.state.tagStart === null && (!inner.state.context && inner.state.tokenize.isInText)) || (state.md_inside && stream.current().indexOf(">") > -1)) { state.f = inlineNormal; state.block = blockNormal; state.htmlState = null; } } return style; } function local(stream, state) { if (state.fencedChars && stream.match(state.fencedChars, false)) { state.localMode = state.localState = null; state.f = state.block = leavingLocal; return null; } else if (state.localMode) { return state.localMode.token(stream, state.localState); } else { stream.skipToEnd(); return tokenTypes.code; } } function leavingLocal(stream, state) { stream.match(state.fencedChars); state.block = blockNormal; state.f = inlineNormal; state.fencedChars = null; if (modeCfg.highlightFormatting) state.formatting = "code-block"; state.code = 1 var returnType = getType(state); state.code = 0 return returnType; } // Inline function getType(state) { var styles = []; if (state.formatting) { styles.push(tokenTypes.formatting); if (typeof state.formatting === "string") state.formatting = [state.formatting]; for (var i = 0; i < state.formatting.length; i++) { styles.push(tokenTypes.formatting + "-" + state.formatting[i]); if (state.formatting[i] === "header") { styles.push(tokenTypes.formatting + "-" + state.formatting[i] + "-" + state.header); } // Add `formatting-quote` and `formatting-quote-#` for blockquotes // Add `error` instead if the maximum blockquote nesting depth is passed if (state.formatting[i] === "quote") { if (!modeCfg.maxBlockquoteDepth || modeCfg.maxBlockquoteDepth >= state.quote) { styles.push(tokenTypes.formatting + "-" + state.formatting[i] + "-" + state.quote); } else { styles.push("error"); } } } } if (state.taskOpen) { styles.push("meta"); return styles.length ? styles.join(' ') : null; } if (state.taskClosed) { styles.push("property"); return styles.length ? styles.join(' ') : null; } if (state.linkHref) { styles.push(tokenTypes.linkHref, "url"); } else { // Only apply inline styles to non-url text if (state.strong) { styles.push(tokenTypes.strong); } if (state.em) { styles.push(tokenTypes.em); } if (state.strikethrough) { styles.push(tokenTypes.strikethrough); } if (state.linkText) { styles.push(tokenTypes.linkText); } if (state.code) { styles.push(tokenTypes.code); } if (state.image) { styles.push(tokenTypes.image); } if (state.imageAltText) { styles.push(tokenTypes.imageAltText, "link"); } if (state.imageMarker) { styles.push(tokenTypes.imageMarker); } } if (state.header) { styles.push(tokenTypes.header, tokenTypes.header + "-" + state.header); } if (state.quote) { styles.push(tokenTypes.quote); // Add `quote-#` where the maximum for `#` is modeCfg.maxBlockquoteDepth if (!modeCfg.maxBlockquoteDepth || modeCfg.maxBlockquoteDepth >= state.quote) { styles.push(tokenTypes.quote + "-" + state.quote); } else { styles.push(tokenTypes.quote + "-" + modeCfg.maxBlockquoteDepth); } } if (state.list !== false) { var listMod = (state.listStack.length - 1) % 3; if (!listMod) { styles.push(tokenTypes.list1); } else if (listMod === 1) { styles.push(tokenTypes.list2); } else { styles.push(tokenTypes.list3); } } if (state.trailingSpaceNewLine) { styles.push("trailing-space-new-line"); } else if (state.trailingSpace) { styles.push("trailing-space-" + (state.trailingSpace % 2 ? "a" : "b")); } return styles.length ? styles.join(' ') : null; } function handleText(stream, state) { if (stream.match(textRE, true)) { return getType(state); } return undefined; } function inlineNormal(stream, state) { var style = state.text(stream, state); if (typeof style !== 'undefined') return style; if (state.list) { // List marker (*, +, -, 1., etc) state.list = null; return getType(state); } if (state.taskList) { var taskOpen = stream.match(taskListRE, true)[1] !== "x"; if (taskOpen) state.taskOpen = true; else state.taskClosed = true; if (modeCfg.highlightFormatting) state.formatting = "task"; state.taskList = false; return getType(state); } state.taskOpen = false; state.taskClosed = false; if (state.header && stream.match(/^#+$/, true)) { if (modeCfg.highlightFormatting) state.formatting = "header"; return getType(state); } // Get sol() value now, before character is consumed var sol = stream.sol(); var ch = stream.next(); // Matches link titles present on next line if (state.linkTitle) { state.linkTitle = false; var matchCh = ch; if (ch === '(') { matchCh = ')'; } matchCh = (matchCh+'').replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1"); var regex = '^\\s*(?:[^' + matchCh + '\\\\]+|\\\\\\\\|\\\\.)' + matchCh; if (stream.match(new RegExp(regex), true)) { return tokenTypes.linkHref; } } // If this block is changed, it may need to be updated in GFM mode if (ch === '`') { var previousFormatting = state.formatting; if (modeCfg.highlightFormatting) state.formatting = "code"; stream.eatWhile('`'); var count = stream.current().length if (state.code == 0) { state.code = count return getType(state) } else if (count == state.code) { // Must be exact var t = getType(state) state.code = 0 return t } else { state.formatting = previousFormatting return getType(state) } } else if (state.code) { return getType(state); } if (ch === '\\') { stream.next(); if (modeCfg.highlightFormatting) { var type = getType(state); var formattingEscape = tokenTypes.formatting + "-escape"; return type ? type + " " + formattingEscape : formattingEscape; } } if (ch === '!' && stream.match(/\[[^\]]*\] ?(?:\(|\[)/, false)) { state.imageMarker = true; state.image = true; if (modeCfg.highlightFormatting) state.formatting = "image"; return getType(state); } if (ch === '[' && state.imageMarker) { state.imageMarker = false; state.imageAltText = true if (modeCfg.highlightFormatting) state.formatting = "image"; return getType(state); } if (ch === ']' && state.imageAltText) { if (modeCfg.highlightFormatting) state.formatting = "image"; var type = getType(state); state.imageAltText = false; state.image = false; state.inline = state.f = linkHref; return type; } if (ch === '[' && stream.match(/[^\]]*\](\(.*\)| ?\[.*?\])/, false) && !state.image) { state.linkText = true; if (modeCfg.highlightFormatting) state.formatting = "link"; return getType(state); } if (ch === ']' && state.linkText && stream.match(/\(.*?\)| ?\[.*?\]/, false)) { if (modeCfg.highlightFormatting) state.formatting = "link"; var type = getType(state); state.linkText = false; state.inline = state.f = linkHref; return type; } if (ch === '<' && stream.match(/^(https?|ftps?):\/\/(?:[^\\>]|\\.)+>/, false)) { state.f = state.inline = linkInline; if (modeCfg.highlightFormatting) state.formatting = "link"; var type = getType(state); if (type){ type += " "; } else { type = ""; } return type + tokenTypes.linkInline; } if (ch === '<' && stream.match(/^[^> \\]+@(?:[^\\>]|\\.)+>/, false)) { state.f = state.inline = linkInline; if (modeCfg.highlightFormatting) state.formatting = "link"; var type = getType(state); if (type){ type += " "; } else { type = ""; } return type + tokenTypes.linkEmail; } if (ch === '<' && stream.match(/^(!--|\w)/, false)) { var end = stream.string.indexOf(">", stream.pos); if (end != -1) { var atts = stream.string.substring(stream.start, end); if (/markdown\s*=\s*('|"){0,1}1('|"){0,1}/.test(atts)) state.md_inside = true; } stream.backUp(1); state.htmlState = CodeMirror.startState(htmlMode); return switchBlock(stream, state, htmlBlock); } if (ch === '<' && stream.match(/^\/\w*?>/)) { state.md_inside = false; return "tag"; } var ignoreUnderscore = false; if (!modeCfg.underscoresBreakWords) { if (ch === '_' && stream.peek() !== '_' && stream.match(/(\w)/, false)) { var prevPos = stream.pos - 2; if (prevPos >= 0) { var prevCh = stream.string.charAt(prevPos); if (prevCh !== '_' && prevCh.match(/(\w)/, false)) { ignoreUnderscore = true; } } } } if (ch === '*' || (ch === '_' && !ignoreUnderscore)) { if (sol && stream.peek() === ' ') { // Do nothing, surrounded by newline and space } else if (state.strong === ch && stream.eat(ch)) { // Remove STRONG if (modeCfg.highlightFormatting) state.formatting = "strong"; var t = getType(state); state.strong = false; return t; } else if (!state.strong && stream.eat(ch)) { // Add STRONG state.strong = ch; if (modeCfg.highlightFormatting) state.formatting = "strong"; return getType(state); } else if (state.em === ch) { // Remove EM if (modeCfg.highlightFormatting) state.formatting = "em"; var t = getType(state); state.em = false; return t; } else if (!state.em) { // Add EM state.em = ch; if (modeCfg.highlightFormatting) state.formatting = "em"; return getType(state); } } else if (ch === ' ') { if (stream.eat('*') || stream.eat('_')) { // Probably surrounded by spaces if (stream.peek() === ' ') { // Surrounded by spaces, ignore return getType(state); } else { // Not surrounded by spaces, back up pointer stream.backUp(1); } } } if (modeCfg.strikethrough) { if (ch === '~' && stream.eatWhile(ch)) { if (state.strikethrough) {// Remove strikethrough if (modeCfg.highlightFormatting) state.formatting = "strikethrough"; var t = getType(state); state.strikethrough = false; return t; } else if (stream.match(/^[^\s]/, false)) {// Add strikethrough state.strikethrough = true; if (modeCfg.highlightFormatting) state.formatting = "strikethrough"; return getType(state); } } else if (ch === ' ') { if (stream.match(/^~~/, true)) { // Probably surrounded by space if (stream.peek() === ' ') { // Surrounded by spaces, ignore return getType(state); } else { // Not surrounded by spaces, back up pointer stream.backUp(2); } } } } if (ch === ' ') { if (stream.match(/ +$/, false)) { state.trailingSpace++; } else if (state.trailingSpace) { state.trailingSpaceNewLine = true; } } return getType(state); } function linkInline(stream, state) { var ch = stream.next(); if (ch === ">") { state.f = state.inline = inlineNormal; if (modeCfg.highlightFormatting) state.formatting = "link"; var type = getType(state); if (type){ type += " "; } else { type = ""; } return type + tokenTypes.linkInline; } stream.match(/^[^>]+/, true); return tokenTypes.linkInline; } function linkHref(stream, state) { // Check if space, and return NULL if so (to avoid marking the space) if(stream.eatSpace()){ return null; } var ch = stream.next(); if (ch === '(' || ch === '[') { state.f = state.inline = getLinkHrefInside(ch === "(" ? ")" : "]", 0); if (modeCfg.highlightFormatting) state.formatting = "link-string"; state.linkHref = true; return getType(state); } return 'error'; } var linkRE = { ")": /^(?:[^\\\(\)]|\\.|\((?:[^\\\(\)]|\\.)*\))*?(?=\))/, "]": /^(?:[^\\\[\]]|\\.|\[(?:[^\\\[\\]]|\\.)*\])*?(?=\])/ } function getLinkHrefInside(endChar) { return function(stream, state) { var ch = stream.next(); if (ch === endChar) { state.f = state.inline = inlineNormal; if (modeCfg.highlightFormatting) state.formatting = "link-string"; var returnState = getType(state); state.linkHref = false; return returnState; } stream.match(linkRE[endChar]) state.linkHref = true; return getType(state); }; } function footnoteLink(stream, state) { if (stream.match(/^([^\]\\]|\\.)*\]:/, false)) { state.f = footnoteLinkInside; stream.next(); // Consume [ if (modeCfg.highlightFormatting) state.formatting = "link"; state.linkText = true; return getType(state); } return switchInline(stream, state, inlineNormal); } function footnoteLinkInside(stream, state) { if (stream.match(/^\]:/, true)) { state.f = state.inline = footnoteUrl; if (modeCfg.highlightFormatting) state.formatting = "link"; var returnType = getType(state); state.linkText = false; return returnType; } stream.match(/^([^\]\\]|\\.)+/, true); return tokenTypes.linkText; } function footnoteUrl(stream, state) { // Check if space, and return NULL if so (to avoid marking the space) if(stream.eatSpace()){ return null; } // Match URL stream.match(/^[^\s]+/, true); // Check for link title if (stream.peek() === undefined) { // End of line, set flag to check next line state.linkTitle = true; } else { // More content on line, check if link title stream.match(/^(?:\s+(?:"(?:[^"\\]|\\\\|\\.)+"|'(?:[^'\\]|\\\\|\\.)+'|\((?:[^)\\]|\\\\|\\.)+\)))?/, true); } state.f = state.inline = inlineNormal; return tokenTypes.linkHref + " url"; } var mode = { startState: function() { return { f: blockNormal, prevLine: null, thisLine: null, block: blockNormal, htmlState: null, indentation: 0, inline: inlineNormal, text: handleText, formatting: false, linkText: false, linkHref: false, linkTitle: false, code: 0, em: false, strong: false, header: 0, hr: false, taskList: false, list: false, listStack: [], quote: 0, trailingSpace: 0, trailingSpaceNewLine: false, strikethrough: false, fencedChars: null }; }, copyState: function(s) { return { f: s.f, prevLine: s.prevLine, thisLine: s.thisLine, block: s.block, htmlState: s.htmlState && CodeMirror.copyState(htmlMode, s.htmlState), indentation: s.indentation, localMode: s.localMode, localState: s.localMode ? CodeMirror.copyState(s.localMode, s.localState) : null, inline: s.inline, text: s.text, formatting: false, linkTitle: s.linkTitle, code: s.code, em: s.em, strong: s.strong, strikethrough: s.strikethrough, header: s.header, hr: s.hr, taskList: s.taskList, list: s.list, listStack: s.listStack.slice(0), quote: s.quote, indentedCode: s.indentedCode, trailingSpace: s.trailingSpace, trailingSpaceNewLine: s.trailingSpaceNewLine, md_inside: s.md_inside, fencedChars: s.fencedChars }; }, token: function(stream, state) { // Reset state.formatting state.formatting = false; if (stream != state.thisLine) { var forceBlankLine = state.header || state.hr; // Reset state.header and state.hr state.header = 0; state.hr = false; if (stream.match(/^\s*$/, true) || forceBlankLine) { blankLine(state); if (!forceBlankLine) return null state.prevLine = null } state.prevLine = state.thisLine state.thisLine = stream // Reset state.taskList state.taskList = false; // Reset state.trailingSpace state.trailingSpace = 0; state.trailingSpaceNewLine = false; state.f = state.block; var indentation = stream.match(/^\s*/, true)[0].replace(/\t/g, ' ').length; state.indentationDiff = Math.min(indentation - state.indentation, 4); state.indentation = state.indentation + state.indentationDiff; if (indentation > 0) return null; } return state.f(stream, state); }, innerMode: function(state) { if (state.block == htmlBlock) return {state: state.htmlState, mode: htmlMode}; if (state.localState) return {state: state.localState, mode: state.localMode}; return {state: state, mode: mode}; }, blankLine: blankLine, getType: getType, fold: "markdown" }; return mode; }, "xml"); CodeMirror.defineMIME("text/x-markdown", "markdown"); }); plugins/file-manager-advanced/application/library/codemirror/mode/markdown/test.js000064400000071736147176754550024561 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function() { var mode = CodeMirror.getMode({tabSize: 4}, "markdown"); function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } var modeHighlightFormatting = CodeMirror.getMode({tabSize: 4}, {name: "markdown", highlightFormatting: true}); function FT(name) { test.mode(name, modeHighlightFormatting, Array.prototype.slice.call(arguments, 1)); } var modeAtxNoSpace = CodeMirror.getMode({tabSize: 4}, {name: "markdown", allowAtxHeaderWithoutSpace: true}); function AtxNoSpaceTest(name) { test.mode(name, modeAtxNoSpace, Array.prototype.slice.call(arguments, 1)); } var modeFenced = CodeMirror.getMode({tabSize: 4}, {name: "markdown", fencedCodeBlocks: true}); function FencedTest(name) { test.mode(name, modeFenced, Array.prototype.slice.call(arguments, 1)); } var modeOverrideClasses = CodeMirror.getMode({tabsize: 4}, { name: "markdown", strikethrough: true, tokenTypeOverrides: { "header" : "override-header", "code" : "override-code", "quote" : "override-quote", "list1" : "override-list1", "list2" : "override-list2", "list3" : "override-list3", "hr" : "override-hr", "image" : "override-image", "imageAltText": "override-image-alt-text", "imageMarker": "override-image-marker", "linkInline" : "override-link-inline", "linkEmail" : "override-link-email", "linkText" : "override-link-text", "linkHref" : "override-link-href", "em" : "override-em", "strong" : "override-strong", "strikethrough" : "override-strikethrough" }}); function TokenTypeOverrideTest(name) { test.mode(name, modeOverrideClasses, Array.prototype.slice.call(arguments, 1)); } var modeFormattingOverride = CodeMirror.getMode({tabsize: 4}, { name: "markdown", highlightFormatting: true, tokenTypeOverrides: { "formatting" : "override-formatting" }}); function FormatTokenTypeOverrideTest(name) { test.mode(name, modeFormattingOverride, Array.prototype.slice.call(arguments, 1)); } FT("formatting_emAsterisk", "[em&formatting&formatting-em *][em foo][em&formatting&formatting-em *]"); FT("formatting_emUnderscore", "[em&formatting&formatting-em _][em foo][em&formatting&formatting-em _]"); FT("formatting_strongAsterisk", "[strong&formatting&formatting-strong **][strong foo][strong&formatting&formatting-strong **]"); FT("formatting_strongUnderscore", "[strong&formatting&formatting-strong __][strong foo][strong&formatting&formatting-strong __]"); FT("formatting_codeBackticks", "[comment&formatting&formatting-code `][comment foo][comment&formatting&formatting-code `]"); FT("formatting_doubleBackticks", "[comment&formatting&formatting-code ``][comment foo ` bar][comment&formatting&formatting-code ``]"); FT("formatting_atxHeader", "[header&header-1&formatting&formatting-header&formatting-header-1 # ][header&header-1 foo # bar ][header&header-1&formatting&formatting-header&formatting-header-1 #]"); FT("formatting_setextHeader", "foo", "[header&header-1&formatting&formatting-header&formatting-header-1 =]"); FT("formatting_blockquote", "[quote"e-1&formatting&formatting-quote&formatting-quote-1 > ][quote"e-1 foo]"); FT("formatting_list", "[variable-2&formatting&formatting-list&formatting-list-ul - ][variable-2 foo]"); FT("formatting_list", "[variable-2&formatting&formatting-list&formatting-list-ol 1. ][variable-2 foo]"); FT("formatting_link", "[link&formatting&formatting-link [][link foo][link&formatting&formatting-link ]]][string&formatting&formatting-link-string&url (][string&url http://example.com/][string&formatting&formatting-link-string&url )]"); FT("formatting_linkReference", "[link&formatting&formatting-link [][link foo][link&formatting&formatting-link ]]][string&formatting&formatting-link-string&url [][string&url bar][string&formatting&formatting-link-string&url ]]]", "[link&formatting&formatting-link [][link bar][link&formatting&formatting-link ]]:] [string&url http://example.com/]"); FT("formatting_linkWeb", "[link&formatting&formatting-link <][link http://example.com/][link&formatting&formatting-link >]"); FT("formatting_linkEmail", "[link&formatting&formatting-link <][link user@example.com][link&formatting&formatting-link >]"); FT("formatting_escape", "[formatting-escape \\*]"); FT("formatting_image", "[formatting&formatting-image&image&image-marker !][formatting&formatting-image&image&image-alt-text&link [[][image&image-alt-text&link alt text][formatting&formatting-image&image&image-alt-text&link ]]][formatting&formatting-link-string&string&url (][url&string http://link.to/image.jpg][formatting&formatting-link-string&string&url )]"); MT("plainText", "foo"); // Don't style single trailing space MT("trailingSpace1", "foo "); // Two or more trailing spaces should be styled with line break character MT("trailingSpace2", "foo[trailing-space-a ][trailing-space-new-line ]"); MT("trailingSpace3", "foo[trailing-space-a ][trailing-space-b ][trailing-space-new-line ]"); MT("trailingSpace4", "foo[trailing-space-a ][trailing-space-b ][trailing-space-a ][trailing-space-new-line ]"); // Code blocks using 4 spaces (regardless of CodeMirror.tabSize value) MT("codeBlocksUsing4Spaces", " [comment foo]"); // Code blocks using 4 spaces with internal indentation MT("codeBlocksUsing4SpacesIndentation", " [comment bar]", " [comment hello]", " [comment world]", " [comment foo]", "bar"); // Code blocks should end even after extra indented lines MT("codeBlocksWithTrailingIndentedLine", " [comment foo]", " [comment bar]", " [comment baz]", " ", "hello"); // Code blocks using 1 tab (regardless of CodeMirror.indentWithTabs value) MT("codeBlocksUsing1Tab", "\t[comment foo]"); // No code blocks directly after paragraph // http://spec.commonmark.org/0.19/#example-65 MT("noCodeBlocksAfterParagraph", "Foo", " Bar"); // Inline code using backticks MT("inlineCodeUsingBackticks", "foo [comment `bar`]"); // Block code using single backtick (shouldn't work) MT("blockCodeSingleBacktick", "[comment `]", "[comment foo]", "[comment `]"); // Unclosed backticks // Instead of simply marking as CODE, it would be nice to have an // incomplete flag for CODE, that is styled slightly different. MT("unclosedBackticks", "foo [comment `bar]"); // Per documentation: "To include a literal backtick character within a // code span, you can use multiple backticks as the opening and closing // delimiters" MT("doubleBackticks", "[comment ``foo ` bar``]"); // Tests based on Dingus // http://daringfireball.net/projects/markdown/dingus // // Multiple backticks within an inline code block MT("consecutiveBackticks", "[comment `foo```bar`]"); // Multiple backticks within an inline code block with a second code block MT("consecutiveBackticks", "[comment `foo```bar`] hello [comment `world`]"); // Unclosed with several different groups of backticks MT("unclosedBackticks", "[comment ``foo ``` bar` hello]"); // Closed with several different groups of backticks MT("closedBackticks", "[comment ``foo ``` bar` hello``] world"); // atx headers // http://daringfireball.net/projects/markdown/syntax#header MT("atxH1", "[header&header-1 # foo]"); MT("atxH2", "[header&header-2 ## foo]"); MT("atxH3", "[header&header-3 ### foo]"); MT("atxH4", "[header&header-4 #### foo]"); MT("atxH5", "[header&header-5 ##### foo]"); MT("atxH6", "[header&header-6 ###### foo]"); // http://spec.commonmark.org/0.19/#example-24 MT("noAtxH7", "####### foo"); // http://spec.commonmark.org/0.19/#example-25 MT("noAtxH1WithoutSpace", "#5 bolt"); // CommonMark requires a space after # but most parsers don't AtxNoSpaceTest("atxNoSpaceAllowed_H1NoSpace", "[header&header-1 #foo]"); AtxNoSpaceTest("atxNoSpaceAllowed_H4NoSpace", "[header&header-4 ####foo]"); AtxNoSpaceTest("atxNoSpaceAllowed_H1Space", "[header&header-1 # foo]"); // Inline styles should be parsed inside headers MT("atxH1inline", "[header&header-1 # foo ][header&header-1&em *bar*]"); // Setext headers - H1, H2 // Per documentation, "Any number of underlining =’s or -’s will work." // http://daringfireball.net/projects/markdown/syntax#header // Ideally, the text would be marked as `header` as well, but this is // not really feasible at the moment. So, instead, we're testing against // what works today, to avoid any regressions. // // Check if single underlining = works MT("setextH1", "foo", "[header&header-1 =]"); // Check if 3+ ='s work MT("setextH1", "foo", "[header&header-1 ===]"); // Check if single underlining - works MT("setextH2", "foo", "[header&header-2 -]"); // Check if 3+ -'s work MT("setextH2", "foo", "[header&header-2 ---]"); // http://spec.commonmark.org/0.19/#example-45 MT("setextH2AllowSpaces", "foo", " [header&header-2 ---- ]"); // http://spec.commonmark.org/0.19/#example-44 MT("noSetextAfterIndentedCodeBlock", " [comment foo]", "[hr ---]"); // http://spec.commonmark.org/0.19/#example-51 MT("noSetextAfterQuote", "[quote"e-1 > foo]", "[hr ---]"); MT("noSetextAfterList", "[variable-2 - foo]", "[hr ---]"); // Single-line blockquote with trailing space MT("blockquoteSpace", "[quote"e-1 > foo]"); // Single-line blockquote MT("blockquoteNoSpace", "[quote"e-1 >foo]"); // No blank line before blockquote MT("blockquoteNoBlankLine", "foo", "[quote"e-1 > bar]"); // Nested blockquote MT("blockquoteSpace", "[quote"e-1 > foo]", "[quote"e-1 >][quote"e-2 > foo]", "[quote"e-1 >][quote"e-2 >][quote"e-3 > foo]"); // Single-line blockquote followed by normal paragraph MT("blockquoteThenParagraph", "[quote"e-1 >foo]", "", "bar"); // Multi-line blockquote (lazy mode) MT("multiBlockquoteLazy", "[quote"e-1 >foo]", "[quote"e-1 bar]"); // Multi-line blockquote followed by normal paragraph (lazy mode) MT("multiBlockquoteLazyThenParagraph", "[quote"e-1 >foo]", "[quote"e-1 bar]", "", "hello"); // Multi-line blockquote (non-lazy mode) MT("multiBlockquote", "[quote"e-1 >foo]", "[quote"e-1 >bar]"); // Multi-line blockquote followed by normal paragraph (non-lazy mode) MT("multiBlockquoteThenParagraph", "[quote"e-1 >foo]", "[quote"e-1 >bar]", "", "hello"); // Header with leading space after continued blockquote (#3287, negative indentation) MT("headerAfterContinuedBlockquote", "[quote"e-1 > foo]", "[quote"e-1 bar]", "", " [header&header-1 # hello]"); // Check list types MT("listAsterisk", "foo", "bar", "", "[variable-2 * foo]", "[variable-2 * bar]"); MT("listPlus", "foo", "bar", "", "[variable-2 + foo]", "[variable-2 + bar]"); MT("listDash", "foo", "bar", "", "[variable-2 - foo]", "[variable-2 - bar]"); MT("listNumber", "foo", "bar", "", "[variable-2 1. foo]", "[variable-2 2. bar]"); // Lists require a preceding blank line (per Dingus) MT("listBogus", "foo", "1. bar", "2. hello"); // List after hr MT("listAfterHr", "[hr ---]", "[variable-2 - bar]"); // List after header MT("listAfterHeader", "[header&header-1 # foo]", "[variable-2 - bar]"); // hr after list MT("hrAfterList", "[variable-2 - foo]", "[hr -----]"); // Formatting in lists (*) MT("listAsteriskFormatting", "[variable-2 * ][variable-2&em *foo*][variable-2 bar]", "[variable-2 * ][variable-2&strong **foo**][variable-2 bar]", "[variable-2 * ][variable-2&strong **][variable-2&em&strong *foo**][variable-2&em *][variable-2 bar]", "[variable-2 * ][variable-2&comment `foo`][variable-2 bar]"); // Formatting in lists (+) MT("listPlusFormatting", "[variable-2 + ][variable-2&em *foo*][variable-2 bar]", "[variable-2 + ][variable-2&strong **foo**][variable-2 bar]", "[variable-2 + ][variable-2&strong **][variable-2&em&strong *foo**][variable-2&em *][variable-2 bar]", "[variable-2 + ][variable-2&comment `foo`][variable-2 bar]"); // Formatting in lists (-) MT("listDashFormatting", "[variable-2 - ][variable-2&em *foo*][variable-2 bar]", "[variable-2 - ][variable-2&strong **foo**][variable-2 bar]", "[variable-2 - ][variable-2&strong **][variable-2&em&strong *foo**][variable-2&em *][variable-2 bar]", "[variable-2 - ][variable-2&comment `foo`][variable-2 bar]"); // Formatting in lists (1.) MT("listNumberFormatting", "[variable-2 1. ][variable-2&em *foo*][variable-2 bar]", "[variable-2 2. ][variable-2&strong **foo**][variable-2 bar]", "[variable-2 3. ][variable-2&strong **][variable-2&em&strong *foo**][variable-2&em *][variable-2 bar]", "[variable-2 4. ][variable-2&comment `foo`][variable-2 bar]"); // Paragraph lists MT("listParagraph", "[variable-2 * foo]", "", "[variable-2 * bar]"); // Multi-paragraph lists // // 4 spaces MT("listMultiParagraph", "[variable-2 * foo]", "", "[variable-2 * bar]", "", " [variable-2 hello]"); // 4 spaces, extra blank lines (should still be list, per Dingus) MT("listMultiParagraphExtra", "[variable-2 * foo]", "", "[variable-2 * bar]", "", "", " [variable-2 hello]"); // 4 spaces, plus 1 space (should still be list, per Dingus) MT("listMultiParagraphExtraSpace", "[variable-2 * foo]", "", "[variable-2 * bar]", "", " [variable-2 hello]", "", " [variable-2 world]"); // 1 tab MT("listTab", "[variable-2 * foo]", "", "[variable-2 * bar]", "", "\t[variable-2 hello]"); // No indent MT("listNoIndent", "[variable-2 * foo]", "", "[variable-2 * bar]", "", "hello"); MT("listCommonMarkIndentationCode", "[variable-2 * Code blocks also affect]", " [variable-3 * The next level starts where the contents start.]", " [variable-3 * Anything less than that will keep the item on the same level.]", " [variable-3 * Each list item can indent the first level further and further.]", " [variable-3 * For the most part, this makes sense while writing a list.]", " [keyword * This means two items with same indentation can be different levels.]", " [keyword * Each level has an indent requirement that can change between items.]", " [keyword * A list item that meets this will be part of the next level.]", " [variable-3 * Otherwise, it will be part of the level where it does meet this.]", " [variable-2 * World]"); // Blockquote MT("blockquote", "[variable-2 * foo]", "", "[variable-2 * bar]", "", " [variable-2"e"e-1 > hello]"); // Code block MT("blockquoteCode", "[variable-2 * foo]", "", "[variable-2 * bar]", "", " [comment > hello]", "", " [variable-2 world]"); // Code block followed by text MT("blockquoteCodeText", "[variable-2 * foo]", "", " [variable-2 bar]", "", " [comment hello]", "", " [variable-2 world]"); // Nested list MT("listAsteriskNested", "[variable-2 * foo]", "", " [variable-3 * bar]"); MT("listPlusNested", "[variable-2 + foo]", "", " [variable-3 + bar]"); MT("listDashNested", "[variable-2 - foo]", "", " [variable-3 - bar]"); MT("listNumberNested", "[variable-2 1. foo]", "", " [variable-3 2. bar]"); MT("listMixed", "[variable-2 * foo]", "", " [variable-3 + bar]", "", " [keyword - hello]", "", " [variable-2 1. world]"); MT("listBlockquote", "[variable-2 * foo]", "", " [variable-3 + bar]", "", " [quote"e-1&variable-3 > hello]"); MT("listCode", "[variable-2 * foo]", "", " [variable-3 + bar]", "", " [comment hello]"); // Code with internal indentation MT("listCodeIndentation", "[variable-2 * foo]", "", " [comment bar]", " [comment hello]", " [comment world]", " [comment foo]", " [variable-2 bar]"); // List nesting edge cases MT("listNested", "[variable-2 * foo]", "", " [variable-3 * bar]", "", " [variable-3 hello]" ); MT("listNested", "[variable-2 * foo]", "", " [variable-3 * bar]", "", " [keyword * foo]" ); // Code followed by text MT("listCodeText", "[variable-2 * foo]", "", " [comment bar]", "", "hello"); // Following tests directly from official Markdown documentation // http://daringfireball.net/projects/markdown/syntax#hr MT("hrSpace", "[hr * * *]"); MT("hr", "[hr ***]"); MT("hrLong", "[hr *****]"); MT("hrSpaceDash", "[hr - - -]"); MT("hrDashLong", "[hr ---------------------------------------]"); //Images MT("Images", "[image&image-marker !][image&image-alt-text&link [[alt text]]][string&url (http://link.to/image.jpg)]") //Images with highlight alt text MT("imageEm", "[image&image-marker !][image&image-alt-text&link [[][image-alt-text&em&image&link *alt text*][image&image-alt-text&link ]]][string&url (http://link.to/image.jpg)]"); MT("imageStrong", "[image&image-marker !][image&image-alt-text&link [[][image-alt-text&strong&image&link **alt text**][image&image-alt-text&link ]]][string&url (http://link.to/image.jpg)]"); MT("imageEmStrong", "[image&image-marker !][image&image-alt-text&link [[][image-alt-text&image&strong&link **][image&image-alt-text&em&strong&link *alt text**][image&image-alt-text&em&link *][image&image-alt-text&link ]]][string&url (http://link.to/image.jpg)]"); // Inline link with title MT("linkTitle", "[link [[foo]]][string&url (http://example.com/ \"bar\")] hello"); // Inline link without title MT("linkNoTitle", "[link [[foo]]][string&url (http://example.com/)] bar"); // Inline link with image MT("linkImage", "[link [[][link&image&image-marker !][link&image&image-alt-text&link [[alt text]]][string&url (http://link.to/image.jpg)][link ]]][string&url (http://example.com/)] bar"); // Inline link with Em MT("linkEm", "[link [[][link&em *foo*][link ]]][string&url (http://example.com/)] bar"); // Inline link with Strong MT("linkStrong", "[link [[][link&strong **foo**][link ]]][string&url (http://example.com/)] bar"); // Inline link with EmStrong MT("linkEmStrong", "[link [[][link&strong **][link&em&strong *foo**][link&em *][link ]]][string&url (http://example.com/)] bar"); // Image with title MT("imageTitle", "[image&image-marker !][image&image-alt-text&link [[alt text]]][string&url (http://example.com/ \"bar\")] hello"); // Image without title MT("imageNoTitle", "[image&image-marker !][image&image-alt-text&link [[alt text]]][string&url (http://example.com/)] bar"); // Image with asterisks MT("imageAsterisks", "[image&image-marker !][image&image-alt-text&link [[ ][image&image-alt-text&em&link *alt text*][image&image-alt-text&link ]]][string&url (http://link.to/image.jpg)] bar"); // Not a link. Should be normal text due to square brackets being used // regularly in text, especially in quoted material, and no space is allowed // between square brackets and parentheses (per Dingus). MT("notALink", "[[foo]] (bar)"); // Reference-style links MT("linkReference", "[link [[foo]]][string&url [[bar]]] hello"); // Reference-style links with Em MT("linkReferenceEm", "[link [[][link&em *foo*][link ]]][string&url [[bar]]] hello"); // Reference-style links with Strong MT("linkReferenceStrong", "[link [[][link&strong **foo**][link ]]][string&url [[bar]]] hello"); // Reference-style links with EmStrong MT("linkReferenceEmStrong", "[link [[][link&strong **][link&em&strong *foo**][link&em *][link ]]][string&url [[bar]]] hello"); // Reference-style links with optional space separator (per documentation) // "You can optionally use a space to separate the sets of brackets" MT("linkReferenceSpace", "[link [[foo]]] [string&url [[bar]]] hello"); // Should only allow a single space ("...use *a* space...") MT("linkReferenceDoubleSpace", "[[foo]] [[bar]] hello"); // Reference-style links with implicit link name MT("linkImplicit", "[link [[foo]]][string&url [[]]] hello"); // @todo It would be nice if, at some point, the document was actually // checked to see if the referenced link exists // Link label, for reference-style links (taken from documentation) MT("labelNoTitle", "[link [[foo]]:] [string&url http://example.com/]"); MT("labelIndented", " [link [[foo]]:] [string&url http://example.com/]"); MT("labelSpaceTitle", "[link [[foo bar]]:] [string&url http://example.com/ \"hello\"]"); MT("labelDoubleTitle", "[link [[foo bar]]:] [string&url http://example.com/ \"hello\"] \"world\""); MT("labelTitleDoubleQuotes", "[link [[foo]]:] [string&url http://example.com/ \"bar\"]"); MT("labelTitleSingleQuotes", "[link [[foo]]:] [string&url http://example.com/ 'bar']"); MT("labelTitleParentheses", "[link [[foo]]:] [string&url http://example.com/ (bar)]"); MT("labelTitleInvalid", "[link [[foo]]:] [string&url http://example.com/] bar"); MT("labelLinkAngleBrackets", "[link [[foo]]:] [string&url \"bar\"]"); MT("labelTitleNextDoubleQuotes", "[link [[foo]]:] [string&url http://example.com/]", "[string \"bar\"] hello"); MT("labelTitleNextSingleQuotes", "[link [[foo]]:] [string&url http://example.com/]", "[string 'bar'] hello"); MT("labelTitleNextParentheses", "[link [[foo]]:] [string&url http://example.com/]", "[string (bar)] hello"); MT("labelTitleNextMixed", "[link [[foo]]:] [string&url http://example.com/]", "(bar\" hello"); MT("labelEscape", "[link [[foo \\]] ]]:] [string&url http://example.com/]"); MT("labelEscapeColon", "[link [[foo \\]]: bar]]:] [string&url http://example.com/]"); MT("labelEscapeEnd", "[[foo\\]]: http://example.com/"); MT("linkWeb", "[link ] foo"); MT("linkWebDouble", "[link ] foo [link ]"); MT("linkEmail", "[link ] foo"); MT("linkEmailDouble", "[link ] foo [link ]"); MT("emAsterisk", "[em *foo*] bar"); MT("emUnderscore", "[em _foo_] bar"); MT("emInWordAsterisk", "foo[em *bar*]hello"); MT("emInWordUnderscore", "foo[em _bar_]hello"); // Per documentation: "...surround an * or _ with spaces, it’ll be // treated as a literal asterisk or underscore." MT("emEscapedBySpaceIn", "foo [em _bar _ hello_] world"); MT("emEscapedBySpaceOut", "foo _ bar[em _hello_]world"); MT("emEscapedByNewline", "foo", "_ bar[em _hello_]world"); // Unclosed emphasis characters // Instead of simply marking as EM / STRONG, it would be nice to have an // incomplete flag for EM and STRONG, that is styled slightly different. MT("emIncompleteAsterisk", "foo [em *bar]"); MT("emIncompleteUnderscore", "foo [em _bar]"); MT("strongAsterisk", "[strong **foo**] bar"); MT("strongUnderscore", "[strong __foo__] bar"); MT("emStrongAsterisk", "[em *foo][em&strong **bar*][strong hello**] world"); MT("emStrongUnderscore", "[em _foo][em&strong __bar_][strong hello__] world"); // "...same character must be used to open and close an emphasis span."" MT("emStrongMixed", "[em _foo][em&strong **bar*hello__ world]"); MT("emStrongMixed", "[em *foo][em&strong __bar_hello** world]"); MT("linkWithNestedParens", "[link [[foo]]][string&url (bar(baz))]") // These characters should be escaped: // \ backslash // ` backtick // * asterisk // _ underscore // {} curly braces // [] square brackets // () parentheses // # hash mark // + plus sign // - minus sign (hyphen) // . dot // ! exclamation mark MT("escapeBacktick", "foo \\`bar\\`"); MT("doubleEscapeBacktick", "foo \\\\[comment `bar\\\\`]"); MT("escapeAsterisk", "foo \\*bar\\*"); MT("doubleEscapeAsterisk", "foo \\\\[em *bar\\\\*]"); MT("escapeUnderscore", "foo \\_bar\\_"); MT("doubleEscapeUnderscore", "foo \\\\[em _bar\\\\_]"); MT("escapeHash", "\\# foo"); MT("doubleEscapeHash", "\\\\# foo"); MT("escapeNewline", "\\", "[em *foo*]"); // Class override tests TokenTypeOverrideTest("overrideHeader1", "[override-header&override-header-1 # Foo]"); TokenTypeOverrideTest("overrideHeader2", "[override-header&override-header-2 ## Foo]"); TokenTypeOverrideTest("overrideHeader3", "[override-header&override-header-3 ### Foo]"); TokenTypeOverrideTest("overrideHeader4", "[override-header&override-header-4 #### Foo]"); TokenTypeOverrideTest("overrideHeader5", "[override-header&override-header-5 ##### Foo]"); TokenTypeOverrideTest("overrideHeader6", "[override-header&override-header-6 ###### Foo]"); TokenTypeOverrideTest("overrideCode", "[override-code `foo`]"); TokenTypeOverrideTest("overrideCodeBlock", "[override-code ```]", "[override-code foo]", "[override-code ```]"); TokenTypeOverrideTest("overrideQuote", "[override-quote&override-quote-1 > foo]", "[override-quote&override-quote-1 > bar]"); TokenTypeOverrideTest("overrideQuoteNested", "[override-quote&override-quote-1 > foo]", "[override-quote&override-quote-1 >][override-quote&override-quote-2 > bar]", "[override-quote&override-quote-1 >][override-quote&override-quote-2 >][override-quote&override-quote-3 > baz]"); TokenTypeOverrideTest("overrideLists", "[override-list1 - foo]", "", " [override-list2 + bar]", "", " [override-list3 * baz]", "", " [override-list1 1. qux]", "", " [override-list2 - quux]"); TokenTypeOverrideTest("overrideHr", "[override-hr * * *]"); TokenTypeOverrideTest("overrideImage", "[override-image&override-image-marker !][override-image&override-image-alt-text&link [[alt text]]][override-link-href&url (http://link.to/image.jpg)]"); TokenTypeOverrideTest("overrideLinkText", "[override-link-text [[foo]]][override-link-href&url (http://example.com)]"); TokenTypeOverrideTest("overrideLinkEmailAndInline", "[override-link-email <][override-link-inline foo@example.com>]"); TokenTypeOverrideTest("overrideEm", "[override-em *foo*]"); TokenTypeOverrideTest("overrideStrong", "[override-strong **foo**]"); TokenTypeOverrideTest("overrideStrikethrough", "[override-strikethrough ~~foo~~]"); FormatTokenTypeOverrideTest("overrideFormatting", "[override-formatting-escape \\*]"); // Tests to make sure GFM-specific things aren't getting through MT("taskList", "[variable-2 * [ ]] bar]"); MT("noFencedCodeBlocks", "~~~", "foo", "~~~"); FencedTest("fencedCodeBlocks", "[comment ```]", "[comment foo]", "[comment ```]", "bar"); FencedTest("fencedCodeBlocksMultipleChars", "[comment `````]", "[comment foo]", "[comment ```]", "[comment foo]", "[comment `````]", "bar"); FencedTest("fencedCodeBlocksTildes", "[comment ~~~]", "[comment foo]", "[comment ~~~]", "bar"); FencedTest("fencedCodeBlocksTildesMultipleChars", "[comment ~~~~~]", "[comment ~~~]", "[comment foo]", "[comment ~~~~~]", "bar"); FencedTest("fencedCodeBlocksMultipleChars", "[comment `````]", "[comment foo]", "[comment ```]", "[comment foo]", "[comment `````]", "bar"); FencedTest("fencedCodeBlocksMixed", "[comment ~~~]", "[comment ```]", "[comment foo]", "[comment ~~~]", "bar"); // Tests that require XML mode MT("xmlMode", "[tag&bracket <][tag div][tag&bracket >]", "*foo*", "[tag&bracket <][tag http://github.com][tag&bracket />]", "[tag&bracket ]", "[link ]"); MT("xmlModeWithMarkdownInside", "[tag&bracket <][tag div] [attribute markdown]=[string 1][tag&bracket >]", "[em *foo*]", "[link ]", "[tag ]", "[link ]", "[tag&bracket <][tag div][tag&bracket >]", "[tag&bracket ]"); })(); plugins/file-manager-advanced/application/library/codemirror/mode/mathematica/index.html000064400000004316147176754550025662 0ustar00 CodeMirror: Mathematica mode

Mathematica mode

MIME types defined: text/x-mathematica (Mathematica).

plugins/file-manager-advanced/application/library/codemirror/mode/mathematica/mathematica.js000064400000012754147176754550026505 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE // Mathematica mode copyright (c) 2015 by Calin Barbat // Based on code by Patrick Scheibe (halirutan) // See: https://github.com/halirutan/Mathematica-Source-Highlighting/tree/master/src/lang-mma.js (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode('mathematica', function(_config, _parserConfig) { // used pattern building blocks var Identifier = '[a-zA-Z\\$][a-zA-Z0-9\\$]*'; var pBase = "(?:\\d+)"; var pFloat = "(?:\\.\\d+|\\d+\\.\\d*|\\d+)"; var pFloatBase = "(?:\\.\\w+|\\w+\\.\\w*|\\w+)"; var pPrecision = "(?:`(?:`?"+pFloat+")?)"; // regular expressions var reBaseForm = new RegExp('(?:'+pBase+'(?:\\^\\^'+pFloatBase+pPrecision+'?(?:\\*\\^[+-]?\\d+)?))'); var reFloatForm = new RegExp('(?:' + pFloat + pPrecision + '?(?:\\*\\^[+-]?\\d+)?)'); var reIdInContext = new RegExp('(?:`?)(?:' + Identifier + ')(?:`(?:' + Identifier + '))*(?:`?)'); function tokenBase(stream, state) { var ch; // get next character ch = stream.next(); // string if (ch === '"') { state.tokenize = tokenString; return state.tokenize(stream, state); } // comment if (ch === '(') { if (stream.eat('*')) { state.commentLevel++; state.tokenize = tokenComment; return state.tokenize(stream, state); } } // go back one character stream.backUp(1); // look for numbers // Numbers in a baseform if (stream.match(reBaseForm, true, false)) { return 'number'; } // Mathematica numbers. Floats (1.2, .2, 1.) can have optionally a precision (`float) or an accuracy definition // (``float). Note: while 1.2` is possible 1.2`` is not. At the end an exponent (float*^+12) can follow. if (stream.match(reFloatForm, true, false)) { return 'number'; } /* In[23] and Out[34] */ if (stream.match(/(?:In|Out)\[[0-9]*\]/, true, false)) { return 'atom'; } // usage if (stream.match(/([a-zA-Z\$]+(?:`?[a-zA-Z0-9\$])*::usage)/, true, false)) { return 'meta'; } // message if (stream.match(/([a-zA-Z\$]+(?:`?[a-zA-Z0-9\$])*::[a-zA-Z\$][a-zA-Z0-9\$]*):?/, true, false)) { return 'string-2'; } // this makes a look-ahead match for something like variable:{_Integer} // the match is then forwarded to the mma-patterns tokenizer. if (stream.match(/([a-zA-Z\$][a-zA-Z0-9\$]*\s*:)(?:(?:[a-zA-Z\$][a-zA-Z0-9\$]*)|(?:[^:=>~@\^\&\*\)\[\]'\?,\|])).*/, true, false)) { return 'variable-2'; } // catch variables which are used together with Blank (_), BlankSequence (__) or BlankNullSequence (___) // Cannot start with a number, but can have numbers at any other position. Examples // blub__Integer, a1_, b34_Integer32 if (stream.match(/[a-zA-Z\$][a-zA-Z0-9\$]*_+[a-zA-Z\$][a-zA-Z0-9\$]*/, true, false)) { return 'variable-2'; } if (stream.match(/[a-zA-Z\$][a-zA-Z0-9\$]*_+/, true, false)) { return 'variable-2'; } if (stream.match(/_+[a-zA-Z\$][a-zA-Z0-9\$]*/, true, false)) { return 'variable-2'; } // Named characters in Mathematica, like \[Gamma]. if (stream.match(/\\\[[a-zA-Z\$][a-zA-Z0-9\$]*\]/, true, false)) { return 'variable-3'; } // Match all braces separately if (stream.match(/(?:\[|\]|{|}|\(|\))/, true, false)) { return 'bracket'; } // Catch Slots (#, ##, #3, ##9 and the V10 named slots #name). I have never seen someone using more than one digit after #, so we match // only one. if (stream.match(/(?:#[a-zA-Z\$][a-zA-Z0-9\$]*|#+[0-9]?)/, true, false)) { return 'variable-2'; } // Literals like variables, keywords, functions if (stream.match(reIdInContext, true, false)) { return 'keyword'; } // operators. Note that operators like @@ or /; are matched separately for each symbol. if (stream.match(/(?:\\|\+|\-|\*|\/|,|;|\.|:|@|~|=|>|<|&|\||_|`|'|\^|\?|!|%)/, true, false)) { return 'operator'; } // everything else is an error stream.next(); // advance the stream. return 'error'; } function tokenString(stream, state) { var next, end = false, escaped = false; while ((next = stream.next()) != null) { if (next === '"' && !escaped) { end = true; break; } escaped = !escaped && next === '\\'; } if (end && !escaped) { state.tokenize = tokenBase; } return 'string'; }; function tokenComment(stream, state) { var prev, next; while(state.commentLevel > 0 && (next = stream.next()) != null) { if (prev === '(' && next === '*') state.commentLevel++; if (prev === '*' && next === ')') state.commentLevel--; prev = next; } if (state.commentLevel <= 0) { state.tokenize = tokenBase; } return 'comment'; } return { startState: function() {return {tokenize: tokenBase, commentLevel: 0};}, token: function(stream, state) { if (stream.eatSpace()) return null; return state.tokenize(stream, state); }, blockCommentStart: "(*", blockCommentEnd: "*)" }; }); CodeMirror.defineMIME('text/x-mathematica', { name: 'mathematica' }); }); plugins/file-manager-advanced/application/library/codemirror/mode/mbox/index.html000064400000002415147176754550024350 0ustar00 CodeMirror: mbox mode

mbox mode

MIME types defined: application/mbox.

plugins/file-manager-advanced/application/library/codemirror/mode/mbox/mbox.js000064400000007101147176754550023653 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; var rfc2822 = [ "From", "Sender", "Reply-To", "To", "Cc", "Bcc", "Message-ID", "In-Reply-To", "References", "Resent-From", "Resent-Sender", "Resent-To", "Resent-Cc", "Resent-Bcc", "Resent-Message-ID", "Return-Path", "Received" ]; var rfc2822NoEmail = [ "Date", "Subject", "Comments", "Keywords", "Resent-Date" ]; CodeMirror.registerHelper("hintWords", "mbox", rfc2822.concat(rfc2822NoEmail)); var whitespace = /^[ \t]/; var separator = /^From /; // See RFC 4155 var rfc2822Header = new RegExp("^(" + rfc2822.join("|") + "): "); var rfc2822HeaderNoEmail = new RegExp("^(" + rfc2822NoEmail.join("|") + "): "); var header = /^[^:]+:/; // Optional fields defined in RFC 2822 var email = /^[^ ]+@[^ ]+/; var untilEmail = /^.*?(?=[^ ]+?@[^ ]+)/; var bracketedEmail = /^<.*?>/; var untilBracketedEmail = /^.*?(?=<.*>)/; function styleForHeader(header) { if (header === "Subject") return "header"; return "string"; } function readToken(stream, state) { if (stream.sol()) { // From last line state.inSeparator = false; if (state.inHeader && stream.match(whitespace)) { // Header folding return null; } else { state.inHeader = false; state.header = null; } if (stream.match(separator)) { state.inHeaders = true; state.inSeparator = true; return "atom"; } var match; var emailPermitted = false; if ((match = stream.match(rfc2822HeaderNoEmail)) || (emailPermitted = true) && (match = stream.match(rfc2822Header))) { state.inHeaders = true; state.inHeader = true; state.emailPermitted = emailPermitted; state.header = match[1]; return "atom"; } // Use vim's heuristics: recognize custom headers only if the line is in a // block of legitimate headers. if (state.inHeaders && (match = stream.match(header))) { state.inHeader = true; state.emailPermitted = true; state.header = match[1]; return "atom"; } state.inHeaders = false; stream.skipToEnd(); return null; } if (state.inSeparator) { if (stream.match(email)) return "link"; if (stream.match(untilEmail)) return "atom"; stream.skipToEnd(); return "atom"; } if (state.inHeader) { var style = styleForHeader(state.header); if (state.emailPermitted) { if (stream.match(bracketedEmail)) return style + " link"; if (stream.match(untilBracketedEmail)) return style; } stream.skipToEnd(); return style; } stream.skipToEnd(); return null; }; CodeMirror.defineMode("mbox", function() { return { startState: function() { return { // Is in a mbox separator inSeparator: false, // Is in a mail header inHeader: false, // If bracketed email is permitted. Only applicable when inHeader emailPermitted: false, // Name of current header header: null, // Is in a region of mail headers inHeaders: false }; }, token: readToken, blankLine: function(state) { state.inHeaders = state.inSeparator = state.inHeader = false; } }; }); CodeMirror.defineMIME("application/mbox", "mbox"); }); plugins/file-manager-advanced/application/library/codemirror/mode/mirc/index.html000064400000013246147176754550024341 0ustar00 CodeMirror: mIRC mode

mIRC mode

MIME types defined: text/mirc.

plugins/file-manager-advanced/application/library/codemirror/mode/mirc/mirc.js000064400000023542147176754550023634 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE //mIRC mode by Ford_Lawnmower :: Based on Velocity mode by Steve O'Hara (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMIME("text/mirc", "mirc"); CodeMirror.defineMode("mirc", function() { function parseWords(str) { var obj = {}, words = str.split(" "); for (var i = 0; i < words.length; ++i) obj[words[i]] = true; return obj; } var specials = parseWords("$! $$ $& $? $+ $abook $abs $active $activecid " + "$activewid $address $addtok $agent $agentname $agentstat $agentver " + "$alias $and $anick $ansi2mirc $aop $appactive $appstate $asc $asctime " + "$asin $atan $avoice $away $awaymsg $awaytime $banmask $base $bfind " + "$binoff $biton $bnick $bvar $bytes $calc $cb $cd $ceil $chan $chanmodes " + "$chantypes $chat $chr $cid $clevel $click $cmdbox $cmdline $cnick $color " + "$com $comcall $comchan $comerr $compact $compress $comval $cos $count " + "$cr $crc $creq $crlf $ctime $ctimer $ctrlenter $date $day $daylight " + "$dbuh $dbuw $dccignore $dccport $dde $ddename $debug $decode $decompress " + "$deltok $devent $dialog $did $didreg $didtok $didwm $disk $dlevel $dll " + "$dllcall $dname $dns $duration $ebeeps $editbox $emailaddr $encode $error " + "$eval $event $exist $feof $ferr $fgetc $file $filename $filtered $finddir " + "$finddirn $findfile $findfilen $findtok $fline $floor $fopen $fread $fserve " + "$fulladdress $fulldate $fullname $fullscreen $get $getdir $getdot $gettok $gmt " + "$group $halted $hash $height $hfind $hget $highlight $hnick $hotline " + "$hotlinepos $ial $ialchan $ibl $idle $iel $ifmatch $ignore $iif $iil " + "$inelipse $ini $inmidi $inpaste $inpoly $input $inrect $inroundrect " + "$insong $instok $int $inwave $ip $isalias $isbit $isdde $isdir $isfile " + "$isid $islower $istok $isupper $keychar $keyrpt $keyval $knick $lactive " + "$lactivecid $lactivewid $left $len $level $lf $line $lines $link $lock " + "$lock $locked $log $logstamp $logstampfmt $longfn $longip $lower $ltimer " + "$maddress $mask $matchkey $matchtok $md5 $me $menu $menubar $menucontext " + "$menutype $mid $middir $mircdir $mircexe $mircini $mklogfn $mnick $mode " + "$modefirst $modelast $modespl $mouse $msfile $network $newnick $nick $nofile " + "$nopath $noqt $not $notags $notify $null $numeric $numok $oline $onpoly " + "$opnick $or $ord $os $passivedcc $pic $play $pnick $port $portable $portfree " + "$pos $prefix $prop $protect $puttok $qt $query $rand $r $rawmsg $read $readomo " + "$readn $regex $regml $regsub $regsubex $remove $remtok $replace $replacex " + "$reptok $result $rgb $right $round $scid $scon $script $scriptdir $scriptline " + "$sdir $send $server $serverip $sfile $sha1 $shortfn $show $signal $sin " + "$site $sline $snick $snicks $snotify $sock $sockbr $sockerr $sockname " + "$sorttok $sound $sqrt $ssl $sreq $sslready $status $strip $str $stripped " + "$syle $submenu $switchbar $tan $target $ticks $time $timer $timestamp " + "$timestampfmt $timezone $tip $titlebar $toolbar $treebar $trust $ulevel " + "$ulist $upper $uptime $url $usermode $v1 $v2 $var $vcmd $vcmdstat $vcmdver " + "$version $vnick $vol $wid $width $wildsite $wildtok $window $wrap $xor"); var keywords = parseWords("abook ajinvite alias aline ame amsg anick aop auser autojoin avoice " + "away background ban bcopy beep bread break breplace bset btrunc bunset bwrite " + "channel clear clearall cline clipboard close cnick color comclose comopen " + "comreg continue copy creq ctcpreply ctcps dcc dccserver dde ddeserver " + "debug dec describe dialog did didtok disable disconnect dlevel dline dll " + "dns dqwindow drawcopy drawdot drawfill drawline drawpic drawrect drawreplace " + "drawrot drawsave drawscroll drawtext ebeeps echo editbox emailaddr enable " + "events exit fclose filter findtext finger firewall flash flist flood flush " + "flushini font fopen fseek fsend fserve fullname fwrite ghide gload gmove " + "gopts goto gplay gpoint gqreq groups gshow gsize gstop gtalk gunload hadd " + "halt haltdef hdec hdel help hfree hinc hload hmake hop hsave ial ialclear " + "ialmark identd if ignore iline inc invite iuser join kick linesep links list " + "load loadbuf localinfo log mdi me menubar mkdir mnick mode msg nick noop notice " + "notify omsg onotice part partall pdcc perform play playctrl pop protect pvoice " + "qme qmsg query queryn quit raw reload remini remote remove rename renwin " + "reseterror resetidle return rlevel rline rmdir run ruser save savebuf saveini " + "say scid scon server set showmirc signam sline sockaccept sockclose socklist " + "socklisten sockmark sockopen sockpause sockread sockrename sockudp sockwrite " + "sound speak splay sreq strip switchbar timer timestamp titlebar tnick tokenize " + "toolbar topic tray treebar ulist unload unset unsetall updatenl url uwho " + "var vcadd vcmd vcrem vol while whois window winhelp write writeint if isalnum " + "isalpha isaop isavoice isban ischan ishop isignore isin isincs isletter islower " + "isnotify isnum ison isop isprotect isreg isupper isvoice iswm iswmcs " + "elseif else goto menu nicklist status title icon size option text edit " + "button check radio box scroll list combo link tab item"); var functions = parseWords("if elseif else and not or eq ne in ni for foreach while switch"); var isOperatorChar = /[+\-*&%=<>!?^\/\|]/; function chain(stream, state, f) { state.tokenize = f; return f(stream, state); } function tokenBase(stream, state) { var beforeParams = state.beforeParams; state.beforeParams = false; var ch = stream.next(); if (/[\[\]{}\(\),\.]/.test(ch)) { if (ch == "(" && beforeParams) state.inParams = true; else if (ch == ")") state.inParams = false; return null; } else if (/\d/.test(ch)) { stream.eatWhile(/[\w\.]/); return "number"; } else if (ch == "\\") { stream.eat("\\"); stream.eat(/./); return "number"; } else if (ch == "/" && stream.eat("*")) { return chain(stream, state, tokenComment); } else if (ch == ";" && stream.match(/ *\( *\(/)) { return chain(stream, state, tokenUnparsed); } else if (ch == ";" && !state.inParams) { stream.skipToEnd(); return "comment"; } else if (ch == '"') { stream.eat(/"/); return "keyword"; } else if (ch == "$") { stream.eatWhile(/[$_a-z0-9A-Z\.:]/); if (specials && specials.propertyIsEnumerable(stream.current().toLowerCase())) { return "keyword"; } else { state.beforeParams = true; return "builtin"; } } else if (ch == "%") { stream.eatWhile(/[^,^\s^\(^\)]/); state.beforeParams = true; return "string"; } else if (isOperatorChar.test(ch)) { stream.eatWhile(isOperatorChar); return "operator"; } else { stream.eatWhile(/[\w\$_{}]/); var word = stream.current().toLowerCase(); if (keywords && keywords.propertyIsEnumerable(word)) return "keyword"; if (functions && functions.propertyIsEnumerable(word)) { state.beforeParams = true; return "keyword"; } return null; } } function tokenComment(stream, state) { var maybeEnd = false, ch; while (ch = stream.next()) { if (ch == "/" && maybeEnd) { state.tokenize = tokenBase; break; } maybeEnd = (ch == "*"); } return "comment"; } function tokenUnparsed(stream, state) { var maybeEnd = 0, ch; while (ch = stream.next()) { if (ch == ";" && maybeEnd == 2) { state.tokenize = tokenBase; break; } if (ch == ")") maybeEnd++; else if (ch != " ") maybeEnd = 0; } return "meta"; } return { startState: function() { return { tokenize: tokenBase, beforeParams: false, inParams: false }; }, token: function(stream, state) { if (stream.eatSpace()) return null; return state.tokenize(stream, state); } }; }); }); plugins/file-manager-advanced/application/library/codemirror/mode/mllike/index.html000064400000010524147176754550024660 0ustar00 CodeMirror: ML-like mode

OCaml mode

F# mode

MIME types defined: text/x-ocaml (OCaml) and text/x-fsharp (F#).

plugins/file-manager-advanced/application/library/codemirror/mode/mllike/mllike.js000064400000011632147176754550024477 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode('mllike', function(_config, parserConfig) { var words = { 'let': 'keyword', 'rec': 'keyword', 'in': 'keyword', 'of': 'keyword', 'and': 'keyword', 'if': 'keyword', 'then': 'keyword', 'else': 'keyword', 'for': 'keyword', 'to': 'keyword', 'while': 'keyword', 'do': 'keyword', 'done': 'keyword', 'fun': 'keyword', 'function': 'keyword', 'val': 'keyword', 'type': 'keyword', 'mutable': 'keyword', 'match': 'keyword', 'with': 'keyword', 'try': 'keyword', 'open': 'builtin', 'ignore': 'builtin', 'begin': 'keyword', 'end': 'keyword' }; var extraWords = parserConfig.extraWords || {}; for (var prop in extraWords) { if (extraWords.hasOwnProperty(prop)) { words[prop] = parserConfig.extraWords[prop]; } } function tokenBase(stream, state) { var ch = stream.next(); if (ch === '"') { state.tokenize = tokenString; return state.tokenize(stream, state); } if (ch === '(') { if (stream.eat('*')) { state.commentLevel++; state.tokenize = tokenComment; return state.tokenize(stream, state); } } if (ch === '~') { stream.eatWhile(/\w/); return 'variable-2'; } if (ch === '`') { stream.eatWhile(/\w/); return 'quote'; } if (ch === '/' && parserConfig.slashComments && stream.eat('/')) { stream.skipToEnd(); return 'comment'; } if (/\d/.test(ch)) { stream.eatWhile(/[\d]/); if (stream.eat('.')) { stream.eatWhile(/[\d]/); } return 'number'; } if ( /[+\-*&%=<>!?|]/.test(ch)) { return 'operator'; } stream.eatWhile(/\w/); var cur = stream.current(); return words.hasOwnProperty(cur) ? words[cur] : 'variable'; } function tokenString(stream, state) { var next, end = false, escaped = false; while ((next = stream.next()) != null) { if (next === '"' && !escaped) { end = true; break; } escaped = !escaped && next === '\\'; } if (end && !escaped) { state.tokenize = tokenBase; } return 'string'; }; function tokenComment(stream, state) { var prev, next; while(state.commentLevel > 0 && (next = stream.next()) != null) { if (prev === '(' && next === '*') state.commentLevel++; if (prev === '*' && next === ')') state.commentLevel--; prev = next; } if (state.commentLevel <= 0) { state.tokenize = tokenBase; } return 'comment'; } return { startState: function() {return {tokenize: tokenBase, commentLevel: 0};}, token: function(stream, state) { if (stream.eatSpace()) return null; return state.tokenize(stream, state); }, blockCommentStart: "(*", blockCommentEnd: "*)", lineComment: parserConfig.slashComments ? "//" : null }; }); CodeMirror.defineMIME('text/x-ocaml', { name: 'mllike', extraWords: { 'succ': 'keyword', 'trace': 'builtin', 'exit': 'builtin', 'print_string': 'builtin', 'print_endline': 'builtin', 'true': 'atom', 'false': 'atom', 'raise': 'keyword' } }); CodeMirror.defineMIME('text/x-fsharp', { name: 'mllike', extraWords: { 'abstract': 'keyword', 'as': 'keyword', 'assert': 'keyword', 'base': 'keyword', 'class': 'keyword', 'default': 'keyword', 'delegate': 'keyword', 'downcast': 'keyword', 'downto': 'keyword', 'elif': 'keyword', 'exception': 'keyword', 'extern': 'keyword', 'finally': 'keyword', 'global': 'keyword', 'inherit': 'keyword', 'inline': 'keyword', 'interface': 'keyword', 'internal': 'keyword', 'lazy': 'keyword', 'let!': 'keyword', 'member' : 'keyword', 'module': 'keyword', 'namespace': 'keyword', 'new': 'keyword', 'null': 'keyword', 'override': 'keyword', 'private': 'keyword', 'public': 'keyword', 'return': 'keyword', 'return!': 'keyword', 'select': 'keyword', 'static': 'keyword', 'struct': 'keyword', 'upcast': 'keyword', 'use': 'keyword', 'use!': 'keyword', 'val': 'keyword', 'when': 'keyword', 'yield': 'keyword', 'yield!': 'keyword', 'List': 'builtin', 'Seq': 'builtin', 'Map': 'builtin', 'Set': 'builtin', 'int': 'builtin', 'string': 'builtin', 'raise': 'builtin', 'failwith': 'builtin', 'not': 'builtin', 'true': 'builtin', 'false': 'builtin' }, slashComments: true }); }); plugins/file-manager-advanced/application/library/codemirror/mode/modelica/index.html000064400000003727147176754550025167 0ustar00 CodeMirror: Modelica mode

Modelica mode

Simple mode that tries to handle Modelica as well as it can.

MIME types defined: text/x-modelica (Modlica code).

plugins/file-manager-advanced/application/library/codemirror/mode/modelica/modelica.js000064400000015422147176754550025300 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE // Modelica support for CodeMirror, copyright (c) by Lennart Ochel (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); }) (function(CodeMirror) { "use strict"; CodeMirror.defineMode("modelica", function(config, parserConfig) { var indentUnit = config.indentUnit; var keywords = parserConfig.keywords || {}; var builtin = parserConfig.builtin || {}; var atoms = parserConfig.atoms || {}; var isSingleOperatorChar = /[;=\(:\),{}.*<>+\-\/^\[\]]/; var isDoubleOperatorChar = /(:=|<=|>=|==|<>|\.\+|\.\-|\.\*|\.\/|\.\^)/; var isDigit = /[0-9]/; var isNonDigit = /[_a-zA-Z]/; function tokenLineComment(stream, state) { stream.skipToEnd(); state.tokenize = null; return "comment"; } function tokenBlockComment(stream, state) { var maybeEnd = false, ch; while (ch = stream.next()) { if (maybeEnd && ch == "/") { state.tokenize = null; break; } maybeEnd = (ch == "*"); } return "comment"; } function tokenString(stream, state) { var escaped = false, ch; while ((ch = stream.next()) != null) { if (ch == '"' && !escaped) { state.tokenize = null; state.sol = false; break; } escaped = !escaped && ch == "\\"; } return "string"; } function tokenIdent(stream, state) { stream.eatWhile(isDigit); while (stream.eat(isDigit) || stream.eat(isNonDigit)) { } var cur = stream.current(); if(state.sol && (cur == "package" || cur == "model" || cur == "when" || cur == "connector")) state.level++; else if(state.sol && cur == "end" && state.level > 0) state.level--; state.tokenize = null; state.sol = false; if (keywords.propertyIsEnumerable(cur)) return "keyword"; else if (builtin.propertyIsEnumerable(cur)) return "builtin"; else if (atoms.propertyIsEnumerable(cur)) return "atom"; else return "variable"; } function tokenQIdent(stream, state) { while (stream.eat(/[^']/)) { } state.tokenize = null; state.sol = false; if(stream.eat("'")) return "variable"; else return "error"; } function tokenUnsignedNuber(stream, state) { stream.eatWhile(isDigit); if (stream.eat('.')) { stream.eatWhile(isDigit); } if (stream.eat('e') || stream.eat('E')) { if (!stream.eat('-')) stream.eat('+'); stream.eatWhile(isDigit); } state.tokenize = null; state.sol = false; return "number"; } // Interface return { startState: function() { return { tokenize: null, level: 0, sol: true }; }, token: function(stream, state) { if(state.tokenize != null) { return state.tokenize(stream, state); } if(stream.sol()) { state.sol = true; } // WHITESPACE if(stream.eatSpace()) { state.tokenize = null; return null; } var ch = stream.next(); // LINECOMMENT if(ch == '/' && stream.eat('/')) { state.tokenize = tokenLineComment; } // BLOCKCOMMENT else if(ch == '/' && stream.eat('*')) { state.tokenize = tokenBlockComment; } // TWO SYMBOL TOKENS else if(isDoubleOperatorChar.test(ch+stream.peek())) { stream.next(); state.tokenize = null; return "operator"; } // SINGLE SYMBOL TOKENS else if(isSingleOperatorChar.test(ch)) { state.tokenize = null; return "operator"; } // IDENT else if(isNonDigit.test(ch)) { state.tokenize = tokenIdent; } // Q-IDENT else if(ch == "'" && stream.peek() && stream.peek() != "'") { state.tokenize = tokenQIdent; } // STRING else if(ch == '"') { state.tokenize = tokenString; } // UNSIGNED_NUBER else if(isDigit.test(ch)) { state.tokenize = tokenUnsignedNuber; } // ERROR else { state.tokenize = null; return "error"; } return state.tokenize(stream, state); }, indent: function(state, textAfter) { if (state.tokenize != null) return CodeMirror.Pass; var level = state.level; if(/(algorithm)/.test(textAfter)) level--; if(/(equation)/.test(textAfter)) level--; if(/(initial algorithm)/.test(textAfter)) level--; if(/(initial equation)/.test(textAfter)) level--; if(/(end)/.test(textAfter)) level--; if(level > 0) return indentUnit*level; else return 0; }, blockCommentStart: "/*", blockCommentEnd: "*/", lineComment: "//" }; }); function words(str) { var obj = {}, words = str.split(" "); for (var i=0; i CodeMirror: MscGen mode

MscGen mode

Xù mode

MsGenny mode

Simple mode for highlighting MscGen and two derived sequence chart languages.

MIME types defined: text/x-mscgen text/x-xu text/x-msgenny

plugins/file-manager-advanced/application/library/codemirror/mode/mscgen/mscgen.js000064400000014573147176754550024504 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE // mode(s) for the sequence chart dsl's mscgen, xù and msgenny // For more information on mscgen, see the site of the original author: // http://www.mcternan.me.uk/mscgen // // This mode for mscgen and the two derivative languages were // originally made for use in the mscgen_js interpreter // (https://sverweij.github.io/mscgen_js) (function(mod) { if ( typeof exports == "object" && typeof module == "object")// CommonJS mod(require("../../lib/codemirror")); else if ( typeof define == "function" && define.amd)// AMD define(["../../lib/codemirror"], mod); else// Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; var languages = { mscgen: { "keywords" : ["msc"], "options" : ["hscale", "width", "arcgradient", "wordwraparcs"], "attributes" : ["label", "idurl", "id", "url", "linecolor", "linecolour", "textcolor", "textcolour", "textbgcolor", "textbgcolour", "arclinecolor", "arclinecolour", "arctextcolor", "arctextcolour", "arctextbgcolor", "arctextbgcolour", "arcskip"], "brackets" : ["\\{", "\\}"], // [ and ] are brackets too, but these get handled in with lists "arcsWords" : ["note", "abox", "rbox", "box"], "arcsOthers" : ["\\|\\|\\|", "\\.\\.\\.", "---", "--", "<->", "==", "<<=>>", "<=>", "\\.\\.", "<<>>", "::", "<:>", "->", "=>>", "=>", ">>", ":>", "<-", "<<=", "<=", "<<", "<:", "x-", "-x"], "singlecomment" : ["//", "#"], "operators" : ["="] }, xu: { "keywords" : ["msc"], "options" : ["hscale", "width", "arcgradient", "wordwraparcs", "watermark"], "attributes" : ["label", "idurl", "id", "url", "linecolor", "linecolour", "textcolor", "textcolour", "textbgcolor", "textbgcolour", "arclinecolor", "arclinecolour", "arctextcolor", "arctextcolour", "arctextbgcolor", "arctextbgcolour", "arcskip"], "brackets" : ["\\{", "\\}"], // [ and ] are brackets too, but these get handled in with lists "arcsWords" : ["note", "abox", "rbox", "box", "alt", "else", "opt", "break", "par", "seq", "strict", "neg", "critical", "ignore", "consider", "assert", "loop", "ref", "exc"], "arcsOthers" : ["\\|\\|\\|", "\\.\\.\\.", "---", "--", "<->", "==", "<<=>>", "<=>", "\\.\\.", "<<>>", "::", "<:>", "->", "=>>", "=>", ">>", ":>", "<-", "<<=", "<=", "<<", "<:", "x-", "-x"], "singlecomment" : ["//", "#"], "operators" : ["="] }, msgenny: { "keywords" : null, "options" : ["hscale", "width", "arcgradient", "wordwraparcs", "watermark"], "attributes" : null, "brackets" : ["\\{", "\\}"], "arcsWords" : ["note", "abox", "rbox", "box", "alt", "else", "opt", "break", "par", "seq", "strict", "neg", "critical", "ignore", "consider", "assert", "loop", "ref", "exc"], "arcsOthers" : ["\\|\\|\\|", "\\.\\.\\.", "---", "--", "<->", "==", "<<=>>", "<=>", "\\.\\.", "<<>>", "::", "<:>", "->", "=>>", "=>", ">>", ":>", "<-", "<<=", "<=", "<<", "<:", "x-", "-x"], "singlecomment" : ["//", "#"], "operators" : ["="] } } CodeMirror.defineMode("mscgen", function(_, modeConfig) { var language = languages[modeConfig && modeConfig.language || "mscgen"] return { startState: startStateFn, copyState: copyStateFn, token: produceTokenFunction(language), lineComment : "#", blockCommentStart : "/*", blockCommentEnd : "*/" }; }); CodeMirror.defineMIME("text/x-mscgen", "mscgen"); CodeMirror.defineMIME("text/x-xu", {name: "mscgen", language: "xu"}); CodeMirror.defineMIME("text/x-msgenny", {name: "mscgen", language: "msgenny"}); function wordRegexpBoundary(pWords) { return new RegExp("\\b(" + pWords.join("|") + ")\\b", "i"); } function wordRegexp(pWords) { return new RegExp("(" + pWords.join("|") + ")", "i"); } function startStateFn() { return { inComment : false, inString : false, inAttributeList : false, inScript : false }; } function copyStateFn(pState) { return { inComment : pState.inComment, inString : pState.inString, inAttributeList : pState.inAttributeList, inScript : pState.inScript }; } function produceTokenFunction(pConfig) { return function(pStream, pState) { if (pStream.match(wordRegexp(pConfig.brackets), true, true)) { return "bracket"; } /* comments */ if (!pState.inComment) { if (pStream.match(/\/\*[^\*\/]*/, true, true)) { pState.inComment = true; return "comment"; } if (pStream.match(wordRegexp(pConfig.singlecomment), true, true)) { pStream.skipToEnd(); return "comment"; } } if (pState.inComment) { if (pStream.match(/[^\*\/]*\*\//, true, true)) pState.inComment = false; else pStream.skipToEnd(); return "comment"; } /* strings */ if (!pState.inString && pStream.match(/\"(\\\"|[^\"])*/, true, true)) { pState.inString = true; return "string"; } if (pState.inString) { if (pStream.match(/[^\"]*\"/, true, true)) pState.inString = false; else pStream.skipToEnd(); return "string"; } /* keywords & operators */ if (!!pConfig.keywords && pStream.match(wordRegexpBoundary(pConfig.keywords), true, true)) return "keyword"; if (pStream.match(wordRegexpBoundary(pConfig.options), true, true)) return "keyword"; if (pStream.match(wordRegexpBoundary(pConfig.arcsWords), true, true)) return "keyword"; if (pStream.match(wordRegexp(pConfig.arcsOthers), true, true)) return "keyword"; if (!!pConfig.operators && pStream.match(wordRegexp(pConfig.operators), true, true)) return "operator"; /* attribute lists */ if (!pConfig.inAttributeList && !!pConfig.attributes && pStream.match(/\[/, true, true)) { pConfig.inAttributeList = true; return "bracket"; } if (pConfig.inAttributeList) { if (pConfig.attributes !== null && pStream.match(wordRegexpBoundary(pConfig.attributes), true, true)) { return "attribute"; } if (pStream.match(/]/, true, true)) { pConfig.inAttributeList = false; return "bracket"; } } pStream.next(); return "base"; }; } }); plugins/file-manager-advanced/application/library/codemirror/mode/mscgen/mscgen_test.js000064400000006777147176754550025552 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function() { var mode = CodeMirror.getMode({indentUnit: 2}, "mscgen"); function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } MT("empty chart", "[keyword msc][bracket {]", "[base ]", "[bracket }]" ); MT("comments", "[comment // a single line comment]", "[comment # another single line comment /* and */ ignored here]", "[comment /* A multi-line comment even though it contains]", "[comment msc keywords and \"quoted text\"*/]"); MT("strings", "[string \"// a string\"]", "[string \"a string running over]", "[string two lines\"]", "[string \"with \\\"escaped quote\"]" ); MT("xù/ msgenny keywords classify as 'base'", "[base watermark]", "[base alt loop opt ref else break par seq assert]" ); MT("mscgen options classify as keyword", "[keyword hscale]", "[keyword width]", "[keyword arcgradient]", "[keyword wordwraparcs]" ); MT("mscgen arcs classify as keyword", "[keyword note]","[keyword abox]","[keyword rbox]","[keyword box]", "[keyword |||...---]", "[keyword ..--==::]", "[keyword ->]", "[keyword <-]", "[keyword <->]", "[keyword =>]", "[keyword <=]", "[keyword <=>]", "[keyword =>>]", "[keyword <<=]", "[keyword <<=>>]", "[keyword >>]", "[keyword <<]", "[keyword <<>>]", "[keyword -x]", "[keyword x-]", "[keyword -X]", "[keyword X-]", "[keyword :>]", "[keyword <:]", "[keyword <:>]" ); MT("within an attribute list, attributes classify as attribute", "[bracket [[][attribute label]", "[attribute id]","[attribute url]","[attribute idurl]", "[attribute linecolor]","[attribute linecolour]","[attribute textcolor]","[attribute textcolour]","[attribute textbgcolor]","[attribute textbgcolour]", "[attribute arclinecolor]","[attribute arclinecolour]","[attribute arctextcolor]","[attribute arctextcolour]","[attribute arctextbgcolor]","[attribute arctextbgcolour]", "[attribute arcskip][bracket ]]]" ); MT("outside an attribute list, attributes classify as base", "[base label]", "[base id]","[base url]","[base idurl]", "[base linecolor]","[base linecolour]","[base textcolor]","[base textcolour]","[base textbgcolor]","[base textbgcolour]", "[base arclinecolor]","[base arclinecolour]","[base arctextcolor]","[base arctextcolour]","[base arctextbgcolor]","[base arctextbgcolour]", "[base arcskip]" ); MT("a typical program", "[comment # typical mscgen program]", "[keyword msc][base ][bracket {]", "[keyword wordwraparcs][operator =][string \"true\"][base , ][keyword hscale][operator =][string \"0.8\"][keyword arcgradient][operator =][base 30;]", "[base a][bracket [[][attribute label][operator =][string \"Entity A\"][bracket ]]][base ,]", "[base b][bracket [[][attribute label][operator =][string \"Entity B\"][bracket ]]][base ,]", "[base c][bracket [[][attribute label][operator =][string \"Entity C\"][bracket ]]][base ;]", "[base a ][keyword =>>][base b][bracket [[][attribute label][operator =][string \"Hello entity B\"][bracket ]]][base ;]", "[base a ][keyword <<][base b][bracket [[][attribute label][operator =][string \"Here's an answer dude!\"][bracket ]]][base ;]", "[base c ][keyword :>][base *][bracket [[][attribute label][operator =][string \"What about me?\"][base , ][attribute textcolor][operator =][base red][bracket ]]][base ;]", "[bracket }]" ); })(); plugins/file-manager-advanced/application/library/codemirror/mode/mscgen/msgenny_test.js000064400000006031147176754550025735 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function() { var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-msgenny"); function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), "msgenny"); } MT("comments", "[comment // a single line comment]", "[comment # another single line comment /* and */ ignored here]", "[comment /* A multi-line comment even though it contains]", "[comment msc keywords and \"quoted text\"*/]"); MT("strings", "[string \"// a string\"]", "[string \"a string running over]", "[string two lines\"]", "[string \"with \\\"escaped quote\"]" ); MT("xù/ msgenny keywords classify as 'keyword'", "[keyword watermark]", "[keyword alt]","[keyword loop]","[keyword opt]","[keyword ref]","[keyword else]","[keyword break]","[keyword par]","[keyword seq]","[keyword assert]" ); MT("mscgen options classify as keyword", "[keyword hscale]", "[keyword width]", "[keyword arcgradient]", "[keyword wordwraparcs]" ); MT("mscgen arcs classify as keyword", "[keyword note]","[keyword abox]","[keyword rbox]","[keyword box]", "[keyword |||...---]", "[keyword ..--==::]", "[keyword ->]", "[keyword <-]", "[keyword <->]", "[keyword =>]", "[keyword <=]", "[keyword <=>]", "[keyword =>>]", "[keyword <<=]", "[keyword <<=>>]", "[keyword >>]", "[keyword <<]", "[keyword <<>>]", "[keyword -x]", "[keyword x-]", "[keyword -X]", "[keyword X-]", "[keyword :>]", "[keyword <:]", "[keyword <:>]" ); MT("within an attribute list, mscgen/ xù attributes classify as base", "[base [[label]", "[base idurl id url]", "[base linecolor linecolour textcolor textcolour textbgcolor textbgcolour]", "[base arclinecolor arclinecolour arctextcolor arctextcolour arctextbgcolor arctextbgcolour]", "[base arcskip]]]" ); MT("outside an attribute list, mscgen/ xù attributes classify as base", "[base label]", "[base idurl id url]", "[base linecolor linecolour textcolor textcolour textbgcolor textbgcolour]", "[base arclinecolor arclinecolour arctextcolor arctextcolour arctextbgcolor arctextbgcolour]", "[base arcskip]" ); MT("a typical program", "[comment # typical msgenny program]", "[keyword wordwraparcs][operator =][string \"true\"][base , ][keyword hscale][operator =][string \"0.8\"][base , ][keyword arcgradient][operator =][base 30;]", "[base a : ][string \"Entity A\"][base ,]", "[base b : Entity B,]", "[base c : Entity C;]", "[base a ][keyword =>>][base b: ][string \"Hello entity B\"][base ;]", "[base a ][keyword alt][base c][bracket {]", "[base a ][keyword <<][base b: ][string \"Here's an answer dude!\"][base ;]", "[keyword ---][base : ][string \"sorry, won't march - comm glitch\"]", "[base a ][keyword x-][base b: ][string \"Here's an answer dude! (won't arrive...)\"][base ;]", "[bracket }]", "[base c ][keyword :>][base *: What about me?;]" ); })(); plugins/file-manager-advanced/application/library/codemirror/mode/mscgen/xu_test.js000064400000007150147176754550024714 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function() { var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-xu"); function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), "xu"); } MT("empty chart", "[keyword msc][bracket {]", "[base ]", "[bracket }]" ); MT("comments", "[comment // a single line comment]", "[comment # another single line comment /* and */ ignored here]", "[comment /* A multi-line comment even though it contains]", "[comment msc keywords and \"quoted text\"*/]"); MT("strings", "[string \"// a string\"]", "[string \"a string running over]", "[string two lines\"]", "[string \"with \\\"escaped quote\"]" ); MT("xù/ msgenny keywords classify as 'keyword'", "[keyword watermark]", "[keyword alt]","[keyword loop]","[keyword opt]","[keyword ref]","[keyword else]","[keyword break]","[keyword par]","[keyword seq]","[keyword assert]" ); MT("mscgen options classify as keyword", "[keyword hscale]", "[keyword width]", "[keyword arcgradient]", "[keyword wordwraparcs]" ); MT("mscgen arcs classify as keyword", "[keyword note]","[keyword abox]","[keyword rbox]","[keyword box]", "[keyword |||...---]", "[keyword ..--==::]", "[keyword ->]", "[keyword <-]", "[keyword <->]", "[keyword =>]", "[keyword <=]", "[keyword <=>]", "[keyword =>>]", "[keyword <<=]", "[keyword <<=>>]", "[keyword >>]", "[keyword <<]", "[keyword <<>>]", "[keyword -x]", "[keyword x-]", "[keyword -X]", "[keyword X-]", "[keyword :>]", "[keyword <:]", "[keyword <:>]" ); MT("within an attribute list, attributes classify as attribute", "[bracket [[][attribute label]", "[attribute id]","[attribute url]","[attribute idurl]", "[attribute linecolor]","[attribute linecolour]","[attribute textcolor]","[attribute textcolour]","[attribute textbgcolor]","[attribute textbgcolour]", "[attribute arclinecolor]","[attribute arclinecolour]","[attribute arctextcolor]","[attribute arctextcolour]","[attribute arctextbgcolor]","[attribute arctextbgcolour]", "[attribute arcskip][bracket ]]]" ); MT("outside an attribute list, attributes classify as base", "[base label]", "[base id]","[base url]","[base idurl]", "[base linecolor]","[base linecolour]","[base textcolor]","[base textcolour]","[base textbgcolor]","[base textbgcolour]", "[base arclinecolor]","[base arclinecolour]","[base arctextcolor]","[base arctextcolour]","[base arctextbgcolor]","[base arctextbgcolour]", "[base arcskip]" ); MT("a typical program", "[comment # typical mscgen program]", "[keyword msc][base ][bracket {]", "[keyword wordwraparcs][operator =][string \"true\"][keyword hscale][operator =][string \"0.8\"][keyword arcgradient][operator =][base 30;]", "[base a][bracket [[][attribute label][operator =][string \"Entity A\"][bracket ]]][base ,]", "[base b][bracket [[][attribute label][operator =][string \"Entity B\"][bracket ]]][base ,]", "[base c][bracket [[][attribute label][operator =][string \"Entity C\"][bracket ]]][base ;]", "[base a ][keyword =>>][base b][bracket [[][attribute label][operator =][string \"Hello entity B\"][bracket ]]][base ;]", "[base a ][keyword <<][base b][bracket [[][attribute label][operator =][string \"Here's an answer dude!\"][bracket ]]][base ;]", "[base c ][keyword :>][base *][bracket [[][attribute label][operator =][string \"What about me?\"][base , ][attribute textcolor][operator =][base red][bracket ]]][base ;]", "[bracket }]" ); })(); plugins/file-manager-advanced/application/library/codemirror/mode/mumps/index.html000064400000005060147176754550024543 0ustar00 CodeMirror: MUMPS mode

MUMPS mode

plugins/file-manager-advanced/application/library/codemirror/mode/mumps/mumps.js000064400000012352147176754550024247 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE /* This MUMPS Language script was constructed using vbscript.js as a template. */ (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("mumps", function() { function wordRegexp(words) { return new RegExp("^((" + words.join(")|(") + "))\\b", "i"); } var singleOperators = new RegExp("^[\\+\\-\\*/&#!_?\\\\<>=\\'\\[\\]]"); var doubleOperators = new RegExp("^(('=)|(<=)|(>=)|('>)|('<)|([[)|(]])|(^$))"); var singleDelimiters = new RegExp("^[\\.,:]"); var brackets = new RegExp("[()]"); var identifiers = new RegExp("^[%A-Za-z][A-Za-z0-9]*"); var commandKeywords = ["break","close","do","else","for","goto", "halt", "hang", "if", "job","kill","lock","merge","new","open", "quit", "read", "set", "tcommit", "trollback", "tstart", "use", "view", "write", "xecute", "b","c","d","e","f","g", "h", "i", "j","k","l","m","n","o", "q", "r", "s", "tc", "tro", "ts", "u", "v", "w", "x"]; // The following list includes instrinsic functions _and_ special variables var intrinsicFuncsWords = ["\\$ascii", "\\$char", "\\$data", "\\$ecode", "\\$estack", "\\$etrap", "\\$extract", "\\$find", "\\$fnumber", "\\$get", "\\$horolog", "\\$io", "\\$increment", "\\$job", "\\$justify", "\\$length", "\\$name", "\\$next", "\\$order", "\\$piece", "\\$qlength", "\\$qsubscript", "\\$query", "\\$quit", "\\$random", "\\$reverse", "\\$select", "\\$stack", "\\$test", "\\$text", "\\$translate", "\\$view", "\\$x", "\\$y", "\\$a", "\\$c", "\\$d", "\\$e", "\\$ec", "\\$es", "\\$et", "\\$f", "\\$fn", "\\$g", "\\$h", "\\$i", "\\$j", "\\$l", "\\$n", "\\$na", "\\$o", "\\$p", "\\$q", "\\$ql", "\\$qs", "\\$r", "\\$re", "\\$s", "\\$st", "\\$t", "\\$tr", "\\$v", "\\$z"]; var intrinsicFuncs = wordRegexp(intrinsicFuncsWords); var command = wordRegexp(commandKeywords); function tokenBase(stream, state) { if (stream.sol()) { state.label = true; state.commandMode = 0; } // The character has meaning in MUMPS. Ignoring consecutive // spaces would interfere with interpreting whether the next non-space // character belongs to the command or argument context. // Examine each character and update a mode variable whose interpretation is: // >0 => command 0 => argument <0 => command post-conditional var ch = stream.peek(); if (ch == " " || ch == "\t") { // Pre-process state.label = false; if (state.commandMode == 0) state.commandMode = 1; else if ((state.commandMode < 0) || (state.commandMode == 2)) state.commandMode = 0; } else if ((ch != ".") && (state.commandMode > 0)) { if (ch == ":") state.commandMode = -1; // SIS - Command post-conditional else state.commandMode = 2; } // Do not color parameter list as line tag if ((ch === "(") || (ch === "\u0009")) state.label = false; // MUMPS comment starts with ";" if (ch === ";") { stream.skipToEnd(); return "comment"; } // Number Literals // SIS/RLM - MUMPS permits canonic number followed by concatenate operator if (stream.match(/^[-+]?\d+(\.\d+)?([eE][-+]?\d+)?/)) return "number"; // Handle Strings if (ch == '"') { if (stream.skipTo('"')) { stream.next(); return "string"; } else { stream.skipToEnd(); return "error"; } } // Handle operators and Delimiters if (stream.match(doubleOperators) || stream.match(singleOperators)) return "operator"; // Prevents leading "." in DO block from falling through to error if (stream.match(singleDelimiters)) return null; if (brackets.test(ch)) { stream.next(); return "bracket"; } if (state.commandMode > 0 && stream.match(command)) return "variable-2"; if (stream.match(intrinsicFuncs)) return "builtin"; if (stream.match(identifiers)) return "variable"; // Detect dollar-sign when not a documented intrinsic function // "^" may introduce a GVN or SSVN - Color same as function if (ch === "$" || ch === "^") { stream.next(); return "builtin"; } // MUMPS Indirection if (ch === "@") { stream.next(); return "string-2"; } if (/[\w%]/.test(ch)) { stream.eatWhile(/[\w%]/); return "variable"; } // Handle non-detected items stream.next(); return "error"; } return { startState: function() { return { label: false, commandMode: 0 }; }, token: function(stream, state) { var style = tokenBase(stream, state); if (state.label) return "tag"; return style; } }; }); CodeMirror.defineMIME("text/x-mumps", "mumps"); }); plugins/file-manager-advanced/application/library/codemirror/mode/nginx/index.html000064400000012167147176754550024533 0ustar00 CodeMirror: NGINX mode

NGINX mode

MIME types defined: text/nginx.

plugins/file-manager-advanced/application/library/codemirror/mode/nginx/nginx.js000064400000023664147176754550024223 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("nginx", function(config) { function words(str) { var obj = {}, words = str.split(" "); for (var i = 0; i < words.length; ++i) obj[words[i]] = true; return obj; } var keywords = words( /* ngxDirectiveControl */ "break return rewrite set" + /* ngxDirective */ " accept_mutex accept_mutex_delay access_log add_after_body add_before_body add_header addition_types aio alias allow ancient_browser ancient_browser_value auth_basic auth_basic_user_file auth_http auth_http_header auth_http_timeout autoindex autoindex_exact_size autoindex_localtime charset charset_types client_body_buffer_size client_body_in_file_only client_body_in_single_buffer client_body_temp_path client_body_timeout client_header_buffer_size client_header_timeout client_max_body_size connection_pool_size create_full_put_path daemon dav_access dav_methods debug_connection debug_points default_type degradation degrade deny devpoll_changes devpoll_events directio directio_alignment empty_gif env epoll_events error_log eventport_events expires fastcgi_bind fastcgi_buffer_size fastcgi_buffers fastcgi_busy_buffers_size fastcgi_cache fastcgi_cache_key fastcgi_cache_methods fastcgi_cache_min_uses fastcgi_cache_path fastcgi_cache_use_stale fastcgi_cache_valid fastcgi_catch_stderr fastcgi_connect_timeout fastcgi_hide_header fastcgi_ignore_client_abort fastcgi_ignore_headers fastcgi_index fastcgi_intercept_errors fastcgi_max_temp_file_size fastcgi_next_upstream fastcgi_param fastcgi_pass_header fastcgi_pass_request_body fastcgi_pass_request_headers fastcgi_read_timeout fastcgi_send_lowat fastcgi_send_timeout fastcgi_split_path_info fastcgi_store fastcgi_store_access fastcgi_temp_file_write_size fastcgi_temp_path fastcgi_upstream_fail_timeout fastcgi_upstream_max_fails flv geoip_city geoip_country google_perftools_profiles gzip gzip_buffers gzip_comp_level gzip_disable gzip_hash gzip_http_version gzip_min_length gzip_no_buffer gzip_proxied gzip_static gzip_types gzip_vary gzip_window if_modified_since ignore_invalid_headers image_filter image_filter_buffer image_filter_jpeg_quality image_filter_transparency imap_auth imap_capabilities imap_client_buffer index ip_hash keepalive_requests keepalive_timeout kqueue_changes kqueue_events large_client_header_buffers limit_conn limit_conn_log_level limit_rate limit_rate_after limit_req limit_req_log_level limit_req_zone limit_zone lingering_time lingering_timeout lock_file log_format log_not_found log_subrequest map_hash_bucket_size map_hash_max_size master_process memcached_bind memcached_buffer_size memcached_connect_timeout memcached_next_upstream memcached_read_timeout memcached_send_timeout memcached_upstream_fail_timeout memcached_upstream_max_fails merge_slashes min_delete_depth modern_browser modern_browser_value msie_padding msie_refresh multi_accept open_file_cache open_file_cache_errors open_file_cache_events open_file_cache_min_uses open_file_cache_valid open_log_file_cache output_buffers override_charset perl perl_modules perl_require perl_set pid pop3_auth pop3_capabilities port_in_redirect postpone_gzipping postpone_output protocol proxy proxy_bind proxy_buffer proxy_buffer_size proxy_buffering proxy_buffers proxy_busy_buffers_size proxy_cache proxy_cache_key proxy_cache_methods proxy_cache_min_uses proxy_cache_path proxy_cache_use_stale proxy_cache_valid proxy_connect_timeout proxy_headers_hash_bucket_size proxy_headers_hash_max_size proxy_hide_header proxy_ignore_client_abort proxy_ignore_headers proxy_intercept_errors proxy_max_temp_file_size proxy_method proxy_next_upstream proxy_pass_error_message proxy_pass_header proxy_pass_request_body proxy_pass_request_headers proxy_read_timeout proxy_redirect proxy_send_lowat proxy_send_timeout proxy_set_body proxy_set_header proxy_ssl_session_reuse proxy_store proxy_store_access proxy_temp_file_write_size proxy_temp_path proxy_timeout proxy_upstream_fail_timeout proxy_upstream_max_fails random_index read_ahead real_ip_header recursive_error_pages request_pool_size reset_timedout_connection resolver resolver_timeout rewrite_log rtsig_overflow_events rtsig_overflow_test rtsig_overflow_threshold rtsig_signo satisfy secure_link_secret send_lowat send_timeout sendfile sendfile_max_chunk server_name_in_redirect server_names_hash_bucket_size server_names_hash_max_size server_tokens set_real_ip_from smtp_auth smtp_capabilities smtp_client_buffer smtp_greeting_delay so_keepalive source_charset ssi ssi_ignore_recycled_buffers ssi_min_file_chunk ssi_silent_errors ssi_types ssi_value_length ssl ssl_certificate ssl_certificate_key ssl_ciphers ssl_client_certificate ssl_crl ssl_dhparam ssl_engine ssl_prefer_server_ciphers ssl_protocols ssl_session_cache ssl_session_timeout ssl_verify_client ssl_verify_depth starttls stub_status sub_filter sub_filter_once sub_filter_types tcp_nodelay tcp_nopush thread_stack_size timeout timer_resolution types_hash_bucket_size types_hash_max_size underscores_in_headers uninitialized_variable_warn use user userid userid_domain userid_expires userid_mark userid_name userid_p3p userid_path userid_service valid_referers variables_hash_bucket_size variables_hash_max_size worker_connections worker_cpu_affinity worker_priority worker_processes worker_rlimit_core worker_rlimit_nofile worker_rlimit_sigpending worker_threads working_directory xclient xml_entities xslt_stylesheet xslt_typesdrew@li229-23" ); var keywords_block = words( /* ngxDirectiveBlock */ "http mail events server types location upstream charset_map limit_except if geo map" ); var keywords_important = words( /* ngxDirectiveImportant */ "include root server server_name listen internal proxy_pass memcached_pass fastcgi_pass try_files" ); var indentUnit = config.indentUnit, type; function ret(style, tp) {type = tp; return style;} function tokenBase(stream, state) { stream.eatWhile(/[\w\$_]/); var cur = stream.current(); if (keywords.propertyIsEnumerable(cur)) { return "keyword"; } else if (keywords_block.propertyIsEnumerable(cur)) { return "variable-2"; } else if (keywords_important.propertyIsEnumerable(cur)) { return "string-2"; } /**/ var ch = stream.next(); if (ch == "@") {stream.eatWhile(/[\w\\\-]/); return ret("meta", stream.current());} else if (ch == "/" && stream.eat("*")) { state.tokenize = tokenCComment; return tokenCComment(stream, state); } else if (ch == "<" && stream.eat("!")) { state.tokenize = tokenSGMLComment; return tokenSGMLComment(stream, state); } else if (ch == "=") ret(null, "compare"); else if ((ch == "~" || ch == "|") && stream.eat("=")) return ret(null, "compare"); else if (ch == "\"" || ch == "'") { state.tokenize = tokenString(ch); return state.tokenize(stream, state); } else if (ch == "#") { stream.skipToEnd(); return ret("comment", "comment"); } else if (ch == "!") { stream.match(/^\s*\w*/); return ret("keyword", "important"); } else if (/\d/.test(ch)) { stream.eatWhile(/[\w.%]/); return ret("number", "unit"); } else if (/[,.+>*\/]/.test(ch)) { return ret(null, "select-op"); } else if (/[;{}:\[\]]/.test(ch)) { return ret(null, ch); } else { stream.eatWhile(/[\w\\\-]/); return ret("variable", "variable"); } } function tokenCComment(stream, state) { var maybeEnd = false, ch; while ((ch = stream.next()) != null) { if (maybeEnd && ch == "/") { state.tokenize = tokenBase; break; } maybeEnd = (ch == "*"); } return ret("comment", "comment"); } function tokenSGMLComment(stream, state) { var dashes = 0, ch; while ((ch = stream.next()) != null) { if (dashes >= 2 && ch == ">") { state.tokenize = tokenBase; break; } dashes = (ch == "-") ? dashes + 1 : 0; } return ret("comment", "comment"); } function tokenString(quote) { return function(stream, state) { var escaped = false, ch; while ((ch = stream.next()) != null) { if (ch == quote && !escaped) break; escaped = !escaped && ch == "\\"; } if (!escaped) state.tokenize = tokenBase; return ret("string", "string"); }; } return { startState: function(base) { return {tokenize: tokenBase, baseIndent: base || 0, stack: []}; }, token: function(stream, state) { if (stream.eatSpace()) return null; type = null; var style = state.tokenize(stream, state); var context = state.stack[state.stack.length-1]; if (type == "hash" && context == "rule") style = "atom"; else if (style == "variable") { if (context == "rule") style = "number"; else if (!context || context == "@media{") style = "tag"; } if (context == "rule" && /^[\{\};]$/.test(type)) state.stack.pop(); if (type == "{") { if (context == "@media") state.stack[state.stack.length-1] = "@media{"; else state.stack.push("{"); } else if (type == "}") state.stack.pop(); else if (type == "@media") state.stack.push("@media"); else if (context == "{" && type != "comment") state.stack.push("rule"); return style; }, indent: function(state, textAfter) { var n = state.stack.length; if (/^\}/.test(textAfter)) n -= state.stack[state.stack.length-1] == "rule" ? 2 : 1; return state.baseIndent + n * indentUnit; }, electricChars: "}" }; }); CodeMirror.defineMIME("text/x-nginx-conf", "nginx"); }); plugins/file-manager-advanced/application/library/codemirror/mode/nsis/index.html000064400000003344147176754550024361 0ustar00 CodeMirror: NSIS mode

NSIS mode

MIME types defined: text/x-nsis.

plugins/file-manager-advanced/application/library/codemirror/mode/nsis/nsis.js000064400000016720147176754550023700 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE // Author: Jan T. Sott (http://github.com/idleberg) (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror"), require("../../addon/mode/simple")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror", "../../addon/mode/simple"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineSimpleMode("nsis",{ start:[ // Numbers {regex: /(?:[+-]?)(?:0x[\d,a-f]+)|(?:0o[0-7]+)|(?:0b[0,1]+)|(?:\d+.?\d*)/, token: "number"}, // Strings { regex: /"(?:[^\\"]|\\.)*"?/, token: "string" }, { regex: /'(?:[^\\']|\\.)*'?/, token: "string" }, { regex: /`(?:[^\\`]|\\.)*`?/, token: "string" }, // Compile Time Commands {regex: /(?:\!(include|addincludedir|addplugindir|appendfile|cd|delfile|echo|error|execute|packhdr|finalize|getdllversion|system|tempfile|warning|verbose|define|undef|insertmacro|makensis|searchparse|searchreplace))\b/, token: "keyword"}, // Conditional Compilation {regex: /(?:\!(if(?:n?def)?|ifmacron?def|macro))\b/, token: "keyword", indent: true}, {regex: /(?:\!(else|endif|macroend))\b/, token: "keyword", dedent: true}, // Runtime Commands {regex: /\b(?:Abort|AddBrandingImage|AddSize|AllowRootDirInstall|AllowSkipFiles|AutoCloseWindow|BGFont|BGGradient|BrandingText|BringToFront|Call|CallInstDLL|Caption|ChangeUI|CheckBitmap|ClearErrors|CompletedText|ComponentText|CopyFiles|CRCCheck|CreateDirectory|CreateFont|CreateShortCut|Delete|DeleteINISec|DeleteINIStr|DeleteRegKey|DeleteRegValue|DetailPrint|DetailsButtonText|DirText|DirVar|DirVerify|EnableWindow|EnumRegKey|EnumRegValue|Exch|Exec|ExecShell|ExecWait|ExpandEnvStrings|File|FileBufSize|FileClose|FileErrorText|FileOpen|FileRead|FileReadByte|FileReadUTF16LE|FileReadWord|FileWriteUTF16LE|FileSeek|FileWrite|FileWriteByte|FileWriteWord|FindClose|FindFirst|FindNext|FindWindow|FlushINI|GetCurInstType|GetCurrentAddress|GetDlgItem|GetDLLVersion|GetDLLVersionLocal|GetErrorLevel|GetFileTime|GetFileTimeLocal|GetFullPathName|GetFunctionAddress|GetInstDirError|GetLabelAddress|GetTempFileName|Goto|HideWindow|Icon|IfAbort|IfErrors|IfFileExists|IfRebootFlag|IfSilent|InitPluginsDir|InstallButtonText|InstallColors|InstallDir|InstallDirRegKey|InstProgressFlags|InstType|InstTypeGetText|InstTypeSetText|IntCmp|IntCmpU|IntFmt|IntOp|IsWindow|LangString|LicenseBkColor|LicenseData|LicenseForceSelection|LicenseLangString|LicenseText|LoadLanguageFile|LockWindow|LogSet|LogText|ManifestDPIAware|ManifestSupportedOS|MessageBox|MiscButtonText|Name|Nop|OutFile|Page|PageCallbacks|Pop|Push|Quit|ReadEnvStr|ReadINIStr|ReadRegDWORD|ReadRegStr|Reboot|RegDLL|Rename|RequestExecutionLevel|ReserveFile|Return|RMDir|SearchPath|SectionGetFlags|SectionGetInstTypes|SectionGetSize|SectionGetText|SectionIn|SectionSetFlags|SectionSetInstTypes|SectionSetSize|SectionSetText|SendMessage|SetAutoClose|SetBrandingImage|SetCompress|SetCompressor|SetCompressorDictSize|SetCtlColors|SetCurInstType|SetDatablockOptimize|SetDateSave|SetDetailsPrint|SetDetailsView|SetErrorLevel|SetErrors|SetFileAttributes|SetFont|SetOutPath|SetOverwrite|SetPluginUnload|SetRebootFlag|SetRegView|SetShellVarContext|SetSilent|ShowInstDetails|ShowUninstDetails|ShowWindow|SilentInstall|SilentUnInstall|Sleep|SpaceTexts|StrCmp|StrCmpS|StrCpy|StrLen|SubCaption|Unicode|UninstallButtonText|UninstallCaption|UninstallIcon|UninstallSubCaption|UninstallText|UninstPage|UnRegDLL|Var|VIAddVersionKey|VIFileVersion|VIProductVersion|WindowIcon|WriteINIStr|WriteRegBin|WriteRegDWORD|WriteRegExpandStr|WriteRegStr|WriteUninstaller|XPStyle)\b/, token: "keyword"}, {regex: /\b(?:Function|PageEx|Section(?:Group)?)\b/, token: "keyword", indent: true}, {regex: /\b(?:(Function|PageEx|Section(?:Group)?)End)\b/, token: "keyword", dedent: true}, // Command Options {regex: /\b(?:ARCHIVE|FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_OFFLINE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_TEMPORARY|HIDDEN|HKCC|HKCR|HKCU|HKDD|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_DYN_DATA|HKEY_LOCAL_MACHINE|HKEY_PERFORMANCE_DATA|HKEY_USERS|HKLM|HKPD|HKU|IDABORT|IDCANCEL|IDD_DIR|IDD_INST|IDD_INSTFILES|IDD_LICENSE|IDD_SELCOM|IDD_UNINST|IDD_VERIFY|IDIGNORE|IDNO|IDOK|IDRETRY|IDYES|MB_ABORTRETRYIGNORE|MB_DEFBUTTON1|MB_DEFBUTTON2|MB_DEFBUTTON3|MB_DEFBUTTON4|MB_ICONEXCLAMATION|MB_ICONINFORMATION|MB_ICONQUESTION|MB_ICONSTOP|MB_OK|MB_OKCANCEL|MB_RETRYCANCEL|MB_RIGHT|MB_RTLREADING|MB_SETFOREGROUND|MB_TOPMOST|MB_USERICON|MB_YESNO|MB_YESNOCANCEL|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SW_HIDE|SW_SHOWDEFAULT|SW_SHOWMAXIMIZED|SW_SHOWMINIMIZED|SW_SHOWNORMAL|SYSTEM|TEMPORARY)\b/, token: "atom"}, {regex: /\b(?:admin|all|auto|both|bottom|bzip2|components|current|custom|directory|force|hide|highest|ifdiff|ifnewer|instfiles|lastused|leave|left|license|listonly|lzma|nevershow|none|normal|notset|right|show|silent|silentlog|textonly|top|try|un\.components|un\.custom|un\.directory|un\.instfiles|un\.license|uninstConfirm|user|Win10|Win7|Win8|WinVista|zlib)\b/, token: "builtin"}, // LogicLib.nsh {regex: /\$\{(?:And(?:If(?:Not)?|Unless)|Break|Case(?:Else)?|Continue|Default|Do(?:Until|While)?|Else(?:If(?:Not)?|Unless)?|End(?:If|Select|Switch)|Exit(?:Do|For|While)|For(?:Each)?|If(?:Cmd|Not(?:Then)?|Then)?|Loop(?:Until|While)?|Or(?:If(?:Not)?|Unless)|Select|Switch|Unless|While)\}/, token: "variable-2", indent: true}, // FileFunc.nsh {regex: /\$\{(?:BannerTrimPath|DirState|DriveSpace|Get(BaseName|Drives|ExeName|ExePath|FileAttributes|FileExt|FileName|FileVersion|Options|OptionsS|Parameters|Parent|Root|Size|Time)|Locate|RefreshShellIcons)\}/, token: "variable-2", dedent: true}, // Memento.nsh {regex: /\$\{(?:Memento(?:Section(?:Done|End|Restore|Save)?|UnselectedSection))\}/, token: "variable-2", dedent: true}, // TextFunc.nsh {regex: /\$\{(?:Config(?:Read|ReadS|Write|WriteS)|File(?:Join|ReadFromEnd|Recode)|Line(?:Find|Read|Sum)|Text(?:Compare|CompareS)|TrimNewLines)\}/, token: "variable-2", dedent: true}, // WinVer.nsh {regex: /\$\{(?:(?:At(?:Least|Most)|Is)(?:ServicePack|Win(?:7|8|10|95|98|200(?:0|3|8(?:R2)?)|ME|NT4|Vista|XP))|Is(?:NT|Server))\}/, token: "variable", dedent: true}, // WordFunc.nsh {regex: /\$\{(?:StrFilterS?|Version(?:Compare|Convert)|Word(?:AddS?|Find(?:(?:2|3)X)?S?|InsertS?|ReplaceS?))\}/, token: "variable-2", dedent: true}, // x64.nsh {regex: /\$\{(?:RunningX64)\}/, token: "variable", dedent: true}, {regex: /\$\{(?:Disable|Enable)X64FSRedirection\}/, token: "variable-2", dedent: true}, // Line Comment {regex: /(#|;).*/, token: "comment"}, // Block Comment {regex: /\/\*/, token: "comment", next: "comment"}, // Operator {regex: /[-+\/*=<>!]+/, token: "operator"}, // Variable {regex: /\$[\w]+/, token: "variable"}, // Constant {regex: /\${[\w]+}/,token: "variable-2"}, // Language String {regex: /\$\([\w]+\)/,token: "variable-3"} ], comment: [ {regex: /.*?\*\//, token: "comment", next: "start"}, {regex: /.*/, token: "comment"} ], meta: { electricInput: /^\s*((Function|PageEx|Section|Section(Group)?)End|(\!(endif|macroend))|\$\{(End(If|Unless|While)|Loop(Until)|Next)\})$/, blockCommentStart: "/*", blockCommentEnd: "*/", lineComment: ["#", ";"] } }); CodeMirror.defineMIME("text/x-nsis", "nsis"); }); plugins/file-manager-advanced/application/library/codemirror/mode/ntriples/index.html000064400000002515147176754550025244 0ustar00 CodeMirror: NTriples mode

NTriples mode

MIME types defined: text/n-triples.

plugins/file-manager-advanced/application/library/codemirror/mode/ntriples/ntriples.js000064400000014763147176754550025455 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE /********************************************************** * This script provides syntax highlighting support for * the Ntriples format. * Ntriples format specification: * http://www.w3.org/TR/rdf-testcases/#ntriples ***********************************************************/ /* The following expression defines the defined ASF grammar transitions. pre_subject -> { ( writing_subject_uri | writing_bnode_uri ) -> pre_predicate -> writing_predicate_uri -> pre_object -> writing_object_uri | writing_object_bnode | ( writing_object_literal -> writing_literal_lang | writing_literal_type ) -> post_object -> BEGIN } otherwise { -> ERROR } */ (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("ntriples", function() { var Location = { PRE_SUBJECT : 0, WRITING_SUB_URI : 1, WRITING_BNODE_URI : 2, PRE_PRED : 3, WRITING_PRED_URI : 4, PRE_OBJ : 5, WRITING_OBJ_URI : 6, WRITING_OBJ_BNODE : 7, WRITING_OBJ_LITERAL : 8, WRITING_LIT_LANG : 9, WRITING_LIT_TYPE : 10, POST_OBJ : 11, ERROR : 12 }; function transitState(currState, c) { var currLocation = currState.location; var ret; // Opening. if (currLocation == Location.PRE_SUBJECT && c == '<') ret = Location.WRITING_SUB_URI; else if(currLocation == Location.PRE_SUBJECT && c == '_') ret = Location.WRITING_BNODE_URI; else if(currLocation == Location.PRE_PRED && c == '<') ret = Location.WRITING_PRED_URI; else if(currLocation == Location.PRE_OBJ && c == '<') ret = Location.WRITING_OBJ_URI; else if(currLocation == Location.PRE_OBJ && c == '_') ret = Location.WRITING_OBJ_BNODE; else if(currLocation == Location.PRE_OBJ && c == '"') ret = Location.WRITING_OBJ_LITERAL; // Closing. else if(currLocation == Location.WRITING_SUB_URI && c == '>') ret = Location.PRE_PRED; else if(currLocation == Location.WRITING_BNODE_URI && c == ' ') ret = Location.PRE_PRED; else if(currLocation == Location.WRITING_PRED_URI && c == '>') ret = Location.PRE_OBJ; else if(currLocation == Location.WRITING_OBJ_URI && c == '>') ret = Location.POST_OBJ; else if(currLocation == Location.WRITING_OBJ_BNODE && c == ' ') ret = Location.POST_OBJ; else if(currLocation == Location.WRITING_OBJ_LITERAL && c == '"') ret = Location.POST_OBJ; else if(currLocation == Location.WRITING_LIT_LANG && c == ' ') ret = Location.POST_OBJ; else if(currLocation == Location.WRITING_LIT_TYPE && c == '>') ret = Location.POST_OBJ; // Closing typed and language literal. else if(currLocation == Location.WRITING_OBJ_LITERAL && c == '@') ret = Location.WRITING_LIT_LANG; else if(currLocation == Location.WRITING_OBJ_LITERAL && c == '^') ret = Location.WRITING_LIT_TYPE; // Spaces. else if( c == ' ' && ( currLocation == Location.PRE_SUBJECT || currLocation == Location.PRE_PRED || currLocation == Location.PRE_OBJ || currLocation == Location.POST_OBJ ) ) ret = currLocation; // Reset. else if(currLocation == Location.POST_OBJ && c == '.') ret = Location.PRE_SUBJECT; // Error else ret = Location.ERROR; currState.location=ret; } return { startState: function() { return { location : Location.PRE_SUBJECT, uris : [], anchors : [], bnodes : [], langs : [], types : [] }; }, token: function(stream, state) { var ch = stream.next(); if(ch == '<') { transitState(state, ch); var parsedURI = ''; stream.eatWhile( function(c) { if( c != '#' && c != '>' ) { parsedURI += c; return true; } return false;} ); state.uris.push(parsedURI); if( stream.match('#', false) ) return 'variable'; stream.next(); transitState(state, '>'); return 'variable'; } if(ch == '#') { var parsedAnchor = ''; stream.eatWhile(function(c) { if(c != '>' && c != ' ') { parsedAnchor+= c; return true; } return false;}); state.anchors.push(parsedAnchor); return 'variable-2'; } if(ch == '>') { transitState(state, '>'); return 'variable'; } if(ch == '_') { transitState(state, ch); var parsedBNode = ''; stream.eatWhile(function(c) { if( c != ' ' ) { parsedBNode += c; return true; } return false;}); state.bnodes.push(parsedBNode); stream.next(); transitState(state, ' '); return 'builtin'; } if(ch == '"') { transitState(state, ch); stream.eatWhile( function(c) { return c != '"'; } ); stream.next(); if( stream.peek() != '@' && stream.peek() != '^' ) { transitState(state, '"'); } return 'string'; } if( ch == '@' ) { transitState(state, '@'); var parsedLang = ''; stream.eatWhile(function(c) { if( c != ' ' ) { parsedLang += c; return true; } return false;}); state.langs.push(parsedLang); stream.next(); transitState(state, ' '); return 'string-2'; } if( ch == '^' ) { stream.next(); transitState(state, '^'); var parsedType = ''; stream.eatWhile(function(c) { if( c != '>' ) { parsedType += c; return true; } return false;} ); state.types.push(parsedType); stream.next(); transitState(state, '>'); return 'variable'; } if( ch == ' ' ) { transitState(state, ch); } if( ch == '.' ) { transitState(state, ch); } } }; }); CodeMirror.defineMIME("text/n-triples", "ntriples"); }); plugins/file-manager-advanced/application/library/codemirror/mode/octave/index.html000064400000003415147176754550024665 0ustar00 CodeMirror: Octave mode

Octave mode

MIME types defined: text/x-octave.

plugins/file-manager-advanced/application/library/codemirror/mode/octave/octave.js000064400000010557147176754550024514 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("octave", function() { function wordRegexp(words) { return new RegExp("^((" + words.join(")|(") + "))\\b"); } var singleOperators = new RegExp("^[\\+\\-\\*/&|\\^~<>!@'\\\\]"); var singleDelimiters = new RegExp('^[\\(\\[\\{\\},:=;]'); var doubleOperators = new RegExp("^((==)|(~=)|(<=)|(>=)|(<<)|(>>)|(\\.[\\+\\-\\*/\\^\\\\]))"); var doubleDelimiters = new RegExp("^((!=)|(\\+=)|(\\-=)|(\\*=)|(/=)|(&=)|(\\|=)|(\\^=))"); var tripleDelimiters = new RegExp("^((>>=)|(<<=))"); var expressionEnd = new RegExp("^[\\]\\)]"); var identifiers = new RegExp("^[_A-Za-z\xa1-\uffff][_A-Za-z0-9\xa1-\uffff]*"); var builtins = wordRegexp([ 'error', 'eval', 'function', 'abs', 'acos', 'atan', 'asin', 'cos', 'cosh', 'exp', 'log', 'prod', 'sum', 'log10', 'max', 'min', 'sign', 'sin', 'sinh', 'sqrt', 'tan', 'reshape', 'break', 'zeros', 'default', 'margin', 'round', 'ones', 'rand', 'syn', 'ceil', 'floor', 'size', 'clear', 'zeros', 'eye', 'mean', 'std', 'cov', 'det', 'eig', 'inv', 'norm', 'rank', 'trace', 'expm', 'logm', 'sqrtm', 'linspace', 'plot', 'title', 'xlabel', 'ylabel', 'legend', 'text', 'grid', 'meshgrid', 'mesh', 'num2str', 'fft', 'ifft', 'arrayfun', 'cellfun', 'input', 'fliplr', 'flipud', 'ismember' ]); var keywords = wordRegexp([ 'return', 'case', 'switch', 'else', 'elseif', 'end', 'endif', 'endfunction', 'if', 'otherwise', 'do', 'for', 'while', 'try', 'catch', 'classdef', 'properties', 'events', 'methods', 'global', 'persistent', 'endfor', 'endwhile', 'printf', 'sprintf', 'disp', 'until', 'continue', 'pkg' ]); // tokenizers function tokenTranspose(stream, state) { if (!stream.sol() && stream.peek() === '\'') { stream.next(); state.tokenize = tokenBase; return 'operator'; } state.tokenize = tokenBase; return tokenBase(stream, state); } function tokenComment(stream, state) { if (stream.match(/^.*%}/)) { state.tokenize = tokenBase; return 'comment'; }; stream.skipToEnd(); return 'comment'; } function tokenBase(stream, state) { // whitespaces if (stream.eatSpace()) return null; // Handle one line Comments if (stream.match('%{')){ state.tokenize = tokenComment; stream.skipToEnd(); return 'comment'; } if (stream.match(/^[%#]/)){ stream.skipToEnd(); return 'comment'; } // Handle Number Literals if (stream.match(/^[0-9\.+-]/, false)) { if (stream.match(/^[+-]?0x[0-9a-fA-F]+[ij]?/)) { stream.tokenize = tokenBase; return 'number'; }; if (stream.match(/^[+-]?\d*\.\d+([EeDd][+-]?\d+)?[ij]?/)) { return 'number'; }; if (stream.match(/^[+-]?\d+([EeDd][+-]?\d+)?[ij]?/)) { return 'number'; }; } if (stream.match(wordRegexp(['nan','NaN','inf','Inf']))) { return 'number'; }; // Handle Strings if (stream.match(/^"([^"]|(""))*"/)) { return 'string'; } ; if (stream.match(/^'([^']|(''))*'/)) { return 'string'; } ; // Handle words if (stream.match(keywords)) { return 'keyword'; } ; if (stream.match(builtins)) { return 'builtin'; } ; if (stream.match(identifiers)) { return 'variable'; } ; if (stream.match(singleOperators) || stream.match(doubleOperators)) { return 'operator'; }; if (stream.match(singleDelimiters) || stream.match(doubleDelimiters) || stream.match(tripleDelimiters)) { return null; }; if (stream.match(expressionEnd)) { state.tokenize = tokenTranspose; return null; }; // Handle non-detected items stream.next(); return 'error'; }; return { startState: function() { return { tokenize: tokenBase }; }, token: function(stream, state) { var style = state.tokenize(stream, state); if (style === 'number' || style === 'variable'){ state.tokenize = tokenTranspose; } return style; } }; }); CodeMirror.defineMIME("text/x-octave", "octave"); }); plugins/file-manager-advanced/application/library/codemirror/mode/oz/index.html000064400000002555147176754550024040 0ustar00 CodeMirror: Oz mode

Oz mode

MIME type defined: text/x-oz.

plugins/file-manager-advanced/application/library/codemirror/mode/oz/oz.js000064400000015002147176754550023020 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("oz", function (conf) { function wordRegexp(words) { return new RegExp("^((" + words.join(")|(") + "))\\b"); } var singleOperators = /[\^@!\|<>#~\.\*\-\+\\/,=]/; var doubleOperators = /(<-)|(:=)|(=<)|(>=)|(<=)|(<:)|(>:)|(=:)|(\\=)|(\\=:)|(!!)|(==)|(::)/; var tripleOperators = /(:::)|(\.\.\.)|(=<:)|(>=:)/; var middle = ["in", "then", "else", "of", "elseof", "elsecase", "elseif", "catch", "finally", "with", "require", "prepare", "import", "export", "define", "do"]; var end = ["end"]; var atoms = wordRegexp(["true", "false", "nil", "unit"]); var commonKeywords = wordRegexp(["andthen", "at", "attr", "declare", "feat", "from", "lex", "mod", "mode", "orelse", "parser", "prod", "prop", "scanner", "self", "syn", "token"]); var openingKeywords = wordRegexp(["local", "proc", "fun", "case", "class", "if", "cond", "or", "dis", "choice", "not", "thread", "try", "raise", "lock", "for", "suchthat", "meth", "functor"]); var middleKeywords = wordRegexp(middle); var endKeywords = wordRegexp(end); // Tokenizers function tokenBase(stream, state) { if (stream.eatSpace()) { return null; } // Brackets if(stream.match(/[{}]/)) { return "bracket"; } // Special [] keyword if (stream.match(/(\[])/)) { return "keyword" } // Operators if (stream.match(tripleOperators) || stream.match(doubleOperators)) { return "operator"; } // Atoms if(stream.match(atoms)) { return 'atom'; } // Opening keywords var matched = stream.match(openingKeywords); if (matched) { if (!state.doInCurrentLine) state.currentIndent++; else state.doInCurrentLine = false; // Special matching for signatures if(matched[0] == "proc" || matched[0] == "fun") state.tokenize = tokenFunProc; else if(matched[0] == "class") state.tokenize = tokenClass; else if(matched[0] == "meth") state.tokenize = tokenMeth; return 'keyword'; } // Middle and other keywords if (stream.match(middleKeywords) || stream.match(commonKeywords)) { return "keyword" } // End keywords if (stream.match(endKeywords)) { state.currentIndent--; return 'keyword'; } // Eat the next char for next comparisons var ch = stream.next(); // Strings if (ch == '"' || ch == "'") { state.tokenize = tokenString(ch); return state.tokenize(stream, state); } // Numbers if (/[~\d]/.test(ch)) { if (ch == "~") { if(! /^[0-9]/.test(stream.peek())) return null; else if (( stream.next() == "0" && stream.match(/^[xX][0-9a-fA-F]+/)) || stream.match(/^[0-9]*(\.[0-9]+)?([eE][~+]?[0-9]+)?/)) return "number"; } if ((ch == "0" && stream.match(/^[xX][0-9a-fA-F]+/)) || stream.match(/^[0-9]*(\.[0-9]+)?([eE][~+]?[0-9]+)?/)) return "number"; return null; } // Comments if (ch == "%") { stream.skipToEnd(); return 'comment'; } else if (ch == "/") { if (stream.eat("*")) { state.tokenize = tokenComment; return tokenComment(stream, state); } } // Single operators if(singleOperators.test(ch)) { return "operator"; } // If nothing match, we skip the entire alphanumerical block stream.eatWhile(/\w/); return "variable"; } function tokenClass(stream, state) { if (stream.eatSpace()) { return null; } stream.match(/([A-Z][A-Za-z0-9_]*)|(`.+`)/); state.tokenize = tokenBase; return "variable-3" } function tokenMeth(stream, state) { if (stream.eatSpace()) { return null; } stream.match(/([a-zA-Z][A-Za-z0-9_]*)|(`.+`)/); state.tokenize = tokenBase; return "def" } function tokenFunProc(stream, state) { if (stream.eatSpace()) { return null; } if(!state.hasPassedFirstStage && stream.eat("{")) { state.hasPassedFirstStage = true; return "bracket"; } else if(state.hasPassedFirstStage) { stream.match(/([A-Z][A-Za-z0-9_]*)|(`.+`)|\$/); state.hasPassedFirstStage = false; state.tokenize = tokenBase; return "def" } else { state.tokenize = tokenBase; return null; } } function tokenComment(stream, state) { var maybeEnd = false, ch; while (ch = stream.next()) { if (ch == "/" && maybeEnd) { state.tokenize = tokenBase; break; } maybeEnd = (ch == "*"); } return "comment"; } function tokenString(quote) { return function (stream, state) { var escaped = false, next, end = false; while ((next = stream.next()) != null) { if (next == quote && !escaped) { end = true; break; } escaped = !escaped && next == "\\"; } if (end || !escaped) state.tokenize = tokenBase; return "string"; }; } function buildElectricInputRegEx() { // Reindentation should occur on [] or on a match of any of // the block closing keywords, at the end of a line. var allClosings = middle.concat(end); return new RegExp("[\\[\\]]|(" + allClosings.join("|") + ")$"); } return { startState: function () { return { tokenize: tokenBase, currentIndent: 0, doInCurrentLine: false, hasPassedFirstStage: false }; }, token: function (stream, state) { if (stream.sol()) state.doInCurrentLine = 0; return state.tokenize(stream, state); }, indent: function (state, textAfter) { var trueText = textAfter.replace(/^\s+|\s+$/g, ''); if (trueText.match(endKeywords) || trueText.match(middleKeywords) || trueText.match(/(\[])/)) return conf.indentUnit * (state.currentIndent - 1); if (state.currentIndent < 0) return 0; return state.currentIndent * conf.indentUnit; }, fold: "indent", electricInput: buildElectricInputRegEx(), lineComment: "%", blockCommentStart: "/*", blockCommentEnd: "*/" }; }); CodeMirror.defineMIME("text/x-oz", "oz"); }); plugins/file-manager-advanced/application/library/codemirror/mode/pascal/index.html000064400000002640147176754550024646 0ustar00 CodeMirror: Pascal mode

Pascal mode

MIME types defined: text/x-pascal.

plugins/file-manager-advanced/application/library/codemirror/mode/pascal/pascal.js000064400000005757147176754550024466 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("pascal", function() { function words(str) { var obj = {}, words = str.split(" "); for (var i = 0; i < words.length; ++i) obj[words[i]] = true; return obj; } var keywords = words("and array begin case const div do downto else end file for forward integer " + "boolean char function goto if in label mod nil not of or packed procedure " + "program record repeat set string then to type until var while with"); var atoms = {"null": true}; var isOperatorChar = /[+\-*&%=<>!?|\/]/; function tokenBase(stream, state) { var ch = stream.next(); if (ch == "#" && state.startOfLine) { stream.skipToEnd(); return "meta"; } if (ch == '"' || ch == "'") { state.tokenize = tokenString(ch); return state.tokenize(stream, state); } if (ch == "(" && stream.eat("*")) { state.tokenize = tokenComment; return tokenComment(stream, state); } if (/[\[\]{}\(\),;\:\.]/.test(ch)) { return null; } if (/\d/.test(ch)) { stream.eatWhile(/[\w\.]/); return "number"; } if (ch == "/") { if (stream.eat("/")) { stream.skipToEnd(); return "comment"; } } if (isOperatorChar.test(ch)) { stream.eatWhile(isOperatorChar); return "operator"; } stream.eatWhile(/[\w\$_]/); var cur = stream.current(); if (keywords.propertyIsEnumerable(cur)) return "keyword"; if (atoms.propertyIsEnumerable(cur)) return "atom"; return "variable"; } function tokenString(quote) { return function(stream, state) { var escaped = false, next, end = false; while ((next = stream.next()) != null) { if (next == quote && !escaped) {end = true; break;} escaped = !escaped && next == "\\"; } if (end || !escaped) state.tokenize = null; return "string"; }; } function tokenComment(stream, state) { var maybeEnd = false, ch; while (ch = stream.next()) { if (ch == ")" && maybeEnd) { state.tokenize = null; break; } maybeEnd = (ch == "*"); } return "comment"; } // Interface return { startState: function() { return {tokenize: null}; }, token: function(stream, state) { if (stream.eatSpace()) return null; var style = (state.tokenize || tokenBase)(stream, state); if (style == "comment" || style == "meta") return style; return style; }, electricChars: "{}" }; }); CodeMirror.defineMIME("text/x-pascal", "pascal"); }); plugins/file-manager-advanced/application/library/codemirror/mode/pegjs/index.html000064400000003542147176754550024515 0ustar00 CodeMirror: PEG.js Mode

PEG.js Mode

The PEG.js Mode

Created by Forbes Lindesay.

plugins/file-manager-advanced/application/library/codemirror/mode/pegjs/pegjs.js000064400000006771147176754550024175 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror"), require("../javascript/javascript")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror", "../javascript/javascript"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("pegjs", function (config) { var jsMode = CodeMirror.getMode(config, "javascript"); function identifier(stream) { return stream.match(/^[a-zA-Z_][a-zA-Z0-9_]*/); } return { startState: function () { return { inString: false, stringType: null, inComment: false, inCharacterClass: false, braced: 0, lhs: true, localState: null }; }, token: function (stream, state) { if (stream) //check for state changes if (!state.inString && !state.inComment && ((stream.peek() == '"') || (stream.peek() == "'"))) { state.stringType = stream.peek(); stream.next(); // Skip quote state.inString = true; // Update state } if (!state.inString && !state.inComment && stream.match(/^\/\*/)) { state.inComment = true; } //return state if (state.inString) { while (state.inString && !stream.eol()) { if (stream.peek() === state.stringType) { stream.next(); // Skip quote state.inString = false; // Clear flag } else if (stream.peek() === '\\') { stream.next(); stream.next(); } else { stream.match(/^.[^\\\"\']*/); } } return state.lhs ? "property string" : "string"; // Token style } else if (state.inComment) { while (state.inComment && !stream.eol()) { if (stream.match(/\*\//)) { state.inComment = false; // Clear flag } else { stream.match(/^.[^\*]*/); } } return "comment"; } else if (state.inCharacterClass) { while (state.inCharacterClass && !stream.eol()) { if (!(stream.match(/^[^\]\\]+/) || stream.match(/^\\./))) { state.inCharacterClass = false; } } } else if (stream.peek() === '[') { stream.next(); state.inCharacterClass = true; return 'bracket'; } else if (stream.match(/^\/\//)) { stream.skipToEnd(); return "comment"; } else if (state.braced || stream.peek() === '{') { if (state.localState === null) { state.localState = CodeMirror.startState(jsMode); } var token = jsMode.token(stream, state.localState); var text = stream.current(); if (!token) { for (var i = 0; i < text.length; i++) { if (text[i] === '{') { state.braced++; } else if (text[i] === '}') { state.braced--; } }; } return token; } else if (identifier(stream)) { if (stream.peek() === ':') { return 'variable'; } return 'variable-2'; } else if (['[', ']', '(', ')'].indexOf(stream.peek()) != -1) { stream.next(); return 'bracket'; } else if (!stream.eatSpace()) { stream.next(); } return null; } }; }, "javascript"); }); plugins/file-manager-advanced/application/library/codemirror/mode/perl/index.html000064400000003006147176754550024342 0ustar00 CodeMirror: Perl mode

Perl mode

MIME types defined: text/x-perl.

plugins/file-manager-advanced/application/library/codemirror/mode/perl/perl.js000064400000155507147176754550023663 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE // CodeMirror2 mode/perl/perl.js (text/x-perl) beta 0.10 (2011-11-08) // This is a part of CodeMirror from https://github.com/sabaca/CodeMirror_mode_perl (mail@sabaca.com) (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("perl",function(){ // http://perldoc.perl.org var PERL={ // null - magic touch // 1 - keyword // 2 - def // 3 - atom // 4 - operator // 5 - variable-2 (predefined) // [x,y] - x=1,2,3; y=must be defined if x{...} // PERL operators '->' : 4, '++' : 4, '--' : 4, '**' : 4, // ! ~ \ and unary + and - '=~' : 4, '!~' : 4, '*' : 4, '/' : 4, '%' : 4, 'x' : 4, '+' : 4, '-' : 4, '.' : 4, '<<' : 4, '>>' : 4, // named unary operators '<' : 4, '>' : 4, '<=' : 4, '>=' : 4, 'lt' : 4, 'gt' : 4, 'le' : 4, 'ge' : 4, '==' : 4, '!=' : 4, '<=>' : 4, 'eq' : 4, 'ne' : 4, 'cmp' : 4, '~~' : 4, '&' : 4, '|' : 4, '^' : 4, '&&' : 4, '||' : 4, '//' : 4, '..' : 4, '...' : 4, '?' : 4, ':' : 4, '=' : 4, '+=' : 4, '-=' : 4, '*=' : 4, // etc. ??? ',' : 4, '=>' : 4, '::' : 4, // list operators (rightward) 'not' : 4, 'and' : 4, 'or' : 4, 'xor' : 4, // PERL predefined variables (I know, what this is a paranoid idea, but may be needed for people, who learn PERL, and for me as well, ...and may be for you?;) 'BEGIN' : [5,1], 'END' : [5,1], 'PRINT' : [5,1], 'PRINTF' : [5,1], 'GETC' : [5,1], 'READ' : [5,1], 'READLINE' : [5,1], 'DESTROY' : [5,1], 'TIE' : [5,1], 'TIEHANDLE' : [5,1], 'UNTIE' : [5,1], 'STDIN' : 5, 'STDIN_TOP' : 5, 'STDOUT' : 5, 'STDOUT_TOP' : 5, 'STDERR' : 5, 'STDERR_TOP' : 5, '$ARG' : 5, '$_' : 5, '@ARG' : 5, '@_' : 5, '$LIST_SEPARATOR' : 5, '$"' : 5, '$PROCESS_ID' : 5, '$PID' : 5, '$$' : 5, '$REAL_GROUP_ID' : 5, '$GID' : 5, '$(' : 5, '$EFFECTIVE_GROUP_ID' : 5, '$EGID' : 5, '$)' : 5, '$PROGRAM_NAME' : 5, '$0' : 5, '$SUBSCRIPT_SEPARATOR' : 5, '$SUBSEP' : 5, '$;' : 5, '$REAL_USER_ID' : 5, '$UID' : 5, '$<' : 5, '$EFFECTIVE_USER_ID' : 5, '$EUID' : 5, '$>' : 5, '$a' : 5, '$b' : 5, '$COMPILING' : 5, '$^C' : 5, '$DEBUGGING' : 5, '$^D' : 5, '${^ENCODING}' : 5, '$ENV' : 5, '%ENV' : 5, '$SYSTEM_FD_MAX' : 5, '$^F' : 5, '@F' : 5, '${^GLOBAL_PHASE}' : 5, '$^H' : 5, '%^H' : 5, '@INC' : 5, '%INC' : 5, '$INPLACE_EDIT' : 5, '$^I' : 5, '$^M' : 5, '$OSNAME' : 5, '$^O' : 5, '${^OPEN}' : 5, '$PERLDB' : 5, '$^P' : 5, '$SIG' : 5, '%SIG' : 5, '$BASETIME' : 5, '$^T' : 5, '${^TAINT}' : 5, '${^UNICODE}' : 5, '${^UTF8CACHE}' : 5, '${^UTF8LOCALE}' : 5, '$PERL_VERSION' : 5, '$^V' : 5, '${^WIN32_SLOPPY_STAT}' : 5, '$EXECUTABLE_NAME' : 5, '$^X' : 5, '$1' : 5, // - regexp $1, $2... '$MATCH' : 5, '$&' : 5, '${^MATCH}' : 5, '$PREMATCH' : 5, '$`' : 5, '${^PREMATCH}' : 5, '$POSTMATCH' : 5, "$'" : 5, '${^POSTMATCH}' : 5, '$LAST_PAREN_MATCH' : 5, '$+' : 5, '$LAST_SUBMATCH_RESULT' : 5, '$^N' : 5, '@LAST_MATCH_END' : 5, '@+' : 5, '%LAST_PAREN_MATCH' : 5, '%+' : 5, '@LAST_MATCH_START' : 5, '@-' : 5, '%LAST_MATCH_START' : 5, '%-' : 5, '$LAST_REGEXP_CODE_RESULT' : 5, '$^R' : 5, '${^RE_DEBUG_FLAGS}' : 5, '${^RE_TRIE_MAXBUF}' : 5, '$ARGV' : 5, '@ARGV' : 5, 'ARGV' : 5, 'ARGVOUT' : 5, '$OUTPUT_FIELD_SEPARATOR' : 5, '$OFS' : 5, '$,' : 5, '$INPUT_LINE_NUMBER' : 5, '$NR' : 5, '$.' : 5, '$INPUT_RECORD_SEPARATOR' : 5, '$RS' : 5, '$/' : 5, '$OUTPUT_RECORD_SEPARATOR' : 5, '$ORS' : 5, '$\\' : 5, '$OUTPUT_AUTOFLUSH' : 5, '$|' : 5, '$ACCUMULATOR' : 5, '$^A' : 5, '$FORMAT_FORMFEED' : 5, '$^L' : 5, '$FORMAT_PAGE_NUMBER' : 5, '$%' : 5, '$FORMAT_LINES_LEFT' : 5, '$-' : 5, '$FORMAT_LINE_BREAK_CHARACTERS' : 5, '$:' : 5, '$FORMAT_LINES_PER_PAGE' : 5, '$=' : 5, '$FORMAT_TOP_NAME' : 5, '$^' : 5, '$FORMAT_NAME' : 5, '$~' : 5, '${^CHILD_ERROR_NATIVE}' : 5, '$EXTENDED_OS_ERROR' : 5, '$^E' : 5, '$EXCEPTIONS_BEING_CAUGHT' : 5, '$^S' : 5, '$WARNING' : 5, '$^W' : 5, '${^WARNING_BITS}' : 5, '$OS_ERROR' : 5, '$ERRNO' : 5, '$!' : 5, '%OS_ERROR' : 5, '%ERRNO' : 5, '%!' : 5, '$CHILD_ERROR' : 5, '$?' : 5, '$EVAL_ERROR' : 5, '$@' : 5, '$OFMT' : 5, '$#' : 5, '$*' : 5, '$ARRAY_BASE' : 5, '$[' : 5, '$OLD_PERL_VERSION' : 5, '$]' : 5, // PERL blocks 'if' :[1,1], elsif :[1,1], 'else' :[1,1], 'while' :[1,1], unless :[1,1], 'for' :[1,1], foreach :[1,1], // PERL functions 'abs' :1, // - absolute value function accept :1, // - accept an incoming socket connect alarm :1, // - schedule a SIGALRM 'atan2' :1, // - arctangent of Y/X in the range -PI to PI bind :1, // - binds an address to a socket binmode :1, // - prepare binary files for I/O bless :1, // - create an object bootstrap :1, // 'break' :1, // - break out of a "given" block caller :1, // - get context of the current subroutine call chdir :1, // - change your current working directory chmod :1, // - changes the permissions on a list of files chomp :1, // - remove a trailing record separator from a string chop :1, // - remove the last character from a string chown :1, // - change the ownership on a list of files chr :1, // - get character this number represents chroot :1, // - make directory new root for path lookups close :1, // - close file (or pipe or socket) handle closedir :1, // - close directory handle connect :1, // - connect to a remote socket 'continue' :[1,1], // - optional trailing block in a while or foreach 'cos' :1, // - cosine function crypt :1, // - one-way passwd-style encryption dbmclose :1, // - breaks binding on a tied dbm file dbmopen :1, // - create binding on a tied dbm file 'default' :1, // defined :1, // - test whether a value, variable, or function is defined 'delete' :1, // - deletes a value from a hash die :1, // - raise an exception or bail out 'do' :1, // - turn a BLOCK into a TERM dump :1, // - create an immediate core dump each :1, // - retrieve the next key/value pair from a hash endgrent :1, // - be done using group file endhostent :1, // - be done using hosts file endnetent :1, // - be done using networks file endprotoent :1, // - be done using protocols file endpwent :1, // - be done using passwd file endservent :1, // - be done using services file eof :1, // - test a filehandle for its end 'eval' :1, // - catch exceptions or compile and run code 'exec' :1, // - abandon this program to run another exists :1, // - test whether a hash key is present exit :1, // - terminate this program 'exp' :1, // - raise I to a power fcntl :1, // - file control system call fileno :1, // - return file descriptor from filehandle flock :1, // - lock an entire file with an advisory lock fork :1, // - create a new process just like this one format :1, // - declare a picture format with use by the write() function formline :1, // - internal function used for formats getc :1, // - get the next character from the filehandle getgrent :1, // - get next group record getgrgid :1, // - get group record given group user ID getgrnam :1, // - get group record given group name gethostbyaddr :1, // - get host record given its address gethostbyname :1, // - get host record given name gethostent :1, // - get next hosts record getlogin :1, // - return who logged in at this tty getnetbyaddr :1, // - get network record given its address getnetbyname :1, // - get networks record given name getnetent :1, // - get next networks record getpeername :1, // - find the other end of a socket connection getpgrp :1, // - get process group getppid :1, // - get parent process ID getpriority :1, // - get current nice value getprotobyname :1, // - get protocol record given name getprotobynumber :1, // - get protocol record numeric protocol getprotoent :1, // - get next protocols record getpwent :1, // - get next passwd record getpwnam :1, // - get passwd record given user login name getpwuid :1, // - get passwd record given user ID getservbyname :1, // - get services record given its name getservbyport :1, // - get services record given numeric port getservent :1, // - get next services record getsockname :1, // - retrieve the sockaddr for a given socket getsockopt :1, // - get socket options on a given socket given :1, // glob :1, // - expand filenames using wildcards gmtime :1, // - convert UNIX time into record or string using Greenwich time 'goto' :1, // - create spaghetti code grep :1, // - locate elements in a list test true against a given criterion hex :1, // - convert a string to a hexadecimal number 'import' :1, // - patch a module's namespace into your own index :1, // - find a substring within a string 'int' :1, // - get the integer portion of a number ioctl :1, // - system-dependent device control system call 'join' :1, // - join a list into a string using a separator keys :1, // - retrieve list of indices from a hash kill :1, // - send a signal to a process or process group last :1, // - exit a block prematurely lc :1, // - return lower-case version of a string lcfirst :1, // - return a string with just the next letter in lower case length :1, // - return the number of bytes in a string 'link' :1, // - create a hard link in the filesytem listen :1, // - register your socket as a server local : 2, // - create a temporary value for a global variable (dynamic scoping) localtime :1, // - convert UNIX time into record or string using local time lock :1, // - get a thread lock on a variable, subroutine, or method 'log' :1, // - retrieve the natural logarithm for a number lstat :1, // - stat a symbolic link m :null, // - match a string with a regular expression pattern map :1, // - apply a change to a list to get back a new list with the changes mkdir :1, // - create a directory msgctl :1, // - SysV IPC message control operations msgget :1, // - get SysV IPC message queue msgrcv :1, // - receive a SysV IPC message from a message queue msgsnd :1, // - send a SysV IPC message to a message queue my : 2, // - declare and assign a local variable (lexical scoping) 'new' :1, // next :1, // - iterate a block prematurely no :1, // - unimport some module symbols or semantics at compile time oct :1, // - convert a string to an octal number open :1, // - open a file, pipe, or descriptor opendir :1, // - open a directory ord :1, // - find a character's numeric representation our : 2, // - declare and assign a package variable (lexical scoping) pack :1, // - convert a list into a binary representation 'package' :1, // - declare a separate global namespace pipe :1, // - open a pair of connected filehandles pop :1, // - remove the last element from an array and return it pos :1, // - find or set the offset for the last/next m//g search print :1, // - output a list to a filehandle printf :1, // - output a formatted list to a filehandle prototype :1, // - get the prototype (if any) of a subroutine push :1, // - append one or more elements to an array q :null, // - singly quote a string qq :null, // - doubly quote a string qr :null, // - Compile pattern quotemeta :null, // - quote regular expression magic characters qw :null, // - quote a list of words qx :null, // - backquote quote a string rand :1, // - retrieve the next pseudorandom number read :1, // - fixed-length buffered input from a filehandle readdir :1, // - get a directory from a directory handle readline :1, // - fetch a record from a file readlink :1, // - determine where a symbolic link is pointing readpipe :1, // - execute a system command and collect standard output recv :1, // - receive a message over a Socket redo :1, // - start this loop iteration over again ref :1, // - find out the type of thing being referenced rename :1, // - change a filename require :1, // - load in external functions from a library at runtime reset :1, // - clear all variables of a given name 'return' :1, // - get out of a function early reverse :1, // - flip a string or a list rewinddir :1, // - reset directory handle rindex :1, // - right-to-left substring search rmdir :1, // - remove a directory s :null, // - replace a pattern with a string say :1, // - print with newline scalar :1, // - force a scalar context seek :1, // - reposition file pointer for random-access I/O seekdir :1, // - reposition directory pointer select :1, // - reset default output or do I/O multiplexing semctl :1, // - SysV semaphore control operations semget :1, // - get set of SysV semaphores semop :1, // - SysV semaphore operations send :1, // - send a message over a socket setgrent :1, // - prepare group file for use sethostent :1, // - prepare hosts file for use setnetent :1, // - prepare networks file for use setpgrp :1, // - set the process group of a process setpriority :1, // - set a process's nice value setprotoent :1, // - prepare protocols file for use setpwent :1, // - prepare passwd file for use setservent :1, // - prepare services file for use setsockopt :1, // - set some socket options shift :1, // - remove the first element of an array, and return it shmctl :1, // - SysV shared memory operations shmget :1, // - get SysV shared memory segment identifier shmread :1, // - read SysV shared memory shmwrite :1, // - write SysV shared memory shutdown :1, // - close down just half of a socket connection 'sin' :1, // - return the sine of a number sleep :1, // - block for some number of seconds socket :1, // - create a socket socketpair :1, // - create a pair of sockets 'sort' :1, // - sort a list of values splice :1, // - add or remove elements anywhere in an array 'split' :1, // - split up a string using a regexp delimiter sprintf :1, // - formatted print into a string 'sqrt' :1, // - square root function srand :1, // - seed the random number generator stat :1, // - get a file's status information state :1, // - declare and assign a state variable (persistent lexical scoping) study :1, // - optimize input data for repeated searches 'sub' :1, // - declare a subroutine, possibly anonymously 'substr' :1, // - get or alter a portion of a stirng symlink :1, // - create a symbolic link to a file syscall :1, // - execute an arbitrary system call sysopen :1, // - open a file, pipe, or descriptor sysread :1, // - fixed-length unbuffered input from a filehandle sysseek :1, // - position I/O pointer on handle used with sysread and syswrite system :1, // - run a separate program syswrite :1, // - fixed-length unbuffered output to a filehandle tell :1, // - get current seekpointer on a filehandle telldir :1, // - get current seekpointer on a directory handle tie :1, // - bind a variable to an object class tied :1, // - get a reference to the object underlying a tied variable time :1, // - return number of seconds since 1970 times :1, // - return elapsed time for self and child processes tr :null, // - transliterate a string truncate :1, // - shorten a file uc :1, // - return upper-case version of a string ucfirst :1, // - return a string with just the next letter in upper case umask :1, // - set file creation mode mask undef :1, // - remove a variable or function definition unlink :1, // - remove one link to a file unpack :1, // - convert binary structure into normal perl variables unshift :1, // - prepend more elements to the beginning of a list untie :1, // - break a tie binding to a variable use :1, // - load in a module at compile time utime :1, // - set a file's last access and modify times values :1, // - return a list of the values in a hash vec :1, // - test or set particular bits in a string wait :1, // - wait for any child process to die waitpid :1, // - wait for a particular child process to die wantarray :1, // - get void vs scalar vs list context of current subroutine call warn :1, // - print debugging info when :1, // write :1, // - print a picture record y :null}; // - transliterate a string var RXstyle="string-2"; var RXmodifiers=/[goseximacplud]/; // NOTE: "m", "s", "y" and "tr" need to correct real modifiers for each regexp type function tokenChain(stream,state,chain,style,tail){ // NOTE: chain.length > 2 is not working now (it's for s[...][...]geos;) state.chain=null; // 12 3tail state.style=null; state.tail=null; state.tokenize=function(stream,state){ var e=false,c,i=0; while(c=stream.next()){ if(c===chain[i]&&!e){ if(chain[++i]!==undefined){ state.chain=chain[i]; state.style=style; state.tail=tail;} else if(tail) stream.eatWhile(tail); state.tokenize=tokenPerl; return style;} e=!e&&c=="\\";} return style;}; return state.tokenize(stream,state);} function tokenSOMETHING(stream,state,string){ state.tokenize=function(stream,state){ if(stream.string==string) state.tokenize=tokenPerl; stream.skipToEnd(); return "string";}; return state.tokenize(stream,state);} function tokenPerl(stream,state){ if(stream.eatSpace()) return null; if(state.chain) return tokenChain(stream,state,state.chain,state.style,state.tail); if(stream.match(/^\-?[\d\.]/,false)) if(stream.match(/^(\-?(\d*\.\d+(e[+-]?\d+)?|\d+\.\d*)|0x[\da-fA-F]+|0b[01]+|\d+(e[+-]?\d+)?)/)) return 'number'; if(stream.match(/^<<(?=\w)/)){ // NOTE: <"],RXstyle,RXmodifiers);} if(/[\^'"!~\/]/.test(c)){ eatSuffix(stream, 1); return tokenChain(stream,state,[stream.eat(c)],RXstyle,RXmodifiers);}} else if(c=="q"){ c=look(stream, 1); if(c=="("){ eatSuffix(stream, 2); return tokenChain(stream,state,[")"],"string");} if(c=="["){ eatSuffix(stream, 2); return tokenChain(stream,state,["]"],"string");} if(c=="{"){ eatSuffix(stream, 2); return tokenChain(stream,state,["}"],"string");} if(c=="<"){ eatSuffix(stream, 2); return tokenChain(stream,state,[">"],"string");} if(/[\^'"!~\/]/.test(c)){ eatSuffix(stream, 1); return tokenChain(stream,state,[stream.eat(c)],"string");}} else if(c=="w"){ c=look(stream, 1); if(c=="("){ eatSuffix(stream, 2); return tokenChain(stream,state,[")"],"bracket");} if(c=="["){ eatSuffix(stream, 2); return tokenChain(stream,state,["]"],"bracket");} if(c=="{"){ eatSuffix(stream, 2); return tokenChain(stream,state,["}"],"bracket");} if(c=="<"){ eatSuffix(stream, 2); return tokenChain(stream,state,[">"],"bracket");} if(/[\^'"!~\/]/.test(c)){ eatSuffix(stream, 1); return tokenChain(stream,state,[stream.eat(c)],"bracket");}} else if(c=="r"){ c=look(stream, 1); if(c=="("){ eatSuffix(stream, 2); return tokenChain(stream,state,[")"],RXstyle,RXmodifiers);} if(c=="["){ eatSuffix(stream, 2); return tokenChain(stream,state,["]"],RXstyle,RXmodifiers);} if(c=="{"){ eatSuffix(stream, 2); return tokenChain(stream,state,["}"],RXstyle,RXmodifiers);} if(c=="<"){ eatSuffix(stream, 2); return tokenChain(stream,state,[">"],RXstyle,RXmodifiers);} if(/[\^'"!~\/]/.test(c)){ eatSuffix(stream, 1); return tokenChain(stream,state,[stream.eat(c)],RXstyle,RXmodifiers);}} else if(/[\^'"!~\/(\[{<]/.test(c)){ if(c=="("){ eatSuffix(stream, 1); return tokenChain(stream,state,[")"],"string");} if(c=="["){ eatSuffix(stream, 1); return tokenChain(stream,state,["]"],"string");} if(c=="{"){ eatSuffix(stream, 1); return tokenChain(stream,state,["}"],"string");} if(c=="<"){ eatSuffix(stream, 1); return tokenChain(stream,state,[">"],"string");} if(/[\^'"!~\/]/.test(c)){ return tokenChain(stream,state,[stream.eat(c)],"string");}}}} if(ch=="m"){ var c=look(stream, -2); if(!(c&&/\w/.test(c))){ c=stream.eat(/[(\[{<\^'"!~\/]/); if(c){ if(/[\^'"!~\/]/.test(c)){ return tokenChain(stream,state,[c],RXstyle,RXmodifiers);} if(c=="("){ return tokenChain(stream,state,[")"],RXstyle,RXmodifiers);} if(c=="["){ return tokenChain(stream,state,["]"],RXstyle,RXmodifiers);} if(c=="{"){ return tokenChain(stream,state,["}"],RXstyle,RXmodifiers);} if(c=="<"){ return tokenChain(stream,state,[">"],RXstyle,RXmodifiers);}}}} if(ch=="s"){ var c=/[\/>\]})\w]/.test(look(stream, -2)); if(!c){ c=stream.eat(/[(\[{<\^'"!~\/]/); if(c){ if(c=="[") return tokenChain(stream,state,["]","]"],RXstyle,RXmodifiers); if(c=="{") return tokenChain(stream,state,["}","}"],RXstyle,RXmodifiers); if(c=="<") return tokenChain(stream,state,[">",">"],RXstyle,RXmodifiers); if(c=="(") return tokenChain(stream,state,[")",")"],RXstyle,RXmodifiers); return tokenChain(stream,state,[c,c],RXstyle,RXmodifiers);}}} if(ch=="y"){ var c=/[\/>\]})\w]/.test(look(stream, -2)); if(!c){ c=stream.eat(/[(\[{<\^'"!~\/]/); if(c){ if(c=="[") return tokenChain(stream,state,["]","]"],RXstyle,RXmodifiers); if(c=="{") return tokenChain(stream,state,["}","}"],RXstyle,RXmodifiers); if(c=="<") return tokenChain(stream,state,[">",">"],RXstyle,RXmodifiers); if(c=="(") return tokenChain(stream,state,[")",")"],RXstyle,RXmodifiers); return tokenChain(stream,state,[c,c],RXstyle,RXmodifiers);}}} if(ch=="t"){ var c=/[\/>\]})\w]/.test(look(stream, -2)); if(!c){ c=stream.eat("r");if(c){ c=stream.eat(/[(\[{<\^'"!~\/]/); if(c){ if(c=="[") return tokenChain(stream,state,["]","]"],RXstyle,RXmodifiers); if(c=="{") return tokenChain(stream,state,["}","}"],RXstyle,RXmodifiers); if(c=="<") return tokenChain(stream,state,[">",">"],RXstyle,RXmodifiers); if(c=="(") return tokenChain(stream,state,[")",")"],RXstyle,RXmodifiers); return tokenChain(stream,state,[c,c],RXstyle,RXmodifiers);}}}} if(ch=="`"){ return tokenChain(stream,state,[ch],"variable-2");} if(ch=="/"){ if(!/~\s*$/.test(prefix(stream))) return "operator"; else return tokenChain(stream,state,[ch],RXstyle,RXmodifiers);} if(ch=="$"){ var p=stream.pos; if(stream.eatWhile(/\d/)||stream.eat("{")&&stream.eatWhile(/\d/)&&stream.eat("}")) return "variable-2"; else stream.pos=p;} if(/[$@%]/.test(ch)){ var p=stream.pos; if(stream.eat("^")&&stream.eat(/[A-Z]/)||!/[@$%&]/.test(look(stream, -2))&&stream.eat(/[=|\\\-#?@;:&`~\^!\[\]*'"$+.,\/<>()]/)){ var c=stream.current(); if(PERL[c]) return "variable-2";} stream.pos=p;} if(/[$@%&]/.test(ch)){ if(stream.eatWhile(/[\w$\[\]]/)||stream.eat("{")&&stream.eatWhile(/[\w$\[\]]/)&&stream.eat("}")){ var c=stream.current(); if(PERL[c]) return "variable-2"; else return "variable";}} if(ch=="#"){ if(look(stream, -2)!="$"){ stream.skipToEnd(); return "comment";}} if(/[:+\-\^*$&%@=<>!?|\/~\.]/.test(ch)){ var p=stream.pos; stream.eatWhile(/[:+\-\^*$&%@=<>!?|\/~\.]/); if(PERL[stream.current()]) return "operator"; else stream.pos=p;} if(ch=="_"){ if(stream.pos==1){ if(suffix(stream, 6)=="_END__"){ return tokenChain(stream,state,['\0'],"comment");} else if(suffix(stream, 7)=="_DATA__"){ return tokenChain(stream,state,['\0'],"variable-2");} else if(suffix(stream, 7)=="_C__"){ return tokenChain(stream,state,['\0'],"string");}}} if(/\w/.test(ch)){ var p=stream.pos; if(look(stream, -2)=="{"&&(look(stream, 0)=="}"||stream.eatWhile(/\w/)&&look(stream, 0)=="}")) return "string"; else stream.pos=p;} if(/[A-Z]/.test(ch)){ var l=look(stream, -2); var p=stream.pos; stream.eatWhile(/[A-Z_]/); if(/[\da-z]/.test(look(stream, 0))){ stream.pos=p;} else{ var c=PERL[stream.current()]; if(!c) return "meta"; if(c[1]) c=c[0]; if(l!=":"){ if(c==1) return "keyword"; else if(c==2) return "def"; else if(c==3) return "atom"; else if(c==4) return "operator"; else if(c==5) return "variable-2"; else return "meta";} else return "meta";}} if(/[a-zA-Z_]/.test(ch)){ var l=look(stream, -2); stream.eatWhile(/\w/); var c=PERL[stream.current()]; if(!c) return "meta"; if(c[1]) c=c[0]; if(l!=":"){ if(c==1) return "keyword"; else if(c==2) return "def"; else if(c==3) return "atom"; else if(c==4) return "operator"; else if(c==5) return "variable-2"; else return "meta";} else return "meta";} return null;} return { startState: function() { return { tokenize: tokenPerl, chain: null, style: null, tail: null }; }, token: function(stream, state) { return (state.tokenize || tokenPerl)(stream, state); }, lineComment: '#' }; }); CodeMirror.registerHelper("wordChars", "perl", /[\w$]/); CodeMirror.defineMIME("text/x-perl", "perl"); // it's like "peek", but need for look-ahead or look-behind if index < 0 function look(stream, c){ return stream.string.charAt(stream.pos+(c||0)); } // return a part of prefix of current stream from current position function prefix(stream, c){ if(c){ var x=stream.pos-c; return stream.string.substr((x>=0?x:0),c);} else{ return stream.string.substr(0,stream.pos-1); } } // return a part of suffix of current stream from current position function suffix(stream, c){ var y=stream.string.length; var x=y-stream.pos+1; return stream.string.substr(stream.pos,(c&&c=(y=stream.string.length-1)) stream.pos=y; else stream.pos=x; } }); plugins/file-manager-advanced/application/library/codemirror/mode/php/index.html000064400000003720147176754550024172 0ustar00 CodeMirror: PHP mode

PHP mode

Simple HTML/PHP mode based on the C-like mode. Depends on XML, JavaScript, CSS, HTMLMixed, and C-like modes.

MIME types defined: application/x-httpd-php (HTML with PHP code), text/x-php (plain, non-wrapped PHP code).

plugins/file-manager-advanced/application/library/codemirror/mode/php/php.js000064400000043460147176754550023327 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed"), require("../clike/clike")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror", "../htmlmixed/htmlmixed", "../clike/clike"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; function keywords(str) { var obj = {}, words = str.split(" "); for (var i = 0; i < words.length; ++i) obj[words[i]] = true; return obj; } // Helper for phpString function matchSequence(list, end, escapes) { if (list.length == 0) return phpString(end); return function (stream, state) { var patterns = list[0]; for (var i = 0; i < patterns.length; i++) if (stream.match(patterns[i][0])) { state.tokenize = matchSequence(list.slice(1), end); return patterns[i][1]; } state.tokenize = phpString(end, escapes); return "string"; }; } function phpString(closing, escapes) { return function(stream, state) { return phpString_(stream, state, closing, escapes); }; } function phpString_(stream, state, closing, escapes) { // "Complex" syntax if (escapes !== false && stream.match("${", false) || stream.match("{$", false)) { state.tokenize = null; return "string"; } // Simple syntax if (escapes !== false && stream.match(/^\$[a-zA-Z_][a-zA-Z0-9_]*/)) { // After the variable name there may appear array or object operator. if (stream.match("[", false)) { // Match array operator state.tokenize = matchSequence([ [["[", null]], [[/\d[\w\.]*/, "number"], [/\$[a-zA-Z_][a-zA-Z0-9_]*/, "variable-2"], [/[\w\$]+/, "variable"]], [["]", null]] ], closing, escapes); } if (stream.match(/\-\>\w/, false)) { // Match object operator state.tokenize = matchSequence([ [["->", null]], [[/[\w]+/, "variable"]] ], closing, escapes); } return "variable-2"; } var escaped = false; // Normal string while (!stream.eol() && (escaped || escapes === false || (!stream.match("{$", false) && !stream.match(/^(\$[a-zA-Z_][a-zA-Z0-9_]*|\$\{)/, false)))) { if (!escaped && stream.match(closing)) { state.tokenize = null; state.tokStack.pop(); state.tokStack.pop(); break; } escaped = stream.next() == "\\" && !escaped; } return "string"; } var phpKeywords = "abstract and array as break case catch class clone const continue declare default " + "do else elseif enddeclare endfor endforeach endif endswitch endwhile extends final " + "for foreach function global goto if implements interface instanceof namespace " + "new or private protected public static switch throw trait try use var while xor " + "die echo empty exit eval include include_once isset list require require_once return " + "print unset __halt_compiler self static parent yield insteadof finally"; var phpAtoms = "true false null TRUE FALSE NULL __CLASS__ __DIR__ __FILE__ __LINE__ __METHOD__ __FUNCTION__ __NAMESPACE__ __TRAIT__"; var phpBuiltin = "func_num_args func_get_arg func_get_args strlen strcmp strncmp strcasecmp strncasecmp each error_reporting define defined trigger_error user_error set_error_handler restore_error_handler get_declared_classes get_loaded_extensions extension_loaded get_extension_funcs debug_backtrace constant bin2hex hex2bin sleep usleep time mktime gmmktime strftime gmstrftime strtotime date gmdate getdate localtime checkdate flush wordwrap htmlspecialchars htmlentities html_entity_decode md5 md5_file crc32 getimagesize image_type_to_mime_type phpinfo phpversion phpcredits strnatcmp strnatcasecmp substr_count strspn strcspn strtok strtoupper strtolower strpos strrpos strrev hebrev hebrevc nl2br basename dirname pathinfo stripslashes stripcslashes strstr stristr strrchr str_shuffle str_word_count strcoll substr substr_replace quotemeta ucfirst ucwords strtr addslashes addcslashes rtrim str_replace str_repeat count_chars chunk_split trim ltrim strip_tags similar_text explode implode setlocale localeconv parse_str str_pad chop strchr sprintf printf vprintf vsprintf sscanf fscanf parse_url urlencode urldecode rawurlencode rawurldecode readlink linkinfo link unlink exec system escapeshellcmd escapeshellarg passthru shell_exec proc_open proc_close rand srand getrandmax mt_rand mt_srand mt_getrandmax base64_decode base64_encode abs ceil floor round is_finite is_nan is_infinite bindec hexdec octdec decbin decoct dechex base_convert number_format fmod ip2long long2ip getenv putenv getopt microtime gettimeofday getrusage uniqid quoted_printable_decode set_time_limit get_cfg_var magic_quotes_runtime set_magic_quotes_runtime get_magic_quotes_gpc get_magic_quotes_runtime import_request_variables error_log serialize unserialize memory_get_usage var_dump var_export debug_zval_dump print_r highlight_file show_source highlight_string ini_get ini_get_all ini_set ini_alter ini_restore get_include_path set_include_path restore_include_path setcookie header headers_sent connection_aborted connection_status ignore_user_abort parse_ini_file is_uploaded_file move_uploaded_file intval floatval doubleval strval gettype settype is_null is_resource is_bool is_long is_float is_int is_integer is_double is_real is_numeric is_string is_array is_object is_scalar ereg ereg_replace eregi eregi_replace split spliti join sql_regcase dl pclose popen readfile rewind rmdir umask fclose feof fgetc fgets fgetss fread fopen fpassthru ftruncate fstat fseek ftell fflush fwrite fputs mkdir rename copy tempnam tmpfile file file_get_contents file_put_contents stream_select stream_context_create stream_context_set_params stream_context_set_option stream_context_get_options stream_filter_prepend stream_filter_append fgetcsv flock get_meta_tags stream_set_write_buffer set_file_buffer set_socket_blocking stream_set_blocking socket_set_blocking stream_get_meta_data stream_register_wrapper stream_wrapper_register stream_set_timeout socket_set_timeout socket_get_status realpath fnmatch fsockopen pfsockopen pack unpack get_browser crypt opendir closedir chdir getcwd rewinddir readdir dir glob fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype file_exists is_writable is_writeable is_readable is_executable is_file is_dir is_link stat lstat chown touch clearstatcache mail ob_start ob_flush ob_clean ob_end_flush ob_end_clean ob_get_flush ob_get_clean ob_get_length ob_get_level ob_get_status ob_get_contents ob_implicit_flush ob_list_handlers ksort krsort natsort natcasesort asort arsort sort rsort usort uasort uksort shuffle array_walk count end prev next reset current key min max in_array array_search extract compact array_fill range array_multisort array_push array_pop array_shift array_unshift array_splice array_slice array_merge array_merge_recursive array_keys array_values array_count_values array_reverse array_reduce array_pad array_flip array_change_key_case array_rand array_unique array_intersect array_intersect_assoc array_diff array_diff_assoc array_sum array_filter array_map array_chunk array_key_exists array_intersect_key array_combine array_column pos sizeof key_exists assert assert_options version_compare ftok str_rot13 aggregate session_name session_module_name session_save_path session_id session_regenerate_id session_decode session_register session_unregister session_is_registered session_encode session_start session_destroy session_unset session_set_save_handler session_cache_limiter session_cache_expire session_set_cookie_params session_get_cookie_params session_write_close preg_match preg_match_all preg_replace preg_replace_callback preg_split preg_quote preg_grep overload ctype_alnum ctype_alpha ctype_cntrl ctype_digit ctype_lower ctype_graph ctype_print ctype_punct ctype_space ctype_upper ctype_xdigit virtual apache_request_headers apache_note apache_lookup_uri apache_child_terminate apache_setenv apache_response_headers apache_get_version getallheaders mysql_connect mysql_pconnect mysql_close mysql_select_db mysql_create_db mysql_drop_db mysql_query mysql_unbuffered_query mysql_db_query mysql_list_dbs mysql_list_tables mysql_list_fields mysql_list_processes mysql_error mysql_errno mysql_affected_rows mysql_insert_id mysql_result mysql_num_rows mysql_num_fields mysql_fetch_row mysql_fetch_array mysql_fetch_assoc mysql_fetch_object mysql_data_seek mysql_fetch_lengths mysql_fetch_field mysql_field_seek mysql_free_result mysql_field_name mysql_field_table mysql_field_len mysql_field_type mysql_field_flags mysql_escape_string mysql_real_escape_string mysql_stat mysql_thread_id mysql_client_encoding mysql_get_client_info mysql_get_host_info mysql_get_proto_info mysql_get_server_info mysql_info mysql mysql_fieldname mysql_fieldtable mysql_fieldlen mysql_fieldtype mysql_fieldflags mysql_selectdb mysql_createdb mysql_dropdb mysql_freeresult mysql_numfields mysql_numrows mysql_listdbs mysql_listtables mysql_listfields mysql_db_name mysql_dbname mysql_tablename mysql_table_name pg_connect pg_pconnect pg_close pg_connection_status pg_connection_busy pg_connection_reset pg_host pg_dbname pg_port pg_tty pg_options pg_ping pg_query pg_send_query pg_cancel_query pg_fetch_result pg_fetch_row pg_fetch_assoc pg_fetch_array pg_fetch_object pg_fetch_all pg_affected_rows pg_get_result pg_result_seek pg_result_status pg_free_result pg_last_oid pg_num_rows pg_num_fields pg_field_name pg_field_num pg_field_size pg_field_type pg_field_prtlen pg_field_is_null pg_get_notify pg_get_pid pg_result_error pg_last_error pg_last_notice pg_put_line pg_end_copy pg_copy_to pg_copy_from pg_trace pg_untrace pg_lo_create pg_lo_unlink pg_lo_open pg_lo_close pg_lo_read pg_lo_write pg_lo_read_all pg_lo_import pg_lo_export pg_lo_seek pg_lo_tell pg_escape_string pg_escape_bytea pg_unescape_bytea pg_client_encoding pg_set_client_encoding pg_meta_data pg_convert pg_insert pg_update pg_delete pg_select pg_exec pg_getlastoid pg_cmdtuples pg_errormessage pg_numrows pg_numfields pg_fieldname pg_fieldsize pg_fieldtype pg_fieldnum pg_fieldprtlen pg_fieldisnull pg_freeresult pg_result pg_loreadall pg_locreate pg_lounlink pg_loopen pg_loclose pg_loread pg_lowrite pg_loimport pg_loexport http_response_code get_declared_traits getimagesizefromstring socket_import_stream stream_set_chunk_size trait_exists header_register_callback class_uses session_status session_register_shutdown echo print global static exit array empty eval isset unset die include require include_once require_once json_decode json_encode json_last_error json_last_error_msg curl_close curl_copy_handle curl_errno curl_error curl_escape curl_exec curl_file_create curl_getinfo curl_init curl_multi_add_handle curl_multi_close curl_multi_exec curl_multi_getcontent curl_multi_info_read curl_multi_init curl_multi_remove_handle curl_multi_select curl_multi_setopt curl_multi_strerror curl_pause curl_reset curl_setopt_array curl_setopt curl_share_close curl_share_init curl_share_setopt curl_strerror curl_unescape curl_version mysqli_affected_rows mysqli_autocommit mysqli_change_user mysqli_character_set_name mysqli_close mysqli_commit mysqli_connect_errno mysqli_connect_error mysqli_connect mysqli_data_seek mysqli_debug mysqli_dump_debug_info mysqli_errno mysqli_error_list mysqli_error mysqli_fetch_all mysqli_fetch_array mysqli_fetch_assoc mysqli_fetch_field_direct mysqli_fetch_field mysqli_fetch_fields mysqli_fetch_lengths mysqli_fetch_object mysqli_fetch_row mysqli_field_count mysqli_field_seek mysqli_field_tell mysqli_free_result mysqli_get_charset mysqli_get_client_info mysqli_get_client_stats mysqli_get_client_version mysqli_get_connection_stats mysqli_get_host_info mysqli_get_proto_info mysqli_get_server_info mysqli_get_server_version mysqli_info mysqli_init mysqli_insert_id mysqli_kill mysqli_more_results mysqli_multi_query mysqli_next_result mysqli_num_fields mysqli_num_rows mysqli_options mysqli_ping mysqli_prepare mysqli_query mysqli_real_connect mysqli_real_escape_string mysqli_real_query mysqli_reap_async_query mysqli_refresh mysqli_rollback mysqli_select_db mysqli_set_charset mysqli_set_local_infile_default mysqli_set_local_infile_handler mysqli_sqlstate mysqli_ssl_set mysqli_stat mysqli_stmt_init mysqli_store_result mysqli_thread_id mysqli_thread_safe mysqli_use_result mysqli_warning_count"; CodeMirror.registerHelper("hintWords", "php", [phpKeywords, phpAtoms, phpBuiltin].join(" ").split(" ")); CodeMirror.registerHelper("wordChars", "php", /[\w$]/); var phpConfig = { name: "clike", helperType: "php", keywords: keywords(phpKeywords), blockKeywords: keywords("catch do else elseif for foreach if switch try while finally"), defKeywords: keywords("class function interface namespace trait"), atoms: keywords(phpAtoms), builtin: keywords(phpBuiltin), multiLineStrings: true, hooks: { "$": function(stream) { stream.eatWhile(/[\w\$_]/); return "variable-2"; }, "<": function(stream, state) { var before; if (before = stream.match(/<<\s*/)) { var quoted = stream.eat(/['"]/); stream.eatWhile(/[\w\.]/); var delim = stream.current().slice(before[0].length + (quoted ? 2 : 1)); if (quoted) stream.eat(quoted); if (delim) { (state.tokStack || (state.tokStack = [])).push(delim, 0); state.tokenize = phpString(delim, quoted != "'"); return "string"; } } return false; }, "#": function(stream) { while (!stream.eol() && !stream.match("?>", false)) stream.next(); return "comment"; }, "/": function(stream) { if (stream.eat("/")) { while (!stream.eol() && !stream.match("?>", false)) stream.next(); return "comment"; } return false; }, '"': function(_stream, state) { (state.tokStack || (state.tokStack = [])).push('"', 0); state.tokenize = phpString('"'); return "string"; }, "{": function(_stream, state) { if (state.tokStack && state.tokStack.length) state.tokStack[state.tokStack.length - 1]++; return false; }, "}": function(_stream, state) { if (state.tokStack && state.tokStack.length > 0 && !--state.tokStack[state.tokStack.length - 1]) { state.tokenize = phpString(state.tokStack[state.tokStack.length - 2]); } return false; } } }; CodeMirror.defineMode("php", function(config, parserConfig) { var htmlMode = CodeMirror.getMode(config, "text/html"); var phpMode = CodeMirror.getMode(config, phpConfig); function dispatch(stream, state) { var isPHP = state.curMode == phpMode; if (stream.sol() && state.pending && state.pending != '"' && state.pending != "'") state.pending = null; if (!isPHP) { if (stream.match(/^<\?\w*/)) { state.curMode = phpMode; if (!state.php) state.php = CodeMirror.startState(phpMode, htmlMode.indent(state.html, "")) state.curState = state.php; return "meta"; } if (state.pending == '"' || state.pending == "'") { while (!stream.eol() && stream.next() != state.pending) {} var style = "string"; } else if (state.pending && stream.pos < state.pending.end) { stream.pos = state.pending.end; var style = state.pending.style; } else { var style = htmlMode.token(stream, state.curState); } if (state.pending) state.pending = null; var cur = stream.current(), openPHP = cur.search(/<\?/), m; if (openPHP != -1) { if (style == "string" && (m = cur.match(/[\'\"]$/)) && !/\?>/.test(cur)) state.pending = m[0]; else state.pending = {end: stream.pos, style: style}; stream.backUp(cur.length - openPHP); } return style; } else if (isPHP && state.php.tokenize == null && stream.match("?>")) { state.curMode = htmlMode; state.curState = state.html; if (!state.php.context.prev) state.php = null; return "meta"; } else { return phpMode.token(stream, state.curState); } } return { startState: function() { var html = CodeMirror.startState(htmlMode) var php = parserConfig.startOpen ? CodeMirror.startState(phpMode) : null return {html: html, php: php, curMode: parserConfig.startOpen ? phpMode : htmlMode, curState: parserConfig.startOpen ? php : html, pending: null}; }, copyState: function(state) { var html = state.html, htmlNew = CodeMirror.copyState(htmlMode, html), php = state.php, phpNew = php && CodeMirror.copyState(phpMode, php), cur; if (state.curMode == htmlMode) cur = htmlNew; else cur = phpNew; return {html: htmlNew, php: phpNew, curMode: state.curMode, curState: cur, pending: state.pending}; }, token: dispatch, indent: function(state, textAfter) { if ((state.curMode != phpMode && /^\s*<\//.test(textAfter)) || (state.curMode == phpMode && /^\?>/.test(textAfter))) return htmlMode.indent(state.html, textAfter); return state.curMode.indent(state.curState, textAfter); }, blockCommentStart: "/*", blockCommentEnd: "*/", lineComment: "//", innerMode: function(state) { return {state: state.curState, mode: state.curMode}; } }; }, "htmlmixed", "clike"); CodeMirror.defineMIME("application/x-httpd-php", "php"); CodeMirror.defineMIME("application/x-httpd-php-open", {name: "php", startOpen: true}); CodeMirror.defineMIME("text/x-php", phpConfig); }); plugins/file-manager-advanced/application/library/codemirror/mode/php/test.js000064400000014755147176754550023524 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function() { var mode = CodeMirror.getMode({indentUnit: 2}, "php"); function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } MT('simple_test', '[meta ]'); MT('variable_interpolation_non_alphanumeric', '[meta $/$\\$}$\\\"$:$;$?$|$[[$]]$+$=aaa"]', '[meta ?>]'); MT('variable_interpolation_digits', '[meta ]'); MT('variable_interpolation_simple_syntax_1', '[meta ]'); MT('variable_interpolation_simple_syntax_2', '[meta ]'); MT('variable_interpolation_simple_syntax_3', '[meta [variable aaaaa][string .aaaaaa"];', '[keyword echo] [string "aaa][variable-2 $aaaa][string ->][variable-2 $aaaaa][string .aaaaaa"];', '[keyword echo] [string "aaa][variable-2 $aaaa]->[variable aaaaa][string [[2]].aaaaaa"];', '[keyword echo] [string "aaa][variable-2 $aaaa]->[variable aaaaa][string ->aaaa2.aaaaaa"];', '[meta ?>]'); MT('variable_interpolation_escaping', '[meta aaa.aaa"];', '[keyword echo] [string "aaa\\$aaaa[[2]]aaa.aaa"];', '[keyword echo] [string "aaa\\$aaaa[[asd]]aaa.aaa"];', '[keyword echo] [string "aaa{\\$aaaa->aaa.aaa"];', '[keyword echo] [string "aaa{\\$aaaa[[2]]aaa.aaa"];', '[keyword echo] [string "aaa{\\aaaaa[[asd]]aaa.aaa"];', '[keyword echo] [string "aaa\\${aaaa->aaa.aaa"];', '[keyword echo] [string "aaa\\${aaaa[[2]]aaa.aaa"];', '[keyword echo] [string "aaa\\${aaaa[[asd]]aaa.aaa"];', '[meta ?>]'); MT('variable_interpolation_complex_syntax_1', '[meta aaa.aaa"];', '[keyword echo] [string "aaa][variable-2 $]{[variable-2 $aaaa]}[string ->aaa.aaa"];', '[keyword echo] [string "aaa][variable-2 $]{[variable-2 $aaaa][[',' [number 42]',']]}[string ->aaa.aaa"];', '[keyword echo] [string "aaa][variable-2 $]{[variable aaaa][meta ?>]aaaaaa'); MT('variable_interpolation_complex_syntax_2', '[meta } $aaaaaa.aaa"];', '[keyword echo] [string "][variable-2 $]{[variable aaa][comment /*}?>*/][[',' [string "aaa][variable-2 $aaa][string {}][variable-2 $]{[variable aaa]}[string "]',']]}[string ->aaa.aaa"];', '[keyword echo] [string "][variable-2 $]{[variable aaa][comment /*} } $aaa } */]}[string ->aaa.aaa"];'); function build_recursive_monsters(nt, t, n){ var monsters = [t]; for (var i = 1; i <= n; ++i) monsters[i] = nt.join(monsters[i - 1]); return monsters; } var m1 = build_recursive_monsters( ['[string "][variable-2 $]{[variable aaa] [operator +] ', '}[string "]'], '[comment /* }?>} */] [string "aaa][variable-2 $aaa][string .aaa"]', 10 ); MT('variable_interpolation_complex_syntax_3_1', '[meta ]'); var m2 = build_recursive_monsters( ['[string "a][variable-2 $]{[variable aaa] [operator +] ', ' [operator +] ', '}[string .a"]'], '[comment /* }?>{{ */] [string "a?>}{{aa][variable-2 $aaa][string .a}a?>a"]', 5 ); MT('variable_interpolation_complex_syntax_3_2', '[meta ]'); function build_recursive_monsters_2(mf1, mf2, nt, t, n){ var monsters = [t]; for (var i = 1; i <= n; ++i) monsters[i] = nt[0] + mf1[i - 1] + nt[1] + mf2[i - 1] + nt[2] + monsters[i - 1] + nt[3]; return monsters; } var m3 = build_recursive_monsters_2( m1, m2, ['[string "a][variable-2 $]{[variable aaa] [operator +] ', ' [operator +] ', ' [operator +] ', '}[string .a"]'], '[comment /* }?>{{ */] [string "a?>}{{aa][variable-2 $aaa][string .a}a?>a"]', 4 ); MT('variable_interpolation_complex_syntax_3_3', '[meta ]'); MT("variable_interpolation_heredoc", "[meta CodeMirror: Pig Latin mode

Pig Latin mode

Simple mode that handles Pig Latin language.

MIME type defined: text/x-pig (PIG code)

plugins/file-manager-advanced/application/library/codemirror/mode/pig/pig.js000064400000013262147176754550023304 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE /* * Pig Latin Mode for CodeMirror 2 * @author Prasanth Jayachandran * @link https://github.com/prasanthj/pig-codemirror-2 * This implementation is adapted from PL/SQL mode in CodeMirror 2. */ (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("pig", function(_config, parserConfig) { var keywords = parserConfig.keywords, builtins = parserConfig.builtins, types = parserConfig.types, multiLineStrings = parserConfig.multiLineStrings; var isOperatorChar = /[*+\-%<>=&?:\/!|]/; function chain(stream, state, f) { state.tokenize = f; return f(stream, state); } function tokenComment(stream, state) { var isEnd = false; var ch; while(ch = stream.next()) { if(ch == "/" && isEnd) { state.tokenize = tokenBase; break; } isEnd = (ch == "*"); } return "comment"; } function tokenString(quote) { return function(stream, state) { var escaped = false, next, end = false; while((next = stream.next()) != null) { if (next == quote && !escaped) { end = true; break; } escaped = !escaped && next == "\\"; } if (end || !(escaped || multiLineStrings)) state.tokenize = tokenBase; return "error"; }; } function tokenBase(stream, state) { var ch = stream.next(); // is a start of string? if (ch == '"' || ch == "'") return chain(stream, state, tokenString(ch)); // is it one of the special chars else if(/[\[\]{}\(\),;\.]/.test(ch)) return null; // is it a number? else if(/\d/.test(ch)) { stream.eatWhile(/[\w\.]/); return "number"; } // multi line comment or operator else if (ch == "/") { if (stream.eat("*")) { return chain(stream, state, tokenComment); } else { stream.eatWhile(isOperatorChar); return "operator"; } } // single line comment or operator else if (ch=="-") { if(stream.eat("-")){ stream.skipToEnd(); return "comment"; } else { stream.eatWhile(isOperatorChar); return "operator"; } } // is it an operator else if (isOperatorChar.test(ch)) { stream.eatWhile(isOperatorChar); return "operator"; } else { // get the while word stream.eatWhile(/[\w\$_]/); // is it one of the listed keywords? if (keywords && keywords.propertyIsEnumerable(stream.current().toUpperCase())) { //keywords can be used as variables like flatten(group), group.$0 etc.. if (!stream.eat(")") && !stream.eat(".")) return "keyword"; } // is it one of the builtin functions? if (builtins && builtins.propertyIsEnumerable(stream.current().toUpperCase())) return "variable-2"; // is it one of the listed types? if (types && types.propertyIsEnumerable(stream.current().toUpperCase())) return "variable-3"; // default is a 'variable' return "variable"; } } // Interface return { startState: function() { return { tokenize: tokenBase, startOfLine: true }; }, token: function(stream, state) { if(stream.eatSpace()) return null; var style = state.tokenize(stream, state); return style; } }; }); (function() { function keywords(str) { var obj = {}, words = str.split(" "); for (var i = 0; i < words.length; ++i) obj[words[i]] = true; return obj; } // builtin funcs taken from trunk revision 1303237 var pBuiltins = "ABS ACOS ARITY ASIN ATAN AVG BAGSIZE BINSTORAGE BLOOM BUILDBLOOM CBRT CEIL " + "CONCAT COR COS COSH COUNT COUNT_STAR COV CONSTANTSIZE CUBEDIMENSIONS DIFF DISTINCT DOUBLEABS " + "DOUBLEAVG DOUBLEBASE DOUBLEMAX DOUBLEMIN DOUBLEROUND DOUBLESUM EXP FLOOR FLOATABS FLOATAVG " + "FLOATMAX FLOATMIN FLOATROUND FLOATSUM GENERICINVOKER INDEXOF INTABS INTAVG INTMAX INTMIN " + "INTSUM INVOKEFORDOUBLE INVOKEFORFLOAT INVOKEFORINT INVOKEFORLONG INVOKEFORSTRING INVOKER " + "ISEMPTY JSONLOADER JSONMETADATA JSONSTORAGE LAST_INDEX_OF LCFIRST LOG LOG10 LOWER LONGABS " + "LONGAVG LONGMAX LONGMIN LONGSUM MAX MIN MAPSIZE MONITOREDUDF NONDETERMINISTIC OUTPUTSCHEMA " + "PIGSTORAGE PIGSTREAMING RANDOM REGEX_EXTRACT REGEX_EXTRACT_ALL REPLACE ROUND SIN SINH SIZE " + "SQRT STRSPLIT SUBSTRING SUM STRINGCONCAT STRINGMAX STRINGMIN STRINGSIZE TAN TANH TOBAG " + "TOKENIZE TOMAP TOP TOTUPLE TRIM TEXTLOADER TUPLESIZE UCFIRST UPPER UTF8STORAGECONVERTER "; // taken from QueryLexer.g var pKeywords = "VOID IMPORT RETURNS DEFINE LOAD FILTER FOREACH ORDER CUBE DISTINCT COGROUP " + "JOIN CROSS UNION SPLIT INTO IF OTHERWISE ALL AS BY USING INNER OUTER ONSCHEMA PARALLEL " + "PARTITION GROUP AND OR NOT GENERATE FLATTEN ASC DESC IS STREAM THROUGH STORE MAPREDUCE " + "SHIP CACHE INPUT OUTPUT STDERROR STDIN STDOUT LIMIT SAMPLE LEFT RIGHT FULL EQ GT LT GTE LTE " + "NEQ MATCHES TRUE FALSE DUMP"; // data types var pTypes = "BOOLEAN INT LONG FLOAT DOUBLE CHARARRAY BYTEARRAY BAG TUPLE MAP "; CodeMirror.defineMIME("text/x-pig", { name: "pig", builtins: keywords(pBuiltins), keywords: keywords(pKeywords), types: keywords(pTypes) }); CodeMirror.registerHelper("hintWords", "pig", (pBuiltins + pTypes + pKeywords).split(" ")); }()); }); plugins/file-manager-advanced/application/library/codemirror/mode/powershell/index.html000064400000016314147176754550025572 0ustar00 CodeMirror: Powershell mode

PowerShell mode

MIME types defined: application/x-powershell.

plugins/file-manager-advanced/application/library/codemirror/mode/powershell/powershell.js000064400000031047147176754550026317 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { 'use strict'; if (typeof exports == 'object' && typeof module == 'object') // CommonJS mod(require('codemirror')); else if (typeof define == 'function' && define.amd) // AMD define(['codemirror'], mod); else // Plain browser env mod(window.CodeMirror); })(function(CodeMirror) { 'use strict'; CodeMirror.defineMode('powershell', function() { function buildRegexp(patterns, options) { options = options || {}; var prefix = options.prefix !== undefined ? options.prefix : '^'; var suffix = options.suffix !== undefined ? options.suffix : '\\b'; for (var i = 0; i < patterns.length; i++) { if (patterns[i] instanceof RegExp) { patterns[i] = patterns[i].source; } else { patterns[i] = patterns[i].replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); } } return new RegExp(prefix + '(' + patterns.join('|') + ')' + suffix, 'i'); } var notCharacterOrDash = '(?=[^A-Za-z\\d\\-_]|$)'; var varNames = /[\w\-:]/ var keywords = buildRegexp([ /begin|break|catch|continue|data|default|do|dynamicparam/, /else|elseif|end|exit|filter|finally|for|foreach|from|function|if|in/, /param|process|return|switch|throw|trap|try|until|where|while/ ], { suffix: notCharacterOrDash }); var punctuation = /[\[\]{},;`\.]|@[({]/; var wordOperators = buildRegexp([ 'f', /b?not/, /[ic]?split/, 'join', /is(not)?/, 'as', /[ic]?(eq|ne|[gl][te])/, /[ic]?(not)?(like|match|contains)/, /[ic]?replace/, /b?(and|or|xor)/ ], { prefix: '-' }); var symbolOperators = /[+\-*\/%]=|\+\+|--|\.\.|[+\-*&^%:=!|\/]|<(?!#)|(?!#)>/; var operators = buildRegexp([wordOperators, symbolOperators], { suffix: '' }); var numbers = /^((0x[\da-f]+)|((\d+\.\d+|\d\.|\.\d+|\d+)(e[\+\-]?\d+)?))[ld]?([kmgtp]b)?/i; var identifiers = /^[A-Za-z\_][A-Za-z\-\_\d]*\b/; var symbolBuiltins = /[A-Z]:|%|\?/i; var namedBuiltins = buildRegexp([ /Add-(Computer|Content|History|Member|PSSnapin|Type)/, /Checkpoint-Computer/, /Clear-(Content|EventLog|History|Host|Item(Property)?|Variable)/, /Compare-Object/, /Complete-Transaction/, /Connect-PSSession/, /ConvertFrom-(Csv|Json|SecureString|StringData)/, /Convert-Path/, /ConvertTo-(Csv|Html|Json|SecureString|Xml)/, /Copy-Item(Property)?/, /Debug-Process/, /Disable-(ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)/, /Disconnect-PSSession/, /Enable-(ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)/, /(Enter|Exit)-PSSession/, /Export-(Alias|Clixml|Console|Counter|Csv|FormatData|ModuleMember|PSSession)/, /ForEach-Object/, /Format-(Custom|List|Table|Wide)/, new RegExp('Get-(Acl|Alias|AuthenticodeSignature|ChildItem|Command|ComputerRestorePoint|Content|ControlPanelItem|Counter|Credential' + '|Culture|Date|Event|EventLog|EventSubscriber|ExecutionPolicy|FormatData|Help|History|Host|HotFix|Item|ItemProperty|Job' + '|Location|Member|Module|PfxCertificate|Process|PSBreakpoint|PSCallStack|PSDrive|PSProvider|PSSession|PSSessionConfiguration' + '|PSSnapin|Random|Service|TraceSource|Transaction|TypeData|UICulture|Unique|Variable|Verb|WinEvent|WmiObject)'), /Group-Object/, /Import-(Alias|Clixml|Counter|Csv|LocalizedData|Module|PSSession)/, /ImportSystemModules/, /Invoke-(Command|Expression|History|Item|RestMethod|WebRequest|WmiMethod)/, /Join-Path/, /Limit-EventLog/, /Measure-(Command|Object)/, /Move-Item(Property)?/, new RegExp('New-(Alias|Event|EventLog|Item(Property)?|Module|ModuleManifest|Object|PSDrive|PSSession|PSSessionConfigurationFile' + '|PSSessionOption|PSTransportOption|Service|TimeSpan|Variable|WebServiceProxy|WinEvent)'), /Out-(Default|File|GridView|Host|Null|Printer|String)/, /Pause/, /(Pop|Push)-Location/, /Read-Host/, /Receive-(Job|PSSession)/, /Register-(EngineEvent|ObjectEvent|PSSessionConfiguration|WmiEvent)/, /Remove-(Computer|Event|EventLog|Item(Property)?|Job|Module|PSBreakpoint|PSDrive|PSSession|PSSnapin|TypeData|Variable|WmiObject)/, /Rename-(Computer|Item(Property)?)/, /Reset-ComputerMachinePassword/, /Resolve-Path/, /Restart-(Computer|Service)/, /Restore-Computer/, /Resume-(Job|Service)/, /Save-Help/, /Select-(Object|String|Xml)/, /Send-MailMessage/, new RegExp('Set-(Acl|Alias|AuthenticodeSignature|Content|Date|ExecutionPolicy|Item(Property)?|Location|PSBreakpoint|PSDebug' + '|PSSessionConfiguration|Service|StrictMode|TraceSource|Variable|WmiInstance)'), /Show-(Command|ControlPanelItem|EventLog)/, /Sort-Object/, /Split-Path/, /Start-(Job|Process|Service|Sleep|Transaction|Transcript)/, /Stop-(Computer|Job|Process|Service|Transcript)/, /Suspend-(Job|Service)/, /TabExpansion2/, /Tee-Object/, /Test-(ComputerSecureChannel|Connection|ModuleManifest|Path|PSSessionConfigurationFile)/, /Trace-Command/, /Unblock-File/, /Undo-Transaction/, /Unregister-(Event|PSSessionConfiguration)/, /Update-(FormatData|Help|List|TypeData)/, /Use-Transaction/, /Wait-(Event|Job|Process)/, /Where-Object/, /Write-(Debug|Error|EventLog|Host|Output|Progress|Verbose|Warning)/, /cd|help|mkdir|more|oss|prompt/, /ac|asnp|cat|cd|chdir|clc|clear|clhy|cli|clp|cls|clv|cnsn|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|dnsn|ebp/, /echo|epal|epcsv|epsn|erase|etsn|exsn|fc|fl|foreach|ft|fw|gal|gbp|gc|gci|gcm|gcs|gdr|ghy|gi|gjb|gl|gm|gmo|gp|gps/, /group|gsn|gsnp|gsv|gu|gv|gwmi|h|history|icm|iex|ihy|ii|ipal|ipcsv|ipmo|ipsn|irm|ise|iwmi|iwr|kill|lp|ls|man|md/, /measure|mi|mount|move|mp|mv|nal|ndr|ni|nmo|npssc|nsn|nv|ogv|oh|popd|ps|pushd|pwd|r|rbp|rcjb|rcsn|rd|rdr|ren|ri/, /rjb|rm|rmdir|rmo|rni|rnp|rp|rsn|rsnp|rujb|rv|rvpa|rwmi|sajb|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls/, /sort|sp|spjb|spps|spsv|start|sujb|sv|swmi|tee|trcm|type|where|wjb|write/ ], { prefix: '', suffix: '' }); var variableBuiltins = buildRegexp([ /[$?^_]|Args|ConfirmPreference|ConsoleFileName|DebugPreference|Error|ErrorActionPreference|ErrorView|ExecutionContext/, /FormatEnumerationLimit|Home|Host|Input|MaximumAliasCount|MaximumDriveCount|MaximumErrorCount|MaximumFunctionCount/, /MaximumHistoryCount|MaximumVariableCount|MyInvocation|NestedPromptLevel|OutputEncoding|Pid|Profile|ProgressPreference/, /PSBoundParameters|PSCommandPath|PSCulture|PSDefaultParameterValues|PSEmailServer|PSHome|PSScriptRoot|PSSessionApplicationName/, /PSSessionConfigurationName|PSSessionOption|PSUICulture|PSVersionTable|Pwd|ShellId|StackTrace|VerbosePreference/, /WarningPreference|WhatIfPreference/, /Event|EventArgs|EventSubscriber|Sender/, /Matches|Ofs|ForEach|LastExitCode|PSCmdlet|PSItem|PSSenderInfo|This/, /true|false|null/ ], { prefix: '\\$', suffix: '' }); var builtins = buildRegexp([symbolBuiltins, namedBuiltins, variableBuiltins], { suffix: notCharacterOrDash }); var grammar = { keyword: keywords, number: numbers, operator: operators, builtin: builtins, punctuation: punctuation, identifier: identifiers }; // tokenizers function tokenBase(stream, state) { // Handle Comments //var ch = stream.peek(); var parent = state.returnStack[state.returnStack.length - 1]; if (parent && parent.shouldReturnFrom(state)) { state.tokenize = parent.tokenize; state.returnStack.pop(); return state.tokenize(stream, state); } if (stream.eatSpace()) { return null; } if (stream.eat('(')) { state.bracketNesting += 1; return 'punctuation'; } if (stream.eat(')')) { state.bracketNesting -= 1; return 'punctuation'; } for (var key in grammar) { if (stream.match(grammar[key])) { return key; } } var ch = stream.next(); // single-quote string if (ch === "'") { return tokenSingleQuoteString(stream, state); } if (ch === '$') { return tokenVariable(stream, state); } // double-quote string if (ch === '"') { return tokenDoubleQuoteString(stream, state); } if (ch === '<' && stream.eat('#')) { state.tokenize = tokenComment; return tokenComment(stream, state); } if (ch === '#') { stream.skipToEnd(); return 'comment'; } if (ch === '@') { var quoteMatch = stream.eat(/["']/); if (quoteMatch && stream.eol()) { state.tokenize = tokenMultiString; state.startQuote = quoteMatch[0]; return tokenMultiString(stream, state); } else if (stream.peek().match(/[({]/)) { return 'punctuation'; } else if (stream.peek().match(varNames)) { // splatted variable return tokenVariable(stream, state); } } return 'error'; } function tokenSingleQuoteString(stream, state) { var ch; while ((ch = stream.peek()) != null) { stream.next(); if (ch === "'" && !stream.eat("'")) { state.tokenize = tokenBase; return 'string'; } } return 'error'; } function tokenDoubleQuoteString(stream, state) { var ch; while ((ch = stream.peek()) != null) { if (ch === '$') { state.tokenize = tokenStringInterpolation; return 'string'; } stream.next(); if (ch === '`') { stream.next(); continue; } if (ch === '"' && !stream.eat('"')) { state.tokenize = tokenBase; return 'string'; } } return 'error'; } function tokenStringInterpolation(stream, state) { return tokenInterpolation(stream, state, tokenDoubleQuoteString); } function tokenMultiStringReturn(stream, state) { state.tokenize = tokenMultiString; state.startQuote = '"' return tokenMultiString(stream, state); } function tokenHereStringInterpolation(stream, state) { return tokenInterpolation(stream, state, tokenMultiStringReturn); } function tokenInterpolation(stream, state, parentTokenize) { if (stream.match('$(')) { var savedBracketNesting = state.bracketNesting; state.returnStack.push({ /*jshint loopfunc:true */ shouldReturnFrom: function(state) { return state.bracketNesting === savedBracketNesting; }, tokenize: parentTokenize }); state.tokenize = tokenBase; state.bracketNesting += 1; return 'punctuation'; } else { stream.next(); state.returnStack.push({ shouldReturnFrom: function() { return true; }, tokenize: parentTokenize }); state.tokenize = tokenVariable; return state.tokenize(stream, state); } } function tokenComment(stream, state) { var maybeEnd = false, ch; while ((ch = stream.next()) != null) { if (maybeEnd && ch == '>') { state.tokenize = tokenBase; break; } maybeEnd = (ch === '#'); } return 'comment'; } function tokenVariable(stream, state) { var ch = stream.peek(); if (stream.eat('{')) { state.tokenize = tokenVariableWithBraces; return tokenVariableWithBraces(stream, state); } else if (ch != undefined && ch.match(varNames)) { stream.eatWhile(varNames); state.tokenize = tokenBase; return 'variable-2'; } else { state.tokenize = tokenBase; return 'error'; } } function tokenVariableWithBraces(stream, state) { var ch; while ((ch = stream.next()) != null) { if (ch === '}') { state.tokenize = tokenBase; break; } } return 'variable-2'; } function tokenMultiString(stream, state) { var quote = state.startQuote; if (stream.sol() && stream.match(new RegExp(quote + '@'))) { state.tokenize = tokenBase; } else if (quote === '"') { while (!stream.eol()) { var ch = stream.peek(); if (ch === '$') { state.tokenize = tokenHereStringInterpolation; return 'string'; } stream.next(); if (ch === '`') { stream.next(); } } } else { stream.skipToEnd(); } return 'string'; } var external = { startState: function() { return { returnStack: [], bracketNesting: 0, tokenize: tokenBase }; }, token: function(stream, state) { return state.tokenize(stream, state); }, blockCommentStart: '<#', blockCommentEnd: '#>', lineComment: '#', fold: 'brace' }; return external; }); CodeMirror.defineMIME('application/x-powershell', 'powershell'); }); plugins/file-manager-advanced/application/library/codemirror/mode/powershell/test.js000064400000005473147176754550025116 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function() { var mode = CodeMirror.getMode({indentUnit: 2}, "powershell"); function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } MT('comment', '[number 1][comment # A]'); MT('comment_multiline', '[number 1][comment <#]', '[comment ABC]', '[comment #>][number 2]'); [ '0', '1234', '12kb', '12mb', '12Gb', '12Tb', '12PB', '12L', '12D', '12lkb', '12dtb', '1.234', '1.234e56', '1.', '1.e2', '.2', '.2e34', '1.2MB', '1.kb', '.1dTB', '1.e1gb', '.2', '.2e34', '0x1', '0xabcdef', '0x3tb', '0xelmb' ].forEach(function(number) { MT("number_" + number, "[number " + number + "]"); }); MT('string_literal_escaping', "[string 'a''']"); MT('string_literal_variable', "[string 'a $x']"); MT('string_escaping_1', '[string "a `""]'); MT('string_escaping_2', '[string "a """]'); MT('string_variable_escaping', '[string "a `$x"]'); MT('string_variable', '[string "a ][variable-2 $x][string b"]'); MT('string_variable_spaces', '[string "a ][variable-2 ${x y}][string b"]'); MT('string_expression', '[string "a ][punctuation $(][variable-2 $x][operator +][number 3][punctuation )][string b"]'); MT('string_expression_nested', '[string "A][punctuation $(][string "a][punctuation $(][string "w"][punctuation )][string b"][punctuation )][string B"]'); MT('string_heredoc', '[string @"]', '[string abc]', '[string "@]'); MT('string_heredoc_quotes', '[string @"]', '[string abc "\']', '[string "@]'); MT('string_heredoc_variable', '[string @"]', '[string a ][variable-2 $x][string b]', '[string "@]'); MT('string_heredoc_nested_string', '[string @"]', '[string a][punctuation $(][string "w"][punctuation )][string b]', '[string "@]'); MT('string_heredoc_literal_quotes', "[string @']", '[string abc "\']', "[string '@]"); MT('array', "[punctuation @(][string 'a'][punctuation ,][string 'b'][punctuation )]"); MT('hash', "[punctuation @{][string 'key'][operator :][string 'value'][punctuation }]"); MT('variable', "[variable-2 $test]"); MT('variable_global', "[variable-2 $global:test]"); MT('variable_spaces', "[variable-2 ${test test}]"); MT('operator_splat', "[variable-2 @x]"); MT('variable_builtin', "[builtin $ErrorActionPreference]"); MT('variable_builtin_symbols', "[builtin $$]"); MT('operator', "[operator +]"); MT('operator_unary', "[operator +][number 3]"); MT('operator_long', "[operator -match]"); [ '(', ')', '[[', ']]', '{', '}', ',', '`', ';', '.' ].forEach(function(punctuation) { MT("punctuation_" + punctuation.replace(/^[\[\]]/,''), "[punctuation " + punctuation + "]"); }); MT('keyword', "[keyword if]"); MT('call_builtin', "[builtin Get-ChildItem]"); })(); plugins/file-manager-advanced/application/library/codemirror/mode/properties/index.html000064400000003023147176754550025573 0ustar00 CodeMirror: Properties files mode

Properties files mode

MIME types defined: text/x-properties, text/x-ini.

plugins/file-manager-advanced/application/library/codemirror/mode/properties/properties.js000064400000004173147176754550026337 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("properties", function() { return { token: function(stream, state) { var sol = stream.sol() || state.afterSection; var eol = stream.eol(); state.afterSection = false; if (sol) { if (state.nextMultiline) { state.inMultiline = true; state.nextMultiline = false; } else { state.position = "def"; } } if (eol && ! state.nextMultiline) { state.inMultiline = false; state.position = "def"; } if (sol) { while(stream.eatSpace()) {} } var ch = stream.next(); if (sol && (ch === "#" || ch === "!" || ch === ";")) { state.position = "comment"; stream.skipToEnd(); return "comment"; } else if (sol && ch === "[") { state.afterSection = true; stream.skipTo("]"); stream.eat("]"); return "header"; } else if (ch === "=" || ch === ":") { state.position = "quote"; return null; } else if (ch === "\\" && state.position === "quote") { if (stream.eol()) { // end of line? // Multiline value state.nextMultiline = true; } } return state.position; }, startState: function() { return { position : "def", // Current position, "def", "quote" or "comment" nextMultiline : false, // Is the next line multiline value inMultiline : false, // Is the current line a multiline value afterSection : false // Did we just open a section }; } }; }); CodeMirror.defineMIME("text/x-properties", "properties"); CodeMirror.defineMIME("text/x-ini", "properties"); }); plugins/file-manager-advanced/application/library/codemirror/mode/protobuf/index.html000064400000003220147176754550025236 0ustar00 CodeMirror: ProtoBuf mode

ProtoBuf mode

MIME types defined: text/x-protobuf.

plugins/file-manager-advanced/application/library/codemirror/mode/protobuf/protobuf.js000064400000004101147176754550025436 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; function wordRegexp(words) { return new RegExp("^((" + words.join(")|(") + "))\\b", "i"); }; var keywordArray = [ "package", "message", "import", "syntax", "required", "optional", "repeated", "reserved", "default", "extensions", "packed", "bool", "bytes", "double", "enum", "float", "string", "int32", "int64", "uint32", "uint64", "sint32", "sint64", "fixed32", "fixed64", "sfixed32", "sfixed64" ]; var keywords = wordRegexp(keywordArray); CodeMirror.registerHelper("hintWords", "protobuf", keywordArray); var identifiers = new RegExp("^[_A-Za-z\xa1-\uffff][_A-Za-z0-9\xa1-\uffff]*"); function tokenBase(stream) { // whitespaces if (stream.eatSpace()) return null; // Handle one line Comments if (stream.match("//")) { stream.skipToEnd(); return "comment"; } // Handle Number Literals if (stream.match(/^[0-9\.+-]/, false)) { if (stream.match(/^[+-]?0x[0-9a-fA-F]+/)) return "number"; if (stream.match(/^[+-]?\d*\.\d+([EeDd][+-]?\d+)?/)) return "number"; if (stream.match(/^[+-]?\d+([EeDd][+-]?\d+)?/)) return "number"; } // Handle Strings if (stream.match(/^"([^"]|(""))*"/)) { return "string"; } if (stream.match(/^'([^']|(''))*'/)) { return "string"; } // Handle words if (stream.match(keywords)) { return "keyword"; } if (stream.match(identifiers)) { return "variable"; } ; // Handle non-detected items stream.next(); return null; }; CodeMirror.defineMode("protobuf", function() { return {token: tokenBase}; }); CodeMirror.defineMIME("text/x-protobuf", "protobuf"); }); plugins/file-manager-advanced/application/library/codemirror/mode/pug/index.html000064400000004671147176754550024204 0ustar00 CodeMirror: Pug Templating Mode

Pug Templating Mode

The Pug Templating Mode

Created by Forbes Lindesay. Managed as part of a Brackets extension at https://github.com/ForbesLindesay/jade-brackets.

MIME type defined: text/x-pug, text/x-jade.

plugins/file-manager-advanced/application/library/codemirror/mode/pug/pug.js000064400000037256147176754550023345 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror"), require("../javascript/javascript"), require("../css/css"), require("../htmlmixed/htmlmixed")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror", "../javascript/javascript", "../css/css", "../htmlmixed/htmlmixed"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("pug", function (config) { // token types var KEYWORD = 'keyword'; var DOCTYPE = 'meta'; var ID = 'builtin'; var CLASS = 'qualifier'; var ATTRS_NEST = { '{': '}', '(': ')', '[': ']' }; var jsMode = CodeMirror.getMode(config, 'javascript'); function State() { this.javaScriptLine = false; this.javaScriptLineExcludesColon = false; this.javaScriptArguments = false; this.javaScriptArgumentsDepth = 0; this.isInterpolating = false; this.interpolationNesting = 0; this.jsState = CodeMirror.startState(jsMode); this.restOfLine = ''; this.isIncludeFiltered = false; this.isEach = false; this.lastTag = ''; this.scriptType = ''; // Attributes Mode this.isAttrs = false; this.attrsNest = []; this.inAttributeName = true; this.attributeIsType = false; this.attrValue = ''; // Indented Mode this.indentOf = Infinity; this.indentToken = ''; this.innerMode = null; this.innerState = null; this.innerModeForLine = false; } /** * Safely copy a state * * @return {State} */ State.prototype.copy = function () { var res = new State(); res.javaScriptLine = this.javaScriptLine; res.javaScriptLineExcludesColon = this.javaScriptLineExcludesColon; res.javaScriptArguments = this.javaScriptArguments; res.javaScriptArgumentsDepth = this.javaScriptArgumentsDepth; res.isInterpolating = this.isInterpolating; res.interpolationNesting = this.interpolationNesting; res.jsState = CodeMirror.copyState(jsMode, this.jsState); res.innerMode = this.innerMode; if (this.innerMode && this.innerState) { res.innerState = CodeMirror.copyState(this.innerMode, this.innerState); } res.restOfLine = this.restOfLine; res.isIncludeFiltered = this.isIncludeFiltered; res.isEach = this.isEach; res.lastTag = this.lastTag; res.scriptType = this.scriptType; res.isAttrs = this.isAttrs; res.attrsNest = this.attrsNest.slice(); res.inAttributeName = this.inAttributeName; res.attributeIsType = this.attributeIsType; res.attrValue = this.attrValue; res.indentOf = this.indentOf; res.indentToken = this.indentToken; res.innerModeForLine = this.innerModeForLine; return res; }; function javaScript(stream, state) { if (stream.sol()) { // if javaScriptLine was set at end of line, ignore it state.javaScriptLine = false; state.javaScriptLineExcludesColon = false; } if (state.javaScriptLine) { if (state.javaScriptLineExcludesColon && stream.peek() === ':') { state.javaScriptLine = false; state.javaScriptLineExcludesColon = false; return; } var tok = jsMode.token(stream, state.jsState); if (stream.eol()) state.javaScriptLine = false; return tok || true; } } function javaScriptArguments(stream, state) { if (state.javaScriptArguments) { if (state.javaScriptArgumentsDepth === 0 && stream.peek() !== '(') { state.javaScriptArguments = false; return; } if (stream.peek() === '(') { state.javaScriptArgumentsDepth++; } else if (stream.peek() === ')') { state.javaScriptArgumentsDepth--; } if (state.javaScriptArgumentsDepth === 0) { state.javaScriptArguments = false; return; } var tok = jsMode.token(stream, state.jsState); return tok || true; } } function yieldStatement(stream) { if (stream.match(/^yield\b/)) { return 'keyword'; } } function doctype(stream) { if (stream.match(/^(?:doctype) *([^\n]+)?/)) { return DOCTYPE; } } function interpolation(stream, state) { if (stream.match('#{')) { state.isInterpolating = true; state.interpolationNesting = 0; return 'punctuation'; } } function interpolationContinued(stream, state) { if (state.isInterpolating) { if (stream.peek() === '}') { state.interpolationNesting--; if (state.interpolationNesting < 0) { stream.next(); state.isInterpolating = false; return 'punctuation'; } } else if (stream.peek() === '{') { state.interpolationNesting++; } return jsMode.token(stream, state.jsState) || true; } } function caseStatement(stream, state) { if (stream.match(/^case\b/)) { state.javaScriptLine = true; return KEYWORD; } } function when(stream, state) { if (stream.match(/^when\b/)) { state.javaScriptLine = true; state.javaScriptLineExcludesColon = true; return KEYWORD; } } function defaultStatement(stream) { if (stream.match(/^default\b/)) { return KEYWORD; } } function extendsStatement(stream, state) { if (stream.match(/^extends?\b/)) { state.restOfLine = 'string'; return KEYWORD; } } function append(stream, state) { if (stream.match(/^append\b/)) { state.restOfLine = 'variable'; return KEYWORD; } } function prepend(stream, state) { if (stream.match(/^prepend\b/)) { state.restOfLine = 'variable'; return KEYWORD; } } function block(stream, state) { if (stream.match(/^block\b *(?:(prepend|append)\b)?/)) { state.restOfLine = 'variable'; return KEYWORD; } } function include(stream, state) { if (stream.match(/^include\b/)) { state.restOfLine = 'string'; return KEYWORD; } } function includeFiltered(stream, state) { if (stream.match(/^include:([a-zA-Z0-9\-]+)/, false) && stream.match('include')) { state.isIncludeFiltered = true; return KEYWORD; } } function includeFilteredContinued(stream, state) { if (state.isIncludeFiltered) { var tok = filter(stream, state); state.isIncludeFiltered = false; state.restOfLine = 'string'; return tok; } } function mixin(stream, state) { if (stream.match(/^mixin\b/)) { state.javaScriptLine = true; return KEYWORD; } } function call(stream, state) { if (stream.match(/^\+([-\w]+)/)) { if (!stream.match(/^\( *[-\w]+ *=/, false)) { state.javaScriptArguments = true; state.javaScriptArgumentsDepth = 0; } return 'variable'; } if (stream.match(/^\+#{/, false)) { stream.next(); state.mixinCallAfter = true; return interpolation(stream, state); } } function callArguments(stream, state) { if (state.mixinCallAfter) { state.mixinCallAfter = false; if (!stream.match(/^\( *[-\w]+ *=/, false)) { state.javaScriptArguments = true; state.javaScriptArgumentsDepth = 0; } return true; } } function conditional(stream, state) { if (stream.match(/^(if|unless|else if|else)\b/)) { state.javaScriptLine = true; return KEYWORD; } } function each(stream, state) { if (stream.match(/^(- *)?(each|for)\b/)) { state.isEach = true; return KEYWORD; } } function eachContinued(stream, state) { if (state.isEach) { if (stream.match(/^ in\b/)) { state.javaScriptLine = true; state.isEach = false; return KEYWORD; } else if (stream.sol() || stream.eol()) { state.isEach = false; } else if (stream.next()) { while (!stream.match(/^ in\b/, false) && stream.next()); return 'variable'; } } } function whileStatement(stream, state) { if (stream.match(/^while\b/)) { state.javaScriptLine = true; return KEYWORD; } } function tag(stream, state) { var captures; if (captures = stream.match(/^(\w(?:[-:\w]*\w)?)\/?/)) { state.lastTag = captures[1].toLowerCase(); if (state.lastTag === 'script') { state.scriptType = 'application/javascript'; } return 'tag'; } } function filter(stream, state) { if (stream.match(/^:([\w\-]+)/)) { var innerMode; if (config && config.innerModes) { innerMode = config.innerModes(stream.current().substring(1)); } if (!innerMode) { innerMode = stream.current().substring(1); } if (typeof innerMode === 'string') { innerMode = CodeMirror.getMode(config, innerMode); } setInnerMode(stream, state, innerMode); return 'atom'; } } function code(stream, state) { if (stream.match(/^(!?=|-)/)) { state.javaScriptLine = true; return 'punctuation'; } } function id(stream) { if (stream.match(/^#([\w-]+)/)) { return ID; } } function className(stream) { if (stream.match(/^\.([\w-]+)/)) { return CLASS; } } function attrs(stream, state) { if (stream.peek() == '(') { stream.next(); state.isAttrs = true; state.attrsNest = []; state.inAttributeName = true; state.attrValue = ''; state.attributeIsType = false; return 'punctuation'; } } function attrsContinued(stream, state) { if (state.isAttrs) { if (ATTRS_NEST[stream.peek()]) { state.attrsNest.push(ATTRS_NEST[stream.peek()]); } if (state.attrsNest[state.attrsNest.length - 1] === stream.peek()) { state.attrsNest.pop(); } else if (stream.eat(')')) { state.isAttrs = false; return 'punctuation'; } if (state.inAttributeName && stream.match(/^[^=,\)!]+/)) { if (stream.peek() === '=' || stream.peek() === '!') { state.inAttributeName = false; state.jsState = CodeMirror.startState(jsMode); if (state.lastTag === 'script' && stream.current().trim().toLowerCase() === 'type') { state.attributeIsType = true; } else { state.attributeIsType = false; } } return 'attribute'; } var tok = jsMode.token(stream, state.jsState); if (state.attributeIsType && tok === 'string') { state.scriptType = stream.current().toString(); } if (state.attrsNest.length === 0 && (tok === 'string' || tok === 'variable' || tok === 'keyword')) { try { Function('', 'var x ' + state.attrValue.replace(/,\s*$/, '').replace(/^!/, '')); state.inAttributeName = true; state.attrValue = ''; stream.backUp(stream.current().length); return attrsContinued(stream, state); } catch (ex) { //not the end of an attribute } } state.attrValue += stream.current(); return tok || true; } } function attributesBlock(stream, state) { if (stream.match(/^&attributes\b/)) { state.javaScriptArguments = true; state.javaScriptArgumentsDepth = 0; return 'keyword'; } } function indent(stream) { if (stream.sol() && stream.eatSpace()) { return 'indent'; } } function comment(stream, state) { if (stream.match(/^ *\/\/(-)?([^\n]*)/)) { state.indentOf = stream.indentation(); state.indentToken = 'comment'; return 'comment'; } } function colon(stream) { if (stream.match(/^: */)) { return 'colon'; } } function text(stream, state) { if (stream.match(/^(?:\| ?| )([^\n]+)/)) { return 'string'; } if (stream.match(/^(<[^\n]*)/, false)) { // html string setInnerMode(stream, state, 'htmlmixed'); state.innerModeForLine = true; return innerMode(stream, state, true); } } function dot(stream, state) { if (stream.eat('.')) { var innerMode = null; if (state.lastTag === 'script' && state.scriptType.toLowerCase().indexOf('javascript') != -1) { innerMode = state.scriptType.toLowerCase().replace(/"|'/g, ''); } else if (state.lastTag === 'style') { innerMode = 'css'; } setInnerMode(stream, state, innerMode); return 'dot'; } } function fail(stream) { stream.next(); return null; } function setInnerMode(stream, state, mode) { mode = CodeMirror.mimeModes[mode] || mode; mode = config.innerModes ? config.innerModes(mode) || mode : mode; mode = CodeMirror.mimeModes[mode] || mode; mode = CodeMirror.getMode(config, mode); state.indentOf = stream.indentation(); if (mode && mode.name !== 'null') { state.innerMode = mode; } else { state.indentToken = 'string'; } } function innerMode(stream, state, force) { if (stream.indentation() > state.indentOf || (state.innerModeForLine && !stream.sol()) || force) { if (state.innerMode) { if (!state.innerState) { state.innerState = state.innerMode.startState ? CodeMirror.startState(state.innerMode, stream.indentation()) : {}; } return stream.hideFirstChars(state.indentOf + 2, function () { return state.innerMode.token(stream, state.innerState) || true; }); } else { stream.skipToEnd(); return state.indentToken; } } else if (stream.sol()) { state.indentOf = Infinity; state.indentToken = null; state.innerMode = null; state.innerState = null; } } function restOfLine(stream, state) { if (stream.sol()) { // if restOfLine was set at end of line, ignore it state.restOfLine = ''; } if (state.restOfLine) { stream.skipToEnd(); var tok = state.restOfLine; state.restOfLine = ''; return tok; } } function startState() { return new State(); } function copyState(state) { return state.copy(); } /** * Get the next token in the stream * * @param {Stream} stream * @param {State} state */ function nextToken(stream, state) { var tok = innerMode(stream, state) || restOfLine(stream, state) || interpolationContinued(stream, state) || includeFilteredContinued(stream, state) || eachContinued(stream, state) || attrsContinued(stream, state) || javaScript(stream, state) || javaScriptArguments(stream, state) || callArguments(stream, state) || yieldStatement(stream, state) || doctype(stream, state) || interpolation(stream, state) || caseStatement(stream, state) || when(stream, state) || defaultStatement(stream, state) || extendsStatement(stream, state) || append(stream, state) || prepend(stream, state) || block(stream, state) || include(stream, state) || includeFiltered(stream, state) || mixin(stream, state) || call(stream, state) || conditional(stream, state) || each(stream, state) || whileStatement(stream, state) || tag(stream, state) || filter(stream, state) || code(stream, state) || id(stream, state) || className(stream, state) || attrs(stream, state) || attributesBlock(stream, state) || indent(stream, state) || text(stream, state) || comment(stream, state) || colon(stream, state) || dot(stream, state) || fail(stream, state); return tok === true ? null : tok; } return { startState: startState, copyState: copyState, token: nextToken }; }, 'javascript', 'css', 'htmlmixed'); CodeMirror.defineMIME('text/x-pug', 'pug'); CodeMirror.defineMIME('text/x-jade', 'pug'); }); plugins/file-manager-advanced/application/library/codemirror/mode/puppet/index.html000064400000006274147176754550024727 0ustar00 CodeMirror: Puppet mode

Puppet mode

MIME types defined: text/x-puppet.

plugins/file-manager-advanced/application/library/codemirror/mode/puppet/puppet.js000064400000016620147176754550024601 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("puppet", function () { // Stores the words from the define method var words = {}; // Taken, mostly, from the Puppet official variable standards regex var variable_regex = /({)?([a-z][a-z0-9_]*)?((::[a-z][a-z0-9_]*)*::)?[a-zA-Z0-9_]+(})?/; // Takes a string of words separated by spaces and adds them as // keys with the value of the first argument 'style' function define(style, string) { var split = string.split(' '); for (var i = 0; i < split.length; i++) { words[split[i]] = style; } } // Takes commonly known puppet types/words and classifies them to a style define('keyword', 'class define site node include import inherits'); define('keyword', 'case if else in and elsif default or'); define('atom', 'false true running present absent file directory undef'); define('builtin', 'action augeas burst chain computer cron destination dport exec ' + 'file filebucket group host icmp iniface interface jump k5login limit log_level ' + 'log_prefix macauthorization mailalias maillist mcx mount nagios_command ' + 'nagios_contact nagios_contactgroup nagios_host nagios_hostdependency ' + 'nagios_hostescalation nagios_hostextinfo nagios_hostgroup nagios_service ' + 'nagios_servicedependency nagios_serviceescalation nagios_serviceextinfo ' + 'nagios_servicegroup nagios_timeperiod name notify outiface package proto reject ' + 'resources router schedule scheduled_task selboolean selmodule service source ' + 'sport ssh_authorized_key sshkey stage state table tidy todest toports tosource ' + 'user vlan yumrepo zfs zone zpool'); // After finding a start of a string ('|") this function attempts to find the end; // If a variable is encountered along the way, we display it differently when it // is encapsulated in a double-quoted string. function tokenString(stream, state) { var current, prev, found_var = false; while (!stream.eol() && (current = stream.next()) != state.pending) { if (current === '$' && prev != '\\' && state.pending == '"') { found_var = true; break; } prev = current; } if (found_var) { stream.backUp(1); } if (current == state.pending) { state.continueString = false; } else { state.continueString = true; } return "string"; } // Main function function tokenize(stream, state) { // Matches one whole word var word = stream.match(/[\w]+/, false); // Matches attributes (i.e. ensure => present ; 'ensure' would be matched) var attribute = stream.match(/(\s+)?\w+\s+=>.*/, false); // Matches non-builtin resource declarations // (i.e. "apache::vhost {" or "mycustomclasss {" would be matched) var resource = stream.match(/(\s+)?[\w:_]+(\s+)?{/, false); // Matches virtual and exported resources (i.e. @@user { ; and the like) var special_resource = stream.match(/(\s+)?[@]{1,2}[\w:_]+(\s+)?{/, false); // Finally advance the stream var ch = stream.next(); // Have we found a variable? if (ch === '$') { if (stream.match(variable_regex)) { // If so, and its in a string, assign it a different color return state.continueString ? 'variable-2' : 'variable'; } // Otherwise return an invalid variable return "error"; } // Should we still be looking for the end of a string? if (state.continueString) { // If so, go through the loop again stream.backUp(1); return tokenString(stream, state); } // Are we in a definition (class, node, define)? if (state.inDefinition) { // If so, return def (i.e. for 'class myclass {' ; 'myclass' would be matched) if (stream.match(/(\s+)?[\w:_]+(\s+)?/)) { return 'def'; } // Match the rest it the next time around stream.match(/\s+{/); state.inDefinition = false; } // Are we in an 'include' statement? if (state.inInclude) { // Match and return the included class stream.match(/(\s+)?\S+(\s+)?/); state.inInclude = false; return 'def'; } // Do we just have a function on our hands? // In 'ensure_resource("myclass")', 'ensure_resource' is matched if (stream.match(/(\s+)?\w+\(/)) { stream.backUp(1); return 'def'; } // Have we matched the prior attribute regex? if (attribute) { stream.match(/(\s+)?\w+/); return 'tag'; } // Do we have Puppet specific words? if (word && words.hasOwnProperty(word)) { // Negates the initial next() stream.backUp(1); // rs move the stream stream.match(/[\w]+/); // We want to process these words differently // do to the importance they have in Puppet if (stream.match(/\s+\S+\s+{/, false)) { state.inDefinition = true; } if (word == 'include') { state.inInclude = true; } // Returns their value as state in the prior define methods return words[word]; } // Is there a match on a reference? if (/(^|\s+)[A-Z][\w:_]+/.test(word)) { // Negate the next() stream.backUp(1); // Match the full reference stream.match(/(^|\s+)[A-Z][\w:_]+/); return 'def'; } // Have we matched the prior resource regex? if (resource) { stream.match(/(\s+)?[\w:_]+/); return 'def'; } // Have we matched the prior special_resource regex? if (special_resource) { stream.match(/(\s+)?[@]{1,2}/); return 'special'; } // Match all the comments. All of them. if (ch == "#") { stream.skipToEnd(); return "comment"; } // Have we found a string? if (ch == "'" || ch == '"') { // Store the type (single or double) state.pending = ch; // Perform the looping function to find the end return tokenString(stream, state); } // Match all the brackets if (ch == '{' || ch == '}') { return 'bracket'; } // Match characters that we are going to assume // are trying to be regex if (ch == '/') { stream.match(/.*?\//); return 'variable-3'; } // Match all the numbers if (ch.match(/[0-9]/)) { stream.eatWhile(/[0-9]+/); return 'number'; } // Match the '=' and '=>' operators if (ch == '=') { if (stream.peek() == '>') { stream.next(); } return "operator"; } // Keep advancing through all the rest stream.eatWhile(/[\w-]/); // Return a blank line for everything else return null; } // Start it all return { startState: function () { var state = {}; state.inDefinition = false; state.inInclude = false; state.continueString = false; state.pending = false; return state; }, token: function (stream, state) { // Strip the spaces, but regex will account for them eitherway if (stream.eatSpace()) return null; // Go through the main process return tokenize(stream, state); } }; }); CodeMirror.defineMIME("text/x-puppet", "puppet"); }); plugins/file-manager-advanced/application/library/codemirror/mode/python/index.html000064400000013476147176754550024735 0ustar00 CodeMirror: Python mode

Python mode

Cython mode

Configuration Options for Python mode:

  • version - 2/3 - The version of Python to recognize. Default is 2.
  • singleLineStringErrors - true/false - If you have a single-line string that is not terminated at the end of the line, this will show subsequent lines as errors if true, otherwise it will consider the newline as the end of the string. Default is false.
  • hangingIndent - int - If you want to write long arguments to a function starting on a new line, how much that line should be indented. Defaults to one normal indentation unit.

Advanced Configuration Options:

Usefull for superset of python syntax like Enthought enaml, IPython magics and questionmark help

  • singleOperators - RegEx - Regular Expression for single operator matching, default :
    ^[\\+\\-\\*/%&|\\^~<>!]
    including
    @
    on Python 3
  • singleDelimiters - RegEx - Regular Expression for single delimiter matching, default :
    ^[\\(\\)\\[\\]\\{\\}@,:`=;\\.]
  • doubleOperators - RegEx - Regular Expression for double operators matching, default :
    ^((==)|(!=)|(<=)|(>=)|(<>)|(<<)|(>>)|(//)|(\\*\\*))
  • doubleDelimiters - RegEx - Regular Expression for double delimiters matching, default :
    ^((\\+=)|(\\-=)|(\\*=)|(%=)|(/=)|(&=)|(\\|=)|(\\^=))
  • tripleDelimiters - RegEx - Regular Expression for triple delimiters matching, default :
    ^((//=)|(>>=)|(<<=)|(\\*\\*=))
  • identifiers - RegEx - Regular Expression for identifier, default :
    ^[_A-Za-z][_A-Za-z0-9]*
    on Python 2 and
    ^[_A-Za-z\u00A1-\uFFFF][_A-Za-z0-9\u00A1-\uFFFF]*
    on Python 3.
  • extra_keywords - list of string - List of extra words ton consider as keywords
  • extra_builtins - list of string - List of extra words ton consider as builtins

MIME types defined: text/x-python and text/x-cython.

plugins/file-manager-advanced/application/library/codemirror/mode/python/python.js000064400000030225147176754550024606 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; function wordRegexp(words) { return new RegExp("^((" + words.join(")|(") + "))\\b"); } var wordOperators = wordRegexp(["and", "or", "not", "is"]); var commonKeywords = ["as", "assert", "break", "class", "continue", "def", "del", "elif", "else", "except", "finally", "for", "from", "global", "if", "import", "lambda", "pass", "raise", "return", "try", "while", "with", "yield", "in"]; var commonBuiltins = ["abs", "all", "any", "bin", "bool", "bytearray", "callable", "chr", "classmethod", "compile", "complex", "delattr", "dict", "dir", "divmod", "enumerate", "eval", "filter", "float", "format", "frozenset", "getattr", "globals", "hasattr", "hash", "help", "hex", "id", "input", "int", "isinstance", "issubclass", "iter", "len", "list", "locals", "map", "max", "memoryview", "min", "next", "object", "oct", "open", "ord", "pow", "property", "range", "repr", "reversed", "round", "set", "setattr", "slice", "sorted", "staticmethod", "str", "sum", "super", "tuple", "type", "vars", "zip", "__import__", "NotImplemented", "Ellipsis", "__debug__"]; CodeMirror.registerHelper("hintWords", "python", commonKeywords.concat(commonBuiltins)); function top(state) { return state.scopes[state.scopes.length - 1]; } CodeMirror.defineMode("python", function(conf, parserConf) { var ERRORCLASS = "error"; var singleDelimiters = parserConf.singleDelimiters || /^[\(\)\[\]\{\}@,:`=;\.]/; var doubleOperators = parserConf.doubleOperators || /^([!<>]==|<>|<<|>>|\/\/|\*\*)/; var doubleDelimiters = parserConf.doubleDelimiters || /^(\+=|\-=|\*=|%=|\/=|&=|\|=|\^=)/; var tripleDelimiters = parserConf.tripleDelimiters || /^(\/\/=|>>=|<<=|\*\*=)/; var hangingIndent = parserConf.hangingIndent || conf.indentUnit; var myKeywords = commonKeywords, myBuiltins = commonBuiltins; if (parserConf.extra_keywords != undefined) myKeywords = myKeywords.concat(parserConf.extra_keywords); if (parserConf.extra_builtins != undefined) myBuiltins = myBuiltins.concat(parserConf.extra_builtins); var py3 = !(parserConf.version && Number(parserConf.version) < 3) if (py3) { // since http://legacy.python.org/dev/peps/pep-0465/ @ is also an operator var singleOperators = parserConf.singleOperators || /^[\+\-\*\/%&|\^~<>!@]/; var identifiers = parserConf.identifiers|| /^[_A-Za-z\u00A1-\uFFFF][_A-Za-z0-9\u00A1-\uFFFF]*/; myKeywords = myKeywords.concat(["nonlocal", "False", "True", "None", "async", "await"]); myBuiltins = myBuiltins.concat(["ascii", "bytes", "exec", "print"]); var stringPrefixes = new RegExp("^(([rbuf]|(br))?('{3}|\"{3}|['\"]))", "i"); } else { var singleOperators = parserConf.singleOperators || /^[\+\-\*\/%&|\^~<>!]/; var identifiers = parserConf.identifiers|| /^[_A-Za-z][_A-Za-z0-9]*/; myKeywords = myKeywords.concat(["exec", "print"]); myBuiltins = myBuiltins.concat(["apply", "basestring", "buffer", "cmp", "coerce", "execfile", "file", "intern", "long", "raw_input", "reduce", "reload", "unichr", "unicode", "xrange", "False", "True", "None"]); var stringPrefixes = new RegExp("^(([rub]|(ur)|(br))?('{3}|\"{3}|['\"]))", "i"); } var keywords = wordRegexp(myKeywords); var builtins = wordRegexp(myBuiltins); // tokenizers function tokenBase(stream, state) { if (stream.sol()) state.indent = stream.indentation() // Handle scope changes if (stream.sol() && top(state).type == "py") { var scopeOffset = top(state).offset; if (stream.eatSpace()) { var lineOffset = stream.indentation(); if (lineOffset > scopeOffset) pushPyScope(state); else if (lineOffset < scopeOffset && dedent(stream, state)) state.errorToken = true; return null; } else { var style = tokenBaseInner(stream, state); if (scopeOffset > 0 && dedent(stream, state)) style += " " + ERRORCLASS; return style; } } return tokenBaseInner(stream, state); } function tokenBaseInner(stream, state) { if (stream.eatSpace()) return null; var ch = stream.peek(); // Handle Comments if (ch == "#") { stream.skipToEnd(); return "comment"; } // Handle Number Literals if (stream.match(/^[0-9\.]/, false)) { var floatLiteral = false; // Floats if (stream.match(/^\d*\.\d+(e[\+\-]?\d+)?/i)) { floatLiteral = true; } if (stream.match(/^\d+\.\d*/)) { floatLiteral = true; } if (stream.match(/^\.\d+/)) { floatLiteral = true; } if (floatLiteral) { // Float literals may be "imaginary" stream.eat(/J/i); return "number"; } // Integers var intLiteral = false; // Hex if (stream.match(/^0x[0-9a-f]+/i)) intLiteral = true; // Binary if (stream.match(/^0b[01]+/i)) intLiteral = true; // Octal if (stream.match(/^0o[0-7]+/i)) intLiteral = true; // Decimal if (stream.match(/^[1-9]\d*(e[\+\-]?\d+)?/)) { // Decimal literals may be "imaginary" stream.eat(/J/i); // TODO - Can you have imaginary longs? intLiteral = true; } // Zero by itself with no other piece of number. if (stream.match(/^0(?![\dx])/i)) intLiteral = true; if (intLiteral) { // Integer literals may be "long" stream.eat(/L/i); return "number"; } } // Handle Strings if (stream.match(stringPrefixes)) { state.tokenize = tokenStringFactory(stream.current()); return state.tokenize(stream, state); } // Handle operators and Delimiters if (stream.match(tripleDelimiters) || stream.match(doubleDelimiters)) return "punctuation"; if (stream.match(doubleOperators) || stream.match(singleOperators)) return "operator"; if (stream.match(singleDelimiters)) return "punctuation"; if (state.lastToken == "." && stream.match(identifiers)) return "property"; if (stream.match(keywords) || stream.match(wordOperators)) return "keyword"; if (stream.match(builtins)) return "builtin"; if (stream.match(/^(self|cls)\b/)) return "variable-2"; if (stream.match(identifiers)) { if (state.lastToken == "def" || state.lastToken == "class") return "def"; return "variable"; } // Handle non-detected items stream.next(); return ERRORCLASS; } function tokenStringFactory(delimiter) { while ("rubf".indexOf(delimiter.charAt(0).toLowerCase()) >= 0) delimiter = delimiter.substr(1); var singleline = delimiter.length == 1; var OUTCLASS = "string"; function tokenString(stream, state) { while (!stream.eol()) { stream.eatWhile(/[^'"\\]/); if (stream.eat("\\")) { stream.next(); if (singleline && stream.eol()) return OUTCLASS; } else if (stream.match(delimiter)) { state.tokenize = tokenBase; return OUTCLASS; } else { stream.eat(/['"]/); } } if (singleline) { if (parserConf.singleLineStringErrors) return ERRORCLASS; else state.tokenize = tokenBase; } return OUTCLASS; } tokenString.isString = true; return tokenString; } function pushPyScope(state) { while (top(state).type != "py") state.scopes.pop() state.scopes.push({offset: top(state).offset + conf.indentUnit, type: "py", align: null}) } function pushBracketScope(stream, state, type) { var align = stream.match(/^([\s\[\{\(]|#.*)*$/, false) ? null : stream.column() + 1 state.scopes.push({offset: state.indent + hangingIndent, type: type, align: align}) } function dedent(stream, state) { var indented = stream.indentation(); while (state.scopes.length > 1 && top(state).offset > indented) { if (top(state).type != "py") return true; state.scopes.pop(); } return top(state).offset != indented; } function tokenLexer(stream, state) { if (stream.sol()) state.beginningOfLine = true; var style = state.tokenize(stream, state); var current = stream.current(); // Handle decorators if (state.beginningOfLine && current == "@") return stream.match(identifiers, false) ? "meta" : py3 ? "operator" : ERRORCLASS; if (/\S/.test(current)) state.beginningOfLine = false; if ((style == "variable" || style == "builtin") && state.lastToken == "meta") style = "meta"; // Handle scope changes. if (current == "pass" || current == "return") state.dedent += 1; if (current == "lambda") state.lambda = true; if (current == ":" && !state.lambda && top(state).type == "py") pushPyScope(state); var delimiter_index = current.length == 1 ? "[({".indexOf(current) : -1; if (delimiter_index != -1) pushBracketScope(stream, state, "])}".slice(delimiter_index, delimiter_index+1)); delimiter_index = "])}".indexOf(current); if (delimiter_index != -1) { if (top(state).type == current) state.indent = state.scopes.pop().offset - hangingIndent else return ERRORCLASS; } if (state.dedent > 0 && stream.eol() && top(state).type == "py") { if (state.scopes.length > 1) state.scopes.pop(); state.dedent -= 1; } return style; } var external = { startState: function(basecolumn) { return { tokenize: tokenBase, scopes: [{offset: basecolumn || 0, type: "py", align: null}], indent: basecolumn || 0, lastToken: null, lambda: false, dedent: 0 }; }, token: function(stream, state) { var addErr = state.errorToken; if (addErr) state.errorToken = false; var style = tokenLexer(stream, state); if (style && style != "comment") state.lastToken = (style == "keyword" || style == "punctuation") ? stream.current() : style; if (style == "punctuation") style = null; if (stream.eol() && state.lambda) state.lambda = false; return addErr ? style + " " + ERRORCLASS : style; }, indent: function(state, textAfter) { if (state.tokenize != tokenBase) return state.tokenize.isString ? CodeMirror.Pass : 0; var scope = top(state), closing = scope.type == textAfter.charAt(0) if (scope.align != null) return scope.align - (closing ? 1 : 0) else return scope.offset - (closing ? hangingIndent : 0) }, electricInput: /^\s*[\}\]\)]$/, closeBrackets: {triples: "'\""}, lineComment: "#", fold: "indent" }; return external; }); CodeMirror.defineMIME("text/x-python", "python"); var words = function(str) { return str.split(" "); }; CodeMirror.defineMIME("text/x-cython", { name: "python", extra_keywords: words("by cdef cimport cpdef ctypedef enum except"+ "extern gil include nogil property public"+ "readonly struct union DEF IF ELIF ELSE") }); }); plugins/file-manager-advanced/application/library/codemirror/mode/python/test.js000064400000002223147176754550024241 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function() { var mode = CodeMirror.getMode({indentUnit: 4}, {name: "python", version: 3, singleLineStringErrors: false}); function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } // Error, because "foobarhello" is neither a known type or property, but // property was expected (after "and"), and it should be in parentheses. MT("decoratorStartOfLine", "[meta @dec]", "[keyword def] [def function]():", " [keyword pass]"); MT("decoratorIndented", "[keyword class] [def Foo]:", " [meta @dec]", " [keyword def] [def function]():", " [keyword pass]"); MT("matmulWithSpace:", "[variable a] [operator @] [variable b]"); MT("matmulWithoutSpace:", "[variable a][operator @][variable b]"); MT("matmulSpaceBefore:", "[variable a] [operator @][variable b]"); MT("fValidStringPrefix", "[string f'this is a {formatted} string']"); MT("uValidStringPrefix", "[string u'this is an unicode string']"); })(); plugins/file-manager-advanced/application/library/codemirror/mode/q/index.html000064400000021401147176754550023637 0ustar00 CodeMirror: Q mode

Q mode

MIME type defined: text/x-q.

plugins/file-manager-advanced/application/library/codemirror/mode/q/q.js000064400000014731147176754550022450 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("q",function(config){ var indentUnit=config.indentUnit, curPunc, keywords=buildRE(["abs","acos","aj","aj0","all","and","any","asc","asin","asof","atan","attr","avg","avgs","bin","by","ceiling","cols","cor","cos","count","cov","cross","csv","cut","delete","deltas","desc","dev","differ","distinct","div","do","each","ej","enlist","eval","except","exec","exit","exp","fby","fills","first","fkeys","flip","floor","from","get","getenv","group","gtime","hclose","hcount","hdel","hopen","hsym","iasc","idesc","if","ij","in","insert","inter","inv","key","keys","last","like","list","lj","load","log","lower","lsq","ltime","ltrim","mavg","max","maxs","mcount","md5","mdev","med","meta","min","mins","mmax","mmin","mmu","mod","msum","neg","next","not","null","or","over","parse","peach","pj","plist","prd","prds","prev","prior","rand","rank","ratios","raze","read0","read1","reciprocal","reverse","rload","rotate","rsave","rtrim","save","scan","select","set","setenv","show","signum","sin","sqrt","ss","ssr","string","sublist","sum","sums","sv","system","tables","tan","til","trim","txf","type","uj","ungroup","union","update","upper","upsert","value","var","view","views","vs","wavg","where","where","while","within","wj","wj1","wsum","xasc","xbar","xcol","xcols","xdesc","xexp","xgroup","xkey","xlog","xprev","xrank"]), E=/[|/&^!+:\\\-*%$=~#;@><,?_\'\"\[\(\]\)\s{}]/; function buildRE(w){return new RegExp("^("+w.join("|")+")$");} function tokenBase(stream,state){ var sol=stream.sol(),c=stream.next(); curPunc=null; if(sol) if(c=="/") return(state.tokenize=tokenLineComment)(stream,state); else if(c=="\\"){ if(stream.eol()||/\s/.test(stream.peek())) return stream.skipToEnd(),/^\\\s*$/.test(stream.current())?(state.tokenize=tokenCommentToEOF)(stream, state):state.tokenize=tokenBase,"comment"; else return state.tokenize=tokenBase,"builtin"; } if(/\s/.test(c)) return stream.peek()=="/"?(stream.skipToEnd(),"comment"):"whitespace"; if(c=='"') return(state.tokenize=tokenString)(stream,state); if(c=='`') return stream.eatWhile(/[A-Z|a-z|\d|_|:|\/|\.]/),"symbol"; if(("."==c&&/\d/.test(stream.peek()))||/\d/.test(c)){ var t=null; stream.backUp(1); if(stream.match(/^\d{4}\.\d{2}(m|\.\d{2}([D|T](\d{2}(:\d{2}(:\d{2}(\.\d{1,9})?)?)?)?)?)/) || stream.match(/^\d+D(\d{2}(:\d{2}(:\d{2}(\.\d{1,9})?)?)?)/) || stream.match(/^\d{2}:\d{2}(:\d{2}(\.\d{1,9})?)?/) || stream.match(/^\d+[ptuv]{1}/)) t="temporal"; else if(stream.match(/^0[NwW]{1}/) || stream.match(/^0x[\d|a-f|A-F]*/) || stream.match(/^[0|1]+[b]{1}/) || stream.match(/^\d+[chijn]{1}/) || stream.match(/-?\d*(\.\d*)?(e[+\-]?\d+)?(e|f)?/)) t="number"; return(t&&(!(c=stream.peek())||E.test(c)))?t:(stream.next(),"error"); } if(/[A-Z|a-z]|\./.test(c)) return stream.eatWhile(/[A-Z|a-z|\.|_|\d]/),keywords.test(stream.current())?"keyword":"variable"; if(/[|/&^!+:\\\-*%$=~#;@><\.,?_\']/.test(c)) return null; if(/[{}\(\[\]\)]/.test(c)) return null; return"error"; } function tokenLineComment(stream,state){ return stream.skipToEnd(),/\/\s*$/.test(stream.current())?(state.tokenize=tokenBlockComment)(stream,state):(state.tokenize=tokenBase),"comment"; } function tokenBlockComment(stream,state){ var f=stream.sol()&&stream.peek()=="\\"; stream.skipToEnd(); if(f&&/^\\\s*$/.test(stream.current())) state.tokenize=tokenBase; return"comment"; } function tokenCommentToEOF(stream){return stream.skipToEnd(),"comment";} function tokenString(stream,state){ var escaped=false,next,end=false; while((next=stream.next())){ if(next=="\""&&!escaped){end=true;break;} escaped=!escaped&&next=="\\"; } if(end)state.tokenize=tokenBase; return"string"; } function pushContext(state,type,col){state.context={prev:state.context,indent:state.indent,col:col,type:type};} function popContext(state){state.indent=state.context.indent;state.context=state.context.prev;} return{ startState:function(){ return{tokenize:tokenBase, context:null, indent:0, col:0}; }, token:function(stream,state){ if(stream.sol()){ if(state.context&&state.context.align==null) state.context.align=false; state.indent=stream.indentation(); } //if (stream.eatSpace()) return null; var style=state.tokenize(stream,state); if(style!="comment"&&state.context&&state.context.align==null&&state.context.type!="pattern"){ state.context.align=true; } if(curPunc=="(")pushContext(state,")",stream.column()); else if(curPunc=="[")pushContext(state,"]",stream.column()); else if(curPunc=="{")pushContext(state,"}",stream.column()); else if(/[\]\}\)]/.test(curPunc)){ while(state.context&&state.context.type=="pattern")popContext(state); if(state.context&&curPunc==state.context.type)popContext(state); } else if(curPunc=="."&&state.context&&state.context.type=="pattern")popContext(state); else if(/atom|string|variable/.test(style)&&state.context){ if(/[\}\]]/.test(state.context.type)) pushContext(state,"pattern",stream.column()); else if(state.context.type=="pattern"&&!state.context.align){ state.context.align=true; state.context.col=stream.column(); } } return style; }, indent:function(state,textAfter){ var firstChar=textAfter&&textAfter.charAt(0); var context=state.context; if(/[\]\}]/.test(firstChar)) while (context&&context.type=="pattern")context=context.prev; var closing=context&&firstChar==context.type; if(!context) return 0; else if(context.type=="pattern") return context.col; else if(context.align) return context.col+(closing?0:1); else return context.indent+(closing?0:indentUnit); } }; }); CodeMirror.defineMIME("text/x-q","q"); }); plugins/file-manager-advanced/application/library/codemirror/mode/r/index.html000064400000005016147176754550023644 0ustar00 CodeMirror: R mode

R mode

MIME types defined: text/x-rsrc.

Development of the CodeMirror R mode was kindly sponsored by Ubalo.

plugins/file-manager-advanced/application/library/codemirror/mode/r/r.js000064400000013055147176754550022450 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.registerHelper("wordChars", "r", /[\w.]/); CodeMirror.defineMode("r", function(config) { function wordObj(str) { var words = str.split(" "), res = {}; for (var i = 0; i < words.length; ++i) res[words[i]] = true; return res; } var atoms = wordObj("NULL NA Inf NaN NA_integer_ NA_real_ NA_complex_ NA_character_"); var builtins = wordObj("list quote bquote eval return call parse deparse"); var keywords = wordObj("if else repeat while function for in next break"); var blockkeywords = wordObj("if else repeat while function for"); var opChars = /[+\-*\/^<>=!&|~$:]/; var curPunc; function tokenBase(stream, state) { curPunc = null; var ch = stream.next(); if (ch == "#") { stream.skipToEnd(); return "comment"; } else if (ch == "0" && stream.eat("x")) { stream.eatWhile(/[\da-f]/i); return "number"; } else if (ch == "." && stream.eat(/\d/)) { stream.match(/\d*(?:e[+\-]?\d+)?/); return "number"; } else if (/\d/.test(ch)) { stream.match(/\d*(?:\.\d+)?(?:e[+\-]\d+)?L?/); return "number"; } else if (ch == "'" || ch == '"') { state.tokenize = tokenString(ch); return "string"; } else if (ch == "." && stream.match(/.[.\d]+/)) { return "keyword"; } else if (/[\w\.]/.test(ch) && ch != "_") { stream.eatWhile(/[\w\.]/); var word = stream.current(); if (atoms.propertyIsEnumerable(word)) return "atom"; if (keywords.propertyIsEnumerable(word)) { // Block keywords start new blocks, except 'else if', which only starts // one new block for the 'if', no block for the 'else'. if (blockkeywords.propertyIsEnumerable(word) && !stream.match(/\s*if(\s+|$)/, false)) curPunc = "block"; return "keyword"; } if (builtins.propertyIsEnumerable(word)) return "builtin"; return "variable"; } else if (ch == "%") { if (stream.skipTo("%")) stream.next(); return "variable-2"; } else if (ch == "<" && stream.eat("-")) { return "arrow"; } else if (ch == "=" && state.ctx.argList) { return "arg-is"; } else if (opChars.test(ch)) { if (ch == "$") return "dollar"; stream.eatWhile(opChars); return "operator"; } else if (/[\(\){}\[\];]/.test(ch)) { curPunc = ch; if (ch == ";") return "semi"; return null; } else { return null; } } function tokenString(quote) { return function(stream, state) { if (stream.eat("\\")) { var ch = stream.next(); if (ch == "x") stream.match(/^[a-f0-9]{2}/i); else if ((ch == "u" || ch == "U") && stream.eat("{") && stream.skipTo("}")) stream.next(); else if (ch == "u") stream.match(/^[a-f0-9]{4}/i); else if (ch == "U") stream.match(/^[a-f0-9]{8}/i); else if (/[0-7]/.test(ch)) stream.match(/^[0-7]{1,2}/); return "string-2"; } else { var next; while ((next = stream.next()) != null) { if (next == quote) { state.tokenize = tokenBase; break; } if (next == "\\") { stream.backUp(1); break; } } return "string"; } }; } function push(state, type, stream) { state.ctx = {type: type, indent: state.indent, align: null, column: stream.column(), prev: state.ctx}; } function pop(state) { state.indent = state.ctx.indent; state.ctx = state.ctx.prev; } return { startState: function() { return {tokenize: tokenBase, ctx: {type: "top", indent: -config.indentUnit, align: false}, indent: 0, afterIdent: false}; }, token: function(stream, state) { if (stream.sol()) { if (state.ctx.align == null) state.ctx.align = false; state.indent = stream.indentation(); } if (stream.eatSpace()) return null; var style = state.tokenize(stream, state); if (style != "comment" && state.ctx.align == null) state.ctx.align = true; var ctype = state.ctx.type; if ((curPunc == ";" || curPunc == "{" || curPunc == "}") && ctype == "block") pop(state); if (curPunc == "{") push(state, "}", stream); else if (curPunc == "(") { push(state, ")", stream); if (state.afterIdent) state.ctx.argList = true; } else if (curPunc == "[") push(state, "]", stream); else if (curPunc == "block") push(state, "block", stream); else if (curPunc == ctype) pop(state); state.afterIdent = style == "variable" || style == "keyword"; return style; }, indent: function(state, textAfter) { if (state.tokenize != tokenBase) return 0; var firstChar = textAfter && textAfter.charAt(0), ctx = state.ctx, closing = firstChar == ctx.type; if (ctx.type == "block") return ctx.indent + (firstChar == "{" ? 0 : config.indentUnit); else if (ctx.align) return ctx.column + (closing ? 0 : 1); else return ctx.indent + (closing ? 0 : config.indentUnit); }, lineComment: "#" }; }); CodeMirror.defineMIME("text/x-rsrc", "r"); }); plugins/file-manager-advanced/application/library/codemirror/mode/rpm/changes/index.html000064400000004204147176754550025607 0ustar00 CodeMirror: RPM changes mode

RPM changes mode

MIME types defined: text/x-rpm-changes.

plugins/file-manager-advanced/application/library/codemirror/mode/rpm/index.html000064400000011017147176754550024177 0ustar00 CodeMirror: RPM changes mode

RPM changes mode

RPM spec mode

MIME types defined: text/x-rpm-spec, text/x-rpm-changes.

plugins/file-manager-advanced/application/library/codemirror/mode/rpm/rpm.js000064400000007277147176754550023353 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("rpm-changes", function() { var headerSeperator = /^-+$/; var headerLine = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ?\d{1,2} \d{2}:\d{2}(:\d{2})? [A-Z]{3,4} \d{4} - /; var simpleEmail = /^[\w+.-]+@[\w.-]+/; return { token: function(stream) { if (stream.sol()) { if (stream.match(headerSeperator)) { return 'tag'; } if (stream.match(headerLine)) { return 'tag'; } } if (stream.match(simpleEmail)) { return 'string'; } stream.next(); return null; } }; }); CodeMirror.defineMIME("text/x-rpm-changes", "rpm-changes"); // Quick and dirty spec file highlighting CodeMirror.defineMode("rpm-spec", function() { var arch = /^(i386|i586|i686|x86_64|ppc64le|ppc64|ppc|ia64|s390x|s390|sparc64|sparcv9|sparc|noarch|alphaev6|alpha|hppa|mipsel)/; var preamble = /^[a-zA-Z0-9()]+:/; var section = /^%(debug_package|package|description|prep|build|install|files|clean|changelog|preinstall|preun|postinstall|postun|pretrans|posttrans|pre|post|triggerin|triggerun|verifyscript|check|triggerpostun|triggerprein|trigger)/; var control_flow_complex = /^%(ifnarch|ifarch|if)/; // rpm control flow macros var control_flow_simple = /^%(else|endif)/; // rpm control flow macros var operators = /^(\!|\?|\<\=|\<|\>\=|\>|\=\=|\&\&|\|\|)/; // operators in control flow macros return { startState: function () { return { controlFlow: false, macroParameters: false, section: false }; }, token: function (stream, state) { var ch = stream.peek(); if (ch == "#") { stream.skipToEnd(); return "comment"; } if (stream.sol()) { if (stream.match(preamble)) { return "header"; } if (stream.match(section)) { return "atom"; } } if (stream.match(/^\$\w+/)) { return "def"; } // Variables like '$RPM_BUILD_ROOT' if (stream.match(/^\$\{\w+\}/)) { return "def"; } // Variables like '${RPM_BUILD_ROOT}' if (stream.match(control_flow_simple)) { return "keyword"; } if (stream.match(control_flow_complex)) { state.controlFlow = true; return "keyword"; } if (state.controlFlow) { if (stream.match(operators)) { return "operator"; } if (stream.match(/^(\d+)/)) { return "number"; } if (stream.eol()) { state.controlFlow = false; } } if (stream.match(arch)) { if (stream.eol()) { state.controlFlow = false; } return "number"; } // Macros like '%make_install' or '%attr(0775,root,root)' if (stream.match(/^%[\w]+/)) { if (stream.match(/^\(/)) { state.macroParameters = true; } return "keyword"; } if (state.macroParameters) { if (stream.match(/^\d+/)) { return "number";} if (stream.match(/^\)/)) { state.macroParameters = false; return "keyword"; } } // Macros like '%{defined fedora}' if (stream.match(/^%\{\??[\w \-\:\!]+\}/)) { if (stream.eol()) { state.controlFlow = false; } return "def"; } //TODO: Include bash script sub-parser (CodeMirror supports that) stream.next(); return null; } }; }); CodeMirror.defineMIME("text/x-rpm-spec", "rpm-spec"); }); plugins/file-manager-advanced/application/library/codemirror/mode/rst/index.html000064400000042551147176754550024220 0ustar00 CodeMirror: reStructuredText mode

reStructuredText mode

The python mode will be used for highlighting blocks containing Python/IPython terminal sessions: blocks starting with >>> (for Python) or In [num]: (for IPython). Further, the stex mode will be used for highlighting blocks containing LaTex code.

MIME types defined: text/x-rst.

plugins/file-manager-advanced/application/library/codemirror/mode/rst/rst.js000064400000042213147176754550023364 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror"), require("../python/python"), require("../stex/stex"), require("../../addon/mode/overlay")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror", "../python/python", "../stex/stex", "../../addon/mode/overlay"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode('rst', function (config, options) { var rx_strong = /^\*\*[^\*\s](?:[^\*]*[^\*\s])?\*\*/; var rx_emphasis = /^\*[^\*\s](?:[^\*]*[^\*\s])?\*/; var rx_literal = /^``[^`\s](?:[^`]*[^`\s])``/; var rx_number = /^(?:[\d]+(?:[\.,]\d+)*)/; var rx_positive = /^(?:\s\+[\d]+(?:[\.,]\d+)*)/; var rx_negative = /^(?:\s\-[\d]+(?:[\.,]\d+)*)/; var rx_uri_protocol = "[Hh][Tt][Tt][Pp][Ss]?://"; var rx_uri_domain = "(?:[\\d\\w.-]+)\\.(?:\\w{2,6})"; var rx_uri_path = "(?:/[\\d\\w\\#\\%\\&\\-\\.\\,\\/\\:\\=\\?\\~]+)*"; var rx_uri = new RegExp("^" + rx_uri_protocol + rx_uri_domain + rx_uri_path); var overlay = { token: function (stream) { if (stream.match(rx_strong) && stream.match (/\W+|$/, false)) return 'strong'; if (stream.match(rx_emphasis) && stream.match (/\W+|$/, false)) return 'em'; if (stream.match(rx_literal) && stream.match (/\W+|$/, false)) return 'string-2'; if (stream.match(rx_number)) return 'number'; if (stream.match(rx_positive)) return 'positive'; if (stream.match(rx_negative)) return 'negative'; if (stream.match(rx_uri)) return 'link'; while (stream.next() != null) { if (stream.match(rx_strong, false)) break; if (stream.match(rx_emphasis, false)) break; if (stream.match(rx_literal, false)) break; if (stream.match(rx_number, false)) break; if (stream.match(rx_positive, false)) break; if (stream.match(rx_negative, false)) break; if (stream.match(rx_uri, false)) break; } return null; } }; var mode = CodeMirror.getMode( config, options.backdrop || 'rst-base' ); return CodeMirror.overlayMode(mode, overlay, true); // combine }, 'python', 'stex'); /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// CodeMirror.defineMode('rst-base', function (config) { /////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// function format(string) { var args = Array.prototype.slice.call(arguments, 1); return string.replace(/{(\d+)}/g, function (match, n) { return typeof args[n] != 'undefined' ? args[n] : match; }); } /////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// var mode_python = CodeMirror.getMode(config, 'python'); var mode_stex = CodeMirror.getMode(config, 'stex'); /////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// var SEPA = "\\s+"; var TAIL = "(?:\\s*|\\W|$)", rx_TAIL = new RegExp(format('^{0}', TAIL)); var NAME = "(?:[^\\W\\d_](?:[\\w!\"#$%&'()\\*\\+,\\-\\.\/:;<=>\\?]*[^\\W_])?)", rx_NAME = new RegExp(format('^{0}', NAME)); var NAME_WWS = "(?:[^\\W\\d_](?:[\\w\\s!\"#$%&'()\\*\\+,\\-\\.\/:;<=>\\?]*[^\\W_])?)"; var REF_NAME = format('(?:{0}|`{1}`)', NAME, NAME_WWS); var TEXT1 = "(?:[^\\s\\|](?:[^\\|]*[^\\s\\|])?)"; var TEXT2 = "(?:[^\\`]+)", rx_TEXT2 = new RegExp(format('^{0}', TEXT2)); var rx_section = new RegExp( "^([!'#$%&\"()*+,-./:;<=>?@\\[\\\\\\]^_`{|}~])\\1{3,}\\s*$"); var rx_explicit = new RegExp( format('^\\.\\.{0}', SEPA)); var rx_link = new RegExp( format('^_{0}:{1}|^__:{1}', REF_NAME, TAIL)); var rx_directive = new RegExp( format('^{0}::{1}', REF_NAME, TAIL)); var rx_substitution = new RegExp( format('^\\|{0}\\|{1}{2}::{3}', TEXT1, SEPA, REF_NAME, TAIL)); var rx_footnote = new RegExp( format('^\\[(?:\\d+|#{0}?|\\*)]{1}', REF_NAME, TAIL)); var rx_citation = new RegExp( format('^\\[{0}\\]{1}', REF_NAME, TAIL)); var rx_substitution_ref = new RegExp( format('^\\|{0}\\|', TEXT1)); var rx_footnote_ref = new RegExp( format('^\\[(?:\\d+|#{0}?|\\*)]_', REF_NAME)); var rx_citation_ref = new RegExp( format('^\\[{0}\\]_', REF_NAME)); var rx_link_ref1 = new RegExp( format('^{0}__?', REF_NAME)); var rx_link_ref2 = new RegExp( format('^`{0}`_', TEXT2)); var rx_role_pre = new RegExp( format('^:{0}:`{1}`{2}', NAME, TEXT2, TAIL)); var rx_role_suf = new RegExp( format('^`{1}`:{0}:{2}', NAME, TEXT2, TAIL)); var rx_role = new RegExp( format('^:{0}:{1}', NAME, TAIL)); var rx_directive_name = new RegExp(format('^{0}', REF_NAME)); var rx_directive_tail = new RegExp(format('^::{0}', TAIL)); var rx_substitution_text = new RegExp(format('^\\|{0}\\|', TEXT1)); var rx_substitution_sepa = new RegExp(format('^{0}', SEPA)); var rx_substitution_name = new RegExp(format('^{0}', REF_NAME)); var rx_substitution_tail = new RegExp(format('^::{0}', TAIL)); var rx_link_head = new RegExp("^_"); var rx_link_name = new RegExp(format('^{0}|_', REF_NAME)); var rx_link_tail = new RegExp(format('^:{0}', TAIL)); var rx_verbatim = new RegExp('^::\\s*$'); var rx_examples = new RegExp('^\\s+(?:>>>|In \\[\\d+\\]:)\\s'); /////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// function to_normal(stream, state) { var token = null; if (stream.sol() && stream.match(rx_examples, false)) { change(state, to_mode, { mode: mode_python, local: CodeMirror.startState(mode_python) }); } else if (stream.sol() && stream.match(rx_explicit)) { change(state, to_explicit); token = 'meta'; } else if (stream.sol() && stream.match(rx_section)) { change(state, to_normal); token = 'header'; } else if (phase(state) == rx_role_pre || stream.match(rx_role_pre, false)) { switch (stage(state)) { case 0: change(state, to_normal, context(rx_role_pre, 1)); stream.match(/^:/); token = 'meta'; break; case 1: change(state, to_normal, context(rx_role_pre, 2)); stream.match(rx_NAME); token = 'keyword'; if (stream.current().match(/^(?:math|latex)/)) { state.tmp_stex = true; } break; case 2: change(state, to_normal, context(rx_role_pre, 3)); stream.match(/^:`/); token = 'meta'; break; case 3: if (state.tmp_stex) { state.tmp_stex = undefined; state.tmp = { mode: mode_stex, local: CodeMirror.startState(mode_stex) }; } if (state.tmp) { if (stream.peek() == '`') { change(state, to_normal, context(rx_role_pre, 4)); state.tmp = undefined; break; } token = state.tmp.mode.token(stream, state.tmp.local); break; } change(state, to_normal, context(rx_role_pre, 4)); stream.match(rx_TEXT2); token = 'string'; break; case 4: change(state, to_normal, context(rx_role_pre, 5)); stream.match(/^`/); token = 'meta'; break; case 5: change(state, to_normal, context(rx_role_pre, 6)); stream.match(rx_TAIL); break; default: change(state, to_normal); } } else if (phase(state) == rx_role_suf || stream.match(rx_role_suf, false)) { switch (stage(state)) { case 0: change(state, to_normal, context(rx_role_suf, 1)); stream.match(/^`/); token = 'meta'; break; case 1: change(state, to_normal, context(rx_role_suf, 2)); stream.match(rx_TEXT2); token = 'string'; break; case 2: change(state, to_normal, context(rx_role_suf, 3)); stream.match(/^`:/); token = 'meta'; break; case 3: change(state, to_normal, context(rx_role_suf, 4)); stream.match(rx_NAME); token = 'keyword'; break; case 4: change(state, to_normal, context(rx_role_suf, 5)); stream.match(/^:/); token = 'meta'; break; case 5: change(state, to_normal, context(rx_role_suf, 6)); stream.match(rx_TAIL); break; default: change(state, to_normal); } } else if (phase(state) == rx_role || stream.match(rx_role, false)) { switch (stage(state)) { case 0: change(state, to_normal, context(rx_role, 1)); stream.match(/^:/); token = 'meta'; break; case 1: change(state, to_normal, context(rx_role, 2)); stream.match(rx_NAME); token = 'keyword'; break; case 2: change(state, to_normal, context(rx_role, 3)); stream.match(/^:/); token = 'meta'; break; case 3: change(state, to_normal, context(rx_role, 4)); stream.match(rx_TAIL); break; default: change(state, to_normal); } } else if (phase(state) == rx_substitution_ref || stream.match(rx_substitution_ref, false)) { switch (stage(state)) { case 0: change(state, to_normal, context(rx_substitution_ref, 1)); stream.match(rx_substitution_text); token = 'variable-2'; break; case 1: change(state, to_normal, context(rx_substitution_ref, 2)); if (stream.match(/^_?_?/)) token = 'link'; break; default: change(state, to_normal); } } else if (stream.match(rx_footnote_ref)) { change(state, to_normal); token = 'quote'; } else if (stream.match(rx_citation_ref)) { change(state, to_normal); token = 'quote'; } else if (stream.match(rx_link_ref1)) { change(state, to_normal); if (!stream.peek() || stream.peek().match(/^\W$/)) { token = 'link'; } } else if (phase(state) == rx_link_ref2 || stream.match(rx_link_ref2, false)) { switch (stage(state)) { case 0: if (!stream.peek() || stream.peek().match(/^\W$/)) { change(state, to_normal, context(rx_link_ref2, 1)); } else { stream.match(rx_link_ref2); } break; case 1: change(state, to_normal, context(rx_link_ref2, 2)); stream.match(/^`/); token = 'link'; break; case 2: change(state, to_normal, context(rx_link_ref2, 3)); stream.match(rx_TEXT2); break; case 3: change(state, to_normal, context(rx_link_ref2, 4)); stream.match(/^`_/); token = 'link'; break; default: change(state, to_normal); } } else if (stream.match(rx_verbatim)) { change(state, to_verbatim); } else { if (stream.next()) change(state, to_normal); } return token; } /////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// function to_explicit(stream, state) { var token = null; if (phase(state) == rx_substitution || stream.match(rx_substitution, false)) { switch (stage(state)) { case 0: change(state, to_explicit, context(rx_substitution, 1)); stream.match(rx_substitution_text); token = 'variable-2'; break; case 1: change(state, to_explicit, context(rx_substitution, 2)); stream.match(rx_substitution_sepa); break; case 2: change(state, to_explicit, context(rx_substitution, 3)); stream.match(rx_substitution_name); token = 'keyword'; break; case 3: change(state, to_explicit, context(rx_substitution, 4)); stream.match(rx_substitution_tail); token = 'meta'; break; default: change(state, to_normal); } } else if (phase(state) == rx_directive || stream.match(rx_directive, false)) { switch (stage(state)) { case 0: change(state, to_explicit, context(rx_directive, 1)); stream.match(rx_directive_name); token = 'keyword'; if (stream.current().match(/^(?:math|latex)/)) state.tmp_stex = true; else if (stream.current().match(/^python/)) state.tmp_py = true; break; case 1: change(state, to_explicit, context(rx_directive, 2)); stream.match(rx_directive_tail); token = 'meta'; if (stream.match(/^latex\s*$/) || state.tmp_stex) { state.tmp_stex = undefined; change(state, to_mode, { mode: mode_stex, local: CodeMirror.startState(mode_stex) }); } break; case 2: change(state, to_explicit, context(rx_directive, 3)); if (stream.match(/^python\s*$/) || state.tmp_py) { state.tmp_py = undefined; change(state, to_mode, { mode: mode_python, local: CodeMirror.startState(mode_python) }); } break; default: change(state, to_normal); } } else if (phase(state) == rx_link || stream.match(rx_link, false)) { switch (stage(state)) { case 0: change(state, to_explicit, context(rx_link, 1)); stream.match(rx_link_head); stream.match(rx_link_name); token = 'link'; break; case 1: change(state, to_explicit, context(rx_link, 2)); stream.match(rx_link_tail); token = 'meta'; break; default: change(state, to_normal); } } else if (stream.match(rx_footnote)) { change(state, to_normal); token = 'quote'; } else if (stream.match(rx_citation)) { change(state, to_normal); token = 'quote'; } else { stream.eatSpace(); if (stream.eol()) { change(state, to_normal); } else { stream.skipToEnd(); change(state, to_comment); token = 'comment'; } } return token; } /////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// function to_comment(stream, state) { return as_block(stream, state, 'comment'); } function to_verbatim(stream, state) { return as_block(stream, state, 'meta'); } function as_block(stream, state, token) { if (stream.eol() || stream.eatSpace()) { stream.skipToEnd(); return token; } else { change(state, to_normal); return null; } } /////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// function to_mode(stream, state) { if (state.ctx.mode && state.ctx.local) { if (stream.sol()) { if (!stream.eatSpace()) change(state, to_normal); return null; } return state.ctx.mode.token(stream, state.ctx.local); } change(state, to_normal); return null; } /////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// function context(phase, stage, mode, local) { return {phase: phase, stage: stage, mode: mode, local: local}; } function change(state, tok, ctx) { state.tok = tok; state.ctx = ctx || {}; } function stage(state) { return state.ctx.stage || 0; } function phase(state) { return state.ctx.phase; } /////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// return { startState: function () { return {tok: to_normal, ctx: context(undefined, 0)}; }, copyState: function (state) { var ctx = state.ctx, tmp = state.tmp; if (ctx.local) ctx = {mode: ctx.mode, local: CodeMirror.copyState(ctx.mode, ctx.local)}; if (tmp) tmp = {mode: tmp.mode, local: CodeMirror.copyState(tmp.mode, tmp.local)}; return {tok: state.tok, ctx: ctx, tmp: tmp}; }, innerMode: function (state) { return state.tmp ? {state: state.tmp.local, mode: state.tmp.mode} : state.ctx.mode ? {state: state.ctx.local, mode: state.ctx.mode} : null; }, token: function (stream, state) { return state.tok(stream, state); } }; }, 'python', 'stex'); /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// CodeMirror.defineMIME('text/x-rst', 'rst'); /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// }); plugins/file-manager-advanced/application/library/codemirror/mode/ruby/index.html000064400000013165147176754550024370 0ustar00 CodeMirror: Ruby mode

Ruby mode

MIME types defined: text/x-ruby.

Development of the CodeMirror Ruby mode was kindly sponsored by Ubalo.

plugins/file-manager-advanced/application/library/codemirror/mode/ruby/ruby.js000064400000024331147176754550023707 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("ruby", function(config) { function wordObj(words) { var o = {}; for (var i = 0, e = words.length; i < e; ++i) o[words[i]] = true; return o; } var keywords = wordObj([ "alias", "and", "BEGIN", "begin", "break", "case", "class", "def", "defined?", "do", "else", "elsif", "END", "end", "ensure", "false", "for", "if", "in", "module", "next", "not", "or", "redo", "rescue", "retry", "return", "self", "super", "then", "true", "undef", "unless", "until", "when", "while", "yield", "nil", "raise", "throw", "catch", "fail", "loop", "callcc", "caller", "lambda", "proc", "public", "protected", "private", "require", "load", "require_relative", "extend", "autoload", "__END__", "__FILE__", "__LINE__", "__dir__" ]); var indentWords = wordObj(["def", "class", "case", "for", "while", "until", "module", "then", "catch", "loop", "proc", "begin"]); var dedentWords = wordObj(["end", "until"]); var matching = {"[": "]", "{": "}", "(": ")"}; var curPunc; function chain(newtok, stream, state) { state.tokenize.push(newtok); return newtok(stream, state); } function tokenBase(stream, state) { if (stream.sol() && stream.match("=begin") && stream.eol()) { state.tokenize.push(readBlockComment); return "comment"; } if (stream.eatSpace()) return null; var ch = stream.next(), m; if (ch == "`" || ch == "'" || ch == '"') { return chain(readQuoted(ch, "string", ch == '"' || ch == "`"), stream, state); } else if (ch == "/") { var currentIndex = stream.current().length; if (stream.skipTo("/")) { var search_till = stream.current().length; stream.backUp(stream.current().length - currentIndex); var balance = 0; // balance brackets while (stream.current().length < search_till) { var chchr = stream.next(); if (chchr == "(") balance += 1; else if (chchr == ")") balance -= 1; if (balance < 0) break; } stream.backUp(stream.current().length - currentIndex); if (balance == 0) return chain(readQuoted(ch, "string-2", true), stream, state); } return "operator"; } else if (ch == "%") { var style = "string", embed = true; if (stream.eat("s")) style = "atom"; else if (stream.eat(/[WQ]/)) style = "string"; else if (stream.eat(/[r]/)) style = "string-2"; else if (stream.eat(/[wxq]/)) { style = "string"; embed = false; } var delim = stream.eat(/[^\w\s=]/); if (!delim) return "operator"; if (matching.propertyIsEnumerable(delim)) delim = matching[delim]; return chain(readQuoted(delim, style, embed, true), stream, state); } else if (ch == "#") { stream.skipToEnd(); return "comment"; } else if (ch == "<" && (m = stream.match(/^<-?[\`\"\']?([a-zA-Z_?]\w*)[\`\"\']?(?:;|$)/))) { return chain(readHereDoc(m[1]), stream, state); } else if (ch == "0") { if (stream.eat("x")) stream.eatWhile(/[\da-fA-F]/); else if (stream.eat("b")) stream.eatWhile(/[01]/); else stream.eatWhile(/[0-7]/); return "number"; } else if (/\d/.test(ch)) { stream.match(/^[\d_]*(?:\.[\d_]+)?(?:[eE][+\-]?[\d_]+)?/); return "number"; } else if (ch == "?") { while (stream.match(/^\\[CM]-/)) {} if (stream.eat("\\")) stream.eatWhile(/\w/); else stream.next(); return "string"; } else if (ch == ":") { if (stream.eat("'")) return chain(readQuoted("'", "atom", false), stream, state); if (stream.eat('"')) return chain(readQuoted('"', "atom", true), stream, state); // :> :>> :< :<< are valid symbols if (stream.eat(/[\<\>]/)) { stream.eat(/[\<\>]/); return "atom"; } // :+ :- :/ :* :| :& :! are valid symbols if (stream.eat(/[\+\-\*\/\&\|\:\!]/)) { return "atom"; } // Symbols can't start by a digit if (stream.eat(/[a-zA-Z$@_\xa1-\uffff]/)) { stream.eatWhile(/[\w$\xa1-\uffff]/); // Only one ? ! = is allowed and only as the last character stream.eat(/[\?\!\=]/); return "atom"; } return "operator"; } else if (ch == "@" && stream.match(/^@?[a-zA-Z_\xa1-\uffff]/)) { stream.eat("@"); stream.eatWhile(/[\w\xa1-\uffff]/); return "variable-2"; } else if (ch == "$") { if (stream.eat(/[a-zA-Z_]/)) { stream.eatWhile(/[\w]/); } else if (stream.eat(/\d/)) { stream.eat(/\d/); } else { stream.next(); // Must be a special global like $: or $! } return "variable-3"; } else if (/[a-zA-Z_\xa1-\uffff]/.test(ch)) { stream.eatWhile(/[\w\xa1-\uffff]/); stream.eat(/[\?\!]/); if (stream.eat(":")) return "atom"; return "ident"; } else if (ch == "|" && (state.varList || state.lastTok == "{" || state.lastTok == "do")) { curPunc = "|"; return null; } else if (/[\(\)\[\]{}\\;]/.test(ch)) { curPunc = ch; return null; } else if (ch == "-" && stream.eat(">")) { return "arrow"; } else if (/[=+\-\/*:\.^%<>~|]/.test(ch)) { var more = stream.eatWhile(/[=+\-\/*:\.^%<>~|]/); if (ch == "." && !more) curPunc = "."; return "operator"; } else { return null; } } function tokenBaseUntilBrace(depth) { if (!depth) depth = 1; return function(stream, state) { if (stream.peek() == "}") { if (depth == 1) { state.tokenize.pop(); return state.tokenize[state.tokenize.length-1](stream, state); } else { state.tokenize[state.tokenize.length - 1] = tokenBaseUntilBrace(depth - 1); } } else if (stream.peek() == "{") { state.tokenize[state.tokenize.length - 1] = tokenBaseUntilBrace(depth + 1); } return tokenBase(stream, state); }; } function tokenBaseOnce() { var alreadyCalled = false; return function(stream, state) { if (alreadyCalled) { state.tokenize.pop(); return state.tokenize[state.tokenize.length-1](stream, state); } alreadyCalled = true; return tokenBase(stream, state); }; } function readQuoted(quote, style, embed, unescaped) { return function(stream, state) { var escaped = false, ch; if (state.context.type === 'read-quoted-paused') { state.context = state.context.prev; stream.eat("}"); } while ((ch = stream.next()) != null) { if (ch == quote && (unescaped || !escaped)) { state.tokenize.pop(); break; } if (embed && ch == "#" && !escaped) { if (stream.eat("{")) { if (quote == "}") { state.context = {prev: state.context, type: 'read-quoted-paused'}; } state.tokenize.push(tokenBaseUntilBrace()); break; } else if (/[@\$]/.test(stream.peek())) { state.tokenize.push(tokenBaseOnce()); break; } } escaped = !escaped && ch == "\\"; } return style; }; } function readHereDoc(phrase) { return function(stream, state) { if (stream.match(phrase)) state.tokenize.pop(); else stream.skipToEnd(); return "string"; }; } function readBlockComment(stream, state) { if (stream.sol() && stream.match("=end") && stream.eol()) state.tokenize.pop(); stream.skipToEnd(); return "comment"; } return { startState: function() { return {tokenize: [tokenBase], indented: 0, context: {type: "top", indented: -config.indentUnit}, continuedLine: false, lastTok: null, varList: false}; }, token: function(stream, state) { curPunc = null; if (stream.sol()) state.indented = stream.indentation(); var style = state.tokenize[state.tokenize.length-1](stream, state), kwtype; var thisTok = curPunc; if (style == "ident") { var word = stream.current(); style = state.lastTok == "." ? "property" : keywords.propertyIsEnumerable(stream.current()) ? "keyword" : /^[A-Z]/.test(word) ? "tag" : (state.lastTok == "def" || state.lastTok == "class" || state.varList) ? "def" : "variable"; if (style == "keyword") { thisTok = word; if (indentWords.propertyIsEnumerable(word)) kwtype = "indent"; else if (dedentWords.propertyIsEnumerable(word)) kwtype = "dedent"; else if ((word == "if" || word == "unless") && stream.column() == stream.indentation()) kwtype = "indent"; else if (word == "do" && state.context.indented < state.indented) kwtype = "indent"; } } if (curPunc || (style && style != "comment")) state.lastTok = thisTok; if (curPunc == "|") state.varList = !state.varList; if (kwtype == "indent" || /[\(\[\{]/.test(curPunc)) state.context = {prev: state.context, type: curPunc || style, indented: state.indented}; else if ((kwtype == "dedent" || /[\)\]\}]/.test(curPunc)) && state.context.prev) state.context = state.context.prev; if (stream.eol()) state.continuedLine = (curPunc == "\\" || style == "operator"); return style; }, indent: function(state, textAfter) { if (state.tokenize[state.tokenize.length-1] != tokenBase) return 0; var firstChar = textAfter && textAfter.charAt(0); var ct = state.context; var closing = ct.type == matching[firstChar] || ct.type == "keyword" && /^(?:end|until|else|elsif|when|rescue)\b/.test(textAfter); return ct.indented + (closing ? 0 : config.indentUnit) + (state.continuedLine ? config.indentUnit : 0); }, electricInput: /^\s*(?:end|rescue|\})$/, lineComment: "#" }; }); CodeMirror.defineMIME("text/x-ruby", "ruby"); }); plugins/file-manager-advanced/application/library/codemirror/mode/ruby/test.js000064400000000726147176754550023707 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function() { var mode = CodeMirror.getMode({indentUnit: 2}, "ruby"); function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } MT("divide_equal_operator", "[variable bar] [operator /=] [variable foo]"); MT("divide_equal_operator_no_spacing", "[variable foo][operator /=][number 42]"); })(); plugins/file-manager-advanced/application/library/codemirror/mode/rust/index.html000064400000002774147176754550024410 0ustar00 CodeMirror: Rust mode

Rust mode

MIME types defined: text/x-rustsrc.

plugins/file-manager-advanced/application/library/codemirror/mode/rust/rust.js000064400000005721147176754550023741 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror"), require("../../addon/mode/simple")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror", "../../addon/mode/simple"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineSimpleMode("rust",{ start: [ // string and byte string {regex: /b?"/, token: "string", next: "string"}, // raw string and raw byte string {regex: /b?r"/, token: "string", next: "string_raw"}, {regex: /b?r#+"/, token: "string", next: "string_raw_hash"}, // character {regex: /'(?:[^'\\]|\\(?:[nrt0'"]|x[\da-fA-F]{2}|u\{[\da-fA-F]{6}\}))'/, token: "string-2"}, // byte {regex: /b'(?:[^']|\\(?:['\\nrt0]|x[\da-fA-F]{2}))'/, token: "string-2"}, {regex: /(?:(?:[0-9][0-9_]*)(?:(?:[Ee][+-]?[0-9_]+)|\.[0-9_]+(?:[Ee][+-]?[0-9_]+)?)(?:f32|f64)?)|(?:0(?:b[01_]+|(?:o[0-7_]+)|(?:x[0-9a-fA-F_]+))|(?:[0-9][0-9_]*))(?:u8|u16|u32|u64|i8|i16|i32|i64|isize|usize)?/, token: "number"}, {regex: /(let(?:\s+mut)?|fn|enum|mod|struct|type)(\s+)([a-zA-Z_][a-zA-Z0-9_]*)/, token: ["keyword", null, "def"]}, {regex: /(?:abstract|alignof|as|box|break|continue|const|crate|do|else|enum|extern|fn|for|final|if|impl|in|loop|macro|match|mod|move|offsetof|override|priv|proc|pub|pure|ref|return|self|sizeof|static|struct|super|trait|type|typeof|unsafe|unsized|use|virtual|where|while|yield)\b/, token: "keyword"}, {regex: /\b(?:Self|isize|usize|char|bool|u8|u16|u32|u64|f16|f32|f64|i8|i16|i32|i64|str|Option)\b/, token: "atom"}, {regex: /\b(?:true|false|Some|None|Ok|Err)\b/, token: "builtin"}, {regex: /\b(fn)(\s+)([a-zA-Z_][a-zA-Z0-9_]*)/, token: ["keyword", null ,"def"]}, {regex: /#!?\[.*\]/, token: "meta"}, {regex: /\/\/.*/, token: "comment"}, {regex: /\/\*/, token: "comment", next: "comment"}, {regex: /[-+\/*=<>!]+/, token: "operator"}, {regex: /[a-zA-Z_]\w*!/,token: "variable-3"}, {regex: /[a-zA-Z_]\w*/, token: "variable"}, {regex: /[\{\[\(]/, indent: true}, {regex: /[\}\]\)]/, dedent: true} ], string: [ {regex: /"/, token: "string", next: "start"}, {regex: /(?:[^\\"]|\\(?:.|$))*/, token: "string"} ], string_raw: [ {regex: /"/, token: "string", next: "start"}, {regex: /[^"]*/, token: "string"} ], string_raw_hash: [ {regex: /"#+/, token: "string", next: "start"}, {regex: /(?:[^"]|"(?!#))*/, token: "string"} ], comment: [ {regex: /.*?\*\//, token: "comment", next: "start"}, {regex: /.*/, token: "comment"} ], meta: { dontIndentStates: ["comment"], electricInput: /^\s*\}$/, blockCommentStart: "/*", blockCommentEnd: "*/", lineComment: "//", fold: "brace" } }); CodeMirror.defineMIME("text/x-rustsrc", "rust"); }); plugins/file-manager-advanced/application/library/codemirror/mode/rust/test.js000064400000001740147176754550023720 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function() { var mode = CodeMirror.getMode({indentUnit: 4}, "rust"); function MT(name) {test.mode(name, mode, Array.prototype.slice.call(arguments, 1));} MT('integer_test', '[number 123i32]', '[number 123u32]', '[number 123_u32]', '[number 0xff_u8]', '[number 0o70_i16]', '[number 0b1111_1111_1001_0000_i32]', '[number 0usize]'); MT('float_test', '[number 123.0f64]', '[number 0.1f64]', '[number 0.1f32]', '[number 12E+99_f64]'); MT('string-literals-test', '[string "foo"]', '[string r"foo"]', '[string "\\"foo\\""]', '[string r#""foo""#]', '[string "foo #\\"# bar"]', '[string b"foo"]', '[string br"foo"]', '[string b"\\"foo\\""]', '[string br#""foo""#]', '[string br##"foo #" bar"##]', "[string-2 'h']", "[string-2 b'h']"); })(); plugins/file-manager-advanced/application/library/codemirror/mode/sas/index.html000064400000003476147176754550024201 0ustar00 CodeMirror: SAS mode

SAS mode

MIME types defined: text/x-sas.

plugins/file-manager-advanced/application/library/codemirror/mode/sas/sas.js000064400000037351147176754550023327 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE // SAS mode copyright (c) 2016 Jared Dean, SAS Institute // Created by Jared Dean // TODO // indent and de-indent // identify macro variables //Definitions // comment -- text withing * ; or /* */ // keyword -- SAS language variable // variable -- macro variables starts with '&' or variable formats // variable-2 -- DATA Step, proc, or macro names // string -- text within ' ' or " " // operator -- numeric operator + / - * ** le eq ge ... and so on // builtin -- proc %macro data run mend // atom // def (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("sas", function () { var words = {}; var isDoubleOperatorSym = { eq: 'operator', lt: 'operator', le: 'operator', gt: 'operator', ge: 'operator', "in": 'operator', ne: 'operator', or: 'operator' }; var isDoubleOperatorChar = /(<=|>=|!=|<>)/; var isSingleOperatorChar = /[=\(:\),{}.*<>+\-\/^\[\]]/; // Takes a string of words separated by spaces and adds them as // keys with the value of the first argument 'style' function define(style, string, context) { if (context) { var split = string.split(' '); for (var i = 0; i < split.length; i++) { words[split[i]] = {style: style, state: context}; } } } //datastep define('def', 'stack pgm view source debug nesting nolist', ['inDataStep']); define('def', 'if while until for do do; end end; then else cancel', ['inDataStep']); define('def', 'label format _n_ _error_', ['inDataStep']); define('def', 'ALTER BUFNO BUFSIZE CNTLLEV COMPRESS DLDMGACTION ENCRYPT ENCRYPTKEY EXTENDOBSCOUNTER GENMAX GENNUM INDEX LABEL OBSBUF OUTREP PW PWREQ READ REPEMPTY REPLACE REUSE ROLE SORTEDBY SPILL TOBSNO TYPE WRITE FILECLOSE FIRSTOBS IN OBS POINTOBS WHERE WHEREUP IDXNAME IDXWHERE DROP KEEP RENAME', ['inDataStep']); define('def', 'filevar finfo finv fipname fipnamel fipstate first firstobs floor', ['inDataStep']); define('def', 'varfmt varinfmt varlabel varlen varname varnum varray varrayx vartype verify vformat vformatd vformatdx vformatn vformatnx vformatw vformatwx vformatx vinarray vinarrayx vinformat vinformatd vinformatdx vinformatn vinformatnx vinformatw vinformatwx vinformatx vlabel vlabelx vlength vlengthx vname vnamex vnferr vtype vtypex weekday', ['inDataStep']); define('def', 'zipfips zipname zipnamel zipstate', ['inDataStep']); define('def', 'put putc putn', ['inDataStep']); define('builtin', 'data run', ['inDataStep']); //proc define('def', 'data', ['inProc']); // flow control for macros define('def', '%if %end %end; %else %else; %do %do; %then', ['inMacro']); //everywhere define('builtin', 'proc run; quit; libname filename %macro %mend option options', ['ALL']); define('def', 'footnote title libname ods', ['ALL']); define('def', '%let %put %global %sysfunc %eval ', ['ALL']); // automatic macro variables http://support.sas.com/documentation/cdl/en/mcrolref/61885/HTML/default/viewer.htm#a003167023.htm define('variable', '&sysbuffr &syscc &syscharwidth &syscmd &sysdate &sysdate9 &sysday &sysdevic &sysdmg &sysdsn &sysencoding &sysenv &syserr &syserrortext &sysfilrc &syshostname &sysindex &sysinfo &sysjobid &syslast &syslckrc &syslibrc &syslogapplname &sysmacroname &sysmenv &sysmsg &sysncpu &sysodspath &sysparm &syspbuff &sysprocessid &sysprocessname &sysprocname &sysrc &sysscp &sysscpl &sysscpl &syssite &sysstartid &sysstartname &systcpiphostname &systime &sysuserid &sysver &sysvlong &sysvlong4 &syswarningtext', ['ALL']); //footnote[1-9]? title[1-9]? //options statement define('def', 'source2 nosource2 page pageno pagesize', ['ALL']); //proc and datastep define('def', '_all_ _character_ _cmd_ _freq_ _i_ _infile_ _last_ _msg_ _null_ _numeric_ _temporary_ _type_ abort abs addr adjrsq airy alpha alter altlog altprint and arcos array arsin as atan attrc attrib attrn authserver autoexec awscontrol awsdef awsmenu awsmenumerge awstitle backward band base betainv between blocksize blshift bnot bor brshift bufno bufsize bxor by byerr byline byte calculated call cards cards4 catcache cbufno cdf ceil center cexist change chisq cinv class cleanup close cnonct cntllev coalesce codegen col collate collin column comamid comaux1 comaux2 comdef compbl compound compress config continue convert cos cosh cpuid create cross crosstab css curobs cv daccdb daccdbsl daccsl daccsyd dacctab dairy datalines datalines4 datejul datepart datetime day dbcslang dbcstype dclose ddm delete delimiter depdb depdbsl depsl depsyd deptab dequote descending descript design= device dflang dhms dif digamma dim dinfo display distinct dkricond dkrocond dlm dnum do dopen doptname doptnum dread drop dropnote dsname dsnferr echo else emaildlg emailid emailpw emailserver emailsys encrypt end endsas engine eof eov erf erfc error errorcheck errors exist exp fappend fclose fcol fdelete feedback fetch fetchobs fexist fget file fileclose fileexist filefmt filename fileref fmterr fmtsearch fnonct fnote font fontalias fopen foptname foptnum force formatted formchar formdelim formdlim forward fpoint fpos fput fread frewind frlen from fsep fuzz fwrite gaminv gamma getoption getvarc getvarn go goto group gwindow hbar hbound helpenv helploc hms honorappearance hosthelp hostprint hour hpct html hvar ibessel ibr id if index indexc indexw initcmd initstmt inner input inputc inputn inr insert int intck intnx into intrr invaliddata irr is jbessel join juldate keep kentb kurtosis label lag last lbound leave left length levels lgamma lib library libref line linesize link list log log10 log2 logpdf logpmf logsdf lostcard lowcase lrecl ls macro macrogen maps mautosource max maxdec maxr mdy mean measures median memtype merge merror min minute missing missover mlogic mod mode model modify month mopen mort mprint mrecall msglevel msymtabmax mvarsize myy n nest netpv new news nmiss no nobatch nobs nocaps nocardimage nocenter nocharcode nocmdmac nocol nocum nodate nodbcs nodetails nodmr nodms nodmsbatch nodup nodupkey noduplicates noechoauto noequals noerrorabend noexitwindows nofullstimer noicon noimplmac noint nolist noloadlist nomiss nomlogic nomprint nomrecall nomsgcase nomstored nomultenvappl nonotes nonumber noobs noovp nopad nopercent noprint noprintinit normal norow norsasuser nosetinit nosplash nosymbolgen note notes notitle notitles notsorted noverbose noxsync noxwait npv null number numkeys nummousekeys nway obs on open order ordinal otherwise out outer outp= output over ovp p(1 5 10 25 50 75 90 95 99) pad pad2 paired parm parmcards path pathdll pathname pdf peek peekc pfkey pmf point poisson poke position printer probbeta probbnml probchi probf probgam probhypr probit probnegb probnorm probsig probt procleave prt ps pw pwreq qtr quote r ranbin rancau ranexp rangam range ranks rannor ranpoi rantbl rantri ranuni read recfm register regr remote remove rename repeat replace resolve retain return reuse reverse rewind right round rsquare rtf rtrace rtraceloc s s2 samploc sasautos sascontrol sasfrscr sasmsg sasmstore sasscript sasuser saving scan sdf second select selection separated seq serror set setcomm setot sign simple sin sinh siteinfo skewness skip sle sls sortedby sortpgm sortseq sortsize soundex spedis splashlocation split spool sqrt start std stderr stdin stfips stimer stname stnamel stop stopover subgroup subpopn substr sum sumwgt symbol symbolgen symget symput sysget sysin sysleave sysmsg sysparm sysprint sysprintfont sysprod sysrc system t table tables tan tanh tapeclose tbufsize terminal test then timepart tinv tnonct to today tol tooldef totper transformout translate trantab tranwrd trigamma trim trimn trunc truncover type unformatted uniform union until upcase update user usericon uss validate value var weight when where while wincharset window work workinit workterm write wsum xsync xwait yearcutoff yes yyq min max', ['inDataStep', 'inProc']); define('operator', 'and not ', ['inDataStep', 'inProc']); // Main function function tokenize(stream, state) { // Finally advance the stream var ch = stream.next(); // BLOCKCOMMENT if (ch === '/' && stream.eat('*')) { state.continueComment = true; return "comment"; } else if (state.continueComment === true) { // in comment block //comment ends at the beginning of the line if (ch === '*' && stream.peek() === '/') { stream.next(); state.continueComment = false; } else if (stream.skipTo('*')) { //comment is potentially later in line stream.skipTo('*'); stream.next(); if (stream.eat('/')) state.continueComment = false; } else { stream.skipToEnd(); } return "comment"; } // DoubleOperator match var doubleOperator = ch + stream.peek(); // Match all line comments. var myString = stream.string; var myRegexp = /(?:^\s*|[;]\s*)(\*.*?);/ig; var match = myRegexp.exec(myString); if (match !== null) { if (match.index === 0 && (stream.column() !== (match.index + match[0].length - 1))) { stream.backUp(stream.column()); stream.skipTo(';'); stream.next(); return 'comment'; } else if (match.index + 1 < stream.column() && stream.column() < match.index + match[0].length - 1) { // the ';' triggers the match so move one past it to start // the comment block that is why match.index+1 stream.backUp(stream.column() - match.index - 1); stream.skipTo(';'); stream.next(); return 'comment'; } } else if ((ch === '"' || ch === "'") && !state.continueString) { state.continueString = ch return "string" } else if (state.continueString) { if (state.continueString == ch) { state.continueString = null; } else if (stream.skipTo(state.continueString)) { // quote found on this line stream.next(); state.continueString = null; } else { stream.skipToEnd(); } return "string"; } else if (state.continueString !== null && stream.eol()) { stream.skipTo(state.continueString) || stream.skipToEnd(); return "string"; } else if (/[\d\.]/.test(ch)) { //find numbers if (ch === ".") stream.match(/^[0-9]+([eE][\-+]?[0-9]+)?/); else if (ch === "0") stream.match(/^[xX][0-9a-fA-F]+/) || stream.match(/^0[0-7]+/); else stream.match(/^[0-9]*\.?[0-9]*([eE][\-+]?[0-9]+)?/); return "number"; } else if (isDoubleOperatorChar.test(ch + stream.peek())) { // TWO SYMBOL TOKENS stream.next(); return "operator"; } else if (isDoubleOperatorSym.hasOwnProperty(doubleOperator)) { stream.next(); if (stream.peek() === ' ') return isDoubleOperatorSym[doubleOperator.toLowerCase()]; } else if (isSingleOperatorChar.test(ch)) { // SINGLE SYMBOL TOKENS return "operator"; } // Matches one whole word -- even if the word is a character var word; if (stream.match(/[%&;\w]+/, false) != null) { word = ch + stream.match(/[%&;\w]+/, true); if (/&/.test(word)) return 'variable' } else { word = ch; } // the word after DATA PROC or MACRO if (state.nextword) { stream.match(/[\w]+/); // match memname.libname if (stream.peek() === '.') stream.skipTo(' '); state.nextword = false; return 'variable-2'; } word = word.toLowerCase() // Are we in a DATA Step? if (state.inDataStep) { if (word === 'run;' || stream.match(/run\s;/)) { state.inDataStep = false; return 'builtin'; } // variable formats if ((word) && stream.next() === '.') { //either a format or libname.memname if (/\w/.test(stream.peek())) return 'variable-2'; else return 'variable'; } // do we have a DATA Step keyword if (word && words.hasOwnProperty(word) && (words[word].state.indexOf("inDataStep") !== -1 || words[word].state.indexOf("ALL") !== -1)) { //backup to the start of the word if (stream.start < stream.pos) stream.backUp(stream.pos - stream.start); //advance the length of the word and return for (var i = 0; i < word.length; ++i) stream.next(); return words[word].style; } } // Are we in an Proc statement? if (state.inProc) { if (word === 'run;' || word === 'quit;') { state.inProc = false; return 'builtin'; } // do we have a proc keyword if (word && words.hasOwnProperty(word) && (words[word].state.indexOf("inProc") !== -1 || words[word].state.indexOf("ALL") !== -1)) { stream.match(/[\w]+/); return words[word].style; } } // Are we in a Macro statement? if (state.inMacro) { if (word === '%mend') { if (stream.peek() === ';') stream.next(); state.inMacro = false; return 'builtin'; } if (word && words.hasOwnProperty(word) && (words[word].state.indexOf("inMacro") !== -1 || words[word].state.indexOf("ALL") !== -1)) { stream.match(/[\w]+/); return words[word].style; } return 'atom'; } // Do we have Keywords specific words? if (word && words.hasOwnProperty(word)) { // Negates the initial next() stream.backUp(1); // Actually move the stream stream.match(/[\w]+/); if (word === 'data' && /=/.test(stream.peek()) === false) { state.inDataStep = true; state.nextword = true; return 'builtin'; } if (word === 'proc') { state.inProc = true; state.nextword = true; return 'builtin'; } if (word === '%macro') { state.inMacro = true; state.nextword = true; return 'builtin'; } if (/title[1-9]/.test(word)) return 'def'; if (word === 'footnote') { stream.eat(/[1-9]/); return 'def'; } // Returns their value as state in the prior define methods if (state.inDataStep === true && words[word].state.indexOf("inDataStep") !== -1) return words[word].style; if (state.inProc === true && words[word].state.indexOf("inProc") !== -1) return words[word].style; if (state.inMacro === true && words[word].state.indexOf("inMacro") !== -1) return words[word].style; if (words[word].state.indexOf("ALL") !== -1) return words[word].style; return null; } // Unrecognized syntax return null; } return { startState: function () { return { inDataStep: false, inProc: false, inMacro: false, nextword: false, continueString: null, continueComment: false }; }, token: function (stream, state) { // Strip the spaces, but regex will account for them either way if (stream.eatSpace()) return null; // Go through the main process return tokenize(stream, state); }, blockCommentStart: "/*", blockCommentEnd: "*/" }; }); CodeMirror.defineMIME("text/x-sas", "sas"); }); plugins/file-manager-advanced/application/library/codemirror/mode/sass/index.html000064400000003043147176754550024352 0ustar00 CodeMirror: Sass mode

Sass mode

MIME types defined: text/x-sass.

plugins/file-manager-advanced/application/library/codemirror/mode/sass/sass.js000064400000023513147176754550023670 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("sass", function(config) { function tokenRegexp(words) { return new RegExp("^" + words.join("|")); } var keywords = ["true", "false", "null", "auto"]; var keywordsRegexp = new RegExp("^" + keywords.join("|")); var operators = ["\\(", "\\)", "=", ">", "<", "==", ">=", "<=", "\\+", "-", "\\!=", "/", "\\*", "%", "and", "or", "not", ";","\\{","\\}",":"]; var opRegexp = tokenRegexp(operators); var pseudoElementsRegexp = /^::?[a-zA-Z_][\w\-]*/; function urlTokens(stream, state) { var ch = stream.peek(); if (ch === ")") { stream.next(); state.tokenizer = tokenBase; return "operator"; } else if (ch === "(") { stream.next(); stream.eatSpace(); return "operator"; } else if (ch === "'" || ch === '"') { state.tokenizer = buildStringTokenizer(stream.next()); return "string"; } else { state.tokenizer = buildStringTokenizer(")", false); return "string"; } } function comment(indentation, multiLine) { return function(stream, state) { if (stream.sol() && stream.indentation() <= indentation) { state.tokenizer = tokenBase; return tokenBase(stream, state); } if (multiLine && stream.skipTo("*/")) { stream.next(); stream.next(); state.tokenizer = tokenBase; } else { stream.skipToEnd(); } return "comment"; }; } function buildStringTokenizer(quote, greedy) { if (greedy == null) { greedy = true; } function stringTokenizer(stream, state) { var nextChar = stream.next(); var peekChar = stream.peek(); var previousChar = stream.string.charAt(stream.pos-2); var endingString = ((nextChar !== "\\" && peekChar === quote) || (nextChar === quote && previousChar !== "\\")); if (endingString) { if (nextChar !== quote && greedy) { stream.next(); } state.tokenizer = tokenBase; return "string"; } else if (nextChar === "#" && peekChar === "{") { state.tokenizer = buildInterpolationTokenizer(stringTokenizer); stream.next(); return "operator"; } else { return "string"; } } return stringTokenizer; } function buildInterpolationTokenizer(currentTokenizer) { return function(stream, state) { if (stream.peek() === "}") { stream.next(); state.tokenizer = currentTokenizer; return "operator"; } else { return tokenBase(stream, state); } }; } function indent(state) { if (state.indentCount == 0) { state.indentCount++; var lastScopeOffset = state.scopes[0].offset; var currentOffset = lastScopeOffset + config.indentUnit; state.scopes.unshift({ offset:currentOffset }); } } function dedent(state) { if (state.scopes.length == 1) return; state.scopes.shift(); } function tokenBase(stream, state) { var ch = stream.peek(); // Comment if (stream.match("/*")) { state.tokenizer = comment(stream.indentation(), true); return state.tokenizer(stream, state); } if (stream.match("//")) { state.tokenizer = comment(stream.indentation(), false); return state.tokenizer(stream, state); } // Interpolation if (stream.match("#{")) { state.tokenizer = buildInterpolationTokenizer(tokenBase); return "operator"; } // Strings if (ch === '"' || ch === "'") { stream.next(); state.tokenizer = buildStringTokenizer(ch); return "string"; } if(!state.cursorHalf){// state.cursorHalf === 0 // first half i.e. before : for key-value pairs // including selectors if (ch === ".") { stream.next(); if (stream.match(/^[\w-]+/)) { indent(state); return "atom"; } else if (stream.peek() === "#") { indent(state); return "atom"; } } if (ch === "#") { stream.next(); // ID selectors if (stream.match(/^[\w-]+/)) { indent(state); return "atom"; } if (stream.peek() === "#") { indent(state); return "atom"; } } // Variables if (ch === "$") { stream.next(); stream.eatWhile(/[\w-]/); return "variable-2"; } // Numbers if (stream.match(/^-?[0-9\.]+/)) return "number"; // Units if (stream.match(/^(px|em|in)\b/)) return "unit"; if (stream.match(keywordsRegexp)) return "keyword"; if (stream.match(/^url/) && stream.peek() === "(") { state.tokenizer = urlTokens; return "atom"; } if (ch === "=") { // Match shortcut mixin definition if (stream.match(/^=[\w-]+/)) { indent(state); return "meta"; } } if (ch === "+") { // Match shortcut mixin definition if (stream.match(/^\+[\w-]+/)){ return "variable-3"; } } if(ch === "@"){ if(stream.match(/@extend/)){ if(!stream.match(/\s*[\w]/)) dedent(state); } } // Indent Directives if (stream.match(/^@(else if|if|media|else|for|each|while|mixin|function)/)) { indent(state); return "meta"; } // Other Directives if (ch === "@") { stream.next(); stream.eatWhile(/[\w-]/); return "meta"; } if (stream.eatWhile(/[\w-]/)){ if(stream.match(/ *: *[\w-\+\$#!\("']/,false)){ return "property"; } else if(stream.match(/ *:/,false)){ indent(state); state.cursorHalf = 1; return "atom"; } else if(stream.match(/ *,/,false)){ return "atom"; } else{ indent(state); return "atom"; } } if(ch === ":"){ if (stream.match(pseudoElementsRegexp)){ // could be a pseudo-element return "keyword"; } stream.next(); state.cursorHalf=1; return "operator"; } } // cursorHalf===0 ends here else{ if (ch === "#") { stream.next(); // Hex numbers if (stream.match(/[0-9a-fA-F]{6}|[0-9a-fA-F]{3}/)){ if(!stream.peek()){ state.cursorHalf = 0; } return "number"; } } // Numbers if (stream.match(/^-?[0-9\.]+/)){ if(!stream.peek()){ state.cursorHalf = 0; } return "number"; } // Units if (stream.match(/^(px|em|in)\b/)){ if(!stream.peek()){ state.cursorHalf = 0; } return "unit"; } if (stream.match(keywordsRegexp)){ if(!stream.peek()){ state.cursorHalf = 0; } return "keyword"; } if (stream.match(/^url/) && stream.peek() === "(") { state.tokenizer = urlTokens; if(!stream.peek()){ state.cursorHalf = 0; } return "atom"; } // Variables if (ch === "$") { stream.next(); stream.eatWhile(/[\w-]/); if(!stream.peek()){ state.cursorHalf = 0; } return "variable-3"; } // bang character for !important, !default, etc. if (ch === "!") { stream.next(); if(!stream.peek()){ state.cursorHalf = 0; } return stream.match(/^[\w]+/) ? "keyword": "operator"; } if (stream.match(opRegexp)){ if(!stream.peek()){ state.cursorHalf = 0; } return "operator"; } // attributes if (stream.eatWhile(/[\w-]/)) { if(!stream.peek()){ state.cursorHalf = 0; } return "attribute"; } //stream.eatSpace(); if(!stream.peek()){ state.cursorHalf = 0; return null; } } // else ends here if (stream.match(opRegexp)) return "operator"; // If we haven't returned by now, we move 1 character // and return an error stream.next(); return null; } function tokenLexer(stream, state) { if (stream.sol()) state.indentCount = 0; var style = state.tokenizer(stream, state); var current = stream.current(); if (current === "@return" || current === "}"){ dedent(state); } if (style !== null) { var startOfToken = stream.pos - current.length; var withCurrentIndent = startOfToken + (config.indentUnit * state.indentCount); var newScopes = []; for (var i = 0; i < state.scopes.length; i++) { var scope = state.scopes[i]; if (scope.offset <= withCurrentIndent) newScopes.push(scope); } state.scopes = newScopes; } return style; } return { startState: function() { return { tokenizer: tokenBase, scopes: [{offset: 0, type: "sass"}], indentCount: 0, cursorHalf: 0, // cursor half tells us if cursor lies after (1) // or before (0) colon (well... more or less) definedVars: [], definedMixins: [] }; }, token: function(stream, state) { var style = tokenLexer(stream, state); state.lastToken = { style: style, content: stream.current() }; return style; }, indent: function(state) { return state.scopes[0].offset; } }; }); CodeMirror.defineMIME("text/x-sass", "sass"); }); plugins/file-manager-advanced/application/library/codemirror/mode/scheme/index.html000064400000004772147176754550024657 0ustar00 CodeMirror: Scheme mode

Scheme mode

MIME types defined: text/x-scheme.

plugins/file-manager-advanced/application/library/codemirror/mode/scheme/scheme.js000064400000032177147176754550024464 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE /** * Author: Koh Zi Han, based on implementation by Koh Zi Chun */ (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("scheme", function () { var BUILTIN = "builtin", COMMENT = "comment", STRING = "string", ATOM = "atom", NUMBER = "number", BRACKET = "bracket"; var INDENT_WORD_SKIP = 2; function makeKeywords(str) { var obj = {}, words = str.split(" "); for (var i = 0; i < words.length; ++i) obj[words[i]] = true; return obj; } var keywords = makeKeywords("λ case-lambda call/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt #f floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string=? string>? string? substring symbol->string symbol? #t tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?"); var indentKeys = makeKeywords("define let letrec let* lambda"); function stateStack(indent, type, prev) { // represents a state stack object this.indent = indent; this.type = type; this.prev = prev; } function pushStack(state, indent, type) { state.indentStack = new stateStack(indent, type, state.indentStack); } function popStack(state) { state.indentStack = state.indentStack.prev; } var binaryMatcher = new RegExp(/^(?:[-+]i|[-+][01]+#*(?:\/[01]+#*)?i|[-+]?[01]+#*(?:\/[01]+#*)?@[-+]?[01]+#*(?:\/[01]+#*)?|[-+]?[01]+#*(?:\/[01]+#*)?[-+](?:[01]+#*(?:\/[01]+#*)?)?i|[-+]?[01]+#*(?:\/[01]+#*)?)(?=[()\s;"]|$)/i); var octalMatcher = new RegExp(/^(?:[-+]i|[-+][0-7]+#*(?:\/[0-7]+#*)?i|[-+]?[0-7]+#*(?:\/[0-7]+#*)?@[-+]?[0-7]+#*(?:\/[0-7]+#*)?|[-+]?[0-7]+#*(?:\/[0-7]+#*)?[-+](?:[0-7]+#*(?:\/[0-7]+#*)?)?i|[-+]?[0-7]+#*(?:\/[0-7]+#*)?)(?=[()\s;"]|$)/i); var hexMatcher = new RegExp(/^(?:[-+]i|[-+][\da-f]+#*(?:\/[\da-f]+#*)?i|[-+]?[\da-f]+#*(?:\/[\da-f]+#*)?@[-+]?[\da-f]+#*(?:\/[\da-f]+#*)?|[-+]?[\da-f]+#*(?:\/[\da-f]+#*)?[-+](?:[\da-f]+#*(?:\/[\da-f]+#*)?)?i|[-+]?[\da-f]+#*(?:\/[\da-f]+#*)?)(?=[()\s;"]|$)/i); var decimalMatcher = new RegExp(/^(?:[-+]i|[-+](?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)i|[-+]?(?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)@[-+]?(?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)|[-+]?(?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)[-+](?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)?i|(?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*))(?=[()\s;"]|$)/i); function isBinaryNumber (stream) { return stream.match(binaryMatcher); } function isOctalNumber (stream) { return stream.match(octalMatcher); } function isDecimalNumber (stream, backup) { if (backup === true) { stream.backUp(1); } return stream.match(decimalMatcher); } function isHexNumber (stream) { return stream.match(hexMatcher); } return { startState: function () { return { indentStack: null, indentation: 0, mode: false, sExprComment: false }; }, token: function (stream, state) { if (state.indentStack == null && stream.sol()) { // update indentation, but only if indentStack is empty state.indentation = stream.indentation(); } // skip spaces if (stream.eatSpace()) { return null; } var returnType = null; switch(state.mode){ case "string": // multi-line string parsing mode var next, escaped = false; while ((next = stream.next()) != null) { if (next == "\"" && !escaped) { state.mode = false; break; } escaped = !escaped && next == "\\"; } returnType = STRING; // continue on in scheme-string mode break; case "comment": // comment parsing mode var next, maybeEnd = false; while ((next = stream.next()) != null) { if (next == "#" && maybeEnd) { state.mode = false; break; } maybeEnd = (next == "|"); } returnType = COMMENT; break; case "s-expr-comment": // s-expr commenting mode state.mode = false; if(stream.peek() == "(" || stream.peek() == "["){ // actually start scheme s-expr commenting mode state.sExprComment = 0; }else{ // if not we just comment the entire of the next token stream.eatWhile(/[^/s]/); // eat non spaces returnType = COMMENT; break; } default: // default parsing mode var ch = stream.next(); if (ch == "\"") { state.mode = "string"; returnType = STRING; } else if (ch == "'") { returnType = ATOM; } else if (ch == '#') { if (stream.eat("|")) { // Multi-line comment state.mode = "comment"; // toggle to comment mode returnType = COMMENT; } else if (stream.eat(/[tf]/i)) { // #t/#f (atom) returnType = ATOM; } else if (stream.eat(';')) { // S-Expr comment state.mode = "s-expr-comment"; returnType = COMMENT; } else { var numTest = null, hasExactness = false, hasRadix = true; if (stream.eat(/[ei]/i)) { hasExactness = true; } else { stream.backUp(1); // must be radix specifier } if (stream.match(/^#b/i)) { numTest = isBinaryNumber; } else if (stream.match(/^#o/i)) { numTest = isOctalNumber; } else if (stream.match(/^#x/i)) { numTest = isHexNumber; } else if (stream.match(/^#d/i)) { numTest = isDecimalNumber; } else if (stream.match(/^[-+0-9.]/, false)) { hasRadix = false; numTest = isDecimalNumber; // re-consume the intial # if all matches failed } else if (!hasExactness) { stream.eat('#'); } if (numTest != null) { if (hasRadix && !hasExactness) { // consume optional exactness after radix stream.match(/^#[ei]/i); } if (numTest(stream)) returnType = NUMBER; } } } else if (/^[-+0-9.]/.test(ch) && isDecimalNumber(stream, true)) { // match non-prefixed number, must be decimal returnType = NUMBER; } else if (ch == ";") { // comment stream.skipToEnd(); // rest of the line is a comment returnType = COMMENT; } else if (ch == "(" || ch == "[") { var keyWord = ''; var indentTemp = stream.column(), letter; /** Either (indent-word .. (non-indent-word .. (;something else, bracket, etc. */ while ((letter = stream.eat(/[^\s\(\[\;\)\]]/)) != null) { keyWord += letter; } if (keyWord.length > 0 && indentKeys.propertyIsEnumerable(keyWord)) { // indent-word pushStack(state, indentTemp + INDENT_WORD_SKIP, ch); } else { // non-indent word // we continue eating the spaces stream.eatSpace(); if (stream.eol() || stream.peek() == ";") { // nothing significant after // we restart indentation 1 space after pushStack(state, indentTemp + 1, ch); } else { pushStack(state, indentTemp + stream.current().length, ch); // else we match } } stream.backUp(stream.current().length - 1); // undo all the eating if(typeof state.sExprComment == "number") state.sExprComment++; returnType = BRACKET; } else if (ch == ")" || ch == "]") { returnType = BRACKET; if (state.indentStack != null && state.indentStack.type == (ch == ")" ? "(" : "[")) { popStack(state); if(typeof state.sExprComment == "number"){ if(--state.sExprComment == 0){ returnType = COMMENT; // final closing bracket state.sExprComment = false; // turn off s-expr commenting mode } } } } else { stream.eatWhile(/[\w\$_\-!$%&*+\.\/:<=>?@\^~]/); if (keywords && keywords.propertyIsEnumerable(stream.current())) { returnType = BUILTIN; } else returnType = "variable"; } } return (typeof state.sExprComment == "number") ? COMMENT : returnType; }, indent: function (state) { if (state.indentStack == null) return state.indentation; return state.indentStack.indent; }, closeBrackets: {pairs: "()[]{}\"\""}, lineComment: ";;" }; }); CodeMirror.defineMIME("text/x-scheme", "scheme"); }); plugins/file-manager-advanced/application/library/codemirror/mode/shell/index.html000064400000003321147176754550024507 0ustar00 CodeMirror: Shell mode

Shell mode

MIME types defined: text/x-sh.

plugins/file-manager-advanced/application/library/codemirror/mode/shell/shell.js000064400000007320147176754550024162 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode('shell', function() { var words = {}; function define(style, string) { var split = string.split(' '); for(var i = 0; i < split.length; i++) { words[split[i]] = style; } }; // Atoms define('atom', 'true false'); // Keywords define('keyword', 'if then do else elif while until for in esac fi fin ' + 'fil done exit set unset export function'); // Commands define('builtin', 'ab awk bash beep cat cc cd chown chmod chroot clear cp ' + 'curl cut diff echo find gawk gcc get git grep kill killall ln ls make ' + 'mkdir openssl mv nc node npm ping ps restart rm rmdir sed service sh ' + 'shopt shred source sort sleep ssh start stop su sudo tee telnet top ' + 'touch vi vim wall wc wget who write yes zsh'); function tokenBase(stream, state) { if (stream.eatSpace()) return null; var sol = stream.sol(); var ch = stream.next(); if (ch === '\\') { stream.next(); return null; } if (ch === '\'' || ch === '"' || ch === '`') { state.tokens.unshift(tokenString(ch)); return tokenize(stream, state); } if (ch === '#') { if (sol && stream.eat('!')) { stream.skipToEnd(); return 'meta'; // 'comment'? } stream.skipToEnd(); return 'comment'; } if (ch === '$') { state.tokens.unshift(tokenDollar); return tokenize(stream, state); } if (ch === '+' || ch === '=') { return 'operator'; } if (ch === '-') { stream.eat('-'); stream.eatWhile(/\w/); return 'attribute'; } if (/\d/.test(ch)) { stream.eatWhile(/\d/); if(stream.eol() || !/\w/.test(stream.peek())) { return 'number'; } } stream.eatWhile(/[\w-]/); var cur = stream.current(); if (stream.peek() === '=' && /\w+/.test(cur)) return 'def'; return words.hasOwnProperty(cur) ? words[cur] : null; } function tokenString(quote) { return function(stream, state) { var next, end = false, escaped = false; while ((next = stream.next()) != null) { if (next === quote && !escaped) { end = true; break; } if (next === '$' && !escaped && quote !== '\'') { escaped = true; stream.backUp(1); state.tokens.unshift(tokenDollar); break; } escaped = !escaped && next === '\\'; } if (end || !escaped) { state.tokens.shift(); } return (quote === '`' || quote === ')' ? 'quote' : 'string'); }; }; var tokenDollar = function(stream, state) { if (state.tokens.length > 1) stream.eat('$'); var ch = stream.next(), hungry = /\w/; if (ch === '{') hungry = /[^}]/; if (ch === '(') { state.tokens[0] = tokenString(')'); return tokenize(stream, state); } if (!/\d/.test(ch)) { stream.eatWhile(hungry); stream.eat('}'); } state.tokens.shift(); return 'def'; }; function tokenize(stream, state) { return (state.tokens[0] || tokenBase) (stream, state); }; return { startState: function() {return {tokens:[]};}, token: function(stream, state) { return tokenize(stream, state); }, lineComment: '#', fold: "brace" }; }); CodeMirror.defineMIME('text/x-sh', 'shell'); }); plugins/file-manager-advanced/application/library/codemirror/mode/shell/test.js000064400000003354147176754550024035 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function() { var mode = CodeMirror.getMode({}, "shell"); function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } MT("var", "text [def $var] text"); MT("varBraces", "text[def ${var}]text"); MT("varVar", "text [def $a$b] text"); MT("varBracesVarBraces", "text[def ${a}${b}]text"); MT("singleQuotedVar", "[string 'text $var text']"); MT("singleQuotedVarBraces", "[string 'text ${var} text']"); MT("doubleQuotedVar", '[string "text ][def $var][string text"]'); MT("doubleQuotedVarBraces", '[string "text][def ${var}][string text"]'); MT("doubleQuotedVarPunct", '[string "text ][def $@][string text"]'); MT("doubleQuotedVarVar", '[string "][def $a$b][string "]'); MT("doubleQuotedVarBracesVarBraces", '[string "][def ${a}${b}][string "]'); MT("notAString", "text\\'text"); MT("escapes", "outside\\'\\\"\\`\\\\[string \"inside\\`\\'\\\"\\\\`\\$notAVar\"]outside\\$\\(notASubShell\\)"); MT("subshell", "[builtin echo] [quote $(whoami)] s log, stardate [quote `date`]."); MT("doubleQuotedSubshell", "[builtin echo] [string \"][quote $(whoami)][string 's log, stardate `date`.\"]"); MT("hashbang", "[meta #!/bin/bash]"); MT("comment", "text [comment # Blurb]"); MT("numbers", "[number 0] [number 1] [number 2]"); MT("keywords", "[keyword while] [atom true]; [keyword do]", " [builtin sleep] [number 3]", "[keyword done]"); MT("options", "[builtin ls] [attribute -l] [attribute --human-readable]"); MT("operator", "[def var][operator =]value"); })(); plugins/file-manager-advanced/application/library/codemirror/mode/sieve/index.html000064400000004437147176754550024524 0ustar00 CodeMirror: Sieve (RFC5228) mode

Sieve (RFC5228) mode

MIME types defined: application/sieve.

plugins/file-manager-advanced/application/library/codemirror/mode/sieve/sieve.js000064400000010275147176754550024175 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("sieve", function(config) { function words(str) { var obj = {}, words = str.split(" "); for (var i = 0; i < words.length; ++i) obj[words[i]] = true; return obj; } var keywords = words("if elsif else stop require"); var atoms = words("true false not"); var indentUnit = config.indentUnit; function tokenBase(stream, state) { var ch = stream.next(); if (ch == "/" && stream.eat("*")) { state.tokenize = tokenCComment; return tokenCComment(stream, state); } if (ch === '#') { stream.skipToEnd(); return "comment"; } if (ch == "\"") { state.tokenize = tokenString(ch); return state.tokenize(stream, state); } if (ch == "(") { state._indent.push("("); // add virtual angel wings so that editor behaves... // ...more sane incase of broken brackets state._indent.push("{"); return null; } if (ch === "{") { state._indent.push("{"); return null; } if (ch == ")") { state._indent.pop(); state._indent.pop(); } if (ch === "}") { state._indent.pop(); return null; } if (ch == ",") return null; if (ch == ";") return null; if (/[{}\(\),;]/.test(ch)) return null; // 1*DIGIT "K" / "M" / "G" if (/\d/.test(ch)) { stream.eatWhile(/[\d]/); stream.eat(/[KkMmGg]/); return "number"; } // ":" (ALPHA / "_") *(ALPHA / DIGIT / "_") if (ch == ":") { stream.eatWhile(/[a-zA-Z_]/); stream.eatWhile(/[a-zA-Z0-9_]/); return "operator"; } stream.eatWhile(/\w/); var cur = stream.current(); // "text:" *(SP / HTAB) (hash-comment / CRLF) // *(multiline-literal / multiline-dotstart) // "." CRLF if ((cur == "text") && stream.eat(":")) { state.tokenize = tokenMultiLineString; return "string"; } if (keywords.propertyIsEnumerable(cur)) return "keyword"; if (atoms.propertyIsEnumerable(cur)) return "atom"; return null; } function tokenMultiLineString(stream, state) { state._multiLineString = true; // the first line is special it may contain a comment if (!stream.sol()) { stream.eatSpace(); if (stream.peek() == "#") { stream.skipToEnd(); return "comment"; } stream.skipToEnd(); return "string"; } if ((stream.next() == ".") && (stream.eol())) { state._multiLineString = false; state.tokenize = tokenBase; } return "string"; } function tokenCComment(stream, state) { var maybeEnd = false, ch; while ((ch = stream.next()) != null) { if (maybeEnd && ch == "/") { state.tokenize = tokenBase; break; } maybeEnd = (ch == "*"); } return "comment"; } function tokenString(quote) { return function(stream, state) { var escaped = false, ch; while ((ch = stream.next()) != null) { if (ch == quote && !escaped) break; escaped = !escaped && ch == "\\"; } if (!escaped) state.tokenize = tokenBase; return "string"; }; } return { startState: function(base) { return {tokenize: tokenBase, baseIndent: base || 0, _indent: []}; }, token: function(stream, state) { if (stream.eatSpace()) return null; return (state.tokenize || tokenBase)(stream, state);; }, indent: function(state, _textAfter) { var length = state._indent.length; if (_textAfter && (_textAfter[0] == "}")) length--; if (length <0) length = 0; return length * indentUnit; }, electricChars: "}" }; }); CodeMirror.defineMIME("application/sieve", "sieve"); }); plugins/file-manager-advanced/application/library/codemirror/mode/slim/index.html000064400000005550147176754550024352 0ustar00 CodeMirror: SLIM mode

SLIM mode

MIME types defined: application/x-slim.

Parsing/Highlighting Tests: normal, verbose.

plugins/file-manager-advanced/application/library/codemirror/mode/slim/slim.js000064400000043152147176754550023657 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE // Slim Highlighting for CodeMirror copyright (c) HicknHack Software Gmbh (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed"), require("../ruby/ruby")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror", "../htmlmixed/htmlmixed", "../ruby/ruby"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("slim", function(config) { var htmlMode = CodeMirror.getMode(config, {name: "htmlmixed"}); var rubyMode = CodeMirror.getMode(config, "ruby"); var modes = { html: htmlMode, ruby: rubyMode }; var embedded = { ruby: "ruby", javascript: "javascript", css: "text/css", sass: "text/x-sass", scss: "text/x-scss", less: "text/x-less", styl: "text/x-styl", // no highlighting so far coffee: "coffeescript", asciidoc: "text/x-asciidoc", markdown: "text/x-markdown", textile: "text/x-textile", // no highlighting so far creole: "text/x-creole", // no highlighting so far wiki: "text/x-wiki", // no highlighting so far mediawiki: "text/x-mediawiki", // no highlighting so far rdoc: "text/x-rdoc", // no highlighting so far builder: "text/x-builder", // no highlighting so far nokogiri: "text/x-nokogiri", // no highlighting so far erb: "application/x-erb" }; var embeddedRegexp = function(map){ var arr = []; for(var key in map) arr.push(key); return new RegExp("^("+arr.join('|')+"):"); }(embedded); var styleMap = { "commentLine": "comment", "slimSwitch": "operator special", "slimTag": "tag", "slimId": "attribute def", "slimClass": "attribute qualifier", "slimAttribute": "attribute", "slimSubmode": "keyword special", "closeAttributeTag": null, "slimDoctype": null, "lineContinuation": null }; var closing = { "{": "}", "[": "]", "(": ")" }; var nameStartChar = "_a-zA-Z\xC0-\xD6\xD8-\xF6\xF8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD"; var nameChar = nameStartChar + "\\-0-9\xB7\u0300-\u036F\u203F-\u2040"; var nameRegexp = new RegExp("^[:"+nameStartChar+"](?::["+nameChar+"]|["+nameChar+"]*)"); var attributeNameRegexp = new RegExp("^[:"+nameStartChar+"][:\\."+nameChar+"]*(?=\\s*=)"); var wrappedAttributeNameRegexp = new RegExp("^[:"+nameStartChar+"][:\\."+nameChar+"]*"); var classNameRegexp = /^\.-?[_a-zA-Z]+[\w\-]*/; var classIdRegexp = /^#[_a-zA-Z]+[\w\-]*/; function backup(pos, tokenize, style) { var restore = function(stream, state) { state.tokenize = tokenize; if (stream.pos < pos) { stream.pos = pos; return style; } return state.tokenize(stream, state); }; return function(stream, state) { state.tokenize = restore; return tokenize(stream, state); }; } function maybeBackup(stream, state, pat, offset, style) { var cur = stream.current(); var idx = cur.search(pat); if (idx > -1) { state.tokenize = backup(stream.pos, state.tokenize, style); stream.backUp(cur.length - idx - offset); } return style; } function continueLine(state, column) { state.stack = { parent: state.stack, style: "continuation", indented: column, tokenize: state.line }; state.line = state.tokenize; } function finishContinue(state) { if (state.line == state.tokenize) { state.line = state.stack.tokenize; state.stack = state.stack.parent; } } function lineContinuable(column, tokenize) { return function(stream, state) { finishContinue(state); if (stream.match(/^\\$/)) { continueLine(state, column); return "lineContinuation"; } var style = tokenize(stream, state); if (stream.eol() && stream.current().match(/(?:^|[^\\])(?:\\\\)*\\$/)) { stream.backUp(1); } return style; }; } function commaContinuable(column, tokenize) { return function(stream, state) { finishContinue(state); var style = tokenize(stream, state); if (stream.eol() && stream.current().match(/,$/)) { continueLine(state, column); } return style; }; } function rubyInQuote(endQuote, tokenize) { // TODO: add multi line support return function(stream, state) { var ch = stream.peek(); if (ch == endQuote && state.rubyState.tokenize.length == 1) { // step out of ruby context as it seems to complete processing all the braces stream.next(); state.tokenize = tokenize; return "closeAttributeTag"; } else { return ruby(stream, state); } }; } function startRubySplat(tokenize) { var rubyState; var runSplat = function(stream, state) { if (state.rubyState.tokenize.length == 1 && !state.rubyState.context.prev) { stream.backUp(1); if (stream.eatSpace()) { state.rubyState = rubyState; state.tokenize = tokenize; return tokenize(stream, state); } stream.next(); } return ruby(stream, state); }; return function(stream, state) { rubyState = state.rubyState; state.rubyState = CodeMirror.startState(rubyMode); state.tokenize = runSplat; return ruby(stream, state); }; } function ruby(stream, state) { return rubyMode.token(stream, state.rubyState); } function htmlLine(stream, state) { if (stream.match(/^\\$/)) { return "lineContinuation"; } return html(stream, state); } function html(stream, state) { if (stream.match(/^#\{/)) { state.tokenize = rubyInQuote("}", state.tokenize); return null; } return maybeBackup(stream, state, /[^\\]#\{/, 1, htmlMode.token(stream, state.htmlState)); } function startHtmlLine(lastTokenize) { return function(stream, state) { var style = htmlLine(stream, state); if (stream.eol()) state.tokenize = lastTokenize; return style; }; } function startHtmlMode(stream, state, offset) { state.stack = { parent: state.stack, style: "html", indented: stream.column() + offset, // pipe + space tokenize: state.line }; state.line = state.tokenize = html; return null; } function comment(stream, state) { stream.skipToEnd(); return state.stack.style; } function commentMode(stream, state) { state.stack = { parent: state.stack, style: "comment", indented: state.indented + 1, tokenize: state.line }; state.line = comment; return comment(stream, state); } function attributeWrapper(stream, state) { if (stream.eat(state.stack.endQuote)) { state.line = state.stack.line; state.tokenize = state.stack.tokenize; state.stack = state.stack.parent; return null; } if (stream.match(wrappedAttributeNameRegexp)) { state.tokenize = attributeWrapperAssign; return "slimAttribute"; } stream.next(); return null; } function attributeWrapperAssign(stream, state) { if (stream.match(/^==?/)) { state.tokenize = attributeWrapperValue; return null; } return attributeWrapper(stream, state); } function attributeWrapperValue(stream, state) { var ch = stream.peek(); if (ch == '"' || ch == "\'") { state.tokenize = readQuoted(ch, "string", true, false, attributeWrapper); stream.next(); return state.tokenize(stream, state); } if (ch == '[') { return startRubySplat(attributeWrapper)(stream, state); } if (stream.match(/^(true|false|nil)\b/)) { state.tokenize = attributeWrapper; return "keyword"; } return startRubySplat(attributeWrapper)(stream, state); } function startAttributeWrapperMode(state, endQuote, tokenize) { state.stack = { parent: state.stack, style: "wrapper", indented: state.indented + 1, tokenize: tokenize, line: state.line, endQuote: endQuote }; state.line = state.tokenize = attributeWrapper; return null; } function sub(stream, state) { if (stream.match(/^#\{/)) { state.tokenize = rubyInQuote("}", state.tokenize); return null; } var subStream = new CodeMirror.StringStream(stream.string.slice(state.stack.indented), stream.tabSize); subStream.pos = stream.pos - state.stack.indented; subStream.start = stream.start - state.stack.indented; subStream.lastColumnPos = stream.lastColumnPos - state.stack.indented; subStream.lastColumnValue = stream.lastColumnValue - state.stack.indented; var style = state.subMode.token(subStream, state.subState); stream.pos = subStream.pos + state.stack.indented; return style; } function firstSub(stream, state) { state.stack.indented = stream.column(); state.line = state.tokenize = sub; return state.tokenize(stream, state); } function createMode(mode) { var query = embedded[mode]; var spec = CodeMirror.mimeModes[query]; if (spec) { return CodeMirror.getMode(config, spec); } var factory = CodeMirror.modes[query]; if (factory) { return factory(config, {name: query}); } return CodeMirror.getMode(config, "null"); } function getMode(mode) { if (!modes.hasOwnProperty(mode)) { return modes[mode] = createMode(mode); } return modes[mode]; } function startSubMode(mode, state) { var subMode = getMode(mode); var subState = CodeMirror.startState(subMode); state.subMode = subMode; state.subState = subState; state.stack = { parent: state.stack, style: "sub", indented: state.indented + 1, tokenize: state.line }; state.line = state.tokenize = firstSub; return "slimSubmode"; } function doctypeLine(stream, _state) { stream.skipToEnd(); return "slimDoctype"; } function startLine(stream, state) { var ch = stream.peek(); if (ch == '<') { return (state.tokenize = startHtmlLine(state.tokenize))(stream, state); } if (stream.match(/^[|']/)) { return startHtmlMode(stream, state, 1); } if (stream.match(/^\/(!|\[\w+])?/)) { return commentMode(stream, state); } if (stream.match(/^(-|==?[<>]?)/)) { state.tokenize = lineContinuable(stream.column(), commaContinuable(stream.column(), ruby)); return "slimSwitch"; } if (stream.match(/^doctype\b/)) { state.tokenize = doctypeLine; return "keyword"; } var m = stream.match(embeddedRegexp); if (m) { return startSubMode(m[1], state); } return slimTag(stream, state); } function slim(stream, state) { if (state.startOfLine) { return startLine(stream, state); } return slimTag(stream, state); } function slimTag(stream, state) { if (stream.eat('*')) { state.tokenize = startRubySplat(slimTagExtras); return null; } if (stream.match(nameRegexp)) { state.tokenize = slimTagExtras; return "slimTag"; } return slimClass(stream, state); } function slimTagExtras(stream, state) { if (stream.match(/^(<>?|> state.indented && state.last != "slimSubmode") { state.line = state.tokenize = state.stack.tokenize; state.stack = state.stack.parent; state.subMode = null; state.subState = null; } } if (stream.eatSpace()) return null; var style = state.tokenize(stream, state); state.startOfLine = false; if (style) state.last = style; return styleMap.hasOwnProperty(style) ? styleMap[style] : style; }, blankLine: function(state) { if (state.subMode && state.subMode.blankLine) { return state.subMode.blankLine(state.subState); } }, innerMode: function(state) { if (state.subMode) return {state: state.subState, mode: state.subMode}; return {state: state, mode: mode}; } //indent: function(state) { // return state.indented; //} }; return mode; }, "htmlmixed", "ruby"); CodeMirror.defineMIME("text/x-slim", "slim"); CodeMirror.defineMIME("application/x-slim", "slim"); }); plugins/file-manager-advanced/application/library/codemirror/mode/slim/test.js000064400000006072147176754550023672 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE // Slim Highlighting for CodeMirror copyright (c) HicknHack Software Gmbh (function() { var mode = CodeMirror.getMode({tabSize: 4, indentUnit: 2}, "slim"); function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } // Requires at least one media query MT("elementName", "[tag h1] Hey There"); MT("oneElementPerLine", "[tag h1] Hey There .h2"); MT("idShortcut", "[attribute&def #test] Hey There"); MT("tagWithIdShortcuts", "[tag h1][attribute&def #test] Hey There"); MT("classShortcut", "[attribute&qualifier .hello] Hey There"); MT("tagWithIdAndClassShortcuts", "[tag h1][attribute&def #test][attribute&qualifier .hello] Hey There"); MT("docType", "[keyword doctype] xml"); MT("comment", "[comment / Hello WORLD]"); MT("notComment", "[tag h1] This is not a / comment "); MT("attributes", "[tag a]([attribute title]=[string \"test\"]) [attribute href]=[string \"link\"]}"); MT("multiLineAttributes", "[tag a]([attribute title]=[string \"test\"]", " ) [attribute href]=[string \"link\"]}"); MT("htmlCode", "[tag&bracket <][tag h1][tag&bracket >]Title[tag&bracket ]"); MT("rubyBlock", "[operator&special =][variable-2 @item]"); MT("selectorRubyBlock", "[tag a][attribute&qualifier .test][operator&special =] [variable-2 @item]"); MT("nestedRubyBlock", "[tag a]", " [operator&special =][variable puts] [string \"test\"]"); MT("multilinePlaintext", "[tag p]", " | Hello,", " World"); MT("multilineRuby", "[tag p]", " [comment /# this is a comment]", " [comment and this is a comment too]", " | Date/Time", " [operator&special -] [variable now] [operator =] [tag DateTime][operator .][property now]", " [tag strong][operator&special =] [variable now]", " [operator&special -] [keyword if] [variable now] [operator >] [tag DateTime][operator .][property parse]([string \"December 31, 2006\"])", " [operator&special =][string \"Happy\"]", " [operator&special =][string \"Belated\"]", " [operator&special =][string \"Birthday\"]"); MT("multilineComment", "[comment /]", " [comment Multiline]", " [comment Comment]"); MT("hamlAfterRubyTag", "[attribute&qualifier .block]", " [tag strong][operator&special =] [variable now]", " [attribute&qualifier .test]", " [operator&special =][variable now]", " [attribute&qualifier .right]"); MT("stretchedRuby", "[operator&special =] [variable puts] [string \"Hello\"],", " [string \"World\"]"); MT("interpolationInHashAttribute", "[tag div]{[attribute id] = [string \"]#{[variable test]}[string _]#{[variable ting]}[string \"]} test"); MT("interpolationInHTMLAttribute", "[tag div]([attribute title]=[string \"]#{[variable test]}[string _]#{[variable ting]()}[string \"]) Test"); })(); plugins/file-manager-advanced/application/library/codemirror/mode/smalltalk/index.html000064400000003560147176754550025371 0ustar00 CodeMirror: Smalltalk mode

Smalltalk mode

Simple Smalltalk mode.

MIME types defined: text/x-stsrc.

plugins/file-manager-advanced/application/library/codemirror/mode/smalltalk/smalltalk.js000064400000010677147176754550025725 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode('smalltalk', function(config) { var specialChars = /[+\-\/\\*~<>=@%|&?!.,:;^]/; var keywords = /true|false|nil|self|super|thisContext/; var Context = function(tokenizer, parent) { this.next = tokenizer; this.parent = parent; }; var Token = function(name, context, eos) { this.name = name; this.context = context; this.eos = eos; }; var State = function() { this.context = new Context(next, null); this.expectVariable = true; this.indentation = 0; this.userIndentationDelta = 0; }; State.prototype.userIndent = function(indentation) { this.userIndentationDelta = indentation > 0 ? (indentation / config.indentUnit - this.indentation) : 0; }; var next = function(stream, context, state) { var token = new Token(null, context, false); var aChar = stream.next(); if (aChar === '"') { token = nextComment(stream, new Context(nextComment, context)); } else if (aChar === '\'') { token = nextString(stream, new Context(nextString, context)); } else if (aChar === '#') { if (stream.peek() === '\'') { stream.next(); token = nextSymbol(stream, new Context(nextSymbol, context)); } else { if (stream.eatWhile(/[^\s.{}\[\]()]/)) token.name = 'string-2'; else token.name = 'meta'; } } else if (aChar === '$') { if (stream.next() === '<') { stream.eatWhile(/[^\s>]/); stream.next(); } token.name = 'string-2'; } else if (aChar === '|' && state.expectVariable) { token.context = new Context(nextTemporaries, context); } else if (/[\[\]{}()]/.test(aChar)) { token.name = 'bracket'; token.eos = /[\[{(]/.test(aChar); if (aChar === '[') { state.indentation++; } else if (aChar === ']') { state.indentation = Math.max(0, state.indentation - 1); } } else if (specialChars.test(aChar)) { stream.eatWhile(specialChars); token.name = 'operator'; token.eos = aChar !== ';'; // ; cascaded message expression } else if (/\d/.test(aChar)) { stream.eatWhile(/[\w\d]/); token.name = 'number'; } else if (/[\w_]/.test(aChar)) { stream.eatWhile(/[\w\d_]/); token.name = state.expectVariable ? (keywords.test(stream.current()) ? 'keyword' : 'variable') : null; } else { token.eos = state.expectVariable; } return token; }; var nextComment = function(stream, context) { stream.eatWhile(/[^"]/); return new Token('comment', stream.eat('"') ? context.parent : context, true); }; var nextString = function(stream, context) { stream.eatWhile(/[^']/); return new Token('string', stream.eat('\'') ? context.parent : context, false); }; var nextSymbol = function(stream, context) { stream.eatWhile(/[^']/); return new Token('string-2', stream.eat('\'') ? context.parent : context, false); }; var nextTemporaries = function(stream, context) { var token = new Token(null, context, false); var aChar = stream.next(); if (aChar === '|') { token.context = context.parent; token.eos = true; } else { stream.eatWhile(/[^|]/); token.name = 'variable'; } return token; }; return { startState: function() { return new State; }, token: function(stream, state) { state.userIndent(stream.indentation()); if (stream.eatSpace()) { return null; } var token = state.context.next(stream, state.context, state); state.context = token.context; state.expectVariable = token.eos; return token.name; }, blankLine: function(state) { state.userIndent(0); }, indent: function(state, textAfter) { var i = state.context.next === next && textAfter && textAfter.charAt(0) === ']' ? -1 : state.userIndentationDelta; return (state.indentation + i) * config.indentUnit; }, electricChars: ']' }; }); CodeMirror.defineMIME('text/x-stsrc', {name: 'smalltalk'}); }); plugins/file-manager-advanced/application/library/codemirror/mode/smarty/index.html000064400000007605147176754550024730 0ustar00 CodeMirror: Smarty mode

Smarty mode

Mode for Smarty version 2 or 3, which allows for custom delimiter tags.

Several configuration parameters are supported:

  • leftDelimiter and rightDelimiter, which should be strings that determine where the Smarty syntax starts and ends.
  • version, which should be 2 or 3.
  • baseMode, which can be a mode spec like "text/html" to set a different background mode.

MIME types defined: text/x-smarty

Smarty 2, custom delimiters

Smarty 3

plugins/file-manager-advanced/application/library/codemirror/mode/smarty/smarty.js000064400000015254147176754550024607 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE /** * Smarty 2 and 3 mode. */ (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("smarty", function(config, parserConf) { var rightDelimiter = parserConf.rightDelimiter || "}"; var leftDelimiter = parserConf.leftDelimiter || "{"; var version = parserConf.version || 2; var baseMode = CodeMirror.getMode(config, parserConf.baseMode || "null"); var keyFunctions = ["debug", "extends", "function", "include", "literal"]; var regs = { operatorChars: /[+\-*&%=<>!?]/, validIdentifier: /[a-zA-Z0-9_]/, stringChar: /['"]/ }; var last; function cont(style, lastType) { last = lastType; return style; } function chain(stream, state, parser) { state.tokenize = parser; return parser(stream, state); } // Smarty 3 allows { and } surrounded by whitespace to NOT slip into Smarty mode function doesNotCount(stream, pos) { if (pos == null) pos = stream.pos; return version === 3 && leftDelimiter == "{" && (pos == stream.string.length || /\s/.test(stream.string.charAt(pos))); } function tokenTop(stream, state) { var string = stream.string; for (var scan = stream.pos;;) { var nextMatch = string.indexOf(leftDelimiter, scan); scan = nextMatch + leftDelimiter.length; if (nextMatch == -1 || !doesNotCount(stream, nextMatch + leftDelimiter.length)) break; } if (nextMatch == stream.pos) { stream.match(leftDelimiter); if (stream.eat("*")) { return chain(stream, state, tokenBlock("comment", "*" + rightDelimiter)); } else { state.depth++; state.tokenize = tokenSmarty; last = "startTag"; return "tag"; } } if (nextMatch > -1) stream.string = string.slice(0, nextMatch); var token = baseMode.token(stream, state.base); if (nextMatch > -1) stream.string = string; return token; } // parsing Smarty content function tokenSmarty(stream, state) { if (stream.match(rightDelimiter, true)) { if (version === 3) { state.depth--; if (state.depth <= 0) { state.tokenize = tokenTop; } } else { state.tokenize = tokenTop; } return cont("tag", null); } if (stream.match(leftDelimiter, true)) { state.depth++; return cont("tag", "startTag"); } var ch = stream.next(); if (ch == "$") { stream.eatWhile(regs.validIdentifier); return cont("variable-2", "variable"); } else if (ch == "|") { return cont("operator", "pipe"); } else if (ch == ".") { return cont("operator", "property"); } else if (regs.stringChar.test(ch)) { state.tokenize = tokenAttribute(ch); return cont("string", "string"); } else if (regs.operatorChars.test(ch)) { stream.eatWhile(regs.operatorChars); return cont("operator", "operator"); } else if (ch == "[" || ch == "]") { return cont("bracket", "bracket"); } else if (ch == "(" || ch == ")") { return cont("bracket", "operator"); } else if (/\d/.test(ch)) { stream.eatWhile(/\d/); return cont("number", "number"); } else { if (state.last == "variable") { if (ch == "@") { stream.eatWhile(regs.validIdentifier); return cont("property", "property"); } else if (ch == "|") { stream.eatWhile(regs.validIdentifier); return cont("qualifier", "modifier"); } } else if (state.last == "pipe") { stream.eatWhile(regs.validIdentifier); return cont("qualifier", "modifier"); } else if (state.last == "whitespace") { stream.eatWhile(regs.validIdentifier); return cont("attribute", "modifier"); } if (state.last == "property") { stream.eatWhile(regs.validIdentifier); return cont("property", null); } else if (/\s/.test(ch)) { last = "whitespace"; return null; } var str = ""; if (ch != "/") { str += ch; } var c = null; while (c = stream.eat(regs.validIdentifier)) { str += c; } for (var i=0, j=keyFunctions.length; i CodeMirror: Solr mode

Solr mode

MIME types defined: text/x-solr.

plugins/file-manager-advanced/application/library/codemirror/mode/solr/solr.js000064400000005166147176754550023710 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("solr", function() { "use strict"; var isStringChar = /[^\s\|\!\+\-\*\?\~\^\&\:\(\)\[\]\{\}\^\"\\]/; var isOperatorChar = /[\|\!\+\-\*\?\~\^\&]/; var isOperatorString = /^(OR|AND|NOT|TO)$/i; function isNumber(word) { return parseFloat(word, 10).toString() === word; } function tokenString(quote) { return function(stream, state) { var escaped = false, next; while ((next = stream.next()) != null) { if (next == quote && !escaped) break; escaped = !escaped && next == "\\"; } if (!escaped) state.tokenize = tokenBase; return "string"; }; } function tokenOperator(operator) { return function(stream, state) { var style = "operator"; if (operator == "+") style += " positive"; else if (operator == "-") style += " negative"; else if (operator == "|") stream.eat(/\|/); else if (operator == "&") stream.eat(/\&/); else if (operator == "^") style += " boost"; state.tokenize = tokenBase; return style; }; } function tokenWord(ch) { return function(stream, state) { var word = ch; while ((ch = stream.peek()) && ch.match(isStringChar) != null) { word += stream.next(); } state.tokenize = tokenBase; if (isOperatorString.test(word)) return "operator"; else if (isNumber(word)) return "number"; else if (stream.peek() == ":") return "field"; else return "string"; }; } function tokenBase(stream, state) { var ch = stream.next(); if (ch == '"') state.tokenize = tokenString(ch); else if (isOperatorChar.test(ch)) state.tokenize = tokenOperator(ch); else if (isStringChar.test(ch)) state.tokenize = tokenWord(ch); return (state.tokenize != tokenBase) ? state.tokenize(stream, state) : null; } return { startState: function() { return { tokenize: tokenBase }; }, token: function(stream, state) { if (stream.eatSpace()) return null; return state.tokenize(stream, state); } }; }); CodeMirror.defineMIME("text/x-solr", "solr"); }); plugins/file-manager-advanced/application/library/codemirror/mode/soy/index.html000064400000003623147176754550024217 0ustar00 CodeMirror: Soy (Closure Template) mode

Soy (Closure Template) mode

A mode for Closure Templates (Soy).

MIME type defined: text/x-soy.

plugins/file-manager-advanced/application/library/codemirror/mode/soy/soy.js000064400000016715147176754550023400 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror", "../htmlmixed/htmlmixed"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; var indentingTags = ["template", "literal", "msg", "fallbackmsg", "let", "if", "elseif", "else", "switch", "case", "default", "foreach", "ifempty", "for", "call", "param", "deltemplate", "delcall", "log"]; CodeMirror.defineMode("soy", function(config) { var textMode = CodeMirror.getMode(config, "text/plain"); var modes = { html: CodeMirror.getMode(config, {name: "text/html", multilineTagIndentFactor: 2, multilineTagIndentPastTag: false}), attributes: textMode, text: textMode, uri: textMode, css: CodeMirror.getMode(config, "text/css"), js: CodeMirror.getMode(config, {name: "text/javascript", statementIndent: 2 * config.indentUnit}) }; function last(array) { return array[array.length - 1]; } function tokenUntil(stream, state, untilRegExp) { var oldString = stream.string; var match = untilRegExp.exec(oldString.substr(stream.pos)); if (match) { // We don't use backUp because it backs up just the position, not the state. // This uses an undocumented API. stream.string = oldString.substr(0, stream.pos + match.index); } var result = stream.hideFirstChars(state.indent, function() { return state.localMode.token(stream, state.localState); }); stream.string = oldString; return result; } return { startState: function() { return { kind: [], kindTag: [], soyState: [], indent: 0, localMode: modes.html, localState: CodeMirror.startState(modes.html) }; }, copyState: function(state) { return { tag: state.tag, // Last seen Soy tag. kind: state.kind.concat([]), // Values of kind="" attributes. kindTag: state.kindTag.concat([]), // Opened tags with kind="" attributes. soyState: state.soyState.concat([]), indent: state.indent, // Indentation of the following line. localMode: state.localMode, localState: CodeMirror.copyState(state.localMode, state.localState) }; }, token: function(stream, state) { var match; switch (last(state.soyState)) { case "comment": if (stream.match(/^.*?\*\//)) { state.soyState.pop(); } else { stream.skipToEnd(); } return "comment"; case "variable": if (stream.match(/^}/)) { state.indent -= 2 * config.indentUnit; state.soyState.pop(); return "variable-2"; } stream.next(); return null; case "tag": if (stream.match(/^\/?}/)) { if (state.tag == "/template" || state.tag == "/deltemplate") state.indent = 0; else state.indent -= (stream.current() == "/}" || indentingTags.indexOf(state.tag) == -1 ? 2 : 1) * config.indentUnit; state.soyState.pop(); return "keyword"; } else if (stream.match(/^([\w?]+)(?==)/)) { if (stream.current() == "kind" && (match = stream.match(/^="([^"]+)/, false))) { var kind = match[1]; state.kind.push(kind); state.kindTag.push(state.tag); state.localMode = modes[kind] || modes.html; state.localState = CodeMirror.startState(state.localMode); } return "attribute"; } else if (stream.match(/^"/)) { state.soyState.push("string"); return "string"; } stream.next(); return null; case "literal": if (stream.match(/^(?=\{\/literal})/)) { state.indent -= config.indentUnit; state.soyState.pop(); return this.token(stream, state); } return tokenUntil(stream, state, /\{\/literal}/); case "string": var match = stream.match(/^.*?("|\\[\s\S])/); if (!match) { stream.skipToEnd(); } else if (match[1] == "\"") { state.soyState.pop(); } return "string"; } if (stream.match(/^\/\*/)) { state.soyState.push("comment"); return "comment"; } else if (stream.match(stream.sol() ? /^\s*\/\/.*/ : /^\s+\/\/.*/)) { return "comment"; } else if (stream.match(/^\{\$[\w?]*/)) { state.indent += 2 * config.indentUnit; state.soyState.push("variable"); return "variable-2"; } else if (stream.match(/^\{literal}/)) { state.indent += config.indentUnit; state.soyState.push("literal"); return "keyword"; } else if (match = stream.match(/^\{([\/@\\]?[\w?]*)/)) { if (match[1] != "/switch") state.indent += (/^(\/|(else|elseif|case|default)$)/.test(match[1]) && state.tag != "switch" ? 1 : 2) * config.indentUnit; state.tag = match[1]; if (state.tag == "/" + last(state.kindTag)) { // We found the tag that opened the current kind="". state.kind.pop(); state.kindTag.pop(); state.localMode = modes[last(state.kind)] || modes.html; state.localState = CodeMirror.startState(state.localMode); } state.soyState.push("tag"); return "keyword"; } return tokenUntil(stream, state, /\{|\s+\/\/|\/\*/); }, indent: function(state, textAfter) { var indent = state.indent, top = last(state.soyState); if (top == "comment") return CodeMirror.Pass; if (top == "literal") { if (/^\{\/literal}/.test(textAfter)) indent -= config.indentUnit; } else { if (/^\s*\{\/(template|deltemplate)\b/.test(textAfter)) return 0; if (/^\{(\/|(fallbackmsg|elseif|else|ifempty)\b)/.test(textAfter)) indent -= config.indentUnit; if (state.tag != "switch" && /^\{(case|default)\b/.test(textAfter)) indent -= config.indentUnit; if (/^\{\/switch\b/.test(textAfter)) indent -= config.indentUnit; } if (indent && state.localMode.indent) indent += state.localMode.indent(state.localState, textAfter); return indent; }, innerMode: function(state) { if (state.soyState.length && last(state.soyState) != "literal") return null; else return {state: state.localState, mode: state.localMode}; }, electricInput: /^\s*\{(\/|\/template|\/deltemplate|\/switch|fallbackmsg|elseif|else|case|default|ifempty|\/literal\})$/, lineComment: "//", blockCommentStart: "/*", blockCommentEnd: "*/", blockCommentContinue: " * ", fold: "indent" }; }, "htmlmixed"); CodeMirror.registerHelper("hintWords", "soy", indentingTags.concat( ["delpackage", "namespace", "alias", "print", "css", "debugger"])); CodeMirror.defineMIME("text/x-soy", "soy"); }); plugins/file-manager-advanced/application/library/codemirror/mode/sparql/index.html000064400000003355147176754550024711 0ustar00 CodeMirror: SPARQL mode

SPARQL mode

MIME types defined: application/sparql-query.

plugins/file-manager-advanced/application/library/codemirror/mode/sparql/sparql.js000064400000014277147176754550024561 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("sparql", function(config) { var indentUnit = config.indentUnit; var curPunc; function wordRegexp(words) { return new RegExp("^(?:" + words.join("|") + ")$", "i"); } var ops = wordRegexp(["str", "lang", "langmatches", "datatype", "bound", "sameterm", "isiri", "isuri", "iri", "uri", "bnode", "count", "sum", "min", "max", "avg", "sample", "group_concat", "rand", "abs", "ceil", "floor", "round", "concat", "substr", "strlen", "replace", "ucase", "lcase", "encode_for_uri", "contains", "strstarts", "strends", "strbefore", "strafter", "year", "month", "day", "hours", "minutes", "seconds", "timezone", "tz", "now", "uuid", "struuid", "md5", "sha1", "sha256", "sha384", "sha512", "coalesce", "if", "strlang", "strdt", "isnumeric", "regex", "exists", "isblank", "isliteral", "a", "bind"]); var keywords = wordRegexp(["base", "prefix", "select", "distinct", "reduced", "construct", "describe", "ask", "from", "named", "where", "order", "limit", "offset", "filter", "optional", "graph", "by", "asc", "desc", "as", "having", "undef", "values", "group", "minus", "in", "not", "service", "silent", "using", "insert", "delete", "union", "true", "false", "with", "data", "copy", "to", "move", "add", "create", "drop", "clear", "load"]); var operatorChars = /[*+\-<>=&|\^\/!\?]/; function tokenBase(stream, state) { var ch = stream.next(); curPunc = null; if (ch == "$" || ch == "?") { if(ch == "?" && stream.match(/\s/, false)){ return "operator"; } stream.match(/^[\w\d]*/); return "variable-2"; } else if (ch == "<" && !stream.match(/^[\s\u00a0=]/, false)) { stream.match(/^[^\s\u00a0>]*>?/); return "atom"; } else if (ch == "\"" || ch == "'") { state.tokenize = tokenLiteral(ch); return state.tokenize(stream, state); } else if (/[{}\(\),\.;\[\]]/.test(ch)) { curPunc = ch; return "bracket"; } else if (ch == "#") { stream.skipToEnd(); return "comment"; } else if (operatorChars.test(ch)) { stream.eatWhile(operatorChars); return "operator"; } else if (ch == ":") { stream.eatWhile(/[\w\d\._\-]/); return "atom"; } else if (ch == "@") { stream.eatWhile(/[a-z\d\-]/i); return "meta"; } else { stream.eatWhile(/[_\w\d]/); if (stream.eat(":")) { stream.eatWhile(/[\w\d_\-]/); return "atom"; } var word = stream.current(); if (ops.test(word)) return "builtin"; else if (keywords.test(word)) return "keyword"; else return "variable"; } } function tokenLiteral(quote) { return function(stream, state) { var escaped = false, ch; while ((ch = stream.next()) != null) { if (ch == quote && !escaped) { state.tokenize = tokenBase; break; } escaped = !escaped && ch == "\\"; } return "string"; }; } function pushContext(state, type, col) { state.context = {prev: state.context, indent: state.indent, col: col, type: type}; } function popContext(state) { state.indent = state.context.indent; state.context = state.context.prev; } return { startState: function() { return {tokenize: tokenBase, context: null, indent: 0, col: 0}; }, token: function(stream, state) { if (stream.sol()) { if (state.context && state.context.align == null) state.context.align = false; state.indent = stream.indentation(); } if (stream.eatSpace()) return null; var style = state.tokenize(stream, state); if (style != "comment" && state.context && state.context.align == null && state.context.type != "pattern") { state.context.align = true; } if (curPunc == "(") pushContext(state, ")", stream.column()); else if (curPunc == "[") pushContext(state, "]", stream.column()); else if (curPunc == "{") pushContext(state, "}", stream.column()); else if (/[\]\}\)]/.test(curPunc)) { while (state.context && state.context.type == "pattern") popContext(state); if (state.context && curPunc == state.context.type) { popContext(state); if (curPunc == "}" && state.context && state.context.type == "pattern") popContext(state); } } else if (curPunc == "." && state.context && state.context.type == "pattern") popContext(state); else if (/atom|string|variable/.test(style) && state.context) { if (/[\}\]]/.test(state.context.type)) pushContext(state, "pattern", stream.column()); else if (state.context.type == "pattern" && !state.context.align) { state.context.align = true; state.context.col = stream.column(); } } return style; }, indent: function(state, textAfter) { var firstChar = textAfter && textAfter.charAt(0); var context = state.context; if (/[\]\}]/.test(firstChar)) while (context && context.type == "pattern") context = context.prev; var closing = context && firstChar == context.type; if (!context) return 0; else if (context.type == "pattern") return context.col; else if (context.align) return context.col + (closing ? 0 : 1); else return context.indent + (closing ? 0 : indentUnit); }, lineComment: "#" }; }); CodeMirror.defineMIME("application/sparql-query", "sparql"); }); plugins/file-manager-advanced/application/library/codemirror/mode/spreadsheet/index.html000064400000002560147176754550025713 0ustar00 CodeMirror: Spreadsheet mode

Spreadsheet mode

MIME types defined: text/x-spreadsheet.

The Spreadsheet Mode

Created by Robert Plummer

plugins/file-manager-advanced/application/library/codemirror/mode/spreadsheet/spreadsheet.js000064400000006103147176754550026560 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("spreadsheet", function () { return { startState: function () { return { stringType: null, stack: [] }; }, token: function (stream, state) { if (!stream) return; //check for state changes if (state.stack.length === 0) { //strings if ((stream.peek() == '"') || (stream.peek() == "'")) { state.stringType = stream.peek(); stream.next(); // Skip quote state.stack.unshift("string"); } } //return state //stack has switch (state.stack[0]) { case "string": while (state.stack[0] === "string" && !stream.eol()) { if (stream.peek() === state.stringType) { stream.next(); // Skip quote state.stack.shift(); // Clear flag } else if (stream.peek() === "\\") { stream.next(); stream.next(); } else { stream.match(/^.[^\\\"\']*/); } } return "string"; case "characterClass": while (state.stack[0] === "characterClass" && !stream.eol()) { if (!(stream.match(/^[^\]\\]+/) || stream.match(/^\\./))) state.stack.shift(); } return "operator"; } var peek = stream.peek(); //no stack switch (peek) { case "[": stream.next(); state.stack.unshift("characterClass"); return "bracket"; case ":": stream.next(); return "operator"; case "\\": if (stream.match(/\\[a-z]+/)) return "string-2"; else { stream.next(); return "atom"; } case ".": case ",": case ";": case "*": case "-": case "+": case "^": case "<": case "/": case "=": stream.next(); return "atom"; case "$": stream.next(); return "builtin"; } if (stream.match(/\d+/)) { if (stream.match(/^\w+/)) return "error"; return "number"; } else if (stream.match(/^[a-zA-Z_]\w*/)) { if (stream.match(/(?=[\(.])/, false)) return "keyword"; return "variable-2"; } else if (["[", "]", "(", ")", "{", "}"].indexOf(peek) != -1) { stream.next(); return "bracket"; } else if (!stream.eatSpace()) { stream.next(); } return null; } }; }); CodeMirror.defineMIME("text/x-spreadsheet", "spreadsheet"); }); plugins/file-manager-advanced/application/library/codemirror/mode/sql/index.html000064400000005657147176754550024215 0ustar00 CodeMirror: SQL Mode for CodeMirror

SQL Mode for CodeMirror

MIME types defined: text/x-sql, text/x-mysql, text/x-mariadb, text/x-cassandra, text/x-plsql, text/x-mssql, text/x-hive, text/x-pgsql, text/x-gql.

plugins/file-manager-advanced/application/library/codemirror/mode/sql/sql.js000064400000102632147176754550023344 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("sql", function(config, parserConfig) { "use strict"; var client = parserConfig.client || {}, atoms = parserConfig.atoms || {"false": true, "true": true, "null": true}, builtin = parserConfig.builtin || {}, keywords = parserConfig.keywords || {}, operatorChars = parserConfig.operatorChars || /^[*+\-%<>!=&|~^]/, support = parserConfig.support || {}, hooks = parserConfig.hooks || {}, dateSQL = parserConfig.dateSQL || {"date" : true, "time" : true, "timestamp" : true}; function tokenBase(stream, state) { var ch = stream.next(); // call hooks from the mime type if (hooks[ch]) { var result = hooks[ch](stream, state); if (result !== false) return result; } if (support.hexNumber == true && ((ch == "0" && stream.match(/^[xX][0-9a-fA-F]+/)) || (ch == "x" || ch == "X") && stream.match(/^'[0-9a-fA-F]+'/))) { // hex // ref: http://dev.mysql.com/doc/refman/5.5/en/hexadecimal-literals.html return "number"; } else if (support.binaryNumber == true && (((ch == "b" || ch == "B") && stream.match(/^'[01]+'/)) || (ch == "0" && stream.match(/^b[01]+/)))) { // bitstring // ref: http://dev.mysql.com/doc/refman/5.5/en/bit-field-literals.html return "number"; } else if (ch.charCodeAt(0) > 47 && ch.charCodeAt(0) < 58) { // numbers // ref: http://dev.mysql.com/doc/refman/5.5/en/number-literals.html stream.match(/^[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?/); support.decimallessFloat == true && stream.eat('.'); return "number"; } else if (ch == "?" && (stream.eatSpace() || stream.eol() || stream.eat(";"))) { // placeholders return "variable-3"; } else if (ch == "'" || (ch == '"' && support.doubleQuote)) { // strings // ref: http://dev.mysql.com/doc/refman/5.5/en/string-literals.html state.tokenize = tokenLiteral(ch); return state.tokenize(stream, state); } else if ((((support.nCharCast == true && (ch == "n" || ch == "N")) || (support.charsetCast == true && ch == "_" && stream.match(/[a-z][a-z0-9]*/i))) && (stream.peek() == "'" || stream.peek() == '"'))) { // charset casting: _utf8'str', N'str', n'str' // ref: http://dev.mysql.com/doc/refman/5.5/en/string-literals.html return "keyword"; } else if (/^[\(\),\;\[\]]/.test(ch)) { // no highlighting return null; } else if (support.commentSlashSlash && ch == "/" && stream.eat("/")) { // 1-line comment stream.skipToEnd(); return "comment"; } else if ((support.commentHash && ch == "#") || (ch == "-" && stream.eat("-") && (!support.commentSpaceRequired || stream.eat(" ")))) { // 1-line comments // ref: https://kb.askmonty.org/en/comment-syntax/ stream.skipToEnd(); return "comment"; } else if (ch == "/" && stream.eat("*")) { // multi-line comments // ref: https://kb.askmonty.org/en/comment-syntax/ state.tokenize = tokenComment; return state.tokenize(stream, state); } else if (ch == ".") { // .1 for 0.1 if (support.zerolessFloat == true && stream.match(/^(?:\d+(?:e[+-]?\d+)?)/i)) { return "number"; } // .table_name (ODBC) // // ref: http://dev.mysql.com/doc/refman/5.6/en/identifier-qualifiers.html if (support.ODBCdotTable == true && stream.match(/^[a-zA-Z_]+/)) { return "variable-2"; } } else if (operatorChars.test(ch)) { // operators stream.eatWhile(operatorChars); return null; } else if (ch == '{' && (stream.match(/^( )*(d|D|t|T|ts|TS)( )*'[^']*'( )*}/) || stream.match(/^( )*(d|D|t|T|ts|TS)( )*"[^"]*"( )*}/))) { // dates (weird ODBC syntax) // ref: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-literals.html return "number"; } else { stream.eatWhile(/^[_\w\d]/); var word = stream.current().toLowerCase(); // dates (standard SQL syntax) // ref: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-literals.html if (dateSQL.hasOwnProperty(word) && (stream.match(/^( )+'[^']*'/) || stream.match(/^( )+"[^"]*"/))) return "number"; if (atoms.hasOwnProperty(word)) return "atom"; if (builtin.hasOwnProperty(word)) return "builtin"; if (keywords.hasOwnProperty(word)) return "keyword"; if (client.hasOwnProperty(word)) return "string-2"; return null; } } // 'string', with char specified in quote escaped by '\' function tokenLiteral(quote) { return function(stream, state) { var escaped = false, ch; while ((ch = stream.next()) != null) { if (ch == quote && !escaped) { state.tokenize = tokenBase; break; } escaped = !escaped && ch == "\\"; } return "string"; }; } function tokenComment(stream, state) { while (true) { if (stream.skipTo("*")) { stream.next(); if (stream.eat("/")) { state.tokenize = tokenBase; break; } } else { stream.skipToEnd(); break; } } return "comment"; } function pushContext(stream, state, type) { state.context = { prev: state.context, indent: stream.indentation(), col: stream.column(), type: type }; } function popContext(state) { state.indent = state.context.indent; state.context = state.context.prev; } return { startState: function() { return {tokenize: tokenBase, context: null}; }, token: function(stream, state) { if (stream.sol()) { if (state.context && state.context.align == null) state.context.align = false; } if (stream.eatSpace()) return null; var style = state.tokenize(stream, state); if (style == "comment") return style; if (state.context && state.context.align == null) state.context.align = true; var tok = stream.current(); if (tok == "(") pushContext(stream, state, ")"); else if (tok == "[") pushContext(stream, state, "]"); else if (state.context && state.context.type == tok) popContext(state); return style; }, indent: function(state, textAfter) { var cx = state.context; if (!cx) return CodeMirror.Pass; var closing = textAfter.charAt(0) == cx.type; if (cx.align) return cx.col + (closing ? 0 : 1); else return cx.indent + (closing ? 0 : config.indentUnit); }, blockCommentStart: "/*", blockCommentEnd: "*/", lineComment: support.commentSlashSlash ? "//" : support.commentHash ? "#" : null }; }); (function() { "use strict"; // `identifier` function hookIdentifier(stream) { // MySQL/MariaDB identifiers // ref: http://dev.mysql.com/doc/refman/5.6/en/identifier-qualifiers.html var ch; while ((ch = stream.next()) != null) { if (ch == "`" && !stream.eat("`")) return "variable-2"; } stream.backUp(stream.current().length - 1); return stream.eatWhile(/\w/) ? "variable-2" : null; } // variable token function hookVar(stream) { // variables // @@prefix.varName @varName // varName can be quoted with ` or ' or " // ref: http://dev.mysql.com/doc/refman/5.5/en/user-variables.html if (stream.eat("@")) { stream.match(/^session\./); stream.match(/^local\./); stream.match(/^global\./); } if (stream.eat("'")) { stream.match(/^.*'/); return "variable-2"; } else if (stream.eat('"')) { stream.match(/^.*"/); return "variable-2"; } else if (stream.eat("`")) { stream.match(/^.*`/); return "variable-2"; } else if (stream.match(/^[0-9a-zA-Z$\.\_]+/)) { return "variable-2"; } return null; }; // short client keyword token function hookClient(stream) { // \N means NULL // ref: http://dev.mysql.com/doc/refman/5.5/en/null-values.html if (stream.eat("N")) { return "atom"; } // \g, etc // ref: http://dev.mysql.com/doc/refman/5.5/en/mysql-commands.html return stream.match(/^[a-zA-Z.#!?]/) ? "variable-2" : null; } // these keywords are used by all SQL dialects (however, a mode can still overwrite it) var sqlKeywords = "alter and as asc between by count create delete desc distinct drop from group having in insert into is join like not on or order select set table union update values where limit "; // turn a space-separated list into an array function set(str) { var obj = {}, words = str.split(" "); for (var i = 0; i < words.length; ++i) obj[words[i]] = true; return obj; } // A generic SQL Mode. It's not a standard, it just try to support what is generally supported CodeMirror.defineMIME("text/x-sql", { name: "sql", keywords: set(sqlKeywords + "begin"), builtin: set("bool boolean bit blob enum long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision real date datetime year unsigned signed decimal numeric"), atoms: set("false true null unknown"), operatorChars: /^[*+\-%<>!=]/, dateSQL: set("date time timestamp"), support: set("ODBCdotTable doubleQuote binaryNumber hexNumber") }); CodeMirror.defineMIME("text/x-mssql", { name: "sql", client: set("charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee"), keywords: set(sqlKeywords + "begin trigger proc view index for add constraint key primary foreign collate clustered nonclustered declare"), builtin: set("bigint numeric bit smallint decimal smallmoney int tinyint money float real char varchar text nchar nvarchar ntext binary varbinary image cursor timestamp hierarchyid uniqueidentifier sql_variant xml table "), atoms: set("false true null unknown"), operatorChars: /^[*+\-%<>!=]/, dateSQL: set("date datetimeoffset datetime2 smalldatetime datetime time"), hooks: { "@": hookVar } }); CodeMirror.defineMIME("text/x-mysql", { name: "sql", client: set("charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee"), keywords: set(sqlKeywords + "accessible action add after algorithm all analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general get global grant grants group group_concat handler hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show signal slave slow smallint snapshot soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views warnings when while with work write xa xor year_month zerofill begin do then else loop repeat"), builtin: set("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric"), atoms: set("false true null unknown"), operatorChars: /^[*+\-%<>!=&|^]/, dateSQL: set("date time timestamp"), support: set("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired"), hooks: { "@": hookVar, "`": hookIdentifier, "\\": hookClient } }); CodeMirror.defineMIME("text/x-mariadb", { name: "sql", client: set("charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee"), keywords: set(sqlKeywords + "accessible action add after algorithm all always analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general generated get global grant grants group groupby_concat handler hard hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password persistent phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show shutdown signal slave slow smallint snapshot soft soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views virtual warnings when while with work write xa xor year_month zerofill begin do then else loop repeat"), builtin: set("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric"), atoms: set("false true null unknown"), operatorChars: /^[*+\-%<>!=&|^]/, dateSQL: set("date time timestamp"), support: set("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired"), hooks: { "@": hookVar, "`": hookIdentifier, "\\": hookClient } }); // the query language used by Apache Cassandra is called CQL, but this mime type // is called Cassandra to avoid confusion with Contextual Query Language CodeMirror.defineMIME("text/x-cassandra", { name: "sql", client: { }, keywords: set("add all allow alter and any apply as asc authorize batch begin by clustering columnfamily compact consistency count create custom delete desc distinct drop each_quorum exists filtering from grant if in index insert into key keyspace keyspaces level limit local_one local_quorum modify nan norecursive nosuperuser not of on one order password permission permissions primary quorum rename revoke schema select set storage superuser table three to token truncate ttl two type unlogged update use user users using values where with writetime"), builtin: set("ascii bigint blob boolean counter decimal double float frozen inet int list map static text timestamp timeuuid tuple uuid varchar varint"), atoms: set("false true infinity NaN"), operatorChars: /^[<>=]/, dateSQL: { }, support: set("commentSlashSlash decimallessFloat"), hooks: { } }); // this is based on Peter Raganitsch's 'plsql' mode CodeMirror.defineMIME("text/x-plsql", { name: "sql", client: set("appinfo arraysize autocommit autoprint autorecovery autotrace blockterminator break btitle cmdsep colsep compatibility compute concat copycommit copytypecheck define describe echo editfile embedded escape exec execute feedback flagger flush heading headsep instance linesize lno loboffset logsource long longchunksize markup native newpage numformat numwidth pagesize pause pno recsep recsepchar release repfooter repheader serveroutput shiftinout show showmode size spool sqlblanklines sqlcase sqlcode sqlcontinue sqlnumber sqlpluscompatibility sqlprefix sqlprompt sqlterminator suffix tab term termout time timing trimout trimspool ttitle underline verify version wrap"), keywords: set("abort accept access add all alter and any array arraylen as asc assert assign at attributes audit authorization avg base_table begin between binary_integer body boolean by case cast char char_base check close cluster clusters colauth column comment commit compress connect connected constant constraint crash create current currval cursor data_base database date dba deallocate debugoff debugon decimal declare default definition delay delete desc digits dispose distinct do drop else elseif elsif enable end entry escape exception exception_init exchange exclusive exists exit external fast fetch file for force form from function generic goto grant group having identified if immediate in increment index indexes indicator initial initrans insert interface intersect into is key level library like limited local lock log logging long loop master maxextents maxtrans member minextents minus mislabel mode modify multiset new next no noaudit nocompress nologging noparallel not nowait number_base object of off offline on online only open option or order out package parallel partition pctfree pctincrease pctused pls_integer positive positiven pragma primary prior private privileges procedure public raise range raw read rebuild record ref references refresh release rename replace resource restrict return returning returns reverse revoke rollback row rowid rowlabel rownum rows run savepoint schema segment select separate session set share snapshot some space split sql start statement storage subtype successful synonym tabauth table tables tablespace task terminate then to trigger truncate type union unique unlimited unrecoverable unusable update use using validate value values variable view views when whenever where while with work"), builtin: set("abs acos add_months ascii asin atan atan2 average bfile bfilename bigserial bit blob ceil character chartorowid chr clob concat convert cos cosh count dec decode deref dual dump dup_val_on_index empty error exp false float floor found glb greatest hextoraw initcap instr instrb int integer isopen last_day least length lengthb ln lower lpad ltrim lub make_ref max min mlslabel mod months_between natural naturaln nchar nclob new_time next_day nextval nls_charset_decl_len nls_charset_id nls_charset_name nls_initcap nls_lower nls_sort nls_upper nlssort no_data_found notfound null number numeric nvarchar2 nvl others power rawtohex real reftohex round rowcount rowidtochar rowtype rpad rtrim serial sign signtype sin sinh smallint soundex sqlcode sqlerrm sqrt stddev string substr substrb sum sysdate tan tanh to_char text to_date to_label to_multi_byte to_number to_single_byte translate true trunc uid unlogged upper user userenv varchar varchar2 variance varying vsize xml"), operatorChars: /^[*+\-%<>!=~]/, dateSQL: set("date time timestamp"), support: set("doubleQuote nCharCast zerolessFloat binaryNumber hexNumber") }); // Created to support specific hive keywords CodeMirror.defineMIME("text/x-hive", { name: "sql", keywords: set("select alter $elem$ $key$ $value$ add after all analyze and archive as asc before between binary both bucket buckets by cascade case cast change cluster clustered clusterstatus collection column columns comment compute concatenate continue create cross cursor data database databases dbproperties deferred delete delimited desc describe directory disable distinct distribute drop else enable end escaped exclusive exists explain export extended external false fetch fields fileformat first format formatted from full function functions grant group having hold_ddltime idxproperties if import in index indexes inpath inputdriver inputformat insert intersect into is items join keys lateral left like limit lines load local location lock locks mapjoin materialized minus msck no_drop nocompress not of offline on option or order out outer outputdriver outputformat overwrite partition partitioned partitions percent plus preserve procedure purge range rcfile read readonly reads rebuild recordreader recordwriter recover reduce regexp rename repair replace restrict revoke right rlike row schema schemas semi sequencefile serde serdeproperties set shared show show_database sort sorted ssl statistics stored streamtable table tables tablesample tblproperties temporary terminated textfile then tmp to touch transform trigger true unarchive undo union uniquejoin unlock update use using utc utc_tmestamp view when where while with"), builtin: set("bool boolean long timestamp tinyint smallint bigint int float double date datetime unsigned string array struct map uniontype"), atoms: set("false true null unknown"), operatorChars: /^[*+\-%<>!=]/, dateSQL: set("date timestamp"), support: set("ODBCdotTable doubleQuote binaryNumber hexNumber") }); CodeMirror.defineMIME("text/x-pgsql", { name: "sql", client: set("source"), // http://www.postgresql.org/docs/9.5/static/sql-keywords-appendix.html keywords: set(sqlKeywords + "a abort abs absent absolute access according action ada add admin after aggregate all allocate also always analyse analyze any are array array_agg array_max_cardinality asensitive assertion assignment asymmetric at atomic attribute attributes authorization avg backward base64 before begin begin_frame begin_partition bernoulli binary bit_length blob blocked bom both breadth c cache call called cardinality cascade cascaded case cast catalog catalog_name ceil ceiling chain characteristics characters character_length character_set_catalog character_set_name character_set_schema char_length check checkpoint class class_origin clob close cluster coalesce cobol collate collation collation_catalog collation_name collation_schema collect column columns column_name command_function command_function_code comment comments commit committed concurrently condition condition_number configuration conflict connect connection connection_name constraint constraints constraint_catalog constraint_name constraint_schema constructor contains content continue control conversion convert copy corr corresponding cost covar_pop covar_samp cross csv cube cume_dist current current_catalog current_date current_default_transform_group current_path current_role current_row current_schema current_time current_timestamp current_transform_group_for_type current_user cursor cursor_name cycle data database datalink datetime_interval_code datetime_interval_precision day db deallocate dec declare default defaults deferrable deferred defined definer degree delimiter delimiters dense_rank depth deref derived describe descriptor deterministic diagnostics dictionary disable discard disconnect dispatch dlnewcopy dlpreviouscopy dlurlcomplete dlurlcompleteonly dlurlcompletewrite dlurlpath dlurlpathonly dlurlpathwrite dlurlscheme dlurlserver dlvalue do document domain dynamic dynamic_function dynamic_function_code each element else empty enable encoding encrypted end end-exec end_frame end_partition enforced enum equals escape event every except exception exclude excluding exclusive exec execute exists exp explain expression extension external extract false family fetch file filter final first first_value flag float floor following for force foreign fortran forward found frame_row free freeze fs full function functions fusion g general generated get global go goto grant granted greatest grouping groups handler header hex hierarchy hold hour id identity if ignore ilike immediate immediately immutable implementation implicit import including increment indent index indexes indicator inherit inherits initially inline inner inout input insensitive instance instantiable instead integrity intersect intersection invoker isnull isolation k key key_member key_type label lag language large last last_value lateral lead leading leakproof least left length level library like_regex link listen ln load local localtime localtimestamp location locator lock locked logged lower m map mapping match matched materialized max maxvalue max_cardinality member merge message_length message_octet_length message_text method min minute minvalue mod mode modifies module month more move multiset mumps name names namespace national natural nchar nclob nesting new next nfc nfd nfkc nfkd nil no none normalize normalized nothing notify notnull nowait nth_value ntile null nullable nullif nulls number object occurrences_regex octets octet_length of off offset oids old only open operator option options ordering ordinality others out outer output over overlaps overlay overriding owned owner p pad parameter parameter_mode parameter_name parameter_ordinal_position parameter_specific_catalog parameter_specific_name parameter_specific_schema parser partial partition pascal passing passthrough password percent percentile_cont percentile_disc percent_rank period permission placing plans pli policy portion position position_regex power precedes preceding prepare prepared preserve primary prior privileges procedural procedure program public quote range rank read reads reassign recheck recovery recursive ref references referencing refresh regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy regr_syy reindex relative release rename repeatable replace replica requiring reset respect restart restore restrict result return returned_cardinality returned_length returned_octet_length returned_sqlstate returning returns revoke right role rollback rollup routine routine_catalog routine_name routine_schema row rows row_count row_number rule savepoint scale schema schema_name scope scope_catalog scope_name scope_schema scroll search second section security selective self sensitive sequence sequences serializable server server_name session session_user setof sets share show similar simple size skip snapshot some source space specific specifictype specific_name sql sqlcode sqlerror sqlexception sqlstate sqlwarning sqrt stable standalone start state statement static statistics stddev_pop stddev_samp stdin stdout storage strict strip structure style subclass_origin submultiset substring substring_regex succeeds sum symmetric sysid system system_time system_user t tables tablesample tablespace table_name temp template temporary then ties timezone_hour timezone_minute to token top_level_count trailing transaction transactions_committed transactions_rolled_back transaction_active transform transforms translate translate_regex translation treat trigger trigger_catalog trigger_name trigger_schema trim trim_array true truncate trusted type types uescape unbounded uncommitted under unencrypted unique unknown unlink unlisten unlogged unnamed unnest until untyped upper uri usage user user_defined_type_catalog user_defined_type_code user_defined_type_name user_defined_type_schema using vacuum valid validate validator value value_of varbinary variadic var_pop var_samp verbose version versioning view views volatile when whenever whitespace width_bucket window within work wrapper write xmlagg xmlattributes xmlbinary xmlcast xmlcomment xmlconcat xmldeclaration xmldocument xmlelement xmlexists xmlforest xmliterate xmlnamespaces xmlparse xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltext xmlvalidate year yes loop repeat"), // http://www.postgresql.org/docs/9.5/static/datatype.html builtin: set("bigint int8 bigserial serial8 bit varying varbit boolean bool box bytea character char varchar cidr circle date double precision float8 inet integer int int4 interval json jsonb line lseg macaddr money numeric decimal path pg_lsn point polygon real float4 smallint int2 smallserial serial2 serial serial4 text time without zone with timetz timestamp timestamptz tsquery tsvector txid_snapshot uuid xml"), atoms: set("false true null unknown"), operatorChars: /^[*+\-%<>!=&|^\/#@?~]/, dateSQL: set("date time timestamp"), support: set("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber nCharCast charsetCast") }); // Google's SQL-like query language, GQL CodeMirror.defineMIME("text/x-gql", { name: "sql", keywords: set("ancestor and asc by contains desc descendant distinct from group has in is limit offset on order select superset where"), atoms: set("false true"), builtin: set("blob datetime first key __key__ string integer double boolean null"), operatorChars: /^[*+\-%<>!=]/ }); }()); }); /* How Properties of Mime Types are used by SQL Mode ================================================= keywords: A list of keywords you want to be highlighted. builtin: A list of builtin types you want to be highlighted (if you want types to be of class "builtin" instead of "keyword"). operatorChars: All characters that must be handled as operators. client: Commands parsed and executed by the client (not the server). support: A list of supported syntaxes which are not common, but are supported by more than 1 DBMS. * ODBCdotTable: .tableName * zerolessFloat: .1 * doubleQuote * nCharCast: N'string' * charsetCast: _utf8'string' * commentHash: use # char for comments * commentSlashSlash: use // for comments * commentSpaceRequired: require a space after -- for comments atoms: Keywords that must be highlighted as atoms,. Some DBMS's support more atoms than others: UNKNOWN, INFINITY, UNDERFLOW, NaN... dateSQL: Used for date/time SQL standard syntax, because not all DBMS's support same temporal types. */ plugins/file-manager-advanced/application/library/codemirror/mode/stex/index.html000064400000010044147176754550024363 0ustar00 CodeMirror: sTeX mode

sTeX mode

MIME types defined: text/x-stex.

Parsing/Highlighting Tests: normal, verbose.

plugins/file-manager-advanced/application/library/codemirror/mode/stex/stex.js000064400000015424147176754550023716 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE /* * Author: Constantin Jucovschi (c.jucovschi@jacobs-university.de) * Licence: MIT */ (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("stex", function() { "use strict"; function pushCommand(state, command) { state.cmdState.push(command); } function peekCommand(state) { if (state.cmdState.length > 0) { return state.cmdState[state.cmdState.length - 1]; } else { return null; } } function popCommand(state) { var plug = state.cmdState.pop(); if (plug) { plug.closeBracket(); } } // returns the non-default plugin closest to the end of the list function getMostPowerful(state) { var context = state.cmdState; for (var i = context.length - 1; i >= 0; i--) { var plug = context[i]; if (plug.name == "DEFAULT") { continue; } return plug; } return { styleIdentifier: function() { return null; } }; } function addPluginPattern(pluginName, cmdStyle, styles) { return function () { this.name = pluginName; this.bracketNo = 0; this.style = cmdStyle; this.styles = styles; this.argument = null; // \begin and \end have arguments that follow. These are stored in the plugin this.styleIdentifier = function() { return this.styles[this.bracketNo - 1] || null; }; this.openBracket = function() { this.bracketNo++; return "bracket"; }; this.closeBracket = function() {}; }; } var plugins = {}; plugins["importmodule"] = addPluginPattern("importmodule", "tag", ["string", "builtin"]); plugins["documentclass"] = addPluginPattern("documentclass", "tag", ["", "atom"]); plugins["usepackage"] = addPluginPattern("usepackage", "tag", ["atom"]); plugins["begin"] = addPluginPattern("begin", "tag", ["atom"]); plugins["end"] = addPluginPattern("end", "tag", ["atom"]); plugins["DEFAULT"] = function () { this.name = "DEFAULT"; this.style = "tag"; this.styleIdentifier = this.openBracket = this.closeBracket = function() {}; }; function setState(state, f) { state.f = f; } // called when in a normal (no environment) context function normal(source, state) { var plug; // Do we look like '\command' ? If so, attempt to apply the plugin 'command' if (source.match(/^\\[a-zA-Z@]+/)) { var cmdName = source.current().slice(1); plug = plugins[cmdName] || plugins["DEFAULT"]; plug = new plug(); pushCommand(state, plug); setState(state, beginParams); return plug.style; } // escape characters if (source.match(/^\\[$&%#{}_]/)) { return "tag"; } // white space control characters if (source.match(/^\\[,;!\/\\]/)) { return "tag"; } // find if we're starting various math modes if (source.match("\\[")) { setState(state, function(source, state){ return inMathMode(source, state, "\\]"); }); return "keyword"; } if (source.match("$$")) { setState(state, function(source, state){ return inMathMode(source, state, "$$"); }); return "keyword"; } if (source.match("$")) { setState(state, function(source, state){ return inMathMode(source, state, "$"); }); return "keyword"; } var ch = source.next(); if (ch == "%") { source.skipToEnd(); return "comment"; } else if (ch == '}' || ch == ']') { plug = peekCommand(state); if (plug) { plug.closeBracket(ch); setState(state, beginParams); } else { return "error"; } return "bracket"; } else if (ch == '{' || ch == '[') { plug = plugins["DEFAULT"]; plug = new plug(); pushCommand(state, plug); return "bracket"; } else if (/\d/.test(ch)) { source.eatWhile(/[\w.%]/); return "atom"; } else { source.eatWhile(/[\w\-_]/); plug = getMostPowerful(state); if (plug.name == 'begin') { plug.argument = source.current(); } return plug.styleIdentifier(); } } function inMathMode(source, state, endModeSeq) { if (source.eatSpace()) { return null; } if (source.match(endModeSeq)) { setState(state, normal); return "keyword"; } if (source.match(/^\\[a-zA-Z@]+/)) { return "tag"; } if (source.match(/^[a-zA-Z]+/)) { return "variable-2"; } // escape characters if (source.match(/^\\[$&%#{}_]/)) { return "tag"; } // white space control characters if (source.match(/^\\[,;!\/]/)) { return "tag"; } // special math-mode characters if (source.match(/^[\^_&]/)) { return "tag"; } // non-special characters if (source.match(/^[+\-<>|=,\/@!*:;'"`~#?]/)) { return null; } if (source.match(/^(\d+\.\d*|\d*\.\d+|\d+)/)) { return "number"; } var ch = source.next(); if (ch == "{" || ch == "}" || ch == "[" || ch == "]" || ch == "(" || ch == ")") { return "bracket"; } if (ch == "%") { source.skipToEnd(); return "comment"; } return "error"; } function beginParams(source, state) { var ch = source.peek(), lastPlug; if (ch == '{' || ch == '[') { lastPlug = peekCommand(state); lastPlug.openBracket(ch); source.eat(ch); setState(state, normal); return "bracket"; } if (/[ \t\r]/.test(ch)) { source.eat(ch); return null; } setState(state, normal); popCommand(state); return normal(source, state); } return { startState: function() { return { cmdState: [], f: normal }; }, copyState: function(s) { return { cmdState: s.cmdState.slice(), f: s.f }; }, token: function(stream, state) { return state.f(stream, state); }, blankLine: function(state) { state.f = normal; state.cmdState.length = 0; }, lineComment: "%" }; }); CodeMirror.defineMIME("text/x-stex", "stex"); CodeMirror.defineMIME("text/x-latex", "stex"); }); plugins/file-manager-advanced/application/library/codemirror/mode/stex/test.js000064400000006042147176754550023706 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function() { var mode = CodeMirror.getMode({tabSize: 4}, "stex"); function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } MT("word", "foo"); MT("twoWords", "foo bar"); MT("beginEndDocument", "[tag \\begin][bracket {][atom document][bracket }]", "[tag \\end][bracket {][atom document][bracket }]"); MT("beginEndEquation", "[tag \\begin][bracket {][atom equation][bracket }]", " E=mc^2", "[tag \\end][bracket {][atom equation][bracket }]"); MT("beginModule", "[tag \\begin][bracket {][atom module][bracket }[[]]]"); MT("beginModuleId", "[tag \\begin][bracket {][atom module][bracket }[[]id=bbt-size[bracket ]]]"); MT("importModule", "[tag \\importmodule][bracket [[][string b-b-t][bracket ]]{][builtin b-b-t][bracket }]"); MT("importModulePath", "[tag \\importmodule][bracket [[][tag \\KWARCslides][bracket {][string dmath/en/cardinality][bracket }]]{][builtin card][bracket }]"); MT("psForPDF", "[tag \\PSforPDF][bracket [[][atom 1][bracket ]]{]#1[bracket }]"); MT("comment", "[comment % foo]"); MT("tagComment", "[tag \\item][comment % bar]"); MT("commentTag", " [comment % \\item]"); MT("commentLineBreak", "[comment %]", "foo"); MT("tagErrorCurly", "[tag \\begin][error }][bracket {]"); MT("tagErrorSquare", "[tag \\item][error ]]][bracket {]"); MT("commentCurly", "[comment % }]"); MT("tagHash", "the [tag \\#] key"); MT("tagNumber", "a [tag \\$][atom 5] stetson"); MT("tagPercent", "[atom 100][tag \\%] beef"); MT("tagAmpersand", "L [tag \\&] N"); MT("tagUnderscore", "foo[tag \\_]bar"); MT("tagBracketOpen", "[tag \\emph][bracket {][tag \\{][bracket }]"); MT("tagBracketClose", "[tag \\emph][bracket {][tag \\}][bracket }]"); MT("tagLetterNumber", "section [tag \\S][atom 1]"); MT("textTagNumber", "para [tag \\P][atom 2]"); MT("thinspace", "x[tag \\,]y"); MT("thickspace", "x[tag \\;]y"); MT("negativeThinspace", "x[tag \\!]y"); MT("periodNotSentence", "J.\\ L.\\ is"); MT("periodSentence", "X[tag \\@]. The"); MT("italicCorrection", "[bracket {][tag \\em] If[tag \\/][bracket }] I"); MT("tagBracket", "[tag \\newcommand][bracket {][tag \\pop][bracket }]"); MT("inlineMathTagFollowedByNumber", "[keyword $][tag \\pi][number 2][keyword $]"); MT("inlineMath", "[keyword $][number 3][variable-2 x][tag ^][number 2.45]-[tag \\sqrt][bracket {][tag \\$\\alpha][bracket }] = [number 2][keyword $] other text"); MT("displayMath", "More [keyword $$]\t[variable-2 S][tag ^][variable-2 n][tag \\sum] [variable-2 i][keyword $$] other text"); MT("mathWithComment", "[keyword $][variable-2 x] [comment % $]", "[variable-2 y][keyword $] other text"); MT("lineBreakArgument", "[tag \\\\][bracket [[][atom 1cm][bracket ]]]"); })(); plugins/file-manager-advanced/application/library/codemirror/mode/stylus/index.html000064400000004650147176754550024751 0ustar00 CodeMirror: Stylus mode

Stylus mode

MIME types defined: text/x-styl.

Created by Dmitry Kiselyov

plugins/file-manager-advanced/application/library/codemirror/mode/stylus/stylus.js000064400000122210147176754550024646 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE // Stylus mode created by Dmitry Kiselyov http://git.io/AaRB (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("stylus", function(config) { var indentUnit = config.indentUnit, tagKeywords = keySet(tagKeywords_), tagVariablesRegexp = /^(a|b|i|s|col|em)$/i, propertyKeywords = keySet(propertyKeywords_), nonStandardPropertyKeywords = keySet(nonStandardPropertyKeywords_), valueKeywords = keySet(valueKeywords_), colorKeywords = keySet(colorKeywords_), documentTypes = keySet(documentTypes_), documentTypesRegexp = wordRegexp(documentTypes_), mediaFeatures = keySet(mediaFeatures_), mediaTypes = keySet(mediaTypes_), fontProperties = keySet(fontProperties_), operatorsRegexp = /^\s*([.]{2,3}|&&|\|\||\*\*|[?!=:]?=|[-+*\/%<>]=?|\?:|\~)/, wordOperatorKeywordsRegexp = wordRegexp(wordOperatorKeywords_), blockKeywords = keySet(blockKeywords_), vendorPrefixesRegexp = new RegExp(/^\-(moz|ms|o|webkit)-/i), commonAtoms = keySet(commonAtoms_), firstWordMatch = "", states = {}, ch, style, type, override; /** * Tokenizers */ function tokenBase(stream, state) { firstWordMatch = stream.string.match(/(^[\w-]+\s*=\s*$)|(^\s*[\w-]+\s*=\s*[\w-])|(^\s*(\.|#|@|\$|\&|\[|\d|\+|::?|\{|\>|~|\/)?\s*[\w-]*([a-z0-9-]|\*|\/\*)(\(|,)?)/); state.context.line.firstWord = firstWordMatch ? firstWordMatch[0].replace(/^\s*/, "") : ""; state.context.line.indent = stream.indentation(); ch = stream.peek(); // Line comment if (stream.match("//")) { stream.skipToEnd(); return ["comment", "comment"]; } // Block comment if (stream.match("/*")) { state.tokenize = tokenCComment; return tokenCComment(stream, state); } // String if (ch == "\"" || ch == "'") { stream.next(); state.tokenize = tokenString(ch); return state.tokenize(stream, state); } // Def if (ch == "@") { stream.next(); stream.eatWhile(/[\w\\-]/); return ["def", stream.current()]; } // ID selector or Hex color if (ch == "#") { stream.next(); // Hex color if (stream.match(/^[0-9a-f]{6}|[0-9a-f]{3}/i)) { return ["atom", "atom"]; } // ID selector if (stream.match(/^[a-z][\w-]*/i)) { return ["builtin", "hash"]; } } // Vendor prefixes if (stream.match(vendorPrefixesRegexp)) { return ["meta", "vendor-prefixes"]; } // Numbers if (stream.match(/^-?[0-9]?\.?[0-9]/)) { stream.eatWhile(/[a-z%]/i); return ["number", "unit"]; } // !important|optional if (ch == "!") { stream.next(); return [stream.match(/^(important|optional)/i) ? "keyword": "operator", "important"]; } // Class if (ch == "." && stream.match(/^\.[a-z][\w-]*/i)) { return ["qualifier", "qualifier"]; } // url url-prefix domain regexp if (stream.match(documentTypesRegexp)) { if (stream.peek() == "(") state.tokenize = tokenParenthesized; return ["property", "word"]; } // Mixins / Functions if (stream.match(/^[a-z][\w-]*\(/i)) { stream.backUp(1); return ["keyword", "mixin"]; } // Block mixins if (stream.match(/^(\+|-)[a-z][\w-]*\(/i)) { stream.backUp(1); return ["keyword", "block-mixin"]; } // Parent Reference BEM naming if (stream.string.match(/^\s*&/) && stream.match(/^[-_]+[a-z][\w-]*/)) { return ["qualifier", "qualifier"]; } // / Root Reference & Parent Reference if (stream.match(/^(\/|&)(-|_|:|\.|#|[a-z])/)) { stream.backUp(1); return ["variable-3", "reference"]; } if (stream.match(/^&{1}\s*$/)) { return ["variable-3", "reference"]; } // Word operator if (stream.match(wordOperatorKeywordsRegexp)) { return ["operator", "operator"]; } // Word if (stream.match(/^\$?[-_]*[a-z0-9]+[\w-]*/i)) { // Variable if (stream.match(/^(\.|\[)[\w-\'\"\]]+/i, false)) { if (!wordIsTag(stream.current())) { stream.match(/\./); return ["variable-2", "variable-name"]; } } return ["variable-2", "word"]; } // Operators if (stream.match(operatorsRegexp)) { return ["operator", stream.current()]; } // Delimiters if (/[:;,{}\[\]\(\)]/.test(ch)) { stream.next(); return [null, ch]; } // Non-detected items stream.next(); return [null, null]; } /** * Token comment */ function tokenCComment(stream, state) { var maybeEnd = false, ch; while ((ch = stream.next()) != null) { if (maybeEnd && ch == "/") { state.tokenize = null; break; } maybeEnd = (ch == "*"); } return ["comment", "comment"]; } /** * Token string */ function tokenString(quote) { return function(stream, state) { var escaped = false, ch; while ((ch = stream.next()) != null) { if (ch == quote && !escaped) { if (quote == ")") stream.backUp(1); break; } escaped = !escaped && ch == "\\"; } if (ch == quote || !escaped && quote != ")") state.tokenize = null; return ["string", "string"]; }; } /** * Token parenthesized */ function tokenParenthesized(stream, state) { stream.next(); // Must be "(" if (!stream.match(/\s*[\"\')]/, false)) state.tokenize = tokenString(")"); else state.tokenize = null; return [null, "("]; } /** * Context management */ function Context(type, indent, prev, line) { this.type = type; this.indent = indent; this.prev = prev; this.line = line || {firstWord: "", indent: 0}; } function pushContext(state, stream, type, indent) { indent = indent >= 0 ? indent : indentUnit; state.context = new Context(type, stream.indentation() + indent, state.context); return type; } function popContext(state, currentIndent) { var contextIndent = state.context.indent - indentUnit; currentIndent = currentIndent || false; state.context = state.context.prev; if (currentIndent) state.context.indent = contextIndent; return state.context.type; } function pass(type, stream, state) { return states[state.context.type](type, stream, state); } function popAndPass(type, stream, state, n) { for (var i = n || 1; i > 0; i--) state.context = state.context.prev; return pass(type, stream, state); } /** * Parser */ function wordIsTag(word) { return word.toLowerCase() in tagKeywords; } function wordIsProperty(word) { word = word.toLowerCase(); return word in propertyKeywords || word in fontProperties; } function wordIsBlock(word) { return word.toLowerCase() in blockKeywords; } function wordIsVendorPrefix(word) { return word.toLowerCase().match(vendorPrefixesRegexp); } function wordAsValue(word) { var wordLC = word.toLowerCase(); var override = "variable-2"; if (wordIsTag(word)) override = "tag"; else if (wordIsBlock(word)) override = "block-keyword"; else if (wordIsProperty(word)) override = "property"; else if (wordLC in valueKeywords || wordLC in commonAtoms) override = "atom"; else if (wordLC == "return" || wordLC in colorKeywords) override = "keyword"; // Font family else if (word.match(/^[A-Z]/)) override = "string"; return override; } function typeIsBlock(type, stream) { return ((endOfLine(stream) && (type == "{" || type == "]" || type == "hash" || type == "qualifier")) || type == "block-mixin"); } function typeIsInterpolation(type, stream) { return type == "{" && stream.match(/^\s*\$?[\w-]+/i, false); } function typeIsPseudo(type, stream) { return type == ":" && stream.match(/^[a-z-]+/, false); } function startOfLine(stream) { return stream.sol() || stream.string.match(new RegExp("^\\s*" + escapeRegExp(stream.current()))); } function endOfLine(stream) { return stream.eol() || stream.match(/^\s*$/, false); } function firstWordOfLine(line) { var re = /^\s*[-_]*[a-z0-9]+[\w-]*/i; var result = typeof line == "string" ? line.match(re) : line.string.match(re); return result ? result[0].replace(/^\s*/, "") : ""; } /** * Block */ states.block = function(type, stream, state) { if ((type == "comment" && startOfLine(stream)) || (type == "," && endOfLine(stream)) || type == "mixin") { return pushContext(state, stream, "block", 0); } if (typeIsInterpolation(type, stream)) { return pushContext(state, stream, "interpolation"); } if (endOfLine(stream) && type == "]") { if (!/^\s*(\.|#|:|\[|\*|&)/.test(stream.string) && !wordIsTag(firstWordOfLine(stream))) { return pushContext(state, stream, "block", 0); } } if (typeIsBlock(type, stream, state)) { return pushContext(state, stream, "block"); } if (type == "}" && endOfLine(stream)) { return pushContext(state, stream, "block", 0); } if (type == "variable-name") { if (stream.string.match(/^\s?\$[\w-\.\[\]\'\"]+$/) || wordIsBlock(firstWordOfLine(stream))) { return pushContext(state, stream, "variableName"); } else { return pushContext(state, stream, "variableName", 0); } } if (type == "=") { if (!endOfLine(stream) && !wordIsBlock(firstWordOfLine(stream))) { return pushContext(state, stream, "block", 0); } return pushContext(state, stream, "block"); } if (type == "*") { if (endOfLine(stream) || stream.match(/\s*(,|\.|#|\[|:|{)/,false)) { override = "tag"; return pushContext(state, stream, "block"); } } if (typeIsPseudo(type, stream)) { return pushContext(state, stream, "pseudo"); } if (/@(font-face|media|supports|(-moz-)?document)/.test(type)) { return pushContext(state, stream, endOfLine(stream) ? "block" : "atBlock"); } if (/@(-(moz|ms|o|webkit)-)?keyframes$/.test(type)) { return pushContext(state, stream, "keyframes"); } if (/@extends?/.test(type)) { return pushContext(state, stream, "extend", 0); } if (type && type.charAt(0) == "@") { // Property Lookup if (stream.indentation() > 0 && wordIsProperty(stream.current().slice(1))) { override = "variable-2"; return "block"; } if (/(@import|@require|@charset)/.test(type)) { return pushContext(state, stream, "block", 0); } return pushContext(state, stream, "block"); } if (type == "reference" && endOfLine(stream)) { return pushContext(state, stream, "block"); } if (type == "(") { return pushContext(state, stream, "parens"); } if (type == "vendor-prefixes") { return pushContext(state, stream, "vendorPrefixes"); } if (type == "word") { var word = stream.current(); override = wordAsValue(word); if (override == "property") { if (startOfLine(stream)) { return pushContext(state, stream, "block", 0); } else { override = "atom"; return "block"; } } if (override == "tag") { // tag is a css value if (/embed|menu|pre|progress|sub|table/.test(word)) { if (wordIsProperty(firstWordOfLine(stream))) { override = "atom"; return "block"; } } // tag is an attribute if (stream.string.match(new RegExp("\\[\\s*" + word + "|" + word +"\\s*\\]"))) { override = "atom"; return "block"; } // tag is a variable if (tagVariablesRegexp.test(word)) { if ((startOfLine(stream) && stream.string.match(/=/)) || (!startOfLine(stream) && !stream.string.match(/^(\s*\.|#|\&|\[|\/|>|\*)/) && !wordIsTag(firstWordOfLine(stream)))) { override = "variable-2"; if (wordIsBlock(firstWordOfLine(stream))) return "block"; return pushContext(state, stream, "block", 0); } } if (endOfLine(stream)) return pushContext(state, stream, "block"); } if (override == "block-keyword") { override = "keyword"; // Postfix conditionals if (stream.current(/(if|unless)/) && !startOfLine(stream)) { return "block"; } return pushContext(state, stream, "block"); } if (word == "return") return pushContext(state, stream, "block", 0); // Placeholder selector if (override == "variable-2" && stream.string.match(/^\s?\$[\w-\.\[\]\'\"]+$/)) { return pushContext(state, stream, "block"); } } return state.context.type; }; /** * Parens */ states.parens = function(type, stream, state) { if (type == "(") return pushContext(state, stream, "parens"); if (type == ")") { if (state.context.prev.type == "parens") { return popContext(state); } if ((stream.string.match(/^[a-z][\w-]*\(/i) && endOfLine(stream)) || wordIsBlock(firstWordOfLine(stream)) || /(\.|#|:|\[|\*|&|>|~|\+|\/)/.test(firstWordOfLine(stream)) || (!stream.string.match(/^-?[a-z][\w-\.\[\]\'\"]*\s*=/) && wordIsTag(firstWordOfLine(stream)))) { return pushContext(state, stream, "block"); } if (stream.string.match(/^[\$-]?[a-z][\w-\.\[\]\'\"]*\s*=/) || stream.string.match(/^\s*(\(|\)|[0-9])/) || stream.string.match(/^\s+[a-z][\w-]*\(/i) || stream.string.match(/^\s+[\$-]?[a-z]/i)) { return pushContext(state, stream, "block", 0); } if (endOfLine(stream)) return pushContext(state, stream, "block"); else return pushContext(state, stream, "block", 0); } if (type && type.charAt(0) == "@" && wordIsProperty(stream.current().slice(1))) { override = "variable-2"; } if (type == "word") { var word = stream.current(); override = wordAsValue(word); if (override == "tag" && tagVariablesRegexp.test(word)) { override = "variable-2"; } if (override == "property" || word == "to") override = "atom"; } if (type == "variable-name") { return pushContext(state, stream, "variableName"); } if (typeIsPseudo(type, stream)) { return pushContext(state, stream, "pseudo"); } return state.context.type; }; /** * Vendor prefixes */ states.vendorPrefixes = function(type, stream, state) { if (type == "word") { override = "property"; return pushContext(state, stream, "block", 0); } return popContext(state); }; /** * Pseudo */ states.pseudo = function(type, stream, state) { if (!wordIsProperty(firstWordOfLine(stream.string))) { stream.match(/^[a-z-]+/); override = "variable-3"; if (endOfLine(stream)) return pushContext(state, stream, "block"); return popContext(state); } return popAndPass(type, stream, state); }; /** * atBlock */ states.atBlock = function(type, stream, state) { if (type == "(") return pushContext(state, stream, "atBlock_parens"); if (typeIsBlock(type, stream, state)) { return pushContext(state, stream, "block"); } if (typeIsInterpolation(type, stream)) { return pushContext(state, stream, "interpolation"); } if (type == "word") { var word = stream.current().toLowerCase(); if (/^(only|not|and|or)$/.test(word)) override = "keyword"; else if (documentTypes.hasOwnProperty(word)) override = "tag"; else if (mediaTypes.hasOwnProperty(word)) override = "attribute"; else if (mediaFeatures.hasOwnProperty(word)) override = "property"; else if (nonStandardPropertyKeywords.hasOwnProperty(word)) override = "string-2"; else override = wordAsValue(stream.current()); if (override == "tag" && endOfLine(stream)) { return pushContext(state, stream, "block"); } } if (type == "operator" && /^(not|and|or)$/.test(stream.current())) { override = "keyword"; } return state.context.type; }; states.atBlock_parens = function(type, stream, state) { if (type == "{" || type == "}") return state.context.type; if (type == ")") { if (endOfLine(stream)) return pushContext(state, stream, "block"); else return pushContext(state, stream, "atBlock"); } if (type == "word") { var word = stream.current().toLowerCase(); override = wordAsValue(word); if (/^(max|min)/.test(word)) override = "property"; if (override == "tag") { tagVariablesRegexp.test(word) ? override = "variable-2" : override = "atom"; } return state.context.type; } return states.atBlock(type, stream, state); }; /** * Keyframes */ states.keyframes = function(type, stream, state) { if (stream.indentation() == "0" && ((type == "}" && startOfLine(stream)) || type == "]" || type == "hash" || type == "qualifier" || wordIsTag(stream.current()))) { return popAndPass(type, stream, state); } if (type == "{") return pushContext(state, stream, "keyframes"); if (type == "}") { if (startOfLine(stream)) return popContext(state, true); else return pushContext(state, stream, "keyframes"); } if (type == "unit" && /^[0-9]+\%$/.test(stream.current())) { return pushContext(state, stream, "keyframes"); } if (type == "word") { override = wordAsValue(stream.current()); if (override == "block-keyword") { override = "keyword"; return pushContext(state, stream, "keyframes"); } } if (/@(font-face|media|supports|(-moz-)?document)/.test(type)) { return pushContext(state, stream, endOfLine(stream) ? "block" : "atBlock"); } if (type == "mixin") { return pushContext(state, stream, "block", 0); } return state.context.type; }; /** * Interpolation */ states.interpolation = function(type, stream, state) { if (type == "{") popContext(state) && pushContext(state, stream, "block"); if (type == "}") { if (stream.string.match(/^\s*(\.|#|:|\[|\*|&|>|~|\+|\/)/i) || (stream.string.match(/^\s*[a-z]/i) && wordIsTag(firstWordOfLine(stream)))) { return pushContext(state, stream, "block"); } if (!stream.string.match(/^(\{|\s*\&)/) || stream.match(/\s*[\w-]/,false)) { return pushContext(state, stream, "block", 0); } return pushContext(state, stream, "block"); } if (type == "variable-name") { return pushContext(state, stream, "variableName", 0); } if (type == "word") { override = wordAsValue(stream.current()); if (override == "tag") override = "atom"; } return state.context.type; }; /** * Extend/s */ states.extend = function(type, stream, state) { if (type == "[" || type == "=") return "extend"; if (type == "]") return popContext(state); if (type == "word") { override = wordAsValue(stream.current()); return "extend"; } return popContext(state); }; /** * Variable name */ states.variableName = function(type, stream, state) { if (type == "string" || type == "[" || type == "]" || stream.current().match(/^(\.|\$)/)) { if (stream.current().match(/^\.[\w-]+/i)) override = "variable-2"; return "variableName"; } return popAndPass(type, stream, state); }; return { startState: function(base) { return { tokenize: null, state: "block", context: new Context("block", base || 0, null) }; }, token: function(stream, state) { if (!state.tokenize && stream.eatSpace()) return null; style = (state.tokenize || tokenBase)(stream, state); if (style && typeof style == "object") { type = style[1]; style = style[0]; } override = style; state.state = states[state.state](type, stream, state); return override; }, indent: function(state, textAfter, line) { var cx = state.context, ch = textAfter && textAfter.charAt(0), indent = cx.indent, lineFirstWord = firstWordOfLine(textAfter), lineIndent = line.length - line.replace(/^\s*/, "").length, prevLineFirstWord = state.context.prev ? state.context.prev.line.firstWord : "", prevLineIndent = state.context.prev ? state.context.prev.line.indent : lineIndent; if (cx.prev && (ch == "}" && (cx.type == "block" || cx.type == "atBlock" || cx.type == "keyframes") || ch == ")" && (cx.type == "parens" || cx.type == "atBlock_parens") || ch == "{" && (cx.type == "at"))) { indent = cx.indent - indentUnit; cx = cx.prev; } else if (!(/(\})/.test(ch))) { if (/@|\$|\d/.test(ch) || /^\{/.test(textAfter) || /^\s*\/(\/|\*)/.test(textAfter) || /^\s*\/\*/.test(prevLineFirstWord) || /^\s*[\w-\.\[\]\'\"]+\s*(\?|:|\+)?=/i.test(textAfter) || /^(\+|-)?[a-z][\w-]*\(/i.test(textAfter) || /^return/.test(textAfter) || wordIsBlock(lineFirstWord)) { indent = lineIndent; } else if (/(\.|#|:|\[|\*|&|>|~|\+|\/)/.test(ch) || wordIsTag(lineFirstWord)) { if (/\,\s*$/.test(prevLineFirstWord)) { indent = prevLineIndent; } else if (/^\s+/.test(line) && (/(\.|#|:|\[|\*|&|>|~|\+|\/)/.test(prevLineFirstWord) || wordIsTag(prevLineFirstWord))) { indent = lineIndent <= prevLineIndent ? prevLineIndent : prevLineIndent + indentUnit; } else { indent = lineIndent; } } else if (!/,\s*$/.test(line) && (wordIsVendorPrefix(lineFirstWord) || wordIsProperty(lineFirstWord))) { if (wordIsBlock(prevLineFirstWord)) { indent = lineIndent <= prevLineIndent ? prevLineIndent : prevLineIndent + indentUnit; } else if (/^\{/.test(prevLineFirstWord)) { indent = lineIndent <= prevLineIndent ? lineIndent : prevLineIndent + indentUnit; } else if (wordIsVendorPrefix(prevLineFirstWord) || wordIsProperty(prevLineFirstWord)) { indent = lineIndent >= prevLineIndent ? prevLineIndent : lineIndent; } else if (/^(\.|#|:|\[|\*|&|@|\+|\-|>|~|\/)/.test(prevLineFirstWord) || /=\s*$/.test(prevLineFirstWord) || wordIsTag(prevLineFirstWord) || /^\$[\w-\.\[\]\'\"]/.test(prevLineFirstWord)) { indent = prevLineIndent + indentUnit; } else { indent = lineIndent; } } } return indent; }, electricChars: "}", lineComment: "//", fold: "indent" }; }); // developer.mozilla.org/en-US/docs/Web/HTML/Element var tagKeywords_ = ["a","abbr","address","area","article","aside","audio", "b", "base","bdi", "bdo","bgsound","blockquote","body","br","button","canvas","caption","cite", "code","col","colgroup","data","datalist","dd","del","details","dfn","div", "dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1", "h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe", "img","input","ins","kbd","keygen","label","legend","li","link","main","map", "mark","marquee","menu","menuitem","meta","meter","nav","nobr","noframes", "noscript","object","ol","optgroup","option","output","p","param","pre", "progress","q","rp","rt","ruby","s","samp","script","section","select", "small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","track", "u","ul","var","video"]; // github.com/codemirror/CodeMirror/blob/master/mode/css/css.js var documentTypes_ = ["domain", "regexp", "url", "url-prefix"]; var mediaTypes_ = ["all","aural","braille","handheld","print","projection","screen","tty","tv","embossed"]; var mediaFeatures_ = ["width","min-width","max-width","height","min-height","max-height","device-width","min-device-width","max-device-width","device-height","min-device-height","max-device-height","aspect-ratio","min-aspect-ratio","max-aspect-ratio","device-aspect-ratio","min-device-aspect-ratio","max-device-aspect-ratio","color","min-color","max-color","color-index","min-color-index","max-color-index","monochrome","min-monochrome","max-monochrome","resolution","min-resolution","max-resolution","scan","grid"]; var propertyKeywords_ = ["align-content","align-items","align-self","alignment-adjust","alignment-baseline","anchor-point","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","appearance","azimuth","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","baseline-shift","binding","bleed","bookmark-label","bookmark-level","bookmark-state","bookmark-target","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","color","color-profile","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","crop","cue","cue-after","cue-before","cursor","direction","display","dominant-baseline","drop-initial-after-adjust","drop-initial-after-align","drop-initial-before-adjust","drop-initial-before-align","drop-initial-size","drop-initial-value","elevation","empty-cells","fit","fit-position","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","float-offset","flow-from","flow-into","font","font-feature-settings","font-family","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-synthesis","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-weight","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-position","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","inline-box-align","justify-content","left","letter-spacing","line-break","line-height","line-stacking","line-stacking-ruby","line-stacking-shift","line-stacking-strategy","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marker-offset","marks","marquee-direction","marquee-loop","marquee-play-count","marquee-speed","marquee-style","max-height","max-width","min-height","min-width","move-to","nav-down","nav-index","nav-left","nav-right","nav-up","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-style","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","page-policy","pause","pause-after","pause-before","perspective","perspective-origin","pitch","pitch-range","play-during","position","presentation-level","punctuation-trim","quotes","region-break-after","region-break-before","region-break-inside","region-fragment","rendering-intent","resize","rest","rest-after","rest-before","richness","right","rotation","rotation-point","ruby-align","ruby-overhang","ruby-position","ruby-span","shape-image-threshold","shape-inside","shape-margin","shape-outside","size","speak","speak-as","speak-header","speak-numeral","speak-punctuation","speech-rate","stress","string-set","tab-size","table-layout","target","target-name","target-new","target-position","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-height","text-indent","text-justify","text-outline","text-overflow","text-shadow","text-size-adjust","text-space-collapse","text-transform","text-underline-position","text-wrap","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","volume","white-space","widows","width","word-break","word-spacing","word-wrap","z-index","clip-path","clip-rule","mask","enable-background","filter","flood-color","flood-opacity","lighting-color","stop-color","stop-opacity","pointer-events","color-interpolation","color-interpolation-filters","color-rendering","fill","fill-opacity","fill-rule","image-rendering","marker","marker-end","marker-mid","marker-start","shape-rendering","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","text-rendering","baseline-shift","dominant-baseline","glyph-orientation-horizontal","glyph-orientation-vertical","text-anchor","writing-mode","font-smoothing","osx-font-smoothing"]; var nonStandardPropertyKeywords_ = ["scrollbar-arrow-color","scrollbar-base-color","scrollbar-dark-shadow-color","scrollbar-face-color","scrollbar-highlight-color","scrollbar-shadow-color","scrollbar-3d-light-color","scrollbar-track-color","shape-inside","searchfield-cancel-button","searchfield-decoration","searchfield-results-button","searchfield-results-decoration","zoom"]; var fontProperties_ = ["font-family","src","unicode-range","font-variant","font-feature-settings","font-stretch","font-weight","font-style"]; var colorKeywords_ = ["aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen"]; var valueKeywords_ = ["above","absolute","activeborder","additive","activecaption","afar","after-white-space","ahead","alias","all","all-scroll","alphabetic","alternate","always","amharic","amharic-abegede","antialiased","appworkspace","arabic-indic","armenian","asterisks","attr","auto","avoid","avoid-column","avoid-page","avoid-region","background","backwards","baseline","below","bidi-override","binary","bengali","blink","block","block-axis","bold","bolder","border","border-box","both","bottom","break","break-all","break-word","bullets","button","button-bevel","buttonface","buttonhighlight","buttonshadow","buttontext","calc","cambodian","capitalize","caps-lock-indicator","caption","captiontext","caret","cell","center","checkbox","circle","cjk-decimal","cjk-earthly-branch","cjk-heavenly-stem","cjk-ideographic","clear","clip","close-quote","col-resize","collapse","column","compact","condensed","contain","content","content-box","context-menu","continuous","copy","counter","counters","cover","crop","cross","crosshair","currentcolor","cursive","cyclic","dashed","decimal","decimal-leading-zero","default","default-button","destination-atop","destination-in","destination-out","destination-over","devanagari","disc","discard","disclosure-closed","disclosure-open","document","dot-dash","dot-dot-dash","dotted","double","down","e-resize","ease","ease-in","ease-in-out","ease-out","element","ellipse","ellipsis","embed","end","ethiopic","ethiopic-abegede","ethiopic-abegede-am-et","ethiopic-abegede-gez","ethiopic-abegede-ti-er","ethiopic-abegede-ti-et","ethiopic-halehame-aa-er","ethiopic-halehame-aa-et","ethiopic-halehame-am-et","ethiopic-halehame-gez","ethiopic-halehame-om-et","ethiopic-halehame-sid-et","ethiopic-halehame-so-et","ethiopic-halehame-ti-er","ethiopic-halehame-ti-et","ethiopic-halehame-tig","ethiopic-numeric","ew-resize","expanded","extends","extra-condensed","extra-expanded","fantasy","fast","fill","fixed","flat","flex","footnotes","forwards","from","geometricPrecision","georgian","graytext","groove","gujarati","gurmukhi","hand","hangul","hangul-consonant","hebrew","help","hidden","hide","higher","highlight","highlighttext","hiragana","hiragana-iroha","horizontal","hsl","hsla","icon","ignore","inactiveborder","inactivecaption","inactivecaptiontext","infinite","infobackground","infotext","inherit","initial","inline","inline-axis","inline-block","inline-flex","inline-table","inset","inside","intrinsic","invert","italic","japanese-formal","japanese-informal","justify","kannada","katakana","katakana-iroha","keep-all","khmer","korean-hangul-formal","korean-hanja-formal","korean-hanja-informal","landscape","lao","large","larger","left","level","lighter","line-through","linear","linear-gradient","lines","list-item","listbox","listitem","local","logical","loud","lower","lower-alpha","lower-armenian","lower-greek","lower-hexadecimal","lower-latin","lower-norwegian","lower-roman","lowercase","ltr","malayalam","match","matrix","matrix3d","media-controls-background","media-current-time-display","media-fullscreen-button","media-mute-button","media-play-button","media-return-to-realtime-button","media-rewind-button","media-seek-back-button","media-seek-forward-button","media-slider","media-sliderthumb","media-time-remaining-display","media-volume-slider","media-volume-slider-container","media-volume-sliderthumb","medium","menu","menulist","menulist-button","menulist-text","menulist-textfield","menutext","message-box","middle","min-intrinsic","mix","mongolian","monospace","move","multiple","myanmar","n-resize","narrower","ne-resize","nesw-resize","no-close-quote","no-drop","no-open-quote","no-repeat","none","normal","not-allowed","nowrap","ns-resize","numbers","numeric","nw-resize","nwse-resize","oblique","octal","open-quote","optimizeLegibility","optimizeSpeed","oriya","oromo","outset","outside","outside-shape","overlay","overline","padding","padding-box","painted","page","paused","persian","perspective","plus-darker","plus-lighter","pointer","polygon","portrait","pre","pre-line","pre-wrap","preserve-3d","progress","push-button","radial-gradient","radio","read-only","read-write","read-write-plaintext-only","rectangle","region","relative","repeat","repeating-linear-gradient","repeating-radial-gradient","repeat-x","repeat-y","reset","reverse","rgb","rgba","ridge","right","rotate","rotate3d","rotateX","rotateY","rotateZ","round","row-resize","rtl","run-in","running","s-resize","sans-serif","scale","scale3d","scaleX","scaleY","scaleZ","scroll","scrollbar","se-resize","searchfield","searchfield-cancel-button","searchfield-decoration","searchfield-results-button","searchfield-results-decoration","semi-condensed","semi-expanded","separate","serif","show","sidama","simp-chinese-formal","simp-chinese-informal","single","skew","skewX","skewY","skip-white-space","slide","slider-horizontal","slider-vertical","sliderthumb-horizontal","sliderthumb-vertical","slow","small","small-caps","small-caption","smaller","solid","somali","source-atop","source-in","source-out","source-over","space","spell-out","square","square-button","start","static","status-bar","stretch","stroke","sub","subpixel-antialiased","super","sw-resize","symbolic","symbols","table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row","table-row-group","tamil","telugu","text","text-bottom","text-top","textarea","textfield","thai","thick","thin","threeddarkshadow","threedface","threedhighlight","threedlightshadow","threedshadow","tibetan","tigre","tigrinya-er","tigrinya-er-abegede","tigrinya-et","tigrinya-et-abegede","to","top","trad-chinese-formal","trad-chinese-informal","translate","translate3d","translateX","translateY","translateZ","transparent","ultra-condensed","ultra-expanded","underline","up","upper-alpha","upper-armenian","upper-greek","upper-hexadecimal","upper-latin","upper-norwegian","upper-roman","uppercase","urdu","url","var","vertical","vertical-text","visible","visibleFill","visiblePainted","visibleStroke","visual","w-resize","wait","wave","wider","window","windowframe","windowtext","words","x-large","x-small","xor","xx-large","xx-small","bicubic","optimizespeed","grayscale","row","row-reverse","wrap","wrap-reverse","column-reverse","flex-start","flex-end","space-between","space-around"]; var wordOperatorKeywords_ = ["in","and","or","not","is not","is a","is","isnt","defined","if unless"], blockKeywords_ = ["for","if","else","unless", "from", "to"], commonAtoms_ = ["null","true","false","href","title","type","not-allowed","readonly","disabled"], commonDef_ = ["@font-face", "@keyframes", "@media", "@viewport", "@page", "@host", "@supports", "@block", "@css"]; var hintWords = tagKeywords_.concat(documentTypes_,mediaTypes_,mediaFeatures_, propertyKeywords_,nonStandardPropertyKeywords_, colorKeywords_,valueKeywords_,fontProperties_, wordOperatorKeywords_,blockKeywords_, commonAtoms_,commonDef_); function wordRegexp(words) { words = words.sort(function(a,b){return b > a;}); return new RegExp("^((" + words.join(")|(") + "))\\b"); } function keySet(array) { var keys = {}; for (var i = 0; i < array.length; ++i) keys[array[i]] = true; return keys; } function escapeRegExp(text) { return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); } CodeMirror.registerHelper("hintWords", "stylus", hintWords); CodeMirror.defineMIME("text/x-styl", "stylus"); }); plugins/file-manager-advanced/application/library/codemirror/mode/swift/index.html000064400000004045147176754550024540 0ustar00 CodeMirror: Swift mode

Swift mode

A simple mode for Swift

MIME types defined: text/x-swift (Swift code)

plugins/file-manager-advanced/application/library/codemirror/mode/swift/swift.js000064400000014430147176754550024234 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE // Swift mode created by Michael Kaminsky https://github.com/mkaminsky11 (function(mod) { if (typeof exports == "object" && typeof module == "object") mod(require("../../lib/codemirror")) else if (typeof define == "function" && define.amd) define(["../../lib/codemirror"], mod) else mod(CodeMirror) })(function(CodeMirror) { "use strict" function wordSet(words) { var set = {} for (var i = 0; i < words.length; i++) set[words[i]] = true return set } var keywords = wordSet(["var","let","class","deinit","enum","extension","func","import","init","protocol", "static","struct","subscript","typealias","as","dynamicType","is","new","super", "self","Self","Type","__COLUMN__","__FILE__","__FUNCTION__","__LINE__","break","case", "continue","default","do","else","fallthrough","if","in","for","return","switch", "where","while","associativity","didSet","get","infix","inout","left","mutating", "none","nonmutating","operator","override","postfix","precedence","prefix","right", "set","unowned","weak","willSet"]) var definingKeywords = wordSet(["var","let","class","enum","extension","func","import","protocol","struct", "typealias","dynamicType","for"]) var atoms = wordSet(["Infinity","NaN","undefined","null","true","false","on","off","yes","no","nil","null", "this","super"]) var types = wordSet(["String","bool","int","string","double","Double","Int","Float","float","public", "private","extension"]) var operators = "+-/*%=|&<>#" var punc = ";,.(){}[]" var number = /^-?(?:(?:[\d_]+\.[_\d]*|\.[_\d]+|0o[0-7_\.]+|0b[01_\.]+)(?:e-?[\d_]+)?|0x[\d_a-f\.]+(?:p-?[\d_]+)?)/i var identifier = /^[_A-Za-z$][_A-Za-z$0-9]*/ var property = /^[@\.][_A-Za-z$][_A-Za-z$0-9]*/ var regexp = /^\/(?!\s)(?:\/\/)?(?:\\.|[^\/])+\// function tokenBase(stream, state, prev) { if (stream.sol()) state.indented = stream.indentation() if (stream.eatSpace()) return null var ch = stream.peek() if (ch == "/") { if (stream.match("//")) { stream.skipToEnd() return "comment" } if (stream.match("/*")) { state.tokenize.push(tokenComment) return tokenComment(stream, state) } if (stream.match(regexp)) return "string-2" } if (operators.indexOf(ch) > -1) { stream.next() return "operator" } if (punc.indexOf(ch) > -1) { stream.next() stream.match("..") return "punctuation" } if (ch == '"' || ch == "'") { stream.next() var tokenize = tokenString(ch) state.tokenize.push(tokenize) return tokenize(stream, state) } if (stream.match(number)) return "number" if (stream.match(property)) return "property" if (stream.match(identifier)) { var ident = stream.current() if (keywords.hasOwnProperty(ident)) { if (definingKeywords.hasOwnProperty(ident)) state.prev = "define" return "keyword" } if (types.hasOwnProperty(ident)) return "variable-2" if (atoms.hasOwnProperty(ident)) return "atom" if (prev == "define") return "def" return "variable" } stream.next() return null } function tokenUntilClosingParen() { var depth = 0 return function(stream, state, prev) { var inner = tokenBase(stream, state, prev) if (inner == "punctuation") { if (stream.current() == "(") ++depth else if (stream.current() == ")") { if (depth == 0) { stream.backUp(1) state.tokenize.pop() return state.tokenize[state.tokenize.length - 1](stream, state) } else --depth } } return inner } } function tokenString(quote) { return function(stream, state) { var ch, escaped = false while (ch = stream.next()) { if (escaped) { if (ch == "(") { state.tokenize.push(tokenUntilClosingParen()) return "string" } escaped = false } else if (ch == quote) { break } else { escaped = ch == "\\" } } state.tokenize.pop() return "string" } } function tokenComment(stream, state) { stream.match(/^(?:[^*]|\*(?!\/))*/) if (stream.match("*/")) state.tokenize.pop() return "comment" } function Context(prev, align, indented) { this.prev = prev this.align = align this.indented = indented } function pushContext(state, stream) { var align = stream.match(/^\s*($|\/[\/\*])/, false) ? null : stream.column() + 1 state.context = new Context(state.context, align, state.indented) } function popContext(state) { if (state.context) { state.indented = state.context.indented state.context = state.context.prev } } CodeMirror.defineMode("swift", function(config) { return { startState: function() { return { prev: null, context: null, indented: 0, tokenize: [] } }, token: function(stream, state) { var prev = state.prev state.prev = null var tokenize = state.tokenize[state.tokenize.length - 1] || tokenBase var style = tokenize(stream, state, prev) if (!style || style == "comment") state.prev = prev else if (!state.prev) state.prev = style if (style == "punctuation") { var bracket = /[\(\[\{]|([\]\)\}])/.exec(stream.current()) if (bracket) (bracket[1] ? popContext : pushContext)(state, stream) } return style }, indent: function(state, textAfter) { var cx = state.context if (!cx) return 0 var closing = /^[\]\}\)]/.test(textAfter) if (cx.align != null) return cx.align - (closing ? 1 : 0) return cx.indented + (closing ? 0 : config.indentUnit) }, electricInput: /^\s*[\)\}\]]$/, lineComment: "//", blockCommentStart: "/*", blockCommentEnd: "*/" } }) CodeMirror.defineMIME("text/x-swift","swift") }); plugins/file-manager-advanced/application/library/codemirror/mode/tcl/index.html000064400000014231147176754550024164 0ustar00 CodeMirror: Tcl mode

Tcl mode

MIME types defined: text/x-tcl.

plugins/file-manager-advanced/application/library/codemirror/mode/tcl/tcl.js000064400000011470147176754550023311 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE //tcl mode by Ford_Lawnmower :: Based on Velocity mode by Steve O'Hara (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("tcl", function() { function parseWords(str) { var obj = {}, words = str.split(" "); for (var i = 0; i < words.length; ++i) obj[words[i]] = true; return obj; } var keywords = parseWords("Tcl safe after append array auto_execok auto_import auto_load " + "auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror " + "binary break catch cd close concat continue dde eof encoding error " + "eval exec exit expr fblocked fconfigure fcopy file fileevent filename " + "filename flush for foreach format gets glob global history http if " + "incr info interp join lappend lindex linsert list llength load lrange " + "lreplace lsearch lset lsort memory msgcat namespace open package parray " + "pid pkg::create pkg_mkIndex proc puts pwd re_syntax read regex regexp " + "registry regsub rename resource return scan seek set socket source split " + "string subst switch tcl_endOfWord tcl_findLibrary tcl_startOfNextWord " + "tcl_wordBreakAfter tcl_startOfPreviousWord tcl_wordBreakBefore tcltest " + "tclvars tell time trace unknown unset update uplevel upvar variable " + "vwait"); var functions = parseWords("if elseif else and not or eq ne in ni for foreach while switch"); var isOperatorChar = /[+\-*&%=<>!?^\/\|]/; function chain(stream, state, f) { state.tokenize = f; return f(stream, state); } function tokenBase(stream, state) { var beforeParams = state.beforeParams; state.beforeParams = false; var ch = stream.next(); if ((ch == '"' || ch == "'") && state.inParams) { return chain(stream, state, tokenString(ch)); } else if (/[\[\]{}\(\),;\.]/.test(ch)) { if (ch == "(" && beforeParams) state.inParams = true; else if (ch == ")") state.inParams = false; return null; } else if (/\d/.test(ch)) { stream.eatWhile(/[\w\.]/); return "number"; } else if (ch == "#") { if (stream.eat("*")) return chain(stream, state, tokenComment); if (ch == "#" && stream.match(/ *\[ *\[/)) return chain(stream, state, tokenUnparsed); stream.skipToEnd(); return "comment"; } else if (ch == '"') { stream.skipTo(/"/); return "comment"; } else if (ch == "$") { stream.eatWhile(/[$_a-z0-9A-Z\.{:]/); stream.eatWhile(/}/); state.beforeParams = true; return "builtin"; } else if (isOperatorChar.test(ch)) { stream.eatWhile(isOperatorChar); return "comment"; } else { stream.eatWhile(/[\w\$_{}\xa1-\uffff]/); var word = stream.current().toLowerCase(); if (keywords && keywords.propertyIsEnumerable(word)) return "keyword"; if (functions && functions.propertyIsEnumerable(word)) { state.beforeParams = true; return "keyword"; } return null; } } function tokenString(quote) { return function(stream, state) { var escaped = false, next, end = false; while ((next = stream.next()) != null) { if (next == quote && !escaped) { end = true; break; } escaped = !escaped && next == "\\"; } if (end) state.tokenize = tokenBase; return "string"; }; } function tokenComment(stream, state) { var maybeEnd = false, ch; while (ch = stream.next()) { if (ch == "#" && maybeEnd) { state.tokenize = tokenBase; break; } maybeEnd = (ch == "*"); } return "comment"; } function tokenUnparsed(stream, state) { var maybeEnd = 0, ch; while (ch = stream.next()) { if (ch == "#" && maybeEnd == 2) { state.tokenize = tokenBase; break; } if (ch == "]") maybeEnd++; else if (ch != " ") maybeEnd = 0; } return "meta"; } return { startState: function() { return { tokenize: tokenBase, beforeParams: false, inParams: false }; }, token: function(stream, state) { if (stream.eatSpace()) return null; return state.tokenize(stream, state); } }; }); CodeMirror.defineMIME("text/x-tcl", "tcl"); }); plugins/file-manager-advanced/application/library/codemirror/mode/textile/index.html000064400000010373147176754550025063 0ustar00 CodeMirror: Textile mode

Textile mode

MIME types defined: text/x-textile.

Parsing/Highlighting Tests: normal, verbose.

plugins/file-manager-advanced/application/library/codemirror/mode/textile/test.js000064400000022335147176754550024404 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function() { var mode = CodeMirror.getMode({tabSize: 4}, 'textile'); function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } MT('simpleParagraphs', 'Some text.', '', 'Some more text.'); /* * Phrase Modifiers */ MT('em', 'foo [em _bar_]'); MT('emBoogus', 'code_mirror'); MT('strong', 'foo [strong *bar*]'); MT('strongBogus', '3 * 3 = 9'); MT('italic', 'foo [em __bar__]'); MT('italicBogus', 'code__mirror'); MT('bold', 'foo [strong **bar**]'); MT('boldBogus', '3 ** 3 = 27'); MT('simpleLink', '[link "CodeMirror":http://codemirror.net]'); MT('referenceLink', '[link "CodeMirror":code_mirror]', 'Normal Text.', '[link [[code_mirror]]http://codemirror.net]'); MT('footCite', 'foo bar[qualifier [[1]]]'); MT('footCiteBogus', 'foo bar[[1a2]]'); MT('special-characters', 'Registered [tag (r)], ' + 'Trademark [tag (tm)], and ' + 'Copyright [tag (c)] 2008'); MT('cite', "A book is [keyword ??The Count of Monte Cristo??] by Dumas."); MT('additionAndDeletion', 'The news networks declared [negative -Al Gore-] ' + '[positive +George W. Bush+] the winner in Florida.'); MT('subAndSup', 'f(x, n) = log [builtin ~4~] x [builtin ^n^]'); MT('spanAndCode', 'A [quote %span element%] and [atom @code element@]'); MT('spanBogus', 'Percentage 25% is not a span.'); MT('citeBogus', 'Question? is not a citation.'); MT('codeBogus', 'user@example.com'); MT('subBogus', '~username'); MT('supBogus', 'foo ^ bar'); MT('deletionBogus', '3 - 3 = 0'); MT('additionBogus', '3 + 3 = 6'); MT('image', 'An image: [string !http://www.example.com/image.png!]'); MT('imageWithAltText', 'An image: [string !http://www.example.com/image.png (Alt Text)!]'); MT('imageWithUrl', 'An image: [string !http://www.example.com/image.png!:http://www.example.com/]'); /* * Headers */ MT('h1', '[header&header-1 h1. foo]'); MT('h2', '[header&header-2 h2. foo]'); MT('h3', '[header&header-3 h3. foo]'); MT('h4', '[header&header-4 h4. foo]'); MT('h5', '[header&header-5 h5. foo]'); MT('h6', '[header&header-6 h6. foo]'); MT('h7Bogus', 'h7. foo'); MT('multipleHeaders', '[header&header-1 h1. Heading 1]', '', 'Some text.', '', '[header&header-2 h2. Heading 2]', '', 'More text.'); MT('h1inline', '[header&header-1 h1. foo ][header&header-1&em _bar_][header&header-1 baz]'); /* * Lists */ MT('ul', 'foo', 'bar', '', '[variable-2 * foo]', '[variable-2 * bar]'); MT('ulNoBlank', 'foo', 'bar', '[variable-2 * foo]', '[variable-2 * bar]'); MT('ol', 'foo', 'bar', '', '[variable-2 # foo]', '[variable-2 # bar]'); MT('olNoBlank', 'foo', 'bar', '[variable-2 # foo]', '[variable-2 # bar]'); MT('ulFormatting', '[variable-2 * ][variable-2&em _foo_][variable-2 bar]', '[variable-2 * ][variable-2&strong *][variable-2&em&strong _foo_]' + '[variable-2&strong *][variable-2 bar]', '[variable-2 * ][variable-2&strong *foo*][variable-2 bar]'); MT('olFormatting', '[variable-2 # ][variable-2&em _foo_][variable-2 bar]', '[variable-2 # ][variable-2&strong *][variable-2&em&strong _foo_]' + '[variable-2&strong *][variable-2 bar]', '[variable-2 # ][variable-2&strong *foo*][variable-2 bar]'); MT('ulNested', '[variable-2 * foo]', '[variable-3 ** bar]', '[keyword *** bar]', '[variable-2 **** bar]', '[variable-3 ** bar]'); MT('olNested', '[variable-2 # foo]', '[variable-3 ## bar]', '[keyword ### bar]', '[variable-2 #### bar]', '[variable-3 ## bar]'); MT('ulNestedWithOl', '[variable-2 * foo]', '[variable-3 ## bar]', '[keyword *** bar]', '[variable-2 #### bar]', '[variable-3 ** bar]'); MT('olNestedWithUl', '[variable-2 # foo]', '[variable-3 ** bar]', '[keyword ### bar]', '[variable-2 **** bar]', '[variable-3 ## bar]'); MT('definitionList', '[number - coffee := Hot ][number&em _and_][number black]', '', 'Normal text.'); MT('definitionListSpan', '[number - coffee :=]', '', '[number Hot ][number&em _and_][number black =:]', '', 'Normal text.'); MT('boo', '[number - dog := woof woof]', '[number - cat := meow meow]', '[number - whale :=]', '[number Whale noises.]', '', '[number Also, ][number&em _splashing_][number . =:]'); /* * Attributes */ MT('divWithAttribute', '[punctuation div][punctuation&attribute (#my-id)][punctuation . foo bar]'); MT('divWithAttributeAnd2emRightPadding', '[punctuation div][punctuation&attribute (#my-id)((][punctuation . foo bar]'); MT('divWithClassAndId', '[punctuation div][punctuation&attribute (my-class#my-id)][punctuation . foo bar]'); MT('paragraphWithCss', 'p[attribute {color:red;}]. foo bar'); MT('paragraphNestedStyles', 'p. [strong *foo ][strong&em _bar_][strong *]'); MT('paragraphWithLanguage', 'p[attribute [[fr]]]. Parlez-vous français?'); MT('paragraphLeftAlign', 'p[attribute <]. Left'); MT('paragraphRightAlign', 'p[attribute >]. Right'); MT('paragraphRightAlign', 'p[attribute =]. Center'); MT('paragraphJustified', 'p[attribute <>]. Justified'); MT('paragraphWithLeftIndent1em', 'p[attribute (]. Left'); MT('paragraphWithRightIndent1em', 'p[attribute )]. Right'); MT('paragraphWithLeftIndent2em', 'p[attribute ((]. Left'); MT('paragraphWithRightIndent2em', 'p[attribute ))]. Right'); MT('paragraphWithLeftIndent3emRightIndent2em', 'p[attribute ((())]. Right'); MT('divFormatting', '[punctuation div. ][punctuation&strong *foo ]' + '[punctuation&strong&em _bar_][punctuation&strong *]'); MT('phraseModifierAttributes', 'p[attribute (my-class)]. This is a paragraph that has a class and' + ' this [em _][em&attribute (#special-phrase)][em emphasized phrase_]' + ' has an id.'); MT('linkWithClass', '[link "(my-class). This is a link with class":http://redcloth.org]'); /* * Layouts */ MT('paragraphLayouts', 'p. This is one paragraph.', '', 'p. This is another.'); MT('div', '[punctuation div. foo bar]'); MT('pre', '[operator pre. Text]'); MT('bq.', '[bracket bq. foo bar]', '', 'Normal text.'); MT('footnote', '[variable fn123. foo ][variable&strong *bar*]'); /* * Spanning Layouts */ MT('bq..ThenParagraph', '[bracket bq.. foo bar]', '', '[bracket More quote.]', 'p. Normal Text'); MT('bq..ThenH1', '[bracket bq.. foo bar]', '', '[bracket More quote.]', '[header&header-1 h1. Header Text]'); MT('bc..ThenParagraph', '[atom bc.. # Some ruby code]', '[atom obj = {foo: :bar}]', '[atom puts obj]', '', '[atom obj[[:love]] = "*love*"]', '[atom puts obj.love.upcase]', '', 'p. Normal text.'); MT('fn1..ThenParagraph', '[variable fn1.. foo bar]', '', '[variable More.]', 'p. Normal Text'); MT('pre..ThenParagraph', '[operator pre.. foo bar]', '', '[operator More.]', 'p. Normal Text'); /* * Tables */ MT('table', '[variable-3&operator |_. name |_. age|]', '[variable-3 |][variable-3&strong *Walter*][variable-3 | 5 |]', '[variable-3 |Florence| 6 |]', '', 'p. Normal text.'); MT('tableWithAttributes', '[variable-3&operator |_. name |_. age|]', '[variable-3 |][variable-3&attribute /2.][variable-3 Jim |]', '[variable-3 |][variable-3&attribute \\2{color: red}.][variable-3 Sam |]'); /* * HTML */ MT('html', '[comment
]', '[comment
]', '', '[header&header-1 h1. Welcome]', '', '[variable-2 * Item one]', '[variable-2 * Item two]', '', '[comment Example]', '', '[comment
]', '[comment
]'); MT('inlineHtml', 'I can use HTML directly in my [comment Textile].'); /* * No-Textile */ MT('notextile', '[string-2 notextile. *No* formatting]'); MT('notextileInline', 'Use [string-2 ==*asterisks*==] for [strong *strong*] text.'); MT('notextileWithPre', '[operator pre. *No* formatting]'); MT('notextileWithSpanningPre', '[operator pre.. *No* formatting]', '', '[operator *No* formatting]'); /* Only toggling phrases between non-word chars. */ MT('phrase-in-word', 'foo_bar_baz'); MT('phrase-non-word', '[negative -x-] aaa-bbb ccc-ddd [negative -eee-] fff [negative -ggg-]'); MT('phrase-lone-dash', 'foo - bar - baz'); })(); plugins/file-manager-advanced/application/library/codemirror/mode/textile/textile.js000064400000033022147176754550025076 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") { // CommonJS mod(require("../../lib/codemirror")); } else if (typeof define == "function" && define.amd) { // AMD define(["../../lib/codemirror"], mod); } else { // Plain browser env mod(CodeMirror); } })(function(CodeMirror) { "use strict"; var TOKEN_STYLES = { addition: "positive", attributes: "attribute", bold: "strong", cite: "keyword", code: "atom", definitionList: "number", deletion: "negative", div: "punctuation", em: "em", footnote: "variable", footCite: "qualifier", header: "header", html: "comment", image: "string", italic: "em", link: "link", linkDefinition: "link", list1: "variable-2", list2: "variable-3", list3: "keyword", notextile: "string-2", pre: "operator", p: "property", quote: "bracket", span: "quote", specialChar: "tag", strong: "strong", sub: "builtin", sup: "builtin", table: "variable-3", tableHeading: "operator" }; function startNewLine(stream, state) { state.mode = Modes.newLayout; state.tableHeading = false; if (state.layoutType === "definitionList" && state.spanningLayout && stream.match(RE("definitionListEnd"), false)) state.spanningLayout = false; } function handlePhraseModifier(stream, state, ch) { if (ch === "_") { if (stream.eat("_")) return togglePhraseModifier(stream, state, "italic", /__/, 2); else return togglePhraseModifier(stream, state, "em", /_/, 1); } if (ch === "*") { if (stream.eat("*")) { return togglePhraseModifier(stream, state, "bold", /\*\*/, 2); } return togglePhraseModifier(stream, state, "strong", /\*/, 1); } if (ch === "[") { if (stream.match(/\d+\]/)) state.footCite = true; return tokenStyles(state); } if (ch === "(") { var spec = stream.match(/^(r|tm|c)\)/); if (spec) return tokenStylesWith(state, TOKEN_STYLES.specialChar); } if (ch === "<" && stream.match(/(\w+)[^>]+>[^<]+<\/\1>/)) return tokenStylesWith(state, TOKEN_STYLES.html); if (ch === "?" && stream.eat("?")) return togglePhraseModifier(stream, state, "cite", /\?\?/, 2); if (ch === "=" && stream.eat("=")) return togglePhraseModifier(stream, state, "notextile", /==/, 2); if (ch === "-" && !stream.eat("-")) return togglePhraseModifier(stream, state, "deletion", /-/, 1); if (ch === "+") return togglePhraseModifier(stream, state, "addition", /\+/, 1); if (ch === "~") return togglePhraseModifier(stream, state, "sub", /~/, 1); if (ch === "^") return togglePhraseModifier(stream, state, "sup", /\^/, 1); if (ch === "%") return togglePhraseModifier(stream, state, "span", /%/, 1); if (ch === "@") return togglePhraseModifier(stream, state, "code", /@/, 1); if (ch === "!") { var type = togglePhraseModifier(stream, state, "image", /(?:\([^\)]+\))?!/, 1); stream.match(/^:\S+/); // optional Url portion return type; } return tokenStyles(state); } function togglePhraseModifier(stream, state, phraseModifier, closeRE, openSize) { var charBefore = stream.pos > openSize ? stream.string.charAt(stream.pos - openSize - 1) : null; var charAfter = stream.peek(); if (state[phraseModifier]) { if ((!charAfter || /\W/.test(charAfter)) && charBefore && /\S/.test(charBefore)) { var type = tokenStyles(state); state[phraseModifier] = false; return type; } } else if ((!charBefore || /\W/.test(charBefore)) && charAfter && /\S/.test(charAfter) && stream.match(new RegExp("^.*\\S" + closeRE.source + "(?:\\W|$)"), false)) { state[phraseModifier] = true; state.mode = Modes.attributes; } return tokenStyles(state); }; function tokenStyles(state) { var disabled = textileDisabled(state); if (disabled) return disabled; var styles = []; if (state.layoutType) styles.push(TOKEN_STYLES[state.layoutType]); styles = styles.concat(activeStyles( state, "addition", "bold", "cite", "code", "deletion", "em", "footCite", "image", "italic", "link", "span", "strong", "sub", "sup", "table", "tableHeading")); if (state.layoutType === "header") styles.push(TOKEN_STYLES.header + "-" + state.header); return styles.length ? styles.join(" ") : null; } function textileDisabled(state) { var type = state.layoutType; switch(type) { case "notextile": case "code": case "pre": return TOKEN_STYLES[type]; default: if (state.notextile) return TOKEN_STYLES.notextile + (type ? (" " + TOKEN_STYLES[type]) : ""); return null; } } function tokenStylesWith(state, extraStyles) { var disabled = textileDisabled(state); if (disabled) return disabled; var type = tokenStyles(state); if (extraStyles) return type ? (type + " " + extraStyles) : extraStyles; else return type; } function activeStyles(state) { var styles = []; for (var i = 1; i < arguments.length; ++i) { if (state[arguments[i]]) styles.push(TOKEN_STYLES[arguments[i]]); } return styles; } function blankLine(state) { var spanningLayout = state.spanningLayout, type = state.layoutType; for (var key in state) if (state.hasOwnProperty(key)) delete state[key]; state.mode = Modes.newLayout; if (spanningLayout) { state.layoutType = type; state.spanningLayout = true; } } var REs = { cache: {}, single: { bc: "bc", bq: "bq", definitionList: /- [^(?::=)]+:=+/, definitionListEnd: /.*=:\s*$/, div: "div", drawTable: /\|.*\|/, foot: /fn\d+/, header: /h[1-6]/, html: /\s*<(?:\/)?(\w+)(?:[^>]+)?>(?:[^<]+<\/\1>)?/, link: /[^"]+":\S/, linkDefinition: /\[[^\s\]]+\]\S+/, list: /(?:#+|\*+)/, notextile: "notextile", para: "p", pre: "pre", table: "table", tableCellAttributes: /[\/\\]\d+/, tableHeading: /\|_\./, tableText: /[^"_\*\[\(\?\+~\^%@|-]+/, text: /[^!"_=\*\[\(<\?\+~\^%@-]+/ }, attributes: { align: /(?:<>|<|>|=)/, selector: /\([^\(][^\)]+\)/, lang: /\[[^\[\]]+\]/, pad: /(?:\(+|\)+){1,2}/, css: /\{[^\}]+\}/ }, createRe: function(name) { switch (name) { case "drawTable": return REs.makeRe("^", REs.single.drawTable, "$"); case "html": return REs.makeRe("^", REs.single.html, "(?:", REs.single.html, ")*", "$"); case "linkDefinition": return REs.makeRe("^", REs.single.linkDefinition, "$"); case "listLayout": return REs.makeRe("^", REs.single.list, RE("allAttributes"), "*\\s+"); case "tableCellAttributes": return REs.makeRe("^", REs.choiceRe(REs.single.tableCellAttributes, RE("allAttributes")), "+\\."); case "type": return REs.makeRe("^", RE("allTypes")); case "typeLayout": return REs.makeRe("^", RE("allTypes"), RE("allAttributes"), "*\\.\\.?", "(\\s+|$)"); case "attributes": return REs.makeRe("^", RE("allAttributes"), "+"); case "allTypes": return REs.choiceRe(REs.single.div, REs.single.foot, REs.single.header, REs.single.bc, REs.single.bq, REs.single.notextile, REs.single.pre, REs.single.table, REs.single.para); case "allAttributes": return REs.choiceRe(REs.attributes.selector, REs.attributes.css, REs.attributes.lang, REs.attributes.align, REs.attributes.pad); default: return REs.makeRe("^", REs.single[name]); } }, makeRe: function() { var pattern = ""; for (var i = 0; i < arguments.length; ++i) { var arg = arguments[i]; pattern += (typeof arg === "string") ? arg : arg.source; } return new RegExp(pattern); }, choiceRe: function() { var parts = [arguments[0]]; for (var i = 1; i < arguments.length; ++i) { parts[i * 2 - 1] = "|"; parts[i * 2] = arguments[i]; } parts.unshift("(?:"); parts.push(")"); return REs.makeRe.apply(null, parts); } }; function RE(name) { return (REs.cache[name] || (REs.cache[name] = REs.createRe(name))); } var Modes = { newLayout: function(stream, state) { if (stream.match(RE("typeLayout"), false)) { state.spanningLayout = false; return (state.mode = Modes.blockType)(stream, state); } var newMode; if (!textileDisabled(state)) { if (stream.match(RE("listLayout"), false)) newMode = Modes.list; else if (stream.match(RE("drawTable"), false)) newMode = Modes.table; else if (stream.match(RE("linkDefinition"), false)) newMode = Modes.linkDefinition; else if (stream.match(RE("definitionList"))) newMode = Modes.definitionList; else if (stream.match(RE("html"), false)) newMode = Modes.html; } return (state.mode = (newMode || Modes.text))(stream, state); }, blockType: function(stream, state) { var match, type; state.layoutType = null; if (match = stream.match(RE("type"))) type = match[0]; else return (state.mode = Modes.text)(stream, state); if (match = type.match(RE("header"))) { state.layoutType = "header"; state.header = parseInt(match[0][1]); } else if (type.match(RE("bq"))) { state.layoutType = "quote"; } else if (type.match(RE("bc"))) { state.layoutType = "code"; } else if (type.match(RE("foot"))) { state.layoutType = "footnote"; } else if (type.match(RE("notextile"))) { state.layoutType = "notextile"; } else if (type.match(RE("pre"))) { state.layoutType = "pre"; } else if (type.match(RE("div"))) { state.layoutType = "div"; } else if (type.match(RE("table"))) { state.layoutType = "table"; } state.mode = Modes.attributes; return tokenStyles(state); }, text: function(stream, state) { if (stream.match(RE("text"))) return tokenStyles(state); var ch = stream.next(); if (ch === '"') return (state.mode = Modes.link)(stream, state); return handlePhraseModifier(stream, state, ch); }, attributes: function(stream, state) { state.mode = Modes.layoutLength; if (stream.match(RE("attributes"))) return tokenStylesWith(state, TOKEN_STYLES.attributes); else return tokenStyles(state); }, layoutLength: function(stream, state) { if (stream.eat(".") && stream.eat(".")) state.spanningLayout = true; state.mode = Modes.text; return tokenStyles(state); }, list: function(stream, state) { var match = stream.match(RE("list")); state.listDepth = match[0].length; var listMod = (state.listDepth - 1) % 3; if (!listMod) state.layoutType = "list1"; else if (listMod === 1) state.layoutType = "list2"; else state.layoutType = "list3"; state.mode = Modes.attributes; return tokenStyles(state); }, link: function(stream, state) { state.mode = Modes.text; if (stream.match(RE("link"))) { stream.match(/\S+/); return tokenStylesWith(state, TOKEN_STYLES.link); } return tokenStyles(state); }, linkDefinition: function(stream, state) { stream.skipToEnd(); return tokenStylesWith(state, TOKEN_STYLES.linkDefinition); }, definitionList: function(stream, state) { stream.match(RE("definitionList")); state.layoutType = "definitionList"; if (stream.match(/\s*$/)) state.spanningLayout = true; else state.mode = Modes.attributes; return tokenStyles(state); }, html: function(stream, state) { stream.skipToEnd(); return tokenStylesWith(state, TOKEN_STYLES.html); }, table: function(stream, state) { state.layoutType = "table"; return (state.mode = Modes.tableCell)(stream, state); }, tableCell: function(stream, state) { if (stream.match(RE("tableHeading"))) state.tableHeading = true; else stream.eat("|"); state.mode = Modes.tableCellAttributes; return tokenStyles(state); }, tableCellAttributes: function(stream, state) { state.mode = Modes.tableText; if (stream.match(RE("tableCellAttributes"))) return tokenStylesWith(state, TOKEN_STYLES.attributes); else return tokenStyles(state); }, tableText: function(stream, state) { if (stream.match(RE("tableText"))) return tokenStyles(state); if (stream.peek() === "|") { // end of cell state.mode = Modes.tableCell; return tokenStyles(state); } return handlePhraseModifier(stream, state, stream.next()); } }; CodeMirror.defineMode("textile", function() { return { startState: function() { return { mode: Modes.newLayout }; }, token: function(stream, state) { if (stream.sol()) startNewLine(stream, state); return state.mode(stream, state); }, blankLine: blankLine }; }); CodeMirror.defineMIME("text/x-textile", "textile"); }); plugins/file-manager-advanced/application/library/codemirror/mode/tiddlywiki/index.html000064400000010743147176754550025563 0ustar00 CodeMirror: TiddlyWiki mode

TiddlyWiki mode

TiddlyWiki mode supports a single configuration.

MIME types defined: text/x-tiddlywiki.

plugins/file-manager-advanced/application/library/codemirror/mode/tiddlywiki/tiddlywiki.css000064400000000334147176754550026450 0ustar00span.cm-underlined { text-decoration: underline; } span.cm-strikethrough { text-decoration: line-through; } span.cm-brace { color: #170; font-weight: bold; } span.cm-table { color: blue; font-weight: bold; } plugins/file-manager-advanced/application/library/codemirror/mode/tiddlywiki/tiddlywiki.js000064400000020476147176754550026305 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE /*** |''Name''|tiddlywiki.js| |''Description''|Enables TiddlyWikiy syntax highlighting using CodeMirror| |''Author''|PMario| |''Version''|0.1.7| |''Status''|''stable''| |''Source''|[[GitHub|https://github.com/pmario/CodeMirror2/blob/tw-syntax/mode/tiddlywiki]]| |''Documentation''|http://codemirror.tiddlyspace.com/| |''License''|[[MIT License|http://www.opensource.org/licenses/mit-license.php]]| |''CoreVersion''|2.5.0| |''Requires''|codemirror.js| |''Keywords''|syntax highlighting color code mirror codemirror| ! Info CoreVersion parameter is needed for TiddlyWiki only! ***/ (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("tiddlywiki", function () { // Tokenizer var textwords = {}; var keywords = { "allTags": true, "closeAll": true, "list": true, "newJournal": true, "newTiddler": true, "permaview": true, "saveChanges": true, "search": true, "slider": true, "tabs": true, "tag": true, "tagging": true, "tags": true, "tiddler": true, "timeline": true, "today": true, "version": true, "option": true, "with": true, "filter": true }; var isSpaceName = /[\w_\-]/i, reHR = /^\-\-\-\-+$/, //
reWikiCommentStart = /^\/\*\*\*$/, // /*** reWikiCommentStop = /^\*\*\*\/$/, // ***/ reBlockQuote = /^<<<$/, reJsCodeStart = /^\/\/\{\{\{$/, // //{{{ js block start reJsCodeStop = /^\/\/\}\}\}$/, // //}}} js stop reXmlCodeStart = /^$/, // xml block start reXmlCodeStop = /^$/, // xml stop reCodeBlockStart = /^\{\{\{$/, // {{{ TW text div block start reCodeBlockStop = /^\}\}\}$/, // }}} TW text stop reUntilCodeStop = /.*?\}\}\}/; function chain(stream, state, f) { state.tokenize = f; return f(stream, state); } function tokenBase(stream, state) { var sol = stream.sol(), ch = stream.peek(); state.block = false; // indicates the start of a code block. // check start of blocks if (sol && /[<\/\*{}\-]/.test(ch)) { if (stream.match(reCodeBlockStart)) { state.block = true; return chain(stream, state, twTokenCode); } if (stream.match(reBlockQuote)) return 'quote'; if (stream.match(reWikiCommentStart) || stream.match(reWikiCommentStop)) return 'comment'; if (stream.match(reJsCodeStart) || stream.match(reJsCodeStop) || stream.match(reXmlCodeStart) || stream.match(reXmlCodeStop)) return 'comment'; if (stream.match(reHR)) return 'hr'; } stream.next(); if (sol && /[\/\*!#;:>|]/.test(ch)) { if (ch == "!") { // tw header stream.skipToEnd(); return "header"; } if (ch == "*") { // tw list stream.eatWhile('*'); return "comment"; } if (ch == "#") { // tw numbered list stream.eatWhile('#'); return "comment"; } if (ch == ";") { // definition list, term stream.eatWhile(';'); return "comment"; } if (ch == ":") { // definition list, description stream.eatWhile(':'); return "comment"; } if (ch == ">") { // single line quote stream.eatWhile(">"); return "quote"; } if (ch == '|') return 'header'; } if (ch == '{' && stream.match(/\{\{/)) return chain(stream, state, twTokenCode); // rudimentary html:// file:// link matching. TW knows much more ... if (/[hf]/i.test(ch) && /[ti]/i.test(stream.peek()) && stream.match(/\b(ttps?|tp|ile):\/\/[\-A-Z0-9+&@#\/%?=~_|$!:,.;]*[A-Z0-9+&@#\/%=~_|$]/i)) return "link"; // just a little string indicator, don't want to have the whole string covered if (ch == '"') return 'string'; if (ch == '~') // _no_ CamelCase indicator should be bold return 'brace'; if (/[\[\]]/.test(ch) && stream.match(ch)) // check for [[..]] return 'brace'; if (ch == "@") { // check for space link. TODO fix @@...@@ highlighting stream.eatWhile(isSpaceName); return "link"; } if (/\d/.test(ch)) { // numbers stream.eatWhile(/\d/); return "number"; } if (ch == "/") { // tw invisible comment if (stream.eat("%")) { return chain(stream, state, twTokenComment); } else if (stream.eat("/")) { // return chain(stream, state, twTokenEm); } } if (ch == "_" && stream.eat("_")) // tw underline return chain(stream, state, twTokenUnderline); // strikethrough and mdash handling if (ch == "-" && stream.eat("-")) { // if strikethrough looks ugly, change CSS. if (stream.peek() != ' ') return chain(stream, state, twTokenStrike); // mdash if (stream.peek() == ' ') return 'brace'; } if (ch == "'" && stream.eat("'")) // tw bold return chain(stream, state, twTokenStrong); if (ch == "<" && stream.eat("<")) // tw macro return chain(stream, state, twTokenMacro); // core macro handling stream.eatWhile(/[\w\$_]/); return textwords.propertyIsEnumerable(stream.current()) ? "keyword" : null } // tw invisible comment function twTokenComment(stream, state) { var maybeEnd = false, ch; while (ch = stream.next()) { if (ch == "/" && maybeEnd) { state.tokenize = tokenBase; break; } maybeEnd = (ch == "%"); } return "comment"; } // tw strong / bold function twTokenStrong(stream, state) { var maybeEnd = false, ch; while (ch = stream.next()) { if (ch == "'" && maybeEnd) { state.tokenize = tokenBase; break; } maybeEnd = (ch == "'"); } return "strong"; } // tw code function twTokenCode(stream, state) { var sb = state.block; if (sb && stream.current()) { return "comment"; } if (!sb && stream.match(reUntilCodeStop)) { state.tokenize = tokenBase; return "comment"; } if (sb && stream.sol() && stream.match(reCodeBlockStop)) { state.tokenize = tokenBase; return "comment"; } stream.next(); return "comment"; } // tw em / italic function twTokenEm(stream, state) { var maybeEnd = false, ch; while (ch = stream.next()) { if (ch == "/" && maybeEnd) { state.tokenize = tokenBase; break; } maybeEnd = (ch == "/"); } return "em"; } // tw underlined text function twTokenUnderline(stream, state) { var maybeEnd = false, ch; while (ch = stream.next()) { if (ch == "_" && maybeEnd) { state.tokenize = tokenBase; break; } maybeEnd = (ch == "_"); } return "underlined"; } // tw strike through text looks ugly // change CSS if needed function twTokenStrike(stream, state) { var maybeEnd = false, ch; while (ch = stream.next()) { if (ch == "-" && maybeEnd) { state.tokenize = tokenBase; break; } maybeEnd = (ch == "-"); } return "strikethrough"; } // macro function twTokenMacro(stream, state) { if (stream.current() == '<<') { return 'macro'; } var ch = stream.next(); if (!ch) { state.tokenize = tokenBase; return null; } if (ch == ">") { if (stream.peek() == '>') { stream.next(); state.tokenize = tokenBase; return "macro"; } } stream.eatWhile(/[\w\$_]/); return keywords.propertyIsEnumerable(stream.current()) ? "keyword" : null } // Interface return { startState: function () { return {tokenize: tokenBase}; }, token: function (stream, state) { if (stream.eatSpace()) return null; var style = state.tokenize(stream, state); return style; } }; }); CodeMirror.defineMIME("text/x-tiddlywiki", "tiddlywiki"); }); plugins/file-manager-advanced/application/library/codemirror/mode/tiki/index.html000064400000003321147176754550024340 0ustar00 CodeMirror: Tiki wiki mode

Tiki wiki mode

plugins/file-manager-advanced/application/library/codemirror/mode/tiki/tiki.css000064400000000667147176754550024027 0ustar00.cm-tw-syntaxerror { color: #FFF; background-color: #900; } .cm-tw-deleted { text-decoration: line-through; } .cm-tw-header5 { font-weight: bold; } .cm-tw-listitem:first-child { /*Added first child to fix duplicate padding when highlighting*/ padding-left: 10px; } .cm-tw-box { border-top-width: 0px !important; border-style: solid; border-width: 1px; border-color: inherit; } .cm-tw-underline { text-decoration: underline; }plugins/file-manager-advanced/application/library/codemirror/mode/tiki/tiki.js000064400000020452147176754550023645 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode('tiki', function(config) { function inBlock(style, terminator, returnTokenizer) { return function(stream, state) { while (!stream.eol()) { if (stream.match(terminator)) { state.tokenize = inText; break; } stream.next(); } if (returnTokenizer) state.tokenize = returnTokenizer; return style; }; } function inLine(style) { return function(stream, state) { while(!stream.eol()) { stream.next(); } state.tokenize = inText; return style; }; } function inText(stream, state) { function chain(parser) { state.tokenize = parser; return parser(stream, state); } var sol = stream.sol(); var ch = stream.next(); //non start of line switch (ch) { //switch is generally much faster than if, so it is used here case "{": //plugin stream.eat("/"); stream.eatSpace(); stream.eatWhile(/[^\s\u00a0=\"\'\/?(}]/); state.tokenize = inPlugin; return "tag"; case "_": //bold if (stream.eat("_")) return chain(inBlock("strong", "__", inText)); break; case "'": //italics if (stream.eat("'")) return chain(inBlock("em", "''", inText)); break; case "(":// Wiki Link if (stream.eat("(")) return chain(inBlock("variable-2", "))", inText)); break; case "[":// Weblink return chain(inBlock("variable-3", "]", inText)); break; case "|": //table if (stream.eat("|")) return chain(inBlock("comment", "||")); break; case "-": if (stream.eat("=")) {//titleBar return chain(inBlock("header string", "=-", inText)); } else if (stream.eat("-")) {//deleted return chain(inBlock("error tw-deleted", "--", inText)); } break; case "=": //underline if (stream.match("==")) return chain(inBlock("tw-underline", "===", inText)); break; case ":": if (stream.eat(":")) return chain(inBlock("comment", "::")); break; case "^": //box return chain(inBlock("tw-box", "^")); break; case "~": //np if (stream.match("np~")) return chain(inBlock("meta", "~/np~")); break; } //start of line types if (sol) { switch (ch) { case "!": //header at start of line if (stream.match('!!!!!')) { return chain(inLine("header string")); } else if (stream.match('!!!!')) { return chain(inLine("header string")); } else if (stream.match('!!!')) { return chain(inLine("header string")); } else if (stream.match('!!')) { return chain(inLine("header string")); } else { return chain(inLine("header string")); } break; case "*": //unordered list line item, or
  • at start of line case "#": //ordered list line item, or
  • at start of line case "+": //ordered list line item, or
  • at start of line return chain(inLine("tw-listitem bracket")); break; } } //stream.eatWhile(/[&{]/); was eating up plugins, turned off to act less like html and more like tiki return null; } var indentUnit = config.indentUnit; // Return variables for tokenizers var pluginName, type; function inPlugin(stream, state) { var ch = stream.next(); var peek = stream.peek(); if (ch == "}") { state.tokenize = inText; //type = ch == ")" ? "endPlugin" : "selfclosePlugin"; inPlugin return "tag"; } else if (ch == "(" || ch == ")") { return "bracket"; } else if (ch == "=") { type = "equals"; if (peek == ">") { ch = stream.next(); peek = stream.peek(); } //here we detect values directly after equal character with no quotes if (!/[\'\"]/.test(peek)) { state.tokenize = inAttributeNoQuote(); } //end detect values return "operator"; } else if (/[\'\"]/.test(ch)) { state.tokenize = inAttribute(ch); return state.tokenize(stream, state); } else { stream.eatWhile(/[^\s\u00a0=\"\'\/?]/); return "keyword"; } } function inAttribute(quote) { return function(stream, state) { while (!stream.eol()) { if (stream.next() == quote) { state.tokenize = inPlugin; break; } } return "string"; }; } function inAttributeNoQuote() { return function(stream, state) { while (!stream.eol()) { var ch = stream.next(); var peek = stream.peek(); if (ch == " " || ch == "," || /[ )}]/.test(peek)) { state.tokenize = inPlugin; break; } } return "string"; }; } var curState, setStyle; function pass() { for (var i = arguments.length - 1; i >= 0; i--) curState.cc.push(arguments[i]); } function cont() { pass.apply(null, arguments); return true; } function pushContext(pluginName, startOfLine) { var noIndent = curState.context && curState.context.noIndent; curState.context = { prev: curState.context, pluginName: pluginName, indent: curState.indented, startOfLine: startOfLine, noIndent: noIndent }; } function popContext() { if (curState.context) curState.context = curState.context.prev; } function element(type) { if (type == "openPlugin") {curState.pluginName = pluginName; return cont(attributes, endplugin(curState.startOfLine));} else if (type == "closePlugin") { var err = false; if (curState.context) { err = curState.context.pluginName != pluginName; popContext(); } else { err = true; } if (err) setStyle = "error"; return cont(endcloseplugin(err)); } else if (type == "string") { if (!curState.context || curState.context.name != "!cdata") pushContext("!cdata"); if (curState.tokenize == inText) popContext(); return cont(); } else return cont(); } function endplugin(startOfLine) { return function(type) { if ( type == "selfclosePlugin" || type == "endPlugin" ) return cont(); if (type == "endPlugin") {pushContext(curState.pluginName, startOfLine); return cont();} return cont(); }; } function endcloseplugin(err) { return function(type) { if (err) setStyle = "error"; if (type == "endPlugin") return cont(); return pass(); }; } function attributes(type) { if (type == "keyword") {setStyle = "attribute"; return cont(attributes);} if (type == "equals") return cont(attvalue, attributes); return pass(); } function attvalue(type) { if (type == "keyword") {setStyle = "string"; return cont();} if (type == "string") return cont(attvaluemaybe); return pass(); } function attvaluemaybe(type) { if (type == "string") return cont(attvaluemaybe); else return pass(); } return { startState: function() { return {tokenize: inText, cc: [], indented: 0, startOfLine: true, pluginName: null, context: null}; }, token: function(stream, state) { if (stream.sol()) { state.startOfLine = true; state.indented = stream.indentation(); } if (stream.eatSpace()) return null; setStyle = type = pluginName = null; var style = state.tokenize(stream, state); if ((style || type) && style != "comment") { curState = state; while (true) { var comb = state.cc.pop() || element; if (comb(type || style)) break; } } state.startOfLine = false; return setStyle || style; }, indent: function(state, textAfter) { var context = state.context; if (context && context.noIndent) return 0; if (context && /^{\//.test(textAfter)) context = context.prev; while (context && !context.startOfLine) context = context.prev; if (context) return context.indent + indentUnit; else return 0; }, electricChars: "/" }; }); CodeMirror.defineMIME("text/tiki", "tiki"); }); plugins/file-manager-advanced/application/library/codemirror/mode/toml/index.html000064400000003460147176754550024357 0ustar00 CodeMirror: TOML Mode

    TOML Mode

    The TOML Mode

    Created by Forbes Lindesay.

    MIME type defined: text/x-toml.

    plugins/file-manager-advanced/application/library/codemirror/mode/toml/toml.js000064400000005521147176754550023673 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("toml", function () { return { startState: function () { return { inString: false, stringType: "", lhs: true, inArray: 0 }; }, token: function (stream, state) { //check for state changes if (!state.inString && ((stream.peek() == '"') || (stream.peek() == "'"))) { state.stringType = stream.peek(); stream.next(); // Skip quote state.inString = true; // Update state } if (stream.sol() && state.inArray === 0) { state.lhs = true; } //return state if (state.inString) { while (state.inString && !stream.eol()) { if (stream.peek() === state.stringType) { stream.next(); // Skip quote state.inString = false; // Clear flag } else if (stream.peek() === '\\') { stream.next(); stream.next(); } else { stream.match(/^.[^\\\"\']*/); } } return state.lhs ? "property string" : "string"; // Token style } else if (state.inArray && stream.peek() === ']') { stream.next(); state.inArray--; return 'bracket'; } else if (state.lhs && stream.peek() === '[' && stream.skipTo(']')) { stream.next();//skip closing ] // array of objects has an extra open & close [] if (stream.peek() === ']') stream.next(); return "atom"; } else if (stream.peek() === "#") { stream.skipToEnd(); return "comment"; } else if (stream.eatSpace()) { return null; } else if (state.lhs && stream.eatWhile(function (c) { return c != '=' && c != ' '; })) { return "property"; } else if (state.lhs && stream.peek() === "=") { stream.next(); state.lhs = false; return null; } else if (!state.lhs && stream.match(/^\d\d\d\d[\d\-\:\.T]*Z/)) { return 'atom'; //date } else if (!state.lhs && (stream.match('true') || stream.match('false'))) { return 'atom'; } else if (!state.lhs && stream.peek() === '[') { state.inArray++; stream.next(); return 'bracket'; } else if (!state.lhs && stream.match(/^\-?\d+(?:\.\d+)?/)) { return 'number'; } else if (!stream.eatSpace()) { stream.next(); } return null; } }; }); CodeMirror.defineMIME('text/x-toml', 'toml'); }); plugins/file-manager-advanced/application/library/codemirror/mode/tornado/index.html000064400000003413147176754550025050 0ustar00 CodeMirror: Tornado template mode

    Tornado template mode

    Mode for HTML with embedded Tornado template markup.

    MIME types defined: text/x-tornado

    plugins/file-manager-advanced/application/library/codemirror/mode/tornado/tornado.js000064400000004700147176754550025057 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed"), require("../../addon/mode/overlay")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror", "../htmlmixed/htmlmixed", "../../addon/mode/overlay"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("tornado:inner", function() { var keywords = ["and","as","assert","autoescape","block","break","class","comment","context", "continue","datetime","def","del","elif","else","end","escape","except", "exec","extends","false","finally","for","from","global","if","import","in", "include","is","json_encode","lambda","length","linkify","load","module", "none","not","or","pass","print","put","raise","raw","return","self","set", "squeeze","super","true","try","url_escape","while","with","without","xhtml_escape","yield"]; keywords = new RegExp("^((" + keywords.join(")|(") + "))\\b"); function tokenBase (stream, state) { stream.eatWhile(/[^\{]/); var ch = stream.next(); if (ch == "{") { if (ch = stream.eat(/\{|%|#/)) { state.tokenize = inTag(ch); return "tag"; } } } function inTag (close) { if (close == "{") { close = "}"; } return function (stream, state) { var ch = stream.next(); if ((ch == close) && stream.eat("}")) { state.tokenize = tokenBase; return "tag"; } if (stream.match(keywords)) { return "keyword"; } return close == "#" ? "comment" : "string"; }; } return { startState: function () { return {tokenize: tokenBase}; }, token: function (stream, state) { return state.tokenize(stream, state); } }; }); CodeMirror.defineMode("tornado", function(config) { var htmlBase = CodeMirror.getMode(config, "text/html"); var tornadoInner = CodeMirror.getMode(config, "tornado:inner"); return CodeMirror.overlayMode(htmlBase, tornadoInner); }); CodeMirror.defineMIME("text/x-tornado", "tornado"); }); plugins/file-manager-advanced/application/library/codemirror/mode/troff/index.html000064400000010561147176754550024524 0ustar00 CodeMirror: troff mode

    troff

    MIME types defined: troff.

    plugins/file-manager-advanced/application/library/codemirror/mode/troff/troff.js000064400000004530147176754550024204 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) define(["../../lib/codemirror"], mod); else mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode('troff', function() { var words = {}; function tokenBase(stream) { if (stream.eatSpace()) return null; var sol = stream.sol(); var ch = stream.next(); if (ch === '\\') { if (stream.match('fB') || stream.match('fR') || stream.match('fI') || stream.match('u') || stream.match('d') || stream.match('%') || stream.match('&')) { return 'string'; } if (stream.match('m[')) { stream.skipTo(']'); stream.next(); return 'string'; } if (stream.match('s+') || stream.match('s-')) { stream.eatWhile(/[\d-]/); return 'string'; } if (stream.match('\(') || stream.match('*\(')) { stream.eatWhile(/[\w-]/); return 'string'; } return 'string'; } if (sol && (ch === '.' || ch === '\'')) { if (stream.eat('\\') && stream.eat('\"')) { stream.skipToEnd(); return 'comment'; } } if (sol && ch === '.') { if (stream.match('B ') || stream.match('I ') || stream.match('R ')) { return 'attribute'; } if (stream.match('TH ') || stream.match('SH ') || stream.match('SS ') || stream.match('HP ')) { stream.skipToEnd(); return 'quote'; } if ((stream.match(/[A-Z]/) && stream.match(/[A-Z]/)) || (stream.match(/[a-z]/) && stream.match(/[a-z]/))) { return 'attribute'; } } stream.eatWhile(/[\w-]/); var cur = stream.current(); return words.hasOwnProperty(cur) ? words[cur] : null; } function tokenize(stream, state) { return (state.tokens[0] || tokenBase) (stream, state); }; return { startState: function() {return {tokens:[]};}, token: function(stream, state) { return tokenize(stream, state); } }; }); CodeMirror.defineMIME('text/troff', 'troff'); CodeMirror.defineMIME('text/x-troff', 'troff'); CodeMirror.defineMIME('application/x-troff', 'troff'); }); plugins/file-manager-advanced/application/library/codemirror/mode/ttcn/index.html000064400000006642147176754550024361 0ustar00 CodeMirror: TTCN mode

    TTCN example


    Language: Testing and Test Control Notation (TTCN)

    MIME types defined: text/x-ttcn, text/x-ttcn3, text/x-ttcnpp.


    The development of this mode has been sponsored by Ericsson .

    Coded by Asmelash Tsegay Gebretsadkan

    plugins/file-manager-advanced/application/library/codemirror/mode/ttcn/ttcn.js000064400000023653147176754550023673 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("ttcn", function(config, parserConfig) { var indentUnit = config.indentUnit, keywords = parserConfig.keywords || {}, builtin = parserConfig.builtin || {}, timerOps = parserConfig.timerOps || {}, portOps = parserConfig.portOps || {}, configOps = parserConfig.configOps || {}, verdictOps = parserConfig.verdictOps || {}, sutOps = parserConfig.sutOps || {}, functionOps = parserConfig.functionOps || {}, verdictConsts = parserConfig.verdictConsts || {}, booleanConsts = parserConfig.booleanConsts || {}, otherConsts = parserConfig.otherConsts || {}, types = parserConfig.types || {}, visibilityModifiers = parserConfig.visibilityModifiers || {}, templateMatch = parserConfig.templateMatch || {}, multiLineStrings = parserConfig.multiLineStrings, indentStatements = parserConfig.indentStatements !== false; var isOperatorChar = /[+\-*&@=<>!\/]/; var curPunc; function tokenBase(stream, state) { var ch = stream.next(); if (ch == '"' || ch == "'") { state.tokenize = tokenString(ch); return state.tokenize(stream, state); } if (/[\[\]{}\(\),;\\:\?\.]/.test(ch)) { curPunc = ch; return "punctuation"; } if (ch == "#"){ stream.skipToEnd(); return "atom preprocessor"; } if (ch == "%"){ stream.eatWhile(/\b/); return "atom ttcn3Macros"; } if (/\d/.test(ch)) { stream.eatWhile(/[\w\.]/); return "number"; } if (ch == "/") { if (stream.eat("*")) { state.tokenize = tokenComment; return tokenComment(stream, state); } if (stream.eat("/")) { stream.skipToEnd(); return "comment"; } } if (isOperatorChar.test(ch)) { if(ch == "@"){ if(stream.match("try") || stream.match("catch") || stream.match("lazy")){ return "keyword"; } } stream.eatWhile(isOperatorChar); return "operator"; } stream.eatWhile(/[\w\$_\xa1-\uffff]/); var cur = stream.current(); if (keywords.propertyIsEnumerable(cur)) return "keyword"; if (builtin.propertyIsEnumerable(cur)) return "builtin"; if (timerOps.propertyIsEnumerable(cur)) return "def timerOps"; if (configOps.propertyIsEnumerable(cur)) return "def configOps"; if (verdictOps.propertyIsEnumerable(cur)) return "def verdictOps"; if (portOps.propertyIsEnumerable(cur)) return "def portOps"; if (sutOps.propertyIsEnumerable(cur)) return "def sutOps"; if (functionOps.propertyIsEnumerable(cur)) return "def functionOps"; if (verdictConsts.propertyIsEnumerable(cur)) return "string verdictConsts"; if (booleanConsts.propertyIsEnumerable(cur)) return "string booleanConsts"; if (otherConsts.propertyIsEnumerable(cur)) return "string otherConsts"; if (types.propertyIsEnumerable(cur)) return "builtin types"; if (visibilityModifiers.propertyIsEnumerable(cur)) return "builtin visibilityModifiers"; if (templateMatch.propertyIsEnumerable(cur)) return "atom templateMatch"; return "variable"; } function tokenString(quote) { return function(stream, state) { var escaped = false, next, end = false; while ((next = stream.next()) != null) { if (next == quote && !escaped){ var afterQuote = stream.peek(); //look if the character after the quote is like the B in '10100010'B if (afterQuote){ afterQuote = afterQuote.toLowerCase(); if(afterQuote == "b" || afterQuote == "h" || afterQuote == "o") stream.next(); } end = true; break; } escaped = !escaped && next == "\\"; } if (end || !(escaped || multiLineStrings)) state.tokenize = null; return "string"; }; } function tokenComment(stream, state) { var maybeEnd = false, ch; while (ch = stream.next()) { if (ch == "/" && maybeEnd) { state.tokenize = null; break; } maybeEnd = (ch == "*"); } return "comment"; } function Context(indented, column, type, align, prev) { this.indented = indented; this.column = column; this.type = type; this.align = align; this.prev = prev; } function pushContext(state, col, type) { var indent = state.indented; if (state.context && state.context.type == "statement") indent = state.context.indented; return state.context = new Context(indent, col, type, null, state.context); } function popContext(state) { var t = state.context.type; if (t == ")" || t == "]" || t == "}") state.indented = state.context.indented; return state.context = state.context.prev; } //Interface return { startState: function(basecolumn) { return { tokenize: null, context: new Context((basecolumn || 0) - indentUnit, 0, "top", false), indented: 0, startOfLine: true }; }, token: function(stream, state) { var ctx = state.context; if (stream.sol()) { if (ctx.align == null) ctx.align = false; state.indented = stream.indentation(); state.startOfLine = true; } if (stream.eatSpace()) return null; curPunc = null; var style = (state.tokenize || tokenBase)(stream, state); if (style == "comment") return style; if (ctx.align == null) ctx.align = true; if ((curPunc == ";" || curPunc == ":" || curPunc == ",") && ctx.type == "statement"){ popContext(state); } else if (curPunc == "{") pushContext(state, stream.column(), "}"); else if (curPunc == "[") pushContext(state, stream.column(), "]"); else if (curPunc == "(") pushContext(state, stream.column(), ")"); else if (curPunc == "}") { while (ctx.type == "statement") ctx = popContext(state); if (ctx.type == "}") ctx = popContext(state); while (ctx.type == "statement") ctx = popContext(state); } else if (curPunc == ctx.type) popContext(state); else if (indentStatements && (((ctx.type == "}" || ctx.type == "top") && curPunc != ';') || (ctx.type == "statement" && curPunc == "newstatement"))) pushContext(state, stream.column(), "statement"); state.startOfLine = false; return style; }, electricChars: "{}", blockCommentStart: "/*", blockCommentEnd: "*/", lineComment: "//", fold: "brace" }; }); function words(str) { var obj = {}, words = str.split(" "); for (var i = 0; i < words.length; ++i) obj[words[i]] = true; return obj; } function def(mimes, mode) { if (typeof mimes == "string") mimes = [mimes]; var words = []; function add(obj) { if (obj) for (var prop in obj) if (obj.hasOwnProperty(prop)) words.push(prop); } add(mode.keywords); add(mode.builtin); add(mode.timerOps); add(mode.portOps); if (words.length) { mode.helperType = mimes[0]; CodeMirror.registerHelper("hintWords", mimes[0], words); } for (var i = 0; i < mimes.length; ++i) CodeMirror.defineMIME(mimes[i], mode); } def(["text/x-ttcn", "text/x-ttcn3", "text/x-ttcnpp"], { name: "ttcn", keywords: words("activate address alive all alt altstep and and4b any" + " break case component const continue control deactivate" + " display do else encode enumerated except exception" + " execute extends extension external for from function" + " goto group if import in infinity inout interleave" + " label language length log match message mixed mod" + " modifies module modulepar mtc noblock not not4b nowait" + " of on optional or or4b out override param pattern port" + " procedure record recursive rem repeat return runs select" + " self sender set signature system template testcase to" + " type union value valueof var variant while with xor xor4b"), builtin: words("bit2hex bit2int bit2oct bit2str char2int char2oct encvalue" + " decomp decvalue float2int float2str hex2bit hex2int" + " hex2oct hex2str int2bit int2char int2float int2hex" + " int2oct int2str int2unichar isbound ischosen ispresent" + " isvalue lengthof log2str oct2bit oct2char oct2hex oct2int" + " oct2str regexp replace rnd sizeof str2bit str2float" + " str2hex str2int str2oct substr unichar2int unichar2char" + " enum2int"), types: words("anytype bitstring boolean char charstring default float" + " hexstring integer objid octetstring universal verdicttype timer"), timerOps: words("read running start stop timeout"), portOps: words("call catch check clear getcall getreply halt raise receive" + " reply send trigger"), configOps: words("create connect disconnect done kill killed map unmap"), verdictOps: words("getverdict setverdict"), sutOps: words("action"), functionOps: words("apply derefers refers"), verdictConsts: words("error fail inconc none pass"), booleanConsts: words("true false"), otherConsts: words("null NULL omit"), visibilityModifiers: words("private public friend"), templateMatch: words("complement ifpresent subset superset permutation"), multiLineStrings: true }); }); plugins/file-manager-advanced/application/library/codemirror/mode/ttcn-cfg/index.html000064400000007025147176754550025112 0ustar00 CodeMirror: TTCN-CFG mode

    TTCN-CFG example


    Language: Testing and Test Control Notation - Configuration files (TTCN-CFG)

    MIME types defined: text/x-ttcn-cfg.


    The development of this mode has been sponsored by Ericsson .

    Coded by Asmelash Tsegay Gebretsadkan

    plugins/file-manager-advanced/application/library/codemirror/mode/ttcn-cfg/ttcn-cfg.js000064400000017261147176754550025163 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("ttcn-cfg", function(config, parserConfig) { var indentUnit = config.indentUnit, keywords = parserConfig.keywords || {}, fileNCtrlMaskOptions = parserConfig.fileNCtrlMaskOptions || {}, externalCommands = parserConfig.externalCommands || {}, multiLineStrings = parserConfig.multiLineStrings, indentStatements = parserConfig.indentStatements !== false; var isOperatorChar = /[\|]/; var curPunc; function tokenBase(stream, state) { var ch = stream.next(); if (ch == '"' || ch == "'") { state.tokenize = tokenString(ch); return state.tokenize(stream, state); } if (/[:=]/.test(ch)) { curPunc = ch; return "punctuation"; } if (ch == "#"){ stream.skipToEnd(); return "comment"; } if (/\d/.test(ch)) { stream.eatWhile(/[\w\.]/); return "number"; } if (isOperatorChar.test(ch)) { stream.eatWhile(isOperatorChar); return "operator"; } if (ch == "["){ stream.eatWhile(/[\w_\]]/); return "number sectionTitle"; } stream.eatWhile(/[\w\$_]/); var cur = stream.current(); if (keywords.propertyIsEnumerable(cur)) return "keyword"; if (fileNCtrlMaskOptions.propertyIsEnumerable(cur)) return "negative fileNCtrlMaskOptions"; if (externalCommands.propertyIsEnumerable(cur)) return "negative externalCommands"; return "variable"; } function tokenString(quote) { return function(stream, state) { var escaped = false, next, end = false; while ((next = stream.next()) != null) { if (next == quote && !escaped){ var afterNext = stream.peek(); //look if the character if the quote is like the B in '10100010'B if (afterNext){ afterNext = afterNext.toLowerCase(); if(afterNext == "b" || afterNext == "h" || afterNext == "o") stream.next(); } end = true; break; } escaped = !escaped && next == "\\"; } if (end || !(escaped || multiLineStrings)) state.tokenize = null; return "string"; }; } function Context(indented, column, type, align, prev) { this.indented = indented; this.column = column; this.type = type; this.align = align; this.prev = prev; } function pushContext(state, col, type) { var indent = state.indented; if (state.context && state.context.type == "statement") indent = state.context.indented; return state.context = new Context(indent, col, type, null, state.context); } function popContext(state) { var t = state.context.type; if (t == ")" || t == "]" || t == "}") state.indented = state.context.indented; return state.context = state.context.prev; } //Interface return { startState: function(basecolumn) { return { tokenize: null, context: new Context((basecolumn || 0) - indentUnit, 0, "top", false), indented: 0, startOfLine: true }; }, token: function(stream, state) { var ctx = state.context; if (stream.sol()) { if (ctx.align == null) ctx.align = false; state.indented = stream.indentation(); state.startOfLine = true; } if (stream.eatSpace()) return null; curPunc = null; var style = (state.tokenize || tokenBase)(stream, state); if (style == "comment") return style; if (ctx.align == null) ctx.align = true; if ((curPunc == ";" || curPunc == ":" || curPunc == ",") && ctx.type == "statement"){ popContext(state); } else if (curPunc == "{") pushContext(state, stream.column(), "}"); else if (curPunc == "[") pushContext(state, stream.column(), "]"); else if (curPunc == "(") pushContext(state, stream.column(), ")"); else if (curPunc == "}") { while (ctx.type == "statement") ctx = popContext(state); if (ctx.type == "}") ctx = popContext(state); while (ctx.type == "statement") ctx = popContext(state); } else if (curPunc == ctx.type) popContext(state); else if (indentStatements && (((ctx.type == "}" || ctx.type == "top") && curPunc != ';') || (ctx.type == "statement" && curPunc == "newstatement"))) pushContext(state, stream.column(), "statement"); state.startOfLine = false; return style; }, electricChars: "{}", lineComment: "#", fold: "brace" }; }); function words(str) { var obj = {}, words = str.split(" "); for (var i = 0; i < words.length; ++i) obj[words[i]] = true; return obj; } CodeMirror.defineMIME("text/x-ttcn-cfg", { name: "ttcn-cfg", keywords: words("Yes No LogFile FileMask ConsoleMask AppendFile" + " TimeStampFormat LogEventTypes SourceInfoFormat" + " LogEntityName LogSourceInfo DiskFullAction" + " LogFileNumber LogFileSize MatchingHints Detailed" + " Compact SubCategories Stack Single None Seconds" + " DateTime Time Stop Error Retry Delete TCPPort KillTimer" + " NumHCs UnixSocketsEnabled LocalAddress"), fileNCtrlMaskOptions: words("TTCN_EXECUTOR TTCN_ERROR TTCN_WARNING" + " TTCN_PORTEVENT TTCN_TIMEROP TTCN_VERDICTOP" + " TTCN_DEFAULTOP TTCN_TESTCASE TTCN_ACTION" + " TTCN_USER TTCN_FUNCTION TTCN_STATISTICS" + " TTCN_PARALLEL TTCN_MATCHING TTCN_DEBUG" + " EXECUTOR ERROR WARNING PORTEVENT TIMEROP" + " VERDICTOP DEFAULTOP TESTCASE ACTION USER" + " FUNCTION STATISTICS PARALLEL MATCHING DEBUG" + " LOG_ALL LOG_NOTHING ACTION_UNQUALIFIED" + " DEBUG_ENCDEC DEBUG_TESTPORT" + " DEBUG_UNQUALIFIED DEFAULTOP_ACTIVATE" + " DEFAULTOP_DEACTIVATE DEFAULTOP_EXIT" + " DEFAULTOP_UNQUALIFIED ERROR_UNQUALIFIED" + " EXECUTOR_COMPONENT EXECUTOR_CONFIGDATA" + " EXECUTOR_EXTCOMMAND EXECUTOR_LOGOPTIONS" + " EXECUTOR_RUNTIME EXECUTOR_UNQUALIFIED" + " FUNCTION_RND FUNCTION_UNQUALIFIED" + " MATCHING_DONE MATCHING_MCSUCCESS" + " MATCHING_MCUNSUCC MATCHING_MMSUCCESS" + " MATCHING_MMUNSUCC MATCHING_PCSUCCESS" + " MATCHING_PCUNSUCC MATCHING_PMSUCCESS" + " MATCHING_PMUNSUCC MATCHING_PROBLEM" + " MATCHING_TIMEOUT MATCHING_UNQUALIFIED" + " PARALLEL_PORTCONN PARALLEL_PORTMAP" + " PARALLEL_PTC PARALLEL_UNQUALIFIED" + " PORTEVENT_DUALRECV PORTEVENT_DUALSEND" + " PORTEVENT_MCRECV PORTEVENT_MCSEND" + " PORTEVENT_MMRECV PORTEVENT_MMSEND" + " PORTEVENT_MQUEUE PORTEVENT_PCIN" + " PORTEVENT_PCOUT PORTEVENT_PMIN" + " PORTEVENT_PMOUT PORTEVENT_PQUEUE" + " PORTEVENT_STATE PORTEVENT_UNQUALIFIED" + " STATISTICS_UNQUALIFIED STATISTICS_VERDICT" + " TESTCASE_FINISH TESTCASE_START" + " TESTCASE_UNQUALIFIED TIMEROP_GUARD" + " TIMEROP_READ TIMEROP_START TIMEROP_STOP" + " TIMEROP_TIMEOUT TIMEROP_UNQUALIFIED" + " USER_UNQUALIFIED VERDICTOP_FINAL" + " VERDICTOP_GETVERDICT VERDICTOP_SETVERDICT" + " VERDICTOP_UNQUALIFIED WARNING_UNQUALIFIED"), externalCommands: words("BeginControlPart EndControlPart BeginTestCase" + " EndTestCase"), multiLineStrings: true }); });plugins/file-manager-advanced/application/library/codemirror/mode/turtle/index.html000064400000002676147176754550024733 0ustar00 CodeMirror: Turtle mode

    Turtle mode

    MIME types defined: text/turtle.

    plugins/file-manager-advanced/application/library/codemirror/mode/turtle/turtle.js000064400000011361147176754550024602 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("turtle", function(config) { var indentUnit = config.indentUnit; var curPunc; function wordRegexp(words) { return new RegExp("^(?:" + words.join("|") + ")$", "i"); } var ops = wordRegexp([]); var keywords = wordRegexp(["@prefix", "@base", "a"]); var operatorChars = /[*+\-<>=&|]/; function tokenBase(stream, state) { var ch = stream.next(); curPunc = null; if (ch == "<" && !stream.match(/^[\s\u00a0=]/, false)) { stream.match(/^[^\s\u00a0>]*>?/); return "atom"; } else if (ch == "\"" || ch == "'") { state.tokenize = tokenLiteral(ch); return state.tokenize(stream, state); } else if (/[{}\(\),\.;\[\]]/.test(ch)) { curPunc = ch; return null; } else if (ch == "#") { stream.skipToEnd(); return "comment"; } else if (operatorChars.test(ch)) { stream.eatWhile(operatorChars); return null; } else if (ch == ":") { return "operator"; } else { stream.eatWhile(/[_\w\d]/); if(stream.peek() == ":") { return "variable-3"; } else { var word = stream.current(); if(keywords.test(word)) { return "meta"; } if(ch >= "A" && ch <= "Z") { return "comment"; } else { return "keyword"; } } var word = stream.current(); if (ops.test(word)) return null; else if (keywords.test(word)) return "meta"; else return "variable"; } } function tokenLiteral(quote) { return function(stream, state) { var escaped = false, ch; while ((ch = stream.next()) != null) { if (ch == quote && !escaped) { state.tokenize = tokenBase; break; } escaped = !escaped && ch == "\\"; } return "string"; }; } function pushContext(state, type, col) { state.context = {prev: state.context, indent: state.indent, col: col, type: type}; } function popContext(state) { state.indent = state.context.indent; state.context = state.context.prev; } return { startState: function() { return {tokenize: tokenBase, context: null, indent: 0, col: 0}; }, token: function(stream, state) { if (stream.sol()) { if (state.context && state.context.align == null) state.context.align = false; state.indent = stream.indentation(); } if (stream.eatSpace()) return null; var style = state.tokenize(stream, state); if (style != "comment" && state.context && state.context.align == null && state.context.type != "pattern") { state.context.align = true; } if (curPunc == "(") pushContext(state, ")", stream.column()); else if (curPunc == "[") pushContext(state, "]", stream.column()); else if (curPunc == "{") pushContext(state, "}", stream.column()); else if (/[\]\}\)]/.test(curPunc)) { while (state.context && state.context.type == "pattern") popContext(state); if (state.context && curPunc == state.context.type) popContext(state); } else if (curPunc == "." && state.context && state.context.type == "pattern") popContext(state); else if (/atom|string|variable/.test(style) && state.context) { if (/[\}\]]/.test(state.context.type)) pushContext(state, "pattern", stream.column()); else if (state.context.type == "pattern" && !state.context.align) { state.context.align = true; state.context.col = stream.column(); } } return style; }, indent: function(state, textAfter) { var firstChar = textAfter && textAfter.charAt(0); var context = state.context; if (/[\]\}]/.test(firstChar)) while (context && context.type == "pattern") context = context.prev; var closing = context && firstChar == context.type; if (!context) return 0; else if (context.type == "pattern") return context.col; else if (context.align) return context.col + (closing ? 0 : 1); else return context.indent + (closing ? 0 : indentUnit); }, lineComment: "#" }; }); CodeMirror.defineMIME("text/turtle", "turtle"); }); plugins/file-manager-advanced/application/library/codemirror/mode/twig/index.html000064400000002532147176754550024355 0ustar00 CodeMirror: Twig mode

    Twig mode

    plugins/file-manager-advanced/application/library/codemirror/mode/twig/twig.js000064400000010732147176754550023671 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror"), require("../../addon/mode/multiplex")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror", "../../addon/mode/multiplex"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("twig:inner", function() { var keywords = ["and", "as", "autoescape", "endautoescape", "block", "do", "endblock", "else", "elseif", "extends", "for", "endfor", "embed", "endembed", "filter", "endfilter", "flush", "from", "if", "endif", "in", "is", "include", "import", "not", "or", "set", "spaceless", "endspaceless", "with", "endwith", "trans", "endtrans", "blocktrans", "endblocktrans", "macro", "endmacro", "use", "verbatim", "endverbatim"], operator = /^[+\-*&%=<>!?|~^]/, sign = /^[:\[\(\{]/, atom = ["true", "false", "null", "empty", "defined", "divisibleby", "divisible by", "even", "odd", "iterable", "sameas", "same as"], number = /^(\d[+\-\*\/])?\d+(\.\d+)?/; keywords = new RegExp("((" + keywords.join(")|(") + "))\\b"); atom = new RegExp("((" + atom.join(")|(") + "))\\b"); function tokenBase (stream, state) { var ch = stream.peek(); //Comment if (state.incomment) { if (!stream.skipTo("#}")) { stream.skipToEnd(); } else { stream.eatWhile(/\#|}/); state.incomment = false; } return "comment"; //Tag } else if (state.intag) { //After operator if (state.operator) { state.operator = false; if (stream.match(atom)) { return "atom"; } if (stream.match(number)) { return "number"; } } //After sign if (state.sign) { state.sign = false; if (stream.match(atom)) { return "atom"; } if (stream.match(number)) { return "number"; } } if (state.instring) { if (ch == state.instring) { state.instring = false; } stream.next(); return "string"; } else if (ch == "'" || ch == '"') { state.instring = ch; stream.next(); return "string"; } else if (stream.match(state.intag + "}") || stream.eat("-") && stream.match(state.intag + "}")) { state.intag = false; return "tag"; } else if (stream.match(operator)) { state.operator = true; return "operator"; } else if (stream.match(sign)) { state.sign = true; } else { if (stream.eat(" ") || stream.sol()) { if (stream.match(keywords)) { return "keyword"; } if (stream.match(atom)) { return "atom"; } if (stream.match(number)) { return "number"; } if (stream.sol()) { stream.next(); } } else { stream.next(); } } return "variable"; } else if (stream.eat("{")) { if (ch = stream.eat("#")) { state.incomment = true; if (!stream.skipTo("#}")) { stream.skipToEnd(); } else { stream.eatWhile(/\#|}/); state.incomment = false; } return "comment"; //Open tag } else if (ch = stream.eat(/\{|%/)) { //Cache close tag state.intag = ch; if (ch == "{") { state.intag = "}"; } stream.eat("-"); return "tag"; } } stream.next(); }; return { startState: function () { return {}; }, token: function (stream, state) { return tokenBase(stream, state); } }; }); CodeMirror.defineMode("twig", function(config, parserConfig) { var twigInner = CodeMirror.getMode(config, "twig:inner"); if (!parserConfig || !parserConfig.base) return twigInner; return CodeMirror.multiplexingMode( CodeMirror.getMode(config, parserConfig.base), { open: /\{[{#%]/, close: /[}#%]\}/, mode: twigInner, parseDelimiters: true } ); }); CodeMirror.defineMIME("text/x-twig", "twig"); }); plugins/file-manager-advanced/application/library/codemirror/mode/vb/index.html000064400000006304147176754550024013 0ustar00 CodeMirror: VB.NET mode

    VB.NET mode

    
      

    MIME type defined: text/x-vb.

    plugins/file-manager-advanced/application/library/codemirror/mode/vb/vb.js000064400000021106147176754550022760 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("vb", function(conf, parserConf) { var ERRORCLASS = 'error'; function wordRegexp(words) { return new RegExp("^((" + words.join(")|(") + "))\\b", "i"); } var singleOperators = new RegExp("^[\\+\\-\\*/%&\\\\|\\^~<>!]"); var singleDelimiters = new RegExp('^[\\(\\)\\[\\]\\{\\}@,:`=;\\.]'); var doubleOperators = new RegExp("^((==)|(<>)|(<=)|(>=)|(<>)|(<<)|(>>)|(//)|(\\*\\*))"); var doubleDelimiters = new RegExp("^((\\+=)|(\\-=)|(\\*=)|(%=)|(/=)|(&=)|(\\|=)|(\\^=))"); var tripleDelimiters = new RegExp("^((//=)|(>>=)|(<<=)|(\\*\\*=))"); var identifiers = new RegExp("^[_A-Za-z][_A-Za-z0-9]*"); var openingKeywords = ['class','module', 'sub','enum','select','while','if','function', 'get','set','property', 'try']; var middleKeywords = ['else','elseif','case', 'catch']; var endKeywords = ['next','loop']; var operatorKeywords = ['and', 'or', 'not', 'xor', 'in']; var wordOperators = wordRegexp(operatorKeywords); var commonKeywords = ['as', 'dim', 'break', 'continue','optional', 'then', 'until', 'goto', 'byval','byref','new','handles','property', 'return', 'const','private', 'protected', 'friend', 'public', 'shared', 'static', 'true','false']; var commontypes = ['integer','string','double','decimal','boolean','short','char', 'float','single']; var keywords = wordRegexp(commonKeywords); var types = wordRegexp(commontypes); var stringPrefixes = '"'; var opening = wordRegexp(openingKeywords); var middle = wordRegexp(middleKeywords); var closing = wordRegexp(endKeywords); var doubleClosing = wordRegexp(['end']); var doOpening = wordRegexp(['do']); var indentInfo = null; CodeMirror.registerHelper("hintWords", "vb", openingKeywords.concat(middleKeywords).concat(endKeywords) .concat(operatorKeywords).concat(commonKeywords).concat(commontypes)); function indent(_stream, state) { state.currentIndent++; } function dedent(_stream, state) { state.currentIndent--; } // tokenizers function tokenBase(stream, state) { if (stream.eatSpace()) { return null; } var ch = stream.peek(); // Handle Comments if (ch === "'") { stream.skipToEnd(); return 'comment'; } // Handle Number Literals if (stream.match(/^((&H)|(&O))?[0-9\.a-f]/i, false)) { var floatLiteral = false; // Floats if (stream.match(/^\d*\.\d+F?/i)) { floatLiteral = true; } else if (stream.match(/^\d+\.\d*F?/)) { floatLiteral = true; } else if (stream.match(/^\.\d+F?/)) { floatLiteral = true; } if (floatLiteral) { // Float literals may be "imaginary" stream.eat(/J/i); return 'number'; } // Integers var intLiteral = false; // Hex if (stream.match(/^&H[0-9a-f]+/i)) { intLiteral = true; } // Octal else if (stream.match(/^&O[0-7]+/i)) { intLiteral = true; } // Decimal else if (stream.match(/^[1-9]\d*F?/)) { // Decimal literals may be "imaginary" stream.eat(/J/i); // TODO - Can you have imaginary longs? intLiteral = true; } // Zero by itself with no other piece of number. else if (stream.match(/^0(?![\dx])/i)) { intLiteral = true; } if (intLiteral) { // Integer literals may be "long" stream.eat(/L/i); return 'number'; } } // Handle Strings if (stream.match(stringPrefixes)) { state.tokenize = tokenStringFactory(stream.current()); return state.tokenize(stream, state); } // Handle operators and Delimiters if (stream.match(tripleDelimiters) || stream.match(doubleDelimiters)) { return null; } if (stream.match(doubleOperators) || stream.match(singleOperators) || stream.match(wordOperators)) { return 'operator'; } if (stream.match(singleDelimiters)) { return null; } if (stream.match(doOpening)) { indent(stream,state); state.doInCurrentLine = true; return 'keyword'; } if (stream.match(opening)) { if (! state.doInCurrentLine) indent(stream,state); else state.doInCurrentLine = false; return 'keyword'; } if (stream.match(middle)) { return 'keyword'; } if (stream.match(doubleClosing)) { dedent(stream,state); dedent(stream,state); return 'keyword'; } if (stream.match(closing)) { dedent(stream,state); return 'keyword'; } if (stream.match(types)) { return 'keyword'; } if (stream.match(keywords)) { return 'keyword'; } if (stream.match(identifiers)) { return 'variable'; } // Handle non-detected items stream.next(); return ERRORCLASS; } function tokenStringFactory(delimiter) { var singleline = delimiter.length == 1; var OUTCLASS = 'string'; return function(stream, state) { while (!stream.eol()) { stream.eatWhile(/[^'"]/); if (stream.match(delimiter)) { state.tokenize = tokenBase; return OUTCLASS; } else { stream.eat(/['"]/); } } if (singleline) { if (parserConf.singleLineStringErrors) { return ERRORCLASS; } else { state.tokenize = tokenBase; } } return OUTCLASS; }; } function tokenLexer(stream, state) { var style = state.tokenize(stream, state); var current = stream.current(); // Handle '.' connected identifiers if (current === '.') { style = state.tokenize(stream, state); current = stream.current(); if (style === 'variable') { return 'variable'; } else { return ERRORCLASS; } } var delimiter_index = '[({'.indexOf(current); if (delimiter_index !== -1) { indent(stream, state ); } if (indentInfo === 'dedent') { if (dedent(stream, state)) { return ERRORCLASS; } } delimiter_index = '])}'.indexOf(current); if (delimiter_index !== -1) { if (dedent(stream, state)) { return ERRORCLASS; } } return style; } var external = { electricChars:"dDpPtTfFeE ", startState: function() { return { tokenize: tokenBase, lastToken: null, currentIndent: 0, nextLineIndent: 0, doInCurrentLine: false }; }, token: function(stream, state) { if (stream.sol()) { state.currentIndent += state.nextLineIndent; state.nextLineIndent = 0; state.doInCurrentLine = 0; } var style = tokenLexer(stream, state); state.lastToken = {style:style, content: stream.current()}; return style; }, indent: function(state, textAfter) { var trueText = textAfter.replace(/^\s+|\s+$/g, '') ; if (trueText.match(closing) || trueText.match(doubleClosing) || trueText.match(middle)) return conf.indentUnit*(state.currentIndent-1); if(state.currentIndent < 0) return 0; return state.currentIndent * conf.indentUnit; }, lineComment: "'" }; return external; }); CodeMirror.defineMIME("text/x-vb", "vb"); }); plugins/file-manager-advanced/application/library/codemirror/mode/vbscript/index.html000064400000002755147176754550025246 0ustar00 CodeMirror: VBScript mode

    VBScript mode

    MIME types defined: text/vbscript.

    plugins/file-manager-advanced/application/library/codemirror/mode/vbscript/vbscript.js000064400000032741147176754550025441 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE /* For extra ASP classic objects, initialize CodeMirror instance with this option: isASP: true E.G.: var editor = CodeMirror.fromTextArea(document.getElementById("code"), { lineNumbers: true, isASP: true }); */ (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("vbscript", function(conf, parserConf) { var ERRORCLASS = 'error'; function wordRegexp(words) { return new RegExp("^((" + words.join(")|(") + "))\\b", "i"); } var singleOperators = new RegExp("^[\\+\\-\\*/&\\\\\\^<>=]"); var doubleOperators = new RegExp("^((<>)|(<=)|(>=))"); var singleDelimiters = new RegExp('^[\\.,]'); var brakets = new RegExp('^[\\(\\)]'); var identifiers = new RegExp("^[A-Za-z][_A-Za-z0-9]*"); var openingKeywords = ['class','sub','select','while','if','function', 'property', 'with', 'for']; var middleKeywords = ['else','elseif','case']; var endKeywords = ['next','loop','wend']; var wordOperators = wordRegexp(['and', 'or', 'not', 'xor', 'is', 'mod', 'eqv', 'imp']); var commonkeywords = ['dim', 'redim', 'then', 'until', 'randomize', 'byval','byref','new','property', 'exit', 'in', 'const','private', 'public', 'get','set','let', 'stop', 'on error resume next', 'on error goto 0', 'option explicit', 'call', 'me']; //This list was from: http://msdn.microsoft.com/en-us/library/f8tbc79x(v=vs.84).aspx var atomWords = ['true', 'false', 'nothing', 'empty', 'null']; //This list was from: http://msdn.microsoft.com/en-us/library/3ca8tfek(v=vs.84).aspx var builtinFuncsWords = ['abs', 'array', 'asc', 'atn', 'cbool', 'cbyte', 'ccur', 'cdate', 'cdbl', 'chr', 'cint', 'clng', 'cos', 'csng', 'cstr', 'date', 'dateadd', 'datediff', 'datepart', 'dateserial', 'datevalue', 'day', 'escape', 'eval', 'execute', 'exp', 'filter', 'formatcurrency', 'formatdatetime', 'formatnumber', 'formatpercent', 'getlocale', 'getobject', 'getref', 'hex', 'hour', 'inputbox', 'instr', 'instrrev', 'int', 'fix', 'isarray', 'isdate', 'isempty', 'isnull', 'isnumeric', 'isobject', 'join', 'lbound', 'lcase', 'left', 'len', 'loadpicture', 'log', 'ltrim', 'rtrim', 'trim', 'maths', 'mid', 'minute', 'month', 'monthname', 'msgbox', 'now', 'oct', 'replace', 'rgb', 'right', 'rnd', 'round', 'scriptengine', 'scriptenginebuildversion', 'scriptenginemajorversion', 'scriptengineminorversion', 'second', 'setlocale', 'sgn', 'sin', 'space', 'split', 'sqr', 'strcomp', 'string', 'strreverse', 'tan', 'time', 'timer', 'timeserial', 'timevalue', 'typename', 'ubound', 'ucase', 'unescape', 'vartype', 'weekday', 'weekdayname', 'year']; //This list was from: http://msdn.microsoft.com/en-us/library/ydz4cfk3(v=vs.84).aspx var builtinConsts = ['vbBlack', 'vbRed', 'vbGreen', 'vbYellow', 'vbBlue', 'vbMagenta', 'vbCyan', 'vbWhite', 'vbBinaryCompare', 'vbTextCompare', 'vbSunday', 'vbMonday', 'vbTuesday', 'vbWednesday', 'vbThursday', 'vbFriday', 'vbSaturday', 'vbUseSystemDayOfWeek', 'vbFirstJan1', 'vbFirstFourDays', 'vbFirstFullWeek', 'vbGeneralDate', 'vbLongDate', 'vbShortDate', 'vbLongTime', 'vbShortTime', 'vbObjectError', 'vbOKOnly', 'vbOKCancel', 'vbAbortRetryIgnore', 'vbYesNoCancel', 'vbYesNo', 'vbRetryCancel', 'vbCritical', 'vbQuestion', 'vbExclamation', 'vbInformation', 'vbDefaultButton1', 'vbDefaultButton2', 'vbDefaultButton3', 'vbDefaultButton4', 'vbApplicationModal', 'vbSystemModal', 'vbOK', 'vbCancel', 'vbAbort', 'vbRetry', 'vbIgnore', 'vbYes', 'vbNo', 'vbCr', 'VbCrLf', 'vbFormFeed', 'vbLf', 'vbNewLine', 'vbNullChar', 'vbNullString', 'vbTab', 'vbVerticalTab', 'vbUseDefault', 'vbTrue', 'vbFalse', 'vbEmpty', 'vbNull', 'vbInteger', 'vbLong', 'vbSingle', 'vbDouble', 'vbCurrency', 'vbDate', 'vbString', 'vbObject', 'vbError', 'vbBoolean', 'vbVariant', 'vbDataObject', 'vbDecimal', 'vbByte', 'vbArray']; //This list was from: http://msdn.microsoft.com/en-us/library/hkc375ea(v=vs.84).aspx var builtinObjsWords = ['WScript', 'err', 'debug', 'RegExp']; var knownProperties = ['description', 'firstindex', 'global', 'helpcontext', 'helpfile', 'ignorecase', 'length', 'number', 'pattern', 'source', 'value', 'count']; var knownMethods = ['clear', 'execute', 'raise', 'replace', 'test', 'write', 'writeline', 'close', 'open', 'state', 'eof', 'update', 'addnew', 'end', 'createobject', 'quit']; var aspBuiltinObjsWords = ['server', 'response', 'request', 'session', 'application']; var aspKnownProperties = ['buffer', 'cachecontrol', 'charset', 'contenttype', 'expires', 'expiresabsolute', 'isclientconnected', 'pics', 'status', //response 'clientcertificate', 'cookies', 'form', 'querystring', 'servervariables', 'totalbytes', //request 'contents', 'staticobjects', //application 'codepage', 'lcid', 'sessionid', 'timeout', //session 'scripttimeout']; //server var aspKnownMethods = ['addheader', 'appendtolog', 'binarywrite', 'end', 'flush', 'redirect', //response 'binaryread', //request 'remove', 'removeall', 'lock', 'unlock', //application 'abandon', //session 'getlasterror', 'htmlencode', 'mappath', 'transfer', 'urlencode']; //server var knownWords = knownMethods.concat(knownProperties); builtinObjsWords = builtinObjsWords.concat(builtinConsts); if (conf.isASP){ builtinObjsWords = builtinObjsWords.concat(aspBuiltinObjsWords); knownWords = knownWords.concat(aspKnownMethods, aspKnownProperties); }; var keywords = wordRegexp(commonkeywords); var atoms = wordRegexp(atomWords); var builtinFuncs = wordRegexp(builtinFuncsWords); var builtinObjs = wordRegexp(builtinObjsWords); var known = wordRegexp(knownWords); var stringPrefixes = '"'; var opening = wordRegexp(openingKeywords); var middle = wordRegexp(middleKeywords); var closing = wordRegexp(endKeywords); var doubleClosing = wordRegexp(['end']); var doOpening = wordRegexp(['do']); var noIndentWords = wordRegexp(['on error resume next', 'exit']); var comment = wordRegexp(['rem']); function indent(_stream, state) { state.currentIndent++; } function dedent(_stream, state) { state.currentIndent--; } // tokenizers function tokenBase(stream, state) { if (stream.eatSpace()) { return 'space'; //return null; } var ch = stream.peek(); // Handle Comments if (ch === "'") { stream.skipToEnd(); return 'comment'; } if (stream.match(comment)){ stream.skipToEnd(); return 'comment'; } // Handle Number Literals if (stream.match(/^((&H)|(&O))?[0-9\.]/i, false) && !stream.match(/^((&H)|(&O))?[0-9\.]+[a-z_]/i, false)) { var floatLiteral = false; // Floats if (stream.match(/^\d*\.\d+/i)) { floatLiteral = true; } else if (stream.match(/^\d+\.\d*/)) { floatLiteral = true; } else if (stream.match(/^\.\d+/)) { floatLiteral = true; } if (floatLiteral) { // Float literals may be "imaginary" stream.eat(/J/i); return 'number'; } // Integers var intLiteral = false; // Hex if (stream.match(/^&H[0-9a-f]+/i)) { intLiteral = true; } // Octal else if (stream.match(/^&O[0-7]+/i)) { intLiteral = true; } // Decimal else if (stream.match(/^[1-9]\d*F?/)) { // Decimal literals may be "imaginary" stream.eat(/J/i); // TODO - Can you have imaginary longs? intLiteral = true; } // Zero by itself with no other piece of number. else if (stream.match(/^0(?![\dx])/i)) { intLiteral = true; } if (intLiteral) { // Integer literals may be "long" stream.eat(/L/i); return 'number'; } } // Handle Strings if (stream.match(stringPrefixes)) { state.tokenize = tokenStringFactory(stream.current()); return state.tokenize(stream, state); } // Handle operators and Delimiters if (stream.match(doubleOperators) || stream.match(singleOperators) || stream.match(wordOperators)) { return 'operator'; } if (stream.match(singleDelimiters)) { return null; } if (stream.match(brakets)) { return "bracket"; } if (stream.match(noIndentWords)) { state.doInCurrentLine = true; return 'keyword'; } if (stream.match(doOpening)) { indent(stream,state); state.doInCurrentLine = true; return 'keyword'; } if (stream.match(opening)) { if (! state.doInCurrentLine) indent(stream,state); else state.doInCurrentLine = false; return 'keyword'; } if (stream.match(middle)) { return 'keyword'; } if (stream.match(doubleClosing)) { dedent(stream,state); dedent(stream,state); return 'keyword'; } if (stream.match(closing)) { if (! state.doInCurrentLine) dedent(stream,state); else state.doInCurrentLine = false; return 'keyword'; } if (stream.match(keywords)) { return 'keyword'; } if (stream.match(atoms)) { return 'atom'; } if (stream.match(known)) { return 'variable-2'; } if (stream.match(builtinFuncs)) { return 'builtin'; } if (stream.match(builtinObjs)){ return 'variable-2'; } if (stream.match(identifiers)) { return 'variable'; } // Handle non-detected items stream.next(); return ERRORCLASS; } function tokenStringFactory(delimiter) { var singleline = delimiter.length == 1; var OUTCLASS = 'string'; return function(stream, state) { while (!stream.eol()) { stream.eatWhile(/[^'"]/); if (stream.match(delimiter)) { state.tokenize = tokenBase; return OUTCLASS; } else { stream.eat(/['"]/); } } if (singleline) { if (parserConf.singleLineStringErrors) { return ERRORCLASS; } else { state.tokenize = tokenBase; } } return OUTCLASS; }; } function tokenLexer(stream, state) { var style = state.tokenize(stream, state); var current = stream.current(); // Handle '.' connected identifiers if (current === '.') { style = state.tokenize(stream, state); current = stream.current(); if (style && (style.substr(0, 8) === 'variable' || style==='builtin' || style==='keyword')){//|| knownWords.indexOf(current.substring(1)) > -1) { if (style === 'builtin' || style === 'keyword') style='variable'; if (knownWords.indexOf(current.substr(1)) > -1) style='variable-2'; return style; } else { return ERRORCLASS; } } return style; } var external = { electricChars:"dDpPtTfFeE ", startState: function() { return { tokenize: tokenBase, lastToken: null, currentIndent: 0, nextLineIndent: 0, doInCurrentLine: false, ignoreKeyword: false }; }, token: function(stream, state) { if (stream.sol()) { state.currentIndent += state.nextLineIndent; state.nextLineIndent = 0; state.doInCurrentLine = 0; } var style = tokenLexer(stream, state); state.lastToken = {style:style, content: stream.current()}; if (style==='space') style=null; return style; }, indent: function(state, textAfter) { var trueText = textAfter.replace(/^\s+|\s+$/g, '') ; if (trueText.match(closing) || trueText.match(doubleClosing) || trueText.match(middle)) return conf.indentUnit*(state.currentIndent-1); if(state.currentIndent < 0) return 0; return state.currentIndent * conf.indentUnit; } }; return external; }); CodeMirror.defineMIME("text/vbscript", "vbscript"); }); plugins/file-manager-advanced/application/library/codemirror/mode/velocity/index.html000064400000006344147176754550025246 0ustar00 CodeMirror: Velocity mode

    Velocity mode

    MIME types defined: text/velocity.

    plugins/file-manager-advanced/application/library/codemirror/mode/velocity/velocity.js000064400000015672147176754550025451 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("velocity", function() { function parseWords(str) { var obj = {}, words = str.split(" "); for (var i = 0; i < words.length; ++i) obj[words[i]] = true; return obj; } var keywords = parseWords("#end #else #break #stop #[[ #]] " + "#{end} #{else} #{break} #{stop}"); var functions = parseWords("#if #elseif #foreach #set #include #parse #macro #define #evaluate " + "#{if} #{elseif} #{foreach} #{set} #{include} #{parse} #{macro} #{define} #{evaluate}"); var specials = parseWords("$foreach.count $foreach.hasNext $foreach.first $foreach.last $foreach.topmost $foreach.parent.count $foreach.parent.hasNext $foreach.parent.first $foreach.parent.last $foreach.parent $velocityCount $!bodyContent $bodyContent"); var isOperatorChar = /[+\-*&%=<>!?:\/|]/; function chain(stream, state, f) { state.tokenize = f; return f(stream, state); } function tokenBase(stream, state) { var beforeParams = state.beforeParams; state.beforeParams = false; var ch = stream.next(); // start of unparsed string? if ((ch == "'") && !state.inString && state.inParams) { state.lastTokenWasBuiltin = false; return chain(stream, state, tokenString(ch)); } // start of parsed string? else if ((ch == '"')) { state.lastTokenWasBuiltin = false; if (state.inString) { state.inString = false; return "string"; } else if (state.inParams) return chain(stream, state, tokenString(ch)); } // is it one of the special signs []{}().,;? Seperator? else if (/[\[\]{}\(\),;\.]/.test(ch)) { if (ch == "(" && beforeParams) state.inParams = true; else if (ch == ")") { state.inParams = false; state.lastTokenWasBuiltin = true; } return null; } // start of a number value? else if (/\d/.test(ch)) { state.lastTokenWasBuiltin = false; stream.eatWhile(/[\w\.]/); return "number"; } // multi line comment? else if (ch == "#" && stream.eat("*")) { state.lastTokenWasBuiltin = false; return chain(stream, state, tokenComment); } // unparsed content? else if (ch == "#" && stream.match(/ *\[ *\[/)) { state.lastTokenWasBuiltin = false; return chain(stream, state, tokenUnparsed); } // single line comment? else if (ch == "#" && stream.eat("#")) { state.lastTokenWasBuiltin = false; stream.skipToEnd(); return "comment"; } // variable? else if (ch == "$") { stream.eatWhile(/[\w\d\$_\.{}]/); // is it one of the specials? if (specials && specials.propertyIsEnumerable(stream.current())) { return "keyword"; } else { state.lastTokenWasBuiltin = true; state.beforeParams = true; return "builtin"; } } // is it a operator? else if (isOperatorChar.test(ch)) { state.lastTokenWasBuiltin = false; stream.eatWhile(isOperatorChar); return "operator"; } else { // get the whole word stream.eatWhile(/[\w\$_{}@]/); var word = stream.current(); // is it one of the listed keywords? if (keywords && keywords.propertyIsEnumerable(word)) return "keyword"; // is it one of the listed functions? if (functions && functions.propertyIsEnumerable(word) || (stream.current().match(/^#@?[a-z0-9_]+ *$/i) && stream.peek()=="(") && !(functions && functions.propertyIsEnumerable(word.toLowerCase()))) { state.beforeParams = true; state.lastTokenWasBuiltin = false; return "keyword"; } if (state.inString) { state.lastTokenWasBuiltin = false; return "string"; } if (stream.pos > word.length && stream.string.charAt(stream.pos-word.length-1)=="." && state.lastTokenWasBuiltin) return "builtin"; // default: just a "word" state.lastTokenWasBuiltin = false; return null; } } function tokenString(quote) { return function(stream, state) { var escaped = false, next, end = false; while ((next = stream.next()) != null) { if ((next == quote) && !escaped) { end = true; break; } if (quote=='"' && stream.peek() == '$' && !escaped) { state.inString = true; end = true; break; } escaped = !escaped && next == "\\"; } if (end) state.tokenize = tokenBase; return "string"; }; } function tokenComment(stream, state) { var maybeEnd = false, ch; while (ch = stream.next()) { if (ch == "#" && maybeEnd) { state.tokenize = tokenBase; break; } maybeEnd = (ch == "*"); } return "comment"; } function tokenUnparsed(stream, state) { var maybeEnd = 0, ch; while (ch = stream.next()) { if (ch == "#" && maybeEnd == 2) { state.tokenize = tokenBase; break; } if (ch == "]") maybeEnd++; else if (ch != " ") maybeEnd = 0; } return "meta"; } // Interface return { startState: function() { return { tokenize: tokenBase, beforeParams: false, inParams: false, inString: false, lastTokenWasBuiltin: false }; }, token: function(stream, state) { if (stream.eatSpace()) return null; return state.tokenize(stream, state); }, blockCommentStart: "#*", blockCommentEnd: "*#", lineComment: "##", fold: "velocity" }; }); CodeMirror.defineMIME("text/velocity", "velocity"); }); plugins/file-manager-advanced/application/library/codemirror/mode/verilog/index.html000064400000005073147176754550025055 0ustar00 CodeMirror: Verilog/SystemVerilog mode

    SystemVerilog mode

    Syntax highlighting and indentation for the Verilog and SystemVerilog languages (IEEE 1800).

    Configuration options:

    • noIndentKeywords - List of keywords which should not cause indentation to increase. E.g. ["package", "module"]. Default: None

    MIME types defined: text/x-verilog and text/x-systemverilog.

    plugins/file-manager-advanced/application/library/codemirror/mode/verilog/test.js000064400000015171147176754550024375 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function() { var mode = CodeMirror.getMode({indentUnit: 4}, "verilog"); function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } MT("binary_literals", "[number 1'b0]", "[number 1'b1]", "[number 1'bx]", "[number 1'bz]", "[number 1'bX]", "[number 1'bZ]", "[number 1'B0]", "[number 1'B1]", "[number 1'Bx]", "[number 1'Bz]", "[number 1'BX]", "[number 1'BZ]", "[number 1'b0]", "[number 1'b1]", "[number 2'b01]", "[number 2'bxz]", "[number 2'b11]", "[number 2'b10]", "[number 2'b1Z]", "[number 12'b0101_0101_0101]", "[number 1'b 0]", "[number 'b0101]" ); MT("octal_literals", "[number 3'o7]", "[number 3'O7]", "[number 3'so7]", "[number 3'SO7]" ); MT("decimal_literals", "[number 0]", "[number 1]", "[number 7]", "[number 123_456]", "[number 'd33]", "[number 8'd255]", "[number 8'D255]", "[number 8'sd255]", "[number 8'SD255]", "[number 32'd123]", "[number 32 'd123]", "[number 32 'd 123]" ); MT("hex_literals", "[number 4'h0]", "[number 4'ha]", "[number 4'hF]", "[number 4'hx]", "[number 4'hz]", "[number 4'hX]", "[number 4'hZ]", "[number 32'hdc78]", "[number 32'hDC78]", "[number 32 'hDC78]", "[number 32'h DC78]", "[number 32 'h DC78]", "[number 32'h44x7]", "[number 32'hFFF?]" ); MT("real_number_literals", "[number 1.2]", "[number 0.1]", "[number 2394.26331]", "[number 1.2E12]", "[number 1.2e12]", "[number 1.30e-2]", "[number 0.1e-0]", "[number 23E10]", "[number 29E-2]", "[number 236.123_763_e-12]" ); MT("operators", "[meta ^]" ); MT("keywords", "[keyword logic]", "[keyword logic] [variable foo]", "[keyword reg] [variable abc]" ); MT("variables", "[variable _leading_underscore]", "[variable _if]", "[number 12] [variable foo]", "[variable foo] [number 14]" ); MT("tick_defines", "[def `FOO]", "[def `foo]", "[def `FOO_bar]" ); MT("system_calls", "[meta $display]", "[meta $vpi_printf]" ); MT("line_comment", "[comment // Hello world]"); // Alignment tests MT("align_port_map_style1", /** * mod mod(.a(a), * .b(b) * ); */ "[variable mod] [variable mod][bracket (].[variable a][bracket (][variable a][bracket )],", " .[variable b][bracket (][variable b][bracket )]", " [bracket )];", "" ); MT("align_port_map_style2", /** * mod mod( * .a(a), * .b(b) * ); */ "[variable mod] [variable mod][bracket (]", " .[variable a][bracket (][variable a][bracket )],", " .[variable b][bracket (][variable b][bracket )]", "[bracket )];", "" ); // Indentation tests MT("indent_single_statement_if", "[keyword if] [bracket (][variable foo][bracket )]", " [keyword break];", "" ); MT("no_indent_after_single_line_if", "[keyword if] [bracket (][variable foo][bracket )] [keyword break];", "" ); MT("indent_after_if_begin_same_line", "[keyword if] [bracket (][variable foo][bracket )] [keyword begin]", " [keyword break];", " [keyword break];", "[keyword end]", "" ); MT("indent_after_if_begin_next_line", "[keyword if] [bracket (][variable foo][bracket )]", " [keyword begin]", " [keyword break];", " [keyword break];", " [keyword end]", "" ); MT("indent_single_statement_if_else", "[keyword if] [bracket (][variable foo][bracket )]", " [keyword break];", "[keyword else]", " [keyword break];", "" ); MT("indent_if_else_begin_same_line", "[keyword if] [bracket (][variable foo][bracket )] [keyword begin]", " [keyword break];", " [keyword break];", "[keyword end] [keyword else] [keyword begin]", " [keyword break];", " [keyword break];", "[keyword end]", "" ); MT("indent_if_else_begin_next_line", "[keyword if] [bracket (][variable foo][bracket )]", " [keyword begin]", " [keyword break];", " [keyword break];", " [keyword end]", "[keyword else]", " [keyword begin]", " [keyword break];", " [keyword break];", " [keyword end]", "" ); MT("indent_if_nested_without_begin", "[keyword if] [bracket (][variable foo][bracket )]", " [keyword if] [bracket (][variable foo][bracket )]", " [keyword if] [bracket (][variable foo][bracket )]", " [keyword break];", "" ); MT("indent_case", "[keyword case] [bracket (][variable state][bracket )]", " [variable FOO]:", " [keyword break];", " [variable BAR]:", " [keyword break];", "[keyword endcase]", "" ); MT("unindent_after_end_with_preceding_text", "[keyword begin]", " [keyword break]; [keyword end]", "" ); MT("export_function_one_line_does_not_indent", "[keyword export] [string \"DPI-C\"] [keyword function] [variable helloFromSV];", "" ); MT("export_task_one_line_does_not_indent", "[keyword export] [string \"DPI-C\"] [keyword task] [variable helloFromSV];", "" ); MT("export_function_two_lines_indents_properly", "[keyword export]", " [string \"DPI-C\"] [keyword function] [variable helloFromSV];", "" ); MT("export_task_two_lines_indents_properly", "[keyword export]", " [string \"DPI-C\"] [keyword task] [variable helloFromSV];", "" ); MT("import_function_one_line_does_not_indent", "[keyword import] [string \"DPI-C\"] [keyword function] [variable helloFromC];", "" ); MT("import_task_one_line_does_not_indent", "[keyword import] [string \"DPI-C\"] [keyword task] [variable helloFromC];", "" ); MT("import_package_single_line_does_not_indent", "[keyword import] [variable p]::[variable x];", "[keyword import] [variable p]::[variable y];", "" ); MT("covergroup_with_function_indents_properly", "[keyword covergroup] [variable cg] [keyword with] [keyword function] [variable sample][bracket (][keyword bit] [variable b][bracket )];", " [variable c] : [keyword coverpoint] [variable c];", "[keyword endgroup]: [variable cg]", "" ); })(); plugins/file-manager-advanced/application/library/codemirror/mode/verilog/verilog.js000064400000045414147176754550025070 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("verilog", function(config, parserConfig) { var indentUnit = config.indentUnit, statementIndentUnit = parserConfig.statementIndentUnit || indentUnit, dontAlignCalls = parserConfig.dontAlignCalls, noIndentKeywords = parserConfig.noIndentKeywords || [], multiLineStrings = parserConfig.multiLineStrings, hooks = parserConfig.hooks || {}; function words(str) { var obj = {}, words = str.split(" "); for (var i = 0; i < words.length; ++i) obj[words[i]] = true; return obj; } /** * Keywords from IEEE 1800-2012 */ var keywords = words( "accept_on alias always always_comb always_ff always_latch and assert assign assume automatic before begin bind " + "bins binsof bit break buf bufif0 bufif1 byte case casex casez cell chandle checker class clocking cmos config " + "const constraint context continue cover covergroup coverpoint cross deassign default defparam design disable " + "dist do edge else end endcase endchecker endclass endclocking endconfig endfunction endgenerate endgroup " + "endinterface endmodule endpackage endprimitive endprogram endproperty endspecify endsequence endtable endtask " + "enum event eventually expect export extends extern final first_match for force foreach forever fork forkjoin " + "function generate genvar global highz0 highz1 if iff ifnone ignore_bins illegal_bins implements implies import " + "incdir include initial inout input inside instance int integer interconnect interface intersect join join_any " + "join_none large let liblist library local localparam logic longint macromodule matches medium modport module " + "nand negedge nettype new nexttime nmos nor noshowcancelled not notif0 notif1 null or output package packed " + "parameter pmos posedge primitive priority program property protected pull0 pull1 pulldown pullup " + "pulsestyle_ondetect pulsestyle_onevent pure rand randc randcase randsequence rcmos real realtime ref reg " + "reject_on release repeat restrict return rnmos rpmos rtran rtranif0 rtranif1 s_always s_eventually s_nexttime " + "s_until s_until_with scalared sequence shortint shortreal showcancelled signed small soft solve specify " + "specparam static string strong strong0 strong1 struct super supply0 supply1 sync_accept_on sync_reject_on " + "table tagged task this throughout time timeprecision timeunit tran tranif0 tranif1 tri tri0 tri1 triand trior " + "trireg type typedef union unique unique0 unsigned until until_with untyped use uwire var vectored virtual void " + "wait wait_order wand weak weak0 weak1 while wildcard wire with within wor xnor xor"); /** Operators from IEEE 1800-2012 unary_operator ::= + | - | ! | ~ | & | ~& | | | ~| | ^ | ~^ | ^~ binary_operator ::= + | - | * | / | % | == | != | === | !== | ==? | !=? | && | || | ** | < | <= | > | >= | & | | | ^ | ^~ | ~^ | >> | << | >>> | <<< | -> | <-> inc_or_dec_operator ::= ++ | -- unary_module_path_operator ::= ! | ~ | & | ~& | | | ~| | ^ | ~^ | ^~ binary_module_path_operator ::= == | != | && | || | & | | | ^ | ^~ | ~^ */ var isOperatorChar = /[\+\-\*\/!~&|^%=?:]/; var isBracketChar = /[\[\]{}()]/; var unsignedNumber = /\d[0-9_]*/; var decimalLiteral = /\d*\s*'s?d\s*\d[0-9_]*/i; var binaryLiteral = /\d*\s*'s?b\s*[xz01][xz01_]*/i; var octLiteral = /\d*\s*'s?o\s*[xz0-7][xz0-7_]*/i; var hexLiteral = /\d*\s*'s?h\s*[0-9a-fxz?][0-9a-fxz?_]*/i; var realLiteral = /(\d[\d_]*(\.\d[\d_]*)?E-?[\d_]+)|(\d[\d_]*\.\d[\d_]*)/i; var closingBracketOrWord = /^((\w+)|[)}\]])/; var closingBracket = /[)}\]]/; var curPunc; var curKeyword; // Block openings which are closed by a matching keyword in the form of ("end" + keyword) // E.g. "task" => "endtask" var blockKeywords = words( "case checker class clocking config function generate interface module package" + "primitive program property specify sequence table task" ); // Opening/closing pairs var openClose = {}; for (var keyword in blockKeywords) { openClose[keyword] = "end" + keyword; } openClose["begin"] = "end"; openClose["casex"] = "endcase"; openClose["casez"] = "endcase"; openClose["do" ] = "while"; openClose["fork" ] = "join;join_any;join_none"; openClose["covergroup"] = "endgroup"; for (var i in noIndentKeywords) { var keyword = noIndentKeywords[i]; if (openClose[keyword]) { openClose[keyword] = undefined; } } // Keywords which open statements that are ended with a semi-colon var statementKeywords = words("always always_comb always_ff always_latch assert assign assume else export for foreach forever if import initial repeat while"); function tokenBase(stream, state) { var ch = stream.peek(), style; if (hooks[ch] && (style = hooks[ch](stream, state)) != false) return style; if (hooks.tokenBase && (style = hooks.tokenBase(stream, state)) != false) return style; if (/[,;:\.]/.test(ch)) { curPunc = stream.next(); return null; } if (isBracketChar.test(ch)) { curPunc = stream.next(); return "bracket"; } // Macros (tick-defines) if (ch == '`') { stream.next(); if (stream.eatWhile(/[\w\$_]/)) { return "def"; } else { return null; } } // System calls if (ch == '$') { stream.next(); if (stream.eatWhile(/[\w\$_]/)) { return "meta"; } else { return null; } } // Time literals if (ch == '#') { stream.next(); stream.eatWhile(/[\d_.]/); return "def"; } // Strings if (ch == '"') { stream.next(); state.tokenize = tokenString(ch); return state.tokenize(stream, state); } // Comments if (ch == "/") { stream.next(); if (stream.eat("*")) { state.tokenize = tokenComment; return tokenComment(stream, state); } if (stream.eat("/")) { stream.skipToEnd(); return "comment"; } stream.backUp(1); } // Numeric literals if (stream.match(realLiteral) || stream.match(decimalLiteral) || stream.match(binaryLiteral) || stream.match(octLiteral) || stream.match(hexLiteral) || stream.match(unsignedNumber) || stream.match(realLiteral)) { return "number"; } // Operators if (stream.eatWhile(isOperatorChar)) { return "meta"; } // Keywords / plain variables if (stream.eatWhile(/[\w\$_]/)) { var cur = stream.current(); if (keywords[cur]) { if (openClose[cur]) { curPunc = "newblock"; } if (statementKeywords[cur]) { curPunc = "newstatement"; } curKeyword = cur; return "keyword"; } return "variable"; } stream.next(); return null; } function tokenString(quote) { return function(stream, state) { var escaped = false, next, end = false; while ((next = stream.next()) != null) { if (next == quote && !escaped) {end = true; break;} escaped = !escaped && next == "\\"; } if (end || !(escaped || multiLineStrings)) state.tokenize = tokenBase; return "string"; }; } function tokenComment(stream, state) { var maybeEnd = false, ch; while (ch = stream.next()) { if (ch == "/" && maybeEnd) { state.tokenize = tokenBase; break; } maybeEnd = (ch == "*"); } return "comment"; } function Context(indented, column, type, align, prev) { this.indented = indented; this.column = column; this.type = type; this.align = align; this.prev = prev; } function pushContext(state, col, type) { var indent = state.indented; var c = new Context(indent, col, type, null, state.context); return state.context = c; } function popContext(state) { var t = state.context.type; if (t == ")" || t == "]" || t == "}") { state.indented = state.context.indented; } return state.context = state.context.prev; } function isClosing(text, contextClosing) { if (text == contextClosing) { return true; } else { // contextClosing may be multiple keywords separated by ; var closingKeywords = contextClosing.split(";"); for (var i in closingKeywords) { if (text == closingKeywords[i]) { return true; } } return false; } } function buildElectricInputRegEx() { // Reindentation should occur on any bracket char: {}()[] // or on a match of any of the block closing keywords, at // the end of a line var allClosings = []; for (var i in openClose) { if (openClose[i]) { var closings = openClose[i].split(";"); for (var j in closings) { allClosings.push(closings[j]); } } } var re = new RegExp("[{}()\\[\\]]|(" + allClosings.join("|") + ")$"); return re; } // Interface return { // Regex to force current line to reindent electricInput: buildElectricInputRegEx(), startState: function(basecolumn) { var state = { tokenize: null, context: new Context((basecolumn || 0) - indentUnit, 0, "top", false), indented: 0, startOfLine: true }; if (hooks.startState) hooks.startState(state); return state; }, token: function(stream, state) { var ctx = state.context; if (stream.sol()) { if (ctx.align == null) ctx.align = false; state.indented = stream.indentation(); state.startOfLine = true; } if (hooks.token) hooks.token(stream, state); if (stream.eatSpace()) return null; curPunc = null; curKeyword = null; var style = (state.tokenize || tokenBase)(stream, state); if (style == "comment" || style == "meta" || style == "variable") return style; if (ctx.align == null) ctx.align = true; if (curPunc == ctx.type) { popContext(state); } else if ((curPunc == ";" && ctx.type == "statement") || (ctx.type && isClosing(curKeyword, ctx.type))) { ctx = popContext(state); while (ctx && ctx.type == "statement") ctx = popContext(state); } else if (curPunc == "{") { pushContext(state, stream.column(), "}"); } else if (curPunc == "[") { pushContext(state, stream.column(), "]"); } else if (curPunc == "(") { pushContext(state, stream.column(), ")"); } else if (ctx && ctx.type == "endcase" && curPunc == ":") { pushContext(state, stream.column(), "statement"); } else if (curPunc == "newstatement") { pushContext(state, stream.column(), "statement"); } else if (curPunc == "newblock") { if (curKeyword == "function" && ctx && (ctx.type == "statement" || ctx.type == "endgroup")) { // The 'function' keyword can appear in some other contexts where it actually does not // indicate a function (import/export DPI and covergroup definitions). // Do nothing in this case } else if (curKeyword == "task" && ctx && ctx.type == "statement") { // Same thing for task } else { var close = openClose[curKeyword]; pushContext(state, stream.column(), close); } } state.startOfLine = false; return style; }, indent: function(state, textAfter) { if (state.tokenize != tokenBase && state.tokenize != null) return CodeMirror.Pass; if (hooks.indent) { var fromHook = hooks.indent(state); if (fromHook >= 0) return fromHook; } var ctx = state.context, firstChar = textAfter && textAfter.charAt(0); if (ctx.type == "statement" && firstChar == "}") ctx = ctx.prev; var closing = false; var possibleClosing = textAfter.match(closingBracketOrWord); if (possibleClosing) closing = isClosing(possibleClosing[0], ctx.type); if (ctx.type == "statement") return ctx.indented + (firstChar == "{" ? 0 : statementIndentUnit); else if (closingBracket.test(ctx.type) && ctx.align && !dontAlignCalls) return ctx.column + (closing ? 0 : 1); else if (ctx.type == ")" && !closing) return ctx.indented + statementIndentUnit; else return ctx.indented + (closing ? 0 : indentUnit); }, blockCommentStart: "/*", blockCommentEnd: "*/", lineComment: "//" }; }); CodeMirror.defineMIME("text/x-verilog", { name: "verilog" }); CodeMirror.defineMIME("text/x-systemverilog", { name: "verilog" }); // TLVVerilog mode var tlvchScopePrefixes = { ">": "property", "->": "property", "-": "hr", "|": "link", "?$": "qualifier", "?*": "qualifier", "@-": "variable-3", "@": "variable-3", "?": "qualifier" }; function tlvGenIndent(stream, state) { var tlvindentUnit = 2; var rtnIndent = -1, indentUnitRq = 0, curIndent = stream.indentation(); switch (state.tlvCurCtlFlowChar) { case "\\": curIndent = 0; break; case "|": if (state.tlvPrevPrevCtlFlowChar == "@") { indentUnitRq = -2; //-2 new pipe rq after cur pipe break; } if (tlvchScopePrefixes[state.tlvPrevCtlFlowChar]) indentUnitRq = 1; // +1 new scope break; case "M": // m4 if (state.tlvPrevPrevCtlFlowChar == "@") { indentUnitRq = -2; //-2 new inst rq after pipe break; } if (tlvchScopePrefixes[state.tlvPrevCtlFlowChar]) indentUnitRq = 1; // +1 new scope break; case "@": if (state.tlvPrevCtlFlowChar == "S") indentUnitRq = -1; // new pipe stage after stmts if (state.tlvPrevCtlFlowChar == "|") indentUnitRq = 1; // 1st pipe stage break; case "S": if (state.tlvPrevCtlFlowChar == "@") indentUnitRq = 1; // flow in pipe stage if (tlvchScopePrefixes[state.tlvPrevCtlFlowChar]) indentUnitRq = 1; // +1 new scope break; } var statementIndentUnit = tlvindentUnit; rtnIndent = curIndent + (indentUnitRq*statementIndentUnit); return rtnIndent >= 0 ? rtnIndent : curIndent; } CodeMirror.defineMIME("text/x-tlv", { name: "verilog", hooks: { "\\": function(stream, state) { var vxIndent = 0, style = false; var curPunc = stream.string; if ((stream.sol()) && ((/\\SV/.test(stream.string)) || (/\\TLV/.test(stream.string)))) { curPunc = (/\\TLV_version/.test(stream.string)) ? "\\TLV_version" : stream.string; stream.skipToEnd(); if (curPunc == "\\SV" && state.vxCodeActive) {state.vxCodeActive = false;}; if ((/\\TLV/.test(curPunc) && !state.vxCodeActive) || (curPunc=="\\TLV_version" && state.vxCodeActive)) {state.vxCodeActive = true;}; style = "keyword"; state.tlvCurCtlFlowChar = state.tlvPrevPrevCtlFlowChar = state.tlvPrevCtlFlowChar = ""; if (state.vxCodeActive == true) { state.tlvCurCtlFlowChar = "\\"; vxIndent = tlvGenIndent(stream, state); } state.vxIndentRq = vxIndent; } return style; }, tokenBase: function(stream, state) { var vxIndent = 0, style = false; var tlvisOperatorChar = /[\[\]=:]/; var tlvkpScopePrefixs = { "**":"variable-2", "*":"variable-2", "$$":"variable", "$":"variable", "^^":"attribute", "^":"attribute"}; var ch = stream.peek(); var vxCurCtlFlowCharValueAtStart = state.tlvCurCtlFlowChar; if (state.vxCodeActive == true) { if (/[\[\]{}\(\);\:]/.test(ch)) { // bypass nesting and 1 char punc style = "meta"; stream.next(); } else if (ch == "/") { stream.next(); if (stream.eat("/")) { stream.skipToEnd(); style = "comment"; state.tlvCurCtlFlowChar = "S"; } else { stream.backUp(1); } } else if (ch == "@") { // pipeline stage style = tlvchScopePrefixes[ch]; state.tlvCurCtlFlowChar = "@"; stream.next(); stream.eatWhile(/[\w\$_]/); } else if (stream.match(/\b[mM]4+/, true)) { // match: function(pattern, consume, caseInsensitive) // m4 pre proc stream.skipTo("("); style = "def"; state.tlvCurCtlFlowChar = "M"; } else if (ch == "!" && stream.sol()) { // v stmt in tlv region // state.tlvCurCtlFlowChar = "S"; style = "comment"; stream.next(); } else if (tlvisOperatorChar.test(ch)) { // operators stream.eatWhile(tlvisOperatorChar); style = "operator"; } else if (ch == "#") { // phy hier state.tlvCurCtlFlowChar = (state.tlvCurCtlFlowChar == "") ? ch : state.tlvCurCtlFlowChar; stream.next(); stream.eatWhile(/[+-]\d/); style = "tag"; } else if (tlvkpScopePrefixs.propertyIsEnumerable(ch)) { // special TLV operators style = tlvkpScopePrefixs[ch]; state.tlvCurCtlFlowChar = state.tlvCurCtlFlowChar == "" ? "S" : state.tlvCurCtlFlowChar; // stmt stream.next(); stream.match(/[a-zA-Z_0-9]+/); } else if (style = tlvchScopePrefixes[ch] || false) { // special TLV operators state.tlvCurCtlFlowChar = state.tlvCurCtlFlowChar == "" ? ch : state.tlvCurCtlFlowChar; stream.next(); stream.match(/[a-zA-Z_0-9]+/); } if (state.tlvCurCtlFlowChar != vxCurCtlFlowCharValueAtStart) { // flow change vxIndent = tlvGenIndent(stream, state); state.vxIndentRq = vxIndent; } } return style; }, token: function(stream, state) { if (state.vxCodeActive == true && stream.sol() && state.tlvCurCtlFlowChar != "") { state.tlvPrevPrevCtlFlowChar = state.tlvPrevCtlFlowChar; state.tlvPrevCtlFlowChar = state.tlvCurCtlFlowChar; state.tlvCurCtlFlowChar = ""; } }, indent: function(state) { return (state.vxCodeActive == true) ? state.vxIndentRq : -1; }, startState: function(state) { state.tlvCurCtlFlowChar = ""; state.tlvPrevCtlFlowChar = ""; state.tlvPrevPrevCtlFlowChar = ""; state.vxCodeActive = true; state.vxIndentRq = 0; } } }); }); plugins/file-manager-advanced/application/library/codemirror/mode/vhdl/index.html000064400000004666147176754550024352 0ustar00 CodeMirror: VHDL mode

    VHDL mode

    Syntax highlighting and indentation for the VHDL language.

    Configuration options:

    • atoms - List of atom words. Default: "null"
    • hooks - List of meta hooks. Default: ["`", "$"]
    • multiLineStrings - Whether multi-line strings are accepted. Default: false

    MIME types defined: text/x-vhdl.

    plugins/file-manager-advanced/application/library/codemirror/mode/vhdl/vhdl.js000064400000015060147176754550023636 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE // Originally written by Alf Nielsen, re-written by Michael Zhou (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; function words(str) { var obj = {}, words = str.split(","); for (var i = 0; i < words.length; ++i) { var allCaps = words[i].toUpperCase(); var firstCap = words[i].charAt(0).toUpperCase() + words[i].slice(1); obj[words[i]] = true; obj[allCaps] = true; obj[firstCap] = true; } return obj; } function metaHook(stream) { stream.eatWhile(/[\w\$_]/); return "meta"; } CodeMirror.defineMode("vhdl", function(config, parserConfig) { var indentUnit = config.indentUnit, atoms = parserConfig.atoms || words("null"), hooks = parserConfig.hooks || {"`": metaHook, "$": metaHook}, multiLineStrings = parserConfig.multiLineStrings; var keywords = words("abs,access,after,alias,all,and,architecture,array,assert,attribute,begin,block," + "body,buffer,bus,case,component,configuration,constant,disconnect,downto,else,elsif,end,end block,end case," + "end component,end for,end generate,end if,end loop,end process,end record,end units,entity,exit,file,for," + "function,generate,generic,generic map,group,guarded,if,impure,in,inertial,inout,is,label,library,linkage," + "literal,loop,map,mod,nand,new,next,nor,null,of,on,open,or,others,out,package,package body,port,port map," + "postponed,procedure,process,pure,range,record,register,reject,rem,report,return,rol,ror,select,severity,signal," + "sla,sll,sra,srl,subtype,then,to,transport,type,unaffected,units,until,use,variable,wait,when,while,with,xnor,xor"); var blockKeywords = words("architecture,entity,begin,case,port,else,elsif,end,for,function,if"); var isOperatorChar = /[&|~> CodeMirror: Vue.js mode

    Vue.js mode

    MIME types defined: text/x-vue

    plugins/file-manager-advanced/application/library/codemirror/mode/vue/vue.js000064400000004702147176754550023343 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function (mod) { "use strict"; if (typeof exports === "object" && typeof module === "object") {// CommonJS mod(require("../../lib/codemirror"), require("../../addon/mode/overlay"), require("../xml/xml"), require("../javascript/javascript"), require("../coffeescript/coffeescript"), require("../css/css"), require("../sass/sass"), require("../stylus/stylus"), require("../pug/pug"), require("../handlebars/handlebars")); } else if (typeof define === "function" && define.amd) { // AMD define(["../../lib/codemirror", "../../addon/mode/overlay", "../xml/xml", "../javascript/javascript", "../coffeescript/coffeescript", "../css/css", "../sass/sass", "../stylus/stylus", "../pug/pug", "../handlebars/handlebars"], mod); } else { // Plain browser env mod(CodeMirror); } })(function (CodeMirror) { var tagLanguages = { script: [ ["lang", /coffee(script)?/, "coffeescript"], ["type", /^(?:text|application)\/(?:x-)?coffee(?:script)?$/, "coffeescript"] ], style: [ ["lang", /^stylus$/i, "stylus"], ["lang", /^sass$/i, "sass"], ["type", /^(text\/)?(x-)?styl(us)?$/i, "stylus"], ["type", /^text\/sass/i, "sass"] ], template: [ ["lang", /^vue-template$/i, "vue"], ["lang", /^pug$/i, "pug"], ["lang", /^handlebars$/i, "handlebars"], ["type", /^(text\/)?(x-)?pug$/i, "pug"], ["type", /^text\/x-handlebars-template$/i, "handlebars"], [null, null, "vue-template"] ] }; CodeMirror.defineMode("vue-template", function (config, parserConfig) { var mustacheOverlay = { token: function (stream) { if (stream.match(/^\{\{.*?\}\}/)) return "meta mustache"; while (stream.next() && !stream.match("{{", false)) {} return null; } }; return CodeMirror.overlayMode(CodeMirror.getMode(config, parserConfig.backdrop || "text/html"), mustacheOverlay); }); CodeMirror.defineMode("vue", function (config) { return CodeMirror.getMode(config, {name: "htmlmixed", tags: tagLanguages}); }, "htmlmixed", "xml", "javascript", "coffeescript", "css", "sass", "stylus", "pug", "handlebars"); CodeMirror.defineMIME("script/x-vue", "vue"); }); plugins/file-manager-advanced/application/library/codemirror/mode/webidl/index.html000064400000004173147176754550024654 0ustar00 CodeMirror: Web IDL mode

    Web IDL mode

    MIME type defined: text/x-webidl.

    plugins/file-manager-advanced/application/library/codemirror/mode/webidl/webidl.js000064400000013230147176754550024455 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; function wordRegexp(words) { return new RegExp("^((" + words.join(")|(") + "))\\b"); }; var builtinArray = [ "Clamp", "Constructor", "EnforceRange", "Exposed", "ImplicitThis", "Global", "PrimaryGlobal", "LegacyArrayClass", "LegacyUnenumerableNamedProperties", "LenientThis", "NamedConstructor", "NewObject", "NoInterfaceObject", "OverrideBuiltins", "PutForwards", "Replaceable", "SameObject", "TreatNonObjectAsNull", "TreatNullAs", "EmptyString", "Unforgeable", "Unscopeable" ]; var builtins = wordRegexp(builtinArray); var typeArray = [ "unsigned", "short", "long", // UnsignedIntegerType "unrestricted", "float", "double", // UnrestrictedFloatType "boolean", "byte", "octet", // Rest of PrimitiveType "Promise", // PromiseType "ArrayBuffer", "DataView", "Int8Array", "Int16Array", "Int32Array", "Uint8Array", "Uint16Array", "Uint32Array", "Uint8ClampedArray", "Float32Array", "Float64Array", // BufferRelatedType "ByteString", "DOMString", "USVString", "sequence", "object", "RegExp", "Error", "DOMException", "FrozenArray", // Rest of NonAnyType "any", // Rest of SingleType "void" // Rest of ReturnType ]; var types = wordRegexp(typeArray); var keywordArray = [ "attribute", "callback", "const", "deleter", "dictionary", "enum", "getter", "implements", "inherit", "interface", "iterable", "legacycaller", "maplike", "partial", "required", "serializer", "setlike", "setter", "static", "stringifier", "typedef", // ArgumentNameKeyword except // "unrestricted" "optional", "readonly", "or" ]; var keywords = wordRegexp(keywordArray); var atomArray = [ "true", "false", // BooleanLiteral "Infinity", "NaN", // FloatLiteral "null" // Rest of ConstValue ]; var atoms = wordRegexp(atomArray); CodeMirror.registerHelper("hintWords", "webidl", builtinArray.concat(typeArray).concat(keywordArray).concat(atomArray)); var startDefArray = ["callback", "dictionary", "enum", "interface"]; var startDefs = wordRegexp(startDefArray); var endDefArray = ["typedef"]; var endDefs = wordRegexp(endDefArray); var singleOperators = /^[:<=>?]/; var integers = /^-?([1-9][0-9]*|0[Xx][0-9A-Fa-f]+|0[0-7]*)/; var floats = /^-?(([0-9]+\.[0-9]*|[0-9]*\.[0-9]+)([Ee][+-]?[0-9]+)?|[0-9]+[Ee][+-]?[0-9]+)/; var identifiers = /^_?[A-Za-z][0-9A-Z_a-z-]*/; var identifiersEnd = /^_?[A-Za-z][0-9A-Z_a-z-]*(?=\s*;)/; var strings = /^"[^"]*"/; var multilineComments = /^\/\*.*?\*\//; var multilineCommentsStart = /^\/\*.*/; var multilineCommentsEnd = /^.*?\*\//; function readToken(stream, state) { // whitespace if (stream.eatSpace()) return null; // comment if (state.inComment) { if (stream.match(multilineCommentsEnd)) { state.inComment = false; return "comment"; } stream.skipToEnd(); return "comment"; } if (stream.match("//")) { stream.skipToEnd(); return "comment"; } if (stream.match(multilineComments)) return "comment"; if (stream.match(multilineCommentsStart)) { state.inComment = true; return "comment"; } // integer and float if (stream.match(/^-?[0-9\.]/, false)) { if (stream.match(integers) || stream.match(floats)) return "number"; } // string if (stream.match(strings)) return "string"; // identifier if (state.startDef && stream.match(identifiers)) return "def"; if (state.endDef && stream.match(identifiersEnd)) { state.endDef = false; return "def"; } if (stream.match(keywords)) return "keyword"; if (stream.match(types)) { var lastToken = state.lastToken; var nextToken = (stream.match(/^\s*(.+?)\b/, false) || [])[1]; if (lastToken === ":" || lastToken === "implements" || nextToken === "implements" || nextToken === "=") { // Used as identifier return "builtin"; } else { // Used as type return "variable-3"; } } if (stream.match(builtins)) return "builtin"; if (stream.match(atoms)) return "atom"; if (stream.match(identifiers)) return "variable"; // other if (stream.match(singleOperators)) return "operator"; // unrecognized stream.next(); return null; }; CodeMirror.defineMode("webidl", function() { return { startState: function() { return { // Is in multiline comment inComment: false, // Last non-whitespace, matched token lastToken: "", // Next token is a definition startDef: false, // Last token of the statement is a definition endDef: false }; }, token: function(stream, state) { var style = readToken(stream, state); if (style) { var cur = stream.current(); state.lastToken = cur; if (style === "keyword") { state.startDef = startDefs.test(cur); state.endDef = state.endDef || endDefs.test(cur); } else { state.startDef = false; } } return style; } }; }); CodeMirror.defineMIME("text/x-webidl", "webidl"); }); plugins/file-manager-advanced/application/library/codemirror/mode/xml/index.html000064400000004173147176754550024206 0ustar00 CodeMirror: XML mode

    XML mode

    The XML mode supports these configuration parameters:

    htmlMode (boolean)
    This switches the mode to parse HTML instead of XML. This means attributes do not have to be quoted, and some elements (such as br) do not require a closing tag.
    matchClosing (boolean)
    Controls whether the mode checks that close tags match the corresponding opening tag, and highlights mismatches as errors. Defaults to true.
    alignCDATA (boolean)
    Setting this to true will force the opening tag of CDATA blocks to not be indented.

    MIME types defined: application/xml, text/html.

    plugins/file-manager-advanced/application/library/codemirror/mode/xml/test.js000064400000003336147176754550023526 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function() { var mode = CodeMirror.getMode({indentUnit: 2}, "xml"), mname = "xml"; function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), mname); } MT("matching", "[tag&bracket <][tag top][tag&bracket >]", " text", " [tag&bracket <][tag inner][tag&bracket />]", "[tag&bracket ]"); MT("nonmatching", "[tag&bracket <][tag top][tag&bracket >]", " [tag&bracket <][tag inner][tag&bracket />]", " [tag&bracket ]"); MT("doctype", "[meta ]", "[tag&bracket <][tag top][tag&bracket />]"); MT("cdata", "[tag&bracket <][tag top][tag&bracket >]", " [atom ]", "[tag&bracket ]"); // HTML tests mode = CodeMirror.getMode({indentUnit: 2}, "text/html"); MT("selfclose", "[tag&bracket <][tag html][tag&bracket >]", " [tag&bracket <][tag link] [attribute rel]=[string stylesheet] [attribute href]=[string \"/foobar\"][tag&bracket >]", "[tag&bracket ]"); MT("list", "[tag&bracket <][tag ol][tag&bracket >]", " [tag&bracket <][tag li][tag&bracket >]one", " [tag&bracket <][tag li][tag&bracket >]two", "[tag&bracket ]"); MT("valueless", "[tag&bracket <][tag input] [attribute type]=[string checkbox] [attribute checked][tag&bracket />]"); MT("pThenArticle", "[tag&bracket <][tag p][tag&bracket >]", " foo", "[tag&bracket <][tag article][tag&bracket >]bar"); })(); plugins/file-manager-advanced/application/library/codemirror/mode/xml/xml.js000064400000030432147176754550023344 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; var htmlConfig = { autoSelfClosers: {'area': true, 'base': true, 'br': true, 'col': true, 'command': true, 'embed': true, 'frame': true, 'hr': true, 'img': true, 'input': true, 'keygen': true, 'link': true, 'meta': true, 'param': true, 'source': true, 'track': true, 'wbr': true, 'menuitem': true}, implicitlyClosed: {'dd': true, 'li': true, 'optgroup': true, 'option': true, 'p': true, 'rp': true, 'rt': true, 'tbody': true, 'td': true, 'tfoot': true, 'th': true, 'tr': true}, contextGrabbers: { 'dd': {'dd': true, 'dt': true}, 'dt': {'dd': true, 'dt': true}, 'li': {'li': true}, 'option': {'option': true, 'optgroup': true}, 'optgroup': {'optgroup': true}, 'p': {'address': true, 'article': true, 'aside': true, 'blockquote': true, 'dir': true, 'div': true, 'dl': true, 'fieldset': true, 'footer': true, 'form': true, 'h1': true, 'h2': true, 'h3': true, 'h4': true, 'h5': true, 'h6': true, 'header': true, 'hgroup': true, 'hr': true, 'menu': true, 'nav': true, 'ol': true, 'p': true, 'pre': true, 'section': true, 'table': true, 'ul': true}, 'rp': {'rp': true, 'rt': true}, 'rt': {'rp': true, 'rt': true}, 'tbody': {'tbody': true, 'tfoot': true}, 'td': {'td': true, 'th': true}, 'tfoot': {'tbody': true}, 'th': {'td': true, 'th': true}, 'thead': {'tbody': true, 'tfoot': true}, 'tr': {'tr': true} }, doNotIndent: {"pre": true}, allowUnquoted: true, allowMissing: true, caseFold: true } var xmlConfig = { autoSelfClosers: {}, implicitlyClosed: {}, contextGrabbers: {}, doNotIndent: {}, allowUnquoted: false, allowMissing: false, caseFold: false } CodeMirror.defineMode("xml", function(editorConf, config_) { var indentUnit = editorConf.indentUnit var config = {} var defaults = config_.htmlMode ? htmlConfig : xmlConfig for (var prop in defaults) config[prop] = defaults[prop] for (var prop in config_) config[prop] = config_[prop] // Return variables for tokenizers var type, setStyle; function inText(stream, state) { function chain(parser) { state.tokenize = parser; return parser(stream, state); } var ch = stream.next(); if (ch == "<") { if (stream.eat("!")) { if (stream.eat("[")) { if (stream.match("CDATA[")) return chain(inBlock("atom", "]]>")); else return null; } else if (stream.match("--")) { return chain(inBlock("comment", "-->")); } else if (stream.match("DOCTYPE", true, true)) { stream.eatWhile(/[\w\._\-]/); return chain(doctype(1)); } else { return null; } } else if (stream.eat("?")) { stream.eatWhile(/[\w\._\-]/); state.tokenize = inBlock("meta", "?>"); return "meta"; } else { type = stream.eat("/") ? "closeTag" : "openTag"; state.tokenize = inTag; return "tag bracket"; } } else if (ch == "&") { var ok; if (stream.eat("#")) { if (stream.eat("x")) { ok = stream.eatWhile(/[a-fA-F\d]/) && stream.eat(";"); } else { ok = stream.eatWhile(/[\d]/) && stream.eat(";"); } } else { ok = stream.eatWhile(/[\w\.\-:]/) && stream.eat(";"); } return ok ? "atom" : "error"; } else { stream.eatWhile(/[^&<]/); return null; } } inText.isInText = true; function inTag(stream, state) { var ch = stream.next(); if (ch == ">" || (ch == "/" && stream.eat(">"))) { state.tokenize = inText; type = ch == ">" ? "endTag" : "selfcloseTag"; return "tag bracket"; } else if (ch == "=") { type = "equals"; return null; } else if (ch == "<") { state.tokenize = inText; state.state = baseState; state.tagName = state.tagStart = null; var next = state.tokenize(stream, state); return next ? next + " tag error" : "tag error"; } else if (/[\'\"]/.test(ch)) { state.tokenize = inAttribute(ch); state.stringStartCol = stream.column(); return state.tokenize(stream, state); } else { stream.match(/^[^\s\u00a0=<>\"\']*[^\s\u00a0=<>\"\'\/]/); return "word"; } } function inAttribute(quote) { var closure = function(stream, state) { while (!stream.eol()) { if (stream.next() == quote) { state.tokenize = inTag; break; } } return "string"; }; closure.isInAttribute = true; return closure; } function inBlock(style, terminator) { return function(stream, state) { while (!stream.eol()) { if (stream.match(terminator)) { state.tokenize = inText; break; } stream.next(); } return style; }; } function doctype(depth) { return function(stream, state) { var ch; while ((ch = stream.next()) != null) { if (ch == "<") { state.tokenize = doctype(depth + 1); return state.tokenize(stream, state); } else if (ch == ">") { if (depth == 1) { state.tokenize = inText; break; } else { state.tokenize = doctype(depth - 1); return state.tokenize(stream, state); } } } return "meta"; }; } function Context(state, tagName, startOfLine) { this.prev = state.context; this.tagName = tagName; this.indent = state.indented; this.startOfLine = startOfLine; if (config.doNotIndent.hasOwnProperty(tagName) || (state.context && state.context.noIndent)) this.noIndent = true; } function popContext(state) { if (state.context) state.context = state.context.prev; } function maybePopContext(state, nextTagName) { var parentTagName; while (true) { if (!state.context) { return; } parentTagName = state.context.tagName; if (!config.contextGrabbers.hasOwnProperty(parentTagName) || !config.contextGrabbers[parentTagName].hasOwnProperty(nextTagName)) { return; } popContext(state); } } function baseState(type, stream, state) { if (type == "openTag") { state.tagStart = stream.column(); return tagNameState; } else if (type == "closeTag") { return closeTagNameState; } else { return baseState; } } function tagNameState(type, stream, state) { if (type == "word") { state.tagName = stream.current(); setStyle = "tag"; return attrState; } else { setStyle = "error"; return tagNameState; } } function closeTagNameState(type, stream, state) { if (type == "word") { var tagName = stream.current(); if (state.context && state.context.tagName != tagName && config.implicitlyClosed.hasOwnProperty(state.context.tagName)) popContext(state); if ((state.context && state.context.tagName == tagName) || config.matchClosing === false) { setStyle = "tag"; return closeState; } else { setStyle = "tag error"; return closeStateErr; } } else { setStyle = "error"; return closeStateErr; } } function closeState(type, _stream, state) { if (type != "endTag") { setStyle = "error"; return closeState; } popContext(state); return baseState; } function closeStateErr(type, stream, state) { setStyle = "error"; return closeState(type, stream, state); } function attrState(type, _stream, state) { if (type == "word") { setStyle = "attribute"; return attrEqState; } else if (type == "endTag" || type == "selfcloseTag") { var tagName = state.tagName, tagStart = state.tagStart; state.tagName = state.tagStart = null; if (type == "selfcloseTag" || config.autoSelfClosers.hasOwnProperty(tagName)) { maybePopContext(state, tagName); } else { maybePopContext(state, tagName); state.context = new Context(state, tagName, tagStart == state.indented); } return baseState; } setStyle = "error"; return attrState; } function attrEqState(type, stream, state) { if (type == "equals") return attrValueState; if (!config.allowMissing) setStyle = "error"; return attrState(type, stream, state); } function attrValueState(type, stream, state) { if (type == "string") return attrContinuedState; if (type == "word" && config.allowUnquoted) {setStyle = "string"; return attrState;} setStyle = "error"; return attrState(type, stream, state); } function attrContinuedState(type, stream, state) { if (type == "string") return attrContinuedState; return attrState(type, stream, state); } return { startState: function(baseIndent) { var state = {tokenize: inText, state: baseState, indented: baseIndent || 0, tagName: null, tagStart: null, context: null} if (baseIndent != null) state.baseIndent = baseIndent return state }, token: function(stream, state) { if (!state.tagName && stream.sol()) state.indented = stream.indentation(); if (stream.eatSpace()) return null; type = null; var style = state.tokenize(stream, state); if ((style || type) && style != "comment") { setStyle = null; state.state = state.state(type || style, stream, state); if (setStyle) style = setStyle == "error" ? style + " error" : setStyle; } return style; }, indent: function(state, textAfter, fullLine) { var context = state.context; // Indent multi-line strings (e.g. css). if (state.tokenize.isInAttribute) { if (state.tagStart == state.indented) return state.stringStartCol + 1; else return state.indented + indentUnit; } if (context && context.noIndent) return CodeMirror.Pass; if (state.tokenize != inTag && state.tokenize != inText) return fullLine ? fullLine.match(/^(\s*)/)[0].length : 0; // Indent the starts of attribute names. if (state.tagName) { if (config.multilineTagIndentPastTag !== false) return state.tagStart + state.tagName.length + 2; else return state.tagStart + indentUnit * (config.multilineTagIndentFactor || 1); } if (config.alignCDATA && /$/, blockCommentStart: "", configuration: config.htmlMode ? "html" : "xml", helperType: config.htmlMode ? "html" : "xml", skipAttribute: function(state) { if (state.state == attrValueState) state.state = attrState } }; }); CodeMirror.defineMIME("text/xml", "xml"); CodeMirror.defineMIME("application/xml", "xml"); if (!CodeMirror.mimeModes.hasOwnProperty("text/html")) CodeMirror.defineMIME("text/html", {name: "xml", htmlMode: true}); }); plugins/file-manager-advanced/application/library/codemirror/mode/xquery/index.html000064400000020641147176754550024741 0ustar00 CodeMirror: XQuery mode

    XQuery mode

    MIME types defined: application/xquery.

    Development of the CodeMirror XQuery mode was sponsored by MarkLogic and developed by Mike Brevoort.

    plugins/file-manager-advanced/application/library/codemirror/mode/xquery/test.js000064400000011764147176754550024267 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE // Don't take these too seriously -- the expected results appear to be // based on the results of actual runs without any serious manual // verification. If a change you made causes them to fail, the test is // as likely to wrong as the code. (function() { var mode = CodeMirror.getMode({tabSize: 4}, "xquery"); function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } MT("eviltest", "[keyword xquery] [keyword version] [variable "1][keyword .][atom 0][keyword -][variable ml"][def&variable ;] [comment (: this is : a \"comment\" :)]", " [keyword let] [variable $let] [keyword :=] [variable <x] [variable attr][keyword =][variable "value">"test"<func>][def&variable ;function]() [variable $var] {[keyword function]()} {[variable $var]}[variable <][keyword /][variable func><][keyword /][variable x>]", " [keyword let] [variable $joe][keyword :=][atom 1]", " [keyword return] [keyword element] [variable element] {", " [keyword attribute] [variable attribute] { [atom 1] },", " [keyword element] [variable test] { [variable 'a'] }, [keyword attribute] [variable foo] { [variable "bar"] },", " [def&variable fn:doc]()[[ [variable foo][keyword /][variable @bar] [keyword eq] [variable $let] ]],", " [keyword //][variable x] } [comment (: a more 'evil' test :)]", " [comment (: Modified Blakeley example (: with nested comment :) ... :)]", " [keyword declare] [keyword private] [keyword function] [def&variable local:declare]() {()}[variable ;]", " [keyword declare] [keyword private] [keyword function] [def&variable local:private]() {()}[variable ;]", " [keyword declare] [keyword private] [keyword function] [def&variable local:function]() {()}[variable ;]", " [keyword declare] [keyword private] [keyword function] [def&variable local:local]() {()}[variable ;]", " [keyword let] [variable $let] [keyword :=] [variable <let>let] [variable $let] [keyword :=] [variable "let"<][keyword /let][variable >]", " [keyword return] [keyword element] [variable element] {", " [keyword attribute] [variable attribute] { [keyword try] { [def&variable xdmp:version]() } [keyword catch]([variable $e]) { [def&variable xdmp:log]([variable $e]) } },", " [keyword attribute] [variable fn:doc] { [variable "bar"] [variable castable] [keyword as] [atom xs:string] },", " [keyword element] [variable text] { [keyword text] { [variable "text"] } },", " [def&variable fn:doc]()[[ [qualifier child::][variable eq][keyword /]([variable @bar] [keyword |] [qualifier attribute::][variable attribute]) [keyword eq] [variable $let] ]],", " [keyword //][variable fn:doc]", " }"); MT("testEmptySequenceKeyword", "[string \"foo\"] [keyword instance] [keyword of] [keyword empty-sequence]()"); MT("testMultiAttr", "[tag

    ][variable hello] [variable world][tag

    ]"); MT("test namespaced variable", "[keyword declare] [keyword namespace] [variable e] [keyword =] [string \"http://example.com/ANamespace\"][variable ;declare] [keyword variable] [variable $e:exampleComThisVarIsNotRecognized] [keyword as] [keyword element]([keyword *]) [variable external;]"); MT("test EQName variable", "[keyword declare] [keyword variable] [variable $\"http://www.example.com/ns/my\":var] [keyword :=] [atom 12][variable ;]", "[tag ]{[variable $\"http://www.example.com/ns/my\":var]}[tag ]"); MT("test EQName function", "[keyword declare] [keyword function] [def&variable \"http://www.example.com/ns/my\":fn] ([variable $a] [keyword as] [atom xs:integer]) [keyword as] [atom xs:integer] {", " [variable $a] [keyword +] [atom 2]", "}[variable ;]", "[tag ]{[def&variable \"http://www.example.com/ns/my\":fn]([atom 12])}[tag ]"); MT("test EQName function with single quotes", "[keyword declare] [keyword function] [def&variable 'http://www.example.com/ns/my':fn] ([variable $a] [keyword as] [atom xs:integer]) [keyword as] [atom xs:integer] {", " [variable $a] [keyword +] [atom 2]", "}[variable ;]", "[tag ]{[def&variable 'http://www.example.com/ns/my':fn]([atom 12])}[tag ]"); MT("testProcessingInstructions", "[def&variable data]([comment&meta ]) [keyword instance] [keyword of] [atom xs:string]"); MT("testQuoteEscapeDouble", "[keyword let] [variable $rootfolder] [keyword :=] [string \"c:\\builds\\winnt\\HEAD\\qa\\scripts\\\"]", "[keyword let] [variable $keysfolder] [keyword :=] [def&variable concat]([variable $rootfolder], [string \"keys\\\"])"); })(); plugins/file-manager-advanced/application/library/codemirror/mode/xquery/xquery.js000064400000034206147176754550024641 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("xquery", function() { // The keywords object is set to the result of this self executing // function. Each keyword is a property of the keywords object whose // value is {type: atype, style: astyle} var keywords = function(){ // convenience functions used to build keywords object function kw(type) {return {type: type, style: "keyword"};} var A = kw("keyword a") , B = kw("keyword b") , C = kw("keyword c") , operator = kw("operator") , atom = {type: "atom", style: "atom"} , punctuation = {type: "punctuation", style: null} , qualifier = {type: "axis_specifier", style: "qualifier"}; // kwObj is what is return from this function at the end var kwObj = { 'if': A, 'switch': A, 'while': A, 'for': A, 'else': B, 'then': B, 'try': B, 'finally': B, 'catch': B, 'element': C, 'attribute': C, 'let': C, 'implements': C, 'import': C, 'module': C, 'namespace': C, 'return': C, 'super': C, 'this': C, 'throws': C, 'where': C, 'private': C, ',': punctuation, 'null': atom, 'fn:false()': atom, 'fn:true()': atom }; // a list of 'basic' keywords. For each add a property to kwObj with the value of // {type: basic[i], style: "keyword"} e.g. 'after' --> {type: "after", style: "keyword"} var basic = ['after','ancestor','ancestor-or-self','and','as','ascending','assert','attribute','before', 'by','case','cast','child','comment','declare','default','define','descendant','descendant-or-self', 'descending','document','document-node','element','else','eq','every','except','external','following', 'following-sibling','follows','for','function','if','import','in','instance','intersect','item', 'let','module','namespace','node','node','of','only','or','order','parent','precedes','preceding', 'preceding-sibling','processing-instruction','ref','return','returns','satisfies','schema','schema-element', 'self','some','sortby','stable','text','then','to','treat','typeswitch','union','variable','version','where', 'xquery', 'empty-sequence']; for(var i=0, l=basic.length; i < l; i++) { kwObj[basic[i]] = kw(basic[i]);}; // a list of types. For each add a property to kwObj with the value of // {type: "atom", style: "atom"} var types = ['xs:string', 'xs:float', 'xs:decimal', 'xs:double', 'xs:integer', 'xs:boolean', 'xs:date', 'xs:dateTime', 'xs:time', 'xs:duration', 'xs:dayTimeDuration', 'xs:time', 'xs:yearMonthDuration', 'numeric', 'xs:hexBinary', 'xs:base64Binary', 'xs:anyURI', 'xs:QName', 'xs:byte','xs:boolean','xs:anyURI','xf:yearMonthDuration']; for(var i=0, l=types.length; i < l; i++) { kwObj[types[i]] = atom;}; // each operator will add a property to kwObj with value of {type: "operator", style: "keyword"} var operators = ['eq', 'ne', 'lt', 'le', 'gt', 'ge', ':=', '=', '>', '>=', '<', '<=', '.', '|', '?', 'and', 'or', 'div', 'idiv', 'mod', '*', '/', '+', '-']; for(var i=0, l=operators.length; i < l; i++) { kwObj[operators[i]] = operator;}; // each axis_specifiers will add a property to kwObj with value of {type: "axis_specifier", style: "qualifier"} var axis_specifiers = ["self::", "attribute::", "child::", "descendant::", "descendant-or-self::", "parent::", "ancestor::", "ancestor-or-self::", "following::", "preceding::", "following-sibling::", "preceding-sibling::"]; for(var i=0, l=axis_specifiers.length; i < l; i++) { kwObj[axis_specifiers[i]] = qualifier; }; return kwObj; }(); function chain(stream, state, f) { state.tokenize = f; return f(stream, state); } // the primary mode tokenizer function tokenBase(stream, state) { var ch = stream.next(), mightBeFunction = false, isEQName = isEQNameAhead(stream); // an XML tag (if not in some sub, chained tokenizer) if (ch == "<") { if(stream.match("!--", true)) return chain(stream, state, tokenXMLComment); if(stream.match("![CDATA", false)) { state.tokenize = tokenCDATA; return "tag"; } if(stream.match("?", false)) { return chain(stream, state, tokenPreProcessing); } var isclose = stream.eat("/"); stream.eatSpace(); var tagName = "", c; while ((c = stream.eat(/[^\s\u00a0=<>\"\'\/?]/))) tagName += c; return chain(stream, state, tokenTag(tagName, isclose)); } // start code block else if(ch == "{") { pushStateStack(state,{ type: "codeblock"}); return null; } // end code block else if(ch == "}") { popStateStack(state); return null; } // if we're in an XML block else if(isInXmlBlock(state)) { if(ch == ">") return "tag"; else if(ch == "/" && stream.eat(">")) { popStateStack(state); return "tag"; } else return "variable"; } // if a number else if (/\d/.test(ch)) { stream.match(/^\d*(?:\.\d*)?(?:E[+\-]?\d+)?/); return "atom"; } // comment start else if (ch === "(" && stream.eat(":")) { pushStateStack(state, { type: "comment"}); return chain(stream, state, tokenComment); } // quoted string else if ( !isEQName && (ch === '"' || ch === "'")) return chain(stream, state, tokenString(ch)); // variable else if(ch === "$") { return chain(stream, state, tokenVariable); } // assignment else if(ch ===":" && stream.eat("=")) { return "keyword"; } // open paren else if(ch === "(") { pushStateStack(state, { type: "paren"}); return null; } // close paren else if(ch === ")") { popStateStack(state); return null; } // open paren else if(ch === "[") { pushStateStack(state, { type: "bracket"}); return null; } // close paren else if(ch === "]") { popStateStack(state); return null; } else { var known = keywords.propertyIsEnumerable(ch) && keywords[ch]; // if there's a EQName ahead, consume the rest of the string portion, it's likely a function if(isEQName && ch === '\"') while(stream.next() !== '"'){} if(isEQName && ch === '\'') while(stream.next() !== '\''){} // gobble up a word if the character is not known if(!known) stream.eatWhile(/[\w\$_-]/); // gobble a colon in the case that is a lib func type call fn:doc var foundColon = stream.eat(":"); // if there's not a second colon, gobble another word. Otherwise, it's probably an axis specifier // which should get matched as a keyword if(!stream.eat(":") && foundColon) { stream.eatWhile(/[\w\$_-]/); } // if the next non whitespace character is an open paren, this is probably a function (if not a keyword of other sort) if(stream.match(/^[ \t]*\(/, false)) { mightBeFunction = true; } // is the word a keyword? var word = stream.current(); known = keywords.propertyIsEnumerable(word) && keywords[word]; // if we think it's a function call but not yet known, // set style to variable for now for lack of something better if(mightBeFunction && !known) known = {type: "function_call", style: "variable def"}; // if the previous word was element, attribute, axis specifier, this word should be the name of that if(isInXmlConstructor(state)) { popStateStack(state); return "variable"; } // as previously checked, if the word is element,attribute, axis specifier, call it an "xmlconstructor" and // push the stack so we know to look for it on the next word if(word == "element" || word == "attribute" || known.type == "axis_specifier") pushStateStack(state, {type: "xmlconstructor"}); // if the word is known, return the details of that else just call this a generic 'word' return known ? known.style : "variable"; } } // handle comments, including nested function tokenComment(stream, state) { var maybeEnd = false, maybeNested = false, nestedCount = 0, ch; while (ch = stream.next()) { if (ch == ")" && maybeEnd) { if(nestedCount > 0) nestedCount--; else { popStateStack(state); break; } } else if(ch == ":" && maybeNested) { nestedCount++; } maybeEnd = (ch == ":"); maybeNested = (ch == "("); } return "comment"; } // tokenizer for string literals // optionally pass a tokenizer function to set state.tokenize back to when finished function tokenString(quote, f) { return function(stream, state) { var ch; if(isInString(state) && stream.current() == quote) { popStateStack(state); if(f) state.tokenize = f; return "string"; } pushStateStack(state, { type: "string", name: quote, tokenize: tokenString(quote, f) }); // if we're in a string and in an XML block, allow an embedded code block if(stream.match("{", false) && isInXmlAttributeBlock(state)) { state.tokenize = tokenBase; return "string"; } while (ch = stream.next()) { if (ch == quote) { popStateStack(state); if(f) state.tokenize = f; break; } else { // if we're in a string and in an XML block, allow an embedded code block in an attribute if(stream.match("{", false) && isInXmlAttributeBlock(state)) { state.tokenize = tokenBase; return "string"; } } } return "string"; }; } // tokenizer for variables function tokenVariable(stream, state) { var isVariableChar = /[\w\$_-]/; // a variable may start with a quoted EQName so if the next character is quote, consume to the next quote if(stream.eat("\"")) { while(stream.next() !== '\"'){}; stream.eat(":"); } else { stream.eatWhile(isVariableChar); if(!stream.match(":=", false)) stream.eat(":"); } stream.eatWhile(isVariableChar); state.tokenize = tokenBase; return "variable"; } // tokenizer for XML tags function tokenTag(name, isclose) { return function(stream, state) { stream.eatSpace(); if(isclose && stream.eat(">")) { popStateStack(state); state.tokenize = tokenBase; return "tag"; } // self closing tag without attributes? if(!stream.eat("/")) pushStateStack(state, { type: "tag", name: name, tokenize: tokenBase}); if(!stream.eat(">")) { state.tokenize = tokenAttribute; return "tag"; } else { state.tokenize = tokenBase; } return "tag"; }; } // tokenizer for XML attributes function tokenAttribute(stream, state) { var ch = stream.next(); if(ch == "/" && stream.eat(">")) { if(isInXmlAttributeBlock(state)) popStateStack(state); if(isInXmlBlock(state)) popStateStack(state); return "tag"; } if(ch == ">") { if(isInXmlAttributeBlock(state)) popStateStack(state); return "tag"; } if(ch == "=") return null; // quoted string if (ch == '"' || ch == "'") return chain(stream, state, tokenString(ch, tokenAttribute)); if(!isInXmlAttributeBlock(state)) pushStateStack(state, { type: "attribute", tokenize: tokenAttribute}); stream.eat(/[a-zA-Z_:]/); stream.eatWhile(/[-a-zA-Z0-9_:.]/); stream.eatSpace(); // the case where the attribute has not value and the tag was closed if(stream.match(">", false) || stream.match("/", false)) { popStateStack(state); state.tokenize = tokenBase; } return "attribute"; } // handle comments, including nested function tokenXMLComment(stream, state) { var ch; while (ch = stream.next()) { if (ch == "-" && stream.match("->", true)) { state.tokenize = tokenBase; return "comment"; } } } // handle CDATA function tokenCDATA(stream, state) { var ch; while (ch = stream.next()) { if (ch == "]" && stream.match("]", true)) { state.tokenize = tokenBase; return "comment"; } } } // handle preprocessing instructions function tokenPreProcessing(stream, state) { var ch; while (ch = stream.next()) { if (ch == "?" && stream.match(">", true)) { state.tokenize = tokenBase; return "comment meta"; } } } // functions to test the current context of the state function isInXmlBlock(state) { return isIn(state, "tag"); } function isInXmlAttributeBlock(state) { return isIn(state, "attribute"); } function isInXmlConstructor(state) { return isIn(state, "xmlconstructor"); } function isInString(state) { return isIn(state, "string"); } function isEQNameAhead(stream) { // assume we've already eaten a quote (") if(stream.current() === '"') return stream.match(/^[^\"]+\"\:/, false); else if(stream.current() === '\'') return stream.match(/^[^\"]+\'\:/, false); else return false; } function isIn(state, type) { return (state.stack.length && state.stack[state.stack.length - 1].type == type); } function pushStateStack(state, newState) { state.stack.push(newState); } function popStateStack(state) { state.stack.pop(); var reinstateTokenize = state.stack.length && state.stack[state.stack.length-1].tokenize; state.tokenize = reinstateTokenize || tokenBase; } // the interface for the mode API return { startState: function() { return { tokenize: tokenBase, cc: [], stack: [] }; }, token: function(stream, state) { if (stream.eatSpace()) return null; var style = state.tokenize(stream, state); return style; }, blockCommentStart: "(:", blockCommentEnd: ":)" }; }); CodeMirror.defineMIME("application/xquery", "xquery"); }); plugins/file-manager-advanced/application/library/codemirror/mode/yacas/index.html000064400000004200147176754550024475 0ustar00 CodeMirror: yacas mode

    yacas mode

    MIME types defined: text/x-yacas (yacas).

    plugins/file-manager-advanced/application/library/codemirror/mode/yacas/yacas.js000064400000012460147176754550024145 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE // Yacas mode copyright (c) 2015 by Grzegorz Mazur // Loosely based on mathematica mode by Calin Barbat (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode('yacas', function(_config, _parserConfig) { function words(str) { var obj = {}, words = str.split(" "); for (var i = 0; i < words.length; ++i) obj[words[i]] = true; return obj; } var bodiedOps = words("Assert BackQuote D Defun Deriv For ForEach FromFile " + "FromString Function Integrate InverseTaylor Limit " + "LocalSymbols Macro MacroRule MacroRulePattern " + "NIntegrate Rule RulePattern Subst TD TExplicitSum " + "TSum Taylor Taylor1 Taylor2 Taylor3 ToFile " + "ToStdout ToString TraceRule Until While"); // patterns var pFloatForm = "(?:(?:\\.\\d+|\\d+\\.\\d*|\\d+)(?:[eE][+-]?\\d+)?)"; var pIdentifier = "(?:[a-zA-Z\\$'][a-zA-Z0-9\\$']*)"; // regular expressions var reFloatForm = new RegExp(pFloatForm); var reIdentifier = new RegExp(pIdentifier); var rePattern = new RegExp(pIdentifier + "?_" + pIdentifier); var reFunctionLike = new RegExp(pIdentifier + "\\s*\\("); function tokenBase(stream, state) { var ch; // get next character ch = stream.next(); // string if (ch === '"') { state.tokenize = tokenString; return state.tokenize(stream, state); } // comment if (ch === '/') { if (stream.eat('*')) { state.tokenize = tokenComment; return state.tokenize(stream, state); } if (stream.eat("/")) { stream.skipToEnd(); return "comment"; } } // go back one character stream.backUp(1); // update scope info var m = stream.match(/^(\w+)\s*\(/, false); if (m !== null && bodiedOps.hasOwnProperty(m[1])) state.scopes.push('bodied'); var scope = currentScope(state); if (scope === 'bodied' && ch === '[') state.scopes.pop(); if (ch === '[' || ch === '{' || ch === '(') state.scopes.push(ch); scope = currentScope(state); if (scope === '[' && ch === ']' || scope === '{' && ch === '}' || scope === '(' && ch === ')') state.scopes.pop(); if (ch === ';') { while (scope === 'bodied') { state.scopes.pop(); scope = currentScope(state); } } // look for ordered rules if (stream.match(/\d+ *#/, true, false)) { return 'qualifier'; } // look for numbers if (stream.match(reFloatForm, true, false)) { return 'number'; } // look for placeholders if (stream.match(rePattern, true, false)) { return 'variable-3'; } // match all braces separately if (stream.match(/(?:\[|\]|{|}|\(|\))/, true, false)) { return 'bracket'; } // literals looking like function calls if (stream.match(reFunctionLike, true, false)) { stream.backUp(1); return 'variable'; } // all other identifiers if (stream.match(reIdentifier, true, false)) { return 'variable-2'; } // operators; note that operators like @@ or /; are matched separately for each symbol. if (stream.match(/(?:\\|\+|\-|\*|\/|,|;|\.|:|@|~|=|>|<|&|\||_|`|'|\^|\?|!|%)/, true, false)) { return 'operator'; } // everything else is an error return 'error'; } function tokenString(stream, state) { var next, end = false, escaped = false; while ((next = stream.next()) != null) { if (next === '"' && !escaped) { end = true; break; } escaped = !escaped && next === '\\'; } if (end && !escaped) { state.tokenize = tokenBase; } return 'string'; }; function tokenComment(stream, state) { var prev, next; while((next = stream.next()) != null) { if (prev === '*' && next === '/') { state.tokenize = tokenBase; break; } prev = next; } return 'comment'; } function currentScope(state) { var scope = null; if (state.scopes.length > 0) scope = state.scopes[state.scopes.length - 1]; return scope; } return { startState: function() { return { tokenize: tokenBase, scopes: [] }; }, token: function(stream, state) { if (stream.eatSpace()) return null; return state.tokenize(stream, state); }, indent: function(state, textAfter) { if (state.tokenize !== tokenBase && state.tokenize !== null) return CodeMirror.Pass; var delta = 0; if (textAfter === ']' || textAfter === '];' || textAfter === '}' || textAfter === '};' || textAfter === ');') delta = -1; return (state.scopes.length + delta) * _config.indentUnit; }, electricChars: "{}[]();", blockCommentStart: "/*", blockCommentEnd: "*/", lineComment: "//" }; }); CodeMirror.defineMIME('text/x-yacas', { name: 'yacas' }); }); plugins/file-manager-advanced/application/library/codemirror/mode/yaml/index.html000064400000004062147176754550024345 0ustar00 CodeMirror: YAML mode

    YAML mode

    MIME types defined: text/x-yaml.

    plugins/file-manager-advanced/application/library/codemirror/mode/yaml/yaml.js000064400000007101147176754550023645 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("yaml", function() { var cons = ['true', 'false', 'on', 'off', 'yes', 'no']; var keywordRegex = new RegExp("\\b(("+cons.join(")|(")+"))$", 'i'); return { token: function(stream, state) { var ch = stream.peek(); var esc = state.escaped; state.escaped = false; /* comments */ if (ch == "#" && (stream.pos == 0 || /\s/.test(stream.string.charAt(stream.pos - 1)))) { stream.skipToEnd(); return "comment"; } if (stream.match(/^('([^']|\\.)*'?|"([^"]|\\.)*"?)/)) return "string"; if (state.literal && stream.indentation() > state.keyCol) { stream.skipToEnd(); return "string"; } else if (state.literal) { state.literal = false; } if (stream.sol()) { state.keyCol = 0; state.pair = false; state.pairStart = false; /* document start */ if(stream.match(/---/)) { return "def"; } /* document end */ if (stream.match(/\.\.\./)) { return "def"; } /* array list item */ if (stream.match(/\s*-\s+/)) { return 'meta'; } } /* inline pairs/lists */ if (stream.match(/^(\{|\}|\[|\])/)) { if (ch == '{') state.inlinePairs++; else if (ch == '}') state.inlinePairs--; else if (ch == '[') state.inlineList++; else state.inlineList--; return 'meta'; } /* list seperator */ if (state.inlineList > 0 && !esc && ch == ',') { stream.next(); return 'meta'; } /* pairs seperator */ if (state.inlinePairs > 0 && !esc && ch == ',') { state.keyCol = 0; state.pair = false; state.pairStart = false; stream.next(); return 'meta'; } /* start of value of a pair */ if (state.pairStart) { /* block literals */ if (stream.match(/^\s*(\||\>)\s*/)) { state.literal = true; return 'meta'; }; /* references */ if (stream.match(/^\s*(\&|\*)[a-z0-9\._-]+\b/i)) { return 'variable-2'; } /* numbers */ if (state.inlinePairs == 0 && stream.match(/^\s*-?[0-9\.\,]+\s?$/)) { return 'number'; } if (state.inlinePairs > 0 && stream.match(/^\s*-?[0-9\.\,]+\s?(?=(,|}))/)) { return 'number'; } /* keywords */ if (stream.match(keywordRegex)) { return 'keyword'; } } /* pairs (associative arrays) -> key */ if (!state.pair && stream.match(/^\s*(?:[,\[\]{}&*!|>'"%@`][^\s'":]|[^,\[\]{}#&*!|>'"%@`])[^#]*?(?=\s*:($|\s))/)) { state.pair = true; state.keyCol = stream.indentation(); return "atom"; } if (state.pair && stream.match(/^:\s*/)) { state.pairStart = true; return 'meta'; } /* nothing found, continue */ state.pairStart = false; state.escaped = (ch == '\\'); stream.next(); return null; }, startState: function() { return { pair: false, pairStart: false, keyCol: 0, inlinePairs: 0, inlineList: 0, literal: false, escaped: false }; } }; }); CodeMirror.defineMIME("text/x-yaml", "yaml"); }); plugins/file-manager-advanced/application/library/codemirror/mode/yaml-frontmatter/index.html000064400000006000147176754550026702 0ustar00 CodeMirror: YAML front matter mode

    YAML front matter mode

    Defines a mode that parses a YAML frontmatter at the start of a file, switching to a base mode at the end of that. Takes a mode configuration option base to configure the base mode, which defaults to "gfm".

    file-manager-advanced/application/library/codemirror/mode/yaml-frontmatter/yaml-frontmatter.js000064400000004364147176754550030504 0ustar00plugins// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function (mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror"), require("../yaml/yaml")) else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror", "../yaml/yaml"], mod) else // Plain browser env mod(CodeMirror) })(function (CodeMirror) { var START = 0, FRONTMATTER = 1, BODY = 2 // a mixed mode for Markdown text with an optional YAML front matter CodeMirror.defineMode("yaml-frontmatter", function (config, parserConfig) { var yamlMode = CodeMirror.getMode(config, "yaml") var innerMode = CodeMirror.getMode(config, parserConfig && parserConfig.base || "gfm") function curMode(state) { return state.state == BODY ? innerMode : yamlMode } return { startState: function () { return { state: START, inner: CodeMirror.startState(yamlMode) } }, copyState: function (state) { return { state: state.state, inner: CodeMirror.copyState(curMode(state), state.inner) } }, token: function (stream, state) { if (state.state == START) { if (stream.match(/---/, false)) { state.state = FRONTMATTER return yamlMode.token(stream, state.inner) } else { state.state = BODY state.inner = CodeMirror.startState(innerMode) return innerMode.token(stream, state.inner) } } else if (state.state == FRONTMATTER) { var end = stream.sol() && stream.match(/---/, false) var style = yamlMode.token(stream, state.inner) if (end) { state.state = BODY state.inner = CodeMirror.startState(innerMode) } return style } else { return innerMode.token(stream, state.inner) } }, innerMode: function (state) { return {mode: curMode(state), state: state.inner} }, blankLine: function (state) { var mode = curMode(state) if (mode.blankLine) return mode.blankLine(state.inner) } } }) }); plugins/file-manager-advanced/application/library/codemirror/mode/z80/index.html000064400000002576147176754550024034 0ustar00 CodeMirror: Z80 assembly mode

    Z80 assembly mode

    MIME types defined: text/x-z80, text/x-ez80.

    plugins/file-manager-advanced/application/library/codemirror/mode/z80/z80.js000064400000006771147176754550023017 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode('z80', function(_config, parserConfig) { var ez80 = parserConfig.ez80; var keywords1, keywords2; if (ez80) { keywords1 = /^(exx?|(ld|cp)([di]r?)?|[lp]ea|pop|push|ad[cd]|cpl|daa|dec|inc|neg|sbc|sub|and|bit|[cs]cf|x?or|res|set|r[lr]c?a?|r[lr]d|s[lr]a|srl|djnz|nop|[de]i|halt|im|in([di]mr?|ir?|irx|2r?)|ot(dmr?|[id]rx|imr?)|out(0?|[di]r?|[di]2r?)|tst(io)?|slp)(\.([sl]?i)?[sl])?\b/i; keywords2 = /^(((call|j[pr]|rst|ret[in]?)(\.([sl]?i)?[sl])?)|(rs|st)mix)\b/i; } else { keywords1 = /^(exx?|(ld|cp|in)([di]r?)?|pop|push|ad[cd]|cpl|daa|dec|inc|neg|sbc|sub|and|bit|[cs]cf|x?or|res|set|r[lr]c?a?|r[lr]d|s[lr]a|srl|djnz|nop|rst|[de]i|halt|im|ot[di]r|out[di]?)\b/i; keywords2 = /^(call|j[pr]|ret[in]?|b_?(call|jump))\b/i; } var variables1 = /^(af?|bc?|c|de?|e|hl?|l|i[xy]?|r|sp)\b/i; var variables2 = /^(n?[zc]|p[oe]?|m)\b/i; var errors = /^([hl][xy]|i[xy][hl]|slia|sll)\b/i; var numbers = /^([\da-f]+h|[0-7]+o|[01]+b|\d+d?)\b/i; return { startState: function() { return { context: 0 }; }, token: function(stream, state) { if (!stream.column()) state.context = 0; if (stream.eatSpace()) return null; var w; if (stream.eatWhile(/\w/)) { if (ez80 && stream.eat('.')) { stream.eatWhile(/\w/); } w = stream.current(); if (stream.indentation()) { if ((state.context == 1 || state.context == 4) && variables1.test(w)) { state.context = 4; return 'var2'; } if (state.context == 2 && variables2.test(w)) { state.context = 4; return 'var3'; } if (keywords1.test(w)) { state.context = 1; return 'keyword'; } else if (keywords2.test(w)) { state.context = 2; return 'keyword'; } else if (state.context == 4 && numbers.test(w)) { return 'number'; } if (errors.test(w)) return 'error'; } else if (stream.match(numbers)) { return 'number'; } else { return null; } } else if (stream.eat(';')) { stream.skipToEnd(); return 'comment'; } else if (stream.eat('"')) { while (w = stream.next()) { if (w == '"') break; if (w == '\\') stream.next(); } return 'string'; } else if (stream.eat('\'')) { if (stream.match(/\\?.'/)) return 'number'; } else if (stream.eat('.') || stream.sol() && stream.eat('#')) { state.context = 5; if (stream.eatWhile(/\w/)) return 'def'; } else if (stream.eat('$')) { if (stream.eatWhile(/[\da-f]/i)) return 'number'; } else if (stream.eat('%')) { if (stream.eatWhile(/[01]/)) return 'number'; } else { stream.next(); } return null; } }; }); CodeMirror.defineMIME("text/x-z80", "z80"); CodeMirror.defineMIME("text/x-ez80", { name: "z80", ez80: true }); }); plugins/file-manager-advanced/application/library/codemirror/mode/index.html000064400000020011147176754550023373 0ustar00 CodeMirror: Language Modes

    Language modes

    This is a list of every mode in the distribution. Each mode lives in a subdirectory of the mode/ directory, and typically defines a single JavaScript file that implements the mode. Loading such file will make the language available to CodeMirror, through the mode option.

    plugins/file-manager-advanced/application/library/codemirror/mode/meta.js000064400000034327147176754550022701 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.modeInfo = [ {name: "APL", mime: "text/apl", mode: "apl", ext: ["dyalog", "apl"]}, {name: "PGP", mimes: ["application/pgp", "application/pgp-keys", "application/pgp-signature"], mode: "asciiarmor", ext: ["pgp"]}, {name: "ASN.1", mime: "text/x-ttcn-asn", mode: "asn.1", ext: ["asn", "asn1"]}, {name: "Asterisk", mime: "text/x-asterisk", mode: "asterisk", file: /^extensions\.conf$/i}, {name: "Brainfuck", mime: "text/x-brainfuck", mode: "brainfuck", ext: ["b", "bf"]}, {name: "C", mime: "text/x-csrc", mode: "clike", ext: ["c", "h"]}, {name: "C++", mime: "text/x-c++src", mode: "clike", ext: ["cpp", "c++", "cc", "cxx", "hpp", "h++", "hh", "hxx"], alias: ["cpp"]}, {name: "Cobol", mime: "text/x-cobol", mode: "cobol", ext: ["cob", "cpy"]}, {name: "C#", mime: "text/x-csharp", mode: "clike", ext: ["cs"], alias: ["csharp"]}, {name: "Clojure", mime: "text/x-clojure", mode: "clojure", ext: ["clj", "cljc", "cljx"]}, {name: "ClojureScript", mime: "text/x-clojurescript", mode: "clojure", ext: ["cljs"]}, {name: "Closure Stylesheets (GSS)", mime: "text/x-gss", mode: "css", ext: ["gss"]}, {name: "CMake", mime: "text/x-cmake", mode: "cmake", ext: ["cmake", "cmake.in"], file: /^CMakeLists.txt$/}, {name: "CoffeeScript", mime: "text/x-coffeescript", mode: "coffeescript", ext: ["coffee"], alias: ["coffee", "coffee-script"]}, {name: "Common Lisp", mime: "text/x-common-lisp", mode: "commonlisp", ext: ["cl", "lisp", "el"], alias: ["lisp"]}, {name: "Cypher", mime: "application/x-cypher-query", mode: "cypher", ext: ["cyp", "cypher"]}, {name: "Cython", mime: "text/x-cython", mode: "python", ext: ["pyx", "pxd", "pxi"]}, {name: "Crystal", mime: "text/x-crystal", mode: "crystal", ext: ["cr"]}, {name: "CSS", mime: "text/css", mode: "css", ext: ["css"]}, {name: "CQL", mime: "text/x-cassandra", mode: "sql", ext: ["cql"]}, {name: "D", mime: "text/x-d", mode: "d", ext: ["d"]}, {name: "Dart", mimes: ["application/dart", "text/x-dart"], mode: "dart", ext: ["dart"]}, {name: "diff", mime: "text/x-diff", mode: "diff", ext: ["diff", "patch"]}, {name: "Django", mime: "text/x-django", mode: "django"}, {name: "Dockerfile", mime: "text/x-dockerfile", mode: "dockerfile", file: /^Dockerfile$/}, {name: "DTD", mime: "application/xml-dtd", mode: "dtd", ext: ["dtd"]}, {name: "Dylan", mime: "text/x-dylan", mode: "dylan", ext: ["dylan", "dyl", "intr"]}, {name: "EBNF", mime: "text/x-ebnf", mode: "ebnf"}, {name: "ECL", mime: "text/x-ecl", mode: "ecl", ext: ["ecl"]}, {name: "edn", mime: "application/edn", mode: "clojure", ext: ["edn"]}, {name: "Eiffel", mime: "text/x-eiffel", mode: "eiffel", ext: ["e"]}, {name: "Elm", mime: "text/x-elm", mode: "elm", ext: ["elm"]}, {name: "Embedded Javascript", mime: "application/x-ejs", mode: "htmlembedded", ext: ["ejs"]}, {name: "Embedded Ruby", mime: "application/x-erb", mode: "htmlembedded", ext: ["erb"]}, {name: "Erlang", mime: "text/x-erlang", mode: "erlang", ext: ["erl"]}, {name: "Factor", mime: "text/x-factor", mode: "factor", ext: ["factor"]}, {name: "FCL", mime: "text/x-fcl", mode: "fcl"}, {name: "Forth", mime: "text/x-forth", mode: "forth", ext: ["forth", "fth", "4th"]}, {name: "Fortran", mime: "text/x-fortran", mode: "fortran", ext: ["f", "for", "f77", "f90"]}, {name: "F#", mime: "text/x-fsharp", mode: "mllike", ext: ["fs"], alias: ["fsharp"]}, {name: "Gas", mime: "text/x-gas", mode: "gas", ext: ["s"]}, {name: "Gherkin", mime: "text/x-feature", mode: "gherkin", ext: ["feature"]}, {name: "GitHub Flavored Markdown", mime: "text/x-gfm", mode: "gfm", file: /^(readme|contributing|history).md$/i}, {name: "Go", mime: "text/x-go", mode: "go", ext: ["go"]}, {name: "Groovy", mime: "text/x-groovy", mode: "groovy", ext: ["groovy", "gradle"]}, {name: "HAML", mime: "text/x-haml", mode: "haml", ext: ["haml"]}, {name: "Haskell", mime: "text/x-haskell", mode: "haskell", ext: ["hs"]}, {name: "Haskell (Literate)", mime: "text/x-literate-haskell", mode: "haskell-literate", ext: ["lhs"]}, {name: "Haxe", mime: "text/x-haxe", mode: "haxe", ext: ["hx"]}, {name: "HXML", mime: "text/x-hxml", mode: "haxe", ext: ["hxml"]}, {name: "ASP.NET", mime: "application/x-aspx", mode: "htmlembedded", ext: ["aspx"], alias: ["asp", "aspx"]}, {name: "HTML", mime: "text/html", mode: "htmlmixed", ext: ["html", "htm"], alias: ["xhtml"]}, {name: "HTTP", mime: "message/http", mode: "http"}, {name: "IDL", mime: "text/x-idl", mode: "idl", ext: ["pro"]}, {name: "Pug", mime: "text/x-pug", mode: "pug", ext: ["jade", "pug"], alias: ["jade"]}, {name: "Java", mime: "text/x-java", mode: "clike", ext: ["java"]}, {name: "Java Server Pages", mime: "application/x-jsp", mode: "htmlembedded", ext: ["jsp"], alias: ["jsp"]}, {name: "JavaScript", mimes: ["text/javascript", "text/ecmascript", "application/javascript", "application/x-javascript", "application/ecmascript"], mode: "javascript", ext: ["js"], alias: ["ecmascript", "js", "node"]}, {name: "JSON", mimes: ["application/json", "application/x-json"], mode: "javascript", ext: ["json", "map"], alias: ["json5"]}, {name: "JSON-LD", mime: "application/ld+json", mode: "javascript", ext: ["jsonld"], alias: ["jsonld"]}, {name: "JSX", mime: "text/jsx", mode: "jsx", ext: ["jsx"]}, {name: "Jinja2", mime: "null", mode: "jinja2"}, {name: "Julia", mime: "text/x-julia", mode: "julia", ext: ["jl"]}, {name: "Kotlin", mime: "text/x-kotlin", mode: "clike", ext: ["kt"]}, {name: "LESS", mime: "text/x-less", mode: "css", ext: ["less"]}, {name: "LiveScript", mime: "text/x-livescript", mode: "livescript", ext: ["ls"], alias: ["ls"]}, {name: "Lua", mime: "text/x-lua", mode: "lua", ext: ["lua"]}, {name: "Markdown", mime: "text/x-markdown", mode: "markdown", ext: ["markdown", "md", "mkd"]}, {name: "mIRC", mime: "text/mirc", mode: "mirc"}, {name: "MariaDB SQL", mime: "text/x-mariadb", mode: "sql"}, {name: "Mathematica", mime: "text/x-mathematica", mode: "mathematica", ext: ["m", "nb"]}, {name: "Modelica", mime: "text/x-modelica", mode: "modelica", ext: ["mo"]}, {name: "MUMPS", mime: "text/x-mumps", mode: "mumps", ext: ["mps"]}, {name: "MS SQL", mime: "text/x-mssql", mode: "sql"}, {name: "mbox", mime: "application/mbox", mode: "mbox", ext: ["mbox"]}, {name: "MySQL", mime: "text/x-mysql", mode: "sql"}, {name: "Nginx", mime: "text/x-nginx-conf", mode: "nginx", file: /nginx.*\.conf$/i}, {name: "NSIS", mime: "text/x-nsis", mode: "nsis", ext: ["nsh", "nsi"]}, {name: "NTriples", mime: "text/n-triples", mode: "ntriples", ext: ["nt"]}, {name: "Objective C", mime: "text/x-objectivec", mode: "clike", ext: ["m", "mm"], alias: ["objective-c", "objc"]}, {name: "OCaml", mime: "text/x-ocaml", mode: "mllike", ext: ["ml", "mli", "mll", "mly"]}, {name: "Octave", mime: "text/x-octave", mode: "octave", ext: ["m"]}, {name: "Oz", mime: "text/x-oz", mode: "oz", ext: ["oz"]}, {name: "Pascal", mime: "text/x-pascal", mode: "pascal", ext: ["p", "pas"]}, {name: "PEG.js", mime: "null", mode: "pegjs", ext: ["jsonld"]}, {name: "Perl", mime: "text/x-perl", mode: "perl", ext: ["pl", "pm"]}, {name: "PHP", mime: "application/x-httpd-php", mode: "php", ext: ["php", "php3", "php4", "php5", "phtml"]}, {name: "Pig", mime: "text/x-pig", mode: "pig", ext: ["pig"]}, {name: "Plain Text", mime: "text/plain", mode: "null", ext: ["txt", "text", "conf", "def", "list", "log"]}, {name: "PLSQL", mime: "text/x-plsql", mode: "sql", ext: ["pls"]}, {name: "PowerShell", mime: "application/x-powershell", mode: "powershell", ext: ["ps1", "psd1", "psm1"]}, {name: "Properties files", mime: "text/x-properties", mode: "properties", ext: ["properties", "ini", "in"], alias: ["ini", "properties"]}, {name: "ProtoBuf", mime: "text/x-protobuf", mode: "protobuf", ext: ["proto"]}, {name: "Python", mime: "text/x-python", mode: "python", ext: ["BUILD", "bzl", "py", "pyw"], file: /^(BUCK|BUILD)$/}, {name: "Puppet", mime: "text/x-puppet", mode: "puppet", ext: ["pp"]}, {name: "Q", mime: "text/x-q", mode: "q", ext: ["q"]}, {name: "R", mime: "text/x-rsrc", mode: "r", ext: ["r"], alias: ["rscript"]}, {name: "reStructuredText", mime: "text/x-rst", mode: "rst", ext: ["rst"], alias: ["rst"]}, {name: "RPM Changes", mime: "text/x-rpm-changes", mode: "rpm"}, {name: "RPM Spec", mime: "text/x-rpm-spec", mode: "rpm", ext: ["spec"]}, {name: "Ruby", mime: "text/x-ruby", mode: "ruby", ext: ["rb"], alias: ["jruby", "macruby", "rake", "rb", "rbx"]}, {name: "Rust", mime: "text/x-rustsrc", mode: "rust", ext: ["rs"]}, {name: "SAS", mime: "text/x-sas", mode: "sas", ext: ["sas"]}, {name: "Sass", mime: "text/x-sass", mode: "sass", ext: ["sass"]}, {name: "Scala", mime: "text/x-scala", mode: "clike", ext: ["scala"]}, {name: "Scheme", mime: "text/x-scheme", mode: "scheme", ext: ["scm", "ss"]}, {name: "SCSS", mime: "text/x-scss", mode: "css", ext: ["scss"]}, {name: "Shell", mime: "text/x-sh", mode: "shell", ext: ["sh", "ksh", "bash"], alias: ["bash", "sh", "zsh"], file: /^PKGBUILD$/}, {name: "Sieve", mime: "application/sieve", mode: "sieve", ext: ["siv", "sieve"]}, {name: "Slim", mimes: ["text/x-slim", "application/x-slim"], mode: "slim", ext: ["slim"]}, {name: "Smalltalk", mime: "text/x-stsrc", mode: "smalltalk", ext: ["st"]}, {name: "Smarty", mime: "text/x-smarty", mode: "smarty", ext: ["tpl"]}, {name: "Solr", mime: "text/x-solr", mode: "solr"}, {name: "Soy", mime: "text/x-soy", mode: "soy", ext: ["soy"], alias: ["closure template"]}, {name: "SPARQL", mime: "application/sparql-query", mode: "sparql", ext: ["rq", "sparql"], alias: ["sparul"]}, {name: "Spreadsheet", mime: "text/x-spreadsheet", mode: "spreadsheet", alias: ["excel", "formula"]}, {name: "SQL", mime: "text/x-sql", mode: "sql", ext: ["sql"]}, {name: "Squirrel", mime: "text/x-squirrel", mode: "clike", ext: ["nut"]}, {name: "Swift", mime: "text/x-swift", mode: "swift", ext: ["swift"]}, {name: "sTeX", mime: "text/x-stex", mode: "stex"}, {name: "LaTeX", mime: "text/x-latex", mode: "stex", ext: ["text", "ltx"], alias: ["tex"]}, {name: "SystemVerilog", mime: "text/x-systemverilog", mode: "verilog", ext: ["v"]}, {name: "Tcl", mime: "text/x-tcl", mode: "tcl", ext: ["tcl"]}, {name: "Textile", mime: "text/x-textile", mode: "textile", ext: ["textile"]}, {name: "TiddlyWiki ", mime: "text/x-tiddlywiki", mode: "tiddlywiki"}, {name: "Tiki wiki", mime: "text/tiki", mode: "tiki"}, {name: "TOML", mime: "text/x-toml", mode: "toml", ext: ["toml"]}, {name: "Tornado", mime: "text/x-tornado", mode: "tornado"}, {name: "troff", mime: "text/troff", mode: "troff", ext: ["1", "2", "3", "4", "5", "6", "7", "8", "9"]}, {name: "TTCN", mime: "text/x-ttcn", mode: "ttcn", ext: ["ttcn", "ttcn3", "ttcnpp"]}, {name: "TTCN_CFG", mime: "text/x-ttcn-cfg", mode: "ttcn-cfg", ext: ["cfg"]}, {name: "Turtle", mime: "text/turtle", mode: "turtle", ext: ["ttl"]}, {name: "TypeScript", mime: "application/typescript", mode: "javascript", ext: ["ts"], alias: ["ts"]}, {name: "Twig", mime: "text/x-twig", mode: "twig"}, {name: "Web IDL", mime: "text/x-webidl", mode: "webidl", ext: ["webidl"]}, {name: "VB.NET", mime: "text/x-vb", mode: "vb", ext: ["vb"]}, {name: "VBScript", mime: "text/vbscript", mode: "vbscript", ext: ["vbs"]}, {name: "Velocity", mime: "text/velocity", mode: "velocity", ext: ["vtl"]}, {name: "Verilog", mime: "text/x-verilog", mode: "verilog", ext: ["v"]}, {name: "VHDL", mime: "text/x-vhdl", mode: "vhdl", ext: ["vhd", "vhdl"]}, {name: "XML", mimes: ["application/xml", "text/xml"], mode: "xml", ext: ["xml", "xsl", "xsd"], alias: ["rss", "wsdl", "xsd"]}, {name: "XQuery", mime: "application/xquery", mode: "xquery", ext: ["xy", "xquery"]}, {name: "Yacas", mime: "text/x-yacas", mode: "yacas", ext: ["ys"]}, {name: "YAML", mime: "text/x-yaml", mode: "yaml", ext: ["yaml", "yml"], alias: ["yml"]}, {name: "Z80", mime: "text/x-z80", mode: "z80", ext: ["z80"]}, {name: "mscgen", mime: "text/x-mscgen", mode: "mscgen", ext: ["mscgen", "mscin", "msc"]}, {name: "xu", mime: "text/x-xu", mode: "mscgen", ext: ["xu"]}, {name: "msgenny", mime: "text/x-msgenny", mode: "mscgen", ext: ["msgenny"]} ]; // Ensure all modes have a mime property for backwards compatibility for (var i = 0; i < CodeMirror.modeInfo.length; i++) { var info = CodeMirror.modeInfo[i]; if (info.mimes) info.mime = info.mimes[0]; } CodeMirror.findModeByMIME = function(mime) { mime = mime.toLowerCase(); for (var i = 0; i < CodeMirror.modeInfo.length; i++) { var info = CodeMirror.modeInfo[i]; if (info.mime == mime) return info; if (info.mimes) for (var j = 0; j < info.mimes.length; j++) if (info.mimes[j] == mime) return info; } }; CodeMirror.findModeByExtension = function(ext) { for (var i = 0; i < CodeMirror.modeInfo.length; i++) { var info = CodeMirror.modeInfo[i]; if (info.ext) for (var j = 0; j < info.ext.length; j++) if (info.ext[j] == ext) return info; } }; CodeMirror.findModeByFileName = function(filename) { for (var i = 0; i < CodeMirror.modeInfo.length; i++) { var info = CodeMirror.modeInfo[i]; if (info.file && info.file.test(filename)) return info; } var dot = filename.lastIndexOf("."); var ext = dot > -1 && filename.substring(dot + 1, filename.length); if (ext) return CodeMirror.findModeByExtension(ext); }; CodeMirror.findModeByName = function(name) { name = name.toLowerCase(); for (var i = 0; i < CodeMirror.modeInfo.length; i++) { var info = CodeMirror.modeInfo[i]; if (info.name.toLowerCase() == name) return info; if (info.alias) for (var j = 0; j < info.alias.length; j++) if (info.alias[j].toLowerCase() == name) return info; } }; }); plugins/file-manager-advanced/application/library/codemirror/theme/3024-day.css000064400000003703147176754550023442 0ustar00/* Name: 3024 day Author: Jan T. Sott (http://github.com/idleberg) CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror) Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ .cm-s-3024-day.CodeMirror { background: #f7f7f7; color: #3a3432; } .cm-s-3024-day div.CodeMirror-selected { background: #d6d5d4; } .cm-s-3024-day .CodeMirror-line::selection, .cm-s-3024-day .CodeMirror-line > span::selection, .cm-s-3024-day .CodeMirror-line > span > span::selection { background: #d6d5d4; } .cm-s-3024-day .CodeMirror-line::-moz-selection, .cm-s-3024-day .CodeMirror-line > span::-moz-selection, .cm-s-3024-day .CodeMirror-line > span > span::selection { background: #d9d9d9; } .cm-s-3024-day .CodeMirror-gutters { background: #f7f7f7; border-right: 0px; } .cm-s-3024-day .CodeMirror-guttermarker { color: #db2d20; } .cm-s-3024-day .CodeMirror-guttermarker-subtle { color: #807d7c; } .cm-s-3024-day .CodeMirror-linenumber { color: #807d7c; } .cm-s-3024-day .CodeMirror-cursor { border-left: 1px solid #5c5855; } .cm-s-3024-day span.cm-comment { color: #cdab53; } .cm-s-3024-day span.cm-atom { color: #a16a94; } .cm-s-3024-day span.cm-number { color: #a16a94; } .cm-s-3024-day span.cm-property, .cm-s-3024-day span.cm-attribute { color: #01a252; } .cm-s-3024-day span.cm-keyword { color: #db2d20; } .cm-s-3024-day span.cm-string { color: #fded02; } .cm-s-3024-day span.cm-variable { color: #01a252; } .cm-s-3024-day span.cm-variable-2 { color: #01a0e4; } .cm-s-3024-day span.cm-def { color: #e8bbd0; } .cm-s-3024-day span.cm-bracket { color: #3a3432; } .cm-s-3024-day span.cm-tag { color: #db2d20; } .cm-s-3024-day span.cm-link { color: #a16a94; } .cm-s-3024-day span.cm-error { background: #db2d20; color: #5c5855; } .cm-s-3024-day .CodeMirror-activeline-background { background: #e8f2ff; } .cm-s-3024-day .CodeMirror-matchingbracket { text-decoration: underline; color: #a16a94 !important; } plugins/file-manager-advanced/application/library/codemirror/theme/3024-night.css000064400000004034147176754550023774 0ustar00/* Name: 3024 night Author: Jan T. Sott (http://github.com/idleberg) CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror) Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ .cm-s-3024-night.CodeMirror { background: #090300; color: #d6d5d4; } .cm-s-3024-night div.CodeMirror-selected { background: #3a3432; } .cm-s-3024-night .CodeMirror-line::selection, .cm-s-3024-night .CodeMirror-line > span::selection, .cm-s-3024-night .CodeMirror-line > span > span::selection { background: rgba(58, 52, 50, .99); } .cm-s-3024-night .CodeMirror-line::-moz-selection, .cm-s-3024-night .CodeMirror-line > span::-moz-selection, .cm-s-3024-night .CodeMirror-line > span > span::-moz-selection { background: rgba(58, 52, 50, .99); } .cm-s-3024-night .CodeMirror-gutters { background: #090300; border-right: 0px; } .cm-s-3024-night .CodeMirror-guttermarker { color: #db2d20; } .cm-s-3024-night .CodeMirror-guttermarker-subtle { color: #5c5855; } .cm-s-3024-night .CodeMirror-linenumber { color: #5c5855; } .cm-s-3024-night .CodeMirror-cursor { border-left: 1px solid #807d7c; } .cm-s-3024-night span.cm-comment { color: #cdab53; } .cm-s-3024-night span.cm-atom { color: #a16a94; } .cm-s-3024-night span.cm-number { color: #a16a94; } .cm-s-3024-night span.cm-property, .cm-s-3024-night span.cm-attribute { color: #01a252; } .cm-s-3024-night span.cm-keyword { color: #db2d20; } .cm-s-3024-night span.cm-string { color: #fded02; } .cm-s-3024-night span.cm-variable { color: #01a252; } .cm-s-3024-night span.cm-variable-2 { color: #01a0e4; } .cm-s-3024-night span.cm-def { color: #e8bbd0; } .cm-s-3024-night span.cm-bracket { color: #d6d5d4; } .cm-s-3024-night span.cm-tag { color: #db2d20; } .cm-s-3024-night span.cm-link { color: #a16a94; } .cm-s-3024-night span.cm-error { background: #db2d20; color: #807d7c; } .cm-s-3024-night .CodeMirror-activeline-background { background: #2F2F2F; } .cm-s-3024-night .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; } plugins/file-manager-advanced/application/library/codemirror/theme/abbott.css000064400000017026147176754550023555 0ustar00/* * abbott.css * A warm, dark theme for prose and code, with pastels and pretty greens. * * Ported from abbott.vim (https://github.com/bcat/abbott.vim) version 2.1. * Original design and CodeMirror port by Jonathan Rascher. * * This theme shares the following color palette with the Vim color scheme. * * Brown shades: * bistre: #231c14 * chocolate: #3c3022 * cocoa: #745d42 * vanilla_cream: #fef3b4 * * Red shades: * crimson: #d80450 * cinnabar: #f63f05 * * Green shades: * dark_olive: #273900 * forest_green: #24a507 * chartreuse: #a0ea00 * pastel_chartreuse: #d8ff84 * * Yellow shades: * marigold: #fbb32f * lemon_meringue: #fbec5d * * Blue shades: * cornflower_blue: #3f91f1 * periwinkle_blue: #8ccdf0 * * Magenta shades: * french_pink: #ec6c99 * lavender: #e6a2f3 * * Cyan shades: * zomp: #39a78d * seafoam_green: #00ff7f */ /* Style the UI: */ /* Equivalent to Vim's Normal group. */ .cm-s-abbott.CodeMirror { background: #231c14 /* bistre */; color: #d8ff84 /* pastel_chartreuse */; } /* Roughly equivalent to Vim's LineNr group. */ .cm-s-abbott .CodeMirror-gutters { background: #231c14 /* bistre */; border: none; } .cm-s-abbott .CodeMirror-linenumber { color: #fbec5d /* lemon_meringue */; } .cm-s-abbott .CodeMirror-guttermarker { color: #f63f05 /* cinnabar */; } /* Roughly equivalent to Vim's FoldColumn group. */ .cm-s-abbott .CodeMirror-guttermarker-subtle { color: #fbb32f /* marigold */; } /* * Roughly equivalent to Vim's CursorColumn group. (We use a brighter color * since Vim's cursorcolumn option highlights a whole column, whereas * CodeMirror's rule just highlights a thin line.) */ .cm-s-abbott .CodeMirror-ruler { border-color: #745d42 /* cocoa */; } /* Equivalent to Vim's Cursor group in insert mode. */ .cm-s-abbott .CodeMirror-cursor { border-color: #a0ea00 /* chartreuse */; } /* Equivalent to Vim's Cursor group in normal mode. */ .cm-s-abbott.cm-fat-cursor .CodeMirror-cursor, .cm-s-abbott .cm-animate-fat-cursor { /* * CodeMirror doesn't allow changing the foreground color of the character * under the cursor, so we can't use a reverse video effect for the cursor. * Instead, make it semitransparent. */ background: rgba(160, 234, 0, 0.5) /* chartreuse */; } .cm-s-abbott.cm-fat-cursor .CodeMirror-cursors { /* * Boost the z-index so the fat cursor shows up on top of text and * matchingbracket/matchingtag highlights. */ z-index: 3; } /* Equivalent to Vim's Cursor group in replace mode. */ .cm-s-abbott .CodeMirror-overwrite .CodeMirror-cursor { border-bottom: 1px solid #a0ea00 /* chartreuse */; border-left: none; width: auto; } /* Roughly equivalent to Vim's CursorIM group. */ .cm-s-abbott .CodeMirror-secondarycursor { border-color: #00ff7f /* seafoam_green */; } /* Roughly equivalent to Vim's Visual group. */ .cm-s-abbott .CodeMirror-selected, .cm-s-abbott.CodeMirror-focused .CodeMirror-selected { background: #273900 /* dark_olive */; } .cm-s-abbott .CodeMirror-line::selection, .cm-s-abbott .CodeMirror-line > span::selection, .cm-s-abbott .CodeMirror-line > span > span::selection { background: #273900 /* dark_olive */; } .cm-s-abbott .CodeMirror-line::-moz-selection, .cm-s-abbott .CodeMirror-line > span::-moz-selection, .cm-s-abbott .CodeMirror-line > span > span::-moz-selection { background: #273900 /* dark_olive */; } /* Roughly equivalent to Vim's SpecialKey group. */ .cm-s-abbott .cm-tab { color: #00ff7f /* seafoam_green */; } /* Equivalent to Vim's Search group. */ .cm-s-abbott .cm-searching { background: #fef3b4 /* vanilla_cream */ !important; color: #231c14 /* bistre */ !important; } /* Style syntax highlighting modes: */ /* Equivalent to Vim's Comment group. */ .cm-s-abbott span.cm-comment { color: #fbb32f /* marigold */; font-style: italic; } /* Equivalent to Vim's String group. */ .cm-s-abbott span.cm-string, .cm-s-abbott span.cm-string-2 { color: #e6a2f3 /* lavender */; } /* Equivalent to Vim's Constant group. */ .cm-s-abbott span.cm-number, .cm-s-abbott span.cm-string.cm-url { color: #f63f05 /* cinnabar */; } /* Roughly equivalent to Vim's SpecialKey group. */ .cm-s-abbott span.cm-invalidchar { color: #00ff7f /* seafoam_green */; } /* Equivalent to Vim's Special group. */ .cm-s-abbott span.cm-atom { color: #fef3b4 /* vanilla_cream */; } /* Equivalent to Vim's Delimiter group. */ .cm-s-abbott span.cm-bracket, .cm-s-abbott span.cm-punctuation { color: #fef3b4 /* vanilla_cream */; } /* Equivalent Vim's Operator group. */ .cm-s-abbott span.cm-operator { font-weight: bold; } /* Roughly equivalent to Vim's Identifier group. */ .cm-s-abbott span.cm-def, .cm-s-abbott span.cm-variable, .cm-s-abbott span.cm-variable-2, .cm-s-abbott span.cm-variable-3 { color: #8ccdf0 /* periwinkle_blue */; } /* Roughly equivalent to Vim's Function group. */ .cm-s-abbott span.cm-builtin, .cm-s-abbott span.cm-property, .cm-s-abbott span.cm-qualifier { color: #3f91f1 /* cornflower_blue */; } /* Equivalent to Vim's Type group. */ .cm-s-abbott span.cm-type { color: #24a507 /* forest_green */; } /* Equivalent to Vim's Keyword group. */ .cm-s-abbott span.cm-keyword { color: #d80450 /* crimson */; font-weight: bold; } /* Equivalent to Vim's PreProc group. */ .cm-s-abbott span.cm-meta { color: #ec6c99 /* french_pink */; } /* Equivalent to Vim's htmlTagName group (linked to Statement). */ .cm-s-abbott span.cm-tag { color: #d80450 /* crimson */; font-weight: bold; } /* Equivalent to Vim's htmlArg group (linked to Type). */ .cm-s-abbott span.cm-attribute { color: #24a507 /* forest_green */; } /* Equivalent to Vim's htmlH1, markdownH1, etc. groups (linked to Title). */ .cm-s-abbott span.cm-header { color: #d80450 /* crimson */; font-weight: bold; } /* Equivalent to Vim's markdownRule group (linked to PreProc). */ .cm-s-abbott span.cm-hr { color: #ec6c99 /* french_pink */; } /* Roughly equivalent to Vim's Underlined group. */ .cm-s-abbott span.cm-link { color: #e6a2f3 /* lavender */; } /* Equivalent to Vim's diffRemoved group. */ .cm-s-abbott span.cm-negative { background: #d80450 /* crimson */; color: #231c14 /* bistre */; } /* Equivalent to Vim's diffAdded group. */ .cm-s-abbott span.cm-positive { background: #a0ea00 /* chartreuse */; color: #231c14 /* bistre */; font-weight: bold; } /* Equivalent to Vim's Error group. */ .cm-s-abbott span.cm-error { background: #d80450 /* crimson */; color: #231c14 /* bistre */; } /* Style addons: */ /* Equivalent to Vim's MatchParen group. */ .cm-s-abbott span.CodeMirror-matchingbracket { background: #745d42 /* cocoa */ !important; color: #231c14 /* bistre */ !important; font-weight: bold; } /* * Roughly equivalent to Vim's Error group. (Vim doesn't seem to have a direct * equivalent in its own matchparen plugin, but many syntax highlighting plugins * mark mismatched brackets as Error.) */ .cm-s-abbott span.CodeMirror-nonmatchingbracket { background: #d80450 /* crimson */ !important; color: #231c14 /* bistre */ !important; } .cm-s-abbott .CodeMirror-matchingtag, .cm-s-abbott .cm-matchhighlight { outline: 1px solid #39a78d /* zomp */; } /* Equivalent to Vim's CursorLine group. */ .cm-s-abbott .CodeMirror-activeline-background, .cm-s-abbott .CodeMirror-activeline-gutter { background: #3c3022 /* chocolate */; } /* Equivalent to Vim's CursorLineNr group. */ .cm-s-abbott .CodeMirror-activeline-gutter .CodeMirror-linenumber { color: #d8ff84 /* pastel_chartreuse */; font-weight: bold; } /* Roughly equivalent to Vim's Folded group. */ .cm-s-abbott .CodeMirror-foldmarker { color: #f63f05 /* cinnabar */; text-shadow: none; } plugins/file-manager-advanced/application/library/codemirror/theme/abcdef.css000064400000003661147176754550023506 0ustar00.cm-s-abcdef.CodeMirror { background: #0f0f0f; color: #defdef; } .cm-s-abcdef div.CodeMirror-selected { background: #515151; } .cm-s-abcdef .CodeMirror-line::selection, .cm-s-abcdef .CodeMirror-line > span::selection, .cm-s-abcdef .CodeMirror-line > span > span::selection { background: rgba(56, 56, 56, 0.99); } .cm-s-abcdef .CodeMirror-line::-moz-selection, .cm-s-abcdef .CodeMirror-line > span::-moz-selection, .cm-s-abcdef .CodeMirror-line > span > span::-moz-selection { background: rgba(56, 56, 56, 0.99); } .cm-s-abcdef .CodeMirror-gutters { background: #555; border-right: 2px solid #314151; } .cm-s-abcdef .CodeMirror-guttermarker { color: #222; } .cm-s-abcdef .CodeMirror-guttermarker-subtle { color: azure; } .cm-s-abcdef .CodeMirror-linenumber { color: #FFFFFF; } .cm-s-abcdef .CodeMirror-cursor { border-left: 1px solid #00FF00; } .cm-s-abcdef span.cm-keyword { color: darkgoldenrod; font-weight: bold; } .cm-s-abcdef span.cm-atom { color: #77F; } .cm-s-abcdef span.cm-number { color: violet; } .cm-s-abcdef span.cm-def { color: #fffabc; } .cm-s-abcdef span.cm-variable { color: #abcdef; } .cm-s-abcdef span.cm-variable-2 { color: #cacbcc; } .cm-s-abcdef span.cm-variable-3, .cm-s-abcdef span.cm-type { color: #def; } .cm-s-abcdef span.cm-property { color: #fedcba; } .cm-s-abcdef span.cm-operator { color: #ff0; } .cm-s-abcdef span.cm-comment { color: #7a7b7c; font-style: italic;} .cm-s-abcdef span.cm-string { color: #2b4; } .cm-s-abcdef span.cm-meta { color: #C9F; } .cm-s-abcdef span.cm-qualifier { color: #FFF700; } .cm-s-abcdef span.cm-builtin { color: #30aabc; } .cm-s-abcdef span.cm-bracket { color: #8a8a8a; } .cm-s-abcdef span.cm-tag { color: #FFDD44; } .cm-s-abcdef span.cm-attribute { color: #DDFF00; } .cm-s-abcdef span.cm-error { color: #FF0000; } .cm-s-abcdef span.cm-header { color: aquamarine; font-weight: bold; } .cm-s-abcdef span.cm-link { color: blueviolet; } .cm-s-abcdef .CodeMirror-activeline-background { background: #314151; } plugins/file-manager-advanced/application/library/codemirror/theme/ambiance.css000064400000063575147176754550024053 0ustar00/* ambiance theme for codemirror */ /* Color scheme */ .cm-s-ambiance .cm-header { color: blue; } .cm-s-ambiance .cm-quote { color: #24C2C7; } .cm-s-ambiance .cm-keyword { color: #cda869; } .cm-s-ambiance .cm-atom { color: #CF7EA9; } .cm-s-ambiance .cm-number { color: #78CF8A; } .cm-s-ambiance .cm-def { color: #aac6e3; } .cm-s-ambiance .cm-variable { color: #ffb795; } .cm-s-ambiance .cm-variable-2 { color: #eed1b3; } .cm-s-ambiance .cm-variable-3, .cm-s-ambiance .cm-type { color: #faded3; } .cm-s-ambiance .cm-property { color: #eed1b3; } .cm-s-ambiance .cm-operator { color: #fa8d6a; } .cm-s-ambiance .cm-comment { color: #555; font-style:italic; } .cm-s-ambiance .cm-string { color: #8f9d6a; } .cm-s-ambiance .cm-string-2 { color: #9d937c; } .cm-s-ambiance .cm-meta { color: #D2A8A1; } .cm-s-ambiance .cm-qualifier { color: yellow; } .cm-s-ambiance .cm-builtin { color: #9999cc; } .cm-s-ambiance .cm-bracket { color: #24C2C7; } .cm-s-ambiance .cm-tag { color: #fee4ff; } .cm-s-ambiance .cm-attribute { color: #9B859D; } .cm-s-ambiance .cm-hr { color: pink; } .cm-s-ambiance .cm-link { color: #F4C20B; } .cm-s-ambiance .cm-special { color: #FF9D00; } .cm-s-ambiance .cm-error { color: #AF2018; } .cm-s-ambiance .CodeMirror-matchingbracket { color: #0f0; } .cm-s-ambiance .CodeMirror-nonmatchingbracket { color: #f22; } .cm-s-ambiance div.CodeMirror-selected { background: rgba(255, 255, 255, 0.15); } .cm-s-ambiance.CodeMirror-focused div.CodeMirror-selected { background: rgba(255, 255, 255, 0.10); } .cm-s-ambiance .CodeMirror-line::selection, .cm-s-ambiance .CodeMirror-line > span::selection, .cm-s-ambiance .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); } .cm-s-ambiance .CodeMirror-line::-moz-selection, .cm-s-ambiance .CodeMirror-line > span::-moz-selection, .cm-s-ambiance .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); } /* Editor styling */ .cm-s-ambiance.CodeMirror { line-height: 1.40em; color: #E6E1DC; background-color: #202020; -webkit-box-shadow: inset 0 0 10px black; -moz-box-shadow: inset 0 0 10px black; box-shadow: inset 0 0 10px black; } .cm-s-ambiance .CodeMirror-gutters { background: #3D3D3D; border-right: 1px solid #4D4D4D; box-shadow: 0 10px 20px black; } .cm-s-ambiance .CodeMirror-linenumber { text-shadow: 0px 1px 1px #4d4d4d; color: #111; padding: 0 5px; } .cm-s-ambiance .CodeMirror-guttermarker { color: #aaa; } .cm-s-ambiance .CodeMirror-guttermarker-subtle { color: #111; } .cm-s-ambiance .CodeMirror-cursor { border-left: 1px solid #7991E8; } .cm-s-ambiance .CodeMirror-activeline-background { background: none repeat scroll 0% 0% rgba(255, 255, 255, 0.031); } .cm-s-ambiance.CodeMirror, .cm-s-ambiance .CodeMirror-gutters { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAQAAAAHUWYVAABFFUlEQVQYGbzBCeDVU/74/6fj9HIcx/FRHx9JCFmzMyGRURhLZIkUsoeRfUjS2FNDtr6WkMhO9sm+S8maJfu+Jcsg+/o/c+Z4z/t97/vezy3z+z8ekGlnYICG/o7gdk+wmSHZ1z4pJItqapjoKXWahm8NmV6eOTbWUOp6/6a/XIg6GQqmenJ2lDHyvCFZ2cBDbmtHA043VFhHwXxClWmeYAdLhV00Bd85go8VmaFCkbVkzlQENzfBDZ5gtN7HwF0KDrTwJ0dypSOzpaKCMwQHKTIreYIxlmhXTzTWkVm+LTynZhiSBT3RZQ7aGfjGEd3qyXQ1FDymqbKxpspERQN2MiRjNZlFFQXfCNFm9nM1zpAsoYjmtRTc5ajwuaXc5xrWskT97RaKzAGe5ARHhVUsDbjKklziiX5WROcJwSNCNI+9w1Jwv4Zb2r7lCMZ4oq5C0EdTx+2GzNuKpJ+iFf38JEWkHJn9DNF7mmBDITrWEg0VWL3pHU20tSZnuqWu+R3BtYa8XxV1HO7GyD32UkOpL/yDloINFTmvtId+nmAjxRw40VMwVKiwrKLE4bK5UOVntYwhOcSSXKrJHKPJedocpGjVz/ZMIbnYUPB10/eKCrs5apqpgVmWzBYWpmtKHecJPjaUuEgRDDaU0oZghCJ6zNMQ5ZhDYx05r5v2muQdM0EILtXUsaKiQX9WMEUotagQzFbUNN6NUPC2nm5pxEWGCjMc3GdJHjSU2kORLK/JGSrkfGEIjncU/CYUnOipoYemwj8tST9NsJmB7TUVXtbUtXATJVZXBMvYeTXJfobgJUPmGMP/yFaWonaa6BcFO3nqcIqCozSZoZoSr1g4zJOzuyGnxTEX3lUEJ7WcZgme8ddaWvWJo2AJR9DZU3CUIbhCSG6ybSwN6qtJVnCU2svDTP2ZInOw2cBTrqtQahtNZn9NcJ4l2NaSmSkkP1noZWnVwkLmdUPOwLZEwy2Z3S3R+4rIG9hcbpPXHFVWcQdZkn2FOta3cKWQnNRC5g1LsJah4GCzSVsKnCOY5OAFRTBekyyryeyilhFKva75r4Mc0aWanGEaThcy31s439KKxTzJYY5WTHPU1FtIHjQU3Oip4xlNzj/lBw23dYZVliQa7WAXf4shetcQfatI+jWRDBPmyNeW6A1P5kdDgyYJlba0BIM8BZu1JfrFwItyjcAMR3K0BWOIrtMEXyhyrlVEx3ui5dUBjmB/Q3CXW85R4mBD0s7B+4q5tKUjOlb9qqmhi5AZ6GFIC5HXtOobdYGlVdMVbNJ8toNTFcHxnoL+muBagcctjWnbNMuR00uI7nQESwg5q2qqrKWIfrNUmeQocY6HuyxJV02wj36w00yhpmUFenv4p6fUkZYqLyuinx2RGOjhCXYyJF84oiU00YMOOhhquNdfbOB7gU88pY4xJO8LVdp6/q2voeB4R04vIdhSE40xZObx1HGGJ/ja0LBthFInKaLPPFzuCaYaoj8JjPME8yoyxo6zlBqkiUZYgq00OYMswbWO5NGmq+xhipxHLRW29ARjNKXO0wRnear8XSg4XFPLKEPUS1GqvyLwiuBUoa7zpZ0l5xxFwWmWZC1H5h5FwU8eQ7K+g8UcVY6TMQreVQT/8uQ8Z+ALIXnSEa2pYZQneE9RZbSBNYXfWYJzW/h/4j4Dp1tYVcFIC5019Vyi4ThPqSFCzjGWaHQTBU8q6vrVwgxP9Lkm840imWKpcLCjYTtrKuwvsKSnrvHCXGkSMk9p6lhckfRpIeis+N2PiszT+mFLspyGleUhDwcLrZqmyeylxwjBcKHEapqkmyangyLZRVOijwOtCY5SsG5zL0OwlCJ4y5KznF3EUNDDrinwiyLZRzOXtlBbK5ITHFGLp8Q0R6ab6mS7enI2cFrxOyHvOCFaT1HThS1krjCwqWeurCkk+willhCC+RSZnRXBiZaC5RXRIZYKp2lyfrHwiKPKR0JDzrdU2EFgpidawlFDR6FgXUMNa+g1FY3bUQh2cLCwosRdnuQTS/S+JVrGLeWIvtQUvONJxlqSQYYKpwoN2kaocLjdVsis4Mk80ESF2YpSkzwldjHkjFCUutI/r+EHDU8oCs6yzL3PhWiEooZdFMkymlas4AcI3KmoMMNSQ3tHzjGWCrcJJdYyZC7QFGwjRL9p+MrRkAGWzIaWCn9W0F3TsK01c2ZvQw0byvxuQU0r1lM0qJO7wW0kRIMdDTtXEdzi4VIh+EoIHm0mWtAtpCixlabgn83fKTI7anJe9ST7WIK1DMGpQmYeA58ImV6ezOGOzK2Kgq01pd60cKWiUi9Lievb/0vIDPHQ05Kzt4ddPckQBQtoaurjyHnek/nKzpQLrVgKPjIkh2v4uyezpv+Xoo7fPFXaGFp1vaLKxQ4uUpQQS5VuQs7BCq4xRJv7fwpVvvFEB3j+620haOuocqMhWd6TTPAEx+mdFNGHdranFe95WrWmIvlY4F1Dle2ECgc6cto7SryuqGGGha0tFQ5V53migUKmg6XKAo4qS3mik+0OZpAhOLeZKicacgaYcyx5hypYQE02ZA4xi/pNhOQxR4klNKyqacj+mpxnLTnnGSo85++3ZCZq6lrZkXlGEX3o+C9FieccJbZWVFjC0Yo1FZnJhoYMFoI1hEZ9r6hwg75HwzBNhbZCdJEfJwTPGzJvaKImw1yYX1HDAmpXR+ZJQ/SmgqMNVQb5vgamGwLtt7VwvP7Qk1xpiM5x5Cyv93E06MZmgs0Nya2azIKOYKCGBQQW97RmhKNKF02JZqHEJ4o58qp7X5EcZmc56trXEqzjCBZ1MFGR87Ql2tSTs6CGxS05PTzRQorkbw7aKoKXFDXsYW42VJih/q+FP2BdTzDTwVqOYB13liM50vG7wy28qagyuIXMeQI/Oqq8bcn5wJI50xH00CRntyfpL1T4hydYpoXgNiFzoIUTDZnLNRzh4TBHwbYGDvZkxmlyJloyr6tRihpeUG94GnKtIznREF0tzJG/OOr73JBcrSh1k6WuTprgLU+mnSGnv6Zge0NNz+kTDdH8nuAuTdJDCNb21LCiIuqlYbqGzT3RAoZofQfjFazkqeNWdYaGvYTM001EW2oKPvVk1ldUGSgUtHFwjKM1h9jnFcmy5lChoLNaQMGGDsYbKixlaMBmmsx1QjCfflwTfO/gckW0ruZ3jugKR3R5W9hGUWqCgxuFgsuaCHorotGKzGaeZB9DMsaTnKCpMtwTvOzhYk0rdrArKCqcaWmVk1+F372ur1YkKxgatI8Qfe1gIX9wE9FgS8ESmuABIXnRUbCapcKe+nO7slClSZFzpV/LkLncEb1qiO42fS3R855Su2mCLh62t1SYZZYVmKwIHjREF2uihTzB20JOkz7dkxzYQnK0UOU494wh+VWRc6Un2kpTaVgLDFEkJ/uhzRcI0YKGgpGWOlocBU/a4fKoJ/pEaNV6jip3+Es9VXY078rGnmAdf7t9ylPXS34RBSuYPs1UecZTU78WanhBCHpZ5sAoTz0LGZKjPf9TRypqWEiTvOFglL1fCEY3wY/++rbk7C8bWebA6p6om6PgOL2kp44TFJlVNBXae2rqqdZztOJpT87GQsE9jqCPIe9VReZuQ/CIgacsyZdCpIScSYqcZk8r+nsyCzhyfhOqHGOIvrLknC8wTpFcaYiGC/RU1NRbUeUpocQOnkRpGOrIOcNRx+1uA0UrzhSSt+VyS3SJpnFWkzNDqOFGIWcfR86DnmARTQ1HKIL33ExPiemeOhYSSjzlSUZZuE4TveoJLnBUOFof6KiysCbnAEcZgcUNTDOwkqWu3RWtmGpZwlHhJENdZ3miGz0lJlsKnjbwqSHQjpxnFDlTLLwqJPMZMjd7KrzkSG7VsxXBZE+F8YZkb01Oe00yyRK9psh5SYh29ySPKBo2ylNht7ZkZnsKenjKNJu9PNEyZpaCHv4Kt6RQsLvAVp7M9kIimmCUwGeWqLMmGuIotYMmWNpSahkhZw9FqZsVnKJhsjAHvtHMsTM9fCI06Dx/u3vfUXCqfsKRc4oFY2jMsoo/7DJDwZ1CsIKnJu+J9ldkpmiCxQx1rWjI+T9FwcWWzOuaYH0Hj7klNRVWEQpmaqosakiGNTFHdjS/qnUdmf0NJW5xsL0HhimCCZZSRzmSPTXJQ4aaztAwtZnoabebJ+htCaZ7Cm535ByoqXKbX1WRc4Eh2MkRXWzImVc96Cj4VdOKVxR84VdQsIUM8Psoou2byVHyZFuq7O8otbSQ2UAoeEWTudATLGSpZzVLlXVkPU2Jc+27lsw2jmg5T5VhbeE3BT083K9WsTTkFU/Osi0rC5lRlpwRHUiesNS0sOvmqGML1aRbPAxTJD9ZKtxuob+hhl8cwYGWpJ8nub7t5p6coYbMovZ1BTdaKn1jYD6h4GFDNFyT/Kqe1XCXphXHOKLZmuRSRdBPEfVUXQzJm5YGPGGJdvAEr7hHNdGZnuBvrpciGmopOLf5N0uVMy0FfYToJk90uUCbJupaVpO53UJXR2bVpoU00V2KOo4zMFrBd0Jtz2pa0clT5Q5L8IpQ177mWQejPMEJhuQjS10ref6HHjdEhy1P1EYR7GtO0uSsKJQYLiTnG1rVScj5lyazpqWGl5uBbRWl7m6ixGOOnEsMJR7z8J0n6KMnCdxhiNYQCoZ6CmYLnO8omC3MkW3bktlPmEt/VQQHejL3+dOE5FlPdK/Mq8hZxxJtLyRrepLThYKbLZxkSb5W52vYxNOaOxUF0yxMUPwBTYqCzy01XayYK0sJyWBLqX0MwU5CzoymRzV0EjjeUeLgDpTo6ij42ZAzvD01dHUUTPLU96MdLbBME8nFBn7zJCMtJcZokn8YoqU0FS5WFKyniHobguMcmW8N0XkWZjkyN3hqOMtS08r+/xTBwpZSZ3qiVRX8SzMHHjfUNFjgHEPmY9PL3ykEzxkSre/1ZD6z/NuznuB0RcE1TWTm9zRgfUWVJiG6yrzgmWPXC8EAR4Wxhlad0ZbgQyEz3pG5RVEwwDJH2mgKpjcTiCOzn1lfUWANFbZ2BA8balnEweJC9J0iuaeZoI+ippFCztEKVvckR2iice1JvhVytrQwUAZpgsubCPaU7xUe9vWnaOpaSBEspalykhC9bUlOMpT42ZHca6hyrqKmw/wMR8H5ZmdFoBVJb03O4UL0tSNnvIeRmkrLWqrs78gcrEn2tpcboh0UPOW3UUR9PMk4T4nnNKWmCjlrefhCwxRNztfmIQVdDElvS4m1/WuOujoZCs5XVOjtKPGokJzsYCtFYoWonSPT21DheU/wWhM19FcElwqNGOsp9Q8N/cwXaiND1MmeL1Q5XROtYYgGeFq1aTMsoMmcrKjQrOFQTQ1fmBYhmW6o8Jkjc7iDJRTBIo5kgJD5yMEYA3srCg7VFKwiVJkmRCc5ohGOKhsYMn/XBLdo5taZjlb9YAlGWRimqbCsoY7HFAXLa5I1HPRxMMsQDHFkWtRNniqT9UEeNjcE7RUlrCJ4R2CSJuqlKHWvJXjAUNcITYkenuBRB84TbeepcqTj3zZyFJzgYQdHnqfgI0ddUwS6GqWpsKWhjq9cV0vBAEMN2znq+EBfIWT+pClYw5xsTlJU6GeIBsjGmmANTzJZiIYpgrM0Oa8ZMjd7NP87jxhqGOhJlnQtjuQpB+8aEE00wZFznSJPyHxgH3HkPOsJFvYk8zqCHzTs1BYOa4J3PFU+UVRZxlHDM4YavlNUuMoRveiZA2d7grMNc2g+RbSCEKzmgYsUmWmazFJyoiOZ4KnyhKOGRzWJa0+moyV4TVHDzn51Awtqaphfk/lRQ08FX1iiqxTB/kLwd0VynKfEvI6cd4XMV5bMhZ7gZUWVzYQ6Nm2BYzxJbw3bGthEUUMfgbGeorae6DxHtJoZ6alhZ0+ytiVoK1R4z5PTrOECT/SugseEOlb1MMNR4VRNcJy+V1Hg9ONClSZFZjdHlc6W6FBLdJja2MC5hhpu0DBYEY1TFGwiFAxRRCsYkiM9JRb0JNMVkW6CZYT/2EiTGWmo8k+h4FhDNE7BvppoTSFnmCV5xZKzvcCdDo7VVPnIU+I+Rc68juApC90MwcFCsJ5hDqxgScYKreruyQwTqrzoqDCmhWi4IbhB0Yrt3RGa6GfDv52rKXWhh28dyZaWUvcZeMTBaZoSGyiCtRU5J8iviioHaErs7Jkj61syVzTTgOcUOQ8buFBTYWdL5g3T4qlpe0+wvD63heAXRfCCIed9RbCsp2CiI7raUOYOTU13N8PNHvpaGvayo4a3LLT1lDrVEPT2zLUlheB1R+ZTRfKWJ+dcocLJfi11vyJ51lLqJ0WD7tRwryezjiV5W28uJO9qykzX8JDe2lHl/9oyBwa2UMfOngpXCixvKdXTk3wrsKmiVYdZIqsoWEERjbcUNDuiaQomGoIbFdEHmsyWnuR+IeriKDVLnlawlyNHKwKlSU631PKep8J4Q+ayjkSLKYLhalNHlYvttb6fHm0p6OApsZ4l2VfdqZkjuysy6ysKLlckf1KUutCTs39bmCgEyyoasIWlVaMF7mgmWtBT8Kol5xpH9IGllo8cJdopcvZ2sImlDmMIbtDk3KIpeNiS08lQw11NFPTwVFlPP6pJ2gvRfI7gQUfmNAtf6Gs0wQxDsKGlVBdF8rCa3jzdwMaGHOsItrZk7hAyOzpK9VS06j5F49b0VNGOOfKs3lDToMsMBe9ZWtHFEgxTJLs7qrygKZjUnmCYoeAqeU6jqWuLJup4WghOdvCYJnrSkSzoyRkm5M2StQwVltPkfCAk58tET/CSg+8MUecmotMEnhBKfWBIZsg2ihruMJQaoIm+tkTLKEqspMh00w95gvFCQRtDwTT1gVDDSEVdlwqZfxoQRbK0g+tbiBZxzKlpnpypejdDwTaeOvorMk/IJE10h9CqRe28hhLbe0pMsdSwv4ZbhKivo2BjDWfL8UKJgeavwlwb5KlwhyE4u4XkGE2ytZCznKLCDZZq42VzT8HLCrpruFbIfOIINmh/qCdZ1ZBc65kLHR1Bkyf5zn6pN3SvGKIlFNGplhrO9QSXanLOMQTLCa0YJCRrCZm/CZmrLTm7WzCK4GJDiWUdFeYx1LCFg3NMd0XmCuF3Y5rITLDUsYS9zoHVzwnJoYpSTQoObyEzr4cFBNqYTopoaU/wkyLZ2lPhX/5Y95ulxGTV7KjhWrOZgl8MyUUafjYraNjNU1N3IWcjT5WzWqjwtoarHSUObGYO3GCJZpsBlnJGPd6ZYLyl1GdCA2625IwwJDP8GUKymbzuyPlZlvTUsaUh5zFDhRWFzPKKZLAlWdcQbObgF9tOqOsmB1dqcqYJmWstFbZRRI9poolmqiLnU0POvxScpah2iSL5UJNzgScY5+AuIbpO0YD3NCW+dLMszFSdFCWGqG6eVq2uYVNDdICGD6W7EPRWZEY5gpsE9rUkS3mijzzJnm6UpUFXG1hCUeVoS5WfNcFpblELL2qqrCvMvRfd45oalvKU2tiQ6ePJOVMRXase9iTtLJztPxJKLWpo2CRDcJwn2sWSLKIO1WQWNTCvpVUvOZhgSC40JD0dOctaSqzkCRbXsKlb11Oip6PCJ0IwSJM31j3akRxlP7Rwn6aGaUL0qiLnJkvB3xWZ2+Q1TfCwpQH3G0o92UzmX4o/oJNQMMSQc547wVHhdk+VCw01DFYEnTxzZKAm74QmeNNR1w6WzEhNK15VJzuCdxQ53dRUDws5KvwgBMOEgpcVNe0hZI6RXT1Jd0cyj5nsaEAHgVmGaJIlWdsc5Ui2ElrRR6jrRAttNMEAIWrTDFubkZaok7/AkzfIwfuWVq0jHzuCK4QabtLUMVPB3kJ0oyHTSVFlqMALilJf2Rf8k5aaHtMfayocLBS8L89oKoxpJvnAkDPa0qp5DAUTHKWmCcnthlou8iCKaFFLHWcINd1nyIwXqrSxMNmSs6KmoL2QrKuWtlQ5V0120xQ5vRyZS1rgFkWwhiOwiuQbR0OOVhQM9iS3tiXp4RawRPMp5tDletOOBL95MpM01dZTBM9pkn5qF010rIeHFcFZhmSGpYpTsI6nwhqe5C9ynhlpp5ophuRb6WcJFldkVnVEwwxVfrVkvnWUuNLCg5bgboFHPDlDPDmnK7hUrWiIbjadDclujlZcaokOFup4Ri1kacV6jmrrK1hN9bGwpKEBQ4Q6DvIUXOmo6U5LqQM6EPyiKNjVkPnJkDPNEaxhiFay5ExW1NXVUGqcpYYdPcGiCq7z/TSlbhL4pplWXKd7NZO5QQFrefhRQW/NHOsqcIglc4UhWklR8K0QzbAw08CBDnpbgqXdeD/QUsM4RZXDFBW6WJKe/mFPdH0LtBgiq57wFLzlyQzz82qYx5D5WJP5yVJDW01BfyHnS6HKO/reZqId1WGa4Hkh2kWodJ8i6KoIPlAj2hPt76CzXsVR6koPRzWTfKqIentatYpQw2me4AA3y1Kind3SwoOKZDcFXTwl9tWU6mfgRk9d71sKtlNwrjnYw5tC5n5LdKiGry3JKNlHEd3oaMCFHrazBPMp/uNJ+V7IudcSbeOIdjUEdwl0VHCOZo5t6YluEuaC9mQeMgSfOyKnYGFHcIeQ84yQWbuJYJpZw5CzglDH7gKnWqqM9ZTaXcN0TeYhR84eQtJT76JJ1lREe7WnnvsMmRc9FQ7SBBM9mV3lCUdmHk/S2RAMt0QjFNFqQpWjDPQ01DXWUdDBkXziKPjGEP3VP+zIWU2t7im41FOloyWzn/L6dkUy3VLDaZ6appgDLHPjJEsyvJngWEPUyVBiAaHCTEXwrLvSEbV1e1gKJniicWorC1MUrVjB3uDhJE/wgSOzk1DXpk0k73qCM8xw2UvD5kJmDUfOomqMpWCkJRlvKXGmoeBm18USjVIk04SClxTB6YrgLAPLWYK9HLUt5cmc0vYES8GnTeRc6skZbQkWdxRsIcyBRzx1DbTk9FbU0caTPOgJHhJKnOGIVhQqvKmo0llRw9sabrZkDtdg3PqaKi9oatjY8B+G371paMg6+mZFNNtQ04mWBq3rYLOmtWWQp8KJnpy9DdFensyjdqZ+yY40VJlH8wcdLzC8PZnvHMFUTZUrDTkLyQaGus5X5LzpYAf3i+e/ZlhqGqWhh6Ou6xTR9Z6oi5AZZtp7Mj2EEm8oSpxiYZCHU/1fbGdNNNRRoZMhmilEb2gqHOEJDtXkHK/JnG6IrvbPCwV3NhONVdS1thBMs1T4QOBcTWa2IzhMk2nW5Kyn9tXUtpv9RsG2msxk+ZsQzRQacJncpgke0+T8y5Fzj8BiGo7XlJjaTIlpQs7KFjpqGnKuoyEPeIKnFMkZHvopgh81ySxNFWvJWcKRs70j2FOT012IllEEO1n4pD1513Yg2ssQPOThOkvyrqHUdEXOSEsihmBbTbKX1kLBPWqWkLOqJbjB3GBIZmoa8qWl4CG/iZ7oiA72ZL7TJNeZUY7kFQftDcHHluBzRbCegzMtrRjVQpX2lgoPKKLJAkcbMl01XK2p7yhL8pCBbQ3BN2avJgKvttcrWDK3CiUOVxQ8ZP+pqXKyIxnmBymCg5vJjNfkPK4+c8cIfK8ocVt7kmfd/I5SR1hKvCzUtb+lhgc00ZaO6CyhIQP1Uv4yIZjload72PXX0OIJvnFU+0Zf6MhsJwTfW0r0UwQfW4LNLZl5HK261JCZ4qnBaAreVAS3WrjV0LBnNDUNNDToCEeFfwgcb4gOEqLRhirWkexrCEYKVV711DLYEE1XBEsp5tpTGjorkomKYF9FDXv7fR3BGwbettSxnyL53MBPjsxDZjMh+VUW9NRxq1DhVk+FSxQcaGjV9Pawv6eGByw5qzoy7xk4RsOShqjJwWKe/1pEEfzkobeD/dQJmpqedcyBTy2sr4nGNRH0c0SPWTLrqAc0OQcb/gemKgqucQT7ySWKCn2EUotoCvpZct7RO2sy/QW0IWcXd7pQRQyZVwT2USRO87uhjioTLKV2brpMUcMQRbKH/N2T+UlTpaMls6cmc6CCNy3JdYYSUzzJQ4oSD3oKLncULOiJvjBEC2oqnCJkJluCYy2ZQ5so9YYlZ1VLlQU1mXEW1jZERwj/MUSRc24TdexlqLKfQBtDTScJUV8FszXBEY5ktpD5Ur9hYB4Nb1iikw3JoYpkKX+RodRKFt53MMuRnKSpY31PwYaGaILh3wxJGz9TkTPEETxoCWZrgvOlmyMzxFEwVJE5xZKzvyJ4WxEc16Gd4Xe3Weq4XH2jKRikqOkGQ87hQnC7wBmGYLAnesX3M+S87eFATauuN+Qcrh7xIxXJbUIdMw3JGE3ylCWzrieaqCn4zhGM19TQ3z1oH1AX+pWEqIc7wNGAkULBo/ZxRaV9NNyh4Br3rCHZzbzmSfawBL0dNRwpW1kK9mxPXR9povcdrGSZK9c2k0xwFGzjuniCtRSZCZ6ccZ7gaktmgAOtKbG/JnOkJrjcQTdFMsxRQ2cLY3WTIrlCw1eWKn8R6pvt4GFDso3QoL4a3nLk3G6JrtME3dSenpx7PNFTmga0EaJTLQ061sEeQoWXhSo9LTXsaSjoJQRXeZLtDclbCrYzfzHHeaKjHCVOUkQHO3JeEepr56mhiyaYYKjjNU+Fed1wS5VlhWSqI/hYUdDOkaxiKehoyOnrCV5yBHtbWFqTHCCwtpDcYolesVR5yUzTZBb3RNMd0d6WP+SvhuBmRcGxnuQzT95IC285cr41cLGQ6aJJhmi4TMGempxeimBRQw1tFKV+8jd6KuzoSTqqDxzRtpZkurvKEHxlqXKRIjjfUNNXQsNOsRScoWFLT+YeRZVD3GRN0MdQcKqQjHDMrdGGVu3iYJpQx3WGUvfbmxwFfR20WBq0oYY7LMFhhgYtr8jpaEnaOzjawWWaTP8mMr0t/EPDPoqcnxTBI5o58L7uoWnMrpoqPwgVrlAUWE+V+TQl9rawoyP6QGAlQw2TPRX+YSkxyBC8Z6jhHkXBgQL7WII3DVFnRfCrBfxewv9D6xsyjys4VkhWb9pUU627JllV0YDNHMku/ldNMMXDEo4aFnAkk4U6frNEU4XgZUPmEKHUl44KrzmYamjAbh0JFvGnaTLPu1s9jPCwjFpYiN7z1DTOk/nc07CfDFzmCf7i+bfNHXhDtLeBXzTBT5rkMvWOIxpl4EMh2LGJBu2syDnAEx2naEhHDWMMzPZEhygyS1mS5RTJr5ZkoKbEUoYqr2kqdDUE8ztK7OaIntJkFrIECwv8LJTaVx5XJE86go8dFeZ3FN3rjabCAYpoYEeC9zzJVULBbmZhDyd7ko09ydpNZ3nm2Kee4FPPXHnYEF1nqOFEC08LUVcDvYXkJHW8gTaKCk9YGOeIJhqiE4ToPEepdp7IWFjdwnWaufGMwJJCMtUTTBBK9BGCOy2tGGrJTHIwyEOzp6aPzNMOtlZkDvcEWpP5SVNhfkvDxhmSazTJXYrM9U1E0xwFVwqZQwzJxw6+kGGGUj2FglGGmnb1/G51udRSMNlTw6GGnCcUwVcOpmsqTHa06o72sw1RL02p9z0VbnMLOaIX3QKaYKSCFQzBKEUNHTSc48k53RH9wxGMtpQa5KjjW0W0n6XCCCG4yxNNdhQ4R4l1Ff+2sSd6UFHiIEOyqqFgT01mEUMD+joy75jPhOA+oVVLm309FR4yVOlp4RhLiScNmSmaYF5Pw0STrOIoWMSR2UkRXOMp+M4SHW8o8Zoi6OZgjKOaFar8zZDzkWzvKOjkKBjmCXby8JahhjXULY4KlzgKLvAwxVGhvyd4zxB1d9T0piazmKLCVZY5sKiD0y2ZSYrkUEPUbIk+dlQ4SJHTR50k1DPaUWIdTZW9NJwnJMOECgd7ou/MnppMJ02O1VT4Wsh85MnZzcFTngpXGKo84qmwgKbCL/orR/SzJ2crA+t6Mp94KvxJUeIbT3CQu1uIdlQEOzlKfS3UMcrTiFmOuroocrZrT2AcmamOKg8YomeEKm/rlT2sociMaybaUlFhuqHCM2qIJ+rg4EcDFymiDSxzaHdPcpE62pD5kyM5SBMoA1PaUtfIthS85ig1VPiPPYXgYEMNk4Qq7TXBgo7oT57gPUdwgCHzhIVFPFU6OYJzHAX9m5oNrVjeE61miDrqQ4VSa1oiURTsKHC0IfjNwU2WzK6eqK8jWln4g15TVBnqmDteCJ501PGAocJhhqjZdtBEB6lnhLreFJKxmlKbeGrqLiSThVIbCdGzloasa6lpMQXHCME2boLpJgT7yWaemu6wBONbqGNVRS0PKIL7LckbjmQtR7K8I5qtqel+T/ChJTNIKLjdUMNIRyvOEko9YYl2cwQveBikCNawJKcLBbc7+JM92mysNvd/Fqp8a0k6CNEe7cnZrxlW0wQXaXjaktnRwNOGZKYiONwS7a1JVheq3WgJHlQUGKHKmp4KAxXR/ULURcNgoa4zhKSLpZR3kxRRb0NmD0OFn+UCS7CzI1nbP6+o4x47QZE5xRCt3ZagnYcvmpYQktXdk5YKXTzBC57kKEe0VVuiSYqapssMS3C9p2CKkHOg8B8Pa8p5atrIw3qezIWanMGa5HRDNF6RM9wcacl0N+Q8Z8hsIkSnaIIdHRUOEebAPy1zbCkhM062FCJtif7PU+UtoVXzWKqM1PxXO8cfdruhFQ/a6x3JKYagvVDhQEtNiyiiSQ7OsuRsZUku0CRNDs4Sog6KKjsZgk2bYJqijgsEenoKeniinRXBn/U3lgpPdyDZynQx8IiioMnCep5Ky8mjGs6Wty0l1hUQTcNWswS3WRp2kCNZwJG8omG8JphPUaFbC8lEfabwP7VtM9yoaNCAjpR41VNhrD9LkbN722v0CoZMByFzhaW+MyzRYEWFDQwN2M4/JiT76PuljT3VU/A36eaIThb+R9oZGOAJ9tewkgGvqOMNRWYjT/Cwu99Q8LqDE4TgbLWxJ1jaDDAERsFOFrobgjUsBScaguXU8kKm2RL19tRypSHnHNlHiIZqgufs4opgQdVdwxBNNFBR6kVFqb8ogimOzB6a6HTzrlDHEpYaxjiiA4TMQobkDg2vejjfwJGWmnbVFAw3H3hq2NyQfG7hz4aC+w3BbwbesG0swYayvpAs6++Ri1Vfzx93mFChvyN5xVHTS+0p9aqCAxyZ6ZacZyw5+7uuQkFPR9DDk9NOiE7X1PCYJVjVUqq7JlrHwWALF5nfHNGjApdpqgzx5OwilDhCiDYTgnc9waGW4BdLNNUQvOtpzDOWHDH8D7TR/A/85KljEQu3NREc4Pl/6B1Hhc8Umb5CsKMmGC9EPcxoT2amwHNCmeOEnOPbklnMkbOgIvO5UMOpQrS9UGVdt6iH/fURjhI/WOpaW9OKLYRod6HCUEdOX000wpDZQ6hwg6LgZfOqo1RfT/CrJzjekXOGhpc1VW71ZLbXyyp+93ILbC1kPtIEYx0FIx1VDrLoVzXRKRYWk809yYlC9ImcrinxtabKnzRJk3lAU1OLEN1j2zrYzr2myHRXJFf4h4QKT1qSTzTB5+ZNTzTRkAxX8FcLV2uS8eoQQ2aAkFzvCM72sJIcJET3WPjRk5wi32uSS9rfZajpWEvj9hW42F4o5NytSXYy8IKHay10VYdrcl4SkqscrXpMwyGOgtkajheSxdQqmpxP1L3t4R5PqasFnrQEjytq6qgp9Y09Qx9o4S1FzhUCn1kyHSzBWLemoSGvOqLNhZyBjmCaAUYpMgt4Ck7wBBMMwWKWgjsUwTaGVsxWC1mYoKiyqqeGKYqonSIRQ3KIkHO0pmAxTdBHkbOvfllfr+AA+7gnc50huVKYK393FOyg7rbPO/izI7hE4CnHHHnJ0ogNPRUGeUpsrZZTBJcrovUcJe51BPsr6GkJdhCCsZ6aTtMEb2pqWkqeVtDXE/QVggsU/Nl86d9RMF3DxvZTA58agu810RWawCiSzzXBeU3MMW9oyJUedvNEvQyNu1f10BSMddR1vaLCYpYa/mGocLSiYDcLbQz8aMn5iyF4xBNMs1P0QEOV7o5gaWGuzSeLue4tt3ro7y4Tgm4G/mopdZgl6q0o6KzJWE3mMksNr3r+a6CbT8g5wZNzT9O7fi/zpaOmnz3BRoqos+tv9zMbdpxsqDBOEewtJLt7cg5wtKKbvldpSzRRCD43VFheCI7yZLppggMVBS/KMAdHODJvOwq2NQSbKKKPLdFWQs7Fqo+mpl01JXYRgq8dnGLhTiFzqmWsUMdpllZdbKlyvSdYxhI9YghOtxR8LgSLWHK62mGGVoxzBE8LNWzqH9CUesQzFy5RQzTc56mhi6fgXEWwpKfE5Z7M05ZgZUPmo6auiv8YKzDYwWBLMErIbKHJvOwIrvEdhOBcQ9JdU1NHQ7CXn2XIDFBKU2WAgcX9UAUzDXWd5alwuyJ41Z9rjKLCL4aCp4WarhPm2rH+SaHUYE001JDZ2ZAzXPjdMpZWvC9wmqIB2lLhQ01D5jO06hghWMndbM7yRJMsoCj1vYbnFQVrW9jak3OlEJ3s/96+p33dEPRV5GxiqaGjIthUU6FFEZyqCa5qJrpBdzSw95IUnOPIrCUUjRZQFrbw5PR0R1qiYx3cb6nrWUMrBmmiBQxVHtTew5ICP/ip6g4hed/Akob/32wvBHsIOX83cI8hGeNeNPCIkPmXe8fPKx84OMSRM1MTdXSwjCZ4S30jVGhvqTRak/OVhgGazHuOCud5onEO1lJr6ecVyaOK6H7zqlBlIaHE0oroCgfvGJIdPcmfLNGLjpz7hZwZQpUbFME0A1cIJa7VNORkgfsMBatbKgwwJM9bSvQXeNOvbIjelg6WWvo5kvbKaJJNHexkKNHL9xRyFlH8Ti2riB5wVPhUk7nGkJnoCe428LR/wRGdYIlmWebCyxou1rCk4g/ShugBDX0V0ZQWkh0dOVsagkM0yV6OoLd5ye+pRlsCr0n+KiQrGuq5yJDzrTAXHtLUMduTDBVKrSm3eHL+6ijxhFDX9Z5gVU/wliHYTMiMFpKLNMEywu80wd3meoFmt6VbRMPenhrOc6DVe4pgXU8DnnHakLOIIrlF4FZPIw6R+zxBP0dyq6OOZ4Q5sLKCcz084ok+VsMMyQhNZmmBgX5xIXOEJTmi7VsGTvMTNdHHhpzdbE8Du2oKxgvBqQKdDDnTFOylCFaxR1syz2iqrOI/FEpNc3C6f11/7+ASS6l2inq2ciTrCCzgyemrCL5SVPjQkdPZUmGy2c9Sw9FtR1sS30RmsKPCS4rkIC/2U0MduwucYolGaPjKEyhzmiPYXagyWbYz8LWBDdzRimAXzxx4z8K9hpzlhLq+NiQ97HuKorMUfK/OVvC2JfiHUPCQI/q7J2gjK+tTDNxkCc4TMssqCs4TGtLVwQihyoAWgj9bosU80XGW6Ac9TJGziaUh5+hnFcHOnlaM1iRn29NaqGENTTTSUHCH2tWTeV0osUhH6psuVLjRUmGWhm6OZEshGeNowABHcJ2Bpy2ZszRcKkRXd2QuKVEeXnbfaEq825FguqfgfE2whlChSRMdron+LATTPQ2Z369t4B9C5gs/ylzv+CMmepIDPclFQl13W0rspPd1JOcbghGOEutqCv5qacURQl3dDKyvyJlqKXGPgcM9FfawJAMVmdcspcYKOZc4GjDYkFlK05olNMHyHn4zFNykyOxt99RkHlfwmiHo60l2EKI+mhreEKp080Tbug08BVPcgoqC5zWt+NLDTZ7oNSF51N1qie7Va3uCCwyZbkINf/NED6jzOsBdZjFN8oqG3wxVunqCSYYKf3EdhJyf9YWGf7tRU2oH3VHgPr1fe5J9hOgHd7xQ0y7qBwXr23aGErP0cm64JVjZwsOGqL+mhNgZmhJLW2oY4UhedsyBgzrCKrq7BmcpNVhR6jBPq64Vgi+kn6XE68pp8J5/+0wRHGOpsKenQn9DZntPzjRLZpDAdD2fnSgkG9tmIXnUwQ6WVighs7Yi2MxQ0N3CqYaCXkJ0oyOztMDJjmSSpcpvlrk0RMMOjmArQ04PRV1DO1FwhCVaUVPpKUM03JK5SxPsIWRu8/CGHi8UHChiqGFDTbSRJWeYUDDcH6vJWUxR4k1FXbMUwV6e4AJFXS8oMqsZKqzvYQ9DDQdZckY4aGsIhtlubbd2r3j4QBMoTamdPZk7O/Bf62lacZwneNjQoGcdVU7zJOd7ghsUHOkosagic6cnWc8+4gg285R6zZP5s1/LUbCKIznTwK36PkdwlOrl4U1LwfdCCa+IrvFkmgw1PCAUXKWo0sURXWcI2muKJlgyFzhynCY4RBOsqCjoI1R5zREco0n2Vt09BQtYSizgKNHfUmUrQ5UOCh51BFcLmY7umhYqXKQomOop8bUnWNNQcIiBcYaC6xzMNOS8JQQfeqKBmmglB+97ok/lfk3ygaHSyZaCRTzRxQo6GzLfa2jWBPepw+UmT7SQEJyiyRkhBLMVOfcoMjcK0eZChfUNzFAUzCsEN5vP/X1uP/n/aoMX+K+nw/Hjr/9xOo7j7Pju61tLcgvJpTWXNbfN5jLpi6VfCOviTktKlFusQixdEKWmEBUKNaIpjZRSSOXSgzaaKLdabrm1/9nZ+/f+vd/vz/v9+Xy+zZ7PRorYoZqyLrCwQdEAixxVOEXNNnjX2nUSRlkqGmWowk8lxR50JPy9Bo6qJXaXwNvREBvnThPEPrewryLhcAnj5WE15Fqi8W7R1sAuEu86S4ENikItFN4xkv9Af4nXSnUVcLiA9xzesFpivRRVeFKtsMRaKBhuSbjOELnAUtlSQUpXgdfB4Z1oSbnFEetbQ0IrAe+Y+pqnDcEJFj6S8LDZzZHwY4e3XONNlARraomNEt2bkvGsosA3ioyHm+6jCMbI59wqt4eeara28IzEmyPgoRaUOEDhTVdEJhmCoTWfC0p8aNkCp0oYqih2iqGi4yXeMkOsn4LdLLnmKfh/YogjNsPebeFGR4m9BJHLzB61XQ3BtpISfS2FugsK9FAtLWX1dCRcrCnUp44CNzuCowUZmxSRgYaE6Za0W2u/E7CVXCiI/UOR8aAm1+OSyE3mOUcwyc1zBBeoX1kiKy0Zfxck1Gsyulti11i83QTBF5Kg3pDQThFMVHiPSlK+0cSedng/VaS8bOZbtsBcTcZAR8JP5KeqQ1OYKAi20njdNNRpgnsU//K+JnaXJaGTomr7aYIphoRn9aeShJWKEq9LcozSF7QleEfDI5LYm5bgVkFkRwVDBCVu0DDIkGupo8TZBq+/pMQURYErJQmPKGKjNDkWOLx7Jd5QizdUweIaKrlP7SwJDhZvONjLkOsBBX9UpGxnydhXkfBLQ8IxgojQbLFnJf81JytSljclYYyEFyx0kVBvKWOFJmONpshGAcsduQY5giVNCV51eOdJYo/pLhbvM0uDHSevNKRcrKZIqnCtJeEsO95RoqcgGK4ocZcho1tTYtcZvH41pNQ7vA0WrhIfOSraIIntIAi+NXWCErdbkvrWwjRLrt0NKUdL6KSOscTOdMSOUtBHwL6OLA0vNSdynaWQEnCpIvKaIrJJEbvHkmuNhn6OjM8VkSGSqn1uYJCGHnq9I3aLhNME3t6GjIkO7xrNFumpyTNX/NrwX7CrIRiqqWijI9JO4d1iieykyfiposQIQ8YjjsjlBh6oHWbwRjgYJQn2NgSnNycmJAk3NiXhx44Sxykihxm8ybUwT1OVKySc7vi3OXVkdBJ4AyXBeksDXG0IhgtYY0lY5ahCD0ehborIk5aUWRJviMA7Xt5kyRjonrXENkm8yYqgs8VzgrJmClK20uMM3jRJ0FiQICQF9hdETlLQWRIb5ki6WDfWRPobvO6a4GP5mcOrNzDFELtTkONLh9dXE8xypEg7z8A9jkhrQ6Fhjlg/QVktJXxt4WXzT/03Q8IaQWSqIuEvloQ2mqC9Jfi7wRul4RX3pSPlzpoVlmCtI2jvKHCFhjcM3sN6lqF6HxnKelLjXWbwrpR4xzuCrTUZx2qq9oAh8p6ixCUGr78g8oyjRAtB5CZFwi80VerVpI0h+IeBxa6Zg6kWvpDHaioYYuEsRbDC3eOmC2JvGYLeioxGknL2UATNJN6hmtj1DlpLvDVmocYbrGCVJKOrg4X6DgddLA203BKMFngdJJFtFd7vJLm6KEpc5yjQrkk7M80SGe34X24nSex1Ra5Omgb71JKyg8SrU3i/kARKwWpH0kOGhKkObyfd0ZGjvyXlAkVZ4xRbYJ2irFMkFY1SwyWxr2oo4zlNiV+7zmaweFpT4kR3kaDAFW6xpSqzJay05FtYR4HmZhc9UxKbbfF2V8RG1MBmSaE+kmC6JnaRXK9gsiXhJHl/U0qM0WTcbyhwkYIvFGwjSbjfwhiJt8ZSQU+Bd5+marPMOkVkD0muxYLIfEuhh60x/J92itguihJSEMySVPQnTewnEm+620rTQEMsOfo4/kP/0ARvWjitlpSX7GxBgcMEsd3EEeYWvdytd+Saawi6aCIj1CkGb6Aj9rwhx16Cf3vAwFy5pyLhVonXzy51FDpdEblbkdJbUcEPDEFzQ8qNmhzzLTmmKWKbFCXeEuRabp6rxbvAtLF442QjQ+wEA9eL1xSR7Q0JXzlSHjJ4exq89yR0laScJ/FW6z4a73pFMEfDiRZvuvijIt86RaSFOl01riV2mD1UEvxGk/Geg5aWwGki1zgKPG9J2U8PEg8qYvMsZeytiTRXBMslCU8JSlxi8EabjwUldlDNLfzTUmCgxWsjqWCOHavYAqsknKFIO0yQ61VL5AVFxk6WhEaCAkdJgt9aSkzXlKNX2jEa79waYuc7gq0N3GDJGCBhoiTXUEPsdknCUE1CK0fwsiaylSF2uiDyO4XX3pFhNd7R4itFGc0k/ElBZwWvq+GC6szVeEoS/MZ+qylwpKNKv9Z469UOjqCjwlusicyTxG6VpNxcQ8IncoR4RhLbR+NdpGGmJWOcIzJGUuKPGpQg8rrG21dOMqQssJQ4RxH5jaUqnZuQ0F4Q+cjxLwPtpZbIAk3QTJHQWBE5S1BokoVtDd6lhqr9UpHSUxMcIYl9pojsb8h4SBOsMQcqvOWC2E8EVehqiJ1hrrAEbQxeK0NGZ0Gkq+guSRgniM23bIHVkqwx4hiHd7smaOyglyIyQuM978j4VS08J/A2G1KeMBRo4fBaSNhKUEZfQewVQ/C1I+MgfbEleEzCUw7mKXI0M3hd1EESVji8x5uQ41nxs1q4RMJCCXs7Iq9acpxn22oSDnQ/sJTxsCbHIYZiLyhY05TY0ZLIOQrGaSJDDN4t8pVaIrsqqFdEegtizc1iTew5Q4ayBDMUsQMkXocaYkc0hZua412siZ1rSXlR460zRJ5SlHGe5j801RLMlJTxtaOM3Q1pvxJ45zUlWFD7rsAbpfEm1JHxG0eh8w2R7QQVzBUw28FhFp5QZzq8t2rx2joqulYTWSuJdTYfWwqMFMcovFmSyJPNyLhE4E10pHzYjOC3huArRa571ZsGajQpQx38SBP5pyZB6lMU3khDnp0MBV51BE9o2E+TY5Ml2E8S7C0o6w1xvCZjf0HkVEHCzFoyNmqC+9wdcqN+Tp7jSDheE9ws8Y5V0NJCn2bk2tqSY4okdrEhx1iDN8cSudwepWmAGXKcJXK65H9to8jYQRH7SBF01ESUJdd0TayVInaWhLkOjlXE5irKGOnI6GSWGCJa482zBI9rCr0jyTVcEuzriC1vcr6mwFGSiqy5zMwxBH/TJHwjSPhL8+01kaaSUuMFKTcLEvaUePcrSmwn8DZrgikWb7CGPxkSjhQwrRk57tctmxLsb9sZvL9LSlyuSLlWkqOjwduo8b6Uv1DkmudIeFF2dHCgxVtk8dpIvHpBxhEOdhKk7OLIUSdJ+cSRY57B+0DgGUUlNfpthTfGkauzxrvTsUUaCVhlKeteTXCoJDCa2NOKhOmC4G1H8JBd4OBZReSRGkqcb/CO1PyLJTLB4j1q8JYaIutEjSLX8YKM+a6phdMsdLFUoV5RTm9JSkuDN8WcIon0NZMNZWh1q8C7SJEwV5HxrmnnTrf3KoJBlmCYI2ilSLlfEvlE4011NNgjgthzEua0oKK7JLE7HZHlEl60BLMVFewg4EWNt0ThrVNEVkkiTwpKXSWJzdRENgvKGq4IhjsiezgSFtsfCUq8qki5S1LRQeYQQ4nemmCkImWMw3tFUoUBZk4NOeZYEp4XRKTGa6wJjrWNHBVJR4m3FCnbuD6aak2WsMTh3SZImGCIPKNgsDpVwnsa70K31lCFJZYcwwSMFcQulGTsZuEaSdBXkPGZhu0FsdUO73RHjq8MPGGIfaGIbVTk6iuI3GFgucHrIQkmWSJdBd7BBu+uOryWAhY7+Lki9rK5wtEQzWwvtbqGhIMFwWRJsElsY4m9IIg9L6lCX0VklaPAYkfkZEGDnOWowlBJjtMUkcGK4Lg6EtoZInMUBVYLgn0UsdmCyCz7gIGHFfk+k1QwTh5We7A9x+IdJ6CvIkEagms0hR50eH9UnTQJ+2oiKyVlLFUE+8gBGu8MQ3CppUHesnjTHN4QB/UGPhCTHLFPHMFrCqa73gqObUJGa03wgbhHkrCfpEpzNLE7JDS25FMKhlhKKWKfCgqstLCPu1zBXy0J2ztwjtixBu8UTRn9LVtkmCN2iyFhtME70JHRQ1KVZXqKI/KNIKYMCYs1GUMEKbM1bKOI9LDXC7zbHS+bt+1MTWS9odA9DtrYtpbImQJ2VHh/lisEwaHqUk1kjKTAKknkBEXkbkdMGwq0dnhzLJF3NJH3JVwrqOB4Sca2hti75nmJN0WzxS6UxDYoEpxpa4htVlRjkYE7DZGzJVU72uC9IyhQL4i8YfGWSYLLNcHXloyz7QhNifmKSE9JgfGmuyLhc403Xm9vqcp6gXe3xuuv8F6VJNxkyTHEkHG2g0aKXL0MsXc1bGfgas2//dCONXiNLCX+5mB7eZIl1kHh7ajwpikyzlUUWOVOsjSQlsS+M0R+pPje/dzBXRZGO0rMtgQrLLG9VSu9n6CMXS3BhwYmSoIBhsjNBmZbgusE9BCPCP5triU4VhNbJfE+swSP27aayE8tuTpYYjtrYjMVGZdp2NpS1s6aBnKSHDsbKuplKbHM4a0wMFd/5/DmGyKrJSUaW4IBrqUhx0vyfzTBBLPIUcnZdrAkNsKR0sWRspumSns6Ch0v/qqIbBYUWKvPU/CFoyrDJGwSNFhbA/MlzKqjrO80hRbpKx0Jewsi/STftwGSlKc1JZyAzx05dhLEdnfQvhZOqiHWWEAHC7+30FuRcZUgaO5gpaIK+xsiHRUsqaPElTV40xQZQ107Q9BZE1nryDVGU9ZSQ47bmhBpLcYpUt7S+xuK/FiT8qKjwXYw5ypS2iuCv7q1gtgjhuBuB8LCFY5cUuCNtsQOFcT+4Ih9JX+k8Ea6v0iCIRZOtCT0Et00JW5UeC85Cg0ScK0k411HcG1zKtre3SeITBRk7WfwDhEvaYLTHP9le0m8By0JDwn4TlLW/aJOvGHxdjYUes+ScZigCkYQdNdEOhkiezgShqkx8ueKjI8lDfK2oNiOFvrZH1hS+tk7NV7nOmLHicGWEgubkXKdwdtZknCLJXaCpkrjZBtLZFsDP9CdxWsSr05Sxl6CMmoFbCOgryX40uDtamB7SVmXW4Ihlgpmq+00tBKUUa83WbjLUNkzDmY7cow1JDygyPGlhgGKYKz4vcV7QBNbJIgM11TUqZaMdwTeSguH6rOaw1JRKzaaGyxVm2EJ/uCIrVWUcZUkcp2grMsEjK+DMwS59jQk3Kd6SEq1d0S6uVmO4Bc1lDXTUcHjluCXEq+1OlBDj1pi9zgiXxnKuE0SqTXwhqbETW6RggMEnGl/q49UT2iCzgJvRwVXS2K/d6+ZkyUl7jawSVLit46EwxVljDZwoSQ20sDBihztHfk2yA8NVZghiXwrYHQdfKAOtzsayjhY9bY0yE2CWEeJ9xfzO423xhL5syS2TFJofO2pboHob0nY4GiAgRrvGQEDa/FWSsoaaYl0syRsEt3kWoH3B01shCXhTUWe9w3Bt44SC9QCh3eShQctwbaK2ApLroGCMlZrYqvlY3qYhM0aXpFkPOuoqJ3Dm6fxXrGwVF9gCWZagjPqznfkuMKQ8DPTQRO8ZqG1hPGKEm9IgpGW4DZDgTNriTxvFiq+Lz+0cKfp4wj6OCK9JSnzNSn9LFU7UhKZZMnYwcJ8s8yRsECScK4j5UOB95HFO0CzhY4xJxuCix0lDlEUeMdS6EZBkTsUkZ4K74dugyTXS7aNgL8aqjDfkCE0ZbwkCXpaWCKhl8P7VD5jxykivSyxyZrYERbe168LYu9ZYh86IkscgVLE7tWPKmJv11CgoyJltMEbrohtVAQfO4ImltiHEroYEs7RxAarVpY8AwXMcMReFOTYWe5iiLRQxJ5Q8DtJ8LQhWOhIeFESPGsILhbNDRljNbHzNRlTFbk2S3L0NOS6V1KFJYKUbSTcIIhM0wQ/s2TM0SRMNcQmSap3jCH4yhJZKSkwyRHpYYgsFeQ4U7xoCB7VVOExhXepo9ABBsYbvGWKXPME3lyH95YioZ0gssQRWWbI+FaSMkXijZXwgiTlYdPdkNLaETxlyDVIwqeaEus0aTcYcg0RVOkpR3CSJqIddK+90JCxzsDVloyrFd5ZAr4TBKfaWa6boEA7C7s6EpYaeFPjveooY72mjIccLHJ9HUwVlDhKkmutJDJBwnp1rvulJZggKDRfbXAkvC/4l3ozQOG9a8lxjx0i7nV4jSXc7vhe3OwIxjgSHjdEhhsif9YkPGlus3iLFDnWOFhtCZbJg0UbQcIaR67JjthoCyMEZRwhiXWyxO5QxI6w5NhT4U1WsJvDO60J34fW9hwzwlKij6ZAW9ne4L0s8C6XeBMEkd/LQy1VucBRot6QMlbivaBhoBgjqGiCJNhsqVp/S2SsG6DIONCR0dXhvWbJ+MRRZJkkuEjgDXJjFQW6SSL7GXK8Z2CZg7cVsbWGoKmEpzQ5elpiy8Ryg7dMkLLUEauzeO86CuwlSOlgYLojZWeJ9xM3S1PWfEfKl5ISLQ0MEKR8YOB2QfCxJBjrKPCN4f9MkaSsqoVXJBmP7EpFZ9UQfOoOFwSzBN4MQ8LsGrymlipcJQhmy0GaQjPqCHaXRwuCZwRbqK2Fg9wlClZqYicrIgMdZfxTQ0c7TBIbrChxmuzoKG8XRaSrIhhiyNFJkrC7oIAWMEOQa5aBekPCRknCo4IKPrYkvCDI8aYmY7WFtprgekcJZ3oLIqssCSMtFbQTJKwXYy3BY5oCh2iKPCpJOE+zRdpYgi6O2KmOAgvVCYaU4ySRek1sgyFhJ403QFHiVEmJHwtybO1gs8Hr5+BETQX3War0qZngYGgtVZtoqd6vFSk/UwdZElYqyjrF4HXUeFspIi9IGKf4j92pKGAdCYMVsbcV3kRF0N+R8LUd5PCsIGWoxDtBkCI0nKofdJQxT+LtZflvuc8Q3CjwWkq8KwUpHzkK/NmSsclCL0nseQdj5FRH5CNHSgtLiW80Of5HU9Hhlsga9bnBq3fEVltKfO5IaSTmGjjc4J0otcP7QsJUSQM8pEj5/wCuUuC2DWz8AAAAAElFTkSuQmCC"); } plugins/file-manager-advanced/application/library/codemirror/theme/ambiance-mobile.css000064400000000147147176754550025302 0ustar00.cm-s-ambiance.CodeMirror { -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; } plugins/file-manager-advanced/application/library/codemirror/theme/ayu-dark.css000064400000004565147176754550024023 0ustar00/* Based on https://github.com/dempfi/ayu */ .cm-s-ayu-dark.CodeMirror { background: #0a0e14; color: #b3b1ad; } .cm-s-ayu-dark div.CodeMirror-selected { background: #273747; } .cm-s-ayu-dark .CodeMirror-line::selection, .cm-s-ayu-dark .CodeMirror-line > span::selection, .cm-s-ayu-dark .CodeMirror-line > span > span::selection { background: rgba(39, 55, 71, 99); } .cm-s-ayu-dark .CodeMirror-line::-moz-selection, .cm-s-ayu-dark .CodeMirror-line > span::-moz-selection, .cm-s-ayu-dark .CodeMirror-line > span > span::-moz-selection { background: rgba(39, 55, 71, 99); } .cm-s-ayu-dark .CodeMirror-gutters { background: #0a0e14; border-right: 0px; } .cm-s-ayu-dark .CodeMirror-guttermarker { color: white; } .cm-s-ayu-dark .CodeMirror-guttermarker-subtle { color: #3d424d; } .cm-s-ayu-dark .CodeMirror-linenumber { color: #3d424d; } .cm-s-ayu-dark .CodeMirror-cursor { border-left: 1px solid #e6b450; } .cm-s-ayu-dark.cm-fat-cursor .CodeMirror-cursor { background-color: #a2a8a175 !important; } .cm-s-ayu-dark .cm-animate-fat-cursor { background-color: #a2a8a175 !important; } .cm-s-ayu-dark span.cm-comment { color: #626a73; } .cm-s-ayu-dark span.cm-atom { color: #ae81ff; } .cm-s-ayu-dark span.cm-number { color: #e6b450; } .cm-s-ayu-dark span.cm-comment.cm-attribute { color: #ffb454; } .cm-s-ayu-dark span.cm-comment.cm-def { color: rgba(57, 186, 230, 80); } .cm-s-ayu-dark span.cm-comment.cm-tag { color: #39bae6; } .cm-s-ayu-dark span.cm-comment.cm-type { color: #5998a6; } .cm-s-ayu-dark span.cm-property, .cm-s-ayu-dark span.cm-attribute { color: #ffb454; } .cm-s-ayu-dark span.cm-keyword { color: #ff8f40; } .cm-s-ayu-dark span.cm-builtin { color: #e6b450; } .cm-s-ayu-dark span.cm-string { color: #c2d94c; } .cm-s-ayu-dark span.cm-variable { color: #b3b1ad; } .cm-s-ayu-dark span.cm-variable-2 { color: #f07178; } .cm-s-ayu-dark span.cm-variable-3 { color: #39bae6; } .cm-s-ayu-dark span.cm-type { color: #ff8f40; } .cm-s-ayu-dark span.cm-def { color: #ffee99; } .cm-s-ayu-dark span.cm-bracket { color: #f8f8f2; } .cm-s-ayu-dark span.cm-tag { color: rgba(57, 186, 230, 80); } .cm-s-ayu-dark span.cm-header { color: #c2d94c; } .cm-s-ayu-dark span.cm-link { color: #39bae6; } .cm-s-ayu-dark span.cm-error { color: #ff3333; } .cm-s-ayu-dark .CodeMirror-activeline-background { background: #01060e; } .cm-s-ayu-dark .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; } plugins/file-manager-advanced/application/library/codemirror/theme/ayu-mirage.css000064400000004752147176754550024344 0ustar00/* Based on https://github.com/dempfi/ayu */ .cm-s-ayu-mirage.CodeMirror { background: #1f2430; color: #cbccc6; } .cm-s-ayu-mirage div.CodeMirror-selected { background: #34455a; } .cm-s-ayu-mirage .CodeMirror-line::selection, .cm-s-ayu-mirage .CodeMirror-line > span::selection, .cm-s-ayu-mirage .CodeMirror-line > span > span::selection { background: #34455a; } .cm-s-ayu-mirage .CodeMirror-line::-moz-selection, .cm-s-ayu-mirage .CodeMirror-line > span::-moz-selection, .cm-s-ayu-mirage .CodeMirror-line > span > span::-moz-selection { background: rgba(25, 30, 42, 99); } .cm-s-ayu-mirage .CodeMirror-gutters { background: #1f2430; border-right: 0px; } .cm-s-ayu-mirage .CodeMirror-guttermarker { color: white; } .cm-s-ayu-mirage .CodeMirror-guttermarker-subtle { color: rgba(112, 122, 140, 66); } .cm-s-ayu-mirage .CodeMirror-linenumber { color: rgba(61, 66, 77, 99); } .cm-s-ayu-mirage .CodeMirror-cursor { border-left: 1px solid #ffcc66; } .cm-s-ayu-mirage.cm-fat-cursor .CodeMirror-cursor {background-color: #a2a8a175 !important;} .cm-s-ayu-mirage .cm-animate-fat-cursor { background-color: #a2a8a175 !important; } .cm-s-ayu-mirage span.cm-comment { color: #5c6773; font-style:italic; } .cm-s-ayu-mirage span.cm-atom { color: #ae81ff; } .cm-s-ayu-mirage span.cm-number { color: #ffcc66; } .cm-s-ayu-mirage span.cm-comment.cm-attribute { color: #ffd580; } .cm-s-ayu-mirage span.cm-comment.cm-def { color: #d4bfff; } .cm-s-ayu-mirage span.cm-comment.cm-tag { color: #5ccfe6; } .cm-s-ayu-mirage span.cm-comment.cm-type { color: #5998a6; } .cm-s-ayu-mirage span.cm-property { color: #f29e74; } .cm-s-ayu-mirage span.cm-attribute { color: #ffd580; } .cm-s-ayu-mirage span.cm-keyword { color: #ffa759; } .cm-s-ayu-mirage span.cm-builtin { color: #ffcc66; } .cm-s-ayu-mirage span.cm-string { color: #bae67e; } .cm-s-ayu-mirage span.cm-variable { color: #cbccc6; } .cm-s-ayu-mirage span.cm-variable-2 { color: #f28779; } .cm-s-ayu-mirage span.cm-variable-3 { color: #5ccfe6; } .cm-s-ayu-mirage span.cm-type { color: #ffa759; } .cm-s-ayu-mirage span.cm-def { color: #ffd580; } .cm-s-ayu-mirage span.cm-bracket { color: rgba(92, 207, 230, 80); } .cm-s-ayu-mirage span.cm-tag { color: #5ccfe6; } .cm-s-ayu-mirage span.cm-header { color: #bae67e; } .cm-s-ayu-mirage span.cm-link { color: #5ccfe6; } .cm-s-ayu-mirage span.cm-error { color: #ff3333; } .cm-s-ayu-mirage .CodeMirror-activeline-background { background: #191e2a; } .cm-s-ayu-mirage .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; } plugins/file-manager-advanced/application/library/codemirror/theme/base16-dark.css000064400000004364147176754550024303 0ustar00/* Name: Base16 Default Dark Author: Chris Kempson (http://chriskempson.com) CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror) Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ .cm-s-base16-dark.CodeMirror { background: #151515; color: #e0e0e0; } .cm-s-base16-dark div.CodeMirror-selected { background: #303030; } .cm-s-base16-dark .CodeMirror-line::selection, .cm-s-base16-dark .CodeMirror-line > span::selection, .cm-s-base16-dark .CodeMirror-line > span > span::selection { background: rgba(48, 48, 48, .99); } .cm-s-base16-dark .CodeMirror-line::-moz-selection, .cm-s-base16-dark .CodeMirror-line > span::-moz-selection, .cm-s-base16-dark .CodeMirror-line > span > span::-moz-selection { background: rgba(48, 48, 48, .99); } .cm-s-base16-dark .CodeMirror-gutters { background: #151515; border-right: 0px; } .cm-s-base16-dark .CodeMirror-guttermarker { color: #ac4142; } .cm-s-base16-dark .CodeMirror-guttermarker-subtle { color: #505050; } .cm-s-base16-dark .CodeMirror-linenumber { color: #505050; } .cm-s-base16-dark .CodeMirror-cursor { border-left: 1px solid #b0b0b0; } .cm-s-base16-dark.cm-fat-cursor .CodeMirror-cursor { background-color: #8e8d8875 !important; } .cm-s-base16-dark .cm-animate-fat-cursor { background-color: #8e8d8875 !important; } .cm-s-base16-dark span.cm-comment { color: #8f5536; } .cm-s-base16-dark span.cm-atom { color: #aa759f; } .cm-s-base16-dark span.cm-number { color: #aa759f; } .cm-s-base16-dark span.cm-property, .cm-s-base16-dark span.cm-attribute { color: #90a959; } .cm-s-base16-dark span.cm-keyword { color: #ac4142; } .cm-s-base16-dark span.cm-string { color: #f4bf75; } .cm-s-base16-dark span.cm-variable { color: #90a959; } .cm-s-base16-dark span.cm-variable-2 { color: #6a9fb5; } .cm-s-base16-dark span.cm-def { color: #d28445; } .cm-s-base16-dark span.cm-bracket { color: #e0e0e0; } .cm-s-base16-dark span.cm-tag { color: #ac4142; } .cm-s-base16-dark span.cm-link { color: #aa759f; } .cm-s-base16-dark span.cm-error { background: #ac4142; color: #b0b0b0; } .cm-s-base16-dark .CodeMirror-activeline-background { background: #202020; } .cm-s-base16-dark .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; } plugins/file-manager-advanced/application/library/codemirror/theme/base16-light.css000064400000004114147176754550024462 0ustar00/* Name: Base16 Default Light Author: Chris Kempson (http://chriskempson.com) CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror) Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ .cm-s-base16-light.CodeMirror { background: #f5f5f5; color: #202020; } .cm-s-base16-light div.CodeMirror-selected { background: #e0e0e0; } .cm-s-base16-light .CodeMirror-line::selection, .cm-s-base16-light .CodeMirror-line > span::selection, .cm-s-base16-light .CodeMirror-line > span > span::selection { background: #e0e0e0; } .cm-s-base16-light .CodeMirror-line::-moz-selection, .cm-s-base16-light .CodeMirror-line > span::-moz-selection, .cm-s-base16-light .CodeMirror-line > span > span::-moz-selection { background: #e0e0e0; } .cm-s-base16-light .CodeMirror-gutters { background: #f5f5f5; border-right: 0px; } .cm-s-base16-light .CodeMirror-guttermarker { color: #ac4142; } .cm-s-base16-light .CodeMirror-guttermarker-subtle { color: #b0b0b0; } .cm-s-base16-light .CodeMirror-linenumber { color: #b0b0b0; } .cm-s-base16-light .CodeMirror-cursor { border-left: 1px solid #505050; } .cm-s-base16-light span.cm-comment { color: #8f5536; } .cm-s-base16-light span.cm-atom { color: #aa759f; } .cm-s-base16-light span.cm-number { color: #aa759f; } .cm-s-base16-light span.cm-property, .cm-s-base16-light span.cm-attribute { color: #90a959; } .cm-s-base16-light span.cm-keyword { color: #ac4142; } .cm-s-base16-light span.cm-string { color: #f4bf75; } .cm-s-base16-light span.cm-variable { color: #90a959; } .cm-s-base16-light span.cm-variable-2 { color: #6a9fb5; } .cm-s-base16-light span.cm-def { color: #d28445; } .cm-s-base16-light span.cm-bracket { color: #202020; } .cm-s-base16-light span.cm-tag { color: #ac4142; } .cm-s-base16-light span.cm-link { color: #aa759f; } .cm-s-base16-light span.cm-error { background: #ac4142; color: #505050; } .cm-s-base16-light .CodeMirror-activeline-background { background: #DDDCDC; } .cm-s-base16-light .CodeMirror-matchingbracket { color: #f5f5f5 !important; background-color: #6A9FB5 !important} plugins/file-manager-advanced/application/library/codemirror/theme/bespin.css000064400000002605147176754550023557 0ustar00/* Name: Bespin Author: Mozilla / Jan T. Sott CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror) Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ .cm-s-bespin.CodeMirror {background: #28211c; color: #9d9b97;} .cm-s-bespin div.CodeMirror-selected {background: #59554f !important;} .cm-s-bespin .CodeMirror-gutters {background: #28211c; border-right: 0px;} .cm-s-bespin .CodeMirror-linenumber {color: #666666;} .cm-s-bespin .CodeMirror-cursor {border-left: 1px solid #797977 !important;} .cm-s-bespin span.cm-comment {color: #937121;} .cm-s-bespin span.cm-atom {color: #9b859d;} .cm-s-bespin span.cm-number {color: #9b859d;} .cm-s-bespin span.cm-property, .cm-s-bespin span.cm-attribute {color: #54be0d;} .cm-s-bespin span.cm-keyword {color: #cf6a4c;} .cm-s-bespin span.cm-string {color: #f9ee98;} .cm-s-bespin span.cm-variable {color: #54be0d;} .cm-s-bespin span.cm-variable-2 {color: #5ea6ea;} .cm-s-bespin span.cm-def {color: #cf7d34;} .cm-s-bespin span.cm-error {background: #cf6a4c; color: #797977;} .cm-s-bespin span.cm-bracket {color: #9d9b97;} .cm-s-bespin span.cm-tag {color: #cf6a4c;} .cm-s-bespin span.cm-link {color: #9b859d;} .cm-s-bespin .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;} .cm-s-bespin .CodeMirror-activeline-background { background: #404040; } plugins/file-manager-advanced/application/library/codemirror/theme/blackboard.css000064400000003613147176754550024363 0ustar00/* Port of TextMate's Blackboard theme */ .cm-s-blackboard.CodeMirror { background: #0C1021; color: #F8F8F8; } .cm-s-blackboard div.CodeMirror-selected { background: #253B76; } .cm-s-blackboard .CodeMirror-line::selection, .cm-s-blackboard .CodeMirror-line > span::selection, .cm-s-blackboard .CodeMirror-line > span > span::selection { background: rgba(37, 59, 118, .99); } .cm-s-blackboard .CodeMirror-line::-moz-selection, .cm-s-blackboard .CodeMirror-line > span::-moz-selection, .cm-s-blackboard .CodeMirror-line > span > span::-moz-selection { background: rgba(37, 59, 118, .99); } .cm-s-blackboard .CodeMirror-gutters { background: #0C1021; border-right: 0; } .cm-s-blackboard .CodeMirror-guttermarker { color: #FBDE2D; } .cm-s-blackboard .CodeMirror-guttermarker-subtle { color: #888; } .cm-s-blackboard .CodeMirror-linenumber { color: #888; } .cm-s-blackboard .CodeMirror-cursor { border-left: 1px solid #A7A7A7; } .cm-s-blackboard .cm-keyword { color: #FBDE2D; } .cm-s-blackboard .cm-atom { color: #D8FA3C; } .cm-s-blackboard .cm-number { color: #D8FA3C; } .cm-s-blackboard .cm-def { color: #8DA6CE; } .cm-s-blackboard .cm-variable { color: #FF6400; } .cm-s-blackboard .cm-operator { color: #FBDE2D; } .cm-s-blackboard .cm-comment { color: #AEAEAE; } .cm-s-blackboard .cm-string { color: #61CE3C; } .cm-s-blackboard .cm-string-2 { color: #61CE3C; } .cm-s-blackboard .cm-meta { color: #D8FA3C; } .cm-s-blackboard .cm-builtin { color: #8DA6CE; } .cm-s-blackboard .cm-tag { color: #8DA6CE; } .cm-s-blackboard .cm-attribute { color: #8DA6CE; } .cm-s-blackboard .cm-header { color: #FF6400; } .cm-s-blackboard .cm-hr { color: #AEAEAE; } .cm-s-blackboard .cm-link { color: #8DA6CE; } .cm-s-blackboard .cm-error { background: #9D1E15; color: #F8F8F8; } .cm-s-blackboard .CodeMirror-activeline-background { background: #3C3636; } .cm-s-blackboard .CodeMirror-matchingbracket { outline:1px solid grey;color:white !important; } plugins/file-manager-advanced/application/library/codemirror/theme/cobalt.css000064400000003276147176754550023550 0ustar00.cm-s-cobalt.CodeMirror { background: #002240; color: white; } .cm-s-cobalt div.CodeMirror-selected { background: #b36539; } .cm-s-cobalt .CodeMirror-line::selection, .cm-s-cobalt .CodeMirror-line > span::selection, .cm-s-cobalt .CodeMirror-line > span > span::selection { background: rgba(179, 101, 57, .99); } .cm-s-cobalt .CodeMirror-line::-moz-selection, .cm-s-cobalt .CodeMirror-line > span::-moz-selection, .cm-s-cobalt .CodeMirror-line > span > span::-moz-selection { background: rgba(179, 101, 57, .99); } .cm-s-cobalt .CodeMirror-gutters { background: #002240; border-right: 1px solid #aaa; } .cm-s-cobalt .CodeMirror-guttermarker { color: #ffee80; } .cm-s-cobalt .CodeMirror-guttermarker-subtle { color: #d0d0d0; } .cm-s-cobalt .CodeMirror-linenumber { color: #d0d0d0; } .cm-s-cobalt .CodeMirror-cursor { border-left: 1px solid white; } .cm-s-cobalt span.cm-comment { color: #08f; } .cm-s-cobalt span.cm-atom { color: #845dc4; } .cm-s-cobalt span.cm-number, .cm-s-cobalt span.cm-attribute { color: #ff80e1; } .cm-s-cobalt span.cm-keyword { color: #ffee80; } .cm-s-cobalt span.cm-string { color: #3ad900; } .cm-s-cobalt span.cm-meta { color: #ff9d00; } .cm-s-cobalt span.cm-variable-2, .cm-s-cobalt span.cm-tag { color: #9effff; } .cm-s-cobalt span.cm-variable-3, .cm-s-cobalt span.cm-def, .cm-s-cobalt .cm-type { color: white; } .cm-s-cobalt span.cm-bracket { color: #d8d8d8; } .cm-s-cobalt span.cm-builtin, .cm-s-cobalt span.cm-special { color: #ff9e59; } .cm-s-cobalt span.cm-link { color: #845dc4; } .cm-s-cobalt span.cm-error { color: #9d1e15; } .cm-s-cobalt .CodeMirror-activeline-background { background: #002D57; } .cm-s-cobalt .CodeMirror-matchingbracket { outline:1px solid grey;color:white !important; } plugins/file-manager-advanced/application/library/codemirror/theme/colorforth.css000064400000003215147176754550024456 0ustar00.cm-s-colorforth.CodeMirror { background: #000000; color: #f8f8f8; } .cm-s-colorforth .CodeMirror-gutters { background: #0a001f; border-right: 1px solid #aaa; } .cm-s-colorforth .CodeMirror-guttermarker { color: #FFBD40; } .cm-s-colorforth .CodeMirror-guttermarker-subtle { color: #78846f; } .cm-s-colorforth .CodeMirror-linenumber { color: #bababa; } .cm-s-colorforth .CodeMirror-cursor { border-left: 1px solid white; } .cm-s-colorforth span.cm-comment { color: #ededed; } .cm-s-colorforth span.cm-def { color: #ff1c1c; font-weight:bold; } .cm-s-colorforth span.cm-keyword { color: #ffd900; } .cm-s-colorforth span.cm-builtin { color: #00d95a; } .cm-s-colorforth span.cm-variable { color: #73ff00; } .cm-s-colorforth span.cm-string { color: #007bff; } .cm-s-colorforth span.cm-number { color: #00c4ff; } .cm-s-colorforth span.cm-atom { color: #606060; } .cm-s-colorforth span.cm-variable-2 { color: #EEE; } .cm-s-colorforth span.cm-variable-3, .cm-s-colorforth span.cm-type { color: #DDD; } .cm-s-colorforth span.cm-property {} .cm-s-colorforth span.cm-operator {} .cm-s-colorforth span.cm-meta { color: yellow; } .cm-s-colorforth span.cm-qualifier { color: #FFF700; } .cm-s-colorforth span.cm-bracket { color: #cc7; } .cm-s-colorforth span.cm-tag { color: #FFBD40; } .cm-s-colorforth span.cm-attribute { color: #FFF700; } .cm-s-colorforth span.cm-error { color: #f00; } .cm-s-colorforth div.CodeMirror-selected { background: #333d53; } .cm-s-colorforth span.cm-compilation { background: rgba(255, 255, 255, 0.12); } .cm-s-colorforth .CodeMirror-activeline-background { background: #253540; } plugins/file-manager-advanced/application/library/codemirror/theme/darcula.css000064400000005176147176754550023720 0ustar00/** Name: IntelliJ IDEA darcula theme From IntelliJ IDEA by JetBrains */ .cm-s-darcula { font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif;} .cm-s-darcula.CodeMirror { background: #2B2B2B; color: #A9B7C6; } .cm-s-darcula span.cm-meta { color: #BBB529; } .cm-s-darcula span.cm-number { color: #6897BB; } .cm-s-darcula span.cm-keyword { color: #CC7832; line-height: 1em; font-weight: bold; } .cm-s-darcula span.cm-def { color: #A9B7C6; font-style: italic; } .cm-s-darcula span.cm-variable { color: #A9B7C6; } .cm-s-darcula span.cm-variable-2 { color: #A9B7C6; } .cm-s-darcula span.cm-variable-3 { color: #9876AA; } .cm-s-darcula span.cm-type { color: #AABBCC; font-weight: bold; } .cm-s-darcula span.cm-property { color: #FFC66D; } .cm-s-darcula span.cm-operator { color: #A9B7C6; } .cm-s-darcula span.cm-string { color: #6A8759; } .cm-s-darcula span.cm-string-2 { color: #6A8759; } .cm-s-darcula span.cm-comment { color: #61A151; font-style: italic; } .cm-s-darcula span.cm-link { color: #CC7832; } .cm-s-darcula span.cm-atom { color: #CC7832; } .cm-s-darcula span.cm-error { color: #BC3F3C; } .cm-s-darcula span.cm-tag { color: #629755; font-weight: bold; font-style: italic; text-decoration: underline; } .cm-s-darcula span.cm-attribute { color: #6897bb; } .cm-s-darcula span.cm-qualifier { color: #6A8759; } .cm-s-darcula span.cm-bracket { color: #A9B7C6; } .cm-s-darcula span.cm-builtin { color: #FF9E59; } .cm-s-darcula span.cm-special { color: #FF9E59; } .cm-s-darcula span.cm-matchhighlight { color: #FFFFFF; background-color: rgba(50, 89, 48, .7); font-weight: normal;} .cm-s-darcula span.cm-searching { color: #FFFFFF; background-color: rgba(61, 115, 59, .7); font-weight: normal;} .cm-s-darcula .CodeMirror-cursor { border-left: 1px solid #A9B7C6; } .cm-s-darcula .CodeMirror-activeline-background { background: #323232; } .cm-s-darcula .CodeMirror-gutters { background: #313335; border-right: 1px solid #313335; } .cm-s-darcula .CodeMirror-guttermarker { color: #FFEE80; } .cm-s-darcula .CodeMirror-guttermarker-subtle { color: #D0D0D0; } .cm-s-darcula .CodeMirrir-linenumber { color: #606366; } .cm-s-darcula .CodeMirror-matchingbracket { background-color: #3B514D; color: #FFEF28 !important; font-weight: bold; } .cm-s-darcula div.CodeMirror-selected { background: #214283; } .CodeMirror-hints.darcula { font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; color: #9C9E9E; background-color: #3B3E3F !important; } .CodeMirror-hints.darcula .CodeMirror-hint-active { background-color: #494D4E !important; color: #9C9E9E !important; } plugins/file-manager-advanced/application/library/codemirror/theme/dracula.css000064400000003772147176754550023720 0ustar00/* Name: dracula Author: Michael Kaminsky (http://github.com/mkaminsky11) Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme) */ .cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters { background-color: #282a36 !important; color: #f8f8f2 !important; border: none; } .cm-s-dracula .CodeMirror-gutters { color: #282a36; } .cm-s-dracula .CodeMirror-cursor { border-left: solid thin #f8f8f0; } .cm-s-dracula .CodeMirror-linenumber { color: #6D8A88; } .cm-s-dracula .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); } .cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line > span::selection, .cm-s-dracula .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); } .cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula .CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); } .cm-s-dracula span.cm-comment { color: #6272a4; } .cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { color: #f1fa8c; } .cm-s-dracula span.cm-number { color: #bd93f9; } .cm-s-dracula span.cm-variable { color: #50fa7b; } .cm-s-dracula span.cm-variable-2 { color: white; } .cm-s-dracula span.cm-def { color: #50fa7b; } .cm-s-dracula span.cm-operator { color: #ff79c6; } .cm-s-dracula span.cm-keyword { color: #ff79c6; } .cm-s-dracula span.cm-atom { color: #bd93f9; } .cm-s-dracula span.cm-meta { color: #f8f8f2; } .cm-s-dracula span.cm-tag { color: #ff79c6; } .cm-s-dracula span.cm-attribute { color: #50fa7b; } .cm-s-dracula span.cm-qualifier { color: #50fa7b; } .cm-s-dracula span.cm-property { color: #66d9ef; } .cm-s-dracula span.cm-builtin { color: #50fa7b; } .cm-s-dracula span.cm-variable-3, .cm-s-dracula span.cm-type { color: #ffb86c; } .cm-s-dracula .CodeMirror-activeline-background { background: rgba(255,255,255,0.1); } .cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; } plugins/file-manager-advanced/application/library/codemirror/theme/duotone-dark.css000064400000005066147176754550024677 0ustar00/* Name: DuoTone-Dark Author: by Bram de Haan, adapted from DuoTone themes by Simurai (http://simurai.com/projects/2016/01/01/duotone-themes) CodeMirror template by Jan T. Sott (https://github.com/idleberg), adapted by Bram de Haan (https://github.com/atelierbram/) */ .cm-s-duotone-dark.CodeMirror { background: #2a2734; color: #6c6783; } .cm-s-duotone-dark div.CodeMirror-selected { background: #545167!important; } .cm-s-duotone-dark .CodeMirror-gutters { background: #2a2734; border-right: 0px; } .cm-s-duotone-dark .CodeMirror-linenumber { color: #545167; } /* begin cursor */ .cm-s-duotone-dark .CodeMirror-cursor { border-left: 1px solid #ffad5c; /* border-left: 1px solid #ffad5c80; */ border-right: .5em solid #ffad5c; /* border-right: .5em solid #ffad5c80; */ opacity: .5; } .cm-s-duotone-dark .CodeMirror-activeline-background { background: #363342; /* background: #36334280; */ opacity: .5;} .cm-s-duotone-dark .cm-fat-cursor .CodeMirror-cursor { background: #ffad5c; /* background: #ffad5c80; */ opacity: .5;} /* end cursor */ .cm-s-duotone-dark span.cm-atom, .cm-s-duotone-dark span.cm-number, .cm-s-duotone-dark span.cm-keyword, .cm-s-duotone-dark span.cm-variable, .cm-s-duotone-dark span.cm-attribute, .cm-s-duotone-dark span.cm-quote, .cm-s-duotone-dark span.cm-hr, .cm-s-duotone-dark span.cm-link { color: #ffcc99; } .cm-s-duotone-dark span.cm-property { color: #9a86fd; } .cm-s-duotone-dark span.cm-punctuation, .cm-s-duotone-dark span.cm-unit, .cm-s-duotone-dark span.cm-negative { color: #e09142; } .cm-s-duotone-dark span.cm-string { color: #ffb870; } .cm-s-duotone-dark span.cm-operator { color: #ffad5c; } .cm-s-duotone-dark span.cm-positive { color: #6a51e6; } .cm-s-duotone-dark span.cm-variable-2, .cm-s-duotone-dark span.cm-variable-3, .cm-s-duotone-dark span.cm-type, .cm-s-duotone-dark span.cm-string-2, .cm-s-duotone-dark span.cm-url { color: #7a63ee; } .cm-s-duotone-dark span.cm-def, .cm-s-duotone-dark span.cm-tag, .cm-s-duotone-dark span.cm-builtin, .cm-s-duotone-dark span.cm-qualifier, .cm-s-duotone-dark span.cm-header, .cm-s-duotone-dark span.cm-em { color: #eeebff; } .cm-s-duotone-dark span.cm-bracket, .cm-s-duotone-dark span.cm-comment { color: #a7a5b2; } /* using #f00 red for errors, don't think any of the colorscheme variables will stand out enough, ... maybe by giving it a background-color ... */ .cm-s-duotone-dark span.cm-error, .cm-s-duotone-dark span.cm-invalidchar { color: #f00; } .cm-s-duotone-dark span.cm-header { font-weight: normal; } .cm-s-duotone-dark .CodeMirror-matchingbracket { text-decoration: underline; color: #eeebff !important; } plugins/file-manager-advanced/application/library/codemirror/theme/duotone-light.css000064400000005237147176754550025065 0ustar00/* Name: DuoTone-Light Author: by Bram de Haan, adapted from DuoTone themes by Simurai (http://simurai.com/projects/2016/01/01/duotone-themes) CodeMirror template by Jan T. Sott (https://github.com/idleberg), adapted by Bram de Haan (https://github.com/atelierbram/) */ .cm-s-duotone-light.CodeMirror { background: #faf8f5; color: #b29762; } .cm-s-duotone-light div.CodeMirror-selected { background: #e3dcce !important; } .cm-s-duotone-light .CodeMirror-gutters { background: #faf8f5; border-right: 0px; } .cm-s-duotone-light .CodeMirror-linenumber { color: #cdc4b1; } /* begin cursor */ .cm-s-duotone-light .CodeMirror-cursor { border-left: 1px solid #93abdc; /* border-left: 1px solid #93abdc80; */ border-right: .5em solid #93abdc; /* border-right: .5em solid #93abdc80; */ opacity: .5; } .cm-s-duotone-light .CodeMirror-activeline-background { background: #e3dcce; /* background: #e3dcce80; */ opacity: .5; } .cm-s-duotone-light .cm-fat-cursor .CodeMirror-cursor { background: #93abdc; /* #93abdc80; */ opacity: .5; } /* end cursor */ .cm-s-duotone-light span.cm-atom, .cm-s-duotone-light span.cm-number, .cm-s-duotone-light span.cm-keyword, .cm-s-duotone-light span.cm-variable, .cm-s-duotone-light span.cm-attribute, .cm-s-duotone-light span.cm-quote, .cm-s-duotone-light-light span.cm-hr, .cm-s-duotone-light-light span.cm-link { color: #063289; } .cm-s-duotone-light span.cm-property { color: #b29762; } .cm-s-duotone-light span.cm-punctuation, .cm-s-duotone-light span.cm-unit, .cm-s-duotone-light span.cm-negative { color: #063289; } .cm-s-duotone-light span.cm-string, .cm-s-duotone-light span.cm-operator { color: #1659df; } .cm-s-duotone-light span.cm-positive { color: #896724; } .cm-s-duotone-light span.cm-variable-2, .cm-s-duotone-light span.cm-variable-3, .cm-s-duotone-light span.cm-type, .cm-s-duotone-light span.cm-string-2, .cm-s-duotone-light span.cm-url { color: #896724; } .cm-s-duotone-light span.cm-def, .cm-s-duotone-light span.cm-tag, .cm-s-duotone-light span.cm-builtin, .cm-s-duotone-light span.cm-qualifier, .cm-s-duotone-light span.cm-header, .cm-s-duotone-light span.cm-em { color: #2d2006; } .cm-s-duotone-light span.cm-bracket, .cm-s-duotone-light span.cm-comment { color: #6f6e6a; } /* using #f00 red for errors, don't think any of the colorscheme variables will stand out enough, ... maybe by giving it a background-color ... */ /* .cm-s-duotone-light span.cm-error { background: #896724; color: #728fcb; } */ .cm-s-duotone-light span.cm-error, .cm-s-duotone-light span.cm-invalidchar { color: #f00; } .cm-s-duotone-light span.cm-header { font-weight: normal; } .cm-s-duotone-light .CodeMirror-matchingbracket { text-decoration: underline; color: #faf8f5 !important; } plugins/file-manager-advanced/application/library/codemirror/theme/eclipse.css000064400000002243147176754550023721 0ustar00.cm-s-eclipse span.cm-meta { color: #FF1717; } .cm-s-eclipse span.cm-keyword { line-height: 1em; font-weight: bold; color: #7F0055; } .cm-s-eclipse span.cm-atom { color: #219; } .cm-s-eclipse span.cm-number { color: #164; } .cm-s-eclipse span.cm-def { color: #00f; } .cm-s-eclipse span.cm-variable { color: black; } .cm-s-eclipse span.cm-variable-2 { color: #0000C0; } .cm-s-eclipse span.cm-variable-3, .cm-s-eclipse span.cm-type { color: #0000C0; } .cm-s-eclipse span.cm-property { color: black; } .cm-s-eclipse span.cm-operator { color: black; } .cm-s-eclipse span.cm-comment { color: #3F7F5F; } .cm-s-eclipse span.cm-string { color: #2A00FF; } .cm-s-eclipse span.cm-string-2 { color: #f50; } .cm-s-eclipse span.cm-qualifier { color: #555; } .cm-s-eclipse span.cm-builtin { color: #30a; } .cm-s-eclipse span.cm-bracket { color: #cc7; } .cm-s-eclipse span.cm-tag { color: #170; } .cm-s-eclipse span.cm-attribute { color: #00c; } .cm-s-eclipse span.cm-link { color: #219; } .cm-s-eclipse span.cm-error { color: #f00; } .cm-s-eclipse .CodeMirror-activeline-background { background: #e8f2ff; } .cm-s-eclipse .CodeMirror-matchingbracket { outline:1px solid grey; color:black !important; } plugins/file-manager-advanced/application/library/codemirror/theme/elegant.css000064400000001415147176754550023714 0ustar00.cm-s-elegant span.cm-number, .cm-s-elegant span.cm-string, .cm-s-elegant span.cm-atom { color: #762; } .cm-s-elegant span.cm-comment { color: #262; font-style: italic; line-height: 1em; } .cm-s-elegant span.cm-meta { color: #555; font-style: italic; line-height: 1em; } .cm-s-elegant span.cm-variable { color: black; } .cm-s-elegant span.cm-variable-2 { color: #b11; } .cm-s-elegant span.cm-qualifier { color: #555; } .cm-s-elegant span.cm-keyword { color: #730; } .cm-s-elegant span.cm-builtin { color: #30a; } .cm-s-elegant span.cm-link { color: #762; } .cm-s-elegant span.cm-error { background-color: #fdd; } .cm-s-elegant .CodeMirror-activeline-background { background: #e8f2ff; } .cm-s-elegant .CodeMirror-matchingbracket { outline:1px solid grey; color:black !important; } plugins/file-manager-advanced/application/library/codemirror/theme/erlang-dark.css000064400000004356147176754550024473 0ustar00.cm-s-erlang-dark.CodeMirror { background: #002240; color: white; } .cm-s-erlang-dark div.CodeMirror-selected { background: #b36539; } .cm-s-erlang-dark .CodeMirror-line::selection, .cm-s-erlang-dark .CodeMirror-line > span::selection, .cm-s-erlang-dark .CodeMirror-line > span > span::selection { background: rgba(179, 101, 57, .99); } .cm-s-erlang-dark .CodeMirror-line::-moz-selection, .cm-s-erlang-dark .CodeMirror-line > span::-moz-selection, .cm-s-erlang-dark .CodeMirror-line > span > span::-moz-selection { background: rgba(179, 101, 57, .99); } .cm-s-erlang-dark .CodeMirror-gutters { background: #002240; border-right: 1px solid #aaa; } .cm-s-erlang-dark .CodeMirror-guttermarker { color: white; } .cm-s-erlang-dark .CodeMirror-guttermarker-subtle { color: #d0d0d0; } .cm-s-erlang-dark .CodeMirror-linenumber { color: #d0d0d0; } .cm-s-erlang-dark .CodeMirror-cursor { border-left: 1px solid white; } .cm-s-erlang-dark span.cm-quote { color: #ccc; } .cm-s-erlang-dark span.cm-atom { color: #f133f1; } .cm-s-erlang-dark span.cm-attribute { color: #ff80e1; } .cm-s-erlang-dark span.cm-bracket { color: #ff9d00; } .cm-s-erlang-dark span.cm-builtin { color: #eaa; } .cm-s-erlang-dark span.cm-comment { color: #77f; } .cm-s-erlang-dark span.cm-def { color: #e7a; } .cm-s-erlang-dark span.cm-keyword { color: #ffee80; } .cm-s-erlang-dark span.cm-meta { color: #50fefe; } .cm-s-erlang-dark span.cm-number { color: #ffd0d0; } .cm-s-erlang-dark span.cm-operator { color: #d55; } .cm-s-erlang-dark span.cm-property { color: #ccc; } .cm-s-erlang-dark span.cm-qualifier { color: #ccc; } .cm-s-erlang-dark span.cm-special { color: #ffbbbb; } .cm-s-erlang-dark span.cm-string { color: #3ad900; } .cm-s-erlang-dark span.cm-string-2 { color: #ccc; } .cm-s-erlang-dark span.cm-tag { color: #9effff; } .cm-s-erlang-dark span.cm-variable { color: #50fe50; } .cm-s-erlang-dark span.cm-variable-2 { color: #e0e; } .cm-s-erlang-dark span.cm-variable-3, .cm-s-erlang-dark span.cm-type { color: #ccc; } .cm-s-erlang-dark span.cm-error { color: #9d1e15; } .cm-s-erlang-dark .CodeMirror-activeline-background { background: #013461; } .cm-s-erlang-dark .CodeMirror-matchingbracket { outline:1px solid grey; color:white !important; } plugins/file-manager-advanced/application/library/codemirror/theme/gruvbox-dark.css000064400000003576147176754550024722 0ustar00/* Name: gruvbox-dark Author: kRkk (https://github.com/krkk) Original gruvbox color scheme by Pavel Pertsev (https://github.com/morhetz/gruvbox) */ .cm-s-gruvbox-dark.CodeMirror, .cm-s-gruvbox-dark .CodeMirror-gutters { background-color: #282828; color: #bdae93; } .cm-s-gruvbox-dark .CodeMirror-gutters {background: #282828; border-right: 0px;} .cm-s-gruvbox-dark .CodeMirror-linenumber {color: #7c6f64;} .cm-s-gruvbox-dark .CodeMirror-cursor { border-left: 1px solid #ebdbb2; } .cm-s-gruvbox-dark.cm-fat-cursor .CodeMirror-cursor { background-color: #8e8d8875 !important; } .cm-s-gruvbox-dark .cm-animate-fat-cursor { background-color: #8e8d8875 !important; } .cm-s-gruvbox-dark div.CodeMirror-selected { background: #928374; } .cm-s-gruvbox-dark span.cm-meta { color: #83a598; } .cm-s-gruvbox-dark span.cm-comment { color: #928374; } .cm-s-gruvbox-dark span.cm-number, span.cm-atom { color: #d3869b; } .cm-s-gruvbox-dark span.cm-keyword { color: #f84934; } .cm-s-gruvbox-dark span.cm-variable { color: #ebdbb2; } .cm-s-gruvbox-dark span.cm-variable-2 { color: #ebdbb2; } .cm-s-gruvbox-dark span.cm-variable-3, .cm-s-gruvbox-dark span.cm-type { color: #fabd2f; } .cm-s-gruvbox-dark span.cm-operator { color: #ebdbb2; } .cm-s-gruvbox-dark span.cm-callee { color: #ebdbb2; } .cm-s-gruvbox-dark span.cm-def { color: #ebdbb2; } .cm-s-gruvbox-dark span.cm-property { color: #ebdbb2; } .cm-s-gruvbox-dark span.cm-string { color: #b8bb26; } .cm-s-gruvbox-dark span.cm-string-2 { color: #8ec07c; } .cm-s-gruvbox-dark span.cm-qualifier { color: #8ec07c; } .cm-s-gruvbox-dark span.cm-attribute { color: #8ec07c; } .cm-s-gruvbox-dark .CodeMirror-activeline-background { background: #3c3836; } .cm-s-gruvbox-dark .CodeMirror-matchingbracket { background: #928374; color:#282828 !important; } .cm-s-gruvbox-dark span.cm-builtin { color: #fe8019; } .cm-s-gruvbox-dark span.cm-tag { color: #fe8019; } plugins/file-manager-advanced/application/library/codemirror/theme/hopscotch.css000064400000002675147176754550024300 0ustar00/* Name: Hopscotch Author: Jan T. Sott CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror) Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ .cm-s-hopscotch.CodeMirror {background: #322931; color: #d5d3d5;} .cm-s-hopscotch div.CodeMirror-selected {background: #433b42 !important;} .cm-s-hopscotch .CodeMirror-gutters {background: #322931; border-right: 0px;} .cm-s-hopscotch .CodeMirror-linenumber {color: #797379;} .cm-s-hopscotch .CodeMirror-cursor {border-left: 1px solid #989498 !important;} .cm-s-hopscotch span.cm-comment {color: #b33508;} .cm-s-hopscotch span.cm-atom {color: #c85e7c;} .cm-s-hopscotch span.cm-number {color: #c85e7c;} .cm-s-hopscotch span.cm-property, .cm-s-hopscotch span.cm-attribute {color: #8fc13e;} .cm-s-hopscotch span.cm-keyword {color: #dd464c;} .cm-s-hopscotch span.cm-string {color: #fdcc59;} .cm-s-hopscotch span.cm-variable {color: #8fc13e;} .cm-s-hopscotch span.cm-variable-2 {color: #1290bf;} .cm-s-hopscotch span.cm-def {color: #fd8b19;} .cm-s-hopscotch span.cm-error {background: #dd464c; color: #989498;} .cm-s-hopscotch span.cm-bracket {color: #d5d3d5;} .cm-s-hopscotch span.cm-tag {color: #dd464c;} .cm-s-hopscotch span.cm-link {color: #c85e7c;} .cm-s-hopscotch .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;} .cm-s-hopscotch .CodeMirror-activeline-background { background: #302020; } plugins/file-manager-advanced/application/library/codemirror/theme/icecoder.css000064400000004723147176754550024057 0ustar00/* ICEcoder default theme by Matt Pass, used in code editor available at https://icecoder.net */ .cm-s-icecoder { color: #666; background: #1d1d1b; } .cm-s-icecoder span.cm-keyword { color: #eee; font-weight:bold; } /* off-white 1 */ .cm-s-icecoder span.cm-atom { color: #e1c76e; } /* yellow */ .cm-s-icecoder span.cm-number { color: #6cb5d9; } /* blue */ .cm-s-icecoder span.cm-def { color: #b9ca4a; } /* green */ .cm-s-icecoder span.cm-variable { color: #6cb5d9; } /* blue */ .cm-s-icecoder span.cm-variable-2 { color: #cc1e5c; } /* pink */ .cm-s-icecoder span.cm-variable-3, .cm-s-icecoder span.cm-type { color: #f9602c; } /* orange */ .cm-s-icecoder span.cm-property { color: #eee; } /* off-white 1 */ .cm-s-icecoder span.cm-operator { color: #9179bb; } /* purple */ .cm-s-icecoder span.cm-comment { color: #97a3aa; } /* grey-blue */ .cm-s-icecoder span.cm-string { color: #b9ca4a; } /* green */ .cm-s-icecoder span.cm-string-2 { color: #6cb5d9; } /* blue */ .cm-s-icecoder span.cm-meta { color: #555; } /* grey */ .cm-s-icecoder span.cm-qualifier { color: #555; } /* grey */ .cm-s-icecoder span.cm-builtin { color: #214e7b; } /* bright blue */ .cm-s-icecoder span.cm-bracket { color: #cc7; } /* grey-yellow */ .cm-s-icecoder span.cm-tag { color: #e8e8e8; } /* off-white 2 */ .cm-s-icecoder span.cm-attribute { color: #099; } /* teal */ .cm-s-icecoder span.cm-header { color: #6a0d6a; } /* purple-pink */ .cm-s-icecoder span.cm-quote { color: #186718; } /* dark green */ .cm-s-icecoder span.cm-hr { color: #888; } /* mid-grey */ .cm-s-icecoder span.cm-link { color: #e1c76e; } /* yellow */ .cm-s-icecoder span.cm-error { color: #d00; } /* red */ .cm-s-icecoder .CodeMirror-cursor { border-left: 1px solid white; } .cm-s-icecoder div.CodeMirror-selected { color: #fff; background: #037; } .cm-s-icecoder .CodeMirror-gutters { background: #1d1d1b; min-width: 41px; border-right: 0; } .cm-s-icecoder .CodeMirror-linenumber { color: #555; cursor: default; } .cm-s-icecoder .CodeMirror-matchingbracket { color: #fff !important; background: #555 !important; } .cm-s-icecoder .CodeMirror-activeline-background { background: #000; } plugins/file-manager-advanced/application/library/codemirror/theme/idea.css000064400000003210147176754550023172 0ustar00/** Name: IDEA default theme From IntelliJ IDEA by JetBrains */ .cm-s-idea span.cm-meta { color: #808000; } .cm-s-idea span.cm-number { color: #0000FF; } .cm-s-idea span.cm-keyword { line-height: 1em; font-weight: bold; color: #000080; } .cm-s-idea span.cm-atom { font-weight: bold; color: #000080; } .cm-s-idea span.cm-def { color: #000000; } .cm-s-idea span.cm-variable { color: black; } .cm-s-idea span.cm-variable-2 { color: black; } .cm-s-idea span.cm-variable-3, .cm-s-idea span.cm-type { color: black; } .cm-s-idea span.cm-property { color: black; } .cm-s-idea span.cm-operator { color: black; } .cm-s-idea span.cm-comment { color: #808080; } .cm-s-idea span.cm-string { color: #008000; } .cm-s-idea span.cm-string-2 { color: #008000; } .cm-s-idea span.cm-qualifier { color: #555; } .cm-s-idea span.cm-error { color: #FF0000; } .cm-s-idea span.cm-attribute { color: #0000FF; } .cm-s-idea span.cm-tag { color: #000080; } .cm-s-idea span.cm-link { color: #0000FF; } .cm-s-idea .CodeMirror-activeline-background { background: #FFFAE3; } .cm-s-idea span.cm-builtin { color: #30a; } .cm-s-idea span.cm-bracket { color: #cc7; } .cm-s-idea { font-family: Consolas, Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace, serif;} .cm-s-idea .CodeMirror-matchingbracket { outline:1px solid grey; color:black !important; } .CodeMirror-hints.idea { font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; color: #616569; background-color: #ebf3fd !important; } .CodeMirror-hints.idea .CodeMirror-hint-active { background-color: #a2b8c9 !important; color: #5c6065 !important; }plugins/file-manager-advanced/application/library/codemirror/theme/isotope.css000064400000002642147176754550023762 0ustar00/* Name: Isotope Author: David Desandro / Jan T. Sott CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror) Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ .cm-s-isotope.CodeMirror {background: #000000; color: #e0e0e0;} .cm-s-isotope div.CodeMirror-selected {background: #404040 !important;} .cm-s-isotope .CodeMirror-gutters {background: #000000; border-right: 0px;} .cm-s-isotope .CodeMirror-linenumber {color: #808080;} .cm-s-isotope .CodeMirror-cursor {border-left: 1px solid #c0c0c0 !important;} .cm-s-isotope span.cm-comment {color: #3300ff;} .cm-s-isotope span.cm-atom {color: #cc00ff;} .cm-s-isotope span.cm-number {color: #cc00ff;} .cm-s-isotope span.cm-property, .cm-s-isotope span.cm-attribute {color: #33ff00;} .cm-s-isotope span.cm-keyword {color: #ff0000;} .cm-s-isotope span.cm-string {color: #ff0099;} .cm-s-isotope span.cm-variable {color: #33ff00;} .cm-s-isotope span.cm-variable-2 {color: #0066ff;} .cm-s-isotope span.cm-def {color: #ff9900;} .cm-s-isotope span.cm-error {background: #ff0000; color: #c0c0c0;} .cm-s-isotope span.cm-bracket {color: #e0e0e0;} .cm-s-isotope span.cm-tag {color: #ff0000;} .cm-s-isotope span.cm-link {color: #cc00ff;} .cm-s-isotope .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;} .cm-s-isotope .CodeMirror-activeline-background { background: #202020; } plugins/file-manager-advanced/application/library/codemirror/theme/juejin.css000064400000001005147176754550023554 0ustar00.cm-s-juejin.CodeMirror { background: #f8f9fa; } .cm-s-juejin .cm-header, .cm-s-juejin .cm-def { color: #1ba2f0; } .cm-s-juejin .cm-comment { color: #009e9d; } .cm-s-juejin .cm-quote, .cm-s-juejin .cm-link, .cm-s-juejin .cm-strong, .cm-s-juejin .cm-attribute { color: #fd7741; } .cm-s-juejin .cm-url, .cm-s-juejin .cm-keyword, .cm-s-juejin .cm-builtin { color: #bb51b8; } .cm-s-juejin .cm-hr { color: #909090; } .cm-s-juejin .cm-tag { color: #107000; } .cm-s-juejin .cm-variable-2 { color: #0050a0; } plugins/file-manager-advanced/application/library/codemirror/theme/lesser-dark.css000064400000005115147176754550024512 0ustar00/* http://lesscss.org/ dark theme Ported to CodeMirror by Peter Kroon */ .cm-s-lesser-dark { line-height: 1.3em; } .cm-s-lesser-dark.CodeMirror { background: #262626; color: #EBEFE7; text-shadow: 0 -1px 1px #262626; } .cm-s-lesser-dark div.CodeMirror-selected { background: #45443B; } /* 33322B*/ .cm-s-lesser-dark .CodeMirror-line::selection, .cm-s-lesser-dark .CodeMirror-line > span::selection, .cm-s-lesser-dark .CodeMirror-line > span > span::selection { background: rgba(69, 68, 59, .99); } .cm-s-lesser-dark .CodeMirror-line::-moz-selection, .cm-s-lesser-dark .CodeMirror-line > span::-moz-selection, .cm-s-lesser-dark .CodeMirror-line > span > span::-moz-selection { background: rgba(69, 68, 59, .99); } .cm-s-lesser-dark .CodeMirror-cursor { border-left: 1px solid white; } .cm-s-lesser-dark pre { padding: 0 8px; }/*editable code holder*/ .cm-s-lesser-dark.CodeMirror span.CodeMirror-matchingbracket { color: #7EFC7E; }/*65FC65*/ .cm-s-lesser-dark .CodeMirror-gutters { background: #262626; border-right:1px solid #aaa; } .cm-s-lesser-dark .CodeMirror-guttermarker { color: #599eff; } .cm-s-lesser-dark .CodeMirror-guttermarker-subtle { color: #777; } .cm-s-lesser-dark .CodeMirror-linenumber { color: #777; } .cm-s-lesser-dark span.cm-header { color: #a0a; } .cm-s-lesser-dark span.cm-quote { color: #090; } .cm-s-lesser-dark span.cm-keyword { color: #599eff; } .cm-s-lesser-dark span.cm-atom { color: #C2B470; } .cm-s-lesser-dark span.cm-number { color: #B35E4D; } .cm-s-lesser-dark span.cm-def { color: white; } .cm-s-lesser-dark span.cm-variable { color:#D9BF8C; } .cm-s-lesser-dark span.cm-variable-2 { color: #669199; } .cm-s-lesser-dark span.cm-variable-3, .cm-s-lesser-dark span.cm-type { color: white; } .cm-s-lesser-dark span.cm-property { color: #92A75C; } .cm-s-lesser-dark span.cm-operator { color: #92A75C; } .cm-s-lesser-dark span.cm-comment { color: #666; } .cm-s-lesser-dark span.cm-string { color: #BCD279; } .cm-s-lesser-dark span.cm-string-2 { color: #f50; } .cm-s-lesser-dark span.cm-meta { color: #738C73; } .cm-s-lesser-dark span.cm-qualifier { color: #555; } .cm-s-lesser-dark span.cm-builtin { color: #ff9e59; } .cm-s-lesser-dark span.cm-bracket { color: #EBEFE7; } .cm-s-lesser-dark span.cm-tag { color: #669199; } .cm-s-lesser-dark span.cm-attribute { color: #81a4d5; } .cm-s-lesser-dark span.cm-hr { color: #999; } .cm-s-lesser-dark span.cm-link { color: #7070E6; } .cm-s-lesser-dark span.cm-error { color: #9d1e15; } .cm-s-lesser-dark .CodeMirror-activeline-background { background: #3C3A3A; } .cm-s-lesser-dark .CodeMirror-matchingbracket { outline:1px solid grey; color:white !important; } plugins/file-manager-advanced/application/library/codemirror/theme/liquibyte.css000064400000007627147176754550024317 0ustar00.cm-s-liquibyte.CodeMirror { background-color: #000; color: #fff; line-height: 1.2em; font-size: 1em; } .cm-s-liquibyte .CodeMirror-focused .cm-matchhighlight { text-decoration: underline; text-decoration-color: #0f0; text-decoration-style: wavy; } .cm-s-liquibyte .cm-trailingspace { text-decoration: line-through; text-decoration-color: #f00; text-decoration-style: dotted; } .cm-s-liquibyte .cm-tab { text-decoration: line-through; text-decoration-color: #404040; text-decoration-style: dotted; } .cm-s-liquibyte .CodeMirror-gutters { background-color: #262626; border-right: 1px solid #505050; padding-right: 0.8em; } .cm-s-liquibyte .CodeMirror-gutter-elt div { font-size: 1.2em; } .cm-s-liquibyte .CodeMirror-guttermarker { } .cm-s-liquibyte .CodeMirror-guttermarker-subtle { } .cm-s-liquibyte .CodeMirror-linenumber { color: #606060; padding-left: 0; } .cm-s-liquibyte .CodeMirror-cursor { border-left: 1px solid #eee; } .cm-s-liquibyte span.cm-comment { color: #008000; } .cm-s-liquibyte span.cm-def { color: #ffaf40; font-weight: bold; } .cm-s-liquibyte span.cm-keyword { color: #c080ff; font-weight: bold; } .cm-s-liquibyte span.cm-builtin { color: #ffaf40; font-weight: bold; } .cm-s-liquibyte span.cm-variable { color: #5967ff; font-weight: bold; } .cm-s-liquibyte span.cm-string { color: #ff8000; } .cm-s-liquibyte span.cm-number { color: #0f0; font-weight: bold; } .cm-s-liquibyte span.cm-atom { color: #bf3030; font-weight: bold; } .cm-s-liquibyte span.cm-variable-2 { color: #007f7f; font-weight: bold; } .cm-s-liquibyte span.cm-variable-3, .cm-s-liquibyte span.cm-type { color: #c080ff; font-weight: bold; } .cm-s-liquibyte span.cm-property { color: #999; font-weight: bold; } .cm-s-liquibyte span.cm-operator { color: #fff; } .cm-s-liquibyte span.cm-meta { color: #0f0; } .cm-s-liquibyte span.cm-qualifier { color: #fff700; font-weight: bold; } .cm-s-liquibyte span.cm-bracket { color: #cc7; } .cm-s-liquibyte span.cm-tag { color: #ff0; font-weight: bold; } .cm-s-liquibyte span.cm-attribute { color: #c080ff; font-weight: bold; } .cm-s-liquibyte span.cm-error { color: #f00; } .cm-s-liquibyte div.CodeMirror-selected { background-color: rgba(255, 0, 0, 0.25); } .cm-s-liquibyte span.cm-compilation { background-color: rgba(255, 255, 255, 0.12); } .cm-s-liquibyte .CodeMirror-activeline-background { background-color: rgba(0, 255, 0, 0.15); } /* Default styles for common addons */ .cm-s-liquibyte .CodeMirror span.CodeMirror-matchingbracket { color: #0f0; font-weight: bold; } .cm-s-liquibyte .CodeMirror span.CodeMirror-nonmatchingbracket { color: #f00; font-weight: bold; } .CodeMirror-matchingtag { background-color: rgba(150, 255, 0, .3); } /* Scrollbars */ /* Simple */ .cm-s-liquibyte div.CodeMirror-simplescroll-horizontal div:hover, .cm-s-liquibyte div.CodeMirror-simplescroll-vertical div:hover { background-color: rgba(80, 80, 80, .7); } .cm-s-liquibyte div.CodeMirror-simplescroll-horizontal div, .cm-s-liquibyte div.CodeMirror-simplescroll-vertical div { background-color: rgba(80, 80, 80, .3); border: 1px solid #404040; border-radius: 5px; } .cm-s-liquibyte div.CodeMirror-simplescroll-vertical div { border-top: 1px solid #404040; border-bottom: 1px solid #404040; } .cm-s-liquibyte div.CodeMirror-simplescroll-horizontal div { border-left: 1px solid #404040; border-right: 1px solid #404040; } .cm-s-liquibyte div.CodeMirror-simplescroll-vertical { background-color: #262626; } .cm-s-liquibyte div.CodeMirror-simplescroll-horizontal { background-color: #262626; border-top: 1px solid #404040; } /* Overlay */ .cm-s-liquibyte div.CodeMirror-overlayscroll-horizontal div, div.CodeMirror-overlayscroll-vertical div { background-color: #404040; border-radius: 5px; } .cm-s-liquibyte div.CodeMirror-overlayscroll-vertical div { border: 1px solid #404040; } .cm-s-liquibyte div.CodeMirror-overlayscroll-horizontal div { border: 1px solid #404040; } plugins/file-manager-advanced/application/library/codemirror/theme/lucario.css000064400000003572147176754550023741 0ustar00/* Name: lucario Author: Raphael Amorim Original Lucario color scheme (https://github.com/raphamorim/lucario) */ .cm-s-lucario.CodeMirror, .cm-s-lucario .CodeMirror-gutters { background-color: #2b3e50 !important; color: #f8f8f2 !important; border: none; } .cm-s-lucario .CodeMirror-gutters { color: #2b3e50; } .cm-s-lucario .CodeMirror-cursor { border-left: solid thin #E6C845; } .cm-s-lucario .CodeMirror-linenumber { color: #f8f8f2; } .cm-s-lucario .CodeMirror-selected { background: #243443; } .cm-s-lucario .CodeMirror-line::selection, .cm-s-lucario .CodeMirror-line > span::selection, .cm-s-lucario .CodeMirror-line > span > span::selection { background: #243443; } .cm-s-lucario .CodeMirror-line::-moz-selection, .cm-s-lucario .CodeMirror-line > span::-moz-selection, .cm-s-lucario .CodeMirror-line > span > span::-moz-selection { background: #243443; } .cm-s-lucario span.cm-comment { color: #5c98cd; } .cm-s-lucario span.cm-string, .cm-s-lucario span.cm-string-2 { color: #E6DB74; } .cm-s-lucario span.cm-number { color: #ca94ff; } .cm-s-lucario span.cm-variable { color: #f8f8f2; } .cm-s-lucario span.cm-variable-2 { color: #f8f8f2; } .cm-s-lucario span.cm-def { color: #72C05D; } .cm-s-lucario span.cm-operator { color: #66D9EF; } .cm-s-lucario span.cm-keyword { color: #ff6541; } .cm-s-lucario span.cm-atom { color: #bd93f9; } .cm-s-lucario span.cm-meta { color: #f8f8f2; } .cm-s-lucario span.cm-tag { color: #ff6541; } .cm-s-lucario span.cm-attribute { color: #66D9EF; } .cm-s-lucario span.cm-qualifier { color: #72C05D; } .cm-s-lucario span.cm-property { color: #f8f8f2; } .cm-s-lucario span.cm-builtin { color: #72C05D; } .cm-s-lucario span.cm-variable-3, .cm-s-lucario span.cm-type { color: #ffb86c; } .cm-s-lucario .CodeMirror-activeline-background { background: #243443; } .cm-s-lucario .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; } plugins/file-manager-advanced/application/library/codemirror/theme/material.css000064400000004745147176754550024104 0ustar00/* Name: material Author: Mattia Astorino (http://github.com/equinusocio) Website: https://material-theme.site/ */ .cm-s-material.CodeMirror { background-color: #263238; color: #EEFFFF; } .cm-s-material .CodeMirror-gutters { background: #263238; color: #546E7A; border: none; } .cm-s-material .CodeMirror-guttermarker, .cm-s-material .CodeMirror-guttermarker-subtle, .cm-s-material .CodeMirror-linenumber { color: #546E7A; } .cm-s-material .CodeMirror-cursor { border-left: 1px solid #FFCC00; } .cm-s-material.cm-fat-cursor .CodeMirror-cursor { background-color: #5d6d5c80 !important; } .cm-s-material .cm-animate-fat-cursor { background-color: #5d6d5c80 !important; } .cm-s-material div.CodeMirror-selected { background: rgba(128, 203, 196, 0.2); } .cm-s-material.CodeMirror-focused div.CodeMirror-selected { background: rgba(128, 203, 196, 0.2); } .cm-s-material .CodeMirror-line::selection, .cm-s-material .CodeMirror-line>span::selection, .cm-s-material .CodeMirror-line>span>span::selection { background: rgba(128, 203, 196, 0.2); } .cm-s-material .CodeMirror-line::-moz-selection, .cm-s-material .CodeMirror-line>span::-moz-selection, .cm-s-material .CodeMirror-line>span>span::-moz-selection { background: rgba(128, 203, 196, 0.2); } .cm-s-material .CodeMirror-activeline-background { background: rgba(0, 0, 0, 0.5); } .cm-s-material .cm-keyword { color: #C792EA; } .cm-s-material .cm-operator { color: #89DDFF; } .cm-s-material .cm-variable-2 { color: #EEFFFF; } .cm-s-material .cm-variable-3, .cm-s-material .cm-type { color: #f07178; } .cm-s-material .cm-builtin { color: #FFCB6B; } .cm-s-material .cm-atom { color: #F78C6C; } .cm-s-material .cm-number { color: #FF5370; } .cm-s-material .cm-def { color: #82AAFF; } .cm-s-material .cm-string { color: #C3E88D; } .cm-s-material .cm-string-2 { color: #f07178; } .cm-s-material .cm-comment { color: #546E7A; } .cm-s-material .cm-variable { color: #f07178; } .cm-s-material .cm-tag { color: #FF5370; } .cm-s-material .cm-meta { color: #FFCB6B; } .cm-s-material .cm-attribute { color: #C792EA; } .cm-s-material .cm-property { color: #C792EA; } .cm-s-material .cm-qualifier { color: #DECB6B; } .cm-s-material .cm-variable-3, .cm-s-material .cm-type { color: #DECB6B; } .cm-s-material .cm-error { color: rgba(255, 255, 255, 1.0); background-color: #FF5370; } .cm-s-material .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; } plugins/file-manager-advanced/application/library/codemirror/theme/material-darker.css000064400000005057147176754550025347 0ustar00/* Name: material Author: Mattia Astorino (http://github.com/equinusocio) Website: https://material-theme.site/ */ .cm-s-material-darker.CodeMirror { background-color: #212121; color: #EEFFFF; } .cm-s-material-darker .CodeMirror-gutters { background: #212121; color: #545454; border: none; } .cm-s-material-darker .CodeMirror-guttermarker, .cm-s-material-darker .CodeMirror-guttermarker-subtle, .cm-s-material-darker .CodeMirror-linenumber { color: #545454; } .cm-s-material-darker .CodeMirror-cursor { border-left: 1px solid #FFCC00; } .cm-s-material-darker div.CodeMirror-selected { background: rgba(97, 97, 97, 0.2); } .cm-s-material-darker.CodeMirror-focused div.CodeMirror-selected { background: rgba(97, 97, 97, 0.2); } .cm-s-material-darker .CodeMirror-line::selection, .cm-s-material-darker .CodeMirror-line>span::selection, .cm-s-material-darker .CodeMirror-line>span>span::selection { background: rgba(128, 203, 196, 0.2); } .cm-s-material-darker .CodeMirror-line::-moz-selection, .cm-s-material-darker .CodeMirror-line>span::-moz-selection, .cm-s-material-darker .CodeMirror-line>span>span::-moz-selection { background: rgba(128, 203, 196, 0.2); } .cm-s-material-darker .CodeMirror-activeline-background { background: rgba(0, 0, 0, 0.5); } .cm-s-material-darker .cm-keyword { color: #C792EA; } .cm-s-material-darker .cm-operator { color: #89DDFF; } .cm-s-material-darker .cm-variable-2 { color: #EEFFFF; } .cm-s-material-darker .cm-variable-3, .cm-s-material-darker .cm-type { color: #f07178; } .cm-s-material-darker .cm-builtin { color: #FFCB6B; } .cm-s-material-darker .cm-atom { color: #F78C6C; } .cm-s-material-darker .cm-number { color: #FF5370; } .cm-s-material-darker .cm-def { color: #82AAFF; } .cm-s-material-darker .cm-string { color: #C3E88D; } .cm-s-material-darker .cm-string-2 { color: #f07178; } .cm-s-material-darker .cm-comment { color: #545454; } .cm-s-material-darker .cm-variable { color: #f07178; } .cm-s-material-darker .cm-tag { color: #FF5370; } .cm-s-material-darker .cm-meta { color: #FFCB6B; } .cm-s-material-darker .cm-attribute { color: #C792EA; } .cm-s-material-darker .cm-property { color: #C792EA; } .cm-s-material-darker .cm-qualifier { color: #DECB6B; } .cm-s-material-darker .cm-variable-3, .cm-s-material-darker .cm-type { color: #DECB6B; } .cm-s-material-darker .cm-error { color: rgba(255, 255, 255, 1.0); background-color: #FF5370; } .cm-s-material-darker .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }plugins/file-manager-advanced/application/library/codemirror/theme/material-ocean.css000064400000005317147176754550025163 0ustar00/* Name: material Author: Mattia Astorino (http://github.com/equinusocio) Website: https://material-theme.site/ */ .cm-s-material-ocean.CodeMirror { background-color: #0F111A; color: #8F93A2; } .cm-s-material-ocean .CodeMirror-gutters { background: #0F111A; color: #464B5D; border: none; } .cm-s-material-ocean .CodeMirror-guttermarker, .cm-s-material-ocean .CodeMirror-guttermarker-subtle, .cm-s-material-ocean .CodeMirror-linenumber { color: #464B5D; } .cm-s-material-ocean .CodeMirror-cursor { border-left: 1px solid #FFCC00; } .cm-s-material-ocean.cm-fat-cursor .CodeMirror-cursor { background-color: #a2a8a175 !important; } .cm-s-material-ocean .cm-animate-fat-cursor { background-color: #a2a8a175 !important; } .cm-s-material-ocean div.CodeMirror-selected { background: rgba(113, 124, 180, 0.2); } .cm-s-material-ocean.CodeMirror-focused div.CodeMirror-selected { background: rgba(113, 124, 180, 0.2); } .cm-s-material-ocean .CodeMirror-line::selection, .cm-s-material-ocean .CodeMirror-line>span::selection, .cm-s-material-ocean .CodeMirror-line>span>span::selection { background: rgba(128, 203, 196, 0.2); } .cm-s-material-ocean .CodeMirror-line::-moz-selection, .cm-s-material-ocean .CodeMirror-line>span::-moz-selection, .cm-s-material-ocean .CodeMirror-line>span>span::-moz-selection { background: rgba(128, 203, 196, 0.2); } .cm-s-material-ocean .CodeMirror-activeline-background { background: rgba(0, 0, 0, 0.5); } .cm-s-material-ocean .cm-keyword { color: #C792EA; } .cm-s-material-ocean .cm-operator { color: #89DDFF; } .cm-s-material-ocean .cm-variable-2 { color: #EEFFFF; } .cm-s-material-ocean .cm-variable-3, .cm-s-material-ocean .cm-type { color: #f07178; } .cm-s-material-ocean .cm-builtin { color: #FFCB6B; } .cm-s-material-ocean .cm-atom { color: #F78C6C; } .cm-s-material-ocean .cm-number { color: #FF5370; } .cm-s-material-ocean .cm-def { color: #82AAFF; } .cm-s-material-ocean .cm-string { color: #C3E88D; } .cm-s-material-ocean .cm-string-2 { color: #f07178; } .cm-s-material-ocean .cm-comment { color: #464B5D; } .cm-s-material-ocean .cm-variable { color: #f07178; } .cm-s-material-ocean .cm-tag { color: #FF5370; } .cm-s-material-ocean .cm-meta { color: #FFCB6B; } .cm-s-material-ocean .cm-attribute { color: #C792EA; } .cm-s-material-ocean .cm-property { color: #C792EA; } .cm-s-material-ocean .cm-qualifier { color: #DECB6B; } .cm-s-material-ocean .cm-variable-3, .cm-s-material-ocean .cm-type { color: #DECB6B; } .cm-s-material-ocean .cm-error { color: rgba(255, 255, 255, 1.0); background-color: #FF5370; } .cm-s-material-ocean .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; } plugins/file-manager-advanced/application/library/codemirror/theme/material-palenight.css000064400000005553147176754550026053 0ustar00/* Name: material Author: Mattia Astorino (http://github.com/equinusocio) Website: https://material-theme.site/ */ .cm-s-material-palenight.CodeMirror { background-color: #292D3E; color: #A6ACCD; } .cm-s-material-palenight .CodeMirror-gutters { background: #292D3E; color: #676E95; border: none; } .cm-s-material-palenight .CodeMirror-guttermarker, .cm-s-material-palenight .CodeMirror-guttermarker-subtle, .cm-s-material-palenight .CodeMirror-linenumber { color: #676E95; } .cm-s-material-palenight .CodeMirror-cursor { border-left: 1px solid #FFCC00; } .cm-s-material-palenight.cm-fat-cursor .CodeMirror-cursor { background-color: #607c8b80 !important; } .cm-s-material-palenight .cm-animate-fat-cursor { background-color: #607c8b80 !important; } .cm-s-material-palenight div.CodeMirror-selected { background: rgba(113, 124, 180, 0.2); } .cm-s-material-palenight.CodeMirror-focused div.CodeMirror-selected { background: rgba(113, 124, 180, 0.2); } .cm-s-material-palenight .CodeMirror-line::selection, .cm-s-material-palenight .CodeMirror-line>span::selection, .cm-s-material-palenight .CodeMirror-line>span>span::selection { background: rgba(128, 203, 196, 0.2); } .cm-s-material-palenight .CodeMirror-line::-moz-selection, .cm-s-material-palenight .CodeMirror-line>span::-moz-selection, .cm-s-material-palenight .CodeMirror-line>span>span::-moz-selection { background: rgba(128, 203, 196, 0.2); } .cm-s-material-palenight .CodeMirror-activeline-background { background: rgba(0, 0, 0, 0.5); } .cm-s-material-palenight .cm-keyword { color: #C792EA; } .cm-s-material-palenight .cm-operator { color: #89DDFF; } .cm-s-material-palenight .cm-variable-2 { color: #EEFFFF; } .cm-s-material-palenight .cm-variable-3, .cm-s-material-palenight .cm-type { color: #f07178; } .cm-s-material-palenight .cm-builtin { color: #FFCB6B; } .cm-s-material-palenight .cm-atom { color: #F78C6C; } .cm-s-material-palenight .cm-number { color: #FF5370; } .cm-s-material-palenight .cm-def { color: #82AAFF; } .cm-s-material-palenight .cm-string { color: #C3E88D; } .cm-s-material-palenight .cm-string-2 { color: #f07178; } .cm-s-material-palenight .cm-comment { color: #676E95; } .cm-s-material-palenight .cm-variable { color: #f07178; } .cm-s-material-palenight .cm-tag { color: #FF5370; } .cm-s-material-palenight .cm-meta { color: #FFCB6B; } .cm-s-material-palenight .cm-attribute { color: #C792EA; } .cm-s-material-palenight .cm-property { color: #C792EA; } .cm-s-material-palenight .cm-qualifier { color: #DECB6B; } .cm-s-material-palenight .cm-variable-3, .cm-s-material-palenight .cm-type { color: #DECB6B; } .cm-s-material-palenight .cm-error { color: rgba(255, 255, 255, 1.0); background-color: #FF5370; } .cm-s-material-palenight .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; } plugins/file-manager-advanced/application/library/codemirror/theme/mbo.css000064400000004100147176754550023044 0ustar00/****************************************************************/ /* Based on mbonaci's Brackets mbo theme */ /* https://github.com/mbonaci/global/blob/master/Mbo.tmTheme */ /* Create your own: http://tmtheme-editor.herokuapp.com */ /****************************************************************/ .cm-s-mbo.CodeMirror { background: #2c2c2c; color: #ffffec; } .cm-s-mbo div.CodeMirror-selected { background: #716C62; } .cm-s-mbo .CodeMirror-line::selection, .cm-s-mbo .CodeMirror-line > span::selection, .cm-s-mbo .CodeMirror-line > span > span::selection { background: rgba(113, 108, 98, .99); } .cm-s-mbo .CodeMirror-line::-moz-selection, .cm-s-mbo .CodeMirror-line > span::-moz-selection, .cm-s-mbo .CodeMirror-line > span > span::-moz-selection { background: rgba(113, 108, 98, .99); } .cm-s-mbo .CodeMirror-gutters { background: #4e4e4e; border-right: 0px; } .cm-s-mbo .CodeMirror-guttermarker { color: white; } .cm-s-mbo .CodeMirror-guttermarker-subtle { color: grey; } .cm-s-mbo .CodeMirror-linenumber { color: #dadada; } .cm-s-mbo .CodeMirror-cursor { border-left: 1px solid #ffffec; } .cm-s-mbo span.cm-comment { color: #95958a; } .cm-s-mbo span.cm-atom { color: #00a8c6; } .cm-s-mbo span.cm-number { color: #00a8c6; } .cm-s-mbo span.cm-property, .cm-s-mbo span.cm-attribute { color: #9ddfe9; } .cm-s-mbo span.cm-keyword { color: #ffb928; } .cm-s-mbo span.cm-string { color: #ffcf6c; } .cm-s-mbo span.cm-string.cm-property { color: #ffffec; } .cm-s-mbo span.cm-variable { color: #ffffec; } .cm-s-mbo span.cm-variable-2 { color: #00a8c6; } .cm-s-mbo span.cm-def { color: #ffffec; } .cm-s-mbo span.cm-bracket { color: #fffffc; font-weight: bold; } .cm-s-mbo span.cm-tag { color: #9ddfe9; } .cm-s-mbo span.cm-link { color: #f54b07; } .cm-s-mbo span.cm-error { border-bottom: #636363; color: #ffffec; } .cm-s-mbo span.cm-qualifier { color: #ffffec; } .cm-s-mbo .CodeMirror-activeline-background { background: #494b41; } .cm-s-mbo .CodeMirror-matchingbracket { color: #ffb928 !important; } .cm-s-mbo .CodeMirror-matchingtag { background: rgba(255, 255, 255, .37); } plugins/file-manager-advanced/application/library/codemirror/theme/mdn-like.css000064400000012114147176754550023773 0ustar00/* MDN-LIKE Theme - Mozilla Ported to CodeMirror by Peter Kroon Report bugs/issues here: https://github.com/codemirror/CodeMirror/issues GitHub: @peterkroon The mdn-like theme is inspired on the displayed code examples at: https://developer.mozilla.org/en-US/docs/Web/CSS/animation */ .cm-s-mdn-like.CodeMirror { color: #999; background-color: #fff; } .cm-s-mdn-like div.CodeMirror-selected { background: #cfc; } .cm-s-mdn-like .CodeMirror-line::selection, .cm-s-mdn-like .CodeMirror-line > span::selection, .cm-s-mdn-like .CodeMirror-line > span > span::selection { background: #cfc; } .cm-s-mdn-like .CodeMirror-line::-moz-selection, .cm-s-mdn-like .CodeMirror-line > span::-moz-selection, .cm-s-mdn-like .CodeMirror-line > span > span::-moz-selection { background: #cfc; } .cm-s-mdn-like .CodeMirror-gutters { background: #f8f8f8; border-left: 6px solid rgba(0,83,159,0.65); color: #333; } .cm-s-mdn-like .CodeMirror-linenumber { color: #aaa; padding-left: 8px; } .cm-s-mdn-like .CodeMirror-cursor { border-left: 2px solid #222; } .cm-s-mdn-like .cm-keyword { color: #6262FF; } .cm-s-mdn-like .cm-atom { color: #F90; } .cm-s-mdn-like .cm-number { color: #ca7841; } .cm-s-mdn-like .cm-def { color: #8DA6CE; } .cm-s-mdn-like span.cm-variable-2, .cm-s-mdn-like span.cm-tag { color: #690; } .cm-s-mdn-like span.cm-variable-3, .cm-s-mdn-like span.cm-def, .cm-s-mdn-like span.cm-type { color: #07a; } .cm-s-mdn-like .cm-variable { color: #07a; } .cm-s-mdn-like .cm-property { color: #905; } .cm-s-mdn-like .cm-qualifier { color: #690; } .cm-s-mdn-like .cm-operator { color: #cda869; } .cm-s-mdn-like .cm-comment { color:#777; font-weight:normal; } .cm-s-mdn-like .cm-string { color:#07a; font-style:italic; } .cm-s-mdn-like .cm-string-2 { color:#bd6b18; } /*?*/ .cm-s-mdn-like .cm-meta { color: #000; } /*?*/ .cm-s-mdn-like .cm-builtin { color: #9B7536; } /*?*/ .cm-s-mdn-like .cm-tag { color: #997643; } .cm-s-mdn-like .cm-attribute { color: #d6bb6d; } /*?*/ .cm-s-mdn-like .cm-header { color: #FF6400; } .cm-s-mdn-like .cm-hr { color: #AEAEAE; } .cm-s-mdn-like .cm-link { color:#ad9361; font-style:italic; text-decoration:none; } .cm-s-mdn-like .cm-error { border-bottom: 1px solid red; } div.cm-s-mdn-like .CodeMirror-activeline-background { background: #efefff; } div.cm-s-mdn-like span.CodeMirror-matchingbracket { outline:1px solid grey; color: inherit; } .cm-s-mdn-like.CodeMirror { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAAAyCAYAAAAp8UeFAAAHvklEQVR42s2b63bcNgyEQZCSHCdt2vd/0tWF7I+Q6XgMXiTtuvU5Pl57ZQKkKHzEAOtF5KeIJBGJ8uvL599FRFREZhFx8DeXv8trn68RuGaC8TRfo3SNp9dlDDHedyLyTUTeRWStXKPZrjtpZxaRw5hPqozRs1N8/enzIiQRWcCgy4MUA0f+XWliDhyL8Lfyvx7ei/Ae3iQFHyw7U/59pQVIMEEPEz0G7XiwdRjzSfC3UTtz9vchIntxvry5iMgfIhJoEflOz2CQr3F5h/HfeFe+GTdLaKcu9L8LTeQb/R/7GgbsfKedyNdoHsN31uRPWrfZ5wsj/NzzRQHuToIdU3ahwnsKPxXCjJITuOsi7XLc7SG/v5GdALs7wf8JjTFiB5+QvTEfRyGOfX3Lrx8wxyQi3sNq46O7QahQiCsRFgqddjBouVEHOKDgXAQHD9gJCr5sMKkEdjwsarG/ww3BMHBU7OBjXnzdyY7SfCxf5/z6ATccrwlKuwC/jhznnPF4CgVzhhVf4xp2EixcBActO75iZ8/fM9zAs2OMzKdslgXWJ9XG8PQoOAMA5fGcsvORgv0doBXyHrCwfLJAOwo71QLNkb8n2Pl6EWiR7OCibtkPaz4Kc/0NNAze2gju3zOwekALDaCFPI5vjPFmgGY5AZqyGEvH1x7QfIb8YtxMnA/b+QQ0aQDAwc6JMFg8CbQZ4qoYEEHbRwNojuK3EHwd7VALSgq+MNDKzfT58T8qdpADrgW0GmgcAS1lhzztJmkAzcPNOQbsWEALBDSlMKUG0Eq4CLAQWvEVQ9WU57gZJwZtgPO3r9oBTQ9WO8TjqXINx8R0EYpiZEUWOF3FxkbJkgU9B2f41YBrIj5ZfsQa0M5kTgiAAqM3ShXLgu8XMqcrQBvJ0CL5pnTsfMB13oB8athpAq2XOQmcGmoACCLydx7nToa23ATaSIY2ichfOdPTGxlasXMLaL0MLZAOwAKIM+y8CmicobGdCcbbK9DzN+yYGVoNNI5iUKTMyYOjPse4A8SM1MmcXgU0toOq1yO/v8FOxlASyc7TgeYaAMBJHcY1CcCwGI/TK4AmDbDyKYBBtFUkRwto8gygiQEaByFgJ00BH2M8JWwQS1nafDXQCidWyOI8AcjDCSjCLk8ngObuAm3JAHAdubAmOaK06V8MNEsKPJOhobSprwQa6gD7DclRQdqcwL4zxqgBrQcabUiBLclRDKAlWp+etPkBaNMA0AKlrHwTdEByZAA4GM+SNluSY6wAzcMNewxmgig5Ks0nkrSpBvSaQHMdKTBAnLojOdYyGpQ254602ZILPdTD1hdlggdIm74jbTp8vDwF5ZYUeLWGJpWsh6XNyXgcYwVoJQTEhhTYkxzZjiU5npU2TaB979TQehlaAVq4kaGpiPwwwLkYUuBbQwocyQTv1tA0+1UFWoJF3iv1oq+qoSk8EQdJmwHkziIF7oOZk14EGitibAdjLYYK78H5vZOhtWpoI0ATGHs0Q8OMb4Ey+2bU2UYztCtA0wFAs7TplGLRVQCcqaFdGSPCeTI1QNIC52iWNzof6Uib7xjEp07mNNoUYmVosVItHrHzRlLgBn9LFyRHaQCtVUMbtTNhoXWiTOO9k/V8BdAc1Oq0ArSQs6/5SU0hckNy9NnXqQY0PGYo5dWJ7nINaN6o958FWin27aBaWRka1r5myvLOAm0j30eBJqCxHLReVclxhxOEN2JfDWjxBtAC7MIH1fVaGdoOp4qJYDgKtKPSFNID2gSnGldrCqkFZ+5UeQXQBIRrSwocbdZYQT/2LwRahBPBXoHrB8nxaGROST62DKUbQOMMzZIC9abkuELfQzQALWTnDNAm8KHWFOJgJ5+SHIvTPcmx1xQyZRhNL5Qci689aXMEaN/uNIWkEwDAvFpOZmgsBaaGnbs1NPa1Jm32gBZAIh1pCtG7TSH4aE0y1uVY4uqoFPisGlpP2rSA5qTecWn5agK6BzSpgAyD+wFaqhnYoSZ1Vwr8CmlTQbrcO3ZaX0NAEyMbYaAlyquFoLKK3SPby9CeVUPThrSJmkCAE0CrKUQadi4DrdSlWhmah0YL9z9vClH59YGbHx1J8VZTyAjQepJjmXwAKTDQI3omc3p1U4gDUf6RfcdYfrUp5ClAi2J3Ba6UOXGo+K+bQrjjssitG2SJzshaLwMtXgRagUNpYYoVkMSBLM+9GGiJZMvduG6DRZ4qc04DMPtQQxOjEtACmhO7K1AbNbQDEggZyJwscFpAGwENhoBeUwh3bWolhe8BTYVKxQEWrSUn/uhcM5KhvUu/+eQu0Lzhi+VrK0PrZZNDQKs9cpYUuFYgMVpD4/NxenJTiMCNqdUEUf1qZWjppLT5qSkkUZbCwkbZMSuVnu80hfSkzRbQeqCZSAh6huR4VtoM2gHAlLf72smuWgE+VV7XpE25Ab2WFDgyhnSuKbs4GuGzCjR+tIoUuMFg3kgcWKLTwRqanJQ2W00hAsenfaApRC42hbCvK1SlE0HtE9BGgneJO+ELamitD1YjjOYnNYVcraGhtKkW0EqVVeDx733I2NH581k1NNxNLG0i0IJ8/NjVaOZ0tYZ2Vtr0Xv7tPV3hkWp9EFkgS/J0vosngTaSoaG06WHi+xObQkaAdlbanP8B2+2l0f90LmUAAAAASUVORK5CYII=); } plugins/file-manager-advanced/application/library/codemirror/theme/midnight.css000064400000003500147176754550024075 0ustar00/* Based on the theme at http://bonsaiden.github.com/JavaScript-Garden */ /**/ .cm-s-midnight .CodeMirror-activeline-background { background: #253540; } .cm-s-midnight.CodeMirror { background: #0F192A; color: #D1EDFF; } .cm-s-midnight div.CodeMirror-selected { background: #314D67; } .cm-s-midnight .CodeMirror-line::selection, .cm-s-midnight .CodeMirror-line > span::selection, .cm-s-midnight .CodeMirror-line > span > span::selection { background: rgba(49, 77, 103, .99); } .cm-s-midnight .CodeMirror-line::-moz-selection, .cm-s-midnight .CodeMirror-line > span::-moz-selection, .cm-s-midnight .CodeMirror-line > span > span::-moz-selection { background: rgba(49, 77, 103, .99); } .cm-s-midnight .CodeMirror-gutters { background: #0F192A; border-right: 1px solid; } .cm-s-midnight .CodeMirror-guttermarker { color: white; } .cm-s-midnight .CodeMirror-guttermarker-subtle { color: #d0d0d0; } .cm-s-midnight .CodeMirror-linenumber { color: #D0D0D0; } .cm-s-midnight .CodeMirror-cursor { border-left: 1px solid #F8F8F0; } .cm-s-midnight span.cm-comment { color: #428BDD; } .cm-s-midnight span.cm-atom { color: #AE81FF; } .cm-s-midnight span.cm-number { color: #D1EDFF; } .cm-s-midnight span.cm-property, .cm-s-midnight span.cm-attribute { color: #A6E22E; } .cm-s-midnight span.cm-keyword { color: #E83737; } .cm-s-midnight span.cm-string { color: #1DC116; } .cm-s-midnight span.cm-variable { color: #FFAA3E; } .cm-s-midnight span.cm-variable-2 { color: #FFAA3E; } .cm-s-midnight span.cm-def { color: #4DD; } .cm-s-midnight span.cm-bracket { color: #D1EDFF; } .cm-s-midnight span.cm-tag { color: #449; } .cm-s-midnight span.cm-link { color: #AE81FF; } .cm-s-midnight span.cm-error { background: #F92672; color: #F8F8F0; } .cm-s-midnight .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; } plugins/file-manager-advanced/application/library/codemirror/theme/monokai.css000064400000004203147176754550023730 0ustar00/* Based on Sublime Text's Monokai theme */ .cm-s-monokai.CodeMirror { background: #272822; color: #f8f8f2; } .cm-s-monokai div.CodeMirror-selected { background: #49483E; } .cm-s-monokai .CodeMirror-line::selection, .cm-s-monokai .CodeMirror-line > span::selection, .cm-s-monokai .CodeMirror-line > span > span::selection { background: rgba(73, 72, 62, .99); } .cm-s-monokai .CodeMirror-line::-moz-selection, .cm-s-monokai .CodeMirror-line > span::-moz-selection, .cm-s-monokai .CodeMirror-line > span > span::-moz-selection { background: rgba(73, 72, 62, .99); } .cm-s-monokai .CodeMirror-gutters { background: #272822; border-right: 0px; } .cm-s-monokai .CodeMirror-guttermarker { color: white; } .cm-s-monokai .CodeMirror-guttermarker-subtle { color: #d0d0d0; } .cm-s-monokai .CodeMirror-linenumber { color: #d0d0d0; } .cm-s-monokai .CodeMirror-cursor { border-left: 1px solid #f8f8f0; } .cm-s-monokai span.cm-comment { color: #75715e; } .cm-s-monokai span.cm-atom { color: #ae81ff; } .cm-s-monokai span.cm-number { color: #ae81ff; } .cm-s-monokai span.cm-comment.cm-attribute { color: #97b757; } .cm-s-monokai span.cm-comment.cm-def { color: #bc9262; } .cm-s-monokai span.cm-comment.cm-tag { color: #bc6283; } .cm-s-monokai span.cm-comment.cm-type { color: #5998a6; } .cm-s-monokai span.cm-property, .cm-s-monokai span.cm-attribute { color: #a6e22e; } .cm-s-monokai span.cm-keyword { color: #f92672; } .cm-s-monokai span.cm-builtin { color: #66d9ef; } .cm-s-monokai span.cm-string { color: #e6db74; } .cm-s-monokai span.cm-variable { color: #f8f8f2; } .cm-s-monokai span.cm-variable-2 { color: #9effff; } .cm-s-monokai span.cm-variable-3, .cm-s-monokai span.cm-type { color: #66d9ef; } .cm-s-monokai span.cm-def { color: #fd971f; } .cm-s-monokai span.cm-bracket { color: #f8f8f2; } .cm-s-monokai span.cm-tag { color: #f92672; } .cm-s-monokai span.cm-header { color: #ae81ff; } .cm-s-monokai span.cm-link { color: #ae81ff; } .cm-s-monokai span.cm-error { background: #f92672; color: #f8f8f0; } .cm-s-monokai .CodeMirror-activeline-background { background: #373831; } .cm-s-monokai .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; } plugins/file-manager-advanced/application/library/codemirror/theme/moxer.css000064400000004501147176754550023426 0ustar00/* Name: Moxer Theme Author: Mattia Astorino (http://github.com/equinusocio) Website: https://github.com/moxer-theme/moxer-code */ .cm-s-moxer.CodeMirror { background-color: #090A0F; color: #8E95B4; line-height: 1.8; } .cm-s-moxer .CodeMirror-gutters { background: #090A0F; color: #35394B; border: none; } .cm-s-moxer .CodeMirror-guttermarker, .cm-s-moxer .CodeMirror-guttermarker-subtle, .cm-s-moxer .CodeMirror-linenumber { color: #35394B; } .cm-s-moxer .CodeMirror-cursor { border-left: 1px solid #FFCC00; } .cm-s-moxer div.CodeMirror-selected { background: rgba(128, 203, 196, 0.2); } .cm-s-moxer.CodeMirror-focused div.CodeMirror-selected { background: #212431; } .cm-s-moxer .CodeMirror-line::selection, .cm-s-moxer .CodeMirror-line>span::selection, .cm-s-moxer .CodeMirror-line>span>span::selection { background: #212431; } .cm-s-moxer .CodeMirror-line::-moz-selection, .cm-s-moxer .CodeMirror-line>span::-moz-selection, .cm-s-moxer .CodeMirror-line>span>span::-moz-selection { background: #212431; } .cm-s-moxer .CodeMirror-activeline-background, .cm-s-moxer .CodeMirror-activeline-gutter .CodeMirror-linenumber { background: rgba(33, 36, 49, 0.5); } .cm-s-moxer .cm-keyword { color: #D46C6C; } .cm-s-moxer .cm-operator { color: #D46C6C; } .cm-s-moxer .cm-variable-2 { color: #81C5DA; } .cm-s-moxer .cm-variable-3, .cm-s-moxer .cm-type { color: #f07178; } .cm-s-moxer .cm-builtin { color: #FFCB6B; } .cm-s-moxer .cm-atom { color: #A99BE2; } .cm-s-moxer .cm-number { color: #7CA4C0; } .cm-s-moxer .cm-def { color: #F5DFA5; } .cm-s-moxer .CodeMirror-line .cm-def ~ .cm-def { color: #81C5DA; } .cm-s-moxer .cm-string { color: #B2E4AE; } .cm-s-moxer .cm-string-2 { color: #f07178; } .cm-s-moxer .cm-comment { color: #3F445A; } .cm-s-moxer .cm-variable { color: #8E95B4; } .cm-s-moxer .cm-tag { color: #FF5370; } .cm-s-moxer .cm-meta { color: #FFCB6B; } .cm-s-moxer .cm-attribute { color: #C792EA; } .cm-s-moxer .cm-property { color: #81C5DA; } .cm-s-moxer .cm-qualifier { color: #DECB6B; } .cm-s-moxer .cm-variable-3, .cm-s-moxer .cm-type { color: #DECB6B; } .cm-s-moxer .cm-error { color: rgba(255, 255, 255, 1.0); background-color: #FF5370; } .cm-s-moxer .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }plugins/file-manager-advanced/application/library/codemirror/theme/neat.css000064400000001260147176754550023222 0ustar00.cm-s-neat span.cm-comment { color: #a86; } .cm-s-neat span.cm-keyword { line-height: 1em; font-weight: bold; color: blue; } .cm-s-neat span.cm-string { color: #a22; } .cm-s-neat span.cm-builtin { line-height: 1em; font-weight: bold; color: #077; } .cm-s-neat span.cm-special { line-height: 1em; font-weight: bold; color: #0aa; } .cm-s-neat span.cm-variable { color: black; } .cm-s-neat span.cm-number, .cm-s-neat span.cm-atom { color: #3a3; } .cm-s-neat span.cm-meta { color: #555; } .cm-s-neat span.cm-link { color: #3a3; } .cm-s-neat .CodeMirror-activeline-background { background: #e8f2ff; } .cm-s-neat .CodeMirror-matchingbracket { outline:1px solid grey; color:black !important; } plugins/file-manager-advanced/application/library/codemirror/theme/neo.css000064400000001663147176754550023063 0ustar00/* neo theme for codemirror */ /* Color scheme */ .cm-s-neo.CodeMirror { background-color:#ffffff; color:#2e383c; line-height:1.4375; } .cm-s-neo .cm-comment { color:#75787b; } .cm-s-neo .cm-keyword, .cm-s-neo .cm-property { color:#1d75b3; } .cm-s-neo .cm-atom,.cm-s-neo .cm-number { color:#75438a; } .cm-s-neo .cm-node,.cm-s-neo .cm-tag { color:#9c3328; } .cm-s-neo .cm-string { color:#b35e14; } .cm-s-neo .cm-variable,.cm-s-neo .cm-qualifier { color:#047d65; } /* Editor styling */ .cm-s-neo pre { padding:0; } .cm-s-neo .CodeMirror-gutters { border:none; border-right:10px solid transparent; background-color:transparent; } .cm-s-neo .CodeMirror-linenumber { padding:0; color:#e0e2e5; } .cm-s-neo .CodeMirror-guttermarker { color: #1d75b3; } .cm-s-neo .CodeMirror-guttermarker-subtle { color: #e0e2e5; } .cm-s-neo .CodeMirror-cursor { width: auto; border: 0; background: rgba(155,157,162,0.37); z-index: 1; } plugins/file-manager-advanced/application/library/codemirror/theme/night.css000064400000003322147176754550023405 0ustar00/* Loosely based on the Midnight Textmate theme */ .cm-s-night.CodeMirror { background: #0a001f; color: #f8f8f8; } .cm-s-night div.CodeMirror-selected { background: #447; } .cm-s-night .CodeMirror-line::selection, .cm-s-night .CodeMirror-line > span::selection, .cm-s-night .CodeMirror-line > span > span::selection { background: rgba(68, 68, 119, .99); } .cm-s-night .CodeMirror-line::-moz-selection, .cm-s-night .CodeMirror-line > span::-moz-selection, .cm-s-night .CodeMirror-line > span > span::-moz-selection { background: rgba(68, 68, 119, .99); } .cm-s-night .CodeMirror-gutters { background: #0a001f; border-right: 1px solid #aaa; } .cm-s-night .CodeMirror-guttermarker { color: white; } .cm-s-night .CodeMirror-guttermarker-subtle { color: #bbb; } .cm-s-night .CodeMirror-linenumber { color: #f8f8f8; } .cm-s-night .CodeMirror-cursor { border-left: 1px solid white; } .cm-s-night span.cm-comment { color: #8900d1; } .cm-s-night span.cm-atom { color: #845dc4; } .cm-s-night span.cm-number, .cm-s-night span.cm-attribute { color: #ffd500; } .cm-s-night span.cm-keyword { color: #599eff; } .cm-s-night span.cm-string { color: #37f14a; } .cm-s-night span.cm-meta { color: #7678e2; } .cm-s-night span.cm-variable-2, .cm-s-night span.cm-tag { color: #99b2ff; } .cm-s-night span.cm-variable-3, .cm-s-night span.cm-def, .cm-s-night span.cm-type { color: white; } .cm-s-night span.cm-bracket { color: #8da6ce; } .cm-s-night span.cm-builtin, .cm-s-night span.cm-special { color: #ff9e59; } .cm-s-night span.cm-link { color: #845dc4; } .cm-s-night span.cm-error { color: #9d1e15; } .cm-s-night .CodeMirror-activeline-background { background: #1C005A; } .cm-s-night .CodeMirror-matchingbracket { outline:1px solid grey; color:white !important; } plugins/file-manager-advanced/application/library/codemirror/theme/nord.css000064400000004050147176754550023235 0ustar00/* Based on arcticicestudio's Nord theme */ /* https://github.com/arcticicestudio/nord */ .cm-s-nord.CodeMirror { background: #2e3440; color: #d8dee9; } .cm-s-nord div.CodeMirror-selected { background: #434c5e; } .cm-s-nord .CodeMirror-line::selection, .cm-s-nord .CodeMirror-line > span::selection, .cm-s-nord .CodeMirror-line > span > span::selection { background: #3b4252; } .cm-s-nord .CodeMirror-line::-moz-selection, .cm-s-nord .CodeMirror-line > span::-moz-selection, .cm-s-nord .CodeMirror-line > span > span::-moz-selection { background: #3b4252; } .cm-s-nord .CodeMirror-gutters { background: #2e3440; border-right: 0px; } .cm-s-nord .CodeMirror-guttermarker { color: #4c566a; } .cm-s-nord .CodeMirror-guttermarker-subtle { color: #4c566a; } .cm-s-nord .CodeMirror-linenumber { color: #4c566a; } .cm-s-nord .CodeMirror-cursor { border-left: 1px solid #f8f8f0; } .cm-s-nord span.cm-comment { color: #4c566a; } .cm-s-nord span.cm-atom { color: #b48ead; } .cm-s-nord span.cm-number { color: #b48ead; } .cm-s-nord span.cm-comment.cm-attribute { color: #97b757; } .cm-s-nord span.cm-comment.cm-def { color: #bc9262; } .cm-s-nord span.cm-comment.cm-tag { color: #bc6283; } .cm-s-nord span.cm-comment.cm-type { color: #5998a6; } .cm-s-nord span.cm-property, .cm-s-nord span.cm-attribute { color: #8FBCBB; } .cm-s-nord span.cm-keyword { color: #81A1C1; } .cm-s-nord span.cm-builtin { color: #81A1C1; } .cm-s-nord span.cm-string { color: #A3BE8C; } .cm-s-nord span.cm-variable { color: #d8dee9; } .cm-s-nord span.cm-variable-2 { color: #d8dee9; } .cm-s-nord span.cm-variable-3, .cm-s-nord span.cm-type { color: #d8dee9; } .cm-s-nord span.cm-def { color: #8FBCBB; } .cm-s-nord span.cm-bracket { color: #81A1C1; } .cm-s-nord span.cm-tag { color: #bf616a; } .cm-s-nord span.cm-header { color: #b48ead; } .cm-s-nord span.cm-link { color: #b48ead; } .cm-s-nord span.cm-error { background: #bf616a; color: #f8f8f0; } .cm-s-nord .CodeMirror-activeline-background { background: #3b4252; } .cm-s-nord .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; } plugins/file-manager-advanced/application/library/codemirror/theme/oceanic-next.css000064400000004610147176754550024652 0ustar00/* Name: oceanic-next Author: Filype Pereira (https://github.com/fpereira1) Original oceanic-next color scheme by Dmitri Voronianski (https://github.com/voronianski/oceanic-next-color-scheme) */ .cm-s-oceanic-next.CodeMirror { background: #304148; color: #f8f8f2; } .cm-s-oceanic-next div.CodeMirror-selected { background: rgba(101, 115, 126, 0.33); } .cm-s-oceanic-next .CodeMirror-line::selection, .cm-s-oceanic-next .CodeMirror-line > span::selection, .cm-s-oceanic-next .CodeMirror-line > span > span::selection { background: rgba(101, 115, 126, 0.33); } .cm-s-oceanic-next .CodeMirror-line::-moz-selection, .cm-s-oceanic-next .CodeMirror-line > span::-moz-selection, .cm-s-oceanic-next .CodeMirror-line > span > span::-moz-selection { background: rgba(101, 115, 126, 0.33); } .cm-s-oceanic-next .CodeMirror-gutters { background: #304148; border-right: 10px; } .cm-s-oceanic-next .CodeMirror-guttermarker { color: white; } .cm-s-oceanic-next .CodeMirror-guttermarker-subtle { color: #d0d0d0; } .cm-s-oceanic-next .CodeMirror-linenumber { color: #d0d0d0; } .cm-s-oceanic-next .CodeMirror-cursor { border-left: 1px solid #f8f8f0; } .cm-s-oceanic-next.cm-fat-cursor .CodeMirror-cursor { background-color: #a2a8a175 !important; } .cm-s-oceanic-next .cm-animate-fat-cursor { background-color: #a2a8a175 !important; } .cm-s-oceanic-next span.cm-comment { color: #65737E; } .cm-s-oceanic-next span.cm-atom { color: #C594C5; } .cm-s-oceanic-next span.cm-number { color: #F99157; } .cm-s-oceanic-next span.cm-property { color: #99C794; } .cm-s-oceanic-next span.cm-attribute, .cm-s-oceanic-next span.cm-keyword { color: #C594C5; } .cm-s-oceanic-next span.cm-builtin { color: #66d9ef; } .cm-s-oceanic-next span.cm-string { color: #99C794; } .cm-s-oceanic-next span.cm-variable, .cm-s-oceanic-next span.cm-variable-2, .cm-s-oceanic-next span.cm-variable-3 { color: #f8f8f2; } .cm-s-oceanic-next span.cm-def { color: #6699CC; } .cm-s-oceanic-next span.cm-bracket { color: #5FB3B3; } .cm-s-oceanic-next span.cm-tag { color: #C594C5; } .cm-s-oceanic-next span.cm-header { color: #C594C5; } .cm-s-oceanic-next span.cm-link { color: #C594C5; } .cm-s-oceanic-next span.cm-error { background: #C594C5; color: #f8f8f0; } .cm-s-oceanic-next .CodeMirror-activeline-background { background: rgba(101, 115, 126, 0.33); } .cm-s-oceanic-next .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; } plugins/file-manager-advanced/application/library/codemirror/theme/panda-syntax.css000064400000003414147176754550024705 0ustar00/* Name: Panda Syntax Author: Siamak Mokhtari (http://github.com/siamak/) CodeMirror template by Siamak Mokhtari (https://github.com/siamak/atom-panda-syntax) */ .cm-s-panda-syntax { background: #292A2B; color: #E6E6E6; line-height: 1.5; font-family: 'Operator Mono', 'Source Code Pro', Menlo, Monaco, Consolas, Courier New, monospace; } .cm-s-panda-syntax .CodeMirror-cursor { border-color: #ff2c6d; } .cm-s-panda-syntax .CodeMirror-activeline-background { background: rgba(99, 123, 156, 0.1); } .cm-s-panda-syntax .CodeMirror-selected { background: #FFF; } .cm-s-panda-syntax .cm-comment { font-style: italic; color: #676B79; } .cm-s-panda-syntax .cm-operator { color: #f3f3f3; } .cm-s-panda-syntax .cm-string { color: #19F9D8; } .cm-s-panda-syntax .cm-string-2 { color: #FFB86C; } .cm-s-panda-syntax .cm-tag { color: #ff2c6d; } .cm-s-panda-syntax .cm-meta { color: #b084eb; } .cm-s-panda-syntax .cm-number { color: #FFB86C; } .cm-s-panda-syntax .cm-atom { color: #ff2c6d; } .cm-s-panda-syntax .cm-keyword { color: #FF75B5; } .cm-s-panda-syntax .cm-variable { color: #ffb86c; } .cm-s-panda-syntax .cm-variable-2 { color: #ff9ac1; } .cm-s-panda-syntax .cm-variable-3, .cm-s-panda-syntax .cm-type { color: #ff9ac1; } .cm-s-panda-syntax .cm-def { color: #e6e6e6; } .cm-s-panda-syntax .cm-property { color: #f3f3f3; } .cm-s-panda-syntax .cm-unit { color: #ffb86c; } .cm-s-panda-syntax .cm-attribute { color: #ffb86c; } .cm-s-panda-syntax .CodeMirror-matchingbracket { border-bottom: 1px dotted #19F9D8; padding-bottom: 2px; color: #e6e6e6; } .cm-s-panda-syntax .CodeMirror-gutters { background: #292a2b; border-right-color: rgba(255, 255, 255, 0.1); } .cm-s-panda-syntax .CodeMirror-linenumber { color: #e6e6e6; opacity: 0.6; } plugins/file-manager-advanced/application/library/codemirror/theme/paraiso-dark.css000064400000004036147176754550024654 0ustar00/* Name: Paraíso (Dark) Author: Jan T. Sott Color scheme by Jan T. Sott (https://github.com/idleberg/Paraiso-CodeMirror) Inspired by the art of Rubens LP (http://www.rubenslp.com.br) */ .cm-s-paraiso-dark.CodeMirror { background: #2f1e2e; color: #b9b6b0; } .cm-s-paraiso-dark div.CodeMirror-selected { background: #41323f; } .cm-s-paraiso-dark .CodeMirror-line::selection, .cm-s-paraiso-dark .CodeMirror-line > span::selection, .cm-s-paraiso-dark .CodeMirror-line > span > span::selection { background: rgba(65, 50, 63, .99); } .cm-s-paraiso-dark .CodeMirror-line::-moz-selection, .cm-s-paraiso-dark .CodeMirror-line > span::-moz-selection, .cm-s-paraiso-dark .CodeMirror-line > span > span::-moz-selection { background: rgba(65, 50, 63, .99); } .cm-s-paraiso-dark .CodeMirror-gutters { background: #2f1e2e; border-right: 0px; } .cm-s-paraiso-dark .CodeMirror-guttermarker { color: #ef6155; } .cm-s-paraiso-dark .CodeMirror-guttermarker-subtle { color: #776e71; } .cm-s-paraiso-dark .CodeMirror-linenumber { color: #776e71; } .cm-s-paraiso-dark .CodeMirror-cursor { border-left: 1px solid #8d8687; } .cm-s-paraiso-dark span.cm-comment { color: #e96ba8; } .cm-s-paraiso-dark span.cm-atom { color: #815ba4; } .cm-s-paraiso-dark span.cm-number { color: #815ba4; } .cm-s-paraiso-dark span.cm-property, .cm-s-paraiso-dark span.cm-attribute { color: #48b685; } .cm-s-paraiso-dark span.cm-keyword { color: #ef6155; } .cm-s-paraiso-dark span.cm-string { color: #fec418; } .cm-s-paraiso-dark span.cm-variable { color: #48b685; } .cm-s-paraiso-dark span.cm-variable-2 { color: #06b6ef; } .cm-s-paraiso-dark span.cm-def { color: #f99b15; } .cm-s-paraiso-dark span.cm-bracket { color: #b9b6b0; } .cm-s-paraiso-dark span.cm-tag { color: #ef6155; } .cm-s-paraiso-dark span.cm-link { color: #815ba4; } .cm-s-paraiso-dark span.cm-error { background: #ef6155; color: #8d8687; } .cm-s-paraiso-dark .CodeMirror-activeline-background { background: #4D344A; } .cm-s-paraiso-dark .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; } plugins/file-manager-advanced/application/library/codemirror/theme/paraiso-light.css000064400000004036147176754550025042 0ustar00/* Name: Paraíso (Light) Author: Jan T. Sott Color scheme by Jan T. Sott (https://github.com/idleberg/Paraiso-CodeMirror) Inspired by the art of Rubens LP (http://www.rubenslp.com.br) */ .cm-s-paraiso-light.CodeMirror { background: #e7e9db; color: #41323f; } .cm-s-paraiso-light div.CodeMirror-selected { background: #b9b6b0; } .cm-s-paraiso-light .CodeMirror-line::selection, .cm-s-paraiso-light .CodeMirror-line > span::selection, .cm-s-paraiso-light .CodeMirror-line > span > span::selection { background: #b9b6b0; } .cm-s-paraiso-light .CodeMirror-line::-moz-selection, .cm-s-paraiso-light .CodeMirror-line > span::-moz-selection, .cm-s-paraiso-light .CodeMirror-line > span > span::-moz-selection { background: #b9b6b0; } .cm-s-paraiso-light .CodeMirror-gutters { background: #e7e9db; border-right: 0px; } .cm-s-paraiso-light .CodeMirror-guttermarker { color: black; } .cm-s-paraiso-light .CodeMirror-guttermarker-subtle { color: #8d8687; } .cm-s-paraiso-light .CodeMirror-linenumber { color: #8d8687; } .cm-s-paraiso-light .CodeMirror-cursor { border-left: 1px solid #776e71; } .cm-s-paraiso-light span.cm-comment { color: #e96ba8; } .cm-s-paraiso-light span.cm-atom { color: #815ba4; } .cm-s-paraiso-light span.cm-number { color: #815ba4; } .cm-s-paraiso-light span.cm-property, .cm-s-paraiso-light span.cm-attribute { color: #48b685; } .cm-s-paraiso-light span.cm-keyword { color: #ef6155; } .cm-s-paraiso-light span.cm-string { color: #fec418; } .cm-s-paraiso-light span.cm-variable { color: #48b685; } .cm-s-paraiso-light span.cm-variable-2 { color: #06b6ef; } .cm-s-paraiso-light span.cm-def { color: #f99b15; } .cm-s-paraiso-light span.cm-bracket { color: #41323f; } .cm-s-paraiso-light span.cm-tag { color: #ef6155; } .cm-s-paraiso-light span.cm-link { color: #815ba4; } .cm-s-paraiso-light span.cm-error { background: #ef6155; color: #776e71; } .cm-s-paraiso-light .CodeMirror-activeline-background { background: #CFD1C4; } .cm-s-paraiso-light .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; } plugins/file-manager-advanced/application/library/codemirror/theme/pastel-on-dark.css000064400000004665147176754550025130 0ustar00/** * Pastel On Dark theme ported from ACE editor * @license MIT * @copyright AtomicPages LLC 2014 * @author Dennis Thompson, AtomicPages LLC * @version 1.1 * @source https://github.com/atomicpages/codemirror-pastel-on-dark-theme */ .cm-s-pastel-on-dark.CodeMirror { background: #2c2827; color: #8F938F; line-height: 1.5; } .cm-s-pastel-on-dark div.CodeMirror-selected { background: rgba(221,240,255,0.2); } .cm-s-pastel-on-dark .CodeMirror-line::selection, .cm-s-pastel-on-dark .CodeMirror-line > span::selection, .cm-s-pastel-on-dark .CodeMirror-line > span > span::selection { background: rgba(221,240,255,0.2); } .cm-s-pastel-on-dark .CodeMirror-line::-moz-selection, .cm-s-pastel-on-dark .CodeMirror-line > span::-moz-selection, .cm-s-pastel-on-dark .CodeMirror-line > span > span::-moz-selection { background: rgba(221,240,255,0.2); } .cm-s-pastel-on-dark .CodeMirror-gutters { background: #34302f; border-right: 0px; padding: 0 3px; } .cm-s-pastel-on-dark .CodeMirror-guttermarker { color: white; } .cm-s-pastel-on-dark .CodeMirror-guttermarker-subtle { color: #8F938F; } .cm-s-pastel-on-dark .CodeMirror-linenumber { color: #8F938F; } .cm-s-pastel-on-dark .CodeMirror-cursor { border-left: 1px solid #A7A7A7; } .cm-s-pastel-on-dark span.cm-comment { color: #A6C6FF; } .cm-s-pastel-on-dark span.cm-atom { color: #DE8E30; } .cm-s-pastel-on-dark span.cm-number { color: #CCCCCC; } .cm-s-pastel-on-dark span.cm-property { color: #8F938F; } .cm-s-pastel-on-dark span.cm-attribute { color: #a6e22e; } .cm-s-pastel-on-dark span.cm-keyword { color: #AEB2F8; } .cm-s-pastel-on-dark span.cm-string { color: #66A968; } .cm-s-pastel-on-dark span.cm-variable { color: #AEB2F8; } .cm-s-pastel-on-dark span.cm-variable-2 { color: #BEBF55; } .cm-s-pastel-on-dark span.cm-variable-3, .cm-s-pastel-on-dark span.cm-type { color: #DE8E30; } .cm-s-pastel-on-dark span.cm-def { color: #757aD8; } .cm-s-pastel-on-dark span.cm-bracket { color: #f8f8f2; } .cm-s-pastel-on-dark span.cm-tag { color: #C1C144; } .cm-s-pastel-on-dark span.cm-link { color: #ae81ff; } .cm-s-pastel-on-dark span.cm-qualifier,.cm-s-pastel-on-dark span.cm-builtin { color: #C1C144; } .cm-s-pastel-on-dark span.cm-error { background: #757aD8; color: #f8f8f0; } .cm-s-pastel-on-dark .CodeMirror-activeline-background { background: rgba(255, 255, 255, 0.031); } .cm-s-pastel-on-dark .CodeMirror-matchingbracket { border: 1px solid rgba(255,255,255,0.25); color: #8F938F !important; margin: -1px -1px 0 -1px; } plugins/file-manager-advanced/application/library/codemirror/theme/railscasts.css000064400000002752147176754550024452 0ustar00/* Name: Railscasts Author: Ryan Bates (http://railscasts.com) CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror) Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ .cm-s-railscasts.CodeMirror {background: #2b2b2b; color: #f4f1ed;} .cm-s-railscasts div.CodeMirror-selected {background: #272935 !important;} .cm-s-railscasts .CodeMirror-gutters {background: #2b2b2b; border-right: 0px;} .cm-s-railscasts .CodeMirror-linenumber {color: #5a647e;} .cm-s-railscasts .CodeMirror-cursor {border-left: 1px solid #d4cfc9 !important;} .cm-s-railscasts span.cm-comment {color: #bc9458;} .cm-s-railscasts span.cm-atom {color: #b6b3eb;} .cm-s-railscasts span.cm-number {color: #b6b3eb;} .cm-s-railscasts span.cm-property, .cm-s-railscasts span.cm-attribute {color: #a5c261;} .cm-s-railscasts span.cm-keyword {color: #da4939;} .cm-s-railscasts span.cm-string {color: #ffc66d;} .cm-s-railscasts span.cm-variable {color: #a5c261;} .cm-s-railscasts span.cm-variable-2 {color: #6d9cbe;} .cm-s-railscasts span.cm-def {color: #cc7833;} .cm-s-railscasts span.cm-error {background: #da4939; color: #d4cfc9;} .cm-s-railscasts span.cm-bracket {color: #f4f1ed;} .cm-s-railscasts span.cm-tag {color: #da4939;} .cm-s-railscasts span.cm-link {color: #b6b3eb;} .cm-s-railscasts .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;} .cm-s-railscasts .CodeMirror-activeline-background { background: #303040; } plugins/file-manager-advanced/application/library/codemirror/theme/rubyblue.css000064400000003411147176754550024124 0ustar00.cm-s-rubyblue.CodeMirror { background: #112435; color: white; } .cm-s-rubyblue div.CodeMirror-selected { background: #38566F; } .cm-s-rubyblue .CodeMirror-line::selection, .cm-s-rubyblue .CodeMirror-line > span::selection, .cm-s-rubyblue .CodeMirror-line > span > span::selection { background: rgba(56, 86, 111, 0.99); } .cm-s-rubyblue .CodeMirror-line::-moz-selection, .cm-s-rubyblue .CodeMirror-line > span::-moz-selection, .cm-s-rubyblue .CodeMirror-line > span > span::-moz-selection { background: rgba(56, 86, 111, 0.99); } .cm-s-rubyblue .CodeMirror-gutters { background: #1F4661; border-right: 7px solid #3E7087; } .cm-s-rubyblue .CodeMirror-guttermarker { color: white; } .cm-s-rubyblue .CodeMirror-guttermarker-subtle { color: #3E7087; } .cm-s-rubyblue .CodeMirror-linenumber { color: white; } .cm-s-rubyblue .CodeMirror-cursor { border-left: 1px solid white; } .cm-s-rubyblue span.cm-comment { color: #999; font-style:italic; line-height: 1em; } .cm-s-rubyblue span.cm-atom { color: #F4C20B; } .cm-s-rubyblue span.cm-number, .cm-s-rubyblue span.cm-attribute { color: #82C6E0; } .cm-s-rubyblue span.cm-keyword { color: #F0F; } .cm-s-rubyblue span.cm-string { color: #F08047; } .cm-s-rubyblue span.cm-meta { color: #F0F; } .cm-s-rubyblue span.cm-variable-2, .cm-s-rubyblue span.cm-tag { color: #7BD827; } .cm-s-rubyblue span.cm-variable-3, .cm-s-rubyblue span.cm-def, .cm-s-rubyblue span.cm-type { color: white; } .cm-s-rubyblue span.cm-bracket { color: #F0F; } .cm-s-rubyblue span.cm-link { color: #F4C20B; } .cm-s-rubyblue span.CodeMirror-matchingbracket { color:#F0F !important; } .cm-s-rubyblue span.cm-builtin, .cm-s-rubyblue span.cm-special { color: #FF9D00; } .cm-s-rubyblue span.cm-error { color: #AF2018; } .cm-s-rubyblue .CodeMirror-activeline-background { background: #173047; } plugins/file-manager-advanced/application/library/codemirror/theme/seti.css000064400000003731147176754550023244 0ustar00/* Name: seti Author: Michael Kaminsky (http://github.com/mkaminsky11) Original seti color scheme by Jesse Weed (https://github.com/jesseweed/seti-syntax) */ .cm-s-seti.CodeMirror { background-color: #151718 !important; color: #CFD2D1 !important; border: none; } .cm-s-seti .CodeMirror-gutters { color: #404b53; background-color: #0E1112; border: none; } .cm-s-seti .CodeMirror-cursor { border-left: solid thin #f8f8f0; } .cm-s-seti .CodeMirror-linenumber { color: #6D8A88; } .cm-s-seti.CodeMirror-focused div.CodeMirror-selected { background: rgba(255, 255, 255, 0.10); } .cm-s-seti .CodeMirror-line::selection, .cm-s-seti .CodeMirror-line > span::selection, .cm-s-seti .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); } .cm-s-seti .CodeMirror-line::-moz-selection, .cm-s-seti .CodeMirror-line > span::-moz-selection, .cm-s-seti .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); } .cm-s-seti span.cm-comment { color: #41535b; } .cm-s-seti span.cm-string, .cm-s-seti span.cm-string-2 { color: #55b5db; } .cm-s-seti span.cm-number { color: #cd3f45; } .cm-s-seti span.cm-variable { color: #55b5db; } .cm-s-seti span.cm-variable-2 { color: #a074c4; } .cm-s-seti span.cm-def { color: #55b5db; } .cm-s-seti span.cm-keyword { color: #ff79c6; } .cm-s-seti span.cm-operator { color: #9fca56; } .cm-s-seti span.cm-keyword { color: #e6cd69; } .cm-s-seti span.cm-atom { color: #cd3f45; } .cm-s-seti span.cm-meta { color: #55b5db; } .cm-s-seti span.cm-tag { color: #55b5db; } .cm-s-seti span.cm-attribute { color: #9fca56; } .cm-s-seti span.cm-qualifier { color: #9fca56; } .cm-s-seti span.cm-property { color: #a074c4; } .cm-s-seti span.cm-variable-3, .cm-s-seti span.cm-type { color: #9fca56; } .cm-s-seti span.cm-builtin { color: #9fca56; } .cm-s-seti .CodeMirror-activeline-background { background: #101213; } .cm-s-seti .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; } plugins/file-manager-advanced/application/library/codemirror/theme/shadowfox.css000064400000004610147176754550024277 0ustar00/* Name: shadowfox Author: overdodactyl (http://github.com/overdodactyl) Original shadowfox color scheme by Firefox */ .cm-s-shadowfox.CodeMirror { background: #2a2a2e; color: #b1b1b3; } .cm-s-shadowfox div.CodeMirror-selected { background: #353B48; } .cm-s-shadowfox .CodeMirror-line::selection, .cm-s-shadowfox .CodeMirror-line > span::selection, .cm-s-shadowfox .CodeMirror-line > span > span::selection { background: #353B48; } .cm-s-shadowfox .CodeMirror-line::-moz-selection, .cm-s-shadowfox .CodeMirror-line > span::-moz-selection, .cm-s-shadowfox .CodeMirror-line > span > span::-moz-selection { background: #353B48; } .cm-s-shadowfox .CodeMirror-gutters { background: #0c0c0d ; border-right: 1px solid #0c0c0d; } .cm-s-shadowfox .CodeMirror-guttermarker { color: #555; } .cm-s-shadowfox .CodeMirror-linenumber { color: #939393; } .cm-s-shadowfox .CodeMirror-cursor { border-left: 1px solid #fff; } .cm-s-shadowfox span.cm-comment { color: #939393; } .cm-s-shadowfox span.cm-atom { color: #FF7DE9; } .cm-s-shadowfox span.cm-quote { color: #FF7DE9; } .cm-s-shadowfox span.cm-builtin { color: #FF7DE9; } .cm-s-shadowfox span.cm-attribute { color: #FF7DE9; } .cm-s-shadowfox span.cm-keyword { color: #FF7DE9; } .cm-s-shadowfox span.cm-error { color: #FF7DE9; } .cm-s-shadowfox span.cm-number { color: #6B89FF; } .cm-s-shadowfox span.cm-string { color: #6B89FF; } .cm-s-shadowfox span.cm-string-2 { color: #6B89FF; } .cm-s-shadowfox span.cm-meta { color: #939393; } .cm-s-shadowfox span.cm-hr { color: #939393; } .cm-s-shadowfox span.cm-header { color: #75BFFF; } .cm-s-shadowfox span.cm-qualifier { color: #75BFFF; } .cm-s-shadowfox span.cm-variable-2 { color: #75BFFF; } .cm-s-shadowfox span.cm-property { color: #86DE74; } .cm-s-shadowfox span.cm-def { color: #75BFFF; } .cm-s-shadowfox span.cm-bracket { color: #75BFFF; } .cm-s-shadowfox span.cm-tag { color: #75BFFF; } .cm-s-shadowfox span.cm-link:visited { color: #75BFFF; } .cm-s-shadowfox span.cm-variable { color: #B98EFF; } .cm-s-shadowfox span.cm-variable-3 { color: #d7d7db; } .cm-s-shadowfox span.cm-link { color: #737373; } .cm-s-shadowfox span.cm-operator { color: #b1b1b3; } .cm-s-shadowfox span.cm-special { color: #d7d7db; } .cm-s-shadowfox .CodeMirror-activeline-background { background: rgba(185, 215, 253, .15) } .cm-s-shadowfox .CodeMirror-matchingbracket { outline: solid 1px rgba(255, 255, 255, .25); color: white !important; } plugins/file-manager-advanced/application/library/codemirror/theme/solarized.css000064400000012331147176754550024270 0ustar00/* Solarized theme for code-mirror http://ethanschoonover.com/solarized */ /* Solarized color palette http://ethanschoonover.com/solarized/img/solarized-palette.png */ .solarized.base03 { color: #002b36; } .solarized.base02 { color: #073642; } .solarized.base01 { color: #586e75; } .solarized.base00 { color: #657b83; } .solarized.base0 { color: #839496; } .solarized.base1 { color: #93a1a1; } .solarized.base2 { color: #eee8d5; } .solarized.base3 { color: #fdf6e3; } .solarized.solar-yellow { color: #b58900; } .solarized.solar-orange { color: #cb4b16; } .solarized.solar-red { color: #dc322f; } .solarized.solar-magenta { color: #d33682; } .solarized.solar-violet { color: #6c71c4; } .solarized.solar-blue { color: #268bd2; } .solarized.solar-cyan { color: #2aa198; } .solarized.solar-green { color: #859900; } /* Color scheme for code-mirror */ .cm-s-solarized { line-height: 1.45em; color-profile: sRGB; rendering-intent: auto; } .cm-s-solarized.cm-s-dark { color: #839496; background-color: #002b36; } .cm-s-solarized.cm-s-light { background-color: #fdf6e3; color: #657b83; } .cm-s-solarized .CodeMirror-widget { text-shadow: none; } .cm-s-solarized .cm-header { color: #586e75; } .cm-s-solarized .cm-quote { color: #93a1a1; } .cm-s-solarized .cm-keyword { color: #cb4b16; } .cm-s-solarized .cm-atom { color: #d33682; } .cm-s-solarized .cm-number { color: #d33682; } .cm-s-solarized .cm-def { color: #2aa198; } .cm-s-solarized .cm-variable { color: #839496; } .cm-s-solarized .cm-variable-2 { color: #b58900; } .cm-s-solarized .cm-variable-3, .cm-s-solarized .cm-type { color: #6c71c4; } .cm-s-solarized .cm-property { color: #2aa198; } .cm-s-solarized .cm-operator { color: #6c71c4; } .cm-s-solarized .cm-comment { color: #586e75; font-style:italic; } .cm-s-solarized .cm-string { color: #859900; } .cm-s-solarized .cm-string-2 { color: #b58900; } .cm-s-solarized .cm-meta { color: #859900; } .cm-s-solarized .cm-qualifier { color: #b58900; } .cm-s-solarized .cm-builtin { color: #d33682; } .cm-s-solarized .cm-bracket { color: #cb4b16; } .cm-s-solarized .CodeMirror-matchingbracket { color: #859900; } .cm-s-solarized .CodeMirror-nonmatchingbracket { color: #dc322f; } .cm-s-solarized .cm-tag { color: #93a1a1; } .cm-s-solarized .cm-attribute { color: #2aa198; } .cm-s-solarized .cm-hr { color: transparent; border-top: 1px solid #586e75; display: block; } .cm-s-solarized .cm-link { color: #93a1a1; cursor: pointer; } .cm-s-solarized .cm-special { color: #6c71c4; } .cm-s-solarized .cm-em { color: #999; text-decoration: underline; text-decoration-style: dotted; } .cm-s-solarized .cm-error, .cm-s-solarized .cm-invalidchar { color: #586e75; border-bottom: 1px dotted #dc322f; } .cm-s-solarized.cm-s-dark div.CodeMirror-selected { background: #073642; } .cm-s-solarized.cm-s-dark.CodeMirror ::selection { background: rgba(7, 54, 66, 0.99); } .cm-s-solarized.cm-s-dark .CodeMirror-line::-moz-selection, .cm-s-dark .CodeMirror-line > span::-moz-selection, .cm-s-dark .CodeMirror-line > span > span::-moz-selection { background: rgba(7, 54, 66, 0.99); } .cm-s-solarized.cm-s-light div.CodeMirror-selected { background: #eee8d5; } .cm-s-solarized.cm-s-light .CodeMirror-line::selection, .cm-s-light .CodeMirror-line > span::selection, .cm-s-light .CodeMirror-line > span > span::selection { background: #eee8d5; } .cm-s-solarized.cm-s-light .CodeMirror-line::-moz-selection, .cm-s-light .CodeMirror-line > span::-moz-selection, .cm-s-light .CodeMirror-line > span > span::-moz-selection { background: #eee8d5; } /* Editor styling */ /* Little shadow on the view-port of the buffer view */ .cm-s-solarized.CodeMirror { -moz-box-shadow: inset 7px 0 12px -6px #000; -webkit-box-shadow: inset 7px 0 12px -6px #000; box-shadow: inset 7px 0 12px -6px #000; } /* Remove gutter border */ .cm-s-solarized .CodeMirror-gutters { border-right: 0; } /* Gutter colors and line number styling based of color scheme (dark / light) */ /* Dark */ .cm-s-solarized.cm-s-dark .CodeMirror-gutters { background-color: #073642; } .cm-s-solarized.cm-s-dark .CodeMirror-linenumber { color: #586e75; } /* Light */ .cm-s-solarized.cm-s-light .CodeMirror-gutters { background-color: #eee8d5; } .cm-s-solarized.cm-s-light .CodeMirror-linenumber { color: #839496; } /* Common */ .cm-s-solarized .CodeMirror-linenumber { padding: 0 5px; } .cm-s-solarized .CodeMirror-guttermarker-subtle { color: #586e75; } .cm-s-solarized.cm-s-dark .CodeMirror-guttermarker { color: #ddd; } .cm-s-solarized.cm-s-light .CodeMirror-guttermarker { color: #cb4b16; } .cm-s-solarized .CodeMirror-gutter .CodeMirror-gutter-text { color: #586e75; } /* Cursor */ .cm-s-solarized .CodeMirror-cursor { border-left: 1px solid #819090; } /* Fat cursor */ .cm-s-solarized.cm-s-light.cm-fat-cursor .CodeMirror-cursor { background: #77ee77; } .cm-s-solarized.cm-s-light .cm-animate-fat-cursor { background-color: #77ee77; } .cm-s-solarized.cm-s-dark.cm-fat-cursor .CodeMirror-cursor { background: #586e75; } .cm-s-solarized.cm-s-dark .cm-animate-fat-cursor { background-color: #586e75; } /* Active line */ .cm-s-solarized.cm-s-dark .CodeMirror-activeline-background { background: rgba(255, 255, 255, 0.06); } .cm-s-solarized.cm-s-light .CodeMirror-activeline-background { background: rgba(0, 0, 0, 0.06); } plugins/file-manager-advanced/application/library/codemirror/theme/ssms.css000064400000001357147176754550023267 0ustar00.cm-s-ssms span.cm-keyword { color: blue; } .cm-s-ssms span.cm-comment { color: darkgreen; } .cm-s-ssms span.cm-string { color: red; } .cm-s-ssms span.cm-def { color: black; } .cm-s-ssms span.cm-variable { color: black; } .cm-s-ssms span.cm-variable-2 { color: black; } .cm-s-ssms span.cm-atom { color: darkgray; } .cm-s-ssms .CodeMirror-linenumber { color: teal; } .cm-s-ssms .CodeMirror-activeline-background { background: #ffffff; } .cm-s-ssms span.cm-string-2 { color: #FF00FF; } .cm-s-ssms span.cm-operator, .cm-s-ssms span.cm-bracket, .cm-s-ssms span.cm-punctuation { color: darkgray; } .cm-s-ssms .CodeMirror-gutters { border-right: 3px solid #ffee62; background-color: #ffffff; } .cm-s-ssms div.CodeMirror-selected { background: #ADD6FF; } plugins/file-manager-advanced/application/library/codemirror/theme/the-matrix.css000064400000003624147176754550024363 0ustar00.cm-s-the-matrix.CodeMirror { background: #000000; color: #00FF00; } .cm-s-the-matrix div.CodeMirror-selected { background: #2D2D2D; } .cm-s-the-matrix .CodeMirror-line::selection, .cm-s-the-matrix .CodeMirror-line > span::selection, .cm-s-the-matrix .CodeMirror-line > span > span::selection { background: rgba(45, 45, 45, 0.99); } .cm-s-the-matrix .CodeMirror-line::-moz-selection, .cm-s-the-matrix .CodeMirror-line > span::-moz-selection, .cm-s-the-matrix .CodeMirror-line > span > span::-moz-selection { background: rgba(45, 45, 45, 0.99); } .cm-s-the-matrix .CodeMirror-gutters { background: #060; border-right: 2px solid #00FF00; } .cm-s-the-matrix .CodeMirror-guttermarker { color: #0f0; } .cm-s-the-matrix .CodeMirror-guttermarker-subtle { color: white; } .cm-s-the-matrix .CodeMirror-linenumber { color: #FFFFFF; } .cm-s-the-matrix .CodeMirror-cursor { border-left: 1px solid #00FF00; } .cm-s-the-matrix span.cm-keyword { color: #008803; font-weight: bold; } .cm-s-the-matrix span.cm-atom { color: #3FF; } .cm-s-the-matrix span.cm-number { color: #FFB94F; } .cm-s-the-matrix span.cm-def { color: #99C; } .cm-s-the-matrix span.cm-variable { color: #F6C; } .cm-s-the-matrix span.cm-variable-2 { color: #C6F; } .cm-s-the-matrix span.cm-variable-3, .cm-s-the-matrix span.cm-type { color: #96F; } .cm-s-the-matrix span.cm-property { color: #62FFA0; } .cm-s-the-matrix span.cm-operator { color: #999; } .cm-s-the-matrix span.cm-comment { color: #CCCCCC; } .cm-s-the-matrix span.cm-string { color: #39C; } .cm-s-the-matrix span.cm-meta { color: #C9F; } .cm-s-the-matrix span.cm-qualifier { color: #FFF700; } .cm-s-the-matrix span.cm-builtin { color: #30a; } .cm-s-the-matrix span.cm-bracket { color: #cc7; } .cm-s-the-matrix span.cm-tag { color: #FFBD40; } .cm-s-the-matrix span.cm-attribute { color: #FFF700; } .cm-s-the-matrix span.cm-error { color: #FF0000; } .cm-s-the-matrix .CodeMirror-activeline-background { background: #040; } plugins/file-manager-advanced/application/library/codemirror/theme/tomorrow-night-bright.css000064400000003351147176754550026552 0ustar00/* Name: Tomorrow Night - Bright Author: Chris Kempson Port done by Gerard Braad */ .cm-s-tomorrow-night-bright.CodeMirror { background: #000000; color: #eaeaea; } .cm-s-tomorrow-night-bright div.CodeMirror-selected { background: #424242; } .cm-s-tomorrow-night-bright .CodeMirror-gutters { background: #000000; border-right: 0px; } .cm-s-tomorrow-night-bright .CodeMirror-guttermarker { color: #e78c45; } .cm-s-tomorrow-night-bright .CodeMirror-guttermarker-subtle { color: #777; } .cm-s-tomorrow-night-bright .CodeMirror-linenumber { color: #424242; } .cm-s-tomorrow-night-bright .CodeMirror-cursor { border-left: 1px solid #6A6A6A; } .cm-s-tomorrow-night-bright span.cm-comment { color: #d27b53; } .cm-s-tomorrow-night-bright span.cm-atom { color: #a16a94; } .cm-s-tomorrow-night-bright span.cm-number { color: #a16a94; } .cm-s-tomorrow-night-bright span.cm-property, .cm-s-tomorrow-night-bright span.cm-attribute { color: #99cc99; } .cm-s-tomorrow-night-bright span.cm-keyword { color: #d54e53; } .cm-s-tomorrow-night-bright span.cm-string { color: #e7c547; } .cm-s-tomorrow-night-bright span.cm-variable { color: #b9ca4a; } .cm-s-tomorrow-night-bright span.cm-variable-2 { color: #7aa6da; } .cm-s-tomorrow-night-bright span.cm-def { color: #e78c45; } .cm-s-tomorrow-night-bright span.cm-bracket { color: #eaeaea; } .cm-s-tomorrow-night-bright span.cm-tag { color: #d54e53; } .cm-s-tomorrow-night-bright span.cm-link { color: #a16a94; } .cm-s-tomorrow-night-bright span.cm-error { background: #d54e53; color: #6A6A6A; } .cm-s-tomorrow-night-bright .CodeMirror-activeline-background { background: #2a2a2a; } .cm-s-tomorrow-night-bright .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; } plugins/file-manager-advanced/application/library/codemirror/theme/tomorrow-night-eighties.css000064400000004607147176754550027101 0ustar00/* Name: Tomorrow Night - Eighties Author: Chris Kempson CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror) Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ .cm-s-tomorrow-night-eighties.CodeMirror { background: #000000; color: #CCCCCC; } .cm-s-tomorrow-night-eighties div.CodeMirror-selected { background: #2D2D2D; } .cm-s-tomorrow-night-eighties .CodeMirror-line::selection, .cm-s-tomorrow-night-eighties .CodeMirror-line > span::selection, .cm-s-tomorrow-night-eighties .CodeMirror-line > span > span::selection { background: rgba(45, 45, 45, 0.99); } .cm-s-tomorrow-night-eighties .CodeMirror-line::-moz-selection, .cm-s-tomorrow-night-eighties .CodeMirror-line > span::-moz-selection, .cm-s-tomorrow-night-eighties .CodeMirror-line > span > span::-moz-selection { background: rgba(45, 45, 45, 0.99); } .cm-s-tomorrow-night-eighties .CodeMirror-gutters { background: #000000; border-right: 0px; } .cm-s-tomorrow-night-eighties .CodeMirror-guttermarker { color: #f2777a; } .cm-s-tomorrow-night-eighties .CodeMirror-guttermarker-subtle { color: #777; } .cm-s-tomorrow-night-eighties .CodeMirror-linenumber { color: #515151; } .cm-s-tomorrow-night-eighties .CodeMirror-cursor { border-left: 1px solid #6A6A6A; } .cm-s-tomorrow-night-eighties span.cm-comment { color: #d27b53; } .cm-s-tomorrow-night-eighties span.cm-atom { color: #a16a94; } .cm-s-tomorrow-night-eighties span.cm-number { color: #a16a94; } .cm-s-tomorrow-night-eighties span.cm-property, .cm-s-tomorrow-night-eighties span.cm-attribute { color: #99cc99; } .cm-s-tomorrow-night-eighties span.cm-keyword { color: #f2777a; } .cm-s-tomorrow-night-eighties span.cm-string { color: #ffcc66; } .cm-s-tomorrow-night-eighties span.cm-variable { color: #99cc99; } .cm-s-tomorrow-night-eighties span.cm-variable-2 { color: #6699cc; } .cm-s-tomorrow-night-eighties span.cm-def { color: #f99157; } .cm-s-tomorrow-night-eighties span.cm-bracket { color: #CCCCCC; } .cm-s-tomorrow-night-eighties span.cm-tag { color: #f2777a; } .cm-s-tomorrow-night-eighties span.cm-link { color: #a16a94; } .cm-s-tomorrow-night-eighties span.cm-error { background: #f2777a; color: #6A6A6A; } .cm-s-tomorrow-night-eighties .CodeMirror-activeline-background { background: #343600; } .cm-s-tomorrow-night-eighties .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; } plugins/file-manager-advanced/application/library/codemirror/theme/ttcn.css000064400000004610147176754550023245 0ustar00.cm-s-ttcn .cm-quote { color: #090; } .cm-s-ttcn .cm-negative { color: #d44; } .cm-s-ttcn .cm-positive { color: #292; } .cm-s-ttcn .cm-header, .cm-strong { font-weight: bold; } .cm-s-ttcn .cm-em { font-style: italic; } .cm-s-ttcn .cm-link { text-decoration: underline; } .cm-s-ttcn .cm-strikethrough { text-decoration: line-through; } .cm-s-ttcn .cm-header { color: #00f; font-weight: bold; } .cm-s-ttcn .cm-atom { color: #219; } .cm-s-ttcn .cm-attribute { color: #00c; } .cm-s-ttcn .cm-bracket { color: #997; } .cm-s-ttcn .cm-comment { color: #333333; } .cm-s-ttcn .cm-def { color: #00f; } .cm-s-ttcn .cm-em { font-style: italic; } .cm-s-ttcn .cm-error { color: #f00; } .cm-s-ttcn .cm-hr { color: #999; } .cm-s-ttcn .cm-invalidchar { color: #f00; } .cm-s-ttcn .cm-keyword { font-weight:bold; } .cm-s-ttcn .cm-link { color: #00c; text-decoration: underline; } .cm-s-ttcn .cm-meta { color: #555; } .cm-s-ttcn .cm-negative { color: #d44; } .cm-s-ttcn .cm-positive { color: #292; } .cm-s-ttcn .cm-qualifier { color: #555; } .cm-s-ttcn .cm-strikethrough { text-decoration: line-through; } .cm-s-ttcn .cm-string { color: #006400; } .cm-s-ttcn .cm-string-2 { color: #f50; } .cm-s-ttcn .cm-strong { font-weight: bold; } .cm-s-ttcn .cm-tag { color: #170; } .cm-s-ttcn .cm-variable { color: #8B2252; } .cm-s-ttcn .cm-variable-2 { color: #05a; } .cm-s-ttcn .cm-variable-3, .cm-s-ttcn .cm-type { color: #085; } .cm-s-ttcn .cm-invalidchar { color: #f00; } /* ASN */ .cm-s-ttcn .cm-accessTypes, .cm-s-ttcn .cm-compareTypes { color: #27408B; } .cm-s-ttcn .cm-cmipVerbs { color: #8B2252; } .cm-s-ttcn .cm-modifier { color:#D2691E; } .cm-s-ttcn .cm-status { color:#8B4545; } .cm-s-ttcn .cm-storage { color:#A020F0; } .cm-s-ttcn .cm-tags { color:#006400; } /* CFG */ .cm-s-ttcn .cm-externalCommands { color: #8B4545; font-weight:bold; } .cm-s-ttcn .cm-fileNCtrlMaskOptions, .cm-s-ttcn .cm-sectionTitle { color: #2E8B57; font-weight:bold; } /* TTCN */ .cm-s-ttcn .cm-booleanConsts, .cm-s-ttcn .cm-otherConsts, .cm-s-ttcn .cm-verdictConsts { color: #006400; } .cm-s-ttcn .cm-configOps, .cm-s-ttcn .cm-functionOps, .cm-s-ttcn .cm-portOps, .cm-s-ttcn .cm-sutOps, .cm-s-ttcn .cm-timerOps, .cm-s-ttcn .cm-verdictOps { color: #0000FF; } .cm-s-ttcn .cm-preprocessor, .cm-s-ttcn .cm-templateMatch, .cm-s-ttcn .cm-ttcn3Macros { color: #27408B; } .cm-s-ttcn .cm-types { color: #A52A2A; font-weight:bold; } .cm-s-ttcn .cm-visibilityModifiers { font-weight:bold; } plugins/file-manager-advanced/application/library/codemirror/theme/twilight.css000064400000004164147176754550024134 0ustar00.cm-s-twilight.CodeMirror { background: #141414; color: #f7f7f7; } /**/ .cm-s-twilight div.CodeMirror-selected { background: #323232; } /**/ .cm-s-twilight .CodeMirror-line::selection, .cm-s-twilight .CodeMirror-line > span::selection, .cm-s-twilight .CodeMirror-line > span > span::selection { background: rgba(50, 50, 50, 0.99); } .cm-s-twilight .CodeMirror-line::-moz-selection, .cm-s-twilight .CodeMirror-line > span::-moz-selection, .cm-s-twilight .CodeMirror-line > span > span::-moz-selection { background: rgba(50, 50, 50, 0.99); } .cm-s-twilight .CodeMirror-gutters { background: #222; border-right: 1px solid #aaa; } .cm-s-twilight .CodeMirror-guttermarker { color: white; } .cm-s-twilight .CodeMirror-guttermarker-subtle { color: #aaa; } .cm-s-twilight .CodeMirror-linenumber { color: #aaa; } .cm-s-twilight .CodeMirror-cursor { border-left: 1px solid white; } .cm-s-twilight .cm-keyword { color: #f9ee98; } /**/ .cm-s-twilight .cm-atom { color: #FC0; } .cm-s-twilight .cm-number { color: #ca7841; } /**/ .cm-s-twilight .cm-def { color: #8DA6CE; } .cm-s-twilight span.cm-variable-2, .cm-s-twilight span.cm-tag { color: #607392; } /**/ .cm-s-twilight span.cm-variable-3, .cm-s-twilight span.cm-def, .cm-s-twilight span.cm-type { color: #607392; } /**/ .cm-s-twilight .cm-operator { color: #cda869; } /**/ .cm-s-twilight .cm-comment { color:#777; font-style:italic; font-weight:normal; } /**/ .cm-s-twilight .cm-string { color:#8f9d6a; font-style:italic; } /**/ .cm-s-twilight .cm-string-2 { color:#bd6b18; } /*?*/ .cm-s-twilight .cm-meta { background-color:#141414; color:#f7f7f7; } /*?*/ .cm-s-twilight .cm-builtin { color: #cda869; } /*?*/ .cm-s-twilight .cm-tag { color: #997643; } /**/ .cm-s-twilight .cm-attribute { color: #d6bb6d; } /*?*/ .cm-s-twilight .cm-header { color: #FF6400; } .cm-s-twilight .cm-hr { color: #AEAEAE; } .cm-s-twilight .cm-link { color:#ad9361; font-style:italic; text-decoration:none; } /**/ .cm-s-twilight .cm-error { border-bottom: 1px solid red; } .cm-s-twilight .CodeMirror-activeline-background { background: #27282E; } .cm-s-twilight .CodeMirror-matchingbracket { outline:1px solid grey; color:white !important; } plugins/file-manager-advanced/application/library/codemirror/theme/vibrant-ink.css000064400000004136147176754550024524 0ustar00/* Taken from the popular Visual Studio Vibrant Ink Schema */ .cm-s-vibrant-ink.CodeMirror { background: black; color: white; } .cm-s-vibrant-ink div.CodeMirror-selected { background: #35493c; } .cm-s-vibrant-ink .CodeMirror-line::selection, .cm-s-vibrant-ink .CodeMirror-line > span::selection, .cm-s-vibrant-ink .CodeMirror-line > span > span::selection { background: rgba(53, 73, 60, 0.99); } .cm-s-vibrant-ink .CodeMirror-line::-moz-selection, .cm-s-vibrant-ink .CodeMirror-line > span::-moz-selection, .cm-s-vibrant-ink .CodeMirror-line > span > span::-moz-selection { background: rgba(53, 73, 60, 0.99); } .cm-s-vibrant-ink .CodeMirror-gutters { background: #002240; border-right: 1px solid #aaa; } .cm-s-vibrant-ink .CodeMirror-guttermarker { color: white; } .cm-s-vibrant-ink .CodeMirror-guttermarker-subtle { color: #d0d0d0; } .cm-s-vibrant-ink .CodeMirror-linenumber { color: #d0d0d0; } .cm-s-vibrant-ink .CodeMirror-cursor { border-left: 1px solid white; } .cm-s-vibrant-ink .cm-keyword { color: #CC7832; } .cm-s-vibrant-ink .cm-atom { color: #FC0; } .cm-s-vibrant-ink .cm-number { color: #FFEE98; } .cm-s-vibrant-ink .cm-def { color: #8DA6CE; } .cm-s-vibrant-ink span.cm-variable-2, .cm-s-vibrant span.cm-tag { color: #FFC66D; } .cm-s-vibrant-ink span.cm-variable-3, .cm-s-vibrant span.cm-def, .cm-s-vibrant span.cm-type { color: #FFC66D; } .cm-s-vibrant-ink .cm-operator { color: #888; } .cm-s-vibrant-ink .cm-comment { color: gray; font-weight: bold; } .cm-s-vibrant-ink .cm-string { color: #A5C25C; } .cm-s-vibrant-ink .cm-string-2 { color: red; } .cm-s-vibrant-ink .cm-meta { color: #D8FA3C; } .cm-s-vibrant-ink .cm-builtin { color: #8DA6CE; } .cm-s-vibrant-ink .cm-tag { color: #8DA6CE; } .cm-s-vibrant-ink .cm-attribute { color: #8DA6CE; } .cm-s-vibrant-ink .cm-header { color: #FF6400; } .cm-s-vibrant-ink .cm-hr { color: #AEAEAE; } .cm-s-vibrant-ink .cm-link { color: #5656F3; } .cm-s-vibrant-ink .cm-error { border-bottom: 1px solid red; } .cm-s-vibrant-ink .CodeMirror-activeline-background { background: #27282E; } .cm-s-vibrant-ink .CodeMirror-matchingbracket { outline:1px solid grey; color:white !important; } plugins/file-manager-advanced/application/library/codemirror/theme/xq-dark.css000064400000005731147176754550023651 0ustar00/* Copyright (C) 2011 by MarkLogic Corporation Author: Mike Brevoort Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ .cm-s-xq-dark.CodeMirror { background: #0a001f; color: #f8f8f8; } .cm-s-xq-dark div.CodeMirror-selected { background: #27007A; } .cm-s-xq-dark .CodeMirror-line::selection, .cm-s-xq-dark .CodeMirror-line > span::selection, .cm-s-xq-dark .CodeMirror-line > span > span::selection { background: rgba(39, 0, 122, 0.99); } .cm-s-xq-dark .CodeMirror-line::-moz-selection, .cm-s-xq-dark .CodeMirror-line > span::-moz-selection, .cm-s-xq-dark .CodeMirror-line > span > span::-moz-selection { background: rgba(39, 0, 122, 0.99); } .cm-s-xq-dark .CodeMirror-gutters { background: #0a001f; border-right: 1px solid #aaa; } .cm-s-xq-dark .CodeMirror-guttermarker { color: #FFBD40; } .cm-s-xq-dark .CodeMirror-guttermarker-subtle { color: #f8f8f8; } .cm-s-xq-dark .CodeMirror-linenumber { color: #f8f8f8; } .cm-s-xq-dark .CodeMirror-cursor { border-left: 1px solid white; } .cm-s-xq-dark span.cm-keyword { color: #FFBD40; } .cm-s-xq-dark span.cm-atom { color: #6C8CD5; } .cm-s-xq-dark span.cm-number { color: #164; } .cm-s-xq-dark span.cm-def { color: #FFF; text-decoration:underline; } .cm-s-xq-dark span.cm-variable { color: #FFF; } .cm-s-xq-dark span.cm-variable-2 { color: #EEE; } .cm-s-xq-dark span.cm-variable-3, .cm-s-xq-dark span.cm-type { color: #DDD; } .cm-s-xq-dark span.cm-property {} .cm-s-xq-dark span.cm-operator {} .cm-s-xq-dark span.cm-comment { color: gray; } .cm-s-xq-dark span.cm-string { color: #9FEE00; } .cm-s-xq-dark span.cm-meta { color: yellow; } .cm-s-xq-dark span.cm-qualifier { color: #FFF700; } .cm-s-xq-dark span.cm-builtin { color: #30a; } .cm-s-xq-dark span.cm-bracket { color: #cc7; } .cm-s-xq-dark span.cm-tag { color: #FFBD40; } .cm-s-xq-dark span.cm-attribute { color: #FFF700; } .cm-s-xq-dark span.cm-error { color: #f00; } .cm-s-xq-dark .CodeMirror-activeline-background { background: #27282E; } .cm-s-xq-dark .CodeMirror-matchingbracket { outline:1px solid grey; color:white !important; } plugins/file-manager-advanced/application/library/codemirror/theme/xq-light.css000064400000004317147176754550024036 0ustar00/* Copyright (C) 2011 by MarkLogic Corporation Author: Mike Brevoort Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ .cm-s-xq-light span.cm-keyword { line-height: 1em; font-weight: bold; color: #5A5CAD; } .cm-s-xq-light span.cm-atom { color: #6C8CD5; } .cm-s-xq-light span.cm-number { color: #164; } .cm-s-xq-light span.cm-def { text-decoration:underline; } .cm-s-xq-light span.cm-variable { color: black; } .cm-s-xq-light span.cm-variable-2 { color:black; } .cm-s-xq-light span.cm-variable-3, .cm-s-xq-light span.cm-type { color: black; } .cm-s-xq-light span.cm-property {} .cm-s-xq-light span.cm-operator {} .cm-s-xq-light span.cm-comment { color: #0080FF; font-style: italic; } .cm-s-xq-light span.cm-string { color: red; } .cm-s-xq-light span.cm-meta { color: yellow; } .cm-s-xq-light span.cm-qualifier { color: grey; } .cm-s-xq-light span.cm-builtin { color: #7EA656; } .cm-s-xq-light span.cm-bracket { color: #cc7; } .cm-s-xq-light span.cm-tag { color: #3F7F7F; } .cm-s-xq-light span.cm-attribute { color: #7F007F; } .cm-s-xq-light span.cm-error { color: #f00; } .cm-s-xq-light .CodeMirror-activeline-background { background: #e8f2ff; } .cm-s-xq-light .CodeMirror-matchingbracket { outline:1px solid grey;color:black !important;background:yellow; } plugins/file-manager-advanced/application/library/codemirror/theme/yeti.css000064400000003534147176754550023253 0ustar00/* Name: yeti Author: Michael Kaminsky (http://github.com/mkaminsky11) Original yeti color scheme by Jesse Weed (https://github.com/jesseweed/yeti-syntax) */ .cm-s-yeti.CodeMirror { background-color: #ECEAE8 !important; color: #d1c9c0 !important; border: none; } .cm-s-yeti .CodeMirror-gutters { color: #adaba6; background-color: #E5E1DB; border: none; } .cm-s-yeti .CodeMirror-cursor { border-left: solid thin #d1c9c0; } .cm-s-yeti .CodeMirror-linenumber { color: #adaba6; } .cm-s-yeti.CodeMirror-focused div.CodeMirror-selected { background: #DCD8D2; } .cm-s-yeti .CodeMirror-line::selection, .cm-s-yeti .CodeMirror-line > span::selection, .cm-s-yeti .CodeMirror-line > span > span::selection { background: #DCD8D2; } .cm-s-yeti .CodeMirror-line::-moz-selection, .cm-s-yeti .CodeMirror-line > span::-moz-selection, .cm-s-yeti .CodeMirror-line > span > span::-moz-selection { background: #DCD8D2; } .cm-s-yeti span.cm-comment { color: #d4c8be; } .cm-s-yeti span.cm-string, .cm-s-yeti span.cm-string-2 { color: #96c0d8; } .cm-s-yeti span.cm-number { color: #a074c4; } .cm-s-yeti span.cm-variable { color: #55b5db; } .cm-s-yeti span.cm-variable-2 { color: #a074c4; } .cm-s-yeti span.cm-def { color: #55b5db; } .cm-s-yeti span.cm-operator { color: #9fb96e; } .cm-s-yeti span.cm-keyword { color: #9fb96e; } .cm-s-yeti span.cm-atom { color: #a074c4; } .cm-s-yeti span.cm-meta { color: #96c0d8; } .cm-s-yeti span.cm-tag { color: #96c0d8; } .cm-s-yeti span.cm-attribute { color: #9fb96e; } .cm-s-yeti span.cm-qualifier { color: #96c0d8; } .cm-s-yeti span.cm-property { color: #a074c4; } .cm-s-yeti span.cm-builtin { color: #a074c4; } .cm-s-yeti span.cm-variable-3, .cm-s-yeti span.cm-type { color: #96c0d8; } .cm-s-yeti .CodeMirror-activeline-background { background: #E7E4E0; } .cm-s-yeti .CodeMirror-matchingbracket { text-decoration: underline; } plugins/file-manager-advanced/application/library/codemirror/theme/yonce.css000064400000006003147176754550023410 0ustar00/* Name: yoncé Author: Thomas MacLean (http://github.com/thomasmaclean) Original yoncé color scheme by Mina Markham (https://github.com/minamarkham) */ .cm-s-yonce.CodeMirror { background: #1C1C1C; color: #d4d4d4; } /**/ .cm-s-yonce div.CodeMirror-selected { background: rgba(252, 69, 133, 0.478); } /**/ .cm-s-yonce .CodeMirror-selectedtext, .cm-s-yonce .CodeMirror-selected, .cm-s-yonce .CodeMirror-line::selection, .cm-s-yonce .CodeMirror-line > span::selection, .cm-s-yonce .CodeMirror-line > span > span::selection, .cm-s-yonce .CodeMirror-line::-moz-selection, .cm-s-yonce .CodeMirror-line > span::-moz-selection, .cm-s-yonce .CodeMirror-line > span > span::-moz-selection { background: rgba(252, 67, 132, 0.47); } .cm-s-yonce.CodeMirror pre { padding-left: 0px; } .cm-s-yonce .CodeMirror-gutters {background: #1C1C1C; border-right: 0px;} .cm-s-yonce .CodeMirror-linenumber {color: #777777; padding-right: 10px; } .cm-s-yonce .CodeMirror-activeline .CodeMirror-linenumber.CodeMirror-gutter-elt { background: #1C1C1C; color: #fc4384; } .cm-s-yonce .CodeMirror-linenumber { color: #777; } .cm-s-yonce .CodeMirror-cursor { border-left: 2px solid #FC4384; } .cm-s-yonce .cm-searching { background: rgba(243, 155, 53, .3) !important; outline: 1px solid #F39B35; } .cm-s-yonce .cm-searching.CodeMirror-selectedtext { background: rgba(243, 155, 53, .7) !important; color: white; } .cm-s-yonce .cm-keyword { color: #00A7AA; } /**/ .cm-s-yonce .cm-atom { color: #F39B35; } .cm-s-yonce .cm-number, .cm-s-yonce span.cm-type { color: #A06FCA; } /**/ .cm-s-yonce .cm-def { color: #98E342; } .cm-s-yonce .cm-property, .cm-s-yonce span.cm-variable { color: #D4D4D4; font-style: italic; } .cm-s-yonce span.cm-variable-2 { color: #da7dae; font-style: italic; } .cm-s-yonce span.cm-variable-3 { color: #A06FCA; } .cm-s-yonce .cm-type.cm-def { color: #FC4384; font-style: normal; text-decoration: underline; } .cm-s-yonce .cm-property.cm-def { color: #FC4384; font-style: normal; } .cm-s-yonce .cm-callee { color: #FC4384; font-style: normal; } .cm-s-yonce .cm-operator { color: #FC4384; } /**/ .cm-s-yonce .cm-qualifier, .cm-s-yonce .cm-tag { color: #FC4384; } .cm-s-yonce .cm-tag.cm-bracket { color: #D4D4D4; } .cm-s-yonce .cm-attribute { color: #A06FCA; } .cm-s-yonce .cm-comment { color:#696d70; font-style:italic; font-weight:normal; } /**/ .cm-s-yonce .cm-comment.cm-tag { color: #FC4384 } .cm-s-yonce .cm-comment.cm-attribute { color: #D4D4D4; } .cm-s-yonce .cm-string { color:#E6DB74; } /**/ .cm-s-yonce .cm-string-2 { color:#F39B35; } /*?*/ .cm-s-yonce .cm-meta { color: #D4D4D4; background: inherit; } .cm-s-yonce .cm-builtin { color: #FC4384; } /*?*/ .cm-s-yonce .cm-header { color: #da7dae; } .cm-s-yonce .cm-hr { color: #98E342; } .cm-s-yonce .cm-link { color:#696d70; font-style:italic; text-decoration:none; } /**/ .cm-s-yonce .cm-error { border-bottom: 1px solid #C42412; } .cm-s-yonce .CodeMirror-activeline-background { background: #272727; } .cm-s-yonce .CodeMirror-matchingbracket { outline:1px solid grey; color:#D4D4D4 !important; } plugins/file-manager-advanced/application/library/codemirror/theme/zenburn.css000064400000003721147176754550023762 0ustar00/** * " * Using Zenburn color palette from the Emacs Zenburn Theme * https://github.com/bbatsov/zenburn-emacs/blob/master/zenburn-theme.el * * Also using parts of https://github.com/xavi/coderay-lighttable-theme * " * From: https://github.com/wisenomad/zenburn-lighttable-theme/blob/master/zenburn.css */ .cm-s-zenburn .CodeMirror-gutters { background: #3f3f3f !important; } .cm-s-zenburn .CodeMirror-foldgutter-open, .CodeMirror-foldgutter-folded { color: #999; } .cm-s-zenburn .CodeMirror-cursor { border-left: 1px solid white; } .cm-s-zenburn.CodeMirror { background-color: #3f3f3f; color: #dcdccc; } .cm-s-zenburn span.cm-builtin { color: #dcdccc; font-weight: bold; } .cm-s-zenburn span.cm-comment { color: #7f9f7f; } .cm-s-zenburn span.cm-keyword { color: #f0dfaf; font-weight: bold; } .cm-s-zenburn span.cm-atom { color: #bfebbf; } .cm-s-zenburn span.cm-def { color: #dcdccc; } .cm-s-zenburn span.cm-variable { color: #dfaf8f; } .cm-s-zenburn span.cm-variable-2 { color: #dcdccc; } .cm-s-zenburn span.cm-string { color: #cc9393; } .cm-s-zenburn span.cm-string-2 { color: #cc9393; } .cm-s-zenburn span.cm-number { color: #dcdccc; } .cm-s-zenburn span.cm-tag { color: #93e0e3; } .cm-s-zenburn span.cm-property { color: #dfaf8f; } .cm-s-zenburn span.cm-attribute { color: #dfaf8f; } .cm-s-zenburn span.cm-qualifier { color: #7cb8bb; } .cm-s-zenburn span.cm-meta { color: #f0dfaf; } .cm-s-zenburn span.cm-header { color: #f0efd0; } .cm-s-zenburn span.cm-operator { color: #f0efd0; } .cm-s-zenburn span.CodeMirror-matchingbracket { box-sizing: border-box; background: transparent; border-bottom: 1px solid; } .cm-s-zenburn span.CodeMirror-nonmatchingbracket { border-bottom: 1px solid; background: none; } .cm-s-zenburn .CodeMirror-activeline { background: #000000; } .cm-s-zenburn .CodeMirror-activeline-background { background: #000000; } .cm-s-zenburn div.CodeMirror-selected { background: #545454; } .cm-s-zenburn .CodeMirror-focused div.CodeMirror-selected { background: #4f4f4f; } plugins/file-manager-advanced/application/library/css/commands.css000064400000046164147176754550021431 0ustar00/******************************************************************/ /* COMMANDS STYLES */ /******************************************************************/ /********************** COMMAND "RESIZE" ****************************/ .elfinder-resize-container { margin-top: .3em; } .elfinder-resize-type { float: left; margin-bottom: .4em; } .elfinder-resize-control { float: left; } .elfinder-resize-control input[type=number] { border: 1px solid #aaa; text-align: right; width: 4.5em; } .elfinder-mobile .elfinder-resize-control input[type=number] { width: 3.5em; } .elfinder-resize-control input.elfinder-resize-bg { text-align: center; width: 5em; direction: ltr; } .elfinder-dialog-resize .elfinder-resize-control-panel { margin-top: 10px; } .elfinder-dialog-resize .elfinder-resize-imgrotate, .elfinder-dialog-resize .elfinder-resize-pallet { cursor: pointer; } .elfinder-dialog-resize .elfinder-resize-picking { cursor: crosshair; } .elfinder-dialog-resize .elfinder-resize-grid8 + button { padding-top: 2px; padding-bottom: 2px; } .elfinder-resize-preview { width: 400px; height: 400px; padding: 10px; background: #fff; border: 1px solid #aaa; float: right; position: relative; overflow: hidden; text-align: left; direction: ltr; } .elfinder-resize-handle { position: relative; } .elfinder-resize-handle-hline, .elfinder-resize-handle-vline { position: absolute; background-image: url("../img/crop.gif"); } .elfinder-resize-handle-hline { width: 100%; height: 1px !important; background-repeat: repeat-x; } .elfinder-resize-handle-vline { width: 1px !important; height: 100%; background-repeat: repeat-y; } .elfinder-resize-handle-hline-top { top: 0; left: 0; } .elfinder-resize-handle-hline-bottom { bottom: 0; left: 0; } .elfinder-resize-handle-vline-left { top: 0; left: 0; } .elfinder-resize-handle-vline-right { top: 0; right: 0; } .elfinder-resize-handle-point { position: absolute; width: 8px; height: 8px; border: 1px solid #777; background: transparent; } .elfinder-resize-handle-point-n { top: 0; left: 50%; margin-top: -5px; margin-left: -5px; } .elfinder-resize-handle-point-ne { top: 0; right: 0; margin-top: -5px; margin-right: -5px; } .elfinder-resize-handle-point-e { top: 50%; right: 0; margin-top: -5px; margin-right: -5px; } .elfinder-resize-handle-point-se { bottom: 0; right: 0; margin-bottom: -5px; margin-right: -5px; } .elfinder-resize-handle-point-s { bottom: 0; left: 50%; margin-bottom: -5px; margin-left: -5px; } .elfinder-resize-handle-point-sw { bottom: 0; left: 0; margin-bottom: -5px; margin-left: -5px; } .elfinder-resize-handle-point-w { top: 50%; left: 0; margin-top: -5px; margin-left: -5px; } .elfinder-resize-handle-point-nw { top: 0; left: 0; margin-top: -5px; margin-left: -5px; } .elfinder-dialog.elfinder-dialog-resize .ui-resizable-e { width: 10px; height: 100%; } .elfinder-dialog.elfinder-dialog-resize .ui-resizable-s { width: 100%; height: 10px; } .elfinder-resize-loading { position: absolute; width: 200px; height: 30px; top: 50%; margin-top: -25px; left: 50%; margin-left: -100px; text-align: center; background: url(../img/progress.gif) center bottom repeat-x; } .elfinder-resize-row { margin-bottom: 9px; position: relative; } .elfinder-resize-label { float: left; width: 80px; padding-top: 3px; } .elfinder-resize-checkbox-label { border: 1px solid transparent; } .elfinder-dialog-resize .elfinder-resize-whctrls { margin: -20px 5px 0 5px; } .elfinder-ltr .elfinder-dialog-resize .elfinder-resize-whctrls { float: right; } .elfinder-rtl .elfinder-dialog-resize .elfinder-resize-whctrls { float: left; } .elfinder-dialog-resize .ui-resizable-e, .elfinder-dialog-resize .ui-resizable-w { height: 100%; width: 10px; } .elfinder-dialog-resize .ui-resizable-s, .elfinder-dialog-resize .ui-resizable-n { width: 100%; height: 10px; } .elfinder-dialog-resize .ui-resizable-e { margin-right: -7px; } .elfinder-dialog-resize .ui-resizable-w { margin-left: -7px; } .elfinder-dialog-resize .ui-resizable-s { margin-bottom: -7px; } .elfinder-dialog-resize .ui-resizable-n { margin-top: -7px; } .elfinder-dialog-resize .ui-resizable-se, .elfinder-dialog-resize .ui-resizable-sw, .elfinder-dialog-resize .ui-resizable-ne, .elfinder-dialog-resize .ui-resizable-nw { width: 10px; height: 10px; } .elfinder-dialog-resize .ui-resizable-se { background: transparent; bottom: 0; right: 0; margin-right: -7px; margin-bottom: -7px; } .elfinder-dialog-resize .ui-resizable-sw { margin-left: -7px; margin-bottom: -7px; } .elfinder-dialog-resize .ui-resizable-ne { margin-right: -7px; margin-top: -7px; } .elfinder-dialog-resize .ui-resizable-nw { margin-left: -7px; margin-top: -7px; } .elfinder-touch .elfinder-dialog-resize .ui-resizable-s, .elfinder-touch .elfinder-dialog-resize .ui-resizable-n { height: 20px; } .elfinder-touch .elfinder-dialog-resize .ui-resizable-e, .elfinder-touch .elfinder-dialog-resize .ui-resizable-w { width: 20px; } .elfinder-touch .elfinder-dialog-resize .ui-resizable-se, .elfinder-touch .elfinder-dialog-resize .ui-resizable-sw, .elfinder-touch .elfinder-dialog-resize .ui-resizable-ne, .elfinder-touch .elfinder-dialog-resize .ui-resizable-nw { width: 30px; height: 30px; } .elfinder-touch .elfinder-dialog-resize .elfinder-resize-preview .ui-resizable-se { width: 30px; height: 30px; margin: 0; } .elfinder-dialog-resize .ui-icon-grip-solid-vertical { position: absolute; top: 50%; right: 0; margin-top: -8px; margin-right: -11px; } .elfinder-dialog-resize .ui-icon-grip-solid-horizontal { position: absolute; left: 50%; bottom: 0; margin-left: -8px; margin-bottom: -11px;; } .elfinder-dialog-resize .elfinder-resize-row .ui-buttonset { float: right; } .elfinder-dialog-resize .elfinder-resize-degree input, .elfinder-dialog-resize input.elfinder-resize-quality { width: 3.5em; } .elfinder-mobile .elfinder-dialog-resize .elfinder-resize-degree input, .elfinder-mobile .elfinder-dialog-resize input.elfinder-resize-quality { width: 2.5em; } .elfinder-dialog-resize .elfinder-resize-degree button.ui-button { padding: 6px 8px; } .elfinder-dialog-resize button.ui-button span { padding: 0; } .elfinder-dialog-resize .elfinder-resize-jpgsize { font-size: 90%; } .ui-widget-content .elfinder-resize-container .elfinder-resize-rotate-slider { width: 195px; margin: 10px 7px; background-color: #fafafa; } .elfinder-dialog-resize .elfinder-resize-type span.ui-checkboxradio-icon { display: none; } .elfinder-resize-preset-container { box-sizing: border-box; border-radius: 5px; } /********************** COMMAND "EDIT" ****************************/ /* edit text file textarea */ .elfinder-file-edit { width: 100%; height: 100%; margin: 0; padding: 2px; border: 1px solid #ccc; box-sizing: border-box; resize: none; } .elfinder-touch .elfinder-file-edit { font-size: 16px; } /* edit area */ .elfinder-dialog-edit .ui-dialog-content.elfinder-edit-editor { background-color: #fff; } .elfinder-dialog-edit .ui-dialog-content.elfinder-edit-editor .elfinder-edit-imageeditor { width: 100%; height: 300px; max-height: 100%; text-align: center; } .elfinder-dialog-edit .ui-dialog-content.elfinder-edit-editor .elfinder-edit-imageeditor * { -webkit-user-select: none; -moz-user-select: none; -khtml-user-select: none; user-select: none; } .elfinder-edit-imageeditor .tui-image-editor-main-container .tui-image-editor-main { top: 0; } .elfinder-edit-imageeditor .tui-image-editor-main-container .tui-image-editor-header { display: none; } .elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-crop .tui-image-editor-wrap, .elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-flip .tui-image-editor-wrap, .elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-rotate .tui-image-editor-wrap, .elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-draw .tui-image-editor-wrap, .elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-shape .tui-image-editor-wrap, .elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-icon .tui-image-editor-wrap, .elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-text .tui-image-editor-wrap, .elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-mask .tui-image-editor-wrap, .elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-filter .tui-image-editor-wrap { height: calc(100% - 150px); } /* bottom margen for softkeyboard on fullscreen mode */ .elfinder-touch.elfinder-fullscreen-native textarea.elfinder-file-edit { padding-bottom: 20em; margin-bottom: -20em; } .elfinder-dialog-edit .ui-dialog-buttonpane .elfinder-dialog-confirm-encoding { font-size: 12px; } .ui-dialog-buttonpane .ui-dialog-buttonset.elfinder-edit-extras { margin: 0 1em 0 .2em; float: left; } .ui-dialog-buttonpane .ui-dialog-buttonset.elfinder-edit-extras-quality { padding-top: 6px; } .ui-dialog-buttonpane .ui-dialog-buttonset.elfinder-edit-extras select { font-size: 12px; margin-top: 8px; } .elfinder-dialog-edit .ui-dialog-buttonpane .ui-icon { cursor: pointer; } .elfinder-edit-spinner { position: absolute; top: 50%; text-align: center; width: 100%; font-size: 16pt; } .elfinder-dialog-edit .elfinder-edit-spinner .elfinder-spinner, .elfinder-dialog-edit .elfinder-edit-spinner .elfinder-spinner-text { float: none; } .elfinder-dialog-edit .elfinder-toast > div { width: 280px; } .elfinder-edit-onlineconvert-button { display: inline-block; width: 180px; min-height: 30px; vertical-align: top; } .elfinder-edit-onlineconvert-button button, .elfinder-edit-onlineconvert-bottom-btn button { cursor: pointer; } .elfinder-edit-onlineconvert-bottom-btn button.elfinder-button-ios-multiline { -webkit-appearance: none; border-radius: 16px; color: #000; text-align: center; padding: 8px; background-color: #eee; background-image: -webkit-linear-gradient(top, hsl(0,0%,98%) 0%,hsl(0,0%,77%) 100%); background-image: linear-gradient(to bottom, hsl(0,0%,98%) 0%,hsl(0,0%,77%) 100%); } .elfinder-edit-onlineconvert-button .elfinder-button-icon { margin: 0 10px; vertical-align: middle; cursor: pointer; } .elfinder-edit-onlineconvert-bottom-btn { text-align: center; margin: 10px 0 0; } .elfinder-edit-onlineconvert-link { margin-top: 1em; text-align: center; } .elfinder-edit-onlineconvert-link .elfinder-button-icon { background-image: url("../img/editor-icons.png"); background-repeat: no-repeat; background-position: 0 -144px; margin-bottom: -3px; } .elfinder-edit-onlineconvert-link a { text-decoration: none; } /********************** COMMAND "SORT" ****************************/ /* for list table header sort triangle icon */ div.elfinder-cwd-wrapper-list tr.ui-state-default td { position: relative; } div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon { position: absolute; top: 4px; left: 0; right: 0; margin: auto 0px auto auto; } .elfinder-touch div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon { top: 7px; } .elfinder-rtl div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon { margin: auto auto auto 0px; } /********************** COMMAND "HELP" ****************************/ /* help dialog */ .elfinder-help { margin-bottom: .5em; -webkit-overflow-scrolling: touch; } /* fix tabs */ .elfinder-help .ui-tabs-panel { padding: .5em; overflow: auto; padding: 10px; } .elfinder-dialog .ui-tabs .ui-tabs-nav li { overflow: hidden; } .elfinder-dialog .ui-tabs .ui-tabs-nav li a { padding: .2em .8em; display: inline-block; } .elfinder-touch .elfinder-dialog .ui-tabs .ui-tabs-nav li a { padding: .5em .5em; } .elfinder-dialog .ui-tabs-active a { background: inherit; } .elfinder-help-shortcuts { height: auto; padding: 10px; margin: 0; box-sizing: border-box; } .elfinder-help-shortcut { white-space: nowrap; clear: both; } .elfinder-help-shortcut-pattern { float: left; width: 160px; } .elfinder-help-logo { width: 100px; height: 96px; float: left; margin-right: 1em; background: url('../img/logo.png') center center no-repeat; } .elfinder-help h3 { font-size: 1.5em; margin: .2em 0 .3em 0; } .elfinder-help-separator { clear: both; padding: .5em; } .elfinder-help-link { display: inline-block; margin-right: 12px; padding: 2px 0; white-space: nowrap; } .elfinder-rtl .elfinder-help-link { margin-right: 0; margin-left: 12px; } .elfinder-help .ui-priority-secondary { font-size: .9em; } .elfinder-help .ui-priority-primary { margin-bottom: 7px; } .elfinder-help-team { clear: both; text-align: right; border-bottom: 1px solid #ccc; margin: .5em 0; font-size: .9em; } .elfinder-help-team div { float: left; } .elfinder-help-license { font-size: .9em; } .elfinder-help-disabled { font-weight: bold; text-align: center; margin: 90px 0; } .elfinder-help .elfinder-dont-panic { display: block; border: 1px solid transparent; width: 200px; height: 200px; margin: 30px auto; text-decoration: none; text-align: center; position: relative; background: #d90004; -moz-box-shadow: 5px 5px 9px #111; -webkit-box-shadow: 5px 5px 9px #111; box-shadow: 5px 5px 9px #111; background: -moz-radial-gradient(80px 80px, circle farthest-corner, #d90004 35%, #960004 100%); background: -webkit-gradient(radial, 80 80, 60, 80 80, 120, from(#d90004), to(#960004)); -moz-border-radius: 100px; -webkit-border-radius: 100px; border-radius: 100px; outline: none; } .elfinder-help .elfinder-dont-panic span { font-size: 3em; font-weight: bold; text-align: center; color: #fff; position: absolute; left: 0; top: 45px; } ul.elfinder-help-integrations ul { margin-bottom: 1em; padding: 0; margin: 0 1em 1em; } ul.elfinder-help-integrations a { text-decoration: none; } ul.elfinder-help-integrations a:hover { text-decoration: underline; } .elfinder-help-debug { height: 100%; padding: 0; margin: 0; overflow: none; border: none; } .elfinder-help-debug .ui-tabs-panel { padding: 0; margin: 0; overflow: auto; } .elfinder-help-debug fieldset { margin-bottom: 10px; border-color: #778899; border-radius: 10px; } .elfinder-help-debug legend { font-size: 1.2em; font-weight: bold; color: #2e8b57; } .elfinder-help-debug dl { margin: 0; } .elfinder-help-debug dt { color: #778899; } .elfinder-help-debug dt:before { content: "["; } .elfinder-help-debug dt:after { content: "]"; } .elfinder-help-debug dd { margin-left: 1em; } .elfinder-help-debug dd span { /*font-size: 1.2em;*/ } /********************** COMMAND "PREFERENCE" ****************************/ .elfinder-dialog .elfinder-preference .ui-tabs-nav { margin-bottom: 1px; height: auto; } /* fix tabs */ .elfinder-preference .ui-tabs-panel { padding: 10px 10px 0; overflow: auto; box-sizing: border-box; -webkit-overflow-scrolling: touch; } .elfinder-preference a.ui-state-hover, .elfinder-preference label.ui-state-hover { border: none; } .elfinder-preference dl { width: 100%; display: inline-block; margin: .5em 0; } .elfinder-preference dt { display: block; width: 200px; clear: left; float: left; max-width: 50%; } .elfinder-rtl .elfinder-preference dt { clear: right; float: right; } .elfinder-preference dd { margin-bottom: 1em; } .elfinder-preference dt label { cursor: pointer; } .elfinder-preference dd label, .elfinder-preference dd input[type=checkbox] { white-space: nowrap; display: inline-block; cursor: pointer; } .elfinder-preference dt.elfinder-preference-checkboxes { width: 100%; max-width: none; } .elfinder-preference dd.elfinder-preference-checkboxes { padding-top: 3ex; } .elfinder-preference select { max-width: 100%; } .elfinder-preference dd.elfinder-preference-iconSize .ui-slider { width: 50%; max-width: 100px; display: inline-block; margin: 0 10px; } .elfinder-preference button { margin: 0 16px; } .elfinder-preference button + button { margin: 0 -10px; } .elfinder-preference .elfinder-preference-taball .elfinder-reference-hide-taball { display: none; } .elfinder-preference-theme fieldset { margin-bottom: 10px; } .elfinder-preference-theme legend a { font-size: 1.8em; text-decoration: none; cursor: pointer; } .elfinder-preference-theme dt { width: 20%; word-break: break-all; } .elfinder-preference-theme dt:after { content: " :"; } .elfinder-preference-theme dd { margin-inline-start: 20%; } .elfinder-preference img.elfinder-preference-theme-image { display: block; margin-left: auto; margin-right: auto; max-width: 90%; max-height: 200px; cursor: pointer; } .elfinder-preference-theme-btn { text-align: center; } .elfinder-preference-theme button.elfinder-preference-theme-default { display: inline; margin: 0 10px; font-size: 8pt; } /********************** COMMAND "INFO" ****************************/ .elfinder-rtl .elfinder-info-title .elfinder-cwd-icon:before { right: 33px; left: auto; } .elfinder-info-title .elfinder-cwd-icon.elfinder-cwd-bgurl:after { content: none; } /********************** COMMAND "UPLOAD" ****************************/ .elfinder-upload-dialog-wrapper .elfinder-upload-dirselect { position: absolute; bottom: 2px; width: 16px; height: 16px; padding: 10px; border: none; overflow: hidden; cursor: pointer; } .elfinder-ltr .elfinder-upload-dialog-wrapper .elfinder-upload-dirselect { left: 2px; } .elfinder-rtl .elfinder-upload-dialog-wrapper .elfinder-upload-dirselect { right: 2px; } /********************** COMMAND "RM" ****************************/ .elfinder-ltr .elfinder-rm-title .elfinder-cwd-icon:before { left: 38px; } .elfinder-rtl .elfinder-rm-title .elfinder-cwd-icon:before { right: 86px; left: auto; } .elfinder-rm-title .elfinder-cwd-icon.elfinder-cwd-bgurl:after { content: none; } /********************** COMMAND "RENAME" ****************************/ .elfinder-rename-batch div { margin: 5px 8px; } .elfinder-rename-batch .elfinder-rename-batch-name input { width: 100%; font-size: 1.6em; } .elfinder-rename-batch-type { text-align: center; } .elfinder-rename-batch .elfinder-rename-batch-type label { margin: 2px; font-size: .9em; } .elfinder-rename-batch-preview { padding: 0 8px; font-size: 1.1em; min-height: 4ex; } plugins/file-manager-advanced/application/library/css/common.css000064400000013253147176754550021111 0ustar00/*********************************************/ /* COMMON ELFINDER STUFFS */ /*********************************************/ /* for old jQuery UI */ .ui-front { z-index: 100; } /* style reset */ div.elfinder *, div.elfinder :after, div.elfinder :before { box-sizing: content-box; } div.elfinder fieldset { display: block; margin-inline-start: 2px; margin-inline-end: 2px; padding-block-start: 0.35em; padding-inline-start: 0.75em; padding-inline-end: 0.75em; padding-block-end: 0.625em; min-inline-size: min-content; border-width: 2px; border-style: groove; border-color: threedface; border-image: initial; } div.elfinder legend { display: block; padding-inline-start: 2px; padding-inline-end: 2px; border-width: initial; border-style: none; border-color: initial; border-image: initial; width: auto; margin-bottom: 0; } /* base container */ div.elfinder { padding: 0; position: relative; display: block; visibility: visible; font-size: 18px; font-family: Verdana, Arial, Helvetica, sans-serif; } /* prevent auto zoom on iOS */ .elfinder-ios input, .elfinder-ios select, .elfinder-ios textarea { font-size: 16px !important; } /* full screen mode */ .elfinder.elfinder-fullscreen > .ui-resizable-handle { display: none; } .elfinder-font-mono { line-height: 2ex; } /* in lazy execution status */ .elfinder.elfinder-processing * { cursor: progress !important } .elfinder.elfinder-processing.elfinder-touch .elfinder-workzone:after { position: absolute; top: 0; width: 100%; height: 3px; content: ''; left: 0; background-image: url(../img/progress.gif); opacity: .6; pointer-events: none; } /* for disable select of Touch devices */ .elfinder *:not(input):not(textarea):not(select):not([contenteditable=true]), .elfinder-contextmenu *:not(input):not(textarea):not(select):not([contenteditable=true]) { -webkit-tap-highlight-color: rgba(0, 0, 0, 0); /*-webkit-touch-callout:none;*/ -webkit-user-select: none; -moz-user-select: none; -khtml-user-select: none; user-select: none; } .elfinder .overflow-scrolling-touch { -webkit-overflow-scrolling: touch; } /* right to left enviroment */ .elfinder-rtl { text-align: right; direction: rtl; } /* nav and cwd container */ .elfinder-workzone { padding: 0; position: relative; overflow: hidden; } /* dir/file permissions and symlink markers */ .elfinder-lock, .elfinder-perms, .elfinder-symlink { position: absolute; width: 16px; height: 16px; background-image: url(../img/toolbar.png); background-repeat: no-repeat; background-position: 0 -528px; } .elfinder-symlink { } /* noaccess */ .elfinder-na .elfinder-perms { background-position: 0 -96px; } /* read only */ .elfinder-ro .elfinder-perms { background-position: 0 -64px; } /* write only */ .elfinder-wo .elfinder-perms { background-position: 0 -80px; } /* volume type group */ .elfinder-group .elfinder-perms { background-position: 0 0px; } /* locked */ .elfinder-lock { background-position: 0 -656px; } /* drag helper */ .elfinder-drag-helper { top: 0px; left: 0px; width: 70px; height: 60px; padding: 0 0 0 25px; z-index: 100000; will-change: left, top; } .elfinder-drag-helper.html5-native { position: absolute; top: -1000px; left: -1000px; } /* drag helper status icon (default no-drop) */ .elfinder-drag-helper-icon-status { position: absolute; width: 16px; height: 16px; left: 42px; top: 60px; background: url('../img/toolbar.png') 0 -96px no-repeat; display: block; } /* show "up-arrow" icon for move item */ .elfinder-drag-helper-move .elfinder-drag-helper-icon-status { background-position: 0 -720px; } /* show "plus" icon when ctrl/shift pressed */ .elfinder-drag-helper-plus .elfinder-drag-helper-icon-status { background-position: 0 -544px; } /* files num in drag helper */ .elfinder-drag-num { display: inline-box; position: absolute; top: 0; left: 0; width: auto; height: 14px; text-align: center; padding: 1px 3px 1px 3px; font-weight: bold; color: #fff; background-color: red; -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; } /* icon in drag helper */ .elfinder-drag-helper .elfinder-cwd-icon { margin: 0 0 0 -24px; float: left; } /* transparent overlay */ .elfinder-overlay { position: absolute; opacity: .2; filter: Alpha(Opacity=20); } /* panels under/below cwd (for search field etc) */ .elfinder .elfinder-panel { position: relative; background-image: none; padding: 7px 12px; } /* for html5 drag and drop */ [draggable=true] { -khtml-user-drag: element; } /* for place holder to content editable elements */ .elfinder [contentEditable=true]:empty:not(:focus):before { content: attr(data-ph); } /* bottom tray */ .elfinder div.elfinder-bottomtray { position: fixed; bottom: 0; max-width: 100%; opacity: .8; } .elfinder div.elfinder-bottomtray > div { top: initial; right: initial; left: initial; } .elfinder.elfinder-ltr div.elfinder-bottomtray { left: 0; } .elfinder.elfinder-rtl div.elfinder-bottomtray { right: 0; } /* tooltip */ .elfinder-ui-tooltip, .elfinder .elfinder-ui-tooltip { font-size: 14px; padding: 2px 4px; } /* progressbar */ .elfinder-ui-progressbar { pointer-events: none; position: absolute; width: 0; height: 2px; top: 0px; border-radius: 2px; filter: blur(1px); } .elfinder-ltr .elfinder-ui-progressbar { left: 0; } .elfinder-rtl .elfinder-ui-progressbar { right: 0; }plugins/file-manager-advanced/application/library/css/contextmenu.css000064400000013372147176754550022174 0ustar00/* menu and submenu */ .elfinder .elfinder-contextmenu, .elfinder .elfinder-contextmenu-sub { position: absolute; border: 1px solid #aaa; background: #fff; color: #555; padding: 4px 0; top: 0; left: 0; } /* submenu */ .elfinder .elfinder-contextmenu-sub { top: 5px; } /* submenu in rtl/ltr enviroment */ .elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-sub { margin-left: -5px; } .elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-sub { margin-right: -5px; } /* menu item */ .elfinder .elfinder-contextmenu-header { margin-top: -4px; padding: 0 .5em .2ex; border: none; text-align: center; } .elfinder .elfinder-contextmenu-header span { font-weight: normal; font-size: 0.8em; font-weight: bolder; } .elfinder .elfinder-contextmenu-item { position: relative; display: block; padding: 4px 30px; text-decoration: none; white-space: nowrap; cursor: default; } .elfinder .elfinder-contextmenu-item.ui-state-active { border: none; } .elfinder .elfinder-contextmenu-item .ui-icon { width: 16px; height: 16px; position: absolute; left: auto; right: auto; top: 50%; margin-top: -8px; } .elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-item .ui-icon { left: 2px; } .elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-item .ui-icon { right: 2px; } .elfinder-touch .elfinder-contextmenu-item { padding: 12px 38px; } /* root icon of each volume */ .elfinder-navbar-root-local.elfinder-contextmenu-icon { background-image: url("../img/volume_icon_local.svg"); background-size: contain; } .elfinder-navbar-root-trash.elfinder-contextmenu-icon { background-image: url("../img/volume_icon_trash.svg"); background-size: contain; } .elfinder-navbar-root-ftp.elfinder-contextmenu-icon { background-image: url("../img/volume_icon_ftp.svg"); background-size: contain; } .elfinder-navbar-root-sql.elfinder-contextmenu-icon { background-image: url("../img/volume_icon_sql.svg"); background-size: contain; } .elfinder-navbar-root-dropbox.elfinder-contextmenu-icon { background-image: url("../img/volume_icon_dropbox.svg"); background-size: contain; } .elfinder-navbar-root-googledrive.elfinder-contextmenu-icon { background-image: url("../img/volume_icon_googledrive.svg"); background-size: contain; } .elfinder-navbar-root-onedrive.elfinder-contextmenu-icon { background-image: url("../img/volume_icon_onedrive.svg"); background-size: contain; } .elfinder-navbar-root-box.elfinder-contextmenu-icon { background-image: url("../img/volume_icon_box.svg"); background-size: contain; } .elfinder-navbar-root-zip.elfinder-contextmenu-icon { background-image: url("../img/volume_icon_zip.svg"); background-size: contain; } .elfinder-navbar-root-network.elfinder-contextmenu-icon { background-image: url("../img/volume_icon_network.svg"); background-size: contain; } /* text in item */ .elfinder .elfinder-contextmenu .elfinder-contextmenu-item span { display: block; } /* submenu item in rtl/ltr enviroment */ .elfinder .elfinder-contextmenu-sub .elfinder-contextmenu-item { padding-left: 12px; padding-right: 12px; } .elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-item { text-align: left; } .elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-item { text-align: right; } .elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-sub .elfinder-contextsubmenu-item-icon { padding-left: 28px; } .elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-sub .elfinder-contextsubmenu-item-icon { padding-right: 28px; } .elfinder-touch .elfinder-contextmenu-ltr .elfinder-contextmenu-sub .elfinder-contextsubmenu-item-icon { padding-left: 36px; } .elfinder-touch .elfinder-contextmenu-rtl .elfinder-contextmenu-sub .elfinder-contextsubmenu-item-icon { padding-right: 36px; } /* command/submenu icon */ .elfinder .elfinder-contextmenu-extra-icon, .elfinder .elfinder-contextmenu-arrow, .elfinder .elfinder-contextmenu-icon { position: absolute; top: 50%; margin-top: -8px; overflow: hidden; } .elfinder-touch .elfinder-button-icon.elfinder-contextmenu-icon { transform-origin: center center; } /* command icon in rtl/ltr enviroment */ .elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-icon { left: 8px; } .elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-icon { right: 8px; } .elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-extra-icon { right: 8px; } .elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-extra-icon { left: 8px; } /* arrow icon */ .elfinder .elfinder-contextmenu-arrow { width: 16px; height: 16px; background: url('../img/arrows-normal.png') 5px 4px no-repeat; } /* arrow icon in rtl/ltr enviroment */ .elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-arrow { right: 5px; } .elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-arrow { left: 5px; background-position: 0 -10px; } /* command extra icon's , tag */ .elfinder .elfinder-contextmenu-extra-icon a, .elfinder .elfinder-contextmenu-extra-icon span { position: relative; width: 100%; height: 100%; margin: 0; color: transparent !important; text-decoration: none; cursor: pointer; } /* disable ui border/bg image on hover */ .elfinder .elfinder-contextmenu .ui-state-hover { border: 0 solid; background-image: none; } /* separator */ .elfinder .elfinder-contextmenu-separator { height: 0px; border-top: 1px solid #ccc; margin: 0 1px; } /* for CSS style priority to ui-state-disabled - "background-image: none" */ .elfinder .elfinder-contextmenu-item .elfinder-button-icon.ui-state-disabled { background-image: url('../img/toolbar.png'); } plugins/file-manager-advanced/application/library/css/custom_style_filemanager_advanced.css000064400000000314147176754550026524 0ustar00.ui-dialog.ui-widget.ui-widget-content.ui-corner-all.ui-draggable.std42-dialog.touch-punch.elfinder-dialog.ui-resizable.elfinder-dialog-active.ui-front { left: 0 !important; width: 100% !important; } plugins/file-manager-advanced/application/library/css/cwd.css000064400000105304147176754550020375 0ustar00/******************************************************************/ /* CURRENT DIRECTORY STYLES */ /******************************************************************/ /* cwd container to avoid selectable on scrollbar */ .elfinder-cwd-wrapper { overflow: auto; position: relative; padding: 2px; margin: 0; } .elfinder-cwd-wrapper-list { padding: 0; } /* container */ .elfinder-cwd { position: absolute; top: 0; cursor: default; padding: 0; margin: 0; -ms-touch-action: auto; touch-action: auto; min-width: 100%; } .elfinder-ltr .elfinder-cwd { left: 0; } .elfinder-rtl .elfinder-cwd { right: 0; } .elfinder-cwd.elfinder-table-header-sticky { position: -webkit-sticky; position: -ms-sticky; position: sticky; top: 0; left: auto; right: auto; width: -webkit-max-content; width: -moz-max-content; width: -ms-max-content; width: max-content; height: 0; overflow: visible; } .elfinder-cwd.elfinder-table-header-sticky table { border-top: 2px solid; padding-top: 0; } .elfinder-cwd.elfinder-table-header-sticky td { display: inline-block; } .elfinder-droppable-active .elfinder-cwd.elfinder-table-header-sticky table { border-top: 2px solid transparent; } /* fixed table header container */ .elfinder-cwd-fixheader .elfinder-cwd { position: relative; } /* container active on dropenter */ .elfinder .elfinder-cwd-wrapper.elfinder-droppable-active { outline: 2px solid #8cafed; outline-offset: -2px; } .elfinder-cwd-wrapper-empty .elfinder-cwd:after { display: block; position: absolute; height: auto; width: 90%; width: calc(100% - 20px); position: absolute; top: 50%; left: 50%; -ms-transform: translateY(-50%) translateX(-50%); -webkit-transform: translateY(-50%) translateX(-50%); transform: translateY(-50%) translateX(-50%); line-height: 1.5em; text-align: center; white-space: pre-wrap; opacity: 0.6; filter: Alpha(Opacity=60); font-weight: bold; } .elfinder-cwd-file .elfinder-cwd-select { position: absolute; top: 0px; left: 0px; background-color: transparent; opacity: .4; filter: Alpha(Opacity=40); } .elfinder-mobile .elfinder-cwd-file .elfinder-cwd-select { width: 30px; height: 30px; } .elfinder-cwd-file.ui-selected .elfinder-cwd-select { opacity: .8; filter: Alpha(Opacity=80); } .elfinder-rtl .elfinder-cwd-file .elfinder-cwd-select { left: auto; right: 0px; } .elfinder .elfinder-cwd-selectall { position: absolute; width: 30px; height: 30px; top: 0px; opacity: .8; filter: Alpha(Opacity=80); } .elfinder .elfinder-workzone.elfinder-cwd-wrapper-empty .elfinder-cwd-selectall { display: none; } /************************** ICONS VIEW ********************************/ .elfinder-ltr .elfinder-workzone .elfinder-cwd-selectall { text-align: right; right: 18px; left: auto; } .elfinder-rtl .elfinder-workzone .elfinder-cwd-selectall { text-align: left; right: auto; left: 18px; } .elfinder-ltr.elfinder-mobile .elfinder-workzone .elfinder-cwd-selectall { right: 0px; } .elfinder-rtl.elfinder-mobile .elfinder-workzone .elfinder-cwd-selectall { left: 0px; } .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-select.ui-state-hover { background-color: transparent; } /* file container */ .elfinder-cwd-view-icons .elfinder-cwd-file { width: 120px; height: 90px; padding-bottom: 2px; cursor: default; border: none; position: relative; } .elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-active { border: none; } /* ltr/rtl enviroment */ .elfinder-ltr .elfinder-cwd-view-icons .elfinder-cwd-file { float: left; margin: 0 3px 2px 0; } .elfinder-rtl .elfinder-cwd-view-icons .elfinder-cwd-file { float: right; margin: 0 0 5px 3px; } /* remove ui hover class border */ .elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-hover { border: 0 solid; } /* icon wrapper to create selected highlight around icon */ .elfinder-cwd-view-icons .elfinder-cwd-file-wrapper { width: 52px; height: 52px; margin: 1px auto 1px auto; padding: 2px; position: relative; } /*** Custom Icon Size size1 - size3 ***/ /* type badge */ .elfinder-cwd-size1 .elfinder-cwd-icon:before, .elfinder-cwd-size2 .elfinder-cwd-icon:before, .elfinder-cwd-size3 .elfinder-cwd-icon:before { top: 3px; display: block; } /* size1 */ .elfinder-cwd-size1.elfinder-cwd-view-icons .elfinder-cwd-file { width: 120px; height: 112px; } .elfinder-cwd-size1.elfinder-cwd-view-icons .elfinder-cwd-file-wrapper { width: 74px; height: 74px; } .elfinder-cwd-size1 .elfinder-cwd-icon { -ms-transform-origin: top center; -ms-transform: scale(1.5); -webkit-transform-origin: top center; -webkit-transform: scale(1.5); transform-origin: top center; transform: scale(1.5); } .elfinder-cwd-size1 .elfinder-cwd-icon.elfinder-cwd-bgurl:before { -ms-transform-origin: top left; -ms-transform: scale(1.35) translate(-4px, 15%); -webkit-transform-origin: top left; -webkit-transform: scale(1.35) translate(-4px, 15%); transform-origin: top left; transform: scale(1.35) translate(-4px, 15%); } .elfinder-cwd-size1 .elfinder-cwd-icon.elfinder-cwd-bgurl:after { -ms-transform: scale(1) translate(10px, -5px); -webkit-transform: scale(1) translate(10px, -5px); transform: scale(1) translate(10px, -5px); } .elfinder-cwd-size1 .elfinder-cwd-icon.elfinder-cwd-bgurl { -ms-transform-origin: center center; -ms-transform: scale(1); -webkit-transform-origin: center center; -webkit-transform: scale(1); transform-origin: center center; transform: scale(1); width: 72px; height: 72px; -moz-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px; } /* size2 */ .elfinder-cwd-size2.elfinder-cwd-view-icons .elfinder-cwd-file { width: 140px; height: 134px; } .elfinder-cwd-size2.elfinder-cwd-view-icons .elfinder-cwd-file-wrapper { width: 98px; height: 98px; } .elfinder-cwd-size2 .elfinder-cwd-icon { -ms-transform-origin: top center; -ms-transform: scale(2); -webkit-transform-origin: top center; -webkit-transform: scale(2); transform-origin: top center; transform: scale(2); } .elfinder-cwd-size2 .elfinder-cwd-icon.elfinder-cwd-bgurl:before { -ms-transform-origin: top left; -ms-transform: scale(1.8) translate(-5px, 18%); -webkit-transform-origin: top left; -webkit-transform: scale(1.8) translate(-5px, 18%); transform-origin: top left; transform: scale(1.8) translate(-5px, 18%); } .elfinder-cwd-size2 .elfinder-cwd-icon.elfinder-cwd-bgurl:after { -ms-transform: scale(1.1) translate(0px, 10px); -webkit-transform: scale(1.1) translate(0px, 10px); transform: scale(1.1) translate(0px, 10px); } .elfinder-cwd-size2 .elfinder-cwd-icon.elfinder-cwd-bgurl { -ms-transform-origin: center center; -ms-transform: scale(1); -webkit-transform-origin: center center; -webkit-transform: scale(1); transform-origin: center center; transform: scale(1); width: 96px; height: 96px; -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; } /* size3 */ .elfinder-cwd-size3.elfinder-cwd-view-icons .elfinder-cwd-file { width: 174px; height: 158px; } .elfinder-cwd-size3.elfinder-cwd-view-icons .elfinder-cwd-file-wrapper { width: 122px; height: 122px; } .elfinder-cwd-size3 .elfinder-cwd-icon { -ms-transform-origin: top center; -ms-transform: scale(2.5); -webkit-transform-origin: top center; -webkit-transform: scale(2.5); transform-origin: top center; transform: scale(2.5); } .elfinder-cwd-size3 .elfinder-cwd-icon.elfinder-cwd-bgurl:before { -ms-transform-origin: top left; -ms-transform: scale(2.25) translate(-6px, 20%); -webkit-transform-origin: top left; -webkit-transform: scale(2.25) translate(-6px, 20%); transform-origin: top left; transform: scale(2.25) translate(-6px, 20%); } .elfinder-cwd-size3 .elfinder-cwd-icon.elfinder-cwd-bgurl:after { -ms-transform: scale(1.2) translate(-9px, 22px); -webkit-transform: scale(1.2) translate(-9px, 22px); transform: scale(1.2) translate(-9px, 22px); } .elfinder-cwd-size3 .elfinder-cwd-icon.elfinder-cwd-bgurl { -ms-transform-origin: center center; -ms-transform: scale(1); -webkit-transform-origin: center center; -webkit-transform: scale(1); transform-origin: center center; transform: scale(1); width: 120px; height: 120px; -moz-border-radius: 10px; -webkit-border-radius: 10px; border-radius: 10px; } /* file name place */ .elfinder-cwd-view-icons .elfinder-cwd-filename { text-align: center; max-height: 2.4em; line-height: 1.2em; white-space: pre-line; overflow: hidden; text-overflow: ellipsis; -o-text-overflow: ellipsis; margin: 3px 1px 0 1px; padding: 1px; -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; /* for webkit CSS3 */ word-break: break-word; overflow-wrap: break-word; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; } /* permissions/symlink markers */ .elfinder-cwd-view-icons .elfinder-perms { bottom: 4px; right: 2px; } .elfinder-cwd-view-icons .elfinder-lock { top: -3px; right: -2px; } .elfinder-cwd-view-icons .elfinder-symlink { bottom: 6px; left: 0px; } /* icon/thumbnail */ .elfinder-cwd-icon { display: block; width: 48px; height: 48px; margin: 0 auto; background-image: url('../img/icons-big.svg'); background-image: url('../img/icons-big.png') \9; background-position: 0 0; background-repeat: no-repeat; -moz-background-clip: padding; -webkit-background-clip: padding-box; background-clip: padding-box; } /* volume icon of root in folder */ .elfinder-navbar-root-local .elfinder-cwd-icon, .elfinder-cwd .elfinder-navbar-root-local.elfinder-droppable-active .elfinder-cwd-icon, .elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon { background-image: url("../img/volume_icon_local.svg"); background-image: url("../img/volume_icon_local.png") \9; background-position: 0 0; background-size: contain; } .elfinder-cwd .elfinder-navbar-root-local.elfinder-droppable-active .elfinder-cwd-icon { background-position: 1px -1px; } .elfinder-navbar-root-trash .elfinder-cwd-icon, .elfinder-cwd .elfinder-navbar-root-trash.elfinder-droppable-active .elfinder-cwd-icon, .elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon { background-image: url("../img/volume_icon_trash.svg"); background-image: url("../img/volume_icon_trash.png") \9; background-position: 0 0; background-size: contain; } .elfinder-cwd .elfinder-navbar-root-trash.elfinder-droppable-active .elfinder-cwd-icon { background-position: 1px -1px; } .elfinder-navbar-root-ftp .elfinder-cwd-icon, .elfinder-cwd .elfinder-navbar-root-ftp.elfinder-droppable-active .elfinder-cwd-icon, .elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon { background-image: url("../img/volume_icon_ftp.svg"); background-image: url("../img/volume_icon_ftp.png") \9; background-position: 0 0; background-size: contain; } .elfinder-cwd .elfinder-navbar-root-ftp.elfinder-droppable-active .elfinder-cwd-icon { background-position: 1px -1px; } .elfinder-navbar-root-sql .elfinder-cwd-icon, .elfinder-cwd .elfinder-navbar-root-sql.elfinder-droppable-active .elfinder-cwd-icon, .elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon { background-image: url("../img/volume_icon_sql.svg"); background-image: url("../img/volume_icon_sql.png") \9; background-position: 0 0; background-size: contain; } .elfinder-cwd .elfinder-navbar-root-sql.elfinder-droppable-active .elfinder-cwd-icon { background-position: 1px -1px; } .elfinder-navbar-root-dropbox .elfinder-cwd-icon, .elfinder-cwd .elfinder-navbar-root-dropbox.elfinder-droppable-active .elfinder-cwd-icon, .elfinder-cwd-view-list .elfinder-navbar-root-dropbox td .elfinder-cwd-icon { background-image: url("../img/volume_icon_dropbox.svg"); background-image: url("../img/volume_icon_dropbox.png") \9; background-position: 0 0; background-size: contain; } .elfinder-cwd .elfinder-navbar-root-dropbox.elfinder-droppable-active .elfinder-cwd-icon { background-position: 1px -1px; } .elfinder-navbar-root-googledrive .elfinder-cwd-icon, .elfinder-cwd .elfinder-navbar-root-googledrive.elfinder-droppable-active .elfinder-cwd-icon, .elfinder-cwd-view-list .elfinder-navbar-root-googledrive td .elfinder-cwd-icon { background-image: url("../img/volume_icon_googledrive.svg"); background-image: url("../img/volume_icon_googledrive.png") \9; background-position: 0 0; background-size: contain; } .elfinder-navbar-root-onedrive .elfinder-cwd-icon, .elfinder-cwd .elfinder-navbar-root-onedrive.elfinder-droppable-active .elfinder-cwd-icon, .elfinder-cwd-view-list .elfinder-navbar-root-onedrive td .elfinder-cwd-icon { background-image: url("../img/volume_icon_onedrive.svg"); background-image: url("../img/volume_icon_onedrive.png") \9; background-position: 0 0; background-size: contain; } .elfinder-navbar-root-box .elfinder-cwd-icon, .elfinder-cwd .elfinder-navbar-root-box.elfinder-droppable-active .elfinder-cwd-icon, .elfinder-cwd-view-list .elfinder-navbar-root-box td .elfinder-cwd-icon { background-image: url("../img/volume_icon_box.svg"); background-image: url("../img/volume_icon_box.png") \9; background-position: 0 0; background-size: contain; } .elfinder-navbar-root-zip .elfinder-cwd-icon, .elfinder-cwd .elfinder-navbar-root-zip.elfinder-droppable-active .elfinder-cwd-icon, .elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon { background-image: url("../img/volume_icon_zip.svg"); background-image: url("../img/volume_icon_zip.png") \9; background-position: 0 0; background-size: contain; } .elfinder-cwd .elfinder-navbar-root-googledrive.elfinder-droppable-active .elfinder-cwd-icon, .elfinder-cwd .elfinder-navbar-root-onedrive.elfinder-droppable-active .elfinder-cwd-icon, .elfinder-cwd .elfinder-navbar-root-box.elfinder-droppable-active .elfinder-cwd-icon { background-position: 1px -1px; } .elfinder-navbar-root-network .elfinder-cwd-icon, .elfinder-cwd .elfinder-navbar-root-network.elfinder-droppable-active .elfinder-cwd-icon, .elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon { background-image: url("../img/volume_icon_network.svg"); background-image: url("../img/volume_icon_network.png") \9; background-position: 0 0; background-size: contain; } .elfinder-cwd .elfinder-navbar-root-network.elfinder-droppable-active .elfinder-cwd-icon { background-position: 1px -1px; } /* type badge in "icons" view */ .elfinder-cwd-icon:before { content: none; position: absolute; left: 0px; top: 5px; min-width: 20px; max-width: 84px; text-align: center; padding: 0px 4px 1px; border-radius: 4px; font-family: Verdana; font-size: 10px; line-height: 1.3em; -webkit-transform: scale(0.9); -moz-transform: scale(0.9); -ms-transform: scale(0.9); -o-transform: scale(0.9); transform: scale(0.9); } .elfinder-cwd-view-icons .elfinder-cwd-icon.elfinder-cwd-bgurl:before { left: -10px; } /* addtional type badge name */ .elfinder-cwd-icon.elfinder-cwd-icon-mp2t:before { content: 'ts' } .elfinder-cwd-icon.elfinder-cwd-icon-dash-xml:before { content: 'dash' } .elfinder-cwd-icon.elfinder-cwd-icon-x-mpegurl:before { content: 'hls' } .elfinder-cwd-icon.elfinder-cwd-icon-x-c:before { content: 'c++' } /* thumbnail image */ .elfinder-cwd-icon.elfinder-cwd-bgurl { background-position: center center; background-repeat: no-repeat; -moz-background-size: contain; background-size: contain; } /* thumbnail self */ .elfinder-cwd-icon.elfinder-cwd-bgurl.elfinder-cwd-bgself { -moz-background-size: cover; background-size: cover; } /* thumbnail crop*/ .elfinder-cwd-icon.elfinder-cwd-bgurl { -moz-background-size: cover; background-size: cover; } .elfinder-cwd-icon.elfinder-cwd-bgurl:after { content: ' '; } .elfinder-cwd-bgurl:after { position: relative; display: inline-block; top: 36px; left: -38px; width: 48px; height: 48px; background-image: url('../img/icons-big.svg'); background-image: url('../img/icons-big.png') \9; background-repeat: no-repeat; background-size: auto !important; opacity: .8; filter: Alpha(Opacity=60); -webkit-transform-origin: 54px -24px; -webkit-transform: scale(.6); -moz-transform-origin: 54px -24px; -moz-transform: scale(.6); -ms-transform-origin: 54px -24px; -ms-transform: scale(.6); -o-transform-origin: 54px -24px; -o-transform: scale(.6); transform-origin: 54px -24px; transform: scale(.6); } /* thumbnail image and draging icon */ .elfinder-cwd-icon.elfinder-cwd-icon-drag { width: 48px; height: 48px; } /* thumbnail image and draging icon overlay none */ .elfinder-cwd-icon.elfinder-cwd-icon-drag:before, .elfinder-cwd-icon.elfinder-cwd-icon-drag:after, .elfinder-cwd-icon-image.elfinder-cwd-bgurl:after, .elfinder-cwd-icon-directory.elfinder-cwd-bgurl:after { content: none; } /* "opened folder" icon on dragover */ .elfinder-cwd .elfinder-droppable-active .elfinder-cwd-icon { background-position: 0 -100px; } .elfinder-cwd .elfinder-droppable-active { outline: 2px solid #8cafed; outline-offset: -2px; } /* mimetypes icons */ .elfinder-cwd-icon-directory { background-position: 0 -50px; } .elfinder-cwd-icon-application:after, .elfinder-cwd-icon-application { background-position: 0 -150px; } .elfinder-cwd-icon-text:after, .elfinder-cwd-icon-text { background-position: 0 -1350px; } .elfinder-cwd-icon-plain:after, .elfinder-cwd-icon-plain, .elfinder-cwd-icon-x-empty:after, .elfinder-cwd-icon-x-empty { background-position: 0 -200px; } .elfinder-cwd-icon-image:after, .elfinder-cwd-icon-vnd-adobe-photoshop:after, .elfinder-cwd-icon-image, .elfinder-cwd-icon-vnd-adobe-photoshop { background-position: 0 -250px; } .elfinder-cwd-icon-postscript:after, .elfinder-cwd-icon-postscript { background-position: 0 -1550px; } .elfinder-cwd-icon-audio:after, .elfinder-cwd-icon-audio { background-position: 0 -300px; } .elfinder-cwd-icon-video:after, .elfinder-cwd-icon-video, .elfinder-cwd-icon-flash-video, .elfinder-cwd-icon-dash-xml, .elfinder-cwd-icon-vnd-apple-mpegurl, .elfinder-cwd-icon-x-mpegurl { background-position: 0 -350px; } .elfinder-cwd-icon-rtf:after, .elfinder-cwd-icon-rtfd:after, .elfinder-cwd-icon-rtf, .elfinder-cwd-icon-rtfd { background-position: 0 -400px; } .elfinder-cwd-icon-pdf:after, .elfinder-cwd-icon-pdf { background-position: 0 -450px; } .elfinder-cwd-icon-ms-excel, .elfinder-cwd-icon-ms-excel:after, .elfinder-cwd-icon-vnd-ms-excel, .elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12, .elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12:after, .elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12, .elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12:after, .elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12, .elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12:after, .elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12, .elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12:after, .elfinder-cwd-icon-vnd-ms-excel:after, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-sheet, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-sheet:after, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-template, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-template:after { background-position: 0 -1450px } .elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet, .elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet-template, .elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet-template:after, .elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet:after { background-position: 0 -1700px } .elfinder-cwd-icon-vnd-ms-powerpoint, .elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12, .elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12:after, .elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12, .elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12:after, .elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12, .elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12:after, .elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12, .elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12:after, .elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12, .elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12:after, .elfinder-cwd-icon-vnd-ms-powerpoint:after, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-presentation, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-presentation:after, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slide, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slide:after, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slideshow, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slideshow:after, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-template, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-template:after { background-position: 0 -1400px } .elfinder-cwd-icon-vnd-oasis-opendocument-presentation, .elfinder-cwd-icon-vnd-oasis-opendocument-presentation-template, .elfinder-cwd-icon-vnd-oasis-opendocument-presentation-template:after, .elfinder-cwd-icon-vnd-oasis-opendocument-presentation:after { background-position: 0 -1650px } .elfinder-cwd-icon-msword, .elfinder-cwd-icon-msword:after, .elfinder-cwd-icon-vnd-ms-word, .elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12, .elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12:after, .elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12, .elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12:after, .elfinder-cwd-icon-vnd-ms-word:after, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-document, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-document:after, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-template, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-template:after { background-position: 0 -1500px } .elfinder-cwd-icon-vnd-oasis-opendocument-text, .elfinder-cwd-icon-vnd-oasis-opendocument-text-master, .elfinder-cwd-icon-vnd-oasis-opendocument-text-master:after, .elfinder-cwd-icon-vnd-oasis-opendocument-text-template, .elfinder-cwd-icon-vnd-oasis-opendocument-text-template:after, .elfinder-cwd-icon-vnd-oasis-opendocument-text-web, .elfinder-cwd-icon-vnd-oasis-opendocument-text-web:after, .elfinder-cwd-icon-vnd-oasis-opendocument-text:after { background-position: 0 -1750px } .elfinder-cwd-icon-vnd-ms-office, .elfinder-cwd-icon-vnd-ms-office:after { background-position: 0 -500px } .elfinder-cwd-icon-vnd-oasis-opendocument-chart, .elfinder-cwd-icon-vnd-oasis-opendocument-chart:after, .elfinder-cwd-icon-vnd-oasis-opendocument-database, .elfinder-cwd-icon-vnd-oasis-opendocument-database:after, .elfinder-cwd-icon-vnd-oasis-opendocument-formula, .elfinder-cwd-icon-vnd-oasis-opendocument-formula:after, .elfinder-cwd-icon-vnd-oasis-opendocument-graphics, .elfinder-cwd-icon-vnd-oasis-opendocument-graphics-template, .elfinder-cwd-icon-vnd-oasis-opendocument-graphics-template:after, .elfinder-cwd-icon-vnd-oasis-opendocument-graphics:after, .elfinder-cwd-icon-vnd-oasis-opendocument-image, .elfinder-cwd-icon-vnd-oasis-opendocument-image:after, .elfinder-cwd-icon-vnd-openofficeorg-extension, .elfinder-cwd-icon-vnd-openofficeorg-extension:after { background-position: 0 -1600px } .elfinder-cwd-icon-html:after, .elfinder-cwd-icon-html { background-position: 0 -550px; } .elfinder-cwd-icon-css:after, .elfinder-cwd-icon-css { background-position: 0 -600px; } .elfinder-cwd-icon-javascript:after, .elfinder-cwd-icon-x-javascript:after, .elfinder-cwd-icon-javascript, .elfinder-cwd-icon-x-javascript { background-position: 0 -650px; } .elfinder-cwd-icon-x-perl:after, .elfinder-cwd-icon-x-perl { background-position: 0 -700px; } .elfinder-cwd-icon-x-python:after, .elfinder-cwd-icon-x-python { background-position: 0 -750px; } .elfinder-cwd-icon-x-ruby:after, .elfinder-cwd-icon-x-ruby { background-position: 0 -800px; } .elfinder-cwd-icon-x-sh:after, .elfinder-cwd-icon-x-shellscript:after, .elfinder-cwd-icon-x-sh, .elfinder-cwd-icon-x-shellscript { background-position: 0 -850px; } .elfinder-cwd-icon-x-c:after, .elfinder-cwd-icon-x-csrc:after, .elfinder-cwd-icon-x-chdr:after, .elfinder-cwd-icon-x-c--:after, .elfinder-cwd-icon-x-c--src:after, .elfinder-cwd-icon-x-c--hdr:after, .elfinder-cwd-icon-x-java:after, .elfinder-cwd-icon-x-java-source:after, .elfinder-cwd-icon-x-c, .elfinder-cwd-icon-x-csrc, .elfinder-cwd-icon-x-chdr, .elfinder-cwd-icon-x-c--, .elfinder-cwd-icon-x-c--src, .elfinder-cwd-icon-x-c--hdr, .elfinder-cwd-icon-x-java, .elfinder-cwd-icon-x-java-source { background-position: 0 -900px; } .elfinder-cwd-icon-x-php:after, .elfinder-cwd-icon-x-php { background-position: 0 -950px; } .elfinder-cwd-icon-xml:after, .elfinder-cwd-icon-xml { background-position: 0 -1000px; } .elfinder-cwd-icon-zip:after, .elfinder-cwd-icon-x-zip:after, .elfinder-cwd-icon-x-xz:after, .elfinder-cwd-icon-x-7z-compressed:after, .elfinder-cwd-icon-zip, .elfinder-cwd-icon-x-zip, .elfinder-cwd-icon-x-xz, .elfinder-cwd-icon-x-7z-compressed { background-position: 0 -1050px; } .elfinder-cwd-icon-x-gzip:after, .elfinder-cwd-icon-x-tar:after, .elfinder-cwd-icon-x-gzip, .elfinder-cwd-icon-x-tar { background-position: 0 -1100px; } .elfinder-cwd-icon-x-bzip:after, .elfinder-cwd-icon-x-bzip2:after, .elfinder-cwd-icon-x-bzip, .elfinder-cwd-icon-x-bzip2 { background-position: 0 -1150px; } .elfinder-cwd-icon-x-rar:after, .elfinder-cwd-icon-x-rar-compressed:after, .elfinder-cwd-icon-x-rar, .elfinder-cwd-icon-x-rar-compressed { background-position: 0 -1200px; } .elfinder-cwd-icon-x-shockwave-flash:after, .elfinder-cwd-icon-x-shockwave-flash { background-position: 0 -1250px; } .elfinder-cwd-icon-group { background-position: 0 -1300px; } /* textfield inside icon */ .elfinder-cwd-filename input { width: 100%; border: none; margin: 0; padding: 0; } .elfinder-cwd-view-icons input { text-align: center; } .elfinder-cwd-view-icons textarea { width: 100%; border: 0px solid; margin: 0; padding: 0; text-align: center; overflow: hidden; resize: none; } .elfinder-cwd-view-icons { text-align: center; } /************************************ LIST VIEW ************************************/ /*.elfinder-cwd-view-list { padding:0 0 4px 0; }*/ .elfinder-cwd-wrapper.elfinder-cwd-fixheader .elfinder-cwd::after { display: none; } .elfinder-cwd table { width: 100%; border-collapse: separate; border: 0 solid; margin: 0 0 10px 0; border-spacing: 0; box-sizing: padding-box; padding: 2px; position: relative; } .elfinder-cwd table td { /* fix conflict with Bootstrap CSS */ box-sizing: content-box; } .elfinder-cwd-wrapper-list.elfinder-cwd-fixheader { position: absolute; overflow: hidden; } .elfinder-cwd-wrapper-list.elfinder-cwd-fixheader:before { content: ''; position: absolute; width: 100%; top: 0; height: 3px; background-color: white; } .elfinder-droppable-active + .elfinder-cwd-wrapper-list.elfinder-cwd-fixheader:before { background-color: #8cafed; } .elfinder .elfinder-workzone div.elfinder-cwd-fixheader table { table-layout: fixed; } .elfinder .elfinder-cwd table tbody.elfinder-cwd-fixheader { position: relative; } .elfinder-ltr .elfinder-cwd thead .elfinder-cwd-selectall { text-align: left; right: auto; left: 0px; padding-top: 3px; } .elfinder-rtl .elfinder-cwd thead .elfinder-cwd-selectall { text-align: right; right: 0px; left: auto; padding-top: 3px; } .elfinder-touch .elfinder-cwd thead .elfinder-cwd-selectall { padding-top: 4px; } .elfinder .elfinder-cwd table thead tr { border-left: 0 solid; border-top: 0 solid; border-right: 0 solid; } .elfinder .elfinder-cwd table thead td { padding: 4px 14px; } .elfinder-ltr .elfinder-cwd.elfinder-has-checkbox table thead td:first-child { padding: 4px 14px 4px 22px; } .elfinder-rtl .elfinder-cwd.elfinder-has-checkbox table thead td:first-child { padding: 4px 22px 4px 14px; } .elfinder-touch .elfinder-cwd table thead td, .elfinder-touch .elfinder-cwd.elfinder-has-checkbox table thead td:first-child { padding-top: 8px; padding-bottom: 8px; } .elfinder .elfinder-cwd table thead td.ui-state-active { background: #ebf1f6; background: -moz-linear-gradient(top, #ebf1f6 0%, #abd3ee 50%, #89c3eb 51%, #d5ebfb 100%); background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ebf1f6), color-stop(50%, #abd3ee), color-stop(51%, #89c3eb), color-stop(100%, #d5ebfb)); background: -webkit-linear-gradient(top, #ebf1f6 0%, #abd3ee 50%, #89c3eb 51%, #d5ebfb 100%); background: -o-linear-gradient(top, #ebf1f6 0%, #abd3ee 50%, #89c3eb 51%, #d5ebfb 100%); background: -ms-linear-gradient(top, #ebf1f6 0%, #abd3ee 50%, #89c3eb 51%, #d5ebfb 100%); background: linear-gradient(to bottom, #ebf1f6 0%, #abd3ee 50%, #89c3eb 51%, #d5ebfb 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebf1f6', endColorstr='#d5ebfb', GradientType=0); } .elfinder .elfinder-cwd table td { padding: 0 12px; white-space: pre; overflow: hidden; text-align: right; cursor: default; border: 0 solid; } .elfinder .elfinder-cwd table tbody td:first-child { position: relative } .elfinder .elfinder-cwd table td div { box-sizing: content-box; } tr.elfinder-cwd-file td .elfinder-cwd-select { padding-top: 3px; } .elfinder-mobile tr.elfinder-cwd-file td .elfinder-cwd-select { width: 40px; } .elfinder-touch tr.elfinder-cwd-file td .elfinder-cwd-select { padding-top: 10px; } .elfinder-touch .elfinder-cwd tr td { padding: 10px 12px; } .elfinder-touch .elfinder-cwd tr.elfinder-cwd-file td { padding: 13px 12px; } .elfinder-ltr .elfinder-cwd table td { text-align: right; } .elfinder-ltr .elfinder-cwd table td:first-child { text-align: left; } .elfinder-rtl .elfinder-cwd table td { text-align: left; } .elfinder-rtl .elfinder-cwd table td:first-child { text-align: right; } .elfinder-odd-row { background: #eee; } /* filename container */ .elfinder-cwd-view-list .elfinder-cwd-file-wrapper { width: 97%; position: relative; } /* filename container in ltr/rtl enviroment */ .elfinder-ltr .elfinder-cwd-view-list.elfinder-has-checkbox .elfinder-cwd-file-wrapper { margin-left: 8px; } .elfinder-rtl .elfinder-cwd-view-list.elfinder-has-checkbox .elfinder-cwd-file-wrapper { margin-right: 8px; } .elfinder-cwd-view-list .elfinder-cwd-filename { padding-top: 4px; padding-bottom: 4px; display: inline-block; } .elfinder-ltr .elfinder-cwd-view-list .elfinder-cwd-filename { padding-left: 23px; } .elfinder-rtl .elfinder-cwd-view-list .elfinder-cwd-filename { padding-right: 23px; } /* premissions/symlink marker */ .elfinder-cwd-view-list .elfinder-perms, .elfinder-cwd-view-list .elfinder-lock, .elfinder-cwd-view-list .elfinder-symlink { margin-top: -6px; opacity: .6; filter: Alpha(Opacity=60); } .elfinder-cwd-view-list .elfinder-perms { bottom: -4px; } .elfinder-cwd-view-list .elfinder-lock { top: 0px; } .elfinder-cwd-view-list .elfinder-symlink { bottom: -4px; } /* markers in ltr/rtl enviroment */ .elfinder-ltr .elfinder-cwd-view-list .elfinder-perms { left: 8px; } .elfinder-rtl .elfinder-cwd-view-list .elfinder-perms { right: -8px; } .elfinder-ltr .elfinder-cwd-view-list .elfinder-lock { left: 10px; } .elfinder-rtl .elfinder-cwd-view-list .elfinder-lock { right: -10px; } .elfinder-ltr .elfinder-cwd-view-list .elfinder-symlink { left: -7px; } .elfinder-rtl .elfinder-cwd-view-list .elfinder-symlink { right: 7px; } /* file icon */ .elfinder-cwd-view-list td .elfinder-cwd-icon { width: 16px; height: 16px; position: absolute; top: 50%; margin-top: -8px; background-image: url(../img/icons-small.png); } /* icon in ltr/rtl enviroment */ .elfinder-ltr .elfinder-cwd-view-list .elfinder-cwd-icon { left: 0; } .elfinder-rtl .elfinder-cwd-view-list .elfinder-cwd-icon { right: 0; } /* type badge, thumbnail image overlay */ .elfinder-cwd-view-list .elfinder-cwd-icon:before, .elfinder-cwd-view-list .elfinder-cwd-icon:after { content: none; } /* table header resize handle */ .elfinder-cwd-view-list thead td .ui-resizable-handle { height: 100%; top: 6px; } .elfinder-touch .elfinder-cwd-view-list thead td .ui-resizable-handle { top: -4px; margin: 10px; } .elfinder-cwd-view-list thead td .ui-resizable-e { right: -7px; } .elfinder-cwd-view-list thead td .ui-resizable-w { left: -7px; } .elfinder-touch .elfinder-cwd-view-list thead td .ui-resizable-e { right: -16px; } .elfinder-touch .elfinder-cwd-view-list thead td .ui-resizable-w { left: -16px; } /* empty message */ .elfinder-cwd-wrapper-empty .elfinder-cwd-view-list.elfinder-cwd:after { margin-top: 0; } /* overlay message board */ .elfinder-cwd-message-board { position: absolute; position: -webkit-sticky; position: sticky; width: 100%; height: calc(100% - 0.01px); /* for Firefox scroll problem */ top: 0; left: 0; margin: 0; padding: 0; pointer-events: none; background-color: transparent; } /* overlay message board for trash */ .elfinder-cwd-wrapper-trash .elfinder-cwd-message-board { background-image: url(../img/trashmesh.png); } .elfinder-cwd-message-board .elfinder-cwd-trash { position: absolute; bottom: 0; font-size: 30px; width: 100%; text-align: right; display: none; } .elfinder-rtl .elfinder-cwd-message-board .elfinder-cwd-trash { text-align: left; } .elfinder-mobile .elfinder-cwd-message-board .elfinder-cwd-trash { font-size: 20px; } .elfinder-cwd-wrapper-trash .elfinder-cwd-message-board .elfinder-cwd-trash { display: block; opacity: .3; } /* overlay message board for expires */ .elfinder-cwd-message-board .elfinder-cwd-expires { position: absolute; bottom: 0; font-size: 24px; width: 100%; text-align: right; opacity: .25; } .elfinder-rtl .elfinder-cwd-message-board .elfinder-cwd-expires { text-align: left; } .elfinder-mobile .elfinder-cwd-message-board .elfinder-cwd-expires { font-size: 20px; } plugins/file-manager-advanced/application/library/css/dialog.css000064400000033200147176754550021052 0ustar00/*********************************************/ /* DIALOGS STYLES */ /*********************************************/ /* common dialogs class */ .std42-dialog { padding: 0; position: absolute; left: auto; right: auto; box-sizing: border-box; } .std42-dialog.elfinder-dialog-minimized { overFlow: hidden; position: relative; float: left; width: auto; cursor: pointer; } .elfinder-rtl .std42-dialog.elfinder-dialog-minimized { float: right; } .std42-dialog input { border: 1px solid; } /* titlebar */ .std42-dialog .ui-dialog-titlebar { border-left: 0 solid transparent; border-top: 0 solid transparent; border-right: 0 solid transparent; font-weight: normal; padding: .2em 1em; } .std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar { padding: 0 .5em; height: 20px; } .elfinder-touch .std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar { padding: .3em .5em; } .std42-dialog.ui-draggable-disabled .ui-dialog-titlebar { cursor: default; } .std42-dialog .ui-dialog-titlebar .ui-widget-header { border: none; cursor: pointer; } .std42-dialog .ui-dialog-titlebar span.elfinder-dialog-title { display: inherit; word-break: break-all; } .std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar span.elfinder-dialog-title { display: list-item; display: -moz-inline-box; white-space: nowrap; word-break: normal; overflow: hidden; word-wrap: normal; overflow-wrap: normal; max-width: -webkit-calc(100% - 24px); max-width: -moz-calc(100% - 24px); max-width: calc(100% - 24px); } .elfinder-touch .std42-dialog .ui-dialog-titlebar span.elfinder-dialog-title { padding-top: .15em; } .elfinder-touch .std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar span.elfinder-dialog-title { max-width: -webkit-calc(100% - 36px); max-width: -moz-calc(100% - 36px); max-width: calc(100% - 36px); } .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button { position: relative; float: left; top: 10px; left: -10px; right: 10px; width: 20px; height: 20px; padding: 1px; margin: -10px 1px 0 1px; background-color: transparent; background-image: none; } .elfinder-touch .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button { -moz-transform: scale(1.2); zoom: 1.2; padding-left: 6px; padding-right: 6px; height: 24px; } .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button-right { float: right; } .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button.elfinder-titlebar-button-right { left: 10px; right: -10px; } .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button .ui-icon { width: 17px; height: 17px; border-width: 1px; opacity: .7; filter: Alpha(Opacity=70); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; } .elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button .ui-icon { opacity: .5; filter: Alpha(Opacity=50); } .std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar .elfinder-titlebar-button .ui-icon { opacity: 1; filter: Alpha(Opacity=100); } .std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar select { display: none; } .elfinder-spinner { width: 14px; height: 14px; background: url("../img/spinner-mini.gif") center center no-repeat; margin: 0 5px; display: inline-block; vertical-align: middle; } .elfinder-ltr .elfinder-spinner, .elfinder-ltr .elfinder-spinner-text { float: left; } .elfinder-rtl .elfinder-spinner, .elfinder-rtl .elfinder-spinner-text { float: right; } /* resize handle for touch devices */ .elfinder-touch .std42-dialog.ui-dialog:not(ui-resizable-disabled) .ui-resizable-se { width: 12px; height: 12px; -moz-transform-origin: bottom right; -moz-transform: scale(1.5); zoom: 1.5; right: -7px; bottom: -7px; margin: 3px 7px 7px 3px; background-position: -64px -224px; } .elfinder-rtl .elfinder-dialog .ui-dialog-titlebar { text-align: right; } /* content */ .std42-dialog .ui-dialog-content { padding: .3em .5em; } .elfinder .std42-dialog .ui-dialog-content, .elfinder .std42-dialog .ui-dialog-content * { -webkit-user-select: auto; -moz-user-select: text; -khtml-user-select: text; user-select: text; } .elfinder .std42-dialog .ui-dialog-content label { border: none; } /* buttons */ .std42-dialog .ui-dialog-buttonpane { border: 0 solid; margin: 0; padding: .5em; text-align: right; } .elfinder-rtl .std42-dialog .ui-dialog-buttonpane { text-align: left; } .std42-dialog .ui-dialog-buttonpane button { margin: .2em 0 0 .4em; padding: .2em; outline: 0px solid; } .std42-dialog .ui-dialog-buttonpane button span { padding: 2px 9px; } .std42-dialog .ui-dialog-buttonpane button span.ui-icon { padding: 2px; } .elfinder-dialog .ui-resizable-e, .elfinder-dialog .ui-resizable-s { width: 0; height: 0; } .std42-dialog .ui-button input { cursor: pointer; } .std42-dialog select { border: 1px solid #ccc; } /* error/notify/confirm dialogs icon */ .elfinder-dialog-icon { position: absolute; width: 32px; height: 32px; left: 10px; top: 50%; margin-top: -15px; background: url("../img/dialogs.png") 0 0 no-repeat; } .elfinder-rtl .elfinder-dialog-icon { left: auto; right: 10px; } /*********************** ERROR DIALOG **************************/ .elfinder-dialog-error .ui-dialog-content, .elfinder-dialog-confirm .ui-dialog-content { padding-left: 56px; min-height: 35px; } .elfinder-rtl .elfinder-dialog-error .ui-dialog-content, .elfinder-rtl .elfinder-dialog-confirm .ui-dialog-content { padding-left: 0; padding-right: 56px; } .elfinder-dialog-error .elfinder-err-var { word-break: break-all; } /*********************** NOTIFY DIALOG **************************/ .elfinder-dialog-notify { top : 36px; width : 280px; } .elfinder-ltr .elfinder-dialog-notify { right : 12px; } .elfinder-rtl .elfinder-dialog-notify { left : 12px; } .elfinder-dialog-notify .ui-dialog-titlebar { height: 5px; overflow: hidden; } .elfinder.elfinder-touch > .elfinder-dialog-notify .ui-dialog-titlebar { height: 10px; } .elfinder > .elfinder-dialog-notify .ui-dialog-titlebar .elfinder-titlebar-button { top: 2px; } .elfinder.elfinder-touch > .elfinder-dialog-notify .ui-dialog-titlebar .elfinder-titlebar-button { top: 4px; } .elfinder > .elfinder-dialog-notify .ui-dialog-titlebar .elfinder-titlebar-button { left: -18px; right: 18px; } .elfinder > .elfinder-dialog-notify .ui-dialog-titlebar .elfinder-titlebar-button.elfinder-titlebar-button-right { left: 18px; right: -18px; } .ui-dialog-titlebar .elfinder-ui-progressbar { position: absolute; top: 17px; } .elfinder-touch .ui-dialog-titlebar .elfinder-ui-progressbar { top: 26px; } .elfinder-dialog-notify.elfinder-titlebar-button-hide .ui-dialog-titlebar-close { display: none; } .elfinder-dialog-notify.elfinder-dialog-minimized.elfinder-titlebar-button-hide .ui-dialog-titlebar span.elfinder-dialog-title { max-width: initial; } .elfinder-dialog-notify .ui-dialog-content { padding: 0; } /* one notification container */ .elfinder-notify { border-bottom: 1px solid #ccc; position: relative; padding: .5em; text-align: center; overflow: hidden; } .elfinder-ltr .elfinder-notify { padding-left: 36px; } .elfinder-rtl .elfinder-notify { padding-right: 36px; } .elfinder-notify:last-child { border: 0 solid; } /* progressbar */ .elfinder-notify-progressbar { width: 180px; height: 8px; border: 1px solid #aaa; background: #f5f5f5; margin: 5px auto; overflow: hidden; } .elfinder-notify-progress { width: 100%; height: 8px; background: url(../img/progress.gif) center center repeat-x; } .elfinder-notify-progressbar, .elfinder-notify-progress { -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px; } .elfinder-notify-cancel { position: relative; top: -18px; right: calc(-50% + 15px); } .elfinder-notify-cancel .ui-icon-close { background-position: -80px -128px; width: 18px; height: 18px; border-radius: 9px; border: none; background-position: -80px -128px; cursor: pointer; } /* icons */ .elfinder-dialog-icon-open, .elfinder-dialog-icon-readdir, .elfinder-dialog-icon-file { background-position: 0 -225px; } .elfinder-dialog-icon-reload { background-position: 0 -225px; } .elfinder-dialog-icon-mkdir { background-position: 0 -64px; } .elfinder-dialog-icon-mkfile { background-position: 0 -96px; } .elfinder-dialog-icon-copy, .elfinder-dialog-icon-prepare, .elfinder-dialog-icon-move { background-position: 0 -128px; } .elfinder-dialog-icon-upload { background-position: 0 -160px; } .elfinder-dialog-icon-chunkmerge { background-position: 0 -160px; } .elfinder-dialog-icon-rm { background-position: 0 -192px; } .elfinder-dialog-icon-download { background-position: 0 -260px; } .elfinder-dialog-icon-save { background-position: 0 -295px; } .elfinder-dialog-icon-rename, .elfinder-dialog-icon-chkcontent { background-position: 0 -330px; } .elfinder-dialog-icon-zipdl, .elfinder-dialog-icon-archive, .elfinder-dialog-icon-extract { background-position: 0 -365px; } .elfinder-dialog-icon-search { background-position: 0 -402px; } .elfinder-dialog-icon-resize, .elfinder-dialog-icon-loadimg, .elfinder-dialog-icon-netmount, .elfinder-dialog-icon-netunmount, .elfinder-dialog-icon-chmod, .elfinder-dialog-icon-preupload, .elfinder-dialog-icon-url, .elfinder-dialog-icon-dim { background-position: 0 -434px; } /*********************** CONFIRM DIALOG **************************/ .elfinder-dialog-confirm-applyall, .elfinder-dialog-confirm-encoding { padding: 0 1em; margin: 0; } .elfinder-ltr .elfinder-dialog-confirm-applyall, .elfinder-ltr .elfinder-dialog-confirm-encoding { text-align: left; } .elfinder-rtl .elfinder-dialog-confirm-applyall, .elfinder-rtl .elfinder-dialog-confirm-encoding { text-align: right; } .elfinder-dialog-confirm .elfinder-dialog-icon { background-position: 0 -32px; } .elfinder-dialog-confirm .ui-dialog-buttonset { width: auto; } /*********************** FILE INFO DIALOG **************************/ .elfinder-info-title .elfinder-cwd-icon { float: left; width: 48px; height: 48px; margin-right: 1em; } .elfinder-rtl .elfinder-info-title .elfinder-cwd-icon { float: right; margin-right: 0; margin-left: 1em; } .elfinder-info-title strong { display: block; padding: .3em 0 .5em 0; } .elfinder-info-tb { min-width: 200px; border: 0 solid; margin: 1em .2em 1em .2em; width: 100%; } .elfinder-info-tb td { white-space: pre-wrap; padding: 2px; } .elfinder-info-tb td.elfinder-info-label { white-space: nowrap; } .elfinder-info-tb td.elfinder-info-hash { display: inline-block; word-break: break-all; max-width: 32ch; } .elfinder-ltr .elfinder-info-tb tr td:first-child { text-align: right; } .elfinder-ltr .elfinder-info-tb span { float: left; } .elfinder-rtl .elfinder-info-tb tr td:first-child { text-align: left; } .elfinder-rtl .elfinder-info-tb span { float: right; } .elfinder-info-tb a { outline: none; text-decoration: underline; } .elfinder-info-tb a:hover { text-decoration: none; } .elfinder-netmount-tb { margin: 0 auto; } .elfinder-netmount-tb select, .elfinder-netmount-tb .elfinder-button-icon { cursor: pointer; } button.elfinder-info-button { margin: -3.5px 0; cursor: pointer; } /*********************** UPLOAD DIALOG **************************/ .elfinder-upload-dropbox { display: table-cell; text-align: center; vertical-align: middle; padding: 0.5em; border: 3px dashed #aaa; width: 9999px; height: 80px; overflow: hidden; word-break: keep-all; } .elfinder-upload-dropbox.ui-state-hover { background: #dfdfdf; border: 3px dashed #555; } .elfinder-upload-dialog-or { margin: .3em 0; text-align: center; } .elfinder-upload-dialog-wrapper { text-align: center; } .elfinder-upload-dialog-wrapper .ui-button { position: relative; overflow: hidden; } .elfinder-upload-dialog-wrapper .ui-button form { position: absolute; right: 0; top: 0; width: 100%; opacity: 0; filter: Alpha(Opacity=0); } .elfinder-upload-dialog-wrapper .ui-button form input { padding: 50px 0 0; font-size: 3em; width: 100%; } /* dialog for elFinder itself */ .dialogelfinder .dialogelfinder-drag { border-left: 0 solid; border-top: 0 solid; border-right: 0 solid; font-weight: normal; padding: 2px 12px; cursor: move; position: relative; text-align: left; } .elfinder-rtl .dialogelfinder-drag { text-align: right; } .dialogelfinder-drag-close { position: absolute; top: 50%; margin-top: -8px; } .elfinder-ltr .dialogelfinder-drag-close { right: 12px; } .elfinder-rtl .dialogelfinder-drag-close { left: 12px; } /*********************** RM CONFIRM **************************/ .elfinder-rm-title { margin-bottom: .5ex; } .elfinder-rm-title .elfinder-cwd-icon { float: left; width: 48px; height: 48px; margin-right: 1em; } .elfinder-rtl .elfinder-rm-title .elfinder-cwd-icon { float: right; margin-right: 0; margin-left: 1em; } .elfinder-rm-title strong { display: block; /*word-wrap: break-word;*/ white-space: pre-wrap; word-break: normal; overflow: hidden; text-overflow: ellipsis; } .elfinder-rm-title + br { display: none; } plugins/file-manager-advanced/application/library/css/fonts.css000064400000002455147176754550020754 0ustar00.elfinder-font-mono { font-family: "Ricty Diminished", "Myrica M", Consolas, "Courier New", Courier, Monaco, monospace; font-size: 1.1em; } .elfinder-contextmenu .elfinder-contextmenu-item span { font-size: .72em; } .elfinder-cwd-view-icons .elfinder-cwd-filename { font-size: .7em; } .elfinder-cwd-view-list td { font-size: .7em; } .std42-dialog .ui-dialog-titlebar { font-size: .82em; } .std42-dialog .ui-dialog-content { font-size: .72em; } .std42-dialog .ui-dialog-buttonpane { font-size: .76em; } .elfinder-info-tb { font-size: .9em; } .elfinder-upload-dropbox { font-size: 1.2em; } .elfinder-upload-dialog-or { font-size: 1.2em; } .dialogelfinder .dialogelfinder-drag { font-size: .9em; } .elfinder .elfinder-navbar { font-size: .72em; } .elfinder-place-drag .elfinder-navbar-dir { font-size: .9em; } .elfinder-quicklook-title { font-size: .7em; font-weight: normal; } .elfinder-quicklook-info-data { font-size: .72em; } .elfinder-quicklook-preview-text-wrapper { font-size: .9em; } .elfinder-button-menu-item { font-size: .72em; } .elfinder-button-search input { font-size: .8em; } .elfinder-statusbar div { font-size: .7em; } .elfinder-drag-num { font-size: 12px; } .elfinder-toast { font-size: .76em; } plugins/file-manager-advanced/application/library/css/navbar.css000064400000022253147176754550021072 0ustar00/*********************************************/ /* NAVIGATION PANEL */ /*********************************************/ /* container */ .elfinder .elfinder-navbar { /*box-sizing: border-box;*/ width: 230px; padding: 3px 5px; background-image: none; border-top: 0 solid; border-bottom: 0 solid; overflow: auto; position: relative; } .elfinder .elfinder-navdock { box-sizing: border-box; width: 230px; height: auto; position: absolute; bottom: 0; overflow: auto; } .elfinder-navdock .ui-resizable-n { top: 0; height: 20px; } /* ltr/rtl enviroment */ .elfinder-ltr .elfinder-navbar { float: left; border-left: 0 solid; } .elfinder-rtl .elfinder-navbar { float: right; border-right: 0 solid; } .elfinder-ltr .ui-resizable-e { margin-left: 10px; } /* folders tree container */ .elfinder-tree { display: table; width: 100%; margin: 0 0 .5em 0; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } /* one folder wrapper */ .elfinder-navbar-wrapper, .elfinder-place-wrapper { } /* folder */ .elfinder-navbar-dir { position: relative; display: block; white-space: nowrap; padding: 3px 12px; margin: 0; outline: 0px solid; border: 1px solid transparent; cursor: default; } .elfinder-touch .elfinder-navbar-dir { padding: 12px 12px; } /* ltr/rtl enviroment */ .elfinder-ltr .elfinder-navbar-dir { padding-left: 35px; } .elfinder-rtl .elfinder-navbar-dir { padding-right: 35px; } /* arrow before icon */ .elfinder-navbar-arrow { width: 12px; height: 14px; position: absolute; display: none; top: 50%; margin-top: -8px; background-image: url("../img/arrows-normal.png"); background-repeat: no-repeat; /* border:1px solid #111;*/ } .elfinder-ltr .elfinder-navbar-arrow { left: 0; } .elfinder-rtl .elfinder-navbar-arrow { right: 0; } .elfinder-touch .elfinder-navbar-arrow { -moz-transform-origin: top left; -moz-transform: scale(1.4); zoom: 1.4; margin-bottom: 7px; } .elfinder-ltr.elfinder-touch .elfinder-navbar-arrow { left: -3px; margin-right: 20px; } .elfinder-rtl.elfinder-touch .elfinder-navbar-arrow { right: -3px; margin-left: 20px; } .ui-state-active .elfinder-navbar-arrow { background-image: url("../img/arrows-active.png"); } /* collapsed/expanded arrow view */ .elfinder-navbar-collapsed .elfinder-navbar-arrow { display: block; } .elfinder-subtree-chksubdir .elfinder-navbar-arrow { opacity: .25; filter: Alpha(Opacity=25); } /* arrow ltr/rtl enviroment */ .elfinder-ltr .elfinder-navbar-collapsed .elfinder-navbar-arrow { background-position: 0 4px; } .elfinder-rtl .elfinder-navbar-collapsed .elfinder-navbar-arrow { background-position: 0 -10px; } .elfinder-ltr .elfinder-navbar-expanded .elfinder-navbar-arrow, .elfinder-rtl .elfinder-navbar-expanded .elfinder-navbar-arrow { background-position: 0 -21px; } /* folder icon */ .elfinder-navbar-icon { width: 16px; height: 16px; position: absolute; top: 50%; margin-top: -8px; background-image: url("../img/toolbar.png"); background-repeat: no-repeat; background-position: 0 -16px; } /* ltr/rtl enviroment */ .elfinder-ltr .elfinder-navbar-icon { left: 14px; } .elfinder-rtl .elfinder-navbar-icon { right: 14px; } /* places icon */ .elfinder-places .elfinder-navbar-root .elfinder-navbar-icon { background-position: 0 -704px; } /* root folder */ .elfinder-tree .elfinder-navbar-root-local .elfinder-navbar-icon, .elfinder-tree .elfinder-navbar-root-trash .elfinder-navbar-icon, .elfinder-tree .elfinder-navbar-root-ftp .elfinder-navbar-icon, .elfinder-tree .elfinder-navbar-root-sql .elfinder-navbar-icon, .elfinder-tree .elfinder-navbar-root-dropbox .elfinder-navbar-icon, .elfinder-tree .elfinder-navbar-root-googledrive .elfinder-navbar-icon, .elfinder-tree .elfinder-navbar-root-onedrive .elfinder-navbar-icon, .elfinder-tree .elfinder-navbar-root-box .elfinder-navbar-icon, .elfinder-tree .elfinder-navbar-root-zip .elfinder-navbar-icon, .elfinder-tree .elfinder-navbar-root-network .elfinder-navbar-icon { background-position: 0 0; background-size: contain; } /* root icon of each volume "\9" for IE8 trick */ .elfinder-tree .elfinder-navbar-root-local .elfinder-navbar-icon { background-image: url("../img/volume_icon_local.svg"); background-image: url("../img/volume_icon_local.png") \9; } .elfinder-tree .elfinder-navbar-root-trash .elfinder-navbar-icon { background-image: url("../img/volume_icon_trash.svg"); background-image: url("../img/volume_icon_trash.png") \9; } .elfinder-tree .elfinder-navbar-root-ftp .elfinder-navbar-icon { background-image: url("../img/volume_icon_ftp.svg"); background-image: url("../img/volume_icon_ftp.png") \9; } .elfinder-tree .elfinder-navbar-root-sql .elfinder-navbar-icon { background-image: url("../img/volume_icon_sql.svg"); background-image: url("../img/volume_icon_sql.png") \9; } .elfinder-tree .elfinder-navbar-root-dropbox .elfinder-navbar-icon { background-image: url("../img/volume_icon_dropbox.svg"); background-image: url("../img/volume_icon_dropbox.png") \9; } .elfinder-tree .elfinder-navbar-root-googledrive .elfinder-navbar-icon { background-image: url("../img/volume_icon_googledrive.svg"); background-image: url("../img/volume_icon_googledrive.png") \9; } .elfinder-tree .elfinder-navbar-root-onedrive .elfinder-navbar-icon { background-image: url("../img/volume_icon_onedrive.svg"); background-image: url("../img/volume_icon_onedrive.png") \9; } .elfinder-tree .elfinder-navbar-root-box .elfinder-navbar-icon { background-image: url("../img/volume_icon_box.svg"); background-image: url("../img/volume_icon_box.png") \9; } .elfinder-tree .elfinder-navbar-root-zip .elfinder-navbar-icon { background-image: url("../img/volume_icon_zip.svg"); background-image: url("../img/volume_icon_zip.png") \9; } .elfinder-tree .elfinder-navbar-root-network .elfinder-navbar-icon { background-image: url("../img/volume_icon_network.svg"); background-image: url("../img/volume_icon_network.png") \9; } /* icon in active/hove/dropactive state */ .ui-state-active .elfinder-navbar-icon, .elfinder-droppable-active .elfinder-navbar-icon, .ui-state-hover .elfinder-navbar-icon { background-position: 0 -32px; } /* ltr/rtl enviroment */ .elfinder-ltr .elfinder-navbar-subtree { margin-left: 12px; } .elfinder-rtl .elfinder-navbar-subtree { margin-right: 12px; } /* spinner */ .elfinder-tree .elfinder-spinner { position: absolute; top: 50%; margin: -7px 0 0; } /* spinner ltr/rtl enviroment */ .elfinder-ltr .elfinder-tree .elfinder-spinner { left: 0; margin-left: -2px; } .elfinder-rtl .elfinder-tree .elfinder-spinner { right: 0; margin-right: -2px; } /* marker */ .elfinder-navbar .elfinder-perms, .elfinder-navbar .elfinder-lock, .elfinder-navbar .elfinder-symlink { opacity: .6; filter: Alpha(Opacity=60); } /* permissions marker */ .elfinder-navbar .elfinder-perms { bottom: -1px; margin-top: -8px; } /* locked marker */ .elfinder-navbar .elfinder-lock { top: -2px; } /* permissions/symlink markers ltr/rtl enviroment */ .elfinder-ltr .elfinder-navbar .elfinder-perms { left: 20px; transform: scale(0.8); } .elfinder-rtl .elfinder-navbar .elfinder-perms { right: 20px; transform: scale(0.8); } .elfinder-ltr .elfinder-navbar .elfinder-lock { left: 20px; transform: scale(0.8); } .elfinder-rtl .elfinder-navbar .elfinder-lock { right: 20px; transform: scale(0.8); } .elfinder-ltr .elfinder-navbar .elfinder-symlink { left: 8px; transform: scale(0.8); } .elfinder-rtl .elfinder-navbar .elfinder-symlink { right: 8px; transform: scale(0.8); } /* navbar input */ .elfinder-navbar input { width: 100%; border: 0px solid; margin: 0; padding: 0; } /* resizable */ .elfinder-navbar .ui-resizable-handle { width: 12px; background: transparent url('../img/resize.png') center center no-repeat; } .elfinder-nav-handle-icon { position: absolute; top: 50%; margin: -8px 2px 0 2px; opacity: .5; filter: Alpha(Opacity=50); } /* pager button */ .elfinder-navbar-pager { width: 100%; box-sizing: border-box; padding-top: 3px; padding-bottom: 3px; } .elfinder-touch .elfinder-navbar-pager { padding-top: 10px; padding-bottom: 10px; } .elfinder-places { border: none; margin: 0; padding: 0; } .elfinder-places.elfinder-droppable-active { /*border:1px solid #8cafed;*/ } /* navbar swipe handle */ .elfinder-navbar-swipe-handle { position: absolute; top: 0px; height: 100%; width: 50px; pointer-events: none; } .elfinder-ltr .elfinder-navbar-swipe-handle { left: 0px; background: linear-gradient(to right, rgba(221, 228, 235, 1) 0, rgba(221, 228, 235, 0.8) 5px, rgba(216, 223, 230, 0.3) 8px, rgba(0, 0, 0, 0.1) 95%, rgba(0, 0, 0, 0) 100%); } .elfinder-rtl .elfinder-navbar-swipe-handle { right: 0px; background: linear-gradient(to left, rgba(221, 228, 235, 1) 0, rgba(221, 228, 235, 0.8) 5px, rgba(216, 223, 230, 0.3) 8px, rgba(0, 0, 0, 0.1) 95%, rgba(0, 0, 0, 0) 100%); } plugins/file-manager-advanced/application/library/css/places.css000064400000001102147176754550021056 0ustar00/*********************************************/ /* PLACES STYLES */ /*********************************************/ /* root extra icon */ .elfinder-navbar-root .elfinder-places-root-icon { position: absolute; top: 50%; margin-top: -9px; cursor: pointer; } .elfinder-ltr .elfinder-places-root-icon { right: 10px; } .elfinder-rtl .elfinder-places-root-icon { left: 10px; } .elfinder-navbar-expanded .elfinder-places-root-icon { display: block; } /* dragging helper base */ .elfinder-place-drag { font-size: 0.8em; } plugins/file-manager-advanced/application/library/css/quicklook.css000064400000026024147176754550021622 0ustar00/* quicklook window */ .elfinder-quicklook { position: absolute; background: url("../img/quicklook-bg.png"); overflow: hidden; -moz-border-radius: 7px; -webkit-border-radius: 7px; border-radius: 7px; padding: 20px 0 40px 0; } .elfinder-navdock .elfinder-quicklook { -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; font-size: 90%; overflow: auto; } .elfinder-quicklook.elfinder-touch { padding: 30px 0 40px 0; } .elfinder-quicklook .ui-resizable-se { width: 14px; height: 14px; right: 5px; bottom: 3px; background: url("../img/toolbar.png") 0 -496px no-repeat; } .elfinder-quicklook.elfinder-touch .ui-resizable-se { -moz-transform-origin: bottom right; -moz-transform: scale(1.5); zoom: 1.5; } /* quicklook fullscreen window */ .elfinder-quicklook.elfinder-quicklook-fullscreen { position: fixed; top: 0; right: 0; bottom: 0; left: 0; margin: 0; box-sizing: border-box; width: 100%; height: 100%; object-fit: contain; border-radius: 0; -moz-border-radius: 0; -webkit-border-radius: 0; -webkit-background-clip: padding-box; padding: 0; background: #000; display: block; } /* hide titlebar in fullscreen mode */ .elfinder-quicklook-fullscreen .elfinder-quicklook-titlebar, .elfinder-quicklook-fullscreen.elfinder-quicklook .ui-resizable-handle { display: none; } /* hide preview border in fullscreen mode */ .elfinder-quicklook-fullscreen .elfinder-quicklook-preview { border: 0 solid; } /*.elfinder-quicklook-fullscreen iframe { height: 100%; }*/ .elfinder-quicklook-cover { width: 100%; height: 100%; top: 0; left: 0; position: absolute; } .elfinder-quicklook-cover.elfinder-quicklook-coverbg { /* background need to catch mouse event over browser plugin (eg PDF preview) */ background-color: #fff; opacity: 0.000001; filter: Alpha(Opacity=0.0001); } /* quicklook titlebar */ .elfinder-quicklook-titlebar { text-align: center; background: #777; position: absolute; left: 0; top: 0; width: 100%; height: 20px; -moz-border-radius-topleft: 7px; -webkit-border-top-left-radius: 7px; border-top-left-radius: 7px; -moz-border-radius-topright: 7px; -webkit-border-top-right-radius: 7px; border-top-right-radius: 7px; border: none; line-height: 1.2; } .elfinder-navdock .elfinder-quicklook-titlebar { -moz-border-radius-topleft: 0; -webkit-border-top-left-radius: 0; border-top-left-radius: 0; -moz-border-radius-topright: 0; -webkit-border-top-right-radius: 0; border-top-right-radius: 0; cursor: default; } .elfinder-touch .elfinder-quicklook-titlebar { height: 30px; } /* window title */ .elfinder-quicklook-title { display: inline-block; white-space: nowrap; overflow: hidden; } .elfinder-touch .elfinder-quicklook-title { padding: 8px 0; } /* icon "close" in titlebar */ .elfinder-quicklook-titlebar-icon { position: absolute; left: 4px; top: 50%; margin-top: -8px; height: 16px; border: none; } .elfinder-touch .elfinder-quicklook-titlebar-icon { height: 22px; } .elfinder-quicklook-titlebar-icon .ui-icon { position: relative; margin: -9px 3px 0px 0px; cursor: pointer; border-radius: 10px; border: 1px solid; opacity: .7; filter: Alpha(Opacity=70); } .elfinder-quicklook-titlebar-icon .ui-icon.ui-icon-closethick { padding-left: 1px; } .elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon { opacity: .6; filter: Alpha(Opacity=60); } .elfinder-touch .elfinder-quicklook-titlebar-icon .ui-icon { margin-top: -5px; } .elfinder-quicklook-titlebar-icon.elfinder-titlebar-button-right { left: auto; right: 4px; direction: rtl; } .elfinder-quicklook-titlebar-icon.elfinder-titlebar-button-right .ui-icon { margin: -9px 0px 0px 3px; } .elfinder-touch .elfinder-quicklook-titlebar .ui-icon { -moz-transform-origin: center center; -moz-transform: scale(1.2); zoom: 1.2; } .elfinder-touch .elfinder-quicklook-titlebar-icon .ui-icon { margin-right: 10px; } .elfinder-touch .elfinder-quicklook-titlebar-icon.elfinder-titlebar-button-right .ui-icon { margin-left: 10px; } /* main part of quicklook window */ .elfinder-quicklook-preview { overflow: hidden; position: relative; border: 0 solid; border-left: 1px solid transparent; border-right: 1px solid transparent; height: 100%; } .elfinder-navdock .elfinder-quicklook-preview { border-left: 0; border-right: 0; } .elfinder-quicklook-preview.elfinder-overflow-auto { overflow: auto; -webkit-overflow-scrolling: touch; } /* wrapper for file info/icon */ .elfinder-quicklook-info-wrapper { display: table; position: absolute; width: 100%; height: 100%; height: calc(100% - 80px); left: 0; top: 20px; } .elfinder-navdock .elfinder-quicklook-info-wrapper { height: calc(100% - 20px); } /* file info */ .elfinder-quicklook-info { display: table-cell; vertical-align: middle; } .elfinder-ltr .elfinder-quicklook-info { padding: 0 12px 0 112px; } .elfinder-rtl .elfinder-quicklook-info { padding: 0 112px 0 12px; } .elfinder-ltr .elfinder-navdock .elfinder-quicklook-info { padding: 0 0 0 80px; } .elfinder-rtl .elfinder-navdock .elfinder-quicklook-info { padding: 0 80px 0 0; } /* file name in info */ .elfinder-quicklook-info .elfinder-quicklook-info-data:first-child { color: #fff; font-weight: bold; padding-bottom: .5em; } /* other data in info */ .elfinder-quicklook-info-data { clear: both; padding-bottom: .2em; color: #fff; } .elfinder-quicklook-info-progress { width: 0; height: 4px; border-radius: 2px; } /* file icon */ .elfinder-quicklook .elfinder-cwd-icon { position: absolute; left: 32px; top: 50%; margin-top: -20px; } .elfinder-navdock .elfinder-quicklook .elfinder-cwd-icon { left: 16px; } .elfinder-rtl .elfinder-quicklook .elfinder-cwd-icon { left: auto; right: 32px; } .elfinder-rtl .elfinder-navdock .elfinder-quicklook .elfinder-cwd-icon { right: 6px; } .elfinder-quicklook .elfinder-cwd-icon:before { top: -10px; } .elfinder-ltr .elfinder-quicklook .elfinder-cwd-icon:before { left: -20px; } .elfinder-ltr .elfinder-navdock .elfinder-quicklook .elfinder-cwd-icon:before { left: -14px; } .elfinder-ltr .elfinder-quicklook .elfinder-cwd-icon:after { left: -42px; } .elfinder-ltr .elfinder-navdock .elfinder-quicklook .elfinder-cwd-icon:after { left: -12px; } .elfinder-rtl .elfinder-quicklook .elfinder-cwd-icon:before { left: auto; right: 40px; } .elfinder-rtl .elfinder-quicklook .elfinder-cwd-icon:after { left: auto; right: 42px; } /* image in preview */ .elfinder-quicklook-preview > img, .elfinder-quicklook-preview > div > canvas { display: block; margin: auto; } /* navigation bar on quicklook window bottom */ .elfinder-quicklook-navbar { position: absolute; left: 50%; bottom: 4px; width: 140px; height: 32px; padding: 0px; margin-left: -70px; border: 1px solid transparent; border-radius: 19px; -moz-border-radius: 19px; -webkit-border-radius: 19px; } /* navigation bar in fullscreen mode */ .elfinder-quicklook-fullscreen .elfinder-quicklook-navbar { width: 188px; margin-left: -94px; padding: 5px; border: 1px solid #eee; background: #000; opacity: 0.4; filter: Alpha(Opacity=40); } /* show close icon in fullscreen mode */ .elfinder-quicklook-fullscreen .elfinder-quicklook-navbar-icon-close, .elfinder-quicklook-fullscreen .elfinder-quicklook-navbar-separator { display: inline; } /* icons in navbar */ .elfinder-quicklook-navbar-icon { width: 32px; height: 32px; margin: 0 7px; float: left; background: url("../img/quicklook-icons.png") 0 0 no-repeat; } /* fullscreen icon */ .elfinder-quicklook-navbar-icon-fullscreen { background-position: 0 -64px; } /* exit fullscreen icon */ .elfinder-quicklook-navbar-icon-fullscreen-off { background-position: 0 -96px; } /* prev file icon */ .elfinder-quicklook-navbar-icon-prev { background-position: 0 0; } /* next file icon */ .elfinder-quicklook-navbar-icon-next { background-position: 0 -32px; } /* close icon */ .elfinder-quicklook-navbar-icon-close { background-position: 0 -128px; display: none; } /* icons separator */ .elfinder-quicklook-navbar-separator { width: 1px; height: 32px; float: left; border-left: 1px solid #fff; display: none; } /* text encoding selector */ .elfinder-quicklook-encoding { height: 40px; } .elfinder-quicklook-encoding > select { color: #fff; background: #000; border: 0; font-size: 12px; max-width: 100px; display: inline-block; position: relative; top: 6px; left: 5px; } .elfinder-navdock .elfinder-quicklook .elfinder-quicklook-encoding { display: none; } /* text files preview wrapper */ .elfinder-quicklook-preview-text-wrapper { width: 100%; height: 100%; background: #fff; color: #222; overflow: auto; -webkit-overflow-scrolling: touch; } /* archive files preview wrapper */ .elfinder-quicklook-preview-archive-wrapper { width: 100%; height: 100%; background: #fff; color: #222; font-size: 90%; overflow: auto; -webkit-overflow-scrolling: touch } /* archive files preview header */ .elfinder-quicklook-preview-archive-wrapper strong { padding: 0 5px; } /* text preview */ pre.elfinder-quicklook-preview-text, pre.elfinder-quicklook-preview-text.prettyprint { width: auto; height: auto; margin: 0; padding: 3px 9px; border: none; overflow: visible; -o-tab-size: 4; -moz-tab-size: 4; tab-size: 4; } .elfinder-quicklook-preview-charsleft hr { border: none; border-top: dashed 1px; } .elfinder-quicklook-preview-charsleft span { font-size: 90%; font-style: italic; cursor: pointer; } /* html/pdf preview */ .elfinder-quicklook-preview-html, .elfinder-quicklook-preview-pdf, .elfinder-quicklook-preview-iframe { width: 100%; height: 100%; background: #fff; margin: 0; border: none; display: block; } /* swf preview container */ .elfinder-quicklook-preview-flash { width: 100%; height: 100%; } /* audio preview container */ .elfinder-quicklook-preview-audio { width: 100%; position: absolute; bottom: 0; left: 0; } /* audio preview using embed */ embed.elfinder-quicklook-preview-audio { height: 30px; background: transparent; } /* video preview container */ .elfinder-quicklook-preview-video { width: 100%; height: 100%; } /* video.js error message */ .elfinder-quicklook-preview .vjs-error .vjs-error-display .vjs-modal-dialog-content { font-size: 12pt; padding: 0; color: #fff; } /* allow user select */ .elfinder .elfinder-quicklook .elfinder-quicklook-info *, .elfinder .elfinder-quicklook .elfinder-quicklook-preview * { -webkit-user-select: auto; -moz-user-select: text; -khtml-user-select: text; user-select: text; } plugins/file-manager-advanced/application/library/css/statusbar.css000064400000006164147176754550021634 0ustar00/******************************************************************/ /* STATUSBAR STYLES */ /******************************************************************/ /* statusbar container */ .elfinder-statusbar { display: flex; justify-content: space-between; cursor: default; text-align: center; font-weight: normal; padding: .2em .5em; border-right: 0 solid transparent; border-bottom: 0 solid transparent; border-left: 0 solid transparent; } .elfinder-statusbar:before, .elfinder-statusbar:after { display: none; } .elfinder-statusbar span { vertical-align: bottom; overflow: hidden; text-overflow: ellipsis; -o-text-overflow: ellipsis; } .elfinder-statusbar span.elfinder-path-other { flex-shrink: 0; text-overflow: clip; -o-text-overflow: clip; } .elfinder-statusbar span.ui-state-hover, .elfinder-statusbar span.ui-state-active { border: none; } .elfinder-statusbar span.elfinder-path-cwd { cursor: default; } /* path in statusbar */ .elfinder-path { display: flex; order: 1; flex-grow: 1; cursor: pointer; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; -o-text-overflow: ellipsis; max-width: 30%\9; } .elfinder-ltr .elfinder-path { text-align: left; float: left\9; } .elfinder-rtl .elfinder-path { text-align: right; float: right\9; } /* path in workzone (case of swipe to navbar close) */ .elfinder-workzone-path { position: relative; } .elfinder-workzone-path .elfinder-path { position: relative; font-size: .75em; font-weight: normal; float: none; max-width: none; overflow: hidden; overflow-x: hidden; text-overflow: initial; -o-text-overflow: initial; } .elfinder-mobile .elfinder-workzone-path .elfinder-path { overflow: auto; overflow-x: scroll; } .elfinder-ltr .elfinder-workzone-path .elfinder-path { margin-left: 24px; } .elfinder-rtl .elfinder-workzone-path .elfinder-path { margin-right: 24px; } .elfinder-workzone-path .elfinder-path span { display: inline-block; padding: 5px 3px; } .elfinder-workzone-path .elfinder-path span.elfinder-path-cwd { font-weight: bold; } .elfinder-workzone-path .elfinder-path span.ui-state-hover, .elfinder-workzone-path .elfinder-path span.ui-state-active { border: none; } .elfinder-workzone-path .elfinder-path-roots { position: absolute; top: 0; width: 24px; height: 20px; padding: 2px; border: none; overflow: hidden; } .elfinder-ltr .elfinder-workzone-path .elfinder-path-roots { left: 0; } .elfinder-rtl .elfinder-workzone-path .elfinder-path-roots { right: 0; } /* total/selected size in statusbar */ .elfinder-stat-size { order: 3; flex-grow: 1; overflow: hidden; white-space: nowrap; } .elfinder-ltr .elfinder-stat-size { text-align: right; float: right\9; } .elfinder-rtl .elfinder-stat-size { text-align: left; float: left\9; } /* info of current selected item */ .elfinder-stat-selected { order: 2; margin: 0 .5em; white-space: nowrap; overflow: hidden; } plugins/file-manager-advanced/application/library/css/theme.css000064400000027451147176754550020730 0ustar00/** * MacOS X like theme for elFinder. * Required jquery ui "smoothness" theme. * * @author Dmitry (dio) Levashov **/ /* scrollbar for Chrome and Safari */ .elfinder:not(.elfinder-mobile) *::-webkit-scrollbar { width: 10px; height: 10px; } .elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-track { border-radius: 10px; box-shadow: inset 0 0 6px rgba(0, 0, 0, .1); } .elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-thumb { background-color: rgba(0, 0, 50, 0.08); border-radius: 10px; box-shadow:0 0 0 1px rgba(255, 255, 255, .3); } .elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-thumb:hover { background-color: rgba(0, 0, 50, 0.16); } .elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-thumb:active { background-color: rgba(0, 0, 50, 0.24); } .elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-corner { background-color: transparent; } .elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-button { background-color: transparent; width: 10px; height: 10px; border: 5px solid transparent; } .elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-button:hover { border: 5px solid rgba(0, 0, 50, 0.08); } .elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-button:active { border: 5px solid rgba(0, 0, 50, 0.5); } .elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-button:single-button:vertical:decrement { border-bottom: 8px solid rgba(0, 0, 50, 0.3); } .elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-button:single-button:vertical:increment { border-top: 8px solid rgba(0, 0, 50, 0.3); } .elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-button:single-button:horizontal:decrement { border-right: 8px solid rgba(0, 0, 50, 0.3); } .elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-button:single-button:horizontal:increment { border-left: 8px solid rgba(0, 0, 50, 0.3); } /* input textarea */ .elfinder input, .elfinder textarea { color: #000; background-color: #FFF; border-color: #ccc; } /* dialogs */ .std42-dialog, .std42-dialog .ui-widget-content { background-color: #ededed; background-image: none; background-clip: content-box; } .std42-dialog.elfinder-bg-translucent { background-color: #fff; background-color: rgba(255, 255, 255, 0.9); } .std42-dialog.elfinder-bg-translucent .ui-widget-content { background-color: transparent; } .elfinder-quicklook-title { color: #fff; } .elfinder-quicklook-titlebar-icon { background-color: transparent; background-image: none; } .elfinder-quicklook-titlebar-icon .ui-icon { background-color: #d4d4d4; border-color: #8a8a8a; } .elfinder-quicklook-info-progress { background-color: gray; } .std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close:hover .ui-icon, .elfinder-mobile .std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close .ui-icon, .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-close:hover, .elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-close { background-color: #ff6252; border-color: #e5695d; background-image: url("../img/ui-icons_ffffff_256x240.png"); } .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize:hover .ui-icon, .elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize .ui-icon, .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-minimize:hover, .elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-minimize { background-color: #ffbc00; border-color: #e3a40b; background-image: url("../img/ui-icons_ffffff_256x240.png"); } .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full:hover .ui-icon, .elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full .ui-icon, .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-full:hover, .elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-full { background-color: #26c82f; border-color: #13ae10; background-image: url("../img/ui-icons_ffffff_256x240.png"); } .std42-dialog .elfinder-help, .std42-dialog .elfinder-help .ui-widget-content { background: #fff; } /* navbar */ .elfinder .elfinder-navbar { background: #dde4eb; } .elfinder-navbar .ui-state-hover { color: #000; background-color: #edf1f4; border-color: #bdcbd8; } .elfinder-navbar .ui-droppable-hover { background: transparent; } .elfinder-navbar .ui-state-active { background: #3875d7; border-color: #3875d7; color: #fff; } .elfinder-navbar .elfinder-droppable-active { background: #A7C6E5; } /* disabled elfinder */ .elfinder-disabled .elfinder-navbar .ui-state-active { background: #dadada; border-color: #aaa; color: #777; } /* workzone */ .elfinder-workzone { background: #fff; } /* current directory */ /* Is in trash */ .elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash { background-color: #f0f0f0; } /* selected file in "icons" view */ .elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-hover, .elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-active { background: #ccc; } /* type badge in "icons" view */ /* default */ .elfinder-cwd-icon:before { color: white; background-color: #798da7; } /* type */ .elfinder-cwd-icon-text:before { background-color: #6f99e6 } .elfinder-cwd-icon-image:before { background-color: #2ea26c } .elfinder-cwd-icon-audio:before { background-color: #7bad2a } .elfinder-cwd-icon-video:before { background-color: #322aad } /* subtype */ .elfinder-cwd-icon-x-empty:before, .elfinder-cwd-icon-plain:before { background-color: #719be6 } .elfinder-cwd-icon-rtf:before, .elfinder-cwd-icon-rtfd:before { background-color: #83aae7 } .elfinder-cwd-icon-pdf:before { background-color: #db7424 } .elfinder-cwd-icon-html:before { background-color: #82bc12 } .elfinder-cwd-icon-xml:before, .elfinder-cwd-icon-css:before { background-color: #7c7c7c } .elfinder-cwd-icon-x-shockwave-flash:before { background-color: #f43a36 } .elfinder-cwd-icon-zip:before, .elfinder-cwd-icon-x-zip:before, .elfinder-cwd-icon-x-xz:before, .elfinder-cwd-icon-x-7z-compressed:before, .elfinder-cwd-icon-x-gzip:before, .elfinder-cwd-icon-x-tar:before, .elfinder-cwd-icon-x-bzip:before, .elfinder-cwd-icon-x-bzip2:before, .elfinder-cwd-icon-x-rar:before, .elfinder-cwd-icon-x-rar-compressed:before { background-color: #97638e } .elfinder-cwd-icon-javascript:before, .elfinder-cwd-icon-x-javascript:before, .elfinder-cwd-icon-x-perl:before, .elfinder-cwd-icon-x-python:before, .elfinder-cwd-icon-x-ruby:before, .elfinder-cwd-icon-x-sh:before, .elfinder-cwd-icon-x-shellscript:before, .elfinder-cwd-icon-x-c:before, .elfinder-cwd-icon-x-csrc:before, .elfinder-cwd-icon-x-chdr:before, .elfinder-cwd-icon-x-c--:before, .elfinder-cwd-icon-x-c--src:before, .elfinder-cwd-icon-x-c--hdr:before, .elfinder-cwd-icon-x-java:before, .elfinder-cwd-icon-x-java-source:before, .elfinder-cwd-icon-x-php:before { background-color: #7c607c } .elfinder-cwd-icon-msword:before, .elfinder-cwd-icon-vnd-ms-office:before, .elfinder-cwd-icon-vnd-ms-word:before, .elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12:before, .elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12:before, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-document:before, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-template:before { background-color: #2b569a } .elfinder-cwd-icon-ms-excel:before, .elfinder-cwd-icon-vnd-ms-excel:before, .elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12:before, .elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12:before, .elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12:before, .elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12:before, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-sheet:before, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-template:before { background-color: #107b10 } .elfinder-cwd-icon-vnd-ms-powerpoint:before, .elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12:before, .elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12:before, .elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12:before, .elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12:before, .elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12:before, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-presentation:before, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slide:before, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slideshow:before, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-template:before { background-color: #d24625 } .elfinder-cwd-icon-vnd-oasis-opendocument-chart:before, .elfinder-cwd-icon-vnd-oasis-opendocument-database:before, .elfinder-cwd-icon-vnd-oasis-opendocument-formula:before, .elfinder-cwd-icon-vnd-oasis-opendocument-graphics:before, .elfinder-cwd-icon-vnd-oasis-opendocument-graphics-template:before, .elfinder-cwd-icon-vnd-oasis-opendocument-image:before, .elfinder-cwd-icon-vnd-oasis-opendocument-presentation:before, .elfinder-cwd-icon-vnd-oasis-opendocument-presentation-template:before, .elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet:before, .elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet-template:before, .elfinder-cwd-icon-vnd-oasis-opendocument-text:before, .elfinder-cwd-icon-vnd-oasis-opendocument-text-master:before, .elfinder-cwd-icon-vnd-oasis-opendocument-text-template:before, .elfinder-cwd-icon-vnd-oasis-opendocument-text-web:before, .elfinder-cwd-icon-vnd-openofficeorg-extension:before { background-color: #00a500 } .elfinder-cwd-icon-postscript:before { background-color: #ff5722 } /* list view*/ .elfinder-cwd table thead td.ui-state-hover { background: #ddd; } .elfinder-cwd table tr:nth-child(odd) { background-color: #edf3fe; } .elfinder-cwd table tr { border: 1px solid transparent; border-top: 1px solid #fff; } .elfinder-cwd .elfinder-droppable-active td { background: #A7C6E5; } .elfinder-cwd.elfinder-table-header-sticky table { border-top-color: #fff; } .elfinder-droppable-active .elfinder-cwd.elfinder-table-header-sticky table { border-top-color: #A7C6E5; } /* common selected background/color */ .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover, .elfinder-cwd table td.ui-state-hover, .elfinder-button-menu .ui-state-hover { background: #3875d7; color: #fff; } /* disabled elfinder */ .elfinder-disabled .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover, .elfinder-disabled .elfinder-cwd table td.ui-state-hover { background: #dadada; } /* statusbar */ .elfinder .elfinder-statusbar { color: #555; } .elfinder .elfinder-statusbar a { text-decoration: none; color: #555; } /* contextmenu */ .elfinder-contextmenu .ui-state-active { background: #6293df; color: #fff; } .elfinder-contextmenu .ui-state-hover { background: #3875d7; color: #fff; } .elfinder-contextmenu .ui-state-hover .elfinder-contextmenu-arrow { background-image: url('../img/arrows-active.png'); } /* dialog */ .elfinder .ui-dialog input:text.ui-state-hover, .elfinder .ui-dialog textarea.ui-state-hover { background-image: none; background-color: inherit; } .elfinder-notify-cancel .elfinder-notify-button { background-color: #707070; background-image: url("../img/ui-icons_ffffff_256x240.png"); } .elfinder-notify-cancel .elfinder-notify-button.ui-state-hover { background-color: #aaa; } /* edit dialog */ .elfinder-dialog-edit select.elfinder-edit-changed { border-bottom: 2px solid #13ae10; } /* tooltip */ .ui-widget-content.elfinder-ui-tooltip { background-color: #fff; } .elfinder-ui-tooltip.ui-widget-shadow, .elfinder .elfinder-ui-tooltip.ui-widget-shadow { box-shadow: 2px 6px 4px -4px #cecdcd; } /* progressbar */ .elfinder-ui-progressbar { background-color: #419bf3; }plugins/file-manager-advanced/application/library/css/toast.css000064400000012067147176754550020755 0ustar00/* * CSS for Toastr * Copyright 2012-2015 * Authors: John Papa, Hans Fjällemark, and Tim Ferrell. * All Rights Reserved. * Use, reproduction, distribution, and modification of this code is subject to the terms and * conditions of the MIT license, available at http://www.opensource.org/licenses/mit-license.php * * ARIA Support: Greta Krafsig * * Project: https://github.com/CodeSeven/toastr */ .elfinder .elfinder-toast { position: absolute; top: 12px; right: 12px; max-width: 90%; cursor: default; } .elfinder .elfinder-toast > div { position: relative; pointer-events: auto; overflow: hidden; margin: 0 0 6px; padding: 8px 16px 8px 50px; -moz-border-radius: 3px 3px 3px 3px; -webkit-border-radius: 3px 3px 3px 3px; border-radius: 3px 3px 3px 3px; background-position: 15px center; background-repeat: no-repeat; -moz-box-shadow: 0 0 12px #999999; -webkit-box-shadow: 0 0 12px #999999; box-shadow: 0 0 12px #999999; color: #FFFFFF; opacity: 0.9; filter: alpha(opacity=90); background-color: #030303; text-align: center; } .elfinder .elfinder-toast > .toast-info { background-color: #2F96B4; background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=") !important; } .elfinder .elfinder-toast > .toast-error { background-color: #BD362F; background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=") !important; } .elfinder .elfinder-toast > .toast-success { background-color: #51A351; background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==") !important; } .elfinder .elfinder-toast > .toast-warning { background-color: #F89406; background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=") !important; } .elfinder .elfinder-toast > div button.ui-button { background-image: none; margin-top: 8px; padding: .5em .8em; } .elfinder .elfinder-toast > .toast-success button.ui-button { background-color: green; color: #FFF; } .elfinder .elfinder-toast > .toast-success button.ui-button.ui-state-hover { background-color: #add6ad; color: #254b25; } .elfinder .elfinder-toast > .toast-info button.ui-button { background-color: #046580; color: #FFF; } .elfinder .elfinder-toast > .toast-info button.ui-button.ui-state-hover { background-color: #7DC6DB; color: #046580; } .elfinder .elfinder-toast > .toast-warning button.ui-button { background-color: #dd8c1a; color: #FFF; } .elfinder .elfinder-toast > .toast-warning button.ui-button.ui-state-hover { background-color: #e7ae5e; color: #422a07; } plugins/file-manager-advanced/application/library/css/toolbar.css000064400000027773147176754550021277 0ustar00/*********************************************/ /* TOOLBAR STYLES */ /*********************************************/ /* toolbar container */ .elfinder-toolbar { padding: 4px 0 3px 0; border-left: 0 solid transparent; border-top: 0 solid transparent; border-right: 0 solid transparent; max-height: 50%; overflow-y: auto; } /* container for button's group */ .elfinder-buttonset { margin: 1px 4px; float: left; background: transparent; padding: 0; overflow: hidden; } /*.elfinder-buttonset:first-child { margin:0; }*/ /* button */ .elfinder .elfinder-button { min-width: 16px; height: 16px; margin: 0; padding: 4px; float: left; overflow: hidden; position: relative; border: 0 solid; -webkit-box-sizing: content-box; -moz-box-sizing: content-box; box-sizing: content-box; line-height: 1; cursor: default; } .elfinder-rtl .elfinder-button { float: right; } .elfinder-touch .elfinder-button { min-width: 20px; height: 20px; } .elfinder .ui-icon-search { cursor: pointer; } /* separator between buttons, required for berder between button with ui color */ .elfinder-toolbar-button-separator { float: left; padding: 0; height: 24px; border-top: 0 solid; border-right: 0 solid; border-bottom: 0 solid; width: 0; } .elfinder-rtl .elfinder-toolbar-button-separator { float: right; } .elfinder-touch .elfinder-toolbar-button-separator { height: 28px; } /* change icon opacity^ not button */ .elfinder .elfinder-button.ui-state-disabled { opacity: 1; filter: Alpha(Opacity=100); } .elfinder .elfinder-button.ui-state-disabled .elfinder-button-icon, .elfinder .elfinder-button.ui-state-disabled .elfinder-button-text { opacity: .4; filter: Alpha(Opacity=40); } /* rtl enviroment */ .elfinder-rtl .elfinder-buttonset { float: right; } /* icon inside button */ .elfinder-button-icon { width: 16px; height: 16px; /*display:block;*/ display: inline-block; background: url('../img/toolbar.png') no-repeat; } .elfinder-button-text { position: relative; display: inline-block; top: -4px; margin: 0 2px; font-size: 12px; } .elfinder-touch .elfinder-button-icon { transform: scale(1.25); transform-origin: top left; } .elfinder-rtl.elfinder-touch .elfinder-button-icon { transform-origin: top right; } .elfinder-touch .elfinder-button-text { transform: translate(3px, 3px); top: -5px; } .elfinder-rtl.elfinder-touch .elfinder-button-text { transform: translate(-3px, 3px); } .elfinder-touch .elfinder-button-icon.elfinder-contextmenu-extra-icon { transform: scale(2); transform-origin: 12px 8px; } .elfinder-rtl.elfinder-touch .elfinder-button-icon.elfinder-contextmenu-extra-icon { transform-origin: 4px 8px; } /* buttons icons */ .elfinder-button-icon-home { background-position: 0 0; } .elfinder-button-icon-back { background-position: 0 -112px; } .elfinder-button-icon-forward { background-position: 0 -128px; } .elfinder-button-icon-up { background-position: 0 -144px; } .elfinder-button-icon-dir { background-position: 0 -16px; } .elfinder-button-icon-opendir { background-position: 0 -32px; } .elfinder-button-icon-reload { background-position: 0 -160px; } .elfinder-button-icon-open { background-position: 0 -176px; } .elfinder-button-icon-mkdir { background-position: 0 -192px; } .elfinder-button-icon-mkfile { background-position: 0 -208px; } .elfinder-button-icon-rm { background-position: 0 -832px; } .elfinder-button-icon-trash { background-position: 0 -224px; } .elfinder-button-icon-restore { background-position: 0 -816px; } .elfinder-button-icon-copy { background-position: 0 -240px; } .elfinder-button-icon-cut { background-position: 0 -256px; } .elfinder-button-icon-paste { background-position: 0 -272px; } .elfinder-button-icon-getfile { background-position: 0 -288px; } .elfinder-button-icon-duplicate { background-position: 0 -304px; } .elfinder-button-icon-rename { background-position: 0 -320px; } .elfinder-button-icon-edit { background-position: 0 -336px; } .elfinder-button-icon-quicklook { background-position: 0 -352px; } .elfinder-button-icon-upload { background-position: 0 -368px; } .elfinder-button-icon-download { background-position: 0 -384px; } .elfinder-button-icon-info { background-position: 0 -400px; } .elfinder-button-icon-extract { background-position: 0 -416px; } .elfinder-button-icon-archive { background-position: 0 -432px; } .elfinder-button-icon-view { background-position: 0 -448px; } .elfinder-button-icon-view-list { background-position: 0 -464px; } .elfinder-button-icon-help { background-position: 0 -480px; } .elfinder-button-icon-resize { background-position: 0 -512px; } .elfinder-button-icon-link { background-position: 0 -528px; } .elfinder-button-icon-search { background-position: 0 -561px; } .elfinder-button-icon-sort { background-position: 0 -577px; } .elfinder-button-icon-rotate-r { background-position: 0 -625px; } .elfinder-button-icon-rotate-l { background-position: 0 -641px; } .elfinder-button-icon-netmount { background-position: 0 -688px; } .elfinder-button-icon-netunmount { background-position: 0 -96px; } .elfinder-button-icon-places { background-position: 0 -704px; } .elfinder-button-icon-chmod { background-position: 0 -48px; } .elfinder-button-icon-accept { background-position: 0 -736px; } .elfinder-button-icon-menu { background-position: 0 -752px; } .elfinder-button-icon-colwidth { background-position: 0 -768px; } .elfinder-button-icon-fullscreen { background-position: 0 -784px; } .elfinder-button-icon-unfullscreen { background-position: 0 -800px; } .elfinder-button-icon-empty { background-position: 0 -848px; } .elfinder-button-icon-undo { background-position: 0 -864px; } .elfinder-button-icon-redo { background-position: 0 -880px; } .elfinder-button-icon-preference { background-position: 0 -896px; } .elfinder-button-icon-mkdirin { background-position: 0 -912px; } .elfinder-button-icon-selectall { background-position: 0 -928px; } .elfinder-button-icon-selectnone { background-position: 0 -944px; } .elfinder-button-icon-selectinvert { background-position: 0 -960px; } .elfinder-button-icon-opennew { background-position: 0 -976px; } .elfinder-button-icon-hide { background-position: 0 -992px; } .elfinder-button-icon-text { background-position: 0 -1008px; } /* button icon mirroring for rtl */ .elfinder-rtl .elfinder-button-icon-back, .elfinder-rtl .elfinder-button-icon-forward, .elfinder-rtl .elfinder-button-icon-getfile, .elfinder-rtl .elfinder-button-icon-help, .elfinder-rtl .elfinder-button-icon-redo, .elfinder-rtl .elfinder-button-icon-rename, .elfinder-rtl .elfinder-button-icon-search, .elfinder-rtl .elfinder-button-icon-undo, .elfinder-rtl .elfinder-button-icon-view-list, .elfinder-rtl .ui-icon-search { -ms-transform: scale(-1, 1); -webkit-transform: scale(-1, 1); transform: scale(-1, 1); } .elfinder-rtl.elfinder-touch .elfinder-button-icon-back, .elfinder-rtl.elfinder-touch .elfinder-button-icon-forward, .elfinder-rtl.elfinder-touch .elfinder-button-icon-getfile, .elfinder-rtl.elfinder-touch .elfinder-button-icon-help, .elfinder-rtl.elfinder-touch .elfinder-button-icon-redo, .elfinder-rtl.elfinder-touch .elfinder-button-icon-rename, .elfinder-rtl.elfinder-touch .elfinder-button-icon-search, .elfinder-rtl.elfinder-touch .elfinder-button-icon-undo, .elfinder-rtl.elfinder-touch .elfinder-button-icon-view-list, .elfinder-rtl.elfinder-touch .ui-icon-search { -ms-transform: scale(-1.25, 1.25) translateX(16px); -webkit-transform: scale(-1.25, 1.25) translateX(16px); transform: scale(-1.25, 1.25) translateX(16px); } /* button with dropdown menu*/ .elfinder .elfinder-menubutton { overflow: visible; } /* button with spinner icon */ .elfinder-button-icon-spinner { background: url("../img/spinner-mini.gif") center center no-repeat; } /* menu */ .elfinder-button-menu { position: absolute; margin-top: 24px; padding: 3px 0; overflow-y: auto; } .elfinder-touch .elfinder-button-menu { margin-top: 30px; } /* menu item */ .elfinder-button-menu-item { white-space: nowrap; cursor: default; padding: 5px 19px; position: relative; } .elfinder-touch .elfinder-button-menu-item { padding: 12px 19px } /* fix hover ui class */ .elfinder-button-menu .ui-state-hover { border: 0 solid; } .elfinder-button-menu-item-separated { border-top: 1px solid #ccc; } .elfinder-button-menu-item .ui-icon { width: 16px; height: 16px; position: absolute; left: 2px; top: 50%; margin-top: -8px; display: none; } .elfinder-button-menu-item-selected .ui-icon { display: block; } .elfinder-button-menu-item-selected-asc .ui-icon-arrowthick-1-s { display: none; } .elfinder-button-menu-item-selected-desc .ui-icon-arrowthick-1-n { display: none; } /* hack for upload button */ .elfinder-button form { position: absolute; top: 0; right: 0; opacity: 0; filter: Alpha(Opacity=0); cursor: pointer; } .elfinder .elfinder-button form input { background: transparent; cursor: default; } /* search "button" */ .elfinder .elfinder-button-search { border: 0 solid; background: transparent; padding: 0; margin: 1px 4px; height: auto; min-height: 26px; width: 70px; overflow: visible; } .elfinder .elfinder-button-search.ui-state-active { width: 220px; } /* search "pull down menu" */ .elfinder .elfinder-button-search-menu { font-size: 8pt; text-align: center; width: auto; min-width: 180px; position: absolute; top: 30px; padding-right: 5px; padding-left: 5px; } .elfinder-ltr .elfinder-button-search-menu { right: 22px; left: auto; } .elfinder-rtl .elfinder-button-search-menu { right: auto; left: 22px; } .elfinder-touch .elfinder-button-search-menu { top: 34px; } .elfinder .elfinder-button-search-menu div { margin-left: auto; margin-right: auto; margin-top: 5px; margin-bottom: 5px; display: table; } .elfinder .elfinder-button-search-menu div .ui-state-hover { border: 1px solid; } /* ltr/rte enviroment */ .elfinder-ltr .elfinder-button-search { float: right; margin-right: 10px; } .elfinder-rtl .elfinder-button-search { float: left; margin-left: 10px; } .elfinder-rtl .ui-controlgroup > .ui-controlgroup-item { float: right; } /* search text field */ .elfinder-button-search input[type=text] { box-sizing: border-box; width: 100%; height: 26px; padding: 0 20px; line-height: 22px; border: 0 solid; border: 1px solid #aaa; -moz-border-radius: 12px; -webkit-border-radius: 12px; border-radius: 12px; outline: 0px solid; } .elfinder-button-search input::-ms-clear { display: none; } .elfinder-touch .elfinder-button-search input { height: 30px; line-height: 28px; } .elfinder-rtl .elfinder-button-search input { direction: rtl; } /* icons */ .elfinder-button-search .ui-icon { position: absolute; height: 18px; top: 50%; margin: -8px 4px 0 4px; opacity: .6; filter: Alpha(Opacity=60); } .elfinder-button-search-menu .ui-checkboxradio-icon { display: none; } /* search/close icons */ .elfinder-ltr .elfinder-button-search .ui-icon-search { left: 0; } .elfinder-rtl .elfinder-button-search .ui-icon-search { right: 0; } .elfinder-ltr .elfinder-button-search .ui-icon-close { right: 0; } .elfinder-rtl .elfinder-button-search .ui-icon-close { left: 0; } /* toolbar swipe handle */ .elfinder-toolbar-swipe-handle { position: absolute; top: 0px; left: 0px; height: 50px; width: 100%; pointer-events: none; background: linear-gradient(to bottom, rgba(221, 228, 235, 1) 0, rgba(221, 228, 235, 0.8) 2px, rgba(216, 223, 230, 0.3) 5px, rgba(0, 0, 0, 0.1) 95%, rgba(0, 0, 0, 0) 100%); } plugins/file-manager-advanced/application/library/img/src/dialogs.pxm000064400000132217147176754550022034 0ustar00PXMT_DOCHEADER @N2CppMETADATA] streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+ _IMAGE_ZOOM_NSNumberNSValue*f_MASKS_VISIBLE_RECT_{{0, 0}, {0, 0}}_DOCUMENT_SLICES_NSMutableArrayNSArray_ORIGINAL_EXIF_{TIFF}ResolutionUnitSoftwarePixelmator 1.6.5 CompressionDateTimeNSMutableString2011-07-06 14:57:18 +0400 XResolutionH Orientation YResolutionH{Exif}PixelYDimension ColorSpacePixelXDimension *kCGImageDestinationLossyCompressionQuality PixelHeight PixelWidth {JFIF} IsProgressivecYDensityHXDensityH DensityUnit{IPTC}ProgramVersionPixelmator 1.6.5ImageOrientationKeywords ProfileName Color LCDDPIWidthH{PNG} InterlaceTypeXPixelsPerMeter YPixelsPerMeter DPIHeightH ColorModelRGBHasAlphaƠDepth _PX_VERSION_ 1.6.5_DOCUMENT_WINDOW_RECT_{{620, 85}, {408, 670}}_LAYERS_VISIBLE_RECT_{{0, 0}, {239, 240}}_DOCUMENT_SLICES_INFO_PXSlicesPreviewEnabledKeyPXSlicesVisibleKeyņ__OLD_METADATA_FOR_SPOTLIGHT__ colorMode layersNames trash_32 search_32 magnifiercompresspencilUntitled Layer 4arrow_up bullet_addUntitled Layer 2Untitled Layer 5Untitled Layer 3Untitled LayerkeywordsҒ csProfileNameԒresolutionType resolutiondH canvasSize {32, 432} _PRINT_INFO_ NSMutableDataNSDataz[378c] streamtyped@ NSPrintInfoNSObjectNSMutableDictionary NSDictionaryiNSString+NSHorizontallyCenteredNSNumberNSValue* NSRightMarginfH NSLeftMarginHNSHorizonalPaginationNSVerticalPaginationNSVerticallyCentered NSTopMarginZNSBottomMarginZ_MASKS_SELECTION_ I[73c] streamtyped@NSMutableIndexSet NSIndexSetNSObjectI_ICC_PROFILE_NAME_Ԓ_LAYERGROUPS_EXPANSION_STATES_ _STATE_Œ_ID_;18DCEA49-EC76-443A-A8F7-C33B7F0ABE40-38719-0000A622FFF83A76Œ;B04E2227-A8FB-445E-8507-715014398607-38719-0000A5FC7D711AD1Œ;0828C7D6-460F-46D8-A0A3-17F76E305E18-37040-00009A59C66DC784Œ9566ABCBB-01BE-4C4C-87D1-0B342B8B69DE-876-000009D534597ABCŒ997AB2E81-9E27-4462-9760-F6AA01B147B3-876-000009B8F9D8ED23Œ992F51EF2-97FC-4217-9109-D7BCBC694246-876-000008D641B063BDŒ944BD8AFF-ECBA-439E-AE3B-DCF4874F4791-876-000008CD62DBA8BAŒ9606B053D-0A88-4C9F-B995-4A1465F464A3-876-000008AF7D200E79Œ9A308625B-DFD4-4F42-B24E-7647D1E32544-876-00000897A3BCCCB3Œ93DED5A86-9E91-4497-8896-05443D45274C-876-000008E8F68B3C6BŒ9B488B5C0-15AF-492B-9E78-BF75A597D20B-876-000008D39490AF11Œ9ABC8B5FA-F536-49F3-A247-199BBC422425-876-00000892F8AC9460_DOCUMENT_LAST_SLICE_INFO_PXSliceMatteColorKeyNSColorffff transparentPXSliceFormatKeyPXSliceFormatPNG24_IMAGE_VISIBLE_RECT_{{-125, 1}, {377, 628}}_LAYERS_SELECTION_ 8[56c] streamtyped@ NSIndexSetNSObjectI GUIDES_INFO0 COLORSYNCLAYERSa lU$'+/259.AGxMT trash_32d';18DCEA49-EC76-443A-A8F7-C33B7F0ABE40-38719-0000A622FFF83A76x{Le_TK*BtkErVbG;(M74 -CJ@G8AU 8r=p8 s~};tDnK}y}hc^\f> ͸gh կNVmg޲`9S<޲^uݢk $) Ě~S*0^ZkZ*fOQFͶDZق>9s|_>[<5{g[<3A`;l߳-jC?X1[cl5_C$Ye2^V%؊xی:+_>9g lSook9pN8xMHll(111hwf*… (,,3GxAFw2D3ao,..Y__\vMqջI#yx<7HS:[w"244 x{{GjSzzz_mm-k,^3Cp2;s퀥ǢEAUU-77 d`ppPƲ>^(tY[, ,crruTVVBs~dߗקWanG\.W8" ٬Aɓ'%~ʊ8g.=炝jO[,n[_!*73J<<<l|a$gr\?-.:?,èދJ)5++k̍7duǥ nlN6#gϵ@Pȷqr@<W*н5w/_DFS)VbU8}9W+** mu?:vX=|v,R}=cUt[Ԇ7s`uW8XeupKA!Y?^׏p^=Ν#2, <-s~+IP]#UtWիgGYb]۷o)//GkkCr#Y}sv$Z:Z%++Ź^72ñ\|淗~YZv]C׷^^dRe {_x{N pXV }- aII ~ĎWƒ=z~ 焗ŏG<̧>zk0_h: x_=s\#>o= O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;5B792C89-3A87-47BD-AE80-BFEB96DF95A4-38719-0000A5FA48522E53 search_32d';B04E2227-A8FB-445E-8507-715014398607-38719-0000A5FC7D711AD1x PiܢDh2mj]2c%cBj5hYT@TME B$ lFEQ,MPI¾\\}~$)Xy8پ=?FQT?6?Y[eYckR -23Dgr$xDnA)W<ev_ֶAsǏo2 00XLJLh?Bk;.쳇7}<4+&M2[6uН* _&ƛ (. 16daG -]]=PD{uԑzzh 0aB?Y! 9?wv01[u{&9j]_8T/Wޅes=o+Un?߹3(߈Cu" 'ؿD q^#x\j8?zE]9s^{y'4Y;y&Lhz(g7}yX`C2Ɣ)O/wYE-acoE#) mɄe{ wl/DI{/<2K/PR;PA9/Ptڒ\HpUhwAkO'=*E9 @|~Ia7]KR烸Pg65ܨ㊦W4~84R[6Қ]Y|Mt 2;}S[r+2Æ=皼큾pz-)hJ5{ ;)ioNB[F>ڋ`^%W߃ao(3ll|}/қ9qv3њtR}MIHnڳ+;ݹ\G(!\{t!h̰j4Rd9GW^:r+7 P?Agv( {lg_A8&s @W[A ܡ̰ak3/rz/>HE")stF4%RVJXG[CWDANZSfؘ={`'~NQh/#G|(h/< eR.p_<.w͌1(gb?F)?pIUWC珼}CWwo[W\֠sZ9P\AokeI=Cث;yn5USNL̛4?5o2-ўzh!Jr|͡ʻz 65zZ%^7Zyڬ5}N[?a}֢(o(ޤi4Օ-DI՞h)/`h!J8W+.{%̩*Zvִ7T/u7g2k+;^`|Z0naENj~3c Iv(IkBd2Y k+{]Qg?gty>lhE(cbb322V[,u-/8LJ1=~o@C-Ν DLStո*EɡG>}8n+},Rvca zG{A`? qw/V'X~ na8m7Z0:bH 9&Կ˜7dgןrc(0Gu/뫚N o]y1 %sOմ5}fN! 5Baǖ&!II8L^9'#E0ux#&i:M zĊ7T<3ndMo)_o\v!umB"k>?K"eoZ@>Hm8~H&ZqZ'W 9;1i>OA 1t/"[MX?G#5  =ml\8|5ۊӢ G+b8snKϵX\ B1\r#51T 5} c>ڎR2G streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;5B792C89-3A87-47BD-AE80-BFEB96DF95A4-38719-0000A5FA48522E53 Jpencild'997AB2E81-9E27-4462-9760-F6AA01B147B3-876-000009B8F9D8ED23gxOlqxbXL]&!(@A m*E4vj,֕[aFŖٚ>&6n4&t:oe}x=}*fV욒j+{Z=ڳT5s^1LD'emðKV{59E$ϣeDGu~:%Ƹu^4ۯ" OfFgx.a/fJ.S~{(Ѓ;.',3WΡMT?mQKQy6 " ZfR+DQXY.."{)e#},s ɱvml_[ߟ;O? {GIܒwْ?󸝔|ƞrkoԃ]ɱ勲7k<F0 8B2Mi0Z@eNZWDw'l`v6֔֌V$Lȷ تmۖɹ tT M*Sd-h6m:C{OWR32Kmjj %6_W@[>'u/],*RPrJ-Jj!ΛBI1f13MI8 streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;5B792C89-3A87-47BD-AE80-BFEB96DF95A4-38719-0000A5FA48522E538Untitled Layer 4d'992F51EF2-97FC-4217-9109-D7BCBC694246-876-000008D641B063BD@@xKq\Iupϝ++A:Qi?HAT*]ZӃ*DK3KdkYq{Oy7o o*ۡ{ϽO#Ι>=4}hxȫpZӦ;'>ݜ52ɣOc ƴ~ɣO}]VyK'>ߪL/l٣ɣO#iȖ=<4bV1- O}mehx.os%hx;c7<On"K&2 vyFkM GÓGw~rی& v;f8HNӍ3[6tƮkwsGNoѠޖ = 'Óe<mjk#{ƣ~+}n=td|߮8U streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;5B792C89-3A87-47BD-AE80-BFEB96DF95A4-38719-0000A5FA48522E53,arrow_upd'944BD8AFF-ECBA-439E-AE3B-DCF4874F4791-876-000008CD62DBA8BA@@xKqnsJKTjJB~`D' `-C DCiK,k=,H~k`f}YQGzATF&-󗹆ߨl'ΖXuJ=,<]Ԁ*~0?1t@9|F^l֮LcW uGϝzzx4e{kW6|FÓGw~/Z[5e[mtۜ?#WKa<Gqn;أɣ 7ѧlٿe'> eأɣO#<ۜi=<4bm=<4ط[_i*4ho4i!5Iﶶ]ObKW1tj퉣Yݏ<,71??Od?SBr7:/}K=JeTItrI',$5IIұ`Yhfy Y>} og歠+lmv]V+ALq5*E\!ا(Ji)I[ )"/'4) MrNxW`Ā'M{J04^ Dn."il?Bt8lPAyY5}Erjz+uL4LPFZ6h aM{y*m}!˂>kilZ %e~`aa[Aw_{c տ(,-י4Ԙ'Q?F= >)6gGY]i_{rJ66 Sʠ~^GMŶéd-O '#lhj-FV;/gI: QOG=[8X{iM[7Zb Rfa,G m<^XA۞jڼ`Kl^Y}PF#~ ae<"ؿC?Yj÷(-aOSi?ǷY_[ɉqUߺŹ_%HC{R_R"ҵG{M0-s8?<= ҵ yY_]Qek,?/JOjL: Yή҃~^f!ҵF9,+`gu>}99PԜxO1ZP?5Yt|VVemy ™ϞFO*#l[~!եE|8|s'WACYt\:%s63|ך7 Tg>:|x̌2LjHgd~LI~[ Ƽ҂|B&-stxgC2;U\==7>ZssUҩL$(%|>ix)N*n~4lEBk%zeѼXb5vuք5ą5AM,DV"Ŭ#I*lZCUoÙTbч,DV"|fXgoPaMX;Do-?Կf;@-GZ[Ǟ:βnX-? Rw zOڳ7a"]+ @Y'V ԷUݬmV 3Y3LoVބYtp0 xDzQT]lڴj̍rf9UQEP-?%*ؔ=jgMx=U+hXBA_[~zk6@9S5稕o=bfIߞuK8ǽY2$,D%W<х3fZq_]<{sqċ} M.a"]˗68'wMW4A\y{<οJ streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;5B792C89-3A87-47BD-AE80-BFEB96DF95A4-38719-0000A5FA48522E53 Untitled Layer 3d'9B488B5C0-15AF-492B-9E78-BF75A597D20B-876-000008D39490AF11x͔o[U-ش,ax'qY_[ɉqUߺŹ_%HC{R_R"ҵG{M0-s8?<= ҵ yY_]Qek,?/JOjL: Yή҃~^f!ҵF9,+`gu>}99PԜxO1ZP?5Yt|VVemy ™ϞFO*#l[~!եE|8|s'WACYt\:%s63|ך7 Tg>:|x̌2LjHgd~LI~[ Ƽ҂|B&-stxgC2;U\==7>ZssUҩL$(%|>ix)N*n~4lEBk%zeѼXb5vuք5ą5AM,DV"Ŭ#I*lZCUoÙTbч,DV"|fXgoPaMX;Do-?Կf;@-GZ[Ǟ:βnX-? Rw zOڳ7a"]+ @Y'V ԷUݬmV 3Y3LoVބYtp0 xDzQT]lڴj̍rf9UQEP-?%*ؔ=jgMx=U+hXBA_[~zk6@9S5稕o=bfIߞuK8ǽY2$,D%W<х3fZq_]<{sqċ} M.a"]˗68'wMW4A\y{<οJ streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;5B792C89-3A87-47BD-AE80-BFEB96DF95A4-38719-0000A5FA48522E53# Untitled Layerd'9ABC8B5FA-F536-49F3-A247-199BBC422425-876-00000892F8AC9460">}xtU/`Ci*_ABHo{i"MP*"]: iAZB jB! K.$ z9s|{Μ937%!yՐ%x:T 0^\, ?5|7-3VcGK,DX9ݿ]PA|ZjyՕ"Z\!8O]2 Wloa;074%-{_IZ:&.e5vr D[FT{hNâu1m*79'IiLԝ$CwP~~ݳCiWiѳ0}9`js 7yZ:?iü/ CԤF(D(4xP. |&P?i{k^n@ֽR[61)Џ!Uŕ<-݈mc[}Y+f_\ݓ]EZW_]8ǭ:4}ٗ ey]WTƊK?: @f>(Y8/HX51o95֦$GŖv863)My*Q1|c|{*y*%Mb׋4W4~~vJSThhoJSS] HMJ2q]ŕ}?~^<r޴BնY @E{STi b_b@z 9?l5Z$3T/gkni>ՓJ`M4ŕ \@eWT&9yP0W"J&摡_5׋!E(|8u>ʦ)4Lrb.WԦ4Kq-ޖz]*+6P4ŕ w{4.ǽgϰ BpG2D6}u#Ҕ2Vt͘;[ U8<KHj d%%ʯƋnI|' J@ 6 ;L`_'e/ŕ<C@W/!HDZLjzXE4~>&@a#ݿGi=351FWڕ73 '* ~2L_:cr,`DajܣO75"91jO"x)_*}X`6I|=!&?&-~Xc_PGq ]4ƹZBON$j'|gҾE{;4g GOdɱik=avtQ] %i1=$b) LnлJ\f׵*:$!_/bIQ_"uBiSU@^e"\D})OeTX5*Ɛi zoer`Zl+˰ 9of Έ9n;ょ#9 W57f4q^u僼eb\\YlB@1xmZ,/{uIGFWE٥]@I:Ș2; :M$-K|hC߹4\[+$5ꢦYy/ \wQV's(C#cZQ9́z踲=96X!7|Ϧ{}b8<4L0OeԦC x|s _?~>-cՆ_E +cplY^Rf%Q.xtwƞAѫ|Wi73X9}~77ġQ%pl#Oh}y-q8d'YXY(~dL)\[ϯե{4^0׍_nmCׯǒ8}ETJiuv4wvo2X6iƳ 9:{'Zm/iø^|9ί:A8g|fHuR*sa{*=<c FnuFܥ5>pgHҲL\F C%犬W~e2N|@X-2.uE/zk%F.q!p8Kq7GKd峺?ponw)qzZ'=Nc*8U1c eXQ_Sk!4>ʘn>mݡ;ss ˟U 3qյCp nlS\gu2Qٴ?Ǚ>t9 bί97Mrydӣlg oss١48zHUӢ|ض|WK+{2YΨ_MA}ss dd > HZH iqK/xRdos?7B,ׁ+ɾjpaQhMfq(UM gZc{R݅ _NCwe8߭{p Kh5G9w*vsYS\XҖ*,ʻ/Yx7KwkQ]^;FvS tEiT6ں3?y\:>{9`FwJ!#!Luk{7:.Й:?ٵ .,lf^nî̐6̽]YޫzN\YYVtV{wnJSQ).ʵ"Ngߗ{7c;j3!lD_+˻/_›`;V~ˮmjoJSQ&)U˿>Ƭ99ĝc{Yw\Z>6W•ehoJSޅz{`Q 7>>k\_ ޿@UMS\i3|kkwDAil]ZDV^ +)Ꝡoxg]p泾 @qH  *`gX6w4,4+-nNѕL;!RDqNLNDqMt}s@noq8>y*w- Wg}{[v8w M C4=9q~ŭ vˋ=6ȷ4gWJ|V4^Qgَk+B:fZKc<̱ -==n}qϛYOl3TYM̹G]2O>L+5<;zc>9I>|gZL(+oYEYg6~w1f6yCeTVuH~C^2͓DEE<Ҕ2*: D2ٹ4)JSʨl[[[[[[[7ى: ŕ<^Em;fQ>& F._$U`h7_Z?ɥ]L]2~W.w_[OiiCn6ܿWSyƁD]e +~f@dO*mmd{W6,=~A}d*gIѣxD B_wbS{*yQ }#`*mLmP?D&> 96nBH*8 1[Ǥ&5r̦|(9F Ś)4HJfpB.wJ%':n1BD& )M?)ch yB|Kd69zL~D.K<=M?"" vIlAW´䍇}D\G`ϨYdi& ĄQ:!"6N~T4͹vp~|,ca[dBT\YR'M?,ĆɰT,CX{`#tokKb.JlG|SE|?t(X~n9\;3ocȹJ`ӏ D 1rC׏=<~e3,[Гi+-i:թYcH(Q2ce8T]v0kc8,d=Ƽca]05_#VͿ{7k?}ZuXUWwμlKO)n)eړ[Y_~Ώ{WK@jgwU{(k?,32u.M_qүN̓eH~̇P6}/Ն6:[:4/+ICxfY<>COw/V?k=ϲ-F(gd[e{-NXQrOM˳_`YՑI_!\zTߺԜ{Ȥ &$ϓ"~Z_ə\hMx29i4{XoWl1䋤^z!Ej/e"iFZ/BuTgsqZMs5-Er HVVKzoiBʕ*ԫS"ѽsG4_ψ>ㅈaTdɢ3Ϝ1NXzaڵicom%ڵn/:u aaFhb(^T *F!iQ֪_t@NI5uz[B24:䊡۠nm]Lz~П(iguj@йC{m]թ E}ү:5k<_Fu|ѾA'buP9`/Z'CA Z+ڵ(igjTCmX 5WyFzhӢڴmQ?BI9#6T_vjh-I|W~ʟe&hټ Z1{FgѼI#4oL4$ ECTgyODt-OWfyݬq?_Z**I1Q([C\2(igU,l] _*[Wp-RZˡM \2(.'ŚBq iQ*8XZ&pB"5qҬX /"(O-Jڙc2UAUaCŅVtmEת'ߵjTc2-] ,ux^~k3L5FY"snreJ=_kG q'Ix^^"-EI;+]8*U(o~wF]'LS^`U^ҍ2 jU%/Y4ىY~ Bif0(y÷%Dp,[ }șYCz]>c~~Mx,CFpmd]w[3{YڜmWxG?'b!b!;3|{".zed]Rm1[ÎG=1{f!fD fa6wA6)cG|s`<=WǭE6L3Sѻ񆨓5Kv0id򘁈Lh#(6y Qۧ"lTx,z ɯ]6qx!MS> }u/ 1<\{k`; 'My~7 #pm(t?ʥD g&xRw`xΣsqsD u_m ]qm8쇈\9\t,-Dd`띔ox\Z0Wc1,c,qwDTp[Bs{G8 \1yм 9;&)ccMZ<{I:p!Gpp,];>wLifo} o&@>ۧ!|O/1 {Lhkn6n`DwEa?mvLl-?qpj^l2 5=sǜoc`x%' |'g)k2w:?_5GO0uVŝ#͔E#Zse.rBԎ鸽F1գheT*Q=J|Vký"27] U=aZ=~+GvxӔ{kgybKƢAlM^߼'OOʵ;;DߊahHd7IgmsKqH:q' Ν(4ħĖEd ?R$e͘!Gޜ9y7м903{/Gy# ͒ҩHq streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;5B792C89-3A87-47BD-AE80-BFEB96DF95A4-38719-0000A5FA48522E53MASKSPREVIEWC C{x\kkw]kkk#6--`+؅(*JwJ_uAP@0zr̙3g όtZc'b6ٗuj&xiRy> .7髯 k3 /觘K-broLvbh1”Ua?uD[ bY~u.p76d -v ze]Q JIz*u5O;;S *uG/QK5wOf_J[Vx4w$-DF^Q5Q*Ґx$.y˵pG&uLV9r x1kAnﮣQ;*o6Vb+OwGz<)SnlixoFf78ƘIjVLy[9;wb`_zz7TeL3OlI\LtEG\ϋ2Ixsk Lc'wBɨؓML$}TaL6@S?Phe/~sEαԯ՗vg_5ETLn'eRmj ъ}@ԤXkF2gAvڣJK?{S5VBf@ʴ:53ʚI\L꤄K/SVa!i/ r'%OR0t*mr{1(uאi?(cIYj&`A8~,{ 96.㈙"9WR<h#\!qɓ8$ x h V;/moUg3?k-##kt5[ǰ5Iy.1:J}RQ%69pʛu WFbHaQ6"mINк_UIy3e C DX^^5mعԏFQѼxCTLn'eRGOҝۏ1b9}-$zk/7˷y^c{L Րxa18v&I\L1cP#yE~k)ZD4&HR559`0פ;. Xu,:֐I$>fvNMsO4hfRc!cR5!4) ?>91uJԮW|L $uJ/kux40XˁsSMo6zynkˏ=UjD|FZ&Rvc~jm`טNB?.PC5e)9J|)cRO"jOޯ=ܷȽϼ~5=Ƕ~z]閮n"ۊ"gFLQ.RL|іL9o>k*r48m )|LDΓD2D1i'eRG6m&), Nd.HO"yR&u'r.t˃]s'"bIK}cuLɧLrdͤen} !"om@9a1,yd[A>IJ cZ\^g+x`8Yq}=ȹQ|W3W*8;Ύ.@ͨGf=y)aD7 <'I}].w-}?;?Uq~|q\X H1,.N*EpŸ*nAӃ>9߹o~{&jsA%l*q+s_ ˤĒp5Gi5 7 ӎ\vz=?PN;[WZ8*P/)H-}/Ù1FN3"I-So3y{#2\ipuVu\SKcv -q2dbqmf%֯%^ Owkp~Ml&8>/fǝNJ:ϫ6Ҿ]o#½]X&ݮ:6WV<\Z(D狟,{D6WשcV4 ]-دF~]W֭Ѷmqۤ %@4)-smw7kqƢ>:"|]0x` ڬj-ɸ8dsЦFMstt Ѹn/i67SZ>->6u\3V/XٵYUMc!:0юAvAsvwxò<i/Y>5~6u:ʚݘ[w&!im鰍pBmRPav9^a;~K[:'>8Jxwy f~.l[=^+%)byS}f <~kiSAدim5X~wE l0?GVOm75Bnyxv>w׶úR>]T,:w =֤58\S'>YEUBgdzCYt7>Ajۮ~pefd{ɼ#^l삇R+,,Y;<7˥λHcUԵYIA}N#:17uţ=S}/O/fO#k)hnΎ-m;6uK#vBѬxkMٟpEŃUVh{ pCWVL查Mޮeai<݃M<]V7?=L'e[<֗s`^_˾ ~jM_gwLZ#n"־p1μ'c<6MLIʎ&p:6#~vY֒cyKD> o^kS8'[zR1II7 Qy'wfΎ)kȟ#Od}72FNceP>;/λٞx_ Ɲw@Gkj&qɓ2UG1O )qlOR3hԛ ":b\w A~uz_>H Yp_wWH\\J`$okc}Ÿ&N- "ZXX{_|mjD9vĐ~Gh UH ^58Z>˓*"0T(CGĝ%$5opqj2\-%`#*,8bGű~.'ߢIԫce%*v<>> e.5\wۯRjpۡrks9sf]U8*~J3$gs)#KOAė̈1E鸖|іsem?;)}~PղK+ېb:͇D@|̽1w-;퉏?iӮyߧٿ7ȓ3G |W$ouٿəߒfϕFy]^D\3 ;6KN"l!ⴰ<^>;^{fF'>alԃCox hxaC쳝scmMcCN }f*jy_0!aU\)pJʈ feR^4ZkH۫PҬ/]xD]1Cōq!'LXS XP`.ԗ?k"F]tl!*L ۫ŒD1!6+ゎ.A1"! ZpCU%$*RG>O?!l}qwh^܀`G (]:KT<1o!BVHIKI2Y=y.7 88#< $RDK qHṰ9 VvnQsx]acY'|+GrL.CEqgmHmΗotE?[3}qw<):~fb$8,g`6aO H`ޙh l σq:a KI>k>V@%yq~{kτ>c=*$XP#!펚A5ݰ]IC莍$.yR&u qs99Ή_%IC3=vI' ef2tj45cԑչU?+b:| )G$Lm=3ZCw;:ʚI\I먺~X᳛l'4[p=;=jiQuͬwF}>Pϛ*o4V(|{tgR!m:./>r>^nb:>uxW3C͂vc܍q73Aŭ[9Н3 ɩ1TL*Oʤ66 |xb^m1$| `,['(籽kPY3<):[a_84GńnN't<jl&Ixգ`bU&]]HTL*OʤĩzM͒ )C~i'}I"ſ/^厎\mrye%OXUnW|qM*:ҭ݉)[ KIm#~ T>RAW$p:QƸB'eRG+|Jy螺NH oʤ&)DCsA'eR'%j+Չq|ZvX}ǧĴ9-ɨ5_3C>.(-9 ދ|-(OgFPHPzR_BYao<+KvϳL:8|q)aƝ"D}g9Ωb@6sIlݝ"iy^$E<Ť a BƤa^jՆD}?w%v~.pw_5ǤKRD}#J -S79ARDwyu3Pڣ₤ %RGqƐmH? %{K#1c! |{fZ d6Q6$G"׏HgZDgW~/es/k~I\u4fcL#EnCt^Y㫵>zc~RÖو?x>-5tƵ1Ԑ5כU~OM'69Oy=&\q|CܧuږtOM/[z=i?~|kZۿϤ~/Dojq i6Ļ~=q\kik}&q'ej;o9OG05-oqn =i&q'e ݐZ?tv\ghk|Ysͯ7<)KXs-ڇ߇Hi!u[\1΍ qm][Z_$.yR?GWL{ê|5AF!뿺Vv旵 qK{/Ʋ./J~~#UدH%#d%җrq:>o6_,,Q_֏[wjuse<;|Bއ &/cB;W34_$zAsB8&sUpIR/_ݗ`Z=_$Gq'k#ۈ9W||sS~,C}_u^ /d̋ q1mwz8 7u>jmdDS 1]6b/!@R|T_!ҳ#ue1я392'̛"~FR2Ȝb2D[к:5ɼ/]R ѯLώԼ9!~D9X4!MA3rуv{%Ie6H<=kXLT &:pE?τd^H #D?E;_ӉاЗs_9ǛB|/QU5֕mć"O2_E2jdd }l-dٖk^[uqFMՌ)ѐ#HF-EJ~vVԮeڼi4oژ4A=ЦEs=ABC)/?3gNd&˖` cb?](׷&ѿWۿWO~= AUB -OC+UHDJ^k!v%YƍзWwكtg]M_ҁAN ⽥qS'Je& INj~ПhQ25m{tEvKüWZٔ>~UH6j~ ЫߊD/i?{Ǵ %OK1L/ioӳ-J& ߝKM$L0,9=CiD-J&Fk /iks]'&՗7BuoP]: /+\a]"RT_ʅ& ꣳLAw۷Emщ'A4d*I_wQ ڶF6m+" X_~o$.y5t6 Ѣd2[&ڶj. i?6w-KyjQ2QZh8gb}0Q^.vMX/Zr.hռjSɬVjhqӢYc71>/ $}^Nj7V^(v %]hl_(jVy!dsp&Oa ĸ>J' y'hd>:.x3ec"*Bcz*WZSʾs*~`!qAɉpW >=淉oL CU>PohU+WyXo~Ha 1Ч0!ȷ ־ݜo}[wV g̴P`*g=]'(xSsG]}8[XvЙV]7>P}PʥUTkPYYog$ұNc'e1*nfعa1t ו^i-KG⿊vE"RVB9D/N0i}\B\p@ ^E\:CQSJ3lR([GeʕEP*c<ݽׇ$uJlԿ@}*reJBʗ- U*UD=$hyIp!4*gԦE3Ti)]˕~G,+U,DwUPK%q2}Ac %_>Cf~ɒ%TP2I*+ö|;Dܿ/~L RJ3ߋ>d2+]w5.ʖ-,3>#*Yt73TiƱ/ZLf/eJD|(~3]U U*[Z YC)Kڑ{Aku'>`/[q% JudtxΙD4+^ EJILF:'`Ϳ|)^naWV)"ڟ TUZ ZAҒ/"ۆi$-R9-+ BIK]˔)}n:5>AWL3?uˤkZ!t!p- u?#[)w-A܉Zأ*o[RMT|Yi;GF&yR_!zٲ~MelF(۟1ѣ]Kj;>)!zIMҷ&a CKۓ5T<}\BAP%5I'o ߐH&$G $eRO'#zIMҒ_!zImN}*BR0K.Ů]vZ^:UVZʕ+dΝ011I)lW>/ʕ+t;Hz? ԣp .\<|J}38;!X96ߎI':u)ʤj*Thdggp>CS&c$<7LF_=ªG`| }63Sȑ#”ۼ@ԝV(!J'yR{xƖ/_!e4 Jm.Tw/O48LďLJ(ͤݻ8qD%4MV?:0BODSrKz*.>D޽nt^1c/www!鍶Vij:; cj=ԛz{'.Sڂ]]jjȍ7e ˱cU/DԱ^x磦סWף ?1/n@@:'d͝;(ݿ׊-Zar΄*/˜|B4Ⱦ;rA,gP{KxnOZ̙rd >VdOO@E)rGJWvakrVcQ(xpN߹sdBXO[g:sP-Ӊ`kiͧsj~{ )1[:_C4cG=(szb([E=7S&6ϛ~,ZDYyf9"ϮH`%"EG_\˻0M}<9w`Z(oLȕȏr7gYҸ;fQ9~gCk!Vx= S[rn{3[m6>&8[92 s"f _(-`mx}ߘT^ԓEB`1w!#.ۍ8Ҽ?^Dݵ.d,;tH7>~N(WT`fm%D[gzlDˆޚ|SJxq[j'>ϚIuɰvBm\^_d!|]1Kp֔G_:٬E5YCVZXS+ 3?Ifމ8t?毘ۯ ]_ ~ܹr䦼nٿXaj m /~K36_p΍34yt1D={H)d%C "ǹUJ@I ky{a5\u&cΦ9Ŵq#o͹[ctzs)h&chws0ǜ7ph.~`BTy~l6tSQ47J{79jx仅>mSnd#Lf dh8m&xِ3""vLUK?7d2[;~:v'LԀۛ|]?Soa䞷)a_;~ eI\$kh yϢ9]fDBIK/]n[Y0c9߿||u~o)tqM9/KוmTD jQ2}pMuJyB 5O6cgժTzG_~{/^NE2]ÔH(uuRu R&i%uRrw? 7ۿ,DL? ?_0/Y\:Umލ<4/w0~H6Lމ/"2w1S:}3?K}*"E ~"(e1>IkN6*|U.~}y߿ ʺ9boFjӟT_o]єkF:gkzߐQizTzMH)"ڟڲ }Ky2*_?ims wUקJ&6/(ʗ/oYw z}s/_ć/_<%LfӞ>sQqI\$khKPH)91 SEO>PDLֽKbZBAo_HZe;ݸaEY꫺_B| EdH( e9VVEKr=ʷ ZLfVFT< PJe|!$-|r>(z}IK KIF+˗/%/X4DL{|tRߟiQ]{}t E>/C#9/žlgf{We;?,_i7]j*A3|n˶g]3_BtH4X>Q[,'˲ ;7/<3\YlK bHMY߮{ks/8;{MY䧶l5]`OWpnٌ9sfh!L#ڵȧ0>4~ذp11ihѮOOyi?9 2)@jO7́jcv? Ԯ?h0{\5I7MNcϱvm~s턱&y'hO/ڢ+l5f@v漥96NARX#6xnqEhn4[ ?śykay<Dsje>tޑ/:b֭(Lhϭ˜DqS~**ϕlڴ,YӻMt7#_![ϥ-sT2D毾ntu)@sZnRT EI"_&Z=e?u3oqٿnd;ٞ|eտ GޯӇpt a!ct:fw|Q8Z~:z/)X p`TCf`0hڽt<<^O?1"7,NWx0Z6<?IZڮ1cA a`63M`8{6/t[,x;{K3>&"iHZ^9n/l^<䓦!)G_Ϣ{ORG[v xT_}=Jr<\GXl8C/o,+N iԕm B}#84zPH7y,zn08'+8:)D3%SŢIO4@ʥs zWԺbi1gT'e)Yb8DbtzcQ/B?`:,uv(mWhweH0 Se`ɄA8诶SLq$g ̜1}Py=Lh;: %Ojl"Qs3^DC) R^Fx|`_c}_aꄚi RTXn1++aHۧ^_|tD;5&]EjG+Ywk~h UF_4@"cgR4L@'eRG PBd{!$X_/S飻 j#1<7>B̵Ո 1M,Xs2Fu?4Mصk珷pԣ/ʘ40ˉaG&4DZlB>5IվzcЇ!f"NLSZ g߂0 c~6@Cm֢I>Ij*wIl ]c4vS5j bUlD>qr&v?(2_ջҎ>3}:&Q 3Ǔqnmc-M ɓYG &2Zg-m8nM͝06^ɴ'Mr_X89iIq>ss}v.^[Fa#]ϓ9cbb(HTo}yԟ|Aڀ2Z~BCO/@ hFGCsjt=3-5l[!u|#8Qj>?eRnu<_.7#fBS&{O.AEZBM^+)1m#Ϛ ns3eRMw ~~%ϭ&kj^sY~ߍ i;᪌u.C~_;8q"62ZR?0Mx}i".'_a̿$$cZ-B#nD6Gs,14<2Zl_6QW6 \c 6fYڨz5SFڌgJ _O4MF!aolFusD6C]}?{uL蛬mblA^>څC{Mسg3Kqw V7C)b}i␀=a=э{{υ]nYc2}46}v;mCܓ͊x's'qI=v"ĹjĿd}7^,}26 ;6,Z2i̦  "/q>$X~`;N^k}[Qx݀CxJk[kmUʤir}[ Q#:։xy?>Ćb߆ oGHܹs?ldnnsMj>ڐHmz(&R_ Oszܘ.<լYfc~lqb6>D@ϟK( S\EjKn6|UoF6T]jc?sT%iZrqS JA*|wu9 LyJ6"Ey)B.}DҮӼBWY]|CrD=)Mj.i@j6?`N'NOFplugins/file-manager-advanced/application/library/img/src/editor-icons.xcf000064400000033652147176754550022770 0ustar00gimp xcf fileBB=G gimp-commentCreated with GIMPgimp-image-grid(style solid) (fgcolor (color-rgba 0.000000 0.000000 0.000000 1.000000)) (bgcolor (color-rgba 1.000000 1.000000 1.000000 1.000000)) (xspacing 10.000000) (yspacing 10.000000) (spacing-unit inches) (xoffset 0.000000) (yoffset 0.000000) (offset-unit inches) Z s$p(]+\.26{edit_ckeditor.png     m`SRlle^WSSqubgfhaXSRQSShdbsUbilQPSSrh_tcN4MOSSn_|gUo[bVNNRkJZT}MbNLNNdx{~eESEIKNNpL_VURUIAKNNpjtTRJt}wIJNpcUORQsŘntRВځq]>Ցqz{ijhQԇBmlȿ6(Om~tBьHTrp*IӾ?9θ-woAhyxe9]veߟ}U~b|bSKdibw[ƚeЎN}Ϡ|yclϹ쎷P>е싛{tbҗɥsB՟sRܐ}s5W߻JGƏ4zLupDgȰ~kۙn9Ftشb<λ֜<ϲۗ\Һ|z`ǑΈO@Ƒυ㑚˵qvїſыEϖ܄a␞ݪ7c⸚ޣIPѻ4OumCb28%3AY*;7QӾԚD _@KlsHI _׻` edit_pixlreditor.png      J ^ n E ( ,.!'O>& ME-|)Js *WnW*$ա%%21Q`X(- #$3$u_ ?9=28 4 H&7*y  *.+      bei )#;/HX1 @pWYCU"XBc:[t"Xz΂&؊Yk!-Z{~wɪ@y EZmY\"IY".Tb$6vZm9"PϕAJH-[C`RwM,^ang`cK);X<qKoL3LKR8)ń]E0'" .'@%B_"[M#+K[n%h\x4H>_ˤ:sE'J6zݍ)V>0F `B3[2^n{7J0 Am%8X0855uI .gnB2}m ?Mr"?p*J~a8W~Q,3zpI$ogT-{U"@ Vs&8<$(0&ӆ*753nom%e)Z.VuG:zj#a+0D k\NBM(sD9'edit_onlineconvert.png     %/%C%SЙP=BGFETW\`eikϖ.,06:>CFyϖ1 #78)DHzϖ1 !-$)FHzϖ1 %;FJ{ϖ1&3KLNN|ϖ1/E+DQPPN|ϖ/:OM7QPPN|ϖ38PQ)- OPPN|ϕHNQB.R3JPPN|ϙ]OQ%MQD GQQO|ϚbQK9RRJ ;LCB{ϚU2.'-UΙA!! !"]ΟЄѡѡuѡzc[xѡ812svѡ`'cѡoѡo ѡ6ѡfq'Dѡr{"ѣ`:,ѣ0,ѣ~BvMdr nѝM"%"! !]ϡפҠoabd]UffghijiўZCDE3-EDDCDBuў[EFG2'7!FB,EDvў[EFFA:+,GDvў[EFFG% $AFDwў[EFFG+1GFFDwў[EFFG(GGDwў\FA 3IGA 4B:9vўP*(!'SНB ! !!" _Фedit_photopea.png     ))+);5      5  5   q{`=%uG]1 5C_FVjWzX|hZ [\[ pixo.ico     ,, ,!,1>;cb;>>>;yx;>>>>;yx;>>;yx;>>;yx;>>;yx;>>;yx;>>;yx;>>;yx;>>;yx;>>;rq;>>=PO=> >==>>>;mi;>>><88<>>>;33;> ><99<> >>;yx;>>;yx;>>;yx;>>;yx;>>;yx;>>;yx;>>;yx;>>;yx;>>;rq;>>=PO=> >==>>>;mi;>>>=FUUE=>>>=JffJ=>>=H_^G=>>>;yx;>>;yx;>>;yx;>>;yx;>>;yx;>>;yx;>>;yx;>>;yx;>>;rq;>>=PO=> >==>>>;mi;>>GD G A ء C =>ט;edit_codemirror.png     ///,AL=))--0--K`'..%3-1*%++7-;-_d4+-t|)e<9a%u*FS%M7-8)TV0q-?up(*-,-+--*?J;&'++.++L^$,,#1+/(#))5+9+Ya4)+D]G*fZie0*ghi>(s(DQ#4hhj/,7)ehhi`99,p+2DMC)*%++*++,@K<((,,/,,M_%--$2,0)$**6+:,Zc5*,MoQ*fj~y3.|}~D(t)ER$:~}}1,8*y~}~r>?.p,5NXK*+$,+,+,,&)d*  U k  W % hy=edit_creativecloud.png     3q33ſĻĿ׾Ȼ˹ٽӽͼĿ󨧦    !   !" #%$  #8BSJ;, "34JTH Adobe Photoshop CS5 Macintosh 2010-09-19T17:17:49+04:00 2011-04-22T18:30:18+04:00 2011-04-22T18:30:18+04:00 application/vnd.adobe.photoshop xmp.iid:FD7F117407206811B1BA95E37140A3C2 xmp.did:01801174072068119109C4A19543BAD1 xmp.did:01801174072068119109C4A19543BAD1 created xmp.iid:01801174072068119109C4A19543BAD1 2010-09-19T17:17:49+04:00 Adobe Photoshop CS5 Macintosh saved xmp.iid:02801174072068119109C4A19543BAD1 2010-09-19T17:27:56+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:03801174072068119109C4A19543BAD1 2010-09-19T17:41:22+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:04801174072068119109C4A19543BAD1 2010-09-19T17:43:45+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:05801174072068119109C4A19543BAD1 2010-09-19T17:45:17+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:06801174072068119109C4A19543BAD1 2010-09-19T17:46:50+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:07801174072068119109C4A19543BAD1 2010-09-19T17:54:48+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:08801174072068119109C4A19543BAD1 2010-09-19T17:56:02+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:09801174072068119109C4A19543BAD1 2010-09-19T18:04:23+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0A801174072068119109C4A19543BAD1 2010-09-19T18:04:51+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:963608160E2068119109C4A19543BAD1 2010-09-19T18:05:17+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:973608160E2068119109C4A19543BAD1 2010-09-19T18:09:57+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:983608160E2068119109C4A19543BAD1 2010-09-19T18:12:55+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:993608160E2068119109C4A19543BAD1 2010-09-19T18:15:16+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:9A3608160E2068119109C4A19543BAD1 2010-09-19T18:18:59+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:9B3608160E2068119109C4A19543BAD1 2010-09-19T18:19:05+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:9C3608160E2068119109C4A19543BAD1 2010-09-19T18:22:08+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:9D3608160E2068119109C4A19543BAD1 2010-09-19T18:24:50+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:9E3608160E2068119109C4A19543BAD1 2010-09-19T18:27:36+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:9F3608160E2068119109C4A19543BAD1 2010-09-19T18:31:59+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:A03608160E2068119109C4A19543BAD1 2010-09-19T18:33:42+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:08D3AC5E122068119109C4A19543BAD1 2010-09-19T18:35:57+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:09D3AC5E122068119109C4A19543BAD1 2010-09-19T18:36:56+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0AD3AC5E122068119109C4A19543BAD1 2010-09-19T18:39:46+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0BD3AC5E122068119109C4A19543BAD1 2010-09-19T18:49:04+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0CD3AC5E122068119109C4A19543BAD1 2010-09-19T18:50:02+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0180117407206811A3A3FC4A228C975D 2011-02-04T14:32:54+03:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0280117407206811A3A3FC4A228C975D 2011-02-04T14:49:22+03:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0380117407206811A3A3FC4A228C975D 2011-02-04T14:50:09+03:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:C8C4172C0E206811A3A3FC4A228C975D 2011-02-04T15:35:46+03:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:FA7F117407206811B1BA95E37140A3C2 2011-04-22T18:20:12+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:FC7F117407206811B1BA95E37140A3C2 2011-04-22T18:28:45+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:FD7F117407206811B1BA95E37140A3C2 2011-04-22T18:30:18+04:00 Adobe Photoshop CS5 Macintosh / 3 sRGB IEC61966-2.1 php php xmp.did:F77F117407206811B1BA95E37140A3C2 8BIM: printOutputClrSenumClrSRGBCInteenumInteClrmMpBlboolprintSixteenBitbool printerNameTEXT8BIM;printOutputOptionsCptnboolClbrboolRgsMboolCrnCboolCntCboolLblsboolNgtvboolEmlDboolIntrboolBckgObjcRGBCRd doub@oGrn doub@oBl doub@oBrdTUntF#RltBld UntF#RltRsltUntF#Pxl@R vectorDataboolPgPsenumPgPsPgPCLeftUntF#RltTop UntF#RltScl UntF#Prc@Y8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM5d8BIM8BIM x8BIM8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM>8BIM08BIM-,8BIM@@U PH%+28:>DKQ@W]cjFpv}M8BIM6nullVrsnlongenabbool numBeforelongnumAfterlongSpcnlong minOpacitylong maxOpacitylong2BlnMlong8BIM3null Vrsnlong frameStepObjcnull numeratorlong denominatorlongX frameRatedoub@>timeObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlongp denominatorlongX workInTimeObjcnull numeratorlong denominatorlongX workOutTimeObjcnull numeratorlongp denominatorlongXLCntlongglobalTrackListVlLs hasMotionbool8BIM4FnullVrsnlongsheetTimelineOptionsVlLs8BIM8BIMnullbaseNameTEXTUserboundsObjcRct1Top longLeftlongBtomlongRghtlong0slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlong0urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM H HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)Km8BIM,8BIM Y = Adobe_CMAdobed            "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?EWNS@}Fͻ$Ҷ>чv9ն7Mfnĕo]?w~-7[mu@8څF;MSgo"J0>nzݸo?Cm}Ww?M~gT/C/7vWs7;{6oII_g˙~=}2vSGn?^ki(7">g3u>ٝmvSs}?Dm?M8aF.f>PFt=O4) f?@w/?$~E=Ky}^AcVG;o/O2JzEfh~k}o$?^gjvĸ3o~wI;zDz{}IvǩvRS_Obuؿ?kL?g~7RAK_TmO}/Є2|j8~l/7}GwϫN}?z/K7x>,VmOf_jUG_7|{8'x9lw5_{뾇Id7dQȊroez1/~ v:n!x o8BIM!UAdobe PhotoshopAdobe Photoshop CS58BIM".MM*bj(1r2i ' 'Adobe Photoshop CS5 Macintosh2011:04:22 18:30:180&(.HH8BIMmopt4TargetSettingsMttCObjc NativeQuadBl longGrn longRd longTrnsbool fileFormatenum FileFormatPNG24 interlacedbool noMatteColorbooltransparencyDitherAlgorithmenumDitherAlgorithmNonetransparencyDitherAmountlong8BIMmsetnullHTMLBackgroundSettingsObjcnullBackgroundColorBluelongBackgroundColorGreenlongBackgroundColorRedlongBackgroundColorStatelongBackgroundImagePathTEXTUseImageAsBackgroundbool HTMLSettingsObjcnullAlwaysAddAltAttributebool AttributeCaselong CloseAllTagsboolEncodinglongFileSavingSettingsObjcnull CopyBackgroundboolDuplicateFileNameBehaviorlongHtmlFileNameComponentsVlLslonglonglonglonglonglongImageSubfolderNameTEXTimagesNameCompatibilityObjcnull NameCompatMacboolNameCompatUNIXboolNameCompatWindowsboolOutputMultipleFilesboolSavingFileNameComponentsVlLs longlonglonglonglonglonglonglonglongSliceFileNameComponentsVlLslonglonglonglonglonglongUseImageSubfolderboolUseLongExtensionsboolGoLiveCompatibleboolImageMapLocationlong ImageMapTypelongIncludeCommentsboolIncludeZeroMarginsboolIndentlong LineEndingslong OutputXHTMLboolQuoteAllAttributesboolSpacersEmptyCellslongSpacersHorizontallongSpacersVerticallong StylesFormatlong TDWidthHeightlongTagCaselongUseCSSboolUseLongHTMLExtensionboolMetadataOutputSettingsObjcnull AddCustomIRboolAddEXIFboolAddXMPboolAddXMPSourceFileURIbool ColorPolicylongMetadataPolicylongWriteMinimalXMPboolWriteXMPToSidecarFilesboolVersionlong8BIMms4w8BIMmaniIRFR8BIMAnDsnullAFStlongFrInVlLsObjcnullFrIDlonggNFrDllongFStsVlLsObjcnullFsIDlongAFrmlongFsFrVlLslonggNLCntlong8BIMRoll8BIMmfrix0,b8BIMnorm (unknown8BIMluniunknown8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAlcMr8BIMPlLdxplcL$63b0519e-047e-1173-a2a2-eaea0594271a?@F?@F@H@Hwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%63b0519e-047e-1173-a2a2-eaea0594271aplacedTEXT%d5f75db0-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub?doub@Fdoub?doub@Fdoub@Hdoubdoub@HnonAffineTransformVlLsdoubdoub?doub@Fdoub?doub@Fdoub@Hdoubdoub@HwarpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R8BIMfxrp?C08BIMnorm<(Layer 58BIMluniLayer 58BIMlnsrlayr8BIMlyid,8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAld8.[>8BIMfxrp?":]+J8BIMnorm ( folder_closed8BIMluni folder_closed8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAlcNH8BIMPlLdxplcL$6ef1e0ad-047e-1173-a2a2-eaea0594271a@@F@I@F@I@W@@@W@warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%6ef1e0ad-047e-1173-a2a2-eaea0594271aplacedTEXT%d5f75db3-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoub@doub@Fdoub@Idoub@Fdoub@Idoub@W@doub@doub@W@nonAffineTransformVlLsdoub@doub@Fdoub@Idoub@Fdoub@Idoub@W@doub@doub@W@warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R8BIMfxrp@@FM}/n8BIMnorm (tar_gz8BIMlunitar_gz8BIMlnsrrend8BIMlyid!8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAlcNm@8BIMPlLdxplcL$60c01c09-0488-1173-a2a2-eaea0594271a@4@G@4@G@@warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%60c01c09-0488-1173-a2a2-eaea0594271aplacedTEXT%d5f75db6-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@4doub@Gdoub@4doub@Gdoub@doubdoub@nonAffineTransformVlLsdoubdoub@4doub@Gdoub@4doub@Gdoub@doubdoub@warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R8BIMfxrp@4/q8BIMnorm (tar_bz8BIMlunitar_bz8BIMlnsrrend8BIMlyid"8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAlcN8BIMPlLdxplcL$619aeb1b-0488-1173-a2a2-eaea0594271a@@G@@G@@warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%619aeb1b-0488-1173-a2a2-eaea0594271aplacedTEXT%faa87fc0-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@doub@Gdoub@doub@Gdoub@doubdoub@nonAffineTransformVlLsdoubdoub@doub@Gdoub@doub@Gdoub@doubdoub@warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R8BIMfxrp@/Hm\8BIMnorm (rar8BIMluni rar8BIMlnsrrend8BIMlyid#8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAlcNo8BIMPlLdxplcL$6a10139e-0488-1173-a2a2-eaea0594271a陙@33333@G@33333@G@33333陙@33333warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%6a10139e-0488-1173-a2a2-eaea0594271aplacedTEXT%faa87fc3-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoub陙doub@33333doub@Gdoub@33333doub@Gdoub@33333doub陙doub@33333nonAffineTransformVlLsdoub陙doub@33333doub@Gdoub@33333doub@Gdoub@33333doub陙doub@33333warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R8BIMfxrp陙@33333/A8BIMnorm (swf8BIMluni swf8BIMlnsrrend8BIMlyid$8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAlcN8BIMPlLdxplcL$53a52047-0489-1173-a2a2-eaea0594271a@@G@@G@L@Lwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%53a52047-0489-1173-a2a2-eaea0594271aplacedTEXT%faa87fc6-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@doub@Gdoub@doub@Gdoub@Ldoubdoub@LnonAffineTransformVlLsdoubdoub@doub@Gdoub@doub@Gdoub@Ldoubdoub@LwarpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R8BIMfxrp@U0 g p s8BIMnorm<(Layer 48BIMluniLayer 48BIMlnsrlayr8BIMlyid&8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAlc8BIMfxrp@X@/8BIMnorm ( application8BIMluni application8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAlcOHM8BIMPlLdxplcL$20883df8-0480-1173-a2a2-eaea0594271a@b@G@b@G@h@hwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%20883df8-0480-1173-a2a2-eaea0594271aplacedTEXT%faaa2896-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@bdoub@Gdoub@bdoub@Gdoub@hdoubdoub@hnonAffineTransformVlLsdoubdoub@bdoub@Gdoub@bdoub@Gdoub@hdoubdoub@hwarpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R8BIMfxrp@b-].8BIMnorm (audio8BIMluniaudio8BIMlnsrrend8BIMlyid 8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAlcOn8BIMPlLdxplcL$928d337a-0482-1173-a2a2-eaea0594271a@r@G@r@G@u@uwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%928d337a-0482-1173-a2a2-eaea0594271aplacedTEXT%faaa2899-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@rdoub@Gdoub@rdoub@Gdoub@udoubdoub@unonAffineTransformVlLsdoubdoub@rdoub@Gdoub@rdoub@Gdoub@udoubdoub@uwarpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R8BIMfxrp@r_0dv^8BIMnorm (video8BIMlunivideo8BIMlnsrrend8BIMlyid 8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAlcO8BIMPlLdxplcL$a01c1b80-0482-1173-a2a2-eaea0594271a@u@H@u@H@x@xwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%a01c1b80-0482-1173-a2a2-eaea0594271aplacedTEXT%faaa289c-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@udoub@Hdoub@udoub@Hdoub@xdoubdoub@xnonAffineTransformVlLsdoubdoub@udoub@Hdoub@udoub@Hdoub@xdoubdoub@xwarpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R8BIMfxrp@u0t[8BIMnorm (txt8BIMluni txt8BIMlnsrrend8BIMlyid 8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAlcO38BIMPlLdxplcL$00ebdf9f-0482-1173-a2a2-eaea0594271a@i @H@i @H@o @o warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%00ebdf9f-0482-1173-a2a2-eaea0594271aplacedTEXT%faaa289f-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@i doub@Hdoub@i doub@Hdoub@o doubdoub@o nonAffineTransformVlLsdoubdoub@i doub@Hdoub@i doub@Hdoub@o doubdoub@o warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R8BIMfxrp@i 0Qy8BIMnorm (rtf8BIMluni rtf8BIMlnsrrend8BIMlyid 8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAlcP}8BIMPlLdxplcL$c782a35c-0482-1173-a2a2-eaea0594271a@y@H@y@H@|@|warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%c782a35c-0482-1173-a2a2-eaea0594271aplacedTEXT%faabed85-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@ydoub@Hdoub@ydoub@Hdoub@|doubdoub@|nonAffineTransformVlLsdoubdoub@ydoub@Hdoub@ydoub@Hdoub@|doubdoub@|warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R8BIMfxrp@y0@V8BIMnorm (pdf8BIMluni pdf8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAlcP;~8BIMPlLdxplcL$dfc1d08c-0483-1173-a2a2-eaea0594271a@|0@H@|0@H@0@0warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%dfc1d08c-0483-1173-a2a2-eaea0594271aplacedTEXT%faabed88-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@|0doub@Hdoub@|0doub@Hdoub@0doubdoub@0nonAffineTransformVlLsdoubdoub@|0doub@Hdoub@|0doub@Hdoub@0doubdoub@0warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R8BIMfxrp@|0%-8BIMnorm (office8BIMlunioffice8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAlcPqi8BIMPlLdxplcL$fbf50e48-0483-1173-a2a2-eaea0594271a@`@F@`@F@0@0warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%fbf50e48-0483-1173-a2a2-eaea0594271aplacedTEXT%faabed8b-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@`doub@Fdoub@`doub@Fdoub@0doubdoub@0nonAffineTransformVlLsdoubdoub@`doub@Fdoub@`doub@Fdoub@0doubdoub@0warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R8BIMfxrp@`'V/y>8BIMnorm (html8BIMluni html8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAlcP8BIMPlLdxplcL$09ed4b52-0484-1173-a2a2-eaea0594271a@8@G@8@G@@warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%09ed4b52-0484-1173-a2a2-eaea0594271aplacedTEXT%faabed8e-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@8doub@Gdoub@8doub@Gdoub@doubdoub@nonAffineTransformVlLsdoubdoub@8doub@Gdoub@8doub@Gdoub@doubdoub@warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R8BIMfxrp@8Y/8BIMnorm (css8BIMluni css8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAlcP}8BIMPlLdxplcL$39292081-0485-1173-a2a2-eaea0594271a@@G@@G@H@Hwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%39292081-0485-1173-a2a2-eaea0594271aplacedTEXT%faadcbec-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@doub@Gdoub@doub@Gdoub@Hdoubdoub@HnonAffineTransformVlLsdoubdoub@doub@Gdoub@doub@Gdoub@Hdoubdoub@HwarpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R8BIMfxrp@/8BIMnorm (pl8BIMlunipl8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAlcP8BIMPlLdxplcL$7d242227-0485-1173-a2a2-eaea0594271a@@G@@G@h@hwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%7d242227-0485-1173-a2a2-eaea0594271aplacedTEXT%faadcbef-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@doub@Gdoub@doub@Gdoub@hdoubdoub@hnonAffineTransformVlLsdoubdoub@doub@Gdoub@doub@Gdoub@hdoubdoub@hwarpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R8BIMfxrp@/ 8BIMnorm (py8BIMlunipy8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAlcQ/8BIMPlLdxplcL$e25c83d8-0485-1173-a2a2-eaea0594271a@x@G@x@G@@warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%e25c83d8-0485-1173-a2a2-eaea0594271aplacedTEXT%faadcbf2-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@xdoub@Gdoub@xdoub@Gdoub@doubdoub@nonAffineTransformVlLsdoubdoub@xdoub@Gdoub@xdoub@Gdoub@doubdoub@warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R8BIMfxrp@x!P/8BIMnorm (rb8BIMlunirb8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAlcQX\8BIMPlLdxplcL$f3bba182-0485-1173-a2a2-eaea0594271a@@G@@G@@warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%f3bba182-0485-1173-a2a2-eaea0594271aplacedTEXT%faaf1392-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@doub@Gdoub@doub@Gdoub@doubdoub@nonAffineTransformVlLsdoubdoub@doub@Gdoub@doub@Gdoub@doubdoub@warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R8BIMfxrp@S/8BIMnorm (sh8BIMlunish8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAlcQ8BIMPlLdxplcL$bc26a07a-0486-1173-a2a2-eaea0594271a@@G@@G@@warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%bc26a07a-0486-1173-a2a2-eaea0594271aplacedTEXT%faaf1395-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@doub@Gdoub@doub@Gdoub@doubdoub@nonAffineTransformVlLsdoubdoub@doub@Gdoub@doub@Gdoub@doubdoub@warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R8BIMfxrp@/8BIMnorm (c++8BIMluni c++8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAlcQq8BIMPlLdxplcL$bdafd78e-0486-1173-a2a2-eaea0594271a@(@G@(@G@@warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%bdafd78e-0486-1173-a2a2-eaea0594271aplacedTEXT%faaf1398-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@(doub@Gdoub@(doub@Gdoub@doubdoub@nonAffineTransformVlLsdoubdoub@(doub@Gdoub@(doub@Gdoub@doubdoub@warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R8BIMfxrp@(/8BIMnorm (pl8BIMlunipl8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAlcQٙ8BIMPlLdxplcL$ebc7ebeb-0486-1173-a2a2-eaea0594271a@@G@@G@8@8warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%ebc7ebeb-0486-1173-a2a2-eaea0594271aplacedTEXT%faaf139b-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@doub@Gdoub@doub@Gdoub@8doubdoub@8nonAffineTransformVlLsdoubdoub@doub@Gdoub@doub@Gdoub@8doubdoub@8warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R8BIMfxrp@ ////8BIMnorm<(Layer 18BIMluniLayer 18BIMlnsrlayr8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAlcR8BIMfxrp$(////8BIMnorm<(Layer 28BIMluniLayer 28BIMlnsrlayr8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAlcR:8BIMfxrp*&&&8BIMnorm%d(php8BIMTySh$(??@@2TxLrTxt TEXTphp textGriddingenum textGriddingNoneOrntenumOrntHrznAntAenumAnntantiAliasSharp TextIndexlong EngineDatatdta"\ << /EngineDict << /Editor << /Text (php ) >> /ParagraphRun << /DefaultRunData << /ParagraphSheet << /DefaultStyleSheet 0 /Properties << >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> /RunArray [ << /ParagraphSheet << /DefaultStyleSheet 0 /Properties << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 8 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> ] /RunLengthArray [ 4 ] /IsJoinable 1 >> /StyleRun << /DefaultRunData << /StyleSheet << /StyleSheetData << >> >> >> /RunArray [ << /StyleSheet << /StyleSheetData << /Font 0 /FontSize 10.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading .01 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking -10 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 1.0 1.0 1.0 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst false /YUnderline 1 /OutlineWidth .4 /CharacterDirection 0 /HindiNumbers false /Kashida 1 /DiacriticPos 2 >> >> >> ] /RunLengthArray [ 4 ] /IsJoinable 2 >> /GridInfo << /GridIsOn false /ShowGrid false /GridSize 18.0 /GridLeading 22.0 /GridColor << /Type 1 /Values [ 0.0 0.0 0.0 1.0 ] >> /GridLeadingFillColor << /Type 1 /Values [ 0.0 0.0 0.0 1.0 ] >> /AlignLineHeightToGridFlags false >> /AntiAlias 4 /UseFractionalGlyphWidths true /Rendered << /Version 1 /Shapes << /WritingDirection 0 /Children [ << /ShapeType 0 /Procession 0 /Lines << /WritingDirection 0 /Children [ ] >> /Cookie << /Photoshop << /ShapeType 0 /PointBase [ 0.0 0.0 ] /Base << /ShapeType 0 /TransformPoint0 [ 1.0 0.0 ] /TransformPoint1 [ 0.0 1.0 ] /TransformPoint2 [ 0.0 0.0 ] >> >> >> >> ] >> >> >> /ResourceDict << /KinsokuSet [ << /Name (PhotoshopKinsokuHard) /NoStart (00 00    0=]0 0 0 00000000A0C0E0G0I0c000000000000000000?!\)]},.:;!!  0) /NoEnd (  0;[00 0 00\([{ 0) /Keep (  %) /Hanging (00.,) >> << /Name (PhotoshopKinsokuSoft) /NoStart (00 0   0=]0 0 0 0000000) /NoEnd (  0;[00 0 00) /Keep (  %) /Hanging (00.,) >> ] /MojiKumiSet [ << /InternalName (Photoshop6MojiKumiSet1) >> << /InternalName (Photoshop6MojiKumiSet2) >> << /InternalName (Photoshop6MojiKumiSet3) >> << /InternalName (Photoshop6MojiKumiSet4) >> ] /TheNormalStyleSheet 0 /TheNormalParagraphSheet 0 /ParagraphSheetSet [ << /Name (Normal RGB) /DefaultStyleSheet 0 /Properties << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 8 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> ] /StyleSheetSet [ << /Name (Normal RGB) /StyleSheetData << /Font 1 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst true /YUnderline 1 /OutlineWidth 1.0 /CharacterDirection 0 /HindiNumbers false /Kashida 1 /DiacriticPos 2 >> >> ] /FontSet [ << /Name (ArialMT) /Script 0 /FontType 1 /Synthetic 0 >> << /Name (MyriadPro-Regular) /Script 0 /FontType 0 /Synthetic 0 >> << /Name (AdobeInvisFont) /Script 0 /FontType 0 /Synthetic 0 >> ] /SuperscriptSize .583 /SuperscriptPosition .333 /SubscriptSize .583 /SubscriptPosition .333 /SmallCapSize .7 >> /DocumentResources << /KinsokuSet [ << /Name (PhotoshopKinsokuHard) /NoStart (00 00    0=]0 0 0 00000000A0C0E0G0I0c000000000000000000?!\)]},.:;!!  0) /NoEnd (  0;[00 0 00\([{ 0) /Keep (  %) /Hanging (00.,) >> << /Name (PhotoshopKinsokuSoft) /NoStart (00 0   0=]0 0 0 0000000) /NoEnd (  0;[00 0 00) /Keep (  %) /Hanging (00.,) >> ] /MojiKumiSet [ << /InternalName (Photoshop6MojiKumiSet1) >> << /InternalName (Photoshop6MojiKumiSet2) >> << /InternalName (Photoshop6MojiKumiSet3) >> << /InternalName (Photoshop6MojiKumiSet4) >> ] /TheNormalStyleSheet 0 /TheNormalParagraphSheet 0 /ParagraphSheetSet [ << /Name (Normal RGB) /DefaultStyleSheet 0 /Properties << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 8 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> ] /StyleSheetSet [ << /Name (Normal RGB) /StyleSheetData << /Font 1 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst true /YUnderline 1 /OutlineWidth 1.0 /CharacterDirection 0 /HindiNumbers false /Kashida 1 /DiacriticPos 2 >> >> ] /FontSet [ << /Name (ArialMT) /Script 0 /FontType 1 /Synthetic 0 >> << /Name (MyriadPro-Regular) /Script 0 /FontType 0 /Synthetic 0 >> << /Name (AdobeInvisFont) /Script 0 /FontType 0 /Synthetic 0 >> ] /SuperscriptSize .583 /SuperscriptPosition .333 /SubscriptSize .583 /SubscriptPosition .333 /SmallCapSize .7 >> >>warp warpStyleenum warpStylewarpNone warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrzn8BIMluni php8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAlcZ8BIMfxrp@/8BIMnorm (xml8BIMluni xml8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAlcZ*8BIMPlLdxplcL$10ef980d-0488-1173-a2a2-eaea0594271a@H@G@H@G@d@dwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%10ef980d-0488-1173-a2a2-eaea0594271aplacedTEXT%fac41c07-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@Hdoub@Gdoub@Hdoub@Gdoub@ddoubdoub@dnonAffineTransformVlLsdoubdoub@Hdoub@Gdoub@Hdoub@Gdoub@ddoubdoub@dwarpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R8BIMfxrp@HK/@fT8BIMnorm (zip8BIMluni zip8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAlcZT8BIMPlLdxplcL$16ba0847-0488-1173-a2a2-eaea0594271a@l@G@l@G@,@,warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%16ba0847-0488-1173-a2a2-eaea0594271aplacedTEXT%fac41c0a-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@ldoub@Gdoub@ldoub@Gdoub@,doubdoub@,nonAffineTransformVlLsdoubdoub@ldoub@Gdoub@ldoub@Gdoub@,doubdoub@,warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R8BIMfxrp@l/8BIMnorm (js8BIMlunijs8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAlcZ}|8BIMPlLdxplcL$4c02335c-0485-1173-a2a2-eaea0594271a@X@G@X@G@@warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%4c02335c-0485-1173-a2a2-eaea0594271aplacedTEXT%fac41c0d-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@Xdoub@Gdoub@Xdoub@Gdoub@doubdoub@nonAffineTransformVlLsdoubdoub@Xdoub@Gdoub@Xdoub@Gdoub@doubdoub@warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R8BIMfxrp@Xl/8BIMnorm ( folder_open8BIMluni folder_open8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAlcZ78BIMPlLdxplcL$94592e07-047e-1173-a2a2-eaea0594271a@W@G@W@G@a@awarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%94592e07-047e-1173-a2a2-eaea0594271aplacedTEXT%fac41c10-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@Wdoub@Gdoub@Wdoub@Gdoub@adoubdoub@anonAffineTransformVlLsdoubdoub@Wdoub@Gdoub@Wdoub@Gdoub@adoubdoub@awarpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R8BIMfxrp@W+/8BIMnorm (image8BIMluniimage8BIMlnsrrend8BIMlyid 8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAlcZ8BIMPlLdxplcL$6959b6d6-0482-1173-a2a2-eaea0594271a@o`@G@o`@G@r@rwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%6959b6d6-0482-1173-a2a2-eaea0594271aplacedTEXT%fac5ae2e-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@o`doub@Gdoub@o`doub@Gdoub@rdoubdoub@rnonAffineTransformVlLsdoubdoub@o`doub@Gdoub@o`doub@Gdoub@rdoubdoub@rwarpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R8BIMfxrp@o`    rG"  !*2@AABCE@2   #%(&'("($  )&$ &$&&% ! ͯ ˺ ƹ  Ų ĿþĿŽļuŽu˳~z½uʛywþuɛ{yĿuɭſuƿvÄuomƽºpn¼mkþplr¾zrr ®~{z¨}zàŸ ÿ ߲ۗ!#!#&$''$!))#$(%(!&$!&!" %$        μͻ wͻ wн w湣wwȤw%氣žz%⣣ɰϵϣś ӽ ɗĮ ͜ϳǟ׵͢ 㿿ߧţ㽽 㽽 ⴣỻ⹹ḸḸ෷෷߷߷෷ ߷߷߷߷۷!"&$'&%$)() (&)$$%' &         ﵵ G::G::ֿG:: :: : %ϴ%ڽ޻׫൭ !㹶༸  Ŀ   9 " "'(&'/--.)/0'0&+'*$0&+('-*/!'#"  Ҵüs̽%xxҼxü̷sx̽ůrª Ҽ§  ü̷ħ̽ůũªܭڸ!Ҽ§!̷ħϬݸ#ůũ־$ªƭڶ§ӳ ħШũֿ˹ƭڷdz¤ ˷ ̾˹÷ƺý ˹ֿվ ս ս ֿӾվҽսѽսн ֿ ӾнվҽϽ սѽ׾սн ӾнҽϽѽ׾ннϽ׾ #!)%*'/+//)-/.'&')/%,-)"!.+ *$'     t 'y yytys սԺ  ֻؽ սԺ!ֻ罹!ؽ֪ս&Ժ׵ֻ軽ؽװ͵ ض̻Ҿɻ          #"* $(0&).()./00-)0./'//+*,0*%)(##  4 ~ < ~} :#(%2UN    "      %`*    'e܂$ $99:;;=9=;;:99$') $* %"# " s}~}|}}~}|}p~}|}¾ًy~}|}~}|}e}ep S _eu n~ ti}ޑs `}rk}rx}p}~oƜ~~o ~ ~n~m~}l~}l~}jz|iz{iz{hz{hz{gz~~~~~~~~zfz~~}}~}~}~zfz}|}|}}|}{f{|}|}|}||}}|}zez|{|{|{|{|{|{{yevkjklmnopqxzel{oz\;jdW() # *$!% !) 櫞ıϲؽ հp׼¦ _}ջ~Ӹz޻zкΔЦ˷ụѦȶ޳²ުNލr' %$"# "#% ̏}   ӽ߾  p   rG"  88*@22@AABCE@2%"(*...+ !'#""!"+'#+!((&"($&('ͯ ˺ ƹ  Ų  Ŀþ蚭 Ŀꘘ笘瘗񘐽 𩕕敕u(𕕔𩕕攕𔔩攕u(擧𒒓撧½uþuĿuſuƿvƽº¼þ¾ ¿¿àŸ șə ٔș Ǚߴ ƙݴřߴÙÙߵݷ ޷˿ݸʾݸɼܹȻܹǺϔϔǹŷ%%"(*...+ )*&*'*"& *("%#**-( qq q q pqpqpqqpqpqpq pn jkjkjkjkj gggggg gddddcdۂddcddμa`aa`a``aaa`ͻ w_(^__^_~__^_^^}^_ͻ w\(\]{\\\]|{\{\{\Ͻ w[{{\[[[\пwYXYYXwYXYcýwY zY ɰϵYYźY ǼY ½Įl ϳl׵l 㿿ll㽽l㽽lk wkj~z~}|{y~~jỻi~j~j~i⹹h|LQ T||hgUc[uuge~Uss cssfḸe}UjrqeḸc|Uno bppc෷a{yUmooa෷`xW{{jll`߷^xW{||}lkk_߷^wvXggilliaji^෷\uXxyyzӃ{ nhh\ ߷[sXqŕr iggZ߷ZrqXllffeZ߷YqjqqjfY߷XlkjihhgfedaWWmkmjihhgfedcac``W UVWVUVVUWVVUVUWUWVUVVU%"(*.--*)'+"*(+&&%()'#$ #&!     ﵵ摦菏奏収  䌌G::䊋䊋G::䉟㈟G:::::    % 6!66666a6X=5X`4C@FHFDCBA@ ?FCC44CQCQC42BJ#$JBB41DI%/)I==20CI%;;/I;;00BI%FF4I:://AJ%88/J99/.@I%FF6I88.->H&AA5H66-,>H&AA5H66-+>H&1148ϼ84.H55+)=G&>@KLA 7G44)(;G&:QQ:4G22((:F&6^^61F11(':Q:X:Q1''654210/'&:6:5544210/.2..&%&%%&%%&%&%&&%   rG"  88*@22@AABCE@2%#(*...-!'#""!"+'#+!((&"($&('ͯ ˺ ƹ  Ų  Ŀþ Ŀ瘘߬񘐽𩕕𩕕𩕐u敕𔕔𔔩𔕐u(擒𒒓𧒒½uþuĿuſuƿvƽº¼þ¾ ¿¿àŸ șə ٔș Ǚߴ ƙݴřߴÙÙߵݷ ޷˿ݸʾݸɼܹȻܹǺϔϔǹŷ%%#(*....)*&*'*"& *("%#**-( qq q q pqpqpqqpqpqpq pnn jkjkjkjjkj gggggggg gddddcd΂ddddμa`aa`a`aa`ͻ w_^__^__^_^^^}^_ͻ w\(\]\\\\]\\\\{\\Ͻ w[{{\[[[[[\пwYXYcwYXYcýwY zY ɰϵYYźY ǼY ½Įl ϳl׵l 㿿ll㽽l㽽lk wkj~z~}|{y~~jỻi~j~j~i⹹h|LQ T||hgUc[uuge~Uss cssfḸe}UjrqeḸc|Uno bppc෷a{yUmooa෷`xW{{jll`߷^xW{||}lkk_߷^wvXggilliaji^෷\uXxyyzӃ{ nhh\ ߷[sXqŕr iggZ߷ZrqXllffeZ߷YqjqqjfY߷XlkjihhgfedaWWmkmjihhgfedcac``W UVWVUVVUWVVUVUWUWVUVVU%#(*.--,)'+"*(+&&%()'#$ #&!     ﵵ叏ܥ줏 G::䋋G::䉈G:::: :    % 6!66666a6X=5X`4C@FHFDCBA@ ?FCC44CQCQC42BJ#$JBB41DI%/)I==20CI%;;/I;;00BI%FF4I:://AJ%88/J99/.@I%FF6I88.->H&AA5H66-,>H&AA5H66-+>H&1148ϼ84.H55+)=G&>@KLA 7G44)(;G&:QQ:4G22((:F&6^^61F11(':Q:X:Q1''654210/'&:6:5544210/.2..&%&%%&%%&%&%&&%    rG"  88*p@22@AABCE@2%!"#&-(&!'#""!"+'#+!((&"($&('ͯ ˺ ƹ  Ų  Ŀþ 蚭 Ŀ笘 u𔕔u撓½u 𑒒þuĿuſuƿvƽº¼þ¾ ¿¿àŸ șə ٔș Ǚߴ ƙݴřߴÙÙߵݷ ޷˿ݸʾݸɼܹȻܹǺϔϔǹŷ%%!"#+-(&)*&*'*"& *("%#**-( qq q q pqpqpqqpqpqpq pn jkjkjkjkj g ggghgg dۂddcd μa``aa`a`ͻ w_^_^_^___^_^_ͻ w\]\\\]\\Ͻ w[ [\\{[[[\пwYXYcwYXYcýwY zY ɰϵYYźY ǼY ½Įl ϳl׵l 㿿ll㽽l㽽lk wkj~z~}|{y~~jỻi~j~j~i⹹h|LQ T||hgUc[uuge~Uss cssfḸe}UjrqeḸc|Uno bppc෷a{yUmooa෷`xW{{jll`߷^xW{||}lkk_߷^wvXggilliaji^෷\uXxyyzӃ{ nhh\ ߷[sXqŕr iggZ߷ZrqXllffeZ߷YqjqqjfY߷XlkjihhgfedaWWmkmjihhgfedcac``W UVWVUVVUWVVUVUWUWVUVVU%!"#&,'%)'+"*(+&&%()'#$ #&!     ﵵ 摦奏G::G::㈉G:: :: :    % 6!66666a6X=5X`4C@FHFDCBA@ ?FCC44CQCQC42BJ#$JBB41DI%/)I==20CI%;;/I;;00BI%FF4I:://AJ%88/J99/.@I%FF6I88.->H&AA5H66-,>H&AA5H66-+>H&1148ϼ84.H55+)=G&>@KLA 7G44)(;G&:QQ:4G22((:F&6^^61F11(':Q:X:Q1''654210/'&:6:5544210/.2..&%&%%&%%&%&%&&%  rG"  !*2@AABCE@2)&,//+/' #+%""""+'& ("%&%!! ͯ ˺ ƹ  ŲإĿþ Ŀ ՋҊuҋu½uЋþuϋĿuȋſu̓ƿv͍ƽº¼ļ  ³  àŸԿÿҿѿ˼˼ ƽ߲ۗ% (&,))//* //#*.#'*$&$ '#$!$$! xx x x wvwvwvwvwwss nonoonnonnonnoonnnonnjjjjjj gfggghgfggfggfgg hgμbbbbcbbͻ wbbbbcbbͻ w_^___^_^_^_^_^Ͻ w\]]\[]\\\]\\\]\\пw[YZY[Z[Z[[Z[Z[[ZwYXYXYXYiýwYXYXYXYzYXYXYXɰϵYXYXYYXYX͝ukkjYXY ɀpliggYX |tpmmlkĮY րwvsrpozϳYywtru׵Yyz{ 㿿ށywxxxwwx㽽vvwx㽽vxyuuvwuvỻ tuututuutv⹹}svwxrurtḸߓsrsrḸٙrv෷{rsqqr෷rq߷ssr ߷srw෷ sr ߷߷߷߷۷)+&(+(++0-/-1'.+-'%%' ! (h(h (h (h &' &''&'&''&'&'&'&'&''$$ ﵵ       G:: G::G::    :: ! :   ,     %έ \RTU XGJMNN I@ACFHJ !N@?@@ADS h@@??D @CO@A@??@yZ?@?@BDx?AA?A?AQ?DEF?E?Bv?>?FN>?>?>x??>w?>E>?`   $"Cri,6FkG41uX`/v`'[Z1@y;/Xxj}{0U\[&TW8[I, k1!QR#V#3Q&3{ R!^!!M9FfA:!s2ި  $&!#&**))*$&'&(+*+*(%%# !###(***)(#)'/,&/.%-0/(/*((%)&*)*)&$!  .#8#8#$#8#"#! #8#"_F!# !?csuhH# #8#UY%"#$hx$#8# !W#$,)#8#z(#,!8#5Y#!f8#""#hnRh6#$T=#!03# "#11##$DD1#{)#!$#,P0#6d#"%\8#1H0#"!"#$#P63#UF!!##5## }и0#$J9##|.?#$3:8#6p!#>#>#8"!)># [!#8UP$3>#$###8###D>#$'#8 z+P 6 ##$3n#8 ;H>} _DJ+!#.F"#8 j (#8 vu$#8 v%#$#8 k Wb #81PNDdJL)bDJL;!8d6!)4#j>#! .4#j># %,4#j>#(,4#n>#!#˘"6# :})!##"  !8#$"#"!"!"#8#8#8#8#4+96J=NR7#7-f0gM(5n!BoHl֏M$ T2a4:( \FU `/ u EC{ ({,-\ Uc 6 h)Il3}> LHa$8^!R4jn ,v'x#BTM%[y!Z;Qi JB&``?c| M :"@Ѣ Rz֦Jt:)n2S^__]Vݷaf`__\L$"M&MV/J?4 $ p%84w4ty{|uH"^mk*+c|{z~z8eCa$u~2 l*p‡}~X"u 4i8c?m6'j/Q2s,sľ0,<),+, . g`|.&$(-,+)t$O)@qHZ ^C=\O/~_n `O iś#ڭ= 9!+e L U 90 ^ 4dZ  OPkJN* X/AH#YAC& oM_):XPNoQ )$&`W G{--m`4>9Qx>$.+C9QRa F#/Up<:?Hd M Jpa.nn%9"YS mXCaH9PQT;+#o%y(6&|' :T $&!#&**))*$&'&(+*+*'!%$ !###(***)'%))//*..%,0.+0*(($)&*(*)&$! *55  55^D =bqsgF 5TW" gv 5V )&5y%)52We5gmQg4 R:-0// AB/{& )N-4c"Z5/F- N40TD2 {и- H5z*= 0854n <<5&<Z5TN 0<  5 B< $5y( N 4 0m59F<} ]AH(*D5h%5us 5u" 5jV`5/NLBcHJ&`AHJ95 c4&1h<*1h<")1h<%)1m< ˘4 8|&5 55551(54H<QR7%;jg 7t(5nCQ2n֏M$ S2a4f() d\ 3< ` |g/ U E`0{ ^ol{2B = c ' rj6l3s[>7Has$8BR%jQn ,Wĭz#rrB=M[y?=;sL ~6zo/EjF› @c[r 8_  )r.Ѥ <{֦L{U<!n";FGGF_V޹GJGC6"MsMV&7/1 f q»)2U$tlà rWXYV5_nM¼" !IYXZW:g1G%x.M)pÉ~ZU  *dk8cAL&)M S,Q,rám"*! !". gaZĺ#%"" !U$bº8%f+su1^y^B.@8)EN D: jǞ#y*9`o-f 7U 9" E $IA : t8kJo9yc)`o ?}/-K[.CnMDp*:Až ;NvQ: )ys$u®%`?Gz-!PE6>{ )QWq-ā$wbC9Q ;GyF#0>R <;.3fdd Pv4p`.gĺOndn%9"Y; NXCb2(99U;+#o$W7'|' :U $&!#&**))*#&'&(+*+*("%% !##%*)**)'(*)/0),-#.-,&1,))&)'*)*)&$! , 6 6 ! ! 6   6 _F >dsthH! 6 UY# !hx! 6 X !+' 6 z& +6 4Y f6  hnRh5 !T< /1  00 !BD0 |' ! +O/ 5d #[6 0G/  ! O51 UF  4  |ѹ/ !I6 {,> !196 5p!= = 6'= [ 6UO!1= !! 6! D= !& 6z) O 5 !1n 6:H=~ _BI) ,F 6i& 6vt! 6v# ! 6kXb 60ONDdIL'bBIL:6 d5'2 i= ,2 i= #+2 i= &+2 n= !̙5 9}' 6 !  6 6 6 6 2)65I<QU7'?ll$ ,5n K t֏M$ S2a;/  \  f/  K {  ~5c  ml3>Ha$B  Rj ,z#BM  [x  C  !"    Cc     Ѥ }֦NB!p   V (RM[- v2 t  ^r  @l -) )pŏc s8cJ/ Z%  ,sŤ   / ge  '" ("wb ^D   iɤ# ? 2i    Y ;     kJ* 0   P#` C  oM );N  *$&`G{,~ :B" Q!  C9Q F#7<: d Q p`.o*9"Y  XCh Z;+#n%>+|' :Y   rG"  *@22@AABCE@2   #%($$''! !"+'#*&.,,(& !ͯ ˺ ƹ  Ų ĿþĿŽļuŽuŽ½uƿþuĿuſuƿvƽº¼þv¾v ¿v¿vvàvŸvv vvvvBAA@?>==<;:9v vUeedcbaa`_^]]\[Gvv Qb}{a`__^]\[[ZYYX DvvM_y}x]\[[ZZYYXWWVSKHH,vvI\[v}uYXXWWVUTKC:6 vvFXt}srUTSNC86vvBU}qp}QG=6vv?RQnjb86vv;ONNI=6vv7LG=6vv0<6vv6vv6vv6vv6vvvvvv!#!#&$''$(($('*"& (-%&,&#!       μͻ wͻ wϽ wпwwýwz ɰϵź Ǽ ½Į ϳ׵ 㿿㽽㽽 HGGFEDCCBA@?ỻ\nmmllkkjihhggffeddccN⹹Xkihhgffeeddcbaa`JTgeddcbbaa`__^ZROO1Pdca``__^]\RJ@<"ḸL`\[UI><"ḸH]XNC<"෷ EZYXX}yo><"෷AVUUPC<"߷=SNC<"߷5B<"෷"<" ߷"<"߷"<"߷"<"߷"!"&$&%$$(%) ((+&&%((.*"+!!     ﵵ G::G::G:::: :    %| |!||||||||||HGGFEEDCBA@ ?||\nnmlkjiihg feedccM|| Xk!jiihggfedcbba`J|| Tgh!geedcb a``_^[SPP1||Pece!da`_^^\SKA="||L`c!ba]\\VJ?="||H^!``!YOD="||DZY\XP?="||@WVVPD="||3#b90 "Fl; .5:@t= ,&%48:C`R*/I088N8(/Ɂ.5*A)&/Ъ,<#/C`!/BIU.$M9xF.$X%#-&.3BO#BD0(FG"!D8 ,&2DC +9 zCDD> ڎs  3 w .P             rG"  *@22@AABCE@2   #%($$))#$$##"-%('. ',!!+($+ ͯ ˺ ƹ  Ų ĿþĿŽļuŽuŽ½uƿþuĿuſuƿvƽº¼þ¾ ¿¿=VV=??+*>>*)=}~}~}~}~=))=;>;)'!:~:'!k!&!#!#&$''$**(,!"" %#$(+ * &$-&%!        μͻ wͻ wϽ wпwwýwz ɰϵź Ǽ ½Į ϳ׵EiiE 㿿DihXVWXhDCeffC㽽AeeA㽽@cc@?cb b?>^``>ỻ=^^ =⹹<\] ]\\<:\Z Z:9WX X9Ḹ8WZW 8Ḹ7UU7෷6URR6෷4MNPP4߷2MNNNNM2߷1KLLLK1෷/KLII/ ߷.EH H.߷,EE,߷+BCB BCB+߷*BCADA*)"??)""'!"&$&%$&*'+$,*$"$.((&&+)'&       ﵵ G::G::G:::: :    % FjjFDjiSPQPQPRiDCfhhCCffCAedeedeA@edc c@>_aa>=__=<\]]]\<:\]ZZ:9WXX98W[W87UU76USS65NOQQ53NONNON31LL1/LJJ/.EHH.-EE-+DCCCD+*DCADA*(!??(!!(  rG"  !*2@AABCE@2! $#$% )("")"+'%"& &%%#  ͯ ˺ ƹ  Ų ||| Ŀþy yyyy Ŀv vvߐܐvv rs ssϣsssuppΡpppup ppދދppr½uooooooþuoĿuoprſuoƿvoƽoǗzyvvwyz}~o¼oþoœ|z {|}o ¿o¿oÐàŸÿ߲ۗ#! $#$%)*'&*$'*'%&&%"" $        󴢢  򟟱江  񜜯ݾͻ wݽͻ w 񚚭筚 w񬙙пwww z ɰϵاź Ǽ 峲 Į ϳ׵㿿㽽 ⫫⫬㽽 ⩨ỻ⹹ḸḸᢢ෷෷߷߷෷ ߷߷߷߷۷ $"#$)')"*()$#'& ! # !       ﵵ  G::G:: G::::: ܟ   Ľ ½ӵ!   rG"  !*2@AABCE@2####$)# "!"%#&$&% " ͯ ˺ ƹ  Ų ||| Ŀþyyy Ŀvvvvv sߎssssruppppupppp½uoooorþuoĿuosſuorsrqƿvoƽoºo¼oþo¾o ¿o ¼oàŸ  ÿ ߲ۗ#####****'"$!& "" $        韟 μ诜 wͻ wϽ wwwýw&z ɰϵ嵵ź Ǽ ½Į ϳ ׵ 㿿㮮㽽 㽽ỻ⹹ḸḸࢡ෷෷߷߷෷ ߷߷߷߷۷#""" '+)*&)&#&          ﵵG::G::G::::: ߴ % !ihgfefg>T7  rG"  !*2@AABCE@2!) *--&-) $+'#$#$+"&$%'$"'#&#&%"! ͯ ˺ ƹ  Ų  إĿþ Ŀ ՋҊuҋu½uЋþuϋĿuȋſu̓ƿv͍Ļƽʺͼ; ɾ ſ¿ ¿    ÿӿ   ӽƾѼӾ ۗ% *!)**..* /0%,-!'*'()&!'!"$)# %$  xx x x wvwvwvwvwwsss nonoonnonnonnoonnnn onnjkjjjjj gfg ggfggfggg hgμbbbbcbbcbͻ wbbbbcbbcbͻ w_^__ ^^____^_^_^Ͻ w\]]\[]\]\]\\\]\\пw[YZYZ[Z[[Z[Z[[ZwYXYXYXYiýwYXYXYXYzYXYXYXloɰϵYXYXYy~YXYX~źYXY}ǼYX {½ĮY xyϳYwzԵY w Ե wyصwwٵxvԱwײwwٲ |vٳ xw޵x߁v߷yͫ~vz෷yۮwvvwyxvxzḸ wvw} vw}~{Ḹ{vyҧ}෷ߝyw෷{z|߷߷v}x߷vyw෷ yvx ߷vy߷}߷߷۷)+"$('&(0-/-1'.+-&'%' %"' #!$ (h(h (h (h &' &''&'&''&'&'&'&'&''$$$ ﵵ       G::G::G::    :: ! :   ,   IG  %YDN KOoz KQ`  WGO  !kBE  @E @O @DA@D@i TUaA AA]_Iy@CrOAlDR@SEeכN@FPifD]B@@BEC@DosGU BUYAALv TABMUNIH@Dd ^MVEBHHKU@LnD@ECF@Dg@WEdOT    rG"  !*2@AABCE@2   #%($(($)&&&$$)&"#$% ($$$' ! ͯ ˺ ƹ  Ų ĿþĿŽļuŽuŽ½uƿþuĿuſuƿvƽº{wrqnu¼~yzvtmnþ~zzl ¾r ¿|¿~ Æ »àŸ    ÿ  ߲ۗ!#!#&$'''%))#&)%')(%##!(!#%( %$        μͻ wͻ wϽ wпwwýw 揗ܑz 搝⑎ɯϵ⏎ث⏎ڢ%咜Ꮞۣļ½Į䐗 ɱϳ%䑐㛖ޫά׵⏏䭭ذ㿿 㽽 㽽ỻ⹹ Ḹ Ḹ෷෷߷߷෷ ߷߷߷߷۷!"&$&%%'(%)%(())&$'&&!'#!"#        ﵵ G::G::G::::$*,,+()(+:$*//.+*)*- $8 +) 'G)% %,G$%,F$$,E$$+B!'8%*'=EEBBA9 &'('$ $%S+&20&%&5  ' +)   Ib`^`H-+   rG"  !*2@AABCE@2'(,,,,*+))++*+))((((%&)$'&'%'(! ͯ ˺ ƹ  Ų  Ŀþ Ŀ u u ½u~~ ~~~~~~~~fþu}hxĿu}mſu}od{oxqqrpƿv}|xi{|tqqhqƽ}uoltrsh{}㺙x|rppe}¿آwvpnjm} լ}ZZeese} ѳssx}%Êu}ѷyw}̹ϼv%‚Ĵʺtà ȹŷsŸ r y z}  {ÿsv{ }w xl}{|~wl~|zyvv|}tq|{yyz}kvmq} ylm{nojjlo| ߲ۗ#'(,,,,*+(*+*++*'))(($'%!()%%'()&         μ˽˽ͻ w ͻ w Ͻ w www&z%ϵ­פϴ%䰼¾㻪 ڪզ|~Į!©ȶϳ%䮵̷׵ ÿ㿿˾ÿ%⦷ź¿㽽%㣷ǽ㽽 ý⼼⻻Ϥ ỻ ☱ ⹹ ѐḸ%ᾐḸ෷ݼ෷ ı߷ҿ߷%ǿ෷߷߷߷߷۷'(,+++**+)*++++)()(" #'&$"       ﵵEE EEDDDDG:: G:: G:: ::: &sоZG@FZͰ%U?Jq`Մ^?;;TGû{ @=89VF8FEMewu%I?:8N>kڔ98R8H_ wBIDiP4@ABP~%Ve05:=AEe [.26:=@BK t{/36:>ABB 248ABD䄯gBBQ CBl CA cBQMA?ob    rG"  !*2@AABCE@2%!&'+*.*!)#""!#)!(&"))&%% ! ~ͯ~ ˺~ ƹ~ }~}~}~~}~}~}~ }Ų{ Ļwxwxwxwxw þtߏtttߏt Ŀrrrrrrrr onnoo oononuonnooonnoދonuml&mmmmmllmlmlm½uj݇j݇jjþuijijĿuhghmſuhƿvhƽhºvh¼højh™zhž ~ij±tt{q‘q ÷qu¨|qàq |qŸ|qvqqvqqqvq%q|vqÿ ߲ۗ%%!&'+*.*)*&**(%((%%("" %$ ~~ ~ ~ }~}~}~~}~}~}~ }{ wxwxwxwxw tߏtttߏt rrrrrrrr Ļonnoo oononõ wonnooonnoދonĮ wml&mmmmmllmlmlmŬ wj݇j݇jjǰwijijɴwhghpʽwh zh ̰ϵhظhښh h ᳑½ĮhᕶϳѠωՊ׵צʙ㿿׬݌ēܲ㾓㽽 ⓇЍ㽽֫Ї׫ܱ⫫ܫܫ܍⾇ỻ֥ᾙ⹹əḸḸ෷෷߷߷෷ ߷߷߷߷۷%!&'+)-))'+"*(+(()) ("&!    ~~ ~ ~ }~}~}~~}~}~}~ }{ ﵵwxwxwxwxwtߏtttߏtrrrrrrrronnoo oononG::onnooonnoދonG::mlmmmmmllmlmlmG::j݇j݇jj::iji j:hgh sh  h h%ѦhﱷhhǦ h!럨캛߮ ڧ!ƛӭӧ 桛 ƛӛӮ߮  rG"  !*2@AABCE@2%$ !--%!(%%&&$)%$#&&%%%( ͯ ˺ ƹ  Ų  Ŀþ Ŀ~ ||||u{z{z{{zz{z{z{u{z{z{zz{z{z{½uxyxxxyyxxþuwxwxĿuvuvzſuvƿvv{uy~|uromkkmqƽvºosv¼nnvþikvń¾nov~{zx%Ä¿zy| „à„Ÿ  ÿ  ߲ۗ%%$ &--%))$&+&))"&!!!&!#' pp p p opopoppopopop omm ijijijijji fff dcddddd μa``aa`a`a`ͻ w_^_^__^^_^_^_ͻ w_^_^ _^^_^_^_Ͻ w\]\\\]]\\пw[\[\wZYZdýwZ zZ ϵZ֪ZźZ ǼZ ½ĮZɕϝϳΗ׵㿿㽽 㽽ỻ⹹  ḸḸ෷ߣ෷߷ҩҪߪ߷ҩ෷ ߷߷߷߷۷%$ !,,$)(+&**)('#'!&      ﵵ~||||G::{z{z{{zz{z{z{G::{z{z{zz{z{z{G::xyxxxyyxx::wxw x:vuv v  vʯv%ȿȯv˨ʨṿɦvתӪv嵴   rG"  !*2@AABCE@2%!"%--&#!(%%&&$)%$#&&%%%( ͯ ˺ ƹ  Ų  Ŀþ Ŀ~~ |||||u{z{ z{z{{{{z{z{u{z{ z{{{z{z{½uxyxxyxxþuwxxwwxĿuvuvzſuvƿvv{uy~|uromkkmqƽvºosv¼nnvþikvń¾nov~{zx%Ä¿zy| „à„Ÿ  ÿ  ߲ۗ%%!"*--&#))$&+&))"&!!!&!#' pp p p opopoppopopop om ijijijiji ffgff dcddcd μa``aaa`a`ͻ w_^_ ^_^____^_^_ͻ w_^_ ^___^_^_Ͻ w\]\\]\\пw[\\[[\wZYZdýwZ zZ ϵZ֪ZźZ ǼZ ½ĮZɕϝϳΗ׵㿿㽽 㽽ỻ⹹  ḸḸ෷ߣ෷߷ҩҪߪ߷ҩ෷ ߷߷߷߷۷%!"%,,%#)(+&**)('#'!&      ﵵ~~|||||G::{z{ z{z{{{{z{z{G::{z{ z{{{z{z{G::xyxxyxx::wxxww x:vuv v  vʯv%ȿȯv˨ʨṿɦvתӪv嵴   rG"  !*2@AABCE@2%" #--'!(%%&&$)%$#&&%%%( ͯ ˺ ƹ  Ų  Ŀþ Ŀ ~ |||||u{z{ z{z{{{zz{z{z{u{z{ z{z{zz{z{z{½uxyxxxþuwxwxĿuvuvzſuvƿvv{uy~|uromkkmqƽvºosv¼nnvþikvń¾nov~{zx%Ä¿zy| „à„Ÿ  ÿ  ߲ۗ%%" (--'))$&+&))"&!!!&!#' pp p p opopoppopopop omm ijijijiiji ff܄f d cۂdۂdd μa``aaaaa`a`ͻ w_^_ ^_^___^^_^_^_ͻ w_^_ ^_^_~^^_^_^_Ͻ w\]\\|{\пw[\[\wZYZdýwZ zZ ϵZ֪ZźZ ǼZ ½ĮZɕϝϳΗ׵㿿㽽 㽽ỻ⹹  ḸḸ෷ߣ෷߷ҩҪߪ߷ҩ෷ ߷߷߷߷۷%" #,,&)(+&**)('#'!&      ﵵ ~|||||G::{z{ z{z{{{zz{z{z{G::{z{ z{z{zz{z{z{G::xyxxx::wxw x:vuv v  vʯv%ȿȯv˨ʨṿɦvתӪv嵴   rG"  !*2@AABCE@2%"!$--(!(%%&&$)%$#&&%%%( ͯ ˺ ƹ  Ų  Ŀþ Ŀ~~ |||||u{z{z {{z{{z{z{u{z{z {{{z{{z{z{½uxyxxxyxxxþuwxwxĿuvuvzſuvƿvv{uy~|uromkkmqƽvºosv¼nnvþikvń¾nov~{zx%Ä¿zy| „à„Ÿ  ÿ  ߲ۗ%%"!)--())$&+&))"&!!!&!#' pp p p opopoppopopop omm ijijijiiji ff܃f dcۂdddcd μa``aa`a``a`ͻ w_^_^ ~__^__^_^_ͻ w_^_^ _}__^__^_^_Ͻ w\]\\\]\\\пw[\[\wZYZdýwZ zZ ϵZ֪ZźZ ǼZ ½ĮZɕϝϳΗ׵㿿㽽 㽽ỻ⹹  ḸḸ෷ߣ෷߷ҩҪߪ߷ҩ෷ ߷߷߷߷۷%"!$,,')(+&**)('#'!&      ﵵ~~|||||G::{z{z {{z{{z{z{G::{z{z {{{z{{z{z{G::xyxxxyxxx::wxw x:vuv v  vʯv%ȿȯv˨ʨṿɦvתӪv嵴   rG"  !*2@AABCE@2%!$%#--$!(%%&&$)%$#&&%%%( ͯ ˺ ƹ  Ų  Ŀþ Ŀ~~ ||||u{z%{zz{z{{{z{z{zz{z{u{z%{zzz{{{z{z{zz{z{½uxy~xyxþuwxwxĿuvuvzſuvƿvv{uy~|uromkkmqƽvºosv¼nnvþikvń¾nov~{zx%Ä¿zy| „à„Ÿ  ÿ  ߲ۗ%%!$%'--$))$&+&))"&!!!&!#' pp p p opopoppopopop om ijijijiji fmmfffgfff ddcddddcddd μa``aaa`a`ͻ w_^%_^^_^___^_^_^^_^_ͻ w_^%_^^^___^_^_^^_^_Ͻ w\]ed\]\пw[\[\wZYZdýwZ zZ ϵZ֪ZźZ ǼZ ½ĮZɕϝϳΗ׵㿿㽽 㽽ỻ⹹  ḸḸ෷ߣ෷߷ҩҪߪ߷ҩ෷ ߷߷߷߷۷%!$%#,,#)(+&**)('#'!&      ﵵ~~||||G::{z{zz{z{{{z{z{zz{z{G::{z{zzz{{{z{z{zz{z{G::xy~xyx::wxw x:vuv v  vʯv%ȿȯv˨ʨṿɦvתӪv嵴   rG"  !*2@AABCE@2%$ !--%!(%%&&$)%$#&&%%%( ͯ ˺ ƹ  Ų  Ŀþ Ŀ~ ||||u{z{z{{zz{z{z{u{z{z{zz{z{z{½uxyxxxyyxxþuwxwxĿuvuvzſuvƿvv{uy~|uromkkmqƽvºosv¼nnvþikvń¾nov~{zx%Ä¿zy| „à„Ÿ  ÿ  ߲ۗ%%$ &--%))$&+&))"&!!!&!#' pp p p opopoppopopop omm ijijijijji fff dcddddd μa``aa`a`a`ͻ w_^_^__^^_^_^_ͻ w_^_^ _^^_^_^_Ͻ w\]\\\]]\\пw[\[\wZYZdýwZ zZ ϵZ֪ZźZ ǼZ ½ĮZɕϝϳΗ׵㿿㽽 㽽ỻ⹹  ḸḸ෷ߣ෷߷ҩҪߪ߷ҩ෷ ߷߷߷߷۷%$ !,,$)(+&**)('#'!&      ﵵ~||||G::{z{z{{zz{z{z{G::{z{z{zz{z{z{G::xyxxxyyxx::wxw x:vuv v  vʯv%ȿȯv˨ʨṿɦvתӪv嵴 |||||zzz{{zzz{{xxyyxwwwwwmmmmmijiiifffffddddd`aaaa^^^__^^^__\\]]\[[[[[|||||zzz{{zzz{{xxyyxwwwww|||||zzz{{zzz{{xxyyxwwwwwmmmmmijiiifffffddddd`aaaa^^^__^^^__\\]]\[[[[[|||||zzz{{zzz{{xxyyxwwwwwww"ww"wwDw"fw""fww"ww"""""  rG"  !*2@AABCE@2%%$%,,.)!)#""!#)!(&"))&%% ! ~ͯ~ ˺~ ƹ~ }~}~}~~}~}~}~ }Ų{{ Ļwxwxwxwxxxw þttttt Ŀrrύrrr onnooooononoonuonnooooononoonumlߟmmmmlllmlm½ujއjjjjkjjjþuijijĿuhghmſuhƿvhƽhºvh¼højh™zhž ~ij±tt{q‘q ÷qu¨|qàq |qŸ|qvqqvqqqvq%q|vqÿ ߲ۗ%%%$%,,.))*&**(%((%%("" %$ ~~ ~ ~ }~}~}~~}~}~}~ }{{ wxwxwxwxxxw ttttt rrύrrr Ļonnooooononoonõ wonnooooononoonĮ wmlߟmmmmlllmlmŬ wjއjjjjkjjjǰwijijɴwhghpʽwh zh ̰ϵhظhښh h ᳑½ĮhᕶϳѠωՊ׵צʙ㿿׬݌ēܲ㾓㽽 ⓇЍ㽽֫Ї׫ܱ⫫ܫܫ܍⾇ỻ֥ᾙ⹹əḸḸ෷෷߷߷෷ ߷߷߷߷۷%%$%,+-()'+"*(+(()) ("&!    ~~ ~ ~ }~}~}~~}~}~}~ }{{ ﵵwxwxwxwxxxwtttttrrύrrronnooooononoonG::onnooooononoonG::mlߟmmmmlllmlmG::jއjjjjkjjj::iji j:hgh sh  h h%ѦhﱷhhǦ h!럨캛߮ ڧ!ƛӭӧ 桛 ƛӛӮ߮   rG"  88*@22@AABCE@2%!!$-'!!'#""!"+'#+!((&"($&('ͯ ˺ ƹ  Ų  Ŀþ Ŀ 񘘗 u 𕔕u𧒒½uþuĿuſuƿvƽº¼þ¾ ¿¿àŸ șə ٔș Ǚߴ ƙݴřߴÙÙߵݷ ޷˿ݸʾݸɼܹȻܹǺϔϔǹŷ%%!!)-'")*&*'*"& *("%#**-( qq q q pqpqpqqpqpqpq pnn jkjkjkjkj gggg d cdddddcd μa``a a`a``a`ͻ w_^_ }_^__^__^_^_ͻ w\]{{\\\{\Ͻ w[\[[\пwYXYYcwYXYcýwY zY ɰϵYYźY ǼY ½Įl ϳl׵l 㿿ll㽽l㽽lk wkj~z~}|{y~~jỻi~j~j~i⹹h|LQ T||hgUc[uuge~Uss cssfḸe}UjrqeḸc|Uno bppc෷a{yUmooa෷`xW{{jll`߷^xW{||}lkk_߷^wvXggilliaji^෷\uXxyyzӃ{ nhh\ ߷[sXqŕr iggZ߷ZrqXllffeZ߷YqjqqjfY߷XlkjihhgfedaWWmkmjihhgfedcac``W UVWVUVVUWVVUVUWUWVUVVU%!!$,& )'+"*(+&&%()'#$ #&!     ﵵ G:: G::G:::: :    % 6!66666a6X=5X`4C@FHFDCBA@ ?FCC44CQCQC42BJ#$JBB41DI%/)I==20CI%;;/I;;00BI%FF4I:://AJ%88/J99/.@I%FF6I88.->H&AA5H66-,>H&AA5H66-+>H&1148ϼ84.H55+)=G&>@KLA 7G44)(;G&:QQ:4G22((:F&6^^61F11(':Q:X:Q1''654210/'&:6:5544210/.2..&%&%%&%%&%&%&&%  rG"  !*2@AABCE@2%! -,%!(%%&&$)%$#&&%%%( ͯ ˺ ƹ  Ų  Ŀþぁ Ŀ ~~ ||||u{z{z{{z{z{z{u{z{z{{zz{z{z{½uxyxxxxþuwwxĿuvuvzſuvƿvv{uy~|uromkkmqƽvºosv¼nnvþikvń¾nov~{zx%Ä¿zy| „à„Ÿ  ÿ  ߲ۗ%%! &-,%))$&+&))"&!!!&!#' pp p p opopoppopopop omm ijijijiji ffff d cddddddcd μa``aa``a`ͻ w_^_^__~^_^_^_ͻ w_^_^__^^_^_^_Ͻ w\]\\\{\пw[{[\wZYZdýwZ zZ ϵZ֪ZźZ ǼZ ½ĮZɕϝϳΗ׵㿿㽽 㽽ỻ⹹  ḸḸ෷ߣ෷߷ҩҪߪ߷ҩ෷ ߷߷߷߷۷%! ,+$)(+&**)('#'!&      ﵵぁ ~~||||G::{z{z{{z{z{z{G::{z{z{{zz{z{z{G::xyxxxx::ww x:vuv v  vʯv%ȿȯv˨ʨṿɦvתӪv嵴    %`**iik| $ZMeQ0  $99:;;=9 =;;:99$&#-.%%- *0'*) s}~}|m}~}|m¾ٌ~}|m~}|m~}|m m Hm _T& m [~ {& m]}xuR m _} pmjimk}|}~~}~}ƒ~{z{~s~x|vuvxv| ~tsstsy| ~qqpqqx|| ~llnn|v|| |deikz{B |]`doshzY[_|xhzVW]ryzUTy}uyzTT~sxzTjy~~y{rxzSyw}xzrvz`qy|{tzohzȗwn{vrsh{oityz{zpyktz{htqrtpt vvztkjjklmnopqxmqql}qwy{olIji$..%%+#)&'$, 櫨ıϲ̽ հ̼ _x˻(#t˸ (#s˴q# ΍Оȣÿụ; ѦǜĽν ƖŹ Œλ Ŋƶj Ă̹}ȱ{{ùyxƭxwxwΆڽ aލ($" + "..-! ̠}  Կ Ӷ߻    :   rG"  *@22@AABCE@2   #%($$''! !$-)%&.&.,-,-)-+)+,$% ͯ ˺ ƹ  Ų ĿþĿŽļuŽuŽ½uƿþuĿuſuƿvƽº¼þ¾ ¿¿àŸ 򜜝򶧭񢣤񴧭 響̯zﱧ eεԭ~NlxƦý#됡\뫦Ŭ߯骦蝽=ym˓試rOKԔ姦ƦЁz}~䥦Ƨilpx}oim}⤥i ckafih{ou{ࣥc:u«yf[Y]d{ut`_ޢba[H9@ETn_STofglpmܡ\;;9<;?HO\Viha^qvlW}۠YGFBqhILQXQr~e~^ؠ!#!#&$''$(($(),$(*+%&-***'+,/+$%        μͻ wͻ wϽ wпwwýwz ɰϵź Ǽ ½Į ϳ׵ 㿿㽽㽽  ĿŪ ɶỻ˵⹹f̛ڿԵKi~ѵɭս멱ZḸ߲Ḹͺ>ym̝෷pNIӢ෷ҭύ߷ťņ{߷ ahv෷}5¯vXiޢ ߷zoUFDA\gbtܡ߷xHA5HR>EJ`gzۡ߷pPMBJHMUk٠߷!"&$&%$$(%) ((-(('*$$'*",%(%)%%(&$%      ﵵ G::G::G:::: :    % ! l/Dn4[-{ܡyTw͸m~rLXCcïfmD0qhFuԷal12={Y׳Wז[qc[]\z虿ԙvx;]ȯ9EDA>25(PbeG!kĥky9#>WĢ0Dk?ޢ#*3,>NEP>ܡ#47=,!CR[T7۠2<=A !FU]d)' "!"##!!ٟ8BIMPatt8BIMTxt2Yw /DocumentResources << /FontSet << /Resources [ << /Resource << /StreamTag /CoolTypeFont /Identifier << /Name (ArialMT) /Type 1 >> >> >> << /Resource << /StreamTag /CoolTypeFont /Identifier << /Name (MyriadPro-Regular) /Type 0 >> >> >> << /Resource << /StreamTag /CoolTypeFont /Identifier << /Name (AdobeInvisFont) /Type 0 >> >> >> << /Resource << /StreamTag /CoolTypeFont /Identifier << /Name (TimesNewRomanPSMT) /Type 1 >> >> >> ] >> /MojiKumiCodeToClassSet << /Resources [ << /Resource << /Name () >> >> ] /DisplayList [ << /Resource 0 >> ] >> /MojiKumiTableSet << /Resources [ << /Resource << /Name (Photoshop6MojiKumiSet4) /Members << /CodeToClass 0 /PredefinedTag 2 >> >> >> << /Resource << /Name (Photoshop6MojiKumiSet3) /Members << /CodeToClass 0 /PredefinedTag 4 >> >> >> << /Resource << /Name (Photoshop6MojiKumiSet2) /Members << /CodeToClass 0 /PredefinedTag 3 >> >> >> << /Resource << /Name (Photoshop6MojiKumiSet1) /Members << /CodeToClass 0 /PredefinedTag 1 >> >> >> << /Resource << /Name (YakumonoHankaku) /Members << /CodeToClass 0 /PredefinedTag 1 >> >> >> << /Resource << /Name (GyomatsuYakumonoHankaku) /Members << /CodeToClass 0 /PredefinedTag 3 >> >> >> << /Resource << /Name (GyomatsuYakumonoZenkaku) /Members << /CodeToClass 0 /PredefinedTag 4 >> >> >> << /Resource << /Name (YakumonoZenkaku) /Members << /CodeToClass 0 /PredefinedTag 2 >> >> >> ] /DisplayList [ << /Resource 0 >> << /Resource 1 >> << /Resource 2 >> << /Resource 3 >> << /Resource 4 >> << /Resource 5 >> << /Resource 6 >> << /Resource 7 >> ] >> /KinsokuSet << /Resources [ << /Resource << /Name (None) /Data << /NoStart () /NoEnd () /Keep () /Hanging () /PredefinedTag 0 >> >> >> << /Resource << /Name (PhotoshopKinsokuHard) /Data << /NoStart (!\),.:;?]}    0!! 0000 0 0 0000A0C0E0G0I0c000000000000000000000000 =]) /NoEnd (\([{  00 0 0000 ;[) /Keep (  % &) /Hanging (00 ) /PredefinedTag 1 >> >> >> << /Resource << /Name (PhotoshopKinsokuSoft) /Data << /NoStart (  0000 0 0 00000000 =]) /NoEnd (  00 0 000;[) /Keep (  % &) /Hanging (00 ) /PredefinedTag 2 >> >> >> << /Resource << /Name (Hard) /Data << /NoStart (!\),.:;?]}    0!! 0000 0 0 0000A0C0E0G0I0c000000000000000000000000 =]) /NoEnd (\([{  00 0 0000 ;[) /Keep (  % &) /Hanging (00 ) /PredefinedTag 1 >> >> >> << /Resource << /Name (Soft) /Data << /NoStart (  0000 0 0 00000000 =]) /NoEnd (  00 0 000;[) /Keep (  % &) /Hanging (00 ) /PredefinedTag 2 >> >> >> ] /DisplayList [ << /Resource 0 >> << /Resource 1 >> << /Resource 2 >> << /Resource 3 >> << /Resource 4 >> ] >> /StyleSheetSet << /Resources [ << /Resource << /Name (Normal RGB) /Features << /Font 1 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /BaselineShift 0.0 /CharacterRotation 0.0 /AutoKern 1 /FontCaps 0 /FontBaseline 0 /FontOTPosition 0 /StrikethroughPosition 0 /UnderlinePosition 0 /UnderlineOffset 0.0 /Ligatures true /DiscretionaryLigatures false /ContextualLigatures false /AlternateLigatures false /OldStyle false /Fractions false /Ordinals false /Swash false /Titling false /ConnectionForms false /StylisticAlternates false /Ornaments false /FigureStyle 0 /ProportionalMetrics false /Kana false /Italics false /Ruby false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /JapaneseAlternateFeature 0 /EnableWariChu false /WariChuLineCount 2 /WariChuLineGap 0 /WariChuSubLineAmount << /WariChuSubLineScale .5 >> /WariChuWidowAmount 2 /WariChuOrphanAmount 2 /WariChuJustification 7 /TCYUpDownAdjustment 0 /TCYLeftRightAdjustment 0 /LeftAki -1.0 /RightAki -1.0 /JiDori 0 /NoBreak false /FillColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /StrokeColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /Blend << /StreamTag /SimpleBlender >> /FillFlag true /StrokeFlag false /FillFirst true /FillOverPrint false /StrokeOverPrint false /LineCap 0 /LineJoin 0 /LineWidth 1.0 /MiterLimit 4.0 /LineDashOffset 0.0 /LineDashArray [ ] /Type1EncodingNames [ ] /Kashidas 0 /DirOverride 0 /DigitSet 0 /DiacVPos 4 /DiacXOffset 0.0 /DiacYOffset 0.0 /OverlapSwash false /JustificationAlternates false /StretchedAlternates false /FillVisibleFlag true /StrokeVisibleFlag true /FillBackgroundColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 1.0 1.0 0.0 ] >> >> /FillBackgroundFlag false /UnderlineStyle 0 /DashedUnderlineGapLength 3.0 /DashedUnderlineDashLength 3.0 /SlashedZero false /StylisticSets 0 /CustomFeature << /StreamTag /SimpleCustomFeature >> >> >> >> ] /DisplayList [ << /Resource 0 >> ] >> /ParagraphSheetSet << /Resources [ << /Resource << /Name (Normal RGB) /Features << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /DropCaps 1 /AutoLeading 1.2 /LeadingType 0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 0 /Zone 36.0 /HyphenateCapitalized true /HyphenationPreference .5 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /SingleWordJustification 6 /Hanging false /AutoTCY 0 /KeepTogether true /BurasagariType 0 /KinsokuOrder 0 /Kinsoku /nil /KurikaeshiMojiShori false /MojiKumiTable /nil /EveryLineComposer false /TabStops << >> /DefaultTabWidth 36.0 /DefaultStyle << >> /ParagraphDirection 0 /JustificationMethod 0 /ComposerEngine 0 /ListStyle /nil /ListTier 0 /ListSkip false /ListOffset 0 >> >> >> ] /DisplayList [ << /Resource 0 >> ] >> /TextFrameSet << /Resources [ << /Resource << /Bezier << /Points [ 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ] >> /Data << /Type 0 /LineOrientation 0 /TextOnPathTRange [ -1.0 -1.0 ] /RowGutter 0.0 /ColumnGutter 0.0 /FirstBaselineAlignment << /Flag 1 /Min 0.0 >> /PathData << /Spacing -1 >> >> >> >> ] >> /ListStyleSet << /Resources [ << /Resource << /Name (kPredefinedNumericListStyleTag) /PredefinedTag 1 >> >> << /Resource << /Name (kPredefinedUppercaseAlphaListStyleTag) /PredefinedTag 2 >> >> << /Resource << /Name (kPredefinedLowercaseAlphaListStyleTag) /PredefinedTag 3 >> >> << /Resource << /Name (kPredefinedUppercaseRomanNumListStyleTag) /PredefinedTag 4 >> >> << /Resource << /Name (kPredefinedLowercaseRomanNumListStyleTag) /PredefinedTag 5 >> >> << /Resource << /Name (kPredefinedBulletListStyleTag) /PredefinedTag 6 >> >> ] /DisplayList [ << /Resource 0 >> << /Resource 1 >> << /Resource 2 >> << /Resource 3 >> << /Resource 4 >> << /Resource 5 >> ] >> >> /DocumentObjects << /DocumentSettings << /HiddenGlyphFont << /AlternateGlyphFont 2 /WhitespaceCharacterMapping [ << /WhitespaceCharacter ( ) /AlternateCharacter (1) >> << /WhitespaceCharacter ( ) /AlternateCharacter (6) >> << /WhitespaceCharacter ( ) /AlternateCharacter (0) >> << /WhitespaceCharacter ( \)) /AlternateCharacter (5) >> << /WhitespaceCharacter () /AlternateCharacter (5) >> << /WhitespaceCharacter (0) /AlternateCharacter (1) >> << /WhitespaceCharacter () /AlternateCharacter (3) >> ] >> /NormalStyleSheet 0 /NormalParagraphSheet 0 /SuperscriptSize .583 /SuperscriptPosition .333 /SubscriptSize .583 /SubscriptPosition .333 /SmallCapSize .7 /UseSmartQuotes true /SmartQuoteSets [ << /Language 0 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 1 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 2 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 3 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 4 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 5 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 6 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote ( 9) /CloseSingleQuote ( :) >> << /Language 7 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 8 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 9 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 10 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 11 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 12 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 13 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 14 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 15 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 16 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 17 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 18 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 19 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 20 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 21 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 22 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 23 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 24 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 25 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote ( 9) /CloseSingleQuote ( :) >> << /Language 26 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 27 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 28 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 29 /OpenDoubleQuote (0) /CloseDoubleQuote (0) >> << /Language 30 /OpenDoubleQuote (0 ) /CloseDoubleQuote (0 ) >> << /Language 31 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 32 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 33 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 34 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 35 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 36 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 37 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 38 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 39 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote (<) /CloseSingleQuote (>) >> << /Language 40 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 41 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote (<) /CloseSingleQuote (>) >> << /Language 42 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 43 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 44 /OpenDoubleQuote () /CloseDoubleQuote () /OpenSingleQuote ( 9) /CloseSingleQuote ( :) >> << /Language 45 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> ] >> /TextObjects [ << /Model << /Text (php ) /ParagraphRun << /RunArray [ << /RunData << /ParagraphSheet << /Name () /Features << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /DropCaps 1 /AutoLeading 1.2 /LeadingType 0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 0 /Zone 36.0 /HyphenateCapitalized true /HyphenationPreference .5 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /SingleWordJustification 6 /Hanging false /AutoTCY 1 /KeepTogether true /BurasagariType 0 /KinsokuOrder 0 /Kinsoku /nil /KurikaeshiMojiShori false /MojiKumiTable /nil /EveryLineComposer false /TabStops << >> /DefaultTabWidth 36.0 /DefaultStyle << /Font 1 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /BaselineShift 0.0 /CharacterRotation 0.0 /AutoKern 1 /FontCaps 0 /FontBaseline 0 /FontOTPosition 0 /StrikethroughPosition 0 /UnderlinePosition 0 /UnderlineOffset 0.0 /Ligatures true /DiscretionaryLigatures false /ContextualLigatures false /AlternateLigatures false /OldStyle false /Fractions false /Ordinals false /Swash false /Titling false /ConnectionForms false /StylisticAlternates false /Ornaments false /FigureStyle 0 /ProportionalMetrics false /Kana false /Italics false /Ruby false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /EnableWariChu false /WariChuLineCount 2 /WariChuLineGap 0 /WariChuSubLineAmount << /WariChuSubLineScale .5 >> /WariChuWidowAmount 2 /WariChuOrphanAmount 2 /WariChuJustification 7 /TCYUpDownAdjustment 0 /TCYLeftRightAdjustment 0 /LeftAki -1.0 /RightAki -1.0 /JiDori 0 /NoBreak false /FillColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /StrokeColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /FillFlag true /StrokeFlag false /FillFirst true /FillOverPrint false /StrokeOverPrint false /LineCap 0 /LineJoin 0 /LineWidth 1.0 /MiterLimit 4.0 /LineDashOffset 0.0 /LineDashArray [ ] /Type1EncodingNames [ ] /Kashidas 0 /DirOverride 0 /DigitSet 0 /DiacVPos 4 /DiacXOffset 0.0 /DiacYOffset 0.0 /OverlapSwash false /JustificationAlternates false /StretchedAlternates false /FillVisibleFlag true /StrokeVisibleFlag true /FillBackgroundColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 1.0 1.0 0.0 ] >> >> /FillBackgroundFlag false /UnderlineStyle 0 /DashedUnderlineGapLength 3.0 /DashedUnderlineDashLength 3.0 >> /ParagraphDirection 0 /JustificationMethod 0 /ComposerEngine 0 /ListStyle /nil /ListTier 0 /ListSkip false /ListOffset 0 >> /Parent 0 >> >> /Length 4 >> ] >> /StyleRun << /RunArray [ << /RunData << /StyleSheet << /Name () /Parent 0 /Features << /Font 0 /FontSize 10.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading .01 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking -10 /BaselineShift 0.0 /CharacterRotation 0.0 /AutoKern 1 /FontCaps 0 /FontBaseline 0 /FontOTPosition 0 /StrikethroughPosition 0 /UnderlinePosition 0 /UnderlineOffset 0.0 /Ligatures true /DiscretionaryLigatures false /ContextualLigatures true /AlternateLigatures false /OldStyle false /Fractions false /Ordinals false /Swash false /Titling false /ConnectionForms true /StylisticAlternates false /Ornaments false /FigureStyle 0 /ProportionalMetrics false /Kana false /Italics false /Ruby false /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /JapaneseAlternateFeature 0 /EnableWariChu false /WariChuLineCount 2 /WariChuLineGap 0 /WariChuSubLineAmount << /WariChuSubLineScale .5 >> /WariChuWidowAmount 2 /WariChuOrphanAmount 2 /WariChuJustification 7 /TCYUpDownAdjustment 0 /TCYLeftRightAdjustment 0 /LeftAki -1.0 /RightAki -1.0 /JiDori 0 /NoBreak false /FillColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 1.0 1.0 1.0 ] >> >> /StrokeColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /Blend << /StreamTag /SimpleBlender >> /FillFlag true /StrokeFlag false /FillFirst false /FillOverPrint false /StrokeOverPrint false /LineCap 0 /LineJoin 0 /LineWidth .4 /MiterLimit 1.6 /LineDashOffset 0.0 /LineDashArray [ ] /Type1EncodingNames [ ] /Kashidas 0 /DirOverride 0 /DigitSet 0 /DiacVPos 4 /DiacXOffset 0.0 /DiacYOffset 0.0 /OverlapSwash false /JustificationAlternates false /StretchedAlternates false /FillVisibleFlag true /StrokeVisibleFlag true /FillBackgroundColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 1.0 1.0 0.0 ] >> >> /FillBackgroundFlag false /UnderlineStyle 0 /DashedUnderlineGapLength 3.0 /DashedUnderlineDashLength 3.0 /SlashedZero false /StylisticSets 0 /CustomFeature << /StreamTag /SimpleCustomFeature >> >> >> >> /Length 4 >> ] >> /KernRun << /RunArray [ << /RunData << >> /Length 4 >> ] >> /AlternateGlyphRun << /RunArray [ << /RunData << >> /Length 4 >> ] >> /StorySheet << /AntiAlias 4 /UseFractionalGlyphWidths true >> >> /View << /Frames [ << /Resource 0 >> ] /RenderedData << /RunArray [ << /RunData << /LineCount 1 >> /Length 4 >> ] >> /Strikes [ << /StreamTag /PathSelectGroupCharacter /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 0 /Children [ << /StreamTag /FrameStrike /Frame 0 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 2 /Children [ << /StreamTag /RowColStrike /RowColIndex 0 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 1 /Children [ << /StreamTag /RowColStrike /RowColIndex 0 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 2 /Children [ << /StreamTag /LineStrike /Baseline 0.0 /Leading 12.0 /EMHeight 10.0 /DHeight 7.15988 /SelectionAscent -8.58154 /SelectionDescent 3.24707 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 -8.58154 0.0 3.24707 ] /ChildProcession 1 /Children [ << /StreamTag /Segment /Mapping << /CharacterCount 4 /GlyphCount 0 /WRValid false >> /FirstCharacterIndexInSegment 0 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 1 /Children [ << /StreamTag /GlyphStrike /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 -8.58154 16.38457 3.24707 ] /Glyphs [ 83 75 83 3 ] /GlyphAdjustments << /Data [ << /BackFixed -.1 >> ] /RunLengths [ 4 ] >> /VisualBounds [ 0.0 -8.58154 16.38457 3.24707 ] /RenderedBounds [ 0.0 -8.58154 16.38457 3.24707 ] /Invalidation [ 0.0 -8.58154 21.18453 3.24707 ] /ShadowStylesRun << /Data [ << /Index 0 /Font 0 /Scale [ 1.0 1.0 ] /Orientation 0 /BaselineDirection 2 /BaselineShift 0.0 /KernType 1 /EmbeddingLevel 0 /ComplementaryFontIndex 0 >> ] /RunLengths [ 4 ] >> /EndsInCR true /SelectionAscent -8.58154 /SelectionDescent 3.24707 /MainDir 0 >> ] >> ] >> ] >> ] >> ] >> ] >> ] >> /OpticalAlignment false >> ] /OriginalNormalStyleFeatures << /Font 1 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /BaselineShift 0.0 /CharacterRotation 0.0 /AutoKern 1 /FontCaps 0 /FontBaseline 0 /FontOTPosition 0 /StrikethroughPosition 0 /UnderlinePosition 0 /UnderlineOffset 0.0 /Ligatures true /DiscretionaryLigatures false /ContextualLigatures false /AlternateLigatures false /OldStyle false /Fractions false /Ordinals false /Swash false /Titling false /ConnectionForms false /StylisticAlternates false /Ornaments false /FigureStyle 0 /ProportionalMetrics false /Kana false /Italics false /Ruby false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /JapaneseAlternateFeature 0 /EnableWariChu false /WariChuLineCount 2 /WariChuLineGap 0 /WariChuSubLineAmount << /WariChuSubLineScale .5 >> /WariChuWidowAmount 2 /WariChuOrphanAmount 2 /WariChuJustification 7 /TCYUpDownAdjustment 0 /TCYLeftRightAdjustment 0 /LeftAki -1.0 /RightAki -1.0 /JiDori 0 /NoBreak false /FillColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /StrokeColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /Blend << /StreamTag /SimpleBlender >> /FillFlag true /StrokeFlag false /FillFirst true /FillOverPrint false /StrokeOverPrint false /LineCap 0 /LineJoin 0 /LineWidth 1.0 /MiterLimit 4.0 /LineDashOffset 0.0 /LineDashArray [ ] /Type1EncodingNames [ ] /Kashidas 0 /DirOverride 0 /DigitSet 0 /DiacVPos 4 /DiacXOffset 0.0 /DiacYOffset 0.0 /OverlapSwash false /JustificationAlternates false /StretchedAlternates false /FillVisibleFlag true /StrokeVisibleFlag true /FillBackgroundColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 1.0 1.0 0.0 ] >> >> /FillBackgroundFlag false /UnderlineStyle 0 /DashedUnderlineGapLength 3.0 /DashedUnderlineDashLength 3.0 /SlashedZero false /StylisticSets 0 /CustomFeature << /StreamTag /SimpleCustomFeature >> >> /OriginalNormalParagraphFeatures << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /DropCaps 1 /AutoLeading 1.2 /LeadingType 0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 0 /Zone 36.0 /HyphenateCapitalized true /HyphenationPreference .5 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /SingleWordJustification 6 /Hanging false /AutoTCY 0 /KeepTogether true /BurasagariType 0 /KinsokuOrder 0 /Kinsoku /nil /KurikaeshiMojiShori false /MojiKumiTable /nil /EveryLineComposer false /TabStops << >> /DefaultTabWidth 36.0 /DefaultStyle << >> /ParagraphDirection 0 /JustificationMethod 0 /ComposerEngine 0 /ListStyle /nil /ListTier 0 /ListSkip false /ListOffset 0 >> >>8BIMlnk2(fliFD$6959b6d6-0482-1173-a2a2-eaea0594271a image.pngPNG  IHDR00W pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-gAMA|Q cHRMz%u0`:o_F +IDATxڴ[]U9gǵ'MLMCBUԋ JH x E@SQ/i8qB[%$6\Ǟ̙9xؗ928tξ_k|MAAP$6/g"8uN#ێ›?0Y߼mpS>v휤ܾN'֞/?S%Q"RZ.VUEv!wmKJ;rl) [T|k^][kcz=ݖ%-Z0j@TeO))E1q<7v6!ԗUbU I#DQL'Q7$B`0րgg~ip2MZ\R+.9rN0L>N\Yz7~g;Jl_퇏$%G1^4<~TqtCJy9[n-KUs<›V^eSE0ib *A'/o@pE! ,DHA00``#gvRP O6=,7RO)j"93`l?`Ta6͟>G!Uz%)=iSI Ř$eP2t _TBQ'&8~ba\-Rr `XP2ĩ)+1<\1S?5..DA͠ӗ4PyE 찶bc}&aKFhT*yrd;/];MЎv I<hɒ׍<)Qmimr"V8QX?2>1PN޺^>sۧy0[ )z*Ry!Iccumw\j kl\[L>R}Ooɒ+ Ȏ58FK<,g8`C :!r,QL#v%[B6MR)$lhP˂(PmMjV vBDT0]8% Nkkec(ܓZBB?P)BMF-ufv5{N*P'NPAwȇs[&ViQKv{.T4z/uH8[p=w~'_eFF6H@ Q{)ow)wrXz[u:kԂ@hWKvE}ѳu) ݸංPRhK~PCxx6WPm35W +Rǯ}ˀYA2&Ne6\%* -Ge{Dڭf&geEGX^=sqvH^r4қt:K<[r[P֕8y0Swsejj7J3e֛Aya&>gس,|[uaY@å.Mefҗ̻M+Layi AÏ<ĵyμ&so`Tc 1dqswmM'pyγGZhclR pxa^,s/ovM011 7&6vG1CU¾#/WŘ Sokx v0<eEFū?>eVVh6a2;:ࡘnL2\z+J&aW"—^Jy8N71o{͎6 7)bDb곱CcX12nJ _+Q bT? ka"Ӽ:w?arJtbPp!s r)E1 3=\ۣ4U"& ayuc agj#4:Tk+3"nݧ.j01X[ 1'v;_38*W߶_<[\w_ص,g xΐlq1ss^"K%f/]` U5=HCL?okʍ  uIENDB`1liFD$94592e07-047e-1173-a2a2-eaea0594271afolder_open.pngPNG  IHDR00W pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-gAMA|Q cHRMz%u0`:o_FIDATx[]W{s&sOs\;i3cTPD/߼ԇyD@U}X bmDlP#BLnd23̙k}{3g&Qca66{]o6l` -[+^]$1wZ)g8d ! S03'`5˟Ab+9N_\xI*_o~|}𝳗ubrHҕ}=bKN% vK,2#"JӛgNSW^9/} =4""HX a plw 0+ו_KXVbn?C@#|Ԩk,V1r5- FwW­;RNzgj.ď|3GzG%~gN qR!RlUr0*$ZnY!:t-Hap#7=IK lRB*)j,?S+Lu yN UА4k4e9\2;kHA'sj" $=:cR/r`ZP^ܱ.$楇mĻFTHA.905=ZX.w\wLRmwAX9BHSO0>q`h/-]Sm{Δ GCXU(r|L ֕%@W[qcV_Y6ά' ObZbМ='0جbp*NڮA)b  &C(/!{AD>cm\9@9;7v~;'F0,˕ڹ/,204|>>x]_jQޕ:' Vj8`}=Ujv4f9'#@E}Ь׉3OL^Ǫ]B(˞vgH h-׉^Ztخk5IWZﳌJBJ5KqM8>wNQLgmf˲.H[u?dwN MSk>%m.۴=<B([o?h4%r梉=kf-_u4ehx Nv_s˓$>5}|UDs)f042Fkٍ{g`edww+"Tj4'oJܸrFJexdpp߂W13y^(P} H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-gAMA|Q cHRMz%u0`:o_F IDATx̙[]U3sfNgzpBiAZh#/ژB$ybkb4%TђQbPPDFr)(V*Pf^a_Nc`%;sfu.]*Z笂  H؋abS%^L&o}m#7Su1Za?T FhYmNOLTYXy BiRR:e"85y]&kr+_z?-]sO_u|fAm("]g>yU_ʹ)#"_bO2ޞl߫\tU04@Ҋ EhWf_۽u%izr O!+/k-oZ~xuBu)MX]+\gCX=q1ld(r+X*d!a@BwXO ![AEKYC~hdS@-d.QmafgO36-v# 12a"$iB):)F 2[o$ n),J\;Z`hRˌ-(z`*yGsCp2@_.^$2I'm;c§jA0-Cvn5]޵;J*gPQ/CSt,!l|XJ?1;|Ԗ|]XJ1O4@!0t;9` IENDB`liFD$16ba0847-0488-1173-a2a2-eaea0594271azip.pngPNG  IHDR00W pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-gAMA|Q cHRMz%u0`:o_F IDATxڴk%E̝qXX`5*A֬~@&|# H4hQ1fC@E@  }tW?T?PI֭>ϣEUyq *( Ž|X2Xv-O=Е Lwܥ]D{ư_.ea=1(?4֩ȔNώsDӻ)]t,IJ7,+ƤZqd:'='@+n/#OM+x+>Dx,!N{AY@UOgV"%tD<*4v&{;cA^x,w>>ǯ_e[x9s;O\3uNL34ˈ$mGȓSHe].wnXcSϑ 2RV@%s#u97}zκ\Nv g_ yt5.(AJ{)hENI$$ؒM8 (qv*>z7g_rnpp1 {HHyhE r"L,O5]zq`(}8Og_]xM<\K"&ʱb -8@'J~N_7dfS.ק C\{UyR/-H@ceвA)q+\XbYKnYl~S s0u\PԘE[1-o|We(zq51Rxy *ֹh2HSNFz.s67By  [Tz}Ǟ~ә~~ Nwڐ)0Kx*LP'kYf5n :..sw@TE8I`+f^6AoOgK%ӫW L@K.B6ezz$w{dYȗZXX`_˯Ǭ\5ZY.7Xe-Q\knDn%c 6XYB N *BgvZots4*!U.%WU#`bLPZw>g^1 IlOb[I"%B՜VJejPZQblbZ!mZ-1&Pmpd#6>wʥІ0T^PiJl'1iRGd#&6DL.KE]q?E}Mt CGr(y.A` %:"ZQD>6x")(E!ٷERG֎ n[Ѐ(6qx]k`kCtjj~@ Ar06Y74񠦜K,QFXS/JM%h@yZ< jB dՠ\'a;`#9?p|~"oKbKM|>E]N"u!Q7{o|gO^?窡. %<hb~#|GlXC+yٱu[0_DRF+ !Umd#Kp"|~(:דr0/L[h*5>s{Y5;H U-' K*eE+a4؅Cps$R1QDE3=ۧ;%y.gU)Sd^9ef1``G 'SCjK2VBZYe-@{%C0{ʡQ|~x-]ijzِP_u"+c?H>ٮs.LfԻ)nt:=Pۘ_POl$ŪȻlw o\} ֲ0b@"FNShTU+V1_(2N ՞2rj(x }*H*CN\WzJө:vԺCMZC#Ӓ]Ej],b1y:wH>w%l{Da(ҖSp!u&ђSm/;ZԼvoߝu|)?} ݱ,E};RpY~7= j~",j_9[U+&+kÅ3/V:C˙^>>{򮷖Tj&A'po5wo.ǿYǏй#} K]R_2' VVj^pGj4E1:]m/.^9W8yvTj6|?|kڇoUugƒ(ޓ=RZ5TgQ 4cyz5 R{pSSNi\ #$azۡٻ2D>q~ ;^Qc1%;).aoy䕃c(xu[UDhR]J  ׊|#Oy."'S5>R1~#<};IENDB`liFD$10ef980d-0488-1173-a2a2-eaea0594271axml.pngPNG  IHDR00W pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-gAMA|Q cHRMz%u0`:o_F IDATx̙[p]e47$-M6AZ Eab_ >30x\T$\t~>kVezz*x1MvgNF N_ DmH=18P,RA_]el羯~K6;}isݝm.hXH$\JQ20?7K@m`CX!NHKtvuzwѴfKJ\bG5[ũ(b }uj c.đՈV1+ .` EbKJ%JB5͜H_Kɪ wަʆ K ܢKP a؂Z_cL$3v\'?{Ņ7ވj8ow::ԧ?ˆ܂8I Aljȕ-l٨1}TsGp^g[GDz*'vzzϮ]L=ʛ~OP.qJ]k@ I}QQeaa4'k5nw?5S%<|QQaczV9]c蛜2:r7" -J.274gfT{菦'ET%~it|Nww޾4%:Yզ rYC7E2*ĉxet뇇>N_@zK} >^uwfSyG8>3[ochV.=[;Q qiMJo#̞q0<'Υ\N2#M*n[ogd|=_x3|"{>fcǚ*fND:tѬ\KZ7wE)|{;rYz>57KBO@\ =)M`%FU(n+6oQ+J{ 7P>HܾT&O 05i\ep6^r܈ir~i }^ﱂq+{ה(X*T_ (,AID*V 7\޾P^N[ɢr[.[(6 ՖuNa@AGijl%U`AmM|.-IDGz4}Z X qsVr V2s5 5m-6жWL՗ʫNpR RIENDB`liFD$ebc7ebeb-0486-1173-a2a2-eaea0594271apl.png8PNG  IHDR00W pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-gAMA|Q cHRMz%u0`:o_F SIDATx̙]]Uk;3v6D64XLIH `GA"%bAjE[G ԙ3s9{/>v-1{Ͼ>GTXRPPD@[߫N)6W՜O}j7NM;Neg>8[Dwck,RU>1Aj#?:U %ree5Ӌ3g.pv.uSe5w,g2 Fd+$Q`^z߮]73=\ tw{x2Z딕唥D_޹~Cy@UW DjHִ,)ֽʧoz)Q'&LG_YzWl4\yחvྺ.Bk<'mP@$og(QCZ; מx 9Vb?ofճ%OsT8Dy|_b4Zw=(tA>U3*#YkɲrHAEda@?r0k)@?_D2G!"ܮE-[i^HD! U{腗)imEgKN[hV՚j `BY/#0IP)@ĝ>̛:;￳#C`cq dN$H"Lށ|f &(b AXqA\*QE7WG=A3zD6s=k SPIzA\Y% Ryb26=a0'*_rqqαt:UcL "}akY]?1wIj _ uo) 2Ք8~$vͱ~z2%Xd!B0  !pԻn% 䐥=Р"N]ۧ#you<9ЦleTi,9 Etq*0"S( Bgt݂}bDhPuq8z4q@7Z`2UƛfdM3&@Q6lae#e͕ D8M'YZC )ؿVDu9Y)bb_":]wtbEDQWhGxb4 JGQ̺n$Bwr}˜}$'uAt׍/ /`?>uxޢ_c6s# R{&fuKgVgW o3SA [Q\y@غ #{NU:H]S7"-VIDṕUd,-=m} Az;; /yw)kyZ5\ː\m|.G*%X=:cK+&Aj#b8Qci`jr0_r>l]BTaseb?\ 4($0ݏJ cs";ߏmg<T>bF:8 0 O6^ZIENDB`liFD$bdafd78e-0486-1173-a2a2-eaea0594271ac++.pngPNG  IHDR00W pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-gAMA|Q cHRMz%u0`:o_F IDATx̙k]Ukǽ3әBieӊAS(HBcL4!bAI`"5G@hR23{9{/?=[N }9{=GTƟ5(?͗"8uXD ׬f11,i,RU>2@j[*TIHf['FNN]KJ3qgb  <]ҟ]62 ]u6l 딅@4n\><;_+V"tD[++_SLiMο2T nE?̡7\$'p~hKPO~-/x2}u}+Q|$e_\[^;x&VBXl^-4}D@/!=vs7aZϟ82xѹEc8vXozo4$9G I_b"Z=`SA3h";z-߸֝CGy{5.吏X3q SM99 %Nga[JssZz'YWӜo8 ^< Ƥ)B+*OC~V?JUSrbk;/Sg)a<ƲZlK2CC5g^HN7v^5]Nlg-68k:M:P*'l2}rql;8qX8' |T!ʠԊ, ӏgI׷E]jE&T3JWEݥ_ %V+ :8r1Yv5V08TgY4Xh%.ym7cVLr,ӆ`zz~͛.bxxApMh6[,̷9|"I, 7Yn#p\nsP V3>KV]gCX-Q ӼiWQe1^Pz-%vhJ Z"ɠT90)1߷Zy.ʎ%!E-H-z.guDq[ Rjǘt]K-ۉU~ZƱnJ%atU_, CC\zŧKm'j+=>*g QdI 8[Jv9qlbO%H6y?.Y_ߣ͙y D K(Ddݏ~w!"_pWD.H%?O4@0#Ka'@IENDB`liFD$bc26a07a-0486-1173-a2a2-eaea0594271ash.pngPNG  IHDR00W pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-gAMA|Q cHRMz%u0`:o_F IDATx̙[]U\z̥zA , ІP! !>Ob51} Qx!&5jSAR$m1Z2{ok3Ӟ3JV9{U|OVPPD@]k:SlD ]4̱#oܰzhn3n:ZmaHUp>?T֩ ( ";3Uq '.e/* c.^>(S1hX#Q Kk™cúJ{r/}_u\s{?9Jb\'!I,6A>? B֞sm/6|]NO,uӱ$JP 80X x;kBBo?9c'=fQŚ;=Ynڽ)M@ Ĵ•7QTxLs$RT[=M`L Z+N0<0|W`Zz,w×ytݚ&US\<6KIwJ%vVԞI: L9K8M'N:"NI!V Q-235?Ͽ~-/ݦF2gB5;w)o6Qԛ:a$8ZsgP1aƍXfpFi$?xm?{],gϼؼ$'?-fxGض2FG=s`mBgg[ Z$yN6c?%Q18Zk"7_> L*(=UMfGu#mR`1cIh'e||=a(`8!pB>Yj~O-KiDR*LO2:: [*NEFcRaDVk#B^o?E=wIV@(;ay-)=2Y5/B`Po!I#hxAR k!VcLr( lN,򃊤WLǟ]\imbQU lli[#4r/XADIZ$8S)꽣klJhA) A,X1q!&@}% lu: AZ"MGV+e٨|TvgJifAaΊVWb,hegZkV `Rπ9`??qhIꮗ߽ٴ(Jaɂu .{`g~jʊpҁ=U:u$[^As h[To S)rx*:vo#R9>T@zI>nX F\uR'xLuTAb;j[4ds$H_"F8Ⱥ|EViQlMjZZ%/xnVN]_(\@&"8IChǮSJ5 %L>w=[WN>vɂūT kt@2(U3}^+K鮲7{ =ˋ} 4Ut]=pK2JUGs݉xIoZnI? )8xg썶];W$~d"PVcc2UBQ}@}*M0g7!*xy ) d26KF T1SߙLxoz"91z9߫d/V*A,`Ė8BWQHQ`b/>bpF`$~i}C0y?S!Ng=uzĖ^J%`0W^rcfdefk\eExd\?K!{w|}"yWaGe ~ ,!l}XBm̉Ȧ>v.!"J|q-wxImIENDB`liFD$f3bba182-0485-1173-a2a2-eaea0594271arb.pngpPNG  IHDR00W pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-gAMA|Q cHRMz%u0`:o_F IDATx̙]UkϜ9~ZiA{i $"4>x !A_41@H#1jh"PhB뽷{0_{9sI&̞=rWPPD@)E_*rEqk7Y~Xrݸi##Qa#2:VyGÖTYZy䙹ƸK!>TYNɪABA"F`^x.].ռW v%Wa3?ihE'vOOP*:"Rm>>d^kBpANL6C/ϿKP(C9WZ~mwwGO~🋗:X'jQiJ Y܄%zS-dUiZڞ,Uy1R:)ijiBd #h0F}bj9@lؼ/Άz&mп8EZ:֒)iB@C; /UC̡9W~rm7;|X%IvƝf 0 ||#B=\^A ',;VLw BBgϽ @PًTSuxD^>g^ `|NB `BdZ#xG2`5ǝɦ7?C`cQ &[f@eDVuge0u񸪖h,Z;5ϟ;{gNg^z<ұ/OƩUSS|jҝRKU>r eΜm/$I:bN Q-<ز04O[_؀yݲi8wo1'TyWF]\${SװќYKNMRu8gq6Zc ayF&kv:)''^O^ xSo釶e9-; ^Qvў96eybsgY\\&^%Nmn݂8I.ݺsl4X$##}SWL]=`A/ *JOU{c9($X*d!la@BĉزB0$!pBR<6ͷYn}cJȚJ*ϟebb,3TߪSQĀ̘04ng C!jODJ`%Vm^xE!0B ($m4Mcka#nat08lB, YH֪ £>!4O5\d\M,6' MdD&G3dޛ*-զA 7[p`$IH1t1F3/VvlE *A,97\QTeQ#<1PMs%5v Q{䚢]$'eBl^dE h/)x]/_oٴFDdI:Ķ .aٞU[fҩ y ʡ&\x@{: {N:HdŃWc_ڜZWᓈۙxbTMZkZ<g{"RCkLan=ÞWxS ZmŽ _zn<9Uin7@ԌX_si%Q_# Wɡ%V:a<`8҈,ثĨW(0c}d$1m&1LÏrq'^3O&jFLV0@PW(qz9H[ ]=>qB(sz~>sݿY~ Ė)(v%H6u_=py@30ʈj C$s">CD>|]HO4@0/~:;!}=BvIENDB`liFD$e25c83d8-0485-1173-a2a2-eaea0594271apy.pngPNG  IHDR00W pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-gAMA|Q cHRMz%u0`:o_F IDATx̙kUk㜞Zq6D6Eiib1&Ę/ A > ?FE$h+" h/ /{{03si{N I&̞=k=? *( x>:&Jp#~k9ˇ׭g?Օd11 tLRU&?5Dj[)?T橒*(  F]ɵїN1:(S1/S 0}E9oy(u|>YzQY[1n%'k׳>t"0ᶟ;,o~Zdb`#))'H=`d%?q9u[{r YfgN-# Nc vfJq勻ll}* Su{7Ƚ @1&Lj_ T*Η5yto0GQU Sj:xnI#;Nfg8^jS0x% R8̞[הZd/~-_\Q'sXY֙hYR)U>wEfO0ȁSpbR>^rlna_ܻ?[ 8gjE&T3JEݥ_ %V+ :8b}=w%+V3|߻[nB BIrKy.ݣU2ڲue/YإG*]>}iQ,%"cK%&`*yi(fj3dvSUzD')~?6o;|ZR=H⌈:k.s|6v֩ʥ3h)CSJHHws)UV,Y )h)@ n){t!=S#u 4Jɫcw-[ڶl'VZPl^yg!ަ7m/i? )8xvg^cě*,[$jn`خvU0T1g_cӕSeɇI=^FJuKJo݌IHui'+AΩbJA'5͔/-B59ex9gTMžJ|AKJU 2Mo/(:<:1) L_..#IlM۱ 7* #\xQDԊ #L솠TFbQ>^Xf?Un;U+_W9Se~"[OJ\ol+@DZ-J=J8l#__c͙y ǥD{ s"vgO+"%R :4ڝ$+JxIENDB`liFD$7d242227-0485-1173-a2a2-eaea0594271apl.png8PNG  IHDR00W pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-gAMA|Q cHRMz%u0`:o_F SIDATx̙]]Uk;3v6D64XLIH `GA"%bAjE[G ԙ3s9{/>v-1{Ͼ>GTXRPPD@[߫N)6W՜O}j7NM;Neg>8[Dwck,RU>1Aj#?:U %ree5Ӌ3g.pv.uSe5w,g2 Fd+$Q`^z߮]73=\ tw{x2Z딕唥D_޹~Cy@UW DjHִ,)ֽʧoz)Q'&LG_YzWl4\yחvྺ.Bk<'mP@$og(QCZ; מx 9Vb?ofճ%OsT8Dy|_b4Zw=(tA>U3*#YkɲrHAEda@?r0k)@?_D2G!"ܮE-[i^HD! U{腗)imEgKN[hV՚j `BY/#0IP)@ĝ>̛:;￳#C`cq dN$H"Lށ|f &(b AXqA\*QE7WG=A3zD6s=k SPIzA\Y% Ryb26=a0'*_rqqαt:UcL "}akY]?1wIj _ uo) 2Ք8~$vͱ~z2%Xd!B0  !pԻn% 䐥=Р"N]ۧ#you<9ЦleTi,9 Etq*0"S( Bgt݂}bDhPuq8z4q@7Z`2UƛfdM3&@Q6lae#e͕ D8M'YZC )ؿVDu9Y)bb_":]wtbEDQWhGxb4 JGQ̺n$Bwr}˜}$'uAt׍/ /`?>uxޢ_c6s# R{&fuKgVgW o3SA [Q\y@غ #{NU:H]S7"-VIDṕUd,-=m} Az;; /yw)kyZ5\ː\m|.G*%X=:cK+&Aj#b8Qci`jr0_r>l]BTaseb?\ 4($0ݏJ cs";ߏmg<T>bF:8 0 O6^ZIENDB`liFD$39292081-0485-1173-a2a2-eaea0594271acss.pngPNG  IHDR00W pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-gAMA|Q cHRMz%u0`:o_F IDATx̙[p]e*-I I&^Œe3b‹#/>8Nk%舷8"ڞJs-RlKO$gߖ~ړ8|3_{_*vx>9>EKQ2j}饟yݶ|w.g`۶mJﹹ9;}a|gvv '≉ {1LLL><zLLL'uҦ`E,[ ] h"~o\^5?#׌l2pam^VWY¥w{pC\_Q 7P\Woyv&d0Ю>Z{UlO CG{) [a@۹uTJ{կ}\|.k,pqC__-hS!<#Z9dYJzܶ.F++| o|? PĀ1Xp|/\ݱ#}SAlLww'2o|&TsBd3'։A1̞sj<磁=2XP,U)Yi2A/|^}{]iş^V=~3O  Y@})FFpVx^X F@, #!T(пrW}-4UPQT5%ky_Jda~v^l³ 6" 5T+cܿ)N{Gm,дfTI5_K$h|nM8E x˿~ mH(+jb;OѢrIPttMS!Gkq0?Uau]J7Y-ԯ1& Ƅ[6cgGR.Bs #ZcH AXkR"faxb[bJ"mmMB"﹡E,Kw#E}eRI1҅L*)\Y\b ff5<®0} 7@WOows'OˮaFF(w@.zRG,_ATYZZ65Z탃|f>z~PNqf'njs3L|;\DTKB>_$&F[U}Az1D/ oBOo%ÿ R`V$ӑRFF:Z@:uO~̕% r޻R'۱526  ~ 33\JwoDbn })?MM2}c32:$x4kX%js 2{޾\L2v}Ԧ` NOM[94Skg94L!zc1N`LQ,e;3T`4~*voeht<3S|λ5:. |E~qsfx?qjt𾈺h ג +n4e(B~ny ^Y?T![oqg㺭|lSqݩ3CG2$+))Hd 5wA(̍(;oC=xzPYyb@RЌ&M 1JO_?{?/բ5(qHZ"d9th{R-7]g eJs5͵5)ny ƖKu#eL%M҉sSIENDB`RliFD$09ed4b52-0484-1173-a2a2-eaea0594271a html.pngPNG  IHDR00W pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-gAMA|Q cHRMz%u0`:o_F IDATx̙[]Yk}99gnǗNlr#( ܅UoH RE<@T*"Pڨ0 I$N293s{]>>gΌ3$KZ3{|{￾a_j}y@"H;;nrY]Y^3d1fW# pPFeѱB'B ~BMVp;~7w:v w (E#QuIcwM}7 Tx^顳q-ۚ# \}Ts (Q6/k Q\©®T{N`wCs|P8HpsUMG}S ؾvо{89wDC@iIG;O C`td'ɳ<"3 ~l[ć0\<"?yp~*yrq(m4D^xߋ}%p<çxINsg_ٗ'o=o+={-gF A$ & ;yw_{hЌҎ ?Ǫ0"" hHBQG@dp"/+g޻n8`vc'47l%(4RE;["I-{kg.ekm_=aϷAiVh! P8UiNǍն-kn m_O̷o=a 5Q%c'1j:6@RFO76U_xE =Jn{mZ ˯A` PxzX[_> QQlGD:,l19,xTMDіuh6SW^^^ I:_Sz!@g!*D56LM*:ORXKx+p- Zkt֘8Bd Z虰cwgd`@To_u_Bۜ+ c!M33t~>ޯz݃k5#NZ͌fɩqcֻܱh;K?Q:}S8vl8I[0G19Ve1~3ǹ=N>Fb["y/{)Aɢsltd]&s*i3oV; r" QZiwr޿/q-0;k8:CO Eʺe|VD-S_Ś㩍ca>j4)&(\p_Y$]Poc,!+ˈx'tyѼvE8X_= 4B)M/R {HY.!ĵ+\xA+"EGԓ\@bHv\R Mآ5Aa,4#HgqO}R"I4:E_;z,낚5#8Z.DU*|e|ufsZ*ۇ/D2:H)0Z| M5$(70{KʍvwiGGOpJ)Da%)GXPJ!  e2.KsO|(;T DE@<9K~ehh!La.P7vW - E!hC/pׁ?#20lf'zZ*V ~6(H |Ǐ~}k :4l@z ɱU+'mwe6UI'Veb3FP8aejzz^ۀu-L2Sola=+NB%BU&|T"xWABGӬv(  {E:A((|fEA!CtϸcA= h_TE*ef=m`#~ B#3C 4V4. "9C֛RA+Fi2>)K~NatY;/_ XpX&-A :C'(G>P!qC40h"ny)c ^4F?@E4iԪb_UyvBTX?f[SMDJU J(+h69_ uoû;(%PDqTA6w1@ڗ o6zw$c44xe{wSdc6`ј0A[Wo &l68Iۄ eB9}ļHfqeY'J 6DFvv D4TG+PqD xa K[y_hf$t>#$ HUɌ8"}tW/vxڣӇ@a]Yy?[+E(VF53tdL`]z!)OP+iE&|hW^bzz?i !`T|@|KI'1I#2́)Vd͌Zz(j]F;H6oF/gf{ϛYgjr(x&5Q$1\8OVenoި3>5"4dX Ky{V(C+u-cc z|XkH`}ˍeqhj{pqcF1o6ĔluF>BZ jgk+֕/k Q43Em&'ڷc4hha D@c͸(" P=@jX/4FECQ>)jzɼm_Gh21(Y$M>~u;9I5h5=0֊m-Ru8#u&N4QQ >lZ73 a #׸5BP86ǒȰ`)_,-`鋳~B*"wOUs7ΰI 6M@lbC(>x|҆RN+NU]M1c쨽I7π-2IENDB`liFD$fbf50e48-0483-1173-a2a2-eaea0594271a office.pngrPNG  IHDR00W pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-gAMA|Q cHRMz%u0`:o_F IDATx̙ϏdU?ޫꞞ * ( 7FPcbbPrcܹ2q[(E faiz{{߯6TxLWWw~|~Ϲ؋k *( gA>(R&[]ĩ'`qCK[+z 1.7MU{m^C>U5socG{W ܑdLUFAĠ.ܠȬ˛~V%Δ0 1Y_*Y#2q]kY3[1{{R%T@8gPr<0(v¹@OLRЎ!=AAԣB +3.ձ.}Hsڇ >L)!(=>*_UUIn l׿yBS]eS!0 JUySM*IInB&`gG3+̬mT;٘فUB-=4*{OYJDn9Zfqbvt> NozѦ.Q%h`<)8sܱbڥ4=x[̦("1`Rr\blw"`O<]OPz^C4RD "1X##ȭLT'uB1Xڿ ?/c{czjH䑊4Pi[3XD061XF=K䶓  Ü_^?*!IIw|5&GŴ]((_~*L ( "Pz%u@DBÃUuɓ hd&1aQLmb0bePl/b wai0?w3̧FC+9Th!Bl׹;P(b0Ƙ xɐh2!XO\r9aeMR2Bh!sgVysT'x9Hh(4 "\|`ġSV,. /gԏADU3b-+Y9P1=JGu%p#_ A=/#})x@g_Jf钍11<#X RlLD9r~^LChI>VoT\yQe~:>!.Wlne X{87IOQ+ ˀ{~FL|,Ԥ/~"Sc DFHӀgz {B[Xf;h54ӌ6O:v3 yiN !~ZCihj; ,D׿R,g_Xܸz3gCc'?УlӼxfpf.}"^kF mʡ)1lbt+2'H.S)?ku5Bg)i/n] M])1A wÏLip6,x!D\ki˧vAx["@凮^f6bjL['o3-#k3wĨT ~[W>Z!<F?y}+AT]Խ@G{ѱ vEb rk,o/Mf_w]ۍ3i9B+>T-EHA$FHoq:RgZ?7F-s$ 2Dt&Aj ܧ.ނ[[.EۍJmI/ŏ=;Miu۩T.#kOX\ :7?i9c4aVAN5 Z9w1"d4ajiҡ3zve]'s_St6yzm0dI =Պn?-XwPdO$w(O4swLao$T_>(\.֙e PX_NSwgt@Dᓼ]"wJ NՖه*?3 V(wIENDB`liFD$dfc1d08c-0483-1173-a2a2-eaea0594271apdf.pngPNG  IHDR00W pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-gAMA|Q cHRMz%u0`:o_F IDATx̙m]Gy̜s޻/up16خ4EX56@7!Uj*B늈**BTBPԦ@1$QRQ_ǐĎ{<0{w]Q9gyrDUR;dGAAPdl9_E Q ^/{6mc?ݰuT1n^p-$ưƹIUv}^>ma>Ut=m_Ȧu+6ʲ,W!*e%5;.LҫYWxf~ o'Nv Q.tv ^suܮCq/jPGOm%=/i~ ~?rv~hIP(ϼ̪$a0bCm>ѹ|Ok{(x hXI]#/nv7eUBQ|}EA XM A~[ /}/EZ<>|An l#}W©/V[jёw4\;=W((liR2S\i3}[AD5[۹uG\ aTkؾ.c۷mF9 V=sS!B(/jaP8{zsu%& P e?pJ-i\5pXz:$U%j/6I"TYp?6Rs'(O%+`RYț_~D*DOW?ͧgvspd P_oaĀbV(#4,H NDfŬXz@_V1\xMP=].v{ Zk ԭIKi ƖFa 8@!/ATvc_ܭ46hGk6cHVi߳ 4>]Dp7u{U FHc5,I)Bù'\EP2 "R)2ِ[]? hFEc.UmSX!@@F hOGEͼX&Mw#050>7N2N8_ׯk+=/=GB09 yo[^fa~ܴm=G QLR̡ ԫ\X.|?=p2) Q')i3;3a#t'bgS.|@c``5dyTɩ&s3&t{ gOl}[~ ?|YW@N+^wa.@ZtwmK=;YZZ@z;";LOLxtBOUKίYY^ F$1 s R|>QF8'c"πȏNa[LR***w8!ʀӜ6'H[AkYFS(?|1j߷̟xn|*\Wm4;Ts@l_BfDR|k7Q̹M@!`totfPRuT( :߲wKуZ${鑹83Eȳf$_c@ԴTZ4/7VFF,X5Xk$o4'Xh4rfN9͉ R:31*5;RAJ`UhP*ab&ro 3QWUbbQFb 80Ǐ>xeÀnD/R hN$zC&VUc$XS_[˥$)m8c*? bQ5_5`%N60a9,˰Z|_MeBu:*bBTswY4=bC(g~@UA$AbĔQlh+Tgh񀝲S,-,ܾ/{ b %&yeA %RQV]'+P|Shf#{'|oĉß dH@lA КG֊Fk -$q+,bN6P["N0qLxM S1`$6fPшDJ6C:jR^|Y&+JC(J]Tٜ)nhnkA55сhq_ZK= ei:f,/;XYSy0_aD+q,(D漆Rף5߸ Pοn_}h?'=\UC j45WQ\ =uG?GAмfMp wz9ܸ6RK\tE.6HUstsܶF?totu4yY't"07&FC釐Xz[ܶǪL;;5ZU15Z[y#ߗ&mNhѹmoX!e-" `ƨ^>40ķ8u8?~yZF:6epXJVYΰշr2ཨXxOa7 8K%:IZ/ Jt~y/3%meu@{zBGۈ^ rSm;g'L]C̋K s+8o!)55+T\wbQ >"f1@go0>$$?tW7g_ [g@fa e!#@D|5]y50]#)cUYn;K &IENDB`liFD$c782a35c-0482-1173-a2a2-eaea0594271artf.pngPNG  IHDR00W pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-gAMA|Q cHRMz%u0`:o_FIDATx̙[]UZ{33gӋ Lb! "D}ÓOh_SIxB"(ŶBK[:s{χ}9k93=Ja%{άEU9WÁy@Arm1_Eq^q2.|#_۰eSgy3zіLMc chIʶK; [S~S%W"SS'b;Ϝ mWsm$*̳{Pb(&.ӎy-Ly<>r=˭r|ә"hw_nyy@Ȼ(2@O'ZD/Ͽ>e'2%s__Z,~|k3㼐C}fVrv|/_xx2c\ ;yم!2YpYJ@$ F?G 㜲ֵM\4kҝžYP{ߦg9sS:v,s#K2$eXX}E9#Oǿ?;sN94~BJD@YF~WEȹ',,;{fjBmMF;~/8LR&'[Xm23bejq L'_#;7dr[?|J/ܡ9|Ȝ\Yy*Җf<ݔ4Mغi]7^AR j:TIjRRK4Z[܋w]7bm)y@"Z

    j$aYQq!є?p|g4uU 1~ 9~ic}b l#s~-!z0D(D?uW^z[y:-"7, :̏t~ncn8oIENDB`liFD$00ebdf9f-0482-1173-a2a2-eaea0594271atxt.pngPNG  IHDR00W pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-gAMA|Q cHRMz%u0`:o_F IDATx̙[UfaAgJŢ̅bj[ӦKӘ&M&M6MФXjciqAD 0sٗoa߾= 9/_3{^{uZڢ̷I@AwK*J{L|_W{2[YAAF@V~G3-EDW?~P5G痉"eC?؇syb OLտ++_"E:O|2M@gUYf%a-4*Aڪ}|{mMEır'GzcGzY۶Ƕ-j.sSDQL#(zBՃ w_㾿L>z,(<ı_[]{xKG1>n\ |N_j!z U" mHj"t_tuK^lar S.O_#J+0V,Z%ajno|8y(/vS9r8O&$s&JfO;sd i_:iD16юH,6R뭱2~:0 #K[U|TH@#MoA1zK& yRng}B'QT d*8 BƄQDxP9!q&<.VV6 " d)t$-H>QɤB5F<6ϣAXL $qGbtkzE^~;q.f B "pr%dA)p僚^kXB H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-gAMA|Q cHRMz%u0`:o_F 9IDATxڼYk]UyCkx*"$|` !QQ#!h1*QcD$<dBQh)P"`@ʫ0̽cgzg(N=s[k!zY( w)jbXcߞ= {u8LOUrIxk?]G;Q ^/j O<}䀒XU€E\,`3 :nDQX Te?c{o1f-F6x1?A @(  0< zպO>[˛L IAHxJp*@WwPcr,KgP%*jWC5CT(#κu%NtjuwF=x̯ '3*2)hf"4Ыz#E 5c 㻓EzkJL_AmR9~s _xrE=,FUbo-}"i%"(M"KE!΋'PU>AUC "} Ćç1vX9ݏ8}ā!!W$h¬hd1,PuaPp"g"*ƿ_xg16洇9YqLgFM&c3Ec`gP>[JBPƪ_Ͽʢ*V i t,['bù!X#E+QT^ u5_c D<c`l̷? _?qOΣ[iXPBEAY5P*D@DψWۙ;7ޘYvydT7LJY$$ ZERQHCiZ4ݱ Gm 84]X{yNux=@*Q#& agS>4Rq? W^I a$H1>|)N9| ޗ06>鷭O44umլ(1Hf}ϥW߶ y[G[&ʦfKSy;WN37cle" *0̈́6:Z,I(69Q$8*CZ`TQbԆG, 5곅@٘D1 F~#Lri%@莛om7$Bo8uj&n?/g 35L_ɒ r &j> eۊEԤKfU(sk 1 $Sf5@ii_+qFI|5_*vu=v݅lt&˯k&$^Bn:" QǗ4}sdV]L;dСQ45ªZJ`j[ 2?N[zpyݛ Zq\ɤ[vgלi#Y h jJX $ҲcJe*ClFT@Y6,5|_SGbP*vfCD6 IʎhO/eOCxk^&*%ƒRB _%IENDB`liFD$928d337a-0482-1173-a2a2-eaea0594271a audio.pngNPNG  IHDR00W pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-gAMA|Q cHRMz%u0`:o_F iIDATxڼY%YߩSUweo)@@(BPEx@PxA $P!Q0"& 0&xdzz2w|s?5+̬iT`UIy׺9%sҴK q k4+?0+BE븨Gq<%VkK/AFTP:3)eT6E1QSf/H)J%ju/}f~We}JRD "Lb`# k$(@ ;v~^er$TrF*RCPN'1#E&(~c X=,%ڝ/b|\BPe"P쉂:A] X/)S&tAW"^//?fQ[=E5_XMutn[r `L :xwJXTbn.6ҳ?1-^O3PxED ls{Ý!8!K3Dl ^?K=]+ }qUZ>(+@+x@QR׍b˔,IF#b8g9r2y0қkq^8cJz™|ZES&L'^+QMUB R(/ -]( ɲ\i kሕaȡt继#?1#2Wxε6z1#bm@f KF0P'd.ֈ׶hwZ?7{̕^6-<1F 5?T1`D S(cmƒSBZQ8u( \m:k:Q6zyJNZ@ #a@Ȓ.ϧVH1$/S,珝>W*(˄aD6Bƕ lF!i9 PRa1gi `=Ly{$O Nˢ5ElT (UUZ QzC5G8 B!A`#KԎ[1q+"-6 VEԊ ̤^z I:󋇰cu Lথ bF;^цԤ~$Ɲ(e ܼ\o蟋qڠ<+j d~?Y5Z01SJbW l|1 7j^tnI} "^"Y~嵧ٹ}o+ -)J2TlOjvWgE>l uz0Q-76Y*q [ ~çD2imQDw^zM^%z bs}XijN4D y1Sy`_tX׎Gʉq͏vJԝNu&o^ V pÏ79S|꧹&N~h]돪&R tT&nj\Ae=V,r;s _e^[E2IBuҔxI-[km:NQU#r>'k7W=OHs֪xb:5#+bPpm :|y>/op.gcul?ϓ;lo56f~bI73 iI@5:?p#q9MC6yI2f<66Bw{h @y9 N98[X'9{i^zyqp1/NXޤ{J[to ~):]¯p-?h!MƠJ26ڕ">򰿿z%k~$W^fax"Mf4I@!{iG<G}xxH3 nm~Hς!b 6 V] di^wT/it=+N1Fq%M3qp8~msN@t{bA;Zq${K' "SWV\ +:Qt>I.b s 0&xWּT%p(o22LQA vD/q8&,B cΞ8Kssƣբۛ;?.Dp$;+`سa7e0NP' 6[tw~]nWsY\v#n{yȣS ÍyM|0dmJ~?MUϽW/ʽ֞Y:lc.%s_Ͼ|_Oݛ wܠsa}IENDB`liFD$20883df8-0480-1173-a2a2-eaea0594271aapplication.pngPNG  IHDR00W pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-gAMA|Q cHRMz%u0`:o_FIDATxęK&W֭9әa1ѥ !C|B ]dqV4JD&BL@PB01fgzW{[[_wON.|Uݯ<9%;{UAAPmu==" xy̫;8߿braE;ưe٤|<#隔:TJ8e0sKdK+}J原"ڜrЧg~q{yviS9LC4n"V@T6cyZ֕LMdF5^@JP!`A8 WW=,{jbF*TBmC}PAԣΑI7O?*Aю7)%ELJ0r80`Y~(1%&D LjBa<#qcPd ̀;ȩߜNf4Ip6b&Pj[!x)2i( X^c%W@'#QBHHEhGѸ$3$JHO` .T񴅷meSE0UrT ٨D[W|]5U@kBAĀ@ B`Md'V z39sLunlSO Pi" rƌ L1̶V+I,ٹA_8!;PE` j+m3i:"+cbgm: @*BOz(6*14Vaх &Rr `L2f{Rš=|?3.ʎ ZCg"KinUzE0Wzy>k 1tD5,,z~ ~4 4o~ ]nbүq_ppj Ch*y̐e(ط8 w^s˵zؔ M ^x>+1#bm " *Bo}۫|Y(M d艖4ijB?T1`D"LX[y`$zPFoX+eȁEQp 䚶J4FI#!3Bg[X\Z112gnfmzURhG5i\(6/(Tȋ9|ldՓA"weHi5uJTI(TH1$N*T=eclf E2i:LUC Y^ST۔ I;&NcV4 -rl^0;7kar!:1_Y77 $q@A*vvNv.u7uZ[UTOI^K1 RUdBϐ֙9@oY_z][QKv[*XM)a7u{~zߏyscz1*P+NN&$eNwc^ġc[dQΐۍ a3_28JgO|wU[ 66t@Q:DdI[Da6z!sևD|̖,ImUi'f!{0G{xqᝫ=}hνV^9VڒVp[*Oa'ιn^)Ei1o$ n$\%ݘѻ_߆ 񇯟qԡY_[c}}T MH %uzz=0{cꓨX=鯯3*i+TV u/~(??saٳ;oR밈 J;$Aq n^c}ruՕ8"0Lzo6SD;VMҒWM G\\Ya<=+CK'4L Ͽ+7Idv2whu_+Ae {@Py`+f:; b36A7W s'O]x5K9sl(O{ȇf-^?vV3x]D>K.밪ƍ?\I:IENDB`liFD$53a52047-0489-1173-a2a2-eaea0594271aswf.pngPNG  IHDR00W pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-gAMA|Q cHRMz%u0`:o_F IDATx̙YG_uz{8q`8!$\&$@<; D$b@0aB$vpHbLl6Yڻ3]UU}8xրBI]ZTeYAAP|77˱^=+*yr%3\]E僜n"4M$侃|بl[2߶+?6us8aJU1 {:i 536&y\SJӊӈ;߸g|e9dgK}+m*>$1?CaE@P O&;|ΦI؁AGO1qʂ@weSjMhz[f#2Ń !Snҭ\SD$)2ݕoٝyQ}"]x;:W+C=qƢgɕҌI0I'A33][c'+qGx^xQmiMPR E)~~&iRXs܃Wbe)`^qjo|zoM_;OhiKs͖ ng nbn%9'8rE&1$!tX?37m`rzr`qܫ_yu1smoK&rby{YTNIp|g/HpUVz}$, fZ?u\|9ch3jרmR%c L{b18Sb0!hCEH`2&'v' 'FL9!#|A@EL1'Q|A`$zŤIHTx~.h|M( W`ilzycX#+,M(ԐL3Sq1!1ym7( h}^PQ"L_HM 3{& t7oŸ^\)lADpIb-J]B%ږ-$@|Hd^+ɲIL5BM:C"!W4 R+$:o~҅{P 3%:I8u͇gv7ִ;hEڔ`ô"LM5/| 4 Cq\M*MFT5^kM"*@E½o=cG\9f0]r܆-#j*G~->0amLf:GW4 6 MR}cnXO&@z'[UwC'S'ri>i|҈;g{T?x =6ːZe4ۖ*jJFNxQLj%,:,]r:6k:faЎ͚uYyXyk!I+U S$c[Ӈ4Kx[s@@71O̜59k"ԳVEHyBݖ*? TKhIENDB`liFD$6a10139e-0488-1173-a2a2-eaea0594271arar.pngPNG  IHDR00W pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-gAMA|Q cHRMz%u0`:o_F IDATxڼyU?3gwZ[F(bj\c" H jL !j4`\p`bԀ\Uk`%Pwサ9{[^[qɽw3U߻(Rܛ_/" xSNbΝfbeISuhOb t,RUl絒~ udJ8x:8<=V@P+q?E )1igV;6{x|vfJg_) t)[O=gͱvV|P:+};6X򀪞?ʴ)#"gZ^Śejku[T l+;c&q)B>8hpB$ۊsWj%ʘΕg~wq>kyG9xblW/xޗsmW^ss.?=3'qp.O]Z/=}tyzOI"! 0url_m?EW]Z~~{ǿ Ey7; E4;Z "R7󾻭] [|k<~Ǿ{s/fr~T>o\7`,4DZ"`#?.-Ye}ɒm.;s?.Kʹ=%s"4PKGTȳFlѱ\#ظ: Р4XJ=";rY}CdcI$AqZH"c1S3KqlܪG B !B ?`'~V>u#&ʱb <8$2o$o'}2ClYmm4cX^x0e}VAIH Jε:Cs~0&DVQ$@dajenG?-sТ yhǗKׯ#J',Yeu. 4J3߸^e&pƖH]@?d\d-'^,osWU+O \J :> uuc6k6OGkv Qd &Ƙ=9AX>ٝ>~ yMrz8m]W`_5ZpxPLl I"4VVVXtyC5f8E6vlhr u5'{Eџ{1-F8k@| 7T(.8{|}^ĬuQp]rE[uq*0"LɔDrY9hՠk$'1x=$ɪ[J͓u \VJFϯmj8"iZYUZf_cL #K9cKP.6"Z H嵢LpD'$*IL>D6BkIA"wi(`KS_]2CБJA@K&| %3Tz$hE=4`cDѬ2Od5J6j8"*iA$ v цϭjjq@ Arp6Y'44S!@My]/ 8c"7Ś|R"(e+?KR hE,Q 5xjlWr\6'g A٧{1N&snOuI0r͖n/:!z>!(^:FQc hNӳCBF'~H-4j4ޟ(jW5P [&z|z]oB{fb4yvzf. *5J,IN ڿ8$ ֲ2b@"FJ%UdU@C#b  LN ^;?elRph&Qz+Ufk&UUL-(Xl1B7^t:5Gg.fbߡ!BQiɮ".jA*0n|9MH.}i0iKb1ΐ:hɫ64=oCm]7\ş;|eoe|(PdQApKͷU#z TjvnW3wgUvu 3x%˰axH)䁺A^Gp H$i5wis?G՗х#c>h(n` +Nϥ~~;<ц!uR} ͵Mǭq/8t;)'zQ{q)鬣s'~u=jFG;Rcy ¿|5 J{(+g>K #$aLrl{D8Dͳԅz!"/[5ڜ)=RBj뽢*{˩y!0&?g59N<TUbklFIENDB`liFD$619aeb1b-0488-1173-a2a2-eaea0594271a tar_bz.pngOPNG  IHDR00W pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-gAMA|Q cHRMz%u0`:o_F jIDATxڼ{]WukǝxlSTԮ\$£%X24H0j%VZQ 6rxR6m ! UKh* E!$5c{k{ln螻>笵׷8m| *( Ž|XZ6lЏYy񪉥MMeǏ׵e=1ӈHUټnJT JXs7NYB*+ZȭU#`bLP&A$<*{ Pc!MbäKJ̓u \jN+%M2Y5(-Bd(H[ qc[!mZ-1&DB(ߏ3c\ mE]N"u!M7ƭ|*{q;՗8W uV(G=F@3~:‡~:G>rH 篒Qx궗a#Kq"|~(:דr0/L[ ՜_S]z )(ZO@Tʊ('Val^!^h9)bcH$)L7vXKkZktJhbzy&o$ $p+* 8ML }‰Sx;M?*'#2ەz%#–ɵ`~WΧ^11<;=PNՋUj\_&)"ojVGZ<>_B8fi:n7CL)4S*N܋G/AfWO ^=;`eliBol1U"MS 9q^1F+NfQBO5t25j5OKv9w r Tykj#λv 7|>L2j6mHjT+-j|'˺}XsVEċG6pqM"rrL5V_Nk_9[U3+*kAWZh$3b|O.8n8lD:1u@l{pO+J&[`{oA珍dÕA.*=6j;0oxs/sq8t;:QG{k~e3ڇ5g|3?8ck%,ieii-26.MQH:؃r9OBX!M VZJL-C\51d'EOtAG_mqZVUZQ߽+_"oltMOhWv,^!H=zIENDB`liFD$60c01c09-0488-1173-a2a2-eaea0594271a tar_gz.pngvPNG  IHDR00W pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-gAMA|Q cHRMz%u0`:o_F IDATxڴ{]uks;ƱIj 46QJ1VxEm*UA*AJHLH R9E$MHSJ#H( m*!Pbž{s3aKGΙ}Yo}EUy*( "W{zWUzcKSkV,l|XzzjFZYx9TMkG:-嬮Cm*A ;=N!<9{ M\ײtg!=^!ŠqB^D{'\{s|zxrbL幒ChK.huXW =fgۘPl^D HYWWfʞ +~OT H/ξt7X{TI=o굻8CE"_{{kDZ;kWR_zXg]gSb1Bllgdr 8Fvمsw{vs.XkLb;p1y4~vĚb=ObgF$4"HLd nyUrvr~#Qv|& ?p³uōW#UūK 4E(!_/ 8z>A_޻j}XwACdc=HM~3"͡鉹>yCT5p-ʷ? ;fvO?@[s|}|9zn(6SFGhw-ۇҟq5MUNN޹q pq_6 xYTLNhD:]  d0Hkaavï$X5zY ̆&3 *J_Wy"WK$&#ll>1!xCE`՟y|{<0eeT)-L\n-8E c2q "峀#B#n$积XvKY. IXRٽMV J!J"̈́c{-(W8"}hnʤК!5wQP˔ qҠBHHť(P 6Q`1\iHq2IϦ!C ͠#h |p&"QDq'1' 5J6j8<JiAč8i0j]<]Dr35[gJPDL0u5: *x<)Ks#aXϗ#9MV> RрJ HmYʨ <}n@xO&P߶` 7Ҽ9_x13ڋȜ>SzIUɽ-<7l~gm^y/8^\U,P"gG5G@5‡nZo~}EN=ADJYh@HU9t kP!Ws,Y*spf9>s3sLZ((O@ʊȪmSSup2~Wl 1$QDWZdzkZf+VݪR%<^jz!8I 6I$\*?UPZ c Ja%URN*Ql\n2>:/+ZU:j% Jc}>Vj?k ^q+' ڕj%ĖɴaѠ| baT-T,MBD|`N 5rjB8fa>N'E)K2N˜,ĀAW Z9Њ%RA;*H*}AWs%nWP;h_IFܾ!BVi"kA@}v 8h ;}vo=5eqTZ!U&ВS%x94y3:~*k"}L1:C8O0L =(U?-3,_[fɩboejǠYvN z!dX}GYZ=OEy* ?%k/K/!n~t1`SLyq +NϦqGkjKuU1~_{unιƩp8SwŃ?uW#ltU~xw+ eiΒpey~@9*R%bx\\H #4ÊY3sVb"oq&Ƹz1;).f/yyCD~/8rl">U{*.ZWWW{EUdEWIMP1^ˁ)oU~3בVIENDB`liFD$6ef1e0ad-047e-1173-a2a2-eaea0594271afolder_closed.png.PNG  IHDR00W pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-gAMA|Q cHRMz%u0`:o_FIIDATxYI]E=2v'mF1$f! ;AHЕA.tE>E0Y8+э$.:1tFMwU1qHO{ާ$<ȏc +VX<:}ӛ 1V>7T` IĴJhAuݧI>ܸ>w@NmS/Vݓ 9~ީb1wS M-irZ2#}x'?kc8>8yysh6kw40ѸzWo6%n,̾|0嗹֓\_(P*_Kށ=6Mngyvsq09w==aۈz W!U0(az FeQdݺA'>wŶ^tJ0EH+* h9x~]Kk꾹3f-6KUh92Ha̜\Ro8@:~g?,v g6E 7%bowoŅk @ @A{݇\rbnaF̱h`nt`aځ" &7ˡ-lTZ'R^Z~ 0/y6'Hֻ-5'(¤eE)Lɤ/J1H\ +﯌Ck744[d2! 5!G|QCXz5">ƶ`rb+Vms :R-dGçb/w f}(4ky LSOk/UZAz.4a\$e։>PT1FȔI"UȦ~!ں~ ]MOHMM \rɢz*(g]EE1B jvӤH%B:,ԆnâRF3bT͠ks׶Sn\PU JQQ=2 Y ,캲іhT\Mɦ[RH7C(<)vIc}j dUcwER!$yA~XBcu<xlۤN]FV5D*8RVvת#Q4J0S_.2̶A`ڨ6f)ls(P F7J Nv^- z!_Tы*x")k9f 7 disl#L[tAyAI0>lZ`^ 6祿coZxYaf2P'w "[-DpEm7qqn 7.[[dW%Y]väNck/T*I4?QN;Ul3 [R GelB va$?Ai2):xSZyȫE(vgѴZma~USǒ162k5X73s_p?0jw#r-_x'|~奾t쭫;kJ: F0;&Na {;@EIENDB`liFD$63b0519e-047e-1173-a2a2-eaea0594271a unknown.pngPNG  IHDR00W pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-gAMA|Q cHRMz%u0`:o_FIDATx̚ˏW[==q)H@Y  b/ ؁ر"A`"@" b GbxtW=,֭tAIIWTWwsGT:~{uWAAPnu=>E)R gcc^ȉ#.e,17M m쌏кO҉\?y;Xw?Y939U9={١߃"x l^b_ϻ +KzΔ0ehuYZ[?'s~H|aRmwY3-^X-HQT=* x3@60+{ùudE7YS*Qh䭯~UP^ȵ@}9V^_䱋;6| 3xhQPxO^QNyFj l/}~81#:ҩn&F^QQsqFjB"`go.|gV8YiT fFPj½<^),+GczV,j^|K81څW|%O\/"ԏ*^=q5DNHp^zKg'ڢKU Oxnt6E1QSd +`d҉$q?{މoԄR񊊔T 6wvy{ VXkHy%г s"VMlnl4N*"Jsڥj"pGjr&)?sEv_AJMyk㠆 /3cc6tl*'y^Cf@n\G;2\"E+ol|';;x&T"9RҸPigbig^x>g.ZHBhūa)nݺ{XYW8{$]eCw{?'ɳ1T^o|}{-kX\(}>g6NENJ!qs/35aZC,/ .ydm_yk߾ŗ+OgnN)E'?lmךE !y8VW,/p}OrzI‘U˃ 9+f@lA+*֏3Oz, wea߽9L\m 2%44 .*0"k88~J/M1uA{-#&4<7$n-C%6NWej{\Rr)K-8c)Ș2{1[.;;*+el}e]ٹ˥W }N~G΢3zS1e,̈KyX(2]ˎN A/ A'Uū%޾+WPN\ F1:z\k35U5XpE}A7򡛔nUw6q sX8wnΜaw!ڙTﯢ[\7u@ 1`ZσUAg\Fxs8|ZI";ߒ2Zbi#%Z5PۛycG8q2Z>3mZ2h 4rZZ/CGA՝Ekͨ%{7HݙWdPhgPwT/>`8,e(e :.c)ehg+0g55ʔN5A=F#l\uħ5+J$EUk)%X,'VbXiFɲFTҚ +?GlkQt4Wp/>"ְ*MwT,3iNEP" nAhԴ4jmWөs@6DͫonfSIY rљ)̵"^1AMQö 693>ba[mwNLTH1f)C mdbng}+%mNuZ=YLZFicK'#mfjkҭ?8^t20shLBcD[RO:IsJ5.^:mT|l*PhFHN);dkuhAB z*A)rχkc%7:s #o[hb1'"g7;|_g ؇]m>ǿ| ?IENDB`8BIMFMsk 2#!&%')#*&##!"+(&#(&)(("#    (.)! %& #!$     (%,$() #!&#$()#""!"+'$,)1..*)"#  !# ('!!(!*'&#'(&&%!  #!&#$()#""!"+'$)0)1./.0+/-+-.&' #!&#$()###!(+('&**+&(&*$)''+*"#!#!&#$(("!! !$.%)'.!(,#!+($+ !$("! !&$ '%(&!!# ')()#+("!($"#"#*!'%&(%#($'$(&#" #!&#()%+())&&+"($&&'#*&&&*"#   &''()**+))++*+*+****')+&)(*')*!#  #!'('',*!)#""!#+$*(%++ )'("#  #!!++%!(%%&&$+'&& ()'('*  #$!+,%!(%%&&$+'&& ()'('*  #! #"+,&$!(%%&&$+'&& ()'('*  #"! +,'!(%%&&$+'&& ()'('*  #" "!+,(!(%%&&$+'&& ()'('*  #!%& +,$!(%%&&$+'&& ()'('*  ##&''+,))!(%%&&$+'&& ()'('*  #%%&(),)!)#""!#+$*(%++ )'("#  #!"!+&! !)#""!"+'$-$!**)$*&(*)#!(**+,*"!)#""!"+'$-$!**)$*&(*)#"(**+,,!)#""!"+'$-$!**)$*&(*)#!#$#+'&!)#""!"+'$-$!**)$*&(*) '%*)*(-& )#""""+)(#"*%!')'#!#  &&%(0../*01(1',(+%1',)(.+0"($#  $&!#&**))*$&'&(+*+*(%%# !###(***)&!%'/,&/.%-0/(/*(%"(%***)&$  #"!%&$"*+%'+'*#(&$(#$"'&     !'$.!'$(  #,   &$"$#,  #"!%&$)*&*'*"'*/().(%#   !#))&%)#&)&&'''##!%  #"!%&$)*&*'*"'",-()/,,,)-.1-&'  #"!%&$)*'+'+$(#"%)! )&&&#(+/)"#! #"!%&$))%) $!%$&(, !*!&$-&%! !*)))&!%"'## !% ( (%&+,)!)*')&)&)*' "("#%*$!&%!  #"!%&'&*+%),')+*'%&#*$&'*"'&    &''()**+(*+*++**++**&)($*+'')*+(  #!'('',*)*&***'!**("'*$$"'&   #!!"++%))$&+&)+$(### ( # %)   #$!"+,%))$&+&)+$(### ( # %)   #! #&+,&$))$&+&)+$(### ( # %)   #"!$+,'))$&+&)+$(### ( # %)   #" "%+,())$&+&)+$(### ( # %)   #!%&#+,$))$&+&)+$(### ( # %)   ##&'*+,))))$&+&)+$(### ( # %)   #%%&(),))*&***'!**("'*$$"'&   #!"%+&" )*&*'*"',*$'% ,,/*# "#!(**+,*")*&*'*"',*$'% ,,/*# "#"(**+,-)*&*'*"',*$'% ,,/*# "#!#$'+'&)*&*'*"',*$'% ,,/*# $ %%*$%+,) )*&+!'*$(&#)%&#!&&#  "%&-*00*.0/('(*0&-.*#"/,!+%(!  $&!#&**))*$&'&(+*+*'!%$ !###(***)%#%)//*..%,0.+0*(%!(%*)*)&$ !""!%%%%**+#*(+&&')# (    + )'%%"$%(   %()* !""!$$$%)'+#*(+&&%)*0-%.##  ")&("))*%$('!!$$ "  !""!$$$%)'+#*(+&&%)&&)-%/'*'+''*(&' !""!$$$%)'+#*(+')(+!$#('#(# $!#(#"#$!""!$$$%)&*")'"$%.()&&+*( '   &*))'*%$!'    %(!####&/-)&*")'*$&&(!'$("% #%  !""!$$%()'+(**++(&)()$)&% %%   &'''()**+**+++++*++%"#"&)(&$"   # '('&+))'+#*(+**++"*%($  # !**$)(+'**)*)%)$( !!  ##!*+$)(+'**)*)%)$( !!  # #"*+%$)(+'**)*)%)$( !!  #!! *+&)(+'**)*)%)$( !!  #! "!*+')(+'**)*)%)$( !!  # %& *+#)(+'**)*)%)$( !!  #"&''*+())(+'**)*)%)$( !!  #$%&((+()'+#*(+**++"*%($  # "!*% )'+#*(+&&%)+ *% &"%(# # (***+)!)'+#*(+&&%)+ *% &"%(# #!(***++)'+#*(+&&%)+ *% &"%(# # #$#*&%)'+#*(+&&%)+ *% &"%(#  %'%'&$('.+)'+#*(+&%')!##!"  "",$(/)*/011.*1/0(00,+-1+&*)$$   $&!#&**))*#&'&(+*+*("%% !##%****)%&&)/0),-#.-,&1,)&#(&***)&$                                                                                                    ˺ƹ Ų ĿþĿŽ ļŽ˳~z½ʛywþɛ{yĿɭſƿÄuomƽºpn¼mkþplr¾zrr ®~{z¨}z àŸ ÿ߲ۗͿ񈌍p¾ًyp  u  t~ޑs }r~r~p~~o~o ~n~m}l~}l~}j~|i~{i~{h~{h~{g}~~~~~~~~zf~~~}}~}~}~zf}}|}|}}|}{f}|}|}|}||}}|}ze||{|{|{|{|{|{{yeykjklmnopqxzel{ozرjy 񊏐¾ُ   ~x ~p~~~~}~}{z{~txvuvxw tssts qqpqqx llnn|} deikz ]`dov ~Y[_| ~VW]s ~UTy}~TT~t~Tjy~~y{|}Syw}xzr~`qy|{tzr}ȗwn{vr}oityz{zpyl|{htqrtyztkjjklmnopqxml}qwy{omj ˺ƹ Ų ĿþĿŽ ļŽŽ½ƿþĿſƿƽº¼þ¾ ¿¿ àŸvv vvvvBAA@?>==<;:9v vUeedcbaa`_^]]\[Gv vQb}{a`__^]\[[ZYYX DvvM_y}x]\[[ZZYYXWWVSKHH,vvI\[v}uYXXWWVUTKC:6 vvFXt}srUTSNC86vvBU}qp}QG=6vv?RQnjb86vv;ONNI=6vv7LG=6vv0<6vv6vv6vv6vv6vvvvvvͿ˺ƹŲ ||| Ŀþy yyyy Ŀv vvߐܐvv rs ssϣsss ppΡppp p ppދދppr½ooooooþoĿoprſƿƽǗzyvvwyz}~¼þœ|z {|} ¿¿Ð àŸÿ߲ۗͿ˺ƹ Ų ĿþĿŽ ļŽŽ½ƿþĿſƿƽº¼þ¾ ¿¿ àŸ 򜜝򶧭񢣤񴧭 響̯zﱧ!eεԭ~NlxƦý$됡\뫦Ŭ߯骦蝽=ym˓試rOKԔ姦ƦЁz}~䥦Ƨilpx}oim}⤥i ckafih{ou{ࣥc:u«yf[Y]d{ut`_ޢba[H9@ETn_STofglpmܡ\;;9<;?HO\Viha^qvlW}۠YGFBqhILQXQr~e~^ؠͿ˺ƹ Ų ĿþĿŽ ļŽŽ½ƿþĿſƿƽº¼þ¾pu ¿p~¿px pàpxŸ p{ppp šÿpx¥pvv p{~|p{vwp{vp{vp{|~p{u}~uutrpztu|zxzww~xsw uttəwzqv”wps{zr{xuz uy~ysxsu{˺ƹ Ų ĿþĿŽ ļŽŽ½ƿþĿſƿƽº¼þ¾ ¿¿=VV= >*)=}~}~}~}~=));>;)':~:'!k!&Ϳ˺ƹŲ ||| Ŀþyyy Ŀvvvvv sߎssss rpppp pppp½oooorþoĿosſrsrqƿƽº¼þ¾ ¿ ¼ àŸ   ÿ ߲ۗͿ˺ƹŲ  إĿþ Ŀ Ջ Ҋҋ½ЋþϋĿȋſƿĻƽʺͼ; ɾ ſ¿ ¿     ÿӿ   ӽƾѼӾ  ۗͿ˺ƹ Ų ĿþĿŽ ļŽŽ½ƿþĿſƿƽº{wrqnu¼~yzvtmnþ~zzl ¾r ¿|¿~ Æ »àŸ   ÿ  ߲ۗͿ˺ƹŲ Ŀþ Ŀ  ½~~ ~~~~~~~~fþ}hxĿ}mſod{oxqqrpƿ|xi{|tqqhqƽuoltrsh{ 㺙x|rppe ¿آwvpnjm!լ}ZZeese!ѳssx'Êu}ѷyw̹ϼv'‚Ĵʺtà!ȹŷsŸ!r!y!z}  {ÿsv{ }w xl}{|~wl~|zyvv|} tq|{yyz}kvmq} ylm{nojjlo| ߲ۗͿ˺ƹ}~}~}~~}~}~}~ }Ų{ Ļwxwxwxwxw þtߏtttߏt Ŀrrrrrrrr onnoo oono nonnooonnoދon(mmllmmmmmllmlmlm½j݇j݇jjþijijĿ~hghmſƿƽºv¼øj™zž ~ij±tt{q‘q ÷qu¨|qàq |qŸ|qvqqvqqqvq'q|vqÿ߲ۗͿ˺ƹ Ų  Ŀþぁ Ŀ ~~ |||| {{z{z{{z{z{z{{{z{z{{zz{z{z{½xyxxxxþwwxĿvuvzſƿ{uy~|uromkkmqƽºos¼nnþi kń¾n o~{zx'Ä¿zy| „à„Ÿ  ÿ ߲ۗͿ˺ƹ Ų  Ŀþ Ŀ~ |||| {{z{z{{zz{z{z{{{z{z{zz{z{z{½xyxxxyyxxþwxwxĿvuvzſƿ{uy~|uromkkmqƽºos¼nnþi kń¾n o~{zx'Ä¿zy| „à„Ÿ  ÿ ߲ۗͿ˺ƹ Ų  Ŀþ Ŀ~~ ||||| {{z{ z{z{{{{z{z{{{z{ z{{{z{z{½xyxxyxxþwxxwwxĿvuvzſƿ{uy~|uromkkmqƽºos¼nnþi kń¾n o~{zx'Ä¿zy| „à„Ÿ  ÿ ߲ۗͿ˺ƹ Ų  Ŀþ Ŀ ~ ||||| {{z{ z{z{{{zz{z{z{{{z{ z{z{zz{z{z{½xyxxxþwxwxĿvuvzſƿ{uy~|uromkkmqƽºos¼nnþi kń¾n o~{zx'Ä¿zy| „à„Ÿ  ÿ ߲ۗͿ˺ƹ Ų  Ŀþ Ŀ~~ ||||| {{z{z {{z{{z{z{{{z{z {{{z{{z{z{½xyxxxyxxxþwxwxĿvuvzſƿ{uy~|uromkkmqƽºos¼nnþi kń¾n o~{zx'Ä¿zy| „à„Ÿ  ÿ ߲ۗͿ˺ƹ Ų  Ŀþ Ŀ~~ |||| {{z!{zz{z{{{z{z{zz{z{{{z"{zzz{{{z{z{zz{z{½xy~xyxþwxwxĿvuvzſƿ{uy~|uromkkmqƽºos¼nnþi kń¾n o~{zx'Ä¿zy| „à„Ÿ  ÿ ߲ۗͿ˺ƹ Ų  Ŀþ撽 Ŀ~̼ ||ܻ||| {{z!z|zzz{z{{{z"䄸zzz{z{½xyxz{xyyxþwwwxyxwwxĿvwvzſƿ{uy~|uromkkmqƽºos¼nnþi kń¾n o~{zx'Ä¿zy| „à„Ÿ  ÿ ߲ۗͿ˺ƹ}~}~}~~}~}~}~ }Ų{{ Ļwxwxwxwxxxw þttttt Ŀrrύrrr onnooooononoo nonnooooononoonmmllߟmmmmlllmlm½jއjjjjkjjjþijijĿ~hghmſƿƽºv¼øj™zž ~ij±tt{q‘q ÷qu¨|qàq |qŸ|qvqqvqqqvq'q|vqÿ߲ۗͿ˺ƹ Ų  Ŀþ Ŀ 񘘗   𕔕𧒒½þĿſƿƽº¼þ¾ ¿¿ àŸ șə ٔș Ǚߴ ƙݴřߴÙÙߵݷ ޷˿ ݸʾݸɼܹȻܹǺϔϔǹŷͿ˺ƹ Ų  Ŀþ蚭 Ŀꘘ笘瘗񘐽𩕕敕'𕕔𩕕攕𔔩攕(擧𒒓撧½ þĿſƿƽº¼þ¾ ¿¿ àŸ șə ٔș Ǚߴ ƙݴřߴÙÙߵݷ ޷˿ ݸʾݸɼܹȻܹǺϔϔǹŷͿ˺ƹ Ų  Ŀþ Ŀ瘘߬񘐽𩕕𩕕𩕐 敕𔕔𔔩𔕐(擒𒒓𧒒½þĿſƿƽº¼þ¾ ¿¿ àŸ șə ٔș Ǚߴ ƙݴřߴÙÙߵݷ ޷˿ ݸʾݸɼܹȻܹǺϔϔǹŷͿ˺ƹ Ų  Ŀþ 蚭 Ŀ笘  𔕔撓½ 𑒒þĿſƿƽº¼þ¾ ¿¿ àŸ șə ٔș Ǚߴ ƙݴřߴÙÙߵݷ ޷˿ ݸʾݸɼܹȻܹǺϔϔǹŷͿ˺ƹŲإĿþ Ŀ Ջ Ҋҋ½ЋþϋĿȋſƿƽº¼ļ  ³  àŸ Կÿҿѿ ˼˼ ƽ ߲ۗͿü̽Ҽü̷̽ůªҼ§ü̷ħ̽ůũªܭڽ!Ҽ§!̷ħϬ#ůũ־%ªƭڶ§ӳ ħШũֿ˹ƭڷdz¤ ˷ ̾˹÷ƺý ˹ֿվ ս ս ֿӾվҽսѽսн ֿ ӾнվҽϽ սѽ׾սн ӾнҽϽѽ׾ннϽ׾ .#8#8#$#8#"#! #8#"_F!# !?csuhH# #8#UY%"#$hx$#8# !W#$,)#8#z(#,!8#5Y#!f8#""#hnRh6#$T=#!03# "#11##$DD1#{)#!$#,P0#6d#"%\8#1H0#"!"#$#P63#UF!!##5## }и0#$J9##|.?#$3:8#6p!#>#>#8"!)># [!#8UP$3>#$###8###D>#$'#8 z+P 6 ##$3n#8 ;H>} _DJ+!#.F"#8 j (#8 vu$#8 v%#$#8 k Wb #81PNDdJL)bDJL;!8d6!)4#j>#! .4#j># %,4#j>#(,4#n>#!#˘"6# :})!##"  !8#$"#"!"!"#8#8#8#8#4+96J=7c0/Q.CM(5n!V-oHlءb$ T2u4:3 \FU" / u C{ (*:\ Uc 6l1Il3}> LHae$b^!R4jn ,v'#BTM%[y!Z=Qi JB&``?c| M :"@ɇ Rz֦Jt:)D2S^__]Vݷaf`__\L$o&MV/J?4 $A%84w4t(y{|uH"^mk*+c|{z~z8eCa$u~2 l*p‡}~X"u 4i8c?m6'j/Q2s,sľ0,<),+, . g`|.&$(-,+)t$O)@qH#^C=\O/~_n\>`O iś#ڭ=g {!+e L 4 90 ^ 4dZ  OPkJN* X/AH"YAC& oM_):X PNoQ )$8&`W G{--m`.9Qx>p$h.+C9QRa#_Up<:?H Jpa.n%9"YS mXCaH9 PQT;+#o%y(6&|' :T    μͻͻн湣Ȥ$氣ž%⣣ɰϣś ӽ ɗĮ ͜ϳǟ׵͢ߧţ  ⴣ߷߷ ߷߷߷߷۷Ϳ櫞ıϲؽ հ׼¦ ջӸ޻к˷ȶ޳²ުعލ ıϲ̽ հ̼ ˻˸˴ ȣÿ; ǜĽν ƖŹ Œλ Ŋƶ Ă̹ }ȱ {{ù yxƭxwxwΆڽލ     μͻͻϽпý  ɰź Ǽ ½Į ϳ׵  HGGFEDCCBA@?\nmmllkkjihhggffeddccNXkihhgffeeddcbaa`JTgeddcbbaa`__^ZROO1Pdca``__^]\RJ@<"L`\[UI><"H]XNC<" EZYXX}yo><" AVUUPC<"߷=SNC<"߷5B<" "<" ߷"<"߷"<"߷"<"߷"Ϳ 󴢢 򟟱江 񜜯ݾ ͻݽ ͻ 񚚭筚񬙙п  ɰاź Ǽ 峲 Į ϳ׵ ⫫⫬ ⩨ᢢ߷߷ ߷߷߷߷۷Ϳ    μͻͻϽпý  ɰź Ǽ ½Į ϳ׵   ĿŪ ɶ˵f̛ڿԵKi~ѵɭս멱Z߲ͺ>ym̝pNIӢ ҭύ߷ťņ{߷ ahv }5¯vXiޢ ߷zoUFDA\gbtܡ߷xHA5HR>EJ`gzۡ߷pPMBJHMUk٠߷Ϳ    μͻͻϽпý  ɰź Ǽ ½Į ϳ׵⪹Ӷ Ϊ ͭйDZDzѬ˰ѨƲ ѬѬͪѬƺϸЬ־ͿЬڹϬڨ߷箨άݦ߷Ǭ˪ê߯´ ߷Ц߷»֫߷­߷µǥ 񨳾Ϋ    μͻͻϽпý  ɰź Ǽ ½Į ϳ׵EiiE DhXVWXhDCffCAeeA@cc@?b b?>``>=^^ =<\\] ]\\<:Z Z:9X X98WZW 87UU76RR64PP4߷2MNNNNM2߷1KLLLK1/II/ ߷.H H.߷,EE,߷+BCB BCB+߷*ADA*)??)""'Ϳ    韟 μ诜 ͻϽý& ɰ嵵ź Ǽ ½Į ϳ ׵  㮮 ࢡ߷߷ ߷߷߷߷۷Ϳwvwvwv wvwwsss nonoonnonnonnoonnnn onnjkjjjjj gfg ggfggfggghgμbbbbcbbcb ͻbbbbcbbcb ͻ_^__^^____^_^_^Ͻ\]]\[]\]\]\\\]\\п[YZYZ[Z[[Z[Z[[ZqYYXYXYXYiý  loɰy~~ź}Ǽ {½Į xyϳwzԵ w Ե wyصwwٵxvԱwײwwٲ |vٳ xw޵x߁v߷yͫ~vzyۮwvvwyxvxz wvw} vw}~{{vyҧ}ߝyw{z|߷߷v}x߷vyw yvx ߷ vy߷}߷߷۷Ϳ    μͻͻϽпý 揗ܑ 搝⑎ɯ⏎ث⏎ڢ&咜Ꮞۣļ½Į䐗 ɱϳ%䑐㛖ޫά׵⏏䭭ذ    ߷߷ ߷߷߷߷۷Ϳ   μ˽˽ ͻ ͻ Ͻ $'­ פϴ'䰼¾㻪!ڪզ|~Į"©ȶϳ'䮵̷׵!ÿ˾ÿ'⦷ź¿'㣷ǽ!ýϤ ☱ ѐ'ᾐݼ ı߷ҿ߷'ǿ߷߷߷߷۷Ϳ}~}~}~~}~}~}~ }{ wxwxwxwxw tߏtttߏt rrrrrrrr Ļonnoo oono nõonnooonnoދonĮ(mmllmmmmmllmlmlmŬj݇j݇jjǰijijɴ~hghpʽ  ̰ظښ  ᳑½ĮᕶϳѠωՊ׵צʙ׬݌ē ܲ㾓 ⓇЍ֫Ї׫ܱ⫫ܫܫ܍⾇֥ᾙə ߷߷  ߷߷߷߷۷Ϳopopoppopopop omm ijijijiji ffff d cddddddcd μa``aa``a `ͻ__^_^__~^_^_^_ͻ__^_^__^^_^_^_Ͻ\]\\\{\п[{[\rZYZdý  ֪ź Ǽ  ½ ĮɕϝϳΗ׵   ߣ ߷ҩҪߪ߷ҩ ߷߷߷߷۷Ϳopopoppopopop omm ijijijijji fff dcddddd μa``aa`a`a `ͻ__^_^__^^_^_^_ͻ__^_^ _^^_^_^_Ͻ\]\\\]]\\п[\[\rZYZdý  ֪ź Ǽ  ½ ĮɕϝϳΗ׵   ߣ ߷ҩҪߪ߷ҩ ߷߷߷߷۷Ϳopopoppopopop om ijijijiji ffgff dcddcd μa``aaa`a `ͻ__^_ ^_^____^_^_ͻ__^_ ^___^_^_Ͻ\]\\]\\п[\\[[\rZYZdý  ֪ź Ǽ  ½ ĮɕϝϳΗ׵   ߣ ߷ҩҪߪ߷ҩ ߷߷߷߷۷Ϳopopoppopopop omm ijijijiiji ff܄f d cۂdۂdd μa``aaaaa`a `ͻ__^_ ^_^___^^_^_^_ͻ__^_ ^_^_~^^_^_^_Ͻ\]\\|{\п[\[\rZYZdý  ֪ź Ǽ  ½ ĮɕϝϳΗ׵   ߣ ߷ҩҪߪ߷ҩ ߷߷߷߷۷Ϳopopoppopopop omm ijijijiiji ff܃f dcۂdddcd μa``aa`a``a `ͻ__^_^ ~__^__^_^_ͻ__^_^ _}__^__^_^_Ͻ\]\\\]\\\п[\[\rZYZdý  ֪ź Ǽ  ½ ĮɕϝϳΗ׵   ߣ ߷ҩҪߪ߷ҩ ߷߷߷߷۷Ϳopopoppopopop om ijijijiji fmmfffgfff ddcddddcddd μa``aaa`a `ͻ__^!_^^_^___^_^_^^_^_ͻ__^"_^^^___^_^_^^_^_Ͻ\]ed\]\п[\[\rZYZdý  ֪ź Ǽ  ½ ĮɕϝϳΗ׵   ߣ ߷ҩҪߪ߷ҩ ߷߷߷߷۷Ϳopopoppopopop omm ijijmjiji fzfzf dcpddd μa``aavaլdy`vaa `ͻ__^!^ɴav^^ʴ^_^_ͻ__^"j^t^j^_^_Ͻ\]r\^_\r]]\п[q[[\]\[q[\rZ[Zdý  ֪ź Ǽ  ½ ĮɕϝϳΗ׵   ߣ ߷ҩҪߪ߷ҩ ߷߷߷߷۷Ϳ}~}~}~~}~}~}~ }{{ wxwxwxwxxxw ttttt rrύrrr Ļonnooooononoo nõonnooooononoonĮmmllߟmmmmlllmlmŬjއjjjjkjjjǰijijɴ~hghpʽ  ̰ظښ  ᳑½ĮᕶϳѠωՊ׵צʙ׬݌ē ܲ㾓 ⓇЍ֫Ї׫ܱ⫫ܫܫ܍⾇֥ᾙə ߷߷  ߷߷߷߷۷Ϳpqpqpqqpqpqpq pnn jkjkjkjkj gggg d cdddddcd μa``a a`a``a `ͻ__^_ }_^__^__^_^_ͻ\]{{\\\{\Ͻ[\[[\пqYXYYcqYXYcý  ɰź Ǽ ½Į ϳ׵ ߌlߋ wj~z~}|{y~~ji~j~j~ih||LQ T||hgUc[uuge~Uss cssfe}}Ujrqec||Uno bppca{yUmooa `xxW{{jll`߷ ^xxW{||}lkk_߷ ^wvXggilliaji^ \uuXxyyzӃ{ nhh\ ߷[ssXqŕr iggZ߷ZrqXllffeZ߷YqjqqjfY߷XlkjihhgfedaWWmkmjihhgfedcac``W UVWVUVVUWVVUVUWUWVUVVUͿpqpqpqqpqpqpq pn jjkjkjkjkj gggggg gdddddcdۂddcddμa`aa`a``aaa`ͻ'__^__^_~__^_^^}^_ͻ(\\\]{\\\]|{\{\{\Ͻ [[{{\[[[\п\YXYYXqYXYcý  ɰź Ǽ ½Į ϳ׵ ߌlߋ wj~z~}|{y~~ji~j~j~ih||LQ T||hgUc[uuge~Uss cssfe}}Ujrqec||Uno bppca{yUmooa `xxW{{jll`߷ ^xxW{||}lkk_߷ ^wvXggilliaji^ \uuXxyyzӃ{ nhh\ ߷[ssXqŕr iggZ߷ZrqXllffeZ߷YqjqqjfY߷XlkjihhgfedaWWmkmjihhgfedcac``W UVWVUVVUWVVUVUWUWVUVVUͿpqpqpqqpqpqpq pnn jjkjkjkjjkj gggggggg gdddddcd΂ddddμa`aa`a`aa`ͻ __^__^__^_^^^}^_ͻ(\\\]\\\\]\\\\{\\Ͻ[[{{\[[[[[\пqYXYcqYXYcý  ɰź Ǽ ½Į ϳ׵ ߌlߋ wj~z~}|{y~~ji~j~j~ih||LQ T||hgUc[uuge~Uss cssfe}}Ujrqec||Uno bppca{yUmooa `xxW{{jll`߷ ^xxW{||}lkk_߷ ^wvXggilliaji^ \uuXxyyzӃ{ nhh\ ߷[ssXqŕr iggZ߷ZrqXllffeZ߷YqjqqjfY߷XlkjihhgfedaWWmkmjihhgfedcac``W UVWVUVVUWVVUVUWUWVUVVUͿpqpqpqqpqpqpq pn jkjkjkjkj g ggghgg dۂddcd μa``aa`a `ͻ__^_^_^___^_^_ͻ\]\\\]\\Ͻ[ [\\{[[[\пqYXYcqYXYcý  ɰź Ǽ ½Į ϳ׵ ߌlߋ wj~z~}|{y~~ji~j~j~ih||LQ T||hgUc[uuge~Uss cssfe}}Ujrqec||Uno bppca{yUmooa `xxW{{jll`߷ ^xxW{||}lkk_߷ ^wvXggilliaji^ \uuXxyyzӃ{ nhh\ ߷[ssXqŕr iggZ߷ZrqXllffeZ߷YqjqqjfY߷XlkjihhgfedaWWmkmjihhgfedcac``W UVWVUVVUWVVUVU WUWVUVVUͿvwvwv wvwwss onoonnonnonnoonnnonnjjjjjj fggghgfggfggfgghgμbbbbcbb ͻbbbbcbb ͻ_^___^_^_^_^_^Ͻ]\[]\\\]\\\]\\п[YZY[Z[Z[[Z[Z[[ZYXYXYXYiý  ɰ͝ukkj ɀpligg |tpmmlkĮ րwvsrpozϳywtru׵yz{ ށywxxxwwxvvwxvxyuuvwuv tuututuutv}svwxrurtߓsrsrٙrv{rsqqr rq߷ ssr ߷srw sr ߷߷߷߷۷Ϳ  սԺֻؽ սԺ!ֻ罹!ؽ֪ս&Ժ׵ֻ軽ؽװ͵ ض ̻Ҿɻ           *55  55^D =bqsgF 5TW" gv 5V )&5y%)52We5gmQg4 R:-0// AB/{& )N-4c"Z5/F- N40TD2 {и- H5z*= 0854n <<5&<Z5TN 0<  5 B< $5y( N 4 0m59F<} ]AH(*D5h%5us 5u" 5jV`5/NLBcHJ&`AHJ95 c4&1h<*1h<")1h<%)1m< ˘4 8|&5 55551(54H<7f (C(E7t(5nW-Q2nءb$ S2u4f(4 d\ 3<" |g/ U `0{ ^ol%,B = c ' ri$6l3s[>7Hasc$bBR%jQn ,Wĭ#rrB=M[y??;sL ~6zo/EjF› @c[r 8_  )r.ʊ <{֦L{UD: jǞ#y*g{`o-f 74 9" E $IA : t8kJo9yc)`o ?}/-K[.CnMDp*:Až ;NvQ: )ys$8u®%`?Gz-!PE({ )QWq-āp$hwbC9Q ;Gy #`>R <;.3fd v4p`.gĺOdn%9"Y; NXCb2("99U;+#o$W7'|' :U  ֿ   $ϴ%ڽ޻׫൭ 㹶༸  Ŀ Ϳ                         ' "||||||HGGFEEDCBA@ ?||\nnmlkjiihg feedccM| |Xk!jiihggfedcbba`J| |Tgh!geedcb a``_^[SPP1||Pece!da`_^^\SKA="||L`c!ba]\\VJ?="||H^!``!YOD="||DZY\XP?="||@WVVPD="||25(PbeG!kĥky9#>WĢ0Dk?ޢ#*3,>NEP>ܡ#47=,!CR[T7۠2<=A !FU]d)' "!"##!!ٟͿ       % !=`1 a);E99) 6J-l 56E>3#b90 "Fl; .5:@t= ,&%48:C`R*/I088N8(/Ɂ.5*A)&/Ъ,<#/C`!/BIU.$M9xF.$X%:#-&.3BO#BD0(FG"!D8 ,&Y2DC +9 zCDD> ڎs  3 w: .P  ]{#*q        & FjjFDiSPQPQPRiDChhCCffCAedeedeA@c c@>aa>=__=<\]]]\<:ZZ:9XX98W[W87UU7 6SS65QQ53NONNON31LL1/JJ/ .HH.-EE- +DCCCD+*ADA*(??(!!(Ϳ  ߴ & !ihgfefg>T7Ϳjh&' &''&'&''&'&'&'& '&''$$$             ! .   ,  IG &YDNKOozKQ` WGO !kBE @E@O @DA@D@i TUaA AA]_Iy@CrOAlDR@SEeכN@FPifD]B@@BEC@DosGU BUYAALv TABMUNIH@Dd ^MVEBHHKU@LnD@ECF@Dg @WEdOTͿ   $*,,+()(+$*//.+*)*- $8 +)'G)% %,G$%,F$$,E$$ +B '8%*'=EEBBA9 &'('$ $%S+&20&%&5  ' +)   Ib`^`H-+ ͿEE EEDDDD     $sоZG@FZͰ'U?Jq`Մ ^?;;TGû{!@=89VF8FEMewu'I?:8N>kڔ98R8H_wBIDiP4@ABP~'Ve05:=AEe[.26:=@BK!t{/36:>ABB248ABD䄯gBBQ CBl CA cBQMA?ob  Ϳ}~}~}~~}~}~}~ }{wxwxwxwxwtߏtttߏtrrrrrrrronnoo oono nonnooonnoދonmmllmmmmmllmlmlmj݇j݇jjiji j~hgh s  'ѦﱷǦ "럨캛߮ڧ"ƛӭӧ 桛  ƛӛӮ߮Ϳ ぁ ~~|||| {{z{z{{z{z{z{{{z{z{{zz{z{z{xyxxxxww xvuv  ʯ'ȿȯ˨ʨ̣ɦתӪ嵴 Ϳ ~|||| {{z{z{{zz{z{z{{{z{z{zz{z{z{xyxxxyyxxwxw xvuv  ʯ'ȿȯ˨ʨ̣ɦתӪ嵴 Ϳ ~~||||| {{z{ z{z{{{{z{z{{{z{ z{{{z{z{xyxxyxxwxxww xvuv  ʯ'ȿȯ˨ʨ̣ɦתӪ嵴 Ϳ  ~||||| {{z{ z{z{{{zz{z{z{{{z{ z{z{zz{z{z{xyxxxwxw xvuv  ʯ'ȿȯ˨ʨ̣ɦתӪ嵴 Ϳ ~~||||| {{z{z {{z{{z{z{{{z{z {{{z{{z{z{xyxxxyxxxwxw xvuv  ʯ'ȿȯ˨ʨ̣ɦתӪ嵴 Ϳ ~~|||| {{z{zz{z{{{z{z{zz{z{{{z{zzz{{{z{z{zz{z{xy~xyxwxw xvuv  ʯ'ȿȯ˨ʨ̣ɦתӪ嵴 Ϳ 撽~̼||ܻ||| {{zz|zzz{z{{{z䄸zzz{z{xyxz{xyyxwwwxyxww xvwv  ʯ'ȿȯ˨ʨ̣ɦתӪ嵴 Ϳ}~}~}~~}~}~}~ }{{wxwxwxwxxxwtttttrrύrrronnooooononoo nonnooooononoonmmllߟmmmmlllmlmjއjjjjkjjjiji j~hgh s  'ѦﱷǦ "럨캛߮ڧ"ƛӭӧ 桛  ƛӛӮ߮Ϳ        ' "b6aaX=aX`4C@FHFDCBA@ ?FCC44CQCQC42BBJ#$JBB41DDI%/)I==20CCI%;;/I;;00BBI%FF4I:://AAJ%88/J99/.@@I%FF6I88.->>H&AA5H66-,>>H&AA5H66- +>>H&1148ϼ84.H55+)==G&>@KLA 7G44)(;;G&:QQ:4G22((::F&6^^61F11(':Q:X:Q1''654210/'&:6:5544210/.2..&%&%%&%%&%&%&&%Ϳ 摦菏奏収 䌌䊋䊋䉟㈟    ' "b6aaX=aX`4C@FHFDCBA@ ?FCC44CQCQC42BBJ#$JBB41DDI%/)I==20CCI%;;/I;;00BBI%FF4I:://AAJ%88/J99/.@@I%FF6I88.->>H&AA5H66-,>>H&AA5H66- +>>H&1148ϼ84.H55+)==G&>@KLA 7G44)(;;G&:QQ:4G22((::F&6^^61F11(':Q:X:Q1''654210/'&:6:5544210/.2..&%&%%&%%&%&%&&%Ϳ 叏ܥ줏  䋋䉈    ' "b6aaX=aX`4C@FHFDCBA@ ?FCC44CQCQC42BBJ#$JBB41DDI%/)I==20CCI%;;/I;;00BBI%FF4I:://AAJ%88/J99/.@@I%FF6I88.->>H&AA5H66-,>>H&AA5H66- +>>H&1148ϼ84.H55+)==G&>@KLA 7G44)(;;G&:QQ:4G22((::F&6^^61F11(':Q:X:Q1''654210/'&:6:5544210/.2..&%&%%&%%&%&%&&%Ϳ  摦奏 ㈉     ' "b6aaX=aX`4C@FHFDCBA@ ?FCC44CQCQC42BBJ#$JBB41DDI%/)I==20CCI%;;/I;;00BBI%FF4I:://AAJ%88/J99/.@@I%FF6I88.->>H&AA5H66-,>>H&AA5H66- +>>H&1148ϼ84.H55+)==G&>@KLA 7G44)(;;G&:QQ:4G22((::F&6^^61F11(':Q:X:Q1''654210/'&:6:5544210/.2..&%&%%&%%&%&%&&%Ϳh&' &''&'&''&'&'&'& '&''$$             "    ,  'έ\RTUXGJMNNI@ACFHJ"N@?@@ADSh@@??D@CO@A@??@yZ?@?@BDx?AA?A?AQ?DEF?E?Bv?>?FN>?>?>x??>w?>E>?`Ϳ (    "  !   , 6 6 ! ! 6   6 _F >dsthH! 6 UY# !hx! 6 X !+' 6 z& +6 4Y f6  hnRh5 !T< /1  00 !BD0 |' ! +O/ 5d #[6 0G/  ! O51 UF  4  |ѹ/ !I6 {,> !196 5p!= = 6'= [ 6UO!1= !! 6! D= !& 6z) O 5 !1n 6:H=~ _BI) ,F 6i& 6vt! 6v# ! 6kXb 60ONDdIL'bBIL:6 d5'2 i= ,2 i= #+2 i= &+2 n= !̙5 9}' 6 !  6 6 6 6 2)65I<7i-H ,5n ^0 tءb$ S2u;:  \  $/   {  #c  f l3>Ha_$j  Rj ,#BM  [x  E  !"    Cc     ʏ }֦NB!D   V sM[- ;2 t!  ^r  @l -) )pŏc s8cJ/ Z%  ,sŤ   / ge  '" ("w ^D `=  iɤ# k 2i    6 ;     kJ* 0   P"` C  oM );N  *#$8&`G{,~ !" Qpj  C9Q #e<:   p`. *9"Y # XCh& Z;+#n%>+|' :YrG"  !*2@AABCE@2%`*    'e܂$ $99:;;=9=;;:99$%`**iik| $ZMeQ0 $99:;;=9 =;;:99$&rG"  *@22@AABCE@2rG"  !*2@AABCE@2rG"  *@22@AABCE@2rG"  B3*'H@^J@2JrG"  *@22@AABCE@2rG"  !*2@AABCE@2rG"  !*2@AABCE@2rG"  !*2@AABCE@2rG"  !*2@AABCE@2rG"  !*2@AABCE@2rG"  !*2@AABCE@2rG"  !*2@AABCE@2rG"  !*2@AABCE@2rG"  !*2@AABCE@2rG"  !*2@AABCE@2rG"  !*2@AABCE@2rG"  !*2@AABCE@2rG"  !*2@AABCE@2rG"  88*@22@AABCE@2rG"  88*@22@AABCE@2rG"  88*@22@AABCE@2rG"  88*p@22@AABCE@2rG"  !*2@AABCE@29$"Cri,6FkG41uX`/v`'[Z1@y;/Xxj}{0U\[&TW8[I, k1!QR#V#3Q&3{ R!^!!M9FfA:!s2ި plugins/file-manager-advanced/application/library/img/src/icons-big.pxm000064400000424246147176754550022272 0ustar00PXMT_DOCHEADER0F@N%1METADATAg3 streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+ _IMAGE_ZOOM_NSNumberNSValue*f_MASKS_VISIBLE_RECT_{{0, 0}, {0, 0}}_DOCUMENT_SLICES_NSMutableArrayNSArray _PX_VERSION_ 1.6.5_DOCUMENT_WINDOW_RECT_{{695, 4}, {200, 874}} _PRINT_INFO_ NSMutableDataNSData}[381c] streamtyped@ NSPrintInfoNSObjectNSMutableDictionary NSDictionaryiNSString+NSHorizontallyCenteredNSNumberNSValue*c NSRightMarginfH NSLeftMarginHNSHorizonalPaginationNSVerticalPaginationNSVerticallyCentered NSTopMarginZNSBottomMarginZ_LAYERS_VISIBLE_RECT_{{0, 0}, {239, 240}}_DOCUMENT_SLICES_INFO_PXSlicesPreviewEnabledKeycPXSlicesVisibleKey__OLD_METADATA_FOR_SPOTLIGHT__ colorMode layersNamesimage folder_openjszipxmlphpLayer 2Layer 1plc++shrbpycsshtmlofficepdfrtftxtvideoaudio applicationLayer 4swfrartar_bztar_gz folder_closedLayer 5unknownkeywords csProfileNamesRGB IEC61966-2.1resolutionType resolutiondH canvasSize {48, 1350}PXRulersMetadataKeyPXGuidesArrayKeyPXGuidePositionKey3PXGuideOrientationKey撄d醒撄醒撄醒撄醒撄醒撄醒撄,醒撄^醒撄醒撄醒撄醒撄&醒撄X醒撄醒撄醒撄醒撄 醒撄R醒撄醒撄醒撄醒撄醒撄L醒撄~醒撄醆PXRulersVisibleKey_MASKS_SELECTION_I[73c] streamtyped@NSMutableIndexSet NSIndexSetNSObjectI_ICC_PROFILE_NAME_ڒ_ORIGINAL_EXIF_*kCGImageDestinationLossyCompressionQualityDepth{TIFF}ResolutionUnitSoftwarePixelmator 1.6.5 CompressionDateTimeNSMutableString2011-06-29 00:43:24 +0400 XResolutionH Orientation YResolutionH PixelHeightF1{Exif}PixelXDimension0PixelYDimensionF ColorSpace{JFIF}YDensityH IsProgressiveXDensityH DensityUnit{IPTC}ProgramVersionPixelmator 1.6.5ImageOrientationKeywords؆ ProfileNameڒDPIWidthH{PNG}XPixelsPerMeter YPixelsPerMeter DPIHeightH ColorModelRGBHasAlpha PixelWidth0_DOCUMENT_LAST_SLICE_INFO_PXSliceMatteColorKeyNSColorffff transparentPXSliceFormatKeyPXSliceFormatPNG24_LAYERGROUPS_EXPANSION_STATES__STATE_B_ID_:E79DCA12-B4EE-4736-8A6A-A627325955EA-7379-00002316C56B276CgBh:3922FA03-A14E-4351-8F90-4D4F209DC60F-7379-00002316C56840C4gBh:19A73FEE-6F06-496B-9B66-0A245313ADD2-7379-00002316C565ECE7gBh:A893724F-8BC4-454E-A572-93FDDAFC24C5-7379-00002316C56334CEgBh:4D59E174-172F-49CD-B4DB-377EB6023F59-7379-00002316C56027CFgBh:08376F99-D214-4BC8-89DC-53E300E92EC7-7379-00002316C55D7573gBh:B2F945CC-6F8A-487E-AFBA-B0FD7884F14F-7379-00002316C55CB926gBh:6562DF83-49EA-4C9D-8D0B-B12C0B490733-7379-00002316C55C2533gBh:17587334-6891-4DC1-A036-A42C0CC05C44-7379-00002316C55B76EBgBh:ACA63C41-62AE-451F-BA69-B732F1BFF96A-7379-00002316C558BA74gBh:2EBCE85B-E4A7-4CB9-B899-402CA4328A32-7379-00002316C555EE1DgBh:60DC7AD0-C861-40FC-B081-42AA0BA0CB0A-7379-00002316C5530CFAgBh:E33C04F3-412A-4A76-A66D-D95AF23D97D5-7379-00002316C55048B9gBh:ED0B4412-A7A6-4C29-9A10-D44162B75FFF-7379-00002316C54D92D2gBh:E5A8CC16-4FF3-4C69-99B6-A8FB275E098C-7379-00002316C54AC95BgBh:025399F3-BC6B-4021-83FF-D387659B52E7-7379-00002316C5480746gBh:11295678-5AE8-49D6-A613-6E33D9ABFC95-7379-00002316C54520DAgBh:E63A58F9-684D-4FF4-9040-9E5DE0A697E3-7379-00002316C54281D1gBh:84295360-D2E0-4633-A5EA-07D523556162-7379-00002316C53FA9D3gBh:D5FA1E74-21AF-4747-93B2-823D14673F93-7379-00002316C53CC7A2gBh:81E977DE-E02B-4AD1-AA6A-7675B4567DD0-7379-00002316C53A1EA2gBh:54F1F62E-9C05-4B55-811C-C1898599B2AE-7379-00002316C536FA9CgBh:B05FB1FD-5F2A-44FA-B5AC-17BCA248584B-7379-00002316C534334DgBh:B49D7B18-ECA8-4770-A48E-FE64CB968BB9-7379-00002316C5317201gBh:CE265196-51BF-4C08-BA8D-06EF79150A40-7379-00002316C52C5E22gBh:785F9AA0-2E04-4E5D-A83E-CF741050C650-7379-00002316C5297D4AgBh:B0B847A9-6FD0-4740-B48D-A08479CA1F3A-7379-00002316C5269294gBh:5AF3D56F-0F22-47A2-A385-5F0264522DFA-7379-00002316C523C5C4gBh:F05830E5-724B-4560-9AB3-C00DC08A6E6A-7379-00002316C521112DgBh:DE846D34-473C-4162-8C9B-57AAE55E0EFD-7379-00002316C51EC013gBh:D178F1A1-DEC4-476D-BB2F-37B457F2FB7B-7379-00002316C51B6508_IMAGE_VISIBLE_RECT_{{-61, 0}, {169, 832}}_LAYERS_SELECTION_8[56c] streamtyped@ NSIndexSetNSObjectI GUIDES_INFO3d,^&X RL~ COLORSYNC H HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP ?.J`<_|}cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmLAYERSp%5>JXdff?giucQA5l I/ (7AN[iLv"(.0imaged':E79DCA12-B4EE-4736-8A6A-A627325955EA-7379-00002316C56B276C$xyp噇YLvj8c7lmJsk]Qb|߇XOY}4ݒuktK3htd{X$^lozVt3^gGsƉHdrFAO21Z fj .wu7ڄW:6u=9b n#[go]7e5`mP g5&0bʂ<3YiLuڃǻkh8VdL򺙱UaթzꩀMoH=\R=LgOBݹeހ?GЍHStlch/EGQ )a lZ<a.M' @_UK r?Ua>zkSђsN6UzxCߑk:|^t0*~5gVŬҿ-\xp 5i`[[{(T=LfYd82stdD5 Gw)Fפ(@=\<rwhN7m-CFOW?aG?ck8y:ޒ:"`L[҃kO`-=4PᶮacڷKF˝UdM`.q=eT'53s=hsQ?= U&_W%]IcD|eptrh.⋩A[N|{sgnmHUVܧ.n\ukQk51YaS:ca΋3#bz=pm=X87Ͱ$yW?1XG(xr 7O5e4LX09Go =pX0S^ ;w8A[^bqu^yx+rF+WAX8TW!F9VPhEaDa!AiqO)3;T{2, vK@i4σSe\9 7eDɝ8f6Q~FΣq(#9?1I6;XS#OTQ햖(^|3zuw.Z/1#4Ry^p%;53Z ~QEg.\Wz)y.ΠR(]xϽKq$ ~Bo)!r%:A2LsNo4g CC9TӵJaZC ggu#1Ρp}{?WAy6:S g,Ep_ЕLT'8mEQ`gaV4+n̹j}K~8 #U$_yWU.K'q1w.Ujy4]= lɰT&(ž:=d!C |K=K55 g8{V\ 51H y'($lGaJ:ɠ[2= /LĜGﴳߛg]Q^N{אkEpv2D;!ni|9/GYE 9~ %NrF5atTs]==k׏rLڶl*zXEYܽNvRXXJvNOg"ЋcU]`.uWFލlo ٿwLtr1U> gB'\$'9mm7bb LGE`(B݄icϺoK0^QqԾӕ1n/y Fޓs&|8ͥ8\y(J$e,Z1Y&512I(˓1Y8NſF Q{Ծ _gԐ\ܤfadM׷uq<+vؕWEaL )~'20ߠƫS196ak7,M\nC/~kt/!ۑO|޸,]֬s7>fG_a4o,EW ]\pu2ϟMtC&a,F&Zho5!4?|VN5 ǐ;ő>N%姜V~~\ =et47fc@gG{f,ԧŢ&SϞRY(Ko-{NBPWk>FD(/!H]&37dgaxx'+%g+sqn}}hi2cE~id_ @S 6+p(vcY"oyq q %tsW:)O3$r]/:VV&h-C|C)ޭNLt p`tl ]]b H_?](d!>NrKAjqqq7_߯TbΗ$'..$cK33>80 ACNv6^\ LJ[-vwTmDF`[lN8߀øpb-ݏgYX&Q3V\ϵs峝Zd쟞>Ԗd?[/ 0#55o種ф0D݋#{kRSxk\܇/]X{~p߽9ǟEε1ӑ|il6D"ry/015k׮a`| g!󬩮g} ~m/>?sO}DȨHͿN!{#u9ioHb\6_AqQFFFc$_;::QQZ]d4ܳn >JϱaT9S-|ob>J -X]xƞO .Yl Ǧ7'¢o#X̓X|,M8U WzK$'S-uIhoom]_|+^x/\Uk_çW-VXkX<c?.,݇E(C,ۢUtO_uw?rLSU>RR"ڰO'W?e>WZ5?^Zcۛs7β8wR.tߒ| q0ww*-'N<Գ " ,X9 bFFHCPy5] o9aj$:T$ٺٜKM|2!L@SXM4^gp2{˟_g? RPB2xdi+&L%4~\.Ҁ\fl"C]6?t f3f6t55BZ**kKYὐXS(X{Z՘2t!g i\@rHrc`]~6FL+2d.h]TGcV?2l/bCL Ҍ37<]_Yޅy Pm)olͧ_h,"IlH'bjHs>w7l=睵瞎1-ξNЁyͭyp^Wp6{/9xzhxv.= $ _%|ER*_^vo1 i-$MA{5y.nT"Pyh2#2/)@e,YK=uqrt+g J6a-+g>xp 2r~۰zb&Y pT:z"v-yB;qߑwՐJ5|煁S#rscf/'%} RJ|rBCHخ}L 12-?_!]+ 84LLVJbl:3&C.F1Z9 {0} :jK^OR7Md͆gپHɲb(I{>z' ï7qRjZjM\,m%dǙnAv-dLC'̅i㼮 | M1!tiޏ\@ 6qd?d%,#GkYs.|B{>$VsXVOFqrB/- $?b? C>5D(1rӆnnq9Ns ~Ct"`Χ]1K|,ف_]'ȝcFx\swdl${HgjS5Ԓq R4}A%x,sˢnIݯHQx\tEo8c ƘԚ24}Q䤱yb }V]v*~#$>ֺܮ/+^ I@BAi!If|׹h~9MCDZO}˿Y>6s'`0V0%vX&[ ev<˔F ^~_A/M{~y4)&Bt>0!v [2|# 9 P'S={)>aHS>Evp/:0vpbZO}ѴL_}< TaP {O5f~zbZsϢdLF]~Uz*R%$}쓕jZB$zJ:&cmlʕ%i/(m գj b͟庆=o=lr\;wBcͯ +xwN~X~-ᖄjPC0Y w~i?"0& )q{⌡upb\ ^lߘqR6;b| 5xͯmڸ>^ }B~>7TOܺn۬5FSC?V}vnD;w%0;VssLu!O:K/ICV< {530~P99go?g196x2ӋNt]yg|[QC~'Y54ųi% \wn@ܰծc_.c[yU}da\̏y<݇:ߩalZ@ Vz XZIa~^&IՕD)/%pNJl~4v}!h[UIOm̏H vL/3 6 FNGM󽥨;u_,׭6Kk"XOag&IwKGֱ;^)L#yǑqx\l,WOH摿IͥVxNzIsu뾺\+|j@X6㏵JMQeLGݯꑡl,K;7N-uiRz\;M8KC iʌXmzHsFR,6{hjXoȎE S TjOKTZ` *dd2v(,%N)H܃:Hj{w^(dza~w~kqobv@L7GkA3f>-N^9~a BM kkU`쏵[9Om4fjWkb?~: ZrcG4~(Pf-G f,13ZX U59r]ٱo# u>|Ӈq%?;^ %k8XHw{bϡZaZ: U ƳXy]o:DY]Yot/`q{$\ gJ#k/|7w,571|c8kEsJ뚁~+w>\S}Skӏ{ʹ8X~#>g7QQ@?/j >@ ܟ-Z屳L몍` cwAgo|ñN?}_B=-зlk&Hs 1 WZ;Jz`cuǯM?PoYOϬW S"f>|+u]{LXj4WcY{ǣsFp_sְ֡`k&Hs8넺`yV1{Ddg }"cU>&F8gL,P֥&Hs8w58vګ^y>c>sI|NﭗJ1IWU j/AIM?iS%g;J>KܖDk˒~{%\t |iY.IY2f[!C.Tbe$O ZsEg[basXoi+k9􏷙Ğ2.{y&NeeϗRu`Y<xGa5K?^[t=GY:zL83R rʑ/eGe]T -_ۼ&VB17< =[#o'Ld*kϔi-L_W{QCa9CZ jWPCYkq(2c ]թҔsP[# P"![հ7®UOaHugTLP?s'.ץ{k-j5U g]|ǐVۄHt$#J3}u_c=[~kvrj?'!G4oWC9ۻo#UJ-n E֮(lʕn[4ʣx?fUj5 LH;}C%C@#uhÁ3}ϴ&Ru||>y54jI]eAۛ)įŻ_um| Ja);jߵY۰ԥKsaI#_ʃ9WPC 5LMkk烦? r>Cڊ37A/FPW>jG .k؛PCOUJWb6I8)9K|٢YBH >ȒOՒ&rEdcawd g><ӆi-u' AvD: k;|;,c*ĭI2n~gˏv@'}Q{ߑRfqdO4>O-cwW~}zKcL'R>}0Q=$*l]>" Q#);ĭRMEKu 1jw0c>SVúKd]9؃RH)N)1Z GJ9I h<]gK!5;}m[fiHּ}rլ+sCӰ/S9֦|#bOjΓtusRԝ 5*Z-m]mib~˾ 2o͆sƒwc1aDv : e%O2Su\Z0{~<3q`8sl>$ŇőﵰZ|=Z5XKgli`9GOwt'\t[*)) N֦J_]}E̻RĞ )RZ"9_z3A>8d9:]N5v:\2ħ3e8ҏ|yw+?_?P|:u~ `3O6 *3 ia.Xc}|Z?fX Vj1ͅ~X{4=@L95]1pk^ V}i߸{ZKɪb-֑|J .UgV zoixH.djwx]@bMn }@X]Եޜg\NVn(t'$`3M'05M Y&YMShR?AĵN5GejP,}^[18.\W7}iɇՠOm:kvZ?ז9VVR944=Щ[#<>6wgNӿI܊#wmޝ ?Yq=j,I"1Gs)}J3D)Uv4l5-U,\@k$1xIsckȮ5p,'J&m]Id _|{ۀGC΢ƺM=^4IJYA]qgi.RkSҿiTWVfY`_XzZ9&(NJ _[{olgtsW{{ӱpwov?̇bjZcBeFԮXIPo\Y K^+*sːeg*ΦVq4a|(XR7`?4DŽ>s-0G<}ti }L4Ұ҈en҈K 纄-"B# streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F [./xmld':4D59E174-172F-49CD-B4DB-377EB6023F59-7379-00002316C56027CF @#x͘[Pi3}Kg:c>tOdǎuLݸMg;ė6c6`b &qZ`a$X/rvW)&~s.jEch, ,`>,aLK,_H,eaFtggϞg-ֱlOW哥qdqy˜AI T=Bo!k׿4☤w$NI KL6CT—a޽u*$͙^YIFaD{o-C—oX;vL|OsvKjCUpB'C 4\ C}=*_KKKjwb9!nvn5(T9Y/ 9]hXj-[X1c %sHV=1؝tJ2҆ 8Rq355%NR1LL?}tfv'j/`#S2Z"X$E{X_'Ð>,vrrrT2O}~_cg }+U Zh/`5I Jj=tHrڋ~?@^}UyW$;;[ѨZdaaA-v-TD-[sY<[Cf:уO{X'4Gڃ'M= cZ[v;_po~8bpW~e(Y{8t萐_~Y9q℄aSM9OX>ۭ5O[]-KcMɎ2+w@FV|&1R#b' էeLh f| 5hn wJt%I0j'q|WǺуlZ TK/$O\8+!>2S.[ECHߓ=ֳias^|ۧv7χL>IBM%fB>ۘG3r=Cֳi=o])}4꯼-lͳ.zR[xҰ39Կ0rrFbZ&d%6&+рDd-ꗍ=6B-j+Y h/Α!Ml*eauhl˜5RYdRF_O|/kJGIuFFy% xOE;e}IuW~{ ј븁T'蒴 } 'S֧Z Ȑg&wk?>\n\Βt|Z㾲9S);+;Hx4Gc․q aϛ>5X1loп4(-uWߑ{|5z(@zHه }d9>#\2\ y{∷ᙆ25Pu`؛i9GYg==l&CZ{:2v]+W ޖs1ZnllBl`7}sU/JK%rϢk2k1SI@ZI>5Gcw]>@iHglu5lYsCsǤZ|HL@(UU2 U]޹+xyxOTMgHb/Wqp_1{dOF[e_)W="sZ{=*B{ue1X,['FwDEc-8=ZJ$\>񕞕fԡ7i*^<g< o鱜Z<|' шIzkbVXgDNg5[CM^7^"7>-=iuga:kv QkYgs2kZ!4A1t>mfs_>PMxP#pM'y> r^=x g8߈">5#z/s}3HWOE>X ZeMۋqk]Oq6@5E-,5Am6Yd^MKMEߎyk: v6\vs3dHߢ'?Y?Gsip:-3s彣ߪQ8x7#K_׌{ k iqeK)_sx[uU=T"=>\[}"vU\ c}#"Gc|bGsyb.oQc h&܇0F5m fk`ݹָ8:ZbYf9腾au+GiqP9up Y'vߎ=O'v_i6ii_M>ȩ؎:bʖ5ɐa  ֲGJy}Zj 6M ikNׂXqƢui5g1MaA6R9>㵺{sDsrfLX>xݚy `-^5Xdo=>1C5AZQutG@N=xEc\f Ĝ#4` `-] e8kf"P} ~&Hs4XcFP 5AZyoS99$j&Hs2~o#K+|VVoM~^g}PFV|ʰ streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F phpd':08376F99-D214-4BC8-89DC-53E300E92EC7-7379-00002316C55D7573@@x[0 DQS`)P0RRP(Rp3JIGj׏rA _oءD!^f^m߿XߘKUcfRY*Fޘta*yI%'O,P,+\ٹRvcF!&2ڂol{[n}Kl⑶.?>;z=]fBx wc#y3:}v#:"2֌;(A!+%GXCװsDp{0֜_P+r/ Z 7Gx / _݁:aF!Pzz2>}~< 3 ޏz,1_\ރlVKPA ͷ}/˻~X.n,x~fxO{Ik1Y;|WְrSr_1 ͵60?=cvrWR<ޏSlo%JGu"#ղ SRo^|RҦjx빷oMc.SƮߋⓇ1߆|t/<7mb uURS3?(s {݃=otʺLLX10]iYdgk;kp=k25,;(S~+b!_ȟ3ebdIr.n,[?ߒkd@tө&<" N ~ܽ}_W6/b!_ȗ~i33H?nj˖\wF p"_9>Dljc-`5 ~t74ȏGeF>< ~?"sB/[=4/%޷:4H͢#Xsp4>]U5 da mali27?گ_vjas0Wa5*Kç+ty5 ACn g kkҷd:ʓYԥR2.&1G?}Z!?'>uo(0ҍP v,ڰkn΢%/Ԑ˨p2>C/}mh:[I/?'nyj>sYUԱT[}[_yY :Ky&c"Ph~$O;/)8[RmhoutDνmO}m=V_~6jv+Z#]j,cV1B9ICou*Ϣ|G^t |/nvϙ ЙuTkh|<3@Z-Q^W,_KTϽ3i/J_Mڍ]nеLFkot|bv=7 ݗa<\O +8dEB5'5er5Fo, pHX98wt!n]%EԖcj)8E{X>v}']Ř8 =8hQb,uE\K-F?G+/_Vq|7oor&B(S8h#ת:ܟks!xk+ ZXܻ2yhhZvq=V:s+|llal,s'M 5j]sbkX_<ʫGk7>uPSOY]K4Ts}^8sdV,cw3V(S ~g4w-f=Uٟ%/1Na(*MߗkwW|NYw-MD3ocf>sʯqXAI߬,'Ə~\^19":vi|{8Z~3>w[oRIP?/jeD(OG3Ⱥݵ4_bsZ6?T]?{ȹZƖ9[ߌX_r_"7{9Yu!M %r[h͢wT1ń{X'cP?qsJz욦6挍x;VǛu1k<5U~vM~XcLZV Dijpo *ubf6}'f5V}ZG43vGM;+u<5>=W/;MuVkP^9'O4| <5K=f Ҡ^~^tݥ]ki=#'qvj&J4V3W=dɻ(w?4g bk0VO}Dijb^{k#8f]1}üŮ|Kyj9y_E(SXYe8q4Q~7[c-AZҼjj>yPy:!!?!ϐ/Ɩ?S streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F ./c++d':ACA63C41-62AE-451F-BA69-B732F1BFF96A-7379-00002316C558BA74 @#x͘Wp\Wġ$ 3 <<2 O=qčmlKȲuɒV˲%Kjd쮝}ܻZ*OrƿӾ-g1mVb-Ql|ZXV'e*EݜՉ6|'iӦǿ-i[)7߇{s/Et.,\[Y[ɇwEvǧV,4b,b6Xe g~L^vj6uYYYkB_ &[ x ry>U;AVx}Ʋ^\y5`-3sPSÔþYjJ5_=Ad԰:XwXmya\[ƺ(vqcYB}^:K38\*5H5TVJgYm7{1?Xye?6Vx^Ns՘ `k3H5T⳿x6Tv"iƺt w潔86z!6uщЀh5k(35<|װ|"(&J9J4Ħ<[;Y5DYCa7Kiڶoq7][G׿-o>LS x>Eǚq|+_~ڴ^.##re)\|صi0[Bܪkbm656[C?@y}[6zdwh:`~*.FP6Ug 1C[CN5k(64nj}ƆB}< x]3q3pm)_Bu(2vu$z^2:r#0n`,6Y4 b'ڪa˪O(Y3qE:@kqZQ%}ϋhQNVIW [x>Iym_9!ʻHhW}uYpk.2_γߑ.6I&ߋ=gMoy׼>5_mGhb*w&o"!|ӈM4sZVU zk8:FhvcmJ*硙k൱p== U;sk+|llal,s'M櫍U5j]sbkxOգ5mѺk_VhXIOY_K,\s}~8sdV,cw3V(W g4w=f=Uٟsl"f|Sx=ʇZ]X*FUq_嶺S]~'QۘϜkc\6VkoD(p7k* =0ׯ[/F3GVF5O4>TzbcyO5WZ[/ߎX'}^8>ssۼEympv QAdDk|9cKb쮥ӺƱђ9Cz]G06fƺ3Vrcm\ i4_m8sxw:Dm.F+}W/;K ՠ`9'O4}^Dij"kiP z/?)ҮftD.Z Di_Uhj:3y> Ă'^j`4Qÿpk(8fM>ʼn0ggDijRwi&J4VsVY?_(WX}?-3-AZhjyX>y*))G?&O>[-)^ streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F ./Sshd':2EBCE85B-E4A7-4CB9-B899-402CA4328A32-7379-00002316C555EE1D @#x͘Wp\WECIfx^yd7z2$̄L8lIVY.Yjիe+U].n wJXU2/}[^+mvR/-Ql|ZXV8' JcF)Z6ށo<7wЗظg{N,]HEdK#1qÃ"V1t":юfT Ԓ ,S//gECn."|nF۰D{1)"ۮ,R§j?9lp|NJd_8l2%\e: 5a37 ȐÔÁg`,,šfZ0XBރ|DFL kz?ib'7VP_2XnČ#|C#j` զՁr9k5܋72B9Yi[Qy?Ťu1X5D԰_g ^}Ul?E?M07=gpߊG0߆by/ZU5 ta ]al.2᩟?x/ /Ecþ'wQLO.*i0YCϦ50ўoȖuܭUDgt92Pw1 gSy1kd9); 7`A,O`iKaBXwau||Φա֝HPrnysSqdCɂV]B[~&9_? Dՙ}|<}J2wy\yYɕEa`  7ce ]e>M6]u;LZ#_891KXOȏ9Xxg!Yy]\9ښs 5gʁz3?+@2xWjY|;=5l"o/<ʌ/1cm&RB35&]ϩ}.~b5O0(>^-'ڌhPhT]%v< 뛠<<.̭ L-%'v,c܏P 路a@ikc5gy-"FcUE5>Ghb*N MND\CHjc5goZ\sV}B3$]c|QBkkcU?ZE<\^d YO?)#:$d ;_9[IjU~zZנ?kD_2ʫGk7>uPѪS{OYoܰC,\s}njYf,4Q|b#iFz|?Cr_,n7cYou oDpe{L^  $ֈ&ttʚco$ϼ1S~}cjyNfP55~w#+bhMUܞ~S͕֖wor1/>ssۼEym6Wsv QEdDk|9cYKe-6uM`t9Cz]G06*u+gul-~q5\`YJu.zGewSL^":{yӶhdҮgHϮijo,aױqIa}Y7>&2d4Q=21s6Mx7kXZ\4QZ'_A{*CO_1qIX3Gͷ11'㌩Ě4p]i4WMcjYCegvs.'gk`L>d \5+RkiP z/?)ҮftDI]\5{r:f 0g Ă'䓕>j`4Q˿pk& `7|B0Cro\5՜ei&Js4VsY?8_(UX}?-s-)Hi/"}rhJJʏ'A>7XT[ #Z,SjG^8?jp|NJX_8l,Ţ\m: 7bs7#áa',-oP- x45l "f;o$Ϳib'^]4P|7KWyVF0SQ>׳*S`R ࿝CzHX'vTz5a2`5TJ쓿yvTÁ^~,.`l` \|,_v;ҏa E^Doyo 4a ~_Q= ?8pBs旬/8,M+7K2lb ob Rj{bϟDQ,K:PNeeKyt ܓDj0ϧxs/ܾoS}A/xMNdX<*1Yەqd>"fSj5Nw?XvqA7A55"iooXC1/-?1n[b-MKQ5Wp?A)8a?7K0Ps 7O~[XðN v06ϦO(5<_pK}؝p=k1]x}5ON gkjշuܭUFgx9 P{1Ugy'{:Z!?HN}lO9F1\1Nbe+V]X tb}||cΦj֝LP|nys]~dCɄV]Bk^ه_vAQǙ=erwhx=eg0x 6XSc>]M7^u;D _8\ObVPs6Z3ԃɎdphKv•C/1O@G^2:r+LC=VJsզ2,#{hk#o+Hb Ɨ氱X#֩350Pɳ<ߑ.1H6ߋ[sjH%&wUtH%k"aK|iO7PuuIQwj^xG>Ʈī6Tg 9uӴ3]EY)N_ĩV->i/+7U|cO&*>K0w*)|SK(M:o[at6,,Is,5Er`,귨'W|Yű󝼁雈ki4Wm “-\po/ =C5W'F6VD{5@cr{Z?诉̭eLv󕳱ϱN4Q6^y|'u Z/#Ţ;z|38Zg <^-k85Ѽݟ1חId eaJj,6pnŬ7:#63&|Sx+*2dZ]弰:FQ_念S~'1ۘ~3978vsމ~'7kc`l_׷[Yۺ4>xyj􅴶|;cyS3-[llwSi4WMcNpV@kUG0w3bg>#oc;&S iDijf ͗ˇ7kP^\$O4D}67KjK!A5KҚQ=#'1vj&Js4Vb3W=d;(ϋs5O'k}>i4WMc5w/=| ׌u/8f>0Cjo\5՜՞¯"Mil ~2q4Q~7[Η[Ri&Js~_E~'фGy<"ml v streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F ./pyd':E33C04F3-412A-4A76-A66D-D95AF23D97D5-7379-00002316C55048B9 @#x͘WPʼnc9LL5N<<%yK'v2vEedYJH$@u#LKQb&@Qv99޽˂U>wr i +0Ozhb ŲuafsV'-[xmGs}h. [ 4م1qŇ|VJ]\^Dnv|hFt"ДR ,3/Nâ.+ !>7+-DkB>[.Sgj^78Y ƣ\<ʅxF/P&1}% /;>L>yq6CX4cny9ݨ05 ,&o'_6֡bY⻡x:K30\*h@k45, y?N\{Oo~ƘCڞ4w?6eFY1_I jc6KYCa/l@:F}[(Sl8w4!Eptw 3cVPstgyNՋ2C:Lњ}9ўu1] n4Om>b" DyXC9b36Ѐe+T뚉khO65dǥüKhg_GA%#:Za2+O->FyluL, *XT[D歯b%<+q_dzO1řϣ%[_@؎tO OM {`=Km'E WޱV#]Z, TbZ @m:Ϣ|G^t'|/2Ug_ϡ;~<3hBgZ"aX˗V:OT3iJ_Lގmmȥ,yF9(ot>|i0I{SW ݗQ<\_Q8bu'ueruFo, PPX98wt]$Ԗkj)<);Xg"-|W{JpΆYE)Ud1/~j}x˗U? MND\CHyjcU'oZ\sV}n!nǮ~(5ڍ*~f.Akel[@utn cc-|u}Dihq_󹞬5hhl#hMf>}qn HzVfZG|_$j7bDYou G`YwT^  T*t:eMY< g)6ٵZ{3cFY3PIhc{*btEȊ}JmN?J_XkˏCqϋϜ|(oߤdΡ~_Ԯ!*,Qh#0g,ulZ/k9kl )Ic=\ǿ ucc+[ߌX/_9ako=\NcGƕ&JF8WCf;*0z b=-'cX~9 5Mm%Cv>}3..67FDŽ&J4V}fc~qƘ:D5HyjuBZ݇9Oj9G43v#&Ǎ)Ê4p]i4OMcrEP{k5(/g\4O4|67Kyj!A5KҚzFhOR Mif1{Ȯ9w(w?4g bk0VOz}Dijb^{^p:cozv{ /Mi,v!i4OMc5gs牻DiApo9oIQE(K~'~')Sd狴%$f streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F ./pld':ED0B4412-A7A6-4C29-9A10-D44162B75FFF-7379-00002316C54D92D2 @#x͘WpTb2d&<1y̓O&OCΌ㱝86el`'@It,$ժW b:UBew]ιwR\a~/}[^pp d(6>P,+\ٹRvcF!&2ڂol{[n}Kl⑶.?>;z=]fBx wc#y3:}v#:"2֌;(A!+%GXCװsDp{0֜_P+r/ Z 7Gx / _݁:aF!Pzz2>}~< 3 ޏz,1_\ރlVKPA ͷ}/˻~X.n,x~fxO{Ik1Y;|WְrSr_1 ͵60?=cvrWR<ޏSlo%JGu"#ղ SRo^|RҦjx빷oMc.SƮߋⓇ1߆|t/<7mb uURS3?(s {݃=otʺLLX10]iYdgk;kp=k25,;(S~+b!_ȟ3ebdIr.n,[?ߒkd@tө&<" N ~ܽ}_W6/b!_ȗ~i33H?nj˖\wF p"_9>Dljc-`5 ~t74ȏGeF>< ~?"sB/[=4/%޷:4H͢#Xsp4>]U5 da mali27?گ_vjas0Wa5*Kç+ty5 ACn g kkҷd:ʓYԥR2.&1G?}Z!?'>uo(0ҍP v,ڰkn΢%/Ԑ˨p2>C/}mh:[I/?'nyj>sYUԱT[}[_yY :Ky&c"Ph~$O;/)8[RmhoutDνmO}m=V_~6jv+Z#]j,cV1B9ICou*Ϣ|G^t |/nvϙ ЙuTkh|<3@Z-Q^W,_KTϽ3i/J_Mڍ]nеLFkot|bv=7 ݗa<\O +8dEB5'5er5Fo, pHX98wt!n]%EԖcj)8E{X>v}']Ř8 =8hQb,uE\K-F?G+/_Vq|7oor&B(S8h#ת:ܟks!xk+ ZXܻ2yhhZvq=V:s+|llal,s'M 5j]sbkX_<ʫGk7>uPSOY]K4Ts}^8sdV,cw3V(S ~g4w-f=Uٟ%/1Na(*MߗkwW|NYw-MD3ocf>sʯqXAI߬,'Ə~\^19":vi|{8Z~3>w[oRIP?/jeD(OG3Ⱥݵ4_bsZ6?T]?{ȹZƖ9[ߌX_r_"7{9Yu!M %r[h͢wT1ń{X'cP?qsJz욦6挍x;VǛu1k<5U~vM~XcLZV Dijpo *ubf6}'f5V}ZG43vGM;+u<5>=W/;MuVkP^9'O4| <5K=f Ҡ^~^tݥ]ki=#'qvj&J4V3W=dɻ(w?4g bk0VO}Dijb^{k#8f]1}üŮ|Kyj9y_E(SXYe8q4Q~7[c-AZҼjj>yPy:!!?!ϐ/Ɩ?S streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F R./Ycssd':E5A8CC16-4FF3-4C69-99B6-A8FB275E098C-7379-00002316C54AC95B @#x͘YP[iKҙ3kf:}'}JIInܦ3p6c6`bIBd]R+KSO 9wϽWWW6Q17$?xرoat,|v }{N$5?*H|gA#㒹 ܔtbPV%9(ў 7J2PF _;wV˳U*)74`-"__4{=8pb%vX10_p$jdqJ 4]@|/ϚHG{a;ea נRR-T4AxwwUkŠi-? ٹR"ОJfD{%@[+Bطo9vD"I&e6CbߕQ⫾ ^|Zq6_;)<ϓ<vS b2䌬Or|\cYj/q-3m{6$QAYzTFd\V+e9 cwe-jjWG_+8(KWI \?!Aw=çcݲ6"3?hw]ygHƄ>yOikxzd}IJsߖ[k/iwqpLz?=@)qZnV~,7+NJq? !ј,Ž8$\C-OF/V ?hKmO =>RC@9Y>uZ7NmWL ;:%xL G]9>|Z|㙸p-[B͗e Bk?uW~<_uNF]pKOҋ{ :ڋߍM[9œo̴KO9)=7 V=LYtYFq-F=J6 5x>Ct^^s4|WjL |vZW­55_;}@p/㻬N"eBf@$xǨypwVn]}'j8{b_c%30G:er!EGT]fr>)>);_ƼmewPro ܒD>d-u돷j+mĞ:6Gl5O|}[^MX?rѹf|ٴ y!'OǼ:j]lXB-k2 ^܏zJs ypiF ڠoezG%Dߴ}D]h `_>smmX=p~9úL-GZ6W&=ޚLJ~x.!oӦ=sCfeZWgKm ΀dЅ+BoYV>wM}6ߞ~s\7}F^}E8'T370ĈmooQch&<a>8)Sc k~^YPϸGq >ZbYڕ;f9腾aV535V&Hs4fb ݇'vߎ=O'v_i6_M죘>ȩ؎:bʦ5a  ֲԔG_y}Zj 6L ikO4Xq֢u5g1M2aI6R9q'u{sz ̘>|Z;qݚy `-6Q{(C|%Vsbf iky\1h9[0$X1 r=skЀ9j4G\x {f8P Y}y ;!>OMhkV5 `-lAXub]j4G|;/k@dB-iNOYM~6~^o+圯j streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F0/'htmld':025399F3-BC6B-4021-83FF-D387659B52E7-7379-00002316C5480746[@#x͙ipurMIfN?ڎxĵ%YvI6?&i&ZŔlId"})$Ho / (N}!s.>9;~`kCfRk|Vez|/#ptps㧟zOCVmuЄ֧b'ER1A86{W%lZƦ@:@%\pݳ?ԉ{;6>s! X-aq 1_KNl+VrupNTb*Q~#ZG4>/99mXoC.wWט:A|v7_b}Zht Vj1V{P YŰ=f1;wjS%&~"1iD1\8CakT3 ٟ6[btgZg]O#&e^~2±5gرTUy{x/`0˵+=$zv3661ZÆD&zKLGb^$&^$&^$(QEp-LX*}"cO*/[b="1"1"1o_!X6cR!s& |fak<}xKLGb/)yʸ?}=h|6cr|VZ{oZWy͹=<Ӯ=fø:'(0oa &Gw~,&ea+ 5*p{ ,>Z` V{bx7m3{{D},_gk-IB [s֔p( U^w;Ao#0?DzA'Q":M;pG`$c3eamXc +ؘ`3״޴5^UX>[Cvk5e@W}U,,[sUEhvꇿ(^C+s?' K剰G`^ ;Wb>s7H ~АvYK%S4>2/-ڰVb0C|:Mp?#fu j?^#4X-& +rp_ǏDqI< cqt0M4puFj0ѐ\j3k=@rq_צ"簣x*7hp?Ȼ}r9`g1l`w=-'a*7񏑧@ǜF(24і~KSs_ f5[_sUqs?[`EhE0.]/2b}WqAnuƲƽ})Xm"ف0$_*4u,Gp$+ w-{tXҀ,|1?vwEVVV! M>r̺c`_[`pbZM&Vʢqi7[L̿;j 1+!8AoY;51~&d[p͵K u-Ə 1ȩ滕)  ":ؽ7]10V5fcˊg[\K%a%?Sg0XL*c oL~-㧲R33bՔ=>ZuV3k;p`7`2Ŧ_oksV].^Nc&Ɛ![UpM3+ |Ys_*C?qqf*&W2[flcs[N6jNNJ.X<\oܭơF-^>97C0Oa"]A[f)R^fV{4aAUC"V)6sZZRb^sh{Q~j 6 /H)cѓrwJwMc&d3dޣ>d 8J#C4b)ƠO}Hš1qqfeNJe"8 laCq%4\ϴnvdjQVJ 3$#kFڹl)˥7Dq~q~%t<\+o{1E6䟔)UL8v=^Kg|]ڲb6[YWԵqCy-<{[pNxs)}+Ⓐp#bw1"R(2ޒp3(iN1G]Tq/gݗx;Q'bR3S%2O]a"O6'l+T=IYH-L{0̭ dE &5y"rUAϜK,@7gYX{l{8^%.Cg[`0b_'81F.cb&ϢS.m4|qV͙qd |2+;ٗ} <-"O`qL޾ļ{Esm,z݈hϾΒhXa>}k~.sExa"O&u'@Wˉ,5w#9o+ 2NM4dbZNNX"1h>-+}H{*;5\RVq{tq2':5"aݓ*9o۲^?X&dRW7:ՇP=%yc=Ři(c晫G4dJfb%;Hy"v&Eӟv3|2+s9TJ?j G{3 ydNׇtBij]9}s.R>ep=^^Bu㾉/`ۅ\|]89enXPѰBBcȷ-uWܱqM;>܀~7r06cs&縇 # 50f/P,0B,Abeh_Jnew}Dw-qhf>T |֝B,XM X]6"i$FdWrb.اv1\=u}U#a y^[rG}dkbZM\t \tFGAxs5 TSó?\0֜űEMü}mkncIĤ-BZ;ݕݰF|gZYdžϳa|sknMug-+z]6NS{$?3ƄYvXcD m&j(l9|/A Flb Zi4~[o>1UWĒowH\6ccۼ3"6  b&^[1jBEFN'M 4LY)'8%=d R}de<'kv|33XC.axG YhچcPsM׾>&GAt } 3[=[n:JK >:Oj&!_hK|9R?P3ohwM+oAh8g9=4΀7g'B1+@w/PZJm("|v W"4OH]y{=2_@WPoxUoU(q9gZr39mh9y;W~V6T}gej1D +Lޏ_9SrgIy&NЫx~.4R{+O󵉴D+^Ҟ ^=?m0XC9|t<;fb85ʞrwhU*c {[}=UGyѴ%o>\LQz\8kw&CߵڠVrX>ia65 ]wj+9z| ԟ"N!2LFZs1ږ}gn6D~'6Zp5}sƫ_쌛}$qE4Zkzd\UX<%)u0UmGS.~f,A&"9ǂx9ʳvPN?qM(-.kx'y F@k ZWPƶy]GO{iMVk A9׶DuB 3N?hĞy >u]㱟P*X1V}~߶Di)5X_{]}$LkMh&JK)Wzh 4mҼb`O`~2˖ * W(-\}̡f/YCqabCD_p|dd Rjf08~Z?>Z$;ek&JK)Wz3ό3\7=Um.DM2?3Y:0J)ߩ\\y6'Xg}r2+f8=o/E+ CFL{|;:(Wϴ3tX{vb*XBtW'r0әkrnDv{L/W=Ո+W4BjM-k5ۅ{%nU-_1ߺNq݋ 4䣓?X9f!0՚o+ _tg dOXBu&c}h- mELw s79LoҢGq#"k!;u2n>A9b9dw(9\>䵑/⫯i}Skns"iԟMݎQ:PPOs(49L4+.%%8/kq;uZqFE"HJ4]hs")Sn球4?`HK$jW,/."}GKhc`)}4A}nEfwY9Nѐ utѽn,^C-~}8(F}"2iwbfaB-e=9_yhc~ouos_הzS ,XN{XwvjQ }neIS廑kMEKA<);C9' s8fį(9\pKB.%i/Fk~cOlw|: [!h/ }rz_Ne=b94Si9tF*iW0q;nDg>򵆴=#Էgػu-8ڐh+O`&b c>0T/|GNGMS{(EYQPWs톛Vu#n:c6l݇LV`0`e܇6<=~17Q-z{עz4dD{ .dk.t}ϡ8ީ2R|q_F,__KW6/){hj\ oǨ>Z#u^}CoBmF_6t1ܐWBy-Kb]snmR_mcz^Hsd~g} WV+?D:ͨe;y <[8__hˋE /N[rOL-F-e>nSn'/WOox.F[pėjp]K5Z%7QE5WqlC>O>/y?e?Ӗ=ԯoc fNP[$NwDz9p0cy8ZCh-އXE\v|&cwp/:JwwWHErKP뼸\ҏRq?dߝ玊!؎ xx^Wxb9j_e􄺋pO1}Y6Aߴї%ߝXEQ ~~0}p)T ԧ.Kmҭz]uҒ>+$u7OCk6+*r+&RgȁuǪB9Hs۫>0otE8O }/o~Q櫘!G~n9;"),k!V/]Yi- 5eb:y9dvpc]Y?ɥ~0҆ -kEdr]\agBLvb5*_j4e`u 8kvԚ  hCfB>u;}`l=gHG&0<&9m<斋l3+/9\ yN0z9ps-SD.8]uFSuڇk=ĿM3cZu)XL?\h(Gy4'mZw|7P\DZE}F;\hCDVHhHXy(LCsRߝ LcQ~~v;Y?vnz{ܩ[fRݺr-?ŹߔmZjI`GF ZGzXrKȿEXw<XwtGn'XcrhjF{3ӯl#4[gܓ<|o X:S_yvqΓoֽ|:;`VދxiKdm(0 @9O+Eqn=u|6P+A0},X7VԯFq'pZcYcs\%\ݺʋCUPeҢ*U3mYړm'\>3~kbx^excOaZLҢ*}fZ2i5}_WyVo~I خ|Z},v6aSD٘W(-X=g9Cj-&l̵ԺZ>txVL ++{e#Qv@_(-X={9{\LZ3)%Xu1'~$j;Z#'v MUQz1\7Pk4o,l!,wJeSld5O(-X];e^wq?.l&zn g>hL/MUQhHe؟Vq+XSlWH4QZTEfgҢ*Ag~0%H4QZ4~CNW%͛:\OAw streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F =0/rtfd':84295360-D2E0-4633-A5EA-07D523556162-7379-00002316C53FA9D3 @#x͘Yl\WCI" G/*;C[@HtYfOI8Kfocǎ63xI]>{k'_?sgx d(6>P,+\ +0Qɦ|>}=%6≶J|4x8yBlR3HNtcqZX[ǔCz2?ЎT# 龅hcֆna8>u Wdo4K9HY7c?Dk1)Ěo,Pʧjyoa:3I[4TD[;X' ]_ka7/28Qp=VM #RkHamW5oݰ*GJpC|7D3RP'GgL}.|ww/Kb/|W57wR[(_s5WQr+!󝔞&a"6)u~ {tw9n_CoUf:ha5S[޴7yLܛC(8׎as/\8 _7&YH 4EՃ `ib c}e1օh'cEXi޴:Tͺs()Bgut먺m"##A Xc7|D N!9gG{j8m>Qx=YY~çb XyPH{~yjWyL5F䋭~/xr `5Wp}pm~ 9G%=ZfC#);dSwKW8kV5NL4=mw[wρv3^~/U_ċoT[Q8_ 7[GW ocx"MӺ0v-<ﴛZx5Ne7bb|'oor&B(WBzkrkm֢>/´-q5\ڼ??^Ef\٦-^?{zosĬ6kXw|xy_󹞬5h=7y>/ʫGk7yA_yYw :e|/Xּb %kc|"،'f,4Q {{kv9DoZ!_0sX=۱:|,xο9 >gVo2~g](}mLAc\9VkF4p7kFCoFzIn=wM:;+})-߃]o2ߚϜfZؼߥ[9]#>StLK ak!.`_c4W*Zs 7'1ӎqDih)uJ{ *w(4R;W9h+>Y+}}iq@[-=鑙GŲ9.?8||[hkm}5:!ϖ  tJ+meKzb,1DMƛdJE9Z%ݮJ5x_nV[JfEksa=J2|6W~ :qzUVG%^&s ^鮾>99LRl*gݏPET_i{x^F$>S5l WH3(LIڂ؂~XeQ֬RO-YP^OTv}AdkiFl.KYYJܓ]IL>x5U C?}HsTC,IꂲdΑ1me|k)~䦿/mt矐bLwJb54J|5T/~ y⯒ye\YE|$$K7U(Q{Rk$n_u<\c{҅Z%mB U`?$lS9TP?H,ObGSgd{?kD OhYCCuSa?[t ewO{Y2وzcmO1>ϒ C2Qp}5QhmL״|m!³sC; y-糱@3hs]v%n_C5o+^ľ^ JEΧ:"̏eOTd"}|;(;kT< ~L>v9?~\OzD;JdqދJ@B. 4rLvJD](=HbD|O t> (k8xrPm%_诔ž*B?諔y{cJ 1@ G k)>>cŦU O昨8`1^3w"&Hs&xAe -Ǵzz,}=>s4E>'k硚=[#fc;~<\g :0_ŕ@_Y7Ǩ Xii>i.%#YVgĊ%Oj9_s A|1q~Be rC:kQ|ra HqQw+ ESΥצoCWyzwlj#1V5:Nt_ĺ~kJ1p\#XbAF@1,`5|Des՟!Bg%69̵bSz_kahC0 5A6Q'RrB};8}B}E aL`>0`^M?h^݅?>1ǟ}xri>bQm 5W}M~)45P9j:*X~\ ֶ'-rgЇUXc8}C0N[-Ԁu 5:j Z =3g/r=z/US9j̥AZC5o>aEU> Qc.n5k1`,E b5cis9w/g@.ē 5xOM1sz˾P 5A\B&>j4G|; $ZB-iNOM~kw~ek x7퍒pI streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F s00_videod':81E977DE-E02B-4AD1-AA6A-7675B4567DD0-7379-00002316C53A1EA2 2$xYp[^R&@e0`Y\-@b  7ɖ7In-bm6kf$K#hf i6St{sG;WLL@ "`0g$q9Osd>S*Sdl+>o޼+~|lW΍ɹ]&6i`z<2P+i- ؿǛs%:*ѡ V"2S.#[qDHCz-\Ʊ9_ AF:fL@u:?Sݹ;yh\XC6Q6>Yc` ydLjd>Ur!n,uIއ,\ʐQ戚tGBJ,(ރ hӝ$oߦ 45z[˗1^&諔@w 7Joa {OC#G]h}~ À]qIRz+dHrt$IJ¾RP=۳ŧ ^F!5Zf{{e2tiO=8De-By 497_d3}?\Ƴ]}9/}̏%ogzؾrP=Le˯~kFjRlAdQs52(I,f8Wa/g?ѕpA/'@GViy[&r.C$/wH-@pi|&ќ)pAѰ'Y^w \#j1_!!_w!C :u|y=5|oWsooHl|U ^ɀo+tO| h|z34zz:9ybENo1qjykbOXi)HϧG=g k=pMw7Md>+]PA9g>Db(vcx9ObǤtVdHhW;$*_dW'~9xp<' ޑj9T'$)J!m1֜-oz õTY떦gӋ#bC?ޖ{P:4H9򡜄gOfű-Rt ޯ.=i*w.5p"ܗHVf1œe!SZȩR 'GoZ2)|W7ƌ_U% Rv&#@ tSSDýh4hݩ4&zp'Jw~iN~kjX>pD?- h~զJo<ٺ44C:}G=ޖm&ܓ7'8 {3N;LP"S9:S@6g>]|LSFπA}u<gns߳jBp.xf`#ڏS3:9Pmhs]Ŏ~d{dcɽ`Sڰ~}1gp-EX΀O1"y>h&1+W{Dt.p =snE݆Y[谷H1+F~x5 ֱ+}l_(D"c\{Ě3Dma:=};+/g yf=z z:@0kcne'ZouEFYG'M$Ԁ\ľt3^/SUI83\k7-Q+F'1LX}x^t: V~*S;]XyN 2QǹCϜsQw[XuC[Pqcع %K:*D&I';,&*1fC¹5*Wt=ec!O>VzAyꩵ2Y]:cq6ñsOc_8^Pj ~_itaӋc 1裫sޙcùbw`ƪyʕ6{oto#o+cٛt5M&`ECϜsQ_ s]a3Wn^J2+co!;*kAC\sQ3(cTpwujnXg̓c7[oCkeڕ24 7hrѱs{Z V&ftǺUevew˚5e2JS_yMs98pM k_EDoFG I~ _a`U;bA 8#EF9A oG^L %È0rascr.j0#u٠nkg%]/V-uxy&/16[ vTs%an^^Nqh?d(%'uS8O.CJ2*JÆvFhi=%S0ژ-V&{Ub4$suܜ7 5COu6Z8Qp92,H 7w$qblquxcR/bn>v,h .1搭rO?_y-v{r-K$5I-"ȪKH]2?՜KQq5!lS6E!搮rXeɡ4c=E&:9ym:&G.ak'sD {er3́3t]*r'䣷$T&>' IpVN5*9t{]*%ʏʡ)DECmB^|m^K(P=Uh:p|3ڋoFClfu˛{ǵi9t^i*uQytY#18*Z:) )wu"hMHo+Nw6`CN;8,H;"|}֦l>HĚљrx?xt=̵0=PFLrS>JHʲpMB=Yj2BPb wNkٸPeINU%N~k\?Cw1̆DD(G[s1Ԑ&8p4\BP{QeޯdVQo9ca&I'-1&QŪu7$]&n*9ΡO5f7X.h+Cka4EqT,:_z-aG;^oĕ諘x 0mRG{~\ybൄ ><o!Z{PDҟn+?Z|ۉ/mkhu\.K}{2P1+*aYiY{XrװL9t[WqebYYo &uer>'V܋BI ^R6m*6Cq5Wq}^Cm{'ϟ 2ϕE/z<ϤmSq]gbgi+V~)h)i$qmESbYV)ՖV6Ùsk:WKڇWX/Þ-{Ҝ"]>SwMısdiu>3&uVǵt\˺"vA_C__DFv??c?ÎxxieY s(ΎOTl-W ,|w撝X/GU96|_%޲҄L&mh:j4sE¿ė*n>JۊEby&<\9!]?oqd J!Z0mRh C$䏱,Xeh?9~ U6E+ކy[g )@0>DѶ,tUcz${^iS9"sVܣ!K,]xM]|-m [?-G7^RkoY.{.|% }(HGêHN*3R'M5  @{6cNǘK`wpN%{F~s=k!PSjV|D|7s&QMM#퉊W+F W90;#ܘ?xm {wGQVlU]n~c0u07c{qCܜ~۹2m)6oW]3ckye[ko|0䍱GνNRǔ)~u streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F 7.0 applicationd':B05FB1FD-5F2A-44FA-B5AC-17BCA248584B-7379-00002316C534334D $x՘gp\Ǖɷ|$>f!$CE 6`c168 !L!PmSb.d5mzo[?jmB`$osyOݻ=)jc![Fh="`[sD6# z0ePm V%KoIx^E]9bA,y)SM254uyFԋVF;]!e [ڇ_p 5J ww@mcۖ.D?cFS_bS  l>炌4٤,, q_83nr¿ABX~Dx"g={ʱvcB.Oxe#vt Ð#kpPz-,G jF6)W]vtpMs בcK11XMzu(1\.xcLKdJֿ\Ca%M>a ?w V%c` p'wPs8ҤvJZOT|Ca9Unqt;ocLdjUYGNPlHƬRyT CyC!zVyCEL_`^umnw{Ӑ%|w^Tc ]O`17ʷG?𹜐/1j^/P9ԿxK(\:9na4X}C|1=OXЦ4Zre):"zQW,5{U*b^G;P]d9kT|f ^r:ۈI7eaJļJyA3H)yU._*p2T;5}I.&֜rǰ`_Hg!Ǧ9\{͗]Ggyg a-1D/ܽ|mɑi.Ҝ{gQqHqY|c{l;&OH]|貽'S|!rs2ϹXk.>OE8Kc^] z& }ă1ޔyxO3>~w< k֐3s=@s _Ʊ5f=:Y/T3 ]`C է+ >MPcɯٿ3]?Ip!^ h#8Z1m֙3@s ߉pB'={<~Op#ϙh`\8\?6Djhꌦ9sd. <'`IxmO\y.s-Zm<:G']r'峀N~u!B ruzނ{ߞdkAa|>Nw?8C0hZDO1GAG;ȳ|.xӾݙoFj2eʥr%ʊXqDGߨ,_82t Kbɒهs ƺ߉5 =Mʾ};ec;vȣn7.{n={#[d-vm];Mc};Wه3 8sԕ9cт׻߈~mӲ0OmFٶul[z 7pߕ~hS'mnt ?= c_O{x]7?x/:mu,zq/뾩f!k6r~5+v"~Ju'}%[x})o%7X=#}1/1_mgځ8t_ʖg~y ~܅ =t `[ܛf35?Ǎ VW}=>vgbf55g}}w >|  m:cx;/Gnr'\#1?<1BVM) ߓhQMʛ2^lB{צߤ%Y}4?F"yԟ}PgZ5?|KY,f4j~a_xDEcQI streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4FV0_ULayer 4d':B49D7B18-ECA8-4770-A48E-FE64CB968BB9-7379-00002316C5317201@Gx\ x֖INN' I$y*hͮE j{(EUCKkbUmU UEo]5ELHʽ{q^{}i4xzx#8f8P<5s&B(fUaYςaPg)P`B 8깰T}W70 5Tg!k8йSg4oCIE'QI_Fѣ[w ` <z 8XƐgB~˭p]\zWB6P,щi @U&;e>d={[xYs57%.?V޽ѽTQNրwfRPd4qnܸ  %ߥy׬eѢRGG';,4kON=ߺw c"2wq{ b6En'E.b3//Anem8?k焔uI_'v49Mߵ V]C||͜(bC;I[ҧy"[rٛ7S~ACXhqde_̎/%d`[/`ͼ\Xz/`Xh!e?O_d7Y㦕?:jezN>N~?/6iDQ) dHYSlD:ey/ZxNt%6*I/KIa+91Z\xQ͉k׮:F|i_~Wdu(urI/Y-իWy:ndf>`fu{@hSRFޯQkFA'Y*/#eEG4xmkGIyi Z-Iw $sتw۸ wQ}U^buMx4j~$IbW+͚4{,w YWmҸd=N<9qF߹EiG/1(>PșN8Orùc(~@b E+QA(eŷFK߳o^~$?-.kȑcչ?-أSNi g+A!>)b?SI$2cϞBSəLdY[7 +Ąr|ح[XQTLLLӾ:t\n4br`+K:sPFiX~z}Z m Xͷ-!+Æ ;>>>J^zv\rhժӧu/.WP=²S(Y %"sx*OCFzxj 1my=Xk>;` z%ovcuQ= `tf `|| `6m&ebccԯSg?L#W2S}XlugBzW#d@?n>0f,[:v-'8oʲh=_2`6N 28l3W\(>`RR.\fSiNX+Q9p糷$lw*s!zDQQQX fdM9 k`?#nG/Ql{/?|,8A-Q Wa[p^&xa4`|v:aiDdD7KLG|Z?}F?s,.0^[(W)R?|cC [a~tڕwWwZcwtꖲXbJڧ 0^!aJ6Xfz veF|?q?a8v"vה8KKŷ~eL``M:Xun]x  h3 Z7h>iƐ?uU} jOM7wMR,w8(%ֵ?ökhCT]WW7tÆ3n撕礔 lE+yz/ƹs.4"X`0p /He!5βViP}^g4ZΧ<_g=`t~q/Eq,%dp/չsYS'%->ohr<3F%P{ɓ'Qt&UR&;)S2ظҝc洩ڷkNf#Q:.grT kYѻ`<ԛ-:ڋje|nZ曫i[7m=wիW#_:-4 [S7YzJMi*½,CXٸ"a|c>?+N;\WMSoJy?a, ʍ[6bV9!شi+#\gMa$ j<,ڷw5cޞoCՂu[jb1'ڢ6;_oNeǏs1+c%ͷa+`  e#2~3Ժ~UJULA2g;o?woƥ`#LSӲH pMv#z(*&WSN M}U|Lewűc ua99+UbtGίP  e)]Iacb1fPL;cG#{hܹsuDŕi0o˒I˦[J7Ma QQ8p vډi'bQ8ftNf۷_@,ȚچZ'p|0XUb%s*SNCԍ vZDWqͯJ"w}S1ooT⺂qm!m6܀Gd%HYQ%شy~WhiҶ"}vڞ,\P}Qs.ٖ|Ҷi1|e: O|/;;oSf];}0,ٮȸVc_gQr_yx>أV 1g]x)CA ///Ջt٭Y Yái~ˠQ""_s!{1e3J|frݱcǡ^s)T*+'m[wKWY2faχk/[ξ]eF:<nmg LCއc7_94۷/7n[x ~ɷj3UeхrSv$1$AtTį繶:Px?zP3dȀ1oEmU`.q <;.g|u`RrS['ۉ0رcwڸ:oixj4:TB/ʦ꟡zj1 qKE.LP΁y{0*: իU?;=pb`_CXɣ+r b;_qOɳosWfͨUo̖gWa~mB$=?A_-,jq!uW{*g{×0x!}.ժU)۫<}W_=I֜GrÕNk:[}mÆ 1qD JJƪ26߰Xɋ/5qL=f /^ }ϝ,мws< A)Yż%c~@i[ +< TU}Leǥ_E-TCHajy.C;`_S|e*ɛFy!ZG3"}Cۥ-r0gVUkCc9wWĉjߕ2Z_XgAvQ%n}/Ҩ{xM,S(T\NtDt7X'6e?jvyog;n 5jg;jիg)WTS"|L=L%,c׽;c6,+4Z*Q0XAb{WOJ&'L"ҥz.YsEUyv2TuO(16Wlؠ{*8uvw@ضޅ9:/g#:"V\h|}b+W`ƌXbG[]v77awDmk/‡:ύ5 h_|]Ϻsy }+P:@JKU mh*oΜ9\^|%*{ hJVlr|wUnȤufC0|6j o2猪UIc0ql޼yl"#c=$jU$se9_@LHc)lcsn9%JP$ƽuѢE/9,Kş..^ LXRǟfÿb'O[LA\fϿd ֮E8<E/bL streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F 0/swfd':CE265196-51BF-4C08-BA8D-06EF79150A40-7379-00002316C52C5E22 @#x͘yl\SJhIEj **U[$ТJ J PB@U)k YdxKK;v'm~߽N ZW{}͛gF cهA2DK47>\VY'C8א8U՘s[fΜy8x/t 6.|t޸|!l "MoЉJf*e|L_,Dϵ z*?PH_O`!ݥ0֑`j-|n{8!yɞ|Ѽ܈q^7c=l*?YW5ZَVX~0;k|'W^Z1?S N#FxG[;)?,;i#Kb`g1Fpݏpe2?$3R6m5CNZ ŭ5пq|._kDqh1}SNo:p&b=F2Ƌb} ӹh.6 ŽXs@ "[p{3=?|JO5bS!h-;w 5s˹0XaLs,S>|glIEKN4eoG]!?íOqB/r)oQzݕ͈Z*)a~p1qSgEt?'N6o@LQޟ"=N9|ٔ[wVCK+.n!fθ|*7u8@};Qypmlz}ն~'Je~utyZy!7?Q (f4YÕr0&?m;! y;Qud#.u}=4[2`M)P{X 2Qk5_lP(ZBkʷ~i4.f=8Za4]:rY5n'ɛ{hAռc8ӱB'5ͥP&:4 ]oPo A ua8h/N;7vcemϤF}JH)TX_#FN5hߍphK<6gV֠l{(ۿ֢z$C͡5$ wscڵbEy-V#0 oiF[sU[RxhnfvDl]r^\5)nDmF~^8>ў 7̼ʻ+{ }'ތO\_VkBsKFyO+Wp9x/S;6l^@ V@ZMR7DyW' vRE1 E܋ }K#qN4d%"Hr^-ywhB8߁tVK2B5*+LY Aĭü5[VJL 󐜔@*))'Rq>}:b⭩bןľ '.4Z=ebї%6",yq/^ƼJpy9^/@/:leLfҔB;=!fy-"J պE=XRfR#iBMXJy'271-Di1޼DDOVЪT5k-:]+`G!~{eV0T0g2OZ!6.kZ͍]y?4{y6[̅7cO0VK \3 GLLօscNY&JiZzkP=w.+ZyhU\QMvjȚuĮ?g u^ܫ^qY?ҝO(**=đ{كB~'n1V'Lj:siF8^S1hmՆ[`+1%3wSTgo]f ~ϸ/ڝ7Q#b<ϸӋlOc/ZVȧvҿ{TG.c ŭeMDEw&%yhXyiu0>5@zPݙM??S핾j`۸<|.F uJz}=F3cqavgsQ[C,QA {|fwY5N5cMc'3~ܫz]+YEyϤf{yt1u"Zs 7&Qy.b]6r?74QGӇk̵"D?y"|Bwel6;m=5ϵⵄ ClV!7ɽƺsäoϙ;&Ji(Wg9^7Wv{VO|2ߧ7GP1G4QZLC3~I&I&d!@}o2I&zO~]=D|Aː>Շ%ik?uə9]$'PG|kߞ2eU_A%.ks˧g^|r& yz8eF[K"e-sȿ{IEP!29Z =5.T'PEװYvYrQ*øo%JgY?I[,).xn|~b%>1cP aT6Kgy<-bO_{|&J.7}2.&xJ a)UҢ+Dy.1n&M̘քq8JUaoɓS,i.:*\Ԑ5 6Hًwam2}j;F>󄹍O KڮMr![)h="M9^,Þ<Ԑ5 4$SK$]P <) = rpQӚP˶%渱X/nhHL'Ju|nF iZâ_vȚt .". @?ޓ}#x]sVa??G;v\lt٥ꤝcoB pΕ,?w~ijytw1.3v&cbƴX\8_Uŏ- Ԑ.gN7!7J(IO]&galډHݹ^z3Ö(ufŏw@:ˍ9x&pp$ >z 2]}j~5Zk0cm89ˇӘCHmi&Pg'xWco~յ2 eпs7cNCR[>8549]PC 5M> k_V9U,͹GęqX>QW>kA .7kٛPCgY,JW 2#I(?SmmFI߽Ѱ~(SY#UZ?Dis]^/&8uٛP>ȿ& I=k;|;,c0)/VZLw1*ޓu:F랷$w:?~A){9c93S bKv_ij]| @'`>}0К="qʎlU>(׃zKc6IY8Y*b6=~xp8HK mR+/b5!4٨Ōa2tA X׏%F G7I1,%\zlTϖM*" R)M{)W^yma_#rM}`# bOkȔ$=9IՉR% J[v»jw Wc*䝷u~4os`}-G36E͙}nC٦,} ǥ8t.p*Aq/jfޕuqN,Q=>Oj{s|x3A>xނst=8t&eOץgr8S8'm(j!~|&M~֟3O6yx& mR=k;0W1X>zF_( B13'ߛXPzFigK8^jMe?@5Aڸ67λ=sWɥd)/2֑|@b'Za?{3v^t}r9%Qw= ݦ%-bt,7}]\N)t;X`3C'10I9N%_rjܱک.Ȣל[ʂWkd++UG,XƼ 9?ϼaGտHxfsN^п ߖZip;u8,[~umˏ(~|O9l\F3Uj5F^zo;jkMr.Jӹnk2 dP96oKkT/_GkWZZ=A3蓛яu&5Lq՟!Q?[>4x;1{eu 6yx^j.GA|K eΪ"kSʍfGjR sANNOjj]iy2oUJYY(l*ͳB4[皃w%kV#;P~8?{4MCkd+ [[MF(7o8]agJuO+ƈ~z@rO˘}>O5ܣo6ByAůWJAΒv_B2,W\)=6F?t1 zxs&V\7 sW呵6NRx"f>Qs|Pf>^Ma%__bs3%q,8f_0`-Xqi.a W streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F q.0tar_bzd':B0B847A9-6FD0-4740-B48D-A08479CA1F3A-7379-00002316C5269294 /$xwpTIbb2?2L BI ;!`ܓqqW 0HU]VڕV}wUBTv]r}[ň7)߹}W;K4}NXX}X˜GtW%ə9Up\Jۓĉ .LqU^g|vE>qɧa'MԊ)CU\,i-EmI_@U㰈VlAK\stU%;?JC ]?ceEqt I*%qXjh/$\ֵ}b雖ČiCa.憰b9ۘ+rj=ewd\NU;zd] = V;8.CiZ`CD~wצeBgwoČi?l"5iG4w!w6jHdۻ݋wq%;/HQVߡ>a;1}цƦO\ʮ])$k-!OjE|.&sѶֵ%.֗5U4jV<iM؏cƻ,NjS3e;Vre%5h  k5hp<"^WuU<-|1 c=i;.W&{kj(75XsD#H'6 |=I3&oZlOk$#X3\_E*ŏԐ*gkNʷ ׻mh7m MKΘ0&=+Ow4iKM)> zݬ5Rw ? yyt^eH~h𳖏!^\VύFj1v[ P7c _Z+pyx}bp1\/}*.OlA zNwVaC {ә/ 5~J#L;,v+65 M$gJ߶VEHshXlM7H %C Ƙb;Ҕ4@W먗Zإ]!<6hřt4ИBW!kWuR%Uɇ@TY`-boel6qC7DKU).<.[$=]+ֈ5bd[+ߗőGs}YC-V#H<1Φ[ wxH Ӹ8jDo㛤,jcgnGX~Xi:r"q/ߡQ(BZ֝+JuD-RͨF)$Qo2JyV|_^IC^v5BӰ/S\9֦>0}ZK'֥){ᜩ)" _K-~T]mU;{Wˤ9 .xe~s4os `}%Kӥ:I<%'>eEb/ڇg&Q:3uf:Ai9$ |jO۹Pk~C}j%3܆ ,I}xNHKaE'qi +TEtV#^̼+ng^z|lfç%O g,9}ւst> te$I3Y9SI҅|y[kFֿP?P ]>Ħeke~O_s<a BM65c 0Vkea 8 +,}~9/5FA?C, = &9 ȝ1p} k^ blh&HsM-oO%r%YHJ u&j!Ѕ |iVXm޴]c zFc$F<=);蟱HVZ\咻W9޹VkӉN GyV殨p Kf,+T5xZ2` S<GVcMj$昜п ߒZi;yӟɗ;~޵-ˏ,~r1 aQ#O5y#Ohڒ<7=4YMXB9F'i6@ b[S5 W+M͞ kXɭO ƺBd Ѣ}qpͨ-P<Gᘱ,_ǺeM>=B0JmAh]qK1.ܻY~p ee6԰v0/:/_,S8Hf Pa[ꟲf?5Cx4a>+ԱfPpaµv ߲0SfW^ Lyg4qa|8fX cG6yJ^\UU5nR{|xXǚL9C' ~Zl#Am<%Mzu =,XY.y%8K.XY|yXf,ױ/)Pn|$e~ c<9S?G,η 56LP|L{:OǚtL{*-òK9b/acy֢yJ8&k|qs s{0>q(>'S{-~]hoIx mVKJ. 2eQL;wBsp+$ ߷ <oX3&Ll19X j+t`^N0a^;|;0w•s]k„ױKK streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F .0Mtar_gzd':5AF3D56F-0F22-47A2-A385-5F0264522DFA-7379-00002316C523C5C4 G$xytS+v?zsڊK+Jm [==TV-.Ŋa AI I&gL2LBY j>7$Dww~w&K4XX}X˜^{T'ə9Ux\{I.LqE>G|vU:|O }3uvpgHGEJcQ[-)%P.ގR9ג/*dyQ%װ/Xdɕ$:Yq yϙ%qXn>Hkd 7- \0 c<%r)O:bt ?d[fڟÎgJה/BmwI >2ܒ5 5&KJ~mYGH鳲061cZơ`[0ɑߜ+҂UxL]9!]klHc? W6.%}]7tODic7\ʞS)$i:*ّm+aw.j%yR =ClRK>\=mëiLCKڵANV'uđr@|m/F y2ܚR՝5>XU>XUzO o]*fm˘k>A̾&I;?Um [&xM;$%Ƕ >Qf3=A ѻo٧]>-5Pُv,f6c2p~g!)=]>wшj B`MAϯ}pL5>Rk}&ChXvo&?U RyD*pr&='j财Ley^wScObq7eDi9*H|[>B 58߬adoB <+].XG+}:?.yGwKuho~IRn2,?6eOO ^[\gI&J9`|]x WAք&5JZ"ئm@c?ه n̍,vXOl#%d}J΁uw)tؓISާrgx;_Ě꫿9 &tu:C@K6PLj33BN~6)dGnI DmR~|Gm[NqcO!mBWgn234jCpSQúd{؃ⰮH%\bw5,E$jCsmR6kvَkX7JMiL/LȻՑs{ej>Җz?O6˜{ ľt9eK3#T%ZLQ[ߠkJm:~ؠ`|w&CECwc.f?a.fKCt$4DJ}vxf>j8Rk{]A:,͹G ]Y|j5a-qODsf1RwE\tkѱ NUIWU<}1A;M\&ΉŪQ->O|Z9y&Ȗs{,8G'隓 N@g< |/C|6IzʙZHns2±EZ 6- XCp.[Xc<}@ cj ]m^1Xc- k`xd7G} X#OkloK~Oc?[$87225ZQ&97ݷ`R,Y[,e:RWBL_>Z+aOڞq }'W^53P=n~ЃmZB"@zRJxM!ާ;FC렞:ywqg(oɼrj;ުS tCn`k5ʼU2UqE#CK}jcۊ3oؑ>!//9آrb9 =i`|骕>w?GY*?7R~%bt,IfbSJW}ybF{hӗA~Y?^-;$n|8EǺퟕ 1Z?Is6oM1N-O6߾T1V40f>c'<7/ M1|3G>}~k ?WC5~>|ilvWn͇br VD(# zF֤O[g]l8˭JYal29`3t<_p =jX7&ö&?uIV`]wְ~-6 ЌP~Hǚ\9FZ.ך 5ZԆLMkMLy Q棞8^1󡘅c A8(-4yOGU;kmӈ~O$6NN{AlS fBk%͏ejR s~:OJ/**])d\e|2_RsklVk~L]c»}b􇢅 %JM|?jjsşVZ$lr|VX1kSE @h3@iu񰖐o{4O=/@ /Y¦v[WdkƲB冇R臮>cA_s8CȂ9Zx?{eYH]kJ/'uO' ߢ-{=kq!?h7Z<^8d R:q_H?wqA$xy/&5eڒcOZ M-ϣsBJuiKL]'3Ν>r7u֌ }'8[La <}~5>vy̋~n  續WXrLo streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4FE)#: folder_closedd':F05830E5-724B-4560-9AB3-C00DC08A6E6A-7379-00002316C521112D@x͘[lTe+H4ʋ @KP^iVA  bLըi;LolgH93NeYg9Lrͼzڬ^uS̘w.u 3n>SW,KsGtR%^"zjI(V?T/O̙}mXsI.^R{R[ $&ڛ$Z9Rbe Y0fm¿EwRŋ^>]h+k ,#+$5 ?vRwdn&KXtfSC5K㭻%zh (sng3$xG.ljvzF9PuA|e X%Cͫd ,у2: j/y~PsRe1P~wZ7͙ʏÿqyϿeM@ƾoFAss SQ3ρ*rº0AWmlx??ǾmCu՚ZRѯ 398Mmtdwg?zp{+67{=&n|U?J~GJ+Mns2NԁU=1}Ml{mf|%O慪 Ώȧe-SPKԘ:r51%9g4C߮?䄶O~/A 4)15cu5'cKDϠZΗIW5WW؉1WbW"TA(:s}ѣ9cGcw⅌?Z<b ~20I}:J*Amtyw-z| ~BUœc/lŀjV M ߔgwPV6@H[T@qSsXqbqa)oD>[/]\@wUT։ї<{;~Qhp[|깬 9m *1S5ós\{֩&WO7˹[jjF@ubcAMՍp?G9cSef5rIRg̡ >˜485bT$g55`_)v@l/ c˜b-'89+7N#6͒b.rCw7O)%zdvfg]ᆩk` esFUJh8N\T*;OHtbd 38޶:q\p]~>O#űV1ߜHjaT>sG!Ilꩄ.הYsqq ]1ϝFl5[O1lVǙp |;.N-xPw2_.O6Y#3y*dx&K`^ s^r$>_o)/q}%>go/q1nD8b#>u^7Y-_uaU? )?`]rٜh6ǹghZy-+k@X߰VqOL3ڌ#?︉dak~ZCWbzeeu+)7b"gqZnQk3IL=qjx̹;OtGq7y* ߫ԯ_z?Ώk^Qݼ8ŜbpF~VU;5bDy^.b\5 c`Ծ'xތy7ź2+;;AqU?ة8;#ss?)FȾc8YwoL]a/⼺5:$g424C]5ǜc}YDd]8/!(>9]~Y~o:CȨg w\Ϻl_{YuU!{=ҚQwɏuoK=/ÎUbbߥ;yʬJ1>i¸?F1D^SO__ՔgAε!a`\5R{c#s}q_Wkڔ#bG~&^jy~B~)ǯjZ/슮{^Tk c5Z? {mk_oۄ޻e Z>欒^׵'?EG֠ I^]A streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F (/unknownd':D178F1A1-DEC4-476D-BB2F-37B457F2FB7B-7379-00002316C51B6508 @#x͘sWEbS/TQ#HQ9R.(*I11.}KHmg$i6Xi}vZrbc[9;ݷo%5,+ KX%v9䕥,lOd;~}7%^iY 7ɣQY_/O;,In!,ٙIMezQrˡFĚ|$7/]0 2Dd!XC 4er 6C:ž$de]kp$;(,RGUC[c7:3bO'0@UlQ3X܇-ae֨VALZ'՟K&闵X,?h B͚CAxF{eqêIƯ{>;7x&:e>*F-}y$WjeaוfѺR[xnwF$gԝk.gf9`l 9kgXBl%isj3#\ԤOyU?P~LHt94[~g$PWbMXjT߶~juL H^DS)bb{OsuGN Ѽ\T6FgoIᤴ]ܣP?S4Dbxp>c edr0grs뽉zU/2@uusk'3K>yŷU9DpF?7 {wٴ8\|f{K1'ω}6ԻiTsY 7H&T]=7wit8"3 xm9$rZN\?Φ r/!~W K"&k8?\A&|7$rSRe)I|ƃ j|P֒3:"}m߀LuYRV[uZS `YwrXÞnsbC/ vY{%[!ǤH?Ini?7lKJsV"Rܿ&Ż$}YOGmvH+:ݪ'njRFؖ>HOv m*oa_@{׵Jϥ!2PqDIͱ˟AZAe b@,CqۧfKS_&SzC'?~OyW:ޛA T`M U~rD7o{Yo_ƙs$}1>p|Zypk`/Hއ?OwIu~X` ]#'$%;w|o'=Lu\~;4wb179 g"8?vIف]xVH9pV 6XE~Y&:Jkwjp-sϺۧVZ1-fҀ𭒏4@1ỨT4aeܝZ|UIRi6|'E=mb%nç%O L?w5i:[<'Uen=UBg- _G Bxp΂bЕs@ݱl70TLKX5u'[ ן#CkVXN1gMnz#֎63} k\jn&H+$h9:-5m )Q$9P1Go:sh 'O4:2r+޶9:ڀcpQ$51cЗ},ݎ%-h_XjJ{ {g݌·[o֟4ih'0:odOZ98+֚#~GKq: ÷$DZ}95P:gu ]}U=.Ɗn^='N<~Sok?XR-ĉ}9F5ÚĉP1ЏEmaB65vKu;8c960(3H+C|]CPWK\>/b:` &N}[5&H+D1m»1Oܾw>Oܾ3I Om߅XzO?h65)G}̩W Su7vLl:'˳ ¾=QǾxiv ¾'{sUzޢYaAӷqZdRTؗ묍98V",t Ɖ1N8>8mjOMVPa_9̡8d/c{V}ie *kձGנbw`iO/Z'@m>HAڨ *˱Z?̙_@Mv+5wV5STؗcVC ¾1uj p[k@KjBO<UTTk߀o[Ej{J)*?  streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4FMASKSPREVIEW0Fxxq˗f;4IiN؎ ^7\ިww !PEH P ջD;={*;93;޽{v;XwH(πKX%퀶tgKqj(5~{]v7.BZ2XE-͔%'mwK]QJ=r05Ro O@~/)%pY,uJ R!{7.)J[U%tJ1Q՟ PL bhmXkq"eqrp*P͋-0MпK54B'|m[Xݡ$;j_T&`)L]ks#%-j^ס$- 0CrҨVALZ'I`O꽛4'N J]CMND- -ۨ?C9V5db.{ j[WZbpZ8_NXb>H\9Iu܍~8W䮕#;#$/_v RR!{pmZ&{IeATǵX]WCІrp߿Quu{ 8fl 8)ʈ%e4 ,$qGۉ& _lIY=7K/ *|6&B8)+U;Ɍ6¶:U{qAv Ce٨Oe鈏e o/NM$qdٺb$N$-xdj\?VkS>-<*Z#B%#f,)(^^> +KH )YCfIo&η ym񋠟4[зc1' k5^/kdɡq2Q#Jak#Yq%o\1knq>rFgS+-јݶ/HZ!Wאjo^뢕 Pz@J0l#Cp$x&4ʁNgS-%O L ~=&Kж:C2ԋwK >3H..Edߡ3ֿ?v?>Ugmnb0M$7aImhV\1^aj4ljf6CUY;ҥ?7aƝs[bӚ:q_>\?|b8m}AV8cKԟ>8/aA]-[min}1~nh9:-9\m -|'k1|i1݂u_\8-wR_qu_w-ZçvRnA_Gm[BТ&HsDsn[7_1}N$ f?r6gخ~ok:c>^Znu7uض/>{#g~s:ڛZNF:=xM-ql&EKqccꃾF5Úĉ1@?1H [px=Tހc,V *{׼ؖfZه}+mL:E55BMV_=uˋj'N߉3N'N_9IO>z]駧hmnO8cL]}1.XwbŴJZ}jy&Hs/^۶ ܏}]@MVa_S׀c:UˢӇU6#Nߢ^Njin<ՙa:cm:DcUOl cijOMVa_]c(C}%IS cͱap.OMVa_]!-9hmk 4Nj b1PgvCڨ *m+3Baހ1]s4MAܥ nc2cin6;/ ͭ¾ܦ& &Hs/x 9ߒ, ͝r^@͠r+ܩS,~йmʈqR9*:rQVVk_#unOVK-屳c֗/.v'B€?mm7E~2 R}X 1X5u:a,* ĚEԢNwAΒ6VO1*#8UF:ảsYcֆm6v(&6^ro~P]BV캱rkRQrMus_-uIK_@K+xO ئ+ lO]jAlG׎,/ۦ~Ҫ~?}˾xm"X=ێU[AԢ^I71Mu ՠ1>GG;QpOҶK._#a>Kaa+V33h.՗'1J"qY.9(ǧњM ChclrX GӇuQ黶ԟ26zqwߺyR2e^YRqI!m4Ԏ#'+,9E&m 5GmET)Y1JW S[BHKi:ښn l1hKf-Z{-_5Y@Klu0ZCk۰xwnk ޓn)"1QAPh],؇>uZ'|66ԟ8=᳤hr2ECE>c qچ0F4NKܞu^:Z` |>On;vZ>xۦ~sz֗o BmX#m~D,ZGy-+Y9ca[e>ne۵`t[lG^Gq>+'GplP5ubb-c|s}e3>V|0%_cSa4_|Z8-1kO+Ͷ3k~8YmmԷ@{!>ۉցmFPr Zvd(ђecN2&x |ԈS?v91Y>iD6Ve339 O+(%}/Ұ,Jpk\ ~}ˍu;ʋp@fK.lB ~+.o/3ǂ\[b b/0oagu`DLamn60fHm0g93e!vvh9l C~<|*Ѻ2 -[oq`f[qi9~Oo_o]{ @R2~oTO{,),'qoߓ{@,=|O➭'qГE;@>Rx9q6|̉}qxPfG ?䡄^4G J?~.*ϕGk>iԭz^x@>Kq;^{||Z>jw$o>8 秔i_Gʆo-{5K)e|qu\yd'A <jg!s=,%e[Ip Ο6yoHќ d/?d;؎uC#dC\?\93,a=#7|?2'%HպJh>CI#51col-C~𪰎EɟV@x^Կe۲ի{_M@JpVץje!u^#^{p d vxMj*ϐu_ ^Qoc"%[LJyh̯;pnd$Oh3 c(q^CA# e+p.q8)1|- z1g{}K zUP/1q~^(5R}v.1$7*8~4gjtDzV9]B5k /rO)KG|8)at-A #pO| rO)9W?&iq5/mqCtἜ?ŐbaUu|FJp~,䲜#o 3S  sd3|֯y,{|qЉFAf9WGKM&mќ@ʮ˼OV m 7+~7rV_bx~-]Cx]O}w6p,\qލc?8yCHl@q~/^;K6=ɟym% _*zXfau2soE;aUSg儹V6̳r<+'̵s&~$!œ/sMЍr-rbӅr ~ sZ*?7~N(r7`p^Pׯmr)OOOi|Aۇ%v@yϳ|ϳϬxE8n<"0gcTKl)߿[.g2u!7,xz|̻uE=l$9۩ԲX3mNxV賏1Қ8\?Я3̶x.)F_jmPWvV5AZr.&}]88V-ؿgr첊 ^\Ӛg B_h%-~ gr+v("AG=M1:7DZ9CuOyr*wnK\:C;]{:6P~i[Ч6iзgrl+w?.}|[ޒ>xS7{{[}w^ۯo,oexula5zӶNsvSs؜R7'T8t7|I|Ey .y9l|9oԧaM`M{}1޺wGj^'NK ^{yyg䙧'xHoѱ9Gc$:b{ oYs<ê:kx{W : tZ_{9sϪG*x5?9\_c{6"؜|@55K/Ax}gG*sl7Wj>3XoYs}JL^6/ޏp6whYѣ֮+ oYsKOˋ/>Z+>zG6us4hikjWks`[sB hQjh lF0N96˳S?c5Ԥ c.͖ՙa귦$]9yۋ7}ڳ96\=s4N ~ZF֞Eȱ9 ؜蟣:AMAZ֞Eȱ9 ؜g [{!#؜#;).&$ ^ߑȞvc&&ũ~@U8Su> BsNDtΝ))yUKX%֓uvBZhmr:-~ȇHB.A`.*9XGZxU8^vXm[%Qs%yܸ᷸EM`Ug>ËZxe8msDRO[2I}r h^mc5B}Ƶ{=5W%Ap3@ZƏTG}.[q}$wSgÙ`"0pR"k|4FT?l[9Xf:Ioɱj"hؾ9X5,9rY')x*r#gcl/yցHkP?# p NJhY8s8"@wj! o#USeK¹h9 =D0|Z:I—ùK [dYB߉c#km,>)hкCPp`!7Xƍ#T Ir43Sp%f09PB&e`bOY5׈O'3{rx^#[s}T\iFXBںj$4 F[دdV g _K>" WSe jOa hgх#Hm {@jl<w8`Zd>@MV{rʾyF?xy@K蓍Zvn1m?|a16S;j0Iߛؖ;GT89;ZWK}裯ۨ%-h_Xj4JA8趍~Sm;m9zco.R93l!oTujQ.߶ G[qiV_fXo,_ׂ1u]U=Dsk8sLo.r[c&Eo'T3Li?M3 㻨c-Ƶ2 ׶xĈoٱxZ#~0-bZvbRay -tj^ }u1߀ٯ9-7y@@m9X-^׌!w'WrZ*hmn]8.cXoע/oαrZ*˵ZO#mkh/rZ*qj|l1b]}Я>bhqSi[j/a 1 A hmL>Ma_G%쾪>5A[}C;-ONkMlk9X-jWnqtF qZ}"uk FrZ*m+32ހ1]s4MAܥ nc r]P 5A[}MM֏'OMVa_^?9P-P 5A;&A[Vйk"]@G6utzPxJSlNKl_'ʅ{N "{N qxufs+/LW<<3ZWa|^ye|CI&-|ʍ~KrR)N\%EX 7-ˤp $$ݖ ұCBB-~&eOmkH>,b6m)*6+./U= WEI ˕*|'J * l*,)½{$gپUIWr>R^Z*AAA:mDsj8,\RLtʁ8_NwYhLK]钗);pk}RJej$=d/3C3;vᳲ*=RzN!SDV3zB} &NLݴ7?b_}qٵK'EEȡ$7'GzLKʷEHjRI ƚ&d%9Xo:\ȴ1qпġ D+к0r"#P{@-s7K[RZZ&;3䣗^ANt7UfNicei2 =Q-Mσg?& QSkA[_IuߎѢ}WΔs""RAmKp;|r).)=yyJNx ]6CzG犏^|?٥c7_uҋ697{C2%)F"#{e +{>H#[e2tTy-> #~SdT4u7D?Ln]:T*y΂.m =j}orBC6yKO?Bsr$䠬ZJuHKi ȢуeѨA2iyy w/", Wf#g _8QGp_SZCM+W!!o>Xm ^Lߑ.UUr19TV"3'OgSReApP #SKqskO/Kӱ/Ylo6\Sз\F0NzUȪ`ϗWWN;d]|ITrreS \+w z_t734Nn[>Z~0W}>#yp^?W-Z~&Nsig ={妑*c ,ߒeK|%&*ZR{=ސG#?=w_ipOѓ''Fsyx4{xܫ |/%vkW++u ɟfn=ޑ^xY}EvQou ˆurCyC0x5x3^pW=^l~ZFrWHvvϛo͟,y!;n_yV~8cy=o>#\7frCpc(av҇rOޖĭi-jŊ咕%qoCny.H{H^~ yW>/7y_~0=zruszȏc U}%{Ɋ5LhQٽkrדݏ=vMLn,aؾZOOɽ:ɽn7ܫ3++/؈-OiO!OnW.O_c& ͭ\#m6Lكl#u90賏̽;ϓ;gktٲ\ۘ[}4~G^Tm\:e<4K~|ﶫ1>`Չ`m= |i1݂˽j0IߛؖO:[)$G2ч}i gBu/,5A[^Q_/ɛgA$[ iٟFM>`tSo .Tim,_y4^>8Krw\ҸW68z(1"cP͑l/?ێDɝ%ksY|md~E8qX'Scai-ؿܥkmU?Ʀ[W~=1䯇#]CWt0ك<%~T =bM5Úĉ1@?41͖?O{t X}`=p\Hmosi0rZ*s2!xAog98Z~!gK7}8ֿc4`BXÎѢ}Ԯi6)J8mT\fC_*cfɍX-YK}}Wp6Ar6I)c4Zрց݇yKAkW-Տcy+E?tjۃ;CdŚr)$Ŏsя_k =j}frZ*˵ZyOorHV ?ZDWˎ _ ~09Km}]@MVa_߈c|\/Сr~ y4)s%gq~}1m4Ӷ{\FhRxӠlw:yJsKMdi I5/khMlkWvkrâyt$jӾ`r(1rݺU?~swA^%_xo2]/~`?Nj bZgZ˽b{߹oJzrH"~\ 7T~cjK9ԏצ-8v~cma4ٹųϾ˴OzSc+z?~Mu*kfqL| <~|?jniO8@NR7$w٢ϤOo ߫HY:ꑃt6zOꮌ,7TM)w)r9.`\xT'[3Y_{i,is/LA=?[ɽbO]7Pq=m\8^>_8_}Mh_?ư﹉spn7U]mas ѿ%YZ%?fUa}Z pE ve/Òd9k$o8RvND1e+&| KooXI5z˕kϱZ|/ ܰW5%?;Y\ë^x~sǭrߺ7L~GU? ?=zw m.xO9rJnik;a]a<3+<,q:ÂO֙O<3\' >,{5uXO֬syX;fK?unXwÚ9s8ߵOnkf;:%XFLkPʫ"i]uWkD8u ȓ?$O<'ox8}ƪ<~{gbnau;>= 5slE?3"5iNg3KU"E՚ `YVnco˱Չ9av waN3[O>{U[;m̶2\1`^`|/8,41n,hQ@::{ͧq%oj m nmsq,ԯs;-=m9zcw1s.ןMpoRE E} 5slE?[jgN߂W6p߯=aT&=9Z*bs±? 9ah~e.yLwwyWW_}\*g)m c~\sp.p>, T3Lio;_z1mTج{ҷqsjf.Ǣs>j0֦i9.:b 3;_xQ)?c)_n8f˱Sܘ>`Z{&yX׿+/ӂoG+~ց݇9LAsyX_9kƦ4|iml8V~]Ċi?bՕ{7?RzRz,F&l,,܆9.ǢQoG>ЮPLm%!^ jmPG;fñ~9&ynǻJQR-^Pv~1qԹn180/R0j}bNNkřKCߩ.pϹRLh2\۹18K?j }'5~&h.{Ȳ` Q76֏6q9}6q>֛;aqqdpEchQGT~[n|w})G|arGm2m-X> #\7N7&qcͯq;w:7jѹ.l}1=SSeuZbh=WgW.+߾f \$oU!# #u,QkS9U-ʐ?W-b6GKqT"9fwա5WKQd~M;N6"h{Hk(¹#O}:Mzk/%c9_Hkʓq kӴG.[e$GCOC]r?O5iAq[ꭱ{L_ꃵa'N-Igc2Bwr,8";cw4y!o_"qAe G-$K鱰`}bjvN-dhIš\)CU >[:*jm=#k`H XS h݂u!g!*/NXqUODcv^*1[Oщި-x>(Z5 G=JwʻCN sK-n[abȅg?O_c& ͭ?v>i7ax1VS6c ϴ9< ~ǀ>k⴦vgU[NzV3X8ÝѶqXS>uLYB6e;| ͭ}8:-9\mNg;|[ǤqqZ{ m`gU[N|:ǰGT8:ZWK}裯ۨ%-h_Xj4JsJX:Zkf-OFNø3}שwpjܶv;C߂W6ا_#:&r8<#ub7ah^ukm7;0㛸1GqX>blSͰ&n0qb4G>Rc7`+}cu;F>MP8*Jq}8 }h@61֚e7d|Y}jG9Yi>3~sWmkܧv554Va_ZǸ]wYAοj/a φ^NNu1:ḁٲV\5&Hs/W1c(C}%IS c|m.¾|W m9A4nXkO9^Ns:}\U[}meF^?0k@F)ĭ9x4Va_n j&Hs/~ *^r$ j&Hsľ"v3h :w2M 8ΝjOrJNik;_]~̠|C~3G~k oWY'o[W"KN%ж;jm֝cuDՍ~KhFnqc?C?~ql7۱tD!ͱh#~։۶вuݻ;w;:huc׊п)ȿ4v9v$l\֮֫5l7>Zov ?WA߮`Sϸ֛C6Q^1>q߃+^I_x%U.Z@ c>l#~v}.b! ?yu$=Lsè>-ŸwŊ/Vu$ߡOCοnwhU5WB#\$hۧLhcTp~{4?MAܥ nN{_'ȳe:+ ͭ¾Ɠuߒ, ͝ɿ8SI_&?r ͭV?QPY sk6ܳ+wa1$#1IDzyxr]هO˾8'2g,קdϱi}7ޭg3]fj̉FڀLY ]/yrRɟK:֓\A[1o^/ߌA3,aݯ{vM_-fUݳK,]#07udIRc%%gj_@{[S;-g`qU1V "◝s~\1O\K~ j}f\7V[;V-a柩XS&Hs3=hԷlS'5ӹ;9cW@?`eբƁ n-S?_>m˱OG\AaJ=*߇~3GJ-1W`n`_8sL?{^Q?9nK}Rph[:E*knqW:6g?;NL]1@noh<~9a~fb5{jFuXqb x{߳z1T!ڇ}^\x sm۲/}CњzKɛ;൝>i@6_?Qm؇ h]8{!ۀٖzu73vp?ҶvK5A[}9NK9c.ˢ]9cl9'Ĭ:}bNNkU|j4 r9c;-ONk(Ml{挩mba5'/Z'@m>h1t6q>֛5;P 5A[}'gߐh PS<9cyI9%7a zή\yL?9BtM9tT5Ԃ),B۔Ɗ mSXh݁)q+-6,o[$+YB1)q+ u-[iYh a)q+ n',NKX>,ib6,6,NKXh -aqڦtĽX(6,6,NKXh -aqڦtĽX/6,6,e}ZBKX)>ߑeي߬p'炀!>ᒵp7zFܫ=8`娏8dX>R2}Kzs1wj-okpF#%|mEpD|-_+S{yQIMCA%oD/9R#x`qv&{;Z3k K^ .$gFd2ol9KE8Ar}e嬯o2cg2}9=1G.r/y.O]3C JEK:9\Sqφ8_)+VN\ Mʶɞ%#%bNoyrJ+2W Y ]ɓAC8juDW{?bTnX9z K3koQ!kIiq)9Eno$GxJr0ysoq04`j~k}\-Fjv w & Jʍ+,[JCʪir8X=!Xyޘ?^1Z\v]|=rpPp!,j.ְP*Y1P*7c-rS bKv/gcCoku'r"UBG;e<MMVi)iϪRj"0!|&^R5X!fFBߩRd y7h'O}Ɍ/)yj)$%@qPj% bIA;hkwRDz ĵuW7o_I (8p.o7cJG08WںLV;=PМQ2kne|nD9iQ?9n}kJRL}:U/`xX$Mtø8to}??F2q>G _;hH̞:2E˱Upջ`ٷha =3G !zzmګ"3\jȹy3p[$NP#5r:a4U{w5_Kwُs!7f|˓eG,9kޙGUwq3ēOLb;8[Ǝx386bG,0 @ FZj[-ԭEK$!w}իVZd=r^ݮ~UU~p]~ӎN?aסo\[viwtk}n}@CuLܿNmz}kYW=uAπ&:&ئ5jگM5zi۩{1w˿GrSnըnO7qt ~5c-ρ,5c9Ӛc Wֿ[פh>+܁)Bcv9m4W'Zk]yU;\烥&VTc,c˶W zX +n5Gw+ޠQ6i3j'I3Wu@sknq7y^A['6a~tu?=4OlyԤҊjRtL<'[=gVK6yضEnߚz~=o>q| [m?3\ н1G7G}s5FtМtL\r_ *ͱ:V_hwy u]fāc/ɦE@wm[ςrh~KO6dȑ#]g$AչƵyl+ڭڵ,1" 8@n ^vi?PvM7o?t\W ۹s1=Lc'aL_ZWctqha l!BNK?/־Z6mnK >h Æ 8ǒCl_h`ke_ :jq<9r=M3=R]w;qo3ߵY+_{p=F=ސaE $GL't5ͬHoq;-xM׿m0fIۃF |Tnۃ*֓H#XvT?#5ݼ\,R̹/y.{}5iOoVr@.I)0~k=ۃ*VH8S]|B_g{|>}徍3뫫H{j]֚=~8 rcݮ0o{v7AnIzmeYU{X3y3TG7)wrbӹi5zN\~b۶5!v,}EAHs5Z!yԿ_ן<1NƏCcbH^;My^k':m_Uo>ok_:Ef56r(]kDsx{3.פ#:_1ڇI_a1|auGGz 1F?_u5͵q统fz~$\Dڏyk&qo(+KM*VHVz</Ƀ״Tu'1yxL;Tw˅|)B3/1DkM>{.Z_st~%v7[J3cc˩Q%u5qxø`YƷn~: mฒKԯ=DZV?s'6NV9jo8C+G,_0JǨ~st!f|Ti?Cb(9|9WBgƞ@/bș Fa5k>$}c&c. t_1Y$QATRU\GlOn5P)Fm5FV|jRiE5Ʋv)+!OB.}BgSŠ\KҰ`W!DZcnν_X>fxMU¬]!bY8u,P;c 1/IU¬{ݽWEӺxg-|!?4h~&>=tl9@ ;OUZbb_0fЏhwXwn?zE_Vxgr;$i9t$T1OJ}^w?_}b;̖GT;~G sfw+qSFew?±Oy I}ԏojܖSdCdk&Fč7E1nawt㍑wE`7Խnʍս>&nC׻iGVM^U!i+V ?ꐖdY%u>zSmU_maԌf |,':Pt{2N.tLyZ:!OK\) pIsI䇮2(dxbӐꯦQ?Kt\l?%/-𠞓F vsG rsDž7ٻto_ռ@UWy~(#-5+VuvF߫|HWVIELX=ÚHCސo94PJ+ >=M>ϯ/?ˬ?=x }ԤҊjWk0_q_0'/il~,0@;~~}ŚXLe.>eVqXRJ+֗ $as1}lȗ_*Fg3ԉ|근0->a+G>3&X.~/~S:~-/+: X4_0$1XCc~qzy| Ǿ_>yWf6895_ocə 9{ 0[ ?؀c,̉v<)* ߬Pl q|x7SNUz%{|n;rVM'+XubX|Y# C")K-5ȃE18EώM(o5ȧ&VTc,k_QuvbN5rlx*d\#Eh Ns&VTc,{9}A-ԤҊirP[VMS|Y B_`SUZJWkzC1Y~ $}ZE9x3U?'.6q鯰7 s1:wZca!^,+jÝݴY11@@?'CPu ǦTRUP?@lJWD m{8߇5cLJ!ri&VTKWT%_cRV|[_6CsDdu!_~)_Dy,s/_~r,1?8Ye=>V^q4Y19 9sypݩ>at:ޣ9 1Y6sQ>Z}ExIp^N`%EP 5bZԖUuT_|TջRJs1A__}1hM^z%k~l>RE]v#cl |>RE@G?44)%& >}l ܨG%fL ؾ_ѨzKjRiŴTU9-mih릩 ,c!/w-_5Q[  >烾$}^ g-7z=ї/C7C.7D_%4&@5t 1 1}cC @} c۷O$G1/W]]fOC{K]?=QӇ+/KW*_T9~9 TdU(C1cpk:'yC'@M*KjRiŴTU9-mih릩 ,c!/w-_5QRb_a0aA__59l>Ɛ/D_WU BjF84?8·Rh4mlnŷe>4G\lLDx_'8RUX]1X0]M2%门_)R0XߏXC+G_8==>%֟꯼O \}Fa5kT ߬Pl q|x7x LcĖ9FcMOEꯘ@ ? םڙ9MȱJ=3^esQ>85;WǟTZQ?pg^RPJ+AmiK[E[7MUe ~MWk*_4*@T[5tP$;{,1y,?|j믨 ub!d>IWԁͅ|.ͅbd.XH'-y| +J1P'6%V[u6;//TUNWO#T꯺SUR(_yIR?_טT֗ $as1}lȗ_JW=cuE`t5Q˜ Ɨ_~=K}oOa}|?NVcY?;}xX>93s!|fSUz~N;7|B91m\"62mhL1`.72͎"[ƲOpW7=MaLbCs5p\^(\wjg.4OX#Ǧ+hxBhLE>\`+?G_jRiE5r={IBM**-mm4Ub,6_Tu>Zj/A~a_:;O[4s;;ieŅƒORmoj-nò nk ݑCGܰOL5?ORm񁏛x}ֹj {F8;;?Fc-Ƶne_j^߸Ώsboۯ׶=!qݒu31%V[E{,PK<r6a5%¸AE-?Jw-y+>|~JWZIߍB5GP?@lJWD m{8߇5cLJ!ri&VTKWT%_cRV|[_6CsDdu!_~)_Dy,s/_~r,1?8Ye=>V^q4Y19 9sypݩ>at:ޣ9 1Y6sQ>Z}ExIp^N`%EP 5bZԖUuT_|Tջq_]q&M*ٓ+\`F!&!\%WI P=j6ݞ5Ou,=⮻ B  %ٴ_um[[Uu$'0Kȑ8#G|̙_unqk([ouIq+iS_]]rxsp闤Zkg(qꦛnr7xÇw{5K 6˸|~0qz+9ղM=Xb 2.l. Rke_ 0 7`<裮͍7j" g<~B? Mua۹ڵ :|,1>a믏U滶3ʪ/SrkgUuWnk]1\s5fKᶛD/gY4 _-xalT?ogJ3|;i$GL5רZɏ]4&Ų':uu', f (ޱj{M׿m0fI[=qW;1l0l#nٸnWF>YUɎ=IUnYUSG'bמʈ|jb=Sf7{253vk!_+E1%.={פ=_n^z=VSE.Il_~k=W[Xl ֈ_ZOg+?;ح׾?e~qmk^5վo U5WZkns$/;W7ˍviոnwS-z]&m_uiΚ#ܘe3r'ws:74>zN\~b۶5!v,}EAHs5ZOy&kS~]d8s?{!9n{T7{m3yg~VuBGV~N̚]kDsx{3.פ#:_1ڇI_a1|auGGz 1F?_u5͵qG3u,6lV}XƘ':93o: C?VceIz_T=f=gqڗkZey<<;BR15쭎h}9rn\Kqy9sqX3cc+Bg4[ok\4r@}0.XGmk0]MԏenǕ_~9?ͷqQ{ Pq"_9fY_ U=^b3??|omj _\$IX( Kq9WלvnfrfcD9Qld|7SNU:b{ƨvrꯒ!h\!aɂ<+ۋr[.!$86i TZQOI '!>?Ǧ+hxBhLE>\`+?G_jRiE5r={IBM**-mm4Ub,6_}W7|Y5/-y __PQ 7cnh?XHblrIUR5X:aT*W~q q>KRz\>w8_ ٳ310iV3>K!VS.ɰ.BE魠Qlh^X},O\` VB>a~.LqWPh1y|l !ri&VTI,}zX%as|=q(WB2Y=}-o6,>jRiڿ_a+'?d۸_Gj ե ~kWu;vOT߾7Wg\ iP?:AB}V{||kVހ_fbyms ƥZ#~l(׿fc|> W?>w}>־7|>8‡/je~௫j:VcHͯյs\3疟$;= Z>_msuooszEVl^ tW { krnlTgl͍+7/%6ܼ`}=fCld|ߓs?_?q_Fb_L||yZ+7m4X#S \kj7IW-u_;ݧ羮ɥekji!&/i0Y[mhLdA۳~jo?+SmiiJ@,\}]?;Itׯ7gVx&!(?_Iwnv_ٮ٧0}ZVܰ-6lؘE]]g\|%nukd՟>"a{_s4C޵}&We۾#Ɲ~ݬJ<~zk_u /ͣc|ѓ]s4C=(7ޭڠ{FҠ|}^.nu5kUW\q.GIhMըZk_oؘ>R&i0K\/j_v_z꯱tj^2=҅P\7ZXws1''gy놞7~A?e`Ok \>ژ9n n˱K~4_<_5V+Bjbe~]߹J` .*/D}gW\1[|(<>h\!|-p %^#JX+mn1ozRU:_CUi:vD7q q>KRiqG;1ࣳ8!%MB+¾v,$U;Wa1>6B+42hm0M<>sŌK5Wԇ^ K ;a4ǧV+DznR;m|K>cBScM 㰹<6 TP+?ΨrKy._+TW]qJWZ*_ɪ.Q`pr}(4<>6Qސo94PJ++~1u/EHW8oFaI5||=3$ yY4L /+qTk)ךzRZ*@,RUz}JZ!JW^T*GEka-ŜkT)T+ TEJ[[7MUe ~MWk*_J.Q$_ꐶӇM$䪩 **|l6Uw?bLjcQ/C5WN ӏ 1 1}7S'b B𩁚8,?Xb8RnRV諂8_B-_ TdU(Cq{8dn>GGL(oȷDIR?_ט}뗢SU+Q~iXڰ$ lՄ,&RUwRV8_AkMf=kLw *jHT%-ϐz]+I*BvbN΁5zS]RU\*Bw^"_׭*@[޵TGUj W;E16@TZUGiYO];&ͥ|U=Rc4ZR -i9;.F_ uK1c |ca-D5W@?;(Xsm>8&_<ԟRjlSUJC%ɜMW HVu2KsHsDqq,̏|qO9TZQ-_yS|ٷ~)=_@y65 [NœQ&1]Mˢa2_0>~)_u'_aS+_KAn֓꯼tWb"VMW 7UR)T?(j^ n9`.X7+OZUߨ~KEh.+\uT_|Tջv믮*͓VL遺;3Yű/$*vlZÏ&:֦*MqM-aʁ?QO'Z?Qti+_qfC҇|,'37_}W['i[mm'߬b0?+d*G/ISfտh>~NEdma{sc+x:Y,]J~g w*diXCs|~?:g}G:ߨw~R~u1lw#r_VY?ڤ7߾Ru[` |G1?HZޯsu~ʍ~Bd r"Xflc~Kɿsc~(G1vatWE]b]:Y:G3X5ߜjk/r/<ͣϹG?_8=қwp׿87Q.IǤ/VUeԺy ?_7}bh֮aֻ~s_yƀ[oY4o jrKVy80?ːo9zIz:k_Cw1{:ɌXrjuV_ݣշLcX`<o/?&VT۷h5y 1}~CMzNXaN|OX`|>U~6u,'y_~P[3FB?g:Pq + vw4c n13]J{j^mNi 3߬=m5|l6B6$ņ9ȧ_*Ԭ~=K}oOyc;ݧ߳T/ghtߺK:jx||K(Z҅#XFO]߯9J}c3$抉rl_j{4?:m^=g'ߎﭭrX a6PJ3z_)!j[> u{=:NOqYP`1hEOB׾?m?yלGZ!׹^jŷ6[t"s_3*˹O1g6v_WoOi˂ zz_jehЊxѼ\cV_7vٻ`~Ǐ0=M= 5ƲxEY7X T'[5&&!(o5ȧ&VTc,k}ahCn^^:v~IOϱ= 5r6ێe[+yꑍVl0bPIU1cO62ќZko"-Kq}Ĺ(5;= 5r j&VTc,ǜڡ}IxIp^N`%EP 5beňj qvw4R~c޶s}飻NX>!wm8}hl^r'WOj۳e qټ'~q:[\sBvG4m՚^WuM]Y&8ܙC-zqO;:6_Y@SW/NVM:8slcRF׹e;Ѿڝ=XV5VSOѩw{z}fj|VitUc;:6z }px;wr3|Wיêk;yg^?j^>8MAxSΡ{;zT{c{;V+f͋݇'79dY-V={iشh۽aӦ՝lg;p\%z=Ξ:}=~SOز\MqrXN5-;UfVm^b} m}{^;ih9q8׵ul[vPmgu׾96wP}Ms.;kcC8߳iIۭUjѵ/f^۾5׾qsa{g΁MqǷ%ӻTrVk_y9::gt^4ySG~>>:u@ȹ9vVگV_g>gZgԹfHgໃ%3\c{ѹ;;KfN֯b6`Gl5]bIY?Դح[1bާgKc]]H3&lV>1@s?#7ESЎUE=uŬs8{;ՋMo(n;m[fS_]^,̧~]b]njiㇵ7Ι6skP5.=X{g{Tfs(aiԢ ]hz\woq{&o֠Wʹw3zӟù;b{6{vwWi'ǻ׺msZ׸;X;|_yS5nrFu{w<퍗mozwI uy+usǵ'TA}g:)}@?suI6﹓t\&ΩfoQ+5s:lvyׅ up |AY=ן=ϑڣJm۲泇Z,}pt;_ճ;t*L{ sGZy:o^O/ijYn5{;ǭnퟳڱmVˣR䨟> 9 w6snsP;м\;OeE [{7$?޲߱ӺgF|,1>U ~6Ըe=þs?9ۥr[u>[T3tϦ~vz|_ݎwDڷ{K{}Nם swW׿4C<`cC?תY^gH=]sR~'t]Wgcbj 0FVq,5ާKdCK-ޞu:_ WV Bq^hI/q>]\ߟKʗϗ }#߶/T5'ɶxWi=ԯy+ͶTKoY23M`y+t\~~[W9 ,'}>19Y>ӹտ{ΝscZ|XYϓW.<9j㼨ώIoZT)]47(Xy?|c͂ |{f_ pFsW5Wl6rјBZ\i=4%5toޫ0Cus>:ֲDߍE|vs[-}7\)u-mi\plugins/file-manager-advanced/application/library/img/src/icons-big.svg000064400000205207147176754550022257 0ustar00 image/svg+xml plugins/file-manager-advanced/application/library/img/src/icons-big.xcf000064400000440753147176754550022247 0ustar00gimp xcf file0xxF~LRX&^,d2BBA exif-dataExifMM*bj(1r2i ' 'Adobe Photoshop CS5 Macintosh2011:04:22 18:30:18021001000gimp-image-grid(style solid) (fgcolor (color-rgba 0.000000 0.000000 0.000000 1.000000)) (bgcolor (color-rgba 1.000000 1.000000 1.000000 1.000000)) (xspacing 10.000000) (yspacing 10.000000) (spacing-unit inches) (xoffset 0.000000) (yoffset 0.000000) (offset-unit inches) gimp-metadatalGIMP_XMP_1 Adobe Photoshop CS5 Macintosh 2010-09-19T17:17:49+04:00 2011-04-22T18:30:18+04:00 2011-04-22T18:30:18+04:00 application/vnd.adobe.photoshop xmp.iid:FD7F117407206811B1BA95E37140A3C2 xmp.did:01801174072068119109C4A19543BAD1 3 sRGB IEC61966-2.1 xmp.did:F77F117407206811B1BA95E37140A3C2 icc-profile H HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)Kmw&:;I]drDYH)9<Qcv+ʀ U/h&0text      F"$&08&0H ÿͯ ˺ ƹ ´ ƴ^ óƺgͨÙξgžĿ^û^ˤˣ𤢢 ¹½c—þqúĿqûſț暘ٿ¾𖗘ƽþƗƗ ¼¾Ĕђ¿ 񿽽‘Ñ  򽼘ÿ  꼽  %       ^ ܴ֩ة^^򾺶Ƿȴօ㼻ಭՙɼq ӭ෵Юѹ嵴崲컶 ʲժݼ ެߺݹ ݹ޸޸ ู ḷḷ෷ ੨෷ ߷߷ߨߨ෷ ߷߷ ߷߷%              %""#%'$     rG"  !!"#'DHHLHKHHD..0image      &.0&.0' ͯ ˺ ƹŲĿþĿŽļu ŽuŽ½uƿþuĿuſuƿvƽº ¼ þ¾£¿¢¿  àŸ򜜝򶧭񢣤񴧭ؿ響̯zﱧeεԭ~NlxƦýս됡\뫦߾Ŭ߯骦ڼ蝽=ym˓試rOKԔ姦ۺƦЁz}~䥦ۼƧilpx}oim}⤥޶i ckafih{ou{ࣥܵc:u«yf[Y]d{ut`_ޢݴba[H9@ETn_STofglpmܡڻ\;;9<;?HO\Viha^qvlW}۠ ߺYGFBqhILQXQr~e~^ؠ  @ μͻ wͻ wϽ wпww ýwzɰϵźǼ ½Įϳ׵㿿㽽㽽ĿŪ ɶỻ˵⹹f̛ڿԵ Ki~ѵɭս멱ZḸ߲ͺ>ym̝෷pNIӢ෷ҭύ ߷ťņ{߷ ahv෷}5¯vXiޢ߷zoUFDA\gbtܡ߷xHA5HR>EJ`gzۡ ߷pPMBJHMUk٠ ߷ @   ﵵ G::G::G::::: l㿿/D㿿n4[-⽽{ܡyTw͸ m~rLXCcïfmD0q ḸhFuԷal12=ᶶ{Y׳Wז[qc[]\ ᵵz虿ԙvx;ᴴ]ȯ9EDA>25(PbeG ᳳ!kĥky9 ᱱ#>WĢ0Dk?ޢᱱ#*3,>NEP>ܡ ᮮ#47=,!CR[T7۠ ᮮ2<=A !FU]d)' "!"##!!ٟ ᭭ @rG "     !"#$%% %%%%%%++++++++++++++++++++*@2@AABCE@@20# folder_open     l<0#<0#<s s}}~}|m}}~}|m¾ٌ~}|m ~}|m ~}|mmHm_T& mm[~{& mm]}xuR mm_}pmjimmk}Ʊ|}~~}~}}ƒ~{{z{~s~xx|vuvvxv|~tsstsy|~qqpqqx||~llnn|v|||deikz{{B|]`doshhzY[_|xhhzVW]ryyzUTy}uyyzTT~sxxzTjy~~y{rxxzSyw}}xzrvvz`qy||{tzohhzȗwn{{vrshh{{oityyz{zpykttzz{httqrtpttvztkjjkklmnopqxmqql}qwy{{olIj!ji6 櫨ÿ ıÿ ϲ̽հ̼ਢ_x˻(#t˸(#s˴q#ɫɨ΍ȥОȣÿụǟ;﫣ѦǜĽƙνﯠƖŹŒλﱛ٤ŊƶjĂ̹}ȱ{{ùyxƭxwxwΆڽa!(6   ̠}ԿӶ ߻!:6  % `* "#*#i#i#k#| *+**)$))Z((''&&%M%%$$###e$Q!0 $99:;;=99=;;:99$&./js     J[./Jo./Jͯ ˺ ƹŲ ĿþぁĿ~~󐽳 |||||퐼u{z{z{{{z{zz{z{u{z{z{{{zz{zz{z{½uxyxxxxx푿þuww wxĿu vuv vzſuv ƿvvv{uuy~|uromkkmqƽvvºosvv¼nnvvþikvvń¾novńꃂ~{zxÄ¿zy|„Äà„Ÿ    ÿ    񾻽    %.ppppopopoppoppopoopo mm mijiijijiijifffffdcddddddcddμa``aaa``aa`ͻ w_^_^___~^_^^_^_ͻ w_^_^___^^_^^_^_Ͻ w\]\\\{\\пw[{[ [\w ZYZ ZdýwZ杞zZZ󼹹ꐟϵZZ֪ZZźZZǼ􄰴ZZ½ĮZꢡɕϝϳΗ׵㽽 ỻ ⹹   Ḹ Ḹ ߣ߷ҩҪߪ߷ҩ  ߷߷ ߷߷%.  ﵵぁ~~ |||||G::{z{z{{{z{zz{z{G::{z{z{{{zz{zz{z{G::xyxxxxx::ww wx: vuv vvvvʯ갽vvȿȯvv˨ʨvṿɦvvתӪv꿾嵴         ſ  %.    !"r#G$"% &&'&"#$%% %%%%%%%%%%%%%%%%%%%%%%%%%!$*2@AABCE@@2.0zip     ^.0^$.0^4ͯ ˺ ƹŲ ĿþĿ񘘗󐽳퐼u𕔕ꕔu𧒒퐽½u쒑þu 쒑Ŀu 쒐ſu ƿvƽº ¼ þĐ¾¿¿  àŸșəٔșᨬǙߴƙݴřߴÙ򼽽Ùߵݷ޷˿𶻗ݸʾݸɼܹȻ񻺺ܹǺ ϔϔǹ  ŷ@qqqqpqpqpqqpqqpqppqp nn njkjjkjkjjkjgggggdcdddddcddμa``aaa`a``aa`ͻ w_^_}_^__^__^^_^_ͻ w\]{{\\\{\\Ͻ w[\[[[\пw YXYYYcw YXY YcýwY杞zYYɰϵYYYYźYYǼYY ½Įllϳll׵ll㿿lll㽽ll㽽llkwk j~z~}}|{yy~~jỻii~j~~j~i⹹hh||LQQT||h gUcc[uuge~UsssscssfḸee}}UjrqeḸcc||Unnoobppc෷aa{yUmooa෷``xxW{{{jll` ߷^^xxW{||}}lkk_߷^^wvXggilliiaji^෷\\uuXxyyzӃ{{nhh\߷[[ssXqqŕrriggZ߷ZZrqXllllffeZ ߷YYqjqqjfY ߷XXllkjihhggfeedaaW WWmkmjihhggfeedcac``WUVWVUVVUWVVUUVUWUWVUVVU?  ﵵG::G::G:::: : †† 666666666666a66X=55XX`44C@FHFFDCBA@?FCC444CQCCQC422BBJ##$JBB41DI%//)I==2 0CI%;;;;/I;;00BI%FFF4I::/ //AAJ%8888/J99/..@@I%FFFF6I88. -->>H&AAAA5H66-,,>>H&AAAA5H66- ++>>H&1148ϼ844.H55+ ))==G&>>@KLAA7G44)((;;G&::QQ::4G22( ((::F&66^^661F11( '':Q:XX:Q1' ''6654210//' &&:6:55442210/.2..&%&%%&%%&%%&%&&%?    !"r#G$"% &&%&"#$%% %%%%%%8'8()+++++++++++++++++*@2@AABCE@@2./xml     sM./sa./sq~ͯ~ ˺~ ƹ~}~}~}~~}~~}~}}~}Ų{{{ĻwxwwxwxwwxxxwwþttttttĿrrύrrrr󋽶onnooooononooonuonnooooononooonumlߟmmmmllllmlm½ujއjjjjkjjjj틿þuij ijĿu hgh hmſuh ƿvhhƽhhºvhh ¼hh øjhh™zhž~ij±tt{q‘q÷qu¨|qàq|qŸ|qvq 䶑qvqqqvq q|vqÿ 񾻽  %.~~~~}~}~}~~}~~}~}}~}{{{wxwwxwxwwxxxwwttttttrrύrrrrĻonnooooononooonõ wonnooooononooonĮ wmlߟmmmmllllmlmŬ wjއjjjjkjjjjǰwij ijɴw hgh hpʽwh棤zhh̰ϵhhظhhښhhhh ᳑½ĮhᕶϳѠωՊ׵צʙ׬݌ēܲ쾘㾓ⓇЍ㽽֫Ї׫ܱ⫫ܫܫ܍⾇ỻ֥ᾙ⹹ ə  ḸḸ ߷߷ ߷߷ ߷߷%.~~ ~~}~}~}~~}~~}~}}~}{{{ﵵwxwwxwxwwxxxwwttttttrrύrrrronnooooononooonG::onnooooononooonG::mlߟmmmmllllmlmG::jއjjjjkjjjj::ij ij: hgh hshhhhhѦhh ﱷhhhhǦh럨캛߮ڧƛӭӧ桛ƛӛӮ ߮   %.    !"r#G$"% &&'&"#$%% %%%%%%%%%%%%%%%%%%%%%%%%%!$*2@AABCE@@2 php       w w"ww"wwDw"fw""fww"ww""""" Layer 2     F Z j|z{z{xyxwwmijiifd`aa^_^_\]\[[|z{z{xyxww, Layer 1      |  |z{z{xyxwwmijiifd`aa^_^_\]\[[|z{z{xyxww,./pl #1     ././ͯ ˺ ƹŲĿþ Ŀ~󐽳 ||||||퐼u{z{z{{{zz{zz{z{u{z{z{zz{zz{z{½uxyxxxyyxxx푿þuwxw wxĿu vuv vzſuv ƿvvv{uuy~|uromkkmqƽvvºosvv¼nnvvþikvvń¾novńꃂ~{zxÄ¿zy|„Äà„Ÿ    ÿ    񾻽    %.ppppopopoppoppopoopommmijiijijiijjji ffffdcdddddddμa``aaa`a`aa`ͻ w_^_^___^^_^^_^_ͻ w_^_^_^^_^^_^_Ͻ w\]\\\]]\\\пw[\[ [\w ZYZ ZdýwZ杞zZZ󼹹ꐟϵZZ֪ZZźZZǼ􄰴ZZ½ĮZꢡɕϝϳΗ׵㽽 ỻ ⹹   Ḹ Ḹ ߣ߷ҩҪߪ߷ҩ  ߷߷ ߷߷%. ﵵ ~ ||||||G::{z{z{{{zz{zz{z{G::{z{z{zz{zz{z{G::xyxxxyyxxx::wxw wx: vuv vvvvʯ갽vvȿȯvv˨ʨvṿɦvvתӪv꿾嵴         ſ  %.    !"r#G$"% &&'&"#$%% %%%%%%%%%%%%%%%%%%%%%%%%%!$*2@AABCE@@2./c++     q././ͯ ˺ ƹŲĿþᇁĿ~~󐽳|||||퐼u{z{zz{z{{{z{z{zz{z{u{z{zzz{{{z{z{zz{z{½uxy~xxy x푿þuwx wxĿu vuv vzſuv ƿvvv{uuy~|uromkkmqƽvvºosvv¼nnvvþikvvń¾novńꃂ~{zxÄ¿zy|„Äà„Ÿ    ÿ    񾻽    %.ppppopopoppoppopoopomijiijijiijifmmffffgffffddcdddddcddddμa``aaaa`a`ͻ w_^_^^_^___^_^_^^_^_ͻ w_^_^^^___^_^_^^_^_Ͻ w\]ed\\] \пw[\ [\w ZYZ ZdýwZ杞zZZ󼹹ꐟϵZZ֪ZZźZZǼ􄰴ZZ½ĮZꢡɕϝϳΗ׵㽽 ỻ ⹹   Ḹ Ḹ ߣ߷ҩҪߪ߷ҩ  ߷߷ ߷߷%. ﵵᇁ~~|||||G::{z{zz{z{{{z{z{zz{z{G::{z{zzz{{{z{z{zz{z{G::xy~xxy x::wx wx: vuv vvvvʯ갽vvȿȯvv˨ʨvṿɦvvתӪv꿾嵴         ſ  %.    !"r#G$"% &&'&"#$%% %%%%%%%%%%%%%%%%%%%%%%%%%!$*2@AABCE@@2./sh     S4./H./Xͯ ˺ ƹŲ Ŀþ♁Ŀ~~󐽳|||||||퐼u{z{z{{z{{zz{z{u{z{z{{{z{{zz{z{½uxyxxxyxxxx푿þuwx wxĿu vuv vzſuv ƿvvv{uuy~|uromkkmqƽvvºosvv¼nnvvþikvvń¾novńꃂ~{zxÄ¿zy|„Äà„Ÿ    ÿ    񾻽    %.ppppopopoppoppopoopo mm mijiijijiijjiff܃ffdcۂddddcddμa``aaa`a``aa`ͻ w_^_^~__^__^^_^_ͻ w_^_^_}__^__^^_^_Ͻ w\]\\\]\\\\пw[\ [\w ZYZ ZdýwZ杞zZZ󼹹ꐟϵZZ֪ZZźZZǼ􄰴ZZ½ĮZꢡɕϝϳΗ׵㽽 ỻ ⹹   Ḹ Ḹ ߣ߷ҩҪߪ߷ҩ  ߷߷ ߷߷%.  ﵵ♁~~|||||||G::{z{z{{z{{zz{z{G::{z{z{{{z{{zz{z{G::xyxxxyxxxx::wx wx: vuv vvvvʯ갽vvȿȯvv˨ʨvṿɦvvתӪv꿾嵴         ſ  %.    !"r#G$"% &&'&"#$%% %%%%%%%%%%%%%%%%%%%%%%%%%!$*2@AABCE@@2./rb     !././(ͯ ˺ ƹŲ Ŀþ⚁Ŀ~󐽳|||||||퐼u{z{z{z{{{zz{zz{z{u{z{z{z{zz{zz{z{½uxyxxxxx푿þuwx wxĿu vuv vzſuv ƿvvv{uuy~|uromkkmqƽvvºosvv¼nnvvþikvvń¾novńꃂ~{zxÄ¿zy|„Äà„Ÿ    ÿ    񾻽    %.ppppopopoppoppopoopo mm mijiijijiijjiff܄ffdcۂdۂdddμa``aaaaaa`aa`ͻ w_^_^_^___^^_^^_^_ͻ w_^_^_^_~^^_^^_^_Ͻ w\]\\\|{\\пw[\ [\w ZYZ ZdýwZ杞zZZ󼹹ꐟϵZZ֪ZZźZZǼ􄰴ZZ½ĮZꢡɕϝϳΗ׵㽽 ỻ ⹹   Ḹ Ḹ ߣ߷ҩҪߪ߷ҩ  ߷߷ ߷߷%.  ﵵ⚁~|||||||G::{z{z{z{{{zz{zz{z{G::{z{z{z{zz{zz{z{G::xyxxxxx::wx wx: vuv vvvvʯ갽vvȿȯvv˨ʨvṿɦvvתӪv꿾嵴         ſ  %.    !"r#G$"% &&'&"#$%% %%%%%%%%%%%%%%%%%%%%%%%%%!$*2@AABCE@@2./py     ././ͯ ˺ ƹŲĿþĿ~~󐽳|||||||퐼u{z{z{z{{{{zz{z{u{z{z{{{zz{z{½uxyxxxyxxx푿þuwxxwwwwxĿu vuv vzſuv ƿvvv{uuy~|uromkkmqƽvvºosvv¼nnvvþikvvń¾novńꃂ~{zxÄ¿zy|„Äà„Ÿ    ÿ    񾻽    %.ppppopopoppoppopoopomijiijijiijiffgfffdcdddcddμa``aaaaa`aa`ͻ w_^_^_^____^^_^_ͻ w_^_^___^^_^_Ͻ w\]\\\]\\\пw[\\[[[[\w ZYZ ZdýwZ杞zZZ󼹹ꐟϵZZ֪ZZźZZǼ􄰴ZZ½ĮZꢡɕϝϳΗ׵㽽 ỻ ⹹   Ḹ Ḹ ߣ߷ҩҪߪ߷ҩ  ߷߷ ߷߷%. ﵵ~~|||||||G::{z{z{z{{{{zz{z{G::{z{z{{{zz{z{G::xyxxxyxxx::wxxwwwwx: vuv vvvvʯ갽vvȿȯvv˨ʨvṿɦvvתӪv꿾嵴         ſ  %.    !"r#G$"% &&'&"#$%% %%%%%%%%%%%%%%%%%%%%%%%%%!$*2@AABCE@@2./pl     ././ͯ ˺ ƹŲĿþ Ŀ~󐽳 ||||||퐼u{z{z{{{zz{zz{z{u{z{z{zz{zz{z{½uxyxxxyyxxx푿þuwxw wxĿu vuv vzſuv ƿvvv{uuy~|uromkkmqƽvvºosvv¼nnvvþikvvń¾novńꃂ~{zxÄ¿zy|„Äà„Ÿ    ÿ    񾻽    %.ppppopopoppoppopoopommmijiijijiijjji ffffdcdddddddμa``aaa`a`aa`ͻ w_^_^___^^_^^_^_ͻ w_^_^_^^_^^_^_Ͻ w\]\\\]]\\\пw[\[ [\w ZYZ ZdýwZ杞zZZ󼹹ꐟϵZZ֪ZZźZZǼ􄰴ZZ½ĮZꢡɕϝϳΗ׵㽽 ỻ ⹹   Ḹ Ḹ ߣ߷ҩҪߪ߷ҩ  ߷߷ ߷߷%. ﵵ ~ ||||||G::{z{z{{{zz{zz{z{G::{z{z{zz{zz{z{G::xyxxxyyxxx::wxw wx: vuv vvvvʯ갽vvȿȯvv˨ʨvṿɦvvתӪv꿾嵴         ſ  %.    !"r#G$"% &&'&"#$%% %%%%%%%%%%%%%%%%%%%%%%%%%!$*2@AABCE@@2./css     Y`./t./~ͯ~ ˺~ ƹ~}~}~}~~}~~}~}}~}Ų{ĻwxwwxwxwwxwþtߏtttߏttĿrrrrrrrrrrr󋽶onnooooonoonuonnoooonnoދoonumlmmmmmllmlmlm½uj݇j݇jjj틿þuij ijĿu hgh hmſuh ƿvhhƽhhºvhh ¼hh øjhh™zhž~ij±tt{q‘q÷qu¨|qàq|qŸ|qvq 䶑qvqqqvq q|vqÿ 񾻽  %.~~~~}~}~}~~}~~}~}}~}{wxwwxwxwwxwtߏtttߏttrrrrrrrrrrrĻonnooooonoonõ wonnoooonnoދoonĮ wmlmmmmmllmlmlmŬ wj݇j݇jjjǰwij ijɴw hgh hpʽwh棤zhh̰ϵhhظhhښhhhh ᳑½ĮhᕶϳѠωՊ׵צʙ׬݌ēܲ쾘㾓ⓇЍ㽽֫Ї׫ܱ⫫ܫܫ܍⾇ỻ֥ᾙ⹹ ə  ḸḸ ߷߷ ߷߷ ߷߷%.~~ ~~}~}~}~~}~~}~}}~}{ﵵwxwwxwxwwxwtߏtttߏttrrrrrrrrrrronnooooonoonG::onnoooonnoދoonG::mlmmmmmllmlmlmG::j݇j݇jjj::ij ij: hgh hshhhhhѦhh ﱷhhhhǦh럨캛߮ڧƛӭӧ桛ƛӛӮ ߮   %.    !"r#G$"% &&'&"#$%% %%%%%%%%%%%%%%%%%%%%%%%%%!$*2@AABCE@@20/html     '0/ 0/ͯ ˺ ƹŲĿþĿ󋽳튼u틽u틽½u~~~~~~~~~~~~fþu}hxĿu}mſu}od{oxqqrpƿv}}|xi{|tqqhqƽ}}ࠌuoltrsh{}}߷㺙x|rppe}}ߌ¿آwvpnjm}}޺լ}ZZeese}}ܞѳssx}}Êu}ѷyw}ㄌ̹ϼv ‚ĴʺtàރȹŷsŸr ނyz} 󈊋{ÿsv {}w􅜇x l艆}{|~wl~|zyvv|} ߾tq|{yyz}kv mq}ylm 廥{nojjlo|  ﺶ   %0μ˽˽ͻ wͻ wϽ w퀢w탧w퉴w؝zϵ­פϴ䰼¾㻪ڪզ|~Į©ȶϳ䮵̷׵ਮÿ 㦳˾ÿ ⦷ź¿ 㣷ǽ㽽ަý⼼൷⻻Ϥ򮭹ỻ☱񭬶⹹򮬪 ﭬ ѐ譪ḸᾐḸ仗 ݼ ı߷ ҿ߷ ǿ ߷ ߷ ߷ ߷%0 ﵵEEEEDDDDG::G::G:::::عsоZG@FZͰU?Jq`Մ^?;;TGû{@=89VF8FEMewuI?:8N>kڔ98R8H_wBIDiP4@ABP~Ve05:=AEe [.26:=@BKt{/36:>ABB 248ABD䄯gBBQ CBlCA cBQ MA ?o b        %0 ! " #$r%G&"' (()* " #$%% % % % % % % % % % % % % % % % % % % % % % % % % %!$*2@AABCE@@2(/office     )(/)(/* ͯ ˺ ƹŲĿþĿŽļu ŽuŽ½uƿþuĿuſuƿvƽº{wrqnu¼~yzvtmnþ~zzlĤ¾rģ¿|ٳ¿~Æ»àŸÿᄑ $( μͻ wͻ wϽ wпww钑ýw揗ܑz搝⑎ɯϵ⏎ث⏎ڢ咜Ꮞۣļ½Į䐗ɱϳ䑐㛖ޫά׵⏏䭭ذ㽽ỻ⹹ḸḸ ߷߷ ߷߷ ߷߷$(   ﵵ G::G::G::::$*,,+()(+:$*//.+*)*-$8+)'G)%,G$%,F$$,E$$+B'8*'=EEBBA9&'('$$$%S+&20&%&5 ' +) Ib`^`H-+   $(     rG"  !"##$$ $%%%%%%%%%%%%%%%%%%%%%%%%!$*2@AABCE@@20/pdf     =N0/=b0/=rͯ ˺ ƹŲإĿþĿՋҊuҋu틽½uЋþuϋĿu ȋſu̓ 鎌ƿv͍椣Ļƽ̧ʺ ͼ;ɾſ͢¿͠ ¿ ÿϿ̿便ӿ о󾽽ҽӽ ƾü ʼ Ѽ Ӿ ɻ κ Ϻ ò %0xxxxwvvwvvwv vwvwwsssssnonoonnonnonnoonnnnnonnjkjjjjjgfggggfggfgggghgμbbbbbbcbbcbbͻ wbbbbbbcbbcbbͻ w_^___^^____^_^_^Ͻ w\]]\[]\]\\]\\\\]\\пw[YZYZ[[Z[[Z[[Z[[ZwYXYXYXYYiýwYXYXYXY棤zYYXYXYXloɰϵYYXYXY y~YYXYX~źYYXY}ǼYYX {½ĮYYxyϳYYwzԵYwԵ wyصwwٵxvԱ肃wײwwٲ|vٳxw޵x߁v߷yͫ~vvz෷yۮwvvwyxvxzḸwvw}vw}~{Ḹ{vyҧ} ߝyw {z| ߷ ߷v}x߷ vyw yvx ߷ vy ߷ }߷ ߷%0(hh(hh (hh(hh&'&''&'&''&'&'&'&&'&''$$$$$ﵵ     G::G::G::      :: :    ,    IG YDN  KOoz KQ` WGO kBE @E @O@DA@ D@iTUaAAA]_Iy@CrOAlDR@S EeכN@@FPifD]B@@BEC@DosGU BUYAALvTABMUNI H@Dd^MV EB HHKU  @LnD @EC F@Dg  @WEd OT %0  ! " #$r%G&"' (()( " #$%%% %% % % % % % % % % % % % % % % % % % % % % % %!$*2@AABCE@@20/rtf      R0/R0/Rͯ ˺ ƹŲ  |||||ĿþyyyĿvvvvvvv󋽳sߎssssssruppppppp틽uppppppp틽½uoooooorþuoĿuosſuorrsrqƿvooƽooºoo ¼oo þoo¾oo¿oo ¼o   àŸ  ÿ           %0  궥韟μ诜튱 wͻ wϽ w튴ww웡ýw؛zɰϵ嵵źǼ ½Įϳ 􊉇׵  㮮 㽽   ỻ⹹  ḸḸࢡ   ߷ ߸ ߷   ߷ ߷ ߷ ߷%0  ﵵ G::G::G:::::ߴ i ihgfeefgg        >      T T7    %0  ! " #$r%G&"' (()( " #$%% % % % % % % % % % % % % % % % % % % % % % % % % %!$*2@AABCE@@20/txt      dV0/dj0/dzͯ ˺ ƹŲ|||||ĿþyyyyyyĿvvvߐܐvvvrsssϣssss튼upppΡpppp틽upppދދpppr½uooooooo틿þuoĿuoprſuo ƿvooƽooǗǗꖔzyvvwyz}~oo ¼oo þooœŔ|zz{|}oo¿oo¿oÐ àŸ   ÿ           %0󴢢򟟱江󉱪񜜯ݾͻ wݽͻ w񚚭筚퉲 w񬙙пww엉w棤zɰϵ嵶اźǼ峲Įϳ׵䯮   򫬬⫫⫬㽽   ⩨ỻ⹹ ᥦ ḸḸᢢࡢ   ߷ ߠߠ߷   ߷ ߷ ߷ ߷%0 ﵵG::G::G:::::ܟĽ ½ӵ                %0  ! " #$r%G&"' (()( " #$%% % % % % % % % % % % % % % % % % % % % % % % % % %!$*2@AABCE@@200video     _ v00v00vͯ ˺ ƹ  Ų  Ŀþ Ŀ Ž ļu Žu Ž½u ƿþu Ŀuſuƿvƽº ¼ þ¾¿ ¿==VV V= <VFHHGHHGHHIV<à;;TST T;Ÿ;;TSTTST;:SRR RS:99SRR R9 8OPP888OOPPOO8 7NMN NMN76NMM M6򽾘44JIKK433JIIL LIJ3 33HH H31HFF100DDEE0󼻻..DDC񊉉CDD.--BBBB- --BBAA-++>>??+**>>>*))==}~}~}~}}~==)))==;> >;)''!!:~ ~:'! k!&I         μ ͻ w ͻ w Ͻ w пw w ýwzɰϵźǼ ½Į ϳ ׵EEii iE㿿DDiihXVWWXhDCef fC㽽AAeeeeA㽽@@cccc@?cbb?>^``>ỻ==^^^=⹹<<\\]]\\< :\ZZ:9WXX9Ḹ88WW ZW8Ḹ77UU U7෷66UURR6෷44MNPP4 ߷22MNN겳NNM2߷11KLLLK1෷//KLII/߷..EEHH.߷,,EEE,߷++BCB򧨨BCB+߷**BCAD DA*))""? ?)" "'I       ﵵ    G:: G:: G:: :: :™™  ڙ FFjj jFDDjjiSPQQPQPPRiDCCffh hCCCffffCAAedeedeA@@edcc@>>__aa>==___=<<\]]]\<:\]ZZ:9WXX98W [W877UU U766UUSS655NOQ Q5 33NONNON311LLLL1//LLJJ/..EEHH.--EE E-++DCCCD+**DCAD DA*((!!? ?(! !(IrG"    ! " #$%% % %--))--))--))--))--))--))*@2@AABCE@ @2,0audio     - ,0,0ͯ ˺ ƹŲĿþĿŽļu ŽuŽ½uƿþuĿuſuƿvƽº ¼ þĤ¾ģpu¿p~¿px pàpxŸp{pp pšÿpx¥ pvvp{~|p{vw쿻p{v龻p{vp뽺p{|~ppvpp{u}ppvp~uutrpztuppv{zxzppt겉w~xsptutttəwzq亗r”wp䵺q{zrs{xuzpry~yra0ptrqrpX#0 μͻ wͻ wϽ wпww ýwzɰϵźǼ ½Įϳ׵⪹ӶΪͭ㽽йDZDzỻѬ˰⹹ѨƲ Ѭ ѬͪḸѬƺϸḸЬ־Ϳ෷Ьڹ෷媣Ϭڨ ߷媣άݦ߷窯Ǭ˪෷ê߯´߷Ц߷»֫߷­߷µǥ F2 F   ﵵ G::G::G::::: !=`1a);E99)6J-l56E>3#b90"Fl;.5:@t=,&%48:C`R*/I088N8(/Ɂ.5*A)&/Ъ,< #/C` !/BIU .$M9xF.$X% #-&.3BO #BDD0(FG"!DD8 ,& 2DDC +9 zCDD> ڎs  3 w   .P    r G "    !"#$%% %%%%%%%%%%%%%%%%%%B$$3&'((((*'H@@^J@@2J .0 application     {.0.0ͯ ˺ ƹŲĿþĿŽļu ŽuŽ½uƿþuĿuſuƿvƽº ¼ þvv¾vv¿vv¿vv  vàvvŸvvvvvvvvBAA@??>==<<;:9vvvUeedccbaa`__^]]\[[GvvQb}{a`__^]]\[[ZYYXXDvvM_y}x]\[[ZZYYXWWVSKHH,v罾vvI\[v}uYXXWWVUTKC:66vvvFXt}srrUTSNC866v𼽽vvBU}qp}}QG=66vv?RQQnjb86 6v򺼗vv;ONNI=6 6v񼻻vv7LG=66vvv0<66vvv66vvv66v󻺺vv66v vv66v vvv vvvv@ μͻ wͻ wϽ wпww ýwzɰϵźǼ ½Įϳ׵㿿㽽㽽 HGGFFEDCCBBA@?ỻ\nmmllkkjihhggffeddccN⹹Xkihhgffeeddcbaa``J Tgeddcbbaa`__^ZROO1Pdca``__^]\RJ@<<"ḸL`䂁\[UI><<"ḸH]XNC<<"෷EZYXX}yo>< <"෷AVUUPC< <" ߷=SNC<<"߷5B<<"෷"<<"߷"<<"߷"<<" ߷"<<" ߷"" @   ﵵ G::G::G::::: ||||||||||||||||||||||HGGFEEDDCBA@@?|||\nnmllkjiihggfeedccM|||Xk!jiihggfeedcbba``J||Tgh!geedcbba``_^[SPP1| |Pece!da``_^^\SKA=="||L`c!baa]\\VJ?=="| ||H^!``!!YOD=="|||DZYY\XP?= ="| ||@WVVPD= ="|||??F N>?>> ?>x  ??>>w ?>>E >?`   %0  ! " #$r%G&"' (()( " #$%% % % % % % % % % % % % % % % % % % % % % % % % % %!$*2@AABCE@@2.0rar     #,.0@.0Pͯ ˺ ƹŲĿþ蚭Ŀ笘󐽳퐼u𔕔ꕔu撓퐽½u𑒒쒑þu 쒑Ŀu 쒐ſu ƿvƽº ¼ þĐ¾¿¿  àŸșəٔșᨬǙߴƙݴřߴÙ򼽽Ùߵݷ޷˿𶻗ݸʾݸɼܹȻ񻺺ܹǺ ϔϔǹ  ŷ@qqqqpqpqpqqpqqpqppqpnjkjjkjkjjkjgggghgggdۂdddcddμa``aaaa`aa`ͻ w_^_^_^____^^_^_ͻ w\]\\\\]\\\Ͻ w[[\\{[[[[\пw YXY Ycw YXY YcýwY杞zYYɰϵYYYYźYYǼYY ½Įllϳll׵ll㿿lll㽽ll㽽llkwk j~z~}}|{yy~~jỻii~j~~j~i⹹hh||LQQT||h gUcc[uuge~UsssscssfḸee}}UjrqeḸcc||Unnoobppc෷aa{yUmooa෷``xxW{{{jll` ߷^^xxW{||}}lkk_߷^^wvXggilliiaji^෷\\uuXxyyzӃ{{nhh\߷[[ssXqqŕrriggZ߷ZZrqXllllffeZ ߷YYqjqqjfY ߷XXllkjihhggfeedaaW WWmkmjihhggfeedcac``WUVWVUVVUWVVUUVUWUWVUVVU? ﵵ摦奏G::G::㈉G:::: : †† 666666666666a66X=55XX`44C@FHFFDCBA@?FCC444CQCCQC422BBJ##$JBB41DI%//)I==2 0CI%;;;;/I;;00BI%FFF4I::/ //AAJ%8888/J99/..@@I%FFFF6I88. -->>H&AAAA5H66-,,>>H&AAAA5H66- ++>>H&1148ϼ844.H55+ ))==G&>>@KLAA7G44)((;;G&::QQ::4G22( ((::F&66^^661F11( '':Q:XX:Q1' ''6654210//' &&:6:55442210/.2..&%&%%&%%&%%&%&&%?    !"r#G$"% &&%&"#$%% %%%%%%8'8()+++++++++++++++++*p@2@AABCE@@2.0tar_bz     ".0.0ͯ ˺ ƹŲ ĿþĿ瘘߬񘐽𩕕𩕕𩕐u敕𔕔𔔩𔕐u擒𒒓𧒒½u쒑þu 쒑Ŀu 쒐ſu ƿvƽº ¼ þĐ¾¿¿  àŸșəٔșᨬǙߴƙݴřߴÙ򼽽Ùߵݷ޷˿𶻗ݸʾݸɼܹȻ񻺺ܹǺ ϔϔǹ  ŷ@qqqqpqpqpqqpqqpqppqp nnnjkjjkjkjjkkjgggggggggddddcd΂dddddμa`aa`a`aaa`ͻ w_^__^___^_^^^}^_ͻ w\\]\\\\]\\\\{\\Ͻ w[{{\[[[[[\пw YXY Ycw YXY YcýwY杞zYYɰϵYYYYźYYǼYY ½Įllϳll׵ll㿿lll㽽ll㽽llkwk j~z~}}|{yy~~jỻii~j~~j~i⹹hh||LQQT||h gUcc[uuge~UsssscssfḸee}}UjrqeḸcc||Unnoobppc෷aa{yUmooa෷``xxW{{{jll` ߷^^xxW{||}}lkk_߷^^wvXggilliiaji^෷\\uuXxyyzӃ{{nhh\߷[[ssXqqŕrriggZ߷ZZrqXllllffeZ ߷YYqjqqjfY ߷XXllkjihhggfeedaaW WWmkmjihhggfeedcac``WUVWVUVVUWVVUUVUWUWVUVVU?  ﵵ叏ܥ줏G::䋋G::䉈G:::: : †† 666666666666a66X=55XX`44C@FHFFDCBA@?FCC444CQCCQC422BBJ##$JBB41DI%//)I==2 0CI%;;;;/I;;00BI%FFF4I::/ //AAJ%8888/J99/..@@I%FFFF6I88. -->>H&AAAA5H66-,,>>H&AAAA5H66- ++>>H&1148ϼ844.H55+ ))==G&>>@KLAA7G44)((;;G&::QQ::4G22( ((::F&66^^661F11( '':Q:XX:Q1' ''6654210//' &&:6:55442210/.2..&%&%%&%%&%%&%&&%?    !"r#G$"% &&%&"#$%% %%%%%%8'8()+++++++++++++++++*@2@AABCE@@2.0tar_gz     M!K.0_.0oͯ ˺ ƹŲĿþ蚭Ŀꘘ笘瘗񘐽𩕕敕u𕕔𩕕攕𔔩攕u擧𒒓撧½u쒑þu 썑Ŀu 쒐ſu ƿvƽº ¼ þĐ¾¿¿  àŸșəٔșᨬǙߴƙݴřߴÙ򼽽Ùߵݷ޷˿𶻗ݸʾݸɼܹȻ񻺺ܹǺ ϔϔǹ  ŷ@qqqqpqpqpqqpqqpqppqpnjkjjkjkjjkjgggggggddddcdۂddcdddμa`aa`a``aaaa`ͻ w_^__^_~__^_^^}^_ͻ w\\]{\\\]|{\{\{\Ͻ w[{{\[[[[\пw YXYYYXw YXY YcýwY杞zYYɰϵYYYYźYYǼYY ½Įllϳll׵ll㿿lll㽽ll㽽llkwk j~z~}}|{yy~~jỻii~j~~j~i⹹hh||LQQT||h gUcc[uuge~UsssscssfḸee}}UjrqeḸcc||Unnoobppc෷aa{yUmooa෷``xxW{{{jll` ߷^^xxW{||}}lkk_߷^^wvXggilliiaji^෷\\uuXxyyzӃ{{nhh\߷[[ssXqqŕrriggZ߷ZZrqXllllffeZ ߷YYqjqqjfY ߷XXllkjihhggfeedaaW WWmkmjihhggfeedcac``WUVWVUVVUWVVUUVUWUWVUVVU? ﵵ摦菏奏収䌌G::䊋䊋G::䉟㈟G:::: : †† 666666666666a66X=55XX`44C@FHFFDCBA@?FCC444CQCCQC422BBJ##$JBB41DI%//)I==2 0CI%;;;;/I;;00BI%FFF4I::/ //AAJ%8888/J99/..@@I%FFFF6I88. -->>H&AAAA5H66-,,>>H&AAAA5H66- ++>>H&1148ϼ844.H55+ ))==G&>>@KLAA7G44)((;;G&::QQ::4G22( ((::F&66^^661F11( '':Q:XX:Q1' ''6654210//' &&:6:55442210/.2..&%&%%&%%&%%&%&&%?    !"r#G$"% &&%&"#$%% %%%%%%8'8()+++++++++++++++++*@2@AABCE@@2)#folder_closed     : )# )# /s s}}~}|}}}~}|}p p~}|}¾ًy~}|} ꆅ~}|}e }eppS񼖀_e撑un~ti}!s`}rk} rx}p}~oƜ~~o~~n ~m~ }l~}l~}jz |iz {iz{hz {hz{gz~~~~~~~~zfzz~~}}~ ~}~~}~~zfzz}}|}}|}}|}}{f{{| |}||}||}||}}|}zezz||{|{|{{|{||{|{{yevkkjklmnopqxzel{!{oz\;j!jdW(  﫨櫞ÿ ıÿ ϲؽհp׼¦_}ջ򽼼~Ӹ󻺻zӻ!zҺ㻺к ϹΔ͸󹸸Ц˷ụɶѦȶ𶵶Ŵ ij!² ˡ ˠ  𦥦!N!r(    ̏}՘ղ!Ӿӹӽ߾       !p!(  %`* #$$$$ $% $ $ $$$$$%%$$$$$$$$$$$$'e!܂$$99:;;=99=;;:99$//Layer 5     ,//// Ҵ üs ̽%x x Ҽx ü̷sx ̽ůr ª Ҽ§ ü̷ħ ̽ůũ ªܭڸҼ§̷ħϬݸ޶ůũ־ªƭڶ§ӳ£復ħШݸũֿ˹ƭڷdz¤復 ˷ݸﹺ̾˹÷ƺ祦 ý𹺻˹ֿվսսֿӾվҽսѽսнֿӾнվҽϽսѽ׾սнӾнҽϽѽ׾ннϽ ׾      t'yy ytysս Ժ ֻؽսԺֻ罹ؽ֪ս̱Ժ׵ ֻ軽 ؽװ ͵ض̻ Ҿɻ𲴶       4  ~< ~}:#(2U N      9&'()*+,,,,,,,,,,,,,,,,,,,,,,,%&%%(/unknown     0(/0,(/0<ͯ ˺ ƹŲĿþĿŽļu Žu˳~z½uʛywþuɛ샂{yĿuɭ뛹ſuޒƿvÄuomƽºpn ¼mk þplrĤ¾zrrģ®~{zٳ¨}z  àŸ ÿ񾻽 $( μͻ wͻ wн w湣w繣좡wˣȤwǮ氣žz⣣ɰϵϣśӽ ɗĮ͜ϳǟ׵͢ ߧţ㽽񴣣ⴣỻ⹹ڣ ٣ ٣ḸḸ ߷߷ ߷߷ ߷߷$(   ﵵ G::G::ֿG:::::ϴڽ޻׫൭㹶༸Ŀ     $(     rG"  !"##$$ $%%%%%%%%%%%%%%%%%%%%%%%%!$*2@AABCE@@2plugins/file-manager-advanced/application/library/img/src/icons-small copy.pxm000064400000145400147176754550023564 0ustar00PXMT_DOCHEADERIN]#m~METADATA  streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+ _IMAGE_ZOOM_NSNumberNSValue*f_MASKS_VISIBLE_RECT_{{0, 0}, {0, 0}}_DOCUMENT_SLICES_NSMutableArrayNSArray _PX_VERSION_ 1.6.5_DOCUMENT_WINDOW_RECT_{{712, 4}, {200, 874}} _PRINT_INFO_ NSMutableDataNSDataz[378c] streamtyped@ NSPrintInfoNSObjectNSMutableDictionary NSDictionaryiNSString+NSHorizontallyCenteredNSNumberNSValue* NSRightMarginfH NSLeftMarginHNSHorizonalPaginationNSVerticalPaginationNSVerticallyCentered NSTopMarginZNSBottomMarginZ_LAYERS_VISIBLE_RECT_{{0, 147}, {239, 240}}_DOCUMENT_SLICES_INFO_PXSlicesPreviewEnabledKeyPXSlicesVisibleKeyc__OLD_METADATA_FOR_SPOTLIGHT__ colorMode layersNamesUntitled Layer 8Untitled Layer 7Untitled Layer 6blue-document-zipperblue-document-flashblue-document-text-imageapplication-terminal script-phpUntitled Layer 5Untitled Layer 4Untitled Layer 3Untitled Layer 2Untitled Layer script-code script-codeglobeblue-document-officeblue-document-pdffilm music-beam-16imageblue-document-text application blue-documentLayer 1dir dir-openedfile_extension_mpegfile_extension_exe applicationLayer 0keywords csProfileNamesRGB IEC61966-2.1resolutionType resolutiondR@ canvasSize {16, 1280}PXRulersMetadataKeyPXSlicesPreviewEnabledKeyPXGuidesArrayKeyPXGuidePositionKeycPXGuideOrientationKeyPXRulersVisibleKey_MASKS_SELECTION_I[73c] streamtyped@NSMutableIndexSet NSIndexSetNSObjectI_ICC_PROFILE_NAME_ے_ORIGINAL_EXIF_{TIFF}ResolutionUnitSoftwarePixelmator 1.6.5 CompressionDateTimeNSMutableString2011-07-02 16:15:43 +0400 XResolutionB Orientation YResolutionB{Exif} ColorSpacePixelXDimensionPixelYDimension*kCGImageDestinationLossyCompressionQuality PixelHeight PixelWidthHasAlpha풄{JFIF} IsProgressiveYDensityBXDensityB DensityUnit{IPTC}ProgramVersionPixelmator 1.6.5ImageOrientationKeywordsن ProfileNameےDPIWidthB{PNG}XPixelsPerMeter YPixelsPerMeter DPIHeightB ColorModelRGBDepth_DOCUMENT_LAST_SLICE_INFO_PXSliceMatteColorKeyNSColorffff transparentPXSliceFormatKeyPXSliceFormatPNG24_LAYERGROUPS_EXPANSION_STATES__STATE__ID_;92352D33-BEFB-4A00-B68D-0F5820D3E342-34139-0000E0B12CF05B8B89;B5A88CD4-059B-416C-8D3C-29E0248EFCD8-34139-0000E0AF0B61588889;6F8BFC21-2EB3-48E7-B6E0-94AE9AF57B08-34139-0000E0ACB5DFA93389;94E65854-C0A3-43CE-B5A9-193CA1076463-34139-0000E0A9F5D631B689;B8FDFB16-BEDA-481A-AA0B-EC14C0FC4102-34139-0000E08C1EBDE39789;1877DB60-E816-4460-B972-EDE51DEEE0B4-34139-0000E0861C377A6689;FBFD89FC-7050-4E67-8997-4DF17F3B4C29-34139-0000E0600B7D2A4489;4B50D76C-C380-4B7F-9C44-F1BC0E7CCA19-34139-0000E029DA4EADC189;4871A4F3-8357-4229-A29B-A40DEFCF3D65-34139-0000E0149A66885289;978681AD-3906-421D-A009-EF9632EEAFD4-34139-0000DFFC4D2F017B89;AEEEE2D6-0935-40B3-80B2-9D5FD83AE151-34139-0000DFF8EFF6C02789;1C8CFD11-5BC8-4921-A2C9-BFC435022388-34139-0000DFF5ED5BB5E089;B5E5BCC3-F31B-4396-81FA-126F4627B037-34139-0000DFF29ABF2DAF89;D528B246-64CB-48B6-8888-A691D6D873B7-34139-0000DFE82FD6841889;DCE88FCA-1ADB-4C55-B4A0-146CFB06E63B-34139-0000DFD44D2BE28789;3ABE6755-1173-49C7-87E7-ADB8EE87D090-34139-0000DF64928BD4D589;0B88DA97-EAD9-47D2-B4AB-BACEBD348E6F-34139-0000DF3786A7F25A89;DD69E198-0D36-4EB6-9C1B-6DA63FDAC3D3-34139-0000DF24AAA0FBA289;4287CBB1-6C2B-437F-A970-A3C40E157AEA-34139-0000DF0B7C478B0389;1FFB0EDF-BEB7-4304-BA21-460EA78D0511-34139-0000DEF3D95AC23589;D01D764B-05D3-4F17-8BF7-9904CD516B4C-34139-0000DED378FA868489;B870949D-8C3A-428F-906A-BCB7830D1D24-34139-0000DEB42B147D4189;B3C032D4-132E-4F16-A7B7-729D4677FCAD-34139-0000DE9ECE3BBF0389;DC77C90A-5C7B-471B-AEA5-1238F7E1FB7E-34139-0000DE575AE40F3C89:B49E082D-A1FB-487E-BE17-E16F73A8F48E-7317-000022DE0376C4C389:2FF17678-F87E-4E6E-974D-AEA1452BD260-7317-000022DE0375EFB689:E171E19A-6285-43FA-A545-2E08E088286D-7317-000022DE0375382589:006E318C-BD27-431A-AF83-E3B0BFDF3832-7317-000022DE0364379F89:942D4059-6B5B-4B16-BBC5-36E294E422BD-7317-000022DE0361715A89:9D4AFCE3-1E59-42D2-AB1C-D4C2B0A3214B-7317-000022DE0360826589:C24D76FC-604F-44DD-ABC9-DE5742197FC4-7317-000022DE035EDBD5_IMAGE_VISIBLE_RECT_{{-61, 0}, {169, 832}}_LAYERS_SELECTION_8[56c] streamtyped@ NSIndexSetNSObjectI GUIDES_INFO8c COLORSYNC H HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP ?.J`<_|}cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmLAYERS$D'*..15J8<~@ CMFIMPWSV[^bfhl+oruw{ ~|WJ Untitled Layer 8d';92352D33-BEFB-4A00-B68D-0F5820D3E342-34139-0000E0B12CF05B8B@x}IH[Q_`"qHU(ETp@Ab7.]H6.*\Wlԅ(9g&_@OW?. %wpSkE.9i.M:3&=%)o>g~ uNUxX_NzJ?IMI|̽Y nVurG N/sQɑ5"`N8~4=6p?΂QFԖfw/2 x4]Fԕꉛ;2<dm]F4M0>\ƺq ]F4K\)|$}<#j,(iOv)rā-(if>z"^pam(iz:Gѳgx#2:o||M8$+"tQ!&O gxc2,bC8$+"xc2] 80؋t^pxˈƊzc>tyMJ streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCBJ ~Untitled Layer 7d';B5A88CD4-059B-416C-8D3C-29E0248EFCD8-34139-0000E0AF0B615888@x}IH[Q_`"qHU(ETp@Ab7.]H6.*\Wlԅ(9g&_@OW?. %wpSkE.9i.M:3&=%)o>g~ uNUxX_NzJ?IMI|̽Y nVurG N/sQɑ5"`N8~4=6p?΂QFԖfw/2 x4]Fԕꉛ;2<dm]F4M0>\ƺq ]F4K\)|$}<#j,(iOv)rā-(if>z"^pam(iz:Gѳgx#2:o||M8$+"tQ!&O gxc2,bC8$+"xc2] 80؋t^pxˈƊzc>tyMJ streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCBJ LUntitled Layer 6d';6F8BFC21-2EB3-48E7-B6E0-94AE9AF57B08-34139-0000E0ACB5DFA933@x}IH[Q_`"qHU(ETp@Ab7.]H6.*\Wlԅ(9g&_@OW?. %wpSkE.9i.M:3&=%)o>g~ uNUxX_NzJ?IMI|̽Y nVurG N/sQɑ5"`N8~4=6p?΂QFԖfw/2 x4]Fԕꉛ;2<dm]F4M0>\ƺq ]F4K\)|$}<#j,(iOv)rā-(if>z"^pam(iz:Gѳgx#2:o||M8$+"tQ!&O gxc2,bC8$+"xc2] 80؋t^pxˈƊzc>tyMJ streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCBN blue-document-zipperd';94E65854-C0A3-43CE-B5A9-193CA1076463-34139-0000E0A9F5D631B6@x}IH[Q_`"qHU(ETp@Ab7.]H6.*\Wlԅ(9g&_@OW?. %wpSkE.9i.M:3&=%)o>g~ uNUxX_NzJ?IMI|̽Y nVurG N/sQɑ5"`N8~4=6p?΂QFԖfw/2 x4]Fԕꉛ;2<dm]F4M0>\ƺq ]F4K\)|$}<#j,(iOv)rā-(if>z"^pam(iz:Gѳgx#2:o||M8$+"tQ!&O gxc2,bC8$+"xc2] 80؋t^pxˈƊzc>tyMJ streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCBblue-document-flashd';B8FDFB16-BEDA-481A-AA0B-EC14C0FC4102-34139-0000E08C1EBDE397@ux_HQ}97$meMM#$  |z`eIL"SFFL)4-ι5׬?tp/?{&UJ^e4JlS2Y>!0u.s#ξ`DCqA:!( CAVЋ ~"3ΦKErlj(J',s"m8RP|qEc~;\הA,)>oRm택TP.%yHzh]:t I^''lB㏔e6ʕ ya_&;wb]xOkg'K}ȳKlldMT ^ȾH(W{|s(1=4Bg\۰#|sCB幗PicMRFbV\BGxy'.ʵMVcNiun)܄k䫨?gc:+S8Y6S47~fZ2.!0?#ue ʼhp!/-:6gYBTk̷0`YBTo?u0p"¼gl]`YBt\P]?fYBH t streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB blue-document-text-imaged';1877DB60-E816-4460-B972-EDE51DEEE0B4-34139-0000E0861C377A66@Ax[Hqww]d$"bDB:CQ(򢠛. EG1b4Vkت÷tymmZ4E<B2j_ s獢h:Xў'3|0>pA6\'! Q{DL9K;+憑T܅C1C֭셳:\}Aޥ[F+Yy3-g t[F + |M(u,Gn:"ĮM7aT\ФPO@d%,!N|vƇi)/2ecAsq/9"Ԟ3x=Ll!(#ۢg =gl+qAf7܋b)w#g tNAYBH  streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB Sapplication-terminald';FBFD89FC-7050-4E67-8997-4DF17F3B4C29-34139-0000E0600B7D2A44@C@xMkQ)FD"?&ZF8Ə?ILS,.Z"H A$YZ@, _Nk]h4v]1+u:rX,xx||>t:d2d<7w~~ŏ _>zbf~^5.njpyy NǺ88C(B0D ss[N'^om8dl6C@VCZERP1A@`gy #'˔$ c^C4 Ȳh]$"aH1>xxzF#\\\@}7M<.Ľ=X}*1(@pWTD:[!"JAE#>-D'PΤqˢZ,T-@L]o6O=樯QL%qHo)TęV9LYed:w݈thmx5Il޴Ɣp`PAigTekIlEͦVZ\N|{ Y& M$˳B,V;:;n ΌS^I+|r:yڃ]+y *RK.QnKo6"瞤VUio6u<lj{6wZZ3rl:rWjՍClߥ|'0<ЋpGMpaӞL!o0=n؏C9߸Qh4K=Z-=[ gI"@^XH gI"@cyD"Aryb ,őL2H8d2I/6"m4?y?e'0=5 JrdyH[S[y\.B9XZe%{HG")*)X2x/"9 streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB?Untitled Layer 5d';4871A4F3-8357-4229-A29B-A40DEFCF3D65-34139-0000E0149A668852@xK`2iȈSwp?] aA<8? N"/S[ۙMӴ]M!j?;,3̒"dpZ1NpzYf%EHnլhN< w7L?;{fI(UZB[H$3x iWkVXEQϹ3x DnzKH&Q.w0Kp8bV{gcYRrE Z6(Y|a!6sJ9 ?V˰ uKmSSϗm#ď-K( MB5z^oD(@r{28*`WI1I@+$+) streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB? Untitled Layer 4d';978681AD-3906-421D-A009-EF9632EEAFD4-34139-0000DFFC4D2F017B@xK`2iȈSwp?] aA<8? N"/S[ۙMӴ]M!j?;,3̒"dpZ1NpzYf%EHnլhN< w7L?;{fI(UZB[H$3x iWkVXEQϹ3x DnzKH&Q.w0Kp8bV{gcYRrE Z6(Y|a!6sJ9 ?V˰ uKmSSϗm#ď-K( MB5z^oD(@r{28*`WI1I@+$+) streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB?Untitled Layer 3d';AEEEE2D6-0935-40B3-80B2-9D5FD83AE151-34139-0000DFF8EFF6C027@xK`2iȈSwp?] aA<8? N"/S[ۙMӴ]M!j?;,3̒"dpZ1NpzYf%EHnլhN< w7L?;{fI(UZB[H$3x iWkVXEQϹ3x DnzKH&Q.w0Kp8bV{gcYRrE Z6(Y|a!6sJ9 ?V˰ uKmSSϗm#ď-K( MB5z^oD(@r{28*`WI1I@+$+) streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB?Untitled Layer 2d';1C8CFD11-5BC8-4921-A2C9-BFC435022388-34139-0000DFF5ED5BB5E0@xK`2iȈSwp?] aA<8? N"/S[ۙMӴ]M!j?;,3̒"dpZ1NpzYf%EHnլhN< w7L?;{fI(UZB[H$3x iWkVXEQϹ3x DnzKH&Q.w0Kp8bV{gcYRrE Z6(Y|a!6sJ9 ?V˰ uKmSSϗm#ď-K( MB5z^oD(@r{28*`WI1I@+$+) streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB=Untitled Layerd';B5E5BCC3-F31B-4396-81FA-126F4627B037-34139-0000DFF29ABF2DAF@xK`2iȈSwp?] aA<8? N"/S[ۙMӴ]M!j?;,3̒"dpZ1NpzYf%EHnլhN< w7L?;{fI(UZB[H$3x iWkVXEQϹ3x DnzKH&Q.w0Kp8bV{gcYRrE Z6(Y|a!6sJ9 ?V˰ uKmSSϗm#ď-K( MB5z^oD(@r{28*`WI1I@+$+) streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB:X script-coded';D528B246-64CB-48B6-8888-A691D6D873B7-34139-0000DFE82FD68418@xK`2iȈSwp?] aA<8? N"/S[ۙMӴ]M!j?;,3̒"dpZ1NpzYf%EHnլhN< w7L?;{fI(UZB[H$3x iWkVXEQϹ3x DnzKH&Q.w0Kp8bV{gcYRrE Z6(Y|a!6sJ9 ?V˰ uKmSSϗm#ď-K( MB5z^oD(@r{28*`WI1I@+$+) streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB: script-coded';DCE88FCA-1ADB-4C55-B4A0-146CFB06E63B-34139-0000DFD44D2BE287@xK`2iȈSwp?] aA<8? N"/S[ۙMӴ]M!j?;,3̒"dpZ1NpzYf%EHnլhN< w7L?;{fI(UZB[H$3x iWkVXEQϹ3x DnzKH&Q.w0Kp8bV{gcYRrE Z6(Y|a!6sJ9 ?V˰ uKmSSϗm#ď-K( MB5z^oD(@r{28*`WI1I@+$+) streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCBG&globed';3ABE6755-1173-49C7-87E7-ADB8EE87D090-34139-0000DF64928BD4D5@xmyHavGPXEX X䅖GFy4[PyfΣ"n6MiӶNܷ~y|?~%\eaft90rs#KL`i ^c}vRdNj2LvύHT)G.᮵X0(t]047 ec8(J K4_ZYEOUAcvB]/L3`كڛS'+NA̞T dbu Z,NI*,j1?~ eFeO uCg s m t#:sojTCˁ }A ;0Yn$>Gt&N(1 O=ҬCe, r@CM ĉ{9L?΄inM;fltO2oxB XH9H=3ְO.OE(8皫;C\cteGtf%7%hӠ*Pi>c$"-8Xh`[Gtf !qvx_TBSotȞD-Gts6جtM8x#8uWk] sHY4:h:<*8"Qv OT& &\MM#ލ\:csvv:{'ؒ0o- streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCBblue-document-officed';0B88DA97-EAD9-47D2-B4AB-BACEBD348E6F-34139-0000DF3786A7F25A@mx]HSaǽ;. 4$Ȓ qF) Ax J))"‹$C"3n6t>>>=k!9p+/* w=OO#|?߰"&!ꚁ6- '?/gΞN(2"< !Omּh8Yضon 81 c(bo[I 1 | $ݡX8nzޅFZjD:x/t*;n}PM;:v¾tQ'0:\vù[О{^v΃ҙwHQF Gn=Zd!5T#-DT$ ]656\)#-D}jg:ˮ~.~p?itQ NEm}Hż+KDq\cҲh=,]^z3zþtsP=PקEF|%%']3%p/)Y73.36UvEV /#r`+'+?Oq/)DNaCSG streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCBblue-document-pdfd';DD69E198-0D36-4EB6-9C1B-6DA63FDAC3D3-34139-0000DF24AAA0FBA2@x[HaĴm ILsiR`HF-3R /"ꢛ,KnPC(*J2"3n\sj꜇y暦{>*9i Jh&p9j ޅa;,#Տ ٪?],:O \3pM K$Tn'Yw5Y? rjcɲX?y`,Yx߱β2Qlm`]R8(9OX" 7t streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCBH_filmd';4287CBB1-6C2B-437F-A970-A3C40E157AEA-34139-0000DF0B7C478B03@xnQy7KczJ "mX(@ A JKؒhI&rr7zѕ|9d3P7W]TU}Oa)A12S㈘!pGt;}n:Y/:6xKdtgΊY|A{?tG'fj'09$""F1P -CZCso 9U]&v:|~7E+Fۇ^!O< M;g0-4hghd#hİQWx@dbBgjNbBσnB8Qҍ}{w/ʬdvlONtG*ۢ$20/c/atZ fC2LiN8t`_D{g,sz';pGtsDF881qsự󊎋VTy?"e2eͶGtpcJQ]ү.梨/zC streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB - music-beam-16d';1FFB0EDF-BEB7-4304-BA21-460EA78D0511-34139-0000DEF3D95AC235@xc@e+UB9YD"wZԯ@QW˪]fY`~nMtaEN;٘AvJo@2+6?H kߞuQ#, iWaNoilwe屁XAfX}_UO+Exg!갿ԗ~}u0NEf6%q׽{ ?zXlO6|P'&E@OsRԟPÖZS/LV:X_lߏ#V'C ݛGZlZJ:p))/\ } streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB6 imaged';D01D764B-05D3-4F17-8BF7-9904CD516B4C-34139-0000DED378FA8684@x]Hqkn]TTd4{^n4@2 \A)DbPBR,jAITkʢεϫ.s7/)3&–m̲--ɳ뺆ty3ҕrmH*ZlEXoGP"%y5MF:{7.P;FjCy܌=-Aa֪j{POQF9` D}<0έ4Ԟ_ݏ/F(7q v%%EXlk۰λ-<{p;҉O3 P#ŎߙqvZaȧ8p9nMF#+Ag,-~G|JB,8TCu |υ:Tw2r57iϖ:\{dx uxZ2"ws*<7ٌczEza/!.i|z։Taž!7F6:ň vxtÕ .xN>L#zAmF+?(XJ?Hxc%D~\|My.<[ޏKM OO52^! streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCBn applicationd';B3C032D4-132E-4F16-A7B7-729D4677FCAD-34139-0000DE9ECE3BBF03@%@xg`ޞ[.QH_ͮ_feVR!D$fe4S HIHE|?iZJ۽P'2r<6 ~kar ><σ7~/ VdeYu]mX4af)t]d2h4iPUF\GݜN'TU,q<"CV(9Wde4 Nx8"Cn?%In(>qv О("C1o6^ streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB  blue-documentd';DC77C90A-5C7B-471B-AEA5-1238F7E1FB7E-34139-0000DE575AE40F3C@x;Has3h0.vT`HB " %$j,ML+/{):}=pyUcVZTR&`M6[Hx@xL~|VHz-qeq=m ; :/d>q>P\܀ àz!uB{gio{f4]Tt5l>sʢ0YC 0t-O>[Ea[{}dA{,* ꆕ\RAvKYT&zW_BEai=tC:,* S} 3;C,* [2Q_NeQak;1ʢ0k9:h_oJ{}|@YTFՊMð?CYT~ }K1T streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCBu Layer 1d':B49E082D-A1FB-487E-BE17-E16F73A8F48E-7317-000022DE0376C4C3@1xQnPEK}՘ƿbKwC+P[%6'<1}32 UOP:ߧ^pIyT?/gjA"IGQ.qI,K4G{7ԘsrK0QtRq՘s3Qv0ƌs>WyVI!16uU%1_3(v3,V~3xp<ph}1kz|SlMWFu{yTU streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB{3dird':2FF17678-F87E-4E6E-974D-AEA1452BD260-7317-000022DE0375EFB6@;x]Ha Zf dwAQmtPTE7% "!i.u:0l}Xln*L,hQ79g{ٴwŢ^qy:al]`SZj~svl-"CflO[Ej1M/: Kde*Kd{e\Yݻv"> ÜNlNtn|xt>?AȥaO{:ԤV\v㠀1F(ԲS&$ĈDWgT{̱Ѫ+f streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCBm f dir-openedd':E171E19A-6285-43FA-A545-2E08E088286D-7317-000022DE03753825@&x]HSacW]F Z-*hj7}@lE])4؜lڪ55͕-6gZQb $*km;g#ӻE%=㼼8T"{j *{TF><Әc /n$LUY"(Weޛ-)Zvu$ު/aӊSD)WNn8sc]MؽwY䉄K[&hEGZ-0i70ݫCl 볊vn+4㟌RLu o`{lvk XI>;tRlB#GeFuH .JkE u_ügםhI|!"o4vEJlNG1Ov4~C=c(_(y+G~òO1&m9Nrjʡ)1Q"溿J{1cH-mZѕAvXK@^C^g>zS ^dY$ X#m;n߬86z/\"z ]XK;qh3iH+M pamوlċ@zH+Q/>ip>ZX'iS&#Ȇ'v, r49ψdN٤P( D y0yOtqJgo.U#s"^y݋["I(/tg2Ol1t Ӂ}`~IB\?i( U_ۣzSL煇G񮳆, cۈ[yfx=)!-t{ dl:s=)H dcb ߈D|4>{SLHMd:Wj۔Ǿn+(mR  streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCBK file_extension_exed':942D4059-6B5B-4B16-BBC5-36E294E422BD-7317-000022DE0361715A@xKhA5&;nu nܨm@֤ u*4EC [E4ŶI#.*Ֆ9L)1\ \l]p; y+Q74@Y|f33.P4y :<סsPz7ίfL&lg'Sy⌬R:H {L׌ 0 աӸpls12r=-,/W4ae"l.I&=|`̢yG|O3r7"ـLzM,G˅yW,/Vy[ֳ0MrQfc W['1Wv.efS<=mh+|QdMusmc[NkIA喒m%;ec[NsAe vI(R5D3ehKb-B:Ld aeʲl6%Dxm[*K@6*vZG^5mKCA,gPo  streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB#Layer 0d':C24D76FC-604F-44DD-ABC9-DE5742197FC4-7317-000022DE035EDBD5@"xox}XUXKl-\1^ hb{C"*TH׻!`=߽7Y̞w̞32{8rHqْ6z'%?={vE*@_̜9(W =UC ,,'.eXRbi?!j(qDEEJ׎ Rܧ ,4aCC XrqN/u ..V cCH{)CSzj89HJLM+@)CDڦLKKS))HHU4H].HW W898"%9V륞lٙdrdeem=ezH\UVᄛL].V=wvrBFF gaL<4n'Nŕ)4WL;oL%K4B{{]Xe쉽bdjqp]˪p.f!\q]ݗ8<ω%Ȕ(v$2(W\W}8h+8M^ҏecNʩ@sz[5_pw{PC\\ԛj:;@/fVԶۉ;w_iRP]ߣvXtr3[oDKj(qe BKB5]FGg3OQRh?#Ob٭g9>>M`YyC :_% ؐ@T*Mb\\݇W`i|VDNP/vQ[C |r]OoBwO](q;(W\Mc o.\Ƈ0)!)b'ln-DG9\19W)g缲I;߻['Wޖɿ/V6{-gt >artj܏ۍfίZKRoa AseL/$A<9ɧY8`/mޛzp_ N{yj783M;N^ VKboW70Ӵz4I%'e4 J>B"_GdE(NjBa/ϓ_|zd[.bluzk~ kJ4fXcoCLJޞUʵ1K\KRP%Y*8VrͻԺ.*vmi+eJB4fRT˥ssLJ0K%`,[%O [ ZTHV,ӎe :oo)Kʔr-i th|-'6b˨$}55Ud!6>g(`ZNps(Zditd9]\"FP?<0 х#4ONNJ >b#j8Ǘj(v=Aن_}#s'?Z.7ȇ$ou{IxW㎺.cJaooShjv_Wkndx/YȚHFSÿcMLդ\V6$\W~CEҴ@uz?U.J8L#ɜ D>J Ğ2=dSI+0J؉bb/~ĬYo~:?{Ŋ ܧ@֋n(q`Eb2n1{) /^uFZJp}1ʕ.[c,_m\PJ~}JU 篦5c~ʙTL:r?Ѝ7ARRB˺1/߷o Ipe+hѢnC{(=2M7z>hh޴VL^/kGr<|rua!̚j?DRQB aJjmYyrmGCkG֎H0g*,Z dgԿ2^j3LzDBH?? )#$C2X?DxYb8w^V-cÕ)8qaz"hD[zCǀ=eyQVpgV wwV+!p[Yl+}],fzߊvjgskkpbYٽ[K>)vW+Rl5J\!SW~~jZ;~)GFF"2* d"LJb!~)A\l$)KLFL LYFV+S;g7*xvdV% hW88JHVsc_ׯUZ쵹v066>KY^Oߡ~ŝ_{o/xmKŸ p3)wʨVA_T,%?W#bգ|.<2[O?poᳯs92枾iQx?+Y\bs9RIJ?+~KBuTg$ =1I:ʵ܇9Qbϋ|t iHDVr e{#:%m>CF|뺃nJ[UYZ>MJ>: GwYN^Թ6H54 4nDo-G9d}P v.ܤ+U{〃@떷2Ne9OP}@w]Xk"Ѹ5u/ĉ5k$sX$;pƚJbdqkMU=c?b Qa F] ^ON5u>Pƭڵ.oSB2V 2\F? tѤyQIAf0sNK Jrm{[hm]-&;`˖]])64-:<3fO@?3/ )C 2$_ kܼyC-C(2=$.={ kQ !q;~zcNU^)_YC}ASeAk߹@ž z bcS̙$ejڛrR'9*:?Nϟm(CS ϛ4J\gyȞ@7(ίI˺_=M*Ts3̡3&:VR374aRW/^Z1h[M/ ceɎ_жGxuE)CazP>]~H@ӎ2CALOOen@ΏDD툌[J'#*2\=!{7j?A'~/.& qߺN;r6+a ½/OYIhyWPFh;`zRBӋKLO@aƝ): .ǃV M/.%.+ BU~rƾyzhzyiyIU7~';zhz{iy9x>~(sUFJUhzܬLd|8\nSǛ_r&e)R;ؽy܋FNNpT$ᙑT\:VCCv0,LojOHœ8:W75&%%!.z{[:#$G3ojLUVآ~CC/،ҥ;L-׋Ԙz,oqUm8"ޠ~yŒ42> o3nff^5IGg_e hn1M _{CDrIB!Է5tkI MW2w BgGRBv_~':<̺#?^6yo~W1yn,oV HKo0 B۶mO>Iw*>Db`cc#עqС VQ+W'ѣ^a6S|7ҷ'Ê)"&&&:u?Jz%F[nv;kz̙+nnn&gõbA~v([]UV,XpyD~ХK1 ٳLz+ԬY3}Xͨ~(ϱ(/6lF[1"/(UFYv{[f!>;9V{%0G[O/~s>e[=bhU(Jh}lfe~E'P.*qr%~ͷѬP|z`vzSʅ,{3J G+;P{M3hV(jr/`.sԧd'%([fI(s֨[T7=`gLKsC_/1KܖW<נӬp*;sg{E*^Ptې\v޴z5ZT_dE0f&Ӹ_< E42o[)M*+E ʌ;f pwuws%ٯCщYܺq WWp\%]BQF͎\TTp ?+rG:ҬPԮ~a,d8ݒ-Ƶz2PTf⯣{`:N3/y][s4u.OT2ڌf ̹;?];}%~5ng^9: ໘84m>Ygm˪JV}'^o=c7p ']Өn![4+l~D҆P~\EW2ZlJ}h[:,¾GvϭȰUhnYͷ\}e.rJPx*jl88ӬpT=@pR)q]GhPt;T˩ܢYL~#mll ipV).R~-5}@_POZHSKT33(q{d,MB~-4KYK"Qd| .Ro1e_}*mVQB{ streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCBMASKSPREVIEWs@_@xTM$QkQh&K=%D]#XPAPD,bGP@+bЫu(3sf73ǵfgD-TZSuJSim\ d޿HԸ0 t+XSݬL})=ZԞ{Q>sGp+0Ž8 XWBĢg:/پwkM,:z;5+)q!q\X+}ԛ A?kŢgb{V,:}wAvU / kŢcPf!b{޲V,:~:Gi# .I)#Q?=!aXtHOo1=cXtĉb{;Zԫxs$הߏ8V,:inj#֊EP( Ij^=ye,iɘN+-^4-Uު)%{H pAR}w6be]z{teߨZ˿YU2UKjk[ rD5;N"OlCXe9s]fɊqɺmDǺ 6"VV#{2W":DG[4p<ߍHkT{e'm%unolOժTnR( BPGv{~8wc-kٷ\\\?ɀHwێ'VduE?-?|C6MujѸח-ҺIΟ~%e_R N!jdg} S}vwkה}InbՈa* Ll8 H=#^$H;!ZdC=to>G/mJs!5xE@N3rr䟭"A(^\ڃ[Vbv.L\n"o[#K&ojl5_\5X}s/rYr e8HIX&0p82Ara3ra\f9)ę%c6Lж% [2&Q{~mEb/q{nq{T$I.H>z Jp{Nt\X5 ߄y"qSyIn0CbM~hS1?9RwXǦUP( B(SL5kWŋ"gg+W :& GHH??zXYDizԩc ///xzz8p<<<WWWܹ...ضmlCϱ_޺u_H+.77/$zUք,Wᤴ4$''衷FS ^H[ZiIIIs zT2{!C\ݻ/$z}ǔ,Y"z;P( B?Q8#zoE=uυb9q;$⣎#.n^8gXtpN? ?#;̾u5eXtpNܽrw.8Flv_X+ya8wfg8B eXtpN*<9?q1"#Amagviwb9' BB\q]p8!{q=Bnc_P( Bohެ"z}\Kqw, !gMW톜=/r}̓},r],'?nަGu\Ryg6"Byـ<a? ѝHy z?jRwb~~6N_&f/O qYǣe"?ѽh<zmҸt oύ?. 6 npɠ?=%''m5Acغ'}\{8‘~Oof2 z}QiYѿǻ=>ӾkySͱx~oYx#x} ۨa޲6On^G? R~-N~+)x+2c"=8zmРڬ{:ۂ8dNٍCT\!7,ƃcqAuT)';iw^HkfVjL*e+ BP(e_WJީ|~n`$"yۥ`^cWw8Ob94̎|eS5]+O%ssWnQ~ 3f~QKg%[ƴkIF4#˹Sɲm]ݟԣOMJNeP΁9nC:0_6? :>?~ӑq|"ί+I.:iMSo9ESDٙcXd33PҸ[O gJe:.ޖ>P=i= Y?|~X= vms/\~{~Oұ?T3uŀZ BP(ƋZ0H{C~NRn\5"RFVH}kOzn]͋n\fQ "lv?kx΃ gC`]XKY=sL!Z횲V,:8's 8ׁ%x=8k2r^V,:8'Zzo(Zj=8eXtpN:42_aT zSlQ:}7%H~s靈8G6ovGwaBP(  Q*EODI*7E}P~=?+CjpTkm.ZHTmqUמݙ2PEF(!Lpه9iqs ~zG "2~FOB0`wGGPi9/1d@gn(YCxMM3D=ض6 w?3慠l]}1ߡ\mO=`35t[ri(pԉm+TC'vܲ 6wlbd(Yq֊~o[)ZIbW2ݍ=,C*C( BP+!˹L缋ڳ2g+cUes`<]g+H rQJwLEIev:i&-zs1V{62M\]_ v/pvF/ms4X _юKoEq]$9_\ި]S[΋/t[%V#ܮs^;}/= Dʯu]ܧhd =kpq0b7D&K̑U^O%^WR#Zu>kTzz+{j:BH>cix.UX/6|/*:; ⚁{{ZP%?;mdZZׯ]ٿz /e BP(_vwZ07oz.$B}1aqD$w_?M(Wbo k^\ ?W̛;TR,VW^y٫WJMl BP(33un>ְV,:)%[0c0k0s۸5f [f f ff}aXt0S0[0c0k0s0{P\6c kŢBBP(*Œ¬Bq۸5fl&(*,6c kŢYم:qkX+$&(*,.׹XZ`&QEP( PAffff}aXt0dK6`F`V`f0qkX+ ׹XZ`&`6`F`V`f`vm֊E3 BP(YTPYك:qkX+ْ-159Lm֊E3-33un>ְV,:)-159=(sbLBP( ?eʔWfAճxSqD 22a A@@@9Y 8`8mAo:u,OOO>|ꊝ;w۶m-ppp=d˸VZG+t ]vE.]йsgt ۷G-Ѷuk|Ѷ->%uO_pp0lll0uTL4 3f F>{˿Wo=&=c2~rְQ0tP=0Oo zUɓrl2=ѷ{w ØAa9lZ5d.5ȑ#qp<<'о}0J9nL9?hݢFSK 6 D߾}SGzˆocAn0Lv,0TBjզuGoNְV,:)TP( BѲA>5ΨV ςK~=ږȼ w#qFp^)7Cq+XSݬL})=ZԞy9snFdjT(XtlYgrVe<ի?l_X5&Zם>w¼υbѷMY^A?ϝ{Q>{Z;sşr;TA/qa`Xt lHe^c `Xt jl5޽_4s0| ֊E \Gڃb{;ZթjF\=2;Z7(bz;Z׭IZx.V,:&j~(?=A\=x_xoKkŢkk^zi)ObQ( B[QC>>+{z{޲V,:)TPCP( yQC>>+{z{޲V,:)TPCP( ?/*9Y؃؃bL/ BP(x2C3SejX.YT4H*rs_Tzڳ2k GѨ2DQQ~ٝ( Q)92WԹ_ *6= ݵgw8x.é.>r\9W$*49vkfAfaHycڒ>tCFڳi^<|9f[vm={fxVxe}v®=q(oN{v75n:Qmj$rԎ[fnd(Yq֊~o[)ZIgwcO>{HxZ"B2ijZ(%plugins/file-manager-advanced/application/library/img/src/icons-small.psd000064400000630665147176754550022627 0ustar008BPS@{8BIMZ%G8BIM%}Ǿ pvN8BIM$P Adobe Photoshop CS5 Macintosh 2011-01-20T17:47+03:00 2011-02-04T15:33:45+03:00 2011-02-04T15:33:45+03:00 application/vnd.adobe.photoshop 3 sRGB IEC61966-2.1 xmp.did:018011740720681188E6C239B0A8A931 xmp.iid:C7C4172C0E206811A3A3FC4A228C975D xmp.did:018011740720681188E6C239B0A8A931 xmp.did:018011740720681188E6C239B0A8A931 created xmp.iid:018011740720681188E6C239B0A8A931 2011-01-20T17:47+03:00 Adobe Photoshop CS5 Macintosh converted from image/png to application/vnd.adobe.photoshop saved xmp.iid:028011740720681188E6C239B0A8A931 2011-02-03T20:28:49+03:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:038011740720681188E6C239B0A8A931 2011-02-03T20:44:05+03:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:048011740720681188E6C239B0A8A931 2011-02-03T20:47:19+03:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0480117407206811A3A3FC4A228C975D 2011-02-04T14:56:04+03:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0580117407206811A3A3FC4A228C975D 2011-02-04T14:56:54+03:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0680117407206811A3A3FC4A228C975D 2011-02-04T14:57:23+03:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0780117407206811A3A3FC4A228C975D 2011-02-04T14:58:19+03:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0880117407206811A3A3FC4A228C975D 2011-02-04T15:04:56+03:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0980117407206811A3A3FC4A228C975D 2011-02-04T15:06:13+03:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0A80117407206811A3A3FC4A228C975D 2011-02-04T15:19:11+03:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:C4C4172C0E206811A3A3FC4A228C975D 2011-02-04T15:21+03:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:C5C4172C0E206811A3A3FC4A228C975D 2011-02-04T15:23:53+03:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:C6C4172C0E206811A3A3FC4A228C975D 2011-02-04T15:32:31+03:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:C7C4172C0E206811A3A3FC4A228C975D 2011-02-04T15:33:45+03:00 Adobe Photoshop CS5 Macintosh / 8BIM: printOutputClrSenumClrSRGBCInteenumInteClrmMpBlboolprintSixteenBitbool printerNameTEXT8BIM;printOutputOptionsCptnboolClbrboolRgsMboolCrnCboolCntCboolLblsboolNgtvboolEmlDboolIntrboolBckgObjcRGBCRd doub@oGrn doub@oBl doub@oBrdTUntF#RltBld UntF#RltRsltUntF#Pxl@R vectorDataboolPgPsenumPgPsPgPCLeftUntF#RltTop UntF#RltScl UntF#Prc@Y8BIMHNHN8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM5d8BIM8BIM 8BIM 8BIM8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM>8BIM08BIM-8BIM@@ X8BIM6nullVrsnlongenabbool numBeforelongnumAfterlongSpcnlong minOpacitylong maxOpacitylong2BlnMlong8BIM3null Vrsnlong frameStepObjcnull numeratorlong denominatorlongX frameRatedoub@>timeObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlongp denominatorlongX workInTimeObjcnull numeratorlong denominatorlongX workOutTimeObjcnull numeratorlongp denominatorlongXLCntlongglobalTrackListVlLs hasMotionbool8BIM4FnullVrsnlongsheetTimelineOptionsVlLs8BIM8BIMnullbaseNameTEXTUserboundsObjcRct1Top longLeftlongBtomlong@RghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong@RghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM H HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)Km8BIM,8BIM  Adobe_CMAdobed            "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?~ҿ~o:ޯ?ԕs`vٍ SWJϥ$sr~-?R^O'w~zXvϥK3?I}_R{c_u;7A=c7?F?DwПO?RS,M_"gwCƞ<ޒpGS _/ +~"J,c߯p-G+)?wo=e} m9$#>=Xv?{%%ny_o #ŏЗv?d_TI%?TI%?8BIM!UAdobe PhotoshopAdobe Photoshop CS58BIM".MM*bj(1r2i ' 'Adobe Photoshop CS5 Macintosh2011:02:04 15:33:45@&(.HH8BIMmopt4TargetSettingsMttCObjc NativeQuadBl longGrn longRd longTrnsbool fileFormatenum FileFormatPNG24 interlacedbool noMatteColorbooltransparencyDitherAlgorithmenumDitherAlgorithmNonetransparencyDitherAmountlong8BIMmsetnullHTMLBackgroundSettingsObjcnullBackgroundColorBluelongBackgroundColorGreenlongBackgroundColorRedlongBackgroundColorStatelongBackgroundImagePathTEXTUseImageAsBackgroundbool HTMLSettingsObjcnullAlwaysAddAltAttributebool AttributeCaselong CloseAllTagsboolEncodinglongFileSavingSettingsObjcnull CopyBackgroundboolDuplicateFileNameBehaviorlongHtmlFileNameComponentsVlLslonglonglonglonglonglongImageSubfolderNameTEXTimagesNameCompatibilityObjcnull NameCompatMacboolNameCompatUNIXboolNameCompatWindowsboolOutputMultipleFilesboolSavingFileNameComponentsVlLs longlonglonglonglonglonglonglonglongSliceFileNameComponentsVlLslonglonglonglonglonglongUseImageSubfolderboolUseLongExtensionsboolGoLiveCompatibleboolImageMapLocationlong ImageMapTypelongIncludeCommentsboolIncludeZeroMarginsboolIndentlong LineEndingslong OutputXHTMLboolQuoteAllAttributesboolSpacersEmptyCellslongSpacersHorizontallongSpacersVerticallong StylesFormatlong TDWidthHeightlongTagCaselongUseCSSboolUseLongHTMLExtensionboolMetadataOutputSettingsObjcnull AddCustomIRboolAddEXIFboolAddXMPboolAddXMPSourceFileURIbool ColorPolicylongMetadataPolicylongWriteMinimalXMPboolWriteXMPToSidecarFilesboolVersionlong8BIMms4w8BIMmaniIRFR8BIMAnDsnullAFStlongFrInVlLsObjcnullFrIDlonge>wFrDllongFrGAdoub@>FStsVlLsObjcnullFsIDlongAFrmlongFsFrVlLslonge>wLCntlong8BIMRoll8BIMmfri D8o 5U~[8BIMnorm <(Layer 08BIMluniLayer 08BIMlnsrlayr8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAR]{8BIMfxrp?@aJ8BIMnorm 8( application8BIMluni application8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubARo8BIMfxrpGY8BIMnorm (file_extension_exe8BIMluni(file_extension_exe8BIMlnsrrend8BIMlyid 8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubARܩ8BIMPlLdxplcL$c483e490-7049-1173-895f-b3229314356c@b@0@b@0@d@dwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%c483e490-7049-1173-895f-b3229314356cplacedTEXT%d6d3c99b-70e6-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@bdoub@0doub@bdoub@0doub@ddoubdoub@dnonAffineTransformVlLsdoubdoub@bdoub@0doub@bdoub@0doub@ddoubdoub@dwarpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@bY8BIMnorm (file_extension_txt8BIMluni(file_extension_txt8BIMlnsrrend8BIMlyid 8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubARɌX8BIMPlLdxplcL$c5d8d499-7049-1173-895f-b3229314356c@i @0@i @0@k @k warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%c5d8d499-7049-1173-895f-b3229314356cplacedTEXT%eddf1ce2-70e4-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@i doub@0doub@i doub@0doub@k doubdoub@k nonAffineTransformVlLsdoubdoub@i doub@0doub@i doub@0doub@k doubdoub@k warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@i _oY8BIMnorm (file_extension_mp48BIMluni(file_extension_mp48BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAR8BIMPlLdxplcL$14ebc9c7-704b-1173-895f-b3229314356c@u@.@u@.@v@vwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%14ebc9c7-704b-1173-895f-b3229314356cplacedTEXT%40b0444b-70e9-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@udoub@.doub@udoub@.doub@vdoubdoub@vnonAffineTransformVlLsdoubdoub@udoub@.doub@udoub@.doub@vdoubdoub@vwarpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@u^nY8BIMnorm (file_extension_mpeg8BIMluni,file_extension_mpeg8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAR8BIMPlLdxplcL$29a1d44e-704b-1173-895f-b3229314356c@u@0@u@0@v@vwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%29a1d44e-704b-1173-895f-b3229314356cplacedTEXT%394b586f-70e5-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@udoub@0doub@udoub@0doub@vdoubdoub@vnonAffineTransformVlLsdoubdoub@udoub@0doub@udoub@0doub@vdoubdoub@vwarpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@uY8BIMnorm (file_extension_pdf8BIMluni(file_extension_pdf8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubARa8BIMPlLdxplcL$3b187f9a-704b-1173-895f-b3229314356c@|0@.@|0@.@}0@}0warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%3b187f9a-704b-1173-895f-b3229314356cplacedTEXT%9658e37c-70e5-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@|0doub@.doub@|0doub@.doub@}0doubdoub@}0nonAffineTransformVlLsdoubdoub@|0doub@.doub@|0doub@.doub@}0doubdoub@}0warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@|0Y8BIMnorm (file_extension_rtf8BIMluni(file_extension_rtf8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAR8BIMPlLdxplcL$3d2e709b-704b-1173-895f-b3229314356c@y@0@y@0@z@zwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%3d2e709b-704b-1173-895f-b3229314356cplacedTEXT%9658e37f-70e5-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@ydoub@0doub@ydoub@0doub@zdoubdoub@znonAffineTransformVlLsdoubdoub@ydoub@0doub@ydoub@0doub@zdoubdoub@zwarpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@yY8BIMnorm (file_extension_ace8BIMluni(file_extension_ace8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAR-8BIMPlLdxplcL$919ca3ae-704b-1173-895f-b3229314356c@@0@@0@@warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%919ca3ae-704b-1173-895f-b3229314356cplacedTEXT%40b04448-70e9-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@doub@0doub@doub@0doub@doubdoub@nonAffineTransformVlLsdoubdoub@doub@0doub@doub@0doub@doubdoub@warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@Y8BIMnorm (file_extension_ptb8BIMluni(file_extension_ptb8BIMlnsrrend8BIMlyid'8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubARSq8BIMPlLdxplcL$b153c44e-70e8-1173-9870-930db18117f2@P@0@P@0@@warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%b153c44e-70e8-1173-9870-930db18117f2placedTEXT%b153c44f-70e8-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@Pdoub@0doub@Pdoub@0doub@doubdoub@nonAffineTransformVlLsdoubdoub@Pdoub@0doub@Pdoub@0doub@doubdoub@warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@PY8BIMnorm (file_extension_ptb copy8BIMluni4file_extension_ptb copy8BIMlnsrrend8BIMlyid(8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubARa*8BIMPlLdxplcL$b153c44e-70e8-1173-9870-930db18117f2@@0@@0@h@hwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%b153c44e-70e8-1173-9870-930db18117f2placedTEXT%eff5c546-70e8-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@doub@0doub@doub@0doub@hdoubdoub@hnonAffineTransformVlLsdoubdoub@doub@0doub@doub@0doub@hdoubdoub@hwarpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@Y8BIMnorm (file_extension_ptb copy 28BIMluni8file_extension_ptb copy 28BIMlnsrrend8BIMlyid)8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubARdL8BIMPlLdxplcL$b153c44e-70e8-1173-9870-930db18117f2@x@0@x@0@@warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%b153c44e-70e8-1173-9870-930db18117f2placedTEXT%12d74bf7-70e9-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@xdoub@0doub@xdoub@0doub@doubdoub@nonAffineTransformVlLsdoubdoub@xdoub@0doub@xdoub@0doub@doubdoub@warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@x 0Y8BIMnorm (file_extension_ptb copy 38BIMluni8file_extension_ptb copy 38BIMlnsrrend8BIMlyid*8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubARkaq8BIMPlLdxplcL$b153c44e-70e8-1173-9870-930db18117f2@@0@@0@@warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%b153c44e-70e8-1173-9870-930db18117f2placedTEXT%23f46844-70e9-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@doub@0doub@doub@0doub@doubdoub@nonAffineTransformVlLsdoubdoub@doub@0doub@doub@0doub@doubdoub@warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@Y8BIMnorm (file_extension_ptb copy 48BIMluni8file_extension_ptb copy 48BIMlnsrrend8BIMlyid+8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubARqA8BIMPlLdxplcL$b153c44e-70e8-1173-9870-930db18117f2@ @0@ @0@@warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%b153c44e-70e8-1173-9870-930db18117f2placedTEXT%2765d4fa-70e9-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@ doub@0doub@ doub@0doub@doubdoub@nonAffineTransformVlLsdoubdoub@ doub@0doub@ doub@0doub@doubdoub@warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@ Y8BIMnorm (file_extension_ptb copy 58BIMluni8file_extension_ptb copy 58BIMlnsrrend8BIMlyid,8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubARvG8BIMPlLdxplcL$b153c44e-70e8-1173-9870-930db18117f2@@0@@0@8@8warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%b153c44e-70e8-1173-9870-930db18117f2placedTEXT%3655fd43-70e9-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@doub@0doub@doub@0doub@8doubdoub@8nonAffineTransformVlLsdoubdoub@doub@0doub@doub@0doub@8doubdoub@8warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@Y8BIMnorm (file_extension_chm8BIMluni(file_extension_chm8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubARt8BIMPlLdxplcL$9e507f6c-704b-1173-895f-b3229314356c@0@0@0@0warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%9e507f6c-704b-1173-895f-b3229314356cplacedTEXT%de4c467a-704b-1173-895f-b3229314356cPgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoubdoub@0doubdoub@0doub@0doubdoub@0nonAffineTransformVlLsdoubdoubdoub@0doubdoub@0doub@0doubdoub@0warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrpY8BIMnorm (file_extension_bin8BIMluni(file_extension_bin8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAR38BIMPlLdxplcL$e17a80c3-704b-1173-895f-b3229314356c@i @.@i @.@k @k warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%e17a80c3-704b-1173-895f-b3229314356cplacedTEXT%d7abbc97-70e5-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@i doub@.doub@i doub@.doub@k doubdoub@k nonAffineTransformVlLsdoubdoub@i doub@.doub@i doub@.doub@k doubdoub@k warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@i RbY8BIMnorm (file_extension_bat copy 38BIMluni8file_extension_bat copy 38BIMlnsrrend8BIMlyid 8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubARQ8BIMPlLdxplcL$a5667c38-70e6-1173-9870-930db18117f2@@0@@0@@warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%a5667c38-70e6-1173-9870-930db18117f2placedTEXT%9f59f49e-70e7-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@doub@0doub@doub@0doub@doubdoub@nonAffineTransformVlLsdoubdoub@doub@0doub@doub@0doub@doubdoub@warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@Y8BIMnorm (file_extension_bin8BIMluni(file_extension_bin8BIMlnsrrend8BIMlyid#8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAR 8BIMPlLdxplcL$d5cca80a-70e7-1173-9870-930db18117f2@@@.@@@.@@warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%d5cca80a-70e7-1173-9870-930db18117f2placedTEXT%064310a5-70e8-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@@doub@.doub@@doub@.doub@doubdoub@nonAffineTransformVlLsdoubdoub@@doub@.doub@@doub@.doub@doubdoub@warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@@^nY8BIMnorm (file_extension_html8BIMluni,file_extension_html8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubARo8BIMPlLdxplcL$cc65cd91-70e6-1173-9870-930db18117f2@@0@@0@p@pwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%cc65cd91-70e6-1173-9870-930db18117f2placedTEXT%2dda0a16-70e7-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@doub@0doub@doub@0doub@pdoubdoub@pnonAffineTransformVlLsdoubdoub@doub@0doub@doub@0doub@pdoubdoub@pwarpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@Y8BIMnorm (file_extension_doc8BIMluni(file_extension_doc8BIMlnsrrend8BIMlyid 8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubARR78BIMPlLdxplcL$b8532814-704a-1173-895f-b3229314356c@P@.@P@.@(@(warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%b8532814-704a-1173-895f-b3229314356cplacedTEXT%b5ce6370-70e5-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@Pdoub@.doub@Pdoub@.doub@(doubdoub@(nonAffineTransformVlLsdoubdoub@Pdoub@.doub@Pdoub@.doub@(doubdoub@(warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@PY8BIMnorm (file_extension_flv8BIMluni(file_extension_flv8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAR6h 8BIMPlLdxplcL$c718de88-704a-1173-895f-b3229314356c@@.@@.@@warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%c718de88-704a-1173-895f-b3229314356cplacedTEXT%a483b5cc-70e8-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@doub@.doub@doub@.doub@doubdoub@nonAffineTransformVlLsdoubdoub@doub@.doub@doub@.doub@doubdoub@warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@M]Y8BIMnorm (file_extension_gz8BIMluni(file_extension_gz8BIMlnsrrend8BIMlyid%8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAR 8BIMPlLdxplcL$4e0ca1c0-70e8-1173-9870-930db18117f2@4@0@4@0@t@twarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%4e0ca1c0-70e8-1173-9870-930db18117f2placedTEXT%5dbedc4f-70e8-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@4doub@0doub@4doub@0doub@tdoubdoub@tnonAffineTransformVlLsdoubdoub@4doub@0doub@4doub@0doub@tdoubdoub@twarpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@4~Y8BIMnorm (file_extension_hqx8BIMluni(file_extension_hqx8BIMlnsrrend8BIMlyid&8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAR1J8BIMPlLdxplcL$9825338c-70e8-1173-9870-930db18117f2@@0@@0@8@8warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%9825338c-70e8-1173-9870-930db18117f2placedTEXT%99e5dd11-70e8-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@doub@0doub@doub@0doub@8doubdoub@8nonAffineTransformVlLsdoubdoub@doub@0doub@doub@0doub@8doubdoub@8warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@+Y8BIMnorm (file_extension_zip8BIMluni(file_extension_zip8BIMlnsrrend8BIMlyid$8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAR 8BIMPlLdxplcL$21f17c42-70e8-1173-9870-930db18117f2@l@0@l@0@@warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%21f17c42-70e8-1173-9870-930db18117f2placedTEXT%2f2545e7-70e8-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@ldoub@0doub@ldoub@0doub@doubdoub@nonAffineTransformVlLsdoubdoub@ldoub@0doub@ldoub@0doub@doubdoub@warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@l'7Y8BIMnorm (file_extension_htm8BIMluni(file_extension_htm8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubARq28BIMPlLdxplcL$d6c29263-704a-1173-895f-b3229314356c@8@0@8@0@@warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%d6c29263-704a-1173-895f-b3229314356cplacedTEXT%d508738d-70e5-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@8doub@0doub@8doub@0doub@doubdoub@nonAffineTransformVlLsdoubdoub@8doub@0doub@8doub@0doub@doubdoub@warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@8 Y8BIMnorm (file_extension_jpeg8BIMluni,file_extension_jpeg8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAR8BIMPlLdxplcL$e6d2e6e0-704a-1173-895f-b3229314356c@o`@0@o`@0@p@pwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%e6d2e6e0-704a-1173-895f-b3229314356cplacedTEXT%6dccac23-70e9-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@o`doub@0doub@o`doub@0doub@pdoubdoub@pnonAffineTransformVlLsdoubdoub@o`doub@0doub@o`doub@0doub@pdoubdoub@pwarpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@o`-=Y8BIMnorm (file_extension_m4b8BIMluni(file_extension_m4b8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubARr<8BIMPlLdxplcL$fdefcf69-704a-1173-895f-b3229314356c@r@0@r@0@s@swarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%fdefcf69-704a-1173-895f-b3229314356cplacedTEXT%049e389e-70e5-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@rdoub@0doub@rdoub@0doub@sdoubdoub@snonAffineTransformVlLsdoubdoub@rdoub@0doub@rdoub@0doub@sdoubdoub@swarpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@rfr~8BIMnorm4( dir-opened8BIMluni dir-opened8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubARh^8BIMfxrp{3A8BIMnorm (dir8BIMluni dir8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAR: 8BIMfxrpDY8BIMnorm <(Layer 18BIMluniLayer 18BIMlnsrlayr8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAR'8BIMfxrpV                     #3##3, Z:Ő {<3$, !!MM2332MM23323#3""3#j E#3#3#jszv3#3"FFFFkkkk331313&!#3## 334s`3D333333 3"05 33 #33#3#33#3 3)333#3"#30333#33#30xC_:{?KLLtl1sws1 >\>35zThfhTxxwmzxz                                            ˥   POKLOPNOJy~~zKI ҅KJԊKKKKKK}~KKKKKKKJrvxvrJIIMMLIHILL9?IC BA@I[oB CrqaSOC C]NKFB?@E E@>??B=7EEB72 EEEEE E>BAABD ECi||iC>BAABDCXPPXCCi||iCDDAADDCXPPXCEDADEXSSXX XWY[[XVUUWWX XZ D]qTX YV[6[uUUY Z\Ip~bSYZ \Y\Yplm]F]Y\ \]U]v}dI]\ _\`eda__`^\_ `cC\p]` a_d5[t^^a bdHp~bSbb dbeXolm]Dfbd efS\u}dHgegfhkjkhfg^j``j^ ʥA D ?8-$"$$   $ p "  $$($  $( ΁h) F/uqs&, ٻ RU \šJ{㸝{irƞpgm6ʼ<7BWȵe3&N{j@(!Mj0'mSg]0,!i_HHZF  (9??@zRwWHZ ,131*!hL#&&!H`  k.  ʤ >="~=p%CM |H)s66K/b6?7?MST+U5K Y"[>:V2=< 9;;(} ;I8  A4I"V   '${ ԰ߒ гoRRRRcccRRhhhhRRmmmRRrrrrrRRwRdRE ʤ ǭ  ݯ կ vz} p̾p ʾp ̾p p t{ppƾppp pwpw Ψ  =qeK {rĪM ͨW I  5/l  3B L   ʤ  $ '5> (*< "k1t8,t5 $2y9?B !~6;%/1232? 5=@ Ψ ݥof($`jCL}ƅQAU XyvjO:l÷U TޙLs薚UlSgՏYPՖK/\ƚX/5TnkoR4*-*;;Ιoo=os7Wʬ˖Bv[ZdZ[Xÿʹݼø                                            ̧   ʾخٹݟ߿e ?}twwz{ wzv~y zøz z| {~|{r`}}xkU}}}}} }|uxxu| }zèz|uxxu|zzzèz{{zz5|{{|5{{5|{{|5XYSSYX YXXTRQPPRVWY YTQY ZUSPUZ [TR[ ]YUUY] ]WX] _\[WSQPQUZ[_ a\Ya b_\Y^b c[Zc eb^_be faaf hggfdccdfgghbk``kb ̧dzߑK ¬LHfƄۑFޚ ։~~~ qx~r܁~rp~~~~~~~~~~~~~|| ςg " C*to^ ۧԺ ڭ˵UX~|~ |~ګ||Ā|ŀެ{Ħ{计ȥɂ夣²ղsϽv䲃V忀V VȚVur ˧ uwyhwrv~jv|w}|kutyse {yyz||{uߒwUn {p xn u!p w* d c0~m($n5 w(%x6x%# 3@~-,+45116ѵkikkkρkkkkԋkkkkkyk[ ˧;1>c1+QFO>0(?+%E=Q2%3x+n£ /CL, c AM c-yb5 l? ֱ wxxz r{͈ rٲz͈ rӛ{͈ x|}|͈͈͈  ܵ (AZ & @nQ Y~Øt xyeȑ ѵ ߹ռԴɣ ͨYYXZ^dio[l ]]s]nl [bd_j Yckf XbjceXZ`e[hfehi ˧ uyuz uz{ v~{؁ v}ՂuȀӃzӇ ׳begfehmppbqbghhlnkpbosywqbsqz|pbz}oaʄoa쌋odqzoqtݥof($`jCL}ƅQAUXsjēuɹǒߓƖԾ^Õegh4[Z[4;;Кko5oo_o~~~~ӝ˪qӣ'ŜPÕǒ{x=/2<2/=WLAEDVs֨jACwDAADvvhDVdwydMEUDADE                                               ̧   &+] &)xU(w(0(w'-&"*luvwzzul0=@BDB@=0%(%t ٥ ǿ r ۪ ܫ۫ܬIIII[TT[[ [YWOLKKLOWY[ZNNZ ]WMMW] ]MM] _ZOPZ_ aTUa b^YNGFFGNY^bcVVc e`VV`e fVVf gbYYbg i^_iljhc`achjlbn``nb̨005YlhpU DsivO54bgkhg:3\I]\[\^S9/PQPpPQT?41AHGHHIH:*79:; ϭЃi!OgC E,}u5"## # WV%X*hh3 XG2 yʺ쫰@Aκù,f-QG/*w3"Xxs#FݽL>մY:pyIͣ[ZuA| u;|˧ Ǹ޻ϲ׼޲ȩа޳Ҳʻó  ( 992H*(I7 gT*(Vo8#^^!^c6^,l)(n75,,6ѵǣ˧!{+ZB{5A*,,+= eaţ>R \>01пp) P[',.2p,.>pF tM ֱ 1 : ٝ oIIpٝ [\ٝ f q ٝٝٝ  ݹ %   ߿  =$Fcj`DMgC: ̧Ĩ Ī۵  ˧   2; ? ImNR PwW^Ƿ ݹL&-/.#*-)-%,61-# .0-%++,-+/.**./+ -A)*+-.ݥof($`jCL}ƅQAU;1'wSE4#b .I| e;;ҝko5okƴ@ Ο,`XTe15qkls4?c&#sG1G X8'D&#Q/&: C,-,+/ 7r-M!@c%!$3$   "&'&"ILMLI          Ђؒ؀~ধ~||{{{{{{zzzzzz{{~~s~{z{~s  #3#rh m  ? 5%%'%%22>A>22>8@C@8>LL`YWWWWWY`uttsssttu۷vzzzvuـw؆՚vvՁԊсыهρΎ΁˓ˁʚʁǠǁħāİĂżŃzz絵䵷䷶ͯ򸪸#3#a_^^^^^]^_[[__[[_^[^_^[Q[_^befebS_^dfgfdoQQ^^eb`_`t^_d\a^_ha^[[][^g__jbi__ngecc`_dn__qhq__tjefjijmt_`xqy``{xxx{}~`Za`^^^^^__`aZxvuuuuuuuwsswvsswutvvvsjswvx{|{xlwv{}}|zkkvv|zxwxvv{uyvv~yvssusv}vwzww}{zzwwzww~ww{|~wwwxxoxwvvuvvwwwxo~"3"-*******))$$**~~|z$$**x&***&x$**t+///+u **n,.(,.FC# j*+h-&[)./0-h++b.%\+01.b++]0&\,10]+,W0&e00W,,Q1';21Q,,L3(:243L,-E3):2443E--@41i=35554@--:664567776:-*-----------*wtttttttturrutɳrrutruuurjrut{|mut~pmtt„ttttttttŜttƟttʣtttuuluuuuuuuuuuul׾#3#,)((((''')#$))[#$)(#&'&#|P$)({(+,+(xS))t&#"%%p;p()m!ԏ;2adhl))g%qm"f)*a'+|`*+Z!-Y*+RR++M %(% M+,F#!#!#F,,@((@,-=3+'''''+3=-*-,+*****+,-*gdcccccccdaaeeaaedbeeebWaedilmliXedjiijjxXWddk||cdqƟnddvojfypddu}ddxrqwdd}xx}dd||dddff_fdcccccccdf_׳Գֵ뺺ů괴贴Ծ贴紴崴䴴㴴ᴴവ㵨"3"    )#$F@ $)#"()%*.)^)..*y04-,340yr68/Ξf031qj;9Web>CuHU^VsBFHGDDZMHMNNNNNTMRTWXXXXXXO$"/* %*%JD +0*)/1,150d0551|7;43:;7|u>@7Тl8;:tlEC_heFL{O]aZzKOQPMM]QRWXXXXXWQ]^bbbbbbcS#3#,)((((((()$$*)|{{{{zxvR$$*)t%(((%qG$*)n(***(kL**g"#f:c)*`@44@A>''CD76DFC'({HE53EJH{((uLDDMMu((pOFGPPp()jVRJFFJRVVj)*h_^]\\]^__h*(+)))))))))+(a][[[ZZZ[]YY^]ƛYY^[X[UKY^\ad\M^\hkcxON\\mog\\qskhppn\]vxoowxu]]{{sr|}{]]ts]]؀]]]^^__Y_^^^^^^^^^_Yƕ䕗܌–䝟ێĘᡣ٭ߗ१ʹݖުݗۮԫۗڲڗضؗպ踻՗ӿӗ¿їә#3#£أ֝ש՞իѰӥծҤӮϤѰ̣г»̤βڳΤ̻Υ̥ͥΥ&#!!!! !###d#!!"![#!(-.-'`#!/33/): !!32*gbz !5m} !8VXTv!:`NQKxv !y9+5:7٠?z!|M{" kD7:> ZVx"!mV^v"$td`___`cilx$$$! !"#$$#3#£أ֝ש՞իѰӥծҤӮϤѰ̣г»̤βڳΤ̻Υ̥ͥΥ&#!!!! !###d#!!"![#!(-.-'`#!/33/): !!32*gbz !5m} !8VXTv!:`NQKxv !y9+5:7٠?z!|M{" kD7:> ZVx"!mV^v"$td`___`cilx$$$! !"#$$#3#£أ֝ש՞իѰӥծҤӮϤѰ̣г»̤βڳΤ̻Υ̥ͥΥ&#!!!! !###d#!!"![#!(-.-'`#!/33/): !!32*gbz !5m} !8VXTv!:`NQKxv !y9+5:7٠?z!|M{" kD7:> ZVx"!mV^v"$td`___`cilx$$$! !"#$$#3#£أ֝ש՞իѰӥծҤӮϤѰ̣г»̤βڳΤ̻Υ̥ͥΥ&#!!!! !###d#!!"![#!(-.-'`#!/33/): !!32*gbz !5m} !8VXTv!:`NQKxv !y9+5:7٠?z!|M{" kD7:> ZVx"!mV^v"$td`___`cilx$$$! !"#$$#3#£أ֝ש՞իѰӥծҤӮϤѰ̣г»̤βڳΤ̻Υ̥ͥΥ&#!!!! !###d#!!"![#!(-.-'`#!/33/): !!32*gbz !5m} !8VXTv!:`NQKxv !y9+5:7٠?z!|M{" kD7:> ZVx"!mV^v"$td`___`cilx$$$! !"#$$#3#£أ֝ש՞իѰӥծҤӮϤѰ̣г»̤βڳΤ̻Υ̥ͥΥ&#!!!! !###d#!!"![#!(-.-'`#!/33/): !!32*gbz !5m} !8VXTv!:`NQKxv !y9+5:7٠?z!|M{" kD7:> ZVx"!mV^v"$td`___`cilx$$$! !"#$$#3#+(&&&&&%&("#)(f"#)'!%&%!X#)(&+,+&[)('++)${?z()w'(#5kprs()n'"y#m)*d' ,%d*+\'&/&\++T)*'k"'T+,K*,)5 ))K,,A*,* o(+*A,-9*+) )+*9-.0*+*&"&*+*0.*.....-.....*vsrrrrqqrsppssͧppsrorsroepsrw{|{wgsr{~zÊgfrr~}yurs{~rs~ss|sssssssttuumuttttsttttum콽轿追Ҹ鿿濿"3"edcccccccc__cd__ccZ\\\ZZ_cd^aaa_]cd_[ZZXhjWZcd]]ddc^VTV\^_cddgcciigddihaYZahjiddklgglkdekgc^^elnmee}jkppo}ee{pkiikprrr{eeyuuuuuuuuuye]eeeeeeeeeee]wuuuuuuuuurruurruuuwwwulruuz}}}{nuu|zxxwkluu|}uu~ywy}~uuuuuuuuuuuuuvvmvvvvvvvvvvvmʼ#3#,)((((''')##))Y##)($'('$}Q#)(~,010,{V)({0443/x>v((w331/*Cmpqt()s4-)0q()n43n))j6#!#6j))e7%1%7e))b=*)*=b)*^BB^**\JA22AJ\*+[SQMKIKMQS[+)++**)))**++)_\[[[[[Z[\XX\\XX\[X[\[WMX\[_cdc_O\[cggfbrON[\fhfd`x[\hcXU_e\\ih\\k^]^k\\maiam\\reder\]ww]]~xmmx~]^^X^^]]]\]]]^^Xѳф|Ί~ʎɚ~}ȇȐƇđ҆΋Çђˊϑמؖ؞"3"edcccccccc__cd__ccZ\\\ZZ_cd^aaa_]cd_[ZZXhjWZcd]]ddc^VTV\^_cddgcciigddihaYZahjiddklgglkdekgc^^elnmee}jkppo}ee{pkiikprrr{eeyuuuuuuuuuye]eeeeeeeeeee]wuuuuuuuuurruurruuuwwwulruuz}}}{nuu|zxxwkluu|}uu~ywy}~uuuuuuuuuuuuuvvmvvvvvvvvvvvmʼ#3#+(&&&&&%&("#)(f"#)'!%&%!X#)(&+,+&[)('+,*&|@z()w'(%!=prrs()n$s~M"l)*c`!c*+YiXyZ++Q;HQ+,IV\I,,@mks!@,-9%\!'9-.0)%<%()0.*...,++,-...*vsrrrrqqrsppssͧppsrorsroepsrw{|{wgsr{~zÊgfrr~~{xrs}{~rsϩssقssssss临stİtuumuttssrstttum콽轿追Ҹ鿿忿"3"5433333332,,24ffgggfea,,24a)+++)a',24^+...,^*24Y*---,BCBcZB?HIIH[SSOLNNNNTOVPQVXXXXXO$$$ %***'L;+00/*L#1551p+|7;:/"47|u>A=9>ulEF>??@<7|/`CBBBBBBBBBC>{yxxwwvwxyuvyy¾uvyxuwrkvyx|~wmyx{omxx~xxxxxxxyyyݐyyyyyzzrzzzzzzzzzzzr#3#gedddcbcce`aee`aedACV`ddLPFWddSVLtYXcdZ\Rhcd_aXU^^\ddeg]]fgdddkkb`lmkddpnb`nrpdduopvvdd|uv|}ddzwwzdee_eeeeeeeeeee_#3#纺庼强ϵ껻軼鼮࿍ߍփݓԅۗѤ؏؛ȩ֎՟ԏѢ͝яΦΏ̪̏ɭ媮ɏưƏĵĐļđC@?>>===>@;;@@s;;@?;=6-i;@?BD9/m@?DF;S20?@FH=Q?@IJ@=GHF@@KK@@KLJ@AzMMA@MPMzAAtOL<;MQPtABoPHHQQoBBjRJJSTjBBdVSKGGKSWWdBC`ZZXXXXZZZ`C>CCCCCCCCCCC>#3#+(&&&&&%&("#)(f"#)'!%&%!X#)(&+,+&[)(',-,'|>z()w(++("9ghnr()n(*$Xk)*d(#Gb*+\$nnZ++S!DQ+,I 4kI,,?1q#A,-7#'9-.0%$'()*0.*.-,,,......*vsrrrrqqrsppssͧppsrorsroepsrw{|{wgsr{{Êgfrr{rs{yrs}ssssssʋssstٍtuumutssstttttum콽轿追Ҹ鿿濿030`ZXWWXXXY\XX\[XX\Xx|HX\WK\X݌ـKIZX׏YY֜YYԥXYЬXX˲WNµN|ՑӑԔᵝ䢨ñWG-%'3'#zػv#+#w-3-{(1(|- .!>-....//.->!$B;;;;;;;;;B$%$$$$$$$$$$$%#3#,('''''&'(#$))_#$)(#&'&#Q$)({%)*)#vS))r&)(#a,l)*j%(!YXd)*a%&]*+Y##ӎBV+,O" L,,E C,-< :-.2 3..)  +./! "/*/.-,-//00//*vsrrrrrqrspptsɥpptrorsrnfptrvzzyugtrz~}ztbdss~}rs{tss|xss~vxt|ss{zst{tttttuumutssstuuuuum޾񼽾ھɸ꿿翿㿿ÿ  ®{ w@TPQURM,?9\uɸĮTh]zsf|`qogzml{sr~|||||||}yy|i:LJHHHHHHHHMG dzlņ}ᯢ׾ŶƭRidbbbbbbbbi`y   9 ^}|{}}|z|||{yvt}~~t}}~~}}}~}}}}~t|7IBBBBBBBBBBBCH+ɺƾŻˬĺŸJcYYYYZZZZZZZ[a:   jR#3#鬫ʤ鯮˧鯭˧8BIMPatt8BIMlnk2>liFD$b153c44e-70e8-1173-9870-930db18117f2file_extension_ptb.pngPNG  IHDRatEXtSoftwareAdobe ImageReadyqe<:IDATxڌSkAdi4mlb`@RX^zxz(=Ŋ< T{C<(5Ah b&ogmmz̛yoޛ7:sZ6=Bע#2<6u/T< Nh>+Z{D`;>/Ga|.=[(7窕b=6P 50@D- =J%,(J@& ^ّp3X{2t2!gy;hy ;(0U?@1pӏq8j/@RH ][_2bn6.z4m e0:$4?!}y9 ;ɇr2I֒ϏuQYX<'›q?x//.h.+]Yu*KUC`"$GIENDB`liFD$9825338c-70e8-1173-9870-930db18117f2file_extension_hqx.pngPNG  IHDRatEXtSoftwareAdobe ImageReadyqe<%IDATxڌSkA};;^rb"(XoR lmUZZ(qЈ?"EċAăGAo&;6mc/LΛ7yc nj?EjӢ~Y~!QFI1s/1$Ivm]Džpz(F\9]6<шc++ĬQ1x5,.`py:JT(! z=ڪ4py #'&gggX}(X]mbnncV*8rt_鮓&1 -8<*'q ccgqi4M*ϣxf]  :AZu [CLɂ } =h{ )ԫ °u3\{'FK;:yָٛ?=v_ 7F΋0IENDB`liFD$4e0ca1c0-70e8-1173-9870-930db18117f2file_extension_gz.pngPNG  IHDRatEXtSoftwareAdobe ImageReadyqe<+IDATxڌSMHUA=s՝(C^H =D-#-6nڄBP;AAMN&AQ"hT" ZXy;ͼwy뢹|3s9sZ <3ƴ5:!!~=4uA")BLB WK၁RX^$<A]7ƥpcR@Xr{4**'$ԕ1vKJH2= I:o:K{ 8o"A[ϩsJDWAcU٬rss_9QTqiZz"55T'KB4G6/1y };<'|pIENDB`liFD$21f17c42-70e8-1173-9870-930db18117f2file_extension_zip.pngPNG  IHDRatEXtSoftwareAdobe ImageReadyqe<&IDATxڌS=hQޑ&A3%]/HF0$0hcSP$D F""Z(Bw޾y|3̬JOj?]ȒoRGhJj Xsmos!1Α /OMlmѽ0J#7QI/.:38 E/.B>6yPJjי=M$Ok5.ז1qstT۫h[?B oӫ$B-v-jR(EGQ 05)vM8IENDB`liFD$d5cca80a-70e7-1173-9870-930db18117f2file_extension_bin.png-PNG  IHDRatEXtSoftwareAdobe ImageReadyqe<IDATxڌS=KQ=cf,  D }:B[N, EH&B IbQDHBp`f? ̛w眙'05IjWՑdŽ:]PL^vyWOd38cqRʴgw1,HHRjF{J [LGʠ:0$В_q#f@(Yś&K85 (.R 9_KH,SVlAbkq }~#A4ZT]﨩R5NjKXgRD8@ OBrs/ݛtI*?r1}(H_9L!%Ke8VoL[ ֥\|&SxzL@^04Vt.ݿex779Δ|:G IENDB`9liFD$cc65cd91-70e6-1173-9870-930db18117f2file_extension_html.pngPNG  IHDRatEXtSoftwareAdobe ImageReadyqe<iIDATxڌSkAf3MkQjlҢZP*Ă"ŊQR? ī'APJM+xve.k=SyZHuOI,+#C}起=nY s?P|/c\eL X(jRDxk"qJ(?M &ɝƽAᗅx?eHX!0} &Q9/Iys9߽(B߉0IJď Cu誦G3{aHj8סye͌ݩeZ5j.d"=7nK"^1H @!%q8b38z%φÒ4dO6UAj}fuJW-c9As}[!oـqsb4~.U籽g9Jx셶Zg w`xϩ+ӳ+Ԃ"d'J(j#mQ:Z 7i2uVHXZDA| MucZD◸$npnu?(kwT ZOvEZ{INB4пZrXH@mQ[55nbCKWNV$_~p^U& fIENDB`liFD$fdefcf69-704a-1173-895f-b3229314356cfile_extension_m4b.pngPNG  IHDRatEXtSoftwareAdobe ImageReadyqe</IDATxڌS=kQ=yMlvE]T$gD (QB4*"!UPYE0)BAl%"a;{ͬf={paOmln>Oڀ ʒTYtSi'm6Fr(x-"vy$f-bE\Mt]L̉h}}T ReQG^:1)n߄cD4h A`R&VEm{QTk:`8"pRC#Gv̡*.؅K{oi\tm:Û6j \8 7BLԍ}p+?Z:BE<&}P$h۫]!J GTn<'+S{{_zndEy ޜA?|ok+x.y)I: u4>n T(,X#gPgFFy 0d 82\`\EYLL8[vrX M>' WgpM0l!B_ANIENDB`liFD$e6d2e6e0-704a-1173-895f-b3229314356cfile_extension_jpeg.pngPNG  IHDRatEXtSoftwareAdobe ImageReadyqe<HIDATxڌSMhQoiKRLR (֞ċ*TţWѳ*أE'=RT0J6%}f{[cTB{3B6aFQyRbpů1,Re*_k%,5$q,LRp=$`,*u ?8܌CX= nM bH3p@[Т,[JW Y:8S0 :?v= &'% E߇q: ?yq 磊RIG!D-Ũ$@VN`gf&1l޸y.첞PL ύH)X;C(1@A|K!Yvn):n 83e|p\RQ(*~/V^Gr3g~yC dl9҅30IENDB`liFD$b8532814-704a-1173-895f-b3229314356cfile_extension_doc.pngpPNG  IHDRatEXtSoftwareAdobe ImageReadyqe<IDATxڌSOHTA}f]DI2wlF !N)̺ ^B*ʃ!"Y*4B )ŭ ԥڭ}off[Vyo~͐1vjhiwh+Z3WF &q0/&yZxW2+7 BD^5Ns{99T "2I%<ϋ|4X4bF 30xq*"ؙrIVhaC@RPZa#'+\fÚ6r6K$KB,,BBPQ>/C`A&{\u^Q[c#[U@&:ڮn̲X|҅%.FEtOM{|yPT q˚) i$JxF$3+>9dȤB7.Oo|ςǒzl<~n7j*xIENDB`liFD$3d2e709b-704b-1173-895f-b3229314356cfile_extension_rtf.pngPNG  IHDRatEXtSoftwareAdobe ImageReadyqe<:IDATxڌSKhSA=~"cU  ZMŅHEu!ua TnDq஻,,R*FH5Lϼ|)80/wf={sR Ka(ڹ'21|fѝpRK?:$FbJr>iU)<}A zF0:'H2L10Ls> 1!H { sΕ6_jj/>4%k)Q Ed:?(,P%^ V-nmmVˀ',n<6# nO.`yh8u5\e 11y*8`qo5zҞԠx5~裗ҵ l:&2<\,{A@LU=`>RP@ IP;{A)‰_.ov{."XTѾAϣۜ'Ħ"ֻ4dc4}5~ǒ=JoX`}H1ۇIENDB`liFD$3b187f9a-704b-1173-895f-b3229314356cfile_extension_pdf.pngPNG  IHDRatEXtSoftwareAdobe ImageReadyqe<3IDATxڌSkA}l4nK=gMDDR+^ .z G+߆/K@?\C( oYxP!y҃эʩH | h}^JR6uVy _ӥT~$b.tN;S&5ָd|< -S+I}F HۆL$ DngMkGu֓me!FPW@}o51R0`u2R.B ( #1Ё-V-q( RH!+e$'Bp+%ے$YÁ9,&? ̣>C_! AB4Hٗ}vXwv(v6N{Xۀu0sf.#X(p2N.^G`.Ln]PL;ay邙 rӱ祂֩^߼=O0ԇm$TKlIENDB`liFD$29a1d44e-704b-1173-895f-b3229314356cfile_extension_mpeg.pngPNG  IHDRatEXtSoftwareAdobe ImageReadyqe<@IDATxڌSAkAfv766`!PŃ<$5HjlGڣV((BDr1Pbڂ6R횸1-8˛}o5t]88t/ Xr&\#}P tL+M/oG./1j%G" C  UHy "qM9i&Q) $ 8B <~C7uE%C\'rȊ%vl%uvD~q!ke@ >җ"^g28y]݇aJG+@e5 4C&d! W:8ыxxz_~p KHqDZ c5&Zi<{2nPRHY Ԉ #f񼣫 Żϑd#%mŸ_?_q y<3lUbe'^ Q>WboIENDB`liFD$c483e490-7049-1173-895f-b3229314356cfile_extension_exe.pngePNG  IHDRatEXtSoftwareAdobe ImageReadyqe<IDATxڌS1OQfv;sАK4m$; P bNPXcb.&F D1\dwW0ݼ}73߼'ZjΚn|_{G) ~hh@Mug۹c3 fb`wэ7q*sM!D3CȐUy$mƫA>>q. }P+)"cp^؀<[ȥAx2WAr{ >Ti8,m`vB3Qc#GLJ:\M;X{U|bq6v An QrՖSq#U[hHq%pp}w7@0ߣ4akJ'2_xܨו )ۓ+]uP̔\,i캾ը_q"8 Jx78Ng}mQ7SmJג׵umBk: IENDB`8BIMFMsk 2                                                                                                                                                                                                                                8(&%&: (fo '!%&%!Xo(&+,+&[o('++)${?z()w'(#5kprs()n'"y#m)*d' ,%d*+\'&/&\++T)*'k"'T+,K*,)5 ))K,,A*,* o(+*A,-9*+) )+*9-.0*+*&"&*+*0._.-._ ~|}~~|}}~~}~}~|w~}xɸzsf`ygwl{r~|}y|r|v** rdhc mc  ? 5%%'%%22>A>22>8@C@8>LL`YWY`uttstuSSfdcedrcZ\ZZrd^a_]td_[ZZXhjWZcd]]ddc^VTV\^_cddgcciigddihaYZahjiddklgglkdekgc^^elnmee}jkppo}ee{pkiikpr{eeyuyegegjZXWWXYi [毒 Xx|HW KX݌ـKIZX׏YY֜YYԥXYЬXXWN N|9('&': )_p (#&'&#Qp({%)*)#vSo)r&)(#a,l)*j%(!YXd)*a%&]*+Y##ӎBV+,O" L,,E C,-< :-.2 3..)  +./! "/_/.-,-//00//_E*)C*~~|zr*x&*&xr*t+/+u t*n,.(,.FC# j*+h-&[)./0-h++b.%\+01.b++]0&\,10]+,W0&e00W,,Q1';21Q,,L3(:243L,-E3):2443E--@41i=354@--:6645676:-d-d9)(;)|{zxvRp)t%(%qGp)n(*(kLo*g"#f:c)*`z()w(++("9ghnr()n(*$Xk)*d(#Gb*+\$nnZ++S!DQ+,I 4kI,,?1q#A,-7#'9-.0%$'()*0._.-,._8(&%&: (fo '!%&%!Xo(&+,+&[o('+,*&|@z()w'(%!=prrs()n$s~M"l)*c`!c*+YiXyZ++Q;HQ+,IV\I,,@mks!@,-9%\!'9-.0)%<%()0._.,++,-._9)(';)Yp ($'('$}Qo(~,010,{Vo({0443/x>v((w331/*Cmpqt()s4-)0q()n43n))j6#!#6j))e7%1%7e))b=*)*=b)*^BB^**\JA22AJ\*+[SQMKIKMQS[+^++**)*+^wdcvdcZ\ZZd^a_]d_[ZZXhjWZcd]]ddc^VTV\^_cddgcciigddihaYZahjiddklgglkdekgc^^elnmee}jkppo}ee{pkiikpr{eeyuyee ϵ ϳ ЊǁΑă͕ßˌ˙ƣɌɝɌȡ˛ȌǤnjħč«䨬qedcbccr e dAC@44@A>''CD76DFC'({HE53EJH{((uLDDMMu((pOFGPPp()jVRJFFJRVVj)*h_^]\\]^__h*]+)+]srqrsͧ rorsroerw{|{wgr{~zÊgfrr~}yurs{~rs~ss|sssssssttuuutstu ɺƾŻ˱ŸŻŶíƭ ۷vzvuـw؆՚vvՁԊсыهρΎ΁˓ˁʚʁǠǁħāİĂŃxuwuuuwuluz}{nu|zxxwkluu|}uu~ywy}~uuuuuuuuuuuuuvvwvwշ ӷԷ  ᵝ䢨 ñ WGsrqrsɥ rorsrnfrvzzyugrz~}ztbdss~}rs{tss|xss~vxt|ss{zst{tttttuuutstuttɳtrurjt{|mt~pmtt„ttttttttŜttƟttʣtttuuusrtsqtqgswzwhsxvtvxhgssvxssy{ssxvz~~ss~sssssttttuuutstu0.b   b)#d$F@ $)#"()%*.)^)..*y04-,340yr68/Ξf031qj;9Web>CuHU^VsBFHGDDZMHMNTMRTWXOUUzzztvtqzz}ztz}vtzz{|}}}|{zzzz~zzzzz{ѨҎ{{{{{{{{srqrsͧ rorsroerw{|{wgr{{Êgfrr{rs{yrs}ssssssʋssstٍtuuutstusrqrsͧ rorsroerw{|{wgr{~zÊgfrr~~{xrs}{~rsϩssقssssss临stİtuuuttssrstu أ֝ש՞իѰӥծҤӮϤѰ̣г»̤βڳΤ̻Υ̥ͥΥ أ֝ש՞իѰӥծҤӮϤѰ̣г»̤βڳΤ̻Υ̥ͥΥ أ֝ש՞իѰӥծҤӮϤѰ̣г»̤βڳΤ̻Υ̥ͥΥ أ֝ש՞իѰӥծҤӮϤѰ̣г»̤βڳΤ̻Υ̥ͥΥi\[Z[i\ [X[\[WM[_cdc_O[cggfbrON[\fhfd`x[\hcXU_e\\ih\\k^]^k\\maiam\\reder\]ww]]~xmmx~]^^^^]\]^ أ֝ש՞իѰӥծҤӮϤѰ̣г»̤βڳΤ̻Υ̥ͥΥ أ֝ש՞իѰӥծҤӮϤѰ̣г»̤βڳΤ̻Υ̥ͥΥuuuuwuluz}{nu|zxxwkluu|}uu~ywy}~uuuuuuuuuuuuuvvv ࿵ ߍփݓԅۗѤ؏؛ȩ֎՟ԏѢ͝яΦΏ̪̏ɭ媮ɏưƏĵĐļđ OA@@?>>??P Ah @=>7|/`@CD9w0e@GH=tO32@@IJ?P}~@A}LLB?IKI|@AzOODDOQOzAAvRQFDQTRvAAsTPA@QUTsAApVOOWXpABlYPPYZlBBj\YQMMQY]]jBCgcbabccgCnCBCn peddccbccq e d@CBCBcZB?HIIH[SSOLNTOVPQVXOUUľ Ҹͯ˻ʺ̻ʼ-%'3'#zػv#+#w-3-{(1(|-  .!>-./.->!$B;B$0$0ſ 񼽾ɸÿȿ׾ľ ѹ42ff$"/* h%*%JD +0*)/1,150d0551|7;43:;7|u>@7Тl8;:tlEC_heFL{O]aZzKOQPMM]QRWXWQ]^bcSXXҾľ Ҹľ Ҹ4#! !5#dl !!"![k!(-.-'`k!/33/): !!32*gbz !5m} !8VXTv!:`NQKxv !y9+5:7٠?z!|M{" kD7:> ZVx"!mV^v"$td`_`cilx$Z$! !"#$Z4#! !5#dl !!"![k!(-.-'`k!/33/): !!32*gbz !5m} !8VXTv!:`NQKxv !y9+5:7٠?z!|M{" kD7:> ZVx"!mV^v"$td`_`cilx$Z$! !"#$Z4#! !5#dl !!"![k!(-.-'`k!/33/): !!32*gbz !5m} !8VXTv!:`NQKxv !y9+5:7٠?z!|M{" kD7:> ZVx"!mV^v"$td`_`cilx$Z$! !"#$Z4#! !5#dl !!"![k!(-.-'`k!/33/): !!32*gbz !5m} !8VXTv!:`NQKxv !y9+5:7٠?z!|M{" kD7:> ZVx"!mV^v"$td`_`cilx$Z$! !"#$Z ѳ ф|Ί~ʎɚ~}ȇȐƇđ҆΋Çђˊϑמؖ؞4#! !5#dl !!"![k!(-.-'`k!/33/): !!32*gbz !5m} !8VXTv!:`NQKxv !y9+5:7٠?z!|M{" kD7:> ZVx"!mV^v"$td`_`cilx$Z$! !"#$Z4#! !5#dl !!"![k!(-.-'`k!/33/): !!32*gbz !5m} !8VXTv!:`NQKxv !y9+5:7٠?z!|M{" kD7:> ZVx"!mV^v"$td`_`cilx$Z$! !"#$ZʼO@?>>=>P @s ?;=6-i?BD9/m~?DF;S20?@FH=Q?@IJ@=GHF@@KK@@KLJ@AzMMA@MPMzAAtOL<;MQPtABoPHHQQoBBjRJJSTjBBdVSKGGKSWWdBC`ZZXZ`CnCn yxxwwvwx y¾ xuwrkx|~wmx{omxx~xxxxxxxyyyݐyyyyyzzzpdcbcq e dBE>VdLPFWdSVLtYXcdZ\Rhcd_aXU^^\ddeg]]fgdddkkb`lmkddpnb`nrpdduopvvdd|uv|}ddzwwzdeee ƺ 䕗܌º䝟ێĺᡣ٭ߗ१ʹݖުݗۮԫۗڲڗضؗպ踻՗ӿӗ¿їә42ff$ h%*'L;+00/*L#1551p+|7;:/"47|u>A=9>ulEFELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmLAYERS^$'.*.15t9.<@CCG^JNQU\X\J_cg$jn^quyA|^2t Layer 1d':B49E082D-A1FB-487E-BE17-E16F73A8F48E-7317-000022DE0376C4C3@1xQnPEK}՘ƿbKwC+P[%6'<1}32 UOP:ߧ^pIyT?/gjA"IGQ.qI,K4G{7ԘsrK0QtRq՘s3Qv0ƌs>WyVI!16uU%1_3(v3,V~3xp<ph}1kz|SlMWFu{yTU streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365Ez3dird':2FF17678-F87E-4E6E-974D-AEA1452BD260-7317-000022DE0375EFB6@;x]Ha Zf dwAQmtPTE7% "!i.u:0l}Xln*L,hQ79g{ٴwŢ^qy:al]`SZj~svl-"CflO[Ej1M/: Kde*Kd{e\Yݻv"> ÜNlNtn|xt>?AȥaO{:ԤV\v㠀1F(ԲS&$ĈDWgT{̱Ѫ+f streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365El f dir-openedd':E171E19A-6285-43FA-A545-2E08E088286D-7317-000022DE03753825@&x]HSacW]F Z-*hj7}@lE])4؜lڪ55͕-6gZQb $*km;g#ӻE%=㼼8T"{j *{TF><Әc /n$LUY"(Weޛ-)Zvu$ު/aӊSD)WNn8sc]MؽwY䉄K[&hEGZ-0i70ݫCl 볊vn+4㟌RLu o`{lvk XI>;tRlB#GeFuH .JkE u_ügםhI|!"o4vEJlNG1Ov4~C=c(_(y+G~òO1&m9Nrjʡ)1Q"溿J{1cH-!Z ,4!z^7#5\ԃT:^sO=r҅w¹}un!Xӫ`nCGe~"Ԥb|h܄#d^t,E,G\PWG@{-[!"n!5bF8 T"Z"!fjzW3|ߏu?OCv:АdئƇ~bkrkyds#&{Y_/YMx߿ 2J dW.ـДy|6&;x{oO,l~sgB]!:r 82m*Lުxus3X1Kfёy7 /olEUEFN} >jW*Wyxs3I6g^O.*z9[H^/۫0[y &oezest.Q1~ ̧Z{J$v&ӽL1Q4;oX Wr__  streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E file_extension_jpegd':86178D35-500B-4623-A85A-DFB323809A81-7317-000022DE0373DCEE@IxKTQ]6(E1A*pѦBhhԦ&(a1!jGe91N83i{%.z{ϹssϹ/A4@I$e'SgX_DaqDU0J< e_#/\b o.@htLj|`"4~t Y.yalrA%lvb av4 .plWhTpL}t% S"zz b|ZtY2}OeBTBo9 akM]:A2C1Kf~  /|qleԿS֯OUf[OȪQe{ՒwbZ5fZ_S.S}թ1i})f)=olК -Գ5gc<+f) $&)([ ԢdgCdTN"NUSdM`7}_1Ki;԰(V>ï%[o\Gu=~Vk ~B streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E 'file_extension_htmd':B6072A85-4E32-4313-9BFE-CA12E71CDDE9-7317-000022DE037336E4@hx]HSaw]3?(smQAՍTWQ 7Cj 9E2VD4 ,74u)n=Չy[uڼrT ON$m^ ]>L*0tmeЗݥx NlEoe풃ױra]'71s$Zm&}z^Bg3`/O*@9 ぬ~-9 jjx >ƚvRtIi>GƁ46k/jWaS~&.#f/G V\#kkPb~}ƭ`y=nƲ<#M){>dӗ&^ |WS1 6n)0T#c= om]GW%.;ߔ};>IqԘ}\,,MQ/߸;g 9'M`%xto}E cd`o_]H..gQH|bF[6"К.sM {`yDg !hc-L[UM*[J;򤉘mu{\n]]ZcyI22Q,;H streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E file_extension_zipd':141ACB82-8C5E-4C2A-B4DC-B8D953D85190-7317-000022DE03725503@HxKQ!(b=N)m.*DK~1 QW-ͽY(W [εƜ2P4Ÿgv`DP?x}:ORwJ ΊxVZ|݁5'W{+%}ױ0_toG:s;8`~L+r}m#TNGsw=8꘡4 `lAp5T Tp,D}oZWJgx̭tG)M ӑ&h緡uGAsEG3f`#Y3er[;SM}Ks & C(q:7' s8O5{;Cԟ&IA&d}qjZy8EzI%:gI7%8O57?XMiZf%Lq 9SMˏ02h{x 5+h͞q"+s+MLU {&"NrThA\|e,C?Y@Ģ,^wX<uC8Ъj[<5̳9A㼢=!PtR*h streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365Ew ~file_extension_hqxd':0C889008-D40C-41E0-9823-0527E71BC619-7317-000022DE03719715@)xnQy TZ,0J;@/ L -3ԷO`{uRq%+s>s有TMŠBVȲ, 9|uE xy^A aNsDkw^ p w\.8`&XF ~F@y cBf&/Ã%u) '4Np y++REXFvsA v 0[% e"e!Pg9kn7#G|Ny s."]}EB!"ө'։Q2Fx:%ubRHX sQG6F& Z.E%jVv(=9f㷨VʨbG1תgœ"gEvmMCUњ HrT;.<:eG&Tgٰ&:*͐r(oP7r g,qŒ_I r5%I~ּ}G_oTGYeAI32eH5SIX/N('&Vwq稯pavUC0Lȅ˴av)DX1_җPG](dyaQDϥ'M 4Nã\;ؔa6%Ĝ9Ik #M3$`U܏& 6˳bIoǰz_JWx绒jRp̓&֍-0'pƨ7A֔'M m x=/1֐goW45+RD]+.bm&Z553]%_-@nkmn]5 uyO|2܃Dψ'>k!ӝ^_"5E㑼'roȷo)G  streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E Xfile_extension_htmld':E4915B50-BCCF-4E3A-A2A4-88DDFC85C7C2-7317-000022DE036EAEC3@xKSqOZuvqA_"|DFWkGܚ $ lRZ 7aiⵄMݲY.}{~gqbH/wαCH+Vo;Ņen *ڳu: p_Kf<*:%ڌWrA|N῁km*ALJ_B^!_\Yo Od!D fAOI}o9JZ4Uk̃R_n\/gdeIt6HpX@Q |F}z9s1fރ< _ q[ཛྷ v, kDȲΖ qb3hi=Ad@ XJЂ/֣U˓&!,tΠ/"s"p\|u;L&wR?QǦ]kދMY,˓&1תEv-Qi?Hg1fԥf9'M[ 0lހocLHN#}cy$e[Fne#:BvDŽH{1FmP9'MU l5qh^in~aJr,OF*K;FNb]xsZxƬqxrnk.NUXH/ӜlEo`.&{q2"ʆk$JPdX%7o}=XC׮:xosnXP#VHt__i/SA~LƛV2xV!Gxϩ8ʑCpl/IY& m;Vڨ?u÷Kp֭zJ̔O'8Q$8^XG%epBqGϾR_n f*}sN 8YZJ\kA.̥:G£KEËdk&| ԴC+F qOx#fJYhZJ:\9剙RޭL.)vtW+<1S:w 3 |zBm3s͕SHI;mҹ)O̔l܉! v\Iur3umxm/6zkLׯYDK!U\9-UF#7a streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E7 file_extension_bind':B50AC766-400F-4253-9654-13294B38B1A3-7317-000022DE036CAC73@xKa/tA'doKTFq҉V : &sZ e {zg8E4nZ&R` _f]Ea,LKS|Zsq?Jm(ڭKt7GN2faX=q)qKa,1߱93cVfzNb]xsZxƬqxrnk.N TS)T7t[ V ROFΆQS#ւGGXXkC&5#P'|DLjUz LSh|MvNY0Zo@ӝX~R ,+nu";G/ dˇSw11~ BǠ}iRdJ  9y|HXWyRgLِ= IqͥH7q0Ma?ߏLXN6W"n7#Csq0Maى{1yމ|0 N?)K,S+oMݕ_g2Ɨ~|:TfݤCqA@W uYzhM dzA2['vGD6mB'mo~@5 /E5V[U{doG5^$&|Tk8> }i^5HZa1N8ɧK{rNeca$} M5k4FIU ^cj~3؈'m1jVae>JUxmVB1O5 ^ 1yjje #Q,zSMB(OLۏbZIK&bxgاb' T *G̥G[yO<>$jF\i {֒D* streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E file_extension_rtfd':7A7AE012-6ED6-4941-ADAA-B810F40DDE18-7317-000022DE03658E24@>xKha"$$ͣ&$u•RPՅ`R3ƘQ,TT"U뢢dLHR,]P HxLb~p;y<:*G %/0 B˔ ǧ; ^AHxB\@D=i3Ao;:[LPN{ 6h=Əa݂"Ci} (!p"")J5P#ǚ1^8v]1!38z 7, XQCX9UcLC5㽘8S "qa:t؍I>o{ S=&U2QZ !]Oߞ|·_伎[K <ɜ>gLCmK6dUsjD و^ܮ1 ڊ+6,'wȓ5'0cW}ϘFBj»:0F{r[FPf:U36f__ p>gLC9`P[W7͔2pˊ׷s~4[트&K<[gI/I\_WN=?$K9 streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E file_extension_pdfd':151FF549-750C-485C-9255-3469B07D2FE6-7317-000022DE0364E54C@@xKaBb L!RKSI3̴eDp"ˈŋB2E!R00"𢚂0-SƲŖ_D>}~=q&87w8<:a ~[s? +cD-kz@lK%G"Frw7Dh C.H!5yd%cxpBOb:9mH0CwCZ0Vl+sQZsK˞6о`[.T'}nnʎ)L#̴`O|r2ޱaxO<^{̐%S=Kafy0k,ֹ\ﵧ} in:E]ϓb"^vQh c|ƣpMhr邗67G3}꣢T6<_U! ?El mO("~5>(] Pt↓= Rd  streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E ^file_extension_mpegd':006E318C-BD27-431A-AF83-E3B0BFDF3832-7317-000022DE0364379F@8xMOQ @?Y# cܘYJ[mU ABݸ35%R$F&4%i ƥ}9g0҅OrrLfv v>mZѕAvXK@^C^g>zS ^dY$ X#m;n߬86z/\"z ]XK;qh3iH+M pamوlċ@zH+Q/>ip>ZX'iS&#Ȇ'v, r49ψdN٤P( D y0yOtqJgo.U#s"^y݋["I(/tg2Ol1t Ӂ}`~IB\?i( U_ۣzSL煇G񮳆, cۈ[yfx=)!-t{ dl:s=)H dcb ߈D|4>{SLHMd:Wj۔Ǿn+(mR  streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365Ej _file_extension_mp4d':B87DDA57-9B11-452C-87CB-C71D10DCE80E-7317-000022DE036371D3@xKSa_us/n;`RHЧ>d_(" $ejL29b#  2Ȝۙ|mAz $"l>%.ιg^}Ы^%cKU. .?#sȟ9Ѝ}kz܁\RJdhA0 1DZe~@ ẵ V$;.z0#voE1ZM9x ) ݉#ލ|;3)<@ᢇ%/L52G$؅-lӈ.{O|2MNzL%Ӆ>k/) ݅/xy͋+R(^E^nccw#Lvě~k/)d.;[e>d;0s+~L|j'>k Cw=k9 b6ً'>k (P}wvaO\FEϚ"r` + 05XH=c%܉'>kۿF|~e#Gį` 0 streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365Eb file_extension_txtd':0675C424-B6A2-4128-A197-5E9EC0E334B4-7317-000022DE0362C35D@xS]SRQzz%fl0,@eȕ˽(4H]5c3=Z25c9xM |l@Emw |>j:>h7_l}=\ʻ MىAH>G~m@BӸsy3=a#*dw{Of]yKY 03BF9DU>@n md.0! "7PqUQ2Zoz]Cc*Vc/uELj ;a"זx.щ6:{=plV,<ةQ=md_[Fw_HROa/:AU 6'd_t̓w S<=mh+|QdMusmc[NkIA喒m%;ec[NsAe vI(R5D3ehKb-B:Ld aeʲl6%Dxm[*K@6*vZG^5mKCA,gPo  streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E#Layer 0d':C24D76FC-604F-44DD-ABC9-DE5742197FC4-7317-000022DE035EDBD5@"xox}XUXKl-\1^ hb{C"*TH׻!`=߽7Y̞w̞32{8rHqْ6z'%?={vE*@_̜9(W =UC ,,'.eXRbi?!j(qDEEJ׎ Rܧ ,4aCC XrqN/u ..V cCH{)CSzj89HJLM+@)CDڦLKKS))HHU4H].HW W898"%9V륞lٙdrdeem=ezH\UVᄛL].V=wvrBFF gaL<4n'Nŕ)4WL;oL%K4B{{]Xe쉽bdjqp]˪p.f!\q]ݗ8<ω%Ȕ(v$2(W\W}8h+8M^ҏecNʩ@sz[5_pw{PC\\ԛj:;@/fVԶۉ;w_iRP]ߣvXtr3[oDKj(qe BKB5]FGg3OQRh?#Ob٭g9>>M`YyC :_% ؐ@T*Mb\\݇W`i|VDNP/vQ[C |r]OoBwO](q;(W\Mc o.\Ƈ0)!)b'ln-DG9\19W)g缲I;߻['Wޖɿ/V6{-gt >artj܏ۍfίZKRoa AseL/$A<9ɧY8`/mޛzp_ N{yj783M;N^ VKboW70Ӵz4I%'e4 J>B"_GdE(NjBa/ϓ_|zd[.bluzk~ kJ4fXcoCLJޞUʵ1K\KRP%Y*8VrͻԺ.*vmi+eJB4fRT˥ssLJ0K%`,[%O [ ZTHV,ӎe :oo)Kʔr-i th|-'6b˨$}55Ud!6>g(`ZNps(Zditd9]\"FP?<0 х#4ONNJ >b#j8Ǘj(v=Aن_}#s'?Z.7ȇ$ou{IxW㎺.cJaooShjv_Wkndx/YȚHFSÿcMLդ\V6$\W~CEҴ@uz?U.J8L#ɜ D>J Ğ2=dSI+0J؉bb/~ĬYo~:?{Ŋ ܧ@֋n(q`Eb2n1{) /^uFZJp}1ʕ.[c,_m\PJ~}JU 篦5c~ʙTL:r?Ѝ7ARRB˺1/߷o Ipe+hѢnC{(=2M7z>hh޴VL^/kGr<|rua!̚j?DRQB aJjmYyrmGCkG֎H0g*,Z dgԿ2^j3LzDBH?? )#$C2X?DxYb8w^V-cÕ)8qaz"hD[zCǀ=eyQVpgV wwV+!p[Yl+}],fzߊvjgskkpbYٽ[K>)vW+Rl5J\!SW~~jZ;~)GFF"2* d"LJb!~)A\l$)KLFL LYFV+S;g7*xvdV% hW88JHVsc_ׯUZ쵹v066>KY^Oߡ~ŝ_{o/xmKŸ p3)wʨVA_T,%?W#bգ|.<2[O?poᳯs92枾iQx?+Y\bs9RIJ?+~KBuTg$ =1I:ʵ܇9Qbϋ|t iHDVr e{#:%m>CF|뺃nJ[UYZ>MJ>: GwYN^Թ6H54 4nDo-G9d}P v.ܤ+U{〃@떷2Ne9OP}@w]Xk"Ѹ5u/ĉ5k$sX$;pƚJbdqkMU=c?b Qa F] ^ON5u>Pƭڵ.oSB2V 2\F? tѤyQIAf0sNK Jrm{[hm]-&;`˖]])64-:<3fO@?3/ )C 2$_ kܼyC-C(2=$.={ kQ !q;~zcNU^)_YC}ASeAk߹@ž z bcS̙$ejڛrR'9*:?Nϟm(CS ϛ4J\gyȞ@7(ίI˺_=M*Ts3̡3&:VR374aRW/^Z1h[M/ ceɎ_жGxuE)CazP>]~H@ӎ2CALOOen@ΏDD툌[J'#*2\=!{7j?A'~/.& qߺN;r6+a ½/OYIhyWPFh;`zRBӋKLO@aƝ): .ǃV M/.%.+ BU~rƾyzhzyiyIU7~';zhz{iy9x>~(sUFJUhzܬLd|8\nSǛ_r&e)R;ؽy܋FNNpT$ᙑT\:VCCv0,LojOHœ8:W75&%%!.z{[:#$G3ojLUVآ~CC/،ҥ;L-׋Ԙz,oqUm8"ޠ~yŒ42> o3nff^5IGg_e hn1M _{CDrIB!Է5tkI MW2w BgGRBv_~':<̺#?^6yo~W1yn,oV HKo0 B۶mO>Iw*>Db`cc#עqС VQ+W'ѣ^a6S|7ҷ'Ê)"&&&:u?Jz%F[nv;kz̙+nnn&gõbA~v([]UV,XpyD~ХK1 ٳLz+ԬY3}Xͨ~(ϱ(/6lF[1"/(UFYv{[f!>;9V{%0G[O/~s>e[=bhU(Jh}lfe~E'P.*qr%~ͷѬP|z`vzSʅ,{3J G+;P{M3hV(jr/`.sԧd'%([fI(s֨[T7=`gLKsC_/1KܖW<נӬp*;sg{E*^Ptې\v޴z5ZT_dE0f&Ӹ_< E42o[)M*+E ʌ;f pwuws%ٯCщYܺq WWp\%]BQF͎\TTp ?+rG:ҬPԮ~a,d8ݒ-Ƶz2PTf⯣{`:N3/y][s4u.OT2ڌf ̹;?];}%~5ng^9: ໘84m>Ygm˪JV}'^o=c7p ']Өn![4+l~D҆P~\EW2ZlJ}h[:,¾GvϭȰUhnYͷ\}e.rJPx*jl88ӬpT=@pR)q]GhPt;T˩ܢYL~#mll ipV).R~-5}@_POZHSKT33(q{d,MB~-4KYK"Qd| .Ro1e_}*mVQB{ streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365EMASKSPREVIEW*@*@x}wTWW5﬙w3ݨ"vkI4 b^#bQAPAA,b)E+b~O$Ǜ5;{ss>r1k݇S cJ:80Ү#׺Oi/N- y-Qi~@R<  ˇR^^7:Ǫk#e v*B-F808#nfm$C]}bϘw lM?43Lksju-N="9:Mǁixqp&!١ٛ"qvlg1Pk]cmHosǥd[$p+Yd#Ƚy##>Zk[7zx.fH[\<H79 vliQT_0.q*x)mZGY/:Ӧ#ֺ>Euqҷ>Nx%U7g_juIщ68חk NxTũuX_Oki;2[슺d=j:Ӧ#Φ!ohkҚzZy16.J֋NX8nXZiDDob SA+(((((((GZLt'eT`zotӚ}\EFϫy'v 7%9kq{ %/_)Ϗʔ?Ge?Ge>.UY#<~)se?^C dƄ%.E^p/<5%6-) ~=iӒI+tF{>(L^ëY@-}m⬼d J.!]7ٹOyGe_ uD) -XwBn ҖN>l({<<@ ><OgϤsmea7|DfoY#^/ ‡ak| cC9Yts'H,O`{{JMvk/

      >я/,=d#s r]Yݿ6JԲ[8  ,:4U_էݚlѺWG0Db_9kcy_(` 3˕Jmzk{f)Jy8&H|"lX>Ⰳ RiJiu_ vNFv/q6#ͩ!"3:΄!}e{D^"HYQ0g8c;}åU\u؛]'jϕ6yb GˢȺΟűb/<'=>dpDO]ˣwڷU)*fZ)@E'ztH W~E%ˋkڎZ)@Jщ6&/ejp9VJ,vщ6$:jXwJNى qk0dl.:ӦcςJIZ6t~GR/=m:,I. HщJU}(E3^Xqmw ;[I)ߒȥXiE ߎEgZ8|DIM~?3 s ~ۡA}=p; #hl t$ EAHe1a#=?>nmvӞm:Iv9B8d?XӉ6glrav?$쫕Z]P]tM7 !-?q2>@-Gfgװ{Q7VNmVEO/,h8_'b󏸗ӛhhDT $^<'< 89X?Ɗ'<9EڟN1uIQpV& r5' ߋL}u_qZ}ЦC?=d7B0c>AՏa;Oqc(=7[ey+ _4e>*'g\2&d6Nhc' _8$-wOoGo^K,Mgn~S ||SgoMTr/C%Lq@CDO.h W?zhm?A5YhPӉ65]Σ|;CN0uLˑI)Kv>2/ŸS̳b\&Z,X4{ Ҹ/Z}ܻ}ؕ\WIBDO1Ry>VFO6EV.5G"w?Gν?1ţ7<pQOo5G}^"fze;\3c*1yUROg4~CnћCcI^ŸMdN;ԼnRċyk(R;c~_aE c esp7ɳw|D,-h:CLG '}WH ҦC'M>R"yn8z~C\^|;#fyz=:86`{&έ# ̹!وkE'ztH-plaVtÐRJb7!b?4d~/)17n`C2~^FY5pp1eFV;sGe;3=g{S#C¬*8ۆmlP2m:b戱́j!9MCm$y,8q qNT8|CJ#iF)$)}#HW{-i<ڃ8)s8 M'ztH`KW|2r!uA,gRZ;ۿtMw7w>/>ҝ,;"=m:$Rg|E<`qi'PyWetMG,6~/PNyU߯=m:p\-ѯ<Yļ #R4|KDtM|Dgw@{D'zcW|(EBCOg9'MJxCÀu롕o)qp0/=Rw+2w!(W.9T􂁥S_MNr+/_Tp5]E*W^?H`q|R=6侓jԼZ_\>]K䣳tDO]]z53ǽ9X>kD:ЄktM sDL4ox}lX y;ZPE'ztTf-CfѬ=l(@|34]tM6Ӏv_?DoE8~91qti>B&1ע'm-5K1 a3l -QiQ9tmsqV*Mzv_"7bMgw c'zW]ztcE^=hk,~ݞSQ[_?70#r$٧' zt|^~=mC3$P^AAAAAAAOæɍ2sȍ_7)-5rNÑs l{T);bϋysNp}J8տ>ğ5-xUC sC8R+ܞՍ?u9@:'=:r/DȾMG7ο!<jW`ZDO9q?;ޝ9wb >^=ûqE6v kήׯ ?`p:J4>tMw7vEUjg_^xrDO3;0^r׀GUOӉ6q_fhoTxpb==NL,SU_tM亂7>5y~Um^5!4i!Րx|#):Ӧ#0ߨ-=Dc{YdN+\\?X{DrIM3Ap7- WfWB>דp vL=lDOyo?] Y7m@~"+Ւs̍~/`^pq s !{+mpk1`vщ6Hrbr^#u71|(Ef,WQ}#~]ŗi%]yX~XIsR`ʌ @X5؟{>dĠX1H!~_Q':l73`:.{70,.,3?/Fnh63a~ 'V[T%3"M7"sF=ļX^澂$gJw1)1x쿕{_fj!k~o ;n>ט|J;Ο30~ڟ^yqo.g<ǬB_d|Ƴ-gQ},yC->ąXs M\Cu7S vi?ҦCgB Dyh-?Kŗ,b /&ҋ~&WTE~q0$_^_Cߣ#Y?.5&,޿i8߃,ܟiJ ћC +>WPPPPPPP_T((((((((_A*P?>*PTͳ[yP#: 2`߷.g޹tRS;vGr><(c6 Zl)aa8v=-p?ȹpZ#êVJŖVD>H~lg\G6ƒ1Czn p8|VNkaǷax37%l&۔exZ5۰X=3LBbTWZ7__b5x p2.NnTX2#}x׌w{lj؍ὉN8:`WPPPPPPPӠ?P )P_Tqq6VqL&%@w ovR܉A~mo ۑ@LKg=тoq\DX}^~|ۡA~:1{WPPPPPPPE{mY<>{ö{@[/RxW3 r {\|we,W\cl-d׀9>|d7/Br%,+`LY)2!o ,CK9r"~FvyXLD?{ץW]W&҃X| g1|ϒ/!ztt`r9JBCh@'k~‰\tjϙ6_x_AUL$ڮHw7]tDOyN<ŏ1$ D#Z]wNx=FGǵXkҵNk垹;a۝bq 1Aӏv9'=^ba:8*έW0h:ӦCjKV7Tki!։ϟCc,^e.:ӦC-SbiMWS24J-xίf جDOܱٝyb<FMt×uٶb=m:$( ~"cFQM'zt1#{ Z-d~M'ztk42N?$u71W|(EưaóFƑ#0bH1B+GKFѻa}06#<,`U XA&N Ю]bs}tvvm`,_~s о}"(W?~B.]<ʊX`yR s.F׭ B^Яo_׮/>^n= Z`Z#yr@ٓN $8cG<,V#pՁ+0r0 awo 4HȾyѦC{_claA')<\z@ Hr& bİ!زq#{~!1q8L0Aki!e:y&OBR7mOtM2N:y"fLQtM~>=6Ӧe=sfi:ӦCbOw,p-̴LދPn\=m:F _ֻ-vyNڄ=m:u7jh֏cR'zcH> yR T' #Y%,1YN09wvJn&F <VMV_-jԀ*R60.ۏycNժ|߲6nq殴4HuƥQ9c1Foc&A#y'('l-._?ŵ=m:$#l7SN =;uÕ=nwKeӦ Wk+ln Mp20nl}lSA渲۵|v8#bF;DMS;iב3;`묎iGDO/nsvdDX׏=[}(.aߕm5i?]ݰs޷ޜN"bv;]i:ӦC36ط;낻 sO(:ӦCS"֥'籺e߱gĹDO!82 pЭ7~]5AZPtMNJuq*x,VEڊ!H]1- imDOŭZO(:ћCK>WPPPPPPP_BCOg9'MJxCu롕o)1³G;.(WJCO/8 i܊C˗*\FjWuVx+W Y$SRFyLy=Zծn:ͪ_GnѺ 3!ztsjf-B7ѽ=]i M'ztHi4 hlRDpK̷fN9}hZ7VM=:_F;h.:ӦCbi@cGh~Mj=m:*28M6}6_edzVy[=E'ztT,sFwEyX#r|tm:d\M'ztH;cw :+|߾y \z_1-T缀xNDJTap;5>DJS]gr}5& & Tlklf l-AWiklfl,0AWjldQdlM,.lI..;Nblfl2*-.:Ki+*-Q98M+TWY[Y3FcumVH3SUGIX$',1HNSWX 8]tjM 'PQ<= "(1llg}gaYhxa[MPYjr}[WiovWSiovSA A., ,.T {{{|||w{|w{Žyfipw ĸ i [^ai1nnjcmjc=M^c]UYas|]YYSSA A..U  1m mo oq qs su ux x~ ~d dTU U :U :U ++v@lpm@  l pm1{_S~z|~[Ru]x}==%qnnmkyyx|{}ytuplikwsy1xjvjx==%1Ľƿý==%1hhòƟʴЦݶ IJJGKϫKLIIJJHJۡJIܾIIܥIH˸HJ̟JIdμIHߐ´ϣHHHI఼IHHHHGHHG|̷~ͥtĺ}}{˼{zz{𭭯ĺ{zHzwqwwwwvvttqq mڶ88982AgW!%:3Mgg$ii%ll&orrvvzz"IJJGKϫKLIJŻHùJؿIǭI̞HðJIHHHIIHHHHGHHG#IJJGKϫKLIJɊHwYAܷJPߺIicIHyJxIxfHH"|14554310v̷379:8630-ͥt2689@30,145Gp1.+}/23rmQ,){,/_ߧ|'z*+Y5*(${(())((''#z&%$$##""mwwwvvttqq m$|̷rOW٥tOnhWv}nޅ{z̾{zϺww"ڶ~*5gjdDUݣvO#   n#ڶI"Ỵ0ͽ"}Y0}K=FSly4Fe-4=yeS"Mgg$ii% l& r v z  #Mgg$ii%@l& r v z@    @IIHHHHGHHG$ 1441 0/OӯZ/0(1{Ӯݙ1(${ӭΑ$BCDBGPg3HNK;>@AA>K[2`b<@AEGIIGKBP^T$IIOUYZXTGkk/>GMPRTUUM 0S USQ̸QNT8MMLJIHFD?79=9QMˋrnid_QCFJODML[ňfa\NDHNRWIGJw_OGKPUY]NCGT`[LMJOSW\`cR=E]XSOMQVZ^bdgU7BUQLKTX\`cfggV2@NJGM[_beggV%8?>>GMPSTVVM 0S USQQNT8MMLJIHFD?9=A<QMˋrnid_RHLQWJML[ňfa\PJOU[`OGJw_QMSX^diUCGT`[LMQV\aglpY=E]XSORY_ejnsu\7BUQLL\bhmquvv]2@NJGSfkosvv]%8?>>LTWZ[\]]Q 0"Yf fY"[ [i fg fh fj fl fn fq fs fv f{ rd dBY] ]XUUsRPNFF<<22++!ɆԆ!zz cc  ZZ T0 %Y] ]XUUsRPN`f|u{F\sz<b|2dj+Ss!:\wxxwe:2<^U]tBy{ {vttsnjgg]]SSIIAІ݆A7zz700*cc*$ZZ$""""j""!G!" "%y{ {vttsnjiq|gcz]hSjqIYzADc~~l7D;Fc\bz0B }vttsqqii__UUKKAцކA7zz700*cc*$ZZ$""""j""!G!" "% }vttsqqiƹ_ҲUӦK̤Ap7pip0B9f f9zf$ffffffffffffffggkkqq+y'F" J%9f f9zf$=fK f f f fK f=f    T0 %Y] ]XUUsRPNFF<<22++!ɆԆ!zz cc  ZZ T0 **$$""""j""!G!" "%y{ {vttsnjgg]]SSIIAІ݆A7zz700*cc*$ZZ$""""j""!G!" "**$$""""j""!G!" "% }vttsqqii__UUKKAцކA7zz700*cc*$ZZ$""""j""!G!" "ggkkqq+y'F" J%9f f9zf$ffffffffffffffggkkqq+y'F" JIJJ99JJGKՙϫKLIŻwIJJɻwHJ˻wJI̻wIIΙwIHϻwHJϻwJIһwIHһwHHջwHIջwIH׻wHH߻wHGHHHHGaaa登|ۻw̷~߻wͥtw}⻙w}{w{zwz{w{zwzwwwwwwvwvtwtqwqmmmbڶwwwﻙwwwwwwwwwwaMggfgg$ii%ll&orrvvzzaIJJ99JJGKՙϫKLIŻwIJJɻwHJ˻wJI̻wIIΙwIHϻwHJϻwJIһwIHһwHHջwHIջwIH׻wHH߻wHGHHHHG#IJJ99JJGKՙϫKLaa登|ۻw̷~߻wͥtw}⻙w}{w{zwz{w{zwzwwwwwwvwvtwtqwqmmm$aa登|ڶwwwﻙwwwwwwwwww#ڶMggfgg$ii%ll&orrvvzz#Mggfgg$ii%IŻwIJJɻwHJ˻wJI̻wIIΙwIHϻwHJϻwJIһwIHһwHHջwHIջwIH׻wHH߻wHGHHHHG3IJJ99JJGKՙϫKLIŻwIJJɻwHJ˻wJI̻wIIΙwIHϻwHJϻwJIһwIHһwHHջwHIջwIH׻wHH߻wHۻw̷~߻wͥtw}⻙w}{w{zwz{w{zwzwwwwwwvwvtwtqwqmmm4aa登|ۻw̷~߻wͥtw}⻙w}{w{zwz{w{zwzwwwwwwvwvtwtqwqwwwﻙwwwwwwwwww3ڶwwwﻙwwwwwwwwwwll&orrvvzz3Mggfgg$ii%ll&orrvvzzGHHHHGIJJGKϫKLIJŻHùJIIH⟖JIHHHIIHHHHGHHGmmm|14554310v̷379:8630-ͥt26T30,14651.+}/2P/,){,/00,)'z*+,+(${(())((''#z&%$$##""mwwwvvttqq mڶ~FB   n@P(ow.png     cgc{cvR4!          튀݀|{ y~|{zw u~}{zywvs q|{yxvuo m~ k|{yxvusrponlki  ?; e= B %         oc.png     fggBA@?><;:936532A55320?j200/>P0.-<<+:.)8321/.-,*'72.)&50/-,+)('$3.*%#2,+*)'&%#!0+'".)(&%$#! , + )(&%$#! ׸˸곳ޯ /.-,*)(&$""! .~# ,[*?))'% #!       ?; e= B %         oi.png     rjjkɽ칳  b`_^]\[YXUVUTR_VUTSR^TRQP]lQOO[\MZQLX KWZTSRQPONIVXLHTUPNMKGSSIEQPMKJHDPNGBOMKJIHGFEAM @MKJIHGFDCBA@?=uP 3            ?; e= B %         oo.png     @nnn~|{zywvutwqpnm|pmnmkzmlkjyjihwshuigs cr ap _n ^m \k Zi Xg Wf Udca`_^\[ZXWVTS~|{zywvutwqpnm|pmnmkzmlkjyjihwshuigs cr ap _n ^m \k Zi Xg Wf Udca`_^\[ZXWVTS~|{zywvutwqpnm|pmnmkzmlkjyjihwshuigs cr ap _n ^m \k Zi Xg Wf Udca`_^\[ZXWVTS?; e= B %         icons8-pp.svg     v qqr / ./UIIM 3GIJJLJwJzJ骊JJJº̊JZJƣJUJيJ݆JJ㡊JwJJ~JuJJ͊JJJw3GIJJLUIIM.0 OeedReeefef߃߾efa.eef`'eefeކeefSWkeefOefjefefOeed./*[ +^@q\          q\+^@*[.icons8-excel.svg      v<vPv`/U1-+ 3/..0-..DLLK.ELL.nL.DZX.ybL.4Ȱ..iL.o@..fL.tD..fL.<ѹ..iL.5b`.ybL.nL.ELL-..DLLK3/..0U1-+./U~ f}}||}}~}}~}}뾯~}}׹~}}}弯~}}}}޻~}}}}޻~}}}弯~}ꁞ}׹~}}뾯~}}|}}f}}|U~./U123 3/11242HPP2IPP2qP2H][2|fP28ɲ22mP2rD22iP2wH22iP2@Һ22mP28ec2|fP2qP2IPP2HPP3/1124U123./*[ +^@q\          q\+^@*[.icons8-word-2.svg      zzz0      !!  !!"  K"L ! 6DD)"!H K" Po a~~8" αY a~~8" S( K" K!h 6DD)"  K"  !!"  !!    ./UIFD 3GGFHGGHFGGHGGHGGHwGæVGHVItGHGz쑧GHGÿāGHG|[GHGvVGGHGGHGGFGG3GGFHGGHUIFD./ ѩҡᾡ./*[ +^@q\          q\+^@*[.2 icon-group     ~2~2IJJGIJJKLIJJIJKϫnHInoJJoφIJφυIIυЇHIЇ҆JH҆ՇIJՇ؅HI؅كHHكځIHځHI}HH}HHGHHHGGHHGþ|þ­­t̷~ͥ}{}z{{zz{wzwwvwtvqtpmmqpmmm mڶMgg$Mgi%Mg l&i l ro vr zv z  ēē2 icon-text     F22IJJGKϫKLIIJJHJۢJIܿIIܦIHHJޫJIIH߮HHHI౯IHHHHGHHG!|̷~ͥtż}}{˼{zz{̼ż{zzwwwwvvttqq m"ڶ!Mgg$ii%ll&orrvvzz!plugins/file-manager-advanced/application/library/img/src/quicklook-icons.pxm000064400000023453147176754550023525 0ustar00PXMT_DOCHEADER @N [!!METADATA Y % streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+ _IMAGE_ZOOM_NSNumberNSValue*f_MASKS_VISIBLE_RECT_{{0, 0}, {0, 0}}_DOCUMENT_SLICES_NSMutableArrayNSArray _PX_VERSION_ 1.6.5_DOCUMENT_WINDOW_RECT_{{472, 130}, {401, 696}} _PRINT_INFO_ NSMutableDataNSData}[381c] streamtyped@ NSPrintInfoNSObjectNSMutableDictionary NSDictionaryiNSString+NSHorizontallyCenteredNSNumberNSValue*c NSRightMarginfH NSLeftMarginHNSHorizonalPaginationNSVerticalPaginationNSVerticallyCentered NSTopMarginZNSBottomMarginZ_LAYERS_VISIBLE_RECT_{{0, 0}, {239, 240}}_DOCUMENT_SLICES_INFO_PXSlicesPreviewEnabledKeycPXSlicesVisibleKey__OLD_METADATA_FOR_SPOTLIGHT__ colorMode layersNamesUntitled Layer 6Untitled Layer 5Untitled Layer 4Untitled Layer 3Untitled Layer 2Untitled Layerkeywords csProfileNameGeneric RGB ProfileresolutionType resolutiondH canvasSize {32, 128}PXRulersMetadataKeyPXRulersVisibleKeyPXGuidesArrayKeyPXGuidePositionKey PXGuideOrientationKeyВ@ҒӆВ`ҒӆВҒӆ_MASKS_SELECTION_I[73c] streamtyped@NSMutableIndexSet NSIndexSetNSObjectI_ICC_PROFILE_NAME_Ò_ORIGINAL_EXIF_*kCGImageDestinationLossyCompressionQualityDepth{TIFF}ResolutionUnitSoftwarePixelmator 1.6.5 CompressionDateTimeNSMutableString2011-06-11 22:33:32 +0400 XResolutionH Orientation YResolutionH PixelHeight{Exif}PixelXDimension PixelYDimension ColorSpace{JFIF}YDensityH IsProgressiveXDensityH DensityUnit{IPTC}ProgramVersionPixelmator 1.6.5ImageOrientationKeywords ProfileNameÒDPIWidthH{PNG}XPixelsPerMeter YPixelsPerMeter DPIHeightH ColorModelRGBHasAlpha PixelWidth _DOCUMENT_LAST_SLICE_INFO_PXSliceMatteColorKeyNSColorffff transparentPXSliceFormatKeyPXSliceFormatPNG24_LAYERGROUPS_EXPANSION_STATES__STATE__ID_;2862F1CC-E29C-40CD-ACEC-4C3C2F52B266-14332-0000DD7C8ED79D78#$;1C716CD5-CB6A-4036-AA01-E604F1295CF8-14332-0000DCDFA064FDE4#$;149D0829-DE43-4377-AC40-B2887BC1CF57-14332-0000DCD72B273396#$;F643CD27-63E6-467B-8CFE-484EBF8C5E59-14332-0000DCD3C28B36D6#$;94E82950-90A4-41FD-95B0-0E9E14581547-14332-0000DCCF3AD120D4#$;DF66A535-7BA6-44E8-B005-A067A1A05212-14332-0000DCCB983B93B5_IMAGE_VISIBLE_RECT_{{-113, -7}, {385, 654}}_LAYERS_SELECTION_8[56c] streamtyped@ NSIndexSetNSObjectI GUIDES_INFOP @` COLORSYNC00appl mntrRGB XYZ   acspAPPLappl-appl dscmdescogXYZlwtptrXYZbXYZrTRCcprt8chad,gTRCbTRCmluc enUS&~esES&daDK.deDE,fiFI(frFU(*itIT(VnlNL(nbNO&ptBR&svSE&jaJPRkoKR@zhTWlzhCNruRU"plPL,Yleinen RGB-profiiliGenerisk RGB-profilProfil Gnrique RVBN, RGB 000000u( RGB r_icϏPerfil RGB GenricoAllgemeines RGB-Profilfn RGB cϏeNGenerel RGB-beskrivelseAlgemeen RGB-profiel| RGB \ |Profilo RGB GenericoGeneric RGB Profile1I89 ?@>D8;L RGBUniwersalny profil RGBdescGeneric RGB ProfileGeneric RGB ProfileXYZ Zus4XYZ RXYZ tM=XYZ (6curvtextCopyright 2007 Apple Inc., all rights reserved.sf32 B&lLAYERS_} Mf @Untitled Layer 6d';2862F1CC-E29C-40CD-ACEC-4C3C2F52B266-14332-0000DD7C8ED79D78x 0  LA93K3p#P &imzᝊH-HR,B!M(}+P^MP,u]-<{@,^=t64i(Zc1 JFnVz@-U8ncf-l9a^a?FVfqy+=]Bx&9<5pi]vلf}6a~1*S̕.r{PI 5Mn*W0Lio^ streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;378ECF44-079F-4719-BD6E-40FB91AA949E-14332-0000DCCB983B29D6 `Untitled Layer 5d';1C716CD5-CB6A-4036-AA01-E604F1295CF8-14332-0000DCDFA064FDE4<xˍ0E鎒!XfK @t܃L>`^2Yl";b~.j~i-<sy~я \d()C۶k7? e  0t̖asn~ һXVw+w5I` }24wkm-nouw]_-I3<0ϛҧrGI)McI└TD *m ;k*oeGS]P[͕ }4̅GF,g^ q!nW]ϲ6 streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;378ECF44-079F-4719-BD6E-40FB91AA949E-14332-0000DCCB983B29D6aCUntitled Layer 4d';149D0829-DE43-4377-AC40-B2887BC1CF57-14332-0000DCD72B273396 x 0 P g93K3pPJLRJqPa۶ "-bMh}*^dM[>Y΀Ef@b{ c= Ch6fHj3ݑnyڧ48ߒ[fX%[oeyu)KJ]Jnf yN:ÞMT.gplR5̐9L Įejgu53D (5Hz֮T]i6\U%jj ޚ^ streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;378ECF44-079F-4719-BD6E-40FB91AA949E-14332-0000DCCB983B29D6 !Untitled Layer 3d';F643CD27-63E6-467B-8CFE-484EBF8C5E59-14332-0000DCD3C28B36D6cx;/QFH&1'XmFhS?;A""&T7uiy79-}9O?}oOsiѵ;b**ѩ1،XBdO$(Q}3` *J&(ϔ(S=kQC;fq]FZJd~(YGlK|K4)Ӽb8gӶ3x̪Qm'}ۣ^1S]Bll);V[mӑpYRZkMY«xK.CܿPW&vPʂ ( JT)1MRTT,a#}$or/BhK streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;378ECF44-079F-4719-BD6E-40FB91AA949E-14332-0000DCCB983B29D6 Untitled Layer 2d';94E82950-90A4-41FD-95B0-0E9E14581547-14332-0000DCCF3AD120D4dx=/CQ!a&6Fh0Zo`6ILh^/s4i{yz7ij vp._j 6CѬqQQAdSAMqbRψJ|lf8yxFZeJ)UuY ζյom(C>1;s\2:KqӉ36q埬m4},;vHUSQJblGE=FsmZtUoXvu[cMYN\_Ӝ# 7E 4M-R,a:Wj% [}%h_iHjhK streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;378ECF44-079F-4719-BD6E-40FB91AA949E-14332-0000DCCB983B29D6w Untitled Layerd';DF66A535-7BA6-44E8-B005-A067A1A05212-14332-0000DCCB983B93B5+BxmH@XA_ streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;378ECF44-079F-4719-BD6E-40FB91AA949E-14332-0000DCCB983B29D6MASKSPREVIEWC /@x?OAqB4Hv&5}H*h ĄƂih4TZ A! ~ Esvwv~C1];&p 6 + bS)AdL,E3xb #|^4U%}]4WӁWj.pK8G8>8qtiVՋP|:/mqނ_ w4ft\gm<"> CQH8$6!6as<хI/s)7şG)vu bxES3=`J&LG&n5hj*vG{D;>> /7k0}%"^_W |r NvEEtRgJ ,7) J OM9J +S.3^8S1}_pJ ))tnPBpSTѵ9g45AD!mJ=43CL.J)ܥ)jPxMbJ)1d٣Ϯ%lF~m 7t1$ قte-L/,@A@d CCCc۔\k#9M ]:=66 91]ͦSo iۿU]dM?{ammk~--kUY6{ܻw7JIy WC9[Bw+ 9^-8M$1pF@sc YT_kyh.4[\U]i4[pC4Y]]M}3߶q {(Ռaff&U˗ϼH$!$/%Pī lAjEjhd ī1o/B@YtZCI~H ^=?4[_l Aj~K &5"ote-9MQ45AD]c Vc`2ş۔\k#9M ]:-sy:J}8Uݥl: >4SQ]Dْ7yPT'ュfplugins/file-manager-advanced/application/library/img/src/toolbar.pxm000064400000147300147176754550022053 0ustar00PXMT_DOCHEADER@@N#\METADATArp> streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+ _IMAGE_ZOOM_NSNumberNSValue*f_MASKS_VISIBLE_RECT_{{0, 0}, {0, 0}}_DOCUMENT_SLICES_NSMutableArrayNSArray _PX_VERSION_ 1.6.5_DOCUMENT_WINDOW_RECT_{{370, 43}, {460, 821}} _PRINT_INFO_ NSMutableDataNSDataz[378c] streamtyped@ NSPrintInfoNSObjectNSMutableDictionary NSDictionaryiNSString+NSHorizontallyCenteredNSNumberNSValue* NSRightMarginfH NSLeftMarginHNSHorizonalPaginationNSVerticalPaginationNSVerticallyCentered NSTopMarginZNSBottomMarginZ_LAYERS_VISIBLE_RECT_{{0, 0}, {239, 240}}_DOCUMENT_SLICES_INFO_PXSlicesPreviewEnabledKeyPXSlicesVisibleKeyc__OLD_METADATA_FOR_SPOTLIGHT__ colorMode layersNames' magnifier plus-circleUntitled Layer 24 arrow-in-outUntitled Layer 18Untitled Layer 23Untitled Layer 22Untitled Layer 21Untitled Layer 20Untitled Layer 19Untitled Layer 17Untitled Layer 16Untitled Layer 15Untitled Layer 14Untitled Layer 13Untitled Layer 12Untitled Layer 11Untitled Layer 10Untitled Layer 9cursorUntitled Layer 8Untitled Layer 7Untitled Layer 6Untitled Layer 5Untitled Layer 4openmkdir arrow-090homeUntitled Layer 3folderlockfwdbackUntitled Layer 2dropboxasterskҒUntitled Layerkeywords csProfileNameGeneric RGB ProfileresolutionType resolutiondH canvasSize {16, 576}PXRulersMetadataKeyPXSlicesPreviewEnabledKeyPXGuidesArrayKey!PXGuidePositionKeyPXGuideOrientationKey 򆒄0򆒄@򆒄P򆒄`򆒄p򆒄򆒄򆒄򆒄򆒄򆒄򆒄򆒄򆒄򆒄򆒄 򆒄0򆒄@򆒄P򆒄`򆒄o򆒄򆒄򆒄򆒄򆒄򆒄򆒄򆒄򆒄򆒄򆆒PXRulersVisibleKey_MASKS_SELECTION_I[73c] streamtyped@NSMutableIndexSet NSIndexSetNSObjectI_ICC_PROFILE_NAME_⒄_ORIGINAL_EXIF_{TIFF}ResolutionUnitSoftwarePixelmator 1.6.5 CompressionDateTimeNSMutableString2011-07-14 21:32:17 +0400 XResolutionH Orientation YResolutionH{Exif} ColorSpacePixelXDimensionPixelYDimension@*kCGImageDestinationLossyCompressionQuality PixelHeight@ PixelWidthF{JFIF} IsProgressiveYDensityHXDensityH DensityUnit{IPTC}ProgramVersionPixelmator 1.6.5ImageOrientationKeywords ProfileName⒄DPIWidthH{PNG}XPixelsPerMeter YPixelsPerMeter DPIHeightH ColorModelRGBHasAlpha4Depth_DOCUMENT_LAST_SLICE_INFO_PXSliceMatteColorKeyNSColorffff transparentPXSliceFormatKeyPXSliceFormatPNG24_LAYERGROUPS_EXPANSION_STATES_'_STATE__ID_;CD8727C2-6F67-41DA-8C2F-CE505FAB2C7A-33087-000042107C96E923;073F11BF-5069-446D-96FB-EF109F02CCFA-36602-000097AE2DC51F2F;C1363BFB-193E-443A-AD0B-8511BC409A6F-29548-000069B198A631CA;E356DD92-C0F9-4B5D-A211-BF39349433F9-39289-0000E9437ACCF231;AE2104D9-B13E-4B14-8BAB-AAC3D8FC40DC-35862-0000E8AD7D2189BE;011BEE3A-A0BC-4226-8CA7-E8E364BF9B8F-39289-0000E916B841A7B5;75D3E968-C599-48F5-9D1C-F977157F4291-35862-0000E8D3F98A5DCE;E8447E0C-376F-4BE1-88FB-A14AC09960E3-35862-0000E8D1DEA7B30D;B4F89CDE-801A-440B-969E-B64590186D69-35862-0000E8C65BD08A75;1B3A2DB2-462F-4AD2-8E63-A511531582BB-35862-0000E8B73E50FC4F;3FFF6F4D-C0FE-4904-98E1-7827D4FEDCF8-35862-0000E8AD3A5FD212;D0DA8E89-B9D2-4998-9F23-95DD3F815B1C-35862-0000E8A6A074A808;00D96706-BF0C-46D4-BEE4-2857CF789063-35862-0000E87E2F6439E3;32208EAF-B655-45DF-9226-55D78F3FB892-35862-0000E87BB790E53B;0B7C488D-95A8-4049-8BAA-8422C47BB507-35862-0000E8715334DD1A;51CC2D6E-18E6-45EF-99A5-4FF6D23BBE55-35862-0000E86BF410B247;1721C0AD-21A6-4934-9A35-C0AF5A6197E9-35862-0000E8582FC09B33;67CB2F1B-C59B-4391-BFEC-460CA1DAC141-35862-0000E8437DFE65C3;E49BA826-F158-444C-AFBF-1CA4D6D6540B-35862-0000E8367BC6E02E;016B29D2-3E17-4160-82DC-006092961693-35862-0000E82491257109;07FA941C-3EF9-4B08-844F-07C031BE3E26-35862-0000E80BBC6B937E;2EE02F45-7841-41A0-A750-018CA401B0C2-35862-0000E7FB5A9FB437;FBE60D08-3EA8-45EB-A97E-8900D766368B-35862-0000E7E7482B1C1C;44E6515D-E251-4175-9B8F-8294CF5BCF3F-35862-0000E7E14671DFD3;39BD2F4E-7D1A-40E3-B817-17E9E855E914-35862-0000E7D3E6BF9068;F76A522F-9997-4CF4-A4D4-EC5F801548BF-35862-0000E7B6F42BCBA3;4432BA72-5B16-43E1-8FAE-C9DB651AC51B-35862-0000E7ADCFEA1C98;949F4C82-6AAC-4CDB-A190-63EB00C81A5D-35862-0000E78DF34A65F5;37C2B011-5587-42AD-B6F5-E2FD07E267E8-35862-0000E6D9B27AA223;50233FD7-2823-4014-A50C-15D5CED50E6C-35862-0000E77FA392AB78;1D033B45-E2B1-4EFE-92B1-5DE8681F61F7-35862-0000E6DE7A0CC3B3;7A84FC86-36E9-493B-B9FB-A28B63C1F9C5-35862-0000E6FDE0068401;9F7F1C9B-8752-4969-ACB6-46386249F9BA-35862-0000E72809E9F8C2;AEE77F80-5E50-4A57-A909-0A342561B8F1-35862-0000E71BC4FCE99A;259ABD1D-DCA0-411F-85F3-2554EE05CA0B-35862-0000E71385F4E1E8;79085DED-F38C-4141-B3C8-ACCE9C02F7B3-35862-0000E70831DA0DFC;E6893B39-1C08-487D-BC79-EC6F986BFCA4-35862-0000E6F3C79F84A3;7888F9F4-C832-4179-880A-C90CA687A5BC-35862-0000E6E7B2620386;D91B76BE-DBDA-4627-9D50-7A221D5C4584-35862-0000E6C9040FDCBD_IMAGE_VISIBLE_RECT_{{-167, 0}, {429, 779}}_LAYERS_SELECTION_8[56c] streamtyped@ NSIndexSetNSObjectI GUIDES_INFO8! 0@P`p 0@P`o COLORSYNC00appl mntrRGB XYZ   acspAPPLappl-appl dscmdescogXYZlwtptrXYZbXYZrTRCcprt8chad,gTRCbTRCmluc enUS&~esES&daDK.deDE,fiFI(frFU(*itIT(VnlNL(nbNO&ptBR&svSE&jaJPRkoKR@zhTWlzhCNruRU"plPL,Yleinen RGB-profiiliGenerisk RGB-profilProfil Gnrique RVBN, RGB 000000u( RGB r_icϏPerfil RGB GenricoAllgemeines RGB-Profilfn RGB cϏeNGenerel RGB-beskrivelseAlgemeen RGB-profiel| RGB \ |Profilo RGB GenericoGeneric RGB Profile1I89 ?@>D8;L RGBUniwersalny profil RGBdescGeneric RGB ProfileGeneric RGB ProfileXYZ Zus4XYZ RXYZ tM=XYZ (6curvtextCopyright 2007 Apple Inc., all rights reserved.sf32 B&lLAYERSvN'$ 'V*-0459';>@DGMI2KNQCTVY\`Tcfjn:qxtwnz~sWq(H1 magnifierd';CD8727C2-6F67-41DA-8C2F-CE505FAB2C7A-33087-000042107C96E923@xKqo֮坧\c SOz(H$HG&C'>F&͘5RٔH1z|u*y}vn撰,[(])r/ҙh_<xx-?7|T>sC(eOF=njgvkC"B)%2I%b47)uaas<8Nhl A~zT#9'$I3/yMo~=v, A7pkomUEɃnf咑70ˤ"$jY7zQ] :|A~/B7n{gϗ:J^; 0Q/.wn{<.4JJy~muۓw$Ezcݭ(mDaqqܯ:P@pR@w}+`dPn:SD :h&aaJ streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2! plus-circled';073F11BF-5069-446D-96FB-EF109F02CCFA-36602-000097AE2DC51F2F@Qx}KSq6l& mJ]C- r7 n"VDuQ*jEP(QPip7y3e7p9w}∬>S[vk=xL483vq16U"Nc>HW:\T!pO*ǒhh^7ZAb^eHM~;/!:ӬaU]>īʟCqTds+OU*bP0ć܀KN;vn'>*blH:Q:L&Cf)u#SêHeȞ-ڞy)JQ2ǽ8𗏵/4酇-w]bǠc{حaU4r- 9p\mS;R*Rj2X#OoY:GLkpΘ bՖGl+Rܯ*dy3htteeG ˇ(57>͹,W0.Cif۲vK`78*vJ2xp8%%(^ streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2 Untitled Layer 24d';C1363BFB-193E-443A-AD0B-8511BC409A6F-29548-000069B198A631CA@y@xkPƓ&%c:q2$Ip"dV"+A7ġ'Mr.BiwyBA_.Nh4p8xL3hvg6#L&i^I"Qֲfu6T6fE`0_tnr-\b*\쏃vRոƇ~^T*u& sEpjc~|~B.]+ {rs]:ΛeYO龠cÖtiSf_/exϦb˙{ذ5[q4w О:!Kf57T<Sy&x{6B vj;͍t'b~fTP8V6v@EvNoc4YDNM)͂m7D^s9[;&xw?zcBʰm˗D<7>٦t6c҅K6ӹV$\8-&|ǡ&J6^F4a)/B_B/XFЩڷ :6~ ?~0ox;tl"fb@ streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2)Untitled Layer 18d';AE2104D9-B13E-4B14-8BAB-AAC3D8FC40DC-35862-0000E8AD7D2189BE@xKSq7w]Fу0Й_PaPQ ]$ʼnEV"Hk}=bZRz*tW./|}{Cn& ^U|>3[BaR\. Ulmk?vwQGfo}hTC=y V`< +!3Zٶ]d2FzWZ?|K(JZdFG$q[*5Ë0̢oחq~,HnZ6C zBfԠdB3HnNH=/n0/xyoamjNp%WEc~ˍJeCW_}!dkH=dO[tnT* h4zͬw9fQ{/ſ?c)>]=%X*nT*UIq + aUKC}37*RO fG&/ $IzC?Yr]< nhma z$qY1t`3fg191(#F@rbݎ=9+0&Mr^ʮz8Za*o&l6V nT*,uн3ߙqRo'%VBuX{je|;3nT*s>{ǍZʹY:lYnT*;|[?UBMfJy뉬l },[nUeR 򀾛 streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2Untitled Layer 21d';E8447E0C-376F-4BE1-88FB-A14AC09960E3-35862-0000E8D1DEA7B30D@xAKp]7{E{"CEEE"hO" (((? \.OA_{H$:~߽.vC4(;득 Mŗkl0T*(ːeR B\ltT dx$!"8%^dC~I F݊v9VdȲ-6Ȑ 7jejڟI2d7[."C=, l[LSuysRֹjȐz Vdz|>G㳅 (c|ꘅn@Ild#0&tWKfEQx);t:΢ΒCxCo8.ru\ǣOm8xWx~ UnW\.3!pz=J%$I?E5%\~R!\ټmXp.ᘬF streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2Untitled Layer 19d';1B3A2DB2-462F-4AD2-8E63-A511531582BB-35862-0000E8B73E50FC4F@xcT g@4K2eP.|3 hPp$Fc0N{~:\Ĺ~ P ޞf>o5AtKK G7mPL~{A  streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2)Untitled Layer 17d';3FFF6F4D-C0FE-4904-98E1-7827D4FEDCF8-35862-0000E8AD3A5FD212@xKSq7w]Fу0Й_PaPQ ]$ʼnEV"Hk}=bZRz*tW./|}{Cn& ^U|>3[BaR\. Ulmk?vwQGfo}hTC=y V`< +!3Zٶ]d2FzWZ?|K(JZdFG$q[*5Ë0̢oחq~,HnZ6C zBfԠdB3HnNHA>o5AtKK G7mPL~{A  streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2Untitled Layer 14d';32208EAF-B655-45DF-9226-55D78F3FB892-35862-0000E87BB790E53B@XxѿKaqV%hh Zggq3ApDH[""_d"dX6x45IXQx>4]qNmZ-h484]qNmZ-h48o ;7dJri1R 1 >^DDF{ owr W`ڭ@hA Nyme poE>)6_~NlOA Uy´3U7=,%EyϖBh@w K겭WG~dߔH8O}-9ތJgkn^^![Dy~]2qoƍ!O;**uaS]m'Us&asw;B="ޞ #N6[q?\.ג̡mwُOذ{?&Ƨ8f gEătm8`ii awwIPc6?;=;]t Mxzc%e,JŪr _l{ptwߨe®R/{Tku,=GёI/y)ܥe2?- streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2AUntitled Layer 10d';67CB2F1B-C59B-4391-BFEC-460CA1DAC141-35862-0000E8437DFE65C3@x A/{ >./&rA=L*aYWƂgaeb* ;4{#ޢs 7{sH<0ÂzoXpޣ= ΄|*bڱ;I $ streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2&0Untitled Layer 9d';E49BA826-F158-444C-AFBF-1CA4D6D6540B-35862-0000E8367BC6E02E@xc|Lұa)!.T>?? oZ$'-̭T`Vw`;c[&t ?s<@-(d6.{l¦vqb0 ˛;lfrP+b%`p[:V0[=8_^?]XWQj-@`hXA1d 콰X'.V0ǻ;?<9a[\4'/?f {zu[ܴ/?>90ܰl5z?`P++X@wbó`FsZ䗟 wX@p3P 1/>=5f @~ w P^m  3Af 5@Ƨ5S streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2  cursord';016B29D2-3E17-4160-82DC-006092961693-35862-0000E82491257109@jxKKQqd.*i^ $ܸk#"B$&RE?@B~ENI80{9'NDQ3&BaqsM.ض}AEi%r!3,˺TUu ]׏hcf f;0>KZ^+%T*uݗJr#r`F2vD[*8p8|c)vXQ SX,އaG7nz%E I}<ORZ$ f0gFp3̃WC)hPGj4C([ streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2Untitled Layer 8d';07FA941C-3EF9-4B08-844F-07C031BE3E26-35862-0000E80BBC6B937E@wxkHQǧ&+Xin%+BLmtVPVtі*/}"PPA !]P5yNA?xÑETTtLZZ,;Ikã8g@Z# I iM{tF]Xd}5ok85ť5љ]]y uWA Xv߂ ri.FH(h`cPu lo}㝒3 Cڙ yjT~A|30뙆Aa\Ęge5B0?|o`|C.Vb#0]rK8 |?C iPm(/ A}xgAtbm`ێ݇|Sh=\04UnrbX ZsZ'BA|Qf:'XE+kvc[ 8!^^چQ΢Jku6!A3 8vrW|dQeR/))BGRRDe:uϿq68nKo-eRC UTL;Z(d#ݥ T&~ streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2RUntitled Layer 7d';2EE02F45-7841-41A0-A750-018CA401B0C2-35862-0000E7FB5A9FB437@xNKhQ}O3i2Z'iHn݈BPۺ(Ժ.(hGW%V\ٹ*"XX"C! ВՠAn1k=px LF&916aMF"mo,&b].av8u1f<+d2v0t;uA7pGi[Q/×>$OLMj*u]@/wmp]WZT*y]갷DO(&C\jVTN-Ry|/tu~2oKz|~TN9C]X#g??}9'rwr~؞K<{[ cH-rN7>/dݯXzN|V5C]1XMpxûi/`Aa5s_NY3d޶"~L0 f_`y-L P;AkP^ streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2#Untitled Layer 6d';FBE60D08-3EA8-45EB-A97E-8900D766368B-35862-0000E7E7482B1C1C@x[(qƿknD)JYS BJ+)\qF9JWH͍h e֖0 >9ZoSO>sܤjyVlCpOUeK?`;҂Y/&"TcAU鱟{pc$Umt Cư,ac Pȏz&O]AB۳\ZƠ&9΀1Q= ]UQ"Yx1 *] ڃPg25$."C9} FLҔ ʻFЭB`!Í7ejHޏ&Ю A`!ÃB1Q1h.b zQ,C:ۭj+<">:cBG\D6g&Ìһ|@38+_}\)8v48 streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2Untitled Layer 5d';44E6515D-E251-4175-9B8F-8294CF5BCF3F-35862-0000E7E14671DFD3@x]HSaǝDb&ЎzQtVv7EDwI}0!&fB]KM]Y3S7)?VN.ΜZ(\t}DÕęgcBA|e_N= niAi7iշV+, "A,m mg~&iFZ"Ũr, ""'F\ί(%%D3|9J{q@['9Ӱ~M'wGAۍ)J7"RMq2jH pپB/yaԑmfY@D6٬N$k#?8-]maD$5Gn-7|:_D$fu ̀tZz6c4d f-Ia-ZBeZg jGj?ojNHY@Dn( t:jJB rT*I=h$B eYp8Ђݎfhzhy^ϡز}Ed`Rp5X&Hn™s߆^θ'W ;' streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2PUntitled Layer 4d';39BD2F4E-7D1A-40E3-B817-17E9E855E914-35862-0000E7D3E6BF9068@x3W2KLJTpoS_/ϯO.<:?H*P95wOsva'g|f :ian5oͭjƁ]p᥷X*}{Ggpr/ @-( J;?<9 ~Zj\x)H-P U.5/ @-( ^LJ{?= P܂G@_^iF~c;ZjAqN??00{E' ;_DI _^_0ps%a=/z_R@`=ק_43RQpk?_r~z%oVLORQ{qs# 9{'T!Ttw%C9Vg߾kvJͤXjycrTC,₼yӵN97_,tkq~fRkuN9='`^j&Y)yw4fȹaLmuy׳>>Ɣcȹ&ܷy*XM|hd_!熳1hUL&jLvdVW#+K~6 Gt{r eέko.{dBݲoWm߱9BaNfmElx` streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2"mkdird';4432BA72-5B16-43E1-8FAE-C9DB651AC51B-35862-0000E7ADCFEA1C98@xcuiPceBb0H-P 0Q)zysWv 5 @-(D Px1H H-P 0U){|i[' 5 @-(Lo[Ԁsg6~x9^ RR Ԃb5NRѹM 5@-(\[? *Om.횇{i' R,8V{2P;(gq߶30mHԸ2&0wjwT9Æ2 streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2  arrow-090d';949F4C82-6AAC-4CDB-A190-63EB00C81A5D-35862-0000E78DF34A65F5@xM(qwɅ˼I2K!<0PR8Ɋ֒ppP_"Y)ٓwԧׄޠ_./Y+k'L*jreOAxArT$+|Opw"+^ve r7_;\'-zNioOC_Ɖ v Nuvg=}הnzm83Ρdm8vYp8!; Tf*M\p4U g8SQI'|ոnV`q*EgUoԊGRLjqBٔx꿈"8=z+/V|ș{2!Ajɔ_L"#4wU streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2dhomed';37C2B011-5587-42AD-B6F5-E2FD07E267E8-35862-0000E6D9B27AA223@"x}_HSq)V>,-%Fi3|p"Z$`A RH,X)F6EjɔƷҍ{v~l*xuOtwGb O.m"m^ ҳt̹y#Y2j>֫\Gz>o\M/ Jho.%ۡ[ 7 swiOG3trmH6"ƌܨo\PGAmfcOq~Yד_ܹoPGAly'B4%R-+?~[wS?WltA)UUzeI| .O 71d7ٛTj{%rj~kqA2<1(!Z;^'/HWzK*@A'ޟ]7Mu|HK<2<1HJuc@vkQ;5SK` gwyR? SL streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2Untitled Layer 3d';50233FD7-2823-4014-A50C-15D5CED50E6C-35862-0000E77FA392AB78@Ȁxc@|\z=k+nop935|YJP C\LgL ȉp)ehT̪YvbEg|}sǺ^ZxU@-g@D%{*#&ºkOye~~Pew` X,E3"r;&ߴcע|kJv 6H Dx$Rs[s&ythx"Pcʲ3N|Gwz@)0TR I5IШP1 X̂,3z_kG{Ā` Ϯ`+gj@!8(Q9+E : Mnx3$Uq.c  Y{q>6(P9|g 1 4(rE+TĹk減ʇH #X̋MI- jG?F| P eE;'&zh p1KO̻-QLj{Ix8]ʬ7$LHՑrffb`j:O3_'џMl lS1ҙi4N/a7TarW*YǮ~a}.Le7P 4i*+~&);%ΜSeeBg Hr2 "/x streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2folderd';1D033B45-E2B1-4EFE-92B1-5DE8681F61F7-35862-0000E6DE7A0CC3B3@;x]Ha Zf dwAQmtPTE7% "!i.u:0l}Xln*L,hQ79g{ٴwŢ^qy:al]`SZj~svl-"CflO[Ej1M/: Kde*Kd{e\Yݻv"> ÜNlNtn|xt>?AȥaO{:ԤV\v㠀1F(ԲS&$ĈDWgT{̱Ѫ+f streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2@lockd';7A84FC86-36E9-493B-B9FB-A28B63C1F9C5-35862-0000E6FDE0068401@x+q7ӌby{7(ma5"5PQ.0YQ[9fWRs؅B"=~_-{m/SO|}En:\տչ:ʟ펋юE$RfG<=[6\w==u,QyR#r&{A.2IUD9cЏ+n\x]\PUDg4], o>ɿC3<{|RUD&!,!]  A( L-~!q ڪ&dk"j+*,# /wփh# M> Vx>2퇪>$lJoDN.WDDil|+s|FӢsOʲJ89]Eabdߏ streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2 fwdd';9F7F1C9B-8752-4969-ACB6-46386249F9BA-35862-0000E72809E9F8C2@[@xc:gYd-g@8B,36Tڞxo&MJ,:>ƒfT\gzzv1?i(bƼ 3߁v|>wAv` zp3f$m(wY+s`0 |63Ih]˂]Ϸw۟ 9+D .y[kķS%Ze /zAKA"7IzAU s" fr, streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2 rbackd';AEE77F80-5E50-4A57-A909-0A342561B8F1-35862-0000E71BC4FCE99A@q@xcb:g$@ ٘-g@% Il=Ɋ (D41YUby^ < c䙞`;7? W]O4f^_wkXOG;<6> @`0#I[R 6,fj0طWejGM jg_Wď.5pU+?^cB|;YZwq IaF7_  bI1^g~B$sy*W3 Le9b" 0  streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E29aUntitled Layer 2d';259ABD1D-DCA0-411F-85F3-2554EE05CA0B-35862-0000E71385F4E1E8@xukHSaϙqmr--vqZ a5*4}0K("T*5MfιV&Q]N߳ ?}.= V (g }~ϻí((gjj,+լM4=tO~Y>!'k_W[%,+* џFH$)Bvp o{h_bd Q.Zd׿hؕel~U[;u1QQIDȚWДMKkYtG&tK;Z9 ."ܶ*'t@ԺAwϰKW; i;۠aADfܰPufqm1 /QR & A ~lY v8 !Akx)V}Pd^vWh~΍@? 0vWpoPH;Nkj"U3]`Rk<ˉN6 [jҽC-bUe;Cowz'$8J‹ĦH3{!ϴ -8p~ iu/6X MYT!rD'mSz=">;ȡ7M41TZ`UF?aI/Q.?'mlC;d;'w_wfF"O4Mb+a%+H::뎣HrJI^$a~L=S streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2Qdropboxd';79085DED-F38C-4141-B3C8-ACCE9C02F7B3-35862-0000E70831DA0DFC@=xuQHQ/&=䈰'e0l#(˴ K(5BdF/!Զb0[m+[6ሆw~Ѷͬ.لs?p /e N}sPx̶Ȧg÷;W]!ܰx?^v.wPlJ`0OޅFw*H^_MV9|BN }?ABFt<-r2f9kGZi)zN2:80|Ua0&k+no$b1zܤOzvΰBj6dN&MOU )t^CDfjr`8*ԧb>F$I-Fl*Y>zݮ́PG{qX^EkU]x<Щ#OZQ!vxP=DRO-y۫ XtXQLyi{>U#,2:U G(X5 [\hH'L546r@[q.fҤ!9 C7ltCs=2d02:?1Ȯ{ streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2) 2asterskd';E6893B39-1C08-487D-BC79-EC6F986BFCA4-35862-0000E6F3C79F84A3@@xc@ґ ΀0N@P `R` >Ϯ?+:$P -4ɐg<;6s[؁>w/L DAjZPD3Jڛ wV)ѱ]9kM }$Ԃ}Yp7=-'Ar 5 @-(MLNȡnJƪu8yŽvoiH+`0q9czkAJVa ;A2+yc1wLkzH H-P m:c5O7κ_*pM#_Abf7r'H-P =c<s?%|&7*خ7OEw@b 9KXH* k8L jť~`ݿ.Rˀۇ`0LνJ8 streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2 #opend';7888F9F4-C832-4179-880A-C90CA687A5BC-35862-0000E6E7B2620386@Dx \xwmtD}p0 3P+<2P|z X¼@ L75*!o/o.%),.{ц7畁_~  ޘ]r_N,b?U$?nqkQxqI1`0\U@w(|e 4vk@w?2-߭m& H}  N,ncw[{ǺjS5 ^M>՝,@/x streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2XUntitled Layerd';D91B76BE-DBDA-4627-9D50-7A221D5C4584-35862-0000E6C9040FDCBD@@x  opr streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+_PARENT_LAYER_ID_;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2MASKSPREVIEW4@@4x X]wi If2{4)2f3fL<BS%$cT*MBBfB߽kz=~y^Z׹a{+jj'kW7\-@-w0mUraIHٺm?] PF^^a TâNT!ܼ'ܥ?mK&3994۲"d/ڱeֶ]oZٞW,žw,L2bhCNHx4;Hn/YAߌHer Oo{YL-/t'|Ler B4l=.U݋}[ A.[T%Wz`ӡkTtʈ -JejwыUu4huʈ -Jw |Zp γ|D lQR5f>e}X6wXO}D lQA}Y/)}z'qJ=r%Uh޻z-uC-'@r٢$5:jZR QT]qb\F me?E ְ ĘTs!3vv e1u|W]/gS:/ӓ/귚>\EOf~MOep"RϬ%)Q}L>>_,+N,IQ{|콈>x/ŒIYA&%E>a@V?N"k(cO(~׬fknߥ-Okn#j8gPc:\QA(Bi|}>(7j<$ro5~|{O_F>C[OCJxrw/%~RT*lSWӌ5x 1C- 7Rmْգ{2S:w΢sDiw8C!? ðJY(:]ĘQ{7$j,ޙRnϾ$ؙǼ/ztaf[ |}]K7Og7ПC{UȦn!Q{mP(w,UBۚ2MUmJA)3An3H1+CB95qpSZ3%j6u@/Y Sđ%U!q3u{a8'W?֜DLӉ?آJ[Ff=::b%!uc:$!lQVEe1wz?GR1bڐ\veNۻJ-WHm1Cf9e{/} tw. PgA.[TriSȌ&^d1cfz}OD; EI^1daFn1N=o0xBbhClQvΥ,fHK9YS]9>'e1˖t~||REQVtq*珙/jaUjN|IӞi,?[/jre.*7Iբ$*3"Gޠ2RI"Ta]5rYZC"3LSc Ncx*3g ]iD4-R{S{,Iשp*719HP>}L&GC5& I؜ZLGGLWJ=Qvp$՛Mg'PQH9j ,Ӫ/z}Z iTkׯd{Tg| ĒS4Y "fY*+J8!u}bŵmNhvM=BHC2LӶmi4TmҬ?v>Y^r[Rvt<"ȟixw> L&;T>͖oFҴEoSwxj+Nk5zL5F&-},%jŬ%jx \ oMk8n"mu'ER"GN結=|Iwl]Kˣ)|s_z} EAa;Xzv!lkbJ F"g[ZPKh@ >: eIczQږ;Bka*W:(qOGBÅ֬;muZSmK{o: H3N#(û5I1fW/qxT3LIFgI&vqpMs]Ihn/㭇6&@y,J$<#EI[\znsAOztHge.~mP@W+8!\) 5]6хC/&JP2#ߙk l6-oC|լn1ܡg=(ogO|q!mr57*)zx/Ǵ y Ig\||a=8E~C]܊5f\Vմ`rfO4amJ rْGhvl\~jp|̹.KV֜ذRI!}va@.[t؇ 9e|qOr%a>} \(ɹr%51ԝ}~A lQbǾ_/1|r`]%iZgOO(lQRfW!m\(i@ %?S\(i`+'?/I -r٢$d?mD}L??r"Yv!lQ62RQ;Gף c՚oآo?<}L;3G% Vz1c[Fu0ݞsi#aL  byr|"uE$s>`V=f$.ަ\ٶsA#L7Nfeca7[afiU;q-Ja1oUR%}}}guuuFmƟ-[ *QB˫dIܶsVVmjʕ{EI6&߹kÍc{{ctxGݺ*خ 7}_slr٢$9]ػeٽ=~{&qh";7.sDZEIvf]Fz.rF Ob^F&D{#G.[ız}E0]?NC.[1޴sNM6… iܹtRruumȩ^xTXT Fwޥ7o҅ӧ((Wi}.PX3[c U#Fq}r%1lx>|7EUiMlǼ_͐Sqˢ:UhBwc'#1Ų ֙P kާu[ˢ:g02Fw2;eO>`9Ws)>//9JyGk{q?MUTq(]t.VC>jР|c[}%r*W2e懄%Kq#RTe՛_D >PGR/>bccN:󵵵Er|Ԡ\rq,Qŋ;b:hg >aÆ׮]^ĹYIJZWhbGsk=Mi]z>yg]u湏l|=l.n:hZܡ'hGcVMl gcc/'lQq#>Soo%LJlU>]E^7ٟ%8G%f3OO3:WMrx2GE9qUbGL2 0>y8c/|8,.&im_CcGﺚkM9cd2՘:L}n<1@*L%Ie Ley2OjUZwڵ|U~MHѓ]_?:@1EIOJw(*4^>}*@19o{Hel&JGߣF#w٠-Ԑ߽w&؍G6vQ!Q^4|]B.[Tzt;"uuRwr*gjUn>6-Jҵ+uZz,:'g7F'JK}C׃Q eʔg+n.s} RzgJM@>sgdeK2u*k>Be&UOŔ}"Gl1*2xPlC[= MNN&ed+HO{C&U`i>d9t;Y8m:YafZs[ |yi7d2됙lSfUVfR?xN fUHV/)޳ˁu6Wq[4u~۱{O֝)ӥ?Y$U|yl*jk)rDlP3r 0i}W{~'5F]?]TB-1L~Rg3ط3xb/W#ʵ&Oޜ;$^ >b.E(e:x<%qƍ[N8o΅oFzz[쏹l*|/y[-f瓟ߣwmTוyZ]V^vg|dX!mױUsJˡ8߇>kŹ3UҔס*PŹHV! o:>+=Vt>5u\puگkP #<o2a]y]=M(2|eB éJ'ks0@#I;Ȅ@ӂ~QT*EE宫bFQTPNSbJ9L(f0-Hk/☢JgSa L)<7A%cCQ^1 :w^벲c99|]&X׆ lQx{N}#S%%8^{$û7Xq ޡ>htoht[M_xt;/]^OEIm]xp%O\.ә[oEQU_sRPWC0X[0%Ȍ}E8N~ܧm82mfLY?MzLwf+s C[jL>_oݺuק diӆʈ 9e3ׯʕ+YYYtaq׶Iڊڐ\xx;5jJbbbׯ_ \|vs7n:hȅ^>GL2ڶmK`a"6+?ߵ{޽{GϹi)4oXʈ xmg__8:))O ]WPF mA.<2c 77+W 2@1[nCsxbL9.cᾧ1K5@yc13: U߀ O S}/̨ YA sI*[Vk*z6 gd>?Z\xK3M*g ٬j@×|E1د`_WژadArad*pW9ȅI F&*\xT@ray&?7ep%tQ%%V7Xm%\A.۷9?.6&wl6|t|P^)͍|z&Jbl}@v#[6N9s9sk9VkI[K/^o8E|?ۚJ*i6\j5l# , @W~hSW5􈀷VZ :w9sN>M'OǏ?%8pKw]va;`YO%xk׮=.''|Jiқ/4uNfs).gŽ|X~pA,෸A5?dgg ^ee% 2_xQ^ !իJSO?0F`~:)>|(e/ۊ],wnry|{YܦR:u4|p+8rJ7w‰kܮR2yBM6|._̟6mϸ{sUxr] 4x[h޼oZ!Hj7x·Q%~M6/?LL;fr׿ini0N PF mt:Tfyv_DǛcGO7G횈6pj阖u1_ߟ@o.g PBF}5r"W{_וpjw{~ e8U]前<:&:\{Ց^)];涉U|_#|9և&(Sa_5^ݜl&0YӂKBFԿ}߿/Ễ.>>^\on[*5P:wUz1"ӿV!GnoVr/" tx*TҲ?%68э̏u /ʈɨ9& 0(_qނ1;Yx(#Ux*vR{`zW}Ȓ1Q209+r˖<(WA}X'xwN r(#6pjni0S5 UJ.ձ(\Ie9 #]X| ϿT|(*u: 187(YF#cS9kY~6"vNS)_zK9x7/?(;` nyG||'O%~ȓd \aD.!mk@?y@n}vqW"yץ ,ؽuݕ+~Gw]{/L>t%&Eد3>7Co>?sk!ޥׄӕ&1“Ǽ+8d~;:+2JuSkIT)W1[ĝT|xW%|(jV8Tq;^ߕ~&ހ1cC&S:g4%gZplugins/file-manager-advanced/application/library/img/src/toolbar.xcf000064400000150273147176754550022032 0ustar00gimp xcf v003BBgimp-image-grid(style solid) (fgcolor (color-rgba 0.000000 0.000000 0.000000 1.000000)) (bgcolor (color-rgba 1.000000 1.000000 1.000000 1.000000)) (xspacing 10.000000) (yspacing 10.000000) (spacing-unit inches) (xoffset 0.000000) (yoffset 0.000000) (offset-unit inches)   T!$( text.png     wh|4 7= DD BEEEEEE= =EEFGF?77?FGFEFGF4444FGFEFG>4444>GF ,;8888D< " 00= =00$ " #$$# " ##  x;: :;z@@|@{MMM{@~BCCCCBEE|@@|EE}y<x|*8^#M[kE4:?,WG9lo <:_6B* jopH1c03joxo;o jp{F;jkpookrlsl}uljjl[|^stMULİĬѪ{xnyrsx~G㕰pdouysthabkUZ~Zn\bPCrZuv{`N␆skBBAHN⌐yxд®Ǽᵲ辴ҫٴۢĦ塻ſžط"~ԲmS6=C\m~?Z\~뀁`3c~x.!'s\%'7}@x~ ~ resize-rotate     Q  92GG;;FF88;DDzA>@2CCCC20@@0;;)66)vw wvwwwwvvvۿvvuڽuuټtsrtt׺qqossۿȼoossmssr¶kkqqiikppnmnTppppTSnnSkkOiiOUqqU)rrt tv vx xz || >~ B- GJ  ,, toolbar.png     ))ЋЗУЯ*4k?KXenz]d H/44/-77-$66#1Ǒծ"/Ō-!((!+HH+ުۚnss^CFFC^ssnïƿʻ¼dz¼  ltvvzW> ԼUýǴ3zvjmȹ¹ƶɷKFRZR㿃˓ˤ}sv]դ]ww񉵽󐮱Y  ɀ  Ёm> ԭf˟ϱ Ƚ_Fܡ؞ԯ͛לѪĪǗ󐔫̷ø󈍫³–ǖļ}ǁāvsrqrsqrsvbdgb]kkQswھlں{WZZڶtZZڱEEccwTwr^rke|k_mttm_    󢻳>  xFGFF'FF'<@@B@~@B@@<@U@v?S}@?qy}RnR|yq?18TayysyaT8192cppc29)0Tajjoj_O0)1nigB^oBghg1'd\;'\i';\d'!`e! `[ <<>R>>>jj?oAtCE EF Fʇffhhjjlloorruuyỳ̙9  ^>   `C M . f ] 38 87Hff̳MMf>>HH>>ٷf̳MMffH߼ݼݼڹ߼ԽԽռռռռ ϼ˼rwutϾ; &vto{{]pNLLSh{NMObpV\x^UU]QFkhZZhh$gnn]]nn_ettaattc5euue56Y3<lB# * ~~ w~~ wttloɰooqaiǧidĥ梖dPXXNJtJJK=DD /:: '(( ! Պʐɚon݋ʐooɒ˕ۛ uu|ë||¾|zz~~{񒐐{xݓxvvssllRssRdssdXddX1QOPPOQ1&q󜭸󢿰󵪰͵󢖏ϓԔų& H~,* ѰҪڣ۟ ݙ  ucZ__tdXubY__u^_u@f^;?fdu ѿݭҭþն&7RQ::li*KkE?>G#hu@1d f^`&S:Ja2BKNbׂaTP #>P>^9-FBc #f?EVPUEHMb+X L  pp__Op__        2 2ddHڳHHHeehhJJKKkåk% nG,_9)qV2zm3m6' 03-193*%\ \ \ \\\ \ \\ \ \ \' ~ ~~w ttwqoooliiad㢖dXzzXPKJJtJND{D= ::/ (' !+wvw looliooighhg^dd^P^^PUTTvTTULrL DlD Ir=B{gB;exA33||xx@='$0bv~u_3! 0220/ŭ/0˵0#֔#*Ԏ*!҅! т &&!|!w s pſqw T'  Ŀ ¼꼷淴ٰ֪ڣ۟ ۙ  + 켷칷贱䯯֪ȴƣǷŜ ȼǕ ʑ ͇ Ђ ~~ ayya'ɺڼƳϴΗݦť٣кִנUݗ֞ϵо}߄ߧހޣ}ܡ}y۞yvڟvmqqrrqowq gor'    +   'ޭʀϭꞡ靛њ '\ \ \ \\ \ \\\ \ \ \+\\ \\\\\\\\\\     (33- M̦l\"x㿅_CmNmJ%Tlx2\ ?@33@? \2xlT%̔JmNmCִ_Ϧx"\lMUqqUrrttvvyy{{~~-     6||G֩ *l0220//**##((!!)) ѽ &̻&gʰ!qɮvtm~~ǫ ozŤkjewwß`tĘPMF w~~j|||xxk~׹zyy{{{{xx{{|⟍u}㉵ww案rtv}熤o{瞃mjk|쁘fxzz`UY\g\U&Hdtmmllooq뱝qi׸ihhiiggb}b^^^^|žy@Fw~~j{{kww|zǻ}~j{{k|w|}ڹzz{||w}}z{|gzz|wy}{{gzzeт}߄ހ܀罽}ڽ~ᴴعy߰ڳtorrq߱ʸ綹˼ᬭߥU)Hdtߣ|žy@Fߴߴͫޤo`}XX\zzUwMKRttR}s螙CA\hfXXU~}_KM|}ZuPOU)Hdt|žy@F޶UqqUrrttvvxxzz||~~-   7ܦ|Mgg$ii%ll&orrvvzz̙ ̙$f$MffoxpP[[\\^^__aabbddffhhjjllei km ,oo,Mgg$jj&mm'qg$vj&{ m' v { wwMggMO\\OOLLORq1qRRzRN1 yy u^Fu^Fxx#UU󻾾Ʋ¼DZբѲVĨ}ŧzofUf,.d||d{s xm rk p_ ihgfZ^V~SN|LM\MMJ=A+i.L&a~ - wP Fw~~j{{kw~y|{ϼzw~y{ϼ{y|zݹ~yz{}|}~z|gz{}z|g}{g||gwwMggMO\\OOLLORq1qR!RzR!}LJӵݡكهܰݡ|~~|Շԅ{ՇxssxӇ{kn[[nҦkljJMjl++}~~ll~~}{å{{{v~t݋qo}lgc^[~TU\c==)){s xm rk p_ ihgfZ^V~SN|LM\MMJ=A+i.L&a~ - wP Fߴ󰵶ͩͬwwMggMO\\OOLLORq1qRLRzRLͮɢ޷Ȣɹ󳵳ɹʠ3{|3++!&&&&!&ww&g[dmnh`i=p||w} sg]}~a^^}ucc|uggytiit~tmmjffBbcvsqppon{s xm rk p_ ihgfZ^V~SN|LM\MMJ=A+i.L&a~ - wP F޶¥¥M//Mz//zzzz//zz/zz//zz//zz//zz//zzTzz//zz/ P˭P yy VνVνWWYYZZAr-%")qƚARggR̙% j& | n q s v {d ,,M* h{* i|+ k}+ m,o-q.s.u/xxxZz/~_o-1c/Sq ('_S Mgg$jj&Mgn'jMgxj ~n s x ~ ""+"w~~j|||xxk~׹zyy{{{{x{ݙ|x}`w̎}}{{||czzzzcEΰzz΅hllmh{s~{{``{}}l˕lϻϊg蝝󰔤ߔ䔴󰉜ىމ{{{nnJNN|DCP\\NNCF MD S߱wh找cFPx쿤Eΰzz΅hllmh{s~{{aa{}}l˕lϻϊg蝝󰔤ߔ䔴󰉜ډ߉{{{nn뿸嶮DD ®-$핵=؋يً狵_Eΰzz΅hmmh{x{{ii{}}l˛ƛlϻϊg靝󰔤└甴󰉜މ㉰{{{nnzmjxxvievGrroccFoZmF j Y  d  Mgg$ii%ll&orrvvzz@ F. ,,2NȶNOشOqqHH РAAZZ9ج9&8SqqS8'  ?f<> 蝝󰔤ߔ䔴󰉜ىމ{{{nnBa_{{yNHSLLSr{ubNMOOcpZVSSVVb^]]ZZ]]dxhh``hhxnnffnnottathnxxn" XXͬۼż۵ͯ󰾺Ű۪ͬͯԸŸԤͬŖ͛||uXP7 qTͬ ͯ ͬ p XXͬۼż۵ͯ󰾺Ű۪ͬͯԸŸԤͬŖ͛||uX qTNN|D P\\ NNC MD S蝝󰔤ߔ䔴󰉜ډ߉{{{nn D#ttŢžǹ€}ò}|먒|z䒕zv陛vrroollii[[=PSSP= XXg||gy»yͬrŎrͯmmͬggͯ^Ŋ^ͬN}N͛F))6XP7 qTͬ ͯ ͬ p XXg||gy»yͬrŎrͯmmͬggͯ^Ŋ^ͬN}N͛F))6X qT뿪嶤 ®靝󰔤└甴󰉜މ㉰{{{nn F#ѹ̫## XX&&ͬ]]ͯc\NQ`hͬͯ~UU~ͬcTEHYd͛5XP7 qTͬ ͯ ͬ p XX&&ͬ]]ͯc\NQ`hͬͯ~UU~ͬcTEHYd͛5X1*& qTggxxvF vrroA oZm jf<>   jj kk pp33   $f fM$ffffM333ffM$gx%hjloqtwz~g 3 !)0K$$f fM$ffffM333ffM$gx%hjloq !)0$ ׉ ̐y yqqmmccO O > ׉  y yqqm mccO O 0a_󟇇LJykLSr{ubRNOOcpZVSUVVb^]]U]dxhh``hhxnnffnnottathnxxnL 2 ى ̐y yqqmmccO O > ى  y yqqm mccO O ttŢžǹŀ}òղ}|ۨ侐|zӓzv홛vrroollii[[=PSSP=< 2 ܊߉ jy yqjqmmccO O > ܊߉ j y yqqm mccO O ѹ̫##; 2 jj kk pp33   *    2vttvvttvvnnvvooilliooeeeeeeeeaZ____ZaUSSSSUKLLKKLLK"FDDFFDDF7====74(7X77~X7(411UU1111UzU11+ujK+(--(+Kjl+"yo"##"il"";׳kiijlc?uoޱ@pU )bjjggjjbckkccoocbhhb\~z\]||whggju]\{jq\\vlq\W|smmllmmsoWPmzwwsswweP1Uy||vv||uU1LWzttyWL(HcyycH(.9;;9.*ixttxid佂dizzikkbb^^SSIINdV&RYBC[i [v7 \M V^  ּ켴дд̮訥"ۑٌ۳۱ױЯ҂}}}}}zyyzzyyz";׳kiijlc?uoޱ@pU )̺ظӳ񱶨ͼ󶸤ſĞǝmȭm`txxt`)ixttxidƂdi؀ikkbb^^SSIINhV&RYDC[i [v7 \M V_  "¾߽߽޹";׳kiijlc?uoޱ@pU )'IHMMHI'FPuuPFFSSF'L{{H'@nuuk@CyoohUSSYeC>nS]>>fUZ>@mZUUUUZU@2R`]]ZZ]]I29_`^[[^^Y95:ZbaZZaaY:5 -GZ``ZG- *ixttxidɂdiikkbb^^SSIINhV&RYDC[i [x< \P Vd  $HJ -hEZ:Y)lĦlMMMMllllMMMM+CīC-  @ZeZ@!bǵb!dͤdCȑC``ooeeII${Ѹtsũ}**|*VyyV8%K3 tD Dk/,($ % ~~xIJxppm򨜎me~~eZ품ooZWWAA"!!!!"LSTTS PP LL EE ?{u? 8fd8/11[Y11/*+kVMLQZ+*!$]HHU$!RQ  =Q PSSP KOOKEI~~IECAulvAC:<>8ľ82屆}ywwf2''   &Q&ҼܠڏĻו􃒮zzzzssrrsskkkjkdddcdd^b]]xb^WW`XQƻQyWRNMMNMN'űƱϴԶíɰۻγ̷Ƿ̲s r o&l nIկQꙬ\e`kNҒlEዂiAxx3v>fEjM4q zT- 1*`8& UQjeQMȿ̄MIȿ̖IDȭD>>8ľ82屆}yww2''   ++ }} LL kkȶڵܶɯ򨨿ﭩĢ'r v  ̘5 G aj% 5( N_t1f*j: X y r o&LF #t7CTi3j ;.r%%/v$xV!fx yv7f:E)k \w6 Q'} UQjhQMƿۋMIƿ۠IDȾ׼D>>8ý82屆{xx{f2'Ǥ'     bb l̦lMMMMlZZlZZ\ܔJόl2M3xx@kmm_"\?TNB %'' ӨE >pCZ/xLi>Q~X_SzS   Q @  Z\&0D$"+<Bd gy+$80$4gg4xx))@@WWl ls sv v{{VV̙7gɨt?&03̏33* Һȼۯ֮A.ajj Agsrf? ge_PP_eb dYWWWWYZ 11>>4  6@@6 5b^[TRRN`YtjBB^U26\Uzvrtuy--Ypzrpnnq~^&Tvonoo晝 Ksp~Bq}Btmr=dyqٙlntN6/wspoot+ }|}!RL#12101221//0/ /+ +/  /     N}}NKzzKIvvIGrrGDnnD~AjjA~}|>ff>ر|z;cc;ۮzw8dd8׫wu1::1ԧur,,ѤrnΞζndϐd@F\\F/00//8hf8/->rr=-,5{yyyy{~4,*axpppuW*'yiiFJY'%{fܹJT%#w_ԯKKPU# eYOTTTTOXP Gc``YY``=!ahg__gg[ $booZZoo`# =appa= &½ֹȝ¾ȊĖߩΈ͹z˷xͶڛwۼٸqq󑊾̼ٷlqǗnp~zspqql"12101221//0/ /+ +/  /      8}}86zz63vv32rr2/nn/,jj,*ff*m\(cc(j$dd$g -- c\\`||ZL%ؽ꿵겸㷲ֱɯ᭰贽ɵ£˼ļş؜a㸉a SnrrnS &@;91-++(=6YP;4wwx94mjhhkv4WmhecbcoH-idaa㋋&rfcips[gdyW[Ld_uԊVX\Ar`\YYX[imfdfB=#12101221//0/ /+ +/  /    aցau     Q ,,ddHڳHHHeehhJJKK+CêC-  #}}#SSSS""~ ~ ~ ~""SSSS#}}#" . . }z t|ojdԬ_򪬬ўڿظԈҫʓⶇ~ﺻƥ᜵ՙezɽmeu۠ɥ¡mnrnhc^[Vri^X]Y r\tsrqfdb`^tqdg\sndb~Zruka}sYWpomi_usYUljh[YD_]PNLc_sqYOdgJHGa_stWMaycLE_zsWUI^dpD\[TFqsBZXVTRFECBAtsrb`tqonfbyw\ssldbxzZpkayYWmi_^Wmljhg][YWU@ca_][QPNLJadYO~yJa_w{WMwh^G_wnWUKNbu[D\omVRIHF`ZBXVECB=Q= i1 v-j"j4%myI^KyMcrxq`Vӏ|Ǵuʿzosi~xrmhd|qgc_{upkfb^򚓍ztojeab[ Z ĻףڿظԈҫʓⶇƥ͚ՙeɽmeɥ¡mniy]Y r\ɪ󳱽ŨǼǶĹD󛧨󙥳¾󳱻ǺѼǿйê@󞜙󛶳󙳩󖗤 ſ ѴʫͪϘq¤Θӏ|Ǵuʿzosi~xrmhd|qgc_{upkfb^򚓍ztojeab[ Z ~zvսૣڿظԈҫʓⶇƥՙeɽmeɥ¡mnǟi]Y r\hgfe\[YXVhe[_Tg~cZYv~Rfk{`YumRPedcy_WnlRNa`^SRDWUJHGZWljRJ_bEDCXWlnPH]u_GAVslPNEZ^l@T}TNBmn?SQONLBA@?>hgfYXhedc\YqoTgibZYpsRe~`Y}rRPc_WWPba`^]USRPN@ZYWUTKJHGEX\RJytEXWqtPHscZBVqhPNFJ_qW@TigOLECB\V?QOA@?  $d_ ;pU E|KKEjA;հ@B;,#ӏ|Ǵuʿzosi~xrmhd|qgc_{upkfb^򚓍ztojeab[ Z~     ,  DA ..RWU[#2.0**R]WWZ]x.32/+HRRYYY\`(9940[ !ͤ㯚ٷ~~~u̢wvvmnnpnmfxgfd_ۯ__H2YW-! yvrkpd] %? ; 66 /000/()rzwc:)&"hhaTICAJ5"fgV@;71+$)l, 2  Y? ; 666/000/&)=k~~{qh)("I|uhVIC@@CHg"0vhL==;85* ;YW1" !   32tk67bX( AQ'/ 13 "     ; POOOONNMMLLKKJǾ˭JJHúêHGGFF&$$GD^^#C%##E@;;%)66)$ ׊퀁ij|wߴధwonֲzmed̽ddfnyd\[[]][l[?TT?T1;;Y  ᒑ׊|ǽˁwwmünod|ogddde[n[]][[\T?T?;;022tk67bX( AQ'/ 13 "     ; wwwvvvvuuuuttsssssrܳrq۱q,**S٭p^^)ةp+))RףnkڟkCOiiO$ øxx_ssY  xxss]2!H̓+~fϽJf3ݴ33cܶguՆA3s2^̼B  8L  UqqUrrttvvxxzz||~~-   I ,,"H H H H˶5Hy yH5HH(GͶHz T$).233  HH H H5H yHy5HH͍G(HzH330,'W   TPQPQQPQPKvaLLavKGG?SS?899Ԧ,,ԡ9982̿--ǿ2+Ļ00Ļ+%$$ϲ33ϓ$$%2ƽٽ2Ʊ”ʔ±B''B    avyJJrv-.)DBBlr#j]]s9k1/8/bd((d]MBBA@@?>>=<<;::CB>=9B׺=<׺8Aָ<<ָ7@Ե<;Ե7@ӳ;:ӳ6?::5>>=<<;::99877655>=<<;::998776554=983<׺87׺3<ָ77ָ2;Ե76Ե1:ӳ65ӳ1:550C98776554332110:¿¿ ¿¿TPQPQQPQPKvaLLavKGG?SS?899Ԧ,,ԡ9982̿--ǿ2+Ļ00Ļ+%$$ϲ33ϓ$$%2ƽٽ2Ʊ”ʔ±B''B    POOOONNMMLLKKJǾ˭JJHúêHGGF澘F叢Dy؃Cljdyww@;mm;%)6GA66)읜욞윜욞뜜뚞ꜛꙝꛛꙝ雛陝욚옜욚옜뚙뗛ꙙꗛꙙꗛ陙閟 TPQPQQPQPKvaLLavKGG?SS?899ӥ,,Ӡ9982˾..ƾ2+Ļ22Ļ+%$$Լ66Ԕ$$%33к̛ԛ̺E))E    wwwvvvvuuuuttsssssrܳrq۱q٭pةpףnkڰڟkCOiiiO ! ¾¾ ¾¾9gg9:iiii:;zkkz;mm~~?ssוss?vvyyE||}}||E  IIJ""J+33__33-  UqqUrrttvvxxzz||~~-   I ,Ǧ,    MA@?=<;C¿A8@׺7?ָ5=Ե4<ӳ3;1C875431;MA@?=<;CA8¿@׺7?ָ5=Ե4<ӳ3;1C875431;壞¾¾|>plugins/file-manager-advanced/application/library/img/src/trashmesh.xcf000064400000001650147176754550022360 0ustar00gimp xcf fileBBG gimp-commentCreated with GIMPgimp-image-grid(style solid) (fgcolor (color-rgba 0.000000 0.000000 0.000000 1.000000)) (bgcolor (color-rgba 1.000000 1.000000 1.000000 1.000000)) (xspacing 10.000000) (yspacing 10.000000) (spacing-unit inches) (xoffset 0.000000) (yoffset 0.000000) (offset-unit inches) 背景f     i}0001 )H8%8$1 レイヤー      |0000plugins/file-manager-advanced/application/library/img/arrows-active.png000064400000000230147176754550022356 0ustar00PNG  IHDR"HL_IDATx0A+E.ЛOP6 P«]  sɣC]3] 9S@M֮qMrO;l9yIENDB`plugins/file-manager-advanced/application/library/img/arrows-normal.png000064400000000251147176754550022376 0ustar00PNG  IHDR"HLpIDATx!"t|c N!elW/F@1"-#V~hk=4Z""Dɲ׌lo6DmSDA LIENDB`plugins/file-manager-advanced/application/library/img/crop.gif000064400000000503147176754550020517 0ustar00GIF89a! NETSCAPE2.0! , kTLY,! , j^[С쥵! ,L`bдXi}! ,`zbhX{! ,  kTLY,! ,Dj^[С쥵! ,abдXi}! ,azbhX{;plugins/file-manager-advanced/application/library/img/dialogs.png000064400000013272147176754550021224 0ustar00PNG  IHDR AkPLTEGpL  .28!3?\JAUZXX9*6BWNUQLcdO]`˃֚nkˉ2FK_; {}ACE9;>FHKaځt+-/`JUHЛ$&'wt0}ţDYAhRo\/U5X\`<ʺm3]246TVY4K1oJMP(Kt~WZ]proB&5Cer*ez|9e#pģꐑH]QQsJl*~kvjlmmb€BV2U⍊90SUmysht_ڜ7<Dё2`5x]YFIe*Η|{of5фlݲcj2AMstRNSB:-T q1`aCD藙N礤͸rG~ۮDZԪ' 5IDATh޴O`6avR5*ijU}VݪLp#c!Z vSQ$PclHIdU\ RH*@HQ6+usgx\eϝ39gtZ[`1B͠ œDZǫLܶa(z9fVƷ{$J iA۰C \q1"yCit͉FX?0~t >t;*l &`J t;:MA@35ayfFO (DT8bܠDG1ZhWz8ܔg )`"ࠗLSxSMDAni9Z^Q憼tzEvDms! ߗͤ  ],x.x` ^^܆]ҟQAT¹JnC>v 䎱m1D_i~Me} ¢Be&#݆t'FU< 8Ð+"&6,3URV)3XeeFެfD[p=jIF>XX |$i-X"I}J$@v33@$`+6C ɜ *~ d2|E>"`h+bzfC2 #HnqlxGu ALfD|.>+،9籗 4#|,S"~?v +ԇ}OĞm=!Cҽ)oiIA|qۢVoŶBcKM(H,/ zKt_V_( *9.FgPj"afޗey'`R~wH/!6|JCy>;Qv>I>c7F`R1 `/x*kWk 4wLևdV̟$+5IWm!=5C?>=.F}8z2՞jNՎSSOx~W\[+8PEE*rQEPS,B@L@ǓHmJCE з$xR);^gɵ Fb'Qw%/R Ǡ;ΰ"[Ev"xJBA$gt# u -57v-5[nи,.<-8~}u_^^F#tݛzG[AAK^$ >O*}/@=4.(ŁQiQ (GO?3,}"8RM >ϮC[?kkGǪ>b|K@aP8QHTgiĩc %^ 3 cc Lš0[ha e@ܘl0iZa ]BqxLڂJg GE?,* F׀5 a KS۫W>, У_5 vg@Q~! m2ګr}6rY>5>X+Y>UևjQPn@QMp@+9vD]ŀ>,zy(3f>0W0a(.SQaP%?0ɏ鏅P6 ѦL{Y^NvҞLl1)HE\sfkrάBsM0JDnCyMô_P^ aGyMAY<~RzJ!4M+ ,d"zMD` -&_!)St ?#=eVPkR,!P _=MC*%R t:#.7a?{:*{ &VW:?q8:p`窓 oqݾZz{o0111⚸VkpZK Twވޕ \ℽK%*[n<€{o6T(DTr=Ҽv]&g gA_| (^nF.ӏ݃A/2!^ppLp 2n=y󦢇o! 么Ebs+߂B'9 .|xQK %e BwW,߼`,a*|s_wwvv'+y0h, R.`AB /L\ͻL> `75`$x"3?J`3K$p&q?pE4Dr4_KOysYۭYJ¯fˑGd|~xcI8~nW]7wY>I0pfpỤWKKiR.,uE|ՁW/]U'{%\R. іK$ R _̀Nl+{)VqIWFQjo?z՟퇏PCƽ/;Z~r^_ k9GR5h8J#{I2W_NYi:W#W@2{O?b2~.3>2=j0TӴe~affi4Z a`pD#s,?E󇁐0HpOU3ţG&<EIӧC|_CR@%B ~WA;0J|wt$8SO`x |a#^/j!8H0* a_Ծ,;"韧LfkOY!, PNABdDs "UhMADiMA'Jf۷ $ &uZYI, ѤvEczz3+gO?9FszH^Fa_,}]aߜ[֯1.}}bhM?Cٗ͟t]\(}\:î-斵oKsssvBn&bc' zQsE<0DdH;#R9,HR3*;cސTh[5 U@Mjt棂3/%*VXZ\:LƆ&_!yw6mM4C 64-m, ژ;D(.ϿyU*z LWQ6jRb_>XUlUܕW #ZHؔ 9d4] u3VAHM*kAPm4x⊊2yAh4gFvEEpx6W)G EnZ$_5(1C]Z#VڄE$Z䡬\13ЇPV5 {C`/J1 F 'E"hGdwlݦ1+[Y+&ZG$WưWNkccvk-"w!ee;אo-ށsc4ZOMXRk)ͯkEVta3 Wlb[ĝ9_ @gQt%JeSqlo|L#~xO2<GƧEgo0N fx\nah\l=>w>0ꏈ$J~x*6ӹ,[c>jmlqIJtxX:][tHYr#K)MKg+_kF Ѳ+lӧlbtG vZf!"JGX,dE ~uYqpSFqtp3qeBuh骡`h/QfŲ>1kkW90wwZ-u`Qiwբ_fs(JCfs[:0Vّ嶓UB h!~+oV۲tqn s.DReeH^y# J\!WB[co3eE\&z_7 m]2BRX5DT1ьGdvpw.1pN6#5@ Y\b9Y(4wĪ0z@%0id[OޞᏁ}76'+@;;S&J[GGG3EK AYPr>==_ {5@GGMV@@@&#]cab_Dȏo8Qwv===~GW !GX"+ZYROO0\;Bbxyz1Nl,*+J'14*o۱ȼLF@IIDATHTͱ 1 У1m<@nJ:bWv&iI@ꛂ1X˥w~' DϩxHH\:<(N@ l\㆐˧okFW\Ar}uX dw%~ 11;7!hCTPv8UsQjn߯J23("P" &"P&H$n|BT!9[1}A pC +8ftUMCj˔-qLUTі _LRdBҽZA߀u 8LÒf}zo:ĉB\k=^ lj;w M~aÃ)/d0 D[rPr $ U$7H TiMIG$8Dr!N/"z/vl9E~ڵ-<]osԉeC;72][em*jd䣓mQ8r8vAx/DEc!1x-KH6Qg+} *|\"M /\92-&8nT\Nejjj롶}]&lȤP%S%,3ff-~у2*~Ww6Z-)**zwBKV+?J$G̔@\)O|\+NO=W[||~a΃>%y>~᝼ >**_aFt*筇 3<t0/%QAz P`KhjkQK LL0mmD{d$D}jn'! ĄNJĄ͢¤;L EHgFK"(, nEn+Ww }Kj`N;4 "nFL7(Ze5UT$!̶؎ &* Ek(QryMMhʑIIuoCi4Q+ ƅ\&U"J\'=>B,Q?✆w0R`ku R="F!P<;Ȥ A`5}d1`҅ta6Ilhh(~lYZ =qt TSC/fأgwG@c*RrTڪ 0a?Vb&lA[iDJ??4W XmÃ6~2=dS{5wGncL,zѸ? c;k{.ծFf{k}Fj0fev:ƴcP Ϟ& p09r:t| SEL*sHt|XMRFSI:<Pr"uX1/+@ ]^^:LidsHG`ģ砀IENDB`plugins/file-manager-advanced/application/library/img/icons-big.png000064400000015340147176754550021452 0ustar00PNG  IHDR0MRPLTEJȼJD7rI%wSy]LGa^Z'qq,q/m!S|+DDPOGGNː.ɗ~?z~M*(_H!IH.R0 smmmx2Rllliiirrr0a$xaaa{){+JyyyeeehSSS>CCyG풹JIv֙ջkӅ!W".}2 Gĵʮ^~3,ȯFK x zf%ֽQ܂̔I !UdKO鋸CC|+A.qh.l-qooo"StiiiݿS$@:'vvvaaa8 [[[_[|||VVVuoA|TGvĈհkࠓ}x{ɰʝsi!kkmH{ۅUqtۭB˗[!뻙"=A) ʳm]]SS ݖ⯏܎وe;豱R̙g]<,"00V}LLіZZ+^p|\`[^ᚚҟwE.mƄs&5$i@tRNSti xtOswo}{qkϧjIDATxAk` 6փH:^[RhSJPS%C(mk(Qqd/C^&'y8o>Ϟ%cw~QW+,B>- {t0P B @W D (/n︃el-i޿ߣ~ &L/=gS9|7OālKe.(`M2Sfg*g0&L*x@d0)$?O pgO Mir>3Er J[iD@k8hhd0’lVa2zлQ &~i 3rQtK@Oޝ '>?F h _3 0WxlkgPRi y P,0J@[нPK@7]~f/Wx3 @ p&E>p غ4n2l%(hrظG,:A5V9l|p`.-2Byȕ\^A0Ֆ8*8a+ME8FkѲ5"5j]bC7ZWtr+;uD-a"٦A݇ Bp T P*XܴҪ zv;&838Gd$|K&9xOUu!tjgbtM ~q~ύÎ_ 5ftG~kG88Jz9hⷌI@-F)Ot5LG~'ݖVF?# wdKb`ºv5Pt BPL l-Y*ee+t'xcg"=,=-i)ߑZ%!uS}2BP*` AqC* x>8 P^m婢 G `K76^=ݓxю`> `>rKQ9|TOE@, "4A]J#O-i9“o}sw_@]:؁P JBAL A|eY8/CA =H, "(ZDZEzS'D9Dp.yӳ Y>s~&ep69)R**Y})$DPBWp@G/5N *hDŽ)%=P!1 E;| }Rl'c?7;X.Pү'ND(E~%}ILY &.H@I,3 ,x`). rJlԎj\cn\x. G:ݢ) @_,&|?R|P  l @ y 3؂OKO5GDpuhŃx㲦 Lt /oM x}iZÓ`~(l+$\yX+C@-CB2Z-8!````a,I_g5e8xgQ Wk9Wb/m* OL) x+M }lRd2 Xq G * {H|)*B"TΧbԨ v6s6$r B~PU>0AU{~!CTI͵ʽd dIH11{@2Pؽߌ0qzq A@   0mpy{8p8n` }'.Z]5;r  m6Bx? = J@H^@Ʒcr!= |v#ʛ}sƨ P^3<-5kvɢPo]BL'h.o=/-vPПH? x\ ˔O-e>?ޔeB;U쥔-QKAB/@D"[pS@jCmkKX,?=fc %10 $x`Rƒ<(gcj"N0"x} .p 4P01*\[rs "Aŀ1`f5wf-{C,Č;*-#8z <RQ4)J6cd$&VH NfԇCcb亙ibXNnع2)7 vTі=951Ef̓g _F MA;pPmgg^z o aYKZCo? NН4A [|EkϹP1ן =`dFad zLF`d&@02 #.|sMaǕpD"* /st#5!(5NTH 7@d0{Bt&C{rwiwhwmG6s h;د;$A(PP @!>{X:aN(9]l"\ϗ9s{%O"IB02'p hk˷% v$}*`f6egd֡"SNXȆ ZI6i72e%p S$=st^,By;-gA>%h2>e>p3;x$ǕP{@(ߣ<AlԀJ2=0i3o^9mJyJyO g*-xPXoA3Cxf( 8ek̀r_L~1y(|@4PU^{Pt3d y ar&atL~q)ͭ.`_n8?s,\A1$@A( PP @!4[$@>Ԙ|ш7r Z$ 榵-V*kI41S S7XC1oroiHm"0 Htmt t]7bAM~t3(ƅ a02T3T޿& LI6E?߭F4fhQ"@_f0TQ1aMh8.ud|`}ɀ,XBA( + pC!$@Ӡ2dnԪk[QUvk6$ZoW /mMmuc8?鬒ze=ƪ:g8`ljA5OG`k0 PYvM (pHCgtgpZkf,q|koQ<>E0^Q2YaJ;Mx(̱3*, Hg(/QXؓˏy LwY,|I718g zE]o KMݫ& E|}TuH):C Ln8Hn!nM \(&y@S߽ishS$݂ET"H)!"zR @Q SHHx[p@"DjZG6'`j״]/."{OS+x$,Q:tmcF2 GegZ>u* Dׅ6| =PJ:@ 6Pm%8cs-ܳ++sW5Ś;1+r; a( //eS4̐%gt4 S>pPl{=􊋇)8 0[tNAvZ JKǨ `{ t!xɠ+i 4h0 J/ӇqZCE߿E!ui#k_yP/g ;oͼv)A% d I0 U}AFFpDIcl4S&Wl \%p `ށ`|XQ7Azoo>u=}NG}O/J/E3Y2DX hRpa BI(p7\4.Dcplugins/file-manager-advanced/application/library/img/icons-small.png000064400000007132147176754550022021 0ustar00PNG  IHDR+PLTEIHm ]{}HtS4H{%%$$@z*IKSSSBbdOki5!CP;>\tyBYU1GFG<)JvҮkkk&=EE vӏUJN,,YxB~%Te\mmRev}}1GKrʬMd#]4|/!j67T/$Yc7tFp-mL TY${hXfľRԾyG.I Hmmm!Eyiii:GvJ0LwOdm.}1JSSSgښQ;"Jwww.}2 G܊эXX[.``c"ɱ׈򫮮ϲH yS!LLOP ֪eQRVA͒ʖH:MˇdesPR'\3luUۥӀpoѧ(cfʛP|ki9M`UIVAr޷0# 2yΫ8eA??@Еŵڶ+IqܗpnKxl-XRE88:ऑskAExƐ;qv_t#ttRNSkggt$fdh'F4!|yy񌂂nODy<{BHDCA:V &HhϿVף"BM  jb xA /tjbC||^3+"t,z.(ߎl3*A$*.C@7HHFqr9QQ XQ):(@B;m ^."x1P:E"Ngԕ0 .Tl1?<8 rݕ<('/MX *6#ԕQyY`x=-^ʜG:̠I}b$jۃ#c̰/GKsq1z^<dӑD;0% Z޾eDqbb0 (N|bn=cuh. z(ʜBs_+ي1a\7YPuĽJWΖgA98Uq*VPg f(+:2lVJB{Tͪf7ǯ:*0ot́7JFnEw̤>e;4a{TiiEZFYiPgfA͑ެD3_/V'!& ka@0D NX<+!"b^,^ XY Ps̋<%5bK^ lfK7¦taPM,bxb1oByhh(4@4@9MM[N33>==> Yxqj):j8l8%hMtEku#-kMp؉[Ya4A۷- ƛn(Y!w ;`>Bר_LQ/%A"SMAb 7$9Ʋi|_ ;חs2> %c>^|K%rkmxqÙU̝Xb<.3%+06i3-ƬypHW7zLO$-\8ڊn)t>cʇ?61'[_o}@!J pJ $&f_朎Yh7uׂ0tۍPE8d84$O)X\ Np892q + ֟b\١D7s n낯-{znEΖ z1ע!^DN5(D.sRQ*Ba\ H> 9%L NP#j Kx Ic@Qע +! Ƨ RK`'@ 5Fq0Ÿ@5U9V4x񂸯 ^.mx85KLN}|6=C'!`t䏎zxxOJGwݔ混dbah~篮Ufv܂z}҉ȾMZgW`gplv~akrs}@JT–mzer~!?&tRNSfw Uq;ȀK)0#A_k0brIDATh͚W5c "f(K$r%`bM[˽sf@gg޻kWc9AAGAd !gBNGFFc'KM7㝈M9tFz/p0 ҳ:}l=DD%=OXiGeςKuddLѬ fOP tDS%&oV'UwMG,,# ^Ȑ3_$ gLtr\>'!n~PRRO[zac< Q T!du*hSX񥏐QKLqxVhvb!H qJrs "`zS)HG`LVmw`>2X ʾ#%s bه*QRR5!KFh4ut:qvD.qQDħc*Sɞ5<-#a%:!G}RkLd]߼n44 3|zg:@grvkQ$pZȷ %:}r"7+=$55[3xpuc c ]K|H,aGA[6Ƙex'WA9u6: ^ӫ^l\D&W9frȠx MMBI'?Y% $/3U`aZ]nIDB3탬.楇 2va.<CWLO. 1<(]y٬cGdX=V*.{ Q[wgdK;E PrA@Tf `H#_~p] 71Qʇf|ΰt # -tv(Wx={PЮ`q0"ٰq3-l@B7wbC@ f4lz{ۦC,} _wpiȰqtIߔ]Vv2ˮQ7刵Ϛv8K ` ;潵 Ja&78=424<@NJ^F岲م+fPnoV>gʏRK+I"O(hn-O A!iځm>mGse =`ww3BOKSG :'2R}ȸ&1 Pk;@<  d+b@\67_v &R iL=' ="M0@΋qr+SO(:k~O͵A4AD ڵ9^NZYi":,HO2Tsrbr\~A6sp2B\L@cr)z`$r2mia`N7OD/s#pvfװW.pkp(8TB?3Rp $+(Mϔpf;q!d>)օ%jHTs)JoRp巌e.33TPTh2yWMthr]2|vbF]޳ Pɠ^e>_;K# f0j!'pxذsaE k(|Sv̥./(Z`He/}"@EyָCU_ ,lyw-s%_MDe0y'0z'UG G%Q ٽ 32t1,wS ^{g H?^Q.A 6 ͘#2fkj/ {rBYlLz:cg'<őrCƭ.ejX`zZ#=WE l  J+}}(G4}|E=ygB3r{@F[[%L3z[H+DkPsnHDGlo݂3Kfw^ڞG_mtfoE;5;ͿaI=`@h_iމ/X]"i7r]"Yyĺ&Dx]!`JY<]i{ Oq 2-8;+*hR)?΀̷M0< n{r a.bg/&FƝbh.hz;a1E .[W]ID (4FځD!IE6:+\HD *4K6& Hfaw3XXSsH]OkEM%vv/_ %z$V?'nj`+ݐp՜]NL(:82}ߗn~*kGݻJESk Imlnib뽊Z"ixL@X^$*`RL~_'W*jϩ|3܃tХ>2uy/l> }tpuz:ӓ+|/괌xɨ7i!֥WK_} nSDS ]=B&ENRgUdZ6,_J.1@>@=Ha_^TLHPs(7$ :!{@~ب ?l·'& ǐ]ߓX/#  Bhǁ+<~rW7**ѷLI`Wҳ{>'pmiDo|=w13B׻x\ܳ cl'B1   cWIkJB4m!<%96;*蜴~w&٬8g='͏Oep(?O%IENDB`plugins/file-manager-advanced/application/library/img/progress.gif000064400000001233147176754550021421 0ustar00GIF89ap(a8TSN t Qh73*g3?53Dh`/څp; Hn0_gfZ>jbf)yp4肣jΏnw}].! NETSCAPE2.0!,[j%$OR)p4NUZC> %P aXߝDzA_a -(**A!,P`&Vg'@[:ig&eD8M2` X<逭8O2`Ӿl@]]4͚1҉wϛD.enj g9%zaN5ZQqHGF3޲?Y/eڔ)mׯk*>dS@;=I*ֹT,q("~y6LJ-ʘ/FY]ຍee[[et̘UrOW}Ӿ񞉟wxHsb(gX;kE)q.tլ -Y'^O]SFǡywlLihjj~mSL.X,ȏiHYr.YWrX?Y# m<5֡nPa{L4 0HD_TԷ!'lgO^PQ_99k9HIp wk0{< |m8GwP5juпs|#|;6ȀV%J A8R&8'k 9|m@t "[>! G97CԺ2SQ&TȆ 9V2'N$81jsԑc5R=;jWQ@y&ZЁs N`@@`o <=|mDw֮=Jpqm۶7 k7ՖJQm۶նx޽t5bn5g9`͜iM߄Zj!˛oj=[Ҧ7?h[-iz7^Gkk+-xjLS,-B Of 4`}zi{ ҄Q.>1mxW04ng4P ukUӥ?4 @OWPǤSż²F4=+ 2QPLZ ?85ܙ~+ )ALl |FOZ Q-|8f3CVPxcZNW" {Z?A@j>748L5[&>D߰PSV"J4}[ +Tͩv{g\=Y;:SiJ#xahDzaNۤ"d@: ;g  sGE*肝DuyhIv"7(~T0{IB_̲962cxq:t?<`/=M{$ރm=}E(Me5b pRؗGÄ2\M.Y v@ӹ ]e|fщ[-Ի(g3Tv6mSʦuMk4#.M]jc#: 3Db[cAÚ*p)`3  Vvu ZWiѺBrۆe"2L_&ES*sRWm(v{V7養&6fQ{u\+\\eK}iz3i>WH>h.Z3ley6KlbK-(iaQs2_;M5IENDB`plugins/file-manager-advanced/application/library/img/resize.png000064400000000123147176754550021072 0ustar00PNG  IHDR etIDATxc̛3̙3`􈑤tfVA]KpIENDB`plugins/file-manager-advanced/application/library/img/spinner-mini.gif000064400000002632147176754550022171 0ustar00GIF89aXXXzzz666hhhFFF$$$! NETSCAPE2.0! ,@pɗ(uJ:S"$GJ"Sa0 %$R AdC-Ðד)LXwVrP5 g*"A` :1 o!Y3 ! ,]%C@9N"BkJfPE! ,k鄠إ&U%(ˆف1Ј aE,@!HL8Ă`U X(  CA6O 0x0&C1fJPh #il~! ,[ΡX IxJJ2>KYH-t LA&$@LcQ(N@#<1Px$nx\yĚH; 1()! ,V#MZ@]$vPN8HɁAn @5H+kñ b:[ W Q86 4c! ,]RXwv\GTuae L x/( 'a0`Ma(xb 0V(z #~>Ƿ !6J9! ,ZRjiZmvN"\TI2Ba Jr& D)aEá8ICF,-LSpF`u,5FE! ,XI_xSER MZFӉg`DcUDp> # $D 77`&H&! ,ZI1 ò|Ri㕰Y+)Ų(`%xpci(N "0lNd PHN]@<̏F`}q/)D;plugins/file-manager-advanced/application/library/img/toolbar.png000064400000016522147176754550021245 0ustar00PNG  IHDRߴ)PLTE 'A Kw%}ى j]t[\\ /.,zUj JpEbTw7n6k*h C_nz$6?.~r KyyyjgqMvJHH=>hhCt|UOޙ: _i YIZǺqk͇7IBuyX][\]k֓5!؎%$ŷ\PS0equt9v܌:l\w|{*|d<0W>#RLnd {Z;>B;Yb|x 1eS3rcgh_,VSN~3"J.0o[>)W7-tAmo۴qSgM^;F4]O7쐳5۞׌?մS}}kki΀SnJoWreͣrN䷏ƘdZح{pßڐˇσ4袥ӘٝsnuKr&j٦޽bbD׵ԔϢ[xxiH5 hƇ㾧{_ږYtRNS/utjjlk[?ɤYqʹ+̿\,љ{FH͵t3SŠ.TPOׯˋPNX˴ki孬뾵?Wɶqj̕}؝TbIDATxڬ_HSQǯrհjR*)iɰmPlӈ"d%$\E!AЃ/F =[n"MjH6fD9;>~GTqhk饞K<b xt6 b296LB0O{xRaSsg<F'alk.9p&>?{Y"RM.n/^bEm&zz&h^aQqr?fjJ"3F"QTEE_E$Q%+zTP!rӶ ?p"h EhjTBBHgz9:!11S *A@89+ 4"ܷt< )Ƅ~&iUPAd-imK&& C,ajD`2``Te0]RQq*pWڵ'}nI|nzA0<ǰ"ͩabI& | a 1AOh0H'/߿=!I 3I&&u]G2N@p,\XRYiQ2yoH{36`(/*!BJ\Їإa G- ?ZE`p/Fa)qbCaa1 }7B.7nܸ(˘1Piy*- 7@<FoI֭ ýca[4-bFaW3E]dG Yu] [!RVV!"5r3a0ZΠ!͚m2#pe*1,MW'@ՙRX@Ʉ%(Sp.R? *|>dp8G":+-9 ,!p1/*T jRqk0XcD{QP8~8n.T%iPJ֠WrَW^"5_H?:#P g>|D"DulFwLd!P  YAG+jIE*F"o;bu" T|q6+#3˘;G c˞Bm˶ ӫV^qgŊݫV//:py.GV8\"#yh rZ--9 l|K8-T h\x g2ZÂ2r0FdLzg5|{AWQ1ne(DxBl IE-}HVDP Y"VZ~R~SF~};ԇ'oF3;a) E};3 grqܸd.{Ŷrucێ愘hFٜmB(-bR43QJLw4a.E R4@0 \ 49EI=8FqFH0qW$ LX()4J(D2EpY@OQ4b%rP"Sk4]7*amb6_/s*O@..R+O !s ʟp{6u!D .*!8oW]#@9_rCܾJ( S3Ց0UQ(K2U^JDFkdKU}58RѪh@[3Bk.?=$4׺HR@T~a凌^Ӥqu/].b|) ]gSĀ0Y3a,ƝBa bũ ֈw1kV&#ÅBbiUJi[USTlJg.JJ}^ϝhi Z,9UIdEJ񅃕1t :_!a85Gqu0Lt51uu.ijBq τUH*Ⱥ6n L͐YA_} wS_`#{9lt ۗRPETP4DoR,曡ۗ/,盡=`vز%;9Cnb?uqƀVI+cw)vRJvF2%UOp#ool5g&Q6UJMWu5CޔTh(㜠ߋO6D]g#'(MN~ W&49'(OO?4$ç/ xD:}< Gc|yΧΧPs) sdn\̍SYi yT6@K &2g2.$И6mtm1ܪ5-F/L섨YX?L{z/K~y]vUUɢρUHI%c4Of*brLiU,5ڄ>.狴f&lAb{J=ڙ4+3<]lOm۬́ۯukm*1vH̩OR {TE@{W[ӂNq" 6C%A'rŀ7(P=@0w xiD z|||tΏGu#Z;ԫⲎ:{|{gaICðdyOR%%-˒@-KhQe]H}cY:=HZtAhE>\3q8J_Q /z$Of"EC΅+JϊdE˲KbQ&Bqd.ryG|.2y]tAߤw{&=n p'G9;d&H7GdS73HjZ)jZ!)P0#W)#q(oY1XӂV%dæ<(s#kKDժ.Aww"_s.Q꟏Wy>FJVk0RY ?[ˎ rH^p4K"ֱHdl(#%c@M%c6䰍ELXj4)lm]ٖIT+rjS@Ks`φ{ ?aeK+y<>-|?RUUhz ǞH7??-+$nXJ7ţN&FaxJy8 ÁKP{ V; ! |}x9ee駁ލHΏc.o<t@7deVl,?n襍7eold`M7 l~sHih|h_g4sxC7lْ,Wog/myQ[>Q(V|zIpAɔ=JoD^_C[o1o>|D,'^Oz:s ~׀npc`&vnZ(@jj2<|A?28`$Z|qWEXR Ӹ#]]G zxϞ2ׯ>z_~D=.߃b{P.ի\x\lz"G yW$p<w \; q PPDWv8-@hٶRRV֭[6Q_Dz`)8̂  m]n @GG6;׭t 7<q7:?ضmӆ t\iÂ\ $mD҆v6G ?zzsgvܯo>l]X ^SΦNo"_B\|&.6_F bC@ C( .8/-Tc.B 8WUcpUksC@Kv8l! ~UU-dثMJM#bw.eB~kZGߴn{+RSMV3j~=Sk(#!,!MmtdR,ɛA'KO;C:M/zһ=tϋ=k=~~U!W"% r{ڽB\k\.r^+oܵ,Ri.;4ރ<drZ-k\.@UjUZ6 ~%9#5xqj ꯵GځP`jr; GGGrr3Ӵ 襠^~JRٳghD1Jߧe?('6۷,GRb^XH)eA "wc)sRVB}bXɋ~(O%/>h_}e/Nfiiih$@#O#{Ā4][:'&p;p:HPprBy ǏO\r#Aɦ$3ٍ GG `(P٪;H^P2wۀ'IoY1p{\p:/ߝ[<-W/ڃ:zO,xスW x Tw}rpw`,O2yI2$5[,$4'Y"{ -ҳe=¾ZZXZZ, oZ˖dP lg~ i0IENDB`plugins/file-manager-advanced/application/library/img/trashmesh.png000064400000000244147176754550021573 0ustar00PNG  IHDRRWbKGD pHYs  DIDATuK 0CуE?(wrIZHUof)`97[ sG\N 8?IENDB`plugins/file-manager-advanced/application/library/img/tui-icon-a.svg000064400000047245147176754550021571 0ustar00 plugins/file-manager-advanced/application/library/img/tui-icon-b.svg000064400000046440147176754550021566 0ustar00 plugins/file-manager-advanced/application/library/img/tui-icon-c.svg000064400000046440147176754550021567 0ustar00 plugins/file-manager-advanced/application/library/img/tui-icon-d.svg000064400000046440147176754550021570 0ustar00 plugins/file-manager-advanced/application/library/img/ui-icons_ffffff_256x240.png000064400000007257147176754550023653 0ustar00PNG  IHDRIJPLTE)[VZtRNS3P/"Uq@f`2 !<BHK Z#'1S,4j8E|)Q$ bJmߜGc?oh#- IDATxv8 aϼ1ȩ&00 w7w@VTq- &jb [0}+9fz)dm ^&?k0ganቮ}uLlS^u,N2a!hܧ{l3_ǀ=r/tv8ǬA+-Z?ӛɎs@pV8ez"aCm#w7cAJ3MJ1?9Xfжz: @ * 궹8>~kWbY~UPM {Ÿ-`%_%X P$&d/fM^;+t{uQQTE f]1`r- u.p;$ P 4=Er2P\@qpiL( H8,`73r@ICsDw8l8xpN?pu`x$ 0 @iD9eR(>3E "qI{$Ƚ Ft4BJvgs$-㥗xlyޢdEܿP]b\w@CXj_"eIܸSd~!PfsKm_}'_KQ7(@6퓾 $2=%e #W^P)M ? 3L 0=@9)dBRs0JXTUd_Q.^#{,a#dG^yeʂ#sx{jy\a@瘟'|1`8;QyY=/P%,2Xs$d؋txէkPbipgc겜LiZԡMGʞi(`V%l]Q$<('6F)H,u$Iv(D~tu ~3+~UQGW~j9jm]6@X 뺿}RSg셼3fnl kW|P}p7죠;BZ&ϔ#hB& ;@͊:/d՟ tZBR"ٌI`ov?!`5| lVx9;o[g InzM.7;2x%wHlk|x%" xB:C=g7|r1SZ]G^+Etv i6=@W6dTn4n8K+t ǀK{,0\ }$8 W~⯚ J?R-K%1>ϸߕ^BkLPm!aQ~C{u^P`~9GD3LMG|ht6)NgM;;@hDž%M~w20*.K;V P[>T??Uz?Duݦ׷ _`_.sHw~_{st[۞;}&)uZZK.k7]¹?: -`q~~w;,z/w~ [ L6wؠMӷC X!=B `5RxWfzfw 54׷e2~}<ۉ [{3X; uPBV@|@HC cpнB?ҽHLW^f0LzQ/n#_?V?@d*gLW:'ǀ9h@IENDB`plugins/file-manager-advanced/application/library/img/volume_icon_box.png000064400000001155147176754550022766 0ustar00PNG  IHDRa4IDATxb` eY?W2Rh b9ٷ&fI O8۶m۶m۶l۶m;yS{V7PD4AЀB!BW^yX.ކwиs[@CӑX;cu0Ũ{\@qIj>kh:SD6K6#5;~PkV]5XE`v@T3-ˮQ"(ofF ȁDrӼ 0v=K};'V4JcٿXub,aKԋd"S2r b Tki92j2~`;"<@(W#6^j0M:QGVD}> eMb1+1}p\鏁~b5 :%4J 6Kfݯ\]DljV)1@ahrMe* _ceږ6i)QʫԵ)sG 8oݽe7@w2peIENDB`plugins/file-manager-advanced/application/library/img/volume_icon_box.svg000064400000001256147176754550023003 0ustar00plugins/file-manager-advanced/application/library/img/volume_icon_dropbox.png000064400000000635147176754550023655 0ustar00PNG  IHDRadIDATxڍS%\fA3gzh=F]" 7{糾3~9rW'a{?9nNZߗƹٺI<ˋ2͏ Nj6MڅX8=-z [Gv"_dܹfO0νX @PsuW0}St}DDFؾ*6Oja>̹gh/,/AB MnDCP<)<I7Ϳ熙ZRYX^*9_B!A0PITi4^&r.S3_AѯZ(>ʹLk<8=agKXa)IENDB`plugins/file-manager-advanced/application/library/img/volume_icon_dropbox.svg000064400000000470147176754550023665 0ustar00plugins/file-manager-advanced/application/library/img/volume_icon_ftp.png000064400000000563147176754550022771 0ustar00PNG  IHDRa:IDATxڍDpwv) "t@s+@"@  mX7m?{ϳI&fI]yy^n3 cͶmu@{0r䬼bE8Sa( q@r)̚LJӴt:MpVX6 0l.\YSYj`5vݓ#em7"=څs3|%]%72(dvp&'yZ71@:?=])XVIENDB`plugins/file-manager-advanced/application/library/img/volume_icon_ftp.svg000064400000026101147176754550023000 0ustar00plugins/file-manager-advanced/application/library/img/volume_icon_googledrive.png000064400000001227147176754550024504 0ustar00PNG  IHDRa^IDATxڭQ>Զm۶mնmLwkG=oQ&G`&GUpģ'Rh%Rai?:ErJe\곆OiY*ΒfTH1qZ@(R;[QSWUyZq vʼnx?yM`D|( HJIhS**'B7m7)'*Ř)- P7vW3`V3.jX%&pzV$(=pu̶S&,}$DLa)Ÿ$ ". bol >(PW KBJo#uD11f5.ЈI~2s1Ro{s'ZGbolGJ\cIENDB`plugins/file-manager-advanced/application/library/img/volume_icon_googledrive.svg000064400000000337147176754550024520 0ustar00plugins/file-manager-advanced/application/library/img/volume_icon_local.png000064400000000545147176754550023272 0ustar00PNG  IHDRa,IDATxݐYQFﺻ`))9 t0#!~}皚G,..VoW=;;x<3z1i<htd2T$"C7h4zj6̽VNSO>/;Zxgpq/K_8 W=p8rf{7wv~g{N\$гs2P TO=D!=5ii}{fcc\.ҫ:Mr.9^}pџ|pplugins/file-manager-advanced/application/library/img/volume_icon_network.png000064400000001550147176754550023666 0ustar00PNG  IHDRasBIT|d pHYszz2tEXtSoftwarewww.inkscape.org<IDAT8}KHTQsΝ51LgLō-j1FXF/E0saJOPȠ'-"MEZb(\B&*H)($dN{Ϝps~ߏ;:VZMFͻo@ dJOپ/_>'rvvVݓe0<6;;ϼa颣pCs'O9 `Dq5/&S@ڢ}ފ /׻ɤHq$*w.46ns:sO !ӧivۺu]|FHRͦ!7wv;l6 YY*(8)+:}Pۑ B"X,x|iY`Lc pL`t@uC4P EY?RP|s]A׳!(  rSQNÑ𳩩I$ Mar2Ø##/reY, x22l(]t;N(,̇BDMMBIzsgN].W<_KXU>eڜ߼-oP(ig4:uj7f~%yx[cH[}/}ZM; dz>v |>,VPPЫz"Vso7O1&fff^qVU0_"11K㔚TSSKLpHi@`4|"c,IENDB`plugins/file-manager-advanced/application/library/img/volume_icon_network.svg000064400000031444147176754550023706 0ustar00plugins/file-manager-advanced/application/library/img/volume_icon_onedrive.png000064400000000314147176754550024005 0ustar00PNG  IHDRaIDATx0,.S£:ũNu%NqS\o߭/wrshТ;9@҄ WȄ;@Q2j8x}8vꡆG!:e:z/k> $8CRtdBv?0NFvIENDB`plugins/file-manager-advanced/application/library/img/volume_icon_onedrive.svg000064400000000771147176754550024027 0ustar00plugins/file-manager-advanced/application/library/img/volume_icon_sql.png000064400000001074147176754550022775 0ustar00PNG  IHDRaIDATxڍA͸TKqm)m۶mxm_gҗ FbܹS;T<`ڴi˳III!::|ՋK && uaC*hRHZ7cXk ʅƂMlw ryy\Kg,h߫g-" 0Q͵ ܹöm~(:Aӑe'?#"7@cIM59\G߆)IIIFJO+0tBCCy.>ԵG\'݉c0a ;k,Y ApD ={b~w{o p'֏X1GmTp]]qaÆ"Gj?|䊃˫7IENDB`plugins/file-manager-advanced/application/library/img/volume_icon_sql.svg000064400000022073147176754550023012 0ustar00plugins/file-manager-advanced/application/library/img/volume_icon_trash.png000064400000001302147176754550023311 0ustar00PNG  IHDRaIDATx}-G~;mEuPFUTQm[նcc~JI~ϐ!c}?pߥli;ҲRi!xދ`IG/DpWN!zBA5;m(DH7-}[o_<brllKכ_[*(B)ZsHӴ14>@< }ONwiX2cwnRC3\ſ1!<߇h BBp߂Ԝ2yJ)T(q(i$H% $PJ@LHz< Bs,E"s Ԗ<5 זevV._HJC N22STJc`J JᚦQG| Kqljժȱf@G_U^~*?!7#X-[IENDB`plugins/file-manager-advanced/application/library/img/volume_icon_trash.svg000064400000016226147176754550023337 0ustar00plugins/file-manager-advanced/application/library/img/volume_icon_zip.png000064400000000733147176754550023001 0ustar00PNG  IHDR(-SPLTEGpLɆ̈|uƄ̈\ÂyrflciF}`@wwwߘ׏ԋЇυ۔͂ˁ|ڒݾzǥ`vϭiKW̪f.AAtRNSa z,f3Q<IDATN0P 7qzn BATuj^Ayk85 BX:.%@  (,OYW 6ز^ȮS^n~NO[X͒["'C &[0KҠK`(O:v<QOH-wIENDB`plugins/file-manager-advanced/application/library/img/volume_icon_zip.svg000064400000021372147176754550023016 0ustar00plugins/file-manager-advanced/application/library/jquery/images/ui-bg_glass_55_fbf9ee_1x400.png000064400000000147147176754550026370 0ustar00PNG  IHDR:.IDATxcganቮ}uLlS^u,N2a!hܧ{l3_ǀ=r/tv8ǬA+-Z?ӛɎs@pV8ez"aCm#w7cAJ3MJ1?9Xfжz: @ * 궹8>~kWbY~UPM {Ÿ-`%_%X P$&d/fM^;+t{uQQTE f]1`r- u.p;$ P 4=Er2P\@qpiL( H8,`73r@ICsDw8l8xpN?pu`x$ 0 @iD9eR(>3E "qI{$Ƚ Ft4BJvgs$-㥗xlyޢdEܿP]b\w@CXj_"eIܸSd~!PfsKm_}'_KQ7(@6퓾 $2=%e #W^P)M ? 3L 0=@9)dBRs0JXTUd_Q.^#{,a#dG^yeʂ#sx{jy\a@瘟'|1`8;QyY=/P%,2Xs$d؋txէkPbipgc겜LiZԡMGʞi(`V%l]Q$<('6F)H,u$Iv(D~tu ~3+~UQGW~j9jm]6@X 뺿}RSg셼3fnl kW|P}p7죠;BZ&ϔ#hB& ;@͊:/d՟ tZBR"ٌI`ov?!`5| lVx9;o[g InzM.7;2x%wHlk|x%" xB:C=g7|r1SZ]G^+Etv i6=@W6dTn4n8K+t ǀK{,0\ }$8 W~⯚ J?R-K%1>ϸߕ^BkLPm!aQ~C{u^P`~9GD3LMG|ht6)NgM;;@hDž%M~w20*.K;V P[>T??Uz?Duݦ׷ _`_.sHw~_{st[۞;}&)uZZK.k7]¹?: -`q~~w;,z/w~ [ L6wؠMӷC X!=B `5RxWfzfw 54׷e2~}<ۉ [{3X; uPBV@|@HC cpнB?ҽHLW^f0LzQ/n#_?V?@d*gLW:'ǀ9h@IENDB`plugins/file-manager-advanced/application/library/jquery/images/ui-icons_2e83ff_256x240.png000064400000007257147176754550025435 0ustar00PNG  IHDRIJPLTE..........................................................................................oZtRNS3P/"Uq@f`2 !<BHK Z#'1S,4j8E|)Q$ bJmߜGc?oh#- IDATxv8 aϼ1ȩ&00 w7w@VTq- &jb [0}+9fz)dm ^&?k0ganቮ}uLlS^u,N2a!hܧ{l3_ǀ=r/tv8ǬA+-Z?ӛɎs@pV8ez"aCm#w7cAJ3MJ1?9Xfжz: @ * 궹8>~kWbY~UPM {Ÿ-`%_%X P$&d/fM^;+t{uQQTE f]1`r- u.p;$ P 4=Er2P\@qpiL( H8,`73r@ICsDw8l8xpN?pu`x$ 0 @iD9eR(>3E "qI{$Ƚ Ft4BJvgs$-㥗xlyޢdEܿP]b\w@CXj_"eIܸSd~!PfsKm_}'_KQ7(@6퓾 $2=%e #W^P)M ? 3L 0=@9)dBRs0JXTUd_Q.^#{,a#dG^yeʂ#sx{jy\a@瘟'|1`8;QyY=/P%,2Xs$d؋txէkPbipgc겜LiZԡMGʞi(`V%l]Q$<('6F)H,u$Iv(D~tu ~3+~UQGW~j9jm]6@X 뺿}RSg셼3fnl kW|P}p7죠;BZ&ϔ#hB& ;@͊:/d՟ tZBR"ٌI`ov?!`5| lVx9;o[g InzM.7;2x%wHlk|x%" xB:C=g7|r1SZ]G^+Etv i6=@W6dTn4n8K+t ǀK{,0\ }$8 W~⯚ J?R-K%1>ϸߕ^BkLPm!aQ~C{u^P`~9GD3LMG|ht6)NgM;;@hDž%M~w20*.K;V P[>T??Uz?Duݦ׷ _`_.sHw~_{st[۞;}&)uZZK.k7]¹?: -`q~~w;,z/w~ [ L6wؠMӷC X!=B `5RxWfzfw 54׷e2~}<ۉ [{3X; uPBV@|@HC cpнB?ҽHLW^f0LzQ/n#_?V?@d*gLW:'ǀ9h@IENDB`plugins/file-manager-advanced/application/library/jquery/images/ui-icons_454545_256x240.png000064400000007257147176754550025212 0ustar00PNG  IHDRIJPLTEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEv\ZtRNS3P/"Uq@f`2 !<BHK Z#'1S,4j8E|)Q$ bJmߜGc?oh#- IDATxv8 aϼ1ȩ&00 w7w@VTq- &jb [0}+9fz)dm ^&?k0ganቮ}uLlS^u,N2a!hܧ{l3_ǀ=r/tv8ǬA+-Z?ӛɎs@pV8ez"aCm#w7cAJ3MJ1?9Xfжz: @ * 궹8>~kWbY~UPM {Ÿ-`%_%X P$&d/fM^;+t{uQQTE f]1`r- u.p;$ P 4=Er2P\@qpiL( H8,`73r@ICsDw8l8xpN?pu`x$ 0 @iD9eR(>3E "qI{$Ƚ Ft4BJvgs$-㥗xlyޢdEܿP]b\w@CXj_"eIܸSd~!PfsKm_}'_KQ7(@6퓾 $2=%e #W^P)M ? 3L 0=@9)dBRs0JXTUd_Q.^#{,a#dG^yeʂ#sx{jy\a@瘟'|1`8;QyY=/P%,2Xs$d؋txէkPbipgc겜LiZԡMGʞi(`V%l]Q$<('6F)H,u$Iv(D~tu ~3+~UQGW~j9jm]6@X 뺿}RSg셼3fnl kW|P}p7죠;BZ&ϔ#hB& ;@͊:/d՟ tZBR"ٌI`ov?!`5| lVx9;o[g InzM.7;2x%wHlk|x%" xB:C=g7|r1SZ]G^+Etv i6=@W6dTn4n8K+t ǀK{,0\ }$8 W~⯚ J?R-K%1>ϸߕ^BkLPm!aQ~C{u^P`~9GD3LMG|ht6)NgM;;@hDž%M~w20*.K;V P[>T??Uz?Duݦ׷ _`_.sHw~_{st[۞;}&)uZZK.k7]¹?: -`q~~w;,z/w~ [ L6wؠMӷC X!=B `5RxWfzfw 54׷e2~}<ۉ [{3X; uPBV@|@HC cpнB?ҽHLW^f0LzQ/n#_?V?@d*gLW:'ǀ9h@IENDB`plugins/file-manager-advanced/application/library/jquery/images/ui-icons_888888_256x240.png000064400000007257147176754550025237 0ustar00PNG  IHDRIJPLTE#b|ZtRNS3P/"Uq@f`2 !<BHK Z#'1S,4j8E|)Q$ bJmߜGc?oh#- IDATxv8 aϼ1ȩ&00 w7w@VTq- &jb [0}+9fz)dm ^&?k0ganቮ}uLlS^u,N2a!hܧ{l3_ǀ=r/tv8ǬA+-Z?ӛɎs@pV8ez"aCm#w7cAJ3MJ1?9Xfжz: @ * 궹8>~kWbY~UPM {Ÿ-`%_%X P$&d/fM^;+t{uQQTE f]1`r- u.p;$ P 4=Er2P\@qpiL( H8,`73r@ICsDw8l8xpN?pu`x$ 0 @iD9eR(>3E "qI{$Ƚ Ft4BJvgs$-㥗xlyޢdEܿP]b\w@CXj_"eIܸSd~!PfsKm_}'_KQ7(@6퓾 $2=%e #W^P)M ? 3L 0=@9)dBRs0JXTUd_Q.^#{,a#dG^yeʂ#sx{jy\a@瘟'|1`8;QyY=/P%,2Xs$d؋txէkPbipgc겜LiZԡMGʞi(`V%l]Q$<('6F)H,u$Iv(D~tu ~3+~UQGW~j9jm]6@X 뺿}RSg셼3fnl kW|P}p7죠;BZ&ϔ#hB& ;@͊:/d՟ tZBR"ٌI`ov?!`5| lVx9;o[g InzM.7;2x%wHlk|x%" xB:C=g7|r1SZ]G^+Etv i6=@W6dTn4n8K+t ǀK{,0\ }$8 W~⯚ J?R-K%1>ϸߕ^BkLPm!aQ~C{u^P`~9GD3LMG|ht6)NgM;;@hDž%M~w20*.K;V P[>T??Uz?Duݦ׷ _`_.sHw~_{st[۞;}&)uZZK.k7]¹?: -`q~~w;,z/w~ [ L6wؠMӷC X!=B `5RxWfzfw 54׷e2~}<ۉ [{3X; uPBV@|@HC cpнB?ҽHLW^f0LzQ/n#_?V?@d*gLW:'ǀ9h@IENDB`plugins/file-manager-advanced/application/library/jquery/images/ui-icons_cd0a0a_256x240.png000064400000007257147176754550025470 0ustar00PNG  IHDRIJPLTE 4vZtRNS3P/"Uq@f`2 !<BHK Z#'1S,4j8E|)Q$ bJmߜGc?oh#- IDATxv8 aϼ1ȩ&00 w7w@VTq- &jb [0}+9fz)dm ^&?k0ganቮ}uLlS^u,N2a!hܧ{l3_ǀ=r/tv8ǬA+-Z?ӛɎs@pV8ez"aCm#w7cAJ3MJ1?9Xfжz: @ * 궹8>~kWbY~UPM {Ÿ-`%_%X P$&d/fM^;+t{uQQTE f]1`r- u.p;$ P 4=Er2P\@qpiL( H8,`73r@ICsDw8l8xpN?pu`x$ 0 @iD9eR(>3E "qI{$Ƚ Ft4BJvgs$-㥗xlyޢdEܿP]b\w@CXj_"eIܸSd~!PfsKm_}'_KQ7(@6퓾 $2=%e #W^P)M ? 3L 0=@9)dBRs0JXTUd_Q.^#{,a#dG^yeʂ#sx{jy\a@瘟'|1`8;QyY=/P%,2Xs$d؋txէkPbipgc겜LiZԡMGʞi(`V%l]Q$<('6F)H,u$Iv(D~tu ~3+~UQGW~j9jm]6@X 뺿}RSg셼3fnl kW|P}p7죠;BZ&ϔ#hB& ;@͊:/d՟ tZBR"ٌI`ov?!`5| lVx9;o[g InzM.7;2x%wHlk|x%" xB:C=g7|r1SZ]G^+Etv i6=@W6dTn4n8K+t ǀK{,0\ }$8 W~⯚ J?R-K%1>ϸߕ^BkLPm!aQ~C{u^P`~9GD3LMG|ht6)NgM;;@hDž%M~w20*.K;V P[>T??Uz?Duݦ׷ _`_.sHw~_{st[۞;}&)uZZK.k7]¹?: -`q~~w;,z/w~ [ L6wؠMӷC X!=B `5RxWfzfw 54׷e2~}<ۉ [{3X; uPBV@|@HC cpнB?ҽHLW^f0LzQ/n#_?V?@d*gLW:'ǀ9h@IENDB`plugins/file-manager-advanced/application/library/jquery/jquery-1.12.4.js000064400001075066147176754550022247 0ustar00/*! * jQuery JavaScript Library v1.12.4 * http://jquery.com/ * * Includes Sizzle.js * http://sizzlejs.com/ * * Copyright jQuery Foundation and other contributors * Released under the MIT license * http://jquery.org/license * * Date: 2016-05-20T17:17Z */ (function( global, factory ) { if ( typeof module === "object" && typeof module.exports === "object" ) { // For CommonJS and CommonJS-like environments where a proper `window` // is present, execute the factory and get jQuery. // For environments that do not have a `window` with a `document` // (such as Node.js), expose a factory as module.exports. // This accentuates the need for the creation of a real `window`. // e.g. var jQuery = require("jquery")(window); // See ticket #14549 for more info. module.exports = global.document ? factory( global, true ) : function( w ) { if ( !w.document ) { throw new Error( "jQuery requires a window with a document" ); } return factory( w ); }; } else { factory( global ); } // Pass this if window is not defined yet }(typeof window !== "undefined" ? window : this, function( window, noGlobal ) { // Support: Firefox 18+ // Can't be in strict mode, several libs including ASP.NET trace // the stack via arguments.caller.callee and Firefox dies if // you try to trace through "use strict" call chains. (#13335) //"use strict"; var deletedIds = []; var document = window.document; var slice = deletedIds.slice; var concat = deletedIds.concat; var push = deletedIds.push; var indexOf = deletedIds.indexOf; var class2type = {}; var toString = class2type.toString; var hasOwn = class2type.hasOwnProperty; var support = {}; var version = "1.12.4", // Define a local copy of jQuery jQuery = function( selector, context ) { // The jQuery object is actually just the init constructor 'enhanced' // Need init if jQuery is called (just allow error to be thrown if not included) return new jQuery.fn.init( selector, context ); }, // Support: Android<4.1, IE<9 // Make sure we trim BOM and NBSP rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, // Matches dashed string for camelizing rmsPrefix = /^-ms-/, rdashAlpha = /-([\da-z])/gi, // Used by jQuery.camelCase as callback to replace() fcamelCase = function( all, letter ) { return letter.toUpperCase(); }; jQuery.fn = jQuery.prototype = { // The current version of jQuery being used jquery: version, constructor: jQuery, // Start with an empty selector selector: "", // The default length of a jQuery object is 0 length: 0, toArray: function() { return slice.call( this ); }, // Get the Nth element in the matched element set OR // Get the whole matched element set as a clean array get: function( num ) { return num != null ? // Return just the one element from the set ( num < 0 ? this[ num + this.length ] : this[ num ] ) : // Return all the elements in a clean array slice.call( this ); }, // Take an array of elements and push it onto the stack // (returning the new matched element set) pushStack: function( elems ) { // Build a new jQuery matched element set var ret = jQuery.merge( this.constructor(), elems ); // Add the old object onto the stack (as a reference) ret.prevObject = this; ret.context = this.context; // Return the newly-formed element set return ret; }, // Execute a callback for every element in the matched set. each: function( callback ) { return jQuery.each( this, callback ); }, map: function( callback ) { return this.pushStack( jQuery.map( this, function( elem, i ) { return callback.call( elem, i, elem ); } ) ); }, slice: function() { return this.pushStack( slice.apply( this, arguments ) ); }, first: function() { return this.eq( 0 ); }, last: function() { return this.eq( -1 ); }, eq: function( i ) { var len = this.length, j = +i + ( i < 0 ? len : 0 ); return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); }, end: function() { return this.prevObject || this.constructor(); }, // For internal use only. // Behaves like an Array's method, not like a jQuery method. push: push, sort: deletedIds.sort, splice: deletedIds.splice }; jQuery.extend = jQuery.fn.extend = function() { var src, copyIsArray, copy, name, options, clone, target = arguments[ 0 ] || {}, i = 1, length = arguments.length, deep = false; // Handle a deep copy situation if ( typeof target === "boolean" ) { deep = target; // skip the boolean and the target target = arguments[ i ] || {}; i++; } // Handle case when target is a string or something (possible in deep copy) if ( typeof target !== "object" && !jQuery.isFunction( target ) ) { target = {}; } // extend jQuery itself if only one argument is passed if ( i === length ) { target = this; i--; } for ( ; i < length; i++ ) { // Only deal with non-null/undefined values if ( ( options = arguments[ i ] ) != null ) { // Extend the base object for ( name in options ) { src = target[ name ]; copy = options[ name ]; // Prevent never-ending loop if ( target === copy ) { continue; } // Recurse if we're merging plain objects or arrays if ( deep && copy && ( jQuery.isPlainObject( copy ) || ( copyIsArray = jQuery.isArray( copy ) ) ) ) { if ( copyIsArray ) { copyIsArray = false; clone = src && jQuery.isArray( src ) ? src : []; } else { clone = src && jQuery.isPlainObject( src ) ? src : {}; } // Never move original objects, clone them target[ name ] = jQuery.extend( deep, clone, copy ); // Don't bring in undefined values } else if ( copy !== undefined ) { target[ name ] = copy; } } } } // Return the modified object return target; }; jQuery.extend( { // Unique for each copy of jQuery on the page expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), // Assume jQuery is ready without the ready module isReady: true, error: function( msg ) { throw new Error( msg ); }, noop: function() {}, // See test/unit/core.js for details concerning isFunction. // Since version 1.3, DOM methods and functions like alert // aren't supported. They return false on IE (#2968). isFunction: function( obj ) { return jQuery.type( obj ) === "function"; }, isArray: Array.isArray || function( obj ) { return jQuery.type( obj ) === "array"; }, isWindow: function( obj ) { /* jshint eqeqeq: false */ return obj != null && obj == obj.window; }, isNumeric: function( obj ) { // parseFloat NaNs numeric-cast false positives (null|true|false|"") // ...but misinterprets leading-number strings, particularly hex literals ("0x...") // subtraction forces infinities to NaN // adding 1 corrects loss of precision from parseFloat (#15100) var realStringObj = obj && obj.toString(); return !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0; }, isEmptyObject: function( obj ) { var name; for ( name in obj ) { return false; } return true; }, isPlainObject: function( obj ) { var key; // Must be an Object. // Because of IE, we also have to check the presence of the constructor property. // Make sure that DOM nodes and window objects don't pass through, as well if ( !obj || jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { return false; } try { // Not own constructor property must be Object if ( obj.constructor && !hasOwn.call( obj, "constructor" ) && !hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) { return false; } } catch ( e ) { // IE8,9 Will throw exceptions on certain host objects #9897 return false; } // Support: IE<9 // Handle iteration over inherited properties before own properties. if ( !support.ownFirst ) { for ( key in obj ) { return hasOwn.call( obj, key ); } } // Own properties are enumerated firstly, so to speed up, // if last one is own, then all properties are own. for ( key in obj ) {} return key === undefined || hasOwn.call( obj, key ); }, type: function( obj ) { if ( obj == null ) { return obj + ""; } return typeof obj === "object" || typeof obj === "function" ? class2type[ toString.call( obj ) ] || "object" : typeof obj; }, // Workarounds based on findings by Jim Driscoll // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context globalEval: function( data ) { if ( data && jQuery.trim( data ) ) { // We use execScript on Internet Explorer // We use an anonymous function so that context is window // rather than jQuery in Firefox ( window.execScript || function( data ) { window[ "eval" ].call( window, data ); // jscs:ignore requireDotNotation } )( data ); } }, // Convert dashed to camelCase; used by the css and data modules // Microsoft forgot to hump their vendor prefix (#9572) camelCase: function( string ) { return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); }, nodeName: function( elem, name ) { return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); }, each: function( obj, callback ) { var length, i = 0; if ( isArrayLike( obj ) ) { length = obj.length; for ( ; i < length; i++ ) { if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { break; } } } else { for ( i in obj ) { if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { break; } } } return obj; }, // Support: Android<4.1, IE<9 trim: function( text ) { return text == null ? "" : ( text + "" ).replace( rtrim, "" ); }, // results is for internal usage only makeArray: function( arr, results ) { var ret = results || []; if ( arr != null ) { if ( isArrayLike( Object( arr ) ) ) { jQuery.merge( ret, typeof arr === "string" ? [ arr ] : arr ); } else { push.call( ret, arr ); } } return ret; }, inArray: function( elem, arr, i ) { var len; if ( arr ) { if ( indexOf ) { return indexOf.call( arr, elem, i ); } len = arr.length; i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; for ( ; i < len; i++ ) { // Skip accessing in sparse arrays if ( i in arr && arr[ i ] === elem ) { return i; } } } return -1; }, merge: function( first, second ) { var len = +second.length, j = 0, i = first.length; while ( j < len ) { first[ i++ ] = second[ j++ ]; } // Support: IE<9 // Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists) if ( len !== len ) { while ( second[ j ] !== undefined ) { first[ i++ ] = second[ j++ ]; } } first.length = i; return first; }, grep: function( elems, callback, invert ) { var callbackInverse, matches = [], i = 0, length = elems.length, callbackExpect = !invert; // Go through the array, only saving the items // that pass the validator function for ( ; i < length; i++ ) { callbackInverse = !callback( elems[ i ], i ); if ( callbackInverse !== callbackExpect ) { matches.push( elems[ i ] ); } } return matches; }, // arg is for internal usage only map: function( elems, callback, arg ) { var length, value, i = 0, ret = []; // Go through the array, translating each of the items to their new values if ( isArrayLike( elems ) ) { length = elems.length; for ( ; i < length; i++ ) { value = callback( elems[ i ], i, arg ); if ( value != null ) { ret.push( value ); } } // Go through every key on the object, } else { for ( i in elems ) { value = callback( elems[ i ], i, arg ); if ( value != null ) { ret.push( value ); } } } // Flatten any nested arrays return concat.apply( [], ret ); }, // A global GUID counter for objects guid: 1, // Bind a function to a context, optionally partially applying any // arguments. proxy: function( fn, context ) { var args, proxy, tmp; if ( typeof context === "string" ) { tmp = fn[ context ]; context = fn; fn = tmp; } // Quick check to determine if target is callable, in the spec // this throws a TypeError, but we will just return undefined. if ( !jQuery.isFunction( fn ) ) { return undefined; } // Simulated bind args = slice.call( arguments, 2 ); proxy = function() { return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); }; // Set the guid of unique handler to the same of original handler, so it can be removed proxy.guid = fn.guid = fn.guid || jQuery.guid++; return proxy; }, now: function() { return +( new Date() ); }, // jQuery.support is not used in Core but other projects attach their // properties to it so it needs to exist. support: support } ); // JSHint would error on this code due to the Symbol not being defined in ES5. // Defining this global in .jshintrc would create a danger of using the global // unguarded in another place, it seems safer to just disable JSHint for these // three lines. /* jshint ignore: start */ if ( typeof Symbol === "function" ) { jQuery.fn[ Symbol.iterator ] = deletedIds[ Symbol.iterator ]; } /* jshint ignore: end */ // Populate the class2type map jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), function( i, name ) { class2type[ "[object " + name + "]" ] = name.toLowerCase(); } ); function isArrayLike( obj ) { // Support: iOS 8.2 (not reproducible in simulator) // `in` check used to prevent JIT error (gh-2145) // hasOwn isn't used here due to false negatives // regarding Nodelist length in IE var length = !!obj && "length" in obj && obj.length, type = jQuery.type( obj ); if ( type === "function" || jQuery.isWindow( obj ) ) { return false; } return type === "array" || length === 0 || typeof length === "number" && length > 0 && ( length - 1 ) in obj; } var Sizzle = /*! * Sizzle CSS Selector Engine v2.2.1 * http://sizzlejs.com/ * * Copyright jQuery Foundation and other contributors * Released under the MIT license * http://jquery.org/license * * Date: 2015-10-17 */ (function( window ) { var i, support, Expr, getText, isXML, tokenize, compile, select, outermostContext, sortInput, hasDuplicate, // Local document vars setDocument, document, docElem, documentIsHTML, rbuggyQSA, rbuggyMatches, matches, contains, // Instance-specific data expando = "sizzle" + 1 * new Date(), preferredDoc = window.document, dirruns = 0, done = 0, classCache = createCache(), tokenCache = createCache(), compilerCache = createCache(), sortOrder = function( a, b ) { if ( a === b ) { hasDuplicate = true; } return 0; }, // General-purpose constants MAX_NEGATIVE = 1 << 31, // Instance methods hasOwn = ({}).hasOwnProperty, arr = [], pop = arr.pop, push_native = arr.push, push = arr.push, slice = arr.slice, // Use a stripped-down indexOf as it's faster than native // http://jsperf.com/thor-indexof-vs-for/5 indexOf = function( list, elem ) { var i = 0, len = list.length; for ( ; i < len; i++ ) { if ( list[i] === elem ) { return i; } } return -1; }, booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", // Regular expressions // http://www.w3.org/TR/css3-selectors/#whitespace whitespace = "[\\x20\\t\\r\\n\\f]", // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier identifier = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + // Operator (capture 2) "*([*^$|!~]?=)" + whitespace + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + "*\\]", pseudos = ":(" + identifier + ")(?:\\((" + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: // 1. quoted (capture 3; capture 4 or capture 5) "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + // 2. simple (capture 6) "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + // 3. anything else (capture 2) ".*" + ")\\)|)", // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter rwhitespace = new RegExp( whitespace + "+", "g" ), rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), rpseudo = new RegExp( pseudos ), ridentifier = new RegExp( "^" + identifier + "$" ), matchExpr = { "ID": new RegExp( "^#(" + identifier + ")" ), "CLASS": new RegExp( "^\\.(" + identifier + ")" ), "TAG": new RegExp( "^(" + identifier + "|[*])" ), "ATTR": new RegExp( "^" + attributes ), "PSEUDO": new RegExp( "^" + pseudos ), "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), // For use in libraries implementing .is() // We use this for POS matching in `select` "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) }, rinputs = /^(?:input|select|textarea|button)$/i, rheader = /^h\d$/i, rnative = /^[^{]+\{\s*\[native \w/, // Easily-parseable/retrievable ID or TAG or CLASS selectors rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, rsibling = /[+~]/, rescape = /'|\\/g, // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), funescape = function( _, escaped, escapedWhitespace ) { var high = "0x" + escaped - 0x10000; // NaN means non-codepoint // Support: Firefox<24 // Workaround erroneous numeric interpretation of +"0x" return high !== high || escapedWhitespace ? escaped : high < 0 ? // BMP codepoint String.fromCharCode( high + 0x10000 ) : // Supplemental Plane codepoint (surrogate pair) String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); }, // Used for iframes // See setDocument() // Removing the function wrapper causes a "Permission Denied" // error in IE unloadHandler = function() { setDocument(); }; // Optimize for push.apply( _, NodeList ) try { push.apply( (arr = slice.call( preferredDoc.childNodes )), preferredDoc.childNodes ); // Support: Android<4.0 // Detect silently failing push.apply arr[ preferredDoc.childNodes.length ].nodeType; } catch ( e ) { push = { apply: arr.length ? // Leverage slice if possible function( target, els ) { push_native.apply( target, slice.call(els) ); } : // Support: IE<9 // Otherwise append directly function( target, els ) { var j = target.length, i = 0; // Can't trust NodeList.length while ( (target[j++] = els[i++]) ) {} target.length = j - 1; } }; } function Sizzle( selector, context, results, seed ) { var m, i, elem, nid, nidselect, match, groups, newSelector, newContext = context && context.ownerDocument, // nodeType defaults to 9, since context defaults to document nodeType = context ? context.nodeType : 9; results = results || []; // Return early from calls with invalid selector or context if ( typeof selector !== "string" || !selector || nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { return results; } // Try to shortcut find operations (as opposed to filters) in HTML documents if ( !seed ) { if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { setDocument( context ); } context = context || document; if ( documentIsHTML ) { // If the selector is sufficiently simple, try using a "get*By*" DOM method // (excepting DocumentFragment context, where the methods don't exist) if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { // ID selector if ( (m = match[1]) ) { // Document context if ( nodeType === 9 ) { if ( (elem = context.getElementById( m )) ) { // Support: IE, Opera, Webkit // TODO: identify versions // getElementById can match elements by name instead of ID if ( elem.id === m ) { results.push( elem ); return results; } } else { return results; } // Element context } else { // Support: IE, Opera, Webkit // TODO: identify versions // getElementById can match elements by name instead of ID if ( newContext && (elem = newContext.getElementById( m )) && contains( context, elem ) && elem.id === m ) { results.push( elem ); return results; } } // Type selector } else if ( match[2] ) { push.apply( results, context.getElementsByTagName( selector ) ); return results; // Class selector } else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) { push.apply( results, context.getElementsByClassName( m ) ); return results; } } // Take advantage of querySelectorAll if ( support.qsa && !compilerCache[ selector + " " ] && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { if ( nodeType !== 1 ) { newContext = context; newSelector = selector; // qSA looks outside Element context, which is not what we want // Thanks to Andrew Dupont for this workaround technique // Support: IE <=8 // Exclude object elements } else if ( context.nodeName.toLowerCase() !== "object" ) { // Capture the context ID, setting it first if necessary if ( (nid = context.getAttribute( "id" )) ) { nid = nid.replace( rescape, "\\$&" ); } else { context.setAttribute( "id", (nid = expando) ); } // Prefix every selector in the list groups = tokenize( selector ); i = groups.length; nidselect = ridentifier.test( nid ) ? "#" + nid : "[id='" + nid + "']"; while ( i-- ) { groups[i] = nidselect + " " + toSelector( groups[i] ); } newSelector = groups.join( "," ); // Expand context for sibling selectors newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context; } if ( newSelector ) { try { push.apply( results, newContext.querySelectorAll( newSelector ) ); return results; } catch ( qsaError ) { } finally { if ( nid === expando ) { context.removeAttribute( "id" ); } } } } } } // All others return select( selector.replace( rtrim, "$1" ), context, results, seed ); } /** * Create key-value caches of limited size * @returns {function(string, object)} Returns the Object data after storing it on itself with * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) * deleting the oldest entry */ function createCache() { var keys = []; function cache( key, value ) { // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) if ( keys.push( key + " " ) > Expr.cacheLength ) { // Only keep the most recent entries delete cache[ keys.shift() ]; } return (cache[ key + " " ] = value); } return cache; } /** * Mark a function for special use by Sizzle * @param {Function} fn The function to mark */ function markFunction( fn ) { fn[ expando ] = true; return fn; } /** * Support testing using an element * @param {Function} fn Passed the created div and expects a boolean result */ function assert( fn ) { var div = document.createElement("div"); try { return !!fn( div ); } catch (e) { return false; } finally { // Remove from its parent by default if ( div.parentNode ) { div.parentNode.removeChild( div ); } // release memory in IE div = null; } } /** * Adds the same handler for all of the specified attrs * @param {String} attrs Pipe-separated list of attributes * @param {Function} handler The method that will be applied */ function addHandle( attrs, handler ) { var arr = attrs.split("|"), i = arr.length; while ( i-- ) { Expr.attrHandle[ arr[i] ] = handler; } } /** * Checks document order of two siblings * @param {Element} a * @param {Element} b * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b */ function siblingCheck( a, b ) { var cur = b && a, diff = cur && a.nodeType === 1 && b.nodeType === 1 && ( ~b.sourceIndex || MAX_NEGATIVE ) - ( ~a.sourceIndex || MAX_NEGATIVE ); // Use IE sourceIndex if available on both nodes if ( diff ) { return diff; } // Check if b follows a if ( cur ) { while ( (cur = cur.nextSibling) ) { if ( cur === b ) { return -1; } } } return a ? 1 : -1; } /** * Returns a function to use in pseudos for input types * @param {String} type */ function createInputPseudo( type ) { return function( elem ) { var name = elem.nodeName.toLowerCase(); return name === "input" && elem.type === type; }; } /** * Returns a function to use in pseudos for buttons * @param {String} type */ function createButtonPseudo( type ) { return function( elem ) { var name = elem.nodeName.toLowerCase(); return (name === "input" || name === "button") && elem.type === type; }; } /** * Returns a function to use in pseudos for positionals * @param {Function} fn */ function createPositionalPseudo( fn ) { return markFunction(function( argument ) { argument = +argument; return markFunction(function( seed, matches ) { var j, matchIndexes = fn( [], seed.length, argument ), i = matchIndexes.length; // Match elements found at the specified indexes while ( i-- ) { if ( seed[ (j = matchIndexes[i]) ] ) { seed[j] = !(matches[j] = seed[j]); } } }); }); } /** * Checks a node for validity as a Sizzle context * @param {Element|Object=} context * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value */ function testContext( context ) { return context && typeof context.getElementsByTagName !== "undefined" && context; } // Expose support vars for convenience support = Sizzle.support = {}; /** * Detects XML nodes * @param {Element|Object} elem An element or a document * @returns {Boolean} True iff elem is a non-HTML XML node */ isXML = Sizzle.isXML = function( elem ) { // documentElement is verified for cases where it doesn't yet exist // (such as loading iframes in IE - #4833) var documentElement = elem && (elem.ownerDocument || elem).documentElement; return documentElement ? documentElement.nodeName !== "HTML" : false; }; /** * Sets document-related variables once based on the current document * @param {Element|Object} [doc] An element or document object to use to set the document * @returns {Object} Returns the current document */ setDocument = Sizzle.setDocument = function( node ) { var hasCompare, parent, doc = node ? node.ownerDocument || node : preferredDoc; // Return early if doc is invalid or already selected if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { return document; } // Update global variables document = doc; docElem = document.documentElement; documentIsHTML = !isXML( document ); // Support: IE 9-11, Edge // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) if ( (parent = document.defaultView) && parent.top !== parent ) { // Support: IE 11 if ( parent.addEventListener ) { parent.addEventListener( "unload", unloadHandler, false ); // Support: IE 9 - 10 only } else if ( parent.attachEvent ) { parent.attachEvent( "onunload", unloadHandler ); } } /* Attributes ---------------------------------------------------------------------- */ // Support: IE<8 // Verify that getAttribute really returns attributes and not properties // (excepting IE8 booleans) support.attributes = assert(function( div ) { div.className = "i"; return !div.getAttribute("className"); }); /* getElement(s)By* ---------------------------------------------------------------------- */ // Check if getElementsByTagName("*") returns only elements support.getElementsByTagName = assert(function( div ) { div.appendChild( document.createComment("") ); return !div.getElementsByTagName("*").length; }); // Support: IE<9 support.getElementsByClassName = rnative.test( document.getElementsByClassName ); // Support: IE<10 // Check if getElementById returns elements by name // The broken getElementById methods don't pick up programatically-set names, // so use a roundabout getElementsByName test support.getById = assert(function( div ) { docElem.appendChild( div ).id = expando; return !document.getElementsByName || !document.getElementsByName( expando ).length; }); // ID find and filter if ( support.getById ) { Expr.find["ID"] = function( id, context ) { if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { var m = context.getElementById( id ); return m ? [ m ] : []; } }; Expr.filter["ID"] = function( id ) { var attrId = id.replace( runescape, funescape ); return function( elem ) { return elem.getAttribute("id") === attrId; }; }; } else { // Support: IE6/7 // getElementById is not reliable as a find shortcut delete Expr.find["ID"]; Expr.filter["ID"] = function( id ) { var attrId = id.replace( runescape, funescape ); return function( elem ) { var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); return node && node.value === attrId; }; }; } // Tag Expr.find["TAG"] = support.getElementsByTagName ? function( tag, context ) { if ( typeof context.getElementsByTagName !== "undefined" ) { return context.getElementsByTagName( tag ); // DocumentFragment nodes don't have gEBTN } else if ( support.qsa ) { return context.querySelectorAll( tag ); } } : function( tag, context ) { var elem, tmp = [], i = 0, // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too results = context.getElementsByTagName( tag ); // Filter out possible comments if ( tag === "*" ) { while ( (elem = results[i++]) ) { if ( elem.nodeType === 1 ) { tmp.push( elem ); } } return tmp; } return results; }; // Class Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { return context.getElementsByClassName( className ); } }; /* QSA/matchesSelector ---------------------------------------------------------------------- */ // QSA and matchesSelector support // matchesSelector(:active) reports false when true (IE9/Opera 11.5) rbuggyMatches = []; // qSa(:focus) reports false when true (Chrome 21) // We allow this because of a bug in IE8/9 that throws an error // whenever `document.activeElement` is accessed on an iframe // So, we allow :focus to pass through QSA all the time to avoid the IE error // See http://bugs.jquery.com/ticket/13378 rbuggyQSA = []; if ( (support.qsa = rnative.test( document.querySelectorAll )) ) { // Build QSA regex // Regex strategy adopted from Diego Perini assert(function( div ) { // Select is set to empty string on purpose // This is to test IE's treatment of not explicitly // setting a boolean content attribute, // since its presence should be enough // http://bugs.jquery.com/ticket/12359 docElem.appendChild( div ).innerHTML = "" + ""; // Support: IE8, Opera 11-12.16 // Nothing should be selected when empty strings follow ^= or $= or *= // The test attribute must be unknown in Opera but "safe" for WinRT // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section if ( div.querySelectorAll("[msallowcapture^='']").length ) { rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); } // Support: IE8 // Boolean attributes and "value" are not treated correctly if ( !div.querySelectorAll("[selected]").length ) { rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); } // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) { rbuggyQSA.push("~="); } // Webkit/Opera - :checked should return selected option elements // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked // IE8 throws error here and will not see later tests if ( !div.querySelectorAll(":checked").length ) { rbuggyQSA.push(":checked"); } // Support: Safari 8+, iOS 8+ // https://bugs.webkit.org/show_bug.cgi?id=136851 // In-page `selector#id sibing-combinator selector` fails if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) { rbuggyQSA.push(".#.+[+~]"); } }); assert(function( div ) { // Support: Windows 8 Native Apps // The type and name attributes are restricted during .innerHTML assignment var input = document.createElement("input"); input.setAttribute( "type", "hidden" ); div.appendChild( input ).setAttribute( "name", "D" ); // Support: IE8 // Enforce case-sensitivity of name attribute if ( div.querySelectorAll("[name=d]").length ) { rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); } // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) // IE8 throws error here and will not see later tests if ( !div.querySelectorAll(":enabled").length ) { rbuggyQSA.push( ":enabled", ":disabled" ); } // Opera 10-11 does not throw on post-comma invalid pseudos div.querySelectorAll("*,:x"); rbuggyQSA.push(",.*:"); }); } if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || docElem.webkitMatchesSelector || docElem.mozMatchesSelector || docElem.oMatchesSelector || docElem.msMatchesSelector) )) ) { assert(function( div ) { // Check to see if it's possible to do matchesSelector // on a disconnected node (IE 9) support.disconnectedMatch = matches.call( div, "div" ); // This should fail with an exception // Gecko does not error, returns false instead matches.call( div, "[s!='']:x" ); rbuggyMatches.push( "!=", pseudos ); }); } rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); /* Contains ---------------------------------------------------------------------- */ hasCompare = rnative.test( docElem.compareDocumentPosition ); // Element contains another // Purposefully self-exclusive // As in, an element does not contain itself contains = hasCompare || rnative.test( docElem.contains ) ? function( a, b ) { var adown = a.nodeType === 9 ? a.documentElement : a, bup = b && b.parentNode; return a === bup || !!( bup && bup.nodeType === 1 && ( adown.contains ? adown.contains( bup ) : a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 )); } : function( a, b ) { if ( b ) { while ( (b = b.parentNode) ) { if ( b === a ) { return true; } } } return false; }; /* Sorting ---------------------------------------------------------------------- */ // Document order sorting sortOrder = hasCompare ? function( a, b ) { // Flag for duplicate removal if ( a === b ) { hasDuplicate = true; return 0; } // Sort on method existence if only one input has compareDocumentPosition var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; if ( compare ) { return compare; } // Calculate position if both inputs belong to the same document compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? a.compareDocumentPosition( b ) : // Otherwise we know they are disconnected 1; // Disconnected nodes if ( compare & 1 || (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { // Choose the first element that is related to our preferred document if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { return -1; } if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { return 1; } // Maintain original order return sortInput ? ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : 0; } return compare & 4 ? -1 : 1; } : function( a, b ) { // Exit early if the nodes are identical if ( a === b ) { hasDuplicate = true; return 0; } var cur, i = 0, aup = a.parentNode, bup = b.parentNode, ap = [ a ], bp = [ b ]; // Parentless nodes are either documents or disconnected if ( !aup || !bup ) { return a === document ? -1 : b === document ? 1 : aup ? -1 : bup ? 1 : sortInput ? ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : 0; // If the nodes are siblings, we can do a quick check } else if ( aup === bup ) { return siblingCheck( a, b ); } // Otherwise we need full lists of their ancestors for comparison cur = a; while ( (cur = cur.parentNode) ) { ap.unshift( cur ); } cur = b; while ( (cur = cur.parentNode) ) { bp.unshift( cur ); } // Walk down the tree looking for a discrepancy while ( ap[i] === bp[i] ) { i++; } return i ? // Do a sibling check if the nodes have a common ancestor siblingCheck( ap[i], bp[i] ) : // Otherwise nodes in our document sort first ap[i] === preferredDoc ? -1 : bp[i] === preferredDoc ? 1 : 0; }; return document; }; Sizzle.matches = function( expr, elements ) { return Sizzle( expr, null, null, elements ); }; Sizzle.matchesSelector = function( elem, expr ) { // Set document vars if needed if ( ( elem.ownerDocument || elem ) !== document ) { setDocument( elem ); } // Make sure that attribute selectors are quoted expr = expr.replace( rattributeQuotes, "='$1']" ); if ( support.matchesSelector && documentIsHTML && !compilerCache[ expr + " " ] && ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { try { var ret = matches.call( elem, expr ); // IE 9's matchesSelector returns false on disconnected nodes if ( ret || support.disconnectedMatch || // As well, disconnected nodes are said to be in a document // fragment in IE 9 elem.document && elem.document.nodeType !== 11 ) { return ret; } } catch (e) {} } return Sizzle( expr, document, null, [ elem ] ).length > 0; }; Sizzle.contains = function( context, elem ) { // Set document vars if needed if ( ( context.ownerDocument || context ) !== document ) { setDocument( context ); } return contains( context, elem ); }; Sizzle.attr = function( elem, name ) { // Set document vars if needed if ( ( elem.ownerDocument || elem ) !== document ) { setDocument( elem ); } var fn = Expr.attrHandle[ name.toLowerCase() ], // Don't get fooled by Object.prototype properties (jQuery #13807) val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? fn( elem, name, !documentIsHTML ) : undefined; return val !== undefined ? val : support.attributes || !documentIsHTML ? elem.getAttribute( name ) : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null; }; Sizzle.error = function( msg ) { throw new Error( "Syntax error, unrecognized expression: " + msg ); }; /** * Document sorting and removing duplicates * @param {ArrayLike} results */ Sizzle.uniqueSort = function( results ) { var elem, duplicates = [], j = 0, i = 0; // Unless we *know* we can detect duplicates, assume their presence hasDuplicate = !support.detectDuplicates; sortInput = !support.sortStable && results.slice( 0 ); results.sort( sortOrder ); if ( hasDuplicate ) { while ( (elem = results[i++]) ) { if ( elem === results[ i ] ) { j = duplicates.push( i ); } } while ( j-- ) { results.splice( duplicates[ j ], 1 ); } } // Clear input after sorting to release objects // See https://github.com/jquery/sizzle/pull/225 sortInput = null; return results; }; /** * Utility function for retrieving the text value of an array of DOM nodes * @param {Array|Element} elem */ getText = Sizzle.getText = function( elem ) { var node, ret = "", i = 0, nodeType = elem.nodeType; if ( !nodeType ) { // If no nodeType, this is expected to be an array while ( (node = elem[i++]) ) { // Do not traverse comment nodes ret += getText( node ); } } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { // Use textContent for elements // innerText usage removed for consistency of new lines (jQuery #11153) if ( typeof elem.textContent === "string" ) { return elem.textContent; } else { // Traverse its children for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { ret += getText( elem ); } } } else if ( nodeType === 3 || nodeType === 4 ) { return elem.nodeValue; } // Do not include comment or processing instruction nodes return ret; }; Expr = Sizzle.selectors = { // Can be adjusted by the user cacheLength: 50, createPseudo: markFunction, match: matchExpr, attrHandle: {}, find: {}, relative: { ">": { dir: "parentNode", first: true }, " ": { dir: "parentNode" }, "+": { dir: "previousSibling", first: true }, "~": { dir: "previousSibling" } }, preFilter: { "ATTR": function( match ) { match[1] = match[1].replace( runescape, funescape ); // Move the given value to match[3] whether quoted or unquoted match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); if ( match[2] === "~=" ) { match[3] = " " + match[3] + " "; } return match.slice( 0, 4 ); }, "CHILD": function( match ) { /* matches from matchExpr["CHILD"] 1 type (only|nth|...) 2 what (child|of-type) 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) 4 xn-component of xn+y argument ([+-]?\d*n|) 5 sign of xn-component 6 x of xn-component 7 sign of y-component 8 y of y-component */ match[1] = match[1].toLowerCase(); if ( match[1].slice( 0, 3 ) === "nth" ) { // nth-* requires argument if ( !match[3] ) { Sizzle.error( match[0] ); } // numeric x and y parameters for Expr.filter.CHILD // remember that false/true cast respectively to 0/1 match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); // other types prohibit arguments } else if ( match[3] ) { Sizzle.error( match[0] ); } return match; }, "PSEUDO": function( match ) { var excess, unquoted = !match[6] && match[2]; if ( matchExpr["CHILD"].test( match[0] ) ) { return null; } // Accept quoted arguments as-is if ( match[3] ) { match[2] = match[4] || match[5] || ""; // Strip excess characters from unquoted arguments } else if ( unquoted && rpseudo.test( unquoted ) && // Get excess from tokenize (recursively) (excess = tokenize( unquoted, true )) && // advance to the next closing parenthesis (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { // excess is a negative index match[0] = match[0].slice( 0, excess ); match[2] = unquoted.slice( 0, excess ); } // Return only captures needed by the pseudo filter method (type and argument) return match.slice( 0, 3 ); } }, filter: { "TAG": function( nodeNameSelector ) { var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); return nodeNameSelector === "*" ? function() { return true; } : function( elem ) { return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; }; }, "CLASS": function( className ) { var pattern = classCache[ className + " " ]; return pattern || (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && classCache( className, function( elem ) { return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); }); }, "ATTR": function( name, operator, check ) { return function( elem ) { var result = Sizzle.attr( elem, name ); if ( result == null ) { return operator === "!="; } if ( !operator ) { return true; } result += ""; return operator === "=" ? result === check : operator === "!=" ? result !== check : operator === "^=" ? check && result.indexOf( check ) === 0 : operator === "*=" ? check && result.indexOf( check ) > -1 : operator === "$=" ? check && result.slice( -check.length ) === check : operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : false; }; }, "CHILD": function( type, what, argument, first, last ) { var simple = type.slice( 0, 3 ) !== "nth", forward = type.slice( -4 ) !== "last", ofType = what === "of-type"; return first === 1 && last === 0 ? // Shortcut for :nth-*(n) function( elem ) { return !!elem.parentNode; } : function( elem, context, xml ) { var cache, uniqueCache, outerCache, node, nodeIndex, start, dir = simple !== forward ? "nextSibling" : "previousSibling", parent = elem.parentNode, name = ofType && elem.nodeName.toLowerCase(), useCache = !xml && !ofType, diff = false; if ( parent ) { // :(first|last|only)-(child|of-type) if ( simple ) { while ( dir ) { node = elem; while ( (node = node[ dir ]) ) { if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { return false; } } // Reverse direction for :only-* (if we haven't yet done so) start = dir = type === "only" && !start && "nextSibling"; } return true; } start = [ forward ? parent.firstChild : parent.lastChild ]; // non-xml :nth-child(...) stores cache data on `parent` if ( forward && useCache ) { // Seek `elem` from a previously-cached index // ...in a gzip-friendly way node = parent; outerCache = node[ expando ] || (node[ expando ] = {}); // Support: IE <9 only // Defend against cloned attroperties (jQuery gh-1709) uniqueCache = outerCache[ node.uniqueID ] || (outerCache[ node.uniqueID ] = {}); cache = uniqueCache[ type ] || []; nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; diff = nodeIndex && cache[ 2 ]; node = nodeIndex && parent.childNodes[ nodeIndex ]; while ( (node = ++nodeIndex && node && node[ dir ] || // Fallback to seeking `elem` from the start (diff = nodeIndex = 0) || start.pop()) ) { // When found, cache indexes on `parent` and break if ( node.nodeType === 1 && ++diff && node === elem ) { uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; break; } } } else { // Use previously-cached element index if available if ( useCache ) { // ...in a gzip-friendly way node = elem; outerCache = node[ expando ] || (node[ expando ] = {}); // Support: IE <9 only // Defend against cloned attroperties (jQuery gh-1709) uniqueCache = outerCache[ node.uniqueID ] || (outerCache[ node.uniqueID ] = {}); cache = uniqueCache[ type ] || []; nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; diff = nodeIndex; } // xml :nth-child(...) // or :nth-last-child(...) or :nth(-last)?-of-type(...) if ( diff === false ) { // Use the same loop as above to seek `elem` from the start while ( (node = ++nodeIndex && node && node[ dir ] || (diff = nodeIndex = 0) || start.pop()) ) { if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) { // Cache the index of each encountered element if ( useCache ) { outerCache = node[ expando ] || (node[ expando ] = {}); // Support: IE <9 only // Defend against cloned attroperties (jQuery gh-1709) uniqueCache = outerCache[ node.uniqueID ] || (outerCache[ node.uniqueID ] = {}); uniqueCache[ type ] = [ dirruns, diff ]; } if ( node === elem ) { break; } } } } } // Incorporate the offset, then check against cycle size diff -= last; return diff === first || ( diff % first === 0 && diff / first >= 0 ); } }; }, "PSEUDO": function( pseudo, argument ) { // pseudo-class names are case-insensitive // http://www.w3.org/TR/selectors/#pseudo-classes // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters // Remember that setFilters inherits from pseudos var args, fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || Sizzle.error( "unsupported pseudo: " + pseudo ); // The user may use createPseudo to indicate that // arguments are needed to create the filter function // just as Sizzle does if ( fn[ expando ] ) { return fn( argument ); } // But maintain support for old signatures if ( fn.length > 1 ) { args = [ pseudo, pseudo, "", argument ]; return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? markFunction(function( seed, matches ) { var idx, matched = fn( seed, argument ), i = matched.length; while ( i-- ) { idx = indexOf( seed, matched[i] ); seed[ idx ] = !( matches[ idx ] = matched[i] ); } }) : function( elem ) { return fn( elem, 0, args ); }; } return fn; } }, pseudos: { // Potentially complex pseudos "not": markFunction(function( selector ) { // Trim the selector passed to compile // to avoid treating leading and trailing // spaces as combinators var input = [], results = [], matcher = compile( selector.replace( rtrim, "$1" ) ); return matcher[ expando ] ? markFunction(function( seed, matches, context, xml ) { var elem, unmatched = matcher( seed, null, xml, [] ), i = seed.length; // Match elements unmatched by `matcher` while ( i-- ) { if ( (elem = unmatched[i]) ) { seed[i] = !(matches[i] = elem); } } }) : function( elem, context, xml ) { input[0] = elem; matcher( input, null, xml, results ); // Don't keep the element (issue #299) input[0] = null; return !results.pop(); }; }), "has": markFunction(function( selector ) { return function( elem ) { return Sizzle( selector, elem ).length > 0; }; }), "contains": markFunction(function( text ) { text = text.replace( runescape, funescape ); return function( elem ) { return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; }; }), // "Whether an element is represented by a :lang() selector // is based solely on the element's language value // being equal to the identifier C, // or beginning with the identifier C immediately followed by "-". // The matching of C against the element's language value is performed case-insensitively. // The identifier C does not have to be a valid language name." // http://www.w3.org/TR/selectors/#lang-pseudo "lang": markFunction( function( lang ) { // lang value must be a valid identifier if ( !ridentifier.test(lang || "") ) { Sizzle.error( "unsupported lang: " + lang ); } lang = lang.replace( runescape, funescape ).toLowerCase(); return function( elem ) { var elemLang; do { if ( (elemLang = documentIsHTML ? elem.lang : elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { elemLang = elemLang.toLowerCase(); return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; } } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); return false; }; }), // Miscellaneous "target": function( elem ) { var hash = window.location && window.location.hash; return hash && hash.slice( 1 ) === elem.id; }, "root": function( elem ) { return elem === docElem; }, "focus": function( elem ) { return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); }, // Boolean properties "enabled": function( elem ) { return elem.disabled === false; }, "disabled": function( elem ) { return elem.disabled === true; }, "checked": function( elem ) { // In CSS3, :checked should return both checked and selected elements // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked var nodeName = elem.nodeName.toLowerCase(); return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); }, "selected": function( elem ) { // Accessing this property makes selected-by-default // options in Safari work properly if ( elem.parentNode ) { elem.parentNode.selectedIndex; } return elem.selected === true; }, // Contents "empty": function( elem ) { // http://www.w3.org/TR/selectors/#empty-pseudo // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), // but not by others (comment: 8; processing instruction: 7; etc.) // nodeType < 6 works because attributes (2) do not appear as children for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { if ( elem.nodeType < 6 ) { return false; } } return true; }, "parent": function( elem ) { return !Expr.pseudos["empty"]( elem ); }, // Element/input types "header": function( elem ) { return rheader.test( elem.nodeName ); }, "input": function( elem ) { return rinputs.test( elem.nodeName ); }, "button": function( elem ) { var name = elem.nodeName.toLowerCase(); return name === "input" && elem.type === "button" || name === "button"; }, "text": function( elem ) { var attr; return elem.nodeName.toLowerCase() === "input" && elem.type === "text" && // Support: IE<8 // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); }, // Position-in-collection "first": createPositionalPseudo(function() { return [ 0 ]; }), "last": createPositionalPseudo(function( matchIndexes, length ) { return [ length - 1 ]; }), "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { return [ argument < 0 ? argument + length : argument ]; }), "even": createPositionalPseudo(function( matchIndexes, length ) { var i = 0; for ( ; i < length; i += 2 ) { matchIndexes.push( i ); } return matchIndexes; }), "odd": createPositionalPseudo(function( matchIndexes, length ) { var i = 1; for ( ; i < length; i += 2 ) { matchIndexes.push( i ); } return matchIndexes; }), "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { var i = argument < 0 ? argument + length : argument; for ( ; --i >= 0; ) { matchIndexes.push( i ); } return matchIndexes; }), "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { var i = argument < 0 ? argument + length : argument; for ( ; ++i < length; ) { matchIndexes.push( i ); } return matchIndexes; }) } }; Expr.pseudos["nth"] = Expr.pseudos["eq"]; // Add button/input type pseudos for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { Expr.pseudos[ i ] = createInputPseudo( i ); } for ( i in { submit: true, reset: true } ) { Expr.pseudos[ i ] = createButtonPseudo( i ); } // Easy API for creating new setFilters function setFilters() {} setFilters.prototype = Expr.filters = Expr.pseudos; Expr.setFilters = new setFilters(); tokenize = Sizzle.tokenize = function( selector, parseOnly ) { var matched, match, tokens, type, soFar, groups, preFilters, cached = tokenCache[ selector + " " ]; if ( cached ) { return parseOnly ? 0 : cached.slice( 0 ); } soFar = selector; groups = []; preFilters = Expr.preFilter; while ( soFar ) { // Comma and first run if ( !matched || (match = rcomma.exec( soFar )) ) { if ( match ) { // Don't consume trailing commas as valid soFar = soFar.slice( match[0].length ) || soFar; } groups.push( (tokens = []) ); } matched = false; // Combinators if ( (match = rcombinators.exec( soFar )) ) { matched = match.shift(); tokens.push({ value: matched, // Cast descendant combinators to space type: match[0].replace( rtrim, " " ) }); soFar = soFar.slice( matched.length ); } // Filters for ( type in Expr.filter ) { if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || (match = preFilters[ type ]( match ))) ) { matched = match.shift(); tokens.push({ value: matched, type: type, matches: match }); soFar = soFar.slice( matched.length ); } } if ( !matched ) { break; } } // Return the length of the invalid excess // if we're just parsing // Otherwise, throw an error or return tokens return parseOnly ? soFar.length : soFar ? Sizzle.error( selector ) : // Cache the tokens tokenCache( selector, groups ).slice( 0 ); }; function toSelector( tokens ) { var i = 0, len = tokens.length, selector = ""; for ( ; i < len; i++ ) { selector += tokens[i].value; } return selector; } function addCombinator( matcher, combinator, base ) { var dir = combinator.dir, checkNonElements = base && dir === "parentNode", doneName = done++; return combinator.first ? // Check against closest ancestor/preceding element function( elem, context, xml ) { while ( (elem = elem[ dir ]) ) { if ( elem.nodeType === 1 || checkNonElements ) { return matcher( elem, context, xml ); } } } : // Check against all ancestor/preceding elements function( elem, context, xml ) { var oldCache, uniqueCache, outerCache, newCache = [ dirruns, doneName ]; // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching if ( xml ) { while ( (elem = elem[ dir ]) ) { if ( elem.nodeType === 1 || checkNonElements ) { if ( matcher( elem, context, xml ) ) { return true; } } } } else { while ( (elem = elem[ dir ]) ) { if ( elem.nodeType === 1 || checkNonElements ) { outerCache = elem[ expando ] || (elem[ expando ] = {}); // Support: IE <9 only // Defend against cloned attroperties (jQuery gh-1709) uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); if ( (oldCache = uniqueCache[ dir ]) && oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { // Assign to newCache so results back-propagate to previous elements return (newCache[ 2 ] = oldCache[ 2 ]); } else { // Reuse newcache so results back-propagate to previous elements uniqueCache[ dir ] = newCache; // A match means we're done; a fail means we have to keep checking if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { return true; } } } } } }; } function elementMatcher( matchers ) { return matchers.length > 1 ? function( elem, context, xml ) { var i = matchers.length; while ( i-- ) { if ( !matchers[i]( elem, context, xml ) ) { return false; } } return true; } : matchers[0]; } function multipleContexts( selector, contexts, results ) { var i = 0, len = contexts.length; for ( ; i < len; i++ ) { Sizzle( selector, contexts[i], results ); } return results; } function condense( unmatched, map, filter, context, xml ) { var elem, newUnmatched = [], i = 0, len = unmatched.length, mapped = map != null; for ( ; i < len; i++ ) { if ( (elem = unmatched[i]) ) { if ( !filter || filter( elem, context, xml ) ) { newUnmatched.push( elem ); if ( mapped ) { map.push( i ); } } } } return newUnmatched; } function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { if ( postFilter && !postFilter[ expando ] ) { postFilter = setMatcher( postFilter ); } if ( postFinder && !postFinder[ expando ] ) { postFinder = setMatcher( postFinder, postSelector ); } return markFunction(function( seed, results, context, xml ) { var temp, i, elem, preMap = [], postMap = [], preexisting = results.length, // Get initial elements from seed or context elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), // Prefilter to get matcher input, preserving a map for seed-results synchronization matcherIn = preFilter && ( seed || !selector ) ? condense( elems, preMap, preFilter, context, xml ) : elems, matcherOut = matcher ? // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, postFinder || ( seed ? preFilter : preexisting || postFilter ) ? // ...intermediate processing is necessary [] : // ...otherwise use results directly results : matcherIn; // Find primary matches if ( matcher ) { matcher( matcherIn, matcherOut, context, xml ); } // Apply postFilter if ( postFilter ) { temp = condense( matcherOut, postMap ); postFilter( temp, [], context, xml ); // Un-match failing elements by moving them back to matcherIn i = temp.length; while ( i-- ) { if ( (elem = temp[i]) ) { matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); } } } if ( seed ) { if ( postFinder || preFilter ) { if ( postFinder ) { // Get the final matcherOut by condensing this intermediate into postFinder contexts temp = []; i = matcherOut.length; while ( i-- ) { if ( (elem = matcherOut[i]) ) { // Restore matcherIn since elem is not yet a final match temp.push( (matcherIn[i] = elem) ); } } postFinder( null, (matcherOut = []), temp, xml ); } // Move matched elements from seed to results to keep them synchronized i = matcherOut.length; while ( i-- ) { if ( (elem = matcherOut[i]) && (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { seed[temp] = !(results[temp] = elem); } } } // Add elements to results, through postFinder if defined } else { matcherOut = condense( matcherOut === results ? matcherOut.splice( preexisting, matcherOut.length ) : matcherOut ); if ( postFinder ) { postFinder( null, results, matcherOut, xml ); } else { push.apply( results, matcherOut ); } } }); } function matcherFromTokens( tokens ) { var checkContext, matcher, j, len = tokens.length, leadingRelative = Expr.relative[ tokens[0].type ], implicitRelative = leadingRelative || Expr.relative[" "], i = leadingRelative ? 1 : 0, // The foundational matcher ensures that elements are reachable from top-level context(s) matchContext = addCombinator( function( elem ) { return elem === checkContext; }, implicitRelative, true ), matchAnyContext = addCombinator( function( elem ) { return indexOf( checkContext, elem ) > -1; }, implicitRelative, true ), matchers = [ function( elem, context, xml ) { var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( (checkContext = context).nodeType ? matchContext( elem, context, xml ) : matchAnyContext( elem, context, xml ) ); // Avoid hanging onto element (issue #299) checkContext = null; return ret; } ]; for ( ; i < len; i++ ) { if ( (matcher = Expr.relative[ tokens[i].type ]) ) { matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; } else { matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); // Return special upon seeing a positional matcher if ( matcher[ expando ] ) { // Find the next relative operator (if any) for proper handling j = ++i; for ( ; j < len; j++ ) { if ( Expr.relative[ tokens[j].type ] ) { break; } } return setMatcher( i > 1 && elementMatcher( matchers ), i > 1 && toSelector( // If the preceding token was a descendant combinator, insert an implicit any-element `*` tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) ).replace( rtrim, "$1" ), matcher, i < j && matcherFromTokens( tokens.slice( i, j ) ), j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), j < len && toSelector( tokens ) ); } matchers.push( matcher ); } } return elementMatcher( matchers ); } function matcherFromGroupMatchers( elementMatchers, setMatchers ) { var bySet = setMatchers.length > 0, byElement = elementMatchers.length > 0, superMatcher = function( seed, context, xml, results, outermost ) { var elem, j, matcher, matchedCount = 0, i = "0", unmatched = seed && [], setMatched = [], contextBackup = outermostContext, // We must always have either seed elements or outermost context elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), // Use integer dirruns iff this is the outermost matcher dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), len = elems.length; if ( outermost ) { outermostContext = context === document || context || outermost; } // Add elements passing elementMatchers directly to results // Support: IE<9, Safari // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id for ( ; i !== len && (elem = elems[i]) != null; i++ ) { if ( byElement && elem ) { j = 0; if ( !context && elem.ownerDocument !== document ) { setDocument( elem ); xml = !documentIsHTML; } while ( (matcher = elementMatchers[j++]) ) { if ( matcher( elem, context || document, xml) ) { results.push( elem ); break; } } if ( outermost ) { dirruns = dirrunsUnique; } } // Track unmatched elements for set filters if ( bySet ) { // They will have gone through all possible matchers if ( (elem = !matcher && elem) ) { matchedCount--; } // Lengthen the array for every element, matched or not if ( seed ) { unmatched.push( elem ); } } } // `i` is now the count of elements visited above, and adding it to `matchedCount` // makes the latter nonnegative. matchedCount += i; // Apply set filters to unmatched elements // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` // equals `i`), unless we didn't visit _any_ elements in the above loop because we have // no element matchers and no seed. // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that // case, which will result in a "00" `matchedCount` that differs from `i` but is also // numerically zero. if ( bySet && i !== matchedCount ) { j = 0; while ( (matcher = setMatchers[j++]) ) { matcher( unmatched, setMatched, context, xml ); } if ( seed ) { // Reintegrate element matches to eliminate the need for sorting if ( matchedCount > 0 ) { while ( i-- ) { if ( !(unmatched[i] || setMatched[i]) ) { setMatched[i] = pop.call( results ); } } } // Discard index placeholder values to get only actual matches setMatched = condense( setMatched ); } // Add matches to results push.apply( results, setMatched ); // Seedless set matches succeeding multiple successful matchers stipulate sorting if ( outermost && !seed && setMatched.length > 0 && ( matchedCount + setMatchers.length ) > 1 ) { Sizzle.uniqueSort( results ); } } // Override manipulation of globals by nested matchers if ( outermost ) { dirruns = dirrunsUnique; outermostContext = contextBackup; } return unmatched; }; return bySet ? markFunction( superMatcher ) : superMatcher; } compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { var i, setMatchers = [], elementMatchers = [], cached = compilerCache[ selector + " " ]; if ( !cached ) { // Generate a function of recursive functions that can be used to check each element if ( !match ) { match = tokenize( selector ); } i = match.length; while ( i-- ) { cached = matcherFromTokens( match[i] ); if ( cached[ expando ] ) { setMatchers.push( cached ); } else { elementMatchers.push( cached ); } } // Cache the compiled function cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); // Save selector and tokenization cached.selector = selector; } return cached; }; /** * A low-level selection function that works with Sizzle's compiled * selector functions * @param {String|Function} selector A selector or a pre-compiled * selector function built with Sizzle.compile * @param {Element} context * @param {Array} [results] * @param {Array} [seed] A set of elements to match against */ select = Sizzle.select = function( selector, context, results, seed ) { var i, tokens, token, type, find, compiled = typeof selector === "function" && selector, match = !seed && tokenize( (selector = compiled.selector || selector) ); results = results || []; // Try to minimize operations if there is only one selector in the list and no seed // (the latter of which guarantees us context) if ( match.length === 1 ) { // Reduce context if the leading compound selector is an ID tokens = match[0] = match[0].slice( 0 ); if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && support.getById && context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) { context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; if ( !context ) { return results; // Precompiled matchers will still verify ancestry, so step up a level } else if ( compiled ) { context = context.parentNode; } selector = selector.slice( tokens.shift().value.length ); } // Fetch a seed set for right-to-left matching i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; while ( i-- ) { token = tokens[i]; // Abort if we hit a combinator if ( Expr.relative[ (type = token.type) ] ) { break; } if ( (find = Expr.find[ type ]) ) { // Search, expanding context for leading sibling combinators if ( (seed = find( token.matches[0].replace( runescape, funescape ), rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context )) ) { // If seed is empty or no tokens remain, we can return early tokens.splice( i, 1 ); selector = seed.length && toSelector( tokens ); if ( !selector ) { push.apply( results, seed ); return results; } break; } } } } // Compile and execute a filtering function if one is not provided // Provide `match` to avoid retokenization if we modified the selector above ( compiled || compile( selector, match ) )( seed, context, !documentIsHTML, results, !context || rsibling.test( selector ) && testContext( context.parentNode ) || context ); return results; }; // One-time assignments // Sort stability support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; // Support: Chrome 14-35+ // Always assume duplicates if they aren't passed to the comparison function support.detectDuplicates = !!hasDuplicate; // Initialize against the default document setDocument(); // Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) // Detached nodes confoundingly follow *each other* support.sortDetached = assert(function( div1 ) { // Should return 1, but returns 4 (following) return div1.compareDocumentPosition( document.createElement("div") ) & 1; }); // Support: IE<8 // Prevent attribute/property "interpolation" // http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx if ( !assert(function( div ) { div.innerHTML = ""; return div.firstChild.getAttribute("href") === "#" ; }) ) { addHandle( "type|href|height|width", function( elem, name, isXML ) { if ( !isXML ) { return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); } }); } // Support: IE<9 // Use defaultValue in place of getAttribute("value") if ( !support.attributes || !assert(function( div ) { div.innerHTML = ""; div.firstChild.setAttribute( "value", "" ); return div.firstChild.getAttribute( "value" ) === ""; }) ) { addHandle( "value", function( elem, name, isXML ) { if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { return elem.defaultValue; } }); } // Support: IE<9 // Use getAttributeNode to fetch booleans when getAttribute lies if ( !assert(function( div ) { return div.getAttribute("disabled") == null; }) ) { addHandle( booleans, function( elem, name, isXML ) { var val; if ( !isXML ) { return elem[ name ] === true ? name.toLowerCase() : (val = elem.getAttributeNode( name )) && val.specified ? val.value : null; } }); } return Sizzle; })( window ); jQuery.find = Sizzle; jQuery.expr = Sizzle.selectors; jQuery.expr[ ":" ] = jQuery.expr.pseudos; jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; jQuery.text = Sizzle.getText; jQuery.isXMLDoc = Sizzle.isXML; jQuery.contains = Sizzle.contains; var dir = function( elem, dir, until ) { var matched = [], truncate = until !== undefined; while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { if ( elem.nodeType === 1 ) { if ( truncate && jQuery( elem ).is( until ) ) { break; } matched.push( elem ); } } return matched; }; var siblings = function( n, elem ) { var matched = []; for ( ; n; n = n.nextSibling ) { if ( n.nodeType === 1 && n !== elem ) { matched.push( n ); } } return matched; }; var rneedsContext = jQuery.expr.match.needsContext; var rsingleTag = ( /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/ ); var risSimple = /^.[^:#\[\.,]*$/; // Implement the identical functionality for filter and not function winnow( elements, qualifier, not ) { if ( jQuery.isFunction( qualifier ) ) { return jQuery.grep( elements, function( elem, i ) { /* jshint -W018 */ return !!qualifier.call( elem, i, elem ) !== not; } ); } if ( qualifier.nodeType ) { return jQuery.grep( elements, function( elem ) { return ( elem === qualifier ) !== not; } ); } if ( typeof qualifier === "string" ) { if ( risSimple.test( qualifier ) ) { return jQuery.filter( qualifier, elements, not ); } qualifier = jQuery.filter( qualifier, elements ); } return jQuery.grep( elements, function( elem ) { return ( jQuery.inArray( elem, qualifier ) > -1 ) !== not; } ); } jQuery.filter = function( expr, elems, not ) { var elem = elems[ 0 ]; if ( not ) { expr = ":not(" + expr + ")"; } return elems.length === 1 && elem.nodeType === 1 ? jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { return elem.nodeType === 1; } ) ); }; jQuery.fn.extend( { find: function( selector ) { var i, ret = [], self = this, len = self.length; if ( typeof selector !== "string" ) { return this.pushStack( jQuery( selector ).filter( function() { for ( i = 0; i < len; i++ ) { if ( jQuery.contains( self[ i ], this ) ) { return true; } } } ) ); } for ( i = 0; i < len; i++ ) { jQuery.find( selector, self[ i ], ret ); } // Needed because $( selector, context ) becomes $( context ).find( selector ) ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); ret.selector = this.selector ? this.selector + " " + selector : selector; return ret; }, filter: function( selector ) { return this.pushStack( winnow( this, selector || [], false ) ); }, not: function( selector ) { return this.pushStack( winnow( this, selector || [], true ) ); }, is: function( selector ) { return !!winnow( this, // If this is a positional/relative selector, check membership in the returned set // so $("p:first").is("p:last") won't return true for a doc with two "p". typeof selector === "string" && rneedsContext.test( selector ) ? jQuery( selector ) : selector || [], false ).length; } } ); // Initialize a jQuery object // A central reference to the root jQuery(document) var rootjQuery, // A simple way to check for HTML strings // Prioritize #id over to avoid XSS via location.hash (#9521) // Strict HTML recognition (#11290: must start with <) rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, init = jQuery.fn.init = function( selector, context, root ) { var match, elem; // HANDLE: $(""), $(null), $(undefined), $(false) if ( !selector ) { return this; } // init accepts an alternate rootjQuery // so migrate can support jQuery.sub (gh-2101) root = root || rootjQuery; // Handle HTML strings if ( typeof selector === "string" ) { if ( selector.charAt( 0 ) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { // Assume that strings that start and end with <> are HTML and skip the regex check match = [ null, selector, null ]; } else { match = rquickExpr.exec( selector ); } // Match html or make sure no context is specified for #id if ( match && ( match[ 1 ] || !context ) ) { // HANDLE: $(html) -> $(array) if ( match[ 1 ] ) { context = context instanceof jQuery ? context[ 0 ] : context; // scripts is true for back-compat // Intentionally let the error be thrown if parseHTML is not present jQuery.merge( this, jQuery.parseHTML( match[ 1 ], context && context.nodeType ? context.ownerDocument || context : document, true ) ); // HANDLE: $(html, props) if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { for ( match in context ) { // Properties of context are called as methods if possible if ( jQuery.isFunction( this[ match ] ) ) { this[ match ]( context[ match ] ); // ...and otherwise set as attributes } else { this.attr( match, context[ match ] ); } } } return this; // HANDLE: $(#id) } else { elem = document.getElementById( match[ 2 ] ); // Check parentNode to catch when Blackberry 4.6 returns // nodes that are no longer in the document #6963 if ( elem && elem.parentNode ) { // Handle the case where IE and Opera return items // by name instead of ID if ( elem.id !== match[ 2 ] ) { return rootjQuery.find( selector ); } // Otherwise, we inject the element directly into the jQuery object this.length = 1; this[ 0 ] = elem; } this.context = document; this.selector = selector; return this; } // HANDLE: $(expr, $(...)) } else if ( !context || context.jquery ) { return ( context || root ).find( selector ); // HANDLE: $(expr, context) // (which is just equivalent to: $(context).find(expr) } else { return this.constructor( context ).find( selector ); } // HANDLE: $(DOMElement) } else if ( selector.nodeType ) { this.context = this[ 0 ] = selector; this.length = 1; return this; // HANDLE: $(function) // Shortcut for document ready } else if ( jQuery.isFunction( selector ) ) { return typeof root.ready !== "undefined" ? root.ready( selector ) : // Execute immediately if ready is not present selector( jQuery ); } if ( selector.selector !== undefined ) { this.selector = selector.selector; this.context = selector.context; } return jQuery.makeArray( selector, this ); }; // Give the init function the jQuery prototype for later instantiation init.prototype = jQuery.fn; // Initialize central reference rootjQuery = jQuery( document ); var rparentsprev = /^(?:parents|prev(?:Until|All))/, // methods guaranteed to produce a unique set when starting from a unique set guaranteedUnique = { children: true, contents: true, next: true, prev: true }; jQuery.fn.extend( { has: function( target ) { var i, targets = jQuery( target, this ), len = targets.length; return this.filter( function() { for ( i = 0; i < len; i++ ) { if ( jQuery.contains( this, targets[ i ] ) ) { return true; } } } ); }, closest: function( selectors, context ) { var cur, i = 0, l = this.length, matched = [], pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? jQuery( selectors, context || this.context ) : 0; for ( ; i < l; i++ ) { for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { // Always skip document fragments if ( cur.nodeType < 11 && ( pos ? pos.index( cur ) > -1 : // Don't pass non-elements to Sizzle cur.nodeType === 1 && jQuery.find.matchesSelector( cur, selectors ) ) ) { matched.push( cur ); break; } } } return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); }, // Determine the position of an element within // the matched set of elements index: function( elem ) { // No argument, return index in parent if ( !elem ) { return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; } // index in selector if ( typeof elem === "string" ) { return jQuery.inArray( this[ 0 ], jQuery( elem ) ); } // Locate the position of the desired element return jQuery.inArray( // If it receives a jQuery object, the first element is used elem.jquery ? elem[ 0 ] : elem, this ); }, add: function( selector, context ) { return this.pushStack( jQuery.uniqueSort( jQuery.merge( this.get(), jQuery( selector, context ) ) ) ); }, addBack: function( selector ) { return this.add( selector == null ? this.prevObject : this.prevObject.filter( selector ) ); } } ); function sibling( cur, dir ) { do { cur = cur[ dir ]; } while ( cur && cur.nodeType !== 1 ); return cur; } jQuery.each( { parent: function( elem ) { var parent = elem.parentNode; return parent && parent.nodeType !== 11 ? parent : null; }, parents: function( elem ) { return dir( elem, "parentNode" ); }, parentsUntil: function( elem, i, until ) { return dir( elem, "parentNode", until ); }, next: function( elem ) { return sibling( elem, "nextSibling" ); }, prev: function( elem ) { return sibling( elem, "previousSibling" ); }, nextAll: function( elem ) { return dir( elem, "nextSibling" ); }, prevAll: function( elem ) { return dir( elem, "previousSibling" ); }, nextUntil: function( elem, i, until ) { return dir( elem, "nextSibling", until ); }, prevUntil: function( elem, i, until ) { return dir( elem, "previousSibling", until ); }, siblings: function( elem ) { return siblings( ( elem.parentNode || {} ).firstChild, elem ); }, children: function( elem ) { return siblings( elem.firstChild ); }, contents: function( elem ) { return jQuery.nodeName( elem, "iframe" ) ? elem.contentDocument || elem.contentWindow.document : jQuery.merge( [], elem.childNodes ); } }, function( name, fn ) { jQuery.fn[ name ] = function( until, selector ) { var ret = jQuery.map( this, fn, until ); if ( name.slice( -5 ) !== "Until" ) { selector = until; } if ( selector && typeof selector === "string" ) { ret = jQuery.filter( selector, ret ); } if ( this.length > 1 ) { // Remove duplicates if ( !guaranteedUnique[ name ] ) { ret = jQuery.uniqueSort( ret ); } // Reverse order for parents* and prev-derivatives if ( rparentsprev.test( name ) ) { ret = ret.reverse(); } } return this.pushStack( ret ); }; } ); var rnotwhite = ( /\S+/g ); // Convert String-formatted options into Object-formatted ones function createOptions( options ) { var object = {}; jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { object[ flag ] = true; } ); return object; } /* * Create a callback list using the following parameters: * * options: an optional list of space-separated options that will change how * the callback list behaves or a more traditional option object * * By default a callback list will act like an event callback list and can be * "fired" multiple times. * * Possible options: * * once: will ensure the callback list can only be fired once (like a Deferred) * * memory: will keep track of previous values and will call any callback added * after the list has been fired right away with the latest "memorized" * values (like a Deferred) * * unique: will ensure a callback can only be added once (no duplicate in the list) * * stopOnFalse: interrupt callings when a callback returns false * */ jQuery.Callbacks = function( options ) { // Convert options from String-formatted to Object-formatted if needed // (we check in cache first) options = typeof options === "string" ? createOptions( options ) : jQuery.extend( {}, options ); var // Flag to know if list is currently firing firing, // Last fire value for non-forgettable lists memory, // Flag to know if list was already fired fired, // Flag to prevent firing locked, // Actual callback list list = [], // Queue of execution data for repeatable lists queue = [], // Index of currently firing callback (modified by add/remove as needed) firingIndex = -1, // Fire callbacks fire = function() { // Enforce single-firing locked = options.once; // Execute callbacks for all pending executions, // respecting firingIndex overrides and runtime changes fired = firing = true; for ( ; queue.length; firingIndex = -1 ) { memory = queue.shift(); while ( ++firingIndex < list.length ) { // Run callback and check for early termination if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && options.stopOnFalse ) { // Jump to end and forget the data so .add doesn't re-fire firingIndex = list.length; memory = false; } } } // Forget the data if we're done with it if ( !options.memory ) { memory = false; } firing = false; // Clean up if we're done firing for good if ( locked ) { // Keep an empty list if we have data for future add calls if ( memory ) { list = []; // Otherwise, this object is spent } else { list = ""; } } }, // Actual Callbacks object self = { // Add a callback or a collection of callbacks to the list add: function() { if ( list ) { // If we have memory from a past run, we should fire after adding if ( memory && !firing ) { firingIndex = list.length - 1; queue.push( memory ); } ( function add( args ) { jQuery.each( args, function( _, arg ) { if ( jQuery.isFunction( arg ) ) { if ( !options.unique || !self.has( arg ) ) { list.push( arg ); } } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) { // Inspect recursively add( arg ); } } ); } )( arguments ); if ( memory && !firing ) { fire(); } } return this; }, // Remove a callback from the list remove: function() { jQuery.each( arguments, function( _, arg ) { var index; while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { list.splice( index, 1 ); // Handle firing indexes if ( index <= firingIndex ) { firingIndex--; } } } ); return this; }, // Check if a given callback is in the list. // If no argument is given, return whether or not list has callbacks attached. has: function( fn ) { return fn ? jQuery.inArray( fn, list ) > -1 : list.length > 0; }, // Remove all callbacks from the list empty: function() { if ( list ) { list = []; } return this; }, // Disable .fire and .add // Abort any current/pending executions // Clear all callbacks and values disable: function() { locked = queue = []; list = memory = ""; return this; }, disabled: function() { return !list; }, // Disable .fire // Also disable .add unless we have memory (since it would have no effect) // Abort any pending executions lock: function() { locked = true; if ( !memory ) { self.disable(); } return this; }, locked: function() { return !!locked; }, // Call all callbacks with the given context and arguments fireWith: function( context, args ) { if ( !locked ) { args = args || []; args = [ context, args.slice ? args.slice() : args ]; queue.push( args ); if ( !firing ) { fire(); } } return this; }, // Call all the callbacks with the given arguments fire: function() { self.fireWith( this, arguments ); return this; }, // To know if the callbacks have already been called at least once fired: function() { return !!fired; } }; return self; }; jQuery.extend( { Deferred: function( func ) { var tuples = [ // action, add listener, listener list, final state [ "resolve", "done", jQuery.Callbacks( "once memory" ), "resolved" ], [ "reject", "fail", jQuery.Callbacks( "once memory" ), "rejected" ], [ "notify", "progress", jQuery.Callbacks( "memory" ) ] ], state = "pending", promise = { state: function() { return state; }, always: function() { deferred.done( arguments ).fail( arguments ); return this; }, then: function( /* fnDone, fnFail, fnProgress */ ) { var fns = arguments; return jQuery.Deferred( function( newDefer ) { jQuery.each( tuples, function( i, tuple ) { var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; // deferred[ done | fail | progress ] for forwarding actions to newDefer deferred[ tuple[ 1 ] ]( function() { var returned = fn && fn.apply( this, arguments ); if ( returned && jQuery.isFunction( returned.promise ) ) { returned.promise() .progress( newDefer.notify ) .done( newDefer.resolve ) .fail( newDefer.reject ); } else { newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments ); } } ); } ); fns = null; } ).promise(); }, // Get a promise for this deferred // If obj is provided, the promise aspect is added to the object promise: function( obj ) { return obj != null ? jQuery.extend( obj, promise ) : promise; } }, deferred = {}; // Keep pipe for back-compat promise.pipe = promise.then; // Add list-specific methods jQuery.each( tuples, function( i, tuple ) { var list = tuple[ 2 ], stateString = tuple[ 3 ]; // promise[ done | fail | progress ] = list.add promise[ tuple[ 1 ] ] = list.add; // Handle state if ( stateString ) { list.add( function() { // state = [ resolved | rejected ] state = stateString; // [ reject_list | resolve_list ].disable; progress_list.lock }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); } // deferred[ resolve | reject | notify ] deferred[ tuple[ 0 ] ] = function() { deferred[ tuple[ 0 ] + "With" ]( this === deferred ? promise : this, arguments ); return this; }; deferred[ tuple[ 0 ] + "With" ] = list.fireWith; } ); // Make the deferred a promise promise.promise( deferred ); // Call given func if any if ( func ) { func.call( deferred, deferred ); } // All done! return deferred; }, // Deferred helper when: function( subordinate /* , ..., subordinateN */ ) { var i = 0, resolveValues = slice.call( arguments ), length = resolveValues.length, // the count of uncompleted subordinates remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, // the master Deferred. // If resolveValues consist of only a single Deferred, just use that. deferred = remaining === 1 ? subordinate : jQuery.Deferred(), // Update function for both resolve and progress values updateFunc = function( i, contexts, values ) { return function( value ) { contexts[ i ] = this; values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; if ( values === progressValues ) { deferred.notifyWith( contexts, values ); } else if ( !( --remaining ) ) { deferred.resolveWith( contexts, values ); } }; }, progressValues, progressContexts, resolveContexts; // add listeners to Deferred subordinates; treat others as resolved if ( length > 1 ) { progressValues = new Array( length ); progressContexts = new Array( length ); resolveContexts = new Array( length ); for ( ; i < length; i++ ) { if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { resolveValues[ i ].promise() .progress( updateFunc( i, progressContexts, progressValues ) ) .done( updateFunc( i, resolveContexts, resolveValues ) ) .fail( deferred.reject ); } else { --remaining; } } } // if we're not waiting on anything, resolve the master if ( !remaining ) { deferred.resolveWith( resolveContexts, resolveValues ); } return deferred.promise(); } } ); // The deferred used on DOM ready var readyList; jQuery.fn.ready = function( fn ) { // Add the callback jQuery.ready.promise().done( fn ); return this; }; jQuery.extend( { // Is the DOM ready to be used? Set to true once it occurs. isReady: false, // A counter to track how many items to wait for before // the ready event fires. See #6781 readyWait: 1, // Hold (or release) the ready event holdReady: function( hold ) { if ( hold ) { jQuery.readyWait++; } else { jQuery.ready( true ); } }, // Handle when the DOM is ready ready: function( wait ) { // Abort if there are pending holds or we're already ready if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { return; } // Remember that the DOM is ready jQuery.isReady = true; // If a normal DOM Ready event fired, decrement, and wait if need be if ( wait !== true && --jQuery.readyWait > 0 ) { return; } // If there are functions bound, to execute readyList.resolveWith( document, [ jQuery ] ); // Trigger any bound ready events if ( jQuery.fn.triggerHandler ) { jQuery( document ).triggerHandler( "ready" ); jQuery( document ).off( "ready" ); } } } ); /** * Clean-up method for dom ready events */ function detach() { if ( document.addEventListener ) { document.removeEventListener( "DOMContentLoaded", completed ); window.removeEventListener( "load", completed ); } else { document.detachEvent( "onreadystatechange", completed ); window.detachEvent( "onload", completed ); } } /** * The ready event handler and self cleanup method */ function completed() { // readyState === "complete" is good enough for us to call the dom ready in oldIE if ( document.addEventListener || window.event.type === "load" || document.readyState === "complete" ) { detach(); jQuery.ready(); } } jQuery.ready.promise = function( obj ) { if ( !readyList ) { readyList = jQuery.Deferred(); // Catch cases where $(document).ready() is called // after the browser event has already occurred. // Support: IE6-10 // Older IE sometimes signals "interactive" too soon if ( document.readyState === "complete" || ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { // Handle it asynchronously to allow scripts the opportunity to delay ready window.setTimeout( jQuery.ready ); // Standards-based browsers support DOMContentLoaded } else if ( document.addEventListener ) { // Use the handy event callback document.addEventListener( "DOMContentLoaded", completed ); // A fallback to window.onload, that will always work window.addEventListener( "load", completed ); // If IE event model is used } else { // Ensure firing before onload, maybe late but safe also for iframes document.attachEvent( "onreadystatechange", completed ); // A fallback to window.onload, that will always work window.attachEvent( "onload", completed ); // If IE and not a frame // continually check to see if the document is ready var top = false; try { top = window.frameElement == null && document.documentElement; } catch ( e ) {} if ( top && top.doScroll ) { ( function doScrollCheck() { if ( !jQuery.isReady ) { try { // Use the trick by Diego Perini // http://javascript.nwbox.com/IEContentLoaded/ top.doScroll( "left" ); } catch ( e ) { return window.setTimeout( doScrollCheck, 50 ); } // detach all dom ready events detach(); // and execute any waiting functions jQuery.ready(); } } )(); } } } return readyList.promise( obj ); }; // Kick off the DOM ready check even if the user does not jQuery.ready.promise(); // Support: IE<9 // Iteration over object's inherited properties before its own var i; for ( i in jQuery( support ) ) { break; } support.ownFirst = i === "0"; // Note: most support tests are defined in their respective modules. // false until the test is run support.inlineBlockNeedsLayout = false; // Execute ASAP in case we need to set body.style.zoom jQuery( function() { // Minified: var a,b,c,d var val, div, body, container; body = document.getElementsByTagName( "body" )[ 0 ]; if ( !body || !body.style ) { // Return for frameset docs that don't have a body return; } // Setup div = document.createElement( "div" ); container = document.createElement( "div" ); container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px"; body.appendChild( container ).appendChild( div ); if ( typeof div.style.zoom !== "undefined" ) { // Support: IE<8 // Check if natively block-level elements act like inline-block // elements when setting their display to 'inline' and giving // them layout div.style.cssText = "display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1"; support.inlineBlockNeedsLayout = val = div.offsetWidth === 3; if ( val ) { // Prevent IE 6 from affecting layout for positioned elements #11048 // Prevent IE from shrinking the body in IE 7 mode #12869 // Support: IE<8 body.style.zoom = 1; } } body.removeChild( container ); } ); ( function() { var div = document.createElement( "div" ); // Support: IE<9 support.deleteExpando = true; try { delete div.test; } catch ( e ) { support.deleteExpando = false; } // Null elements to avoid leaks in IE. div = null; } )(); var acceptData = function( elem ) { var noData = jQuery.noData[ ( elem.nodeName + " " ).toLowerCase() ], nodeType = +elem.nodeType || 1; // Do not set data on non-element DOM nodes because it will not be cleared (#8335). return nodeType !== 1 && nodeType !== 9 ? false : // Nodes accept data unless otherwise specified; rejection can be conditional !noData || noData !== true && elem.getAttribute( "classid" ) === noData; }; var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, rmultiDash = /([A-Z])/g; function dataAttr( elem, key, data ) { // If nothing was found internally, try to fetch any // data from the HTML5 data-* attribute if ( data === undefined && elem.nodeType === 1 ) { var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); data = elem.getAttribute( name ); if ( typeof data === "string" ) { try { data = data === "true" ? true : data === "false" ? false : data === "null" ? null : // Only convert to a number if it doesn't change the string +data + "" === data ? +data : rbrace.test( data ) ? jQuery.parseJSON( data ) : data; } catch ( e ) {} // Make sure we set the data so it isn't changed later jQuery.data( elem, key, data ); } else { data = undefined; } } return data; } // checks a cache object for emptiness function isEmptyDataObject( obj ) { var name; for ( name in obj ) { // if the public data object is empty, the private is still empty if ( name === "data" && jQuery.isEmptyObject( obj[ name ] ) ) { continue; } if ( name !== "toJSON" ) { return false; } } return true; } function internalData( elem, name, data, pvt /* Internal Use Only */ ) { if ( !acceptData( elem ) ) { return; } var ret, thisCache, internalKey = jQuery.expando, // We have to handle DOM nodes and JS objects differently because IE6-7 // can't GC object references properly across the DOM-JS boundary isNode = elem.nodeType, // Only DOM nodes need the global jQuery cache; JS object data is // attached directly to the object so GC can occur automatically cache = isNode ? jQuery.cache : elem, // Only defining an ID for JS objects if its cache already exists allows // the code to shortcut on the same path as a DOM node with no cache id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey; // Avoid doing any more work than we need to when trying to get data on an // object that has no data at all if ( ( !id || !cache[ id ] || ( !pvt && !cache[ id ].data ) ) && data === undefined && typeof name === "string" ) { return; } if ( !id ) { // Only DOM nodes need a new unique ID for each element since their data // ends up in the global cache if ( isNode ) { id = elem[ internalKey ] = deletedIds.pop() || jQuery.guid++; } else { id = internalKey; } } if ( !cache[ id ] ) { // Avoid exposing jQuery metadata on plain JS objects when the object // is serialized using JSON.stringify cache[ id ] = isNode ? {} : { toJSON: jQuery.noop }; } // An object can be passed to jQuery.data instead of a key/value pair; this gets // shallow copied over onto the existing cache if ( typeof name === "object" || typeof name === "function" ) { if ( pvt ) { cache[ id ] = jQuery.extend( cache[ id ], name ); } else { cache[ id ].data = jQuery.extend( cache[ id ].data, name ); } } thisCache = cache[ id ]; // jQuery data() is stored in a separate object inside the object's internal data // cache in order to avoid key collisions between internal data and user-defined // data. if ( !pvt ) { if ( !thisCache.data ) { thisCache.data = {}; } thisCache = thisCache.data; } if ( data !== undefined ) { thisCache[ jQuery.camelCase( name ) ] = data; } // Check for both converted-to-camel and non-converted data property names // If a data property was specified if ( typeof name === "string" ) { // First Try to find as-is property data ret = thisCache[ name ]; // Test for null|undefined property data if ( ret == null ) { // Try to find the camelCased property ret = thisCache[ jQuery.camelCase( name ) ]; } } else { ret = thisCache; } return ret; } function internalRemoveData( elem, name, pvt ) { if ( !acceptData( elem ) ) { return; } var thisCache, i, isNode = elem.nodeType, // See jQuery.data for more information cache = isNode ? jQuery.cache : elem, id = isNode ? elem[ jQuery.expando ] : jQuery.expando; // If there is already no cache entry for this object, there is no // purpose in continuing if ( !cache[ id ] ) { return; } if ( name ) { thisCache = pvt ? cache[ id ] : cache[ id ].data; if ( thisCache ) { // Support array or space separated string names for data keys if ( !jQuery.isArray( name ) ) { // try the string as a key before any manipulation if ( name in thisCache ) { name = [ name ]; } else { // split the camel cased version by spaces unless a key with the spaces exists name = jQuery.camelCase( name ); if ( name in thisCache ) { name = [ name ]; } else { name = name.split( " " ); } } } else { // If "name" is an array of keys... // When data is initially created, via ("key", "val") signature, // keys will be converted to camelCase. // Since there is no way to tell _how_ a key was added, remove // both plain key and camelCase key. #12786 // This will only penalize the array argument path. name = name.concat( jQuery.map( name, jQuery.camelCase ) ); } i = name.length; while ( i-- ) { delete thisCache[ name[ i ] ]; } // If there is no data left in the cache, we want to continue // and let the cache object itself get destroyed if ( pvt ? !isEmptyDataObject( thisCache ) : !jQuery.isEmptyObject( thisCache ) ) { return; } } } // See jQuery.data for more information if ( !pvt ) { delete cache[ id ].data; // Don't destroy the parent cache unless the internal data object // had been the only thing left in it if ( !isEmptyDataObject( cache[ id ] ) ) { return; } } // Destroy the cache if ( isNode ) { jQuery.cleanData( [ elem ], true ); // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080) /* jshint eqeqeq: false */ } else if ( support.deleteExpando || cache != cache.window ) { /* jshint eqeqeq: true */ delete cache[ id ]; // When all else fails, undefined } else { cache[ id ] = undefined; } } jQuery.extend( { cache: {}, // The following elements (space-suffixed to avoid Object.prototype collisions) // throw uncatchable exceptions if you attempt to set expando properties noData: { "applet ": true, "embed ": true, // ...but Flash objects (which have this classid) *can* handle expandos "object ": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" }, hasData: function( elem ) { elem = elem.nodeType ? jQuery.cache[ elem[ jQuery.expando ] ] : elem[ jQuery.expando ]; return !!elem && !isEmptyDataObject( elem ); }, data: function( elem, name, data ) { return internalData( elem, name, data ); }, removeData: function( elem, name ) { return internalRemoveData( elem, name ); }, // For internal use only. _data: function( elem, name, data ) { return internalData( elem, name, data, true ); }, _removeData: function( elem, name ) { return internalRemoveData( elem, name, true ); } } ); jQuery.fn.extend( { data: function( key, value ) { var i, name, data, elem = this[ 0 ], attrs = elem && elem.attributes; // Special expections of .data basically thwart jQuery.access, // so implement the relevant behavior ourselves // Gets all values if ( key === undefined ) { if ( this.length ) { data = jQuery.data( elem ); if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) { i = attrs.length; while ( i-- ) { // Support: IE11+ // The attrs elements can be null (#14894) if ( attrs[ i ] ) { name = attrs[ i ].name; if ( name.indexOf( "data-" ) === 0 ) { name = jQuery.camelCase( name.slice( 5 ) ); dataAttr( elem, name, data[ name ] ); } } } jQuery._data( elem, "parsedAttrs", true ); } } return data; } // Sets multiple values if ( typeof key === "object" ) { return this.each( function() { jQuery.data( this, key ); } ); } return arguments.length > 1 ? // Sets one value this.each( function() { jQuery.data( this, key, value ); } ) : // Gets one value // Try to fetch any internally stored data first elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : undefined; }, removeData: function( key ) { return this.each( function() { jQuery.removeData( this, key ); } ); } } ); jQuery.extend( { queue: function( elem, type, data ) { var queue; if ( elem ) { type = ( type || "fx" ) + "queue"; queue = jQuery._data( elem, type ); // Speed up dequeue by getting out quickly if this is just a lookup if ( data ) { if ( !queue || jQuery.isArray( data ) ) { queue = jQuery._data( elem, type, jQuery.makeArray( data ) ); } else { queue.push( data ); } } return queue || []; } }, dequeue: function( elem, type ) { type = type || "fx"; var queue = jQuery.queue( elem, type ), startLength = queue.length, fn = queue.shift(), hooks = jQuery._queueHooks( elem, type ), next = function() { jQuery.dequeue( elem, type ); }; // If the fx queue is dequeued, always remove the progress sentinel if ( fn === "inprogress" ) { fn = queue.shift(); startLength--; } if ( fn ) { // Add a progress sentinel to prevent the fx queue from being // automatically dequeued if ( type === "fx" ) { queue.unshift( "inprogress" ); } // clear up the last queue stop function delete hooks.stop; fn.call( elem, next, hooks ); } if ( !startLength && hooks ) { hooks.empty.fire(); } }, // not intended for public consumption - generates a queueHooks object, // or returns the current one _queueHooks: function( elem, type ) { var key = type + "queueHooks"; return jQuery._data( elem, key ) || jQuery._data( elem, key, { empty: jQuery.Callbacks( "once memory" ).add( function() { jQuery._removeData( elem, type + "queue" ); jQuery._removeData( elem, key ); } ) } ); } } ); jQuery.fn.extend( { queue: function( type, data ) { var setter = 2; if ( typeof type !== "string" ) { data = type; type = "fx"; setter--; } if ( arguments.length < setter ) { return jQuery.queue( this[ 0 ], type ); } return data === undefined ? this : this.each( function() { var queue = jQuery.queue( this, type, data ); // ensure a hooks for this queue jQuery._queueHooks( this, type ); if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { jQuery.dequeue( this, type ); } } ); }, dequeue: function( type ) { return this.each( function() { jQuery.dequeue( this, type ); } ); }, clearQueue: function( type ) { return this.queue( type || "fx", [] ); }, // Get a promise resolved when queues of a certain type // are emptied (fx is the type by default) promise: function( type, obj ) { var tmp, count = 1, defer = jQuery.Deferred(), elements = this, i = this.length, resolve = function() { if ( !( --count ) ) { defer.resolveWith( elements, [ elements ] ); } }; if ( typeof type !== "string" ) { obj = type; type = undefined; } type = type || "fx"; while ( i-- ) { tmp = jQuery._data( elements[ i ], type + "queueHooks" ); if ( tmp && tmp.empty ) { count++; tmp.empty.add( resolve ); } } resolve(); return defer.promise( obj ); } } ); ( function() { var shrinkWrapBlocksVal; support.shrinkWrapBlocks = function() { if ( shrinkWrapBlocksVal != null ) { return shrinkWrapBlocksVal; } // Will be changed later if needed. shrinkWrapBlocksVal = false; // Minified: var b,c,d var div, body, container; body = document.getElementsByTagName( "body" )[ 0 ]; if ( !body || !body.style ) { // Test fired too early or in an unsupported environment, exit. return; } // Setup div = document.createElement( "div" ); container = document.createElement( "div" ); container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px"; body.appendChild( container ).appendChild( div ); // Support: IE6 // Check if elements with layout shrink-wrap their children if ( typeof div.style.zoom !== "undefined" ) { // Reset CSS: box-sizing; display; margin; border div.style.cssText = // Support: Firefox<29, Android 2.3 // Vendor-prefix box-sizing "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" + "box-sizing:content-box;display:block;margin:0;border:0;" + "padding:1px;width:1px;zoom:1"; div.appendChild( document.createElement( "div" ) ).style.width = "5px"; shrinkWrapBlocksVal = div.offsetWidth !== 3; } body.removeChild( container ); return shrinkWrapBlocksVal; }; } )(); var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; var isHidden = function( elem, el ) { // isHidden might be called from jQuery#filter function; // in that case, element will be second argument elem = el || elem; return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); }; function adjustCSS( elem, prop, valueParts, tween ) { var adjusted, scale = 1, maxIterations = 20, currentValue = tween ? function() { return tween.cur(); } : function() { return jQuery.css( elem, prop, "" ); }, initial = currentValue(), unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), // Starting value computation is required for potential unit mismatches initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && rcssNum.exec( jQuery.css( elem, prop ) ); if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { // Trust units reported by jQuery.css unit = unit || initialInUnit[ 3 ]; // Make sure we update the tween properties later on valueParts = valueParts || []; // Iteratively approximate from a nonzero starting point initialInUnit = +initial || 1; do { // If previous iteration zeroed out, double until we get *something*. // Use string for doubling so we don't accidentally see scale as unchanged below scale = scale || ".5"; // Adjust and apply initialInUnit = initialInUnit / scale; jQuery.style( elem, prop, initialInUnit + unit ); // Update scale, tolerating zero or NaN from tween.cur() // Break the loop if scale is unchanged or perfect, or if we've just had enough. } while ( scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations ); } if ( valueParts ) { initialInUnit = +initialInUnit || +initial || 0; // Apply relative offset (+=/-=) if specified adjusted = valueParts[ 1 ] ? initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : +valueParts[ 2 ]; if ( tween ) { tween.unit = unit; tween.start = initialInUnit; tween.end = adjusted; } } return adjusted; } // Multifunctional method to get and set values of a collection // The value/s can optionally be executed if it's a function var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { var i = 0, length = elems.length, bulk = key == null; // Sets many values if ( jQuery.type( key ) === "object" ) { chainable = true; for ( i in key ) { access( elems, fn, i, key[ i ], true, emptyGet, raw ); } // Sets one value } else if ( value !== undefined ) { chainable = true; if ( !jQuery.isFunction( value ) ) { raw = true; } if ( bulk ) { // Bulk operations run against the entire set if ( raw ) { fn.call( elems, value ); fn = null; // ...except when executing function values } else { bulk = fn; fn = function( elem, key, value ) { return bulk.call( jQuery( elem ), value ); }; } } if ( fn ) { for ( ; i < length; i++ ) { fn( elems[ i ], key, raw ? value : value.call( elems[ i ], i, fn( elems[ i ], key ) ) ); } } } return chainable ? elems : // Gets bulk ? fn.call( elems ) : length ? fn( elems[ 0 ], key ) : emptyGet; }; var rcheckableType = ( /^(?:checkbox|radio)$/i ); var rtagName = ( /<([\w:-]+)/ ); var rscriptType = ( /^$|\/(?:java|ecma)script/i ); var rleadingWhitespace = ( /^\s+/ ); var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|" + "details|dialog|figcaption|figure|footer|header|hgroup|main|" + "mark|meter|nav|output|picture|progress|section|summary|template|time|video"; function createSafeFragment( document ) { var list = nodeNames.split( "|" ), safeFrag = document.createDocumentFragment(); if ( safeFrag.createElement ) { while ( list.length ) { safeFrag.createElement( list.pop() ); } } return safeFrag; } ( function() { var div = document.createElement( "div" ), fragment = document.createDocumentFragment(), input = document.createElement( "input" ); // Setup div.innerHTML = "
      a"; // IE strips leading whitespace when .innerHTML is used support.leadingWhitespace = div.firstChild.nodeType === 3; // Make sure that tbody elements aren't automatically inserted // IE will insert them into empty tables support.tbody = !div.getElementsByTagName( "tbody" ).length; // Make sure that link elements get serialized correctly by innerHTML // This requires a wrapper element in IE support.htmlSerialize = !!div.getElementsByTagName( "link" ).length; // Makes sure cloning an html5 element does not cause problems // Where outerHTML is undefined, this still works support.html5Clone = document.createElement( "nav" ).cloneNode( true ).outerHTML !== "<:nav>"; // Check if a disconnected checkbox will retain its checked // value of true after appended to the DOM (IE6/7) input.type = "checkbox"; input.checked = true; fragment.appendChild( input ); support.appendChecked = input.checked; // Make sure textarea (and checkbox) defaultValue is properly cloned // Support: IE6-IE11+ div.innerHTML = ""; support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; // #11217 - WebKit loses check when the name is after the checked attribute fragment.appendChild( div ); // Support: Windows Web Apps (WWA) // `name` and `type` must use .setAttribute for WWA (#14901) input = document.createElement( "input" ); input.setAttribute( "type", "radio" ); input.setAttribute( "checked", "checked" ); input.setAttribute( "name", "t" ); div.appendChild( input ); // Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3 // old WebKit doesn't clone checked state correctly in fragments support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; // Support: IE<9 // Cloned elements keep attachEvent handlers, we use addEventListener on IE9+ support.noCloneEvent = !!div.addEventListener; // Support: IE<9 // Since attributes and properties are the same in IE, // cleanData must set properties to undefined rather than use removeAttribute div[ jQuery.expando ] = 1; support.attributes = !div.getAttribute( jQuery.expando ); } )(); // We have to close these tags to support XHTML (#13200) var wrapMap = { option: [ 1, "" ], legend: [ 1, "
      ", "
      " ], area: [ 1, "", "" ], // Support: IE8 param: [ 1, "", "" ], thead: [ 1, "", "
      " ], tr: [ 2, "", "
      " ], col: [ 2, "", "
      " ], td: [ 3, "", "
      " ], // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags, // unless wrapped in a div with non-breaking characters in front of it. _default: support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X
      ", "
      " ] }; // Support: IE8-IE9 wrapMap.optgroup = wrapMap.option; wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; wrapMap.th = wrapMap.td; function getAll( context, tag ) { var elems, elem, i = 0, found = typeof context.getElementsByTagName !== "undefined" ? context.getElementsByTagName( tag || "*" ) : typeof context.querySelectorAll !== "undefined" ? context.querySelectorAll( tag || "*" ) : undefined; if ( !found ) { for ( found = [], elems = context.childNodes || context; ( elem = elems[ i ] ) != null; i++ ) { if ( !tag || jQuery.nodeName( elem, tag ) ) { found.push( elem ); } else { jQuery.merge( found, getAll( elem, tag ) ); } } } return tag === undefined || tag && jQuery.nodeName( context, tag ) ? jQuery.merge( [ context ], found ) : found; } // Mark scripts as having already been evaluated function setGlobalEval( elems, refElements ) { var elem, i = 0; for ( ; ( elem = elems[ i ] ) != null; i++ ) { jQuery._data( elem, "globalEval", !refElements || jQuery._data( refElements[ i ], "globalEval" ) ); } } var rhtml = /<|&#?\w+;/, rtbody = / from table fragments if ( !support.tbody ) { // String was a , *may* have spurious elem = tag === "table" && !rtbody.test( elem ) ? tmp.firstChild : // String was a bare or wrap[ 1 ] === "
      " && !rtbody.test( elem ) ? tmp : 0; j = elem && elem.childNodes.length; while ( j-- ) { if ( jQuery.nodeName( ( tbody = elem.childNodes[ j ] ), "tbody" ) && !tbody.childNodes.length ) { elem.removeChild( tbody ); } } } jQuery.merge( nodes, tmp.childNodes ); // Fix #12392 for WebKit and IE > 9 tmp.textContent = ""; // Fix #12392 for oldIE while ( tmp.firstChild ) { tmp.removeChild( tmp.firstChild ); } // Remember the top-level container for proper cleanup tmp = safe.lastChild; } } } // Fix #11356: Clear elements from fragment if ( tmp ) { safe.removeChild( tmp ); } // Reset defaultChecked for any radios and checkboxes // about to be appended to the DOM in IE 6/7 (#8060) if ( !support.appendChecked ) { jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked ); } i = 0; while ( ( elem = nodes[ i++ ] ) ) { // Skip elements already in the context collection (trac-4087) if ( selection && jQuery.inArray( elem, selection ) > -1 ) { if ( ignored ) { ignored.push( elem ); } continue; } contains = jQuery.contains( elem.ownerDocument, elem ); // Append to fragment tmp = getAll( safe.appendChild( elem ), "script" ); // Preserve script evaluation history if ( contains ) { setGlobalEval( tmp ); } // Capture executables if ( scripts ) { j = 0; while ( ( elem = tmp[ j++ ] ) ) { if ( rscriptType.test( elem.type || "" ) ) { scripts.push( elem ); } } } } tmp = null; return safe; } ( function() { var i, eventName, div = document.createElement( "div" ); // Support: IE<9 (lack submit/change bubble), Firefox (lack focus(in | out) events) for ( i in { submit: true, change: true, focusin: true } ) { eventName = "on" + i; if ( !( support[ i ] = eventName in window ) ) { // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP) div.setAttribute( eventName, "t" ); support[ i ] = div.attributes[ eventName ].expando === false; } } // Null elements to avoid leaks in IE. div = null; } )(); var rformElems = /^(?:input|select|textarea)$/i, rkeyEvent = /^key/, rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, rtypenamespace = /^([^.]*)(?:\.(.+)|)/; function returnTrue() { return true; } function returnFalse() { return false; } // Support: IE9 // See #13393 for more info function safeActiveElement() { try { return document.activeElement; } catch ( err ) { } } function on( elem, types, selector, data, fn, one ) { var origFn, type; // Types can be a map of types/handlers if ( typeof types === "object" ) { // ( types-Object, selector, data ) if ( typeof selector !== "string" ) { // ( types-Object, data ) data = data || selector; selector = undefined; } for ( type in types ) { on( elem, type, selector, data, types[ type ], one ); } return elem; } if ( data == null && fn == null ) { // ( types, fn ) fn = selector; data = selector = undefined; } else if ( fn == null ) { if ( typeof selector === "string" ) { // ( types, selector, fn ) fn = data; data = undefined; } else { // ( types, data, fn ) fn = data; data = selector; selector = undefined; } } if ( fn === false ) { fn = returnFalse; } else if ( !fn ) { return elem; } if ( one === 1 ) { origFn = fn; fn = function( event ) { // Can use an empty set, since event contains the info jQuery().off( event ); return origFn.apply( this, arguments ); }; // Use same guid so caller can remove using origFn fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); } return elem.each( function() { jQuery.event.add( this, types, fn, data, selector ); } ); } /* * Helper functions for managing events -- not part of the public interface. * Props to Dean Edwards' addEvent library for many of the ideas. */ jQuery.event = { global: {}, add: function( elem, types, handler, data, selector ) { var tmp, events, t, handleObjIn, special, eventHandle, handleObj, handlers, type, namespaces, origType, elemData = jQuery._data( elem ); // Don't attach events to noData or text/comment nodes (but allow plain objects) if ( !elemData ) { return; } // Caller can pass in an object of custom data in lieu of the handler if ( handler.handler ) { handleObjIn = handler; handler = handleObjIn.handler; selector = handleObjIn.selector; } // Make sure that the handler has a unique ID, used to find/remove it later if ( !handler.guid ) { handler.guid = jQuery.guid++; } // Init the element's event structure and main handler, if this is the first if ( !( events = elemData.events ) ) { events = elemData.events = {}; } if ( !( eventHandle = elemData.handle ) ) { eventHandle = elemData.handle = function( e ) { // Discard the second event of a jQuery.event.trigger() and // when an event is called after a page has unloaded return typeof jQuery !== "undefined" && ( !e || jQuery.event.triggered !== e.type ) ? jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : undefined; }; // Add elem as a property of the handle fn to prevent a memory leak // with IE non-native events eventHandle.elem = elem; } // Handle multiple events separated by a space types = ( types || "" ).match( rnotwhite ) || [ "" ]; t = types.length; while ( t-- ) { tmp = rtypenamespace.exec( types[ t ] ) || []; type = origType = tmp[ 1 ]; namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); // There *must* be a type, no attaching namespace-only handlers if ( !type ) { continue; } // If event changes its type, use the special event handlers for the changed type special = jQuery.event.special[ type ] || {}; // If selector defined, determine special event api type, otherwise given type type = ( selector ? special.delegateType : special.bindType ) || type; // Update special based on newly reset type special = jQuery.event.special[ type ] || {}; // handleObj is passed to all event handlers handleObj = jQuery.extend( { type: type, origType: origType, data: data, handler: handler, guid: handler.guid, selector: selector, needsContext: selector && jQuery.expr.match.needsContext.test( selector ), namespace: namespaces.join( "." ) }, handleObjIn ); // Init the event handler queue if we're the first if ( !( handlers = events[ type ] ) ) { handlers = events[ type ] = []; handlers.delegateCount = 0; // Only use addEventListener/attachEvent if the special events handler returns false if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { // Bind the global event handler to the element if ( elem.addEventListener ) { elem.addEventListener( type, eventHandle, false ); } else if ( elem.attachEvent ) { elem.attachEvent( "on" + type, eventHandle ); } } } if ( special.add ) { special.add.call( elem, handleObj ); if ( !handleObj.handler.guid ) { handleObj.handler.guid = handler.guid; } } // Add to the element's handler list, delegates in front if ( selector ) { handlers.splice( handlers.delegateCount++, 0, handleObj ); } else { handlers.push( handleObj ); } // Keep track of which events have ever been used, for event optimization jQuery.event.global[ type ] = true; } // Nullify elem to prevent memory leaks in IE elem = null; }, // Detach an event or set of events from an element remove: function( elem, types, handler, selector, mappedTypes ) { var j, handleObj, tmp, origCount, t, events, special, handlers, type, namespaces, origType, elemData = jQuery.hasData( elem ) && jQuery._data( elem ); if ( !elemData || !( events = elemData.events ) ) { return; } // Once for each type.namespace in types; type may be omitted types = ( types || "" ).match( rnotwhite ) || [ "" ]; t = types.length; while ( t-- ) { tmp = rtypenamespace.exec( types[ t ] ) || []; type = origType = tmp[ 1 ]; namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); // Unbind all events (on this namespace, if provided) for the element if ( !type ) { for ( type in events ) { jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); } continue; } special = jQuery.event.special[ type ] || {}; type = ( selector ? special.delegateType : special.bindType ) || type; handlers = events[ type ] || []; tmp = tmp[ 2 ] && new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); // Remove matching events origCount = j = handlers.length; while ( j-- ) { handleObj = handlers[ j ]; if ( ( mappedTypes || origType === handleObj.origType ) && ( !handler || handler.guid === handleObj.guid ) && ( !tmp || tmp.test( handleObj.namespace ) ) && ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { handlers.splice( j, 1 ); if ( handleObj.selector ) { handlers.delegateCount--; } if ( special.remove ) { special.remove.call( elem, handleObj ); } } } // Remove generic event handler if we removed something and no more handlers exist // (avoids potential for endless recursion during removal of special event handlers) if ( origCount && !handlers.length ) { if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { jQuery.removeEvent( elem, type, elemData.handle ); } delete events[ type ]; } } // Remove the expando if it's no longer used if ( jQuery.isEmptyObject( events ) ) { delete elemData.handle; // removeData also checks for emptiness and clears the expando if empty // so use it instead of delete jQuery._removeData( elem, "events" ); } }, trigger: function( event, data, elem, onlyHandlers ) { var handle, ontype, cur, bubbleType, special, tmp, i, eventPath = [ elem || document ], type = hasOwn.call( event, "type" ) ? event.type : event, namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; cur = tmp = elem = elem || document; // Don't do events on text and comment nodes if ( elem.nodeType === 3 || elem.nodeType === 8 ) { return; } // focus/blur morphs to focusin/out; ensure we're not firing them right now if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { return; } if ( type.indexOf( "." ) > -1 ) { // Namespaced trigger; create a regexp to match event type in handle() namespaces = type.split( "." ); type = namespaces.shift(); namespaces.sort(); } ontype = type.indexOf( ":" ) < 0 && "on" + type; // Caller can pass in a jQuery.Event object, Object, or just an event type string event = event[ jQuery.expando ] ? event : new jQuery.Event( type, typeof event === "object" && event ); // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) event.isTrigger = onlyHandlers ? 2 : 3; event.namespace = namespaces.join( "." ); event.rnamespace = event.namespace ? new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : null; // Clean up the event in case it is being reused event.result = undefined; if ( !event.target ) { event.target = elem; } // Clone any incoming data and prepend the event, creating the handler arg list data = data == null ? [ event ] : jQuery.makeArray( data, [ event ] ); // Allow special events to draw outside the lines special = jQuery.event.special[ type ] || {}; if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { return; } // Determine event propagation path in advance, per W3C events spec (#9951) // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { bubbleType = special.delegateType || type; if ( !rfocusMorph.test( bubbleType + type ) ) { cur = cur.parentNode; } for ( ; cur; cur = cur.parentNode ) { eventPath.push( cur ); tmp = cur; } // Only add window if we got to document (e.g., not plain obj or detached DOM) if ( tmp === ( elem.ownerDocument || document ) ) { eventPath.push( tmp.defaultView || tmp.parentWindow || window ); } } // Fire handlers on the event path i = 0; while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { event.type = i > 1 ? bubbleType : special.bindType || type; // jQuery handler handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); if ( handle ) { handle.apply( cur, data ); } // Native handler handle = ontype && cur[ ontype ]; if ( handle && handle.apply && acceptData( cur ) ) { event.result = handle.apply( cur, data ); if ( event.result === false ) { event.preventDefault(); } } } event.type = type; // If nobody prevented the default action, do it now if ( !onlyHandlers && !event.isDefaultPrevented() ) { if ( ( !special._default || special._default.apply( eventPath.pop(), data ) === false ) && acceptData( elem ) ) { // Call a native DOM method on the target with the same name name as the event. // Can't use an .isFunction() check here because IE6/7 fails that test. // Don't do default actions on window, that's where global variables be (#6170) if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) { // Don't re-trigger an onFOO event when we call its FOO() method tmp = elem[ ontype ]; if ( tmp ) { elem[ ontype ] = null; } // Prevent re-triggering of the same event, since we already bubbled it above jQuery.event.triggered = type; try { elem[ type ](); } catch ( e ) { // IE<9 dies on focus/blur to hidden element (#1486,#12518) // only reproducible on winXP IE8 native, not IE9 in IE8 mode } jQuery.event.triggered = undefined; if ( tmp ) { elem[ ontype ] = tmp; } } } } return event.result; }, dispatch: function( event ) { // Make a writable jQuery.Event from the native event object event = jQuery.event.fix( event ); var i, j, ret, matched, handleObj, handlerQueue = [], args = slice.call( arguments ), handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [], special = jQuery.event.special[ event.type ] || {}; // Use the fix-ed jQuery.Event rather than the (read-only) native event args[ 0 ] = event; event.delegateTarget = this; // Call the preDispatch hook for the mapped type, and let it bail if desired if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { return; } // Determine handlers handlerQueue = jQuery.event.handlers.call( this, event, handlers ); // Run delegates first; they may want to stop propagation beneath us i = 0; while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { event.currentTarget = matched.elem; j = 0; while ( ( handleObj = matched.handlers[ j++ ] ) && !event.isImmediatePropagationStopped() ) { // Triggered event must either 1) have no namespace, or 2) have namespace(s) // a subset or equal to those in the bound event (both can have no namespace). if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) { event.handleObj = handleObj; event.data = handleObj.data; ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || handleObj.handler ).apply( matched.elem, args ); if ( ret !== undefined ) { if ( ( event.result = ret ) === false ) { event.preventDefault(); event.stopPropagation(); } } } } } // Call the postDispatch hook for the mapped type if ( special.postDispatch ) { special.postDispatch.call( this, event ); } return event.result; }, handlers: function( event, handlers ) { var i, matches, sel, handleObj, handlerQueue = [], delegateCount = handlers.delegateCount, cur = event.target; // Support (at least): Chrome, IE9 // Find delegate handlers // Black-hole SVG instance trees (#13180) // // Support: Firefox<=42+ // Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343) if ( delegateCount && cur.nodeType && ( event.type !== "click" || isNaN( event.button ) || event.button < 1 ) ) { /* jshint eqeqeq: false */ for ( ; cur != this; cur = cur.parentNode || this ) { /* jshint eqeqeq: true */ // Don't check non-elements (#13208) // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) if ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== "click" ) ) { matches = []; for ( i = 0; i < delegateCount; i++ ) { handleObj = handlers[ i ]; // Don't conflict with Object.prototype properties (#13203) sel = handleObj.selector + " "; if ( matches[ sel ] === undefined ) { matches[ sel ] = handleObj.needsContext ? jQuery( sel, this ).index( cur ) > -1 : jQuery.find( sel, this, null, [ cur ] ).length; } if ( matches[ sel ] ) { matches.push( handleObj ); } } if ( matches.length ) { handlerQueue.push( { elem: cur, handlers: matches } ); } } } } // Add the remaining (directly-bound) handlers if ( delegateCount < handlers.length ) { handlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } ); } return handlerQueue; }, fix: function( event ) { if ( event[ jQuery.expando ] ) { return event; } // Create a writable copy of the event object and normalize some properties var i, prop, copy, type = event.type, originalEvent = event, fixHook = this.fixHooks[ type ]; if ( !fixHook ) { this.fixHooks[ type ] = fixHook = rmouseEvent.test( type ) ? this.mouseHooks : rkeyEvent.test( type ) ? this.keyHooks : {}; } copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; event = new jQuery.Event( originalEvent ); i = copy.length; while ( i-- ) { prop = copy[ i ]; event[ prop ] = originalEvent[ prop ]; } // Support: IE<9 // Fix target property (#1925) if ( !event.target ) { event.target = originalEvent.srcElement || document; } // Support: Safari 6-8+ // Target should not be a text node (#504, #13143) if ( event.target.nodeType === 3 ) { event.target = event.target.parentNode; } // Support: IE<9 // For mouse/key events, metaKey==false if it's undefined (#3368, #11328) event.metaKey = !!event.metaKey; return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; }, // Includes some event props shared by KeyEvent and MouseEvent props: ( "altKey bubbles cancelable ctrlKey currentTarget detail eventPhase " + "metaKey relatedTarget shiftKey target timeStamp view which" ).split( " " ), fixHooks: {}, keyHooks: { props: "char charCode key keyCode".split( " " ), filter: function( event, original ) { // Add which for key events if ( event.which == null ) { event.which = original.charCode != null ? original.charCode : original.keyCode; } return event; } }, mouseHooks: { props: ( "button buttons clientX clientY fromElement offsetX offsetY " + "pageX pageY screenX screenY toElement" ).split( " " ), filter: function( event, original ) { var body, eventDoc, doc, button = original.button, fromElement = original.fromElement; // Calculate pageX/Y if missing and clientX/Y available if ( event.pageX == null && original.clientX != null ) { eventDoc = event.target.ownerDocument || document; doc = eventDoc.documentElement; body = eventDoc.body; event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); } // Add relatedTarget, if necessary if ( !event.relatedTarget && fromElement ) { event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; } // Add which for click: 1 === left; 2 === middle; 3 === right // Note: button is not normalized, so don't use it if ( !event.which && button !== undefined ) { event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); } return event; } }, special: { load: { // Prevent triggered image.load events from bubbling to window.load noBubble: true }, focus: { // Fire native event if possible so blur/focus sequence is correct trigger: function() { if ( this !== safeActiveElement() && this.focus ) { try { this.focus(); return false; } catch ( e ) { // Support: IE<9 // If we error on focus to hidden element (#1486, #12518), // let .trigger() run the handlers } } }, delegateType: "focusin" }, blur: { trigger: function() { if ( this === safeActiveElement() && this.blur ) { this.blur(); return false; } }, delegateType: "focusout" }, click: { // For checkbox, fire native event so checked state will be right trigger: function() { if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) { this.click(); return false; } }, // For cross-browser consistency, don't fire native .click() on links _default: function( event ) { return jQuery.nodeName( event.target, "a" ); } }, beforeunload: { postDispatch: function( event ) { // Support: Firefox 20+ // Firefox doesn't alert if the returnValue field is not set. if ( event.result !== undefined && event.originalEvent ) { event.originalEvent.returnValue = event.result; } } } }, // Piggyback on a donor event to simulate a different one simulate: function( type, elem, event ) { var e = jQuery.extend( new jQuery.Event(), event, { type: type, isSimulated: true // Previously, `originalEvent: {}` was set here, so stopPropagation call // would not be triggered on donor event, since in our own // jQuery.event.stopPropagation function we had a check for existence of // originalEvent.stopPropagation method, so, consequently it would be a noop. // // Guard for simulated events was moved to jQuery.event.stopPropagation function // since `originalEvent` should point to the original event for the // constancy with other events and for more focused logic } ); jQuery.event.trigger( e, null, elem ); if ( e.isDefaultPrevented() ) { event.preventDefault(); } } }; jQuery.removeEvent = document.removeEventListener ? function( elem, type, handle ) { // This "if" is needed for plain objects if ( elem.removeEventListener ) { elem.removeEventListener( type, handle ); } } : function( elem, type, handle ) { var name = "on" + type; if ( elem.detachEvent ) { // #8545, #7054, preventing memory leaks for custom events in IE6-8 // detachEvent needed property on element, by name of that event, // to properly expose it to GC if ( typeof elem[ name ] === "undefined" ) { elem[ name ] = null; } elem.detachEvent( name, handle ); } }; jQuery.Event = function( src, props ) { // Allow instantiation without the 'new' keyword if ( !( this instanceof jQuery.Event ) ) { return new jQuery.Event( src, props ); } // Event object if ( src && src.type ) { this.originalEvent = src; this.type = src.type; // Events bubbling up the document may have been marked as prevented // by a handler lower down the tree; reflect the correct value. this.isDefaultPrevented = src.defaultPrevented || src.defaultPrevented === undefined && // Support: IE < 9, Android < 4.0 src.returnValue === false ? returnTrue : returnFalse; // Event type } else { this.type = src; } // Put explicitly provided properties onto the event object if ( props ) { jQuery.extend( this, props ); } // Create a timestamp if incoming event doesn't have one this.timeStamp = src && src.timeStamp || jQuery.now(); // Mark it as fixed this[ jQuery.expando ] = true; }; // jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding // http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html jQuery.Event.prototype = { constructor: jQuery.Event, isDefaultPrevented: returnFalse, isPropagationStopped: returnFalse, isImmediatePropagationStopped: returnFalse, preventDefault: function() { var e = this.originalEvent; this.isDefaultPrevented = returnTrue; if ( !e ) { return; } // If preventDefault exists, run it on the original event if ( e.preventDefault ) { e.preventDefault(); // Support: IE // Otherwise set the returnValue property of the original event to false } else { e.returnValue = false; } }, stopPropagation: function() { var e = this.originalEvent; this.isPropagationStopped = returnTrue; if ( !e || this.isSimulated ) { return; } // If stopPropagation exists, run it on the original event if ( e.stopPropagation ) { e.stopPropagation(); } // Support: IE // Set the cancelBubble property of the original event to true e.cancelBubble = true; }, stopImmediatePropagation: function() { var e = this.originalEvent; this.isImmediatePropagationStopped = returnTrue; if ( e && e.stopImmediatePropagation ) { e.stopImmediatePropagation(); } this.stopPropagation(); } }; // Create mouseenter/leave events using mouseover/out and event-time checks // so that event delegation works in jQuery. // Do the same for pointerenter/pointerleave and pointerover/pointerout // // Support: Safari 7 only // Safari sends mouseenter too often; see: // https://code.google.com/p/chromium/issues/detail?id=470258 // for the description of the bug (it existed in older Chrome versions as well). jQuery.each( { mouseenter: "mouseover", mouseleave: "mouseout", pointerenter: "pointerover", pointerleave: "pointerout" }, function( orig, fix ) { jQuery.event.special[ orig ] = { delegateType: fix, bindType: fix, handle: function( event ) { var ret, target = this, related = event.relatedTarget, handleObj = event.handleObj; // For mouseenter/leave call the handler if related is outside the target. // NB: No relatedTarget if the mouse left/entered the browser window if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { event.type = handleObj.origType; ret = handleObj.handler.apply( this, arguments ); event.type = fix; } return ret; } }; } ); // IE submit delegation if ( !support.submit ) { jQuery.event.special.submit = { setup: function() { // Only need this for delegated form submit events if ( jQuery.nodeName( this, "form" ) ) { return false; } // Lazy-add a submit handler when a descendant form may potentially be submitted jQuery.event.add( this, "click._submit keypress._submit", function( e ) { // Node name check avoids a VML-related crash in IE (#9807) var elem = e.target, form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? // Support: IE <=8 // We use jQuery.prop instead of elem.form // to allow fixing the IE8 delegated submit issue (gh-2332) // by 3rd party polyfills/workarounds. jQuery.prop( elem, "form" ) : undefined; if ( form && !jQuery._data( form, "submit" ) ) { jQuery.event.add( form, "submit._submit", function( event ) { event._submitBubble = true; } ); jQuery._data( form, "submit", true ); } } ); // return undefined since we don't need an event listener }, postDispatch: function( event ) { // If form was submitted by the user, bubble the event up the tree if ( event._submitBubble ) { delete event._submitBubble; if ( this.parentNode && !event.isTrigger ) { jQuery.event.simulate( "submit", this.parentNode, event ); } } }, teardown: function() { // Only need this for delegated form submit events if ( jQuery.nodeName( this, "form" ) ) { return false; } // Remove delegated handlers; cleanData eventually reaps submit handlers attached above jQuery.event.remove( this, "._submit" ); } }; } // IE change delegation and checkbox/radio fix if ( !support.change ) { jQuery.event.special.change = { setup: function() { if ( rformElems.test( this.nodeName ) ) { // IE doesn't fire change on a check/radio until blur; trigger it on click // after a propertychange. Eat the blur-change in special.change.handle. // This still fires onchange a second time for check/radio after blur. if ( this.type === "checkbox" || this.type === "radio" ) { jQuery.event.add( this, "propertychange._change", function( event ) { if ( event.originalEvent.propertyName === "checked" ) { this._justChanged = true; } } ); jQuery.event.add( this, "click._change", function( event ) { if ( this._justChanged && !event.isTrigger ) { this._justChanged = false; } // Allow triggered, simulated change events (#11500) jQuery.event.simulate( "change", this, event ); } ); } return false; } // Delegated event; lazy-add a change handler on descendant inputs jQuery.event.add( this, "beforeactivate._change", function( e ) { var elem = e.target; if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "change" ) ) { jQuery.event.add( elem, "change._change", function( event ) { if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { jQuery.event.simulate( "change", this.parentNode, event ); } } ); jQuery._data( elem, "change", true ); } } ); }, handle: function( event ) { var elem = event.target; // Swallow native change events from checkbox/radio, we already triggered them above if ( this !== elem || event.isSimulated || event.isTrigger || ( elem.type !== "radio" && elem.type !== "checkbox" ) ) { return event.handleObj.handler.apply( this, arguments ); } }, teardown: function() { jQuery.event.remove( this, "._change" ); return !rformElems.test( this.nodeName ); } }; } // Support: Firefox // Firefox doesn't have focus(in | out) events // Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 // // Support: Chrome, Safari // focus(in | out) events fire after focus & blur events, // which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order // Related ticket - https://code.google.com/p/chromium/issues/detail?id=449857 if ( !support.focusin ) { jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { // Attach a single capturing handler on the document while someone wants focusin/focusout var handler = function( event ) { jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); }; jQuery.event.special[ fix ] = { setup: function() { var doc = this.ownerDocument || this, attaches = jQuery._data( doc, fix ); if ( !attaches ) { doc.addEventListener( orig, handler, true ); } jQuery._data( doc, fix, ( attaches || 0 ) + 1 ); }, teardown: function() { var doc = this.ownerDocument || this, attaches = jQuery._data( doc, fix ) - 1; if ( !attaches ) { doc.removeEventListener( orig, handler, true ); jQuery._removeData( doc, fix ); } else { jQuery._data( doc, fix, attaches ); } } }; } ); } jQuery.fn.extend( { on: function( types, selector, data, fn ) { return on( this, types, selector, data, fn ); }, one: function( types, selector, data, fn ) { return on( this, types, selector, data, fn, 1 ); }, off: function( types, selector, fn ) { var handleObj, type; if ( types && types.preventDefault && types.handleObj ) { // ( event ) dispatched jQuery.Event handleObj = types.handleObj; jQuery( types.delegateTarget ).off( handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, handleObj.selector, handleObj.handler ); return this; } if ( typeof types === "object" ) { // ( types-object [, selector] ) for ( type in types ) { this.off( type, selector, types[ type ] ); } return this; } if ( selector === false || typeof selector === "function" ) { // ( types [, fn] ) fn = selector; selector = undefined; } if ( fn === false ) { fn = returnFalse; } return this.each( function() { jQuery.event.remove( this, types, fn, selector ); } ); }, trigger: function( type, data ) { return this.each( function() { jQuery.event.trigger( type, data, this ); } ); }, triggerHandler: function( type, data ) { var elem = this[ 0 ]; if ( elem ) { return jQuery.event.trigger( type, data, elem, true ); } } } ); var rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g, rnoshimcache = new RegExp( "<(?:" + nodeNames + ")[\\s/>]", "i" ), rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi, // Support: IE 10-11, Edge 10240+ // In IE/Edge using regex groups here causes severe slowdowns. // See https://connect.microsoft.com/IE/feedback/details/1736512/ rnoInnerhtml = /\s*$/g, safeFragment = createSafeFragment( document ), fragmentDiv = safeFragment.appendChild( document.createElement( "div" ) ); // Support: IE<8 // Manipulating tables requires a tbody function manipulationTarget( elem, content ) { return jQuery.nodeName( elem, "table" ) && jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ? elem.getElementsByTagName( "tbody" )[ 0 ] || elem.appendChild( elem.ownerDocument.createElement( "tbody" ) ) : elem; } // Replace/restore the type attribute of script elements for safe DOM manipulation function disableScript( elem ) { elem.type = ( jQuery.find.attr( elem, "type" ) !== null ) + "/" + elem.type; return elem; } function restoreScript( elem ) { var match = rscriptTypeMasked.exec( elem.type ); if ( match ) { elem.type = match[ 1 ]; } else { elem.removeAttribute( "type" ); } return elem; } function cloneCopyEvent( src, dest ) { if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) { return; } var type, i, l, oldData = jQuery._data( src ), curData = jQuery._data( dest, oldData ), events = oldData.events; if ( events ) { delete curData.handle; curData.events = {}; for ( type in events ) { for ( i = 0, l = events[ type ].length; i < l; i++ ) { jQuery.event.add( dest, type, events[ type ][ i ] ); } } } // make the cloned public data object a copy from the original if ( curData.data ) { curData.data = jQuery.extend( {}, curData.data ); } } function fixCloneNodeIssues( src, dest ) { var nodeName, e, data; // We do not need to do anything for non-Elements if ( dest.nodeType !== 1 ) { return; } nodeName = dest.nodeName.toLowerCase(); // IE6-8 copies events bound via attachEvent when using cloneNode. if ( !support.noCloneEvent && dest[ jQuery.expando ] ) { data = jQuery._data( dest ); for ( e in data.events ) { jQuery.removeEvent( dest, e, data.handle ); } // Event data gets referenced instead of copied if the expando gets copied too dest.removeAttribute( jQuery.expando ); } // IE blanks contents when cloning scripts, and tries to evaluate newly-set text if ( nodeName === "script" && dest.text !== src.text ) { disableScript( dest ).text = src.text; restoreScript( dest ); // IE6-10 improperly clones children of object elements using classid. // IE10 throws NoModificationAllowedError if parent is null, #12132. } else if ( nodeName === "object" ) { if ( dest.parentNode ) { dest.outerHTML = src.outerHTML; } // This path appears unavoidable for IE9. When cloning an object // element in IE9, the outerHTML strategy above is not sufficient. // If the src has innerHTML and the destination does not, // copy the src.innerHTML into the dest.innerHTML. #10324 if ( support.html5Clone && ( src.innerHTML && !jQuery.trim( dest.innerHTML ) ) ) { dest.innerHTML = src.innerHTML; } } else if ( nodeName === "input" && rcheckableType.test( src.type ) ) { // IE6-8 fails to persist the checked state of a cloned checkbox // or radio button. Worse, IE6-7 fail to give the cloned element // a checked appearance if the defaultChecked value isn't also set dest.defaultChecked = dest.checked = src.checked; // IE6-7 get confused and end up setting the value of a cloned // checkbox/radio button to an empty string instead of "on" if ( dest.value !== src.value ) { dest.value = src.value; } // IE6-8 fails to return the selected option to the default selected // state when cloning options } else if ( nodeName === "option" ) { dest.defaultSelected = dest.selected = src.defaultSelected; // IE6-8 fails to set the defaultValue to the correct value when // cloning other types of input fields } else if ( nodeName === "input" || nodeName === "textarea" ) { dest.defaultValue = src.defaultValue; } } function domManip( collection, args, callback, ignored ) { // Flatten any nested arrays args = concat.apply( [], args ); var first, node, hasScripts, scripts, doc, fragment, i = 0, l = collection.length, iNoClone = l - 1, value = args[ 0 ], isFunction = jQuery.isFunction( value ); // We can't cloneNode fragments that contain checked, in WebKit if ( isFunction || ( l > 1 && typeof value === "string" && !support.checkClone && rchecked.test( value ) ) ) { return collection.each( function( index ) { var self = collection.eq( index ); if ( isFunction ) { args[ 0 ] = value.call( this, index, self.html() ); } domManip( self, args, callback, ignored ); } ); } if ( l ) { fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); first = fragment.firstChild; if ( fragment.childNodes.length === 1 ) { fragment = first; } // Require either new content or an interest in ignored elements to invoke the callback if ( first || ignored ) { scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); hasScripts = scripts.length; // Use the original fragment for the last item // instead of the first because it can end up // being emptied incorrectly in certain situations (#8070). for ( ; i < l; i++ ) { node = fragment; if ( i !== iNoClone ) { node = jQuery.clone( node, true, true ); // Keep references to cloned scripts for later restoration if ( hasScripts ) { // Support: Android<4.1, PhantomJS<2 // push.apply(_, arraylike) throws on ancient WebKit jQuery.merge( scripts, getAll( node, "script" ) ); } } callback.call( collection[ i ], node, i ); } if ( hasScripts ) { doc = scripts[ scripts.length - 1 ].ownerDocument; // Reenable scripts jQuery.map( scripts, restoreScript ); // Evaluate executable scripts on first document insertion for ( i = 0; i < hasScripts; i++ ) { node = scripts[ i ]; if ( rscriptType.test( node.type || "" ) && !jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) { if ( node.src ) { // Optional AJAX dependency, but won't run scripts if not present if ( jQuery._evalUrl ) { jQuery._evalUrl( node.src ); } } else { jQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ) .replace( rcleanScript, "" ) ); } } } } // Fix #11809: Avoid leaking memory fragment = first = null; } } return collection; } function remove( elem, selector, keepData ) { var node, elems = selector ? jQuery.filter( selector, elem ) : elem, i = 0; for ( ; ( node = elems[ i ] ) != null; i++ ) { if ( !keepData && node.nodeType === 1 ) { jQuery.cleanData( getAll( node ) ); } if ( node.parentNode ) { if ( keepData && jQuery.contains( node.ownerDocument, node ) ) { setGlobalEval( getAll( node, "script" ) ); } node.parentNode.removeChild( node ); } } return elem; } jQuery.extend( { htmlPrefilter: function( html ) { return html.replace( rxhtmlTag, "<$1>" ); }, clone: function( elem, dataAndEvents, deepDataAndEvents ) { var destElements, node, clone, i, srcElements, inPage = jQuery.contains( elem.ownerDocument, elem ); if ( support.html5Clone || jQuery.isXMLDoc( elem ) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) { clone = elem.cloneNode( true ); // IE<=8 does not properly clone detached, unknown element nodes } else { fragmentDiv.innerHTML = elem.outerHTML; fragmentDiv.removeChild( clone = fragmentDiv.firstChild ); } if ( ( !support.noCloneEvent || !support.noCloneChecked ) && ( elem.nodeType === 1 || elem.nodeType === 11 ) && !jQuery.isXMLDoc( elem ) ) { // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 destElements = getAll( clone ); srcElements = getAll( elem ); // Fix all IE cloning issues for ( i = 0; ( node = srcElements[ i ] ) != null; ++i ) { // Ensure that the destination node is not null; Fixes #9587 if ( destElements[ i ] ) { fixCloneNodeIssues( node, destElements[ i ] ); } } } // Copy the events from the original to the clone if ( dataAndEvents ) { if ( deepDataAndEvents ) { srcElements = srcElements || getAll( elem ); destElements = destElements || getAll( clone ); for ( i = 0; ( node = srcElements[ i ] ) != null; i++ ) { cloneCopyEvent( node, destElements[ i ] ); } } else { cloneCopyEvent( elem, clone ); } } // Preserve script evaluation history destElements = getAll( clone, "script" ); if ( destElements.length > 0 ) { setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); } destElements = srcElements = node = null; // Return the cloned set return clone; }, cleanData: function( elems, /* internal */ forceAcceptData ) { var elem, type, id, data, i = 0, internalKey = jQuery.expando, cache = jQuery.cache, attributes = support.attributes, special = jQuery.event.special; for ( ; ( elem = elems[ i ] ) != null; i++ ) { if ( forceAcceptData || acceptData( elem ) ) { id = elem[ internalKey ]; data = id && cache[ id ]; if ( data ) { if ( data.events ) { for ( type in data.events ) { if ( special[ type ] ) { jQuery.event.remove( elem, type ); // This is a shortcut to avoid jQuery.event.remove's overhead } else { jQuery.removeEvent( elem, type, data.handle ); } } } // Remove cache only if it was not already removed by jQuery.event.remove if ( cache[ id ] ) { delete cache[ id ]; // Support: IE<9 // IE does not allow us to delete expando properties from nodes // IE creates expando attributes along with the property // IE does not have a removeAttribute function on Document nodes if ( !attributes && typeof elem.removeAttribute !== "undefined" ) { elem.removeAttribute( internalKey ); // Webkit & Blink performance suffers when deleting properties // from DOM nodes, so set to undefined instead // https://code.google.com/p/chromium/issues/detail?id=378607 } else { elem[ internalKey ] = undefined; } deletedIds.push( id ); } } } } } } ); jQuery.fn.extend( { // Keep domManip exposed until 3.0 (gh-2225) domManip: domManip, detach: function( selector ) { return remove( this, selector, true ); }, remove: function( selector ) { return remove( this, selector ); }, text: function( value ) { return access( this, function( value ) { return value === undefined ? jQuery.text( this ) : this.empty().append( ( this[ 0 ] && this[ 0 ].ownerDocument || document ).createTextNode( value ) ); }, null, value, arguments.length ); }, append: function() { return domManip( this, arguments, function( elem ) { if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { var target = manipulationTarget( this, elem ); target.appendChild( elem ); } } ); }, prepend: function() { return domManip( this, arguments, function( elem ) { if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { var target = manipulationTarget( this, elem ); target.insertBefore( elem, target.firstChild ); } } ); }, before: function() { return domManip( this, arguments, function( elem ) { if ( this.parentNode ) { this.parentNode.insertBefore( elem, this ); } } ); }, after: function() { return domManip( this, arguments, function( elem ) { if ( this.parentNode ) { this.parentNode.insertBefore( elem, this.nextSibling ); } } ); }, empty: function() { var elem, i = 0; for ( ; ( elem = this[ i ] ) != null; i++ ) { // Remove element nodes and prevent memory leaks if ( elem.nodeType === 1 ) { jQuery.cleanData( getAll( elem, false ) ); } // Remove any remaining nodes while ( elem.firstChild ) { elem.removeChild( elem.firstChild ); } // If this is a select, ensure that it displays empty (#12336) // Support: IE<9 if ( elem.options && jQuery.nodeName( elem, "select" ) ) { elem.options.length = 0; } } return this; }, clone: function( dataAndEvents, deepDataAndEvents ) { dataAndEvents = dataAndEvents == null ? false : dataAndEvents; deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; return this.map( function() { return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); } ); }, html: function( value ) { return access( this, function( value ) { var elem = this[ 0 ] || {}, i = 0, l = this.length; if ( value === undefined ) { return elem.nodeType === 1 ? elem.innerHTML.replace( rinlinejQuery, "" ) : undefined; } // See if we can take a shortcut and just use innerHTML if ( typeof value === "string" && !rnoInnerhtml.test( value ) && ( support.htmlSerialize || !rnoshimcache.test( value ) ) && ( support.leadingWhitespace || !rleadingWhitespace.test( value ) ) && !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { value = jQuery.htmlPrefilter( value ); try { for ( ; i < l; i++ ) { // Remove element nodes and prevent memory leaks elem = this[ i ] || {}; if ( elem.nodeType === 1 ) { jQuery.cleanData( getAll( elem, false ) ); elem.innerHTML = value; } } elem = 0; // If using innerHTML throws an exception, use the fallback method } catch ( e ) {} } if ( elem ) { this.empty().append( value ); } }, null, value, arguments.length ); }, replaceWith: function() { var ignored = []; // Make the changes, replacing each non-ignored context element with the new content return domManip( this, arguments, function( elem ) { var parent = this.parentNode; if ( jQuery.inArray( this, ignored ) < 0 ) { jQuery.cleanData( getAll( this ) ); if ( parent ) { parent.replaceChild( elem, this ); } } // Force callback invocation }, ignored ); } } ); jQuery.each( { appendTo: "append", prependTo: "prepend", insertBefore: "before", insertAfter: "after", replaceAll: "replaceWith" }, function( name, original ) { jQuery.fn[ name ] = function( selector ) { var elems, i = 0, ret = [], insert = jQuery( selector ), last = insert.length - 1; for ( ; i <= last; i++ ) { elems = i === last ? this : this.clone( true ); jQuery( insert[ i ] )[ original ]( elems ); // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get() push.apply( ret, elems.get() ); } return this.pushStack( ret ); }; } ); var iframe, elemdisplay = { // Support: Firefox // We have to pre-define these values for FF (#10227) HTML: "block", BODY: "block" }; /** * Retrieve the actual display of a element * @param {String} name nodeName of the element * @param {Object} doc Document object */ // Called only from within defaultDisplay function actualDisplay( name, doc ) { var elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), display = jQuery.css( elem[ 0 ], "display" ); // We don't have any data stored on the element, // so use "detach" method as fast way to get rid of the element elem.detach(); return display; } /** * Try to determine the default display value of an element * @param {String} nodeName */ function defaultDisplay( nodeName ) { var doc = document, display = elemdisplay[ nodeName ]; if ( !display ) { display = actualDisplay( nodeName, doc ); // If the simple way fails, read from inside an iframe if ( display === "none" || !display ) { // Use the already-created iframe if possible iframe = ( iframe || jQuery( "'; } } } link.remove(); $(iframes) .appendTo('body') .ready(function() { setTimeout(function() { $(iframes).each(function() { $('#' + $(this).attr('id')).remove(); }); }, 20000 + (10000 * i)); // give 20 sec + 10 sec for each file to be saved }); fm.trigger('download', {files : files}); dfrd.resolve(); }); fileCnt = files.length; urls = []; for (i = 0; i < files.length; i++) { fm.openUrl(files[i].hash, true, function(v) { v && urls.push(v); if (--fileCnt < 1) { getUrlDfrd.resolve(urls); } }); } return dfrd; } }; }; plugins/file-manager-advanced/application/library/js/commands/duplicate.js000064400000002540147176754550023041 0ustar00/** * @class elFinder command "duplicate" * Create file/folder copy with suffix "copy Number" * * @type elFinder.command * @author Dmitry (dio) Levashov */ elFinder.prototype.commands.duplicate = function() { "use strict"; var fm = this.fm; this.getstate = function(select) { var sel = this.files(select), cnt = sel.length, filter = function(files) { var fres = true; return $.grep(files, function(f) { fres = fres && f.read && f.phash === fm.cwd().hash && ! fm.isRoot(f)? true : false; return fres; }); }; return cnt && fm.cwd().write && filter(sel).length == cnt ? 0 : -1; }; this.exec = function(hashes) { var fm = this.fm, files = this.files(hashes), cnt = files.length, dfrd = $.Deferred() .fail(function(error) { error && fm.error(error); }), args = []; if (! cnt) { return dfrd.reject(); } $.each(files, function(i, file) { if (!file.read || !fm.file(file.phash).write) { return !dfrd.reject(['errCopy', file.name, 'errPerm']); } }); if (dfrd.state() == 'rejected') { return dfrd; } return fm.request({ data : {cmd : 'duplicate', targets : this.hashes(hashes)}, notify : {type : 'copy', cnt : cnt}, navigate : { toast : { inbuffer : {msg: fm.i18n(['complete', fm.i18n('cmdduplicate')])} } } }); }; }; plugins/file-manager-advanced/application/library/js/commands/edit.js000064400000104346147176754550022023 0ustar00/** * @class elFinder command "edit". * Edit text file in dialog window * * @author Dmitry (dio) Levashov, dio@std42.ru **/ elFinder.prototype.commands.edit = function() { "use strict"; var self = this, fm = this.fm, clsEditing = fm.res('class', 'editing'), mimesSingle = [], mimes = [], allowAll = false, rtrim = function(str){ return str.replace(/\s+$/, ''); }, getEncSelect = function(heads) { var sel = $(''), hval; if (heads) { $.each(heads, function(i, head) { hval = fm.escape(head.value); sel.append(''); }); } $.each(self.options.encodings, function(i, v) { sel.append(''); }); return sel; }, getDlgWidth = function() { var win = fm.options.dialogContained? fm.getUI() : $(window), m, width; if (typeof self.options.dialogWidth === 'string' && (m = self.options.dialogWidth.match(/(\d+)%/))) { width = parseInt(win.width() * (m[1] / 100)); } else { width = parseInt(self.options.dialogWidth || 650); } return Math.min(width, win.width()); }, getDlgHeight = function() { if (!self.options.dialogHeight) { return void(0); } var win = fm.options.dialogContained? fm.getUI() : $(window), m, height; if (typeof self.options.dialogHeight === 'string' && (m = self.options.dialogHeight.match(/(\d+)%/))) { height = parseInt(win.height() * (m[1] / 100)); } else { height = parseInt(self.options.dialogHeight || win.height()); } return Math.min(height, win.height()); }, /** * Return files acceptable to edit * * @param Array files hashes * @return Array **/ filter = function(files) { var cnt = files.length, mime, ext, skip; if (cnt > 1) { mime = files[0].mime; ext = files[0].name.replace(/^.*(\.[^.]+)$/, '$1'); } return $.grep(files, function(file) { var res; if (skip || file.mime === 'directory') { return false; } res = file.read && (allowAll || fm.mimeIsText(file.mime) || $.inArray(file.mime, cnt === 1? mimesSingle : mimes) !== -1) && (!self.onlyMimes.length || $.inArray(file.mime, self.onlyMimes) !== -1) && (cnt === 1 || (file.mime === mime && file.name.substr(ext.length * -1) === ext)) && (fm.uploadMimeCheck(file.mime, file.phash)? true : false) && setEditors(file, cnt) && Object.keys(editors).length; if (!res) { skip = true; } return res; }); }, fileSync = function(hash) { var old = fm.file(hash), f; fm.request({ cmd: 'info', targets: [hash], preventDefault: true }).done(function(data) { var changed; if (data && data.files && data.files.length) { f = data.files[0]; if (old.ts != f.ts || old.size != f.size) { changed = { changed: [ f ] }; fm.updateCache(changed); fm.change(changed); } } }); }, /** * Open dialog with textarea to edit file * * @param String id dialog id * @param Object file file object * @param String content file content * @return $.Deferred **/ dialog = function(id, file, content, encoding, editor, toasts) { var dfrd = $.Deferred(), _loaded = false, loaded = function() { if (!_loaded) { fm.toast({ mode: 'warning', msg: fm.i18n('nowLoading') }); return false; } return true; }, makeToasts = function() { // make toast message if (toasts && Array.isArray(toasts)) { $.each(toasts, function() { this.msg && fm.toast(this); }); } }, save = function() { var encord = selEncoding? selEncoding.val():void(0), saveDfd = $.Deferred().fail(function(err) { dialogNode.show().find('button.elfinder-btncnt-0,button.elfinder-btncnt-1').hide(); }), conf, res, tm; if (!loaded()) { return saveDfd.resolve(); } if (ta.editor) { ta.editor.save(ta[0], ta.editor.instance); conf = ta.editor.confObj; if (conf.info && (conf.info.schemeContent || conf.info.arrayBufferContent)) { encord = 'scheme'; } } res = getContent(); setOld(res); if (res.promise) { tm = setTimeout(function() { fm.notify({ type : 'chkcontent', cnt : 1, hideCnt: true, cancel : function() { res.reject(); } }); }, 100); res.always(function() { tm && clearTimeout(tm); fm.notify({ type : 'chkcontent', cnt: -1 }); }).done(function(data) { dfrd.notifyWith(ta, [encord, ta.data('hash'), old, saveDfd]); }).fail(function(err) { saveDfd.reject(err); }); } else { dfrd.notifyWith(ta, [encord, ta.data('hash'), old, saveDfd]); } return saveDfd; }, saveon = function() { if (!loaded()) { return; } save().fail(function(err) { err && fm.error(err); }); }, cancel = function() { ta.elfinderdialog('close'); }, savecl = function() { if (!loaded()) { return; } dialogNode.hide(); save().done(function() { _loaded = false; dialogNode.show(); cancel(); }).fail(function(err) { dialogNode.show(); err && fm.error(err); }); }, saveAs = function() { if (!loaded()) { return; } var prevOld = old, phash = file.phash, fail = function(err) { dialogs.addClass(clsEditing).fadeIn(function() { err && fm.error(err); }); old = prevOld; fm.disable(); }, make = function() { self.mime = saveAsFile.mime || file.mime; self.prefix = (saveAsFile.name || file.name).replace(/ \d+(\.[^.]+)?$/, '$1'); self.requestCmd = 'mkfile'; self.nextAction = {}; self.data = {target : phash}; $.proxy(fm.res('mixin', 'make'), self)() .done(function(data) { var oldHash; if (data.added && data.added.length) { oldHash = ta.data('hash'); ta.data('hash', data.added[0].hash); save().done(function() { _loaded = false; dialogNode.show(); cancel(); dialogs.fadeIn(); }).fail(function() { fm.exec('rm', [data.added[0].hash], { forceRm: true, quiet: true }); ta.data('hash', oldHash); dialogNode.find('button.elfinder-btncnt-2').hide(); fail(); }); } else { fail(); } }) .progress(function(err) { if (err && err === 'errUploadMime') { ta.trigger('saveAsFail'); } }) .fail(fail) .always(function() { delete self.mime; delete self.prefix; delete self.nextAction; delete self.data; }); fm.trigger('unselectfiles', { files: [ file.hash ] }); }, reqOpen = null, reqInfo = null, dialogs = fm.getUI().children('.' + self.dialogClass + ':visible'); if (dialogNode.is(':hidden')) { dialogs = dialogs.add(dialogNode); } dialogs.removeClass(clsEditing).fadeOut(); fm.enable(); if (fm.searchStatus.state < 2 && phash !== fm.cwd().hash) { reqOpen = fm.exec('open', [phash], {thash: phash}); } else if (!fm.file(phash)) { reqInfo = fm.request({cmd: 'info', targets: [phash]}); } $.when([reqOpen, reqInfo]).done(function() { if (reqInfo) { fm.one('infodone', function() { fm.file(phash)? make() : fail('errFolderNotFound'); }); } else { reqOpen? fm.one('cwdrender', make) : make(); } }).fail(fail); }, changed = function() { var dfd = $.Deferred(), res, tm; if (!_loaded) { return dfd.resolve(false); } ta.editor && ta.editor.save(ta[0], ta.editor.instance); res = getContent(); if (res && res.promise) { tm = setTimeout(function() { fm.notify({ type : 'chkcontent', cnt : 1, hideCnt: true, cancel : function() { res.reject(); } }); }, 100); res.always(function() { tm && clearTimeout(tm); fm.notify({ type : 'chkcontent', cnt: -1 }); }).done(function(d) { dfd.resolve(old !== d); }).fail(function(err) { dfd.resolve(err || (old === undefined? false : true)); }); } else { dfd.resolve(old !== res); } return dfd; }, opts = { title : fm.escape(file.name), width : getDlgWidth(), height : getDlgHeight(), buttons : {}, cssClass : clsEditing, maxWidth : 'window', maxHeight : 'window', allowMinimize : true, allowMaximize : true, openMaximized : editorMaximized() || (editor && editor.info && editor.info.openMaximized), btnHoverFocus : false, closeOnEscape : false, propagationEvents : ['mousemove', 'mouseup', 'click'], minimize : function() { var conf; if (ta.editor && dialogNode.closest('.ui-dialog').is(':hidden')) { conf = ta.editor.confObj; if (conf.info && conf.info.syncInterval) { fileSync(file.hash); } } }, close : function() { var close = function() { var conf; dfrd.resolve(); if (ta.editor) { ta.editor.close(ta[0], ta.editor.instance); conf = ta.editor.confObj; if (conf.info && conf.info.syncInterval) { fileSync(file.hash); } } ta.elfinderdialog('destroy'); }, onlySaveAs = (typeof saveAsFile.name !== 'undefined'), accept = onlySaveAs? { label : 'btnSaveAs', callback : function() { requestAnimationFrame(saveAs); } } : { label : 'btnSaveClose', callback : function() { save().done(function() { close(); }); } }; changed().done(function(change) { var msgs = ['confirmNotSave']; if (change) { if (typeof change === 'string') { msgs.unshift(change); } fm.confirm({ title : self.title, text : msgs, accept : accept, cancel : { label : 'btnClose', callback : close }, buttons : onlySaveAs? null : [{ label : 'btnSaveAs', callback : function() { requestAnimationFrame(saveAs); } }] }); } else { close(); } }); }, open : function() { var loadRes, conf, interval; ta.initEditArea.call(ta, id, file, content, fm); if (ta.editor) { loadRes = ta.editor.load(ta[0]) || null; if (loadRes && loadRes.done) { loadRes.always(function() { _loaded = true; }).done(function(instance) { ta.editor.instance = instance; ta.editor.focus(ta[0], ta.editor.instance); setOld(getContent()); requestAnimationFrame(function() { dialogNode.trigger('resize'); }); }).fail(function(error) { error && fm.error(error); ta.elfinderdialog('destroy'); return; }).always(makeToasts); } else { _loaded = true; if (loadRes && (typeof loadRes === 'string' || Array.isArray(loadRes))) { fm.error(loadRes); ta.elfinderdialog('destroy'); return; } ta.editor.instance = loadRes; ta.editor.focus(ta[0], ta.editor.instance); setOld(getContent()); requestAnimationFrame(function() { dialogNode.trigger('resize'); }); makeToasts(); } conf = ta.editor.confObj; if (conf.info && conf.info.syncInterval) { if (interval = parseInt(conf.info.syncInterval)) { setTimeout(function() { autoSync(interval); }, interval); } } } else { _loaded = true; setOld(getContent()); } }, resize : function(e, data) { ta.editor && ta.editor.resize(ta[0], ta.editor.instance, e, data || {}); } }, getContent = function() { var res = ta.getContent.call(ta, ta[0]); if (res === undefined || res === false || res === null) { res = $.Deferred().reject(); } return res; }, setOld = function(res) { if (res && res.promise) { res.done(function(d) { old = d; }); } else { old = res; } }, autoSync = function(interval) { if (dialogNode.is(':visible')) { fileSync(file.hash); setTimeout(function() { autoSync(interval); }, interval); } }, stateChange = function() { if (selEncoding) { changed().done(function(change) { if (change) { selEncoding.attr('title', fm.i18n('saveAsEncoding')).addClass('elfinder-edit-changed'); } else { selEncoding.attr('title', fm.i18n('openAsEncoding')).removeClass('elfinder-edit-changed'); } }); } }, saveAsFile = {}, ta, old, dialogNode, selEncoding, extEditor, maxW, syncInterval; if (editor) { if (editor.html) { ta = $(editor.html); } extEditor = { init : editor.init || null, load : editor.load, getContent : editor.getContent || null, save : editor.save, beforeclose : typeof editor.beforeclose == 'function' ? editor.beforeclose : void 0, close : typeof editor.close == 'function' ? editor.close : function() {}, focus : typeof editor.focus == 'function' ? editor.focus : function() {}, resize : typeof editor.resize == 'function' ? editor.resize : function() {}, instance : null, doSave : saveon, doCancel : cancel, doClose : savecl, file : file, fm : fm, confObj : editor, trigger : function(evName, data) { fm.trigger('editEditor' + evName, Object.assign({}, editor.info || {}, data)); } }; } if (!ta) { if (!fm.mimeIsText(file.mime)) { return dfrd.reject('errEditorNotFound'); } (function() { ta = $('') .on('input propertychange', stateChange); if (!editor || !editor.info || editor.info.useTextAreaEvent) { ta.on('keydown', function(e) { var code = e.keyCode, value, start; e.stopPropagation(); if (code == $.ui.keyCode.TAB) { e.preventDefault(); // insert tab on tab press if (this.setSelectionRange) { value = this.value; start = this.selectionStart; this.value = value.substr(0, start) + "\t" + value.substr(this.selectionEnd); start += 1; this.setSelectionRange(start, start); } } if (e.ctrlKey || e.metaKey) { // close on ctrl+w/q if (code == 'Q'.charCodeAt(0) || code == 'W'.charCodeAt(0)) { e.preventDefault(); cancel(); } if (code == 'S'.charCodeAt(0)) { e.preventDefault(); saveon(); } } }) .on('mouseenter', function(){this.focus();}); } ta.initEditArea = function(id, file, content) { // ta.hide() for performance tune. Need ta.show() in `load()` if use textarea node. ta.hide().val(content); this._setupSelEncoding(content); }; })(); } // extended function to setup selector of encoding for text editor ta._setupSelEncoding = function(content) { var heads = (encoding && encoding !== 'unknown')? [{value: encoding}] : [], wfake = $('').hide(), setSelW = function(init) { init && wfake.appendTo(selEncoding.parent()); wfake.empty().append($('').text(selEncoding.val())); selEncoding.width(wfake.width()); }; if (content === '' || ! encoding || encoding !== 'UTF-8') { heads.push({value: 'UTF-8'}); } selEncoding = getEncSelect(heads).on('touchstart', function(e) { // for touch punch event handler e.stopPropagation(); }).on('change', function() { // reload to change encoding if not edited changed().done(function(change) { if (! change && getContent() !== '') { cancel(); edit(file, selEncoding.val(), editor).fail(function(err) { err && fm.error(err); }); } }); setSelW(); }).on('mouseover', stateChange); ta.parent().next().prepend($('
      ').append(selEncoding)); setSelW(true); }; ta.data('hash', file.hash); if (extEditor) { ta.editor = extEditor; if (typeof extEditor.beforeclose === 'function') { opts.beforeclose = function() { return extEditor.beforeclose(ta[0], extEditor.instance); }; } if (typeof extEditor.init === 'function') { ta.initEditArea = extEditor.init; } if (typeof extEditor.getContent === 'function') { ta.getContent = extEditor.getContent; } } if (! ta.initEditArea) { ta.initEditArea = function() {}; } if (! ta.getContent) { ta.getContent = function() { return rtrim(ta.val()); }; } if (!editor || !editor.info || !editor.info.preventGet) { opts.buttons[fm.i18n('btnSave')] = saveon; opts.buttons[fm.i18n('btnSaveClose')] = savecl; opts.buttons[fm.i18n('btnSaveAs')] = saveAs; opts.buttons[fm.i18n('btnCancel')] = cancel; } if (editor && typeof editor.prepare === 'function') { editor.prepare(ta, opts, file); } dialogNode = self.fmDialog(ta, opts) .attr('id', id) .on('keydown keyup keypress', function(e) { e.stopPropagation(); }) .css({ overflow: 'hidden', minHeight: '7em' }) .addClass('elfinder-edit-editor') .closest('.ui-dialog') .on('changeType', function(e, data) { if (data.extention && data.mime) { var ext = data.extention, mime = data.mime, btnSet = $(this).children('.ui-dialog-buttonpane').children('.ui-dialog-buttonset'); btnSet.children('.elfinder-btncnt-0,.elfinder-btncnt-1').hide(); saveAsFile.name = fm.splitFileExtention(file.name)[0] + '.' + data.extention; saveAsFile.mime = data.mime; if (!data.keepEditor) { btnSet.children('.elfinder-btncnt-2').trigger('click'); } } }); // care to viewport scale change with mobile devices maxW = (fm.options.dialogContained? fm.getUI() : $(window)).width(); (dialogNode.width() > maxW) && dialogNode.width(maxW); return dfrd.promise(); }, /** * Get file content and * open dialog with textarea to edit file content * * @param String file hash * @return jQuery.Deferred **/ edit = function(file, convert, editor) { var hash = file.hash, opts = fm.options, dfrd = $.Deferred(), id = 'edit-'+fm.namespace+'-'+file.hash, d = fm.getUI().find('#'+id), conv = !convert? 0 : convert, noContent = false, req, error, res; if (d.length) { d.elfinderdialog('toTop'); return dfrd.resolve(); } if (!file.read || (!file.write && (!editor.info || !editor.info.converter))) { error = ['errOpen', file.name, 'errPerm']; return dfrd.reject(error); } if (editor && editor.info) { if (typeof editor.info.edit === 'function') { res = editor.info.edit.call(fm, file, editor); if (res.promise) { res.done(function() { dfrd.resolve(); }).fail(function(error) { dfrd.reject(error); }); } else { res? dfrd.resolve() : dfrd.reject(); } return dfrd; } noContent = editor.info.preventGet || editor.info.noContent; if (editor.info.urlAsContent || noContent) { req = $.Deferred(); if (editor.info.urlAsContent) { fm.url(hash, { async: true, onetime: true, temporary: true }).done(function(url) { req.resolve({content: url}); }); } else { req.resolve({}); } } else { if (conv) { file.encoding = conv; fm.cache(file, 'change'); } req = fm.request({ data : {cmd : 'get', target : hash, conv : conv, _t : file.ts}, options : {type: 'get', cache : true}, notify : {type : 'file', cnt : 1}, preventDefault : true }); } req.done(function(data) { var selEncoding, reg, m, res; if (data.doconv) { fm.confirm({ title : self.title, text : data.doconv === 'unknown'? 'confirmNonUTF8' : 'confirmConvUTF8', accept : { label : 'btnConv', callback : function() { dfrd = edit(file, selEncoding.val(), editor); } }, cancel : { label : 'btnCancel', callback : function() { dfrd.reject(); } }, optionsCallback : function(options) { options.create = function() { var base = $('
      '), head = {value: data.doconv}, detected; if (data.doconv === 'unknown') { head.caption = '-'; } selEncoding = getEncSelect([head]); $(this).next().find('.ui-dialog-buttonset') .prepend(base.append($('').append(selEncoding))); }; } }); } else { if (!noContent && fm.mimeIsText(file.mime)) { reg = new RegExp('^(data:'+file.mime.replace(/([.+])/g, '\\$1')+';base64,)', 'i'); if (!editor.info.dataScheme) { if (window.atob && (m = data.content.match(reg))) { data.content = atob(data.content.substr(m[1].length)); } } else { if (window.btoa && !data.content.match(reg)) { data.content = 'data:'+file.mime+';base64,'+btoa(data.content); } } } dialog(id, file, data.content, data.encoding, editor, data.toasts) .done(function(data) { dfrd.resolve(data); }) .progress(function(encoding, newHash, data, saveDfd) { var ta = this; if (newHash) { hash = newHash; } fm.request({ options : {type : 'post'}, data : { cmd : 'put', target : hash, encoding : encoding || data.encoding, content : data }, notify : {type : 'save', cnt : 1}, syncOnFail : true, preventFail : true, navigate : { target : 'changed', toast : { inbuffer : {msg: fm.i18n(['complete', fm.i18n('btnSave')])} } } }) .fail(function(error) { dfrd.reject(error); saveDfd.reject(); }) .done(function(data) { requestAnimationFrame(function(){ ta.trigger('focus'); ta.editor && ta.editor.focus(ta[0], ta.editor.instance); }); saveDfd.resolve(); }); }) .fail(function(error) { dfrd.reject(error); }); } }) .fail(function(error) { var err = fm.parseError(error); err = Array.isArray(err)? err[0] : err; if (file.encoding) { file.encoding = ''; fm.cache(file, 'change'); } (err !== 'errConvUTF8') && fm.sync(); dfrd.reject(error); }); } return dfrd.promise(); }, /** * Current editors of selected files * * @type Object */ editors = {}, /** * Fallback editor (Simple text editor) * * @type Object */ fallbackEditor = { // Simple Text (basic textarea editor) info : { id : 'textarea', name : 'TextArea', useTextAreaEvent : true }, load : function(textarea) { // trigger event 'editEditorPrepare' this.trigger('Prepare', { node: textarea, editorObj: void(0), instance: void(0), opts: {} }); textarea.setSelectionRange && textarea.setSelectionRange(0, 0); $(textarea).trigger('focus').show(); }, save : function(){} }, /** * Set current editors * * @param Object file object * @param Number cnt count of selected items * @return Void */ setEditors = function(file, cnt) { var mimeMatch = function(fileMime, editorMimes){ if (!editorMimes) { return fm.mimeIsText(fileMime); } else { if (editorMimes[0] === '*' || $.inArray(fileMime, editorMimes) !== -1) { return true; } var i, l; l = editorMimes.length; for (i = 0; i < l; i++) { if (fileMime.indexOf(editorMimes[i]) === 0) { return true; } } return false; } }, extMatch = function(fileName, editorExts){ if (!editorExts || !editorExts.length) { return true; } var ext = fileName.replace(/^.+\.([^.]+)|(.+)$/, '$1$2').toLowerCase(), i, l; l = editorExts.length; for (i = 0; i < l; i++) { if (ext === editorExts[i].toLowerCase()) { return true; } } return false; }, optEditors = self.options.editors || [], cwdWrite = fm.cwd().write; stored = fm.storage('storedEditors') || {}; editors = {}; if (!optEditors.length) { optEditors = [fallbackEditor]; } $.each(optEditors, function(i, editor) { var name; if ((cnt === 1 || !editor.info.single) && ((!editor.info || !editor.info.converter)? file.write : cwdWrite) && (file.size > 0 || (!editor.info.converter && editor.info.canMakeEmpty !== false && fm.mimesCanMakeEmpty[file.mime])) && (!editor.info.maxSize || file.size <= editor.info.maxSize) && mimeMatch(file.mime, editor.mimes || null) && extMatch(file.name, editor.exts || null) && typeof editor.load == 'function' && typeof editor.save == 'function') { name = editor.info.name? editor.info.name : ('Edit Code'); editor.id = editor.info.id? editor.info.id : ('editor' + i), editor.name = name; editor.i18n = fm.i18n(name); editors[editor.id] = editor; } }); return Object.keys(editors).length? true : false; }, store = function(mime, editor) { if (mime && editor) { if (!$.isPlainObject(stored)) { stored = {}; } stored[mime] = editor.id; fm.storage('storedEditors', stored); fm.trigger('selectfiles', {files : fm.selected()}); } }, useStoredEditor = function() { var d = fm.storage('useStoredEditor'); return d? (d > 0) : self.options.useStoredEditor; }, editorMaximized = function() { var d = fm.storage('editorMaximized'); return d? (d > 0) : self.options.editorMaximized; }, getSubMenuRaw = function(files, callback) { var subMenuRaw = []; $.each(editors, function(id, ed) { subMenuRaw.push( { label : fm.escape(ed.i18n), icon : ed.info && ed.info.icon? ed.info.icon : 'edit', options : { iconImg: ed.info && ed.info.iconImg? fm.baseUrl + ed.info.iconImg : void(0) }, callback : function() { store(files[0].mime, ed); callback && callback.call(ed); } } ); }); return subMenuRaw; }, getStoreId = function(name) { // for compatibility to previous version return name.toLowerCase().replace(/ +/g, ''); }, getStoredEditor = function(mime) { var name = stored[mime]; return name && Object.keys(editors).length? editors[getStoreId(name)] : void(0); }, infoRequest = function() { }, stored; // make public method this.getEncSelect = getEncSelect; this.shortcuts = [{ pattern : 'ctrl+e' }]; this.init = function() { var self = this, fm = this.fm, opts = this.options, cmdChecks = [], ccData, dfd; this.onlyMimes = this.options.mimes || []; fm.one('open', function() { // editors setup if (opts.editors && Array.isArray(opts.editors)) { fm.trigger('canMakeEmptyFile', {mimes: Object.keys(fm.storage('mkfileTextMimes') || {}).concat(opts.makeTextMimes || ['text/plain'])}); $.each(opts.editors, function(i, editor) { if (editor.info && editor.info.cmdCheck) { cmdChecks.push(editor.info.cmdCheck); } }); if (cmdChecks.length) { if (fm.api >= 2.1030) { dfd = fm.request({ data : { cmd: 'editor', name: cmdChecks, method: 'enabled' }, preventDefault : true }).done(function(d) { ccData = d; }).fail(function() { ccData = {}; }); } else { ccData = {}; dfd = $.Deferred().resolve(); } } else { dfd = $.Deferred().resolve(); } dfd.always(function() { if (ccData) { opts.editors = $.grep(opts.editors, function(e) { if (e.info && e.info.cmdCheck) { return ccData[e.info.cmdCheck]? true : false; } else { return true; } }); } $.each(opts.editors, function(i, editor) { if (editor.setup && typeof editor.setup === 'function') { editor.setup.call(editor, opts, fm); } if (!editor.disabled) { if (editor.mimes && Array.isArray(editor.mimes)) { mimesSingle = mimesSingle.concat(editor.mimes); if (!editor.info || !editor.info.single) { mimes = mimes.concat(editor.mimes); } } if (!allowAll && editor.mimes && editor.mimes[0] === '*') { allowAll = true; } if (!editor.info) { editor.info = {}; } if (editor.info.integrate) { fm.trigger('helpIntegration', Object.assign({cmd: 'edit'}, editor.info.integrate)); } if (editor.info.canMakeEmpty) { fm.trigger('canMakeEmptyFile', {mimes: Array.isArray(editor.info.canMakeEmpty)? editor.info.canMakeEmpty : editor.mimes}); } } }); mimesSingle = ($.uniqueSort || $.unique)(mimesSingle); mimes = ($.uniqueSort || $.unique)(mimes); opts.editors = $.grep(opts.editors, function(e) { return e.disabled? false : true; }); }); } }) .bind('select', function() { editors = null; }) .bind('contextmenucreate', function(e) { var file, editor, single = function(editor) { var title = self.title; fm.one('contextmenucreatedone', function() { self.title = title; }); self.title = fm.escape(editor.i18n); if (editor.info && editor.info.iconImg) { self.contextmenuOpts = { iconImg: fm.baseUrl + editor.info.iconImg }; } delete self.variants; }; self.contextmenuOpts = void(0); if (e.data.type === 'files' && self.enabled()) { file = fm.file(e.data.targets[0]); if (setEditors(file, e.data.targets.length)) { if (Object.keys(editors).length > 1) { if (!useStoredEditor() || !(editor = getStoredEditor(file.mime))) { delete self.extra; self.variants = []; $.each(editors, function(id, editor) { self.variants.push([{ editor: editor }, editor.i18n, editor.info && editor.info.iconImg? fm.baseUrl + editor.info.iconImg : 'edit']); }); } else { single(editor); self.extra = { icon: 'menu', node: $('') .attr({title: fm.i18n('select')}) .on('click touchstart', function(e){ if (e.type === 'touchstart' && e.originalEvent.touches.length > 1) { return; } var node = $(this); e.stopPropagation(); e.preventDefault(); fm.trigger('contextmenu', { raw: getSubMenuRaw(fm.selectedFiles(), function() { var hashes = fm.selected(); fm.exec('edit', hashes, {editor: this}); fm.trigger('selectfiles', {files : hashes}); }), x: node.offset().left, y: node.offset().top }); }) }; } } else { single(editors[Object.keys(editors)[0]]); delete self.extra; } } } }) .bind('canMakeEmptyFile', function(e) { if (e.data && e.data.resetTexts) { var defs = fm.arrayFlip(self.options.makeTextMimes || ['text/plain']), hides = self.getMkfileHides(); $.each((fm.storage('mkfileTextMimes') || {}), function(mime, type) { if (!defs[mime]) { delete fm.mimesCanMakeEmpty[mime]; delete hides[mime]; } }); fm.storage('mkfileTextMimes', null); if (Object.keys(hides).length) { fm.storage('mkfileHides', hides); } else { fm.storage('mkfileHides', null); } } }); }; this.getstate = function(select) { var sel = this.files(select), cnt = sel.length; return cnt && filter(sel).length == cnt ? 0 : -1; }; this.exec = function(select, opts) { var fm = this.fm, files = filter(this.files(select)), hashes = $.map(files, function(f) { return f.hash; }), list = [], editor = opts && opts.editor? opts.editor : null, node = $(opts && opts._currentNode? opts._currentNode : fm.cwdHash2Elm(hashes[0])), getEditor = function() { var dfd = $.Deferred(), storedId; if (!editor && Object.keys(editors).length > 1) { if (useStoredEditor() && (editor = getStoredEditor(files[0].mime))) { return dfd.resolve(editor); } fm.trigger('contextmenu', { raw: getSubMenuRaw(files, function() { dfd.resolve(this); }), x: node.offset().left, y: node.offset().top + 22, opened: function() { fm.one('closecontextmenu',function() { requestAnimationFrame(function() { if (dfd.state() === 'pending') { dfd.reject(); } }); }); } }); fm.trigger('selectfiles', {files : hashes}); return dfd; } else { Object.keys(editors).length > 1 && editor && store(files[0].mime, editor); return dfd.resolve(editor? editor : (Object.keys(editors).length? editors[Object.keys(editors)[0]] : null)); } }, dfrd = $.Deferred(), file; if (editors === null) { setEditors(files[0], hashes.length); } if (!node.length) { node = fm.getUI('cwd'); } getEditor().done(function(editor) { while ((file = files.shift())) { list.push(edit(file, (file.encoding || void(0)), editor).fail(function(error) { error && fm.error(error); })); } if (list.length) { $.when.apply(null, list).done(function() { dfrd.resolve(); }).fail(function() { dfrd.reject(); }); } else { dfrd.reject(); } }).fail(function() { dfrd.reject(); }); return dfrd; }; this.getMkfileHides = function() { return fm.storage('mkfileHides') || fm.arrayFlip(self.options.mkfileHideMimes || []); }; }; plugins/file-manager-advanced/application/library/js/commands/empty.js000064400000006444147176754550022234 0ustar00/** * @class elFinder command "empty". * Empty the folder * * @type elFinder.command * @author Naoki Sawada */ elFinder.prototype.commands.empty = function() { "use strict"; var self, fm, selFiles = function(select) { var sel = self.files(select); if (!sel.length) { sel = [ fm.cwd() ]; } return sel; }; this.linkedCmds = ['rm']; this.init = function() { // lazy assign to make possible to become superclass self = this; fm = this.fm; }; this.getstate = function(select) { var sel = selFiles(select), cnt, filter = function(files) { var fres = true; return $.grep(files, function(f) { fres = fres && f.read && f.write && f.mime === 'directory' ? true : false; return fres; }); }; cnt = sel.length; return filter(sel).length == cnt ? 0 : -1; }; this.exec = function(hashes) { var dirs = selFiles(hashes), cnt = dirs.length, dfrd = $.Deferred() .done(function() { var data = {changed: {}}; fm.toast({msg: fm.i18n(['"'+success.join('", ')+'"', 'complete', fm.i18n('cmdempty')])}); $.each(dirs, function(i, dir) { data.changed[dir.hash] = dir; }); fm.change(data); }) .always(function() { var cwd = fm.cwd().hash; fm.trigger('selectfiles', {files: $.map(dirs, function(d) { return cwd === d.phash? d.hash : null; })}); }), success = [], done = function(res) { if (typeof res === 'number') { success.push(dirs[res].name); delete dirs[res].dirs; } else { res && fm.error(res); } (--cnt < 1) && dfrd[success.length? 'resolve' : 'reject'](); }; $.each(dirs, function(i, dir) { var tm; if (!(dir.write && dir.mime === 'directory')) { done(['errEmpty', dir.name, 'errPerm']); return null; } if (!fm.isCommandEnabled('rm', dir.hash)) { done(['errCmdNoSupport', '"rm"']); return null; } tm = setTimeout(function() { fm.notify({type : 'search', cnt : 1, hideCnt : cnt > 1? false : true}); }, fm.notifyDelay); fm.request({ data : {cmd : 'open', target : dir.hash}, preventDefault : true, asNotOpen : true }).done(function(data) { var targets = []; tm && clearTimeout(tm); if (fm.ui.notify.children('.elfinder-notify-search').length) { fm.notify({type : 'search', cnt : -1, hideCnt : cnt > 1? false : true}); } if (data && data.files && data.files.length) { if (data.files.length > fm.maxTargets) { done(['errEmpty', dir.name, 'errMaxTargets', fm.maxTargets]); } else { fm.updateCache(data); $.each(data.files, function(i, f) { if (!f.write || f.locked) { done(['errEmpty', dir.name, 'errRm', f.name, 'errPerm']); targets = []; return false; } targets.push(f.hash); }); if (targets.length) { fm.exec('rm', targets, { _userAction : true, addTexts : [ fm.i18n('folderToEmpty', dir.name) ] }) .fail(function(error) { fm.trigger('unselectfiles', {files: fm.selected()}); done(fm.parseError(error) || ''); }) .done(function() { done(i); }); } } } else { fm.toast({ mode: 'warning', msg: fm.i18n('filderIsEmpty', dir.name)}); done(''); } }).fail(function(error) { done(fm.parseError(error) || ''); }); }); return dfrd; }; }; plugins/file-manager-advanced/application/library/js/commands/extract.js000064400000012221147176754550022536 0ustar00/** * @class elFinder command "extract" * Extract files from archive * * @author Dmitry (dio) Levashov **/ elFinder.prototype.commands.extract = function() { "use strict"; var self = this, fm = self.fm, mimes = [], filter = function(files) { var fres = true; return $.grep(files, function(file) { fres = fres && file.read && $.inArray(file.mime, mimes) !== -1 ? true : false; return fres; }); }; this.variants = []; this.disableOnSearch = true; // Update mimes list on open/reload fm.bind('open reload', function() { mimes = fm.option('archivers')['extract'] || []; if (fm.api > 2) { self.variants = [[{makedir: true}, fm.i18n('cmdmkdir')], [{}, fm.i18n('btnCwd')]]; } else { self.variants = [[{}, fm.i18n('btnCwd')]]; } self.change(); }); this.getstate = function(select) { var sel = this.files(select), cnt = sel.length, cwdHash, cwdChk; if (!cnt || filter(sel).length != cnt) { return -1; } else if (fm.searchStatus.state > 0) { cwdHash = this.fm.cwd().hash; $.each(sel, function(i, file) { cwdChk = (file.phash === cwdHash); return cwdChk; }); return cwdChk? 0 : -1; } else { return this.fm.cwd().write? 0 : -1; } }; this.exec = function(hashes, opts) { var files = this.files(hashes), dfrd = $.Deferred(), cnt = files.length, makedir = opts && opts.makedir ? 1 : 0, i, error, decision, overwriteAll = false, omitAll = false, mkdirAll = 0, siblings = fm.files(files[0].phash), names = [], map = {}; $.each(siblings, function(id, file) { map[file.name] = file; names.push(file.name); }); var decide = function(decision) { switch (decision) { case 'overwrite_all' : overwriteAll = true; break; case 'omit_all': omitAll = true; break; } }; var unpack = function(file) { if (!(file.read && fm.file(file.phash).write)) { error = ['errExtract', file.name, 'errPerm']; fm.error(error); dfrd.reject(error); } else if ($.inArray(file.mime, mimes) === -1) { error = ['errExtract', file.name, 'errNoArchive']; fm.error(error); dfrd.reject(error); } else { fm.request({ data:{cmd:'extract', target:file.hash, makedir:makedir}, notify:{type:'extract', cnt:1}, syncOnFail:true, navigate:{ toast : makedir? { incwd : {msg: fm.i18n(['complete', fm.i18n('cmdextract')]), action: {cmd: 'open', msg: 'cmdopen'}}, inbuffer : {msg: fm.i18n(['complete', fm.i18n('cmdextract')]), action: {cmd: 'open', msg: 'cmdopen'}} } : { inbuffer : {msg: fm.i18n(['complete', fm.i18n('cmdextract')])} } } }) .fail(function (error) { if (dfrd.state() != 'rejected') { dfrd.reject(error); } }) .done(function () { }); } }; var confirm = function(files, index) { var file = files[index], name = fm.splitFileExtention(file.name)[0], existed = ($.inArray(name, names) >= 0), next = function(){ if((index+1) < cnt) { confirm(files, index+1); } else { dfrd.resolve(); } }; if (!makedir && existed && map[name].mime != 'directory') { fm.confirm( { title : fm.i18n('ntfextract'), text : ['errExists', name, 'confirmRepl'], accept:{ label : 'btnYes', callback:function (all) { decision = all ? 'overwrite_all' : 'overwrite'; decide(decision); if(!overwriteAll && !omitAll) { if('overwrite' == decision) { unpack(file); } if((index+1) < cnt) { confirm(files, index+1); } else { dfrd.resolve(); } } else if(overwriteAll) { for (i = index; i < cnt; i++) { unpack(files[i]); } dfrd.resolve(); } } }, reject : { label : 'btnNo', callback:function (all) { decision = all ? 'omit_all' : 'omit'; decide(decision); if(!overwriteAll && !omitAll && (index+1) < cnt) { confirm(files, index+1); } else if (omitAll) { dfrd.resolve(); } } }, cancel : { label : 'btnCancel', callback:function () { dfrd.resolve(); } }, all : ((index+1) < cnt) } ); } else if (!makedir) { if (mkdirAll == 0) { fm.confirm({ title : fm.i18n('cmdextract'), text : [fm.i18n('cmdextract')+' "'+file.name+'"', 'confirmRepl'], accept:{ label : 'btnYes', callback:function (all) { all && (mkdirAll = 1); unpack(file); next(); } }, reject : { label : 'btnNo', callback:function (all) { all && (mkdirAll = -1); next(); } }, cancel : { label : 'btnCancel', callback:function () { dfrd.resolve(); } }, all : ((index+1) < cnt) }); } else { (mkdirAll > 0) && unpack(file); next(); } } else { unpack(file); next(); } }; if (!(this.enabled() && cnt && mimes.length)) { return dfrd.reject(); } if(cnt > 0) { confirm(files, 0); } return dfrd; }; }; plugins/file-manager-advanced/application/library/js/commands/forward.js000064400000000775147176754550022543 0ustar00/** * @class elFinder command "forward" * Open next visited folder * * @author Dmitry (dio) Levashov **/ (elFinder.prototype.commands.forward = function() { "use strict"; this.alwaysEnabled = true; this.updateOnSelect = true; this.shortcuts = [{ pattern : 'ctrl+right' }]; this.getstate = function() { return this.fm.history.canForward() ? 0 : -1; }; this.exec = function() { return this.fm.history.forward(); }; }).prototype = { forceLoad : true }; // this is required command plugins/file-manager-advanced/application/library/js/commands/fullscreen.js000064400000002055147176754550023232 0ustar00/** * @class elFinder command "fullscreen" * elFinder node to full scrren mode * * @author Naoki Sawada **/ elFinder.prototype.commands.fullscreen = function() { "use strict"; var self = this, fm = this.fm, update = function(e, data) { var full; e.preventDefault(); e.stopPropagation(); if (data && data.fullscreen) { full = (data.fullscreen === 'on'); self.update(void(0), full); self.title = fm.i18n(full ? 'reinstate' : 'cmdfullscreen'); } }; this.alwaysEnabled = true; this.updateOnSelect = false; this.syncTitleOnChange = true; this.value = false; this.options = { ui : 'fullscreenbutton' }; this.getstate = function() { return 0; }; this.exec = function() { var node = fm.getUI().get(0), full = (node === fm.toggleFullscreen(node)); self.title = fm.i18n(full ? 'reinstate' : 'cmdfullscreen'); self.update(void(0), full); return $.Deferred().resolve(); }; fm.bind('init', function() { fm.getUI().off('resize.' + fm.namespace, update).on('resize.' + fm.namespace, update); }); }; plugins/file-manager-advanced/application/library/js/commands/getfile.js000064400000010051147176754550022502 0ustar00/** * @class elFinder command "getfile". * Return selected files info into outer callback. * For use elFinder with wysiwyg editors etc. * * @author Dmitry (dio) Levashov, dio@std42.ru **/ (elFinder.prototype.commands.getfile = function() { "use strict"; var self = this, fm = this.fm, filter = function(files) { var o = self.options, fres = true; files = $.grep(files, function(file) { fres = fres && (file.mime != 'directory' || o.folders) && file.read ? true : false; return fres; }); return o.multiple || files.length == 1 ? files : []; }; this.alwaysEnabled = true; this.callback = fm.options.getFileCallback; this._disabled = typeof(this.callback) == 'function'; this.getstate = function(select) { var sel = this.files(select), cnt = sel.length; return this.callback && cnt && filter(sel).length == cnt ? 0 : -1; }; this.exec = function(hashes) { var fm = this.fm, opts = this.options, files = this.files(hashes), cnt = files.length, url = fm.option('url'), tmb = fm.option('tmbUrl'), dfrd = $.Deferred() .done(function(data) { var res, done = function() { if (opts.oncomplete == 'close') { fm.hide(); } else if (opts.oncomplete == 'destroy') { fm.destroy(); } }, fail = function(error) { if (opts.onerror == 'close') { fm.hide(); } else if (opts.onerror == 'destroy') { fm.destroy(); } else { error && fm.error(error); } }; fm.trigger('getfile', {files : data}); try { res = self.callback(data, fm); } catch(e) { fail(['Error in `getFileCallback`.', e.message]); return; } if (typeof res === 'object' && typeof res.done === 'function') { res.done(done).fail(fail); } else { done(); } }), result = function(file) { return opts.onlyURL ? opts.multiple ? $.map(files, function(f) { return f.url; }) : files[0].url : opts.multiple ? files : files[0]; }, req = [], i, file, dim; for (i = 0; i < cnt; i++) { file = files[i]; if (file.mime == 'directory' && !opts.folders) { return dfrd.reject(); } file.baseUrl = url; if (file.url == '1') { req.push(fm.request({ data : {cmd : 'url', target : file.hash}, notify : {type : 'url', cnt : 1, hideCnt : true}, preventDefault : true }) .done(function(data) { if (data.url) { var rfile = fm.file(this.hash); rfile.url = this.url = data.url; } }.bind(file))); } else { file.url = fm.url(file.hash); } if (! opts.onlyURL) { if (opts.getPath) { file.path = fm.path(file.hash); if (file.path === '' && file.phash) { // get parents (function() { var dfd = $.Deferred(); req.push(dfd); fm.path(file.hash, false, {}) .done(function(path) { file.path = path; }) .fail(function() { file.path = ''; }) .always(function() { dfd.resolve(); }); })(); } } if (file.tmb && file.tmb != 1) { file.tmb = tmb + file.tmb; } if (!file.width && !file.height) { if (file.dim) { dim = file.dim.split('x'); file.width = dim[0]; file.height = dim[1]; } else if (opts.getImgSize && file.mime.indexOf('image') !== -1) { req.push(fm.request({ data : {cmd : 'dim', target : file.hash}, notify : {type : 'dim', cnt : 1, hideCnt : true}, preventDefault : true }) .done(function(data) { if (data.dim) { var dim = data.dim.split('x'); var rfile = fm.file(this.hash); rfile.width = this.width = dim[0]; rfile.height = this.height = dim[1]; } }.bind(file))); } } } } if (req.length) { $.when.apply(null, req).always(function() { dfrd.resolve(result(files)); }); return dfrd; } return dfrd.resolve(result(files)); }; }).prototype = { forceLoad : true }; // this is required command plugins/file-manager-advanced/application/library/js/commands/help.js000064400000033710147176754550022022 0ustar00/** * @class elFinder command "help" * "About" dialog * * @author Dmitry (dio) Levashov **/ (elFinder.prototype.commands.help = function() { "use strict"; var fm = this.fm, self = this, linktpl = '', linktpltgt = '', atpl = '
      {author}
      {work}
      ', url = /\{url\}/, link = /\{link\}/, author = /\{author\}/, work = /\{work\}/, r = 'replace', prim = 'ui-priority-primary', sec = 'ui-priority-secondary', lic = 'elfinder-help-license', tab = '
    • {title}
    • ', html = ['
      ', '
        '], stpl = '
        {pattern}
        {descrip}
        ', sep = '
        ', selfUrl = $('base').length? fm.escape(document.location.href.replace(/#.*$/, '')) : '', clTabActive = fm.res('class', 'tabsactive'), getTheme = function() { var src; if (fm.theme && fm.theme.author) { src = atpl[r]('elfinder-help-team', 'elfinder-help-team elfinder-help-term-theme')[r](author, fm.i18n(fm.theme.author) + (fm.theme.email? ' <'+fm.theme.email+'>' : ''))[r](work, fm.i18n('theme') + ' ('+fm.i18n(fm.theme.name)+')'); } else { src = ''; } return src; }, about = function() { html.push('
        '); html.push('

        elFinder

        '); html.push('
        '+fm.i18n('webfm')+'
        '); html.push('
        '+fm.i18n('ver')+': '+fm.version+'
        '); html.push('
        '+fm.i18n('protocolver')+':
        '); html.push('
        jQuery/jQuery UI: '+$().jquery+'/'+$.ui.version+'
        '); html.push(sep); html.push(linktpltgt[r](url, 'https://studio-42.github.io/elFinder/')[r](link, fm.i18n('homepage'))); html.push(linktpltgt[r](url, 'https://github.com/Studio-42/elFinder/wiki')[r](link, fm.i18n('docs'))); html.push(linktpltgt[r](url, 'https://github.com/Studio-42/elFinder')[r](link, fm.i18n('github'))); //html.push(linktpltgt[r](url, 'http://twitter.com/elrte_elfinder')[r](link, fm.i18n('twitter'))); html.push(sep); html.push('
        '+fm.i18n('team')+'
        '); html.push(atpl[r](author, 'Dmitry "dio" Levashov <dio@std42.ru>')[r](work, fm.i18n('chiefdev'))); html.push(atpl[r](author, 'Naoki Sawada (nao-pon)<hypweb+elfinder@gmail.com>')[r](work, fm.i18n('developer'))); html.push(atpl[r](author, 'Troex Nevelin <troex@fury.scancode.ru>')[r](work, fm.i18n('maintainer'))); html.push(atpl[r](author, 'Alexey Sukhotin <strogg@yandex.ru>')[r](work, fm.i18n('contributor'))); if (fm.i18[fm.lang].translator) { $.each(fm.i18[fm.lang].translator.split(', '), function() { html.push(atpl[r](author, $.trim(this))[r](work, fm.i18n('translator')+' ('+fm.i18[fm.lang].language+')')); }); } html.push(getTheme()); html.push(sep); html.push('
        '+fm.i18n('icons')+': Pixelmixer, Fugue, Icons8
        '); html.push(sep); html.push('
        Licence: 3-clauses BSD Licence
        '); html.push('
        Copyright © 2009-2022, Studio 42 / nao-pon
        '); html.push('
        „ …'+fm.i18n('dontforget')+' ”
        '); html.push('
        '); }, shortcuts = function() { var sh = fm.shortcuts(); // shortcuts tab html.push('
        '); if (sh.length) { html.push('
        '); $.each(sh, function(i, s) { html.push(stpl.replace(/\{pattern\}/, s[0]).replace(/\{descrip\}/, s[1])); }); html.push('
        '); } else { html.push('
        '+fm.i18n('shortcutsof')+'
        '); } html.push('
        '); }, help = function() { // help tab html.push('
        '); html.push('DON\'T PANIC'); html.push('
        '); // end help }, useInteg = false, integrations = function() { useInteg = true; html.push('
        '); }, useDebug = false, debug = function() { useDebug = true; // debug tab html.push('
        '); html.push('
          '); html.push('
          '); // end debug }, debugRender = function() { var render = function(elm, obj) { $.each(obj, function(k, v) { elm.append($('
          ').text(k)); if (typeof v === 'undefined') { elm.append($('
          ').append($('').text('undfined'))); } else if (typeof v === 'object' && !v) { elm.append($('
          ').append($('').text('null'))); } else if (typeof v === 'object' && ($.isPlainObject(v) || v.length)) { elm.append( $('
          ').append(render($('
          '), v))); } else { elm.append($('
          ').append($('').text((v && typeof v === 'object')? '[]' : (v? v : '""')))); } }); return elm; }, cnt = debugUL.children('li').length, targetL, target, tabId, info, lastUL, lastDIV; if (self.debug.options || self.debug.debug) { if (cnt >= 5) { lastUL = debugUL.children('li:last'); lastDIV = debugDIV.children('div:last'); if (lastDIV.is(':hidden')) { lastUL.remove(); lastDIV.remove(); } else { lastUL.prev().remove(); lastDIV.prev().remove(); } } tabId = fm.namespace + '-help-debug-' + (+new Date()); targetL = $('
        • ').html(''+self.debug.debug.cmd+'').prependTo(debugUL); target = $('
          ').data('debug', self.debug); targetL.on('click.debugrender', function() { var debug = target.data('debug'); target.removeData('debug'); if (debug) { target.hide(); if (debug.debug) { info = $('
          ').append($('').text('debug'), render($('
          '), debug.debug)); target.append(info); } if (debug.options) { info = $('
          ').append($('').text('options'), render($('
          '), debug.options)); target.append(info); } target.show(); } targetL.off('click.debugrender'); }); debugUL.after(target); opened && debugDIV.tabs('refresh'); } }, content = '', opened, tabInteg, integDIV, tabDebug, debugDIV, debugUL; this.alwaysEnabled = true; this.updateOnSelect = false; this.state = -1; this.shortcuts = [{ pattern : 'f1', description : this.title }]; fm.bind('load', function() { var parts = self.options.view || ['about', 'shortcuts', 'help', 'integrations', 'debug'], i, helpSource, tabBase, tabNav, tabs, delta; // remove 'preference' tab, it moved to command 'preference' if ((i = $.inArray('preference', parts)) !== -1) { parts.splice(i, 1); } // debug tab require jQueryUI Tabs Widget if (! $.fn.tabs) { if ((i = $.inArray(parts, 'debug')) !== -1) { parts.splice(i, 1); } } $.each(parts, function(i, title) { html.push(tab[r](/\{id\}/g, title)[r](/\{title\}/, fm.i18n(title))); }); html.push('
        '); $.inArray('about', parts) !== -1 && about(); $.inArray('shortcuts', parts) !== -1 && shortcuts(); if ($.inArray('help', parts) !== -1) { helpSource = fm.i18nBaseUrl + 'help/%s.html.js'; help(); } $.inArray('integrations', parts) !== -1 && integrations(); $.inArray('debug', parts) !== -1 && debug(); html.push('
        '); content = $(html.join('')); content.find('.ui-tabs-nav li') .on('mouseenter mouseleave', function(e) { $(this).toggleClass('ui-state-hover', e.type === 'mouseenter'); }) .on('focus blur', 'a', function(e) { $(e.delegateTarget).toggleClass('ui-state-focus', e.type === 'focusin'); }) .children() .on('click', function(e) { var link = $(this); e.preventDefault(); e.stopPropagation(); link.parent().addClass(clTabActive).siblings().removeClass(clTabActive); content.children('.ui-tabs-panel').hide().filter(link.attr('href')).show(); }) .filter(':first').trigger('click'); if (useInteg) { tabInteg = content.find('.elfinder-help-tab-integrations').hide(); integDIV = content.find('#'+fm.namespace+'-help-integrations').hide().append($('
        ').html(fm.i18n('integrationWith'))); fm.bind('helpIntegration', function(e) { var ul = integDIV.children('ul:first'), data, elm, cmdUL, cmdCls; if (e.data) { if ($.isPlainObject(e.data)) { data = Object.assign({ link: '', title: '', banner: '' }, e.data); if (data.title || data.link) { if (!data.title) { data.title = data.link; } if (data.link) { elm = $('').attr('href', data.link).attr('target', '_blank').text(data.title); } else { elm = $('').text(data.title); } if (data.banner) { elm = $('').append($('').attr(data.banner), elm); } } } else { elm = $(e.data); elm.filter('a').each(function() { var tgt = $(this); if (!tgt.attr('target')) { tgt.attr('target', '_blank');; } }); } if (elm) { tabInteg.show(); if (!ul.length) { ul = $('
          ').appendTo(integDIV); } if (data && data.cmd) { cmdCls = 'elfinder-help-integration-' + data.cmd; cmdUL = ul.find('ul.' + cmdCls); if (!cmdUL.length) { cmdUL = $('
            '); ul.append($('
          • ').append($('').html(fm.i18n('cmd'+data.cmd))).append(cmdUL)); } elm = cmdUL.append($('
          • ').append(elm)); } else { ul.append($('
          • ').append(elm)); } } } }).bind('themechange', function() { content.find('div.elfinder-help-term-theme').replaceWith(getTheme()); }); } // debug if (useDebug) { tabDebug = content.find('.elfinder-help-tab-debug').hide(); debugDIV = content.find('#'+fm.namespace+'-help-debug').children('div:first'); debugUL = debugDIV.children('ul:first').on('click', function(e) { e.preventDefault(); e.stopPropagation(); }); self.debug = {}; fm.bind('backenddebug', function(e) { // CAUTION: DO NOT TOUCH `e.data` if (useDebug && e.data && e.data.debug) { self.debug = { options : e.data.options, debug : Object.assign({ cmd : fm.currentReqCmd }, e.data.debug) }; if (self.dialog) { debugRender(); } } }); } content.find('#'+fm.namespace+'-help-about').find('.apiver').text(fm.api); self.dialog = self.fmDialog(content, { title : self.title, width : 530, maxWidth: 'window', maxHeight: 'window', autoOpen : false, destroyOnClose : false, close : function() { if (useDebug) { tabDebug.hide(); debugDIV.tabs('destroy'); } opened = false; } }) .on('click', function(e) { e.stopPropagation(); }) .css({ overflow: 'hidden' }); tabBase = self.dialog.children('.ui-tabs'); tabNav = tabBase.children('.ui-tabs-nav:first'); tabs = tabBase.children('.ui-tabs-panel'); delta = self.dialog.outerHeight(true) - self.dialog.height(); self.dialog.closest('.ui-dialog').on('resize', function() { tabs.height(self.dialog.height() - delta - tabNav.outerHeight(true) - 20); }); if (helpSource) { self.dialog.one('initContents', function() { $.ajax({ url: self.options.helpSource? self.options.helpSource : helpSource.replace('%s', fm.lang), dataType: 'html' }).done(function(source) { $('#'+fm.namespace+'-help-help').html(source); }).fail(function() { $.ajax({ url: helpSource.replace('%s', 'en'), dataType: 'html' }).done(function(source) { $('#'+fm.namespace+'-help-help').html(source); }); }); }); } self.state = 0; fm.trigger('helpBuilded', self.dialog); }).one('open', function() { var debug = false; fm.one('backenddebug', function() { debug =true; }).one('opendone', function() { requestAnimationFrame(function() { if (! debug && useDebug) { useDebug = false; tabDebug.hide(); debugDIV.hide(); debugUL.hide(); } }); }); }); this.getstate = function() { return 0; }; this.exec = function(sel, opts) { var tab = opts? opts.tab : void(0), debugShow = function() { if (useDebug) { debugDIV.tabs(); debugUL.find('a:first').trigger('click'); tabDebug.show(); opened = true; } }; debugShow(); this.dialog.trigger('initContents').elfinderdialog('open').find((tab? '.elfinder-help-tab-'+tab : '.ui-tabs-nav li') + ' a:first').trigger('click'); return $.Deferred().resolve(); }; }).prototype = { forceLoad : true }; // this is required command plugins/file-manager-advanced/application/library/js/commands/hidden.js000064400000000424147176754550022321 0ustar00/** * @class elFinder command "hidden" * Always hidden command for uiCmdMap * * @author Naoki Sawada **/ elFinder.prototype.commands.hidden = function() { "use strict"; this.hidden = true; this.updateOnSelect = false; this.getstate = function() { return -1; }; };plugins/file-manager-advanced/application/library/js/commands/hide.js000064400000010357147176754550022005 0ustar00/** * @class elFinder command "hide". * folders/files to hide as personal setting. * * @type elFinder.command * @author Naoki Sawada */ elFinder.prototype.commands.hide = function() { "use strict"; var self = this, nameCache = {}, hideData, hideCnt, cMenuType, sOrigin; this.syncTitleOnChange = true; this.shortcuts = [{ pattern : 'ctrl+shift+dot', description : this.fm.i18n('toggleHidden') }]; this.init = function() { var fm = this.fm; hideData = fm.storage('hide') || {items: {}}; hideCnt = Object.keys(hideData.items).length; this.title = fm.i18n(hideData.show? 'hideHidden' : 'showHidden'); self.update(void(0), self.title); }; this.fm.bind('select contextmenucreate closecontextmenu', function(e, fm) { var sel = (e.data? (e.data.selected || e.data.targets) : null) || fm.selected(); if (e.type === 'select' && e.data) { sOrigin = e.data.origin; } else if (e.type === 'contextmenucreate') { cMenuType = e.data.type; } if (!sel.length || (((e.type !== 'contextmenucreate' && sOrigin !== 'navbar') || cMenuType === 'cwd') && sel[0] === fm.cwd().hash)) { self.title = fm.i18n(hideData.show? 'hideHidden' : 'showHidden'); } else { self.title = fm.i18n('cmdhide'); } if (e.type !== 'closecontextmenu') { self.update(cMenuType === 'cwd'? (hideCnt? 0 : -1) : void(0), self.title); } else { cMenuType = ''; requestAnimationFrame(function() { self.update(void(0), self.title); }); } }); this.getstate = function(sel) { return (this.fm.cookieEnabled && cMenuType !== 'cwd' && (sel || this.fm.selected()).length) || hideCnt? 0 : -1; }; this.exec = function(hashes, opts) { var fm = this.fm, dfrd = $.Deferred() .done(function() { fm.trigger('hide', {items: items, opts: opts}); }) .fail(function(error) { fm.error(error); }), o = opts || {}, items = o.targets? o.targets : (hashes || fm.selected()), added = [], removed = [], notifyto, files, res; hideData = fm.storage('hide') || {}; if (!$.isPlainObject(hideData)) { hideData = {}; } if (!$.isPlainObject(hideData.items)) { hideData.items = {}; } if (opts._currentType === 'shortcut' || !items.length || (opts._currentType !== 'navbar' && sOrigin !=='navbar' && items[0] === fm.cwd().hash)) { if (hideData.show) { o.hide = true; } else if (Object.keys(hideData.items).length) { o.show = true; } } if (o.reset) { o.show = true; hideCnt = 0; } if (o.show || o.hide) { if (o.show) { hideData.show = true; } else { delete hideData.show; } if (o.show) { fm.storage('hide', o.reset? null : hideData); self.title = fm.i18n('hideHidden'); self.update(o.reset? -1 : void(0), self.title); $.each(hideData.items, function(h) { var f = fm.file(h, true); if (f && (fm.searchStatus.state || !f.phash || fm.file(f.phash))) { added.push(f); } }); if (added.length) { fm.updateCache({added: added}); fm.add({added: added}); } if (o.reset) { hideData = {items: {}}; } return dfrd.resolve(); } items = Object.keys(hideData.items); } if (items.length) { $.each(items, function(i, h) { var f; if (!hideData.items[h]) { f = fm.file(h); if (f) { nameCache[h] = f.i18 || f.name; } hideData.items[h] = nameCache[h]? nameCache[h] : h; } }); hideCnt = Object.keys(hideData.items).length; files = this.files(items); fm.storage('hide', hideData); fm.remove({removed: items}); if (hideData.show) { this.exec(void(0), {hide: true}); } if (!o.hide) { res = {}; res.undo = { cmd : 'hide', callback : function() { var nData = fm.storage('hide'); if (nData) { $.each(items, function(i, h) { delete nData.items[h]; }); hideCnt = Object.keys(nData.items).length; fm.storage('hide', nData); fm.trigger('hide', {items: items, opts: {}}); self.update(hideCnt? 0 : -1); } fm.updateCache({added: files}); fm.add({added: files}); } }; res.redo = { cmd : 'hide', callback : function() { return fm.exec('hide', void(0), {targets: items}); } }; } } return dfrd.state() == 'rejected' ? dfrd : dfrd.resolve(res); }; }; plugins/file-manager-advanced/application/library/js/commands/home.js000064400000001020147176754550022007 0ustar00(elFinder.prototype.commands.home = function() { "use strict"; this.title = 'Home'; this.alwaysEnabled = true; this.updateOnSelect = false; this.shortcuts = [{ pattern : 'ctrl+home ctrl+shift+up', description : 'Home' }]; this.getstate = function() { var root = this.fm.root(), cwd = this.fm.cwd().hash; return root && cwd && root != cwd ? 0: -1; }; this.exec = function() { return this.fm.exec('open', this.fm.root()); }; }).prototype = { forceLoad : true }; // this is required command plugins/file-manager-advanced/application/library/js/commands/info.js000064400000026771147176754550022036 0ustar00/** * @class elFinder command "info". * Display dialog with file properties. * * @author Dmitry (dio) Levashov, dio@std42.ru **/ (elFinder.prototype.commands.info = function() { "use strict"; var m = 'msg', fm = this.fm, spclass = 'elfinder-spinner', btnclass = 'elfinder-info-button', msg = { calc : fm.i18n('calc'), size : fm.i18n('size'), unknown : fm.i18n('unknown'), path : fm.i18n('path'), aliasfor : fm.i18n('aliasfor'), modify : fm.i18n('modify'), perms : fm.i18n('perms'), locked : fm.i18n('locked'), dim : fm.i18n('dim'), kind : fm.i18n('kind'), files : fm.i18n('files'), folders : fm.i18n('folders'), roots : fm.i18n('volumeRoots'), items : fm.i18n('items'), yes : fm.i18n('yes'), no : fm.i18n('no'), link : fm.i18n('link'), owner : fm.i18n('owner'), group : fm.i18n('group'), perm : fm.i18n('perm'), getlink : fm.i18n('getLink') }, applyZWSP = function(str, remove) { if (remove) { return str.replace(/\u200B/g, ''); } else { return str.replace(/(\/|\\)/g, "$1\u200B"); } }; this.items = ['size', 'aliasfor', 'path', 'link', 'dim', 'modify', 'perms', 'locked', 'owner', 'group', 'perm']; if (this.options.custom && Object.keys(this.options.custom).length) { $.each(this.options.custom, function(name, details) { details.label && this.items.push(details.label); }); } this.tpl = { main : '
            {title}
            {content}
            ', itemTitle : '{name}{kind}', groupTitle : '{items}: {num}', row : '{label} : {value}', spinner : '{text} ' }; this.alwaysEnabled = true; this.updateOnSelect = false; this.shortcuts = [{ pattern : 'ctrl+i' }]; this.init = function() { $.each(msg, function(k, v) { msg[k] = fm.i18n(v); }); }; this.getstate = function() { return 0; }; this.exec = function(hashes) { var files = this.files(hashes); if (! files.length) { files = this.files([ this.fm.cwd().hash ]); } var self = this, fm = this.fm, o = this.options, tpl = this.tpl, row = tpl.row, cnt = files.length, content = [], view = tpl.main, l = '{label}', v = '{value}', reqs = [], reqDfrd = null, opts = { title : fm.i18n('selectionInfo'), width : 'auto', close : function() { $(this).elfinderdialog('destroy'); if (reqDfrd && reqDfrd.state() === 'pending') { reqDfrd.reject(); } $.grep(reqs, function(r) { r && r.state() === 'pending' && r.reject(); }); } }, count = [], replSpinner = function(msg, name, className) { dialog.find('.'+spclass+'-'+name).parent().html(msg).addClass(className || ''); }, id = fm.namespace+'-info-'+$.map(files, function(f) { return f.hash; }).join('-'), dialog = fm.getUI().find('#'+id), customActions = [], style = '', hashClass = 'elfinder-font-mono elfinder-info-hash', getHashAlgorisms = [], ndialog = fm.ui.notify, size, tmb, file, title, dcnt, rdcnt, path, hideItems, hashProg; if (ndialog.is(':hidden') && ndialog.children('.elfinder-notify').length) { ndialog.elfinderdialog('open').height('auto'); } if (!cnt) { return $.Deferred().reject(); } if (dialog.length) { dialog.elfinderdialog('toTop'); return $.Deferred().resolve(); } hideItems = fm.storage('infohides') || fm.arrayFlip(o.hideItems, true); if (cnt === 1) { file = files[0]; if (file.icon) { style = ' '+fm.getIconStyle(file); } view = view.replace('{dirclass}', file.csscls? fm.escape(file.csscls) : '').replace('{class}', fm.mime2class(file.mime)).replace('{style}', style); title = tpl.itemTitle.replace('{name}', fm.escape(file.i18 || file.name)).replace('{kind}', ''+fm.mime2kind(file)+''); tmb = fm.tmb(file); if (!file.read) { size = msg.unknown; } else if (file.mime != 'directory' || file.alias) { size = fm.formatSize(file.size); } else { size = tpl.spinner.replace('{text}', msg.calc).replace('{name}', 'size'); count.push(file.hash); } !hideItems.size && content.push(row.replace(l, msg.size).replace(v, size)); !hideItems.aleasfor && file.alias && content.push(row.replace(l, msg.aliasfor).replace(v, file.alias)); if (!hideItems.path) { if (path = fm.path(file.hash, true)) { content.push(row.replace(l, msg.path).replace(v, applyZWSP(fm.escape(path))).replace('{class}', 'elfinder-info-path')); } else { content.push(row.replace(l, msg.path).replace(v, tpl.spinner.replace('{text}', msg.calc).replace('{name}', 'path')).replace('{class}', 'elfinder-info-path')); reqs.push(fm.path(file.hash, true, {notify: null}) .fail(function() { replSpinner(msg.unknown, 'path'); }) .done(function(path) { replSpinner(applyZWSP(path), 'path'); })); } } if (!hideItems.link && file.read) { var href, name_esc = fm.escape(file.name); if (file.url == '1') { content.push(row.replace(l, msg.link).replace(v, '')); } else { if (file.url) { href = file.url; } else if (file.mime === 'directory') { if (o.nullUrlDirLinkSelf && file.url === null) { var loc = window.location; href = loc.pathname + loc.search + '#elf_' + file.hash; } else if (file.url !== '' && fm.option('url', (!fm.isRoot(file) && file.phash) || file.hash)) { href = fm.url(file.hash); } } else { href = fm.url(file.hash); } href && content.push(row.replace(l, msg.link).replace(v, ''+name_esc+'')); } } if (!hideItems.dim) { if (file.dim) { // old api content.push(row.replace(l, msg.dim).replace(v, file.dim)); } else if (file.mime.indexOf('image') !== -1) { if (file.width && file.height) { content.push(row.replace(l, msg.dim).replace(v, file.width+'x'+file.height)); } else if (file.size && file.size !== '0') { content.push(row.replace(l, msg.dim).replace(v, tpl.spinner.replace('{text}', msg.calc).replace('{name}', 'dim'))); reqs.push(fm.request({ data : {cmd : 'dim', target : file.hash}, preventDefault : true }) .fail(function() { replSpinner(msg.unknown, 'dim'); }) .done(function(data) { replSpinner(data.dim || msg.unknown, 'dim'); if (data.dim) { var dim = data.dim.split('x'); var rfile = fm.file(file.hash); rfile.width = dim[0]; rfile.height = dim[1]; } })); } } } !hideItems.modify && content.push(row.replace(l, msg.modify).replace(v, fm.formatDate(file))); !hideItems.perms && content.push(row.replace(l, msg.perms).replace(v, fm.formatPermissions(file))); !hideItems.locked && content.push(row.replace(l, msg.locked).replace(v, file.locked ? msg.yes : msg.no)); !hideItems.owner && file.owner && content.push(row.replace(l, msg.owner).replace(v, file.owner)); !hideItems.group && file.group && content.push(row.replace(l, msg.group).replace(v, file.group)); !hideItems.perm && file.perm && content.push(row.replace(l, msg.perm).replace(v, fm.formatFileMode(file.perm))); // Add custom info fields if (o.custom) { $.each(o.custom, function(name, details) { if ( !hideItems[details.label] && (!details.mimes || $.grep(details.mimes, function(m){return (file.mime === m || file.mime.indexOf(m+'/') === 0)? true : false;}).length) && (!details.hashRegex || file.hash.match(details.hashRegex)) ) { // Add to the content content.push(row.replace(l, fm.i18n(details.label)).replace(v , details.tpl.replace('{id}', id))); // Register the action if (details.action && (typeof details.action == 'function')) { customActions.push(details.action); } } }); } } else { view = view.replace('{class}', 'elfinder-cwd-icon-group'); title = tpl.groupTitle.replace('{items}', msg.items).replace('{num}', cnt); dcnt = $.grep(files, function(f) { return f.mime == 'directory' ? true : false ; }).length; if (!dcnt) { size = 0; $.each(files, function(h, f) { var s = parseInt(f.size); if (s >= 0 && size >= 0) { size += s; } else { size = 'unknown'; } }); content.push(row.replace(l, msg.kind).replace(v, msg.files)); !hideItems.size && content.push(row.replace(l, msg.size).replace(v, fm.formatSize(size))); } else { rdcnt = $.grep(files, function(f) { return f.mime === 'directory' && (! f.phash || f.isroot)? true : false ; }).length; dcnt -= rdcnt; content.push(row.replace(l, msg.kind).replace(v, (rdcnt === cnt || dcnt === cnt)? msg[rdcnt? 'roots' : 'folders'] : $.map({roots: rdcnt, folders: dcnt, files: cnt - rdcnt - dcnt}, function(c, t) { return c? msg[t]+' '+c : null; }).join(', '))); !hideItems.size && content.push(row.replace(l, msg.size).replace(v, tpl.spinner.replace('{text}', msg.calc).replace('{name}', 'size'))); count = $.map(files, function(f) { return f.hash; }); } } view = view.replace('{title}', title).replace('{content}', content.join('').replace(/{class}/g, '')); dialog = self.fmDialog(view, opts); dialog.attr('id', id).one('mousedown', '.elfinder-info-path', function() { $(this).html(applyZWSP($(this).html(), true)); }); if (getHashAlgorisms.length) { hashProg.appendTo(dialog.find('.'+spclass+'-'+getHashAlgorisms[0]).parent()); } if (fm.UA.Mobile && $.fn.tooltip) { dialog.children('.ui-dialog-content .elfinder-info-title').tooltip({ classes: { 'ui-tooltip': 'elfinder-ui-tooltip ui-widget-shadow' }, tooltipClass: 'elfinder-ui-tooltip ui-widget-shadow', track: true }); } if (file && file.url == '1') { dialog.on('click', '.'+spclass+'-url', function(){ $(this).parent().html(tpl.spinner.replace('{text}', fm.i18n('ntfurl')).replace('{name}', 'url')); fm.request({ data : {cmd : 'url', target : file.hash}, preventDefault : true }) .fail(function() { replSpinner(name_esc, 'url'); }) .done(function(data) { if (data.url) { replSpinner(''+name_esc+'' || name_esc, 'url'); var rfile = fm.file(file.hash); rfile.url = data.url; } else { replSpinner(name_esc, 'url'); } }); }); } // load thumbnail if (tmb) { $('') .on('load', function() { dialog.find('.elfinder-cwd-icon').addClass(tmb.className).css('background-image', "url('"+tmb.url+"')"); }) .attr('src', tmb.url); } // send request to count total size if (count.length) { reqDfrd = fm.getSize(count).done(function(data) { replSpinner(data.formated, 'size'); }).fail(function() { replSpinner(msg.unknown, 'size'); }); } // call custom actions if (customActions.length) { $.each(customActions, function(i, action) { try { action(file, fm, dialog); } catch(e) { fm.debug('error', e); } }); } return $.Deferred().resolve(); }; }).prototype = { forceLoad : true }; // this is required command plugins/file-manager-advanced/application/library/js/commands/mkdir.js000064400000005003147176754550022172 0ustar00/** * @class elFinder command "mkdir" * Create new folder * * @author Dmitry (dio) Levashov **/ elFinder.prototype.commands.mkdir = function() { "use strict"; var fm = this.fm, self = this, curOrg; this.value = ''; this.disableOnSearch = true; this.updateOnSelect = false; this.syncTitleOnChange = true; this.mime = 'directory'; this.prefix = 'untitled folder'; this.exec = function(select, cOpts) { var onCwd; if (select && select.length && cOpts && cOpts._currentType && cOpts._currentType === 'navbar') { this.origin = cOpts._currentType; this.data = { target: select[0] }; } else { onCwd = fm.cwd().hash === select[0]; this.origin = curOrg && !onCwd? curOrg : 'cwd'; delete this.data; } if (! select && ! this.options.intoNewFolderToolbtn) { fm.getUI('cwd').trigger('unselectall'); } //this.move = (!onCwd && curOrg !== 'navbar' && fm.selected().length)? true : false; this.move = this.value === fm.i18n('cmdmkdirin'); return $.proxy(fm.res('mixin', 'make'), self)(); }; this.shortcuts = [{ pattern : 'ctrl+shift+n' }]; this.init = function() { if (this.options.intoNewFolderToolbtn) { this.syncTitleOnChange = true; } }; fm.bind('select contextmenucreate closecontextmenu', function(e) { var sel = (e.data? (e.data.selected || e.data.targets) : null) || fm.selected(); self.className = 'mkdir'; curOrg = e.data && sel.length? (e.data.origin || e.data.type || '') : ''; if (!self.options.intoNewFolderToolbtn && curOrg === '') { curOrg = 'cwd'; } if (sel.length && curOrg !== 'navbar' && curOrg !== 'cwd' && fm.cwd().hash !== sel[0]) { self.title = fm.i18n('cmdmkdirin'); self.className += ' elfinder-button-icon-mkdirin'; } else { self.title = fm.i18n('cmdmkdir'); } if (e.type !== 'closecontextmenu') { self.update(void(0), self.title); } else { requestAnimationFrame(function() { self.update(void(0), self.title); }); } }); this.getstate = function(select) { var cwd = fm.cwd(), sel = (curOrg === 'navbar' || (select && select[0] !== cwd.hash))? this.files(select || fm.selected()) : [], cnt = sel.length, filter = function(files) { var fres = true; return $.grep(files, function(f) { fres = fres && f.read && ! f.locked? true : false; return fres; }); }; if (curOrg === 'navbar') { return cnt && sel[0].write && sel[0].read? 0 : -1; } else { return cwd.write && (!cnt || filter(sel).length == cnt)? 0 : -1; } }; }; plugins/file-manager-advanced/application/library/js/commands/mkfile.js000064400000002715147176754550022342 0ustar00/** * @class elFinder command "mkfile" * Create new empty file * * @author Dmitry (dio) Levashov **/ elFinder.prototype.commands.mkfile = function() { "use strict"; var self = this; this.disableOnSearch = true; this.updateOnSelect = false; this.mime = 'text/plain'; this.prefix = 'untitled file.txt'; this.variants = []; this.getTypeName = function(mime, type) { var fm = self.fm, name; if (name = fm.messages['kind' + fm.kinds[mime]]) { name = fm.i18n(['extentiontype', type.toUpperCase(), name]); } else { name = fm.i18n(['extentionfile', type.toUpperCase()]); } return name; }; this.fm.bind('open reload canMakeEmptyFile', function() { var fm = self.fm, hides = fm.getCommand('edit').getMkfileHides(); self.variants = []; if (fm.mimesCanMakeEmpty) { $.each(fm.mimesCanMakeEmpty, function(mime, type) { type && !hides[mime] && fm.uploadMimeCheck(mime) && self.variants.push([mime, self.getTypeName(mime, type)]); }); } self.change(); }); this.getstate = function() { return this.fm.cwd().write ? 0 : -1; }; this.exec = function(_dum, mime) { var fm = self.fm, type, err; if (type = fm.mimesCanMakeEmpty[mime]) { if (fm.uploadMimeCheck(mime)) { this.mime = mime; this.prefix = fm.i18n(['untitled file', type]); return $.proxy(fm.res('mixin', 'make'), self)(); } err = ['errMkfile', self.getTypeName(mime, type)]; } return $.Deferred().reject(err); }; }; plugins/file-manager-advanced/application/library/js/commands/netmount.js000064400000024402147176754550022741 0ustar00/** * @class elFinder command "netmount" * Mount network volume with user credentials. * * @author Dmitry (dio) Levashov **/ elFinder.prototype.commands.netmount = function() { "use strict"; var self = this, hasMenus = false, content; this.alwaysEnabled = true; this.updateOnSelect = false; this.drivers = []; this.handlers = { load : function() { var fm = self.fm; if (fm.cookieEnabled) { fm.one('open', function() { self.drivers = fm.netDrivers; if (self.drivers.length) { $.each(self.drivers, function() { var d = self.options[this]; if (d) { hasMenus = true; if (d.integrateInfo) { fm.trigger('helpIntegration', Object.assign({cmd: 'netmount'}, d.integrateInfo)); } } }); } }); } } }; this.getstate = function() { return hasMenus ? 0 : -1; }; this.exec = function() { var fm = self.fm, dfrd = $.Deferred(), o = self.options, create = function() { var winFocus = function() { inputs.protocol.trigger('change', 'winfocus'); }, inputs = { protocol : $('') .on('change', function(e, data){ var protocol = this.value; content.find('.elfinder-netmount-tr').hide(); content.find('.elfinder-netmount-tr-'+protocol).show(); dialogNode && dialogNode.children('.ui-dialog-buttonpane:first').find('button').show(); if (typeof o[protocol].select == 'function') { o[protocol].select(fm, e, data); } }) .addClass('ui-corner-all') }, opts = { title : fm.i18n('netMountDialogTitle'), resizable : true, modal : true, destroyOnClose : false, open : function() { $(window).on('focus.'+fm.namespace, winFocus); inputs.protocol.trigger('change'); }, close : function() { dfrd.state() == 'pending' && dfrd.reject(); $(window).off('focus.'+fm.namespace, winFocus); }, buttons : {} }, doMount = function() { var protocol = inputs.protocol.val(), data = {cmd : 'netmount', protocol: protocol}, cur = o[protocol], mnt2res; $.each(content.find('input.elfinder-netmount-inputs-'+protocol), function(name, input) { var val, elm; elm = $(input); if (elm.is(':radio,:checkbox')) { if (elm.is(':checked')) { val = $.trim(elm.val()); } } else { val = $.trim(elm.val()); } if (val) { data[input.name] = val; } }); if (!data.host) { return fm.trigger('error', {error : 'errNetMountHostReq', opts : {modal: true}}); } if (data.mnt2res) { mnt2res = true; } fm.request({data : data, notify : {type : 'netmount', cnt : 1, hideCnt : true}}) .done(function(data) { var pdir; if (data.added && data.added.length) { mnt2res && inputs.protocol.trigger('change', 'reset'); if (data.added[0].phash) { if (pdir = fm.file(data.added[0].phash)) { if (! pdir.dirs) { pdir.dirs = 1; fm.change({ changed: [ pdir ] }); } } } fm.one('netmountdone', function() { fm.exec('open', data.added[0].hash); }); } dfrd.resolve(); }) .fail(function(error) { if (cur.fail && typeof cur.fail == 'function') { cur.fail(fm, fm.parseError(error)); } dfrd.reject(error); }); self.dialog.elfinderdialog('close'); }, form = $('
            ').on('keydown', 'input', function(e) { var comp = true, next; if (e.keyCode === $.ui.keyCode.ENTER) { $.each(form.find('input:visible:not(.elfinder-input-optional)'), function() { if ($(this).val() === '') { comp = false; next = $(this); return false; } }); if (comp) { doMount(); } else { next.trigger('focus'); } } }), hidden = $('
            '), dialog; content = $('
            ') .append($('').append($(''+fm.i18n('protocol')+'')).append($('').append(inputs.protocol))); $.each(self.drivers, function(i, protocol) { if (o[protocol]) { inputs.protocol.append(''); $.each(o[protocol].inputs, function(name, input) { input.attr('name', name); if (input.attr('type') != 'hidden') { input.addClass('ui-corner-all elfinder-netmount-inputs-'+protocol); content.append($('').addClass('elfinder-netmount-tr elfinder-netmount-tr-'+protocol).append($(''+fm.i18n(name)+'')).append($('').append(input))); } else { input.addClass('elfinder-netmount-inputs-'+protocol); hidden.append(input); } }); o[protocol].protocol = inputs.protocol; } }); content.append(hidden); content.find('.elfinder-netmount-tr').hide(); content.find('.elfinder-netmount-tr-' + self.drivers[0]).show(); opts.buttons[fm.i18n('btnMount')] = doMount; opts.buttons[fm.i18n('btnCancel')] = function() { self.dialog.elfinderdialog('close'); }; content.find('select,input').addClass('elfinder-tabstop'); dialog = self.fmDialog(form.append(content), opts).ready(function() { inputs.protocol.trigger('change'); dialog.elfinderdialog('posInit'); }); dialogNode = dialog.closest('.ui-dialog'); return dialog; }, dialogNode; if (!self.dialog) { self.dialog = create(); } else { self.dialog.elfinderdialog('open'); } return dfrd.promise(); }; self.fm.bind('netmount', function(e) { var d = e.data || null, o = self.options, done = function() { if (o[d.protocol] && typeof o[d.protocol].done == 'function') { o[d.protocol].done(self.fm, d); content.find('select,input').addClass('elfinder-tabstop'); self.dialog.elfinderdialog('tabstopsInit'); } }; if (d && d.protocol) { if (d.mode && d.mode === 'redirect') { // To support of third-party cookie blocking (ITP) on CORS // On iOS and iPadOS 13.4 and Safari 13.1 on macOS, the session cannot be continued when redirecting OAuth in CORS mode self.fm.request({ data : {cmd : 'netmount', protocol : d.protocol, host: d.host, user : 'init', pass : 'return', options: d.options}, preventDefault : true }).done(function(data) { d = JSON.parse(data.body); done(); }); } else { done(); } } }); }; elFinder.prototype.commands.netunmount = function() { var self = this; this.alwaysEnabled = true; this.updateOnSelect = false; this.drivers = []; this.handlers = { load : function() { this.drivers = this.fm.netDrivers; } }; this.getstate = function(sel) { var fm = this.fm, file; return !!sel && this.drivers.length && !this._disabled && (file = fm.file(sel[0])) && file.netkey ? 0 : -1; }; this.exec = function(hashes) { var self = this, fm = this.fm, dfrd = $.Deferred() .fail(function(error) { error && fm.error(error); }), drive = fm.file(hashes[0]), childrenRoots = function(hash) { var roots = [], work; if (fm.leafRoots) { work = []; $.each(fm.leafRoots, function(phash, hashes) { var parents = fm.parents(phash), idx, deep; if ((idx = $.inArray(hash, parents)) !== -1) { idx = parents.length - idx; $.each(hashes, function(i, h) { work.push({i: idx, hash: h}); }); } }); if (work.length) { work.sort(function(a, b) { return a.i < b.i; }); $.each(work, function(i, o) { roots.push(o.hash); }); } } return roots; }; if (this._disabled) { return dfrd.reject(); } if (dfrd.state() == 'pending') { fm.confirm({ title : self.title, text : fm.i18n('confirmUnmount', drive.name), accept : { label : 'btnUnmount', callback : function() { var target = drive.hash, roots = childrenRoots(target), requests = [], removed = [], doUmount = function() { $.when(requests).done(function() { fm.request({ data : {cmd : 'netmount', protocol : 'netunmount', host: drive.netkey, user : target, pass : 'dum'}, notify : {type : 'netunmount', cnt : 1, hideCnt : true}, preventFail : true }) .fail(function(error) { dfrd.reject(error); }) .done(function(data) { drive.volumeid && delete fm.volumeExpires[drive.volumeid]; dfrd.resolve(); }); }).fail(function(error) { if (removed.length) { fm.remove({ removed: removed }); } dfrd.reject(error); }); }; if (roots.length) { fm.confirm({ title : self.title, text : (function() { var msgs = ['unmountChildren']; $.each(roots, function(i, hash) { msgs.push([fm.file(hash).name]); }); return msgs; })(), accept : { label : 'btnUnmount', callback : function() { $.each(roots, function(i, hash) { var d = fm.file(hash); if (d.netkey) { requests.push(fm.request({ data : {cmd : 'netmount', protocol : 'netunmount', host: d.netkey, user : d.hash, pass : 'dum'}, notify : {type : 'netunmount', cnt : 1, hideCnt : true}, preventDefault : true }).done(function(data) { if (data.removed) { d.volumeid && delete fm.volumeExpires[d.volumeid]; removed = removed.concat(data.removed); } })); } }); doUmount(); } }, cancel : { label : 'btnCancel', callback : function() { dfrd.reject(); } } }); } else { requests = null; doUmount(); } } }, cancel : { label : 'btnCancel', callback : function() { dfrd.reject(); } } }); } return dfrd; }; }; plugins/file-manager-advanced/application/library/js/commands/opendir.js000064400000001561147176754550022531 0ustar00/** * @class elFinder command "opendir" * Enter parent folder * * @author Naoki Sawada **/ elFinder.prototype.commands.opendir = function() { "use strict"; this.alwaysEnabled = true; this.getstate = function() { var sel = this.fm.selected(), cnt = sel.length, wz; if (cnt !== 1) { return -1; } wz = this.fm.getUI('workzone'); return wz.hasClass('elfinder-search-result')? 0 : -1; }; this.exec = function(hashes) { var fm = this.fm, dfrd = $.Deferred(), files = this.files(hashes), cnt = files.length, hash, pcheck = null; if (!cnt || !files[0].phash) { return dfrd.reject(); } hash = files[0].phash; fm.trigger('searchend', { noupdate: true }); fm.request({ data : {cmd : 'open', target : hash}, notify : {type : 'open', cnt : 1, hideCnt : true}, syncOnFail : false }); return dfrd; }; }; plugins/file-manager-advanced/application/library/js/commands/open.js000064400000015361147176754550022035 0ustar00/** * @class elFinder command "open" * Enter folder or open files in new windows * * @author Dmitry (dio) Levashov **/ (elFinder.prototype.commands.open = function() { "use strict"; var fm = this.fm, self = this; this.alwaysEnabled = true; this.noChangeDirOnRemovedCwd = true; this._handlers = { dblclick : function(e) { var arg = e.data && e.data.file? [ e.data.file ]: void(0); if (self.getstate(arg) === 0) { e.preventDefault(); fm.exec('open', arg); } }, 'select enable disable reload' : function(e) { this.update(e.type == 'disable' ? -1 : void(0)); } }; this.shortcuts = [{ pattern : 'ctrl+down numpad_enter'+(fm.OS != 'mac' && ' enter') }]; this.getstate = function(select) { var sel = this.files(select), cnt = sel.length, filter = function(files) { var fres = true; return $.grep(files, function(file) { fres = fres && file.mime == 'directory' || ! file.read ? false : true; return fres; }); }; return cnt == 1 ? (sel[0].read ? 0 : -1) : (cnt && !fm.UA.Mobile) ? ($.grep(sel, function(file) { return file.mime == 'directory' || ! file.read ? false : true;}).length == cnt ? 0 : -1) : -1; }; this.exec = function(hashes, cOpts) { var dfrd = $.Deferred().fail(function(error) { error && fm.error(error); }), files = this.files(hashes), cnt = files.length, thash = (typeof cOpts == 'object')? cOpts.thash : false, opts = this.options, into = opts.into || 'window', file, url, s, w, imgW, imgH, winW, winH, reg, link, html5dl, inline, selAct, cmd; if (!cnt && !thash) { { return dfrd.reject(); } } // open folder if (thash || (cnt == 1 && (file = files[0]) && file.mime == 'directory')) { if (!thash && file && !file.read) { return dfrd.reject(['errOpen', file.name, 'errPerm']); } else { if (fm.keyState.ctrlKey && (fm.keyState.shiftKey || typeof fm.options.getFileCallback !== 'function')) { if (fm.getCommand('opennew')) { return fm.exec('opennew', [thash? thash : file.hash]); } } return fm.request({ data : {cmd : 'open', target : thash || file.hash}, notify : {type : 'open', cnt : 1, hideCnt : true}, syncOnFail : true, lazy : false }); } } files = $.grep(files, function(file) { return file.mime != 'directory' ? true : false; }); // nothing to open or files and folders selected - do nothing if (cnt != files.length) { return dfrd.reject(); } var doOpen = function() { var openCB = function(url) { var link = $('').hide().appendTo($('body')); if (fm.UA.Mobile || !inline) { if (html5dl) { if (!inline) { link.attr('download', file.name); } else { link.attr('target', '_blank'); } link.attr('href', url).get(0).click(); } else { wnd = window.open(url); if (!wnd) { return dfrd.reject('errPopup'); } } } else { getOnly = (typeof opts.method === 'string' && opts.method.toLowerCase() === 'get'); if (!getOnly && url.indexOf(fm.options.url) === 0 && fm.customData && Object.keys(fm.customData).length // Since playback by POST request can not be done in Chrome, media allows GET request && !file.mime.match(/^(?:video|audio)/) ) { // Send request as 'POST' method to hide custom data at location bar url = ''; } if (into === 'window') { // set window size for image if set imgW = winW = Math.round(2 * screen.availWidth / 3); imgH = winH = Math.round(2 * screen.availHeight / 3); if (parseInt(file.width) && parseInt(file.height)) { imgW = parseInt(file.width); imgH = parseInt(file.height); } else if (file.dim) { s = file.dim.split('x'); imgW = parseInt(s[0]); imgH = parseInt(s[1]); } if (winW >= imgW && winH >= imgH) { winW = imgW; winH = imgH; } else { if ((imgW - winW) > (imgH - winH)) { winH = Math.round(imgH * (winW / imgW)); } else { winW = Math.round(imgW * (winH / imgH)); } } w = 'width='+winW+',height='+winH; wnd = window.open(url, target, w + ',top=50,left=50,scrollbars=yes,resizable=yes,titlebar=no'); } else { if (into === 'tabs') { target = file.hash; } wnd = window.open('about:blank', target); } if (!wnd) { return dfrd.reject('errPopup'); } if (url === '') { var form = document.createElement("form"); form.action = fm.options.url; form.method = 'POST'; form.target = target; form.style.display = 'none'; var params = Object.assign({}, fm.customData, { cmd: 'file', target: file.hash, _t: file.ts || parseInt(+new Date()/1000) }); $.each(params, function(key, val) { var input = document.createElement("input"); input.name = key; input.value = val; form.appendChild(input); }); document.body.appendChild(form); form.submit(); } else if (into !== 'window') { wnd.location = url; } $(wnd).trigger('focus'); } link.remove(); }, wnd, target, getOnly; try { reg = new RegExp(fm.option('dispInlineRegex'), 'i'); } catch(e) { reg = false; } // open files html5dl = (typeof $('').get(0).download === 'string'); cnt = files.length; while (cnt--) { target = 'elf_open_window'; file = files[cnt]; if (!file.read) { return dfrd.reject(['errOpen', file.name, 'errPerm']); } inline = (reg && file.mime.match(reg)); fm.openUrl(file.hash, !inline, openCB); } return dfrd.resolve(hashes); }; if (cnt > 1) { fm.confirm({ title: 'openMulti', text : ['openMultiConfirm', cnt + ''], accept : { label : 'cmdopen', callback : function() { doOpen(); } }, cancel : { label : 'btnCancel', callback : function() { dfrd.reject(); } }, buttons : (fm.getCommand('zipdl') && fm.isCommandEnabled('zipdl', fm.cwd().hash))? [ { label : 'cmddownload', callback : function() { fm.exec('download', hashes); dfrd.reject(); } } ] : [] }); } else { selAct = fm.storage('selectAction') || opts.selectAction; if (selAct) { $.each(selAct.split('/'), function() { var cmdName = this.valueOf(); if (cmdName !== 'open' && (cmd = fm.getCommand(cmdName)) && cmd.enabled()) { return false; } cmd = null; }); if (cmd) { return fm.exec(cmd.name); } } doOpen(); } return dfrd; }; }).prototype = { forceLoad : true }; // this is required command plugins/file-manager-advanced/application/library/js/commands/opennew.js000064400000002325147176754550022543 0ustar00/** * @class elFinder command "opennew" * Open folder in new window * * @author Naoki Sawada **/ elFinder.prototype.commands.opennew = function() { "use strict"; var fm = this.fm; this.shortcuts = [{ pattern : (typeof(fm.options.getFileCallback) === 'function'? 'shift+' : '') + 'ctrl+enter' }]; this.getstate = function(select) { var sel = this.files(select), cnt = sel.length; return cnt === 1 ? (sel[0].mime === 'directory' && sel[0].read? 0 : -1) : -1; }; this.exec = function(hashes) { var dfrd = $.Deferred(), files = this.files(hashes), cnt = files.length, opts = this.options, file, loc, url, win; // open folder to new tab (window) if (cnt === 1 && (file = files[0]) && file.mime === 'directory') { loc = window.location; if (opts.url) { url = opts.url; } else { url = loc.pathname; } if (opts.useOriginQuery) { if (!url.match(/\?/)) { url += loc.search; } else if (loc.search) { url += '&' + loc.search.substr(1); } } url += '#elf_' + file.hash; win = window.open(url, '_blank'); setTimeout(function() { win.focus(); }, 1000); return dfrd.resolve(); } else { return dfrd.reject(); } }; }; plugins/file-manager-advanced/application/library/js/commands/paste.js000064400000024070147176754550022205 0ustar00/** * @class elFinder command "paste" * Paste filesfrom clipboard into directory. * If files pasted in its parent directory - files duplicates will created * * @author Dmitry (dio) Levashov **/ elFinder.prototype.commands.paste = function() { "use strict"; this.updateOnSelect = false; this.handlers = { changeclipboard : function() { this.update(); } }; this.shortcuts = [{ pattern : 'ctrl+v shift+insert' }]; this.getstate = function(dst) { if (this._disabled) { return -1; } if (dst) { if (Array.isArray(dst)) { if (dst.length != 1) { return -1; } dst = this.fm.file(dst[0]); } } else { dst = this.fm.cwd(); } return this.fm.clipboard().length && dst.mime == 'directory' && dst.write ? 0 : -1; }; this.exec = function(select, cOpts) { var self = this, fm = self.fm, opts = cOpts || {}, dst = select ? this.files(select)[0] : fm.cwd(), files = fm.clipboard(), cnt = files.length, cut = cnt ? files[0].cut : false, cmd = opts._cmd? opts._cmd : (cut? 'move' : 'copy'), error = 'err' + cmd.charAt(0).toUpperCase() + cmd.substr(1), fpaste = [], fcopy = [], dfrd = $.Deferred() .fail(function(error) { error && fm.error(error); }) .always(function() { fm.unlockfiles({files : $.map(files, function(f) { return f.hash; })}); }), copy = function(files) { return files.length && fm._commands.duplicate ? fm.exec('duplicate', files) : $.Deferred().resolve(); }, paste = function(files) { var dfrd = $.Deferred(), existed = [], hashes = {}, intersect = function(files, names) { var ret = [], i = files.length; while (i--) { $.inArray(files[i].name, names) !== -1 && ret.unshift(i); } return ret; }, confirm = function(ndx) { var i = existed[ndx], file = files[i], last = ndx == existed.length-1; if (!file) { return; } fm.confirm({ title : fm.i18n(cmd + 'Files'), text : ['errExists', file.name, cmd === 'restore'? 'confirmRest' : 'confirmRepl'], all : !last, accept : { label : 'btnYes', callback : function(all) { !last && !all ? confirm(++ndx) : paste(files); } }, reject : { label : 'btnNo', callback : function(all) { var i; if (all) { i = existed.length; while (ndx < i--) { files[existed[i]].remove = true; } } else { files[existed[ndx]].remove = true; } !last && !all ? confirm(++ndx) : paste(files); } }, cancel : { label : 'btnCancel', callback : function() { dfrd.resolve(); } }, buttons : [ { label : 'btnBackup', callback : function(all) { var i; if (all) { i = existed.length; while (ndx < i--) { files[existed[i]].rename = true; } } else { files[existed[ndx]].rename = true; } !last && !all ? confirm(++ndx) : paste(files); } } ] }); }, valid = function(names) { var exists = {}, existedArr; if (names) { if (Array.isArray(names)) { if (names.length) { if (typeof names[0] == 'string') { // elFinder <= 2.1.6 command `is` results existed = intersect(files, names); } else { $.each(names, function(i, v) { exists[v.name] = v.hash; }); existed = intersect(files, $.map(exists, function(h, n) { return n; })); $.each(files, function(i, file) { if (exists[file.name]) { hashes[exists[file.name]] = file.name; } }); } } } else { existedArr = []; existed = $.map(names, function(n) { if (typeof n === 'string') { return n; } else { // support to >=2.1.11 plugin Normalizer, Sanitizer existedArr = existedArr.concat(n); return false; } }); if (existedArr.length) { existed = existed.concat(existedArr); } existed = intersect(files, existed); hashes = names; } } existed.length ? confirm(0) : paste(files); }, paste = function(selFiles) { var renames = [], files = $.grep(selFiles, function(file) { if (file.rename) { renames.push(file.name); } return !file.remove ? true : false; }), cnt = files.length, groups = {}, args = [], targets, reqData; if (!cnt) { return dfrd.resolve(); } targets = $.map(files, function(f) { return f.hash; }); reqData = {cmd : 'paste', dst : dst.hash, targets : targets, cut : cut ? 1 : 0, renames : renames, hashes : hashes, suffix : fm.options.backupSuffix}; if (fm.api < 2.1) { reqData.src = files[0].phash; } fm.request({ data : reqData, notify : {type : cmd, cnt : cnt}, cancel : true, navigate : { toast : opts.noToast? {} : { inbuffer : {msg: fm.i18n(['complete', fm.i18n('cmd' + cmd)]), action: { cmd: 'open', msg: 'cmdopendir', data: [dst.hash], done: 'select', cwdNot: dst.hash }} } } }) .done(function(data) { var dsts = {}, added = data.added && data.added.length? data.added : null; if (cut && added) { // undo/redo $.each(files, function(i, f) { var phash = f.phash, srcHash = function(name) { var hash; $.each(added, function(i, f) { if (f.name === name) { hash = f.hash; return false; } }); return hash; }, shash = srcHash(f.name); if (shash) { if (dsts[phash]) { dsts[phash].push(shash); } else { dsts[phash] = [ shash ]; } } }); if (Object.keys(dsts).length) { data.undo = { cmd : 'move', callback : function() { var reqs = []; $.each(dsts, function(dst, targets) { reqs.push(fm.request({ data : {cmd : 'paste', dst : dst, targets : targets, cut : 1}, notify : {type : 'undo', cnt : targets.length} })); }); return $.when.apply(null, reqs); } }; data.redo = { cmd : 'move', callback : function() { return fm.request({ data : reqData, notify : {type : 'redo', cnt : cnt} }); } }; } } dfrd.resolve(data); }) .fail(function(flg) { dfrd.reject(); if (flg === 0) { // canceling fm.sync(); } }) .always(function() { fm.unlockfiles({files : files}); }); }, internames; if (!fm.isCommandEnabled(self.name, dst.hash) || !files.length) { return dfrd.resolve(); } if (fm.oldAPI) { paste(files); } else { if (!fm.option('copyOverwrite', dst.hash)) { paste(files); } else { internames = $.map(files, function(f) { return f.name; }); dst.hash == fm.cwd().hash ? valid($.map(fm.files(), function(file) { return file.phash == dst.hash ? {hash: file.hash, name: file.name} : null; })) : fm.request({ data : {cmd : 'ls', target : dst.hash, intersect : internames}, notify : {type : 'prepare', cnt : 1, hideCnt : true}, preventFail : true }) .always(function(data) { valid(data.list); }); } } return dfrd; }, parents, fparents, cutDfrd; if (!cnt || !dst || dst.mime != 'directory') { return dfrd.reject(); } if (!dst.write) { return dfrd.reject([error, files[0].name, 'errPerm']); } parents = fm.parents(dst.hash); $.each(files, function(i, file) { if (!file.read) { return !dfrd.reject([error, file.name, 'errPerm']); } if (cut && file.locked) { return !dfrd.reject(['errLocked', file.name]); } if ($.inArray(file.hash, parents) !== -1) { return !dfrd.reject(['errCopyInItself', file.name]); } if (file.mime && file.mime !== 'directory' && ! fm.uploadMimeCheck(file.mime, dst.hash)) { return !dfrd.reject([error, file.name, 'errUploadMime']); } fparents = fm.parents(file.hash); fparents.pop(); if ($.inArray(dst.hash, fparents) !== -1) { if ($.grep(fparents, function(h) { var d = fm.file(h); return d.phash == dst.hash && d.name == file.name ? true : false; }).length) { return !dfrd.reject(['errReplByChild', file.name]); } } if (file.phash == dst.hash) { fcopy.push(file.hash); } else { fpaste.push({ hash : file.hash, phash : file.phash, name : file.name }); } }); if (dfrd.state() === 'rejected') { return dfrd; } cutDfrd = $.Deferred(); if (cut && self.options.moveConfirm) { fm.confirm({ title : 'moveFiles', text : fm.i18n('confirmMove', dst.i18 || dst.name), accept : { label : 'btnYes', callback : function() { cutDfrd.resolve(); } }, cancel : { label : 'btnCancel', callback : function() { cutDfrd.reject(); } } }); } else { cutDfrd.resolve(); } cutDfrd.done(function() { $.when( copy(fcopy), paste(fpaste) ) .done(function(cr, pr) { dfrd.resolve(pr && pr.undo? pr : void(0)); }) .fail(function() { dfrd.reject(); }) .always(function() { cut && fm.clipboard([]); }); }).fail(function() { dfrd.reject(); }); return dfrd; }; }; plugins/file-manager-advanced/application/library/js/commands/places.js000064400000001372147176754550022340 0ustar00/** * @class elFinder command "places" * Regist to Places * * @author Naoki Sawada **/ elFinder.prototype.commands.places = function() { "use strict"; var self = this, fm = this.fm, filter = function(hashes) { var fres = true; return $.grep(self.files(hashes), function(f) { fres = fres && f.mime == 'directory' ? true : false; return fres; }); }, places = null; this.getstate = function(select) { var sel = this.hashes(select), cnt = sel.length; return places && cnt && cnt == filter(sel).length ? 0 : -1; }; this.exec = function(hashes) { var files = this.files(hashes); places.trigger('regist', [ files ]); return $.Deferred().resolve(); }; fm.one('load', function(){ places = fm.ui.places; }); }; plugins/file-manager-advanced/application/library/js/commands/preference.js000064400000051637147176754550023220 0ustar00/** * @class elFinder command "preference" * "Preference" dialog * * @author Naoki Sawada **/ elFinder.prototype.commands.preference = function() { var self = this, fm = this.fm, r = 'replace', tab = '
          • {title}
          • ', base = $('
            '), ul = $('
              '), tabs = $('
              '), sep = '
              ', selfUrl = $('base').length? document.location.href.replace(/#.*$/, '') : '', selectTab = function(tab) { $('#'+fm.namespace+'-preference-tab-'+tab).trigger('mouseover').trigger('click'); openTab = tab; }, clTabActive = fm.res('class', 'tabsactive'), build = function() { var cats = self.options.categories || { 'language' : ['language'], 'theme' : ['theme'], 'toolbar' : ['toolbarPref'], 'workspace' : ['iconSize','columnPref', 'selectAction', 'makefileTypes', 'useStoredEditor', 'editorMaximized', 'useFullscreen', 'showHidden'], 'dialog' : ['autoFocusDialog'], 'selectionInfo' : ['infoItems', 'hashChecker'], 'reset' : ['clearBrowserData'], 'all' : true }, forms = self.options.prefs || ['language', 'theme', 'toolbarPref', 'iconSize', 'columnPref', 'selectAction', 'makefileTypes', 'useStoredEditor', 'editorMaximized', 'useFullscreen', 'showHidden', 'infoItems', 'hashChecker', 'autoFocusDialog', 'clearBrowserData']; if (!fm.cookieEnabled) { delete cats.language; } forms = fm.arrayFlip(forms, true); if (fm.options.getFileCallback) { delete forms.selectAction; } if (!fm.UA.Fullscreen) { delete forms.useFullscreen; } forms.language && (forms.language = (function() { var langSel = $('').on('change', function() { var lang = $(this).val(); fm.storage('lang', lang); $('#'+fm.id).elfinder('reload'); }), optTags = [], langs = self.options.langs || { ar: 'العربية', bg: 'Български', ca: 'Català', cs: 'Čeština', da: 'Dansk', de: 'Deutsch', el: 'Ελληνικά', en: 'English', es: 'Español', fa: 'فارسی', fo: 'Føroyskt', fr: 'Français', fr_CA: 'Français (Canada)', he: 'עברית', hr: 'Hrvatski', hu: 'Magyar', id: 'Bahasa Indonesia', it: 'Italiano', ja: '日本語', ko: '한국어', nl: 'Nederlands', no: 'Norsk', pl: 'Polski', pt_BR: 'Português', ro: 'Română', ru: 'Pусский', si: 'සිංහල', sk: 'Slovenčina', sl: 'Slovenščina', sr: 'Srpski', sv: 'Svenska', tr: 'Türkçe', ug_CN: 'ئۇيغۇرچە', uk: 'Український', vi: 'Tiếng Việt', zh_CN: '简体中文', zh_TW: '正體中文' }; if (!fm.cookieEnabled) { return $(); } $.each(langs, function(lang, name) { optTags.push(''); }); return langSel.append(optTags.join('')).val(fm.lang); })()); forms.theme && (forms.theme = (function() { var cnt = fm.options.themes? Object.keys(fm.options.themes).length : 0; if (cnt === 0 || (cnt === 1 && fm.options.themes.default)) { return null; } var themeSel = $('').on('change', function() { var theme = $(this).val(); fm.changeTheme(theme).storage('theme', theme); }), optTags = [], tpl = { image: '', link: '$2', data: '
              $1
              $2
              ' }, items = ['image', 'description', 'author', 'email', 'license'], render = function(key, data) { }, defBtn = $('').text(fm.i18n('default')).on('click', function(e) { themeSel.val('default').trigger('change'); }), list = $('
              ').on('click', 'button', function() { var val = $(this).data('themeid'); themeSel.val(val).trigger('change'); }); if (!fm.options.themes.default) { themeSel.append(''); } $.each(fm.options.themes, function(id, val) { var opt = $(''), dsc = $('
              '+fm.i18n(id)+'
              '), tm; themeSel.append(opt); list.append(dsc); tm = setTimeout(function() { dsc.find('span.elfinder-spinner').replaceWith(fm.i18n(['errRead', id])); }, 10000); fm.getTheme(id).always(function() { tm && clearTimeout(tm); }).done(function(data) { var link, val = $(), dl = $('
              '); link = data.link? tpl.link.replace(/\$1/g, data.link).replace(/\$3/g, fm.i18n('website')) : '$2'; if (data.name) { opt.html(fm.i18n(data.name)); } dsc.children('legend').html(link.replace(/\$2/g, fm.i18n(data.name) || id)); $.each(items, function(i, key) { var t = tpl[key] || tpl.data, elm; if (data[key]) { elm = t.replace(/\$0/g, fm.escape(key)).replace(/\$1/g, fm.i18n(key)).replace(/\$2/g, fm.i18n(data[key])); if (key === 'image' && data.link) { elm = $(elm).on('click', function() { themeSel.val(id).trigger('change'); }).attr('title', fm.i18n('select')); } dl.append(elm); } }); val = val.add(dl); val = val.add($('
              ').append($('').data('themeid', id).html(fm.i18n('select')))); dsc.find('span.elfinder-spinner').replaceWith(val); }).fail(function() { dsc.find('span.elfinder-spinner').replaceWith(fm.i18n(['errRead', id])); }); }); return $('
              ').append(themeSel.val(fm.theme && fm.theme.id? fm.theme.id : 'default'), defBtn, list); })()); forms.toolbarPref && (forms.toolbarPref = (function() { var pnls = $.map(fm.options.uiOptions.toolbar, function(v) { return $.isArray(v)? v : null; }), tags = [], hides = fm.storage('toolbarhides') || {}; $.each(pnls, function() { var cmd = this, name = fm.i18n('cmd'+cmd); if (name === 'cmd'+cmd) { name = fm.i18n(cmd); } tags.push(''); }); return $(tags.join(' ')).on('change', 'input', function() { var v = $(this).val(), o = $(this).is(':checked'); if (!o && !hides[v]) { hides[v] = true; } else if (o && hides[v]) { delete hides[v]; } fm.storage('toolbarhides', hides); fm.trigger('toolbarpref'); }); })()); forms.iconSize && (forms.iconSize = (function() { var max = fm.options.uiOptions.cwd.iconsView.sizeMax || 3, size = fm.storage('iconsize') || fm.options.uiOptions.cwd.iconsView.size || 0, sld = $('
              ').slider({ classes: { 'ui-slider-handle': 'elfinder-tabstop', }, value: size, max: max, slide: function(e, ui) { fm.getUI('cwd').trigger('iconpref', {size: ui.value}); }, change: function(e, ui) { fm.storage('iconsize', ui.value); } }); fm.getUI('cwd').on('iconpref', function(e, data) { sld.slider('option', 'value', data.size); }); return sld; })()); forms.columnPref && (forms.columnPref = (function() { var cols = fm.options.uiOptions.cwd.listView.columns, tags = [], hides = fm.storage('columnhides') || {}; $.each(cols, function() { var key = this, name = fm.getColumnName(key); tags.push(''); }); return $(tags.join(' ')).on('change', 'input', function() { var v = $(this).val(), o = $(this).is(':checked'); if (!o && !hides[v]) { hides[v] = true; } else if (o && hides[v]) { delete hides[v]; } fm.storage('columnhides', hides); fm.trigger('columnpref', { repaint: true }); }); })()); forms.selectAction && (forms.selectAction = (function() { var actSel = $('').on('change', function() { var act = $(this).val(); fm.storage('selectAction', act === 'default'? null : act); }), optTags = [], acts = self.options.selectActions, defAct = fm.getCommand('open').options.selectAction || 'open'; if ($.inArray(defAct, acts) === -1) { acts.unshift(defAct); } $.each(acts, function(i, act) { var names = $.map(act.split('/'), function(cmd) { var name = fm.i18n('cmd'+cmd); if (name === 'cmd'+cmd) { name = fm.i18n(cmd); } return name; }); optTags.push(''); }); return actSel.append(optTags.join('')).val(fm.storage('selectAction') || defAct); })()); forms.makefileTypes && (forms.makefileTypes = (function() { var hides = fm.getCommand('edit').getMkfileHides(), getTag = function() { var tags = []; // re-assign hides hides = fm.getCommand('edit').getMkfileHides(); $.each(fm.mimesCanMakeEmpty, function(mime, type) { var name = fm.getCommand('mkfile').getTypeName(mime, type); tags.push(''); }); return tags.join(' '); }, elm = $('
              ').on('change', 'input', function() { var v = $(this).val(), o = $(this).is(':checked'); if (!o && !hides[v]) { hides[v] = true; } else if (o && hides[v]) { delete hides[v]; } fm.storage('mkfileHides', hides); fm.trigger('canMakeEmptyFile'); }).append(getTag()), add = $('
              ').append( $('').on('keydown', function(e) { (e.keyCode === $.ui.keyCode.ENTER) && $(this).next().trigger('click'); }), $('').html(fm.i18n('add')).on('click', function() { var input = $(this).prev(), val = input.val(), uiToast = fm.getUI('toast'), err = function() { uiToast.appendTo(input.closest('.ui-dialog')); fm.toast({ msg: fm.i18n('errUsupportType'), mode: 'warning', onHidden: function() { uiToast.children().length === 1 && uiToast.appendTo(fm.getUI()); } }); input.trigger('focus'); return false; }, tmpMimes; if (!val.match(/\//)) { val = fm.arrayFlip(fm.mimeTypes)[val]; if (!val) { return err(); } input.val(val); } if (!fm.mimeIsText(val) || !fm.mimeTypes[val]) { return err(); } fm.trigger('canMakeEmptyFile', {mimes: [val], unshift: true}); tmpMimes = {}; tmpMimes[val] = fm.mimeTypes[val]; fm.storage('mkfileTextMimes', Object.assign(tmpMimes, fm.storage('mkfileTextMimes') || {})); input.val(''); uiToast.appendTo(input.closest('.ui-dialog')); fm.toast({ msg: fm.i18n(['complete', val + ' (' + tmpMimes[val] + ')']), onHidden: function() { uiToast.children().length === 1 && uiToast.appendTo(fm.getUI()); } }); }), $('').html(fm.i18n('reset')).on('click', function() { fm.one('canMakeEmptyFile', {done: function() { elm.empty().append(getTag()); }}); fm.trigger('canMakeEmptyFile', {resetTexts: true}); }) ), tm; fm.bind('canMakeEmptyFile', {done: function(e) { if (e.data && e.data.mimes && e.data.mimes.length) { elm.empty().append(getTag()); } }}); return $('
              ').append(elm, add); })()); forms.useStoredEditor && (forms.useStoredEditor = $('').prop('checked', (function() { var s = fm.storage('useStoredEditor'); return s? (s > 0) : fm.options.commandsOptions.edit.useStoredEditor; })()).on('change', function(e) { fm.storage('useStoredEditor', $(this).is(':checked')? 1 : -1); })); forms.editorMaximized && (forms.editorMaximized = $('').prop('checked', (function() { var s = fm.storage('editorMaximized'); return s? (s > 0) : fm.options.commandsOptions.edit.editorMaximized; })()).on('change', function(e) { fm.storage('editorMaximized', $(this).is(':checked')? 1 : -1); })); forms.useFullscreen && (forms.useFullscreen = $('').prop('checked', (function() { var s = fm.storage('useFullscreen'); return s? (s > 0) : fm.options.commandsOptions.fullscreen.mode === 'screen'; })()).on('change', function(e) { fm.storage('useFullscreen', $(this).is(':checked')? 1 : -1); })); if (forms.showHidden) { (function() { var setTitle = function() { var s = fm.storage('hide'), t = [], v; if (s && s.items) { $.each(s.items, function(h, n) { t.push(fm.escape(n)); }); } elms.prop('disabled', !t.length)[t.length? 'removeClass' : 'addClass']('ui-state-disabled'); v = t.length? t.join('\n') : ''; forms.showHidden.attr('title',v); useTooltip && forms.showHidden.tooltip('option', 'content', v.replace(/\n/g, '
              ')).tooltip('close'); }, chk = $('').prop('checked', (function() { var s = fm.storage('hide'); return s && s.show; })()).on('change', function(e) { var o = {}; o[$(this).is(':checked')? 'show' : 'hide'] = true; fm.exec('hide', void(0), o); }), btn = $('').append(fm.i18n('reset')).on('click', function() { fm.exec('hide', void(0), {reset: true}); $(this).parent().find('input:first').prop('checked', false); setTitle(); }), elms = $().add(chk).add(btn), useTooltip; forms.showHidden = $('
              ').append(chk, btn); fm.bind('hide', function(e) { var d = e.data; if (!d.opts || (!d.opts.show && !d.opts.hide)) { setTitle(); } }); if (fm.UA.Mobile && $.fn.tooltip) { useTooltip = true; forms.showHidden.tooltip({ classes: { 'ui-tooltip': 'elfinder-ui-tooltip ui-widget-shadow' }, tooltipClass: 'elfinder-ui-tooltip ui-widget-shadow', track: true }).css('user-select', 'none'); btn.css('user-select', 'none'); } setTitle(); })(); } forms.infoItems && (forms.infoItems = (function() { var items = fm.getCommand('info').items, tags = [], hides = fm.storage('infohides') || fm.arrayFlip(fm.options.commandsOptions.info.hideItems, true); $.each(items, function() { var key = this, name = fm.i18n(key); tags.push(''); }); return $(tags.join(' ')).on('change', 'input', function() { var v = $(this).val(), o = $(this).is(':checked'); if (!o && !hides[v]) { hides[v] = true; } else if (o && hides[v]) { delete hides[v]; } fm.storage('infohides', hides); fm.trigger('infopref', { repaint: true }); }); })()); forms.hashChecker && fm.hashCheckers.length && (forms.hashChecker = (function() { var tags = [], enabled = fm.arrayFlip(fm.storage('hashchekcer') || fm.options.commandsOptions.info.showHashAlgorisms, true); $.each(fm.hashCheckers, function() { var cmd = this, name = fm.i18n(cmd); tags.push(''); }); return $(tags.join(' ')).on('change', 'input', function() { var v = $(this).val(), o = $(this).is(':checked'); if (o) { enabled[v] = true; } else if (enabled[v]) { delete enabled[v]; } fm.storage('hashchekcer', $.grep(fm.hashCheckers, function(v) { return enabled[v]; })); }); })()); forms.autoFocusDialog && (forms.autoFocusDialog = $('').prop('checked', (function() { var s = fm.storage('autoFocusDialog'); return s? (s > 0) : fm.options.uiOptions.dialog.focusOnMouseOver; })()).on('change', function(e) { fm.storage('autoFocusDialog', $(this).is(':checked')? 1 : -1); })); forms.clearBrowserData && (forms.clearBrowserData = $('').text(fm.i18n('reset')).button().on('click', function(e) { e.preventDefault(); fm.storage(); $('#'+fm.id).elfinder('reload'); })); $.each(cats, function(id, prefs) { var dls, found; if (prefs === true) { found = 1; } else if (prefs) { dls = $(); $.each(prefs, function(i, n) { var f, title, chks = '', cbox; if (f = forms[n]) { found = 2; title = fm.i18n(n); cbox = $(f).filter('input[type="checkbox"]'); if (!cbox.length) { cbox = $(f).find('input[type="checkbox"]'); } if (cbox.length === 1) { if (!cbox.attr('id')) { cbox.attr('id', 'elfinder-preference-'+n+'-checkbox'); } title = ''; } else if (cbox.length > 1) { chks = ' elfinder-preference-checkboxes'; } dls = dls.add($('
              '+title+'
              ')).add($('
              ').append(f)); } }); } if (found) { ul.append(tab[r](/\{id\}/g, id)[r](/\{title\}/, fm.i18n(id))[r](/\{class\}/, openTab === id? 'elfinder-focus' : '')); if (found === 2) { tabs.append( $('
              ') .hide() .append($('
              ').append(dls)) ); } } }); ul.on('click', 'a', function(e) { var t = $(e.target), h = t.attr('href'); e.preventDefault(); e.stopPropagation(); ul.children().removeClass(clTabActive); t.removeClass('ui-state-hover').parent().addClass(clTabActive); if (h.match(/all$/)) { tabs.addClass('elfinder-preference-taball').children().show(); } else { tabs.removeClass('elfinder-preference-taball').children().hide(); $(h).show(); } }).on('focus blur', 'a', function(e) { $(this).parent().toggleClass('ui-state-focus', e.type === 'focusin'); }).on('mouseenter mouseleave', 'li', function(e) { $(this).toggleClass('ui-state-hover', e.type === 'mouseenter'); }); tabs.find('a,input,select,button').addClass('elfinder-tabstop'); base.append(ul, tabs); dialog = self.fmDialog(base, { title : self.title, width : self.options.width || 600, height: self.options.height || 400, maxWidth: 'window', maxHeight: 'window', autoOpen : false, destroyOnClose : false, allowMinimize : false, open : function() { openTab && selectTab(openTab); openTab = null; }, resize : function() { tabs.height(dialog.height() - ul.outerHeight(true) - (tabs.outerHeight(true) - tabs.height()) - 5); } }) .on('click', function(e) { e.stopPropagation(); }) .css({ overflow: 'hidden' }); dialog.closest('.ui-dialog') .css({ overflow: 'hidden' }) .addClass('elfinder-bg-translucent'); openTab = 'all'; }, dialog, openTab; this.shortcuts = [{ pattern : 'ctrl+comma', description : this.title }]; this.alwaysEnabled = true; this.getstate = function() { return 0; }; this.exec = function(sel, cOpts) { !dialog && build(); if (cOpts) { if (cOpts.tab) { selectTab(cOpts.tab); } else if (cOpts._currentType === 'cwd') { selectTab('workspace'); } } dialog.elfinderdialog('open'); return $.Deferred().resolve(); }; };plugins/file-manager-advanced/application/library/js/commands/quicklook.js000064400000057316147176754550023103 0ustar00/** * @class elFinder command "quicklook" * Fast preview for some files types * * @author Dmitry (dio) Levashov **/ (elFinder.prototype.commands.quicklook = function() { "use strict"; var self = this, fm = self.fm, /** * window closed state * * @type Number **/ closed = 0, /** * window animated state * * @type Number **/ animated = 1, /** * window opened state * * @type Number **/ opened = 2, /** * window docked state * * @type Number **/ docked = 3, /** * window docked and hidden state * * @type Number **/ dockedhidden = 4, /** * window state * * @type Number **/ state = closed, /** * Event name of update * for fix conflicts with Prototype.JS * * `@see https://github.com/Studio-42/elFinder/pull/2346 * @type String **/ evUpdate = Element.update? 'quicklookupdate' : 'update', /** * navbar icon class * * @type String **/ navicon = 'elfinder-quicklook-navbar-icon', /** * navbar "fullscreen" icon class * * @type String **/ fullscreen = 'elfinder-quicklook-fullscreen', /** * info wrapper class * * @type String */ infocls = 'elfinder-quicklook-info-wrapper', /** * Triger keydown/keypress event with left/right arrow key code * * @param Number left/right arrow key code * @return void **/ navtrigger = function(code) { $(document).trigger($.Event('keydown', { keyCode: code, ctrlKey : false, shiftKey : false, altKey : false, metaKey : false })); }, /** * Return css for closed window * * @param jQuery file node in cwd * @return void **/ closedCss = function(node) { var elf = fm.getUI().offset(), base = (function() { var target = node.find('.elfinder-cwd-file-wrapper'); return target.length? target : node; })(), baseOffset = base.offset() || { top: 0, left: 0 }; return { opacity : 0, width : base.width(), height : base.height() - 30, top : baseOffset.top - elf.top, left : baseOffset.left - elf.left }; }, /** * Return css for opened window * * @return void **/ openedCss = function() { var contain = self.options.contain || fm.options.dialogContained, win = contain? fm.getUI() : $(window), elf = fm.getUI().offset(), w = Math.min(width, win.width()-10), h = Math.min(height, win.height()-80); return { opacity : 1, width : w, height : h, top : parseInt((win.height() - h - 60) / 2 + (contain? 0 : win.scrollTop() - elf.top)), left : parseInt((win.width() - w) / 2 + (contain? 0 : win.scrollLeft() - elf.left)) }; }, mediaNode = {}, support = function(codec, name) { var node = name || codec.substr(0, codec.indexOf('/')), media = mediaNode[node]? mediaNode[node] : (mediaNode[node] = document.createElement(node)), value = false; try { value = media.canPlayType && media.canPlayType(codec); } catch(e) {} return (value && value !== '' && value != 'no')? true : false; }, platformWin = (window.navigator.platform.indexOf('Win') != -1), /** * Opened window width (from config) * * @type Number **/ width, /** * Opened window height (from config) * * @type Number **/ height, /** * Previous style before docked * * @type String **/ prevStyle, /** * elFinder node * * @type jQuery **/ parent, /** * elFinder current directory node * * @type jQuery **/ cwd, /** * Current directory hash * * @type String **/ cwdHash, dockEnabled = false, navdrag = false, navmove = false, navtm = null, leftKey = $.ui.keyCode.LEFT, rightKey = $.ui.keyCode.RIGHT, coverEv = 'mousemove touchstart ' + ('onwheel' in document? 'wheel' : 'onmousewheel' in document? 'mousewheel' : 'DOMMouseScroll'), title = $(''), icon = $('
              '), info = $('
              '),//.hide(), cover = $('
              '), fsicon = $('
              ') .on('click touchstart', function(e) { if (navmove) { return; } var win = self.window, full = win.hasClass(fullscreen), $window = $(window), resize = function() { self.preview.trigger('changesize'); }; e.stopPropagation(); e.preventDefault(); if (full) { navStyle = ''; navShow(); win.toggleClass(fullscreen) .css(win.data('position')); $window.trigger(self.resize).off(self.resize, resize); navbar.off('mouseenter mouseleave'); cover.off(coverEv); } else { win.toggleClass(fullscreen) .data('position', { left : win.css('left'), top : win.css('top'), width : win.width(), height : win.height(), display: 'block' }) .removeAttr('style'); $(window).on(self.resize, resize) .trigger(self.resize); cover.on(coverEv, function(e) { if (! navdrag) { if (e.type === 'mousemove' || e.type === 'touchstart') { navShow(); navtm = setTimeout(function() { if (fm.UA.Mobile || navbar.parent().find('.elfinder-quicklook-navbar:hover').length < 1) { navbar.fadeOut('slow', function() { cover.show(); }); } }, 3000); } if (cover.is(':visible')) { coverHide(); cover.data('tm', setTimeout(function() { cover.show(); }, 3000)); } } }).show().trigger('mousemove'); navbar.on('mouseenter mouseleave', function(e) { if (! navdrag) { if (e.type === 'mouseenter') { navShow(); } else { cover.trigger('mousemove'); } } }); } if (fm.zIndex) { win.css('z-index', fm.zIndex + 1); } if (fm.UA.Mobile) { navbar.attr('style', navStyle); } else { navbar.attr('style', navStyle).draggable(full ? 'destroy' : { start: function() { navdrag = true; navmove = true; cover.show(); navShow(); }, stop: function() { navdrag = false; navStyle = self.navbar.attr('style'); requestAnimationFrame(function() { navmove = false; }); } }); } $(this).toggleClass(navicon+'-fullscreen-off'); var collection = win; if (parent.is('.ui-resizable')) { collection = collection.add(parent); } collection.resizable(full ? 'enable' : 'disable').removeClass('ui-state-disabled'); win.trigger('viewchange'); } ), updateOnSel = function() { self.update(void(0), (function() { var fm = self.fm, files = fm.selectedFiles(), cnt = files.length, inDock = self.docked(), getInfo = function() { var ts = 0; $.each(files, function(i, f) { var t = parseInt(f.ts); if (ts >= 0) { if (t > ts) { ts = t; } } else { ts = 'unknown'; } }); return { hash : files[0].hash + '/' + (+new Date()), name : fm.i18n('items') + ': ' + cnt, mime : 'group', size : spinner, ts : ts, files : $.map(files, function(f) { return f.hash; }), getSize : true }; }; if (! cnt) { cnt = 1; files = [fm.cwd()]; } return (cnt === 1)? files[0] : getInfo(); })()); }, navShow = function() { if (self.window.hasClass(fullscreen)) { navtm && clearTimeout(navtm); navtm = null; // if use `show()` it make infinite loop with old jQuery (jQuery/jQuery UI: 1.8.0/1.9.0) // see #1478 https://github.com/Studio-42/elFinder/issues/1478 navbar.stop(true, true).css('display', 'block'); coverHide(); } }, coverHide = function() { cover.data('tm') && clearTimeout(cover.data('tm')); cover.removeData('tm'); cover.hide(); }, prev = $('
              ').on('click touchstart', function(e) { ! navmove && navtrigger(leftKey); return false; }), next = $('
              ').on('click touchstart', function(e) { ! navmove && navtrigger(rightKey); return false; }), navbar = $('
              ') .append(prev) .append(fsicon) .append(next) .append('
              ') .append($('
              ').on('click touchstart', function(e) { ! navmove && self.window.trigger('close'); return false; })) , titleClose = $('').on('mousedown', function(e) { e.stopPropagation(); self.window.trigger('close'); }), titleDock = $('').on('mousedown', function(e) { e.stopPropagation(); if (! self.docked()) { self.window.trigger('navdockin'); } else { self.window.trigger('navdockout'); } }), spinner = '' + fm.i18n('calc') + '' + '', navStyle = '', init = true, dockHeight, getSize, tm4cwd, dockedNode, selectTm; /** * Any flags for each plugin */ this.flags = {}; this.cover = cover; this.evUpdate = evUpdate; (this.navbar = navbar)._show = navShow; this.resize = 'resize.'+fm.namespace; this.info = $('
              ').addClass(infocls) .append(icon) .append(info); this.autoPlay = function() { if (self.opened()) { return !! self.options[self.docked()? 'dockAutoplay' : 'autoplay']; } return false; }; this.preview = $('
              ') // clean info/icon .on('change', function() { navShow(); navbar.attr('style', navStyle); self.docked() && navbar.hide(); self.preview.attr('style', '').removeClass('elfinder-overflow-auto'); self.info.attr('style', '').hide(); self.cover.removeClass('elfinder-quicklook-coverbg'); icon.removeAttr('class').attr('style', ''); info.html(''); }) // update info/icon .on(evUpdate, function(e) { var preview = self.preview, file = e.file, tpl = '
              {value}
              ', update = function() { var win = self.window.css('overflow', 'hidden'); name = fm.escape(file.i18 || file.name); !file.read && e.stopImmediatePropagation(); self.window.data('hash', file.hash); self.preview.off('changesize').trigger('change').children().remove(); title.html(name); prev.css('visibility', ''); next.css('visibility', ''); if (file.hash === fm.cwdId2Hash(cwd.find('[id]:not(.elfinder-cwd-parent):first').attr('id'))) { prev.css('visibility', 'hidden'); } if (file.hash === fm.cwdId2Hash(cwd.find('[id]:last').attr('id'))) { next.css('visibility', 'hidden'); } if (file.mime === 'directory') { getSizeHashes = [ file.hash ]; } else if (file.mime === 'group' && file.getSize) { getSizeHashes = file.files; } info.html( tpl.replace(/\{value\}/, name) + tpl.replace(/\{value\}/, fm.mime2kind(file)) + tpl.replace(/\{value\}/, getSizeHashes.length ? spinner : fm.formatSize(file.size)) + tpl.replace(/\{value\}/, fm.i18n('modify')+': '+ fm.formatDate(file)) ); if (getSizeHashes.length) { getSize = fm.getSize(getSizeHashes).done(function(data) { info.find('span.elfinder-spinner').parent().html(data.formated); }).fail(function() { info.find('span.elfinder-spinner').parent().html(fm.i18n('unknown')); }).always(function() { getSize = null; }); getSize._hash = file.hash; } icon.addClass('elfinder-cwd-icon ui-corner-all '+fm.mime2class(file.mime)); if (file.icon) { icon.css(fm.getIconStyle(file, true)); } self.info.attr('class', infocls); if (file.csscls) { self.info.addClass(file.csscls); } if (file.read && (tmb = fm.tmb(file))) { $('') .hide() .appendTo(self.preview) .on('load', function() { icon.addClass(tmb.className).css('background-image', "url('"+tmb.url+"')"); $(this).remove(); }) .attr('src', tmb.url); } self.info.delay(100).fadeIn(10); if (self.window.hasClass(fullscreen)) { cover.trigger('mousemove'); } win.css('overflow', ''); }, tmb, name, getSizeHashes = []; if (file && ! Object.keys(file).length) { file = fm.cwd(); } if (file && getSize && getSize.state() === 'pending' && getSize._hash !== file.hash) { getSize.reject(); } if (file && (e.forceUpdate || self.window.data('hash') !== file.hash)) { update(); } else { e.stopImmediatePropagation(); } }); this.window = $('
              ') .hide() .addClass(fm.UA.Touch? 'elfinder-touch' : '') .on('click', function(e) { var win = this; e.stopPropagation(); if (state === opened) { requestAnimationFrame(function() { state === opened && fm.toFront(win); }); } }) .append( $('
              ') .append( $('').append( titleClose, titleDock ), title ), this.preview, self.info.hide(), cover.hide(), navbar ) .draggable({handle : 'div.elfinder-quicklook-titlebar'}) .on('open', function(e, clcss) { var win = self.window, file = self.value, node = fm.getUI('cwd'), open = function(status) { state = status; self.update(1, self.value); self.change(); win.trigger('resize.' + fm.namespace); }; if (!init && state === closed) { if (file && file.hash !== cwdHash) { node = fm.cwdHash2Elm(file.hash.split('/', 2)[0]); } navStyle = ''; navbar.attr('style', ''); state = animated; node.trigger('scrolltoview'); coverHide(); win.css(clcss || closedCss(node)) .show() .animate(openedCss(), 550, function() { open(opened); navShow(); }); fm.toFront(win); } else if (state === dockedhidden) { fm.getUI('navdock').data('addNode')(dockedNode); open(docked); self.preview.trigger('changesize'); fm.storage('previewDocked', '1'); if (fm.getUI('navdock').width() === 0) { win.trigger('navdockout'); } } }) .on('close', function(e, dfd) { var win = self.window, preview = self.preview.trigger('change'), file = self.value, hash = (win.data('hash') || '').split('/', 2)[0], close = function(status, winhide) { state = status; winhide && fm.toHide(win); preview.children().remove(); self.update(0, self.value); win.data('hash', ''); dfd && dfd.resolve(); }, node; if (self.opened()) { getSize && getSize.state() === 'pending' && getSize.reject(); if (! self.docked()) { state = animated; win.hasClass(fullscreen) && fsicon.click(); (hash && (node = cwd.find('#'+hash)).length) ? win.animate(closedCss(node), 500, function() { preview.off('changesize'); close(closed, true); }) : close(closed, true); } else { dockedNode = fm.getUI('navdock').data('removeNode')(self.window.attr('id'), 'detach'); close(dockedhidden); fm.storage('previewDocked', '2'); } } }) .on('navdockin', function(e, data) { var w = self.window, box = fm.getUI('navdock'), height = dockHeight || box.width(), opts = data || {}; if (init) { opts.init = true; } state = docked; prevStyle = w.attr('style'); w.toggleClass('ui-front').removeClass('ui-widget').draggable('disable').resizable('disable').removeAttr('style').css({ width: '100%', height: height, boxSizing: 'border-box', paddingBottom: 0, zIndex: 'unset' }); navbar.hide(); titleDock.toggleClass('ui-icon-plusthick ui-icon-minusthick elfinder-icon-full elfinder-icon-minimize'); fm.toHide(w, true); box.data('addNode')(w, opts); self.preview.trigger('changesize'); fm.storage('previewDocked', '1'); }) .on('navdockout', function(e) { var w = self.window, box = fm.getUI('navdock'), dfd = $.Deferred(), clcss = closedCss(self.preview); dockHeight = w.outerHeight(); box.data('removeNode')(w.attr('id'), fm.getUI()); w.toggleClass('ui-front').addClass('ui-widget').draggable('enable').resizable('enable').attr('style', prevStyle); titleDock.toggleClass('ui-icon-plusthick ui-icon-minusthick elfinder-icon-full elfinder-icon-minimize'); state = closed; w.trigger('open', clcss); fm.storage('previewDocked', '0'); }) .on('resize.' + fm.namespace, function() { self.preview.trigger('changesize'); }); /** * This command cannot be disable by backend * * @type Boolean **/ this.alwaysEnabled = true; /** * Selected file * * @type Object **/ this.value = null; this.handlers = { // save selected file select : function(e, d) { selectTm && cancelAnimationFrame(selectTm); if (! e.data || ! e.data.selected || ! e.data.selected.length) { selectTm = requestAnimationFrame(function() { self.opened() && updateOnSel(); }); } else { self.opened() && updateOnSel(); } }, error : function() { self.window.is(':visible') && self.window.trigger('close'); }, 'searchshow searchhide' : function() { this.opened() && this.window.trigger('close'); }, navbarshow : function() { requestAnimationFrame(function() { self.docked() && self.preview.trigger('changesize'); }); }, destroy : function() { self.window.remove(); } }; this.shortcuts = [{ pattern : 'space' }]; this.support = { audio : { ogg : support('audio/ogg;'), webm: support('audio/webm;'), mp3 : support('audio/mpeg;'), wav : support('audio/wav;'), m4a : support('audio/mp4;') || support('audio/x-m4a;') || support('audio/aac;'), flac: support('audio/flac;'), amr : support('audio/amr;') }, video : { ogg : support('video/ogg;'), webm : support('video/webm;'), mp4 : support('video/mp4;'), mkv : support('video/x-matroska;') || support('video/webm;'), '3gp': support('video/3gpp;') || support('video/mp4;'), // try as mp4 m3u8 : support('application/x-mpegURL', 'video') || support('application/vnd.apple.mpegURL', 'video'), mpd : support('application/dash+xml', 'video') } }; // for GC mediaNode = {}; /** * Return true if quickLoock window is hiddenReturn true if quickLoock window is visible and not animated * * @return Boolean **/ this.closed = function() { return (state == closed || state == dockedhidden); }; /** * Return true if quickLoock window is visible and not animated * * @return Boolean **/ this.opened = function() { return state == opened || state == docked; }; /** * Return true if quickLoock window is in NavDock * * @return Boolean **/ this.docked = function() { return state == docked; }; /** * Adds an integration into help dialog. * * @param Object opts options */ this.addIntegration = function(opts) { requestAnimationFrame(function() { fm.trigger('helpIntegration', Object.assign({cmd: 'quicklook'}, opts)); }); }; /** * Init command. * Add default plugins and init other plugins * * @return Object **/ this.init = function() { var o = this.options, win = this.window, preview = this.preview, i, p, cwdDispInlineRegex; width = o.width > 0 ? parseInt(o.width) : 450; height = o.height > 0 ? parseInt(o.height) : 300; if (o.dockHeight !== 'auto') { dockHeight = parseInt(o.dockHeight); if (! dockHeight) { dockHeight = void(0); } } fm.one('load', function() { dockEnabled = fm.getUI('navdock').data('dockEnabled'); ! dockEnabled && titleDock.hide(); parent = fm.getUI(); cwd = fm.getUI('cwd'); if (fm.zIndex) { win.css('z-index', fm.zIndex + 1); } win.appendTo(parent); // close window on escape $(document).on('keydown.'+fm.namespace, function(e) { e.keyCode == $.ui.keyCode.ESCAPE && self.opened() && ! self.docked() && win.hasClass('elfinder-frontmost') && win.trigger('close'); }); win.resizable({ handles : 'se', minWidth : 350, minHeight : 120, resize : function() { // use another event to avoid recursion in fullscreen mode // may be there is clever solution, but i cant find it :( preview.trigger('changesize'); } }); self.change(function() { if (self.opened()) { if (self.value) { if (self.value.tmb && self.value.tmb == 1) { // try re-get file object self.value = Object.assign({}, fm.file(self.value.hash)); } preview.trigger($.Event(evUpdate, {file : self.value})); } } }); preview.on(evUpdate, function(e) { var file, hash, serach; if (file = e.file) { hash = file.hash; serach = (fm.searchStatus.mixed && fm.searchStatus.state > 1); if (file.mime !== 'directory') { if (parseInt(file.size) || file.mime.match(o.mimeRegexNotEmptyCheck)) { // set current dispInlineRegex self.dispInlineRegex = cwdDispInlineRegex; if (serach || fm.optionsByHashes[hash]) { try { self.dispInlineRegex = new RegExp(fm.option('dispInlineRegex', hash), 'i'); } catch(e) { try { self.dispInlineRegex = new RegExp(!fm.isRoot(file)? fm.option('dispInlineRegex', file.phash) : fm.options.dispInlineRegex, 'i'); } catch(e) { self.dispInlineRegex = /^$/; } } } } else { // do not preview of file that size = 0 e.stopImmediatePropagation(); } } else { self.dispInlineRegex = /^$/; } self.info.show(); } else { e.stopImmediatePropagation(); } }); $.each(fm.commands.quicklook.plugins || [], function(i, plugin) { if (typeof(plugin) == 'function') { new plugin(self); } }); }).one('open', function() { var dock = Number(fm.storage('previewDocked') || o.docked), win; if (dockEnabled && dock >= 1) { win = self.window; self.exec(); win.trigger('navdockin', { init : true }); if (dock === 2) { win.trigger('close'); } else { self.update(void(0), fm.cwd()); self.change(); } } init = false; }).bind('open', function() { cwdHash = fm.cwd().hash; self.value = fm.cwd(); // set current volume dispInlineRegex try { cwdDispInlineRegex = new RegExp(fm.option('dispInlineRegex'), 'i'); } catch(e) { cwdDispInlineRegex = /^$/; } }).bind('change', function(e) { if (e.data && e.data.changed && self.opened()) { $.each(e.data.changed, function() { if (self.window.data('hash') === this.hash) { self.window.data('hash', null); self.preview.trigger(evUpdate); return false; } }); } }).bind('navdockresizestart navdockresizestop', function(e) { cover[e.type === 'navdockresizestart'? 'show' : 'hide'](); }); }; this.getstate = function() { return self.opened()? 1 : 0; }; this.exec = function() { self.closed() && updateOnSel(); self.enabled() && self.window.trigger(self.opened() ? 'close' : 'open'); return $.Deferred().resolve(); }; this.hideinfo = function() { this.info.stop(true, true).hide(); }; }).prototype = { forceLoad : true }; // this is required command plugins/file-manager-advanced/application/library/js/commands/quicklook.plugins.js000064400000164132147176754550024556 0ustar00elFinder.prototype.commands.quicklook.plugins = [ /** * Images preview plugin * * @param elFinder.commands.quicklook **/ function(ql) { "use strict"; var mimes = ['image/jpeg', 'image/png', 'image/gif', 'image/svg+xml', 'image/x-ms-bmp'], getDimSize = ql.fm.returnBytes((ql.options.getDimThreshold || 0)), preview = ql.preview, WebP, flipMime; // webp support WebP = new Image(); WebP.onload = WebP.onerror = function() { if (WebP.height == 2) { mimes.push('image/webp'); } }; WebP.src='data:image/webp;base64,UklGRjoAAABXRUJQVlA4IC4AAACyAgCdASoCAAIALmk0mk0iIiIiIgBoSygABc6WWgAA/veff/0PP8bA//LwYAAA'; // what kind of images we can display $.each(navigator.mimeTypes, function(i, o) { var mime = o.type; if (mime.indexOf('image/') === 0 && $.inArray(mime, mimes)) { mimes.push(mime); } }); preview.on(ql.evUpdate, function(e) { var fm = ql.fm, file = e.file, showed = false, dimreq = null, setdim = function(dim) { var rfile = fm.file(file.hash); rfile.width = dim[0]; rfile.height = dim[1]; }, show = function() { var elm, varelm, memSize, width, height, prop; dimreq && dimreq.state && dimreq.state() === 'pending' && dimreq.reject(); if (showed) { return; } showed = true; elm = img.get(0); memSize = file.width && file.height? {w: file.width, h: file.height} : (elm.naturalWidth? null : {w: img.width(), h: img.height()}); memSize && img.removeAttr('width').removeAttr('height'); width = file.width || elm.naturalWidth || elm.width || img.width(); height = file.height || elm.naturalHeight || elm.height || img.height(); if (!file.width || !file.height) { setdim([width, height]); } memSize && img.width(memSize.w).height(memSize.h); prop = (width/height).toFixed(2); preview.on('changesize', function() { var pw = parseInt(preview.width()), ph = parseInt(preview.height()), w, h; if (prop < (pw/ph).toFixed(2)) { h = ph; w = Math.floor(h * prop); } else { w = pw; h = Math.floor(w/prop); } img.width(w).height(h).css('margin-top', h < ph ? Math.floor((ph - h)/2) : 0); }) .trigger('changesize'); //show image img.fadeIn(100); }, hideInfo = function() { loading.remove(); // hide info/icon ql.hideinfo(); }, url, img, loading, prog, m, opDfd; if (!flipMime) { flipMime = fm.arrayFlip(mimes); } if (flipMime[file.mime] && ql.dispInlineRegex.test(file.mime)) { // this is our file - stop event propagation e.stopImmediatePropagation(); loading = $('
              '+fm.i18n('nowLoading')+'
              ').appendTo(ql.info.find('.elfinder-quicklook-info')); prog = $('
              ').appendTo(loading); img = $('') .hide() .appendTo(preview) .on('load', function() { hideInfo(); show(); }) .on('error', function() { loading.remove(); }); opDfd = fm.openUrl(file.hash, false, function(url) { img.attr('src', url); }, { progressBar: prog }); // stop loading on change file if not loaded yet preview.one('change', function() { opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject(); }); if (file.width && file.height) { show(); } else if (file.size > getDimSize) { dimreq = fm.request({ data : {cmd : 'dim', target : file.hash}, preventDefault : true }) .done(function(data) { if (data.dim) { var dim = data.dim.split('x'); file.width = dim[0]; file.height = dim[1]; setdim(dim); show(); } }); } } }); }, /** * TIFF image preview * * @param object ql elFinder.commands.quicklook */ function(ql) { "use strict"; var fm = ql.fm, mime = 'image/tiff', preview = ql.preview; if (window.Worker && window.Uint8Array) { preview.on(ql.evUpdate, function(e) { var file = e.file, err = function(e) { wk && wk.terminate(); loading.remove(); fm.debug('error', e); }, setdim = function(dim) { var rfile = fm.file(file.hash); rfile.width = dim[0]; rfile.height = dim[1]; }, loading, prog, url, base, wk, opDfd; if (file.mime === mime) { e.stopImmediatePropagation(); loading = $('
              '+fm.i18n('nowLoading')+'
              ').appendTo(ql.info.find('.elfinder-quicklook-info')); prog = $('
              ').appendTo(loading); // stop loading on change file if not loaded yet preview.one('change', function() { wk && wk.terminate(); loading.remove(); }); opDfd = fm.getContents(file.hash, 'arraybuffer', { progressBar: prog }).done(function(data) { if (data) { base = $('
              ').css({width:'100%',height:'100%'}).hide().appendTo(preview); try { wk = fm.getWorker(); wk.onmessage = function(res) { var data = res.data, cv, co, id, prop; wk && wk.terminate(); cv = document.createElement('canvas'); co = cv.getContext('2d'); cv.width = data.width; cv.height = data.height; id = co.createImageData(data.width, data.height); (id).data.set(new Uint8Array(data.image)); co.putImageData(id, 0, 0); base.append(cv).show(); loading.remove(); prop = (data.width/data.height).toFixed(2); preview.on('changesize', function() { var pw = parseInt(preview.width()), ph = parseInt(preview.height()), w, h; if (prop < (pw/ph).toFixed(2)) { h = ph; w = Math.floor(h * prop); } else { w = pw; h = Math.floor(w/prop); } $(cv).width(w).height(h).css('margin-top', h < ph ? Math.floor((ph - h)/2) : 0); }).trigger('changesize'); if (!file.width || !file.height) { setdim([data.width, data.height]); } ql.hideinfo(); }; wk.onerror = err; wk.postMessage({ scripts: [fm.options.cdns.tiff, fm.getWorkerUrl('quicklook.tiff.js')], data: { data: data } }); } catch(e) { err(e); } } else { err(); } }); // stop loading on change file if not loaded yet preview.one('change', function() { opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject(); }); } }); } }, /** * PSD(Adobe Photoshop data) preview plugin * * @param elFinder.commands.quicklook **/ function(ql) { "use strict"; var fm = ql.fm, mimes = fm.arrayFlip(['image/vnd.adobe.photoshop', 'image/x-photoshop']), preview = ql.preview, load = function(url, img, loading) { try { fm.replaceXhrSend(); PSD.fromURL(url).then(function(psd) { var prop; img.attr('src', psd.image.toBase64()); requestAnimationFrame(function() { prop = (img.width()/img.height()).toFixed(2); preview.on('changesize', function() { var pw = parseInt(preview.width()), ph = parseInt(preview.height()), w, h; if (prop < (pw/ph).toFixed(2)) { h = ph; w = Math.floor(h * prop); } else { w = pw; h = Math.floor(w/prop); } img.width(w).height(h).css('margin-top', h < ph ? Math.floor((ph - h)/2) : 0); }).trigger('changesize'); loading.remove(); // hide info/icon ql.hideinfo(); //show image img.fadeIn(100); }); }, function() { loading.remove(); img.remove(); }); fm.restoreXhrSend(); } catch(e) { fm.restoreXhrSend(); loading.remove(); img.remove(); } }, PSD; preview.on(ql.evUpdate, function(e) { var file = e.file, url, img, loading, prog, m, _define, _require, opDfd; if (mimes[file.mime] && fm.options.cdns.psd && ! fm.UA.ltIE10 && ql.dispInlineRegex.test(file.mime)) { // this is our file - stop event propagation e.stopImmediatePropagation(); loading = $('
              '+fm.i18n('nowLoading')+'
              ').appendTo(ql.info.find('.elfinder-quicklook-info')); prog = $('
              ').appendTo(loading); opDfd = fm.openUrl(file.hash, 'sameorigin', function(url) { if (url) { img = $('').hide().appendTo(preview); if (PSD) { load(url, img, loading); } else { _define = window.define; _require = window.require; window.require = null; window.define = null; fm.loadScript( [ fm.options.cdns.psd ], function() { PSD = require('psd'); _define? (window.define = _define) : (delete window.define); _require? (window.require = _require) : (delete window.require); load(url, img, loading); } ); } } }, { progressBar: prog }); // stop loading on change file if not loaded yet preview.one('change', function() { opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject(); }); } }); }, /** * HTML preview plugin * * @param elFinder.commands.quicklook **/ function(ql) { "use strict"; var fm = ql.fm, mimes = fm.arrayFlip(['text/html', 'application/xhtml+xml']), preview = ql.preview; preview.on(ql.evUpdate, function(e) { var file = e.file, jqxhr, loading, prog; if (mimes[file.mime] && ql.dispInlineRegex.test(file.mime) && (!ql.options.getSizeMax || file.size <= ql.options.getSizeMax)) { e.stopImmediatePropagation(); loading = $('
              '+fm.i18n('nowLoading')+'
              ').appendTo(ql.info.find('.elfinder-quicklook-info')); prog = $('
              ').appendTo(loading); // stop loading on change file if not loaded yet preview.one('change', function() { jqxhr.state() == 'pending' && jqxhr.reject(); }).addClass('elfinder-overflow-auto'); jqxhr = fm.request({ data : {cmd : 'get', target : file.hash, conv : 1, _t : file.ts}, options : {type: 'get', cache : true}, preventDefault : true, progressBar : prog }) .done(function(data) { ql.hideinfo(); var doc = $('').appendTo(preview)[0].contentWindow.document; doc.open(); doc.write(data.content); doc.close(); }) .always(function() { loading.remove(); }); } }); }, /** * MarkDown preview plugin * * @param elFinder.commands.quicklook **/ function(ql) { "use strict"; var fm = ql.fm, mimes = fm.arrayFlip(['text/x-markdown']), preview = ql.preview, marked = null, show = function(data, loading) { ql.hideinfo(); var doc = $('').appendTo(preview)[0].contentWindow.document; doc.open(); doc.write((marked.parse || marked)(data.content)); doc.close(); loading.remove(); }, error = function(loading) { marked = false; loading.remove(); }; preview.on(ql.evUpdate, function(e) { var file = e.file, jqxhr, loading, prog; if (mimes[file.mime] && fm.options.cdns.marked && marked !== false && ql.dispInlineRegex.test(file.mime) && (!ql.options.getSizeMax || file.size <= ql.options.getSizeMax)) { e.stopImmediatePropagation(); loading = $('
              '+fm.i18n('nowLoading')+'
              ').appendTo(ql.info.find('.elfinder-quicklook-info')); prog = $('
              ').appendTo(loading); // stop loading on change file if not loaded yet preview.one('change', function() { jqxhr.state() == 'pending' && jqxhr.reject(); }).addClass('elfinder-overflow-auto'); jqxhr = fm.request({ data : {cmd : 'get', target : file.hash, conv : 1, _t : file.ts}, options : {type: 'get', cache : true}, preventDefault : true, progressBar : prog }) .done(function(data) { if (marked || window.marked) { if (!marked) { marked = window.marked; } show(data, loading); } else { fm.loadScript([fm.options.cdns.marked], function(res) { marked = res || window.marked || false; delete window.marked; if (marked) { show(data, loading); } else { error(loading); } }, { tryRequire: true, error: function() { error(loading); } } ); } }) .fail(function() { error(loading); }); } }); }, /** * PDF/ODT/ODS/ODP preview with ViewerJS * * @param elFinder.commands.quicklook */ function(ql) { if (ql.options.viewerjs) { var fm = ql.fm, preview = ql.preview, opts = ql.options.viewerjs, mimes = opts.url? fm.arrayFlip(opts.mimes || []) : [], win = ql.window, navi = ql.navbar, setNavi = function() { navi.css('bottom', win.hasClass('elfinder-quicklook-fullscreen')? '30px' : ''); }; if (opts.url) { preview.on('update', function(e) { var file = e.file, node, loading, prog, opDfd; if (mimes[file.mime] && (file.mime !== 'application/pdf' || !opts.pdfNative || !ql.flags.pdfNative)) { e.stopImmediatePropagation(); loading = $('
              '+fm.i18n('nowLoading')+'
              ').appendTo(ql.info.find('.elfinder-quicklook-info')); prog = $('
              ').appendTo(loading); opDfd = fm.openUrl(file.hash, 'sameorigin', function(url) { if (url) { node = $('') .css('background-color', 'transparent') .on('load', function() { ql.hideinfo(); loading.remove(); node.css('background-color', '#fff'); }) .on('error', function() { loading.remove(); node.remove(); }) .appendTo(preview) .attr('src', opts.url + '#' + url); win.on('viewchange.viewerjs', setNavi); setNavi(); preview.one('change', function() { win.off('viewchange.viewerjs'); loading.remove(); node.off('load').remove(); }); } }, { progressBar: prog }); // stop loading on change file if not loaded yet preview.one('change', function() { opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject(); }); } }); } } }, /** * PDF preview plugin * * @param elFinder.commands.quicklook **/ function(ql) { "use strict"; var fm = ql.fm, mime = 'application/pdf', preview = ql.preview, active = false, urlhash = '', firefox, toolbar; if ((fm.UA.Safari && fm.OS === 'mac' && !fm.UA.iOS) || fm.UA.IE || fm.UA.Firefox) { active = true; } else { $.each(navigator.plugins, function(i, plugins) { $.each(plugins, function(i, plugin) { if (plugin.type === mime) { return !(active = true); } }); }); } ql.flags.pdfNative = active; if (active) { if (typeof ql.options.pdfToolbar !== 'undefined' && !ql.options.pdfToolbar) { urlhash = '#toolbar=0'; } preview.on(ql.evUpdate, function(e) { var file = e.file, opDfd; if (active && file.mime === mime && ql.dispInlineRegex.test(file.mime)) { e.stopImmediatePropagation(); opDfd = fm.openUrl(file.hash, false, function(url) { if (url) { ql.hideinfo(); ql.cover.addClass('elfinder-quicklook-coverbg'); $('') .on('error', function(e) { active = false; ql.update(void(0), fm.cwd()); ql.update(void(0), file); }) .appendTo(preview); } }); // stop loading on change file if not loaded yet preview.one('change', function() { opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject(); }); } }); } }, /** * Flash preview plugin * * @param elFinder.commands.quicklook **/ function(ql) { "use strict"; var fm = ql.fm, mime = 'application/x-shockwave-flash', preview = ql.preview, active = false; $.each(navigator.plugins, function(i, plugins) { $.each(plugins, function(i, plugin) { if (plugin.type === mime) { return !(active = true); } }); }); active && preview.on(ql.evUpdate, function(e) { var file = e.file, node, opDfd; if (file.mime === mime && ql.dispInlineRegex.test(file.mime)) { e.stopImmediatePropagation(); opDfd = fm.openUrl(file.hash, false, function(url) { if (url) { ql.hideinfo(); node = $('') .appendTo(preview); } }); // stop loading on change file if not loaded yet preview.one('change', function() { opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject(); }); } }); }, /** * HTML5 audio preview plugin * * @param elFinder.commands.quicklook **/ function(ql) { "use strict"; var fm = ql.fm, preview = ql.preview, mimes = { 'audio/mpeg' : 'mp3', 'audio/mpeg3' : 'mp3', 'audio/mp3' : 'mp3', 'audio/x-mpeg3' : 'mp3', 'audio/x-mp3' : 'mp3', 'audio/x-wav' : 'wav', 'audio/wav' : 'wav', 'audio/x-m4a' : 'm4a', 'audio/aac' : 'm4a', 'audio/mp4' : 'm4a', 'audio/x-mp4' : 'm4a', 'audio/ogg' : 'ogg', 'audio/webm' : 'webm', 'audio/flac' : 'flac', 'audio/x-flac' : 'flac', 'audio/amr' : 'amr' }, node, curHash, win = ql.window, navi = ql.navbar, AMR, autoplay, controlsList = typeof ql.options.mediaControlsList === 'string' && ql.options.mediaControlsList? ' controlsList="' + fm.escape(ql.options.mediaControlsList) + '"' : '', setNavi = function() { navi.css('bottom', win.hasClass('elfinder-quicklook-fullscreen')? '50px' : ''); }, getNode = function(src, hash) { return $('') .on('change', function(e) { // Firefox fire change event on seek or volume change e.stopPropagation(); }) .on('error', function(e) { node && node.data('hash') === hash && reset(); }) .data('hash', hash) .appendTo(preview); }, amrToWavUrl = function(hash) { var dfd = $.Deferred(), loader = $.Deferred().done(function() { var opDfd; opDfd = fm.getContents(hash, 'arraybuffer', { progressBar: prog }).done(function(data) { try { var buffer = AMR.toWAV(new Uint8Array(data)); if (buffer) { dfd.resolve(URL.createObjectURL(new Blob([buffer], { type: 'audio/x-wav' }))); } else { dfd.reject(); } } catch(e) { dfd.reject(); } }).fail(function() { dfd.reject(); }); // stop loading on change file if not loaded yet preview.one('change', function() { opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject(); }); }).fail(function() { AMR = false; dfd.reject(); }), _AMR; if (window.TextEncoder && window.URL && URL.createObjectURL && typeof AMR === 'undefined') { // previous window.AMR _AMR = window.AMR; delete window.AMR; fm.loadScript( [ fm.options.cdns.amr ], function() { AMR = window.AMR? window.AMR : false; // restore previous window.AMR window.AMR = _AMR; loader[AMR? 'resolve':'reject'](); }, { error: function() { loader.reject(); } } ); } else { loader[AMR? 'resolve':'reject'](); } return dfd; }, play = function(player) { var hash = node.data('hash'), playPromise; autoplay && (playPromise = player.play()); // uses "playPromise['catch']" instead "playPromise.catch" to support Old IE if (playPromise && playPromise['catch']) { playPromise['catch'](function(e) { if (!player.paused) { node && node.data('hash') === hash && reset(); } }); } }, reset = function() { if (node && node.parent().length) { var elm = node[0], url = node.children('source').attr('src'); win.off('viewchange.audio'); try { elm.pause(); node.empty(); if (url.match(/^blob:/)) { URL.revokeObjectURL(url); } elm.src = ''; elm.load(); } catch(e) {} node.remove(); node = null; } }, loading, prog; preview.on(ql.evUpdate, function(e) { var file = e.file, type = mimes[file.mime], html5, opDfd; if (mimes[file.mime] && ql.dispInlineRegex.test(file.mime) && ((html5 = ql.support.audio[type]) || (type === 'amr'))) { autoplay = ql.autoPlay(); curHash = file.hash; if (!html5) { if (fm.options.cdns.amr && type === 'amr' && AMR !== false) { e.stopImmediatePropagation(); loading = $('
              '+fm.i18n('nowLoading')+'
              ').appendTo(ql.info.find('.elfinder-quicklook-info')); prog = $('
              ').appendTo(loading); node = getNode('', curHash); amrToWavUrl(file.hash).done(function(url) { loading.remove(); if (curHash === file.hash) { var elm = node[0]; try { node.children('source').attr('src', url); elm.pause(); elm.load(); play(elm); win.on('viewchange.audio', setNavi); setNavi(); } catch(e) { URL.revokeObjectURL(url); node.remove(); } } else { URL.revokeObjectURL(url); } }).fail(function() { node.remove(); }); } } else { e.stopImmediatePropagation(); loading = $('
              '+fm.i18n('nowLoading')+'
              ').appendTo(ql.info.find('.elfinder-quicklook-info')); prog = $('
              ').appendTo(loading); opDfd = fm.openUrl(curHash, false, function(url) { loading.remove(); if (url) { node = getNode(url, curHash); play(node[0]); win.on('viewchange.audio', setNavi); setNavi(); } else { node.remove(); } }, { progressBar: prog }); // stop loading on change file if not loaded yet preview.one('change', function() { opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject(); }); } } }).one('change', reset); }, /** * HTML5 video preview plugin * * @param elFinder.commands.quicklook **/ function(ql) { "use strict"; var fm = ql.fm, preview = ql.preview, mimes = { 'video/mp4' : 'mp4', 'video/x-m4v' : 'mp4', 'video/quicktime' : 'mp4', 'video/mpeg' : 'mpeg', 'video/ogg' : 'ogg', 'application/ogg' : 'ogg', 'video/webm' : 'webm', 'video/x-matroska': 'mkv', 'video/3gpp' : '3gp', 'application/vnd.apple.mpegurl' : 'm3u8', 'application/x-mpegurl' : 'm3u8', 'application/dash+xml' : 'mpd', 'video/x-flv' : 'flv', 'video/x-msvideo' : 'avi' }, node, win = ql.window, navi = ql.navbar, cHls, cDash, pDash, cFlv, cVideojs, autoplay, tm, loading, prog, controlsList = typeof ql.options.mediaControlsList === 'string' && ql.options.mediaControlsList? ' controlsList="' + fm.escape(ql.options.mediaControlsList) + '"' : '', setNavi = function() { if (fm.UA.iOS) { if (win.hasClass('elfinder-quicklook-fullscreen')) { preview.css('height', '-webkit-calc(100% - 50px)'); navi._show(); } else { preview.css('height', ''); } } else { navi.css('bottom', win.hasClass('elfinder-quicklook-fullscreen')? '50px' : ''); } }, render = function(file, opts) { var errTm = function(e) { if (err > 1) { tm && clearTimeout(tm); tm = setTimeout(function() { !canPlay && reset(true); }, 800); } }, err = 0, canPlay; //reset(); pDash = null; opts = opts || {}; ql.hideinfo(); node = $('') .on('change', function(e) { // Firefox fire change event on seek or volume change e.stopPropagation(); }) .on('timeupdate progress', errTm) .on('canplay', function() { canPlay = true; }) .data('hash', file.hash); // can not handling error event with jQuery `on` event handler node[0].addEventListener('error', function(e) { if (opts.src && fm.convAbsUrl(opts.src) === fm.convAbsUrl(e.target.src)) { ++err; errTm(); } }, true); if (opts.src) { node.append(''); } node.appendTo(preview); win.on('viewchange.video', setNavi); setNavi(); }, loadHls = function(file) { var hls, opDfd; opDfd = fm.openUrl(file.hash, false, function(url) { loading.remove(); if (url) { render(file); hls = new cHls(); hls.loadSource(url); hls.attachMedia(node[0]); if (autoplay) { hls.on(cHls.Events.MANIFEST_PARSED, function() { play(node[0]); }); } } }, { progressBar: prog }); // stop loading on change file if not loaded yet preview.one('change', function() { opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject(); }); }, loadDash = function(file) { var opDfd; opDfd = fm.openUrl(file.hash, false, function(url) { var debug; loading.remove(); if (url) { render(file); pDash = window.dashjs.MediaPlayer().create(); debug = pDash.getDebug(); if (debug.setLogLevel) { debug.setLogLevel(dashjs.Debug.LOG_LEVEL_FATAL); } else if (debug.setLogToBrowserConsole) { debug.setLogToBrowserConsole(false); } pDash.initialize(node[0], url, autoplay); pDash.on('error', function(e) { reset(true); }); } }, { progressBar: prog }); // stop loading on change file if not loaded yet preview.one('change', function() { opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject(); }); }, loadFlv = function(file) { var opDfd if (!cFlv.isSupported()) { cFlv = false; return; } opDfd = fm.openUrl(file.hash, false, function(url) { loading.remove(); if (url) { var player = cFlv.createPlayer({ type: 'flv', url: url }); render(file); player.on(cFlv.Events.ERROR, function() { player.destroy(); reset(true); }); player.attachMediaElement(node[0]); player.load(); play(player); } }, { progressBar: prog }); // stop loading on change file if not loaded yet preview.one('change', function() { opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject(); }); }, loadVideojs = function(file) { var opDfd; opDfd = fm.openUrl(file.hash, false, function(url) { loading.remove(); if (url) { render(file); node[0].src = url; cVideojs(node[0], { src: url }); } }, { progressBar: prog }); // stop loading on change file if not loaded yet preview.one('change', function() { opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject(); }); }, play = function(player) { var hash = node.data('hash'), playPromise; autoplay && (playPromise = player.play()); // uses "playPromise['catch']" instead "playPromise.catch" to support Old IE if (playPromise && playPromise['catch']) { playPromise['catch'](function(e) { if (!player.paused) { node && node.data('hash') === hash && reset(true); } }); } }, reset = function(showInfo) { tm && clearTimeout(tm); if (node && node.parent().length) { var elm = node[0]; win.off('viewchange.video'); pDash && pDash.reset(); try { elm.pause(); node.empty(); elm.src = ''; elm.load(); } catch(e) {} node.remove(); node = null; } showInfo && ql.info.show(); }; preview.on(ql.evUpdate, function(e) { var file = e.file, mime = file.mime.toLowerCase(), type = mimes[mime], stock, playPromise, opDfd; if (mimes[mime] && ql.dispInlineRegex.test(file.mime) /*&& (((type === 'm3u8' || (type === 'mpd' && !fm.UA.iOS) || type === 'flv') && !fm.UA.ltIE10) || ql.support.video[type])*/) { autoplay = ql.autoPlay(); loading = $('
              '+fm.i18n('nowLoading')+'
              '); prog = $('
              ').appendTo(loading); if (ql.support.video[type] && (type !== 'm3u8' || fm.UA.Safari)) { e.stopImmediatePropagation(); loading.appendTo(ql.info.find('.elfinder-quicklook-info')); opDfd = fm.openUrl(file.hash, false, function(url) { loading.remove(); if (url) { render(file, { src: url }); play(node[0]); } }, { progressBar: prog }); // stop loading on change file if not loaded yet preview.one('change', function() { opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject(); }); } else { if (cHls !== false && fm.options.cdns.hls && type === 'm3u8') { e.stopImmediatePropagation(); loading.appendTo(ql.info.find('.elfinder-quicklook-info')); if (cHls) { loadHls(file); } else { stock = window.Hls; delete window.Hls; fm.loadScript( [ fm.options.cdns.hls ], function(res) { cHls = res || window.Hls || false; window.Hls = stock; cHls && loadHls(file); }, { tryRequire: true, error : function() { cHls = false; } } ); } } else if (cDash !== false && fm.options.cdns.dash && type === 'mpd') { e.stopImmediatePropagation(); loading.appendTo(ql.info.find('.elfinder-quicklook-info')); if (cDash) { loadDash(file); } else { fm.loadScript( [ fm.options.cdns.dash ], function() { // dashjs require window.dashjs in global scope cDash = window.dashjs? true : false; cDash && loadDash(file); }, { tryRequire: true, error : function() { cDash = false; } } ); } } else if (cFlv !== false && fm.options.cdns.flv && type === 'flv') { e.stopImmediatePropagation(); loading.appendTo(ql.info.find('.elfinder-quicklook-info')); if (cFlv) { loadFlv(file); } else { stock = window.flvjs; delete window.flvjs; fm.loadScript( [ fm.options.cdns.flv ], function(res) { cFlv = res || window.flvjs || false; window.flvjs = stock; cFlv && loadFlv(file); }, { tryRequire: true, error : function() { cFlv = false; } } ); } } else if (fm.options.cdns.videojs) { e.stopImmediatePropagation(); loading.appendTo(ql.info.find('.elfinder-quicklook-info')); if (cVideojs) { loadVideojs(file); } else { fm.loadScript( [ fm.options.cdns.videojs + '/video.min.js' ], function(res) { cVideojs = res || window.videojs || false; //window.flvjs = stock; cVideojs && loadVideojs(file); }, { tryRequire: true, error : function() { cVideojs = false; } } ).loadCss([fm.options.cdns.videojs + '/video-js.min.css']); } } } } }).one('change', reset); }, /** * Audio/video preview plugin using browser plugins * * @param elFinder.commands.quicklook **/ function(ql) { "use strict"; var preview = ql.preview, mimes = [], node, win = ql.window, navi = ql.navbar; $.each(navigator.plugins, function(i, plugins) { $.each(plugins, function(i, plugin) { (plugin.type.indexOf('audio/') === 0 || plugin.type.indexOf('video/') === 0) && mimes.push(plugin.type); }); }); mimes = ql.fm.arrayFlip(mimes); preview.on(ql.evUpdate, function(e) { var file = e.file, mime = file.mime, video, opDfd, loading, prog, setNavi = function() { navi.css('bottom', win.hasClass('elfinder-quicklook-fullscreen')? '50px' : ''); }; if (mimes[file.mime] && ql.dispInlineRegex.test(file.mime)) { e.stopImmediatePropagation(); loading = $('
              '+fm.i18n('nowLoading')+'
              ').appendTo(ql.info.find('.elfinder-quicklook-info')); prog = $('
              ').appendTo(loading); opDfd = ql.fm.openUrl(file.hash, false, function(url) { loading.remove(); if (url) { (video = mime.indexOf('video/') === 0) && ql.hideinfo(); node = $('') .appendTo(preview); win.on('viewchange.embed', setNavi); setNavi(); } }, { progressBar: prog }); // stop loading on change file if not loaded yet preview.one('change', function() { opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject(); }); } }).one('change', function() { if (node && node.parent().length) { win.off('viewchange.embed'); node.remove(); node= null; } }); }, /** * Archive(zip|gzip|tar|bz2) preview plugin using https://github.com/imaya/zlib.js * * @param elFinder.commands.quicklook **/ function(ql) { "use strict"; var fm = ql.fm, mimes = fm.arrayFlip(['application/zip', 'application/x-gzip', 'application/x-tar', 'application/x-bzip2']), preview = ql.preview, sizeMax = fm.returnBytes(ql.options.unzipMaxSize || 0), Zlib = (fm.options.cdns.zlibUnzip && fm.options.cdns.zlibGunzip)? true : false, bzip2 = fm.options.cdns.bzip2? true : false; if (window.Worker && window.Uint8Array && window.DataView) { preview.on(ql.evUpdate, function(e) { var file = e.file, isTar = (file.mime === 'application/x-tar'), isBzip2 = (file.mime === 'application/x-bzip2'), isZlib = (file.mime === 'application/zip' || file.mime === 'application/x-gzip'); if (mimes[file.mime] && (!sizeMax || file.size <= sizeMax) && ( isTar || (isBzip2 && bzip2) || (isZlib && Zlib) )) { var jqxhr, wk, loading, prog, url, req = function() { jqxhr = fm.getContents(file.hash, 'arraybuffer', { progressBar: prog }) .fail(function() { loading.remove(); }) .done(function(data) { var unzip, filenames, err = function(e) { wk && wk.terminate(); loading.remove(); if (isZlib) { Zlib = false; } else if (isBzip2) { bzip2 = false; } fm.debug('error', e); }; try { wk = fm.getWorker(); wk.onmessage = function(res) { wk && wk.terminate(); loading.remove(); if (!res.data || res.data.error) { new Error(res.data && res.data.error? res.data.error : ''); } else { makeList(res.data.files); } }; wk.onerror = err; if (file.mime === 'application/x-tar') { wk.postMessage({ scripts: [fm.getWorkerUrl('quicklook.unzip.js')], data: { type: 'tar', bin: data } }); } else if (file.mime === 'application/zip') { wk.postMessage({ scripts: [fm.options.cdns.zlibUnzip, fm.getWorkerUrl('quicklook.unzip.js')], data: { type: 'zip', bin: data } }); } else if (file.mime === 'application/x-gzip') { wk.postMessage({ scripts: [fm.options.cdns.zlibGunzip, fm.getWorkerUrl('quicklook.unzip.js')], data: { type: 'gzip', bin: data } }); } else if (file.mime === 'application/x-bzip2') { wk.postMessage({ scripts: [fm.options.cdns.bzip2, fm.getWorkerUrl('quicklook.unzip.js')], data: { type: 'bzip2', bin: data } }); } } catch (e) { err(e); } }); }, makeList = function(filenames) { var header, list, doc, tsize = 0; if (filenames && filenames.length) { filenames = $.map(filenames, function(str) { return fm.decodeRawString(str); }); filenames.sort(); list = fm.escape(filenames.join("\n").replace(/\{formatSize\((\d+)\)\}/g, function(m, s) { tsize += parseInt(s); return fm.formatSize(s); })); header = ''+fm.escape(file.mime)+' ('+fm.formatSize(file.size)+' / '+fm.formatSize(tsize)+')'+'
              '; doc = $('
              '+header+'
              '+list+'
              ') .on('touchstart', function(e) { if ($(this)['scroll' + (fm.direction === 'ltr'? 'Right' : 'Left')]() > 5) { e.originalEvent._preventSwipeX = true; } }) .appendTo(preview); ql.hideinfo(); } loading.remove(); }; // this is our file - stop event propagation e.stopImmediatePropagation(); loading = $('
              '+fm.i18n('nowLoading')+'
              ').appendTo(ql.info.find('.elfinder-quicklook-info')); prog = $('
              ').appendTo(loading); // stop loading on change file if not loaded yet preview.one('change', function() { jqxhr.state() === 'pending' && jqxhr.reject(); wk && wk.terminate(); loading.remove(); }); req(); } }); } }, /** * RAR Archive preview plugin using https://github.com/43081j/rar.js * * @param elFinder.commands.quicklook **/ function(ql) { "use strict"; var fm = ql.fm, mimes = fm.arrayFlip(['application/x-rar']), preview = ql.preview, RAR; if (window.DataView) { preview.on(ql.evUpdate, function(e) { var file = e.file; if (mimes[file.mime] && fm.options.cdns.rar && RAR !== false) { var loading, prog, url, archive, abort, getList = function(url) { if (abort) { loading.remove(); return; } try { archive = RAR({ file: url, type: 2, xhrHeaders: fm.customHeaders, xhrFields: fm.xhrFields }, function(err) { loading.remove(); var filenames = [], header, doc; if (abort || err) { // An error occurred (not a rar, read error, etc) err && fm.debug('error', err); return; } $.each(archive.entries, function() { filenames.push(this.path + (this.size? ' (' + fm.formatSize(this.size) + ')' : '')); }); if (filenames.length) { filenames = $.map(filenames, function(str) { return fm.decodeRawString(str); }); filenames.sort(); header = ''+fm.escape(file.mime)+' ('+fm.formatSize(file.size)+')'+'
              '; doc = $('
              '+header+'
              '+fm.escape(filenames.join("\n"))+'
              ') .on('touchstart', function(e) { if ($(this)['scroll' + (fm.direction === 'ltr'? 'Right' : 'Left')]() > 5) { e.originalEvent._preventSwipeX = true; } }) .appendTo(preview); ql.hideinfo(); } }); } catch(e) { loading.remove(); } }, error = function() { RAR = false; loading.remove(); }, _RAR, opDfd; // this is our file - stop event propagation e.stopImmediatePropagation(); loading = $('
              '+fm.i18n('nowLoading')+'
              ').appendTo(ql.info.find('.elfinder-quicklook-info')); prog = $('
              ').appendTo(loading); // stop loading on change file if not loaded yet preview.one('change', function() { archive && (archive.abort = true); loading.remove(); abort = true; }); opDfd = fm.openUrl(file.hash, 'sameorigin', function(url) { if (url) { if (RAR) { getList(url); } else { if (window.RarArchive) { _RAR = window.RarArchive; delete window.RarArchive; } fm.loadScript( [ fm.options.cdns.rar ], function() { if (fm.hasRequire) { require(['rar'], function(RarArchive) { RAR = RarArchive; getList(url); }, error); } else { if (RAR = window.RarArchive) { if (_RAR) { window.RarArchive = _RAR; } else { delete window.RarArchive; } getList(url); } else { error(); } } }, { tryRequire: true, error : error } ); } } }, { progressBar: prog, temporary: true }); // stop loading on change file if not loaded yet preview.one('change', function() { opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject(); }); } }); } }, /** * CAD-Files and 3D-Models online viewer on sharecad.org * * @param elFinder.commands.quicklook **/ function(ql) { "use strict"; var fm = ql.fm, mimes = fm.arrayFlip(ql.options.sharecadMimes || []), preview = ql.preview, win = ql.window, node; if (ql.options.sharecadMimes.length) { ql.addIntegration({ title: 'ShareCAD.org CAD and 3D-Models viewer', link: 'https://sharecad.org/DWGOnlinePlugin' }); } preview.on(ql.evUpdate, function(e) { var file = e.file; if (mimes[file.mime.toLowerCase()] && fm.option('onetimeUrl', file.hash)) { var win = ql.window, loading, prog, url; e.stopImmediatePropagation(); if (file.url == '1') { preview.hide(); $('
              ').appendTo(ql.info.find('.elfinder-quicklook-info')) .on('click', function() { var self = $(this); self.html(''); fm.request({ data : {cmd : 'url', target : file.hash}, preventDefault : true, progressBar : prog }) .always(function() { self.html(''); }) .done(function(data) { var rfile = fm.file(file.hash); file.url = rfile.url = data.url || ''; if (file.url) { preview.trigger({ type: ql.evUpdate, file: file, forceUpdate: true }); } }); }); } if (file.url !== '' && file.url != '1') { preview.one('change', function() { loading.remove(); node.off('load').remove(); node = null; }).addClass('elfinder-overflow-auto'); loading = $('
              '+fm.i18n('nowLoading')+'
              ').appendTo(ql.info.find('.elfinder-quicklook-info')); prog = $('
              ').appendTo(loading); url = fm.convAbsUrl(fm.url(file.hash)); node = $('') .css('background-color', 'transparent') .appendTo(preview) .on('load', function() { ql.hideinfo(); loading.remove(); ql.preview.after(ql.info); $(this).css('background-color', '#fff').show(); }) .on('error', function() { loading.remove(); ql.preview.after(ql.info); }) .attr('src', '//sharecad.org/cadframe/load?url=' + encodeURIComponent(url)); ql.info.after(ql.preview); } } }); }, /** * KML preview with GoogleMaps API * * @param elFinder.commands.quicklook */ function(ql) { "use strict"; var fm = ql.fm, mimes = { 'application/vnd.google-earth.kml+xml' : true, 'application/vnd.google-earth.kmz' : true }, preview = ql.preview, gMaps, loadMap, wGmfail, fail, mapScr; if (ql.options.googleMapsApiKey) { ql.addIntegration({ title: 'Google Maps', link: 'https://www.google.com/intl/' + fm.lang.replace('_', '-') + '/help/terms_maps.html' }); gMaps = (window.google && google.maps); // start load maps loadMap = function(file, node, prog) { var mapsOpts = ql.options.googleMapsOpts.maps; fm.forExternalUrl(file.hash, { progressBar: prog }).done(function(url) { if (url) { try { new gMaps.KmlLayer(url, Object.assign({ map: new gMaps.Map(node.get(0), mapsOpts) }, ql.options.googleMapsOpts.kml)); ql.hideinfo(); } catch(e) { fail(); } } else { fail(); } }); }; // keep stored error handler if exists wGmfail = window.gm_authFailure; // on error function fail = function() { mapScr = null; }; // API script url mapScr = 'https://maps.googleapis.com/maps/api/js?key=' + ql.options.googleMapsApiKey; // error handler window.gm_authFailure = function() { fail(); wGmfail && wGmfail(); }; preview.on(ql.evUpdate, function(e) { var file = e.file; if (mapScr && mimes[file.mime.toLowerCase()]) { var win = ql.window, getLink = (file.url == '1' && !fm.option('onetimeUrl', file.hash)), loading, prog, url, node; e.stopImmediatePropagation(); loading = $('
              '+fm.i18n('nowLoading')+'
              ').appendTo(ql.info.find('.elfinder-quicklook-info')); prog = $('
              ').appendTo(loading); if (getLink) { preview.hide(); $('
              ').appendTo(ql.info.find('.elfinder-quicklook-info')) .on('click', function() { var self = $(this); self.html(''); fm.request({ data : {cmd : 'url', target : file.hash}, preventDefault : true, progressBar : prog }) .always(function() { loading.remove(); self.html(''); }) .done(function(data) { var rfile = fm.file(file.hash); file.url = rfile.url = data.url || ''; if (file.url) { preview.trigger({ type: ql.evUpdate, file: file, forceUpdate: true }); } }); }); } if (file.url !== '' && !getLink) { node = $('
              ').appendTo(preview); preview.one('change', function() { node.remove(); node = null; }); if (!gMaps) { fm.loadScript([mapScr], function() { gMaps = window.google && google.maps; gMaps && loadMap(file, node, prog); }); } else { loadMap(file, node, prog); } } } }); } }, /** * Any supported files preview plugin using (Google docs | MS Office) online viewer * * @param elFinder.commands.quicklook **/ function(ql) { "use strict"; var fm = ql.fm, mimes = Object.assign(fm.arrayFlip(ql.options.googleDocsMimes || [], 'g'), fm.arrayFlip(ql.options.officeOnlineMimes || [], 'm')), preview = ql.preview, win = ql.window, navi = ql.navbar, urls = { g: 'docs.google.com/gview?embedded=true&url=', m: 'view.officeapps.live.com/op/embed.aspx?wdStartOn=0&src=' }, navBottom = { g: '56px', m: '24px' }, mLimits = { xls : 5242880, // 5MB xlsb : 5242880, xlsx : 5242880, xlsm : 5242880, other: 10485760 // 10MB }, node, enable; if (ql.options.googleDocsMimes.length) { enable = true; ql.addIntegration({ title: 'Google Docs Viewer', link: 'https://docs.google.com/' }); } if (ql.options.officeOnlineMimes.length) { enable = true; ql.addIntegration({ title: 'MS Online Doc Viewer', link: 'https://products.office.com/office-online/view-office-documents-online' }); } if (enable) { preview.on(ql.evUpdate, function(e) { var file = e.file, type, dfd; // 25MB is maximum filesize of Google Docs prevew if (file.size <= 26214400 && (type = mimes[file.mime])) { var win = ql.window, setNavi = function() { navi.css('bottom', win.hasClass('elfinder-quicklook-fullscreen')? navBottom[type] : ''); }, ext = fm.mimeTypes[file.mime], getLink = (file.url == '1' && !fm.option('onetimeUrl', file.hash)), loading, prog, url, tm; if (type === 'm') { if ((mLimits[ext] && file.size > mLimits[ext]) || file.size > mLimits.other) { type = 'g'; } } if (getLink) { preview.hide(); $('
              ').appendTo(ql.info.find('.elfinder-quicklook-info')) .on('click', function() { var self = $(this); self.html(''); fm.request({ data : {cmd : 'url', target : file.hash}, preventDefault : true }) .always(function() { self.html(''); }) .done(function(data) { var rfile = fm.file(file.hash); file.url = rfile.url = data.url || ''; if (file.url) { preview.trigger({ type: ql.evUpdate, file: file, forceUpdate: true }); } }); }); } if (file.url !== '' && !getLink) { e.stopImmediatePropagation(); preview.one('change', function() { dfd && dfd.status && dfd.status() === 'pending' && dfd.reject(); win.off('viewchange.googledocs'); loading.remove(); node.off('load').remove(); node = null; }).addClass('elfinder-overflow-auto'); loading = $('
              '+fm.i18n('nowLoading')+'
              ').appendTo(ql.info.find('.elfinder-quicklook-info')); prog = $('
              ').appendTo(loading); node = $('') .css('background-color', 'transparent') .appendTo(preview); dfd = fm.forExternalUrl(file.hash, { progressBar: prog }).done(function(url) { var load = function() { try { if (node && (!node.attr('src') || node.get(0).contentWindow.document/*maybe HTTP 204*/)) { node.attr('src', 'https://' + urls[type] + encodeURIComponent(url)); // Retry because Google Docs viewer sometimes returns HTTP 204 tm = setTimeout(load, 2000); } } catch(e) {} }; if (url) { if (file.ts) { url += (url.match(/\?/)? '&' : '?') + '_t=' + file.ts; } node.on('load', function() { tm && clearTimeout(tm); ql.hideinfo(); loading.remove(); ql.preview.after(ql.info); $(this).css('background-color', '#fff').show(); }) .on('error', function() { tm && clearTimeout(tm); loading.remove(); ql.preview.after(ql.info); }); load(); } else { loading.remove(); node.remove(); } }); win.on('viewchange.googledocs', setNavi); setNavi(); ql.info.after(ql.preview); } } }); } }, /** * Texts preview plugin * * @param elFinder.commands.quicklook **/ function(ql) { "use strict"; var fm = ql.fm, preview = ql.preview, textLines = parseInt(ql.options.textInitialLines) || 150, prettifyLines = parseInt(ql.options.prettifyMaxLines) || 500, PR, _PR, error = function() { prettify = function() { return false; }; _PR && (window.PR = _PR); PR = false; }, prettify = function(node) { if (fm.options.cdns.prettify) { prettify = function(node) { setTimeout(function() { PRcheck(node); }, 100); return 'pending'; }; if (window.PR) { _PR = window.PR; } fm.loadScript([fm.options.cdns.prettify + (fm.options.cdns.prettify.match(/\?/)? '&' : '?') + 'autorun=false'], function(wPR) { PR = wPR || window.PR; if (typeof PR === 'object') { prettify = function() { return true; }; if (_PR) { window.PR = _PR; } else { delete window.PR; } exec(node); } else { error(); } }, { tryRequire: true, error : error }); } else { error(); } }, exec = function(node) { if (node && !node.hasClass('prettyprinted')) { node.css('cursor', 'wait'); requestAnimationFrame(function() { PR.prettyPrint && PR.prettyPrint(null, node.get(0)); node.css('cursor', ''); }); } }, PRcheck = function(node) { var status = prettify(node); if (status === true) { exec(node); } }; preview.on(ql.evUpdate, function(e) { var file = e.file, mime = file.mime, jqxhr, loading, prog, encSelect; if (fm.mimeIsText(file.mime) && (!ql.options.getSizeMax || file.size <= ql.options.getSizeMax) && PR !== false) { e.stopImmediatePropagation(); loading = $('
              '+fm.i18n('nowLoading')+'
              ').appendTo(ql.info.find('.elfinder-quicklook-info')); prog = $('
              ').appendTo(loading); // stop loading on change file if not loadin yet preview.one('change', function() { jqxhr.state() == 'pending' && jqxhr.reject(); encSelect && encSelect.remove(); }); jqxhr = fm.request({ data : {cmd : 'get', target : file.hash, conv : (file.encoding || 1), _t : file.ts}, options : {type: 'get', cache : true}, preventDefault : true, progressBar : prog }) .done(function(data) { var reg = new RegExp('^(data:'+file.mime.replace(/([.+])/g, '\\$1')+';base64,)', 'i'), text = data.content, part, more, node, lines, m; if (typeof text !== 'string') { return; } ql.hideinfo(); if (window.atob && (m = text.match(reg))) { text = atob(text.substr(m[1].length)); } lines = text.match(/([^\r\n]{1,100}[\r\n]*)/g); more = lines.length - textLines; if (more > 10) { part = lines.splice(0, textLines).join(''); } else { more = 0; } node = $('
              '); if (more) { node.append($('

              ' + fm.i18n('linesLeft', fm.toLocaleString(more)) + '
              ') .on('click', function() { var top = node.scrollTop(); $(this).remove(); node.children('pre').removeClass('prettyprinted').text(text).scrollTop(top); if (lines.length <= prettifyLines) { PRcheck(node); } }) ); } node.children('pre').text(part || text); node.on('touchstart', function(e) { if ($(this)['scroll' + (fm.direction === 'ltr'? 'Right' : 'Left')]() > 5) { e.originalEvent._preventSwipeX = true; } }).appendTo(preview); // make toast message if (data.toasts && Array.isArray(data.toasts)) { $.each(data.toasts, function() { this.msg && fm.toast(this); }); } PRcheck(node); }) .always(function(data) { var cmdEdit, sel, head; if (cmdEdit = fm.getCommand('edit')) { head = []; if (data && data.encoding) { head.push({value: data.encoding}); } head.push({value: 'UTF-8'}); sel = cmdEdit.getEncSelect(head); sel.on('change', function() { file.encoding = sel.val(); fm.cache(file, 'change'); preview.trigger({ type: ql.evUpdate, file: file, forceUpdate: true }); }); encSelect = $('
              ').append(sel); ql.window.append(encSelect); } loading.remove(); }); } }); } ]; plugins/file-manager-advanced/application/library/js/commands/reload.js000064400000003534147176754550022341 0ustar00/** * @class elFinder command "reload" * Sync files and folders * * @author Dmitry (dio) Levashov **/ (elFinder.prototype.commands.reload = function() { "use strict"; var self = this, search = false; this.alwaysEnabled = true; this.updateOnSelect = true; this.shortcuts = [{ pattern : 'ctrl+shift+r f5' }]; this.getstate = function() { return 0; }; this.init = function() { this.fm.bind('search searchend', function() { search = this.type == 'search'; }); }; this.fm.bind('contextmenu', function(){ var fm = self.fm; if (fm.options.sync >= 1000) { self.extra = { icon: 'accept', node: $('') .attr({title: fm.i18n('autoSync')}) .on('click touchstart', function(e){ if (e.type === 'touchstart' && e.originalEvent.touches.length > 1) { return; } e.stopPropagation(); e.preventDefault(); $(this).parent() .toggleClass('ui-state-disabled', fm.options.syncStart) .parent().removeClass('ui-state-hover'); fm.options.syncStart = !fm.options.syncStart; fm.autoSync(fm.options.syncStart? null : 'stop'); }).on('ready', function(){ $(this).parent().toggleClass('ui-state-disabled', !fm.options.syncStart).css('pointer-events', 'auto'); }) }; } }); this.exec = function() { var fm = this.fm; if (!search) { var dfrd = fm.sync(), timeout = setTimeout(function() { fm.notify({type : 'reload', cnt : 1, hideCnt : true}); dfrd.always(function() { fm.notify({type : 'reload', cnt : -1}); }); }, fm.notifyDelay); return dfrd.always(function() { clearTimeout(timeout); fm.trigger('reload'); }); } else { $('div.elfinder-toolbar > div.'+fm.res('class', 'searchbtn') + ' > span.ui-icon-search').click(); } }; }).prototype = { forceLoad : true }; // this is required command plugins/file-manager-advanced/application/library/js/commands/rename.js000064400000037470147176754550022350 0ustar00/** * @class elFinder command "rename". * Rename selected file. * * @author Dmitry (dio) Levashov, dio@std42.ru * @author Naoki Sawada **/ elFinder.prototype.commands.rename = function() { "use strict"; // set alwaysEnabled to allow root rename on client size this.alwaysEnabled = true; this.syncTitleOnChange = true; var self = this, fm = self.fm, request = function(dfrd, targtes, file, name) { var sel = targtes? [file.hash].concat(targtes) : [file.hash], cnt = sel.length, data = {}, rootNames; fm.lockfiles({files : sel}); if (fm.isRoot(file) && !file.netkey) { if (!(rootNames = fm.storage('rootNames'))) { rootNames = {}; } if (name === '') { if (rootNames[file.hash]) { file.name = file._name; file.i18 = file._i18; delete rootNames[file.hash]; delete file._name; delete file._i18; } else { dfrd && dfrd.reject(); fm.unlockfiles({files : sel}).trigger('selectfiles', {files : sel}); return; } } else { if (typeof file._name === 'undefined') { file._name = file.name; file._i18 = file.i18; } file.name = rootNames[file.hash] = name; delete file.i18; } fm.storage('rootNames', rootNames); data = { changed: [file] }; fm.updateCache(data); fm.change(data); dfrd && dfrd.resolve(data); fm.unlockfiles({files : sel}).trigger('selectfiles', {files : sel}); return; } data = { cmd : 'rename', name : name, target : file.hash }; if (cnt > 1) { data['targets'] = targtes; if (name.match(/\*/)) { data['q'] = name; } } fm.request({ data : data, notify : {type : 'rename', cnt : cnt}, navigate : {} }) .fail(function(error) { var err = fm.parseError(error); dfrd && dfrd.reject(); if (! err || ! Array.isArray(err) || err[0] !== 'errRename') { fm.sync(); } }) .done(function(data) { var cwdHash; if (data.added && data.added.length && cnt === 1) { data.undo = { cmd : 'rename', callback : function() { return fm.request({ data : {cmd : 'rename', target : data.added[0].hash, name : file.name}, notify : {type : 'undo', cnt : 1} }); } }; data.redo = { cmd : 'rename', callback : function() { return fm.request({ data : {cmd : 'rename', target : file.hash, name : name}, notify : {type : 'rename', cnt : 1} }); } }; } dfrd && dfrd.resolve(data); if (!(cwdHash = fm.cwd().hash) || cwdHash === file.hash) { fm.exec('open', $.map(data.added, function(f) { return (f.mime === 'directory')? f.hash : null; })[0]); } }) .always(function() { fm.unlockfiles({files : sel}).trigger('selectfiles', {files : sel}); } ); }, getHint = function(name, target) { var sel = target || fm.selected(), splits = fm.splitFileExtention(name), f1 = fm.file(sel[0]), f2 = fm.file(sel[1]), ext, hint, add; ext = splits[1]? ('.' + splits[1]) : ''; if (splits[1] && splits[0] === '*') { // change extention hint = '"' + fm.splitFileExtention(f1.name)[0] + ext + '", '; hint += '"' + fm.splitFileExtention(f2.name)[0] + ext + '"'; } else if (splits[0].length > 1) { if (splits[0].substr(-1) === '*') { // add prefix add = splits[0].substr(0, splits[0].length - 1); hint = '"' + add + f1.name+'", '; hint += '"' + add + f2.name+'"'; } else if (splits[0].substr(0, 1) === '*') { // add suffix add = splits[0].substr(1); hint = '"'+fm.splitFileExtention(f1.name)[0] + add + ext + '", '; hint += '"'+fm.splitFileExtention(f2.name)[0] + add + ext + '"'; } } if (!hint) { hint = '"'+splits[0] + '1' + ext + '", "' + splits[0] + '2' + ext + '"'; } if (sel.length > 2) { hint += ' ...'; } return hint; }, batchRename = function() { var sel = fm.selected(), tplr = '', mkChk = function(node, label) { return $('').prepend(node); }, name = $(''), num = $(tplr), prefix = $(tplr), suffix = $(tplr), extention = $(tplr), checks = $('
              ').append( mkChk(num, 'plusNumber'), mkChk(prefix, 'asPrefix'), mkChk(suffix, 'asSuffix'), mkChk(extention, 'changeExtention') ), preview = $('
              '), node = $('
              ').append( $('
              ').append(name), $('
              ').append(checks), preview ), opts = { title : fm.i18n('batchRename'), modal : true, destroyOnClose : true, width: Math.min(380, fm.getUI().width() - 20), buttons : {}, open : function() { name.on('input', mkPrev).trigger('focus'); } }, getName = function() { var vName = name.val(), ext = fm.splitFileExtention(fm.file(sel[0]).name)[1]; if (vName !== '' || num.is(':checked')) { if (prefix.is(':checked')) { vName += '*'; } else if (suffix.is(':checked')) { vName = '*' + vName + '.' + ext; } else if (extention.is(':checked')) { vName = '*.' + vName; } else if (ext) { vName += '.' + ext; } } return vName; }, mkPrev = function() { var vName = getName(); if (vName !== '') { preview.html(fm.i18n(['renameMultiple', sel.length, getHint(vName)])); } else { preview.empty(); } }, radios = checks.find('input:radio').on('change', mkPrev), dialog; opts.buttons[fm.i18n('btnApply')] = function() { var vName = getName(), file, targets; if (vName !== '') { dialog.elfinderdialog('close'); targets = sel; file = fm.file(targets.shift()); request(void(0), targets, file, vName); } }; opts.buttons[fm.i18n('btnCancel')] = function() { dialog.elfinderdialog('close'); }; if ($.fn.checkboxradio) { radios.checkboxradio({ create: function(e, ui) { if (this === num.get(0)) { num.prop('checked', true).change(); } } }); } else { checks.buttonset({ create: function(e, ui) { num.prop('checked', true).change(); } }); } dialog = self.fmDialog(node, opts); }; this.noChangeDirOnRemovedCwd = true; this.shortcuts = [{ pattern : 'f2' + (fm.OS == 'mac' ? ' enter' : '') }, { pattern : 'shift+f2', description : 'batchRename', callback : function() { fm.selected().length > 1 && batchRename(); } }]; this.getstate = function(select) { var sel = this.files(select), cnt = sel.length, phash, ext, mime, brk, state, isRoot; if (!cnt) { return -1; } if (cnt > 1 && sel[0].phash) { phash = sel[0].phash; ext = fm.splitFileExtention(sel[0].name)[1].toLowerCase(); mime = sel[0].mime; } if (cnt === 1) { isRoot = fm.isRoot(sel[0]); } state = (cnt === 1 && ((fm.cookieEnabled && isRoot) || !sel[0].locked) || (fm.api > 2.1030 && cnt === $.grep(sel, function(f) { if (!brk && !f.locked && f.phash === phash && !fm.isRoot(f) && (mime === f.mime || ext === fm.splitFileExtention(f.name)[1].toLowerCase())) { return true; } else { brk && (brk = true); return false; } }).length)) ? 0 : -1; // because alwaysEnabled = true, it need check disabled on connector if (!isRoot && state === 0 && fm.option('disabledFlip', sel[0].hash)['rename']) { state = -1; } if (state !== -1 && cnt > 1) { self.extra = { icon: 'preference', node: $('') .attr({title: fm.i18n('batchRename')}) .on('click touchstart', function(e){ if (e.type === 'touchstart' && e.originalEvent.touches.length > 1) { return; } e.stopPropagation(); e.preventDefault(); fm.getUI().trigger('click'); // to close the context menu immediately batchRename(); }) }; } else { delete self.extra; } return state; }; this.exec = function(hashes, cOpts) { var cwd = fm.getUI('cwd'), sel = hashes || (fm.selected().length? fm.selected() : false) || [fm.cwd().hash], cnt = sel.length, file = fm.file(sel.shift()), filename = '.elfinder-cwd-filename', opts = cOpts || {}, incwd = (fm.cwd().hash == file.hash), type = (opts._currentType === 'navbar' || opts._currentType === 'files')? opts._currentType : (incwd? 'navbar' : 'files'), navbar = (type !== 'files'), target = fm[navbar? 'navHash2Elm' : 'cwdHash2Elm'](file.hash), tarea = (!navbar && fm.storage('view') != 'list'), split = function(name) { var ext = fm.splitFileExtention(name)[1]; return [name.substr(0, name.length - ext.length - 1), ext]; }, unselect = function() { requestAnimationFrame(function() { input && input.trigger('blur'); }); }, rest = function(){ if (!overlay.is(':hidden')) { overlay.elfinderoverlay('hide').off('click close', cancel); } pnode.removeClass('ui-front') .css('position', '') .off('unselect.'+fm.namespace, unselect); if (tarea) { node && node.css('max-height', ''); } else if (!navbar) { pnode.css('width', '') .parent('td').css('overflow', ''); } }, colwidth, dfrd = $.Deferred() .fail(function(error) { var parent = input.parent(), name = fm.escape(file.i18 || file.name); input.off(); if (tarea) { name = name.replace(/([_.])/g, '​$1'); } requestAnimationFrame(function() { if (navbar) { input.replaceWith(name); } else { if (parent.length) { input.remove(); parent.html(name); } else { target.find(filename).html(name); } } }); error && fm.error(error); }) .always(function() { rest(); fm.unbind('resize', resize); fm.enable(); }), blur = function(e) { var name = $.trim(input.val()), splits = fm.splitFileExtention(name), valid = true, req = function() { input.off(); rest(); if (navbar) { input.replaceWith(fm.escape(name)); } else { node.html(fm.escape(name)); } request(dfrd, sel, file, name); }; if (!overlay.is(':hidden')) { pnode.css('z-index', ''); } if (name === '') { if (!fm.isRoot(file)) { return cancel(); } if (navbar) { input.replaceWith(fm.escape(file.name)); } else { node.html(fm.escape(file.name)); } } if (!inError && pnode.length) { input.off('blur'); if (cnt === 1 && name === file.name) { return dfrd.reject(); } if (fm.options.validName && fm.options.validName.test) { try { valid = fm.options.validName.test(name); } catch(e) { valid = false; } } if (name === '.' || name === '..' || !valid) { inError = true; fm.error(file.mime === 'directory'? 'errInvDirname' : 'errInvName', {modal: true, close: function(){setTimeout(select, 120);}}); return false; } if (cnt === 1 && fm.fileByName(name, file.phash)) { inError = true; fm.error(['errExists', name], {modal: true, close: function(){setTimeout(select, 120);}}); return false; } if (cnt === 1) { req(); } else { fm.confirm({ title : 'cmdrename', text : ['renameMultiple', cnt, getHint(name, [file.hash].concat(sel))], accept : { label : 'btnYes', callback : req }, cancel : { label : 'btnCancel', callback : function() { setTimeout(function() { inError = true; select(); }, 120); } } }); setTimeout(function() { fm.trigger('unselectfiles', {files: fm.selected()}) .trigger('selectfiles', {files : [file.hash].concat(sel)}); }, 120); } } }, input = $(tarea? '' : '') .on('keyup text', function(){ if (tarea) { this.style.height = '1px'; this.style.height = this.scrollHeight + 'px'; } else if (colwidth) { this.style.width = colwidth + 'px'; if (this.scrollWidth > colwidth) { this.style.width = this.scrollWidth + 10 + 'px'; } } }) .on('keydown', function(e) { e.stopImmediatePropagation(); if (e.keyCode == $.ui.keyCode.ESCAPE) { dfrd.reject(); } else if (e.keyCode == $.ui.keyCode.ENTER) { e.preventDefault(); input.trigger('blur'); } }) .on('mousedown click dblclick', function(e) { e.stopPropagation(); if (e.type === 'dblclick') { e.preventDefault(); } }) .on('blur', blur) .on('dragenter dragleave dragover drop', function(e) { // stop bubbling to prevent upload with native drop event e.stopPropagation(); }), select = function() { var name = fm.splitFileExtention(input.val())[0]; if (!inError && fm.UA.Mobile && !fm.UA.iOS) { // since iOS has a bug? (z-index not effect) so disable it overlay.on('click close', cancel).elfinderoverlay('show'); pnode.css('z-index', overlay.css('z-index') + 1); } ! fm.enabled() && fm.enable(); if (inError) { inError = false; input.on('blur', blur); } input.trigger('focus').trigger('select'); input[0].setSelectionRange && input[0].setSelectionRange(0, name.length); }, node = navbar? target.contents().filter(function(){ return this.nodeType==3 && $(this).parent().attr('id') === fm.navHash2Id(file.hash); }) : target.find(filename), pnode = node.parent(), overlay = fm.getUI('overlay'), cancel = function(e) { if (!overlay.is(':hidden')) { pnode.css('z-index', ''); } if (! inError) { dfrd.reject(); if (e) { e.stopPropagation(); e.preventDefault(); } } }, resize = function() { target.trigger('scrolltoview', {blink : false}); }, inError = false; pnode.addClass('ui-front') .css('position', 'relative') .on('unselect.'+fm.namespace, unselect); fm.bind('resize', resize); if (navbar) { node.replaceWith(input.val(file.name)); } else { if (tarea) { node.css('max-height', 'none'); } else if (!navbar) { colwidth = pnode.width(); pnode.width(colwidth - 15) .parent('td').css('overflow', 'visible'); } node.empty().append(input.val(file.name)); } if (cnt > 1 && fm.api <= 2.1030) { return dfrd.reject(); } if (!file || !node.length) { return dfrd.reject('errCmdParams', this.title); } if (file.locked && !fm.isRoot(file)) { return dfrd.reject(['errLocked', file.name]); } fm.one('select', function() { input.parent().length && file && $.inArray(file.hash, fm.selected()) === -1 && input.trigger('blur'); }); input.trigger('keyup'); select(); return dfrd; }; fm.bind('select contextmenucreate closecontextmenu', function(e) { var sel = (e.data? (e.data.selected || e.data.targets) : null) || fm.selected(), file; if (sel && sel.length === 1 && (file = fm.file(sel[0])) && fm.isRoot(file)) { self.title = fm.i18n('kindAlias') + ' (' + fm.i18n('preference') + ')'; } else { self.title = fm.i18n('cmdrename'); } if (e.type !== 'closecontextmenu') { self.update(void(0), self.title); } else { requestAnimationFrame(function() { self.update(void(0), self.title); }); } }).remove(function(e) { var rootNames; if (e.data && e.data.removed && (rootNames = fm.storage('rootNames'))) { $.each(e.data.removed, function(i, h) { if (rootNames[h]) { delete rootNames[h]; } }); fm.storage('rootNames', rootNames); } }); }; plugins/file-manager-advanced/application/library/js/commands/resize.js000064400000147017147176754550022401 0ustar00/** * @class elFinder command "resize" * Open dialog to resize image * * @author Dmitry (dio) Levashov * @author Alexey Sukhotin * @author Naoki Sawada * @author Sergio Jovani **/ elFinder.prototype.commands.resize = function() { "use strict"; var fm = this.fm, losslessRotate = 0, getBounceBox = function(w, h, theta) { var srcPts = [ {x: w/2, y: h/2}, {x: -w/2, y: h/2}, {x: -w/2, y: -h/2}, {x: w/2, y: -h/2} ], dstPts = [], min = {x: Number.MAX_VALUE, y: Number.MAX_VALUE}, max = {x: Number.MIN_VALUE, y: Number.MIN_VALUE}; $.each(srcPts, function(i, srcPt){ dstPts.push({ x: srcPt.x * Math.cos(theta) - srcPt.y * Math.sin(theta), y: srcPt.x * Math.sin(theta) + srcPt.y * Math.cos(theta) }); }); $.each(dstPts, function(i, pt) { min.x = Math.min(min.x, pt.x); min.y = Math.min(min.y, pt.y); max.x = Math.max(max.x, pt.x); max.y = Math.max(max.y, pt.y); }); return { width: max.x - min.x, height: max.y - min.y }; }; this.updateOnSelect = false; this.getstate = function() { var sel = fm.selectedFiles(); return sel.length == 1 && sel[0].read && sel[0].write && sel[0].mime.indexOf('image/') !== -1 ? 0 : -1; }; this.resizeRequest = function(data, f, dfrd) { var file = f || fm.file(data.target), tmb = file? file.tmb : null, enabled = fm.isCommandEnabled('resize', data.target); if (enabled && (! file || (file && file.read && file.write && file.mime.indexOf('image/') !== -1 ))) { return fm.request({ data : Object.assign(data, { cmd : 'resize' }), notify : {type : 'resize', cnt : 1} }) .fail(function(error) { if (dfrd) { dfrd.reject(error); } }) .done(function() { if (data.quality) { fm.storage('jpgQuality', data.quality === fm.option('jpgQuality')? null : data.quality); } dfrd && dfrd.resolve(); }); } else { var error; if (file) { if (file.mime.indexOf('image/') === -1) { error = ['errResize', file.name, 'errUsupportType']; } else { error = ['errResize', file.name, 'errPerm']; } } else { error = ['errResize', data.target, 'errPerm']; } if (dfrd) { dfrd.reject(error); } else { fm.error(error); } return $.Deferred().reject(error); } }; this.exec = function(hashes) { var self = this, files = this.files(hashes), dfrd = $.Deferred(), api2 = (fm.api > 1), options = this.options, dialogWidth = 650, fmnode = fm.getUI(), ctrgrup = $().controlgroup? 'controlgroup' : 'buttonset', grid8Def = typeof options.grid8px === 'undefined' || options.grid8px !== 'disable'? true : false, presetSize = Array.isArray(options.presetSize)? options.presetSize : [], clactive = 'elfinder-dialog-active', clsediting = fm.res('class', 'editing'), open = function(file, id, src) { var isJpeg = (file.mime === 'image/jpeg'), dialog = $('
              '), input = '', row = '
              ', label = '
              ', changeTm = null, operate = false, opStart = function() { operate = true; }, opStop = function() { if (operate) { operate = false; control.trigger('change'); } }, control = $('
              ') .on('focus', 'input[type=text],input[type=number]', function() { $(this).trigger('select'); }) .on('change', function() { changeTm && cancelAnimationFrame(changeTm); changeTm = requestAnimationFrame(function() { var panel, quty, canvas, ctx, img, sx, sy, sw, sh, deg, theta, bb; if (sizeImg && ! operate && (canvas = sizeImg.data('canvas'))) { panel = control.children('div.elfinder-resize-control-panel:visible'); quty = panel.find('input.elfinder-resize-quality'); if (quty.is(':visible')) { ctx = sizeImg.data('ctx'); img = sizeImg.get(0); if (panel.hasClass('elfinder-resize-uiresize')) { // resize sw = canvas.width = width.val(); sh = canvas.height = height.val(); ctx.drawImage(img, 0, 0, sw, sh); } else if (panel.hasClass('elfinder-resize-uicrop')) { // crop sx = pointX.val(); sy = pointY.val(); sw = offsetX.val(); sh = offsetY.val(); canvas.width = sw; canvas.height = sh; ctx.drawImage(img, sx, sy, sw, sh, 0, 0, sw, sh); } else { // rotate deg = degree.val(); theta = (degree.val() * Math.PI) / 180; bb = getBounceBox(owidth, oheight, theta); sw = canvas.width = bb.width; sh = canvas.height = bb.height; ctx.save(); if (deg % 90 !== 0) { ctx.fillStyle = bg.val() || '#FFF'; ctx.fillRect(0, 0, sw, sh); } ctx.translate(sw / 2, sh / 2); ctx.rotate(theta); ctx.drawImage(img, -img.width/2, -img.height/2, owidth, oheight); ctx.restore(); } canvas.toBlob(function(blob) { if (blob) { size1 = blob.size; quty.next('span').text(' (' + fm.formatSize(blob.size) + ')'); } }, 'image/jpeg', Math.max(Math.min(quty.val(), 100), 1) / 100); } } }); }) .on('mouseup', 'input', function(e) { $(e.target).trigger('change'); }), preview = $('
              ') .on('touchmove', function(e) { if ($(e.target).hasClass('touch-punch')) { e.stopPropagation(); e.preventDefault(); } }), spinner = $('
              '+fm.i18n('ntfloadimg')+'
              '), rhandle = $('
              '), rhandlec = $('
              '), uiresize = $('
              '), uicrop = $('
              '), uirotate = $('
              '), uideg270 = $('').attr('title',fm.i18n('rotate-cw')).append($('')), uideg90 = $('').attr('title',fm.i18n('rotate-ccw')).append($('')), uiprop = $(''), reset = $('') .on('mouseenter mouseleave', function(e) { $(this).toggleClass('ui-state-hover', e.type == 'mouseenter'); }).on('click', function() { fm.exec('open', check).done(function() { fm.one('opendone', function() { fm.trigger('selectfiles', {files : $.map(data.added, function(f) {return f.hash;})}); }); }); }) ); } else { fm.trigger('selectfiles', {files : $.map(data.added, function(f) {return f.hash;})}); } fm.toast({msg: fm.i18n(['complete', fm.i18n('cmdupload')]), extNode: node}); } } }) .progress(function() { dfrd.notifyWith(this, Array.from(arguments)); }); }, upload = function(data) { dialog.elfinderdialog('close'); if (targets) { data.target = targets[0]; } fmUpload(data); }, getSelector = function() { var hash = targetDir.hash, dirs = $.map(fm.files(hash), function(f) { return (f.mime === 'directory' && f.write)? f : null; }); if (! dirs.length) { return $(); } return $('
              ') .on('click', function(e) { e.stopPropagation(); e.preventDefault(); dirs = fm.sortFiles(dirs); var $this = $(this), cwd = fm.cwd(), base = dialog.closest('div.ui-dialog'), getRaw = function(f, icon) { return { label : fm.escape(f.i18 || f.name), icon : icon, remain : false, callback : function() { var title = base.children('.ui-dialog-titlebar:first').find('span.elfinder-upload-target'); targets = [ f.hash ]; title.html(' - ' + fm.escape(f.i18 || f.name)); $this.trigger('focus'); }, options : { className : (targets && targets.length && f.hash === targets[0])? 'ui-state-active' : '', iconClass : f.csscls || '', iconImg : f.icon || '' } }; }, raw = [ getRaw(targetDir, 'opendir'), '|' ]; $.each(dirs, function(i, f) { raw.push(getRaw(f, 'dir')); }); $this.trigger('blur'); fm.trigger('contextmenu', { raw: raw, x: e.pageX || $(this).offset().left, y: e.pageY || $(this).offset().top, prevNode: base, fitHeight: true }); }).append(''); }, inputButton = function(type, caption) { var button, input = $('') .on('click', function() { // for IE's bug if (fm.UA.IE) { setTimeout(function() { form.css('display', 'none').css('position', 'relative'); requestAnimationFrame(function() { form.css('display', '').css('position', ''); }); }, 100); } }) .on('change', function() { upload({input : input.get(0), type : 'files'}); }) .on('dragover', function(e) { e.originalEvent.dataTransfer.dropEffect = 'copy'; }), form = $('
              ').append(input).on('click', function(e) { e.stopPropagation(); }); return $('
              '+fm.i18n(caption)+'
              ') .append(form) .on('click', function(e) { e.stopPropagation(); e.preventDefault(); input.trigger('click'); }) .on('mouseenter mouseleave', function(e) { $(this).toggleClass(hover, e.type === 'mouseenter'); }); }, dfrd = $.Deferred(), dialog, dropbox, pastebox, dropUpload, paste, dirs, spinner, uidialog; dropUpload = function(e) { e.stopPropagation(); e.preventDefault(); var file = false, type = '', elfFrom = null, mycwd = '', data = null, target = e._target || null, trf = e.dataTransfer || null, kind = '', idx, errors; if (trf) { if (trf.types && trf.types.length) { if ((idx = $.inArray('application/x-moz-file', trf.types)) !== -1) { kind = 'file'; } else if ((idx = $.inArray('Files', trf.types)) !== -1) { kind = 'file'; } } else if (trf.items && trf.items.length && trf.items[0].kind) { kind = trf.items[0].kind; } try { elfFrom = trf.getData('elfinderfrom'); if (elfFrom) { mycwd = window.location.href + fm.cwd().hash; if ((!target && elfFrom === mycwd) || target === mycwd) { dfrd.reject(); return; } } } catch(e) {} if (kind === 'file' && (trf.items[idx].getAsEntry || trf.items[idx].webkitGetAsEntry || trf.items[idx].getAsFile)) { file = trf; type = 'data'; } else if (kind !== 'string' && trf.files && trf.files.length && $.inArray('Text', trf.types) === -1) { file = trf.files; type = 'files'; } else { try { if ((data = trf.getData('text/html')) && data.match(/<(?:img|a)/i)) { file = [ data ]; type = 'html'; } } catch(e) {} if (! file) { if (data = trf.getData('text')) { file = [ data ]; type = 'text'; } else if (trf && trf.files) { // maybe folder uploading but this UA dose not support it kind = 'file'; } } } } if (file) { fmUpload({files : file, type : type, target : target, dropEvt : e}); } else { errors = ['errUploadNoFiles']; if (kind === 'file') { errors.push('errFolderUpload'); } fm.error(errors); dfrd.reject(); } }; if (!targets && data) { if (data.input || data.files) { data.type = 'files'; fmUpload(data); } else if (data.dropEvt) { dropUpload(data.dropEvt); } return dfrd; } paste = function(ev) { var e = ev.originalEvent || ev; var files = [], items = []; var file; if (e.clipboardData) { if (e.clipboardData.items && e.clipboardData.items.length){ items = e.clipboardData.items; for (var i=0; i < items.length; i++) { if (e.clipboardData.items[i].kind == 'file') { file = e.clipboardData.items[i].getAsFile(); files.push(file); } } } else if (e.clipboardData.files && e.clipboardData.files.length) { files = e.clipboardData.files; } if (files.length) { upload({files : files, type : 'files', clipdata : true}); return; } } var my = e.target || e.srcElement; requestAnimationFrame(function() { var type = 'text', src; if (my.innerHTML) { $(my).find('img').each(function(i, v){ if (v.src.match(/^webkit-fake-url:\/\//)) { // For Safari's bug. // ref. https://bugs.webkit.org/show_bug.cgi?id=49141 // https://dev.ckeditor.com/ticket/13029 $(v).remove(); } }); if ($(my).find('a,img').length) { type = 'html'; } src = my.innerHTML; my.innerHTML = ''; upload({files : [ src ], type : type}); } }); }; dialog = $('
              ') .append(inputButton('multiple', 'selectForUpload')); if (! fm.UA.Mobile && (function(input) { return (typeof input.webkitdirectory !== 'undefined' || typeof input.directory !== 'undefined');})(document.createElement('input'))) { dialog.append(inputButton('multiple webkitdirectory directory', 'selectFolder')); } if (targetDir.dirs) { if (targetDir.hash === cwdHash || fm.navHash2Elm(targetDir.hash).hasClass('elfinder-subtree-loaded')) { getSelector().appendTo(dialog); } else { spinner = $('
              ') .append('') .appendTo(dialog); fm.request({cmd : 'tree', target : targetDir.hash}) .done(function() { fm.one('treedone', function() { spinner.replaceWith(getSelector()); uidialog.elfinderdialog('tabstopsInit'); }); }) .fail(function() { spinner.remove(); }); } } if (fm.dragUpload) { dropbox = $('
              ') .on('paste', function(e){ paste(e); }) .on('mousedown click', function(){ $(this).trigger('focus'); }) .on('focus', function(){ this.innerHTML = ''; }) .on('mouseover', function(){ $(this).addClass(hover); }) .on('mouseout', function(){ $(this).removeClass(hover); }) .on('dragenter', function(e) { e.stopPropagation(); e.preventDefault(); $(this).addClass(hover); }) .on('dragleave', function(e) { e.stopPropagation(); e.preventDefault(); $(this).removeClass(hover); }) .on('dragover', function(e) { e.stopPropagation(); e.preventDefault(); e.originalEvent.dataTransfer.dropEffect = 'copy'; $(this).addClass(hover); }) .on('drop', function(e) { dialog.elfinderdialog('close'); targets && (e.originalEvent._target = targets[0]); dropUpload(e.originalEvent); }) .prependTo(dialog) .after('
              '+fm.i18n('or')+'
              ')[0]; } else { pastebox = $('
              '+fm.i18n('dropFilesBrowser')+'
              ') .on('paste drop', function(e){ paste(e); }) .on('mousedown click', function(){ $(this).trigger('focus'); }) .on('focus', function(){ this.innerHTML = ''; }) .on('dragenter mouseover', function(){ $(this).addClass(hover); }) .on('dragleave mouseout', function(){ $(this).removeClass(hover); }) .prependTo(dialog) .after('
              '+fm.i18n('or')+'
              ')[0]; } uidialog = this.fmDialog(dialog, { title : this.title + '' + (targetDir? ' - ' + fm.escape(targetDir.i18 || targetDir.name) : '') + '', modal : true, resizable : false, destroyOnClose : true, propagationEvents : ['mousemove', 'mouseup', 'click'], close : function() { var cm = fm.getUI('contextmenu'); if (cm.is(':visible')) { cm.click(); } } }); return dfrd; }; }; plugins/file-manager-advanced/application/library/js/commands/view.js000064400000005440147176754550022043 0ustar00/** * @class elFinder command "view" * Change current directory view (icons/list) * * @author Dmitry (dio) Levashov **/ elFinder.prototype.commands.view = function() { "use strict"; var self = this, fm = this.fm, subMenuRaw; this.value = fm.viewType; this.alwaysEnabled = true; this.updateOnSelect = false; this.options = { ui : 'viewbutton'}; this.getstate = function() { return 0; }; this.extra = { icon: 'menu', node: $('') .attr({title: fm.i18n('viewtype')}) .on('click touchstart', function(e){ if (e.type === 'touchstart' && e.originalEvent.touches.length > 1) { return; } var node = $(this); e.stopPropagation(); e.preventDefault(); fm.trigger('contextmenu', { raw: getSubMenuRaw(), x: node.offset().left, y: node.offset().top }); }) }; this.exec = function() { var self = this, value = this.value == 'list' ? 'icons' : 'list'; fm.storage('view', value); return fm.lazy(function() { fm.viewchange(); self.update(void(0), value); this.resolve(); }); }; fm.bind('init', function() { subMenuRaw = (function() { var cwd = fm.getUI('cwd'), raws = [], sizeNames = fm.options.uiOptions.cwd.iconsView.sizeNames, max = fm.options.uiOptions.cwd.iconsView.sizeMax, i, size; for (i = 0; i <= max; i++) { raws.push( { label : fm.i18n(sizeNames[i] || ('Size-' + i + ' icons')), icon : 'view', callback : (function(s) { return function() { cwd.trigger('iconpref', {size: s}); fm.storage('iconsize', s); if (self.value === 'list') { self.exec(); } }; })(i) } ); } raws.push('|'); raws.push( { label : fm.i18n('viewlist'), icon : 'view-list', callback : function() { if (self.value !== 'list') { self.exec(); } } } ); return raws; })(); }).bind('contextmenucreate', function() { self.extra = { icon: 'menu', node: $('') .attr({title: fm.i18n('cmdview')}) .on('click touchstart', function(e){ if (e.type === 'touchstart' && e.originalEvent.touches.length > 1) { return; } var node = $(this), raw = subMenuRaw.concat(), idx, i; if (self.value === 'list') { idx = subMenuRaw.length - 1; } else { idx = parseInt(fm.storage('iconsize') || 0); } for (i = 0; i < subMenuRaw.length; i++) { if (subMenuRaw[i] !== '|') { subMenuRaw[i].options = (i === idx? {'className': 'ui-state-active'} : void(0)) ; } } e.stopPropagation(); e.preventDefault(); fm.trigger('contextmenu', { raw: subMenuRaw, x: node.offset().left, y: node.offset().top }); }) }; }); }; plugins/file-manager-advanced/application/library/js/extras/editors.default.js000064400000242351147176754550023676 0ustar00(function(editors, elFinder) { if (typeof define === 'function' && define.amd) { define(['elfinder'], editors); } else if (elFinder) { var optEditors = elFinder.prototype._options.commandsOptions.edit.editors; elFinder.prototype._options.commandsOptions.edit.editors = optEditors.concat(editors(elFinder)); } }(function(elFinder) { "use strict"; var apps = {}, // get query of getfile getfile = window.location.search.match(/getfile=([a-z]+)/), useRequire = elFinder.prototype.hasRequire, ext2mime = { bmp: 'image/x-ms-bmp', dng: 'image/x-adobe-dng', gif: 'image/gif', jpeg: 'image/jpeg', jpg: 'image/jpeg', pdf: 'application/pdf', png: 'image/png', ppm: 'image/x-portable-pixmap', psd: 'image/vnd.adobe.photoshop', pxd: 'image/x-pixlr-data', svg: 'image/svg+xml', tiff: 'image/tiff', webp: 'image/webp', xcf: 'image/x-xcf', sketch: 'application/x-sketch', ico: 'image/x-icon', dds: 'image/vnd-ms.dds', emf: 'application/x-msmetafile' }, mime2ext, getExtention = function(mime, fm, jpeg) { if (!mime2ext) { mime2ext = fm.arrayFlip(ext2mime); } var ext = mime2ext[mime] || fm.mimeTypes[mime]; if (!jpeg) { if (ext === 'jpeg') { ext = 'jpg'; } } else { if (ext === 'jpg') { ext = 'jpeg'; } } return ext; }, changeImageType = function(src, toMime) { var dfd = $.Deferred(); try { var canvas = document.createElement('canvas'), ctx = canvas.getContext('2d'), img = new Image(), conv = function() { var url = canvas.toDataURL(toMime), mime, m; if (m = url.match(/^data:([a-z0-9]+\/[a-z0-9.+-]+)/i)) { mime = m[1]; } else { mime = ''; } if (mime.toLowerCase() === toMime.toLowerCase()) { dfd.resolve(canvas.toDataURL(toMime), canvas); } else { dfd.reject(); } }; img.src = src; $(img).on('load', function() { try { canvas.width = img.width; canvas.height = img.height; ctx.drawImage(img, 0, 0); conv(); } catch(e) { dfd.reject(); } }).on('error', function () { dfd.reject(); }); return dfd; } catch(e) { return dfd.reject(); } }, initImgTag = function(id, file, content, fm) { var node = $(this).children('img:first').data('ext', getExtention(file.mime, fm)), spnr = $('
              ') .html('' + fm.i18n('ntfloadimg') + '') .hide() .appendTo(this), setup = function() { node.attr('id', id+'-img') .attr('src', url || content) .css({'height':'', 'max-width':'100%', 'max-height':'100%', 'cursor':'pointer'}) .data('loading', function(done) { var btns = node.closest('.elfinder-dialog').find('button,.elfinder-titlebar-button'); btns.prop('disabled', !done)[done? 'removeClass' : 'addClass']('ui-state-disabled'); node.css('opacity', done? '' : '0.3'); spnr[done? 'hide' : 'show'](); return node; }); }, url; if (!content.match(/^data:/)) { fm.openUrl(file.hash, false, function(v) { url = v; node.attr('_src', content); setup(); }); } else { setup(); } }, imgBase64 = function(node, mime) { var style = node.attr('style'), img, canvas, ctx, data; try { // reset css for getting image size node.attr('style', ''); // img node img = node.get(0); // New Canvas canvas = document.createElement('canvas'); canvas.width = img.width; canvas.height = img.height; // restore css node.attr('style', style); // Draw Image canvas.getContext('2d').drawImage(img, 0, 0); // To Base64 data = canvas.toDataURL(mime); } catch(e) { data = node.attr('src'); } return data; }, iframeClose = function(ifm) { var $ifm = $(ifm), dfd = $.Deferred().always(function() { $ifm.off('load', load); }), ab = 'about:blank', chk = function() { tm = setTimeout(function() { var src; try { src = base.contentWindow.location.href; } catch(e) { src = null; } if (src === ab) { dfd.resolve(); } else if (--cnt > 0){ chk(); } else { dfd.reject(); } }, 500); }, load = function() { tm && clearTimeout(tm); dfd.resolve(); }, cnt = 20, // 500ms * 20 = 10sec wait tm; $ifm.one('load', load); ifm.src = ab; chk(); return dfd; }; // check getfile callback function if (getfile) { getfile = getfile[1]; if (getfile === 'ckeditor') { elFinder.prototype._options.getFileCallback = function(file, fm) { window.opener.CKEDITOR.tools.callFunction((function() { var reParam = new RegExp('(?:[?&]|&)CKEditorFuncNum=([^&]+)', 'i'), match = window.location.search.match(reParam); return (match && match.length > 1) ? match[1] : ''; })(), fm.convAbsUrl(file.url)); fm.destroy(); window.close(); }; } } // return editors Array return [ { // tui.image-editor - https://github.com/nhnent/tui.image-editor info : { id: 'tuiimgedit', name: 'TUI Image Editor', iconImg: 'img/editor-icons.png 0 -48', dataScheme: true, schemeContent: true, openMaximized: true, canMakeEmpty: false, integrate: { title: 'TOAST UI Image Editor', link: 'http://ui.toast.com/tui-image-editor/' } }, // MIME types to accept mimes : ['image/jpeg', 'image/png', 'image/gif', 'image/svg+xml', 'image/x-ms-bmp'], // HTML of this editor html : '
              ', // called on initialization of elFinder cmd edit (this: this editor's config object) setup : function(opts, fm) { if (fm.UA.ltIE8 || fm.UA.Mobile) { this.disabled = true; } else { this.opts = Object.assign({ version: 'v3.15.3' }, opts.extraOptions.tuiImgEditOpts || {}, { iconsPath : fm.baseUrl + 'img/tui-', theme : {} }); if (!fm.isSameOrigin(this.opts.iconsPath)) { this.disabled = true; fm.debug('warning', 'Setting `commandOptions.edit.extraOptions.tuiImgEditOpts.iconsPath` MUST follow the same origin policy.'); } } }, // Initialization of editing node (this: this editors HTML node) init : function(id, file, content, fm) { this.data('url', content); }, load : function(base) { var self = this, fm = this.fm, dfrd = $.Deferred(), cdns = fm.options.cdns, ver = self.confObj.opts.version, init = function(editor) { var $base = $(base), bParent = $base.parent(), opts = self.confObj.opts, iconsPath = opts.iconsPath, tmpContainer = $('
              ').appendTo(bParent), tmpDiv = [ $('
              ').appendTo(tmpContainer), $('
              ').appendTo(tmpContainer) ], iEditor = new editor(base, { includeUI: { loadImage: { path: $base.data('url'), name: self.file.name }, theme: opts.theme, initMenu: 'filter', menuBarPosition: 'bottom' }, cssMaxWidth: Math.max(300, bParent.width()), cssMaxHeight: Math.max(200, bParent.height() - (tmpDiv[0].height() + tmpDiv[1].height() + 3 /*margin*/)), usageStatistics: false }), canvas = $base.find('canvas:first').get(0), zoom = function(v) { if (typeof v !== 'undefined') { var c = $(canvas), w = parseInt(c.attr('width')), h = parseInt(c.attr('height')), a = w / h, z, mw, mh; if (v === 0) { mw = w; mh = h; } else { mw = parseInt(c.css('max-width')) + Number(v); mh = mw / a; if (mw > w && mh > h) { mw = w; mh = h; } } z = Math.round(mw / w * 100); // Control zoom button of TUI Image Editor if (z < 100) { iEditor.resetZoom(); iEditor.stopDrawingMode(); tuiZoomCtrls.hide(); } else { tuiZoomCtrls.show(); } per.text(z + '%'); iEditor.resizeCanvasDimension({width: mw, height: mh}); // continually change more if (zoomMore) { setTimeout(function() { zoomMore && zoom(v); }, 50); } } }, zup = $('').data('val', 10), zdown = $('').data('val', -10), per = $('').css('width', '4em').text('%').attr('title', '100%').data('val', 0), tuiZoomCtrls, quty, qutyTm, zoomTm, zoomMore; tmpContainer.remove(); $base.removeData('url').data('mime', self.file.mime); // jpeg quality controls if (self.file.mime === 'image/jpeg') { $base.data('quality', fm.storage('jpgQuality') || fm.option('jpgQuality')); quty = $('') .attr('min', '1') .attr('max', '100') .attr('title', '1 - 100') .on('change', function() { var q = quty.val(); $base.data('quality', q); qutyTm && cancelAnimationFrame(qutyTm); qutyTm = requestAnimationFrame(function() { canvas.toBlob(function(blob) { blob && quty.next('span').text(' (' + fm.formatSize(blob.size) + ')'); }, 'image/jpeg', Math.max(Math.min(q, 100), 1) / 100); }); }) .val($base.data('quality')); $('
              ') .append( $('').html(fm.i18n('quality') + ' : '), quty, $('') ) .prependTo($base.parent().next()); } else if (self.file.mime === 'image/svg+xml') { $base.closest('.ui-dialog').trigger('changeType', { extention: 'png', mime : 'image/png', keepEditor: true }); } // zoom scale controls $('
              ') .append( zdown, per, zup ) .attr('title', fm.i18n('scale')) .on('click', 'span,button', function() { zoom($(this).data('val')); }) .on('mousedown mouseup mouseleave', 'span', function(e) { zoomMore = false; zoomTm && clearTimeout(zoomTm); if (e.type === 'mousedown') { zoomTm = setTimeout(function() { zoomMore = true; zoom($(e.target).data('val')); }, 500); } }) .prependTo($base.parent().next()); // wait canvas ready setTimeout(function() { dfrd.resolve(iEditor); if (quty) { quty.trigger('change'); iEditor.on('redoStackChanged undoStackChanged', function() { quty.trigger('change'); }); } // ZOOM controls of TUI Image Editor tuiZoomCtrls = $base.find('.tie-btn-zoomIn,.tie-btn-zoomOut,.tie-btn-hand'); // show initial scale zoom(null); }, 100); // show color slider (maybe TUI-Image-Editor's bug) // see https://github.com/nhn/tui.image-editor/issues/153 $base.find('.tui-colorpicker-palette-container').on('click', '.tui-colorpicker-palette-preview', function() { $(this).closest('.color-picker-control').height('auto').find('.tui-colorpicker-slider-container').toggle(); }); $base.on('click', function() { $base.find('.tui-colorpicker-slider-container').hide(); }); }, loader; if (!self.confObj.editor) { loader = $.Deferred(); fm.loadCss([ cdns.tui + '/tui-color-picker/latest/tui-color-picker.css', cdns.tui + '/tui-image-editor/'+ver+'/tui-image-editor.css' ]); if (fm.hasRequire) { require.config({ paths : { 'fabric/dist/fabric.require' : cdns.fabric + '/fabric.require.min', // for fabric < 2.0.1 'fabric' : cdns.fabric + '/fabric.min', // for fabric >= 2.0.1 'tui-code-snippet' : cdns.tui + '/tui.code-snippet/latest/tui-code-snippet.min', 'tui-color-picker' : cdns.tui + '/tui-color-picker/latest/tui-color-picker.min', 'tui-image-editor' : cdns.tui + '/tui-image-editor/'+ver+'/tui-image-editor.min' } }); require(['tui-image-editor'], function(ImageEditor) { loader.resolve(ImageEditor); }); } else { fm.loadScript([ cdns.fabric + '/fabric.min.js', cdns.tui + '/tui.code-snippet/latest/tui-code-snippet.min.js' ], function() { fm.loadScript([ cdns.tui + '/tui-color-picker/latest/tui-color-picker.min.js' ], function() { fm.loadScript([ cdns.tui + '/tui-image-editor/'+ver+'/tui-image-editor.min.js' ], function() { loader.resolve(window.tui.ImageEditor); }, { loadType: 'tag' }); }, { loadType: 'tag' }); }, { loadType: 'tag' }); } loader.done(function(editor) { self.confObj.editor = editor; init(editor); }); } else { init(self.confObj.editor); } return dfrd; }, getContent : function(base) { var editor = this.editor, fm = editor.fm, $base = $(base), quality = $base.data('quality'); if (editor.instance) { if ($base.data('mime') === 'image/jpeg') { quality = quality || fm.storage('jpgQuality') || fm.option('jpgQuality'); quality = Math.max(0.1, Math.min(1, quality / 100)); } return editor.instance.toDataURL({ format: getExtention($base.data('mime'), fm, true), quality: quality }); } }, save : function(base) { var $base = $(base), quality = $base.data('quality'), hash = $base.data('hash'), file; this.instance.deactivateAll(); if (typeof quality !== 'undefined') { this.fm.storage('jpgQuality', quality); } if (hash) { file = this.fm.file(hash); $base.data('mime', file.mime); } } }, { // Photopea advanced image editor info : { id : 'photopea', name : 'Photopea', iconImg : 'img/editor-icons.png 0 -160', single: true, noContent: true, arrayBufferContent: true, openMaximized: true, // Disable file types that cannot be saved on Photopea. canMakeEmpty: ['image/jpeg', 'image/png', 'image/gif', 'image/svg+xml', 'image/x-ms-bmp', 'image/tiff', /*'image/x-adobe-dng',*/ 'image/webp', /*'image/x-xcf',*/ 'image/vnd.adobe.photoshop', 'application/pdf', 'image/x-portable-pixmap', 'image/x-sketch', 'image/x-icon', 'image/vnd-ms.dds', /*'application/x-msmetafile'*/], integrate: { title: 'Photopea', link: 'https://www.photopea.com/learn/' } }, mimes : ['image/jpeg', 'image/png', 'image/gif', 'image/svg+xml', 'image/x-ms-bmp', 'image/tiff', 'image/x-adobe-dng', 'image/webp', 'image/x-xcf', 'image/vnd.adobe.photoshop', 'application/pdf', 'image/x-portable-pixmap', 'image/x-sketch', 'image/x-icon', 'image/vnd-ms.dds', 'application/x-msmetafile'], html : '', // setup on elFinder bootup setup : function(opts, fm) { if (fm.UA.IE || fm.UA.Mobile) { this.disabled = true; } }, // Initialization of editing node (this: this editors HTML node) init : function(id, file, dum, fm) { var orig = 'https://www.photopea.com', ifm = $(this).hide() //.css('box-sizing', 'border-box') .on('load', function() { //spnr.remove(); ifm.show(); }) .on('error', function() { spnr.remove(); ifm.show(); }), editor = this.editor, confObj = editor.confObj, spnr = $('
              ') .html('' + fm.i18n('nowLoading') + '') .appendTo(ifm.parent()), saveMimes = fm.arrayFlip(confObj.info.canMakeEmpty), getType = function(mime) { var ext = getExtention(mime, fm), extmime = ext2mime[ext]; if (!confObj.mimesFlip[extmime]) { ext = ''; } else if (ext === 'jpeg') { ext = 'jpg'; } if (!ext || !saveMimes[extmime]) { ext = 'psd'; extmime = ext2mime[ext]; ifm.closest('.ui-dialog').trigger('changeType', { extention: ext, mime : extmime, keepEditor: true }); } return ext; }, mime = file.mime, liveMsg, type, quty; if (!confObj.mimesFlip) { confObj.mimesFlip = fm.arrayFlip(confObj.mimes, true); } if (!confObj.liveMsg) { confObj.liveMsg = function(ifm, spnr, file) { var wnd = ifm.get(0).contentWindow, phase = 0, data = null, dfdIni = $.Deferred().done(function() { spnr.remove(); phase = 1; wnd.postMessage(data, orig); }), dfdGet; this.load = function() { return fm.getContents(file.hash, 'arraybuffer').done(function(d) { data = d; }); }; this.receive = function(e) { var ev = e.originalEvent, state; if (ev.origin === orig && ev.source === wnd) { if (ev.data === 'done') { if (phase === 0) { dfdIni.resolve(); } else if (phase === 1) { phase = 2; ifm.trigger('contentsloaded'); } else { if (dfdGet && dfdGet.state() === 'pending') { dfdGet.reject('errDataEmpty'); } } } else if (ev.data === 'Save') { editor.doSave(); } else { if (dfdGet && dfdGet.state() === 'pending') { if (typeof ev.data === 'object') { dfdGet.resolve('data:' + mime + ';base64,' + fm.arrayBufferToBase64(ev.data)); } else { dfdGet.reject('errDataEmpty'); } } } } }; this.getContent = function() { var type, q; if (phase > 1) { dfdGet && dfdGet.state() === 'pending' && dfdGet.reject(); dfdGet = null; dfdGet = $.Deferred(); if (phase === 2) { phase = 3; dfdGet.resolve('data:' + mime + ';base64,' + fm.arrayBufferToBase64(data)); data = null; return dfdGet; } if (ifm.data('mime')) { mime = ifm.data('mime'); type = getType(mime); } if (q = ifm.data('quality')) { type += ':' + (q / 100); } wnd.postMessage('app.activeDocument.saveToOE("' + type + '")', orig); return dfdGet; } }; }; } ifm.parent().css('padding', 0); type = getType(file.mime); liveMsg = editor.liveMsg = new confObj.liveMsg(ifm, spnr, file); $(window).on('message.' + fm.namespace, liveMsg.receive); liveMsg.load().done(function() { var d = JSON.stringify({ files : [], environment : { lang: fm.lang.replace(/_/g, '-'), customIO: {"save": "app.echoToOE(\"Save\");"} } }); ifm.attr('src', orig + '/#' + encodeURI(d)); }).fail(function(err) { err && fm.error(err); editor.initFail = true; }); // jpeg quality controls if (file.mime === 'image/jpeg' || file.mime === 'image/webp') { ifm.data('quality', fm.storage('jpgQuality') || fm.option('jpgQuality')); quty = $('') .attr('min', '1') .attr('max', '100') .attr('title', '1 - 100') .on('change', function() { var q = quty.val(); ifm.data('quality', q); }) .val(ifm.data('quality')); $('
              ') .append( $('').html(fm.i18n('quality') + ' : '), quty, $('') ) .prependTo(ifm.parent().next()); } }, load : function(base) { var dfd = $.Deferred(), self = this, fm = this.fm, $base = $(base); if (self.initFail) { dfd.reject(); } else { $base.on('contentsloaded', function() { dfd.resolve(self.liveMsg); }); } return dfd; }, getContent : function() { return this.editor.liveMsg? this.editor.liveMsg.getContent() : void(0); }, save : function(base, liveMsg) { var $base = $(base), quality = $base.data('quality'), hash = $base.data('hash'), file; if (typeof quality !== 'undefined') { this.fm.storage('jpgQuality', quality); } if (hash) { file = this.fm.file(hash); $base.data('mime', file.mime); } else { $base.removeData('mime'); } }, // On dialog closed close : function(base, liveMsg) { $(base).attr('src', ''); liveMsg && $(window).off('message.' + this.fm.namespace, liveMsg.receive); } }, { // Pixo is cross-platform image editor info : { id : 'pixo', name : 'Pixo Editor', iconImg : 'img/editor-icons.png 0 -208', dataScheme: true, schemeContent: true, single: true, canMakeEmpty: false, integrate: { title: 'Pixo Editor', link: 'https://pixoeditor.com/privacy-policy/' } }, // MIME types to accept mimes : ['image/jpeg', 'image/png', 'image/gif', 'image/svg+xml', 'image/x-ms-bmp'], // HTML of this editor html : '
              ', // called on initialization of elFinder cmd edit (this: this editor's config object) setup : function(opts, fm) { if (fm.UA.ltIE8 || !opts.extraOptions || !opts.extraOptions.pixo || !opts.extraOptions.pixo.apikey) { this.disabled = true; } else { this.editorOpts = opts.extraOptions.pixo; } }, // Initialization of editing node (this: this editors HTML node) init : function(id, file, content, fm) { initImgTag.call(this, id, file, content, fm); }, // Get data uri scheme (this: this editors HTML node) getContent : function() { return $(this).children('img:first').attr('src'); }, // Launch Pixo editor when dialog open load : function(base) { var self = this, fm = this.fm, $base = $(base), node = $base.children('img:first'), dialog = $base.closest('.ui-dialog'), elfNode = fm.getUI(), dfrd = $.Deferred(), container = $('#elfinder-pixo-container'), init = function(onload) { var opts; if (!container.length) { container = $('
              ').css({ position: 'fixed', top: 0, right: 0, width: '100%', height: $(window).height(), overflow: 'hidden' }).hide().appendTo(elfNode.hasClass('elfinder-fullscreen')? elfNode : 'body'); // bind switch fullscreen event elfNode.on('resize.'+fm.namespace, function(e, data) { e.preventDefault(); e.stopPropagation(); data && data.fullscreen && container.appendTo(data.fullscreen === 'on'? elfNode : 'body'); }); fm.bind('destroy', function() { editor && editor.cancelEditing(); container.remove(); }); } else { // always moves to last container.appendTo(container.parent()); } node.on('click', launch); // Constructor options opts = Object.assign({ type: 'child', parent: container.get(0), output: {format: 'png'}, onSave: function(arg) { // Check current file.hash, all callbacks are called on multiple instances var mime = arg.toBlob().type, ext = getExtention(mime, fm), draw = function(url) { node.one('load error', function() { node.data('loading') && node.data('loading')(true); }) .attr('crossorigin', 'anonymous') .attr('src', url); }, url = arg.toDataURL(); node.data('loading')(); delete base._canvas; if (node.data('ext') !== ext) { changeImageType(url, self.file.mime).done(function(res, cv) { if (cv) { base._canvas = canvas = cv; quty.trigger('change'); qBase && qBase.show(); } draw(res); }).fail(function() { dialog.trigger('changeType', { extention: ext, mime : mime }); draw(url); }); } else { draw(url); } }, onClose: function() { dialog.removeClass(fm.res('class', 'preventback')); fm.toggleMaximize(container, false); container.hide(); fm.toFront(dialog); } }, self.confObj.editorOpts); // trigger event 'editEditorPrepare' self.trigger('Prepare', { node: base, editorObj: Pixo, instance: void(0), opts: opts }); // make editor instance editor = new Pixo.Bridge(opts); dfrd.resolve(editor); $base.on('saveAsFail', launch); if (onload) { onload(); } }, launch = function() { dialog.addClass(fm.res('class', 'preventback')); fm.toggleMaximize(container, true); fm.toFront(container); container.show().data('curhash', self.file.hash); editor.edit(node.get(0)); node.data('loading')(true); }, qBase, quty, qutyTm, canvas, editor; node.data('loading')(); // jpeg quality controls if (self.file.mime === 'image/jpeg') { quty = $('') .attr('min', '1') .attr('max', '100') .attr('title', '1 - 100') .on('change', function() { var q = quty.val(); qutyTm && cancelAnimationFrame(qutyTm); qutyTm = requestAnimationFrame(function() { if (canvas) { canvas.toBlob(function(blob) { blob && quty.next('span').text(' (' + fm.formatSize(blob.size) + ')'); }, 'image/jpeg', Math.max(Math.min(q, 100), 1) / 100); } }); }) .val(fm.storage('jpgQuality') || fm.option('jpgQuality')); qBase = $('
              ') .hide() .append( $('').html(fm.i18n('quality') + ' : '), quty, $('') ) .prependTo($base.parent().next()); $base.data('quty', quty); } // load script then init if (typeof Pixo === 'undefined') { fm.loadScript(['https://pixoeditor.com:8443/editor/scripts/bridge.m.js'], function() { init(launch); }, {loadType: 'tag'}); } else { init(); launch(); } return dfrd; }, // Convert content url to data uri scheme to save content save : function(base) { var self = this, $base = $(base), node = $base.children('img:first'), q; if (base._canvas) { if ($base.data('quty')) { q = $base.data('quty').val(); q && this.fm.storage('jpgQuality', q); } node.attr('src', base._canvas.toDataURL(self.file.mime, q? Math.max(Math.min(q, 100), 1) / 100 : void(0))); } else if (node.attr('src').substr(0, 5) !== 'data:') { node.attr('src', imgBase64(node, this.file.mime)); } }, close : function(base, editor) { editor && editor.destroy(); } }, { // ACE Editor // called on initialization of elFinder cmd edit (this: this editor's config object) setup : function(opts, fm) { if (fm.UA.ltIE8 || !fm.options.cdns.ace) { this.disabled = true; } }, // `mimes` is not set for support everything kind of text file info : { id : 'aceeditor', name : 'ACE Editor', iconImg : 'img/editor-icons.png 0 -96' }, load : function(textarea) { var self = this, fm = this.fm, dfrd = $.Deferred(), cdn = fm.options.cdns.ace, start = function() { var editor, editorBase, mode, ta = $(textarea), taBase = ta.parent(), dialog = taBase.parent(), id = textarea.id + '_ace', ext = self.file.name.replace(/^.+\.([^.]+)|(.+)$/, '$1$2').toLowerCase(), // MIME/mode map mimeMode = { 'text/x-php' : 'php', 'application/x-php' : 'php', 'text/html' : 'html', 'application/xhtml+xml' : 'html', 'text/javascript' : 'javascript', 'application/javascript' : 'javascript', 'text/css' : 'css', 'text/x-c' : 'c_cpp', 'text/x-csrc' : 'c_cpp', 'text/x-chdr' : 'c_cpp', 'text/x-c++' : 'c_cpp', 'text/x-c++src' : 'c_cpp', 'text/x-c++hdr' : 'c_cpp', 'text/x-shellscript' : 'sh', 'application/x-csh' : 'sh', 'text/x-python' : 'python', 'text/x-java' : 'java', 'text/x-java-source' : 'java', 'text/x-ruby' : 'ruby', 'text/x-perl' : 'perl', 'application/x-perl' : 'perl', 'text/x-sql' : 'sql', 'text/xml' : 'xml', 'application/docbook+xml' : 'xml', 'application/xml' : 'xml' }; // set base height taBase.height(taBase.height()); // set basePath of ace ace.config.set('basePath', cdn); // Base node of Ace editor editorBase = $('
              ').text(ta.val()).insertBefore(ta.hide()); // Editor flag ta.data('ace', true); // Aceeditor instance editor = ace.edit(id); // Ace editor configure editor.$blockScrolling = Infinity; editor.setOptions({ theme: 'ace/theme/monokai', fontSize: '14px', wrap: true, }); ace.config.loadModule('ace/ext/modelist', function() { // detect mode mode = ace.require('ace/ext/modelist').getModeForPath('/' + self.file.name).name; if (mode === 'text') { if (mimeMode[self.file.mime]) { mode = mimeMode[self.file.mime]; } } // show MIME:mode in title bar taBase.prev().children('.elfinder-dialog-title').append(' (' + self.file.mime + ' : ' + mode.split(/[\/\\]/).pop() + ')'); editor.setOptions({ mode: 'ace/mode/' + mode }); if (dfrd.state() === 'resolved') { dialog.trigger('resize'); } }); ace.config.loadModule('ace/ext/language_tools', function() { ace.require('ace/ext/language_tools'); editor.setOptions({ enableBasicAutocompletion: true, enableSnippets: true, enableLiveAutocompletion: false }); }); ace.config.loadModule('ace/ext/settings_menu', function() { ace.require('ace/ext/settings_menu').init(editor); }); // Short cuts editor.commands.addCommand({ name : "saveFile", bindKey: { win : 'Ctrl-s', mac : 'Command-s' }, exec: function(editor) { self.doSave(); } }); editor.commands.addCommand({ name : "closeEditor", bindKey: { win : 'Ctrl-w|Ctrl-q', mac : 'Command-w|Command-q' }, exec: function(editor) { self.doCancel(); } }); editor.resize(); // TextArea button and Setting button $('
              ').css('float', 'left') .append( $('').html(self.fm.i18n('TextArea')) .button() .on('click', function(){ if (ta.data('ace')) { ta.removeData('ace'); editorBase.hide(); ta.val(editor.session.getValue()).show().trigger('focus'); $(this).text('AceEditor'); } else { ta.data('ace', true); editorBase.show(); editor.setValue(ta.hide().val(), -1); editor.focus(); $(this).html(self.fm.i18n('TextArea')); } }) ) .append( $('') .button({ icons: { primary: 'ui-icon-gear', secondary: 'ui-icon-triangle-1-e' }, text: false }) .on('click', function(){ editor.showSettingsMenu(); $('#ace_settingsmenu') .css('font-size', '80%') .find('div[contains="setOptions"]').hide().end() .parent().appendTo($('#elfinder')); }) ) .prependTo(taBase.next()); // trigger event 'editEditorPrepare' self.trigger('Prepare', { node: textarea, editorObj: ace, instance: editor, opts: {} }); //dialog.trigger('resize'); dfrd.resolve(editor); }; // check ace & start if (!self.confObj.loader) { self.confObj.loader = $.Deferred(); self.fm.loadScript([ cdn+'/ace.js' ], function() { self.confObj.loader.resolve(); }, void 0, {obj: window, name: 'ace'}); } self.confObj.loader.done(start); return dfrd; }, close : function(textarea, instance) { instance && instance.destroy(); }, save : function(textarea, instance) { instance && $(textarea).data('ace') && (textarea.value = instance.session.getValue()); }, focus : function(textarea, instance) { instance && $(textarea).data('ace') && instance.focus(); }, resize : function(textarea, instance, e, data) { instance && instance.resize(); } }, { // CodeMirror // called on initialization of elFinder cmd edit (this: this editor's config object) setup : function(opts, fm) { if (fm.UA.ltIE10 || !fm.options.cdns.codemirror) { this.disabled = true; } }, // `mimes` is not set for support everything kind of text file info : { id : 'codemirror', name : 'CodeMirror', iconImg : 'img/editor-icons.png 0 -176' }, load : function(textarea) { var fm = this.fm, cmUrl = fm.convAbsUrl(fm.options.cdns.codemirror), dfrd = $.Deferred(), self = this, start = function(CodeMirror) { var ta = $(textarea), base = ta.parent(), editor, editorBase, opts; // set base height base.height(base.height()); // CodeMirror configure options opts = { lineNumbers: true, lineWrapping: true, extraKeys : { 'Ctrl-S': function() { self.doSave(); }, 'Ctrl-Q': function() { self.doCancel(); }, 'Ctrl-W': function() { self.doCancel(); } } }; // trigger event 'editEditorPrepare' self.trigger('Prepare', { node: textarea, editorObj: CodeMirror, instance: void(0), opts: opts }); // CodeMirror configure editor = CodeMirror.fromTextArea(textarea, opts); // return editor instance dfrd.resolve(editor); // Auto mode set var info, m, mode, spec; if (! info) { info = CodeMirror.findModeByMIME(self.file.mime); } if (! info && (m = self.file.name.match(/.+\.([^.]+)$/))) { info = CodeMirror.findModeByExtension(m[1]); } if (info) { CodeMirror.modeURL = useRequire? 'codemirror/mode/%N/%N.min' : cmUrl + '/mode/%N/%N.min.js'; mode = info.mode; spec = info.mime; editor.setOption('mode', spec); CodeMirror.autoLoadMode(editor, mode); // show MIME:mode in title bar base.prev().children('.elfinder-dialog-title').append(' (' + spec + (mode != 'null'? ' : ' + mode : '') + ')'); } // editor base node editorBase = $(editor.getWrapperElement()).css({ // fix CSS conflict to SimpleMDE padding: 0, border: 'none' }); ta.data('cm', true); // fit height to base editorBase.height('100%'); // TextArea button and Setting button $('
              ').css('float', 'left') .append( $('').html(self.fm.i18n('TextArea')) .button() .on('click', function(){ if (ta.data('cm')) { ta.removeData('cm'); editorBase.hide(); ta.val(editor.getValue()).show().trigger('focus'); $(this).text('CodeMirror'); } else { ta.data('cm', true); editorBase.show(); editor.setValue(ta.hide().val()); editor.refresh(); editor.focus(); $(this).html(self.fm.i18n('TextArea')); } }) ) .prependTo(base.next()); }; // load script then start if (!self.confObj.loader) { self.confObj.loader = $.Deferred(); if (useRequire) { require.config({ packages: [{ name: 'codemirror', location: cmUrl, main: 'codemirror.min' }], map: { 'codemirror': { 'codemirror/lib/codemirror': 'codemirror' } } }); require([ 'codemirror', 'codemirror/addon/mode/loadmode.min', 'codemirror/mode/meta.min' ], function(CodeMirror) { self.confObj.loader.resolve(CodeMirror); }); } else { self.fm.loadScript([ cmUrl + '/codemirror.min.js' ], function() { self.fm.loadScript([ cmUrl + '/addon/mode/loadmode.min.js', cmUrl + '/mode/meta.min.js' ], function() { self.confObj.loader.resolve(CodeMirror); }); }, {loadType: 'tag'}); } self.fm.loadCss(cmUrl + '/codemirror.css'); } self.confObj.loader.done(start); return dfrd; }, close : function(textarea, instance) { instance && instance.toTextArea(); }, save : function(textarea, instance) { instance && $(textarea).data('cm') && (textarea.value = instance.getValue()); }, focus : function(textarea, instance) { instance && $(textarea).data('cm') && instance.focus(); }, resize : function(textarea, instance, e, data) { instance && instance.refresh(); } }, { // SimpleMDE // called on initialization of elFinder cmd edit (this: this editor's config object) setup : function(opts, fm) { if (fm.UA.ltIE10 || !fm.options.cdns.simplemde) { this.disabled = true; } }, info : { id : 'simplemde', name : 'SimpleMDE', iconImg : 'img/editor-icons.png 0 -80' }, exts : ['md'], load : function(textarea) { var self = this, fm = this.fm, base = $(textarea).parent(), dfrd = $.Deferred(), cdn = fm.options.cdns.simplemde, start = function(SimpleMDE) { var h = base.height(), delta = base.outerHeight(true) - h + 14, editor, editorBase, opts; // fit height function textarea._setHeight = function(height) { var h = height || base.height(), ctrH = 0, areaH; base.children('.editor-toolbar,.editor-statusbar').each(function() { ctrH += $(this).outerHeight(true); }); areaH = h - ctrH - delta; editorBase.height(areaH); editor.codemirror.refresh(); return areaH; }; // set base height base.height(h); opts = { element: textarea, autofocus: true }; // trigger event 'editEditorPrepare' self.trigger('Prepare', { node: textarea, editorObj: SimpleMDE, instance: void(0), opts: opts }); // make editor editor = new SimpleMDE(opts); dfrd.resolve(editor); // editor base node editorBase = $(editor.codemirror.getWrapperElement()); // fit height to base editorBase.css('min-height', '50px') .children('.CodeMirror-scroll').css('min-height', '50px'); textarea._setHeight(h); }; // check SimpleMDE & start if (!self.confObj.loader) { self.confObj.loader = $.Deferred(); self.fm.loadCss(cdn+'/simplemde.min.css'); if (useRequire) { require([ cdn+'/simplemde.min.js' ], function(SimpleMDE) { self.confObj.loader.resolve(SimpleMDE); }); } else { self.fm.loadScript([cdn+'/simplemde.min.js'], function() { self.confObj.loader.resolve(SimpleMDE); }, {loadType: 'tag'}); } } self.confObj.loader.done(start); return dfrd; }, close : function(textarea, instance) { instance && instance.toTextArea(); instance = null; }, save : function(textarea, instance) { instance && (textarea.value = instance.value()); }, focus : function(textarea, instance) { instance && instance.codemirror.focus(); }, resize : function(textarea, instance, e, data) { instance && textarea._setHeight(); } }, { // CKEditor for html file info : { id : 'ckeditor', name : 'CKEditor', iconImg : 'img/editor-icons.png 0 0' }, exts : ['htm', 'html', 'xhtml'], setup : function(opts, fm) { var confObj = this; if (!fm.options.cdns.ckeditor) { confObj.disabled = true; } else { confObj.ckeOpts = {}; if (opts.extraOptions) { confObj.ckeOpts = Object.assign({}, opts.extraOptions.ckeditor || {}); if (opts.extraOptions.managerUrl) { confObj.managerUrl = opts.extraOptions.managerUrl; } } } }, load : function(textarea) { var self = this, fm = this.fm, dfrd = $.Deferred(), init = function() { var base = $(textarea).parent(), dlg = base.closest('.elfinder-dialog'), h = base.height(), reg = /([&?]getfile=)[^&]+/, loc = self.confObj.managerUrl || window.location.href.replace(/#.*$/, ''), name = 'ckeditor', opts; // make manager location if (reg.test(loc)) { loc = loc.replace(reg, '$1' + name); } else { loc += '?getfile=' + name; } // set base height base.height(h); // CKEditor configure options opts = { startupFocus : true, fullPage: true, allowedContent: true, filebrowserBrowseUrl : loc, toolbarCanCollapse: true, toolbarStartupExpanded: !fm.UA.Mobile, removePlugins: 'resize', extraPlugins: 'colorbutton,justify,docprops', on: { 'instanceReady' : function(e) { var editor = e.editor; editor.resize('100%', h); // re-build on dom move dlg.one('beforedommove.'+fm.namespace, function() { editor.destroy(); }).one('dommove.'+fm.namespace, function() { self.load(textarea).done(function(editor) { self.instance = editor; }); }); // return editor instance dfrd.resolve(e.editor); } } }; // trigger event 'editEditorPrepare' self.trigger('Prepare', { node: textarea, editorObj: CKEDITOR, instance: void(0), opts: opts }); // CKEditor configure CKEDITOR.replace(textarea.id, Object.assign(opts, self.confObj.ckeOpts)); CKEDITOR.on('dialogDefinition', function(e) { var dlg = e.data.definition.dialog; dlg.on('show', function(e) { fm.getUI().append($('.cke_dialog_background_cover')).append(this.getElement().$); }); dlg.on('hide', function(e) { $('body:first').append($('.cke_dialog_background_cover')).append(this.getElement().$); }); }); }; if (!self.confObj.loader) { self.confObj.loader = $.Deferred(); window.CKEDITOR_BASEPATH = fm.options.cdns.ckeditor + '/'; $.getScript(fm.options.cdns.ckeditor + '/ckeditor.js', function() { self.confObj.loader.resolve(); }); } self.confObj.loader.done(init); return dfrd; }, close : function(textarea, instance) { instance && instance.destroy(); }, save : function(textarea, instance) { instance && (textarea.value = instance.getData()); }, focus : function(textarea, instance) { instance && instance.focus(); }, resize : function(textarea, instance, e, data) { var self; if (instance) { if (instance.status === 'ready') { instance.resize('100%', $(textarea).parent().height()); } } } }, { // CKEditor5 balloon mode for html file info : { id : 'ckeditor5', name : 'CKEditor5', iconImg : 'img/editor-icons.png 0 -16' }, exts : ['htm', 'html', 'xhtml'], html : '
              ', setup : function(opts, fm) { var confObj = this; // check cdn and ES6 support if (!fm.options.cdns.ckeditor5 || typeof window.Symbol !== 'function' || typeof Symbol() !== 'symbol') { confObj.disabled = true; } else { confObj.ckeOpts = {}; if (opts.extraOptions) { // @deprecated option extraOptions.ckeditor5Mode if (opts.extraOptions.ckeditor5Mode) { confObj.ckeditor5Mode = opts.extraOptions.ckeditor5Mode; } confObj.ckeOpts = Object.assign({}, opts.extraOptions.ckeditor5 || {}); if (confObj.ckeOpts.mode) { confObj.ckeditor5Mode = confObj.ckeOpts.mode; delete confObj.ckeOpts.mode; } if (opts.extraOptions.managerUrl) { confObj.managerUrl = opts.extraOptions.managerUrl; } } } fm.bind('destroy', function() { confObj.editor = null; }); }, // Prepare on before show dialog prepare : function(base, dialogOpts, file) { $(base).height(base.editor.fm.getUI().height() - 100); }, init : function(id, file, data, fm) { var m = data.match(/^([\s\S]*]*>)([\s\S]+)(<\/body>[\s\S]*)$/i), header = '', body = '', footer =''; this.css({ width: '100%', height: '100%', 'box-sizing': 'border-box' }); if (m) { header = m[1]; body = m[2]; footer = m[3]; } else { body = data; } this.data('data', { header: header, body: body, footer: footer }); this._setupSelEncoding(data); }, load : function(editnode) { var self = this, fm = this.fm, dfrd = $.Deferred(), mode = self.confObj.ckeditor5Mode || 'decoupled-document', lang = (function() { var l = fm.lang.toLowerCase().replace('_', '-'); if (l.substr(0, 2) === 'zh' && l !== 'zh-cn') { l = 'zh'; } return l; })(), init = function(cEditor) { var base = $(editnode).parent(), opts; // set base height base.height(fm.getUI().height() - 100); // CKEditor5 configure options opts = Object.assign({ toolbar: ["heading", "|", "fontSize", "fontFamily", "|", "bold", "italic", "underline", "strikethrough", "highlight", "|", "alignment", "|", "numberedList", "bulletedList", "blockQuote", "indent", "outdent", "|", "ckfinder", "link", "imageUpload", "insertTable", "mediaEmbed", "|", "undo", "redo"], language: lang }, self.confObj.ckeOpts); // trigger event 'editEditorPrepare' self.trigger('Prepare', { node: editnode, editorObj: cEditor, instance: void(0), opts: opts }); cEditor .create(editnode, opts) .then(function(editor) { var ckf = editor.commands.get('ckfinder'), fileRepo = editor.plugins.get('FileRepository'), prevVars = {}, isImage, insertImages; if (editor.ui.view.toolbar && (mode === 'classic' || mode === 'decoupled-document')) { $(editnode).closest('.elfinder-dialog').children('.ui-widget-header').append($(editor.ui.view.toolbar.element).css({marginRight:'-1em',marginLeft:'-1em'})); } if (mode === 'classic') { $(editnode).closest('.elfinder-edit-editor').css('overflow', 'auto'); } // Set up this elFinder instead of CKFinder if (ckf) { isImage = function(f) { return f && f.mime.match(/^image\//i); }; insertImages = function(urls) { var imgCmd = editor.commands.get('imageUpload'); if (!imgCmd.isEnabled) { var ntf = editor.plugins.get('Notification'), i18 = editor.locale.t; ntf.showWarning(i18('Could not insert image at the current position.'), { title: i18('Inserting image failed'), namespace: 'ckfinder' }); return; } editor.execute('imageInsert', { source: urls }); }; // Take over ckfinder execute() ckf.execute = function() { var dlg = base.closest('.elfinder-dialog'), gf = fm.getCommand('getfile'), rever = function() { if (prevVars.hasVar) { dlg.off('resize close', rever); gf.callback = prevVars.callback; gf.options.folders = prevVars.folders; gf.options.multiple = prevVars.multi; fm.commandMap.open = prevVars.open; prevVars.hasVar = false; } }; dlg.trigger('togleminimize').one('resize close', rever); prevVars.callback = gf.callback; prevVars.folders = gf.options.folders; prevVars.multi = gf.options.multiple; prevVars.open = fm.commandMap.open; prevVars.hasVar = true; gf.callback = function(files) { var imgs = []; if (files.length === 1 && files[0].mime === 'directory') { fm.one('open', function() { fm.commandMap.open = 'getfile'; }).getCommand('open').exec(files[0].hash); return; } fm.getUI('cwd').trigger('unselectall'); $.each(files, function(i, f) { if (isImage(f)) { imgs.push(fm.convAbsUrl(f.url)); } else { editor.execute('link', fm.convAbsUrl(f.url)); } }); if (imgs.length) { insertImages(imgs); } dlg.trigger('togleminimize'); }; gf.options.folders = true; gf.options.multiple = true; fm.commandMap.open = 'getfile'; fm.toast({ mode: 'info', msg: fm.i18n('dblclickToSelect') }); }; } // Set up image uploader fileRepo.createUploadAdapter = function(loader) { return new uploder(loader); }; editor.setData($(editnode).data('data').body); // move .ck-body to elFinder node for fullscreen mode fm.getUI().append($('body > div.ck-body')); $('div.ck-balloon-panel').css({ 'z-index': fm.getMaximizeCss().zIndex + 1 }); dfrd.resolve(editor); /*fm.log({ defaultConfig: cEditor.defaultConfig, plugins: cEditor.builtinPlugins.map(function(p) { return p.pluginName; }), toolbars: Array.from(editor.ui.componentFactory.names()) });*/ }) ['catch'](function(error) { // ['cache'] instead .cache for fix error on ie8 fm.error(error); }); }, uploder = function(loader) { var upload = function(file, resolve, reject) { fm.exec('upload', {files: [file]}, void(0), fm.cwd().hash) .done(function(data){ if (data.added && data.added.length) { fm.url(data.added[0].hash, { async: true }).done(function(url) { resolve({ 'default': fm.convAbsUrl(url) }); }).fail(function() { reject('errFileNotFound'); }); } else { reject(fm.i18n(data.error? data.error : 'errUpload')); } }) .fail(function(err) { var error = fm.parseError(err); reject(fm.i18n(error? (error === 'userabort'? 'errAbort' : error) : 'errUploadNoFiles')); }) .progress(function(data) { loader.uploadTotal = data.total; loader.uploaded = data.progress; }); }; this.upload = function() { return new Promise(function(resolve, reject) { if (loader.file instanceof Promise || (loader.file && typeof loader.file.then === 'function')) { loader.file.then(function(file) { upload(file, resolve, reject); }); } else { upload(loader.file, resolve, reject); } }); }; this.abort = function() { fm.getUI().trigger('uploadabort'); }; }, loader; if (!self.confObj.editor) { loader = $.Deferred(); self.fm.loadScript([ fm.options.cdns.ckeditor5 + '/' + mode + '/ckeditor.js' ], function(editor) { if (!editor) { editor = window.BalloonEditor || window.InlineEditor || window.ClassicEditor || window.DecoupledEditor; } if (fm.lang !== 'en') { self.fm.loadScript([ fm.options.cdns.ckeditor5 + '/' + mode + '/translations/' + lang + '.js' ], function(obj) { loader.resolve(editor); }, { tryRequire: true, loadType: 'tag', error: function(obj) { lang = 'en'; loader.resolve(editor); } }); } else { loader.resolve(editor); } }, { tryRequire: true, loadType: 'tag' }); loader.done(function(editor) { self.confObj.editor = editor; init(editor); }); } else { init(self.confObj.editor); } return dfrd; }, getContent : function() { var data = $(this).data('data'); return data.header + data.body + data.footer; }, close : function(editnode, instance) { instance && instance.destroy(); }, save : function(editnode, instance) { var elm = $(editnode), data = elm.data('data'); if (instance) { data.body = instance.getData(); elm.data('data', data); } }, focus : function(editnode, instance) { $(editnode).trigger('focus'); } }, { // TinyMCE for html file info : { id : 'tinymce', name : 'TinyMCE', iconImg : 'img/editor-icons.png 0 -64' }, exts : ['htm', 'html', 'xhtml'], setup : function(opts, fm) { var confObj = this; if (!fm.options.cdns.tinymce) { confObj.disabled = true; } else { confObj.mceOpts = {}; if (opts.extraOptions) { confObj.uploadOpts = Object.assign({}, opts.extraOptions.uploadOpts || {}); confObj.mceOpts = Object.assign({}, opts.extraOptions.tinymce || {}); } else { confObj.uploadOpts = {}; } } }, load : function(textarea) { var self = this, fm = this.fm, dfrd = $.Deferred(), init = function() { var base = $(textarea).show().parent(), dlg = base.closest('.elfinder-dialog'), h = base.height(), delta = base.outerHeight(true) - h, // hide MCE dialog and modal block hideMceDlg = function() { var mceW; if (tinymce.activeEditor.windowManager.windows) { mceW = tinymce.activeEditor.windowManager.windows[0]; mceDlg = $(mceW? mceW.getEl() : void(0)).hide(); mceCv = $('#mce-modal-block').hide(); } else { mceDlg = $('.tox-dialog-wrap').hide(); } }, // Show MCE dialog and modal block showMceDlg = function() { mceCv && mceCv.show(); mceDlg && mceDlg.show(); }, tVer = tinymce.majorVersion, opts, mceDlg, mceCv; // set base height base.height(h); // fit height function textarea._setHeight = function(height) { if (tVer < 5) { var base = $(this).parent(), h = height || base.innerHeight(), ctrH = 0, areaH; base.find('.mce-container-body:first').children('.mce-top-part,.mce-statusbar').each(function() { ctrH += $(this).outerHeight(true); }); areaH = h - ctrH - delta; base.find('.mce-edit-area iframe:first').height(areaH); } }; // TinyMCE configure options opts = { selector: '#' + textarea.id, resize: false, plugins: 'print preview fullpage searchreplace autolink directionality visualblocks visualchars fullscreen image link media template codesample table charmap hr pagebreak nonbreaking anchor toc insertdatetime advlist lists wordcount imagetools textpattern help', toolbar: 'formatselect | bold italic strikethrough forecolor backcolor | link image media | alignleft aligncenter alignright alignjustify | numlist bullist outdent indent | removeformat', image_advtab: true, init_instance_callback : function(editor) { // fit height on init textarea._setHeight(h); // re-build on dom move dlg.one('beforedommove.'+fm.namespace, function() { tinymce.execCommand('mceRemoveEditor', false, textarea.id); }).one('dommove.'+fm.namespace, function() { self.load(textarea).done(function(editor) { self.instance = editor; }); }); // return editor instance dfrd.resolve(editor); }, file_picker_callback : function (callback, value, meta) { var gf = fm.getCommand('getfile'), revar = function() { if (prevVars.hasVar) { gf.callback = prevVars.callback; gf.options.folders = prevVars.folders; gf.options.multiple = prevVars.multi; fm.commandMap.open = prevVars.open; prevVars.hasVar = false; } dlg.off('resize close', revar); showMceDlg(); }, prevVars = {}; prevVars.callback = gf.callback; prevVars.folders = gf.options.folders; prevVars.multi = gf.options.multiple; prevVars.open = fm.commandMap.open; prevVars.hasVar = true; gf.callback = function(file) { var url, info; if (file.mime === 'directory') { fm.one('open', function() { fm.commandMap.open = 'getfile'; }).getCommand('open').exec(file.hash); return; } // URL normalization url = fm.convAbsUrl(file.url); // Make file info info = file.name + ' (' + fm.formatSize(file.size) + ')'; // Provide file and text for the link dialog if (meta.filetype == 'file') { callback(url, {text: info, title: info}); } // Provide image and alt text for the image dialog if (meta.filetype == 'image') { callback(url, {alt: info}); } // Provide alternative source and posted for the media dialog if (meta.filetype == 'media') { callback(url); } dlg.trigger('togleminimize'); }; gf.options.folders = true; gf.options.multiple = false; fm.commandMap.open = 'getfile'; hideMceDlg(); dlg.trigger('togleminimize').one('resize close', revar); fm.toast({ mode: 'info', msg: fm.i18n('dblclickToSelect') }); return false; }, images_upload_handler : function (blobInfo, success, failure) { var file = blobInfo.blob(), err = function(e) { var dlg = e.data.dialog || {}; if (dlg.hasClass('elfinder-dialog-error') || dlg.hasClass('elfinder-confirm-upload')) { hideMceDlg(); dlg.trigger('togleminimize').one('resize close', revert); fm.unbind('dialogopened', err); } }, revert = function() { dlg.off('resize close', revert); showMceDlg(); }, clipdata = true; // check file object if (file.name) { // file blob of client side file object clipdata = void(0); } fm.bind('dialogopened', err).exec('upload', Object.assign({ files: [file], clipdata: clipdata // to get unique name on connector }, self.confObj.uploadOpts), void(0), fm.cwd().hash).done(function(data) { if (data.added && data.added.length) { fm.url(data.added[0].hash, { async: true }).done(function(url) { showMceDlg(); success(fm.convAbsUrl(url)); }).fail(function() { failure(fm.i18n('errFileNotFound')); }); } else { failure(fm.i18n(data.error? data.error : 'errUpload')); } }).fail(function(err) { var error = fm.parseError(err); if (error) { if (error === 'errUnknownCmd') { error = 'errPerm'; } else if (error === 'userabort') { error = 'errAbort'; } } failure(fm.i18n(error? error : 'errUploadNoFiles')); }); } }; // TinyMCE 5 supports "height: 100%" if (tVer >= 5) { opts.height = '100%'; } // trigger event 'editEditorPrepare' self.trigger('Prepare', { node: textarea, editorObj: tinymce, instance: void(0), opts: opts }); // TinyMCE configure tinymce.init(Object.assign(opts, self.confObj.mceOpts)); }; if (!self.confObj.loader) { self.confObj.loader = $.Deferred(); self.fm.loadScript([fm.options.cdns.tinymce + (fm.options.cdns.tinymce.match(/\.js/)? '' : '/tinymce.min.js')], function() { self.confObj.loader.resolve(); }, { loadType: 'tag' }); } self.confObj.loader.done(init); return dfrd; }, close : function(textarea, instance) { instance && tinymce.execCommand('mceRemoveEditor', false, textarea.id); }, save : function(textarea, instance) { instance && instance.save(); }, focus : function(textarea, instance) { instance && instance.focus(); }, resize : function(textarea, instance, e, data) { // fit height to base node on dialog resize instance && textarea._setHeight(); } }, { info : { id : 'zohoeditor', name : 'Zoho Editor', iconImg : 'img/editor-icons.png 0 -32', cmdCheck : 'ZohoOffice', preventGet: true, hideButtons: true, syncInterval : 15000, canMakeEmpty: true, integrate: { title: 'Zoho Office API', link: 'https://www.zoho.com/officeapi/' } }, mimes : [ 'application/msword', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', //'application/pdf', 'application/vnd.oasis.opendocument.text', 'application/rtf', 'text/html', 'application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/vnd.oasis.opendocument.spreadsheet', 'application/vnd.sun.xml.calc', 'text/csv', 'text/tab-separated-values', 'application/vnd.ms-powerpoint', 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 'application/vnd.openxmlformats-officedocument.presentationml.slideshow', 'application/vnd.oasis.opendocument.presentation', 'application/vnd.sun.xml.impress' ], html : '', // setup on elFinder bootup setup : function(opts, fm) { if (fm.UA.Mobile || fm.UA.ltIE8) { this.disabled = true; } }, // Prepare on before show dialog prepare : function(base, dialogOpts, file) { var elfNode = base.editor.fm.getUI(); $(base).height(elfNode.height()); dialogOpts.width = Math.max(dialogOpts.width || 0, elfNode.width() * 0.8); }, // Initialization of editing node (this: this editors HTML node) init : function(id, file, dum, fm) { var ta = this, ifm = $(this).hide(), uiToast = fm.getUI('toast'), spnr = $('
              ') .html('' + fm.i18n('nowLoading') + '') .appendTo(ifm.parent()), cdata = function() { var data = ''; $.each(fm.customData, function(key, val) { data += '&' + encodeURIComponent(key) + '=' + encodeURIComponent(val); }); return data; }; $(ta).data('xhr', fm.request({ data: { cmd: 'editor', name: ta.editor.confObj.info.cmdCheck, method: 'init', 'args[target]': file.hash, 'args[lang]' : fm.lang, 'args[cdata]' : cdata() }, preventDefault : true }).done(function(data) { var opts; if (data.zohourl) { opts = { css: { height: '100%' } }; // trigger event 'editEditorPrepare' ta.editor.trigger('Prepare', { node: ta, editorObj: void(0), instance: ifm, opts: opts }); ifm.attr('src', data.zohourl).show().css(opts.css); if (data.warning) { uiToast.appendTo(ta.closest('.ui-dialog')); fm.toast({ msg: fm.i18n(data.warning), mode: 'warning', timeOut: 0, onHidden: function() { uiToast.children().length === 1 && uiToast.appendTo(fm.getUI()); }, button: { text: 'btnYes' } }); } } else { data.error && fm.error(data.error); ta.elfinderdialog('destroy'); } }).fail(function(error) { error && fm.error(error); ta.elfinderdialog('destroy'); }).always(function() { spnr.remove(); })); }, load : function() {}, getContent : function() {}, save : function() {}, // Before dialog close beforeclose : iframeClose, // On dialog closed close : function(ta) { var fm = this.fm, xhr = $(ta).data('xhr'); if (xhr.state() === 'pending') { xhr.reject(); } } }, { // Zip Archive with FlySystem info : { id : 'ziparchive', name : 'btnMount', iconImg : 'img/toolbar.png 0 -416', cmdCheck : 'ZipArchive', edit : function(file, editor) { var fm = this, dfrd = $.Deferred(); fm.request({ data:{ cmd: 'netmount', protocol: 'ziparchive', host: file.hash, path: file.phash }, preventFail: true, notify : {type : 'netmount', cnt : 1, hideCnt : true} }).done(function(data) { var pdir; if (data.added && data.added.length) { if (data.added[0].phash) { if (pdir = fm.file(data.added[0].phash)) { if (! pdir.dirs) { pdir.dirs = 1; fm.change({ changed: [ pdir ] }); } } } fm.one('netmountdone', function() { fm.exec('open', data.added[0].hash); fm.one('opendone', function() { data.toast && fm.toast(data.toast); }); }); } dfrd.resolve(); }) .fail(function(error) { dfrd.reject(error); }); return dfrd; } }, mimes : ['application/zip'], load : function() {}, save : function(){} }, { // Simple Text (basic textarea editor) info : { id : 'textarea', name : 'TextArea', useTextAreaEvent : true }, load : function(textarea) { // trigger event 'editEditorPrepare' this.trigger('Prepare', { node: textarea, editorObj: void(0), instance: void(0), opts: {} }); textarea.setSelectionRange && textarea.setSelectionRange(0, 0); $(textarea).trigger('focus').show(); }, save : function(){} }, { // File converter with online-convert.com info : { id : 'onlineconvert', name : 'Online Convert', iconImg : 'img/editor-icons.png 0 -144', cmdCheck : 'OnlineConvert', preventGet: true, hideButtons: true, single: true, converter: true, canMakeEmpty: false, integrate: { title: 'ONLINE-CONVERT.COM', link: 'https://online-convert.com' } }, mimes : ['*'], html : '
              ', // setup on elFinder bootup setup : function(opts, fm) { var mOpts = opts.extraOptions.onlineConvert || {maxSize:100,showLink:true}; if (mOpts.maxSize) { this.info.maxSize = mOpts.maxSize * 1048576; } this.set = Object.assign({ url : 'https://%s.online-convert.com%s?external_url=', conv : { Archive: {'7Z':{}, 'BZ2':{ext:'bz'}, 'GZ':{}, 'ZIP':{}}, Audio: {'MP3':{}, 'OGG':{ext:'oga'}, 'WAV':{}, 'WMA':{}, 'AAC':{}, 'AIFF':{ext:'aif'}, 'FLAC':{}, 'M4A':{}, 'MMF':{}, 'OPUS':{ext:'oga'}}, Document: {'DOC':{}, 'DOCX':{}, 'HTML':{}, 'ODT':{}, 'PDF':{}, 'PPT':{}, 'PPTX':{}, 'RTF':{}, 'SWF':{}, 'TXT':{}}, eBook: {'AZW3':{ext:'azw'}, 'ePub':{}, 'FB2':{ext:'xml'}, 'LIT':{}, 'LRF':{}, 'MOBI':{}, 'PDB':{}, 'PDF':{},'PDF-eBook':{ext:'pdf'}, 'TCR':{}}, Hash: {'Adler32':{}, 'Apache-htpasswd':{}, 'Blowfish':{}, 'CRC32':{}, 'CRC32B':{}, 'Gost':{}, 'Haval128':{},'MD4':{}, 'MD5':{}, 'RIPEMD128':{}, 'RIPEMD160':{}, 'SHA1':{}, 'SHA256':{}, 'SHA384':{}, 'SHA512':{}, 'Snefru':{}, 'Std-DES':{}, 'Tiger128':{}, 'Tiger128-calculator':{}, 'Tiger128-converter':{}, 'Tiger160':{}, 'Tiger192':{}, 'Whirlpool':{}}, Image: {'BMP':{}, 'EPS':{ext:'ai'}, 'GIF':{}, 'EXR':{}, 'ICO':{}, 'JPG':{}, 'PNG':{}, 'SVG':{}, 'TGA':{}, 'TIFF':{ext:'tif'}, 'WBMP':{}, 'WebP':{}}, Video: {'3G2':{}, '3GP':{}, 'AVI':{}, 'FLV':{}, 'HLS':{ext:'m3u8'}, 'MKV':{}, 'MOV':{}, 'MP4':{}, 'MPEG-1':{ext:'mpeg'}, 'MPEG-2':{ext:'mpeg'}, 'OGG':{ext:'ogv'}, 'OGV':{}, 'WebM':{}, 'WMV':{}, 'Android':{link:'/convert-video-for-%s',ext:'mp4'}, 'Blackberry':{link:'/convert-video-for-%s',ext:'mp4'}, 'DPG':{link:'/convert-video-for-%s',ext:'avi'}, 'iPad':{link:'/convert-video-for-%s',ext:'mp4'}, 'iPhone':{link:'/convert-video-for-%s',ext:'mp4'}, 'iPod':{link:'/convert-video-for-%s',ext:'mp4'}, 'Nintendo-3DS':{link:'/convert-video-for-%s',ext:'avi'}, 'Nintendo-DS':{link:'/convert-video-for-%s',ext:'avi'}, 'PS3':{link:'/convert-video-for-%s',ext:'mp4'}, 'Wii':{link:'/convert-video-for-%s',ext:'avi'}, 'Xbox':{link:'/convert-video-for-%s',ext:'wmv'}} }, catExts : { Hash: 'txt' }, link : '', useTabs : ($.fn.tabs && !fm.UA.iOS)? true : false // Can't work on iOS, I don't know why. }, mOpts); }, // Prepare on before show dialog prepare : function(base, dialogOpts, file) { var elfNode = base.editor.fm.getUI(); $(base).height(elfNode.height()); dialogOpts.width = Math.max(dialogOpts.width || 0, elfNode.width() * 0.8); }, // Initialization of editing node (this: this editors HTML node) init : function(id, file, dum, fm) { var ta = this, confObj = ta.editor.confObj, set = confObj.set, uiToast = fm.getUI('toast'), idxs = {}, allowZip = fm.uploadMimeCheck('application/zip', file.phash), selfUrl = $('base').length? document.location.href.replace(/#.*$/, '') : '', getExt = function(cat, con) { var c; if (set.catExts[cat]) { return set.catExts[cat]; } if (set.conv[cat] && (c = set.conv[cat][con])) { return (c.ext || con).toLowerCase(); } return con.toLowerCase(); }, setOptions = function(cat, done) { var type, dfdInit, dfd; if (typeof confObj.api === 'undefined') { dfdInit = fm.request({ data: { cmd: 'editor', name: 'OnlineConvert', method: 'init' }, preventDefault : true }); } else { dfdInit = $.Deferred().resolve({api: confObj.api}); } cat = cat.toLowerCase(); dfdInit.done(function(data) { confObj.api = data.api; if (confObj.api) { if (cat) { type = '?category=' + cat; } else { type = ''; cat = 'all'; } if (!confObj.conversions) { confObj.conversions = {}; } if (!confObj.conversions[cat]) { dfd = $.getJSON('https://api2.online-convert.com/conversions' + type); } else { dfd = $.Deferred().resolve(confObj.conversions[cat]); } dfd.done(function(d) { confObj.conversions[cat] = d; $.each(d, function(i, o) { btns[set.useTabs? 'children' : 'find']('.onlineconvert-category-' + o.category).children('.onlineconvert-' + o.target).trigger('makeoption', o); }); done && done(); }); } }); }, btns = (function() { var btns = $('
              ').on('click', 'button', function() { var b = $(this), opts = b.data('opts') || null, cat = b.closest('.onlineconvert-category').data('cname'), con = b.data('conv'); if (confObj.api === true) { api({ category: cat, convert: con, options: opts }); } }).on('change', function(e) { var t = $(e.target), p = t.parent(), b = t.closest('.elfinder-edit-onlineconvert-button').children('button:first'), o = b.data('opts') || {}, v = p.data('type') === 'boolean'? t.is(':checked') : t.val(); e.stopPropagation(); if (v) { if (p.data('type') === 'integer') { v = parseInt(v); } if (p.data('pattern')) { var reg = new RegExp(p.data('pattern')); if (!reg.test(v)) { requestAnimationFrame(function() { fm.error('"' + fm.escape(v) + '" is not match to "/' + fm.escape(p.data('pattern')) + '/"'); }); v = null; } } } if (v) { o[t.parent().data('optkey')] = v; } else { delete o[p.data('optkey')]; } b.data('opts', o); }), ul = $('
                '), oform = function(n, o) { var f = $('

                ').data('optkey', n).data('type', o.type), checked = '', disabled = '', nozip = false, opts, btn, elm; if (o.description) { f.attr('title', fm.i18n(o.description)); } if (o.pattern) { f.data('pattern', o.pattern); } f.append($('').text(fm.i18n(n) + ' : ')); if (o.type === 'boolean') { if (o['default'] || (nozip = (n === 'allow_multiple_outputs' && !allowZip))) { checked = ' checked'; if (nozip) { disabled = ' disabled'; } btn = this.children('button:first'); opts = btn.data('opts') || {}; opts[n] = true; btn.data('opts', opts); } f.append($('')); } else if (o['enum']){ elm = $('').append($('').text('Select...')); $.each(o['enum'], function(i, v) { elm.append($('').text(v)); }); f.append(elm); } else { f.append($('')); } return f; }, makeOption = function(o) { var elm = this, b = $('').on('click', function() { f.toggle(); }), f = $('
                ').hide(); if (o.options) { $.each(o.options, function(k, v) { k !== 'download_password' && f.append(oform.call(elm, k, v)); }); } elm.append(b, f); }, ts = (+new Date()), i = 0; if (!confObj.ext2mime) { confObj.ext2mime = Object.assign(fm.arrayFlip(fm.mimeTypes), ext2mime); } $.each(set.conv, function(t, c) { var cname = t.toLowerCase(), id = 'elfinder-edit-onlineconvert-' + cname + ts, type = $('
                ').data('cname', t), cext; $.each(c, function(n, o) { var nl = n.toLowerCase(), ext = getExt(t, n); if (!confObj.ext2mime[ext]) { if (cname === 'audio' || cname === 'image' || cname === 'video') { confObj.ext2mime[ext] = cname + '/x-' + nl; } else { confObj.ext2mime[ext] = 'application/octet-stream'; } } if (fm.uploadMimeCheck(confObj.ext2mime[ext], file.phash)) { type.append($('
                ').on('makeoption', function(e, data) { var elm = $(this); if (!elm.children('.elfinder-button-icon-preference').length) { makeOption.call(elm, data); } }).append($('').text(n).data('conv', n))); } }); if (type.children().length) { ul.append($('
              • ').append($('').attr('href', selfUrl + '#' + id).text(t))); btns.append(type); idxs[cname] = i++; } }); if (set.useTabs) { btns.prepend(ul).tabs({ beforeActivate: function(e, ui) { setOptions(ui.newPanel.data('cname')); } }); } else { $.each(set.conv, function(t) { var tl = t.toLowerCase(); btns.append($('
                ').append($('').text(t)).append(btns.children('.onlineconvert-category-' + tl))); }); } return btns; })(), select = $(this) .append( btns, (set.showLink? $(set.link) : null) ), spnr = $('
                ') .hide() .html('' + fm.i18n('nowLoading') + '') .appendTo(select.parent()), prog = $('
                ').appendTo(spnr), _url = null, url = function() { var onetime; if (_url) { return $.Deferred().resolve(_url); } else { spnr.show(); return fm.forExternalUrl(file.hash, { progressBar: prog }).done(function(url) { _url = url; }).fail(function(error) { error && fm.error(error); ta.elfinderdialog('destroy'); }).always(function() { spnr.hide(); }); } }, api = function(opts) { $(ta).data('dfrd', url().done(function(url) { select.fadeOut(); setStatus({info: 'Start conversion request.'}); fm.request({ data: { cmd: 'editor', name: 'OnlineConvert', method: 'api', 'args[category]' : opts.category.toLowerCase(), 'args[convert]' : opts.convert.toLowerCase(), 'args[options]' : JSON.stringify(opts.options), 'args[source]' : fm.convAbsUrl(url), 'args[filename]' : fm.splitFileExtention(file.name)[0] + '.' + getExt(opts.category, opts.convert), 'args[mime]' : file.mime }, preventDefault : true }).done(function(data) { checkRes(data.apires, opts.category, opts.convert); }).fail(function(error) { error && fm.error(error); ta.elfinderdialog('destroy'); }); })); }, checkRes = function(res, cat, con) { var status, err = []; if (res && res.id) { status = res.status; if (status.code === 'failed') { spnr.hide(); if (res.errors && res.errors.length) { $.each(res.errors, function(i, o) { o.message && err.push(o.message); }); } fm.error(err.length? err : status.info); select.fadeIn(); } else if (status.code === 'completed') { upload(res); } else { setStatus(status); setTimeout(function() { polling(res.id); }, 1000); } } else { uiToast.appendTo(ta.closest('.ui-dialog')); if (res.message) { fm.toast({ msg: fm.i18n(res.message), mode: 'error', timeOut: 5000, onHidden: function() { uiToast.children().length === 1 && uiToast.appendTo(fm.getUI()); } }); } fm.toast({ msg: fm.i18n('editorConvNoApi'), mode: 'error', timeOut: 3000, onHidden: function() { uiToast.children().length === 1 && uiToast.appendTo(fm.getUI()); } }); spnr.hide(); select.show(); } }, setStatus = function(status) { spnr.show().children('.elfinder-spinner-text').text(status.info); }, polling = function(jobid) { fm.request({ data: { cmd: 'editor', name: 'OnlineConvert', method: 'api', 'args[jobid]': jobid }, preventDefault : true }).done(function(data) { checkRes(data.apires); }).fail(function(error) { error && fm.error(error); ta.elfinderdialog('destroy'); }); }, upload = function(res) { var output = res.output, id = res.id, url = ''; spnr.hide(); if (output && output.length) { ta.elfinderdialog('destroy'); $.each(output, function(i, o) { if (o.uri) { url += o.uri + '\n'; } }); fm.upload({ target: file.phash, files: [url], type: 'text', extraData: { contentSaveId: 'OnlineConvert-' + res.id } }); } }, mode = 'document', cl, m; select.parent().css({overflow: 'auto'}).addClass('overflow-scrolling-touch'); if (m = file.mime.match(/^(audio|image|video)/)) { mode = m[1]; } if (set.useTabs) { if (idxs[mode]) { btns.tabs('option', 'active', idxs[mode]); } } else { cl = Object.keys(set.conv).length; $.each(set.conv, function(t) { if (t.toLowerCase() === mode) { setOptions(t, function() { $.each(set.conv, function(t0) { t0.toLowerCase() !== mode && setOptions(t0); }); }); return false; } cl--; }); if (!cl) { $.each(set.conv, function(t) { setOptions(t); }); } select.parent().scrollTop(btns.children('.onlineconvert-fieldset-' + mode).offset().top); } }, load : function() {}, getContent : function() {}, save : function() {}, // On dialog closed close : function(ta) { var fm = this.fm, dfrd = $(ta).data('dfrd'); if (dfrd && dfrd.state() === 'pending') { dfrd.reject(); } } } ]; }, window.elFinder)); plugins/file-manager-advanced/application/library/js/extras/quicklook.googledocs.js000064400000004401147176754550024717 0ustar00(function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { "use strict"; try { if (! elFinder.prototype.commands.quicklook.plugins) { elFinder.prototype.commands.quicklook.plugins = []; } elFinder.prototype.commands.quicklook.plugins.push(function(ql) { var fm = ql.fm, preview = ql.preview; preview.on('update', function(e) { var win = ql.window, file = e.file, node, loading; if (file.mime.indexOf('application/vnd.google-apps.') === 0) { if (file.url == '1') { preview.hide(); $('
                ').appendTo(ql.info.find('.elfinder-quicklook-info')) .on('click', function() { $(this).html(''); fm.request({ data : {cmd : 'url', target : file.hash}, preventDefault : true }) .always(function() { preview.show(); $(this).html(''); }) .done(function(data) { var rfile = fm.file(file.hash); ql.value.url = rfile.url = data.url || ''; if (ql.value.url) { preview.trigger($.Event('update', {file : ql.value})); } }); }); } if (file.url !== '' && file.url != '1') { e.stopImmediatePropagation(); loading = $('
                '+fm.i18n('nowLoading')+'
                ').appendTo(ql.info.find('.elfinder-quicklook-info')); node = $('') .css('background-color', 'transparent') .on('load', function() { ql.hideinfo(); loading.remove(); node.css('background-color', '#fff'); }) .on('error', function() { loading.remove(); node.remove(); }) .appendTo(preview) .attr('src', fm.url(file.hash)); preview.one('change', function() { loading.remove(); node.off('load').remove(); }); } } }); }); } catch(e) {} })); plugins/file-manager-advanced/application/library/js/i18n/help/cs.html.js000064400000001722147176754550022346 0ustar00

                Tipy na obsluhu

                Obsluha na uživatelském rozhraní je podobná standardnímu správci souborů operačního systému. Drag and Drop však není možné používat s mobilními prohlížeči.

                • Kliknutím pravým tlačítkem nebo dlouhým klepnutím zobrazíte kontextové menu.
                • Přetáhněte do stromu složek nebo do aktuálního pracovního prostoru a přetáhněte / kopírujte položky.
                • Výběr položky v pracovním prostoru můžete rozšířit pomocí kláves Shift nebo Alt (Možnost).
                • Přemístěte soubory a složky do cílové složky nebo do pracovního prostoru.
                • Dialog předávání může přijímat data schránky nebo seznamy adres URL a přitáhnout a odejít z jiných prohlížečů nebo správců souborů.
                • Zatažením spusťte stisknutím klávesy Alt (Možnost) přetáhněte do vnějšího prohlížeče. Tato funkce se převezme pomocí prohlížeče Google Chrome.
                plugins/file-manager-advanced/application/library/js/i18n/help/de.html.js000064400000004370147176754550022333 0ustar00

                Anwendungstipps

                Die Verwendung dieser Anwendung ist ähnlich der einer lokalen Dateiverwaltung.
                Hinweis: auf mobilen Geräten ist das Ziehen und Ablegen (Drag and Drop) von Dateien nicht möglich.

                • Rechtsklick auf ein Element oder länger darauf zeigen öffnet das Kontextmenü
                • Um Elemente in andere Ordner oder aktuellen Arbeitsbereich zu kopieren oder verschieben diese Ziehen und Ablegen
                • Elementauswahl im Arbeitsbereich kann mit der Hochstell- oder ALT-TAste erweitert werden
                • Um lokale Ordner und Dateien in den Zielorder oder -arbeitsbereich zu kopieren diese Ziehen und Ablegen
                • Der Uploaddialog erlaubt Daten aus dem Clipboard (Zwischenspeicher), eine URL und Ziehen und Ablegen aus anderen Browsern und Dateiverwaltungsoberflächen
                • Ziehen mit gedrückter ALT-Taste erlaubt einen einfachen Dateidownload (nur Google Chrome)
                • Ordner und Dateien können ausgeblendet (versteckt) werden. Um sie wieder dauerhaft sichtbar zu machen, über die Menüleiste das "Icon Einstellungen" anklicken, dort unter Arbeitsplatz "Zeige versteckte Elemente" den Button "Neustart" anklicken
                • Das Kontextmenü (rechte Maustaste) zeigt je nach ausgewählten Element diverse Aktionen an
                • Je nach Art des Elements kann der Inhalt entweder mit dem integrierten Editor bearbeitet werden (z.B. .php, .txt, .ini usw.) oder wenn ein Bild dieses gedreht sowie die Größe geändert werden
                • Zum verbinden externer Speicherorte (FTP, Dropbox, Box, GoogleDrive, OneDrive) sowie Onlineeditor Zoho Office Editor oder Konvertierungsdienst Online-Convert müssen diese Anwendungen freigeschaltet als auch die entsprechenden API-Daten zum Abrufen je Dienst definiert sein.
                  Sollten diese Dienste nicht verfügbar sein, müssen diese entweder selbständig dazu programmiert werden, oder einen Entwickler des Vertrauens damit beauftragen (z.B. OSWorX)
                • In den Einstellungen "Menü Icon Einstellungen" kann der gesamte Arbeitsbereich, die Menüleiste sowie etliche weitere Aktionen definiert werden
                plugins/file-manager-advanced/application/library/js/i18n/help/en.html.js000064400000001440147176754550022340 0ustar00

                Operation Tips

                Operation on the UI is similar to operating system's standard file manager. However, Drag and Drop is not possible with mobile browsers.

                • Right click or long tap to show the context menu.
                • Drag and drop into the folder tree or the current workspace to move/copy items.
                • Item selection in the workspace can be extended selection with Shift or Alt (Option) key.
                • Drag and Drop to the destination folder or workspace to upload files and folders.
                • The upload dialog can accept paste/drop clipboard data or URL lists and Drag and Drop from other browser or file managers etc.
                • Drag start with pressing Alt(Option) key to drag out to outside browser. It will became download operation with Google Chrome.
                plugins/file-manager-advanced/application/library/js/i18n/help/es.html.js000064400000002042147176754550022344 0ustar00

                Consejos de operación

                Operar en la Interfaz del Usuario es similar al administrador de archivos estandar del sistema operativo. Sin embargo, Arrastrar y soltar no es posible con los navegadores móviles.

                • Click derecho o un tap largo para mostrar el menú de contexto.
                • Arrastrar y soltar dentro del árbol de carpetas o el espacio de trabajo actual para mover/copiar elementos.
                • La selección de elementos en el espacio de trabajo puede ampliarse con la tecla Shift o Alt (Opción).
                • Arrastrar y soltar a la carpeta de destino o área de trabajo para cargar archivos y carpetas.
                • El cuadro de diálogo de carga puede aceptar pegar/soltar datos del portapapeles o listas de URL y arrastrar y soltar desde otro navegador o administrador de archivos, etc.
                • Iniciar a arrastrar presionando la tecla Alt (Opción) para arrastrar fuera del navegador. Se convertirá en una operación de descarga con Google Chrome.
                plugins/file-manager-advanced/application/library/js/i18n/help/ja.html.js000064400000002402147176754550022327 0ustar00

                操作のヒント

                UIの操作は、オペレーティングシステムの標準ファイルマネージャにほぼ準拠しています。ただし、モバイルブラウザではドラッグ&ドロップはできません。

                • 右クリックまたはロングタップでコンテキストメニューを表示します。
                • アイテムを移動/コピーするには、フォルダツリーまたはワークスペースにドラッグ&ドロップします。
                • ワークスペース内のアイテムの選択は、ShiftキーまたはAltキー(Optionキー)で選択範囲を拡張できます。
                • コピー先のフォルダまたはワークスペースにドラッグアンドドロップして、ファイルとフォルダをアップロードします。
                • アップロードダイアログでは、クリップボードのデータやURLリストのペースト/ドロップ、他のブラウザやファイルマネージャからのドラッグ&ドロップなどを受け入れることができます。
                • Altキー(Optionキー)を押しながらドラッグすると、ブラウザの外にドラッグできます。Google Chromeでダウンロード操作になります。
                plugins/file-manager-advanced/application/library/js/i18n/help/ko.html.js000064400000002034147176754550022347 0ustar00

                사용 팁

                UI 조작은 운영체제의 표준 파일 관리자를 사용하는 방법과 비슷합니다. 하지만 모바일 브라우저에서는 드래그앤드롭을 사용할 수 없습니다.

                • 오른쪽 클릭하거나 길게 누르면 컨텍스트 메뉴가 나타납니다.
                • 이동/복사하려면 폴더 트리 또는 원하는 폴더로 드래그앤드롭하십시오.
                • 작업공간에서 항목을 선택하려면 Shift또는 Alt(Option) 키를 사용하여 선택 영역을 넓힐 수 있습니다.
                • 업로드 대상 폴더 또는 작업 영역으로 파일및 폴더를 드래그앤드롭하여 업로드할 수 있습니다.
                • 다른 브라우저 또는 파일관리자등에서 드래그앤드롭하거나, 클립보드를 통해 데이터또는 URL을 복사/붙여넣어 업로드할 수 있습니다.
                • 크롬브라우저의 경우, Alt(Option) 키를 누른 상태에서 브라우저 밖으로 드래그앤드롭하면 다운로드가 가능합니다.
                plugins/file-manager-advanced/application/library/js/i18n/help/pl.html.js000064400000002007147176754550022351 0ustar00

                Wskazówki Obsługi

                Działanie w interfejsie użytkownika jest podobne do standardowego menedżera plików systemu operacyjnego. Jednak Przeciąganie i Upuszczanie nie jest możliwe w przeglądarkach mobilnych.

                • Kliknij prawym przyciskiem myszy lub dłużej, aby wyświetlić menu kontekstowe.
                • Przeciągnij i upuść w drzewie folderów lub bieżącym obszarze roboczym, aby przenieść/kopiować elementy.
                • Wybór elementu w obszarze roboczym można rozszerzyć wybór z klawiszem Shift lub Alt(Opcja).
                • Przeciągnij i Upuść do folderu docelowego lub obszaru roboczego, aby przesłać pliki i foldery.
                • W oknie dialogowym przesyłania można zaakceptować wklejanie/upuszczanie danych schowka lub listy adresów URL, i Przeciągnij i Upuść z innych przeglądarek lub menedżerów plików, itp.
                • Rozpocznij Przeciąganie naciskając Alt (Opcja), aby przeciągnąć na zewnątrz przeglądarki. Stanie się operacją pobierania z Google Chrome.
                plugins/file-manager-advanced/application/library/js/i18n/help/ru.html.js000064400000003105147176754550022364 0ustar00

                Советы по работе

                Работа с пользовательским интерфейсом похожа на стандартный файловый менеджер операционной системы. Однако перетаскивание в мобильных браузерах невозможно.

                • Щелкните правой кнопкой мыши или используйте «длинный тап», чтобы отобразить контекстное меню.
                • Перетащите в дерево папок или текущую рабочую область для перемещения / копирования элементов.
                • Выбор элемента в рабочей области может быть расширен с помощью клавиши Shift или Alt (Option).
                • Перетащите в папку назначения или рабочую область для загрузки файлов и папок.
                • В диалоговом окне загрузки можно использовать вставку данных или списков URL-адресов из буфера обмена, а также перетаскивать из других браузеров или файловых менеджеров и т.д.
                • Начните перетаскивание, нажав Alt (Option), чтобы перетащить за пределы браузера. Это запустить процесс скачивания в Google Chrome.
                plugins/file-manager-advanced/application/library/js/i18n/help/sk.html.js000064400000001745147176754550022363 0ustar00

                Tipy na obsluhu

                Obsluha na používateľskom rozhraní je podobná štandardnému správcovi súborov operačného systému. Drag and Drop však nie je možné používať s mobilnými prehliadačmi.

                • Kliknutím pravým tlačidlom alebo dlhým klepnutím zobrazíte kontextové menu.
                • Presuňte myšou do stromu priečinkov alebo do aktuálneho pracovného priestoru a presuňte / kopírujte položky.
                • Výber položky v pracovnom priestore môžete rozšíriť pomocou klávesov Shift alebo Alt (Možnosť).
                • Premiestnite súbory a priečinky do cieľovej zložky alebo do pracovného priestoru.
                • Dialog odovzdávania môže prijímať dáta schránky alebo zoznamy adries URL a pritiahnuť a odísť z iných prehliadačov alebo správcov súborov.
                • Potiahnutím spustite stlačením klávesu Alt (Možnosť) pretiahnite do vonkajšieho prehliadača. Táto funkcia sa prevezme pomocou prehliadača Google Chrome.
                plugins/file-manager-advanced/application/library/js/i18n/help/tr.html.js000064400000001652147176754550022370 0ustar00

                İşlem İpuçları

                Kullanıcı arayüzündeki işlem, işletim sisteminin standart dosya yöneticisine benzer. Ancak Sürükle ve Bırak özelliği mobil tarayıcılarda mümkün değildir.

                • Bağlam menüsünü göstermek için sağ tıklayın veya uzun dokunun.
                • Öğeleri taşımak/kopyalamak için klasör ağacına veya geçerli çalışma alanına sürükleyip bırakın.
                • Çalışma alanındaki öğe seçimi Shift veya Alt (Seçenek) tuşuyla genişletilebilir.
                • Dosya ve klasör yüklemek için hedef klasöre veya çalışma alanına sürükleyip bırakın.
                • Yükleme iletişim kutusu, pano verilerini veya URL listelerini yapıştırma/bırakma ve diğer tarayıcı veya dosya yöneticilerinden Sürükle ve Bırak vb.
                • Dış tarayıcıya sürüklemek için Alt (Seçenek) tuşuna basarak sürükleyin. Google Chrome ile indirme işlemi olacak.
                plugins/file-manager-advanced/application/library/js/i18n/elfinder.ar.js000064400000115441147176754550022243 0ustar00/** * الترجمة العربية * @author Khamis Alqutob * @author Tawfek Daghistani * @author Atef Ben Ali * @version 2020-12-03 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.ar = { translator : 'Khamis Alqutob <alqutob@outlook.com>, Tawfek Daghistani <tawfekov@gmail.com>, Atef Ben Ali <atef.bettaib@gmail.com>', language : 'Arabic', direction : 'rtl', dateFormat : 'M d, Y h:i A', // will show like: Aug 24, 2018 04:39 PM fancyDateFormat : '$1 h:i A', // will show like: Today 04:39 PM nonameDateFormat : 'ymd-His', // noname upload will show like: 180824-163916 messages : { /********************************** errors **********************************/ 'error' : 'خطأ', 'errUnknown' : 'خطأ غير معروف .', 'errUnknownCmd' : 'أمر غير معروف .', 'errJqui' : 'تكوين jQuery UI غير صالح. يجب تضمين المكونات القابلة للتحديد والقابلة للسحب والإفلات', 'errNode' : 'يتطلب elFinder إنشاء عنصر DOM.', 'errURL' : 'تكوين elFinder غير صالح ! لم يتم تعيين خيار رابط URL', 'errAccess' : 'الوصول مرفوض .', 'errConnect' : 'تعذر الاتصال مع خادم الخلفية', 'errAbort' : 'تم فصل الإتصال', 'errTimeout' : 'نفذ وقت الاتصال.', 'errNotFound' : 'الخادوم الخلفي غير موجود .', 'errResponse' : 'رد غير مقبول من الخادوم الخلفي', 'errConf' : 'خطأ في الإعدادات الخاصة بالخادوم الخلفي ', 'errJSON' : 'موديول PHP JSON module غير مثبت ', 'errNoVolumes' : 'الأحجام المقروءة غير متوفرة', 'errCmdParams' : 'معلمات غير صالحة للأمر "$1".', 'errDataNotJSON' : 'البيانات ليست من نوع JSON ', 'errDataEmpty' : 'البيانات فارغة', 'errCmdReq' : 'الخادوم الخلفي يتطلب اسم الأمر ', 'errOpen' : 'غير قادر على فتح "$1".', 'errNotFolder' : 'العنصر ليس مجلد', 'errNotFile' : 'العنصر ليس ملف', 'errRead' : 'غير قادر على قراءة "$1".', 'errWrite' : 'غير قادر على الكتابة في "$1".', 'errPerm' : 'وصول مرفوض ', 'errLocked' : '"$1" مقفل ولا يمكن إعادة تسميته أو نقله أو إزالته.', 'errExists' : 'العنصر الذي يحمل الاسم "$1" موجود مسبقاً.', 'errInvName' : 'اسم الملف غير صالح', 'errInvDirname' : 'اسم مجلد غير صالح', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : 'المجلد غير موجود', 'errFileNotFound' : 'الملف غير موجود', 'errTrgFolderNotFound' : 'المجلد الهدف "$1" غير موجود ', 'errPopup' : 'المتصفح منع من فتح نافذة منبثقة. لفتح ملف ، قم بتمكينه في خيارات المتصفح', 'errMkdir' : ' غير قادر على إنشاء مجلد "$1".', 'errMkfile' : ' غير قادر على إنشاء ملف "$1".', 'errRename' : 'غير قادر على إعادة تسمية "$1".', 'errCopyFrom' : 'نسخ الملفات من الدليل "$1" غير مسموح.', 'errCopyTo' : 'نسخ الملفات إلى الدليل "$1" غير مسموح .', 'errMkOutLink' : 'تعذر إنشاء رابط إلى خارج جذر الدليل.', // from v2.1 added 03.10.2015 'errUpload' : 'خطأ في عملية الرفع.', // old name - errUploadCommon 'errUploadFile' : 'غير قادر على رفع "$1".', // old name - errUpload 'errUploadNoFiles' : 'لم يتم العثور على ملفات للتحميل .', 'errUploadTotalSize' : 'البيانات تتجاوز الحد الأقصى للحجم المسموح به.', // old name - errMaxSize 'errUploadFileSize' : 'تجاوز الملف الحد الأقصى للحجم المسموح به.', // old name - errFileMaxSize 'errUploadMime' : 'نوع الملف غير مسموح به.', 'errUploadTransfer' : '"$1" خطأ نقل.', 'errUploadTemp' : 'تعذر إنشاء ملف مؤقت للتحميل .', // from v2.1 added 26.09.2015 'errNotReplace' : 'الكائن "$1" موجود بالفعل في هذا الموقع ولا يمكن استبداله بكائن بنوع آخر.', // new 'errReplace' : 'غير قادر على استبدال "$1".', 'errSave' : 'غير قادر على حفظ "$1".', 'errCopy' : 'غير قادر على نسخ "$1".', 'errMove' : 'غير قادر على نقل "$1".', 'errCopyInItself' : 'غير قادر على نسخ "$1" داخل نفسه.', 'errRm' : 'غير قادر على إزالة "$1".', 'errTrash' : 'غير قادر في سلة المهملات', // from v2.1.24 added 30.4.2017 'errRmSrc' : 'تعذر إزالة ملف (ملفات) المصدر.', 'errExtract' : 'غير قادر على استخراج الملفات من "$1".', 'errArchive' : 'غير قادر على إنشاء ملف مضغوط.', 'errArcType' : 'نوع الملف المضغوط غير مدعوم.', 'errNoArchive' : 'هذا الملف ليس ملف مضغوط أو ذو صيغة غير مدعومة.', 'errCmdNoSupport' : 'الخادوم الخلفي لا يدعم هذا الأمر ', 'errReplByChild' : 'لا يمكن استبدال المجلد "$1" بعنصر محتوِ فيه.', 'errArcSymlinks' : 'لأسباب أمنية ، تم رفض فك ضغط الأرشيفات التي تحتوي على روابط رمزية أو ملفات بأسماء غير مسموح بها.', // edited 24.06.2012 'errArcMaxSize' : 'تتجاوز ملفات الأرشيف الحجم الأقصى المسموح به.', 'errResize' : 'تعذر تغيير حجم "$1".', 'errResizeDegree' : 'درجة تدوير غير صالحة.', // added 7.3.2013 'errResizeRotate' : 'تعذر تدوير الصورة.', // added 7.3.2013 'errResizeSize' : 'حجم الصورة غير صالح.', // added 7.3.2013 'errResizeNoChange' : 'حجم الصورة لم يتغير.', // added 7.3.2013 'errUsupportType' : 'نوع ملف غير مدعوم.', 'errNotUTF8Content' : 'الملف "$1" ليس بتنسيق UTF-8 ولا يمكن تحريره.', // added 9.11.2011 'errNetMount' : 'غير قادر على التثبيت "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'بروتوكول غير مدعوم.', // added 17.04.2012 'errNetMountFailed' : 'فشل التثبيت.', // added 17.04.2012 'errNetMountHostReq' : 'المضيف مطلوب.', // added 18.04.2012 'errSessionExpires' : 'انتهت جلسة العمل الخاصة بك بسبب عدم الفاعلية.', 'errCreatingTempDir' : 'تعذر إنشاء دليل مؤقت: "$1"', 'errFtpDownloadFile' : 'تعذر تنزيل الملف من FTP: "$1"', 'errFtpUploadFile' : 'تعذر تحميل الملف إلى FTP: "$1"', 'errFtpMkdir' : 'تعذر إنشاء دليل عن بعد في FTP: "$1"', 'errArchiveExec' : 'خطأ أثناء أرشفة الملفات: "$1"', 'errExtractExec' : 'خطأ أثناء استخراج الملفات: "$1"', 'errNetUnMount' : 'غير قادر على فك التثبيت.', // from v2.1 added 30.04.2012 'errConvUTF8' : 'غير قابل للتحويل إلى UTF-8', // from v2.1 added 08.04.2014 'errFolderUpload' : 'جرب المتصفح الحديث ، إذا كنت ترغب في تحميل المجلد.', // from v2.1 added 26.6.2015 'errSearchTimeout' : 'انتهت المهلة أثناء البحث "$1". نتيجة البحث جزئية.', // from v2.1 added 12.1.2016 'errReauthRequire' : 'مطلوب إعادة التفويض.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'الحد الأقصى لعدد العناصر القابلة للتحديد هو $1.', // from v2.1.17 added 17.10.2016 'errRestore' : 'غير قادر على الاستعادة من سلة المهملات. لا يمكن تحديد وجهة الاستعادة.', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'لم يتم العثور على المحرر لهذا النوع من الملفات.', // from v2.1.25 added 23.5.2017 'errServerError' : 'حدث خطأ من جانب الخادم.', // from v2.1.25 added 16.6.2017 'errEmpty' : 'تعذر إفراغ المجلد "$1".', // from v2.1.25 added 22.6.2017 'moreErrors' : 'يوجد $1 أخطاء إضافية.', // from v2.1.44 added 9.12.2018 /******************************* commands names ********************************/ 'cmdarchive' : 'إنشاء أرشيف', 'cmdback' : 'العودة', 'cmdcopy' : 'نسخ', 'cmdcut' : 'قص', 'cmddownload' : 'تنزيل', 'cmdduplicate' : 'تكرار', 'cmdedit' : 'تحرير الملف', 'cmdextract' : 'إستخراج الملفات من الأرشيف', 'cmdforward' : 'الأمام', 'cmdgetfile' : 'اختيار الملفات', 'cmdhelp' : 'عن هذه البرمجية', 'cmdhome' : 'الجذر', 'cmdinfo' : 'الحصول على المعلومات ', 'cmdmkdir' : 'مجلد جديد', 'cmdmkdirin' : 'داخل مجلد جديد', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'ملف جديد', 'cmdopen' : 'فتح', 'cmdpaste' : 'لصق', 'cmdquicklook' : 'معاينة', 'cmdreload' : 'إعادة تحميل', 'cmdrename' : 'إعادة تسمية', 'cmdrm' : 'حذف', 'cmdtrash' : 'داخل سلة المهملات', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'إستعادة', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'بحث عن ملفات', 'cmdup' : 'انتقل إلى المجلد الأصل', 'cmdupload' : 'رفع ملفات', 'cmdview' : 'عرض', 'cmdresize' : 'تغيير الحجم والتدوير', 'cmdsort' : 'فرز', 'cmdnetmount' : 'تثبيت حجم الشبكة', // added 18.04.2012 'cmdnetunmount': 'إلغاء التثبيت', // from v2.1 added 30.04.2012 'cmdplaces' : 'الى الاماكن', // added 28.12.2014 'cmdchmod' : 'تغيير النمط', // from v2.1 added 20.6.2015 'cmdopendir' : 'فتح مجلد', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'إعادة تعيين عرض العمود', // from v2.1.13 added 12.06.2016 'cmdfullscreen': 'ملء الشاشة', // from v2.1.15 added 03.08.2016 'cmdmove' : 'نقل', // from v2.1.15 added 21.08.2016 'cmdempty' : 'تفريغ المجلد', // from v2.1.25 added 22.06.2017 'cmdundo' : 'تراجع', // from v2.1.27 added 31.07.2017 'cmdredo' : 'إعادة', // from v2.1.27 added 31.07.2017 'cmdpreference': 'التفضيلات', // from v2.1.27 added 03.08.2017 'cmdselectall' : 'تحديد الكل', // from v2.1.28 added 15.08.2017 'cmdselectnone': 'تحديد لا شيء', // from v2.1.28 added 15.08.2017 'cmdselectinvert': 'عكس الاختيار', // from v2.1.28 added 15.08.2017 'cmdopennew' : 'فتح في نافذة جديدة', // from v2.1.38 added 3.4.2018 'cmdhide' : 'إخفاء (الأفضلية)', // from v2.1.41 added 24.7.2018 /*********************************** buttons ***********************************/ 'btnClose' : 'إغلاق', 'btnSave' : 'حفظ', 'btnRm' : 'إزالة', 'btnApply' : 'تطبيق', 'btnCancel' : 'إلغاء', 'btnNo' : 'لا', 'btnYes' : 'نعم', 'btnMount' : 'تثبيت', // added 18.04.2012 'btnApprove': 'انتقل إلى $1 والموافقة', // from v2.1 added 26.04.2012 'btnUnmount': 'إلغاء التثبيت', // from v2.1 added 30.04.2012 'btnConv' : 'تحويل', // from v2.1 added 08.04.2014 'btnCwd' : 'هنا', // from v2.1 added 22.5.2015 'btnVolume' : 'الحجم', // from v2.1 added 22.5.2015 'btnAll' : 'الكل', // from v2.1 added 22.5.2015 'btnMime' : 'نوع MIME', // from v2.1 added 22.5.2015 'btnFileName':'إسم الملف', // from v2.1 added 22.5.2015 'btnSaveClose': 'حفظ وإغلاق', // from v2.1 added 12.6.2015 'btnBackup' : 'نسخ احتياطي', // fromv2.1 added 28.11.2015 'btnRename' : 'إعادة تسمية', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'إعادة تسمية (الجميع)', // from v2.1.24 added 6.4.2017 'btnPrevious' : '($1/$2) السابق', // from v2.1.24 added 11.5.2017 'btnNext' : '($1/$2) التالي', // from v2.1.24 added 11.5.2017 'btnSaveAs' : 'حفظ كــ', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'فتح مجلد', 'ntffile' : 'فتح ملف', 'ntfreload' : 'إعادة تحميل محتوى المجلد', 'ntfmkdir' : 'إنشاء مجلد', 'ntfmkfile' : 'إنشاء ملفات', 'ntfrm' : 'حذف العناصر', 'ntfcopy' : 'نسخ العناصر', 'ntfmove' : 'نقل االعناصر', 'ntfprepare' : 'فحص العناصر الموجودة', 'ntfrename' : 'إعادة تسمية الملفات', 'ntfupload' : 'تحميل الملفات', 'ntfdownload' : 'تنزيل الملفات', 'ntfsave' : 'حفظ الملفات', 'ntfarchive' : 'إنشاء أرشيف', 'ntfextract' : 'استخراج ملفات من الأرشيف', 'ntfsearch' : 'البحث في الملفات', 'ntfresize' : 'تغيير حجم الصور', 'ntfsmth' : 'القيام بشيء ما', 'ntfloadimg' : 'تحميل الصورة', 'ntfnetmount' : 'تثبيت حجم الشبكة', // added 18.04.2012 'ntfnetunmount': 'إلغاء تثبيت حجم الشبكة', // from v2.1 added 30.04.2012 'ntfdim' : 'اكتساب أبعاد الصورة', // added 20.05.2013 'ntfreaddir' : 'قراءة معلومات المجلد', // from v2.1 added 01.07.2013 'ntfurl' : 'الحصول على URL الرابط', // from v2.1 added 11.03.2014 'ntfchmod' : 'تغيير نمط الملف', // from v2.1 added 20.6.2015 'ntfpreupload': 'التحقق من اسم ملف التحميل', // from v2.1 added 31.11.2015 'ntfzipdl' : 'إنشاء ملف للتنزيل', // from v2.1.7 added 23.1.2016 'ntfparents' : 'الحصول على معلومات المسار', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'معالجة الملف المرفوع', // from v2.1.17 added 2.11.2016 'ntftrash' : 'القيام بالرمي في القمامة', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'القيام بالاستعادة من سلة المهملات', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'التحقق من مجلد الوجهة', // from v2.1.24 added 3.5.2017 'ntfundo' : 'التراجع عن العملية السابقة', // from v2.1.27 added 31.07.2017 'ntfredo' : 'إعادة التراجع السابق', // from v2.1.27 added 31.07.2017 'ntfchkcontent' : 'فحص المحتويات', // from v2.1.41 added 3.8.2018 /*********************************** volumes *********************************/ 'volume_Trash' : 'Trash', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : 'غير معلوم', 'Today' : 'اليوم', 'Yesterday' : 'الأمس', 'msJan' : 'كانون الثاني', 'msFeb' : 'شباط', 'msMar' : 'آذار', 'msApr' : 'نيسان', 'msMay' : 'أيار', 'msJun' : 'حزيران', 'msJul' : 'تموز', 'msAug' : 'آب', 'msSep' : 'أيلول', 'msOct' : 'تشرين الأول', 'msNov' : 'تشرين الثاني', 'msDec' : 'كانون الأول ', 'January' : 'كانون الثاني', 'February' : 'شباط', 'March' : 'آذار', 'April' : 'نيسان', 'May' : 'أيار', 'June' : 'حزيران', 'July' : 'تموز', 'August' : 'آب', 'September' : 'أيلول', 'October' : 'تشرين الأول', 'November' : 'تشرين الثاني', 'December' : 'كانون الثاني', 'Sunday' : 'الأحد', 'Monday' : 'الاثنين', 'Tuesday' : 'الثلاثاء', 'Wednesday' : 'الإربعاء', 'Thursday' : 'الخميس', 'Friday' : 'الجمعة', 'Saturday' : 'السبت', 'Sun' : 'الأحد', 'Mon' : 'الاثنين', 'Tue' : 'الثلاثاء', 'Wed' : 'الإربعاء', 'Thu' : 'الخميس', 'Fri' : 'الجمعة', 'Sat' : 'السبت', /******************************** sort variants ********************************/ 'sortname' : 'حسب الاسم', 'sortkind' : 'حسب النوع', 'sortsize' : 'حسب الحجم', 'sortdate' : 'حسب التاريخ', 'sortFoldersFirst' : 'المجلدات أولا', 'sortperm' : 'حسب الصلاحية', // from v2.1.13 added 13.06.2016 'sortmode' : 'حسب النمط', // from v2.1.13 added 13.06.2016 'sortowner' : 'حسب المالك', // from v2.1.13 added 13.06.2016 'sortgroup' : 'حسب المجموعة', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'أيضا عرض الشجرة', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'file.txt بدون عنوان' : 'NewFile.txt', // added 10.11.2015 'مجلد بلا عنوان' : 'NewFolder', // added 10.11.2015 'Archive' : 'NewArchive', // from v2.1 added 10.11.2015 'untitled file' : 'NewFile.$1', // from v2.1.41 added 6.8.2018 'extentionfile' : '$1: ملف', // from v2.1.41 added 6.8.2018 'extentiontype' : '$1: $2', // from v2.1.43 added 17.10.2018 /********************************** messages **********************************/ 'confirmReq' : 'التأكيد مطلوب', 'confirmRm' : 'هل تريد بالتأكيد إزالة العناصر نهائيًا؟
                لا يمكن التراجع عن هذا الإجراء! ', 'confirmRepl' : 'استبدال الملف القديم بملف جديد؟ (إذا كان يحتوي على مجلدات ، فسيتم دمجه. للنسخ الاحتياطي والاستبدال ، حدد النسخ الاحتياطي.)', 'confirmRest' : 'هل تريد استبدال العنصر الموجود بالعنصر الموجود في المهملات؟', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'ليس بصيغة UTF-8
                التحويل إلى UTF-8؟
                تصبح المحتويات UTF-8 بالحفظ بعد التحويل.', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'تعذر الكشف عن ترميز الأحرف لهذا الملف. تحتاج إلى التحويل مؤقتاً إلى UTF-8 للتحرير.
                الرجاء تحديد ترميز الأحرف لهذا الملف.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : 'لقد تم تعديله.
                قد تخسر العمل إذا لم تقم بحفظ التغييرات.', // from v2.1 added 15.7.2015 'confirmTrash' : 'هل أنت متأكد أنك تريد نقل العناصر إلى سلة المهملات؟', //from v2.1.24 added 29.4.2017 'confirmMove' : 'هل أنت متأكد أنك تريد نقل العناصر إلى "$1"?', //from v2.1.50 added 27.7.2019 'apllyAll' : 'تطبيق على الكل', 'name' : 'الاسم', 'size' : 'الحجم', 'perms' : 'الصلاحيات', 'modify' : 'التعديل', 'kind' : 'النوع', 'read' : 'قابل للقراءة', 'write' : 'قابل للكتابة', 'noaccess' : 'وصول ممنوع', 'and' : 'و', 'unknown' : 'غير معروف', 'selectall' : 'تحديد كل العناصر', 'selectfiles' : 'تحديد العناصر', 'selectffile' : 'تحديد العنصر الأول', 'selectlfile' : 'تحديد العنصر الأخير', 'viewlist' : 'عرض القائمة', 'viewicons' : 'عرض أيْقونات', 'viewSmall' : 'أيقونات صغيرة', // from v2.1.39 added 22.5.2018 'viewMedium' : 'أيقونات متوسطة', // from v2.1.39 added 22.5.2018 'viewLarge' : 'أيقونات كبيرة', // from v2.1.39 added 22.5.2018 'viewExtraLarge' : 'أيقونات كبيرة جداً', // from v2.1.39 added 22.5.2018 'places' : 'المواقع', 'calc' : 'حساب', 'path' : 'المسار', 'aliasfor' : 'اسم مستعار لـ', 'locked' : 'مقفل', 'dim' : 'الأبعاد', 'files' : 'ملفات', 'folders' : 'مجلدات', 'items' : 'عناصر', 'yes' : 'نعم', 'no' : 'لا', 'link' : 'الرابط', 'searcresult' : 'نتائج البحث', 'selected' : 'العناصر المحددة', 'about' : 'حول', 'shortcuts' : 'الاختصارات', 'help' : 'المساعدة', 'webfm' : 'مدير ملفات الويب', 'ver' : 'الإصدار', 'protocolver' : 'إصدار البرتوكول', 'homepage' : 'رئيسية المشروع', 'docs' : 'الوثائق', 'github' : 'شاركنا على Github', 'twitter' : 'تابعنا على تويتر', 'facebook' : 'انضم إلينا على الفيس بوك', 'team' : 'الفريق', 'chiefdev' : 'رئيس المبرمجين', 'developer' : 'مبرمج', 'contributor' : 'مساهم', 'maintainer' : 'مشرف', 'translator' : 'مترجم', 'icons' : 'أيقونات', 'dontforget' : 'ولا تنس أن تأخذ المنشفة', 'shortcutsof' : 'الاختصارات غير مفعلة', 'dropFiles' : 'إفلات الملفات هنا', 'or' : 'أو', 'selectForUpload' : 'اختر الملفات', 'moveFiles' : 'نقل العناصر', 'copyFiles' : 'نسخ العناصر', 'restoreFiles' : 'استعادة العناصر', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'إزالة من الأماكن', 'aspectRatio' : 'ابعاد متزنة', 'scale' : 'مقياس', 'width' : 'عرض', 'height' : 'طول', 'resize' : 'تغيير الحجم', 'crop' : 'قص', 'rotate' : 'تدوير', 'rotate-cw' : 'استدارة 90 درجة مع عقارب الساعة', 'rotate-ccw' : 'استدارة 90 درجة عكس عقارب الساعة', 'degree' : '°', 'netMountDialogTitle' : 'تثبيت حجم الشبكة', // added 18.04.2012 'protocol' : 'البروتوكول', // added 18.04.2012 'host' : 'المضيف', // added 18.04.2012 'port' : 'المنفذ', // added 18.04.2012 'user' : 'المستخدم', // added 18.04.2012 'pass' : 'كلمة المرور', // added 18.04.2012 'confirmUnmount' : 'هل أنت متأكد من إلغاء تثبيت $1؟', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'قم بإسقاط أو لصق الملفات من المتصفح', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'قم بإسقاط الملفات أو لصق الروابط أو الصور (الحافظة) هنا', // from v2.1 added 07.04.2014 'encoding' : 'الترميز', // from v2.1 added 19.12.2014 'locale' : 'اللغة', // from v2.1 added 19.12.2014 'searchTarget' : 'الهدف: $1', // from v2.1 added 22.5.2015 'searchMime' : 'البحث عن طريق إدخال نوع MIME', // from v2.1 added 22.5.2015 'owner' : 'المالك', // from v2.1 added 20.6.2015 'group' : 'المجموعة', // from v2.1 added 20.6.2015 'other' : 'أخرى', // from v2.1 added 20.6.2015 'execute' : 'تنفيذ', // from v2.1 added 20.6.2015 'perm' : 'التصريح', // from v2.1 added 20.6.2015 'mode' : 'النمط', // from v2.1 added 20.6.2015 'emptyFolder' : 'المجلد فارغ', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'المجلد فارغ\\إفلات لإضافة عناصر', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'المجلد فارغ\\نقرة طويلة لإضافة العناصر', // from v2.1.6 added 30.12.2015 'quality' : 'النوعية', // from v2.1.6 added 5.1.2016 'autoSync' : 'مزامنة آلية', // from v2.1.6 added 10.1.2016 'moveUp' : 'تحريك لأعلى', // from v2.1.6 added 18.1.2016 'getLink' : 'الحصول على رابط URL', // from v2.1.7 added 9.2.2016 'selectedItems' : 'العناصر المحددة ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'معرف المجلد', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'السماح بالوصول دون اتصال', // from v2.1.10 added 3.25.2016 'reAuth' : 'لإعادة المصادقة', // from v2.1.10 added 3.25.2016 'nowLoading' : 'جاري التحميل الآن...', // from v2.1.12 added 4.26.2016 'openMulti' : 'فتح ملفات متعددة', // from v2.1.12 added 5.14.2016 'openMultiConfirm': 'أنت تحاول فتح $1 ملف. هل أنت متأكد أنك تريد الفتح في المتصفح؟', // from v2.1.12 added 5.14.2016 'emptySearch' : 'نتائج البحث فارغة في هدف البحث.', // from v2.1.12 added 5.16.2016 'editingFile' : 'إنها تقوم بتحرير ملف.', // from v2.1.13 added 6.3.2016 'hasSelected' : 'لقد قمت بتحديد $1 عناصر.', // from v2.1.13 added 6.3.2016 'hasClipboard' : 'يوجد لديك $1 عناصر في الحافظة.', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'البحث المتزايد هو فقط من العرض الحالي.', // from v2.1.13 added 6.30.2016 'reinstate' : 'إعادة', // from v2.1.15 added 3.8.2016 'complete' : '$1 إكتمل', // from v2.1.15 added 21.8.2016 'contextmenu' : 'قائمة السياق', // from v2.1.15 added 9.9.2016 'pageTurning' : 'قلب الصفحة', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'جذور الحجم', // from v2.1.16 added 16.9.2016 'reset' : 'إعادة تعيين', // from v2.1.16 added 1.10.2016 'bgcolor' : 'لون الخلفية', // from v2.1.16 added 1.10.2016 'colorPicker' : 'أداة انتقاء اللون', // from v2.1.16 added 1.10.2016 '8pxgrid' : 'شبكة 8 بكسل', // from v2.1.16 added 4.10.2016 'enabled' : 'مفعل', // from v2.1.16 added 4.10.2016 'disabled' : 'معطل', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'نتائج البحث فارغة في العرض الحالي. \\ اضغط على [Enter] لتوسيع هدف البحث.', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'نتائج البحث الحرف الأول فارغة في العرض الحالي.', // from v2.1.23 added 24.3.2017 'textLabel' : 'تسمية نصية', // from v2.1.17 added 13.10.2016 'minsLeft' : '$1 دقائق باقية', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'إعادة فتح مع الترميز المحدد', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'حفظ مع الترميز المحدد', // from v2.1.19 added 2.12.2016 'selectFolder' : 'تحديد مجلد', // from v2.1.20 added 13.12.2016 'firstLetterSearch': 'البحث بالحرف الأول', // from v2.1.23 added 24.3.2017 'presets' : 'الإعدادات المسبقة', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : 'هناك عدد كبير جداً من العناصر لذا لا يمكن وضعها في سلة المهملات.', // from v2.1.25 added 9.6.2017 'TextArea' : 'منطقة النص', // from v2.1.25 added 14.6.2017 'folderToEmpty' : 'إفراغ المجلد "$1".', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : 'لا توجد عناصر في مجلد "$1".', // from v2.1.25 added 22.6.2017 'preference' : 'الأفضلية', // from v2.1.26 added 28.6.2017 'language' : 'اللغة', // from v2.1.26 added 28.6.2017 'clearBrowserData': 'تهيئة الإعدادات المحفوظة في هذا المتصفح', // from v2.1.26 added 28.6.2017 'toolbarPref' : 'إعدادات شريط الأدوات', // from v2.1.27 added 2.8.2017 'charsLeft' : '... $1 حروف متبقية.', // from v2.1.29 added 30.8.2017 'linesLeft' : '... $1 سطور متبقية.', // from v2.1.52 added 16.1.2020 'sum' : 'المجموع', // from v2.1.29 added 28.9.2017 'roughFileSize' : 'حجم ملف تقريبي', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : 'التركيز على عنصر الحوار مع تمرير الماوس', // from v2.1.30 added 2.11.2017 'select' : 'حدد', // from v2.1.30 added 23.11.2017 'selectAction' : 'الإجراء عند تحديد الملف', // from v2.1.30 added 23.11.2017 'useStoredEditor' : 'الفتح باستخدام المحرر المستخدم آخر مرة', // from v2.1.30 added 23.11.2017 'selectinvert' : 'عكس الاختيار', // from v2.1.30 added 25.11.2017 'renameMultiple' : 'هل أنت متأكد أنك تريد إعادة تسمية $1 عناصر محددة مثل $2؟
                هذا لا يمكن التراجع عنه !', // from v2.1.31 added 4.12.2017 'batchRename' : 'إعادة تسمية الحزمة', // from v2.1.31 added 8.12.2017 'plusNumber' : '+ رقم', // from v2.1.31 added 8.12.2017 'asPrefix' : 'إضافة بادئة', // from v2.1.31 added 8.12.2017 'asSuffix' : 'إضافة لاحقة', // from v2.1.31 added 8.12.2017 'changeExtention' : 'تغيير الامتداد', // from v2.1.31 added 8.12.2017 'columnPref' : 'إعدادات الأعمدة (عرض القائمة)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : 'ستنعكس جميع التغييرات على الفور على الأرشيف.', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : 'لن تنعكس أي تغييرات حتى يتم فك هذا المجلد.', // from v2.1.33 added 2.3.2018 'unmountChildren' : 'المجلد (المجلدات) التالية المركبة على هذا المجلد غير مثبتة أيضاً. هل أنت متأكد من إلغاء تحميله؟', // from v2.1.33 added 5.3.2018 'selectionInfo' : 'معلومات التحديد', // from v2.1.33 added 7.3.2018 'hashChecker' : 'خوارزميات لإظهار تجزئة الملف', // from v2.1.33 added 10.3.2018 'infoItems' : 'عناصر المعلومات (لوحة معلومات التحديد)', // from v2.1.38 added 28.3.2018 'pressAgainToExit': 'اضغط مرة أخرى للخروج.', // from v2.1.38 added 1.4.2018 'toolbar' : 'شريط الأدوات', // from v2.1.38 added 4.4.2018 'workspace' : 'مساحة العمل', // from v2.1.38 added 4.4.2018 'dialog' : 'الحوار', // from v2.1.38 added 4.4.2018 'all' : 'الكل', // from v2.1.38 added 4.4.2018 'iconSize' : 'حجم الأيقونة (عرض الأيقونات)', // from v2.1.39 added 7.5.2018 'editorMaximized' : 'افتح نافذة المحرر المكبرة', // from v2.1.40 added 30.6.2018 'editorConvNoApi' : 'نظراً لعدم توفر التحويل بواسطة API حالياً ، يرجى التحويل على موقع الويب.', //from v2.1.40 added 8.7.2018 'editorConvNeedUpload' : 'بعد التحويل ، يجب أن تقوم بالتحميل مع عنوان رابط العنصر أو الملف الذي تم تنزيله لحفظ الملف المحول.', //from v2.1.40 added 8.7.2018 'convertOn' : 'تحويل على موقع $1', // from v2.1.40 added 10.7.2018 'integrations' : 'تكاملات', // from v2.1.40 added 11.7.2018 'integrationWith' : 'يحتوي elFinder على الخدمات الخارجية التالية المتكاملة. يرجى التحقق من شروط الاستخدام وسياسة الخصوصية وما إلى ذلك قبل استخدامها.', // from v2.1.40 added 11.7.2018 'showHidden' : 'إظهار العناصر المخفية', // from v2.1.41 added 24.7.2018 'hideHidden' : 'إخفاء العناصر المخفية', // from v2.1.41 added 24.7.2018 'toggleHidden' : 'إظهار / إخفاء العناصر المخفية', // from v2.1.41 added 24.7.2018 'makefileTypes' : 'أنواع الملفات لتفعيلها مع "ملف جديد"', // from v2.1.41 added 7.8.2018 'typeOfTextfile' : 'نوع الملف النصي', // from v2.1.41 added 7.8.2018 'add' : 'إضافة', // from v2.1.41 added 7.8.2018 'theme' : 'الثيم', // from v2.1.43 added 19.10.2018 'default' : 'الافتراضي', // from v2.1.43 added 19.10.2018 'description' : 'الوصف', // from v2.1.43 added 19.10.2018 'website' : 'الموقع الالكتروني', // from v2.1.43 added 19.10.2018 'author' : 'المؤلف', // from v2.1.43 added 19.10.2018 'email' : 'البريد الالكتروني', // from v2.1.43 added 19.10.2018 'license' : 'الرخصة', // from v2.1.43 added 19.10.2018 'exportToSave' : 'لا يمكن حفظ هذا العنصر. لتجنب فقدان التحريرات التي تحتاجها للتصدير إلى جهاز الكمبيوتر الخاص بك.', // from v2.1.44 added 1.12.2018 'dblclickToSelect': 'انقر نقراً مزدوجاً فوق الملف لتحديده.', // from v2.1.47 added 22.1.2019 'useFullscreen' : 'استخدام وضع ملء الشاشة', // from v2.1.47 added 19.2.2019 /********************************** mimetypes **********************************/ 'kindUnknown' : 'غير معروف', 'kindRoot' : 'جذر الحجم', // from v2.1.16 added 16.10.2016 'kindFolder' : 'مجلد', 'kindSelects' : 'مختارات', // from v2.1.29 added 29.8.2017 'kindAlias' : 'اسم مستعار', 'kindAliasBroken' : 'اسم مستعار مكسور', // applications 'kindApp' : 'التطبيق', 'kindPostscript' : 'وثيقة Postscript', 'kindMsOffice' : 'وثيقة Microsoft Office', 'kindMsWord' : 'وثيقة Microsoft Word', 'kindMsExcel' : 'وثيقة Microsoft Excel', 'kindMsPP' : 'عرض تقديمي Microsoft Powerpoint', 'kindOO' : 'وثيقة Open Office', 'kindAppFlash' : 'تطبيق فلاش', 'kindPDF' : 'تنسيق الوثائق المحمولة (PDF)', 'kindTorrent' : 'ملف Bittorrent ', 'kind7z' : 'أرشيف 7z', 'kindTAR' : 'أرشيف TAR', 'kindGZIP' : 'أرشيف GZIP', 'kindBZIP' : 'أرشيف BZIP', 'kindXZ' : 'أرشيف XZ', 'kindZIP' : 'أرشيف ZIP', 'kindRAR' : 'أرشيف RAR', 'kindJAR' : 'أرشيف Java JAR', 'kindTTF' : 'خط True Type ', 'kindOTF' : 'خط Open Type ', 'kindRPM' : 'حزمة RPM', // texts 'kindText' : 'وثيقة نصية', 'kindTextPlain' : 'نص عادي', 'kindPHP' : 'مصدر PHP', 'kindCSS' : 'ورقة الأنماط المتتالية', 'kindHTML' : 'وثيقة HTML', 'kindJS' : 'مصدر Javascript', 'kindRTF' : 'Rich Text Format', 'kindC' : 'مصدر C', 'kindCHeader' : 'مصدر C header', 'kindCPP' : 'مصدر C++', 'kindCPPHeader' : 'مصدر C++ header', 'kindShell' : 'مصدر Unix shell', 'kindPython' : 'مصدر Python', 'kindJava' : 'مصدر Java', 'kindRuby' : 'مصدر Ruby', 'kindPerl' : 'مصدر Perl', 'kindSQL' : 'مصدر SQL', 'kindXML' : 'وثيقة XML', 'kindAWK' : 'مصدر AWK', 'kindCSV' : 'ملف CSV', 'kindDOCBOOK' : 'وثيقة Docbook XML', 'kindMarkdown' : 'نص Markdown', // added 20.7.2015 // images 'kindImage' : 'صورة', 'kindBMP' : 'صورة BMP', 'kindJPEG' : 'صورة JPEG', 'kindGIF' : 'صورة GIF', 'kindPNG' : 'صورة PNG', 'kindTIFF' : 'صورة TIFF', 'kindTGA' : 'صورة TGA', 'kindPSD' : 'صورة Adobe Photoshop', 'kindXBITMAP' : 'صورة X bitmap', 'kindPXM' : 'صورة Pixelmator', // media 'kindAudio' : 'وسائط صوت', 'kindAudioMPEG' : 'ملف صوتي MPEG ', 'kindAudioMPEG4' : 'ملف صوتي MPEG-4', 'kindAudioMIDI' : 'ملف صوتي MIDI', 'kindAudioOGG' : 'ملف صوتي Ogg Vorbis', 'kindAudioWAV' : 'ملف صوتي WAV', 'AudioPlaylist' : 'قائمة تشغيل MP3', 'kindVideo' : 'وسائط فيديو', 'kindVideoDV' : 'ملف فيديو DV', 'kindVideoMPEG' : 'ملف فيديو MPEG', 'kindVideoMPEG4' : 'ملف فيديو MPEG-4', 'kindVideoAVI' : 'ملف فيديو AVI', 'kindVideoMOV' : 'ملف فيديو Quick Time', 'kindVideoWM' : 'ملف فيديو Windows Media', 'kindVideoFlash' : 'ملف فيديو Flash', 'kindVideoMKV' : 'ملف فيديو Matroska', 'kindVideoOGG' : 'ملف فيديو Ogg' } }; })); plugins/file-manager-advanced/application/library/js/i18n/elfinder.bg.js000064400000117206147176754550022232 0ustar00/** * Bulgarian translation * @author Stamo Petkov * @author Nikolay Petkov * @version 2018-07-28 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.bg = { translator : 'Stamo Petkov <stamo.petkov@gmail.com>, Nikolay Petkov <office@cmstory.com>', language : 'Bulgarian', direction : 'ltr', dateFormat : 'd.m.Y H:i', // Mar 13, 2012 05:27 PM fancyDateFormat : '$1 H:i', // will produce smth like: Today 12:25 PM nonameDateFormat : 'Ymd-His', // to apply if upload file is noname: 120513172700 messages : { /********************************** errors **********************************/ 'error' : 'Грешка', 'errUnknown' : 'Непозната грешка.', 'errUnknownCmd' : 'Непозната команда.', 'errJqui' : 'Грешна конфигурация на jQuery UI. Компонентите selectable, draggable и droppable трябва да са включени.', 'errNode' : 'elFinder изисква да бъде създаден DOM елемент.', 'errURL' : 'Грешка в настройките на elFinder! не е зададена стойност на URL.', 'errAccess' : 'Достъп отказан.', 'errConnect' : 'Няма връзка със сървъра.', 'errAbort' : 'Връзката е прекъсната.', 'errTimeout' : 'Просрочена връзка.', 'errNotFound' : 'Сървърът не е намерен.', 'errResponse' : 'Грешен отговор от сървъра.', 'errConf' : 'Грешни настройки на сървъра.', 'errJSON' : 'Не е инсталиран модул на PHP за JSON.', 'errNoVolumes' : 'Няма дялове достъпни за четене.', 'errCmdParams' : 'Грешни параметри на командата "$1".', 'errDataNotJSON' : 'Данните не са JSON.', 'errDataEmpty' : 'Липсват данни.', 'errCmdReq' : 'Запитването от сървъра изисква име на команда.', 'errOpen' : 'Неуспешно отваряне на "$1".', 'errNotFolder' : 'Обектът не е папка.', 'errNotFile' : 'Обектът не е файл.', 'errRead' : 'Неуспешно прочитане на "$1".', 'errWrite' : 'Неуспешен запис в "$1".', 'errPerm' : 'Разрешение отказано.', 'errLocked' : '"$1" е заключен и не може да бъде преименуван, местен или премахван.', 'errExists' : 'Вече съществува файл с име "$1"', 'errInvName' : 'Грешно име на файл.', 'errInvDirname' : 'Невалидно име на папка.', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : 'Папката не е открита.', 'errFileNotFound' : 'Файлът не е открит.', 'errTrgFolderNotFound' : 'Целевата папка "$1" не е намерена.', 'errPopup' : 'Браузъра блокира отварянето на прозорец. За да отворите файла, разрешете отварянето в настройките на браузъра.', 'errMkdir' : 'Неуспешно създаване на папка "$1".', 'errMkfile' : 'Неуспешно създаване на файл "$1".', 'errRename' : 'Неуспешно преименуване на "$1".', 'errCopyFrom' : 'Копирането на файлове от том "$1" не е разрешено.', 'errCopyTo' : 'Копирането на файлове в том "$1" не е разрешено.', 'errMkOutLink' : 'Неуспех при създаване на връзка извън началото на ресурса.', // from v2.1 added 03.10.2015 'errUpload' : 'Грешка при качване.', // old name - errUploadCommon 'errUploadFile' : 'Неуспешно качване на "$1".', // old name - errUpload 'errUploadNoFiles' : 'Не са намерени файлове за качване.', 'errUploadTotalSize' : 'Данните превишават максимално допостумия размер.', // old name - errMaxSize 'errUploadFileSize' : 'Файлът превишава максимално допустимия размер.', // old name - errFileMaxSize 'errUploadMime' : 'Непозволен тип на файла.', 'errUploadTransfer' : '"$1" грешка при предаване.', 'errUploadTemp' : 'Неуспешно създаване на временен файл за качване.', // from v2.1 added 26.09.2015 'errNotReplace' : 'Обект "$1" вече съществува на това място и не може да бъде заменен от обект от друг тип.', // new 'errReplace' : 'Не може да се замени "$1".', 'errSave' : 'Не може да се запише "$1".', 'errCopy' : 'Не може да се копира "$1".', 'errMove' : 'Не може да се премести "$1".', 'errCopyInItself' : 'Не може да се копира "$1" върху самия него.', 'errRm' : 'Не може да се премахне "$1".', 'errTrash' : 'Не може да се премести в кошчето', // from v2.1.24 added 30.4.2017 'errRmSrc' : 'Не може да се премахне изходния файл(ове).', 'errExtract' : 'Не може да се извлекат файловете от "$1".', 'errArchive' : 'Не може да се създаде архив.', 'errArcType' : 'Неподдържан тип на архива.', 'errNoArchive' : 'Файлът не е архив или е от неподдържан тип.', 'errCmdNoSupport' : 'Сървъра не поддържа тази команда.', 'errReplByChild' : 'Папката “$1” не може да бъде заменена от съдържащ се в нея елемент.', 'errArcSymlinks' : 'От съображения за сигурност няма да бъдат разопаковани архиви съдържащи symlinks.', // edited 24.06.2012 'errArcMaxSize' : 'Архивните файлове превишават максимално допустимия размер.', 'errResize' : 'Не може да се преоразмери "$1".', 'errResizeDegree' : 'Невалиден градус за ротация.', // added 7.3.2013 'errResizeRotate' : 'Изображението не е ротирано.', // added 7.3.2013 'errResizeSize' : 'Невалиден размер на изображение.', // added 7.3.2013 'errResizeNoChange' : 'Размерът на изображението не е променен.', // added 7.3.2013 'errUsupportType' : 'Неподдържан тип на файл.', 'errNotUTF8Content' : 'Файл "$1" не е в UTF-8 формат и не може да бъде редактиран.', // added 9.11.2011 'errNetMount' : 'Не може да се монтира "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'Неподдържан протокол.', // added 17.04.2012 'errNetMountFailed' : 'Монтирането не е успешно.', // added 17.04.2012 'errNetMountHostReq' : 'Хост се изисква.', // added 18.04.2012 'errSessionExpires' : 'Сесията ви изтече поради липса на активност.', 'errCreatingTempDir' : 'Не може да се създаде временна директория: "$1"', 'errFtpDownloadFile' : 'Не може да се изтегли файл от FTP: "$1"', 'errFtpUploadFile' : 'Не може да се качи файл на FTP: "$1"', 'errFtpMkdir' : 'Не може да се създаде директория на FTP: "$1"', 'errArchiveExec' : 'Грешка при архивиране на файлове: "$1"', 'errExtractExec' : 'Грешка при разархивиране на файлове: "$1"', 'errNetUnMount' : 'Не може да се размонтира', // from v2.1 added 30.04.2012 'errConvUTF8' : 'Не е конвертируем до UTF-8', // from v2.1 added 08.04.2014 'errFolderUpload' : 'Опитайте Google Chrome, ако искате да качите папка.', // from v2.1 added 26.6.2015 'errSearchTimeout' : 'Времето изтече при търсенето на "$1". Резултатът от търсенето е частичен.', // from v2.1 added 12.1.2016 'errReauthRequire' : 'Необходимо е повторно оторизиране.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'Максималният брой избрани файлове е $ 1.', // from v2.1.17 added 17.10.2016 'errRestore' : 'Не може да се възстанови от кошчето. Не може да се определи местоположението за възстановяване.', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'Не е намерен редактор за този тип файл.', // from v2.1.25 added 23.5.2017 'errServerError' : 'Възникна грешка на сървъра.', // from v2.1.25 added 16.6.2017 'errEmpty' : 'Папката "$1" не може да се изпразни.', // from v2.1.25 added 22.6.2017 /******************************* commands names ********************************/ 'cmdarchive' : 'Създай архив', 'cmdback' : 'Назад', 'cmdcopy' : 'Копирай', 'cmdcut' : 'Изрежи', 'cmddownload' : 'Свали', 'cmdduplicate' : 'Дублирай', 'cmdedit' : 'Редактирай файл', 'cmdextract' : 'Извлечи файловете от архива', 'cmdforward' : 'Напред', 'cmdgetfile' : 'Избери файлове', 'cmdhelp' : 'За тази програма', 'cmdhome' : 'Начало', 'cmdinfo' : 'Информация', 'cmdmkdir' : 'Нова папка', 'cmdmkdirin' : 'В нова папка', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'Нов файл', 'cmdopen' : 'Отвори', 'cmdpaste' : 'Вмъкни', 'cmdquicklook' : 'Преглед', 'cmdreload' : 'Презареди', 'cmdrename' : 'Преименувай', 'cmdrm' : 'Изтрий', 'cmdtrash' : 'В кошчето', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'Възстанови', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'Намери файлове', 'cmdup' : 'Една директория нагоре', 'cmdupload' : 'Качи файлове', 'cmdview' : 'Виж', 'cmdresize' : 'Промени изображение', 'cmdsort' : 'Подреди', 'cmdnetmount' : 'Монтирай мрежов ресурс', // added 18.04.2012 'cmdnetunmount': 'Размонтирай', // from v2.1 added 30.04.2012 'cmdplaces' : 'Към избрани', // added 28.12.2014 'cmdchmod' : 'Промяна на вид', // from v2.1 added 20.6.2015 'cmdopendir' : 'Отвори папка', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'Нулирай ширината на колоната', // from v2.1.13 added 12.06.2016 'cmdfullscreen': 'Цял екран', // from v2.1.15 added 03.08.2016 'cmdmove' : 'Премести', // from v2.1.15 added 21.08.2016 'cmdempty' : 'Изпразни папката', // from v2.1.25 added 22.06.2017 'cmdundo' : 'Отмени', // from v2.1.27 added 31.07.2017 'cmdredo' : 'Преправи', // from v2.1.27 added 31.07.2017 'cmdpreference': 'Настройки', // from v2.1.27 added 03.08.2017 'cmdselectall' : 'Избери всичко', // from v2.1.28 added 15.08.2017 'cmdselectnone': 'Избери нищо', // from v2.1.28 added 15.08.2017 'cmdselectinvert': 'Обърни селекцията', // from v2.1.28 added 15.08.2017 'cmdopennew' : 'Отвори в нов прозорец', // from v2.1.38 added 3.4.2018 'cmdhide' : 'Скрий (лично)', // from v2.1.41 added 24.7.2018 /*********************************** buttons ***********************************/ 'btnClose' : 'Затвори', 'btnSave' : 'Запиши', 'btnRm' : 'Премахни', 'btnApply' : 'Приложи', 'btnCancel' : 'Отказ', 'btnNo' : 'Не', 'btnYes' : 'Да', 'btnMount' : 'Монтирай', // added 18.04.2012 'btnApprove': 'Отиди на $1 и одобри', // from v2.1 added 26.04.2012 'btnUnmount': 'Размонтирай', // from v2.1 added 30.04.2012 'btnConv' : 'Конвертирай', // from v2.1 added 08.04.2014 'btnCwd' : 'Тук', // from v2.1 added 22.5.2015 'btnVolume' : 'Ресурс', // from v2.1 added 22.5.2015 'btnAll' : 'Всички', // from v2.1 added 22.5.2015 'btnMime' : 'MIME тип', // from v2.1 added 22.5.2015 'btnFileName':'Име', // from v2.1 added 22.5.2015 'btnSaveClose': 'Запази и затвори', // from v2.1 added 12.6.2015 'btnBackup' : 'Архивирай', // fromv2.1 added 28.11.2015 'btnRename' : 'Преименувай', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'Преименувай(Всички)', // from v2.1.24 added 6.4.2017 'btnPrevious' : 'Пред ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : 'След ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : 'Запази като', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'Отваряне на папка', 'ntffile' : 'Отваряне на файл', 'ntfreload' : 'Презареждане съдържанието на папка', 'ntfmkdir' : 'Създава се директория', 'ntfmkfile' : 'Създава се файл', 'ntfrm' : 'Изтриване на файлове', 'ntfcopy' : 'Копиране на файлове', 'ntfmove' : 'Преместване на файлове', 'ntfprepare' : 'Подготовка за копиране на файлове', 'ntfrename' : 'Преименуване на файлове', 'ntfupload' : 'Качват се файлове', 'ntfdownload' : 'Свалят се файлове', 'ntfsave' : 'Запис на файлове', 'ntfarchive' : 'Създава се архив', 'ntfextract' : 'Извличат се файловете от архив', 'ntfsearch' : 'Търсят се файлове', 'ntfresize' : 'Преоразмеряват се изображения', 'ntfsmth' : 'Зает съм >_<', 'ntfloadimg' : 'Зареждат се изображения', 'ntfnetmount' : 'Монтира се мрежов ресурс', // added 18.04.2012 'ntfnetunmount': 'Размонтира се мрежов ресурс', // from v2.1 added 30.04.2012 'ntfdim' : 'Извличат се размерите на изображение', // added 20.05.2013 'ntfreaddir' : 'Извлича се информация за папка', // from v2.1 added 01.07.2013 'ntfurl' : 'Взима се URL от връзка', // from v2.1 added 11.03.2014 'ntfchmod' : 'Променя се вида на файл', // from v2.1 added 20.6.2015 'ntfpreupload': 'Проверка на името на файла за качване', // from v2.1 added 31.11.2015 'ntfzipdl' : 'Създаване на файл за изтегляне', // from v2.1.7 added 23.1.2016 'ntfparents' : 'Получава се информация за пътя', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'Обработка на качения файл', // from v2.1.17 added 2.11.2016 'ntftrash' : 'Прехвърлят се позиции в кошчето', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'Извършва се възстановяване от кошчето', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'Проверка на целевата папка', // from v2.1.24 added 3.5.2017 'ntfundo' : 'Отмяна на предишната операция', // from v2.1.27 added 31.07.2017 'ntfredo' : 'Възстановяване на предходните отменени', // from v2.1.27 added 31.07.2017 /*********************************** volumes *********************************/ 'volume_Trash' : 'Кошче', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : 'неизвестна', 'Today' : 'днес', 'Yesterday' : 'вчера', 'msJan' : 'яну', 'msFeb' : 'фев', 'msMar' : 'мар', 'msApr' : 'апр', 'msMay' : 'май', 'msJun' : 'юни', 'msJul' : 'юли', 'msAug' : 'авг', 'msSep' : 'сеп', 'msOct' : 'окт', 'msNov' : 'ное', 'msDec' : 'дек', 'January' : 'януари', 'February' : 'февруари', 'March' : 'март', 'April' : 'април', 'May' : 'май', 'June' : 'юни', 'July' : 'юли', 'August' : 'август', 'September' : 'септември', 'October' : 'октомври', 'November' : 'ноември', 'December' : 'декември', 'Sunday' : 'неделя', 'Monday' : 'понеделник', 'Tuesday' : 'вторник', 'Wednesday' : 'сряда', 'Thursday' : 'четвъртък', 'Friday' : 'петък', 'Saturday' : 'събота', 'Sun' : 'нед', 'Mon' : 'пон', 'Tue' : 'вто', 'Wed' : 'сря', 'Thu' : 'чет', 'Fri' : 'пет', 'Sat' : 'съб', /******************************** sort variants ********************************/ 'sortname' : 'по име', 'sortkind' : 'по вид', 'sortsize' : 'по размер', 'sortdate' : 'по дата', 'sortFoldersFirst' : 'Папките първи', 'sortperm' : 'по права', // from v2.1.13 added 13.06.2016 'sortmode' : 'по вид', // from v2.1.13 added 13.06.2016 'sortowner' : 'по собственик', // from v2.1.13 added 13.06.2016 'sortgroup' : 'по група', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'Също дървовиден изглед', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : 'NewFile.txt', // added 10.11.2015 'untitled folder' : 'NewFolder', // added 10.11.2015 'Archive' : 'NewArchive', // from v2.1 added 10.11.2015 /********************************** messages **********************************/ 'confirmReq' : 'Изисква се подтвърждение', 'confirmRm' : 'Сигурни ли сте, че желаете да премахнете файловете?
                Това действие е необратимо!', 'confirmRepl' : 'Да заменя ли стария файл с новия?', 'confirmRest' : 'Да се замени ли съществуващата позиция с тази в кошчето?', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'Не е в UTF-8 формат
                Конвертиране до UTF-8?
                Съдържанието става в UTF-8 формат при запазване след конверсията.', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'Кодирането на този файл не може да бъде открито. Необходимо е временно да се преобразува в UTF-8 за редактиране.
                Моля, изберете кодиране на този файл.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : 'Има направени промени.
                Те ще бъдат загубени, ако не запишете промените.', // from v2.1 added 15.7.2015 'confirmTrash' : 'Наистина ли искате да преместите позиции в кошчето за боклук?', //from v2.1.24 added 29.4.2017 'apllyAll' : 'Приложи за всички', 'name' : 'Име', 'size' : 'Размер', 'perms' : 'Права', 'modify' : 'Променено', 'kind' : 'Вид', 'read' : 'четене', 'write' : 'запис', 'noaccess' : 'без достъп', 'and' : 'и', 'unknown' : 'непознат', 'selectall' : 'Избери всички файлове', 'selectfiles' : 'Избери файл(ове)', 'selectffile' : 'Избери първият файл', 'selectlfile' : 'Избери последният файл', 'viewlist' : 'Изглед списък', 'viewicons' : 'Изглед икони', 'viewSmall' : 'Малки икони', // from v2.1.39 added 22.5.2018 'viewMedium' : 'Средни икони', // from v2.1.39 added 22.5.2018 'viewLarge' : 'Големи икони', // from v2.1.39 added 22.5.2018 'viewExtraLarge' : 'Много големи икони', // from v2.1.39 added 22.5.2018 'places' : 'Избрани', 'calc' : 'Изчисли', 'path' : 'Път', 'aliasfor' : 'Връзка към', 'locked' : 'Заключен', 'dim' : 'Размери', 'files' : 'Файлове', 'folders' : 'Папки', 'items' : 'Позиции', 'yes' : 'да', 'no' : 'не', 'link' : 'Връзка', 'searcresult' : 'Резултати от търсенето', 'selected' : 'Избрани позиции', 'about' : 'За', 'shortcuts' : 'Бързи клавиши', 'help' : 'Помощ', 'webfm' : 'Файлов менажер за Интернет', 'ver' : 'Версия', 'protocolver' : 'версия на протокола', 'homepage' : 'Начало', 'docs' : 'Документация', 'github' : 'Разклонение в Github', 'twitter' : 'Последвайте ни в Twitter', 'facebook' : 'Присъединете се към нас във Facebook', 'team' : 'Екип', 'chiefdev' : 'Главен разработчик', 'developer' : 'разработчик', 'contributor' : 'сътрудник', 'maintainer' : 'поддръжка', 'translator' : 'преводач', 'icons' : 'Икони', 'dontforget' : 'и не забравяйте да си вземете кърпата', 'shortcutsof' : 'Преките пътища са изключени', 'dropFiles' : 'Пуснете файловете тук', 'or' : 'или', 'selectForUpload' : 'Избери файлове', 'moveFiles' : 'Премести файлове', 'copyFiles' : 'Копирай файлове', 'restoreFiles' : 'Възстанови файлове', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'Премахни от избрани', 'aspectRatio' : 'Отношение', 'scale' : 'Мащаб', 'width' : 'Ширина', 'height' : 'Височина', 'resize' : 'Преоразмери', 'crop' : 'Отрежи', 'rotate' : 'Ротирай', 'rotate-cw' : 'Ротирай 90 градуса CW', 'rotate-ccw' : 'Ротирай 90 градуса CCW', 'degree' : '°', 'netMountDialogTitle' : 'Монтиране на мрежов ресурс', // added 18.04.2012 'protocol' : 'Протокол', // added 18.04.2012 'host' : 'Хост', // added 18.04.2012 'port' : 'Порт', // added 18.04.2012 'user' : 'Потребител', // added 18.04.2012 'pass' : 'Парола', // added 18.04.2012 'confirmUnmount' : 'Ще размонтирате $1?', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'Пусни или вмъкни файлове от браузера', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'Тук поснете файловете, URL адресите или изображенията от клипборда', // from v2.1 added 07.04.2014 'encoding' : 'Кодировка', // from v2.1 added 19.12.2014 'locale' : 'Локали', // from v2.1 added 19.12.2014 'searchTarget' : 'Цел: $1', // from v2.1 added 22.5.2015 'searchMime' : 'Търсене по въведен MIME тип', // from v2.1 added 22.5.2015 'owner' : 'Собственик', // from v2.1 added 20.6.2015 'group' : 'Група', // from v2.1 added 20.6.2015 'other' : 'Други', // from v2.1 added 20.6.2015 'execute' : 'Изпълнява', // from v2.1 added 20.6.2015 'perm' : 'Разрешение', // from v2.1 added 20.6.2015 'mode' : 'Вид', // from v2.1 added 20.6.2015 'emptyFolder' : 'Папката е празна', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'Папката е празна\\A Влачи и пусни за да добавите файлове', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'Папката е празна\\A Докоснете дълго за да добавите позиции', // from v2.1.6 added 30.12.2015 'quality' : 'Качество', // from v2.1.6 added 5.1.2016 'autoSync' : 'Автоматично синхронизиране', // from v2.1.6 added 10.1.2016 'moveUp' : 'Премести нагоре', // from v2.1.6 added 18.1.2016 'getLink' : 'Вземи URL връзка', // from v2.1.7 added 9.2.2016 'selectedItems' : 'Избрани позиции ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'Папка ID', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'Позволи офлайн достъп', // from v2.1.10 added 3.25.2016 'reAuth' : 'За повторно удостоверяване', // from v2.1.10 added 3.25.2016 'nowLoading' : 'Сега се зарежда...', // from v2.1.12 added 4.26.2016 'openMulti' : 'Отваряне на няколко файла', // from v2.1.12 added 5.14.2016 'openMultiConfirm': 'Опитвате се да отворите $1 файла. Наистина ли искате да ги отворите в браузъра?', // from v2.1.12 added 5.14.2016 'emptySearch' : 'Няма резултат от търсенето.', // from v2.1.12 added 5.16.2016 'editingFile' : 'Редактира се файл.', // from v2.1.13 added 6.3.2016 'hasSelected' : 'Вие сте избрали $1 позиции.', // from v2.1.13 added 6.3.2016 'hasClipboard' : 'Имате $1 позиции в клипборда.', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'Инкременталното търсене е само от текущия изглед.', // from v2.1.13 added 6.30.2016 'reinstate' : 'Възстановяване', // from v2.1.15 added 3.8.2016 'complete' : '$1 завършени', // from v2.1.15 added 21.8.2016 'contextmenu' : 'Контекстно меню', // from v2.1.15 added 9.9.2016 'pageTurning' : 'Завъртане на страницата', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'Начала на ресурси', // from v2.1.16 added 16.9.2016 'reset' : 'Нулиране', // from v2.1.16 added 1.10.2016 'bgcolor' : 'Цвят на фона', // from v2.1.16 added 1.10.2016 'colorPicker' : 'Средство за избиране на цвят', // from v2.1.16 added 1.10.2016 '8pxgrid' : '8px мрежа', // from v2.1.16 added 4.10.2016 'enabled' : 'Активно', // from v2.1.16 added 4.10.2016 'disabled' : 'Неактивно', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'Няма резултат от търсенето в текущия изглед.\\AНатиснете [Enter] за да разширите целта на търсене.', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'Резултатите от търсенето на първата буква са празни в текущия изглед.', // from v2.1.23 added 24.3.2017 'textLabel' : 'Текстов етикет', // from v2.1.17 added 13.10.2016 'minsLeft' : '$1 мин остават', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'Отваряне отново с избрано кодиране', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'Запазете с избраното кодиране', // from v2.1.19 added 2.12.2016 'selectFolder' : 'Избери папка', // from v2.1.20 added 13.12.2016 'firstLetterSearch': 'Търсене по първа буква', // from v2.1.23 added 24.3.2017 'presets' : 'Мостри', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : 'Прекалено много позиции, не може да премести в кошчето.', // from v2.1.25 added 9.6.2017 'TextArea' : 'Текстово поле', // from v2.1.25 added 14.6.2017 'folderToEmpty' : 'Изпразнете папка "$1".', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : 'В папка "$1" няма позиции.', // from v2.1.25 added 22.6.2017 'preference' : 'Настройки', // from v2.1.26 added 28.6.2017 'language' : 'Настройка на езика', // from v2.1.26 added 28.6.2017 'clearBrowserData': 'Инициализирайте настройките запаметени в този браузър', // from v2.1.26 added 28.6.2017 'toolbarPref' : 'Настройки на лентата с инструменти', // from v2.1.27 added 2.8.2017 'charsLeft' : '... $1 символа остават.', // from v2.1.29 added 30.8.2017 'sum' : 'Сумарно', // from v2.1.29 added 28.9.2017 'roughFileSize' : 'Груб размер на файла', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : 'Фокусирайте върху елемента в диалоговия прозорец с мишката', // from v2.1.30 added 2.11.2017 'select' : 'Избери', // from v2.1.30 added 23.11.2017 'selectAction' : 'Действие при избор на файл', // from v2.1.30 added 23.11.2017 'useStoredEditor' : 'Отворете с редактора, използван за последен път', // from v2.1.30 added 23.11.2017 'selectinvert' : 'Обърнете селекцията', // from v2.1.30 added 25.11.2017 'renameMultiple' : 'Наистина ли искате да преименувате $1 избрани позиции като $2?
                Това не може да бъде отменено!', // from v2.1.31 added 4.12.2017 'batchRename' : 'Групово преименуване', // from v2.1.31 added 8.12.2017 'plusNumber' : '+ Номер', // from v2.1.31 added 8.12.2017 'asPrefix' : 'Добави префикс', // from v2.1.31 added 8.12.2017 'asSuffix' : 'Добави суфикс', // from v2.1.31 added 8.12.2017 'changeExtention' : 'Промени разширение', // from v2.1.31 added 8.12.2017 'columnPref' : 'Настройки за колони (Изглед в списък)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : 'Всички промени ще се отразят незабавно в архива.', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : 'Промените няма да се отразят, докато не размонтирате този диск.', // from v2.1.33 added 2.3.2018 'unmountChildren' : 'The following volume(s) mounted on this volume also unmounted. Are you sure to unmount it?', // from v2.1.33 added 5.3.2018 'selectionInfo' : 'Информация за селекцията', // from v2.1.33 added 7.3.2018 'hashChecker' : 'Алгоритми за показване на файловия хеш', // from v2.1.33 added 10.3.2018 'infoItems' : 'Info Items (Selection Info Panel)', // from v2.1.38 added 28.3.2018 'pressAgainToExit': 'Натиснете отново, за да излезете.', // from v2.1.38 added 1.4.2018 'toolbar' : 'Лента с инструменти', // from v2.1.38 added 4.4.2018 'workspace' : 'Работно пространство', // from v2.1.38 added 4.4.2018 'dialog' : 'Диалог', // from v2.1.38 added 4.4.2018 'all' : 'Всички', // from v2.1.38 added 4.4.2018 'iconSize' : 'Размер на иконите (изглед с икони)', // from v2.1.39 added 7.5.2018 'editorMaximized' : 'Отваря максимизиран прозорец на редактора', // from v2.1.40 added 30.6.2018 'editorConvNoApi' : 'Тъй като в момента не е налична API за конверсията, моля, конвертирайте в уебсайта.', //from v2.1.40 added 8.7.2018 'editorConvNeedUpload' : 'След конверсията трябва да го качите с URL адреса или изтегления файл, за да запазите конвертирания файл.', //from v2.1.40 added 8.7.2018 'convertOn' : 'Конвертиране на сайта от $1', // from v2.1.40 added 10.7.2018 'integrations' : 'Интеграции', // from v2.1.40 added 11.7.2018 'integrationWith' : 'Този elFinder има следните интегрирани външни услуги. Моля, проверете условията за ползване, декларацията за поверителност и т.н., преди да ги използвате.', // from v2.1.40 added 11.7.2018 'showHidden' : 'Покажи скритите елементи', // from v2.1.41 added 24.7.2018 'hideHidden' : 'Скрий скритите елементи', // from v2.1.41 added 24.7.2018 'toggleHidden' : 'Покажи/скрий скритите елементи', // from v2.1.41 added 24.7.2018 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Непознат', 'kindRoot' : 'Начало на ресурс', // from v2.1.16 added 16.10.2016 'kindFolder' : 'Папка', 'kindSelects' : 'Селекции', // from v2.1.29 added 29.8.2017 'kindAlias' : 'Връзка', 'kindAliasBroken' : 'Счупена връзка', // applications 'kindApp' : 'Приложение', 'kindPostscript' : 'Postscript документ', 'kindMsOffice' : 'Microsoft Office документ', 'kindMsWord' : 'Microsoft Word документ', 'kindMsExcel' : 'Microsoft Excel документ', 'kindMsPP' : 'Microsoft Powerpoint презентация', 'kindOO' : 'Open Office документ', 'kindAppFlash' : 'Flash приложение', 'kindPDF' : 'PDF документ', 'kindTorrent' : 'Bittorrent файл', 'kind7z' : '7z архив', 'kindTAR' : 'TAR архив', 'kindGZIP' : 'GZIP архив', 'kindBZIP' : 'BZIP архив', 'kindXZ' : 'XZ архив', 'kindZIP' : 'ZIP архив', 'kindRAR' : 'RAR архив', 'kindJAR' : 'Java JAR файл', 'kindTTF' : 'True Type шрифт', 'kindOTF' : 'Open Type шрифт', 'kindRPM' : 'RPM пакет', // texts 'kindText' : 'Текстов документ', 'kindTextPlain' : 'Чист текст', 'kindPHP' : 'PHP изходен код', 'kindCSS' : 'CSS таблица със стилове', 'kindHTML' : 'HTML документ', 'kindJS' : 'Javascript изходен код', 'kindRTF' : 'RTF текстови файл', 'kindC' : 'C изходен код', 'kindCHeader' : 'C header изходен код', 'kindCPP' : 'C++ изходен код', 'kindCPPHeader' : 'C++ header изходен код', 'kindShell' : 'Unix shell изходен код', 'kindPython' : 'Python изходен код', 'kindJava' : 'Java изходен код', 'kindRuby' : 'Ruby изходен код', 'kindPerl' : 'Perl изходен код', 'kindSQL' : 'SQL изходен код', 'kindXML' : 'XML документ', 'kindAWK' : 'AWK изходен код', 'kindCSV' : 'CSV стойности разделени със запетая', 'kindDOCBOOK' : 'Docbook XML документ', 'kindMarkdown' : 'Markdown текст', // added 20.7.2015 // images 'kindImage' : 'Изображение', 'kindBMP' : 'BMP изображение', 'kindJPEG' : 'JPEG изображение', 'kindGIF' : 'GIF изображение', 'kindPNG' : 'PNG изображение', 'kindTIFF' : 'TIFF изображение', 'kindTGA' : 'TGA изображение', 'kindPSD' : 'Adobe Photoshop изображение', 'kindXBITMAP' : 'X bitmap изображение', 'kindPXM' : 'Pixelmator изображение', // media 'kindAudio' : 'Аудио медия', 'kindAudioMPEG' : 'MPEG звук', 'kindAudioMPEG4' : 'MPEG-4 звук', 'kindAudioMIDI' : 'MIDI звук', 'kindAudioOGG' : 'Ogg Vorbis звук', 'kindAudioWAV' : 'WAV звук', 'AudioPlaylist' : 'MP3 списък за изпълнение', 'kindVideo' : 'Видео медия', 'kindVideoDV' : 'DV филм', 'kindVideoMPEG' : 'MPEG филм', 'kindVideoMPEG4' : 'MPEG-4 филм', 'kindVideoAVI' : 'AVI филм', 'kindVideoMOV' : 'Quick Time филм', 'kindVideoWM' : 'Windows Media филм', 'kindVideoFlash' : 'Flash филм', 'kindVideoMKV' : 'Matroska филм', 'kindVideoOGG' : 'Ogg филм' } }; })); plugins/file-manager-advanced/application/library/js/i18n/elfinder.ca.js000064400000040577147176754550022233 0ustar00/** * Catalan translation * @author Sergio Jovani * @version 2014-12-19 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.ca = { translator : 'Sergio Jovani <lesergi@gmail.com>', language : 'Català', direction : 'ltr', dateFormat : 'M d, Y h:i A', // Mar 13, 2012 05:27 PM fancyDateFormat : '$1 h:i A', // will produce smth like: Today 12:25 PM messages : { /********************************** errors **********************************/ 'error' : 'Error', 'errUnknown' : 'Error desconegut.', 'errUnknownCmd' : 'Ordre desconeguda.', 'errJqui' : 'La configuració de jQuery UI no és vàlida. S\'han d\'incloure els components "selectable", "draggable" i "droppable".', 'errNode' : 'elFinder necessita crear elements DOM.', 'errURL' : 'La configuració de l\'elFinder no és vàlida! L\'opció URL no està configurada.', 'errAccess' : 'Accés denegat.', 'errConnect' : 'No s\'ha pogut connectar amb el rerefons.', 'errAbort' : 'S\'ha interromput la connexió.', 'errTimeout' : 'Temps de connexió excedit.', 'errNotFound' : 'No s\'ha trobat el rerefons.', 'errResponse' : 'La resposta del rerefons no és vàlida.', 'errConf' : 'La configuració del rerefons no és vàlida.', 'errJSON' : 'No està instal·lat el mòdul JSON del PHP.', 'errNoVolumes' : 'No s\'han trobat volums llegibles.', 'errCmdParams' : 'Els paràmetres per l\'ordre "$1" no són vàlids.', 'errDataNotJSON' : 'Les dades no són JSON.', 'errDataEmpty' : 'Les dades estan buides.', 'errCmdReq' : 'La sol·licitud del rerefons necessita el nom de l\'ordre.', 'errOpen' : 'No s\'ha pogut obrir "$1".', 'errNotFolder' : 'L\'objecte no és una carpeta.', 'errNotFile' : 'L\'objecte no és un fitxer.', 'errRead' : 'No s\'ha pogut llegir "$1".', 'errWrite' : 'No s\'ha pogut escriure a "$1".', 'errPerm' : 'Permís denegat.', 'errLocked' : '"$1" està bloquejat i no podeu canviar-li el nom, moure-lo ni suprimir-lo.', 'errExists' : 'Ja existeix un fitxer anomenat "$1".', 'errInvName' : 'El nom de fitxer no és vàlid.', 'errFolderNotFound' : 'No s\'ha trobat la carpeta.', 'errFileNotFound' : 'No s\'ha trobat el fitxer.', 'errTrgFolderNotFound' : 'No s\'ha trobat la carpeta de destí "$1".', 'errPopup' : 'El navegador ha evitat obrir una finestra emergent. Autoritzeu-la per obrir el fitxer.', 'errMkdir' : 'No s\'ha pogut crear la carpeta "$1".', 'errMkfile' : 'No s\'ha pogut crear el fitxer "$1".', 'errRename' : 'No s\'ha pogut canviar el nom de "$1".', 'errCopyFrom' : 'No està permès copiar fitxers des del volum "$1".', 'errCopyTo' : 'No està permès copiar fitxers al volum "$1".', 'errUpload' : 'S\'ha produït un error en la càrrega.', 'errUploadFile' : 'No s\'ha pogut carregar "$1".', 'errUploadNoFiles' : 'No s\'han trobat fitxers per carregar.', 'errUploadTotalSize' : 'Les dades excedeixen la mida màxima permesa.', 'errUploadFileSize' : 'El fitxer excedeix la mida màxima permesa.', 'errUploadMime' : 'El tipus de fitxer no està permès.', 'errUploadTransfer' : 'S\'ha produït un error en transferir "$1".', 'errNotReplace' : 'Object "$1" already exists at this location and can not be replaced by object with another type.', 'errReplace' : 'Unable to replace "$1".', 'errSave' : 'No s\'ha pogut desar "$1".', 'errCopy' : 'No s\'ha pogut copiar "$1".', 'errMove' : 'No s\'ha pogut moure "$1".', 'errCopyInItself' : 'No s\'ha pogut copiar "$1" a si mateix.', 'errRm' : 'No s\'ha pogut suprimir "$1".', 'errRmSrc' : 'Unable remove source file(s).', 'errExtract' : 'No s\'han pogut extreure els fitxers de "$1".', 'errArchive' : 'No s\'ha pogut crear l\'arxiu.', 'errArcType' : 'El tipus d\'arxiu no està suportat.', 'errNoArchive' : 'El fitxer no és un arxiu o és un tipus no suportat.', 'errCmdNoSupport' : 'El rerefons no suporta aquesta ordre.', 'errReplByChild' : 'No es pot reemplaçar la carpeta “$1” per un element que conté.', 'errArcSymlinks' : 'Per raons de seguretat, no es permet extreure arxius que contenen enllaços simbòlics.', 'errArcMaxSize' : 'Els fitxers de l\'arxiu excedeixen la mida màxima permesa.', 'errResize' : 'No s\'ha pogut redimensionar "$1".', 'errResizeDegree' : 'Invalid rotate degree.', 'errResizeRotate' : 'Unable to rotate image.', 'errResizeSize' : 'Invalid image size.', 'errResizeNoChange' : 'Image size not changed.', 'errUsupportType' : 'El tipus de fitxer no està suportat.', 'errNotUTF8Content' : 'File "$1" is not in UTF-8 and cannot be edited.', 'errNetMount' : 'Unable to mount "$1".', 'errNetMountNoDriver' : 'Unsupported protocol.', 'errNetMountFailed' : 'Mount failed.', 'errNetMountHostReq' : 'Host required.', 'errSessionExpires' : 'Your session has expired due to inactivity.', 'errCreatingTempDir' : 'Unable to create temporary directory: "$1"', 'errFtpDownloadFile' : 'Unable to download file from FTP: "$1"', 'errFtpUploadFile' : 'Unable to upload file to FTP: "$1"', 'errFtpMkdir' : 'Unable to create remote directory on FTP: "$1"', 'errArchiveExec' : 'Error while archiving files: "$1"', 'errExtractExec' : 'Error while extracting files: "$1"', /******************************* commands names ********************************/ 'cmdarchive' : 'Crea arxiu', 'cmdback' : 'Enrere', 'cmdcopy' : 'Copia', 'cmdcut' : 'Retalla', 'cmddownload' : 'Descarrega', 'cmdduplicate' : 'Duplica', 'cmdedit' : 'Edita el fitxer', 'cmdextract' : 'Extreu els fitxers de l\'arxiu', 'cmdforward' : 'Endavant', 'cmdgetfile' : 'Selecciona els fitxers', 'cmdhelp' : 'Quant a aquest programari', 'cmdhome' : 'Inici', 'cmdinfo' : 'Obté informació', 'cmdmkdir' : 'Nova carpeta', 'cmdmkfile' : 'Nou fitxer', 'cmdopen' : 'Obre', 'cmdpaste' : 'Enganxa', 'cmdquicklook' : 'Previsualitza', 'cmdreload' : 'Torna a carregar', 'cmdrename' : 'Canvia el nom', 'cmdrm' : 'Suprimeix', 'cmdsearch' : 'Cerca fitxers', 'cmdup' : 'Vés al directori superior', 'cmdupload' : 'Carrega fitxers', 'cmdview' : 'Visualitza', 'cmdresize' : 'Redimensiona la imatge', 'cmdsort' : 'Ordena', 'cmdnetmount' : 'Mount network volume', /*********************************** buttons ***********************************/ 'btnClose' : 'Tanca', 'btnSave' : 'Desa', 'btnRm' : 'Suprimeix', 'btnApply' : 'Aplica', 'btnCancel' : 'Cancel·la', 'btnNo' : 'No', 'btnYes' : 'Sí', 'btnMount' : 'Mount', /******************************** notifications ********************************/ 'ntfopen' : 'S\'està obrint la carpeta', 'ntffile' : 'S\'està obrint el fitxer', 'ntfreload' : 'S\'està tornant a carregar el contingut de la carpeta', 'ntfmkdir' : 'S\'està creant el directori', 'ntfmkfile' : 'S\'estan creant el fitxers', 'ntfrm' : 'S\'estan suprimint els fitxers', 'ntfcopy' : 'S\'estan copiant els fitxers', 'ntfmove' : 'S\'estan movent els fitxers', 'ntfprepare' : 'S\'està preparant per copiar fitxers', 'ntfrename' : 'S\'estan canviant els noms del fitxers', 'ntfupload' : 'S\'estan carregant els fitxers', 'ntfdownload' : 'S\'estan descarregant els fitxers', 'ntfsave' : 'S\'estan desant els fitxers', 'ntfarchive' : 'S\'està creant l\'arxiu', 'ntfextract' : 'S\'estan extreient els fitxers de l\'arxiu', 'ntfsearch' : 'S\'estan cercant els fitxers', 'ntfresize' : 'Resizing images', 'ntfsmth' : 'S\'estan realitzant operacions', 'ntfloadimg' : 'S\'està carregant la imatge', 'ntfnetmount' : 'Mounting network volume', 'ntfdim' : 'Acquiring image dimension', /************************************ dates **********************************/ 'dateUnknown' : 'desconegut', 'Today' : 'Avui', 'Yesterday' : 'Ahir', 'msJan' : 'gen.', 'msFeb' : 'febr.', 'msMar' : 'març', 'msApr' : 'abr.', 'msMay' : 'maig', 'msJun' : 'juny', 'msJul' : 'jul.', 'msAug' : 'ag.', 'msSep' : 'set.', 'msOct' : 'oct.', 'msNov' : 'nov.', 'msDec' : 'des.', 'January' : 'January', 'February' : 'February', 'March' : 'March', 'April' : 'April', 'May' : 'May', 'June' : 'June', 'July' : 'July', 'August' : 'August', 'September' : 'September', 'October' : 'October', 'November' : 'November', 'December' : 'December', 'Sunday' : 'Sunday', 'Monday' : 'Monday', 'Tuesday' : 'Tuesday', 'Wednesday' : 'Wednesday', 'Thursday' : 'Thursday', 'Friday' : 'Friday', 'Saturday' : 'Saturday', 'Sun' : 'Sun', 'Mon' : 'Mon', 'Tue' : 'Tue', 'Wed' : 'Wed', 'Thu' : 'Thu', 'Fri' : 'Fri', 'Sat' : 'Sat', /******************************** sort variants ********************************/ 'sortname' : 'per nom', 'sortkind' : 'per tipus', 'sortsize' : 'per mida', 'sortdate' : 'per data', 'sortFoldersFirst' : 'Folders first', /********************************** messages **********************************/ 'confirmReq' : 'Es necessita confirmació', 'confirmRm' : 'Voleu suprimir els fitxers?
                L\'acció es podrà desfer!', 'confirmRepl' : 'Voleu reemplaçar el fitxer antic amb el nou?', 'apllyAll' : 'Aplica a tot', 'name' : 'Nom', 'size' : 'Mida', 'perms' : 'Permisos', 'modify' : 'Modificat', 'kind' : 'Tipus', 'read' : 'llegir', 'write' : 'escriure', 'noaccess' : 'sense accés', 'and' : 'i', 'unknown' : 'desconegut', 'selectall' : 'Selecciona tots els fitxers', 'selectfiles' : 'Selecciona el(s) fitxer(s)', 'selectffile' : 'Selecciona el primer fitxer', 'selectlfile' : 'Selecciona l\'últim fitxer', 'viewlist' : 'Vista en llista', 'viewicons' : 'Vista en icones', 'places' : 'Llocs', 'calc' : 'Calcula', 'path' : 'Camí', 'aliasfor' : 'Àlies per', 'locked' : 'Bloquejat', 'dim' : 'Dimensions', 'files' : 'Fitxers', 'folders' : 'Carpetes', 'items' : 'Elements', 'yes' : 'sí', 'no' : 'no', 'link' : 'Enllaç', 'searcresult' : 'Resultats de la cerca', 'selected' : 'Elements seleccionats', 'about' : 'Quant a', 'shortcuts' : 'Dreceres', 'help' : 'Ajuda', 'webfm' : 'Gestor de fitxers web', 'ver' : 'Versió', 'protocolver' : 'versió de protocol', 'homepage' : 'Pàgina del projecte', 'docs' : 'Documentació', 'github' : 'Bifurca\'ns a GitHub', 'twitter' : 'Segueix-nos a Twitter', 'facebook' : 'Uniu-vos a Facebook', 'team' : 'Equip', 'chiefdev' : 'cap desenvolupador', 'developer' : 'desenvolupador', 'contributor' : 'col·laborador', 'maintainer' : 'mantenidor', 'translator' : 'traductor', 'icons' : 'Icones', 'dontforget' : 'i no oblideu agafar la vostra tovallola', 'shortcutsof' : 'Les dreceres estan inhabilitades', 'dropFiles' : 'Arrossegueu els fitxers aquí', 'or' : 'o', 'selectForUpload' : 'Seleccioneu els fitxer a carregar', 'moveFiles' : 'Mou els fitxers', 'copyFiles' : 'Copia els fitxers', 'rmFromPlaces' : 'Suprimeix dels llocs', 'aspectRatio' : 'Relació d\'aspecte', 'scale' : 'Escala', 'width' : 'Amplada', 'height' : 'Alçada', 'resize' : 'Redimensiona', 'crop' : 'Retalla', 'rotate' : 'Rotate', 'rotate-cw' : 'Rotate 90 degrees CW', 'rotate-ccw' : 'Rotate 90 degrees CCW', 'degree' : '°', 'netMountDialogTitle' : 'Mount network volume', 'protocol' : 'Protocol', 'host' : 'Host', 'port' : 'Port', 'user' : 'User', 'pass' : 'Password', /********************************** mimetypes **********************************/ 'kindUnknown' : 'Desconegut', 'kindFolder' : 'Carpeta', 'kindAlias' : 'Àlies', 'kindAliasBroken' : 'Àlies no vàlid', // applications 'kindApp' : 'Aplicació', 'kindPostscript' : 'Document Postscript', 'kindMsOffice' : 'Document del Microsoft Office', 'kindMsWord' : 'Document del Microsoft Word', 'kindMsExcel' : 'Document del Microsoft Excel', 'kindMsPP' : 'Presentació del Microsoft Powerpoint', 'kindOO' : 'Document de l\'Open Office', 'kindAppFlash' : 'Aplicació Flash', 'kindPDF' : 'Document PDF', 'kindTorrent' : 'Fitxer Bittorrent', 'kind7z' : 'Arxiu 7z', 'kindTAR' : 'Arxiu TAR', 'kindGZIP' : 'Arxiu GZIP', 'kindBZIP' : 'Arxiu BZIP', 'kindXZ' : 'Arxiu XZ', 'kindZIP' : 'Arxiu ZIP', 'kindRAR' : 'Arxiu RAR', 'kindJAR' : 'Fitxer JAR de Java', 'kindTTF' : 'Tipus de lletra True Type', 'kindOTF' : 'Tipus de lletra Open Type', 'kindRPM' : 'Paquet RPM', // texts 'kindText' : 'Document de text', 'kindTextPlain' : 'Document de text net', 'kindPHP' : 'Codi PHP', 'kindCSS' : 'Full d\'estils CSS', 'kindHTML' : 'Document HTML', 'kindJS' : 'Codi Javascript', 'kindRTF' : 'Document RTF', 'kindC' : 'Codi C', 'kindCHeader' : 'Codi de caçalera C', 'kindCPP' : 'Codi C++', 'kindCPPHeader' : 'Codi de caçalera C++', 'kindShell' : 'Script Unix', 'kindPython' : 'Codi Python', 'kindJava' : 'Codi Java', 'kindRuby' : 'Codi Ruby', 'kindPerl' : 'Script Perl', 'kindSQL' : 'Codi SQL', 'kindXML' : 'Document XML', 'kindAWK' : 'Codi AWK', 'kindCSV' : 'Document CSV', 'kindDOCBOOK' : 'Document XML de Docbook', // images 'kindImage' : 'Imatge', 'kindBMP' : 'Imatge BMP', 'kindJPEG' : 'Imatge JPEG', 'kindGIF' : 'Imatge GIF', 'kindPNG' : 'Imatge PNG', 'kindTIFF' : 'Imatge TIFF', 'kindTGA' : 'Imatge TGA', 'kindPSD' : 'Imatge Adobe Photoshop', 'kindXBITMAP' : 'Imatge X bitmap', 'kindPXM' : 'Imatge Pixelmator', // media 'kindAudio' : 'Fitxer d\'àudio', 'kindAudioMPEG' : 'Fitxer d\'àudio MPEG', 'kindAudioMPEG4' : 'Fitxer d\'àudio MPEG-4', 'kindAudioMIDI' : 'Fitxer d\'àudio MIDI', 'kindAudioOGG' : 'Fitxer d\'àudio Ogg Vorbis', 'kindAudioWAV' : 'Fitxer d\'àudio WAV', 'AudioPlaylist' : 'Llista de reproducció MP3', 'kindVideo' : 'Fitxer de vídeo', 'kindVideoDV' : 'Fitxer de vídeo DV', 'kindVideoMPEG' : 'Fitxer de vídeo MPEG', 'kindVideoMPEG4' : 'Fitxer de vídeo MPEG-4', 'kindVideoAVI' : 'Fitxer de vídeo AVI', 'kindVideoMOV' : 'Fitxer de vídeo Quick Time', 'kindVideoWM' : 'Fitxer de vídeo Windows Media', 'kindVideoFlash' : 'Fitxer de vídeo Flash', 'kindVideoMKV' : 'Fitxer de vídeo Matroska', 'kindVideoOGG' : 'Fitxer de vídeo Ogg' } }; })); plugins/file-manager-advanced/application/library/js/i18n/elfinder.cs.js000064400000103007147176754550022241 0ustar00/** * Czech translation * @author RobiNN * @author Jay Gridley * @version 2021-06-10 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.cs = { translator : 'RobiNN <robo@kelcak.com>, Jay Gridley <gridley.jay@hotmail.com>', language : 'Čeština', direction : 'ltr', dateFormat : 'd. m. Y H:i', // will show like: 10. 06. 2021 23:37 fancyDateFormat : '$1 H:i', // will show like: Dnes 23:37 nonameDateFormat : 'ymd-His', // noname upload will show like: 210610-233701 messages : { /********************************** errors **********************************/ 'error' : 'Chyba', 'errUnknown' : 'Neznámá chyba.', 'errUnknownCmd' : 'Neznámý příkaz.', 'errJqui' : 'Nedostačující konfigurace jQuery UI. Musí být zahrnuty komponenty Selectable, Draggable a Droppable.', 'errNode' : 'elFinder vyžaduje vytvořený DOM Elementu.', 'errURL' : 'Chybná konfigurace elFinderu! Není nastavena hodnota URL.', 'errAccess' : 'Přístup zamítnut.', 'errConnect' : 'Nepodařilo se připojit k backendu.', 'errAbort' : 'Připojení zrušeno.', 'errTimeout' : 'Vypšel limit pro připojení.', 'errNotFound' : 'Backend nenalezen.', 'errResponse' : 'Nesprávná odpověď backendu.', 'errConf' : 'Nepsrávná konfigurace backendu.', 'errJSON' : 'PHP modul JSON není nainstalován.', 'errNoVolumes' : 'Není dostupný čitelný oddíl.', 'errCmdParams' : 'Nesprávné parametry příkazu "$1".', 'errDataNotJSON' : 'Data nejsou ve formátu JSON.', 'errDataEmpty' : 'Data jsou prázdná.', 'errCmdReq' : 'Dotaz backendu vyžaduje název příkazu.', 'errOpen' : 'Chyba při otevírání "$1".', 'errNotFolder' : 'Objekt není složka.', 'errNotFile' : 'Objekt není soubor.', 'errRead' : 'Chyba při čtení "$1".', 'errWrite' : 'Chyba při zápisu do "$1".', 'errPerm' : 'Přístup odepřen.', 'errLocked' : '"$1" je uzamčený a nemůže být přejmenován, přesunut nebo smazán.', 'errExists' : 'Soubor s názvem "$1" již existuje.', 'errInvName' : 'Nesprávný název souboru.', 'errInvDirname' : 'Neplatný název adresáře.', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : 'Složka nenalezena.', 'errFileNotFound' : 'Soubor nenalezen.', 'errTrgFolderNotFound' : 'Cílová složka "$1" nenalezena.', 'errPopup' : 'Prohlížeč zabránil otevření vyskakovacího okna. K otevření souboru, povolte vyskakovací okno v prohlížeči.', 'errMkdir' : 'Nepodařilo se vytvořit složku "$1".', 'errMkfile' : 'Nepodařilo se vytvořit soubor "$1".', 'errRename' : 'Nepodařilo se přejmenovat "$1".', 'errCopyFrom' : 'Kopírování souborů z oddílu "$1" není povoleno.', 'errCopyTo' : 'Kopírování souborů do oddílu "$1" není povoleno.', 'errMkOutLink' : 'Nelze vytvořit odkaz mimo kořenového svazku.', // from v2.1 added 03.10.2015 'errUpload' : 'Chyba nahrávání.', // old name - errUploadCommon 'errUploadFile' : 'Nepodařilo se nahrát "$1".', // old name - errUpload 'errUploadNoFiles' : 'Nejsou vybrány žádné soubory k nahrání.', 'errUploadTotalSize' : 'Překročena maximální povolená velikost dat.', // old name - errMaxSize 'errUploadFileSize' : 'Překročena maximální povolená velikost souboru.', // old name - errFileMaxSize 'errUploadMime' : 'Nepovolený typ souboru.', 'errUploadTransfer' : '"$1" chyba přenosu.', 'errUploadTemp' : 'Nelze vytvořit dočasný soubor pro upload.', // from v2.1 added 26.09.2015 'errNotReplace' : 'Objekt "$1" v tomto umístění již existuje a nelze jej nahradit s jiným typem objektu.', // new 'errReplace' : 'Nelze nahradit "$1".', 'errSave' : '"$1" nelze uložit.', 'errCopy' : '"$1" nelze zkopírovat.', 'errMove' : '"$1" nelze přemístit.', 'errCopyInItself' : '"$1" nelze zkopírovat do sebe sama.', 'errRm' : '"$1" nelze odstranit.', 'errTrash' : 'Nelze se dostat do koše.', // from v2.1.24 added 30.4.2017 'errRmSrc' : 'Nelze odstranit zdrojový soubor(y).', 'errExtract' : 'Nelze extrahovat soubory z "$1".', 'errArchive' : 'Nelze vytvořit archív.', 'errArcType' : 'Nepodporovaný typ archívu.', 'errNoArchive' : 'Soubor není archív nebo má nepodporovaný formát.', 'errCmdNoSupport' : 'Backend tento příkaz nepodporuje.', 'errReplByChild' : 'Složka "$1" nemůže být nahrazena souborem, který sama obsahuje.', 'errArcSymlinks' : 'Z bezpečnostních důvodů je zakázáno rozbalit archívy obsahující symlinky.', // edited 24.06.2012 'errArcMaxSize' : 'Soubory archívu překračují maximální povolenou velikost.', 'errResize' : 'Nepodařilo se změnit velikost obrázku "$1".', 'errResizeDegree' : 'Neplatný stupeň rotace.', // added 7.3.2013 'errResizeRotate' : 'Nelze otočit obrázek.', // added 7.3.2013 'errResizeSize' : 'Neplatná velikost obrázku.', // added 7.3.2013 'errResizeNoChange' : 'Velikost obrazu se nezmění.', // added 7.3.2013 'errUsupportType' : 'Nepodporovaný typ souboru.', 'errNotUTF8Content' : 'Soubor "$1" nemá ani obsah kódovaný v UTF-8 a nelze změnit.', // added 9.11.2011 'errNetMount' : 'Není možné se připojit "$ 1".', // added 17.04.2012 'errNetMountNoDriver' : 'Nepodporovaný protokol.', // added 17.04.2012 'errNetMountFailed' : 'Připojení se nezdařilo.', // added 17.04.2012 'errNetMountHostReq' : 'Hostitel se vyžaduje.', // added 18.04.2012 'errSessionExpires' : 'Relace byla ukončena z důvodu nečinnosti.', 'errCreatingTempDir' : 'Nelze vytvořit dočasný adresář: "$1"', 'errFtpDownloadFile' : 'Nelze stáhnout soubor z FTP: "$1"', 'errFtpUploadFile' : 'Nelze nahrát soubor na FTP: "$1"', 'errFtpMkdir' : 'Nepodařilo se vytvořit vzdálený adresář na FTP: "$1"', 'errArchiveExec' : 'Při archivaci do souboru došlo k chybě: "$1"', 'errExtractExec' : 'Chyba při extrahování souboru: "$1"', 'errNetUnMount' : 'Nepodařilo se odpojit', // from v2.1 added 30.04.2012 'errConvUTF8' : 'Nelze převést na UTF-8', // from v2.1 added 08.04.2014 'errFolderUpload' : 'Chcete-li nahrát složku, zkuste moderní prohlížeč.', // from v2.1 added 26.6.2015 'errSearchTimeout' : 'Vypršení časového limitu při hledání "$1". Je částečně výsledkem hledání.', // from v2.1 added 12.1.2016 'errReauthRequire' : 'Opětovné povolení je nutné.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'Maximální počet volitelných předmětů je $1.', // from v2.1.17 added 17.10.2016 'errRestore' : 'Nelze obnovit z koše. Nelze identifikovat cíl obnovení.', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'Editor tohoto typu souboru nebyl nalezen.', // from v2.1.25 added 23.5.2017 'errServerError' : 'Došlo k chybě na straně serveru.', // from v2.1.25 added 16.6.2017 'errEmpty' : 'Nelze vyprázdnit složku "$1".', // from v2.1.25 added 22.6.2017 'moreErrors' : 'Existují ještě další $1 chyby.', // from v2.1.44 added 9.12.2018 'errMaxMkdirs' : 'Můžete vytvořit až $1 složek najednou.', // from v2.1.58 added 20.6.2021 /******************************* commands names ********************************/ 'cmdarchive' : 'Vytvořit archív', 'cmdback' : 'Zpět', 'cmdcopy' : 'Kopírovat', 'cmdcut' : 'Vyjmout', 'cmddownload' : 'Stáhnout', 'cmdduplicate' : 'Duplikovat', 'cmdedit' : 'Upravit soubor', 'cmdextract' : 'Rozbalit archív', 'cmdforward' : 'Vpřed', 'cmdgetfile' : 'Vybrat soubory', 'cmdhelp' : 'O softwaru', 'cmdhome' : 'Domů', 'cmdinfo' : 'Zobrazit informace', 'cmdmkdir' : 'Nová složka', 'cmdmkdirin' : 'Do nové složky', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'Nový soubor', 'cmdopen' : 'Otevřít', 'cmdpaste' : 'Vložit', 'cmdquicklook' : 'Náhled', 'cmdreload' : 'Obnovit', 'cmdrename' : 'Přejmenovat', 'cmdrm' : 'Smazat', 'cmdtrash' : 'Do koše', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'Obnovit', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'Najít soubory', 'cmdup' : 'Přejít do nadřazené složky', 'cmdupload' : 'Nahrát soubor(y)', 'cmdview' : 'Zobrazit', 'cmdresize' : 'Změnit velikost', 'cmdsort' : 'Seřadit', 'cmdnetmount' : 'Připojit síťovou jednotku', // added 18.04.2012 'cmdnetunmount': 'Odpojit', // from v2.1 added 30.04.2012 'cmdplaces' : 'Umístění', // added 28.12.2014 'cmdchmod' : 'Změnit režim', // from v2.1 added 20.6.2015 'cmdopendir' : 'Otevření složky', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'Obnovení šířku sloupce', // from v2.1.13 added 12.06.2016 'cmdfullscreen': 'Celá obrazovka', // from v2.1.15 added 03.08.2016 'cmdmove' : 'Posouvat', // from v2.1.15 added 21.08.2016 'cmdempty' : 'Vyprázdnit složku', // from v2.1.25 added 22.06.2017 'cmdundo' : 'Krok zpět', // from v2.1.27 added 31.07.2017 'cmdredo' : 'Udělat to znovu', // from v2.1.27 added 31.07.2017 'cmdpreference': 'Preference', // from v2.1.27 added 03.08.2017 'cmdselectall' : 'Vyberat vše', // from v2.1.28 added 15.08.2017 'cmdselectnone': 'Nic nevyberať', // from v2.1.28 added 15.08.2017 'cmdselectinvert': 'Invertovat výběr', // from v2.1.28 added 15.08.2017 'cmdopennew' : 'Otevři v novém okně', // from v2.1.38 added 3.4.2018 'cmdhide' : 'Skrýt (Předvolba)', // from v2.1.41 added 24.7.2018 /*********************************** buttons ***********************************/ 'btnClose' : 'Zavřít', 'btnSave' : 'Uložit', 'btnRm' : 'Odstranit', 'btnApply' : 'Použít', 'btnCancel' : 'Zrušit', 'btnNo' : 'Ne', 'btnYes' : 'Ano', 'btnMount' : 'Připojit', // added 18.04.2012 'btnApprove': 'Přejít do části 1 $ & schválit', // from v2.1 added 26.04.2012 'btnUnmount': 'Odpojit', // from v2.1 added 30.04.2012 'btnConv' : 'Převést', // from v2.1 added 08.04.2014 'btnCwd' : 'Tu', // from v2.1 added 22.5.2015 'btnVolume' : 'Médium', // from v2.1 added 22.5.2015 'btnAll' : 'Všechno', // from v2.1 added 22.5.2015 'btnMime' : 'MIME typ', // from v2.1 added 22.5.2015 'btnFileName':'Název souboru', // from v2.1 added 22.5.2015 'btnSaveClose': 'Uložit & zavřít', // from v2.1 added 12.6.2015 'btnBackup' : 'Zálohovat', // fromv2.1 added 28.11.2015 'btnRename' : 'Přejmenovat', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'Přejmenovat vše', // from v2.1.24 added 6.4.2017 'btnPrevious' : 'Předch ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : 'Další ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : 'Uložit jako', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'Otevírání složky', 'ntffile' : 'Otevírání souboru', 'ntfreload' : 'Obnovování obsahu složky', 'ntfmkdir' : 'Vytváření složky', 'ntfmkfile' : 'Vytváření souborů', 'ntfrm' : 'Vymazání položek', 'ntfcopy' : 'Kopírování položek', 'ntfmove' : 'Přemístění položek', 'ntfprepare' : 'Kontrola existujících položek', 'ntfrename' : 'Přejmenovávání souborů', 'ntfupload' : 'Nahrávání souborů', 'ntfdownload' : 'Stahování souborů', 'ntfsave' : 'Ukládání souborů', 'ntfarchive' : 'Vytváření archívu', 'ntfextract' : 'Rozbalování souborů z archívu', 'ntfsearch' : 'Vyhledávání souborů', 'ntfresize' : 'Změna velikosti obrázků', 'ntfsmth' : 'Čekejte prosím...', 'ntfloadimg' : 'Načítání obrázků', 'ntfnetmount' : 'Připojení síťového média', // added 18.04.2012 'ntfnetunmount': 'Odpojení síťového média', // from v2.1 added 30.04.2012 'ntfdim' : 'Získejte rozměr obrazu', // added 20.05.2013 'ntfreaddir' : 'Přečtěte si informace o složce', // from v2.1 added 01.07.2013 'ntfurl' : 'Získejte adresu URL odkazu', // from v2.1 added 11.03.2014 'ntfchmod' : 'Změna souboru', // from v2.1 added 20.6.2015 'ntfpreupload': 'Zkontrolujte název nahravaného souboru', // from v2.1 added 31.11.2015 'ntfzipdl' : 'Vytvořit soubor ke stažení', // from v2.1.7 added 23.1.2016 'ntfparents' : 'Získání informací o cestě', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'Zpracování nahraného souboru', // from v2.1.17 added 2.11.2016 'ntftrash' : 'Hodit do koše', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'Obnova z koše', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'Kontrola cílové složky', // from v2.1.24 added 3.5.2017 'ntfundo' : 'Zrušit předchozí operaci', // from v2.1.27 added 31.07.2017 'ntfredo' : 'Obnovit předchozí zrušení', // from v2.1.27 added 31.07.2017 'ntfchkcontent' : 'Kontrola obsahu', // from v2.1.41 added 3.8.2018 /*********************************** volumes *********************************/ 'volume_Trash' : 'Koš', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : 'neznámý', 'Today' : 'Dnes', 'Yesterday' : 'Včera', 'msJan' : 'Led', 'msFeb' : 'Úno', 'msMar' : 'Bře', 'msApr' : 'Dub', 'msMay' : 'Kvě', 'msJun' : 'Čer', 'msJul' : 'Čec', 'msAug' : 'Srp', 'msSep' : 'Zář', 'msOct' : 'Říj', 'msNov' : 'Lis', 'msDec' : 'Pro', 'January' : 'Leden', 'February' : 'Únor', 'March' : 'Březen', 'April' : 'Duben', 'May' : 'Květen', 'June' : 'Červen', 'July' : 'Červenec', 'August' : 'Srpen', 'September' : 'Září', 'October' : 'Říjen', 'November' : 'Listopad', 'December' : 'Prosinec', 'Sunday' : 'Neděle', 'Monday' : 'Pondělí', 'Tuesday' : 'Úterý', 'Wednesday' : 'Středa', 'Thursday' : 'Čtvrtek', 'Friday' : 'Pátek', 'Saturday' : 'Sobota', 'Sun' : 'Ne', 'Mon' : 'Po', 'Tue' : 'Út', 'Wed' : 'St', 'Thu' : 'Čt', 'Fri' : 'Pá', 'Sat' : 'So', /******************************** sort variants ********************************/ 'sortname' : 'dle jména', 'sortkind' : 'dle typu', 'sortsize' : 'dle velikosti', 'sortdate' : 'dle data', 'sortFoldersFirst' : 'Napřed složky', 'sortperm' : 'dle povolení', // from v2.1.13 added 13.06.2016 'sortmode' : 'dle módu', // from v2.1.13 added 13.06.2016 'sortowner' : 'dle majitele', // from v2.1.13 added 13.06.2016 'sortgroup' : 'dle skupiny', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'Také stromové zobrazení', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : 'Nový soubor.txt', // added 10.11.2015 'untitled folder' : 'Nová složka', // added 10.11.2015 'Archive' : 'Nový archiv', // from v2.1 added 10.11.2015 'untitled file' : 'Nový soubor.$1', // from v2.1.41 added 6.8.2018 'extentionfile' : '$1 soubor', // from v2.1.41 added 6.8.2018 'extentiontype' : '$1: $2', // from v2.1.43 added 17.10.2018 /********************************** messages **********************************/ 'confirmReq' : 'Požadováno potvrzení', 'confirmRm' : 'Opravdu chcete odstranit tyto soubory?
                Operace nelze vrátit!', 'confirmRepl' : 'Nahradit staré soubory novými?', 'confirmRest' : 'Nahradit stávající položku položkou z koše?', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'Není v UTF-8, převést do UTF-8?
                Obsah po převodu se stává UTF-8.', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'Kódování tohoto souboru nemoholo rozpoznán. Pro úpravy je třeba dočasně převést do kódování UTF-8.
                Prosím, vyberte kódování znaků souboru.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : 'Byl změněn.
                Pokud obsahuje neuložené změny, dojde ke ztrátě práce.', // from v2.1 added 15.7.2015 'confirmTrash' : 'Opravdu chcete položky přesunout do koše?', //from v2.1.24 added 29.4.2017 'confirmMove' : 'Opravdu chcete položky přesunout do "$1"?', //from v2.1.50 added 27.7.2019 'apllyAll' : 'Pro všechny', 'name' : 'Název', 'size' : 'Velikost', 'perms' : 'Práva', 'modify' : 'Upravený', 'kind' : 'Typ', 'read' : 'čtení', 'write' : 'zápis', 'noaccess' : 'přístup odepřen', 'and' : 'a', 'unknown' : 'neznámý', 'selectall' : 'Vybrat všechny položky', 'selectfiles' : 'Vybrat položku(y)', 'selectffile' : 'Vybrat první položku', 'selectlfile' : 'Vybrat poslední položku', 'viewlist' : 'Seznam', 'viewicons' : 'Ikony', 'viewSmall' : 'Malé ikony', // from v2.1.39 added 22.5.2018 'viewMedium' : 'Střední ikony', // from v2.1.39 added 22.5.2018 'viewLarge' : 'Velké ikony', // from v2.1.39 added 22.5.2018 'viewExtraLarge' : 'Extra velké ikony', // from v2.1.39 added 22.5.2018 'places' : 'Místa', 'calc' : 'Vypočítat', 'path' : 'Cesta', 'aliasfor' : 'Zástupce pro', 'locked' : 'Uzamčený', 'dim' : 'Rozměry', 'files' : 'Soubory', 'folders' : 'Složky', 'items' : 'Položky', 'yes' : 'ano', 'no' : 'ne', 'link' : 'Odkaz', 'searcresult' : 'Výsledky hledání', 'selected' : 'vybrané položky', 'about' : 'O softwaru', 'shortcuts' : 'Zkratky', 'help' : 'Nápověda', 'webfm' : 'Webový správce souborů', 'ver' : 'Verze', 'protocolver' : 'verze protokolu', 'homepage' : 'Domovská stránka projektu', 'docs' : 'Dokumentace', 'github' : 'Najdete nás na Gitgube', 'twitter' : 'Následujte nás na Twitteri', 'facebook' : 'Připojte se k nám na Facebooku', 'team' : 'Tým', 'chiefdev' : 'séf vývojářů', 'developer' : 'vývojár', 'contributor' : 'spolupracovník', 'maintainer' : 'údržba', 'translator' : 'překlad', 'icons' : 'Ikony', 'dontforget' : 'a nezapomeňte si vzít plavky', 'shortcutsof' : 'Zkratky nejsou povoleny', 'dropFiles' : 'Sem přetáhněte soubory', 'or' : 'nebo', 'selectForUpload' : 'Vyberte soubory', 'moveFiles' : 'Přesunout sobory', 'copyFiles' : 'Zkopírovat soubory', 'restoreFiles' : 'Obnovit položky', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'Odstranit z míst', 'aspectRatio' : 'Poměr stran', 'scale' : 'Měřítko', 'width' : 'Šířka', 'height' : 'Výška', 'resize' : 'Změnit vel.', 'crop' : 'Ořezat', 'rotate' : 'Otočit', 'rotate-cw' : 'Otočit o +90 stupňů', 'rotate-ccw' : 'Otočit o -90 stupňů', 'degree' : ' stupňů', 'netMountDialogTitle' : 'Připojení síťového média', // added 18.04.2012 'protocol' : 'Protokol', // added 18.04.2012 'host' : 'Host', // added 18.04.2012 'port' : 'Port', // added 18.04.2012 'user' : 'Uživatel', // added 18.04.2012 'pass' : 'Heslo', // added 18.04.2012 'confirmUnmount' : 'Chcete odpojit $1?', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'Přemístěte nebo přesuňte soubory z prohlížeče', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'Zde přemístěte nebo přesuňte soubory a adresy URL', // from v2.1 added 07.04.2014 'encoding' : 'Kódování', // from v2.1 added 19.12.2014 'locale' : 'Lokalizce', // from v2.1 added 19.12.2014 'searchTarget' : 'Cíl: $1', // from v2.1 added 22.5.2015 'searchMime' : 'Vyhledávání podle vstupního MIME typu', // from v2.1 added 22.5.2015 'owner' : 'Majitel', // from v2.1 added 20.6.2015 'group' : 'Skupina', // from v2.1 added 20.6.2015 'other' : 'Ostatní', // from v2.1 added 20.6.2015 'execute' : 'Spustit', // from v2.1 added 20.6.2015 'perm' : 'Povolení', // from v2.1 added 20.6.2015 'mode' : 'Režim', // from v2.1 added 20.6.2015 'emptyFolder' : 'Složka je prázdná', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'Složka je prázdná, přesunout nebo zkontrolovat položky', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'Složka je prázdná, dlouhim kliknutím přidáte položky', // from v2.1.6 added 30.12.2015 'quality' : 'Kvalita', // from v2.1.6 added 5.1.2016 'autoSync' : 'Automatická synchronizace', // from v2.1.6 added 10.1.2016 'moveUp' : 'Přesunout nahoru', // from v2.1.6 added 18.1.2016 'getLink' : 'Získat URL odkaz', // from v2.1.7 added 9.2.2016 'selectedItems' : 'Vybrané položky ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'ID složky', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'Povolit přístup offline', // from v2.1.10 added 3.25.2016 'reAuth' : 'Znovu ověřit', // from v2.1.10 added 3.25.2016 'nowLoading' : 'Načítání...', // from v2.1.12 added 4.26.2016 'openMulti' : 'Otevření více souborů', // from v2.1.12 added 5.14.2016 'openMultiConfirm': 'Pokoušíte se otevřít soubor $1. Chcete jej otevřít v prohlížeči?', // from v2.1.12 added 5.14.2016 'emptySearch' : 'Výsledky hledání jsou prázdné', // from v2.1.12 added 5.16.2016 'editingFile' : 'Upravujete soubor.', // from v2.1.13 added 6.3.2016 'hasSelected' : 'Vybrali jste $1 položky.', // from v2.1.13 added 6.3.2016 'hasClipboard' : 'Máte $1 položky v schránce.', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'Inkrementální hledání je pouze z aktuálního zobrazení.', // from v2.1.13 added 6.30.2016 'reinstate' : 'Obnovit', // from v2.1.15 added 3.8.2016 'complete' : '$1 kompletní', // from v2.1.15 added 21.8.2016 'contextmenu' : 'Kontextové menu', // from v2.1.15 added 9.9.2016 'pageTurning' : 'Otáčení stránky', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'Kořeny média', // from v2.1.16 added 16.9.2016 'reset' : 'Obnovit', // from v2.1.16 added 1.10.2016 'bgcolor' : 'Barva pozadí', // from v2.1.16 added 1.10.2016 'colorPicker' : 'Výběr barvy', // from v2.1.16 added 1.10.2016 '8pxgrid' : '8px mřížka', // from v2.1.16 added 4.10.2016 'enabled' : 'Povoleno', // from v2.1.16 added 4.10.2016 'disabled' : 'Zakázáno', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'Výsledky hledání jsou prázdné v aktuálním zobrazení.\\Stisknutím tlačítka [Enter] rozšíříte vyhledávání cíle.', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'Výsledky vyhledávání prvního listu jsou v aktuálním zobrazení prázdné.', // from v2.1.23 added 24.3.2017 'textLabel' : 'Nápis textu', // from v2.1.17 added 13.10.2016 'minsLeft' : '$1 minut zůstává', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'Otevřít pomocí zvoleného kódování', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'Uložit s vybraným kódováním', // from v2.1.19 added 2.12.2016 'selectFolder' : 'Vyberte složku', // from v2.1.20 added 13.12.2016 'firstLetterSearch': 'Hledání prvního listu', // from v2.1.23 added 24.3.2017 'presets' : 'Předvolby', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : 'Je to příliš mnoho položek, takže se nemohou dostat do koše.', // from v2.1.25 added 9.6.2017 'TextArea' : 'Textarea', // from v2.1.25 added 14.6.2017 'folderToEmpty' : 'Vyprázdnit složku "$1".', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : 'Ve složce "$1" nejsou žádné položky.', // from v2.1.25 added 22.6.2017 'preference' : 'Předvolby', // from v2.1.26 added 28.6.2017 'language' : 'Nastavte jazyk', // from v2.1.26 added 28.6.2017 'clearBrowserData': 'Inicializujte nastavení uložená v tomto prohlížeči', // from v2.1.26 added 28.6.2017 'toolbarPref' : 'Nastavení panelu nástrojů', // from v2.1.27 added 2.8.2017 'charsLeft' : '...$1 znaků zbývá.', // from v2.1.29 added 30.8.2017 'linesLeft' : '...$1 řádků zůstává.', // from v2.1.52 added 16.1.2020 'sum' : 'Součet', // from v2.1.29 added 28.9.2017 'roughFileSize' : 'Hrubá velikost souboru', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : 'Zaměření na prvek dialogu s mouseover', // from v2.1.30 added 2.11.2017 'select' : 'Vybrat', // from v2.1.30 added 23.11.2017 'selectAction' : 'Akce při vybraném souboru', // from v2.1.30 added 23.11.2017 'useStoredEditor' : 'Otevřít pomocí naposledy použitého editoru', // from v2.1.30 added 23.11.2017 'selectinvert' : 'Obrátit výběr položek', // from v2.1.30 added 25.11.2017 'renameMultiple' : 'Opravdu chcete přejmenovat $1 vybraných položek, jako například $2
                Není to možné vrátit zpět!', // from v2.1.31 added 4.12.2017 'batchRename' : 'Batch přejmenování', // from v2.1.31 added 8.12.2017 'plusNumber' : '+ Číslo', // from v2.1.31 added 8.12.2017 'asPrefix' : 'Přidat předponu', // from v2.1.31 added 8.12.2017 'asSuffix' : 'Přidat příponu', // from v2.1.31 added 8.12.2017 'changeExtention' : 'Změnit příponu', // from v2.1.31 added 8.12.2017 'columnPref' : 'Nastavení sloupců (Zobrazení seznamu)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : 'Všechny změny se okamžitě projeví v archivu.', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : 'Jakékoliv změny se nebudou odrážet, dokud nebude tento svazek odpojen.', // from v2.1.33 added 2.3.2018 'unmountChildren' : 'Následující svazky namontované na tomto svazku jsou také odpojeny. Opravdu ji odpojíte?', // from v2.1.33 added 5.3.2018 'selectionInfo' : 'Informace o výběru', // from v2.1.33 added 7.3.2018 'hashChecker' : 'Algoritmy pro zobrazení hashování souborů', // from v2.1.33 added 10.3.2018 'infoItems' : 'Informační položky (panel s informacemi o výběru)', // from v2.1.38 added 28.3.2018 'pressAgainToExit': 'Dalším stisknutím opustíte.', // from v2.1.38 added 1.4.2018 'toolbar' : 'Panel nástrojů', // from v2.1.38 added 4.4.2018 'workspace' : 'Pracovní prostor', // from v2.1.38 added 4.4.2018 'dialog' : 'Dialog', // from v2.1.38 added 4.4.2018 'all' : 'Všechno', // from v2.1.38 added 4.4.2018 'iconSize' : 'Velikost ikony (zobrazení ikon)', // from v2.1.39 added 7.5.2018 'editorMaximized' : 'Otevřete maximalizované okno editora', // from v2.1.40 added 30.6.2018 'editorConvNoApi' : 'Protože konverze podle API momentálně není k dispozici, převeďte na webové stránce.', //from v2.1.40 added 8.7.2018 'editorConvNeedUpload' : 'Po konverzi musíte nahrát převeden soubor pomocí URL položky nebo stažený soubor k uložení převedeného souboru.', //from v2.1.40 added 8.7.2018 'convertOn' : 'Převést na stránce $1', // from v2.1.40 added 10.7.2018 'integrations' : 'Integrace', // from v2.1.40 added 11.7.2018 'integrationWith' : 'Tento elFinder má integrované následující externí služby. Před použitím zkontrolujte podmínky používání, zásady ochrany osobních údajů atd.', // from v2.1.40 added 11.7.2018 'showHidden' : 'Zobrazit skryté položky', // from v2.1.41 added 24.7.2018 'hideHidden' : 'Skrýt skryté položky', // from v2.1.41 added 24.7.2018 'toggleHidden' : 'Zobrazit/skrýt skryté položky', // from v2.1.41 added 24.7.2018 'makefileTypes' : 'Typy souborů, jež mají být povoleny pomocí "Nový soubor"', // from v2.1.41 added 7.8.2018 'typeOfTextfile' : 'Typ textového souboru', // from v2.1.41 added 7.8.2018 'add' : 'Přidat', // from v2.1.41 added 7.8.2018 'theme' : 'Téma', // from v2.1.43 added 19.10.2018 'default' : 'Výchozí', // from v2.1.43 added 19.10.2018 'description' : 'Popis', // from v2.1.43 added 19.10.2018 'website' : 'Stránka', // from v2.1.43 added 19.10.2018 'author' : 'Autor', // from v2.1.43 added 19.10.2018 'email' : 'E-mail', // from v2.1.43 added 19.10.2018 'license' : 'Licence', // from v2.1.43 added 19.10.2018 'exportToSave' : 'Tuto položku nelze uložit. Abyste se vyhnuli ztrátě úprav, musíte je exportovat do počítače.', // from v2.1.44 added 1.12.2018 'dblclickToSelect': 'Poklepáním na soubor jej vyberte.', // from v2.1.47 added 22.1.2019 'useFullscreen' : 'Použít režim celé obrazovky', // from v2.1.47 added 19.2.2019 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Neznámý', 'kindRoot' : 'Kořen média', // from v2.1.16 added 16.10.2016 'kindFolder' : 'Složka', 'kindSelects' : 'Výběry', // from v2.1.29 added 29.8.2017 'kindAlias' : 'Alias', 'kindAliasBroken' : 'Zlomený alias', // applications 'kindApp' : 'Aplikace', 'kindPostscript' : 'Dokument Postscriptu', 'kindMsOffice' : 'Dokument Microsoft Office', 'kindMsWord' : 'Dokument Microsoft Word', 'kindMsExcel' : 'Dokument Microsoft Excel', 'kindMsPP' : 'Prezentace Microsoft Powerpoint', 'kindOO' : 'Otevřít dokument Office', 'kindAppFlash' : 'Flash aplikace', 'kindPDF' : 'PDF', 'kindTorrent' : 'Soubor BitTorrent', 'kind7z' : 'Archív 7z', 'kindTAR' : 'Archív TAR', 'kindGZIP' : 'Archív GZIP', 'kindBZIP' : 'Archív BZIP', 'kindXZ' : 'Archív XZ', 'kindZIP' : 'Archív ZIP', 'kindRAR' : 'Archív RAR', 'kindJAR' : 'Soubor Java JAR', 'kindTTF' : 'True Type font', 'kindOTF' : 'Open Type font', 'kindRPM' : 'RPM balíček', // texts 'kindText' : 'Textový dokument', 'kindTextPlain' : 'Čistý text', 'kindPHP' : 'PHP zdrojový kód', 'kindCSS' : 'Kaskádové styly', 'kindHTML' : 'HTML dokument', 'kindJS' : 'Javascript zdrojový kód', 'kindRTF' : 'Rich Text Format', 'kindC' : 'C zdrojový kód', 'kindCHeader' : 'C hlavička', 'kindCPP' : 'C++ zdrojový kód', 'kindCPPHeader' : 'C++ hlavička', 'kindShell' : 'Unix shell skript', 'kindPython' : 'Python zdrojový kód', 'kindJava' : 'Java zdrojový kód', 'kindRuby' : 'Ruby zdrojový kód', 'kindPerl' : 'Perl skript', 'kindSQL' : 'SQL zdrojový kód', 'kindXML' : 'Dokument XML', 'kindAWK' : 'AWK zdrojový kód', 'kindCSV' : 'CSV', 'kindDOCBOOK' : 'Docbook XML dokument', 'kindMarkdown' : 'Markdown text', // added 20.7.2015 // images 'kindImage' : 'Obrázek', 'kindBMP' : 'Obrázek BMP', 'kindJPEG' : 'Obrázek JPEG', 'kindGIF' : 'Obrázek GIF', 'kindPNG' : 'Obrázek PNG', 'kindTIFF' : 'Obrázek TIFF', 'kindTGA' : 'Obrázek TGA', 'kindPSD' : 'Obrázek Adobe Photoshop', 'kindXBITMAP' : 'Obrázek X bitmapa', 'kindPXM' : 'Obrázek Pixelmator', // media 'kindAudio' : 'Audio sobory', 'kindAudioMPEG' : 'MPEG audio', 'kindAudioMPEG4' : 'MPEG-4 audio', 'kindAudioMIDI' : 'MIDI audio', 'kindAudioOGG' : 'Ogg Vorbis audio', 'kindAudioWAV' : 'WAV audio', 'AudioPlaylist' : 'MP3 playlist', 'kindVideo' : 'Video sobory', 'kindVideoDV' : 'DV video', 'kindVideoMPEG' : 'MPEG video', 'kindVideoMPEG4' : 'MPEG-4 video', 'kindVideoAVI' : 'AVI video', 'kindVideoMOV' : 'Quick Time video', 'kindVideoWM' : 'Windows Media video', 'kindVideoFlash' : 'Flash video', 'kindVideoMKV' : 'Matroska video', 'kindVideoOGG' : 'Ogg video' } }; })); plugins/file-manager-advanced/application/library/js/i18n/elfinder.da.js000064400000100447147176754550022225 0ustar00/** * Danish translation * @author Mark Topper (webman.io) * @author Helmuth Mikkelsen * @version 2020-11-27 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.da = { translator : 'Mark Topper (webman.io), Helmuth Mikkelsen <helmuthm@gmail.com>', language : 'Danish', direction : 'ltr', dateFormat : 'd.m.Y H:i', // will show like: 27.11.2020 11:50 fancyDateFormat : '$1 H:i', // will show like: I dag 11:50 nonameDateFormat : 'Ymd-His', // noname upload will show like: 20201127-115006 messages : { /********************************** errors **********************************/ 'error' : 'Fejl', 'errUnknown' : 'Ukendt fejl.', 'errUnknownCmd' : 'Ukendt kommando.', 'errJqui' : 'Ugyldig jQuery UI-konfiguration. Valgbare, trækbare og dropbare komponenter skal medtages.', 'errNode' : 'elFinder kræver DOM Element oprettet.', 'errURL' : 'Ugyldig elFinder konfiguration! URL option er ikke sat.', 'errAccess' : 'Adgang nægtet.', 'errConnect' : 'Kan ikke få kontatkt med backend.', 'errAbort' : 'Forbindelse afbrudt.', 'errTimeout' : 'Forbindelse timeout.', 'errNotFound' : 'Backend ikke fundet.', 'errResponse' : 'Ugyldigt backend svar.', 'errConf' : 'Ugyldig backend konfiguration.', 'errJSON' : 'PHP JSON modul ikke installeret.', 'errNoVolumes' : 'Læsbare diskenheder er ikke tilgængelige.', 'errCmdParams' : 'Ugyldige parametre for kommando "$1".', 'errDataNotJSON' : 'Data er ikke JSON.', 'errDataEmpty' : 'Data er tom.', 'errCmdReq' : 'Backend-anmodning kræver kommandonavn.', 'errOpen' : 'Kunne ikke åbne "$1".', 'errNotFolder' : 'Objektet er ikke en mappe.', 'errNotFile' : 'Objektet er ikke en fil.', 'errRead' : 'Kunne ikke læse "$1".', 'errWrite' : 'Kunne ikke skrive til "$1".', 'errPerm' : 'Adgang nægtet.', 'errLocked' : '"$1" er låst og kan ikke blive omdøbt, flyttet eller slettet.', 'errExists' : 'Der findes allerede en fil ved navn "$1".', 'errInvName' : 'Ugyldigt filnavn.', 'errInvDirname' : 'Ugyldigt mappenavn.', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : 'Mappe ikke fundet.', 'errFileNotFound' : 'Fil ikke fundet.', 'errTrgFolderNotFound' : 'Mappen "$1" blev ikke fundet.', 'errPopup' : 'Browser forhindrede åbning af pop up-vindue. For at åbne filen skal du aktivere den i browserindstillinger.', 'errMkdir' : 'Kunne ikke oprette mappen "$1".', 'errMkfile' : 'Kunne ikke oprette filen "$1".', 'errRename' : 'Kunne ikke omdøbe "$1".', 'errCopyFrom' : 'Kopiering af filer fra diskenhed "$1" er ikke tilladt.', 'errCopyTo' : 'Kopiering af filer til diskenhed "$1" er ikke tilladt.', 'errMkOutLink' : 'Kan ikke oprette et link til uden for diskenhedsroden.', // from v2.1 added 03.10.2015 'errUpload' : 'Upload fejl.', // old name - errUploadCommon 'errUploadFile' : 'Kunne ikke uploade "$1".', // old name - errUpload 'errUploadNoFiles' : 'Ingen filer fundet til upload.', 'errUploadTotalSize' : 'Data overskrider den maksimalt tilladte størrelse.', // old name - errMaxSize 'errUploadFileSize' : 'Fil overskrider den maksimalt tilladte størrelse.', // old name - errFileMaxSize 'errUploadMime' : 'Filtype ikke godkendt.', 'errUploadTransfer' : '"$1" overførselsfejl.', 'errUploadTemp' : 'Kan ikke oprette midlertidig fil til upload.', // from v2.1 added 26.09.2015 'errNotReplace' : 'Objekt "$1" findes allerede på dette sted og kan ikke erstattes af objekt med en anden type.', // new 'errReplace' : 'Kan ikke erstatte "$1".', 'errSave' : 'Kunne ikke gemme "$1".', 'errCopy' : 'Kunne ikke kopiere "$1".', 'errMove' : 'Kunne ikke flytte "$1".', 'errCopyInItself' : 'Kunne ikke kopiere "$1" til sig selv.', 'errRm' : 'Kunne ikke slette "$1".', 'errTrash' : 'Kan ikke komme i papirkurven.', // from v2.1.24 added 30.4.2017 'errRmSrc' : 'Kunne ikke fjerne kildefil(er).', 'errExtract' : 'Kunne ikke udpakke filer fra "$1".', 'errArchive' : 'Kunne ikke oprette arkiv.', 'errArcType' : 'Arkivtypen er ikke understøttet.', 'errNoArchive' : 'Filen er ikke et arkiv eller har ien kke-understøttet arkivtype.', 'errCmdNoSupport' : 'Backend understøtter ikke denne kommando.', 'errReplByChild' : 'Mappen "$1" kan ikke erstattes af et element, den indeholder.', 'errArcSymlinks' : 'Af sikkerhedsmæssige årsager nægtes at udpakke arkiver der indeholder symlinks eller filer med ikke-tilladte navne.', // edited 24.06.2012 'errArcMaxSize' : 'Arkivfiler overskrider den maksimalt tilladte størrelse.', 'errResize' : 'Kunne ikke ændre størrelsen på "$1".', 'errResizeDegree' : 'Ugyldig rotationsgrad.', // added 7.3.2013 'errResizeRotate' : 'Kunne ikke rotere billedet.', // added 7.3.2013 'errResizeSize' : 'Ugyldig billedstørrelse.', // added 7.3.2013 'errResizeNoChange' : 'Billedstørrelse ikke ændret.', // added 7.3.2013 'errUsupportType' : 'Ikke-understøttet filtype.', 'errNotUTF8Content' : 'Filen "$1" er ikke i UTF-8 og kan ikke blive redigeret.', // added 9.11.2011 'errNetMount' : 'Kunne ikke mounte "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'Ikke-understøttet protokol.', // added 17.04.2012 'errNetMountFailed' : 'Mount mislykkedes.', // added 17.04.2012 'errNetMountHostReq' : 'Værten kræves.', // added 18.04.2012 'errSessionExpires' : 'Din session er udløbet på grund af inaktivitet.', 'errCreatingTempDir' : 'Kunne ikke oprette midlertidig mappe: "$1"', 'errFtpDownloadFile' : 'Kunne ikke downloade filen fra FTP: "$1"', 'errFtpUploadFile' : 'Kunne ikke uploade filen til FTP: "$1"', 'errFtpMkdir' : 'Kunne ikke oprette fjernmappe på FTP: "$1"', 'errArchiveExec' : 'Fejl under arkivering af filer: "$1"', 'errExtractExec' : 'Fejl under udpakning af filer: "$1"', 'errNetUnMount' : 'Kan ikke unmounte.', // from v2.1 added 30.04.2012 'errConvUTF8' : 'Kan ikke konverteres til UTF-8', // from v2.1 added 08.04.2014 'errFolderUpload' : 'Prøv den nyeste browser, hvis du vil uploade mappen.', // from v2.1 added 26.6.2015 'errSearchTimeout' : 'Time out under søgning på "$1". Søgeresultatet er delvis.', // from v2.1 added 12.1.2016 'errReauthRequire' : 'Re-autorisation er påkrævet.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'Maksimalt antal valgbare emner er $1.', // from v2.1.17 added 17.10.2016 'errRestore' : 'Kan ikke gendannes fra papirkurven. Kan ikke identificere gendannelsesdestinationen.', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'Editor blev ikke fundet til denne filtype.', // from v2.1.25 added 23.5.2017 'errServerError' : 'Der opstod en fejl på serversiden.', // from v2.1.25 added 16.6.2017 'errEmpty' : 'Kunne ikke tømme mappen "$1".', // from v2.1.25 added 22.6.2017 'moreErrors' : 'Der er $1 flere fejl.', // from v2.1.44 added 9.12.2018 /******************************* commands names ********************************/ 'cmdarchive' : 'Opret arkiv', 'cmdback' : 'Tilbage', 'cmdcopy' : 'Kopier', 'cmdcut' : 'Klip', 'cmddownload' : 'Download', 'cmdduplicate' : 'Dupliker', 'cmdedit' : 'Rediger fil', 'cmdextract' : 'Udpak filer fra arkiv', 'cmdforward' : 'Frem', 'cmdgetfile' : 'Vælg filer', 'cmdhelp' : 'Om denne software', 'cmdhome' : 'Hjem', 'cmdinfo' : 'Information', 'cmdmkdir' : 'Ny mappe', 'cmdmkdirin' : 'I en ny mappe', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'Ny fil', 'cmdopen' : 'Åben', 'cmdpaste' : 'Indsæt', 'cmdquicklook' : 'Vis', 'cmdreload' : 'Genindlæs', 'cmdrename' : 'Omdøb', 'cmdrm' : 'Slet', 'cmdtrash' : 'I papirkurven', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'Gendan', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'Find filer', 'cmdup' : 'Gå til overordnet mappe', 'cmdupload' : 'Upload filer', 'cmdview' : 'Vis', 'cmdresize' : 'Tilpas størrelse & Roter', 'cmdsort' : 'Sorter', 'cmdnetmount' : 'Mount netværksdrev', // added 18.04.2012 'cmdnetunmount': 'Unmount', // from v2.1 added 30.04.2012 'cmdplaces' : 'Til steder', // added 28.12.2014 'cmdchmod' : 'Skift tilstand', // from v2.1 added 20.6.2015 'cmdopendir' : 'Åbn en mappe', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'Nulstil søjlebredde', // from v2.1.13 added 12.06.2016 'cmdfullscreen': 'Fuld skærm', // from v2.1.15 added 03.08.2016 'cmdmove' : 'Flyt', // from v2.1.15 added 21.08.2016 'cmdempty' : 'Tøm mappe', // from v2.1.25 added 22.06.2017 'cmdundo' : 'Fortryd', // from v2.1.27 added 31.07.2017 'cmdredo' : 'Gentag igen', // from v2.1.27 added 31.07.2017 'cmdpreference': 'Præferencer', // from v2.1.27 added 03.08.2017 'cmdselectall' : 'Vælg alle', // from v2.1.28 added 15.08.2017 'cmdselectnone': 'Vælg ingen', // from v2.1.28 added 15.08.2017 'cmdselectinvert': 'Inverter valg', // from v2.1.28 added 15.08.2017 'cmdopennew' : 'Åbn i nyt vindue', // from v2.1.38 added 3.4.2018 'cmdhide' : 'Skjul (præference)', // from v2.1.41 added 24.7.2018 /*********************************** buttons ***********************************/ 'btnClose' : 'Luk', 'btnSave' : 'Gem', 'btnRm' : 'Slet', 'btnApply' : 'Anvend', 'btnCancel' : 'Annuler', 'btnNo' : 'Nej', 'btnYes' : 'Ja', 'btnMount' : 'Mount', // added 18.04.2012 'btnApprove': 'Gå til $1 & godkend', // from v2.1 added 26.04.2012 'btnUnmount': 'Unmount', // from v2.1 added 30.04.2012 'btnConv' : 'Konverter', // from v2.1 added 08.04.2014 'btnCwd' : 'Her', // from v2.1 added 22.5.2015 'btnVolume' : 'Diskenhed', // from v2.1 added 22.5.2015 'btnAll' : 'Alle', // from v2.1 added 22.5.2015 'btnMime' : 'MIME-type', // from v2.1 added 22.5.2015 'btnFileName':'Filnavn', // from v2.1 added 22.5.2015 'btnSaveClose': 'Gem & Luk', // from v2.1 added 12.6.2015 'btnBackup' : 'Backup', // fromv2.1 added 28.11.2015 'btnRename' : 'Omdøb', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'Omdøb(Alle)', // from v2.1.24 added 6.4.2017 'btnPrevious' : 'Forrige ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : 'Næste ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : 'Gem som', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'Åben mappe', 'ntffile' : 'Åben fil', 'ntfreload' : 'Genindlæs mappeindhold', 'ntfmkdir' : 'Opretter mappe', 'ntfmkfile' : 'Opretter filer', 'ntfrm' : 'Sletter filer', 'ntfcopy' : 'Kopier filer', 'ntfmove' : 'Flytter filer', 'ntfprepare' : 'Kontrol af eksisterende emner', 'ntfrename' : 'Omdøb filer', 'ntfupload' : 'Uploader filer', 'ntfdownload' : 'Downloader filer', 'ntfsave' : 'Gemmer filer', 'ntfarchive' : 'Opretter arkiv', 'ntfextract' : 'Udpakker filer fra arkiv', 'ntfsearch' : 'Søger filer', 'ntfresize' : 'Ændring af størrelsen på billeder', 'ntfsmth' : 'Gør noget', 'ntfloadimg' : 'Henter billede', 'ntfnetmount' : 'Mounter netværksdrev', // added 18.04.2012 'ntfnetunmount': 'Unmounter netværksdrev', // from v2.1 added 30.04.2012 'ntfdim' : 'Henter billeddimension', // added 20.05.2013 'ntfreaddir' : 'Læser folderinfomation', // from v2.1 added 01.07.2013 'ntfurl' : 'Får URL til link', // from v2.1 added 11.03.2014 'ntfchmod' : 'Ændring af filtilstand', // from v2.1 added 20.6.2015 'ntfpreupload': 'Bekræftelse af upload filnavn', // from v2.1 added 31.11.2015 'ntfzipdl' : 'Oprettelse af en fil til download', // from v2.1.7 added 23.1.2016 'ntfparents' : 'Få stiinformation', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'Behandler den uploadede fil', // from v2.1.17 added 2.11.2016 'ntftrash' : 'Smider i papirkurv', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'Udfører gendannelse fra papirkurven', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'Kontrollerer destinationsmappe', // from v2.1.24 added 3.5.2017 'ntfundo' : 'Fortryder tidligere handling', // from v2.1.27 added 31.07.2017 'ntfredo' : 'Gentager tidligere fortryd', // from v2.1.27 added 31.07.2017 'ntfchkcontent' : 'Kontrol af indhold', // from v2.1.41 added 3.8.2018 /*********************************** volumes *********************************/ 'volume_Trash' : 'Papirkurv', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : 'ukendt', 'Today' : 'I dag', 'Yesterday' : 'I går', 'msJan' : 'Jan', 'msFeb' : 'Feb', 'msMar' : 'Mar', 'msApr' : 'Apr', 'msMay' : 'Maj', 'msJun' : 'Jun', 'msJul' : 'Jul', 'msAug' : 'Aug', 'msSep' : 'Sep', 'msOct' : 'Okt', 'msNov' : 'Nov', 'msDec' : 'Dec', 'January' : 'Januar', 'February' : 'Februar', 'March' : 'Marts', 'April' : 'April', 'May' : 'Maj', 'June' : 'Juni', 'July' : 'Juli', 'August' : 'August', 'September' : 'September', 'October' : 'Oktober', 'November' : 'November', 'December' : 'December', 'Sunday' : 'Søndag', 'Monday' : 'Mandag', 'Tuesday' : 'Tirsdag', 'Wednesday' : 'Onsdag', 'Thursday' : 'Torsdag', 'Friday' : 'Fredag', 'Saturday' : 'Lørdag', 'Sun' : 'Søn', 'Mon' : 'Man', 'Tue' : 'Tir', 'Wed' : 'Ons', 'Thu' : 'Tor', 'Fri' : 'Fre', 'Sat' : 'Lør', /******************************** sort variants ********************************/ 'sortname' : 'efter navn', 'sortkind' : 'efter type', 'sortsize' : 'efter størrelse', 'sortdate' : 'efter dato', 'sortFoldersFirst' : 'Mapper først', 'sortperm' : 'efter tilladelse', // from v2.1.13 added 13.06.2016 'sortmode' : 'efter mode', // from v2.1.13 added 13.06.2016 'sortowner' : 'efter ejer', // from v2.1.13 added 13.06.2016 'sortgroup' : 'efter gruppe', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'Også Treeview', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : 'NyFil.txt', // added 10.11.2015 'untitled folder' : 'NyFolder', // added 10.11.2015 'Archive' : 'NytArkiv', // from v2.1 added 10.11.2015 'untitled file' : 'NyFil.$1', // from v2.1.41 added 6.8.2018 'extentionfile' : '$1: Fil', // from v2.1.41 added 6.8.2018 'extentiontype' : '$1: $2', // from v2.1.43 added 17.10.2018 /********************************** messages **********************************/ 'confirmReq' : 'Bekræftelse påkrævet', 'confirmRm' : 'Er du sikker på du vil slette valgte filer?
                Dette kan ikke fortrydes!', 'confirmRepl' : 'Erstat gammel fil med ny fil?', 'confirmRest' : 'Erstat eksisterende element med elementet i papirkurven?', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'Ikke i UTF-8
                Konverter til UTF-8?
                Indholdet bliver UTF-8 ved at gemme efter konvertering.', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'Tegnkodning af denne fil kunne ikke registreres. Det er nødvendigt at konvertere midlertidigt til UTF-8 til redigering.
                Vælg tegnkodning af denne fil.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : 'Det er blevet ændret.
                Du mister arbejde, hvis du ikke gemmer ændringer.', // from v2.1 added 15.7.2015 'confirmTrash' : 'Er du sikker på, at du vil flytte emner til papirkurven?', //from v2.1.24 added 29.4.2017 'confirmMove' : 'Er du sikker på, at du vil flytte emner til "$1"?', //from v2.1.50 added 27.7.2019 'apllyAll' : 'Anvend ved alle', 'name' : 'Navn', 'size' : 'Størrelse', 'perms' : 'Rettigheder', 'modify' : 'Ændret', 'kind' : 'Type', 'read' : 'læse', 'write' : 'skrive', 'noaccess' : 'ingen adgang', 'and' : 'og', 'unknown' : 'ukendt', 'selectall' : 'Vælg alle filer', 'selectfiles' : 'Vælg fil(er)', 'selectffile' : 'Vælg første fil', 'selectlfile' : 'Vælg sidste fil', 'viewlist' : 'Listevisning', 'viewicons' : 'Ikonvisning', 'viewSmall' : 'Små ikoner', // from v2.1.39 added 22.5.2018 'viewMedium' : 'Medium ikoner', // from v2.1.39 added 22.5.2018 'viewLarge' : 'Store ikoner', // from v2.1.39 added 22.5.2018 'viewExtraLarge' : 'Ekstra store ikoner', // from v2.1.39 added 22.5.2018 'places' : 'Placeringer', 'calc' : 'Beregn', 'path' : 'Sti', 'aliasfor' : 'Alias for', 'locked' : 'Låst', 'dim' : 'Størrelser', 'files' : 'Filer', 'folders' : 'Mapper', 'items' : 'Emner', 'yes' : 'ja', 'no' : 'nej', 'link' : 'Link', 'searcresult' : 'Søgeresultater', 'selected' : 'valgte emner', 'about' : 'Om', 'shortcuts' : 'Genveje', 'help' : 'Hjælp', 'webfm' : 'Internet filmanager', 'ver' : 'Version', 'protocolver' : 'protokol version', 'homepage' : 'Projektside', 'docs' : 'Dokumentation', 'github' : 'Fork os på Github', 'twitter' : 'Følg os på Twitter', 'facebook' : 'Følg os på Facebook', 'team' : 'Hold', 'chiefdev' : 'hovedudvikler', 'developer' : 'udvikler', 'contributor' : 'bidragyder', 'maintainer' : 'vedligeholder', 'translator' : 'oversætter', 'icons' : 'Ikoner', 'dontforget' : 'og glem ikke at tage dit håndklæde', 'shortcutsof' : 'Gemveje deaktiveret', 'dropFiles' : 'Drop filer hertil', 'or' : 'eller', 'selectForUpload' : 'Vælg filer', 'moveFiles' : 'Flyt filer', 'copyFiles' : 'Kopier filer', 'restoreFiles' : 'Gendan emner', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'Slet fra placering', 'aspectRatio' : 'Skærmformat', 'scale' : 'Skala', 'width' : 'Bredde', 'height' : 'Højde', 'resize' : 'Tilpas størrelse', 'crop' : 'Beskær', 'rotate' : 'Roter', 'rotate-cw' : 'Roter 90 grader med uret', 'rotate-ccw' : 'Roter 90 grader mod uret', 'degree' : 'Grader', 'netMountDialogTitle' : 'Mount netwærkdrev', // added 18.04.2012 'protocol' : 'Protokol', // added 18.04.2012 'host' : 'Vært', // added 18.04.2012 'port' : 'Port', // added 18.04.2012 'user' : 'Bruger', // added 18.04.2012 'pass' : 'Kodeord', // added 18.04.2012 'confirmUnmount' : 'Unmounter du $1?', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'Slip eller indsæt filer fra browseren', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'Slip filer, indsæt webadresser eller billeder (udklipsholder) her', // from v2.1 added 07.04.2014 'encoding' : 'Encoding', // from v2.1 added 19.12.2014 'locale' : 'Locale', // from v2.1 added 19.12.2014 'searchTarget' : 'Target: $1', // from v2.1 added 22.5.2015 'searchMime' : 'Søg efter input MIME-type', // from v2.1 added 22.5.2015 'owner' : 'Ejer', // from v2.1 added 20.6.2015 'group' : 'Gruppe', // from v2.1 added 20.6.2015 'other' : 'Andet', // from v2.1 added 20.6.2015 'execute' : 'Udfør', // from v2.1 added 20.6.2015 'perm' : 'Tilladelse', // from v2.1 added 20.6.2015 'mode' : 'Mode', // from v2.1 added 20.6.2015 'emptyFolder' : 'Mappe er tom', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'Mappe er tom\\A Drop for at tilføje enmer', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'Mappen er tom\\A Langt tryk for at tilføje emner', // from v2.1.6 added 30.12.2015 'quality' : 'Kvalitet', // from v2.1.6 added 5.1.2016 'autoSync' : 'Autosync', // from v2.1.6 added 10.1.2016 'moveUp' : 'Flyt op', // from v2.1.6 added 18.1.2016 'getLink' : 'Hent URL-link', // from v2.1.7 added 9.2.2016 'selectedItems' : 'Valgte emner ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'Folder-ID', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'Tillad offline adgang', // from v2.1.10 added 3.25.2016 'reAuth' : 'For at godkende igen', // from v2.1.10 added 3.25.2016 'nowLoading' : 'Indlæser nu...', // from v2.1.12 added 4.26.2016 'openMulti' : 'Åben flere filer', // from v2.1.12 added 5.14.2016 'openMultiConfirm': 'Du prøver at åbne $1-filerne. Er du sikker på, at du vil åbne i browseren?', // from v2.1.12 added 5.14.2016 'emptySearch' : 'Søgeresultaterne er tomme i søgemålet.', // from v2.1.12 added 5.16.2016 'editingFile' : 'Redigerer en fil.', // from v2.1.13 added 6.3.2016 'hasSelected' : 'Du har valgt $1 emner.', // from v2.1.13 added 6.3.2016 'hasClipboard' : 'Du har $1 emner i udklipsholder.', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'Inkrementel søgning er kun fra den aktuelle visning.', // from v2.1.13 added 6.30.2016 'reinstate' : 'Genindsæt', // from v2.1.15 added 3.8.2016 'complete' : '$1 færdig', // from v2.1.15 added 21.8.2016 'contextmenu' : 'Kontekstmenu', // from v2.1.15 added 9.9.2016 'pageTurning' : 'Sidevending', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'Diskenheds rødder', // from v2.1.16 added 16.9.2016 'reset' : 'Nulstil', // from v2.1.16 added 1.10.2016 'bgcolor' : 'Baggrundsfarve', // from v2.1.16 added 1.10.2016 'colorPicker' : 'Farvevælger', // from v2.1.16 added 1.10.2016 '8pxgrid' : '8px grid', // from v2.1.16 added 4.10.2016 'enabled' : 'Aktiveret', // from v2.1.16 added 4.10.2016 'disabled' : 'Deaktiveret', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'Søgeresultaterne er tomme i den aktuelle visning.\\ATryk på [Enter] for at udvide søgemålet.', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'Førstebogstavs søgeresultater er tomme i den aktuelle visning.', // from v2.1.23 added 24.3.2017 'textLabel' : 'Tekstlabel', // from v2.1.17 added 13.10.2016 'minsLeft' : '$1 minutter tilbage', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'Åbn igen med valgt encoding', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'Gem med valgt encoding', // from v2.1.19 added 2.12.2016 'selectFolder' : 'Vælg mappe', // from v2.1.20 added 13.12.2016 'firstLetterSearch': 'Førstebogstavs søgning', // from v2.1.23 added 24.3.2017 'presets' : 'Forudindstillinger', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : 'Det er for mange emner, så det kan ikke komme i papirkurven.', // from v2.1.25 added 9.6.2017 'TextArea' : 'TextArea', // from v2.1.25 added 14.6.2017 'folderToEmpty' : 'Tøm mappen "$1".', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : 'Der er ingen emner i mappen "$1".', // from v2.1.25 added 22.6.2017 'preference' : 'Præference', // from v2.1.26 added 28.6.2017 'language' : 'Sprog', // from v2.1.26 added 28.6.2017 'clearBrowserData': 'Initialiser de indstillinger, der er gemt i denne browser', // from v2.1.26 added 28.6.2017 'toolbarPref' : 'Værktøjslinjens indstillinger', // from v2.1.27 added 2.8.2017 'charsLeft' : '... $1 tegn tilbage.', // from v2.1.29 added 30.8.2017 'linesLeft' : '... $1 linjer tilbage.', // from v2.1.52 added 16.1.2020 'sum' : 'Sum', // from v2.1.29 added 28.9.2017 'roughFileSize' : 'Omtrentlig filstørrelse', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : 'Fokuser på elementet i dialog med musemarkering', // from v2.1.30 added 2.11.2017 'select' : 'Vælg', // from v2.1.30 added 23.11.2017 'selectAction' : 'Handling, når du vælger fil', // from v2.1.30 added 23.11.2017 'useStoredEditor' : 'Åbn med den editor, der blev brugt sidst', // from v2.1.30 added 23.11.2017 'selectinvert' : 'Inverter valg', // from v2.1.30 added 25.11.2017 'renameMultiple' : 'Er du sikker på, at du vil omdøbe $1 valgte emner som $2?
                Dette kan ikke fortrydes!', // from v2.1.31 added 4.12.2017 'batchRename' : 'Batch omdøbning', // from v2.1.31 added 8.12.2017 'plusNumber' : '+ Tal', // from v2.1.31 added 8.12.2017 'asPrefix' : 'Tilføj prefix', // from v2.1.31 added 8.12.2017 'asSuffix' : 'Tilføj suffix', // from v2.1.31 added 8.12.2017 'changeExtention' : 'Skift filendelse', // from v2.1.31 added 8.12.2017 'columnPref' : 'Kolonneindstillinger (listevisning)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : 'Alle ændringer påvirker straks arkivet.', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : 'Eventuelle ændringer gennemføres ikke, før denne enhed fjernes.', // from v2.1.33 added 2.3.2018 'unmountChildren' : 'Følgende disk(e) mounted på denne enhed unmountes også. Er du sikker på at unmounte den?', // from v2.1.33 added 5.3.2018 'selectionInfo' : 'Valg info', // from v2.1.33 added 7.3.2018 'hashChecker' : 'Algoritmer, der viser filens hash', // from v2.1.33 added 10.3.2018 'infoItems' : 'Info-emner (panelet til valg af info)', // from v2.1.38 added 28.3.2018 'pressAgainToExit': 'Tryk igen for at afslutte.', // from v2.1.38 added 1.4.2018 'toolbar' : 'Værktøjslinje', // from v2.1.38 added 4.4.2018 'workspace' : 'Arbejdsområde', // from v2.1.38 added 4.4.2018 'dialog' : 'Dialog', // from v2.1.38 added 4.4.2018 'all' : 'Alle', // from v2.1.38 added 4.4.2018 'iconSize' : 'Ikonstørrelse (ikonvisning)', // from v2.1.39 added 7.5.2018 'editorMaximized' : 'Åbn det maksimerede editorvindue', // from v2.1.40 added 30.6.2018 'editorConvNoApi' : 'Da konvertering via API ikke er tilgængelig i øjeblikket, bedes du konvertere på webstedet.', //from v2.1.40 added 8.7.2018 'editorConvNeedUpload' : 'Efter konvertering skal du uploade med elementets URL eller en downloadet fil for at gemme den konverterede fil.', //from v2.1.40 added 8.7.2018 'convertOn' : 'Konverter på stedet på $1', // from v2.1.40 added 10.7.2018 'integrations' : 'Integrationer', // from v2.1.40 added 11.7.2018 'integrationWith' : 'Denne elFinder har følgende eksterne tjenester integreret. Kontroller venligst vilkårene for brug, fortrolighedspolitik osv. inden du bruger det.', // from v2.1.40 added 11.7.2018 'showHidden' : 'Vis skjulte emner', // from v2.1.41 added 24.7.2018 'hideHidden' : 'Skjul skjulte emner', // from v2.1.41 added 24.7.2018 'toggleHidden' : 'Vis / Skjul skjulte emner', // from v2.1.41 added 24.7.2018 'makefileTypes' : 'Filtyper, der skal aktiveres med "Ny fil"', // from v2.1.41 added 7.8.2018 'typeOfTextfile' : 'Type af tekstfilen', // from v2.1.41 added 7.8.2018 'add' : 'Tilføj', // from v2.1.41 added 7.8.2018 'theme' : 'Tema', // from v2.1.43 added 19.10.2018 'default' : 'Standard', // from v2.1.43 added 19.10.2018 'description' : 'Beskrivelse', // from v2.1.43 added 19.10.2018 'website' : 'Hjemmeside', // from v2.1.43 added 19.10.2018 'author' : 'Forfatter', // from v2.1.43 added 19.10.2018 'email' : 'Mail', // from v2.1.43 added 19.10.2018 'license' : 'Licens', // from v2.1.43 added 19.10.2018 'exportToSave' : 'Dette element kan ikke gemmes. For at undgå at miste redigeringerne skal du eksportere til din pc.', // from v2.1.44 added 1.12.2018 'dblclickToSelect': 'Dobbeltklik på filen for at vælge den.', // from v2.1.47 added 22.1.2019 'useFullscreen' : 'Brug fuldskærmstilstand', // from v2.1.47 added 19.2.2019 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Ukendt', 'kindRoot' : 'Diskenheds rod', // from v2.1.16 added 16.10.2016 'kindFolder' : 'Mappe', 'kindSelects' : 'Valg', // from v2.1.29 added 29.8.2017 'kindAlias' : 'Alias', 'kindAliasBroken' : 'Ødelagt alias', // applications 'kindApp' : 'Applikation', 'kindPostscript' : 'Postscript dokument', 'kindMsOffice' : 'Microsoft Office dokument', 'kindMsWord' : 'Microsoft Word dokument', 'kindMsExcel' : 'Microsoft Excel dokument', 'kindMsPP' : 'Microsoft Powerpoint præsentation', 'kindOO' : 'Open Office dokument', 'kindAppFlash' : 'Flash applikation', 'kindPDF' : 'Flytbart Dokument Format (PDF)', 'kindTorrent' : 'Bittorrent fil', 'kind7z' : '7z arkiv', 'kindTAR' : 'TAR arkiv', 'kindGZIP' : 'GZIP arkiv', 'kindBZIP' : 'BZIP arkiv', 'kindXZ' : 'XZ arkiv', 'kindZIP' : 'ZIP arkiv', 'kindRAR' : 'RAR arkiv', 'kindJAR' : 'Java JAR fil', 'kindTTF' : 'True Type skrift', 'kindOTF' : 'Open Type skrift', 'kindRPM' : 'RPM pakke', // texts 'kindText' : 'Tekstdokument', 'kindTextPlain' : 'Ren tekst', 'kindPHP' : 'PHP-kode', 'kindCSS' : 'Cascading style sheet', 'kindHTML' : 'HTML-dokument', 'kindJS' : 'Javascript-kode', 'kindRTF' : 'Rich Text Format', 'kindC' : 'Ckkode', 'kindCHeader' : 'C header-kode', 'kindCPP' : 'C++-kode', 'kindCPPHeader' : 'C++ header-kode', 'kindShell' : 'Unix shell script', 'kindPython' : 'Python-kode', 'kindJava' : 'Java-kode', 'kindRuby' : 'Ruby-kode', 'kindPerl' : 'Perlscript', 'kindSQL' : 'SQ- kode', 'kindXML' : 'XML-dokument', 'kindAWK' : 'AWK-kode', 'kindCSV' : 'Komma seperarede værdier', 'kindDOCBOOK' : 'Docbook XML-dokument', 'kindMarkdown' : 'Markdown text', // added 20.7.2015 // images 'kindImage' : 'Billede', 'kindBMP' : 'BMP-billede', 'kindJPEG' : 'JPEG-billede', 'kindGIF' : 'GIF-billede', 'kindPNG' : 'PNG-billede', 'kindTIFF' : 'TIFF-billede', 'kindTGA' : 'TGA-billede', 'kindPSD' : 'Adobe Photoshop-billede', 'kindXBITMAP' : 'X bitmap-billede', 'kindPXM' : 'Pixelmator-billede', // media 'kindAudio' : 'Lydmedie', 'kindAudioMPEG' : 'MPEG-lyd', 'kindAudioMPEG4' : 'MPEG-4-lyd', 'kindAudioMIDI' : 'MIDI-lyd', 'kindAudioOGG' : 'Ogg Vorbis-lyd', 'kindAudioWAV' : 'WAV-lyd', 'AudioPlaylist' : 'MP3-spilleliste', 'kindVideo' : 'Videomedie', 'kindVideoDV' : 'DV-video', 'kindVideoMPEG' : 'MPEG-video', 'kindVideoMPEG4' : 'MPEG-4-video', 'kindVideoAVI' : 'AVI-video', 'kindVideoMOV' : 'Quick Time-video', 'kindVideoWM' : 'Windows Media-video', 'kindVideoFlash' : 'Flash-video', 'kindVideoMKV' : 'Matroska-video', 'kindVideoOGG' : 'Ogg-video' } }; })); plugins/file-manager-advanced/application/library/js/i18n/elfinder.de.js000064400000103274147176754550022232 0ustar00/** * German Translation / Deutsche Übersetzung * @author JPG & Mace * @author tora60 from pragmaMx.org * @author Timo-Linde * @author OSWorX * @author Maximilian Schwarz * @author SF Webdesign * @version 2019-12-13 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.de = { translator : 'JPG & Mace <dev@flying-datacenter.de>, tora60 from pragmaMx.org, Timo-Linde <info@timo-linde.de>, OSWorX <info@osworx.net>, Maximilian Schwarz <info@deefuse.de>, SF Webdesign <webdesign@stephan-frank.de>', language : 'Deutsch', direction : 'ltr', dateFormat : 'j. F Y H:i', // 3. März 2020 14:58 fancyDateFormat : '$1 H:i', // will produce smth like: Today 12:25 PM nonameDateFormat : 'ymd-His', // to apply if upload file is noname: 120513172700 messages : { /********************************** errors **********************************/ 'error' : 'Fehler', 'errUnknown' : 'Unbekannter Fehler.', 'errUnknownCmd' : 'Unbekannter Befehl.', 'errJqui' : 'Ungültige jQuery UI-Konfiguration. Die Komponenten Selectable, Draggable und Droppable müssen inkludiert sein.', 'errNode' : 'Für elFinder muss das DOM-Element erstellt werden.', 'errURL' : 'Ungültige elFinder-Konfiguration! Die URL-Option ist nicht gesetzt.', 'errAccess' : 'Zugriff verweigert.', 'errConnect' : 'Verbindung zum Backend fehlgeschlagen.', 'errAbort' : 'Verbindung abgebrochen.', 'errTimeout' : 'Zeitüberschreitung der Verbindung.', 'errNotFound' : 'Backend nicht gefunden.', 'errResponse' : 'Ungültige Backend-Antwort.', 'errConf' : 'Ungültige Backend-Konfiguration.', 'errJSON' : 'PHP JSON-Modul nicht vorhanden.', 'errNoVolumes' : 'Keine lesbaren Laufwerke vorhanden.', 'errCmdParams' : 'Ungültige Parameter für Befehl: "$1".', 'errDataNotJSON' : 'Daten nicht im JSON-Format.', 'errDataEmpty' : 'Daten sind leer.', 'errCmdReq' : 'Backend-Anfrage benötigt Befehl.', 'errOpen' : 'Kann "$1" nicht öffnen.', 'errNotFolder' : 'Objekt ist kein Ordner.', 'errNotFile' : 'Objekt ist keine Datei.', 'errRead' : 'Kann "$1" nicht öffnen.', 'errWrite' : 'Kann nicht in "$1" schreiben.', 'errPerm' : 'Zugriff verweigert.', 'errLocked' : '"$1" ist gesperrt und kann nicht umbenannt, verschoben oder gelöscht werden.', 'errExists' : 'Die Datei "$1" existiert bereits.', 'errInvName' : 'Ungültiger Dateiname.', 'errInvDirname' : 'Ungültiger Ordnername.', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : 'Ordner nicht gefunden.', 'errFileNotFound' : 'Datei nicht gefunden.', 'errTrgFolderNotFound' : 'Zielordner "$1" nicht gefunden.', 'errPopup' : 'Der Browser hat das Pop-Up-Fenster unterbunden. Um die Datei zu öffnen, Pop-Ups in den Browsereinstellungen aktivieren.', 'errMkdir' : 'Kann Ordner "$1" nicht erstellen.', 'errMkfile' : 'Kann Datei "$1" nicht erstellen.', 'errRename' : 'Kann "$1" nicht umbenennen.', 'errCopyFrom' : 'Kopieren von Dateien von "$1" nicht erlaubt.', 'errCopyTo' : 'Kopieren von Dateien nach "$1" nicht erlaubt.', 'errMkOutLink' : 'Der Link kann nicht außerhalb der Partition führen.', // from v2.1 added 03.10.2015 'errUpload' : 'Upload-Fehler.', // old name - errUploadCommon 'errUploadFile' : 'Kann "$1" nicht hochladen.', // old name - errUpload 'errUploadNoFiles' : 'Keine Dateien zum Hochladen gefunden.', 'errUploadTotalSize' : 'Gesamtgröße überschreitet die Maximalgröße.', // old name - errMaxSize 'errUploadFileSize' : 'Die Datei überschreitet die Maximalgröße.', // old name - errFileMaxSize 'errUploadMime' : 'Dateiart (mime) nicht zulässig.', 'errUploadTransfer' : '"$1" Übertragungsfehler.', 'errUploadTemp' : 'Kann temporäre Datei nicht erstellen.', // from v2.1 added 26.09.2015 'errNotReplace' : 'Das Objekt "$1" existiert bereits an dieser Stelle und kann nicht durch ein Objekt eines anderen Typs ersetzt werden.', // new 'errReplace' : 'Kann "$1" nicht ersetzen.', 'errSave' : 'Kann "$1" nicht speichern.', 'errCopy' : 'Kann "$1" nicht kopieren.', 'errMove' : 'Kann "$1" nicht verschieben.', 'errCopyInItself' : '"$1" kann sich nicht in sich selbst kopieren.', 'errRm' : 'Kann "$1" nicht entfernen.', 'errTrash' : 'Kann Objekt nicht in Mülleimer legen.', // from v2.1.24 added 30.4.2017 'errRmSrc' : 'Kann Quelldatei(en) nicht entfernen.', 'errExtract' : 'Kann "$1" nicht entpacken.', 'errArchive' : 'Archiv konnte nicht erstellt werden.', 'errArcType' : 'Archivtyp nicht untersützt.', 'errNoArchive' : 'Bei der Datei handelt es sich nicht um ein Archiv, oder die Archivart wird nicht unterstützt.', 'errCmdNoSupport' : 'Das Backend unterstützt diesen Befehl nicht.', 'errReplByChild' : 'Der Ordner "$1" kann nicht durch etwas ersetzt werden, das ihn selbst enthält.', 'errArcSymlinks' : 'Aus Sicherheitsgründen ist es verboten, ein Archiv mit symbolischen Links zu extrahieren.', // edited 24.06.2012 'errArcMaxSize' : 'Die Archivdateien übersteigen die maximal erlaubte Größe.', 'errResize' : 'Größe von "$1" kann nicht geändert werden.', 'errResizeDegree' : 'Ungültiger Rotationswert.', // added 7.3.2013 'errResizeRotate' : 'Bild konnte nicht gedreht werden.', // added 7.3.2013 'errResizeSize' : 'Ungültige Bildgröße.', // added 7.3.2013 'errResizeNoChange' : 'Bildmaße nicht geändert.', // added 7.3.2013 'errUsupportType' : 'Nicht unterstützte Dateiart.', 'errNotUTF8Content' : 'Die Datei "$1" ist nicht im UTF-8-Format und kann nicht bearbeitet werden.', // added 9.11.2011 'errNetMount' : 'Verbindung mit "$1" nicht möglich.', // added 17.04.2012 'errNetMountNoDriver' : 'Nicht unterstütztes Protokoll.', // added 17.04.2012 'errNetMountFailed' : 'Verbindung fehlgeschlagen.', // added 17.04.2012 'errNetMountHostReq' : 'Host benötigt.', // added 18.04.2012 'errSessionExpires' : 'Diese Sitzung ist aufgrund von Inaktivität abgelaufen.', 'errCreatingTempDir' : 'Erstellung des temporären Ordners nicht möglich: "$1"', 'errFtpDownloadFile' : 'Download der Datei über FTP nicht möglich: "$1"', 'errFtpUploadFile' : 'Upload der Datei zu FTP nicht möglich: "$1"', 'errFtpMkdir' : 'Erstellung des Remote-Ordners mit FTP nicht möglich: "$1"', 'errArchiveExec' : 'Fehler beim Archivieren der Dateien: "$1"', 'errExtractExec' : 'Fehler beim Extrahieren der Dateien: "$1"', 'errNetUnMount' : 'Kann nicht ausgehängt werden.', // from v2.1 added 30.04.2012 'errConvUTF8' : 'Kann nicht zu UTF-8 konvertiert werden.', // from v2.1 added 08.04.2014 'errFolderUpload' : 'Ordner kann nich hochladen werden, eventuell mit Google Chrome versuchen.', // from v2.1 added 26.6.2015 'errSearchTimeout' : 'Zeitüberschreitung während der Suche nach "$1". Suchergebnis ist unvollständig.', // from v2.1 added 12.1.2016 'errReauthRequire' : 'Erneutes Anmelden ist erforderlich.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'Die maximale Anzahl auswählbarer Elemente ist $1', // from v2.1.17 added 17.10.2016 'errRestore' : 'Datei konnte nicht aus Mülleimer wieder hergestellt werden bzw. Ziel für Wiederherstellung nicht gefunden.', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'Kein Editor für diesen Dateityp gefunden.', // from v2.1.25 added 23.5.2017 'errServerError' : 'Ein serverseitiger Fehler trat auf.', // from v2.1.25 added 16.6.2017 'errEmpty' : 'Konnte Ordner "$1" nicht Leeren.', // from v2.1.25 added 22.6.2017 'moreErrors' : 'Es sind noch $1 weitere Fehler.', // from v2.1.44 added 13.12.2019 /******************************* commands names ********************************/ 'cmdarchive' : 'Archiv erstellen', 'cmdback' : 'Zurück', 'cmdcopy' : 'Kopieren', 'cmdcut' : 'Ausschneiden', 'cmddownload' : 'Herunterladen', 'cmdduplicate' : 'Duplizieren', 'cmdedit' : 'Datei bearbeiten', 'cmdextract' : 'Archiv entpacken', 'cmdforward' : 'Vorwärts', 'cmdgetfile' : 'Datei auswählen', 'cmdhelp' : 'Über diese Software', 'cmdhome' : 'Startordner', 'cmdinfo' : 'Informationen', 'cmdmkdir' : 'Neuer Ordner', 'cmdmkdirin' : 'In neuen Ordner', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'Neuer Datei', 'cmdopen' : 'Öffnen', 'cmdpaste' : 'Einfügen', 'cmdquicklook' : 'Vorschau', 'cmdreload' : 'Aktualisieren', 'cmdrename' : 'Umbenennen', 'cmdrm' : 'Löschen', 'cmdtrash' : 'In den Mülleimer legen', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'Wiederherstellen', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'Suchen', 'cmdup' : 'In übergeordneten Ordner wechseln', 'cmdupload' : 'Datei hochladen', 'cmdview' : 'Ansehen', 'cmdresize' : 'Größe ändern & drehen', 'cmdsort' : 'Sortieren', 'cmdnetmount' : 'Verbinde mit Netzwerkspeicher', // added 18.04.2012 'cmdnetunmount': 'Abhängen', // from v2.1 added 30.04.2012 'cmdplaces' : 'Favoriten', // added 28.12.2014 'cmdchmod' : 'Berechtigung ändern', // from v2.1 added 20.6.2015 'cmdopendir' : 'Einen Ordner öffnen', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'Spaltenbreite zurücksetzen', // from v2.1.13 added 12.06.2016 'cmdfullscreen': 'Vollbild', // from v2.1.15 added 03.08.2016 'cmdmove' : 'Verschieben', // from v2.1.15 added 21.08.2016 'cmdempty' : 'Ordner Leeren', // from v2.1.25 added 22.06.2017 'cmdundo' : 'Rückgängig', // from v2.1.27 added 31.07.2017 'cmdredo' : 'Wiederholen', // from v2.1.27 added 31.07.2017 'cmdpreference': 'Einstellungen', // from v2.1.27 added 03.08.2017 'cmdselectall' : 'Alle auswählen', // from v2.1.28 added 15.08.2017 'cmdselectnone': 'Keine auswählen', // from v2.1.28 added 15.08.2017 'cmdselectinvert': 'Auswahl rückgängig machen', // from v2.1.28 added 15.08.2017 'cmdopennew' : 'In neuem Fenster öffnen', // from v2.1.38 added 3.4.2018 'cmdhide' : 'Verstecken', // from v2.1.41 added 13.12.2019 /*********************************** buttons ***********************************/ 'btnClose' : 'Schließen', 'btnSave' : 'Speichern', 'btnRm' : 'Entfernen', 'btnApply' : 'Anwenden', 'btnCancel' : 'Abbrechen', 'btnNo' : 'Nein', 'btnYes' : 'Ja', 'btnMount' : 'Verbinden', // added 18.04.2012 'btnApprove': 'Gehe zu $1 und genehmige', // from v2.1 added 26.04.2012 'btnUnmount': 'Auswerfen', // from v2.1 added 30.04.2012 'btnConv' : 'Konvertieren', // from v2.1 added 08.04.2014 'btnCwd' : 'Arbeitspfad', // from v2.1 added 22.5.2015 'btnVolume' : 'Partition', // from v2.1 added 22.5.2015 'btnAll' : 'Alle', // from v2.1 added 22.5.2015 'btnMime' : 'MIME-Typ', // from v2.1 added 22.5.2015 'btnFileName':'Dateiname', // from v2.1 added 22.5.2015 'btnSaveClose': 'Speichern & Schließen', // from v2.1 added 12.6.2015 'btnBackup' : 'Sicherung', // fromv2.1 added 28.11.2015 'btnRename' : 'Umbenennen', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'Alle Umbenennen', // from v2.1.24 added 6.4.2017 'btnPrevious' : 'Zurück ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : 'Weiter ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : 'Speichern als', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'Öffne Ordner', 'ntffile' : 'Öffne Datei', 'ntfreload' : 'Ordnerinhalt neu', 'ntfmkdir' : 'Erstelle Ordner', 'ntfmkfile' : 'Erstelle Dateien', 'ntfrm' : 'Lösche Dateien', 'ntfcopy' : 'Kopiere Dateien', 'ntfmove' : 'Verschiebe Dateien', 'ntfprepare' : 'Kopiervorgang initialisieren', 'ntfrename' : 'Benenne Dateien um', 'ntfupload' : 'Dateien hochladen', 'ntfdownload' : 'Dateien herunterladen', 'ntfsave' : 'Speichere Datei', 'ntfarchive' : 'Erstelle Archiv', 'ntfextract' : 'Entpacke Dateien', 'ntfsearch' : 'Suche', 'ntfresize' : 'Bildgrößen ändern', 'ntfsmth' : 'Bin beschäftigt ..', 'ntfloadimg' : 'Lade Bild ..', 'ntfnetmount' : 'Mit Netzwerkspeicher verbinden', // added 18.04.2012 'ntfnetunmount': 'Netzwerkspeicher auswerfen', // from v2.1 added 30.04.2012 'ntfdim' : 'Bildgröße erfassen', // added 20.05.2013 'ntfreaddir' : 'Lese Ordnerinformationen', // from v2.1 added 01.07.2013 'ntfurl' : 'Hole URL von Link', // from v2.1 added 11.03.2014 'ntfchmod' : 'Ändere Dateiberechtigungen', // from v2.1 added 20.6.2015 'ntfpreupload': 'Upload-Dateinamen überprüfen', // from v2.1 added 31.11.2015 'ntfzipdl' : 'Erstelle Datei zum Download', // from v2.1.7 added 23.1.2016 'ntfparents' : 'Beziehe Pfad Informationen', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'Upload läuft', // from v2.1.17 added 2.11.2016 'ntftrash' : 'Bewege in den Mülleimer', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'Wiederherstellung aus Mülleimer', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'Prüfe Zielordner', // from v2.1.24 added 3.5.2017 'ntfundo' : 'Vorherige Operation rückgängig machen', // from v2.1.27 added 31.07.2017 'ntfredo' : 'Wiederherstellen', // from v2.1.27 added 31.07.2017 'ntfchkcontent' : 'Überprüfe Inhalte', // from v2.1.41 added 13.12.2019 /*********************************** volumes *********************************/ 'volume_Trash' : 'Mülleimer', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : 'unbekannt', 'Today' : 'Heute', 'Yesterday' : 'Gestern', 'msJan' : 'Jan', 'msFeb' : 'Feb', 'msMar' : 'Mär', 'msApr' : 'Apr', 'msMay' : 'Mai', 'msJun' : 'Jun', 'msJul' : 'Jul', 'msAug' : 'Aug', 'msSep' : 'Sep', 'msOct' : 'Okt', 'msNov' : 'Nov', 'msDec' : 'Dez', 'January' : 'Januar', 'February' : 'Februar', 'March' : 'März', 'April' : 'April', 'May' : 'Mai', 'June' : 'Juni', 'July' : 'Juli', 'August' : 'August', 'September' : 'September', 'October' : 'Oktober', 'November' : 'November', 'December' : 'Dezember', 'Sunday' : 'Sonntag', 'Monday' : 'Montag', 'Tuesday' : 'Dienstag', 'Wednesday' : 'Mittwoch', 'Thursday' : 'Donnerstag', 'Friday' : 'Freitag', 'Saturday' : 'Samstag', 'Sun' : 'So', 'Mon' : 'Mo', 'Tue' : 'Di', 'Wed' : 'Mi', 'Thu' : 'Do', 'Fri' : 'Fr', 'Sat' : 'Sa', /******************************** sort variants ********************************/ 'sortname' : 'nach Name', 'sortkind' : 'nach Art', 'sortsize' : 'nach Größe', 'sortdate' : 'nach Datum', 'sortFoldersFirst' : 'Ordner zuerst', 'sortperm' : 'nach Berechtigung', // from v2.1.13 added 13.06.2016 'sortmode' : 'nach Modus', // from v2.1.13 added 13.06.2016 'sortowner' : 'nach Besitzer', // from v2.1.13 added 13.06.2016 'sortgroup' : 'nach Gruppe', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'auch Baumansicht', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : 'Neues Textdokument (.txt)', // added 10.11.2015 'untitled folder' : 'Neuer Ordner', // added 10.11.2015 'Archive' : 'Neues Archiv', // from v2.1 added 10.11.2015 'untitled file' : 'Neue Datei $1', // from v2.1.41 added 13.12.2019 'extentionfile' : '$1: Datei', // from v2.1.41 added 13.12.2019 'extentiontype' : '$1: $2', // from v2.1.43 added 13.12.2018 /********************************** messages **********************************/ 'confirmReq' : 'Bestätigung benötigt', 'confirmRm' : 'Sollen die Dateien gelöscht werden?
                Vorgang ist endgültig!', 'confirmRepl' : 'Datei ersetzen?', 'confirmRest' : 'Vorhandenes Element durch das Element aus Mülleimer ersetzen?', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'Nicht UTF-8 kodiert
                Zu UTF-8 konvertieren?
                Inhalte werden zu UTF-8 konvertiert bei Speicherung.', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'Die Zeichencodierung dieser Datei konnte nicht erkannt werden. Es muss vorübergehend in UTF-8 zur Bearbeitung konvertiert werden.
                Bitte eine Zeichenkodierung dieser Datei auswählen.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : 'Die Datei wurde geändert.
                Änderungen gehen verloren wenn nicht gespeichert wird.', // from v2.1 added 15.7.2015 'confirmTrash' : 'Sicher diese Elemente in den Mülleimer verschieben?', // from v2.1.24 added 29.4.2017 'confirmMove' : 'Sicher alle Elemente nach "$1" verschieben?', // from v2.1.50 added 13.12.2019 'apllyAll' : 'Alles bestätigen', 'name' : 'Name', 'size' : 'Größe', 'perms' : 'Berechtigungen', 'modify' : 'Geändert', 'kind' : 'Typ', 'read' : 'Lesen', 'write' : 'Schreiben', 'noaccess' : 'Kein Zugriff', 'and' : 'und', 'unknown' : 'unbekannt', 'selectall' : 'Alle Dateien auswählen', 'selectfiles' : 'Dateien auswählen', 'selectffile' : 'Erste Datei auswählen', 'selectlfile' : 'Letzte Datei auswählen', 'viewlist' : 'Spaltenansicht', 'viewicons' : 'Symbolansicht', 'viewSmall' : 'Kleine Icons', // from v2.1.39 added 13.12.2019 'viewMedium' : 'Medium Icons', // from v2.1.39 added 13.12.2019 'viewLarge' : 'Große Icons', // from v2.1.39 added 13.12.2019 'viewExtraLarge' : 'Extragroße Icons', // from v2.1.39 added 13.12.2019 'places' : 'Favoriten', 'calc' : 'Berechne', 'path' : 'Pfad', 'aliasfor' : 'Verknüpfung zu', 'locked' : 'Gesperrt', 'dim' : 'Bildgröße', 'files' : 'Dateien', 'folders' : 'Ordner', 'items' : 'Objekte', 'yes' : 'ja', 'no' : 'nein', 'link' : 'Link', 'searcresult' : 'Suchergebnisse', 'selected' : 'Objekte ausgewählt', 'about' : 'Über', 'shortcuts' : 'Tastenkombinationen', 'help' : 'Hilfe', 'webfm' : 'Web-Dateiverwaltung', 'ver' : 'Version', 'protocolver' : 'Protokoll-Version', 'homepage' : 'Projekt-Webseite', 'docs' : 'Dokumentation', 'github' : 'Forke uns auf Github', 'twitter' : 'Folge uns auf twitter', 'facebook' : 'Begleite uns auf facebook', 'team' : 'Team', 'chiefdev' : 'Chefentwickler', 'developer' : 'Entwickler', 'contributor' : 'Unterstützer', 'maintainer' : 'Maintainer', 'translator' : 'Übersetzer', 'icons' : 'Icons', 'dontforget' : 'und vergiss nicht .. morgen ist auch noch ein Tag ..', 'shortcutsof' : 'Tastenkombinationen deaktiviert', 'dropFiles' : 'Dateien hier ablegen', 'or' : 'oder', 'selectForUpload' : 'Dateien zum Upload auswählen', 'moveFiles' : 'Dateien verschieben', 'copyFiles' : 'Dateien kopieren', 'restoreFiles' : 'Elemente wiederherstellen', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'Lösche von Favoriten', 'aspectRatio' : 'Seitenverhältnis', 'scale' : 'Maßstab', 'width' : 'Breite', 'height' : 'Höhe', 'resize' : 'Größe ändern', 'crop' : 'Zuschneiden', 'rotate' : 'Drehen', 'rotate-cw' : 'Drehe 90° im Uhrzeigersinn', 'rotate-ccw' : 'Drehe 90° gegen Uhrzeigersinn', 'degree' : '°', 'netMountDialogTitle' : 'verbinde Netzwerkspeicher', // added 18.04.2012 'protocol' : 'Protokoll', // added 18.04.2012 'host' : 'Host', // added 18.04.2012 'port' : 'Port', // added 18.04.2012 'user' : 'Benutzer', // added 18.04.2012 'pass' : 'Passwort', // added 18.04.2012 'confirmUnmount' : 'Soll "$1" ausgehängt werden', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'Dateien in den Browser ziehen', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'Dateien hier loslassen', // from v2.1 added 07.04.2014 'encoding' : 'Kodierung', // from v2.1 added 19.12.2014 'locale' : 'Lokal', // from v2.1 added 19.12.2014 'searchTarget' : 'Ziel: $1', // from v2.1 added 22.5.2015 'searchMime' : 'Suche nach MIME-Typ', // from v2.1 added 22.5.2015 'owner' : 'Besitzer', // from v2.1 added 20.6.2015 'group' : 'Gruppe', // from v2.1 added 20.6.2015 'other' : 'Andere', // from v2.1 added 20.6.2015 'execute' : 'Ausführen', // from v2.1 added 20.6.2015 'perm' : 'Berechtigung', // from v2.1 added 20.6.2015 'mode' : 'Modus', // from v2.1 added 20.6.2015 'emptyFolder' : 'Der Ordner ist leer', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'Der Ordner ist leer\\A Elemente durch Ziehen hinzufügen', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'Der Ordner ist leer\\A Elemente durch langes Tippen hinzufügen', // from v2.1.6 added 30.12.2015 'quality' : 'Qualität', // from v2.1.6 added 5.1.2016 'autoSync' : 'Automatische Synchronisation', // from v2.1.6 added 10.1.2016 'moveUp' : 'Nach oben bewegen', // from v2.1.6 added 18.1.2016 'getLink' : 'URL-Link holen', // from v2.1.7 added 9.2.2016 'selectedItems' : 'Ausgewählte Objekte ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'Ordner-ID', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'Offline-Zugriff erlauben', // from v2.1.10 added 3.25.2016 'reAuth' : 'Erneut anmelden', // from v2.1.10 added 3.25.2016 'nowLoading' : 'Wird geladen...', // from v2.1.12 added 4.26.2016 'openMulti' : 'mehrere Dateien öffnen', // from v2.1.12 added 5.14.2016 'openMultiConfirm': 'Es wird versucht die $1 Dateien zu öffnen .. sicher im Browser öffnen?', // from v2.1.12 added 5.14.2016 'emptySearch' : 'Kein Suchergebnis', // from v2.1.12 added 5.16.2016 'editingFile' : 'Datei wird bearbeitet.', // from v2.1.13 added 6.3.2016 'hasSelected' : '$1 Objekt(e) ausgewählt.', // from v2.1.13 added 6.3.2016 'hasClipboard' : '$1 Objekte im Clipboard.', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'Inkrementelle Suche bezieht sich nur auf die aktuelle Ansicht.', // from v2.1.13 added 6.30.2016 'reinstate' : 'Wiederherstellen', // from v2.1.15 added 3.8.2016 'complete' : '$1 abgeschlossen', // from v2.1.15 added 21.8.2016 'contextmenu' : 'Kontextmenü', // from v2.1.15 added 9.9.2016 'pageTurning' : 'Seite umblättern', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'Volume-Rootverzeichnisse', // from v2.1.16 added 16.9.2016 'reset' : 'Neustart', // from v2.1.16 added 1.10.2016 'bgcolor' : 'Hintergrund Farbe', // from v2.1.16 added 1.10.2016 'colorPicker' : 'Farbauswahl', // from v2.1.16 added 1.10.2016 '8pxgrid' : '8px Raster', // from v2.1.16 added 4.10.2016 'enabled' : 'Ein', // from v2.1.16 added 4.10.2016 'disabled' : 'Aus', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'Keine Ergebnisse in der aktuellen Anzeige', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'Die Ergebnisse der ersten Buchstabensuche sind in der aktuellen Ansicht leer.', // from v2.1.23 added 24.3.2017 'textLabel' : 'Text Bezeichnung', // from v2.1.17 added 13.10.2016 'minsLeft' : '$1 Minuten übrig', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'Wiedereröffnen mit ausgewählter Codierung', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'Speichern mit der gewählten Kodierung', // from v2.1.19 added 2.12.2016 'selectFolder' : 'Verzeichnis auswählen', // from v2.1.20 added 13.12.2016 'firstLetterSearch': 'Erster Buchstabe suche', // from v2.1.23 added 24.3.2017 'presets' : 'Voreinstellungen', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : 'Zu viele Elemente auf einmal für den Mülleimer.', // from v2.1.25 added 9.6.2017 'TextArea' : 'Textbereich', // from v2.1.25 added 14.6.2017 'folderToEmpty' : 'Leere Ordner "$1".', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : 'Es befinden sich keine Elemente im Ordner "$1".', // from v2.1.25 added 22.6.2017 'preference' : 'Einstellungen', // from v2.1.26 added 28.6.2017 'language' : 'Spracheinstellungen', // from v2.1.26 added 28.6.2017 'clearBrowserData': 'Initialisiere die Einstellungen, welche in diesem Browser gespeichert sind', // from v2.1.26 added 28.6.2017 'toolbarPref' : 'Toolbareinstellung', // from v2.1.27 added 2.8.2017 'charsLeft' : '... $1 Zeichen übrig', // from v2.1.29 added 30.8.2017 'sum' : 'Summe', // from v2.1.29 added 28.9.2017 'roughFileSize' : 'Ungefähre Dateigröße', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : 'Fokussierung auf das Element Dialog mit Mouseover', // from v2.1.30 added 2.11.2017 'select' : 'Auswählen', // from v2.1.30 added 23.11.2017 'selectAction' : 'Aktion bei der Auswahl der Datei', // from v2.1.30 added 23.11.2017 'useStoredEditor' : 'Öffnen mit dem zuletzt verwendeten Editor', // from v2.1.30 added 23.11.2017 'selectinvert' : 'Auswahl umkehren', // from v2.1.30 added 25.11.2017 'renameMultiple' : 'Sicher $1 ausgewählte Elemente in $2 umbenennen?
                Rückgängig nicht möglich!', // from v2.1.31 added 4.12.2017 'batchRename' : 'Stapelumbenennung', // from v2.1.31 added 8.12.2017 'plusNumber' : '+ Nummer', // from v2.1.31 added 8.12.2017 'asPrefix' : 'Vorzeichen hinzufügen', // from v2.1.31 added 8.12.2017 'asSuffix' : 'Nachzeichen hinzufügen', // from v2.1.31 added 8.12.2017 'changeExtention' : 'Erweiterung ändern', // from v2.1.31 added 8.12.2017 'columnPref' : 'Spalteneinstellungen (Listenansicht)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : 'Alle Änderungen werden sofort im Archiv angewendet.', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : 'Alle Änderungen werden nicht angewendet bis dieses Volume entfernt wird.', // from v2.1.33 added 2.3.2018 'unmountChildren' : 'Die folgenden Datenträger, die auf diesem Datenträger eingehängt sind, werden ebenfalls ausgehängt. Sicher dass alle aushängt werden sollen?', // from v2.1.33 added 5.3.2018 'selectionInfo' : 'Auswahl Info', // from v2.1.33 added 7.3.2018 'hashChecker' : 'Datei-Hash-Algorithmen', // from v2.1.33 added 10.3.2018 'infoItems' : 'Info-Elemente (Auswahl-Info-Panel)', // from v2.1.38 added 28.3.2018 'pressAgainToExit': 'Drücken Sie erneut, um zu beenden.', // from v2.1.38 added 1.4.2018 'toolbar' : 'Symbolleiste', // from v2.1.38 added 4.4.2018 'workspace' : 'Arbeitsplatz', // from v2.1.38 added 4.4.2018 'dialog' : 'Dialog', // from v2.1.38 added 4.4.2018 'all' : 'Alle', // from v2.1.38 added 4.4.2018 'iconSize' : 'Icongröße (Symbolansicht)', // form v2.1.39 added 7.5.2018 'editorMaximized' : 'Öffne Editorfenster in voller Größe', // from v2.1.40 added 30.6.2018 'editorConvNoApi' : 'Aktuell keine API zur Bearbeitung verfügbar, bitte auf Webseite bearbeiten', //from v2.1.40 added 13.12.2019 'editorConvNeedUpload' : 'Um zu speichern nach der Bearbeitung Element entweder mit URL hochladen oder mit herunter geladener Datei', // from v2.1.40 added 13.12.2019 'convertOn' : 'Bearbeiten auf Seite $1', // from v2.1.40 added 13.12.2019 'integrations' : 'Integrationen', // from v2.1.40 added 13.12.2019 'integrationWith' : 'Diese Software hat folgende externe Dienste integriert. Vor Anwendung bitte die jeweiligen Nutzungsbedingungen usw. beachten', // from v2.1.40 added 13.12.2019 'showHidden' : 'Zeige versteckte Elemente', // from v2.1.41 added 13.12.2019 'hideHidden' : 'Verberge versteckte Elemente', // from v2.1.41 added 13.12.2019 'toggleHidden' : 'Zeige/Verberge versteckte Elemente', // from v2.1.41 added 13.12.2019 'makefileTypes' : 'Dateiarten bei "Neue Datei" aktivieren', // from v2.1.41 added 13.12.2019 'typeOfTextfile' : 'Art der Textdatei', // from v2.1.41 added 13.12.2019 'add' : 'Neu', // from v2.1.41 added 13.12.2019 'theme' : 'Thema', // from v2.1.43 added 13.12.2019 'default' : 'Standard', // from v2.1.43 added 13.12.2019 'description' : 'Beschreibung', // from v2.1.43 added 13.12.2019 'website' : 'Webseite', // from v2.1.43 added 13.12.2019 'author' : 'Autor', // from v2.1.43 added 13.12.2019 'email' : 'Email', // from v2.1.43 added 13.12.2019 'license' : 'Lizenz', // from v2.1.43 added 13.12.2019 'exportToSave' : 'Dieses Element kann nicht gespeichert werden. Um Änderungen nicht zu verlieren, muss es auf den lokalen PC exportiert werden', // from v2.1.44 added 13.12.2019 'dblclickToSelect': 'Doppelt auf Datei klicken um auszuwählen', // from v2.1.47 added 13.12.2019 'useFullscreen' : 'Gesamter Bildschirm', // from v2.1.47 added 13.12.2019 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Unbekannt', 'kindRoot' : 'Stammverzeichnis', // from v2.1.16 added 16.10.2016 'kindFolder' : 'Ordner', 'kindSelects' : 'Auswahlkriterien', // from v2.1.29 added 29.8.2017 'kindAlias' : 'Verknüpfung', 'kindAliasBroken' : 'Defekte Verknüpfung', // applications 'kindApp' : 'Programm', 'kindPostscript' : 'Postscript-Dokument', 'kindMsOffice' : 'MS Office-Dokument', 'kindMsWord' : 'MS Word-Dokument', 'kindMsExcel' : 'MS Excel-Dokument', 'kindMsPP' : 'MS Powerpoint-Präsentation', 'kindOO' : 'Open Office-Dokument', 'kindAppFlash' : 'Flash', 'kindPDF' : 'Portables Dokumentenformat (PDF)', 'kindTorrent' : 'Bittorrent-Datei', 'kind7z' : '7z-Archiv', 'kindTAR' : 'TAR-Archiv', 'kindGZIP' : 'GZIP-Archiv', 'kindBZIP' : 'BZIP-Archiv', 'kindXZ' : 'XZ-Archiv', 'kindZIP' : 'ZIP-Archiv', 'kindRAR' : 'RAR-Archiv', 'kindJAR' : 'Java JAR-Datei', 'kindTTF' : 'True Type-Schrift', 'kindOTF' : 'Open Type-Schrift', 'kindRPM' : 'RPM-Paket', // texts 'kindText' : 'Text-Dokument', 'kindTextPlain' : 'Text-Dokument', 'kindPHP' : 'PHP-Quelltext', 'kindCSS' : 'CSS Stilvorlage', 'kindHTML' : 'HTML-Dokument', 'kindJS' : 'Javascript-Quelltext', 'kindRTF' : 'Formatierte Textdatei', 'kindC' : 'C-Quelltext', 'kindCHeader' : 'C Header-Quelltext', 'kindCPP' : 'C++ Quelltext', 'kindCPPHeader' : 'C++ Header-Quelltext', 'kindShell' : 'Unix-Shell-Skript', 'kindPython' : 'Python-Quelltext', 'kindJava' : 'Java-Quelltext', 'kindRuby' : 'Ruby-Quelltext', 'kindPerl' : 'Perl Script', 'kindSQL' : 'SQL-Quelltext', 'kindXML' : 'XML-Dokument', 'kindAWK' : 'AWK-Quelltext', 'kindCSV' : 'Kommagetrennte Daten', 'kindDOCBOOK' : 'Docbook XML-Dokument', 'kindMarkdown' : 'Markdown-Text', // added 20.7.2015 // images 'kindImage' : 'Bild', 'kindBMP' : 'Bitmap-Bild', 'kindJPEG' : 'JPEG-Bild', 'kindGIF' : 'GIF-Bild', 'kindPNG' : 'PNG-Bild', 'kindTIFF' : 'TIFF-Bild', 'kindTGA' : 'TGA-Bild', 'kindPSD' : 'Adobe Photoshop-Dokument', 'kindXBITMAP' : 'X Bitmap-Bild', 'kindPXM' : 'Pixelmator-Bild', // media 'kindAudio' : 'Audiodatei', 'kindAudioMPEG' : 'MPEG Audio', 'kindAudioMPEG4' : 'MPEG-4 Audio', 'kindAudioMIDI' : 'MIDI Audio', 'kindAudioOGG' : 'Ogg Vorbis Audio', 'kindAudioWAV' : 'WAV Audio', 'AudioPlaylist' : 'MP3-Playlist', 'kindVideo' : 'Videodatei', 'kindVideoDV' : 'DV Film', 'kindVideoMPEG' : 'MPEG Film', 'kindVideoMPEG4' : 'MPEG4 Film', 'kindVideoAVI' : 'AVI Film', 'kindVideoMOV' : 'QuickTime Film', 'kindVideoWM' : 'Windows Media Film', 'kindVideoFlash' : 'Flash Film', 'kindVideoMKV' : 'Matroska Film', 'kindVideoOGG' : 'Ogg Film' } }; })); plugins/file-manager-advanced/application/library/js/i18n/elfinder.el.js000064400000052137147176754550022243 0ustar00/** * Greek translation * @author yawd , Romanos * @version 2014-12-19 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.el = { translator : 'yawd <ingo@yawd.eu>', language : 'Ελληνικά', direction : 'ltr', dateFormat : 'd.m.Y H:i', fancyDateFormat : '$1 H:i', messages : { /********************************** errors **********************************/ 'error' : 'Πρόβλημα', 'errUnknown' : 'Άγνωστο πρόβλημα.', 'errUnknownCmd' : 'Άγνωστη εντολή.', 'errJqui' : 'Μη έγκυρη ρύθμιση του jQuery UI. Τα components "selectable", "draggable" και "droppable" πρέπει να περιληφούν.', 'errNode' : 'το elFinder χρειάζεται να έχει δημιουργηθεί το DOM Element.', 'errURL' : 'Μη έγκυρες ρυθμίσεις για το elFinder! η επιλογή URL δεν έχει οριστεί.', 'errAccess' : 'Απαγορεύεται η πρόσβαση.', 'errConnect' : 'Δεν ήταν δυνατή η σύνδεση με το backend.', 'errAbort' : 'Η σύνδεση εγκαταλείφθηκε.', 'errTimeout' : 'Η σύνδεση έληξε.', 'errNotFound' : 'Δε βρέθηκε το backend.', 'errResponse' : 'Μή έγκυρη απάντηση από το backend.', 'errConf' : 'Μη έγκυρες ρυθμίσεις για το backend.', 'errJSON' : 'Το PHP JSON module δεν είναι εγκατεστημένο.', 'errNoVolumes' : 'Δεν βρέθηκαν αναγνώσιμα volumes.', 'errCmdParams' : 'Μη έγκυρες παράμετροι για την εντολή "$1".', 'errDataNotJSON' : 'Τα δεδομένα δεν είναι JSON.', 'errDataEmpty' : 'Τα δεδομένα είναι άδεια.', 'errCmdReq' : 'Το Backend request χρειάζεται όνομα εντολής.', 'errOpen' : 'Δεν ήταν δυνατό να ανοίξει το "$1".', 'errNotFolder' : 'Το αντικείμενο δεν είναι φάκελος.', 'errNotFile' : 'Το αντικείμενο δεν είναι αρχείο.', 'errRead' : 'Δεν ήταν δυνατόν να διαβαστεί το "$1".', 'errWrite' : 'Δεν ήταν δυνατή η εγγραφή στο "$1".', 'errPerm' : 'Απαγορεύεται η πρόσβαση.', 'errLocked' : '"$1" είναι κλειδωμένο και δεν μπορεί να μετονομαστεί, μετακινηθεί ή διαγραφεί.', 'errExists' : 'Το αρχείο με όνομα "$1" υπάρχει ήδη.', 'errInvName' : 'Μη έγκυρο όνομα αρχείου.', 'errFolderNotFound' : 'Ο φάκελος δε βρέθηκε.', 'errFileNotFound' : 'Το αρχείο δε βρέθηκε.', 'errTrgFolderNotFound' : 'Ο φάκελος "$1" δε βρέθηκε.', 'errPopup' : 'Το πρόγραμμα πλήγησης εμπόδισε το άνοιγμα αναδυόμενου παραθύρου. Για ανοίξετε το αρχείο ενεργοποιήστε το στις επιλογές του περιηγητή.', 'errMkdir' : 'Η δυμιουργία του φακέλου "$1" δεν ήταν δυνατή.', 'errMkfile' : 'Η δημιουργία του αρχείου "$1" δεν ήταν δυνατή.', 'errRename' : 'Η μετονομασία του αρχείου "$1" δεν ήταν δυνατή.', 'errCopyFrom' : 'Δεν επιτρέπεται η αντιγραφή αρχείων από το volume "$1".', 'errCopyTo' : 'Δεν επιτρέπεται η αντιγραφή αρχείων στο volume "$1".', 'errUpload' : 'Πρόβλημα κατά το upload.', 'errUploadFile' : 'Το αρχείο "$1" δεν μπόρεσε να γίνει upload.', 'errUploadNoFiles' : 'Δεν βρέθηκαν αρχεία για upload.', 'errUploadTotalSize' : 'Τα δεδομένα υπερβαίνουν το επιτρεπόμενο μέγιστο μέγεθος δεδομένων.', 'errUploadFileSize' : 'Το αρχείο υπερβαίνει το επιτρεπόμενο μέγιστο μέγεθος.', 'errUploadMime' : 'Ο τύπος αρχείου δεν επιτρέπεται.', 'errUploadTransfer' : 'Πρόβλημα μεταφοράς για το "$1".', 'errNotReplace' : 'Object "$1" already exists at this location and can not be replaced by object with another type.', 'errReplace' : 'Unable to replace "$1".', 'errSave' : 'Το "$1" δεν ήταν δυνατόν να αποθηκευτεί.', 'errCopy' : 'Δεν ήταν δυνατή η αντιγραφή του "$1".', 'errMove' : 'Δεν ήταν δυνατή η μετακίνηση του "$1".', 'errCopyInItself' : 'Δεν είναι δυνατή η αντιγραφή του "$1" στον εαυτό του.', 'errRm' : 'Δεν ήταν δυνατή η αφαίρεση του "$1".', 'errRmSrc' : 'Unable remove source file(s).', 'errExtract' : 'Δεν ήταν δυνατή η ανάγνωση των αρχείων από "$1".', 'errArchive' : 'Δεν ήταν δυνατή η δημιουργία του αρχείου.', 'errArcType' : 'Ο τύπος αρχείου δεν υποστηρίζεται.', 'errNoArchive' : 'Το αρχείο δεν είναι έγκυρο ή δεν υποστηρίζεται ο τύπος του.', 'errCmdNoSupport' : 'Το backend δεν υποστηρίζει αυτή την εντολή.', 'errReplByChild' : 'Ο φάκελος “$1” δεν μπορεί να αντικατασταθεί από οποιοδήποτε αρχείο περιέχεται σε αυτόν.', 'errArcSymlinks' : 'Για λόγους ασφαλείας δεν είναι δυνατόν να διαβαστούν αρχεία που περιέχουν symlinks orη αρχεία με μη επιτρεπτά ονόματα.', // edited 24.06.2012 'errArcMaxSize' : 'Το μέγεθος του αρχείου υπερβαίνει το μέγιστο επιτρεπτό όριο.', 'errResize' : 'Δεν ήταν δυνατή η αλλαγή μεγέθους του "$1".', 'errResizeDegree' : 'Invalid rotate degree.', 'errResizeRotate' : 'Unable to rotate image.', 'errResizeSize' : 'Invalid image size.', 'errResizeNoChange' : 'Image size not changed.', 'errUsupportType' : 'Ο τύπος αρχείου δεν υποστηρίζεται.', 'errNotUTF8Content' : 'Το αρχείο "$1" δεν είναι UTF-8 και δεν μπορεί να επεξεργασθεί.', // added 9.11.2011 'errNetMount' : 'Δεν ήταν δυνατή η φόρτωση του "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'Μη υποστηριζόμενο πρωτόκολο.', // added 17.04.2012 'errNetMountFailed' : 'Η φόρτωση απέτυχε.', // added 17.04.2012 'errNetMountHostReq' : 'Απαιτείται host εξυπηρετητής.', // added 18.04.2012 'errSessionExpires' : 'Your session has expired due to inactivity.', 'errCreatingTempDir' : 'Unable to create temporary directory: "$1"', 'errFtpDownloadFile' : 'Unable to download file from FTP: "$1"', 'errFtpUploadFile' : 'Unable to upload file to FTP: "$1"', 'errFtpMkdir' : 'Unable to create remote directory on FTP: "$1"', 'errArchiveExec' : 'Error while archiving files: "$1"', 'errExtractExec' : 'Error while extracting files: "$1"', /******************************* commands names ********************************/ 'cmdarchive' : 'Δημιουργία archive αρχείου', 'cmdback' : 'Πίσω', 'cmdcopy' : 'Αντιγραφή', 'cmdcut' : 'Αφαίρεση', 'cmddownload' : 'Μεταφόρτωση', 'cmdduplicate' : 'Αντίγραφο', 'cmdedit' : 'Επεξεργασία αρχείου', 'cmdextract' : 'Εξαγωγή αρχείων από archive', 'cmdforward' : 'Προώθηση', 'cmdgetfile' : 'Επιλέξτε αρχεία', 'cmdhelp' : 'Σχετικά με αυτό το λογισμικό', 'cmdhome' : 'Home', 'cmdinfo' : 'Πληροφορίες', 'cmdmkdir' : 'Νέος φάκελος', 'cmdmkfile' : 'Νέος αρχείο', 'cmdopen' : 'Άνοιγμα', 'cmdpaste' : 'Επικόλληση', 'cmdquicklook' : 'Προεπισκόπηση', 'cmdreload' : 'Ανανέωση', 'cmdrename' : 'Μετονομασία', 'cmdrm' : 'Διαγραφή', 'cmdsearch' : 'Έυρεση αρχείων', 'cmdup' : 'Μετάβαση στο γονικό φάκελο', 'cmdupload' : 'Ανέβασμα αρχείων', 'cmdview' : 'Προβολή', 'cmdresize' : 'Αλλαγή μεγέθους εικόνας', 'cmdsort' : 'Ταξινόμηση', 'cmdnetmount' : 'Mount network volume', /*********************************** buttons ***********************************/ 'btnClose' : 'Κλείσιμο', 'btnSave' : 'Αποθήκευση', 'btnRm' : 'Αφαίρεση', 'btnApply' : 'Εφαρμογή', 'btnCancel' : 'Ακύρωση', 'btnNo' : 'Όχι', 'btnYes' : 'Ναι', 'btnMount' : 'Mount', /******************************** notifications ********************************/ 'ntfopen' : 'Άνοιγμα φακέλου', 'ntffile' : 'Άνοιγμα αρχείου', 'ntfreload' : 'Ανανέωση περιεχομένων φακέλου', 'ntfmkdir' : 'Δημιουργία φακέλου', 'ntfmkfile' : 'Δημιουργία αρχείων', 'ntfrm' : 'Διαγραφή αρχείων', 'ntfcopy' : 'Αντιγραφή αρχείων', 'ntfmove' : 'Μετακίνηση αρχείων', 'ntfprepare' : 'Προετοιμασία αντιγραφής αρχείων', 'ntfrename' : 'Μετονομασία αρχείων', 'ntfupload' : 'Ανέβασμα αρχείων', 'ntfdownload' : 'Μεταφόρτωση αρχείων', 'ntfsave' : 'Αποθήκευση αρχείων', 'ntfarchive' : 'Δημιουργία αρχείου', 'ntfextract' : 'Εξαγωγή αρχείων από το archive', 'ntfsearch' : 'Αναζήτηση αρχείων', 'ntfresize' : 'Resizing images', 'ntfsmth' : 'Σύστημα απασχολημένο>_<', 'ntfloadimg' : 'Φόρτωση εικόνας', 'ntfnetmount' : 'Φόρτωση δικτυακού δίσκου', // added 18.04.2012 'ntfdim' : 'Acquiring image dimension', /************************************ dates **********************************/ 'dateUnknown' : 'άγνωστο', 'Today' : 'Σήμερα', 'Yesterday' : 'Χθές', 'msJan' : 'Ιαν', 'msFeb' : 'Φεβ', 'msMar' : 'Μαρ', 'msApr' : 'Απρ', 'msMay' : 'Μαϊ', 'msJun' : 'Ιουν', 'msJul' : 'Ιουλ', 'msAug' : 'Αυγ', 'msSep' : 'Σεπ', 'msOct' : 'Οκτ', 'msNov' : 'Νοεμ', 'msDec' : 'Δεκ', 'January' : 'Ιανουάριος', 'February' : 'Φεβρουάριος', 'March' : 'Μάρτιος', 'April' : 'Απρίλιος', 'May' : 'Μάϊος', 'June' : 'Ιούνιος', 'July' : 'Ιούλιος', 'August' : 'Αύγουστος', 'September' : 'Σεπτέμβριος', 'October' : 'Οκτώβριος', 'November' : 'Νοέμβριος', 'December' : 'Δεκέμβριος', 'Sunday' : 'Κυριακή', 'Monday' : 'Δευτέρα', 'Tuesday' : 'Τρίτη', 'Wednesday' : 'Τετάρτη', 'Thursday' : 'Πέμπτη', 'Friday' : 'Παρασκευή', 'Saturday' : 'Σάββατο', 'Sun' : 'Κυρ', 'Mon' : 'Δευ', 'Tue' : 'Τρ', 'Wed' : 'Τετ', 'Thu' : 'Πεμ', 'Fri' : 'Παρ', 'Sat' : 'Σαβ', /******************************** sort variants ********************************/ 'sortname' : 'κατά όνομα', 'sortkind' : 'κατά είδος', 'sortsize' : 'κατά μέγεθος', 'sortdate' : 'κατά ημερομηνία', 'sortFoldersFirst' : 'Πρώτα οι φάκελοι', // added 22.06.2012 /********************************** messages **********************************/ 'confirmReq' : 'Απαιτείται επιβεβαίωση', 'confirmRm' : 'Είστε σίγουροι πως θέλετε να διαγράψετε τα αρχεία?
                Οι αλλαγές θα είναι μόνιμες!', 'confirmRepl' : 'Αντικατάσταση του παλιού αρχείου με το νέο?', 'apllyAll' : 'Εφαρμογή σε όλα', 'name' : 'Όνομα', 'size' : 'Μέγεθος', 'perms' : 'Δικαιώματα', 'modify' : 'Τροποποιήθηκε', 'kind' : 'Είδος', 'read' : 'ανάγνωση', 'write' : 'εγγραφή', 'noaccess' : 'δεν υπάρχει πρόσβαση', 'and' : 'και', 'unknown' : 'άγνωστο', 'selectall' : 'Επιλογή όλων', 'selectfiles' : 'Επιλογή αρχείων', 'selectffile' : 'Επιλογή πρώτου αρχείου', 'selectlfile' : 'Επιλογή τελευταίου αρχείου', 'viewlist' : 'Προβολή λίστας', 'viewicons' : 'Προβολή εικονιδίων', 'places' : 'Τοποθεσίες', 'calc' : 'Υπολογισμός', 'path' : 'Διαδρομή', 'aliasfor' : 'Ψευδώνυμο για', 'locked' : 'Κλειδωμένο', 'dim' : 'Διαστάσεις', 'files' : 'Αρχεία', 'folders' : 'Φάκελοι', 'items' : 'Αντικείμενα', 'yes' : 'ναι', 'no' : 'όχι', 'link' : 'Σύνδεσμος', 'searcresult' : 'Αποτελέσματα αναζήτησης', 'selected' : 'επιλεγμένα αντικείμενα', 'about' : 'Σχετικά', 'shortcuts' : 'Συντομεύσεις', 'help' : 'Βοήθεια', 'webfm' : 'εργαλείο διαχείρισης αρχείων από το web', 'ver' : 'Έκδοση', 'protocolver' : 'έκδοση πρωτοκόλλου', 'homepage' : 'Σελίδα του project', 'docs' : 'Τεκμηρίωση (documentation)', 'github' : 'Κάντε μας fork στο Github', 'twitter' : 'Ακολουθήστε μας στο twitter', 'facebook' : 'Βρείτε μας στο facebook', 'team' : 'Ομάδα', 'chiefdev' : 'κύριος προγραμματιστής', 'developer' : 'προγραμματιστής', 'contributor' : 'συνεισφορά', 'maintainer' : 'συντηρητής', 'translator' : 'μεταφραστής', 'icons' : 'Εικονίδια', 'dontforget' : 'και μην ξεχάσεις την πετσέτα σου!', 'shortcutsof' : 'Οι συντομεύσεις είναι απενεργοποιημένες', 'dropFiles' : 'Κάντε drop τα αρχεία εδώ', 'or' : 'ή', 'selectForUpload' : 'Επιλογή αρχείων για ανέβασμα', 'moveFiles' : 'Μετακίνηση αρχείων', 'copyFiles' : 'Αντιγραφή αρχείων', 'rmFromPlaces' : 'Αντιγραφή από τοποθεσίες', 'aspectRatio' : 'Αναλογία διαστάσεων', 'scale' : 'Κλίμακα', 'width' : 'Πλάτος', 'height' : 'Ύψος', 'resize' : 'Αλλαγή μεγέθους', 'crop' : 'Crop', 'rotate' : 'Περιστροφή', 'rotate-cw' : 'Περιστροφή κατά 90 βαθμούς CW', 'rotate-ccw' : 'Περιστροφή κατά 90 βαθμούς CCW', 'degree' : 'Βαθμός', 'netMountDialogTitle' : 'Φορτώστε δικτυακό δίσκο', // added 18.04.2012 'protocol' : 'Πρωτόκολλο', // added 18.04.2012 'host' : 'Host', // added 18.04.2012 'port' : 'Port', // added 18.04.2012 'user' : 'Χρήστης', // added 18.04.2012 'pass' : 'Κωδικός', // added 18.04.2012 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Άγνωστο', 'kindFolder' : 'Φάκελος', 'kindAlias' : 'Ψευδώνυμο (alias)', 'kindAliasBroken' : 'Μη έγκυρο ψευδώνυμο', // applications 'kindApp' : 'Εφαρμογή', 'kindPostscript' : 'Έγγραφο Postscript', 'kindMsOffice' : 'Έγγραφο Microsoft Office', 'kindMsWord' : 'Έγγραφο Microsoft Word', 'kindMsExcel' : 'Έγγραφο Microsoft Excel', 'kindMsPP' : 'Παρουσίαση Microsoft Powerpoint', 'kindOO' : 'Έγγραφο Open Office', 'kindAppFlash' : 'Εφαρμογή Flash', 'kindPDF' : 'Portable Document Format (PDF)', 'kindTorrent' : 'Αρχείο Bittorrent', 'kind7z' : 'Αρχείο 7z', 'kindTAR' : 'Αρχείο TAR', 'kindGZIP' : 'Αρχείο GZIP', 'kindBZIP' : 'Αρχείο BZIP', 'kindXZ' : 'Αρχείο XZ', 'kindZIP' : 'Αρχείο ZIP', 'kindRAR' : 'Αρχείο RAR', 'kindJAR' : 'Αρχείο Java JAR', 'kindTTF' : 'Γραμματοσειρά True Type', 'kindOTF' : 'Γραμματοσειρά Open Type', 'kindRPM' : 'Πακέτο RPM', // texts 'kindText' : 'Έγγραφο κειμένου', 'kindTextPlain' : 'Απλό κείμενο', 'kindPHP' : 'Κώδικας PHP', 'kindCSS' : 'Cascading style sheet', 'kindHTML' : 'Έγγραφο HTML', 'kindJS' : 'Κώδικας Javascript', 'kindRTF' : 'Rich Text Format', 'kindC' : 'Κώδικας C', 'kindCHeader' : 'Κώδικας κεφαλίδας C', 'kindCPP' : 'Κώδικας C++', 'kindCPPHeader' : 'Κώδικας κεφαλίδας C++', 'kindShell' : 'Unix shell script', 'kindPython' : 'Κώδικας Python', 'kindJava' : 'Κώδικας Java', 'kindRuby' : 'Κώδικας Ruby', 'kindPerl' : 'Perl script', 'kindSQL' : 'Κώδικας SQL', 'kindXML' : 'Έγγραφο XML', 'kindAWK' : 'Κώδικας AWK', 'kindCSV' : 'Τιμές χωρισμένες με κόμμα', 'kindDOCBOOK' : 'Έγγραφο Docbook XML', // images 'kindImage' : 'Εικόνα', 'kindBMP' : 'Εικόνα BMP', 'kindJPEG' : 'Εικόνα JPEG', 'kindGIF' : 'Εικόνα GIF', 'kindPNG' : 'Εικόνα PNG', 'kindTIFF' : 'Εικόνα TIFF', 'kindTGA' : 'Εικόνα TGA', 'kindPSD' : 'Εικόνα Adobe Photoshop', 'kindXBITMAP' : 'Εικόνα X bitmap', 'kindPXM' : 'Εικόνα Pixelmator', // media 'kindAudio' : 'Αρχεία ήχου', 'kindAudioMPEG' : 'Ήχος MPEG', 'kindAudioMPEG4' : 'Εικόνα MPEG-4', 'kindAudioMIDI' : 'Εικόνα MIDI', 'kindAudioOGG' : 'Εικόνα Ogg Vorbis', 'kindAudioWAV' : 'Εικόνα WAV', 'AudioPlaylist' : 'MP3 playlist', 'kindVideo' : 'Αρχεία media', 'kindVideoDV' : 'Ταινία DV', 'kindVideoMPEG' : 'Ταινία MPEG', 'kindVideoMPEG4' : 'Ταινία MPEG-4', 'kindVideoAVI' : 'Ταινία AVI', 'kindVideoMOV' : 'Ταινία Quick Time', 'kindVideoWM' : 'Ταινία Windows Media', 'kindVideoFlash' : 'Ταινία flash', 'kindVideoMKV' : 'Ταινία matroska', 'kindVideoOGG' : 'Ταινία ogg' } }; })); plugins/file-manager-advanced/application/library/js/i18n/elfinder.en.js000064400000077325147176754550022253 0ustar00/** * English translation * @author Troex Nevelin * @author Naoki Sawada * @version 2021-06-02 */ // elfinder.en.js is integrated into elfinder.(full|min).js by jake build if (typeof elFinder === 'function' && elFinder.prototype.i18) { elFinder.prototype.i18.en = { translator : 'Troex Nevelin <troex@fury.scancode.ru>, Naoki Sawada <hypweb+elfinder@gmail.com>', language : 'English', direction : 'ltr', dateFormat : 'M d, Y h:i A', // will show like: Aug 24, 2018 04:39 PM fancyDateFormat : '$1 h:i A', // will show like: Today 04:39 PM nonameDateFormat : 'ymd-His', // noname upload will show like: 180824-163916 messages : { /********************************** errors **********************************/ 'error' : 'Error', 'errUnknown' : 'Unknown error.', 'errUnknownCmd' : 'Unknown command.', 'errJqui' : 'Invalid jQuery UI configuration. Selectable, draggable and droppable components must be included.', 'errNode' : 'elFinder requires DOM Element to be created.', 'errURL' : 'Invalid elFinder configuration! URL option is not set.', 'errAccess' : 'Access denied.', 'errConnect' : 'Unable to connect to backend.', 'errAbort' : 'Connection aborted.', 'errTimeout' : 'Connection timeout.', 'errNotFound' : 'Backend not found.', 'errResponse' : 'Invalid backend response.', 'errConf' : 'Invalid backend configuration.', 'errJSON' : 'PHP JSON module not installed.', 'errNoVolumes' : 'Readable volumes not available.', 'errCmdParams' : 'Invalid parameters for command "$1".', 'errDataNotJSON' : 'Data is not JSON.', 'errDataEmpty' : 'Data is empty.', 'errCmdReq' : 'Backend request requires command name.', 'errOpen' : 'Unable to open "$1".', 'errNotFolder' : 'Object is not a folder.', 'errNotFile' : 'Object is not a file.', 'errRead' : 'Unable to read "$1".', 'errWrite' : 'Unable to write into "$1".', 'errPerm' : 'Permission denied.', 'errLocked' : '"$1" is locked and can not be renamed, moved or removed.', 'errExists' : 'Item named "$1" already exists.', 'errInvName' : 'Invalid file name.', 'errInvDirname' : 'Invalid folder name.', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : 'Folder not found.', 'errFileNotFound' : 'File not found.', 'errTrgFolderNotFound' : 'Target folder "$1" not found.', 'errPopup' : 'Browser prevented opening popup window. To open file enable it in browser options.', 'errMkdir' : 'Unable to create folder "$1".', 'errMkfile' : 'Unable to create file "$1".', 'errRename' : 'Unable to rename "$1".', 'errCopyFrom' : 'Copying files from volume "$1" not allowed.', 'errCopyTo' : 'Copying files to volume "$1" not allowed.', 'errMkOutLink' : 'Unable to create a link to outside the volume root.', // from v2.1 added 03.10.2015 'errUpload' : 'Upload error.', // old name - errUploadCommon 'errUploadFile' : 'Unable to upload "$1".', // old name - errUpload 'errUploadNoFiles' : 'No files found for upload.', 'errUploadTotalSize' : 'Data exceeds the maximum allowed size.', // old name - errMaxSize 'errUploadFileSize' : 'File exceeds maximum allowed size.', // old name - errFileMaxSize 'errUploadMime' : 'File type not allowed.', 'errUploadTransfer' : '"$1" transfer error.', 'errUploadTemp' : 'Unable to make temporary file for upload.', // from v2.1 added 26.09.2015 'errNotReplace' : 'Object "$1" already exists at this location and can not be replaced by object with another type.', // new 'errReplace' : 'Unable to replace "$1".', 'errSave' : 'Unable to save "$1".', 'errCopy' : 'Unable to copy "$1".', 'errMove' : 'Unable to move "$1".', 'errCopyInItself' : 'Unable to copy "$1" into itself.', 'errRm' : 'Unable to remove "$1".', 'errTrash' : 'Unable into trash.', // from v2.1.24 added 30.4.2017 'errRmSrc' : 'Unable remove source file(s).', 'errExtract' : 'Unable to extract files from "$1".', 'errArchive' : 'Unable to create archive.', 'errArcType' : 'Unsupported archive type.', 'errNoArchive' : 'File is not archive or has unsupported archive type.', 'errCmdNoSupport' : 'Backend does not support this command.', 'errReplByChild' : 'The folder "$1" can\'t be replaced by an item it contains.', 'errArcSymlinks' : 'For security reason denied to unpack archives contains symlinks or files with not allowed names.', // edited 24.06.2012 'errArcMaxSize' : 'Archive files exceeds maximum allowed size.', 'errResize' : 'Unable to resize "$1".', 'errResizeDegree' : 'Invalid rotate degree.', // added 7.3.2013 'errResizeRotate' : 'Unable to rotate image.', // added 7.3.2013 'errResizeSize' : 'Invalid image size.', // added 7.3.2013 'errResizeNoChange' : 'Image size not changed.', // added 7.3.2013 'errUsupportType' : 'Unsupported file type.', 'errNotUTF8Content' : 'File "$1" is not in UTF-8 and cannot be edited.', // added 9.11.2011 'errNetMount' : 'Unable to mount "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'Unsupported protocol.', // added 17.04.2012 'errNetMountFailed' : 'Mount failed.', // added 17.04.2012 'errNetMountHostReq' : 'Host required.', // added 18.04.2012 'errSessionExpires' : 'Your session has expired due to inactivity.', 'errCreatingTempDir' : 'Unable to create temporary directory: "$1"', 'errFtpDownloadFile' : 'Unable to download file from FTP: "$1"', 'errFtpUploadFile' : 'Unable to upload file to FTP: "$1"', 'errFtpMkdir' : 'Unable to create remote directory on FTP: "$1"', 'errArchiveExec' : 'Error while archiving files: "$1"', 'errExtractExec' : 'Error while extracting files: "$1"', 'errNetUnMount' : 'Unable to unmount.', // from v2.1 added 30.04.2012 'errConvUTF8' : 'Not convertible to UTF-8', // from v2.1 added 08.04.2014 'errFolderUpload' : 'Try the modern browser, If you\'d like to upload the folder.', // from v2.1 added 26.6.2015 'errSearchTimeout' : 'Timed out while searching "$1". Search result is partial.', // from v2.1 added 12.1.2016 'errReauthRequire' : 'Re-authorization is required.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'Max number of selectable items is $1.', // from v2.1.17 added 17.10.2016 'errRestore' : 'Unable to restore from the trash. Can\'t identify the restore destination.', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'Editor not found to this file type.', // from v2.1.25 added 23.5.2017 'errServerError' : 'Error occurred on the server side.', // from v2.1.25 added 16.6.2017 'errEmpty' : 'Unable to empty folder "$1".', // from v2.1.25 added 22.6.2017 'moreErrors' : 'There are $1 more errors.', // from v2.1.44 added 9.12.2018 'errMaxMkdirs' : 'You can create up to $1 folders at one time.', // from v2.1.58 added 20.6.2021 /******************************* commands names ********************************/ 'cmdarchive' : 'Create archive', 'cmdback' : 'Back', 'cmdcopy' : 'Copy', 'cmdcut' : 'Cut', 'cmddownload' : 'Download', 'cmdduplicate' : 'Duplicate', 'cmdedit' : 'Edit file', 'cmdextract' : 'Extract files from archive', 'cmdforward' : 'Forward', 'cmdgetfile' : 'Select files', 'cmdhelp' : 'About this software', 'cmdhome' : 'Root', 'cmdinfo' : 'Get info', 'cmdmkdir' : 'New folder', 'cmdmkdirin' : 'Into New Folder', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'New file', 'cmdopen' : 'Open', 'cmdpaste' : 'Paste', 'cmdquicklook' : 'Preview', 'cmdreload' : 'Reload', 'cmdrename' : 'Rename', 'cmdrm' : 'Delete', 'cmdtrash' : 'Into trash', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'Restore', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'Find files', 'cmdup' : 'Go to parent folder', 'cmdupload' : 'Upload files', 'cmdview' : 'View', 'cmdresize' : 'Resize & Rotate', 'cmdsort' : 'Sort', 'cmdnetmount' : 'Mount network volume', // added 18.04.2012 'cmdnetunmount': 'Unmount', // from v2.1 added 30.04.2012 'cmdplaces' : 'To Places', // added 28.12.2014 'cmdchmod' : 'Change mode', // from v2.1 added 20.6.2015 'cmdopendir' : 'Open a folder', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'Reset column width', // from v2.1.13 added 12.06.2016 'cmdfullscreen': 'Full Screen', // from v2.1.15 added 03.08.2016 'cmdmove' : 'Move', // from v2.1.15 added 21.08.2016 'cmdempty' : 'Empty the folder', // from v2.1.25 added 22.06.2017 'cmdundo' : 'Undo', // from v2.1.27 added 31.07.2017 'cmdredo' : 'Redo', // from v2.1.27 added 31.07.2017 'cmdpreference': 'Preferences', // from v2.1.27 added 03.08.2017 'cmdselectall' : 'Select all', // from v2.1.28 added 15.08.2017 'cmdselectnone': 'Select none', // from v2.1.28 added 15.08.2017 'cmdselectinvert': 'Invert selection', // from v2.1.28 added 15.08.2017 'cmdopennew' : 'Open in new window', // from v2.1.38 added 3.4.2018 'cmdhide' : 'Hide (Preference)', // from v2.1.41 added 24.7.2018 /*********************************** buttons ***********************************/ 'btnClose' : 'Close', 'btnSave' : 'Save', 'btnRm' : 'Remove', 'btnApply' : 'Apply', 'btnCancel' : 'Cancel', 'btnNo' : 'No', 'btnYes' : 'Yes', 'btnMount' : 'Mount', // added 18.04.2012 'btnApprove': 'Goto $1 & approve', // from v2.1 added 26.04.2012 'btnUnmount': 'Unmount', // from v2.1 added 30.04.2012 'btnConv' : 'Convert', // from v2.1 added 08.04.2014 'btnCwd' : 'Here', // from v2.1 added 22.5.2015 'btnVolume' : 'Volume', // from v2.1 added 22.5.2015 'btnAll' : 'All', // from v2.1 added 22.5.2015 'btnMime' : 'MIME Type', // from v2.1 added 22.5.2015 'btnFileName':'Filename', // from v2.1 added 22.5.2015 'btnSaveClose': 'Save & Close', // from v2.1 added 12.6.2015 'btnBackup' : 'Backup', // fromv2.1 added 28.11.2015 'btnRename' : 'Rename', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'Rename(All)', // from v2.1.24 added 6.4.2017 'btnPrevious' : 'Prev ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : 'Next ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : 'Save As', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'Open folder', 'ntffile' : 'Open file', 'ntfreload' : 'Reload folder content', 'ntfmkdir' : 'Creating folder', 'ntfmkfile' : 'Creating files', 'ntfrm' : 'Delete items', 'ntfcopy' : 'Copy items', 'ntfmove' : 'Move items', 'ntfprepare' : 'Checking existing items', 'ntfrename' : 'Rename files', 'ntfupload' : 'Uploading files', 'ntfdownload' : 'Downloading files', 'ntfsave' : 'Save files', 'ntfarchive' : 'Creating archive', 'ntfextract' : 'Extracting files from archive', 'ntfsearch' : 'Searching files', 'ntfresize' : 'Resizing images', 'ntfsmth' : 'Doing something', 'ntfloadimg' : 'Loading image', 'ntfnetmount' : 'Mounting network volume', // added 18.04.2012 'ntfnetunmount': 'Unmounting network volume', // from v2.1 added 30.04.2012 'ntfdim' : 'Acquiring image dimension', // added 20.05.2013 'ntfreaddir' : 'Reading folder infomation', // from v2.1 added 01.07.2013 'ntfurl' : 'Getting URL of link', // from v2.1 added 11.03.2014 'ntfchmod' : 'Changing file mode', // from v2.1 added 20.6.2015 'ntfpreupload': 'Verifying upload file name', // from v2.1 added 31.11.2015 'ntfzipdl' : 'Creating a file for download', // from v2.1.7 added 23.1.2016 'ntfparents' : 'Getting path infomation', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'Processing the uploaded file', // from v2.1.17 added 2.11.2016 'ntftrash' : 'Doing throw in the trash', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'Doing restore from the trash', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'Checking destination folder', // from v2.1.24 added 3.5.2017 'ntfundo' : 'Undoing previous operation', // from v2.1.27 added 31.07.2017 'ntfredo' : 'Redoing previous undone', // from v2.1.27 added 31.07.2017 'ntfchkcontent' : 'Checking contents', // from v2.1.41 added 3.8.2018 /*********************************** volumes *********************************/ 'volume_Trash' : 'Trash', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : 'unknown', 'Today' : 'Today', 'Yesterday' : 'Yesterday', 'msJan' : 'Jan', 'msFeb' : 'Feb', 'msMar' : 'Mar', 'msApr' : 'Apr', 'msMay' : 'May', 'msJun' : 'Jun', 'msJul' : 'Jul', 'msAug' : 'Aug', 'msSep' : 'Sep', 'msOct' : 'Oct', 'msNov' : 'Nov', 'msDec' : 'Dec', 'January' : 'January', 'February' : 'February', 'March' : 'March', 'April' : 'April', 'May' : 'May', 'June' : 'June', 'July' : 'July', 'August' : 'August', 'September' : 'September', 'October' : 'October', 'November' : 'November', 'December' : 'December', 'Sunday' : 'Sunday', 'Monday' : 'Monday', 'Tuesday' : 'Tuesday', 'Wednesday' : 'Wednesday', 'Thursday' : 'Thursday', 'Friday' : 'Friday', 'Saturday' : 'Saturday', 'Sun' : 'Sun', 'Mon' : 'Mon', 'Tue' : 'Tue', 'Wed' : 'Wed', 'Thu' : 'Thu', 'Fri' : 'Fri', 'Sat' : 'Sat', /******************************** sort variants ********************************/ 'sortname' : 'by name', 'sortkind' : 'by kind', 'sortsize' : 'by size', 'sortdate' : 'by date', 'sortFoldersFirst' : 'Folders first', 'sortperm' : 'by permission', // from v2.1.13 added 13.06.2016 'sortmode' : 'by mode', // from v2.1.13 added 13.06.2016 'sortowner' : 'by owner', // from v2.1.13 added 13.06.2016 'sortgroup' : 'by group', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'Also Treeview', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : 'NewFile.txt', // added 10.11.2015 'untitled folder' : 'NewFolder', // added 10.11.2015 'Archive' : 'NewArchive', // from v2.1 added 10.11.2015 'untitled file' : 'NewFile.$1', // from v2.1.41 added 6.8.2018 'extentionfile' : '$1: File', // from v2.1.41 added 6.8.2018 'extentiontype' : '$1: $2', // from v2.1.43 added 17.10.2018 /********************************** messages **********************************/ 'confirmReq' : 'Confirmation required', 'confirmRm' : 'Are you sure you want to permanently remove items?
                This cannot be undone!', 'confirmRepl' : 'Replace old file with new one? (If it contains folders, it will be merged. To backup and replace, select Backup.)', 'confirmRest' : 'Replace existing item with the item in trash?', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'Not in UTF-8
                Convert to UTF-8?
                Contents become UTF-8 by saving after conversion.', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'Character encoding of this file couldn\'t be detected. It need to temporarily convert to UTF-8 for editting.
                Please select character encoding of this file.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : 'It has been modified.
                Losing work if you do not save changes.', // from v2.1 added 15.7.2015 'confirmTrash' : 'Are you sure you want to move items to trash bin?', //from v2.1.24 added 29.4.2017 'confirmMove' : 'Are you sure you want to move items to "$1"?', //from v2.1.50 added 27.7.2019 'apllyAll' : 'Apply to all', 'name' : 'Name', 'size' : 'Size', 'perms' : 'Permissions', 'modify' : 'Modified', 'kind' : 'Kind', 'read' : 'read', 'write' : 'write', 'noaccess' : 'no access', 'and' : 'and', 'unknown' : 'unknown', 'selectall' : 'Select all items', 'selectfiles' : 'Select item(s)', 'selectffile' : 'Select first item', 'selectlfile' : 'Select last item', 'viewlist' : 'List view', 'viewicons' : 'Icons view', 'viewSmall' : 'Small icons', // from v2.1.39 added 22.5.2018 'viewMedium' : 'Medium icons', // from v2.1.39 added 22.5.2018 'viewLarge' : 'Large icons', // from v2.1.39 added 22.5.2018 'viewExtraLarge' : 'Extra large icons', // from v2.1.39 added 22.5.2018 'places' : 'Places', 'calc' : 'Calculate', 'path' : 'Path', 'aliasfor' : 'Alias for', 'locked' : 'Locked', 'dim' : 'Dimensions', 'files' : 'Files', 'folders' : 'Folders', 'items' : 'Items', 'yes' : 'yes', 'no' : 'no', 'link' : 'Link', 'searcresult' : 'Search results', 'selected' : 'selected items', 'about' : 'About', 'shortcuts' : 'Shortcuts', 'help' : 'Help', 'webfm' : 'Web file manager', 'ver' : 'Version', 'protocolver' : 'protocol version', 'homepage' : 'Project home', 'docs' : 'Documentation', 'github' : 'Fork us on GitHub', 'twitter' : 'Follow us on Twitter', 'facebook' : 'Join us on Facebook', 'team' : 'Team', 'chiefdev' : 'chief developer', 'developer' : 'developer', 'contributor' : 'contributor', 'maintainer' : 'maintainer', 'translator' : 'translator', 'icons' : 'Icons', 'dontforget' : 'and don\'t forget to take your towel', 'shortcutsof' : 'Shortcuts disabled', 'dropFiles' : 'Drop files here', 'or' : 'or', 'selectForUpload' : 'Select files', 'moveFiles' : 'Move items', 'copyFiles' : 'Copy items', 'restoreFiles' : 'Restore items', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'Remove from places', 'aspectRatio' : 'Aspect ratio', 'scale' : 'Scale', 'width' : 'Width', 'height' : 'Height', 'resize' : 'Resize', 'crop' : 'Crop', 'rotate' : 'Rotate', 'rotate-cw' : 'Rotate 90 degrees CW', 'rotate-ccw' : 'Rotate 90 degrees CCW', 'degree' : '°', 'netMountDialogTitle' : 'Mount network volume', // added 18.04.2012 'protocol' : 'Protocol', // added 18.04.2012 'host' : 'Host', // added 18.04.2012 'port' : 'Port', // added 18.04.2012 'user' : 'User', // added 18.04.2012 'pass' : 'Password', // added 18.04.2012 'confirmUnmount' : 'Are you sure to unmount $1?', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'Drop or Paste files from browser', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'Drop files, Paste URLs or images(clipboard) here', // from v2.1 added 07.04.2014 'encoding' : 'Encoding', // from v2.1 added 19.12.2014 'locale' : 'Locale', // from v2.1 added 19.12.2014 'searchTarget' : 'Target: $1', // from v2.1 added 22.5.2015 'searchMime' : 'Search by input MIME Type', // from v2.1 added 22.5.2015 'owner' : 'Owner', // from v2.1 added 20.6.2015 'group' : 'Group', // from v2.1 added 20.6.2015 'other' : 'Other', // from v2.1 added 20.6.2015 'execute' : 'Execute', // from v2.1 added 20.6.2015 'perm' : 'Permission', // from v2.1 added 20.6.2015 'mode' : 'Mode', // from v2.1 added 20.6.2015 'emptyFolder' : 'Folder is empty', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'Folder is empty\\A Drop to add items', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'Folder is empty\\A Long tap to add items', // from v2.1.6 added 30.12.2015 'quality' : 'Quality', // from v2.1.6 added 5.1.2016 'autoSync' : 'Auto sync', // from v2.1.6 added 10.1.2016 'moveUp' : 'Move up', // from v2.1.6 added 18.1.2016 'getLink' : 'Get URL link', // from v2.1.7 added 9.2.2016 'selectedItems' : 'Selected items ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'Folder ID', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'Allow offline access', // from v2.1.10 added 3.25.2016 'reAuth' : 'To re-authenticate', // from v2.1.10 added 3.25.2016 'nowLoading' : 'Now loading...', // from v2.1.12 added 4.26.2016 'openMulti' : 'Open multiple files', // from v2.1.12 added 5.14.2016 'openMultiConfirm': 'You are trying to open the $1 files. Are you sure you want to open in browser?', // from v2.1.12 added 5.14.2016 'emptySearch' : 'Search results is empty in search target.', // from v2.1.12 added 5.16.2016 'editingFile' : 'It is editing a file.', // from v2.1.13 added 6.3.2016 'hasSelected' : 'You have selected $1 items.', // from v2.1.13 added 6.3.2016 'hasClipboard' : 'You have $1 items in the clipboard.', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'Incremental search is only from the current view.', // from v2.1.13 added 6.30.2016 'reinstate' : 'Reinstate', // from v2.1.15 added 3.8.2016 'complete' : '$1 complete', // from v2.1.15 added 21.8.2016 'contextmenu' : 'Context menu', // from v2.1.15 added 9.9.2016 'pageTurning' : 'Page turning', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'Volume roots', // from v2.1.16 added 16.9.2016 'reset' : 'Reset', // from v2.1.16 added 1.10.2016 'bgcolor' : 'Background color', // from v2.1.16 added 1.10.2016 'colorPicker' : 'Color picker', // from v2.1.16 added 1.10.2016 '8pxgrid' : '8px Grid', // from v2.1.16 added 4.10.2016 'enabled' : 'Enabled', // from v2.1.16 added 4.10.2016 'disabled' : 'Disabled', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'Search results is empty in current view.\\A Press [Enter] to expand search target.', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'First letter search results is empty in current view.', // from v2.1.23 added 24.3.2017 'textLabel' : 'Text label', // from v2.1.17 added 13.10.2016 'minsLeft' : '$1 mins left', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'Reopen with selected encoding', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'Save with the selected encoding', // from v2.1.19 added 2.12.2016 'selectFolder' : 'Select folder', // from v2.1.20 added 13.12.2016 'firstLetterSearch': 'First letter search', // from v2.1.23 added 24.3.2017 'presets' : 'Presets', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : 'It\'s too many items so it can\'t into trash.', // from v2.1.25 added 9.6.2017 'TextArea' : 'TextArea', // from v2.1.25 added 14.6.2017 'folderToEmpty' : 'Empty the folder "$1".', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : 'There are no items in a folder "$1".', // from v2.1.25 added 22.6.2017 'preference' : 'Preference', // from v2.1.26 added 28.6.2017 'language' : 'Language', // from v2.1.26 added 28.6.2017 'clearBrowserData': 'Initialize the settings saved in this browser', // from v2.1.26 added 28.6.2017 'toolbarPref' : 'Toolbar settings', // from v2.1.27 added 2.8.2017 'charsLeft' : '... $1 chars left.', // from v2.1.29 added 30.8.2017 'linesLeft' : '... $1 lines left.', // from v2.1.52 added 16.1.2020 'sum' : 'Sum', // from v2.1.29 added 28.9.2017 'roughFileSize' : 'Rough file size', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : 'Focus on the element of dialog with mouseover', // from v2.1.30 added 2.11.2017 'select' : 'Select', // from v2.1.30 added 23.11.2017 'selectAction' : 'Action when select file', // from v2.1.30 added 23.11.2017 'useStoredEditor' : 'Open with the editor used last time', // from v2.1.30 added 23.11.2017 'selectinvert' : 'Invert selection', // from v2.1.30 added 25.11.2017 'renameMultiple' : 'Are you sure you want to rename $1 selected items like $2?
                This cannot be undone!', // from v2.1.31 added 4.12.2017 'batchRename' : 'Batch rename', // from v2.1.31 added 8.12.2017 'plusNumber' : '+ Number', // from v2.1.31 added 8.12.2017 'asPrefix' : 'Add prefix', // from v2.1.31 added 8.12.2017 'asSuffix' : 'Add suffix', // from v2.1.31 added 8.12.2017 'changeExtention' : 'Change extention', // from v2.1.31 added 8.12.2017 'columnPref' : 'Columns settings (List view)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : 'All changes will reflect immediately to the archive.', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : 'Any changes will not reflect until un-mount this volume.', // from v2.1.33 added 2.3.2018 'unmountChildren' : 'The following volume(s) mounted on this volume also unmounted. Are you sure to unmount it?', // from v2.1.33 added 5.3.2018 'selectionInfo' : 'Selection Info', // from v2.1.33 added 7.3.2018 'hashChecker' : 'Algorithms to show the file hash', // from v2.1.33 added 10.3.2018 'infoItems' : 'Info Items (Selection Info Panel)', // from v2.1.38 added 28.3.2018 'pressAgainToExit': 'Press again to exit.', // from v2.1.38 added 1.4.2018 'toolbar' : 'Toolbar', // from v2.1.38 added 4.4.2018 'workspace' : 'Work Space', // from v2.1.38 added 4.4.2018 'dialog' : 'Dialog', // from v2.1.38 added 4.4.2018 'all' : 'All', // from v2.1.38 added 4.4.2018 'iconSize' : 'Icon Size (Icons view)', // from v2.1.39 added 7.5.2018 'editorMaximized' : 'Open the maximized editor window', // from v2.1.40 added 30.6.2018 'editorConvNoApi' : 'Because conversion by API is not currently available, please convert on the website.', //from v2.1.40 added 8.7.2018 'editorConvNeedUpload' : 'After conversion, you must be upload with the item URL or a downloaded file to save the converted file.', //from v2.1.40 added 8.7.2018 'convertOn' : 'Convert on the site of $1', // from v2.1.40 added 10.7.2018 'integrations' : 'Integrations', // from v2.1.40 added 11.7.2018 'integrationWith' : 'This elFinder has the following external services integrated. Please check the terms of use, privacy policy, etc. before using it.', // from v2.1.40 added 11.7.2018 'showHidden' : 'Show hidden items', // from v2.1.41 added 24.7.2018 'hideHidden' : 'Hide hidden items', // from v2.1.41 added 24.7.2018 'toggleHidden' : 'Show/Hide hidden items', // from v2.1.41 added 24.7.2018 'makefileTypes' : 'File types to enable with "New file"', // from v2.1.41 added 7.8.2018 'typeOfTextfile' : 'Type of the Text file', // from v2.1.41 added 7.8.2018 'add' : 'Add', // from v2.1.41 added 7.8.2018 'theme' : 'Theme', // from v2.1.43 added 19.10.2018 'default' : 'Default', // from v2.1.43 added 19.10.2018 'description' : 'Description', // from v2.1.43 added 19.10.2018 'website' : 'Website', // from v2.1.43 added 19.10.2018 'author' : 'Author', // from v2.1.43 added 19.10.2018 'email' : 'Email', // from v2.1.43 added 19.10.2018 'license' : 'License', // from v2.1.43 added 19.10.2018 'exportToSave' : 'This item can\'t be saved. To avoid losing the edits you need to export to your PC.', // from v2.1.44 added 1.12.2018 'dblclickToSelect': 'Double click on the file to select it.', // from v2.1.47 added 22.1.2019 'useFullscreen' : 'Use fullscreen mode', // from v2.1.47 added 19.2.2019 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Unknown', 'kindRoot' : 'Volume Root', // from v2.1.16 added 16.10.2016 'kindFolder' : 'Folder', 'kindSelects' : 'Selections', // from v2.1.29 added 29.8.2017 'kindAlias' : 'Alias', 'kindAliasBroken' : 'Broken alias', // applications 'kindApp' : 'Application', 'kindPostscript' : 'Postscript document', 'kindMsOffice' : 'Microsoft Office document', 'kindMsWord' : 'Microsoft Word document', 'kindMsExcel' : 'Microsoft Excel document', 'kindMsPP' : 'Microsoft Powerpoint presentation', 'kindOO' : 'Open Office document', 'kindAppFlash' : 'Flash application', 'kindPDF' : 'Portable Document Format (PDF)', 'kindTorrent' : 'Bittorrent file', 'kind7z' : '7z archive', 'kindTAR' : 'TAR archive', 'kindGZIP' : 'GZIP archive', 'kindBZIP' : 'BZIP archive', 'kindXZ' : 'XZ archive', 'kindZIP' : 'ZIP archive', 'kindRAR' : 'RAR archive', 'kindJAR' : 'Java JAR file', 'kindTTF' : 'True Type font', 'kindOTF' : 'Open Type font', 'kindRPM' : 'RPM package', // texts 'kindText' : 'Text document', 'kindTextPlain' : 'Plain text', 'kindPHP' : 'PHP source', 'kindCSS' : 'Cascading style sheet', 'kindHTML' : 'HTML document', 'kindJS' : 'Javascript source', 'kindRTF' : 'Rich Text Format', 'kindC' : 'C source', 'kindCHeader' : 'C header source', 'kindCPP' : 'C++ source', 'kindCPPHeader' : 'C++ header source', 'kindShell' : 'Unix shell script', 'kindPython' : 'Python source', 'kindJava' : 'Java source', 'kindRuby' : 'Ruby source', 'kindPerl' : 'Perl script', 'kindSQL' : 'SQL source', 'kindXML' : 'XML document', 'kindAWK' : 'AWK source', 'kindCSV' : 'Comma separated values', 'kindDOCBOOK' : 'Docbook XML document', 'kindMarkdown' : 'Markdown text', // added 20.7.2015 // images 'kindImage' : 'Image', 'kindBMP' : 'BMP image', 'kindJPEG' : 'JPEG image', 'kindGIF' : 'GIF Image', 'kindPNG' : 'PNG Image', 'kindTIFF' : 'TIFF image', 'kindTGA' : 'TGA image', 'kindPSD' : 'Adobe Photoshop image', 'kindXBITMAP' : 'X bitmap image', 'kindPXM' : 'Pixelmator image', // media 'kindAudio' : 'Audio media', 'kindAudioMPEG' : 'MPEG audio', 'kindAudioMPEG4' : 'MPEG-4 audio', 'kindAudioMIDI' : 'MIDI audio', 'kindAudioOGG' : 'Ogg Vorbis audio', 'kindAudioWAV' : 'WAV audio', 'AudioPlaylist' : 'MP3 playlist', 'kindVideo' : 'Video media', 'kindVideoDV' : 'DV movie', 'kindVideoMPEG' : 'MPEG movie', 'kindVideoMPEG4' : 'MPEG-4 movie', 'kindVideoAVI' : 'AVI movie', 'kindVideoMOV' : 'Quick Time movie', 'kindVideoWM' : 'Windows Media movie', 'kindVideoFlash' : 'Flash movie', 'kindVideoMKV' : 'Matroska movie', 'kindVideoOGG' : 'Ogg movie' } }; } plugins/file-manager-advanced/application/library/js/i18n/elfinder.es.js000064400000076214147176754550022254 0ustar00/** * Español internacional translation * @author Julián Torres * @author Luis Faura * @author Adrià Vilanova * @author Wilman Marín Duran * @version 2018-04-10 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.es = { translator : 'Julián Torres <julian.torres@pabernosmatao.com>, Luis Faura <luis@luisfaura.es>, Adrià Vilanova <me@avm99963.tk>, Wilman Marín Duran <fuclo05@hotmail.com>', language : 'Español internacional', direction : 'ltr', dateFormat : 'M d, Y h:i A', // Mar 13, 2012 05:27 PM fancyDateFormat : '$1 h:i A', // will produce smth like: Today 12:25 PM nonameDateFormat : 'ymd-His', // to apply if upload file is noname: 120513172700 messages : { /********************************** errors **********************************/ 'error' : 'Error', 'errUnknown' : 'Error desconocido.', 'errUnknownCmd' : 'Comando desconocido.', 'errJqui' : 'Configuración no válida de jQuery UI. Deben estar incluidos los componentes selectable, draggable y droppable.', 'errNode' : 'elFinder necesita crear elementos DOM.', 'errURL' : '¡Configuración no válida de elFinder! La opción URL no está configurada.', 'errAccess' : 'Acceso denegado.', 'errConnect' : 'No se ha podido conectar con el backend.', 'errAbort' : 'Conexión cancelada.', 'errTimeout' : 'Conexión cancelada por timeout.', 'errNotFound' : 'Backend no encontrado.', 'errResponse' : 'Respuesta no válida del backend.', 'errConf' : 'Configuración no válida del backend .', 'errJSON' : 'El módulo PHP JSON no está instalado.', 'errNoVolumes' : 'No hay disponibles volúmenes legibles.', 'errCmdParams' : 'Parámetros no válidos para el comando "$1".', 'errDataNotJSON' : 'los datos no están en formato JSON.', 'errDataEmpty' : 'No hay datos.', 'errCmdReq' : 'La petición del backend necesita un nombre de comando.', 'errOpen' : 'No se puede abrir "$1".', 'errNotFolder' : 'El objeto no es una carpeta.', 'errNotFile' : 'El objeto no es un archivo.', 'errRead' : 'No se puede leer "$1".', 'errWrite' : 'No se puede escribir en "$1".', 'errPerm' : 'Permiso denegado.', 'errLocked' : '"$1" está bloqueado y no puede ser renombrado, movido o borrado.', 'errExists' : 'Ya existe un archivo llamado "$1".', 'errInvName' : 'Nombre de archivo no válido.', 'errInvDirname' : 'Nombre de carpeta inválido.', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : 'Carpeta no encontrada.', 'errFileNotFound' : 'Archivo no encontrado.', 'errTrgFolderNotFound' : 'Carpeta de destino "$1" no encontrada.', 'errPopup' : 'El navegador impide abrir nuevas ventanas. Puede activarlo en las opciones del navegador.', 'errMkdir' : 'No se puede crear la carpeta "$1".', 'errMkfile' : 'No se puede crear el archivo "$1".', 'errRename' : 'No se puede renombrar "$1".', 'errCopyFrom' : 'No se permite copiar archivos desde el volumen "$1".', 'errCopyTo' : 'No se permite copiar archivos al volumen "$1".', 'errMkOutLink' : 'No se ha podido crear el enlace fuera del volumen raíz.', // from v2.1 added 03.10.2015 'errUpload' : 'Error en el envío.', // old name - errUploadCommon 'errUploadFile' : 'No se ha podido cargar "$1".', // old name - errUpload 'errUploadNoFiles' : 'No hay archivos para subir.', 'errUploadTotalSize' : 'El tamaño de los datos excede el máximo permitido.', // old name - errMaxSize 'errUploadFileSize' : 'El tamaño del archivo excede el máximo permitido.', // old name - errFileMaxSize 'errUploadMime' : 'Tipo de archivo no permitido.', 'errUploadTransfer' : 'Error al transferir "$1".', 'errUploadTemp' : 'No se ha podido crear el archivo temporal para la subida.', // from v2.1 added 26.09.2015 'errNotReplace' : 'El objeto "$1" ya existe y no puede ser reemplazado por otro con otro tipo.', // new 'errReplace' : 'No se puede reemplazar "$1".', 'errSave' : 'No se puede guardar "$1".', 'errCopy' : 'No se puede copiar "$1".', 'errMove' : 'No se puede mover "$1".', 'errCopyInItself' : 'No se puede copiar "$1" en si mismo.', 'errRm' : 'No se puede borrar "$1".', 'errTrash' : 'No se puede enviar a la papelera.', // from v2.1.24 added 30.4.2017 'errRmSrc' : 'No se puede(n) borrar los archivo(s).', 'errExtract' : 'No se puede extraer archivos desde "$1".', 'errArchive' : 'No se puede crear el archivo.', 'errArcType' : 'Tipo de archivo no soportado.', 'errNoArchive' : 'El archivo no es de tipo archivo o es de un tipo no soportado.', 'errCmdNoSupport' : 'El backend no soporta este comando.', 'errReplByChild' : 'La carpeta “$1” no puede ser reemplazada por un elemento contenido en ella.', 'errArcSymlinks' : 'Por razones de seguridad no se pueden descomprimir archivos que contengan enlaces simbólicos.', // edited 24.06.2012 'errArcMaxSize' : 'El tamaño del archivo excede el máximo permitido.', 'errResize' : 'Error al redimensionar "$1".', 'errResizeDegree' : 'Grado de rotación inválido.', // added 7.3.2013 'errResizeRotate' : 'Error al rotar la imagen.', // added 7.3.2013 'errResizeSize' : 'Tamaño de imagen inválido.', // added 7.3.2013 'errResizeNoChange' : 'No se puede cambiar el tamaño de la imagen.', // added 7.3.2013 'errUsupportType' : 'Tipo de archivo no soportado.', 'errNotUTF8Content' : 'El archivo "$1" no está en formato UTF-8 y no puede ser editado.', // added 9.11.2011 'errNetMount' : 'Fallo al montar "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'Protocolo no soportado.', // added 17.04.2012 'errNetMountFailed' : 'Fallo al montar.', // added 17.04.2012 'errNetMountHostReq' : 'Dominio requerido.', // added 18.04.2012 'errSessionExpires' : 'La sesión ha expirado por inactividad', 'errCreatingTempDir' : 'No se ha podido crear al directorio temporal: "$1"', 'errFtpDownloadFile' : 'No se ha podido descargar el archivo desde FTP: "$1"', 'errFtpUploadFile' : 'No se ha podido cargar el archivo a FTP: "$1"', 'errFtpMkdir' : 'No se ha podido crear el directorio remoto en FTP: "$1"', 'errArchiveExec' : 'Se ha producido un error durante el archivo: "$1"', 'errExtractExec' : 'Se ha producido un error durante la extracción de archivos: "$1"', 'errNetUnMount' : 'Imposible montar', // from v2.1 added 30.04.2012 'errConvUTF8' : 'No es convertible a UTF-8', // from v2.1 added 08.04.2014 'errFolderUpload' : 'Prueba con un navegador moderno, si quieres subir la carpeta completa.', // from v2.1 added 26.6.2015 'errSearchTimeout' : 'Se agotó el tiempo de espera buscando "$1". Los resultados de búsqueda son parciales.', // from v2.1 added 12.1.2016 'errReauthRequire' : 'Se requiere autorizar de nuevo.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'Número máximo de elementos seleccionables es $1.', // from v2.1.17 added 17.10.2016 'errRestore' : 'No se puede restaurar desde la papelera. No se puede identificar el destino de restauración.', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'Editor no encontrado para este tipo de archivo.', // from v2.1.25 added 23.5.2017 'errServerError' : 'Error ocurrido en el lado del servidor.', // from v2.1.25 added 16.6.2017 'errEmpty' : 'No es posible vaciar la carpeta "$1".', // from v2.1.25 added 22.6.2017 /******************************* commands names ********************************/ 'cmdarchive' : 'Crear archivo', 'cmdback' : 'Atrás', 'cmdcopy' : 'Copiar', 'cmdcut' : 'Cortar', 'cmddownload' : 'Descargar', 'cmdduplicate' : 'Duplicar', 'cmdedit' : 'Editar archivo', 'cmdextract' : 'Extraer elementos del archivo', 'cmdforward' : 'Adelante', 'cmdgetfile' : 'Seleccionar archivos', 'cmdhelp' : 'Acerca de este software', 'cmdhome' : 'Inicio', 'cmdinfo' : 'Obtener información', 'cmdmkdir' : 'Nueva carpeta', 'cmdmkdirin' : 'En una nueva carpeta', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'Nueva archivo', 'cmdopen' : 'Abrir', 'cmdpaste' : 'Pegar', 'cmdquicklook' : 'Previsualizar', 'cmdreload' : 'Recargar', 'cmdrename' : 'Cambiar nombre', 'cmdrm' : 'Eliminar', 'cmdtrash' : 'Enviar a la papelera', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'Restaurar', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'Buscar archivos', 'cmdup' : 'Ir a la carpeta raíz', 'cmdupload' : 'Subir archivos', 'cmdview' : 'Ver', 'cmdresize' : 'Redimensionar y rotar', 'cmdsort' : 'Ordenar', 'cmdnetmount' : 'Montar volumen en red', // added 18.04.2012 'cmdnetunmount': 'Desmontar', // from v2.1 added 30.04.2012 'cmdplaces' : 'A Lugares', // added 28.12.2014 'cmdchmod' : 'Cambiar modo', // from v2.1 added 20.6.2015 'cmdopendir' : 'Abrir una carpeta', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'Restablecer ancho de columna', // from v2.1.13 added 12.06.2016 'cmdfullscreen': 'Pantalla completa', // from v2.1.15 added 03.08.2016 'cmdmove' : 'Mover', // from v2.1.15 added 21.08.2016 'cmdempty' : 'Vaciar la carpeta', // from v2.1.25 added 22.06.2017 'cmdundo' : 'Deshacer', // from v2.1.27 added 31.07.2017 'cmdredo' : 'Rehacer', // from v2.1.27 added 31.07.2017 'cmdpreference': 'Preferencias', // from v2.1.27 added 03.08.2017 'cmdselectall' : 'Seleccionar todo', // from v2.1.28 added 15.08.2017 'cmdselectnone': 'Seleccionar ninguno', // from v2.1.28 added 15.08.2017 'cmdselectinvert': 'Invertir selección', // from v2.1.28 added 15.08.2017 'cmdopennew' : 'Abrir en nueva ventana', // from v2.1.38 added 3.4.2018 /*********************************** buttons ***********************************/ 'btnClose' : 'Cerrar', 'btnSave' : 'Guardar', 'btnRm' : 'Eliminar', 'btnApply' : 'Aplicar', 'btnCancel' : 'Cancelar', 'btnNo' : 'No', 'btnYes' : 'Sí', 'btnMount' : 'Montar', // added 18.04.2012 'btnApprove': 'Ir a $1 y aprobar', // from v2.1 added 26.04.2012 'btnUnmount': 'Desmontar', // from v2.1 added 30.04.2012 'btnConv' : 'Convertir', // from v2.1 added 08.04.2014 'btnCwd' : 'Aquí', // from v2.1 added 22.5.2015 'btnVolume' : 'Volumen', // from v2.1 added 22.5.2015 'btnAll' : 'Todos', // from v2.1 added 22.5.2015 'btnMime' : 'Tipo MIME', // from v2.1 added 22.5.2015 'btnFileName':'Nombre de archivo', // from v2.1 added 22.5.2015 'btnSaveClose': 'Guardar y cerrar', // from v2.1 added 12.6.2015 'btnBackup' : 'Copia de seguridad', // fromv2.1 added 28.11.2015 'btnRename' : 'Renombrar', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'Renombrar(Todo)', // from v2.1.24 added 6.4.2017 'btnPrevious' : 'Ant ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : 'Sig ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : 'Guardar como', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'Abrir carpeta', 'ntffile' : 'Abrir archivo', 'ntfreload' : 'Actualizar contenido de la carpeta', 'ntfmkdir' : 'Creando directorio', 'ntfmkfile' : 'Creando archivos', 'ntfrm' : 'Eliminando archivos', 'ntfcopy' : 'Copiar archivos', 'ntfmove' : 'Mover archivos', 'ntfprepare' : 'Preparar copia de archivos', 'ntfrename' : 'Renombrar archivos', 'ntfupload' : 'Subiendo archivos', 'ntfdownload' : 'Descargando archivos', 'ntfsave' : 'Guardar archivos', 'ntfarchive' : 'Creando archivo', 'ntfextract' : 'Extrayendo elementos del archivo', 'ntfsearch' : 'Buscando archivos', 'ntfresize' : 'Redimensionando imágenes', 'ntfsmth' : 'Haciendo algo', 'ntfloadimg' : 'Cargando imagen', 'ntfnetmount' : 'Montando volumen en red', // added 18.04.2012 'ntfnetunmount': 'Desmontando volumen en red', // from v2.1 added 30.04.2012 'ntfdim' : 'Adquiriendo tamaño de imagen', // added 20.05.2013 'ntfreaddir' : 'Leyendo información de la carpeta', // from v2.1 added 01.07.2013 'ntfurl' : 'Obteniendo URL del enlace', // from v2.1 added 11.03.2014 'ntfchmod' : 'Cambiando el modo de archivo', // from v2.1 added 20.6.2015 'ntfpreupload': 'Verificando nombre del archivo subido', // from v2.1 added 31.11.2015 'ntfzipdl' : 'Creando un archivo para descargar', // from v2.1.7 added 23.1.2016 'ntfparents' : 'Obteniendo información de la ruta', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'Procesando el archivo cargado', // from v2.1.17 added 2.11.2016 'ntftrash' : 'Enviando a la papelera', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'Restaurando desde la papelera', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'Comprobando carpeta de destino', // from v2.1.24 added 3.5.2017 'ntfundo' : 'Deshaciendo operación previa', // from v2.1.27 added 31.07.2017 'ntfredo' : 'Rehaciendo previo deshacer', // from v2.1.27 added 31.07.2017 /*********************************** volumes *********************************/ 'volume_Trash' : 'Papelera', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : 'desconocida', 'Today' : 'Hoy', 'Yesterday' : 'Ayer', 'msJan' : 'Ene', 'msFeb' : 'Feb', 'msMar' : 'Mar', 'msApr' : 'Abr', 'msMay' : 'May', 'msJun' : 'Jun', 'msJul' : 'Jul', 'msAug' : 'Ago', 'msSep' : 'Sep', 'msOct' : 'Oct', 'msNov' : 'Nov', 'msDec' : 'Dic', 'January' : 'Enero', 'February' : 'Febrero', 'March' : 'Marzo', 'April' : 'Abril', 'May' : 'Mayo', 'June' : 'Junio', 'July' : 'Julio', 'August' : 'Agosto', 'September' : 'Septiembre', 'October' : 'Octubre', 'November' : 'Noviembre', 'December' : 'Diciembre', 'Sunday' : 'Domingo', 'Monday' : 'Lunes', 'Tuesday' : 'Martes', 'Wednesday' : 'Miércoles', 'Thursday' : 'Jueves', 'Friday' : 'Viernes', 'Saturday' : 'Sábado', 'Sun' : 'Dom', 'Mon' : 'Lun', 'Tue' : 'Mar', 'Wed' : 'Mie', 'Thu' : 'Jue', 'Fri' : 'Vie', 'Sat' : 'Sab', /******************************** sort variants ********************************/ 'sortname' : 'por nombre', 'sortkind' : 'por tipo', 'sortsize' : 'por tamaño', 'sortdate' : 'por fecha', 'sortFoldersFirst' : 'Las carpetas primero', 'sortperm' : 'por permiso', // from v2.1.13 added 13.06.2016 'sortmode' : 'por modo', // from v2.1.13 added 13.06.2016 'sortowner' : 'por propietario', // from v2.1.13 added 13.06.2016 'sortgroup' : 'por grupo', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'También árbol de directorios', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : 'NuevoArchivo.txt', // added 10.11.2015 'untitled folder' : 'NuevaCarpeta', // added 10.11.2015 'Archive' : 'NuevoArchivo', // from v2.1 added 10.11.2015 /********************************** messages **********************************/ 'confirmReq' : 'Se necesita confirmación', 'confirmRm' : '¿Está seguro de querer eliminar archivos?
                ¡Esto no se puede deshacer!', 'confirmRepl' : '¿Reemplazar el antiguo archivo con el nuevo?', 'confirmRest' : '¿Reemplazar elemento existente con el elemento en la papelera?', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'No está en UTF-8
                Convertir a UTF-8?
                Los contenidos se guardarán en UTF-8 tras la conversión.', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'Codificación de caracteres de este archivo no pudo ser detectada. Es necesario convertir temporalmente a UTF-8 para editarlo.
                Por favor, seleccione la codificación de caracteres de este archivo.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : 'Ha sido modificado.
                Perderás los cambios si no los guardas.', // from v2.1 added 15.7.2015 'confirmTrash' : '¿Estás seguro que quieres mover los elementos a la papelera?', //from v2.1.24 added 29.4.2017 'apllyAll' : 'Aplicar a todo', 'name' : 'Nombre', 'size' : 'Tamaño', 'perms' : 'Permisos', 'modify' : 'Modificado', 'kind' : 'Tipo', 'read' : 'lectura', 'write' : 'escritura', 'noaccess' : 'sin acceso', 'and' : 'y', 'unknown' : 'desconocido', 'selectall' : 'Seleccionar todos los archivos', 'selectfiles' : 'Seleccionar archivo(s)', 'selectffile' : 'Seleccionar primer archivo', 'selectlfile' : 'Seleccionar último archivo', 'viewlist' : 'ver como lista', 'viewicons' : 'Ver como iconos', 'places' : 'Lugares', 'calc' : 'Calcular', 'path' : 'Ruta', 'aliasfor' : 'Alias para', 'locked' : 'Bloqueado', 'dim' : 'Dimensiones', 'files' : 'Archivos', 'folders' : 'Carpetas', 'items' : 'Elementos', 'yes' : 'sí', 'no' : 'no', 'link' : 'Enlace', 'searcresult' : 'Resultados de la búsqueda', 'selected' : 'elementos seleccionados', 'about' : 'Acerca', 'shortcuts' : 'Accesos directos', 'help' : 'Ayuda', 'webfm' : 'Administrador de archivos web', 'ver' : 'Versión', 'protocolver' : 'versión del protocolo', 'homepage' : 'Inicio', 'docs' : 'Documentación', 'github' : 'Bifúrcanos en Github', 'twitter' : 'Síguenos en Twitter', 'facebook' : 'Únete a nosotros en Facebook', 'team' : 'Equipo', 'chiefdev' : 'desarrollador jefe', 'developer' : 'desarrollador', 'contributor' : 'contribuyente', 'maintainer' : 'mantenedor', 'translator' : 'traductor', 'icons' : 'Iconos', 'dontforget' : 'y no olvide traer su toalla', 'shortcutsof' : 'Accesos directos desactivados', 'dropFiles' : 'Arrastre archivos aquí', 'or' : 'o', 'selectForUpload' : 'Seleccione archivos para subir', 'moveFiles' : 'Mover archivos', 'copyFiles' : 'Copiar archivos', 'restoreFiles' : 'Restaurar elementos', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'Eliminar en sus ubicaciones', 'aspectRatio' : 'Relación de aspecto', 'scale' : 'Escala', 'width' : 'Ancho', 'height' : 'Alto', 'resize' : 'Redimensionar', 'crop' : 'Recortar', 'rotate' : 'Rotar', 'rotate-cw' : 'Rotar 90 grados en sentido horario', 'rotate-ccw' : 'Rotar 90 grados en sentido anti-horario', 'degree' : '°', 'netMountDialogTitle' : 'Montar volumen en red', // added 18.04.2012 'protocol' : 'Protocolo', // added 18.04.2012 'host' : 'Dominio', // added 18.04.2012 'port' : 'Puerto', // added 18.04.2012 'user' : 'Usuario', // added 18.04.2012 'pass' : 'Contraseña', // added 18.04.2012 'confirmUnmount' : '¿Desmontar $1?', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'Arrastra o pega archivos del navegador', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'Arrastra o pega enlaces URL aquí', // from v2.1 added 07.04.2014 'encoding' : 'Codificando', // from v2.1 added 19.12.2014 'locale' : 'Local', // from v2.1 added 19.12.2014 'searchTarget' : 'Destino: $1', // from v2.1 added 22.5.2015 'searchMime' : 'Buscar entrada por tipo MIME', // from v2.1 added 22.5.2015 'owner' : 'Propietario', // from v2.1 added 20.6.2015 'group' : 'Grupo', // from v2.1 added 20.6.2015 'other' : 'Otro', // from v2.1 added 20.6.2015 'execute' : 'Ejecutar', // from v2.1 added 20.6.2015 'perm' : 'Permiso', // from v2.1 added 20.6.2015 'mode' : 'Modo', // from v2.1 added 20.6.2015 'emptyFolder' : 'La carpeta está vacía', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'La carpeta está vacía\\A Arrastrar para añadir elementos', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'La carpeta está vacía\\A Presiona durante un rato para añadir elementos', // from v2.1.6 added 30.12.2015 'quality' : 'Calidad', // from v2.1.6 added 5.1.2016 'autoSync' : 'Sincronización automática', // from v2.1.6 added 10.1.2016 'moveUp' : 'Mover arriba', // from v2.1.6 added 18.1.2016 'getLink' : 'Obtener enlace', // from v2.1.7 added 9.2.2016 'selectedItems' : 'Elementos seleccionados ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'ID carpeta', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'Permitir acceso sin conexión', // from v2.1.10 added 3.25.2016 'reAuth' : 'Para volver a autenticarse', // from v2.1.10 added 3.25.2016 'nowLoading' : 'Cargando ahora...', // from v2.1.12 added 4.26.2016 'openMulti' : 'Abrir múltiples archivos', // from v2.1.12 added 5.14.2016 'openMultiConfirm': 'Estás tratando de abrir los $1 archivos. ¿Estás seguro que quieres abrir en el navegador?', // from v2.1.12 added 5.14.2016 'emptySearch' : 'No se encontraron resultados en el objetivo de búsqueda.', // from v2.1.12 added 5.16.2016 'editingFile' : 'Está editando un archivo.', // from v2.1.13 added 6.3.2016 'hasSelected' : 'Has seleccionado $1 elementos.', // from v2.1.13 added 6.3.2016 'hasClipboard' : 'Posees $1 elementos en el portapapeles.', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'La búsqueda incremental solo se realiza desde la vista actual.', // from v2.1.13 added 6.30.2016 'reinstate' : 'Reinstanciar', // from v2.1.15 added 3.8.2016 'complete' : '$1 completo', // from v2.1.15 added 21.8.2016 'contextmenu' : 'Menú contextual', // from v2.1.15 added 9.9.2016 'pageTurning' : 'Cambio de página', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'Raíces del volumen', // from v2.1.16 added 16.9.2016 'reset' : 'Reiniciar', // from v2.1.16 added 1.10.2016 'bgcolor' : 'Color de fondo', // from v2.1.16 added 1.10.2016 'colorPicker' : 'Selector de color', // from v2.1.16 added 1.10.2016 '8pxgrid' : '8px Cuadricula', // from v2.1.16 added 4.10.2016 'enabled' : 'Habilitado', // from v2.1.16 added 4.10.2016 'disabled' : 'Deshabilitado', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'Los resultados de la búsqueda están vacíos en la vista actual. \\ APulse [Intro] para expandir el objetivo de búsqueda.', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'La primera letra de los resultados de búsqueda está vacía en la vista actual.', // from v2.1.23 added 24.3.2017 'textLabel' : 'Etiqueta de texto', // from v2.1.17 added 13.10.2016 'minsLeft' : 'Falta $1 minuto(s)', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'Abrir nuevamente con la codificación seleccionada', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'Guardar con la codificación seleccionada', // from v2.1.19 added 2.12.2016 'selectFolder' : 'Seleccionar carpeta', // from v2.1.20 added 13.12.2016 'firstLetterSearch': 'Primera letra de búsqueda', // from v2.1.23 added 24.3.2017 'presets' : 'Preestablecidos', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : 'Son demasiados elementos, por lo que no puede enviarse a la papelera.', // from v2.1.25 added 9.6.2017 'TextArea' : 'Área de texto', // from v2.1.25 added 14.6.2017 'folderToEmpty' : 'Vaciar la carpeta "$1".', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : 'No hay elementos en la carpeta "$1".', // from v2.1.25 added 22.6.2017 'preference' : 'Preferencia', // from v2.1.26 added 28.6.2017 'language' : 'Lenguaje', // from v2.1.26 added 28.6.2017 'clearBrowserData': 'Inicializa la configuración guardada en este navegador', // from v2.1.26 added 28.6.2017 'toolbarPref' : 'Configuración de la barra de herramientas', // from v2.1.27 added 2.8.2017 'charsLeft' : '...falta $1 caracteres.', // from v2.1.29 added 30.8.2017 'sum' : 'Suma', // from v2.1.29 added 28.9.2017 'roughFileSize' : 'Tamaño de archivo aproximado', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : 'Centrado en el elemento de diálogo con \'mouseover\'', // from v2.1.30 added 2.11.2017 'select' : 'Seleccionar', // from v2.1.30 added 23.11.2017 'selectAction' : 'Acción cuando selecciona un archivo', // from v2.1.30 added 23.11.2017 'useStoredEditor' : 'Abrir con el editor utilizado la última vez', // from v2.1.30 added 23.11.2017 'selectinvert' : 'Invertir selección', // from v2.1.30 added 25.11.2017 'renameMultiple' : '¿Estás seguro que quieres renombrar $1 elementos seleccionados como $2?
                ¡Esto no puede ser deshecho!', // from v2.1.31 added 4.12.2017 'batchRename' : 'Cambiar el nombre del lote', // from v2.1.31 added 8.12.2017 'plusNumber' : '+ Número', // from v2.1.31 added 8.12.2017 'asPrefix' : 'Añadir prefijo', // from v2.1.31 added 8.12.2017 'asSuffix' : 'Añadir sufijo', // from v2.1.31 added 8.12.2017 'changeExtention' : 'Cambiar extensión', // from v2.1.31 added 8.12.2017 'columnPref' : 'Configuración de columnas (Vista de lista)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : 'Todos los cambios se reflejarán inmediatamente en el archivo.', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : 'Cualquier cambio no se reflejará hasta que no se desmonte este volumen.', // from v2.1.33 added 2.3.2018 'unmountChildren' : 'Los siguientes volúmenes montados en este volumen también se desmontaron. ¿Estás seguro de desmontarlo?', // from v2.1.33 added 5.3.2018 'selectionInfo' : 'Información de la selección', // from v2.1.33 added 7.3.2018 'hashChecker' : 'Algoritmos para mostrar el hash de archivos', // from v2.1.33 added 10.3.2018 'infoItems' : 'Elementos de información (Panel de información de selección)', // from v2.1.38 added 28.3.2018 'pressAgainToExit': 'Presiona de nuevo para salir.', // from v2.1.38 added 1.4.2018 'toolbar' : 'Barra de herramienta', // from v2.1.38 added 4.4.2018 'workspace' : 'Espacio de trabajo', // from v2.1.38 added 4.4.2018 'dialog' : 'Diálogo', // from v2.1.38 added 4.4.2018 'all' : 'Todo', // from v2.1.38 added 4.4.2018 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Desconocido', 'kindRoot' : 'Raíces del volumen', // from v2.1.16 added 16.10.2016 'kindFolder' : 'Carpeta', 'kindSelects' : 'Selecciones', // from v2.1.29 added 29.8.2017 'kindAlias' : 'Alias', 'kindAliasBroken' : 'Alias roto', // applications 'kindApp' : 'Aplicación', 'kindPostscript' : 'Documento Postscript', 'kindMsOffice' : 'Documento Microsoft Office', 'kindMsWord' : 'Documento Microsoft Word', 'kindMsExcel' : 'Documento Microsoft Excel', 'kindMsPP' : 'Presentación Microsoft Powerpoint', 'kindOO' : 'Documento Open Office', 'kindAppFlash' : 'Aplicación Flash', 'kindPDF' : 'Documento PDF', 'kindTorrent' : 'Archivo Bittorrent', 'kind7z' : 'Archivo 7z', 'kindTAR' : 'Archivo TAR', 'kindGZIP' : 'Archivo GZIP', 'kindBZIP' : 'Archivo BZIP', 'kindXZ' : 'Archivo XZ', 'kindZIP' : 'Archivo ZIP', 'kindRAR' : 'Archivo RAR', 'kindJAR' : 'Archivo Java JAR', 'kindTTF' : 'Fuente True Type', 'kindOTF' : 'Fuente Open Type', 'kindRPM' : 'Paquete RPM', // texts 'kindText' : 'Documento de texto', 'kindTextPlain' : 'Texto plano', 'kindPHP' : 'Código PHP', 'kindCSS' : 'Hoja de estilos CSS', 'kindHTML' : 'Documento HTML', 'kindJS' : 'Código Javascript', 'kindRTF' : 'Documento RTF', 'kindC' : 'Código C', 'kindCHeader' : 'Código C cabeceras', 'kindCPP' : 'Código C++', 'kindCPPHeader' : 'Código C++ cabeceras', 'kindShell' : 'Script de terminal de Unix', 'kindPython' : 'Código Python', 'kindJava' : 'Código Java', 'kindRuby' : 'Código Ruby', 'kindPerl' : 'Código Perl', 'kindSQL' : 'Código QL', 'kindXML' : 'Documento XML', 'kindAWK' : 'Código AWK', 'kindCSV' : 'Documento CSV (valores separados por comas)', 'kindDOCBOOK' : 'Documento Docbook XML', 'kindMarkdown' : 'Texto Markdown', // added 20.7.2015 // images 'kindImage' : 'Imagen', 'kindBMP' : 'Imagen BMP', 'kindJPEG' : 'Imagen JPEG', 'kindGIF' : 'Imagen GIF', 'kindPNG' : 'Imagen PNG', 'kindTIFF' : 'Imagen TIFF', 'kindTGA' : 'Imagen TGA', 'kindPSD' : 'Imagen Adobe Photoshop', 'kindXBITMAP' : 'Imagen X bitmap', 'kindPXM' : 'Imagen Pixelmator', // media 'kindAudio' : 'Archivo de audio', 'kindAudioMPEG' : 'Audio MPEG', 'kindAudioMPEG4' : 'Audio MPEG-4', 'kindAudioMIDI' : 'Audio MIDI', 'kindAudioOGG' : 'Audio Ogg Vorbis', 'kindAudioWAV' : 'Audio WAV', 'AudioPlaylist' : 'Lista de reproducción MP3', 'kindVideo' : 'Archivo de vídeo', 'kindVideoDV' : 'Película DV', 'kindVideoMPEG' : 'Película MPEG', 'kindVideoMPEG4' : 'Película MPEG-4', 'kindVideoAVI' : 'Película AVI', 'kindVideoMOV' : 'Película Quick Time', 'kindVideoWM' : 'Película Windows Media', 'kindVideoFlash' : 'Película Flash', 'kindVideoMKV' : 'Película Matroska MKV', 'kindVideoOGG' : 'Película Ogg' } }; })); plugins/file-manager-advanced/application/library/js/i18n/elfinder.fa.js000064400000122465147176754550022233 0ustar00/** * فارسی translation * @author Keyhan Mohammadpour * @author mhs prog * @version 2021-04-14 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.fa = { translator : 'Keyhan Mohammadpour <keyhan_universityworks@yahoo.com>, Farhad Zare <farhad@persianoc.com>', language : 'فارسی', direction : 'rtl', dateFormat : 'd.m.Y H:i', // will show like: 14.04.2021 19:24 fancyDateFormat : '$1 H:i', // will show like: امروز 19:24 nonameDateFormat : 'ymd-His', // noname upload will show like: 210414-192445 messages : { /********************************** errors **********************************/ 'error' : 'خطا', 'errUnknown' : 'خطای ناشناخته.', 'errUnknownCmd' : 'دستور ناشناخته.', 'errJqui' : 'تنظیمات کتابخانه JQuery UI شما به درستی انجام نشده است. این کتابخانه بایستی شامل Resizable ،Draggable و Droppable باشد.', 'errNode' : 'elfinder به درستی ایجاد نشده است.', 'errURL' : 'تنظیمات elfinder شما به درستی انجام نشده است. تنظیم Url را اصلاح نمایید.', 'errAccess' : 'محدودیت سطح دسترسی', 'errConnect' : 'امکان اتصال به مدیریت وجود ندارد.', 'errAbort' : 'ارتباط قطع شده است.', 'errTimeout' : 'مهلت زمانی ارتباط شما به اتمام رسیده است.', 'errNotFound' : 'تنظیم مدیریت یافت نشد.', 'errResponse' : 'پاسخ دریافتی از مدیریت صحیح نمی باشد.', 'errConf' : 'تنطیمات مدیریت به درستی انجام نشده است.', 'errJSON' : 'ماژول PHP JSON نصب نیست.', 'errNoVolumes' : 'درایوهای قابل خواندن یافت نشدند.', 'errCmdParams' : 'پارامترهای دستور "$1" به صورت صحیح ارسال نشده است.', 'errDataNotJSON' : 'داده ها در قالب JSON نمی باشند.', 'errDataEmpty' : 'داده دریافتی خالی است.', 'errCmdReq' : 'درخواست از سمت مدیریت نیازمند نام دستور می باشد.', 'errOpen' : 'امکان باز نمودن "$1" وجود ندارد.', 'errNotFolder' : 'آیتم موردنظر پوشه نیست.', 'errNotFile' : 'آیتم موردنظر فایل نیست.', 'errRead' : 'امکان خواندن "$1" وجود ندارد.', 'errWrite' : 'امکان نوشتن در درون "$1" وجود ندارد.', 'errPerm' : 'شما مجاز به انجام این عمل نمی باشید.', 'errLocked' : '"$1" قفل گردیده است و شما قادر به تغییر نام ، حذف و یا جابجایی آن نمی باشید.', 'errExists' : 'فایلی با نام "$1" هم اکنون وجود دارد.', 'errInvName' : 'نام انتخابی شما صحیح نمی باشد.', 'errInvDirname' : 'نام پوشه غیرمعتبر می باشد.', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : 'پوشه مورد نظر یافت نشد.', 'errFileNotFound' : 'فایل مورد نظر یافت نشد.', 'errTrgFolderNotFound' : 'پوشه مقصد با نام "$1" یافت نشد.', 'errPopup' : 'مرورگر شما ار باز شدن پنجره popup جلوگیری می کند، لطفا تنظیمات مربوطه را در مرورگر خود فعال نمایید.', 'errMkdir' : 'امکان ایجاد پوشه ای با نام "$1" وجود ندارد.', 'errMkfile' : 'امکان ایجاد فایلی با نام "$1" وجود ندارد.', 'errRename' : 'امکان تغییر نام فایل "$1" وجود ندارد.', 'errCopyFrom' : 'کپی نمودن از درایو با نام "$1" ممکن نمی باشد.', 'errCopyTo' : 'کپی نمودن به درایو با نام "$1" ممکن نمی باشد.', 'errMkOutLink' : 'امکان ایجاد لینک به خارج از مسیر ریشه وجود ندارد.', // from v2.1 added 03.10.2015 'errUpload' : 'خطای آپلود', // old name - errUploadCommon 'errUploadFile' : 'امکان آپلود "$1" وجود ندارد.', // old name - errUpload 'errUploadNoFiles' : 'فایلی برای آپلود یافت نشد.', 'errUploadTotalSize' : 'حجم داده بیش از حد مجاز می باشد.', // old name - errMaxSize 'errUploadFileSize' : 'حجم فایل بیش از حد مجاز می باشد.', // old name - errFileMaxSize 'errUploadMime' : 'نوع فایل انتخابی مجاز نمی باشد.', 'errUploadTransfer' : 'در انتقال "$1" خطایی رخ داده است.', 'errUploadTemp' : 'امکان ایجاد فایل موقت جهت آپلود وجود ندارد.', // from v2.1 added 26.09.2015 'errNotReplace' : 'آیتم "$1" از قبل وجود دارد و امکان جایگزینی آن با آیتمی از نوع دیگر وجود ندارد.', // new 'errReplace' : 'امکان جایگزینی "$1" وجود ندارد.', 'errSave' : 'امکان ذخیره کردن "$1" وجود ندارد.', 'errCopy' : 'امکان کپی کردن "$1" وجود ندارد.', 'errMove' : 'امکان جابجایی "$1" وجود ندارد.', 'errCopyInItself' : 'امکان کپی کردن "$1" در درون خودش وجود ندارد.', 'errRm' : 'امکان حذف کردن "$1" وجود ندارد.', 'errTrash' : 'امکان حذف وجود ندارد.', // from v2.1.24 added 30.4.2017 'errRmSrc' : 'امکان حذف فایل(ها) از مبدا وجود ندارد.', 'errExtract' : 'امکان استخراج فایل فشرده "$1" وجود ندارد.', 'errArchive' : 'امکان ایجاد فایل فشرده وجود ندارد.', 'errArcType' : 'نوع ناشناخته برای فایل فشرده.', 'errNoArchive' : 'این فایل فشرده نیست یا اینکه این نوع فایل فشرده پشتیبانی نمی شود.', 'errCmdNoSupport' : 'مدیریت از این دستور پشتیبانی نمی کند.', 'errReplByChild' : 'امکان جایگزینی پوشه "$1" با یک آیتم از درون خودش وجود ندارد.', 'errArcSymlinks' : 'به دلایل مسائل امنیتی امکان باز کردن فایل فشرده دارای symlinks وجود ندارد.', // edited 24.06.2012 'errArcMaxSize' : 'فایل های فشرده به حداکثر اندازه تعیین شده رسیده اند.', 'errResize' : 'امکان تغییر اندازه "$1" وجود ندارد.', 'errResizeDegree' : 'درجه چرخش نامعتبر است.', // added 7.3.2013 'errResizeRotate' : 'امکان چرخش تصویر وجود ندارد.', // added 7.3.2013 'errResizeSize' : 'اندازه تصویر نامعتبر است.', // added 7.3.2013 'errResizeNoChange' : 'تغییری در اندازه تصویر ایجاد نشده است.', // added 7.3.2013 'errUsupportType' : 'این نوع فایل پشتیبانی نمی شود.', 'errNotUTF8Content' : 'فایل "$1" به صورت UTF-8 ذخیره نشده و امکان ویرایش آن وجود ندارد.', // added 9.11.2011 'errNetMount' : 'امکان اتصال "$1" وجود ندارد.', // added 17.04.2012 'errNetMountNoDriver' : 'این پروتکل پشتیبانی نمی شود.', // added 17.04.2012 'errNetMountFailed' : 'اتصال ناموفق بود.', // added 17.04.2012 'errNetMountHostReq' : 'میزبان موردنیاز است.', // added 18.04.2012 'errSessionExpires' : 'اعتبار جلسه کاری شما بدلیل عدم فعالیت برای مدت زمان طولانی به اتمام رسیده است.', 'errCreatingTempDir' : 'امکان ایجاد دایرکتوری موقت وجود ندارد: "$1"', 'errFtpDownloadFile' : 'امکان دریافت فایل از FTP وجود ندارد: "$1"', 'errFtpUploadFile' : 'امکان آپلود فایل به FTP وجود ندارد: "$1"', 'errFtpMkdir' : 'امکان ایجاد دایرکتوری برروی FTP وجود ندارد: "$1"', 'errArchiveExec' : 'خطا در زمان فشرده سازی این فایل‌ها: "$1"', 'errExtractExec' : 'خطا در زمان بازگشایی این فایل‌ها: "$1"', 'errNetUnMount' : 'امکان قطع اتصال وجود ندارد.', // from v2.1 added 30.04.2012 'errConvUTF8' : 'امکان تبدیل به UTF-8 وجود ندارد', // from v2.1 added 08.04.2014 'errFolderUpload' : 'جهت آپلود کردن پوشه، از یک مرورگر مدرن استفاده نمایید.', // from v2.1 added 26.6.2015 'errSearchTimeout' : 'در هنگان جستجو برای "$1" خطایی رخ داده است. نتیجه جستجو به صورت ناتمام می باشد.', // from v2.1 added 12.1.2016 'errReauthRequire' : 'اعتبارسنجی مجدد موردنیاز است.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'حداکثر تعداد انتخاب قابل قبول $1 می‌باشد.', // from v2.1.17 added 17.10.2016 'errRestore' : 'امکان بازیابی وجود ندارد. مقصد بازیابی نامشخص است.', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'ویرایشگری برای این نوع فایل یافت نشد.', // from v2.1.25 added 23.5.2017 'errServerError' : 'خطایی در سمت سرور به وجود آمده است.', // from v2.1.25 added 16.6.2017 'errEmpty' : 'امکان خالی کردن پوشه "$1" وجود ندارد.', // from v2.1.25 added 22.6.2017 'moreErrors' : '$1 خطای دیگر نیز وجود دارد.', // from v2.1.44 added 9.12.2018 /******************************* commands names ********************************/ 'cmdarchive' : 'ایجاد فایل فشرده', 'cmdback' : 'بازگشت به عقب', 'cmdcopy' : 'کپی', 'cmdcut' : 'بریدن', 'cmddownload' : 'دانلود', 'cmdduplicate' : 'تکثیر فایل', 'cmdedit' : 'ویرایش محتوای فایل', 'cmdextract' : 'بازگشایی فایل فشرده', 'cmdforward' : 'حرکت به جلو', 'cmdgetfile' : 'انتخاب فایل‌ها', 'cmdhelp' : 'درباره این نرم‌افزار', 'cmdhome' : 'ریشه', 'cmdinfo' : 'مشاهده مشخصات', 'cmdmkdir' : 'پوشه جدید', 'cmdmkdirin' : 'انتقال به پوشه جدید', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'فایل جدید', 'cmdopen' : 'باز کردن', 'cmdpaste' : 'چسباندن', 'cmdquicklook' : 'پیش نمایش', 'cmdreload' : 'بارگذاری مجدد', 'cmdrename' : 'تغییر نام', 'cmdrm' : 'حذف', 'cmdtrash' : 'انتقال به سطل بازیافت', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'بازیابی', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'جستجوی فایل', 'cmdup' : 'رفتن به سطح بالاتر', 'cmdupload' : 'آپلود فایل', 'cmdview' : 'مشاهده', 'cmdresize' : 'تغییر اندازه و چرخش', 'cmdsort' : 'مرتب سازی', 'cmdnetmount' : 'اتصال درایو شبکه', // added 18.04.2012 'cmdnetunmount': 'قطع اتصال', // from v2.1 added 30.04.2012 'cmdplaces' : 'به مسیرهای', // added 28.12.2014 'cmdchmod' : 'تغییر حالت', // from v2.1 added 20.6.2015 'cmdopendir' : 'بازکردن یک پوشه', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'بازنشانی عرض ستون', // from v2.1.13 added 12.06.2016 'cmdfullscreen': 'حالت نمایش تمام صفحه', // from v2.1.15 added 03.08.2016 'cmdmove' : 'انتقال', // from v2.1.15 added 21.08.2016 'cmdempty' : 'خالی کردن پوشه', // from v2.1.25 added 22.06.2017 'cmdundo' : 'خنثی‌سازی', // from v2.1.27 added 31.07.2017 'cmdredo' : 'انجام مجدد', // from v2.1.27 added 31.07.2017 'cmdpreference': 'تنظیمات', // from v2.1.27 added 03.08.2017 'cmdselectall' : 'انتخاب همه موارد', // from v2.1.28 added 15.08.2017 'cmdselectnone': 'لغو انتخاب', // from v2.1.28 added 15.08.2017 'cmdselectinvert': 'انتخاب معکوس', // from v2.1.28 added 15.08.2017 'cmdopennew' : 'باز کردن در پنجره جدید', // from v2.1.38 added 3.4.2018 'cmdhide' : 'مخفی (پیشنهادی)', // from v2.1.41 added 24.7.2018 /*********************************** buttons ***********************************/ 'btnClose' : 'بستن', 'btnSave' : 'ذخیره', 'btnRm' : 'حذف', 'btnApply' : 'اعمال', 'btnCancel' : 'انصراف', 'btnNo' : 'خیر', 'btnYes' : 'بلی', 'btnMount' : 'اتصال', // added 18.04.2012 'btnApprove': 'رفتن به $1 و تایید', // from v2.1 added 26.04.2012 'btnUnmount': 'قطع اتصال', // from v2.1 added 30.04.2012 'btnConv' : 'تبدیل', // from v2.1 added 08.04.2014 'btnCwd' : 'اینجا', // from v2.1 added 22.5.2015 'btnVolume' : 'درایو', // from v2.1 added 22.5.2015 'btnAll' : 'همه', // from v2.1 added 22.5.2015 'btnMime' : 'نوع فایل', // from v2.1 added 22.5.2015 'btnFileName':'نام فایل', // from v2.1 added 22.5.2015 'btnSaveClose': 'ذخیره و بستن', // from v2.1 added 12.6.2015 'btnBackup' : 'پشتیبان‌گیری', // fromv2.1 added 28.11.2015 'btnRename' : 'تغییر نام', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'تغییر نام(همه)', // from v2.1.24 added 6.4.2017 'btnPrevious' : 'قبلی ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : 'بعدی ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : 'ذخیره با نام جدید', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'در حال باز کردن پوشه', 'ntffile' : 'در حال باز کردن فایل', 'ntfreload' : 'بارگذاری مجدد محتویات پوشه', 'ntfmkdir' : 'در حال ایجاد پوشه', 'ntfmkfile' : 'در حال ایجاد فایل', 'ntfrm' : 'در حال حذف موارد موردنظر', 'ntfcopy' : 'در حال کپی موارد موردنظر', 'ntfmove' : 'در حال انتقال موارد موردنظر', 'ntfprepare' : 'بررسی موارد موجود', 'ntfrename' : 'در حال تغییر نام فایل', 'ntfupload' : 'در حال آپلود فایل', 'ntfdownload' : 'در حال دانلود فایل', 'ntfsave' : 'در حال ذخیره فایل', 'ntfarchive' : 'در حال ایجاد فایل فشرده', 'ntfextract' : 'در حال استخراج فایل ها از حالت فشرده', 'ntfsearch' : 'در حال جستجوی فایل', 'ntfresize' : 'در حال تغییر اندازه تصاویر', 'ntfsmth' : 'درحال انجام عملیات ....', 'ntfloadimg' : 'در حال بارگذاری تصویر', 'ntfnetmount' : 'در حال اتصال درایو شبکه', // added 18.04.2012 'ntfnetunmount': 'قطع اتصال درایو شبکه', // from v2.1 added 30.04.2012 'ntfdim' : 'در حال محاسبه ابعاد تصویر', // added 20.05.2013 'ntfreaddir' : 'در حال دریافت مشخصات پوشه', // from v2.1 added 01.07.2013 'ntfurl' : 'در حال دریافت URL', // from v2.1 added 11.03.2014 'ntfchmod' : 'در حال تغییر نوع فایل', // from v2.1 added 20.6.2015 'ntfpreupload': 'در حال تایید نام فایل جهت آپلود', // from v2.1 added 31.11.2015 'ntfzipdl' : 'در حال ایجاد فایل جهت دانلود', // from v2.1.7 added 23.1.2016 'ntfparents' : 'در حال دریافت اطلاعات مسیر', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'در حال پردازش فایل آپلود شده', // from v2.1.17 added 2.11.2016 'ntftrash' : 'در حال انتقال به سطل بازیافت', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'در حال بازیابی از سطل بازیافت', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'بررسی پوشه مقصد', // from v2.1.24 added 3.5.2017 'ntfundo' : 'در حال خنثی‌سازی آخرین عملیات', // from v2.1.27 added 31.07.2017 'ntfredo' : 'در حال انجام مجدد آخرین عملیات', // from v2.1.27 added 31.07.2017 'ntfchkcontent' : 'در حال بررسی مطالب', // from v2.1.41 added 3.8.2018 /*********************************** volumes *********************************/ 'volume_Trash' : 'سطل بازیافت', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : 'نامعلوم', 'Today' : 'امروز', 'Yesterday' : 'دیروز', 'msJan' : 'ژانویه', 'msFeb' : 'فوریه', 'msMar' : 'مارس', 'msApr' : 'آوریل', 'msMay' : 'می', 'msJun' : 'جون', 'msJul' : 'جولای', 'msAug' : 'آگوست', 'msSep' : 'سپتامبر', 'msOct' : 'اکتبر', 'msNov' : 'نوامبر', 'msDec' : 'دسامبر', 'January' : 'ژانویه', 'February' : 'فوریه', 'March' : 'مارس', 'April' : 'آوریل', 'May' : 'می', 'June' : 'جون', 'July' : 'جولای', 'August' : 'آگوست', 'September' : 'سپتامبر', 'October' : 'اکتبر', 'November' : 'نوامبر', 'December' : 'دسامبر', 'Sunday' : 'یک‌شنبه', 'Monday' : 'دوشنبه', 'Tuesday' : 'سه‌شنبه', 'Wednesday' : 'چهارشنبه', 'Thursday' : 'پنج‌شنبه', 'Friday' : 'جمعه', 'Saturday' : 'شنبه', 'Sun' : 'یک‌شنبه', 'Mon' : 'دوشنبه', 'Tue' : 'سه‌شنبه', 'Wed' : 'چهارشنبه', 'Thu' : 'پنج‌شنبه', 'Fri' : 'جمعه', 'Sat' : 'شنبه', /******************************** sort variants ********************************/ 'sortname' : 'بر اساس نام', 'sortkind' : 'بر اساس نوع', 'sortsize' : 'بر اساس اندازه', 'sortdate' : 'بر اساس تاریخ', 'sortFoldersFirst' : 'پوشه‌ها در ابتدای لیست', 'sortperm' : 'براساس سطح دسترسی', // from v2.1.13 added 13.06.2016 'sortmode' : 'براساس مد دسترسی', // from v2.1.13 added 13.06.2016 'sortowner' : 'براساس مالک', // from v2.1.13 added 13.06.2016 'sortgroup' : 'براساس گروه', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'همچنین نمای درختی', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : 'فایل .txt جدید', // added 10.11.2015 'untitled folder' : 'پوشه جدید', // added 10.11.2015 'Archive' : 'بایگانی جدید', // from v2.1 added 10.11.2015 'untitled file' : '$1 فایل جدید', // from v2.1.41 added 6.8.2018 'extentionfile' : '$1: فایل', // from v2.1.41 added 6.8.2018 'extentiontype' : '$1: $2', // from v2.1.43 added 17.10.2018 /********************************** messages **********************************/ 'confirmReq' : 'تایید نهایی عملیات ضروری است.', 'confirmRm' : 'آیا مطمئنید که موارد انتخابی حذف شوند؟ موارد حدف شده قابل بازیابی نخواهند بود!', 'confirmRepl' : 'مالیلد جایگزینی فایل قدیمی با فایل جدید انجام شود؟ (برای جایگزینی پوشه محتوای قدیمی با محتوای پوشه جدید ادغام خواهد شد. برای تهیه پشتیبانی و سپس جایگزینی گزینه پشتیبان‌گیری را انتخاب نمایید)', 'confirmRest' : 'آیا مایلید موارد موجود با موارد بازیابی شده از سطل بازیافت جایگزین شود؟', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'UTF-8 نیست
                تبدیل به UTF-8 انجام شود؟
                پس از ذخیره سازی محتوا به صورت UTF-8 خواهد بود.', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'encoding این فایل قابل تشخیص نیست. جهت ویرایش نیاز است که به صورت موقت به UTF-8 تبدیل شود.
                لطفا encoding فایل را انتخاب نمایید.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : 'تغییراتی اعمال شده است.
                در صورت عدم ذخیره تغییرات از بین خواهد رفت.', // from v2.1 added 15.7.2015 'confirmTrash' : 'آیا مطمئنید که این موارد به سطل بازیافت منتقل شوند؟', //from v2.1.24 added 29.4.2017 'confirmMove' : 'آیا مطمئن هستید که می خواهید موارد را به "$1" منتقل کنید؟', //from v2.1.50 added 27.7.2019 'apllyAll' : 'اعمال تغییرات به همه موارد', 'name' : 'نام', 'size' : 'اندازه', 'perms' : 'سطح دسترسی', 'modify' : 'آخرین تغییرات', 'kind' : 'نوع', 'read' : 'خواندن', 'write' : 'نوشتن', 'noaccess' : 'دسترسی وجود ندارد', 'and' : 'و', 'unknown' : 'نامعلوم', 'selectall' : 'انتخاب همه موارد', 'selectfiles' : 'انتخاب یک یا چند مورد', 'selectffile' : 'انتخاب اولین مورد', 'selectlfile' : 'انتخاب آخرین مورد', 'viewlist' : 'حالت نمایش لیست', 'viewicons' : 'نمایش با آیکون', 'viewSmall' : 'آیکون‌های کوچک', // from v2.1.39 added 22.5.2018 'viewMedium' : 'آیکون‌های متوسط', // from v2.1.39 added 22.5.2018 'viewLarge' : 'آیکون‌های بزرگ', // from v2.1.39 added 22.5.2018 'viewExtraLarge' : 'آیکون‌های خیلی بزرگ', // from v2.1.39 added 22.5.2018 'places' : 'مسیرها', 'calc' : 'محاسبه', 'path' : 'مسیر', 'aliasfor' : 'نام مستعار برای', 'locked' : 'قفل شده', 'dim' : 'ابعاد', 'files' : 'فایل‌ها', 'folders' : 'پوشه‌ها', 'items' : 'آیتم‌ها', 'yes' : 'بلی', 'no' : 'خیر', 'link' : 'لینک', 'searcresult' : 'نتایج جستجو', 'selected' : 'موارد انتخاب شده', 'about' : 'درباره', 'shortcuts' : 'میانبرها', 'help' : 'راهنمایی', 'webfm' : 'مدیر فایل تحت وب', 'ver' : 'نسخه', 'protocolver' : 'نسخه پروتکل', 'homepage' : 'صفحه اصلی پروژه', 'docs' : 'مستندات', 'github' : 'صفحه پروژه را در Github مشاهده کنید', 'twitter' : 'ما را در Twitter دنبال کنید', 'facebook' : 'به ما در facebook ملحق شوید', 'team' : 'تیم', 'chiefdev' : 'توسعه دهنده اصلی', 'developer' : 'توسعه دهنده', 'contributor' : 'مشارکت کننده', 'maintainer' : 'پشتیبان', 'translator' : 'مترجم', 'icons' : 'آیکون‌ها', 'dontforget' : 'and don\'t forget to take your towel', 'shortcutsof' : 'میانبرها غیرفعال شده‌اند.', 'dropFiles' : 'فایل ها در این بخش رها کنید.', 'or' : 'یا', 'selectForUpload' : 'انتخاب فایل جهت آپلود', 'moveFiles' : 'انتقال موارد', 'copyFiles' : 'کپی موارد', 'restoreFiles' : 'بازیابی موارد', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'حذف', 'aspectRatio' : 'نسبت تصویر', 'scale' : 'مقیاس', 'width' : 'طول', 'height' : 'ارتفاع', 'resize' : 'تغییر اندازه', 'crop' : 'بریدن', 'rotate' : 'چرخاندن', 'rotate-cw' : 'چرخاندن 90 درجه در جهت عقربه‌های ساعت', 'rotate-ccw' : 'چرخاندن 90 درجه در جهت خلاف عقربه‌های ساعت', 'degree' : '°', 'netMountDialogTitle' : 'اتصال درایو شبکه', // added 18.04.2012 'protocol' : 'پروتکل', // added 18.04.2012 'host' : 'میزبان', // added 18.04.2012 'port' : 'پورت', // added 18.04.2012 'user' : 'نام کاربری', // added 18.04.2012 'pass' : 'کلمه عبور', // added 18.04.2012 'confirmUnmount' : 'مطمئن به قطع اتصال $1 می باشد؟', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'فایل‌ها را به داخل این کادر بیندازید یا از حافظه paste کنید', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'فایل‌ها را به داخل این کادر بیندازید یا از داخل حافظه آدرس URL/تصاویر را paste کنید', // from v2.1 added 07.04.2014 'encoding' : 'نوع کد گذاری', // from v2.1 added 19.12.2014 'locale' : 'نوع Locale', // from v2.1 added 19.12.2014 'searchTarget' : 'مقصد: $1', // from v2.1 added 22.5.2015 'searchMime' : 'جستجو براساس MIME Type وارد شده', // from v2.1 added 22.5.2015 'owner' : 'مالک', // from v2.1 added 20.6.2015 'group' : 'گروه', // from v2.1 added 20.6.2015 'other' : 'سایر', // from v2.1 added 20.6.2015 'execute' : 'قابل اجرا', // from v2.1 added 20.6.2015 'perm' : 'سطح دسترسی', // from v2.1 added 20.6.2015 'mode' : 'مد دسترسی', // from v2.1 added 20.6.2015 'emptyFolder' : 'پوشه خالی است', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'پوشه خالی است، فایل‌ها را جهت افزودن کشیده و رها کنید', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'پوشه خالی است، یک اشاره طولانی برای افزودن فایل کافی است', // from v2.1.6 added 30.12.2015 'quality' : 'کیفیت', // from v2.1.6 added 5.1.2016 'autoSync' : 'همگام‌سازی خودکار', // from v2.1.6 added 10.1.2016 'moveUp' : 'حرکت به بالا', // from v2.1.6 added 18.1.2016 'getLink' : 'دریافت URL لینک', // from v2.1.7 added 9.2.2016 'selectedItems' : 'موارد انتخاب شده ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'شناسه پوشه', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'اجازه دسترسی به صورت آفلاین', // from v2.1.10 added 3.25.2016 'reAuth' : 'جهت اعتبارسنجی مجدد', // from v2.1.10 added 3.25.2016 'nowLoading' : 'در حال بازگذاری...', // from v2.1.12 added 4.26.2016 'openMulti' : 'بازکردن چندین فایل', // from v2.1.12 added 5.14.2016 'openMultiConfirm': 'شما قصد باز کردن $1 فایل را دارید. آیا مایلید همه موارد در مرورگر باز شود؟', // from v2.1.12 added 5.14.2016 'emptySearch' : 'موردی یافت نشد.', // from v2.1.12 added 5.16.2016 'editingFile' : 'در حال ویرایش یک فایل.', // from v2.1.13 added 6.3.2016 'hasSelected' : 'شما $1 مورد را انتخاب کرده‌اید.', // from v2.1.13 added 6.3.2016 'hasClipboard' : 'در حافظه $1 مورد وجود دارد.', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'جستجوی افزایش فقط از نمای فعلی.', // from v2.1.13 added 6.30.2016 'reinstate' : 'بازگرداندن', // from v2.1.15 added 3.8.2016 'complete' : 'عملیات $1 انجام شد', // from v2.1.15 added 21.8.2016 'contextmenu' : 'منو راست', // from v2.1.15 added 9.9.2016 'pageTurning' : 'چرخش صفحه', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'ریشه‌های درایو', // from v2.1.16 added 16.9.2016 'reset' : 'بازنشانی', // from v2.1.16 added 1.10.2016 'bgcolor' : 'رنگ پس زمینه', // from v2.1.16 added 1.10.2016 'colorPicker' : 'انتخابگر رنگ', // from v2.1.16 added 1.10.2016 '8pxgrid' : 'گرید 8px', // from v2.1.16 added 4.10.2016 'enabled' : 'فعال شده', // from v2.1.16 added 4.10.2016 'disabled' : 'غیرفعال شده', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'در نمای فعلی موردی یافت نشد.\\Aبا فشردن کلید Enter مسیر جستجو را تغییر دهید.', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'برای جستجوی تک حرفی در نمایش فعلی موردی یافت نشد.', // from v2.1.23 added 24.3.2017 'textLabel' : 'عنوان متنی', // from v2.1.17 added 13.10.2016 'minsLeft' : '$1 دقیقه باقیمانده', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'باز کردن مجدد با کد گذاری انتخاب شده', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'ذخیره با کد گذاری انتخاب شده', // from v2.1.19 added 2.12.2016 'selectFolder' : 'انتخاب پوشه', // from v2.1.20 added 13.12.2016 'firstLetterSearch': 'جستجوی تک حرفی', // from v2.1.23 added 24.3.2017 'presets' : 'از پیش تعیین شده', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : 'موارد زیاد است و امکان انتقال به سطل بازیافت وجود ندارد.', // from v2.1.25 added 9.6.2017 'TextArea' : 'ویرایش محتوا', // from v2.1.25 added 14.6.2017 'folderToEmpty' : 'خالی کردن پوشه "$1".', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : 'پوشه "$1" ‌ذاتا خالی است.', // from v2.1.25 added 22.6.2017 'preference' : 'تنظیمات', // from v2.1.26 added 28.6.2017 'language' : 'زبان', // from v2.1.26 added 28.6.2017 'clearBrowserData': 'بازبینی تنظیمات ذخیره شده در این مرورگر', // from v2.1.26 added 28.6.2017 'toolbarPref' : 'تنظیمات نوار ابزار', // from v2.1.27 added 2.8.2017 'charsLeft' : '... $1 کاراکتر باقیمانده.', // from v2.1.29 added 30.8.2017 'linesLeft' : '$1 خط مانده است', // from v2.1.52 added 16.1.2020 'sum' : 'مجموع', // from v2.1.29 added 28.9.2017 'roughFileSize' : 'اندازه فایل نامتعارف', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : 'انتخاب عناصر داخل دیالوگ با mouseover', // from v2.1.30 added 2.11.2017 'select' : 'انتخاب', // from v2.1.30 added 23.11.2017 'selectAction' : 'عملیات به هنگام انتخاب فایل', // from v2.1.30 added 23.11.2017 'useStoredEditor' : 'باز کردن با ویرایشگر مورداستفاده در آخرین دفعه', // from v2.1.30 added 23.11.2017 'selectinvert' : 'انتخاب معکوس', // from v2.1.30 added 25.11.2017 'renameMultiple' : 'آیا مایل به تغییر نام $1 مورد انتخاب شده همانند $2 هستید؟
                امکان بازگرداندن این تغییر پس از اعمالو جود ندارد!', // from v2.1.31 added 4.12.2017 'batchRename' : 'تغییرنام گروهی', // from v2.1.31 added 8.12.2017 'plusNumber' : '+ عدد', // from v2.1.31 added 8.12.2017 'asPrefix' : 'افزودن پیشوند', // from v2.1.31 added 8.12.2017 'asSuffix' : 'افزودن پسوند', // from v2.1.31 added 8.12.2017 'changeExtention' : 'تغییر پسوند فایل', // from v2.1.31 added 8.12.2017 'columnPref' : 'تنظیمات ستون‌ها (حالت نمایش لیست)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : 'تمامی تغییرات به صورت آنی برروی فایل فشرده اعمال خواهد شد.', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : 'تمامی تغییرات تا زمانی که اتصال این درایو قطع نشده است اعمال نخواهند شد.', // from v2.1.33 added 2.3.2018 'unmountChildren' : 'اتصال به درایوهای زیر قطع خواهد شد. آیا مطمئن به ادامه عملیات هستید؟', // from v2.1.33 added 5.3.2018 'selectionInfo' : 'مشخصات', // from v2.1.33 added 7.3.2018 'hashChecker' : 'الگوریتم های نمایش hash فایل', // from v2.1.33 added 10.3.2018 'infoItems' : 'موارد اطلاعات', // from v2.1.38 added 28.3.2018 'pressAgainToExit': 'جهت خروج مجدد فشار دهید.', // from v2.1.38 added 1.4.2018 'toolbar' : 'نوار ابزار', // from v2.1.38 added 4.4.2018 'workspace' : 'فضای کاری', // from v2.1.38 added 4.4.2018 'dialog' : 'پنجره دیالوگ', // from v2.1.38 added 4.4.2018 'all' : 'همه', // from v2.1.38 added 4.4.2018 'iconSize' : 'اندازه آیکون‌ها (نمایش به صورت آیکون)', // from v2.1.39 added 7.5.2018 'editorMaximized' : 'باز کردن پنجره ویرایشگر به صورت تمام صفحه', // from v2.1.40 added 30.6.2018 'editorConvNoApi' : 'بدلیل در دسترسی نبودن تبدیل از طریق API، لطفا برروی وب سایت تبدیل را انجام دهید.', //from v2.1.40 added 8.7.2018 'editorConvNeedUpload' : 'پس از تبدیل, شما بایستی از طریق آدرس URL یا فایل دریافت شده آپلود را انجاد دهید تا فایل تبدیل شده ذخیره گردد.', //from v2.1.40 added 8.7.2018 'convertOn' : 'تبدیل برروی سایت از $1', // from v2.1.40 added 10.7.2018 'integrations' : 'هماهنگ سازی‌ها', // from v2.1.40 added 11.7.2018 'integrationWith' : 'elFinder با سرویس های زیر هماهنگ شده است. لطفا ابتدا شرایط استفاده، مقررات حریم خصوصی و سایر موارد را مطالعه بفرمایید.', // from v2.1.40 added 11.7.2018 'showHidden' : 'نمایش موارد پنهان', // from v2.1.41 added 24.7.2018 'hideHidden' : 'موارد مخفی را پنهان کنید', // from v2.1.41 added 24.7.2018 'toggleHidden' : 'نمایش / پنهان کردن موارد پنهان', // from v2.1.41 added 24.7.2018 'makefileTypes' : 'File types to enable with "New file"', // from v2.1.41 added 7.8.2018 'typeOfTextfile' : 'نوع فایل نوشتاری', // from v2.1.41 added 7.8.2018 'add' : 'اضافه کردن', // from v2.1.41 added 7.8.2018 'theme' : 'Theme', // from v2.1.43 added 19.10.2018 'default' : 'پیش فرض', // from v2.1.43 added 19.10.2018 'description' : 'توضیحات', // from v2.1.43 added 19.10.2018 'website' : 'وب سایت', // from v2.1.43 added 19.10.2018 'author' : 'نویستده', // from v2.1.43 added 19.10.2018 'email' : 'ایمیل', // from v2.1.43 added 19.10.2018 'license' : 'لایسنس', // from v2.1.43 added 19.10.2018 'exportToSave' : 'این مورد ذخیره نمی شود برای جلوگیری از دست دادن ویرایش ها ، آنها را به رایانه خود منتقل کنید.', // from v2.1.44 added 1.12.2018 'dblclickToSelect': 'برای انتخاب پرونده ، دوبار کلیک کنید.', // from v2.1.47 added 22.1.2019 'useFullscreen' : 'از حالت تمام صفحه استفاده کنید', // from v2.1.47 added 19.2.2019 /********************************** mimetypes **********************************/ 'kindUnknown' : 'نامعلوم', 'kindRoot' : 'ریشه درایو', // from v2.1.16 added 16.10.2016 'kindFolder' : 'پوشه', 'kindSelects' : 'انتخاب شده‌ها', // from v2.1.29 added 29.8.2017 'kindAlias' : 'اسم مستعار', 'kindAliasBroken' : 'اسم مستعار ناقص', // applications 'kindApp' : 'برنامه', 'kindPostscript' : 'سند Postscript', 'kindMsOffice' : 'سند Microsoft Office', 'kindMsWord' : 'سند Microsoft Word', 'kindMsExcel' : 'سند Microsoft Excel', 'kindMsPP' : 'فایل ارایه Microsoft Powerpoint', 'kindOO' : 'سند Open Office', 'kindAppFlash' : 'برنامه فلش', 'kindPDF' : 'سند قابل حمل (PDF)', 'kindTorrent' : 'فایل تورنت', 'kind7z' : 'فایل فشرده 7z', 'kindTAR' : 'فایل فشرده TAR', 'kindGZIP' : 'فایل فشرده GZIP', 'kindBZIP' : 'فایل فشرده BZIP', 'kindXZ' : 'فایل فشرده XZ', 'kindZIP' : 'فایل فشرده ZIP', 'kindRAR' : 'فایل فشرده RAR', 'kindJAR' : 'فایل JAR مربوط به جاوا', 'kindTTF' : 'فونت True Type', 'kindOTF' : 'فونت Open Type', 'kindRPM' : 'بسته RPM', // texts 'kindText' : 'سند متنی', 'kindTextPlain' : 'سند متنی ساده', 'kindPHP' : 'سورس کد PHP', 'kindCSS' : 'فایل style sheet', 'kindHTML' : 'سند HTML', 'kindJS' : 'سورس کد Javascript', 'kindRTF' : 'سند متنی غنی', 'kindC' : 'سورس کد C', 'kindCHeader' : 'سورس کد C header', 'kindCPP' : 'سورس کد C++', 'kindCPPHeader' : 'سورس کد C++ header', 'kindShell' : 'اسکریپت شل یونیکس', 'kindPython' : 'سورس کد Python', 'kindJava' : 'سورس کد Java', 'kindRuby' : 'سورس کد Ruby', 'kindPerl' : 'اسکریپت Perl', 'kindSQL' : 'سورس کد SQL', 'kindXML' : 'سند XML', 'kindAWK' : 'سورس کد AWK', 'kindCSV' : 'مقادیر جداشده با کامل', 'kindDOCBOOK' : 'سند Docbook XML', 'kindMarkdown' : 'سند متنی Markdown', // added 20.7.2015 // images 'kindImage' : 'تصویر', 'kindBMP' : 'تصویر BMP', 'kindJPEG' : 'تصویر JPEG', 'kindGIF' : 'تصویر GIF', 'kindPNG' : 'تصویر PNG', 'kindTIFF' : 'تصویر TIFF', 'kindTGA' : 'تصویر TGA', 'kindPSD' : 'تصویر Adobe Photoshop', 'kindXBITMAP' : 'تصویر X bitmap', 'kindPXM' : 'تصویر Pixelmator', // media 'kindAudio' : 'فایل صوتی', 'kindAudioMPEG' : 'فایل صوتی MPEG', 'kindAudioMPEG4' : 'فایل صوتی MPEG-4', 'kindAudioMIDI' : 'فایل صوتی MIDI', 'kindAudioOGG' : 'فایل صوتی Ogg Vorbis', 'kindAudioWAV' : 'فایل صوتی WAV', 'AudioPlaylist' : 'لیست پخش MP3', 'kindVideo' : 'فایل ویدیویی', 'kindVideoDV' : 'فایل ویدیویی DV', 'kindVideoMPEG' : 'فایل ویدیویی MPEG', 'kindVideoMPEG4' : 'فایل ویدیویی MPEG-4', 'kindVideoAVI' : 'فایل ویدیویی AVI', 'kindVideoMOV' : 'فایل ویدیویی Quick Time', 'kindVideoWM' : 'فایل ویدیویی Windows Media', 'kindVideoFlash' : 'فایل ویدیویی Flash', 'kindVideoMKV' : 'فایل ویدیویی Matroska', 'kindVideoOGG' : 'فایل ویدیویی Ogg' } }; })); plugins/file-manager-advanced/application/library/js/i18n/elfinder.fallback.js000064400000000353147176754550023373 0ustar00(function(factory) { if (typeof define === 'function' && define.amd) { define(factory); } else if (typeof exports !== 'undefined') { module.exports = factory(); } else { factory(); } }(this, function() { return void 0; })); plugins/file-manager-advanced/application/library/js/i18n/elfinder.fo.js000064400000046357147176754550022256 0ustar00/** * Faroese translation * @author Marius Hammer * @version 2015-12-03 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.fo = { translator : 'Marius Hammer <marius@vrg.fo>', language : 'Faroese', direction : 'ltr', dateFormat : 'd.m.Y H:i', // Mar 13, 2012 05:27 PM fancyDateFormat : '$1 H:i', // will produce smth like: Today 12:25 PM messages : { /********************************** errors **********************************/ 'error' : 'Villa íkomin', 'errUnknown' : 'Ókend villa.', 'errUnknownCmd' : 'Ókend boð.', 'errJqui' : 'Ógildig jQuery UI konfiguratión. Vælbærar, sum kunnu hálast runt og kunnu sleppast skulu takast við.', 'errNode' : 'elFinder krevur DOM Element stovna.', 'errURL' : 'Ugyldig elFinder konfiguration! URL stilling er ikki ásett.', 'errAccess' : 'Atgongd nokta.', 'errConnect' : 'Far ikki samband við backend.', 'errAbort' : 'Sambandi avbrotið.', 'errTimeout' : 'Sambandi broti av.', 'errNotFound' : 'Backend ikki funnið.', 'errResponse' : 'Ógildugt backend svar.', 'errConf' : 'Ógildugt backend konfiguratión.', 'errJSON' : 'PHP JSON modulið er ikki innstallera.', 'errNoVolumes' : 'Lesiligar mappur er ikki atkomulig.', 'errCmdParams' : 'Ógildigar stillingar fyri kommando "$1".', 'errDataNotJSON' : 'Dáta er ikki JSON.', 'errDataEmpty' : 'Dáta er tømt.', 'errCmdReq' : 'Backend krevur eitt kommando navn.', 'errOpen' : 'Kundi ikki opna "$1".', 'errNotFolder' : 'Luturin er ikki ein mappa.', 'errNotFile' : 'Luturin er ikki ein fíla.', 'errRead' : 'Kundi ikki lesa til "$1".', 'errWrite' : 'Kundi ikki skriva til "$1".', 'errPerm' : 'Atgongd nokta.', 'errLocked' : '"$1" er løst og kann ikki umdoybast, flytast ella strikast.', 'errExists' : 'Tað finst longu ein fíla við navn "$1".', 'errInvName' : 'Ógildugt fíla navn.', 'errFolderNotFound' : 'Mappa ikki funnin.', 'errFileNotFound' : 'Fíla ikki funnin.', 'errTrgFolderNotFound' : 'Mappan "$1" bleiv ikke funnin.', 'errPopup' : 'Kagin forðaði í at opna eitt popup-vindeyga. Fyri at opna fíluna, aktivera popup-vindeygu í tínum kaga stillingum.', 'errMkdir' : '\'Kundi ikki stovna mappu "$1".', 'errMkfile' : 'Kundi ikki stovna mappu "$1".', 'errRename' : 'Kundi ikki umdoyba "$1".', 'errCopyFrom' : 'Kopiering av fílum frá mappuni "$1" er ikke loyvt.', 'errCopyTo' : 'Kopiering av fílum til mappuna "$1" er ikke loyvt.', 'errMkOutLink' : 'Ikki ført fyri at stovna leinkju til uttanfyri \'volume\' rót.', // from v2.1 added 03.10.2015 'errUpload' : 'Innlegginar feilur.', // old name - errUploadCommon 'errUploadFile' : 'Kundi ikki leggja "$1" inn.', // old name - errUpload 'errUploadNoFiles' : 'Ongar fílar funnir at leggja inn.', 'errUploadTotalSize' : 'Dátain er størri enn mest loyvda støddin.', // old name - errMaxSize 'errUploadFileSize' : 'Fíla er størri enn mest loyvda støddin.', // old name - errFileMaxSize 'errUploadMime' : 'Fílu slag ikki góðkent.', 'errUploadTransfer' : '"$1" innleggingar feilur.', 'errUploadTemp' : 'Ikki ført fyri at gera fyribils fílu fyri innlegging.', // from v2.1 added 26.09.2015 'errNotReplace' : 'Lutur "$1" finst longu á hesum stað og can ikki skiftast út av lutið av øðrum slag.', // new 'errReplace' : 'Ikki ført fyri at erstattae "$1".', 'errSave' : 'Kundi ikki goyma "$1".', 'errCopy' : 'Kundi ikki kopiera "$1".', 'errMove' : 'Kundi ikki flyta "$1".', 'errCopyInItself' : 'Kundi ikki kopiera "$1" inn í seg sjálva.', 'errRm' : 'Kundi ikki strika "$1".', 'errRmSrc' : 'Ikki ført fyri at strika keldu fíla(r).', 'errExtract' : 'Kundi ikki útpakka fílar frá "$1".', 'errArchive' : 'Kundi ikki stovna arkiv.', 'errArcType' : 'Arkiv slagið er ikki stuðla.', 'errNoArchive' : 'Fílan er ikki eitt arkiv ella er ikki eitt stuðla arkiva slag.', 'errCmdNoSupport' : 'Backend stuðlar ikki hesi boð.', 'errReplByChild' : 'appan "$1" kann ikki erstattast av einari vøru, hon inniheldur.', 'errArcSymlinks' : 'Av trygdarávum grundum, noktaði skipanin at pakka út arkivir ið innihalda symlinks ella fílur við nøvn ið ikki eru loyvd.', // edited 24.06.2012 'errArcMaxSize' : 'Arkiv fílar fylla meir enn mest loyvda støddin.', 'errResize' : 'Kundi ikki broyta støddina á "$1".', 'errResizeDegree' : 'Ógildugt roterings stig.', // added 7.3.2013 'errResizeRotate' : 'Ikki ført fyri at rotera mynd.', // added 7.3.2013 'errResizeSize' : 'Ógildug myndastødd.', // added 7.3.2013 'errResizeNoChange' : 'Mynda stødd ikki broytt.', // added 7.3.2013 'errUsupportType' : 'Ikki stuðla fíla slag.', 'errNotUTF8Content' : 'Fílan "$1" er ikki í UTF-8 og kann ikki vera rættað.', // added 9.11.2011 'errNetMount' : 'Kundi ikki "mounta" "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'Ikki stuðla protokol.', // added 17.04.2012 'errNetMountFailed' : 'Mount miseydnaðist.', // added 17.04.2012 'errNetMountHostReq' : 'Host kravt.', // added 18.04.2012 'errSessionExpires' : 'Tín seta er útgingin vegna óvirkniy.', 'errCreatingTempDir' : 'Ikki ført fyri at stovna fyribils fíluskrá: "$1"', 'errFtpDownloadFile' : 'Ikki ført fyri at taka fílu niður frá FTP: "$1"', 'errFtpUploadFile' : 'Ikki ført fyri at leggja fílu til FTP: "$1"', 'errFtpMkdir' : 'Ikki ført fyri at stovna fjar-fílaskrá á FTP: "$1"', 'errArchiveExec' : 'Villa íkomin undir arkiveran af fílar: "$1"', 'errExtractExec' : 'Villa íkomin undir útpakking af fílum: "$1"', 'errNetUnMount' : 'Unable to unmount', // from v2.1 added 30.04.2012 'errConvUTF8' : 'Kann ikki broytast til UTF-8', // from v2.1 added 08.04.2014 'errFolderUpload' : 'Royn Google Chrome, um tú ynskir at leggja mappu innn.', // from v2.1 added 26.6.2015 /******************************* commands names ********************************/ 'cmdarchive' : 'Stovna arkiv', 'cmdback' : 'Aftur\'', 'cmdcopy' : 'Kopier', 'cmdcut' : 'Klipp', 'cmddownload' : 'Tak niður', 'cmdduplicate' : 'Tvífalda', 'cmdedit' : 'Rætta fílu', 'cmdextract' : 'Pakka út fílar úr arkiv', 'cmdforward' : 'Fram', 'cmdgetfile' : 'Vel fílar', 'cmdhelp' : 'Um hesa software', 'cmdhome' : 'Heim', 'cmdinfo' : 'Fá upplýsingar', 'cmdmkdir' : 'Nýggja mappu', 'cmdmkfile' : 'Nýggja fílu', 'cmdopen' : 'Opna', 'cmdpaste' : 'Set inn', 'cmdquicklook' : 'Forsýning', 'cmdreload' : 'Les inn umaftur', 'cmdrename' : 'Umdoyp', 'cmdrm' : 'Strika', 'cmdsearch' : 'Finn fílar', 'cmdup' : 'Eitt stig upp', 'cmdupload' : 'Legg fílar inn', 'cmdview' : 'Síggj', 'cmdresize' : 'Tillaga stødd & Roter', 'cmdsort' : 'Raða', 'cmdnetmount' : 'Mount network volume', // added 18.04.2012 'cmdnetunmount': 'Unmount', // from v2.1 added 30.04.2012 'cmdplaces' : 'Til støð', // added 28.12.2014 'cmdchmod' : 'Broytir stíl', // from v2.1 added 20.6.2015 /*********************************** buttons ***********************************/ 'btnClose' : 'Lat aftur', 'btnSave' : 'Goym', 'btnRm' : 'Strika', 'btnApply' : 'Brúka', 'btnCancel' : 'Angra', 'btnNo' : 'Nei', 'btnYes' : 'Ja', 'btnMount' : 'Mount', // added 18.04.2012 'btnApprove': 'Goto $1 & approve', // from v2.1 added 26.04.2012 'btnUnmount': 'Unmount', // from v2.1 added 30.04.2012 'btnConv' : 'Konverter', // from v2.1 added 08.04.2014 'btnCwd' : 'Her', // from v2.1 added 22.5.2015 'btnVolume' : 'Volume', // from v2.1 added 22.5.2015 'btnAll' : 'Øll', // from v2.1 added 22.5.2015 'btnMime' : 'MIME Slag', // from v2.1 added 22.5.2015 'btnFileName':'Fílunavn', // from v2.1 added 22.5.2015 'btnSaveClose': 'Goym & Lat aftur', // from v2.1 added 12.6.2015 'btnBackup' : 'Backup', // fromv2.1 added 28.11.2015 /******************************** notifications ********************************/ 'ntfopen' : 'Opna mappu', 'ntffile' : '\'Opna fílu', 'ntfreload' : 'Les innaftur mappu innihald', 'ntfmkdir' : 'Stovnar mappu', 'ntfmkfile' : 'Stovnar fílur', 'ntfrm' : 'Strikar fílur', 'ntfcopy' : 'Kopierar fílur', 'ntfmove' : 'Flytur fílar', 'ntfprepare' : 'Ger klárt at kopiera fílar', 'ntfrename' : 'Umdoyp fílar', 'ntfupload' : 'Leggur inn fílar', 'ntfdownload' : 'Tekur fílar niður', 'ntfsave' : 'Goymir fílar', 'ntfarchive' : 'Stovnar arkiv', 'ntfextract' : 'Útpakkar fílar frá arkiv', 'ntfsearch' : 'Leitar eftir fílum', 'ntfresize' : 'Broytir stødd á fílur', 'ntfsmth' : '\'Ger okkurt >_<', 'ntfloadimg' : 'Lesur mynd inn', 'ntfnetmount' : 'Mounting network volume', // added 18.04.2012 'ntfnetunmount': 'Unmounting network volume', // from v2.1 added 30.04.2012 'ntfdim' : 'Tekur mynda vídd', // added 20.05.2013 'ntfreaddir' : 'Lesur mappu upplýsingar', // from v2.1 added 01.07.2013 'ntfurl' : 'Far URL af leinkju', // from v2.1 added 11.03.2014 'ntfchmod' : 'Broyti fílu stíl', // from v2.1 added 20.6.2015 'ntfpreupload': 'Kannar fílunavnið á fílu', // from v2.1 added 31.11.2015 /************************************ dates **********************************/ 'dateUnknown' : 'ókent', 'Today' : 'Í dag', 'Yesterday' : 'Í gjár', 'msJan' : 'Jan', 'msFeb' : 'Feb', 'msMar' : 'Mar', 'msApr' : 'Apr', 'msMay' : 'Mai', 'msJun' : 'Jun', 'msJul' : 'Jul', 'msAug' : 'Aug', 'msSep' : 'Sep', 'msOct' : 'Okt', 'msNov' : 'Nov', 'msDec' : 'Des', 'January' : 'Januar', 'February' : 'Februar', 'March' : 'Mars', 'April' : 'Apríl', 'May' : 'Mai', 'June' : 'Juni', 'July' : 'Juli', 'August' : 'August', 'September' : 'September', 'October' : 'Oktober', 'November' : 'November', 'December' : 'Desember', 'Sunday' : 'Sunnudag', 'Monday' : 'Mánadag', 'Tuesday' : 'Týsdag', 'Wednesday' : 'Mikudag', 'Thursday' : 'Hósdag', 'Friday' : 'Fríggjadag', 'Saturday' : 'Leygardag', 'Sun' : 'Sun', 'Mon' : 'Mán', 'Tue' : 'Týs', 'Wed' : 'Mik', 'Thu' : 'Hós', 'Fri' : 'Frí', 'Sat' : 'Ley', /******************************** sort variants ********************************/ 'sortname' : 'eftir navn', 'sortkind' : 'eftir slag', 'sortsize' : 'eftir stødd', 'sortdate' : 'eftir dato', 'sortFoldersFirst' : 'mappur fyrst', /********************************** new items **********************************/ 'untitled file.txt' : 'NýggjaFílu.txt', // added 10.11.2015 'untitled folder' : 'NýggjaMappu', // added 10.11.2015 'Archive' : 'NýtArkiv', // from v2.1 added 10.11.2015 /********************************** messages **********************************/ 'confirmReq' : 'Váttan kravd', 'confirmRm' : 'Ert tú vísur í at tú ynskir at strika fílarnar?
                Hetta kann ikki angrast!', 'confirmRepl' : 'Erstatta gomlu fílu við nýggja?', 'confirmConvUTF8' : 'Brúka á øll', // from v2.1 added 08.04.2014 'confirmNotSave' : 'Er blivi rættað.
                Missir sínar broytingar um tú ikki goymir.', // from v2.1 added 15.7.2015 'apllyAll' : 'Brúka til øll', 'name' : 'Navn', 'size' : 'Stødd', 'perms' : 'Rættindi', 'modify' : 'Rættað', 'kind' : 'Slag', 'read' : 'síggja', 'write' : 'broyta', 'noaccess' : 'onga atgongd', 'and' : 'og', 'unknown' : 'ókent', 'selectall' : 'Vel allar fílur', 'selectfiles' : 'Vel fílu(r)', 'selectffile' : 'Vel fyrstu fílu', 'selectlfile' : 'Vel síðstu fílu', 'viewlist' : 'Lista vísing', 'viewicons' : 'Ikon vísing', 'places' : 'Støð', 'calc' : 'Rokna', 'path' : 'Stiga', 'aliasfor' : 'Hjánavn fyri', 'locked' : 'Læst', 'dim' : 'Vídd', 'files' : 'Fílur', 'folders' : 'Mappur', 'items' : 'Myndir', 'yes' : 'ja', 'no' : 'nei', 'link' : 'Leinkja', 'searcresult' : 'Leiti úrslit', 'selected' : 'valdar myndir', 'about' : 'Um', 'shortcuts' : 'Snarvegir', 'help' : 'Hjálp', 'webfm' : 'Web fílu umsitan', 'ver' : 'Útgáva', 'protocolver' : 'protokol versión', 'homepage' : 'Verkætlan heim', 'docs' : 'Skjalfesting', 'github' : 'Mynda okkum á Github', 'twitter' : 'Fylg okkum á twitter', 'facebook' : 'Fylg okkum á facebook', 'team' : 'Lið', 'chiefdev' : 'forritaleiðari', 'developer' : 'forritari', 'contributor' : 'stuðulsveitari', 'maintainer' : 'viðlíkahaldari', 'translator' : 'umsetari', 'icons' : 'Ikonir', 'dontforget' : 'and don\'t forget to take your towel', 'shortcutsof' : 'Snarvegir sligi frá', 'dropFiles' : 'Slepp fílur her', 'or' : 'ella', 'selectForUpload' : 'Vel fílur at leggja inn', 'moveFiles' : 'Flyt fílur', 'copyFiles' : 'Kopier fílur', 'rmFromPlaces' : 'Flyt frá støð', 'aspectRatio' : 'Skermformat', 'scale' : 'Skalera', 'width' : 'Longd', 'height' : 'Hædd', 'resize' : 'Tilliga stødd', 'crop' : 'Sker til', 'rotate' : 'Rotera', 'rotate-cw' : 'Rotera 90 gradir við urið', 'rotate-ccw' : 'otera 90 gradir móti urið', 'degree' : '°', 'netMountDialogTitle' : 'Mount network volume', // added 18.04.2012 'protocol' : 'Protokol', // added 18.04.2012 'host' : 'Host', // added 18.04.2012 'port' : 'Port', // added 18.04.2012 'user' : 'Brúkari', // added 18.04.2012 'pass' : 'Loyniorð', // added 18.04.2012 'confirmUnmount' : 'Are you unmount $1?', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'Hála ella set innn fílar frá kaga', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'Hála ella set inn fílar frá URls her', // from v2.1 added 07.04.2014 'encoding' : 'Encoding', // from v2.1 added 19.12.2014 'locale' : 'Locale', // from v2.1 added 19.12.2014 'searchTarget' : 'Target: $1', // from v2.1 added 22.5.2015 'searchMime' : 'Leita við input MIME Type', // from v2.1 added 22.5.2015 'owner' : 'Eigari', // from v2.1 added 20.6.2015 'group' : 'Bólkur', // from v2.1 added 20.6.2015 'other' : 'Annað', // from v2.1 added 20.6.2015 'execute' : 'Útfør', // from v2.1 added 20.6.2015 'perm' : 'Rættindi', // from v2.1 added 20.6.2015 'mode' : 'Mode', // from v2.1 added 20.6.2015 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Ókent', 'kindFolder' : 'Mappa', 'kindAlias' : 'Hjánavn', 'kindAliasBroken' : 'Óvirki hjánavn', // applications 'kindApp' : 'Applikatión', 'kindPostscript' : 'Postscript skjal', 'kindMsOffice' : 'Microsoft Office skjal', 'kindMsWord' : 'Microsoft Word skjal', 'kindMsExcel' : 'Microsoft Excel skjal', 'kindMsPP' : 'Microsoft Powerpoint framløga', 'kindOO' : 'Open Office skjal', 'kindAppFlash' : 'Flash applikatión', 'kindPDF' : 'Portable Document Format (PDF)', 'kindTorrent' : 'Bittorrent fíla', 'kind7z' : '7z arkiv', 'kindTAR' : 'TAR arkiv', 'kindGZIP' : 'GZIP arkiv', 'kindBZIP' : 'BZIP arkiv', 'kindXZ' : 'XZ arkiv', 'kindZIP' : 'ZIP arkiv', 'kindRAR' : 'RAR arkiv', 'kindJAR' : 'Java JAR ffílaile', 'kindTTF' : 'True Type font', 'kindOTF' : 'Open Type font', 'kindRPM' : 'RPM pakki', // texts 'kindText' : 'Text skjal', 'kindTextPlain' : 'Reinur tekstur', 'kindPHP' : 'PHP kelda', 'kindCSS' : 'Cascading style sheet (CSS)', 'kindHTML' : 'HTML skjal', 'kindJS' : 'Javascript kelda', 'kindRTF' : 'Rich Text Format (RTF)', 'kindC' : 'C kelda', 'kindCHeader' : 'C header kelda', 'kindCPP' : 'C++ kelda', 'kindCPPHeader' : 'C++ header kelda', 'kindShell' : 'Unix shell script', 'kindPython' : 'Python kelda', 'kindJava' : 'Java kelda', 'kindRuby' : 'Ruby kelda', 'kindPerl' : 'Perl script', 'kindSQL' : 'SQL kelda', 'kindXML' : 'XML skjal', 'kindAWK' : 'AWK kelda', 'kindCSV' : 'Comma separated values (CSV)', 'kindDOCBOOK' : 'Docbook XML skjal', 'kindMarkdown' : 'Markdown text', // added 20.7.2015 // images 'kindImage' : 'Mynd', 'kindBMP' : 'BMP mynd', 'kindJPEG' : 'JPEG mynd', 'kindGIF' : 'GIF mynd', 'kindPNG' : 'PNG mynd', 'kindTIFF' : 'TIFF mynd', 'kindTGA' : 'TGA mynd', 'kindPSD' : 'Adobe Photoshop mynd', 'kindXBITMAP' : 'X bitmap mynd', 'kindPXM' : 'Pixelmator mynd', // media 'kindAudio' : 'Audio media', 'kindAudioMPEG' : 'MPEG ljóðfíla', 'kindAudioMPEG4' : 'MPEG-4 ljóðfíla', 'kindAudioMIDI' : 'MIDI ljóðfíla', 'kindAudioOGG' : 'Ogg Vorbis ljóðfíla', 'kindAudioWAV' : 'WAV ljóðfíla', 'AudioPlaylist' : 'MP3 playlisti', 'kindVideo' : 'Video media', 'kindVideoDV' : 'DV filmur', 'kindVideoMPEG' : 'MPEG filmur', 'kindVideoMPEG4' : 'MPEG-4 filmur', 'kindVideoAVI' : 'AVI filmur', 'kindVideoMOV' : 'Quick Time filmur', 'kindVideoWM' : 'Windows Media filmur', 'kindVideoFlash' : 'Flash filmur', 'kindVideoMKV' : 'Matroska filmur', 'kindVideoOGG' : 'Ogg filmur' } }; })); plugins/file-manager-advanced/application/library/js/i18n/elfinder.fr_CA.js000064400000105055147176754550022613 0ustar00/** * Traduction canadienne française (identique à la traduction française) * @author Régis Guyomarch * @author Benoit Delachaux * @author Jonathan Grunder * @version 2019-10-15 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.fr_CA = { translator : 'Régis Guyomarch <regisg@gmail.com>, Benoit Delachaux <benorde33@gmail.com>, Jonathan Grunder <jonathan.grunder@gmail.com>', language : 'française', direction : 'ltr', dateFormat : 'd/M/Y H:i', // will show like: 15/Oct/2019 14:47 fancyDateFormat : '$1 H:i', // will show like: Aujourd'hui 14:47 nonameDateFormat : 'ymd-His', // noname upload will show like: 191015-144704 messages : { /********************************** errors **********************************/ 'error' : 'Erreur', 'errUnknown' : 'Erreur inconnue.', 'errUnknownCmd' : 'Commande inconnue.', 'errJqui' : 'Mauvaise configuration de jQuery UI. Les composants Selectable, draggable et droppable doivent être inclus.', 'errNode' : 'elFinder requiert que l\'élément DOM ait été créé.', 'errURL' : 'Mauvaise configuration d\'elFinder ! L\'option URL n\'a pas été définie.', 'errAccess' : 'Accès refusé.', 'errConnect' : 'Impossible de se connecter au backend.', 'errAbort' : 'Connexion interrompue.', 'errTimeout' : 'Délai de connexion dépassé.', 'errNotFound' : 'Backend non trouvé.', 'errResponse' : 'Mauvaise réponse du backend.', 'errConf' : 'Mauvaise configuration du backend.', 'errJSON' : 'Le module PHP JSON n\'est pas installé.', 'errNoVolumes' : 'Aucun volume lisible.', 'errCmdParams' : 'Mauvais paramétrage de la commande "$1".', 'errDataNotJSON' : 'Les données ne sont pas au format JSON.', 'errDataEmpty' : 'Données inexistantes.', 'errCmdReq' : 'La requête au Backend doit comporter le nom de la commande.', 'errOpen' : 'Impossible d\'ouvrir "$1".', 'errNotFolder' : 'Cet objet n\'est pas un dossier.', 'errNotFile' : 'Cet objet n\'est pas un fichier.', 'errRead' : 'Impossible de lire "$1".', 'errWrite' : 'Impossible d\'écrire dans "$1".', 'errPerm' : 'Permission refusée.', 'errLocked' : '"$1" est verrouillé et ne peut être déplacé ou supprimé.', 'errExists' : 'Un élément nommé "$1" existe déjà.', 'errInvName' : 'Nom de fichier incorrect.', 'errInvDirname' : 'Nom de dossier incorrect.', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : 'Dossier non trouvé.', 'errFileNotFound' : 'Fichier non trouvé.', 'errTrgFolderNotFound' : 'Dossier destination "$1" non trouvé.', 'errPopup' : 'Le navigateur web a empêché l\'ouverture d\'une fenêtre "popup". Pour ouvrir le fichier, modifiez les options du navigateur web.', 'errMkdir' : 'Impossible de créer le dossier "$1".', 'errMkfile' : 'Impossible de créer le fichier "$1".', 'errRename' : 'Impossible de renommer "$1".', 'errCopyFrom' : 'Interdiction de copier des fichiers depuis le volume "$1".', 'errCopyTo' : 'Interdiction de copier des fichiers vers le volume "$1".', 'errMkOutLink' : 'Impossible de créer un lien en dehors du volume principal.', // from v2.1 added 03.10.2015 'errUpload' : 'Erreur lors de l\'envoi du fichier.', // old name - errUploadCommon 'errUploadFile' : 'Impossible d\'envoyer "$1".', // old name - errUpload 'errUploadNoFiles' : 'Aucun fichier à envoyer.', 'errUploadTotalSize' : 'Les données dépassent la taille maximale allouée.', // old name - errMaxSize 'errUploadFileSize' : 'Le fichier dépasse la taille maximale allouée.', // old name - errFileMaxSize 'errUploadMime' : 'Type de fichier non autorisé.', 'errUploadTransfer' : '"$1" erreur transfert.', 'errUploadTemp' : 'Impossible de créer un fichier temporaire pour transférer les fichiers.', // from v2.1 added 26.09.2015 'errNotReplace' : 'L\'objet "$1" existe déjà à cet endroit et ne peut être remplacé par un objet d\'un type différent.', // new 'errReplace' : 'Impossible de remplacer "$1".', 'errSave' : 'Impossible de sauvegarder "$1".', 'errCopy' : 'Impossible de copier "$1".', 'errMove' : 'Impossible de déplacer "$1".', 'errCopyInItself' : 'Impossible de copier "$1" sur lui-même.', 'errRm' : 'Impossible de supprimer "$1".', 'errTrash' : 'Impossible de déplacer dans la corbeille', // from v2.1.24 added 30.4.2017 'errRmSrc' : 'Impossible de supprimer le(s) fichier(s) source(s).', 'errExtract' : 'Imbossible d\'extraire les fichiers à partir de "$1".', 'errArchive' : 'Impossible de créer l\'archive.', 'errArcType' : 'Type d\'archive non supporté.', 'errNoArchive' : 'Le fichier n\'est pas une archive, ou c\'est un type d\'archive non supporté.', 'errCmdNoSupport' : 'Le Backend ne prend pas en charge cette commande.', 'errReplByChild' : 'Le dossier “$1” ne peut pas être remplacé par un élément qu\'il contient.', 'errArcSymlinks' : 'Par mesure de sécurité, il est défendu d\'extraire une archive contenant des liens symboliques ou des noms de fichier non autorisés.', // edited 24.06.2012 'errArcMaxSize' : 'Les fichiers de l\'archive excèdent la taille maximale autorisée.', 'errResize' : 'Impossible de redimensionner "$1".', 'errResizeDegree' : 'Degré de rotation invalide.', // added 7.3.2013 'errResizeRotate' : 'L\'image ne peut pas être tournée.', // added 7.3.2013 'errResizeSize' : 'Dimension de l\'image non-valide.', // added 7.3.2013 'errResizeNoChange' : 'L\'image n\'est pas redimensionnable.', // added 7.3.2013 'errUsupportType' : 'Type de fichier non supporté.', 'errNotUTF8Content' : 'Le fichier "$1" n\'est pas en UTF-8, il ne peut être édité.', // added 9.11.2011 'errNetMount' : 'Impossible de monter "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'Protocole non supporté.', // added 17.04.2012 'errNetMountFailed' : 'Echec du montage.', // added 17.04.2012 'errNetMountHostReq' : 'Hôte requis.', // added 18.04.2012 'errSessionExpires' : 'Votre session a expiré en raison de son inactivité.', 'errCreatingTempDir' : 'Impossible de créer le répertoire temporaire : "$1"', 'errFtpDownloadFile' : 'Impossible de télécharger le file depuis l\'accès FTP : "$1"', 'errFtpUploadFile' : 'Impossible d\'envoyer le fichier vers l\'accès FTP : "$1"', 'errFtpMkdir' : 'Impossible de créer un répertoire distant sur l\'accès FTP :"$1"', 'errArchiveExec' : 'Erreur lors de l\'archivage des fichiers : "$1"', 'errExtractExec' : 'Erreur lors de l\'extraction des fichiers : "$1"', 'errNetUnMount' : 'Impossible de démonter.', // from v2.1 added 30.04.2012 'errConvUTF8' : 'Conversion en UTF-8 impossible', // from v2.1 added 08.04.2014 'errFolderUpload' : 'Essayez Google Chrome, si voulez envoyer le dossier.', // from v2.1 added 26.6.2015 'errSearchTimeout' : 'Délai d’attente dépassé pour la recherche "$1". Le résultat de la recherche est partiel.', // from v2.1 added 12.1.2016 'errReauthRequire' : 'Réauthorisation requise.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'Le nombre maximal d\'éléments pouvant être sélectionnés est $1.', // from v2.1.17 added 17.10.2016 'errRestore' : 'Impossible de restaurer la corbeille. La destination de la restauration n\'a pu être identifiée.', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'Aucun éditeur n\'a été trouvé pour ce type de fichier.', // from v2.1.25 added 23.5.2017 'errServerError' : 'Une erreur est survenue du côté serveur.', // from v2.1.25 added 16.6.2017 'errEmpty' : 'Impossible de vider le dossier "$1".', // from v2.1.25 added 22.6.2017 'moreErrors' : 'There are $1 more errors.', // from v2.1.44 added 9.12.2018 /******************************* commands names ********************************/ 'cmdarchive' : 'Créer une archive', 'cmdback' : 'Précédent', 'cmdcopy' : 'Copier', 'cmdcut' : 'Couper', 'cmddownload' : 'Télécharger', 'cmdduplicate' : 'Dupliquer', 'cmdedit' : 'Éditer le fichier', 'cmdextract' : 'Extraire les fichiers de l\'archive', 'cmdforward' : 'Suivant', 'cmdgetfile' : 'Sélectionner les fichiers', 'cmdhelp' : 'À propos de ce logiciel', 'cmdhome' : 'Accueil', 'cmdinfo' : 'Informations', 'cmdmkdir' : 'Nouveau dossier', 'cmdmkdirin' : 'Dans un nouveau dossier', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'Nouveau fichier', 'cmdopen' : 'Ouvrir', 'cmdpaste' : 'Coller', 'cmdquicklook' : 'Prévisualiser', 'cmdreload' : 'Actualiser', 'cmdrename' : 'Renommer', 'cmdrm' : 'Supprimer', 'cmdtrash' : 'À la corbeille', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'Restaurer', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'Trouver les fichiers', 'cmdup' : 'Remonter au dossier parent', 'cmdupload' : 'Envoyer les fichiers', 'cmdview' : 'Vue', 'cmdresize' : 'Redimensionner l\'image', 'cmdsort' : 'Trier', 'cmdnetmount' : 'Monter un volume réseau', // added 18.04.2012 'cmdnetunmount': 'Démonter', // from v2.1 added 30.04.2012 'cmdplaces' : 'Vers Favoris', // added 28.12.2014 'cmdchmod' : 'Changer de mode', // from v2.1 added 20.6.2015 'cmdopendir' : 'Ouvrir un dossier', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'Réinitialiser largeur colone', // from v2.1.13 added 12.06.2016 'cmdfullscreen': 'Plein écran', // from v2.1.15 added 03.08.2016 'cmdmove' : 'Déplacer', // from v2.1.15 added 21.08.2016 'cmdempty' : 'Vider le dossier', // from v2.1.25 added 22.06.2017 'cmdundo' : 'Annuler', // from v2.1.27 added 31.07.2017 'cmdredo' : 'Refaire', // from v2.1.27 added 31.07.2017 'cmdpreference': 'Préférences', // from v2.1.27 added 03.08.2017 'cmdselectall' : 'Tout sélectionner', // from v2.1.28 added 15.08.2017 'cmdselectnone': 'Tout désélectionner', // from v2.1.28 added 15.08.2017 'cmdselectinvert': 'Inverser la sélection', // from v2.1.28 added 15.08.2017 'cmdopennew' : 'Ouvrir dans une nouvelle fenêtre', // from v2.1.38 added 3.4.2018 'cmdhide' : 'Hide (Preference)', // from v2.1.41 added 24.7.2018 /*********************************** buttons ***********************************/ 'btnClose' : 'Fermer', 'btnSave' : 'Sauvegarder', 'btnRm' : 'Supprimer', 'btnApply' : 'Confirmer', 'btnCancel' : 'Annuler', 'btnNo' : 'Non', 'btnYes' : 'Oui', 'btnMount' : 'Monter', // added 18.04.2012 'btnApprove': 'Aller à $1 & approuver', // from v2.1 added 26.04.2012 'btnUnmount': 'Démonter', // from v2.1 added 30.04.2012 'btnConv' : 'Convertir', // from v2.1 added 08.04.2014 'btnCwd' : 'Ici', // from v2.1 added 22.5.2015 'btnVolume' : 'Volume', // from v2.1 added 22.5.2015 'btnAll' : 'Tous', // from v2.1 added 22.5.2015 'btnMime' : 'Type MIME', // from v2.1 added 22.5.2015 'btnFileName':'Nom du fichier', // from v2.1 added 22.5.2015 'btnSaveClose': 'Enregistrer & Ferme', // from v2.1 added 12.6.2015 'btnBackup' : 'Sauvegarde', // fromv2.1 added 28.11.2015 'btnRename' : 'Renommer', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'Renommer (tous)', // from v2.1.24 added 6.4.2017 'btnPrevious' : 'Préc. ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : 'Suiv. ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : 'Sauvegarder sous', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'Ouvrir le dossier', 'ntffile' : 'Ouvrir le fichier', 'ntfreload' : 'Actualiser le contenu du dossier', 'ntfmkdir' : 'Création du dossier', 'ntfmkfile' : 'Création des fichiers', 'ntfrm' : 'Supprimer les éléments', 'ntfcopy' : 'Copier les éléments', 'ntfmove' : 'Déplacer les éléments', 'ntfprepare' : 'Préparation de la copie des éléments', 'ntfrename' : 'Renommer les fichiers', 'ntfupload' : 'Envoi des fichiers', 'ntfdownload' : 'Téléchargement des fichiers', 'ntfsave' : 'Sauvegarder les fichiers', 'ntfarchive' : 'Création de l\'archive', 'ntfextract' : 'Extraction des fichiers de l\'archive', 'ntfsearch' : 'Recherche des fichiers', 'ntfresize' : 'Redimensionner les images', 'ntfsmth' : 'Fait quelque chose', 'ntfloadimg' : 'Chargement de l\'image', 'ntfnetmount' : 'Monte le volume réseau', // added 18.04.2012 'ntfnetunmount': 'Démonte le volume réseau', // from v2.1 added 30.04.2012 'ntfdim' : 'Calcule la dimension de l\'image', // added 20.05.2013 'ntfreaddir' : 'Lecture des informations du dossier', // from v2.1 added 01.07.2013 'ntfurl' : 'Récupération de l’URL du lien', // from v2.1 added 11.03.2014 'ntfchmod' : 'Changement de mode', // from v2.1 added 20.6.2015 'ntfpreupload': 'Vérification du nom du fichier envoyé', // from v2.1 added 31.11.2015 'ntfzipdl' : 'Création d’un fichier pour le téléchargement', // from v2.1.7 added 23.1.2016 'ntfparents' : 'Traitement de l\'information du chemin', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'Traitement du fichier envoyé', // from v2.1.17 added 2.11.2016 'ntftrash' : 'Mettre à la corbeille', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'Restaurer depuis la corbeille', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'Validation du dossier de destination', // from v2.1.24 added 3.5.2017 'ntfundo' : 'Annuler l\'opération précédente', // from v2.1.27 added 31.07.2017 'ntfredo' : 'Refaire l\'opération annulée', // from v2.1.27 added 31.07.2017 'ntfchkcontent' : 'Checking contents', // from v2.1.41 added 3.8.2018 /*********************************** volumes *********************************/ 'volume_Trash' : 'Corbeille', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : 'Inconnue', 'Today' : 'Aujourd\'hui', 'Yesterday' : 'Hier', 'msJan' : 'Jan', 'msFeb' : 'Fév', 'msMar' : 'Mar', 'msApr' : 'Avr', 'msMay' : 'Mai', 'msJun' : 'Jun', 'msJul' : 'Jul', 'msAug' : 'Aoû', 'msSep' : 'Sep', 'msOct' : 'Oct', 'msNov' : 'Nov', 'msDec' : 'Déc', 'January' : 'Janvier', 'February' : 'Février', 'March' : 'Mars', 'April' : 'Avril', 'May' : 'Mai', 'June' : 'Juin', 'July' : 'Huillet', 'August' : 'Août', 'September' : 'Septembre', 'October' : 'Octobre', 'November' : 'Novembre', 'December' : 'Décembre', 'Sunday' : 'Dimanche', 'Monday' : 'Lundi', 'Tuesday' : 'Mardi', 'Wednesday' : 'Mercredi', 'Thursday' : 'Jeudi', 'Friday' : 'Vendredi', 'Saturday' : 'Samedi', 'Sun' : 'Dim', 'Mon' : 'Lun', 'Tue' : 'Mar', 'Wed' : 'Mer', 'Thu' : 'Jeu', 'Fri' : 'Ven', 'Sat' : 'Sam', /******************************** sort variants ********************************/ 'sortname' : 'par nom', 'sortkind' : 'par type', 'sortsize' : 'par taille', 'sortdate' : 'par date', 'sortFoldersFirst' : 'Dossiers en premier', 'sortperm' : 'par permission', // from v2.1.13 added 13.06.2016 'sortmode' : 'par mode', // from v2.1.13 added 13.06.2016 'sortowner' : 'par propriétaire', // from v2.1.13 added 13.06.2016 'sortgroup' : 'par groupe', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'Egalement arborescence', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : 'NouveauFichier.txt', // added 10.11.2015 'untitled folder' : 'NouveauDossier', // added 10.11.2015 'Archive' : 'NouvelleArchive', // from v2.1 added 10.11.2015 'untitled file' : 'NewFile.$1', // from v2.1.41 added 6.8.2018 'extentionfile' : '$1: File', // from v2.1.41 added 6.8.2018 'extentiontype' : '$1: $2', // from v2.1.43 added 17.10.2018 /********************************** messages **********************************/ 'confirmReq' : 'Confirmation requise', 'confirmRm' : 'Êtes-vous certain de vouloir supprimer les éléments ?
                Cela ne peut être annulé !', 'confirmRepl' : 'Supprimer l\'ancien fichier par le nouveau ?', 'confirmRest' : 'Remplacer l\'élément existant par l\'élément de la corbeille ?', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'L\'encodage n\'est pas UTf-8
                Convertir en UTF-8 ?
                Les contenus deviendront UTF-8 en sauvegardant après la conversion.', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'Impossible de détecter l\'encodage de ce fichier. Pour être modifié, il doit être temporairement convertit en UTF-8.
                Veuillez s\'il vous plaît sélectionner un encodage pour ce fichier.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : 'Ce fichier a été modifié.
                Les données seront perdues si les changements ne sont pas sauvegardés.', // from v2.1 added 15.7.2015 'confirmTrash' : 'Êtes-vous certain de vouloir déplacer les éléments vers la corbeille?', //from v2.1.24 added 29.4.2017 'confirmMove' : 'Are you sure you want to move items to "$1"?', //from v2.1.50 added 27.7.2019 'apllyAll' : 'Appliquer à tous', 'name' : 'Nom', 'size' : 'Taille', 'perms' : 'Permissions', 'modify' : 'Modifié', 'kind' : 'Type', 'read' : 'Lecture', 'write' : 'Écriture', 'noaccess' : 'Pas d\'accès', 'and' : 'et', 'unknown' : 'inconnu', 'selectall' : 'Sélectionner tous les éléments', 'selectfiles' : 'Sélectionner le(s) élément(s)', 'selectffile' : 'Sélectionner le premier élément', 'selectlfile' : 'Sélectionner le dernier élément', 'viewlist' : 'Vue par liste', 'viewicons' : 'Vue par icônes', 'viewSmall' : 'Petites icônes', // from v2.1.39 added 22.5.2018 'viewMedium' : 'Moyennes icônes', // from v2.1.39 added 22.5.2018 'viewLarge' : 'Grandes icônes', // from v2.1.39 added 22.5.2018 'viewExtraLarge' : 'Très grandes icônes', // from v2.1.39 added 22.5.2018 'places' : 'Favoris', 'calc' : 'Calculer', 'path' : 'Chemin', 'aliasfor' : 'Raccourcis pour', 'locked' : 'Verrouiller', 'dim' : 'Dimensions', 'files' : 'Fichiers', 'folders' : 'Dossiers', 'items' : 'Éléments', 'yes' : 'oui', 'no' : 'non', 'link' : 'Lien', 'searcresult' : 'Résultats de la recherche', 'selected' : 'Éléments sélectionnés', 'about' : 'À propos', 'shortcuts' : 'Raccourcis', 'help' : 'Aide', 'webfm' : 'Gestionnaire de fichier Web', 'ver' : 'Version', 'protocolver' : 'Version du protocole', 'homepage' : 'Page du projet', 'docs' : 'Documentation', 'github' : 'Forkez-nous sur Github', 'twitter' : 'Suivez nous sur twitter', 'facebook' : 'Joignez-nous facebook', 'team' : 'Équipe', 'chiefdev' : 'Développeur en chef', 'developer' : 'Développeur', 'contributor' : 'Contributeur', 'maintainer' : 'Mainteneur', 'translator' : 'Traducteur', 'icons' : 'Icônes', 'dontforget' : 'et n\'oubliez pas votre serviette', 'shortcutsof' : 'Raccourcis désactivés', 'dropFiles' : 'Déposez les fichiers ici', 'or' : 'ou', 'selectForUpload' : 'Sélectionner les fichiers à envoyer', 'moveFiles' : 'Déplacer les éléments', 'copyFiles' : 'Copier les éléments', 'restoreFiles' : 'Restaurer les éléments', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'Retirer des favoris', 'aspectRatio' : 'Ratio d’affichage', 'scale' : 'Mise à l\'échelle', 'width' : 'Largeur', 'height' : 'Hauteur', 'resize' : 'Redimensionner', 'crop' : 'Recadrer', 'rotate' : 'Rotation', 'rotate-cw' : 'Rotation de 90 degrés horaire', 'rotate-ccw' : 'Rotation de 90 degrés antihoraire', 'degree' : '°', 'netMountDialogTitle' : 'Monter un volume réseau', // added 18.04.2012 'protocol' : 'Protocole', // added 18.04.2012 'host' : 'Hôte', // added 18.04.2012 'port' : 'Port', // added 18.04.2012 'user' : 'Utilisateur', // added 18.04.2012 'pass' : 'Mot de passe', // added 18.04.2012 'confirmUnmount' : 'Démonter $1?', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'Glissez-déposez depuis le navigateur de fichier', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'Glissez-déposez les fichiers ici', // from v2.1 added 07.04.2014 'encoding' : 'Encodage', // from v2.1 added 19.12.2014 'locale' : 'Encodage régional', // from v2.1 added 19.12.2014 'searchTarget' : 'Destination: $1', // from v2.1 added 22.5.2015 'searchMime' : 'Recherche par type MIME', // from v2.1 added 22.5.2015 'owner' : 'Propriétaire', // from v2.1 added 20.6.2015 'group' : 'Groupe', // from v2.1 added 20.6.2015 'other' : 'Autre', // from v2.1 added 20.6.2015 'execute' : 'Exécuter', // from v2.1 added 20.6.2015 'perm' : 'Permission', // from v2.1 added 20.6.2015 'mode' : 'Mode', // from v2.1 added 20.6.2015 'emptyFolder' : 'Le dossier est vide', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'Le dossier est vide.\\ Glissez-déposez pour ajouter des éléments.', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'Le dossier est vide.\\ Appuyez longuement pour ajouter des éléments.', // from v2.1.6 added 30.12.2015 'quality' : 'Qualité', // from v2.1.6 added 5.1.2016 'autoSync' : 'Synchronisation automatique', // from v2.1.6 added 10.1.2016 'moveUp' : 'Déplacer vers le haut', // from v2.1.6 added 18.1.2016 'getLink' : 'Obtenir le lien d’URL', // from v2.1.7 added 9.2.2016 'selectedItems' : 'Éléments sélectionnés ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'ID du dossier', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'Permettre l\'accès hors-ligne', // from v2.1.10 added 3.25.2016 'reAuth' : 'Pour se réauthentifier', // from v2.1.10 added 3.25.2016 'nowLoading' : 'En cours de chargement...', // from v2.1.12 added 4.26.2016 'openMulti' : 'Ouvrir multiples fichiers', // from v2.1.12 added 5.14.2016 'openMultiConfirm': 'Vous allez ouvrir $1 fichiers. Êtes-vous sûr de vouloir les ouvrir dans le navigateur ?', // from v2.1.12 added 5.14.2016 'emptySearch' : 'Aucun résultat trouvé avec les paramètres de recherche.', // from v2.1.12 added 5.16.2016 'editingFile' : 'Modification d\'un fichier.', // from v2.1.13 added 6.3.2016 'hasSelected' : 'Vous avez sélectionné $1 éléments.', // from v2.1.13 added 6.3.2016 'hasClipboard' : 'Vous avez $1 éléments dans le presse-papier.', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'Recherche incrémentale disponible uniquement pour la vue active.', // from v2.1.13 added 6.30.2016 'reinstate' : 'Rétablir', // from v2.1.15 added 3.8.2016 'complete' : '$1 complété', // from v2.1.15 added 21.8.2016 'contextmenu' : 'Menu contextuel', // from v2.1.15 added 9.9.2016 'pageTurning' : 'Tourner la page', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'Volumes principaux', // from v2.1.16 added 16.9.2016 'reset' : 'Réinitialiser', // from v2.1.16 added 1.10.2016 'bgcolor' : 'Couleur de fond', // from v2.1.16 added 1.10.2016 'colorPicker' : 'Sélecteur de couleur', // from v2.1.16 added 1.10.2016 '8pxgrid' : 'Grille 8px', // from v2.1.16 added 4.10.2016 'enabled' : 'Actif', // from v2.1.16 added 4.10.2016 'disabled' : 'Inactif', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'Aucun résultat trouvé.\\AAppuyez sur [Entrée] pour développer la cible de recherche.', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'Aucun résultat trouvé pour la recherche par première lettre.', // from v2.1.23 added 24.3.2017 'textLabel' : 'Label texte', // from v2.1.17 added 13.10.2016 'minsLeft' : '$1 mins restantes', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'Réouvrir avec l\'encodage sélectionné', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'Sauvegarder avec l\'encodage sélectionné', // from v2.1.19 added 2.12.2016 'selectFolder' : 'Choisir le dossier', // from v2.1.20 added 13.12.2016 'firstLetterSearch': 'Recherche par première lettre', // from v2.1.23 added 24.3.2017 'presets' : 'Présélections', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : 'Impossible de mettre autant d\'éléments à la corbeille.', // from v2.1.25 added 9.6.2017 'TextArea' : 'Zone de texte', // from v2.1.25 added 14.6.2017 'folderToEmpty' : 'Vider le dossier "$1".', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : 'Il n\'y a pas d\'élément dans le dossier "$1".', // from v2.1.25 added 22.6.2017 'preference' : 'Préférence', // from v2.1.26 added 28.6.2017 'language' : 'Configuration de langue', // from v2.1.26 added 28.6.2017 'clearBrowserData': 'Initialisation des configurations sauvegardées dans ce navigateur', // from v2.1.26 added 28.6.2017 'toolbarPref' : 'Paramètres de la barre d\'outils', // from v2.1.27 added 2.8.2017 'charsLeft' : '... $1 caractères restants.', // from v2.1.29 added 30.8.2017 'sum' : 'Somme', // from v2.1.29 added 28.9.2017 'roughFileSize' : 'Taille de fichier brute', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : 'Focus on the element of dialog with mouseover', // from v2.1.30 added 2.11.2017 'select' : 'Sélectionner', // from v2.1.30 added 23.11.2017 'selectAction' : 'Action lors de la sélection d\'un fichier', // from v2.1.30 added 23.11.2017 'useStoredEditor' : 'Ouvrir avec le dernier éditeur utilisé', // from v2.1.30 added 23.11.2017 'selectinvert' : 'Inverser la sélection', // from v2.1.30 added 25.11.2017 'renameMultiple' : 'Êtes-vous sûr de vouloir renommer les éléments sélectionnés $1 en $2 ?
                L\'action est définitive !', // from v2.1.31 added 4.12.2017 'batchRename' : 'Renommer le Batch', // from v2.1.31 added 8.12.2017 'plusNumber' : '+ Nombre', // from v2.1.31 added 8.12.2017 'asPrefix' : 'Ajouter un préfixe', // from v2.1.31 added 8.12.2017 'asSuffix' : 'Ajouter un suffixe', // from v2.1.31 added 8.12.2017 'changeExtention' : 'Modifier l\'extention', // from v2.1.31 added 8.12.2017 'columnPref' : 'Paramètres des colonnes (List view)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : 'Les changements seront immédiatement appliqués à l\'archive.', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : 'Aucun changement ne sera appliqué tant que ce volume n\'a pas été démonté.', // from v2.1.33 added 2.3.2018 'unmountChildren' : 'Le(s) volume(s) suivant(s) montés sur ce volume seront également démontés. Êtes-vous sûr de vouloir le démonter ?', // from v2.1.33 added 5.3.2018 'selectionInfo' : 'Informations sur la sélection', // from v2.1.33 added 7.3.2018 'hashChecker' : 'Algorithme de hachage de fichier', // from v2.1.33 added 10.3.2018 'infoItems' : 'Info Items (Selection Info Panel)', // from v2.1.38 added 28.3.2018 'pressAgainToExit': 'Appuyez à nouveau pour quitter.', // from v2.1.38 added 1.4.2018 'toolbar' : 'Barre d\'outils', // from v2.1.38 added 4.4.2018 'workspace' : 'Espace de travail', // from v2.1.38 added 4.4.2018 'dialog' : 'Dialogue', // from v2.1.38 added 4.4.2018 'all' : 'Tout', // from v2.1.38 added 4.4.2018 'iconSize' : 'Icon Size (Icons view)', // from v2.1.39 added 7.5.2018 'editorMaximized' : 'Open the maximized editor window', // from v2.1.40 added 30.6.2018 'editorConvNoApi' : 'Because conversion by API is not currently available, please convert on the website.', //from v2.1.40 added 8.7.2018 'editorConvNeedUpload' : 'After conversion, you must be upload with the item URL or a downloaded file to save the converted file.', //from v2.1.40 added 8.7.2018 'convertOn' : 'Convert on the site of $1', // from v2.1.40 added 10.7.2018 'integrations' : 'Integrations', // from v2.1.40 added 11.7.2018 'integrationWith' : 'This elFinder has the following external services integrated. Please check the terms of use, privacy policy, etc. before using it.', // from v2.1.40 added 11.7.2018 'showHidden' : 'Show hidden items', // from v2.1.41 added 24.7.2018 'hideHidden' : 'Hide hidden items', // from v2.1.41 added 24.7.2018 'toggleHidden' : 'Show/Hide hidden items', // from v2.1.41 added 24.7.2018 'makefileTypes' : 'File types to enable with "New file"', // from v2.1.41 added 7.8.2018 'typeOfTextfile' : 'Type of the Text file', // from v2.1.41 added 7.8.2018 'add' : 'Add', // from v2.1.41 added 7.8.2018 'theme' : 'Theme', // from v2.1.43 added 19.10.2018 'default' : 'Default', // from v2.1.43 added 19.10.2018 'description' : 'Description', // from v2.1.43 added 19.10.2018 'website' : 'Website', // from v2.1.43 added 19.10.2018 'author' : 'Author', // from v2.1.43 added 19.10.2018 'email' : 'Email', // from v2.1.43 added 19.10.2018 'license' : 'License', // from v2.1.43 added 19.10.2018 'exportToSave' : 'This item can\'t be saved. To avoid losing the edits you need to export to your PC.', // from v2.1.44 added 1.12.2018 'dblclickToSelect': 'Double click on the file to select it.', // from v2.1.47 added 22.1.2019 'useFullscreen' : 'Use fullscreen mode', // from v2.1.47 added 19.2.2019 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Inconnu', 'kindRoot' : 'Volume principal', // from v2.1.16 added 16.10.2016 'kindFolder' : 'Dossier', 'kindSelects' : 'Sélections', // from v2.1.29 added 29.8.2017 'kindAlias' : 'Raccourci', 'kindAliasBroken' : 'Raccourci cassé', // applications 'kindApp' : 'Application', 'kindPostscript' : 'Document Postscript', 'kindMsOffice' : 'Document Microsoft Office', 'kindMsWord' : 'Document Microsoft Word', 'kindMsExcel' : 'Document Microsoft Excel', 'kindMsPP' : 'Présentation Microsoft PowerPoint', 'kindOO' : 'Document OpenOffice', 'kindAppFlash' : 'Application Flash', 'kindPDF' : 'Portable Document Format (PDF)', 'kindTorrent' : 'Fichier BitTorrent', 'kind7z' : 'Archive 7z', 'kindTAR' : 'Archive TAR', 'kindGZIP' : 'Archive GZIP', 'kindBZIP' : 'Archive BZIP', 'kindXZ' : 'Archive XZ', 'kindZIP' : 'Archive ZIP', 'kindRAR' : 'Archive RAR', 'kindJAR' : 'Fichier Java JAR', 'kindTTF' : 'Police True Type', 'kindOTF' : 'Police Open Type', 'kindRPM' : 'Package RPM', // texts 'kindText' : 'Document Text', 'kindTextPlain' : 'Texte non formaté', 'kindPHP' : 'Source PHP', 'kindCSS' : 'Feuille de style en cascade', 'kindHTML' : 'Document HTML', 'kindJS' : 'Source JavaScript', 'kindRTF' : 'Format de texte enrichi (Rich Text Format)', 'kindC' : 'Source C', 'kindCHeader' : 'Source header C', 'kindCPP' : 'Source C++', 'kindCPPHeader' : 'Source header C++', 'kindShell' : 'Shell script Unix', 'kindPython' : 'Source Python', 'kindJava' : 'Source Java', 'kindRuby' : 'Source Ruby', 'kindPerl' : 'Script Perl', 'kindSQL' : 'Source SQL', 'kindXML' : 'Document XML', 'kindAWK' : 'Source AWK', 'kindCSV' : 'CSV', 'kindDOCBOOK' : 'Document Docbook XML', 'kindMarkdown' : 'Markdown text', // added 20.7.2015 // images 'kindImage' : 'Image', 'kindBMP' : 'Image BMP', 'kindJPEG' : 'Image JPEG', 'kindGIF' : 'Image GIF', 'kindPNG' : 'Image PNG', 'kindTIFF' : 'Image TIFF', 'kindTGA' : 'Image TGA', 'kindPSD' : 'Image Adobe Photoshop', 'kindXBITMAP' : 'Image X bitmap', 'kindPXM' : 'Image Pixelmator', // media 'kindAudio' : 'Son', 'kindAudioMPEG' : 'Son MPEG', 'kindAudioMPEG4' : 'Son MPEG-4', 'kindAudioMIDI' : 'Son MIDI', 'kindAudioOGG' : 'Son Ogg Vorbis', 'kindAudioWAV' : 'Son WAV', 'AudioPlaylist' : 'Liste de lecture audio', 'kindVideo' : 'Vidéo', 'kindVideoDV' : 'Vidéo DV', 'kindVideoMPEG' : 'Vidéo MPEG', 'kindVideoMPEG4' : 'Vidéo MPEG-4', 'kindVideoAVI' : 'Vidéo AVI', 'kindVideoMOV' : 'Vidéo Quick Time', 'kindVideoWM' : 'Vidéo Windows Media', 'kindVideoFlash' : 'Vidéo Flash', 'kindVideoMKV' : 'Vidéo Matroska', 'kindVideoOGG' : 'Vidéo Ogg' } }; })); plugins/file-manager-advanced/application/library/js/i18n/elfinder.fr.js000064400000106105147176754550022245 0ustar00/** * française translation * @author Régis Guyomarch * @author Benoit Delachaux * @author Jonathan Grunder * @version 2023-04-16 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.fr = { translator : 'Régis Guyomarch <regisg@gmail.com>, Benoit Delachaux <benorde33@gmail.com>, Jonathan Grunder <jonathan.grunder@gmail.com>', language : 'française', direction : 'ltr', dateFormat : 'd/M/Y H:i', // will show like: 16/Avr/2023 12:36 fancyDateFormat : '$1 H:i', // will show like: Aujourd'hui 12:36 nonameDateFormat : 'ymd-His', // noname upload will show like: 230416-123657 messages : { /********************************** errors **********************************/ 'error' : 'Erreur', 'errUnknown' : 'Erreur inconnue.', 'errUnknownCmd' : 'Commande inconnue.', 'errJqui' : 'Mauvaise configuration de jQuery UI. Les composants Selectable, draggable et droppable doivent être inclus.', 'errNode' : 'elFinder requiert que l\'élément DOM ait été créé.', 'errURL' : 'Mauvaise configuration d\'elFinder ! L\'option URL n\'a pas été définie.', 'errAccess' : 'Accès refusé.', 'errConnect' : 'Impossible de se connecter au backend.', 'errAbort' : 'Connexion interrompue.', 'errTimeout' : 'Délai de connexion dépassé.', 'errNotFound' : 'Backend non trouvé.', 'errResponse' : 'Mauvaise réponse du backend.', 'errConf' : 'Mauvaise configuration du backend.', 'errJSON' : 'Le module PHP JSON n\'est pas installé.', 'errNoVolumes' : 'Aucun volume lisible.', 'errCmdParams' : 'Mauvais paramétrage de la commande "$1".', 'errDataNotJSON' : 'Les données ne sont pas au format JSON.', 'errDataEmpty' : 'Données inexistantes.', 'errCmdReq' : 'La requête au Backend doit comporter le nom de la commande.', 'errOpen' : 'Impossible d\'ouvrir "$1".', 'errNotFolder' : 'Cet objet n\'est pas un dossier.', 'errNotFile' : 'Cet objet n\'est pas un fichier.', 'errRead' : 'Impossible de lire "$1".', 'errWrite' : 'Impossible d\'écrire dans "$1".', 'errPerm' : 'Permission refusée.', 'errLocked' : '"$1" est verrouillé et ne peut être déplacé ou supprimé.', 'errExists' : 'Un élément nommé "$1" existe déjà.', 'errInvName' : 'Nom de fichier incorrect.', 'errInvDirname' : 'Nom de dossier incorrect.', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : 'Dossier non trouvé.', 'errFileNotFound' : 'Fichier non trouvé.', 'errTrgFolderNotFound' : 'Dossier destination "$1" non trouvé.', 'errPopup' : 'Le navigateur web a empêché l\'ouverture d\'une fenêtre "popup". Pour ouvrir le fichier, modifiez les options du navigateur web.', 'errMkdir' : 'Impossible de créer le dossier "$1".', 'errMkfile' : 'Impossible de créer le fichier "$1".', 'errRename' : 'Impossible de renommer "$1".', 'errCopyFrom' : 'Interdiction de copier des fichiers depuis le volume "$1".', 'errCopyTo' : 'Interdiction de copier des fichiers vers le volume "$1".', 'errMkOutLink' : 'Impossible de créer un lien en dehors du volume principal.', // from v2.1 added 03.10.2015 'errUpload' : 'Erreur lors de l\'envoi du fichier.', // old name - errUploadCommon 'errUploadFile' : 'Impossible d\'envoyer "$1".', // old name - errUpload 'errUploadNoFiles' : 'Aucun fichier à envoyer.', 'errUploadTotalSize' : 'Les données dépassent la taille maximale allouée.', // old name - errMaxSize 'errUploadFileSize' : 'Le fichier dépasse la taille maximale allouée.', // old name - errFileMaxSize 'errUploadMime' : 'Type de fichier non autorisé.', 'errUploadTransfer' : '"$1" erreur de transfert.', 'errUploadTemp' : 'Impossible de créer un fichier temporaire pour transférer les fichiers.', // from v2.1 added 26.09.2015 'errNotReplace' : 'L\'objet "$1" existe déjà à cet endroit et ne peut être remplacé par un objet d\'un type différent.', // new 'errReplace' : 'Impossible de remplacer "$1".', 'errSave' : 'Impossible de sauvegarder "$1".', 'errCopy' : 'Impossible de copier "$1".', 'errMove' : 'Impossible de déplacer "$1".', 'errCopyInItself' : 'Impossible de copier "$1" sur lui-même.', 'errRm' : 'Impossible de supprimer "$1".', 'errTrash' : 'Impossible de déplacer dans la corbeille', // from v2.1.24 added 30.4.2017 'errRmSrc' : 'Impossible de supprimer le(s) fichier(s) source(s).', 'errExtract' : 'Imbossible d\'extraire les fichiers à partir de "$1".', 'errArchive' : 'Impossible de créer l\'archive.', 'errArcType' : 'Type d\'archive non supporté.', 'errNoArchive' : 'Le fichier n\'est pas une archive, ou c\'est un type d\'archive non supporté.', 'errCmdNoSupport' : 'Le Backend ne prend pas en charge cette commande.', 'errReplByChild' : 'Le dossier “$1” ne peut pas être remplacé par un élément qu\'il contient.', 'errArcSymlinks' : 'Par mesure de sécurité, il est défendu d\'extraire une archive contenant des liens symboliques ou des noms de fichier non autorisés.', // edited 24.06.2012 'errArcMaxSize' : 'Les fichiers de l\'archive excèdent la taille maximale autorisée.', 'errResize' : 'Impossible de redimensionner "$1".', 'errResizeDegree' : 'Degré de rotation invalide.', // added 7.3.2013 'errResizeRotate' : 'L\'image ne peut pas être tournée.', // added 7.3.2013 'errResizeSize' : 'Dimension de l\'image non-valide.', // added 7.3.2013 'errResizeNoChange' : 'L\'image n\'est pas redimensionnable.', // added 7.3.2013 'errUsupportType' : 'Type de fichier non supporté.', 'errNotUTF8Content' : 'Le fichier "$1" n\'est pas en UTF-8, il ne peut être édité.', // added 9.11.2011 'errNetMount' : 'Impossible de monter "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'Protocole non supporté.', // added 17.04.2012 'errNetMountFailed' : 'Echec du montage.', // added 17.04.2012 'errNetMountHostReq' : 'Hôte requis.', // added 18.04.2012 'errSessionExpires' : 'Votre session a expiré en raison de son inactivité.', 'errCreatingTempDir' : 'Impossible de créer le répertoire temporaire : "$1"', 'errFtpDownloadFile' : 'Impossible de télécharger le file depuis l\'accès FTP : "$1"', 'errFtpUploadFile' : 'Impossible d\'envoyer le fichier vers l\'accès FTP : "$1"', 'errFtpMkdir' : 'Impossible de créer un répertoire distant sur l\'accès FTP :"$1"', 'errArchiveExec' : 'Erreur lors de l\'archivage des fichiers : "$1"', 'errExtractExec' : 'Erreur lors de l\'extraction des fichiers : "$1"', 'errNetUnMount' : 'Impossible de démonter.', // from v2.1 added 30.04.2012 'errConvUTF8' : 'Conversion en UTF-8 impossible', // from v2.1 added 08.04.2014 'errFolderUpload' : 'Essayez Google Chrome, si voulez envoyer le dossier.', // from v2.1 added 26.6.2015 'errSearchTimeout' : 'Délai d’attente dépassé pour la recherche "$1". Le résultat de la recherche est partiel.', // from v2.1 added 12.1.2016 'errReauthRequire' : 'Réauthorisation requise.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'Le nombre maximal d\'éléments pouvant être sélectionnés est $1.', // from v2.1.17 added 17.10.2016 'errRestore' : 'Impossible de restaurer la corbeille. La destination de la restauration n\'a pu être identifiée.', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'Aucun éditeur n\'a été trouvé pour ce type de fichier.', // from v2.1.25 added 23.5.2017 'errServerError' : 'Une erreur est survenue du côté serveur.', // from v2.1.25 added 16.6.2017 'errEmpty' : 'Impossible de vider le dossier "$1".', // from v2.1.25 added 22.6.2017 'moreErrors' : 'Il y a encore $1 erreur(s).', // from v2.1.44 added 9.12.2018 'errMaxMkdirs' : 'Vous ne pouvez créer que $1 dossier au même moment.', // from v2.1.58 added 20.6.2021 /******************************* commands names ********************************/ 'cmdarchive' : 'Créer une archive', 'cmdback' : 'Précédent', 'cmdcopy' : 'Copier', 'cmdcut' : 'Couper', 'cmddownload' : 'Télécharger', 'cmdduplicate' : 'Dupliquer', 'cmdedit' : 'Éditer le fichier', 'cmdextract' : 'Extraire les fichiers de l\'archive', 'cmdforward' : 'Suivant', 'cmdgetfile' : 'Sélectionner les fichiers', 'cmdhelp' : 'À propos de ce logiciel', 'cmdhome' : 'Accueil', 'cmdinfo' : 'Informations', 'cmdmkdir' : 'Nouveau dossier', 'cmdmkdirin' : 'Dans un nouveau dossier', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'Nouveau fichier', 'cmdopen' : 'Ouvrir', 'cmdpaste' : 'Coller', 'cmdquicklook' : 'Prévisualiser', 'cmdreload' : 'Actualiser', 'cmdrename' : 'Renommer', 'cmdrm' : 'Supprimer', 'cmdtrash' : 'À la corbeille', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'Restaurer', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'Trouver les fichiers', 'cmdup' : 'Remonter au dossier parent', 'cmdupload' : 'Envoyer les fichiers', 'cmdview' : 'Vue', 'cmdresize' : 'Redimensionner l\'image', 'cmdsort' : 'Trier', 'cmdnetmount' : 'Monter un volume réseau', // added 18.04.2012 'cmdnetunmount': 'Démonter', // from v2.1 added 30.04.2012 'cmdplaces' : 'Vers Favoris', // added 28.12.2014 'cmdchmod' : 'Changer de mode', // from v2.1 added 20.6.2015 'cmdopendir' : 'Ouvrir un dossier', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'Réinitialiser largeur colone', // from v2.1.13 added 12.06.2016 'cmdfullscreen': 'Plein écran', // from v2.1.15 added 03.08.2016 'cmdmove' : 'Déplacer', // from v2.1.15 added 21.08.2016 'cmdempty' : 'Vider le dossier', // from v2.1.25 added 22.06.2017 'cmdundo' : 'Annuler', // from v2.1.27 added 31.07.2017 'cmdredo' : 'Refaire', // from v2.1.27 added 31.07.2017 'cmdpreference': 'Préférences', // from v2.1.27 added 03.08.2017 'cmdselectall' : 'Tout sélectionner', // from v2.1.28 added 15.08.2017 'cmdselectnone': 'Tout désélectionner', // from v2.1.28 added 15.08.2017 'cmdselectinvert': 'Inverser la sélection', // from v2.1.28 added 15.08.2017 'cmdopennew' : 'Ouvrir dans une nouvelle fenêtre', // from v2.1.38 added 3.4.2018 'cmdhide' : 'Cacher (Préférence)', // from v2.1.41 added 24.7.2018 /*********************************** buttons ***********************************/ 'btnClose' : 'Fermer', 'btnSave' : 'Enregistrer', 'btnRm' : 'Supprimer', 'btnApply' : 'Appliquer', 'btnCancel' : 'Annuler', 'btnNo' : 'Non', 'btnYes' : 'Oui', 'btnMount' : 'Monter', // added 18.04.2012 'btnApprove': 'Aller à $1 & approuver', // from v2.1 added 26.04.2012 'btnUnmount': 'Démonter', // from v2.1 added 30.04.2012 'btnConv' : 'Convertir', // from v2.1 added 08.04.2014 'btnCwd' : 'Ici', // from v2.1 added 22.5.2015 'btnVolume' : 'Volume', // from v2.1 added 22.5.2015 'btnAll' : 'Tous', // from v2.1 added 22.5.2015 'btnMime' : 'Type MIME', // from v2.1 added 22.5.2015 'btnFileName':'Nom du fichier', // from v2.1 added 22.5.2015 'btnSaveClose': 'Sauvegarder & Fermer', // from v2.1 added 12.6.2015 'btnBackup' : 'Sauvegarde', // fromv2.1 added 28.11.2015 'btnRename' : 'Renommer', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'Renommer (tous)', // from v2.1.24 added 6.4.2017 'btnPrevious' : 'Préc. ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : 'Suiv. ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : 'Sauvegarder sous', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'Ouvrir le dossier', 'ntffile' : 'Ouvrir le fichier', 'ntfreload' : 'Actualiser le contenu du dossier', 'ntfmkdir' : 'Création du dossier', 'ntfmkfile' : 'Création des fichiers', 'ntfrm' : 'Supprimer les éléments', 'ntfcopy' : 'Copier les éléments', 'ntfmove' : 'Déplacer les éléments', 'ntfprepare' : 'Préparation de la copie des éléments', 'ntfrename' : 'Renommer les fichiers', 'ntfupload' : 'Envoi des fichiers', 'ntfdownload' : 'Téléchargement des fichiers', 'ntfsave' : 'Sauvegarder les fichiers', 'ntfarchive' : 'Création de l\'archive', 'ntfextract' : 'Extraction des fichiers de l\'archive', 'ntfsearch' : 'Recherche des fichiers', 'ntfresize' : 'Redimensionner les images', 'ntfsmth' : 'Fait quelque chose', 'ntfloadimg' : 'Chargement de l\'image', 'ntfnetmount' : 'Monte le volume réseau', // added 18.04.2012 'ntfnetunmount': 'Démonte le volume réseau', // from v2.1 added 30.04.2012 'ntfdim' : 'Calcule la dimension de l\'image', // added 20.05.2013 'ntfreaddir' : 'Lecture des informations du dossier', // from v2.1 added 01.07.2013 'ntfurl' : 'Récupération de l’URL du lien', // from v2.1 added 11.03.2014 'ntfchmod' : 'Changement de mode', // from v2.1 added 20.6.2015 'ntfpreupload': 'Vérification du nom du fichier envoyé', // from v2.1 added 31.11.2015 'ntfzipdl' : 'Création d’un fichier pour le téléchargement', // from v2.1.7 added 23.1.2016 'ntfparents' : 'Traitement de l\'information du chemin', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'Traitement du fichier envoyé', // from v2.1.17 added 2.11.2016 'ntftrash' : 'Mettre à la corbeille', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'Restaurer depuis la corbeille', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'Validation du dossier de destination', // from v2.1.24 added 3.5.2017 'ntfundo' : 'Annuler l\'opération précédente', // from v2.1.27 added 31.07.2017 'ntfredo' : 'Refaire l\'opération annulée', // from v2.1.27 added 31.07.2017 'ntfchkcontent' : 'Vérification du contenu', // from v2.1.41 added 3.8.2018 /*********************************** volumes *********************************/ 'volume_Trash' : 'Corbeille', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : 'Inconnue', 'Today' : 'Aujourd\'hui', 'Yesterday' : 'Hier', 'msJan' : 'Jan', 'msFeb' : 'Fév', 'msMar' : 'Mar', 'msApr' : 'Avr', 'msMay' : 'Mai', 'msJun' : 'Jun', 'msJul' : 'Jul', 'msAug' : 'Aoû', 'msSep' : 'Sep', 'msOct' : 'Oct', 'msNov' : 'Nov', 'msDec' : 'Déc', 'January' : 'Janvier', 'February' : 'Février', 'March' : 'Mars', 'April' : 'Avril', 'May' : 'Mai', 'June' : 'Juin', 'July' : 'Juillet', 'August' : 'Août', 'September' : 'Septembre', 'October' : 'Octobre', 'November' : 'Novembre', 'December' : 'Décembre', 'Sunday' : 'Dimanche', 'Monday' : 'Lundi', 'Tuesday' : 'Mardi', 'Wednesday' : 'Mercredi', 'Thursday' : 'Jeudi', 'Friday' : 'Vendredi', 'Saturday' : 'Samedi', 'Sun' : 'Dim', 'Mon' : 'Lun', 'Tue' : 'Mar', 'Wed' : 'Mer', 'Thu' : 'Jeu', 'Fri' : 'Ven', 'Sat' : 'Sam', /******************************** sort variants ********************************/ 'sortname' : 'par nom', 'sortkind' : 'par type', 'sortsize' : 'par taille', 'sortdate' : 'par date', 'sortFoldersFirst' : 'Dossiers en premier', 'sortperm' : 'par permission', // from v2.1.13 added 13.06.2016 'sortmode' : 'par mode', // from v2.1.13 added 13.06.2016 'sortowner' : 'par propriétaire', // from v2.1.13 added 13.06.2016 'sortgroup' : 'par groupe', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'Egalement arborescence', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : 'NouveauFichier.txt', // added 10.11.2015 'untitled folder' : 'NouveauDossier', // added 10.11.2015 'Archive' : 'NouvelleArchive', // from v2.1 added 10.11.2015 'untitled file' : 'NewFile.$1', // from v2.1.41 added 6.8.2018 'extentionfile' : '$1: Fichier', // from v2.1.41 added 6.8.2018 'extentiontype' : '$1: $2', // from v2.1.43 added 17.10.2018 /********************************** messages **********************************/ 'confirmReq' : 'Confirmation requise', 'confirmRm' : 'Êtes-vous certain de vouloir supprimer les éléments ?
                Cela ne peut être annulé !', 'confirmRepl' : 'Remplacer l\'ancien fichier par le nouveau ?', 'confirmRest' : 'Remplacer l\'élément existant par l\'élément de la corbeille ?', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'L\'encodage n\'est pas UTf-8
                Convertir en UTF-8 ?
                Les contenus deviendront UTF-8 en sauvegardant après la conversion.', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'Impossible de détecter l\'encodage de ce fichier. Pour être modifié, il doit être temporairement convertit en UTF-8.
                Veuillez s\'il vous plaît sélectionner un encodage pour ce fichier.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : 'Ce fichier a été modifié.
                Les données seront perdues si les changements ne sont pas sauvegardés.', // from v2.1 added 15.7.2015 'confirmTrash' : 'Êtes-vous certain de vouloir déplacer les éléments vers la corbeille?', //from v2.1.24 added 29.4.2017 'confirmMove' : 'Etes-vous sûr de vouloir déplacer ces éléments vers "$1"?', //from v2.1.50 added 27.7.2019 'apllyAll' : 'Appliquer à tous', 'name' : 'Nom', 'size' : 'Taille', 'perms' : 'Permissions', 'modify' : 'Modifié', 'kind' : 'Type', 'read' : 'Lecture', 'write' : 'Écriture', 'noaccess' : 'Pas d\'accès', 'and' : 'et', 'unknown' : 'inconnu', 'selectall' : 'Sélectionner tous les éléments', 'selectfiles' : 'Sélectionner le(s) élément(s)', 'selectffile' : 'Sélectionner le premier élément', 'selectlfile' : 'Sélectionner le dernier élément', 'viewlist' : 'Vue par liste', 'viewicons' : 'Vue par icônes', 'viewSmall' : 'Petites icônes', // from v2.1.39 added 22.5.2018 'viewMedium' : 'Moyennes icônes', // from v2.1.39 added 22.5.2018 'viewLarge' : 'Grandes icônes', // from v2.1.39 added 22.5.2018 'viewExtraLarge' : 'Très grandes icônes', // from v2.1.39 added 22.5.2018 'places' : 'Favoris', 'calc' : 'Calculer', 'path' : 'Chemin', 'aliasfor' : 'Raccourcis pour', 'locked' : 'Verrouiller', 'dim' : 'Dimensions', 'files' : 'Fichiers', 'folders' : 'Dossiers', 'items' : 'Éléments', 'yes' : 'oui', 'no' : 'non', 'link' : 'Lien', 'searcresult' : 'Résultats de la recherche', 'selected' : 'Éléments sélectionnés', 'about' : 'À propos', 'shortcuts' : 'Raccourcis', 'help' : 'Aide', 'webfm' : 'Gestionnaire de fichier Web', 'ver' : 'Version', 'protocolver' : 'Version du protocole', 'homepage' : 'Page du projet', 'docs' : 'Documentation', 'github' : 'Forkez-nous sur Github', 'twitter' : 'Suivez nous sur Twitter', 'facebook' : 'Joignez-nous sur Facebook', 'team' : 'Équipe', 'chiefdev' : 'Développeur en chef', 'developer' : 'Développeur', 'contributor' : 'Contributeur', 'maintainer' : 'Mainteneur', 'translator' : 'Traducteur', 'icons' : 'Icônes', 'dontforget' : 'et n\'oubliez pas votre serviette', 'shortcutsof' : 'Raccourcis désactivés', 'dropFiles' : 'Déposez les fichiers ici', 'or' : 'ou', 'selectForUpload' : 'Sélectionner les fichiers à envoyer', 'moveFiles' : 'Déplacer les éléments', 'copyFiles' : 'Copier les éléments', 'restoreFiles' : 'Restaurer les éléments', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'Retirer des favoris', 'aspectRatio' : 'Ratio d’affichage', 'scale' : 'Mise à l\'échelle', 'width' : 'Largeur', 'height' : 'Hauteur', 'resize' : 'Redimensionner', 'crop' : 'Recadrer', 'rotate' : 'Rotation', 'rotate-cw' : 'Rotation de 90 degrés horaire', 'rotate-ccw' : 'Rotation de 90 degrés antihoraire', 'degree' : '°', 'netMountDialogTitle' : 'Monter un volume réseau', // added 18.04.2012 'protocol' : 'Protocole', // added 18.04.2012 'host' : 'Hôte', // added 18.04.2012 'port' : 'Port', // added 18.04.2012 'user' : 'Utilisateur', // added 18.04.2012 'pass' : 'Mot de passe', // added 18.04.2012 'confirmUnmount' : 'Démonter $1?', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'Glissez-déposez depuis le navigateur de fichier', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'Glissez-déposez les fichiers ici', // from v2.1 added 07.04.2014 'encoding' : 'Encodage', // from v2.1 added 19.12.2014 'locale' : 'Encodage régional', // from v2.1 added 19.12.2014 'searchTarget' : 'Destination: $1', // from v2.1 added 22.5.2015 'searchMime' : 'Recherche par type MIME', // from v2.1 added 22.5.2015 'owner' : 'Propriétaire', // from v2.1 added 20.6.2015 'group' : 'Groupe', // from v2.1 added 20.6.2015 'other' : 'Autre', // from v2.1 added 20.6.2015 'execute' : 'Exécuter', // from v2.1 added 20.6.2015 'perm' : 'Permission', // from v2.1 added 20.6.2015 'mode' : 'Mode', // from v2.1 added 20.6.2015 'emptyFolder' : 'Le dossier est vide', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'Le dossier est vide.\\ Glissez-déposez pour ajouter des éléments.', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'Le dossier est vide.\\ Appuyez longuement pour ajouter des éléments.', // from v2.1.6 added 30.12.2015 'quality' : 'Qualité', // from v2.1.6 added 5.1.2016 'autoSync' : 'Synchronisation automatique', // from v2.1.6 added 10.1.2016 'moveUp' : 'Déplacer vers le haut', // from v2.1.6 added 18.1.2016 'getLink' : 'Obtenir le lien d’URL', // from v2.1.7 added 9.2.2016 'selectedItems' : 'Éléments sélectionnés ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'ID du dossier', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'Permettre l\'accès hors-ligne', // from v2.1.10 added 3.25.2016 'reAuth' : 'Pour se réauthentifier', // from v2.1.10 added 3.25.2016 'nowLoading' : 'En cours de chargement...', // from v2.1.12 added 4.26.2016 'openMulti' : 'Ouvrir multiples fichiers', // from v2.1.12 added 5.14.2016 'openMultiConfirm': 'Vous allez ouvrir $1 fichiers. Êtes-vous sûr de vouloir les ouvrir dans le navigateur ?', // from v2.1.12 added 5.14.2016 'emptySearch' : 'Aucun résultat trouvé avec les paramètres de recherche.', // from v2.1.12 added 5.16.2016 'editingFile' : 'Modification d\'un fichier.', // from v2.1.13 added 6.3.2016 'hasSelected' : 'Vous avez sélectionné $1 éléments.', // from v2.1.13 added 6.3.2016 'hasClipboard' : 'Vous avez $1 éléments dans le presse-papier.', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'Recherche incrémentale disponible uniquement pour la vue active.', // from v2.1.13 added 6.30.2016 'reinstate' : 'Rétablir', // from v2.1.15 added 3.8.2016 'complete' : '$1 complété', // from v2.1.15 added 21.8.2016 'contextmenu' : 'Menu contextuel', // from v2.1.15 added 9.9.2016 'pageTurning' : 'Tourner la page', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'Volumes principaux', // from v2.1.16 added 16.9.2016 'reset' : 'Réinitialiser', // from v2.1.16 added 1.10.2016 'bgcolor' : 'Couleur de fond', // from v2.1.16 added 1.10.2016 'colorPicker' : 'Sélecteur de couleur', // from v2.1.16 added 1.10.2016 '8pxgrid' : 'Grille 8px', // from v2.1.16 added 4.10.2016 'enabled' : 'Actif', // from v2.1.16 added 4.10.2016 'disabled' : 'Inactif', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'Aucun résultat trouvé.\\Appuyez sur [Entrée] pour développer la cible de recherche.', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'Aucun résultat trouvé pour la recherche par première lettre.', // from v2.1.23 added 24.3.2017 'textLabel' : 'Label texte', // from v2.1.17 added 13.10.2016 'minsLeft' : '$1 mins restantes', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'Réouvrir avec l\'encodage sélectionné', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'Sauvegarder avec l\'encodage sélectionné', // from v2.1.19 added 2.12.2016 'selectFolder' : 'Choisir le dossier', // from v2.1.20 added 13.12.2016 'firstLetterSearch': 'Recherche par première lettre', // from v2.1.23 added 24.3.2017 'presets' : 'Présélections', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : 'Impossible de mettre autant d\'éléments à la corbeille.', // from v2.1.25 added 9.6.2017 'TextArea' : 'Zone de texte', // from v2.1.25 added 14.6.2017 'folderToEmpty' : 'Vider le dossier "$1".', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : 'Il n\'y a pas d\'élément dans le dossier "$1".', // from v2.1.25 added 22.6.2017 'preference' : 'Préférences', // from v2.1.26 added 28.6.2017 'language' : 'Configuration de langue', // from v2.1.26 added 28.6.2017 'clearBrowserData': 'Initialisation des configurations sauvegardées dans ce navigateur', // from v2.1.26 added 28.6.2017 'toolbarPref' : 'Paramètres de la barre d\'outils', // from v2.1.27 added 2.8.2017 'charsLeft' : '... $1 caractère(s) restant(s).', // from v2.1.29 added 30.8.2017 'linesLeft' : '... $1 ligne(s) restante(s).', // from v2.1.52 added 16.1.2020 'sum' : 'Somme', // from v2.1.29 added 28.9.2017 'roughFileSize' : 'Taille de fichier brute', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : 'Concentrez-vous sur l\'élément de dialogue avec le survol de la souris', // from v2.1.30 added 2.11.2017 'select' : 'Sélectionner', // from v2.1.30 added 23.11.2017 'selectAction' : 'Action lors de la sélection d\'un fichier', // from v2.1.30 added 23.11.2017 'useStoredEditor' : 'Ouvrir avec le dernier éditeur utilisé', // from v2.1.30 added 23.11.2017 'selectinvert' : 'Inverser la sélection', // from v2.1.30 added 25.11.2017 'renameMultiple' : 'Êtes-vous sûr de vouloir renommer les éléments sélectionnés $1 en $2 ?
                L\'action est définitive !', // from v2.1.31 added 4.12.2017 'batchRename' : 'Renommer le Batch', // from v2.1.31 added 8.12.2017 'plusNumber' : '+ Nombre', // from v2.1.31 added 8.12.2017 'asPrefix' : 'Ajouter un préfixe', // from v2.1.31 added 8.12.2017 'asSuffix' : 'Ajouter un suffixe', // from v2.1.31 added 8.12.2017 'changeExtention' : 'Modifier l\'extention', // from v2.1.31 added 8.12.2017 'columnPref' : 'Paramètres des colonnes (List view)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : 'Les changements seront immédiatement appliqués à l\'archive.', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : 'Aucun changement ne sera appliqué tant que ce volume n\'a pas été démonté.', // from v2.1.33 added 2.3.2018 'unmountChildren' : 'Le(s) volume(s) suivant(s) montés sur ce volume seront également démontés. Êtes-vous sûr de vouloir le démonter ?', // from v2.1.33 added 5.3.2018 'selectionInfo' : 'Informations sur la sélection', // from v2.1.33 added 7.3.2018 'hashChecker' : 'Algorithme de hachage de fichier', // from v2.1.33 added 10.3.2018 'infoItems' : 'Éléments d\'information (panneau de sélection d\'informations )', // from v2.1.38 added 28.3.2018 'pressAgainToExit': 'Appuyez à nouveau pour quitter.', // from v2.1.38 added 1.4.2018 'toolbar' : 'Barre d\'outils', // from v2.1.38 added 4.4.2018 'workspace' : 'Espace de travail', // from v2.1.38 added 4.4.2018 'dialog' : 'Dialogue', // from v2.1.38 added 4.4.2018 'all' : 'Tout', // from v2.1.38 added 4.4.2018 'iconSize' : 'Dimensions de l\'icône (Aperçu)', // from v2.1.39 added 7.5.2018 'editorMaximized' : 'Ouvrir la fenêtre d\'édition à la taille maximale', // from v2.1.40 added 30.6.2018 'editorConvNoApi' : 'Étant donné que la conversion par API n\'est pas disponible actuellement, veuillez effectuer la conversion sur le site Web.', //from v2.1.40 added 8.7.2018 'editorConvNeedUpload' : 'Après la conversion, vous devez ajouter l\'URL de l\'élément ou un fichier téléchargé pour enregistrer le fichier converti.', //from v2.1.40 added 8.7.2018 'convertOn' : 'Convertir sur le site de $1', // from v2.1.40 added 10.7.2018 'integrations' : 'Intégrations', // from v2.1.40 added 11.7.2018 'integrationWith' : 'Cet elFinder intègre les services externes suivants. Veuillez vérifier les conditions d\'utilisation, la politique de confidentialité, etc. avant de l\'utiliser.', // from v2.1.40 added 11.7.2018 'showHidden' : 'Afficher les élément cachés', // from v2.1.41 added 24.7.2018 'hideHidden' : 'Ne pas afficher les élément cachés', // from v2.1.41 added 24.7.2018 'toggleHidden' : 'Afficher/Cacher les éléments cachés', // from v2.1.41 added 24.7.2018 'makefileTypes' : 'Type de ficher autorisé avec "Nouveau fichier"', // from v2.1.41 added 7.8.2018 'typeOfTextfile' : 'Type du fichier de texte', // from v2.1.41 added 7.8.2018 'add' : 'Ajouter', // from v2.1.41 added 7.8.2018 'theme' : 'Thème', // from v2.1.43 added 19.10.2018 'default' : 'Par Défaut', // from v2.1.43 added 19.10.2018 'description' : 'Description', // from v2.1.43 added 19.10.2018 'website' : 'Site Web', // from v2.1.43 added 19.10.2018 'author' : 'Aauteur', // from v2.1.43 added 19.10.2018 'email' : 'E-mail', // from v2.1.43 added 19.10.2018 'license' : 'License', // from v2.1.43 added 19.10.2018 'exportToSave' : 'Cet élément ne peut être enregistrer. Pour éviter de perdre les modifications, vous devez exporter vers votre ordinateur.', // from v2.1.44 added 1.12.2018 'dblclickToSelect': 'Double-cliquez sur le fichier pour le sélectionner.', // from v2.1.47 added 22.1.2019 'useFullscreen' : 'Utiliser le mode plein écran', // from v2.1.47 added 19.2.2019 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Inconnu', 'kindRoot' : 'Volume principal', // from v2.1.16 added 16.10.2016 'kindFolder' : 'Dossier', 'kindSelects' : 'Sélections', // from v2.1.29 added 29.8.2017 'kindAlias' : 'Raccourci', 'kindAliasBroken' : 'Raccourci cassé', // applications 'kindApp' : 'Application', 'kindPostscript' : 'Document Postscript', 'kindMsOffice' : 'Document Microsoft Office', 'kindMsWord' : 'Document Microsoft Word', 'kindMsExcel' : 'Document Microsoft Excel', 'kindMsPP' : 'Présentation Microsoft PowerPoint', 'kindOO' : 'Document OpenOffice', 'kindAppFlash' : 'Application Flash', 'kindPDF' : 'Format de document portable (PDF)', 'kindTorrent' : 'Fichier BitTorrent', 'kind7z' : 'Archive 7z', 'kindTAR' : 'Archive TAR', 'kindGZIP' : 'Archive GZIP', 'kindBZIP' : 'Archive BZIP', 'kindXZ' : 'Archive XZ', 'kindZIP' : 'Archive ZIP', 'kindRAR' : 'Archive RAR', 'kindJAR' : 'Fichier Java JAR', 'kindTTF' : 'Police True Type', 'kindOTF' : 'Police Open Type', 'kindRPM' : 'Package RPM', // texts 'kindText' : 'Document Text', 'kindTextPlain' : 'Texte non formaté', 'kindPHP' : 'Source PHP', 'kindCSS' : 'Feuille de style en cascade', 'kindHTML' : 'Document HTML', 'kindJS' : 'Source JavaScript', 'kindRTF' : 'Format de texte enrichi (Rich Text Format)', 'kindC' : 'Source C', 'kindCHeader' : 'Source header C', 'kindCPP' : 'Source C++', 'kindCPPHeader' : 'Source header C++', 'kindShell' : 'Shell script Unix', 'kindPython' : 'Source Python', 'kindJava' : 'Source Java', 'kindRuby' : 'Source Ruby', 'kindPerl' : 'Script Perl', 'kindSQL' : 'Source SQL', 'kindXML' : 'Document XML', 'kindAWK' : 'Source AWK', 'kindCSV' : 'CSV', 'kindDOCBOOK' : 'Document Docbook XML', 'kindMarkdown' : 'Markdown text', // added 20.7.2015 // images 'kindImage' : 'Image', 'kindBMP' : 'Image BMP', 'kindJPEG' : 'Image JPEG', 'kindGIF' : 'Image GIF', 'kindPNG' : 'Image PNG', 'kindTIFF' : 'Image TIFF', 'kindTGA' : 'Image TGA', 'kindPSD' : 'Image Adobe Photoshop', 'kindXBITMAP' : 'Image X bitmap', 'kindPXM' : 'Image Pixelmator', // media 'kindAudio' : 'Son', 'kindAudioMPEG' : 'Son MPEG', 'kindAudioMPEG4' : 'Son MPEG-4', 'kindAudioMIDI' : 'Son MIDI', 'kindAudioOGG' : 'Son Ogg Vorbis', 'kindAudioWAV' : 'Son WAV', 'AudioPlaylist' : 'Liste de lecture audio', 'kindVideo' : 'Vidéo', 'kindVideoDV' : 'Vidéo DV', 'kindVideoMPEG' : 'Vidéo MPEG', 'kindVideoMPEG4' : 'Vidéo MPEG-4', 'kindVideoAVI' : 'Vidéo AVI', 'kindVideoMOV' : 'Vidéo Quick Time', 'kindVideoWM' : 'Vidéo Windows Media', 'kindVideoFlash' : 'Vidéo Flash', 'kindVideoMKV' : 'Vidéo Matroska', 'kindVideoOGG' : 'Vidéo Ogg' } }; })); plugins/file-manager-advanced/application/library/js/i18n/elfinder.he.js000064400000045000147176754550022226 0ustar00/** * עברית translation * @author Yaron Shahrabani * @version 2015-11-02 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.he = { translator : 'Yaron Shahrabani ', language : 'עברית', direction : 'rtl', dateFormat : 'd.m.Y H:i', // Mar 13, 2012 05:27 PM fancyDateFormat : '$1 H:i', // will produce smth like: Today 12:25 PM messages : { /********************************** errors **********************************/ 'error' : 'שגיאה', 'errUnknown' : 'שגיאה בלתי מוכרת.', 'errUnknownCmd' : 'פקודה בלתי מוכרת.', 'errJqui' : 'תצורת ה־jQuery UI שגויה. יש לכלול רכיבים הניתנים לבחירה, גרירה והשלכה.', 'errNode' : 'elFinder דורש יצירה של רכיב DOM.', 'errURL' : 'התצורה של elFinder שגויה! אפשרות הכתובת (URL) לא הוגדרה.', 'errAccess' : 'הגישה נדחית.', 'errConnect' : 'לא ניתן להתחבר למנגנון.', 'errAbort' : 'החיבור בוטל.', 'errTimeout' : 'זמן החיבור פג.', 'errNotFound' : 'לא נמצא מנגנון.', 'errResponse' : 'תגובת המנגנון שגויה.', 'errConf' : 'תצורת המנגנון שגויה.', 'errJSON' : 'המודול PHP JSON לא מותקן.', 'errNoVolumes' : 'אין כוננים זמינים לקריאה.', 'errCmdParams' : 'פרמטרים שגויים לפקודה „$1“.', 'errDataNotJSON' : 'הנתונים אינם JSON.', 'errDataEmpty' : 'הנתונים ריקים.', 'errCmdReq' : 'בקשה למנגנון דורשת שם פקודה.', 'errOpen' : 'לא ניתן לפתוח את „$1“.', 'errNotFolder' : 'הפריט אינו תיקייה.', 'errNotFile' : 'הפריט אינו קובץ.', 'errRead' : 'לא ניתן לקרוא את „$1“.', 'errWrite' : 'לא ניתן לכתוב אל „$1“.', 'errPerm' : 'ההרשאה נדחתה.', 'errLocked' : '„$1“ נעול ואין אפשרות לשנות את שמו, להעבירו או להסירו.', 'errExists' : 'קובץ בשם „$1“ כבר קיים.', 'errInvName' : 'שם הקובץ שגוי.', 'errFolderNotFound' : 'התיקייה לא נמצאה.', 'errFileNotFound' : 'הקובץ לא נמצא.', 'errTrgFolderNotFound' : 'תיקיית היעד „$1“ לא נמצאה.', 'errPopup' : 'הדפדפן מנע פתיחת חלון קובץ. כדי לפתוח קובץ יש לאפשר זאת בהגדרות הדפדפן.', 'errMkdir' : 'לא ניתן ליצור את התיקייה „$1“.', 'errMkfile' : 'לא ניתן ליצור את הקובץ „$1“.', 'errRename' : 'לא ניתן לשנות את השם של „$1“.', 'errCopyFrom' : 'העתקת קבצים מהכונן „$1“ אינה מאופשרת.', 'errCopyTo' : 'העתקת קבצים אל הכונן „$1“ אינה מאופשרת.', 'errUpload' : 'שגיאת העלאה.', // old name - errUploadCommon 'errUploadFile' : 'לא ניתן להעלות את „$1“.', // old name - errUpload 'errUploadNoFiles' : 'לא נמצאו קבצים להעלאה.', 'errUploadTotalSize' : 'הנתונים חורגים מהגודל המרבי המותר.', // old name - errMaxSize 'errUploadFileSize' : 'הקובץ חורג מהגודל המרבי המותר.', // old name - errFileMaxSize 'errUploadMime' : 'סוג הקובץ אינו מורשה.', 'errUploadTransfer' : 'שגיאת העברה „$1“.', 'errNotReplace' : 'הפריט „$1“ כבר קיים במיקום זה ואי אפשר להחליפו בפריט מסוג אחר.', // new 'errReplace' : 'לא ניתן להחליף את „$1“.', 'errSave' : 'לא ניתן לשמור את „$1“.', 'errCopy' : 'לא ניתן להעתיק את „$1“.', 'errMove' : 'לא ניתן להעביר את „$1“.', 'errCopyInItself' : 'לא ניתן להעתיק את „$1“ לתוך עצמו.', 'errRm' : 'לא ניתן להסיר את „$1“.', 'errRmSrc' : 'לא ניתן להסיר את קובצי המקור.', 'errExtract' : 'לא ניתן לחלץ קבצים מהארכיון „$1“.', 'errArchive' : 'לא ניתן ליצור ארכיון.', 'errArcType' : 'סוג הארכיון אינו נתמך.', 'errNoArchive' : 'הקובץ אינו ארכיון או שסוג הקובץ שלו אינו נתמך.', 'errCmdNoSupport' : 'המנגנון אינו תומך בפקודה זו.', 'errReplByChild' : 'לא ניתן להחליף את התיקייה „$1“ בפריט מתוכה.', 'errArcSymlinks' : 'מטעמי אבטחה לא ניתן לחלץ ארכיונים שמכילים קישורים סימבוליים או קבצים עם שמות בלתי מורשים.', // edited 24.06.2012 'errArcMaxSize' : 'הארכיון חורג מהגודל המרבי המותר.', 'errResize' : 'לא ניתן לשנות את הגודל של „$1“.', 'errResizeDegree' : 'מעלות ההיפוך שגויות.', // added 7.3.2013 'errResizeRotate' : 'לא ניתן להפוך את התמונה.', // added 7.3.2013 'errResizeSize' : 'גודל התמונה שגוי.', // added 7.3.2013 'errResizeNoChange' : 'גודל התמונה לא השתנה.', // added 7.3.2013 'errUsupportType' : 'סוג הקובץ אינו נתמך.', 'errNotUTF8Content' : 'הקובץ „$1“ הוא לא בתסדיר UTF-8 ולא ניתן לערוך אותו.', // added 9.11.2011 'errNetMount' : 'לא ניתן לעגן את „$1“.', // added 17.04.2012 'errNetMountNoDriver' : 'פרוטוקול בלתי נתמך.', // added 17.04.2012 'errNetMountFailed' : 'העיגון נכשל.', // added 17.04.2012 'errNetMountHostReq' : 'נדרש מארח.', // added 18.04.2012 'errSessionExpires' : 'ההפעלה שלך פגה עקב חוסר פעילות.', 'errCreatingTempDir' : 'לא ניתן ליצור תיקייה זמנית: „$1“', 'errFtpDownloadFile' : 'לא ניתן להוריד קובץ מ־ FTP: „$1“', 'errFtpUploadFile' : 'לא ניתן להעלות קובץ ל־FTP: „$1“', 'errFtpMkdir' : 'לא ניתן ליצור תיקייה מרוחקת ב־FTP: „$1“', 'errArchiveExec' : 'שמירת הקבצים בארכיון נכשלה: „$1“', 'errExtractExec' : 'חילוץ קבצים נכשל: „$1“', /******************************* commands names ********************************/ 'cmdarchive' : 'יצירת ארכיון', 'cmdback' : 'חזרה', 'cmdcopy' : 'העתקה', 'cmdcut' : 'גזירה', 'cmddownload' : 'הורדה', 'cmdduplicate' : 'שכפול', 'cmdedit' : 'עריכת קובץ', 'cmdextract' : 'חילוץ קבצים מארכיון', 'cmdforward' : 'העברה', 'cmdgetfile' : 'בחירת קבצים', 'cmdhelp' : 'פרטים על התכנית הזו', 'cmdhome' : 'בית', 'cmdinfo' : 'קבלת מידע', 'cmdmkdir' : 'תיקייה חדשה', 'cmdmkfile' : 'קובץ חדש', 'cmdopen' : 'פתיחה', 'cmdpaste' : 'הדבקה', 'cmdquicklook' : 'תצוגה מקדימה', 'cmdreload' : 'רענון', 'cmdrename' : 'שינוי שם', 'cmdrm' : 'מחיקה', 'cmdsearch' : 'חיפוש קבצים', 'cmdup' : 'מעבר לתיקיית ההורה', 'cmdupload' : 'העלאת קבצים', 'cmdview' : 'תצוגה', 'cmdresize' : 'שינוי גודל והיפוך', 'cmdsort' : 'מיון', 'cmdnetmount' : 'עיגון כונן רשת', // added 18.04.2012 /*********************************** buttons ***********************************/ 'btnClose' : 'סגירה', 'btnSave' : 'שמירה', 'btnRm' : 'הסרה', 'btnApply' : 'החלה', 'btnCancel' : 'ביטול', 'btnNo' : 'לא', 'btnYes' : 'כן', 'btnMount' : 'עיגון', // added 18.04.2012 /******************************** notifications ********************************/ 'ntfopen' : 'פתיחת תיקייה', 'ntffile' : 'פתיחת קובץ', 'ntfreload' : 'רענון תוכן התיקייה', 'ntfmkdir' : 'תיקייה נוצרת', 'ntfmkfile' : 'קבצים נוצרים', 'ntfrm' : 'קבצים נמחקים', 'ntfcopy' : 'קבצים מועתקים', 'ntfmove' : 'קבצים מועברים', 'ntfprepare' : 'העתקת קבצים בהכנה', 'ntfrename' : 'שמות קבצים משתנים', 'ntfupload' : 'קבצים נשלחים', 'ntfdownload' : 'קבצים מתקבלים', 'ntfsave' : 'שמירת קבצים', 'ntfarchive' : 'ארכיון נוצר', 'ntfextract' : 'מחולצים קבצים מארכיון', 'ntfsearch' : 'קבצים בחיפוש', 'ntfresize' : 'גודל קבצים משתנה', 'ntfsmth' : 'מתבצעת פעולה', 'ntfloadimg' : 'נטענת תמונה', 'ntfnetmount' : 'כונן רשת מעוגן', // added 18.04.2012 'ntfdim' : 'ממדי תמונה מתקבלים', // added 20.05.2013 /************************************ dates **********************************/ 'dateUnknown' : 'לא ידוע', 'Today' : 'היום', 'Yesterday' : 'מחר', 'msJan' : 'ינו׳', 'msFeb' : 'פבר׳', 'msMar' : 'מרץ', 'msApr' : 'אפר׳', 'msMay' : 'מאי', 'msJun' : 'יונ׳', 'msJul' : 'יול׳', 'msAug' : 'אוג׳', 'msSep' : 'ספט׳', 'msOct' : 'אוק׳', 'msNov' : 'נוב׳', 'msDec' : 'דצמ׳', 'January' : 'ינואר', 'February' : 'פברואר', 'March' : 'מרץ', 'April' : 'אפריל', 'May' : 'מאי', 'June' : 'יוני', 'July' : 'יולי', 'August' : 'אוגוסט', 'September' : 'ספטמבר', 'October' : 'אוקטובר', 'November' : 'נובמבר', 'December' : 'דצמבר', 'Sunday' : 'יום ראשון', 'Monday' : 'יום שני', 'Tuesday' : 'יום שלישי', 'Wednesday' : 'יום רביעי', 'Thursday' : 'יום חמישי', 'Friday' : 'יום שישי', 'Saturday' : 'שבת', 'Sun' : 'א׳', 'Mon' : 'ב׳', 'Tue' : 'ג׳', 'Wed' : 'ד׳', 'Thu' : 'ה', 'Fri' : 'ו׳', 'Sat' : 'ש׳', /******************************** sort variants ********************************/ 'sortname' : 'לפי שם', 'sortkind' : 'לפי סוג', 'sortsize' : 'לפי גודל', 'sortdate' : 'לפי תאריך', 'sortFoldersFirst' : 'תיקיות תחילה', /********************************** messages **********************************/ 'confirmReq' : 'נדרש אישור', 'confirmRm' : 'להסיר את הקבצים?
                פעולה זו בלתי הפיכה!', 'confirmRepl' : 'להחליף קובץ ישן בקובץ חדש?', 'apllyAll' : 'להחיל על הכול', 'name' : 'שם', 'size' : 'גודל', 'perms' : 'הרשאות', 'modify' : 'שינוי', 'kind' : 'סוג', 'read' : 'קריאה', 'write' : 'כתיבה', 'noaccess' : 'אין גישה', 'and' : 'וגם', 'unknown' : 'לא ידוע', 'selectall' : 'בחירת כל הקבצים', 'selectfiles' : 'בחירת קובץ אחד ומעלה', 'selectffile' : 'בחירת הקובץ הראשון', 'selectlfile' : 'בחירת הקובץ האחרון', 'viewlist' : 'תצוגת רשימה', 'viewicons' : 'תצוגת סמלים', 'places' : 'מיקומים', 'calc' : 'חישוב', 'path' : 'נתיב', 'aliasfor' : 'כינוי עבור', 'locked' : 'נעול', 'dim' : 'ממדים', 'files' : 'קבצים', 'folders' : 'תיקיות', 'items' : 'פריטים', 'yes' : 'כן', 'no' : 'לא', 'link' : 'קישור', 'searcresult' : 'תוצאות חיפוש', 'selected' : 'קבצים נבחרים', 'about' : 'על אודות', 'shortcuts' : 'קיצורי דרך', 'help' : 'עזרה', 'webfm' : 'מנהל קבצים בדפדפן', 'ver' : 'גרסה', 'protocolver' : 'גרסת פרוטוקול', 'homepage' : 'דף הבית של המיזם', 'docs' : 'תיעוד', 'github' : 'פילוג עותק ב־Github', 'twitter' : 'לעקוב אחרינו בטוויטר', 'facebook' : 'להצטרף אלינו בפייסבוק', 'team' : 'צוות', 'chiefdev' : 'מפתח ראשי', 'developer' : 'מתכנת', 'contributor' : 'תורם', 'maintainer' : 'מתחזק', 'translator' : 'מתרגם', 'icons' : 'סמלים', 'dontforget' : 'לא לשכוח לקחת את המגבת שלך', 'shortcutsof' : 'קיצורי הדרך מנוטרלים', 'dropFiles' : 'ניתן להשליך את הקבצים לכאן', 'or' : 'או', 'selectForUpload' : 'לבחור קבצים להעלאה', 'moveFiles' : 'העברת קבצים', 'copyFiles' : 'העתקת קבצים', 'rmFromPlaces' : 'הסרה ממיקומים', 'aspectRatio' : 'יחס תצוגה', 'scale' : 'מתיחה', 'width' : 'רוחב', 'height' : 'גובה', 'resize' : 'שינוי הגודל', 'crop' : 'חיתוך', 'rotate' : 'היפוך', 'rotate-cw' : 'היפוך ב־90 מעלות נגד השעון', 'rotate-ccw' : 'היפוך ב־90 מעלות עם השעון CCW', 'degree' : '°', 'netMountDialogTitle' : 'עיגון כונן רשת', // added 18.04.2012 'protocol' : 'פרוטוקול', // added 18.04.2012 'host' : 'מארח', // added 18.04.2012 'port' : 'פתחה', // added 18.04.2012 'user' : 'משתמש', // added 18.04.2012 'pass' : 'ססמה', // added 18.04.2012 /********************************** mimetypes **********************************/ 'kindUnknown' : 'בלתי ידוע', 'kindFolder' : 'תיקייה', 'kindAlias' : 'כינוי', 'kindAliasBroken' : 'כינוי שבור', // applications 'kindApp' : 'יישום', 'kindPostscript' : 'מסמך Postscript', 'kindMsOffice' : 'מסמך Microsoft Office', 'kindMsWord' : 'מסמך Microsoft Word', 'kindMsExcel' : 'מסמך Microsoft Excel', 'kindMsPP' : 'מצגת Microsoft Powerpoint', 'kindOO' : 'מסמך Open Office', 'kindAppFlash' : 'יישום Flash', 'kindPDF' : 'Portable Document Format (PDF)', 'kindTorrent' : 'קובץ Bittorrent', 'kind7z' : 'ארכיון 7z', 'kindTAR' : 'ארכיון TAR', 'kindGZIP' : 'ארכיון GZIP', 'kindBZIP' : 'ארכיון BZIP', 'kindXZ' : 'ארכיון XZ', 'kindZIP' : 'ארכיון ZIP', 'kindRAR' : 'ארכיון RAR', 'kindJAR' : 'קובץ JAR של Java', 'kindTTF' : 'גופן True Type', 'kindOTF' : 'גופן Open Type', 'kindRPM' : 'חבילת RPM', // texts 'kindText' : 'מסמך טקסט', 'kindTextPlain' : 'טקסט פשוט', 'kindPHP' : 'מקור PHP', 'kindCSS' : 'גיליון סגנון מדורג', 'kindHTML' : 'מסמך HTML', 'kindJS' : 'מקור Javascript', 'kindRTF' : 'תבנית טקסט עשיר', 'kindC' : 'מקור C', 'kindCHeader' : 'מקור כותרת C', 'kindCPP' : 'מקור C++', 'kindCPPHeader' : 'מקור כותרת C++', 'kindShell' : 'תסריט מעטפת יוניקס', 'kindPython' : 'מקור Python', 'kindJava' : 'מקור Java', 'kindRuby' : 'מקור Ruby', 'kindPerl' : 'תסריט Perl', 'kindSQL' : 'מקור SQL', 'kindXML' : 'מקור XML', 'kindAWK' : 'מקור AWK', 'kindCSV' : 'ערכים מופרדים בפסיקים', 'kindDOCBOOK' : 'מסמךDocbook XML', // images 'kindImage' : 'תמונה', 'kindBMP' : 'תמונת BMP', 'kindJPEG' : 'תמונת JPEG', 'kindGIF' : 'תמונת GIF', 'kindPNG' : 'תמונת PNG', 'kindTIFF' : 'תמונת TIFF', 'kindTGA' : 'תמונת TGA', 'kindPSD' : 'תמונת Adobe Photoshop', 'kindXBITMAP' : 'תמונת מפת סיביות X', 'kindPXM' : 'תמונת Pixelmator', // media 'kindAudio' : 'מדיה מסוג שמע', 'kindAudioMPEG' : 'שמע MPEG', 'kindAudioMPEG4' : 'שמע MPEG-4', 'kindAudioMIDI' : 'שמע MIDI', 'kindAudioOGG' : 'שמע Ogg Vorbis', 'kindAudioWAV' : 'שמע WAV', 'AudioPlaylist' : 'רשימת נגינה MP3', 'kindVideo' : 'מדיה מסוג וידאו', 'kindVideoDV' : 'סרטון DV', 'kindVideoMPEG' : 'סרטון MPEG', 'kindVideoMPEG4' : 'סרטון MPEG-4', 'kindVideoAVI' : 'סרטון AVI', 'kindVideoMOV' : 'סרטון Quick Time', 'kindVideoWM' : 'סרטון Windows Media', 'kindVideoFlash' : 'סרטון Flash', 'kindVideoMKV' : 'סרטון Matroska', 'kindVideoOGG' : 'סרטון Ogg' } }; })); plugins/file-manager-advanced/application/library/js/i18n/elfinder.hr.js000064400000050306147176754550022250 0ustar00/** * hr translation * @version 2016-04-18 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.hr = { translator : '', language : 'Croatian', direction : 'ltr', dateFormat : 'd.m.Y. H:i', // Mar 13, 2012 05:27 PM fancyDateFormat : '$1 H:i', // will produce smth like: Today 12:25 PM messages : { /********************************** errors **********************************/ 'error' : 'Greška', 'errUnknown' : 'Nepoznata greška.', 'errUnknownCmd' : 'Nepoznata naredba.', 'errJqui' : 'Kriva jQuery UI konfiguracija. Selectable, draggable, i droppable komponente moraju biti uključene.', 'errNode' : 'elFinder zahtjeva DOM element da bi bio stvoren.', 'errURL' : 'Krivo konfiguriran elFinder. Opcija URL nije postavljena.', 'errAccess' : 'Zabranjen pristup.', 'errConnect' : 'Nije moguće spajanje na server.', 'errAbort' : 'Prekinuta veza.', 'errTimeout' : 'Veza je istekla.', 'errNotFound' : 'Server nije pronađen.', 'errResponse' : 'Krivi odgovor servera.', 'errConf' : 'Krivo konfiguriran server', 'errJSON' : 'Nije instaliran PHP JSON modul.', 'errNoVolumes' : 'Disk nije dostupan.', 'errCmdParams' : 'Krivi parametri za naredbu "$1".', 'errDataNotJSON' : 'Podaci nisu tipa JSON.', 'errDataEmpty' : 'Nema podataka.', 'errCmdReq' : 'Backend request requires command name.', 'errOpen' : 'Ne mogu otvoriti "$1".', 'errNotFolder' : 'Objekt nije mapa.', 'errNotFile' : 'Objekt nije dokument.', 'errRead' : 'Ne mogu pročitati "$1".', 'errWrite' : 'Ne mogu pisati u "$1".', 'errPerm' : 'Pristup zabranjen', 'errLocked' : '"$1" je zaključan i ne može biti preimenovan, premješten ili obrisan.', 'errExists' : 'Dokument s imenom "$1" već postoji.', 'errInvName' : 'Krivo ime dokumenta', 'errFolderNotFound' : 'Mapa nije pronađena', 'errFileNotFound' : 'Dokument nije pronađen', 'errTrgFolderNotFound' : 'Mapa "$1" nije pronađena', 'errPopup' : 'Browser prevented opening popup window. To open file enable it in browser options.', 'errMkdir' : 'Ne mogu napraviti mapu "$1".', 'errMkfile' : 'Ne mogu napraviti dokument "$1".', 'errRename' : 'Ne mogu preimenovati "$1".', 'errCopyFrom' : 'Kopiranje s diska "$1" nije dozvoljeno.', 'errCopyTo' : 'Kopiranje na disk "$1" nije dozvoljeno.', 'errMkOutLink' : 'Unable to create a link to outside the volume root.', // from v2.1 added 03.10.2015 'errUpload' : 'Greška pri prebacivanju dokumenta na server.', // old name - errUploadCommon 'errUploadFile' : 'Ne mogu prebaciti "$1" na server', // old name - errUpload 'errUploadNoFiles' : 'Nema dokumenata za prebacivanje na server', 'errUploadTotalSize' : 'Dokumenti prelaze maksimalnu dopuštenu veličinu.', // old name - errMaxSize 'errUploadFileSize' : 'Dokument je prevelik.', // old name - errFileMaxSize 'errUploadMime' : 'Ovaj tip dokumenta nije dopušten.', 'errUploadTransfer' : '"$1" greška pri prebacivanju', 'errUploadTemp' : 'Ne mogu napraviti privremeni dokument za prijenos na server', // from v2.1 added 26.09.2015 'errNotReplace' : 'Object "$1" already exists at this location and can not be replaced by object with another type.', // new 'errReplace' : 'Ne mogu zamijeniti "$1".', 'errSave' : 'Ne mogu spremiti "$1".', 'errCopy' : 'Ne mogu kopirati "$1".', 'errMove' : 'Ne mogu premjestiti "$1".', 'errCopyInItself' : 'Ne mogu kopirati "$1" na isto mjesto.', 'errRm' : 'Ne mogu ukloniti "$1".', 'errRmSrc' : 'Ne mogu ukloniti izvorni kod.', 'errExtract' : 'Unable to extract files from "$1".', 'errArchive' : 'Unable to create archive.', 'errArcType' : 'Unsupported archive type.', 'errNoArchive' : 'File is not archive or has unsupported archive type.', 'errCmdNoSupport' : 'Backend does not support this command.', 'errReplByChild' : 'The folder "$1" can\'t be replaced by an item it contains.', 'errArcSymlinks' : 'For security reason denied to unpack archives contains symlinks or files with not allowed names.', // edited 24.06.2012 'errArcMaxSize' : 'Archive files exceeds maximum allowed size.', 'errResize' : 'Unable to resize "$1".', 'errResizeDegree' : 'Invalid rotate degree.', // added 7.3.2013 'errResizeRotate' : 'Unable to rotate image.', // added 7.3.2013 'errResizeSize' : 'Invalid image size.', // added 7.3.2013 'errResizeNoChange' : 'Image size not changed.', // added 7.3.2013 'errUsupportType' : 'Unsupported file type.', 'errNotUTF8Content' : 'File "$1" is not in UTF-8 and cannot be edited.', // added 9.11.2011 'errNetMount' : 'Unable to mount "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'Unsupported protocol.', // added 17.04.2012 'errNetMountFailed' : 'Mount failed.', // added 17.04.2012 'errNetMountHostReq' : 'Host required.', // added 18.04.2012 'errSessionExpires' : 'Your session has expired due to inactivity.', 'errCreatingTempDir' : 'Unable to create temporary directory: "$1"', 'errFtpDownloadFile' : 'Unable to download file from FTP: "$1"', 'errFtpUploadFile' : 'Unable to upload file to FTP: "$1"', 'errFtpMkdir' : 'Unable to create remote directory on FTP: "$1"', 'errArchiveExec' : 'Error while archiving files: "$1"', 'errExtractExec' : 'Error while extracting files: "$1"', 'errNetUnMount' : 'Unable to unmount', // from v2.1 added 30.04.2012 'errConvUTF8' : 'Not convertible to UTF-8', // from v2.1 added 08.04.2014 'errFolderUpload' : 'Try Google Chrome, If you\'d like to upload the folder.', // from v2.1 added 26.6.2015 'errSearchTimeout' : 'Timed out while searching "$1". Search result is partial.', // from v2.1 added 12.1.2016 'errReauthRequire' : 'Re-authorization is required.', // from v2.1.10 added 3.24.2016 /******************************* commands names ********************************/ 'cmdarchive' : 'Arhiviraj', 'cmdback' : 'Nazad', 'cmdcopy' : 'Kopiraj', 'cmdcut' : 'Izreži', 'cmddownload' : 'Preuzmi', 'cmdduplicate' : 'Dupliciraj', 'cmdedit' : 'Uredi dokument', 'cmdextract' : 'Raspakiraj arhivu', 'cmdforward' : 'Naprijed', 'cmdgetfile' : 'Odaberi dokumente', 'cmdhelp' : 'O programu', 'cmdhome' : 'Početak', 'cmdinfo' : 'Info', 'cmdmkdir' : 'Nova mapa', 'cmdmkdirin' : 'U novu mapu', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'Nova файл', 'cmdopen' : 'Otvori', 'cmdpaste' : 'Zalijepi', 'cmdquicklook' : 'Pregled', 'cmdreload' : 'Ponovo učitaj', 'cmdrename' : 'Preimenuj', 'cmdrm' : 'Obriši', 'cmdsearch' : 'Pronađi', 'cmdup' : 'Roditeljska mapa', 'cmdupload' : 'Prebaci dokumente na server', 'cmdview' : 'Pregledaj', 'cmdresize' : 'Promjeni veličinu i rotiraj', 'cmdsort' : 'Sortiraj', 'cmdnetmount' : 'Spoji se na mrežni disk', // added 18.04.2012 'cmdnetunmount': 'Odspoji disk', // from v2.1 added 30.04.2012 'cmdplaces' : 'To Places', // added 28.12.2014 'cmdchmod' : 'Change mode', // from v2.1 added 20.6.2015 'cmdopendir' : 'Otvori mapu', // from v2.1 added 13.1.2016 /*********************************** buttons ***********************************/ 'btnClose' : 'Zatvori', 'btnSave' : 'Spremi', 'btnRm' : 'Ukloni', 'btnApply' : 'Primjeni', 'btnCancel' : 'Odustani', 'btnNo' : 'Ne', 'btnYes' : 'Da', 'btnMount' : 'Mount', // added 18.04.2012 'btnApprove': 'Goto $1 & approve', // from v2.1 added 26.04.2012 'btnUnmount': 'Unmount', // from v2.1 added 30.04.2012 'btnConv' : 'Convert', // from v2.1 added 08.04.2014 'btnCwd' : 'Here', // from v2.1 added 22.5.2015 'btnVolume' : 'Volume', // from v2.1 added 22.5.2015 'btnAll' : 'All', // from v2.1 added 22.5.2015 'btnMime' : 'MIME Type', // from v2.1 added 22.5.2015 'btnFileName':'Filename', // from v2.1 added 22.5.2015 'btnSaveClose': 'Spremi i zatvori', // from v2.1 added 12.6.2015 'btnBackup' : 'Backup', // fromv2.1 added 28.11.2015 /******************************** notifications ********************************/ 'ntfopen' : 'Otvori mapu', 'ntffile' : 'Otvori dokument', 'ntfreload' : 'Ponovo učitaj sadržaj mape', 'ntfmkdir' : 'Radim mapu', 'ntfmkfile' : 'Radim dokumente', 'ntfrm' : 'Brišem dokumente', 'ntfcopy' : 'Kopiram dokumente', 'ntfmove' : 'Mičem dokumente', 'ntfprepare' : 'Priprema za kopiranje dokumenata', 'ntfrename' : 'Preimenuj dokumente', 'ntfupload' : 'Pohranjujem dokumente na server', 'ntfdownload' : 'Preuzimam dokumente', 'ntfsave' : 'Spremi dokumente', 'ntfarchive' : 'Radim arhivu', 'ntfextract' : 'Extracting files from archive', 'ntfsearch' : 'Tražim dokumente', 'ntfresize' : 'Resizing images', 'ntfsmth' : 'Doing something', 'ntfloadimg' : 'Učitavam sliku', 'ntfnetmount' : 'Mounting network volume', // added 18.04.2012 'ntfnetunmount': 'Unmounting network volume', // from v2.1 added 30.04.2012 'ntfdim' : 'Acquiring image dimension', // added 20.05.2013 'ntfreaddir' : 'Reading folder infomation', // from v2.1 added 01.07.2013 'ntfurl' : 'Getting URL of link', // from v2.1 added 11.03.2014 'ntfchmod' : 'Changing file mode', // from v2.1 added 20.6.2015 'ntfpreupload': 'Verifying upload file name', // from v2.1 added 31.11.2015 'ntfzipdl' : 'Creating a file for download', // from v2.1.7 added 23.1.2016 /************************************ dates **********************************/ 'dateUnknown' : 'nepoznato', 'Today' : 'Danas', 'Yesterday' : 'Jučer', 'msJan' : 'Sij', 'msFeb' : 'Vel', 'msMar' : 'Ožu', 'msApr' : 'Tra', 'msMay' : 'Svi', 'msJun' : 'Lip', 'msJul' : 'Srp', 'msAug' : 'Kol', 'msSep' : 'Ruj', 'msOct' : 'Lis', 'msNov' : 'Stu', 'msDec' : 'Pro', 'January' : 'Siječanj', 'February' : 'Veljača', 'March' : 'Ožujak', 'April' : 'Travanj', 'May' : 'Svibanj', 'June' : 'Lipanj', 'July' : 'Srpanj', 'August' : 'Kolovoz', 'September' : 'Rujan', 'October' : 'Listopad', 'November' : 'Studeni', 'December' : 'Prosinac', 'Sunday' : 'Nedjelja', 'Monday' : 'Ponedjeljak', 'Tuesday' : 'Utorak', 'Wednesday' : 'Srijeda', 'Thursday' : 'Četvrtak', 'Friday' : 'Petak', 'Saturday' : 'Subota', 'Sun' : 'Ned', 'Mon' : 'Pon', 'Tue' : 'Uto', 'Wed' : 'Sri', 'Thu' : 'Čet', 'Fri' : 'Pet', 'Sat' : 'Sub', /******************************** sort variants ********************************/ 'sortname' : 'po imenu', 'sortkind' : 'po tipu', 'sortsize' : 'po veličini', 'sortdate' : 'po datumu', 'sortFoldersFirst' : 'Prvo mape', /********************************** new items **********************************/ 'untitled file.txt' : 'NoviDokument.txt', // added 10.11.2015 'untitled folder' : 'NovaMapa', // added 10.11.2015 'Archive' : 'NovaArhiva', // from v2.1 added 10.11.2015 /********************************** messages **********************************/ 'confirmReq' : 'Potvrda', 'confirmRm' : 'Jeste li sigurni?', 'confirmRepl' : 'Zamijeni stare dokumente novima?', 'confirmConvUTF8' : 'Not in UTF-8
                Convert to UTF-8?
                Contents become UTF-8 by saving after conversion.', // from v2.1 added 08.04.2014 'confirmNotSave' : 'It has been modified.
                Losing work if you do not save changes.', // from v2.1 added 15.7.2015 'apllyAll' : 'Primjeni na sve ', 'name' : 'Ime', 'size' : 'Veličina', 'perms' : 'Dozvole', 'modify' : 'Modificiran', 'kind' : 'Tip', 'read' : 'čitanje', 'write' : 'pisanje', 'noaccess' : 'bez pristupa', 'and' : 'i', 'unknown' : 'nepoznato', 'selectall' : 'Odaberi sve', 'selectfiles' : 'Odaberi dokument(e)', 'selectffile' : 'Odaberi prvi dokument', 'selectlfile' : 'Odaberi zadnji dokument', 'viewlist' : 'Lista', 'viewicons' : 'Ikone', 'places' : 'Mjesta', 'calc' : 'Računaj', 'path' : 'Put', 'aliasfor' : 'Drugo ime za', 'locked' : 'Zaključano', 'dim' : 'Dimenzije', 'files' : 'Dokumenti', 'folders' : 'Mape', 'items' : 'Items', 'yes' : 'da', 'no' : 'ne', 'link' : 'poveznica', 'searcresult' : 'Rezultati pretrage', 'selected' : 'selected items', 'about' : 'Info', 'shortcuts' : 'Prečaci', 'help' : 'Pomoć', 'webfm' : 'Web file manager', 'ver' : 'Verzija', 'protocolver' : 'protocol version', 'homepage' : 'Project home', 'docs' : 'Dokumentacija', 'github' : 'Fork us on Github', 'twitter' : 'Follow us on twitter', 'facebook' : 'Join us on facebook', 'team' : 'Tim', 'chiefdev' : 'glavni developer', 'developer' : 'developer', 'contributor' : 'contributor', 'maintainer' : 'maintainer', 'translator' : 'translator', 'icons' : 'Ikone', 'dontforget' : 'and don\'t forget to take your towel', 'shortcutsof' : 'Prečaci isključeni', 'dropFiles' : 'Ovdje ispusti dokumente', 'or' : 'ili', 'selectForUpload' : 'Odaberi dokumente koje prebacuješ na server', 'moveFiles' : 'Premjesti dokumente', 'copyFiles' : 'Kopiraj dokumente', 'rmFromPlaces' : 'Remove from places', 'aspectRatio' : 'Aspect ratio', 'scale' : 'Skaliraj', 'width' : 'Širina', 'height' : 'Visina', 'resize' : 'Resize', 'crop' : 'Crop', 'rotate' : 'Rotate', 'rotate-cw' : 'Rotate 90 degrees CW', 'rotate-ccw' : 'Rotate 90 degrees CCW', 'degree' : '°', 'netMountDialogTitle' : 'Mount network volume', // added 18.04.2012 'protocol' : 'Protocol', // added 18.04.2012 'host' : 'Host', // added 18.04.2012 'port' : 'Port', // added 18.04.2012 'user' : 'User', // added 18.04.2012 'pass' : 'Password', // added 18.04.2012 'confirmUnmount' : 'Are you unmount $1?', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'Drop or Paste files from browser', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'Drop or Paste files and URLs here', // from v2.1 added 07.04.2014 'encoding' : 'Encoding', // from v2.1 added 19.12.2014 'locale' : 'Locale', // from v2.1 added 19.12.2014 'searchTarget' : 'Target: $1', // from v2.1 added 22.5.2015 'searchMime' : 'Search by input MIME Type', // from v2.1 added 22.5.2015 'owner' : 'Vlasnik', // from v2.1 added 20.6.2015 'group' : 'Grupa', // from v2.1 added 20.6.2015 'other' : 'Other', // from v2.1 added 20.6.2015 'execute' : 'Izvrši', // from v2.1 added 20.6.2015 'perm' : 'Dozvole', // from v2.1 added 20.6.2015 'mode' : 'Mode', // from v2.1 added 20.6.2015 'emptyFolder' : 'Mapa je prazna', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'Mapa je prazna\\A Dovuci dokumente koje želiš dodati', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'Mapa je prazna\\A Pritisni dugo za dodavanje dokumenata', // from v2.1.6 added 30.12.2015 'quality' : 'Kvaliteta', // from v2.1.6 added 5.1.2016 'autoSync' : 'Auto sync', // from v2.1.6 added 10.1.2016 'moveUp' : 'Gore', // from v2.1.6 added 18.1.2016 'getLink' : 'Get URL link', // from v2.1.7 added 9.2.2016 'selectedItems' : 'Selected items ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'Folder ID', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'Allow offline access', // from v2.1.10 added 3.25.2016 'reAuth' : 'To re-authenticate', // from v2.1.10 added 3.25.2016 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Unknown', 'kindFolder' : 'Mapa', 'kindAlias' : 'Drugo ime', 'kindAliasBroken' : 'Broken alias', // applications 'kindApp' : 'Aplikacija', 'kindPostscript' : 'Postscript document', 'kindMsOffice' : 'Microsoft Office dokument', 'kindMsWord' : 'Microsoft Word dokument', 'kindMsExcel' : 'Microsoft Excel dokument', 'kindMsPP' : 'Microsoft Powerpoint prezentacija', 'kindOO' : 'Open Office dokument', 'kindAppFlash' : 'Flash aplikacija', 'kindPDF' : 'Portable Document Format (PDF)', 'kindTorrent' : 'Bittorrent dokument', 'kind7z' : '7z arhiva', 'kindTAR' : 'TAR arhiva', 'kindGZIP' : 'GZIP arhiva', 'kindBZIP' : 'BZIP arhiva', 'kindXZ' : 'XZ arhiva', 'kindZIP' : 'ZIP arhiva', 'kindRAR' : 'RAR arhiva', 'kindJAR' : 'Java JAR dokument', 'kindTTF' : 'True Type font', 'kindOTF' : 'Open Type font', 'kindRPM' : 'RPM paket', // texts 'kindText' : 'Tekst arhiva', 'kindTextPlain' : 'Obični tekst', 'kindPHP' : 'PHP source', 'kindCSS' : 'Cascading style sheet', 'kindHTML' : 'HTML document', 'kindJS' : 'Javascript source', 'kindRTF' : 'Rich Text Format', 'kindC' : 'C source', 'kindCHeader' : 'C header source', 'kindCPP' : 'C++ source', 'kindCPPHeader' : 'C++ header source', 'kindShell' : 'Unix shell script', 'kindPython' : 'Python source', 'kindJava' : 'Java source', 'kindRuby' : 'Ruby source', 'kindPerl' : 'Perl skripta', 'kindSQL' : 'SQL source', 'kindXML' : 'XML dokument', 'kindAWK' : 'AWK source', 'kindCSV' : 'vrijednosti razdvojene zarezom', 'kindDOCBOOK' : 'Docbook XML dokument', 'kindMarkdown' : 'Markdown tekst', // added 20.7.2015 // images 'kindImage' : 'slika', 'kindBMP' : 'BMP slika', 'kindJPEG' : 'JPEG slika', 'kindGIF' : 'GIF slika', 'kindPNG' : 'PNG slika', 'kindTIFF' : 'TIFF slika', 'kindTGA' : 'TGA slika', 'kindPSD' : 'Adobe Photoshop slika', 'kindXBITMAP' : 'X bitmap slika', 'kindPXM' : 'Pixelmator slika', // media 'kindAudio' : 'Audio', 'kindAudioMPEG' : 'MPEG audio', 'kindAudioMPEG4' : 'MPEG-4 audio', 'kindAudioMIDI' : 'MIDI audio', 'kindAudioOGG' : 'Ogg Vorbis audio', 'kindAudioWAV' : 'WAV audio', 'AudioPlaylist' : 'MP3 lista', 'kindVideo' : 'Video ', 'kindVideoDV' : 'DV video', 'kindVideoMPEG' : 'MPEG video', 'kindVideoMPEG4' : 'MPEG-4 video', 'kindVideoAVI' : 'AVI video', 'kindVideoMOV' : 'Quick Time video', 'kindVideoWM' : 'Windows Media video', 'kindVideoFlash' : 'Flash video', 'kindVideoMKV' : 'Matroska video', 'kindVideoOGG' : 'Ogg video' } }; })); plugins/file-manager-advanced/application/library/js/i18n/elfinder.hu.js000064400000102371147176754550022253 0ustar00/** * Hungarian translation * @author Gáspár Lajos * @author karrak1 * @version 2020-11-27 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.hu = { translator : 'Gáspár Lajos <info@glsys.eu>, karrak1', language : 'Hungarian', direction : 'ltr', dateFormat : 'Y.F.d H:i:s', // will show like: 2020.November.27 20:52:18 fancyDateFormat : '$1 H:i', // will show like: Ma 20:52 nonameDateFormat : 'ymd-His', // noname upload will show like: 201127-205218 messages : { /********************************** errors **********************************/ 'error' : 'Hiba', 'errUnknown' : 'Ismeretlen hiba.', 'errUnknownCmd' : 'Ismeretlen parancs.', 'errJqui' : 'Hibás jQuery UI konfiguráció. A "selectable", "draggable" és a "droppable" komponensek szükségesek.', 'errNode' : 'Az elFinder "DOM" elem létrehozását igényli.', 'errURL' : 'Hibás elFinder konfiguráció! "URL" paraméter nincs megadva.', 'errAccess' : 'Hozzáférés megtagadva.', 'errConnect' : 'Nem sikerült csatlakozni a kiszolgálóhoz.', 'errAbort' : 'Kapcsolat megszakítva.', 'errTimeout' : 'Kapcsolat időtúllépés.', 'errNotFound' : 'A backend nem elérhető.', 'errResponse' : 'Hibás backend válasz.', 'errConf' : 'Hibás backend konfiguráció.', 'errJSON' : 'PHP JSON modul nincs telepítve.', 'errNoVolumes' : 'Nem állnak rendelkezésre olvasható kötetek.', 'errCmdParams' : 'érvénytelen paraméterek a parancsban. ("$1")', 'errDataNotJSON' : 'A válasz nem JSON típusú adat.', 'errDataEmpty' : 'Nem érkezett adat.', 'errCmdReq' : 'A backend kérelem parancsnevet igényel.', 'errOpen' : '"$1" megnyitása nem sikerült.', 'errNotFolder' : 'Az objektum nem egy mappa.', 'errNotFile' : 'Az objektum nem egy fájl.', 'errRead' : '"$1" olvasása nem sikerült.', 'errWrite' : '"$1" írása nem sikerült.', 'errPerm' : 'Engedély megtagadva.', 'errLocked' : '"$1" zárolás alatt van, és nem lehet átnevezni, mozgatni vagy eltávolítani.', 'errExists' : '"$1" nevű fájl már létezik.', 'errInvName' : 'Érvénytelen fáljnév.', 'errInvDirname' : 'Invalid folder name.', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : 'Mappa nem található.', 'errFileNotFound' : 'Fájl nem található.', 'errTrgFolderNotFound' : 'Cél mappa nem található. ("$1")', 'errPopup' : 'A böngésző megakadályozta egy felugró ablak megnyitását. A fájl megnyitását tegye lehetővé a böngésző beállitásaiban.', 'errMkdir' : '"$1" mappa létrehozása sikertelen.', 'errMkfile' : '"$1" fájl létrehozása sikertelen.', 'errRename' : '"$1" átnevezése sikertelen.', 'errCopyFrom' : 'Fájlok másolása a kötetről nem megengedett. ("$1")', 'errCopyTo' : 'Fájlok másolása a kötetre nem megengedett. ("$1")', 'errMkOutLink' : 'Hivatkozás létrehozása a root köteten kívül nem megengedett.', // from v2.1 added 03.10.2015 'errUpload' : 'Feltöltési hiba.', // old name - errUploadCommon 'errUploadFile' : 'Nem sikerült a fájlt feltölteni. ($1)', // old name - errUpload 'errUploadNoFiles' : 'Nem található fájl feltöltéshez.', 'errUploadTotalSize' : 'Az adat meghaladja a maximálisan megengedett méretet.', // old name - errMaxSize 'errUploadFileSize' : 'A fájl meghaladja a maximálisan megengedett méretet.', // old name - errFileMaxSize 'errUploadMime' : 'A fájltípus nem engedélyezett.', 'errUploadTransfer' : '"$1" transzfer hiba.', 'errUploadTemp' : 'Sikertelen az ideiglenes fájl léterhezozása feltöltéshez.', // from v2.1 added 26.09.2015 'errNotReplace' : 'Az objektum "$1" már létezik ezen a helyen, és nem lehet cserélni másik típusra', // new 'errReplace' : '"$1" nem cserélhető.', 'errSave' : '"$1" mentése nem sikerült.', 'errCopy' : '"$1" másolása nem sikerült.', 'errMove' : '"$1" áthelyezése nem sikerült.', 'errCopyInItself' : '"$1" nem másolható saját magára.', 'errRm' : '"$1" törlése nem sikerült.', 'errTrash' : 'Unable into trash.', // from v2.1.24 added 30.4.2017 'errRmSrc' : 'Forrásfájl(ok) eltávolítása sikertelen.', 'errExtract' : 'Nem sikerült kikibontani a "$1" fájlokat.', 'errArchive' : 'Nem sikerült létrehozni az archívumot.', 'errArcType' : 'Nem támogatott archívum típus.', 'errNoArchive' : 'A fájl nem archív, vagy nem támogatott archívumtípust tartalmaz.', 'errCmdNoSupport' : 'A backend nem támogatja ezt a parancsot.', 'errReplByChild' : 'Az „$1” mappát nem lehet helyettesíteni egy abban található elemmel.', 'errArcSymlinks' : 'Biztonsági okokból az archívumok kicsomagolásának megtagadása szimbolikus linkeket vagy fájlokat tartalmaz, amelyek nem engedélyezettek.', // edited 24.06.2012 'errArcMaxSize' : 'Az archív fájlok meghaladják a megengedett legnagyobb méretet.', 'errResize' : 'Nem lehet átméretezni a (z) "$1".', 'errResizeDegree' : 'Érvénytelen forgatási fok.', // added 7.3.2013 'errResizeRotate' : 'Nem lehet elforgatni a képet.', // added 7.3.2013 'errResizeSize' : 'Érvénytelen képméret.', // added 7.3.2013 'errResizeNoChange' : 'A kép mérete nem változott.', // added 7.3.2013 'errUsupportType' : 'Nem támogatott fájl típus', 'errNotUTF8Content' : 'Az "$1" fájl nincs az UTF-8-ban, és nem szerkeszthető.', // added 9.11.2011 'errNetMount' : 'Nem lehet beilleszteni a(z) "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'Nem támogatott protokoll.', // added 17.04.2012 'errNetMountFailed' : 'A csatlakozás nem sikerült.', // added 17.04.2012 'errNetMountHostReq' : 'Host szükséges.', // added 18.04.2012 'errSessionExpires' : 'A session inaktivitás miatt lejárt.', 'errCreatingTempDir' : 'Nem lehet ideiglenes könyvtárat létrehozni: "$1"', 'errFtpDownloadFile' : 'Nem lehet letölteni a fájlt az FTP-ről: "$1"', 'errFtpUploadFile' : 'Nem lehet feltölteni a fájlt az FTP-re: "$1"', 'errFtpMkdir' : 'Nem sikerült távoli könyvtárat létrehozni az FTP-n: "$1"', 'errArchiveExec' : 'Hiba a fájlok archiválásakor: "$1"', 'errExtractExec' : 'Hiba a fájlok kibontásakor: "$1"', 'errNetUnMount' : 'Nem lehet leválasztani', // from v2.1 added 30.04.2012 'errConvUTF8' : 'Nem konvertálható UTF-8-ra', // from v2.1 added 08.04.2014 'errFolderUpload' : 'Próbálja ki a Google Chrome-ot, ha szeretné feltölteni a mappát.', // from v2.1 added 26.6.2015 'errSearchTimeout' : 'Dőtúllépés a(z) "$1" keresése közben. A keresési eredmény részleges.', // from v2.1 added 12.1.2016 'errReauthRequire' : 'Új engedélyre van szükség.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'Max number of selectable items is $1.', // from v2.1.17 added 17.10.2016 'errRestore' : 'Unable to restore from the trash. Can\'t identify the restore destination.', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'Editor not found to this file type.', // from v2.1.25 added 23.5.2017 'errServerError' : 'Error occurred on the server side.', // from v2.1.25 added 16.6.2017 'errEmpty' : 'Unable to empty folder "$1".', // from v2.1.25 added 22.6.2017 'moreErrors' : 'There are $1 more errors.', // from v2.1.44 added 9.12.2018 /******************************* commands names ********************************/ 'cmdarchive' : 'Archívum létrehozása', 'cmdback' : 'Vissza', 'cmdcopy' : 'Másolás', 'cmdcut' : 'Kivágás', 'cmddownload' : 'Letöltés', 'cmdduplicate' : 'Másolat készítés', 'cmdedit' : 'Szerkesztés', 'cmdextract' : 'Kibontás', 'cmdforward' : 'Előre', 'cmdgetfile' : 'Fájlok kijelölése', 'cmdhelp' : 'Erről a programról...', 'cmdhome' : 'Főkönyvtár', 'cmdinfo' : 'Tulajdonságok', 'cmdmkdir' : 'Új mappa', 'cmdmkdirin' : 'Új mappába', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'Új fájl', 'cmdopen' : 'Megnyitás', 'cmdpaste' : 'Beillesztés', 'cmdquicklook' : 'Előnézet', 'cmdreload' : 'Frissítés', 'cmdrename' : 'Átnevezés', 'cmdrm' : 'Törlés', 'cmdtrash' : 'Into trash', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'Restore', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'Keresés', 'cmdup' : 'Ugrás a szülőmappába', 'cmdupload' : 'Feltöltés', 'cmdview' : 'Nézet', 'cmdresize' : 'Átméretezés és forgatás', 'cmdsort' : 'Rendezés', 'cmdnetmount' : 'Csatlakoztassa a hálózat hangerejét', // added 18.04.2012 'cmdnetunmount': 'Leválaszt', // from v2.1 added 30.04.2012 'cmdplaces' : 'Helyekhez', // added 28.12.2014 'cmdchmod' : 'Módváltás', // from v2.1 added 20.6.2015 'cmdopendir' : 'Mappa megnyitása', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'Állítsa vissza az oszlop szélességét', // from v2.1.13 added 12.06.2016 'cmdfullscreen': 'Full Screen', // from v2.1.15 added 03.08.2016 'cmdmove' : 'Move', // from v2.1.15 added 21.08.2016 'cmdempty' : 'Empty the folder', // from v2.1.25 added 22.06.2017 'cmdundo' : 'Undo', // from v2.1.27 added 31.07.2017 'cmdredo' : 'Redo', // from v2.1.27 added 31.07.2017 'cmdpreference': 'Preferences', // from v2.1.27 added 03.08.2017 'cmdselectall' : 'Select all', // from v2.1.28 added 15.08.2017 'cmdselectnone': 'Select none', // from v2.1.28 added 15.08.2017 'cmdselectinvert': 'Invert selection', // from v2.1.28 added 15.08.2017 'cmdopennew' : 'Open in new window', // from v2.1.38 added 3.4.2018 'cmdhide' : 'Hide (Preference)', // from v2.1.41 added 24.7.2018 /*********************************** buttons ***********************************/ 'btnClose' : 'Bezár', 'btnSave' : 'Ment', 'btnRm' : 'Töröl', 'btnApply' : 'Alkalmaz', 'btnCancel' : 'Mégsem', 'btnNo' : 'Nem', 'btnYes' : 'Igen', 'btnMount' : 'Csatlakoztat', // added 18.04.2012 'btnApprove': 'Tovább $1 és jóváhagyás', // from v2.1 added 26.04.2012 'btnUnmount': 'Leválaszt', // from v2.1 added 30.04.2012 'btnConv' : 'Átalakít', // from v2.1 added 08.04.2014 'btnCwd' : 'Itt', // from v2.1 added 22.5.2015 'btnVolume' : 'Hangerő', // from v2.1 added 22.5.2015 'btnAll' : 'Összes', // from v2.1 added 22.5.2015 'btnMime' : 'MIME Tipus', // from v2.1 added 22.5.2015 'btnFileName':'Fájl név', // from v2.1 added 22.5.2015 'btnSaveClose': 'Mentés és Kilépés', // from v2.1 added 12.6.2015 'btnBackup' : 'Biztonsági mentés', // fromv2.1 added 28.11.2015 'btnRename' : 'Rename', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'Rename(All)', // from v2.1.24 added 6.4.2017 'btnPrevious' : 'Prev ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : 'Next ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : 'Save As', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'Mappa megnyitás', 'ntffile' : 'Fájl megnyitás', 'ntfreload' : 'A mappa tartalmának újratöltése', 'ntfmkdir' : 'Mappa létrehozása', 'ntfmkfile' : 'Fájlok létrehozása', 'ntfrm' : 'Fájlok törélse', 'ntfcopy' : 'Fájlok másolása', 'ntfmove' : 'Fájlok áthelyezése', 'ntfprepare' : 'Checking existing items', 'ntfrename' : 'Fájlok átnevezése', 'ntfupload' : 'Fájlok feltöltése', 'ntfdownload' : 'Fájlok letöltése', 'ntfsave' : 'Fájlok mentése', 'ntfarchive' : 'Archívum létrehozása', 'ntfextract' : 'Kibontás archívumból', 'ntfsearch' : 'Fájlok keresése', 'ntfresize' : 'Képek átméretezése', 'ntfsmth' : 'Csinál valamit >_<', 'ntfloadimg' : 'Kép betöltése', 'ntfnetmount' : 'Hálózati meghajtó hozzáadása', // added 18.04.2012 'ntfnetunmount': 'Hálózati meghajtó leválasztása', // from v2.1 added 30.04.2012 'ntfdim' : 'Képméret megállapítása', // added 20.05.2013 'ntfreaddir' : 'A mappa adatainak olvasása', // from v2.1 added 01.07.2013 'ntfurl' : 'A link URL-jének lekérdezése', // from v2.1 added 11.03.2014 'ntfchmod' : 'A fájlmód megváltoztatása', // from v2.1 added 20.6.2015 'ntfpreupload': 'A feltöltött fájlnév ellenőrzése', // from v2.1 added 31.11.2015 'ntfzipdl' : 'Fájl létrehozása letöltésre', // from v2.1.7 added 23.1.2016 'ntfparents' : 'Getting path infomation', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'Processing the uploaded file', // from v2.1.17 added 2.11.2016 'ntftrash' : 'Doing throw in the trash', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'Doing restore from the trash', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'Checking destination folder', // from v2.1.24 added 3.5.2017 'ntfundo' : 'Undoing previous operation', // from v2.1.27 added 31.07.2017 'ntfredo' : 'Redoing previous undone', // from v2.1.27 added 31.07.2017 'ntfchkcontent' : 'Checking contents', // from v2.1.41 added 3.8.2018 /*********************************** volumes *********************************/ 'volume_Trash' : 'Trash', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : 'Ismeretlen', 'Today' : 'Ma', 'Yesterday' : 'Tegnap', 'msJan' : 'jan', 'msFeb' : 'febr', 'msMar' : 'márc', 'msApr' : 'ápr', 'msMay' : 'máj', 'msJun' : 'jún', 'msJul' : 'júl', 'msAug' : 'aug', 'msSep' : 'szept', 'msOct' : 'okt', 'msNov' : 'nov', 'msDec' : 'dec', 'January' : 'Január', 'February' : 'Február', 'March' : 'Március', 'April' : 'Április', 'May' : 'Május', 'June' : 'Június', 'July' : 'Július', 'August' : 'Augusztus', 'September' : 'Szeptember', 'October' : 'Október', 'November' : 'November', 'December' : 'December', 'Sunday' : 'Vasárnap', 'Monday' : 'Hétfő', 'Tuesday' : 'Kedd', 'Wednesday' : 'Szerda', 'Thursday' : 'Csütörtök', 'Friday' : 'Péntek', 'Saturday' : 'Szombat', 'Sun' : 'V', 'Mon' : 'H', 'Tue' : 'K', 'Wed' : 'Sz', 'Thu' : 'Cs', 'Fri' : 'P', 'Sat' : 'Szo', /******************************** sort variants ********************************/ 'sortname' : 'név szerint', 'sortkind' : 'by kind', 'sortsize' : 'méret szerint', 'sortdate' : 'dátum szerint', 'sortFoldersFirst' : 'Először a mappák', 'sortperm' : 'engedély alapján', // from v2.1.13 added 13.06.2016 'sortmode' : 'mód szerint', // from v2.1.13 added 13.06.2016 'sortowner' : 'tulajdonos alapján', // from v2.1.13 added 13.06.2016 'sortgroup' : 'csoportok szerint', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'Also Treeview', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : 'NewFile.txt', // added 10.11.2015 'untitled folder' : 'NewFolder', // added 10.11.2015 'Archive' : 'NewArchive', // from v2.1 added 10.11.2015 'untitled file' : 'NewFile.$1', // from v2.1.41 added 6.8.2018 'extentionfile' : '$1: File', // from v2.1.41 added 6.8.2018 'extentiontype' : '$1: $2', // from v2.1.43 added 17.10.2018 /********************************** messages **********************************/ 'confirmReq' : 'Megerősítés szükséges', 'confirmRm' : 'Valóban törölni akarja a kijelölt adatokat?
                Ez később nem fordítható vissza!', 'confirmRepl' : 'Replace old file with new one? (If it contains folders, it will be merged. To backup and replace, select Backup.)', 'confirmRest' : 'Replace existing item with the item in trash?', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'Nem UTF-8.
                Átalakítsam UTF-8-ra?
                A tartalom mentés után UTF-8 lesz..', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'Character encoding of this file couldn\'t be detected. It need to temporarily convert to UTF-8 for editting.
                Please select character encoding of this file.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : 'Megváltozott.
                Módosítások elvesznek, ha nem menti el azokat.', // from v2.1 added 15.7.2015 'confirmTrash' : 'Are you sure you want to move items to trash bin?', //from v2.1.24 added 29.4.2017 'confirmMove' : 'Are you sure you want to move items to "$1"?', //from v2.1.50 added 27.7.2019 'apllyAll' : 'Mindenre vonatkozik', 'name' : 'Név', 'size' : 'Méret', 'perms' : 'Jogok', 'modify' : 'Módosítva', 'kind' : 'Típus', 'read' : 'olvasás', 'write' : 'írás', 'noaccess' : '-', 'and' : 'és', 'unknown' : 'ismeretlen', 'selectall' : 'Összes kijelölése', 'selectfiles' : 'Fájlok kijelölése', 'selectffile' : 'Első fájl kijelölése', 'selectlfile' : 'Utolsó fájl kijelölése', 'viewlist' : 'Lista nézet', 'viewicons' : 'Ikon nézet', 'viewSmall' : 'Small icons', // from v2.1.39 added 22.5.2018 'viewMedium' : 'Medium icons', // from v2.1.39 added 22.5.2018 'viewLarge' : 'Large icons', // from v2.1.39 added 22.5.2018 'viewExtraLarge' : 'Extra large icons', // from v2.1.39 added 22.5.2018 'places' : 'Helyek', 'calc' : 'Kiszámítja', 'path' : 'Útvonal', 'aliasfor' : 'Cél', 'locked' : 'Zárolt', 'dim' : 'Méretek', 'files' : 'Fájlok', 'folders' : 'Mappák', 'items' : 'Elemek', 'yes' : 'igen', 'no' : 'nem', 'link' : 'Parancsikon', 'searcresult' : 'Keresés eredménye', 'selected' : 'kijelölt elemek', 'about' : 'Névjegy', 'shortcuts' : 'Gyorsbillenytyűk', 'help' : 'Súgó', 'webfm' : 'Web file manager', 'ver' : 'Verzió', 'protocolver' : 'protokol verzió', 'homepage' : 'Projekt honlap', 'docs' : 'Dokumentáció', 'github' : 'Hozz létre egy új verziót a Github-on', 'twitter' : 'Kövess minket a twitter-en', 'facebook' : 'Csatlakozz hozzánk a facebook-on', 'team' : 'Csapat', 'chiefdev' : 'vezető fejlesztő', 'developer' : 'fejlesztő', 'contributor' : 'külsős hozzájáruló', 'maintainer' : 'karbantartó', 'translator' : 'fordító', 'icons' : 'Ikonok', 'dontforget' : 'törölközőt ne felejts el hozni!', 'shortcutsof' : 'Shortcuts disabled', 'dropFiles' : 'Fájlok dobása ide', 'or' : 'vagy', 'selectForUpload' : 'fájlok böngészése', 'moveFiles' : 'Fájlok áthelyezése', 'copyFiles' : 'Fájlok másolása', 'restoreFiles' : 'Restore items', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'Távolítsa el a helyekről', 'aspectRatio' : 'Oldalarány', 'scale' : 'Skála', 'width' : 'Szélesség', 'height' : 'Magasság', 'resize' : 'Átméretezés', 'crop' : 'Vág', 'rotate' : 'Forgat', 'rotate-cw' : 'Forgassa el 90 fokkal', 'rotate-ccw' : 'Forgassa el 90 fokkal CCW irányban', 'degree' : '°', 'netMountDialogTitle' : 'Mount network volume', // added 18.04.2012 'protocol' : 'Protokoll', // added 18.04.2012 'host' : 'Host', // added 18.04.2012 'port' : 'Port', // added 18.04.2012 'user' : 'Felhasználó', // added 18.04.2012 'pass' : 'Jelszó', // added 18.04.2012 'confirmUnmount' : 'Leválasztod $1?', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'Fájlok dobása vagy beillesztése a böngészőből', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'Drop files, Paste URLs or images(clipboard) here', // from v2.1 added 07.04.2014 'encoding' : 'Kódolás', // from v2.1 added 19.12.2014 'locale' : 'Nyelv', // from v2.1 added 19.12.2014 'searchTarget' : 'Cél: $1', // from v2.1 added 22.5.2015 'searchMime' : 'Keresés a MIME típus bevitele alapján', // from v2.1 added 22.5.2015 'owner' : 'Tulajdonos', // from v2.1 added 20.6.2015 'group' : 'Csoport', // from v2.1 added 20.6.2015 'other' : 'Egyéb', // from v2.1 added 20.6.2015 'execute' : 'Végrehajt', // from v2.1 added 20.6.2015 'perm' : 'Engedély', // from v2.1 added 20.6.2015 'mode' : 'Mód', // from v2.1 added 20.6.2015 'emptyFolder' : 'A mappa üres', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'A mappa üres\\Elem eldobása', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'A mappa üres\\Hosszú koppintás elemek hozzáadásához', // from v2.1.6 added 30.12.2015 'quality' : 'Minőség', // from v2.1.6 added 5.1.2016 'autoSync' : 'Auto sync', // from v2.1.6 added 10.1.2016 'moveUp' : 'Mozgatás fel', // from v2.1.6 added 18.1.2016 'getLink' : 'URL-link letöltése', // from v2.1.7 added 9.2.2016 'selectedItems' : 'Kiválasztott elemek ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'Mappa ID', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'Offline hozzáférés engedélyezése', // from v2.1.10 added 3.25.2016 'reAuth' : 'Újrahitelesítéshez', // from v2.1.10 added 3.25.2016 'nowLoading' : 'Most betölt...', // from v2.1.12 added 4.26.2016 'openMulti' : 'Több fájl megnyitása', // from v2.1.12 added 5.14.2016 'openMultiConfirm': 'Megpróbálja megnyitni a $1 fájlokat. Biztosan meg akarja nyitni a böngészőben?', // from v2.1.12 added 5.14.2016 'emptySearch' : 'Search results is empty in search target.', // from v2.1.12 added 5.16.2016 'editingFile' : 'It is editing a file.', // from v2.1.13 added 6.3.2016 'hasSelected' : '$1 elemet választott ki.', // from v2.1.13 added 6.3.2016 'hasClipboard' : '$1 elem van a vágólapon.', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'Incremental search is only from the current view.', // from v2.1.13 added 6.30.2016 'reinstate' : 'Reinstate', // from v2.1.15 added 3.8.2016 'complete' : '$1 complete', // from v2.1.15 added 21.8.2016 'contextmenu' : 'Context menu', // from v2.1.15 added 9.9.2016 'pageTurning' : 'Page turning', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'Volume roots', // from v2.1.16 added 16.9.2016 'reset' : 'Reset', // from v2.1.16 added 1.10.2016 'bgcolor' : 'Background color', // from v2.1.16 added 1.10.2016 'colorPicker' : 'Color picker', // from v2.1.16 added 1.10.2016 '8pxgrid' : '8px Grid', // from v2.1.16 added 4.10.2016 'enabled' : 'Enabled', // from v2.1.16 added 4.10.2016 'disabled' : 'Disabled', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'Search results is empty in current view.\\APress [Enter] to expand search target.', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'First letter search results is empty in current view.', // from v2.1.23 added 24.3.2017 'textLabel' : 'Text label', // from v2.1.17 added 13.10.2016 'minsLeft' : '$1 mins left', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'Reopen with selected encoding', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'Save with the selected encoding', // from v2.1.19 added 2.12.2016 'selectFolder' : 'Select folder', // from v2.1.20 added 13.12.2016 'firstLetterSearch': 'First letter search', // from v2.1.23 added 24.3.2017 'presets' : 'Presets', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : 'It\'s too many items so it can\'t into trash.', // from v2.1.25 added 9.6.2017 'TextArea' : 'TextArea', // from v2.1.25 added 14.6.2017 'folderToEmpty' : 'Empty the folder "$1".', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : 'There are no items in a folder "$1".', // from v2.1.25 added 22.6.2017 'preference' : 'Preference', // from v2.1.26 added 28.6.2017 'language' : 'Language', // from v2.1.26 added 28.6.2017 'clearBrowserData': 'Initialize the settings saved in this browser', // from v2.1.26 added 28.6.2017 'toolbarPref' : 'Toolbar settings', // from v2.1.27 added 2.8.2017 'charsLeft' : '... $1 chars left.', // from v2.1.29 added 30.8.2017 'linesLeft' : '... $1 lines left.', // from v2.1.52 added 16.1.2020 'sum' : 'Sum', // from v2.1.29 added 28.9.2017 'roughFileSize' : 'Rough file size', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : 'Focus on the element of dialog with mouseover', // from v2.1.30 added 2.11.2017 'select' : 'Select', // from v2.1.30 added 23.11.2017 'selectAction' : 'Action when select file', // from v2.1.30 added 23.11.2017 'useStoredEditor' : 'Open with the editor used last time', // from v2.1.30 added 23.11.2017 'selectinvert' : 'Invert selection', // from v2.1.30 added 25.11.2017 'renameMultiple' : 'Are you sure you want to rename $1 selected items like $2?
                This cannot be undone!', // from v2.1.31 added 4.12.2017 'batchRename' : 'Batch rename', // from v2.1.31 added 8.12.2017 'plusNumber' : '+ Number', // from v2.1.31 added 8.12.2017 'asPrefix' : 'Add prefix', // from v2.1.31 added 8.12.2017 'asSuffix' : 'Add suffix', // from v2.1.31 added 8.12.2017 'changeExtention' : 'Change extention', // from v2.1.31 added 8.12.2017 'columnPref' : 'Columns settings (List view)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : 'All changes will reflect immediately to the archive.', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : 'Any changes will not reflect until un-mount this volume.', // from v2.1.33 added 2.3.2018 'unmountChildren' : 'The following volume(s) mounted on this volume also unmounted. Are you sure to unmount it?', // from v2.1.33 added 5.3.2018 'selectionInfo' : 'Selection Info', // from v2.1.33 added 7.3.2018 'hashChecker' : 'Algorithms to show the file hash', // from v2.1.33 added 10.3.2018 'infoItems' : 'Info Items (Selection Info Panel)', // from v2.1.38 added 28.3.2018 'pressAgainToExit': 'Press again to exit.', // from v2.1.38 added 1.4.2018 'toolbar' : 'Toolbar', // from v2.1.38 added 4.4.2018 'workspace' : 'Work Space', // from v2.1.38 added 4.4.2018 'dialog' : 'Dialog', // from v2.1.38 added 4.4.2018 'all' : 'All', // from v2.1.38 added 4.4.2018 'iconSize' : 'Icon Size (Icons view)', // from v2.1.39 added 7.5.2018 'editorMaximized' : 'Open the maximized editor window', // from v2.1.40 added 30.6.2018 'editorConvNoApi' : 'Because conversion by API is not currently available, please convert on the website.', //from v2.1.40 added 8.7.2018 'editorConvNeedUpload' : 'After conversion, you must be upload with the item URL or a downloaded file to save the converted file.', //from v2.1.40 added 8.7.2018 'convertOn' : 'Convert on the site of $1', // from v2.1.40 added 10.7.2018 'integrations' : 'Integrations', // from v2.1.40 added 11.7.2018 'integrationWith' : 'This elFinder has the following external services integrated. Please check the terms of use, privacy policy, etc. before using it.', // from v2.1.40 added 11.7.2018 'showHidden' : 'Show hidden items', // from v2.1.41 added 24.7.2018 'hideHidden' : 'Hide hidden items', // from v2.1.41 added 24.7.2018 'toggleHidden' : 'Show/Hide hidden items', // from v2.1.41 added 24.7.2018 'makefileTypes' : 'File types to enable with "New file"', // from v2.1.41 added 7.8.2018 'typeOfTextfile' : 'Type of the Text file', // from v2.1.41 added 7.8.2018 'add' : 'Add', // from v2.1.41 added 7.8.2018 'theme' : 'Theme', // from v2.1.43 added 19.10.2018 'default' : 'Default', // from v2.1.43 added 19.10.2018 'description' : 'Description', // from v2.1.43 added 19.10.2018 'website' : 'Website', // from v2.1.43 added 19.10.2018 'author' : 'Author', // from v2.1.43 added 19.10.2018 'email' : 'Email', // from v2.1.43 added 19.10.2018 'license' : 'License', // from v2.1.43 added 19.10.2018 'exportToSave' : 'This item can\'t be saved. To avoid losing the edits you need to export to your PC.', // from v2.1.44 added 1.12.2018 'dblclickToSelect': 'Double click on the file to select it.', // from v2.1.47 added 22.1.2019 'useFullscreen' : 'Use fullscreen mode', // from v2.1.47 added 19.2.2019 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Ismeretlen', 'kindRoot' : 'Volume Root', // from v2.1.16 added 16.10.2016 'kindFolder' : 'Mappa', 'kindSelects' : 'Selections', // from v2.1.29 added 29.8.2017 'kindAlias' : 'Parancsikon', 'kindAliasBroken' : 'Hibás parancsikon', // applications 'kindApp' : 'Alkalmazás', 'kindPostscript' : 'Postscript dokumentum', 'kindMsOffice' : 'Microsoft Office dokumentum', 'kindMsWord' : 'Microsoft Word dokumentum', 'kindMsExcel' : 'Microsoft Excel dokumentum', 'kindMsPP' : 'Microsoft Powerpoint bemutató', 'kindOO' : 'Open Office dokumentum', 'kindAppFlash' : 'Flash alkalmazás', 'kindPDF' : 'Portable Document Format (PDF)', 'kindTorrent' : 'Bittorrent fájl', 'kind7z' : '7z archívum', 'kindTAR' : 'TAR archívum', 'kindGZIP' : 'GZIP archívum', 'kindBZIP' : 'BZIP archívum', 'kindXZ' : 'XZ archívum', 'kindZIP' : 'ZIP archívum', 'kindRAR' : 'RAR archívum', 'kindJAR' : 'Java JAR fájl', 'kindTTF' : 'True Type font', 'kindOTF' : 'Open Type font', 'kindRPM' : 'RPM csomag', // texts 'kindText' : 'Szöveges dokumentum', 'kindTextPlain' : 'Plain text', 'kindPHP' : 'PHP forráskód', 'kindCSS' : 'Cascading style sheet', 'kindHTML' : 'HTML dokumentum', 'kindJS' : 'Javascript forráskód', 'kindRTF' : 'Rich Text Format', 'kindC' : 'C forráskód', 'kindCHeader' : 'C header forráskód', 'kindCPP' : 'C++ forráskód', 'kindCPPHeader' : 'C++ header forráskód', 'kindShell' : 'Unix shell script', 'kindPython' : 'Python forráskód', 'kindJava' : 'Java forráskód', 'kindRuby' : 'Ruby forráskód', 'kindPerl' : 'Perl script', 'kindSQL' : 'SQL forráskód', 'kindXML' : 'XML dokumentum', 'kindAWK' : 'AWK forráskód', 'kindCSV' : 'Comma separated values', 'kindDOCBOOK' : 'Docbook XML dokumentum', 'kindMarkdown' : 'Markdown text', // added 20.7.2015 // images 'kindImage' : 'Kép', 'kindBMP' : 'BMP kép', 'kindJPEG' : 'JPEG kép', 'kindGIF' : 'GIF kép', 'kindPNG' : 'PNG kép', 'kindTIFF' : 'TIFF kép', 'kindTGA' : 'TGA kép', 'kindPSD' : 'Adobe Photoshop kép', 'kindXBITMAP' : 'X bitmap image', 'kindPXM' : 'Pixelmator image', // media 'kindAudio' : 'Hangfájl', 'kindAudioMPEG' : 'MPEG hangfájl', 'kindAudioMPEG4' : 'MPEG-4 hangfájl', 'kindAudioMIDI' : 'MIDI hangfájl', 'kindAudioOGG' : 'Ogg Vorbis hangfájl', 'kindAudioWAV' : 'WAV hangfájl', 'AudioPlaylist' : 'MP3 playlist', 'kindVideo' : 'Film', 'kindVideoDV' : 'DV film', 'kindVideoMPEG' : 'MPEG film', 'kindVideoMPEG4' : 'MPEG-4 film', 'kindVideoAVI' : 'AVI film', 'kindVideoMOV' : 'Quick Time film', 'kindVideoWM' : 'Windows Media film', 'kindVideoFlash' : 'Flash film', 'kindVideoMKV' : 'Matroska film', 'kindVideoOGG' : 'Ogg film' } }; })); plugins/file-manager-advanced/application/library/js/i18n/elfinder.id.js000064400000063753147176754550022245 0ustar00/** * Bahasa Indonesia translation * @author Suyadi <1441177004009@student.unsika.ac.id> * @author Ammar Faizi * @version 2017-05-28 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.id = { translator : 'Suyadi <1441177004009@student.unsika.ac.id>, Ammar Faizi <ammarfaizi2@gmail.com>', language : 'Bahasa Indonesia', direction : 'ltr', dateFormat : 'j F, Y H:i', // Mar 13, 2012 05:27 PM fancyDateFormat : '$1 H:i', // will produce smth like: Today 12:25 PM nonameDateFormat : 'd m Y - H : i : s', // to apply if upload file is noname: 120513172700 messages : { /********************************** errors **********************************/ 'error' : 'Kesalahan', 'errUnknown' : 'Kesalahan tak dikenal.', 'errUnknownCmd' : 'Perintah tak dikenal.', 'errJqui' : 'Konfigurasi jQuery UI tidak valid. Komponen pemilih, penyeret dan penaruh harus disertakan.', 'errNode' : 'elFinder membutuhkan pembuatan elemen DOM.', 'errURL' : 'Konfigurasi elFinder tidak valid! opsi URL belum diatur.', 'errAccess' : 'Akses ditolak.', 'errConnect' : 'Tidak dapat tersambung ke backend.', 'errAbort' : 'Koneksi dibatalkan.', 'errTimeout' : 'Waktu koneksi habis.', 'errNotFound' : 'Backend tidak ditemukan.', 'errResponse' : 'Respon backend tidak valid.', 'errConf' : 'Konfigurasi elFinder tidak valid.', 'errJSON' : 'Modul PHP JSON belum terpasang.', 'errNoVolumes' : 'Tidak tersedia ruang kosong.', 'errCmdParams' : 'Parameter perintah "$1" tidak valid.', 'errDataNotJSON' : 'Data bukan merupakan JSON.', 'errDataEmpty' : 'Data masih kosong.', 'errCmdReq' : 'Permintaan ke backend membutuhkan nama perintah.', 'errOpen' : 'Tidak dapat membuka "$1".', 'errNotFolder' : 'Obyek ini bukan folder.', 'errNotFile' : 'Obyek ini bukan berkas.', 'errRead' : 'Tidak dapat membaca "$1".', 'errWrite' : 'Tidak dapat menulis ke "$1".', 'errPerm' : 'Ijin ditolak.', 'errLocked' : '"$1" ini terkunci dan tak dapat dipidahkan, diubah atau dihapus.', 'errExists' : 'Berkas bernama "$1" sudah ada.', 'errInvName' : 'Nama berkas tidak valid.', 'errInvDirname' : 'Nama folder salah.', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : 'Folder tidak ditemukan.', 'errFileNotFound' : 'Berkas tidak ditemukan.', 'errTrgFolderNotFound' : 'Folder tujuan "$1" tidak ditemukan.', 'errPopup' : 'Peramban anda mencegah untuk membuka jendela munculan. Untuk dapat membuka berkas ini ubah pengaturan pada peramban anda.', 'errMkdir' : 'Tidak dapat membuat folder "$1".', 'errMkfile' : 'Tidak dapat membuat berkas "$1".', 'errRename' : 'Tidak dapat mengubah nama "$1".', 'errCopyFrom' : 'Tidak diizinkan menyalin berkas dari volume "$1".', 'errCopyTo' : 'tidak diizinkan menyalin berkas ke volume "$1".', 'errMkOutLink' : 'Tidak dapat membuat tautan diluar volume root.', // from v2.1 added 03.10.2015 'errUpload' : 'Kesalahan saat mengunggah.', // old name - errUploadCommon 'errUploadFile' : 'Tidak dapat mengunggah "$1".', // old name - errUpload 'errUploadNoFiles' : 'Tak ada berkas untuk diunggah.', 'errUploadTotalSize' : 'Data melampaui ukuran yang diperbolehkan.', // old name - errMaxSize 'errUploadFileSize' : 'Berkas melampaui ukuran yang diperbolehkan.', // old name - errFileMaxSize 'errUploadMime' : 'Jenis berkas ini tidak diijinkan.', 'errUploadTransfer' : 'Kesalahan transfer "$1".', 'errUploadTemp' : 'Tidak dapat membuat file sementara untuk diupload.', // from v2.1 added 26.09.2015 'errNotReplace' : 'Obyek "$1" sudah ada di lokasi ini dan tidak dapat ditimpa oleh obyek jenis lain.', // new 'errReplace' : 'Tidak dapat menimpa "$1".', 'errSave' : 'Tidak dapat menyimpan "$1".', 'errCopy' : 'Tidak dapat menyalin "$1".', 'errMove' : 'Tidak dapat memindahkan "$1".', 'errCopyInItself' : 'Tidak dapat menyalin "$1" ke dirinya sendiri.', 'errRm' : 'Tidak dapat menghapus "$1".', 'errTrash' : 'Tidak dapat masuk ke tempat sampah.', // from v2.1.24 added 30.4.2017 'errRmSrc' : 'Tidak dapat menghapus sumber berkas.', 'errExtract' : 'Tidak dapat mengekstrak berkas dari "$1".', 'errArchive' : 'Tidak dapat membuat arsip.', 'errArcType' : 'Jenis arsip tidak didukung.', 'errNoArchive' : 'Berkas ini bukan arsip atau arsip jenis ini tidak didukung.', 'errCmdNoSupport' : 'Backend tidak mendukung perintah ini.', 'errReplByChild' : 'Folder “$1” tidak dapat ditimpa dengan berkas didalamnya.', 'errArcSymlinks' : 'Untuk keamanan tak diijinkan mengekstrak arsip berisi symlink atau jenis berkas yang tak diijinkan.', // edited 24.06.2012 'errArcMaxSize' : 'Arsip ini melampaui ukuran yang diijinkan.', 'errResize' : 'Tidak dapat mengubah ukuran "$1".', 'errResizeDegree' : 'Derajat putaran tidak valid.', // added 7.3.2013 'errResizeRotate' : 'Citra tidak diputar.', // added 7.3.2013 'errResizeSize' : 'Ukuran citra tidak valid.', // added 7.3.2013 'errResizeNoChange' : 'Ukuran citra tidak diubah.', // added 7.3.2013 'errUsupportType' : 'Jenis berkas tidak didukung.', 'errNotUTF8Content' : 'Berkas "$1" tidak dalam format UTF-8 dan tidak dapat disunting.', // added 9.11.2011 'errNetMount' : 'Tidak dapat membaca susunan "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'Protokol tidak didukung.', // added 17.04.2012 'errNetMountFailed' : 'Tidak dapat membaca susunannya.', // added 17.04.2012 'errNetMountHostReq' : 'Host harus ada.', // added 18.04.2012 'errSessionExpires' : 'Sesi anda telah kadaluwarsa karena lama tidak aktif.', 'errCreatingTempDir' : 'Tidak dapat membuat direktori sementara: "$1"', 'errFtpDownloadFile' : 'Tidak dapat mengunduh berkas dari FTP: "$1"', 'errFtpUploadFile' : 'Tidak dapat mengunggah berkas dari FTP: "$1"', 'errFtpMkdir' : 'Tidak dapat membuat remot direktori dari FTP: "$1"', 'errArchiveExec' : 'Kesalahan saat mengarsipkan berkas: "$1"', 'errExtractExec' : 'Kesalahan saat mengekstrak berkas: "$1"', 'errNetUnMount' : 'Tidak dapat melakukan mount.', // from v2.1 added 30.04.2012 'errConvUTF8' : 'Tidak cocok untuk konversi ke UTF-8', // from v2.1 added 08.04.2014 'errFolderUpload' : 'Coba dengan browser yang modern, Jika akan mengupload folder.', // from v2.1 added 26.6.2015 'errSearchTimeout' : 'Waktu habis selama melakukan pencarian "$1". Hasil sementara.', // from v2.1 added 12.1.2016 'errReauthRequire' : 'Re-authorization dibutuhkan.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'Berkas maksimal yang dipilih adalah $1.', // from v2.1.17 added 17.10.2016 'errRestore' : 'Tidak dapat mengembalikan berkas dari tempat sampah. Tujuan tidak ditemukan.', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'Tidak ditemukan editor untuk file tipe ini.', // from v2.1.25 added 23.5.2017 /******************************* commands names ********************************/ 'cmdarchive' : 'Buat arsip', 'cmdback' : 'Kembali', 'cmdcopy' : 'Salin', 'cmdcut' : 'Potong', 'cmddownload' : 'Unduh', 'cmdduplicate' : 'Gandakan', 'cmdedit' : 'Sunting berkas', 'cmdextract' : 'Ekstrak berkas dari arsip', 'cmdforward' : 'Maju', 'cmdgetfile' : 'Pilih berkas', 'cmdhelp' : 'Tentang software ini', 'cmdhome' : 'Rumah', 'cmdinfo' : 'Dapatkan info', 'cmdmkdir' : 'Buat folder', 'cmdmkdirin' : 'Masuk ke folder baru', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'Buat fail', 'cmdopen' : 'Buka', 'cmdpaste' : 'Tempel', 'cmdquicklook' : 'Pratinjau', 'cmdreload' : 'Muat-ulang', 'cmdrename' : 'Ganti nama', 'cmdrm' : 'Hapus', 'cmdtrash' : 'Sampahkan', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'Kembalikan', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'Cari berkas', 'cmdup' : 'Ke direktori utama', 'cmdupload' : 'Unggah berkas', 'cmdview' : 'Lihat', 'cmdresize' : 'Ubah ukuran & Putar', 'cmdsort' : 'Urutkan', 'cmdnetmount' : 'Baca-susun volume jaringan', // added 18.04.2012 'cmdnetunmount': 'Unmount', // from v2.1 added 30.04.2012 'cmdplaces' : 'Ke Tempat', // added 28.12.2014 'cmdchmod' : 'Mode mengubah', // from v2.1 added 20.6.2015 'cmdopendir' : 'Membuka folder', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'Reset column width', // from v2.1.13 added 12.06.2016 'cmdfullscreen': 'Layar Penuh', // from v2.1.15 added 03.08.2016 'cmdmove' : 'Pindah', // from v2.1.15 added 21.08.2016 /*********************************** buttons ***********************************/ 'btnClose' : 'Tutup', 'btnSave' : 'Simpan', 'btnRm' : 'Buang', 'btnApply' : 'Terapkan', 'btnCancel' : 'Batal', 'btnNo' : 'Tidak', 'btnYes' : 'Ya', 'btnMount' : 'Baca susunan', // added 18.04.2012 'btnApprove': 'Menuju ke $1 & setujui', // from v2.1 added 26.04.2012 'btnUnmount': 'Unmount', // from v2.1 added 30.04.2012 'btnConv' : 'Konversi', // from v2.1 added 08.04.2014 'btnCwd' : 'Disini', // from v2.1 added 22.5.2015 'btnVolume' : 'Volume', // from v2.1 added 22.5.2015 'btnAll' : 'Semua', // from v2.1 added 22.5.2015 'btnMime' : 'MIME Type', // from v2.1 added 22.5.2015 'btnFileName':'Nama file', // from v2.1 added 22.5.2015 'btnSaveClose': 'Simpan & Tutup', // from v2.1 added 12.6.2015 'btnBackup' : 'Backup', // fromv2.1 added 28.11.2015 'btnRename' : 'Ubah nama', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'Ubah nama(Semua)', // from v2.1.24 added 6.4.2017 'btnPrevious' : 'Sebelumnya ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : 'Selanjutnya ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : 'Simpan sebagai', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'Buka folder', 'ntffile' : 'Buka berkas', 'ntfreload' : 'Muat-ulang isi folder', 'ntfmkdir' : 'Membuat direktori', 'ntfmkfile' : 'Membuat berkas', 'ntfrm' : 'Menghapus berkas', 'ntfcopy' : 'Salin berkas', 'ntfmove' : 'Pindahkan berkas', 'ntfprepare' : 'Persiapan menyalin berkas', 'ntfrename' : 'Ubah nama berkas', 'ntfupload' : 'Unggah berkas', 'ntfdownload' : 'Mengunduh berkas', 'ntfsave' : 'Simpan berkas', 'ntfarchive' : 'Membuat arsip', 'ntfextract' : 'Mengekstrak berkas dari arsip', 'ntfsearch' : 'Mencari berkas', 'ntfresize' : 'Mengubah ukuran citra', 'ntfsmth' : 'Melakukan sesuatu', 'ntfloadimg' : 'Memuat citra', 'ntfnetmount' : 'Membaca susunan volume jaringan', // added 18.04.2012 'ntfnetunmount': 'Unmounting network volume', // from v2.1 added 30.04.2012 'ntfdim' : 'Mendapatkan dimensi citra', // added 20.05.2013 'ntfreaddir' : 'Membaca informasi folder', // from v2.1 added 01.07.2013 'ntfurl' : 'Mendapatkan URL dari link', // from v2.1 added 11.03.2014 'ntfchmod' : 'Dalam mode mengubah', // from v2.1 added 20.6.2015 'ntfpreupload': 'Sedang memverifikasi nama file yang diupload', // from v2.1 added 31.11.2015 'ntfzipdl' : 'Membuat file untuk didownload', // from v2.1.7 added 23.1.2016 'ntfparents' : 'Mengambil informasi path', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'Sedang mengupload file', // from v2.1.17 added 2.11.2016 'ntftrash' : 'Sedang melempar ke tempat sampah', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'Sedang mengembalikan dari tempat sampah', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'Mengecek folder tujuan', // from v2.1.24 added 3.5.2017 /*********************************** volumes *********************************/ 'volume_Trash' : 'Sampah', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : 'tak diketahui', 'Today' : 'Hari ini', 'Yesterday' : 'Kemarin', 'msJan' : 'Jan', 'msFeb' : 'Feb', 'msMar' : 'Mar', 'msApr' : 'Apr', 'msMay' : 'Mei', 'msJun' : 'Jun', 'msJul' : 'Jul', 'msAug' : 'Agt', 'msSep' : 'Sep', 'msOct' : 'Okt', 'msNov' : 'Nop', 'msDec' : 'Des', 'January' : 'Januari', 'February' : 'Pebruari', 'March' : 'Maret', 'April' : 'April', 'May' : 'Mei', 'June' : 'Juni', 'July' : 'Juli', 'August' : 'Agustus', 'September' : 'September', 'October' : 'Oktober', 'November' : 'Nopember', 'December' : 'Desember', 'Sunday' : 'Minggu', 'Monday' : 'Senin', 'Tuesday' : 'Selasa', 'Wednesday' : 'Rabu', 'Thursday' : 'Kamis', 'Friday' : 'Jum \'at', 'Saturday' : 'Sabtu', 'Sun' : 'Min', 'Mon' : 'Sen', 'Tue' : 'Sel', 'Wed' : 'Rab', 'Thu' : 'Kam', 'Fri' : 'Jum', 'Sat' : 'Sab', /******************************** sort variants ********************************/ 'sortname' : 'menurut nama', 'sortkind' : 'menurut jenis', 'sortsize' : 'menurut ukuran', 'sortdate' : 'menurut tanggal', 'sortFoldersFirst' : 'Utamakan folder', 'sortperm' : 'menurut perizinan', // from v2.1.13 added 13.06.2016 'sortmode' : 'menurut mode', // from v2.1.13 added 13.06.2016 'sortowner' : 'menurut pemilik', // from v2.1.13 added 13.06.2016 'sortgroup' : 'menurut grup', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'Also Treeview', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : 'FileBaru.txt', // added 10.11.2015 'untitled folder' : 'FolderBaru', // added 10.11.2015 'Archive' : 'ArsipBaru', // from v2.1 added 10.11.2015 /********************************** messages **********************************/ 'confirmReq' : 'Diperlukan konfirmasi', 'confirmRm' : 'Anda yakin akan menghapus berkas?
                Ini tidak dapat kembalikan!', 'confirmRepl' : 'Timpa berkas lama dengan yang baru?', 'confirmRest' : 'Timpa berkas yang ada dengan berkas dari sampah?', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'Bukan UTF-8
                Konversi ke UTF-8?
                Konten akan berubah menjadi UTF-8 ketika disimpan dengan konversi.', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'Character encoding of this file couldn\'t be detected. It need to temporarily convert to UTF-8 for editting.
                Please select character encoding of this file.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : 'Telah terjadi perubahan.
                Kehilangan perkerjaan jika kamu tidak menyimpan.', // from v2.1 added 15.7.2015 'confirmTrash' : 'Anda yakin untuk membuang berkas ke tempat sampah?', //from v2.1.24 added 29.4.2017 'apllyAll' : 'Terapkan ke semua', 'name' : 'Nama', 'size' : 'Ukuran', 'perms' : 'Perijinan', 'modify' : 'Diubah', 'kind' : 'Jenis', 'read' : 'baca', 'write' : 'tulis', 'noaccess' : 'tidak ada akses', 'and' : 'dan', 'unknown' : 'tak diketahui', 'selectall' : 'Pilih semua berkas', 'selectfiles' : 'Pilih berkas', 'selectffile' : 'Pilih berkas pertama', 'selectlfile' : 'Pilih berkas terakhir', 'viewlist' : 'Tampilan daftar', 'viewicons' : 'Tampilan ikon', 'places' : 'Lokasi', 'calc' : 'Hitung', 'path' : 'Alamat', 'aliasfor' : 'Nama lain untuk', 'locked' : 'Dikunci', 'dim' : 'Dimensi', 'files' : 'Berkas', 'folders' : 'Folder', 'items' : 'Pokok', 'yes' : 'ya', 'no' : 'tidak', 'link' : 'Tautan', 'searcresult' : 'Hasil pencarian', 'selected' : 'Pokok terpilih', 'about' : 'Tentang', 'shortcuts' : 'Pintasan', 'help' : 'Bantuan', 'webfm' : 'Pengelola berkas web', 'ver' : 'Versi', 'protocolver' : 'versi protokol', 'homepage' : 'Rumah proyek', 'docs' : 'Dokumentasi', 'github' : 'Ambil kami di Github', 'twitter' : 'Ikuti kami di twitter', 'facebook' : 'Gabung dengan kami di facebook', 'team' : 'Tim', 'chiefdev' : 'kepala pengembang', 'developer' : 'pengembang', 'contributor' : 'kontributor', 'maintainer' : 'pengurus', 'translator' : 'penerjemah', 'icons' : 'Ikon', 'dontforget' : 'dan jangan lupa pakai handukmu', 'shortcutsof' : 'Pintasan dimatikan', 'dropFiles' : 'Seret berkas anda kesini', 'or' : 'atau', 'selectForUpload' : 'Pilih berkas untuk diunggah', 'moveFiles' : 'Pindahkan berkas', 'copyFiles' : 'Salin berkas', 'restoreFiles' : 'Kembalikan berkas', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'Hapus dari lokasi', 'aspectRatio' : 'Aspek rasio', 'scale' : 'Skala', 'width' : 'Lebar', 'height' : 'Tinggi', 'resize' : 'Ubah ukuran', 'crop' : 'Potong', 'rotate' : 'Putar', 'rotate-cw' : 'Putar 90 derajat ke kanan', 'rotate-ccw' : 'Putar 90 derajat ke kiri', 'degree' : '°', 'netMountDialogTitle' : 'Baca susunan volume jaringan', // added 18.04.2012 'protocol' : 'Protokol', // added 18.04.2012 'host' : 'Host', // added 18.04.2012 'port' : 'Port', // added 18.04.2012 'user' : 'Pengguna', // added 18.04.2012 'pass' : 'Sandi', // added 18.04.2012 'confirmUnmount' : 'Apakah anda unmount $1?', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'Seret atau Tempel file dari browser', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'Seret file, Tempel URL atau gambar dari clipboard', // from v2.1 added 07.04.2014 'encoding' : 'Encoding', // from v2.1 added 19.12.2014 'locale' : 'Lokasi', // from v2.1 added 19.12.2014 'searchTarget' : 'Target: $1', // from v2.1 added 22.5.2015 'searchMime' : 'Mencari berdasarkan inpu MIME Type', // from v2.1 added 22.5.2015 'owner' : 'Pemilik', // from v2.1 added 20.6.2015 'group' : 'Grup', // from v2.1 added 20.6.2015 'other' : 'Lainnya', // from v2.1 added 20.6.2015 'execute' : 'Eksekusi', // from v2.1 added 20.6.2015 'perm' : 'Izin', // from v2.1 added 20.6.2015 'mode' : 'Mode', // from v2.1 added 20.6.2015 'emptyFolder' : 'Folder kosong', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'Folder kosong\\A Seret untuk tambahkan berkas', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'Folder kosong\\A Tekan yang lama untuk tambahkan berkas', // from v2.1.6 added 30.12.2015 'quality' : 'Kualitas', // from v2.1.6 added 5.1.2016 'autoSync' : 'Sinkronasi Otomatis', // from v2.1.6 added 10.1.2016 'moveUp' : 'Pindah ke atas', // from v2.1.6 added 18.1.2016 'getLink' : 'Mendepatkan URL link', // from v2.1.7 added 9.2.2016 'selectedItems' : '($1) berkas dipilih', // from v2.1.7 added 2.19.2016 'folderId' : 'ID Folder', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'Izin akses offline', // from v2.1.10 added 3.25.2016 'reAuth' : 'To re-authenticate', // from v2.1.10 added 3.25.2016 'nowLoading' : 'Sedang memuat...', // from v2.1.12 added 4.26.2016 'openMulti' : 'Membuka file bersamaan', // from v2.1.12 added 5.14.2016 'openMultiConfirm': 'Anda mencoba membuka file $1. Apakah anda ingin membuka di browser?', // from v2.1.12 added 5.14.2016 'emptySearch' : 'Hasil pencarian kosong dalam target', // from v2.1.12 added 5.16.2016 'editingFile' : 'Sedang mengedit file', // from v2.1.13 added 6.3.2016 'hasSelected' : 'Anda memilih $1 berkas', // from v2.1.13 added 6.3.2016 'hasClipboard' : 'Kamu mempunyai $i berkas di clipboard', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'Hanya pencarian bertamah untuk menampilkan tampilan sekarang', // from v2.1.13 added 6.30.2016 'reinstate' : 'Reinstate', // from v2.1.15 added 3.8.2016 'complete' : '$1 selesai', // from v2.1.15 added 21.8.2016 'contextmenu' : 'Context menu', // from v2.1.15 added 9.9.2016 'pageTurning' : 'Page turning', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'Volume roots', // from v2.1.16 added 16.9.2016 'reset' : 'Reset', // from v2.1.16 added 1.10.2016 'bgcolor' : 'Warna background', // from v2.1.16 added 1.10.2016 'colorPicker' : 'Mengambil warna', // from v2.1.16 added 1.10.2016 '8pxgrid' : '8px Grid', // from v2.1.16 added 4.10.2016 'enabled' : 'Diaktifkan', // from v2.1.16 added 4.10.2016 'disabled' : 'Nonaktifkan', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'Search results is empty in current view.\\APress [Enter] to expand search target.', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'First letter search results is empty in current view.', // from v2.1.23 added 24.3.2017 'textLabel' : 'Text label', // from v2.1.17 added 13.10.2016 'minsLeft' : '$1 mins left', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'Reopen with selected encoding', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'Save with the selected encoding', // from v2.1.19 added 2.12.2016 'selectFolder' : 'Select folder', // from v2.1.20 added 13.12.2016 'firstLetterSearch': 'First letter search', // from v2.1.23 added 24.3.2017 'presets' : 'Presets', // from v2.1.25 added 26.5.2017 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Tak diketahui', 'kindRoot' : 'Volume Root', // from v2.1.16 added 16.10.2016 'kindFolder' : 'Folder', 'kindAlias' : 'Nama lain', 'kindAliasBroken' : 'Nama lain rusak', // applications 'kindApp' : 'Aplikasi', 'kindPostscript' : 'Dokumen postscript', 'kindMsOffice' : 'Dokumen Ms. Office', 'kindMsWord' : 'Dokumen Ms. Word', 'kindMsExcel' : 'Dokumen Ms. Excel', 'kindMsPP' : 'Dokumen Ms. Powerpoint', 'kindOO' : 'Dokumen Open Office', 'kindAppFlash' : 'Aplikasi Flash', 'kindPDF' : 'Portable Dokumen Format (PDF)', 'kindTorrent' : 'Berkas Bittorrent', 'kind7z' : 'Arsip 7z', 'kindTAR' : 'Arsip TAR', 'kindGZIP' : 'Arsip GZIP', 'kindBZIP' : 'Arsip BZIP', 'kindXZ' : 'Arsip XZ', 'kindZIP' : 'Arsip ZIP', 'kindRAR' : 'Arsip RAR', 'kindJAR' : 'Berkas Java JAR', 'kindTTF' : 'Huruf True Type', 'kindOTF' : 'Huruf Open Type', 'kindRPM' : 'Paket RPM', // texts 'kindText' : 'Dokumen teks', 'kindTextPlain' : 'Berkas teks biasa', 'kindPHP' : 'Kode-sumber PHP', 'kindCSS' : 'Cascading style sheet', 'kindHTML' : 'Dokumen HTML', 'kindJS' : 'Kode-sumber Javascript', 'kindRTF' : 'Berkas Rich Text', 'kindC' : 'Kode-sumber C', 'kindCHeader' : 'Kode-sumber header C', 'kindCPP' : 'Kode-sumber C++', 'kindCPPHeader' : 'Kode-sumber header C++', 'kindShell' : 'Berkas shell Unix', 'kindPython' : 'Kode-sumber Python', 'kindJava' : 'Kode-sumber Java', 'kindRuby' : 'Kode-sumber Ruby', 'kindPerl' : 'Kode-sumber Perl', 'kindSQL' : 'Kode-sumber SQL', 'kindXML' : 'Dokumen XML', 'kindAWK' : 'Kode-sumber AWK', 'kindCSV' : 'Dokumen CSV', 'kindDOCBOOK' : 'Dokumen Docbook XML', 'kindMarkdown' : 'Markdown text', // added 20.7.2015 // images 'kindImage' : 'Citra', 'kindBMP' : 'Citra BMP', 'kindJPEG' : 'Citra JPEG', 'kindGIF' : 'Citra GIF', 'kindPNG' : 'Citra PNG', 'kindTIFF' : 'Citra TIFF', 'kindTGA' : 'Citra TGA', 'kindPSD' : 'Citra Adobe Photoshop', 'kindXBITMAP' : 'Citra X bitmap', 'kindPXM' : 'Citra Pixelmator', // media 'kindAudio' : 'Berkas audio', 'kindAudioMPEG' : 'Berkas audio MPEG', 'kindAudioMPEG4' : 'Berkas audio MPEG-4', 'kindAudioMIDI' : 'Berkas audio MIDI', 'kindAudioOGG' : 'Berkas audio Ogg Vorbis', 'kindAudioWAV' : 'Berkas audio WAV', 'AudioPlaylist' : 'Berkas daftar putar MP3', 'kindVideo' : 'Berkas video', 'kindVideoDV' : 'Berkas video DV', 'kindVideoMPEG' : 'Berkas video MPEG', 'kindVideoMPEG4' : 'Berkas video MPEG-4', 'kindVideoAVI' : 'Berkas video AVI', 'kindVideoMOV' : 'Berkas video Quick Time', 'kindVideoWM' : 'Berkas video Windows Media', 'kindVideoFlash' : 'Berkas video Flash', 'kindVideoMKV' : 'Berkas video Matroska', 'kindVideoOGG' : 'Berkas video Ogg' } }; })); plugins/file-manager-advanced/application/library/js/i18n/elfinder.it.js000064400000104123147176754550022250 0ustar00/** * Italiano translation * @author Alberto Tocci (alberto.tocci@gmail.com) * @author Claudio Nicora (coolsoft.ita@gmail.com) * @author Stefano Galeazzi * @author Thomas Camaran * @author Fabio Ferrero * @version 2023-04-21 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.it = { translator : 'Alberto Tocci (alberto.tocci@gmail.com), Claudio Nicora (coolsoft.ita@gmail.com), Stefano Galeazzi <stefano.galeazzi@probanet.it>, Thomas Camaran <camaran@gmail.com>, Fabio Ferrero <fabioferrero@gmail.com>', language : 'Italiano', direction : 'ltr', dateFormat : 'd/m/Y H:i', // will show like: 21/04/2023 16:21 fancyDateFormat : '$1 H:i', // will show like: Oggi 16:21 nonameDateFormat : 'ymd-His', // noname upload will show like: 230421-162111 messages : { /********************************** errors **********************************/ 'error' : 'Errore', 'errUnknown' : 'Errore sconosciuto.', 'errUnknownCmd' : 'Comando sconosciuto.', 'errJqui' : 'Configurazione JQuery UI non valida. Devono essere inclusi i plugin Selectable, Draggable e Droppable.', 'errNode' : 'elFinder necessita dell\'elemento DOM per essere inizializzato.', 'errURL' : 'Configurazione non valida.Il parametro URL non è settato.', 'errAccess' : 'Accesso negato.', 'errConnect' : 'Impossibile collegarsi al backend.', 'errAbort' : 'Connessione annullata.', 'errTimeout' : 'Timeout di connessione.', 'errNotFound' : 'Backend non trovato.', 'errResponse' : 'Risposta non valida dal backend.', 'errConf' : 'Configurazione backend non valida.', 'errJSON' : 'Modulo PHP JSON non installato.', 'errNoVolumes' : 'Non è stato possibile leggere i volumi.', 'errCmdParams' : 'Parametri non validi per il comando "$1".', 'errDataNotJSON' : 'I dati non sono nel formato JSON.', 'errDataEmpty' : 'Stringa vuota.', 'errCmdReq' : 'La richiesta al backend richiede il nome del comando.', 'errOpen' : 'Impossibile aprire "$1".', 'errNotFolder' : 'L\'oggetto non è una cartella..', 'errNotFile' : 'L\'oggetto non è un file.', 'errRead' : 'Impossibile leggere "$1".', 'errWrite' : 'Non è possibile scrivere in "$1".', 'errPerm' : 'Permesso negato.', 'errLocked' : '"$1" è bloccato e non può essere rinominato, spostato o eliminato.', 'errExists' : 'Il file "$1" è già esistente.', 'errInvName' : 'Nome file non valido.', 'errInvDirname' : 'Nome cartella non valido.', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : 'Cartella non trovata.', 'errFileNotFound' : 'File non trovato.', 'errTrgFolderNotFound' : 'La cartella di destinazione"$1" non è stata trovata.', 'errPopup' : 'Il tuo Browser non consente di aprire finestre di pop-up. Per aprire il file abilita questa opzione nelle impostazioni del tuo Browser.', 'errMkdir' : 'Impossibile creare la cartella "$1".', 'errMkfile' : 'Impossibile creare il file "$1".', 'errRename' : 'Impossibile rinominare "$1".', 'errCopyFrom' : 'Non è possibile copiare file da "$1".', 'errCopyTo' : 'Non è possibile copiare file in "$1".', 'errMkOutLink' : 'Impossibile creare un link all\'esterno della radice del volume.', // from v2.1 added 03.10.2015 'errUpload' : 'Errore di Caricamento.', // old name - errUploadCommon 'errUploadFile' : 'Impossibile Caricare "$1".', // old name - errUpload 'errUploadNoFiles' : 'Non sono stati specificati file da caricare.', 'errUploadTotalSize' : 'La dimensione totale dei file supera il limite massimo consentito.', // old name - errMaxSize 'errUploadFileSize' : 'Le dimensioni del file superano il massimo consentito.', // old name - errFileMaxSize 'errUploadMime' : 'FileType non consentito.', 'errUploadTransfer' : 'Trasferimento errato del file "$1".', 'errUploadTemp' : 'Impossibile creare il file temporaneo per l\'upload.', // from v2.1 added 26.09.2015 'errNotReplace' : 'L\'oggetto "$1" esiste già in questa cartella e non può essere sostituito con un oggetto di un tipo differente.', // new 'errReplace' : 'Impossibile sostituire "$1".', 'errSave' : 'Impossibile salvare "$1".', 'errCopy' : 'Impossibile copiare "$1".', 'errMove' : 'Impossibile spostare "$1".', 'errCopyInItself' : 'Sorgente e destinazione risultato essere uguali.', 'errRm' : 'Impossibile rimuovere "$1".', 'errTrash' : 'Impossibile cestinare.', // from v2.1.24 added 30.4.2017 'errRmSrc' : 'Impossibile eliminare i file origine.', 'errExtract' : 'Impossibile estrarre file da "$1".', 'errArchive' : 'Impossibile creare archivio.', 'errArcType' : 'Tipo di archivio non supportato.', 'errNoArchive' : 'Il file non è un archivio o contiene file non supportati.', 'errCmdNoSupport' : 'Il Backend non supporta questo comando.', 'errReplByChild' : 'La cartella $1 non può essere sostituita da un oggetto in essa contenuto.', 'errArcSymlinks' : 'Per questioni di sicurezza non è possibile estrarre archivi che contengono collegamenti..', // edited 24.06.2012 'errArcMaxSize' : 'La dimensione dell\'archivio supera le massime dimensioni consentite.', 'errResize' : 'Impossibile ridimensionare "$1".', 'errResizeDegree' : 'Angolo di rotazione non valido.', // added 7.3.2013 'errResizeRotate' : 'Impossibile ruotare l\'immagine.', // added 7.3.2013 'errResizeSize' : 'Dimensione dell\'immagine non valida.', // added 7.3.2013 'errResizeNoChange' : 'Dimensione dell\'immagine non modificata.', // added 7.3.2013 'errUsupportType' : 'Tipo di file non supportato.', 'errNotUTF8Content' : 'Il file "$1" non è nel formato UTF-8 e non può essere modificato.', // added 9.11.2011 'errNetMount' : 'Impossibile montare "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'Protocollo non supportato.', // added 17.04.2012 'errNetMountFailed' : 'Mount fallito.', // added 17.04.2012 'errNetMountHostReq' : 'Host richiesto.', // added 18.04.2012 'errSessionExpires' : 'La sessione è scaduta a causa di inattività.', 'errCreatingTempDir' : 'Impossibile creare la cartella temporanea: "$1"', 'errFtpDownloadFile' : 'Impossibile scaricare il file tramite FTP: "$1"', 'errFtpUploadFile' : 'Impossibile caricare il file tramite FTP: "$1"', 'errFtpMkdir' : 'Impossibile creare la cartella remota tramite FTP: "$1"', 'errArchiveExec' : 'Errore durante l\'archiviazione dei file: "$1"', 'errExtractExec' : 'Errore durante l\'estrazione dei file: "$1"', 'errNetUnMount' : 'Impossibile smontare', // from v2.1 added 30.04.2012 'errConvUTF8' : 'Non convertibile nel formato UTF-8', // from v2.1 added 08.04.2014 'errFolderUpload' : 'Per uploadare l0intera cartella usare Google Chrome.', // from v2.1 added 26.6.2015 'errSearchTimeout' : 'Timeout durante la ricerca di "$1". I risultati della ricerca sono parziali.', // from v2.1 added 12.1.2016 'errReauthRequire' : 'E\' necessaria la riautorizzazione.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'Il numero massimo di oggetti selezionabili è $1.', // from v2.1.17 added 17.10.2016 'errRestore' : 'Impossibile ripristinare dal cestino: destinazione di ripristino non trovata.', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'Impossibile trovare un editor per questo tipo di file.', // from v2.1.25 added 23.5.2017 'errServerError' : 'Si è verificato un errore lato server.', // from v2.1.25 added 16.6.2017 'errEmpty' : 'Impossibile svuotare la cartella "$1".', // from v2.1.25 added 22.6.2017 'moreErrors' : 'Ci sono $1 ulteriori errori.', // from v2.1.44 added 9.12.2018 'errMaxMkdirs' : 'Puoi creare fino a $1 cartelle alla volta.', // from v2.1.58 added 20.6.2021 /******************************* commands names ********************************/ 'cmdarchive' : 'Crea archivio', 'cmdback' : 'Indietro', 'cmdcopy' : 'Copia', 'cmdcut' : 'Taglia', 'cmddownload' : 'Scarica', 'cmdduplicate' : 'Duplica', 'cmdedit' : 'Modifica File', 'cmdextract' : 'Estrai Archivio', 'cmdforward' : 'Avanti', 'cmdgetfile' : 'Seleziona File', 'cmdhelp' : 'Informazioni su...', 'cmdhome' : 'Home', 'cmdinfo' : 'Informazioni', 'cmdmkdir' : 'Nuova cartella', 'cmdmkdirin' : 'In una nuova cartella', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'Nuovo file', 'cmdopen' : 'Apri', 'cmdpaste' : 'Incolla', 'cmdquicklook' : 'Anteprima', 'cmdreload' : 'Ricarica', 'cmdrename' : 'Rinomina', 'cmdrm' : 'Elimina', 'cmdtrash' : 'Nel cestino', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'Ripristina', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'Ricerca file', 'cmdup' : 'Vai alla directory padre', 'cmdupload' : 'Carica File', 'cmdview' : 'Visualizza', 'cmdresize' : 'Ridimensiona Immagine', 'cmdsort' : 'Ordina', 'cmdnetmount' : 'Monta disco di rete', // added 18.04.2012 'cmdnetunmount': 'Smonta', // from v2.1 added 30.04.2012 'cmdplaces' : 'Aggiungi ad Accesso rapido', // added 28.12.2014 'cmdchmod' : 'Cambia modalità', // from v2.1 added 20.6.2015 'cmdopendir' : 'Apri una cartella', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'Reimposta dimensione colonne', // from v2.1.13 added 12.06.2016 'cmdfullscreen': 'Schermo intero', // from v2.1.15 added 03.08.2016 'cmdmove' : 'Sposta', // from v2.1.15 added 21.08.2016 'cmdempty' : 'Svuota la cartella', // from v2.1.25 added 22.06.2017 'cmdundo' : 'Annulla', // from v2.1.27 added 31.07.2017 'cmdredo' : 'Ripeti', // from v2.1.27 added 31.07.2017 'cmdpreference': 'Preferenze', // from v2.1.27 added 03.08.2017 'cmdselectall' : 'Seleziona tutto', // from v2.1.28 added 15.08.2017 'cmdselectnone': 'Annulla selezione', // from v2.1.28 added 15.08.2017 'cmdselectinvert': 'Inverti selezione', // from v2.1.28 added 15.08.2017 'cmdopennew' : 'Apri in una nuova finestra', // from v2.1.38 added 3.4.2018 'cmdhide' : 'Nascondi (Preference)', // from v2.1.41 added 24.7.2018 /*********************************** buttons ***********************************/ 'btnClose' : 'Chiudi', 'btnSave' : 'Salva', 'btnRm' : 'Elimina', 'btnApply' : 'Applica', 'btnCancel' : 'Annulla', 'btnNo' : 'No', 'btnYes' : 'Sì', 'btnMount' : 'Monta', // added 18.04.2012 'btnApprove': 'Vai a $1 & approva', // from v2.1 added 26.04.2012 'btnUnmount': 'Smonta', // from v2.1 added 30.04.2012 'btnConv' : 'Converti', // from v2.1 added 08.04.2014 'btnCwd' : 'Qui', // from v2.1 added 22.5.2015 'btnVolume' : 'Disco', // from v2.1 added 22.5.2015 'btnAll' : 'Tutti', // from v2.1 added 22.5.2015 'btnMime' : 'Tipo MIME', // from v2.1 added 22.5.2015 'btnFileName':'Nome file', // from v2.1 added 22.5.2015 'btnSaveClose': 'Salva & Chiudi', // from v2.1 added 12.6.2015 'btnBackup' : 'Backup', // fromv2.1 added 28.11.2015 'btnRename' : 'Rinomina', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'Rinomina (tutto)', // from v2.1.24 added 6.4.2017 'btnPrevious' : 'Indietro ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : 'Avanti ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : 'Salva come', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'Apri cartella', 'ntffile' : 'Apri file', 'ntfreload' : 'Ricarica il contenuto della cartella', 'ntfmkdir' : 'Creazione delle directory in corso', 'ntfmkfile' : 'Creazione dei files in corso', 'ntfrm' : 'Eliminazione dei files in corso', 'ntfcopy' : 'Copia file in corso', 'ntfmove' : 'Spostamento file in corso', 'ntfprepare' : 'Preparazione della copia dei file.', 'ntfrename' : 'Sto rinominando i file', 'ntfupload' : 'Caricamento file in corso', 'ntfdownload' : 'Downloading file in corso', 'ntfsave' : 'Salvataggio file in corso', 'ntfarchive' : 'Creazione archivio in corso', 'ntfextract' : 'Estrazione file dall\'archivio in corso', 'ntfsearch' : 'Ricerca files in corso', 'ntfresize' : 'Ridimensionamento immagini', 'ntfsmth' : 'Operazione in corso. Attendere...', 'ntfloadimg' : 'Caricamento immagine in corso', 'ntfnetmount' : 'Montaggio disco di rete', // added 18.04.2012 'ntfnetunmount': 'Smontaggio disco di rete', // from v2.1 added 30.04.2012 'ntfdim' : 'Lettura dimensioni immagine', // added 20.05.2013 'ntfreaddir' : 'Lettura informazioni cartella', // from v2.1 added 01.07.2013 'ntfurl' : 'Lettura URL del collegamento', // from v2.1 added 11.03.2014 'ntfchmod' : 'Modifica della modalità del file', // from v2.1 added 20.6.2015 'ntfpreupload': 'Verifica del nome del file caricato', // from v2.1 added 31.11.2015 'ntfzipdl' : 'Creazione del file da scaricare', // from v2.1.7 added 23.1.2016 'ntfparents' : 'Ottenimento informazioni percorso', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'Processazione file caricato', // from v2.1.17 added 2.11.2016 'ntftrash' : 'Spostamento nel cestino', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'Ripristino dal cestino', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'Controllo cartella destinazione', // from v2.1.24 added 3.5.2017 'ntfundo' : 'Annullamento operazione precedente', // from v2.1.27 added 31.07.2017 'ntfredo' : 'Rifacimento precedente annullamento', // from v2.1.27 added 31.07.2017 'ntfchkcontent' : 'Controllo contenuto', // from v2.1.41 added 3.8.2018 /*********************************** volumes *********************************/ 'volume_Trash' : 'Cestino', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : 'Sconosciuto', 'Today' : 'Oggi', 'Yesterday' : 'Ieri', 'msJan' : 'Gen', 'msFeb' : 'Feb', 'msMar' : 'Mar', 'msApr' : 'Apr', 'msMay' : 'Mag', 'msJun' : 'Giu', 'msJul' : 'Lug', 'msAug' : 'Ago', 'msSep' : 'Set', 'msOct' : 'Ott', 'msNov' : 'Nov', 'msDec' : 'Dic', 'January' : 'Gennaio', 'February' : 'Febbraio', 'March' : 'Marzo', 'April' : 'Aprile', 'May' : 'Maggio', 'June' : 'Giugno', 'July' : 'Luglio', 'August' : 'Agosto', 'September' : 'Settembre', 'October' : 'Ottobre', 'November' : 'Novembre', 'December' : 'Dicembre', 'Sunday' : 'Domenica', 'Monday' : 'Lunedì', 'Tuesday' : 'Martedì', 'Wednesday' : 'Mercoledì', 'Thursday' : 'Giovedì', 'Friday' : 'Venerdì', 'Saturday' : 'Sabato', 'Sun' : 'Dom', 'Mon' : 'Lun', 'Tue' : 'Mar', 'Wed' : 'Mer', 'Thu' : 'Gio', 'Fri' : 'Ven', 'Sat' : 'Sab', /******************************** sort variants ********************************/ 'sortname' : 'per nome', 'sortkind' : 'per tipo', 'sortsize' : 'per dimensione', 'sortdate' : 'per data', 'sortFoldersFirst' : 'cartelle in testa', 'sortperm' : 'per permessi', // from v2.1.13 added 13.06.2016 'sortmode' : 'per modalità', // from v2.1.13 added 13.06.2016 'sortowner' : 'per possessore', // from v2.1.13 added 13.06.2016 'sortgroup' : 'per gruppo', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'Anche vista ad albero', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : 'NuovoFile.txt', // added 10.11.2015 'untitled folder' : 'NuovaCartella', // added 10.11.2015 'Archive' : 'NuovoArchivio', // from v2.1 added 10.11.2015 'untitled file' : 'NuovoFile.$1', // from v2.1.41 added 6.8.2018 'extentionfile' : '$1: File', // from v2.1.41 added 6.8.2018 'extentiontype' : '$1: $2', // from v2.1.43 added 17.10.2018 /********************************** messages **********************************/ 'confirmReq' : 'Conferma richiesta', 'confirmRm' : 'Sei sicuro di voler eliminare i file?
                L\'operazione non è reversibile!', 'confirmRepl' : 'Sostituire i file ?', 'confirmRest' : 'Rimpiazza l\'oggetto esistente con quello nel cestino?', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'Non in formato UTF-8
                Convertire in UTF-8?
                Il contenuto diventerà UTF-8 salvando dopo la conversione.', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'La codifica caratteri di questo file non può essere determinata. Sarà temporaneamente convertito in UTF-8 per l\'editting.
                Per cortesia, selezionare la codifica caratteri per il file.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : 'Il contenuto è stato modificato.
                Le modifiche andranno perse se non si salveranno.', // from v2.1 added 15.7.2015 'confirmTrash' : 'Sei sicuro di voler cestinare gli oggetti?', //from v2.1.24 added 29.4.2017 'confirmMove' : 'Sei sicuro di voler spostare gli oggetti in "$1"?', //from v2.1.50 added 27.7.2019 'apllyAll' : 'Applica a tutti', 'name' : 'Nome', 'size' : 'Dimensione', 'perms' : 'Permessi', 'modify' : 'Modificato il', 'kind' : 'Tipo', 'read' : 'lettura', 'write' : 'scrittura', 'noaccess' : 'nessun accesso', 'and' : 'e', 'unknown' : 'sconosciuto', 'selectall' : 'Seleziona tutti i file', 'selectfiles' : 'Seleziona file', 'selectffile' : 'Seleziona il primo file', 'selectlfile' : 'Seleziona l\'ultimo file', 'viewlist' : 'Visualizza Elenco', 'viewicons' : 'Visualizza Icone', 'viewSmall' : 'Icone piccole', // from v2.1.39 added 22.5.2018 'viewMedium' : 'Icone medie', // from v2.1.39 added 22.5.2018 'viewLarge' : 'Icone grandi', // from v2.1.39 added 22.5.2018 'viewExtraLarge' : 'Icone molto grandi', // from v2.1.39 added 22.5.2018 'places' : 'Accesso rapido', 'calc' : 'Calcola', 'path' : 'Percorso', 'aliasfor' : 'Alias per', 'locked' : 'Bloccato', 'dim' : 'Dimensioni', 'files' : 'File', 'folders' : 'Cartelle', 'items' : 'Oggetti', 'yes' : 'sì', 'no' : 'no', 'link' : 'Collegamento', 'searcresult' : 'Risultati ricerca', 'selected' : 'oggetti selezionati', 'about' : 'Informazioni', 'shortcuts' : 'Scorciatoie', 'help' : 'Aiuto', 'webfm' : 'Gestore file WEB', 'ver' : 'Versione', 'protocolver' : 'versione protocollo', 'homepage' : 'Home del progetto', 'docs' : 'Documentazione', 'github' : 'Seguici su Github', 'twitter' : 'Seguici su Twitter', 'facebook' : 'Seguici su Facebook', 'team' : 'Gruppo', 'chiefdev' : 'sviluppatore capo', 'developer' : 'sviluppatore', 'contributor' : 'collaboratore', 'maintainer' : 'manutentore', 'translator' : 'traduttore', 'icons' : 'Icone', 'dontforget' : 'e non dimenticate di portare l\'asciugamano', 'shortcutsof' : 'Scorciatoie disabilitate', 'dropFiles' : 'Trascina i file qui', 'or' : 'o', 'selectForUpload' : 'Seleziona file da caricare', 'moveFiles' : 'Sposta file', 'copyFiles' : 'Copia file', 'restoreFiles' : 'Ripristina oggetti', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'Rimuovi da Accesso rapido', 'aspectRatio' : 'Proporzioni', 'scale' : 'Scala', 'width' : 'Larghezza', 'height' : 'Altezza', 'resize' : 'Ridimensione', 'crop' : 'Ritaglia', 'rotate' : 'Ruota', 'rotate-cw' : 'Ruota di 90° in senso orario', 'rotate-ccw' : 'Ruota di 90° in senso antiorario', 'degree' : 'Gradi', 'netMountDialogTitle' : 'Monta disco di rete', // added 18.04.2012 'protocol' : 'Protocollo', // added 18.04.2012 'host' : 'Host', // added 18.04.2012 'port' : 'Porta', // added 18.04.2012 'user' : 'Utente', // added 18.04.2012 'pass' : 'Password', // added 18.04.2012 'confirmUnmount' : 'Vuoi smontare $1?', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'Rilascia o incolla dal browser', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'Rilascia o incolla files e indirizzi URL qui', // from v2.1 added 07.04.2014 'encoding' : 'Codifica', // from v2.1 added 19.12.2014 'locale' : 'Lingua', // from v2.1 added 19.12.2014 'searchTarget' : 'Destinazione: $1', // from v2.1 added 22.5.2015 'searchMime' : 'Cerca per MIME Type', // from v2.1 added 22.5.2015 'owner' : 'Possessore', // from v2.1 added 20.6.2015 'group' : 'Gruppo', // from v2.1 added 20.6.2015 'other' : 'Altri', // from v2.1 added 20.6.2015 'execute' : 'Esegui', // from v2.1 added 20.6.2015 'perm' : 'Permessi', // from v2.1 added 20.6.2015 'mode' : 'Modalità', // from v2.1 added 20.6.2015 'emptyFolder' : 'La cartella è vuota', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'La cartella è vuota\\A Trascina e rilascia per aggiungere elementi', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'La cartella è vuota\\A Premi a lungo per aggiungere elementi', // from v2.1.6 added 30.12.2015 'quality' : 'Qualità', // from v2.1.6 added 5.1.2016 'autoSync' : 'Sincr. automatica', // from v2.1.6 added 10.1.2016 'moveUp' : 'Sposta in alto', // from v2.1.6 added 18.1.2016 'getLink' : 'Mostra URL link', // from v2.1.7 added 9.2.2016 'selectedItems' : 'Elementi selezionati ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'ID cartella', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'Permetti accesso non in linea', // from v2.1.10 added 3.25.2016 'reAuth' : 'Per ri-autenticarsi', // from v2.1.10 added 3.25.2016 'nowLoading' : 'Caricamento...', // from v2.1.12 added 4.26.2016 'openMulti' : 'Apri più files', // from v2.1.12 added 5.14.2016 'openMultiConfirm': 'Stai cercando di aprire $1 files. Sei sicuro di volerli aprire nel browser?', // from v2.1.12 added 5.14.2016 'emptySearch' : 'Nessun risultato soddisfa i criteri di ricerca', // from v2.1.12 added 5.16.2016 'editingFile' : 'Il file è in modifica.', // from v2.1.13 added 6.3.2016 'hasSelected' : '$1 elementi sono selezionati.', // from v2.1.13 added 6.3.2016 'hasClipboard' : '$1 elementi negli appunti.', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'La ricerca incrementale è solo dalla vista corrente.', // from v2.1.13 added 6.30.2016 'reinstate' : 'Reistanzia', // from v2.1.15 added 3.8.2016 'complete' : '$1 completato', // from v2.1.15 added 21.8.2016 'contextmenu' : 'Menu contestuale', // from v2.1.15 added 9.9.2016 'pageTurning' : 'Orientamento pagina', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'Percorsi base del volume', // from v2.1.16 added 16.9.2016 'reset' : 'Resetta', // from v2.1.16 added 1.10.2016 'bgcolor' : 'Colore di sfondo', // from v2.1.16 added 1.10.2016 'colorPicker' : 'Selettore colori', // from v2.1.16 added 1.10.2016 '8pxgrid' : 'Griglia di 8px', // from v2.1.16 added 4.10.2016 'enabled' : 'Abilitato', // from v2.1.16 added 4.10.2016 'disabled' : 'Disabilitato', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'Nessun risultato di ricerca nella vista corrente\\APremere [Invio] per espandere l\'oggetto della ricerca.', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'Nessun risultato di ricerca tramite prima lettera nella vista corrente.', // from v2.1.23 added 24.3.2017 'textLabel' : 'Etichetta di testo', // from v2.1.17 added 13.10.2016 'minsLeft' : '$1 minuti rimanenti', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'Riapri con la codifica di caratteri selezionata', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'Salva con la codifica di caratteri selezionata', // from v2.1.19 added 2.12.2016 'selectFolder' : 'Seleziona cartella', // from v2.1.20 added 13.12.2016 'firstLetterSearch': 'Cerca tramite la prima lettera', // from v2.1.23 added 24.3.2017 'presets' : 'Opzioni predefinite', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : 'Troppi oggetti da spostare nel cestino', // from v2.1.25 added 9.6.2017 'TextArea' : 'Area di testo', // from v2.1.25 added 14.6.2017 'folderToEmpty' : 'Svuota la cartella "$1".', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : 'Non ci sono oggetti nella cartella "$1".', // from v2.1.25 added 22.6.2017 'preference' : 'Preferenze', // from v2.1.26 added 28.6.2017 'language' : 'Impostazioni Lingua', // from v2.1.26 added 28.6.2017 'clearBrowserData': 'Inizializza le impostazioni salvate nel browser', // from v2.1.26 added 28.6.2017 'toolbarPref' : 'Impostazioni ToolBar', // from v2.1.27 added 2.8.2017 'charsLeft' : '... $1 caratteri rimanenti.', // from v2.1.29 added 30.8.2017 'linesLeft' : '... $1 linee rimaste.', // from v2.1.52 added 16.1.2020 'sum' : 'Somma', // from v2.1.29 added 28.9.2017 'roughFileSize' : 'Dimensione file approssimativa', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : 'Fuoco sull\'elemento sotto al mouse', // from v2.1.30 added 2.11.2017 'select' : 'Seleziona', // from v2.1.30 added 23.11.2017 'selectAction' : 'Azione quando un file è selezionato', // from v2.1.30 added 23.11.2017 'useStoredEditor' : 'Apri con l\'editor usato l\'ultima volta', // from v2.1.30 added 23.11.2017 'selectinvert' : 'Inverti selezione', // from v2.1.30 added 25.11.2017 'renameMultiple' : 'Sei sicuro di voler rinominare $1 selezionati come $2?
                Questo non può essere annullato!', // from v2.1.31 added 4.12.2017 'batchRename' : 'Rinomina gruppo', // from v2.1.31 added 8.12.2017 'plusNumber' : '+ Numero', // from v2.1.31 added 8.12.2017 'asPrefix' : 'Aggiungi prefisso', // from v2.1.31 added 8.12.2017 'asSuffix' : 'Aggiungi sufisso', // from v2.1.31 added 8.12.2017 'changeExtention' : 'Cambia estensione', // from v2.1.31 added 8.12.2017 'columnPref' : 'Impostazioni delle colonne (visualizzazione elenco)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : 'Tutti i cambiamenti saranno immeditamente applicati.', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : 'Qualsiasi modifica non sarà visibile fino a quando non si monta questo volume.', // from v2.1.33 added 2.3.2018 'unmountChildren' : 'I seguenti volumi montati su questo volume saranno smontati. Sei sicuro di volerlo smontare?', // from v2.1.33 added 5.3.2018 'selectionInfo' : 'Seleziona Info', // from v2.1.33 added 7.3.2018 'hashChecker' : 'Algoritmi per visualizzare l\'hash del file', // from v2.1.33 added 10.3.2018 'infoItems' : 'Informazioni (pannello di informazioni sulla selezione)', // from v2.1.38 added 28.3.2018 'pressAgainToExit': 'Premi di nuovo per uscire.', // from v2.1.38 added 1.4.2018 'toolbar' : 'Toolbar', // from v2.1.38 added 4.4.2018 'workspace' : 'Spazio di lavoro', // from v2.1.38 added 4.4.2018 'dialog' : 'Dialogo', // from v2.1.38 added 4.4.2018 'all' : 'Tutti', // from v2.1.38 added 4.4.2018 'iconSize' : 'Dimensione icona (Visualizzazione icone)', // from v2.1.39 added 7.5.2018 'editorMaximized' : 'Apri la finestra di modifica massimizzata', // from v2.1.40 added 30.6.2018 'editorConvNoApi' : 'Dato che le API di conversione non sono disponibili, effettua la conversione sul sito web.', //from v2.1.40 added 8.7.2018 'editorConvNeedUpload' : 'Dopo la conversione, devi caricarlo con l\'URL o con il file scaricato per salvare il file convertito.', //from v2.1.40 added 8.7.2018 'convertOn' : 'Converti sul sito di $1', // from v2.1.40 added 10.7.2018 'integrations' : 'Integrazioni', // from v2.1.40 added 11.7.2018 'integrationWith' : 'Questo elFinder ha i seguenti servizi esterni integrati. Controlla i termini di utilizzo, le politiche sulla privacy, etc, prima di utilizzarli.', // from v2.1.40 added 11.7.2018 'showHidden' : 'Mostra oggetti nascosti', // from v2.1.41 added 24.7.2018 'hideHidden' : 'Nascondi oggetti nascosti', // from v2.1.41 added 24.7.2018 'toggleHidden' : 'Visualizza/Nascondi oggetti nascosti', // from v2.1.41 added 24.7.2018 'makefileTypes' : 'Tipi di file da abilitare con "Nuovo file"', // from v2.1.41 added 7.8.2018 'typeOfTextfile' : 'Tipo del file di testo', // from v2.1.41 added 7.8.2018 'add' : 'Aggiungi', // from v2.1.41 added 7.8.2018 'theme' : 'Tema', // from v2.1.43 added 19.10.2018 'default' : 'Default', // from v2.1.43 added 19.10.2018 'description' : 'Descrizione', // from v2.1.43 added 19.10.2018 'website' : 'Website', // from v2.1.43 added 19.10.2018 'author' : 'Autore', // from v2.1.43 added 19.10.2018 'email' : 'Email', // from v2.1.43 added 19.10.2018 'license' : 'Licenza', // from v2.1.43 added 19.10.2018 'exportToSave' : 'L\'oggetto non può essere salvato. Per non perdere le modifiche, devi esportarlo sul tuo computer.', // from v2.1.44 added 1.12.2018 'dblclickToSelect': 'Doppio click sul file per selezionarlo.', // from v2.1.47 added 22.1.2019 'useFullscreen' : 'Usa schermo intero', // from v2.1.47 added 19.2.2019 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Sconosciuto', 'kindRoot' : 'Percorso base del volume', // from v2.1.16 added 16.10.2016 'kindFolder' : 'Cartella', 'kindSelects' : 'Selezioni', // from v2.1.29 added 29.8.2017 'kindAlias' : 'Alias', 'kindAliasBroken' : 'Alias guasto', // applications 'kindApp' : 'Applicazione', 'kindPostscript' : 'Documento Postscript', 'kindMsOffice' : 'Documento Microsoft Office', 'kindMsWord' : 'Documento Microsoft Word', 'kindMsExcel' : 'Documento Microsoft Excel', 'kindMsPP' : 'Presentazione Microsoft Powerpoint', 'kindOO' : 'Documento Open Office', 'kindAppFlash' : 'Applicazione Flash', 'kindPDF' : 'Documento PDF', 'kindTorrent' : 'File Bittorrent', 'kind7z' : 'Archivio 7z', 'kindTAR' : 'Archivio TAR', 'kindGZIP' : 'Archivio GZIP', 'kindBZIP' : 'Archivio BZIP', 'kindXZ' : 'Archivio XZ', 'kindZIP' : 'Archivio ZIP', 'kindRAR' : 'Archivio RAR', 'kindJAR' : 'File Java JAR', 'kindTTF' : 'Font True Type', 'kindOTF' : 'Font Open Type', 'kindRPM' : 'Pacchetto RPM', // texts 'kindText' : 'Documento di testo', 'kindTextPlain' : 'Testo Semplice', 'kindPHP' : 'File PHP', 'kindCSS' : 'File CSS (Cascading Style Sheet)', 'kindHTML' : 'Documento HTML', 'kindJS' : 'File Javascript', 'kindRTF' : 'File RTF (Rich Text Format)', 'kindC' : 'File C', 'kindCHeader' : 'File C (header)', 'kindCPP' : 'File C++', 'kindCPPHeader' : 'File C++ (header)', 'kindShell' : 'Script Unix shell', 'kindPython' : 'File Python', 'kindJava' : 'File Java', 'kindRuby' : 'File Ruby', 'kindPerl' : 'File Perl', 'kindSQL' : 'File SQL', 'kindXML' : 'File XML', 'kindAWK' : 'File AWK', 'kindCSV' : 'File CSV (Comma separated values)', 'kindDOCBOOK' : 'File Docbook XML', 'kindMarkdown' : 'Testo markdown', // added 20.7.2015 // images 'kindImage' : 'Immagine', 'kindBMP' : 'Immagine BMP', 'kindJPEG' : 'Immagine JPEG', 'kindGIF' : 'Immagine GIF', 'kindPNG' : 'Immagine PNG', 'kindTIFF' : 'Immagine TIFF', 'kindTGA' : 'Immagine TGA', 'kindPSD' : 'Immagine Adobe Photoshop', 'kindXBITMAP' : 'Immagine X bitmap', 'kindPXM' : 'Immagine Pixelmator', // media 'kindAudio' : 'File Audio', 'kindAudioMPEG' : 'Audio MPEG', 'kindAudioMPEG4' : 'Audio MPEG-4', 'kindAudioMIDI' : 'Audio MIDI', 'kindAudioOGG' : 'Audio Ogg Vorbis', 'kindAudioWAV' : 'Audio WAV', 'AudioPlaylist' : 'Playlist MP3', 'kindVideo' : 'File Video', 'kindVideoDV' : 'Filmato DV', 'kindVideoMPEG' : 'Filmato MPEG', 'kindVideoMPEG4' : 'Filmato MPEG-4', 'kindVideoAVI' : 'Filmato AVI', 'kindVideoMOV' : 'Filmato Quick Time', 'kindVideoWM' : 'Filmato Windows Media', 'kindVideoFlash' : 'Filmato Flash', 'kindVideoMKV' : 'Filmato Matroska', 'kindVideoOGG' : 'Filmato Ogg' } }; })); plugins/file-manager-advanced/application/library/js/i18n/elfinder.ja.js000064400000114315147176754550022232 0ustar00/** * Japanese translation * @author Tomoaki Yoshida * @author Naoki Sawada * @version 2021-06-02 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.ja = { translator : 'Tomoaki Yoshida <info@yoshida-studio.jp>, Naoki Sawada <hypweb+elfinder@gmail.com>', language : 'Japanese', direction : 'ltr', dateFormat : 'Y/m/d h:i A', // will show like: 2018/08/24 04:37 PM fancyDateFormat : '$1 h:i A', // will show like: 今日 04:37 PM nonameDateFormat : 'ymd-His', // noname upload will show like: 180824-163717 messages : { /********************************** errors **********************************/ 'error' : 'エラー', 'errUnknown' : '不明なエラーです。', 'errUnknownCmd' : '不明なコマンドです。', 'errJqui' : '無効な jQuery UI 設定です。Selectable, Draggable, Droppable コンポーネントを含める必要があります。', 'errNode' : 'elFinder は DOM Element が必要です。', 'errURL' : '無効な elFinder 設定です! URLを設定されていません。', 'errAccess' : 'アクセスが拒否されました。', 'errConnect' : 'バックエンドとの接続ができません。', 'errAbort' : '接続が中断されました。', 'errTimeout' : '接続がタイムアウトしました。', 'errNotFound' : 'バックエンドが見つかりません。', 'errResponse' : '無効なバックエンドレスポンスです。', 'errConf' : 'バックエンドの設定が有効ではありません。', 'errJSON' : 'PHP JSON モジュールがインストールされていません。', 'errNoVolumes' : '読み込み可能なボリュームがありません。', 'errCmdParams' : 'コマンド "$1"のパラメーターが無効です。', 'errDataNotJSON' : 'JSONデータではありません。', 'errDataEmpty' : '空のデータです。', 'errCmdReq' : 'バックエンドリクエストはコマンド名が必要です。', 'errOpen' : '"$1" を開くことができません。', 'errNotFolder' : 'オブジェクトがフォルダではありません。', 'errNotFile' : 'オブジェクトがファイルではありません。', 'errRead' : '"$1" を読み込むことができません。', 'errWrite' : '"$1" に書き込むことができません。', 'errPerm' : '権限がありません。', 'errLocked' : '"$1" はロックされているので名前の変更、移動、削除ができません。', 'errExists' : '"$1" というアイテム名はすでに存在しています。', 'errInvName' : '無効なファイル名です。', 'errInvDirname' : '無効なフォルダ名です。', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : 'フォルダが見つかりません。', 'errFileNotFound' : 'ファイルが見つかりません。', 'errTrgFolderNotFound' : 'ターゲットとするフォルダ "$1" が見つかりません。', 'errPopup' : 'ポップアップウィンドウが開けません。ファイルを開くにはブラウザの設定を変更してください。', 'errMkdir' : 'フォルダ "$1" を作成することができません。', 'errMkfile' : 'ファイル "$1" を作成することができません。', 'errRename' : '"$1" の名前を変更することができません。', 'errCopyFrom' : '"$1" からのファイルコピーは許可されていません。', 'errCopyTo' : '"$1" へのファイルコピーは許可されていません。', 'errMkOutLink' : 'ボリュームルート外へのリンクを作成することはできません。', // from v2.1 added 03.10.2015 'errUpload' : 'アップロードエラー', // old name - errUploadCommon 'errUploadFile' : '"$1" をアップロードすることができません。', // old name - errUpload 'errUploadNoFiles' : 'アップロードされたファイルはありません。', 'errUploadTotalSize' : 'データが許容サイズを超えています。', // old name - errMaxSize 'errUploadFileSize' : 'ファイルが許容サイズを超えています。', // old name - errFileMaxSize 'errUploadMime' : '許可されていないファイル形式です。', 'errUploadTransfer' : '"$1" 転送エラーです。', 'errUploadTemp' : 'アップロード用一時ファイルを作成できません。', // from v2.1 added 26.09.2015 'errNotReplace' : 'アイテム "$1" はすでにこの場所にあり、アイテムのタイプが違うので置き換えることはできません。', // new 'errReplace' : '"$1" を置き換えることができません。', 'errSave' : '"$1" を保存することができません。', 'errCopy' : '"$1" をコピーすることができません。', 'errMove' : '"$1" を移動することができません。', 'errCopyInItself' : '"$1" をそれ自身の中にコピーすることはできません。', 'errRm' : '"$1" を削除することができません。', 'errTrash' : 'ごみ箱に入れることができません。', // from v2.1.24 added 30.4.2017 'errRmSrc' : '元ファイルを削除することができません。', 'errExtract' : '"$1" を解凍することができません。', 'errArchive' : 'アーカイブを作成することができません。', 'errArcType' : 'サポート外のアーカイブ形式です。', 'errNoArchive' : 'アーカイブでないかサポートされていないアーカイブ形式です。', 'errCmdNoSupport' : 'サポートされていないコマンドです。', 'errReplByChild' : 'フォルダ "$1" に含まれてるアイテムを置き換えることはできません。', 'errArcSymlinks' : 'シンボリックリンクまたは許容されないファイル名を含むアーカイブはセキュリティ上、解凍できません。', // edited 24.06.2012 'errArcMaxSize' : 'アーカイブが許容されたサイズを超えています。', 'errResize' : '"$1" のリサイズまたは回転ができません。', 'errResizeDegree' : 'イメージの回転角度が不正です。', // added 7.3.2013 'errResizeRotate' : 'イメージを回転できません。', // added 7.3.2013 'errResizeSize' : '指定されたイメージサイズが不正です。', // added 7.3.2013 'errResizeNoChange' : 'イメージサイズなどの変更点がありません。', // added 7.3.2013 'errUsupportType' : 'このファイルタイプはサポートされていません。', 'errNotUTF8Content' : 'ファイル "$1" には UTF-8 以外の文字が含まれているので編集できません。', // added 9.11.2011 'errNetMount' : '"$1" をマウントできません。', // added 17.04.2012 'errNetMountNoDriver' : 'サポートされていないプロトコルです。', // added 17.04.2012 'errNetMountFailed' : 'マウントに失敗しました。', // added 17.04.2012 'errNetMountHostReq' : 'ホスト名は必須です。', // added 18.04.2012 'errSessionExpires' : 'アクションがなかったため、セッションが期限切れになりました。', 'errCreatingTempDir' : '一時ディレクトリを作成できません:"$1"', 'errFtpDownloadFile' : 'FTP からファイルをダウンロードできません:"$1"', 'errFtpUploadFile' : 'FTP へファイルをアップロードできません:"$1"', 'errFtpMkdir' : 'FTP にリモートディレクトリを作成できません:"$1"', 'errArchiveExec' : 'ファイルのアーカイブ中にエラーが発生しました:"$1"', 'errExtractExec' : 'ファイルの抽出中にエラーが発生しました:"$1"', 'errNetUnMount' : 'アンマウントできません。', // from v2.1 added 30.04.2012 'errConvUTF8' : 'UTF-8 に変換できませんでした。', // from v2.1 added 08.04.2014 'errFolderUpload' : 'フォルダをアップロードしたいのであれば、モダンブラウザを試してください。', // from v2.1 added 26.6.2015 'errSearchTimeout' : '"$1" を検索中にタイムアウトしました。検索結果は部分的です。', // from v2.1 added 12.1.2016 'errReauthRequire' : '再認可が必要です。', // from v2.1.10 added 24.3.2016 'errMaxTargets' : '選択可能な最大アイテム数は $1 個です。', // from v2.1.17 added 17.10.2016 'errRestore' : '宛先の特定ができないため、ごみ箱から戻せません。', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'このファイルタイプのエディターがありません。', // from v2.1.25 added 23.5.2017 'errServerError' : 'サーバー側でエラーが発生しました。', // from v2.1.25 added 16.6.2017 'errEmpty' : 'フォルダ"$1"を空にすることができません。', // from v2.1.25 added 22.6.2017 'moreErrors' : 'さらに $1 件のエラーがあります。', // from v2.1.44 added 9.12.2018 'errMaxMkdirs' : '一度に作成できるフォルダーは $1 個までです。', // from v2.1.58 added 20.6.2021 /******************************* commands names ********************************/ 'cmdarchive' : 'アーカイブ作成', 'cmdback' : '戻る', 'cmdcopy' : 'コピー', 'cmdcut' : 'カット', 'cmddownload' : 'ダウンロード', 'cmdduplicate' : '複製', 'cmdedit' : 'ファイル編集', 'cmdextract' : 'アーカイブを解凍', 'cmdforward' : '進む', 'cmdgetfile' : 'ファイル選択', 'cmdhelp' : 'このソフトウェアについて', 'cmdhome' : 'ルート', 'cmdinfo' : '情報', 'cmdmkdir' : '新規フォルダ', 'cmdmkdirin' : '新規フォルダへ', // from v2.1.7 added 19.2.2016 'cmdmkfile' : '新規ファイル', 'cmdopen' : '開く', 'cmdpaste' : 'ペースト', 'cmdquicklook' : 'プレビュー', 'cmdreload' : 'リロード', 'cmdrename' : 'リネーム', 'cmdrm' : '削除', 'cmdtrash' : 'ごみ箱へ', //from v2.1.24 added 29.4.2017 'cmdrestore' : '復元', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'ファイルを探す', 'cmdup' : '親フォルダへ移動', 'cmdupload' : 'ファイルアップロード', 'cmdview' : 'ビュー', 'cmdresize' : 'リサイズと回転', 'cmdsort' : 'ソート', 'cmdnetmount' : 'ネットワークボリュームをマウント', // added 18.04.2012 'cmdnetunmount': 'アンマウント', // from v2.1 added 30.04.2012 'cmdplaces' : 'よく使う項目へ', // added 28.12.2014 'cmdchmod' : '属性変更', // from v2.1 added 20.6.2015 'cmdopendir' : 'フォルダを開く', // from v2.1 added 13.1.2016 'cmdcolwidth' : '列幅リセット', // from v2.1.13 added 12.06.2016 'cmdfullscreen': 'フルスクリーン', // from v2.1.15 added 03.08.2016 'cmdmove' : '移動', // from v2.1.15 added 21.08.2016 'cmdempty' : 'フォルダを空に', // from v2.1.25 added 22.06.2017 'cmdundo' : '元に戻す', // from v2.1.27 added 31.07.2017 'cmdredo' : 'やり直し', // from v2.1.27 added 31.07.2017 'cmdpreference': '個人設定', // from v2.1.27 added 03.08.2017 'cmdselectall' : 'すべて選択', // from v2.1.28 added 15.08.2017 'cmdselectnone': '選択解除', // from v2.1.28 added 15.08.2017 'cmdselectinvert': '選択を反転', // from v2.1.28 added 15.08.2017 'cmdopennew' : '新しいウィンドウで開く', // from v2.1.38 added 3.4.2018 'cmdhide' : '非表示 (個人設定)', // from v2.1.41 added 24.7.2018 /*********************************** buttons ***********************************/ 'btnClose' : '閉じる', 'btnSave' : '保存', 'btnRm' : '削除', 'btnApply' : '適用', 'btnCancel' : 'キャンセル', 'btnNo' : 'いいえ', 'btnYes' : 'はい', 'btnMount' : 'マウント', // added 18.04.2012 'btnApprove': '$1へ行き認可する', // from v2.1 added 26.04.2012 'btnUnmount': 'アンマウント', // from v2.1 added 30.04.2012 'btnConv' : '変換', // from v2.1 added 08.04.2014 'btnCwd' : 'この場所', // from v2.1 added 22.5.2015 'btnVolume' : 'ボリューム', // from v2.1 added 22.5.2015 'btnAll' : '全て', // from v2.1 added 22.5.2015 'btnMime' : 'MIMEタイプ', // from v2.1 added 22.5.2015 'btnFileName':'ファイル名', // from v2.1 added 22.5.2015 'btnSaveClose': '保存して閉じる', // from v2.1 added 12.6.2015 'btnBackup' : 'バックアップ', // fromv2.1 added 28.11.2015 'btnRename' : 'リネーム', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'リネーム(全て)', // from v2.1.24 added 6.4.2017 'btnPrevious' : '前へ ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : '次へ ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : '別名保存', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'フォルダを開いています', 'ntffile' : 'ファイルを開いています', 'ntfreload' : 'フォルダを再読込しています', 'ntfmkdir' : 'フォルダを作成しています', 'ntfmkfile' : 'ファイルを作成しています', 'ntfrm' : 'アイテムを削除しています', 'ntfcopy' : 'アイテムをコピーしています', 'ntfmove' : 'アイテムを移動しています', 'ntfprepare' : '既存アイテムを確認しています', 'ntfrename' : 'ファイル名を変更しています', 'ntfupload' : 'ファイルをアップロードしています', 'ntfdownload' : 'ファイルをダウンロードしています', 'ntfsave' : 'ファイルを保存しています', 'ntfarchive' : 'アーカイブ作成しています', 'ntfextract' : 'アーカイブを解凍しています', 'ntfsearch' : 'ファイル検索中', 'ntfresize' : 'リサイズしています', 'ntfsmth' : '処理をしています', 'ntfloadimg' : 'イメージを読み込んでいます', 'ntfnetmount' : 'ネットボリュームをマウント中', // added 18.04.2012 'ntfnetunmount': 'ネットボリュームをアンマウント中', // from v2.1 added 30.04.2012 'ntfdim' : '画像サイズを取得しています', // added 20.05.2013 'ntfreaddir' : 'フォルダ情報を読み取っています', // from v2.1 added 01.07.2013 'ntfurl' : 'リンクURLを取得しています', // from v2.1 added 11.03.2014 'ntfchmod' : 'ファイル属性を変更しています', // from v2.1 added 20.6.2015 'ntfpreupload': 'アップロードファイル名を検証中', // from v2.1 added 31.11.2015 'ntfzipdl' : 'ダウンロード用ファイルを作成中', // from v2.1.7 added 23.1.2016 'ntfparents' : 'パス情報を取得しています', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'アップロード済みファイルを処理中', // from v2.1.17 added 2.11.2016 'ntftrash' : 'ごみ箱に入れています', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'ごみ箱から元に戻しています', // from v2.1.24 added 3.5.2017 'ntfchkdir' : '宛先フォルダを確認しています', // from v2.1.24 added 3.5.2017 'ntfundo' : '前の操作を取り消して元に戻しています', // from v2.1.27 added 31.07.2017 'ntfredo' : '元に戻した操作をやり直しています', // from v2.1.27 added 31.07.2017 'ntfchkcontent' : 'コンテンツをチェックしています', // from v2.1.41 added 3.8.2018 /*********************************** volumes *********************************/ 'volume_Trash' : 'ごみ箱', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : '不明', 'Today' : '今日', 'Yesterday' : '昨日', 'msJan' : '1月', 'msFeb' : '2月', 'msMar' : '3月', 'msApr' : '4月', 'msMay' : '5月', 'msJun' : '6月', 'msJul' : '7月', 'msAug' : '8月', 'msSep' : '9月', 'msOct' : '10月', 'msNov' : '11月', 'msDec' : '12月', 'January' : '1月', 'February' : '2月', 'March' : '3月', 'April' : '4月', 'May' : '5月', 'June' : '6月', 'July' : '7月', 'August' : '8月', 'September' : '9月', 'October' : '10月', 'November' : '11月', 'December' : '12月', 'Sunday' : '日曜日', 'Monday' : '月曜日', 'Tuesday' : '火曜日', 'Wednesday' : '水曜日', 'Thursday' : '木曜日', 'Friday' : '金曜日', 'Saturday' : '土曜日', 'Sun' : '(日)', 'Mon' : '(月)', 'Tue' : '(火)', 'Wed' : '(水)', 'Thu' : '(木)', 'Fri' : '(金)', 'Sat' : '(土)', /******************************** sort variants ********************************/ 'sortname' : '名前順', 'sortkind' : '種類順', 'sortsize' : 'サイズ順', 'sortdate' : '日付順', 'sortFoldersFirst' : 'フォルダ優先', 'sortperm' : '権限順', // from v2.1.13 added 13.06.2016 'sortmode' : '属性順', // from v2.1.13 added 13.06.2016 'sortowner' : 'オーナー順', // from v2.1.13 added 13.06.2016 'sortgroup' : 'グループ順', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'ツリービューも', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : '新規ファイル.txt', // added 10.11.2015 'untitled folder' : '新規フォルダ', // added 10.11.2015 'Archive' : '新規アーカイブ', // from v2.1 added 10.11.2015 'untitled file' : '新規ファイル.$1', // from v2.1.41 added 6.8.2018 'extentionfile' : '$1: ファイル', // from v2.1.41 added 6.8.2018 'extentiontype' : '$1: $2', // from v2.1.43 added 17.10.2018 /********************************** messages **********************************/ 'confirmReq' : '処理を実行しますか?', 'confirmRm' : 'アイテムを完全に削除してもよろしいですか?
                この操作は取り消しできません!', 'confirmRepl' : '古いファイルを新しいファイルで上書きしますか? (フォルダが含まれている場合は統合されます。置き換える場合は「バックアップ」選択してください。)', 'confirmRest' : '既存のアイテムをごみ箱のアイテムで上書きしますか?', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'UTF-8 以外の文字が含まれています。
                UTF-8 に変換しますか?
                変換後の保存でコンテンツは UTF-8 になります。', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'このファイルの文字エンコーディングを判別できませんでした。編集するには一時的に UTF-8 に変換する必要があります。
                文字エンコーディングを指定してください。', // from v2.1.19 added 28.11.2016 'confirmNotSave' : '変更されています。
                保存せずに閉じると編集内容が失われます。', // from v2.1 added 15.7.2015 'confirmTrash' : 'アイテムをごみ箱に移動してもよろしいですか?', //from v2.1.24 added 29.4.2017 'confirmMove' : 'アイテムを"$1"に移動してもよろしいですか?', //from v2.1.50 added 27.7.2019 'apllyAll' : '全てに適用します', 'name' : '名前', 'size' : 'サイズ', 'perms' : '権限', 'modify' : '更新', 'kind' : '種類', 'read' : '読み取り', 'write' : '書き込み', 'noaccess' : 'アクセス禁止', 'and' : ',', 'unknown' : '不明', 'selectall' : 'すべてのアイテムを選択', 'selectfiles' : 'アイテム選択', 'selectffile' : '最初のアイテムを選択', 'selectlfile' : '最後のアイテムを選択', 'viewlist' : 'リスト形式で表示', 'viewicons' : 'アイコン形式で表示', 'viewSmall' : '小アイコン', // from v2.1.39 added 22.5.2018 'viewMedium' : '中アイコン', // from v2.1.39 added 22.5.2018 'viewLarge' : '大アイコン', // from v2.1.39 added 22.5.2018 'viewExtraLarge' : '特大アイコン', // from v2.1.39 added 22.5.2018 'places' : 'よく使う項目', 'calc' : '計算中', 'path' : 'パス', 'aliasfor' : 'エイリアス', 'locked' : 'ロック', 'dim' : '画素数', 'files' : 'ファイル', 'folders' : 'フォルダ', 'items' : 'アイテム', 'yes' : 'はい', 'no' : 'いいえ', 'link' : 'リンク', 'searcresult' : '検索結果', 'selected' : '選択されたアイテム', 'about' : '概要', 'shortcuts' : 'ショートカット', 'help' : 'ヘルプ', 'webfm' : 'ウェブファイルマネージャー', 'ver' : 'バージョン', 'protocolver' : 'プロトコルバージョン', 'homepage' : 'プロジェクトホーム', 'docs' : 'ドキュメンテーション', 'github' : 'Github でフォーク', 'twitter' : 'Twitter でフォロー', 'facebook' : 'Facebookグループ に参加', 'team' : 'チーム', 'chiefdev' : 'チーフデベロッパー', 'developer' : 'デベロッパー', 'contributor' : 'コントリビュータ', 'maintainer' : 'メインテナー', 'translator' : '翻訳者', 'icons' : 'アイコン', 'dontforget' : 'タオル忘れちゃだめよ~', 'shortcutsof' : 'ショートカットは利用できません', 'dropFiles' : 'ここにファイルをドロップ', 'or' : 'または', 'selectForUpload' : 'ファイルを選択', 'moveFiles' : 'アイテムを移動', 'copyFiles' : 'アイテムをコピー', 'restoreFiles' : 'アイテムを元に戻す', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'ここから削除', 'aspectRatio' : '縦横比維持', 'scale' : '表示縮尺', 'width' : '幅', 'height' : '高さ', 'resize' : 'リサイズ', 'crop' : '切り抜き', 'rotate' : '回転', 'rotate-cw' : '90度左回転', 'rotate-ccw' : '90度右回転', 'degree' : '度', 'netMountDialogTitle' : 'ネットワークボリュームのマウント', // added 18.04.2012 'protocol' : 'プロトコル', // added 18.04.2012 'host' : 'ホスト名', // added 18.04.2012 'port' : 'ポート', // added 18.04.2012 'user' : 'ユーザー名', // added 18.04.2012 'pass' : 'パスワード', // added 18.04.2012 'confirmUnmount' : '$1をアンマウントしますか?', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'ブラウザからファイルをドロップまたは貼り付け', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'ここにファイルをドロップ または URLリスト, 画像(クリップボード) を貼り付け', // from v2.1 added 07.04.2014 'encoding' : 'エンコーディング', // from v2.1 added 19.12.2014 'locale' : 'ロケール', // from v2.1 added 19.12.2014 'searchTarget' : '検索範囲: $1', // from v2.1 added 22.5.2015 'searchMime' : '指定した MIME タイプで検索', // from v2.1 added 22.5.2015 'owner' : 'オーナー', // from v2.1 added 20.6.2015 'group' : 'グループ', // from v2.1 added 20.6.2015 'other' : 'その他', // from v2.1 added 20.6.2015 'execute' : '実行', // from v2.1 added 20.6.2015 'perm' : 'パーミッション', // from v2.1 added 20.6.2015 'mode' : '属性', // from v2.1 added 20.6.2015 'emptyFolder' : '空のフォルダ', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : '空のフォルダ\\Aアイテムを追加するにはここへドロップ', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : '空のフォルダ\\Aアイテムを追加するにはここをロングタップ', // from v2.1.6 added 30.12.2015 'quality' : '品質', // from v2.1.6 added 5.1.2016 'autoSync' : '自動更新', // from v2.1.6 added 10.1.2016 'moveUp' : '上へ移動', // from v2.1.6 added 18.1.2016 'getLink' : 'リンクURLを取得', // from v2.1.7 added 9.2.2016 'selectedItems' : '選択アイテム ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'フォルダID', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'オフライン アクセスを可能にする', // from v2.1.10 added 3.25.2016 'reAuth' : '再認証する', // from v2.1.10 added 3.25.2016 'nowLoading' : '読み込んでいます...', // from v2.1.12 added 4.26.2016 'openMulti' : '複数ファイルオープン', // from v2.1.12 added 5.14.2016 'openMultiConfirm': '$1 個のファイルを開こうとしています。このままブラウザで開きますか?', // from v2.1.12 added 5.14.2016 'emptySearch' : '検索対象に該当するアイテムはありません。', // from v2.1.12 added 5.16.2016 'editingFile' : 'ファイルを編集中です。', // from v2.1.13 added 6.3.2016 'hasSelected' : '$1 個のアイテムを選択中です。', // from v2.1.13 added 6.3.2016 'hasClipboard' : '$1 個のアイテムがクリップボードに入っています。', // from v2.1.13 added 6.3.2016 'incSearchOnly' : '逐次検索対象は現在のビューのみです。', // from v2.1.13 added 6.30.2016 'reinstate' : '元に戻す', // from v2.1.15 added 3.8.2016 'complete' : '$1 完了', // from v2.1.15 added 21.8.2016 'contextmenu' : 'コンテキストメニュー', // from v2.1.15 added 9.9.2016 'pageTurning' : 'ページめくり', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'ボリュームルート', // from v2.1.16 added 16.9.2016 'reset' : 'リセット', // from v2.1.16 added 1.10.2016 'bgcolor' : '背景色', // from v2.1.16 added 1.10.2016 'colorPicker' : 'カラーピッカー', // from v2.1.16 added 1.10.2016 '8pxgrid' : '8pxグリッド', // from v2.1.16 added 4.10.2016 'enabled' : '有効', // from v2.1.16 added 4.10.2016 'disabled' : '無効', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : '現在のビュー内に該当するアイテムはありません。\\A[Enter]キーで検索対象を拡げます。', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : '現在のビュー内に指定された文字で始まるアイテムはありません。', // from v2.1.23 added 24.3.2017 'textLabel' : 'テキストラベル', // from v2.1.17 added 13.10.2016 'minsLeft' : '残り$1分', // from v2.1.17 added 13.11.2016 'openAsEncoding' : '選択したエンコーディングで開き直す', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : '選択したエンコーディングで保存', // from v2.1.19 added 2.12.2016 'selectFolder' : 'フォルダを選択', // from v2.1.20 added 13.12.2016 'firstLetterSearch': '一文字目で検索', // from v2.1.23 added 24.3.2017 'presets' : 'プリセット', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : 'アイテム数が多すぎるのでごみ箱に入れられません。', // from v2.1.25 added 9.6.2017 'TextArea' : 'テキストエリア', // from v2.1.25 added 14.6.2017 'folderToEmpty' : 'フォルダ"$1"を空にします。', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : 'フォルダ"$1"にアイテムはありません。', // from v2.1.25 added 22.6.2017 'preference' : '個人設定', // from v2.1.26 added 28.6.2017 'language' : '言語', // from v2.1.26 added 28.6.2017 'clearBrowserData': 'ブラウザに保存された設定を初期化する', // from v2.1.26 added 28.6.2017 'toolbarPref' : 'ツールバー設定', // from v2.1.27 added 2.8.2017 'charsLeft' : '... 残り $1 文字', // from v2.1.29 added 30.8.2017 'linesLeft' : '... 残り $1 行', // from v2.1.52 added 16.1.2020 'sum' : '合計', // from v2.1.29 added 28.9.2017 'roughFileSize' : '大まかなファイルサイズ', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : 'マウスオーバーでダイアログの要素にフォーカスする', // from v2.1.30 added 2.11.2017 'select' : '選択', // from v2.1.30 added 23.11.2017 'selectAction' : 'ファイル選択時の動作', // from v2.1.30 added 23.11.2017 'useStoredEditor' : '前回使用したエディターで開く', // from v2.1.30 added 23.11.2017 'selectinvert' : '選択アイテムを反転', // from v2.1.30 added 25.11.2017 'renameMultiple' : '選択した $1 個のアイテムを $2 のようにリネームしますか?
                この操作は取り消しできません!', // from v2.1.31 added 4.12.2017 'batchRename' : '一括リネーム', // from v2.1.31 added 8.12.2017 'plusNumber' : '+ 連番', // from v2.1.31 added 8.12.2017 'asPrefix' : '先頭に追加', // from v2.1.31 added 8.12.2017 'asSuffix' : '末尾に追加', // from v2.1.31 added 8.12.2017 'changeExtention' : '拡張子変更', // from v2.1.31 added 8.12.2017 'columnPref' : '列項目設定(リストビュー)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : '全ての変更は、直ちにアーカイブに反映されます。', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : 'このボリュームをアンマウントするまで、変更は反映されません。', // from v2.1.33 added 2.3.2018 'unmountChildren' : 'このボリュームにマウントされている以下のボリュームもアンマウントされます。アンマウントしますか?', // from v2.1.33 added 5.3.2018 'selectionInfo' : '選択情報', // from v2.1.33 added 7.3.2018 'hashChecker' : 'ファイルハッシュを表示するアルゴリズム', // from v2.1.33 added 10.3.2018 'infoItems' : '情報項目 (選択情報パネル)', // from v2.1.38 added 28.3.2018 'pressAgainToExit': 'もう一度押すと終了します。', // from v2.1.38 added 1.4.2018 'toolbar' : 'ツールバー', // from v2.1.38 added 4.4.2018 'workspace' : 'ワークスペース', // from v2.1.38 added 4.4.2018 'dialog' : 'ダイアログ', // from v2.1.38 added 4.4.2018 'all' : 'すべて', // from v2.1.38 added 4.4.2018 'iconSize' : 'アイコンサイズ (アイコンビュー)', // from v2.1.39 added 7.5.2018 'editorMaximized' : 'エディターウィンドウを最大化して開く', // from v2.1.40 added 30.6.2018 'editorConvNoApi' : '現在 API による変換は利用できないので、Web サイトで変換を行ってください。', //from v2.1.40 added 8.7.2018 'editorConvNeedUpload' : '変換後に変換されたファイルを保存するには、アイテムの URL またはダウンロードしたファイルをアップロードする必要があります。', //from v2.1.40 added 8.7.2018 'convertOn' : '$1 のサイト上で変換する', // from v2.1.40 added 10.7.2018 'integrations' : '統合', // from v2.1.40 added 11.7.2018 'integrationWith' : 'この elFinder は次の外部サービスが統合されています。それらの利用規約、プライバシーポリシーなどをご確認の上、ご利用ください。', // from v2.1.40 added 11.7.2018 'showHidden' : '非表示アイテムを表示', // from v2.1.41 added 24.7.2018 'hideHidden' : '非表示アイテムを隠す', // from v2.1.41 added 24.7.2018 'toggleHidden' : '非表示アイテムの表示/非表示', // from v2.1.41 added 24.7.2018 'makefileTypes' : '「新しいファイル」で有効にするファイルタイプ', // from v2.1.41 added 7.8.2018 'typeOfTextfile' : 'テキストファイルのタイプ', // from v2.1.41 added 7.8.2018 'add' : '追加', // from v2.1.41 added 7.8.2018 'theme' : 'テーマ', // from v2.1.43 added 19.10.2018 'default' : 'デフォルト', // from v2.1.43 added 19.10.2018 'description' : '説明', // from v2.1.43 added 19.10.2018 'website' : 'ウェブサイト', // from v2.1.43 added 19.10.2018 'author' : '作者', // from v2.1.43 added 19.10.2018 'email' : 'Email', // from v2.1.43 added 19.10.2018 'license' : 'ライセンス', // from v2.1.43 added 19.10.2018 'exportToSave' : 'このアイテムは保存できません。 編集内容を失わないようにするには、PCにエクスポートする必要があります。', // from v2.1.44 added 1.12.2018 'dblclickToSelect': 'ファイルをダブルクリックして選択します。', // from v2.1.47 added 22.1.2019 'useFullscreen' : 'フルスクリーンモードの利用', // from v2.1.47 added 19.2.2019 /********************************** mimetypes **********************************/ 'kindUnknown' : '不明', 'kindRoot' : 'ボリュームルート', // from v2.1.16 added 16.10.2016 'kindFolder' : 'フォルダ', 'kindSelects' : '複数選択', // from v2.1.29 added 29.8.2017 'kindAlias' : '別名', 'kindAliasBroken' : '宛先不明の別名', // applications 'kindApp' : 'アプリケーション', 'kindPostscript' : 'Postscript ドキュメント', 'kindMsOffice' : 'Microsoft Office ドキュメント', 'kindMsWord' : 'Microsoft Word ドキュメント', 'kindMsExcel' : 'Microsoft Excel ドキュメント', 'kindMsPP' : 'Microsoft Powerpoint プレゼンテーション', 'kindOO' : 'Open Office ドキュメント', 'kindAppFlash' : 'Flash アプリケーション', 'kindPDF' : 'PDF', 'kindTorrent' : 'Bittorrent ファイル', 'kind7z' : '7z アーカイブ', 'kindTAR' : 'TAR アーカイブ', 'kindGZIP' : 'GZIP アーカイブ', 'kindBZIP' : 'BZIP アーカイブ', 'kindXZ' : 'XZ アーカイブ', 'kindZIP' : 'ZIP アーカイブ', 'kindRAR' : 'RAR アーカイブ', 'kindJAR' : 'Java JAR ファイル', 'kindTTF' : 'True Type フォント', 'kindOTF' : 'Open Type フォント', 'kindRPM' : 'RPM パッケージ', // texts 'kindText' : 'Text ドキュメント', 'kindTextPlain' : 'プレインテキスト', 'kindPHP' : 'PHP ソース', 'kindCSS' : 'スタイルシート', 'kindHTML' : 'HTML ドキュメント', 'kindJS' : 'Javascript ソース', 'kindRTF' : 'Rich Text フォーマット', 'kindC' : 'C ソース', 'kindCHeader' : 'C ヘッダーソース', 'kindCPP' : 'C++ ソース', 'kindCPPHeader' : 'C++ ヘッダーソース', 'kindShell' : 'Unix shell スクリプト', 'kindPython' : 'Python ソース', 'kindJava' : 'Java ソース', 'kindRuby' : 'Ruby ソース', 'kindPerl' : 'Perl スクリプト', 'kindSQL' : 'SQL ソース', 'kindXML' : 'XML ドキュメント', 'kindAWK' : 'AWK ソース', 'kindCSV' : 'CSV', 'kindDOCBOOK' : 'Docbook XML ドキュメント', 'kindMarkdown' : 'Markdown テキスト', // added 20.7.2015 // images 'kindImage' : 'イメージ', 'kindBMP' : 'BMP イメージ', 'kindJPEG' : 'JPEG イメージ', 'kindGIF' : 'GIF イメージ', 'kindPNG' : 'PNG イメージ', 'kindTIFF' : 'TIFF イメージ', 'kindTGA' : 'TGA イメージ', 'kindPSD' : 'Adobe Photoshop イメージ', 'kindXBITMAP' : 'X bitmap イメージ', 'kindPXM' : 'Pixelmator イメージ', // media 'kindAudio' : 'オーディオメディア', 'kindAudioMPEG' : 'MPEG オーディオ', 'kindAudioMPEG4' : 'MPEG-4 オーディオ', 'kindAudioMIDI' : 'MIDI オーディオ', 'kindAudioOGG' : 'Ogg Vorbis オーディオ', 'kindAudioWAV' : 'WAV オーディオ', 'AudioPlaylist' : 'MP3 プレイリスト', 'kindVideo' : 'ビデオメディア', 'kindVideoDV' : 'DV ムービー', 'kindVideoMPEG' : 'MPEG ムービー', 'kindVideoMPEG4' : 'MPEG-4 ムービー', 'kindVideoAVI' : 'AVI ムービー', 'kindVideoMOV' : 'Quick Time ムービー', 'kindVideoWM' : 'Windows Media ムービー', 'kindVideoFlash' : 'Flash ムービー', 'kindVideoMKV' : 'Matroska ムービー', 'kindVideoOGG' : 'Ogg ムービー' } }; })); plugins/file-manager-advanced/application/library/js/i18n/elfinder.ko.js000064400000105673147176754550022260 0ustar00/** * Korea-한국어 translation * @author Hwang Ahreum; * @author Park Sungyong; * @author Yeonjeong Woo * @author Kwon Hyungjoo * @version 2020-04-07 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.ko = { translator : 'Hwang Ahreum; <luckmagic@naver.com>, Park Sungyong; <sungyong@gmail.com>, Yeonjeong Woo <eat_sweetly@naver.com>, Kwon Hyungjoo <hyung778@gmail.com>', language : 'Korea-한국어', direction : 'ltr', dateFormat : 'Y-m-d H:i', // will show like: 2020-04-07 10:24 fancyDateFormat : '$1 H:i', // will show like: 오늘 10:24 nonameDateFormat : 'ymd-His', // noname upload will show like: 200407-102404 messages : { /********************************** errors **********************************/ 'error' : '오류', 'errUnknown' : '알 수 없는 오류.', 'errUnknownCmd' : '알 수 없는 명령어.', 'errJqui' : 'jQuery UI 설정이 올바르지 않습니다. Selectable, draggable 및 droppable 구성 요소가 포함되어 있어야 합니다.', 'errNode' : 'elFinder를 생성하기 위해서는 DOM Element를 요구합니다.', 'errURL' : 'elFinder 환경설정이 올바르지 않습니다! URL 옵션이 설정되지 않았습니다.', 'errAccess' : '접근 제한.', 'errConnect' : 'Backend에 연결할 수 없습니다.', 'errAbort' : '연결 실패.', 'errTimeout' : '연결시간 초과.', 'errNotFound' : 'Backend를 찾을 수 없습니다.', 'errResponse' : 'Backend가 응답하지 않습니다.', 'errConf' : 'Backend 환경설정이 올바르지 않습니다.', 'errJSON' : 'PHP JSON 모듈이 설치되지 않았습니다.', 'errNoVolumes' : '읽을 수 있는 볼륨이 없습니다.', 'errCmdParams' : '"$1" 명령에 잘못된 매개 변수가 있습니다.', 'errDataNotJSON' : '데이터가 JSON이 아닙니다.', 'errDataEmpty' : '데이터가 비어있습니다.', 'errCmdReq' : 'Backend 요청에는 명령어 이름이 필요합니다.', 'errOpen' : '"$1"을(를) 열 수 없습니다.', 'errNotFolder' : '폴더가 아닙니다.', 'errNotFile' : '파일이 아닙니다.', 'errRead' : '"$1"을(를) 읽을 수 없습니다.', 'errWrite' : '"$1"에 쓸 수 없습니다.', 'errPerm' : '권한이 없습니다.', 'errLocked' : '"$1"이(가) 잠겨 있습니다, 이동, 삭제가 불가능합니다', 'errExists' : '이미 "$1"파일이 존재합니다.', 'errInvName' : '파일명에 올바르지 않은 문자가 포함되었습니다.', 'errInvDirname' : '폴더명에 올바르지 않은 문자가 포함되었습니다.', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : '폴더를 찾을 수 없습니다.', 'errFileNotFound' : '파일을 찾을 수 없습니다.', 'errTrgFolderNotFound' : '"$1" 폴더를 찾을 수 없습니다.', 'errPopup' : '브라우저에서 팝업을 차단하였습니다. 팝업을 허용하려면 브라우저 옵션을 변경하세요.', 'errMkdir' : '"$1" 폴더를 생성할 수 없습니다.', 'errMkfile' : '"$1" 파일을 생성할 수 없습니다.', 'errRename' : '"$1"의 이름을 변경할 수 없습니다.', 'errCopyFrom' : '볼률 "$1"으(로)부터 파일을 복사할 수 없습니다.', 'errCopyTo' : '볼률 "$1"에 파일을 복사할 수 없습니다.', 'errMkOutLink' : 'root 볼륨 외부에 링크를 만들 수 없습니다.', // from v2.1 added 03.10.2015 'errUpload' : '업로드 오류.', // old name - errUploadCommon 'errUploadFile' : '"$1"을(를) 업로드할 수 없습니다.', // old name - errUpload 'errUploadNoFiles' : '업로드할 파일이 없습니다.', 'errUploadTotalSize' : '데이터가 허용된 최대크기를 초과하였습니다.', // old name - errMaxSize 'errUploadFileSize' : '파일이 허용된 최대크기를 초과하였습니다.', // old name - errFileMaxSize 'errUploadMime' : '잘못된 파일형식입니다.', 'errUploadTransfer' : '"$1" 전송 오류.', 'errUploadTemp' : '업로드에 필요한 임시파일 생성을 할 수 없습니다.', // from v2.1 added 26.09.2015 'errNotReplace' : '"$1"개체가 현재 위치에 이미 존재하며 다른 유형의 개체로 대체 할 수 없습니다.', // new 'errReplace' : '"$1"을(를) 변경할 수 없습니다.', 'errSave' : '"$1"을(를) 저장할 수 없습니다.', 'errCopy' : '"$1"을(를) 복사할 수 없습니다.', 'errMove' : '"$1"을(를) 이동할 수 없습니다.', 'errCopyInItself' : '"$1"을(를) 자기 자신에게 복사할 수 없습니다.', 'errRm' : '"$1"의 이름을 변경할 수 없습니다.', 'errTrash' : '휴지통으로 보낼 수 없습니다.', // from v2.1.24 added 30.4.2017 'errRmSrc' : '원본 파일을 제거할 수 없습니다.', 'errExtract' : '"$1"에 압축을 풀 수 없습니다.', 'errArchive' : '압축파일을 생성할 수 없습니다.', 'errArcType' : '지원하지 않는 압축파일 형식입니다.', 'errNoArchive' : '압축파일이 아니거나 지원하지 않는 압축파일 형식입니다.', 'errCmdNoSupport' : 'Backend에서 이 명령을 지원하지 않습니다.', 'errReplByChild' : '"$1" 폴더에 덮어쓸수 없습니다.', 'errArcSymlinks' : '보안상의 이유로 압축파일이 심볼릭 링크를 포함하거나 허용되지 않는 이름이 있을 경우 압축 해제가 불가능합니다.', // edited 24.06.2012 'errArcMaxSize' : '압축파일이 허용된 최대크기를 초과하였습니다.', 'errResize' : '"$1"의 크기 변경을 할 수 없습니다.', 'errResizeDegree' : '회전가능한 각도가 아닙니다.', // added 7.3.2013 'errResizeRotate' : '이미지를 회전할 수 없습니다.', // added 7.3.2013 'errResizeSize' : '올바르지 않은 크기의 이미지입니다.', // added 7.3.2013 'errResizeNoChange' : '이미지 크기가 변경되지 않았습니다.', // added 7.3.2013 'errUsupportType' : '지원하지 않는 파일 형식.', 'errNotUTF8Content' : '파일 "$1"은 UTF-8 형식이 아니어서 편집할 수 없습니다.', // added 9.11.2011 'errNetMount' : '"$1"을(를) 마운트할 수 없습니다.', // added 17.04.2012 'errNetMountNoDriver' : '지원되지 않는 프로토콜.', // added 17.04.2012 'errNetMountFailed' : '마운드 실패.', // added 17.04.2012 'errNetMountHostReq' : '호스트가 필요합니다.', // added 18.04.2012 'errSessionExpires' : '활동이 없어 세션이 만료되었습니다.', 'errCreatingTempDir' : '임시 폴더 생성에 실패했습니다: "$1"', 'errFtpDownloadFile' : 'FTP를 통한 다운로드에 실패했습니다: "$1"', 'errFtpUploadFile' : 'FTP에 업로드 실패했습니다: "$1"', 'errFtpMkdir' : 'FTP에서 폴더 생성에 실패했습니다: "$1"', 'errArchiveExec' : '압축중 오류가 발생했습니다: "$1"', 'errExtractExec' : '압축해제중 오류가 발생했습니다: "$1"', 'errNetUnMount' : '마운트를 해제할 수 없습니다.', // from v2.1 added 30.04.2012 'errConvUTF8' : 'UTF-8로 변환할 수 없습니다.', // from v2.1 added 08.04.2014 'errFolderUpload' : '폴더를 업로드 하려면 최신 브라우저를 사용하세요.', // from v2.1 added 26.6.2015 'errSearchTimeout' : '"$1" 검색중 시간을 초과하였습니다. 일부 결과만 표시됩니다.', // from v2.1 added 12.1.2016 'errReauthRequire' : '재인증이 필요합니다.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : '선택 가능한 최대 개수는 $1개입니다.', // from v2.1.17 added 17.10.2016 'errRestore' : '휴지통에서 복원할 수 없습니다. 복원할 위치를 확인할 수 없습니다.', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : '이 파일 형식을 위한 편집기를 찾지 못했습니다.', // from v2.1.25 added 23.5.2017 'errServerError' : '서버측에서 오류가 발생했습니다.', // from v2.1.25 added 16.6.2017 'errEmpty' : '"$1" 폴더를 비울 수 없습니다.', // from v2.1.25 added 22.6.2017 'moreErrors' : '$1개의 오류가 더 발생했습니다.', // from v2.1.44 added 9.12.2018 /******************************* commands names ********************************/ 'cmdarchive' : '압축파일생성', 'cmdback' : '뒤로', 'cmdcopy' : '복사', 'cmdcut' : '자르기', 'cmddownload' : '다운로드', 'cmdduplicate' : '사본', 'cmdedit' : '편집', 'cmdextract' : '압축풀기', 'cmdforward' : '앞으로', 'cmdgetfile' : '선택', 'cmdhelp' : '이 소프트웨어는', 'cmdhome' : '홈', 'cmdinfo' : '파일정보', 'cmdmkdir' : '새 폴더', 'cmdmkdirin' : '새 폴더로', // from v2.1.7 added 19.2.2016 'cmdmkfile' : '새 파일', 'cmdopen' : '열기', 'cmdpaste' : '붙여넣기', 'cmdquicklook' : '미리보기', 'cmdreload' : '새로고침', 'cmdrename' : '이름바꾸기', 'cmdrm' : '삭제', 'cmdtrash' : '휴지통으로', //from v2.1.24 added 29.4.2017 'cmdrestore' : '복원', //from v2.1.24 added 3.5.2017 'cmdsearch' : '파일찾기', 'cmdup' : '상위폴더', 'cmdupload' : '업로드', 'cmdview' : '보기', 'cmdresize' : '이미지 크기 변경 & 회전', 'cmdsort' : '정렬', 'cmdnetmount' : '네트워크 볼륨 마운트', // added 18.04.2012 'cmdnetunmount': '마운트 해제', // from v2.1 added 30.04.2012 'cmdplaces' : '즐겨찾기로', // added 28.12.2014 'cmdchmod' : '모드 변경', // from v2.1 added 20.6.2015 'cmdopendir' : '폴더 열기', // from v2.1 added 13.1.2016 'cmdcolwidth' : '컬럼 넓이 초기화', // from v2.1.13 added 12.06.2016 'cmdfullscreen': '전체 화면', // from v2.1.15 added 03.08.2016 'cmdmove' : '이동', // from v2.1.15 added 21.08.2016 'cmdempty' : '폴더 비우기', // from v2.1.25 added 22.06.2017 'cmdundo' : '실행 취소', // from v2.1.27 added 31.07.2017 'cmdredo' : '다시 실행', // from v2.1.27 added 31.07.2017 'cmdpreference': '환경설정', // from v2.1.27 added 03.08.2017 'cmdselectall' : '전체 선택', // from v2.1.28 added 15.08.2017 'cmdselectnone': '선택 취소', // from v2.1.28 added 15.08.2017 'cmdselectinvert': '선택 반전', // from v2.1.28 added 15.08.2017 'cmdopennew' : '새 창으로 열기', // from v2.1.38 added 3.4.2018 'cmdhide' : '숨기기 (환경설정)', // from v2.1.41 added 24.7.2018 /*********************************** buttons ***********************************/ 'btnClose' : '닫기', 'btnSave' : '저장', 'btnRm' : '삭제', 'btnApply' : '적용', 'btnCancel' : '취소', 'btnNo' : '아니오', 'btnYes' : '예', 'btnMount' : '마운트', // added 18.04.2012 'btnApprove': '$1로 이동 및 승인', // from v2.1 added 26.04.2012 'btnUnmount': '마운트 해제', // from v2.1 added 30.04.2012 'btnConv' : '변환', // from v2.1 added 08.04.2014 'btnCwd' : '여기', // from v2.1 added 22.5.2015 'btnVolume' : '볼륨', // from v2.1 added 22.5.2015 'btnAll' : '전체', // from v2.1 added 22.5.2015 'btnMime' : 'MIME 타입', // from v2.1 added 22.5.2015 'btnFileName':'파일 이름', // from v2.1 added 22.5.2015 'btnSaveClose': '저장후 닫기', // from v2.1 added 12.6.2015 'btnBackup' : '백업', // fromv2.1 added 28.11.2015 'btnRename' : '이름변경', // from v2.1.24 added 6.4.2017 'btnRenameAll' : '전체이름 변경', // from v2.1.24 added 6.4.2017 'btnPrevious' : '이전 ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : '다음 ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : '다른 이름으로 저장하기', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : '폴더 열기', 'ntffile' : '파일 열기', 'ntfreload' : '새로고침', 'ntfmkdir' : '폴더 생성', 'ntfmkfile' : '파일 생성', 'ntfrm' : '삭제', 'ntfcopy' : '복사', 'ntfmove' : '이동', 'ntfprepare' : '복사 준비', 'ntfrename' : '이름바꾸기', 'ntfupload' : '업로드', 'ntfdownload' : '다운로드', 'ntfsave' : '저장하기', 'ntfarchive' : '압축파일만들기', 'ntfextract' : '압축풀기', 'ntfsearch' : '검색', 'ntfresize' : '이미지 크기 변경', 'ntfsmth' : '작업중 >_<', 'ntfloadimg' : '이미지 불러오는 중', 'ntfnetmount' : '네트워크 볼륨 마운트 중', // added 18.04.2012 'ntfnetunmount': '네트워크 볼륨 마운트 해제 중', // from v2.1 added 30.04.2012 'ntfdim' : '이미지 해상도 가져오는 중', // added 20.05.2013 'ntfreaddir' : '폴더 정보 읽는 중', // from v2.1 added 01.07.2013 'ntfurl' : '링크 URL 가져오는 중', // from v2.1 added 11.03.2014 'ntfchmod' : '파일 모드 변경하는 중', // from v2.1 added 20.6.2015 'ntfpreupload': '업로드된 파일명 검증 중', // from v2.1 added 31.11.2015 'ntfzipdl' : '다운로드할 파일 생성 중', // from v2.1.7 added 23.1.2016 'ntfparents' : '경로 정보 가져오는 중', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': '업로드된 파일 처리 중', // from v2.1.17 added 2.11.2016 'ntftrash' : '휴지통으로 이동 중', // from v2.1.24 added 2.5.2017 'ntfrestore' : '휴지통에서 복원 중', // from v2.1.24 added 3.5.2017 'ntfchkdir' : '대상 폴더 점검 중', // from v2.1.24 added 3.5.2017 'ntfundo' : '이전 작업 취소 중', // from v2.1.27 added 31.07.2017 'ntfredo' : '취소된 작업 다시 하는 중', // from v2.1.27 added 31.07.2017 'ntfchkcontent' : '내용 확인 중', // from v2.1.41 added 3.8.2018 /*********************************** volumes *********************************/ 'volume_Trash' : '휴지통', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : '알 수 없음', 'Today' : '오늘', 'Yesterday' : '어제', 'msJan' : '1월', 'msFeb' : '2월', 'msMar' : '3월', 'msApr' : '4월', 'msMay' : '5월', 'msJun' : '6월', 'msJul' : '7월', 'msAug' : '8월', 'msSep' : '9월', 'msOct' : '10월', 'msNov' : '11월', 'msDec' : '12월', 'January' : '1월', 'February' : '2월', 'March' : '3월', 'April' : '4월', 'May' : '5월', 'June' : '6월', 'July' : '7월', 'August' : '8월', 'September' : '9월', 'October' : '10월', 'November' : '11월', 'December' : '12월', 'Sunday' : '일요일', 'Monday' : '월요일', 'Tuesday' : '화요일', 'Wednesday' : '수요일', 'Thursday' : '목요일', 'Friday' : '금요일', 'Saturday' : '토요일', 'Sun' : '일', 'Mon' : '월', 'Tue' : '화', 'Wed' : '수', 'Thu' : '목', 'Fri' : '금', 'Sat' : '토', /******************************** sort variants ********************************/ 'sortname' : '이름', 'sortkind' : '종류', 'sortsize' : '크기', 'sortdate' : '날짜', 'sortFoldersFirst' : '폴더 먼저', 'sortperm' : '퍼미션별', // from v2.1.13 added 13.06.2016 'sortmode' : '모드별', // from v2.1.13 added 13.06.2016 'sortowner' : '소유자별', // from v2.1.13 added 13.06.2016 'sortgroup' : '그룹별', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : '트리뷰도 같이', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : '새파일.txt', // added 10.11.2015 'untitled folder' : '새폴더', // added 10.11.2015 'Archive' : '새아카이브', // from v2.1 added 10.11.2015 'untitled file' : '새파일.$1', // from v2.1.41 added 6.8.2018 'extentionfile' : '$1: 파일', // from v2.1.41 added 6.8.2018 'extentiontype' : '$1: $2', // from v2.1.43 added 17.10.2018 /********************************** messages **********************************/ 'confirmReq' : '확인', 'confirmRm' : '이 파일을 정말로 삭제 하겠습니까?
                실행 후 되돌릴 수 없습니다!', 'confirmRepl' : '오래된 파일을 새 파일로 바꾸시겠습니까? (폴더가 포함되어 있으면 병합됩니다. 백업 및 교체하려면 백업을 선택하세요.)', 'confirmRest' : '이미 있는 파일을 휴지통에 있는 파일로 교체하시겠습니까?', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'UTF-8이 아닙니다
                UTF-8로 변환할까요?
                변환후 저장하면 UTF-8로 바뀝니다.', // from v2.1 added 08.04.2014 'confirmNonUTF8' : '이 파일의 인코딩 타입을 알아내지 못했습니다. 편집하려면 임시로 UTF-8로 변환해야 합니다.
                이 파일의 인코딩을 선택해주세요.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : '변경된 부분이 있습니다.
                저장하지 않는다면 현재 작업중인 내용을 잃을 수 있습니다.', // from v2.1 added 15.7.2015 'confirmTrash' : '휴지통으로 이동하시겠습니까?', //from v2.1.24 added 29.4.2017 'confirmMove' : '이 파일을 정말 "$1"(으)로 이동하시겠습니까?', //from v2.1.50 added 27.7.2019 'apllyAll' : '모두 적용', 'name' : '이름', 'size' : '크기', 'perms' : '권한', 'modify' : '수정된 시간', 'kind' : '종류', 'read' : '읽기', 'write' : '쓰기', 'noaccess' : '액세스 불가', 'and' : '와', 'unknown' : '알 수 없음', 'selectall' : '모든 파일 선택', 'selectfiles' : '파일 선택', 'selectffile' : '첫번째 파일 선택', 'selectlfile' : '마지막 파일 선택', 'viewlist' : '리스트 보기', 'viewicons' : '아이콘 보기', 'viewSmall' : '작은 아이콘', // from v2.1.39 added 22.5.2018 'viewMedium' : '중간 아이콘', // from v2.1.39 added 22.5.2018 'viewLarge' : '큰 아이콘', // from v2.1.39 added 22.5.2018 'viewExtraLarge' : '아주 큰 아이콘', // from v2.1.39 added 22.5.2018 'places' : '즐겨찾기', 'calc' : '계산', 'path' : '경로', 'aliasfor' : '별명', 'locked' : '잠금', 'dim' : '크기', 'files' : '파일', 'folders' : '폴더', 'items' : '아이템', 'yes' : '예', 'no' : '아니오', 'link' : '링크', 'searcresult' : '검색 결과', 'selected' : '아이템 선택', 'about' : '이 프로그램은..', 'shortcuts' : '단축아이콘', 'help' : '도움말', 'webfm' : '웹 파일매니저', 'ver' : '버전', 'protocolver' : '프로토콜 버전', 'homepage' : '홈페이지', 'docs' : '문서', 'github' : 'Github에서 포크하기', 'twitter' : '트위터에서 팔로우하기', 'facebook' : '페이스북에서 가입하기', 'team' : '팀', 'chiefdev' : '개발팀장', 'developer' : '개발자', 'contributor' : '공헌자', 'maintainer' : '관리자', 'translator' : '번역', 'icons' : '아이콘', 'dontforget' : '그리고 수건 가져가는 것을 잊지 마세요', 'shortcutsof' : '단축아이콘 사용불가', 'dropFiles' : '여기로 이동하기', 'or' : '또는', 'selectForUpload' : '업로드 파일 선택', 'moveFiles' : '파일 이동', 'copyFiles' : '파일 복사', 'restoreFiles' : '복원하기', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : '현재 폴더에서 삭제하기', 'aspectRatio' : '화면비율', 'scale' : '크기', 'width' : '가로', 'height' : '세로', 'resize' : '사이즈 변경', 'crop' : '자르기', 'rotate' : '회전', 'rotate-cw' : '반시계방향 90도 회전', 'rotate-ccw' : '시계방향 90도 회전', 'degree' : '도', 'netMountDialogTitle' : '네트워크 볼륨 마운트', // added 18.04.2012 'protocol' : '프로토콜', // added 18.04.2012 'host' : '호스트', // added 18.04.2012 'port' : '포트', // added 18.04.2012 'user' : '사용자', // added 18.04.2012 'pass' : '비밀번호', // added 18.04.2012 'confirmUnmount' : '$1을(를) 마운트 해제하시겠습니까?', // from v2.1 added 30.04.2012 'dropFilesBrowser': '브라우저에서 파일을 끌어오거나 붙여넣으세요', // from v2.1 added 30.05.2012 'dropPasteFiles' : '파일을 끌어오거나, 클립보드의 URL이나 이미지들을 붙여넣으세요', // from v2.1 added 07.04.2014 'encoding' : '인코딩', // from v2.1 added 19.12.2014 'locale' : '로케일', // from v2.1 added 19.12.2014 'searchTarget' : '대상: $1', // from v2.1 added 22.5.2015 'searchMime' : '입력한 MIME 타입으로 검색하기', // from v2.1 added 22.5.2015 'owner' : '소유자', // from v2.1 added 20.6.2015 'group' : '그룹', // from v2.1 added 20.6.2015 'other' : '그외', // from v2.1 added 20.6.2015 'execute' : '실행', // from v2.1 added 20.6.2015 'perm' : '권한', // from v2.1 added 20.6.2015 'mode' : '모드', // from v2.1 added 20.6.2015 'emptyFolder' : '빈 폴더입니다', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : '빈 폴더입니다\\A 드래드 앤 드롭으로 파일을 추가하세요', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : '빈 폴더입니다\\A 길게 눌러 파일을 추가하세요', // from v2.1.6 added 30.12.2015 'quality' : '품질', // from v2.1.6 added 5.1.2016 'autoSync' : '자동 동기', // from v2.1.6 added 10.1.2016 'moveUp' : '위로 이동', // from v2.1.6 added 18.1.2016 'getLink' : 'URL 링크 가져오기', // from v2.1.7 added 9.2.2016 'selectedItems' : '선택된 항목 ($1)', // from v2.1.7 added 2.19.2016 'folderId' : '폴더 ID', // from v2.1.10 added 3.25.2016 'offlineAccess' : '오프라인 접근 허용', // from v2.1.10 added 3.25.2016 'reAuth' : '재인증하기', // from v2.1.10 added 3.25.2016 'nowLoading' : '로딩중...', // from v2.1.12 added 4.26.2016 'openMulti' : '여러 파일 열기', // from v2.1.12 added 5.14.2016 'openMultiConfirm': '$1 파일을 열려고 합니다. 브라우저에서 열겠습니까?', // from v2.1.12 added 5.14.2016 'emptySearch' : '검색결과가 없습니다.', // from v2.1.12 added 5.16.2016 'editingFile' : '편집중인 파일입니다.', // from v2.1.13 added 6.3.2016 'hasSelected' : '$1개를 선택했습니다.', // from v2.1.13 added 6.3.2016 'hasClipboard' : '클립보드에 $1개가 있습니다.', // from v2.1.13 added 6.3.2016 'incSearchOnly' : '증분 검색은 현재 보기에서만 가능합니다.', // from v2.1.13 added 6.30.2016 'reinstate' : '복원', // from v2.1.15 added 3.8.2016 'complete' : '$1 완료', // from v2.1.15 added 21.8.2016 'contextmenu' : '컨텍스트 메뉴', // from v2.1.15 added 9.9.2016 'pageTurning' : '페이지 전환', // from v2.1.15 added 10.9.2016 'volumeRoots' : '볼륨 루트', // from v2.1.16 added 16.9.2016 'reset' : '초기화', // from v2.1.16 added 1.10.2016 'bgcolor' : '배경색', // from v2.1.16 added 1.10.2016 'colorPicker' : '색 선택기', // from v2.1.16 added 1.10.2016 '8pxgrid' : '8px 그리드', // from v2.1.16 added 4.10.2016 'enabled' : '활성', // from v2.1.16 added 4.10.2016 'disabled' : '비활성', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : '현재 보기에는 검색결과가 없습니다.\\A[Enter]를 눌러 검색 대상을 확장하세요.', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : '현재 보기에는 첫 글자 검색 결과가 없습니다.', // from v2.1.23 added 24.3.2017 'textLabel' : '텍스트 라벨', // from v2.1.17 added 13.10.2016 'minsLeft' : '$1 분 남았습니다', // from v2.1.17 added 13.11.2016 'openAsEncoding' : '선택한 인코딩으로 다시 열기', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : '선택한 인코딩으로 저장하기', // from v2.1.19 added 2.12.2016 'selectFolder' : '폴더 선택', // from v2.1.20 added 13.12.2016 'firstLetterSearch': '첫 글자 검색', // from v2.1.23 added 24.3.2017 'presets' : '프리셋', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : '휴지통으로 옮기기엔 항목이 너무 많습니다.', // from v2.1.25 added 9.6.2017 'TextArea' : '글자영역', // from v2.1.25 added 14.6.2017 'folderToEmpty' : '"$1" 폴더를 비우세요.', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : '"$1" 폴더에 아무것도 없습니다.', // from v2.1.25 added 22.6.2017 'preference' : '환경설정', // from v2.1.26 added 28.6.2017 'language' : '언어 설정', // from v2.1.26 added 28.6.2017 'clearBrowserData': '이 브라우저에 저장된 설정값 초기화하기', // from v2.1.26 added 28.6.2017 'toolbarPref' : '툴바 설정', // from v2.1.27 added 2.8.2017 'charsLeft' : '... $1 글자 남았습니다.', // from v2.1.29 added 30.8.2017 'linesLeft' : '... $1 줄 남았습니다.', // from v2.1.52 added 16.1.2020 'sum' : '합계', // from v2.1.29 added 28.9.2017 'roughFileSize' : '대략적인 파일 크기', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : '마우스를 가져갈 때 대화창 요소에 초점 맞추기', // from v2.1.30 added 2.11.2017 'select' : '선택', // from v2.1.30 added 23.11.2017 'selectAction' : '파일 선택시 동작', // from v2.1.30 added 23.11.2017 'useStoredEditor' : '마지막 사용한 편집기로 열기', // from v2.1.30 added 23.11.2017 'selectinvert' : '선택 반전', // from v2.1.30 added 25.11.2017 'renameMultiple' : '선택한 $1을(를) $2와 같이 바꾸겠습니까?
                이 작업은 되돌릴 수 없습니다!', // from v2.1.31 added 4.12.2017 'batchRename' : '일괄 이름 바꾸기', // from v2.1.31 added 8.12.2017 'plusNumber' : '+ 숫자', // from v2.1.31 added 8.12.2017 'asPrefix' : '접두사 추가', // from v2.1.31 added 8.12.2017 'asSuffix' : '접미사 추가', // from v2.1.31 added 8.12.2017 'changeExtention' : '확장자 변경', // from v2.1.31 added 8.12.2017 'columnPref' : '사이드바 설정 (리스트 보기)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : '모든 변경은 아카이브에 즉시 반영됩니다.', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : '이 볼륨의 마운트를 해제할 때까지는 어떠한 변경사항도 반영되지 않습니다.', // from v2.1.33 added 2.3.2018 'unmountChildren' : '아래의 볼륨들도 이 볼륨과 함께 마운트가 해제됩니다. 계속하시겠습니까?', // from v2.1.33 added 5.3.2018 'selectionInfo' : '선택 정보', // from v2.1.33 added 7.3.2018 'hashChecker' : '파일 해쉬 알고리즘', // from v2.1.33 added 10.3.2018 'infoItems' : '정보 (선택 정보 패널)', // from v2.1.38 added 28.3.2018 'pressAgainToExit': '나가기 위해서 한 번 더 누르세요.', // from v2.1.38 added 1.4.2018 'toolbar' : '툴바', // from v2.1.38 added 4.4.2018 'workspace' : '작업공간', // from v2.1.38 added 4.4.2018 'dialog' : '대화상자', // from v2.1.38 added 4.4.2018 'all' : '전체', // from v2.1.38 added 4.4.2018 'iconSize' : '아이콘 크기 (아이콘 보기)', // from v2.1.39 added 7.5.2018 'editorMaximized' : '최대화된 편집기 창을 엽니다', // from v2.1.40 added 30.6.2018 'editorConvNoApi' : '현재 API를 통한 변환이 불가능하므로 웹 사이트에서 변환하시기 바랍니다.', //from v2.1.40 added 8.7.2018 'editorConvNeedUpload' : '변환 후 변환된 파일을 저장하기 위해서는 파일 URL이나 다운로드받은 파일을 업로드 해야 합니다.', //from v2.1.40 added 8.7.2018 'convertOn' : '$1 사이트에서 변환하시기 바랍니다.', // from v2.1.40 added 10.7.2018 'integrations' : '통합', // from v2.1.40 added 11.7.2018 'integrationWith' : 'elFinder에는 다음과 같은 외부 서비스가 통합되어 있습니다. 이용하기 전에 이용 약관, 개인정보 보호정책 등을 확인하시기 바랍니다.', // from v2.1.40 added 11.7.2018 'showHidden' : '숨겨진 파일 표시', // from v2.1.41 added 24.7.2018 'hideHidden' : '숨겨진 파일 숨기기', // from v2.1.41 added 24.7.2018 'toggleHidden' : '숨겨진 항목 표시/숨기기', // from v2.1.41 added 24.7.2018 'makefileTypes' : '"새 파일"에서 사용할 파일 형식', // from v2.1.41 added 7.8.2018 'typeOfTextfile' : '텍스트 파일 유형', // from v2.1.41 added 7.8.2018 'add' : '추가', // from v2.1.41 added 7.8.2018 'theme' : '테마', // from v2.1.43 added 19.10.2018 'default' : '기본값', // from v2.1.43 added 19.10.2018 'description' : '설명', // from v2.1.43 added 19.10.2018 'website' : '웹사이트', // from v2.1.43 added 19.10.2018 'author' : '저자', // from v2.1.43 added 19.10.2018 'email' : '이메일', // from v2.1.43 added 19.10.2018 'license' : '라이선스', // from v2.1.43 added 19.10.2018 'exportToSave' : '이 파일은 저장될 수 없습니다. 편집한 내용을 유지하려면 PC로 내보내시기 바랍니다.', // from v2.1.44 added 1.12.2018 'dblclickToSelect': '파일을 두 번 클릭하여 선택하세요.', // from v2.1.47 added 22.1.2019 'useFullscreen' : '전체 화면 모드 사용', // from v2.1.47 added 19.2.2019 /********************************** mimetypes **********************************/ 'kindUnknown' : '알 수 없음', 'kindRoot' : 'Root 볼륨', // from v2.1.16 added 16.10.2016 'kindFolder' : '폴더', 'kindSelects' : '선택', // from v2.1.29 added 29.8.2017 'kindAlias' : '별칭', 'kindAliasBroken' : '손상된 별칭', // applications 'kindApp' : '응용프로그램', 'kindPostscript' : 'Postscript 문서', 'kindMsOffice' : 'Microsoft Office 문서', 'kindMsWord' : 'Microsoft Word 문서', 'kindMsExcel' : 'Microsoft Excel 문서', 'kindMsPP' : 'Microsoft Powerpoint 프레젠테이션', 'kindOO' : 'Open Office 문서', 'kindAppFlash' : '플래쉬 파일', 'kindPDF' : 'PDF 문서', 'kindTorrent' : '비트토렌트 파일', 'kind7z' : '7z 압축파일', 'kindTAR' : 'TAR 압축파일', 'kindGZIP' : 'GZIP 압축파일', 'kindBZIP' : 'BZIP 압축파일', 'kindXZ' : 'XZ 압축파일', 'kindZIP' : 'ZIP 압축파일', 'kindRAR' : 'RAR 압축파일', 'kindJAR' : '자바 JAR 파일', 'kindTTF' : '트루 타입 글꼴', 'kindOTF' : '오픈 타입 글꼴', 'kindRPM' : 'RPM 패키지', // texts 'kindText' : '텍스트 문서', 'kindTextPlain' : '일반 텍스트', 'kindPHP' : 'PHP 소스', 'kindCSS' : 'CSS 문서', 'kindHTML' : 'HTML 문서', 'kindJS' : '자바스크립트 소스', 'kindRTF' : 'RTF 형식', 'kindC' : 'C 소스', 'kindCHeader' : 'C 헤더 소스', 'kindCPP' : 'C++ 소스', 'kindCPPHeader' : 'C++ 헤더 소스', 'kindShell' : '유닉스 쉘 스크립트', 'kindPython' : '파이썬 소스', 'kindJava' : '자바 소스', 'kindRuby' : '루비 소스', 'kindPerl' : '펄 스크립트', 'kindSQL' : 'SQL 소스', 'kindXML' : 'XML 문서', 'kindAWK' : 'AWK 소스', 'kindCSV' : 'CSV 파일', 'kindDOCBOOK' : '닥북 XML 문서', 'kindMarkdown' : '마크다운 문서', // added 20.7.2015 // images 'kindImage' : '이미지', 'kindBMP' : 'BMP 이미지', 'kindJPEG' : 'JPEG 이미지', 'kindGIF' : 'GIF 이미지', 'kindPNG' : 'PNG 이미지', 'kindTIFF' : 'TIFF 이미지', 'kindTGA' : 'TGA 이미지', 'kindPSD' : 'Adobe Photoshop 이미지', 'kindXBITMAP' : 'X 비트맵 이미지', 'kindPXM' : 'Pixelmator 이미지', // media 'kindAudio' : '오디오 미디어', 'kindAudioMPEG' : 'MPEG 오디오', 'kindAudioMPEG4' : 'MPEG-4 오디오', 'kindAudioMIDI' : 'MIDI 오디오', 'kindAudioOGG' : 'Ogg Vorbis 오디오', 'kindAudioWAV' : 'WAV 오디오', 'AudioPlaylist' : 'MP3 플레이 리스트', 'kindVideo' : '동영상 미디어', 'kindVideoDV' : 'DV 동영상', 'kindVideoMPEG' : 'MPEG 동영상', 'kindVideoMPEG4' : 'MPEG-4 동영상', 'kindVideoAVI' : 'AVI 동영상', 'kindVideoMOV' : '퀵 타임 동영상', 'kindVideoWM' : '윈도우 미디어 플레이어 동영상', 'kindVideoFlash' : '플래쉬 동영상', 'kindVideoMKV' : 'Matroska 동영상', 'kindVideoOGG' : 'Ogg 동영상' } }; })); plugins/file-manager-advanced/application/library/js/i18n/elfinder.LANG.js000064400000077754147176754550022400 0ustar00/** * elFinder translation template * use this file to create new translation * submit new translation via https://github.com/Studio-42/elFinder/issues * or make a pull request */ /** * XXXXX translation * @author Translator Name * @version 201x-xx-xx */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.REPLACE_WITH_xx_OR_xx_YY_LANG_CODE = { translator : 'Translator name <translator@email.tld>', language : 'Language of translation in your language', direction : 'ltr', dateFormat : 'M d, Y h:i A', // will show like: Mar 13, 2012 05:27 PM fancyDateFormat : '$1 h:i A', // will show like: Today 12:25 PM nonameDateFormat : 'ymd-His', // noname upload will show like: 120513-172700 messages : { /********************************** errors **********************************/ 'error' : 'Error', 'errUnknown' : 'Unknown error.', 'errUnknownCmd' : 'Unknown command.', 'errJqui' : 'Invalid jQuery UI configuration. Selectable, draggable and droppable components must be included.', 'errNode' : 'elFinder requires DOM Element to be created.', 'errURL' : 'Invalid elFinder configuration! URL option is not set.', 'errAccess' : 'Access denied.', 'errConnect' : 'Unable to connect to backend.', 'errAbort' : 'Connection aborted.', 'errTimeout' : 'Connection timeout.', 'errNotFound' : 'Backend not found.', 'errResponse' : 'Invalid backend response.', 'errConf' : 'Invalid backend configuration.', 'errJSON' : 'PHP JSON module not installed.', 'errNoVolumes' : 'Readable volumes not available.', 'errCmdParams' : 'Invalid parameters for command "$1".', 'errDataNotJSON' : 'Data is not JSON.', 'errDataEmpty' : 'Data is empty.', 'errCmdReq' : 'Backend request requires command name.', 'errOpen' : 'Unable to open "$1".', 'errNotFolder' : 'Object is not a folder.', 'errNotFile' : 'Object is not a file.', 'errRead' : 'Unable to read "$1".', 'errWrite' : 'Unable to write into "$1".', 'errPerm' : 'Permission denied.', 'errLocked' : '"$1" is locked and can not be renamed, moved or removed.', 'errExists' : 'Item named "$1" already exists.', 'errInvName' : 'Invalid file name.', 'errInvDirname' : 'Invalid folder name.', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : 'Folder not found.', 'errFileNotFound' : 'File not found.', 'errTrgFolderNotFound' : 'Target folder "$1" not found.', 'errPopup' : 'Browser prevented opening popup window. To open file enable it in browser options.', 'errMkdir' : 'Unable to create folder "$1".', 'errMkfile' : 'Unable to create file "$1".', 'errRename' : 'Unable to rename "$1".', 'errCopyFrom' : 'Copying files from volume "$1" not allowed.', 'errCopyTo' : 'Copying files to volume "$1" not allowed.', 'errMkOutLink' : 'Unable to create a link to outside the volume root.', // from v2.1 added 03.10.2015 'errUpload' : 'Upload error.', // old name - errUploadCommon 'errUploadFile' : 'Unable to upload "$1".', // old name - errUpload 'errUploadNoFiles' : 'No files found for upload.', 'errUploadTotalSize' : 'Data exceeds the maximum allowed size.', // old name - errMaxSize 'errUploadFileSize' : 'File exceeds maximum allowed size.', // old name - errFileMaxSize 'errUploadMime' : 'File type not allowed.', 'errUploadTransfer' : '"$1" transfer error.', 'errUploadTemp' : 'Unable to make temporary file for upload.', // from v2.1 added 26.09.2015 'errNotReplace' : 'Object "$1" already exists at this location and can not be replaced by object with another type.', // new 'errReplace' : 'Unable to replace "$1".', 'errSave' : 'Unable to save "$1".', 'errCopy' : 'Unable to copy "$1".', 'errMove' : 'Unable to move "$1".', 'errCopyInItself' : 'Unable to copy "$1" into itself.', 'errRm' : 'Unable to remove "$1".', 'errTrash' : 'Unable into trash.', // from v2.1.24 added 30.4.2017 'errRmSrc' : 'Unable remove source file(s).', 'errExtract' : 'Unable to extract files from "$1".', 'errArchive' : 'Unable to create archive.', 'errArcType' : 'Unsupported archive type.', 'errNoArchive' : 'File is not archive or has unsupported archive type.', 'errCmdNoSupport' : 'Backend does not support this command.', 'errReplByChild' : 'The folder "$1" can\'t be replaced by an item it contains.', 'errArcSymlinks' : 'For security reason denied to unpack archives contains symlinks or files with not allowed names.', // edited 24.06.2012 'errArcMaxSize' : 'Archive files exceeds maximum allowed size.', 'errResize' : 'Unable to resize "$1".', 'errResizeDegree' : 'Invalid rotate degree.', // added 7.3.2013 'errResizeRotate' : 'Unable to rotate image.', // added 7.3.2013 'errResizeSize' : 'Invalid image size.', // added 7.3.2013 'errResizeNoChange' : 'Image size not changed.', // added 7.3.2013 'errUsupportType' : 'Unsupported file type.', 'errNotUTF8Content' : 'File "$1" is not in UTF-8 and cannot be edited.', // added 9.11.2011 'errNetMount' : 'Unable to mount "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'Unsupported protocol.', // added 17.04.2012 'errNetMountFailed' : 'Mount failed.', // added 17.04.2012 'errNetMountHostReq' : 'Host required.', // added 18.04.2012 'errSessionExpires' : 'Your session has expired due to inactivity.', 'errCreatingTempDir' : 'Unable to create temporary directory: "$1"', 'errFtpDownloadFile' : 'Unable to download file from FTP: "$1"', 'errFtpUploadFile' : 'Unable to upload file to FTP: "$1"', 'errFtpMkdir' : 'Unable to create remote directory on FTP: "$1"', 'errArchiveExec' : 'Error while archiving files: "$1"', 'errExtractExec' : 'Error while extracting files: "$1"', 'errNetUnMount' : 'Unable to unmount.', // from v2.1 added 30.04.2012 'errConvUTF8' : 'Not convertible to UTF-8', // from v2.1 added 08.04.2014 'errFolderUpload' : 'Try the modern browser, If you\'d like to upload the folder.', // from v2.1 added 26.6.2015 'errSearchTimeout' : 'Timed out while searching "$1". Search result is partial.', // from v2.1 added 12.1.2016 'errReauthRequire' : 'Re-authorization is required.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'Max number of selectable items is $1.', // from v2.1.17 added 17.10.2016 'errRestore' : 'Unable to restore from the trash. Can\'t identify the restore destination.', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'Editor not found to this file type.', // from v2.1.25 added 23.5.2017 'errServerError' : 'Error occurred on the server side.', // from v2.1.25 added 16.6.2017 'errEmpty' : 'Unable to empty folder "$1".', // from v2.1.25 added 22.6.2017 'moreErrors' : 'There are $1 more errors.', // from v2.1.44 added 9.12.2018 'errMaxMkdirs' : 'You can create up to $1 folders at one time.', // from v2.1.58 added 20.6.2021 /******************************* commands names ********************************/ 'cmdarchive' : 'Create archive', 'cmdback' : 'Back', 'cmdcopy' : 'Copy', 'cmdcut' : 'Cut', 'cmddownload' : 'Download', 'cmdduplicate' : 'Duplicate', 'cmdedit' : 'Edit file', 'cmdextract' : 'Extract files from archive', 'cmdforward' : 'Forward', 'cmdgetfile' : 'Select files', 'cmdhelp' : 'About this software', 'cmdhome' : 'Root', 'cmdinfo' : 'Get info', 'cmdmkdir' : 'New folder', 'cmdmkdirin' : 'Into New Folder', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'New file', 'cmdopen' : 'Open', 'cmdpaste' : 'Paste', 'cmdquicklook' : 'Preview', 'cmdreload' : 'Reload', 'cmdrename' : 'Rename', 'cmdrm' : 'Delete', 'cmdtrash' : 'Into trash', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'Restore', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'Find files', 'cmdup' : 'Go to parent folder', 'cmdupload' : 'Upload files', 'cmdview' : 'View', 'cmdresize' : 'Resize & Rotate', 'cmdsort' : 'Sort', 'cmdnetmount' : 'Mount network volume', // added 18.04.2012 'cmdnetunmount': 'Unmount', // from v2.1 added 30.04.2012 'cmdplaces' : 'To Places', // added 28.12.2014 'cmdchmod' : 'Change mode', // from v2.1 added 20.6.2015 'cmdopendir' : 'Open a folder', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'Reset column width', // from v2.1.13 added 12.06.2016 'cmdfullscreen': 'Full Screen', // from v2.1.15 added 03.08.2016 'cmdmove' : 'Move', // from v2.1.15 added 21.08.2016 'cmdempty' : 'Empty the folder', // from v2.1.25 added 22.06.2017 'cmdundo' : 'Undo', // from v2.1.27 added 31.07.2017 'cmdredo' : 'Redo', // from v2.1.27 added 31.07.2017 'cmdpreference': 'Preferences', // from v2.1.27 added 03.08.2017 'cmdselectall' : 'Select all', // from v2.1.28 added 15.08.2017 'cmdselectnone': 'Select none', // from v2.1.28 added 15.08.2017 'cmdselectinvert': 'Invert selection', // from v2.1.28 added 15.08.2017 'cmdopennew' : 'Open in new window', // from v2.1.38 added 3.4.2018 'cmdhide' : 'Hide (Preference)', // from v2.1.41 added 24.7.2018 /*********************************** buttons ***********************************/ 'btnClose' : 'Close', 'btnSave' : 'Save', 'btnRm' : 'Remove', 'btnApply' : 'Apply', 'btnCancel' : 'Cancel', 'btnNo' : 'No', 'btnYes' : 'Yes', 'btnMount' : 'Mount', // added 18.04.2012 'btnApprove': 'Goto $1 & approve', // from v2.1 added 26.04.2012 'btnUnmount': 'Unmount', // from v2.1 added 30.04.2012 'btnConv' : 'Convert', // from v2.1 added 08.04.2014 'btnCwd' : 'Here', // from v2.1 added 22.5.2015 'btnVolume' : 'Volume', // from v2.1 added 22.5.2015 'btnAll' : 'All', // from v2.1 added 22.5.2015 'btnMime' : 'MIME Type', // from v2.1 added 22.5.2015 'btnFileName':'Filename', // from v2.1 added 22.5.2015 'btnSaveClose': 'Save & Close', // from v2.1 added 12.6.2015 'btnBackup' : 'Backup', // fromv2.1 added 28.11.2015 'btnRename' : 'Rename', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'Rename(All)', // from v2.1.24 added 6.4.2017 'btnPrevious' : 'Prev ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : 'Next ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : 'Save As', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'Open folder', 'ntffile' : 'Open file', 'ntfreload' : 'Reload folder content', 'ntfmkdir' : 'Creating folder', 'ntfmkfile' : 'Creating files', 'ntfrm' : 'Delete items', 'ntfcopy' : 'Copy items', 'ntfmove' : 'Move items', 'ntfprepare' : 'Checking existing items', 'ntfrename' : 'Rename files', 'ntfupload' : 'Uploading files', 'ntfdownload' : 'Downloading files', 'ntfsave' : 'Save files', 'ntfarchive' : 'Creating archive', 'ntfextract' : 'Extracting files from archive', 'ntfsearch' : 'Searching files', 'ntfresize' : 'Resizing images', 'ntfsmth' : 'Doing something', 'ntfloadimg' : 'Loading image', 'ntfnetmount' : 'Mounting network volume', // added 18.04.2012 'ntfnetunmount': 'Unmounting network volume', // from v2.1 added 30.04.2012 'ntfdim' : 'Acquiring image dimension', // added 20.05.2013 'ntfreaddir' : 'Reading folder infomation', // from v2.1 added 01.07.2013 'ntfurl' : 'Getting URL of link', // from v2.1 added 11.03.2014 'ntfchmod' : 'Changing file mode', // from v2.1 added 20.6.2015 'ntfpreupload': 'Verifying upload file name', // from v2.1 added 31.11.2015 'ntfzipdl' : 'Creating a file for download', // from v2.1.7 added 23.1.2016 'ntfparents' : 'Getting path infomation', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'Processing the uploaded file', // from v2.1.17 added 2.11.2016 'ntftrash' : 'Doing throw in the trash', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'Doing restore from the trash', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'Checking destination folder', // from v2.1.24 added 3.5.2017 'ntfundo' : 'Undoing previous operation', // from v2.1.27 added 31.07.2017 'ntfredo' : 'Redoing previous undone', // from v2.1.27 added 31.07.2017 'ntfchkcontent' : 'Checking contents', // from v2.1.41 added 3.8.2018 /*********************************** volumes *********************************/ 'volume_Trash' : 'Trash', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : 'unknown', 'Today' : 'Today', 'Yesterday' : 'Yesterday', 'msJan' : 'Jan', 'msFeb' : 'Feb', 'msMar' : 'Mar', 'msApr' : 'Apr', 'msMay' : 'May', 'msJun' : 'Jun', 'msJul' : 'Jul', 'msAug' : 'Aug', 'msSep' : 'Sep', 'msOct' : 'Oct', 'msNov' : 'Nov', 'msDec' : 'Dec', 'January' : 'January', 'February' : 'February', 'March' : 'March', 'April' : 'April', 'May' : 'May', 'June' : 'June', 'July' : 'July', 'August' : 'August', 'September' : 'September', 'October' : 'October', 'November' : 'November', 'December' : 'December', 'Sunday' : 'Sunday', 'Monday' : 'Monday', 'Tuesday' : 'Tuesday', 'Wednesday' : 'Wednesday', 'Thursday' : 'Thursday', 'Friday' : 'Friday', 'Saturday' : 'Saturday', 'Sun' : 'Sun', 'Mon' : 'Mon', 'Tue' : 'Tue', 'Wed' : 'Wed', 'Thu' : 'Thu', 'Fri' : 'Fri', 'Sat' : 'Sat', /******************************** sort variants ********************************/ 'sortname' : 'by name', 'sortkind' : 'by kind', 'sortsize' : 'by size', 'sortdate' : 'by date', 'sortFoldersFirst' : 'Folders first', 'sortperm' : 'by permission', // from v2.1.13 added 13.06.2016 'sortmode' : 'by mode', // from v2.1.13 added 13.06.2016 'sortowner' : 'by owner', // from v2.1.13 added 13.06.2016 'sortgroup' : 'by group', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'Also Treeview', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : 'NewFile.txt', // added 10.11.2015 'untitled folder' : 'NewFolder', // added 10.11.2015 'Archive' : 'NewArchive', // from v2.1 added 10.11.2015 'untitled file' : 'NewFile.$1', // from v2.1.41 added 6.8.2018 'extentionfile' : '$1: File', // from v2.1.41 added 6.8.2018 'extentiontype' : '$1: $2', // from v2.1.43 added 17.10.2018 /********************************** messages **********************************/ 'confirmReq' : 'Confirmation required', 'confirmRm' : 'Are you sure you want to permanently remove items?
                This cannot be undone!', 'confirmRepl' : 'Replace old file with new one? (If it contains folders, it will be merged. To backup and replace, select Backup.)', 'confirmRest' : 'Replace existing item with the item in trash?', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'Not in UTF-8
                Convert to UTF-8?
                Contents become UTF-8 by saving after conversion.', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'Character encoding of this file couldn\'t be detected. It need to temporarily convert to UTF-8 for editting.
                Please select character encoding of this file.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : 'It has been modified.
                Losing work if you do not save changes.', // from v2.1 added 15.7.2015 'confirmTrash' : 'Are you sure you want to move items to trash bin?', //from v2.1.24 added 29.4.2017 'confirmMove' : 'Are you sure you want to move items to "$1"?', //from v2.1.50 added 27.7.2019 'apllyAll' : 'Apply to all', 'name' : 'Name', 'size' : 'Size', 'perms' : 'Permissions', 'modify' : 'Modified', 'kind' : 'Kind', 'read' : 'read', 'write' : 'write', 'noaccess' : 'no access', 'and' : 'and', 'unknown' : 'unknown', 'selectall' : 'Select all items', 'selectfiles' : 'Select item(s)', 'selectffile' : 'Select first item', 'selectlfile' : 'Select last item', 'viewlist' : 'List view', 'viewicons' : 'Icons view', 'viewSmall' : 'Small icons', // from v2.1.39 added 22.5.2018 'viewMedium' : 'Medium icons', // from v2.1.39 added 22.5.2018 'viewLarge' : 'Large icons', // from v2.1.39 added 22.5.2018 'viewExtraLarge' : 'Extra large icons', // from v2.1.39 added 22.5.2018 'places' : 'Places', 'calc' : 'Calculate', 'path' : 'Path', 'aliasfor' : 'Alias for', 'locked' : 'Locked', 'dim' : 'Dimensions', 'files' : 'Files', 'folders' : 'Folders', 'items' : 'Items', 'yes' : 'yes', 'no' : 'no', 'link' : 'Link', 'searcresult' : 'Search results', 'selected' : 'selected items', 'about' : 'About', 'shortcuts' : 'Shortcuts', 'help' : 'Help', 'webfm' : 'Web file manager', 'ver' : 'Version', 'protocolver' : 'protocol version', 'homepage' : 'Project home', 'docs' : 'Documentation', 'github' : 'Fork us on GitHub', 'twitter' : 'Follow us on Twitter', 'facebook' : 'Join us on Facebook', 'team' : 'Team', 'chiefdev' : 'chief developer', 'developer' : 'developer', 'contributor' : 'contributor', 'maintainer' : 'maintainer', 'translator' : 'translator', 'icons' : 'Icons', 'dontforget' : 'and don\'t forget to take your towel', 'shortcutsof' : 'Shortcuts disabled', 'dropFiles' : 'Drop files here', 'or' : 'or', 'selectForUpload' : 'Select files', 'moveFiles' : 'Move items', 'copyFiles' : 'Copy items', 'restoreFiles' : 'Restore items', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'Remove from places', 'aspectRatio' : 'Aspect ratio', 'scale' : 'Scale', 'width' : 'Width', 'height' : 'Height', 'resize' : 'Resize', 'crop' : 'Crop', 'rotate' : 'Rotate', 'rotate-cw' : 'Rotate 90 degrees CW', 'rotate-ccw' : 'Rotate 90 degrees CCW', 'degree' : '°', 'netMountDialogTitle' : 'Mount network volume', // added 18.04.2012 'protocol' : 'Protocol', // added 18.04.2012 'host' : 'Host', // added 18.04.2012 'port' : 'Port', // added 18.04.2012 'user' : 'User', // added 18.04.2012 'pass' : 'Password', // added 18.04.2012 'confirmUnmount' : 'Are you unmount $1?', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'Drop or Paste files from browser', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'Drop files, Paste URLs or images(clipboard) here', // from v2.1 added 07.04.2014 'encoding' : 'Encoding', // from v2.1 added 19.12.2014 'locale' : 'Locale', // from v2.1 added 19.12.2014 'searchTarget' : 'Target: $1', // from v2.1 added 22.5.2015 'searchMime' : 'Search by input MIME Type', // from v2.1 added 22.5.2015 'owner' : 'Owner', // from v2.1 added 20.6.2015 'group' : 'Group', // from v2.1 added 20.6.2015 'other' : 'Other', // from v2.1 added 20.6.2015 'execute' : 'Execute', // from v2.1 added 20.6.2015 'perm' : 'Permission', // from v2.1 added 20.6.2015 'mode' : 'Mode', // from v2.1 added 20.6.2015 'emptyFolder' : 'Folder is empty', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'Folder is empty\\A Drop to add items', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'Folder is empty\\A Long tap to add items', // from v2.1.6 added 30.12.2015 'quality' : 'Quality', // from v2.1.6 added 5.1.2016 'autoSync' : 'Auto sync', // from v2.1.6 added 10.1.2016 'moveUp' : 'Move up', // from v2.1.6 added 18.1.2016 'getLink' : 'Get URL link', // from v2.1.7 added 9.2.2016 'selectedItems' : 'Selected items ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'Folder ID', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'Allow offline access', // from v2.1.10 added 3.25.2016 'reAuth' : 'To re-authenticate', // from v2.1.10 added 3.25.2016 'nowLoading' : 'Now loading...', // from v2.1.12 added 4.26.2016 'openMulti' : 'Open multiple files', // from v2.1.12 added 5.14.2016 'openMultiConfirm': 'You are trying to open the $1 files. Are you sure you want to open in browser?', // from v2.1.12 added 5.14.2016 'emptySearch' : 'Search results is empty in search target.', // from v2.1.12 added 5.16.2016 'editingFile' : 'It is editing a file.', // from v2.1.13 added 6.3.2016 'hasSelected' : 'You have selected $1 items.', // from v2.1.13 added 6.3.2016 'hasClipboard' : 'You have $1 items in the clipboard.', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'Incremental search is only from the current view.', // from v2.1.13 added 6.30.2016 'reinstate' : 'Reinstate', // from v2.1.15 added 3.8.2016 'complete' : '$1 complete', // from v2.1.15 added 21.8.2016 'contextmenu' : 'Context menu', // from v2.1.15 added 9.9.2016 'pageTurning' : 'Page turning', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'Volume roots', // from v2.1.16 added 16.9.2016 'reset' : 'Reset', // from v2.1.16 added 1.10.2016 'bgcolor' : 'Background color', // from v2.1.16 added 1.10.2016 'colorPicker' : 'Color picker', // from v2.1.16 added 1.10.2016 '8pxgrid' : '8px Grid', // from v2.1.16 added 4.10.2016 'enabled' : 'Enabled', // from v2.1.16 added 4.10.2016 'disabled' : 'Disabled', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'Search results is empty in current view.\\APress [Enter] to expand search target.', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'First letter search results is empty in current view.', // from v2.1.23 added 24.3.2017 'textLabel' : 'Text label', // from v2.1.17 added 13.10.2016 'minsLeft' : '$1 mins left', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'Reopen with selected encoding', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'Save with the selected encoding', // from v2.1.19 added 2.12.2016 'selectFolder' : 'Select folder', // from v2.1.20 added 13.12.2016 'firstLetterSearch': 'First letter search', // from v2.1.23 added 24.3.2017 'presets' : 'Presets', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : 'It\'s too many items so it can\'t into trash.', // from v2.1.25 added 9.6.2017 'TextArea' : 'TextArea', // from v2.1.25 added 14.6.2017 'folderToEmpty' : 'Empty the folder "$1".', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : 'There are no items in a folder "$1".', // from v2.1.25 added 22.6.2017 'preference' : 'Preference', // from v2.1.26 added 28.6.2017 'language' : 'Language', // from v2.1.26 added 28.6.2017 'clearBrowserData': 'Initialize the settings saved in this browser', // from v2.1.26 added 28.6.2017 'toolbarPref' : 'Toolbar settings', // from v2.1.27 added 2.8.2017 'charsLeft' : '... $1 chars left.', // from v2.1.29 added 30.8.2017 'linesLeft' : '... $1 lines left.', // from v2.1.52 added 16.1.2020 'sum' : 'Sum', // from v2.1.29 added 28.9.2017 'roughFileSize' : 'Rough file size', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : 'Focus on the element of dialog with mouseover', // from v2.1.30 added 2.11.2017 'select' : 'Select', // from v2.1.30 added 23.11.2017 'selectAction' : 'Action when select file', // from v2.1.30 added 23.11.2017 'useStoredEditor' : 'Open with the editor used last time', // from v2.1.30 added 23.11.2017 'selectinvert' : 'Invert selection', // from v2.1.30 added 25.11.2017 'renameMultiple' : 'Are you sure you want to rename $1 selected items like $2?
                This cannot be undone!', // from v2.1.31 added 4.12.2017 'batchRename' : 'Batch rename', // from v2.1.31 added 8.12.2017 'plusNumber' : '+ Number', // from v2.1.31 added 8.12.2017 'asPrefix' : 'Add prefix', // from v2.1.31 added 8.12.2017 'asSuffix' : 'Add suffix', // from v2.1.31 added 8.12.2017 'changeExtention' : 'Change extention', // from v2.1.31 added 8.12.2017 'columnPref' : 'Columns settings (List view)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : 'All changes will reflect immediately to the archive.', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : 'Any changes will not reflect until un-mount this volume.', // from v2.1.33 added 2.3.2018 'unmountChildren' : 'The following volume(s) mounted on this volume also unmounted. Are you sure to unmount it?', // from v2.1.33 added 5.3.2018 'selectionInfo' : 'Selection Info', // from v2.1.33 added 7.3.2018 'hashChecker' : 'Algorithms to show the file hash', // from v2.1.33 added 10.3.2018 'infoItems' : 'Info Items (Selection Info Panel)', // from v2.1.38 added 28.3.2018 'pressAgainToExit': 'Press again to exit.', // from v2.1.38 added 1.4.2018 'toolbar' : 'Toolbar', // from v2.1.38 added 4.4.2018 'workspace' : 'Work Space', // from v2.1.38 added 4.4.2018 'dialog' : 'Dialog', // from v2.1.38 added 4.4.2018 'all' : 'All', // from v2.1.38 added 4.4.2018 'iconSize' : 'Icon Size (Icons view)', // from v2.1.39 added 7.5.2018 'editorMaximized' : 'Open the maximized editor window', // from v2.1.40 added 30.6.2018 'editorConvNoApi' : 'Because conversion by API is not currently available, please convert on the website.', //from v2.1.40 added 8.7.2018 'editorConvNeedUpload' : 'After conversion, you must be upload with the item URL or a downloaded file to save the converted file.', //from v2.1.40 added 8.7.2018 'convertOn' : 'Convert on the site of $1', // from v2.1.40 added 10.7.2018 'integrations' : 'Integrations', // from v2.1.40 added 11.7.2018 'integrationWith' : 'This elFinder has the following external services integrated. Please check the terms of use, privacy policy, etc. before using it.', // from v2.1.40 added 11.7.2018 'showHidden' : 'Show hidden items', // from v2.1.41 added 24.7.2018 'hideHidden' : 'Hide hidden items', // from v2.1.41 added 24.7.2018 'toggleHidden' : 'Show/Hide hidden items', // from v2.1.41 added 24.7.2018 'makefileTypes' : 'File types to enable with "New file"', // from v2.1.41 added 7.8.2018 'typeOfTextfile' : 'Type of the Text file', // from v2.1.41 added 7.8.2018 'add' : 'Add', // from v2.1.41 added 7.8.2018 'theme' : 'Theme', // from v2.1.43 added 19.10.2018 'default' : 'Default', // from v2.1.43 added 19.10.2018 'description' : 'Description', // from v2.1.43 added 19.10.2018 'website' : 'Website', // from v2.1.43 added 19.10.2018 'author' : 'Author', // from v2.1.43 added 19.10.2018 'email' : 'Email', // from v2.1.43 added 19.10.2018 'license' : 'License', // from v2.1.43 added 19.10.2018 'exportToSave' : 'This item can\'t be saved. To avoid losing the edits you need to export to your PC.', // from v2.1.44 added 1.12.2018 'dblclickToSelect': 'Double click on the file to select it.', // from v2.1.47 added 22.1.2019 'useFullscreen' : 'Use fullscreen mode', // from v2.1.47 added 19.2.2019 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Unknown', 'kindRoot' : 'Volume Root', // from v2.1.16 added 16.10.2016 'kindFolder' : 'Folder', 'kindSelects' : 'Selections', // from v2.1.29 added 29.8.2017 'kindAlias' : 'Alias', 'kindAliasBroken' : 'Broken alias', // applications 'kindApp' : 'Application', 'kindPostscript' : 'Postscript document', 'kindMsOffice' : 'Microsoft Office document', 'kindMsWord' : 'Microsoft Word document', 'kindMsExcel' : 'Microsoft Excel document', 'kindMsPP' : 'Microsoft Powerpoint presentation', 'kindOO' : 'Open Office document', 'kindAppFlash' : 'Flash application', 'kindPDF' : 'Portable Document Format (PDF)', 'kindTorrent' : 'Bittorrent file', 'kind7z' : '7z archive', 'kindTAR' : 'TAR archive', 'kindGZIP' : 'GZIP archive', 'kindBZIP' : 'BZIP archive', 'kindXZ' : 'XZ archive', 'kindZIP' : 'ZIP archive', 'kindRAR' : 'RAR archive', 'kindJAR' : 'Java JAR file', 'kindTTF' : 'True Type font', 'kindOTF' : 'Open Type font', 'kindRPM' : 'RPM package', // texts 'kindText' : 'Text document', 'kindTextPlain' : 'Plain text', 'kindPHP' : 'PHP source', 'kindCSS' : 'Cascading style sheet', 'kindHTML' : 'HTML document', 'kindJS' : 'Javascript source', 'kindRTF' : 'Rich Text Format', 'kindC' : 'C source', 'kindCHeader' : 'C header source', 'kindCPP' : 'C++ source', 'kindCPPHeader' : 'C++ header source', 'kindShell' : 'Unix shell script', 'kindPython' : 'Python source', 'kindJava' : 'Java source', 'kindRuby' : 'Ruby source', 'kindPerl' : 'Perl script', 'kindSQL' : 'SQL source', 'kindXML' : 'XML document', 'kindAWK' : 'AWK source', 'kindCSV' : 'Comma separated values', 'kindDOCBOOK' : 'Docbook XML document', 'kindMarkdown' : 'Markdown text', // added 20.7.2015 // images 'kindImage' : 'Image', 'kindBMP' : 'BMP image', 'kindJPEG' : 'JPEG image', 'kindGIF' : 'GIF Image', 'kindPNG' : 'PNG Image', 'kindTIFF' : 'TIFF image', 'kindTGA' : 'TGA image', 'kindPSD' : 'Adobe Photoshop image', 'kindXBITMAP' : 'X bitmap image', 'kindPXM' : 'Pixelmator image', // media 'kindAudio' : 'Audio media', 'kindAudioMPEG' : 'MPEG audio', 'kindAudioMPEG4' : 'MPEG-4 audio', 'kindAudioMIDI' : 'MIDI audio', 'kindAudioOGG' : 'Ogg Vorbis audio', 'kindAudioWAV' : 'WAV audio', 'AudioPlaylist' : 'MP3 playlist', 'kindVideo' : 'Video media', 'kindVideoDV' : 'DV movie', 'kindVideoMPEG' : 'MPEG movie', 'kindVideoMPEG4' : 'MPEG-4 movie', 'kindVideoAVI' : 'AVI movie', 'kindVideoMOV' : 'Quick Time movie', 'kindVideoWM' : 'Windows Media movie', 'kindVideoFlash' : 'Flash movie', 'kindVideoMKV' : 'Matroska movie', 'kindVideoOGG' : 'Ogg movie' } }; })); plugins/file-manager-advanced/application/library/js/i18n/elfinder.nl.js000064400000105745147176754550022260 0ustar00/** * Dutch translation * @author Barry vd. Heuvel * @author Patrick Tingen * @version 2019-04-17 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.nl = { translator : 'Barry vd. Heuvel <barry@fruitcakestudio.nl>, Patrick Tingen <patrick@tingen.net>', language : 'Nederlands', direction : 'ltr', dateFormat : 'd-m-Y H:i', // Mar 13, 2012 05:27 PM fancyDateFormat : '$1 H:i', // will produce smth like: Today 12:25 PM nonameDateFormat : 'ymd-His', // noname upload will show like: 120513-172700 messages : { /********************************** errors **********************************/ 'error' : 'Fout', 'errUnknown' : 'Onbekend fout', 'errUnknownCmd' : 'Onbekend commando', 'errJqui' : 'Ongeldige jQuery UI configuratie. Selectable, draggable en droppable componenten moeten aanwezig zijn', 'errNode' : 'Voor elFinder moet een DOM Element gemaakt worden', 'errURL' : 'Ongeldige elFinder configuratie! URL optie is niet ingesteld', 'errAccess' : 'Toegang geweigerd', 'errConnect' : 'Kan geen verbinding met de backend maken', 'errAbort' : 'Verbinding afgebroken', 'errTimeout' : 'Verbinding time-out', 'errNotFound' : 'Backend niet gevonden', 'errResponse' : 'Ongeldige reactie van de backend', 'errConf' : 'Ongeldige backend configuratie', 'errJSON' : 'PHP JSON module niet geïnstalleerd', 'errNoVolumes' : 'Leesbaar volume is niet beschikbaar', 'errCmdParams' : 'Ongeldige parameters voor commando "$1"', 'errDataNotJSON' : 'Data is niet JSON', 'errDataEmpty' : 'Data is leeg', 'errCmdReq' : 'Backend verzoek heeft een commando naam nodig', 'errOpen' : 'Kan "$1" niet openen', 'errNotFolder' : 'Object is geen map', 'errNotFile' : 'Object is geen bestand', 'errRead' : 'Kan "$1" niet lezen', 'errWrite' : 'Kan niet schrijven in "$1"', 'errPerm' : 'Toegang geweigerd', 'errLocked' : '"$1" is vergrendeld en kan niet hernoemd, verplaats of verwijderd worden', 'errExists' : 'Bestand "$1" bestaat al', 'errInvName' : 'Ongeldige bestandsnaam', 'errFolderNotFound' : 'Map niet gevonden', 'errFileNotFound' : 'Bestand niet gevonden', 'errTrgFolderNotFound' : 'Doelmap "$1" niet gevonden', 'errPopup' : 'De browser heeft voorkomen dat de pop-up is geopend. Pas de browser instellingen aan om de popup te kunnen openen', 'errMkdir' : 'Kan map "$1" niet aanmaken', 'errMkfile' : 'Kan bestand "$1" niet aanmaken', 'errRename' : 'Kan "$1" niet hernoemen', 'errCopyFrom' : 'Bestanden kopiëren van "$1" is niet toegestaan', 'errCopyTo' : 'Bestanden kopiëren naar "$1" is niet toegestaan', 'errMkOutLink' : 'Kan geen link maken buiten de hoofdmap', // from v2.1 added 03.10.2015 'errUpload' : 'Upload fout', // old name - errUploadCommon 'errUploadFile' : 'Kan "$1" niet uploaden', // old name - errUpload 'errUploadNoFiles' : 'Geen bestanden gevonden om te uploaden', 'errUploadTotalSize' : 'Data overschrijdt de maximale grootte', // old name - errMaxSize 'errUploadFileSize' : 'Bestand overschrijdt de maximale grootte', // old name - errFileMaxSize 'errUploadMime' : 'Bestandstype niet toegestaan', 'errUploadTransfer' : '"$1" overdrachtsfout', 'errUploadTemp' : 'Kan geen tijdelijk bestand voor de upload maken', // from v2.1 added 26.09.2015 'errNotReplace' : 'Object "$1" bestaat al op deze locatie en kan niet vervangen worden door een ander type object', // new 'errReplace' : 'Kan "$1" niet vervangen', 'errSave' : 'Kan "$1" niet opslaan', 'errCopy' : 'Kan "$1" niet kopiëren', 'errMove' : 'Kan "$1" niet verplaatsen', 'errCopyInItself' : 'Kan "$1" niet in zichzelf kopiëren', 'errRm' : 'Kan "$1" niet verwijderen', 'errRmSrc' : 'Kan bronbestanden niet verwijderen', 'errExtract' : 'Kan de bestanden van "$1" niet uitpakken', 'errArchive' : 'Kan het archief niet maken', 'errArcType' : 'Archief type is niet ondersteund', 'errNoArchive' : 'Bestand is geen archief of geen ondersteund archief type', 'errCmdNoSupport' : 'Backend ondersteund dit commando niet', 'errReplByChild' : 'De map "$1" kan niet vervangen worden door een item uit die map', 'errArcSymlinks' : 'Om veiligheidsredenen kan een bestand met symlinks of bestanden met niet toegestane namen niet worden uitgepakt ', // edited 24.06.2012 'errArcMaxSize' : 'Archief overschrijdt de maximale bestandsgrootte', 'errResize' : 'Kan het formaat van "$1" niet wijzigen', 'errResizeDegree' : 'Ongeldig aantal graden om te draaien', // added 7.3.2013 'errResizeRotate' : 'Afbeelding kan niet gedraaid worden', // added 7.3.2013 'errResizeSize' : 'Ongeldig afbeelding formaat', // added 7.3.2013 'errResizeNoChange' : 'Afbeelding formaat is niet veranderd', // added 7.3.2013 'errUsupportType' : 'Bestandstype wordt niet ondersteund', 'errNotUTF8Content' : 'Bestand "$1" is niet in UTF-8 and kan niet aangepast worden', // added 9.11.2011 'errNetMount' : 'Kan "$1" niet mounten', // added 17.04.2012 'errNetMountNoDriver' : 'Niet ondersteund protocol', // added 17.04.2012 'errNetMountFailed' : 'Mount mislukt', // added 17.04.2012 'errNetMountHostReq' : 'Host is verplicht', // added 18.04.2012 'errSessionExpires' : 'Uw sessie is verlopen vanwege inactiviteit', 'errCreatingTempDir' : 'Kan de tijdelijke map niet aanmaken: "$1" ', 'errFtpDownloadFile' : 'Kan het bestand niet downloaden vanaf FTP: "$1"', 'errFtpUploadFile' : 'Kan het bestand niet uploaden naar FTP: "$1"', 'errFtpMkdir' : 'Kan het externe map niet aanmaken op de FTP-server: "$1"', 'errArchiveExec' : 'Er is een fout opgetreden bij het archivering van de bestanden: "$1" ', 'errExtractExec' : 'Er is een fout opgetreden bij het uitpakken van de bestanden: "$1" ', 'errNetUnMount' : 'Kan niet unmounten', // from v2.1 added 30.04.2012 'errConvUTF8' : 'Niet om te zetten naar UTF-8', // from v2.1 added 08.04.2014 'errFolderUpload' : 'Probeer een moderne browser als je bestanden wil uploaden', // from v2.1 added 26.6.2015 'errSearchTimeout' : 'Time-out bij zoeken naar "$1". Zoekresulataat is niet compleet', // from v2.1 added 12.1.2016 'errReauthRequire' : 'Je moet je opnieuw aanmelden', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'Max aantal selecteerbare items is $1', // from v2.1.17 added 17.10.2016 'errRestore' : 'Kan niet herstellen uit prullenbak, weet niet waar het heen moet', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'Geen editor voor dit type bestand', // from v2.1.25 added 23.5.2017 'errServerError' : 'Fout opgetreden op de server', // from v2.1.25 added 16.6.2017 'errEmpty' : 'Kan folder "$1" niet legen', // from v2.1.25 added 22.6.2017 'moreErrors' : 'Er zijn nog $1 fouten', // from v2.1.44 added 9.12.2018 /******************************* commands names ********************************/ 'cmdarchive' : 'Maak archief', 'cmdback' : 'Vorige', 'cmdcopy' : 'Kopieer', 'cmdcut' : 'Knip', 'cmddownload' : 'Download', 'cmdduplicate' : 'Dupliceer', 'cmdedit' : 'Pas bestand aan', 'cmdextract' : 'Bestanden uit archief uitpakken', 'cmdforward' : 'Volgende', 'cmdgetfile' : 'Kies bestanden', 'cmdhelp' : 'Over deze software', 'cmdhome' : 'Home', 'cmdinfo' : 'Bekijk info', 'cmdmkdir' : 'Nieuwe map', 'cmdmkdirin' : 'In nieuwe map', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'Nieuw bestand', 'cmdopen' : 'Open', 'cmdpaste' : 'Plak', 'cmdquicklook' : 'Voorbeeld', 'cmdreload' : 'Vernieuwen', 'cmdrename' : 'Naam wijzigen', 'cmdrm' : 'Verwijder', 'cmdtrash' : 'Naar prullenbak', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'Herstellen', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'Zoek bestanden', 'cmdup' : 'Ga een map hoger', 'cmdupload' : 'Upload bestanden', 'cmdview' : 'Bekijk', 'cmdresize' : 'Formaat wijzigen', 'cmdsort' : 'Sorteren', 'cmdnetmount' : 'Mount netwerk volume', // added 18.04.2012 'cmdnetunmount' : 'Unmount', // from v2.1 added 30.04.2012 'cmdplaces' : 'Naar Plaatsen', // added 28.12.2014 'cmdchmod' : 'Wijzig modus', // from v2.1 added 20.6.2015 'cmdopendir' : 'Open een map', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'Herstel kolombreedtes', // from v2.1.13 added 12.06.2016 'cmdfullscreen' : 'Volledig scherm', // from v2.1.15 added 03.08.2016 'cmdmove' : 'Verplaatsen', // from v2.1.15 added 21.08.2016 'cmdempty' : 'Map leegmaken', // from v2.1.25 added 22.06.2017 'cmdundo' : 'Undo', // from v2.1.27 added 31.07.2017 'cmdredo' : 'Redo', // from v2.1.27 added 31.07.2017 'cmdpreference' : 'Voorkeuren', // from v2.1.27 added 03.08.2017 'cmdselectall' : 'Selecteer alles', // from v2.1.28 added 15.08.2017 'cmdselectnone' : 'Deselecteer alles', // from v2.1.28 added 15.08.2017 'cmdselectinvert' : 'Selectie omkeren', // from v2.1.28 added 15.08.2017 'cmdopennew' : 'Open in nieuw venster', // from v2.1.38 added 3.4.2018 'cmdhide' : 'Verberg (voorkeur)', // from v2.1.41 added 24.7.2018 /*********************************** buttons ***********************************/ 'btnClose' : 'Sluit', 'btnSave' : 'Opslaan', 'btnRm' : 'Verwijder', 'btnApply' : 'Toepassen', 'btnCancel' : 'Annuleren', 'btnNo' : 'Nee', 'btnYes' : 'Ja', 'btnMount' : 'Mount', // added 18.04.2012 'btnApprove' : 'Ga naar $1 & keur goed', // from v2.1 added 26.04.2012 'btnUnmount' : 'Unmount', // from v2.1 added 30.04.2012 'btnConv' : 'Converteer', // from v2.1 added 08.04.2014 'btnCwd' : 'Hier', // from v2.1 added 22.5.2015 'btnVolume' : 'Volume', // from v2.1 added 22.5.2015 'btnAll' : 'Alles', // from v2.1 added 22.5.2015 'btnMime' : 'MIME Type', // from v2.1 added 22.5.2015 'btnFileName' : 'Bestandsnaam', // from v2.1 added 22.5.2015 'btnSaveClose' : 'Opslaan & Sluiten', // from v2.1 added 12.6.2015 'btnBackup' : 'Back-up', // fromv2.1 added 28.11.2015 'btnRename' : 'Hernoemen', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'Hernoem alles', // from v2.1.24 added 6.4.2017 'btnPrevious' : 'Vorige ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : 'Volgende ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : 'Opslaan als', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'Bezig met openen van map', 'ntffile' : 'Bezig met openen bestand', 'ntfreload' : 'Herladen map inhoud', 'ntfmkdir' : 'Bezig met map maken', 'ntfmkfile' : 'Bezig met Bestanden maken', 'ntfrm' : 'Verwijderen bestanden', 'ntfcopy' : 'Kopieer bestanden', 'ntfmove' : 'Verplaats bestanden', 'ntfprepare' : 'Voorbereiden kopiëren', 'ntfrename' : 'Hernoem bestanden', 'ntfupload' : 'Bestanden uploaden actief', 'ntfdownload' : 'Bestanden downloaden actief', 'ntfsave' : 'Bestanden opslaan', 'ntfarchive' : 'Archief aan het maken', 'ntfextract' : 'Bestanden uitpakken actief', 'ntfsearch' : 'Zoeken naar bestanden', 'ntfresize' : 'Formaat wijzigen van afbeeldingen', 'ntfsmth' : 'Iets aan het doen', 'ntfloadimg' : 'Laden van plaatje', 'ntfnetmount' : 'Mounten van netwerk volume', // added 18.04.2012 'ntfnetunmount' : 'Unmounten van netwerk volume', // from v2.1 added 30.04.2012 'ntfdim' : 'Opvragen afbeeldingen dimensies', // added 20.05.2013 'ntfreaddir' : 'Map informatie lezen', // from v2.1 added 01.07.2013 'ntfurl' : 'URL van link ophalen', // from v2.1 added 11.03.2014 'ntfchmod' : 'Bestandsmodus wijzigen', // from v2.1 added 20.6.2015 'ntfpreupload' : 'Upload bestandsnaam verifiëren', // from v2.1 added 31.11.2015 'ntfzipdl' : 'Zipbestand aan het maken', // from v2.1.7 added 23.1.2016 'ntfparents' : 'Verzamelen padinformatie', // from v2.1.17 added 2.11.2016 'ntfchunkmerge' : 'Aan het verwerken', // from v2.1.17 added 2.11.2016 'ntftrash' : 'Aan het verwijderen', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'Aan het herstellen', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'Controleren doelmap', // from v2.1.24 added 3.5.2017 'ntfundo' : 'Vorige bewerking ongedaan maken', // from v2.1.27 added 31.07.2017 'ntfredo' : 'Opnieuw doen', // from v2.1.27 added 31.07.2017 'ntfchkcontent' : 'Inhoud controleren', // from v2.1.41 added 3.8.2018 /*********************************** volumes *********************************/ 'volume_Trash' : 'Prullenbak', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : 'onbekend', 'Today' : 'Vandaag', 'Yesterday' : 'Gisteren', 'msJan' : 'Jan', 'msFeb' : 'Feb', 'msMar' : 'Mar', 'msApr' : 'Apr', 'msMay' : 'Mei', 'msJun' : 'Jun', 'msJul' : 'Jul', 'msAug' : 'Aug', 'msSep' : 'Sep', 'msOct' : 'Okt', 'msNov' : 'Nov', 'msDec' : 'Dec', 'January' : 'Januari', 'February' : 'Februari', 'March' : 'Maart', 'April' : 'April', 'May' : 'Mei', 'June' : 'Juni', 'July' : 'Juli', 'August' : 'Augustus', 'September' : 'September', 'October' : 'Oktober', 'November' : 'November', 'December' : 'December', 'Sunday' : 'Zondag', 'Monday' : 'Maandag', 'Tuesday' : 'Dinsdag', 'Wednesday' : 'Woensdag', 'Thursday' : 'Donderdag', 'Friday' : 'Vrijdag', 'Saturday' : 'Zaterdag', 'Sun' : 'Zo', 'Mon' : 'Ma', 'Tue' : 'Di', 'Wed' : 'Wo', 'Thu' : 'Do', 'Fri' : 'Vr', 'Sat' : 'Za', /******************************** sort variants ********************************/ 'sortname' : 'op naam', 'sortkind' : 'op type', 'sortsize' : 'op grootte', 'sortdate' : 'op datum', 'sortFoldersFirst' : 'Mappen eerst', 'sortperm' : 'op rechten', // from v2.1.13 added 13.06.2016 'sortmode' : 'op mode', // from v2.1.13 added 13.06.2016 'sortowner' : 'op eigenaar', // from v2.1.13 added 13.06.2016 'sortgroup' : 'op groep', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'Als boom', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : 'NieuwBestand.txt', // added 10.11.2015 'untitled folder' : 'NieuweMap', // added 10.11.2015 'Archive' : 'NieuwArchief', // from v2.1 added 10.11.2015 'untitled file' : 'NieuwBestand.$1', // from v2.1.41 added 6.8.2018 'extentionfile' : '$1: Bestand', // from v2.1.41 added 6.8.2018 'extentiontype' : '$1: $2', // from v2.1.43 added 17.10.2018 /********************************** messages **********************************/ 'confirmReq' : 'Bevestiging nodig', 'confirmRm' : 'Weet u zeker dat u deze bestanden wil verwijderen?
                Deze actie kan niet ongedaan gemaakt worden!', 'confirmRepl' : 'Oud bestand vervangen door het nieuwe bestand?', 'confirmRest' : 'Replace existing item with the item in trash?', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'Niet in UTF-8
                Converteren naar UTF-8?
                De inhoud wordt UTF-8 door op te slaan na de conversie', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'Character encoding of this file couldn\'t be detected. It need to temporarily convert to UTF-8 for editting.
                Please select character encoding of this file.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : 'Het is aangepast.
                Wijzigingen gaan verloren als je niet opslaat', // from v2.1 added 15.7.2015 'confirmTrash' : 'Are you sure you want to move items to trash bin?', //from v2.1.24 added 29.4.2017 'apllyAll' : 'Toepassen op alles', 'name' : 'Naam', 'size' : 'Grootte', 'perms' : 'Rechten', 'modify' : 'Aangepast', 'kind' : 'Type', 'read' : 'lees', 'write' : 'schrijf', 'noaccess' : 'geen toegang', 'and' : 'en', 'unknown' : 'onbekend', 'selectall' : 'Selecteer alle bestanden', 'selectfiles' : 'Selecteer bestand(en)', 'selectffile' : 'Selecteer eerste bestand', 'selectlfile' : 'Selecteer laatste bestand', 'viewlist' : 'Lijst weergave', 'viewicons' : 'Icoon weergave', 'viewSmall' : 'Klein', // from v2.1.39 added 22.5.2018 'viewMedium' : 'Middelgroot', // from v2.1.39 added 22.5.2018 'viewLarge' : 'Groot', // from v2.1.39 added 22.5.2018 'viewExtraLarge' : 'Extra groot', // from v2.1.39 added 22.5.2018 'places' : 'Plaatsen', 'calc' : 'Bereken', 'path' : 'Pad', 'aliasfor' : 'Alias voor', 'locked' : 'Vergrendeld', 'dim' : 'Dimensies', 'files' : 'Bestanden', 'folders' : 'Mappen', 'items' : 'Items', 'yes' : 'ja', 'no' : 'nee', 'link' : 'Link', 'searcresult' : 'Zoek resultaten', 'selected' : 'geselecteerde items', 'about' : 'Over', 'shortcuts' : 'Snelkoppelingen', 'help' : 'Help', 'webfm' : 'Web bestandsmanager', 'ver' : 'Versie', 'protocolver' : 'protocol versie', 'homepage' : 'Project home', 'docs' : 'Documentatie', 'github' : 'Fork ons op Github', 'twitter' : 'Volg ons op twitter', 'facebook' : 'Wordt lid op facebook', 'team' : 'Team', 'chiefdev' : 'Hoofd ontwikkelaar', 'developer' : 'ontwikkelaar', 'contributor' : 'bijdrager', 'maintainer' : 'onderhouder', 'translator' : 'vertaler', 'icons' : 'Iconen', 'dontforget' : 'En vergeet je handdoek niet!', 'shortcutsof' : 'Snelkoppelingen uitgeschakeld', 'dropFiles' : 'Sleep hier uw bestanden heen', 'or' : 'of', 'selectForUpload' : 'Selecteer bestanden om te uploaden', 'moveFiles' : 'Verplaats bestanden', 'copyFiles' : 'Kopieer bestanden', 'restoreFiles' : 'Items herstellen', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'Verwijder uit Plaatsen', 'aspectRatio' : 'Aspect ratio', 'scale' : 'Schaal', 'width' : 'Breedte', 'height' : 'Hoogte', 'resize' : 'Verkleinen', 'crop' : 'Bijsnijden', 'rotate' : 'Draaien', 'rotate-cw' : 'Draai 90 graden rechtsom', 'rotate-ccw' : 'Draai 90 graden linksom', 'degree' : '°', 'netMountDialogTitle' : 'Mount netwerk volume', // added 18.04.2012 'protocol' : 'Protocol', // added 18.04.2012 'host' : 'Host', // added 18.04.2012 'port' : 'Poort', // added 18.04.2012 'user' : 'Gebruikersnaams', // added 18.04.2012 'pass' : 'Wachtwoord', // added 18.04.2012 'confirmUnmount' : 'Weet u zeker dat u $1 wil unmounten?', // from v2.1 added 30.04.2012 'dropFilesBrowser' : 'Sleep of plak bestanden vanuit de browser', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'Sleep of plak bestanden hier', // from v2.1 added 07.04.2014 'encoding' : 'Encodering', // from v2.1 added 19.12.2014 'locale' : 'Localisatie', // from v2.1 added 19.12.2014 'searchTarget' : 'Doel: $1', // from v2.1 added 22.5.2015 'searchMime' : 'Zoek op invoer MIME Type', // from v2.1 added 22.5.2015 'owner' : 'Eigenaar', // from v2.1 added 20.6.2015 'group' : 'Groep', // from v2.1 added 20.6.2015 'other' : 'Overig', // from v2.1 added 20.6.2015 'execute' : 'Uitvoeren', // from v2.1 added 20.6.2015 'perm' : 'Rechten', // from v2.1 added 20.6.2015 'mode' : 'Modus', // from v2.1 added 20.6.2015 'emptyFolder' : 'Map is leeg', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'Map is leeg\\A Sleep hier naar toe om toe te voegen', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'Map is leeg\\A Lang ingedrukt houden om toe te voegen', // from v2.1.6 added 30.12.2015 'quality' : 'Kwaliteit', // from v2.1.6 added 5.1.2016 'autoSync' : 'Auto sync', // from v2.1.6 added 10.1.2016 'moveUp' : 'Omhoog', // from v2.1.6 added 18.1.2016 'getLink' : 'Geef link', // from v2.1.7 added 9.2.2016 'selectedItems' : 'Geselecteerde items ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'Map ID', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'Toestaan offline toegang', // from v2.1.10 added 3.25.2016 'reAuth' : 'Opnieuw autenticeren', // from v2.1.10 added 3.25.2016 'nowLoading' : 'Laden..', // from v2.1.12 added 4.26.2016 'openMulti' : 'Open meerdere bestanden', // from v2.1.12 added 5.14.2016 'openMultiConfirm' : 'Je probeert het $1 bestanden te openen. Weet je zeker dat je dat in je browser wil doen?', // from v2.1.12 added 5.14.2016 'emptySearch' : 'Geen zoekresultaten', // from v2.1.12 added 5.16.2016 'editingFile' : 'Bestand wordt bewerkt', // from v2.1.13 added 6.3.2016 'hasSelected' : 'Je hebt $1 items geselecteerd', // from v2.1.13 added 6.3.2016 'hasClipboard' : 'Je hebt $1 items op het clipboard', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'Verder zoeken kan alleen vanuit huidige view', // from v2.1.13 added 6.30.2016 'reinstate' : 'Herstellen', // from v2.1.15 added 3.8.2016 'complete' : '$1 compleet', // from v2.1.15 added 21.8.2016 'contextmenu' : 'Context menu', // from v2.1.15 added 9.9.2016 'pageTurning' : 'Pagina omslaan', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'Volume roots', // from v2.1.16 added 16.9.2016 'reset' : 'Reset', // from v2.1.16 added 1.10.2016 'bgcolor' : 'Achtergrondkleur', // from v2.1.16 added 1.10.2016 'colorPicker' : 'Kleurkiezer', // from v2.1.16 added 1.10.2016 '8pxgrid' : '8px Grid', // from v2.1.16 added 4.10.2016 'enabled' : 'Actief', // from v2.1.16 added 4.10.2016 'disabled' : 'Inactief', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'Zoekresultaten zijn leeg in actuele view\\ADruk [Enter] om zoekgebied uit te breiden', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'Zoeken op eerste letter is leeg in actuele view', // from v2.1.23 added 24.3.2017 'textLabel' : 'Tekstlabel', // from v2.1.17 added 13.10.2016 'minsLeft' : '$1 minuten over', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'Opnieuw openen met geselecteerde encoding', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'Opslaan met geselecteerde encoding', // from v2.1.19 added 2.12.2016 'selectFolder' : 'Selecteer map', // from v2.1.20 added 13.12.2016 'firstLetterSearch' : 'Zoeken op eerste letter', // from v2.1.23 added 24.3.2017 'presets' : 'Voorkeuren', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : 'Teveel voor in de prullenbak', // from v2.1.25 added 9.6.2017 'TextArea' : 'Tekstgebied', // from v2.1.25 added 14.6.2017 'folderToEmpty' : 'Map "$1" legen', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : 'Er zijn geen items in map "$1"', // from v2.1.25 added 22.6.2017 'preference' : 'Voorkeur', // from v2.1.26 added 28.6.2017 'language' : 'Taal', // from v2.1.26 added 28.6.2017 'clearBrowserData' : 'Initialiseer instellingen van deze browser', // from v2.1.26 added 28.6.2017 'toolbarPref' : 'Toolbar instellingen', // from v2.1.27 added 2.8.2017 'charsLeft' : '... $1 tekens over', // from v2.1.29 added 30.8.2017 'sum' : 'Totaal', // from v2.1.29 added 28.9.2017 'roughFileSize' : 'Geschatte bestandsgrootte', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : 'Focus op het dialoogelement met mouseover', // from v2.1.30 added 2.11.2017 'select' : 'Selecteren', // from v2.1.30 added 23.11.2017 'selectAction' : 'Actie als bestand is geselecteerd', // from v2.1.30 added 23.11.2017 'useStoredEditor' : 'Open met laatstgebruikte editor', // from v2.1.30 added 23.11.2017 'selectinvert' : 'Selectie omkeren', // from v2.1.30 added 25.11.2017 'renameMultiple' : 'Weet je zeker dat je $1 items wil hernoemen naar $2?
                Dit kan niet ongedaan worden gemaakt!', // from v2.1.31 added 4.12.2017 'batchRename' : 'Batch hernoemen', // from v2.1.31 added 8.12.2017 'plusNumber' : '+ Nummer', // from v2.1.31 added 8.12.2017 'asPrefix' : 'Voeg prefix toe', // from v2.1.31 added 8.12.2017 'asSuffix' : 'Voeg suffix toe', // from v2.1.31 added 8.12.2017 'changeExtention' : 'Verander extentie', // from v2.1.31 added 8.12.2017 'columnPref' : 'Kolominstelllingen (List view)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : 'Aanpassingen worden direct toegepast op het archief', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : 'Aanpassingen worden pas toegepast na re-mount van dit volume', // from v2.1.33 added 2.3.2018 'unmountChildren' : 'Deze volume(s) worden ook unmounted. Weet je het zeker?', // from v2.1.33 added 5.3.2018 'selectionInfo' : 'Selectie informatie', // from v2.1.33 added 7.3.2018 'hashChecker' : 'Algoritmes voor file hash', // from v2.1.33 added 10.3.2018 'infoItems' : 'Informatie Items (Selectie Info Panel)', // from v2.1.38 added 28.3.2018 'pressAgainToExit' : 'Druk nogmaals om te eindigen', // from v2.1.38 added 1.4.2018 'toolbar' : 'Toolbar', // from v2.1.38 added 4.4.2018 'workspace' : 'Work Space', // from v2.1.38 added 4.4.2018 'dialog' : 'Dialoog', // from v2.1.38 added 4.4.2018 'all' : 'Alles', // from v2.1.38 added 4.4.2018 'iconSize' : 'Icoongrootte (Icons view)', // from v2.1.39 added 7.5.2018 'editorMaximized' : 'Open de maximale editor', // from v2.1.40 added 30.6.2018 'editorConvNoApi' : 'Conversie via API is niet beschikbaar, converteer aub op de website', //from v2.1.40 added 8.7.2018 'editorConvNeedUpload' : 'After conversion, you must be upload with the item URL or a downloaded file to save the converted file', //from v2.1.40 added 8.7.2018 'convertOn' : 'Converteer op de site $1', // from v2.1.40 added 10.7.2018 'integrations' : 'Integratie', // from v2.1.40 added 11.7.2018 'integrationWith' : 'Deze elFinder heeft de volgende externe services. Controleer de voorwaarden, privacy policy, etc. voor gebruik', // from v2.1.40 added 11.7.2018 'showHidden' : 'Toon verborgen items', // from v2.1.41 added 24.7.2018 'hideHidden' : 'Verberg verborgen items', // from v2.1.41 added 24.7.2018 'toggleHidden' : 'Toon/verberg verborgen items', // from v2.1.41 added 24.7.2018 'makefileTypes' : 'File types die aangemaakt mogen worden', // from v2.1.41 added 7.8.2018 'typeOfTextfile' : 'Type voor tekstbestand', // from v2.1.41 added 7.8.2018 'add' : 'Toevoegen', // from v2.1.41 added 7.8.2018 'theme' : 'Thema', // from v2.1.43 added 19.10.2018 'default' : 'Default', // from v2.1.43 added 19.10.2018 'description' : 'Beschrijving', // from v2.1.43 added 19.10.2018 'website' : 'Website', // from v2.1.43 added 19.10.2018 'author' : 'Auteur', // from v2.1.43 added 19.10.2018 'email' : 'Email', // from v2.1.43 added 19.10.2018 'license' : 'Licensie', // from v2.1.43 added 19.10.2018 'exportToSave' : 'Dit item kan niet worden opgeslagen, exporteer naar je pc om wijzingen te bewaren', // from v2.1.44 added 1.12.2018 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Onbekend', 'kindRoot' : 'Volume Root', // from v2.1.16 added 16.10.2016 'kindFolder' : 'Map', 'kindSelects' : 'Selecties', // from v2.1.29 added 29.8.2017 'kindAlias' : 'Alias', 'kindAliasBroken' : 'Verbroken alias', /********************************** applications **********************************/ 'kindApp' : 'Applicatie', 'kindPostscript' : 'Postscript document', 'kindMsOffice' : 'Microsoft Office document', 'kindMsWord' : 'Microsoft Word document', 'kindMsExcel' : 'Microsoft Excel document', 'kindMsPP' : 'Microsoft Powerpoint presentation', 'kindOO' : 'Open Office document', 'kindAppFlash' : 'Flash applicatie', 'kindPDF' : 'Portable Document Format (PDF)', 'kindTorrent' : 'Bittorrent bestand', 'kind7z' : '7z archief', 'kindTAR' : 'TAR archief', 'kindGZIP' : 'GZIP archief', 'kindBZIP' : 'BZIP archief', 'kindXZ' : 'XZ archief', 'kindZIP' : 'ZIP archief', 'kindRAR' : 'RAR archief', 'kindJAR' : 'Java JAR bestand', 'kindTTF' : 'True Type font', 'kindOTF' : 'Open Type font', 'kindRPM' : 'RPM package', /********************************** texts **********************************/ 'kindText' : 'Tekst bestand', 'kindTextPlain' : 'Tekst', 'kindPHP' : 'PHP bronbestand', 'kindCSS' : 'Cascading style sheet', 'kindHTML' : 'HTML document', 'kindJS' : 'Javascript bronbestand', 'kindRTF' : 'Rich Text Format', 'kindC' : 'C bronbestand', 'kindCHeader' : 'C header bronbestand', 'kindCPP' : 'C++ bronbestand', 'kindCPPHeader' : 'C++ header bronbestand', 'kindShell' : 'Unix shell script', 'kindPython' : 'Python bronbestand', 'kindJava' : 'Java bronbestand', 'kindRuby' : 'Ruby bronbestand', 'kindPerl' : 'Perl bronbestand', 'kindSQL' : 'SQL bronbestand', 'kindXML' : 'XML document', 'kindAWK' : 'AWK bronbestand', 'kindCSV' : 'Komma gescheiden waardes', 'kindDOCBOOK' : 'Docbook XML document', 'kindMarkdown' : 'Markdown tekst', // added 20.7.2015 /********************************** images **********************************/ // 'kindImage' : 'Afbeelding', 'kindBMP' : 'BMP afbeelding', 'kindJPEG' : 'JPEG afbeelding', 'kindGIF' : 'GIF afbeelding', 'kindPNG' : 'PNG afbeelding', 'kindTIFF' : 'TIFF afbeelding', 'kindTGA' : 'TGA afbeelding', 'kindPSD' : 'Adobe Photoshop afbeelding', 'kindXBITMAP' : 'X bitmap afbeelding', 'kindPXM' : 'Pixelmator afbeelding', /********************************** media **********************************/ 'kindAudio' : 'Audio media', 'kindAudioMPEG' : 'MPEG audio', 'kindAudioMPEG4' : 'MPEG-4 audio', 'kindAudioMIDI' : 'MIDI audio', 'kindAudioOGG' : 'Ogg Vorbis audio', 'kindAudioWAV' : 'WAV audio', 'AudioPlaylist' : 'MP3 playlist', 'kindVideo' : 'Video media', 'kindVideoDV' : 'DV video', 'kindVideoMPEG' : 'MPEG video', 'kindVideoMPEG4' : 'MPEG-4 video', 'kindVideoAVI' : 'AVI video', 'kindVideoMOV' : 'Quick Time video', 'kindVideoWM' : 'Windows Media video', 'kindVideoFlash' : 'Flash video', 'kindVideoMKV' : 'Matroska video', 'kindVideoOGG' : 'Ogg video' } }; })); plugins/file-manager-advanced/application/library/js/i18n/elfinder.no.js000064400000037156147176754550022263 0ustar00/** * Norwegian translation * @author Stian Jacobsen * @version 2014-12-19 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.no = { translator : 'Stian Jacobsen <stian@promonorge.no>', language : 'Norwegian Bokmål', dateFormat : 'M d, Y h:i A', // Mar 13, 2012 05:27 PM fancyDateFormat : '$1 h:i A', // will produce smth like: Today 12:25 PM direction : 'ltr', messages : { /********************************** errors **********************************/ 'error' : 'Feil', 'errUnknown' : 'Ukjent feil.', 'errUnknownCmd' : 'Ukjent kommando.', 'errJqui' : 'Ugyldig jQuery UI konfigurasjon. Selectable, draggable og droppable komponentene må være inkludert.', 'errNode' : 'elFinder påkrever at DOM Elementer kan opprettes.', 'errURL' : 'Ugyldig elFinder konfigurasjon! URL-valget er ikke satt.', 'errAccess' : 'Ingen adgang.', 'errConnect' : 'Kunne ikke koble til.', 'errAbort' : 'Tilkoblingen avbrutt.', 'errTimeout' : 'Tilkoblingen tidsavbrudd.', 'errNotFound' : 'Backend ble ikke funnet', 'errResponse' : 'Ugyldig backend respons.', 'errConf' : 'Ugyldig backend konfigurasjon.', 'errJSON' : 'PHP JSON modul er ikke installert.', 'errNoVolumes' : 'Lesbar volum er ikke tilgjennelig.', 'errCmdParams' : 'Ugyldig parameter for kommando "$1".', 'errDataNotJSON' : 'Innhold er ikke JSON.', 'errDataEmpty' : 'Innholdet er tomt.', 'errCmdReq' : 'Backend spørringen påkrever kommando.', 'errOpen' : 'Kunne ikke åpne "$1".', 'errNotFolder' : 'Objektet er ikke en mappe.', 'errNotFile' : 'Objektet er ikke en fil.', 'errRead' : 'Kunne ikke lese "$1".', 'errWrite' : 'Kunne ikke skrive til "$1".', 'errPerm' : 'Du har ikke rettigheter.', 'errLocked' : '"$1" er låst og kan ikke flyttes, slettes eller endres', 'errExists' : 'Filen "$1" finnes allerede.', 'errInvName' : 'Ugyldig filnavn.', 'errFolderNotFound' : 'Mappen finnes ikke.', 'errFileNotFound' : 'Filen finnes ikke.', 'errTrgFolderNotFound' : 'Målmappen "$1" ble ikke funnet.', 'errPopup' : 'Nettleseren din blokkerte et pop-up vindu. For å åpne filen må du aktivere pop-up i din nettlesers innstillinger.', 'errMkdir' : 'Kunne ikke opprette mappen "$1".', 'errMkfile' : 'Kunne ikke opprette filen "$1".', 'errRename' : 'Kunne ikke gi nytt navn til "$1".', 'errCopyFrom' : 'Kopiere filer fra "$1" er ikke tillatt.', 'errCopyTo' : 'Kopiere filer til "$1" er ikke tillatt.', 'errUpload' : 'Feil under opplasting.', 'errUploadFile' : 'Kunne ikke laste opp "$1".', 'errUploadNoFiles' : 'Ingen filer funnet til opplasting.', 'errUploadTotalSize' : 'Innholdet overgår maksimum tillatt størrelse.', 'errUploadFileSize' : 'Filen vergår maksimum tillatt størrelse.', 'errUploadMime' : 'Filtypen ikke tillatt.', 'errUploadTransfer' : '"$1" overførings feil.', 'errNotReplace' : 'Object "$1" already exists at this location and can not be replaced by object with another type.', 'errReplace' : 'Unable to replace "$1".', 'errSave' : 'Kunne ikke lagre "$1".', 'errCopy' : 'Kunne ikke kopiere "$1".', 'errMove' : 'Kunne ikke flytte "$1".', 'errCopyInItself' : 'Kunne ikke kopiere "$1" til seg selv.', 'errRm' : 'Kunne ikke slette "$1".', 'errRmSrc' : 'Unable remove source file(s).', 'errExtract' : 'Kunne ikke pakke ut filer fra "$1".', 'errArchive' : 'Kunne ikke opprette arkiv.', 'errArcType' : 'akriv-typen er ikke støttet.', 'errNoArchive' : 'Filen er ikke et arkiv eller et arkiv som ikke er støttet.', 'errCmdNoSupport' : 'Backend støtter ikke denne kommandoen.', 'errReplByChild' : 'The folder “$1” can’t be replaced by an item it contains.', 'errArcSymlinks' : 'For security reason denied to unpack archives contains symlinks or files with not allowed names.', // edited 24.06.2012 'errArcMaxSize' : 'Archive files exceeds maximum allowed size.', 'errResize' : 'Unable to resize "$1".', 'errResizeDegree' : 'Invalid rotate degree.', // added 7.3.2013 'errResizeRotate' : 'Unable to rotate image.', // added 7.3.2013 'errResizeSize' : 'Invalid image size.', // added 7.3.2013 'errResizeNoChange' : 'Image size not changed.', // added 7.3.2013 'errUsupportType' : 'Unsupported file type.', 'errNotUTF8Content' : 'File "$1" is not in UTF-8 and cannot be edited.', // added 9.11.2011 'errNetMount' : 'Unable to mount "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'Unsupported protocol.', // added 17.04.2012 'errNetMountFailed' : 'Mount failed.', // added 17.04.2012 'errNetMountHostReq' : 'Host required.', // added 18.04.2012 'errSessionExpires' : 'Your session has expired due to inactivity.', 'errCreatingTempDir' : 'Unable to create temporary directory: "$1"', 'errFtpDownloadFile' : 'Unable to download file from FTP: "$1"', 'errFtpUploadFile' : 'Unable to upload file to FTP: "$1"', 'errFtpMkdir' : 'Unable to create remote directory on FTP: "$1"', 'errArchiveExec' : 'Error while archiving files: "$1"', 'errExtractExec' : 'Error while extracting files: "$1"', /******************************* commands names ********************************/ 'cmdarchive' : 'Opprett arkiv', 'cmdback' : 'Tilbake', 'cmdcopy' : 'Kopier', 'cmdcut' : 'Klipp ut', 'cmddownload' : 'Last ned', 'cmdduplicate' : 'Dupliser', 'cmdedit' : 'Rediger fil', 'cmdextract' : 'Pakk ut filer fra arkiv', 'cmdforward' : 'Frem', 'cmdgetfile' : 'Velg filer', 'cmdhelp' : 'Om', 'cmdhome' : 'Hjem', 'cmdinfo' : 'Vis info', 'cmdmkdir' : 'Ny mappe', 'cmdmkfile' : 'Ny fil', 'cmdopen' : 'Åpne', 'cmdpaste' : 'Lim inn', 'cmdquicklook' : 'Forhåndsvis', 'cmdreload' : 'Last inn på nytt', 'cmdrename' : 'Gi nytt navn', 'cmdrm' : 'Slett', 'cmdsearch' : 'Find filer', 'cmdup' : 'Opp et nivå', 'cmdupload' : 'Last opp filer', 'cmdview' : 'Vis', 'cmdresize' : 'Resize & Rotate', 'cmdsort' : 'Sort', 'cmdnetmount' : 'Mount network volume', /*********************************** buttons ***********************************/ 'btnClose' : 'Lukk', 'btnSave' : 'Lagre', 'btnRm' : 'Slett', 'btnApply' : 'Apply', 'btnCancel' : 'Avbryt', 'btnNo' : 'Nei', 'btnYes' : 'Ja', 'btnMount' : 'Mount', /******************************** notifications ********************************/ 'ntfopen' : 'Åpne mappe', 'ntffile' : 'Åpne fil', 'ntfreload' : 'Last inn mappen på nytt', 'ntfmkdir' : 'Oppretter mappe', 'ntfmkfile' : 'Oppretter filer', 'ntfrm' : 'Sletter filer', 'ntfcopy' : 'Kopierer filer', 'ntfmove' : 'Flytter filer', 'ntfprepare' : 'Gjør klar til kopiering av filer', 'ntfrename' : 'Gir nytt navn til filer', 'ntfupload' : 'Laster opp filer', 'ntfdownload' : 'Laster ned filer', 'ntfsave' : 'Lagrer filer', 'ntfarchive' : 'Oppretter arkiv', 'ntfextract' : 'Pakker ut filer fra arkiv', 'ntfsearch' : 'Søker i filer', 'ntfresize' : 'Resizing images', 'ntfsmth' : 'Gjør noe... >_<', 'ntfloadimg' : 'Loading image', 'ntfnetmount' : 'Mounting network volume', // added 18.04.2012 'ntfdim' : 'Acquiring image dimension', // added 20.05.2013 /************************************ dates **********************************/ 'dateUnknown' : 'Ukjent', 'Today' : 'I dag', 'Yesterday' : 'I går', 'msJan' : 'Jan', 'msFeb' : 'Feb', 'msMar' : 'Mar', 'msApr' : 'Apr', 'msMay' : 'Mai', 'msJun' : 'Jun', 'msJul' : 'Jul', 'msAug' : 'Aug', 'msSep' : 'Sep', 'msOct' : 'Okt', 'msNov' : 'Nov', 'msDec' : 'Des', 'January' : 'January', 'February' : 'February', 'March' : 'March', 'April' : 'April', 'May' : 'May', 'June' : 'June', 'July' : 'July', 'August' : 'August', 'September' : 'September', 'October' : 'October', 'November' : 'November', 'December' : 'December', 'Sunday' : 'Sunday', 'Monday' : 'Monday', 'Tuesday' : 'Tuesday', 'Wednesday' : 'Wednesday', 'Thursday' : 'Thursday', 'Friday' : 'Friday', 'Saturday' : 'Saturday', 'Sun' : 'Sun', 'Mon' : 'Mon', 'Tue' : 'Tue', 'Wed' : 'Wed', 'Thu' : 'Thu', 'Fri' : 'Fri', 'Sat' : 'Sat', /******************************** sort variants ********************************/ 'sortname' : 'by name', 'sortkind' : 'by kind', 'sortsize' : 'by size', 'sortdate' : 'by date', 'sortFoldersFirst' : 'Folders first', /********************************** messages **********************************/ 'confirmReq' : 'Bekreftelse nødvendig', 'confirmRm' : 'Er du sikker på at du ønsker å slette filene?', 'confirmRepl' : 'Erstatt fil?', 'apllyAll' : 'Apply to all', 'name' : 'Navn', 'size' : 'Størrelse', 'perms' : 'Rettigheter', 'modify' : 'Endret', 'kind' : 'Type', 'read' : 'les', 'write' : 'skriv', 'noaccess' : 'ingen adgang', 'and' : 'og', 'unknown' : 'ukjent', 'selectall' : 'Velg alle filene', 'selectfiles' : 'Velg fil(er)', 'selectffile' : 'Velg første fil', 'selectlfile' : 'Velg siste fil', 'viewlist' : 'Listevisning', 'viewicons' : 'Ikoner', 'places' : 'Områder', 'calc' : 'Beregn', 'path' : 'Bane', 'aliasfor' : 'Alias for', 'locked' : 'Låst', 'dim' : 'Størrelser', 'files' : 'Filer', 'folders' : 'Mapper', 'items' : 'objekter', 'yes' : 'ja', 'no' : 'nei', 'link' : 'Link', 'searcresult' : 'Søkeresultater', 'selected' : 'valgte filer', 'about' : 'Om', 'shortcuts' : 'Snarveier', 'help' : 'Hjelp', 'webfm' : 'Web-filbehandler', 'ver' : 'Versjon', 'protocolver' : 'protokol versjon', 'homepage' : 'Project home', 'docs' : 'dokumentasjon', 'github' : 'Fork us on Github', 'twitter' : 'Follow us on twitter', 'facebook' : 'Join us on facebook', 'team' : 'Team', 'chiefdev' : 'chief developer', 'developer' : 'developer', 'contributor' : 'contributor', 'maintainer' : 'maintainer', 'translator' : 'translator', 'icons' : 'Ikoner', 'dontforget' : 'and don\'t forget to bring a towel', 'shortcutsof' : 'Snarveier avslått', 'dropFiles' : 'Slipp filer her', 'or' : 'eller', 'selectForUpload' : 'Velg filer til opplasting', 'moveFiles' : 'Flytt filer', 'copyFiles' : 'Kopier filer', 'rmFromPlaces' : 'Remove from places', 'aspectRatio' : 'Aspect ratio', 'scale' : 'Scale', 'width' : 'Width', 'height' : 'Height', 'resize' : 'Resize', 'crop' : 'Crop', 'rotate' : 'Rotate', 'rotate-cw' : 'Rotate 90 degrees CW', 'rotate-ccw' : 'Rotate 90 degrees CCW', 'degree' : '°', 'netMountDialogTitle' : 'Mount network volume', // added 18.04.2012 'protocol' : 'Protocol', // added 18.04.2012 'host' : 'Host', // added 18.04.2012 'port' : 'Port', // added 18.04.2012 'user' : 'User', // added 18.04.2012 'pass' : 'Password', // added 18.04.2012 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Ukjent', 'kindFolder' : 'Mappe', 'kindAlias' : 'Snarvei', 'kindAliasBroken' : 'Ugyldig snarvei', // applications 'kindApp' : 'Programfil', 'kindPostscript' : 'Postscript dokument', 'kindMsOffice' : 'Microsoft Office dokument', 'kindMsWord' : 'Microsoft Word dokument', 'kindMsExcel' : 'Microsoft Excel dokument', 'kindMsPP' : 'Microsoft Powerpoint presentation', 'kindOO' : 'Open Office dokument', 'kindAppFlash' : 'Flash', 'kindPDF' : 'Portabelt dokument (PDF)', 'kindTorrent' : 'Bittorrent file', 'kind7z' : '7z arkiv', 'kindTAR' : 'TAR arkiv', 'kindGZIP' : 'GZIP arkiv', 'kindBZIP' : 'BZIP arkiv', 'kindXZ' : 'XZ arkiv', 'kindZIP' : 'ZIP arkiv', 'kindRAR' : 'RAR ar', 'kindJAR' : 'Java JAR file', 'kindTTF' : 'True Type font', 'kindOTF' : 'Open Type font', 'kindRPM' : 'RPM package', // texts 'kindText' : 'Tekst dokument', 'kindTextPlain' : 'Plain text', 'kindPHP' : 'PHP kilde', 'kindCSS' : 'Cascading style sheet', 'kindHTML' : 'HTML dokument', 'kindJS' : 'Javascript', 'kindRTF' : 'Rikt Tekst Format', 'kindC' : 'C kilde', 'kindCHeader' : 'C header kilde', 'kindCPP' : 'C++ kilde', 'kindCPPHeader' : 'C++ header kilde', 'kindShell' : 'Unix shell script', 'kindPython' : 'Python kilde', 'kindJava' : 'Java kilde', 'kindRuby' : 'Ruby kilde', 'kindPerl' : 'Perl script', 'kindSQL' : 'SQL skilde', 'kindXML' : 'XML dokument', 'kindAWK' : 'AWK kilde', 'kindCSV' : 'Comma separated values', 'kindDOCBOOK' : 'Docbook XML dokument', // Images 'kindImage' : 'Bilde', 'kindBMP' : 'BMP bilde', 'kindJPEG' : 'JPEG bilde', 'kindGIF' : 'GIF bilde', 'kindPNG' : 'PNG bilde', 'kindTIFF' : 'TIFF bilde', 'kindTGA' : 'TGA bilde', 'kindPSD' : 'Adobe Photoshop bilde', 'kindXBITMAP' : 'X bitmap bilde', 'kindPXM' : 'Pixelmator bilde', // media 'kindAudio' : 'Audio media', 'kindAudioMPEG' : 'MPEG audio', 'kindAudioMPEG4' : 'MPEG-4 audio', 'kindAudioMIDI' : 'MIDI audio', 'kindAudioOGG' : 'Ogg Vorbis audio', 'kindAudioWAV' : 'WAV audio', 'AudioPlaylist' : 'MP3 spilleliste', 'kindVideo' : 'Video media', 'kindVideoDV' : 'DV film', 'kindVideoMPEG' : 'MPEG film', 'kindVideoMPEG4' : 'MPEG-4 film', 'kindVideoAVI' : 'AVI film', 'kindVideoMOV' : 'Quick Time film', 'kindVideoWM' : 'Windows Media film', 'kindVideoFlash' : 'Flash film', 'kindVideoMKV' : 'Matroska film', 'kindVideoOGG' : 'Ogg film' } }; })); plugins/file-manager-advanced/application/library/js/i18n/elfinder.pl.js000064400000103204147176754550022246 0ustar00/** * Polskie tłumaczenie * @author Marcin Mikołajczyk * @author Bogusław Zięba * @version 2020-03-29 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.pl = { translator : 'Marcin Mikołajczyk <marcin@pjwstk.edu.pl>, Bogusław Zięba <bobi@poczta.fm>, Bogusław Zięba <bobi@poczta.fm>', language : 'Polski', direction : 'ltr', dateFormat : 'd.m.Y H:i', // will show like: 29.03.2020 06:58 fancyDateFormat : '$1 H:i', // will show like: Dzisiaj 06:58 nonameDateFormat : 'ymd-His', // noname upload will show like: 200329-065813 messages : { /********************************** errors **********************************/ 'error' : 'Błąd', 'errUnknown' : 'Nieznany błąd.', 'errUnknownCmd' : 'Nieznane polecenie.', 'errJqui' : 'Niepoprawna konfiguracja jQuery UI. Muszą być zawarte komponenty selectable, draggable i droppable.', 'errNode' : 'elFinder wymaga utworzenia obiektu DOM.', 'errURL' : 'Niepoprawna konfiguracja elFinder! Pole URL nie jest ustawione.', 'errAccess' : 'Dostęp zabroniony.', 'errConnect' : 'Błąd połączenia z zapleczem.', 'errAbort' : 'Połączenie zostało przerwane.', 'errTimeout' : 'Upłynął czas oczekiwania na połączenie.', 'errNotFound' : 'Zaplecze nie zostało znalezione.', 'errResponse' : 'Nieprawidłowa odpowiedź zaplecza.', 'errConf' : 'Niepoprawna konfiguracja zaplecza.', 'errJSON' : 'Moduł PHP JSON nie jest zainstalowany.', 'errNoVolumes' : 'Brak możliwości odczytu katalogów.', 'errCmdParams' : 'Nieprawidłowe parametry dla polecenia "$1".', 'errDataNotJSON' : 'Dane nie są JSON.', 'errDataEmpty' : 'Dane są puste.', 'errCmdReq' : 'Zaplecze wymaga podania nazwy polecenia.', 'errOpen' : 'Nie można otworzyć "$1".', 'errNotFolder' : 'Obiekt nie jest katalogiem.', 'errNotFile' : 'Obiekt nie jest plikiem.', 'errRead' : 'Nie można odczytać "$1".', 'errWrite' : 'Nie można zapisać do "$1".', 'errPerm' : 'Brak uprawnień.', 'errLocked' : '"$1" jest zablokowany i nie może zostać zmieniony, przeniesiony lub usunięty.', 'errExists' : 'Plik "$1" już istnieje.', 'errInvName' : 'Nieprawidłowa nazwa pliku.', 'errInvDirname' : 'Nieprawidłowa nazwa folderu.', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : 'Nie znaleziono folderu.', 'errFileNotFound' : 'Plik nie został znaleziony.', 'errTrgFolderNotFound' : 'Katalog docelowy "$1" nie został znaleziony.', 'errPopup' : 'Przeglądarka zablokowała otwarcie nowego okna. Aby otworzyć plik, zmień ustawienia przeglądarki.', 'errMkdir' : 'Nie można utworzyć katalogu "$1".', 'errMkfile' : 'Nie można utworzyć pliku "$1".', 'errRename' : 'Nie można zmienić nazwy "$1".', 'errCopyFrom' : 'Kopiowanie z katalogu "$1" nie jest możliwe.', 'errCopyTo' : 'Kopiowanie do katalogu "$1" nie jest możliwe.', 'errMkOutLink' : 'Nie można utworzyć link do zewnętrznego katalogu głównego.', // from v2.1 added 03.10.2015 'errUpload' : 'Błąd wysyłania.', // old name - errUploadCommon 'errUploadFile' : 'Nie można wysłać "$1".', // old name - errUpload 'errUploadNoFiles' : 'Nie znaleziono plików do wysłania.', 'errUploadTotalSize' : 'Przekroczono dopuszczalny rozmiar wysyłanych plików.', // old name - errMaxSize 'errUploadFileSize' : 'Plik przekracza dopuszczalny rozmiar.', // old name - errFileMaxSize 'errUploadMime' : 'Niedozwolony typ pliku.', 'errUploadTransfer' : 'Błąd przesyłania "$1".', 'errUploadTemp' : 'Nie można wykonać tymczasowego pliku do przesłania.', // from v2.1 added 26.09.2015 'errNotReplace' : 'Obiekt "$1" istnieje już w tej lokalizacji i nie może być zastąpiony przez inny typ obiektu.', // new 'errReplace' : 'Nie można zastąpić "$1".', 'errSave' : 'Nie można zapisać "$1".', 'errCopy' : 'Nie można skopiować "$1".', 'errMove' : 'Nie można przenieść "$1".', 'errCopyInItself' : 'Nie można skopiować "$1" w miejsce jego samego.', 'errRm' : 'Nie można usunąć "$1".', 'errTrash' : 'Nie można do kosza.', // from v2.1.24 added 30.4.2017 'errRmSrc' : 'Nie należy usunąć pliku(s) źródłowy.', 'errExtract' : 'Nie można wypakować plików z "$1".', 'errArchive' : 'Nie można utworzyć archiwum.', 'errArcType' : 'Nieobsługiwany typ archiwum.', 'errNoArchive' : 'Plik nie jest prawidłowym typem archiwum.', 'errCmdNoSupport' : 'Zaplecze nie obsługuje tego polecenia.', 'errReplByChild' : 'Nie można zastąpić katalogu "$1" elementem w nim zawartym', 'errArcSymlinks' : 'Ze względów bezpieczeństwa rozpakowywanie archiwów zawierających dowiązania symboliczne (symlinks) jest niedozwolone.', // edited 24.06.2012 'errArcMaxSize' : 'Archiwum przekracza maksymalny dopuszczalny rozmiar.', 'errResize' : 'Nie można zmienić rozmiaru "$1".', 'errResizeDegree' : 'Nieprawidłowy stopień obracania.', // added 7.3.2013 'errResizeRotate' : 'Nie można obrócić obrazu.', // added 7.3.2013 'errResizeSize' : 'Nieprawidłowy rozmiar obrazu.', // added 7.3.2013 'errResizeNoChange' : 'Nie zmieniono rozmiaru obrazu.', // added 7.3.2013 'errUsupportType' : 'Nieobsługiwany typ pliku.', 'errNotUTF8Content' : 'Plik "$1" nie jest UTF-8 i nie może być edytowany.', // added 9.11.2011 'errNetMount' : 'Nie można zamontować "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'Nieobsługiwany protokół.', // added 17.04.2012 'errNetMountFailed' : 'Montowanie nie powiodło się.', // added 17.04.2012 'errNetMountHostReq' : 'Host wymagany.', // added 18.04.2012 'errSessionExpires' : 'Twoja sesja wygasła z powodu nieaktywności.', 'errCreatingTempDir' : 'Nie można utworzyć katalogu tymczasowego: "$1"', 'errFtpDownloadFile' : 'Nie można pobrać pliku z FTP: "$1"', 'errFtpUploadFile' : 'Nie można przesłać pliku na serwer FTP: "$1"', 'errFtpMkdir' : 'Nie można utworzyć zdalnego katalogu FTP: "$1"', 'errArchiveExec' : 'Błąd podczas archiwizacji plików: "$1"', 'errExtractExec' : 'Błąd podczas wyodrębniania plików: "$1"', 'errNetUnMount' : 'Nie można odmontować', // from v2.1 added 30.04.2012 'errConvUTF8' : 'Nie wymienialne na UTF-8', // from v2.1 added 08.04.2014 'errFolderUpload' : 'Wypróbuj Google Chrome, jeśli chcesz przesłać katalog.', // from v2.1 added 26.6.2015 'errSearchTimeout' : 'Upłynął limit czasu podczas wyszukiwania "$1". Wynik wyszukiwania jest częściowy.', // from v2.1 added 12.1.2016 'errReauthRequire' : 'Wymagana jest ponowna autoryzacja.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'Maks. liczba elementów do wyboru to $1.', // from v2.1.17 added 17.10.2016 'errRestore' : 'Nie można przywrócić z kosza. Nie można zidentyfikować przywrócić docelowego.', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'Nie znaleziono edytora tego typu pliku.', // from v2.1.25 added 23.5.2017 'errServerError' : 'Wystąpił błąd po stronie serwera .', // from v2.1.25 added 16.6.2017 'errEmpty' : 'Nie można do pustego folderu "$1".', // from v2.1.25 added 22.6.2017 'moreErrors' : 'Jest jeszcze $1 błąd/błędy.', // from v2.1.44 added 9.12.2018 /******************************* commands names ********************************/ 'cmdarchive' : 'Utwórz archiwum', 'cmdback' : 'Wstecz', 'cmdcopy' : 'Kopiuj', 'cmdcut' : 'Wytnij', 'cmddownload' : 'Pobierz', 'cmdduplicate' : 'Duplikuj', 'cmdedit' : 'Edytuj plik', 'cmdextract' : 'Wypakuj pliki z archiwum', 'cmdforward' : 'Dalej', 'cmdgetfile' : 'Wybierz pliki', 'cmdhelp' : 'Informacje o programie', 'cmdhome' : 'Główny', 'cmdinfo' : 'Właściwości', 'cmdmkdir' : 'Nowy katalog', 'cmdmkdirin' : 'Do nowego katalogu', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'Nowy plik', 'cmdopen' : 'Otwórz', 'cmdpaste' : 'Wklej', 'cmdquicklook' : 'Podgląd', 'cmdreload' : 'Odśwież', 'cmdrename' : 'Zmień nazwę', 'cmdrm' : 'Usuń', 'cmdtrash' : 'Do kosza', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'Przywróć', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'Wyszukaj pliki', 'cmdup' : 'Przejdź do katalogu nadrzędnego', 'cmdupload' : 'Wyślij pliki', 'cmdview' : 'Widok', 'cmdresize' : 'Zmień rozmiar i Obróć', 'cmdsort' : 'Sortuj', 'cmdnetmount' : 'Zamontuj wolumin sieciowy', // added 18.04.2012 'cmdnetunmount': 'Odmontuj', // from v2.1 added 30.04.2012 'cmdplaces' : 'Do Miejsc', // added 28.12.2014 'cmdchmod' : 'Zmiana trybu', // from v2.1 added 20.6.2015 'cmdopendir' : 'Otwórz katalog', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'Resetuj szerokość kolumny', // from v2.1.13 added 12.06.2016 'cmdfullscreen': 'Pełny ekran', // from v2.1.15 added 03.08.2016 'cmdmove' : 'Przenieś', // from v2.1.15 added 21.08.2016 'cmdempty' : 'Opróżnij folder', // from v2.1.25 added 22.06.2017 'cmdundo' : 'Cofnij', // from v2.1.27 added 31.07.2017 'cmdredo' : 'Ponów', // from v2.1.27 added 31.07.2017 'cmdpreference': 'Preferencje', // from v2.1.27 added 03.08.2017 'cmdselectall' : 'Zaznacz wszystko', // from v2.1.28 added 15.08.2017 'cmdselectnone': 'Odznacz wszystko', // from v2.1.28 added 15.08.2017 'cmdselectinvert': 'Odwróć wybór', // from v2.1.28 added 15.08.2017 'cmdopennew' : 'Otwórz w nowym oknie', // from v2.1.38 added 3.4.2018 'cmdhide' : 'Ukryj (osobiste)', // from v2.1.41 added 24.7.2018 /*********************************** buttons ***********************************/ 'btnClose' : 'Zamknij', 'btnSave' : 'Zapisz', 'btnRm' : 'Usuń', 'btnApply' : 'Zastosuj', 'btnCancel' : 'Anuluj', 'btnNo' : 'Nie', 'btnYes' : 'Tak', 'btnMount' : 'Montuj', // added 18.04.2012 'btnApprove': 'Idź do $1 & zatwierdź', // from v2.1 added 26.04.2012 'btnUnmount': 'Odmontuj', // from v2.1 added 30.04.2012 'btnConv' : 'Konwertuj', // from v2.1 added 08.04.2014 'btnCwd' : 'Tutaj', // from v2.1 added 22.5.2015 'btnVolume' : 'Wolumin', // from v2.1 added 22.5.2015 'btnAll' : 'Wszystko', // from v2.1 added 22.5.2015 'btnMime' : 'Typ MIME', // from v2.1 added 22.5.2015 'btnFileName':'Nazwa pliku', // from v2.1 added 22.5.2015 'btnSaveClose': 'Zapisz & Zamknij', // from v2.1 added 12.6.2015 'btnBackup' : 'Kopia zapasowa', // fromv2.1 added 28.11.2015 'btnRename' : 'Zmień nazwę', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'Zmień nazwę(Wszystkie)', // from v2.1.24 added 6.4.2017 'btnPrevious' : 'Poprz ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : 'Nast ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : 'Zapisz Jako', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'Otwieranie katalogu', 'ntffile' : 'Otwórz plik', 'ntfreload' : 'Odśwież zawartość katalogu', 'ntfmkdir' : 'Tworzenie katalogu', 'ntfmkfile' : 'Tworzenie plików', 'ntfrm' : 'Usuwanie plików', 'ntfcopy' : 'Kopiowanie plików', 'ntfmove' : 'Przenoszenie plików', 'ntfprepare' : 'Przygotowanie do kopiowania plików', 'ntfrename' : 'Zmiana nazw plików', 'ntfupload' : 'Wysyłanie plików', 'ntfdownload' : 'Pobieranie plików', 'ntfsave' : 'Zapisywanie plików', 'ntfarchive' : 'Tworzenie archiwum', 'ntfextract' : 'Wypakowywanie plików z archiwum', 'ntfsearch' : 'Wyszukiwanie plików', 'ntfresize' : 'Zmiana rozmiaru obrazów', 'ntfsmth' : 'Robienie czegoś >_<', 'ntfloadimg' : 'Ładowanie obrazu', 'ntfnetmount' : 'Montaż woluminu sieciowego', // added 18.04.2012 'ntfnetunmount': 'Odłączanie woluminu sieciowego', // from v2.1 added 30.04.2012 'ntfdim' : 'Pozyskiwanie wymiaru obrazu', // added 20.05.2013 'ntfreaddir' : 'Odczytywanie informacji katalogu', // from v2.1 added 01.07.2013 'ntfurl' : 'Pobieranie URL linku', // from v2.1 added 11.03.2014 'ntfchmod' : 'Zmiana trybu pliku', // from v2.1 added 20.6.2015 'ntfpreupload': 'Weryfikacja nazwy przesłanego pliku', // from v2.1 added 31.11.2015 'ntfzipdl' : 'Tworzenie pliku do pobrania', // from v2.1.7 added 23.1.2016 'ntfparents' : 'Uzyskiwanie informacji o ścieżce', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'Przetwarzanie przesłanego pliku', // from v2.1.17 added 2.11.2016 'ntftrash' : 'Wykonuje wrzucanie do kosza', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'Wykonuje przywracanie z kosza', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'Sprawdzanie folderu docelowego', // from v2.1.24 added 3.5.2017 'ntfundo' : 'Cofanie poprzedniej operacji', // from v2.1.27 added 31.07.2017 'ntfredo' : 'Ponownie poprzednio cofnięte', // from v2.1.27 added 31.07.2017 'ntfchkcontent' : 'Sprawdzanie zawartości', // from v2.1.41 added 3.8.2018 /*********************************** volumes *********************************/ 'volume_Trash' : 'Śmieci', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : 'nieznana', 'Today' : 'Dzisiaj', 'Yesterday' : 'Wczoraj', 'msJan' : 'Sty', 'msFeb' : 'Lut', 'msMar' : 'Mar', 'msApr' : 'Kwi', 'msMay' : 'Maj', 'msJun' : 'Cze', 'msJul' : 'Lip', 'msAug' : 'Sie', 'msSep' : 'Wrz', 'msOct' : 'Paź', 'msNov' : 'Lis', 'msDec' : 'Gru', 'January' : 'Styczeń', 'February' : 'Luty', 'March' : 'Marzec', 'April' : 'Kwiecień', 'May' : 'Maj', 'June' : 'Czerwiec', 'July' : 'Lipiec', 'August' : 'Sierpień', 'September' : 'Wrzesień', 'October' : 'Październik', 'November' : 'Listopad', 'December' : 'Grudzień', 'Sunday' : 'Niedziela', 'Monday' : 'Poniedziałek', 'Tuesday' : 'Wtorek', 'Wednesday' : 'Środa', 'Thursday' : 'Czwartek', 'Friday' : 'Piątek', 'Saturday' : 'Sobota', 'Sun' : 'Nie', 'Mon' : 'Pon', 'Tue' : 'Wto', 'Wed' : 'Śro', 'Thu' : 'Czw', 'Fri' : 'Pią', 'Sat' : 'Sob', /******************************** sort variants ********************************/ 'sortname' : 'w/g nazwy', 'sortkind' : 'w/g typu', 'sortsize' : 'w/g rozmiaru', 'sortdate' : 'w/g daty', 'sortFoldersFirst' : 'katalogi pierwsze', 'sortperm' : 'wg/nazwy', // from v2.1.13 added 13.06.2016 'sortmode' : 'wg/trybu', // from v2.1.13 added 13.06.2016 'sortowner' : 'wg/właściciela', // from v2.1.13 added 13.06.2016 'sortgroup' : 'wg/grup', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'Również drzewa katalogów', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : 'NowyPlik.txt', // added 10.11.2015 'untitled folder' : 'NowyFolder', // added 10.11.2015 'Archive' : 'NoweArchiwum', // from v2.1 added 10.11.2015 'untitled file' : 'NowyPlik.$1', // from v2.1.41 added 6.8.2018 'extentionfile' : '$1 Plik', // from v2.1.41 added 6.8.2018 'extentiontype' : '$1: $2', // from v2.1.43 added 17.10.2018 /********************************** messages **********************************/ 'confirmReq' : 'Wymagane potwierdzenie', 'confirmRm' : 'Czy na pewno chcesz usunąć pliki?
                Tej operacji nie można cofnąć!', 'confirmRepl' : 'Zastąpić stary plik nowym?', 'confirmRest' : 'Zamienić istniejący element na pozycję w koszu?', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'Nie w UTF-8
                Konwertować na UTF-8?
                Zawartość stanie się UTF-8 poprzez zapisanie po konwersji.', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'Nie można wykryć kodowania tego pliku. Musi być tymczasowo przekształcony do UTF-8.
                Proszę wybrać kodowanie znaków tego pliku.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : 'Został zmodyfikowany.
                Utracisz pracę, jeśli nie zapiszesz zmian.', // from v2.1 added 15.7.2015 'confirmTrash' : 'Czy na pewno chcesz przenieść elementy do kosza?', //from v2.1.24 added 29.4.2017 'confirmMove' : 'Czy na pewno chcesz przenieść elementy do "$1"?', //from v2.1.50 added 27.7.2019 'apllyAll' : 'Zastosuj do wszystkich', 'name' : 'Nazwa', 'size' : 'Rozmiar', 'perms' : 'Uprawnienia', 'modify' : 'Zmodyfikowany', 'kind' : 'Typ', 'read' : 'odczyt', 'write' : 'zapis', 'noaccess' : 'brak dostępu', 'and' : 'i', 'unknown' : 'nieznany', 'selectall' : 'Zaznacz wszystkie pliki', 'selectfiles' : 'Zaznacz plik(i)', 'selectffile' : 'Zaznacz pierwszy plik', 'selectlfile' : 'Zaznacz ostatni plik', 'viewlist' : 'Widok listy', 'viewicons' : 'Widok ikon', 'viewSmall' : 'Małe ikony', // from v2.1.39 added 22.5.2018 'viewMedium' : 'Średnie ikony', // from v2.1.39 added 22.5.2018 'viewLarge' : 'Duże ikony', // from v2.1.39 added 22.5.2018 'viewExtraLarge' : 'Bardzo duże ikony', // from v2.1.39 added 22.5.2018 'places' : 'Ulubione', 'calc' : 'Obliczanie', 'path' : 'Ścieżka', 'aliasfor' : 'Alias do', 'locked' : 'Zablokowany', 'dim' : 'Wymiary', 'files' : 'Plik(ów)', 'folders' : 'Katalogi', 'items' : 'Element(ów)', 'yes' : 'tak', 'no' : 'nie', 'link' : 'Odnośnik', 'searcresult' : 'Wyniki wyszukiwania', 'selected' : 'zaznaczonych obiektów', 'about' : 'O programie', 'shortcuts' : 'Skróty klawiaturowe', 'help' : 'Pomoc', 'webfm' : 'Menedżer plików sieciowych', 'ver' : 'Wersja', 'protocolver' : 'wersja protokołu', 'homepage' : 'Strona projektu', 'docs' : 'Dokumentacja', 'github' : 'Obserwuj rozwój projektu na Github', 'twitter' : 'Śledź nas na Twitterze', 'facebook' : 'Dołącz do nas na Facebooku', 'team' : 'Zespół', 'chiefdev' : 'główny programista', 'developer' : 'programista', 'contributor' : 'współautor', 'maintainer' : 'koordynator', 'translator' : 'tłumacz', 'icons' : 'Ikony', 'dontforget' : 'i nie zapomnij zabrać ręcznika', 'shortcutsof' : 'Skróty klawiaturowe są wyłączone', 'dropFiles' : 'Upuść pliki tutaj', 'or' : 'lub', 'selectForUpload' : 'Wybierz pliki', 'moveFiles' : 'Przenieś pliki', 'copyFiles' : 'Kopiuj pliki', 'restoreFiles' : 'Przywróć elementy', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'Usuń z miejsc', 'aspectRatio' : 'Zachowaj proporcje', 'scale' : 'Skala', 'width' : 'Szerokość', 'height' : 'Wysokość', 'resize' : 'Zmień rozmiar', 'crop' : 'Przytnij', 'rotate' : 'Obróć', 'rotate-cw' : 'Obróć 90° w lewo', 'rotate-ccw' : 'Obróć 90° w prawo', 'degree' : '°', 'netMountDialogTitle' : 'Montaż woluminu sieciowego', // added 18.04.2012 'protocol' : 'Protokół', // added 18.04.2012 'host' : 'Host', // added 18.04.2012 'port' : 'Port', // added 18.04.2012 'user' : 'Użytkownik', // added 18.04.2012 'pass' : 'Hasło', // added 18.04.2012 'confirmUnmount' : 'Czy chcesz odmontować $1?', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'Upuść lub Wklej pliki z przeglądarki', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'Upuść lub Wklej tutaj pliki i adresy URL', // from v2.1 added 07.04.2014 'encoding' : 'Kodowanie', // from v2.1 added 19.12.2014 'locale' : 'Lokalne', // from v2.1 added 19.12.2014 'searchTarget' : 'Docelowo: $1', // from v2.1 added 22.5.2015 'searchMime' : 'Wyszukiwanie poprzez wpisanie typu MIME', // from v2.1 added 22.5.2015 'owner' : 'Właściciel', // from v2.1 added 20.6.2015 'group' : 'Grupa', // from v2.1 added 20.6.2015 'other' : 'Inne', // from v2.1 added 20.6.2015 'execute' : 'Wykonaj', // from v2.1 added 20.6.2015 'perm' : 'Uprawnienia', // from v2.1 added 20.6.2015 'mode' : 'Tryb', // from v2.1 added 20.6.2015 'emptyFolder' : 'Katalog jest pusty', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'Katalog jest pusty\\AUpuść aby dodać pozycje', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'Katalog jest pusty\\ADotknij dłużej aby dodać pozycje', // from v2.1.6 added 30.12.2015 'quality' : 'Jakość', // from v2.1.6 added 5.1.2016 'autoSync' : 'Auto synchronizacja', // from v2.1.6 added 10.1.2016 'moveUp' : 'Przenieś w górę', // from v2.1.6 added 18.1.2016 'getLink' : 'Pobierz URL linku', // from v2.1.7 added 9.2.2016 'selectedItems' : 'Wybrane pozycje ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'ID Katalogu', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'Zezwól na dostęp offline', // from v2.1.10 added 3.25.2016 'reAuth' : 'Aby ponownie uwierzytelnić', // from v2.1.10 added 3.25.2016 'nowLoading' : 'Teraz ładuję...', // from v2.1.12 added 4.26.2016 'openMulti' : 'Otwieranie wielu plików', // from v2.1.12 added 5.14.2016 'openMultiConfirm': 'Próbujesz otworzyć $1 plików. Czy na pewno chcesz, aby otworzyć w przeglądarce?', // from v2.1.12 added 5.14.2016 'emptySearch' : 'Wynik wyszukiwania jest pusty', // from v2.1.12 added 5.16.2016 'editingFile' : 'Edytujesz plik.', // from v2.1.13 added 6.3.2016 'hasSelected' : 'Masz wybranych $1 pozycji.', // from v2.1.13 added 6.3.2016 'hasClipboard' : 'Masz $1 pozycji w schowku.', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'Wyszukiwanie przyrostowe jest wyłącznie z bieżącego widoku.', // from v2.1.13 added 6.30.2016 'reinstate' : 'Przywracanie', // from v2.1.15 added 3.8.2016 'complete' : '$1 zakończone', // from v2.1.15 added 21.8.2016 'contextmenu' : 'Menu kontekstowe', // from v2.1.15 added 9.9.2016 'pageTurning' : 'Obracanie strony', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'Wolumin główny', // from v2.1.16 added 16.9.2016 'reset' : 'Resetuj', // from v2.1.16 added 1.10.2016 'bgcolor' : 'Kolor tła', // from v2.1.16 added 1.10.2016 'colorPicker' : 'Wybierania kolorów', // from v2.1.16 added 1.10.2016 '8pxgrid' : '8px Kratka', // from v2.1.16 added 4.10.2016 'enabled' : 'Włączone', // from v2.1.16 added 4.10.2016 'disabled' : 'Wyłączone', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'Wyniki wyszukiwania są puste w bieżącym widoku.\\AWciśnij [Enter] aby poszerzyć zakres wyszukiwania.', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'Wyszukiwanie pierwszej litery brak wyników w bieżącym widoku.', // from v2.1.23 added 24.3.2017 'textLabel' : 'Etykieta tekstowa', // from v2.1.17 added 13.10.2016 'minsLeft' : '$1 min pozostało', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'Otwórz ponownie z wybranym kodowaniem', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'Zapisz z wybranym kodowaniem', // from v2.1.19 added 2.12.2016 'selectFolder' : 'Wybierz katalog', // from v2.1.20 added 13.12.2016 'firstLetterSearch': 'Wyszukiwanie pierwszej litery', // from v2.1.23 added 24.3.2017 'presets' : 'Wstępnie ustalone', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : 'To zbyt wiele rzeczy, więc nie mogą być w koszu.', // from v2.1.25 added 9.6.2017 'TextArea' : 'PoleTekstowe', // from v2.1.25 added 14.6.2017 'folderToEmpty' : 'Opróżnij folder "$1".', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : 'Brak elementów w folderze "$1".', // from v2.1.25 added 22.6.2017 'preference' : 'Preferencje', // from v2.1.26 added 28.6.2017 'language' : 'Ustawienie języka', // from v2.1.26 added 28.6.2017 'clearBrowserData': 'Zainicjuj ustawienia zapisane w tej przeglądarce', // from v2.1.26 added 28.6.2017 'toolbarPref' : 'Ustawienia paska narzędzi', // from v2.1.27 added 2.8.2017 'charsLeft' : '... pozostało $1 znak(ów).', // from v2.1.29 added 30.8.2017 'linesLeft' : '... pozostało $1 lini.', // from v2.1.52 added 16.1.2020 'sum' : 'Suma', // from v2.1.29 added 28.9.2017 'roughFileSize' : 'Przybliżony rozmiar pliku', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : 'Skoncentruj się na elemencie dialogowym po najechaniu myszą', // from v2.1.30 added 2.11.2017 'select' : 'Wybierz', // from v2.1.30 added 23.11.2017 'selectAction' : 'Działanie po wybraniu pliku', // from v2.1.30 added 23.11.2017 'useStoredEditor' : 'Otwórz za pomocą ostatnio używanego edytora', // from v2.1.30 added 23.11.2017 'selectinvert' : 'Odwróć zaznaczenie', // from v2.1.30 added 25.11.2017 'renameMultiple' : 'Czy na pewno chcesz zmienić nazwę $1 wybranych elementów takich jak $2?
                Tego nie da się cofnąć!', // from v2.1.31 added 4.12.2017 'batchRename' : 'Zmień partiami', // from v2.1.31 added 8.12.2017 'plusNumber' : '+ Liczba', // from v2.1.31 added 8.12.2017 'asPrefix' : 'Dodaj prefix', // from v2.1.31 added 8.12.2017 'asSuffix' : 'Dodaj suffix', // from v2.1.31 added 8.12.2017 'changeExtention' : 'Zmień rozszerzenie', // from v2.1.31 added 8.12.2017 'columnPref' : 'Ustawienia kolumn (Widok listy)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : 'Wszystkie zmiany widoczne natychmiast w archiwum.', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : 'Wszelkie zmiany nie będą widoczne, dopóki nie odłączysz tego woluminu.', // from v2.1.33 added 2.3.2018 'unmountChildren' : 'Następujący wolumin (y), zamontowany na tym urządzeniu również niezamontowany. Czy na pewno chcesz go odmontować?', // from v2.1.33 added 5.3.2018 'selectionInfo' : 'Informacje Wyboru', // from v2.1.33 added 7.3.2018 'hashChecker' : 'Algorytmy do pokazywania hash pliku', // from v2.1.33 added 10.3.2018 'infoItems' : 'Info Elementów (Wybór Panelu Informacyjnego)', // from v2.1.38 added 28.3.2018 'pressAgainToExit': 'Naciśnij ponownie, aby wyjść.', // from v2.1.38 added 1.4.2018 'toolbar' : 'Pasek narzędziowy', // from v2.1.38 added 4.4.2018 'workspace' : 'Obszar Pracy', // from v2.1.38 added 4.4.2018 'dialog' : 'Dialog', // from v2.1.38 added 4.4.2018 'all' : 'Wszystko', // from v2.1.38 added 4.4.2018 'iconSize' : 'Rozmiar Ikony (Podgląd ikon)', // from v2.1.39 added 7.5.2018 'editorMaximized' : 'Otwórz zmaksymalizowane okno edytora', // from v2.1.40 added 30.6.2018 'editorConvNoApi' : 'Ponieważ konwersja przez API nie jest obecnie dostępna, należy dokonać konwersji w witrynie.', //from v2.1.40 added 8.7.2018 'editorConvNeedUpload' : 'Po konwersji musisz przesłać z adresem URL pozycji lub pobranym plikiem, aby zapisać przekonwertowany plik.', //from v2.1.40 added 8.7.2018 'convertOn' : 'Konwertuj na stronie $1', // from v2.1.40 added 10.7.2018 'integrations' : 'Integracje', // from v2.1.40 added 11.7.2018 'integrationWith' : 'Ten elFinder ma zintegrowane następujące usługi zewnętrzne. Przed użyciem ich sprawdź warunki użytkowania, politykę prywatności itp.', // from v2.1.40 added 11.7.2018 'showHidden' : 'Pokaż ukryte pozycje', // from v2.1.41 added 24.7.2018 'hideHidden' : 'Ukryj ukryte pozycje', // from v2.1.41 added 24.7.2018 'toggleHidden' : 'Pokaż/Ukryj ukryte pozycje', // from v2.1.41 added 24.7.2018 'makefileTypes' : 'Typy plików, które można włączyć za pomocą "Nowy plik"', // from v2.1.41 added 7.8.2018 'typeOfTextfile' : 'Typ pliku tekstowego', // from v2.1.41 added 7.8.2018 'add' : 'Dodaj', // from v2.1.41 added 7.8.2018 'theme' : 'Motyw', // from v2.1.43 added 19.10.2018 'default' : 'Domyślnie', // from v2.1.43 added 19.10.2018 'description' : 'Opis', // from v2.1.43 added 19.10.2018 'website' : 'Witryna', // from v2.1.43 added 19.10.2018 'author' : 'Autor', // from v2.1.43 added 19.10.2018 'email' : 'E-mail', // from v2.1.43 added 19.10.2018 'license' : 'Licencja', // from v2.1.43 added 19.10.2018 'exportToSave' : 'Tego elementu nie można zapisać. Aby uniknąć utraty zmian, musisz wyeksportować go na swój komputer.', // from v2.1.44 added 1.12.2018 'dblclickToSelect': 'Kliknij dwukrotnie plik, aby go wybrać.', // from v2.1.47 added 22.1.2019 'useFullscreen' : 'Użyj trybu pełnoekranowego', // from v2.1.47 added 19.2.2019 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Nieznany', 'kindRoot' : 'Główny Wolumin', // from v2.1.16 added 16.10.2016 'kindFolder' : 'Katalog', 'kindSelects' : 'Zaznaczenie', // from v2.1.29 added 29.8.2017 'kindAlias' : 'Alias', 'kindAliasBroken' : 'Utracony alias', // applications 'kindApp' : 'Aplikacja', 'kindPostscript' : 'Dokument Postscript', 'kindMsOffice' : 'Dokument Office', 'kindMsWord' : 'Dokument Word', 'kindMsExcel' : 'Dokument Excel', 'kindMsPP' : 'Prezentacja PowerPoint', 'kindOO' : 'Dokument OpenOffice', 'kindAppFlash' : 'Aplikacja Flash', 'kindPDF' : 'Dokument przenośny PDF', 'kindTorrent' : 'Plik BitTorrent', 'kind7z' : 'Archiwum 7z', 'kindTAR' : 'Archiwum TAR', 'kindGZIP' : 'Archiwum GZIP', 'kindBZIP' : 'Archiwum BZIP', 'kindXZ' : 'Archiwum XZ', 'kindZIP' : 'Archiwum ZIP', 'kindRAR' : 'Archiwum RAR', 'kindJAR' : 'Plik Java JAR', 'kindTTF' : 'Czcionka TrueType', 'kindOTF' : 'Czcionka OpenType', 'kindRPM' : 'Pakiet RPM', // texts 'kindText' : 'Dokument tekstowy', 'kindTextPlain' : 'Zwykły tekst', 'kindPHP' : 'Kod źródłowy PHP', 'kindCSS' : 'Kaskadowe arkusze stylów', 'kindHTML' : 'Dokument HTML', 'kindJS' : 'Kod źródłowy Javascript', 'kindRTF' : 'Tekst sformatowany RTF', 'kindC' : 'Kod źródłowy C', 'kindCHeader' : 'Plik nagłówka C', 'kindCPP' : 'Kod źródłowy C++', 'kindCPPHeader' : 'Plik nagłówka C++', 'kindShell' : 'Skrypt powłoki Unix', 'kindPython' : 'Kod źródłowy Python', 'kindJava' : 'Kod źródłowy Java', 'kindRuby' : 'Kod źródłowy Ruby', 'kindPerl' : 'Skrypt Perl', 'kindSQL' : 'Kod źródłowy SQL', 'kindXML' : 'Dokument XML', 'kindAWK' : 'Kod źródłowy AWK', 'kindCSV' : 'Tekst rozdzielany przecinkami CSV', 'kindDOCBOOK' : 'Dokument Docbook XML', 'kindMarkdown' : 'Tekst promocyjny', // added 20.7.2015 // images 'kindImage' : 'Obraz', 'kindBMP' : 'Obraz BMP', 'kindJPEG' : 'Obraz JPEG', 'kindGIF' : 'Obraz GIF', 'kindPNG' : 'Obraz PNG', 'kindTIFF' : 'Obraz TIFF', 'kindTGA' : 'Obraz TGA', 'kindPSD' : 'Obraz Adobe Photoshop', 'kindXBITMAP' : 'Obraz X BitMap', 'kindPXM' : 'Obraz Pixelmator', // media 'kindAudio' : 'Plik dźwiękowy', 'kindAudioMPEG' : 'Plik dźwiękowy MPEG', 'kindAudioMPEG4' : 'Plik dźwiękowy MPEG-4', 'kindAudioMIDI' : 'Plik dźwiękowy MIDI', 'kindAudioOGG' : 'Plik dźwiękowy Ogg Vorbis', 'kindAudioWAV' : 'Plik dźwiękowy WAV', 'AudioPlaylist' : 'Lista odtwarzania MP3', 'kindVideo' : 'Plik wideo', 'kindVideoDV' : 'Plik wideo DV', 'kindVideoMPEG' : 'Plik wideo MPEG', 'kindVideoMPEG4' : 'Plik wideo MPEG-4', 'kindVideoAVI' : 'Plik wideo AVI', 'kindVideoMOV' : 'Plik wideo Quick Time', 'kindVideoWM' : 'Plik wideo Windows Media', 'kindVideoFlash' : 'Plik wideo Flash', 'kindVideoMKV' : 'Plik wideo Matroska', 'kindVideoOGG' : 'Plik wideo Ogg' } }; })); plugins/file-manager-advanced/application/library/js/i18n/elfinder.pt_BR.js000064400000103364147176754550022650 0ustar00/** * Português translation * @author Leandro Carvalho * @author Wesley Osorio * @author Fernando H. Bandeira * @author Gustavo Brito * @version 2019-10-22 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.pt_BR = { translator : 'Leandro Carvalho <contato@leandrowebdev.net>, Wesley Osorio<wesleyfosorio@hotmail.com>, Fernando H. Bandeira <fernando.bandeira94@gmail.com>, Gustavo Brito <britopereiragustavo@gmail.com>', language : 'Português', direction : 'ltr', dateFormat : 'd M Y H:i', // will show like: 22 Out 2019 11:34 fancyDateFormat : '$1 H:i', // will show like: Hoje 11:34 nonameDateFormat : 'ymd-His', // noname upload will show like: 191022-113433 messages : { /********************************** errors **********************************/ 'error' : 'Erro', 'errUnknown' : 'Erro desconhecido.', 'errUnknownCmd' : 'Comando desconhecido.', 'errJqui' : 'Configuração inválida do JQuery UI. Verifique se os componentes selectable, draggable e droppable estão incluídos.', 'errNode' : 'elFinder requer um elemento DOM para ser criado.', 'errURL' : 'Configuração inválida do elFinder! Você deve setar a opção da URL.', 'errAccess' : 'Acesso negado.', 'errConnect' : 'Incapaz de conectar ao backend.', 'errAbort' : 'Conexão abortada.', 'errTimeout' : 'Tempo de conexão excedido', 'errNotFound' : 'Backend não encontrado.', 'errResponse' : 'Resposta inválida do backend.', 'errConf' : 'Configuração inválida do backend.', 'errJSON' : 'Módulo PHP JSON não está instalado.', 'errNoVolumes' : 'Não existe nenhum volume legível disponivel.', 'errCmdParams' : 'Parâmetro inválido para o comando "$1".', 'errDataNotJSON' : 'Dados não estão no formato JSON.', 'errDataEmpty' : 'Dados vazios.', 'errCmdReq' : 'Requisição do Backend requer nome de comando.', 'errOpen' : 'Incapaz de abrir "$1".', 'errNotFolder' : 'Objeto não é uma pasta.', 'errNotFile' : 'Objeto não é um arquivo.', 'errRead' : 'Incapaz de ler "$1".', 'errWrite' : 'Incapaz de escrever em "$1".', 'errPerm' : 'Permissão negada.', 'errLocked' : '"$1" está bloqueado e não pode ser renomeado, movido ou removido.', 'errExists' : 'O nome do arquivo "$1" já existe neste local.', 'errInvName' : 'Nome do arquivo inválido.', 'errInvDirname' : 'Nome da pasta inválida.', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : 'Pasta não encontrada.', 'errFileNotFound' : 'Arquivo não encontrado.', 'errTrgFolderNotFound' : 'Pasta de destino "$1" não encontrada.', 'errPopup' : 'O seu navegador está bloqueando popup\'s. Para abrir o arquivo, altere esta opção no seu Navegador.', 'errMkdir' : 'Incapaz de criar a pasta "$1".', 'errMkfile' : 'Incapaz de criar o arquivo "$1".', 'errRename' : 'Incapaz de renomear "$1".', 'errCopyFrom' : 'Copia dos arquivos do volume "$1" não permitida.', 'errCopyTo' : 'Copia dos arquivos para o volume "$1" não permitida.', 'errMkOutLink' : 'Incapaz de criar um link fora da unidade raiz.', // from v2.1 added 03.10.2015 'errUpload' : 'Erro no upload.', // old name - errUploadCommon 'errUploadFile' : 'Não foi possível fazer o upload "$1".', // old name - errUpload 'errUploadNoFiles' : 'Não foi encontrado nenhum arquivo para upload.', 'errUploadTotalSize' : 'Os dados excedem o tamanho máximo permitido.', // old name - errMaxSize 'errUploadFileSize' : 'Arquivo excede o tamanho máximo permitido.', // old name - errFileMaxSize 'errUploadMime' : 'Tipo de arquivo não permitido.', 'errUploadTransfer' : '"$1" erro na transferência.', 'errUploadTemp' : 'Incapaz de criar um arquivo temporário para upload.', // from v2.1 added 26.09.2015 'errNotReplace' : 'Objeto "$1" já existe neste local e não pode ser substituído por um objeto com outro tipo.', // new 'errReplace' : 'Incapaz de substituir "$1".', 'errSave' : 'Incapaz de salvar "$1".', 'errCopy' : 'Incapaz de copiar "$1".', 'errMove' : 'Incapaz de mover "$1".', 'errCopyInItself' : 'Incapaz de copiar "$1" nele mesmo.', 'errRm' : 'Incapaz de remover "$1".', 'errTrash' : 'Incapaz de deletar.', // from v2.1.24 added 30.4.2017 'errRmSrc' : 'Incapaz de remover o(s) arquivo(s) fonte.', 'errExtract' : 'Incapaz de extrair os arquivos de "$1".', 'errArchive' : 'Incapaz de criar o arquivo.', 'errArcType' : 'Tipo de arquivo não suportado.', 'errNoArchive' : 'Arquivo inválido ou é de um tipo não suportado.', 'errCmdNoSupport' : 'Backend não suporta este comando.', 'errReplByChild' : 'A pasta “$1” não pode ser substituída por um item que contém.', 'errArcSymlinks' : 'Por razões de segurança, negada a permissão para descompactar arquivos que contenham links ou arquivos com nomes não permitidos.', // edited 24.06.2012 'errArcMaxSize' : 'Arquivo excede o tamanho máximo permitido.', 'errResize' : 'Incapaz de redimensionar "$1".', 'errResizeDegree' : 'Grau de rotação inválido.', // added 7.3.2013 'errResizeRotate' : 'Incapaz de rotacionar a imagem.', // added 7.3.2013 'errResizeSize' : 'Tamanho inválido de imagem.', // added 7.3.2013 'errResizeNoChange' : 'Tamanho da imagem não alterado.', // added 7.3.2013 'errUsupportType' : 'Tipo de arquivo não suportado.', 'errNotUTF8Content' : 'Arquivo "$1" não está em UTF-8 e não pode ser editado.', // added 9.11.2011 'errNetMount' : 'Incapaz de montar montagem "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'Protocolo não suportado.', // added 17.04.2012 'errNetMountFailed' : 'Montagem falhou.', // added 17.04.2012 'errNetMountHostReq' : 'Servidor requerido.', // added 18.04.2012 'errSessionExpires' : 'Sua sessão expirou por inatividade.', 'errCreatingTempDir' : 'Não foi possível criar um diretório temporário: "$1"', 'errFtpDownloadFile' : 'Não foi possível fazer o download do arquivo do FTP: "$1"', 'errFtpUploadFile' : 'Não foi possível fazer o upload do arquivo para o FTP: "$1"', 'errFtpMkdir' : 'Não foi possível criar um diretório remoto no FTP: "$1"', 'errArchiveExec' : 'Erro ao arquivar os arquivos: "$1"', 'errExtractExec' : 'Erro na extração dos arquivos: "$1"', 'errNetUnMount' : 'Incapaz de desmontar', // from v2.1 added 30.04.2012 'errConvUTF8' : 'Não conversivel para UTF-8', // from v2.1 added 08.04.2014 'errFolderUpload' : 'Tente utilizar o Google Chrome, se você deseja enviar uma pasta.', // from v2.1 added 26.6.2015 'errSearchTimeout' : 'Tempo limite atingido para a busca "$1". O resultado da pesquisa é parcial.', // from v2.1 added 12.1.2016 'errReauthRequire' : 'Re-autorização é necessária.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'O número máximo de itens selecionáveis ​​é $1.', // from v2.1.17 added 17.10.2016 'errRestore' : 'Não foi possível restaurar a partir do lixo. Não é possível identificar o destino da restauração.', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'Editor não encontrado para este tipo de arquivo.', // from v2.1.25 added 23.5.2017 'errServerError' : 'Ocorreu um erro no lado do servidor.', // from v2.1.25 added 16.6.2017 'errEmpty' : 'Não foi possível esvaziar a pasta "$1".', // from v2.1.25 added 22.6.2017 'moreErrors' : 'Existem mais $1 erros.', // from v2.1.44 added 9.12.2018 /******************************* commands names ********************************/ 'cmdarchive' : 'Criar arquivo', 'cmdback' : 'Voltar', 'cmdcopy' : 'Copiar', 'cmdcut' : 'Cortar', 'cmddownload' : 'Baixar', 'cmdduplicate' : 'Duplicar', 'cmdedit' : 'Editar arquivo', 'cmdextract' : 'Extrair arquivo de ficheiros', 'cmdforward' : 'Avançar', 'cmdgetfile' : 'Selecionar arquivos', 'cmdhelp' : 'Sobre este software', 'cmdhome' : 'Home', 'cmdinfo' : 'Propriedades', 'cmdmkdir' : 'Nova pasta', 'cmdmkdirin' : 'Em uma nova pasta', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'Novo arquivo', 'cmdopen' : 'Abrir', 'cmdpaste' : 'Colar', 'cmdquicklook' : 'Pré-vizualização', 'cmdreload' : 'Recarregar', 'cmdrename' : 'Renomear', 'cmdrm' : 'Deletar', 'cmdtrash' : 'Mover para a lixeira', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'Restaurar', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'Achar arquivos', 'cmdup' : 'Ir para o diretório pai', 'cmdupload' : 'Fazer upload de arquivo', 'cmdview' : 'Vizualizar', 'cmdresize' : 'Redimencionar & Rotacionar', 'cmdsort' : 'Ordenar', 'cmdnetmount' : 'Montar unidade de rede', // added 18.04.2012 'cmdnetunmount': 'Desmontar', // from v2.1 added 30.04.2012 'cmdplaces' : 'Para locais', // added 28.12.2014 'cmdchmod' : 'Alterar permissão', // from v2.1 added 20.6.2015 'cmdopendir' : 'Abrir pasta', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'Redefinir largura da coluna', // from v2.1.13 added 12.06.2016 'cmdfullscreen': 'Tela cheia', // from v2.1.15 added 03.08.2016 'cmdmove' : 'Mover', // from v2.1.15 added 21.08.2016 'cmdempty' : 'Esvaziar a pasta', // from v2.1.25 added 22.06.2017 'cmdundo' : 'Desfazer', // from v2.1.27 added 31.07.2017 'cmdredo' : 'Refazer', // from v2.1.27 added 31.07.2017 'cmdpreference': 'Preferências', // from v2.1.27 added 03.08.2017 'cmdselectall' : 'Selecionar tudo', // from v2.1.28 added 15.08.2017 'cmdselectnone': 'Selecionar nenhum', // from v2.1.28 added 15.08.2017 'cmdselectinvert': 'Inverter seleção', // from v2.1.28 added 15.08.2017 'cmdopennew' : 'Abrir em nova janela', // from v2.1.38 added 3.4.2018 'cmdhide' : 'Ocultar (preferência)', // from v2.1.41 added 24.7.2018 /*********************************** buttons ***********************************/ 'btnClose' : 'Fechar', 'btnSave' : 'Salvar', 'btnRm' : 'Remover', 'btnApply' : 'Aplicar', 'btnCancel' : 'Cancelar', 'btnNo' : 'Não', 'btnYes' : 'Sim', 'btnMount' : 'Montar', // added 18.04.2012 'btnApprove': 'Vá para $1 & aprove', // from v2.1 added 26.04.2012 'btnUnmount': 'Desmontar', // from v2.1 added 30.04.2012 'btnConv' : 'Converter', // from v2.1 added 08.04.2014 'btnCwd' : 'Aqui', // from v2.1 added 22.5.2015 'btnVolume' : 'Volume', // from v2.1 added 22.5.2015 'btnAll' : 'Todos', // from v2.1 added 22.5.2015 'btnMime' : 'Tipo MIME', // from v2.1 added 22.5.2015 'btnFileName':'Nome do arquivo', // from v2.1 added 22.5.2015 'btnSaveClose': 'Salvar & Fechar', // from v2.1 added 12.6.2015 'btnBackup' : 'Backup', // fromv2.1 added 28.11.2015 'btnRename' : 'Renomear', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'Renomear (tudo)', // from v2.1.24 added 6.4.2017 'btnPrevious' : 'Anterior ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : 'Próximo ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : 'Salvar como', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'Abrir pasta', 'ntffile' : 'Abrir arquivo', 'ntfreload' : 'Recarregar conteudo da pasta', 'ntfmkdir' : 'Criar diretório', 'ntfmkfile' : 'Criar arquivos', 'ntfrm' : 'Deletar arquivos', 'ntfcopy' : 'Copiar arquivos', 'ntfmove' : 'Mover arquivos', 'ntfprepare' : 'Preparando para copiar arquivos', 'ntfrename' : 'Renomear arquivos', 'ntfupload' : 'Subindo os arquivos', 'ntfdownload' : 'Baixando os arquivos', 'ntfsave' : 'Salvando os arquivos', 'ntfarchive' : 'Criando os arquivos', 'ntfextract' : 'Extraindo arquivos compactados', 'ntfsearch' : 'Procurando arquivos', 'ntfresize' : 'Redimensionando imagens', 'ntfsmth' : 'Fazendo alguma coisa', 'ntfloadimg' : 'Carregando Imagem', 'ntfnetmount' : 'Montando unidade de rede', // added 18.04.2012 'ntfnetunmount': 'Desmontando unidade de rede', // from v2.1 added 30.04.2012 'ntfdim' : 'Adquirindo dimensão da imagem', // added 20.05.2013 'ntfreaddir' : 'Lendo informações da pasta', // from v2.1 added 01.07.2013 'ntfurl' : 'Recebendo URL do link', // from v2.1 added 11.03.2014 'ntfchmod' : 'Alterando permissões do arquivo', // from v2.1 added 20.6.2015 'ntfpreupload': 'Verificando o nome do arquivo de upload', // from v2.1 added 31.11.2015 'ntfzipdl' : 'Criando um arquivo para download', // from v2.1.7 added 23.1.2016 'ntfparents' : 'Obtendo informações do caminho', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'Processando o arquivo carregado', // from v2.1.17 added 2.11.2016 'ntftrash' : 'Movendo para a lixeira', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'Restaurando da lixeira', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'Verificando a pasta de destino', // from v2.1.24 added 3.5.2017 'ntfundo' : 'Desfazendo a operação anterior', // from v2.1.27 added 31.07.2017 'ntfredo' : 'Refazendo o desfazer anterior', // from v2.1.27 added 31.07.2017 'ntfchkcontent' : 'Verificando conteúdos', // from v2.1.41 added 3.8.2018 /*********************************** volumes *********************************/ 'volume_Trash' : 'Lixo', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : 'Desconhecido', 'Today' : 'Hoje', 'Yesterday' : 'Ontem', 'msJan' : 'Jan', 'msFeb' : 'Fev', 'msMar' : 'Mar', 'msApr' : 'Abr', 'msMay' : 'Mai', 'msJun' : 'Jun', 'msJul' : 'Jul', 'msAug' : 'Ago', 'msSep' : 'Set', 'msOct' : 'Out', 'msNov' : 'Nov', 'msDec' : 'Dez', 'January' : 'Janeiro', 'February' : 'Fevereiro', 'March' : 'Março', 'April' : 'Abril', 'May' : 'Maio', 'June' : 'Junho', 'July' : 'Julho', 'August' : 'Agosto', 'September' : 'Setembro', 'October' : 'Outubro', 'November' : 'Novembro', 'December' : 'Dezembro', 'Sunday' : 'Domingo', 'Monday' : 'Segunda-feira', 'Tuesday' : 'Terça-feira', 'Wednesday' : 'Quarta-feira', 'Thursday' : 'Quinta-feira', 'Friday' : 'Sexta-feira', 'Saturday' : 'Sábado', 'Sun' : 'Dom', 'Mon' : 'Seg', 'Tue' : 'Ter', 'Wed' : 'Qua', 'Thu' : 'Qui', 'Fri' : 'Sex', 'Sat' : 'Sáb', /******************************** sort variants ********************************/ 'sortname' : 'por nome', 'sortkind' : 'por tipo', 'sortsize' : 'por tam.', 'sortdate' : 'por data', 'sortFoldersFirst' : 'Pastas primeiro', 'sortperm' : 'Com permissão', // from v2.1.13 added 13.06.2016 'sortmode' : 'Por modo', // from v2.1.13 added 13.06.2016 'sortowner' : 'Por proprietário', // from v2.1.13 added 13.06.2016 'sortgroup' : 'Por grupo', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'Vizualizar em árvore', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : 'NovoArquivo.txt', // added 10.11.2015 'untitled folder' : 'NovaPasta', // added 10.11.2015 'Archive' : 'NovoArquivo', // from v2.1 added 10.11.2015 'untitled file' : 'NovoArquivo.$1', // from v2.1.41 added 6.8.2018 'extentionfile' : '$1: Arquivo', // from v2.1.41 added 6.8.2018 'extentiontype' : '$1: $2', // from v2.1.43 added 17.10.2018 /********************************** messages **********************************/ 'confirmReq' : 'Confirmação requerida', 'confirmRm' : 'Você tem certeza que deseja remover os arquivos?
                Isto não pode ser desfeito!', 'confirmRepl' : 'Substituir arquivo velho com este novo?', 'confirmRest' : 'Substituir o item existente pelo item na lixeira?', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'Não está em UTF-8
                Converter para UTF-8?
                Conteúdo se torna UTF-8 após salvar as conversões.', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'Não foi possível detectar a codificação de caracteres deste arquivo. Ele precisa ser convertido temporariamente em UTF-8 para edição. Por favor, selecione a codificação de caracteres deste arquivo.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : 'Isto foi modificado.
                Você vai perder seu trabalho caso não salve as mudanças.', // from v2.1 added 15.7.2015 'confirmTrash' : 'Tem certeza de que deseja mover itens para a lixeira?', //from v2.1.24 added 29.4.2017 'confirmMove' : 'Tem certeza de que deseja mover itens para "$1"?', //from v2.1.50 added 27.7.2019 'apllyAll' : 'Aplicar a todos', 'name' : 'Nome', 'size' : 'Tamanho', 'perms' : 'Permissões', 'modify' : 'Modificado', 'kind' : 'Tipo', 'read' : 'Ler', 'write' : 'Escrever', 'noaccess' : 'Inacessível', 'and' : 'e', 'unknown' : 'Desconhecido', 'selectall' : 'Selecionar todos arquivos', 'selectfiles' : 'Selecionar arquivo(s)', 'selectffile' : 'Selecionar primeiro arquivo', 'selectlfile' : 'Slecionar último arquivo', 'viewlist' : 'Exibir como lista', 'viewicons' : 'Exibir como ícones', 'viewSmall' : 'Ícones pequenos', // from v2.1.39 added 22.5.2018 'viewMedium' : 'Ícones médios', // from v2.1.39 added 22.5.2018 'viewLarge' : 'Ícones grandes', // from v2.1.39 added 22.5.2018 'viewExtraLarge' : 'Ícones gigantes', // from v2.1.39 added 22.5.2018 'places' : 'Lugares', 'calc' : 'Calcular', 'path' : 'Caminho', 'aliasfor' : 'Alias para', 'locked' : 'Bloqueado', 'dim' : 'Dimesões', 'files' : 'Arquivos', 'folders' : 'Pastas', 'items' : 'Itens', 'yes' : 'sim', 'no' : 'não', 'link' : 'Link', 'searcresult' : 'Resultados da pesquisa', 'selected' : 'itens selecionados', 'about' : 'Sobre', 'shortcuts' : 'Atalhos', 'help' : 'Ajuda', 'webfm' : 'Gerenciador de arquivos web', 'ver' : 'Versão', 'protocolver' : 'Versão do protocolo', 'homepage' : 'Home do projeto', 'docs' : 'Documentação', 'github' : 'Fork us on Github', 'twitter' : 'Siga-nos no twitter', 'facebook' : 'Junte-se a nós no Facebook', 'team' : 'Time', 'chiefdev' : 'Desenvolvedor chefe', 'developer' : 'Desenvolvedor', 'contributor' : 'Contribuinte', 'maintainer' : 'Mantenedor', 'translator' : 'Tradutor', 'icons' : 'Ícones', 'dontforget' : 'e não se esqueça de levar a sua toalha', 'shortcutsof' : 'Atalhos desabilitados', 'dropFiles' : 'Solte os arquivos aqui', 'or' : 'ou', 'selectForUpload' : 'Selecione arquivos para upload', 'moveFiles' : 'Mover arquivos', 'copyFiles' : 'Copiar arquivos', 'restoreFiles' : 'Restaurar itens', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'Remover de Lugares', 'aspectRatio' : 'Manter aspecto', 'scale' : 'Tamanho', 'width' : 'Largura', 'height' : 'Altura', 'resize' : 'Redimencionar', 'crop' : 'Cortar', 'rotate' : 'Rotacionar', 'rotate-cw' : 'Girar 90 graus CW', 'rotate-ccw' : 'Girar 90 graus CCW', 'degree' : '°', 'netMountDialogTitle' : 'Montar Unidade de rede', // added 18.04.2012 'protocol' : 'Protocolo', // added 18.04.2012 'host' : 'Servidor', // added 18.04.2012 'port' : 'Porta', // added 18.04.2012 'user' : 'Usuário', // added 18.04.2012 'pass' : 'Senha', // added 18.04.2012 'confirmUnmount' : 'Deseja desmontar $1?', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'Soltar ou colar arquivos do navegador', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'Solte ou cole arquivos aqui', // from v2.1 added 07.04.2014 'encoding' : 'Codificação', // from v2.1 added 19.12.2014 'locale' : 'Local', // from v2.1 added 19.12.2014 'searchTarget' : 'Alvo: $1', // from v2.1 added 22.5.2015 'searchMime' : 'Perquisar por input MIME Type', // from v2.1 added 22.5.2015 'owner' : 'Dono', // from v2.1 added 20.6.2015 'group' : 'Grupo', // from v2.1 added 20.6.2015 'other' : 'Outro', // from v2.1 added 20.6.2015 'execute' : 'Executar', // from v2.1 added 20.6.2015 'perm' : 'Permissão', // from v2.1 added 20.6.2015 'mode' : 'Modo', // from v2.1 added 20.6.2015 'emptyFolder' : 'Pasta vazia', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'Pasta vazia\\A Arraste itens para os adicionar', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'Pasta vazia\\A De um toque longo para adicionar itens', // from v2.1.6 added 30.12.2015 'quality' : 'Qualidade', // from v2.1.6 added 5.1.2016 'autoSync' : 'Auto sincronização', // from v2.1.6 added 10.1.2016 'moveUp' : 'Mover para cima', // from v2.1.6 added 18.1.2016 'getLink' : 'Obter link', // from v2.1.7 added 9.2.2016 'selectedItems' : 'Itens selecionados ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'ID da pasta', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'Permitir acesso offline', // from v2.1.10 added 3.25.2016 'reAuth' : 'Se autenticar novamente', // from v2.1.10 added 3.25.2016 'nowLoading' : 'Carregando...', // from v2.1.12 added 4.26.2016 'openMulti' : 'Abrir múltiplos arquivos', // from v2.1.12 added 5.14.2016 'openMultiConfirm': 'Você está tentando abrir os arquivos $1. Tem certeza de que deseja abrir no navegador?', // from v2.1.12 added 5.14.2016 'emptySearch' : 'Os resultados da pesquisa estão vazios no destino da pesquisa.', // from v2.1.12 added 5.16.2016 'editingFile' : 'Arquivo sendo editado.', // from v2.1.13 added 6.3.2016 'hasSelected' : 'Voce selecionou $1 itens.', // from v2.1.13 added 6.3.2016 'hasClipboard' : 'Você tem $1 itens na área de transferência.', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'A pesquisa incremental é apenas da visualização atual.', // from v2.1.13 added 6.30.2016 'reinstate' : 'Restabelecer', // from v2.1.15 added 3.8.2016 'complete' : '$1 completo', // from v2.1.15 added 21.8.2016 'contextmenu' : 'Menu contextual', // from v2.1.15 added 9.9.2016 'pageTurning' : 'Virar página', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'Raízes de volume', // from v2.1.16 added 16.9.2016 'reset' : 'Resetar', // from v2.1.16 added 1.10.2016 'bgcolor' : 'Cor de fundo', // from v2.1.16 added 1.10.2016 'colorPicker' : 'Seletor de cores', // from v2.1.16 added 1.10.2016 '8pxgrid' : 'Grade 8px', // from v2.1.16 added 4.10.2016 'enabled' : 'Ativado', // from v2.1.16 added 4.10.2016 'disabled' : 'Desativado', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'Os resultados da pesquisa estão vazios na exibição atual.\\APressione [Enter] para expandir o alvo da pesquisa.', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'Os resultados da pesquisa da primeira letra estão vazios na exibição atual.', // from v2.1.23 added 24.3.2017 'textLabel' : 'Texto do rótulo', // from v2.1.17 added 13.10.2016 'minsLeft' : '$1 minutos restantes', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'Reabrir com a codificação selecionada', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'Salvar com a codificação selecionada', // from v2.1.19 added 2.12.2016 'selectFolder' : 'Selecione a pasta', // from v2.1.20 added 13.12.2016 'firstLetterSearch': 'Buscar primeira letra', // from v2.1.23 added 24.3.2017 'presets' : 'Predefinições', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : 'São muitos itens, portanto não podem ser jogados no lixo.', // from v2.1.25 added 9.6.2017 'TextArea' : 'TextArea', // from v2.1.25 added 14.6.2017 'folderToEmpty' : 'Esvaziar a pasta "$1".', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : 'Não há itens em uma pasta "$1".', // from v2.1.25 added 22.6.2017 'preference' : 'Preferência', // from v2.1.26 added 28.6.2017 'language' : 'Língua', // from v2.1.26 added 28.6.2017 'clearBrowserData': 'Inicialize as configurações salvas neste navegador', // from v2.1.26 added 28.6.2017 'toolbarPref' : 'Barra de ferramentas', // from v2.1.27 added 2.8.2017 'charsLeft' : '... $1 caracteres restantes.', // from v2.1.29 added 30.8.2017 'sum' : 'Somar', // from v2.1.29 added 28.9.2017 'roughFileSize' : 'Tamanho aproximado do arquivo', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : 'Focar no elemento do diálogo com o mouse por cima', // from v2.1.30 added 2.11.2017 'select' : 'Selecione', // from v2.1.30 added 23.11.2017 'selectAction' : 'Ação ao selecionar arquivo', // from v2.1.30 added 23.11.2017 'useStoredEditor' : 'Abrir com o editor usado pela última vez', // from v2.1.30 added 23.11.2017 'selectinvert' : 'Inverter seleção', // from v2.1.30 added 25.11.2017 'renameMultiple' : 'Tem certeza de que deseja renomear $1 itens selecionados como $2?
                Isto não poderá ser desfeito!', // from v2.1.31 added 4.12.2017 'batchRename' : 'Renomear Batch', // from v2.1.31 added 8.12.2017 'plusNumber' : '+ Número', // from v2.1.31 added 8.12.2017 'asPrefix' : 'Adicionar prefixo', // from v2.1.31 added 8.12.2017 'asSuffix' : 'Adicionar sufixo', // from v2.1.31 added 8.12.2017 'changeExtention' : 'Alterar extensão', // from v2.1.31 added 8.12.2017 'columnPref' : 'Configurações de colunas (exibição em lista)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : 'Todas as alterações serão refletidas imediatamente no arquivo.', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : 'Quaisquer alterações não serão refletidas até desmontar este volume.', // from v2.1.33 added 2.3.2018 'unmountChildren' : 'O(s) seguinte(s) volume(s) montado neste volume também desmontado. Você tem certeza que quer desmontá-lo(s)?', // from v2.1.33 added 5.3.2018 'selectionInfo' : 'Informações da seleção', // from v2.1.33 added 7.3.2018 'hashChecker' : 'Algoritmos para mostrar o hash do arquivo', // from v2.1.33 added 10.3.2018 'infoItems' : 'Itens de informação (painel Informações de seleção)', // from v2.1.38 added 28.3.2018 'pressAgainToExit': 'Pressione novamente para sair.', // from v2.1.38 added 1.4.2018 'toolbar' : 'Barra de ferramentas', // from v2.1.38 added 4.4.2018 'workspace' : 'Área de trabalho', // from v2.1.38 added 4.4.2018 'dialog' : 'Diálogo', // from v2.1.38 added 4.4.2018 'all' : 'Tudo', // from v2.1.38 added 4.4.2018 'iconSize' : 'Tamanho do ícone (Visualização de ícones)', // from v2.1.39 added 7.5.2018 'editorMaximized' : 'Abra a janela maximizada do editor', // from v2.1.40 added 30.6.2018 'editorConvNoApi' : 'Como a conversão por API não está disponível no momento, faça a conversão no site.', //from v2.1.40 added 8.7.2018 'editorConvNeedUpload' : 'Após a conversão, você deve fazer o upload com o URL do item ou um arquivo baixado para salvar o arquivo convertido.', //from v2.1.40 added 8.7.2018 'convertOn' : 'Converter no site $1', // from v2.1.40 added 10.7.2018 'integrations' : 'Integrações', // from v2.1.40 added 11.7.2018 'integrationWith' : 'Este elFinder possui os seguintes serviços externos integrados. Por favor, verifique os termos de uso, política de privacidade, etc. antes de usá-lo.', // from v2.1.40 added 11.7.2018 'showHidden' : 'Mostrar itens ocultos', // from v2.1.41 added 24.7.2018 'hideHidden' : 'Ocultar itens ocultos', // from v2.1.41 added 24.7.2018 'toggleHidden' : 'Mostrar/Ocultar itens ocultos', // from v2.1.41 added 24.7.2018 'makefileTypes' : 'Tipos de arquivo para ativar com "Novo arquivo"', // from v2.1.41 added 7.8.2018 'typeOfTextfile' : 'Tipo do arquivo de texto', // from v2.1.41 added 7.8.2018 'add' : 'Adicionar', // from v2.1.41 added 7.8.2018 'theme' : 'Tema', // from v2.1.43 added 19.10.2018 'default' : 'Padrão', // from v2.1.43 added 19.10.2018 'description' : 'Descrição', // from v2.1.43 added 19.10.2018 'website' : 'Site da internet', // from v2.1.43 added 19.10.2018 'author' : 'Autor', // from v2.1.43 added 19.10.2018 'email' : 'Email', // from v2.1.43 added 19.10.2018 'license' : 'Licença', // from v2.1.43 added 19.10.2018 'exportToSave' : 'Este item não pode ser salvo. Para evitar perder as edições, você precisa exportar para o seu PC.', // from v2.1.44 added 1.12.2018 'dblclickToSelect': 'Clique duas vezes no arquivo para selecioná-lo.', // from v2.1.47 added 22.1.2019 'useFullscreen' : 'Usar o modo de tela cheia', // from v2.1.47 added 19.2.2019 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Desconhecio', 'kindRoot' : 'Raiz do volume', // from v2.1.16 added 16.10.2016 'kindFolder' : 'Pasta', 'kindSelects' : 'Seleções', // from v2.1.29 added 29.8.2017 'kindAlias' : 'Alias', 'kindAliasBroken' : 'Alias inválido', // applications 'kindApp' : 'Aplicação', 'kindPostscript' : 'Documento Postscript', 'kindMsOffice' : 'Documento Microsoft Office', 'kindMsWord' : 'Documento Microsoft Word', 'kindMsExcel' : 'Documento Microsoft Excel', 'kindMsPP' : 'Apresentação Microsoft Powerpoint', 'kindOO' : 'Documento Open Office', 'kindAppFlash' : 'Aplicação Flash', 'kindPDF' : 'Formato de Documento Portátil (PDF)', 'kindTorrent' : 'Arquivo Bittorrent', 'kind7z' : 'Arquivo 7z', 'kindTAR' : 'Arquivo TAR', 'kindGZIP' : 'Arquivo GZIP', 'kindBZIP' : 'Arquivo BZIP', 'kindXZ' : 'Arquivo XZ', 'kindZIP' : 'Arquivo ZIP', 'kindRAR' : 'Arquivo RAR', 'kindJAR' : 'Arquivo JAR', 'kindTTF' : 'Tipo verdadeiro da fonte', 'kindOTF' : 'Abrir tipo de fonte', 'kindRPM' : 'Pacote RPM', // texts 'kindText' : 'Arquivo de texto', 'kindTextPlain' : 'Texto simples', 'kindPHP' : 'PHP', 'kindCSS' : 'CSS', 'kindHTML' : 'Documento HTML', 'kindJS' : 'Javascript', 'kindRTF' : 'Formato Rich Text', 'kindC' : 'C', 'kindCHeader' : 'C cabeçalho', 'kindCPP' : 'C++', 'kindCPPHeader' : 'C++ cabeçalho', 'kindShell' : 'Unix shell script', 'kindPython' : 'Python', 'kindJava' : 'Java', 'kindRuby' : 'Ruby', 'kindPerl' : 'Perl', 'kindSQL' : 'SQL', 'kindXML' : 'Documento XML', 'kindAWK' : 'AWK', 'kindCSV' : 'Valores separados por vírgula', 'kindDOCBOOK' : 'Documento Docbook XML', 'kindMarkdown' : 'Texto Markdown', // added 20.7.2015 // images 'kindImage' : 'Imagem', 'kindBMP' : 'Imagem BMP', 'kindJPEG' : 'Imagem JPEG', 'kindGIF' : 'Imagem GIF', 'kindPNG' : 'Imagem PNG', 'kindTIFF' : 'Imagem TIFF', 'kindTGA' : 'Imagem TGA', 'kindPSD' : 'Imagem Adobe Photoshop', 'kindXBITMAP' : 'Imagem X bitmap', 'kindPXM' : 'Imagem Pixelmator', // media 'kindAudio' : 'Arquivo de audio', 'kindAudioMPEG' : 'Audio MPEG', 'kindAudioMPEG4' : 'Audio MPEG-4', 'kindAudioMIDI' : 'Audio MIDI', 'kindAudioOGG' : 'Audio Ogg Vorbis', 'kindAudioWAV' : 'Audio WAV', 'AudioPlaylist' : 'Lista de reprodução MP3 ', 'kindVideo' : 'Arquivo de video', 'kindVideoDV' : 'DV filme', 'kindVideoMPEG' : 'Video MPEG', 'kindVideoMPEG4' : 'Video MPEG-4', 'kindVideoAVI' : 'Video AVI', 'kindVideoMOV' : 'Filme rápido', 'kindVideoWM' : 'Video Windows Media', 'kindVideoFlash' : 'Video Flash', 'kindVideoMKV' : 'MKV', 'kindVideoOGG' : 'Video Ogg' } }; })); plugins/file-manager-advanced/application/library/js/i18n/elfinder.ro.js000064400000047423147176754550022265 0ustar00/** * Română translation * @author Cristian Tabacitu * @version 2015-11-13 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.ro = { translator : 'Cristian Tabacitu <hello@tabacitu.ro>', language : 'Română', direction : 'ltr', dateFormat : 'd M Y h:i', // Mar 13, 2012 05:27 PM fancyDateFormat : '$1 h:i A', // will produce smth like: Today 12:25 PM messages : { /********************************** errors **********************************/ 'error' : 'Eroare', 'errUnknown' : 'Eroare necunoscută.', 'errUnknownCmd' : 'Comandă necunoscuta.', 'errJqui' : 'Configurație jQuery UI necunoscută. Componentele selectable, draggable și droppable trebuie să fie incluse.', 'errNode' : 'elFinder necesită ca DOM Element să fie creat.', 'errURL' : 'Configurație elFinder nevalidă! URL option nu este setat.', 'errAccess' : 'Acces interzis.', 'errConnect' : 'Nu ne-am putut conecta la backend.', 'errAbort' : 'Conexiunea a fost oprită.', 'errTimeout' : 'Conexiunea a fost întreruptă.', 'errNotFound' : 'Nu am gasit backend-ul.', 'errResponse' : 'Răspuns backend greșit.', 'errConf' : 'Configurație backend greșită.', 'errJSON' : 'Modulul PHP JSON nu este instalat.', 'errNoVolumes' : 'Volumele citibile nu sunt disponibile.', 'errCmdParams' : 'Parametri greșiți pentru comanda "$1".', 'errDataNotJSON' : 'Datele nu sunt în format JSON.', 'errDataEmpty' : 'Datele sunt goale.', 'errCmdReq' : 'Cererea către backend necesită un nume de comandă.', 'errOpen' : 'Nu am putut deschide "$1".', 'errNotFolder' : 'Obiectul nu este un dosar.', 'errNotFile' : 'Obiectul nu este un fișier.', 'errRead' : 'Nu am putut citi "$1".', 'errWrite' : 'Nu am putu scrie în "$1".', 'errPerm' : 'Nu ai permisiunea necesară.', 'errLocked' : '"$1" este blocat și nu poate fi redenumit, mutat sau șters.', 'errExists' : 'Un fișier cu numele "$1" există deja.', 'errInvName' : 'Numele pentru fișier este greșit.', 'errFolderNotFound' : 'Nu am găsit dosarul.', 'errFileNotFound' : 'Nu am găsit fișierul.', 'errTrgFolderNotFound' : 'Nu am găsit dosarul pentru destinație "$1".', 'errPopup' : 'Browserul tău a prevenit deschiderea ferestrei popup. Pentru a deschide fișierul permite deschidere ferestrei.', 'errMkdir' : 'Nu am putut crea dosarul "$1".', 'errMkfile' : 'Nu am putut crea fișierul "$1".', 'errRename' : 'Nu am putut redenumi "$1".', 'errCopyFrom' : 'Copierea fișierelor de pe volumul "$1" este interzisă.', 'errCopyTo' : 'Copierea fișierelor către volumul "$1" este interzisă.', 'errMkOutLink' : 'Nu am putut crea linkul în afara volumului rădăcină.', // from v2.1 added 03.10.2015 'errUpload' : 'Eroare de upload.', // old name - errUploadCommon 'errUploadFile' : 'Nu am putut urca "$1".', // old name - errUpload 'errUploadNoFiles' : 'Nu am găsit fișiere pentru a le urca.', 'errUploadTotalSize' : 'Datele depâșest limita maximă de mărime.', // old name - errMaxSize 'errUploadFileSize' : 'Fișierul este prea mare.', // old name - errFileMaxSize 'errUploadMime' : 'Acest tip de fișier nu este permis.', 'errUploadTransfer' : 'Eroare la transferarea "$1".', 'errUploadTemp' : 'Nu am putut crea fișierul temporar pentru upload.', // from v2.1 added 26.09.2015 'errNotReplace' : 'Obiectul "$1" există deja în acest loc și nu poate fi înlocuit de un obiect de alt tip.', // new 'errReplace' : 'Nu am putut înlocui "$1".', 'errSave' : 'Nu am putut salva "$1".', 'errCopy' : 'Nu am putut copia "$1".', 'errMove' : 'Nu am putut muta "$1".', 'errCopyInItself' : 'Nu am putut copia "$1" în el însuși.', 'errRm' : 'Nu am putut șterge "$1".', 'errRmSrc' : 'Nu am putut șterge fișierul sursă.', 'errExtract' : 'Nu am putut extrage fișierele din "$1".', 'errArchive' : 'Nu am putut crea arhiva.', 'errArcType' : 'Arhiva este de un tip nesuportat.', 'errNoArchive' : 'Fișierul nu este o arhiva sau este o arhivă de un tip necunoscut.', 'errCmdNoSupport' : 'Backend-ul nu suportă această comandă.', 'errReplByChild' : 'Dosarul “$1” nu poate fi înlocuit de un element pe care el îl conține.', 'errArcSymlinks' : 'Din motive de securitate, arhiva nu are voie să conțină symlinks sau fișiere cu nume interzise.', // edited 24.06.2012 'errArcMaxSize' : 'Fișierul arhivei depășește mărimea maximă permisă.', 'errResize' : 'Nu am putut redimensiona "$1".', 'errResizeDegree' : 'Grad de rotație nevalid.', // added 7.3.2013 'errResizeRotate' : 'Imaginea nu a fost rotită.', // added 7.3.2013 'errResizeSize' : 'Mărimea imaginii este nevalidă.', // added 7.3.2013 'errResizeNoChange' : 'Mărimea imaginii nu a fost schimbată.', // added 7.3.2013 'errUsupportType' : 'Tipul acesta de fișier nu este suportat.', 'errNotUTF8Content' : 'Fișierul "$1" nu folosește UTF-8 și nu poate fi editat.', // added 9.11.2011 'errNetMount' : 'Nu am putut încărca "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'Protocol nesuportat.', // added 17.04.2012 'errNetMountFailed' : 'Încărcare eșuată.', // added 17.04.2012 'errNetMountHostReq' : 'Gazda este necesară.', // added 18.04.2012 'errSessionExpires' : 'Sesiunea a expirat datorită lipsei de activitate.', 'errCreatingTempDir' : 'Nu am putut crea fișierul temporar: "$1"', 'errFtpDownloadFile' : 'Nu am putut descarca fișierul de pe FTP: "$1"', 'errFtpUploadFile' : 'Nu am putut încărca fișierul pe FTP: "$1"', 'errFtpMkdir' : 'Nu am putut crea acest dosar pe FTP: "$1"', 'errArchiveExec' : 'Eroare la arhivarea fișierelor: "$1"', 'errExtractExec' : 'Eroare la dezarhivarea fișierelor: "$1"', 'errNetUnMount' : 'Nu am putut elimina volumul', // from v2.1 added 30.04.2012 'errConvUTF8' : 'Nu poate fi convertit la UTF-8', // from v2.1 added 08.04.2014 'errFolderUpload' : 'Pentru a urca dosare încearcă Google Chrome.', // from v2.1 added 26.6.2015 /******************************* commands names ********************************/ 'cmdarchive' : 'Creeaza arhivă', 'cmdback' : 'Înapoi', 'cmdcopy' : 'Copiază', 'cmdcut' : 'Taie', 'cmddownload' : 'Descarcă', 'cmdduplicate' : 'Creează duplicat', 'cmdedit' : 'Modifică fișier', 'cmdextract' : 'Extrage fișierele din arhivă', 'cmdforward' : 'Înainte', 'cmdgetfile' : 'Alege fișiere', 'cmdhelp' : 'Despre acest software', 'cmdhome' : 'Acasă', 'cmdinfo' : 'Informații', 'cmdmkdir' : 'Dosar nou', 'cmdmkfile' : 'Fișier nou', 'cmdopen' : 'Deschide', 'cmdpaste' : 'Lipește', 'cmdquicklook' : 'Previzualizează', 'cmdreload' : 'Reîncarcă', 'cmdrename' : 'Redenumește', 'cmdrm' : 'Șterge', 'cmdsearch' : 'Găsește fișiere', 'cmdup' : 'Mergi la dosarul părinte', 'cmdupload' : 'Urcă fișiere', 'cmdview' : 'Vezi', 'cmdresize' : 'Redimensionează & rotește', 'cmdsort' : 'Sortează', 'cmdnetmount' : 'Încarcă volum din rețea', // added 18.04.2012 'cmdnetunmount': 'Elimină volum', // from v2.1 added 30.04.2012 'cmdplaces' : 'La Locuri', // added 28.12.2014 'cmdchmod' : 'Schimbă mod', // from v2.1 added 20.6.2015 /*********************************** buttons ***********************************/ 'btnClose' : 'Închide', 'btnSave' : 'Salvează', 'btnRm' : 'Șterge', 'btnApply' : 'Aplică', 'btnCancel' : 'Anulează', 'btnNo' : 'Nu', 'btnYes' : 'Da', 'btnMount' : 'Încarcă', // added 18.04.2012 'btnApprove': 'Mergi la $1 și aprobă', // from v2.1 added 26.04.2012 'btnUnmount': 'Elimină volum', // from v2.1 added 30.04.2012 'btnConv' : 'Convertește', // from v2.1 added 08.04.2014 'btnCwd' : 'Aici', // from v2.1 added 22.5.2015 'btnVolume' : 'Volum', // from v2.1 added 22.5.2015 'btnAll' : 'Toate', // from v2.1 added 22.5.2015 'btnMime' : 'Tipuri MIME', // from v2.1 added 22.5.2015 'btnFileName':'Nume fișier', // from v2.1 added 22.5.2015 'btnSaveClose': 'Salvează și închide', // from v2.1 added 12.6.2015 /******************************** notifications ********************************/ 'ntfopen' : 'Deschide dosar', 'ntffile' : 'Deschide fișier', 'ntfreload' : 'Actualizează conținutul dosarului', 'ntfmkdir' : 'Se creează dosarul', 'ntfmkfile' : 'Se creează fișierele', 'ntfrm' : 'Șterge fișiere', 'ntfcopy' : 'Copiază fișiere', 'ntfmove' : 'Mută fișiere', 'ntfprepare' : 'Pregătește copierea fișierelor', 'ntfrename' : 'Redenumește fișiere', 'ntfupload' : 'Se urcă fișierele', 'ntfdownload' : 'Se descarcă fișierele', 'ntfsave' : 'Salvează fișiere', 'ntfarchive' : 'Se creează arhiva', 'ntfextract' : 'Se extrag fișierele din arhivă', 'ntfsearch' : 'Se caută fișierele', 'ntfresize' : 'Se redimnesionează imaginile', 'ntfsmth' : 'Se întamplă ceva', 'ntfloadimg' : 'Se încarcă imaginea', 'ntfnetmount' : 'Se încarcă volumul din rețea', // added 18.04.2012 'ntfnetunmount': 'Se elimină volumul din rețea', // from v2.1 added 30.04.2012 'ntfdim' : 'Se preiau dimensiunile imaginii', // added 20.05.2013 'ntfreaddir' : 'Se citesc informațiile dosarului', // from v2.1 added 01.07.2013 'ntfurl' : 'Se preia URL-ul din link', // from v2.1 added 11.03.2014 'ntfchmod' : 'Se schimba modul de fișier', // from v2.1 added 20.6.2015 /************************************ dates **********************************/ 'dateUnknown' : 'necunoscută', 'Today' : 'Astăzi', 'Yesterday' : 'Ieri', 'msJan' : 'Ian', 'msFeb' : 'Feb', 'msMar' : 'Mar', 'msApr' : 'Apr', 'msMay' : 'Mai', 'msJun' : 'Iun', 'msJul' : 'Iul', 'msAug' : 'Aug', 'msSep' : 'Sep', 'msOct' : 'Oct', 'msNov' : 'Nov', 'msDec' : 'Dec', 'January' : 'Ianuarie', 'February' : 'Februarie', 'March' : 'Martie', 'April' : 'Aprilie', 'May' : 'Mai', 'June' : 'Iunie', 'July' : 'Iulie', 'August' : 'August', 'September' : 'Septembrie', 'October' : 'Octombrie', 'November' : 'Noiembrie', 'December' : 'Decembrie', 'Sunday' : 'Duminică', 'Monday' : 'Luni', 'Tuesday' : 'Marți', 'Wednesday' : 'Miercuri', 'Thursday' : 'Joi', 'Friday' : 'Vineri', 'Saturday' : 'Sâmbătă', 'Sun' : 'Du', 'Mon' : 'Lu', 'Tue' : 'Ma', 'Wed' : 'Mi', 'Thu' : 'Jo', 'Fri' : 'Vi', 'Sat' : 'Sâ', /******************************** sort variants ********************************/ 'sortname' : 'după nume', 'sortkind' : 'după tip', 'sortsize' : 'după mărime', 'sortdate' : 'după dată', 'sortFoldersFirst' : 'Dosarele primele', /********************************** new items **********************************/ 'untitled file.txt' : 'FisierNou.txt', // added 10.11.2015 'untitled folder' : 'DosarNou', // added 10.11.2015 'Archive' : 'ArhivaNoua', // from v2.1 added 10.11.2015 /********************************** messages **********************************/ 'confirmReq' : 'Este necesară confirmare', 'confirmRm' : 'Ești sigur că vrei să ștergi fișierele?
                Acțiunea este ireversibilă!', 'confirmRepl' : 'Înlocuiește fișierul vechi cu cel nou?', 'confirmConvUTF8' : 'Nu este în UTF-8
                Convertim la UTF-8?
                Conținutul devine UTF-8 după salvarea conversiei.', // from v2.1 added 08.04.2014 'confirmNotSave' : 'Au avut loc modificări.
                Dacă nu salvezi se vor pierde modificările.', // from v2.1 added 15.7.2015 'apllyAll' : 'Aplică pentru toate', 'name' : 'Nume', 'size' : 'Mărime', 'perms' : 'Permisiuni', 'modify' : 'Modificat la', 'kind' : 'Tip', 'read' : 'citire', 'write' : 'scriere', 'noaccess' : 'acces interzis', 'and' : 'și', 'unknown' : 'necunoscut', 'selectall' : 'Alege toate fișierele', 'selectfiles' : 'Alege fișier(e)', 'selectffile' : 'Alege primul fișier', 'selectlfile' : 'Alege ultimul fișier', 'viewlist' : 'Vezi ca listă', 'viewicons' : 'Vezi ca icoane', 'places' : 'Locuri', 'calc' : 'Calculează', 'path' : 'Cale', 'aliasfor' : 'Alias pentru', 'locked' : 'Securizat', 'dim' : 'Dimensiuni', 'files' : 'Fișiere', 'folders' : 'Dosare', 'items' : 'Elemente', 'yes' : 'da', 'no' : 'nu', 'link' : 'Link', 'searcresult' : 'Rezultatele căutării', 'selected' : 'elemente alese', 'about' : 'Despre', 'shortcuts' : 'Scurtături', 'help' : 'Ajutor', 'webfm' : 'Manager web pentru fișiere', 'ver' : 'Versiune', 'protocolver' : 'versiune protocol', 'homepage' : 'Pagina proiectului', 'docs' : 'Documentație', 'github' : 'Fork nou pe Github', 'twitter' : 'Urmărește-ne pe twitter', 'facebook' : 'Alătura-te pe facebook', 'team' : 'Echipa', 'chiefdev' : 'chief developer', 'developer' : 'developer', 'contributor' : 'contributor', 'maintainer' : 'maintainer', 'translator' : 'translator', 'icons' : 'Icoane', 'dontforget' : 'și nu uita să-ți iei prosopul', 'shortcutsof' : 'Scurtăturile sunt dezactivate', 'dropFiles' : 'Dă drumul fișierelor aici', 'or' : 'sau', 'selectForUpload' : 'Alege fișiere pentru a le urca', 'moveFiles' : 'Mută fișiere', 'copyFiles' : 'Copiază fișiere', 'rmFromPlaces' : 'Șterge din locuri', 'aspectRatio' : 'Aspect ratio', 'scale' : 'Scală', 'width' : 'Lățime', 'height' : 'Înălțime', 'resize' : 'Redimensionează', 'crop' : 'Decupează', 'rotate' : 'Rotește', 'rotate-cw' : 'Rotește cu 90° în sensul ceasului', 'rotate-ccw' : 'Rotește cu 90° în sensul invers ceasului', 'degree' : '°', 'netMountDialogTitle' : 'Încarcă volum din rețea', // added 18.04.2012 'protocol' : 'Protocol', // added 18.04.2012 'host' : 'Gazdă', // added 18.04.2012 'port' : 'Port', // added 18.04.2012 'user' : 'Utilizator', // added 18.04.2012 'pass' : 'Parolă', // added 18.04.2012 'confirmUnmount' : 'Vrei să elimini volumul $1?', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'Drag&drop sau lipește din browser', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'Drag&drop sau lipește fișiere aici', // from v2.1 added 07.04.2014 'encoding' : 'Encodare', // from v2.1 added 19.12.2014 'locale' : 'Locale', // from v2.1 added 19.12.2014 'searchTarget' : 'Țintă: $1', // from v2.1 added 22.5.2015 'searchMime' : 'Caută după tipul MIME', // from v2.1 added 22.5.2015 'owner' : 'Owner', // from v2.1 added 20.6.2015 'group' : 'Group', // from v2.1 added 20.6.2015 'other' : 'Other', // from v2.1 added 20.6.2015 'execute' : 'Execute', // from v2.1 added 20.6.2015 'perm' : 'Permission', // from v2.1 added 20.6.2015 'mode' : 'Mod', // from v2.1 added 20.6.2015 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Necunoscut', 'kindFolder' : 'Dosar', 'kindAlias' : 'Alias', 'kindAliasBroken' : 'Alias stricat', // applications 'kindApp' : 'Aplicație', 'kindPostscript' : 'Document Postscript', 'kindMsOffice' : 'Document Microsoft Office', 'kindMsWord' : 'Document Microsoft Word', 'kindMsExcel' : 'Document Microsoft Excel', 'kindMsPP' : 'Prezentare Microsoft Powerpoint', 'kindOO' : 'Document Open Office', 'kindAppFlash' : 'Aplicație Flash', 'kindPDF' : 'Document Portabil (PDF)', 'kindTorrent' : 'Fișier Bittorrent', 'kind7z' : 'Arhivă 7z', 'kindTAR' : 'Arhivă TAR', 'kindGZIP' : 'Arhivă GZIP', 'kindBZIP' : 'Arhivă BZIP', 'kindXZ' : 'Arhivă XZ', 'kindZIP' : 'Arhivă ZIP', 'kindRAR' : 'Arhivă RAR', 'kindJAR' : 'Fișier Java JAR', 'kindTTF' : 'Font True Type', 'kindOTF' : 'Font Open Type', 'kindRPM' : 'Pachet RPM', // texts 'kindText' : 'Document text', 'kindTextPlain' : 'Text simplu', 'kindPHP' : 'Sursă PHP', 'kindCSS' : 'Fișier de stil (CSS)', 'kindHTML' : 'Document HTML', 'kindJS' : 'Sursă Javascript', 'kindRTF' : 'Text formatat (rich text)', 'kindC' : 'Sursă C', 'kindCHeader' : 'Sursă C header', 'kindCPP' : 'Sursă C++', 'kindCPPHeader' : 'Sursă C++ header', 'kindShell' : 'Script terminal Unix', 'kindPython' : 'Sursă Python', 'kindJava' : 'Sursă Java', 'kindRuby' : 'Sursă Ruby', 'kindPerl' : 'Script Perl', 'kindSQL' : 'Sursă SQL', 'kindXML' : 'Document XML', 'kindAWK' : 'Sursă AWK', 'kindCSV' : 'Valori separate de virgulă (CSV)', 'kindDOCBOOK' : 'Document Docbook XML', 'kindMarkdown' : 'Text Markdown', // added 20.7.2015 // images 'kindImage' : 'Imagine', 'kindBMP' : 'Imagine BMP', 'kindJPEG' : 'Imagine JPEG', 'kindGIF' : 'Imagine GIF', 'kindPNG' : 'Imagine PNG', 'kindTIFF' : 'Imagine TIFF', 'kindTGA' : 'Imagine TGA', 'kindPSD' : 'Imagine Adobe Photoshop', 'kindXBITMAP' : 'Imagine X bitmap', 'kindPXM' : 'Imagine Pixelmator', // media 'kindAudio' : 'Audio', 'kindAudioMPEG' : 'Audio MPEG', 'kindAudioMPEG4' : 'Audio MPEG-4', 'kindAudioMIDI' : 'Audio MIDI', 'kindAudioOGG' : 'Audio Ogg Vorbis', 'kindAudioWAV' : 'Audio WAV', 'AudioPlaylist' : 'Playlist MP3', 'kindVideo' : 'Video', 'kindVideoDV' : 'Video DV', 'kindVideoMPEG' : 'Video MPEG', 'kindVideoMPEG4' : 'Video MPEG-4', 'kindVideoAVI' : 'Video AVI', 'kindVideoMOV' : 'Video Quick Time', 'kindVideoWM' : 'Video Windows Media', 'kindVideoFlash' : 'Video Flash', 'kindVideoMKV' : 'Video Matroska', 'kindVideoOGG' : 'Video Ogg' } }; })); plugins/file-manager-advanced/application/library/js/i18n/elfinder.ru.js000064400000123177147176754550022274 0ustar00/** * Русский язык translation * @author Dmitry "dio" Levashov * @author Andrew Berezovsky * @author Alex Yashkin * @version 2022-01-02 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.ru = { translator : 'Dmitry "dio" Levashov <dio@std42.ru>, Andrew Berezovsky <andrew.berezovsky@gmail.com>, Alex Yashkin <alex@yashkin.by>', language : 'Русский язык', direction : 'ltr', dateFormat : 'd M Y H:i', // will show like: 02 Янв 2022 19:53 fancyDateFormat : '$1 H:i', // will show like: Сегодня 19:53 nonameDateFormat : 'ymd-His', // noname upload will show like: 220102-195313 messages : { /********************************** errors **********************************/ 'error' : 'Ошибка', 'errUnknown' : 'Неизвестная ошибка.', 'errUnknownCmd' : 'Неизвестная команда.', 'errJqui' : 'Отсутствуют необходимые компоненты jQuery UI - selectable, draggable и droppable.', 'errNode' : 'Отсутствует DOM элемент для инициализации elFinder.', 'errURL' : 'Неверная конфигурация elFinder! Не указан URL.', 'errAccess' : 'Доступ запрещен.', 'errConnect' : 'Не удалось соединиться с сервером.', 'errAbort' : 'Соединение прервано.', 'errTimeout' : 'Таймаут соединения.', 'errNotFound' : 'Сервер не найден.', 'errResponse' : 'Некорректный ответ сервера.', 'errConf' : 'Некорректная настройка сервера.', 'errJSON' : 'Модуль PHP JSON не установлен.', 'errNoVolumes' : 'Отсутствуют корневые директории достуные для чтения.', 'errCmdParams' : 'Некорректные параметры команды "$1".', 'errDataNotJSON' : 'Данные не в формате JSON.', 'errDataEmpty' : 'Данные отсутствуют.', 'errCmdReq' : 'Для запроса к серверу необходимо указать имя команды.', 'errOpen' : 'Не удалось открыть "$1".', 'errNotFolder' : 'Объект не является папкой.', 'errNotFile' : 'Объект не является файлом.', 'errRead' : 'Ошибка чтения "$1".', 'errWrite' : 'Ошибка записи в "$1".', 'errPerm' : 'Доступ запрещен.', 'errLocked' : '"$1" защищен и не может быть переименован, перемещен или удален.', 'errExists' : 'В папке уже существует файл с именем "$1".', 'errInvName' : 'Недопустимое имя файла.', 'errInvDirname' : 'Недопустимое имя папки.', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : 'Папка не найдена.', 'errFileNotFound' : 'Файл не найден.', 'errTrgFolderNotFound' : 'Целевая папка "$1" не найдена.', 'errPopup' : 'Браузер заблокировал открытие нового окна. Чтобы открыть файл, измените настройки браузера.', 'errMkdir' : 'Ошибка создания папки "$1".', 'errMkfile' : 'Ошибка создания файла "$1".', 'errRename' : 'Ошибка переименования "$1".', 'errCopyFrom' : 'Копирование файлов из директории "$1" запрещено.', 'errCopyTo' : 'Копирование файлов в директорию "$1" запрещено.', 'errMkOutLink' : 'Невозможно создать ссылку вне корня раздела.', // from v2.1 added 03.10.2015 'errUpload' : 'Ошибка загрузки.', // old name - errUploadCommon 'errUploadFile' : 'Невозможно загрузить "$1".', // old name - errUpload 'errUploadNoFiles' : 'Нет файлов для загрузки.', 'errUploadTotalSize' : 'Превышен допустимый размер загружаемых данных.', // old name - errMaxSize 'errUploadFileSize' : 'Размер файла превышает допустимый.', // old name - errFileMaxSize 'errUploadMime' : 'Недопустимый тип файла.', 'errUploadTransfer' : 'Ошибка передачи файла "$1".', 'errUploadTemp' : 'Невозможно создать временный файл для загрузки.', // from v2.1 added 26.09.2015 'errNotReplace' : 'Объект "$1" по этому адресу уже существует и не может быть заменен объектом другого типа.', // new 'errReplace' : 'Невозможно заменить "$1".', 'errSave' : 'Невозможно сохранить "$1".', 'errCopy' : 'Невозможно скопировать "$1".', 'errMove' : 'Невозможно переместить "$1".', 'errCopyInItself' : 'Невозможно скопировать "$1" в самого себя.', 'errRm' : 'Невозможно удалить "$1".', 'errTrash' : 'Невозможно переместить в корзину.', // from v2.1.24 added 30.4.2017 'errRmSrc' : 'Невозможно удалить файлы источника.', 'errExtract' : 'Невозможно извлечь фалы из "$1".', 'errArchive' : 'Невозможно создать архив.', 'errArcType' : 'Неподдерживаемый тип архива.', 'errNoArchive' : 'Файл не является архивом или неподдерживаемый тип архива.', 'errCmdNoSupport' : 'Сервер не поддерживает эту команду.', 'errReplByChild' : 'Невозможно заменить папку "$1" содержащимся в ней объектом.', 'errArcSymlinks' : 'По соображениям безопасности запрещена распаковка архивов, содержащих ссылки (symlinks) или файлы с недопустимыми именами.', // edited 24.06.2012 'errArcMaxSize' : 'Размер файлов в архиве превышает максимально разрешенный.', 'errResize' : 'Не удалось изменить размер "$1".', 'errResizeDegree' : 'Некорректный градус поворота.', // added 7.3.2013 'errResizeRotate' : 'Невозможно повернуть изображение.', // added 7.3.2013 'errResizeSize' : 'Некорректный размер изображения.', // added 7.3.2013 'errResizeNoChange' : 'Размер изображения не изменился.', // added 7.3.2013 'errUsupportType' : 'Неподдерживаемый тип файла.', 'errNotUTF8Content' : 'Файл "$1" содержит текст в кодировке отличной от UTF-8 и не может быть отредактирован.', // added 9.11.2011 'errNetMount' : 'Невозможно подключить "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'Неподдерживаемый протокол.', // added 17.04.2012 'errNetMountFailed' : 'Ошибка монтирования.', // added 17.04.2012 'errNetMountHostReq' : 'Требуется указать хост.', // added 18.04.2012 'errSessionExpires' : 'Сессия была завершена так как превышено время отсутствия активности.', 'errCreatingTempDir' : 'Невозможно создать временную директорию: "$1"', 'errFtpDownloadFile' : 'Невозможно скачать файл с FTP: "$1"', 'errFtpUploadFile' : 'Невозможно загрузить файл на FTP: "$1"', 'errFtpMkdir' : 'Невозможно создать директорию на FTP: "$1"', 'errArchiveExec' : 'Ошибка при выполнении архивации: "$1"', 'errExtractExec' : 'Ошибка при выполнении распаковки: "$1"', 'errNetUnMount' : 'Невозможно отключить', // from v2.1 added 30.04.2012 'errConvUTF8' : 'Не конвертируется в UTF-8', // from v2.1 added 08.04.2014 'errFolderUpload' : 'Если вы хотите загружать папки, попробуйте Google Chrome.', // from v2.1 added 26.6.2015 'errSearchTimeout' : 'Превышено время ожидания при поиске "$1". Результаты поиска частичные.', // from v2.1 added 12.1.2016 'errReauthRequire' : 'Требуется повторная авторизация.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'Максимальное число выбираемых файлов: $1.', // from v2.1.17 added 17.10.2016 'errRestore' : 'Невозможно восстановить из корзины. Не удалось определить путь для восстановления.', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'Не найден редактор для этого типа файлов.', // from v2.1.25 added 23.5.2017 'errServerError' : 'Возникла ошибка на стороне сервера.', // from v2.1.25 added 16.6.2017 'errEmpty' : 'Невозможно очистить папку "$1".', // from v2.1.25 added 22.6.2017 'moreErrors' : 'Еще ошибок: $1', // from v2.1.44 added 9.12.2018 'errMaxMkdirs' : 'Вы можете создать за один раз папок: $1.', // from v2.1.58 added 20.6.2021 /******************************* commands names ********************************/ 'cmdarchive' : 'Создать архив', 'cmdback' : 'Назад', 'cmdcopy' : 'Копировать', 'cmdcut' : 'Вырезать', 'cmddownload' : 'Скачать', 'cmdduplicate' : 'Сделать копию', 'cmdedit' : 'Редактировать файл', 'cmdextract' : 'Распаковать архив', 'cmdforward' : 'Вперед', 'cmdgetfile' : 'Выбрать файлы', 'cmdhelp' : 'О программе', 'cmdhome' : 'Домой', 'cmdinfo' : 'Свойства', 'cmdmkdir' : 'Новая папка', 'cmdmkdirin' : 'В новую папку', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'Новый файл', 'cmdopen' : 'Открыть', 'cmdpaste' : 'Вставить', 'cmdquicklook' : 'Быстрый просмотр', 'cmdreload' : 'Обновить', 'cmdrename' : 'Переименовать', 'cmdrm' : 'Удалить', 'cmdtrash' : 'Переместить в корзину', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'Восстановить', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'Поиск файлов', 'cmdup' : 'Наверх', 'cmdupload' : 'Загрузить файлы', 'cmdview' : 'Вид', 'cmdresize' : 'Изменить размер и повернуть', 'cmdsort' : 'Сортировать', 'cmdnetmount' : 'Подключить сетевой раздел', // added 18.04.2012 'cmdnetunmount': 'Отключить', // from v2.1 added 30.04.2012 'cmdplaces' : 'В избранное', // added 28.12.2014 'cmdchmod' : 'Изменить права доступа', // from v2.1 added 20.6.2015 'cmdopendir' : 'Открыть папку', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'Сбросить ширину колонок', // from v2.1.13 added 12.06.2016 'cmdfullscreen': 'Полный экран', // from v2.1.15 added 03.08.2016 'cmdmove' : 'Переместить', // from v2.1.15 added 21.08.2016 'cmdempty' : 'Очистить папку', // from v2.1.25 added 22.06.2017 'cmdundo' : 'Отменить', // from v2.1.27 added 31.07.2017 'cmdredo' : 'Вернуть', // from v2.1.27 added 31.07.2017 'cmdpreference': 'Предпочтения', // from v2.1.27 added 03.08.2017 'cmdselectall' : 'Выбрать все', // from v2.1.28 added 15.08.2017 'cmdselectnone': 'Отменить выбор', // from v2.1.28 added 15.08.2017 'cmdselectinvert': 'Инвертировать выбор', // from v2.1.28 added 15.08.2017 'cmdopennew' : 'Открыть в новом окне', // from v2.1.38 added 3.4.2018 'cmdhide' : 'Скрыть (персонально)', // from v2.1.41 added 24.7.2018 /*********************************** buttons ***********************************/ 'btnClose' : 'Закрыть', 'btnSave' : 'Сохранить', 'btnRm' : 'Удалить', 'btnApply' : 'Применить', 'btnCancel' : 'Отмена', 'btnNo' : 'Нет', 'btnYes' : 'Да', 'btnMount' : 'Подключить', // added 18.04.2012 'btnApprove': 'Перейти в $1 и применить', // from v2.1 added 26.04.2012 'btnUnmount': 'Отключить', // from v2.1 added 30.04.2012 'btnConv' : 'Конвертировать', // from v2.1 added 08.04.2014 'btnCwd' : 'Здесь', // from v2.1 added 22.5.2015 'btnVolume' : 'Раздел', // from v2.1 added 22.5.2015 'btnAll' : 'Все', // from v2.1 added 22.5.2015 'btnMime' : 'MIME тип', // from v2.1 added 22.5.2015 'btnFileName':'Имя файла', // from v2.1 added 22.5.2015 'btnSaveClose': 'Сохранить и закрыть', // from v2.1 added 12.6.2015 'btnBackup' : 'Резервная копия', // fromv2.1 added 28.11.2015 'btnRename' : 'Переименовать', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'Переименовать (все)', // from v2.1.24 added 6.4.2017 'btnPrevious' : 'Пред. ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : 'След. ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : 'Сохранить как', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'Открыть папку', 'ntffile' : 'Открыть файл', 'ntfreload' : 'Обновить текущую папку', 'ntfmkdir' : 'Создание папки', 'ntfmkfile' : 'Создание файлов', 'ntfrm' : 'Удалить файлы', 'ntfcopy' : 'Скопировать файлы', 'ntfmove' : 'Переместить файлы', 'ntfprepare' : 'Подготовка к копированию файлов', 'ntfrename' : 'Переименовать файлы', 'ntfupload' : 'Загрузка файлов', 'ntfdownload' : 'Скачивание файлов', 'ntfsave' : 'Сохранить файлы', 'ntfarchive' : 'Создание архива', 'ntfextract' : 'Распаковка архива', 'ntfsearch' : 'Поиск файлов', 'ntfresize' : 'Изменение размеров изображений', 'ntfsmth' : 'Занят важным делом', 'ntfloadimg' : 'Загрузка изображения', 'ntfnetmount' : 'Подключение сетевого диска', // added 18.04.2012 'ntfnetunmount': 'Отключение сетевого диска', // from v2.1 added 30.04.2012 'ntfdim' : 'Получение размеров изображения', // added 20.05.2013 'ntfreaddir' : 'Чтение информации о папке', // from v2.1 added 01.07.2013 'ntfurl' : 'Получение URL ссылки', // from v2.1 added 11.03.2014 'ntfchmod' : 'Изменение прав доступа к файлу', // from v2.1 added 20.6.2015 'ntfpreupload': 'Проверка измени загруженного файла', // from v2.1 added 31.11.2015 'ntfzipdl' : 'Создание файла для скачки', // from v2.1.7 added 23.1.2016 'ntfparents' : 'Получение информации о пути', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'Обработка загруженного файла', // from v2.1.17 added 2.11.2016 'ntftrash' : 'Перемещение в корзину', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'Восстановление из корзины', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'Проверка папки назначения', // from v2.1.24 added 3.5.2017 'ntfundo' : 'Отмена предыдущей операции', // from v2.1.27 added 31.07.2017 'ntfredo' : 'Восстановление предыдущей операции', // from v2.1.27 added 31.07.2017 'ntfchkcontent' : 'Проверка содержимого', // from v2.1.41 added 3.8.2018 /*********************************** volumes *********************************/ 'volume_Trash' : 'Корзина', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : 'неизвестно', 'Today' : 'Сегодня', 'Yesterday' : 'Вчера', 'msJan' : 'Янв', 'msFeb' : 'Фев', 'msMar' : 'Мар', 'msApr' : 'Апр', 'msMay' : 'Май', 'msJun' : 'Июн', 'msJul' : 'Июл', 'msAug' : 'Авг', 'msSep' : 'Сен', 'msOct' : 'Окт', 'msNov' : 'Ноя', 'msDec' : 'Дек', 'January' : 'Январь', 'February' : 'Февраль', 'March' : 'Март', 'April' : 'Апрель', 'May' : 'Май', 'June' : 'Июнь', 'July' : 'Июль', 'August' : 'Август', 'September' : 'Сентябрь', 'October' : 'Октябрь', 'November' : 'Ноябрь', 'December' : 'Декабрь', 'Sunday' : 'Воскресенье', 'Monday' : 'Понедельник', 'Tuesday' : 'Вторник', 'Wednesday' : 'Среда', 'Thursday' : 'Четверг', 'Friday' : 'Пятница', 'Saturday' : 'Суббота', 'Sun' : 'Вск', 'Mon' : 'Пнд', 'Tue' : 'Втр', 'Wed' : 'Срд', 'Thu' : 'Чтв', 'Fri' : 'Птн', 'Sat' : 'Сбт', /******************************** sort variants ********************************/ 'sortname' : 'по имени', 'sortkind' : 'по типу', 'sortsize' : 'по размеру', 'sortdate' : 'по дате', 'sortFoldersFirst' : 'Папки в начале', 'sortperm' : 'по разрешениям', // from v2.1.13 added 13.06.2016 'sortmode' : 'по режиму', // from v2.1.13 added 13.06.2016 'sortowner' : 'по владельцу', // from v2.1.13 added 13.06.2016 'sortgroup' : 'по группе', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'Также и дерево каталогов', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : 'НовыйФайл.txt', // added 10.11.2015 'untitled folder' : 'НоваяПапка', // added 10.11.2015 'Archive' : 'НовыйАрхив', // from v2.1 added 10.11.2015 'untitled file' : 'НовыйФайл.$1', // from v2.1.41 added 6.8.2018 'extentionfile' : '$1 Файл', // from v2.1.41 added 6.8.2018 'extentiontype' : '$1: $2', // from v2.1.43 added 17.10.2018 /********************************** messages **********************************/ 'confirmReq' : 'Необходимо подтверждение', 'confirmRm' : 'Вы уверены, что хотите удалить файлы?
                Действие необратимо!', 'confirmRepl' : 'Заменить старый файл новым?', 'confirmRest' : 'Заменить существующий файл файлом из корзины?', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'Не UTF-8
                Сконвертировать в UTF-8?
                Данные станут UTF-8 при сохранении после конвертации.', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'Невозможно определить кодировку файла. Необходима предварительная конвертация файла в UTF-8 для дальнейшего редактирования.
                Выберите кодировку файла.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : 'Произошли изменения.
                Если не сохраните изменения, то потеряете их.', // from v2.1 added 15.7.2015 'confirmTrash' : 'Вы уверены, что хотите переместить файлы в корзину?', //from v2.1.24 added 29.4.2017 'confirmMove' : 'Вы уверены, что хотите переместить файлы в "$1"?', //from v2.1.50 added 27.7.2019 'apllyAll' : 'Применить для всех', 'name' : 'Имя', 'size' : 'Размер', 'perms' : 'Доступ', 'modify' : 'Изменен', 'kind' : 'Тип', 'read' : 'чтение', 'write' : 'запись', 'noaccess' : 'нет доступа', 'and' : 'и', 'unknown' : 'неизвестно', 'selectall' : 'Выбрать все файлы', 'selectfiles' : 'Выбрать файл(ы)', 'selectffile' : 'Выбрать первый файл', 'selectlfile' : 'Выбрать последний файл', 'viewlist' : 'В виде списка', 'viewicons' : 'В виде иконок', 'viewSmall' : 'Маленькие иконки', // from v2.1.39 added 22.5.2018 'viewMedium' : 'Средние иконки', // from v2.1.39 added 22.5.2018 'viewLarge' : 'Большие иконки', // from v2.1.39 added 22.5.2018 'viewExtraLarge' : 'Очень большие иконки', // from v2.1.39 added 22.5.2018 'places' : 'Избранное', 'calc' : 'Вычислить', 'path' : 'Путь', 'aliasfor' : 'Указывает на', 'locked' : 'Защита', 'dim' : 'Размеры', 'files' : 'Файлы', 'folders' : 'Папки', 'items' : 'Объекты', 'yes' : 'да', 'no' : 'нет', 'link' : 'Ссылка', 'searcresult' : 'Результаты поиска', 'selected' : 'выбрано', 'about' : 'О программе', 'shortcuts' : 'Горячие клавиши', 'help' : 'Помощь', 'webfm' : 'Файловый менеджер для Web', 'ver' : 'Версия', 'protocolver' : 'версия протокола', 'homepage' : 'Сайт проекта', 'docs' : 'Документация', 'github' : 'Форкните на GitHub', 'twitter' : 'Следите в Twitter', 'facebook' : 'Присоединяйтесь на Facebook', 'team' : 'Команда', 'chiefdev' : 'ведущий разработчик', 'developer' : 'разработчик', 'contributor' : 'участник', 'maintainer' : 'сопровождение проекта', 'translator' : 'переводчик', 'icons' : 'Иконки', 'dontforget' : 'и не забудьте взять своё полотенце', 'shortcutsof' : 'Горячие клавиши отключены', 'dropFiles' : 'Перетащите файлы сюда', 'or' : 'или', 'selectForUpload' : 'Выбрать файлы для загрузки', 'moveFiles' : 'Переместить файлы', 'copyFiles' : 'Скопировать файлы', 'restoreFiles' : 'Восстановить файлы', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'Удалить из избранного', 'aspectRatio' : 'Соотношение сторон', 'scale' : 'Масштаб', 'width' : 'Ширина', 'height' : 'Высота', 'resize' : 'Изменить размер', 'crop' : 'Обрезать', 'rotate' : 'Повернуть', 'rotate-cw' : 'Повернуть на 90 градусов по часовой стрелке', 'rotate-ccw' : 'Повернуть на 90 градусов против часовой стрелке', 'degree' : '°', 'netMountDialogTitle' : 'Подключить сетевой диск', // added 18.04.2012 'protocol' : 'Протокол', // added 18.04.2012 'host' : 'Хост', // added 18.04.2012 'port' : 'Порт', // added 18.04.2012 'user' : 'Пользователь', // added 18.04.2012 'pass' : 'Пароль', // added 18.04.2012 'confirmUnmount' : 'Вы хотите отключить $1?', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'Перетащите или вставьте файлы из браузера', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'Перетащите или вставьте файлы и ссылки сюда', // from v2.1 added 07.04.2014 'encoding' : 'Кодировка', // from v2.1 added 19.12.2014 'locale' : 'Локаль', // from v2.1 added 19.12.2014 'searchTarget' : 'Цель: $1', // from v2.1 added 22.5.2015 'searchMime' : 'Поиск по введенному MIME типу', // from v2.1 added 22.5.2015 'owner' : 'Владелец', // from v2.1 added 20.6.2015 'group' : 'Группа', // from v2.1 added 20.6.2015 'other' : 'Остальные', // from v2.1 added 20.6.2015 'execute' : 'Исполнить', // from v2.1 added 20.6.2015 'perm' : 'Разрешение', // from v2.1 added 20.6.2015 'mode' : 'Режим', // from v2.1 added 20.6.2015 'emptyFolder' : 'Папка пуста', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'Папка пуста\\A Перетащите чтобы добавить', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'Папка пуста\\A Долгое нажатие чтобы добавить', // from v2.1.6 added 30.12.2015 'quality' : 'Качество', // from v2.1.6 added 5.1.2016 'autoSync' : 'Авто синхронизация', // from v2.1.6 added 10.1.2016 'moveUp' : 'Передвинуть вверх', // from v2.1.6 added 18.1.2016 'getLink' : 'Получить URL ссылку', // from v2.1.7 added 9.2.2016 'selectedItems' : 'Выбранные объекты ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'ID папки', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'Позволить автономный доступ', // from v2.1.10 added 3.25.2016 'reAuth' : 'Авторизоваться повторно', // from v2.1.10 added 3.25.2016 'nowLoading' : 'Загружается...', // from v2.1.12 added 4.26.2016 'openMulti' : 'Открыть несколько файлов', // from v2.1.12 added 5.14.2016 'openMultiConfirm': 'Вы пытаетесь открыть $1 файл(а/ов). Вы уверены, что хотите открыть их в браузере?', // from v2.1.12 added 5.14.2016 'emptySearch' : 'Ничего не найдено', // from v2.1.12 added 5.16.2016 'editingFile' : 'Это редактируемый файл.', // from v2.1.13 added 6.3.2016 'hasSelected' : 'Вы выбрали $1 файл(-ов).', // from v2.1.13 added 6.3.2016 'hasClipboard' : 'У вас $1 файл(-ов) в буфере обмена.', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'Инкрементный поиск возможен только из текущего вида.', // from v2.1.13 added 6.30.2016 'reinstate' : 'Восстановить', // from v2.1.15 added 3.8.2016 'complete' : '$1 завершен', // from v2.1.15 added 21.8.2016 'contextmenu' : 'Контекстное меню', // from v2.1.15 added 9.9.2016 'pageTurning' : 'Переключение страницы', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'Корни томов', // from v2.1.16 added 16.9.2016 'reset' : 'Сбросить', // from v2.1.16 added 1.10.2016 'bgcolor' : 'Фоновый цвет', // from v2.1.16 added 1.10.2016 'colorPicker' : 'Выбор цвета', // from v2.1.16 added 1.10.2016 '8pxgrid' : '8px сетка', // from v2.1.16 added 4.10.2016 'enabled' : 'Включено', // from v2.1.16 added 4.10.2016 'disabled' : 'Отключено', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'Ничего не найдено в текущем виде.\\AНажмите [Enter] для развертывания цели поиска.', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'Поиск по первому символу не дал результатов в текущем виде.', // from v2.1.23 added 24.3.2017 'textLabel' : 'Текстовая метка', // from v2.1.17 added 13.10.2016 'minsLeft' : '$1 минут осталось', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'Переоткрыть с выбранной кодировкой', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'Сохранить с выбранной кодировкой', // from v2.1.19 added 2.12.2016 'selectFolder' : 'Выбрать папку', // from v2.1.20 added 13.12.2016 'firstLetterSearch': 'Поиск по первому символу', // from v2.1.23 added 24.3.2017 'presets' : 'Пресеты', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : 'Слишком много файлов для перемещения в корзину.', // from v2.1.25 added 9.6.2017 'TextArea' : 'Текстовая область', // from v2.1.25 added 14.6.2017 'folderToEmpty' : 'Очистить папку "$1".', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : 'Нет файлов в паке "$1".', // from v2.1.25 added 22.6.2017 'preference' : 'Настройки', // from v2.1.26 added 28.6.2017 'language' : 'Язык', // from v2.1.26 added 28.6.2017 'clearBrowserData': 'Сбросить настройки для этого браузера', // from v2.1.26 added 28.6.2017 'toolbarPref' : 'Настройки панели', // from v2.1.27 added 2.8.2017 'charsLeft' : '... еще символов: $1.', // from v2.1.29 added 30.8.2017 'linesLeft' : '... еще строк: $1.', // from v2.1.52 added 16.1.2020 'sum' : 'Общий размер', // from v2.1.29 added 28.9.2017 'roughFileSize' : 'Приблизительный размер файла', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : 'Фокус на элементе диалога при наведении мыши', // from v2.1.30 added 2.11.2017 'select' : 'Выбрать', // from v2.1.30 added 23.11.2017 'selectAction' : 'Действие при выборе файла', // from v2.1.30 added 23.11.2017 'useStoredEditor' : 'Открывать в редакторе, выбранном в прошлый раз', // from v2.1.30 added 23.11.2017 'selectinvert' : 'Выбрать элементы с инвертированием', // from v2.1.30 added 25.11.2017 'renameMultiple' : 'Переименовать выбранные элементы ($1 шт.) в $2?
                Действие нельзя отменить!', // from v2.1.31 added 4.12.2017 'batchRename' : 'Групповое переименование', // from v2.1.31 added 8.12.2017 'plusNumber' : '+ Число', // from v2.1.31 added 8.12.2017 'asPrefix' : 'Добавить префикс', // from v2.1.31 added 8.12.2017 'asSuffix' : 'Добавить суффикс', // from v2.1.31 added 8.12.2017 'changeExtention' : 'Изменить расширение', // from v2.1.31 added 8.12.2017 'columnPref' : 'Настройки колонок (для просмотра в виде списка)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : 'Все изменения будут немедленно отражены в архиве.', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : 'Изменения не вступят в силу до тех пор, пока вы не размонтируете этот том.', // from v2.1.33 added 2.3.2018 'unmountChildren' : 'Тома, смонтированные на этом томе, также будут размонтированы. Вы хотите отключить его?', // from v2.1.33 added 5.3.2018 'selectionInfo' : 'Свойства', // from v2.1.33 added 7.3.2018 'hashChecker' : 'Алгоритмы для отображения хеш-сумм файлов', // from v2.1.33 added 10.3.2018 'infoItems' : 'Элементы в панели свойств', // from v2.1.38 added 28.3.2018 'pressAgainToExit': 'Нажмите снова для выхода.', // from v2.1.38 added 1.4.2018 'toolbar' : 'Панель', // from v2.1.38 added 4.4.2018 'workspace' : 'Рабочая область', // from v2.1.38 added 4.4.2018 'dialog' : 'Диалог', // from v2.1.38 added 4.4.2018 'all' : 'Все', // from v2.1.38 added 4.4.2018 'iconSize' : 'Размер иконок (В виде иконок)', // from v2.1.39 added 7.5.2018 'editorMaximized' : 'Открывать редактор в развернутом виде', // from v2.1.40 added 30.6.2018 'editorConvNoApi' : 'Так как конвертация с помощью API недоступно, произведите конвертацию на веб-сайте.', //from v2.1.40 added 8.7.2018 'editorConvNeedUpload' : 'После конвертации вы должны загрузить скачанный файл, чтобы сохранить его.', //from v2.1.40 added 8.7.2018 'convertOn' : 'Конвертировать на сайте $1', // from v2.1.40 added 10.7.2018 'integrations' : 'Интеграции', // from v2.1.40 added 11.7.2018 'integrationWith' : 'Менеджер elFinder интегрирован со следующими внешними сервисами. Ознакомьтесь с правилами пользования, политиками безопасности и др. перед их использованием.', // from v2.1.40 added 11.7.2018 'showHidden' : 'Показать скрытые элементы', // from v2.1.41 added 24.7.2018 'hideHidden' : 'Скрыть скрытые элементы', // from v2.1.41 added 24.7.2018 'toggleHidden' : 'Показать/скрыть скрытые элементы', // from v2.1.41 added 24.7.2018 'makefileTypes' : 'Типы файлов в меню "Новый файл"', // from v2.1.41 added 7.8.2018 'typeOfTextfile' : 'Тип текстового файла', // from v2.1.41 added 7.8.2018 'add' : 'Добавить', // from v2.1.41 added 7.8.2018 'theme' : 'Тема', // from v2.1.43 added 19.10.2018 'default' : 'По умолчанию', // from v2.1.43 added 19.10.2018 'description' : 'Описание', // from v2.1.43 added 19.10.2018 'website' : 'Веб-сайт', // from v2.1.43 added 19.10.2018 'author' : 'Автор', // from v2.1.43 added 19.10.2018 'email' : 'Email', // from v2.1.43 added 19.10.2018 'license' : 'Лицензия', // from v2.1.43 added 19.10.2018 'exportToSave' : 'Невозможно сохранить файл. Чтобы не потерять изменения, экспортируйте их на свой ПК.', // from v2.1.44 added 1.12.2018 'dblclickToSelect': 'Двойной клик по файлу для его выбора.', // from v2.1.47 added 22.1.2019 'useFullscreen' : 'Использовать полноэкранный режим', // from v2.1.47 added 19.2.2019 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Неизвестный', 'kindRoot' : 'Корень тома', // from v2.1.16 added 16.10.2016 'kindFolder' : 'Папка', 'kindSelects' : 'Выбор', // from v2.1.29 added 29.8.2017 'kindAlias' : 'Ссылка', 'kindAliasBroken' : 'Битая ссылка', // applications 'kindApp' : 'Приложение', 'kindPostscript' : 'Документ Postscript', 'kindMsOffice' : 'Документ Microsoft Office', 'kindMsWord' : 'Документ Microsoft Word', 'kindMsExcel' : 'Документ Microsoft Excel', 'kindMsPP' : 'Презентация Microsoft Powerpoint', 'kindOO' : 'Документ Open Office', 'kindAppFlash' : 'Приложение Flash', 'kindPDF' : 'Документ PDF', 'kindTorrent' : 'Файл Bittorrent', 'kind7z' : 'Архив 7z', 'kindTAR' : 'Архив TAR', 'kindGZIP' : 'Архив GZIP', 'kindBZIP' : 'Архив BZIP', 'kindXZ' : 'Архив XZ', 'kindZIP' : 'Архив ZIP', 'kindRAR' : 'Архив RAR', 'kindJAR' : 'Файл Java JAR', 'kindTTF' : 'Шрифт True Type', 'kindOTF' : 'Шрифт Open Type', 'kindRPM' : 'Пакет RPM', // texts 'kindText' : 'Текстовый документ', 'kindTextPlain' : 'Простой текст', 'kindPHP' : 'Исходник PHP', 'kindCSS' : 'Таблицы стилей CSS', 'kindHTML' : 'Документ HTML', 'kindJS' : 'Исходник Javascript', 'kindRTF' : 'Rich Text Format', 'kindC' : 'Исходник C', 'kindCHeader' : 'Заголовочный файл C', 'kindCPP' : 'Исходник C++', 'kindCPPHeader' : 'Заголовочный файл C++', 'kindShell' : 'Скрипт Unix shell', 'kindPython' : 'Исходник Python', 'kindJava' : 'Исходник Java', 'kindRuby' : 'Исходник Ruby', 'kindPerl' : 'Исходник Perl', 'kindSQL' : 'Исходник SQL', 'kindXML' : 'Документ XML', 'kindAWK' : 'Исходник AWK', 'kindCSV' : 'Текст с разделителями', 'kindDOCBOOK' : 'Документ Docbook XML', 'kindMarkdown' : 'Текст Markdown', // added 20.7.2015 // images 'kindImage' : 'Изображение', 'kindBMP' : 'Изображение BMP', 'kindJPEG' : 'Изображение JPEG', 'kindGIF' : 'Изображение GIF', 'kindPNG' : 'Изображение PNG', 'kindTIFF' : 'Изображение TIFF', 'kindTGA' : 'Изображение TGA', 'kindPSD' : 'Изображение Adobe Photoshop', 'kindXBITMAP' : 'Изображение X bitmap', 'kindPXM' : 'Изображение Pixelmator', // media 'kindAudio' : 'Аудио файл', 'kindAudioMPEG' : 'Аудио MPEG', 'kindAudioMPEG4' : 'Аудио MPEG-4', 'kindAudioMIDI' : 'Аудио MIDI', 'kindAudioOGG' : 'Аудио Ogg Vorbis', 'kindAudioWAV' : 'Аудио WAV', 'AudioPlaylist' : 'Плейлист MP3', 'kindVideo' : 'Видео файл', 'kindVideoDV' : 'Видео DV', 'kindVideoMPEG' : 'Видео MPEG', 'kindVideoMPEG4' : 'Видео MPEG-4', 'kindVideoAVI' : 'Видео AVI', 'kindVideoMOV' : 'Видео Quick Time', 'kindVideoWM' : 'Видео Windows Media', 'kindVideoFlash' : 'Видео Flash', 'kindVideoMKV' : 'Видео Matroska', 'kindVideoOGG' : 'Видео Ogg' } }; })); plugins/file-manager-advanced/application/library/js/i18n/elfinder.si.js000064400000126147147176754550022261 0ustar00/** * Sinhala translation * @author CodeLyokoXtEAM * @version 2018-03-26 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.si = { translator : 'CodeLyokoXtEAM <XcodeLyokoTEAM@gmail.com>', language : 'Sinhala', direction : 'ltr', dateFormat : 'Y.m.d h:i A', // Mar 13, 2012 05:27 PM fancyDateFormat : '$1 h:i A', // will produce smth like: Today 12:25 PM nonameDateFormat : 'Ymd-His', // to apply if upload file is noname: 120513172700 messages : { /********************************** errors **********************************/ 'error' : 'දෝෂයකි.', 'errUnknown' : 'නොදන්නා දෝෂයකි.', 'errUnknownCmd' : 'නොදන්නා විධානයකි.', 'errJqui' : 'වලංගු නොවන jQuery UI සැකැස්මකි. තේරිය හැකි, ඇදගෙන යාම සහ ඇද දැමිය හැකි කොටස් ඇතුළත් කළ යුතුය.', 'errNode' : 'ElFinder විසින් DOM Element නිර්මාණය කිරීමට අවශ්‍යව අැත.', 'errURL' : 'වලංගු නොවන elFinder සැකැස්මකි! URL විකල්පය සැකසා නැත.', 'errAccess' : 'භාවිතය අත්හිටුවා ඇත.', 'errConnect' : 'පසුබිම(Backend) වෙත සම්බන්ධ වීමට නොහැකිය.', 'errAbort' : 'සම්බන්ධතාවය වසාදමා ඇත.', 'errTimeout' : 'සම්බන්ධතා කල් ඉකුත්වී ඇත.', 'errNotFound' : 'පසුබිම(Backend) සොයාගත නොහැකි විය.', 'errResponse' : 'වලංගු නොවන පසුබිම(Backend) ප්‍රතිචාරය.', 'errConf' : 'වලංගු නොවන Backend සැකැස්මකි.', 'errJSON' : 'PHP JSON මොඩියුලය ස්ථාපනය කර නැත.', 'errNoVolumes' : 'කියවිය හැකි එ්කක(volumes) නොමැත.', 'errCmdParams' : '"$1" නම් විධානය වලංගු නොවන පරාමිතියකි.', 'errDataNotJSON' : 'JSON දත්ත නොවේ.', 'errDataEmpty' : 'හිස් දත්තයකි.', 'errCmdReq' : 'Backend සඳහා ඉල්ලන ලද විධානයේ නම අවශ්‍ය වේ.', 'errOpen' : '"$1" විවෘත කළ නොහැක.', 'errNotFolder' : 'අායිත්තම(object) ෆොල්ඩරයක් නොවේ.', 'errNotFile' : 'අායිත්තම(object) ගොනුවක් නොවේ.', 'errRead' : '"$1" කියවීමට නොහැක.', 'errWrite' : '"$1" තුල ලිවීමට නොහැකිය.', 'errPerm' : 'අවසරය නොමැත.', 'errLocked' : '"$1" අගුළු දමා ඇති අතර එය නැවත නම් කිරීම, සම්පූර්ණයෙන් විස්ථාපනය කිරීම හෝ ඉවත් කිරීම කළ නොහැක.', 'errExists' : '"$1" නම් ගොනුව දැනටමත් පවතී.', 'errInvName' : 'ගොනු නම වලංගු නොවේ.', 'errInvDirname' : 'ෆෝල්ඩර් නම වලංගු නොවේ.', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : 'ෆෝල්ඩරය හමු නොවිණි.', 'errFileNotFound' : 'ගොනුව හමු නොවිණි.', 'errTrgFolderNotFound' : 'ඉලක්කගත ෆෝල්ඩරය "$1" හමු නොවිනි.', 'errPopup' : 'බ්‍රවුසරය උත්පතන කවුළුව විවෘත කිරීම වළක්වයි. ගොනු විවෘත කිරීම සඳහා බ්‍රවුසරයේ විකල්ප තුළ එය සක්රිය කරන්න.', 'errMkdir' : '"$1" ෆෝල්ඩරය සෑදීමට නොහැකිය.', 'errMkfile' : '"$1" ගොනුව සෑදිය නොහැක.', 'errRename' : '"$1" නැවත නම් කිරීමට නොහැකි විය.', 'errCopyFrom' : '"$1" volume යෙන් ගොනු පිටපත් කිරීම තහනම්ය.', 'errCopyTo' : '"$1" volume යට ගොනු පිටපත් කිරීම තහනම්ය.', 'errMkOutLink' : 'volume root යෙන් පිටතට සබැඳිය(link) නිර්මාණය කිරීමට නොහැකි විය.', // from v2.1 added 03.10.2015 'errUpload' : 'උඩුගත(upload) කිරීමේ දෝෂයකි.', // old name - errUploadCommon 'errUploadFile' : '"$1" උඩුගත(upload) කිරීමට නොහැකි විය.', // old name - errUpload 'errUploadNoFiles' : 'උඩුගත(upload) කිරීම සඳහා ගොනු කිසිවක් සොයාගත නොහැකි විය.', 'errUploadTotalSize' : 'දත්ත අවසර දී අැති උපරිම ප්‍රමාණය ඉක්මවා ඇත.', // old name - errMaxSize 'errUploadFileSize' : 'ගොනු අවසර දී අැති උපරිම ප්‍රමාණය ඉක්මවා ඇත.', // old name - errFileMaxSize 'errUploadMime' : 'ගොනු වර්ගයට අවසර නැත.', 'errUploadTransfer' : '"$1" ව මාරු කිරීමේ දෝෂයකි.', 'errUploadTemp' : 'upload කිරීම සඳහා තාවකාලික ගොනුව සෑදිය නොහැක.', // from v2.1 added 26.09.2015 'errNotReplace' : '"$1" අායිත්තම(object) දැනටමත් මෙම ස්ථානයේ පවතී, වෙනත් වර්ගයකිනි ප්‍රතිස්ථාපනය කළ නොහැක.', // new 'errReplace' : '"$1" ප්‍රතිස්ථාපනය කළ නොහැක.', 'errSave' : '"$1" සුරැකීමට නොහැක.', 'errCopy' : '"$1" පිටපත් කිරීමට නොහැක.', 'errMove' : '"$1" සම්පූර්ණයෙන් විස්ථාපනය කිරීමට නොහැක.', 'errCopyInItself' : '"$1" තුලට පිටපත් කිරීමට නොහැක.', 'errRm' : '"$1" ඉවත් කිරීමට නොහැකි විය.', 'errTrash' : 'කුණු-කූඩය තුලට දැමීමට නොහැක.', // from v2.1.24 added 30.4.2017 'errRmSrc' : 'මූලාශ්‍රය ගොනු(ව) ඉවත් කළ නොහැක.', 'errExtract' : '"$1" වෙතින් ගොනු දිග හැරීමට නොහැක.', 'errArchive' : 'සංරක්ෂිතය සෑදීමට නොහැකි විය.', 'errArcType' : 'නොගැලපෙන සංරක්ෂණ වර්ගයකි.', 'errNoArchive' : 'ගොනුව නොගැලපෙන සංරක්ෂණ වර්ගයක් හෝ සංරක්ෂිතයක් නොවේ.', 'errCmdNoSupport' : 'පසුබිම(Backend) මෙම විධානය නොදනී.', 'errReplByChild' : '"$1" ෆෝල්ඩරය එහිම අඩංගු අයිතමයක් මගින් ප්‍රතිස්ථාපනය කළ නොහැක.', 'errArcSymlinks' : 'ආරක්ෂිත හේතුව නිසා අනුමත නොකෙරෙන සබැඳි සම්බන්දතා හෝ ලිපිගොනු නම් අඩංගු බැවින් සංරක්ෂිතය දිග හැරීම කිරීමට ඉඩ නොදෙන.', // edited 24.06.2012 'errArcMaxSize' : 'සංරක්ෂිතය ලිපිගොනු උපරිම ප්‍රමාණය ඉක්මවා ඇත.', 'errResize' : 'ප්‍රතිප්‍රමාණය කිරීමට නොහැකි විය.', 'errResizeDegree' : 'වලංගු නොවන භ්‍රමණ කෝණයකි.', // added 7.3.2013 'errResizeRotate' : 'රූපය භ්‍රමණය කිරීමට නොහැකි විය.', // added 7.3.2013 'errResizeSize' : 'රූපයේ ප්‍රමාණය වලංගු නොවේ.', // added 7.3.2013 'errResizeNoChange' : 'රූපයේ ප්‍රමාණය වෙනස් නොවුණි.', // added 7.3.2013 'errUsupportType' : 'නොගැලපෙන ගොනු වර්ගයකි.', 'errNotUTF8Content' : '"$1" ගොනුව UTF-8 හි නොමැති අතර සංස්කරණය කළ නොහැක.', // added 9.11.2011 'errNetMount' : '"$1" සවි(mount) කිරීමට නොහැක.', // added 17.04.2012 'errNetMountNoDriver' : 'ප්‍රොටොකෝලය(protocol) නොගැලපේ.', // added 17.04.2012 'errNetMountFailed' : 'සවි කිරීම(mount කිරීම) අසාර්ථක විය.', // added 17.04.2012 'errNetMountHostReq' : 'ධාරකය(Host) අවශ්‍ය වේ.', // added 18.04.2012 'errSessionExpires' : 'ඔබේ අක්‍රියතාව හේතුවෙන් සැසිය(session) කල් ඉකුත් වී ඇත.', 'errCreatingTempDir' : 'තාවකාලික ඩිරෙක්ටරයක්(directory) ​​සෑදිය නොහැක: "$1"', 'errFtpDownloadFile' : 'FTP වලින් ගොනුව බාගත(download) කිරීමට නොහැකි විය: "$1"', 'errFtpUploadFile' : 'ගොනුව FTP වෙත උඩුගත(upload) කිරීමට නොහැකි විය: "$1"', 'errFtpMkdir' : 'FTP මත දුරස්ථ නාමාවලියක්(remote directory) නිර්මාණය කිරීමට නොහැකි විය: "$1"', 'errArchiveExec' : 'ගොනු සංරක්ෂණය(archiving) කිරීමේදී දෝෂයක් ඇතිවිය: "$1"', 'errExtractExec' : 'ගොනු දිගහැරීමේදී(extracting) දෝෂයක් ඇතිවිය: "$1"', 'errNetUnMount' : 'විසන්ධි කිරීමට(unmount) නොහැක.', // from v2.1 added 30.04.2012 'errConvUTF8' : 'UTF-8 වෙත පරිවර්තනය කළ නොහැක.', // from v2.1 added 08.04.2014 'errFolderUpload' : 'ඔබ ෆෝල්ඩරය උඩුගත(upload) කිරීමට කැමති නම් නවීන බ්‍රවුසරයකින් උත්සාහ කරන්න.', // from v2.1 added 26.6.2015 'errSearchTimeout' : '"$1" සෙවීම කල් ඉකුත්වී ඇත. සෙවුම් ප්‍රතිඵල අර්ධ වශයෙන් දිස්වේ.', // from v2.1 added 12.1.2016 'errReauthRequire' : 'නැවත බලය(Re-authorization) ලබා දීම අවශ්‍ය වේ.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'තෝරා ගත හැකි උපරිම අයිතම සංඛ්‍යාව $1 ක් වේ.', // from v2.1.17 added 17.10.2016 'errRestore' : 'කුණු කූඩයෙන් නැවත ලබා ගත නොහැක. යළි පිහිටුවීමේ ගමනාන්තය(restore destination) හඳුනාගත නොහැක.', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'මෙම ගොනු වර්ගයේ සංස්කාරකය හමු නොවිණි.', // from v2.1.25 added 23.5.2017 'errServerError' : 'සේවාදායකයේ පැත්තෙන්(server side) දෝශයක් ඇතිවිය.', // from v2.1.25 added 16.6.2017 'errEmpty' : '"$1" ෆෝල්ඩරය හිස් කිරීමට නොහැක.', // from v2.1.25 added 22.6.2017 /******************************* commands names ********************************/ 'cmdarchive' : 'සංරක්ෂිතය(archive) නිර්මාණය කරන්න', 'cmdback' : 'ආපසු', 'cmdcopy' : 'පිටපත් කරන්න', 'cmdcut' : 'මුළුමනින්ම පිටපත් කරන්න(Cut)', 'cmddownload' : 'බාගත කරන්න(Download)', 'cmdduplicate' : 'අනුපිටපත් කරන්න(Duplicate)', 'cmdedit' : 'ගොනුව සංස්කරණය කරන්න', 'cmdextract' : 'සංරක්ෂිතයේ ගොනු දිගහරින්න(Extract)', 'cmdforward' : 'ඉදිරියට', 'cmdgetfile' : 'ගොනු තෝරන්න', 'cmdhelp' : 'මෙම මෘදුකාංගය පිළිබඳව', 'cmdhome' : 'නිවහන(Home)', 'cmdinfo' : 'තොරතුරු ලබාගන්න', 'cmdmkdir' : 'අළුත් ෆෝල්ඩරයක්', 'cmdmkdirin' : 'අළුත් ෆෝල්ඩරයක් තුළට', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'නව ගොනුවක්', 'cmdopen' : 'විවෘත කරන්න', 'cmdpaste' : 'දමන්න(Paste)', 'cmdquicklook' : 'පූර්ව දර්ශනයක්(Preview)', 'cmdreload' : 'නැවත අළුත් කරන්න(Reload)', 'cmdrename' : 'නම වෙනස් කරන්න', 'cmdrm' : 'මකන්න', 'cmdtrash' : 'කුණු කූඩයට දමන්න', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'යළි පිහිටුවන්න(Restore)', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'ගොනු සොයන්න', 'cmdup' : 'ප්‍ර්‍රධාන නාමාවලිය(parent directory) වෙත යන්න', 'cmdupload' : 'ගොනු උඩුගත(Upload) කරන්න', 'cmdview' : 'දර්ශනය(View)', 'cmdresize' : 'ප්‍රථිප්‍රමාණය සහ භ්‍රමණය', 'cmdsort' : 'වර්ගීකරණය කරන්න', 'cmdnetmount' : 'ජාල එ්කකයක් සවි කරන්න(Mount network volume)', // added 18.04.2012 'cmdnetunmount': 'ගලවන්න(Unmount)', // from v2.1 added 30.04.2012 'cmdplaces' : 'පහසු ස්ථානයට(To Places)', // added 28.12.2014 'cmdchmod' : 'ක්‍රමය වෙනස් කරන්න', // from v2.1 added 20.6.2015 'cmdopendir' : 'ෆෝල්ඩරය විවෘත කරන්න', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'නැවත තීරු පළල පිහිටුවන්න', // from v2.1.13 added 12.06.2016 'cmdfullscreen': 'පුළුල් තිරය', // from v2.1.15 added 03.08.2016 'cmdmove' : 'මාරු කරන්න(Move)', // from v2.1.15 added 21.08.2016 'cmdempty' : 'ෆෝල්ඩරය හිස් කරන්න', // from v2.1.25 added 22.06.2017 'cmdundo' : 'නිෂ්ප්‍රභ කරන්න', // from v2.1.27 added 31.07.2017 'cmdredo' : 'නැවත කරන්න', // from v2.1.27 added 31.07.2017 'cmdpreference': 'අභිමතයන් (Preferences)', // from v2.1.27 added 03.08.2017 'cmdselectall' : 'සියල්ල තෝරන්න', // from v2.1.28 added 15.08.2017 'cmdselectnone': 'කිසිවක් තෝරන්න එපා', // from v2.1.28 added 15.08.2017 'cmdselectinvert': 'විරුද්ධ අාකාරයට තෝරන්න', // from v2.1.28 added 15.08.2017 /*********************************** buttons ***********************************/ 'btnClose' : 'වසන්න', 'btnSave' : 'සුරකින්න', 'btnRm' : 'ඉවත් කරන්න', 'btnApply' : 'යොදන්න(Apply)', 'btnCancel' : 'අවලංගු කරන්න', 'btnNo' : 'නැත', 'btnYes' : 'ඔව්', 'btnMount' : 'සවිකිරීම(Mount)', // added 18.04.2012 'btnApprove': 'කරුණාකර $1 අනුමත කරන්න', // from v2.1 added 26.04.2012 'btnUnmount': 'ගලවන්න(Unmount)', // from v2.1 added 30.04.2012 'btnConv' : 'පරිවර්තනය කරන්න', // from v2.1 added 08.04.2014 'btnCwd' : 'මෙතන', // from v2.1 added 22.5.2015 'btnVolume' : 'එ්කකය(Volume)', // from v2.1 added 22.5.2015 'btnAll' : 'සියල්ල', // from v2.1 added 22.5.2015 'btnMime' : 'MIME වර්ගය', // from v2.1 added 22.5.2015 'btnFileName':'ගොනුවේ නම', // from v2.1 added 22.5.2015 'btnSaveClose': 'සුරකින්න සහ වසන්න', // from v2.1 added 12.6.2015 'btnBackup' : 'උපස්ථ(Backup) කරන්න', // fromv2.1 added 28.11.2015 'btnRename' : 'නම වෙනස් කරන්න', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'නම වෙනස් කරන්න(සියල්ල)', // from v2.1.24 added 6.4.2017 'btnPrevious' : 'පෙර ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : 'ඊළඟ ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : 'වෙනත් නමකින් සුරකිමින්(Save As)', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'ෆෝල්ඩරය විවෘත කරමින්', 'ntffile' : 'ගොනුව විවෘත කරමින්', 'ntfreload' : 'ෆෝල්ඩර් අන්තර්ගතය නැවත අළුත් කරමින්(Reloading)', 'ntfmkdir' : 'ෆෝල්ඩරයක් නිර්මාණය කරමින්', 'ntfmkfile' : 'ගොනුව නිර්මාණය කරමින්', 'ntfrm' : 'අයිතමයන් මකමින්', 'ntfcopy' : 'අයිතමයන් පිටපත් කරමින්', 'ntfmove' : 'අයිතමයන් සම්පූර්ණයෙන් විස්ථාපනය කරමින්', 'ntfprepare' : 'පවතින අයිතම පිරික්සමින්', 'ntfrename' : 'ගොනු නැවත නම් කරමින්', 'ntfupload' : 'ගොනු උඩුගත(uploading) කරමින්', 'ntfdownload' : 'ගොනු බාගත(downloading) කරමින්', 'ntfsave' : 'ගොනු සුරකිමින්', 'ntfarchive' : 'සංරක්ෂණය(archive) සාදමින්', 'ntfextract' : 'සංරක්ෂණයෙන්(archive) ගොනු දිගහරිමින්(Extracting)', 'ntfsearch' : 'ගොනු සොයමින්', 'ntfresize' : 'රූප ප්‍රමාණය වෙනස් කරමින්', 'ntfsmth' : 'දෙයක් කරමින්', 'ntfloadimg' : 'පින්තූරය පූරණය කරමින්(Loading)', 'ntfnetmount' : 'ජාල එ්කකයක් සවිකරමින්(Mounting network volume)', // added 18.04.2012 'ntfnetunmount': 'ජාල එ්කකයක් ගලවමින්(Unmounting network volume)', // from v2.1 added 30.04.2012 'ntfdim' : 'පිංතූරයේ මානය(dimension) ලබාගනිමින්', // added 20.05.2013 'ntfreaddir' : 'ෆෝල්ඩරයේ තොරතුරු කියවමින්', // from v2.1 added 01.07.2013 'ntfurl' : 'Getting URL of link', // from v2.1 added 11.03.2014 'ntfchmod' : 'ගොනු ආකරය වෙනස් කරමින්', // from v2.1 added 20.6.2015 'ntfpreupload': 'උඩුගත(upload) කරන ලද ගොනු නාමය සත්‍යාපනය කරමින්(Verifying)', // from v2.1 added 31.11.2015 'ntfzipdl' : 'බාගත කරගැනීම(download) සඳහා ගොනුවක් නිර්මාණය කරමින්', // from v2.1.7 added 23.1.2016 'ntfparents' : 'මාර්ග(path) තොරතුරු ලබා ගනිමින්', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'උඩුගත කරන ලද(uploaded) ගොනුව සකසමින්', // from v2.1.17 added 2.11.2016 'ntftrash' : 'කුණු කූඩයට දමමින්', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'කුණු කූඩයට දැමීම යළි පිහිටුවමින්(Doing restore)', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'ගමනාන්ත(destination) ෆෝල්ඩරය පරීක්ෂා කරමින්', // from v2.1.24 added 3.5.2017 'ntfundo' : 'පෙර මෙහෙයුම(operation) ඉවත් කරමින්', // from v2.1.27 added 31.07.2017 'ntfredo' : 'පෙර ආපසු හැරවීම යළි සැකසමින්', // from v2.1.27 added 31.07.2017 /*********************************** volumes *********************************/ 'volume_Trash' : 'කුණු කූඩය', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : 'නොදනී', 'Today' : 'අද', 'Yesterday' : 'ඊයේ', 'msJan' : 'ජනවා.', 'msFeb' : 'පෙබ.', 'msMar' : 'මාර්.', 'msApr' : 'අප්‍රේ.', 'msMay' : 'මැයි', 'msJun' : 'ජූනි', 'msJul' : 'ජුලි', 'msAug' : 'අගෝ.', 'msSep' : 'සැප්.', 'msOct' : 'ඔක්තෝ.', 'msNov' : 'නොවැ.', 'msDec' : 'දෙසැ.', 'January' : 'ජනවාරි', 'February' : 'පෙබරවාරි', 'March' : 'මාර්තු', 'April' : 'අප්‍රේල්', 'May' : 'මැයි', 'June' : 'ජූනි', 'July' : 'ජුලි', 'August' : 'අගෝස්තු', 'September' : 'සැප්තැම්බර්', 'October' : 'ඔක්තෝම්බර්', 'November' : 'නොවැම්බර්', 'December' : 'දෙසැම්බර්', 'Sunday' : 'ඉරිදා', 'Monday' : 'සඳුදා', 'Tuesday' : 'අඟහරුවාදා', 'Wednesday' : 'බදාදා', 'Thursday' : 'බ්‍රහස්පතින්දා', 'Friday' : 'සිකුරාදා', 'Saturday' : 'සෙනසුරාදා', 'Sun' : 'ඉරිදා', 'Mon' : 'සඳු.', 'Tue' : 'අඟහ.', 'Wed' : 'බදාදා', 'Thu' : 'බ්‍රහස්.', 'Fri' : 'සිකු.', 'Sat' : 'සෙන.', /******************************** sort variants ********************************/ 'sortname' : 'නම අනුව', 'sortkind' : 'වර්ගය අනුව', 'sortsize' : 'ප්‍රමාණය අනුව', 'sortdate' : 'දිනය අනුව', 'sortFoldersFirst' : 'ෆෝල්ඩර වලට පළමු තැන', 'sortperm' : 'අවසරය අනුව', // from v2.1.13 added 13.06.2016 'sortmode' : 'අාකාරය අනුව', // from v2.1.13 added 13.06.2016 'sortowner' : 'හිමිකරු අනුව', // from v2.1.13 added 13.06.2016 'sortgroup' : 'කණ්ඩායම අනුව', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'එලෙසටම රුක්සටහනත්(Treeview)', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : 'NewFile.txt', // added 10.11.2015 'untitled folder' : 'නව ෆෝල්ඩරයක්', // added 10.11.2015 'Archive' : 'NewArchive', // from v2.1 added 10.11.2015 /********************************** messages **********************************/ 'confirmReq' : 'තහවුරු කිරීම අවශ්‍යයි', 'confirmRm' : 'අයිතමයන් සදහටම ඉවත් කිරීමට අවශ්‍ය බව ඔබට විශ්වාසද?
                මෙය අාපසු හැරවිය නොහැකිය!', 'confirmRepl' : 'පැරණි අයිතමය නව එකක මගින් ප්‍රතිස්ථාපනය කරන්නද?', 'confirmRest' : 'දැනට පවතින අයිතමය කුණු කූඩය තුළ පවතින අයිතමය මගින් ප්‍රතිස්ථාපනය කරන්නද?', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'UTF-8 හි නොවේ
                UTF-8 වෙත පරිවර්තනය කරන්න ද?
                සුරැකීමෙන් පසු අන්තර්ගතය UTF-8 බවට පරිවර්තනය වේ.', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'මෙම ගොනුවෙහි කේතන කේත(Character encoding) හඳුනාගත නොහැකි විය. සංස්කරණ කිරීමට එය තාවකාලිකව UTF-8 වෙත පරිවර්තනය කිරීම අවශ්‍ය වේ.
                කරුණාකර මෙම ගොනුවෙහි අක්ෂර කේතන කේත(character encoding) තෝරන්න.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : 'මෙය වෙනස් කර ඇත.
                ඔබට වෙනස්කම් සුරැකීමට නොහැකි නම් සිදු කරනු ලැබූ වෙනස්කම් අහිමි වේ.', // from v2.1 added 15.7.2015 'confirmTrash' : 'කුණු කූඩය තුලට අයිතමය යැවීමට ඔබට අවශ්‍ය ද?', //from v2.1.24 added 29.4.2017 'apllyAll' : 'සියල්ලටම යොදන්න', 'name' : 'නම', 'size' : 'ප්‍රමාණය', 'perms' : 'අවසරය', 'modify' : 'නවීකරණය කෙරුණ ලද්දේ', 'kind' : 'ජාතිය', 'read' : 'කියවන්න', 'write' : 'ලියන්න', 'noaccess' : 'ප්‍රවේශයක් නොමැත', 'and' : 'සහ', 'unknown' : 'නොහඳුනයි', 'selectall' : 'සියලු ගොනු තෝරන්න', 'selectfiles' : 'ගොනු(ව) තෝරන්න', 'selectffile' : 'පළමු ගොනුව තෝරන්න', 'selectlfile' : 'අවසාන ගොනුව තෝරන්න', 'viewlist' : 'ලැයිස්තු අාකාරය', 'viewicons' : 'අයිකන අාකාරය', 'places' : 'Places', 'calc' : 'ගණනය කරන්න', 'path' : 'මාර්ගය', 'aliasfor' : 'Alias for', 'locked' : 'අගුළු දමා ඇත', 'dim' : 'මාන(Dimensions)', 'files' : 'ගොනු', 'folders' : 'ෆෝල්ඩර', 'items' : 'අයිතම(Items)', 'yes' : 'ඔව්', 'no' : 'නැත', 'link' : 'සබැඳිය(Link)', 'searcresult' : 'සෙවුම් ප්‍රතිඵල', 'selected' : 'තෝරාගත් අයිතම', 'about' : 'මේ ගැන', 'shortcuts' : 'කෙටිමං', 'help' : 'උදව්', 'webfm' : 'වෙබ් ගොනු කළමනාකරු', 'ver' : 'අනුවාදය(version)', 'protocolver' : 'ප්‍රොටොකෝලය අනුවාදය(protocol version)', 'homepage' : 'ව්‍යාපෘතිය නිවහන', 'docs' : 'ලේඛනගත කිරීම', 'github' : 'Github හරහා සංවාදයේ යෙදෙන්න', 'twitter' : 'Twitter හරහා අපව සම්බන්ධ වන්න', 'facebook' : 'Facebook හරහා අප සමඟ එකතු වන්න', 'team' : 'කණ්ඩායම', 'chiefdev' : 'ප්‍රධාන සංස්කරු(chief developer)', 'developer' : 'සංස්කරු(developer)', 'contributor' : 'දායකයා(contributor)', 'maintainer' : 'නඩත්තු කරන්නා(maintainer)', 'translator' : 'පරිවර්තකයා', 'icons' : 'අයිකන', 'dontforget' : 'and don\'t forget to take your towel', 'shortcutsof' : 'කෙටිමං අක්‍රීය කර ඇත', 'dropFiles' : 'ගොනු මෙතැනට ඇද දමන්න', 'or' : 'හෝ', 'selectForUpload' : 'ගොනු තෝරන්න', 'moveFiles' : 'අායිත්තම සම්පූර්ණයෙන් විස්ථාපනය', 'copyFiles' : 'අයිතමයන් පිටපත් කරන්න', 'restoreFiles' : 'Restore items', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'Remove from places', 'aspectRatio' : 'දර්ශන අනුපාතය(Aspect ratio)', 'scale' : 'පරිමාණය', 'width' : 'පළල', 'height' : 'උස', 'resize' : 'ප්‍රතිප්‍රමානණය', 'crop' : 'Crop', 'rotate' : 'කැරකැවීම', 'rotate-cw' : 'අංශක 90කින් කරකවන්න CW', 'rotate-ccw' : 'අංශක 90කින් කරකවන්න CCW', 'degree' : '°', 'netMountDialogTitle' : 'Mount network volume', // added 18.04.2012 'protocol' : 'Protocol', // added 18.04.2012 'host' : 'Host', // added 18.04.2012 'port' : 'Port', // added 18.04.2012 'user' : 'පරිශීලක', // added 18.04.2012 'pass' : 'මුරපදය', // added 18.04.2012 'confirmUnmount' : 'Are you unmount $1?', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'Drop or Paste files from browser', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'Drop files, Paste URLs or images(clipboard) here', // from v2.1 added 07.04.2014 'encoding' : 'කේතීකරණය(Encoding)', // from v2.1 added 19.12.2014 'locale' : 'Locale', // from v2.1 added 19.12.2014 'searchTarget' : 'ඉලක්කය: $1', // from v2.1 added 22.5.2015 'searchMime' : 'Search by input MIME Type', // from v2.1 added 22.5.2015 'owner' : 'හිමිකරු', // from v2.1 added 20.6.2015 'group' : 'සමූහය', // from v2.1 added 20.6.2015 'other' : 'වෙනත්', // from v2.1 added 20.6.2015 'execute' : 'ක්‍රයාත්මක කරන්න', // from v2.1 added 20.6.2015 'perm' : 'අවසරය', // from v2.1 added 20.6.2015 'mode' : 'Mode', // from v2.1 added 20.6.2015 'emptyFolder' : 'ෆෝල්ඩරය හිස්', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'ෆාේල්ඩරය හිස්\\A අායිත්තම අතහැරීමෙන් අැතුලු කරන්න', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'ෆාේල්ඩරය හිස්\\A දිර්ඝ එබීමෙන් අායිත්තම අැතුලු කරන්න', // from v2.1.6 added 30.12.2015 'quality' : 'ගුණාත්මකභාවය', // from v2.1.6 added 5.1.2016 'autoSync' : 'Auto sync', // from v2.1.6 added 10.1.2016 'moveUp' : 'Move up', // from v2.1.6 added 18.1.2016 'getLink' : 'Get URL link', // from v2.1.7 added 9.2.2016 'selectedItems' : 'තෝරාගත් අයිතම ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'Folder ID', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'Allow offline access', // from v2.1.10 added 3.25.2016 'reAuth' : 'To re-authenticate', // from v2.1.10 added 3.25.2016 'nowLoading' : 'Now loading...', // from v2.1.12 added 4.26.2016 'openMulti' : 'බහු ගොනු විවෘත කරන්න', // from v2.1.12 added 5.14.2016 'openMultiConfirm': 'ඔබ $1 ගොනු විවෘත කිරීමට උත්සාහ කරයි. බ්‍රව්සරයෙන් ඔබට විවෘත කිරීමට අවශ්‍ය බව ඔබට විශ්වාසද?', // from v2.1.12 added 5.14.2016 'emptySearch' : 'සෙවුම් ඉලක්කයේ ගවේෂණ ප්‍රතිඵල නොමැත.', // from v2.1.12 added 5.16.2016 'editingFile' : 'එය ගොනුව සංස්කරණය කිරීමකි.', // from v2.1.13 added 6.3.2016 'hasSelected' : 'ඔබ අයිතම $1 ප්‍රමාණයක් තෝරාගෙන ඇත.', // from v2.1.13 added 6.3.2016 'hasClipboard' : 'You have $1 items in the clipboard.', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'Incremental search is only from the current view.', // from v2.1.13 added 6.30.2016 'reinstate' : 'යථා තත්ත්වයට පත් කරන්න', // from v2.1.15 added 3.8.2016 'complete' : '$1 සම්පූර්ණයි', // from v2.1.15 added 21.8.2016 'contextmenu' : 'Context menu', // from v2.1.15 added 9.9.2016 'pageTurning' : 'Page turning', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'Volume roots', // from v2.1.16 added 16.9.2016 'reset' : 'යළි පිහිටුවන්න(Reset)', // from v2.1.16 added 1.10.2016 'bgcolor' : 'පසුබිම් වර්ණය', // from v2.1.16 added 1.10.2016 'colorPicker' : 'Color picker', // from v2.1.16 added 1.10.2016 '8pxgrid' : 'පික්සල් 8ක දැල', // from v2.1.16 added 4.10.2016 'enabled' : 'සක්‍රීයයි', // from v2.1.16 added 4.10.2016 'disabled' : 'අක්‍රීයයි', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'වර්තමාන දර්ශනය තුළ සෙවුම් ප්‍රතිපල හිස්ව ඇත. \\A සෙවුම් ඉලක්කය පුළුල් කිරීම සඳහා [Enter] යතුර ඔබන්න.', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'වර්තමාන දර්ශනයේ පළමු අකුර සෙවුම් ප්‍රතිපල හිස්ව පවතී.', // from v2.1.23 added 24.3.2017 'textLabel' : 'ලේබල්වල නම්', // from v2.1.17 added 13.10.2016 'minsLeft' : 'විනාඩි $1 ක් ගතවේ', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'Reopen with selected encoding', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'Save with the selected encoding', // from v2.1.19 added 2.12.2016 'selectFolder' : 'ෆෝල්ඩරය තෝරන්න', // from v2.1.20 added 13.12.2016 'firstLetterSearch': 'පළමු අකුරෙන් සෙවීම', // from v2.1.23 added 24.3.2017 'presets' : 'Presets', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : 'It\'s too many items so it can\'t into trash.', // from v2.1.25 added 9.6.2017 'TextArea' : 'TextArea', // from v2.1.25 added 14.6.2017 'folderToEmpty' : 'Empty the folder "$1".', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : 'There are no items in a folder "$1".', // from v2.1.25 added 22.6.2017 'preference' : 'Preference', // from v2.1.26 added 28.6.2017 'language' : 'Language setting', // from v2.1.26 added 28.6.2017 'clearBrowserData': 'Initialize the settings saved in this browser', // from v2.1.26 added 28.6.2017 'toolbarPref' : 'Toolbar setting', // from v2.1.27 added 2.8.2017 'charsLeft' : '... $1 ක් අකුරු ඉතිරිව පවතී', // from v2.1.29 added 30.8.2017 'sum' : 'එකතුව', // from v2.1.29 added 28.9.2017 'roughFileSize' : 'Rough file size', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : 'Focus on the element of dialog with mouseover', // from v2.1.30 added 2.11.2017 'select' : 'තෝරන්න', // from v2.1.30 added 23.11.2017 'selectAction' : 'ගොනුවක් තේරූ විට සිදුකල යුතු දේ', // from v2.1.30 added 23.11.2017 'useStoredEditor' : 'Open with the editor used last time', // from v2.1.30 added 23.11.2017 'selectinvert' : 'ප්‍රතිවිරුද්ධ අාකාරයට තෝරන්න', // from v2.1.30 added 25.11.2017 'renameMultiple' : 'Are you sure you want to rename $1 selected items like $2?
                This cannot be undone!', // from v2.1.31 added 4.12.2017 'batchRename' : 'Batch rename', // from v2.1.31 added 8.12.2017 'plusNumber' : '+ Number', // from v2.1.31 added 8.12.2017 'asPrefix' : 'Add prefix', // from v2.1.31 added 8.12.2017 'asSuffix' : 'Add suffix', // from v2.1.31 added 8.12.2017 'changeExtention' : 'Change extention', // from v2.1.31 added 8.12.2017 'columnPref' : 'Columns settings (List view)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : 'All changes will reflect immediately to the archive.', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : 'Any changes will not reflect until un-mount this volume.', // from v2.1.33 added 2.3.2018 'unmountChildren' : 'The following volume(s) mounted on this volume also unmounted. Are you sure to unmount it?', // from v2.1.33 added 5.3.2018 'selectionInfo' : 'තෝරාගැනීම්වල තොරතුරු', // from v2.1.33 added 7.3.2018 'hashChecker' : 'Algorithms to show the file hash', // from v2.1.33 added 10.3.2018 /********************************** mimetypes **********************************/ 'kindUnknown' : 'නොදන්නා', 'kindRoot' : 'Volume Root', // from v2.1.16 added 16.10.2016 'kindFolder' : 'ෆෝල්ඩරය', 'kindSelects' : 'තේරීම්', // from v2.1.29 added 29.8.2017 'kindAlias' : 'Alias', 'kindAliasBroken' : 'Broken alias', // applications 'kindApp' : 'Application', 'kindPostscript' : 'Postscript ලේඛනය', 'kindMsOffice' : 'Microsoft Office ලේඛනය', 'kindMsWord' : 'Microsoft Word ලේඛනය', 'kindMsExcel' : 'Microsoft Excel ලේඛනය', 'kindMsPP' : 'Microsoft Powerpoint presentation', 'kindOO' : 'Open Office ලේඛනය', 'kindAppFlash' : 'Flash application', 'kindPDF' : 'Portable Document Format (PDF)', 'kindTorrent' : 'Bittorrent file', 'kind7z' : '7z archive', 'kindTAR' : 'TAR archive', 'kindGZIP' : 'GZIP archive', 'kindBZIP' : 'BZIP archive', 'kindXZ' : 'XZ archive', 'kindZIP' : 'ZIP archive', 'kindRAR' : 'RAR archive', 'kindJAR' : 'Java JAR file', 'kindTTF' : 'True Type font', 'kindOTF' : 'Open Type font', 'kindRPM' : 'RPM package', // texts 'kindText' : 'Text ලේඛනය', 'kindTextPlain' : 'Plain text', 'kindPHP' : 'PHP මූලාශ්‍රය', 'kindCSS' : 'Cascading style sheet', 'kindHTML' : 'HTML ලේඛනය', 'kindJS' : 'Javascript මූලාශ්‍රය', 'kindRTF' : 'Rich Text Format', 'kindC' : 'C මූලාශ්‍රය', 'kindCHeader' : 'C header මූලාශ්‍රය', 'kindCPP' : 'C++ මූලාශ්‍රය', 'kindCPPHeader' : 'C++ header මූලාශ්‍රය', 'kindShell' : 'Unix shell රචනයකි', 'kindPython' : 'Python මූලාශ්‍රය', 'kindJava' : 'Java මූලාශ්‍රය', 'kindRuby' : 'Ruby මූලාශ්‍රය', 'kindPerl' : 'Perl රචනයකි', 'kindSQL' : 'SQL මූලාශ්‍රය', 'kindXML' : 'XML ලේඛනය', 'kindAWK' : 'AWK මූලාශ්‍රය', 'kindCSV' : 'කොමාවන් වෙන් කළ අගයන්', 'kindDOCBOOK' : 'Docbook XML ලේඛනය', 'kindMarkdown' : 'Markdown text', // added 20.7.2015 // images 'kindImage' : 'පින්තූරය', 'kindBMP' : 'BMP පින්තූරය', 'kindJPEG' : 'JPEG පින්තූරය', 'kindGIF' : 'GIF පින්තූරය', 'kindPNG' : 'PNG පින්තූරය', 'kindTIFF' : 'TIFF පින්තූරය', 'kindTGA' : 'TGA පින්තූරය', 'kindPSD' : 'Adobe Photoshop පින්තූරය', 'kindXBITMAP' : 'X bitmap පින්තූරය', 'kindPXM' : 'Pixelmator පින්තූරය', // media 'kindAudio' : 'ශබ්ධ මාධ්‍ය', 'kindAudioMPEG' : 'MPEG ශබ්ධපටය', 'kindAudioMPEG4' : 'MPEG-4 ශබ්ධපටය', 'kindAudioMIDI' : 'MIDI ශබ්ධපටය', 'kindAudioOGG' : 'Ogg Vorbis ශබ්ධපටය', 'kindAudioWAV' : 'WAV ශබ්ධපටය', 'AudioPlaylist' : 'MP3 playlist', 'kindVideo' : 'Video මාධ්‍ය', 'kindVideoDV' : 'DV චිත්‍රපටය', 'kindVideoMPEG' : 'MPEG චිත්‍රපටය', 'kindVideoMPEG4' : 'MPEG-4 චිත්‍රපටය', 'kindVideoAVI' : 'AVI චිත්‍රපටය', 'kindVideoMOV' : 'Quick Time චිත්‍රපටය', 'kindVideoWM' : 'Windows Media චිත්‍රපටය', 'kindVideoFlash' : 'Flash චිත්‍රපටය', 'kindVideoMKV' : 'Matroska චිත්‍රපටය', 'kindVideoOGG' : 'Ogg චිත්‍රපටය' } }; })); plugins/file-manager-advanced/application/library/js/i18n/elfinder.sk.js000064400000104305147176754550022253 0ustar00/** * Slovak translation * @author RobiNN * @author Jakub Ďuraš * @version 2021-06-10 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.sk = { translator : 'RobiNN <robo@kelcak.com>, Jakub Ďuraš <jkblmr@gmail.com>', language : 'Slovenčina', direction : 'ltr', dateFormat : 'd.m.Y H:i', // will show like: 10.06.2021 23:35 fancyDateFormat : '$1 H:i', // will show like: Dnes 23:35 nonameDateFormat : 'ymd-His', // noname upload will show like: 210610-233522 messages : { /********************************** errors **********************************/ 'error' : 'Chyba', 'errUnknown' : 'Neznáma chyba.', 'errUnknownCmd' : 'Neznámy príkaz.', 'errJqui' : 'Nesprávna jQuery UI konfigurácia. Selectable, draggable a droppable musia byť načítané.', 'errNode' : 'elFinder vyžaduje vytvorenie DOM elementu.', 'errURL' : 'Nesprávna elFinder konfigurácia! URL nie je definovaná.', 'errAccess' : 'Prístup zamietnutý.', 'errConnect' : 'Nepodarilo sa pripojiť do backendu.', 'errAbort' : 'Spojenie bolo prerušené.', 'errTimeout' : 'Časový limit vypršal.', 'errNotFound' : 'Backend nenájdený.', 'errResponse' : 'Nesprávna backend odpoveď.', 'errConf' : 'Nesprávna backend konfigurácia.', 'errJSON' : 'PHP JSON modul nie je nainštalovaný.', 'errNoVolumes' : 'Nie sú dostupné žiadne čitateľné média.', 'errCmdParams' : 'Nesprávne parametre pre príkaz "$1".', 'errDataNotJSON' : 'Dáta nie sú formátu JSON.', 'errDataEmpty' : 'Prázdne dáta.', 'errCmdReq' : 'Backend požiadavka požaduje názov príkazu.', 'errOpen' : 'Nie je možné otvoriť "$1".', 'errNotFolder' : 'Objekt nie je priečinok.', 'errNotFile' : 'Objekt nie je súbor.', 'errRead' : 'Nie je možné prečítať "$1".', 'errWrite' : 'Nie je možné písať do "$1".', 'errPerm' : 'Prístup zamietnutý.', 'errLocked' : '"$1" je uzamknutý a nemôže byť premenovaný, presunutý alebo odstránený.', 'errExists' : 'Položka s názvom "$1" už existuje.', 'errInvName' : 'Neplatný názov súboru.', 'errInvDirname' : 'Neplatný názov priečinka.', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : 'Priečinok nebol nájdený.', 'errFileNotFound' : 'Súbor nenájdený.', 'errTrgFolderNotFound' : 'Cieľový priečinok "$1" sa nenašiel.', 'errPopup' : 'Prehliadač zabránil otvoreniu vyskakovacieho okna. Pre otvorenie súboru povoľte vyskakovacie okná.', 'errMkdir' : 'Nepodarilo sa vytvoriť priečinok "$1".', 'errMkfile' : 'Nepodarilo sa vytvoriť súbor "$1".', 'errRename' : 'Nepodarilo sa premenovať "$1".', 'errCopyFrom' : 'Kopírovanie súborov z média "$1" nie je povolené.', 'errCopyTo' : 'Kopírovanie súborov na médium "$1" nie je povolené.', 'errMkOutLink' : 'Nie je možné vytvoriť odkaz mimo koreňového zväzku.', // from v2.1 added 03.10.2015 'errUpload' : 'Chyba pri nahrávaní.', // old name - errUploadCommon 'errUploadFile' : 'Nepodarilo sa nahrať "$1".', // old name - errUpload 'errUploadNoFiles' : 'Neboli nájdené žiadne súbory na nahranie.', 'errUploadTotalSize' : 'Dáta prekračujú maximálnu povolenú veľkosť.', // old name - errMaxSize 'errUploadFileSize' : 'Súbor prekračuje maximálnu povolenú veľkosť.', // old name - errFileMaxSize 'errUploadMime' : 'Nepovolený typ súboru.', 'errUploadTransfer' : 'Problém s nahrávaním "$1".', 'errUploadTemp' : 'Nepodarilo sa vytvoriť dočasný súbor na nahranie.', // from v2.1 added 26.09.2015 'errNotReplace' : 'Objekt "$1" na tomto mieste už existuje a nemôže byť nahradený objektom iného typu.', // new 'errReplace' : 'Nie je možné nahradiť "$1".', 'errSave' : 'Nie je možné uložiť "$1".', 'errCopy' : 'Nie je možné kopírovať "$1".', 'errMove' : 'Nie je možné preniesť "$1".', 'errCopyInItself' : 'Nie je možné kopírovať "$1" do seba.', 'errRm' : 'Nie je možné vymazať "$1".', 'errTrash' : 'Nie je možné presunúť do koša.', // from v2.1.24 added 30.4.2017 'errRmSrc' : 'Nie je možné odstrániť zdrojový/é súbor/y.', 'errExtract' : 'Nie je možné extrahovať súbory z "$1".', 'errArchive' : 'Nie je možné vytvoriť archív.', 'errArcType' : 'Nepodporovaný typ archívu.', 'errNoArchive' : 'Súbor nie je archív alebo má nepodporovaný typ archívu.', 'errCmdNoSupport' : 'Backend nepodporuje tento príkaz.', 'errReplByChild' : 'Priečinok "$1" nemôže byť nahradený položkou, ktorú už obsahuje.', 'errArcSymlinks' : 'Z bezpečnostných dôvodov bolo zakázané extrahovanie archívov obsahujúcich symlinky, alebo súborov s nepovolenými názvami.', // edited 24.06.2012 'errArcMaxSize' : 'Súbory archívu prekračujú maximálnu povolenú veľkosť.', 'errResize' : 'Nie je možné zmeniť veľkosť "$1".', 'errResizeDegree' : 'Neplatný stupeň otočenia.', // added 7.3.2013 'errResizeRotate' : 'Nie je možné otočiť obrázok.', // added 7.3.2013 'errResizeSize' : 'Neplatná veľkosť obrázka.', // added 7.3.2013 'errResizeNoChange' : 'Veľkosť obrázku sa nezmenila.', // added 7.3.2013 'errUsupportType' : 'Nepodporovaný typ súboru.', 'errNotUTF8Content' : 'Súbor "$1" nie je v UTF-8 a nemôže byť upravený.', // added 9.11.2011 'errNetMount' : 'Nie je možné pripojiť "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'Nepodporovaný protokol.', // added 17.04.2012 'errNetMountFailed' : 'Pripájanie zlyhalo.', // added 17.04.2012 'errNetMountHostReq' : 'Hosť je požadovaný.', // added 18.04.2012 'errSessionExpires' : 'Vaša relácia vypršala kvôli nečinnosti.', 'errCreatingTempDir' : 'Nepodarilo sa vytvoriť dočasný adresár: "$1"', 'errFtpDownloadFile' : 'Nie je možné stiahnuť súbor z FTP: "$1"', 'errFtpUploadFile' : 'Nie je možné nahrať súbor na FTP: "$1"', 'errFtpMkdir' : 'Nedá sa vytvoriť vzdialený adresár na FTP: "$1"', 'errArchiveExec' : 'Chyba pri archivácii súborov: "$1"', 'errExtractExec' : 'Chyba pri extrahovaní súborov: "$1"', 'errNetUnMount' : 'Nepodarilo sa odpojiť', // from v2.1 added 30.04.2012 'errConvUTF8' : 'Nie je prevoditeľný na UTF-8', // from v2.1 added 08.04.2014 'errFolderUpload' : 'Vyskúšajte moderný prehliadač, ak chcete nahrať priečinok.', // from v2.1 added 26.6.2015 'errSearchTimeout' : 'Vypršal časový limit pri hľadaní "$1". Výsledok vyhľadávania je čiastočný.', // from v2.1 added 12.1.2016 'errReauthRequire' : 'Opätovné povolenie je potrebné.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'Maximálny počet voliteľných položiek je $1.', // from v2.1.17 added 17.10.2016 'errRestore' : 'Nepodarilo sa obnoviť z koša. Cieľ obnovenia nie je možné identifikovať.', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'Editor tohto typu súboru nebol nájdený.', // from v2.1.25 added 23.5.2017 'errServerError' : 'Vyskytla sa chyba na strane servera.', // from v2.1.25 added 16.6.2017 'errEmpty' : 'Nepodarilo sa vyprázdniť priečinok "$1".', // from v2.1.25 added 22.6.2017 'moreErrors' : 'Existujú ešte ďalšie $1 chyby.', // from v2.1.44 added 9.12.2018 'errMaxMkdirs' : 'Môžete vytvoriť až $1 priečinkov naraz.', // from v2.1.58 added 20.6.2021 /******************************* commands names ********************************/ 'cmdarchive' : 'Vytvoriť archív', 'cmdback' : 'Späť', 'cmdcopy' : 'Kopírovať', 'cmdcut' : 'Vystrihnúť', 'cmddownload' : 'Stiahnuť', 'cmdduplicate' : 'Duplikovať', 'cmdedit' : 'Upraviť súbor', 'cmdextract' : 'Extrahovať súbory z archívu', 'cmdforward' : 'Ďalej', 'cmdgetfile' : 'Vybrať súbory', 'cmdhelp' : 'O tomto softvéri', 'cmdhome' : 'Domov', 'cmdinfo' : 'Info', 'cmdmkdir' : 'Nový priečinok', 'cmdmkdirin' : 'Do novej zložky', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'Nový súbor', 'cmdopen' : 'Otvoriť', 'cmdpaste' : 'Vložiť', 'cmdquicklook' : 'Náhľad', 'cmdreload' : 'Obnoviť', 'cmdrename' : 'Premenovať', 'cmdrm' : 'Vymazať', 'cmdtrash' : 'Do koša', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'Obnoviť', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'Nájsť súbory', 'cmdup' : 'Prejsť do nadradeného priečinka', 'cmdupload' : 'Nahrať súbory', 'cmdview' : 'Pozrieť', 'cmdresize' : 'Zmeniť veľkosť obrázku', 'cmdsort' : 'Zoradiť', 'cmdnetmount' : 'Pripojiť sieťové médium', // added 18.04.2012 'cmdnetunmount': 'Odpojiť', // from v2.1 added 30.04.2012 'cmdplaces' : 'Do umiestnení', // added 28.12.2014 'cmdchmod' : 'Zmeniť režim', // from v2.1 added 20.6.2015 'cmdopendir' : 'Otvoriť priečinok', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'Resetovať šírku stĺpca', // from v2.1.13 added 12.06.2016 'cmdfullscreen': 'Celá obrazovka', // from v2.1.15 added 03.08.2016 'cmdmove' : 'Posúvať', // from v2.1.15 added 21.08.2016 'cmdempty' : 'Vyprázdniť priečinok', // from v2.1.25 added 22.06.2017 'cmdundo' : 'Krok späť', // from v2.1.27 added 31.07.2017 'cmdredo' : 'Vykonať znova', // from v2.1.27 added 31.07.2017 'cmdpreference': 'Preferencie', // from v2.1.27 added 03.08.2017 'cmdselectall' : 'Vybrať všetko', // from v2.1.28 added 15.08.2017 'cmdselectnone': 'Nič nevyberať', // from v2.1.28 added 15.08.2017 'cmdselectinvert': 'Invertovať výber', // from v2.1.28 added 15.08.2017 'cmdopennew' : 'Otvoriť v novom okne', // from v2.1.38 added 3.4.2018 'cmdhide' : 'Skryť (Predvoľba)', // from v2.1.41 added 24.7.2018 /*********************************** buttons ***********************************/ 'btnClose' : 'Zavrieť', 'btnSave' : 'Uložiť', 'btnRm' : 'Vymazať', 'btnApply' : 'Použiť', 'btnCancel' : 'Zrušiť', 'btnNo' : 'Nie', 'btnYes' : 'Áno', 'btnMount' : 'Pripojiť', // added 18.04.2012 'btnApprove': 'Ísť na $1 & schváliť', // from v2.1 added 26.04.2012 'btnUnmount': 'Odpojiť', // from v2.1 added 30.04.2012 'btnConv' : 'Previesť', // from v2.1 added 08.04.2014 'btnCwd' : 'Tu', // from v2.1 added 22.5.2015 'btnVolume' : 'Médium', // from v2.1 added 22.5.2015 'btnAll' : 'Všetko', // from v2.1 added 22.5.2015 'btnMime' : 'MIME typ', // from v2.1 added 22.5.2015 'btnFileName':'Názov súboru', // from v2.1 added 22.5.2015 'btnSaveClose': 'Uložiť & zavrieť', // from v2.1 added 12.6.2015 'btnBackup' : 'Zálohovať', // fromv2.1 added 28.11.2015 'btnRename' : 'Premenovať', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'Premenovať všetko', // from v2.1.24 added 6.4.2017 'btnPrevious' : 'Predchádzajúce ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : 'Ďalšie ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : 'Uložiť ako', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'Otváranie priečinka', 'ntffile' : 'Otváranie súboru', 'ntfreload' : 'Znovu-načítanie obsahu priečinka', 'ntfmkdir' : 'Vytváranie priečinka', 'ntfmkfile' : 'Vytváranie súborov', 'ntfrm' : 'Vymazanie položiek', 'ntfcopy' : 'Kopírovanie položiek', 'ntfmove' : 'Premiestnenie položiek', 'ntfprepare' : 'Kontrola existujúcich položiek', 'ntfrename' : 'Premenovanie súborov', 'ntfupload' : 'Nahrávanie súborov', 'ntfdownload' : 'Sťahovanie súborov', 'ntfsave' : 'Uloženie súborov', 'ntfarchive' : 'Vytváranie archívu', 'ntfextract' : 'Extrahovanie súborov z archívu', 'ntfsearch' : 'Vyhľadávanie súborov', 'ntfresize' : 'Zmena veľkosti obrázkov', 'ntfsmth' : 'Počkajte prosím...', 'ntfloadimg' : 'Načítavanie obrázka', 'ntfnetmount' : 'Pripájanie sieťového média', // added 18.04.2012 'ntfnetunmount': 'Odpájanie sieťového média', // from v2.1 added 30.04.2012 'ntfdim' : 'Získanie rozmeru obrázka', // added 20.05.2013 'ntfreaddir' : 'Čítajú sa informácie o priečinku', // from v2.1 added 01.07.2013 'ntfurl' : 'Získanie adresy URL odkazu', // from v2.1 added 11.03.2014 'ntfchmod' : 'Zmena súboru', // from v2.1 added 20.6.2015 'ntfpreupload': 'Overenie názvu nahravaného súboru', // from v2.1 added 31.11.2015 'ntfzipdl' : 'Vytvorenie súboru na stiahnutie', // from v2.1.7 added 23.1.2016 'ntfparents' : 'Získanie informácií o ceste', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'Spracovanie nahraného súboru', // from v2.1.17 added 2.11.2016 'ntftrash' : 'Vhadzovanie do koša', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'Vykonávanie obnovy z koša', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'Kontrola cieľového priečinka', // from v2.1.24 added 3.5.2017 'ntfundo' : 'Zrušiť predchádzajúcu operáciu', // from v2.1.27 added 31.07.2017 'ntfredo' : 'Obnovenie predchádzajúceho zrušenia', // from v2.1.27 added 31.07.2017 'ntfchkcontent' : 'Kontrola obsahu', // from v2.1.41 added 3.8.2018 /*********************************** volumes *********************************/ 'volume_Trash' : 'Kôš', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : 'neznámy', 'Today' : 'Dnes', 'Yesterday' : 'Včera', 'msJan' : 'Jan', 'msFeb' : 'Feb', 'msMar' : 'Mar', 'msApr' : 'Apr', 'msMay' : 'Maj', 'msJun' : 'Jun', 'msJul' : 'Júl', 'msAug' : 'Aug', 'msSep' : 'Sep', 'msOct' : 'Okt', 'msNov' : 'Nov', 'msDec' : 'Dec', 'January' : 'Január', 'February' : 'Február', 'March' : 'Marec', 'April' : 'Apríl', 'May' : 'Máj', 'June' : 'Jún', 'July' : 'Júl', 'August' : 'August', 'September' : 'September', 'October' : 'Október', 'November' : 'November', 'December' : 'December', 'Sunday' : 'Nedeľa', 'Monday' : 'Pondelok', 'Tuesday' : 'Utorok', 'Wednesday' : 'Streda', 'Thursday' : 'Štvrtok', 'Friday' : 'Piatok', 'Saturday' : 'Sobota', 'Sun' : 'Ned', 'Mon' : 'Pon', 'Tue' : 'Ut', 'Wed' : 'Str', 'Thu' : 'Štv', 'Fri' : 'Pia', 'Sat' : 'Sob', /******************************** sort variants ********************************/ 'sortname' : 'podľa názvu', 'sortkind' : 'podľa druhu', 'sortsize' : 'podľa veľkosti', 'sortdate' : 'podľa dátumu', 'sortFoldersFirst' : 'Najskôr priečinky', 'sortperm' : 'podľa povolenia', // from v2.1.13 added 13.06.2016 'sortmode' : 'podľa módu', // from v2.1.13 added 13.06.2016 'sortowner' : 'podľa majiteľa', // from v2.1.13 added 13.06.2016 'sortgroup' : 'podľa skupiny', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'Tiež stromové zobrazenie', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : 'Nový súbor.txt', // added 10.11.2015 'untitled folder' : 'Nový priečinok', // added 10.11.2015 'Archive' : 'Nový archív', // from v2.1 added 10.11.2015 'untitled file' : 'Nový súbor.$1', // from v2.1.41 added 6.8.2018 'extentionfile' : '$1 súbor', // from v2.1.41 added 6.8.2018 'extentiontype' : '$1: $2', // from v2.1.43 added 17.10.2018 /********************************** messages **********************************/ 'confirmReq' : 'Potrebné potvrdenie', 'confirmRm' : 'Určite chcete vymazať súbory?
                Nie je to možné vrátiť späť!', 'confirmRepl' : 'Nahradiť starý súbor za nový? (Ak obsahuje priečinky, bude zlúčené. Ak chcete zálohovať a nahradiť, vyberte možnosť Zálohovať.)', 'confirmRest' : 'Nahradiť existujúcu položku s položkou v koši?', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'Nie je v UTF-8
                Previesť na UTF-8?
                Obsah bude v UTF-8 po uložení konverzie.', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'Kódovanie tohto súboru nemohlo byť detekované. Pre úpravu dočasne potrebujete previesť na UTF-8 .
                Prosím, vyberte kódovanie znakov tohto súboru.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : 'Bol upravený.
                Ak zmeny neuložíte, stratíte vykonanú prácu.', // from v2.1 added 15.7.2015 'confirmTrash' : 'Naozaj chcete presunúť položky do koša?', //from v2.1.24 added 29.4.2017 'confirmMove' : 'Naozaj chcete presunúť položky do "$1"?', //from v2.1.50 added 27.7.2019 'apllyAll' : 'Použiť na všetky', 'name' : 'Názov', 'size' : 'Veľkosť', 'perms' : 'Povolenia', 'modify' : 'Zmenené', 'kind' : 'Druh', 'read' : 'čítať', 'write' : 'zapisovať', 'noaccess' : 'bez prístupu', 'and' : 'a', 'unknown' : 'neznámy', 'selectall' : 'Vybrať všetky položky', 'selectfiles' : 'Vybrať položku(y)', 'selectffile' : 'Vybrať prvú položku', 'selectlfile' : 'Vybrať poslednú položku', 'viewlist' : 'Zoznam', 'viewicons' : 'Ikony', 'viewSmall' : 'Malé ikony', // from v2.1.39 added 22.5.2018 'viewMedium' : 'Stredné ikony', // from v2.1.39 added 22.5.2018 'viewLarge' : 'Veľké ikony', // from v2.1.39 added 22.5.2018 'viewExtraLarge' : 'Extra veľké ikony', // from v2.1.39 added 22.5.2018 'places' : 'Miesta', 'calc' : 'Prepočítavanie', 'path' : 'Cesta', 'aliasfor' : 'Alias pre', 'locked' : 'Uzamknuté', 'dim' : 'Rozmery', 'files' : 'Súbory', 'folders' : 'Priečinky', 'items' : 'Položky', 'yes' : 'áno', 'no' : 'nie', 'link' : 'Odkaz', 'searcresult' : 'Výsledky hľadania', 'selected' : 'zvolené položky', 'about' : 'O aplikácii', 'shortcuts' : 'Skratky', 'help' : 'Pomoc', 'webfm' : 'Webový správca súborov', 'ver' : 'Verzia', 'protocolver' : 'verzia protokolu', 'homepage' : 'Domovská stránka', 'docs' : 'Dokumentácia', 'github' : 'Pozri nás na Githube', 'twitter' : 'Nasleduj nás na Twitteri', 'facebook' : 'Pripoj sa k nám na Facebooku', 'team' : 'Tím', 'chiefdev' : 'Hlavný vývojár', 'developer' : 'Vývojár', 'contributor' : 'Prispievateľ', 'maintainer' : 'Správca', 'translator' : 'Prekladateľ', 'icons' : 'Ikony', 'dontforget' : 'a nezabudnite si plavky', 'shortcutsof' : 'Skratky nie sú povolené', 'dropFiles' : 'Sem pretiahnite súbory', 'or' : 'alebo', 'selectForUpload' : 'Vyberte súbory', 'moveFiles' : 'Premiestniť súbory', 'copyFiles' : 'Kopírovať súbory', 'restoreFiles' : 'Obnoviť položky', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'Odstrániť z umiestnení', 'aspectRatio' : 'Pomer zobrazenia', 'scale' : 'Mierka', 'width' : 'Šírka', 'height' : 'Výška', 'resize' : 'Zmeniť veľkosť', 'crop' : 'Orezať', 'rotate' : 'Otočiť', 'rotate-cw' : 'Otočiť o 90 stupňov (v smere h.r.)', 'rotate-ccw' : 'Otočiť o 90 stupňov (proti smeru)', 'degree' : '°', 'netMountDialogTitle' : 'Pripojiť sieťové médium', // added 18.04.2012 'protocol' : 'Protokol', // added 18.04.2012 'host' : 'Hosť', // added 18.04.2012 'port' : 'Port', // added 18.04.2012 'user' : 'Užívateľ', // added 18.04.2012 'pass' : 'Heslo', // added 18.04.2012 'confirmUnmount' : 'Naozaj chcete odpojiť $1?', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'Premiestnite alebo presuňte súbory z prehliadača', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'Tu premiestnite alebo presuňte súbory a adresy URL', // from v2.1 added 07.04.2014 'encoding' : 'Kódovanie', // from v2.1 added 19.12.2014 'locale' : 'Lokalizácia', // from v2.1 added 19.12.2014 'searchTarget' : 'Cieľ: $1', // from v2.1 added 22.5.2015 'searchMime' : 'Vyhľadávanie podľa vstupného MIME typu', // from v2.1 added 22.5.2015 'owner' : 'Majiteľ', // from v2.1 added 20.6.2015 'group' : 'Skupina', // from v2.1 added 20.6.2015 'other' : 'Ostatné', // from v2.1 added 20.6.2015 'execute' : 'Spustiť', // from v2.1 added 20.6.2015 'perm' : 'Povolenie', // from v2.1 added 20.6.2015 'mode' : 'Režim', // from v2.1 added 20.6.2015 'emptyFolder' : 'Priečinok je prázdny', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'Priečinok je prázdny\\A Premiestnite alebo presuňte položky', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'Priečinok je prázdny\\A Dlhým kliknutím pridáte položky', // from v2.1.6 added 30.12.2015 'quality' : 'Kvalita', // from v2.1.6 added 5.1.2016 'autoSync' : 'Automatická synchronizácia', // from v2.1.6 added 10.1.2016 'moveUp' : 'Posunúť nahor', // from v2.1.6 added 18.1.2016 'getLink' : 'Získať URL odkaz', // from v2.1.7 added 9.2.2016 'selectedItems' : 'Vybraté položky ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'ID priečinka', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'Povoliť prístup v offline režime', // from v2.1.10 added 3.25.2016 'reAuth' : 'Znova overiť', // from v2.1.10 added 3.25.2016 'nowLoading' : 'Práve načítava...', // from v2.1.12 added 4.26.2016 'openMulti' : 'Otvorenie viacerých súborov', // from v2.1.12 added 5.14.2016 'openMultiConfirm': 'Pokúšate sa otvoriť súbor $1. Naozaj ho chcete otvoriť v prehliadači?', // from v2.1.12 added 5.14.2016 'emptySearch' : 'Výsledky vyhľadávania sú prázdne v hľadanom cieli.', // from v2.1.12 added 5.16.2016 'editingFile' : 'Je to úprava súboru.', // from v2.1.13 added 6.3.2016 'hasSelected' : 'Vybrali ste $1 položky.', // from v2.1.13 added 6.3.2016 'hasClipboard' : 'Máte $1 položky v schránke.', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'Prírastkové hľadanie je iba z aktuálneho zobrazenia.', // from v2.1.13 added 6.30.2016 'reinstate' : 'Obnovovanie', // from v2.1.15 added 3.8.2016 'complete' : '$1: kompletné', // from v2.1.15 added 21.8.2016 'contextmenu' : 'Kontextové menu', // from v2.1.15 added 9.9.2016 'pageTurning' : 'Otáčanie stránky', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'Korene média', // from v2.1.16 added 16.9.2016 'reset' : 'Resetovať', // from v2.1.16 added 1.10.2016 'bgcolor' : 'Farba pozadia', // from v2.1.16 added 1.10.2016 'colorPicker' : 'Výber farby', // from v2.1.16 added 1.10.2016 '8pxgrid' : '8px mriežka', // from v2.1.16 added 4.10.2016 'enabled' : 'Povolené', // from v2.1.16 added 4.10.2016 'disabled' : 'Zakázané', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'Výsledky vyhľadávania sú prázdne v aktuálnom zobrazení. Stlačením tlačidla [Enter] rozšírite vyhľadávanie cieľa.', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'Výsledky vyhľadávania prvého listu sú v aktuálnom zobrazení prázdne.', // from v2.1.23 added 24.3.2017 'textLabel' : 'Nápis textu', // from v2.1.17 added 13.10.2016 'minsLeft' : '$1 minút ostáva', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'Otvoriť s vybratým kódovaním', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'Uložiť s vybratým kódovaním', // from v2.1.19 added 2.12.2016 'selectFolder' : 'Vyberte priečinok', // from v2.1.20 added 13.12.2016 'firstLetterSearch': 'Hľadanie prvého listu', // from v2.1.23 added 24.3.2017 'presets' : 'Presety', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : 'Je to príliš veľa položiek, takže sa nemôže dostať do koša.', // from v2.1.25 added 9.6.2017 'TextArea' : 'Textarea', // from v2.1.25 added 14.6.2017 'folderToEmpty' : 'Vyprázdniť priečinok "$1".', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : 'V priečinku "$1" nie sú žiadne položky.', // from v2.1.25 added 22.6.2017 'preference' : 'Preferencie', // from v2.1.26 added 28.6.2017 'language' : 'Nastavenie jazyka', // from v2.1.26 added 28.6.2017 'clearBrowserData': 'Inicializujte nastavenia uložené v tomto prehliadači', // from v2.1.26 added 28.6.2017 'toolbarPref' : 'Nastavenie panela s nástrojmi', // from v2.1.27 added 2.8.2017 'charsLeft' : '...$1 znakov ostáva.', // from v2.1.29 added 30.8.2017 'linesLeft' : '...$1 riadkov ostáva.', // from v2.1.52 added 16.1.2020 'sum' : 'Súčet', // from v2.1.29 added 28.9.2017 'roughFileSize' : 'Hrubá veľkosť súboru', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : 'Zameranie na prvok dialógu s mouseover', // from v2.1.30 added 2.11.2017 'select' : 'Vybrať', // from v2.1.30 added 23.11.2017 'selectAction' : 'Akcia pri vybranom súbore', // from v2.1.30 added 23.11.2017 'useStoredEditor' : 'Otvoriť pomocou naposledy použitého editora', // from v2.1.30 added 23.11.2017 'selectinvert' : 'Invertovať výber položiek', // from v2.1.30 added 25.11.2017 'renameMultiple' : 'Naozaj chcete premenovať $1 vybraných položiek, ako napríklad $2
                Nie je to možné vrátiť späť!', // from v2.1.31 added 4.12.2017 'batchRename' : 'Batch premenovanie', // from v2.1.31 added 8.12.2017 'plusNumber' : '+ Číslo', // from v2.1.31 added 8.12.2017 'asPrefix' : 'Pridať predponu', // from v2.1.31 added 8.12.2017 'asSuffix' : 'Pridať príponu', // from v2.1.31 added 8.12.2017 'changeExtention' : 'Zmeniť príponu', // from v2.1.31 added 8.12.2017 'columnPref' : 'Nastavenia stĺpcov (zoznamové zobrazenie)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : 'Všetky zmeny sa okamžite premietnu do archívu.', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : 'Akékoľvek zmeny sa neodzrkadľujú, kým sa toto médium neodinštaluje.', // from v2.1.33 added 2.3.2018 'unmountChildren' : 'Nasledujúce médium(a) pripojené v tomto médiu je tiež odpojené. Určite ho odpojiť?', // from v2.1.33 added 5.3.2018 'selectionInfo' : 'Informácie o výbere', // from v2.1.33 added 7.3.2018 'hashChecker' : 'Algoritmy na zobrazenie hashu súborov', // from v2.1.33 added 10.3.2018 'infoItems' : 'Informačné položky (panel s informáciami o výbere)', // from v2.1.38 added 28.3.2018 'pressAgainToExit': 'Opätovným stlačením opustíte.', // from v2.1.38 added 1.4.2018 'toolbar' : 'Panel nástrojov', // from v2.1.38 added 4.4.2018 'workspace' : 'Pracovný priestor', // from v2.1.38 added 4.4.2018 'dialog' : 'Dialóg', // from v2.1.38 added 4.4.2018 'all' : 'Všetko', // from v2.1.38 added 4.4.2018 'iconSize' : 'Veľkosť ikony (zobrazenie ikon)', // from v2.1.39 added 7.5.2018 'editorMaximized' : 'Otvorte maximalizované okno editora', // from v2.1.40 added 30.6.2018 'editorConvNoApi' : 'Pretože konverzia podľa rozhrania API momentálne nie je k dispozícii, skonvertujte na webovej stránke.', //from v2.1.40 added 8.7.2018 'editorConvNeedUpload' : 'Po konverzii musíte nahrať skonvertovaný súbor pomocou URL položky alebo stiahnutý súbor na uloženie skonvertovaného súboru.', //from v2.1.40 added 8.7.2018 'convertOn' : 'Konvertovať na stránke $1', // from v2.1.40 added 10.7.2018 'integrations' : 'Integrácie', // from v2.1.40 added 11.7.2018 'integrationWith' : 'Tento elFinder má integrované nasledujúce externé služby. Pred použitím skontrolujte podmienky používania, zásady ochrany osobných údajov atď.', // from v2.1.40 added 11.7.2018 'showHidden' : 'Zobraziť skryté položky', // from v2.1.41 added 24.7.2018 'hideHidden' : 'Skryť skryté položky', // from v2.1.41 added 24.7.2018 'toggleHidden' : 'Zobraziť/skryť skryté položky', // from v2.1.41 added 24.7.2018 'makefileTypes' : 'Typy súborov, ktoré sa majú povoliť pomocou "Nový súbor"', // from v2.1.41 added 7.8.2018 'typeOfTextfile' : 'Typ textového súboru', // from v2.1.41 added 7.8.2018 'add' : 'Pridať', // from v2.1.41 added 7.8.2018 'theme' : 'Téma', // from v2.1.43 added 19.10.2018 'default' : 'Predvolená', // from v2.1.43 added 19.10.2018 'description' : 'Popis', // from v2.1.43 added 19.10.2018 'website' : 'Stránka', // from v2.1.43 added 19.10.2018 'author' : 'Autor', // from v2.1.43 added 19.10.2018 'email' : 'E-mail', // from v2.1.43 added 19.10.2018 'license' : 'Licencia', // from v2.1.43 added 19.10.2018 'exportToSave' : 'Túto položku nemožno uložiť. Ak chcete zabrániť strate úprav, musíte ju exportovať do počítača.', // from v2.1.44 added 1.12.2018 'dblclickToSelect': 'Dvakrát kliknite na súbor a vyberte ho.', // from v2.1.47 added 22.1.2019 'useFullscreen' : 'Použiť režim celej obrazovky', // from v2.1.47 added 19.2.2019 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Neznámy', 'kindRoot' : 'Koreň média', // from v2.1.16 added 16.10.2016 'kindFolder' : 'Priečinok', 'kindSelects' : 'Výbery', // from v2.1.29 added 29.8.2017 'kindAlias' : 'Alias', 'kindAliasBroken' : 'Porušený alias', // applications 'kindApp' : 'Aplikácia', 'kindPostscript' : 'Postscript dokument', 'kindMsOffice' : 'Microsoft Office dokument', 'kindMsWord' : 'Microsoft Word dokument', 'kindMsExcel' : 'Microsoft Excel dokument', 'kindMsPP' : 'Microsoft Powerpoint prezentácia', 'kindOO' : 'Open Office dokument', 'kindAppFlash' : 'Flashová aplikácia', 'kindPDF' : 'Portable Document Format (PDF)', 'kindTorrent' : 'Bittorrent súbor', 'kind7z' : '7z archív', 'kindTAR' : 'TAR archív', 'kindGZIP' : 'GZIP archív', 'kindBZIP' : 'BZIP archív', 'kindXZ' : 'XZ archív', 'kindZIP' : 'ZIP archív', 'kindRAR' : 'RAR archív', 'kindJAR' : 'Java JAR súbor', 'kindTTF' : 'True Type font', 'kindOTF' : 'Open Type font', 'kindRPM' : 'RPM balík', // texts 'kindText' : 'Textový document', 'kindTextPlain' : 'Obyčajný text', 'kindPHP' : 'PHP zdrojový kód', 'kindCSS' : 'Cascading style sheet (CSS)', 'kindHTML' : 'HTML dokument', 'kindJS' : 'Javascript zdrojový kód', 'kindRTF' : 'Rich Text Format', 'kindC' : 'C zdrojový kód', 'kindCHeader' : 'C header zdrojový kód', 'kindCPP' : 'C++ zdrojový kód', 'kindCPPHeader' : 'C++ header zdrojový kód', 'kindShell' : 'Unix shell skript', 'kindPython' : 'Python zdrojový kód', 'kindJava' : 'Java zdrojový kód', 'kindRuby' : 'Ruby zdrojový kód', 'kindPerl' : 'Perl zdrojový kód', 'kindSQL' : 'SQL zdrojový kód', 'kindXML' : 'XML dokument', 'kindAWK' : 'AWK zdrojový kód', 'kindCSV' : 'Čiarkou oddeľované hodnoty', 'kindDOCBOOK' : 'Docbook XML dokument', 'kindMarkdown' : 'Markdown text', // added 20.7.2015 // images 'kindImage' : 'Obrázok', 'kindBMP' : 'BMP obrázok', 'kindJPEG' : 'JPEG obrázok', 'kindGIF' : 'GIF obrázok', 'kindPNG' : 'PNG obrázok', 'kindTIFF' : 'TIFF obrázok', 'kindTGA' : 'TGA obrázok', 'kindPSD' : 'Adobe Photoshop obrázok', 'kindXBITMAP' : 'X bitmap obrázok', 'kindPXM' : 'Pixelmator obrázok', // media 'kindAudio' : 'Zvukový súbor', 'kindAudioMPEG' : 'MPEG zvuk', 'kindAudioMPEG4' : 'MPEG-4 zvuk', 'kindAudioMIDI' : 'MIDI zvuk', 'kindAudioOGG' : 'Ogg Vorbis zvuk', 'kindAudioWAV' : 'WAV zvuk', 'AudioPlaylist' : 'MP3 playlist', 'kindVideo' : 'Video súbor', 'kindVideoDV' : 'DV video', 'kindVideoMPEG' : 'MPEG video', 'kindVideoMPEG4' : 'MPEG-4 video', 'kindVideoAVI' : 'AVI video', 'kindVideoMOV' : 'Quick Time video', 'kindVideoWM' : 'Windows Media video', 'kindVideoFlash' : 'Flash video', 'kindVideoMKV' : 'Matroska video', 'kindVideoOGG' : 'Ogg video' } }; })); plugins/file-manager-advanced/application/library/js/i18n/elfinder.sl.js000064400000037447147176754550022270 0ustar00/** * Slovenian translation * @author Damjan Rems * @version 2014-12-19 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.sl = { translator : 'Damjan Rems <d_rems at yahoo.com>', language : 'Slovenščina', direction : 'ltr', dateFormat : 'd.m.Y H:i', fancyDateFormat : '$1 H:i', messages : { /********************************** errors **********************************/ 'error' : 'Napaka', 'errUnknown' : 'Neznana napaka.', 'errUnknownCmd' : 'Neznan ukaz.', 'errJqui' : 'Napačna jQuery UI nastavitev. Selectable, draggable in droppable dodatki morajo biti vključeni.', 'errNode' : 'elFinder potrebuje "DOM Element".', 'errURL' : 'Napačna nastavitev elFinder-ja! Manjka URL nastavitev.', 'errAccess' : 'Dostop zavrnjen.', 'errConnect' : 'Ne morem se priključiti na "backend".', 'errAbort' : 'Povezava prekinjena (aborted).', 'errTimeout' : 'Povezava potekla (timeout).', 'errNotFound' : 'Nisem našel "backend-a".', 'errResponse' : 'Napačni "backend" odgovor.', 'errConf' : 'Napačna "backend" nastavitev.', 'errJSON' : 'JSON modul ni instaliran.', 'errNoVolumes' : 'Readable volumes not available.', 'errCmdParams' : 'Napačni parametri za ukaz "$1".', 'errDataNotJSON' : 'Podatki niso v JSON obliki.', 'errDataEmpty' : 'Ni podatkov oz. so prazni.', 'errCmdReq' : '"Backend" zahtevek potrebuje ime ukaza.', 'errOpen' : '"$1" ni možno odpreti.', 'errNotFolder' : 'Objekt ni mapa.', 'errNotFile' : 'Objekt ni datoteka.', 'errRead' : '"$1" ni možno brati.', 'errWrite' : 'Ne morem pisati v "$1".', 'errPerm' : 'Dostop zavrnjen.', 'errLocked' : '"$1" je zaklenjen(a) in je ni možno preimenovati, premakniti ali izbrisati.', 'errExists' : 'Datoteka z imenom "$1" že obstaja.', 'errInvName' : 'Napačno ime datoteke.', 'errFolderNotFound' : 'Mape nisem našel.', 'errFileNotFound' : 'Datoteke nisem našel.', 'errTrgFolderNotFound' : 'Ciljna mapa "$1" ne obstaja.', 'errPopup' : 'Brskalnik je preprečil prikaz (popup) okna. Za vpogled datoteke omogočite nastavitev v vašem brskalniku.', 'errMkdir' : 'Ni možno dodati mape "$1".', 'errMkfile' : 'Ni možno dodati datoteke "$1".', 'errRename' : 'Ni možno preimenovati "$1".', 'errCopyFrom' : 'Kopiranje datotek iz "$1" ni dovoljeno.', 'errCopyTo' : 'Kopiranje datotek na "$1" ni dovoljeno.', 'errUpload' : 'Napaka pri prenosu.', 'errUploadFile' : '"$1" ni možno naložiti (upload).', 'errUploadNoFiles' : 'Ni datotek za nalaganje (upload).', 'errUploadTotalSize' : 'Podatki presegajo največjo dovoljeno velikost.', 'errUploadFileSize' : 'Datoteka presega največjo dovoljeno velikost.', 'errUploadMime' : 'Datoteke s to končnico niso dovoljene.', 'errUploadTransfer' : '"$1" napaka pri prenosu.', 'errNotReplace' : 'Object "$1" already exists at this location and can not be replaced by object with another type.', 'errReplace' : 'Unable to replace "$1".', 'errSave' : '"$1" ni možno shraniti.', 'errCopy' : '"$1" ni možno kopirati.', 'errMove' : '"$1" ni možno premakniti.', 'errCopyInItself' : '"$1" ni možno kopirati samo vase.', 'errRm' : '"$1" ni možno izbrisati.', 'errRmSrc' : 'Unable remove source file(s).', 'errExtract' : 'Datotek iz "$1" ni možno odpakirati.', 'errArchive' : 'Napaka pri delanju arhiva.', 'errArcType' : 'Nepodprta vrsta arhiva.', 'errNoArchive' : 'Datoteka ni arhiv ali vrsta arhiva ni podprta.', 'errCmdNoSupport' : '"Backend" ne podpira tega ukaza.', 'errReplByChild' : 'Mape “$1” ni možno zamenjati z vsebino mape.', 'errArcSymlinks' : 'Zaradi varnostnih razlogov arhiva ki vsebuje "symlinks" ni možno odpakirati.', 'errArcMaxSize' : 'Datoteke v arhivu presegajo največjo dovoljeno velikost.', 'errResize' : '"$1" ni možno razširiti.', 'errResizeDegree' : 'Invalid rotate degree.', 'errResizeRotate' : 'Unable to rotate image.', 'errResizeSize' : 'Invalid image size.', 'errResizeNoChange' : 'Image size not changed.', 'errUsupportType' : 'Nepodprta vrsta datoteke.', 'errNotUTF8Content' : 'File "$1" is not in UTF-8 and cannot be edited.', // added 9.11.2011 'errNetMount' : 'Unable to mount "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'Unsupported protocol.', // added 17.04.2012 'errNetMountFailed' : 'Mount failed.', // added 17.04.2012 'errNetMountHostReq' : 'Host required.', // added 18.04.2012 'errSessionExpires' : 'Your session has expired due to inactivity.', 'errCreatingTempDir' : 'Unable to create temporary directory: "$1"', 'errFtpDownloadFile' : 'Unable to download file from FTP: "$1"', 'errFtpUploadFile' : 'Unable to upload file to FTP: "$1"', 'errFtpMkdir' : 'Unable to create remote directory on FTP: "$1"', 'errArchiveExec' : 'Error while archiving files: "$1"', 'errExtractExec' : 'Error while extracting files: "$1"', /******************************* commands names ********************************/ 'cmdarchive' : 'Naredi arhiv', 'cmdback' : 'Nazaj', 'cmdcopy' : 'Kopiraj', 'cmdcut' : 'Izreži', 'cmddownload' : 'Poberi (download)', 'cmdduplicate' : 'Podvoji', 'cmdedit' : 'Uredi datoteko', 'cmdextract' : 'Odpakiraj datoteke iz arhiva', 'cmdforward' : 'Naprej', 'cmdgetfile' : 'Izberi datoteke', 'cmdhelp' : 'Več o', 'cmdhome' : 'Domov', 'cmdinfo' : 'Lastnosti', 'cmdmkdir' : 'Nova mapa', 'cmdmkfile' : 'Nova datoteka', 'cmdopen' : 'Odpri', 'cmdpaste' : 'Prilepi', 'cmdquicklook' : 'Hitri ogled', 'cmdreload' : 'Osveži', 'cmdrename' : 'Preimenuj', 'cmdrm' : 'Izbriši', 'cmdsearch' : 'Poišči datoteke', 'cmdup' : 'Mapa nazaj', 'cmdupload' : 'Naloži (upload)', 'cmdview' : 'Ogled', 'cmdresize' : 'Povečaj (pomanjšaj) sliko', 'cmdsort' : 'Razvrsti', 'cmdnetmount' : 'Mount network volume', /*********************************** buttons ***********************************/ 'btnClose' : 'Zapri', 'btnSave' : 'Shrani', 'btnRm' : 'Izbriši', 'btnApply' : 'Uporabi', 'btnCancel' : 'Prekliči', 'btnNo' : 'Ne', 'btnYes' : 'Da', 'btnMount' : 'Mount', /******************************** notifications ********************************/ 'ntfopen' : 'Odpri mapo', 'ntffile' : 'Odpri datoteko', 'ntfreload' : 'Osveži vsebino mape', 'ntfmkdir' : 'Ustvarjam mapo', 'ntfmkfile' : 'Ustvarjam datoteke', 'ntfrm' : 'Brišem datoteke', 'ntfcopy' : 'Kopiram datoteke', 'ntfmove' : 'Premikam datoteke', 'ntfprepare' : 'Pripravljam se na kopiranje datotek', 'ntfrename' : 'Preimenujem datoteke', 'ntfupload' : 'Nalagam (upload) datoteke', 'ntfdownload' : 'Pobiram (download) datoteke', 'ntfsave' : 'Shranjujem datoteke', 'ntfarchive' : 'Ustvarjam arhiv', 'ntfextract' : 'Razpakiram datoteke iz arhiva', 'ntfsearch' : 'Iščem datoteke', 'ntfresize' : 'Resizing images', 'ntfsmth' : 'Počakaj delam >_<', 'ntfloadimg' : 'Nalagam sliko', 'ntfnetmount' : 'Mounting network volume', // added 18.04.2012 'ntfdim' : 'Acquiring image dimension', // added 20.05.2013 /************************************ dates **********************************/ 'dateUnknown' : 'neznan', 'Today' : 'Danes', 'Yesterday' : 'Včeraj', 'msJan' : 'Jan', 'msFeb' : 'Feb', 'msMar' : 'Mar', 'msApr' : 'Apr', 'msMay' : 'Maj', 'msJun' : 'Jun', 'msJul' : 'Jul', 'msAug' : 'Avg', 'msSep' : 'Sep', 'msOct' : 'Okt', 'msNov' : 'Nov', 'msDec' : 'Dec', 'January' : 'Januar', 'February' : 'Februar', 'March' : 'Marec', 'April' : 'April', 'May' : 'Maj', 'June' : 'Junij', 'July' : 'Julij', 'August' : 'Avgust', 'September' : 'September', 'October' : 'Oktober', 'November' : 'November', 'December' : 'December', 'Sunday' : 'Nedelja', 'Monday' : 'Ponedeljek', 'Tuesday' : 'Torek', 'Wednesday' : 'Sreda', 'Thursday' : 'Četrtek', 'Friday' : 'Petek', 'Saturday' : 'Sobota', 'Sun' : 'Ned', 'Mon' : 'Pon', 'Tue' : 'Tor', 'Wed' : 'Sre', 'Thu' : 'Čet', 'Fri' : 'Pet', 'Sat' : 'Sob', /******************************** sort variants ********************************/ 'sortname' : 'po imenu', 'sortkind' : 'po vrsti', 'sortsize' : 'po velikosti', 'sortdate' : 'po datumu', 'sortFoldersFirst' : 'Folders first', /********************************** messages **********************************/ 'confirmReq' : 'Zahtevana je potrditev', 'confirmRm' : 'Ste prepričani, da želite izbrisati datoteko?
                POZOR! Tega ukaza ni možno preklicati!', 'confirmRepl' : 'Zamenjam staro datoteko z novo?', 'apllyAll' : 'Uporabi pri vseh', 'name' : 'Ime', 'size' : 'Velikost', 'perms' : 'Dovoljenja', 'modify' : 'Spremenjeno', 'kind' : 'Vrsta', 'read' : 'beri', 'write' : 'piši', 'noaccess' : 'ni dostopa', 'and' : 'in', 'unknown' : 'neznan', 'selectall' : 'Izberi vse datoteke', 'selectfiles' : 'Izberi datotek(o)e', 'selectffile' : 'Izberi prvo datoteko', 'selectlfile' : 'Izberi zadnjo datoteko', 'viewlist' : 'Seznam', 'viewicons' : 'Ikone', 'places' : 'Mesta (places)', 'calc' : 'Izračun', 'path' : 'Pot do', 'aliasfor' : 'Sopomenka (alias) za', 'locked' : 'Zaklenjeno', 'dim' : 'Dimenzije', 'files' : 'Datoteke', 'folders' : 'Mape', 'items' : 'Predmeti', 'yes' : 'da', 'no' : 'ne', 'link' : 'Povezava', 'searcresult' : 'Rezultati iskanja', 'selected' : 'izbrani predmeti', 'about' : 'Več o', 'shortcuts' : 'Bližnjice', 'help' : 'Pomoč', 'webfm' : 'Spletni upravitelj datotek', 'ver' : 'Verzija', 'protocolver' : 'verzija protokola', 'homepage' : 'Domača stran', 'docs' : 'Dokumentacija', 'github' : 'Fork us on Github', 'twitter' : 'Sledi na twitterju', 'facebook' : 'Pridruži se nam na facebook-u', 'team' : 'Tim', 'chiefdev' : 'Glavni razvijalec', 'developer' : 'razvijalec', 'contributor' : 'contributor', 'maintainer' : 'vzdrževalec', 'translator' : 'prevajalec', 'icons' : 'Ikone', 'dontforget' : 'In ne pozabi na brisačo', 'shortcutsof' : 'Bližnjica onemogočena', 'dropFiles' : 'Datoteke spusti tukaj', 'or' : 'ali', 'selectForUpload' : 'Izberi datoteke za nalaganje', 'moveFiles' : 'Premakni datoteke', 'copyFiles' : 'Kopiraj datoteke', 'rmFromPlaces' : 'Izbriši iz mesta (places)', 'aspectRatio' : 'Razmerje slike', 'scale' : 'Razširi', 'width' : 'Širina', 'height' : 'Višina', 'resize' : 'Povečaj', 'crop' : 'Obreži', 'rotate' : 'Zavrti', 'rotate-cw' : 'Zavrti 90 st. v smeri ure', 'rotate-ccw' : 'Zavrti 90 st. v obratni smeri ure', 'degree' : 'Stopnja', 'netMountDialogTitle' : 'Mount network volume', // added 18.04.2012 'protocol' : 'Protocol', // added 18.04.2012 'host' : 'Host', // added 18.04.2012 'port' : 'Port', // added 18.04.2012 'user' : 'User', // added 18.04.2012 'pass' : 'Password', // added 18.04.2012 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Neznan', 'kindFolder' : 'Mapa', 'kindAlias' : 'Sopomenka (alias)', 'kindAliasBroken' : 'Nedelujoča sopomenka (alias)', // applications 'kindApp' : 'Program', 'kindPostscript' : 'Postscript dokument', 'kindMsOffice' : 'Microsoft Office dokument', 'kindMsWord' : 'Microsoft Word dokument', 'kindMsExcel' : 'Microsoft Excel dokument', 'kindMsPP' : 'Microsoft Powerpoint predstavitev', 'kindOO' : 'Open Office dokument', 'kindAppFlash' : 'Flash program', 'kindPDF' : 'Portable Document Format (PDF)', 'kindTorrent' : 'Bittorrent datoteka', 'kind7z' : '7z arhiv', 'kindTAR' : 'TAR arhiv', 'kindGZIP' : 'GZIP arhiv', 'kindBZIP' : 'BZIP arhiv', 'kindXZ' : 'XZ arhiv', 'kindZIP' : 'ZIP arhiv', 'kindRAR' : 'RAR arhiv', 'kindJAR' : 'Java JAR datoteka', 'kindTTF' : 'True Type font', 'kindOTF' : 'Open Type font', 'kindRPM' : 'RPM paket', // texts 'kindText' : 'Tekst dokument', 'kindTextPlain' : 'Samo tekst', 'kindPHP' : 'PHP koda', 'kindCSS' : 'Cascading style sheet (CSS)', 'kindHTML' : 'HTML dokument', 'kindJS' : 'Javascript koda', 'kindRTF' : 'Rich Text Format (RTF)', 'kindC' : 'C koda', 'kindCHeader' : 'C header koda', 'kindCPP' : 'C++ koda', 'kindCPPHeader' : 'C++ header koda', 'kindShell' : 'Unix shell skripta', 'kindPython' : 'Python kdoa', 'kindJava' : 'Java koda', 'kindRuby' : 'Ruby koda', 'kindPerl' : 'Perl skripta', 'kindSQL' : 'SQL koda', 'kindXML' : 'XML dokument', 'kindAWK' : 'AWK koda', 'kindCSV' : 'Besedilo ločeno z vejico (CSV)', 'kindDOCBOOK' : 'Docbook XML dokument', // images 'kindImage' : 'Slika', 'kindBMP' : 'BMP slika', 'kindJPEG' : 'JPEG slika', 'kindGIF' : 'GIF slika', 'kindPNG' : 'PNG slika', 'kindTIFF' : 'TIFF slika', 'kindTGA' : 'TGA slika', 'kindPSD' : 'Adobe Photoshop slika', 'kindXBITMAP' : 'X bitmap slika', 'kindPXM' : 'Pixelmator slika', // media 'kindAudio' : 'Avdio medija', 'kindAudioMPEG' : 'MPEG zvok', 'kindAudioMPEG4' : 'MPEG-4 zvok', 'kindAudioMIDI' : 'MIDI zvok', 'kindAudioOGG' : 'Ogg Vorbis zvok', 'kindAudioWAV' : 'WAV zvok', 'AudioPlaylist' : 'MP3 seznam', 'kindVideo' : 'Video medija', 'kindVideoDV' : 'DV film', 'kindVideoMPEG' : 'MPEG film', 'kindVideoMPEG4' : 'MPEG-4 film', 'kindVideoAVI' : 'AVI film', 'kindVideoMOV' : 'Quick Time film', 'kindVideoWM' : 'Windows Media film', 'kindVideoFlash' : 'Flash film', 'kindVideoMKV' : 'Matroska film', 'kindVideoOGG' : 'Ogg film' } }; })); plugins/file-manager-advanced/application/library/js/i18n/elfinder.sr.js000064400000037313147176754550022266 0ustar00 /** * Serbian translation * @author Momčilo m0k1 Mićanović * @version 2014-12-19 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.sr = { translator : 'Momčilo m0k1 Mićanović <moki.forum@gmail.com>', language : 'Srpski', direction : 'ltr', dateFormat : 'd.m.Y H:i', fancyDateFormat : '$1 H:i', messages : { /********************************** errors **********************************/ 'error' : 'Greška', 'errUnknown' : 'Nepoznata greška.', 'errUnknownCmd' : 'Nepoznata komanda.', 'errJqui' : 'Neispravna konfiguracija jQuery UI. Komponente koje mogu da se odabiru, povlače, izbacuju moraju biti uključene.', 'errNode' : 'elFinder zahteva DOM Element da bude kreiran.', 'errURL' : 'Neispravna elFinder konfiguracija! URL opcija nije postavljena.', 'errAccess' : 'Pristup odbijen.', 'errConnect' : 'Nije moguće povezivanje s skriptom.', 'errAbort' : 'Veza prekinuta.', 'errTimeout' : 'Veza odbačena.', 'errNotFound' : 'Skripta nije pronađena.', 'errResponse' : 'Neispravan odgovor skripte.', 'errConf' : 'Neispravna konfiguracija skripte.', 'errJSON' : 'PHP JSON modul nije instaliran.', 'errNoVolumes' : 'Vidljivi volumeni nisu dostupni.', 'errCmdParams' : 'Nevažeći parametri za komandu "$1".', 'errDataNotJSON' : 'Podaci nisu JSON.', 'errDataEmpty' : 'Podaci nisu prazni.', 'errCmdReq' : 'Skripta zahteva komandu.', 'errOpen' : 'Nemoguće otvoriti "$1".', 'errNotFolder' : 'Objekat nije folder.', 'errNotFile' : 'Objekat nije datoteka.', 'errRead' : 'Nemoguće pročitati "$1".', 'errWrite' : 'Nemoguće pisati u "$1".', 'errPerm' : 'Dozvola je odbijena.', 'errLocked' : '"$1" je zaključan i nemože biti preimenovan, premešten ili obrisan.', 'errExists' : 'Datoteka zvana "$1" već postoji.', 'errInvName' : 'Neispravno ime datoteke.', 'errFolderNotFound' : 'Folder nije pronađen.', 'errFileNotFound' : 'Datoteka nije pronađena.', 'errTrgFolderNotFound' : 'Izabrani folder "$1" nije pronađen.', 'errPopup' : 'Pretraživač sprečava otvaranje iskačućih prozora. Da otvorite datoteku uključite iskačuće prozore u opcijama pretraživača.', 'errMkdir' : 'Nemoguće kreirati folder "$1".', 'errMkfile' : 'Nemoguće kreirati datoteku "$1".', 'errRename' : 'Nemoguće preimenovati datoteku "$1".', 'errCopyFrom' : 'Kopiranje datoteki sa "$1" nije dozvoljeno.', 'errCopyTo' : 'Kopiranje datoteki na "$1" nije dozvoljeno.', 'errUpload' : 'Greska pri slanju.', 'errUploadFile' : 'Nemoguće poslati "$1".', 'errUploadNoFiles' : 'Nisu pronađene datoteke za slanje.', 'errUploadTotalSize' : 'Podaci premašuju najveću dopuštenu veličinu.', 'errUploadFileSize' : 'Datoteka premašuje najveću dopuštenu veličinu.', 'errUploadMime' : 'Vrsta datoteke nije dopuštena.', 'errUploadTransfer' : '"$1" greška prilikom slanja.', 'errNotReplace' : 'Object "$1" already exists at this location and can not be replaced by object with another type.', 'errReplace' : 'Unable to replace "$1".', 'errSave' : 'Nemožeš sačuvati "$1".', 'errCopy' : 'Nemožeš kopirati "$1".', 'errMove' : 'Nemožeš premestiti "$1".', 'errCopyInItself' : 'Nemožeš kopirati "$1" na istu lokaciju.', 'errRm' : 'Nemožeš obrisati "$1".', 'errRmSrc' : 'Unable remove source file(s).', 'errExtract' : 'Nemoguće izvaditi datoteke iz "$1".', 'errArchive' : 'Nemoguće kreirati arhivu.', 'errArcType' : 'Nepodržani tip arhive.', 'errNoArchive' : 'Datoteka nije arhiva ili je nepodržani tip arhive.', 'errCmdNoSupport' : 'Skripta nepodržava ovu komandu.', 'errReplByChild' : 'Folder “$1” ne može biti zamenut stavkom koju sadrži.', 'errArcSymlinks' : 'Zbog bezbednosnih razloga ne možete raspakovati arhive koje sadrže simboličke veze ili datoteke sa nedozvoljenim imenima.', 'errArcMaxSize' : 'Arhiva je dostigla maksimalnu veličinu.', 'errResize' : 'Nemoguće promeniti veličinu "$1".', 'errResizeDegree' : 'Invalid rotate degree.', 'errResizeRotate' : 'Unable to rotate image.', 'errResizeSize' : 'Invalid image size.', 'errResizeNoChange' : 'Image size not changed.', 'errUsupportType' : 'nepodržan tip datoteke.', 'errNotUTF8Content' : 'Datoteka "$1" nije u UTF-8 formati i ne može biti izmenjena.', 'errNetMount' : 'Nije moguće montirati "$1".', 'errNetMountNoDriver' : 'Nepodržani protokol.', 'errNetMountFailed' : 'Montiranje neuspelo.', 'errNetMountHostReq' : 'Host je potreban.', 'errSessionExpires' : 'Your session has expired due to inactivity.', 'errCreatingTempDir' : 'Unable to create temporary directory: "$1"', 'errFtpDownloadFile' : 'Unable to download file from FTP: "$1"', 'errFtpUploadFile' : 'Unable to upload file to FTP: "$1"', 'errFtpMkdir' : 'Unable to create remote directory on FTP: "$1"', 'errArchiveExec' : 'Error while archiving files: "$1"', 'errExtractExec' : 'Error while extracting files: "$1"', /******************************* commands names ********************************/ 'cmdarchive' : 'Kreiraj arhivu', 'cmdback' : 'Nazad', 'cmdcopy' : 'Kopiraj', 'cmdcut' : 'Iseci', 'cmddownload' : 'Preuzmi', 'cmdduplicate' : 'Dupliraj', 'cmdedit' : 'Izmeni datoteku', 'cmdextract' : 'Raspakuj arhivu', 'cmdforward' : 'Napred', 'cmdgetfile' : 'Izaberi datoteke', 'cmdhelp' : 'O ovom softveru', 'cmdhome' : 'Početna', 'cmdinfo' : 'Proveri informacije', 'cmdmkdir' : 'Novi folder', 'cmdmkfile' : 'Nova datoteka', 'cmdopen' : 'Otvori', 'cmdpaste' : 'Zalepi', 'cmdquicklook' : 'Pregledaj', 'cmdreload' : 'Povno učitaj', 'cmdrename' : 'Preimenuj', 'cmdrm' : 'Obriši', 'cmdsearch' : 'Pronađi datoteke', 'cmdup' : 'Idi na nadređeni folder', 'cmdupload' : 'Pošalji datoteke', 'cmdview' : 'Pogledaj', 'cmdresize' : 'Promeni veličinu slike', 'cmdsort' : 'Sortiraj', 'cmdnetmount' : 'Mount network volume', /*********************************** buttons ***********************************/ 'btnClose' : 'Zatvori', 'btnSave' : 'Sačuvaj', 'btnRm' : 'Obriši', 'btnApply' : 'Potvrdi', 'btnCancel' : 'Prekini', 'btnNo' : 'Ne', 'btnYes' : 'Da', 'btnMount' : 'Mount', /******************************** notifications ********************************/ 'ntfopen' : 'Otvaranje foldera', 'ntffile' : 'Otvaranje datoteke', 'ntfreload' : 'Ponovo učitavanje sadržaja foldera', 'ntfmkdir' : 'Kreiranje foldera', 'ntfmkfile' : 'Kreiranje datoteke', 'ntfrm' : 'Brisanje datoteke', 'ntfcopy' : 'Kopiranje datoteke', 'ntfmove' : 'Premeštanje datoteke', 'ntfprepare' : 'Priprema za kopiranje dateoteke', 'ntfrename' : 'Primenovanje datoteke', 'ntfupload' : 'Slanje datoteke', 'ntfdownload' : 'Preuzimanje datoteke', 'ntfsave' : 'Čuvanje datoteke', 'ntfarchive' : 'Kreiranje arhive', 'ntfextract' : 'Izdvajanje datoteka iz arhive', 'ntfsearch' : 'Pretraga datoteka', 'ntfresize' : 'Resizing images', 'ntfsmth' : 'Radim nešto >_<', 'ntfloadimg' : 'Učitavanje slike', 'ntfnetmount' : 'Montiranje mrežnog volumena', 'ntfdim' : 'Acquiring image dimension', /************************************ dates **********************************/ 'dateUnknown' : 'nepoznat', 'Today' : 'Danas', 'Yesterday' : 'Sutra', 'msJan' : 'Jan', 'msFeb' : 'Feb', 'msMar' : 'Mar', 'msApr' : 'Apr', 'msMay' : 'Maj', 'msJun' : 'Jun', 'msJul' : 'Jul', 'msAug' : 'Avg', 'msSep' : 'Sep', 'msOct' : 'Okt', 'msNov' : 'Nov', 'msDec' : 'Dec', 'January' : 'Januar', 'February' : 'Februar', 'March' : 'Mart', 'April' : 'April', 'May' : 'Maj', 'June' : 'Jun', 'July' : 'Jul', 'August' : 'Avgust', 'September' : 'Septembar', 'October' : 'Oktobar', 'November' : 'Novembar', 'December' : 'Decembar', 'Sunday' : 'Nedelja', 'Monday' : 'Ponedeljak', 'Tuesday' : 'Utorak', 'Wednesday' : 'Sreda', 'Thursday' : 'Četvrtak', 'Friday' : 'Petak', 'Saturday' : 'Subota', 'Sun' : 'Ned', 'Mon' : 'Pon', 'Tue' : 'Uto', 'Wed' : 'Sre', 'Thu' : 'Čet', 'Fri' : 'Pet', 'Sat' : 'Sub', /******************************** sort variants ********************************/ 'sortname' : 'po imenu', 'sortkind' : 'po vrsti', 'sortsize' : 'po veličini', 'sortdate' : 'po datumu', 'sortFoldersFirst' : 'Prvo folderi', /********************************** messages **********************************/ 'confirmReq' : 'Potrebna potvrda', 'confirmRm' : 'Da li ste sigurni da želite da obrišete datoteke?
                Ovo se ne može poništiti!', 'confirmRepl' : 'Zameniti stare datoteke sa novima?', 'apllyAll' : 'Potvrdi za sve', 'name' : 'Ime', 'size' : 'Veličina', 'perms' : 'Dozvole', 'modify' : 'Izmenjeno', 'kind' : 'Vrsta', 'read' : 'čitanje', 'write' : 'pisanje', 'noaccess' : 'bez pristupa', 'and' : 'i', 'unknown' : 'nepoznato', 'selectall' : 'Izaberi sve datoteke', 'selectfiles' : 'Izaberi datoteku(e)', 'selectffile' : 'Izaberi prvu datoteku', 'selectlfile' : 'Izaberi poslednju datoteku', 'viewlist' : 'Popisni prikaz', 'viewicons' : 'Pregled ikona', 'places' : 'Mesta', 'calc' : 'Izračunaj', 'path' : 'Putanja', 'aliasfor' : 'Nadimak za', 'locked' : 'Zaključano', 'dim' : 'Dimenzije', 'files' : 'Datoteke', 'folders' : 'Folderi', 'items' : 'Stavke', 'yes' : 'da', 'no' : 'ne', 'link' : 'Veza', 'searcresult' : 'Rezultati pretrage', 'selected' : 'odabrane stavke', 'about' : 'O softveru', 'shortcuts' : 'Prečice', 'help' : 'Pomoć', 'webfm' : 'Web menađer datoteka', 'ver' : 'Verzija', 'protocolver' : 'verzija protokla', 'homepage' : 'Adresa projekta', 'docs' : 'Dokumentacija', 'github' : 'Forkuj nas na Github', 'twitter' : 'Prati nas na twitter', 'facebook' : 'Pridruži nam se na facebook', 'team' : 'Tim', 'chiefdev' : 'glavni programer', 'developer' : 'programer', 'contributor' : 'pomoćnik', 'maintainer' : 'održavatelj', 'translator' : 'prevodilac', 'icons' : 'Ikone', 'dontforget' : 'i ne zaboravite da ponesete peškir', 'shortcutsof' : 'Prečice isključene', 'dropFiles' : 'Prevucite datoteke ovde', 'or' : 'ili', 'selectForUpload' : 'Odaberite datoteke za slanje', 'moveFiles' : 'Premesti datoteke', 'copyFiles' : 'Kopiraj datoteke', 'rmFromPlaces' : 'Ukloni iz mesta', 'aspectRatio' : 'Omer širine i visine', 'scale' : 'Razmera', 'width' : 'Širina', 'height' : 'Visina', 'resize' : 'Promeni veličinu', 'crop' : 'Iseci', 'rotate' : 'Rotiraj', 'rotate-cw' : 'Rotiraj 90 stepeni CW', 'rotate-ccw' : 'Rotiraj 90 stepeni CCW', 'degree' : 'Stepeni', 'netMountDialogTitle' : 'Montiraj mrežni volumen', 'protocol' : 'Protokol', 'host' : 'Host', 'port' : 'Port', 'user' : 'Korisničko Ime', 'pass' : 'Lozinka', /********************************** mimetypes **********************************/ 'kindUnknown' : 'Nepoznat', 'kindFolder' : 'Folder', 'kindAlias' : 'Nadimak', 'kindAliasBroken' : 'Neispravan nadimak', // applications 'kindApp' : 'Aplikacija', 'kindPostscript' : 'Postscript dokument', 'kindMsOffice' : 'Microsoft Office dokument', 'kindMsWord' : 'Microsoft Word dokument', 'kindMsExcel' : 'Microsoft Excel dokument', 'kindMsPP' : 'Microsoft Powerpoint prezentacija', 'kindOO' : 'Open Office dokument', 'kindAppFlash' : 'Flash aplikacija', 'kindPDF' : 'Portable Document Format (PDF)', 'kindTorrent' : 'Bittorrent datoteka', 'kind7z' : '7z arhiva', 'kindTAR' : 'TAR arhiva', 'kindGZIP' : 'GZIP arhiva', 'kindBZIP' : 'BZIP arhiva', 'kindXZ' : 'XZ arhiva', 'kindZIP' : 'ZIP arhiva', 'kindRAR' : 'RAR arhiva', 'kindJAR' : 'Java JAR datoteka', 'kindTTF' : 'True Type font', 'kindOTF' : 'Open Type font', 'kindRPM' : 'RPM paket', // texts 'kindText' : 'Teokstualni dokument', 'kindTextPlain' : 'Čist tekst', 'kindPHP' : 'PHP kod', 'kindCSS' : 'CSS kod', 'kindHTML' : 'HTML dokument', 'kindJS' : 'Javascript kod', 'kindRTF' : 'Rich Text Format', 'kindC' : 'C kod', 'kindCHeader' : 'C header kod', 'kindCPP' : 'C++ kod', 'kindCPPHeader' : 'C++ header kod', 'kindShell' : 'Unix shell skripta', 'kindPython' : 'Python kod', 'kindJava' : 'Java kod', 'kindRuby' : 'Ruby kod', 'kindPerl' : 'Perl skripta', 'kindSQL' : 'SQL kod', 'kindXML' : 'XML dokument', 'kindAWK' : 'AWK kod', 'kindCSV' : 'Comma separated values', 'kindDOCBOOK' : 'Docbook XML dokument', // images 'kindImage' : 'Slika', 'kindBMP' : 'BMP slika', 'kindJPEG' : 'JPEG slika', 'kindGIF' : 'GIF slika', 'kindPNG' : 'PNG slika', 'kindTIFF' : 'TIFF slika', 'kindTGA' : 'TGA slika', 'kindPSD' : 'Adobe Photoshop slika', 'kindXBITMAP' : 'X bitmap slika', 'kindPXM' : 'Pixelmator slika', // media 'kindAudio' : 'Zvuk', 'kindAudioMPEG' : 'MPEG zvuk', 'kindAudioMPEG4' : 'MPEG-4 zvuk', 'kindAudioMIDI' : 'MIDI zvuk', 'kindAudioOGG' : 'Ogg Vorbis zvuk', 'kindAudioWAV' : 'WAV zvuk', 'AudioPlaylist' : 'MP3 lista', 'kindVideo' : 'Video', 'kindVideoDV' : 'DV video', 'kindVideoMPEG' : 'MPEG video', 'kindVideoMPEG4' : 'MPEG-4 video', 'kindVideoAVI' : 'AVI video', 'kindVideoMOV' : 'Quick Time video', 'kindVideoWM' : 'Windows Media video', 'kindVideoFlash' : 'Flash video', 'kindVideoMKV' : 'Matroska video', 'kindVideoOGG' : 'Ogg video' } }; })); plugins/file-manager-advanced/application/library/js/i18n/elfinder.sv.js000064400000036611147176754550022272 0ustar00/** * Swedish translation * @author Gabriel Satzger * @version 2014-12-19 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.sv = { translator : 'Gabriel Satzger <gabriel.satzger@sbg.se>', language : 'Svenska', direction : 'ltr', dateFormat : 'Y-m-d H:i', fancyDateFormat : '$1 H:i', messages : { /********************************** errors **********************************/ 'error' : 'Error', 'errUnknown' : 'Okänt error.', 'errUnknownCmd' : 'Okänt kommando.', 'errJqui' : 'Felaktig jQuery UI konfiguration. Komponenterna selectable, draggable och droppable måste vara inkluderade.', 'errNode' : 'elFinder kräver att DOM Elementen skapats.', 'errURL' : 'Felaktig elFinder konfiguration! URL parametern är inte satt.', 'errAccess' : 'Åtkomst nekad.', 'errConnect' : 'Kan inte ansluta till backend.', 'errAbort' : 'Anslutningen avbröts.', 'errTimeout' : 'Anslutningen löpte ut.', 'errNotFound' : 'Backend hittades inte.', 'errResponse' : 'Ogiltig backend svar.', 'errConf' : 'Ogiltig backend konfiguration.', 'errJSON' : 'PHP JSON modul är inte installerad.', 'errNoVolumes' : 'Läsbara volymer är inte tillgängliga.', 'errCmdParams' : 'Ogiltiga parametrar för kommandot "$1".', 'errDataNotJSON' : 'Datan är inte JSON.', 'errDataEmpty' : 'Datan är tom.', 'errCmdReq' : 'Backend begäran kräver kommandonamn.', 'errOpen' : 'Kan inte öppna "$1".', 'errNotFolder' : 'Objektet är inte en mapp.', 'errNotFile' : 'Objektet är inte en fil.', 'errRead' : 'Kan inte läsa "$1".', 'errWrite' : 'Kan inte skriva till "$1".', 'errPerm' : 'Tillstånd nekat.', 'errLocked' : '"$1" är låst och kan inte döpas om, flyttas eller tas bort.', 'errExists' : 'Fil med namn "$1" finns redan.', 'errInvName' : 'Ogiltigt filnamn.', 'errFolderNotFound' : 'Mappen hittades inte.', 'errFileNotFound' : 'Filen hittades inte.', 'errTrgFolderNotFound' : 'Målmappen "$1" hittades inte.', 'errPopup' : 'Webbläsaren hindrade popup-fönstret att öppnas. Ändra i webbläsarens inställningar för att kunna öppna filen.', 'errMkdir' : 'Kan inte skapa mappen "$1".', 'errMkfile' : 'Kan inte skapa filen "$1".', 'errRename' : 'Kan inte döpa om "$1".', 'errCopyFrom' : 'Kopiera filer från volym "$1" tillåts inte.', 'errCopyTo' : 'Kopiera filer till volym "$1" tillåts inte.', 'errUpload' : 'Error vid uppladdningen.', 'errUploadFile' : 'Kan inte ladda upp "$1".', 'errUploadNoFiles' : 'Inga filer hittades för uppladdning.', 'errUploadTotalSize' : 'Data överskrider den högsta tillåtna storleken.', 'errUploadFileSize' : 'Filen överskrider den högsta tillåtna storleken.', 'errUploadMime' : 'Otillåten filtyp.', 'errUploadTransfer' : '"$1" överföringsfel.', 'errNotReplace' : 'Object "$1" already exists at this location and can not be replaced by object with another type.', 'errReplace' : 'Unable to replace "$1".', 'errSave' : 'Kan inte spara "$1".', 'errCopy' : 'Kan inte kopiera "$1".', 'errMove' : 'Kan inte flytta "$1".', 'errCopyInItself' : 'Kan inte flytta "$1" till sig själv.', 'errRm' : 'Kan inte ta bort "$1".', 'errRmSrc' : 'Unable remove source file(s).', 'errExtract' : 'Kan inte packa upp filen från "$1".', 'errArchive' : 'Kan inte skapa arkiv.', 'errArcType' : 'Arkivtypen stöds inte.', 'errNoArchive' : 'Filen är inte av typen arkiv.', 'errCmdNoSupport' : 'Backend stöder inte detta kommando.', 'errReplByChild' : 'Mappen “$1” kan inte ersättas av ett objekt den innehåller.', 'errArcSymlinks' : 'Av säkerhetsskäl nekas arkivet att packas upp då det innehåller symboliska länkar eller filer med ej tillåtna namn.', // edited 24.06.2012 'errArcMaxSize' : 'Arkivfiler överskrider största tillåtna storlek.', 'errResize' : 'Kan inte ändra storlek "$1".', 'errResizeDegree' : 'Invalid rotate degree.', 'errResizeRotate' : 'Unable to rotate image.', 'errResizeSize' : 'Invalid image size.', 'errResizeNoChange' : 'Image size not changed.', 'errUsupportType' : 'Filtypen stöds inte.', 'errNotUTF8Content' : 'Filen "$1" är inte i UTF-8 och kan inte redigeras.', // added 9.11.2011 'errNetMount' : 'Kan inte koppla "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'Protokollet stöds inte.', // added 17.04.2012 'errNetMountFailed' : 'Kopplingen misslyckades.', // added 17.04.2012 'errNetMountHostReq' : 'Host krävs.', // added 18.04.2012 'errSessionExpires' : 'Your session has expired due to inactivity.', 'errCreatingTempDir' : 'Unable to create temporary directory: "$1"', 'errFtpDownloadFile' : 'Unable to download file from FTP: "$1"', 'errFtpUploadFile' : 'Unable to upload file to FTP: "$1"', 'errFtpMkdir' : 'Unable to create remote directory on FTP: "$1"', 'errArchiveExec' : 'Error while archiving files: "$1"', 'errExtractExec' : 'Error while extracting files: "$1"', /******************************* commands names ********************************/ 'cmdarchive' : 'Skapa arkiv', 'cmdback' : 'Tillbaka', 'cmdcopy' : 'Kopiera', 'cmdcut' : 'Klipp ut', 'cmddownload' : 'Ladda ned', 'cmdduplicate' : 'Duplicera', 'cmdedit' : 'Redigera fil', 'cmdextract' : 'Extrahera filer från arkiv', 'cmdforward' : 'Framåt', 'cmdgetfile' : 'Välj filer', 'cmdhelp' : 'Om denna programvara', 'cmdhome' : 'Hem', 'cmdinfo' : 'Visa info', 'cmdmkdir' : 'Ny mapp', 'cmdmkfile' : 'Ny fil', 'cmdopen' : 'Öppna', 'cmdpaste' : 'Klistra in', 'cmdquicklook' : 'Förhandsgranska', 'cmdreload' : 'Ladda om', 'cmdrename' : 'Döp om', 'cmdrm' : 'Radera', 'cmdsearch' : 'Hitta filer', 'cmdup' : 'Gå till överordnade katalog', 'cmdupload' : 'Ladda upp filer', 'cmdview' : 'Visa', 'cmdresize' : 'Ändra bildstorlek', 'cmdsort' : 'Sortera', 'cmdnetmount' : 'Mount network volume', /*********************************** buttons ***********************************/ 'btnClose' : 'Stäng', 'btnSave' : 'Spara', 'btnRm' : 'Ta bort', 'btnApply' : 'Verkställ', 'btnCancel' : 'Ångra', 'btnNo' : 'Nej', 'btnYes' : 'Ja', 'btnMount' : 'Mount', /******************************** notifications ********************************/ 'ntfopen' : 'Öppnar mapp', 'ntffile' : 'Öppnar fil', 'ntfreload' : 'Laddar om mappinnehållet', 'ntfmkdir' : 'Skapar katalog', 'ntfmkfile' : 'Skapar fil', 'ntfrm' : 'Tar bort filer', 'ntfcopy' : 'Kopierar filer', 'ntfmove' : 'Flyttar filer', 'ntfprepare' : 'Förbereder att flytta filer', 'ntfrename' : 'Döper om filer', 'ntfupload' : 'Laddar upp filer', 'ntfdownload' : 'Laddar ner filer', 'ntfsave' : 'Sparar filer', 'ntfarchive' : 'Skapar arkiv', 'ntfextract' : 'Extraherar filer från arkiv', 'ntfsearch' : 'Söker filer', 'ntfresize' : 'Resizing images', 'ntfsmth' : 'Gör någonting >_<', 'ntfloadimg' : 'Laddar bild', 'ntfnetmount' : 'kopplar nätverksvolym', // added 18.04.2012 'ntfdim' : 'Acquiring image dimension', /************************************ dates **********************************/ 'dateUnknown' : 'okänt', 'Today' : 'Idag', 'Yesterday' : 'Igår', 'msJan' : 'Jan', 'msFeb' : 'Feb', 'msMar' : 'Mar', 'msApr' : 'Apr', 'msMay' : 'Maj', 'msJun' : 'Jun', 'msJul' : 'Jul', 'msAug' : 'Aug', 'msSep' : 'Sep', 'msOct' : 'Okt', 'msNov' : 'Nov', 'msDec' : 'Dec', 'January' : 'Januari', 'February' : 'Februari', 'March' : 'Mars', 'April' : 'April', 'May' : 'Maj', 'June' : 'Juni', 'July' : 'Juli', 'August' : 'Augusti', 'September' : 'September', 'October' : 'Oktober', 'November' : 'November', 'December' : 'December', 'Sunday' : 'Söndag', 'Monday' : 'Måndag', 'Tuesday' : 'Tisdag', 'Wednesday' : 'Onsdag', 'Thursday' : 'Torsdag', 'Friday' : 'Fredag', 'Saturday' : 'Lördag', 'Sun' : 'Sön', 'Mon' : 'Mån', 'Tue' : 'Tis', 'Wed' : 'Ons', 'Thu' : 'Tor', 'Fri' : 'Fre', 'Sat' : 'Lör', /******************************** sort variants ********************************/ 'sortname' : 'efter namn', 'sortkind' : 'efter sort', 'sortsize' : 'efter storlek', 'sortdate' : 'efter datum', 'sortFoldersFirst' : 'Mappar först', // added 22.06.2012 /********************************** messages **********************************/ 'confirmReq' : 'Bekräftelse krävs', 'confirmRm' : 'Är du säker på att du vill ta bort filer?
                Detta kan inte ångras!', 'confirmRepl' : 'Ersätt den gamla filen med en ny?', 'apllyAll' : 'Använd för alla', 'name' : 'Namn', 'size' : 'Storlek', 'perms' : 'Rättigheter', 'modify' : 'Ändrad', 'kind' : 'Sort', 'read' : 'läs', 'write' : 'skriv', 'noaccess' : 'ingen åtkomst', 'and' : 'och', 'unknown' : 'okänd', 'selectall' : 'Välj alla filer', 'selectfiles' : 'Välj fil(er)', 'selectffile' : 'Välj första filen', 'selectlfile' : 'Välj sista filen', 'viewlist' : 'Listvy', 'viewicons' : 'Ikonvy', 'places' : 'Platser', 'calc' : 'Beräkna', 'path' : 'Sökväg', 'aliasfor' : 'Alias för', 'locked' : 'Låst', 'dim' : 'Dimensioner', 'files' : 'Filer', 'folders' : 'Mappar', 'items' : 'Objekt', 'yes' : 'ja', 'no' : 'nej', 'link' : 'Länk', 'searcresult' : 'Sökresultat', 'selected' : 'valda objekt', 'about' : 'Om', 'shortcuts' : 'Genväg', 'help' : 'Hjälp', 'webfm' : 'Webbfilhanterare', 'ver' : 'Version', 'protocolver' : 'protokolversion', 'homepage' : 'Projekt hemsida', 'docs' : 'Dokumentation', 'github' : 'Forka oss på Github', 'twitter' : 'Följ oss på twitter', 'facebook' : 'Följ oss på facebook', 'team' : 'Team', 'chiefdev' : 'senior utvecklare', 'developer' : 'utvecklare', 'contributor' : 'bidragsgivare', 'maintainer' : 'underhållare', 'translator' : 'översättare', 'icons' : 'Ikoner', 'dontforget' : 'och glöm inte att ta med din handduk', 'shortcutsof' : 'Genvägar avaktiverade', 'dropFiles' : 'Släpp filerna här', 'or' : 'eller', 'selectForUpload' : 'Välj filer att ladda upp', 'moveFiles' : 'Flytta filer', 'copyFiles' : 'Kopiera filer', 'rmFromPlaces' : 'Ta bort från platser', 'aspectRatio' : 'Aspekt ratio', 'scale' : 'Skala', 'width' : 'Bredd', 'height' : 'Höjd', 'resize' : 'Ändra storlek', 'crop' : 'Beskär', 'rotate' : 'Rotera', 'rotate-cw' : 'Rotera 90 grader medurs', 'rotate-ccw' : 'Rotera 90 grader moturs', 'degree' : 'Grader', 'netMountDialogTitle' : 'Koppla nätverksvolym', // added 18.04.2012 'protocol' : 'Protokol', // added 18.04.2012 'host' : 'Host', // added 18.04.2012 'port' : 'Port', // added 18.04.2012 'user' : 'användare', // added 18.04.2012 'pass' : 'Lösenord', // added 18.04.2012 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Okänd', 'kindFolder' : 'Mapp', 'kindAlias' : 'Alias', 'kindAliasBroken' : 'Trasigt alias', // applications 'kindApp' : 'Applikation', 'kindPostscript' : 'Postscript', 'kindMsOffice' : 'Microsoft Office', 'kindMsWord' : 'Microsoft Word', 'kindMsExcel' : 'Microsoft Excel', 'kindMsPP' : 'Microsoft Powerpoint', 'kindOO' : 'Open Office', 'kindAppFlash' : 'Flash', 'kindPDF' : 'Portable Document Format (PDF)', 'kindTorrent' : 'Bittorrent', 'kind7z' : '7z', 'kindTAR' : 'TAR', 'kindGZIP' : 'GZIP', 'kindBZIP' : 'BZIP', 'kindXZ' : 'XZ', 'kindZIP' : 'ZIP', 'kindRAR' : 'RAR', 'kindJAR' : 'Java JAR', 'kindTTF' : 'True Type', 'kindOTF' : 'Open Type', 'kindRPM' : 'RPM', // texts 'kindText' : 'Text', 'kindTextPlain' : 'Plain', 'kindPHP' : 'PHP', 'kindCSS' : 'Cascading style sheet', 'kindHTML' : 'HTML', 'kindJS' : 'Javascript', 'kindRTF' : 'Rich Text Format', 'kindC' : 'C', 'kindCHeader' : 'C header', 'kindCPP' : 'C++', 'kindCPPHeader' : 'C++ header', 'kindShell' : 'Unix shell script', 'kindPython' : 'Python', 'kindJava' : 'Java', 'kindRuby' : 'Ruby', 'kindPerl' : 'Perl', 'kindSQL' : 'SQL', 'kindXML' : 'XML', 'kindAWK' : 'AWK', 'kindCSV' : 'CSV', 'kindDOCBOOK' : 'Docbook XML', // images 'kindImage' : 'Bild', 'kindBMP' : 'BMP', 'kindJPEG' : 'JPEG', 'kindGIF' : 'GIF', 'kindPNG' : 'PNG', 'kindTIFF' : 'TIFF', 'kindTGA' : 'TGA', 'kindPSD' : 'Adobe Photoshop', 'kindXBITMAP' : 'X bitmap', 'kindPXM' : 'Pixelmator', // media 'kindAudio' : 'Audio media', 'kindAudioMPEG' : 'MPEG audio', 'kindAudioMPEG4' : 'MPEG-4 audio', 'kindAudioMIDI' : 'MIDI audio', 'kindAudioOGG' : 'Ogg Vorbis audio', 'kindAudioWAV' : 'WAV audio', 'AudioPlaylist' : 'MP3 playlist', 'kindVideo' : 'Video media', 'kindVideoDV' : 'DV movie', 'kindVideoMPEG' : 'MPEG movie', 'kindVideoMPEG4' : 'MPEG-4 movie', 'kindVideoAVI' : 'AVI movie', 'kindVideoMOV' : 'Quick Time movie', 'kindVideoWM' : 'Windows Media movie', 'kindVideoFlash' : 'Flash movie', 'kindVideoMKV' : 'Matroska movie', 'kindVideoOGG' : 'Ogg movie' } }; })); plugins/file-manager-advanced/application/library/js/i18n/elfinder.tr.js000064400000103200147176754550022254 0ustar00/** * Türkçe translation * @author I.Taskinoglu & A.Kaya * @author Abdullah ELEN * @author Osman KAYAN * @author Ali KAYAN * @author Cengiz AKCAN cengiz@vobo.company * @version 2022-05-08 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.tr = { translator : 'I.Taskinoglu & A.Kaya <alikaya@armsyazilim.com>, Abdullah ELEN <abdullahelen@msn.com>, Osman KAYAN <osmnkayan@gmail.com>, alikayan95@gmail.com, Cengiz AKCAN cengiz@vobo.company, Ali KAYAN <alikayan95@gmail.com>', language : 'Türkçe', direction : 'ltr', dateFormat : 'd.m.Y H:i', // will show like: 08.05.2022 21:53 fancyDateFormat : '$1 H:i', // will show like: Bugün 21:53 nonameDateFormat : 'ymd-His', // noname upload will show like: 220508-215305 messages : { /********************************** errors **********************************/ 'error' : 'Hata', 'errUnknown' : 'Bilinmeyen hata.', 'errUnknownCmd' : 'Bilinmeyen komut.', 'errJqui' : 'Geçersiz jQuery UI yapılandırması. Seçilebilir, sürükle ve bırak bileşenlerini içermelidir.', 'errNode' : 'elFinder, DOM Element\'ini oluşturması gerekir.', 'errURL' : 'Geçersiz elFinder yapılandırması! URL seçeneği ayarlı değil.', 'errAccess' : 'Erişim engellendi.', 'errConnect' : 'Sunucuya bağlanamıyor.', 'errAbort' : 'Bağlantı durduruldu.', 'errTimeout' : 'Bağlantı zaman aşımı.', 'errNotFound' : 'Sunucu bulunamadı.', 'errResponse' : 'Geçersiz sunucu yanıtı.', 'errConf' : 'Geçersiz sunucu yapılandırması.', 'errJSON' : 'PHP JSON modülü kurulu değil.', 'errNoVolumes' : 'Okunabilir birimler mevcut değil.', 'errCmdParams' : '"$1" komutu için geçersiz parametre.', 'errDataNotJSON' : 'Bu veri JSON formatında değil.', 'errDataEmpty' : 'Boş veri.', 'errCmdReq' : 'Sunucu isteği için komut adı gerekli.', 'errOpen' : '"$1" açılamıyor.', 'errNotFolder' : 'Bu nesne bir klasör değil.', 'errNotFile' : 'Bu nesne bir dosya değil.', 'errRead' : '"$1" okunamıyor.', 'errWrite' : '"$1" yazılamıyor.', 'errPerm' : 'Yetki engellendi.', 'errLocked' : '"$1" kilitli. Bu nedenle taşıma, yeniden adlandırma veya kaldırma yapılamıyor.', 'errExists' : '"$1" adında bir dosya zaten var.', 'errInvName' : 'Geçersiz dosya ismi.', 'errInvDirname' : 'Geçersiz klasör ismi', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : 'Klasör bulunamıyor.', 'errFileNotFound' : 'Dosya bulunamadı.', 'errTrgFolderNotFound' : 'Hedef klasör "$1" bulunamadı.', 'errPopup' : 'Tarayıcı popup penceresi açmayı engelledi. Tarayıcı ayarlarından dosya açmayı aktif hale getirin.', 'errMkdir' : 'Klasör oluşturulamıyor "$1".', 'errMkfile' : '"$1" dosyası oluşturulamıyor.', 'errRename' : '"$1" yeniden adlandırma yapılamıyor.', 'errCopyFrom' : '"$1" biriminden dosya kopyalamaya izin verilmedi.', 'errCopyTo' : '"$1" birimine dosya kopyalamaya izin verilmedi.', 'errMkOutLink' : 'Kök birim dışında bir bağlantı oluşturulamıyor', // from v2.1 added 03.10.2015 'errUpload' : 'Dosya yükleme hatası.', // old name - errUploadCommon 'errUploadFile' : '"$1" dosya yüklenemedi.', // old name - errUpload 'errUploadNoFiles' : 'Yüklenecek dosya bulunamadı.', 'errUploadTotalSize' : 'Veri izin verilen boyuttan büyük.', // old name - errMaxSize 'errUploadFileSize' : 'Dosya izin verilen boyuttan büyük.', // old name - errFileMaxSize 'errUploadMime' : 'Dosya türüne izin verilmedi.', 'errUploadTransfer' : '"$1" transfer hatası.', 'errUploadTemp' : 'Yükleme için geçici dosya yapılamıyor.', // from v2.1 added 26.09.2015 'errNotReplace' : '"$1" nesnesi bu konumda zaten var ve başka türde nesne ile değiştirilemez.', // new 'errReplace' : 'Değişiklik yapılamıyor "$1".', 'errSave' : '"$1" kaydedilemiyor.', 'errCopy' : '"$1" kopyalanamıyor.', 'errMove' : '"$1" taşınamıyor.', 'errCopyInItself' : '"$1" kendi içine kopyalanamaz.', 'errRm' : '"$1" kaldırılamıyor.', 'errTrash' : 'Çöp kutusuna taşınamıyor.', // from v2.1.24 added 30.4.2017 'errRmSrc' : 'Kaynak dosya(lar) kaldırılamıyor.', 'errExtract' : '"$1" kaynağından dosyalar çıkartılamıyor.', 'errArchive' : 'Arşiv oluşturulamıyor.', 'errArcType' : 'Desteklenmeyen arşiv türü.', 'errNoArchive' : 'Dosya arşiv değil veya desteklenmeyen arşiv türü.', 'errCmdNoSupport' : 'Sunucu bu komutu desteklemiyor.', 'errReplByChild' : '“$1” klasörü içerdiği bir öğe tarafından değiştirilemez.', 'errArcSymlinks' : 'Sembolik bağlantıları içeren arşivlerin açılması güvenlik nedeniyle reddedildi.', // edited 24.06.2012 'errArcMaxSize' : 'Arşiv dosyaları izin verilen maksimum boyutu aştı.', 'errResize' : '"$1" yeniden boyutlandırılamıyor.', 'errResizeDegree' : 'Geçersiz döndürme derecesi.', // added 7.3.2013 'errResizeRotate' : 'Resim döndürülemiyor.', // added 7.3.2013 'errResizeSize' : 'Geçersiz resim boyutu.', // added 7.3.2013 'errResizeNoChange' : 'Resim boyutu değiştirilemez.', // added 7.3.2013 'errUsupportType' : 'Desteklenmeyen dosya türü.', 'errNotUTF8Content' : 'Dosya "$1" UTF-8 olmadığından düzenlenemez.', // added 9.11.2011 'errNetMount' : '"$1" bağlanamadı.', // added 17.04.2012 'errNetMountNoDriver' : 'Desteklenmeyen protokol.', // added 17.04.2012 'errNetMountFailed' : 'Bağlama hatası.', // added 17.04.2012 'errNetMountHostReq' : 'Sunucu gerekli.', // added 18.04.2012 'errSessionExpires' : 'Uzun süre işlem yapılmadığından oturumunuz sonlandı.', 'errCreatingTempDir' : 'Geçici dizin oluşturulamıyor: "$1"', 'errFtpDownloadFile' : 'Dosya FTP: "$1" adresinden indirilemiyor.', 'errFtpUploadFile' : 'Dosya FTP: "$1" adresine yüklenemiyor.', 'errFtpMkdir' : 'FTP: "$1" üzerinde uzak dizin oluşturulamıyor.', 'errArchiveExec' : '"$1" Dosyalarında arşivlenirken hata oluştu.', 'errExtractExec' : '"$1" Dosyaları arşivden çıkartılırken hata oluştu.', 'errNetUnMount' : 'Bağlantı kaldırılamıyor.', // from v2.1 added 30.04.2012 'errConvUTF8' : 'UTF-8\'e dönüştürülemez.', // from v2.1 added 08.04.2014 'errFolderUpload' : 'Klasör yükleyebilmek için daha modern bir tarayıcıya ihtiyacınız var.', // from v2.1 added 26.6.2015 'errSearchTimeout' : '"$1" araması zaman aşımına uğradı. Kısmi arama sonuçları listeleniyor.', // from v2.1 added 12.1.2016 'errReauthRequire' : 'Yeniden yetkilendirme gerekiyor.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'Maksimum seçilebilir öge sayısı $1 adettir', // from v2.1.17 added 17.10.2016 'errRestore' : 'Çöp kutusundan geri yüklenemiyor. Geri yükleme notkası belirlenemiyor.', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'Editör bu dosya türünü bulamıyor.', // from v2.1.25 added 23.5.2017 'errServerError' : 'Sunucu tarafında beklenilmeyen bir hata oluştu.', // from v2.1.25 added 16.6.2017 'errEmpty' : '"$1" klasörü boşaltılamıyor.', // from v2.1.25 added 22.6.2017 'moreErrors' : '"$1" veya daha fazla hata', // from v2.1.44 added 9.12.2018 'errMaxMkdirs' : 'Tek seferde 1$\'a kadar klasör oluşturabilirsiniz.', // from v2.1.58 added 20.6.2021 /******************************* commands names ********************************/ 'cmdarchive' : 'Arşiv oluştur', 'cmdback' : 'Geri', 'cmdcopy' : 'Kopyala', 'cmdcut' : 'Kes', 'cmddownload' : 'İndir', 'cmdduplicate' : 'Çoğalt', 'cmdedit' : 'Dosyayı düzenle', 'cmdextract' : 'Arşivden dosyaları çıkart', 'cmdforward' : 'İleri', 'cmdgetfile' : 'Dosyaları seç', 'cmdhelp' : 'Bu yazılım hakkında', 'cmdhome' : 'Anasayfa', 'cmdinfo' : 'Bilgi göster', 'cmdmkdir' : 'Yeni klasör', 'cmdmkdirin' : 'Yeni Klasör / aç', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'Yeni dosya', 'cmdopen' : 'Aç', 'cmdpaste' : 'Yapıştır', 'cmdquicklook' : 'Ön izleme', 'cmdreload' : 'Geri Yükle', 'cmdrename' : 'Yeniden Adlandır', 'cmdrm' : 'Sil', 'cmdtrash' : 'Çöpe at', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'geri yükle', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'Dosyaları bul', 'cmdup' : 'Üst dizine çık', 'cmdupload' : 'Dosyaları yükle', 'cmdview' : 'Görüntüle', 'cmdresize' : 'Resmi yeniden boyutlandır', 'cmdsort' : 'Sırala', 'cmdnetmount' : 'Bağlı ağ birimi', // added 18.04.2012 'cmdnetunmount': 'Devredışı bırak', // from v2.1 added 30.04.2012 'cmdplaces' : 'Yerlere', // added 28.12.2014 'cmdchmod' : 'Mod değiştir', // from v2.1 added 20.6.2015 'cmdopendir' : 'Klasör aç', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'Sütun genişliğini sıfırla', // from v2.1.13 added 12.06.2016 'cmdfullscreen': 'Tam ekran', // from v2.1.15 added 03.08.2016 'cmdmove' : 'Taşı', // from v2.1.15 added 21.08.2016 'cmdempty' : 'Klasörü boşalt', // from v2.1.25 added 22.06.2017 'cmdundo' : 'Geri al', // from v2.1.27 added 31.07.2017 'cmdredo' : 'Yinele', // from v2.1.27 added 31.07.2017 'cmdpreference': 'Tercihler', // from v2.1.27 added 03.08.2017 'cmdselectall' : 'Tümünü seç', // from v2.1.28 added 15.08.2017 'cmdselectnone': 'Seçimi temizle', // from v2.1.28 added 15.08.2017 'cmdselectinvert': 'Diğerlerini seç', // from v2.1.28 added 15.08.2017 'cmdopennew' : 'Yeni Sekmede aç', // from v2.1.38 added 3.4.2018 'cmdhide' : 'Ögeyi Gizle', // from v2.1.41 added 24.7.2018 /*********************************** buttons ***********************************/ 'btnClose' : 'Kapat', 'btnSave' : 'Kaydet', 'btnRm' : 'Kaldır', 'btnApply' : 'Uygula', 'btnCancel' : 'İptal', 'btnNo' : 'Hayır', 'btnYes' : 'Evet', 'btnMount' : 'Bağla', // added 18.04.2012 'btnApprove': 'Git $1 & onayla', // from v2.1 added 26.04.2012 'btnUnmount': 'Bağlantıyı kes', // from v2.1 added 30.04.2012 'btnConv' : 'Dönüştür', // from v2.1 added 08.04.2014 'btnCwd' : 'Buraya', // from v2.1 added 22.5.2015 'btnVolume' : 'Birim', // from v2.1 added 22.5.2015 'btnAll' : 'Hepsi', // from v2.1 added 22.5.2015 'btnMime' : 'MIME Türü', // from v2.1 added 22.5.2015 'btnFileName':'Dosya adı', // from v2.1 added 22.5.2015 'btnSaveClose': 'Kaydet & Kapat', // from v2.1 added 12.6.2015 'btnBackup' : 'Yedekle', // fromv2.1 added 28.11.2015 'btnRename' : 'Yeniden adlandır', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'Yeniden adlandır(Tümü)', // from v2.1.24 added 6.4.2017 'btnPrevious' : 'Önceki ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : 'Sonraki ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : 'Farklı Kaydet', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'Klasör Aç', 'ntffile' : 'Dosya Aç', 'ntfreload' : 'Klasör içeriğini yeniden yükle', 'ntfmkdir' : 'Dizin oluşturuluyor', 'ntfmkfile' : 'Dosyaları oluşturma', 'ntfrm' : 'Dosyaları sil', 'ntfcopy' : 'Dosyaları kopyala', 'ntfmove' : 'Dosyaları taşı', 'ntfprepare' : 'Dosyaları kopyalamaya hazırla', 'ntfrename' : 'Dosyaları yeniden adlandır', 'ntfupload' : 'Dosyalar yükleniyor', 'ntfdownload' : 'Dosyalar indiriliyor', 'ntfsave' : 'Dosyalar kaydediliyor', 'ntfarchive' : 'Arşiv oluşturuluyor', 'ntfextract' : 'Arşivden dosyalar çıkartılıyor', 'ntfsearch' : 'Dosyalar aranıyor', 'ntfresize' : 'Resimler boyutlandırılıyor', 'ntfsmth' : 'İşlem yapılıyor', 'ntfloadimg' : 'Resim yükleniyor', 'ntfnetmount' : 'Ağ birimine bağlanılıyor', // added 18.04.2012 'ntfnetunmount': 'Ağ birimi bağlantısı kesiliyor', // from v2.1 added 30.04.2012 'ntfdim' : 'Resim boyutu alınıyor', // added 20.05.2013 'ntfreaddir' : 'Klasör bilgisi okunuyor', // from v2.1 added 01.07.2013 'ntfurl' : 'Bağlantının URL\'si alınıyor', // from v2.1 added 11.03.2014 'ntfchmod' : 'Dosya modu değiştiriliyor', // from v2.1 added 20.6.2015 'ntfpreupload': 'Yüklenen dosya ismi doğrulanıyor', // from v2.1 added 31.11.2015 'ntfzipdl' : 'İndirilecek dosya oluşturuluyor', // from v2.1.7 added 23.1.2016 'ntfparents' : 'Dosya yolu bilgileri alınıyor', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'Yüklenen dosya işleniyor', // from v2.1.17 added 2.11.2016 'ntftrash' : 'Çöp kutusuna atma', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'Çöp kutusundan geri yükle', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'Hedef klasör kontrol ediliyor', // from v2.1.24 added 3.5.2017 'ntfundo' : 'Önceki işlemi geri alma', // from v2.1.27 added 31.07.2017 'ntfredo' : 'Önceki geri almayı tekrarlama', // from v2.1.27 added 31.07.2017 'ntfchkcontent' : 'İçeriği kontrol ediniz', // from v2.1.41 added 3.8.2018 /*********************************** volumes *********************************/ 'volume_Trash' : 'Çöp', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : 'Bilinmiyor', 'Today' : 'Bugün', 'Yesterday' : 'Dün', 'msJan' : 'Oca', 'msFeb' : 'Şub', 'msMar' : 'Mar', 'msApr' : 'Nis', 'msMay' : 'May', 'msJun' : 'Haz', 'msJul' : 'Tem', 'msAug' : 'Ağu', 'msSep' : 'Eyl', 'msOct' : 'Ekm', 'msNov' : 'Kas', 'msDec' : 'Ara', 'January' : 'Ocak', 'February' : 'Şubat', 'March' : 'Mart', 'April' : 'Nisan', 'May' : 'Mayıs', 'June' : 'Haziran', 'July' : 'Temmuz', 'August' : 'Ağustos', 'September' : 'Eylül', 'October' : 'Ekim', 'November' : 'Kasım', 'December' : 'Aralık', 'Sunday' : 'Pazar', 'Monday' : 'Pazartesi', 'Tuesday' : 'Salı', 'Wednesday' : 'Çarşamba', 'Thursday' : 'Perşembe', 'Friday' : 'Cuma', 'Saturday' : 'Cumartesi', 'Sun' : 'Paz', 'Mon' : 'Pzt', 'Tue' : 'Sal', 'Wed' : 'Çar', 'Thu' : 'Per', 'Fri' : 'Cum', 'Sat' : 'Cmt', /******************************** sort variants ********************************/ 'sortname' : 'Ada göre', 'sortkind' : 'Türe göre', 'sortsize' : 'Boyuta göre', 'sortdate' : 'Tarihe göre', 'sortFoldersFirst' : 'Önce klasörler', 'sortperm' : 'izinlere göre', // from v2.1.13 added 13.06.2016 'sortmode' : 'moduna göre', // from v2.1.13 added 13.06.2016 'sortowner' : 'sahibine göre', // from v2.1.13 added 13.06.2016 'sortgroup' : 'grubuna göre', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'Ayrıca ağaç görünümü', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : 'YeniDosya.txt', // added 10.11.2015 'untitled folder' : 'YeniKlasor', // added 10.11.2015 'Archive' : 'YeniArsiv', // from v2.1 added 10.11.2015 'untitled file' : 'YeniDosya.$1', // from v2.1.41 added 6.8.2018 'extentionfile' : '$1: Dosya', // from v2.1.41 added 6.8.2018 'extentiontype' : '$1: $2', // from v2.1.43 added 17.10.2018 /********************************** messages **********************************/ 'confirmReq' : 'Onay gerekli', 'confirmRm' : 'Dosyaları kaldırmak istediğinden emin misin?
                Bu işlem geri alınamaz!', 'confirmRepl' : 'Eski dosya yenisi ile değiştirilsin mi?', 'confirmRest' : 'Mevcut öge çöp kutusundaki ögeyle değiştirilsin mi?', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'UTF-8 değil
                UTF-8\'e dönüştürülsün mü?
                Dönüştürme sonrası kaydedebilmek için içeriğin UTF-8 olması gerekir.', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'Bu dosyanın karakter kodlaması tespit edilemedi. Düzenleme için geçici olarak UTF-8\'e dönüştürülmesi gerekir.
                Lütfen bu dosyanın karakter kodlamasını seçin.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : 'Düzenlenmiş içerik.
                Değişiklikleri kaydetmek istemiyorsanız son yapılanlar kaybolacak.', // from v2.1 added 15.7.2015 'confirmTrash' : 'Öğeleri çöp kutusuna taşımak istediğinizden emin misiniz?', //from v2.1.24 added 29.4.2017 'confirmMove' : '"$1" değiştirmek istediğinizden emin misiniz?', //from v2.1.50 added 27.7.2019 'apllyAll' : 'Tümüne uygula', 'name' : 'İsim', 'size' : 'Boyut', 'perms' : 'Yetkiler', 'modify' : 'Değiştirildi', 'kind' : 'Tür', 'read' : 'oku', 'write' : 'yaz', 'noaccess' : 'erişim yok', 'and' : 've', 'unknown' : 'bilinimiyor', 'selectall' : 'Tüm dosyaları seç', 'selectfiles' : 'Dosya(lar)ı seç', 'selectffile' : 'İlk dosyayı seç', 'selectlfile' : 'Son dosyayı seç', 'viewlist' : 'Liste görünümü', 'viewicons' : 'Simge görünümü', 'viewSmall' : 'Small iconlar', // from v2.1.39 added 22.5.2018 'viewMedium' : 'Medium iconlar', // from v2.1.39 added 22.5.2018 'viewLarge' : 'Large iconlar', // from v2.1.39 added 22.5.2018 'viewExtraLarge' : 'Extra large iconlar', // from v2.1.39 added 22.5.2018 'places' : 'Yerler', 'calc' : 'Hesapla', 'path' : 'Yol', 'aliasfor' : 'Takma adı:', 'locked' : 'Kilitli', 'dim' : 'Ölçüler', 'files' : 'Dosyalar', 'folders' : 'Klasörler', 'items' : 'Nesneler', 'yes' : 'evet', 'no' : 'hayır', 'link' : 'Bağlantı', 'searcresult' : 'Arama sonuçları', 'selected' : 'Seçili öğeler', 'about' : 'Hakkında', 'shortcuts' : 'Kısayollar', 'help' : 'Yardım', 'webfm' : 'Web dosyası yöneticisi', 'ver' : 'Sürüm', 'protocolver' : 'protokol sürümü', 'homepage' : 'Proje Anasayfası', 'docs' : 'Belgeler', 'github' : 'Github\'ta bizi takip edin', 'twitter' : 'Twitter\'da bizi takip edin', 'facebook' : 'Facebook\'ta bize katılın', 'team' : 'Takım', 'chiefdev' : 'geliştirici şefi', 'developer' : 'geliştirici', 'contributor' : 'iştirakçi', 'maintainer' : 'bakıcı', 'translator' : 'çeviri', 'icons' : 'Simgeler', 'dontforget' : 've havlunuzu almayı unutmayın', 'shortcutsof' : 'Kısayollar devre dışı', 'dropFiles' : 'Dosyaları buraya taşı', 'or' : 'veya', 'selectForUpload' : 'Yüklemek için dosyaları seçin', 'moveFiles' : 'Dosyaları taşı', 'copyFiles' : 'Dosyaları kopyala', 'restoreFiles' : 'Öğeleri geri yükle', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'Yerlerinden sil', 'aspectRatio' : 'Görünüm oranı', 'scale' : 'Ölçeklendir', 'width' : 'Genişlik', 'height' : 'Yükseklik', 'resize' : 'Boyutlandır', 'crop' : 'Kırp', 'rotate' : 'Döndür', 'rotate-cw' : '90 derece sağa döndür', 'rotate-ccw' : '90 derece sola döndür', 'degree' : 'Derece', 'netMountDialogTitle' : 'Bağlı (Mount) ağ birimi', // added 18.04.2012 'protocol' : 'Protokol', // added 18.04.2012 'host' : 'Sunucu', // added 18.04.2012 'port' : 'Kapı(Port)', // added 18.04.2012 'user' : 'Kullanıcı', // added 18.04.2012 'pass' : 'Şifre', // added 18.04.2012 'confirmUnmount' : 'Bağlantı kesilsin mi $1?', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'Dosyaları tarayıcıdan yapıştır veya bırak', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'Dosyaları buraya yapıştır veya bırak', // from v2.1 added 07.04.2014 'encoding' : 'Kodlama', // from v2.1 added 19.12.2014 'locale' : 'Yerel', // from v2.1 added 19.12.2014 'searchTarget' : 'Hedef: $1', // from v2.1 added 22.5.2015 'searchMime' : 'Giriş MIME Türüne Göre Arama', // from v2.1 added 22.5.2015 'owner' : 'Sahibi', // from v2.1 added 20.6.2015 'group' : 'Grup', // from v2.1 added 20.6.2015 'other' : 'Diğer', // from v2.1 added 20.6.2015 'execute' : 'Çalıştır', // from v2.1 added 20.6.2015 'perm' : 'Yetki', // from v2.1 added 20.6.2015 'mode' : 'Mod', // from v2.1 added 20.6.2015 'emptyFolder' : 'Klasör boş', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'Klasör boş\\A Eklemek için sürükleyin', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'Klasör boş\\A Eklemek için basılı tutun', // from v2.1.6 added 30.12.2015 'quality' : 'Kalite', // from v2.1.6 added 5.1.2016 'autoSync' : 'Otomatik senkronizasyon', // from v2.1.6 added 10.1.2016 'moveUp' : 'Yukarı taşı', // from v2.1.6 added 18.1.2016 'getLink' : 'URL bağlantısı alın', // from v2.1.7 added 9.2.2016 'selectedItems' : 'Seçili öğeler ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'Klasör kimliği', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'Çevrimdışı erişime izin ver', // from v2.1.10 added 3.25.2016 'reAuth' : 'Yeniden kimlik doğrulaması için', // from v2.1.10 added 3.25.2016 'nowLoading' : 'Şimdi yükleniyor...', // from v2.1.12 added 4.26.2016 'openMulti' : 'Çoklu dosya aç', // from v2.1.12 added 5.14.2016 'openMultiConfirm': '$1 dosyalarını açmaya çalışıyorsunuz. Tarayıcıda açmak istediğinizden emin misiniz?', // from v2.1.12 added 5.14.2016 'emptySearch' : 'Arama hedefinde eşleşen sonuç bulunamadı.', // from v2.1.12 added 5.16.2016 'editingFile' : 'Dosya düzenleniyor.', // from v2.1.13 added 6.3.2016 'hasSelected' : '$1 öğe seçtiniz.', // from v2.1.13 added 6.3.2016 'hasClipboard' : 'Panonuzda $1 öğeniz var.', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'Artan arama yalnızca geçerli görünümden yapılır.', // from v2.1.13 added 6.30.2016 'reinstate' : 'Eski durumuna getir', // from v2.1.15 added 3.8.2016 'complete' : '$1 tamamlandı', // from v2.1.15 added 21.8.2016 'contextmenu' : 'Durum menüsü', // from v2.1.15 added 9.9.2016 'pageTurning' : 'Sayfa çevir', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'Disk kök dizini', // from v2.1.16 added 16.9.2016 'reset' : 'Sıfırla', // from v2.1.16 added 1.10.2016 'bgcolor' : 'Arkaplan rengi', // from v2.1.16 added 1.10.2016 'colorPicker' : 'Renk seçici', // from v2.1.16 added 1.10.2016 '8pxgrid' : '8px Izgara', // from v2.1.16 added 4.10.2016 'enabled' : 'Etkin', // from v2.1.16 added 4.10.2016 'disabled' : 'Engelli', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'Geçerli görünümde arama sonucu bulunamadı. Arama sonucunu genişletmek için \\APress [Enter] yapın', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'Geçerli görünümde ilk harf arama sonuçları boş.', // from v2.1.23 added 24.3.2017 'textLabel' : 'Metin etiketi', // from v2.1.17 added 13.10.2016 'minsLeft' : '$1 dakika kaldı', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'Seçilen kodlamayla yeniden aç', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'Seçilen kodlamayla kaydet', // from v2.1.19 added 2.12.2016 'selectFolder' : 'Klasör seç', // from v2.1.20 added 13.12.2016 'firstLetterSearch': 'İlk arama sayfası', // from v2.1.23 added 24.3.2017 'presets' : 'Hazır ayarlar', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : 'çok fazla öge var çöp kutusuna atılamaz.', // from v2.1.25 added 9.6.2017 'TextArea' : 'Metin alanı(TextArea)', // from v2.1.25 added 14.6.2017 'folderToEmpty' : '"$1" klasörünü boşalt.', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : '"$1" klasöründe öge yok.', // from v2.1.25 added 22.6.2017 'preference' : 'Tercih', // from v2.1.26 added 28.6.2017 'language' : 'Dil ayarları', // from v2.1.26 added 28.6.2017 'clearBrowserData': 'Bu tarayıcıda kayıtlı ayarları başlat', // from v2.1.26 added 28.6.2017 'toolbarPref' : 'Araç çubuğu ayarları', // from v2.1.27 added 2.8.2017 'charsLeft' : '... $1 karakter kaldı', // from v2.1.29 added 30.8.2017 'linesLeft' : '... $1 satır kaldı.', // from v2.1.52 added 16.1.2020 'sum' : 'Toplam', // from v2.1.29 added 28.9.2017 'roughFileSize' : 'Kaba dosya boyutu', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : 'Fare ile üzerine gelince diyalog öğesi odaklansın', // from v2.1.30 added 2.11.2017 'select' : 'Seç', // from v2.1.30 added 23.11.2017 'selectAction' : 'Dosya seçildiğinde işleme al', // from v2.1.30 added 23.11.2017 'useStoredEditor' : 'Geçen sefer kullanılan editörle aç', // from v2.1.30 added 23.11.2017 'selectinvert' : 'Zıt seçim', // from v2.1.30 added 25.11.2017 'renameMultiple' : '$1 seçilen öğeleri $2 gibi yeniden adlandırmak istediğinizden emin misiniz?
                Bu geri alınamaz!', // from v2.1.31 added 4.12.2017 'batchRename' : 'Yığın adını değiştir', // from v2.1.31 added 8.12.2017 'plusNumber' : '+ Sayı', // from v2.1.31 added 8.12.2017 'asPrefix' : 'Ön ek kele', // from v2.1.31 added 8.12.2017 'asSuffix' : 'Son ek ekle', // from v2.1.31 added 8.12.2017 'changeExtention' : 'Uzantıyı değiştir', // from v2.1.31 added 8.12.2017 'columnPref' : 'Sütun ayarları (Liste görünümü)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : 'Tüm değişiklikler hemen arşive yansıtılacaktır.', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : 'Herhangi bir değişiklik, bu birimi kaldırılıncaya kadar yansıtılmayacaktır.', // from v2.1.33 added 2.3.2018 'unmountChildren' : 'Bu cihaza monte edilen aşağıdaki birim (ler) de bağlanmamıştır. Çıkardığınızdan emin misiniz?', // from v2.1.33 added 5.3.2018 'selectionInfo' : 'Seçim Bilgisi', // from v2.1.33 added 7.3.2018 'hashChecker' : 'Dosya imza(hash) algoritmaları', // from v2.1.33 added 10.3.2018 'infoItems' : 'öğelerin bilgisi (Seçim Bilgi Paneli)', // from v2.1.38 added 28.3.2018 'pressAgainToExit': 'Çıkmak için tekrar basın.', // from v2.1.38 added 1.4.2018 'toolbar' : 'Araç Çubuğu', // from v2.1.38 added 4.4.2018 'workspace' : 'Çalışma alanı', // from v2.1.38 added 4.4.2018 'dialog' : 'Diyalog', // from v2.1.38 added 4.4.2018 'all' : 'Tümü', // from v2.1.38 added 4.4.2018 'iconSize' : 'İcon Boyutu (İcon Görünümü İçin)', // from v2.1.39 added 7.5.2018 'editorMaximized' : 'Maksimum düzenleyici penceresini aç', // from v2.1.40 added 30.6.2018 'editorConvNoApi' : 'API ile dönüşüm şu anda mevcut olmadığından, lütfen web sitesinde dönüştürün.', //from v2.1.40 added 8.7.2018 'editorConvNeedUpload' : 'Dönüştürmeden sonra, dönüştürülen dosyayı kaydetmek için öğe URL\'si veya indirilen bir dosya ile karşıya yüklemeniz gerekir.', //from v2.1.40 added 8.7.2018 'convertOn' : ' $1 site çevrildi', // from v2.1.40 added 10.7.2018 'integrations' : 'Entegrasyonlar', // from v2.1.40 added 11.7.2018 'integrationWith' : 'Bu elFinder aşağıdaki harici hizmetlere entegre edilmiştir. Lütfen kullanmadan önce kullanım koşullarını, gizlilik politikasını vb. Kontrol edin.', // from v2.1.40 added 11.7.2018 'showHidden' : 'Gizli ögeleri aç.', // from v2.1.41 added 24.7.2018 'hideHidden' : 'Gizli ögeleri kapat.', // from v2.1.41 added 24.7.2018 'toggleHidden' : 'Gizli ögeleri aç/kapat', // from v2.1.41 added 24.7.2018 'makefileTypes' : '"Yeni dosya" ile etkinleştirilecek dosya türleri', // from v2.1.41 added 7.8.2018 'typeOfTextfile' : 'Text dosyası tipi.', // from v2.1.41 added 7.8.2018 'add' : 'Ekle', // from v2.1.41 added 7.8.2018 'theme' : 'Tema', // from v2.1.43 added 19.10.2018 'default' : 'Varsayılan', // from v2.1.43 added 19.10.2018 'description' : 'Açıklama', // from v2.1.43 added 19.10.2018 'website' : 'Websayfası', // from v2.1.43 added 19.10.2018 'author' : 'Yazar', // from v2.1.43 added 19.10.2018 'email' : 'E-mail', // from v2.1.43 added 19.10.2018 'license' : 'Lisans', // from v2.1.43 added 19.10.2018 'exportToSave' : 'Bu öğe kaydedilemez. Düzenlemeleri kaybetmemek için PC\'nize aktarmanız gerekir.', // from v2.1.44 added 1.12.2018 'dblclickToSelect': 'Dosyayı seçmek için çift tıklayın.', // from v2.1.47 added 22.1.2019 'useFullscreen' : 'Tam ekran modunu kullan', // from v2.1.47 added 19.2.2019 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Bilinmiyor', 'kindRoot' : 'Sürücü Kök dizini', // from v2.1.16 added 16.10.2016 'kindFolder' : 'Klasör', 'kindSelects' : 'Seçim', // from v2.1.29 added 29.8.2017 'kindAlias' : 'Alias (Takma ad)', 'kindAliasBroken' : 'Bozuk alias', // applications 'kindApp' : 'Uygulama', 'kindPostscript' : 'Postscript dosyası', 'kindMsOffice' : 'Microsoft Office dosyası', 'kindMsWord' : 'Microsoft Word dosyası', 'kindMsExcel' : 'Microsoft Excel dosyası', 'kindMsPP' : 'Microsoft Powerpoint sunumu', 'kindOO' : 'Open Office dosyası', 'kindAppFlash' : 'Flash uygulaması', 'kindPDF' : 'PDF', 'kindTorrent' : 'Bittorrent dosyası', 'kind7z' : '7z arşivi', 'kindTAR' : 'TAR arşivi', 'kindGZIP' : 'GZIP arşivi', 'kindBZIP' : 'BZIP arşivi', 'kindXZ' : 'XZ arşivi', 'kindZIP' : 'ZIP arşivi', 'kindRAR' : 'RAR arşivi', 'kindJAR' : 'Java JAR dosyası', 'kindTTF' : 'True Type fontu', 'kindOTF' : 'Open Type fontu', 'kindRPM' : 'RPM paketi', // texts 'kindText' : 'Metin dosyası', 'kindTextPlain' : 'Düz metin', 'kindPHP' : 'PHP kodu', 'kindCSS' : 'CSS dosyası', 'kindHTML' : 'HTML dosyası', 'kindJS' : 'Javascript kodu', 'kindRTF' : 'Zengin Metin Belgesi', 'kindC' : 'C kodu', 'kindCHeader' : 'C başlık kodu', 'kindCPP' : 'C++ kodu', 'kindCPPHeader' : 'C++ başlık kodu', 'kindShell' : 'Unix shell scripti', 'kindPython' : 'Python kodu', 'kindJava' : 'Java kodu', 'kindRuby' : 'Ruby kodu', 'kindPerl' : 'Perl scripti', 'kindSQL' : 'SQL kodu', 'kindXML' : 'XML dosyası', 'kindAWK' : 'AWK kodu', 'kindCSV' : 'CSV', 'kindDOCBOOK' : 'Docbook XML dosyası', 'kindMarkdown' : 'Markdown dosyası', // added 20.7.2015 // images 'kindImage' : 'Resim', 'kindBMP' : 'BMP dosyası', 'kindJPEG' : 'JPEG dosyası', 'kindGIF' : 'GIF dosyası', 'kindPNG' : 'PNG dosyası', 'kindTIFF' : 'TIFF dosyası', 'kindTGA' : 'TGA dosyası', 'kindPSD' : 'Adobe Photoshop dosyası', 'kindXBITMAP' : 'X bitmap dosyası', 'kindPXM' : 'Pixelmator dosyası', // media 'kindAudio' : 'Ses ortamı', 'kindAudioMPEG' : 'MPEG ses', 'kindAudioMPEG4' : 'MPEG-4 ses', 'kindAudioMIDI' : 'MIDI ses', 'kindAudioOGG' : 'Ogg Vorbis ses', 'kindAudioWAV' : 'WAV ses', 'AudioPlaylist' : 'MP3 listesi', 'kindVideo' : 'Video ortamı', 'kindVideoDV' : 'DV video', 'kindVideoMPEG' : 'MPEG video', 'kindVideoMPEG4' : 'MPEG-4 video', 'kindVideoAVI' : 'AVI video', 'kindVideoMOV' : 'Quick Time video', 'kindVideoWM' : 'Windows Media video', 'kindVideoFlash' : 'Flash video', 'kindVideoMKV' : 'Matroska video', 'kindVideoOGG' : 'Ogg video' } }; })); plugins/file-manager-advanced/application/library/js/i18n/elfinder.ug_CN.js000064400000050160147176754550022630 0ustar00/** * Uyghur translation * @author Alim.Boyaq * @version 2014-12-19 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.ug_CN = { translator : 'تەرجىمە قىلغۇچى: ئۆتكۈر بىز شىركىتى info@otkur.biz', language : 'ئ‍ۇيغۇرچە', direction : 'rtl', dateFormat : 'Y-m-d H:i', fancyDateFormat : '$1 H:i', messages : { /********************************** errors **********************************/ 'error' : 'خاتالىق', 'errUnknown' : 'كۈتۈلمىگەن خاتالىقكەن.', 'errUnknownCmd' : 'كۈتۈلمىگەن بۇيرۇقكەن.', 'errJqui' : 'jQuery UI تەڭشىكى توغرا بولمىغان. چوقۇم Selectable، draggable، droppabl قاتارلىق بۆلەكلەر بولۇشى كېرەك.', 'errNode' : 'elFinder DOM ئېلىمىنتلىرىنى قۇرالىشى كېرەك.', 'errURL' : 'elFinder تەڭشىكى توغرا بولمىغان! URL تەڭشىكى يېزىلمىغان.', 'errAccess' : 'زىيارەت قىلىش چەكلەنگەن.', 'errConnect' : 'ئارقا سۇپىغا ئۇلاش مەغلۇپ بولدى..', 'errAbort' : 'ئارقا سۇپىغا توختىتىلدى.', 'errTimeout' : 'ئارقا سۇپىغا بەلگىلەنگەن ۋاقىتتا ئۇلىيالمىدى.', 'errNotFound' : 'ئارقا سۇپا تېپىلمىدى.', 'errResponse' : 'ئارقا سۇپىدىن توغرا بولمىغان ئىنكاس قايتتى.', 'errConf' : 'ئارقا سۇپا تەڭشىكى توغرا ئەمەس.', 'errJSON' : 'PHP JSON بۆلىكى قاچىلانمىغان.', 'errNoVolumes' : 'ئوقۇشقا بولىدىغان ھۈججەت خالتىسى يوق.', 'errCmdParams' : 'پارامېتىر خاتا، بۇيرۇق: "$1".', 'errDataNotJSON' : 'ئارقا سۇپا قايتۇرغان سانلىق مەلۇمات توغرا بولغان JSON ئەمەسكەن.', 'errDataEmpty' : 'ئارقا سۇپا قايتۇرغان سانلىق مەلۇمات قۇرۇقكەن.', 'errCmdReq' : 'ئارقا سۇپىدىكى بۇيرۇقنىڭ ئ‍سىمى تەمىنلىنىشى كېرەك.', 'errOpen' : '"$1"نى ئاچالمىدى.', 'errNotFolder' : 'ئوبىكىت مۇندەرىجە ئەمەسكەن.', 'errNotFile' : 'ئوبىكىت ھۈججەت ئەمەسكەن.', 'errRead' : '"$1"نى ئوقۇيالمىدى.', 'errWrite' : '"$1"نى يازالمىدى.', 'errPerm' : 'ھوقۇق يوق.', 'errLocked' : '"$1" تاقالغان,ئۆزگەرتەلمەيسىز.', 'errExists' : '"$1" ناملىق ھۈججەت باركەن.', 'errInvName' : 'توغرا بولمىغان ھۈججەت قىسقۇچ ئىسمى.', 'errFolderNotFound' : 'ھۈججەت قىسقۇچنى تاپالمىدى.', 'errFileNotFound' : 'ھۈججەتنى تاپالمىدى.', 'errTrgFolderNotFound' : '"$1" ناملىق ھۈججەت قىسقۇچنى تاپالمىدى.', 'errPopup' : 'سەكرەپ چىققان يېڭى بەتنى تور كۆرگۈچ كۆرسەتمىدى، ئۈستىدىكى ئەسكەرتىشتىن تور كۆرگۈچنى كۆرسىتىشكە تەڭشەڭ.', 'errMkdir' : '"$1" ناملىق ھۈججەت قىسقۇچنى قۇرالمىدى.', 'errMkfile' : '"$1" ناملىق ھۈججەتنى قۇرالمىدى.', 'errRename' : '"$1" ناملىق ھۈججەتنىڭ ئىسمىنى يېڭىلاش مەغلۇپ بولدى.', 'errCopyFrom' : ' "$1" ناملىق ئورۇندىن ھۈججەت كۆچۈرۈش چەكلەنگەن.', 'errCopyTo' : '"$1" ناملىق ئورۇنغا ھۈججەت كۆچۈرۈش چەكلەنگەن.', 'errUpload' : 'يۈكلەشتە خاتالىق كۆرۈلدى.', 'errUploadFile' : '"$1" ناملىق ھۈججەتنى يۈكلەشتە خاتالىق كۆرۈلدى.', 'errUploadNoFiles' : 'يۈكلىمەكچى بولغان ھۈججەت تېپىلمىدى.', 'errUploadTotalSize' : 'سانلىق مەلۇمات چوڭلىقى چەكلىمىدىن ئېشىپ كەتكەن..', 'errUploadFileSize' : 'ھۈججەت چوڭلىقى چەكلىمىدىن ئېشىپ كەتكەن..', 'errUploadMime' : 'چەكلەنگەن ھۈججەت شەكلى.', 'errUploadTransfer' : '"$1" ناملىق ھۈججەتنى يوللاشتا خاتالىق كۆرۈلدى.', 'errNotReplace' : '"$1" ناملىق ھۈججەت باركەن، ئالماشتۇرۇشقا بولمايدۇ.', // new 'errReplace' : '"$1" ناملىق ھۈججەتنى ئالماشتۇرۇش مەغلۇپ بولدى.', 'errSave' : '"$1" ناملىق ھۈججەتنى ساقلاش مەغلۇپ بولدى.', 'errCopy' : '"$1" ناملىق ھۈججەتنى كۆچۈرۈش مەغلۇپ بولدى.', 'errMove' : '"$1" ناملىق ھۈججەتنى يۆتكەش مەغلۇپ بولدى.', 'errCopyInItself' : '"$1" ناملىق ھۈججەتنى ئەسلى ئورنىغا يۆتكەش مەغلۇپ بولدى.', 'errRm' : '"$1" ناملىق ھۈججەتنى ئۆچۈرۈش مەغلۇپ بولدى.', 'errRmSrc' : 'ئەسلى ھۈججەتنى ئۆچۈرۈش مەغلۇپ بولدى.', 'errExtract' : ' "$1" ناملىق مەلۇماتتىن ھۈججەت ئايرىش مەغلۇپ بولدى..', 'errArchive' : 'پىرىسلانغان ھۈججەت ھاسىللاش مەغلۇپ بولدى.', 'errArcType' : 'بۇ خىل پىرىسلانغان ھۈججەت شەكلىنى سىستېما بىر تەرەپ قىلالمىدى.', 'errNoArchive' : 'ھۈججەت پىرىسلانغان ھۈججەت ئەمەس، ياكى توغرا پىرىسلانمىغان.', 'errCmdNoSupport' : 'بۇ خىل بۇيرۇقنى بىر تەرەپ قىلالمىدى.', 'errReplByChild' : '“$1” ناملىق ھۈججەت قىسقۇچنى ئالماشۇتۇرۇشقا بولمايدۇ.', 'errArcSymlinks' : 'بىخەتەرلىك ئۈچۈن بۇ مەشغۇلات ئەمەلدىن قالدۇرۇلدى..', 'errArcMaxSize' : 'پىرىسلانغان ھۈججەتنىڭ چوڭلىقى چەكلىمىدىن ئېشىپ كەنكەن.', 'errResize' : ' "$1" چوڭلۇقنى تەڭشەشكە بولمىدى.', 'errResizeDegree' : 'توغرا بولمىغان پىقىرىتىش گىرادۇسى', 'errResizeRotate' : 'رەسىمنى پىقىرىتىشقا بولمىدى.', 'errResizeSize' : 'توغرا بولمىغان رەسىم چوڭلىقى.', 'errResizeNoChange' : 'رەسىم چوڭلىقى ئۆزگەرمىگەن.', 'errUsupportType' : 'قوللىمايدىغان ھۈججەت شەكلى.', 'errNotUTF8Content' : '"$1" ناملىق ھۈججەتنىڭ كودى UTF-8ئەمەسكەن، تەھرىرلىگىلى بولمايدۇ.', // added 9.11.2011 'errNetMount' : ' "$1" نى يۈكلەشتە خاتلىق يۈز بەردى..', // added 17.04.2012 'errNetMountNoDriver' : 'بۇ خىل پروتوكول قوللانمىدى..', // added 17.04.2012 'errNetMountFailed' : 'يۈكلەش مەغلۇپ بولدى.', // added 17.04.2012 'errNetMountHostReq' : 'مۇلازىمىتىرنى كۆرسىتىپ بېرىڭ.', // added 18.04.2012 'errSessionExpires' : 'Your session has expired due to inactivity.', 'errCreatingTempDir' : 'Unable to create temporary directory: "$1"', 'errFtpDownloadFile' : 'Unable to download file from FTP: "$1"', 'errFtpUploadFile' : 'Unable to upload file to FTP: "$1"', 'errFtpMkdir' : 'Unable to create remote directory on FTP: "$1"', 'errArchiveExec' : 'Error while archiving files: "$1"', 'errExtractExec' : 'Error while extracting files: "$1"', /******************************* commands names ********************************/ 'cmdarchive' : 'پىرىسلاش', 'cmdback' : 'قايتىش', 'cmdcopy' : 'كۆچۈرۈش', 'cmdcut' : 'كېسىش', 'cmddownload' : 'چۈشۈرۈش', 'cmdduplicate' : 'نۇسخىلاش', 'cmdedit' : 'تەھرىرلەش', 'cmdextract' : 'پىرىستىن ھۈججەت چىقىرىش', 'cmdforward' : 'ئ‍الدىغا مېڭىش', 'cmdgetfile' : 'تاللاش', 'cmdhelp' : 'ئەپ ھەققىدە', 'cmdhome' : 'باش بەت', 'cmdinfo' : 'ئۇچۇرلىرى', 'cmdmkdir' : 'يېڭى ھۈججەت قىسقۇچ', 'cmdmkfile' : 'يېڭى ھۈججەت', 'cmdopen' : 'ئېچىش', 'cmdpaste' : 'چاپلاش', 'cmdquicklook' : 'كۆرۈش', 'cmdreload' : 'يېڭىلاش', 'cmdrename' : 'نام يېڭىلاش', 'cmdrm' : 'ئۆچۈرۈش', 'cmdsearch' : 'ھۈججەت ئىزدەش', 'cmdup' : 'ئالدىنقى مۇندەرىجىگە بېرىش', 'cmdupload' : 'يۈكلەش', 'cmdview' : 'كۆرۈش', 'cmdresize' : 'چوڭلىقىنى تەڭشەش', 'cmdsort' : 'تەرتىپ', 'cmdnetmount' : 'توردىن قوشۇش', // added 18.04.2012 /*********************************** buttons ***********************************/ 'btnClose' : 'تاقاش', 'btnSave' : 'ساقلاش', 'btnRm' : 'ئۆچۈرۈش', 'btnApply' : 'ئىشلىتىش', 'btnCancel' : 'بېكارلاش', 'btnNo' : 'ياق', 'btnYes' : 'ھەئە', 'btnMount' : 'يۈكلەش', // added 18.04.2012 /******************************** notifications ********************************/ 'ntfopen' : 'قىسقۇچنى ئېچىش', 'ntffile' : 'ھۈججەتنى ئېچىش', 'ntfreload' : 'يېڭىلاش', 'ntfmkdir' : 'قىسقۇچ قۇرۇش', 'ntfmkfile' : 'ھۈججەت قۇرۇش', 'ntfrm' : 'ئۆچۈرۈش', 'ntfcopy' : 'كۆچۈرۈش', 'ntfmove' : 'يۆتكەش', 'ntfprepare' : 'كۆچۈرۈش تەييارلىقى', 'ntfrename' : 'نام يېڭىلاش', 'ntfupload' : 'يۈكلەش', 'ntfdownload' : 'چۈشۈرۈش', 'ntfsave' : 'ساقلاش', 'ntfarchive' : 'پىرىسلاش', 'ntfextract' : 'پىرىستىن يېشىش', 'ntfsearch' : 'ئىزدەش', 'ntfresize' : 'چوڭلىقى ئۆزگەرتىلىۋاتىدۇ', 'ntfsmth' : 'ئالدىراش >_<', 'ntfloadimg' : 'رەسىم ئېچىلىۋاتىدۇ', 'ntfnetmount' : 'تور ھۈججىتى يۈكلىنىۋاتىدۇ', // added 18.04.2012 'ntfdim' : 'Acquiring image dimension', /************************************ dates **********************************/ 'dateUnknown' : 'ئېنىق ئەمەس', 'Today' : 'بۈگۈن', 'Yesterday' : 'تۆنۈگۈن', 'msJan' : '1-ئاي', 'msFeb' : '2-ئاي', 'msMar' : '3-ئاي', 'msApr' : '4-ئاي', 'msMay' : '5-ئاي', 'msJun' : '6-ئاي', 'msJul' : '7-ئاي', 'msAug' : '8-ئاي', 'msSep' : '9-ئ‍اي', 'msOct' : '10-ئاي', 'msNov' : '11-ئاي', 'msDec' : '12-ئاي', 'January' : '1-ئاي', 'February' : '2-ئاي', 'March' : '3-ئاي', 'April' : '4-ئاي', 'May' : '5-ئاي', 'June' : '6-ئاي', 'July' : '7-ئاي', 'August' : '8-ئاي', 'September' : '9-ئاي', 'October' : '10-ئاي', 'November' : '11-ئاي', 'December' : '12-ئاي', 'Sunday' : 'يەكشەنبە', 'Monday' : 'دۈشەنبە', 'Tuesday' : 'سەيشەنبە', 'Wednesday' : 'چارشەنبە', 'Thursday' : 'پەيشەنبە', 'Friday' : 'جۈمە', 'Saturday' : 'شەنبە', 'Sun' : 'يە', 'Mon' : 'دۈ', 'Tue' : 'سە', 'Wed' : 'چا', 'Thu' : 'پە', 'Fri' : 'جۈ', 'Sat' : 'شە', /******************************** sort variants ********************************/ 'sortname' : 'نامى ', 'sortkind' : 'شەكلى ', 'sortsize' : 'چوڭلىقى', 'sortdate' : 'ۋاقتى', 'sortFoldersFirst' : 'قىسقۇچلار باشتا', /********************************** messages **********************************/ 'confirmReq' : 'مۇقىملاشتۇرۇڭ', 'confirmRm' : 'راستىنلا ئۆچۈرەمسىز?
                كەينىگە قايتۇرغىلى بولمايدۇ!', 'confirmRepl' : 'ھازىرقى ھۈججەت بىلەن كونىسىنى ئالماشتۇرامسىز?', 'apllyAll' : 'ھەممىسىگە ئىشلىتىش', 'name' : 'نامى', 'size' : 'چوڭلىقى', 'perms' : 'ھوقۇق', 'modify' : 'ئۆزگەرگەن ۋاقتى', 'kind' : 'تۈرى', 'read' : 'ئوقۇش', 'write' : 'يېزىش', 'noaccess' : 'ھوقۇق يوق', 'and' : 'ھەم', 'unknown' : 'ئېنىق ئەمەس', 'selectall' : 'ھەممىنى تاللاش', 'selectfiles' : 'تاللاش', 'selectffile' : 'بىرىنچىسىنى تاللاش', 'selectlfile' : 'ئەڭ ئاخىرقىسىنى تاللاش', 'viewlist' : 'جەدۋەللىك كۆرىنىشى', 'viewicons' : 'رەسىملىك كۆرىنىشى', 'places' : 'ئورنى', 'calc' : 'ھېسابلاش', 'path' : 'ئورنى', 'aliasfor' : 'باشقا نامى', 'locked' : 'تاقالغان', 'dim' : 'چوڭلىقى', 'files' : 'ھۈججەت', 'folders' : 'قىسقۇچ', 'items' : 'تۈرلەر', 'yes' : 'ھەئە', 'no' : 'ياق', 'link' : 'ئۇلىنىش', 'searcresult' : 'ئىزدەش نەتىجىسى', 'selected' : 'تاللانغان تۈرلەر', 'about' : 'چۈشەنچە', 'shortcuts' : 'تېز كونۇپكىلار', 'help' : 'ياردەم', 'webfm' : 'تور ھۈججەتلىرىنى باشقۇرۇش', 'ver' : 'نەشرى', 'protocolver' : 'پروتوكول نەشرى', 'homepage' : 'تۈر باش بېتى', 'docs' : 'ھۈججەت', 'github' : 'Fork us on Github', 'twitter' : 'Follow us on twitter', 'facebook' : 'Join us on facebook', 'team' : 'گۇرۇپپا', 'chiefdev' : 'باش پىروگراممىر', 'developer' : 'پىروگراممىر', 'contributor' : 'تۆھپىكار', 'maintainer' : 'ئاسرىغۇچى', 'translator' : 'تەرجىمان', 'icons' : 'سىنبەلگە', 'dontforget' : 'تەرىڭىزنى سۈرتىدىغان قولياغلىقىڭىزنى ئۇنۇتماڭ جۇمۇ', 'shortcutsof' : 'تېز كونۇپكىلار چەكلەنگەن', 'dropFiles' : 'ھۈججەتنى موشۇ يەرگە تاشلاڭ', 'or' : 'ياكى', 'selectForUpload' : 'يۈكلىمەكچى بولغان ھۈججەتنى تاللاڭ', 'moveFiles' : 'يۆتكەش', 'copyFiles' : 'كۆچۈرۈش', 'rmFromPlaces' : 'ھۈججەتلەرنى ئۆچۈرۈش', 'aspectRatio' : 'نىسبىتىنى ساقلاش', 'scale' : 'نىسبىتى', 'width' : 'ئۇزۇنلىقى', 'height' : 'ئىگىزلىكى', 'resize' : 'چوڭلىقىنى تەڭشەش', 'crop' : 'كېسىش', 'rotate' : 'پىقىرىتىش', 'rotate-cw' : 'سائەت ئىستىرىلكىسى بويىچە 90 گىرادۇس پىقىرىتىش', 'rotate-ccw' : 'سائەت ئىستىرىلكىسىنى تەتۈر يۆنىلىشى بويىچە 90گىرادۇس پىقىرىتىش', 'degree' : 'گىرادۇس', 'netMountDialogTitle' : 'Mount network volume', // added 18.04.2012 'protocol' : 'پىروتوكڭل', // added 18.04.2012 'host' : 'مۇلازىمىتىر', // added 18.04.2012 'port' : 'پورت', // added 18.04.2012 'user' : 'ئەزا', // added 18.04.2012 'pass' : 'ئىم', // added 18.04.2012 /********************************** mimetypes **********************************/ 'kindUnknown' : 'ئېنىق ئەمەس', 'kindFolder' : 'ھۈججەت قىسقۇچ', 'kindAlias' : 'باشقا نامى', 'kindAliasBroken' : 'باشقا نامى خاتا', // applications 'kindApp' : 'كود ھۈججىتى', 'kindPostscript' : 'Postscript ھۈججىتى', 'kindMsOffice' : 'Microsoft Office ھۈججىتى', 'kindMsWord' : 'Microsoft Word ھۈججىتى', 'kindMsExcel' : 'Microsoft Excel ھۈججىتى', 'kindMsPP' : 'Microsoft Powerpoint ھۈججىتى', 'kindOO' : 'Open Office ھۈججىتى', 'kindAppFlash' : 'Flash ھۈججىتى', 'kindPDF' : 'Portable Document Format (PDF)', 'kindTorrent' : 'Bittorrent ھۈججىتى', 'kind7z' : '7z ھۈججىتى', 'kindTAR' : 'TAR ھۈججىتى', 'kindGZIP' : 'GZIP ھۈججىتى', 'kindBZIP' : 'BZIP ھۈججىتى', 'kindXZ' : 'XZ ھۈججىتى', 'kindZIP' : 'ZIP ھۈججىتى', 'kindRAR' : 'RAR ھۈججىتى', 'kindJAR' : 'Java JAR ھۈججىتى', 'kindTTF' : 'True Type فونت', 'kindOTF' : 'Open Type فونت', 'kindRPM' : 'RPM', // texts 'kindText' : 'تېكىست', 'kindTextPlain' : 'تېكىست', 'kindPHP' : 'PHP ھۈججىتى', 'kindCSS' : 'CSS ھۈججىتى', 'kindHTML' : 'HTML ھۈججىتى', 'kindJS' : 'Javascript ھۈججىتى', 'kindRTF' : 'RTF ھۈججىتى', 'kindC' : 'C ھۈججىتى', 'kindCHeader' : 'C باش ھۈججىتى', 'kindCPP' : 'C++ ھۈججىتى', 'kindCPPHeader' : 'C++ باش ھۈججىتى', 'kindShell' : 'Unix سىكىرىپت ھۈججىتى', 'kindPython' : 'Python ھۈججىتى', 'kindJava' : 'Java ھۈججىتى', 'kindRuby' : 'Ruby ھۈججىتى', 'kindPerl' : 'Perl ھۈججىتى', 'kindSQL' : 'SQL ھۈججىتى', 'kindXML' : 'XML ھۈججىتى', 'kindAWK' : 'AWK ھۈججىتى', 'kindCSV' : 'CSV ھۈججىتى', 'kindDOCBOOK' : 'Docbook XML ھۈججىتى', // images 'kindImage' : 'رەسىم', 'kindBMP' : 'BMP رەسىم', 'kindJPEG' : 'JPEG رەسىم', 'kindGIF' : 'GIF رەسىم', 'kindPNG' : 'PNG رەسىم', 'kindTIFF' : 'TIFF رەسىم', 'kindTGA' : 'TGA رەسىم', 'kindPSD' : 'Adobe Photoshop رەسىم', 'kindXBITMAP' : 'X bitmap رەسىم', 'kindPXM' : 'Pixelmator رەسىم', // media 'kindAudio' : 'ئاۋاز', 'kindAudioMPEG' : 'MPEG ئاۋاز', 'kindAudioMPEG4' : 'MPEG-4 ئاۋاز', 'kindAudioMIDI' : 'MIDI ئاۋاز', 'kindAudioOGG' : 'Ogg Vorbis ئاۋاز', 'kindAudioWAV' : 'WAV ئاۋاز', 'AudioPlaylist' : 'MP3 قويۇش تىزىملىكى', 'kindVideo' : 'سىن', 'kindVideoDV' : 'DV سىن', 'kindVideoMPEG' : 'MPEG سىن', 'kindVideoMPEG4' : 'MPEG-4 سىن', 'kindVideoAVI' : 'AVI سىن', 'kindVideoMOV' : 'Quick Time سىن', 'kindVideoWM' : 'Windows Media سىن', 'kindVideoFlash' : 'Flash سىن', 'kindVideoMKV' : 'Matroska سىن', 'kindVideoOGG' : 'Ogg سىن' } }; })); plugins/file-manager-advanced/application/library/js/i18n/elfinder.uk.js000064400000122531147176754550022256 0ustar00/** * Українська мова translation * @author ITLancer * @author cjayho * @version 2020-02-10 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.uk = { translator : 'ITLancer, cjayho <cj.fooser@gmail.com>', language : 'Українська мова', direction : 'ltr', dateFormat : 'd.m.Y H:i', // will show like: 10.02.2020 16:52 fancyDateFormat : '$1 H:i', // will show like: сьогодні 16:52 nonameDateFormat : 'ymd-His', // noname upload will show like: 200210-165246 messages : { /********************************** errors **********************************/ 'error' : 'Помилка', 'errUnknown' : 'Невідома помилка.', 'errUnknownCmd' : 'Невідома команда.', 'errJqui' : 'Неправильне налаштування jQuery UI. Відсутні компоненти: selectable, draggable, droppable.', 'errNode' : 'Відсутній елемент DOM для створення elFinder.', 'errURL' : 'Неправильне налаштування! Не вказана опція URL.', 'errAccess' : 'Доступ заборонено.', 'errConnect' : 'Не вдалося з’єднатися з backend.', 'errAbort' : 'З’єднання розірване.', 'errTimeout' : 'Тайм-аут з’єднання.', 'errNotFound' : 'Не знайдено backend.', 'errResponse' : 'Неправильна відповідь від backend.', 'errConf' : 'Неправильне налаштування backend.', 'errJSON' : 'Модуль PHP JSON не встановлено.', 'errNoVolumes' : 'Немає доступних для читання директорій.', 'errCmdParams' : 'Неправильні параметри для команди "$1".', 'errDataNotJSON' : 'Дані не у форматі JSON.', 'errDataEmpty' : 'Дані відсутні.', 'errCmdReq' : 'Backend вимагає назву команди.', 'errOpen' : 'Неможливо відкрити "$1".', 'errNotFolder' : 'Об’єкт не є папкою.', 'errNotFile' : 'Об’єкт не є файлом.', 'errRead' : 'Неможливо прочитати "$1".', 'errWrite' : 'Неможливо записати в "$1".', 'errPerm' : 'Помилка доступу.', 'errLocked' : 'Файл "$1" заблоковано і його неможливо перемістити, перейменувати чи вилучити.', 'errExists' : 'Файл з назвою "$1" вже існує.', 'errInvName' : 'Недійсна назва файла.', 'errInvDirname' : 'Недійсна назва теки.', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : 'Теку не знайдено.', 'errFileNotFound' : 'Файл не знайдено.', 'errTrgFolderNotFound' : 'Цільову теку "$1" не знайдено.', 'errPopup' : 'Браузер забороняє відкривати popup-вікно. Дозвольте у налаштування браузера, щоб відкрити файл.', 'errMkdir' : 'Неможливо створити теку "$1".', 'errMkfile' : 'Неможливо створити файл "$1".', 'errRename' : 'Неможливо перейменувати файл "$1".', 'errCopyFrom' : 'Копіювання файлів з тому "$1" не дозволено.', 'errCopyTo' : 'Копіювання файлів на том "$1" не дозволено.', 'errMkOutLink' : 'Неможливо створити посилання у місце за межами кореневої теки носія.', // from v2.1 added 03.10.2015 'errUpload' : 'Помилка відвантаження.', // old name - errUploadCommon 'errUploadFile' : 'Неможливо відвантажити файл "$1".', // old name - errUpload 'errUploadNoFiles' : 'Не знайдено файлів для відвантаження.', 'errUploadTotalSize' : 'Об\'єм даних перевищив встановлений ліміт.', // old name - errMaxSize 'errUploadFileSize' : 'Об\'єм файла перевищив встановлений ліміт.', // old name - errFileMaxSize 'errUploadMime' : 'Файли цього типу заборонені.', 'errUploadTransfer' : '"$1" : помилка передачі.', 'errUploadTemp' : 'Неможливо створити тимчасовий файл для відвантаження.', // from v2.1 added 26.09.2015 'errNotReplace' : 'Об\'єкт "$1" вже існує тут та не може бути заміненим на об\'єкт іншого типу.', // new 'errReplace' : 'Неможливо замінити "$1".', 'errSave' : 'Неможливо записати "$1".', 'errCopy' : 'Неможливо скопіювати "$1".', 'errMove' : 'Неможливо перенести "$1".', 'errCopyInItself' : 'Неможливо скопіювати "$1" сам у себе.', 'errRm' : 'Неможливо вилучити "$1".', 'errTrash' : 'Неможливо пересунути до смітника.', // from v2.1.24 added 30.4.2017 'errRmSrc' : 'Неможливо видалити оригінальний(і) файл(и).', 'errExtract' : 'Неможливо розпакувати файли з "$1".', 'errArchive' : 'Неможливо створити архів.', 'errArcType' : 'Тип архіву не підтримується.', 'errNoArchive' : 'Файл не є архівом, або є архівом, тип якого не підтримується.', 'errCmdNoSupport' : 'Серверна частина не підтримує цієї команди.', 'errReplByChild' : 'Папка “$1” не може бути замінена елементом, який вона містить.', 'errArcSymlinks' : 'З міркувань безпеки заборонено розпаковувати архіви з символічними посиланнями.', // edited 24.06.2012 'errArcMaxSize' : 'Розмір файлів архіву перевищує допустиме значення.', 'errResize' : 'Неможливо масштабувати "$1".', 'errResizeDegree' : 'Недійсний кут обертання.', // added 7.3.2013 'errResizeRotate' : 'Неможливо повернути світлину.', // added 7.3.2013 'errResizeSize' : 'Недійсний розмір світлини.', // added 7.3.2013 'errResizeNoChange' : 'Розмір світлини не змінено.', // added 7.3.2013 'errUsupportType' : 'Непідтримуваний тип файла.', 'errNotUTF8Content' : 'Файл "$1" не в UTF-8 і не може бути відредагований.', // added 9.11.2011 'errNetMount' : 'Неможливо змонтувати "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'Непідтримуваний протокл.', // added 17.04.2012 'errNetMountFailed' : 'В процесі монтування сталася помилка.', // added 17.04.2012 'errNetMountHostReq' : 'Необхідно вказати хост.', // added 18.04.2012 'errSessionExpires' : 'Час сеансу минув через неактивність.', 'errCreatingTempDir' : 'НЕможливо створити тимчасову директорію: "$1"', 'errFtpDownloadFile' : 'Неможливо завантажити файл з FTP: "$1"', 'errFtpUploadFile' : 'Неможливо завантажити файл на FTP: "$1"', 'errFtpMkdir' : 'Неможливо створити віддалений каталог на FTP: "$1"', 'errArchiveExec' : 'Помилка при архівації файлів: "$1"', 'errExtractExec' : 'Помилка при розархівуванні файлів: "$1"', 'errNetUnMount' : 'Неможливо демонтувати', // from v2.1 added 30.04.2012 'errConvUTF8' : 'Неможливо конвертувати в UTF - 8', // from v2.1 added 08.04.2014 'errFolderUpload' : 'Використовуйте Google Chrome, якщо ви хочете завантажити папку', // from v2.1 added 26.6.2015 'errSearchTimeout' : 'Час пошуку "$1" вийшов. Результат пошуку частковий', // from v2.1 added 12.1.2016 'errReauthRequire' : 'Необхідна повторна авторизація.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'Максимальна кількість об\'єктів що можна обрати складає $1.', // from v2.1.17 added 17.10.2016 'errRestore' : 'Неможливо відновити зі смітника: неможливо визначити місце куди відновлювати.', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'Для цього типу файлів не знайдено редактора.', // from v2.1.25 added 23.5.2017 'errServerError' : 'Помилка на боці сервера.', // from v2.1.25 added 16.6.2017 'errEmpty' : 'Неможливо спорожнити теку "$1".', // from v2.1.25 added 22.6.2017 'moreErrors' : 'Є також ще $1 помилок.', // from v2.1.44 added 9.12.2018 /******************************* commands names ********************************/ 'cmdarchive' : 'Архівувати', 'cmdback' : 'Назад', 'cmdcopy' : 'Копівати', 'cmdcut' : 'Вирізати', 'cmddownload' : 'Завантажити', 'cmdduplicate' : 'Дублювати', 'cmdedit' : 'Редагувати файл', 'cmdextract' : 'Розпакувати файли з архіву', 'cmdforward' : 'Вперед', 'cmdgetfile' : 'Вибрати файли', 'cmdhelp' : 'Про програму', 'cmdhome' : 'Додому', 'cmdinfo' : 'Інформація', 'cmdmkdir' : 'Створити теку', 'cmdmkdirin' : 'До нової теки', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'Створити файл', 'cmdopen' : 'Відкрити', 'cmdpaste' : 'Вставити', 'cmdquicklook' : 'Попередній перегляд', 'cmdreload' : 'Перечитати', 'cmdrename' : 'Перейменувати', 'cmdrm' : 'Вилучити', 'cmdtrash' : 'До смітника', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'Відновити', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'Шукати файли', 'cmdup' : 'На 1 рівень вгору', 'cmdupload' : 'Відвантажити файли', 'cmdview' : 'Перегляд', 'cmdresize' : 'Масштабувати зображення', 'cmdsort' : 'Сортування', 'cmdnetmount' : 'Змонтувати мережевий диск', // added 18.04.2012 'cmdnetunmount': 'Розмонтувати', // from v2.1 added 30.04.2012 'cmdplaces' : 'До Місць', // added 28.12.2014 'cmdchmod' : 'Змінити права', // from v2.1 added 20.6.2015 'cmdopendir' : 'Відкрии директорію', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'Скинути ширину стовпчика', // from v2.1.13 added 12.06.2016 'cmdfullscreen': 'Повний екран', // from v2.1.15 added 03.08.2016 'cmdmove' : 'Пересунути', // from v2.1.15 added 21.08.2016 'cmdempty' : 'Спорожнити теку', // from v2.1.25 added 22.06.2017 'cmdundo' : 'Скасувати', // from v2.1.27 added 31.07.2017 'cmdredo' : 'Відновити', // from v2.1.27 added 31.07.2017 'cmdpreference': 'Налаштування', // from v2.1.27 added 03.08.2017 'cmdselectall' : 'Вибрати усі', // from v2.1.28 added 15.08.2017 'cmdselectnone': 'Зняти вибір', // from v2.1.28 added 15.08.2017 'cmdselectinvert': 'Інвертувати вибір', // from v2.1.28 added 15.08.2017 'cmdopennew' : 'Відкрити у новому вікні', // from v2.1.38 added 3.4.2018 'cmdhide' : 'Сховати (Налаштування)', // from v2.1.41 added 24.7.2018 /*********************************** buttons ***********************************/ 'btnClose' : 'Закрити', 'btnSave' : 'Зберегти', 'btnRm' : 'Вилучити', 'btnApply' : 'Застосувати', 'btnCancel' : 'Скасувати', 'btnNo' : 'Ні', 'btnYes' : 'Так', 'btnMount' : 'Підключити', // added 18.04.2012 'btnApprove': 'Перейти в $1 і прийняти', // from v2.1 added 26.04.2012 'btnUnmount': 'Відключити', // from v2.1 added 30.04.2012 'btnConv' : 'Конвертувати', // from v2.1 added 08.04.2014 'btnCwd' : 'Тут', // from v2.1 added 22.5.2015 'btnVolume' : 'Розділ', // from v2.1 added 22.5.2015 'btnAll' : 'Всі', // from v2.1 added 22.5.2015 'btnMime' : 'MIME тип', // from v2.1 added 22.5.2015 'btnFileName':'Назва файла', // from v2.1 added 22.5.2015 'btnSaveClose': 'Зберегти і вийти', // from v2.1 added 12.6.2015 'btnBackup' : 'Резервна копія', // fromv2.1 added 28.11.2015 'btnRename' : 'Перейменувати', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'Перейменуваті(Усі)', // from v2.1.24 added 6.4.2017 'btnPrevious' : 'Попер. ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : 'Наступ. ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : 'Зберегти як', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'Відкрити теку', 'ntffile' : 'Відкрити файл', 'ntfreload' : 'Перечитати вміст теки', 'ntfmkdir' : 'Створення теки', 'ntfmkfile' : 'Створення файлів', 'ntfrm' : 'Вилучити файли', 'ntfcopy' : 'Копіювати файли', 'ntfmove' : 'Перенести файли', 'ntfprepare' : 'Підготовка до копіювання файлів', 'ntfrename' : 'Перейменувати файли', 'ntfupload' : 'Відвантажити файли', 'ntfdownload' : 'Завантажити файли', 'ntfsave' : 'Записати файли', 'ntfarchive' : 'Створення архіву', 'ntfextract' : 'Розпаковування архіву', 'ntfsearch' : 'Пошук файлів', 'ntfresize' : 'Зміна розміру світлини', 'ntfsmth' : 'Виконуємо', 'ntfloadimg' : 'Завантаження зображення', 'ntfnetmount' : 'Монтування мережевого диска', // added 18.04.2012 'ntfnetunmount': 'Розмонтування мережевого диска', // from v2.1 added 30.04.2012 'ntfdim' : 'Визначення розміру світлини', // added 20.05.2013 'ntfreaddir' : 'Читання інформації директорії', // from v2.1 added 01.07.2013 'ntfurl' : 'отримання URL посилання', // from v2.1 added 11.03.2014 'ntfchmod' : 'Зміна прав файлу', // from v2.1 added 20.6.2015 'ntfpreupload': 'Перевірка імені завантажуваного файла', // from v2.1 added 31.11.2015 'ntfzipdl' : 'Створення файлу для завантаження', // from v2.1.7 added 23.1.2016 'ntfparents' : 'Отримання інформації про шлях', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'Обробка вивантаженого файлу', // from v2.1.17 added 2.11.2016 'ntftrash' : 'Переміщуємо до смітника', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'Відновлюємо зі смітника', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'Перевіряємо теку призначення', // from v2.1.24 added 3.5.2017 'ntfundo' : 'Скасування попередньої дії', // from v2.1.27 added 31.07.2017 'ntfredo' : 'Повторення раніше скасованої дії', // from v2.1.27 added 31.07.2017 'ntfchkcontent' : 'Перевірка вмісту', // from v2.1.41 added 3.8.2018 /*********************************** volumes *********************************/ 'volume_Trash' : 'Смітник', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : 'невідомо', 'Today' : 'сьогодні', 'Yesterday' : 'вчора', 'msJan' : 'Січ', 'msFeb' : 'Лют', 'msMar' : 'Бер', 'msApr' : 'Кві', 'msMay' : 'Тра', 'msJun' : 'Чер', 'msJul' : 'Лип', 'msAug' : 'Сер', 'msSep' : 'Вер', 'msOct' : 'Жов', 'msNov' : 'Лис', 'msDec' : 'Гру', 'January' : 'січня', 'February' : 'лютого', 'March' : 'березня', 'April' : 'квітня', 'May' : 'травня', 'June' : 'червня', 'July' : 'липня', 'August' : 'серпня', 'September' : 'вересня', 'October' : 'жовтня', 'November' : 'листопада', 'December' : 'грудня', 'Sunday' : 'Неділя', 'Monday' : 'Понеділок', 'Tuesday' : 'Вівторок', 'Wednesday' : 'Середа', 'Thursday' : 'Четвер', 'Friday' : 'П’ятниця', 'Saturday' : 'Субота', 'Sun' : 'Нд', 'Mon' : 'Пн', 'Tue' : 'Вт', 'Wed' : 'Ср', 'Thu' : 'Чт', 'Fri' : 'Пт', 'Sat' : 'Сб', /******************************** sort variants ********************************/ 'sortname' : 'за назвою', 'sortkind' : 'за типом', 'sortsize' : 'за розміром', 'sortdate' : 'за датою', 'sortFoldersFirst' : 'Список тек', 'sortperm' : 'за дозволами', // from v2.1.13 added 13.06.2016 'sortmode' : 'за режимом', // from v2.1.13 added 13.06.2016 'sortowner' : 'за власником', // from v2.1.13 added 13.06.2016 'sortgroup' : 'за групою', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'Також вигляд дерева', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : 'неназваний файл.txt', // added 10.11.2015 'untitled folder' : 'неназвана тека', // added 10.11.2015 'Archive' : 'НовийАрхів', // from v2.1 added 10.11.2015 'untitled file' : 'НовийФайл.$1', // from v2.1.41 added 6.8.2018 'extentionfile' : '$1: Файл', // from v2.1.41 added 6.8.2018 'extentiontype' : '$1: $2 ', // from v2.1.43 added 17.10.2018 /********************************** messages **********************************/ 'confirmReq' : 'Необхідне підтвердження', 'confirmRm' : 'Ви справді хочете вилучити файли?
                Операція незворотня!', 'confirmRepl' : 'Замінити старий файл новим? (при наявності тек вони будуть об\'єднані. Для резервної копії та заміни оберіть Резервну Копію)', 'confirmRest' : 'Замінити існуючий об\'єкт об\'єктом зі смітника?', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'Не у UTF-8
                Конвертувати у UTF-8?
                Вміст стане у UTF-8 збереженням після конвертації.', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'Кодування символів цього файлу неможливо визначити. Потрібно тимчасово конвертувати його у UTF-8 для редагування.
                Оберіть кодування цього файлу.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : 'Було внесено зміни.
                Якщо ії не зберегти, їх буде втрачено.', // from v2.1 added 15.7.2015 'confirmTrash' : 'Ви точно бажаєте перемістити ці об\'єкти до смітника?', //from v2.1.24 added 29.4.2017 'confirmMove' : 'Ви точно бажаєте перемістити об\'єкти до "$1"?', //from v2.1.50 added 27.7.2019 'apllyAll' : 'Застосувати до всіх', 'name' : 'Назва', 'size' : 'Розмір', 'perms' : 'Доступи', 'modify' : 'Змінено', 'kind' : 'Тип', 'read' : 'читання', 'write' : 'запис', 'noaccess' : 'недоступно', 'and' : 'і', 'unknown' : 'невідомо', 'selectall' : 'Вибрати всі файли', 'selectfiles' : 'Вибрати файл(и)', 'selectffile' : 'Вибрати перший файл', 'selectlfile' : 'Вибрати останній файл', 'viewlist' : 'Списком', 'viewicons' : 'Значками', 'viewSmall' : 'Маленькі значки', // from v2.1.39 added 22.5.2018 'viewMedium' : 'Середні значки', // from v2.1.39 added 22.5.2018 'viewLarge' : 'Великі значки', // from v2.1.39 added 22.5.2018 'viewExtraLarge' : 'Дуже великі значки', // from v2.1.39 added 22.5.2018 'places' : 'Розташування', 'calc' : 'Вирахувати', 'path' : 'Шлях', 'aliasfor' : 'Аліас для', 'locked' : 'Заблоковано', 'dim' : 'Розміри', 'files' : 'Файли', 'folders' : 'теки', 'items' : 'Елементи', 'yes' : 'так', 'no' : 'ні', 'link' : 'Посилання', 'searcresult' : 'Результати пошуку', 'selected' : 'Вибрані елементи', 'about' : 'Про', 'shortcuts' : 'Ярлики', 'help' : 'Допомога', 'webfm' : 'Web-менеджер файлів', 'ver' : 'Версія', 'protocolver' : 'версія протоколу', 'homepage' : 'Сторінка проекту', 'docs' : 'Документація', 'github' : 'Fork us on Github', 'twitter' : 'Слідкуйте у Твітері', 'facebook' : 'Приєднуйтесь у фейсбуці', 'team' : 'Автори', 'chiefdev' : 'головний розробник', 'developer' : 'розробник', 'contributor' : 'учасник', 'maintainer' : 'супроводжувач', 'translator' : 'перекладач', 'icons' : 'Значки', 'dontforget' : 'і не забудьте рушничок', 'shortcutsof' : 'Створення посилань вимкнено', 'dropFiles' : 'Кидайте файли сюди', 'or' : 'або', 'selectForUpload' : 'Виберіть файли для відвантаження', 'moveFiles' : 'Перемістити файли', 'copyFiles' : 'Копіювати файли', 'restoreFiles' : 'Відновити об\'єкти', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'Вилучити з розташувань', 'aspectRatio' : 'Співвідношення', 'scale' : 'Масштаб', 'width' : 'Ширина', 'height' : 'Висота', 'resize' : 'Змінити розмір', 'crop' : 'Обрізати', 'rotate' : 'Повернути', 'rotate-cw' : 'Повернути на 90 градусів за год. стр.', 'rotate-ccw' : 'Повернути на 90 градусів проти год. стр.', 'degree' : 'Градус', 'netMountDialogTitle' : 'Змонтувати носій у мережі', // added 18.04.2012 'protocol' : 'версія протоколу', // added 18.04.2012 'host' : 'Хост', // added 18.04.2012 'port' : 'Порт', // added 18.04.2012 'user' : 'Логін', // added 18.04.2012 'pass' : 'Пароль', // added 18.04.2012 'confirmUnmount' : 'Ви відмонтовуєте $1?', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'Перетягніть або вставте файли з оглядача', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'Перетягніть файли, Вставте URL або світлини (з буфера обміну) сюди', // from v2.1 added 07.04.2014 'encoding' : 'Кодування', // from v2.1 added 19.12.2014 'locale' : 'Локаль', // from v2.1 added 19.12.2014 'searchTarget' : 'Призначення: $1', // from v2.1 added 22.5.2015 'searchMime' : 'Пошук за введеним типом MIME', // from v2.1 added 22.5.2015 'owner' : 'Власник', // from v2.1 added 20.6.2015 'group' : 'Група', // from v2.1 added 20.6.2015 'other' : 'Інші', // from v2.1 added 20.6.2015 'execute' : 'Виконання', // from v2.1 added 20.6.2015 'perm' : 'Дозвіл', // from v2.1 added 20.6.2015 'mode' : 'Режим', // from v2.1 added 20.6.2015 'emptyFolder' : 'Тека порожня', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'Тека порожня\\A Перетягніть об\'єкти для додавання', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'Тека порожня\\A Для додавання об\'єктів торкніть та утримуйте', // from v2.1.6 added 30.12.2015 'quality' : 'Якість', // from v2.1.6 added 5.1.2016 'autoSync' : 'Авто синх.', // from v2.1.6 added 10.1.2016 'moveUp' : 'Пересунути вгору', // from v2.1.6 added 18.1.2016 'getLink' : 'Отримати URL', // from v2.1.7 added 9.2.2016 'selectedItems' : 'Обрані об\'єкти ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'ID теки', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'Дозволити доступ офлайн', // from v2.1.10 added 3.25.2016 'reAuth' : 'Для реаутентифікації', // from v2.1.10 added 3.25.2016 'nowLoading' : 'Зараз завантажуємо...', // from v2.1.12 added 4.26.2016 'openMulti' : 'Відкрити декілька файлів', // from v2.1.12 added 5.14.2016 'openMultiConfirm': 'Ви намагаєтесь відкрити $1 файлів. Ви впевнені що хочете відкрити ії у оглядачі?', // from v2.1.12 added 5.14.2016 'emptySearch' : 'Пошук не дав результатів у обраному місці.', // from v2.1.12 added 5.16.2016 'editingFile' : 'Редагує файл.', // from v2.1.13 added 6.3.2016 'hasSelected' : 'Ви обрали $1 об\'єктів.', // from v2.1.13 added 6.3.2016 'hasClipboard' : 'У вас є $1 об\'єктів у буфері обміну.', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'Інкрементний пошук є тільки для поточного перегляду.', // from v2.1.13 added 6.30.2016 'reinstate' : 'Відновити', // from v2.1.15 added 3.8.2016 'complete' : '$1 виконано', // from v2.1.15 added 21.8.2016 'contextmenu' : 'Контекстне меню', // from v2.1.15 added 9.9.2016 'pageTurning' : 'Обертання сторінки', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'Кореневі теки носіїв', // from v2.1.16 added 16.9.2016 'reset' : 'Обнулити', // from v2.1.16 added 1.10.2016 'bgcolor' : 'Колір фону', // from v2.1.16 added 1.10.2016 'colorPicker' : 'Обрати колір', // from v2.1.16 added 1.10.2016 '8pxgrid' : 'сітка 8px', // from v2.1.16 added 4.10.2016 'enabled' : 'Увімкнено', // from v2.1.16 added 4.10.2016 'disabled' : 'Вимкнено', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'Результати пошуку у поточному перегляді відсутні.\\AНатисніть [Enter] для розширення критеріїв пошуку.', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'Результати пошуку за першою літерою відсутні у поточному перегляді.', // from v2.1.23 added 24.3.2017 'textLabel' : 'Текстова мітка', // from v2.1.17 added 13.10.2016 'minsLeft' : '$1 хв. залишилось', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'Відкрити знову з обраним кодуванням', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'Зберегти з обраним кодуванням', // from v2.1.19 added 2.12.2016 'selectFolder' : 'Обрати теку', // from v2.1.20 added 13.12.2016 'firstLetterSearch': 'Пошук за першою літерою', // from v2.1.23 added 24.3.2017 'presets' : 'Шаблони', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : 'Дуже багато об\'єктів для переміщення у смітник.', // from v2.1.25 added 9.6.2017 'TextArea' : 'ТекстовеПоле', // from v2.1.25 added 14.6.2017 'folderToEmpty' : 'Спорожнити теку "$1".', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : 'Тека "$1" порожня.', // from v2.1.25 added 22.6.2017 'preference' : 'Налаштування', // from v2.1.26 added 28.6.2017 'language' : 'Мова', // from v2.1.26 added 28.6.2017 'clearBrowserData': 'Ініціювати налаштування збережені у цьому оглядачі', // from v2.1.26 added 28.6.2017 'toolbarPref' : 'Налаштування лотку інструментів', // from v2.1.27 added 2.8.2017 'charsLeft' : '... $1 символів залишилось.', // from v2.1.29 added 30.8.2017 'linesLeft' : '... $1 рядків залишилось.', // from v2.1.52 added 16.1.2020 'sum' : 'Сума', // from v2.1.29 added 28.9.2017 'roughFileSize' : 'Приблизний розмір файу', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : 'Фокусувати елемент діалога при наведенні курсора миші', // from v2.1.30 added 2.11.2017 'select' : 'Обрати', // from v2.1.30 added 23.11.2017 'selectAction' : 'Дія при виборі файла', // from v2.1.30 added 23.11.2017 'useStoredEditor' : 'Відкрити редактором, що використовувався крайній раз.', // from v2.1.30 added 23.11.2017 'selectinvert' : 'Інвертувати вибір', // from v2.1.30 added 25.11.2017 'renameMultiple' : 'Ви точно хочете перейменувати $1 обраних об\'єктів на кшталт $2?
                Це незворотна дія!', // from v2.1.31 added 4.12.2017 'batchRename' : 'Пакетне перейменування', // from v2.1.31 added 8.12.2017 'plusNumber' : '+ Число', // from v2.1.31 added 8.12.2017 'asPrefix' : 'Додати префікс', // from v2.1.31 added 8.12.2017 'asSuffix' : 'Додати суфікс', // from v2.1.31 added 8.12.2017 'changeExtention' : 'Змінити розширення', // from v2.1.31 added 8.12.2017 'columnPref' : 'Налаштування стовпчиків (вигляд списку)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : 'Усі зміни будуть негайно застосовані у архіві.', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : 'Деякі зміни не буде видно до розмонтування носія.', // from v2.1.33 added 2.3.2018 'unmountChildren' : 'Наступний(і) носій(ї) на цьому носії також не змонтовані. Ви точно хочете відмонтувати носій?', // from v2.1.33 added 5.3.2018 'selectionInfo' : 'Інформація про обране', // from v2.1.33 added 7.3.2018 'hashChecker' : 'Алгоритми для показу хешу файла', // from v2.1.33 added 10.3.2018 'infoItems' : 'Інформаційні об\'єкти (Панель інформації про обране)', // from v2.1.38 added 28.3.2018 'pressAgainToExit': 'Натисніть знову для виходу.', // from v2.1.38 added 1.4.2018 'toolbar' : 'Панель інструментів', // from v2.1.38 added 4.4.2018 'workspace' : 'Робочий простір', // from v2.1.38 added 4.4.2018 'dialog' : 'Діалог', // from v2.1.38 added 4.4.2018 'all' : 'Усі', // from v2.1.38 added 4.4.2018 'iconSize' : 'Розмір значків (вигляд значків)', // from v2.1.39 added 7.5.2018 'editorMaximized' : 'Відкрити розгорнуте вікно редактора', // from v2.1.40 added 30.6.2018 'editorConvNoApi' : 'Через неможливість конвертування API, сконвертуйте на вебсайті.', //from v2.1.40 added 8.7.2018 'editorConvNeedUpload' : 'Після конвертування вам треба завантажити за допомогою URL або збереженого файу, для збереження конвертованого файлу.', //from v2.1.40 added 8.7.2018 'convertOn' : 'Конвертувати сайт з $1', // from v2.1.40 added 10.7.2018 'integrations' : 'Інтеграції', // from v2.1.40 added 11.7.2018 'integrationWith' : 'Цей elFinder має наступні інтегровані сервіси. Перевірте умови використання, політику приватності та інше перед використанням.', // from v2.1.40 added 11.7.2018 'showHidden' : 'Показати приховані об\'єкти', // from v2.1.41 added 24.7.2018 'hideHidden' : 'Сховати приховані об\'єкти', // from v2.1.41 added 24.7.2018 'toggleHidden' : 'Показати/Сховати приховані о\'єкти', // from v2.1.41 added 24.7.2018 'makefileTypes' : 'Типи файлів, які можна створювати', // from v2.1.41 added 7.8.2018 'typeOfTextfile' : 'Тип текстового файлу', // from v2.1.41 added 7.8.2018 'add' : 'Додати', // from v2.1.41 added 7.8.2018 'theme' : 'Тема', // from v2.1.43 added 19.10.2018 'default' : 'Як зазвичай', // from v2.1.43 added 19.10.2018 'description' : 'Опис', // from v2.1.43 added 19.10.2018 'website' : 'Веб-сайт', // from v2.1.43 added 19.10.2018 'author' : 'Автор', // from v2.1.43 added 19.10.2018 'email' : 'E-mail', // from v2.1.43 added 19.10.2018 'license' : 'Ліцензія', // from v2.1.43 added 19.10.2018 'exportToSave' : 'Об\'єкт неможливо зберегти. Щоб уникнути втрати правок вам треба експортувати ії до себе у пристрій.', // from v2.1.44 added 1.12.2018 'dblclickToSelect': 'Двічі клацніть файл для вибору.', // from v2.1.47 added 22.1.2019 'useFullscreen' : 'Використовувати повноекранний режим', // from v2.1.47 added 19.2.2019 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Невідомо', 'kindRoot' : 'Коренева тека носія', // from v2.1.16 added 16.10.2016 'kindFolder' : 'Папка', 'kindSelects' : 'Вибір', // from v2.1.29 added 29.8.2017 'kindAlias' : 'Аліас', 'kindAliasBroken' : 'Пошкоджений аліас', // applications 'kindApp' : 'Програма', 'kindPostscript' : 'Документ Postscript', 'kindMsOffice' : 'Документ Microsoft Office', 'kindMsWord' : 'Документ Microsoft Word', 'kindMsExcel' : 'Документ Microsoft Excel', 'kindMsPP' : 'Презентація Microsoft Powerpoint', 'kindOO' : 'Документ Open Office', 'kindAppFlash' : 'Flash-додаток', 'kindPDF' : 'Портативний формат документів (PDF)', 'kindTorrent' : 'Файл Bittorrent', 'kind7z' : 'Архів 7z', 'kindTAR' : 'Архів TAR', 'kindGZIP' : 'Архів GZIP', 'kindBZIP' : 'Архів BZIP', 'kindXZ' : 'Архів XZ', 'kindZIP' : 'Архів ZIP', 'kindRAR' : 'Архів RAR', 'kindJAR' : 'Файл Java JAR', 'kindTTF' : 'Шрифт True Type', 'kindOTF' : 'Шрифт Open Type', 'kindRPM' : 'Пакунок RPM', // texts 'kindText' : 'Текстовий документ', 'kindTextPlain' : 'Простий текст', 'kindPHP' : 'Код PHP', 'kindCSS' : 'Каскадна таблиця стилів (CSS)', 'kindHTML' : 'Документ HTML', 'kindJS' : 'Код Javascript', 'kindRTF' : 'Файл RTF', 'kindC' : 'Код C', 'kindCHeader' : 'Заголовковий код C', 'kindCPP' : 'Код C++', 'kindCPPHeader' : 'Заголовковий код C++', 'kindShell' : 'Скрипт Unix shell', 'kindPython' : 'Код Python', 'kindJava' : 'Код Java', 'kindRuby' : 'Код Ruby', 'kindPerl' : 'Код Perl', 'kindSQL' : 'Код SQL', 'kindXML' : 'Документ XML', 'kindAWK' : 'Код AWK', 'kindCSV' : 'Значення розділені комою (CSV)', 'kindDOCBOOK' : 'Документ Docbook XML', 'kindMarkdown' : 'Текст Markdown', // added 20.7.2015 // images 'kindImage' : 'Зображення', 'kindBMP' : 'Зображення BMP', 'kindJPEG' : 'Зображення JPEG', 'kindGIF' : 'Зображення GIF', 'kindPNG' : 'Зображення PNG', 'kindTIFF' : 'Зображення TIFF', 'kindTGA' : 'Зображення TGA', 'kindPSD' : 'Зображення Adobe Photoshop', 'kindXBITMAP' : 'Зображення X bitmap', 'kindPXM' : 'Зображення Pixelmator', // media 'kindAudio' : 'Аудіо', 'kindAudioMPEG' : 'Аудіо MPEG', 'kindAudioMPEG4' : 'Аудіо MPEG-4', 'kindAudioMIDI' : 'Аудіо MIDI', 'kindAudioOGG' : 'Аудіо Ogg Vorbis', 'kindAudioWAV' : 'Аудіо WAV', 'AudioPlaylist' : 'Список відтворення MP3', 'kindVideo' : 'Відео', 'kindVideoDV' : 'Відео DV', 'kindVideoMPEG' : 'Відео MPEG', 'kindVideoMPEG4' : 'Відео MPEG-4', 'kindVideoAVI' : 'Відео AVI', 'kindVideoMOV' : 'Відео Quick Time', 'kindVideoWM' : 'Відео Windows Media', 'kindVideoFlash' : 'Відео Flash', 'kindVideoMKV' : 'Відео Matroska', 'kindVideoOGG' : 'Відео Ogg' } }; })); plugins/file-manager-advanced/application/library/js/i18n/elfinder.vi.js000064400000104626147176754550022262 0ustar00/** * Ngôn ngữ Việt Nam translation * @author Chung Thủy f * @author Son Nguyen * @author Nguyễn Trần Chung * @version 2019-12-03 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.vi = { translator : 'Chung Thủy f <chungthuyf@gmail.com>, Son Nguyen <son.nguyen@catalyst.net.nz>, Nguyễn Trần Chung <admin@chungnguyen.xyz>', language : 'Ngôn ngữ Việt Nam', direction : 'ltr', dateFormat : 'd.m.Y H:i', // will show like: 03.12.2019 17:28 fancyDateFormat : '$1 H:i', // will show like: Hôm nay 17:28 nonameDateFormat : 'ymd-His', // noname upload will show like: 191203-172820 messages : { /********************************** errors **********************************/ 'error' : 'Lỗi', 'errUnknown' : 'Lỗi không xác định được.', 'errUnknownCmd' : 'Lỗi không rõ lệnh.', 'errJqui' : 'Cấu hình jQueryUI không hợp lệ. Các thành phần lựa chọn, kéo và thả phải được bao gồm.', 'errNode' : 'elFinder đòi hỏi phần tử DOM phải được tạo ra.', 'errURL' : 'Cấu hình elFinder không hợp lệ! URL không được thiết lập tùy chọn.', 'errAccess' : 'Truy cập bị từ chối.', 'errConnect' : 'Không thể kết nối với backend.', 'errAbort' : 'Kết nối bị hủy bỏ.', 'errTimeout' : 'Thời gian chờ kết nối đã hết.', 'errNotFound' : 'Backend không tìm thấy.', 'errResponse' : 'Phản hồi backend không hợp lệ.', 'errConf' : 'Cấu hình backend không hợp lệ.', 'errJSON' : 'Mô-đun PHP JSON không được cài đặt.', 'errNoVolumes' : 'Tập có thể đọc không có sẵn.', 'errCmdParams' : 'Thông số không hợp lệ cho lệnh "$1".', 'errDataNotJSON' : 'Dữ liệu không phải là JSON.', 'errDataEmpty' : 'Dữ liệu trống.', 'errCmdReq' : 'Backend đòi hỏi tên lệnh.', 'errOpen' : 'Không thể mở "$1".', 'errNotFolder' : 'Đối tượng không phải là một thư mục.', 'errNotFile' : 'Đối tượng không phải là một tập tin.', 'errRead' : 'Không thể đọc "$1".', 'errWrite' : 'Không thể ghi vào "$1".', 'errPerm' : 'Quyền bị từ chối.', 'errLocked' : '"$1" đã bị khóa và không thể đổi tên, di chuyển hoặc loại bỏ.', 'errExists' : 'Tập tin có tên "$1" đã tồn tại.', 'errInvName' : 'Tên tập tin không hợp lệ.', 'errInvDirname' : 'Tên thư mục không hợp lệ.', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : 'Thư mục không tìm thấy.', 'errFileNotFound' : 'Tập tin không tìm thấy.', 'errTrgFolderNotFound' : 'Thư mục đích "$1" không được tìm thấy.', 'errPopup' : 'Trình duyệt ngăn chặn mở cửa sổ popup.', 'errMkdir' : 'Không thể tạo thư mục "$1".', 'errMkfile' : 'Không thể tạo tập tin "$1".', 'errRename' : 'Không thể đổi tên "$1".', 'errCopyFrom' : 'Sao chép tập tin từ tập "$1" không được phép.', 'errCopyTo' : 'Sao chép tập tin tới tập "$1" không được phép.', 'errMkOutLink' : 'Không thể tạo liên kết ra bên ngoài volume root.', // from v2.1 added 03.10.2015 'errUpload' : 'Tải lên báo lỗi.', // old name - errUploadCommon 'errUploadFile' : 'Không thể tải lên "$1".', // old name - errUpload 'errUploadNoFiles' : 'Không thấy tập tin nào để tải lên.', 'errUploadTotalSize' : 'Dữ liệu vượt quá kích thước tối đa cho phép.', // old name - errMaxSize 'errUploadFileSize' : 'Tập tin vượt quá kích thước tối đa cho phép.', // old name - errFileMaxSize 'errUploadMime' : 'Kiểu tập tin không được phép.', 'errUploadTransfer' : 'Lỗi khi truyền "$1".', 'errUploadTemp' : 'Không thể tạo thư mục tạm để tải lên.', // from v2.1 added 26.09.2015 'errNotReplace' : 'Đối tượng "$1" đã tồn tại ở vị trí này và không thể thay thế bằng đối tượng với loại khác.', // new 'errReplace' : 'Không thể thay thế "$1".', 'errSave' : 'Không thể lưu "$1".', 'errCopy' : 'Không thể sao chép "$1".', 'errMove' : 'Không thể chuyển "$1".', 'errCopyInItself' : 'Không thể sao chép "$1" vào chính nó.', 'errRm' : 'Không thể xóa "$1".', 'errTrash' : 'Không thể cho vào thùng rác.', // from v2.1.24 added 30.4.2017 'errRmSrc' : 'Không thể xóa tệp nguồn.', 'errExtract' : 'Không thể giải nén các tập tin từ"$1".', 'errArchive' : 'Không thể tạo ra lưu trữ.', 'errArcType' : 'Loại lưu trữ không được hỗ trợ.', 'errNoArchive' : 'Tập tin không phải là lưu trữ hoặc có kiểu lưu trữ không được hỗ trợ.', 'errCmdNoSupport' : 'Backend không hỗ trợ lệnh này.', 'errReplByChild' : 'Thư mục "$1" không thể được thay thế bằng một mục con mà nó chứa.', 'errArcSymlinks' : 'Vì lý do bảo mật, từ chối giải nén tập tin lưu trữ có chứa liên kết mềm.', // edited 24.06.2012 'errArcMaxSize' : 'Tập tin lưu trữ vượt quá kích thước tối đa cho phép.', 'errResize' : 'Không thể thay đổi kích thước "$1".', 'errResizeDegree' : 'Độ xoay không hợp lệ.', // added 7.3.2013 'errResizeRotate' : 'Không thể xoay hình ảnh.', // added 7.3.2013 'errResizeSize' : 'Kích thước hình ảnh không hợp lệ.', // added 7.3.2013 'errResizeNoChange' : 'Kích thước hình ảnh không thay đổi.', // added 7.3.2013 'errUsupportType' : 'Loại tập tin không được hỗ trợ.', 'errNotUTF8Content' : 'Tệp "$1" không phải bộ ký tự UTF-8 nên không thể chỉnh sửa.', // added 9.11.2011 'errNetMount' : 'Không thể gắn kết "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'Giao thức không được hỗ trợ.', // added 17.04.2012 'errNetMountFailed' : 'Gắn (kết nối) thất bại.', // added 17.04.2012 'errNetMountHostReq' : 'Yêu cầu máy chủ.', // added 18.04.2012 'errSessionExpires' : 'Phiên của bạn đã hết hạn do không hoạt động.', 'errCreatingTempDir' : 'Không thể tạo thư mục tạm thời: "$1"', 'errFtpDownloadFile' : 'Không thể tải xuống tệp từ FTP: "$1"', 'errFtpUploadFile' : 'Không thể tải tệp lên FTP: "$1"', 'errFtpMkdir' : 'Không thể tạo thư mục từ xa trên FTP: "$1"', 'errArchiveExec' : 'Lỗi trong khi lưu trữ tệp: "$1"', 'errExtractExec' : 'Lỗi trong khi giải nén tập tin: "$1"', 'errNetUnMount' : 'Không thể gỡ gắn (liên kết).', // from v2.1 added 30.04.2012 'errConvUTF8' : 'Không thể chuyển đổi thành UTF-8', // from v2.1 added 08.04.2014 'errFolderUpload' : 'Hãy thử trình duyệt mới hơn (vì trình duyệt hiện tại có vẻ cũ nên không hỗ trợ tải lên thư mục).', // from v2.1 added 26.6.2015 'errSearchTimeout' : 'Đã hết thời gian trong khi tìm kiếm "$1". Kết quả tìm kiếm là một phần.', // from v2.1 added 12.1.2016 'errReauthRequire' : 'Cần ủy quyền lại.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'Số lượng tối đa của các mục có thể chọn là $1.', // from v2.1.17 added 17.10.2016 'errRestore' : 'Không thể khôi phục từ thùng rác. Không thể xác định đích khôi phục.', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'Không tìm thấy trình chỉnh sửa cho loại tệp này.', // from v2.1.25 added 23.5.2017 'errServerError' : 'Lỗi xảy ra ở phía máy chủ.', // from v2.1.25 added 16.6.2017 'errEmpty' : 'Không thể làm rỗng thư mục "$1".', // from v2.1.25 added 22.6.2017 'moreErrors' : 'Có thêm $1 lỗi.', // from v2.1.44 added 9.12.2018 /******************************* commands names ********************************/ 'cmdarchive' : 'Tạo tập tin nén', 'cmdback' : 'Trở lại', 'cmdcopy' : 'Sao chép', 'cmdcut' : 'Cắt', 'cmddownload' : 'Tải về', 'cmdduplicate' : 'Bản sao', 'cmdedit' : 'Sửa tập tin', 'cmdextract' : 'Giải nén tập tin', 'cmdforward' : 'Trước', 'cmdgetfile' : 'Chọn tập tin', 'cmdhelp' : 'Giới thiệu phần mềm', 'cmdhome' : 'Home', 'cmdinfo' : 'Thông tin', 'cmdmkdir' : 'Thư mục', 'cmdmkdirin' : 'Vào thư mục mới', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'Tạo tập tin Text', 'cmdopen' : 'Mở', 'cmdpaste' : 'Dán', 'cmdquicklook' : 'Xem trước', 'cmdreload' : 'Nạp lại', 'cmdrename' : 'Đổi tên', 'cmdrm' : 'Xóa', 'cmdtrash' : 'Vào thùng rác', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'Khôi phục', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'Tìm tập tin', 'cmdup' : 'Go to parent directory', 'cmdupload' : 'Tải tập tin lên', 'cmdview' : 'Xem', 'cmdresize' : 'Thay đổi kích thước và xoay', 'cmdsort' : 'Sắp xếp', 'cmdnetmount' : 'Mount network volume', // added 18.04.2012 'cmdnetunmount': 'Gỡ mount', // from v2.1 added 30.04.2012 'cmdplaces' : 'To Places', // added 28.12.2014 'cmdchmod' : 'Thay đổi chế độ', // from v2.1 added 20.6.2015 'cmdopendir' : 'Mở một thư mục', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'Đặt lại chiều rộng cột', // from v2.1.13 added 12.06.2016 'cmdfullscreen': 'Toàn màn hình', // from v2.1.15 added 03.08.2016 'cmdmove' : 'Di chuyển', // from v2.1.15 added 21.08.2016 'cmdempty' : 'Làm rỗng thư mục', // from v2.1.25 added 22.06.2017 'cmdundo' : 'Hủy bỏ (hoàn tác)', // from v2.1.27 added 31.07.2017 'cmdredo' : 'Làm lại', // from v2.1.27 added 31.07.2017 'cmdpreference': 'Preferences', // from v2.1.27 added 03.08.2017 'cmdselectall' : 'Chọn tất cả', // from v2.1.28 added 15.08.2017 'cmdselectnone': 'Không chọn gì', // from v2.1.28 added 15.08.2017 'cmdselectinvert': 'Chọn ngược lại', // from v2.1.28 added 15.08.2017 'cmdopennew' : 'Mở trong cửa sổ mới', // from v2.1.38 added 3.4.2018 'cmdhide' : 'Ẩn (Preference)', // from v2.1.41 added 24.7.2018 /*********************************** buttons ***********************************/ 'btnClose' : 'Đóng', 'btnSave' : 'Lưu', 'btnRm' : 'Gỡ bỏ', 'btnApply' : 'Áp dụng', 'btnCancel' : 'Hủy bỏ', 'btnNo' : 'Không', 'btnYes' : 'Đồng ý', 'btnMount' : 'Mount', // added 18.04.2012 'btnApprove': 'Goto $1 & approve', // from v2.1 added 26.04.2012 'btnUnmount': 'Unmount', // from v2.1 added 30.04.2012 'btnConv' : 'Convert', // from v2.1 added 08.04.2014 'btnCwd' : 'Here', // from v2.1 added 22.5.2015 'btnVolume' : 'Volume', // from v2.1 added 22.5.2015 'btnAll' : 'All', // from v2.1 added 22.5.2015 'btnMime' : 'MIME Type', // from v2.1 added 22.5.2015 'btnFileName':'Filename', // from v2.1 added 22.5.2015 'btnSaveClose': 'Save & Close', // from v2.1 added 12.6.2015 'btnBackup' : 'Backup', // fromv2.1 added 28.11.2015 'btnRename' : 'Rename', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'Rename(All)', // from v2.1.24 added 6.4.2017 'btnPrevious' : 'Prev ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : 'Next ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : 'Save As', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'Mở thư mục', 'ntffile' : 'Mở tập tin', 'ntfreload' : 'Nạp lại nội dung thư mục', 'ntfmkdir' : 'Tạo thư mục', 'ntfmkfile' : 'Tạo tập tin', 'ntfrm' : 'Xóa tập tin', 'ntfcopy' : 'Sao chép tập tin', 'ntfmove' : 'Di chuyển tập tin', 'ntfprepare' : 'Chuẩn bị để sao chép các tập tin', 'ntfrename' : 'Đổi tên tập tin', 'ntfupload' : 'Tải tập tin lên', 'ntfdownload' : 'Tải tập tin', 'ntfsave' : 'Lưu tập tin', 'ntfarchive' : 'Tạo tập tin nén', 'ntfextract' : 'Giải nén tập tin', 'ntfsearch' : 'Tìm kiếm tập tin', 'ntfresize' : 'Resizing images', 'ntfsmth' : 'Doing something >_<', 'ntfloadimg' : 'Đang tải hình ảnh', 'ntfnetmount' : 'Mounting network volume', // added 18.04.2012 'ntfnetunmount': 'Unmounting network volume', // from v2.1 added 30.04.2012 'ntfdim' : 'Acquiring image dimension', // added 20.05.2013 'ntfreaddir' : 'Reading folder infomation', // from v2.1 added 01.07.2013 'ntfurl' : 'Getting URL of link', // from v2.1 added 11.03.2014 'ntfchmod' : 'Changing file mode', // from v2.1 added 20.6.2015 'ntfpreupload': 'Verifying upload file name', // from v2.1 added 31.11.2015 'ntfzipdl' : 'Creating a file for download', // from v2.1.7 added 23.1.2016 'ntfparents' : 'Getting path infomation', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'Processing the uploaded file', // from v2.1.17 added 2.11.2016 'ntftrash' : 'Doing throw in the trash', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'Doing restore from the trash', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'Checking destination folder', // from v2.1.24 added 3.5.2017 'ntfundo' : 'Undoing previous operation', // from v2.1.27 added 31.07.2017 'ntfredo' : 'Redoing previous undone', // from v2.1.27 added 31.07.2017 'ntfchkcontent' : 'Checking contents', // from v2.1.41 added 3.8.2018 /*********************************** volumes *********************************/ 'volume_Trash' : 'Trash', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : 'Chưa biết', 'Today' : 'Hôm nay', 'Yesterday' : 'Hôm qua', 'msJan' : 'Tháng 1', 'msFeb' : 'Tháng 2', 'msMar' : 'Tháng 3', 'msApr' : 'Tháng 4', 'msMay' : 'Tháng 5', 'msJun' : 'Tháng 6', 'msJul' : 'Tháng 7', 'msAug' : 'Tháng 8', 'msSep' : 'Tháng 9', 'msOct' : 'Tháng 10', 'msNov' : 'Tháng 11', 'msDec' : 'Tháng 12', 'January' : 'Tháng 1', 'February' : 'Tháng 2', 'March' : 'Tháng 3', 'April' : 'Tháng 4', 'May' : 'Tháng 5', 'June' : 'Tháng 6', 'July' : 'Tháng 7', 'August' : 'Tháng 8', 'September' : 'Tháng 9', 'October' : 'Tháng 10', 'November' : 'Tháng 11', 'December' : 'Tháng 12', 'Sunday' : 'Chủ nhật', 'Monday' : 'Thứ 2', 'Tuesday' : 'Thứ 3', 'Wednesday' : 'Thứ 4', 'Thursday' : 'Thứ 5', 'Friday' : 'Thứ 6', 'Saturday' : 'Thứ 7', 'Sun' : 'Chủ nhật', 'Mon' : 'Thứ 2', 'Tue' : 'Thứ 3', 'Wed' : 'Thứ 4', 'Thu' : 'Thứ 5', 'Fri' : 'Thứ 6', 'Sat' : 'Thứ 7', /******************************** sort variants ********************************/ 'sortname' : 'theo tên', 'sortkind' : 'theo loại', 'sortsize' : 'theo kích cỡ', 'sortdate' : 'theo ngày', 'sortFoldersFirst' : 'Thư mục đầu tiên', 'sortperm' : 'theo quyền hạn', // from v2.1.13 added 13.06.2016 'sortmode' : 'theo chế độ', // from v2.1.13 added 13.06.2016 'sortowner' : 'theo người tạo', // from v2.1.13 added 13.06.2016 'sortgroup' : 'theo nhóm', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'Also Treeview', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : 'NewFile.txt', // added 10.11.2015 'untitled folder' : 'NewFolder', // added 10.11.2015 'Archive' : 'NewArchive', // from v2.1 added 10.11.2015 'untitled file' : 'NewFile.$1', // from v2.1.41 added 6.8.2018 'extentionfile' : '$1: File', // from v2.1.41 added 6.8.2018 'extentiontype' : '$1: $2', // from v2.1.43 added 17.10.2018 /********************************** messages **********************************/ 'confirmReq' : 'Yêu cầu xác nhận', 'confirmRm' : 'Bạn có chắc chắn muốn xóa vĩnh viễn các mục?
                Điều này không thể được hoàn tác!', 'confirmRepl' : 'Thay tập tin cũ bằng tập tin mới? (Nếu nó chứa các thư mục, nó sẽ được hợp nhất. Để sao lưu và thay thế, chọn Sao lưu.)', 'confirmRest' : 'Thay thế mục hiện có bằng một mục trong thùng rác?', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'Not in UTF-8
                Convert to UTF-8?
                Contents become UTF-8 by saving after conversion.', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'Character encoding of this file couldn\'t be detected. It need to temporarily convert to UTF-8 for editting.
                Please select character encoding of this file.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : 'It has been modified.
                Losing work if you do not save changes.', // from v2.1 added 15.7.2015 'confirmTrash' : 'Bạn có chắc chắn muốn chuyển các mục vào thùng rác?', //from v2.1.24 added 29.4.2017 'confirmMove' : 'Bạn có chắc chắn muốn chuyển các mục vào "$1"?', //from v2.1.50 added 27.7.2019 'apllyAll' : 'Áp dụng cho tất cả', 'name' : 'Tên', 'size' : 'Kích cỡ', 'perms' : 'Quyền', 'modify' : 'Sửa đổi', 'kind' : 'Loại', 'read' : 'đọc', 'write' : 'viết', 'noaccess' : 'không truy cập', 'and' : 'và', 'unknown' : 'không xác định', 'selectall' : 'Chọn tất cả các mục', 'selectfiles' : 'Chọn các mục', 'selectffile' : 'Chọn mục đầu tiên', 'selectlfile' : 'Chọn mục cuối cùng', 'viewlist' : 'Hiển thị danh sách', 'viewicons' : 'Hiển thị biểu tượng', 'viewSmall' : 'Biểu tượng nhỏ', // from v2.1.39 added 22.5.2018 'viewMedium' : 'Biểu tượng vừa', // from v2.1.39 added 22.5.2018 'viewLarge' : 'Biểu tượng lớn', // from v2.1.39 added 22.5.2018 'viewExtraLarge' : 'Biểu tượng cực lớn', // from v2.1.39 added 22.5.2018 'places' : 'Places', 'calc' : 'Tính toán', 'path' : 'Đường dẫn', 'aliasfor' : 'Bí danh cho', 'locked' : 'Đã khóa', 'dim' : 'Kích thước', 'files' : 'Tệp', 'folders' : 'Thư mục', 'items' : 'Items', 'yes' : 'yes', 'no' : 'no', 'link' : 'Liên kết', 'searcresult' : 'Kết quả tìm kiếm', 'selected' : 'mục đã chọn', 'about' : 'Về', 'shortcuts' : 'Lối tắt', 'help' : 'Giúp đỡ', 'webfm' : 'Web file manager', 'ver' : 'Phiên bản', 'protocolver' : 'phiên bản protocol', 'homepage' : 'Trang chủ dự án', 'docs' : 'Tài liệu', 'github' : 'Theo dõi chúng tôi trên GitHub', 'twitter' : 'Theo dõi chúng tôi trên Twitter', 'facebook' : 'Theo dõi chúng tôi trên Facebook', 'team' : 'Đội ngũ', 'chiefdev' : 'Trùm sò', 'developer' : 'người phát triển', 'contributor' : 'người đóng góp', 'maintainer' : 'người bảo trì', 'translator' : 'người dịch', 'icons' : 'Icons', 'dontforget' : 'and don\'t forget to take your towel', 'shortcutsof' : 'Shortcuts disabled', 'dropFiles' : 'Thả tệp vào đây', 'or' : 'hoặc', 'selectForUpload' : 'Chọn tệp', 'moveFiles' : 'Di chuyển các mục', 'copyFiles' : 'Sao chép các mục', 'restoreFiles' : 'Khôi mục các mục', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'Remove from places', 'aspectRatio' : 'Tỉ lệ khung hình', 'scale' : 'Tỉ lệ', 'width' : 'Rộng', 'height' : 'Cao', 'resize' : 'Thay đổi kích cỡ', 'crop' : 'Cắt', 'rotate' : 'Xoay', 'rotate-cw' : 'Xoay 90 độ CW', 'rotate-ccw' : 'Xoay 90 độ CCW', 'degree' : '°', 'netMountDialogTitle' : 'Mount network volume', // added 18.04.2012 'protocol' : 'Protocol', // added 18.04.2012 'host' : 'Host', // added 18.04.2012 'port' : 'Port', // added 18.04.2012 'user' : 'User', // added 18.04.2012 'pass' : 'Password', // added 18.04.2012 'confirmUnmount' : 'Are you unmount $1?', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'Drop or Paste files from browser', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'Drop files, Paste URLs or images(clipboard) here', // from v2.1 added 07.04.2014 'encoding' : 'Mã hóa', // from v2.1 added 19.12.2014 'locale' : 'Địa phương', // from v2.1 added 19.12.2014 'searchTarget' : 'Mục tiêu: $1', // from v2.1 added 22.5.2015 'searchMime' : 'Tìm kiếm theo kiểu tệp (MIME)', // from v2.1 added 22.5.2015 'owner' : 'Chủ sở hữu', // from v2.1 added 20.6.2015 'group' : 'Nhóm', // from v2.1 added 20.6.2015 'other' : 'Khác', // from v2.1 added 20.6.2015 'execute' : 'Thực thi', // from v2.1 added 20.6.2015 'perm' : 'Quyền', // from v2.1 added 20.6.2015 'mode' : 'Chế độ', // from v2.1 added 20.6.2015 'emptyFolder' : 'Thư mục trống', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'Thư mục trống\\A Kéo thả vào đây để thêm các mục', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'Thư mục trống\\A Nhấn giữ để thêm các mục', // from v2.1.6 added 30.12.2015 'quality' : 'Chất lượng', // from v2.1.6 added 5.1.2016 'autoSync' : 'Tự động động bộ', // from v2.1.6 added 10.1.2016 'moveUp' : 'Di chuyển lên', // from v2.1.6 added 18.1.2016 'getLink' : 'Lấy liên kết URL', // from v2.1.7 added 9.2.2016 'selectedItems' : 'Các mục đã chọn ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'ID thư mục', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'Cho phép truy cập ngoại tuyến', // from v2.1.10 added 3.25.2016 'reAuth' : 'Xác thực lại', // from v2.1.10 added 3.25.2016 'nowLoading' : 'Đang tải...', // from v2.1.12 added 4.26.2016 'openMulti' : 'Mở nhiều tập tin', // from v2.1.12 added 5.14.2016 'openMultiConfirm': 'You are trying to open the $1 files. Are you sure you want to open in browser?', // from v2.1.12 added 5.14.2016 'emptySearch' : 'Kết quả tìm kiếm trống trong mục tiêu tìm kiếm.', // from v2.1.12 added 5.16.2016 'editingFile' : 'Nó là một tập tin đang chỉnh sửa.', // from v2.1.13 added 6.3.2016 'hasSelected' : 'You have selected $1 items.', // from v2.1.13 added 6.3.2016 'hasClipboard' : 'You have $1 items in the clipboard.', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'Tìm kiếm gia tăng chỉ từ hiển thị hiện tại.', // from v2.1.13 added 6.30.2016 'reinstate' : 'Phục hồi', // from v2.1.15 added 3.8.2016 'complete' : '$1 hoàn thành', // from v2.1.15 added 21.8.2016 'contextmenu' : 'Trình đơn ngữ cảnh', // from v2.1.15 added 9.9.2016 'pageTurning' : 'Chuyển trang', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'Volume roots', // from v2.1.16 added 16.9.2016 'reset' : 'Đặt lại', // from v2.1.16 added 1.10.2016 'bgcolor' : 'Màu nền', // from v2.1.16 added 1.10.2016 'colorPicker' : 'Chọn màu', // from v2.1.16 added 1.10.2016 '8pxgrid' : '8px Grid', // from v2.1.16 added 4.10.2016 'enabled' : 'Đã bật', // from v2.1.16 added 4.10.2016 'disabled' : 'Đã tắt', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'Search results is empty in current view.\\APress [Enter] to expand search target.', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'Kết quả tìm kiếm thư đầu tiên là trống trong chế độ xem hiện tại.', // from v2.1.23 added 24.3.2017 'textLabel' : 'Nhãn văn bản', // from v2.1.17 added 13.10.2016 'minsLeft' : '$1 mins left', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'Reopen with selected encoding', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'Save with the selected encoding', // from v2.1.19 added 2.12.2016 'selectFolder' : 'Chọn thư mục', // from v2.1.20 added 13.12.2016 'firstLetterSearch': 'First letter search', // from v2.1.23 added 24.3.2017 'presets' : 'Đặt trước', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : 'Có quá nhiều mục vì vậy không thể cho vào thùng rác.', // from v2.1.25 added 9.6.2017 'TextArea' : 'TextArea', // from v2.1.25 added 14.6.2017 'folderToEmpty' : 'Empty the folder "$1".', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : 'There are no items in a folder "$1".', // from v2.1.25 added 22.6.2017 'preference' : 'Preference', // from v2.1.26 added 28.6.2017 'language' : 'Ngôn ngữ', // from v2.1.26 added 28.6.2017 'clearBrowserData': 'Initialize the settings saved in this browser', // from v2.1.26 added 28.6.2017 'toolbarPref' : 'Cài đặt thanh công cụ', // from v2.1.27 added 2.8.2017 'charsLeft' : '... $1 chars left.', // from v2.1.29 added 30.8.2017 'sum' : 'Sum', // from v2.1.29 added 28.9.2017 'roughFileSize' : 'Rough file size', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : 'Focus on the element of dialog with mouseover', // from v2.1.30 added 2.11.2017 'select' : 'Select', // from v2.1.30 added 23.11.2017 'selectAction' : 'Action when select file', // from v2.1.30 added 23.11.2017 'useStoredEditor' : 'Open with the editor used last time', // from v2.1.30 added 23.11.2017 'selectinvert' : 'Invert selection', // from v2.1.30 added 25.11.2017 'renameMultiple' : 'Are you sure you want to rename $1 selected items like $2?
                This cannot be undone!', // from v2.1.31 added 4.12.2017 'batchRename' : 'Batch rename', // from v2.1.31 added 8.12.2017 'plusNumber' : '+ Number', // from v2.1.31 added 8.12.2017 'asPrefix' : 'Thêm tiền tố', // from v2.1.31 added 8.12.2017 'asSuffix' : 'Thêm hậu tố', // from v2.1.31 added 8.12.2017 'changeExtention' : 'Thay đổi phần mở rộng', // from v2.1.31 added 8.12.2017 'columnPref' : 'Columns settings (List view)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : 'All changes will reflect immediately to the archive.', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : 'Any changes will not reflect until un-mount this volume.', // from v2.1.33 added 2.3.2018 'unmountChildren' : 'The following volume(s) mounted on this volume also unmounted. Are you sure to unmount it?', // from v2.1.33 added 5.3.2018 'selectionInfo' : 'Selection Info', // from v2.1.33 added 7.3.2018 'hashChecker' : 'Algorithms to show the file hash', // from v2.1.33 added 10.3.2018 'infoItems' : 'Info Items (Selection Info Panel)', // from v2.1.38 added 28.3.2018 'pressAgainToExit': 'Nhấn một lần nữa để thoát.', // from v2.1.38 added 1.4.2018 'toolbar' : 'Toolbar', // from v2.1.38 added 4.4.2018 'workspace' : 'Work Space', // from v2.1.38 added 4.4.2018 'dialog' : 'Dialog', // from v2.1.38 added 4.4.2018 'all' : 'All', // from v2.1.38 added 4.4.2018 'iconSize' : 'Icon Size (Icons view)', // from v2.1.39 added 7.5.2018 'editorMaximized' : 'Open the maximized editor window', // from v2.1.40 added 30.6.2018 'editorConvNoApi' : 'Because conversion by API is not currently available, please convert on the website.', //from v2.1.40 added 8.7.2018 'editorConvNeedUpload' : 'After conversion, you must be upload with the item URL or a downloaded file to save the converted file.', //from v2.1.40 added 8.7.2018 'convertOn' : 'Convert on the site of $1', // from v2.1.40 added 10.7.2018 'integrations' : 'Integrations', // from v2.1.40 added 11.7.2018 'integrationWith' : 'This elFinder has the following external services integrated. Please check the terms of use, privacy policy, etc. before using it.', // from v2.1.40 added 11.7.2018 'showHidden' : 'Show hidden items', // from v2.1.41 added 24.7.2018 'hideHidden' : 'Hide hidden items', // from v2.1.41 added 24.7.2018 'toggleHidden' : 'Show/Hide hidden items', // from v2.1.41 added 24.7.2018 'makefileTypes' : 'File types to enable with "New file"', // from v2.1.41 added 7.8.2018 'typeOfTextfile' : 'Type of the Text file', // from v2.1.41 added 7.8.2018 'add' : 'Add', // from v2.1.41 added 7.8.2018 'theme' : 'Theme', // from v2.1.43 added 19.10.2018 'default' : 'Default', // from v2.1.43 added 19.10.2018 'description' : 'Description', // from v2.1.43 added 19.10.2018 'website' : 'Website', // from v2.1.43 added 19.10.2018 'author' : 'Author', // from v2.1.43 added 19.10.2018 'email' : 'Email', // from v2.1.43 added 19.10.2018 'license' : 'License', // from v2.1.43 added 19.10.2018 'exportToSave' : 'This item can\'t be saved. To avoid losing the edits you need to export to your PC.', // from v2.1.44 added 1.12.2018 'dblclickToSelect': 'Double click on the file to select it.', // from v2.1.47 added 22.1.2019 'useFullscreen' : 'Use fullscreen mode', // from v2.1.47 added 19.2.2019 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Unknown', 'kindRoot' : 'Volume Root', // from v2.1.16 added 16.10.2016 'kindFolder' : 'Folder', 'kindSelects' : 'Selections', // from v2.1.29 added 29.8.2017 'kindAlias' : 'Alias', 'kindAliasBroken' : 'Broken alias', // applications 'kindApp' : 'Application', 'kindPostscript' : 'Postscript document', 'kindMsOffice' : 'Microsoft Office document', 'kindMsWord' : 'Microsoft Word document', 'kindMsExcel' : 'Microsoft Excel document', 'kindMsPP' : 'Microsoft Powerpoint presentation', 'kindOO' : 'Open Office document', 'kindAppFlash' : 'Flash application', 'kindPDF' : 'Portable Document Format (PDF)', 'kindTorrent' : 'Bittorrent file', 'kind7z' : '7z archive', 'kindTAR' : 'TAR archive', 'kindGZIP' : 'GZIP archive', 'kindBZIP' : 'BZIP archive', 'kindXZ' : 'XZ archive', 'kindZIP' : 'ZIP archive', 'kindRAR' : 'RAR archive', 'kindJAR' : 'Java JAR file', 'kindTTF' : 'True Type font', 'kindOTF' : 'Open Type font', 'kindRPM' : 'RPM package', // texts 'kindText' : 'Text document', 'kindTextPlain' : 'Plain text', 'kindPHP' : 'PHP source', 'kindCSS' : 'Cascading style sheet', 'kindHTML' : 'HTML document', 'kindJS' : 'Javascript source', 'kindRTF' : 'Rich Text Format', 'kindC' : 'C source', 'kindCHeader' : 'C header source', 'kindCPP' : 'C++ source', 'kindCPPHeader' : 'C++ header source', 'kindShell' : 'Unix shell script', 'kindPython' : 'Python source', 'kindJava' : 'Java source', 'kindRuby' : 'Ruby source', 'kindPerl' : 'Perl script', 'kindSQL' : 'SQL source', 'kindXML' : 'XML document', 'kindAWK' : 'AWK source', 'kindCSV' : 'Comma separated values', 'kindDOCBOOK' : 'Docbook XML document', 'kindMarkdown' : 'Markdown text', // added 20.7.2015 // images 'kindImage' : 'Image', 'kindBMP' : 'BMP image', 'kindJPEG' : 'JPEG image', 'kindGIF' : 'GIF Image', 'kindPNG' : 'PNG Image', 'kindTIFF' : 'TIFF image', 'kindTGA' : 'TGA image', 'kindPSD' : 'Adobe Photoshop image', 'kindXBITMAP' : 'X bitmap image', 'kindPXM' : 'Pixelmator image', // media 'kindAudio' : 'Audio media', 'kindAudioMPEG' : 'MPEG audio', 'kindAudioMPEG4' : 'MPEG-4 audio', 'kindAudioMIDI' : 'MIDI audio', 'kindAudioOGG' : 'Ogg Vorbis audio', 'kindAudioWAV' : 'WAV audio', 'AudioPlaylist' : 'MP3 playlist', 'kindVideo' : 'Video media', 'kindVideoDV' : 'DV movie', 'kindVideoMPEG' : 'MPEG movie', 'kindVideoMPEG4' : 'MPEG-4 movie', 'kindVideoAVI' : 'AVI movie', 'kindVideoMOV' : 'Quick Time movie', 'kindVideoWM' : 'Windows Media movie', 'kindVideoFlash' : 'Flash movie', 'kindVideoMKV' : 'Matroska movie', 'kindVideoOGG' : 'Ogg movie' } }; })); plugins/file-manager-advanced/application/library/js/i18n/elfinder.zh_CN.js000064400000077114147176754550022646 0ustar00/** * 简体中文 translation * @author 翻译者 deerchao * @author Andy Hu * @author Max Wen * @author Kejun Chang * @author LDMING * @author Andy Lee * @author Cololi * @version 2020-04-07 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.zh_CN = { translator : '翻译者 deerchao <deerchao@gmail.com>, Andy Hu <andyhu7@yahoo.com.hk>, Max Wen<max.wen@qq.com>, Kejun Chang <changkejun@hotmail.com>, LDMING <china-live@live.cn>, Andy Lee <oraclei@126.com>, Cololi <i@cololi.moe>', language : '简体中文', direction : 'ltr', dateFormat : 'Y-m-d H:i', // will show like: 2020-04-07 14:53 fancyDateFormat : '$1 H:i', // will show like: 今天 14:53 nonameDateFormat : 'ymd-His', // noname upload will show like: 200407-145300 messages : { /********************************** errors **********************************/ 'error' : '错误', 'errUnknown' : '未知的错误.', 'errUnknownCmd' : '未知的命令.', 'errJqui' : '无效的 jQuery UI 配置,必须包含 Selectable、draggable 以及 droppable 组件.', 'errNode' : 'elFinder 需要能创建 DOM 元素.', 'errURL' : '无效的 elFinder 配置! URL 选项未配置.', 'errAccess' : '访问被拒绝.', 'errConnect' : '不能连接到服务器端.', 'errAbort' : '连接中止.', 'errTimeout' : '连接超时.', 'errNotFound' : '未找到服务器端.', 'errResponse' : '无效的服务器端响应.', 'errConf' : '无效的服务器端配置.', 'errJSON' : 'PHP JSON 模块未安装.', 'errNoVolumes' : '无可读的卷.', 'errCmdParams' : '无效的命令 "$1".', 'errDataNotJSON' : '服务器返回的数据不符合 JSON 格式.', 'errDataEmpty' : '服务器返回的数据为空.', 'errCmdReq' : '服务器端请求需要命令名称.', 'errOpen' : '无法打开 "$1".', 'errNotFolder' : '对象不是文件夹.', 'errNotFile' : '对象不是文件.', 'errRead' : '无法读取 "$1".', 'errWrite' : '无法写入 "$1".', 'errPerm' : '没有权限.', 'errLocked' : '"$1" 已被锁定,不能重命名, 移动或删除.', 'errExists' : '文件 "$1" 已经存在.', 'errInvName' : '无效的文件名.', 'errInvDirname' : '无效的文件夹名.', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : '文件夹不存在.', 'errFileNotFound' : '文件不存在.', 'errTrgFolderNotFound' : '未找到目标文件夹 "$1".', 'errPopup' : '浏览器拦截了弹出窗口. 请在选项中允许弹出窗口.', 'errMkdir' : '不能创建文件夹 "$1".', 'errMkfile' : '不能创建文件 "$1".', 'errRename' : '不能重命名 "$1".', 'errCopyFrom' : '不允许从卷 "$1" 复制.', 'errCopyTo' : '不允许向卷 "$1" 复制.', 'errMkOutLink' : '无法创建链接到卷根以外的链接.', // from v2.1 added 03.10.2015 'errUpload' : '上传出错.', // old name - errUploadCommon 'errUploadFile' : '无法上传 "$1".', // old name - errUpload 'errUploadNoFiles' : '未找到要上传的文件.', 'errUploadTotalSize' : '数据超过了允许的最大大小.', // old name - errMaxSize 'errUploadFileSize' : '文件超过了允许的最大大小.', // old name - errFileMaxSize 'errUploadMime' : '不允许的文件类型.', 'errUploadTransfer' : '"$1" 传输错误.', 'errUploadTemp' : '无法为上传文件创建临时文件.', // from v2.1 added 26.09.2015 'errNotReplace' : ' "$1" 已存在, 不能被替换.', // new 'errReplace' : '无法替换 "$1".', 'errSave' : '无法保存 "$1".', 'errCopy' : '无法复制 "$1".', 'errMove' : '无法移动 "$1".', 'errCopyInItself' : '不能移动 "$1" 到原有位置.', 'errRm' : '无法删除 "$1".', 'errTrash' : '无法移到回收站.', // from v2.1.24 added 30.4.2017 'errRmSrc' : '不能删除源文件.', 'errExtract' : '无法从 "$1" 提取文件.', 'errArchive' : '无法创建压缩包.', 'errArcType' : '不支持的压缩格式.', 'errNoArchive' : '文件不是压缩包, 或者不支持该压缩格式.', 'errCmdNoSupport' : '服务器端不支持该命令.', 'errReplByChild' : '不能用文件夹 “$1” 下的项替换文件夹 “$1” 自身.', 'errArcSymlinks' : '出于安全上的考虑,不允许解压包含符号链接的压缩包.', // edited 24.06.2012 'errArcMaxSize' : '压缩包文件超过最大允许文件大小范围.', 'errResize' : '无法将调整大小到 "$1".', 'errResizeDegree' : '无效的旋转角度.', // added 7.3.2013 'errResizeRotate' : '无法旋转图片.', // added 7.3.2013 'errResizeSize' : '无效的图片尺寸.', // added 7.3.2013 'errResizeNoChange' : '图片尺寸未改变.', // added 7.3.2013 'errUsupportType' : '不被支持的文件格式.', 'errNotUTF8Content' : '文件 "$1" 不是 UTF-8 格式, 不能编辑.', // added 9.11.2011 'errNetMount' : '无法装载 "$1".', // added 17.04.2012 'errNetMountNoDriver' : '不支持该协议.', // added 17.04.2012 'errNetMountFailed' : '装载失败.', // added 17.04.2012 'errNetMountHostReq' : '需要指定主机.', // added 18.04.2012 'errSessionExpires' : '您的会话由于长时间未活动已过期.', 'errCreatingTempDir' : '无法创建临时目录 "$1"', 'errFtpDownloadFile' : '无法从FTP下载文件 "$1" ', 'errFtpUploadFile' : '无法将文件 "$1" 上传至FTP', 'errFtpMkdir' : '无法在FTP上创建远程目录 "$1"', 'errArchiveExec' : '归档文件"$1"时出错.', 'errExtractExec' : '解压文件"$1"时出错.', 'errNetUnMount' : '无法卸载.', // from v2.1 added 30.04.2012 'errConvUTF8' : '未转换至UTF-8', // from v2.1 added 08.04.2014 'errFolderUpload' : '如果您需要上传目录, 请尝试使用Google Chrome.', // from v2.1 added 26.6.2015 'errSearchTimeout' : '搜索 "$1" 超时,仅显示部分搜索结果.', // from v2.1 added 12.1.2016 'errReauthRequire' : '必需重新授权.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : '最大可选择项目数为 $1.', // from v2.1.17 added 17.10.2016 'errRestore' : '无法从回收站中恢复,无法识别还原目的地.', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : '找不到这个文件的编辑器.', // from v2.1.25 added 23.5.2017 'errServerError' : '服务端发生错误.', // from v2.1.25 added 16.6.2017 'errEmpty' : '无法清空文件夹 "$1".', // from v2.1.25 added 22.6.2017 'moreErrors' : '存在 $1 多个错误.', // from v2.1.44 added 9.12.2018 /******************************* commands names ********************************/ 'cmdarchive' : '创建压缩包', 'cmdback' : '后退', 'cmdcopy' : '复制', 'cmdcut' : '剪切', 'cmddownload' : '下载', 'cmdduplicate' : '创建副本', 'cmdedit' : '编辑文件', 'cmdextract' : '从压缩包提取文件', 'cmdforward' : '前进', 'cmdgetfile' : '选择文件', 'cmdhelp' : '关于', 'cmdhome' : '首页', 'cmdinfo' : '查看详情', 'cmdmkdir' : '新建文件夹', 'cmdmkdirin' : '至新文件夹', // from v2.1.7 added 19.2.2016 'cmdmkfile' : '新建文件', 'cmdopen' : '打开', 'cmdpaste' : '粘贴', 'cmdquicklook' : '预览', 'cmdreload' : '刷新', 'cmdrename' : '重命名', 'cmdrm' : '删除', 'cmdtrash' : '至回收站', //from v2.1.24 added 29.4.2017 'cmdrestore' : '恢复', //from v2.1.24 added 3.5.2017 'cmdsearch' : '查找文件', 'cmdup' : '转到上一级文件夹', 'cmdupload' : '上传文件', 'cmdview' : '查看', 'cmdresize' : '调整大小&旋转', 'cmdsort' : '排序', 'cmdnetmount' : '装载网络卷', // added 18.04.2012 'cmdnetunmount': '卸载', // from v2.1 added 30.04.2012 'cmdplaces' : '添加到收藏夹', // added 28.12.2014 'cmdchmod' : '改变模式', // from v2.1 added 20.6.2015 'cmdopendir' : '打开文件夹', // from v2.1 added 13.1.2016 'cmdcolwidth' : '设置列宽', // from v2.1.13 added 12.06.2016 'cmdfullscreen': '全屏显示', // from v2.1.15 added 03.08.2016 'cmdmove' : '移动', // from v2.1.15 added 21.08.2016 'cmdempty' : '清空文件夹', // from v2.1.25 added 22.06.2017 'cmdundo' : '撤消', // from v2.1.27 added 31.07.2017 'cmdredo' : '重做', // from v2.1.27 added 31.07.2017 'cmdpreference': '偏好', // from v2.1.27 added 03.08.2017 'cmdselectall' : '全选', // from v2.1.28 added 15.08.2017 'cmdselectnone': '全不选', // from v2.1.28 added 15.08.2017 'cmdselectinvert': '反向选择', // from v2.1.28 added 15.08.2017 'cmdopennew' : '在新窗口打开', // from v2.1.38 added 3.4.2018 'cmdhide' : '隐藏 (偏好)', // from v2.1.41 added 24.7.2018 /*********************************** buttons ***********************************/ 'btnClose' : '关闭', 'btnSave' : '保存', 'btnRm' : '删除', 'btnApply' : '应用', 'btnCancel' : '取消', 'btnNo' : '否', 'btnYes' : '是', 'btnMount' : '装载', // added 18.04.2012 'btnApprove': '至 $1 并确认', // from v2.1 added 26.04.2012 'btnUnmount': '卸载', // from v2.1 added 30.04.2012 'btnConv' : '转换', // from v2.1 added 08.04.2014 'btnCwd' : '这里', // from v2.1 added 22.5.2015 'btnVolume' : '卷', // from v2.1 added 22.5.2015 'btnAll' : '全部', // from v2.1 added 22.5.2015 'btnMime' : 'MIME类型', // from v2.1 added 22.5.2015 'btnFileName':'文件名', // from v2.1 added 22.5.2015 'btnSaveClose': '保存并关闭', // from v2.1 added 12.6.2015 'btnBackup' : '备份', // fromv2.1 added 28.11.2015 'btnRename' : '重命名', // from v2.1.24 added 6.4.2017 'btnRenameAll' : '重命名(All)', // from v2.1.24 added 6.4.2017 'btnPrevious' : '向前 ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : '向后 ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : '另存为', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : '打开文件夹', 'ntffile' : '打开文件', 'ntfreload' : '刷新文件夹内容', 'ntfmkdir' : '创建文件夹', 'ntfmkfile' : '创建文件', 'ntfrm' : '删除文件', 'ntfcopy' : '复制文件', 'ntfmove' : '移动文件', 'ntfprepare' : '准备复制文件', 'ntfrename' : '重命名文件', 'ntfupload' : '上传文件', 'ntfdownload' : '下载文件', 'ntfsave' : '保存文件', 'ntfarchive' : '创建压缩包', 'ntfextract' : '从压缩包提取文件', 'ntfsearch' : '搜索文件', 'ntfresize' : '正在更改尺寸', 'ntfsmth' : '正在忙 >_<', 'ntfloadimg' : '正在加载图片', 'ntfnetmount' : '正在装载网络卷', // added 18.04.2012 'ntfnetunmount': '卸载网络卷', // from v2.1 added 30.04.2012 'ntfdim' : '获取图像尺寸', // added 20.05.2013 'ntfreaddir' : '正在读取文件夹信息', // from v2.1 added 01.07.2013 'ntfurl' : '正在获取链接地址', // from v2.1 added 11.03.2014 'ntfchmod' : '正在改变文件模式', // from v2.1 added 20.6.2015 'ntfpreupload': '正在验证上传文件名', // from v2.1 added 31.11.2015 'ntfzipdl' : '正在创建一个下载文件', // from v2.1.7 added 23.1.2016 'ntfparents' : '正在取得路径信息', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': '正在处理上传文件', // from v2.1.17 added 2.11.2016 'ntftrash' : '移动到回收站', // from v2.1.24 added 2.5.2017 'ntfrestore' : '从回收站恢复', // from v2.1.24 added 3.5.2017 'ntfchkdir' : '检查目标文件夹', // from v2.1.24 added 3.5.2017 'ntfundo' : '撤消上一个全局操作', // from v2.1.27 added 31.07.2017 'ntfredo' : '重做上一全局操作', // from v2.1.27 added 31.07.2017 'ntfchkcontent' : '检查内容', // from v2.1.41 added 3.8.2018 /*********************************** volumes *********************************/ 'volume_Trash' : '回收站', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : '未知', 'Today' : '今天', 'Yesterday' : '昨天', 'msJan' : '一月', 'msFeb' : '二月', 'msMar' : '三月', 'msApr' : '四月', 'msMay' : '五月', 'msJun' : '六月', 'msJul' : '七月', 'msAug' : '八月', 'msSep' : '九月', 'msOct' : '十月', 'msNov' : '十一月', 'msDec' : '十二月', 'January' : '一月', 'February' : '二月', 'March' : '三月', 'April' : '四月', 'May' : '五月', 'June' : '六月', 'July' : '七月', 'August' : '八月', 'September' : '九月', 'October' : '十月', 'November' : '十一月', 'December' : '十二月', 'Sunday' : '星期日', 'Monday' : '星期一', 'Tuesday' : '星期二', 'Wednesday' : '星期三', 'Thursday' : '星期四', 'Friday' : '星期五', 'Saturday' : '星期六', 'Sun' : '周日', 'Mon' : '周一', 'Tue' : '周二', 'Wed' : '周三', 'Thu' : '周四', 'Fri' : '周五', 'Sat' : '周六', /******************************** sort variants ********************************/ 'sortname' : '按名称', 'sortkind' : '按类型', 'sortsize' : '按大小', 'sortdate' : '按日期', 'sortFoldersFirst' : '文件夹优先', 'sortperm' : '按权限排序', // from v2.1.13 added 13.06.2016 'sortmode' : '按属性排序', // from v2.1.13 added 13.06.2016 'sortowner' : '按所有者排序', // from v2.1.13 added 13.06.2016 'sortgroup' : '按组排序', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : '同时刷新树状目录', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : '新文件.txt', // added 10.11.2015 'untitled folder' : '新文件夹', // added 10.11.2015 'Archive' : '新压缩包', // from v2.1 added 10.11.2015 'untitled file' : '新文件.$1', // from v2.1.41 added 6.8.2018 'extentionfile' : '$1: 文件', // from v2.1.41 added 6.8.2018 'extentiontype' : '$1: $2', // from v2.1.43 added 17.10.2018 /********************************** messages **********************************/ 'confirmReq' : '请确认', 'confirmRm' : '确定要删除文件吗?
                该操作不可撤销!', 'confirmRepl' : '用新的文件替换原有文件?', 'confirmRest' : '从回收站替换当前项?', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : '文件不是UTF-8格式.
                转换为UTF-8吗?
                通过在转换后保存,内容变为UTF-8.', // from v2.1 added 08.04.2014 'confirmNonUTF8' : '无法检测到此文件的字符编码.需要暂时转换此文件为UTF-8编码以进行编辑.
                请选择此文件的字符编码.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : '文件已被编辑.
                如果不保存直接关闭,将丢失编辑内容.', // from v2.1 added 15.7.2015 'confirmTrash' : '确定要将该项移动到回收站么?', //from v2.1.24 added 29.4.2017 'confirmMove' : '确定要移动该项到 "$1"?', //from v2.1.50 added 27.7.2019 'apllyAll' : '全部应用', 'name' : '名称', 'size' : '大小', 'perms' : '权限', 'modify' : '修改于', 'kind' : '类别', 'read' : '读取', 'write' : '写入', 'noaccess' : '无权限', 'and' : '和', 'unknown' : '未知', 'selectall' : '选择所有文件', 'selectfiles' : '选择文件', 'selectffile' : '选择第一个文件', 'selectlfile' : '选择最后一个文件', 'viewlist' : '列表视图', 'viewicons' : '图标视图', 'viewSmall' : '小图标', // from v2.1.39 added 22.5.2018 'viewMedium' : '中图标', // from v2.1.39 added 22.5.2018 'viewLarge' : '大图标', // from v2.1.39 added 22.5.2018 'viewExtraLarge' : '超大图标', // from v2.1.39 added 22.5.2018 'places' : '位置', 'calc' : '计算', 'path' : '路径', 'aliasfor' : '别名', 'locked' : '锁定', 'dim' : '尺寸', 'files' : '文件', 'folders' : '文件夹', 'items' : '项目', 'yes' : '是', 'no' : '否', 'link' : '链接', 'searcresult' : '搜索结果', 'selected' : '选中的项目', 'about' : '关于', 'shortcuts' : '快捷键', 'help' : '帮助', 'webfm' : '网络文件管理器', 'ver' : '版本', 'protocolver' : '协议版本', 'homepage' : '项目主页', 'docs' : '文档', 'github' : '复刻我们的github', 'twitter' : '关注我们的twitter', 'facebook' : '加入我们的facebook', 'team' : '团队', 'chiefdev' : '首席开发', 'developer' : '开发', 'contributor' : '贡献', 'maintainer' : '维护', 'translator' : '翻译', 'icons' : '图标', 'dontforget' : '别忘了带上你擦汗的毛巾', 'shortcutsof' : '快捷键已禁用', 'dropFiles' : '把文件拖到这里', 'or' : '或者', 'selectForUpload' : '选择要上传的文件', 'moveFiles' : '移动文件', 'copyFiles' : '复制文件', 'restoreFiles' : '恢复文件', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : '从这里中删除', 'aspectRatio' : '保持比例', 'scale' : '缩放比例', 'width' : '宽', 'height' : '高', 'resize' : '调整大小', 'crop' : '裁切', 'rotate' : '旋转', 'rotate-cw' : '顺时针旋转90°', 'rotate-ccw' : '逆时针旋转90°', 'degree' : '°', 'netMountDialogTitle' : '装载网络目录', // added 18.04.2012 'protocol' : '协议', // added 18.04.2012 'host' : '主机', // added 18.04.2012 'port' : '端口', // added 18.04.2012 'user' : '用户', // added 18.04.2012 'pass' : '密码', // added 18.04.2012 'confirmUnmount' : '确实要卸载 $1?', // from v2.1 added 30.04.2012 'dropFilesBrowser': '从浏览器中拖放或粘贴文件', // from v2.1 added 30.05.2012 'dropPasteFiles' : '拖放文件,粘贴网址或剪贴板图像', // from v2.1 added 07.04.2014 'encoding' : '编码', // from v2.1 added 19.12.2014 'locale' : '语言环境', // from v2.1 added 19.12.2014 'searchTarget' : '目标: $1', // from v2.1 added 22.5.2015 'searchMime' : '按输入MIME类型搜索', // from v2.1 added 22.5.2015 'owner' : '所有者', // from v2.1 added 20.6.2015 'group' : '组', // from v2.1 added 20.6.2015 'other' : '其他', // from v2.1 added 20.6.2015 'execute' : '执行', // from v2.1 added 20.6.2015 'perm' : '许可', // from v2.1 added 20.6.2015 'mode' : '属性', // from v2.1 added 20.6.2015 'emptyFolder' : '文件夹是空的', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : '文件夹是空的\\A 拖放可追加项目', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : '文件夹是空的\\A 长按可添加项目', // from v2.1.6 added 30.12.2015 'quality' : '品质', // from v2.1.6 added 5.1.2016 'autoSync' : '自动同步', // from v2.1.6 added 10.1.2016 'moveUp' : '向上移动', // from v2.1.6 added 18.1.2016 'getLink' : '获取URL链接', // from v2.1.7 added 9.2.2016 'selectedItems' : '已选择项目 ($1)', // from v2.1.7 added 2.19.2016 'folderId' : '目录ID', // from v2.1.10 added 3.25.2016 'offlineAccess' : '允许离线操作', // from v2.1.10 added 3.25.2016 'reAuth' : '重新验证', // from v2.1.10 added 3.25.2016 'nowLoading' : '正在加载...', // from v2.1.12 added 4.26.2016 'openMulti' : '打开多个文件', // from v2.1.12 added 5.14.2016 'openMultiConfirm': '您正在尝试打开$1文件.您确定要在浏览器中打开吗?', // from v2.1.12 added 5.14.2016 'emptySearch' : '搜索目标中没有匹配结果', // from v2.1.12 added 5.16.2016 'editingFile' : '正在编辑文件.', // from v2.1.13 added 6.3.2016 'hasSelected' : '已选择 $1 个项目.', // from v2.1.13 added 6.3.2016 'hasClipboard' : '剪贴板里有 $1 个项目.', // from v2.1.13 added 6.3.2016 'incSearchOnly' : '增量搜索仅来自当前视图.', // from v2.1.13 added 6.30.2016 'reinstate' : '恢复', // from v2.1.15 added 3.8.2016 'complete' : '$1 完成', // from v2.1.15 added 21.8.2016 'contextmenu' : '上下文菜单', // from v2.1.15 added 9.9.2016 'pageTurning' : '翻页', // from v2.1.15 added 10.9.2016 'volumeRoots' : '根目录', // from v2.1.16 added 16.9.2016 'reset' : '重置', // from v2.1.16 added 1.10.2016 'bgcolor' : '背景色', // from v2.1.16 added 1.10.2016 'colorPicker' : '颜色选择器', // from v2.1.16 added 1.10.2016 '8pxgrid' : '步长(8px)', // from v2.1.16 added 4.10.2016 'enabled' : '启用', // from v2.1.16 added 4.10.2016 'disabled' : '关闭', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : '当前视图下没有匹配结果', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : '当前视图中的第一个字母搜索结果为空', // from v2.1.23 added 24.3.2017 'textLabel' : '文本标签', // from v2.1.17 added 13.10.2016 'minsLeft' : '剩余 $1 分钟', // from v2.1.17 added 13.11.2016 'openAsEncoding' : '使用所选编码重新打开', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : '使用所选编码保存', // from v2.1.19 added 2.12.2016 'selectFolder' : '选择目录', // from v2.1.20 added 13.12.2016 'firstLetterSearch': '首字母搜索', // from v2.1.23 added 24.3.2017 'presets' : '预置', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : '项目太多,不能移动到回收站.', // from v2.1.25 added 9.6.2017 'TextArea' : '文本区域', // from v2.1.25 added 14.6.2017 'folderToEmpty' : '清空文件夹 "$1".', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : '文件夹 "$1" 为空.', // from v2.1.25 added 22.6.2017 'preference' : '偏好', // from v2.1.26 added 28.6.2017 'language' : '语言设置', // from v2.1.26 added 28.6.2017 'clearBrowserData': '清除保存在此浏览器中的偏好设置', // from v2.1.26 added 28.6.2017 'toolbarPref' : '工具栏设置', // from v2.1.27 added 2.8.2017 'charsLeft' : '... 剩余$1字符', // from v2.1.29 added 30.8.2017 'linesLeft' : '... 剩余$1行', // from v2.1.52 added 16.1.2020 'sum' : '总数', // from v2.1.29 added 28.9.2017 'roughFileSize' : '粗略的文件大小', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : '鼠标悬停在对话框内可编辑区域时自动获得焦点', // from v2.1.30 added 2.11.2017 'select' : '选择', // from v2.1.30 added 23.11.2017 'selectAction' : '双击选择的文件时', // from v2.1.30 added 23.11.2017 'useStoredEditor' : '用上次使用的编辑器打开', // from v2.1.30 added 23.11.2017 'selectinvert' : '反向选择', // from v2.1.30 added 25.11.2017 'renameMultiple' : '确定要重命名选定项 $1 为 $2 吗?
                该操作不能撤消!', // from v2.1.31 added 4.12.2017 'batchRename' : '批量重命名', // from v2.1.31 added 8.12.2017 'plusNumber' : '增加数量', // from v2.1.31 added 8.12.2017 'asPrefix' : '添加前缀', // from v2.1.31 added 8.12.2017 'asSuffix' : '添加后缀', // from v2.1.31 added 8.12.2017 'changeExtention' : '变化范围', // from v2.1.31 added 8.12.2017 'columnPref' : '列设置 (列表视图)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : '所有修改将立即反馈到文档.', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : '所有修改在卸载本卷之前不会反馈', // from v2.1.33 added 2.3.2018 'unmountChildren' : '安装在本卷上的以下卷也会卸载.你确定要卸载吗?', // from v2.1.33 added 5.3.2018 'selectionInfo' : '选择信息', // from v2.1.33 added 7.3.2018 'hashChecker' : '显示文件散列值的算法', // from v2.1.33 added 10.3.2018 'infoItems' : '信息条目 (选择信息面板)', // from v2.1.38 added 28.3.2018 'pressAgainToExit': '再按退出', // from v2.1.38 added 1.4.2018 'toolbar' : '工具条', // from v2.1.38 added 4.4.2018 'workspace' : '工作空间', // from v2.1.38 added 4.4.2018 'dialog' : '对话框', // from v2.1.38 added 4.4.2018 'all' : '全部', // from v2.1.38 added 4.4.2018 'iconSize' : '图标尺寸 (图标视图)', // from v2.1.39 added 7.5.2018 'editorMaximized' : '打开最大化编辑器窗口', // from v2.1.40 added 30.6.2018 'editorConvNoApi' : '由于通过 API 转换功能当前不可用,请到网站上转换.', //from v2.1.40 added 8.7.2018 'editorConvNeedUpload' : '转换后,必须上传条目URL或一个下载的文件,以保存转换后的文件.', //from v2.1.40 added 8.7.2018 'convertOn' : '在 $1 站点上转换', // from v2.1.40 added 10.7.2018 'integrations' : '集成', // from v2.1.40 added 11.7.2018 'integrationWith' : '本 elFinder 集成以下外部服务.使用前请检查使用条款、隐私政策等.', // from v2.1.40 added 11.7.2018 'showHidden' : '显示已隐藏的条目', // from v2.1.41 added 24.7.2018 'hideHidden' : '隐藏已隐藏的条目', // from v2.1.41 added 24.7.2018 'toggleHidden' : '显示/隐藏已隐藏的条目', // from v2.1.41 added 24.7.2018 'makefileTypes' : '允许"新文件"使用的文件类型', // from v2.1.41 added 7.8.2018 'typeOfTextfile' : '文本文件类型', // from v2.1.41 added 7.8.2018 'add' : '添加', // from v2.1.41 added 7.8.2018 'theme' : '主题', // from v2.1.43 added 19.10.2018 'default' : '缺省', // from v2.1.43 added 19.10.2018 'description' : '描述', // from v2.1.43 added 19.10.2018 'website' : '网站', // from v2.1.43 added 19.10.2018 'author' : '作者', // from v2.1.43 added 19.10.2018 'email' : '邮箱', // from v2.1.43 added 19.10.2018 'license' : '许可证', // from v2.1.43 added 19.10.2018 'exportToSave' : '本条目不能保存. 为避免丢失编辑数据,须要导出到你的电脑.', // from v2.1.44 added 1.12.2018 'dblclickToSelect': '在文件上双击以选中它.', // from v2.1.47 added 22.1.2019 'useFullscreen' : '使用全屏模式', // from v2.1.47 added 19.2.2019 /********************************** mimetypes **********************************/ 'kindUnknown' : '未知', 'kindRoot' : '根目录', // from v2.1.16 added 16.10.2016 'kindFolder' : '文件夹', 'kindSelects' : '选择', // from v2.1.29 added 29.8.2017 'kindAlias' : '别名', 'kindAliasBroken' : '错误的别名', // applications 'kindApp' : '程序', 'kindPostscript' : 'Postscript 文档', 'kindMsOffice' : 'Microsoft Office 文档', 'kindMsWord' : 'Microsoft Word 文档', 'kindMsExcel' : 'Microsoft Excel 文档', 'kindMsPP' : 'Microsoft Powerpoint 演示', 'kindOO' : 'Open Office 文档', 'kindAppFlash' : 'Flash 程序', 'kindPDF' : 'PDF 文档', 'kindTorrent' : 'Bittorrent 文件', 'kind7z' : '7z 压缩包', 'kindTAR' : 'TAR 压缩包', 'kindGZIP' : 'GZIP 压缩包', 'kindBZIP' : 'BZIP 压缩包', 'kindXZ' : 'XZ 压缩包', 'kindZIP' : 'ZIP 压缩包', 'kindRAR' : 'RAR 压缩包', 'kindJAR' : 'Java JAR 文件', 'kindTTF' : 'True Type 字体', 'kindOTF' : 'Open Type 字体', 'kindRPM' : 'RPM 包', // texts 'kindText' : '文本文件', 'kindTextPlain' : '纯文本', 'kindPHP' : 'PHP 源代码', 'kindCSS' : '层叠样式表(CSS)', 'kindHTML' : 'HTML 文档', 'kindJS' : 'Javascript 源代码', 'kindRTF' : '富文本格式(RTF)', 'kindC' : 'C 源代码', 'kindCHeader' : 'C 头文件', 'kindCPP' : 'C++ 源代码', 'kindCPPHeader' : 'C++ 头文件', 'kindShell' : 'Unix 外壳脚本', 'kindPython' : 'Python 源代码', 'kindJava' : 'Java 源代码', 'kindRuby' : 'Ruby 源代码', 'kindPerl' : 'Perl 源代码', 'kindSQL' : 'SQL 脚本', 'kindXML' : 'XML 文档', 'kindAWK' : 'AWK 源代码', 'kindCSV' : '逗号分隔值文件(CSV)', 'kindDOCBOOK' : 'Docbook XML 文档', 'kindMarkdown' : 'Markdown 文本', // added 20.7.2015 // images 'kindImage' : '图片', 'kindBMP' : 'BMP 图片', 'kindJPEG' : 'JPEG 图片', 'kindGIF' : 'GIF 图片', 'kindPNG' : 'PNG 图片', 'kindTIFF' : 'TIFF 图片', 'kindTGA' : 'TGA 图片', 'kindPSD' : 'Adobe Photoshop 图片', 'kindXBITMAP' : 'X bitmap 图片', 'kindPXM' : 'Pixelmator 图片', // media 'kindAudio' : '音频', 'kindAudioMPEG' : 'MPEG 音频', 'kindAudioMPEG4' : 'MPEG-4 音频', 'kindAudioMIDI' : 'MIDI 音频', 'kindAudioOGG' : 'Ogg Vorbis 音频', 'kindAudioWAV' : 'WAV 音频', 'AudioPlaylist' : 'MP3 播放列表', 'kindVideo' : '视频', 'kindVideoDV' : 'DV 视频', 'kindVideoMPEG' : 'MPEG 视频', 'kindVideoMPEG4' : 'MPEG-4 视频', 'kindVideoAVI' : 'AVI 视频', 'kindVideoMOV' : 'Quick Time 视频', 'kindVideoWM' : 'Windows Media 视频', 'kindVideoFlash' : 'Flash 视频', 'kindVideoMKV' : 'Matroska 视频', 'kindVideoOGG' : 'Ogg 视频' } }; })); plugins/file-manager-advanced/application/library/js/i18n/elfinder.zh_TW.js000064400000077337147176754550022707 0ustar00/** * 正體中文 translation * @author Yuwei Chuang * @author Danny Lin * @author TCC * @author Rick Jiang * @version 2023-06-02 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.zh_TW = { translator : 'Yuwei Chuang <ywchuang.tw@gmail.com>, Danny Lin <danny0838@gmail.com>, TCC <john987john987@gmail.com>, Rick Jiang <rick.jiang@aol.com>, Banny Tai <cssf998811@gmail.com>', language : '正體中文', direction : 'ltr', dateFormat : 'Y/m/d H:i', // will show like: 2023/06/02 09:48 fancyDateFormat : '$1 H:i', // will show like: 今天 09:48 nonameDateFormat : 'ymd-His', // noname upload will show like: 230602-094822 messages : { /********************************** errors **********************************/ 'error' : '錯誤', 'errUnknown' : '未知的錯誤.', 'errUnknownCmd' : '未知的指令.', 'errJqui' : '無效的 jQuery UI 設定. 必須包含 Selectable, draggable 以及 droppable 元件.', 'errNode' : 'elFinder 需要能建立 DOM 元素.', 'errURL' : '無效的 elFinder 設定! 尚未設定 URL 選項.', 'errAccess' : '拒絕存取.', 'errConnect' : '無法連線至後端.', 'errAbort' : '連線中斷.', 'errTimeout' : '連線逾時.', 'errNotFound' : '後端不存在.', 'errResponse' : '無效的後端回復.', 'errConf' : '無效的後端設定.', 'errJSON' : '未安裝 PHP JSON 模組.', 'errNoVolumes' : '無可讀取的 volumes.', 'errCmdParams' : '無效的參數, 指令: "$1".', 'errDataNotJSON' : '資料不是 JSON 格式.', 'errDataEmpty' : '沒有資料.', 'errCmdReq' : '後端請求需要命令名稱.', 'errOpen' : '無法開啟 "$1".', 'errNotFolder' : '非資料夾.', 'errNotFile' : '非檔案.', 'errRead' : '無法讀取 "$1".', 'errWrite' : '無法寫入 "$1".', 'errPerm' : '無權限.', 'errLocked' : '"$1" 被鎖定,不能重新命名, 移動或删除.', 'errExists' : '檔案 "$1" 已經存在了.', 'errInvName' : '無效的檔案名稱.', 'errInvDirname' : '無效的資料夾名稱', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : '未找到資料夾.', 'errFileNotFound' : '未找到檔案.', 'errTrgFolderNotFound' : '未找到目標資料夾 "$1".', 'errPopup' : '連覽器攔截了彈跳視窗. 請在瀏覽器選項允許彈跳視窗.', 'errMkdir' : '不能建立資料夾 "$1".', 'errMkfile' : '不能建立檔案 "$1".', 'errRename' : '不能重新命名 "$1".', 'errCopyFrom' : '不允許從磁碟 "$1" 複製.', 'errCopyTo' : '不允複製到磁碟 "$1".', 'errMkOutLink' : '無法建立連結到磁碟根目錄外面.', // from v2.1 added 03.10.2015 'errUpload' : '上傳錯誤.', // old name - errUploadCommon 'errUploadFile' : '無法上傳 "$1".', // old name - errUpload 'errUploadNoFiles' : '未找到要上傳的檔案.', 'errUploadTotalSize' : '資料超過了最大允許大小.', // old name - errMaxSize 'errUploadFileSize' : '檔案超過了最大允許大小.', // old name - errFileMaxSize 'errUploadMime' : '不允許的檔案類型.', 'errUploadTransfer' : '"$1" 傳輸錯誤.', 'errUploadTemp' : '無法建立暫存檔以供上傳.', // from v2.1 added 26.09.2015 'errNotReplace' : '"$1" 已經存在此位置, 不能被其他的替换.', // new 'errReplace' : '無法替换 "$1".', 'errSave' : '無法保存 "$1".', 'errCopy' : '無法複製 "$1".', 'errMove' : '無法移動 "$1".', 'errCopyInItself' : '無法移動 "$1" 到原有位置.', 'errRm' : '無法删除 "$1".', 'errTrash' : '無法丟入垃圾桶', // from v2.1.24 added 30.4.2017 'errRmSrc' : '無法删除來源檔案.', 'errExtract' : '無法從 "$1" 解壓縮檔案.', 'errArchive' : '無法建立壓縮膽.', 'errArcType' : '不支援的壓縮格式.', 'errNoArchive' : '檔案不是壓縮檔, 或者不支援該壓缩格式.', 'errCmdNoSupport' : '後端不支援該指令.', 'errReplByChild' : '資料夾 “$1” 不能被它所包含的檔案(資料夾)替换.', 'errArcSymlinks' : '由於安全考量,拒絕解壓縮符號連結或含有不允許檔名的檔案.', // edited 24.06.2012 'errArcMaxSize' : '待壓縮檔案的大小超出上限.', 'errResize' : '無法重新調整大小 "$1".', 'errResizeDegree' : '無效的旋轉角度.', // added 7.3.2013 'errResizeRotate' : '無法旋轉圖片.', // added 7.3.2013 'errResizeSize' : '無效的圖片大小.', // added 7.3.2013 'errResizeNoChange' : '圖片大小未更改.', // added 7.3.2013 'errUsupportType' : '不支援的檔案格式.', 'errNotUTF8Content' : '檔案 "$1" 不是 UTF-8 格式, 不能編輯.', // added 9.11.2011 'errNetMount' : '無法掛載 "$1".', // added 17.04.2012 'errNetMountNoDriver' : '不支援該通訊協議.', // added 17.04.2012 'errNetMountFailed' : '掛載失敗.', // added 17.04.2012 'errNetMountHostReq' : '需要指定主機位置.', // added 18.04.2012 'errSessionExpires' : '由於過久無活動, session 已過期.', 'errCreatingTempDir' : '無法建立暫時目錄: "$1"', 'errFtpDownloadFile' : '無法從 FTP 下載檔案: "$1"', 'errFtpUploadFile' : '無法上傳檔案到 FTP: "$1"', 'errFtpMkdir' : '無法在 FTP 建立遠端目錄: "$1"', 'errArchiveExec' : '壓縮檔案時發生錯誤: "$1"', 'errExtractExec' : '解壓縮檔案時發生錯誤: "$1"', 'errNetUnMount' : '無法卸載', // from v2.1 added 30.04.2012 'errConvUTF8' : '無法轉換為 UTF-8', // from v2.1 added 08.04.2014 'errFolderUpload' : '如要上傳這個資料夾, 請嘗試 Google Chrome.', // from v2.1 added 26.6.2015 'errSearchTimeout' : '搜尋 "$1" 逾時. 只列出部分搜尋結果.', // from v2.1 added 12.1.2016 'errReauthRequire' : '需要重新驗證權限.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : '最多可選擇 $1 個物件.', // from v2.1.17 added 17.10.2016 'errRestore' : '無法從垃圾桶恢復。 無法識別恢復目的地。', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : '編輯器找不到此文件類型。', // from v2.1.25 added 23.5.2017 'errServerError' : '服務器發生錯誤。', // from v2.1.25 added 16.6.2017 'errEmpty' : '無法清空"$1"文件夾', // from v2.1.25 added 22.6.2017 'moreErrors' : '發生 $1 個錯誤.', // from v2.1.44 added 9.12.2018 'errMaxMkdirs' : '一次最多可以創建 $1 個文件夾。', // from v2.1.58 added 20.6.2021 /******************************* commands names ********************************/ 'cmdarchive' : '建立壓縮檔', 'cmdback' : '後退', 'cmdcopy' : '複製', 'cmdcut' : '剪下', 'cmddownload' : '下載', 'cmdduplicate' : '建立副本', 'cmdedit' : '編輯檔案', 'cmdextract' : '從壓縮檔解壓縮', 'cmdforward' : '前進', 'cmdgetfile' : '選擇檔案', 'cmdhelp' : '關於本軟體', 'cmdhome' : '首頁', 'cmdinfo' : '查看關於', 'cmdmkdir' : '建立資料夾', 'cmdmkdirin' : '移入新資料夾', // from v2.1.7 added 19.2.2016 'cmdmkfile' : '建立文檔', 'cmdopen' : '開啟', 'cmdpaste' : '貼上', 'cmdquicklook' : '預覽', 'cmdreload' : '更新', 'cmdrename' : '重新命名', 'cmdrm' : '删除', 'cmdtrash' : '丟到垃圾桶', //from v2.1.24 added 29.4.2017 'cmdrestore' : '恢復', //from v2.1.24 added 3.5.2017 'cmdsearch' : '搜尋檔案', 'cmdup' : '移到上一層資料夾', 'cmdupload' : '上傳檔案', 'cmdview' : '檢視', 'cmdresize' : '調整大小及旋轉', 'cmdsort' : '排序', 'cmdnetmount' : '掛載網路磁碟', // added 18.04.2012 'cmdnetunmount': '卸載', // from v2.1 added 30.04.2012 'cmdplaces' : '加到"位置"', // added 28.12.2014 'cmdchmod' : '更改權限', // from v2.1 added 20.6.2015 'cmdopendir' : '開啟資料夾', // from v2.1 added 13.1.2016 'cmdcolwidth' : '重設欄寬', // from v2.1.13 added 12.06.2016 'cmdfullscreen': '全螢幕', // from v2.1.15 added 03.08.2016 'cmdmove' : '移動', // from v2.1.15 added 21.08.2016 'cmdempty' : '清空資料夾', // from v2.1.25 added 22.06.2017 'cmdundo' : '上一步', // from v2.1.27 added 31.07.2017 'cmdredo' : '下一步', // from v2.1.27 added 31.07.2017 'cmdpreference': '優先權', // from v2.1.27 added 03.08.2017 'cmdselectall' : '全選', // from v2.1.28 added 15.08.2017 'cmdselectnone': '取消選取', // from v2.1.28 added 15.08.2017 'cmdselectinvert': '反向選取', // from v2.1.28 added 15.08.2017 'cmdopennew' : '在新視窗開啟', // from v2.1.38 added 3.4.2018 'cmdhide' : '隱藏(偏好)', // from v2.1.41 added 24.7.2018 /*********************************** buttons ***********************************/ 'btnClose' : '關閉', 'btnSave' : '儲存', 'btnRm' : '删除', 'btnApply' : '使用', 'btnCancel' : '取消', 'btnNo' : '否', 'btnYes' : '是', 'btnMount' : '掛載', // added 18.04.2012 'btnApprove': '移到 $1 並批准', // from v2.1 added 26.04.2012 'btnUnmount': '卸載', // from v2.1 added 30.04.2012 'btnConv' : '轉換', // from v2.1 added 08.04.2014 'btnCwd' : '這裡', // from v2.1 added 22.5.2015 'btnVolume' : '磁碟', // from v2.1 added 22.5.2015 'btnAll' : '全部', // from v2.1 added 22.5.2015 'btnMime' : 'MIME 類型', // from v2.1 added 22.5.2015 'btnFileName':'檔名', // from v2.1 added 22.5.2015 'btnSaveClose': '儲存並關閉', // from v2.1 added 12.6.2015 'btnBackup' : '備份', // fromv2.1 added 28.11.2015 'btnRename' : '重新命名', // from v2.1.24 added 6.4.2017 'btnRenameAll' : '重新命名全部', // from v2.1.24 added 6.4.2017 'btnPrevious' : '上一頁 ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : '下一頁 ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : '另存新檔', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : '開啟資料夾', 'ntffile' : '開啟檔案', 'ntfreload' : '更新資料夾内容', 'ntfmkdir' : '建立資料夾', 'ntfmkfile' : '建立檔案', 'ntfrm' : '删除檔案', 'ntfcopy' : '複製檔案', 'ntfmove' : '移動檔案', 'ntfprepare' : '準備複製檔案', 'ntfrename' : '重新命名檔案', 'ntfupload' : '上傳檔案', 'ntfdownload' : '下載檔案', 'ntfsave' : '儲存檔案', 'ntfarchive' : '建立壓縮檔', 'ntfextract' : '從壓縮檔解壓縮', 'ntfsearch' : '搜尋檔案', 'ntfresize' : '正在更改圖片大小', 'ntfsmth' : '正在忙 >_<', 'ntfloadimg' : '正在讀取圖片', 'ntfnetmount' : '正在掛載網路磁碟', // added 18.04.2012 'ntfnetunmount': '正在卸載網路磁碟', // from v2.1 added 30.04.2012 'ntfdim' : '取得圖片大小', // added 20.05.2013 'ntfreaddir' : '正在讀取資料夾資訊', // from v2.1 added 01.07.2013 'ntfurl' : '正在取得連結 URL', // from v2.1 added 11.03.2014 'ntfchmod' : '更改檔案模式', // from v2.1 added 20.6.2015 'ntfpreupload': '正在驗證上傳檔案名稱', // from v2.1 added 31.11.2015 'ntfzipdl' : '正在建立縮檔以供下載', // from v2.1.7 added 23.1.2016 'ntfparents' : '正在取得路徑資訊', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': '正在處理上傳的檔案', // from v2.1.17 added 2.11.2016 'ntftrash' : '正在丟到垃圾桶', // from v2.1.24 added 2.5.2017 'ntfrestore' : '正從垃圾桶恢復', // from v2.1.24 added 3.5.2017 'ntfchkdir' : '正在檢查目標資料夾', // from v2.1.24 added 3.5.2017 'ntfundo' : '正在撤銷上一步動作', // from v2.1.27 added 31.07.2017 'ntfredo' : '正在重做上一步動作', // from v2.1.27 added 31.07.2017 'ntfchkcontent' : '正在確認內容', // from v2.1.41 added 3.8.2018 /*********************************** volumes *********************************/ 'volume_Trash' : '垃圾桶', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : '未知', 'Today' : '今天', 'Yesterday' : '昨天', 'msJan' : '一月', 'msFeb' : '二月', 'msMar' : '三月', 'msApr' : '四月', 'msMay' : '五月', 'msJun' : '六月', 'msJul' : '七月', 'msAug' : '八月', 'msSep' : '九月', 'msOct' : '十月', 'msNov' : '十一月', 'msDec' : '十二月', 'January' : '一月', 'February' : '二月', 'March' : '三月', 'April' : '四月', 'May' : '五月', 'June' : '六月', 'July' : '七月', 'August' : '八月', 'September' : '九月', 'October' : '十月', 'November' : '十一月', 'December' : '十二月', 'Sunday' : '星期日', 'Monday' : '星期一', 'Tuesday' : '星期二', 'Wednesday' : '星期三', 'Thursday' : '星期四', 'Friday' : '星期五', 'Saturday' : '星期六', 'Sun' : '周日', 'Mon' : '周一', 'Tue' : '周二', 'Wed' : '周三', 'Thu' : '周四', 'Fri' : '周五', 'Sat' : '周六', /******************************** sort variants ********************************/ 'sortname' : '按名稱', 'sortkind' : '按類型', 'sortsize' : '按大小', 'sortdate' : '按日期', 'sortFoldersFirst' : '資料夾置前', 'sortperm' : '按權限', // from v2.1.13 added 13.06.2016 'sortmode' : '按模式', // from v2.1.13 added 13.06.2016 'sortowner' : '按擁有者', // from v2.1.13 added 13.06.2016 'sortgroup' : '按群組', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : '也套用於樹狀圖', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : '新檔案.txt', // added 10.11.2015 'untitled folder' : '新資料夾', // added 10.11.2015 'Archive' : '新壓縮檔', // from v2.1 added 10.11.2015 'untitled file' : '新檔案.$1', // from v2.1.41 added 6.8.2018 'extentionfile' : '$1: 檔案', // from v2.1.41 added 6.8.2018 'extentiontype' : '$1: $2', // from v2.1.43 added 17.10.2018 /********************************** messages **********************************/ 'confirmReq' : '請確認', 'confirmRm' : '確定要删除檔案嗎?
                此操作無法回復!', 'confirmRepl' : '用新檔案取代原檔案?', 'confirmRest' : '用垃圾桶中的項目替換現有項目?', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : '不是 UTF-8 檔案
                轉換為 UTF-8 嗎?
                轉換後儲存會把內容變成 UTF-8.', // from v2.1 added 08.04.2014 'confirmNonUTF8' : '無法偵測此檔案的字元編碼, 須暫時轉換為 UTF-8 以供編輯.
                請選擇此檔案的字元編碼.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : '此檔案已修改.
                若未儲存將遺失目前的工作.', // from v2.1 added 15.7.2015 'confirmTrash' : '確定要將項目丟到垃圾桶嗎?', //from v2.1.24 added 29.4.2017 'confirmMove' : '確定要將項目移至“$1”嗎?', //from v2.1.50 added 27.7.2019 'apllyAll' : '全部套用', 'name' : '名稱', 'size' : '大小', 'perms' : '權限', 'modify' : '修改於', 'kind' : '類別', 'read' : '讀取', 'write' : '寫入', 'noaccess' : '無權限', 'and' : '和', 'unknown' : '未知', 'selectall' : '選擇所有檔案', 'selectfiles' : '選擇檔案', 'selectffile' : '選擇第一個檔案', 'selectlfile' : '選擇最後一個檔案', 'viewlist' : '列表檢視', 'viewicons' : '圖示檢視', 'viewSmall' : '小圖示', // from v2.1.39 added 22.5.2018 'viewMedium' : '中圖示', // from v2.1.39 added 22.5.2018 'viewLarge' : '大圖示', // from v2.1.39 added 22.5.2018 'viewExtraLarge' : '超大圖示', // from v2.1.39 added 22.5.2018 'places' : '位置', 'calc' : '計算', 'path' : '路徑', 'aliasfor' : '别名', 'locked' : '鎖定', 'dim' : '圖片大小', 'files' : '檔案', 'folders' : '資料夾', 'items' : '項目', 'yes' : '是', 'no' : '否', 'link' : '連結', 'searcresult' : '搜尋结果', 'selected' : '選取的項目', 'about' : '關於', 'shortcuts' : '快捷鍵', 'help' : '協助', 'webfm' : '網路檔案總管', 'ver' : '版本', 'protocolver' : '協定版本', 'homepage' : '首頁', 'docs' : '文件', 'github' : '在 Github 建立我們的分支', 'twitter' : '在 Twitter 追蹤我們', 'facebook' : '在 Facebook 加入我們', 'team' : '團隊', 'chiefdev' : '主要開發者', 'developer' : '開發者', 'contributor' : '貢獻者', 'maintainer' : '維護者', 'translator' : '翻譯者', 'icons' : '圖示', 'dontforget' : '别忘了帶上你擦汗的毛巾', 'shortcutsof' : '快捷鍵已停用', 'dropFiles' : '把檔案拖到此處', 'or' : '或', 'selectForUpload' : '選擇要上傳的檔案', 'moveFiles' : '移動檔案', 'copyFiles' : '複製檔案', 'restoreFiles' : '恢復項目', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : '從"位置"中删除', 'aspectRatio' : '保持比例', 'scale' : '寬高比', 'width' : '寬', 'height' : '高', 'resize' : '重新調整大小', 'crop' : '裁切', 'rotate' : '旋轉', 'rotate-cw' : '順時針旋轉90度', 'rotate-ccw' : '逆時針旋轉90度', 'degree' : '度', 'netMountDialogTitle' : '掛載網路磁碟', // added 18.04.2012 'protocol' : '通訊協定', // added 18.04.2012 'host' : '主機', // added 18.04.2012 'port' : '連接埠', // added 18.04.2012 'user' : '使用者', // added 18.04.2012 'pass' : '密碼', // added 18.04.2012 'confirmUnmount' : '確定要卸載 $1?', // from v2.1 added 30.04.2012 'dropFilesBrowser': '從瀏覽器拖放或貼上檔案', // from v2.1 added 30.05.2012 'dropPasteFiles' : '拖放檔案或從剪貼簿貼上 URL 或圖片至此', // from v2.1 added 07.04.2014 'encoding' : '編碼', // from v2.1 added 19.12.2014 'locale' : '語系', // from v2.1 added 19.12.2014 'searchTarget' : '目標: $1', // from v2.1 added 22.5.2015 'searchMime' : '根據輸入的 MIME 類型搜尋', // from v2.1 added 22.5.2015 'owner' : '擁有者', // from v2.1 added 20.6.2015 'group' : '群組', // from v2.1 added 20.6.2015 'other' : '其他', // from v2.1 added 20.6.2015 'execute' : '執行', // from v2.1 added 20.6.2015 'perm' : '權限', // from v2.1 added 20.6.2015 'mode' : '模式', // from v2.1 added 20.6.2015 'emptyFolder' : '資料夾是空的', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : '資料夾是空的\\A 拖曳以增加項目', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : '資料夾是空的\\A 長按以增加項目', // from v2.1.6 added 30.12.2015 'quality' : '品質', // from v2.1.6 added 5.1.2016 'autoSync' : '自動同步', // from v2.1.6 added 10.1.2016 'moveUp' : '上移', // from v2.1.6 added 18.1.2016 'getLink' : '取得 URL 連結', // from v2.1.7 added 9.2.2016 'selectedItems' : '選取的項目 ($1)', // from v2.1.7 added 2.19.2016 'folderId' : '資料夾 ID', // from v2.1.10 added 3.25.2016 'offlineAccess' : '允許離線存取', // from v2.1.10 added 3.25.2016 'reAuth' : '重新驗證權限', // from v2.1.10 added 3.25.2016 'nowLoading' : '正在載入...', // from v2.1.12 added 4.26.2016 'openMulti' : '開啟多個檔案', // from v2.1.12 added 5.14.2016 'openMultiConfirm': '確定要在瀏覽器開啟 $1 個檔案嗎?', // from v2.1.12 added 5.14.2016 'emptySearch' : '在搜尋目標中的搜尋結果是空的.', // from v2.1.12 added 5.16.2016 'editingFile' : '正在編輯檔案.', // from v2.1.13 added 6.3.2016 'hasSelected' : '己選取 $1 個項目.', // from v2.1.13 added 6.3.2016 'hasClipboard' : '剪貼簿裡有 $1 個項目.', // from v2.1.13 added 6.3.2016 'incSearchOnly' : '增量搜尋只來自目前視圖.', // from v2.1.13 added 6.30.2016 'reinstate' : '恢復原狀', // from v2.1.15 added 3.8.2016 'complete' : '$1完成', // from v2.1.15 added 21.8.2016 'contextmenu' : '情境選單', // from v2.1.15 added 9.9.2016 'pageTurning' : '正在換頁', // from v2.1.15 added 10.9.2016 'volumeRoots' : '磁碟根目錄', // from v2.1.16 added 16.9.2016 'reset' : '重設', // from v2.1.16 added 1.10.2016 'bgcolor' : '背景頻色', // from v2.1.16 added 1.10.2016 'colorPicker' : '顏色選擇器', // from v2.1.16 added 1.10.2016 '8pxgrid' : '8px 網格', // from v2.1.16 added 4.10.2016 'enabled' : '啟用', // from v2.1.16 added 4.10.2016 'disabled' : '停用', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : '目前視圖的搜尋結果是空的.\\A按 [Enter] 擴大搜尋目標.', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : '目前視圖中的第一個字母的搜索結果是空的。', // from v2.1.23 added 24.3.2017 'textLabel' : '文字標示', // from v2.1.17 added 13.10.2016 'minsLeft' : '剩下 $1 分鐘', // from v2.1.17 added 13.11.2016 'openAsEncoding' : '以選擇的編碼重新開啟', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : '以選擇的編碼儲存', // from v2.1.19 added 2.12.2016 'selectFolder' : '選擇資料夾', // from v2.1.20 added 13.12.2016 'firstLetterSearch': '首字母搜索', // from v2.1.23 added 24.3.2017 'presets' : '預置', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : '有太多項目,所以不能丟入垃圾桶。', // from v2.1.25 added 9.6.2017 'TextArea' : '文字區域', // from v2.1.25 added 14.6.2017 'folderToEmpty' : '$1" 資料夾是空的', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : '"$1" 資料夾中沒有任何項目', // from v2.1.25 added 22.6.2017 'preference' : '偏好', // from v2.1.26 added 28.6.2017 'language' : '語言設置', // from v2.1.26 added 28.6.2017 'clearBrowserData': '初始化保存在此瀏覽器中的設置', // from v2.1.26 added 28.6.2017 'toolbarPref' : '工具欄設置', // from v2.1.27 added 2.8.2017 'charsLeft' : '... 剩下 $1 個字元', // from v2.1.29 added 30.8.2017 'linesLeft' : '... 剩下 $1 行', // from v2.1.52 added 16.1.2020 'sum' : '總計', // from v2.1.29 added 28.9.2017 'roughFileSize' : '粗略的檔案大小', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : '滑鼠懸停在對話框內', // from v2.1.30 added 2.11.2017 'select' : '選擇', // from v2.1.30 added 23.11.2017 'selectAction' : '選擇檔案時的動作', // from v2.1.30 added 23.11.2017 'useStoredEditor' : '使用上次的編輯器開啟', // from v2.1.30 added 23.11.2017 'selectinvert' : '反向選擇', // from v2.1.30 added 25.11.2017 'renameMultiple' : '確定要重新命名 $1 為 $2 嗎?
                此動作無法恢復!', // from v2.1.31 added 4.12.2017 'batchRename' : '批次重新命名', // from v2.1.31 added 8.12.2017 'plusNumber' : '增加數量', // from v2.1.31 added 8.12.2017 'asPrefix' : '新增前輟', // from v2.1.31 added 8.12.2017 'asSuffix' : '新增後輟', // from v2.1.31 added 8.12.2017 'changeExtention' : '變更範圍', // from v2.1.31 added 8.12.2017 'columnPref' : ' 列設置(列表檢視)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : '所有修改將立即套用到檔案.', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : '所有修改在卸載之前不會有變化.', // from v2.1.33 added 2.3.2018 'unmountChildren' : '安裝在該磁碟以下的磁碟也會卸載,你確定要卸載嗎?', // from v2.1.33 added 5.3.2018 'selectionInfo' : '選擇資訊', // from v2.1.33 added 7.3.2018 'hashChecker' : '顯示檔案雜湊算法', // from v2.1.33 added 10.3.2018 'infoItems' : '檔案資訊(選擇資訊面板)', // from v2.1.38 added 28.3.2018 'pressAgainToExit': '再次點擊後退出', // from v2.1.38 added 1.4.2018 'toolbar' : '工具列', // from v2.1.38 added 4.4.2018 'workspace' : '工作區', // from v2.1.38 added 4.4.2018 'dialog' : '對話框', // from v2.1.38 added 4.4.2018 'all' : '全部', // from v2.1.38 added 4.4.2018 'iconSize' : '圖示尺寸 (圖示顯示)', // from v2.1.39 added 7.5.2018 'editorMaximized' : '開啟最大化編輯視窗', // from v2.1.40 added 30.6.2018 'editorConvNoApi' : '由於使用 API 轉換功能目前無法使用,請到網站上轉換.', //from v2.1.40 added 8.7.2018 'editorConvNeedUpload' : '轉換後,必須上傳檔案網址或一個下載的檔案,以保存轉換後的檔案.', //from v2.1.40 added 8.7.2018 'convertOn' : '在 $1 網站上轉換', // from v2.1.40 added 10.7.2018 'integrations' : '整合', // from v2.1.40 added 11.7.2018 'integrationWith' : 'elFinder 整合以下外部服務,使用前請先檢查使用條款、隱私權政策等.', // from v2.1.40 added 11.7.2018 'showHidden' : '顯示已隱藏的項目', // from v2.1.41 added 24.7.2018 'hideHidden' : '隱藏已隱藏的項目', // from v2.1.41 added 24.7.2018 'toggleHidden' : '顯示/隱藏已隱藏的項目', // from v2.1.41 added 24.7.2018 'makefileTypes' : '允許"新檔案"使用的檔案類型', // from v2.1.41 added 7.8.2018 'typeOfTextfile' : '文字檔案類型', // from v2.1.41 added 7.8.2018 'add' : '新增', // from v2.1.41 added 7.8.2018 'theme' : '主題', // from v2.1.43 added 19.10.2018 'default' : '預設', // from v2.1.43 added 19.10.2018 'description' : '描述', // from v2.1.43 added 19.10.2018 'website' : '網站', // from v2.1.43 added 19.10.2018 'author' : '作者', // from v2.1.43 added 19.10.2018 'email' : '信箱', // from v2.1.43 added 19.10.2018 'license' : '許可證', // from v2.1.43 added 19.10.2018 'exportToSave' : '檔案無法存檔,為避免遺失編輯資料,需要導出到你的電腦.', // from v2.1.44 added 1.12.2018 'dblclickToSelect': '連續點擊以選擇', // from v2.1.47 added 22.1.2019 'useFullscreen' : '使用全螢幕模式', // from v2.1.47 added 19.2.2019 /********************************** mimetypes **********************************/ 'kindUnknown' : '未知', 'kindRoot' : '磁碟根目錄', // from v2.1.16 added 16.10.2016 'kindFolder' : '資料夾', 'kindSelects' : '選擇', // from v2.1.29 added 29.8.2017 'kindAlias' : '别名', 'kindAliasBroken' : '毀損的别名', // applications 'kindApp' : '應用程式', 'kindPostscript' : 'Postscript 文件', 'kindMsOffice' : 'Microsoft Office 文件', 'kindMsWord' : 'Microsoft Word 文件', 'kindMsExcel' : 'Microsoft Excel 文件', 'kindMsPP' : 'Microsoft Powerpoint 簡報', 'kindOO' : 'Open Office 文件', 'kindAppFlash' : 'Flash 應用程式', 'kindPDF' : '可攜式文件格式(PDF)', 'kindTorrent' : 'Bittorrent 檔案', 'kind7z' : '7z 壓縮檔', 'kindTAR' : 'TAR 壓縮檔', 'kindGZIP' : 'GZIP 壓縮檔', 'kindBZIP' : 'BZIP 壓縮檔', 'kindXZ' : 'XZ 壓縮檔', 'kindZIP' : 'ZIP 壓縮檔', 'kindRAR' : 'RAR 壓縮檔', 'kindJAR' : 'Java JAR 檔案', 'kindTTF' : 'True Type 字體', 'kindOTF' : 'Open Type 字體', 'kindRPM' : 'RPM 封裝檔', // texts 'kindText' : '文字檔案', 'kindTextPlain' : '純文字', 'kindPHP' : 'PHP 原始碼', 'kindCSS' : '階層樣式表(CSS)', 'kindHTML' : 'HTML 文件', 'kindJS' : 'Javascript 原始碼', 'kindRTF' : '富文本(RTF)', 'kindC' : 'C 原始碼', 'kindCHeader' : 'C 標頭原始碼', 'kindCPP' : 'C++ 原始碼', 'kindCPPHeader' : 'C++ 標頭原始碼', 'kindShell' : 'Unix Shell 脚本', 'kindPython' : 'Python 原始碼', 'kindJava' : 'Java 原始碼', 'kindRuby' : 'Ruby 原始碼', 'kindPerl' : 'Perl 原始碼', 'kindSQL' : 'SQL 原始碼', 'kindXML' : 'XML 文件', 'kindAWK' : 'AWK 原始碼', 'kindCSV' : '逗號分隔值(CSV)', 'kindDOCBOOK' : 'Docbook XML 文件', 'kindMarkdown' : 'Markdown 文本', // added 20.7.2015 // images 'kindImage' : '圖片', 'kindBMP' : 'BMP 圖片', 'kindJPEG' : 'JPEG 圖片', 'kindGIF' : 'GIF 圖片', 'kindPNG' : 'PNG 圖片', 'kindTIFF' : 'TIFF 圖片', 'kindTGA' : 'TGA 圖片', 'kindPSD' : 'Adobe Photoshop 圖片', 'kindXBITMAP' : 'X bitmap 圖片', 'kindPXM' : 'Pixelmator 圖片', // media 'kindAudio' : '音訊', 'kindAudioMPEG' : 'MPEG 音訊', 'kindAudioMPEG4' : 'MPEG-4 音訊', 'kindAudioMIDI' : 'MIDI 音訊', 'kindAudioOGG' : 'Ogg Vorbis 音訊', 'kindAudioWAV' : 'WAV 音訊', 'AudioPlaylist' : 'MP3 播放清單', 'kindVideo' : '影片', 'kindVideoDV' : 'DV 影片', 'kindVideoMPEG' : 'MPEG 影片', 'kindVideoMPEG4' : 'MPEG-4 影片', 'kindVideoAVI' : 'AVI 影片', 'kindVideoMOV' : 'Quick Time 影片', 'kindVideoWM' : 'Windows Media 影片', 'kindVideoFlash' : 'Flash 影片', 'kindVideoMKV' : 'Matroska 影片', 'kindVideoOGG' : 'Ogg 影片' } }; })); plugins/file-manager-advanced/application/library/js/proxy/elFinderSupportVer1.js000064400000023554147176754550024342 0ustar00/** * elFinder transport to support old protocol. * * @example * $('selector').elfinder({ * .... * transport : new elFinderSupportVer1() * }) * * @author Dmitry (dio) Levashov **/ window.elFinderSupportVer1 = function(upload) { "use strict"; var self = this, dateObj, today, yesterday, getDateString = function(date) { return date.replace('Today', today).replace('Yesterday', yesterday); }; dateObj = new Date(); today = dateObj.getFullYear() + '/' + (dateObj.getMonth() + 1) + '/' + dateObj.getDate(); dateObj = new Date(Date.now() - 86400000); yesterday = dateObj.getFullYear() + '/' + (dateObj.getMonth() + 1) + '/' + dateObj.getDate(); this.upload = upload || 'auto'; this.init = function(fm) { this.fm = fm; this.fm.parseUploadData = function(text) { var data; if (!$.trim(text)) { return {error : ['errResponse', 'errDataEmpty']}; } try { data = JSON.parse(text); } catch (e) { return {error : ['errResponse', 'errDataNotJSON']}; } return self.normalize('upload', data); }; }; this.send = function(opts) { var self = this, fm = this.fm, dfrd = $.Deferred(), cmd = opts.data.cmd, args = [], _opts = {}, data, xhr; dfrd.abort = function() { if (xhr.state() == 'pending') { xhr.quiet = true; xhr.abort(); } }; switch (cmd) { case 'open': opts.data.tree = 1; break; case 'parents': case 'tree': return dfrd.resolve({tree : []}); case 'get': opts.data.cmd = 'read'; opts.data.current = fm.file(opts.data.target).phash; break; case 'put': opts.data.cmd = 'edit'; opts.data.current = fm.file(opts.data.target).phash; break; case 'archive': case 'rm': opts.data.current = fm.file(opts.data.targets[0]).phash; break; case 'extract': case 'rename': case 'resize': opts.data.current = fm.file(opts.data.target).phash; break; case 'duplicate': _opts = $.extend(true, {}, opts); $.each(opts.data.targets, function(i, hash) { $.ajax(Object.assign(_opts, {data : {cmd : 'duplicate', target : hash, current : fm.file(hash).phash}})) .fail(function(error) { fm.error(fm.res('error', 'connect')); }) .done(function(data) { data = self.normalize('duplicate', data); if (data.error) { fm.error(data.error); } else if (data.added) { fm.trigger('add', {added : data.added}); } }); }); return dfrd.resolve({}); case 'mkdir': case 'mkfile': opts.data.current = opts.data.target; break; case 'paste': opts.data.current = opts.data.dst; if (! opts.data.tree) { $.each(opts.data.targets, function(i, h) { if (fm.file(h) && fm.file(h).mime === 'directory') { opts.data.tree = '1'; return false; } }); } break; case 'size': return dfrd.resolve({error : fm.res('error', 'cmdsupport')}); case 'search': return dfrd.resolve({error : fm.res('error', 'cmdsupport')}); case 'file': opts.data.cmd = 'open'; opts.data.current = fm.file(opts.data.target).phash; break; } // cmd = opts.data.cmd xhr = $.ajax(opts) .fail(function(error) { dfrd.reject(error); }) .done(function(raw) { data = self.normalize(cmd, raw); dfrd.resolve(data); }); return dfrd; }; // fix old connectors errors messages as possible // this.errors = { // 'Unknown command' : 'Unknown command.', // 'Invalid backend configuration' : 'Invalid backend configuration.', // 'Access denied' : 'Access denied.', // 'PHP JSON module not installed' : 'PHP JSON module not installed.', // 'File not found' : 'File not found.', // 'Invalid name' : 'Invalid file name.', // 'File or folder with the same name already exists' : 'File named "$1" already exists in this location.', // 'Not allowed file type' : 'Not allowed file type.', // 'File exceeds the maximum allowed filesize' : 'File exceeds maximum allowed size.', // 'Unable to copy into itself' : 'Unable to copy "$1" into itself.', // 'Unable to create archive' : 'Unable to create archive.', // 'Unable to extract files from archive' : 'Unable to extract files from "$1".' // } this.normalize = function(cmd, data) { var self = this, fm = this.fm, files = {}, filter = function(file) { return file && file.hash && file.name && file.mime ? file : null; }, getDirs = function(items) { return $.grep(items, function(i) { return i && i.mime && i.mime === 'directory'? true : false; }); }, getTreeDiff = function(files) { var dirs = getDirs(files); treeDiff = fm.diff(dirs, null, ['date', 'ts']); if (treeDiff.added.length) { treeDiff.added = getDirs(treeDiff.added); } if (treeDiff.changed.length) { treeDiff.changed = getDirs(treeDiff.changed); } if (treeDiff.removed.length) { var removed = []; $.each(treeDiff.removed, function(i, h) { var item; if ((item = fm.file(h)) && item.mime === 'directory') { removed.push(h); } }); treeDiff.removed = removed; } return treeDiff; }, phash, diff, isCwd, treeDiff; if ((cmd == 'tmb' || cmd == 'get')) { return data; } // if (data.error) { // $.each(data.error, function(i, msg) { // if (self.errors[msg]) { // data.error[i] = self.errors[msg]; // } // }); // } if (cmd == 'upload' && data.error && data.cwd) { data.warning = Object.assign({}, data.error); data.error = false; } if (data.error) { return data; } if (cmd == 'put') { phash = fm.file(data.target.hash).phash; return {changed : [this.normalizeFile(data.target, phash)]}; } phash = data.cwd.hash; isCwd = (phash == fm.cwd().hash); if (data.tree) { $.each(this.normalizeTree(data.tree), function(i, file) { files[file.hash] = file; }); } $.each(data.cdc||[], function(i, file) { var hash = file.hash, mcts; if (files[hash]) { if (file.date) { mcts = Date.parse(getDateString(file.date)); if (mcts && !isNaN(mcts)) { files[hash].ts = Math.floor(mcts / 1000); } else { files[hash].date = file.date || fm.formatDate(file); } } files[hash].locked = file.hash == phash ? true : file.rm === void(0) ? false : !file.rm; } else { files[hash] = self.normalizeFile(file, phash, data.tmb); } }); if (!data.tree) { $.each(fm.files(), function(hash, file) { if (!files[hash] && file.phash != phash && file.mime == 'directory') { files[hash] = file; } }); } if (cmd == 'open') { return { cwd : files[phash] || this.normalizeFile(data.cwd), files : $.map(files, function(f) { return f; }), options : self.normalizeOptions(data), init : !!data.params, debug : data.debug }; } if (isCwd) { diff = fm.diff($.map(files, filter)); } else { if (data.tree && cmd !== 'paste') { diff = getTreeDiff(files); } else { diff = { added : [], removed : [], changed : [] }; if (cmd === 'paste') { diff.sync = true; } } } return Object.assign({ current : data.cwd.hash, error : data.error, warning : data.warning, options : {tmb : !!data.tmb} }, diff); }; /** * Convert old api tree into plain array of dirs * * @param Object root dir * @return Array */ this.normalizeTree = function(root) { var self = this, result = [], traverse = function(dirs, phash) { var i, dir; for (i = 0; i < dirs.length; i++) { dir = dirs[i]; result.push(self.normalizeFile(dir, phash)); dir.dirs.length && traverse(dir.dirs, dir.hash); } }; traverse([root]); return result; }; /** * Convert file info from old api format into new one * * @param Object file * @param String parent dir hash * @return Object */ this.normalizeFile = function(file, phash, tmb) { var mime = file.mime || 'directory', size = mime == 'directory' && !file.linkTo ? 0 : file.size, mcts = file.date? Date.parse(getDateString(file.date)) : void 0, info = { url : file.url, hash : file.hash, phash : phash, name : file.name, mime : mime, ts : file.ts, size : size, read : file.read, write : file.write, locked : !phash ? true : file.rm === void(0) ? false : !file.rm }; if (! info.ts) { if (mcts && !isNaN(mcts)) { info.ts = Math.floor(mcts / 1000); } else { info.date = file.date || this.fm.formatDate(file); } } if (file.mime == 'application/x-empty' || file.mime == 'inode/x-empty') { info.mime = 'text/plain'; } if (file.linkTo) { info.alias = file.linkTo; } if (file.linkTo) { info.linkTo = file.linkTo; } if (file.tmb) { info.tmb = file.tmb; } else if (info.mime.indexOf('image/') === 0 && tmb) { info.tmb = 1; } if (file.dirs && file.dirs.length) { info.dirs = true; } if (file.dim) { info.dim = file.dim; } if (file.resize) { info.resize = file.resize; } return info; }; this.normalizeOptions = function(data) { var opts = { path : data.cwd.rel, disabled : $.merge((data.disabled || []), [ 'search', 'netmount', 'zipdl' ]), tmb : !!data.tmb, copyOverwrite : true }; if (data.params) { opts.api = 1; opts.url = data.params.url; opts.archivers = { create : data.params.archives || [], extract : data.params.extract || [] }; } if (opts.path.indexOf('/') !== -1) { opts.separator = '/'; } else if (opts.path.indexOf('\\') !== -1) { opts.separator = '\\'; } return opts; }; }; plugins/file-manager-advanced/application/library/js/ui/button.js000064400000010101147176754550021206 0ustar00/** * @class elFinder toolbar button widget. * If command has variants - create menu * * @author Dmitry (dio) Levashov **/ $.fn.elfinderbutton = function(cmd) { "use strict"; return this.each(function() { var c = 'class', fm = cmd.fm, disabled = fm.res(c, 'disabled'), active = fm.res(c, 'active'), hover = fm.res(c, 'hover'), item = 'elfinder-button-menu-item', selected = 'elfinder-button-menu-item-selected', menu, text = $(''+cmd.title+''), prvCname = cmd.className? cmd.className : cmd.name, button = $(this).addClass('ui-state-default elfinder-button') .attr('title', cmd.title) .append('', text) .on('mouseenter mouseleave', function(e) { !button.hasClass(disabled) && button[e.type == 'mouseleave' ? 'removeClass' : 'addClass'](hover);}) .on('click', function(e) { if (!button.hasClass(disabled)) { if (menu && cmd.variants.length >= 1) { // close other menus menu.is(':hidden') && fm.getUI().click(); e.stopPropagation(); menu.css(getMenuOffset()).slideToggle({ duration: 100, done: function(e) { fm[menu.is(':visible')? 'toFront' : 'toHide'](menu); } }); } else { fm.exec(cmd.name, getSelected(), {_userAction: true, _currentType: 'toolbar', _currentNode: button }); } } }), hideMenu = function() { fm.toHide(menu); }, getMenuOffset = function() { var fmNode = fm.getUI(), baseOffset = fmNode.offset(), buttonOffset = button.offset(); return { top : buttonOffset.top - baseOffset.top, left : buttonOffset.left - baseOffset.left, maxHeight : fmNode.height() - 40 }; }, getSelected = function() { var sel = fm.selected(), cwd; if (!sel.length) { if (cwd = fm.cwd()) { sel = [ fm.cwd().hash ]; } else { sel = void(0); } } return sel; }, tm; text.hide(); // set self button object to cmd object cmd.button = button; // if command has variants create menu if (Array.isArray(cmd.variants)) { button.addClass('elfinder-menubutton'); menu = $('
                ') .hide() .appendTo(fm.getUI()) .on('mouseenter mouseleave', '.'+item, function() { $(this).toggleClass(hover); }) .on('click', '.'+item, function(e) { var opts = $(this).data('value'); e.preventDefault(); e.stopPropagation(); button.removeClass(hover); fm.toHide(menu); if (typeof opts === 'undefined') { opts = {}; } if (typeof opts === 'object') { opts._userAction = true; } fm.exec(cmd.name, getSelected(), opts); }) .on('close', hideMenu); fm.bind('disable select', hideMenu).getUI().on('click', hideMenu); cmd.change(function() { menu.html(''); $.each(cmd.variants, function(i, variant) { menu.append($('
                '+variant[1]+'
                ').data('value', variant[0]).addClass(variant[0] == cmd.value ? selected : '')); }); }); } cmd.change(function() { var cName; tm && cancelAnimationFrame(tm); tm = requestAnimationFrame(function() { if (cmd.disabled()) { button.removeClass(active+' '+hover).addClass(disabled); } else { button.removeClass(disabled); button[cmd.active() ? 'addClass' : 'removeClass'](active); } if (cmd.syncTitleOnChange) { cName = cmd.className? cmd.className : cmd.name; if (prvCname !== cName) { button.children('.elfinder-button-icon').removeClass('elfinder-button-icon-' + prvCname).addClass('elfinder-button-icon-' + cName); if (menu) { menu.removeClass('elfinder-button-' + prvCname + '-menu').addClass('elfinder-button-' + cName + '-menu'); } prvCname = cName; } text.html(cmd.title); button.attr('title', cmd.title); } }); }) .change(); }); }; plugins/file-manager-advanced/application/library/js/ui/contextmenu.js000064400000052361147176754550022262 0ustar00/** * @class elFinder contextmenu * * @author Dmitry (dio) Levashov **/ $.fn.elfindercontextmenu = function(fm) { "use strict"; return this.each(function() { var self = $(this), cmItem = 'elfinder-contextmenu-item', smItem = 'elfinder-contextsubmenu-item', exIcon = 'elfinder-contextmenu-extra-icon', cHover = fm.res('class', 'hover'), dragOpt = { distance: 8, start: function() { menu.data('drag', true).data('touching') && menu.find('.'+cHover).removeClass(cHover); }, stop: function() { menu.data('draged', true).removeData('drag'); } }, menu = $(this).addClass('touch-punch ui-helper-reset ui-front ui-widget ui-state-default ui-corner-all elfinder-contextmenu elfinder-contextmenu-'+fm.direction) .hide() .on('touchstart', function(e) { menu.data('touching', true).children().removeClass(cHover); }) .on('touchend', function(e) { menu.removeData('touching'); }) .on('mouseenter mouseleave', '.'+cmItem, function(e) { $(this).toggleClass(cHover, (e.type === 'mouseenter' || (! menu.data('draged') && menu.data('submenuKeep'))? true : false)); if (menu.data('draged') && menu.data('submenuKeep')) { menu.find('.elfinder-contextmenu-sub:visible').parent().addClass(cHover); } }) .on('mouseenter mouseleave', '.'+exIcon, function(e) { $(this).parent().toggleClass(cHover, e.type === 'mouseleave'); }) .on('mouseenter mouseleave', '.'+cmItem+',.'+smItem, function(e) { var setIndex = function(target, sub) { $.each(sub? subnodes : nodes, function(i, n) { if (target[0] === n) { (sub? subnodes : nodes)._cur = i; if (sub) { subselected = target; } else { selected = target; } return false; } }); }; if (e.originalEvent) { var target = $(this), unHover = function() { if (selected && !selected.children('div.elfinder-contextmenu-sub:visible').length) { selected.removeClass(cHover); } }; if (e.type === 'mouseenter') { // mouseenter if (target.hasClass(smItem)) { // submenu if (subselected) { subselected.removeClass(cHover); } if (selected) { subnodes = selected.find('div.'+smItem); } setIndex(target, true); } else { // menu unHover(); setIndex(target); } } else { // mouseleave if (target.hasClass(smItem)) { //submenu subselected = null; subnodes = null; } else { // menu unHover(); (function(sel) { setTimeout(function() { if (sel === selected) { selected = null; } }, 250); })(selected); } } } }) .on('contextmenu', function(){return false;}) .on('mouseup', function() { setTimeout(function() { menu.removeData('draged'); }, 100); }) .draggable(dragOpt), ltr = fm.direction === 'ltr', subpos = ltr? 'left' : 'right', types = Object.assign({}, fm.options.contextmenu), tpl = '
                {label}
                ', item = function(label, icon, callback, opts) { var className = '', style = '', iconClass = '', v, pos; if (opts) { if (opts.className) { className = ' ' + opts.className; } if (opts.iconClass) { iconClass = opts.iconClass; icon = ''; } if (opts.iconImg) { v = opts.iconImg.split(/ +/); pos = v[1] && v[2]? fm.escape(v[1] + 'px ' + v[2] + 'px') : ''; style = ' style="background:url(\''+fm.escape(v[0])+'\') '+(pos? pos : '0 0')+' no-repeat;'+(pos? '' : 'posbackground-size:contain;')+'"'; } } return $(tpl.replace('{icon}', icon ? 'elfinder-button-icon-'+icon : (iconClass? iconClass : '')) .replace('{label}', label) .replace('{style}', style) .replace('{className}', className)) .on('click', function(e) { e.stopPropagation(); e.preventDefault(); callback(); }); }, urlIcon = function(iconUrl) { var v = iconUrl.split(/ +/), pos = v[1] && v[2]? (v[1] + 'px ' + v[2] + 'px') : ''; return { backgroundImage: 'url("'+v[0]+'")', backgroundRepeat: 'no-repeat', backgroundPosition: pos? pos : '', backgroundSize: pos? '' : 'contain' }; }, base, cwd, nodes, selected, subnodes, subselected, autoSyncStop, subHoverTm, autoToggle = function() { var evTouchStart = 'touchstart.contextmenuAutoToggle'; menu.data('hideTm') && clearTimeout(menu.data('hideTm')); if (menu.is(':visible')) { menu.on('touchstart', function(e) { if (e.originalEvent.touches.length > 1) { return; } menu.stop(); fm.toFront(menu); menu.data('hideTm') && clearTimeout(menu.data('hideTm')); }) .data('hideTm', setTimeout(function() { if (menu.is(':visible')) { cwd.find('.elfinder-cwd-file').off(evTouchStart); cwd.find('.elfinder-cwd-file.ui-selected') .one(evTouchStart, function(e) { if (e.originalEvent.touches.length > 1) { return; } var tgt = $(e.target); if (menu.first().length && !tgt.is('input:checkbox') && !tgt.hasClass('elfinder-cwd-select')) { e.stopPropagation(); //e.preventDefault(); open(e.originalEvent.touches[0].pageX, e.originalEvent.touches[0].pageY); cwd.data('longtap', true) tgt.one('touchend', function() { setTimeout(function() { cwd.removeData('longtap'); }, 80); }); return; } cwd.find('.elfinder-cwd-file').off(evTouchStart); }) .one('unselect.'+fm.namespace, function() { cwd.find('.elfinder-cwd-file').off(evTouchStart); }); menu.fadeOut({ duration: 300, fail: function() { menu.css('opacity', '1').show(); }, done: function() { fm.toHide(menu); } }); } }, 4500)); } }, keyEvts = function(e) { var code = e.keyCode, ESC = $.ui.keyCode.ESCAPE, ENT = $.ui.keyCode.ENTER, LEFT = $.ui.keyCode.LEFT, RIGHT = $.ui.keyCode.RIGHT, UP = $.ui.keyCode.UP, DOWN = $.ui.keyCode.DOWN, subent = fm.direction === 'ltr'? RIGHT : LEFT, sublev = subent === RIGHT? LEFT : RIGHT; if ($.inArray(code, [ESC, ENT, LEFT, RIGHT, UP, DOWN]) !== -1) { e.preventDefault(); e.stopPropagation(); e.stopImmediatePropagation(); if (code == ESC || code === sublev) { if (selected && subnodes && subselected) { subselected.trigger('mouseleave').trigger('submenuclose'); selected.addClass(cHover); subnodes = null; subselected = null; } else { code == ESC && close(); } } else if (code == UP || code == DOWN) { if (subnodes) { if (subselected) { subselected.trigger('mouseleave'); } if (code == DOWN && (! subselected || subnodes.length <= ++subnodes._cur)) { subnodes._cur = 0; } else if (code == UP && (! subselected || --subnodes._cur < 0)) { subnodes._cur = subnodes.length - 1; } subselected = subnodes.eq(subnodes._cur).trigger('mouseenter'); } else { subnodes = null; if (selected) { selected.trigger('mouseleave'); } if (code == DOWN && (! selected || nodes.length <= ++nodes._cur)) { nodes._cur = 0; } else if (code == UP && (! selected || --nodes._cur < 0)) { nodes._cur = nodes.length - 1; } selected = nodes.eq(nodes._cur).addClass(cHover); } } else if (selected && (code == ENT || code === subent)) { if (selected.hasClass('elfinder-contextmenu-group')) { if (subselected) { code == ENT && subselected.click(); } else { selected.trigger('mouseenter'); subnodes = selected.find('div.'+smItem); subnodes._cur = 0; subselected = subnodes.first().addClass(cHover); } } else { code == ENT && selected.click(); } } } }, open = function(x, y, css) { var width = menu.outerWidth(), height = menu.outerHeight(), bstyle = base.attr('style'), bpos = base.offset(), bwidth = base.width(), bheight = base.height(), mw = fm.UA.Mobile? 40 : 2, mh = fm.UA.Mobile? 20 : 2, x = x - (bpos? bpos.left : 0), y = y - (bpos? bpos.top : 0), css = Object.assign(css || {}, { top : Math.max(0, y + mh + height < bheight ? y + mh : y - (y + height - bheight)), left : Math.max(0, (x < width + mw || x + mw + width < bwidth)? x + mw : x - mw - width), opacity : '1' }), evts; autoSyncStop = true; fm.autoSync('stop'); base.width(bwidth); menu.stop().removeAttr('style').css(css); fm.toFront(menu); menu.show(); base.attr('style', bstyle); css[subpos] = parseInt(menu.width()); menu.find('.elfinder-contextmenu-sub').css(css); if (fm.UA.iOS) { $('div.elfinder div.overflow-scrolling-touch').css('-webkit-overflow-scrolling', 'auto'); } selected = null; subnodes = null; subselected = null; $(document).on('keydown.' + fm.namespace, keyEvts); evts = $._data(document).events; if (evts && evts.keydown) { evts.keydown.unshift(evts.keydown.pop()); } fm.UA.Mobile && autoToggle(); requestAnimationFrame(function() { fm.getUI().one('click.' + fm.namespace, close); }); }, close = function() { fm.getUI().off('click.' + fm.namespace, close); $(document).off('keydown.' + fm.namespace, keyEvts); currentType = currentTargets = null; if (menu.is(':visible') || menu.children().length) { fm.toHide(menu.removeAttr('style').empty().removeData('submenuKeep')); try { if (! menu.draggable('instance')) { menu.draggable(dragOpt); } } catch(e) { if (! menu.hasClass('ui-draggable')) { menu.draggable(dragOpt); } } if (menu.data('prevNode')) { menu.data('prevNode').after(menu); menu.removeData('prevNode'); } fm.trigger('closecontextmenu'); if (fm.UA.iOS) { $('div.elfinder div.overflow-scrolling-touch').css('-webkit-overflow-scrolling', 'touch'); } } autoSyncStop && fm.searchStatus.state < 1 && ! fm.searchStatus.ininc && fm.autoSync(); autoSyncStop = false; }, create = function(type, targets) { var sep = false, insSep = false, disabled = [], isCwd = type === 'cwd', selcnt = 0, cmdMap; currentType = type; currentTargets = targets; // get current uiCmdMap option if (!(cmdMap = fm.option('uiCmdMap', isCwd? void(0) : targets[0]))) { cmdMap = {}; } if (!isCwd) { disabled = fm.getDisabledCmds(targets); } selcnt = fm.selected().length; if (selcnt > 1) { menu.append('
                ' + fm.i18n('selectedItems', ''+selcnt) + '
                '); } nodes = $(); $.each(types[type]||[], function(i, name) { var cmd, cmdName, useMap, node, submenu, hover; if (name === '|') { if (sep) { insSep = true; } return; } if (cmdMap[name]) { cmdName = cmdMap[name]; useMap = true; } else { cmdName = name; } cmd = fm.getCommand(cmdName); if (cmd && !isCwd && (!fm.searchStatus.state || !cmd.disableOnSearch)) { cmd.__disabled = cmd._disabled; cmd._disabled = !(cmd.alwaysEnabled || (fm._commands[cmdName] ? $.inArray(name, disabled) === -1 && (!useMap || !disabled[cmdName]) : false)); $.each(cmd.linkedCmds, function(i, n) { var c; if (c = fm.getCommand(n)) { c.__disabled = c._disabled; c._disabled = !(c.alwaysEnabled || (fm._commands[n] ? !disabled[n] : false)); } }); } if (cmd && !cmd._disabled && cmd.getstate(targets) != -1) { if (cmd.variants) { if (!cmd.variants.length) { return; } node = item(cmd.title, cmd.className? cmd.className : cmd.name, function(){}, cmd.contextmenuOpts); submenu = $('
                ') .hide() .css('max-height', fm.getUI().height() - 30) .appendTo(node.append('')); hover = function(show){ if (! show) { submenu.hide(); } else { var bstyle = base.attr('style'); base.width(base.width()); // top: '-1000px' to prevent visible scrollbar of window with the elFinder option `height: '100%'` submenu.css({ top: '-1000px', left: 'auto', right: 'auto' }); var nodeOffset = node.offset(), nodeleft = nodeOffset.left, nodetop = nodeOffset.top, nodewidth = node.outerWidth(), width = submenu.outerWidth(true), height = submenu.outerHeight(true), baseOffset = base.offset(), wwidth = baseOffset.left + base.width(), wheight = baseOffset.top + base.height(), cltr = ltr, x = nodewidth, y, over; if (ltr) { over = (nodeleft + nodewidth + width) - wwidth; if (over > 10) { if (nodeleft > width - 5) { x = x - 5; cltr = false; } else { if (!fm.UA.Mobile) { x = nodewidth - over; } } } } else { over = width - nodeleft; if (over > 0) { if ((nodeleft + nodewidth + width - 15) < wwidth) { x = x - 5; cltr = true; } else { if (!fm.UA.Mobile) { x = nodewidth - over; } } } } over = (nodetop + 5 + height) - wheight; y = (over > 0 && nodetop < wheight)? 5 - over : (over > 0? 30 - height : 5); menu.find('.elfinder-contextmenu-sub:visible').hide(); submenu.css({ top : y, left : cltr? x : 'auto', right: cltr? 'auto' : x, overflowY: 'auto' }).show(); base.attr('style', bstyle); } }; node.addClass('elfinder-contextmenu-group') .on('mouseleave', '.elfinder-contextmenu-sub', function(e) { if (! menu.data('draged')) { menu.removeData('submenuKeep'); } }) .on('submenuclose', '.elfinder-contextmenu-sub', function(e) { hover(false); }) .on('click', '.'+smItem, function(e){ var opts, $this; e.stopPropagation(); if (! menu.data('draged')) { $this = $(this); if (!cmd.keepContextmenu) { menu.hide(); } else { $this.removeClass(cHover); node.addClass(cHover); } opts = $this.data('exec'); if (typeof opts === 'undefined') { opts = {}; } if (typeof opts === 'object') { opts._userAction = true; opts._currentType = type; opts._currentNode = $this; } !cmd.keepContextmenu && close(); fm.exec(cmd.name, targets, opts); } }) .on('touchend', function(e) { if (! menu.data('drag')) { hover(true); menu.data('submenuKeep', true); } }) .on('mouseenter mouseleave', function(e){ if (! menu.data('touching')) { if (node.data('timer')) { clearTimeout(node.data('timer')); node.removeData('timer'); } if (!$(e.target).closest('.elfinder-contextmenu-sub', menu).length) { if (e.type === 'mouseleave') { if (! menu.data('submenuKeep')) { node.data('timer', setTimeout(function() { node.removeData('timer'); hover(false); }, 250)); } } else { node.data('timer', setTimeout(function() { node.removeData('timer'); hover(true); }, nodes.find('div.elfinder-contextmenu-sub:visible').length? 250 : 0)); } } } }); $.each(cmd.variants, function(i, variant) { var item = variant === '|' ? '
                ' : $('
                '+variant[1]+'
                ').data('exec', variant[0]), iconClass, icon; if (typeof variant[2] !== 'undefined') { icon = $('').addClass('elfinder-button-icon elfinder-contextmenu-icon'); if (! /\//.test(variant[2])) { icon.addClass('elfinder-button-icon-'+variant[2]); } else { icon.css(urlIcon(variant[2])); } item.prepend(icon).addClass(smItem+'-icon'); } submenu.append(item); }); } else { node = item(cmd.title, cmd.className? cmd.className : cmd.name, function() { if (! menu.data('draged')) { !cmd.keepContextmenu && close(); fm.exec(cmd.name, targets, {_userAction: true, _currentType: type, _currentNode: node}); } }, cmd.contextmenuOpts); if (cmd.extra && cmd.extra.node) { $('') .append(cmd.extra.node).appendTo(node); $(cmd.extra.node).trigger('ready', {targets: targets}); } else { node.remove('.'+exIcon); } } if (cmd.extendsCmd) { node.children('span.elfinder-button-icon').addClass('elfinder-button-icon-' + cmd.extendsCmd); } if (insSep) { menu.append('
                '); } menu.append(node); sep = true; insSep = false; } if (cmd && typeof cmd.__disabled !== 'undefined') { cmd._disabled = cmd.__disabled; delete cmd.__disabled; $.each(cmd.linkedCmds, function(i, n) { var c; if (c = fm.getCommand(n)) { c._disabled = c.__disabled; delete c.__disabled; } }); } }); nodes = menu.children('div.'+cmItem); }, createFromRaw = function(raw) { currentType = 'raw'; $.each(raw, function(i, data) { var node; if (data === '|') { menu.append('
                '); } else if (data.label && typeof data.callback == 'function') { node = item(data.label, data.icon, function() { if (! menu.data('draged')) { !data.remain && close(); data.callback(); } }, data.options || null); menu.append(node); } }); nodes = menu.children('div.'+cmItem); }, currentType = null, currentTargets = null; fm.one('load', function() { base = fm.getUI(); cwd = fm.getUI('cwd'); fm.bind('contextmenu', function(e) { var data = e.data, css = {}, prevNode; if (data.type && data.type !== 'files') { cwd.trigger('unselectall'); } close(); if (data.type && data.targets) { fm.trigger('contextmenucreate', data); create(data.type, data.targets); fm.trigger('contextmenucreatedone', data); } else if (data.raw) { createFromRaw(data.raw); } if (menu.children().length) { prevNode = data.prevNode || null; if (prevNode) { menu.data('prevNode', menu.prev()); prevNode.after(menu); } if (data.fitHeight) { css = {maxHeight: Math.min(fm.getUI().height(), $(window).height()), overflowY: 'auto'}; menu.draggable('destroy').removeClass('ui-draggable'); } open(data.x, data.y, css); // call opened callback function if (data.opened && typeof data.opened === 'function') { data.opened.call(menu); } } }) .one('destroy', function() { menu.remove(); }) .bind('disable', close) .bind('select', function(e){ (currentType === 'files' && (!e.data || e.data.selected.toString() !== currentTargets.toString())) && close(); }); }) .shortcut({ pattern : fm.OS === 'mac' ? 'ctrl+m' : 'contextmenu shift+f10', description : 'contextmenu', callback : function(e) { e.stopPropagation(); e.preventDefault(); $(document).one('contextmenu.' + fm.namespace, function(e) { e.preventDefault(); e.stopPropagation(); }); var sel = fm.selected(), type, targets, pos, elm; if (sel.length) { type = 'files'; targets = sel; elm = fm.cwdHash2Elm(sel[0]); } else { type = 'cwd'; targets = [ fm.cwd().hash ]; pos = fm.getUI('workzone').offset(); } if (! elm || ! elm.length) { elm = fm.getUI('workzone'); } pos = elm.offset(); pos.top += (elm.height() / 2); pos.left += (elm.width() / 2); fm.trigger('contextmenu', { 'type' : type, 'targets' : targets, 'x' : pos.left, 'y' : pos.top }); } }); }); }; plugins/file-manager-advanced/application/library/js/ui/cwd.js000064400000255673147176754550020501 0ustar00/** * elFinder current working directory ui. * * @author Dmitry (dio) Levashov **/ $.fn.elfindercwd = function(fm, options) { "use strict"; this.not('.elfinder-cwd').each(function() { // fm.time('cwdLoad'); var mobile = fm.UA.Mobile, list = fm.viewType == 'list', undef = 'undefined', /** * Select event full name * * @type String **/ evtSelect = 'select.'+fm.namespace, /** * Unselect event full name * * @type String **/ evtUnselect = 'unselect.'+fm.namespace, /** * Disable event full name * * @type String **/ evtDisable = 'disable.'+fm.namespace, /** * Disable event full name * * @type String **/ evtEnable = 'enable.'+fm.namespace, c = 'class', /** * File css class * * @type String **/ clFile = fm.res(c, 'cwdfile'), /** * Selected css class * * @type String **/ fileSelector = '.'+clFile, /** * Selected css class * * @type String **/ clSelected = 'ui-selected', /** * Disabled css class * * @type String **/ clDisabled = fm.res(c, 'disabled'), /** * Draggable css class * * @type String **/ clDraggable = fm.res(c, 'draggable'), /** * Droppable css class * * @type String **/ clDroppable = fm.res(c, 'droppable'), /** * Hover css class * * @type String **/ clHover = fm.res(c, 'hover'), /** * Active css class * * @type String **/ clActive = fm.res(c, 'active'), /** * Hover css class * * @type String **/ clDropActive = fm.res(c, 'adroppable'), /** * Css class for temporary nodes (for mkdir/mkfile) commands * * @type String **/ clTmp = clFile+'-tmp', /** * Select checkbox css class * * @type String */ clSelChk = 'elfinder-cwd-selectchk', /** * Number of thumbnails to load in one request (new api only) * * @type Number **/ tmbNum = fm.options.loadTmbs > 0 ? fm.options.loadTmbs : 5, /** * Current search query. * * @type String */ query = '', /** * Currect clipboard(cut) hashes as object key * * @type Object */ clipCuts = {}, /** * Parents hashes of cwd * * @type Array */ cwdParents = [], /** * cwd current hashes * * @type Array */ cwdHashes = [], /** * incsearch current hashes * * @type Array */ incHashes = void 0, /** * Custom columns name and order * * @type Array */ customCols = [], /** * Current clicked element id of first time for dblclick * * @type String */ curClickId = '', /** * Custom columns builder * * @type Function */ customColsBuild = function() { var cols = ''; for (var i = 0; i < customCols.length; i++) { cols += '{' + customCols[i] + '}'; } return cols; }, /** * Make template.row from customCols * * @type Function */ makeTemplateRow = function() { return '
                {marker}{name}
                '+selectCheckbox+''+customColsBuild()+''; }, selectCheckbox = ($.map(options.showSelectCheckboxUA, function(t) {return (fm.UA[t] || t.match(/^all$/i))? true : null;}).length)? '
                ' : '', colResizing = false, colWidth = null, /** * Table header height */ thHeight, /** * File templates * * @type Object **/ templates = { icon : '
                {marker}
                {name}
                '+selectCheckbox+'
                ', row : '' }, permsTpl = fm.res('tpl', 'perms'), lockTpl = fm.res('tpl', 'lock'), symlinkTpl = fm.res('tpl', 'symlink'), /** * Template placeholders replacement rules * * @type Object **/ replacement = { id : function(f) { return fm.cwdHash2Id(f.hash); }, name : function(f) { var name = fm.escape(f.i18 || f.name); !list && (name = name.replace(/([_.])/g, '​$1')); return name; }, nametitle : function(f) { return fm.escape(f.i18 || f.name); }, permsclass : function(f) { return fm.perms2class(f); }, perm : function(f) { return fm.formatPermissions(f); }, dirclass : function(f) { var cName = f.mime == 'directory' ? 'directory' : ''; f.isroot && (cName += ' isroot'); f.csscls && (cName += ' ' + fm.escape(f.csscls)); options.getClass && (cName += ' ' + options.getClass(f)); return cName; }, style : function(f) { return f.icon? fm.getIconStyle(f) : ''; }, mime : function(f) { var cName = fm.mime2class(f.mime); f.icon && (cName += ' elfinder-cwd-bgurl'); return cName; }, size : function(f) { return (f.mime === 'directory' && !f.size)? '-' : fm.formatSize(f.size); }, date : function(f) { return fm.formatDate(f); }, kind : function(f) { return fm.mime2kind(f); }, mode : function(f) { return f.perm? fm.formatFileMode(f.perm) : ''; }, modestr : function(f) { return f.perm? fm.formatFileMode(f.perm, 'string') : ''; }, modeoct : function(f) { return f.perm? fm.formatFileMode(f.perm, 'octal') : ''; }, modeboth : function(f) { return f.perm? fm.formatFileMode(f.perm, 'both') : ''; }, marker : function(f) { return (f.alias || f.mime == 'symlink-broken' ? symlinkTpl : '')+(!f.read || !f.write ? permsTpl : '')+(f.locked ? lockTpl : ''); }, tooltip : function(f) { var title = fm.formatDate(f) + (f.size > 0 ? ' ('+fm.formatSize(f.size)+')' : ''), info = ''; if (query && f.path) { info = fm.escape(f.path.replace(/\/[^\/]*$/, '')); } else { info = f.tooltip? fm.escape(f.tooltip).replace(/\r/g, ' ') : ''; } if (list) { info += (info? ' ' : '') + fm.escape(f.i18 || f.name); } return info? info + ' ' + title : title; } }, /** * Type badge CSS added flag * * @type Object */ addedBadges = {}, /** * Type badge style sheet element * * @type Object */ addBadgeStyleSheet, /** * Add type badge CSS into 'head' * * @type Fundtion */ addBadgeStyle = function(mime, name) { var sel, ext, type; if (mime && ! addedBadges[mime]) { if (typeof addBadgeStyleSheet === 'undefined') { if ($('#elfinderAddBadgeStyle'+fm.namespace).length) { $('#elfinderAddBadgeStyle'+fm.namespace).remove(); } addBadgeStyleSheet = $('').insertBefore($('head').children(':first')).get(0).sheet || null; } if (addBadgeStyleSheet) { mime = mime.toLowerCase(); type = mime.split('/'); ext = fm.escape(fm.mimeTypes[mime] || (name.replace(/.bac?k$/i, '').match(/\.([^.]+)$/) || ['',''])[1]); if (ext) { sel = '.elfinder-cwd-icon-' + type[0].replace(/(\.|\+)/g, '-'); if (typeof type[1] !== 'undefined') { sel += '.elfinder-cwd-icon-' + type[1].replace(/(\.|\+)/g, '-'); } try { addBadgeStyleSheet.insertRule(sel + ':before{content:"' + ext.toLowerCase() + '"}', 0); } catch(e) {} } addedBadges[mime] = true; } } }, /** * Return file html * * @param Object file info * @return String **/ itemhtml = function(f) { f.mime && f.mime !== 'directory' && !addedBadges[f.mime] && addBadgeStyle(f.mime, f.name); return templates[list ? 'row' : 'icon'] .replace(/\{([a-z0-9_]+)\}/g, function(s, e) { return replacement[e] ? replacement[e](f, fm) : (f[e] ? f[e] : ''); }); }, /** * jQueery node that will be selected next * * @type Object jQuery node */ selectedNext = $(), /** * Flag. Required for msie to avoid unselect files on dragstart * * @type Boolean **/ selectLock = false, /** * Move selection to prev/next file * * @param String move direction * @param Boolean append to current selection * @return void * @rise select */ select = function(keyCode, append) { var code = $.ui.keyCode, prev = keyCode == code.LEFT || keyCode == code.UP, sel = cwd.find('[id].'+clSelected), selector = prev ? 'first:' : 'last', s, n, sib, top, left; function sibling(n, direction) { return n[direction+'All']('[id]:not(.'+clDisabled+'):not(.elfinder-cwd-parent):first'); } if (sel.length) { s = sel.filter(prev ? ':first' : ':last'); sib = sibling(s, prev ? 'prev' : 'next'); if (!sib.length) { // there is no sibling on required side - do not move selection n = s; } else if (list || keyCode == code.LEFT || keyCode == code.RIGHT) { // find real prevoius file n = sib; } else { // find up/down side file in icons view top = s.position().top; left = s.position().left; n = s; if (prev) { do { n = n.prev('[id]'); } while (n.length && !(n.position().top < top && n.position().left <= left)); if (n.hasClass(clDisabled)) { n = sibling(n, 'next'); } } else { do { n = n.next('[id]'); } while (n.length && !(n.position().top > top && n.position().left >= left)); if (n.hasClass(clDisabled)) { n = sibling(n, 'prev'); } // there is row before last one - select last file if (!n.length) { sib = cwd.find('[id]:not(.'+clDisabled+'):last'); if (sib.position().top > top) { n = sib; } } } } // !append && unselectAll(); } else { if (selectedNext.length) { n = prev? selectedNext.prev() : selectedNext; } else { // there are no selected file - select first/last one n = cwd.find('[id]:not(.'+clDisabled+'):not(.elfinder-cwd-parent):'+(prev ? 'last' : 'first')); } } if (n && n.length && !n.hasClass('elfinder-cwd-parent')) { if (s && append) { // append new files to selected n = s.add(s[prev ? 'prevUntil' : 'nextUntil']('#'+n.attr('id'))).add(n); } else { // unselect selected files sel.trigger(evtUnselect); } // select file(s) n.trigger(evtSelect); // set its visible scrollToView(n.filter(prev ? ':first' : ':last')); // update cache/view trigger(); } }, selectedFiles = {}, selectFile = function(hash) { fm.cwdHash2Elm(hash).trigger(evtSelect); }, allSelected = false, selectAll = function() { var phash = fm.cwd().hash; selectCheckbox && selectAllCheckbox.find('input').prop('checked', true); fm.lazy(function() { var files; if (fm.maxTargets && (incHashes || cwdHashes).length > fm.maxTargets) { unselectAll({ notrigger: true }); files = $.map(incHashes || cwdHashes, function(hash) { return fm.file(hash) || null; }); files = files.slice(0, fm.maxTargets); selectedFiles = {}; $.each(files, function(i, v) { selectedFiles[v.hash] = true; fm.cwdHash2Elm(v.hash).trigger(evtSelect); }); fm.toast({mode: 'warning', msg: fm.i18n(['errMaxTargets', fm.maxTargets])}); } else { cwd.find('[id]:not(.'+clSelected+'):not(.elfinder-cwd-parent)').trigger(evtSelect); selectedFiles = fm.arrayFlip(incHashes || cwdHashes, true); } trigger(); selectCheckbox && selectAllCheckbox.data('pending', false); }, 0, {repaint: true}); }, /** * Unselect all files * * @param Object options * @return void */ unselectAll = function(opts) { var o = opts || {}; selectCheckbox && selectAllCheckbox.find('input').prop('checked', false); if (Object.keys(selectedFiles).length) { selectLock = false; selectedFiles = {}; cwd.find('[id].'+clSelected).trigger(evtUnselect); selectCheckbox && cwd.find('input:checkbox.'+clSelChk).prop('checked', false); } !o.notrigger && trigger(); selectCheckbox && selectAllCheckbox.data('pending', false); cwd.removeClass('elfinder-cwd-allselected'); }, selectInvert = function() { var invHashes = {}; if (allSelected) { unselectAll(); } else if (! Object.keys(selectedFiles).length) { selectAll(); } else { $.each((incHashes || cwdHashes), function(i, h) { var itemNode = fm.cwdHash2Elm(h); if (! selectedFiles[h]) { invHashes[h] = true; itemNode.length && itemNode.trigger(evtSelect); } else { itemNode.length && itemNode.trigger(evtUnselect); } }); selectedFiles = invHashes; trigger(); } }, /** * Return selected files hashes list * * @return Array */ selected = function() { return Object.keys(selectedFiles); }, /** * Last selected node id * * @type String|Void */ lastSelect = void 0, /** * Fire elfinder "select" event and pass selected files to it * * @return void */ trigger = function() { var selected = Object.keys(selectedFiles), opts = { selected : selected, origin : 'cwd' }; if (oldSchoolItem && (selected.length > 1 || selected[0] !== fm.cwdId2Hash( oldSchoolItem.attr('id'))) && oldSchoolItem.hasClass(clSelected)) { oldSchoolItem.trigger(evtUnselect); } allSelected = selected.length && (selected.length === (incHashes || cwdHashes).length) && (!fm.maxTargets || selected.length <= fm.maxTargets); if (selectCheckbox) { selectAllCheckbox.find('input').prop('checked', allSelected); cwd[allSelected? 'addClass' : 'removeClass']('elfinder-cwd-allselected'); } if (allSelected) { opts.selectall = true; } else if (! selected.length) { opts.unselectall = true; } fm.trigger('select', opts); }, /** * Scroll file to set it visible * * @param DOMElement file/dir node * @return void */ scrollToView = function(o, blink) { if (! o.length) { return; } var ftop = o.position().top, fheight = o.outerHeight(true), wtop = wrapper.scrollTop(), wheight = wrapper.get(0).clientHeight, thheight = tableHeader? tableHeader.outerHeight(true) : 0; if (ftop + thheight + fheight > wtop + wheight) { wrapper.scrollTop(parseInt(ftop + thheight + fheight - wheight)); } else if (ftop < wtop) { wrapper.scrollTop(ftop); } list && wrapper.scrollLeft(0); !!blink && fm.resources.blink(o, 'lookme'); }, /** * Files we get from server but not show yet * * @type Array **/ buffer = [], /** * Extra data of buffer * * @type Object **/ bufferExt = {}, /** * Return index of elements with required hash in buffer * * @param String file hash * @return Number */ index = function(hash) { var l = buffer.length; while (l--) { if (buffer[l].hash == hash) { return l; } } return -1; }, /** * Scroll start event name * * @type String **/ scrollStartEvent = 'elfscrstart', /** * Scroll stop event name * * @type String **/ scrollEvent = 'elfscrstop', scrolling = false, /** * jQuery UI selectable option * * @type Object */ selectableOption = { disabled : true, filter : '[id]:first', stop : trigger, delay : 250, appendTo : 'body', autoRefresh: false, selected : function(e, ui) { $(ui.selected).trigger(evtSelect); }, unselected : function(e, ui) { $(ui.unselected).trigger(evtUnselect); } }, /** * hashes of items displayed in current view * * @type Object ItemHash => DomId */ inViewHashes = {}, /** * Processing when the current view is changed (On open, search, scroll, resize etc.) * * @return void */ wrapperRepaint = function(init, recnt) { if (!bufferExt.renderd) { return; } var firstNode = (list? cwd.find('tbody:first') : cwd).children('[id]'+(options.oldSchool? ':not(.elfinder-cwd-parent)' : '')+':first'); if (!firstNode.length) { return; } var selectable = cwd.data('selectable'), rec = (function() { var wos = wrapper.offset(), ww = wrapper.width(), w = $(window), x = firstNode.width() / 2, l = Math.min(wos.left - w.scrollLeft() + (fm.direction === 'ltr'? x : ww - x), wos.left + ww - 10), t = wos.top - w.scrollTop() + 10 + (list? thHeight : 0); return {left: Math.max(0, Math.round(l)), top: Math.max(0, Math.round(t))}; })(), tgt = init? firstNode : $(document.elementFromPoint(rec.left , rec.top)), ids = {}, tmbs = {}, multi = 5, cnt = Math.ceil((bufferExt.hpi? Math.ceil((wz.data('rectangle').height / bufferExt.hpi) * 1.5) : showFiles) / multi), chk = function() { var id, hash, file, i; for (i = 0; i < multi; i++) { id = tgt.attr('id'); if (id) { bufferExt.getTmbs = []; hash = fm.cwdId2Hash(id); inViewHashes[hash] = id; // for tmbs if (bufferExt.attachTmbs[hash]) { tmbs[hash] = bufferExt.attachTmbs[hash]; } // for selectable selectable && (ids[id] = true); } // next node tgt = tgt.next(); if (!tgt.length) { break; } } }, done = function() { var idsArr; if (cwd.data('selectable')) { Object.assign(ids, selectedFiles); idsArr = Object.keys(ids); if (idsArr.length) { selectableOption.filter = '#'+idsArr.join(', #'); cwd.selectable('enable').selectable('option', {filter : selectableOption.filter}).selectable('refresh'); } } if (Object.keys(tmbs).length) { bufferExt.getTmbs = []; attachThumbnails(tmbs); } }, setTarget = function() { if (!tgt.hasClass(clFile)) { tgt = tgt.closest(fileSelector); } }, arr, widget; inViewHashes = {}; selectable && cwd.selectable('option', 'disabled'); if (tgt.length) { if (!tgt.hasClass(clFile) && !tgt.closest(fileSelector).length) { // dialog, serach button etc. widget = fm.getUI().find('.ui-dialog:visible,.ui-widget:visible'); if (widget.length) { widget.hide(); tgt = $(document.elementFromPoint(rec.left , rec.top)); widget.show(); } else { widget = null; } } setTarget(); if (!tgt.length) { // try search 5px down widget && widget.hide(); tgt = $(document.elementFromPoint(rec.left , rec.top + 5)); widget && widget.show(); setTarget(); } } if (tgt.length) { if (tgt.attr('id')) { if (init) { for (var i = 0; i < cnt; i++) { chk(); if (! tgt.length) { break; } } done(); } else { bufferExt.repaintJob && bufferExt.repaintJob.state() === 'pending' && bufferExt.repaintJob.reject(); arr = new Array(cnt); bufferExt.repaintJob = fm.asyncJob(function() { chk(); if (! tgt.length) { done(); bufferExt.repaintJob && bufferExt.repaintJob.state() === 'pending' && bufferExt.repaintJob.reject(); } }, arr).done(done); } } } else if (init && bufferExt.renderd) { // In initial request, cwd DOM not renderd so doing lazy check recnt = recnt || 0; if (recnt < 10) { // Prevent infinite loop requestAnimationFrame(function() { wrapperRepaint(init, ++recnt); }); } } }, /** * Item node of oldScholl ".." */ oldSchoolItem = null, /** * display parent folder with ".." name * * @param String phash * @return void */ oldSchool = function(p) { var phash = fm.cwd().phash, pdir = fm.file(phash) || null, set = function(pdir) { if (pdir) { oldSchoolItem = $(itemhtml($.extend(true, {}, pdir, {name : '..', i18 : '..', mime : 'directory'}))) .addClass('elfinder-cwd-parent') .on('dblclick', function() { fm.trigger('select', {selected : [phash]}).exec('open', phash); }); (list ? oldSchoolItem.children('td:first') : oldSchoolItem).children('.elfinder-cwd-select').remove(); if (fm.cwdHash2Elm(phash).length) { fm.cwdHash2Elm(phash).replaceWith(oldSchoolItem); } else { (list ? cwd.find('tbody') : cwd).prepend(oldSchoolItem); } fm.draggingUiHelper && fm.draggingUiHelper.data('refreshPositions', 1); } }; if (pdir) { set(pdir); } else { set({hash: phash, read: true, write: true}); if (fm.getUI('tree').length) { fm.one('parents', function() { set(fm.file(phash) || null); wrapper.trigger(scrollEvent); }); } else { fm.request({ data : {cmd : 'parents', target : fm.cwd().hash}, preventFail : true }) .done(function(data) { set(fm.file(phash) || null); wrapper.trigger(scrollEvent); }); } } }, showFiles = fm.options.showFiles, /** * Cwd scroll event handler. * Lazy load - append to cwd not shown files * * @return void */ render = function() { if (bufferExt.rendering || (bufferExt.renderd && ! buffer.length)) { return; } var place = (list ? cwd.children('table').children('tbody') : cwd), phash, chk, // created document fragment for jQuery >= 1.12, 2.2, 3.0 // see Studio-42/elFinder#1544 @ github docFlag = $.htmlPrefilter? true : false, tempDom = docFlag? $(document.createDocumentFragment()) : $('
                '), go = function(o){ var over = o || null, html = [], dirs = false, atmb = {}, stmb = (fm.option('tmbUrl') === 'self'), init = bufferExt.renderd? false : true, files, locks, selected; files = buffer.splice(0, showFiles + (over || 0) / (bufferExt.hpi || 1)); bufferExt.renderd += files.length; if (! buffer.length) { bottomMarker.hide(); wrapper.off(scrollEvent, render); } locks = []; html = $.map(files, function(f) { if (f.hash && f.name) { if (f.mime == 'directory') { dirs = true; } if ((f.tmb && (f.tmb != 1 || f.size > 0)) || (stmb && f.mime.indexOf('image/') === 0)) { atmb[f.hash] = f.tmb || 'self'; } clipCuts[f.hash] && locks.push(f.hash); return itemhtml(f); } return null; }); // html into temp node tempDom.empty().append(html.join('')); // make directory droppable dirs && !mobile && makeDroppable(tempDom); // check selected items selected = []; if (Object.keys(selectedFiles).length) { tempDom.find('[id]:not(.'+clSelected+'):not(.elfinder-cwd-parent)').each(function() { selectedFiles[fm.cwdId2Hash(this.id)] && selected.push($(this)); }); } // append to cwd place.append(docFlag? tempDom : tempDom.children()); // trigger select if (selected.length) { $.each(selected, function(i, n) { n.trigger(evtSelect); }); trigger(); } locks.length && fm.trigger('lockfiles', {files: locks}); !bufferExt.hpi && bottomMarkerShow(place, files.length); if (list) { // show thead cwd.find('thead').show(); // fixed table header fixTableHeader({fitWidth: ! colWidth}); } if (Object.keys(atmb).length) { Object.assign(bufferExt.attachTmbs, atmb); } if (init) { if (! mobile && ! cwd.data('selectable')) { // make files selectable cwd.selectable(selectableOption).data('selectable', true); } } ! scrolling && wrapper.trigger(scrollEvent); }; if (! bufferExt.renderd) { // first time to go() bufferExt.rendering = true; // scroll top on dir load to avoid scroll after page reload wrapper.scrollTop(0); phash = fm.cwd().phash; go(); if (options.oldSchool) { if (phash && !query) { oldSchool(phash); } else { oldSchoolItem = $(); } } if (list) { colWidth && setColwidth(); fixTableHeader({fitWidth: true}); } bufferExt.itemH = (list? place.find('tr:first') : place.find('[id]:first')).outerHeight(true); fm.trigger('cwdrender'); bufferExt.rendering = false; wrapperRepaint(true); } if (! bufferExt.rendering && buffer.length) { // next go() if ((chk = (wrapper.height() + wrapper.scrollTop() + fm.options.showThreshold + bufferExt.row) - (bufferExt.renderd * bufferExt.hpi)) > 0) { bufferExt.rendering = true; fm.lazy(function() { go(chk); bufferExt.rendering = false; }); } else { !fm.enabled() && resize(); } } else { resize(); } }, // fixed table header jQuery object tableHeader = null, // Is UA support CSS sticky cssSticky = fm.UA.CSS.positionSticky && fm.UA.CSS.widthMaxContent, // To fixed table header colmun fixTableHeader = function(optsArg) { thHeight = 0; if (! options.listView.fixedHeader) { return; } var setPos = function() { var val, pos; pos = (fm.direction === 'ltr')? 'left' : 'right'; val = ((fm.direction === 'ltr')? wrapper.scrollLeft() : table.outerWidth(true) - wrapper.width() - wrapper.scrollLeft()) * -1; if (base.css(pos) !== val) { base.css(pos, val); } }, opts = optsArg || {}, cnt, base, table, htable, thead, tbody, hheight, htr, btr, htd, btd, htw, btw, init; tbody = cwd.find('tbody'); btr = tbody.children('tr:first'); if (btr.length && btr.is(':visible')) { table = tbody.parent(); if (! tableHeader) { init = true; tbody.addClass('elfinder-cwd-fixheader'); thead = cwd.find('thead').attr('id', fm.namespace+'-cwd-thead'); htr = thead.children('tr:first'); hheight = htr.outerHeight(true); cwd.css('margin-top', hheight - parseInt(table.css('padding-top'))); if (cssSticky) { tableHeader = $('
                ').addClass(cwd.attr('class')).append($('
                ').append(thead)); cwd.after(tableHeader); wrapper.on('resize.fixheader', function(e) { e.stopPropagation(); fixTableHeader({fitWidth: true}); }); } else { base = $('
                ').addClass(cwd.attr('class')).append($('
                ').append(thead)); tableHeader = $('
                ').addClass(wrapper.attr('class') + ' elfinder-cwd-fixheader') .removeClass('ui-droppable native-droppable') .css(wrapper.position()) .css({ height: hheight, width: cwd.outerWidth() }) .append(base); if (fm.direction === 'rtl') { tableHeader.css('left', (wrapper.data('width') - wrapper.width()) + 'px'); } setPos(); wrapper.after(tableHeader) .on('scroll.fixheader resize.fixheader', function(e) { setPos(); if (e.type === 'resize') { e.stopPropagation(); tableHeader.css(wrapper.position()); wrapper.data('width', wrapper.css('overflow', 'hidden').width()); wrapper.css('overflow', 'auto'); fixTableHeader(); } }); } } else { thead = $('#'+fm.namespace+'-cwd-thead'); htr = thead.children('tr:first'); } if (init || opts.fitWidth || Math.abs(btr.outerWidth() - htr.outerWidth()) > 2) { cnt = customCols.length + 1; for (var i = 0; i < cnt; i++) { htd = htr.children('td:eq('+i+')'); btd = btr.children('td:eq('+i+')'); htw = htd.width(); btw = btd.width(); if (typeof htd.data('delta') === 'undefined') { htd.data('delta', (htd.outerWidth() - htw) - (btd.outerWidth() - btw)); } btw -= htd.data('delta'); if (! init && ! opts.fitWidth && htw === btw) { break; } htd.css('width', btw + 'px'); } } if (!cssSticky) { tableHeader.data('widthTimer') && cancelAnimationFrame(tableHeader.data('widthTimer')); tableHeader.data('widthTimer', requestAnimationFrame(function() { if (tableHeader) { tableHeader.css('width', mBoard.width() + 'px'); if (fm.direction === 'rtl') { tableHeader.css('left', (wrapper.data('width') - wrapper.width()) + 'px'); } } })); } thHeight = thead.height(); } }, // Set colmun width setColwidth = function() { if (list && colWidth) { var cl = 'elfinder-cwd-colwidth', first = cwd.find('tr[id]:first'), former; if (! first.hasClass(cl)) { former = cwd.find('tr.'+cl); former.removeClass(cl).find('td').css('width', ''); first.addClass(cl); cwd.find('table:first').css('table-layout', 'fixed'); $.each($.merge(['name'], customCols), function(i, k) { var w = colWidth[k] || first.find('td.elfinder-col-'+k).width(); first.find('td.elfinder-col-'+k).width(w); }); } } }, /** * Droppable options for cwd. * Drop target is `wrapper` * Do not add class on childs file over * * @type Object */ droppable = Object.assign({}, fm.droppable, { over : function(e, ui) { var dst = $(this), helper = ui.helper, ctr = fm._commands.copy && (e.shiftKey || e.ctrlKey || e.metaKey), hash, status, inParent; e.stopPropagation(); helper.data('dropover', helper.data('dropover') + 1); dst.data('dropover', true); helper.removeClass('elfinder-drag-helper-move elfinder-drag-helper-plus'); if (helper.data('namespace') !== fm.namespace || ! fm.insideWorkzone(e.pageX, e.pageY)) { dst.removeClass(clDropActive); //helper.removeClass('elfinder-drag-helper-move elfinder-drag-helper-plus'); return; } if (dst.hasClass(fm.res(c, 'cwdfile'))) { hash = fm.cwdId2Hash(dst.attr('id')); dst.data('dropover', hash); } else { hash = fm.cwd().hash; fm.cwd().write && dst.data('dropover', hash); } inParent = (fm.file(helper.data('files')[0]).phash === hash); if (dst.data('dropover') === hash) { $.each(helper.data('files'), function(i, h) { if (h === hash || (inParent && !ctr && !helper.hasClass('elfinder-drag-helper-plus'))) { dst.removeClass(clDropActive); return false; // break $.each } }); } else { dst.removeClass(clDropActive); } if (helper.data('locked') || inParent) { status = 'elfinder-drag-helper-plus'; } else { status = 'elfinder-drag-helper-move'; if (ctr) { status += ' elfinder-drag-helper-plus'; } } dst.hasClass(clDropActive) && helper.addClass(status); requestAnimationFrame(function(){ dst.hasClass(clDropActive) && helper.addClass(status); }); }, out : function(e, ui) { var helper = ui.helper; e.stopPropagation(); helper.removeClass('elfinder-drag-helper-move elfinder-drag-helper-plus').data('dropover', Math.max(helper.data('dropover') - 1, 0)); $(this).removeData('dropover') .removeClass(clDropActive); }, deactivate : function() { $(this).removeData('dropover') .removeClass(clDropActive); }, drop : function(e, ui) { unselectAll({ notrigger: true }); fm.droppable.drop.call(this, e, ui); } }), /** * Make directory droppable * * @return void */ makeDroppable = function(place) { place = place? place : (list ? cwd.find('tbody') : cwd); var targets = place.children('.directory:not(.'+clDroppable+',.elfinder-na,.elfinder-ro)'); if (fm.isCommandEnabled('paste')) { targets.droppable(droppable); } if (fm.isCommandEnabled('upload')) { targets.addClass('native-droppable'); } place.children('.isroot').each(function(i, n) { var $n = $(n), hash = fm.cwdId2Hash(n.id); if (fm.isCommandEnabled('paste', hash)) { if (! $n.hasClass(clDroppable+',elfinder-na,elfinder-ro')) { $n.droppable(droppable); } } else { if ($n.hasClass(clDroppable)) { $n.droppable('destroy'); } } if (fm.isCommandEnabled('upload', hash)) { if (! $n.hasClass('native-droppable,elfinder-na,elfinder-ro')) { $n.addClass('native-droppable'); } } else { if ($n.hasClass('native-droppable')) { $n.removeClass('native-droppable'); } } }); }, /** * Preload required thumbnails and on load add css to files. * Return false if required file is not visible yet (in buffer) - * required for old api to stop loading thumbnails. * * @param Object file hash -> thumbnail map * @param Bool reload * @return void */ attachThumbnails = function(tmbs, reload) { var attach = function(node, tmb) { $('') .on('load', function() { node.find('.elfinder-cwd-icon').addClass(tmb.className).css('background-image', "url('"+tmb.url+"')"); }) .attr('src', tmb.url); }, chk = function(hash, tmb) { var node = fm.cwdHash2Elm(hash), file, tmbObj, reloads = []; if (node.length) { if (tmb != '1') { file = fm.file(hash); if (file.tmb !== tmb) { file.tmb = tmb; } tmbObj = fm.tmb(file); if (reload) { node.find('.elfinder-cwd-icon').addClass(tmbObj.className).css('background-image', "url('"+tmbObj.url+"')"); } else { attach(node, tmbObj); } delete bufferExt.attachTmbs[hash]; } else { if (reload) { loadThumbnails([hash]); } else if (! bufferExt.tmbLoading[hash]) { bufferExt.getTmbs.push(hash); } } } }; if ($.isPlainObject(tmbs) && Object.keys(tmbs).length) { Object.assign(bufferExt.attachTmbs, tmbs); $.each(tmbs, chk); if (! reload && bufferExt.getTmbs.length && ! Object.keys(bufferExt.tmbLoading).length) { loadThumbnails(); } } }, /** * Load thumbnails from backend. * * @param Array|void reloads hashes list for reload thumbnail items * @return void */ loadThumbnails = function(reloads) { var tmbs = [], reload = false; if (fm.oldAPI) { fm.request({ data : {cmd : 'tmb', current : fm.cwd().hash}, preventFail : true }) .done(function(data) { if (data.images && Object.keys(data.images).length) { attachThumbnails(data.images); } if (data.tmb) { loadThumbnails(); } }); return; } if (reloads) { reload = true; tmbs = reloads.splice(0, tmbNum); } else { tmbs = bufferExt.getTmbs.splice(0, tmbNum); } if (tmbs.length) { if (reload || inViewHashes[tmbs[0]] || inViewHashes[tmbs[tmbs.length-1]]) { $.each(tmbs, function(i, h) { bufferExt.tmbLoading[h] = true; }); fm.request({ data : {cmd : 'tmb', targets : tmbs}, preventFail : true }) .done(function(data) { var errs = [], resLen; if (data.images) { if (resLen = Object.keys(data.images).length) { if (resLen < tmbs.length) { $.each(tmbs, function(i, h) { if (! data.images[h]) { errs.push(h); } }); } attachThumbnails(data.images, reload); } else { errs = tmbs; } // unset error items from bufferExt.attachTmbs if (errs.length) { $.each(errs, function(i, h) { delete bufferExt.attachTmbs[h]; }); } } if (reload) { if (reloads.length) { loadThumbnails(reloads); } } }) .always(function() { bufferExt.tmbLoading = {}; if (! reload && bufferExt.getTmbs.length) { loadThumbnails(); } }); } } }, /** * Add new files to cwd/buffer * * @param Array new files * @return void */ add = function(files, mode) { var place = list ? cwd.find('tbody') : cwd, l = files.length, atmb = {}, findNode = function(file) { var pointer = cwd.find('[id]:first'), file2; while (pointer.length) { file2 = fm.file(fm.cwdId2Hash(pointer.attr('id'))); if (!pointer.hasClass('elfinder-cwd-parent') && file2 && fm.compare(file, file2) < 0) { return pointer; } pointer = pointer.next('[id]'); } }, findIndex = function(file) { var l = buffer.length, i; for (i =0; i < l; i++) { if (fm.compare(file, buffer[i]) < 0) { return i; } } return l || -1; }, // created document fragment for jQuery >= 1.12, 2.2, 3.0 // see Studio-42/elFinder#1544 @ github docFlag = $.htmlPrefilter? true : false, tempDom = docFlag? $(document.createDocumentFragment()) : $('
                '), file, hash, node, nodes, ndx, stmb; if (l > showFiles) { // re-render for performance tune content(); selectedFiles = fm.arrayFlip($.map(files, function(f) { return f.hash; }), true); trigger(); } else { // add the item immediately l && wz.removeClass('elfinder-cwd-wrapper-empty'); // Self thumbnail stmb = (fm.option('tmbUrl') === 'self'); while (l--) { file = files[l]; hash = file.hash; if (fm.cwdHash2Elm(hash).length) { continue; } if ((node = findNode(file)) && ! node.length) { node = null; } if (! node && (ndx = findIndex(file)) >= 0) { buffer.splice(ndx, 0, file); } else { tempDom.empty().append(itemhtml(file)); (file.mime === 'directory') && !mobile && makeDroppable(tempDom); nodes = docFlag? tempDom : tempDom.children(); if (node) { node.before(nodes); } else { place.append(nodes); } ++bufferExt.renderd; } if (fm.cwdHash2Elm(hash).length) { if ((file.tmb && (file.tmb != 1 || file.size > 0)) || (stmb && file.mime.indexOf('image/') === 0)) { atmb[hash] = file.tmb || 'self'; } } } if (list) { setColwidth(); fixTableHeader({fitWidth: ! colWidth}); } bottomMarkerShow(place); if (Object.keys(atmb).length) { Object.assign(bufferExt.attachTmbs, atmb); if (buffer.length < 1) { loadThumbnails(); } } } }, /** * Remove files from cwd/buffer * * @param Array files hashes * @return void */ remove = function(files) { var l = files.length, inSearch = fm.searchStatus.state > 1, curCmd = fm.getCommand(fm.currentReqCmd) || {}, hash, n, ndx, found; // removed cwd if (!fm.cwd().hash && !curCmd.noChangeDirOnRemovedCwd) { $.each(cwdParents.reverse(), function(i, h) { if (fm.file(h)) { found = true; fm.one(fm.currentReqCmd + 'done', function() { !fm.cwd().hash && fm.exec('open', h); }); return false; } }); // fallback to fm.roots[0] !found && !fm.cwd().hash && fm.exec('open', fm.roots[Object.keys(fm.roots)[0]]); return; } while (l--) { hash = files[l]; if ((n = fm.cwdHash2Elm(hash)).length) { try { n.remove(); --bufferExt.renderd; } catch(e) { fm.debug('error', e); } } else if ((ndx = index(hash)) !== -1) { buffer.splice(ndx, 1); } selectedFiles[hash] && delete selectedFiles[hash]; if (inSearch) { if ((ndx = $.inArray(hash, cwdHashes)) !== -1) { cwdHashes.splice(ndx, 1); } } } inSearch && fm.trigger('cwdhasheschange', cwdHashes); if (list) { setColwidth(); fixTableHeader({fitWidth: ! colWidth}); } }, customColsNameBuild = function() { var name = '', customColsName = ''; for (var i = 0; i < customCols.length; i++) { name = fm.getColumnName(customCols[i]); customColsName +=''+name+''; } return customColsName; }, setItemBoxSize = function(boxSize) { var place, elm; if (!boxSize.height) { place = (list ? cwd.find('tbody') : cwd); elm = place.find(list? 'tr:first' : '[id]:first'); boxSize.height = elm.outerHeight(true); if (!list) { boxSize.width = elm.outerWidth(true); } } }, bottomMarkerShow = function(cur, cnt) { var place = cur || (list ? cwd.find('tbody') : cwd), boxSize = itemBoxSize[fm.viewType], col = 1, row; if (buffer.length > 0) { if (!bufferExt.hpi) { setItemBoxSize(boxSize); if (! list) { col = Math.floor(place.width() / boxSize.width); bufferExt.row = boxSize.height; bufferExt.hpi = bufferExt.row / col; } else { bufferExt.row = bufferExt.hpi = boxSize.height; } } else if (!list) { col = Math.floor(place.width() / boxSize.width); } row = Math.ceil((buffer.length + (cnt || 0)) / col); if (list && tableHeader) { ++row; } bottomMarker.css({top: (bufferExt.row * row) + 'px'}).show(); } }, wrapperContextMenu = { contextmenu : function(e) { e.preventDefault(); if (cwd.data('longtap') !== void(0)) { e.stopPropagation(); return; } fm.trigger('contextmenu', { 'type' : 'cwd', 'targets' : [fm.cwd().hash], 'x' : e.pageX, 'y' : e.pageY }); }, touchstart : function(e) { if (e.originalEvent.touches.length > 1) { return; } if (cwd.data('longtap') !== false) { wrapper.data('touching', {x: e.originalEvent.touches[0].pageX, y: e.originalEvent.touches[0].pageY}); cwd.data('tmlongtap', setTimeout(function(){ // long tap cwd.data('longtap', true); fm.trigger('contextmenu', { 'type' : 'cwd', 'targets' : [fm.cwd().hash], 'x' : wrapper.data('touching').x, 'y' : wrapper.data('touching').y }); }, 500)); } cwd.data('longtap', null); }, touchend : function(e) { if (e.type === 'touchmove') { if (! wrapper.data('touching') || ( Math.abs(wrapper.data('touching').x - e.originalEvent.touches[0].pageX) + Math.abs(wrapper.data('touching').y - e.originalEvent.touches[0].pageY)) > 4) { wrapper.data('touching', null); } } else { setTimeout(function() { cwd.removeData('longtap'); }, 80); } clearTimeout(cwd.data('tmlongtap')); }, click : function(e) { if (cwd.data('longtap')) { e.preventDefault(); e.stopPropagation(); } } }, /** * Update directory content * * @return void */ content = function() { fm.lazy(function() { var phash, emptyMethod, thtr; wz.append(selectAllCheckbox).removeClass('elfinder-cwd-wrapper-empty elfinder-search-result elfinder-incsearch-result elfinder-letsearch-result'); if (fm.searchStatus.state > 1 || fm.searchStatus.ininc) { wz.addClass('elfinder-search-result' + (fm.searchStatus.ininc? ' elfinder-'+(query.substr(0,1) === '/' ? 'let':'inc')+'search-result' : '')); } // abort attachThumbJob bufferExt.attachThumbJob && bufferExt.attachThumbJob._abort(); // destroy selectable for GC cwd.data('selectable') && cwd.selectable('disable').selectable('destroy').removeData('selectable'); // notify cwd init fm.trigger('cwdinit'); selectedNext = $(); try { // to avoid problem with draggable cwd.empty(); } catch (e) { cwd.html(''); } if (tableHeader) { wrapper.off('scroll.fixheader resize.fixheader'); tableHeader.remove(); tableHeader = null; } cwd.removeClass('elfinder-cwd-view-icons elfinder-cwd-view-list') .addClass('elfinder-cwd-view-'+(list ? 'list' :'icons')) .attr('style', '') .css('height', 'auto'); bottomMarker.hide(); wrapper[list ? 'addClass' : 'removeClass']('elfinder-cwd-wrapper-list')._padding = parseInt(wrapper.css('padding-top')) + parseInt(wrapper.css('padding-bottom')); if (fm.UA.iOS) { wrapper.removeClass('overflow-scrolling-touch').addClass('overflow-scrolling-touch'); } if (list) { cwd.html('
                '); thtr = $(''+fm.getColumnName('name')+''+customColsNameBuild()+''); cwd.find('thead').hide().append(thtr).find('td:first').append(selectAllCheckbox); if ($.fn.sortable) { thtr.addClass('touch-punch touch-punch-keep-default') .sortable({ axis: 'x', distance: 8, items: '> .sortable-item', start: function(e, ui) { $(ui.item[0]).data('dragging', true); ui.placeholder .width(ui.helper.removeClass('ui-state-hover').width()) .removeClass('ui-state-active') .addClass('ui-state-hover') .css('visibility', 'visible'); }, update: function(e, ui){ var target = $(ui.item[0]).attr('class').split(' ')[0].replace('elfinder-cwd-view-th-', ''), prev, done; customCols = $.map($(this).children(), function(n) { var name = $(n).attr('class').split(' ')[0].replace('elfinder-cwd-view-th-', ''); if (! done) { if (target === name) { done = true; } else { prev = name; } } return (name === 'name')? null : name; }); templates.row = makeTemplateRow(); fm.storage('cwdCols', customCols); prev = '.elfinder-col-'+prev+':first'; target = '.elfinder-col-'+target+':first'; fm.lazy(function() { cwd.find('tbody tr').each(function() { var $this = $(this); $this.children(prev).after($this.children(target)); }); }); }, stop: function(e, ui) { setTimeout(function() { $(ui.item[0]).removeData('dragging'); }, 100); } }); } thtr.find('td').addClass('touch-punch').resizable({ handles: fm.direction === 'ltr'? 'e' : 'w', start: function(e, ui) { var target = cwd.find('td.elfinder-col-' + ui.element.attr('class').split(' ')[0].replace('elfinder-cwd-view-th-', '') + ':first'); ui.element .data('dragging', true) .data('resizeTarget', target) .data('targetWidth', target.width()); colResizing = true; if (cwd.find('table').css('table-layout') !== 'fixed') { cwd.find('tbody tr:first td').each(function() { $(this).width($(this).width()); }); cwd.find('table').css('table-layout', 'fixed'); } }, resize: function(e, ui) { ui.element.data('resizeTarget').width(ui.element.data('targetWidth') - (ui.originalSize.width - ui.size.width)); }, stop : function(e, ui) { colResizing = false; fixTableHeader({fitWidth: true}); colWidth = {}; cwd.find('tbody tr:first td').each(function() { var name = $(this).attr('class').split(' ')[0].replace('elfinder-col-', ''); colWidth[name] = $(this).width(); }); fm.storage('cwdColWidth', colWidth); setTimeout(function() { ui.element.removeData('dragging'); }, 100); } }) .find('.ui-resizable-handle').addClass('ui-icon ui-icon-grip-dotted-vertical'); } buffer = $.map(incHashes || cwdHashes, function(hash) { return fm.file(hash) || null; }); buffer = fm.sortFiles(buffer); if (incHashes) { incHashes = $.map(buffer, function(f) { return f.hash; }); } else { cwdHashes = $.map(buffer, function(f) { return f.hash; }); } bufferExt = { renderd: 0, attachTmbs: {}, getTmbs: [], tmbLoading: {}, lazyOpts: { tm : 0 } }; wz[(buffer.length < 1) ? 'addClass' : 'removeClass']('elfinder-cwd-wrapper-empty'); wrapper.off(scrollEvent, render).on(scrollEvent, render).trigger(scrollEvent); // set droppable if (!fm.cwd().write) { wrapper.removeClass('native-droppable') .droppable('disable') .removeClass('ui-state-disabled'); // for old jQueryUI see https://bugs.jqueryui.com/ticket/5974 } else { wrapper[fm.isCommandEnabled('upload')? 'addClass' : 'removeClass']('native-droppable'); wrapper.droppable(fm.isCommandEnabled('paste')? 'enable' : 'disable'); } }); }, /** * CWD node itself * * @type JQuery **/ cwd = $(this) .addClass('ui-helper-clearfix elfinder-cwd') .attr('unselectable', 'on') // fix ui.selectable bugs and add shift+click support .on('click.'+fm.namespace, fileSelector, function(e) { var p = this.id ? $(this) : $(this).parents('[id]:first'), tgt = $(e.target), prev, next, pl, nl, sib; if (selectCheckbox && (tgt.is('input:checkbox.'+clSelChk) || tgt.hasClass('elfinder-cwd-select'))) { e.stopPropagation(); e.preventDefault(); p.trigger(p.hasClass(clSelected) ? evtUnselect : evtSelect); trigger(); requestAnimationFrame(function() { tgt.prop('checked', p.hasClass(clSelected)); }); return; } if (cwd.data('longtap') || tgt.hasClass('elfinder-cwd-nonselect')) { e.stopPropagation(); return; } if (!curClickId) { curClickId = p.attr('id'); setTimeout(function() { curClickId = ''; }, 500); } if (e.shiftKey) { prev = p.prevAll(lastSelect || '.'+clSelected+':first'); next = p.nextAll(lastSelect || '.'+clSelected+':first'); pl = prev.length; nl = next.length; } if (e.shiftKey && (pl || nl)) { sib = pl ? p.prevUntil('#'+prev.attr('id')) : p.nextUntil('#'+next.attr('id')); sib = sib.add(p); if (!pl) { sib = $(sib.get().reverse()); } sib.trigger(evtSelect); } else if (e.ctrlKey || e.metaKey) { p.trigger(p.hasClass(clSelected) ? evtUnselect : evtSelect); } else { if (wrapper.data('touching') && p.hasClass(clSelected)) { wrapper.data('touching', null); fm.dblclick({file : fm.cwdId2Hash(this.id)}); return; } else { unselectAll({ notrigger: true }); p.trigger(evtSelect); } } trigger(); }) // call fm.open() .on('dblclick.'+fm.namespace, fileSelector, function(e) { if (curClickId) { var hash = fm.cwdId2Hash(curClickId); e.stopPropagation(); if (this.id !== curClickId) { $(this).trigger(evtUnselect); $('#'+curClickId).trigger(evtSelect); trigger(); } fm.dblclick({file : hash}); } }) // for touch device .on('touchstart.'+fm.namespace, fileSelector, function(e) { if (e.originalEvent.touches.length > 1) { return; } var p = this.id ? $(this) : $(this).parents('[id]:first'), tgt = $(e.target), nodeName = e.target.nodeName, sel; if ((nodeName === 'INPUT' && e.target.type === 'text') || nodeName === 'TEXTAREA' || tgt.hasClass('elfinder-cwd-nonselect')) { e.stopPropagation(); return; } // now name editing if (p.find('input:text,textarea').length) { e.stopPropagation(); e.preventDefault(); return; } wrapper.data('touching', {x: e.originalEvent.touches[0].pageX, y: e.originalEvent.touches[0].pageY}); if (selectCheckbox && (tgt.is('input:checkbox.'+clSelChk) || tgt.hasClass('elfinder-cwd-select'))) { return; } sel = p.prevAll('.'+clSelected+':first').length + p.nextAll('.'+clSelected+':first').length; cwd.data('longtap', null); if (Object.keys(selectedFiles).length || (list && e.target.nodeName !== 'TD') || (!list && this !== e.target) ) { cwd.data('longtap', false); p.addClass(clHover); p.data('tmlongtap', setTimeout(function(){ // long tap cwd.data('longtap', true); p.trigger(evtSelect); trigger(); fm.trigger('contextmenu', { 'type' : 'files', 'targets' : fm.selected(), 'x' : e.originalEvent.touches[0].pageX, 'y' : e.originalEvent.touches[0].pageY }); }, 500)); } }) .on('touchmove.'+fm.namespace+' touchend.'+fm.namespace, fileSelector, function(e) { var tgt = $(e.target), p; if (selectCheckbox && (tgt.is('input:checkbox.'+clSelChk) || tgt.hasClass('elfinder-cwd-select'))) { return; } if (e.target.nodeName == 'INPUT' || e.target.nodeName == 'TEXTAREA') { e.stopPropagation(); return; } p = this.id ? $(this) : $(this).parents('[id]:first'); clearTimeout(p.data('tmlongtap')); if (e.type === 'touchmove') { wrapper.data('touching', null); p.removeClass(clHover); } else { if (wrapper.data('touching') && !cwd.data('longtap') && p.hasClass(clSelected)) { e.preventDefault(); wrapper.data('touching', null); fm.dblclick({file : fm.cwdId2Hash(this.id)}); } setTimeout(function() { cwd.removeData('longtap'); }, 80); } }) // attach draggable .on('mouseenter.'+fm.namespace, fileSelector, function(e) { if (scrolling) { return; } var $this = $(this), helper = null; if (!mobile && !$this.data('dragRegisted') && !$this.hasClass(clTmp) && !$this.hasClass(clDraggable) && !$this.hasClass(clDisabled)) { $this.data('dragRegisted', true); if (!fm.isCommandEnabled('copy', fm.searchStatus.state > 1 || $this.hasClass('isroot')? fm.cwdId2Hash($this.attr('id')) : void 0) && !fm.isCommandEnabled('cut', fm.searchStatus.state > 1 || $this.hasClass('isroot')? fm.cwdId2Hash($this.attr('id')) : void 0)) { return; } $this.on('mousedown', function(e) { // shiftKey or altKey + drag start for HTML5 native drag function // Note: can no use shiftKey with the Google Chrome var metaKey = options.metakeyDragout && !fm.UA.IE && (e.shiftKey || e.altKey), disable = false; if (metaKey && cwd.data('selectable')) { // destroy jQuery-ui selectable while trigger native drag cwd.selectable('disable').selectable('destroy').removeData('selectable'); requestAnimationFrame(function(){ cwd.selectable(selectableOption).selectable('option', {disabled: false}).selectable('refresh').data('selectable', true); }); } $this.removeClass('ui-state-disabled'); if (metaKey) { $this.draggable('option', 'disabled', true).attr('draggable', 'true'); } else { if (!$this.hasClass(clSelected)) { if (list) { disable = $(e.target).closest('span,tr').is('tr'); } else { disable = $(e.target).hasClass('elfinder-cwd-file'); } } if (disable) { // removeClass('ui-state-disabled') for old version of jQueryUI $this.draggable('option', 'disabled', true).removeClass('ui-state-disabled'); } else { $this.draggable('option', 'disabled', false) .removeAttr('draggable') .draggable('option', 'cursorAt', {left: 50 - parseInt($(e.currentTarget).css('margin-left')), top: 47}); } } }) .on('dragstart', function(e) { var dt = e.dataTransfer || e.originalEvent.dataTransfer || null; helper = null; if (dt && !fm.UA.IE) { var p = this.id ? $(this) : $(this).parents('[id]:first'), elm = $(''), url = '', durl = null, murl = null, files = [], icon = function(f) { var mime = f.mime, i, tmb = fm.tmb(f); i = '
                '; if (tmb) { i = $(i).addClass(tmb.className).css('background-image', "url('"+tmb.url+"')").get(0).outerHTML; } return i; }, l, geturl = []; p.trigger(evtSelect); trigger(); $.each(selectedFiles, function(v){ var file = fm.file(v), furl = file.url; if (file && file.mime !== 'directory') { if (!furl) { furl = fm.url(file.hash); } else if (furl == '1') { geturl.push(v); return true; } if (furl) { furl = fm.convAbsUrl(furl); files.push(v); $('').attr('href', furl).text(furl).appendTo(elm); url += furl + "\n"; if (!durl) { durl = file.mime + ':' + file.name + ':' + furl; } if (!murl) { murl = furl + "\n" + file.name; } } } }); if (geturl.length) { $.each(geturl, function(i, v){ var rfile = fm.file(v); rfile.url = ''; fm.request({ data : {cmd : 'url', target : v}, notify : {type : 'url', cnt : 1}, preventDefault : true }) .always(function(data) { rfile.url = data.url? data.url : '1'; }); }); return false; } else if (url) { if (dt.setDragImage) { helper = $('
                ').append(icon(fm.file(files[0]))).appendTo($(document.body)); if ((l = files.length) > 1) { helper.append(icon(fm.file(files[l-1])) + ''+l+''); } dt.setDragImage(helper.get(0), 50, 47); } dt.effectAllowed = 'copyLink'; dt.setData('DownloadURL', durl); dt.setData('text/x-moz-url', murl); dt.setData('text/uri-list', url); dt.setData('text/plain', url); dt.setData('text/html', elm.html()); dt.setData('elfinderfrom', window.location.href + fm.cwd().hash); dt.setData('elfinderfrom:' + dt.getData('elfinderfrom'), ''); } else { return false; } } }) .on('dragend', function(e){ unselectAll({ notrigger: true }); helper && helper.remove(); }) .draggable(fm.draggable); } }) // add hover class to selected file .on(evtSelect, fileSelector, function(e) { var $this = $(this), id = fm.cwdId2Hash($this.attr('id')); if (!selectLock && !$this.hasClass(clDisabled)) { lastSelect = '#'+ this.id; $this.addClass(clSelected).children().addClass(clHover).find('input:checkbox.'+clSelChk).prop('checked', true); if (! selectedFiles[id]) { selectedFiles[id] = true; } // will be selected next selectedNext = cwd.find('[id].'+clSelected+':last').next(); } }) // remove hover class from unselected file .on(evtUnselect, fileSelector, function(e) { var $this = $(this), id = fm.cwdId2Hash($this.attr('id')); if (!selectLock) { $this.removeClass(clSelected).children().removeClass(clHover).find('input:checkbox.'+clSelChk).prop('checked', false); if (cwd.hasClass('elfinder-cwd-allselected')) { selectCheckbox && selectAllCheckbox.children('input').prop('checked', false); cwd.removeClass('elfinder-cwd-allselected'); } selectedFiles[id] && delete selectedFiles[id]; } }) // disable files wich removing or moving .on(evtDisable, fileSelector, function() { var $this = $(this).removeClass(clHover+' '+clSelected).addClass(clDisabled), child = $this.children(), target = (list ? $this : child.find('div.elfinder-cwd-file-wrapper,div.elfinder-cwd-filename')); child.removeClass(clHover+' '+clSelected); $this.hasClass(clDroppable) && $this.droppable('disable'); target.hasClass(clDraggable) && target.draggable('disable'); }) // if any files was not removed/moved - unlock its .on(evtEnable, fileSelector, function() { var $this = $(this).removeClass(clDisabled), target = list ? $this : $this.children('div.elfinder-cwd-file-wrapper,div.elfinder-cwd-filename'); $this.hasClass(clDroppable) && $this.droppable('enable'); target.hasClass(clDraggable) && target.draggable('enable'); }) .on('scrolltoview', fileSelector, function(e, data) { scrollToView($(this), (data && typeof data.blink !== 'undefined')? data.blink : true); }) .on('mouseenter.'+fm.namespace+' mouseleave.'+fm.namespace, fileSelector, function(e) { var enter = (e.type === 'mouseenter'); if (enter && (scrolling || fm.UA.Mobile)) { return; } fm.trigger('hover', {hash : fm.cwdId2Hash($(this).attr('id')), type : e.type}); $(this).toggleClass(clHover, (e.type == 'mouseenter')); }) // for file contextmenu .on('mouseenter.'+fm.namespace+' mouseleave.'+fm.namespace, '.elfinder-cwd-file-wrapper,.elfinder-cwd-filename', function(e) { var enter = (e.type === 'mouseenter'); if (enter && scrolling) { return; } $(this).closest(fileSelector).children('.elfinder-cwd-file-wrapper,.elfinder-cwd-filename').toggleClass(clActive, (e.type == 'mouseenter')); }) .on('contextmenu.'+fm.namespace, function(e) { var file = $(e.target).closest(fileSelector); if (file.get(0) === e.target && !selectedFiles[fm.cwdId2Hash(file.get(0).id)]) { return; } // now filename editing if (file.find('input:text,textarea').length) { e.stopPropagation(); return; } if (file.length && (e.target.nodeName != 'TD' || selectedFiles[fm.cwdId2Hash(file.get(0).id)])) { e.stopPropagation(); e.preventDefault(); if (!file.hasClass(clDisabled) && !wrapper.data('touching')) { if (!file.hasClass(clSelected)) { unselectAll({ notrigger: true }); file.trigger(evtSelect); trigger(); } fm.trigger('contextmenu', { 'type' : 'files', 'targets' : fm.selected(), 'x' : e.pageX, 'y' : e.pageY }); } } }) // unselect all on cwd click .on('click.'+fm.namespace, function(e) { if (e.target === this && ! cwd.data('longtap')) { !e.shiftKey && !e.ctrlKey && !e.metaKey && unselectAll(); } }) // prepend fake file/dir .on('create.'+fm.namespace, function(e, f) { var parent = list ? cwd.find('tbody') : cwd, p = parent.find('.elfinder-cwd-parent'), lock = f.move || false, file = $(itemhtml(f)).addClass(clTmp), selected = fm.selected(); if (selected.length) { lock && fm.trigger('lockfiles', {files: selected}); } else { unselectAll(); } if (p.length) { p.after(file); } else { parent.prepend(file); } setColwidth(); wrapper.scrollTop(0).scrollLeft(0); }) // unselect all selected files .on('unselectall', unselectAll) .on('selectfile', function(e, id) { fm.cwdHash2Elm(id).trigger(evtSelect); trigger(); }) .on('colwidth', function() { if (list) { cwd.find('table').css('table-layout', '') .find('td').css('width', ''); fixTableHeader({fitWidth: true}); fm.storage('cwdColWidth', colWidth = null); } }) .on('iconpref', function(e, data) { cwd.removeClass(function(i, cName) { return (cName.match(/\belfinder-cwd-size\S+/g) || []).join(' '); }); iconSize = data? (parseInt(data.size) || 0) : 0; if (!list) { if (iconSize > 0) { cwd.addClass('elfinder-cwd-size' + iconSize); } if (bufferExt.renderd) { requestAnimationFrame(function() { itemBoxSize.icons = {}; bufferExt.hpi = null; bottomMarkerShow(cwd, bufferExt.renderd); wrapperRepaint(); }); } } }) // Change icon size with mouse wheel event .on('onwheel' in document ? 'wheel' : 'mousewheel', function(e) { var tm, size, delta; if (!list && ((e.ctrlKey && !e.metaKey) || (!e.ctrlKey && e.metaKey))) { e.stopPropagation(); e.preventDefault(); tm = cwd.data('wheelTm'); if (typeof tm !== 'undefined') { clearTimeout(tm); cwd.data('wheelTm', setTimeout(function() { cwd.removeData('wheelTm'); }, 200)); } else { cwd.data('wheelTm', false); size = iconSize || 0; delta = e.originalEvent.deltaY ? e.originalEvent.deltaY : -(e.originalEvent.wheelDelta); if (delta > 0) { if (iconSize > 0) { size = iconSize - 1; } } else { if (iconSize < options.iconsView.sizeMax) { size = iconSize + 1; } } if (size !== iconSize) { fm.storage('iconsize', size); cwd.trigger('iconpref', {size: size}); } } } }), wrapper = $('
                ') // make cwd itself droppable for folders from nav panel .droppable(Object.assign({}, droppable, {autoDisable: false})) .on('contextmenu.'+fm.namespace, wrapperContextMenu.contextmenu) .on('touchstart.'+fm.namespace, wrapperContextMenu.touchstart) .on('touchmove.'+fm.namespace+' touchend.'+fm.namespace, wrapperContextMenu.touchend) .on('click.'+fm.namespace, wrapperContextMenu.click) .on('scroll.'+fm.namespace, function() { if (! scrolling) { cwd.data('selectable') && cwd.selectable('disable'); wrapper.trigger(scrollStartEvent); } scrolling = true; bufferExt.scrtm && cancelAnimationFrame(bufferExt.scrtm); if (bufferExt.scrtm && Math.abs((bufferExt.scrolltop || 0) - (bufferExt.scrolltop = (this.scrollTop || $(this).scrollTop()))) < 5) { bufferExt.scrtm = 0; wrapper.trigger(scrollEvent); } bufferExt.scrtm = requestAnimationFrame(function() { bufferExt.scrtm = 0; wrapper.trigger(scrollEvent); }); }) .on(scrollEvent, function() { scrolling = false; wrapperRepaint(); }), bottomMarker = $('
                 
                ') .css({position: 'absolute', width: '1px', height: '1px'}) .hide(), selectAllCheckbox = selectCheckbox? $('
                ') .attr('title', fm.i18n('selectall')) .on('click', function(e) { e.stopPropagation(); e.preventDefault(); if ($(this).data('pending')) { return false; } selectAllCheckbox.data('pending', true); if (cwd.hasClass('elfinder-cwd-allselected')) { selectAllCheckbox.find('input').prop('checked', false); requestAnimationFrame(function() { unselectAll(); }); } else { selectAll(); } }) : $(), restm = null, resize = function(init) { var initHeight = function() { if (typeof bufferExt.renderd !== 'undefined') { var h = 0; wrapper.siblings('div.elfinder-panel:visible').each(function() { h += $(this).outerHeight(true); }); wrapper.height(wz.height() - h - wrapper._padding); } }; init && initHeight(); restm && cancelAnimationFrame(restm); restm = requestAnimationFrame(function(){ !init && initHeight(); var wph, cwdoh; // fix cwd height if it less then wrapper cwd.css('height', 'auto'); wph = wrapper[0].clientHeight - parseInt(wrapper.css('padding-top')) - parseInt(wrapper.css('padding-bottom')) - parseInt(cwd.css('margin-top')), cwdoh = cwd.outerHeight(true); if (cwdoh < wph) { cwd.height(wph); } }); list && ! colResizing && (init? wrapper.trigger('resize.fixheader') : fixTableHeader()); wrapperRepaint(); }, // elfinder node parent = $(this).parent().on('resize', resize), // workzone node wz = parent.children('.elfinder-workzone').append(wrapper.append(this).append(bottomMarker)), // message board mBoard = $('
                ').insertAfter(cwd), // Volume expires vExpires = $('
                '), vExpiresTm, showVolumeExpires = function() { var remain, sec, int; vExpiresTm && clearTimeout(vExpiresTm); if (curVolId && fm.volumeExpires[curVolId]) { sec = fm.volumeExpires[curVolId] - ((+new Date()) / 1000); int = (sec % 60) + 0.1; remain = Math.floor(sec / 60); vExpires.html(fm.i18n(['minsLeft', remain])).show(); if (remain) { vExpiresTm = setTimeout(showVolumeExpires, int * 1000); } } }, // each item box size itemBoxSize = { icons : {}, list : {} }, // has UI tree hasUiTree, // Icon size of icons view iconSize, // Current volume id curVolId, winScrTm; // IE < 11 not support CSS `pointer-events: none` if (!fm.UA.ltIE10) { mBoard.append($('
                ').html(fm.i18n('volume_Trash'))) .append(vExpires); } // setup by options replacement = Object.assign(replacement, options.replacement || {}); try { colWidth = fm.storage('cwdColWidth')? fm.storage('cwdColWidth') : null; } catch(e) { colWidth = null; } // setup costomCols fm.bind('columnpref', function(e) { var opts = e.data || {}; if (customCols = fm.storage('cwdCols')) { customCols = $.grep(customCols, function(n) { return (options.listView.columns.indexOf(n) !== -1)? true : false; }); if (options.listView.columns.length > customCols.length) { $.each(options.listView.columns, function(i, n) { if (customCols.indexOf(n) === -1) { customCols.push(n); } }); } } else { customCols = options.listView.columns; } // column names array that hidden var columnhides = fm.storage('columnhides') || null; if (columnhides && Object.keys(columnhides).length) customCols = $.grep(customCols, function(n) { return columnhides[n]? false : true; }); // make template with customCols templates.row = makeTemplateRow(); // repaint if need it list && opts.repaint && content(); }).trigger('columnpref'); if (mobile) { // for iOS5 bug $('body').on('touchstart touchmove touchend', function(e){}); } selectCheckbox && cwd.addClass('elfinder-has-checkbox'); $(window).on('scroll.'+fm.namespace, function() { winScrTm && cancelAnimationFrame(winScrTm); winScrTm = requestAnimationFrame(function() { wrapper.trigger(scrollEvent); }); }); $(document).on('keydown.'+fm.namespace, function(e) { if (e.keyCode == $.ui.keyCode.ESCAPE) { if (! fm.getUI().find('.ui-widget:visible').length) { unselectAll(); } } }); fm .one('init', function(){ var style = document.createElement('style'), sheet, node, base, resizeTm, iconSize, i = 0; if (document.head) { document.head.appendChild(style); sheet = style.sheet; sheet.insertRule('.elfinder-cwd-wrapper-empty .elfinder-cwd:not(.elfinder-table-header-sticky):after{ content:"'+fm.i18n('emptyFolder')+'" }', i++); sheet.insertRule('.elfinder-cwd-wrapper-empty .native-droppable .elfinder-cwd:not(.elfinder-table-header-sticky):after{ content:"'+fm.i18n('emptyFolder'+(mobile? 'LTap' : 'Drop'))+'" }', i++); sheet.insertRule('.elfinder-cwd-wrapper-empty .ui-droppable-disabled .elfinder-cwd:not(.elfinder-table-header-sticky):after{ content:"'+fm.i18n('emptyFolder')+'" }', i++); sheet.insertRule('.elfinder-cwd-wrapper-empty.elfinder-search-result .elfinder-cwd:not(.elfinder-table-header-sticky):after{ content:"'+fm.i18n('emptySearch')+'" }', i++); sheet.insertRule('.elfinder-cwd-wrapper-empty.elfinder-search-result.elfinder-incsearch-result .elfinder-cwd:not(.elfinder-table-header-sticky):after{ content:"'+fm.i18n('emptyIncSearch')+'" }', i++); sheet.insertRule('.elfinder-cwd-wrapper-empty.elfinder-search-result.elfinder-letsearch-result .elfinder-cwd:not(.elfinder-table-header-sticky):after{ content:"'+fm.i18n('emptyLetSearch')+'" }', i++); } if (iconSize = (fm.storage('iconsize') || options.iconsView.size || 0)) { iconSize = Math.min(iconSize, options.iconsView.sizeMax); cwd.trigger('iconpref', {size: iconSize}); } if (! mobile) { fm.one('open', function() { sheet && fm.zIndex && sheet.insertRule('.ui-selectable-helper{z-index:'+fm.zIndex+';}', i++); }); base = $('
                '); node = fm.getUI(); node.on('resize', function(e, data) { var offset; e.preventDefault(); e.stopPropagation(); if (data && data.fullscreen) { offset = node.offset(); if (data.fullscreen === 'on') { base.css({top:offset.top * -1 , left:offset.left * -1 }).appendTo(node); selectableOption.appendTo = base; } else { base.detach(); selectableOption.appendTo = 'body'; } cwd.data('selectable') && cwd.selectable('option', {appendTo : selectableOption.appendTo}); } }); } hasUiTree = fm.getUI('tree').length; }) .bind('enable', function() { resize(); }) .bind('request.open', function() { bufferExt.getTmbs = []; }) .one('open', function() { if (fm.maxTargets) { tmbNum = Math.min(fm.maxTargets, tmbNum); } }) .bind('open add remove searchend', function() { var phash = fm.cwd().hash, type = this.type; if (type === 'open' || type === 'searchend' || fm.searchStatus.state < 2) { cwdHashes = $.map(fm.files(phash), function(f) { return f.hash; }); fm.trigger('cwdhasheschange', cwdHashes); } if (type === 'open') { var inTrash = function() { var isIn = false; $.each(cwdParents, function(i, h) { if (fm.trashes[h]) { isIn = true; return false; } }); return isIn; }, req = phash? (! fm.file(phash) || hasUiTree? (! hasUiTree? fm.request({ data: { cmd : 'parents', target : fm.cwd().hash }, preventFail : true }) : (function() { var dfd = $.Deferred(); fm.one('treesync', function(e) { e.data.always(function() { dfd.resolve(); }); }); return dfd; })() ) : null ) : null, cwdObj = fm.cwd(); // add/remove volume id class if (cwdObj.volumeid !== curVolId) { vExpires.empty().hide(); if (curVolId) { wrapper.removeClass('elfinder-cwd-wrapper-' + curVolId); } curVolId = cwdObj.volumeid; showVolumeExpires(); wrapper.addClass('elfinder-cwd-wrapper-' + curVolId); } // add/remove trash class $.when(req).done(function() { cwdParents = fm.parents(cwdObj.hash); wrapper[inTrash()? 'addClass':'removeClass']('elfinder-cwd-wrapper-trash'); }); incHashes = void 0; unselectAll({ notrigger: true }); content(); } }) .bind('search', function(e) { cwdHashes = $.map(e.data.files, function(f) { return f.hash; }); fm.trigger('cwdhasheschange', cwdHashes); incHashes = void 0; fm.searchStatus.ininc = false; content(); fm.autoSync('stop'); }) .bind('searchend', function(e) { if (query || incHashes) { query = ''; if (incHashes) { fm.trigger('incsearchend', e.data); } else { if (!e.data || !e.data.noupdate) { content(); } } } fm.autoSync(); }) .bind('searchstart', function(e) { unselectAll(); query = e.data.query; }) .bind('incsearchstart', function(e) { var q = e.data.query || '', type = e.data.type || 'SearchName', searchTypes = fm.options.commandsOptions.search.searchTypes || {}; if ((searchTypes[type] && searchTypes[type].incsearch) || type === 'SearchName') { selectedFiles = {}; fm.lazy(function() { // incremental search var regex, incSearch, fst = ''; query = q; if (q) { if (q.substr(0,1) === '/') { q = q.substr(1); fst = '^'; } regex = new RegExp(fst + q.replace(/([\\*\;\.\?\[\]\{\}\(\)\^\$\-\|])/g, '\\$1'), 'i'); if (type === 'SearchName') { incHashes = $.grep(cwdHashes, function(hash) { var file = fm.file(hash); return (file && (file.name.match(regex) || (file.i18 && file.i18.match(regex))))? true : false; }); } else { incSearch = searchTypes[type].incsearch; if (typeof incSearch === 'string') { incHashes = $.grep(cwdHashes, function(hash) { var file = fm.file(hash); return (file && file[incSearch] && (file[incSearch] + '').match(regex))? true : false; }); } else if (typeof incSearch === 'function') { try { incHashes = $.grep(incSearch({val: q, regex: regex}, cwdHashes, fm), function(hash) { return fm.file(hash)? true : false; }); } catch(e) { incHashes = []; } } } fm.trigger('incsearch', { hashes: incHashes, query: q }) .searchStatus.ininc = true; content(); fm.autoSync('stop'); } else { fm.trigger('incsearchend'); } }); } }) .bind('incsearchend', function(e) { query = ''; fm.searchStatus.ininc = false; incHashes = void 0; if (!e.data || !e.data.noupdate) { content(); } fm.autoSync(); }) .bind('sortchange', function() { var lastScrollLeft = wrapper.scrollLeft(), allsel = cwd.hasClass('elfinder-cwd-allselected'); content(); fm.one('cwdrender', function() { wrapper.scrollLeft(lastScrollLeft); if (allsel) { selectedFiles = fm.arrayFlip(incHashes || cwdHashes, true); } (allsel || Object.keys(selectedFiles).length) && trigger(); }); }) .bind('viewchange', function() { var l = fm.viewType != 'list', allsel = cwd.hasClass('elfinder-cwd-allselected'); if (l != list) { list = l; fm.viewType = list? 'list' : 'icons'; if (iconSize) { fm.one('cwdinit', function() { cwd.trigger('iconpref', {size: iconSize}); }); } content(); resize(); if (allsel) { cwd.addClass('elfinder-cwd-allselected'); selectAllCheckbox.find('input').prop('checked', true); } Object.keys(selectedFiles).length && trigger(); } }) .bind('wzresize', function() { var place = list ? cwd.find('tbody') : cwd, cwdOffset; resize(true); if (bufferExt.hpi) { bottomMarkerShow(place, place.find('[id]').length); } cwdOffset = cwd.offset(); wz.data('rectangle', Object.assign( { width: wz.width(), height: wz.height(), cwdEdge: (fm.direction === 'ltr')? cwdOffset.left : cwdOffset.left + cwd.width() }, wz.offset()) ); bufferExt.itemH = (list? place.find('tr:first') : place.find('[id]:first')).outerHeight(true); }) .bind('changeclipboard', function(e) { clipCuts = {}; if (e.data && e.data.clipboard && e.data.clipboard.length) { $.each(e.data.clipboard, function(i, f) { if (f.cut) { clipCuts[f.hash] = true; } }); } }) .bind('resMixinMake', function() { setColwidth(); }) .bind('tmbreload', function(e) { var imgs = {}, files = (e.data && e.data.files)? e.data.files : null; $.each(files, function(i, f) { if (f.tmb && f.tmb != '1') { imgs[f.hash] = f.tmb; } }); if (Object.keys(imgs).length) { attachThumbnails(imgs, true); } }) .add(function(e) { var regex = query? new RegExp(query.replace(/([\\*\;\.\?\[\]\{\}\(\)\^\$\-\|])/g, '\\$1'), 'i') : null, mime = fm.searchStatus.mime, inSearch = fm.searchStatus.state > 1, phash = inSearch && fm.searchStatus.target? fm.searchStatus.target : fm.cwd().hash, curPath = fm.path(phash), inTarget = function(f) { var res, parents, path; res = (f.phash === phash); if (!res && inSearch) { path = f.path || fm.path(f.hash); res = (curPath && path.indexOf(curPath) === 0); if (! res && fm.searchStatus.mixed) { res = $.grep(fm.searchStatus.mixed, function(vid) { return f.hash.indexOf(vid) === 0? true : false; }).length? true : false; } } if (res && inSearch) { if (mime) { res = (f.mime.indexOf(mime) === 0); } else { res = (f.name.match(regex) || (f.i18 && f.i18.match(regex)))? true : false; } } return res; }, files = $.grep(e.data.added || [], function(f) { return inTarget(f)? true : false ;}); add(files); if (fm.searchStatus.state === 2) { $.each(files, function(i, f) { if ($.inArray(f.hash, cwdHashes) === -1) { cwdHashes.push(f.hash); } }); fm.trigger('cwdhasheschange', cwdHashes); } list && resize(); wrapper.trigger(scrollEvent); }) .change(function(e) { var phash = fm.cwd().hash, sel = fm.selected(), files, added; if (query) { $.each(e.data.changed || [], function(i, file) { if (fm.cwdHash2Elm(file.hash).length) { remove([file.hash]); add([file], 'change'); $.inArray(file.hash, sel) !== -1 && selectFile(file.hash); added = true; } }); } else { $.each($.grep(e.data.changed || [], function(f) { return f.phash == phash ? true : false; }), function(i, file) { if (fm.cwdHash2Elm(file.hash).length) { remove([file.hash]); add([file], 'change'); $.inArray(file.hash, sel) !== -1 && selectFile(file.hash); added = true; } }); } if (added) { fm.trigger('cwdhasheschange', cwdHashes); list && resize(); wrapper.trigger(scrollEvent); } trigger(); }) .remove(function(e) { var place = list ? cwd.find('tbody') : cwd; remove(e.data.removed || []); trigger(); if (buffer.length < 1 && place.children(fileSelector + (options.oldSchool? ':not(.elfinder-cwd-parent)' : '')).length < 1) { wz.addClass('elfinder-cwd-wrapper-empty'); selectCheckbox && selectAllCheckbox.find('input').prop('checked', false); bottomMarker.hide(); wrapper.off(scrollEvent, render); resize(); } else { bottomMarkerShow(place); wrapper.trigger(scrollEvent); } }) // select dragged file if no selected, disable selectable .dragstart(function(e) { var target = $(e.data.target), oe = e.data.originalEvent; if (target.hasClass(clFile)) { if (!target.hasClass(clSelected)) { !(oe.ctrlKey || oe.metaKey || oe.shiftKey) && unselectAll({ notrigger: true }); target.trigger(evtSelect); trigger(); } } cwd.removeClass(clDisabled).data('selectable') && cwd.selectable('disable'); selectLock = true; }) // enable selectable .dragstop(function() { cwd.data('selectable') && cwd.selectable('enable'); selectLock = false; }) .bind('lockfiles unlockfiles selectfiles unselectfiles', function(e) { var events = { lockfiles : evtDisable , unlockfiles : evtEnable , selectfiles : evtSelect, unselectfiles : evtUnselect }, event = events[e.type], files = e.data.files || [], l = files.length, helper = e.data.helper || $(), parents, ctr, add; if (l > 0) { parents = fm.parents(files[0]); } if (event === evtSelect || event === evtUnselect) { add = (event === evtSelect), $.each(files, function(i, hash) { var all = cwd.hasClass('elfinder-cwd-allselected'); if (! selectedFiles[hash]) { add && (selectedFiles[hash] = true); } else { if (all) { selectCheckbox && selectAllCheckbox.children('input').prop('checked', false); cwd.removeClass('elfinder-cwd-allselected'); all = false; } ! add && delete selectedFiles[hash]; } }); } if (!helper.data('locked')) { while (l--) { try { fm.cwdHash2Elm(files[l]).trigger(event); } catch(e) {} } ! e.data.inselect && trigger(); } if (wrapper.data('dropover') && parents.indexOf(wrapper.data('dropover')) !== -1) { ctr = e.type !== 'lockfiles'; helper.toggleClass('elfinder-drag-helper-plus', ctr); wrapper.toggleClass(clDropActive, ctr); } }) // select new files after some actions .bind('mkdir mkfile duplicate upload rename archive extract paste multiupload', function(e) { if (e.type == 'upload' && e.data._multiupload) return; var phash = fm.cwd().hash, files; unselectAll({ notrigger: true }); $.each((e.data.added || []).concat(e.data.changed || []), function(i, file) { file && file.phash == phash && selectFile(file.hash); }); trigger(); }) .shortcut({ pattern :'ctrl+a', description : 'selectall', callback : selectAll }) .shortcut({ pattern :'ctrl+shift+i', description : 'selectinvert', callback : selectInvert }) .shortcut({ pattern : 'left right up down shift+left shift+right shift+up shift+down', description : 'selectfiles', type : 'keydown' , //fm.UA.Firefox || fm.UA.Opera ? 'keypress' : 'keydown', callback : function(e) { select(e.keyCode, e.shiftKey); } }) .shortcut({ pattern : 'home', description : 'selectffile', callback : function(e) { unselectAll({ notrigger: true }); scrollToView(cwd.find('[id]:first').trigger(evtSelect)); trigger(); } }) .shortcut({ pattern : 'end', description : 'selectlfile', callback : function(e) { unselectAll({ notrigger: true }); scrollToView(cwd.find('[id]:last').trigger(evtSelect)) ; trigger(); } }) .shortcut({ pattern : 'page_up', description : 'pageTurning', callback : function(e) { if (bufferExt.itemH) { wrapper.scrollTop( Math.round( wrapper.scrollTop() - (Math.floor((wrapper.height() + (list? bufferExt.itemH * -1 : 16)) / bufferExt.itemH)) * bufferExt.itemH ) ); } } }).shortcut({ pattern : 'page_down', description : 'pageTurning', callback : function(e) { if (bufferExt.itemH) { wrapper.scrollTop( Math.round( wrapper.scrollTop() + (Math.floor((wrapper.height() + (list? bufferExt.itemH * -1 : 16)) / bufferExt.itemH)) * bufferExt.itemH ) ); } } }); }); // fm.timeEnd('cwdLoad') return this; }; plugins/file-manager-advanced/application/library/js/ui/dialog.js000064400000065054147176754550021153 0ustar00/** * @class elFinder dialog * * @author Dmitry (dio) Levashov **/ $.fn.elfinderdialog = function(opts, fm) { "use strict"; var platformWin = (window.navigator.platform.indexOf('Win') != -1), delta = {}, syncSize = { enabled: false, width: false, height: false, defaultSize: null }, fitSize = function(dialog) { var opts, node; if (syncSize.enabled) { node = fm.options.dialogContained? elfNode : $(window); opts = { maxWidth : syncSize.width? node.width() - delta.width : null, maxHeight: syncSize.height? node.height() - delta.height : null }; Object.assign(restoreStyle, opts); dialog.css(opts).trigger('resize'); if (dialog.data('hasResizable') && (dialog.resizable('option', 'maxWidth') < opts.maxWidth || dialog.resizable('option', 'maxHeight') < opts.maxHeight)) { dialog.resizable('option', opts); } } }, syncFunc = function(e) { var dialog = e.data; syncTm && cancelAnimationFrame(syncTm); syncTm = requestAnimationFrame(function() { var opts, offset; if (syncSize.enabled) { fitSize(dialog); } }); }, checkEditing = function() { var cldialog = 'elfinder-dialog', dialogs = elfNode.children('.' + cldialog + '.' + fm.res('class', 'editing') + ':visible'); fm[dialogs.length? 'disable' : 'enable'](); }, propagationEvents = {}, syncTm, dialog, elfNode, restoreStyle; if (fm && fm.ui) { elfNode = fm.getUI(); } else { elfNode = this.closest('.elfinder'); if (! fm) { fm = elfNode.elfinder('instance'); } } if (typeof opts === 'string') { if ((dialog = this.closest('.ui-dialog')).length) { if (opts === 'open') { if (dialog.css('display') === 'none') { // Need dialog.show() and hide() to detect elements size in open() callbacks dialog.trigger('posinit').show().trigger('open').hide(); dialog.fadeIn(120, function() { fm.trigger('dialogopened', {dialog: dialog}); }); } } else if (opts === 'close' || opts === 'destroy') { dialog.stop(true); if (dialog.is(':visible') || elfNode.is(':hidden')) { dialog.trigger('close'); fm.trigger('dialogclosed', {dialog: dialog}); } if (opts === 'destroy') { dialog.remove(); fm.trigger('dialogremoved', {dialog: dialog}); } else if (dialog.data('minimized')) { dialog.data('minimized').close(); } } else if (opts === 'toTop') { dialog.trigger('totop'); fm.trigger('dialogtotoped', {dialog: dialog}); } else if (opts === 'posInit') { dialog.trigger('posinit'); fm.trigger('dialogposinited', {dialog: dialog}); } else if (opts === 'tabstopsInit') { dialog.trigger('tabstopsInit'); fm.trigger('dialogtabstopsinited', {dialog: dialog}); } else if (opts === 'checkEditing') { checkEditing(); } } return this; } opts = Object.assign({}, $.fn.elfinderdialog.defaults, opts); if (opts.allowMinimize && opts.allowMinimize === 'auto') { opts.allowMinimize = this.find('textarea,input').length? true : false; } opts.openMaximized = opts.allowMinimize && opts.openMaximized; if (opts.headerBtnPos && opts.headerBtnPos === 'auto') { opts.headerBtnPos = platformWin? 'right' : 'left'; } if (opts.headerBtnOrder && opts.headerBtnOrder === 'auto') { opts.headerBtnOrder = platformWin? 'close:maximize:minimize' : 'close:minimize:maximize'; } if (opts.modal && opts.allowMinimize) { opts.allowMinimize = false; } if (fm.options.dialogContained) { syncSize.width = syncSize.height = syncSize.enabled = true; } else { syncSize.width = (opts.maxWidth === 'window'); syncSize.height = (opts.maxHeight === 'window'); if (syncSize.width || syncSize.height) { syncSize.enabled = true; } } propagationEvents = fm.arrayFlip(opts.propagationEvents, true); this.filter(':not(.ui-dialog-content)').each(function() { var self = $(this).addClass('ui-dialog-content ui-widget-content'), clactive = 'elfinder-dialog-active', cldialog = 'elfinder-dialog', clnotify = 'elfinder-dialog-notify', clhover = 'ui-state-hover', cltabstop = 'elfinder-tabstop', cl1stfocus = 'elfinder-focus', clmodal = 'elfinder-dialog-modal', id = parseInt(Math.random()*1000000), titlebar = $('
                '+opts.title+'
                '), buttonset = $('
                '), buttonpane = $('
                ') .append(buttonset), btnWidth = 0, btnCnt = 0, tabstops = $(), evCover = $('
                ').hide(), numberToTel = function() { if (opts.optimizeNumber) { dialog.find('input[type=number]').each(function() { $(this).attr('inputmode', 'numeric'); $(this).attr('pattern', '[0-9]*'); }); } }, tabstopsInit = function() { tabstops = dialog.find('.'+cltabstop); if (tabstops.length) { tabstops.attr('tabindex', '-1'); if (! tabstops.filter('.'+cl1stfocus).length) { buttonset.children('.'+cltabstop+':'+(platformWin? 'first' : 'last')).addClass(cl1stfocus); } } }, tabstopNext = function(cur) { var elms = tabstops.filter(':visible:enabled'), node = cur? null : elms.filter('.'+cl1stfocus+':first'); if (! node || ! node.length) { node = elms.first(); } if (cur) { $.each(elms, function(i, elm) { if (elm === cur && elms[i+1]) { node = elms.eq(i+1); return false; } }); } return node; }, tabstopPrev = function(cur) { var elms = tabstops.filter(':visible:enabled'), node = elms.last(); $.each(elms, function(i, elm) { if (elm === cur && elms[i-1]) { node = elms.eq(i-1); return false; } }); return node; }, makeHeaderBtn = function() { $.each(opts.headerBtnOrder.split(':').reverse(), function(i, v) { headerBtns[v] && headerBtns[v](); }); if (platformWin) { titlebar.children('.elfinder-titlebar-button').addClass('elfinder-titlebar-button-right'); } }, headerBtns = { close: function() { titlebar.prepend($('') .on('mousedown touchstart', function(e) { e.preventDefault(); e.stopPropagation(); self.elfinderdialog('close'); }) ); }, maximize: function() { if (opts.allowMaximize) { dialog.on('resize', function(e, data) { var full, elm; e.preventDefault(); e.stopPropagation(); if (data && data.maximize) { elm = titlebar.find('.elfinder-titlebar-full'); full = (data.maximize === 'on'); elm.children('span.ui-icon') .toggleClass('ui-icon-plusthick', ! full) .toggleClass('ui-icon-arrowreturnthick-1-s', full); if (full) { try { dialog.hasClass('ui-draggable') && dialog.draggable('disable'); dialog.hasClass('ui-resizable') && dialog.resizable('disable'); } catch(e) {} self.css('width', '100%').css('height', dialog.height() - dialog.children('.ui-dialog-titlebar').outerHeight(true) - buttonpane.outerHeight(true)); } else { self.attr('style', elm.data('style')); elm.removeData('style'); posCheck(); try { dialog.hasClass('ui-draggable') && dialog.draggable('enable'); dialog.hasClass('ui-resizable') && dialog.resizable('enable'); } catch(e) {} } dialog.trigger('resize', {init: true}); } }); titlebar.prepend($('') .on('mousedown touchstart', function(e) { var elm = $(this); e.preventDefault(); e.stopPropagation(); if (!dialog.hasClass('elfinder-maximized') && typeof elm.data('style') === 'undefined') { self.height(self.height()); elm.data('style', self.attr('style') || ''); } fm.toggleMaximize(dialog); typeof(opts.maximize) === 'function' && opts.maximize.call(self[0]); }) ); } }, minimize: function() { var btn, mnode, doffset; if (opts.allowMinimize) { btn = $('') .on('mousedown touchstart', function(e) { var $this = $(this), tray = fm.getUI('bottomtray'), dumStyle = { width: 70, height: 24 }, dum = $('
                ').css(dumStyle).addClass(dialog.get(0).className + ' elfinder-dialog-minimized'), close = function() { mnode.remove(); dialog.removeData('minimized').show(); self.elfinderdialog('close'); }, pos = {}; e.preventDefault(); e.stopPropagation(); if (!dialog.data('minimized')) { // minimize doffset = dialog.data('minimized', { dialog : function() { return mnode; }, show : function() { mnode.show(); }, hide : function() { mnode.hide(); }, close : close, title : function(v) { mnode.children('.ui-dialog-titlebar').children('.elfinder-dialog-title').text(v); } }).position(); mnode = dialog.clone().on('mousedown', function() { $this.trigger('mousedown'); }).removeClass('ui-draggable ui-resizable elfinder-frontmost'); tray.append(dum); Object.assign(pos, dum.offset(), dumStyle); dum.remove(); mnode.height(dialog.height()).children('.ui-dialog-content:first').empty(); fm.toHide(dialog.before(mnode)); mnode.children('.ui-dialog-content:first,.ui-dialog-buttonpane,.ui-resizable-handle').remove(); mnode.find('.elfinder-titlebar-minimize,.elfinder-titlebar-full').remove(); mnode.find('.ui-dialog-titlebar-close').on('mousedown', function(e) { e.stopPropagation(); e.preventDefault(); close(); }); mnode.animate(pos, function() { mnode.attr('style', '') .css({ maxWidth: dialog.width() }) .addClass('elfinder-dialog-minimized') .appendTo(tray); checkEditing(); typeof(opts.minimize) === 'function' && opts.minimize.call(self[0]); }); } else { //restore dialog.removeData('minimized').before(mnode.css(Object.assign({'position': 'absolute'}, mnode.offset()))); fm.toFront(mnode); mnode.animate(Object.assign({ width: dialog.width(), height: dialog.height() }, doffset), function() { dialog.show(); fm.toFront(dialog); mnode.remove(); posCheck(); checkEditing(); dialog.trigger('resize', {init: true}); typeof(opts.minimize) === 'function' && opts.minimize.call(self[0]); }); } }); titlebar.on('dblclick', function(e) { $(this).children('.elfinder-titlebar-minimize').trigger('mousedown'); }).prepend(btn); dialog.on('togleminimize', function() { btn.trigger('mousedown'); }); } } }, dialog = $('
                ') .hide() .append(self) .appendTo(elfNode) .draggable({ containment : fm.options.dialogContained? elfNode : null, handle : '.ui-dialog-titlebar', start : function() { evCover.show(); }, drag : function(e, ui) { var top = ui.offset.top, left = ui.offset.left; if (top < 0) { ui.position.top = ui.position.top - top; } if (left < 0) { ui.position.left = ui.position.left - left; } if (fm.options.dialogContained) { ui.position.top < 0 && (ui.position.top = 0); ui.position.left < 0 && (ui.position.left = 0); } }, stop : function(e, ui) { evCover.hide(); dialog.css({height : opts.height}); self.data('draged', true); } }) .css({ width : opts.width, height : opts.height, minWidth : opts.minWidth, minHeight : opts.minHeight, maxWidth : opts.maxWidth, maxHeight : opts.maxHeight }) .on('touchstart touchmove touchend click dblclick mouseup mouseenter mouseleave mouseout mouseover mousemove', function(e) { // stopPropagation of user action events !propagationEvents[e.type] && e.stopPropagation(); }) .on('mousedown', function(e) { !propagationEvents[e.type] && e.stopPropagation(); requestAnimationFrame(function() { if (dialog.is(':visible') && !dialog.hasClass('elfinder-frontmost')) { toFocusNode = $(':focus'); if (!toFocusNode.length) { toFocusNode = void(0); } dialog.trigger('totop'); } }); }) .on('open', function() { dialog.data('margin-y', self.outerHeight(true) - self.height()); if (syncSize.enabled) { if (opts.height && opts.height !== 'auto') { dialog.trigger('resize', {init: true}); } if (!syncSize.defaultSize) { syncSize.defaultSize = { width: self.width(), height: self.height() }; } fitSize(dialog); dialog.trigger('resize').trigger('posinit'); elfNode.on('resize.'+fm.namespace, dialog, syncFunc); } if (!dialog.hasClass(clnotify)) { elfNode.children('.'+cldialog+':visible:not(.'+clnotify+')').each(function() { var d = $(this), top = parseInt(d.css('top')), left = parseInt(d.css('left')), _top = parseInt(dialog.css('top')), _left = parseInt(dialog.css('left')), ct = Math.abs(top - _top) < 10, cl = Math.abs(left - _left) < 10; if (d[0] != dialog[0] && (ct || cl)) { dialog.css({ top : ct ? (top + 10) : _top, left : cl ? (left + 10) : _left }); } }); } if (dialog.data('modal')) { dialog.addClass(clmodal); fm.getUI('overlay').elfinderoverlay('show'); } dialog.trigger('totop'); opts.openMaximized && fm.toggleMaximize(dialog); fm.trigger('dialogopen', {dialog: dialog}); typeof(opts.open) == 'function' && $.proxy(opts.open, self[0])(); if (opts.closeOnEscape) { $(document).on('keydown.'+id, function(e) { if (e.keyCode == $.ui.keyCode.ESCAPE && dialog.hasClass('elfinder-frontmost')) { self.elfinderdialog('close'); } }); } dialog.hasClass(fm.res('class', 'editing')) && checkEditing(); }) .on('close', function(e) { var dialogs, dfd; if (opts.beforeclose && typeof opts.beforeclose === 'function') { dfd = opts.beforeclose(); if (!dfd || !dfd.promise) { dfd = !dfd? $.Deferred().reject() : $.Deferred().resolve(); } } else { dfd = $.Deferred().resolve(); } dfd.done(function() { syncSize.enabled && elfNode.off('resize.'+fm.namespace, syncFunc); if (opts.closeOnEscape) { $(document).off('keyup.'+id); } if (opts.allowMaximize) { fm.toggleMaximize(dialog, false); } fm.toHide(dialog); dialog.data('modal') && fm.getUI('overlay').elfinderoverlay('hide'); if (typeof(opts.close) == 'function') { $.proxy(opts.close, self[0])(); } if (opts.destroyOnClose && dialog.parent().length) { dialog.hide().remove(); } // get focus to next dialog dialogs = elfNode.children('.'+cldialog+':visible'); dialog.hasClass(fm.res('class', 'editing')) && checkEditing(); }); }) .on('totop frontmost', function() { var s = fm.storage('autoFocusDialog'); dialog.data('focusOnMouseOver', s? (s > 0) : fm.options.uiOptions.dialog.focusOnMouseOver); if (dialog.data('minimized')) { titlebar.children('.elfinder-titlebar-minimize').trigger('mousedown'); } if (!dialog.data('modal') && fm.getUI('overlay').is(':visible')) { fm.getUI('overlay').before(dialog); } else { fm.toFront(dialog); } elfNode.children('.'+cldialog+':not(.'+clmodal+')').removeClass(clactive); dialog.addClass(clactive); ! fm.UA.Mobile && (toFocusNode || tabstopNext()).trigger('focus'); toFocusNode = void(0); }) .on('posinit', function() { var css = opts.position, nodeOffset, minTop, minLeft, outerSize, win, winSize, nodeFull; if (dialog.hasClass('elfinder-maximized')) { return; } if (! css && ! dialog.data('resizing')) { nodeFull = elfNode.hasClass('elfinder-fullscreen') || fm.options.enableAlways; dialog.css(nodeFull? { maxWidth : '100%', maxHeight : '100%', overflow : 'auto' } : restoreStyle); if (fm.UA.Mobile && !nodeFull && dialog.data('rotated') === fm.UA.Rotated) { return; } dialog.data('rotated', fm.UA.Rotated); win = $(window); nodeOffset = elfNode.offset(); outerSize = { width : dialog.outerWidth(true), height: dialog.outerHeight(true) }; outerSize.right = nodeOffset.left + outerSize.width; outerSize.bottom = nodeOffset.top + outerSize.height; winSize = { scrLeft: win.scrollLeft(), scrTop : win.scrollTop(), width : win.width(), height : win.height() }; winSize.right = winSize.scrLeft + winSize.width; winSize.bottom = winSize.scrTop + winSize.height; if (fm.options.dialogContained || nodeFull) { minTop = 0; minLeft = 0; } else { minTop = nodeOffset.top * -1 + winSize.scrTop; minLeft = nodeOffset.left * -1 + winSize.scrLeft; } css = { top : outerSize.height >= winSize.height? minTop : Math.max(minTop, parseInt((elfNode.height() - outerSize.height)/2 - 42)), left : outerSize.width >= winSize.width ? minLeft : Math.max(minLeft, parseInt((elfNode.width() - outerSize.width)/2)) }; if (outerSize.right + css.left > winSize.right) { css.left = Math.max(minLeft, winSize.right - outerSize.right); } if (outerSize.bottom + css.top > winSize.bottom) { css.top = Math.max(minTop, winSize.bottom - outerSize.bottom); } } if (opts.absolute) { css.position = 'absolute'; } css && dialog.css(css); }) .on('resize', function(e, data) { var oh = 0, init = data && data.init, h, minH, maxH, autoH; if ((data && (data.minimize || data.maxmize)) || dialog.data('minimized')) { return; } e.stopPropagation(); e.preventDefault(); dialog.children('.ui-widget-header,.ui-dialog-buttonpane').each(function() { oh += $(this).outerHeight(true); }); autoH = (opts.height === 'auto')? true : false; if (autoH) { self.css({'max-height': '', 'height': 'auto'}); } if (!init && syncSize.enabled && !e.originalEvent && !dialog.hasClass('elfinder-maximized')) { h = dialog.height(); minH = dialog.css('min-height') || h; maxH = dialog.css('max-height') || h; if (minH.match(/%/)) { minH = Math.floor((parseInt(minH) / 100) * dialog.parent().height()); } else { minH = parseInt(minH); } if (maxH.match(/%/)) { maxH = Math.floor((parseInt(maxH) / 100) * dialog.parent().height()); } else { maxH = parseInt(maxH); } h = Math.min((autoH? dialog.height() : syncSize.defaultSize.height), Math.max(maxH, minH) - oh - dialog.data('margin-y')); } else { h = dialog.height() - oh - dialog.data('margin-y'); } self.css(autoH? 'max-height' : 'height', h); if (init) { return; } posCheck(); minH = self.height(); minH = (h < minH)? (minH + oh + dialog.data('margin-y')) : opts.minHeight; dialog.css('min-height', minH); dialog.data('hasResizable') && dialog.resizable('option', { minHeight: minH }); if (typeof(opts.resize) === 'function') { $.proxy(opts.resize, self[0])(e, data); } }) .on('tabstopsInit', tabstopsInit) .on('focus', '.'+cltabstop, function() { $(this).addClass(clhover).parent('label').addClass(clhover); this.id && $(this).parent().find('label[for='+this.id+']').addClass(clhover); }) .on('click', 'select.'+cltabstop, function() { var node = $(this); node.data('keepFocus')? node.removeData('keepFocus') : node.data('keepFocus', true); }) .on('blur', '.'+cltabstop, function() { $(this).removeClass(clhover).removeData('keepFocus').parent('label').removeClass(clhover); this.id && $(this).parent().find('label[for='+this.id+']').removeClass(clhover); }) .on('mouseenter mouseleave', '.'+cltabstop+',label', function(e) { var $this = $(this), labelfor; if (this.nodeName === 'LABEL') { if (!$this.children('.'+cltabstop).length && (!(labelfor = $this.attr('for')) || !$('#'+labelfor).hasClass(cltabstop))) { return; } } if (opts.btnHoverFocus && dialog.data('focusOnMouseOver')) { if (e.type === 'mouseenter' && ! $(':focus').data('keepFocus')) { $this.trigger('focus'); } } else { $this.toggleClass(clhover, e.type == 'mouseenter'); } }) .on('keydown', '.'+cltabstop, function(e) { var $this = $(this), esc, move, moveTo; if ($this.is(':focus')) { esc = e.keyCode === $.ui.keyCode.ESCAPE; if (e.keyCode === $.ui.keyCode.ENTER) { e.preventDefault(); $this.trigger('click'); } else if (((e.keyCode === $.ui.keyCode.TAB) && e.shiftKey) || e.keyCode === $.ui.keyCode.LEFT || e.keyCode == $.ui.keyCode.UP) { move = 'prev'; } else if (e.keyCode === $.ui.keyCode.TAB || e.keyCode == $.ui.keyCode.RIGHT || e.keyCode == $.ui.keyCode.DOWN) { move = 'next'; } if (move && ( ($this.is('textarea') && !(e.ctrlKey || e.metaKey)) || ($this.is('select,span.ui-slider-handle') && e.keyCode !== $.ui.keyCode.TAB) || ($this.is('input:not(:checkbox,:radio)') && (!(e.ctrlKey || e.metaKey) && e.keyCode === $.ui.keyCode[move === 'prev'? 'LEFT':'RIGHT'])) ) ) { e.stopPropagation(); return; } if (!esc) { e.stopPropagation(); } else if ($this.is('input:not(:checkbox,:radio),textarea')) { if ($this.val() !== '') { $this.val(''); e.stopPropagation(); } } if (move) { e.preventDefault(); (move === 'prev'? tabstopPrev : tabstopNext)(this).trigger('focus'); } } }) .data({modal: opts.modal}), posCheck = function() { var node = fm.getUI(), pos; if (node.hasClass('elfinder-fullscreen')) { pos = dialog.position(); dialog.css('top', Math.max(Math.min(Math.max(pos.top, 0), node.height() - 100), 0)); dialog.css('left', Math.max(Math.min(Math.max(pos.left, 0), node.width() - 200), 0)); } }, maxSize, toFocusNode; dialog.prepend(titlebar); makeHeaderBtn(); $.each(opts.buttons, function(name, cb) { var button = $('') .on('click', $.proxy(cb, self[0])); if (cb._cssClass) { button.addClass(cb._cssClass); } if (platformWin) { buttonset.append(button); } else { buttonset.prepend(button); } }); if (buttonset.children().length) { dialog.append(buttonpane); dialog.show(); buttonpane.find('button').each(function(i, btn) { btnWidth += $(btn).outerWidth(true); }); dialog.hide(); btnWidth += 20; if (dialog.width() < btnWidth) { dialog.width(btnWidth); } } dialog.append(evCover); if (syncSize.enabled) { delta.width = dialog.outerWidth(true) - dialog.width() + ((dialog.outerWidth() - dialog.width()) / 2); delta.height = dialog.outerHeight(true) - dialog.height() + ((dialog.outerHeight() - dialog.height()) / 2); } if (fm.options.dialogContained) { maxSize = { maxWidth: elfNode.width() - delta.width, maxHeight: elfNode.height() - delta.height }; opts.maxWidth = opts.maxWidth? Math.min(maxSize.maxWidth, opts.maxWidth) : maxSize.maxWidth; opts.maxHeight = opts.maxHeight? Math.min(maxSize.maxHeight, opts.maxHeight) : maxSize.maxHeight; dialog.css(maxSize); } restoreStyle = { maxWidth : dialog.css('max-width'), maxHeight : dialog.css('max-height'), overflow : dialog.css('overflow') }; if (opts.resizable) { dialog.resizable({ minWidth : opts.minWidth, minHeight : opts.minHeight, maxWidth : opts.maxWidth, maxHeight : opts.maxHeight, start : function() { evCover.show(); if (dialog.data('resizing') !== true && dialog.data('resizing')) { clearTimeout(dialog.data('resizing')); } dialog.data('resizing', true); }, stop : function(e, ui) { evCover.hide(); dialog.data('resizing', setTimeout(function() { dialog.data('resizing', false); }, 200)); if (syncSize.enabled) { syncSize.defaultSize = { width: self.width(), height: self.height() }; } } }).data('hasResizable', true); } numberToTel(); tabstopsInit(); typeof(opts.create) == 'function' && $.proxy(opts.create, this)(); if (opts.autoOpen) { if (opts.open) { requestAnimationFrame(function() { self.elfinderdialog('open'); }); } else { self.elfinderdialog('open'); } } if (opts.resize) { fm.bind('themechange', function() { setTimeout(function() { dialog.data('margin-y', self.outerHeight(true) - self.height()); dialog.trigger('resize', {init: true}); }, 300); }); } }); return this; }; $.fn.elfinderdialog.defaults = { cssClass : '', title : '', modal : false, resizable : true, autoOpen : true, closeOnEscape : true, destroyOnClose : false, buttons : {}, btnHoverFocus : true, position : null, absolute : false, width : 320, height : 'auto', minWidth : 200, minHeight : 70, maxWidth : null, maxHeight : null, allowMinimize : 'auto', allowMaximize : false, openMaximized : false, headerBtnPos : 'auto', headerBtnOrder : 'auto', optimizeNumber : true, propagationEvents : ['mousemove', 'mouseup'] }; plugins/file-manager-advanced/application/library/js/ui/fullscreenbutton.js000064400000001160147176754550023276 0ustar00/** * @class elFinder toolbar button to switch full scrren mode. * * @author Naoki Sawada **/ $.fn.elfinderfullscreenbutton = function(cmd) { "use strict"; return this.each(function() { var button = $(this).elfinderbutton(cmd), icon = button.children('.elfinder-button-icon'), tm; cmd.change(function() { tm && cancelAnimationFrame(tm); tm = requestAnimationFrame(function() { var fullscreen = cmd.value; icon.addClass('elfinder-button-icon-fullscreen').toggleClass('elfinder-button-icon-unfullscreen', fullscreen); cmd.className = fullscreen? 'unfullscreen' : ''; }); }); }); }; plugins/file-manager-advanced/application/library/js/ui/navbar.js000064400000012274147176754550021161 0ustar00/** * @class elfindernav - elFinder container for diretories tree and places * * @author Dmitry (dio) Levashov **/ $.fn.elfindernavbar = function(fm, opts) { "use strict"; this.not('.elfinder-navbar').each(function() { var nav = $(this).hide().addClass('ui-state-default elfinder-navbar'), parent = nav.css('overflow', 'hidden').parent(), wz = parent.children('.elfinder-workzone').append(nav), ltr = fm.direction == 'ltr', delta, deltaW, handle, swipeHandle, autoHide, setWidth, navdock, setWzRect = function() { var cwd = fm.getUI('cwd'), wz = fm.getUI('workzone'), wzRect = wz.data('rectangle'), cwdOffset = cwd.offset(); wz.data('rectangle', Object.assign(wzRect, { cwdEdge: (fm.direction === 'ltr')? cwdOffset.left : cwdOffset.left + cwd.width() })); }, setDelta = function() { nav.css('overflow', 'hidden'); delta = Math.round(nav.outerHeight() - nav.height()); deltaW = Math.round(navdock.outerWidth() - navdock.innerWidth()); nav.css('overflow', 'auto'); }; fm.one('init', function() { navdock = fm.getUI('navdock'); var set = function() { setDelta(); fm.bind('wzresize', function() { var navdockH = 0; navdock.width(nav.outerWidth() - deltaW); if (navdock.children().length > 1) { navdockH = navdock.outerHeight(true); } nav.height(wz.height() - navdockH - delta); }).trigger('wzresize'); }; if (fm.cssloaded) { set(); } else { fm.one('cssloaded', set); } }) .one('opendone',function() { handle && handle.trigger('resize'); nav.css('overflow', 'auto'); }).bind('themechange', setDelta); if (fm.UA.Touch) { autoHide = fm.storage('autoHide') || {}; if (typeof autoHide.navbar === 'undefined') { autoHide.navbar = (opts.autoHideUA && opts.autoHideUA.length > 0 && $.grep(opts.autoHideUA, function(v){ return fm.UA[v]? true : false; }).length); fm.storage('autoHide', autoHide); } if (autoHide.navbar) { fm.one('init', function() { if (nav.children().length) { fm.uiAutoHide.push(function(){ nav.stop(true, true).trigger('navhide', { duration: 'slow', init: true }); }); } }); } fm.bind('load', function() { if (nav.children().length) { swipeHandle = $('
                ').hide().appendTo(wz); if (swipeHandle.css('pointer-events') !== 'none') { swipeHandle.remove(); swipeHandle = null; } } }); nav.on('navshow navhide', function(e, data) { var mode = (e.type === 'navshow')? 'show' : 'hide', duration = (data && data.duration)? data.duration : 'fast', handleW = (data && data.handleW)? data.handleW : Math.max(50, fm.getUI().width() / 10); nav.stop(true, true)[mode]({ duration: duration, step : function() { fm.trigger('wzresize'); }, complete: function() { if (swipeHandle) { if (mode === 'show') { swipeHandle.stop(true, true).hide(); } else { swipeHandle.width(handleW? handleW : ''); fm.resources.blink(swipeHandle, 'slowonce'); } } fm.trigger('navbar'+ mode); data.init && fm.trigger('uiautohide'); setWzRect(); } }); autoHide.navbar = (mode !== 'show'); fm.storage('autoHide', Object.assign(fm.storage('autoHide'), {navbar: autoHide.navbar})); }).on('touchstart', function(e) { if ($(this)['scroll' + (fm.direction === 'ltr'? 'Right' : 'Left')]() > 5) { e.originalEvent._preventSwipeX = true; } }); } if (! fm.UA.Mobile) { handle = nav.resizable({ handles : ltr ? 'e' : 'w', minWidth : opts.minWidth || 150, maxWidth : opts.maxWidth || 500, resize : function() { fm.trigger('wzresize'); }, stop : function(e, ui) { fm.storage('navbarWidth', ui.size.width); setWzRect(); } }) .on('resize scroll', function(e) { var $this = $(this), tm = $this.data('posinit'); e.preventDefault(); e.stopPropagation(); if (! ltr && e.type === 'resize') { nav.css('left', 0); } tm && cancelAnimationFrame(tm); $this.data('posinit', requestAnimationFrame(function() { var offset = (fm.UA.Opera && nav.scrollLeft())? 20 : 2; handle.css('top', 0).css({ top : parseInt(nav.scrollTop())+'px', left : ltr ? 'auto' : parseInt(nav.scrollRight() - offset) * -1, right: ltr ? parseInt(nav.scrollLeft() - offset) * -1 : 'auto' }); if (e.type === 'resize') { fm.getUI('cwd').trigger('resize'); } })); }) .children('.ui-resizable-handle').addClass('ui-front'); } if (setWidth = fm.storage('navbarWidth')) { nav.width(setWidth); } else { if (fm.UA.Mobile) { fm.one(fm.cssloaded? 'init' : 'cssloaded', function() { var set = function() { setWidth = nav.parent().width() / 2; if (nav.data('defWidth') > setWidth) { nav.width(setWidth); } else { nav.width(nav.data('defWidth')); } nav.data('width', nav.width()); fm.trigger('wzresize'); }; nav.data('defWidth', nav.width()); $(window).on('resize.' + fm.namespace, set); set(); }); } } }); return this; }; plugins/file-manager-advanced/application/library/js/ui/navdock.js000064400000010530147176754550021326 0ustar00/** * @class elfindernavdock - elFinder container for preview etc at below the navbar * * @author Naoki Sawada **/ $.fn.elfindernavdock = function(fm, opts) { "use strict"; this.not('.elfinder-navdock').each(function() { var self = $(this).hide().addClass('ui-state-default elfinder-navdock touch-punch'), node = self.parent(), wz = node.children('.elfinder-workzone').append(self), resize = function(to, h) { var curH = h || self.height(), diff = to - curH, len = Object.keys(sizeSyncs).length, calc = len? diff / len : 0, ovf; if (diff) { ovf = self.css('overflow'); self.css('overflow', 'hidden'); self.height(to); $.each(sizeSyncs, function(id, n) { n.height(n.height() + calc).trigger('resize.' + fm.namespace); }); fm.trigger('wzresize'); self.css('overflow', ovf); } }, handle = $('
                ').appendTo(self), sizeSyncs = {}, resizeFn = [], initMaxHeight = (parseInt(opts.initMaxHeight) || 50) / 100, maxHeight = (parseInt(opts.maxHeight) || 90) / 100, basicHeight, hasNode; self.data('addNode', function(cNode, opts) { var wzH = fm.getUI('workzone').height(), imaxH = wzH * initMaxHeight, curH, tH, mH; opts = Object.assign({ first: false, sizeSync: true, init: false }, opts); if (!cNode.attr('id')) { cNode.attr('id', fm.namespace+'-navdock-' + (+new Date())); } opts.sizeSync && (sizeSyncs[cNode.attr('id')] = cNode); curH = self.height(); tH = curH + cNode.outerHeight(true); if (opts.first) { handle.after(cNode); } else { self.append(cNode); } hasNode = true; self.resizable('enable').height(tH).show(); fm.trigger('wzresize'); if (opts.init) { mH = fm.storage('navdockHeight'); if (mH) { tH = mH; } else { tH = tH > imaxH? imaxH : tH; } basicHeight = tH; } resize(Math.min(tH, wzH * maxHeight)); return self; }).data('removeNode', function(nodeId, appendTo) { var cNode = $('#'+nodeId); delete sizeSyncs[nodeId]; self.height(self.height() - $('#'+nodeId).outerHeight(true)); if (appendTo) { if (appendTo === 'detach') { cNode = cNode.detach(); } else { appendTo.append(cNode); } } else { cNode.remove(); } if (self.children().length <= 1) { hasNode = false; self.resizable('disable').height(0).hide(); } fm.trigger('wzresize'); return cNode; }); if (! opts.disabled) { fm.one('init', function() { var ovf; if (fm.getUI('navbar').children().not('.ui-resizable-handle').length) { self.data('dockEnabled', true); self.resizable({ maxHeight: fm.getUI('workzone').height() * maxHeight, handles: { n: handle }, start: function(e, ui) { ovf = self.css('overflow'); self.css('overflow', 'hidden'); fm.trigger('navdockresizestart', {event: e, ui: ui}, true); }, resize: function(e, ui) { self.css('top', ''); fm.trigger('wzresize', { inNavdockResize : true }); }, stop: function(e, ui) { fm.trigger('navdockresizestop', {event: e, ui: ui}, true); self.css('top', ''); basicHeight = ui.size.height; fm.storage('navdockHeight', basicHeight); resize(basicHeight, ui.originalSize.height); self.css('overflow', ovf); } }); fm.bind('wzresize', function(e) { var minH, maxH, h; if (self.is(':visible')) { maxH = fm.getUI('workzone').height() * maxHeight; if (! e.data || ! e.data.inNavdockResize) { h = self.height(); if (maxH < basicHeight) { if (Math.abs(h - maxH) > 1) { resize(maxH); } } else { if (Math.abs(h - basicHeight) > 1) { resize(basicHeight); } } } self.resizable('option', 'maxHeight', maxH); } }).bind('themechange', function() { var oldH = Math.round(self.height()); requestAnimationFrame(function() { var curH = Math.round(self.height()), diff = oldH - curH; if (diff !== 0) { resize(self.height(), curH - diff); } }); }); } fm.bind('navbarshow navbarhide', function(e) { self[hasNode && e.type === 'navbarshow'? 'show' : 'hide'](); }); }); } }); return this; };plugins/file-manager-advanced/application/library/js/ui/overlay.js000064400000001677147176754550021376 0ustar00 $.fn.elfinderoverlay = function(opts) { "use strict"; var fm = this.parent().elfinder('instance'), o, cnt, show, hide; this.filter(':not(.elfinder-overlay)').each(function() { opts = Object.assign({}, opts); $(this).addClass('ui-front ui-widget-overlay elfinder-overlay') .hide() .on('mousedown', function(e) { e.preventDefault(); e.stopPropagation(); }) .data({ cnt : 0, show : typeof(opts.show) == 'function' ? opts.show : function() { }, hide : typeof(opts.hide) == 'function' ? opts.hide : function() { } }); }); if (opts == 'show') { o = this.eq(0); cnt = o.data('cnt') + 1; show = o.data('show'); fm.toFront(o); o.data('cnt', cnt); if (o.is(':hidden')) { o.show(); show(); } } if (opts == 'hide') { o = this.eq(0); cnt = o.data('cnt') - 1; hide = o.data('hide'); o.data('cnt', cnt); if (cnt <= 0) { o.hide(); hide(); } } return this; }; plugins/file-manager-advanced/application/library/js/ui/panel.js000064400000001045147176754550021001 0ustar00$.fn.elfinderpanel = function(fm) { "use strict"; return this.each(function() { var panel = $(this).addClass('elfinder-panel ui-state-default ui-corner-all'), margin = 'margin-'+(fm.direction == 'ltr' ? 'left' : 'right'); fm.one('load', function(e) { var navbar = fm.getUI('navbar'); panel.css(margin, parseInt(navbar.outerWidth(true))); navbar.on('resize', function(e) { e.preventDefault(); e.stopPropagation(); panel.is(':visible') && panel.css(margin, parseInt(navbar.outerWidth(true))); }); }); }); }; plugins/file-manager-advanced/application/library/js/ui/path.js000064400000012225147176754550020640 0ustar00/** * @class elFinder ui * Display current folder path in statusbar. * Click on folder name in path - open folder * * @author Dmitry (dio) Levashov **/ $.fn.elfinderpath = function(fm, options) { "use strict"; return this.each(function() { var query = '', target = '', mimes = [], place = 'statusbar', clHover= fm.res('class', 'hover'), prefix = 'path' + (elFinder.prototype.uniqueid? elFinder.prototype.uniqueid : '') + '-', wzbase = $('
                '), path = $(this).addClass('elfinder-path').html(' ') .on('mousedown', 'span.elfinder-path-dir', function(e) { var hash = $(this).attr('id').substr(prefix.length); e.preventDefault(); if (hash != fm.cwd().hash) { $(this).addClass(clHover); if (query) { fm.exec('search', query, { target: hash, mime: mimes.join(' ') }); } else { fm.trigger('select', {selected : [hash]}).exec('open', hash); } } }) .prependTo(fm.getUI('statusbar').show()), roots = $('
                ').on('click', function(e) { e.stopPropagation(); e.preventDefault(); var roots = $.map(fm.roots, function(h) { return fm.file(h); }), raw = []; $.each(roots, function(i, f) { if (! f.phash && fm.root(fm.cwd().hash, true) !== f.hash) { raw.push({ label : fm.escape(f.i18 || f.name), icon : 'home', callback : function() { fm.exec('open', f.hash); }, options : { iconClass : f.csscls || '', iconImg : f.icon || '' } }); } }); fm.trigger('contextmenu', { raw: raw, x: e.pageX, y: e.pageY }); }).append('').appendTo(wzbase), render = function(cwd) { var dirs = [], names = []; $.each(fm.parents(cwd), function(i, hash) { var c = (cwd === hash)? 'elfinder-path-dir elfinder-path-cwd' : 'elfinder-path-dir', f = fm.file(hash), name = fm.escape(f.i18 || f.name); names.push(name); dirs.push(''+name+''); }); return dirs.join(''+fm.option('separator')+''); }, toWorkzone = function() { var prev; path.children('span.elfinder-path-dir').attr('style', ''); prev = fm.direction === 'ltr'? $('#'+prefix + fm.cwd().hash).prevAll('span.elfinder-path-dir:first') : $(); path.scrollLeft(prev.length? prev.position().left : 0); }, fit = function() { if (fm.UA.CSS.flex) { return; } var dirs = path.children('span.elfinder-path-dir'), cnt = dirs.length, m, bg = 0, ids; if (place === 'workzone' || cnt < 2) { dirs.attr('style', ''); return; } path.width(path.css('max-width')); dirs.css({maxWidth: (100/cnt)+'%', display: 'inline-block'}); m = path.width() - 9; path.children('span.elfinder-path-other').each(function() { m -= $(this).width(); }); ids = []; dirs.each(function(i) { var dir = $(this), w = dir.width(); m -= w; if (w < this.scrollWidth) { ids.push(i); } }); path.width(''); if (ids.length) { if (m > 0) { m = m / ids.length; $.each(ids, function(i, k) { var d = $(dirs[k]); d.css('max-width', d.width() + m); }); } dirs.last().attr('style', ''); } else { dirs.attr('style', ''); } }, hasUiTree, hasUiStat; fm.one('init', function() { hasUiTree = fm.getUI('tree').length; hasUiStat = fm.getUI('stat').length; if (! hasUiTree && options.toWorkzoneWithoutNavbar) { wzbase.append(path).insertBefore(fm.getUI('workzone')); place = 'workzone'; fm.bind('open', toWorkzone) .one('opendone', function() { fm.getUI().trigger('resize'); }); } }) .bind('open searchend parents', function() { var dirs = []; query = ''; target = ''; mimes = []; path.html(render(fm.cwd().hash)); if (Object.keys(fm.roots).length > 1) { path.css('margin', ''); roots.show(); } else { path.css('margin', 0); roots.hide(); } !hasUiStat && fit(); }) .bind('searchstart', function(e) { if (e.data) { query = e.data.query || ''; target = e.data.target || ''; mimes = e.data.mimes || []; } }) .bind('search', function(e) { var dirs = [], html = ''; if (target) { html = render(target); } else { html = fm.i18n('btnAll'); } path.html(''+fm.i18n('searcresult') + ': ' + html); fit(); }) // on swipe to navbar show/hide .bind('navbarshow navbarhide', function() { var wz = fm.getUI('workzone'); if (this.type === 'navbarshow') { fm.unbind('open', toWorkzone); path.prependTo(fm.getUI('statusbar')); wzbase.detach(); place = 'statusbar'; } else { wzbase.append(path).insertBefore(wz); place = 'workzone'; toWorkzone(); fm.bind('open', toWorkzone); } fm.trigger('uiresize'); }) .bind('resize uistatchange', fit); }); }; plugins/file-manager-advanced/application/library/js/ui/places.js000064400000040002147176754550021145 0ustar00/** * @class elFinder places/favorites ui * * @author Dmitry (dio) Levashov * @author Naoki Sawada **/ $.fn.elfinderplaces = function(fm, opts) { "use strict"; return this.each(function() { var dirs = {}, c = 'class', navdir = fm.res(c, 'navdir'), collapsed = fm.res(c, 'navcollapse'), expanded = fm.res(c, 'navexpand'), hover = fm.res(c, 'hover'), clroot = fm.res(c, 'treeroot'), dropover = fm.res(c, 'adroppable'), tpl = fm.res('tpl', 'placedir'), ptpl = fm.res('tpl', 'perms'), spinner = $(fm.res('tpl', 'navspinner')), suffix = opts.suffix? opts.suffix : '', key = 'places' + suffix, menuTimer = null, /** * Convert places dir node into dir hash * * @param String directory id * @return String **/ id2hash = function(id) { return id.substr(6); }, /** * Convert places dir hash into dir node id * * @param String directory id * @return String **/ hash2id = function(hash) { return 'place-'+hash; }, /** * Convert places dir hash into dir node elment (jQuery object) * * @param String directory id * @return Object **/ hash2elm = function(hash) { return $(document.getElementById(hash2id(hash))); }, /** * Save current places state * * @return void **/ save = function() { var hashes = [], data = {}; hashes = $.map(subtree.children().find('[id]'), function(n) { return id2hash(n.id); }); if (hashes.length) { $.each(hashes.reverse(), function(i, h) { data[h] = dirs[h]; }); } else { data = null; } fm.storage(key, data); }, /** * Init dir at places * * @return void **/ init = function() { var dat, hashes; key = 'places'+(opts.suffix? opts.suffix : ''), dirs = {}; dat = fm.storage(key); if (typeof dat === 'string') { // old data type elFinder <= 2.1.12 dat = $.grep(dat.split(','), function(hash) { return hash? true : false;}); $.each(dat, function(i, d) { var dir = d.split('#'); dirs[dir[0]] = dir[1]? dir[1] : dir[0]; }); } else if ($.isPlainObject(dat)) { dirs = dat; } // allow modify `dirs` /** * example for preset places * * elfinderInstance.bind('placesload', function(e, fm) { * //if (fm.storage(e.data.storageKey) === null) { // for first time only * if (!fm.storage(e.data.storageKey)) { // for empty places * e.data.dirs[targetHash] = fallbackName; // preset folder * } * } **/ fm.trigger('placesload', {dirs: dirs, storageKey: key}, true); hashes = Object.keys(dirs); if (hashes.length) { root.prepend(spinner); fm.request({ data : {cmd : 'info', targets : hashes}, preventDefault : true }) .done(function(data) { var exists = {}; data.files && data.files.length && fm.cache(data.files); $.each(data.files, function(i, f) { var hash = f.hash; exists[hash] = f; }); $.each(dirs, function(h, f) { add(exists[h] || Object.assign({notfound: true}, f)); }); if (fm.storage('placesState') > 0) { root.trigger('click'); } }) .always(function() { spinner.remove(); }); } }, /** * Return node for given dir object * * @param Object directory object * @return jQuery **/ create = function(dir, hash) { return $(tpl.replace(/\{id\}/, hash2id(dir? dir.hash : hash)) .replace(/\{name\}/, fm.escape(dir? dir.i18 || dir.name : hash)) .replace(/\{cssclass\}/, dir? (fm.perms2class(dir) + (dir.notfound? ' elfinder-na' : '') + (dir.csscls? ' '+dir.csscls : '')) : '') .replace(/\{permissions\}/, (dir && (!dir.read || !dir.write || dir.notfound))? ptpl : '') .replace(/\{title\}/, dir? (' title="' + fm.escape(fm.path(dir.hash, true) || dir.i18 || dir.name) + '"') : '') .replace(/\{symlink\}/, '') .replace(/\{style\}/, (dir && dir.icon)? fm.getIconStyle(dir) : '')); }, /** * Add new node into places * * @param Object directory object * @return void **/ add = function(dir) { var node, hash; if (dir.mime !== 'directory') { return false; } hash = dir.hash; if (!fm.files().hasOwnProperty(hash)) { // update cache fm.trigger('tree', {tree: [dir]}); } node = create(dir, hash); dirs[hash] = dir; subtree.prepend(node); root.addClass(collapsed); sortBtn.toggle(subtree.children().length > 1); return true; }, /** * Remove dir from places * * @param String directory hash * @return String removed name **/ remove = function(hash) { var name = null, tgt, cnt; if (dirs[hash]) { delete dirs[hash]; tgt = hash2elm(hash); if (tgt.length) { name = tgt.text(); tgt.parent().remove(); cnt = subtree.children().length; sortBtn.toggle(cnt > 1); if (! cnt) { root.removeClass(collapsed); places.removeClass(expanded); subtree.slideToggle(false); } } } return name; }, /** * Move up dir on places * * @param String directory hash * @return void **/ moveup = function(hash) { var self = hash2elm(hash), tgt = self.parent(), prev = tgt.prev('div'), cls = 'ui-state-hover', ctm = fm.getUI('contextmenu'); menuTimer && clearTimeout(menuTimer); if (prev.length) { ctm.find(':first').data('placesHash', hash); self.addClass(cls); tgt.insertBefore(prev); prev = tgt.prev('div'); menuTimer = setTimeout(function() { self.removeClass(cls); if (ctm.find(':first').data('placesHash') === hash) { ctm.hide().empty(); } }, 1500); } if(!prev.length) { self.removeClass(cls); ctm.hide().empty(); } }, /** * Update dir at places * * @param Object directory * @param String previous hash * @return Boolean **/ update = function(dir, preHash) { var hash = dir.hash, tgt = hash2elm(preHash || hash), node = create(dir, hash); if (tgt.length > 0) { tgt.parent().replaceWith(node); dirs[hash] = dir; return true; } else { return false; } }, /** * Remove all dir from places * * @return void **/ clear = function() { subtree.empty(); root.removeClass(collapsed); places.removeClass(expanded); subtree.slideToggle(false); }, /** * Sort places dirs A-Z * * @return void **/ sort = function() { $.each(dirs, function(h, f) { var dir = fm.file(h) || f, node = create(dir, h), ret = null; if (!dir) { node.hide(); } if (subtree.children().length) { $.each(subtree.children(), function() { var current = $(this); if ((dir.i18 || dir.name).localeCompare(current.children('.'+navdir).text()) < 0) { ret = !node.insertBefore(current); return ret; } }); if (ret !== null) { return true; } } !hash2elm(h).length && subtree.append(node); }); save(); }, // sort button sortBtn = $('') .hide() .on('click', function(e) { e.stopPropagation(); subtree.empty(); sort(); } ), /** * Node - wrapper for places root * * @type jQuery **/ wrapper = create({ hash : 'root-'+fm.namespace, name : fm.i18n(opts.name, 'places'), read : true, write : true }), /** * Places root node * * @type jQuery **/ root = wrapper.children('.'+navdir) .addClass(clroot) .on('click', function(e) { e.stopPropagation(); if (root.hasClass(collapsed)) { places.toggleClass(expanded); subtree.slideToggle(); fm.storage('placesState', places.hasClass(expanded)? 1 : 0); } }) .append(sortBtn), /** * Container for dirs * * @type jQuery **/ subtree = wrapper.children('.'+fm.res(c, 'navsubtree')), /** * Main places container * * @type jQuery **/ places = $(this).addClass(fm.res(c, 'tree')+' elfinder-places ui-corner-all') .hide() .append(wrapper) .appendTo(fm.getUI('navbar')) .on('mouseenter mouseleave', '.'+navdir, function(e) { $(this).toggleClass('ui-state-hover', (e.type == 'mouseenter')); }) .on('click', '.'+navdir, function(e) { var p = $(this); if (p.data('longtap')) { e.stopPropagation(); return; } ! p.hasClass('elfinder-na') && fm.exec('open', p.attr('id').substr(6)); }) .on('contextmenu', '.'+navdir+':not(.'+clroot+')', function(e) { var self = $(this), hash = self.attr('id').substr(6); e.preventDefault(); fm.trigger('contextmenu', { raw : [{ label : fm.i18n('moveUp'), icon : 'up', remain : true, callback : function() { moveup(hash); save(); } },'|',{ label : fm.i18n('rmFromPlaces'), icon : 'rm', callback : function() { remove(hash); save(); } }], 'x' : e.pageX, 'y' : e.pageY }); self.addClass('ui-state-hover'); fm.getUI('contextmenu').children().on('mouseenter', function() { self.addClass('ui-state-hover'); }); fm.bind('closecontextmenu', function() { self.removeClass('ui-state-hover'); }); }) .droppable({ tolerance : 'pointer', accept : '.elfinder-cwd-file-wrapper,.elfinder-tree-dir,.elfinder-cwd-file', hoverClass : fm.res('class', 'adroppable'), classes : { // Deprecated hoverClass jQueryUI>=1.12.0 'ui-droppable-hover': fm.res('class', 'adroppable') }, over : function(e, ui) { var helper = ui.helper, dir = $.grep(helper.data('files'), function(h) { return (fm.file(h).mime === 'directory' && !dirs[h])? true : false; }); e.stopPropagation(); helper.data('dropover', helper.data('dropover') + 1); if (fm.insideWorkzone(e.pageX, e.pageY)) { if (dir.length > 0) { helper.addClass('elfinder-drag-helper-plus'); fm.trigger('unlockfiles', {files : helper.data('files'), helper: helper}); } else { $(this).removeClass(dropover); } } }, out : function(e, ui) { var helper = ui.helper; e.stopPropagation(); helper.removeClass('elfinder-drag-helper-move elfinder-drag-helper-plus').data('dropover', Math.max(helper.data('dropover') - 1, 0)); $(this).removeData('dropover') .removeClass(dropover); }, drop : function(e, ui) { var helper = ui.helper, resolve = true; $.each(helper.data('files'), function(i, hash) { var dir = fm.file(hash); if (dir && dir.mime == 'directory' && !dirs[dir.hash]) { add(dir); } else { resolve = false; } }); save(); resolve && helper.hide(); } }) // for touch device .on('touchstart', '.'+navdir+':not(.'+clroot+')', function(e) { if (e.originalEvent.touches.length > 1) { return; } var hash = $(this).attr('id').substr(6), p = $(this) .addClass(hover) .data('longtap', null) .data('tmlongtap', setTimeout(function(){ // long tap p.data('longtap', true); fm.trigger('contextmenu', { raw : [{ label : fm.i18n('rmFromPlaces'), icon : 'rm', callback : function() { remove(hash); save(); } }], 'x' : e.originalEvent.touches[0].pageX, 'y' : e.originalEvent.touches[0].pageY }); }, 500)); }) .on('touchmove touchend', '.'+navdir+':not(.'+clroot+')', function(e) { clearTimeout($(this).data('tmlongtap')); if (e.type == 'touchmove') { $(this).removeClass(hover); } }); if ($.fn.sortable) { subtree.addClass('touch-punch') .sortable({ appendTo : fm.getUI(), revert : false, helper : function(e) { var dir = $(e.target).parent(); dir.children().removeClass('ui-state-hover'); return $('
                ') .append($('
                ').show().append(dir.clone())); }, stop : function(e, ui) { var target = $(ui.item[0]), top = places.offset().top, left = places.offset().left, width = places.width(), height = places.height(), x = e.pageX, y = e.pageY; if (!(x > left && x < left+width && y > top && y < y+height)) { remove(id2hash(target.children(':first').attr('id'))); save(); } }, update : function(e, ui) { save(); } }); } // "on regist" for command exec $(this).on('regist', function(e, files){ var added = false; $.each(files, function(i, dir) { if (dir && dir.mime == 'directory' && !dirs[dir.hash]) { if (add(dir)) { added = true; } } }); added && save(); }); // on fm load - show places and load files from backend fm.one('load', function() { var dat, hashes; if (fm.oldAPI) { return; } places.show().parent().show(); init(); fm.change(function(e) { var changed = false; $.each(e.data.changed, function(i, file) { if (dirs[file.hash]) { if (file.mime !== 'directory') { if (remove(file.hash)) { changed = true; } } else { if (update(file)) { changed = true; } } } }); changed && save(); }) .bind('rename', function(e) { var changed = false; if (e.data.removed) { $.each(e.data.removed, function(i, hash) { if (e.data.added[i]) { if (update(e.data.added[i], hash)) { changed = true; } } }); } changed && save(); }) .bind('rm paste', function(e) { var names = [], changed = false; if (e.data.removed) { $.each(e.data.removed, function(i, hash) { var name = remove(hash); name && names.push(name); }); } if (names.length) { changed = true; } if (e.data.added && names.length) { $.each(e.data.added, function(i, file) { if ($.inArray(file.name, names) !== 1) { file.mime == 'directory' && add(file); } }); } changed && save(); }) .bind('sync netmount', function() { var ev = this, opSuffix = opts.suffix? opts.suffix : '', hashes; if (ev.type === 'sync') { // check is change of opts.suffix if (suffix !== opSuffix) { suffix = opSuffix; clear(); init(); return; } } hashes = Object.keys(dirs); if (hashes.length) { root.prepend(spinner); fm.request({ data : {cmd : 'info', targets : hashes}, preventDefault : true }) .done(function(data) { var exists = {}, updated = false, cwd = fm.cwd().hash; $.each(data.files || [], function(i, file) { var hash = file.hash; exists[hash] = file; if (!fm.files().hasOwnProperty(file.hash)) { // update cache fm.updateCache({tree: [file]}); } }); $.each(dirs, function(h, f) { if (Boolean(f.notfound) === Boolean(exists[h])) { if ((f.phash === cwd && ev.type !== 'netmount') || (exists[h] && exists[h].mime !== 'directory')) { if (remove(h)) { updated = true; } } else { if (update(exists[h] || Object.assign({notfound: true}, f))) { updated = true; } } } else if (exists[h] && exists[h].phash != cwd) { // update permission of except cwd update(exists[h]); } }); updated && save(); }) .always(function() { spinner.remove(); }); } }); }); }); }; plugins/file-manager-advanced/application/library/js/ui/searchbutton.js000064400000023624147176754550022412 0ustar00/** * @class elFinder toolbar search button widget. * * @author Dmitry (dio) Levashov **/ $.fn.elfindersearchbutton = function(cmd) { "use strict"; return this.each(function() { var result = false, fm = cmd.fm, disabled = fm.res('class', 'disabled'), isopts = cmd.options.incsearch || { enable: false }, sTypes = cmd.options.searchTypes, id = function(name){return fm.namespace + fm.escape(name);}, toolbar= fm.getUI('toolbar'), btnCls = fm.res('class', 'searchbtn'), button = $(this) .hide() .addClass('ui-widget-content elfinder-button '+btnCls) .on('click', function(e) { e.stopPropagation(); }), getMenuOffset = function() { var fmNode = fm.getUI(), baseOffset = fmNode.offset(), buttonOffset = button.offset(); return { top : buttonOffset.top - baseOffset.top, maxHeight : fmNode.height() - 40 }; }, search = function() { input.data('inctm') && clearTimeout(input.data('inctm')); var val = $.trim(input.val()), from = !$('#' + id('SearchFromAll')).prop('checked'), mime = $('#' + id('SearchMime')).prop('checked'), type = ''; if (from) { if ($('#' + id('SearchFromVol')).prop('checked')) { from = fm.root(fm.cwd().hash); } else { from = fm.cwd().hash; } } if (mime) { mime = val; val = '.'; } if (typeSet) { type = typeSet.children('input:checked').val(); } if (val) { input.trigger('focus'); cmd.exec(val, from, mime, type).done(function() { result = true; }).fail(function() { abort(); }); } else { fm.trigger('searchend'); } }, abort = function() { input.data('inctm') && clearTimeout(input.data('inctm')); input.val('').trigger('blur'); if (result || incVal) { result = false; incVal = ''; fm.lazy(function() { fm.trigger('searchend'); }); } }, incVal = '', input = $('') .on('focus', function() { // close other menus !button.hasClass('ui-state-active') && fm.getUI().click(); inFocus = true; incVal = ''; button.addClass('ui-state-active'); fm.trigger('uiresize'); opts && opts.css(getMenuOffset()).slideDown(function() { // Care for on browser window re-active button.addClass('ui-state-active'); fm.toFront(opts); }); }) .on('blur', function() { inFocus = false; if (opts) { if (!opts.data('infocus')) { opts.slideUp(function() { button.removeClass('ui-state-active'); fm.trigger('uiresize'); fm.toHide(opts); }); } else { opts.data('infocus', false); } } else { button.removeClass('ui-state-active'); } }) .appendTo(button) // to avoid fm shortcuts on arrows .on('keypress', function(e) { e.stopPropagation(); }) .on('keydown', function(e) { e.stopPropagation(); if (e.keyCode === $.ui.keyCode.ENTER) { search(); } else if (e.keyCode === $.ui.keyCode.ESCAPE) { e.preventDefault(); abort(); } }), opts, typeSet, cwdReady, inFocus; if (isopts.enable) { isopts.minlen = isopts.minlen || 2; isopts.wait = isopts.wait || 500; input .attr('title', fm.i18n('incSearchOnly')) .on('compositionstart', function() { input.data('composing', true); }) .on('compositionend', function() { input.removeData('composing'); input.trigger('input'); // for IE, edge }) .on('input', function() { if (! input.data('composing')) { input.data('inctm') && clearTimeout(input.data('inctm')); input.data('inctm', setTimeout(function() { var val = input.val(); if (val.length === 0 || val.length >= isopts.minlen) { (incVal !== val) && fm.trigger('incsearchstart', { query: val, type: typeSet? typeSet.children('input:checked').val() : 'searchName' }); incVal = val; if (val === '' && fm.searchStatus.state > 1 && fm.searchStatus.query) { input.val(fm.searchStatus.query).trigger('select'); } } }, isopts.wait)); } }); if (fm.UA.ltIE8) { input.on('keydown', function(e) { if (e.keyCode === 229) { input.data('imetm') && clearTimeout(input.data('imetm')); input.data('composing', true); input.data('imetm', setTimeout(function() { input.removeData('composing'); }, 100)); } }) .on('keyup', function(e) { input.data('imetm') && clearTimeout(input.data('imetm')); if (input.data('composing')) { e.keyCode === $.ui.keyCode.ENTER && input.trigger('compositionend'); } else { input.trigger('input'); } }); } } $('') .appendTo(button) .on('mousedown', function(e) { e.stopPropagation(); e.preventDefault(); if (button.hasClass('ui-state-active')) { search(); } else { input.trigger('focus'); } }); $('') .appendTo(button) .on('mousedown', function(e) { e.stopPropagation(); e.preventDefault(); if (input.val() === '' && !button.hasClass('ui-state-active')) { input.trigger('focus'); } else { abort(); } }); // wait when button will be added to DOM fm.bind('toolbarload', function(){ var parent = button.parent(); if (parent.length) { toolbar.prepend(button.show()); parent.remove(); // position icons for ie7 if (fm.UA.ltIE7) { var icon = button.children(fm.direction == 'ltr' ? '.ui-icon-close' : '.ui-icon-search'); icon.css({ right : '', left : parseInt(button.width())-icon.outerWidth(true) }); } } }); fm .one('init', function() { fm.getUI('cwd').on('touchstart click', function() { inFocus && input.trigger('blur'); }); }) .one('open', function() { opts = (fm.api < 2.1)? null : $('
                ') .append( $('
                ') .append( $(''), $(''), $('') ), $('
                ') .append( $('') ) ) .hide() .appendTo(fm.getUI()); if (opts) { if (sTypes) { typeSet = opts.find('.elfinder-search-type'); $.each(cmd.options.searchTypes, function(i, v) { typeSet.append($('')); }); } opts.find('div.buttonset').buttonset(); $('#'+id('SearchFromAll')).next('label').attr('title', fm.i18n('searchTarget', fm.i18n('btnAll'))); if (sTypes) { $.each(sTypes, function(i, v) { if (v.title) { $('#'+id(i)).next('label').attr('title', fm.i18n(v.title)); } }); } opts.on('mousedown', 'div.buttonset', function(e){ e.stopPropagation(); opts.data('infocus', true); }) .on('click', 'input', function(e) { e.stopPropagation(); $.trim(input.val())? search() : input.trigger('focus'); }) .on('close', function() { input.trigger('blur'); }); } }) .bind('searchend', function() { input.val(''); }) .bind('open parents', function() { var dirs = [], volroot = fm.file(fm.root(fm.cwd().hash)); if (volroot) { $.each(fm.parents(fm.cwd().hash), function(i, hash) { dirs.push(fm.file(hash).name); }); $('#'+id('SearchFromCwd')).next('label').attr('title', fm.i18n('searchTarget', dirs.join(fm.option('separator')))); $('#'+id('SearchFromVol')).next('label').attr('title', fm.i18n('searchTarget', volroot.name)); } }) .bind('open', function() { incVal && abort(); }) .bind('cwdinit', function() { cwdReady = false; }) .bind('cwdrender',function() { cwdReady = true; }) .bind('keydownEsc', function() { if (incVal && incVal.substr(0, 1) === '/') { incVal = ''; input.val(''); fm.trigger('searchend'); } }) .shortcut({ pattern : 'ctrl+f f3', description : cmd.title, callback : function() { input.trigger('select').trigger('focus'); } }) .shortcut({ pattern : 'a b c d e f g h i j k l m n o p q r s t u v w x y z dig0 dig1 dig2 dig3 dig4 dig5 dig6 dig7 dig8 dig9 num0 num1 num2 num3 num4 num5 num6 num7 num8 num9', description : fm.i18n('firstLetterSearch'), callback : function(e) { if (! cwdReady) { return; } var code = e.originalEvent.keyCode, next = function() { var sel = fm.selected(), key = $.ui.keyCode[(!sel.length || fm.cwdHash2Elm(sel[0]).next('[id]').length)? 'RIGHT' : 'HOME']; $(document).trigger($.Event('keydown', { keyCode: key, ctrlKey : false, shiftKey : false, altKey : false, metaKey : false })); }, val; if (code >= 96 && code <= 105) { code -= 48; } val = '/' + String.fromCharCode(code); if (incVal !== val) { input.val(val); incVal = val; fm .trigger('incsearchstart', { query: val }) .one('cwdrender', next); } else{ next(); } } }); }); }; plugins/file-manager-advanced/application/library/js/ui/sortbutton.js000064400000007164147176754550022135 0ustar00/** * @class elFinder toolbar button menu with sort variants. * * @author Dmitry (dio) Levashov **/ $.fn.elfindersortbutton = function(cmd) { "use strict"; return this.each(function() { var fm = cmd.fm, name = cmd.name, c = 'class', disabled = fm.res(c, 'disabled'), hover = fm.res(c, 'hover'), item = 'elfinder-button-menu-item', selected = item+'-selected', asc = selected+'-asc', desc = selected+'-desc', text = $(''+cmd.title+''), button = $(this).addClass('ui-state-default elfinder-button elfinder-menubutton elfiner-button-'+name) .attr('title', cmd.title) .append('', text) .on('mouseenter mouseleave', function(e) { !button.hasClass(disabled) && button.toggleClass(hover, e.type === 'mouseenter'); }) .on('click', function(e) { if (!button.hasClass(disabled)) { e.stopPropagation(); menu.is(':hidden') && fm.getUI().click(); menu.css(getMenuOffset()).slideToggle({ duration: 100, done: function(e) { fm[menu.is(':visible')? 'toFront' : 'toHide'](menu); } }); } }), hide = function() { fm.toHide(menu); }, menu = $('
                ') .hide() .appendTo(fm.getUI()) .on('mouseenter mouseleave', '.'+item, function(e) { $(this).toggleClass(hover, e.type === 'mouseenter'); }) .on('click', function(e) { e.preventDefault(); e.stopPropagation(); }) .on('close', hide), update = function() { menu.children('[rel]').removeClass(selected+' '+asc+' '+desc) .filter('[rel="'+fm.sortType+'"]') .addClass(selected+' '+(fm.sortOrder == 'asc' ? asc : desc)); menu.children('.elfinder-sort-stick').toggleClass(selected, fm.sortStickFolders); menu.children('.elfinder-sort-tree').toggleClass(selected, fm.sortAlsoTreeview); }, getMenuOffset = function() { var baseOffset = fm.getUI().offset(), buttonOffset = button.offset(); return { top : buttonOffset.top - baseOffset.top, left : buttonOffset.left - baseOffset.left }; }, tm; text.hide(); $.each(fm.sortRules, function(name, value) { menu.append($('
                '+fm.i18n('sort'+name)+'
                ').data('type', name)); }); menu.children().on('click', function(e) { cmd.exec([], $(this).removeClass(hover).attr('rel')); }); $('
                '+fm.i18n('sortFoldersFirst')+'
                ') .appendTo(menu) .on('click', function() { cmd.exec([], 'stick'); }); fm.one('init', function() { if (fm.ui.tree && fm.options.sortAlsoTreeview !== null) { $('
                '+fm.i18n('sortAlsoTreeview')+'
                ') .appendTo(menu) .on('click', function() { cmd.exec([], 'tree'); }); } }) .bind('disable select', hide) .bind('sortchange', update).getUI().on('click', hide); if (menu.children().length > 1) { cmd.change(function() { tm && cancelAnimationFrame(tm); tm = requestAnimationFrame(function() { button.toggleClass(disabled, cmd.disabled()); update(); }); }) .change(); } else { button.addClass(disabled); } }); }; plugins/file-manager-advanced/application/library/js/ui/stat.js000064400000006551147176754550020664 0ustar00/** * @class elFinder ui * Display number of files/selected files and its size in statusbar * * @author Dmitry (dio) Levashov **/ $.fn.elfinderstat = function(fm) { "use strict"; return this.each(function() { var size = $(this).addClass('elfinder-stat-size'), sel = $('
                ') .on('click', 'a', function(e) { var hash = $(this).data('hash'); e.preventDefault(); fm.exec('opendir', [ hash ]); }), titleitems = fm.i18n('items'), titlesel = fm.i18n('selected'), titlesize = fm.i18n('size'), setstat = function(files) { var c = 0, s = 0, cwd = fm.cwd(), calc = true, hasSize = true; if (cwd.sizeInfo || cwd.size) { s = cwd.size; calc = false; } $.each(files, function(i, file) { c++; if (calc) { s += parseInt(file.size) || 0; if (hasSize === true && file.mime === 'directory' && !file.sizeInfo) { hasSize = false; } } }); size.html(titleitems+': '+c+', '+fm.i18n(hasSize? 'sum' : 'size')+': '+fm.formatSize(s)+'') .attr('title', size.text()); fm.trigger('uistatchange'); }, setIncsearchStat = function(data) { size.find('span.elfinder-stat-incsearch').html(data? data.hashes.length + ' / ' : ''); size.attr('title', size.text()); fm.trigger('uistatchange'); }, setSelect = function(files) { var s = 0, c = 0, dirs = [], path, file; if (files.length === 1) { file = files[0]; s = file.size; if (fm.searchStatus.state === 2) { path = fm.escape(file.path? file.path.replace(/\/[^\/]*$/, '') : '..'); dirs.push('
                '+path+''); } dirs.push(fm.escape(file.i18 || file.name)); sel.html(dirs.join('/') + (s > 0 ? ', '+fm.formatSize(s) : '')); } else if (files.length) { $.each(files, function(i, file) { c++; s += parseInt(file.size)||0; }); sel.html(c ? titlesel+': '+c+', '+titlesize+': '+fm.formatSize(s) : ' '); } else { sel.html(''); } sel.attr('title', sel.text()); fm.trigger('uistatchange'); }; fm.getUI('statusbar').prepend(size).append(sel).show(); if (fm.UA.Mobile && $.fn.tooltip) { fm.getUI('statusbar').tooltip({ classes: { 'ui-tooltip': 'elfinder-ui-tooltip ui-widget-shadow' }, tooltipClass: 'elfinder-ui-tooltip ui-widget-shadow', track: true }); } fm .bind('cwdhasheschange', function(e) { setstat($.map(e.data, function(h) { return fm.file(h); })); }) .change(function(e) { var files = e.data.changed || [], cwdHash = fm.cwd().hash; $.each(files, function() { if (this.hash === cwdHash) { if (this.size) { size.children('.elfinder-stat-size').addClass('elfinder-stat-size-recursive').html(fm.i18n('sum')+': '+fm.formatSize(this.size)); size.attr('title', size.text()); } return false; } }); }) .select(function() { setSelect(fm.selectedFiles()); }) .bind('open', function() { setSelect([]); }) .bind('incsearch', function(e) { setIncsearchStat(e.data); }) .bind('incsearchend', function() { setIncsearchStat(); }) ; }); }; plugins/file-manager-advanced/application/library/js/ui/toast.js000064400000005136147176754550021041 0ustar00/** * @class elFinder toast * * This was created inspired by the toastr. Thanks to developers of toastr. * CodeSeven/toastr: http://johnpapa.net * * @author Naoki Sawada **/ $.fn.elfindertoast = function(opts, fm) { "use strict"; var defOpts = Object.assign({ mode: 'success', // or 'info', 'warning' and 'error' msg: '', showMethod: 'fadeIn', //fadeIn, slideDown, and show are built into jQuery showDuration: 300, showEasing: 'swing', //swing and linear are built into jQuery onShown: undefined, hideMethod: 'fadeOut', hideDuration: 1500, hideEasing: 'swing', onHidden: undefined, timeOut: 3000, extNode: undefined, button: undefined, width: undefined }, $.isPlainObject(fm.options.uiOptions.toast.defaults)? fm.options.uiOptions.toast.defaults : {}); return this.each(function() { opts = Object.assign({}, defOpts, opts || {}); var self = $(this), show = function(notm) { self.stop(); fm.toFront(self); self[opts.showMethod]({ duration: opts.showDuration, easing: opts.showEasing, complete: function() { opts.onShown && opts.onShown(); if (!notm && opts.timeOut) { rmTm = setTimeout(rm, opts.timeOut); } } }); }, rm = function() { self[opts.hideMethod]({ duration: opts.hideDuration, easing: opts.hideEasing, complete: function() { opts.onHidden && opts.onHidden(); self.remove(); } }); }, rmTm; self.on('click', function(e) { e.stopPropagation(); e.preventDefault(); rmTm && clearTimeout(rmTm); opts.onHidden && opts.onHidden(); self.stop().remove(); }).on('mouseenter mouseleave', function(e) { if (opts.timeOut) { rmTm && clearTimeout(rmTm); rmTm = null; if (e.type === 'mouseenter') { show(true); } else { rmTm = setTimeout(rm, opts.timeOut); } } }).hide().addClass('toast-' + opts.mode).append($('
                ').html(opts.msg.replace(/%([a-zA-Z0-9]+)%/g, function(m, m1) { return fm.i18n(m1); }))); if (opts.extNode) { self.append(opts.extNode); } if (opts.button) { self.append( $('') .append($('').text(fm.i18n(opts.button.text))) .on('mouseenter mouseleave', function(e) { $(this).toggleClass('ui-state-hover', e.type == 'mouseenter'); }) .on('click', opts.button.click || function(){}) ); } if (opts.width) { self.css('max-width', opts.width); } show(); }); };plugins/file-manager-advanced/application/library/js/ui/toolbar.js000064400000023372147176754550021353 0ustar00/** * @class elFinder toolbar * * @author Dmitry (dio) Levashov **/ $.fn.elfindertoolbar = function(fm, opts) { "use strict"; this.not('.elfinder-toolbar').each(function() { var commands = fm._commands, self = $(this).addClass('ui-helper-clearfix ui-widget-header elfinder-toolbar'), options = { // default options displayTextLabel: false, labelExcludeUA: ['Mobile'], autoHideUA: ['Mobile'], showPreferenceButton: 'none' }, filter = function(opts) { return $.grep(opts, function(v) { if ($.isPlainObject(v)) { options = Object.assign(options, v); return false; } return true; }); }, render = function(disabled){ var name,cmdPref; $.each(buttons, function(i, b) { b.detach(); }); self.empty(); l = panels.length; while (l--) { if (panels[l]) { panel = $('
                '); i = panels[l].length; while (i--) { name = panels[l][i]; if ((!disabled || !disabled[name]) && (cmd = commands[name])) { button = 'elfinder'+cmd.options.ui; if (! buttons[name] && $.fn[button]) { buttons[name] = $('
                ')[button](cmd); } if (buttons[name]) { buttons[name].children('.elfinder-button-text')[textLabel? 'show' : 'hide'](); panel.prepend(buttons[name]); } } } panel.children().length && self.prepend(panel); panel.children(':gt(0)').before(''); } } if (cmdPref = commands['preference']) { //cmdPref.state = !self.children().length? 0 : -1; if (options.showPreferenceButton === 'always' || (!self.children().length && options.showPreferenceButton === 'auto')) { //cmdPref.state = 0; panel = $('
                '); name = 'preference'; button = 'elfinder'+cmd.options.ui; buttons[name] = $('
                ')[button](cmdPref); buttons[name].children('.elfinder-button-text')[textLabel? 'show' : 'hide'](); panel.prepend(buttons[name]); self.append(panel); } } (! self.data('swipeClose') && self.children().length)? self.show() : self.hide(); prevHeight = self[0].clientHeight; fm.trigger('toolbarload').trigger('uiresize'); }, buttons = {}, panels = filter(opts || []), dispre = null, uiCmdMapPrev = '', prevHeight = 0, contextRaw = [], l, i, cmd, panel, button, swipeHandle, autoHide, textLabel, resizeTm; // normalize options options.showPreferenceButton = options.showPreferenceButton.toLowerCase(); if (options.displayTextLabel !== 'none') { // correction of options.displayTextLabel textLabel = fm.storage('toolbarTextLabel'); if (textLabel === null) { textLabel = (options.displayTextLabel && (! options.labelExcludeUA || ! options.labelExcludeUA.length || ! $.grep(options.labelExcludeUA, function(v){ return fm.UA[v]? true : false; }).length)); } else { textLabel = (textLabel == 1); } contextRaw.push({ label : fm.i18n('textLabel'), icon : 'text', callback : function() { textLabel = ! textLabel; self.css('height', '').find('.elfinder-button-text')[textLabel? 'show':'hide'](); fm.trigger('uiresize').storage('toolbarTextLabel', textLabel? '1' : '0'); }, }); } if (options.preferenceInContextmenu && commands['preference']) { contextRaw.push({ label : fm.i18n('toolbarPref'), icon : 'preference', callback : function() { fm.exec('preference', void(0), {tab: 'toolbar'}); } }); } // add contextmenu if (contextRaw.length) { self.on('contextmenu', function(e) { e.stopPropagation(); e.preventDefault(); fm.trigger('contextmenu', { raw: contextRaw, x: e.pageX, y: e.pageY }); }).on('touchstart', function(e) { if (e.originalEvent.touches.length > 1) { return; } self.data('tmlongtap') && clearTimeout(self.data('tmlongtap')); self.removeData('longtap') .data('longtap', {x: e.originalEvent.touches[0].pageX, y: e.originalEvent.touches[0].pageY}) .data('tmlongtap', setTimeout(function() { self.removeData('longtapTm') .trigger({ type: 'contextmenu', pageX: self.data('longtap').x, pageY: self.data('longtap').y }) .data('longtap', {longtap: true}); }, 500)); }).on('touchmove touchend', function(e) { if (self.data('tmlongtap')) { if (e.type === 'touchend' || ( Math.abs(self.data('longtap').x - e.originalEvent.touches[0].pageX) + Math.abs(self.data('longtap').y - e.originalEvent.touches[0].pageY)) > 4) clearTimeout(self.data('tmlongtap')); self.removeData('longtapTm'); } }).on('click', function(e) { if (self.data('longtap') && self.data('longtap').longtap) { e.stopImmediatePropagation(); e.preventDefault(); } }).on('touchend click', '.elfinder-button', function(e) { if (self.data('longtap') && self.data('longtap').longtap) { e.stopImmediatePropagation(); e.preventDefault(); } } ); } self.prev().length && self.parent().prepend(this); render(); fm.bind('open sync select toolbarpref', function() { var disabled = Object.assign({}, fm.option('disabledFlip')), userHides = fm.storage('toolbarhides'), doRender, sel, disabledKeys; if (! userHides && Array.isArray(options.defaultHides)) { userHides = {}; $.each(options.defaultHides, function() { userHides[this] = true; }); fm.storage('toolbarhides', userHides); } if (this.type === 'select') { if (fm.searchStatus.state < 2) { return; } sel = fm.selected(); if (sel.length) { disabled = fm.getDisabledCmds(sel, true); } } $.each(userHides, function(n) { if (!disabled[n]) { disabled[n] = true; } }); if (Object.keys(fm.commandMap).length) { $.each(fm.commandMap, function(from, to){ if (to === 'hidden') { disabled[from] = true; } }); } disabledKeys = Object.keys(disabled); if (!dispre || dispre.toString() !== disabledKeys.sort().toString()) { render(disabledKeys.length? disabled : null); doRender = true; } dispre = disabledKeys.sort(); if (doRender || uiCmdMapPrev !== JSON.stringify(fm.commandMap)) { uiCmdMapPrev = JSON.stringify(fm.commandMap); if (! doRender) { // reset toolbar $.each($('div.elfinder-button'), function(){ var origin = $(this).data('origin'); if (origin) { $(this).after(origin).detach(); } }); } if (Object.keys(fm.commandMap).length) { $.each(fm.commandMap, function(from, to){ var cmd = fm._commands[to], button = cmd? 'elfinder'+cmd.options.ui : null, btn; if (button && $.fn[button]) { btn = buttons[from]; if (btn) { if (! buttons[to] && $.fn[button]) { buttons[to] = $('
                ')[button](cmd); if (buttons[to]) { buttons[to].children('.elfinder-button-text')[textLabel? 'show' : 'hide'](); if (cmd.extendsCmd) { buttons[to].children('span.elfinder-button-icon').addClass('elfinder-button-icon-' + cmd.extendsCmd); } } } if (buttons[to]) { btn.after(buttons[to]); buttons[to].data('origin', btn.detach()); } } } }); } } }).bind('resize', function(e) { resizeTm && cancelAnimationFrame(resizeTm); resizeTm = requestAnimationFrame(function() { var h = self[0].clientHeight; if (prevHeight !== h) { prevHeight = h; fm.trigger('uiresize'); } }); }); if (fm.UA.Touch) { autoHide = fm.storage('autoHide') || {}; if (typeof autoHide.toolbar === 'undefined') { autoHide.toolbar = (options.autoHideUA && options.autoHideUA.length > 0 && $.grep(options.autoHideUA, function(v){ return fm.UA[v]? true : false; }).length); fm.storage('autoHide', autoHide); } if (autoHide.toolbar) { fm.one('init', function() { fm.uiAutoHide.push(function(){ self.stop(true, true).trigger('toggle', { duration: 500, init: true }); }); }); } fm.bind('load', function() { swipeHandle = $('
                ').hide().appendTo(fm.getUI()); if (swipeHandle.css('pointer-events') !== 'none') { swipeHandle.remove(); swipeHandle = null; } }); self.on('toggle', function(e, data) { var wz = fm.getUI('workzone'), toshow= self.is(':hidden'), wzh = wz.height(), h = self.height(), tbh = self.outerHeight(true), delta = tbh - h, opt = Object.assign({ step: function(now) { wz.height(wzh + (toshow? (now + delta) * -1 : h - now)); fm.trigger('resize'); }, always: function() { requestAnimationFrame(function() { self.css('height', ''); fm.trigger('uiresize'); if (swipeHandle) { if (toshow) { swipeHandle.stop(true, true).hide(); } else { swipeHandle.height(data.handleH? data.handleH : ''); fm.resources.blink(swipeHandle, 'slowonce'); } } toshow && self.scrollTop('0px'); data.init && fm.trigger('uiautohide'); }); } }, data); self.data('swipeClose', ! toshow).stop(true, true).animate({height : 'toggle'}, opt); autoHide.toolbar = !toshow; fm.storage('autoHide', Object.assign(fm.storage('autoHide'), {toolbar: autoHide.toolbar})); }).on('touchstart', function(e) { if (self.scrollBottom() > 5) { e.originalEvent._preventSwipeY = true; } }); } }); return this; }; plugins/file-manager-advanced/application/library/js/ui/tree.js000064400000120357147176754550020651 0ustar00/** * @class elFinder folders tree * * @author Dmitry (dio) Levashov **/ $.fn.elfindertree = function(fm, opts) { "use strict"; var treeclass = fm.res('class', 'tree'); this.not('.'+treeclass).each(function() { var c = 'class', mobile = fm.UA.Mobile, /** * Root directory class name * * @type String */ root = fm.res(c, 'treeroot'), /** * Open root dir if not opened yet * * @type Boolean */ openRoot = opts.openRootOnLoad, /** * Open current work dir if not opened yet * * @type Boolean */ openCwd = opts.openCwdOnOpen, /** * Auto loading current directory parents and do expand their node * * @type Boolean */ syncTree = openCwd || opts.syncTree, /** * Subtree class name * * @type String */ subtree = fm.res(c, 'navsubtree'), /** * Directory class name * * @type String */ navdir = fm.res(c, 'treedir'), /** * Directory CSS selector * * @type String */ selNavdir = 'span.' + navdir, /** * Collapsed arrow class name * * @type String */ collapsed = fm.res(c, 'navcollapse'), /** * Expanded arrow class name * * @type String */ expanded = fm.res(c, 'navexpand'), /** * Class name to mark arrow for directory with already loaded children * * @type String */ loaded = 'elfinder-subtree-loaded', /** * Class name to mark need subdirs request * * @type String */ chksubdir = 'elfinder-subtree-chksubdir', /** * Arraw class name * * @type String */ arrow = fm.res(c, 'navarrow'), /** * Current directory class name * * @type String */ active = fm.res(c, 'active'), /** * Droppable dirs dropover class * * @type String */ dropover = fm.res(c, 'adroppable'), /** * Hover class name * * @type String */ hover = fm.res(c, 'hover'), /** * Disabled dir class name * * @type String */ disabled = fm.res(c, 'disabled'), /** * Draggable dir class name * * @type String */ draggable = fm.res(c, 'draggable'), /** * Droppable dir class name * * @type String */ droppable = fm.res(c, 'droppable'), /** * root wrapper class * * @type String */ wrapperRoot = 'elfinder-navbar-wrapper-root', /** * Un-disabled cmd `paste` volume's root wrapper class * * @type String */ pastable = 'elfinder-navbar-wrapper-pastable', /** * Un-disabled cmd `upload` volume's root wrapper class * * @type String */ uploadable = 'elfinder-navbar-wrapper-uploadable', /** * Is position x inside Navbar * * @param x Numbar * * @return */ insideNavbar = function(x) { var left = navbar.offset().left; return left <= x && x <= left + navbar.width(); }, /** * To call subdirs elements queue * * @type Object */ subdirsQue = {}, /** * To exec subdirs elements ids * */ subdirsExecQue = [], /** * Request subdirs to backend * * @param id String * * @return Deferred */ subdirs = function(ids) { var targets = []; $.each(ids, function(i, id) { subdirsQue[id] && targets.push(fm.navId2Hash(id)); delete subdirsQue[id]; }); if (targets.length) { return fm.request({ data: { cmd: 'subdirs', targets: targets, preventDefault : true } }).done(function(res) { if (res && res.subdirs) { $.each(res.subdirs, function(hash, subdirs) { var elm = fm.navHash2Elm(hash); elm.removeClass(chksubdir); elm[subdirs? 'addClass' : 'removeClass'](collapsed); }); } }); } }, subdirsJobRes = null, /** * To check target element is in window of subdirs * * @return void */ checkSubdirs = function() { var ids = Object.keys(subdirsQue); if (ids.length) { subdirsJobRes && subdirsJobRes._abort(); execSubdirsTm && clearTimeout(execSubdirsTm); subdirsExecQue = []; subdirsJobRes = fm.asyncJob(function(id) { return fm.isInWindow($('#'+id))? id : null; }, ids, { numPerOnce: 200 }) .done(function(arr) { if (arr.length) { subdirsExecQue = arr; execSubdirs(); } }); } }, subdirsPending = 0, execSubdirsTm, /** * Exec subdirs as batch request * * @return void */ execSubdirs = function() { var cnt = opts.subdirsMaxConn - subdirsPending, atOnce = fm.maxTargets? Math.min(fm.maxTargets, opts.subdirsAtOnce) : opts.subdirsAtOnce, i, ids; execSubdirsTm && cancelAnimationFrame(execSubdirsTm); if (subdirsExecQue.length) { if (cnt > 0) { for (i = 0; i < cnt; i++) { if (subdirsExecQue.length) { subdirsPending++; subdirs(subdirsExecQue.splice(0, atOnce)).always(function() { subdirsPending--; execSubdirs(); }); } } } else { execSubdirsTm = requestAnimationFrame(function() { subdirsExecQue.length && execSubdirs(); }); } } }, drop = fm.droppable.drop, /** * Droppable options * * @type Object */ droppableopts = $.extend(true, {}, fm.droppable, { // show subfolders on dropover over : function(e, ui) { var dst = $(this), helper = ui.helper, cl = hover+' '+dropover, hash, status; e.stopPropagation(); helper.data('dropover', helper.data('dropover') + 1); dst.data('dropover', true); if (ui.helper.data('namespace') !== fm.namespace || ! fm.insideWorkzone(e.pageX, e.pageY)) { dst.removeClass(cl); helper.removeClass('elfinder-drag-helper-move elfinder-drag-helper-plus'); return; } if (! insideNavbar(e.clientX)) { dst.removeClass(cl); return; } helper.removeClass('elfinder-drag-helper-move elfinder-drag-helper-plus'); dst.addClass(hover); if (dst.is('.'+collapsed+':not(.'+expanded+')')) { dst.data('expandTimer', setTimeout(function() { dst.is('.'+collapsed+'.'+hover) && dst.children('.'+arrow).trigger('click'); }, 500)); } if (dst.is('.elfinder-ro,.elfinder-na')) { dst.removeClass(dropover); //helper.removeClass('elfinder-drag-helper-move elfinder-drag-helper-plus'); return; } hash = fm.navId2Hash(dst.attr('id')); dst.data('dropover', hash); $.each(ui.helper.data('files'), function(i, h) { if (h === hash || (fm.file(h).phash === hash && !ui.helper.hasClass('elfinder-drag-helper-plus'))) { dst.removeClass(cl); return false; // break $.each } }); if (helper.data('locked')) { status = 'elfinder-drag-helper-plus'; } else { status = 'elfinder-drag-helper-move'; if (fm._commands.copy && (e.shiftKey || e.ctrlKey || e.metaKey)) { status += ' elfinder-drag-helper-plus'; } } dst.hasClass(dropover) && helper.addClass(status); requestAnimationFrame(function(){ dst.hasClass(dropover) && helper.addClass(status); }); }, out : function(e, ui) { var dst = $(this), helper = ui.helper; e.stopPropagation(); if (insideNavbar(e.clientX)) { helper.removeClass('elfinder-drag-helper-move elfinder-drag-helper-plus'); } helper.data('dropover', Math.max(helper.data('dropover') - 1, 0)); dst.data('expandTimer') && clearTimeout(dst.data('expandTimer')); dst.removeData('dropover') .removeClass(hover+' '+dropover); }, deactivate : function() { $(this).removeData('dropover') .removeClass(hover+' '+dropover); }, drop : function(e, ui) { insideNavbar(e.clientX) && drop.call(this, e, ui); } }), spinner = $(fm.res('tpl', 'navspinner')), /** * Directory html template * * @type String */ tpl = fm.res('tpl', 'navdir'), /** * Permissions marker html template * * @type String */ ptpl = fm.res('tpl', 'perms'), /** * Lock marker html template * * @type String */ ltpl = fm.res('tpl', 'lock'), /** * Symlink marker html template * * @type String */ stpl = fm.res('tpl', 'symlink'), /** * Directory hashes that has more pages * * @type Object */ hasMoreDirs = {}, /** * Html template replacement methods * * @type Object */ replace = { id : function(dir) { return fm.navHash2Id(dir.hash); }, name : function(dir) { return fm.escape(dir.i18 || dir.name); }, cssclass : function(dir) { var cname = (dir.phash && ! dir.isroot ? '' : root)+' '+navdir+' '+fm.perms2class(dir); dir.dirs && !dir.link && (cname += ' ' + collapsed) && dir.dirs == -1 && (cname += ' ' + chksubdir); opts.getClass && (cname += ' ' + opts.getClass(dir)); dir.csscls && (cname += ' ' + fm.escape(dir.csscls)); return cname; }, title : function(dir) { return opts.attrTitle? (' title="' + fm.escape(fm.path(dir.hash, true) || dir.i18 || dir.name) + '"') : ''; }, root : function(dir) { var cls = ''; if (!dir.phash || dir.isroot) { cls += ' '+wrapperRoot; if (!dir.disabled || dir.disabled.length < 1) { cls += ' '+pastable+' '+uploadable; } else { if ($.inArray('paste', dir.disabled) === -1) { cls += ' '+pastable; } if ($.inArray('upload', dir.disabled) === -1) { cls += ' '+uploadable; } } return cls; } else { return ''; } }, permissions : function(dir) { return !dir.read || !dir.write ? ptpl : ''; }, symlink : function(dir) { return dir.alias ? stpl : ''; }, style : function(dir) { return dir.icon ? fm.getIconStyle(dir) : ''; } }, /** * Return html for given dir * * @param Object directory * @return String */ itemhtml = function(dir) { return tpl.replace(/(?:\{([a-z]+)\})/ig, function(m, key) { var res = replace[key] ? replace[key](dir) : (dir[key] || ''); if (key === 'id' && dir.dirs == -1) { subdirsQue[res] = res; } return res; }); }, /** * Return only dirs from files list * * @param Array files list * @param Boolean do check exists * @return Array */ filter = function(files, checkExists) { return $.map(files || [], function(f) { return (f.mime === 'directory' && (!checkExists || fm.navHash2Elm(f.hash).length)) ? f : null; }); }, /** * Find parent subtree for required directory * * @param String dir hash * @return jQuery */ findSubtree = function(hash) { return hash ? fm.navHash2Elm(hash).next('.'+subtree) : tree; }, /** * Find directory (wrapper) in required node * before which we can insert new directory * * @param jQuery parent directory * @param Object new directory * @return jQuery */ findSibling = function(subtree, dir) { var node = subtree.children(':first'), info; while (node.length) { info = fm.file(fm.navId2Hash(node.children('[id]').attr('id'))); if ((info = fm.file(fm.navId2Hash(node.children('[id]').attr('id')))) && compare(dir, info) < 0) { return node; } node = node.next(); } return subtree.children('button.elfinder-navbar-pager-next'); }, /** * Add new dirs in tree * * @param Array dirs list * @return void */ updateTree = function(dirs) { var length = dirs.length, orphans = [], i = length, tgts = $(), done = {}, cwd = fm.cwd(), append = function(parent, dirs, start, direction) { var hashes = {}, curStart = 0, max = fm.newAPI? Math.min(10000, Math.max(10, opts.subTreeMax)) : 10000, setHashes = function() { hashes = {}; $.each(dirs, function(i, d) { hashes[d.hash] = i; }); }, change = function(mode) { if (mode === 'prepare') { $.each(dirs, function(i, d) { d.node && parent.append(d.node.hide()); }); } else if (mode === 'done') { $.each(dirs, function(i, d) { d.node && d.node.detach().show(); }); } }, update = function(e, data) { var i, changed; e.stopPropagation(); if (data.select) { render(getStart(data.select)); return; } if (data.change) { change(data.change); return; } if (data.removed && data.removed.length) { dirs = $.grep(dirs, function(d) { if (data.removed.indexOf(d.hash) === -1) { return true; } else { !changed && (changed = true); return false; } }); } if (data.added && data.added.length) { dirs = dirs.concat($.grep(data.added, function(d) { if (hashes[d.hash] === void(0)) { !changed && (changed = true); return true; } else { return false; } })); } if (changed) { dirs.sort(compare); setHashes(); render(curStart); } }, getStart = function(target) { if (hashes[target] !== void(0)) { return Math.floor(hashes[target] / max) * max; } return void(0); }, target = fm.navId2Hash(parent.prev('[id]').attr('id')), render = function(start, direction) { var html = [], nodes = {}, total, page, s, parts, prev, next, prevBtn, nextBtn; delete hasMoreDirs[target]; curStart = start; parent.off('update.'+fm.namespace, update); if (dirs.length > max) { parent.on('update.'+fm.namespace, update); if (start === void(0)) { s = 0; setHashes(); start = getStart(cwd.hash); if (start === void(0)) { start = 0; } } parts = dirs.slice(start, start + max); hasMoreDirs[target] = parent; prev = start? Math.max(-1, start - max) : -1; next = (start + max >= dirs.length)? 0 : start + max; total = Math.ceil(dirs.length/max); page = Math.ceil(start/max); } $.each(parts || dirs, function(i, d) { html.push(itemhtml(d)); if (d.node) { nodes[d.hash] = d.node; } }); if (prev > -1) { prevBtn = $('') .text(fm.i18n('btnPrevious', page, total)) .button({ icons: { primary: "ui-icon-caret-1-n" } }) .on('click', function(e) { e.preventDefault(); e.stopPropagation(); render(prev, 'up'); }); } else { prevBtn = $(); } if (next) { nextBtn = $('') .text(fm.i18n('btnNext', page + 2, total)) .button({ icons: { primary: "ui-icon-caret-1-s" } }) .on('click', function(e) { e.preventDefault(); e.stopPropagation(); render(next, 'down'); }); } else { nextBtn = $(); } detach(); parent.empty()[parts? 'addClass' : 'removeClass']('elfinder-navbar-hasmore').append(prevBtn, html.join(''), nextBtn); $.each(nodes, function(h, n) { fm.navHash2Elm(h).parent().replaceWith(n); }); if (direction) { autoScroll(fm.navHash2Id(parts[direction === 'up'? parts.length - 1 : 0].hash)); } ! mobile && fm.lazy(function() { updateDroppable(null, parent); }); }, detach = function() { $.each(parent.children('.elfinder-navbar-wrapper'), function(i, elm) { var n = $(elm), ch = n.children('[id]:first'), h, c; if (ch.hasClass(loaded)) { h = fm.navId2Hash(ch.attr('id')); if (h && (c = hashes[h]) !== void(0)) { dirs[c].node = n.detach(); } } }); }; render(); }, dir, html, parent, sibling, init, atonce = {}, updates = [], base, node, lastKey, lastNodes = {}; while (i--) { dir = dirs[i]; if (done[dir.hash] || fm.navHash2Elm(dir.hash).length) { continue; } done[dir.hash] = true; if ((parent = findSubtree(dir.phash)).length) { lastKey = dir.phash || 'treeroot'; if (typeof lastNodes[lastKey] === 'undefined') { lastNodes[lastKey] = parent.children(':last'); } init = !lastNodes[lastKey].length; if (dir.phash && (init || parent.hasClass('elfinder-navbar-hasmore') || (sibling = findSibling(parent, dir)).length)) { if (init) { if (!atonce[dir.phash]) { atonce[dir.phash] = []; } atonce[dir.phash].push(dir); } else { if (sibling) { node = itemhtml(dir); sibling.before(node); ! mobile && (tgts = tgts.add(node)); } else { updates.push(dir); } } } else { node = itemhtml(dir); if (init) { parent.prepend(node); } else { lastNodes[lastKey].after(node); } if (!dir.phash || dir.isroot) { base = fm.navHash2Elm(dir.hash).parent(); } ! mobile && updateDroppable(null, base); } } else { orphans.push(dir); } } // When init, html append at once if (Object.keys(atonce).length){ $.each(atonce, function(p, dirs){ var parent = findSubtree(p), html = []; dirs.sort(compare); append(parent, dirs); }); } if (updates.length) { parent.trigger('update.' + fm.namespace, { added : updates }); } if (orphans.length && orphans.length < length) { updateTree(orphans); return; } ! mobile && tgts.length && fm.lazy(function() { updateDroppable(tgts); }); }, /** * sort function by dir.name * */ compare = function(dir1, dir2) { if (! fm.sortAlsoTreeview) { return fm.sortRules.name(dir1, dir2); } else { var asc = fm.sortOrder == 'asc', type = fm.sortType, rules = fm.sortRules, res; res = asc? rules[fm.sortType](dir1, dir2) : rules[fm.sortType](dir2, dir1); return type !== 'name' && res === 0 ? res = asc ? rules.name(dir1, dir2) : rules.name(dir2, dir1) : res; } }, /** * Timer ID of autoScroll * * @type Integer */ autoScrTm, /** * Auto scroll to cwd * * @return Object jQuery Deferred */ autoScroll = function(target) { var dfrd = $.Deferred(), current, parent, top, treeH, bottom, tgtTop; autoScrTm && clearTimeout(autoScrTm); autoScrTm = setTimeout(function() { current = $(document.getElementById((target || fm.navHash2Id(fm.cwd().hash)))); if (current.length) { // expand parents directory (openCwd? current : current.parent()).parents('.elfinder-navbar-wrapper').children('.'+loaded).addClass(expanded).next('.'+subtree).show(); parent = tree.parent().stop(false, true); top = parent.offset().top; treeH = parent.height(); bottom = top + treeH - current.outerHeight(); tgtTop = current.offset().top; if (tgtTop < top || tgtTop > bottom) { parent.animate({ scrollTop : parent.scrollTop() + tgtTop - top - treeH / 3 }, { duration : opts.durations.autoScroll, complete : function() { dfrd.resolve(); } }); } else { dfrd.resolve(); } } else { dfrd.reject(); } }, 100); return dfrd; }, /** * Get hashes array of items of the bottom of the leaf root back from the target * * @param Object elFinder item(directory) object * @return Array hashes */ getEnds = function(d) { var cur = d || fm.cwd(), res = cur.hash? [ cur.hash ] : [], phash, root, dir; root = fm.root(cur.hash); dir = fm.file(root); while (dir && (phash = dir.phash)) { res.unshift(phash); root = fm.root(phash); dir = fm.file(root); if (fm.navHash2Elm(dir.hash).hasClass(loaded)) { break; } } return res; }, /** * Select pages back in order to display the target * * @param Object elFinder item(directory) object * @return Object jQuery node object of target node */ selectPages = function(current) { var cur = current || fm.cwd(), curHash = cur.hash, node = fm.navHash2Elm(curHash); if (!node.length) { while(cur && cur.phash) { if (hasMoreDirs[cur.phash] && !fm.navHash2Elm(cur.hash).length) { hasMoreDirs[cur.phash].trigger('update.'+fm.namespace, { select : cur.hash }); } cur = fm.file(cur.phash); } node = fm.navHash2Elm(curHash); } return node; }, /** * Flag indicating that synchronization is currently in progress * * @type Boolean */ syncing, /** * Mark current directory as active * If current directory is not in tree - load it and its parents * * @param Array directory objects of cwd * @param Boolean do auto scroll * @return Object jQuery Deferred */ sync = function(cwdDirs, aScr) { var cwd = fm.cwd(), cwdhash = cwd.hash, autoScr = aScr === void(0)? syncTree : aScr, loadParents = function(dir) { var dfd = $.Deferred(), reqs = [], ends = getEnds(dir), makeReq = function(cmd, h, until) { var data = { cmd : cmd, target : h }; if (until) { data.until = until; } return fm.request({ data : data, preventFail : true }); }, baseHash, baseId; reqs = $.map(ends, function(h) { var d = fm.file(h), isRoot = d? fm.isRoot(d) : false, node = fm.navHash2Elm(h), getPhash = function(h, dep) { var d, ph, depth = dep || 1; ph = (d = fm.file(h))? d.phash : false; if (ph && depth > 1) { return getPhash(ph, --depth); } return ph; }, until, closest = (function() { var phash = getPhash(h); until = phash; while (phash) { if (fm.navHash2Elm(phash).hasClass(loaded)) { break; } until = phash; phash = getPhash(phash); } if (!phash) { until = void(0); phash = fm.root(h); } return phash; })(), cmd; if (!node.hasClass(loaded) && (isRoot || !d || !fm.navHash2Elm(d.phash).hasClass(loaded))) { if (isRoot || closest === getPhash(h) || closest === getPhash(h, 2)) { until = void(0); cmd = 'tree'; if (!isRoot) { h = getPhash(h); } } else { cmd = 'parents'; } if (!baseHash) { baseHash = (cmd === 'tree')? h : closest; } return makeReq(cmd, h, until); } return null; }); if (reqs.length) { selectPages(fm.file(baseHash)); baseId = fm.navHash2Id(baseHash); autoScr && autoScroll(baseId); baseNode = $('#'+baseId); spinner = $(fm.res('tpl', 'navspinner')).insertBefore(baseNode.children('.'+arrow)); baseNode.removeClass(collapsed); $.when.apply($, reqs) .done(function() { var res = {},data, treeDirs, dirs, argLen, i; argLen = arguments.length; if (argLen > 0) { for (i = 0; i < argLen; i++) { data = arguments[i].tree || []; res[ends[i]] = Object.assign([], filter(data)); } } dfd.resolve(res); }) .fail(function() { dfd.reject(); }); return dfd; } else { return dfd.resolve(); } }, done= function(res, dfrd) { var open = function() { if (openRoot && baseNode) { findSubtree(baseNode.hash).show().prev(selNavdir).addClass(expanded); openRoot = false; } if (autoScr) { autoScroll().done(checkSubdirs); } else { checkSubdirs(); } }, current; if (res) { $.each(res, function(endHash, dirs) { dirs && updateTree(dirs); selectPages(fm.file(endHash)); dirs && updateArrows(dirs, loaded); }); } if (cwdDirs) { (fm.api < 2.1) && cwdDirs.push(cwd); updateTree(cwdDirs); } // set current node current = selectPages(); if (!current.hasClass(active)) { tree.find(selNavdir+'.'+active).removeClass(active); current.addClass(active); } // mark as loaded to cwd parents current.parents('.elfinder-navbar-wrapper').children('.'+navdir).addClass(loaded); if (res) { fm.lazy(open).done(function() { dfrd.resolve(); }); } else { open(); dfrd.resolve(); } }, rmSpinner = function(fail) { if (baseNode) { spinner.remove(); baseNode.addClass(collapsed + (fail? '' : (' ' + loaded))); } }, dfrd = $.Deferred(), baseNode, spinner; if (!fm.navHash2Elm(cwdhash).length) { syncing = true; loadParents() .done(function(res) { done(res, dfrd); rmSpinner(); }) .fail(function() { rmSpinner(true); dfrd.reject(); }) .always(function() { syncing = false; }); } else { done(void(0), dfrd); } // trigger 'treesync' with my $.Deferred fm.trigger('treesync', dfrd); return dfrd; }, /** * Make writable and not root dirs droppable * * @return void */ updateDroppable = function(target, node) { var limit = 100, next; if (!target) { if (!node || node.closest('div.'+wrapperRoot).hasClass(uploadable)) { (node || tree.find('div.'+uploadable)).find(selNavdir+':not(.elfinder-ro,.elfinder-na)').addClass('native-droppable'); } if (!node || node.closest('div.'+wrapperRoot).hasClass(pastable)) { target = (node || tree.find('div.'+pastable)).find(selNavdir+':not(.'+droppable+')'); } else { target = $(); } if (node) { // check leaf roots node.children('div.'+wrapperRoot).each(function() { updateDroppable(null, $(this)); }); } } // make droppable on async if (target.length) { fm.asyncJob(function(elm) { $(elm).droppable(droppableopts); }, $.makeArray(target), { interval : 20, numPerOnce : 100 }); } }, /** * Check required folders for subfolders and update arrow classes * * @param Array folders to check * @param String css class * @return void */ updateArrows = function(dirs, cls) { var sel = cls == loaded ? '.'+collapsed+':not(.'+loaded+')' : ':not(.'+collapsed+')'; $.each(dirs, function(i, dir) { fm.navHash2Elm(dir.phash).filter(sel) .filter(function() { return $.grep($(this).next('.'+subtree).children(), function(n) { return ($(n).children().hasClass(root))? false : true; }).length > 0; }) .addClass(cls); }); }, /** * Navigation tree * * @type JQuery */ tree = $(this).addClass(treeclass) // make dirs draggable and toggle hover class .on('mouseenter mouseleave', selNavdir, function(e) { var enter = (e.type === 'mouseenter'); if (enter && scrolling) { return; } var link = $(this), hash, dir; if (!link.hasClass(dropover+' '+disabled)) { if (!mobile && enter && !link.data('dragRegisted') && !link.hasClass(root+' '+draggable+' elfinder-na elfinder-wo')) { link.data('dragRegisted', true); if (fm.isCommandEnabled('copy', (hash = fm.navId2Hash(link.attr('id'))))) { link.draggable(fm.draggable); } } link.toggleClass(hover, enter); } // update title attr if necessary if (enter && opts.attrTitle) { dir = fm.file(hash || fm.navId2Hash(link.attr('id'))); if (!dir.isroot && link.attr('title') === (dir.i18 || dir.name)) { link.attr('title', fm.path(hash, true)); } } }) // native drag enter .on('dragenter', selNavdir, function(e) { if (e.originalEvent.dataTransfer) { var dst = $(this); dst.addClass(hover); if (dst.is('.'+collapsed+':not(.'+expanded+')')) { dst.data('expandTimer', setTimeout(function() { dst.is('.'+collapsed+'.'+hover) && dst.children('.'+arrow).trigger('click'); }, 500)); } } }) // native drag leave .on('dragleave', selNavdir, function(e) { if (e.originalEvent.dataTransfer) { var dst = $(this); dst.data('expandTimer') && clearTimeout(dst.data('expandTimer')); dst.removeClass(hover); } }) // open dir or open subfolders in tree .on('click', selNavdir, function(e) { var link = $(this), hash = fm.navId2Hash(link.attr('id')), file = fm.file(hash); if (link.data('longtap')) { link.removeData('longtap'); e.stopPropagation(); return; } if (!link.hasClass(active)) { tree.find(selNavdir+'.'+active).removeClass(active); link.addClass(active); } if (hash != fm.cwd().hash && !link.hasClass(disabled)) { fm.exec('open', hash).done(function() { fm.one('opendone', function() { fm.select({selected: [hash], origin: 'navbar'}); }); }); } else { if (link.hasClass(collapsed)) { link.children('.'+arrow).trigger('click'); } fm.select({selected: [hash], origin: 'navbar'}); } }) // for touch device .on('touchstart', selNavdir, function(e) { if (e.originalEvent.touches.length > 1) { return; } var evt = e.originalEvent, p; if (e.target.nodeName === 'INPUT') { e.stopPropagation(); return; } p = $(this).addClass(hover) .removeData('longtap') .data('tmlongtap', setTimeout(function(e){ // long tap p.data('longtap', true); fm.trigger('contextmenu', { 'type' : 'navbar', 'targets' : [fm.navId2Hash(p.attr('id'))], 'x' : evt.touches[0].pageX, 'y' : evt.touches[0].pageY }); }, 500)); }) .on('touchmove touchend', selNavdir, function(e) { if (e.target.nodeName === 'INPUT') { e.stopPropagation(); return; } clearTimeout($(this).data('tmlongtap')); $(this).removeData('tmlongtap'); if (e.type == 'touchmove') { $(this).removeClass(hover); } }) // toggle subfolders in tree .on('click', selNavdir+'.'+collapsed+' .'+arrow, function(e) { var arrow = $(this), link = arrow.parent(selNavdir), stree = link.next('.'+subtree), dfrd = $.Deferred(), slideTH = 30, cnt; e.stopPropagation(); if (link.hasClass(loaded)) { link.toggleClass(expanded); fm.lazy(function() { cnt = link.hasClass(expanded)? stree.children().length + stree.find('div.elfinder-navbar-subtree[style*=block]').children().length : stree.find('div:visible').length; if (cnt > slideTH) { stree.toggle(); fm.draggingUiHelper && fm.draggingUiHelper.data('refreshPositions', 1); checkSubdirs(); } else { stree.stop(true, true)[link.hasClass(expanded)? 'slideDown' : 'slideUp'](opts.durations.slideUpDown, function(){ fm.draggingUiHelper && fm.draggingUiHelper.data('refreshPositions', 1); checkSubdirs(); }); } }).always(function() { dfrd.resolve(); }); } else { spinner.insertBefore(arrow); link.removeClass(collapsed); fm.request({cmd : 'tree', target : fm.navId2Hash(link.attr('id'))}) .done(function(data) { updateTree(Object.assign([], filter(data.tree))); if (stree.children().length) { link.addClass(collapsed+' '+expanded); if (stree.children().length > slideTH) { stree.show(); fm.draggingUiHelper && fm.draggingUiHelper.data('refreshPositions', 1); checkSubdirs(); } else { stree.stop(true, true).slideDown(opts.durations.slideUpDown, function(){ fm.draggingUiHelper && fm.draggingUiHelper.data('refreshPositions', 1); checkSubdirs(); }); } } }) .always(function(data) { spinner.remove(); link.addClass(loaded); fm.one('treedone', function() { dfrd.resolve(); }); }); } arrow.data('dfrd', dfrd); }) .on('contextmenu', selNavdir, function(e) { e.stopPropagation(); var self = $(this); // now dirname editing if (self.find('input:text').length) { return; } e.preventDefault(); if (!self.data('tmlongtap')) { fm.trigger('contextmenu', { 'type' : 'navbar', 'targets' : [fm.navId2Hash($(this).attr('id'))], 'x' : e.pageX, 'y' : e.pageY }); } self.addClass('ui-state-hover'); fm.getUI('contextmenu').children().on('mouseenter', function() { self.addClass('ui-state-hover'); }); fm.bind('closecontextmenu', function() { self.removeClass('ui-state-hover'); }); }) .on('scrolltoview', selNavdir, function(e, data) { var self = $(this); autoScroll(self.attr('id')).done(function() { if (!data || data.blink === 'undefined' || data.blink) { fm.resources.blink(self, 'lookme'); } }); }) // prepend fake dir .on('create.'+fm.namespace, function(e, item) { var pdir = findSubtree(item.phash), lock = item.move || false, dir = $(itemhtml(item)).addClass('elfinder-navbar-wrapper-tmp'), selected = fm.selected(); lock && selected.length && fm.trigger('lockfiles', {files: selected}); pdir.prepend(dir); }), scrolling = false, navbarScrTm, // move tree into navbar navbar = fm.getUI('navbar').append(tree).show().on('scroll', function() { scrolling = true; navbarScrTm && cancelAnimationFrame(navbarScrTm); navbarScrTm = requestAnimationFrame(function() { scrolling = false; checkSubdirs(); }); }), prevSortTreeview = fm.sortAlsoTreeview; fm.open(function(e) { var data = e.data, dirs = filter(data.files), contextmenu = fm.getUI('contextmenu'); data.init && tree.empty(); if (fm.UA.iOS) { navbar.removeClass('overflow-scrolling-touch').addClass('overflow-scrolling-touch'); } if (dirs.length) { fm.lazy(function() { if (!contextmenu.data('cmdMaps')) { contextmenu.data('cmdMaps', {}); } updateTree(dirs); updateArrows(dirs, loaded); sync(dirs); }); } else { sync(); } }) // add new dirs .add(function(e) { var dirs = filter(e.data.added); if (dirs.length) { updateTree(dirs); updateArrows(dirs, collapsed); } }) // update changed dirs .change(function(e) { // do ot perfome while syncing if (syncing) { return; } var dirs = filter(e.data.changed, true), length = dirs.length, l = length, tgts = $(), changed = {}, dir, phash, node, tmp, realParent, reqParent, realSibling, reqSibling, isExpanded, isLoaded, parent, subdirs; $.each(hasMoreDirs, function(h, node) { node.trigger('update.'+fm.namespace, { change: 'prepare' }); }); while (l--) { dir = dirs[l]; phash = dir.phash; if ((node = fm.navHash2Elm(dir.hash)).length) { parent = node.parent(); if (phash) { realParent = node.closest('.'+subtree); reqParent = findSubtree(phash); realSibling = node.parent().next(); reqSibling = findSibling(reqParent, dir); if (!reqParent.length) { continue; } if (reqParent[0] !== realParent[0] || realSibling.get(0) !== reqSibling.get(0)) { reqSibling.length ? reqSibling.before(parent) : reqParent.append(parent); } } isExpanded = node.hasClass(expanded); isLoaded = node.hasClass(loaded); tmp = $(itemhtml(dir)); node.replaceWith(tmp.children(selNavdir)); ! mobile && updateDroppable(null, parent); if (dir.dirs && (isExpanded || isLoaded) && (node = fm.navHash2Elm(dir.hash)) && node.next('.'+subtree).children().length) { isExpanded && node.addClass(expanded); isLoaded && node.addClass(loaded); } subdirs |= dir.dirs == -1; } } // to check subdirs if (subdirs) { checkSubdirs(); } $.each(hasMoreDirs, function(h, node) { node.trigger('update.'+fm.namespace, { change: 'done' }); }); length && sync(void(0), false); }) // remove dirs .remove(function(e) { var dirs = e.data.removed, l = dirs.length, node, stree, removed; $.each(hasMoreDirs, function(h, node) { node.trigger('update.'+fm.namespace, { removed : dirs }); node.trigger('update.'+fm.namespace, { change: 'prepare' }); }); while (l--) { if ((node = fm.navHash2Elm(dirs[l])).length) { removed = true; stree = node.closest('.'+subtree); node.parent().detach(); if (!stree.children().length) { stree.hide().prev(selNavdir).removeClass(collapsed+' '+expanded+' '+loaded); } } } removed && fm.getUI('navbar').children('.ui-resizable-handle').trigger('resize'); $.each(hasMoreDirs, function(h, node) { node.trigger('update.'+fm.namespace, { change: 'done' }); }); }) // lock/unlock dirs while moving .bind('lockfiles unlockfiles', function(e) { var lock = e.type == 'lockfiles', helperLocked = e.data.helper? e.data.helper.data('locked') : false, act = (lock && !helperLocked) ? 'disable' : 'enable', dirs = $.grep(e.data.files||[], function(h) { var dir = fm.file(h); return dir && dir.mime == 'directory' ? true : false; }); $.each(dirs, function(i, hash) { var dir = fm.navHash2Elm(hash); if (dir.length && !helperLocked) { dir.hasClass(draggable) && dir.draggable(act); dir.hasClass(droppable) && dir.droppable(act); dir[lock ? 'addClass' : 'removeClass'](disabled); } }); }) .bind('sortchange', function() { if (fm.sortAlsoTreeview || prevSortTreeview !== fm.sortAlsoTreeview) { var dirs, ends = [], endsMap = {}, endsVid = {}, topVid = '', single = false, current; fm.lazy(function() { dirs = filter(fm.files()); prevSortTreeview = fm.sortAlsoTreeview; tree.empty(); // append volume roots at first updateTree($.map(fm.roots, function(h) { var dir = fm.file(h); return dir && !dir.phash? dir : null; })); if (!Object.keys(hasMoreDirs).length) { updateTree(dirs); current = selectPages(); updateArrows(dirs, loaded); } else { ends = getEnds(); if (ends.length > 1) { $.each(ends, function(i, end) { var vid = fm.file(fm.root(end)).volumeid; if (i === 0) { topVid = vid; } endsVid[vid] = end; endsMap[end] = []; }); $.each(dirs, function(i, d) { if (!d.volumeid) { single = true; return false; } endsMap[endsVid[d.volumeid] || endsVid[topVid]].push(d); }); } else { single = true; } if (single) { $.each(ends, function(i, endHash) { updateTree(dirs); current = selectPages(fm.file(endHash)); updateArrows(dirs, loaded); }); } else { $.each(endsMap, function(endHash, dirs) { updateTree(dirs); current = selectPages(fm.file(endHash)); updateArrows(dirs, loaded); }); } } sync(); }, 100); } }); }); return this; }; plugins/file-manager-advanced/application/library/js/ui/uploadButton.js000064400000002027147176754550022363 0ustar00/** * @class elFinder toolbar's button tor upload file * * @author Dmitry (dio) Levashov **/ $.fn.elfinderuploadbutton = function(cmd) { "use strict"; return this.each(function() { var fm = cmd.fm, button = $(this).elfinderbutton(cmd) .off('click'), form = $('
                ').appendTo(button), input = $('') .on('change', function() { var _input = $(this); if (_input.val()) { fm.exec('upload', {input : _input.remove()[0]}, void(0), fm.cwd().hash); input.clone(true).appendTo(form); } }) .on('dragover', function(e) { e.originalEvent.dataTransfer.dropEffect = 'copy'; }), tm; form.append(input.clone(true)); cmd.change(function() { tm && cancelAnimationFrame(tm); tm = requestAnimationFrame(function() { var toShow = cmd.disabled(); if (form.is('visible')) { !toShow && form.hide(); } else { toShow && form.show(); } }); }) .change(); }); }; plugins/file-manager-advanced/application/library/js/ui/viewbutton.js000064400000001370147176754550022111 0ustar00/** * @class elFinder toolbar button to switch current directory view. * * @author Dmitry (dio) Levashov **/ $.fn.elfinderviewbutton = function(cmd) { "use strict"; return this.each(function() { var button = $(this).elfinderbutton(cmd), icon = button.children('.elfinder-button-icon'), text = button.children('.elfinder-button-text'), tm; cmd.change(function() { tm && cancelAnimationFrame(tm); tm = requestAnimationFrame(function() { var icons = cmd.value == 'icons'; icon.toggleClass('elfinder-button-icon-view-list', icons); cmd.className = icons? 'view-list' : ''; cmd.title = cmd.fm.i18n(icons ? 'viewlist' : 'viewicons'); button.attr('title', cmd.title); text.html(cmd.title); }); }); }); }; plugins/file-manager-advanced/application/library/js/ui/workzone.js000064400000002640147176754550021562 0ustar00/** * @class elfinderworkzone - elFinder container for nav and current directory * @author Dmitry (dio) Levashov **/ $.fn.elfinderworkzone = function(fm) { "use strict"; var cl = 'elfinder-workzone'; this.not('.'+cl).each(function() { var wz = $(this).addClass(cl), prevH = Math.round(wz.height()), parent = wz.parent(), setDelta = function() { wdelta = wz.outerHeight(true) - wz.height(); }, fitsize = function(e) { var height = parent.height() - wdelta, style = parent.attr('style'), curH = Math.round(wz.height()); if (e) { e.preventDefault(); e.stopPropagation(); } parent.css('overflow', 'hidden') .children(':visible:not(.'+cl+')').each(function() { var ch = $(this); if (ch.css('position') != 'absolute' && ch.css('position') != 'fixed') { height -= ch.outerHeight(true); } }); parent.attr('style', style || ''); height = Math.max(0, Math.round(height)); if (prevH !== height || curH !== height) { prevH = Math.round(wz.height()); wz.height(height); fm.trigger('wzresize'); } }, cssloaded = function() { wdelta = wz.outerHeight(true) - wz.height(); fitsize(); }, wdelta; setDelta(); parent.on('resize.' + fm.namespace, fitsize); fm.one('cssloaded', cssloaded) .bind('uiresize', fitsize) .bind('themechange', setDelta); }); return this; }; plugins/file-manager-advanced/application/library/js/worker/calcfilehash.js000064400000001024147176754550023201 0ustar00var type = self.data.type, bin = self.data.bin, hashOpts = self.data.hashOpts; self.res = {}; if (type === 'md5') { let sp = new self.SparkMD5.ArrayBuffer(); sp.append(bin); self.res.hash = sp.end(); } else { let sha = new jsSHA('SHA' + (type.length === 5? type : ('-' + type)).toUpperCase(), 'ARRAYBUFFER'), opts = {}; if (type === 'ke128') { opts.shakeLen = hashOpts.shake128len; } else if (type === 'ke256') { opts.shakeLen = hashOpts.shake256len; } sha.update(bin); self.res.hash = sha.getHash('HEX', opts); } plugins/file-manager-advanced/application/library/js/worker/quicklook.tiff.js000064400000000362147176754550023527 0ustar00var data = self.data; if (data.memory) { Tiff.initialize({ TOTAL_MEMORY: data.memory }); } var tiff = new Tiff({buffer: data.data}); var image = tiff.readRGBAImage(); self.res = { image: image, width: tiff.width(), height: tiff.height() }; plugins/file-manager-advanced/application/library/js/worker/quicklook.unzip.js000064400000003464147176754550023752 0ustar00var type = self.data.type, bin = self.data.bin, unzipFiles = function() { /** @type {Array.} */ var filenameList = []; /** @type {number} */ var i; /** @type {number} */ var il; /** @type {Array.} */ var fileHeaderList; // need check this.Y when update cdns.zlibUnzip this.Y(); fileHeaderList = this.i; for (i = 0, il = fileHeaderList.length; i < il; ++i) { // need check fileHeaderList[i].J when update cdns.zlibUnzip filenameList[i] = fileHeaderList[i].filename + (fileHeaderList[i].J? ' ({formatSize(' + fileHeaderList[i].J + ')})' : ''); } return filenameList; }, tarFiles = function(tar) { var filenames = [], tarlen = tar.length, offset = 0, toStr = function(arr) { return String.fromCharCode.apply(null, arr).replace(/\0+$/, ''); }, h, name, prefix, size, dbs; while (offset < tarlen && tar[offset] !== 0) { h = tar.subarray(offset, offset + 512); name = toStr(h.subarray(0, 100)); if (prefix = toStr(h.subarray(345, 500))) { name = prefix + name; } size = parseInt(toStr(h.subarray(124, 136)), 8); dbs = Math.ceil(size / 512) * 512; if (name === '././@LongLink') { name = toStr(tar.subarray(offset + 512, offset + 512 + dbs)); } (name !== 'pax_global_header') && filenames.push(name + (size? ' ({formatSize(' + size + ')})': '')); offset = offset + 512 + dbs; } return filenames; }; self.res = {}; if (type === 'tar') { self.res.files = tarFiles(new Uint8Array(bin)); } else if (type === 'zip') { self.res.files = unzipFiles.call(new Zlib.Unzip(new Uint8Array(bin))); } else if (type === 'gzip') { self.res.files = tarFiles((new Zlib.Gunzip(new Uint8Array(bin))).decompress()); } else if (type === 'bzip2') { self.res.files = tarFiles(self.bzip2.simple(self.bzip2.array(new Uint8Array(bin)))); } plugins/file-manager-advanced/application/library/js/elFinder.command.js000064400000020036147176754550022433 0ustar00/** * elFinder command prototype * * @type elFinder.command * @author Dmitry (dio) Levashov */ elFinder.prototype.command = function(fm) { "use strict"; /** * elFinder instance * * @type elFinder */ this.fm = fm; /** * Command name, same as class name * * @type String */ this.name = ''; /** * Dialog class name * * @type String */ this.dialogClass = ''; /** * Command icon class name with out 'elfinder-button-icon-' * Use this.name if it is empty * * @type String */ this.className = ''; /** * Short command description * * @type String */ this.title = ''; /** * Linked(Child) commands name * They are loaded together when tthis command is loaded. * * @type Array */ this.linkedCmds = []; /** * Current command state * * @example * this.state = -1; // command disabled * this.state = 0; // command enabled * this.state = 1; // command active (for example "fullscreen" command while elfinder in fullscreen mode) * @default -1 * @type Number */ this.state = -1; /** * If true, command can not be disabled by connector. * @see this.update() * * @type Boolen */ this.alwaysEnabled = false; /** * Do not change dirctory on removed current work directory * * @type Boolen */ this.noChangeDirOnRemovedCwd = false; /** * If true, this means command was disabled by connector. * @see this.update() * * @type Boolen */ this._disabled = false; /** * If true, this command is disabled on serach results * * @type Boolean */ this.disableOnSearch = false; /** * Call update() when event select fired * * @type Boolean */ this.updateOnSelect = true; /** * Sync toolbar button title on change * * @type Boolean */ this.syncTitleOnChange = false; /** * Keep display of the context menu when command execution * * @type Boolean */ this.keepContextmenu = false; /** * elFinder events defaults handlers. * Inside handlers "this" is current command object * * @type Object */ this._handlers = { enable : function() { this.update(void(0), this.value); }, disable : function() { this.update(-1, this.value); }, 'open reload load sync' : function() { this._disabled = !(this.alwaysEnabled || this.fm.isCommandEnabled(this.name)); this.update(void(0), this.value); this.change(); } }; /** * elFinder events handlers. * Inside handlers "this" is current command object * * @type Object */ this.handlers = {}; /** * Shortcuts * * @type Array */ this.shortcuts = []; /** * Command options * * @type Object */ this.options = {ui : 'button'}; /** * Callback functions on `change` event * * @type Array */ this.listeners = []; /** * Prepare object - * bind events and shortcuts * * @return void */ this.setup = function(name, opts) { var self = this, fm = this.fm, setCallback = function(s) { var cb = s.callback || function(e) { fm.exec(self.name, void(0), { _userAction: true, _currentType: 'shortcut' }); }; s.callback = function(e) { var enabled, checks = {}; if (self.enabled()) { if (fm.searchStatus.state < 2) { enabled = fm.isCommandEnabled(self.name); } else { $.each(fm.selected(), function(i, h) { if (fm.optionsByHashes[h]) { checks[h] = true; } else { $.each(fm.volOptions, function(id) { if (!checks[id] && h.indexOf(id) === 0) { checks[id] = true; return false; } }); } }); $.each(checks, function(h) { enabled = fm.isCommandEnabled(self.name, h); if (! enabled) { return false; } }); } if (enabled) { self.event = e; cb.call(self); delete self.event; } } }; }, i, s, sc; this.name = name; this.title = fm.messages['cmd'+name] ? fm.i18n('cmd'+name) : ((this.extendsCmd && fm.messages['cmd'+this.extendsCmd]) ? fm.i18n('cmd'+this.extendsCmd) : name); this.options = Object.assign({}, this.options, opts); this.listeners = []; this.dialogClass = 'elfinder-dialog-' + name; if (opts.shortcuts) { if (typeof opts.shortcuts === 'function') { sc = opts.shortcuts(this.fm, this.shortcuts); } else if (Array.isArray(opts.shortcuts)) { sc = opts.shortcuts; } this.shortcuts = sc || []; } if (this.updateOnSelect) { this._handlers.select = function() { this.update(void(0), this.value); }; } $.each(Object.assign({}, self._handlers, self.handlers), function(cmd, handler) { fm.bind(cmd, $.proxy(handler, self)); }); for (i = 0; i < this.shortcuts.length; i++) { s = this.shortcuts[i]; setCallback(s); !s.description && (s.description = this.title); fm.shortcut(s); } if (this.disableOnSearch) { fm.bind('search searchend', function() { self._disabled = this.type === 'search'? true : ! (this.alwaysEnabled || fm.isCommandEnabled(name)); self.update(void(0), self.value); }); } this.init(); }; /** * Command specific init stuffs * * @return void */ this.init = function() {}; /** * Exec command * * @param Array target files hashes * @param Array|Object command value * @return $.Deferred */ this.exec = function(files, opts) { return $.Deferred().reject(); }; this.getUndo = function(opts, resData) { return false; }; /** * Return true if command disabled. * * @return Boolen */ this.disabled = function() { return this.state < 0; }; /** * Return true if command enabled. * * @return Boolen */ this.enabled = function() { return this.state > -1; }; /** * Return true if command active. * * @return Boolen */ this.active = function() { return this.state > 0; }; /** * Return current command state. * Must be overloaded in most commands * * @return Number */ this.getstate = function() { return -1; }; /** * Update command state/value * and rize 'change' event if smth changed * * @param Number new state or undefined to auto update state * @param mixed new value * @return void */ this.update = function(s, v) { var state = this.state, value = this.value; if (this._disabled && this.fm.searchStatus === 0) { this.state = -1; } else { this.state = s !== void(0) ? s : this.getstate(); } this.value = v; if (state != this.state || value != this.value) { this.change(); } }; /** * Bind handler / fire 'change' event. * * @param Function|undefined event callback * @return void */ this.change = function(c) { var cmd, i; if (typeof(c) === 'function') { this.listeners.push(c); } else { for (i = 0; i < this.listeners.length; i++) { cmd = this.listeners[i]; try { cmd(this.state, this.value); } catch (e) { this.fm.debug('error', e); } } } return this; }; /** * With argument check given files hashes and return list of existed files hashes. * Without argument return selected files hashes. * * @param Array|String|void hashes * @return Array */ this.hashes = function(hashes) { return hashes ? $.grep(Array.isArray(hashes) ? hashes : [hashes], function(hash) { return fm.file(hash) ? true : false; }) : fm.selected(); }; /** * Return only existed files from given fils hashes | selected files * * @param Array|String|void hashes * @return Array */ this.files = function(hashes) { var fm = this.fm; return hashes ? $.map(Array.isArray(hashes) ? hashes : [hashes], function(hash) { return fm.file(hash) || null; }) : fm.selectedFiles(); }; /** * Wrapper to fm.dialog() * * @param String|DOMElement content * @param Object options * @return Object jQuery element object */ this.fmDialog = function(content, options) { if (options.cssClass) { options.cssClass += ' ' + this.dialogClass; } else { options.cssClass = this.dialogClass; } return this.fm.dialog(content, options); }; }; plugins/file-manager-advanced/application/library/js/elFinder.history.js000064400000004562147176754550022524 0ustar00/** * @class elFinder.history * Store visited folders * and provide "back" and "forward" methods * * @author Dmitry (dio) Levashov */ elFinder.prototype.history = function(fm) { "use strict"; var self = this, /** * Update history on "open" event? * * @type Boolean */ update = true, /** * Directories hashes storage * * @type Array */ history = [], /** * Current directory index in history * * @type Number */ current, /** * Clear history * * @return void */ reset = function() { history = [fm.cwd().hash]; current = 0; update = true; }, /** * Browser native history object */ nativeHistory = (fm.options.useBrowserHistory && window.history && window.history.pushState)? window.history : null, /** * Open prev/next folder * * @Boolen open next folder? * @return jQuery.Deferred */ go = function(fwd) { if ((fwd && self.canForward()) || (!fwd && self.canBack())) { update = false; return fm.exec('open', history[fwd ? ++current : --current]).fail(reset); } return $.Deferred().reject(); }, /** * Sets the native history. * * @param String thash target hash */ setNativeHistory = function(thash) { if (nativeHistory && (! nativeHistory.state || nativeHistory.state.thash !== thash)) { nativeHistory.pushState({thash: thash}, null, location.pathname + location.search + (thash? '#elf_' + thash : '')); } }; /** * Return true if there is previous visited directories * * @return Boolen */ this.canBack = function() { return current > 0; }; /** * Return true if can go forward * * @return Boolen */ this.canForward = function() { return current < history.length - 1; }; /** * Go back * * @return void */ this.back = go; /** * Go forward * * @return void */ this.forward = function() { return go(true); }; // bind to elfinder events fm.bind('init', function() { if (nativeHistory && !nativeHistory.state) { setNativeHistory(fm.startDir()); } }) .open(function() { var l = history.length, cwd = fm.cwd().hash; if (update) { current >= 0 && l > current + 1 && history.splice(current+1); history[history.length-1] != cwd && history.push(cwd); current = history.length - 1; } update = true; setNativeHistory(cwd); }) .reload(fm.options.reloadClearHistory && reset); }; plugins/file-manager-advanced/application/library/js/elFinder.js000064400001063313147176754550021024 0ustar00/** * @class elFinder - file manager for web * * @author Dmitry (dio) Levashov **/ var elFinder = function(elm, opts, bootCallback) { "use strict"; //this.time('load'); var self = this, /** * Objects array of jQuery.Deferred that calls before elFinder boot up * * @type Array */ dfrdsBeforeBootup = [], /** * Plugin name to check for conflicts with bootstrap etc * * @type Array **/ conflictChecks = ['button', 'tooltip'], /** * Node on which elfinder creating * * @type jQuery **/ node = $(elm), /** * Object of events originally registered in this node * * @type Object */ prevEvents = $.extend(true, {}, $._data(node.get(0), 'events')), /** * Store node contents. * * @see this.destroy * @type jQuery **/ prevContent = $('
                ').append(node.contents()).attr('class', node.attr('class') || '').attr('style', node.attr('style') || ''), /** * Instance ID. Required to get/set cookie * * @type String **/ id = node.attr('id') || node.attr('id', 'elfauto' + $('.elfinder').length).attr('id'), /** * Events namespace * * @type String **/ namespace = 'elfinder-' + id, /** * Mousedown event * * @type String **/ mousedown = 'mousedown.'+namespace, /** * Keydown event * * @type String **/ keydown = 'keydown.'+namespace, /** * Keypress event * * @type String **/ keypress = 'keypress.'+namespace, /** * Keypup event * * @type String **/ keyup = 'keyup.'+namespace, /** * Is shortcuts/commands enabled * * @type Boolean **/ enabled = false, /** * Store enabled value before ajax request * * @type Boolean **/ prevEnabled = false, /** * List of build-in events which mapped into methods with same names * * @type Array **/ events = ['enable', 'disable', 'load', 'open', 'reload', 'select', 'add', 'remove', 'change', 'dblclick', 'getfile', 'lockfiles', 'unlockfiles', 'selectfiles', 'unselectfiles', 'dragstart', 'dragstop', 'search', 'searchend', 'viewchange'], /** * Rules to validate data from backend * * @type Object **/ rules = {}, /** * Current working directory hash * * @type String **/ cwd = '', /** * Current working directory options default * * @type Object **/ cwdOptionsDefault = { path : '', url : '', tmbUrl : '', disabled : [], separator : '/', archives : [], extract : [], copyOverwrite : true, uploadOverwrite : true, uploadMaxSize : 0, jpgQuality : 100, tmbCrop : false, tmbReqCustomData : false, tmb : false // old API }, /** * Current working directory options * * @type Object **/ cwdOptions = {}, /** * Files/dirs cache * * @type Object **/ files = {}, /** * Hidden Files/dirs cache * * @type Object **/ hiddenFiles = {}, /** * Files/dirs hash cache of each dirs * * @type Object **/ ownFiles = {}, /** * Selected files hashes * * @type Array **/ selected = [], /** * Events listeners * * @type Object **/ listeners = {}, /** * Shortcuts * * @type Object **/ shortcuts = {}, /** * Buffer for copied files * * @type Array **/ clipboard = [], /** * Copied/cuted files hashes * Prevent from remove its from cache. * Required for dispaly correct files names in error messages * * @type Object **/ remember = {}, /** * Queue for 'open' requests * * @type Array **/ queue = [], /** * Queue for only cwd requests e.g. `tmb` * * @type Array **/ cwdQueue = [], /** * Commands prototype * * @type Object **/ base = new self.command(self), /** * elFinder node width * * @type String * @default "auto" **/ width = 'auto', /** * elFinder node height * Number: pixcel or String: Number + "%" * * @type Number | String * @default 400 **/ height = 400, /** * Base node object or selector * Element which is the reference of the height percentage * * @type Object|String * @default null | $(window) (if height is percentage) **/ heightBase = null, /** * MIME type list(Associative array) handled as a text file * * @type Object|null */ textMimes = null, /** * elfinder path for sound played on remove * @type String * @default ./sounds/ **/ soundPath = 'sounds/', /** * JSON.stringify of previous fm.sorters * @type String */ prevSorterStr = '', /** * Map table of file extention to MIME-Type * @type Object */ extToMimeTable, /** * Disabled page unload function * @type Boolean */ diableUnloadCheck = false, beeper = $(document.createElement('audio')).hide().appendTo('body')[0], syncInterval, autoSyncStop = 0, uiCmdMapPrev = '', gcJobRes = null, open = function(data) { // NOTES: Do not touch data object var volumeid, contextmenu, emptyDirs = {}, stayDirs = {}, rmClass, hashes, calc, gc, collapsed, prevcwd, sorterStr, diff; if (self.api >= 2.1) { // support volume driver option `uiCmdMap` self.commandMap = (data.options.uiCmdMap && Object.keys(data.options.uiCmdMap).length)? data.options.uiCmdMap : {}; if (uiCmdMapPrev !== JSON.stringify(self.commandMap)) { uiCmdMapPrev = JSON.stringify(self.commandMap); } } else { self.options.sync = 0; } if (data.init) { // init - reset cache files = {}; ownFiles = {}; } else { // remove only files from prev cwd // and collapsed directory (included 100+ directories) to empty for perfomance tune in DnD prevcwd = cwd; rmClass = 'elfinder-subtree-loaded ' + self.res('class', 'navexpand'); collapsed = self.res('class', 'navcollapse'); hashes = Object.keys(files); calc = function(i) { if (!files[i]) { return true; } var isDir = (files[i].mime === 'directory'), phash = files[i].phash, pnav; if ( (!isDir || emptyDirs[phash] || (!stayDirs[phash] && self.navHash2Elm(files[i].hash).is(':hidden') && self.navHash2Elm(phash).next('.elfinder-navbar-subtree').children().length > 100 ) ) && (isDir || phash !== cwd) && ! remember[i] ) { if (isDir && !emptyDirs[phash]) { emptyDirs[phash] = true; self.navHash2Elm(phash) .removeClass(rmClass) .next('.elfinder-navbar-subtree').empty(); } deleteCache(files[i]); } else if (isDir) { stayDirs[phash] = true; } }; gc = function() { if (hashes.length) { gcJobRes && gcJobRes._abort(); gcJobRes = self.asyncJob(calc, hashes, { interval : 20, numPerOnce : 100 }).done(function() { var hd = self.storage('hide') || {items: {}}; if (Object.keys(hiddenFiles).length) { $.each(hiddenFiles, function(h) { if (!hd.items[h]) { delete hiddenFiles[h]; } }); } }); } }; self.trigger('filesgc').one('filesgc', function() { hashes = []; }); self.one('opendone', function() { if (prevcwd !== cwd) { if (! node.data('lazycnt')) { gc(); } else { self.one('lazydone', gc); } } }); } self.sorters = {}; cwd = data.cwd.hash; cache(data.files); if (!files[cwd]) { cache([data.cwd]); } else { diff = self.diff([data.cwd], true); if (diff.changed.length) { cache(diff.changed, 'change'); self.change({changed: diff.changed}); } } data.changed && data.changed.length && cache(data.changed, 'change'); // trigger event 'sorterupdate' sorterStr = JSON.stringify(self.sorters); if (prevSorterStr !== sorterStr) { self.trigger('sorterupdate'); prevSorterStr = sorterStr; } self.lastDir(cwd); self.autoSync(); }, /** * Store info about files/dirs in "files" object. * * @param Array files * @param String data type * @return void **/ cache = function(data, type) { var type = type || 'files', keeps = ['sizeInfo', 'encoding'], defsorter = { name: true, perm: true, date: true, size: true, kind: true }, sorterChk = !self.sorters._checked && (type === 'files'), l = data.length, setSorter = function(file) { var f = file || {}, sorters = []; $.each(self.sortRules, function(key) { if (defsorter[key] || typeof f[key] !== 'undefined' || (key === 'mode' && typeof f.perm !== 'undefined')) { sorters.push(key); } }); self.sorters = self.arrayFlip(sorters, true); self.sorters._checked = true; }, changedParents = {}, hideData = self.storage('hide') || {}, hides = hideData.items || {}, f, i, i1, keepProp, parents, hidden; for (i = 0; i < l; i++) { f = Object.assign({}, data[i]); hidden = (!hideData.show && hides[f.hash])? true : false; if (f.name && f.hash && f.mime) { if (!hidden) { if (sorterChk && f.phash === cwd) { setSorter(f); sorterChk = false; } if (f.phash && (type === 'add' || (type === 'change' && (!files[f.hash] || f.size !== files[f.hash])))) { if (parents = self.parents(f.phash)) { $.each(parents, function() { changedParents[this] = true; }); } } } if (files[f.hash]) { for (i1 =0; i1 < keeps.length; i1++) { if(files[f.hash][keeps[i1]] && ! f[keeps[i1]]) { f[keeps[i1]] = files[f.hash][keeps[i1]]; } } if (f.sizeInfo && !f.size) { f.size = f.sizeInfo.size; } deleteCache(files[f.hash], true); } if (hides[f.hash]) { hiddenFiles[f.hash] = f; } if (hidden) { l--; data.splice(i--, 1); } else { files[f.hash] = f; if (f.mime === 'directory' && !ownFiles[f.hash]) { ownFiles[f.hash] = {}; } if (f.phash) { if (!ownFiles[f.phash]) { ownFiles[f.phash] = {}; } ownFiles[f.phash][f.hash] = true; } } } } // delete sizeInfo cache $.each(Object.keys(changedParents), function() { var target = files[this]; if (target && target.sizeInfo) { delete target.sizeInfo; } }); // for empty folder sorterChk && setSorter(); }, /** * Delete file object from files caches * * @param Array removed hashes * @return void */ remove = function(removed) { var l = removed.length, roots = {}, rm = function(hash) { var file = files[hash], i; if (file) { if (file.mime === 'directory') { if (roots[hash]) { delete self.roots[roots[hash]]; } // restore stats of deleted root parent directory $.each(self.leafRoots, function(phash, roots) { var idx, pdir; if ((idx = $.inArray(hash, roots))!== -1) { if (roots.length === 1) { if ((pdir = Object.assign({}, files[phash])) && pdir._realStats) { $.each(pdir._realStats, function(k, v) { pdir[k] = v; }); remove(files[phash]._realStats); self.change({ changed: [pdir] }); } delete self.leafRoots[phash]; } else { self.leafRoots[phash].splice(idx, 1); } } }); if (self.searchStatus.state < 2) { $.each(files, function(h, f) { f.phash == hash && rm(h); }); } } if (file.phash) { if (parents = self.parents(file.phash)) { $.each(parents, function() { changedParents[this] = true; }); } } deleteCache(files[hash]); } }, changedParents = {}, parents; $.each(self.roots, function(k, v) { roots[v] = k; }); while (l--) { rm(removed[l]); } // delete sizeInfo cache $.each(Object.keys(changedParents), function() { var target = files[this]; if (target && target.sizeInfo) { delete target.sizeInfo; } }); }, /** * Update file object in files caches * * @param Array changed file objects * @return void * @deprecated should be use `cache(updatesArrayData, 'change');` */ change = function(changed) { $.each(changed, function(i, file) { var hash = file.hash; if (files[hash]) { $.each(Object.keys(files[hash]), function(i, v){ if (typeof file[v] === 'undefined') { delete files[hash][v]; } }); } files[hash] = files[hash] ? Object.assign(files[hash], file) : file; }); }, /** * Delete cache data of files, ownFiles and self.optionsByHashes * * @param Object file * @param Boolean update * @return void */ deleteCache = function(file, update) { var hash = file.hash, phash = file.phash; if (phash && ownFiles[phash]) { delete ownFiles[phash][hash]; } if (!update) { ownFiles[hash] && delete ownFiles[hash]; self.optionsByHashes[hash] && delete self.optionsByHashes[hash]; } delete files[hash]; }, /** * Maximum number of concurrent connections on request * * @type Number */ requestMaxConn, /** * Current number of connections * * @type Number */ requestCnt = 0, /** * Queue waiting for connection * * @type Array */ requestQueue = [], /** * Current open command instance * * @type Object */ currentOpenCmd = null, /** * Exec shortcut * * @param jQuery.Event keydown/keypress event * @return void */ execShortcut = function(e) { var code = e.keyCode, ctrlKey = !!(e.ctrlKey || e.metaKey), isMousedown = e.type === 'mousedown', ddm; !isMousedown && (self.keyState.keyCode = code); self.keyState.ctrlKey = ctrlKey; self.keyState.shiftKey = e.shiftKey; self.keyState.metaKey = e.metaKey; self.keyState.altKey = e.altKey; if (isMousedown) { return; } else if (e.type === 'keyup') { self.keyState.keyCode = null; return; } if (enabled) { $.each(shortcuts, function(i, shortcut) { if (shortcut.type == e.type && shortcut.keyCode == code && shortcut.shiftKey == e.shiftKey && shortcut.ctrlKey == ctrlKey && shortcut.altKey == e.altKey) { e.preventDefault(); e.stopPropagation(); shortcut.callback(e, self); self.debug('shortcut-exec', i+' : '+shortcut.description); } }); // prevent tab out of elfinder if (code == $.ui.keyCode.TAB && !$(e.target).is(':input')) { e.preventDefault(); } // cancel any actions by [Esc] key if (e.type === 'keydown' && code == $.ui.keyCode.ESCAPE) { // copy or cut if (! node.find('.ui-widget:visible').length) { self.clipboard().length && self.clipboard([]); } // dragging if ($.ui.ddmanager) { ddm = $.ui.ddmanager.current; ddm && ddm.helper && ddm.cancel(); } // button menus self.toHide(node.find('.ui-widget.elfinder-button-menu.elfinder-frontmost:visible')); // trigger keydownEsc self.trigger('keydownEsc', e); } } }, date = new Date(), utc, i18n, inFrame = (window.parent !== window), parentIframe = (function() { var pifm, ifms; if (inFrame) { try { ifms = $('iframe', window.parent.document); if (ifms.length) { $.each(ifms, function(i, ifm) { if (ifm.contentWindow === window) { pifm = $(ifm); return false; } }); } } catch(e) {} } return pifm; })(), /** * elFinder boot up function * * @type Function */ bootUp, /** * Original function of XMLHttpRequest.prototype.send * * @type Function */ savedXhrSend; // opts must be an object if (!opts) { opts = {}; } // set UA.Angle, UA.Rotated for mobile devices if (self.UA.Mobile) { $(window).on('orientationchange.'+namespace, function() { var a = ((screen && screen.orientation && screen.orientation.angle) || window.orientation || 0) + 0; if (a === -90) { a = 270; } self.UA.Angle = a; self.UA.Rotated = a % 180 === 0? false : true; }).trigger('orientationchange.'+namespace); } // check opt.bootCallback if (opts.bootCallback && typeof opts.bootCallback === 'function') { (function() { var func = bootCallback, opFunc = opts.bootCallback; bootCallback = function(fm, extraObj) { func && typeof func === 'function' && func.call(this, fm, extraObj); opFunc.call(this, fm, extraObj); }; })(); } delete opts.bootCallback; /** * Protocol version * * @type String **/ this.api = null; /** * elFinder use new api * * @type Boolean **/ this.newAPI = false; /** * elFinder use old api * * @type Boolean **/ this.oldAPI = false; /** * Net drivers names * * @type Array **/ this.netDrivers = []; /** * Base URL of elfFinder library starting from Manager HTML * * @type String */ this.baseUrl = ''; /** * Base URL of i18n js files * baseUrl + "js/i18n/" when empty value * * @type String */ this.i18nBaseUrl = ''; /** * Base URL of worker js files * baseUrl + "js/worker/" when empty value * * @type String */ this.workerBaseUrl = ''; /** * Is elFinder CSS loaded * * @type Boolean */ this.cssloaded = false; /** * Current theme object * * @type Object|Null */ this.theme = null; this.mimesCanMakeEmpty = {}; /** * Callback function at boot up that option specified at elFinder starting * * @type Function */ this.bootCallback; /** * Callback function at reload(restart) elFinder * * @type Function */ this.reloadCallback; /** * ID. Required to create unique cookie name * * @type String **/ this.id = id; /** * Method to store/fetch data * * @type Function **/ this.storage = (function() { try { if ('localStorage' in window && window.localStorage !== null) { if (self.UA.Safari) { // check for Mac/iOS safari private browsing mode window.localStorage.setItem('elfstoragecheck', 1); window.localStorage.removeItem('elfstoragecheck'); } return self.localStorage; } else { return self.cookie; } } catch (e) { return self.cookie; } })(); /** * Set pause page unload check function or Get state * * @param Boolean state To set state * @param Boolean keep Keep disabled * @return Boolean|void */ this.pauseUnloadCheck = function(state, keep) { if (typeof state === 'undefined') { return diableUnloadCheck; } else { diableUnloadCheck = !!state; if (state && !keep) { requestAnimationFrame(function() { diableUnloadCheck = false; }); } } }; /** * Configuration options * * @type Object **/ //this.options = $.extend(true, {}, this._options, opts); this.options = Object.assign({}, this._options); // for old type configuration if (opts.uiOptions) { if (opts.uiOptions.toolbar && Array.isArray(opts.uiOptions.toolbar)) { if ($.isPlainObject(opts.uiOptions.toolbar[opts.uiOptions.toolbar.length - 1])) { self.options.uiOptions.toolbarExtra = Object.assign(self.options.uiOptions.toolbarExtra || {}, opts.uiOptions.toolbar.pop()); } } } // Overwrite if opts value is an array (function() { var arrOv = function(obj, base) { if ($.isPlainObject(obj)) { $.each(obj, function(k, v) { if ($.isPlainObject(v)) { if (!base[k]) { base[k] = {}; } arrOv(v, base[k]); } else { base[k] = v; } }); } }; arrOv(opts, self.options); })(); // join toolbarExtra to toolbar this.options.uiOptions.toolbar.push(this.options.uiOptions.toolbarExtra); delete this.options.uiOptions.toolbarExtra; /** * Arrays that has to unbind events * * @type Object */ this.toUnbindEvents = {}; /** * Attach listener to events * To bind to multiply events at once, separate events names by space * * @param String event(s) name(s) * @param Object event handler or {done: handler} * @param Boolean priority first * @return elFinder */ this.bind = function(event, callback, priorityFirst) { var i, len; if (callback && (typeof callback === 'function' || typeof callback.done === 'function')) { event = ('' + event).toLowerCase().replace(/^\s+|\s+$/g, '').split(/\s+/); len = event.length; for (i = 0; i < len; i++) { if (listeners[event[i]] === void(0)) { listeners[event[i]] = []; } listeners[event[i]][priorityFirst? 'unshift' : 'push'](callback); } } return this; }; /** * Remove event listener if exists * To un-bind to multiply events at once, separate events names by space * * @param String event(s) name(s) * @param Function callback * @return elFinder */ this.unbind = function(event, callback) { var i, len, l, ci; event = ('' + event).toLowerCase().split(/\s+/); len = event.length; for (i = 0; i < len; i++) { if (l = listeners[event[i]]) { ci = $.inArray(callback, l); ci > -1 && l.splice(ci, 1); } } callback = null; return this; }; /** * Fire event - send notification to all event listeners * In the callback `this` becames an event object * * @param String event type * @param Object data to send across event * @param Boolean allow modify data (call by reference of data) default: true * @return elFinder */ this.trigger = function(evType, data, allowModify) { var type = evType.toLowerCase(), isopen = (type === 'open'), dataIsObj = (typeof data === 'object'), handlers = listeners[type] || [], dones = [], i, l, jst, event; this.debug('event-'+type, data); if (! dataIsObj || typeof allowModify === 'undefined') { allowModify = true; } if (l = handlers.length) { event = $.Event(type); if (data) { data._getEvent = function() { return event; }; } if (allowModify) { event.data = data; } for (i = 0; i < l; i++) { if (! handlers[i]) { // probably un-binded this handler continue; } // handler is $.Deferred(), call all functions upon completion if (handlers[i].done) { dones.push(handlers[i].done); continue; } // set `event.data` only callback has argument if (handlers[i].length) { if (!allowModify) { // to avoid data modifications. remember about "sharing" passing arguments in js :) if (typeof jst === 'undefined') { try { jst = JSON.stringify(data); } catch(e) { jst = false; } } event.data = jst? JSON.parse(jst) : data; } } try { if (handlers[i].call(event, event, this) === false || event.isDefaultPrevented()) { this.debug('event-stoped', event.type); break; } } catch (ex) { window.console && window.console.log && window.console.log(ex); } } // call done functions if (l = dones.length) { for (i = 0; i < l; i++) { try { if (dones[i].call(event, event, this) === false || event.isDefaultPrevented()) { this.debug('event-stoped', event.type + '(done)'); break; } } catch (ex) { window.console && window.console.log && window.console.log(ex); } } } if (this.toUnbindEvents[type] && this.toUnbindEvents[type].length) { $.each(this.toUnbindEvents[type], function(i, v) { self.unbind(v.type, v.callback); }); delete this.toUnbindEvents[type]; } } return this; }; /** * Get event listeners * * @param String event type * @return Array listed event functions */ this.getListeners = function(event) { return event? listeners[event.toLowerCase()] : listeners; }; // set fm.baseUrl this.baseUrl = (function() { var myTag, base, baseUrl; if (self.options.baseUrl) { return self.options.baseUrl; } else { baseUrl = ''; myTag = null; $('head > script').each(function() { if (this.src && this.src.match(/js\/elfinder(?:-[a-z0-9_-]+)?\.(?:min|full)\.js(?:$|\?)/i)) { myTag = $(this); return false; } }); if (myTag) { baseUrl = myTag.attr('src').replace(/js\/[^\/]+$/, ''); if (! baseUrl.match(/^(https?\/\/|\/)/)) { // check tag if (base = $('head > base[href]').attr('href')) { baseUrl = base.replace(/\/$/, '') + '/' + baseUrl; } } } if (baseUrl !== '') { self.options.baseUrl = baseUrl; } else { if (! self.options.baseUrl) { self.options.baseUrl = './'; } baseUrl = self.options.baseUrl; } return baseUrl; } })(); this.i18nBaseUrl = (this.options.i18nBaseUrl || this.baseUrl + 'js/i18n').replace(/\/$/, '') + '/'; this.workerBaseUrl = (this.options.workerBaseUrl || this.baseUrl + 'js/worker').replace(/\/$/, '') + '/'; this.options.maxErrorDialogs = Math.max(1, parseInt(this.options.maxErrorDialogs || 5)); // set dispInlineRegex cwdOptionsDefault.dispInlineRegex = this.options.dispInlineRegex; // auto load required CSS if (this.options.cssAutoLoad) { (function() { var baseUrl = self.baseUrl, myCss = $('head > link[href$="css/elfinder.min.css"],link[href$="css/elfinder.full.css"]:first').length, rmTag = function() { if (node.data('cssautoloadHide')) { node.data('cssautoloadHide').remove(); node.removeData('cssautoloadHide'); } }, loaded = function() { if (!self.cssloaded) { rmTag(); self.cssloaded = true; self.trigger('cssloaded'); } }; if (! myCss) { // to request CSS auto loading self.cssloaded = null; } // additional CSS files if (Array.isArray(self.options.cssAutoLoad)) { if (!self.options.themes.default) { // set as default theme self.options.themes = Object.assign({ 'default' : { 'name': 'default', 'cssurls': self.options.cssAutoLoad } }, self.options.themes); if (!self.options.theme) { self.options.theme = 'default'; } } else { if (self.cssloaded === true) { self.loadCss(self.options.cssAutoLoad); } else { self.bind('cssloaded', function() { self.loadCss(self.options.cssAutoLoad); }); } } } // try to load main css if (self.cssloaded === null) { // hide elFinder node while css loading node.addClass('elfinder') .data('cssautoloadHide', $('')); $('head').append(node.data('cssautoloadHide')); // set default theme if (!self.options.themes.default) { self.options.themes = Object.assign({ 'default' : { 'name': 'default', 'cssurls': 'css/theme.css', 'author': 'elFinder Project', 'license': '3-clauses BSD' } }, self.options.themes); if (!self.options.theme) { self.options.theme = 'default'; } } // Delay 'visibility' check it required for browsers such as Safari requestAnimationFrame(function() { if (node.css('visibility') === 'hidden') { // load CSS self.loadCss([baseUrl+'css/elfinder.min.css'], { dfd: $.Deferred().done(function() { loaded(); }).fail(function() { rmTag(); if (!self.cssloaded) { self.cssloaded = false; self.bind('init', function() { if (!self.cssloaded) { self.error(['errRead', 'CSS (elfinder.min)']); } }); } }) }); } else { loaded(); } }); } })(); } // load theme if exists (function() { var theme, themes = self.options.themes, ids = Object.keys(themes || {}); if (ids.length) { theme = self.storage('theme') || self.options.theme; if (!themes[theme]) { theme = ids[0]; } if (self.cssloaded) { self.changeTheme(theme); } else { self.bind('cssloaded', function() { self.changeTheme(theme); }); } } })(); /** * Volume option to set the properties of the root Stat * * @type Object */ this.optionProperties = { icon: void(0), csscls: void(0), tmbUrl: void(0), uiCmdMap: {}, netkey: void(0), disabled: [] }; if (! inFrame && ! this.options.enableAlways && $('body').children().length === 2) { // only node and beeper this.options.enableAlways = true; } // make options.debug if (this.options.debug === true) { this.options.debug = 'all'; } else if (Array.isArray(this.options.debug)) { (function() { var d = {}; $.each(self.options.debug, function() { d[this] = true; }); self.options.debug = d; })(); } else { this.options.debug = false; } /** * Original functions evacuated by conflict check * * @type Object */ this.noConflicts = {}; /** * Check and save conflicts with bootstrap etc * * @type Function */ this.noConflict = function() { $.each(conflictChecks, function(i, p) { if ($.fn[p] && typeof $.fn[p].noConflict === 'function') { self.noConflicts[p] = $.fn[p].noConflict(); } }); }; // do check conflict this.noConflict(); /** * Is elFinder over CORS * * @type Boolean **/ this.isCORS = false; // configure for CORS (function(){ if (typeof self.options.cors !== 'undefined' && self.options.cors !== null) { self.isCORS = self.options.cors? true : false; } else { var parseUrl = document.createElement('a'), parseUploadUrl, selfProtocol = window.location.protocol, portReg = function(protocol) { protocol = (!protocol || protocol === ':')? selfProtocol : protocol; return protocol === 'https:'? /\:443$/ : /\:80$/; }, selfHost = window.location.host.replace(portReg(selfProtocol), ''); parseUrl.href = opts.url; if (opts.urlUpload && (opts.urlUpload !== opts.url)) { parseUploadUrl = document.createElement('a'); parseUploadUrl.href = opts.urlUpload; } if (selfHost !== parseUrl.host.replace(portReg(parseUrl.protocol), '') || (parseUrl.protocol !== ':'&& parseUrl.protocol !== '' && (selfProtocol !== parseUrl.protocol)) || (parseUploadUrl && (selfHost !== parseUploadUrl.host.replace(portReg(parseUploadUrl.protocol), '') || (parseUploadUrl.protocol !== ':' && parseUploadUrl.protocol !== '' && (selfProtocol !== parseUploadUrl.protocol)) ) ) ) { self.isCORS = true; } } if (self.isCORS) { if (!$.isPlainObject(self.options.customHeaders)) { self.options.customHeaders = {}; } if (!$.isPlainObject(self.options.xhrFields)) { self.options.xhrFields = {}; } self.options.requestType = 'post'; self.options.customHeaders['X-Requested-With'] = 'XMLHttpRequest'; self.options.xhrFields['withCredentials'] = true; } })(); /** * Ajax request type * * @type String * @default "get" **/ this.requestType = /^(get|post)$/i.test(this.options.requestType) ? this.options.requestType.toLowerCase() : 'get'; // set `requestMaxConn` by option requestMaxConn = Math.max(parseInt(this.options.requestMaxConn), 1); /** * Custom data that given as options * * @type Object * @default {} */ this.optsCustomData = $.isPlainObject(this.options.customData) ? this.options.customData : {}; /** * Any data to send across every ajax request * * @type Object * @default {} **/ this.customData = Object.assign({}, this.optsCustomData); /** * Previous custom data from connector * * @type Object|null */ this.prevCustomData = null; /** * Any custom headers to send across every ajax request * * @type Object * @default {} */ this.customHeaders = $.isPlainObject(this.options.customHeaders) ? this.options.customHeaders : {}; /** * Any custom xhrFields to send across every ajax request * * @type Object * @default {} */ this.xhrFields = $.isPlainObject(this.options.xhrFields) ? this.options.xhrFields : {}; /** * Replace XMLHttpRequest.prototype.send to extended function for 3rd party libs XHR request etc. * * @type Function */ this.replaceXhrSend = function() { if (! savedXhrSend) { savedXhrSend = XMLHttpRequest.prototype.send; } XMLHttpRequest.prototype.send = function() { var xhr = this; // set request headers if (self.customHeaders) { $.each(self.customHeaders, function(key) { xhr.setRequestHeader(key, this); }); } // set xhrFields if (self.xhrFields) { $.each(self.xhrFields, function(key) { if (key in xhr) { xhr[key] = this; } }); } return savedXhrSend.apply(this, arguments); }; }; /** * Restore saved original XMLHttpRequest.prototype.send * * @type Function */ this.restoreXhrSend = function() { savedXhrSend && (XMLHttpRequest.prototype.send = savedXhrSend); }; /** * command names for into queue for only cwd requests * these commands aborts before `open` request * * @type Array * @default ['tmb', 'parents'] */ this.abortCmdsOnOpen = this.options.abortCmdsOnOpen || ['tmb', 'parents']; /** * ui.nav id prefix * * @type String */ this.navPrefix = 'nav' + (elFinder.prototype.uniqueid? elFinder.prototype.uniqueid : '') + '-'; /** * ui.cwd id prefix * * @type String */ this.cwdPrefix = elFinder.prototype.uniqueid? ('cwd' + elFinder.prototype.uniqueid + '-') : ''; // Increment elFinder.prototype.uniqueid ++elFinder.prototype.uniqueid; /** * URL to upload files * * @type String **/ this.uploadURL = opts.urlUpload || opts.url; /** * Events namespace * * @type String **/ this.namespace = namespace; /** * Today timestamp * * @type Number **/ this.today = (new Date(date.getFullYear(), date.getMonth(), date.getDate())).getTime()/1000; /** * Yesterday timestamp * * @type Number **/ this.yesterday = this.today - 86400; utc = this.options.UTCDate ? 'UTC' : ''; this.getHours = 'get'+utc+'Hours'; this.getMinutes = 'get'+utc+'Minutes'; this.getSeconds = 'get'+utc+'Seconds'; this.getDate = 'get'+utc+'Date'; this.getDay = 'get'+utc+'Day'; this.getMonth = 'get'+utc+'Month'; this.getFullYear = 'get'+utc+'FullYear'; /** * elFinder node z-index (auto detect on elFinder load) * * @type null | Number **/ this.zIndex; /** * Current search status * * @type Object */ this.searchStatus = { state : 0, // 0: search ended, 1: search started, 2: in search result query : '', target : '', mime : '', mixed : false, // in multi volumes search: false or Array that target volume ids ininc : false // in incremental search }; /** * Interface language * * @type String * @default "en" **/ this.lang = this.storage('lang') || this.options.lang; if (this.lang === 'jp') { this.lang = this.options.lang = 'ja'; } this.viewType = this.storage('view') || this.options.defaultView || 'icons'; this.sortType = this.storage('sortType') || this.options.sortType || 'name'; this.sortOrder = this.storage('sortOrder') || this.options.sortOrder || 'asc'; this.sortStickFolders = this.storage('sortStickFolders'); if (this.sortStickFolders === null) { this.sortStickFolders = !!this.options.sortStickFolders; } else { this.sortStickFolders = !!this.sortStickFolders; } this.sortAlsoTreeview = this.storage('sortAlsoTreeview'); if (this.sortAlsoTreeview === null || this.options.sortAlsoTreeview === null) { this.sortAlsoTreeview = !!this.options.sortAlsoTreeview; } else { this.sortAlsoTreeview = !!this.sortAlsoTreeview; } this.sortRules = $.extend(true, {}, this._sortRules, this.options.sortRules); $.each(this.sortRules, function(name, method) { if (typeof method != 'function') { delete self.sortRules[name]; } }); this.compare = $.proxy(this.compare, this); /** * Delay in ms before open notification dialog * * @type Number * @default 500 **/ this.notifyDelay = this.options.notifyDelay > 0 ? parseInt(this.options.notifyDelay) : 500; /** * Dragging UI Helper object * * @type jQuery | null **/ this.draggingUiHelper = null; /** * Base droppable options * * @type Object **/ this.droppable = { greedy : true, tolerance : 'pointer', accept : '.elfinder-cwd-file-wrapper,.elfinder-navbar-dir,.elfinder-cwd-file,.elfinder-cwd-filename', hoverClass : this.res('class', 'adroppable'), classes : { // Deprecated hoverClass jQueryUI>=1.12.0 'ui-droppable-hover': this.res('class', 'adroppable') }, autoDisable: true, // elFinder original, see jquery.elfinder.js drop : function(e, ui) { var dst = $(this), targets = $.grep(ui.helper.data('files')||[], function(h) { return h? true : false; }), result = [], dups = [], faults = [], isCopy = ui.helper.hasClass('elfinder-drag-helper-plus'), c = 'class', cnt, hash, i, h; if (typeof e.button === 'undefined' || ui.helper.data('namespace') !== namespace || ! self.insideWorkzone(e.pageX, e.pageY)) { return false; } if (dst.hasClass(self.res(c, 'cwdfile'))) { hash = self.cwdId2Hash(dst.attr('id')); } else if (dst.hasClass(self.res(c, 'navdir'))) { hash = self.navId2Hash(dst.attr('id')); } else { hash = cwd; } cnt = targets.length; while (cnt--) { h = targets[cnt]; // ignore drop into itself or in own location if (h != hash && files[h].phash != hash) { result.push(h); } else { ((isCopy && h !== hash && files[hash].write)? dups : faults).push(h); } } if (faults.length) { return false; } ui.helper.data('droped', true); if (dups.length) { ui.helper.hide(); self.exec('duplicate', dups, {_userAction: true}); } if (result.length) { ui.helper.hide(); self.clipboard(result, !isCopy); self.exec('paste', hash, {_userAction: true}, hash).always(function(){ self.clipboard([]); self.trigger('unlockfiles', {files : targets}); }); self.trigger('drop', {files : targets}); } } }; /** * Return true if filemanager is active * * @return Boolean **/ this.enabled = function() { return enabled && this.visible(); }; /** * Return true if filemanager is visible * * @return Boolean **/ this.visible = function() { return node[0].elfinder && node.is(':visible'); }; /** * Return file is root? * * @param Object target file object * @return Boolean */ this.isRoot = function(file) { return (file.isroot || ! file.phash)? true : false; }; /** * Return root dir hash for current working directory * * @param String target hash * @param Boolean include fake parent (optional) * @return String */ this.root = function(hash, fake) { hash = hash || cwd; var dir, i; if (! fake) { $.each(self.roots, function(id, rhash) { if (hash.indexOf(id) === 0) { dir = rhash; return false; } }); if (dir) { return dir; } } dir = files[hash]; while (dir && dir.phash && (fake || ! dir.isroot)) { dir = files[dir.phash]; } if (dir) { return dir.hash; } while (i in files && files.hasOwnProperty(i)) { dir = files[i]; if (dir.mime === 'directory' && !dir.phash && dir.read) { return dir.hash; } } return ''; }; /** * Return current working directory info * * @return Object */ this.cwd = function() { return files[cwd] || {}; }; /** * Return required cwd option * * @param String option name * @param String target hash (optional) * @return mixed */ this.option = function(name, target) { var res, item; target = target || cwd; if (self.optionsByHashes[target] && typeof self.optionsByHashes[target][name] !== 'undefined') { return self.optionsByHashes[target][name]; } if (self.hasVolOptions && cwd !== target && (!(item = self.file(target)) || item.phash !== cwd)) { res = ''; $.each(self.volOptions, function(id, opt) { if (target.indexOf(id) === 0) { res = opt[name] || ''; return false; } }); return res; } else { return cwdOptions[name] || ''; } }; /** * Return disabled commands by each folder * * @param Array target hashes * @return Array */ this.getDisabledCmds = function(targets, flip) { var disabled = {'hidden': true}; if (! Array.isArray(targets)) { targets = [ targets ]; } $.each(targets, function(i, h) { var disCmds = self.option('disabledFlip', h); if (disCmds) { Object.assign(disabled, disCmds); } }); return flip? disabled : Object.keys(disabled); }; /** * Return file data from current dir or tree by it's hash * * @param String file hash * @return Object */ this.file = function(hash, alsoHidden) { return hash? (files[hash] || (alsoHidden? hiddenFiles[hash] : void(0))) : void(0); }; /** * Return all cached files * * @param String parent hash * @return Object */ this.files = function(phash) { var items = {}; if (phash) { if (!ownFiles[phash]) { return {}; } $.each(ownFiles[phash], function(h) { if (files[h]) { items[h] = files[h]; } else { delete ownFiles[phash][h]; } }); return Object.assign({}, items); } return Object.assign({}, files); }; /** * Return list of file parents hashes include file hash * * @param String file hash * @return Array */ this.parents = function(hash) { var parents = [], dir; while (hash && (dir = this.file(hash))) { parents.unshift(dir.hash); hash = dir.phash; } return parents; }; this.path2array = function(hash, i18) { var file, path = []; while (hash) { if ((file = files[hash]) && file.hash) { path.unshift(i18 && file.i18 ? file.i18 : file.name); hash = file.isroot? null : file.phash; } else { path = []; break; } } return path; }; /** * Return file path or Get path async with jQuery.Deferred * * @param Object file * @param Boolean i18 * @param Object asyncOpt * @return String|jQuery.Deferred */ this.path = function(hash, i18, asyncOpt) { var path = files[hash] && files[hash].path ? files[hash].path : this.path2array(hash, i18).join(cwdOptions.separator); if (! asyncOpt || ! files[hash]) { return path; } else { asyncOpt = Object.assign({notify: {type : 'parents', cnt : 1, hideCnt : true}}, asyncOpt); var dfd = $.Deferred(), notify = asyncOpt.notify, noreq = false, req = function() { self.request({ data : {cmd : 'parents', target : files[hash].phash}, notify : notify, preventFail : true }) .done(done) .fail(function() { dfd.reject(); }); }, done = function() { self.one('parentsdone', function() { path = self.path(hash, i18); if (path === '' && noreq) { //retry with request noreq = false; req(); } else { if (notify) { clearTimeout(ntftm); notify.cnt = -(parseInt(notify.cnt || 0)); self.notify(notify); } dfd.resolve(path); } }); }, ntftm; if (path) { return dfd.resolve(path); } else { if (self.ui['tree']) { // try as no request if (notify) { ntftm = setTimeout(function() { self.notify(notify); }, self.notifyDelay); } noreq = true; done(true); } else { req(); } return dfd; } } }; /** * Return file url if set * * @param String file hash * @param Object Options * @return String|Object of jQuery Deferred */ this.url = function(hash, o) { var file = files[hash], opts = o || {}, async = opts.async || false, temp = opts.temporary || false, onetm = (opts.onetime && self.option('onetimeUrl', hash)) || false, absurl = opts.absurl || false, dfrd = (async || onetm)? $.Deferred() : null, filter = function(url) { if (url && absurl) { url = self.convAbsUrl(url); } return url; }, getUrl = function(url) { if (url) { return filter(url); } if (file.url) { return filter(file.url); } if (typeof baseUrl === 'undefined') { baseUrl = getBaseUrl(); } if (baseUrl) { return filter(baseUrl + $.map(self.path2array(hash), function(n) { return encodeURIComponent(n); }).slice(1).join('/')); } var params = Object.assign({}, self.customData, { cmd: 'file', target: file.hash }); if (self.oldAPI) { params.cmd = 'open'; params.current = file.phash; } return filter(self.options.url + (self.options.url.indexOf('?') === -1 ? '?' : '&') + $.param(params, true)); }, getBaseUrl = function() { return self.option('url', (!self.isRoot(file) && file.phash) || file.hash); }, baseUrl, res; if (!file || !file.read) { return async? dfrd.resolve('') : ''; } if (onetm && (!file.url || file.url == '1') && !(baseUrl = getBaseUrl())) { async = true; this.request({ data : { cmd : 'url', target : hash, options : { onetime: 1 } }, preventDefault : true, options: {async: async}, notify: {type : 'file', cnt : 1, hideCnt : true}, progressBar: opts.progressBar }).done(function(data) { dfrd.resolve(filter(data.url || '')); }).fail(function() { dfrd.resolve(''); }); } else { if (file.url == '1' || (temp && !file.url && !(baseUrl = getBaseUrl()))) { this.request({ data : { cmd : 'url', target : hash, options : { temporary: temp? 1 : 0 } }, preventDefault : true, options: {async: async}, notify: async? {type : temp? 'file' : 'url', cnt : 1, hideCnt : true} : {}, progressBar: opts.progressBar }) .done(function(data) { file.url = data.url || ''; }) .fail(function() { file.url = ''; }) .always(function() { var url; if (file.url && temp) { url = file.url; file.url = '1'; // restore } if (async) { dfrd.resolve(getUrl(url)); } else { return getUrl(url); } }); } else { if (async) { dfrd.resolve(getUrl()); } else { return getUrl(); } } } if (async) { return dfrd; } }; /** * Return file url for the extarnal service * * @param String hash The hash * @param Object options The options * @return Object jQuery Deferred */ this.forExternalUrl = function(hash, options) { var onetime = self.option('onetimeUrl', hash), opts = { async: true, absurl: true }; opts[onetime? 'onetime' : 'temporary'] = true; return self.url(hash, Object.assign({}, options, opts)); }; /** * Return file url for open in elFinder * * @param String file hash * @param Boolean for download link * @param Object requestOpts The request options * @return String */ this.openUrl = function(hash, download, callback, requestOpts) { var file = files[hash], url = '', onetimeSize = (requestOpts || {}).onetimeSize || (5 * 1024 * 1024); if (!file || !file.read) { return ''; } if (!download || download === 'sameorigin') { if (file.url) { if (file.url != 1) { url = file.url; } } else if (cwdOptions.url && file.hash.indexOf(self.cwd().volumeid) === 0) { url = cwdOptions.url + $.map(this.path2array(hash), function(n) { return encodeURIComponent(n); }).slice(1).join('/'); } if (!download || this.isSameOrigin(url)) { if (url) { url += (url.match(/\?/)? '&' : '?') + '_'.repeat((url.match(/[\?&](_+)t=/g) || ['&t=']).sort().shift().match(/[\?&](_*)t=/)[1].length + 1) + 't=' + (file.ts || parseInt(+new Date()/1000)); if (callback) { callback(url); return; } else { return url; } } } } if (callback && this.hasParrotHeaders()) { if (!requestOpts) { requestOpts = {}; } else { delete requestOpts.onetimeSize; } if (!requestOpts.onetime && !requestOpts.temporary && file.size > onetimeSize) { if (file.mime.match(/^video|audio/)) { requestOpts.temporary = true; } else { requestOpts.onetime = true; } } if (requestOpts.onetime || requestOpts.temporary) { return this.url(file.hash, Object.assign({ async: true }, requestOpts)).done(function(url) { callback(url); }).fail(function() { callback(''); }); } else { return this.getContents(hash, 'blob', requestOpts).done(function(blob){ url = (window.URL || window.webkitURL).createObjectURL(blob); callback(url); }).fail(function() { callback(''); }); } } else { url = this.options.url; url = url + (url.indexOf('?') === -1 ? '?' : '&') + (this.oldAPI ? 'cmd=open¤t='+file.phash : 'cmd=file') + '&target=' + file.hash + '&_t=' + (file.ts || parseInt(+new Date()/1000)); if (download === true) { url += '&download=1'; } $.each(this.customData, function(key, val) { url += '&' + encodeURIComponent(key) + '=' + encodeURIComponent(val); }); if (callback) { callback(url); return; } else { return url; } } }; /** * Return thumbnail url * * @param Object file object * @return String */ this.tmb = function(file) { var tmbUrl, tmbCrop, cls = 'elfinder-cwd-bgurl', url = '', cData = {}, n = 0; if ($.isPlainObject(file)) { if (self.searchStatus.state && file.hash.indexOf(self.cwd().volumeid) !== 0) { tmbUrl = self.option('tmbUrl', file.hash); tmbCrop = self.option('tmbCrop', file.hash); } else { tmbUrl = cwdOptions.tmbUrl; tmbCrop = cwdOptions.tmbCrop; } if (tmbCrop) { cls += ' elfinder-cwd-bgurl-crop'; } if (tmbUrl === 'self' && file.mime.indexOf('image/') === 0) { url = self.openUrl(file.hash); cls += ' elfinder-cwd-bgself'; } else if ((self.oldAPI || tmbUrl) && file && file.tmb && file.tmb != 1) { url = tmbUrl + file.tmb; } else if (self.newAPI && file && file.tmb && file.tmb != 1) { url = file.tmb; } if (url) { if (tmbUrl !== 'self') { if (file.ts) { cData._t = file.ts; } if (cwdOptions.tmbReqCustomData && Object.keys(this.customData).length) { cData = Object.assign(cData, this.customData); } if (Object.keys(cData).length) { url += (url.match(/\?/) ? '&' : '?'); $.each(cData, function (key, val) { url += ((n++ === 0)? '' : '&') + encodeURIComponent(key) + '=' + encodeURIComponent(val); }); } } return { url: url, className: cls }; } } return false; }; /** * Return selected files hashes * * @return Array **/ this.selected = function() { return selected.slice(0); }; /** * Return selected files info * * @return Array */ this.selectedFiles = function() { return $.map(selected, function(hash) { return files[hash] ? Object.assign({}, files[hash]) : null; }); }; /** * Return true if file with required name existsin required folder * * @param String file name * @param String parent folder hash * @return Boolean */ this.fileByName = function(name, phash) { var hash; for (hash in files) { if (files.hasOwnProperty(hash) && files[hash].phash == phash && files[hash].name == name) { return files[hash]; } } }; /** * Valid data for required command based on rules * * @param String command name * @param Object cammand's data * @return Boolean */ this.validResponse = function(cmd, data) { return data.error || this.rules[this.rules[cmd] ? cmd : 'defaults'](data); }; /** * Return bytes from ini formated size * * @param String ini formated size * @return Integer */ this.returnBytes = function(val) { var last; if (isNaN(val)) { if (! val) { val = ''; } // for ex. 1mb, 1KB val = val.replace(/b$/i, ''); last = val.charAt(val.length - 1).toLowerCase(); val = val.replace(/[tgmk]$/i, ''); if (last == 't') { val = val * 1024 * 1024 * 1024 * 1024; } else if (last == 'g') { val = val * 1024 * 1024 * 1024; } else if (last == 'm') { val = val * 1024 * 1024; } else if (last == 'k') { val = val * 1024; } val = isNaN(val)? 0 : parseInt(val); } else { val = parseInt(val); if (val < 1) val = 0; } return val; }; /** * Process ajax request. * Fired events : * @todo * @example * @todo * @return $.Deferred */ this.request = function(opts) { var self = this, o = this.options, dfrd = $.Deferred(), // request ID reqId = (+ new Date()).toString(16) + Math.floor(1000 * Math.random()).toString(16), // request data data = Object.assign({}, self.customData, {mimes : o.onlyMimes}, opts.data || opts), // command name cmd = data.cmd, // request type is binary isBinary = (opts.options || {}).dataType === 'binary', // current cmd is "open" isOpen = (!opts.asNotOpen && cmd === 'open'), // call default fail callback (display error dialog) ? deffail = !(isBinary || opts.preventDefault || opts.preventFail), // call default success callback ? defdone = !(isBinary || opts.preventDefault || opts.preventDone), // current progress of receive data prog = opts.progressVal || 20, // timer of fake progress progTm = null, // whether the notification dialog is currently displayed hasNotify= false, // options for notify dialog notify = !opts.progressBar? (opts.notify? Object.assign({progress: prog * opts.notify.cnt}, opts.notify) : {}) : {}, // make cancel button cancel = !!opts.cancel, // do not normalize data - return as is raw = isBinary || !!opts.raw, // sync files on request fail syncOnFail = opts.syncOnFail, // use lazy() lazy = !!opts.lazy, // prepare function before done() prepare = opts.prepare, // navigate option object when cmd done navigate = opts.navigate, // open notify dialog timeout timeout, // use browser cache useCache = (opts.options || {}).cache, // request options options = Object.assign({ url : o.url, async : true, type : this.requestType, dataType : 'json', cache : (self.api >= 2.1029), // api >= 2.1029 has unique request ID data : data, headers : this.customHeaders, xhrFields: this.xhrFields, progress : function(e) { var p = e.loaded / e.total * 100; progTm && clearTimeout(progTm); if (opts.progressBar) { try { opts.progressBar.width(p + '%'); } catch(e) {} } else { if (hasNotify && notify.type) { p = p * notify.cnt; if (prog < p) { self.notify({ type: notify.type, progress: p - prog, cnt: 0, hideCnt: notify.hideCnt }); prog = p; } } } if (opts.progress) { try { opts.progress(e); } catch(e) {} } } }, opts.options || {}), /** * Default success handler. * Call default data handlers and fire event with command name. * * @param Object normalized response data * @return void **/ done = function(data) { data.warning && self.error(data.warning); if (isOpen) { open(data); } else { self.updateCache(data); } self.lazy(function() { // fire some event to update cache/ui data.removed && data.removed.length && self.remove(data); data.added && data.added.length && self.add(data); data.changed && data.changed.length && self.change(data); }).then(function() { // fire event with command name return self.lazy(function() { self.trigger(cmd, data, false); }); }).then(function() { // fire event with command name + 'done' return self.lazy(function() { self.trigger(cmd + 'done'); }); }).then(function() { // make toast message if (data.toasts && Array.isArray(data.toasts)) { $.each(data.toasts, function() { this.msg && self.toast(this); }); } // force update content data.sync && self.sync(); }); }, /** * Request error handler. Reject dfrd with correct error message. * * @param jqxhr request object * @param String request status * @return void **/ error = function(xhr, status) { var error, data, d = self.options.debug; switch (status) { case 'abort': error = xhr.quiet ? '' : ['errConnect', 'errAbort']; break; case 'timeout': error = ['errConnect', 'errTimeout']; break; case 'parsererror': error = ['errResponse', 'errDataNotJSON']; if (xhr.responseText) { if (! cwd || (d && (d === 'all' || d['backend-error']))) { error.push(xhr.responseText); } } break; default: if (xhr.responseText) { // check responseText, Is that JSON? try { data = JSON.parse(xhr.responseText); if (data && data.error) { error = data.error; } } catch(e) {} } if (! error) { if (xhr.status == 403) { error = ['errConnect', 'errAccess', 'HTTP error ' + xhr.status]; } else if (xhr.status == 404) { error = ['errConnect', 'errNotFound', 'HTTP error ' + xhr.status]; } else if (xhr.status >= 500) { error = ['errResponse', 'errServerError', 'HTTP error ' + xhr.status]; } else { if (xhr.status == 414 && options.type === 'get') { // retry by POST method options.type = 'post'; self.abortXHR(xhr); dfrd.xhr = xhr = self.transport.send(options).fail(error).done(success); return; } error = xhr.quiet ? '' : ['errConnect', 'HTTP error ' + xhr.status]; } } } self.trigger(cmd + 'done'); dfrd.reject({error: error}, xhr, status); }, /** * Request success handler. Valid response data and reject/resolve dfrd. * * @param Object response data * @param String request status * @return void **/ success = function(response) { // Set currrent request command name self.currentReqCmd = cmd; response.debug && self.responseDebug(response); self.setCustomHeaderByXhr(xhr); if (raw) { self.abortXHR(xhr); response && response.debug && self.debug('backend-debug', response); return dfrd.resolve(response); } if (!response) { return dfrd.reject({error :['errResponse', 'errDataEmpty']}, xhr, response); } else if (!$.isPlainObject(response)) { return dfrd.reject({error :['errResponse', 'errDataNotJSON']}, xhr, response); } else if (response.error) { if (isOpen) { // check leafRoots $.each(self.leafRoots, function(phash, roots) { self.leafRoots[phash] = $.grep(roots, function(h) { return h !== data.target; }); }); } return dfrd.reject({error :response.error}, xhr, response); } var resolve = function() { var pushLeafRoots = function(name) { if (self.leafRoots[data.target] && response[name]) { $.each(self.leafRoots[data.target], function(i, h) { var root; if (root = self.file(h)) { response[name].push(root); } }); } }, setTextMimes = function() { self.textMimes = {}; $.each(self.res('mimes', 'text'), function() { self.textMimes[this.toLowerCase()] = true; }); }, actionTarget; if (isOpen) { pushLeafRoots('files'); } else if (cmd === 'tree') { pushLeafRoots('tree'); } response = self.normalize(response); if (!self.validResponse(cmd, response)) { return dfrd.reject({error :(response.norError || 'errResponse')}, xhr, response); } if (isOpen) { if (!self.api) { self.api = response.api || 1; if (self.api == '2.0' && typeof response.options.uploadMaxSize !== 'undefined') { self.api = '2.1'; } self.newAPI = self.api >= 2; self.oldAPI = !self.newAPI; } if (response.textMimes && Array.isArray(response.textMimes)) { self.resources.mimes.text = response.textMimes; setTextMimes(); } !self.textMimes && setTextMimes(); if (response.options) { cwdOptions = Object.assign({}, cwdOptionsDefault, response.options); } if (response.netDrivers) { self.netDrivers = response.netDrivers; } if (response.maxTargets) { self.maxTargets = response.maxTargets; } if (!!data.init) { self.uplMaxSize = self.returnBytes(response.uplMaxSize); self.uplMaxFile = !!response.uplMaxFile? Math.min(parseInt(response.uplMaxFile), 50) : 20; } } if (typeof prepare === 'function') { prepare(response); } if (navigate) { actionTarget = navigate.target || 'added'; if (response[actionTarget] && response[actionTarget].length) { self.one(cmd + 'done', function() { var targets = response[actionTarget], newItems = self.findCwdNodes(targets), inCwdHashes = function() { var cwdHash = self.cwd().hash; return $.map(targets, function(f) { return (f.phash && cwdHash === f.phash)? f.hash : null; }); }, hashes = inCwdHashes(), makeToast = function(t) { var node = void(0), data = t.action? t.action.data : void(0), cmd, msg, done; if ((data || hashes.length) && t.action && (msg = t.action.msg) && (cmd = t.action.cmd) && (!t.action.cwdNot || t.action.cwdNot !== self.cwd().hash)) { done = t.action.done; data = t.action.data; node = $('
                ') .append( $('') .on('mouseenter mouseleave', function(e) { $(this).toggleClass('ui-state-hover', e.type == 'mouseenter'); }) .on('click', function() { self.exec(cmd, data || hashes, {_userAction: true, _currentType: 'toast', _currentNode: $(this) }); if (done) { self.one(cmd+'done', function() { if (typeof done === 'function') { done(); } else if (done === 'select') { self.trigger('selectfiles', {files : inCwdHashes()}); } }); } }) ); } delete t.action; t.extNode = node; return t; }; if (! navigate.toast) { navigate.toast = {}; } !navigate.noselect && self.trigger('selectfiles', {files : self.searchStatus.state > 1 ? $.map(targets, function(f) { return f.hash; }) : hashes}); if (newItems.length) { if (!navigate.noscroll) { newItems.first().trigger('scrolltoview', {blink : false}); self.resources.blink(newItems, 'lookme'); } if ($.isPlainObject(navigate.toast.incwd)) { self.toast(makeToast(navigate.toast.incwd)); } } else { if ($.isPlainObject(navigate.toast.inbuffer)) { self.toast(makeToast(navigate.toast.inbuffer)); } } }); } } dfrd.resolve(response); response.debug && self.debug('backend-debug', response); }; self.abortXHR(xhr); lazy? self.lazy(resolve) : resolve(); }, xhr, _xhr, xhrAbort = function(e) { if (xhr && xhr.state() === 'pending') { self.abortXHR(xhr, { quiet: true , abort: true }); if (!e || (e.type !== 'unload' && e.type !== 'destroy')) { self.autoSync(); } } }, abort = function(e){ self.trigger(cmd + 'done'); if (e.type == 'autosync') { if (e.data.action != 'stop') return; } else if (e.type != 'unload' && e.type != 'destroy' && e.type != 'openxhrabort') { if (!e.data.added || !e.data.added.length) { return; } } xhrAbort(e); }, request = function(mode) { var queueAbort = function() { syncOnFail = false; dfrd.reject(); }; if (mode) { if (mode === 'cmd') { return cmd; } } if (isOpen) { if (currentOpenCmd && currentOpenCmd.state() === 'pending') { if (currentOpenCmd._target === data.target) { return dfrd.reject('openabort'); } else { if (currentOpenCmd.xhr) { currentOpenCmd.xhr.queueAbort(); } else { currentOpenCmd.reject('openabort'); } } } currentOpenCmd = dfrd; currentOpenCmd._target = data.target; } dfrd.always(function() { delete options.headers['X-elFinderReqid']; if (isOpen) { currentOpenCmd = null; } }).fail(function(error, xhr, response) { var errData, errMsg; if (isOpen && error === 'openabort') { error = ''; syncOnFail = false; } errData = { cmd: cmd, err: error, xhr: xhr, rc: response }; // unset this cmd queue when user canceling // see notify : function - `cancel.reject(0);` if (error === 0) { if (requestQueue.length) { requestQueue = $.grep(requestQueue, function(req) { return (req('cmd') === cmd) ? false : true; }); } } // trigger "requestError" event self.trigger('requestError', errData); if (errData._getEvent && errData._getEvent().isDefaultPrevented()) { deffail = false; syncOnFail = false; if (error) { error.error = ''; } } // abort xhr xhrAbort(); if (isOpen) { openDir = self.file(data.target); openDir && openDir.volumeid && self.isRoot(openDir) && delete self.volumeExpires[openDir.volumeid]; } self.trigger(cmd + 'fail', response); errMsg = (typeof error === 'object')? error.error : error; if (errMsg) { deffail ? self.error(errMsg) : self.debug('error', self.i18n(errMsg)); } syncOnFail && self.sync(); }); if (!cmd) { syncOnFail = false; return dfrd.reject({error :'errCmdReq'}); } if (self.maxTargets && data.targets && data.targets.length > self.maxTargets) { syncOnFail = false; return dfrd.reject({error :['errMaxTargets', self.maxTargets]}); } defdone && dfrd.done(done); // quiet abort not completed "open" requests if (isOpen) { while ((_xhr = queue.pop())) { _xhr.queueAbort(); } if (cwd !== data.target) { while ((_xhr = cwdQueue.pop())) { _xhr.queueAbort(); } } } // trigger abort autoSync for commands to add the item if ($.inArray(cmd, (self.cmdsToAdd + ' autosync').split(' ')) !== -1) { if (cmd !== 'autosync') { self.autoSync('stop'); dfrd.always(function() { self.autoSync(); }); } self.trigger('openxhrabort'); } delete options.preventFail; if (self.api >= 2.1029) { if (useCache) { options.headers['X-elFinderReqid'] = reqId; } else { Object.assign(options.data, { reqid : reqId }); } } // function for set value of this syncOnFail dfrd.syncOnFail = function(state) { syncOnFail = !!state; }; requestCnt++; dfrd.xhr = xhr = self.transport.send(options).always(function() { // set responseURL from native xhr object if (options._xhr && typeof options._xhr.responseURL !== 'undefined') { xhr.responseURL = options._xhr.responseURL || ''; } --requestCnt; if (requestQueue.length) { requestQueue.shift()(); } }).fail(error).done(success); if (self.api >= 2.1029) { xhr._requestId = reqId; } if (isOpen || (data.compare && cmd === 'info')) { // regist function queueAbort xhr.queueAbort = queueAbort; // add autoSync xhr into queue queue.unshift(xhr); // bind abort() data.compare && self.bind(self.cmdsToAdd + ' autosync openxhrabort', abort); dfrd.always(function() { var ndx = $.inArray(xhr, queue); data.compare && self.unbind(self.cmdsToAdd + ' autosync openxhrabort', abort); ndx !== -1 && queue.splice(ndx, 1); }); } else if ($.inArray(cmd, self.abortCmdsOnOpen) !== -1) { // regist function queueAbort xhr.queueAbort = queueAbort; // add "open" xhr, only cwd xhr into queue cwdQueue.unshift(xhr); dfrd.always(function() { var ndx = $.inArray(xhr, cwdQueue); ndx !== -1 && cwdQueue.splice(ndx, 1); }); } // abort pending xhr on window unload or elFinder destroy self.bind('unload destroy', abort); dfrd.always(function() { self.unbind('unload destroy', abort); }); return dfrd; }, queueingRequest = function() { // show notify if (notify.type && notify.cnt) { if (cancel) { notify.cancel = dfrd; opts.eachCancel && (notify.id = +new Date()); } timeout = setTimeout(function() { // start fake count up progTm = setTimeout(progFakeUp, 1000); self.notify(notify); hasNotify = true; dfrd.always(function() { notify.cnt = -(parseInt(notify.cnt)||0); self.notify(notify); hasNotify = false; }); }, self.notifyDelay); dfrd.always(function() { clearTimeout(timeout); }); } // queueing if (requestCnt < requestMaxConn) { // do request return request(); } else { if (isOpen) { requestQueue.unshift(request); } else { requestQueue.push(request); } return dfrd; } }, progFakeUp = function() { var add; if (hasNotify && progTm) { add = 1 * notify.cnt; progTm = null; self.notify({ type: notify.type, progress: add, cnt: 0, hideCnt: notify.hideCnt }); prog += add; if ((prog / notify.cnt) < 80) { progTm = setTimeout(progFakeUp, 500); } } }, bindData = {opts: opts, result: true}, openDir; // prevent request initial request is completed if (!self.api && !data.init) { syncOnFail = false; return dfrd.reject(); } // trigger "request.cmd" that callback be able to cancel request by substituting "false" for "event.data.result" self.trigger('request.' + cmd, bindData, true); if (! bindData.result) { self.trigger(cmd + 'done'); return dfrd.reject(); } else if (typeof bindData.result === 'object' && bindData.result.promise) { bindData.result .done(queueingRequest) .fail(function() { self.trigger(cmd + 'done'); dfrd.reject(); }); return dfrd; } return queueingRequest(); }; /** * Call cache() * Store info about files/dirs in "files" object. * * @param Array files * @param String type * @return void */ this.cache = function(dataArray, type) { if (! Array.isArray(dataArray)) { dataArray = [ dataArray ]; } cache(dataArray, type); }; /** * Update file object caches by respose data object * * @param Object respose data object * @return void */ this.updateCache = function(data) { if ($.isPlainObject(data)) { data.files && data.files.length && cache(data.files, 'files'); data.tree && data.tree.length && cache(data.tree, 'tree'); data.removed && data.removed.length && remove(data.removed); data.added && data.added.length && cache(data.added, 'add'); data.changed && data.changed.length && cache(data.changed, 'change'); } }; /** * Compare current files cache with new files and return diff * * @param Array new files * @param String target folder hash * @param Array exclude properties to compare * @return Object */ this.diff = function(incoming, onlydir, excludeProps) { var raw = {}, added = [], removed = [], changed = [], excludes = null, isChanged = function(hash) { var l = changed.length; while (l--) { if (changed[l].hash == hash) { return true; } } }; $.each(incoming, function(i, f) { raw[f.hash] = f; }); // make excludes object if (excludeProps && excludeProps.length) { excludes = {}; $.each(excludeProps, function() { excludes[this] = true; }); } // find removed $.each(files, function(hash, f) { if (! raw[hash] && (! onlydir || f.phash === onlydir)) { removed.push(hash); } }); // compare files $.each(raw, function(hash, file) { var origin = files[hash], orgKeys = {}, chkKeyLen; if (!origin) { added.push(file); } else { // make orgKeys object $.each(Object.keys(origin), function() { orgKeys[this] = true; }); $.each(file, function(prop) { delete orgKeys[prop]; if (! excludes || ! excludes[prop]) { if (file[prop] !== origin[prop]) { changed.push(file); orgKeys = {}; return false; } } }); chkKeyLen = Object.keys(orgKeys).length; if (chkKeyLen !== 0) { if (excludes) { $.each(orgKeys, function(prop) { if (excludes[prop]) { --chkKeyLen; } }); } (chkKeyLen !== 0) && changed.push(file); } } }); // parents of removed dirs mark as changed (required for tree correct work) $.each(removed, function(i, hash) { var file = files[hash], phash = file.phash; if (phash && file.mime == 'directory' && $.inArray(phash, removed) === -1 && raw[phash] && !isChanged(phash)) { changed.push(raw[phash]); } }); return { added : added, removed : removed, changed : changed }; }; /** * Sync Stopper * * @type Boolean */ this.syncStopper = false; /** * Sync content * * @return jQuery.Deferred */ this.sync = function(onlydir, polling) { if (this.syncStopper) { return $.Deferred().reject(); } this.syncStopper = true; this.autoSync('stop'); var self = this, compare = function(){ var c = '', cnt = 0, mtime = 0; if (onlydir && polling) { $.each(files, function(h, f) { if (f.phash && f.phash === onlydir) { ++cnt; mtime = Math.max(mtime, f.ts); } c = cnt+':'+mtime; }); } return c; }, comp = compare(), dfrd = $.Deferred().always(function() { !reqFail && self.trigger('sync'); }), opts = [this.request({ data : {cmd : 'open', reload : 1, target : cwd, tree : (! onlydir && this.ui.tree) ? 1 : 0, compare : comp}, preventDefault : true })], exParents = function() { var parents = [], curRoot = self.file(self.root(cwd)), curId = curRoot? curRoot.volumeid : null, phash = self.cwd().phash, isroot,pdir; while(phash) { if (pdir = self.file(phash)) { if (phash.indexOf(curId) !== 0) { parents.push( {target: phash, cmd: 'tree'} ); if (! self.isRoot(pdir)) { parents.push( {target: phash, cmd: 'parents'} ); } curRoot = self.file(self.root(phash)); curId = curRoot? curRoot.volumeid : null; } phash = pdir.phash; } else { phash = null; } } return parents; }, reqFail; if (! onlydir && self.api >= 2) { (cwd !== this.root()) && opts.push(this.request({ data : {cmd : 'parents', target : cwd}, preventDefault : true })); $.each(exParents(), function(i, data) { opts.push(self.request({ data : {cmd : data.cmd, target : data.target}, preventDefault : true })); }); } $.when.apply($, opts) .fail(function(error, xhr) { reqFail = (xhr && xhr.status != 200); if (! polling || $.inArray('errOpen', error) !== -1) { dfrd.reject(error); self.parseError(error) && self.request({ data : {cmd : 'open', target : (self.lastDir('') || self.root()), tree : 1, init : 1}, notify : {type : 'open', cnt : 1, hideCnt : true} }); } else { dfrd.reject((error && xhr.status != 0)? error : void 0); } }) .done(function(odata) { var pdata, argLen, i; if (odata.cwd.compare) { if (comp === odata.cwd.compare) { return dfrd.reject(); } } // for 2nd and more requests pdata = {tree : []}; // results marge of 2nd and more requests argLen = arguments.length; if (argLen > 1) { for(i = 1; i < argLen; i++) { if (arguments[i].tree && arguments[i].tree.length) { pdata.tree.push.apply(pdata.tree, arguments[i].tree); } } } if (self.api < 2.1) { if (! pdata.tree) { pdata.tree = []; } pdata.tree.push(odata.cwd); } // data normalize odata = self.normalize(odata); if (!self.validResponse('open', odata)) { return dfrd.reject((odata.norError || 'errResponse')); } pdata = self.normalize(pdata); if (!self.validResponse('tree', pdata)) { return dfrd.reject((pdata.norError || 'errResponse')); } var diff = self.diff(odata.files.concat(pdata && pdata.tree ? pdata.tree : []), onlydir); diff.added.push(odata.cwd); self.updateCache(diff); // trigger events diff.removed.length && self.remove(diff); diff.added.length && self.add(diff); diff.changed.length && self.change(diff); return dfrd.resolve(diff); }) .always(function() { self.syncStopper = false; self.autoSync(); }); return dfrd; }; this.upload = function(files) { return this.transport.upload(files, this); }; /** * Bind keybord shortcut to keydown event * * @example * elfinder.shortcut({ * pattern : 'ctrl+a', * description : 'Select all files', * callback : function(e) { ... }, * keypress : true|false (bind to keypress instead of keydown) * }) * * @param Object shortcut config * @return elFinder */ this.shortcut = function(s) { var patterns, pattern, code, i, parts; if (this.options.allowShortcuts && s.pattern && $.isFunction(s.callback)) { patterns = s.pattern.toUpperCase().split(/\s+/); for (i= 0; i < patterns.length; i++) { pattern = patterns[i]; parts = pattern.split('+'); code = (code = parts.pop()).length == 1 ? (code > 0 ? code : code.charCodeAt(0)) : (code > 0 ? code : $.ui.keyCode[code]); if (code && !shortcuts[pattern]) { shortcuts[pattern] = { keyCode : code, altKey : $.inArray('ALT', parts) != -1, ctrlKey : $.inArray('CTRL', parts) != -1, shiftKey : $.inArray('SHIFT', parts) != -1, type : s.type || 'keydown', callback : s.callback, description : s.description, pattern : pattern }; } } } return this; }; /** * Registered shortcuts * * @type Object **/ this.shortcuts = function() { var ret = []; $.each(shortcuts, function(i, s) { ret.push([s.pattern, self.i18n(s.description)]); }); return ret; }; /** * Get/set clipboard content. * Return new clipboard content. * * @example * this.clipboard([]) - clean clipboard * this.clipboard([{...}, {...}], true) - put 2 files in clipboard and mark it as cutted * * @param Array new files hashes * @param Boolean cut files? * @return Array */ this.clipboard = function(hashes, cut) { var map = function() { return $.map(clipboard, function(f) { return f.hash; }); }; if (hashes !== void(0)) { clipboard.length && this.trigger('unlockfiles', {files : map()}); remember = {}; clipboard = $.map(hashes||[], function(hash) { var file = files[hash]; if (file) { remember[hash] = true; return { hash : hash, phash : file.phash, name : file.name, mime : file.mime, read : file.read, locked : file.locked, cut : !!cut }; } return null; }); this.trigger('changeclipboard', {clipboard : clipboard.slice(0, clipboard.length)}); cut && this.trigger('lockfiles', {files : map()}); } // return copy of clipboard instead of refrence return clipboard.slice(0, clipboard.length); }; /** * Return true if command enabled * * @param String command name * @param String|void hash for check of own volume's disabled cmds * @return Boolean */ this.isCommandEnabled = function(name, dstHash) { var disabled, cmd, cvid = self.cwd().volumeid || ''; // In serach results use selected item hash to check if (!dstHash && self.searchStatus.state > 1 && self.selected().length) { dstHash = self.selected()[0]; } if (dstHash && (! cvid || dstHash.indexOf(cvid) !== 0)) { disabled = self.option('disabledFlip', dstHash); //if (! disabled) { // disabled = {}; //} } else { disabled = cwdOptions.disabledFlip/* || {}*/; } cmd = this._commands[name]; return cmd ? (cmd.alwaysEnabled || !disabled[name]) : false; }; /** * Exec command and return result; * * @param String command name * @param String|Array usualy files hashes * @param String|Array command options * @param String|void hash for enabled check of own volume's disabled cmds * @return $.Deferred */ this.exec = function(cmd, files, opts, dstHash) { var dfrd, resType; // apply commandMap for keyboard shortcut if (!dstHash && this.commandMap[cmd] && this.commandMap[cmd] !== 'hidden') { cmd = this.commandMap[cmd]; } if (cmd === 'open') { if (this.searchStatus.state || this.searchStatus.ininc) { this.trigger('searchend', { noupdate: true }); } this.autoSync('stop'); } if (!dstHash && files) { if ($.isArray(files)) { if (files.length) { dstHash = files[0]; } } else { dstHash = files; } } dfrd = this._commands[cmd] && this.isCommandEnabled(cmd, dstHash) ? this._commands[cmd].exec(files, opts) : $.Deferred().reject('errUnknownCmd'); resType = typeof dfrd; if (!(resType === 'object' && dfrd.promise)) { self.debug('warning', '"cmd.exec()" should be returned "$.Deferred" but cmd "' + cmd + '" returned "' + resType + '"'); dfrd = $.Deferred().resolve(); } this.trigger('exec', { dfrd : dfrd, cmd : cmd, files : files, opts : opts, dstHash : dstHash }); return dfrd; }; /** * Create and return dialog. * * @param String|DOMElement dialog content * @param Object dialog options * @return jQuery */ this.dialog = function(content, options) { var dialog = $('
                ').append(content).appendTo(node).elfinderdialog(options, self), dnode = dialog.closest('.ui-dialog'), resize = function(){ ! dialog.data('draged') && dialog.is(':visible') && dialog.elfinderdialog('posInit'); }; if (dnode.length) { self.bind('resize', resize); dnode.on('remove', function() { self.unbind('resize', resize); }); } return dialog; }; /** * Create and return toast. * * @param Object toast options - see ui/toast.js * @return jQuery */ this.toast = function(options) { return $('
                ').appendTo(this.ui.toast).elfindertoast(options || {}, this); }; /** * Return UI widget or node * * @param String ui name * @return jQuery */ this.getUI = function(ui) { return ui? (this.ui[ui] || $()) : node; }; /** * Return elFinder.command instance or instances array * * @param String command name * @return Object | Array */ this.getCommand = function(name) { return name === void(0) ? this._commands : this._commands[name]; }; /** * Resize elfinder node * * @param String|Number width * @param String|Number height * @return void */ this.resize = function(w, h) { var getMargin = function() { var m = node.outerHeight(true) - node.innerHeight(), p = node; while(p.get(0) !== heightBase.get(0)) { p = p.parent(); m += p.outerHeight(true) - p.innerHeight(); if (! p.parent().length) { // reached the document break; } } return m; }, fit = ! node.hasClass('ui-resizable'), prv = node.data('resizeSize') || {w: 0, h: 0}, mt, size = {}; if (heightBase && heightBase.data('resizeTm')) { clearTimeout(heightBase.data('resizeTm')); } if (! self.options.noResizeBySelf) { if (typeof h === 'string') { if (mt = h.match(/^([0-9.]+)%$/)) { // setup heightBase if (! heightBase || ! heightBase.length) { heightBase = $(window); } if (! heightBase.data('marginToMyNode')) { heightBase.data('marginToMyNode', getMargin()); } if (! heightBase.data('fitToBaseFunc')) { heightBase.data('fitToBaseFunc', function(e) { var tm = heightBase.data('resizeTm'); e.preventDefault(); e.stopPropagation(); tm && cancelAnimationFrame(tm); if (! node.hasClass('elfinder-fullscreen') && (!self.UA.Mobile || heightBase.data('rotated') !== self.UA.Rotated)) { heightBase.data('rotated', self.UA.Rotated); heightBase.data('resizeTm', requestAnimationFrame(function() { self.restoreSize(); })); } }); } if (typeof heightBase.data('rotated') === 'undefined') { heightBase.data('rotated', self.UA.Rotated); } h = heightBase.height() * (mt[1] / 100) - heightBase.data('marginToMyNode'); heightBase.off('resize.' + self.namespace, heightBase.data('fitToBaseFunc')); fit && heightBase.on('resize.' + self.namespace, heightBase.data('fitToBaseFunc')); } } node.css({ width : w, height : parseInt(h) }); } size.w = Math.round(node.width()); size.h = Math.round(node.height()); node.data('resizeSize', size); if (size.w !== prv.w || size.h !== prv.h) { node.trigger('resize'); this.trigger('resize', {width : size.w, height : size.h}); } }; /** * Restore elfinder node size * * @return elFinder */ this.restoreSize = function() { this.resize(width, height); }; this.show = function() { node.show(); this.enable().trigger('show'); }; this.hide = function() { if (this.options.enableAlways) { prevEnabled = enabled; enabled = false; } this.disable(); this.trigger('hide'); node.hide(); }; /** * Lazy execution function * * @param Object function * @param Number delay * @param Object options * @return Object jQuery.Deferred */ this.lazy = function(func, delay, opts) { var busy = function(state) { var cnt = node.data('lazycnt'), repaint; if (state) { repaint = node.data('lazyrepaint')? false : opts.repaint; if (! cnt) { node.data('lazycnt', 1) .addClass('elfinder-processing'); } else { node.data('lazycnt', ++cnt); } if (repaint) { node.data('lazyrepaint', true).css('display'); // force repaint } } else { if (cnt && cnt > 1) { node.data('lazycnt', --cnt); } else { repaint = node.data('lazyrepaint'); node.data('lazycnt', 0) .removeData('lazyrepaint') .removeClass('elfinder-processing'); repaint && node.css('display'); // force repaint; self.trigger('lazydone'); } } }, dfd = $.Deferred(), callFunc = function() { dfd.resolve(func.call(dfd)); busy(false); }; delay = delay || 0; opts = opts || {}; busy(true); if (delay) { setTimeout(callFunc, delay); } else { requestAnimationFrame(callFunc); } return dfd; }; /** * Destroy this elFinder instance * * @return void **/ this.destroy = function() { if (node && node[0].elfinder) { node.hasClass('elfinder-fullscreen') && self.toggleFullscreen(node); this.options.syncStart = false; this.autoSync('forcestop'); this.trigger('destroy').disable(); clipboard = []; selected = []; listeners = {}; shortcuts = {}; $(window).off('.' + namespace); $(document).off('.' + namespace); self.trigger = function(){}; $(beeper).remove(); node.off() .removeData() .empty() .append(prevContent.contents()) .attr('class', prevContent.attr('class')) .attr('style', prevContent.attr('style')); delete node[0].elfinder; // restore kept events $.each(prevEvents, function(n, arr) { $.each(arr, function(i, o) { node.on(o.type + (o.namespace? '.'+o.namespace : ''), o.selector, o.handler); }); }); } }; /** * Start or stop auto sync * * @param String|Bool stop * @return void */ this.autoSync = function(mode) { var sync; if (self.options.sync >= 1000) { if (syncInterval) { clearTimeout(syncInterval); syncInterval = null; self.trigger('autosync', {action : 'stop'}); } if (mode === 'stop') { ++autoSyncStop; } else { autoSyncStop = Math.max(0, --autoSyncStop); } if (autoSyncStop || mode === 'forcestop' || ! self.options.syncStart) { return; } // run interval sync sync = function(start){ var timeout; if (cwdOptions.syncMinMs && (start || syncInterval)) { start && self.trigger('autosync', {action : 'start'}); timeout = Math.max(self.options.sync, cwdOptions.syncMinMs); syncInterval && clearTimeout(syncInterval); syncInterval = setTimeout(function() { var dosync = true, hash = cwd, cts; if (cwdOptions.syncChkAsTs && files[hash] && (cts = files[hash].ts)) { self.request({ data : {cmd : 'info', targets : [hash], compare : cts, reload : 1}, preventDefault : true }) .done(function(data){ var ts; dosync = true; if (data.compare) { ts = data.compare; if (ts == cts) { dosync = false; } } if (dosync) { self.sync(hash).always(function(){ if (ts) { // update ts for cache clear etc. files[hash].ts = ts; } sync(); }); } else { sync(); } }) .fail(function(error, xhr){ var err = self.parseError(error); if (err && xhr.status != 0) { self.error(err); if (Array.isArray(err) && $.inArray('errOpen', err) !== -1) { self.request({ data : {cmd : 'open', target : (self.lastDir('') || self.root()), tree : 1, init : 1}, notify : {type : 'open', cnt : 1, hideCnt : true} }); } } else { syncInterval = setTimeout(function() { sync(); }, timeout); } }); } else { self.sync(cwd, true).always(function(){ sync(); }); } }, timeout); } }; sync(true); } }; /** * Return bool is inside work zone of specific point * * @param Number event.pageX * @param Number event.pageY * @return Bool */ this.insideWorkzone = function(x, y, margin) { var rectangle = this.getUI('workzone').data('rectangle'); margin = margin || 1; if (x < rectangle.left + margin || x > rectangle.left + rectangle.width + margin || y < rectangle.top + margin || y > rectangle.top + rectangle.height + margin) { return false; } return true; }; /** * Target ui node move to last of children of elFinder node fot to show front * * @param Object target Target jQuery node object */ this.toFront = function(target) { var nodes = node.children('.ui-front').removeClass('elfinder-frontmost'), lastnode = nodes.last(); nodes.css('z-index', ''); $(target).addClass('ui-front elfinder-frontmost').css('z-index', lastnode.css('z-index') + 1); }; /** * Remove class 'elfinder-frontmost' and hide() to target ui node * * @param Object target Target jQuery node object * @param Boolean nohide Do not hide */ this.toHide =function(target, nohide) { var tgt = $(target), last; !nohide && tgt.hide(); if (tgt.hasClass('elfinder-frontmost')) { tgt.removeClass('elfinder-frontmost'); last = node.children('.ui-front:visible:not(.elfinder-frontmost)').last(); if (last.length) { requestAnimationFrame(function() { if (!node.children('.elfinder-frontmost:visible').length) { self.toFront(last); last.trigger('frontmost'); } }); } } }; /** * Return css object for maximize * * @return Object */ this.getMaximizeCss = function() { return { width : '100%', height : '100%', margin : 0, top : 0, left : 0, display : 'block', position: 'fixed', zIndex : Math.max(self.zIndex? (self.zIndex + 1) : 0 , 1000), maxWidth : '', maxHeight: '' }; }; // Closure for togglefullscreen (function() { // check is in iframe if (inFrame && self.UA.Fullscreen) { self.UA.Fullscreen = false; if (parentIframe && typeof parentIframe.attr('allowfullscreen') !== 'undefined') { self.UA.Fullscreen = true; } } var orgStyle, bodyOvf, resizeTm, fullElm, exitFull, toFull, funcObj, cls = 'elfinder-fullscreen', clsN = 'elfinder-fullscreen-native', checkDialog = function() { var t = 0, l = 0; $.each(node.children('.ui-dialog,.ui-draggable'), function(i, d) { var $d = $(d), pos = $d.position(); if (pos.top < 0) { $d.css('top', t); t += 20; } if (pos.left < 0) { $d.css('left', l); l += 20; } }); }, setFuncObj = function() { var useFullscreen = self.storage('useFullscreen'); funcObj = self.UA.Fullscreen && (useFullscreen? useFullscreen > 0 : self.options.commandsOptions.fullscreen.mode === 'screen') ? { // native full screen mode fullElm: function() { return document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement || null; }, exitFull: function() { if (document.exitFullscreen) { return document.exitFullscreen(); } else if (document.webkitExitFullscreen) { return document.webkitExitFullscreen(); } else if (document.mozCancelFullScreen) { return document.mozCancelFullScreen(); } else if (document.msExitFullscreen) { return document.msExitFullscreen(); } }, toFull: function(elem) { if (elem.requestFullscreen) { return elem.requestFullscreen(); } else if (elem.webkitRequestFullscreen) { return elem.webkitRequestFullscreen(); } else if (elem.mozRequestFullScreen) { return elem.mozRequestFullScreen(); } else if (elem.msRequestFullscreen) { return elem.msRequestFullscreen(); } return false; } } : { // node element maximize mode fullElm: function() { var full; if (node.hasClass(cls)) { return node.get(0); } else { full = node.find('.' + cls); if (full.length) { return full.get(0); } } return null; }, exitFull: function() { var elm; $(window).off('resize.' + namespace, resize); if (bodyOvf !== void(0)) { $('body').css('overflow', bodyOvf); } bodyOvf = void(0); if (orgStyle) { elm = orgStyle.elm; restoreStyle(elm); $(elm).trigger('resize', {fullscreen: 'off'}); } $(window).trigger('resize'); }, toFull: function(elem) { bodyOvf = $('body').css('overflow') || ''; $('body').css('overflow', 'hidden'); $(elem).css(self.getMaximizeCss()) .addClass(cls) .trigger('resize', {fullscreen: 'on'}); checkDialog(); $(window).on('resize.' + namespace, resize).trigger('resize'); return true; } }; }, restoreStyle = function(elem) { if (orgStyle && orgStyle.elm == elem) { $(elem).removeClass(cls + ' ' + clsN).attr('style', orgStyle.style); orgStyle = null; } }, resize = function(e) { var elm; if (e.target === window) { resizeTm && cancelAnimationFrame(resizeTm); resizeTm = requestAnimationFrame(function() { if (elm = funcObj.fullElm()) { $(elm).trigger('resize', {fullscreen: 'on'}); } }); } }; setFuncObj(); $(document).on('fullscreenchange.' + namespace + ' webkitfullscreenchange.' + namespace + ' mozfullscreenchange.' + namespace + ' MSFullscreenChange.' + namespace, function(e){ if (self.UA.Fullscreen) { var elm = funcObj.fullElm(), win = $(window); resizeTm && cancelAnimationFrame(resizeTm); if (elm === null) { win.off('resize.' + namespace, resize); if (orgStyle) { elm = orgStyle.elm; restoreStyle(elm); $(elm).trigger('resize', {fullscreen: 'off'}); } } else { $(elm).addClass(cls + ' ' + clsN) .attr('style', 'width:100%; height:100%; margin:0; padding:0;') .trigger('resize', {fullscreen: 'on'}); win.on('resize.' + namespace, resize); checkDialog(); } win.trigger('resize'); } }); /** * Toggle Full Scrren Mode * * @param Object target * @param Bool full * @return Object | Null DOM node object of current full scrren */ self.toggleFullscreen = function(target, full) { var elm = $(target).get(0), curElm = null; curElm = funcObj.fullElm(); if (curElm) { if (curElm == elm) { if (full === true) { return curElm; } } else { if (full === false) { return curElm; } } funcObj.exitFull(); return null; } else { if (full === false) { return null; } } setFuncObj(); orgStyle = {elm: elm, style: $(elm).attr('style')}; if (funcObj.toFull(elm) !== false) { return elm; } else { orgStyle = null; return null; } }; })(); // Closure for toggleMaximize (function(){ var cls = 'elfinder-maximized', resizeTm, resize = function(e) { if (e.target === window && e.data && e.data.elm) { var elm = e.data.elm; resizeTm && cancelAnimationFrame(resizeTm); resizeTm = requestAnimationFrame(function() { elm.trigger('resize', {maximize: 'on'}); }); } }, exitMax = function(elm) { $(window).off('resize.' + namespace, resize); $('body').css('overflow', elm.data('bodyOvf')); elm.removeClass(cls) .attr('style', elm.data('orgStyle')) .removeData('bodyOvf') .removeData('orgStyle'); elm.trigger('resize', {maximize: 'off'}); }, toMax = function(elm) { elm.data('bodyOvf', $('body').css('overflow') || '') .data('orgStyle', elm.attr('style')) .addClass(cls) .css(self.getMaximizeCss()); $('body').css('overflow', 'hidden'); $(window).on('resize.' + namespace, {elm: elm}, resize); elm.trigger('resize', {maximize: 'on'}); }; /** * Toggle Maximize target node * * @param Object target * @param Bool max * @return void */ self.toggleMaximize = function(target, max) { var elm = $(target), maximized = elm.hasClass(cls); if (maximized) { if (max === true) { return; } exitMax(elm); } else { if (max === false) { return; } toMax(elm); } }; })(); /************* init stuffs ****************/ Object.assign($.ui.keyCode, { 'F1' : 112, 'F2' : 113, 'F3' : 114, 'F4' : 115, 'F5' : 116, 'F6' : 117, 'F7' : 118, 'F8' : 119, 'F9' : 120, 'F10' : 121, 'F11' : 122, 'F12' : 123, 'DIG0' : 48, 'DIG1' : 49, 'DIG2' : 50, 'DIG3' : 51, 'DIG4' : 52, 'DIG5' : 53, 'DIG6' : 54, 'DIG7' : 55, 'DIG8' : 56, 'DIG9' : 57, 'NUM0' : 96, 'NUM1' : 97, 'NUM2' : 98, 'NUM3' : 99, 'NUM4' : 100, 'NUM5' : 101, 'NUM6' : 102, 'NUM7' : 103, 'NUM8' : 104, 'NUM9' : 105, 'CONTEXTMENU' : 93, 'DOT' : 190 }); this.dragUpload = false; this.xhrUpload = (typeof XMLHttpRequestUpload != 'undefined' || typeof XMLHttpRequestEventTarget != 'undefined') && typeof File != 'undefined' && typeof FormData != 'undefined'; // configure transport object this.transport = {}; if (typeof(this.options.transport) == 'object') { this.transport = this.options.transport; if (typeof(this.transport.init) == 'function') { this.transport.init(this); } } if (typeof(this.transport.send) != 'function') { this.transport.send = function(opts) { if (!self.UA.IE) { // keep native xhr object for handling property responseURL opts._xhr = new XMLHttpRequest(); opts.xhr = function() { if (opts.progress) { opts._xhr.addEventListener('progress', opts.progress); } return opts._xhr; }; } return $.ajax(opts); }; } if (this.transport.upload == 'iframe') { this.transport.upload = $.proxy(this.uploads.iframe, this); } else if (typeof(this.transport.upload) == 'function') { this.dragUpload = !!this.options.dragUploadAllow; } else if (this.xhrUpload && !!this.options.dragUploadAllow) { this.transport.upload = $.proxy(this.uploads.xhr, this); this.dragUpload = true; } else { this.transport.upload = $.proxy(this.uploads.iframe, this); } /** * Decoding 'raw' string converted to unicode * * @param String str * @return String */ this.decodeRawString = function(str) { var charCodes = function(str) { var i, len, arr; for (i=0,len=str.length,arr=[]; i= 0xd800 && c <= 0xdbff) { scalars.push((c & 1023) + 64 << 10 | arr[++i] & 1023); } else { scalars.push(c); } } return scalars; }, decodeUTF8 = function(arr) { var i, len, c, str, char = String.fromCharCode; for (i=0,len=arr.length,str=""; c=arr[i],i= 0xc2) { str += char((c&31)<<6 | arr[++i]&63); } else if (c <= 0xef && c >= 0xe0) { str += char((c&15)<<12 | (arr[++i]&63)<<6 | arr[++i]&63); } else if (c <= 0xf7 && c >= 0xf0) { str += char( 0xd800 | ((c&7)<<8 | (arr[++i]&63)<<2 | arr[++i]>>>4&3) - 64, 0xdc00 | (arr[i++]&15)<<6 | arr[i]&63 ); } else { str += char(0xfffd); } } return str; }; return decodeUTF8(scalarValues(str)); }; /** * Gets target file contents by file.hash * * @param String hash The hash * @param String responseType 'blob' or 'arraybuffer' (default) * @param Object requestOpts The request options * @return arraybuffer|blob The contents. */ this.getContents = function(hash, responseType, requestOpts) { var self = this, dfd = $.Deferred(), type = responseType || 'arraybuffer', url, req; dfd.fail(function() { req && req.state() === 'pending' && req.reject(); }); url = self.openUrl(hash); if (!self.isSameOrigin(url)) { url = self.openUrl(hash, true); } req = self.request(Object.assign({ data : {cmd : 'get'}, options : { url: url, type: 'get', cache : true, dataType : 'binary', responseType : type, processData: false }, notify : { type: 'file', cnt: 1, hideCnt: true }, cancel : true }, requestOpts || {})) .fail(function() { dfd.reject(); }) .done(function(data) { dfd.resolve(data); }); return dfd; }; /** * Gets the binary by url. * * @param {Object} opts The options * @param {Function} callback The callback * @param {Object} requestOpts The request options * @return arraybuffer|blob The contents. */ this.getBinaryByUrl = function(opts, callback, requestOpts) { var self = this, dfd = $.Deferred(), url, req; dfd.fail(function() { req && req.state() === 'pending' && req.reject(); }); req = self.request(Object.assign({ data : {cmd : 'get'}, options : Object.assign({ type: 'get', cache : true, dataType : 'binary', responseType : 'blob', processData: false }, opts) }, requestOpts || {})) .fail(function() { dfd.reject(); }) .done(function(data) { callback && callback(data); dfd.resolve(data); }); return dfd; }; /** * Gets the mimetype. * * @param {string} name The name * @param {string} orgMime The organization mime * @return {string} The mimetype. */ this.getMimetype = function(name, orgMime) { var mime = orgMime, ext, m; m = (name + '').match(/\.([^.]+)$/); if (m && (ext = m[1])) { if (!extToMimeTable) { extToMimeTable = self.arrayFlip(self.mimeTypes); } if (!(mime = extToMimeTable[ext.toLowerCase()])) { mime = orgMime; } } return mime; }; /** * Supported check hash algorisms * * @type Array */ self.hashCheckers = []; /** * Closure of getContentsHashes() */ (function(self) { var hashLibs = {}; if (window.Worker && window.ArrayBuffer) { // make fm.hashCheckers if (self.options.cdns.sparkmd5) { hashLibs.SparkMD5 = true; self.hashCheckers.push('md5'); } if (self.options.cdns.jssha) { hashLibs.jsSHA = true; self.hashCheckers = self.hashCheckers.concat(['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512', 'shake128', 'shake256']); } } /** * Gets the contents hashes. * * @param String target target file.hash * @param Object needHashes need hash lib names * @param Object requestOpts The request options * @return Object hashes with lib name as key */ self.getContentsHashes = function(target, needHashes, hashOpts, requestOpts) { var dfd = $.Deferred(), needs = self.arrayFlip(needHashes || ['md5'], true), libs = [], jobs = [], res = {}, opts = hashOpts? hashOpts : { shake128len : 256, shake256len : 512 }, req; dfd.fail(function() { req && req.reject(); }); if (Object.keys(hashLibs).length) { req = self.getContents(target, 'arraybuffer', requestOpts).done(function(arrayBuffer) { if (needs.md5 && hashLibs.SparkMD5) { jobs.push((function() { var job = $.Deferred(); try { var wk = self.getWorker(); job.fail(function() { wk && wk.terminate(); }); wk.onmessage = function(ans) { wk && wk.terminate(); if (ans.data.hash) { var f; res.md5 = ans.data.hash; if (f = self.file(target)) { f.md5 = res.md5; } } else if (ans.data.error) { res.md5 = ans.data.error; } dfd.notify(res); job.resolve(); }; wk.onerror = function(e) { job.reject(); }; wk.postMessage({ scripts: [self.options.cdns.sparkmd5, self.getWorkerUrl('calcfilehash.js')], data: { type: 'md5', bin: arrayBuffer } }); dfd.fail(function() { job.reject(); }); } catch(e) { job.reject(); delete hashLibs.SparkMD5; } return job; })()); } if (hashLibs.jsSHA) { $.each(['1', '224', '256', '384', '512', '3-224', '3-256', '3-384', '3-512', 'ke128', 'ke256'], function(i, v) { if (needs['sha' + v]) { jobs.push((function() { var job = $.Deferred(); try { var wk = self.getWorker(); job.fail(function() { wk && wk.terminate(); }); wk.onmessage = function(ans) { wk && wk.terminate(); if (ans.data.hash) { var f; res['sha' + v] = ans.data.hash; if (f = self.file(target)) { f['sha' + v] = res['sha' + v]; } } else if (ans.data.error) { res['sha' + v] = ans.data.error; } dfd.notify(res); job.resolve(); }; wk.onerror = function(e) { job.reject(); }; wk.postMessage({ scripts: [self.options.cdns.jssha, self.getWorkerUrl('calcfilehash.js')], data: { type: v, bin: arrayBuffer, hashOpts: opts } }); dfd.fail(function() { job.reject(); }); } catch(e) { job.reject(); delete hashLibs.jsSHA; } return job; })()); } }); } if (jobs.length) { $.when.apply(null, jobs).always(function() { dfd.resolve(res); }); } else { dfd.reject(); } }).fail(function() { dfd.reject(); }); } else { dfd.reject(); } return dfd; }; })(this); /** * Parse error value to display * * @param Mixed error * @return Mixed parsed error */ this.parseError = function(error) { var arg = error; if ($.isPlainObject(arg)) { arg = arg.error; } return arg; }; /** * Alias for this.trigger('error', {error : 'message'}) * * @param String error message * @return elFinder **/ this.error = function() { var arg = arguments[0], opts = arguments[1] || null, err; if (arguments.length == 1 && typeof(arg) === 'function') { return self.bind('error', arg); } else { err = this.parseError(arg); return (err === true || !err)? this : self.trigger('error', {error: err, opts : opts}); } }; // create bind/trigger aliases for build-in events $.each(events, function(i, name) { self[name] = function() { var arg = arguments[0]; return arguments.length == 1 && typeof(arg) == 'function' ? self.bind(name, arg) : self.trigger(name, $.isPlainObject(arg) ? arg : {}); }; }); // bind core event handlers this .enable(function() { if (!enabled && self.api && self.visible() && self.ui.overlay.is(':hidden') && ! node.children('.elfinder-dialog.' + self.res('class', 'editing') + ':visible').length) { enabled = true; document.activeElement && document.activeElement.blur(); node.removeClass('elfinder-disabled'); } }) .disable(function() { prevEnabled = enabled; enabled = false; node.addClass('elfinder-disabled'); }) .open(function() { selected = []; }) .select(function(e) { var cnt = 0, unselects = []; selected = $.grep(e.data.selected || e.data.value|| [], function(hash) { if (unselects.length || (self.maxTargets && ++cnt > self.maxTargets)) { unselects.push(hash); return false; } else { return files[hash] ? true : false; } }); if (unselects.length) { self.trigger('unselectfiles', {files: unselects, inselect: true}); self.toast({mode: 'warning', msg: self.i18n(['errMaxTargets', self.maxTargets])}); } }) .error(function(e) { var opts = { cssClass : 'elfinder-dialog-error', title : self.i18n('error'), resizable : false, destroyOnClose : true, buttons : {} }, node = self.getUI(), cnt = node.children('.elfinder-dialog-error').length, last, counter; if (cnt < self.options.maxErrorDialogs) { opts.buttons[self.i18n(self.i18n('btnClose'))] = function() { $(this).elfinderdialog('close'); }; if (e.data.opts && $.isPlainObject(e.data.opts)) { Object.assign(opts, e.data.opts); } self.dialog(''+self.i18n(e.data.error), opts); } else { last = node.children('.elfinder-dialog-error:last').children('.ui-dialog-content:first'); counter = last.children('.elfinder-error-counter'); if (counter.length) { counter.data('cnt', parseInt(counter.data('cnt')) + 1).html(self.i18n(['moreErrors', counter.data('cnt')])); } else { counter = $(''+ self.i18n(['moreErrors', 1]) +'').data('cnt', 1); last.append('
                ', counter); } } }) .bind('tmb', function(e) { $.each(e.data.images||[], function(hash, tmb) { if (files[hash]) { files[hash].tmb = tmb; } }); }) .bind('searchstart', function(e) { Object.assign(self.searchStatus, e.data); self.searchStatus.state = 1; }) .bind('search', function(e) { self.searchStatus.state = 2; }) .bind('searchend', function() { self.searchStatus.state = 0; self.searchStatus.ininc = false; self.searchStatus.mixed = false; }) .bind('canMakeEmptyFile', function(e) { var data = e.data, obj = {}; if (data && Array.isArray(data.mimes)) { if (!data.unshift) { obj = self.mimesCanMakeEmpty; } $.each(data.mimes, function() { if (!obj[this]) { obj[this] = self.mimeTypes[this]; } }); if (data.unshift) { self.mimesCanMakeEmpty = Object.assign(obj, self.mimesCanMakeEmpty); } } }) .bind('themechange', function() { requestAnimationFrame(function() { self.trigger('uiresize'); }); }) ; // We listen and emit a sound on delete according to option if (true === this.options.sound) { this.bind('playsound', function(e) { var play = beeper.canPlayType && beeper.canPlayType('audio/wav; codecs="1"'), file = e.data && e.data.soundFile; play && file && play != '' && play != 'no' && $(beeper).html('')[0].play(); }); } // bind external event handlers $.each(this.options.handlers, function(event, callback) { self.bind(event, callback); }); /** * History object. Store visited folders * * @type Object **/ this.history = new this.history(this); /** * Root hashed * * @type Object */ this.roots = {}; /** * leaf roots * * @type Object */ this.leafRoots = {}; this.volumeExpires = {}; /** * Loaded commands * * @type Object **/ this._commands = {}; if (!Array.isArray(this.options.commands)) { this.options.commands = []; } if ($.inArray('*', this.options.commands) !== -1) { this.options.commands = Object.keys(this.commands); } /** * UI command map of cwd volume ( That volume driver option `uiCmdMap` ) * * @type Object **/ this.commandMap = {}; /** * cwd options of each volume * key: volumeid * val: options object * * @type Object */ this.volOptions = {}; /** * Has volOptions data * * @type Boolean */ this.hasVolOptions = false; /** * Hash of trash holders * key: trash folder hash * val: source volume hash * * @type Object */ this.trashes = {}; /** * cwd options of each folder/file * key: hash * val: options object * * @type Object */ this.optionsByHashes = {}; /** * UI Auto Hide Functions * Each auto hide function mast be call to `fm.trigger('uiautohide')` at end of process * * @type Array **/ this.uiAutoHide = []; // trigger `uiautohide` this.one('open', function() { if (self.uiAutoHide.length) { setTimeout(function() { self.trigger('uiautohide'); }, 500); } }); // Auto Hide Functions sequential processing start this.bind('uiautohide', function() { if (self.uiAutoHide.length) { self.uiAutoHide.shift()(); } }); if (this.options.width) { width = this.options.width; } if (this.options.height) { height = this.options.height; } if (this.options.heightBase) { heightBase = $(this.options.heightBase); } if (this.options.soundPath) { soundPath = this.options.soundPath.replace(/\/+$/, '') + '/'; } else { soundPath = this.baseUrl + soundPath; } if (this.options.parrotHeaders && Array.isArray(this.options.parrotHeaders) && this.options.parrotHeaders.length) { this.parrotHeaders = this.options.parrotHeaders; // check sessionStorage $.each(this.parrotHeaders, function(i, h) { var v = self.sessionStorage('core-ph:' + h); if (v) { self.customHeaders[h] = v; } }); } else { this.parrotHeaders = []; } self.one('opendone', function() { var tm; // attach events to document $(document) // disable elfinder on click outside elfinder .on('click.'+namespace, function(e) { enabled && ! self.options.enableAlways && !$(e.target).closest(node).length && self.disable(); }) // exec shortcuts .on(keydown+' '+keypress+' '+keyup+' '+mousedown, execShortcut); // attach events to window self.options.useBrowserHistory && $(window) .on('popstate.' + namespace, function(ev) { var state = ev.originalEvent.state || {}, hasThash = state.thash? true : false, dialog = node.find('.elfinder-frontmost:visible'), input = node.find('.elfinder-navbar-dir,.elfinder-cwd-filename').find('input,textarea'), onOpen, toast; if (!hasThash) { state = { thash: self.cwd().hash }; // scroll to elFinder node $('html,body').animate({ scrollTop: node.offset().top }); } if (dialog.length || input.length) { history.pushState(state, null, location.pathname + location.search + '#elf_' + state.thash); if (dialog.length) { if (!dialog.hasClass(self.res('class', 'preventback'))) { if (dialog.hasClass('elfinder-contextmenu')) { $(document).trigger($.Event('keydown', { keyCode: $.ui.keyCode.ESCAPE, ctrlKey : false, shiftKey : false, altKey : false, metaKey : false })); } else if (dialog.hasClass('elfinder-dialog')) { dialog.elfinderdialog('close'); } else { dialog.trigger('close'); } } } else { input.trigger($.Event('keydown', { keyCode: $.ui.keyCode.ESCAPE, ctrlKey : false, shiftKey : false, altKey : false, metaKey : false })); } } else { if (hasThash) { !$.isEmptyObject(self.files()) && self.request({ data : {cmd : 'open', target : state.thash, onhistory : 1}, notify : {type : 'open', cnt : 1, hideCnt : true}, syncOnFail : true }); } else { onOpen = function() { toast.trigger('click'); }; self.one('open', onOpen, true); toast = self.toast({ msg: self.i18n('pressAgainToExit'), onHidden: function() { self.unbind('open', onOpen); history.pushState(state, null, location.pathname + location.search + '#elf_' + state.thash); } }); } } }); $(window).on('resize.' + namespace, function(e){ if (e.target === this) { tm && cancelAnimationFrame(tm); tm = requestAnimationFrame(function() { var prv = node.data('resizeSize') || {w: 0, h: 0}, size = {w: Math.round(node.width()), h: Math.round(node.height())}; node.data('resizeSize', size); if (size.w !== prv.w || size.h !== prv.h) { node.trigger('resize'); self.trigger('resize', {width : size.w, height : size.h}); } }); } }) .on('beforeunload.' + namespace,function(e){ var msg, cnt; if (!self.pauseUnloadCheck()) { if (node.is(':visible')) { if (self.ui.notify.children().length && $.inArray('hasNotifyDialog', self.options.windowCloseConfirm) !== -1) { msg = self.i18n('ntfsmth'); } else if (node.find('.'+self.res('class', 'editing')).length && $.inArray('editingFile', self.options.windowCloseConfirm) !== -1) { msg = self.i18n('editingFile'); } else if ((cnt = Object.keys(self.selected()).length) && $.inArray('hasSelectedItem', self.options.windowCloseConfirm) !== -1) { msg = self.i18n('hasSelected', ''+cnt); } else if ((cnt = Object.keys(self.clipboard()).length) && $.inArray('hasClipboardData', self.options.windowCloseConfirm) !== -1) { msg = self.i18n('hasClipboard', ''+cnt); } if (msg) { e.returnValue = msg; return msg; } } self.trigger('unload'); } }); // bind window onmessage for CORS $(window).on('message.' + namespace, function(e){ var res = e.originalEvent || null, obj, data; if (res && (self.convAbsUrl(self.options.url).indexOf(res.origin) === 0 || self.convAbsUrl(self.uploadURL).indexOf(res.origin) === 0)) { try { obj = JSON.parse(res.data); data = obj.data || null; if (data) { if (data.error) { if (obj.bind) { self.trigger(obj.bind+'fail', data); } self.error(data.error); } else { data.warning && self.error(data.warning); self.updateCache(data); data.removed && data.removed.length && self.remove(data); data.added && data.added.length && self.add(data); data.changed && data.changed.length && self.change(data); if (obj.bind) { self.trigger(obj.bind, data); self.trigger(obj.bind+'done'); } data.sync && self.sync(); } } } catch (e) { self.sync(); } } }); // elFinder enable always if (self.options.enableAlways) { $(window).on('focus.' + namespace, function(e){ (e.target === this) && self.enable(); }); if (inFrame) { $(window.top).on('focus.' + namespace, function() { if (self.enable() && (! parentIframe || parentIframe.is(':visible'))) { requestAnimationFrame(function() { $(window).trigger('focus'); }); } }); } } else if (inFrame) { $(window).on('blur.' + namespace, function(e){ enabled && e.target === this && self.disable(); }); } // return focus to the window on click (elFInder in the frame) if (inFrame) { node.on('click', function(e) { $(window).trigger('focus'); }); } // elFinder to enable by mouse over if (self.options.enableByMouseOver) { node.on('mouseenter touchstart', function(e) { (inFrame) && $(window).trigger('focus'); ! self.enabled() && self.enable(); }); } // When the browser tab turn to foreground/background $(window).on('visibilitychange.' + namespace, function(e) { var background = document.hidden || document.webkitHidden || document.msHidden; // AutoSync turn On/Off if (self.options.syncStart) { self.autoSync(background? 'stop' : void(0)); } }); }); // store instance in node node[0].elfinder = this; // auto load language file dfrdsBeforeBootup.push((function() { var lang = self.lang, langJs = self.i18nBaseUrl + 'elfinder.' + lang + '.js', dfd = $.Deferred().done(function() { if (self.i18[lang]) { self.lang = lang; } self.trigger('i18load'); i18n = self.lang === 'en' ? self.i18['en'] : $.extend(true, {}, self.i18['en'], self.i18[self.lang]); }); if (!self.i18[lang]) { self.lang = 'en'; if (self.hasRequire) { require([langJs], function() { dfd.resolve(); }, function() { dfd.resolve(); }); } else { self.loadScript([langJs], function() { dfd.resolve(); }, { loadType: 'tag', error : function() { dfd.resolve(); } }); } } else { dfd.resolve(); } return dfd; })()); // elFinder boot up function bootUp = function() { var columnNames; /** * i18 messages * * @type Object **/ self.messages = i18n.messages; // check jquery ui if (!($.fn.selectable && $.fn.draggable && $.fn.droppable && $.fn.resizable && $.fn.button && $.fn.slider)) { return alert(self.i18n('errJqui')); } // check node if (!node.length) { return alert(self.i18n('errNode')); } // check connector url if (!self.options.url) { return alert(self.i18n('errURL')); } // column key/name map for fm.getColumnName() columnNames = Object.assign({ name : self.i18n('name'), perm : self.i18n('perms'), date : self.i18n('modify'), size : self.i18n('size'), kind : self.i18n('kind'), modestr : self.i18n('mode'), modeoct : self.i18n('mode'), modeboth : self.i18n('mode') }, self.options.uiOptions.cwd.listView.columnsCustomName); /** * Gets the column name of cwd list view * * @param String key The key * @return String The column name. */ self.getColumnName = function(key) { var res = columnNames[key] || self.i18n(key); return typeof res === 'function'? res() : res; }; /** * Interface direction * * @type String * @default "ltr" **/ self.direction = i18n.direction; /** * Date/time format * * @type String * @default "m.d.Y" **/ self.dateFormat = self.options.dateFormat || i18n.dateFormat; /** * Date format like "Yesterday 10:20:12" * * @type String * @default "{day} {time}" **/ self.fancyFormat = self.options.fancyDateFormat || i18n.fancyDateFormat; /** * Date format for if upload file has not original unique name * e.g. Clipboard image data, Image data taken with iOS * * @type String * @default "ymd-His" **/ self.nonameDateFormat = (self.options.nonameDateFormat || i18n.nonameDateFormat).replace(/[\/\\]/g, '_'); /** * Css classes * * @type String **/ self.cssClass = 'ui-helper-reset ui-helper-clearfix ui-widget ui-widget-content ui-corner-all elfinder elfinder-' +(self.direction == 'rtl' ? 'rtl' : 'ltr') +(self.UA.Touch? (' elfinder-touch' + (self.options.resizable ? ' touch-punch' : '')) : '') +(self.UA.Mobile? ' elfinder-mobile' : '') +(self.UA.iOS? ' elfinder-ios' : '') +' '+self.options.cssClass; // prepare node node.addClass(self.cssClass) .on(mousedown, function() { !enabled && self.enable(); }); // draggable closure (function() { var ltr, wzRect, wzBottom, wzBottom2, nodeStyle, keyEvt = keydown + 'draggable' + ' keyup.' + namespace + 'draggable'; /** * Base draggable options * * @type Object **/ self.draggable = { appendTo : node, addClasses : false, distance : 4, revert : true, refreshPositions : false, cursor : 'crosshair', cursorAt : {left : 50, top : 47}, scroll : false, start : function(e, ui) { var helper = ui.helper, targets = $.grep(helper.data('files')||[], function(h) { if (h) { remember[h] = true; return true; } return false; }), locked = false, cnt, h; // fix node size nodeStyle = node.attr('style'); node.width(node.width()).height(node.height()); // set var for drag() ltr = (self.direction === 'ltr'); wzRect = self.getUI('workzone').data('rectangle'); wzBottom = wzRect.top + wzRect.height; wzBottom2 = wzBottom - self.getUI('navdock').outerHeight(true); self.draggingUiHelper = helper; cnt = targets.length; while (cnt--) { h = targets[cnt]; if (files[h].locked) { locked = true; helper.data('locked', true); break; } } !locked && self.trigger('lockfiles', {files : targets}); helper.data('autoScrTm', setInterval(function() { if (helper.data('autoScr')) { self.autoScroll[helper.data('autoScr')](helper.data('autoScrVal')); } }, 50)); }, drag : function(e, ui) { var helper = ui.helper, autoScr, autoUp, bottom; if ((autoUp = wzRect.top > e.pageY) || wzBottom2 < e.pageY) { if (wzRect.cwdEdge > e.pageX) { autoScr = (ltr? 'navbar' : 'cwd') + (autoUp? 'Up' : 'Down'); } else { autoScr = (ltr? 'cwd' : 'navbar') + (autoUp? 'Up' : 'Down'); } if (!autoUp) { if (autoScr.substr(0, 3) === 'cwd') { if (wzBottom < e.pageY) { bottom = wzBottom; } else { autoScr = null; } } else { bottom = wzBottom2; } } if (autoScr) { helper.data('autoScr', autoScr); helper.data('autoScrVal', Math.pow((autoUp? wzRect.top - e.pageY : e.pageY - bottom), 1.3)); } } if (! autoScr) { if (helper.data('autoScr')) { helper.data('refreshPositions', 1).data('autoScr', null); } } if (helper.data('refreshPositions') && $(this).elfUiWidgetInstance('draggable')) { if (helper.data('refreshPositions') > 0) { $(this).draggable('option', { refreshPositions : true, elfRefresh : true }); helper.data('refreshPositions', -1); } else { $(this).draggable('option', { refreshPositions : false, elfRefresh : false }); helper.data('refreshPositions', null); } } }, stop : function(e, ui) { var helper = ui.helper, files; $(document).off(keyEvt); $(this).elfUiWidgetInstance('draggable') && $(this).draggable('option', { refreshPositions : false }); self.draggingUiHelper = null; self.trigger('focus').trigger('dragstop'); if (! helper.data('droped')) { files = $.grep(helper.data('files')||[], function(h) { return h? true : false ;}); self.trigger('unlockfiles', {files : files}); self.trigger('selectfiles', {files : self.selected()}); } self.enable(); // restore node style node.attr('style', nodeStyle); helper.data('autoScrTm') && clearInterval(helper.data('autoScrTm')); }, helper : function(e, ui) { var element = this.id ? $(this) : $(this).parents('[id]:first'), helper = $('
                '), icon = function(f) { var mime = f.mime, i, tmb = self.tmb(f); i = '
                '; if (tmb) { i = $(i).addClass(tmb.className).css('background-image', "url('"+tmb.url+"')").get(0).outerHTML; } else if (f.icon) { i = $(i).css(self.getIconStyle(f, true)).get(0).outerHTML; } if (f.csscls) { i = '
                ' + i + '
                '; } return i; }, hashes, l, ctr; self.draggingUiHelper && self.draggingUiHelper.stop(true, true); self.trigger('dragstart', {target : element[0], originalEvent : e}, true); hashes = element.hasClass(self.res('class', 'cwdfile')) ? self.selected() : [self.navId2Hash(element.attr('id'))]; helper.append(icon(files[hashes[0]])).data('files', hashes).data('locked', false).data('droped', false).data('namespace', namespace).data('dropover', 0); if ((l = hashes.length) > 1) { helper.append(icon(files[hashes[l-1]]) + ''+l+''); } $(document).on(keyEvt, function(e){ if (self._commands.copy) { var chk = (e.shiftKey||e.ctrlKey||e.metaKey); if (ctr !== chk) { ctr = chk; if (helper.is(':visible') && helper.data('dropover') && ! helper.data('droped')) { helper.toggleClass('elfinder-drag-helper-plus', helper.data('locked')? true : ctr); self.trigger(ctr? 'unlockfiles' : 'lockfiles', {files : hashes, helper: helper}); } } } }); return helper; } }; })(); // in getFileCallback set - change default actions on double click/enter/ctrl+enter if (self.commands.getfile) { if (typeof(self.options.getFileCallback) == 'function') { self.bind('dblclick', function(e) { e.preventDefault(); self.exec('getfile').fail(function() { self.exec('open', e.data && e.data.file? [ e.data.file ]: void(0)); }); }); self.shortcut({ pattern : 'enter', description : self.i18n('cmdgetfile'), callback : function() { self.exec('getfile').fail(function() { self.exec(self.OS == 'mac' ? 'rename' : 'open'); }); } }) .shortcut({ pattern : 'ctrl+enter', description : self.i18n(self.OS == 'mac' ? 'cmdrename' : 'cmdopen'), callback : function() { self.exec(self.OS == 'mac' ? 'rename' : 'open'); } }); } else { self.options.getFileCallback = null; } } // load commands $.each(self.commands, function(name, cmd) { var proto = Object.assign({}, cmd.prototype), extendsCmd, opts; if ($.isFunction(cmd) && !self._commands[name] && (cmd.prototype.forceLoad || $.inArray(name, self.options.commands) !== -1)) { extendsCmd = cmd.prototype.extendsCmd || ''; if (extendsCmd) { if ($.isFunction(self.commands[extendsCmd])) { cmd.prototype = Object.assign({}, base, new self.commands[extendsCmd](), cmd.prototype); } else { return true; } } else { cmd.prototype = Object.assign({}, base, cmd.prototype); } self._commands[name] = new cmd(); cmd.prototype = proto; opts = self.options.commandsOptions[name] || {}; if (extendsCmd && self.options.commandsOptions[extendsCmd]) { opts = $.extend(true, {}, self.options.commandsOptions[extendsCmd], opts); } self._commands[name].setup(name, opts); // setup linked commands if (self._commands[name].linkedCmds.length) { $.each(self._commands[name].linkedCmds, function(i, n) { var lcmd = self.commands[n]; if ($.isFunction(lcmd) && !self._commands[n]) { lcmd.prototype = base; self._commands[n] = new lcmd(); self._commands[n].setup(n, self.options.commandsOptions[n]||{}); } }); } } }); /** * UI nodes * * @type Object **/ self.ui = { // container for nav panel and current folder container workzone : $('
                ').appendTo(node).elfinderworkzone(self), // contaainer for folders tree / places navbar : $('
                ').appendTo(node).elfindernavbar(self, self.options.uiOptions.navbar || {}), // container for for preview etc at below the navbar navdock : $('
                ').appendTo(node).elfindernavdock(self, self.options.uiOptions.navdock || {}), // contextmenu contextmenu : $('
                ').appendTo(node).elfindercontextmenu(self), // overlay overlay : $('
                ').appendTo(node).elfinderoverlay({ show : function() { self.disable(); }, hide : function() { prevEnabled && self.enable(); } }), // current folder container cwd : $('
                ').appendTo(node).elfindercwd(self, self.options.uiOptions.cwd || {}), // notification dialog window notify : self.dialog('', { cssClass : 'elfinder-dialog-notify' + (self.options.notifyDialog.canClose? '' : ' elfinder-titlebar-button-hide'), position : self.options.notifyDialog.position, absolute : true, resizable : false, autoOpen : false, allowMinimize : true, closeOnEscape : self.options.notifyDialog.canClose? true : false, title : ' ', width : self.options.notifyDialog.width? parseInt(self.options.notifyDialog.width) : null, minHeight : null, minimize : function() { self.ui.notify.trigger('minimize'); } }), statusbar : $('
                ').hide().appendTo(node), toast : $('
                ').appendTo(node), bottomtray : $('
                ').appendTo(node), progressbar : $('
                ').appendTo(node) }; self.trigger('uiready'); // load required ui $.each(self.options.ui || [], function(i, ui) { var name = 'elfinder'+ui, opts = self.options.uiOptions[ui] || {}; if (!self.ui[ui] && $.fn[name]) { // regist to self.ui before make instance self.ui[ui] = $('<'+(opts.tag || 'div')+'/>').appendTo(node); self.ui[ui][name](self, opts); } }); self.ui.progressbar.appendTo(self.ui.workzone); self.ui.notify.prev('.ui-dialog-titlebar').append('
                '); // update size self.resize(width, height); // make node resizable if (self.options.resizable) { node.resizable({ resize : function(e, ui) { self.resize(ui.size.width, ui.size.height); }, handles : 'se', minWidth : 300, minHeight : 200 }); if (self.UA.Touch) { node.addClass('touch-punch'); } } (function() { var navbar = self.getUI('navbar'), cwd = self.getUI('cwd').parent(); self.autoScroll = { navbarUp : function(v) { navbar.scrollTop(Math.max(0, navbar.scrollTop() - v)); }, navbarDown : function(v) { navbar.scrollTop(navbar.scrollTop() + v); }, cwdUp : function(v) { cwd.scrollTop(Math.max(0, cwd.scrollTop() - v)); }, cwdDown : function(v) { cwd.scrollTop(cwd.scrollTop() + v); } }; })(); // Swipe on the touch devices to show/hide of toolbar or navbar if (self.UA.Touch) { (function() { var lastX, lastY, nodeOffset, nodeWidth, nodeTop, navbarW, toolbarH, navbar = self.getUI('navbar'), toolbar = self.getUI('toolbar'), moveEv = 'touchmove.stopscroll', moveTm, moveUpOn = function(e) { var touches = e.originalEvent.touches || [{}], y = touches[0].pageY || null; if (!lastY || y < lastY) { e.preventDefault(); moveTm && clearTimeout(moveTm); } }, moveDownOn = function(e) { e.preventDefault(); moveTm && clearTimeout(moveTm); }, moveOff = function() { moveTm = setTimeout(function() { node.off(moveEv); }, 100); }, handleW, handleH = 50; navbar = navbar.children().length? navbar : null; toolbar = toolbar.length? toolbar : null; node.on('touchstart touchmove touchend', function(e) { if (e.type === 'touchend') { lastX = false; lastY = false; moveOff(); return; } var touches = e.originalEvent.touches || [{}], x = touches[0].pageX || null, y = touches[0].pageY || null, ltr = (self.direction === 'ltr'), navbarMode, treeWidth, swipeX, moveX, toolbarT, mode; if (x === null || y === null || (e.type === 'touchstart' && touches.length > 1)) { return; } if (e.type === 'touchstart') { nodeOffset = node.offset(); nodeWidth = node.width(); if (navbar) { lastX = false; if (navbar.is(':hidden')) { if (! handleW) { handleW = Math.max(50, nodeWidth / 10); } if ((ltr? (x - nodeOffset.left) : (nodeWidth + nodeOffset.left - x)) < handleW) { lastX = x; } } else if (! e.originalEvent._preventSwipeX) { navbarW = navbar.width(); if (ltr) { swipeX = (x < nodeOffset.left + navbarW); } else { swipeX = (x > nodeOffset.left + nodeWidth - navbarW); } if (swipeX) { handleW = Math.max(50, nodeWidth / 10); lastX = x; } else { lastX = false; } } } if (toolbar) { lastY = false; if (! e.originalEvent._preventSwipeY) { toolbarH = toolbar.height(); nodeTop = nodeOffset.top; if (y - nodeTop < (toolbar.is(':hidden')? handleH : (toolbarH + 30))) { lastY = y; node.on(moveEv, toolbar.is(':hidden')? moveDownOn: moveUpOn); } } } } else { if (navbar && lastX !== false) { navbarMode = (ltr? (lastX > x) : (lastX < x))? 'navhide' : 'navshow'; moveX = Math.abs(lastX - x); if (navbarMode === 'navhide' && moveX > navbarW * 0.6 || (moveX > (navbarMode === 'navhide'? navbarW / 3 : 45) && (navbarMode === 'navshow' || (ltr? x < nodeOffset.left + 20 : x > nodeOffset.left + nodeWidth - 20) )) ) { self.getUI('navbar').trigger(navbarMode, {handleW: handleW}); lastX = false; } } if (toolbar && lastY !== false ) { toolbarT = toolbar.offset().top; if (Math.abs(lastY - y) > Math.min(45, toolbarH / 3)) { mode = (lastY > y)? 'slideUp' : 'slideDown'; if (mode === 'slideDown' || toolbarT + 20 > y) { if (toolbar.is(mode === 'slideDown' ? ':hidden' : ':visible')) { toolbar.stop(true, true).trigger('toggle', {duration: 100, handleH: handleH}); } lastY = false; } } } } }); })(); } if (self.dragUpload) { // add event listener for HTML5 DnD upload (function() { var isin = function(e) { return (e.target.nodeName !== 'TEXTAREA' && e.target.nodeName !== 'INPUT' && $(e.target).closest('div.ui-dialog-content').length === 0); }, ent = 'native-drag-enter', disable = 'native-drag-disable', c = 'class', navdir = self.res(c, 'navdir'), droppable = self.res(c, 'droppable'), dropover = self.res(c, 'adroppable'), arrow = self.res(c, 'navarrow'), clDropActive = self.res(c, 'adroppable'), wz = self.getUI('workzone'), ltr = (self.direction === 'ltr'), clearTm = function() { autoScrTm && cancelAnimationFrame(autoScrTm); autoScrTm = null; }, wzRect, autoScrFn, autoScrTm; node.on('dragenter', function(e) { clearTm(); if (isin(e)) { e.preventDefault(); e.stopPropagation(); wzRect = wz.data('rectangle'); } }) .on('dragleave', function(e) { clearTm(); if (isin(e)) { e.preventDefault(); e.stopPropagation(); } }) .on('dragover', function(e) { var autoUp; if (isin(e)) { e.preventDefault(); e.stopPropagation(); e.originalEvent.dataTransfer.dropEffect = 'none'; if (! autoScrTm) { autoScrTm = requestAnimationFrame(function() { var wzBottom = wzRect.top + wzRect.height, wzBottom2 = wzBottom - self.getUI('navdock').outerHeight(true), fn; if ((autoUp = e.pageY < wzRect.top) || e.pageY > wzBottom2 ) { if (wzRect.cwdEdge > e.pageX) { fn = (ltr? 'navbar' : 'cwd') + (autoUp? 'Up' : 'Down'); } else { fn = (ltr? 'cwd' : 'navbar') + (autoUp? 'Up' : 'Down'); } if (!autoUp) { if (fn.substr(0, 3) === 'cwd') { if (wzBottom < e.pageY) { wzBottom2 = wzBottom; } else { fn = ''; } } } fn && self.autoScroll[fn](Math.pow((autoUp? wzRect.top - e.pageY : e.pageY - wzBottom2), 1.3)); } autoScrTm = null; }); } } else { clearTm(); } }) .on('drop', function(e) { clearTm(); if (isin(e)) { e.stopPropagation(); e.preventDefault(); } }); node.on('dragenter', '.native-droppable', function(e){ if (e.originalEvent.dataTransfer) { var $elm = $(e.currentTarget), id = e.currentTarget.id || null, cwd = null, elfFrom; if (!id) { // target is cwd cwd = self.cwd(); $elm.data(disable, false); try { $.each(e.originalEvent.dataTransfer.types, function(i, v){ if (v.substr(0, 13) === 'elfinderfrom:') { elfFrom = v.substr(13).toLowerCase(); } }); } catch(e) {} } if (!cwd || (cwd.write && (!elfFrom || elfFrom !== (window.location.href + cwd.hash).toLowerCase()))) { e.preventDefault(); e.stopPropagation(); $elm.data(ent, true); $elm.addClass(clDropActive); } else { $elm.data(disable, true); } } }) .on('dragleave', '.native-droppable', function(e){ if (e.originalEvent.dataTransfer) { var $elm = $(e.currentTarget); e.preventDefault(); e.stopPropagation(); if ($elm.data(ent)) { $elm.data(ent, false); } else { $elm.removeClass(clDropActive); } } }) .on('dragover', '.native-droppable', function(e){ if (e.originalEvent.dataTransfer) { var $elm = $(e.currentTarget); e.preventDefault(); e.stopPropagation(); e.originalEvent.dataTransfer.dropEffect = $elm.data(disable)? 'none' : 'copy'; $elm.data(ent, false); } }) .on('drop', '.native-droppable', function(e){ if (e.originalEvent && e.originalEvent.dataTransfer) { var $elm = $(e.currentTarget), id; e.preventDefault(); e.stopPropagation(); $elm.removeClass(clDropActive); if (e.currentTarget.id) { id = $elm.hasClass(navdir)? self.navId2Hash(e.currentTarget.id) : self.cwdId2Hash(e.currentTarget.id); } else { id = self.cwd().hash; } e.originalEvent._target = id; self.exec('upload', {dropEvt: e.originalEvent, target: id}, void 0, id); } }); })(); } // trigger event cssloaded if cssAutoLoad disabled if (self.cssloaded === false) { self.cssloaded = true; self.trigger('cssloaded'); } // calculate elFinder node z-index self.zIndexCalc(); // send initial request and start to pray >_< self.trigger('init') .request({ data : {cmd : 'open', target : self.startDir(), init : 1, tree : 1}, preventDone : true, notify : {type : 'open', cnt : 1, hideCnt : true}, freeze : true }) .fail(function() { self.trigger('fail').disable().lastDir(''); listeners = {}; shortcuts = {}; $(document).add(node).off('.'+namespace); self.trigger = function() { }; }) .done(function(data) { var trashDisable = function(th) { var src = self.file(self.trashes[th]), d = self.options.debug, error; if (src && src.volumeid) { delete self.volOptions[src.volumeid].trashHash; } self.trashes[th] = false; self.debug('backend-error', 'Trash hash "'+th+'" was not found or not writable.'); }, toChkTh = {}; // regist rawStringDecoder if (self.options.rawStringDecoder) { self.registRawStringDecoder(self.options.rawStringDecoder); } // re-calculate elFinder node z-index self.zIndexCalc(); self.load().debug('api', self.api); // update ui's size after init node.trigger('resize'); // initial open open(data); self.trigger('open', data, false); self.trigger('opendone'); if (inFrame && self.options.enableAlways) { $(window).trigger('focus'); } // check self.trashes $.each(self.trashes, function(th) { var dir = self.file(th), src; if (! dir) { toChkTh[th] = true; } else if (dir.mime !== 'directory' || ! dir.write) { trashDisable(th); } }); if (Object.keys(toChkTh).length) { self.request({ data : {cmd : 'info', targets : Object.keys(toChkTh)}, preventDefault : true }).done(function(data) { if (data && data.files) { $.each(data.files, function(i, dir) { if (dir.mime === 'directory' && dir.write) { delete toChkTh[dir.hash]; } }); } }).always(function() { $.each(toChkTh, trashDisable); }); } // to enable / disable self[self.options.enableAlways? 'enable' : 'disable'](); }); // self.timeEnd('load'); // End of bootUp() }; // call bootCallback function with elFinder instance, extraObject - { dfrdsBeforeBootup: dfrdsBeforeBootup } if (bootCallback && typeof bootCallback === 'function') { self.bootCallback = bootCallback; bootCallback.call(node.get(0), self, { dfrdsBeforeBootup: dfrdsBeforeBootup }); } // call dfrdsBeforeBootup functions then boot up elFinder $.when.apply(null, dfrdsBeforeBootup).done(function() { bootUp(); }).fail(function(error) { self.error(error); }); }; //register elFinder to global scope if (typeof toGlobal === 'undefined' || toGlobal) { window.elFinder = elFinder; } /** * Prototype * * @type Object */ elFinder.prototype = { uniqueid : 0, res : function(type, id) { return this.resources[type] && this.resources[type][id]; }, /** * User os. Required to bind native shortcuts for open/rename * * @type String **/ OS : navigator.userAgent.indexOf('Mac') !== -1 ? 'mac' : navigator.userAgent.indexOf('Win') !== -1 ? 'win' : 'other', /** * User browser UA. * jQuery.browser: version deprecated: 1.3, removed: 1.9 * * @type Object **/ UA : (function(){ var self = this, webkit = !document.unqueID && !window.opera && !window.sidebar && 'localStorage' in window && 'WebkitAppearance' in document.documentElement.style, chrome = webkit && window.chrome, /*setRotated = function() { var a = ((screen && screen.orientation && screen.orientation.angle) || window.orientation || 0) + 0; if (a === -90) { a = 270; } UA.Angle = a; UA.Rotated = a % 180 === 0? false : true; },*/ UA = { // Browser IE <= IE 6 ltIE6 : typeof window.addEventListener == "undefined" && typeof document.documentElement.style.maxHeight == "undefined", // Browser IE <= IE 7 ltIE7 : typeof window.addEventListener == "undefined" && typeof document.querySelectorAll == "undefined", // Browser IE <= IE 8 ltIE8 : typeof window.addEventListener == "undefined" && typeof document.getElementsByClassName == "undefined", // Browser IE <= IE 9 ltIE9 : document.uniqueID && document.documentMode <= 9, // Browser IE <= IE 10 ltIE10 : document.uniqueID && document.documentMode <= 10, // Browser IE >= IE 11 gtIE11 : document.uniqueID && document.documentMode >= 11, IE : document.uniqueID, Firefox : window.sidebar, Opera : window.opera, Webkit : webkit, Chrome : chrome, Edge : (chrome && window.msCredentials)? true : false, Safari : webkit && !window.chrome, Mobile : typeof window.orientation != "undefined", Touch : typeof window.ontouchstart != "undefined", iOS : navigator.platform.match(/^iP(?:[ao]d|hone)/), Mac : navigator.platform.match(/^Mac/), Fullscreen : (typeof (document.exitFullscreen || document.webkitExitFullscreen || document.mozCancelFullScreen || document.msExitFullscreen) !== 'undefined'), Angle : 0, Rotated : false, CSS : (function() { var aStyle = document.createElement('a').style, pStyle = document.createElement('p').style, css; css = 'position:sticky;position:-webkit-sticky;'; css += 'width:-webkit-max-content;width:-moz-max-content;width:-ms-max-content;width:max-content;'; aStyle.cssText = css; return { positionSticky : aStyle.position.indexOf('sticky')!==-1, widthMaxContent : aStyle.width.indexOf('max-content')!==-1, flex : typeof pStyle.flex !== 'undefined' }; })() }; return UA; })(), /** * Is cookie enabled * * @type Boolean */ cookieEnabled : window.navigator.cookieEnabled, /** * Has RequireJS? * * @type Boolean */ hasRequire : (typeof define === 'function' && define.amd), /** * Current request command * * @type String */ currentReqCmd : '', /** * Current keyboard state * * @type Object */ keyState : {}, /** * Internationalization object * * @type Object */ i18 : { en : { translator : '', language : 'English', direction : 'ltr', dateFormat : 'd.m.Y H:i', fancyDateFormat : '$1 H:i', nonameDateFormat : 'ymd-His', messages : {} }, months : ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], monthsShort : ['msJan', 'msFeb', 'msMar', 'msApr', 'msMay', 'msJun', 'msJul', 'msAug', 'msSep', 'msOct', 'msNov', 'msDec'], days : ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], daysShort : ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'] }, /** * File mimetype to kind mapping * * @type Object */ kinds : { 'unknown' : 'Unknown', 'directory' : 'Folder', 'group' : 'Selects', 'symlink' : 'Alias', 'symlink-broken' : 'AliasBroken', 'application/x-empty' : 'TextPlain', 'application/postscript' : 'Postscript', 'application/vnd.ms-office' : 'MsOffice', 'application/msword' : 'MsWord', 'application/vnd.ms-word' : 'MsWord', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' : 'MsWord', 'application/vnd.ms-word.document.macroEnabled.12' : 'MsWord', 'application/vnd.openxmlformats-officedocument.wordprocessingml.template' : 'MsWord', 'application/vnd.ms-word.template.macroEnabled.12' : 'MsWord', 'application/vnd.ms-excel' : 'MsExcel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' : 'MsExcel', 'application/vnd.ms-excel.sheet.macroEnabled.12' : 'MsExcel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.template' : 'MsExcel', 'application/vnd.ms-excel.template.macroEnabled.12' : 'MsExcel', 'application/vnd.ms-excel.sheet.binary.macroEnabled.12' : 'MsExcel', 'application/vnd.ms-excel.addin.macroEnabled.12' : 'MsExcel', 'application/vnd.ms-powerpoint' : 'MsPP', 'application/vnd.openxmlformats-officedocument.presentationml.presentation' : 'MsPP', 'application/vnd.ms-powerpoint.presentation.macroEnabled.12' : 'MsPP', 'application/vnd.openxmlformats-officedocument.presentationml.slideshow' : 'MsPP', 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12' : 'MsPP', 'application/vnd.openxmlformats-officedocument.presentationml.template' : 'MsPP', 'application/vnd.ms-powerpoint.template.macroEnabled.12' : 'MsPP', 'application/vnd.ms-powerpoint.addin.macroEnabled.12' : 'MsPP', 'application/vnd.openxmlformats-officedocument.presentationml.slide' : 'MsPP', 'application/vnd.ms-powerpoint.slide.macroEnabled.12' : 'MsPP', 'application/pdf' : 'PDF', 'application/xml' : 'XML', 'application/vnd.oasis.opendocument.text' : 'OO', 'application/vnd.oasis.opendocument.text-template' : 'OO', 'application/vnd.oasis.opendocument.text-web' : 'OO', 'application/vnd.oasis.opendocument.text-master' : 'OO', 'application/vnd.oasis.opendocument.graphics' : 'OO', 'application/vnd.oasis.opendocument.graphics-template' : 'OO', 'application/vnd.oasis.opendocument.presentation' : 'OO', 'application/vnd.oasis.opendocument.presentation-template' : 'OO', 'application/vnd.oasis.opendocument.spreadsheet' : 'OO', 'application/vnd.oasis.opendocument.spreadsheet-template' : 'OO', 'application/vnd.oasis.opendocument.chart' : 'OO', 'application/vnd.oasis.opendocument.formula' : 'OO', 'application/vnd.oasis.opendocument.database' : 'OO', 'application/vnd.oasis.opendocument.image' : 'OO', 'application/vnd.openofficeorg.extension' : 'OO', 'application/x-shockwave-flash' : 'AppFlash', 'application/flash-video' : 'Flash video', 'application/x-bittorrent' : 'Torrent', 'application/javascript' : 'JS', 'application/rtf' : 'RTF', 'application/rtfd' : 'RTF', 'application/x-font-ttf' : 'TTF', 'application/x-font-otf' : 'OTF', 'application/x-rpm' : 'RPM', 'application/x-web-config' : 'TextPlain', 'application/xhtml+xml' : 'HTML', 'application/docbook+xml' : 'DOCBOOK', 'application/x-awk' : 'AWK', 'application/x-gzip' : 'GZIP', 'application/x-bzip2' : 'BZIP', 'application/x-xz' : 'XZ', 'application/zip' : 'ZIP', 'application/x-zip' : 'ZIP', 'application/x-rar' : 'RAR', 'application/x-tar' : 'TAR', 'application/x-7z-compressed' : '7z', 'application/x-jar' : 'JAR', 'text/plain' : 'TextPlain', 'text/x-php' : 'PHP', 'text/html' : 'HTML', 'text/javascript' : 'JS', 'text/css' : 'CSS', 'text/rtf' : 'RTF', 'text/rtfd' : 'RTF', 'text/x-c' : 'C', 'text/x-csrc' : 'C', 'text/x-chdr' : 'CHeader', 'text/x-c++' : 'CPP', 'text/x-c++src' : 'CPP', 'text/x-c++hdr' : 'CPPHeader', 'text/x-shellscript' : 'Shell', 'application/x-csh' : 'Shell', 'text/x-python' : 'Python', 'text/x-java' : 'Java', 'text/x-java-source' : 'Java', 'text/x-ruby' : 'Ruby', 'text/x-perl' : 'Perl', 'text/x-sql' : 'SQL', 'text/xml' : 'XML', 'text/x-comma-separated-values' : 'CSV', 'text/x-markdown' : 'Markdown', 'image/x-ms-bmp' : 'BMP', 'image/jpeg' : 'JPEG', 'image/gif' : 'GIF', 'image/png' : 'PNG', 'image/tiff' : 'TIFF', 'image/x-targa' : 'TGA', 'image/vnd.adobe.photoshop' : 'PSD', 'image/xbm' : 'XBITMAP', 'image/pxm' : 'PXM', 'audio/mpeg' : 'AudioMPEG', 'audio/midi' : 'AudioMIDI', 'audio/ogg' : 'AudioOGG', 'audio/mp4' : 'AudioMPEG4', 'audio/x-m4a' : 'AudioMPEG4', 'audio/wav' : 'AudioWAV', 'audio/x-mp3-playlist' : 'AudioPlaylist', 'video/x-dv' : 'VideoDV', 'video/mp4' : 'VideoMPEG4', 'video/mpeg' : 'VideoMPEG', 'video/x-msvideo' : 'VideoAVI', 'video/quicktime' : 'VideoMOV', 'video/x-ms-wmv' : 'VideoWM', 'video/x-flv' : 'VideoFlash', 'video/x-matroska' : 'VideoMKV', 'video/ogg' : 'VideoOGG' }, /** * File mimetype to file extention mapping * * @type Object * @see elFinder.mimetypes.js */ mimeTypes : {}, /** * Ajax request data validation rules * * @type Object */ rules : { defaults : function(data) { if (!data || (data.added && !Array.isArray(data.added)) || (data.removed && !Array.isArray(data.removed)) || (data.changed && !Array.isArray(data.changed))) { return false; } return true; }, open : function(data) { return data && data.cwd && data.files && $.isPlainObject(data.cwd) && Array.isArray(data.files); }, tree : function(data) { return data && data.tree && Array.isArray(data.tree); }, parents : function(data) { return data && data.tree && Array.isArray(data.tree); }, tmb : function(data) { return data && data.images && ($.isPlainObject(data.images) || Array.isArray(data.images)); }, upload : function(data) { return data && ($.isPlainObject(data.added) || Array.isArray(data.added));}, search : function(data) { return data && data.files && Array.isArray(data.files); } }, /** * Commands costructors * * @type Object */ commands : {}, /** * Commands to add the item (space delimited) * * @type String */ cmdsToAdd : 'archive duplicate extract mkdir mkfile paste rm upload', parseUploadData : function(text) { var self = this, data; if (!$.trim(text)) { return {error : ['errResponse', 'errDataEmpty']}; } try { data = JSON.parse(text); } catch (e) { return {error : ['errResponse', 'errDataNotJSON']}; } data = self.normalize(data); if (!self.validResponse('upload', data)) { return {error : (data.norError || ['errResponse'])}; } data.removed = $.merge((data.removed || []), $.map(data.added || [], function(f) { return self.file(f.hash)? f.hash : null; })); return data; }, iframeCnt : 0, uploads : { // xhr muiti uploading flag xhrUploading: false, // Timer of request fail to sync failSyncTm: null, // current chunkfail requesting chunk chunkfailReq: {}, // check file/dir exists checkExists: function(files, target, fm, isDir) { var dfrd = $.Deferred(), names, renames = [], hashes = {}, chkFiles = [], cancel = function() { var i = files.length; while (--i > -1) { files[i]._remove = true; } }, resolve = function() { dfrd.resolve(renames, hashes); }, check = function() { var existed = [], exists = [], i, c, pathStr = target !== fm.cwd().hash? fm.path(target, true) + fm.option('separator', target) : '', confirm = function(ndx) { var last = ndx == exists.length-1, opts = { cssClass : 'elfinder-confirm-upload', title : fm.i18n('cmdupload'), text : ['errExists', pathStr + exists[ndx].name, 'confirmRepl'], all : !last, accept : { label : 'btnYes', callback : function(all) { !last && !all ? confirm(++ndx) : resolve(); } }, reject : { label : 'btnNo', callback : function(all) { var i; if (all) { i = exists.length; while (ndx < i--) { files[exists[i].i]._remove = true; } } else { files[exists[ndx].i]._remove = true; } !last && !all ? confirm(++ndx) : resolve(); } }, cancel : { label : 'btnCancel', callback : function() { cancel(); resolve(); } }, buttons : [ { label : 'btnBackup', cssClass : 'elfinder-confirm-btn-backup', callback : function(all) { var i; if (all) { i = exists.length; while (ndx < i--) { renames.push(exists[i].name); } } else { renames.push(exists[ndx].name); } !last && !all ? confirm(++ndx) : resolve(); } } ] }; if (!isDir) { opts.buttons.push({ label : 'btnRename' + (last? '' : 'All'), cssClass : 'elfinder-confirm-btn-rename', callback : function() { renames = null; resolve(); } }); } if (fm.iframeCnt > 0) { delete opts.reject; } fm.confirm(opts); }; if (! fm.file(target).read) { // for dropbox type resolve(); return; } names = $.map(files, function(file, i) { return file.name && (!fm.UA.iOS || file.name !== 'image.jpg')? {i: i, name: file.name} : null ;}); fm.request({ data : {cmd : 'ls', target : target, intersect : $.map(names, function(item) { return item.name;})}, notify : {type : 'preupload', cnt : 1, hideCnt : true}, preventDefault : true }) .done(function(data) { var existedArr, cwdItems; if (data) { if (data.error) { cancel(); } else { if (fm.options.overwriteUploadConfirm && fm.option('uploadOverwrite', target)) { if (data.list) { if (Array.isArray(data.list)) { existed = data.list || []; } else { existedArr = []; existed = $.map(data.list, function(n) { if (typeof n === 'string') { return n; } else { // support to >=2.1.11 plugin Normalizer, Sanitizer existedArr = existedArr.concat(n); return false; } }); if (existedArr.length) { existed = existed.concat(existedArr); } hashes = data.list; } exists = $.grep(names, function(name){ return $.inArray(name.name, existed) !== -1 ? true : false ; }); if (exists.length && existed.length && target == fm.cwd().hash) { cwdItems = $.map(fm.files(target), function(file) { return file.name; } ); if ($.grep(existed, function(n) { return $.inArray(n, cwdItems) === -1? true : false; }).length){ fm.sync(); } } } } } } if (exists.length > 0) { confirm(0); } else { resolve(); } }) .fail(function(error) { cancel(); resolve(); error && fm.error(error); }); }; if (fm.api >= 2.1 && typeof files[0] == 'object') { check(); } else { resolve(); } return dfrd; }, // check droped contents checkFile : function(data, fm, target) { if (!!data.checked || data.type == 'files') { return data.files; } else if (data.type == 'data') { var dfrd = $.Deferred(), scanDfd = $.Deferred(), files = [], paths = [], dirctorys = [], processing = 0, items, mkdirs = [], cancel = false, toArray = function(list) { return Array.prototype.slice.call(list || [], 0); }, doScan = function(items) { var entry, readEntries, excludes = fm.options.folderUploadExclude[fm.OS] || null, length = items.length, check = function() { if (--processing < 1 && scanDfd.state() === 'pending') { scanDfd.resolve(); } }, pushItem = function(file) { if (! excludes || ! file.name.match(excludes)) { paths.push(entry.fullPath || ''); files.push(file); } check(); }, readEntries = function(dirReader) { var entries = [], read = function() { dirReader.readEntries(function(results) { if (cancel || !results.length) { for (var i = 0; i < entries.length; i++) { if (cancel) { scanDfd.reject(); break; } doScan([entries[i]]); } check(); } else { entries = entries.concat(toArray(results)); read(); } }, check); }; read(); }; processing++; for (var i = 0; i < length; i++) { if (cancel) { scanDfd.reject(); break; } entry = items[i]; if (entry) { if (entry instanceof File) { pushItem(entry); } else if (entry.isFile) { processing++; entry.file(pushItem, check); } else if (entry.isDirectory) { if (fm.api >= 2.1) { processing++; mkdirs.push(entry.fullPath); readEntries(entry.createReader()); // Start reading dirs. } } } } check(); return scanDfd; }, hasDirs; items = $.map(data.files.items, function(item){ if (item.kind === 'file') { return (item.getAsEntry? item.getAsEntry() : item.webkitGetAsEntry()) || item.getAsFile(); } else { return null; } }); $.each(items, function(i, item) { if (item.isDirectory) { hasDirs = true; return false; } }); if (items.length > 0) { fm.uploads.checkExists(items, target, fm, hasDirs).done(function(renames, hashes){ var dfds = []; if (fm.options.overwriteUploadConfirm && fm.option('uploadOverwrite', target)) { if (renames === null) { data.overwrite = 0; renames = []; } items = $.grep(items, function(item){ var i, bak, hash, dfd, hi; if (item.isDirectory && renames.length) { i = $.inArray(item.name, renames); if (i !== -1) { renames.splice(i, 1); bak = fm.uniqueName(item.name + fm.options.backupSuffix , null, ''); $.each(hashes, function(h, name) { if (item.name == name) { hash = h; return false; } }); if (! hash) { hash = fm.fileByName(item.name, target).hash; } fm.lockfiles({files : [hash]}); dfd = fm.request({ data : {cmd : 'rename', target : hash, name : bak}, notify : {type : 'rename', cnt : 1} }) .fail(function() { item._remove = true; fm.sync(); }) .always(function() { fm.unlockfiles({files : [hash]}); }); dfds.push(dfd); } } return !item._remove? true : false; }); } $.when.apply($, dfds).done(function(){ var notifyto, msg, id = +new Date(); if (items.length > 0) { msg = fm.escape(items[0].name); if (items.length > 1) { msg += ' ... ' + items.length + fm.i18n('items'); } notifyto = setTimeout(function() { fm.notify({ type : 'readdir', id : id, cnt : 1, hideCnt: true, msg : fm.i18n('ntfreaddir') + ' (' + msg + ')', cancel: function() { cancel = true; } }); }, fm.options.notifyDelay); doScan(items).done(function() { notifyto && clearTimeout(notifyto); fm.notify({type : 'readdir', id: id, cnt : -1}); if (cancel) { dfrd.reject(); } else { dfrd.resolve([files, paths, renames, hashes, mkdirs]); } }).fail(function() { dfrd.reject(); }); } else { dfrd.reject(); } }); }); return dfrd.promise(); } else { return dfrd.reject(); } } else { var ret = []; var check = []; var str = data.files[0]; if (data.type == 'html') { var tmp = $("").append($.parseHTML(str.replace(/ src=/ig, ' _elfsrc='))), atag; $('img[_elfsrc]', tmp).each(function(){ var url, purl, self = $(this), pa = self.closest('a'); if (pa && pa.attr('href') && pa.attr('href').match(/\.(?:jpe?g|gif|bmp|png)/i)) { purl = pa.attr('href'); } url = self.attr('_elfsrc'); if (url) { if (purl) { $.inArray(purl, ret) == -1 && ret.push(purl); $.inArray(url, check) == -1 && check.push(url); } else { $.inArray(url, ret) == -1 && ret.push(url); } } // Probably it's clipboard data if (ret.length === 1 && ret[0].match(/^data:image\/png/)) { data.clipdata = true; } }); atag = $('a[href]', tmp); atag.each(function(){ var text, loc, parseUrl = function(url) { var a = document.createElement('a'); a.href = url; return a; }; if (text = $(this).text()) { loc = parseUrl($(this).attr('href')); if (loc.href && loc.href.match(/^(?:ht|f)tp/i) && (atag.length === 1 || ! loc.pathname.match(/(?:\.html?|\/[^\/.]*)$/i) || $.trim(text).match(/\.[a-z0-9-]{1,10}$/i))) { if ($.inArray(loc.href, ret) == -1 && $.inArray(loc.href, check) == -1) ret.push(loc.href); } } }); } else { var regex, m, url; regex = /((?:ht|f)tps?:\/\/[-_.!~*\'()a-z0-9;/?:\@&=+\$,%#\*\[\]]+)/ig; while (m = regex.exec(str)) { url = m[1].replace(/&/g, '&'); if ($.inArray(url, ret) == -1) ret.push(url); } } return ret; } }, // upload transport using XMLHttpRequest xhr : function(data, fm) { var self = fm ? fm : this, node = self.getUI(), xhr = new XMLHttpRequest(), notifyto = null, notifyto1 = null, notifyto2 = null, dataChecked = data.checked, isDataType = (data.isDataType || data.type == 'data'), target = (data.target || self.cwd().hash), dropEvt = (data.dropEvt || null), extraData = data.extraData || null, chunkEnable = (self.option('uploadMaxConn', target) != -1), multiMax = Math.min(5, Math.max(1, self.option('uploadMaxConn', target))), retryWait = 10000, // 10 sec retryMax = 30, // 10 sec * 30 = 300 secs (Max 5 mins) retry = 0, getFile = function(files) { var dfd = $.Deferred(), file; if (files.promise) { files.always(function(f) { dfd.resolve(Array.isArray(f) && f.length? (isDataType? f[0][0] : f[0]) : {}); }); } else { dfd.resolve(files.length? (isDataType? files[0][0] : files[0]) : {}); } return dfd; }, dfrd = $.Deferred() .fail(function(err) { var error = self.parseError(err), userAbort; if (error === 'userabort') { userAbort = true; error = void 0; } if (files && (self.uploads.xhrUploading || userAbort)) { // send request om fail getFile(files).done(function(file) { if (!userAbort) { triggerError(error, file); } if (! file._cid) { // send sync request self.uploads.failSyncTm && clearTimeout(self.uploads.failSyncTm); self.uploads.failSyncTm = setTimeout(function() { self.sync(target); }, 1000); } else if (! self.uploads.chunkfailReq[file._cid]) { // send chunkfail request self.uploads.chunkfailReq[file._cid] = true; setTimeout(function() { fm.request({ data : { cmd: 'upload', target: target, chunk: file._chunk, cid: file._cid, upload: ['chunkfail'], mimes: 'chunkfail' }, options : { type: 'post', url: self.uploadURL }, preventDefault: true }).always(function() { delete self.uploads.chunkfailReq[file._chunk]; }); }, 1000); } }); } else { triggerError(error); } !userAbort && self.sync(); self.uploads.xhrUploading = false; files = null; }) .done(function(data) { self.uploads.xhrUploading = false; files = null; if (data) { self.currentReqCmd = 'upload'; data.warning && triggerError(data.warning); self.updateCache(data); data.removed && data.removed.length && self.remove(data); data.added && data.added.length && self.add(data); data.changed && data.changed.length && self.change(data); self.trigger('upload', data, false); self.trigger('uploaddone'); if (data.toasts && Array.isArray(data.toasts)) { $.each(data.toasts, function() { this.msg && self.toast(this); }); } data.sync && self.sync(); if (data.debug) { self.responseDebug(data); fm.debug('backend-debug', data); } } }) .always(function() { self.abortXHR(xhr); // unregist fnAbort function node.off('uploadabort', fnAbort); $(window).off('unload', fnAbort); notifyto && clearTimeout(notifyto); notifyto1 && clearTimeout(notifyto1); notifyto2 && clearTimeout(notifyto2); dataChecked && !data.multiupload && checkNotify() && self.notify({type : 'upload', cnt : -cnt, progress : 0, size : 0}); notifyto1 && uploadedNtf && self.notify({type : 'chunkmerge', cnt : -cnt}); chunkMerge && notifyElm.children('.elfinder-notify-chunkmerge').length && self.notify({type : 'chunkmerge', cnt : -1}); }), formData = new FormData(), files = data.input ? data.input.files : self.uploads.checkFile(data, self, target), cnt = data.checked? (isDataType? files[0].length : files.length) : files.length, isChunked = false, loaded = 0, prev = 0, filesize = 0, notify = false, notifyElm = self.ui.notify, cancelBtn = true, uploadedNtf = false, abort = false, checkNotify = function() { if (!notify && (ntfUpload = notifyElm.children('.elfinder-notify-upload')).length) { notify = true; } return notify; }, fnAbort = function(e, error) { abort = true; self.abortXHR(xhr, { quiet: true, abort: true }); dfrd.reject(error); if (checkNotify()) { self.notify({type : 'upload', cnt : ntfUpload.data('cnt') * -1, progress : 0, size : 0}); } }, cancelToggle = function(show, hasChunk) { ntfUpload.children('.elfinder-notify-cancel')[show? 'show':'hide'](); cancelBtn = show; }, startNotify = function(size) { if (!size) size = filesize; return setTimeout(function() { notify = true; self.notify({type : 'upload', cnt : cnt, progress : loaded - prev, size : size, cancel: function() { node.trigger('uploadabort', 'userabort'); } }); ntfUpload = notifyElm.children('.elfinder-notify-upload'); prev = loaded; if (data.multiupload) { cancelBtn && cancelToggle(true); } else { cancelToggle(cancelBtn && loaded < size); } }, self.options.notifyDelay); }, doRetry = function() { if (retry++ <= retryMax) { if (checkNotify() && prev) { self.notify({type : 'upload', cnt : 0, progress : 0, size : prev}); } self.abortXHR(xhr, { quiet: true }); prev = loaded = 0; setTimeout(function() { var reqId; if (! abort) { xhr.open('POST', self.uploadURL, true); if (self.api >= 2.1029) { reqId = (+ new Date()).toString(16) + Math.floor(1000 * Math.random()).toString(16); (typeof formData['delete'] === 'function') && formData['delete']('reqid'); formData.append('reqid', reqId); xhr._requestId = reqId; } xhr.send(formData); } }, retryWait); } else { node.trigger('uploadabort', ['errAbort', 'errTimeout']); } }, progress = function() { var node; if (notify) { dfrd.notifyWith(ntfUpload, [{ cnt: ntfUpload.data('cnt'), progress: ntfUpload.data('progress'), total: ntfUpload.data('total') }]); } }, triggerError = function(err, file, unite) { err && self.trigger('xhruploadfail', { error: err, file: file }); if (unite) { if (err) { if (errCnt < self.options.maxErrorDialogs) { if (Array.isArray(err)) { errors = errors.concat(err); } else { errors.push(err); } } errCnt++; } } else { if (err) { self.error(err); } else { if (errors.length) { if (errCnt >= self.options.maxErrorDialogs) { errors = errors.concat('moreErrors', errCnt - self.options.maxErrorDialogs); } self.error(errors); } errors = []; errCnt = 0; } } }, errors = [], errCnt = 0, renames = (data.renames || null), hashes = (data.hashes || null), chunkMerge = false, ntfUpload = $(); // regist fnAbort function node.one('uploadabort', fnAbort); $(window).one('unload.' + fm.namespace, fnAbort); !chunkMerge && (prev = loaded); if (!isDataType && !cnt) { return dfrd.reject(['errUploadNoFiles']); } xhr.addEventListener('error', function() { if (xhr.status == 0) { if (abort) { dfrd.reject(); } else { // ff bug while send zero sized file // for safari - send directory if (!isDataType && data.files && $.grep(data.files, function(f){return ! f.type && f.size === (self.UA.Safari? 1802 : 0)? true : false;}).length) { dfrd.reject(['errAbort', 'errFolderUpload']); } else if (data.input && $.grep(data.input.files, function(f){return ! f.type && f.size === (self.UA.Safari? 1802 : 0)? true : false;}).length) { dfrd.reject(['errUploadNoFiles']); } else { doRetry(); } } } else { node.trigger('uploadabort', 'errConnect'); } }, false); xhr.addEventListener('load', function(e) { var status = xhr.status, res, curr = 0, error = '', errData, errObj; self.setCustomHeaderByXhr(xhr); if (status >= 400) { if (status > 500) { error = 'errResponse'; } else { error = ['errResponse', 'errServerError']; } } else { if (!xhr.responseText) { error = ['errResponse', 'errDataEmpty']; } } if (error) { node.trigger('uploadabort'); getFile(files || {}).done(function(file) { return dfrd.reject(file._cid? null : error); }); } loaded = filesize; if (checkNotify() && (curr = loaded - prev)) { self.notify({type : 'upload', cnt : 0, progress : curr, size : 0}); progress(); } res = self.parseUploadData(xhr.responseText); // chunked upload commit if (res._chunkmerged) { formData = new FormData(); var _file = [{_chunkmerged: res._chunkmerged, _name: res._name, _mtime: res._mtime}]; chunkMerge = true; node.off('uploadabort', fnAbort); notifyto2 = setTimeout(function() { self.notify({type : 'chunkmerge', cnt : 1}); }, self.options.notifyDelay); isDataType? send(_file, files[1]) : send(_file); return; } res._multiupload = data.multiupload? true : false; if (res.error) { errData = { cmd: 'upload', err: res, xhr: xhr, rc: xhr.status }; self.trigger('uploadfail', res); // trigger "requestError" event self.trigger('requestError', errData); if (errData._getEvent && errData._getEvent().isDefaultPrevented()) { res.error = ''; } if (res._chunkfailure || res._multiupload) { abort = true; self.uploads.xhrUploading = false; notifyto && clearTimeout(notifyto); if (ntfUpload.length) { self.notify({type : 'upload', cnt : -cnt, progress : 0, size : 0}); dfrd.reject(res); } else { // for multi connection dfrd.reject(); } } else { dfrd.reject(res); } } else { dfrd.resolve(res); } }, false); xhr.upload.addEventListener('loadstart', function(e) { if (!chunkMerge && e.lengthComputable) { loaded = e.loaded; retry && (loaded = 0); filesize = e.total; if (!loaded) { loaded = parseInt(filesize * 0.05); } if (checkNotify()) { self.notify({type : 'upload', cnt : 0, progress : loaded - prev, size : data.multiupload? 0 : filesize}); prev = loaded; progress(); } } }, false); xhr.upload.addEventListener('progress', function(e) { var curr; if (e.lengthComputable && !chunkMerge && xhr.readyState < 2) { loaded = e.loaded; // to avoid strange bug in safari (not in chrome) with drag&drop. // bug: macos finder opened in any folder, // reset safari cache (option+command+e), reload elfinder page, // drop file from finder // on first attempt request starts (progress callback called ones) but never ends. // any next drop - successfull. if (!data.checked && loaded > 0 && !notifyto) { notifyto = startNotify(xhr._totalSize - loaded); } if (!filesize) { filesize = e.total; if (!loaded) { loaded = parseInt(filesize * 0.05); } } curr = loaded - prev; if (checkNotify() && (curr/e.total) >= 0.05) { self.notify({type : 'upload', cnt : 0, progress : curr, size : 0}); prev = loaded; progress(); } if (!uploadedNtf && loaded >= filesize && !isChunked) { // Use "chunkmerge" for "server-in-process" notification uploadedNtf = true; notifyto1 = setTimeout(function() { self.notify({type : 'chunkmerge', cnt : cnt}); }, self.options.notifyDelay); } if (cancelBtn && ! data.multiupload && loaded >= filesize) { checkNotify() && cancelToggle(false); } } }, false); var send = function(files, paths){ var size = 0, fcnt = 1, sfiles = [], c = 0, total = cnt, maxFileSize, totalSize = 0, chunked = [], chunkID = new Date().getTime().toString().substr(-9), // for take care of the 32bit backend system BYTES_PER_CHUNK = Math.min((fm.uplMaxSize? fm.uplMaxSize : 2097152) - 8190, fm.options.uploadMaxChunkSize), // uplMaxSize margin 8kb or options.uploadMaxChunkSize blobSlice = chunkEnable? false : '', blobSize, blobMtime, blobName, i, start, end, chunks, blob, chunk, added, done, last, failChunk, multi = function(files, num){ var sfiles = [], cid, sfilesLen = 0, cancelChk, hasChunk; if (!abort) { while(files.length && sfiles.length < num) { sfiles.push(files.shift()); } sfilesLen = sfiles.length; if (sfilesLen) { cancelChk = sfilesLen; for (var i=0; i < sfilesLen; i++) { if (abort) { break; } cid = isDataType? (sfiles[i][0][0]._cid || null) : (sfiles[i][0]._cid || null); hasChunk = (hasChunk || cid)? true : false; if (!!failChunk[cid]) { last--; continue; } fm.exec('upload', { type: data.type, isDataType: isDataType, files: sfiles[i], checked: true, target: target, dropEvt: dropEvt, renames: renames, hashes: hashes, multiupload: true, overwrite: data.overwrite === 0? 0 : void 0, clipdata: data.clipdata }, void 0, target) .fail(function(error) { if (error && error === 'No such command') { abort = true; fm.error(['errUpload', 'errPerm']); } if (cid) { failChunk[cid] = true; } }) .always(function(e) { if (e && e.added) added = $.merge(added, e.added); if (last <= ++done) { fm.trigger('multiupload', {added: added}); notifyto && clearTimeout(notifyto); if (checkNotify()) { self.notify({type : 'upload', cnt : -cnt, progress : 0, size : 0}); } } if (files.length) { multi(files, 1); // Next one } else { if (--cancelChk <= 1) { if (cancelBtn) { cancelToggle(false, hasChunk); } } dfrd.resolve(); } }); } } } if (sfiles.length < 1 || abort) { if (abort) { notifyto && clearTimeout(notifyto); if (cid) { failChunk[cid] = true; } dfrd.reject(); } else { dfrd.resolve(); self.uploads.xhrUploading = false; } } }, check = function(){ if (!self.uploads.xhrUploading) { self.uploads.xhrUploading = true; multi(sfiles, multiMax); // Max connection: 3 } else { setTimeout(check, 100); } }, reqId, err; if (! dataChecked && (isDataType || data.type == 'files')) { if (! (maxFileSize = fm.option('uploadMaxSize', target))) { maxFileSize = 0; } for (i=0; i < files.length; i++) { try { blob = files[i]; blobSize = blob.size; if (blobSlice === false) { blobSlice = ''; if (self.api >= 2.1) { if ('slice' in blob) { blobSlice = 'slice'; } else if ('mozSlice' in blob) { blobSlice = 'mozSlice'; } else if ('webkitSlice' in blob) { blobSlice = 'webkitSlice'; } } } } catch(e) { cnt--; total--; continue; } // file size check if ((maxFileSize && blobSize > maxFileSize) || (!blobSlice && fm.uplMaxSize && blobSize > fm.uplMaxSize)) { triggerError(['errUploadFile', blob.name, 'errUploadFileSize'], blob, true); cnt--; total--; continue; } // file mime check if (blob.type && ! self.uploadMimeCheck(blob.type, target)) { triggerError(['errUploadFile', blob.name, 'errUploadMime', '(' + blob.type + ')'], blob, true); cnt--; total--; continue; } if (blobSlice && blobSize > BYTES_PER_CHUNK) { start = 0; end = BYTES_PER_CHUNK; chunks = -1; total = Math.floor((blobSize - 1) / BYTES_PER_CHUNK); blobMtime = blob.lastModified? Math.round(blob.lastModified/1000) : 0; blobName = data.clipdata? fm.date(fm.nonameDateFormat) + '.png' : blob.name; totalSize += blobSize; chunked[chunkID] = 0; while(start < blobSize) { chunk = blob[blobSlice](start, end); chunk._chunk = blobName + '.' + (++chunks) + '_' + total + '.part'; chunk._cid = chunkID; chunk._range = start + ',' + chunk.size + ',' + blobSize; chunk._mtime = blobMtime; chunked[chunkID]++; if (size) { c++; } if (typeof sfiles[c] == 'undefined') { sfiles[c] = []; if (isDataType) { sfiles[c][0] = []; sfiles[c][1] = []; } } size = BYTES_PER_CHUNK; fcnt = 1; if (isDataType) { sfiles[c][0].push(chunk); sfiles[c][1].push(paths[i]); } else { sfiles[c].push(chunk); } start = end; end = start + BYTES_PER_CHUNK; } if (chunk == null) { triggerError(['errUploadFile', blob.name, 'errUploadFileSize'], blob, true); cnt--; total--; } else { total += chunks; size = 0; fcnt = 1; c++; } continue; } if ((fm.uplMaxSize && size + blobSize > fm.uplMaxSize) || fcnt > fm.uplMaxFile) { size = 0; fcnt = 1; c++; } if (typeof sfiles[c] == 'undefined') { sfiles[c] = []; if (isDataType) { sfiles[c][0] = []; sfiles[c][1] = []; } } if (isDataType) { sfiles[c][0].push(blob); sfiles[c][1].push(paths[i]); } else { sfiles[c].push(blob); } size += blobSize; totalSize += blobSize; fcnt++; } if (errors.length) { triggerError(); } if (sfiles.length == 0) { // no data data.checked = true; return false; } if (sfiles.length > 1) { // multi upload notifyto = startNotify(totalSize); added = []; done = 0; last = sfiles.length; failChunk = []; check(); return true; } // single upload if (isDataType) { files = sfiles[0][0]; paths = sfiles[0][1]; } else { files = sfiles[0]; } } if (!dataChecked) { if (!fm.UA.Safari || !data.files) { notifyto = startNotify(totalSize); } else { xhr._totalSize = totalSize; } } dataChecked = true; if (! files.length) { dfrd.reject(['errUploadNoFiles']); } xhr.open('POST', self.uploadURL, true); // set request headers if (fm.customHeaders) { $.each(fm.customHeaders, function(key) { xhr.setRequestHeader(key, this); }); } // set xhrFields if (fm.xhrFields) { $.each(fm.xhrFields, function(key) { if (key in xhr) { xhr[key] = this; } }); } if (self.api >= 2.1029) { // request ID reqId = (+ new Date()).toString(16) + Math.floor(1000 * Math.random()).toString(16); formData.append('reqid', reqId); xhr._requestId = reqId; } formData.append('cmd', 'upload'); formData.append(self.newAPI ? 'target' : 'current', target); if (renames && renames.length) { $.each(renames, function(i, v) { formData.append('renames[]', v); }); formData.append('suffix', fm.options.backupSuffix); } if (hashes) { $.each(hashes, function(i, v) { formData.append('hashes['+ i +']', v); }); } $.each(self.customData, function(key, val) { formData.append(key, val); }); $.each(self.options.onlyMimes, function(i, mime) { formData.append('mimes[]', mime); }); $.each(files, function(i, file) { var name, relpath; if (file._chunkmerged) { formData.append('chunk', file._chunkmerged); formData.append('upload[]', file._name); formData.append('mtime[]', file._mtime); data.clipdata && formData.append('overwrite', 0); isChunked = true; } else { if (file._chunkfail) { formData.append('upload[]', 'chunkfail'); formData.append('mimes', 'chunkfail'); } else { if (data.clipdata) { if (!file._chunk) { data.overwrite = 0; name = fm.date(fm.nonameDateFormat) + '.png'; } } else { if (file.name) { name = file.name; if (fm.UA.iOS) { if (name.match(/^image\.jpe?g$/i)) { data.overwrite = 0; name = fm.date(fm.nonameDateFormat) + '.jpg'; } else if (name.match(/^capturedvideo\.mov$/i)) { data.overwrite = 0; name = fm.date(fm.nonameDateFormat) + '.mov'; } } relpath = (file.webkitRelativePath || file.relativePath || file._relativePath || '').replace(/[^\/]+$/, ''); name = relpath + name; } } name? formData.append('upload[]', file, name) : formData.append('upload[]', file); } if (file._chunk) { formData.append('chunk', file._chunk); formData.append('cid' , file._cid); formData.append('range', file._range); formData.append('mtime[]', file._mtime); isChunked = true; } else { formData.append('mtime[]', file.lastModified? Math.round(file.lastModified/1000) : 0); } } }); if (isDataType) { $.each(paths, function(i, path) { formData.append('upload_path[]', path); }); } if (data.overwrite === 0) { formData.append('overwrite', 0); } // send int value that which meta key was pressed when dropped as `dropWith` if (dropEvt) { formData.append('dropWith', parseInt( (dropEvt.altKey ? '1' : '0')+ (dropEvt.ctrlKey ? '1' : '0')+ (dropEvt.metaKey ? '1' : '0')+ (dropEvt.shiftKey? '1' : '0'), 2)); } // set extraData on current request if (extraData) { $.each(extraData, function(key, val) { formData.append(key, val); }); } xhr.send(formData); return true; }; if (! isDataType) { if (files.length > 0) { if (! data.clipdata && renames == null) { var mkdirs = [], paths = [], excludes = fm.options.folderUploadExclude[fm.OS] || null; $.each(files, function(i, file) { var relPath = file.webkitRelativePath || file.relativePath || '', idx, rootDir; if (! relPath) { return false; } if (excludes && file.name.match(excludes)) { file._remove = true; relPath = void(0); } else { // add '/' as prefix to make same to folder uploading with DnD, see #2607 relPath = '/' + relPath.replace(/\/[^\/]*$/, '').replace(/^\//, ''); if (relPath && $.inArray(relPath, mkdirs) === -1) { mkdirs.push(relPath); // checking the root directory to supports see #2378 idx = relPath.substr(1).indexOf('/'); if (idx !== -1 && (rootDir = relPath.substr(0, idx + 1)) && $.inArray(rootDir, mkdirs) === -1) { mkdirs.unshift(rootDir); } } } paths.push(relPath); }); renames = []; hashes = {}; if (mkdirs.length) { (function() { var checkDirs = $.map(mkdirs, function(name) { return name.substr(1).indexOf('/') === -1 ? {name: name.substr(1)} : null;}), cancelDirs = []; fm.uploads.checkExists(checkDirs, target, fm, true).done( function(res, res2) { var dfds = [], dfd, bak, hash; if (fm.options.overwriteUploadConfirm && fm.option('uploadOverwrite', target)) { cancelDirs = $.map(checkDirs, function(dir) { return dir._remove? dir.name : null ;} ); checkDirs = $.grep(checkDirs, function(dir) { return !dir._remove? true : false ;} ); } if (cancelDirs.length) { $.each(paths.concat(), function(i, path) { if ($.inArray(path, cancelDirs) === 0) { files[i]._remove = true; paths[i] = void(0); } }); } files = $.grep(files, function(file) { return file._remove? false : true; }); paths = $.grep(paths, function(path) { return path === void 0 ? false : true; }); if (checkDirs.length) { dfd = $.Deferred(); if (res.length) { $.each(res, function(i, existName) { // backup bak = fm.uniqueName(existName + fm.options.backupSuffix , null, ''); $.each(res2, function(h, name) { if (res[0] == name) { hash = h; return false; } }); if (! hash) { hash = fm.fileByName(res[0], target).hash; } fm.lockfiles({files : [hash]}); dfds.push( fm.request({ data : {cmd : 'rename', target : hash, name : bak}, notify : {type : 'rename', cnt : 1} }) .fail(function(error) { dfrd.reject(error); fm.sync(); }) .always(function() { fm.unlockfiles({files : [hash]}); }) ); }); } else { dfds.push(null); } $.when.apply($, dfds).done(function() { // ensure directories fm.request({ data : {cmd : 'mkdir', target : target, dirs : mkdirs}, notify : {type : 'mkdir', cnt : mkdirs.length}, preventFail: true }) .fail(function(error) { error = error || ['errUnknown']; if (error[0] === 'errCmdParams') { multiMax = 1; } else { multiMax = 0; dfrd.reject(error); } }) .done(function(data) { var rm = false; if (!data.hashes) { data.hashes = {}; } paths = $.map(paths.concat(), function(p, i) { if (p === '/') { return target; } else { if (data.hashes[p]) { return data.hashes[p]; } else { rm = true; files[i]._remove = true; return null; } } }); if (rm) { files = $.grep(files, function(file) { return file._remove? false : true; }); } }) .always(function(data) { if (multiMax) { isDataType = true; if (! send(files, paths)) { dfrd.reject(); } } }); }); } else { dfrd.reject(); } } ); })(); } else { fm.uploads.checkExists(files, target, fm).done( function(res, res2){ if (fm.options.overwriteUploadConfirm && fm.option('uploadOverwrite', target)) { hashes = res2; if (res === null) { data.overwrite = 0; } else { renames = res; } files = $.grep(files, function(file){return !file._remove? true : false ;}); } cnt = files.length; if (cnt > 0) { if (! send(files)) { dfrd.reject(); } } else { dfrd.reject(); } } ); } } else { if (! send(files)) { dfrd.reject(); } } } else { dfrd.reject(); } } else { if (dataChecked) { send(files[0], files[1]); } else { files.done(function(result) { // result: [files, paths, renames, hashes, mkdirs] renames = []; cnt = result[0].length; if (cnt) { if (result[4] && result[4].length) { // ensure directories fm.request({ data : {cmd : 'mkdir', target : target, dirs : result[4]}, notify : {type : 'mkdir', cnt : result[4].length}, preventFail: true }) .fail(function(error) { error = error || ['errUnknown']; if (error[0] === 'errCmdParams') { multiMax = 1; } else { multiMax = 0; dfrd.reject(error); } }) .done(function(data) { var rm = false; if (!data.hashes) { data.hashes = {}; } result[1] = $.map(result[1], function(p, i) { result[0][i]._relativePath = p.replace(/^\//, ''); p = p.replace(/\/[^\/]*$/, ''); if (p === '') { return target; } else { if (data.hashes[p]) { return data.hashes[p]; } else { rm = true; result[0][i]._remove = true; return null; } } }); if (rm) { result[0] = $.grep(result[0], function(file) { return file._remove? false : true; }); } }) .always(function(data) { if (multiMax) { renames = result[2]; hashes = result[3]; send(result[0], result[1]); } }); return; } else { result[1] = $.map(result[1], function() { return target; }); } renames = result[2]; hashes = result[3]; send(result[0], result[1]); } else { dfrd.reject(['errUploadNoFiles']); } }).fail(function(){ dfrd.reject(); }); } } return dfrd; }, // upload transport using iframe iframe : function(data, fm) { var self = fm ? fm : this, input = data.input? data.input : false, files = !input ? self.uploads.checkFile(data, self) : false, dfrd = $.Deferred() .fail(function(error) { error && self.error(error); }), name = 'iframe-'+fm.namespace+(++self.iframeCnt), form = $('
                '), msie = this.UA.IE, // clear timeouts, close notification dialog, remove form/iframe onload = function() { abortto && clearTimeout(abortto); notifyto && clearTimeout(notifyto); notify && self.notify({type : 'upload', cnt : -cnt}); setTimeout(function() { msie && $('').appendTo(form); form.remove(); iframe.remove(); }, 100); }, iframe = $('') .on('load', function() { iframe.off('load') .on('load', function() { onload(); // data will be processed in callback response or window onmessage dfrd.resolve(); }); // notify dialog notifyto = setTimeout(function() { notify = true; self.notify({type : 'upload', cnt : cnt}); }, self.options.notifyDelay); // emulate abort on timeout if (self.options.iframeTimeout > 0) { abortto = setTimeout(function() { onload(); dfrd.reject(['errConnect', 'errTimeout']); }, self.options.iframeTimeout); } form.submit(); }), target = (data.target || self.cwd().hash), names = [], dfds = [], renames = [], hashes = {}, cnt, notify, notifyto, abortto; if (files && files.length) { $.each(files, function(i, val) { form.append(''); }); cnt = 1; } else if (input && $(input).is(':file') && $(input).val()) { if (fm.options.overwriteUploadConfirm && fm.option('uploadOverwrite', target)) { names = input.files? input.files : [{ name: $(input).val().replace(/^(?:.+[\\\/])?([^\\\/]+)$/, '$1') }]; //names = $.map(names, function(file){return file.name? { name: file.name } : null ;}); dfds.push(self.uploads.checkExists(names, target, self).done( function(res, res2){ hashes = res2; if (res === null) { data.overwrite = 0; } else{ renames = res; cnt = $.grep(names, function(file){return !file._remove? true : false ;}).length; if (cnt != names.length) { cnt = 0; } } } )); } cnt = input.files ? input.files.length : 1; form.append(input); } else { return dfrd.reject(); } $.when.apply($, dfds).done(function() { if (cnt < 1) { return dfrd.reject(); } form.append('') .append('') .append('') .append($(input).attr('name', 'upload[]')); if (renames.length > 0) { $.each(renames, function(i, rename) { form.append(''); }); form.append(''); } if (hashes) { $.each(renames, function(i, v) { form.append(''); }); } if (data.overwrite === 0) { form.append(''); } $.each(self.options.onlyMimes||[], function(i, mime) { form.append(''); }); $.each(self.customData, function(key, val) { form.append(''); }); form.appendTo('body'); iframe.appendTo('body'); }); return dfrd; } }, /** * Bind callback to event(s) The callback is executed at most once per event. * To bind to multiply events at once, separate events names by space * * @param String event name * @param Function callback * @param Boolan priority first * @return elFinder */ one : function(ev, callback, priorityFirst) { var self = this, event = ev.toLowerCase(), h = function(e, f) { if (!self.toUnbindEvents[event]) { self.toUnbindEvents[event] = []; } self.toUnbindEvents[event].push({ type: event, callback: h }); return (callback.done? callback.done : callback).apply(this, arguments); }; if (callback.done) { h = {done: h}; } return this.bind(event, h, priorityFirst); }, /** * Set/get data into/from localStorage * * @param String key * @param String|void value * @return String|null */ localStorage : function(key, val) { var self = this, s = window.localStorage, oldkey = 'elfinder-'+(key || '')+this.id, // old key of elFinder < 2.1.6 prefix = window.location.pathname+'-elfinder-', suffix = this.id, clrs = [], retval, oldval, t, precnt, sufcnt; // reset this node data if (typeof(key) === 'undefined') { precnt = prefix.length; sufcnt = suffix.length * -1; $.each(s, function(key) { if (key.substr(0, precnt) === prefix && key.substr(sufcnt) === suffix) { clrs.push(key); } }); $.each(clrs, function(i, key) { s.removeItem(key); }); return true; } // new key of elFinder >= 2.1.6 key = prefix+key+suffix; if (val === null) { return s.removeItem(key); } if (val === void(0) && !(retval = s.getItem(key)) && (oldval = s.getItem(oldkey))) { val = oldval; s.removeItem(oldkey); } if (val !== void(0)) { t = typeof val; if (t !== 'string' && t !== 'number') { val = JSON.stringify(val); } try { s.setItem(key, val); } catch (e) { try { s.clear(); s.setItem(key, val); } catch (e) { self.debug('error', e.toString()); } } retval = s.getItem(key); } if (retval && (retval.substr(0,1) === '{' || retval.substr(0,1) === '[')) { try { return JSON.parse(retval); } catch(e) {} } return retval; }, /** * Set/get data into/from sessionStorage * * @param String key * @param String|void value * @return String|null */ sessionStorage : function(key, val) { var self = this, s, retval, t; try { s = window.sessionStorage; } catch(e) {} if (!s) { return; } if (val === null) { return s.removeItem(key); } if (val !== void(0)) { t = typeof val; if (t !== 'string' && t !== 'number') { val = JSON.stringify(val); } try { s.setItem(key, val); } catch (e) { try { s.clear(); s.setItem(key, val); } catch (e) { self.debug('error', e.toString()); } } } retval = s.getItem(key); if (retval && (retval.substr(0,1) === '{' || retval.substr(0,1) === '[')) { try { return JSON.parse(retval); } catch(e) {} } return retval; }, /** * Get/set cookie * * @param String cookie name * @param String|void cookie value * @return String|null */ cookie : function(name, value) { var d, o, c, i, retval, t; name = 'elfinder-'+name+this.id; if (value === void(0)) { if (this.cookieEnabled && document.cookie && document.cookie != '') { c = document.cookie.split(';'); name += '='; for (i=0; i'), /** * Replace not html-safe symbols to html entities * * @param String text to escape * @return String */ escape : function(name) { return this._node.text(name).html().replace(/"/g, '"').replace(/'/g, '''); }, /** * Cleanup ajax data. * For old api convert data into new api format * * @param String command name * @param Object data from backend * @return Object */ normalize : function(data) { var self = this, fileFilter = (function() { var func, filter; if (filter = self.options.fileFilter) { if (typeof filter === 'function') { func = function(file) { return filter.call(self, file); }; } else if (filter instanceof RegExp) { func = function(file) { return filter.test(file.name); }; } } return func? func : null; })(), chkCmdMap = function(opts) { // Disable command to replace with other command var disabled; if (opts.uiCmdMap) { if ($.isPlainObject(opts.uiCmdMap) && Object.keys(opts.uiCmdMap).length) { if (!opts.disabledFlip) { opts.disabledFlip = {}; } disabled = opts.disabledFlip; $.each(opts.uiCmdMap, function(f, t) { if (t === 'hidden' && !disabled[f]) { opts.disabled.push(f); opts.disabledFlip[f] = true; } }); } else { delete opts.uiCmdMap; } } }, normalizeOptions = function(opts) { var getType = function(v) { var type = typeof v; if (type === 'object' && Array.isArray(v)) { type = 'array'; } return type; }; $.each(self.optionProperties, function(k, empty) { if (empty !== void(0)) { if (opts[k] && getType(opts[k]) !== getType(empty)) { opts[k] = empty; } } }); if (opts.disabled) { opts.disabledFlip = self.arrayFlip(opts.disabled, true); $.each(self.options.disabledCmdsRels, function(com, rels) { var m, flg; if (opts.disabledFlip[com]) { flg = true; } else if (m = com.match(/^([^&]+)&([^=]+)=(.*)$/)) { if (opts.disabledFlip[m[1]] && opts[m[2]] == m[3]) { flg = true; } } if (flg) { $.each(rels, function(i, rel) { if (!opts.disabledFlip[rel]) { opts.disabledFlip[rel] = true; opts.disabled.push(rel); } }); } }); } else { opts.disabledFlip = {}; } return opts; }, filter = function(file, asMap, type) { var res = asMap? file : true, ign = asMap? null : false, vid, targetOptions, isRoot, rootNames; if (file && file.hash && file.name && file.mime) { if (file.mime === 'application/x-empty') { file.mime = 'text/plain'; } isRoot = self.isRoot(file); if (isRoot && ! file.volumeid) { self.debug('warning', 'The volume root statuses requires `volumeid` property.'); } if (isRoot || file.mime === 'directory') { // Prevention of circular reference if (file.phash) { if (file.phash === file.hash) { error = error.concat(['Parent folder of "$1" is itself.', file.name]); return ign; } if (isRoot && file.volumeid && file.phash.indexOf(file.volumeid) === 0) { error = error.concat(['Parent folder of "$1" is inner itself.', file.name]); return ign; } } // set options, tmbUrls for each volume if (file.volumeid) { vid = file.volumeid; if (isRoot) { // make or update of leaf roots cache if (file.phash) { if (! self.leafRoots[file.phash]) { self.leafRoots[file.phash] = [ file.hash ]; } else { if ($.inArray(file.hash, self.leafRoots[file.phash]) === -1) { self.leafRoots[file.phash].push(file.hash); } } } self.hasVolOptions = true; if (! self.volOptions[vid]) { self.volOptions[vid] = { // set dispInlineRegex dispInlineRegex: self.options.dispInlineRegex }; } targetOptions = self.volOptions[vid]; if (file.options) { // >= v.2.1.14 has file.options Object.assign(targetOptions, file.options); } // for compat <= v2.1.13 if (file.disabled) { targetOptions.disabled = file.disabled; targetOptions.disabledFlip = self.arrayFlip(file.disabled, true); } if (file.tmbUrl) { targetOptions.tmbUrl = file.tmbUrl; } // '/' required at the end of url if (targetOptions.url && targetOptions.url.substr(-1) !== '/') { targetOptions.url += '/'; } // check uiCmdMap chkCmdMap(targetOptions); // check trash bin hash if (targetOptions.trashHash) { if (self.trashes[targetOptions.trashHash] === false) { delete targetOptions.trashHash; } else { self.trashes[targetOptions.trashHash] = file.hash; } } // set immediate properties $.each(self.optionProperties, function(k) { if (targetOptions[k]) { file[k] = targetOptions[k]; } }); // regist fm.roots if (type !== 'cwd') { self.roots[vid] = file.hash; } // regist fm.volumeExpires if (file.expires) { self.volumeExpires[vid] = file.expires; } } if (prevId !== vid) { prevId = vid; i18nFolderName = self.option('i18nFolderName', vid); } } // volume root i18n name if (isRoot && ! file.i18) { name = 'volume_' + file.name, i18 = self.i18n(false, name); if (name !== i18) { file.i18 = i18; } } // i18nFolderName if (i18nFolderName && ! file.i18) { name = 'folder_' + file.name, i18 = self.i18n(false, name); if (name !== i18) { file.i18 = i18; } } if (isRoot) { if (rootNames = self.storage('rootNames')) { if (rootNames[file.hash]) { file._name = file.name; file._i18 = file.i18; file.name = rootNames[file.hash] = rootNames[file.hash]; delete file.i18; } self.storage('rootNames', rootNames); } } // lock trash bins holder if (self.trashes[file.hash]) { file.locked = true; } } else { if (fileFilter) { try { if (! fileFilter(file)) { return ign; } } catch(e) { self.debug(e); } } if (file.size == 0) { file.mime = self.getMimetype(file.name, file.mime); } } if (file.options) { self.optionsByHashes[file.hash] = normalizeOptions(file.options); } delete file.options; return res; } return ign; }, getDescendants = function(hashes) { var res = []; $.each(self.files(), function(h, f) { $.each(self.parents(h), function(i, ph) { if ($.inArray(ph, hashes) !== -1 && $.inArray(h, hashes) === -1) { res.push(h); return false; } }); }); return res; }, applyLeafRootStats = function(dataArr, type) { $.each(dataArr, function(i, f) { var pfile, done; if (self.leafRoots[f.hash]) { self.applyLeafRootStats(f); } // update leaf root parent stat if (type !== 'change' && f.phash && self.isRoot(f) && (pfile = self.file(f.phash))) { self.applyLeafRootStats(pfile); // add to data.changed if (!data.changed) { data.changed = [pfile]; } else { $.each(data.changed, function(i, f) { if (f.hash === pfile.hash) { data.changed[i] = pfile; done = true; return false; } }); if (!done) { data.changed.push(pfile); } } } }); }, error = [], name, i18, i18nFolderName, prevId, cData; // set cunstom data if (data.customData && (!self.prevCustomData || (JSON.stringify(data.customData) !== JSON.stringify(self.prevCustomData)))) { self.prevCustomData = data.customData; try { cData = JSON.parse(data.customData); if ($.isPlainObject(cData)) { self.prevCustomData = cData; $.each(Object.keys(cData), function(i, key) { if (cData[key] === null) { delete cData[key]; delete self.optsCustomData[key]; } }); self.customData = Object.assign({}, self.optsCustomData, cData); } } catch(e) {} } if (data.options) { normalizeOptions(data.options); } if (data.cwd) { if (data.cwd.volumeid && data.options && Object.keys(data.options).length && self.isRoot(data.cwd)) { self.hasVolOptions = true; self.volOptions[data.cwd.volumeid] = data.options; } data.cwd = filter(data.cwd, true, 'cwd'); } if (data.files) { data.files = $.grep(data.files, filter); } if (data.tree) { data.tree = $.grep(data.tree, filter); } if (data.added) { data.added = $.grep(data.added, filter); } if (data.changed) { data.changed = $.grep(data.changed, filter); } if (data.removed && data.removed.length && self.searchStatus.state === 2) { data.removed = data.removed.concat(getDescendants(data.removed)); } if (data.api) { data.init = true; } if (Object.keys(self.leafRoots).length) { data.files && applyLeafRootStats(data.files); data.tree && applyLeafRootStats(data.tree); data.added && applyLeafRootStats(data.added); data.changed && applyLeafRootStats(data.changed, 'change'); } // merge options that apply only to cwd if (data.cwd && data.cwd.options && data.options) { Object.assign(data.options, normalizeOptions(data.cwd.options)); } // '/' required at the end of url if (data.options && data.options.url && data.options.url.substr(-1) !== '/') { data.options.url += '/'; } // check error if (error.length) { data.norError = ['errResponse'].concat(error); } return data; }, /** * Update sort options * * @param {String} sort type * @param {String} sort order * @param {Boolean} show folder first */ setSort : function(type, order, stickFolders, alsoTreeview) { this.storage('sortType', (this.sortType = this.sortRules[type] ? type : 'name')); this.storage('sortOrder', (this.sortOrder = /asc|desc/.test(order) ? order : 'asc')); this.storage('sortStickFolders', (this.sortStickFolders = !!stickFolders) ? 1 : ''); this.storage('sortAlsoTreeview', (this.sortAlsoTreeview = !!alsoTreeview) ? 1 : ''); this.trigger('sortchange'); }, _sortRules : { name : function(file1, file2) { return elFinder.prototype.naturalCompare(file1.i18 || file1.name, file2.i18 || file2.name); }, size : function(file1, file2) { var size1 = parseInt(file1.size) || 0, size2 = parseInt(file2.size) || 0; return size1 === size2 ? 0 : size1 > size2 ? 1 : -1; }, kind : function(file1, file2) { return elFinder.prototype.naturalCompare(file1.mime, file2.mime); }, date : function(file1, file2) { var date1 = file1.ts || file1.date || 0, date2 = file2.ts || file2.date || 0; return date1 === date2 ? 0 : date1 > date2 ? 1 : -1; }, perm : function(file1, file2) { var val = function(file) { return (file.write? 2 : 0) + (file.read? 1 : 0); }, v1 = val(file1), v2 = val(file2); return v1 === v2 ? 0 : v1 > v2 ? 1 : -1; }, mode : function(file1, file2) { var v1 = file1.mode || (file1.perm || ''), v2 = file2.mode || (file2.perm || ''); return elFinder.prototype.naturalCompare(v1, v2); }, owner : function(file1, file2) { var v1 = file1.owner || '', v2 = file2.owner || ''; return elFinder.prototype.naturalCompare(v1, v2); }, group : function(file1, file2) { var v1 = file1.group || '', v2 = file2.group || ''; return elFinder.prototype.naturalCompare(v1, v2); } }, /** * Valid sort rule names * * @type Object */ sorters : {}, /** * Compare strings for natural sort * * @param String * @param String * @return Number */ naturalCompare : function(a, b) { var self = elFinder.prototype.naturalCompare; if (typeof self.loc == 'undefined') { self.loc = (navigator.userLanguage || navigator.browserLanguage || navigator.language || 'en-US'); } if (typeof self.sort == 'undefined') { if ('11'.localeCompare('2', self.loc, {numeric: true}) > 0) { // Native support if (window.Intl && window.Intl.Collator) { self.sort = new Intl.Collator(self.loc, {numeric: true}).compare; } else { self.sort = function(a, b) { return a.localeCompare(b, self.loc, {numeric: true}); }; } } else { /* * Edited for elFinder (emulates localeCompare() by numeric) by Naoki Sawada aka nao-pon */ /* * Huddle/javascript-natural-sort (https://github.com/Huddle/javascript-natural-sort) */ /* * Natural Sort algorithm for Javascript - Version 0.7 - Released under MIT license * Author: Jim Palmer (based on chunking idea from Dave Koelle) * http://opensource.org/licenses/mit-license.php */ self.sort = function(a, b) { var re = /(^-?[0-9]+(\.?[0-9]*)[df]?e?[0-9]?$|^0x[0-9a-f]+$|[0-9]+)/gi, sre = /(^[ ]*|[ ]*$)/g, dre = /(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/, hre = /^0x[0-9a-f]+$/i, ore = /^0/, syre = /^[\x01\x21-\x2f\x3a-\x40\x5b-\x60\x7b-\x7e]/, // symbol first - (Naoki Sawada) i = function(s) { return self.sort.insensitive && (''+s).toLowerCase() || ''+s; }, // convert all to strings strip whitespace // first character is "_", it's smallest - (Naoki Sawada) x = i(a).replace(sre, '').replace(/^_/, "\x01") || '', y = i(b).replace(sre, '').replace(/^_/, "\x01") || '', // chunk/tokenize xN = x.replace(re, '\0$1\0').replace(/\0$/,'').replace(/^\0/,'').split('\0'), yN = y.replace(re, '\0$1\0').replace(/\0$/,'').replace(/^\0/,'').split('\0'), // numeric, hex or date detection xD = parseInt(x.match(hre)) || (xN.length != 1 && x.match(dre) && Date.parse(x)), yD = parseInt(y.match(hre)) || xD && y.match(dre) && Date.parse(y) || null, oFxNcL, oFyNcL, locRes = 0; // first try and sort Hex codes or Dates if (yD) { if ( xD < yD ) return -1; else if ( xD > yD ) return 1; } // natural sorting through split numeric strings and default strings for(var cLoc=0, numS=Math.max(xN.length, yN.length); cLoc < numS; cLoc++) { // find floats not starting with '0', string or 0 if not defined (Clint Priest) oFxNcL = !(xN[cLoc] || '').match(ore) && parseFloat(xN[cLoc]) || xN[cLoc] || 0; oFyNcL = !(yN[cLoc] || '').match(ore) && parseFloat(yN[cLoc]) || yN[cLoc] || 0; // handle numeric vs string comparison - number < string - (Kyle Adams) // but symbol first < number - (Naoki Sawada) if (isNaN(oFxNcL) !== isNaN(oFyNcL)) { if (isNaN(oFxNcL) && (typeof oFxNcL !== 'string' || ! oFxNcL.match(syre))) { return 1; } else if (typeof oFyNcL !== 'string' || ! oFyNcL.match(syre)) { return -1; } } // use decimal number comparison if either value is string zero if (parseInt(oFxNcL, 10) === 0) oFxNcL = 0; if (parseInt(oFyNcL, 10) === 0) oFyNcL = 0; // rely on string comparison if different types - i.e. '02' < 2 != '02' < '2' if (typeof oFxNcL !== typeof oFyNcL) { oFxNcL += ''; oFyNcL += ''; } // use locale sensitive sort for strings when case insensitive // note: localeCompare interleaves uppercase with lowercase (e.g. A,a,B,b) if (self.sort.insensitive && typeof oFxNcL === 'string' && typeof oFyNcL === 'string') { locRes = oFxNcL.localeCompare(oFyNcL, self.loc); if (locRes !== 0) return locRes; } if (oFxNcL < oFyNcL) return -1; if (oFxNcL > oFyNcL) return 1; } return 0; }; self.sort.insensitive = true; } } return self.sort(a, b); }, /** * Compare files based on elFinder.sort * * @param Object file * @param Object file * @return Number */ compare : function(file1, file2) { var self = this, type = self.sortType, asc = self.sortOrder == 'asc', stick = self.sortStickFolders, rules = self.sortRules, sort = rules[type], d1 = file1.mime == 'directory', d2 = file2.mime == 'directory', res; if (stick) { if (d1 && !d2) { return -1; } else if (!d1 && d2) { return 1; } } res = asc ? sort(file1, file2) : sort(file2, file1); return type !== 'name' && res === 0 ? res = asc ? rules.name(file1, file2) : rules.name(file2, file1) : res; }, /** * Sort files based on config * * @param Array files * @return Array */ sortFiles : function(files) { return files.sort(this.compare); }, /** * Open notification dialog * and append/update message for required notification type. * * @param Object options * @example * this.notify({ * type : 'copy', * msg : 'Copy files', // not required for known types @see this.notifyType * cnt : 3, * hideCnt : false, // true for not show count * progress : 10, // progress bar percents (use cnt : 0 to update progress bar) * cancel : callback // callback function for cancel button * }) * @return elFinder */ notify : function(opts) { var self = this, type = opts.type, id = opts.id? 'elfinder-notify-'+opts.id : '', msg = this.i18n((typeof opts.msg !== 'undefined')? opts.msg : (this.messages['ntf'+type] ? 'ntf'+type : 'ntfsmth')), hiddens = this.arrayFlip(this.options.notifyDialog.hiddens || []), ndialog = this.ui.notify, dialog = ndialog.closest('.ui-dialog'), notify = ndialog.children('.elfinder-notify-'+type+(id? ('.'+id) : '')), button = notify.children('div.elfinder-notify-cancel').children('button'), ntpl = '
                {msg}
                ', delta = opts.cnt + 0, size = (typeof opts.size != 'undefined')? parseInt(opts.size) : null, progress = (typeof opts.progress != 'undefined' && opts.progress >= 0) ? opts.progress : null, fakeint = opts.fakeinterval || 200, cancel = opts.cancel, clhover = 'ui-state-hover', close = function() { var prog = notify.find('.elfinder-notify-progress'), rm = function() { notify.remove(); if (!ndialog.children(dialog.data('minimized')? void(0) : ':visible').length) { if (dialog.data('minimized')) { dialog.data('minimized').hide(); } else { ndialog.elfinderdialog('close'); } } setProgressbar(); }; notify._esc && $(document).off('keydown', notify._esc); if (notify.data('cur') < 100) { prog.animate({ width : '100%' }, 50, function() { requestAnimationFrame(function() { rm(); }); }); } else { rm(); } }, fakeUp = function(interval) { var cur; if (notify.length) { cur = notify.data('cur') + 1; if (cur <= 98) { notify.find('.elfinder-notify-progress').width(cur + '%'); notify.data('cur', cur); setProgressbar(); setTimeout(function() { interval *= 1.05; fakeUp(interval); }, interval); } } }, setProgressbar = function() { var cnt = 0, val = 0, ntfs = ndialog.children('.elfinder-notify'), w; if (ntfs.length) { ntfs.each(function() { cnt++; val += Math.min($(this).data('cur'), 100); }); w = cnt? Math.floor(val / (cnt * 100) * 100) + '%' : 0; self.ui.progressbar.width(w); if (dialog.data('minimized')) { dialog.data('minimized').title(w); dialog.data('minimized').dialog().children('.ui-dialog-titlebar').children('.elfinder-ui-progressbar').width(w); } } else { self.ui.progressbar.width(0); dialog.data('minimized') && dialog.data('minimized').hide(); } }, cnt, total, prc; if (!type) { return this; } if (!notify.length) { notify = $(ntpl.replace(/\{type\}/g, type).replace(/\{msg\}/g, msg)); if (hiddens[type]) { notify.hide(); } else { ndialog.on('minimize', function(e) { dialog.data('minimized') && setProgressbar(); }); } notify.appendTo(ndialog).data('cnt', 0); if (progress != null) { notify.data({progress : 0, total : 0, cur : 0}); } else { notify.data({cur : 0}); fakeUp(fakeint); } if (cancel) { button = $('') .on('mouseenter mouseleave', function(e) { $(this).toggleClass(clhover, e.type === 'mouseenter'); }); notify.children('div.elfinder-notify-cancel').append(button); } ndialog.trigger('resize'); } else if (typeof opts.msg !== 'undefined') { notify.children('span.elfinder-notify-msg').html(msg); } cnt = delta + parseInt(notify.data('cnt')); if (cnt > 0) { if (cancel && button.length) { if ($.isFunction(cancel) || (typeof cancel === 'object' && cancel.promise)) { notify._esc = function(e) { if (e.type == 'keydown' && e.keyCode != $.ui.keyCode.ESCAPE) { return; } e.preventDefault(); e.stopPropagation(); close(); if (cancel.promise) { cancel.reject(0); // 0 is canceling flag } else { cancel(e); } }; button.on('click', function(e) { notify._esc(e); }); $(document).on('keydown.' + this.namespace, notify._esc); } } !opts.hideCnt && notify.children('.elfinder-notify-cnt').text('('+cnt+')'); if (delta > 0 && ndialog.is(':hidden') && !hiddens[type]) { if (dialog.data('minimized')) { dialog.data('minimized').show(); } else { ndialog.elfinderdialog('open', this).height('auto'); } } notify.data('cnt', cnt); if ((progress != null) && (total = notify.data('total')) >= 0 && (prc = notify.data('progress')) >= 0) { total += size != null? size : delta; prc += progress; (size == null && delta < 0) && (prc += delta * 100); notify.data({progress : prc, total : total}); if (size != null) { prc *= 100; total = Math.max(1, total); } progress = Math.min(parseInt(prc/total), 100); notify.find('.elfinder-notify-progress') .animate({ width : (progress < 100 ? progress : 100)+'%' }, 20, function() { notify.data('cur', progress); setProgressbar(); }); } } else { close(); } return this; }, /** * Open confirmation dialog * * @param Object options * @example * this.confirm({ * cssClass : 'elfinder-confirm-mydialog', * title : 'Remove files', * text : 'Here is question text', * accept : { // accept callback - required * label : 'Continue', * callback : function(applyToAll) { fm.log('Ok') } * }, * cancel : { // cancel callback - required * label : 'Cancel', * callback : function() { fm.log('Cancel')} * }, * reject : { // reject callback - optionally * label : 'No', * callback : function(applyToAll) { fm.log('No')} * }, * buttons : [ // additional buttons callback - optionally * { * label : 'Btn1', * callback : function(applyToAll) { fm.log('Btn1')} * } * ], * all : true // display checkbox "Apply to all" * }) * @return elFinder */ confirm : function(opts) { var self = this, complete = false, options = { cssClass : 'elfinder-dialog-confirm', modal : true, resizable : false, title : this.i18n(opts.title || 'confirmReq'), buttons : {}, close : function() { !complete && opts.cancel.callback(); $(this).elfinderdialog('destroy'); } }, apply = this.i18n('apllyAll'), label, checkbox, btnNum; if (opts.cssClass) { options.cssClass += ' ' + opts.cssClass; } options.buttons[this.i18n(opts.accept.label)] = function() { opts.accept.callback(!!(checkbox && checkbox.prop('checked'))); complete = true; $(this).elfinderdialog('close'); }; options.buttons[this.i18n(opts.accept.label)]._cssClass = 'elfinder-confirm-accept'; if (opts.reject) { options.buttons[this.i18n(opts.reject.label)] = function() { opts.reject.callback(!!(checkbox && checkbox.prop('checked'))); complete = true; $(this).elfinderdialog('close'); }; options.buttons[this.i18n(opts.reject.label)]._cssClass = 'elfinder-confirm-reject'; } if (opts.buttons && opts.buttons.length > 0) { btnNum = 1; $.each(opts.buttons, function(i, v){ options.buttons[self.i18n(v.label)] = function() { v.callback(!!(checkbox && checkbox.prop('checked'))); complete = true; $(this).elfinderdialog('close'); }; options.buttons[self.i18n(v.label)]._cssClass = 'elfinder-confirm-extbtn' + (btnNum++); if (v.cssClass) { options.buttons[self.i18n(v.label)]._cssClass += ' ' + v.cssClass; } }); } options.buttons[this.i18n(opts.cancel.label)] = function() { $(this).elfinderdialog('close'); }; options.buttons[this.i18n(opts.cancel.label)]._cssClass = 'elfinder-confirm-cancel'; if (opts.all) { options.create = function() { var base = $('
                '); checkbox = $(''); $(this).next().find('.ui-dialog-buttonset') .prepend(base.append($('').prepend(checkbox))); }; } if (opts.optionsCallback && $.isFunction(opts.optionsCallback)) { opts.optionsCallback(options); } return this.dialog('' + this.i18n(opts.text), options); }, /** * Create unique file name in required dir * * @param String file name * @param String parent dir hash * @param String glue * @return String */ uniqueName : function(prefix, phash, glue) { var i = 0, ext = '', p, name; prefix = this.i18n(false, prefix); phash = phash || this.cwd().hash; glue = (typeof glue === 'undefined')? ' ' : glue; if (p = prefix.match(/^(.+)(\.[^.]+)$/)) { ext = p[2]; prefix = p[1]; } name = prefix+ext; if (!this.fileByName(name, phash)) { return name; } while (i < 10000) { name = prefix + glue + (++i) + ext; if (!this.fileByName(name, phash)) { return name; } } return prefix + Math.random() + ext; }, /** * Return message translated onto current language * Allowed accept HTML element that was wrapped in jQuery object * To be careful to XSS vulnerability of HTML element Ex. You should use `fm.escape(file.name)` * * @param String|Array message[s]|Object jQuery * @return String **/ i18n : function() { var self = this, messages = this.messages, input = [], ignore = [], message = function(m) { var file; if (m.indexOf('#') === 0) { if ((file = self.file(m.substr(1)))) { return file.name; } } return m; }, i, j, m, escFunc, start = 0, isErr; if (arguments.length && arguments[0] === false) { escFunc = function(m){ return m; }; start = 1; } for (i = start; i< arguments.length; i++) { m = arguments[i]; if (Array.isArray(m)) { for (j = 0; j < m.length; j++) { if (m[j] instanceof jQuery) { // jQuery object is HTML element input.push(m[j]); } else if (typeof m[j] !== 'undefined'){ input.push(message('' + m[j])); } } } else if (m instanceof jQuery) { // jQuery object is HTML element input.push(m[j]); } else if (typeof m !== 'undefined'){ input.push(message('' + m)); } } for (i = 0; i < input.length; i++) { // dont translate placeholders if ($.inArray(i, ignore) !== -1) { continue; } m = input[i]; if (typeof m == 'string') { isErr = !!(messages[m] && m.match(/^err/)); // translate message m = messages[m] || (escFunc? escFunc(m) : self.escape(m)); // replace placeholders in message m = m.replace(/\$(\d+)/g, function(match, placeholder) { var res; placeholder = i + parseInt(placeholder); if (placeholder > 0 && input[placeholder]) { ignore.push(placeholder); } res = escFunc? escFunc(input[placeholder]) : self.escape(input[placeholder]); if (isErr) { res = '' + res + ''; } return res; }); } else { // get HTML from jQuery object m = m.get(0).outerHTML; } input[i] = m; } return $.grep(input, function(m, i) { return $.inArray(i, ignore) === -1 ? true : false; }).join('
                '); }, /** * Get icon style from file.icon * * @param Object elFinder file object * @return String|Object */ getIconStyle : function(file, asObject) { var self = this, template = { 'background' : 'url(\'{url}\') 0 0 no-repeat', 'background-size' : 'contain' }, style = '', cssObj = {}, i = 0; if (file.icon) { style = 'style="'; $.each(template, function(k, v) { if (i++ === 0) { v = v.replace('{url}', self.escape(file.icon)); } if (asObject) { cssObj[k] = v; } else { style += k+':'+v+';'; } }); style += '"'; } return asObject? cssObj : style; }, /** * Convert mimetype into css classes * * @param String file mimetype * @return String */ mime2class : function(mimeType) { var prefix = 'elfinder-cwd-icon-', mime = mimeType.toLowerCase(), isText = this.textMimes[mime]; mime = mime.split('/'); if (isText) { mime[0] += ' ' + prefix + 'text'; } else if (mime[1] && mime[1].match(/\+xml$/)) { mime[0] += ' ' + prefix + 'xml'; } return prefix + mime[0] + (mime[1] ? ' ' + prefix + mime[1].replace(/(\.|\+)/g, '-') : ''); }, /** * Return localized kind of file * * @param Object|String file or file mimetype * @return String */ mime2kind : function(f) { var isObj = typeof(f) == 'object' ? true : false, mime = isObj ? f.mime : f, kind; if (isObj && f.alias && mime != 'symlink-broken') { kind = 'Alias'; } else if (this.kinds[mime]) { if (isObj && mime === 'directory' && (! f.phash || f.isroot)) { kind = 'Root'; } else { kind = this.kinds[mime]; } } else if (this.mimeTypes[mime]) { kind = this.mimeTypes[mime].toUpperCase(); if (!this.messages['kind'+kind]) { kind = null; } } if (! kind) { if (mime.indexOf('text') === 0) { kind = 'Text'; } else if (mime.indexOf('image') === 0) { kind = 'Image'; } else if (mime.indexOf('audio') === 0) { kind = 'Audio'; } else if (mime.indexOf('video') === 0) { kind = 'Video'; } else if (mime.indexOf('application') === 0) { kind = 'App'; } else { kind = mime; } } return this.messages['kind'+kind] ? this.i18n('kind'+kind) : mime; }, /** * Return boolean Is mime-type text file * * @param String mime-type * @return Boolean */ mimeIsText : function(mime) { return (this.textMimes[mime.toLowerCase()] || (mime.indexOf('text/') === 0 && mime.substr(5, 3) !== 'rtf') || mime.match(/^application\/.+\+xml$/))? true : false; }, /** * Returns a date string formatted according to the given format string * * @param String format string * @param Object Date object * @return String */ date : function(format, date) { var self = this, output, d, dw, m, y, h, g, i, s; if (! date) { date = new Date(); } h = date[self.getHours](); g = h > 12 ? h - 12 : h; i = date[self.getMinutes](); s = date[self.getSeconds](); d = date[self.getDate](); dw = date[self.getDay](); m = date[self.getMonth]() + 1; y = date[self.getFullYear](); output = format.replace(/[a-z]/gi, function(val) { switch (val) { case 'd': return d > 9 ? d : '0'+d; case 'j': return d; case 'D': return self.i18n(self.i18.daysShort[dw]); case 'l': return self.i18n(self.i18.days[dw]); case 'm': return m > 9 ? m : '0'+m; case 'n': return m; case 'M': return self.i18n(self.i18.monthsShort[m-1]); case 'F': return self.i18n(self.i18.months[m-1]); case 'Y': return y; case 'y': return (''+y).substr(2); case 'H': return h > 9 ? h : '0'+h; case 'G': return h; case 'g': return g; case 'h': return g > 9 ? g : '0'+g; case 'a': return h >= 12 ? 'pm' : 'am'; case 'A': return h >= 12 ? 'PM' : 'AM'; case 'i': return i > 9 ? i : '0'+i; case 's': return s > 9 ? s : '0'+s; } return val; }); return output; }, /** * Return localized date * * @param Object file object * @return String */ formatDate : function(file, t) { var self = this, ts = t || file.ts, i18 = self.i18, date, format, output, d, dw, m, y, h, g, i, s; if (self.options.clientFormatDate && ts > 0) { date = new Date(ts*1000); format = ts >= this.yesterday ? this.fancyFormat : this.dateFormat; output = self.date(format, date); return ts >= this.yesterday ? output.replace('$1', this.i18n(ts >= this.today ? 'Today' : 'Yesterday')) : output; } else if (file.date) { return file.date.replace(/([a-z]+)\s/i, function(a1, a2) { return self.i18n(a2)+' '; }); } return self.i18n('dateUnknown'); }, /** * Return localized number string * * @param Number * @return String */ toLocaleString : function(num) { var v = new Number(num); if (v) { if (v.toLocaleString) { return v.toLocaleString(); } else { return String(num).replace( /(\d)(?=(\d\d\d)+(?!\d))/g, '$1,'); } } return num; }, /** * Return css class marks file permissions * * @param Object file * @return String */ perms2class : function(o) { var c = ''; if (!o.read && !o.write) { c = 'elfinder-na'; } else if (!o.read) { c = 'elfinder-wo'; } else if (!o.write) { c = 'elfinder-ro'; } if (o.type) { c += ' elfinder-' + this.escape(o.type); } return c; }, /** * Return localized string with file permissions * * @param Object file * @return String */ formatPermissions : function(f) { var p = []; f.read && p.push(this.i18n('read')); f.write && p.push(this.i18n('write')); return p.length ? p.join(' '+this.i18n('and')+' ') : this.i18n('noaccess'); }, /** * Return formated file size * * @param Number file size * @return String */ formatSize : function(s) { var n = 1, u = 'b'; if (s == 'unknown') { return this.i18n('unknown'); } if (s > 1073741824) { n = 1073741824; u = 'GB'; } else if (s > 1048576) { n = 1048576; u = 'MB'; } else if (s > 1024) { n = 1024; u = 'KB'; } s = s/n; return (s > 0 ? n >= 1048576 ? s.toFixed(2) : Math.round(s) : 0) +' '+u; }, /** * Return formated file mode by options.fileModeStyle * * @param String file mode * @param String format style * @return String */ formatFileMode : function(p, style) { var i, o, s, b, sticy, suid, sgid, str, oct; if (!style) { style = this.options.fileModeStyle.toLowerCase(); } p = $.trim(p); if (p.match(/[rwxs-]{9}$/i)) { str = p = p.substr(-9); if (style == 'string') { return str; } oct = ''; s = 0; for (i=0; i<7; i=i+3) { o = p.substr(i, 3); b = 0; if (o.match(/[r]/i)) { b += 4; } if (o.match(/[w]/i)) { b += 2; } if (o.match(/[xs]/i)) { if (o.match(/[xs]/)) { b += 1; } if (o.match(/[s]/i)) { if (i == 0) { s += 4; } else if (i == 3) { s += 2; } } } oct += b.toString(8); } if (s) { oct = s.toString(8) + oct; } } else { p = parseInt(p, 8); oct = p? p.toString(8) : ''; if (!p || style == 'octal') { return oct; } o = p.toString(8); s = 0; if (o.length > 3) { o = o.substr(-4); s = parseInt(o.substr(0, 1), 8); o = o.substr(1); } sticy = ((s & 1) == 1); // not support sgid = ((s & 2) == 2); suid = ((s & 4) == 4); str = ''; for(i=0; i<3; i++) { if ((parseInt(o.substr(i, 1), 8) & 4) == 4) { str += 'r'; } else { str += '-'; } if ((parseInt(o.substr(i, 1), 8) & 2) == 2) { str += 'w'; } else { str += '-'; } if ((parseInt(o.substr(i, 1), 8) & 1) == 1) { str += ((i==0 && suid)||(i==1 && sgid))? 's' : 'x'; } else { str += '-'; } } } if (style == 'both') { return str + ' (' + oct + ')'; } else if (style == 'string') { return str; } else { return oct; } }, /** * Regist this.decodeRawString function * * @return void */ registRawStringDecoder : function(rawStringDecoder) { if ($.isFunction(rawStringDecoder)) { this.decodeRawString = this.options.rawStringDecoder = rawStringDecoder; } }, /** * Return boolean that uploadable MIME type into target folder * * @param String mime MIME type * @param String target target folder hash * @return Bool */ uploadMimeCheck : function(mime, target) { target = target || this.cwd().hash; var res = true, // default is allow mimeChecker = this.option('uploadMime', target), allow, deny, check = function(checker) { var ret = false; if (typeof checker === 'string' && checker.toLowerCase() === 'all') { ret = true; } else if (Array.isArray(checker) && checker.length) { $.each(checker, function(i, v) { v = v.toLowerCase(); if (v === 'all' || mime.indexOf(v) === 0) { ret = true; return false; } }); } return ret; }; if (mime && $.isPlainObject(mimeChecker)) { mime = mime.toLowerCase(); allow = check(mimeChecker.allow); deny = check(mimeChecker.deny); if (mimeChecker.firstOrder === 'allow') { res = false; // default is deny if (! deny && allow === true) { // match only allow res = true; } } else { res = true; // default is allow if (deny === true && ! allow) { // match only deny res = false; } } } return res; }, /** * call chained sequence of async deferred functions * * @param Array tasks async functions * @return Object jQuery.Deferred */ sequence : function(tasks) { var l = tasks.length, chain = function(task, idx) { ++idx; if (tasks[idx]) { return chain(task.then(tasks[idx]), idx); } else { return task; } }; if (l > 1) { return chain(tasks[0](), 0); } else { return tasks[0](); } }, /** * Reload contents of target URL for clear browser cache * * @param String url target URL * @return Object jQuery.Deferred */ reloadContents : function(url) { var dfd = $.Deferred(), ifm; try { ifm = $('